From 6f4eba3a9315b01b5afa210a266a308629a84db5 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Tue, 28 Aug 2018 17:44:32 +0200 Subject: [PATCH 001/107] CS translation update morechoice addon THX Aditoo --- morechoice/lang/cs/messages.po | 18 +++++++++--------- morechoice/lang/cs/strings.php | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/morechoice/lang/cs/messages.po b/morechoice/lang/cs/messages.po index 114d48b17..3251e9eca 100644 --- a/morechoice/lang/cs/messages.po +++ b/morechoice/lang/cs/messages.po @@ -112,7 +112,7 @@ msgstr "Těžké říct touhle dobou" #: morechoice.php:60 msgid "Girls with big tits" -msgstr "" +msgstr "Holky s velkýma kozama" #: morechoice.php:61 msgid "Millionaires" @@ -120,11 +120,11 @@ msgstr "Milionáři" #: morechoice.php:62 msgid "Guys with big schlongs" -msgstr "" +msgstr "Chlapi s velkýma ptákama" #: morechoice.php:63 msgid "Easy women" -msgstr "" +msgstr "Lehké ženy" #: morechoice.php:64 msgid "People with impaired mobility" @@ -132,7 +132,7 @@ msgstr "Lidé s pohybovým postižením" #: morechoice.php:65 msgid "Amputees" -msgstr "" +msgstr "Amputovaní" #: morechoice.php:66 msgid "Statues, mannequins and immobility" @@ -184,7 +184,7 @@ msgstr "Pláču" #: morechoice.php:78 msgid "Nappies/Diapers" -msgstr "" +msgstr "Plenky" #: morechoice.php:79 msgid "Trees" @@ -252,7 +252,7 @@ msgstr "Auto" #: morechoice.php:95 msgid "Menstruation" -msgstr "" +msgstr "Menstruace" #: morechoice.php:96 msgid "Mucus" @@ -268,7 +268,7 @@ msgstr "Nosy" #: morechoice.php:99 msgid "Navels" -msgstr "" +msgstr "Pupky" #: morechoice.php:100 msgid "Corpses" @@ -276,7 +276,7 @@ msgstr "" #: morechoice.php:101 msgid "Smells" -msgstr "" +msgstr "Pachy" #: morechoice.php:102 msgid "Buttocks" @@ -296,7 +296,7 @@ msgstr "Močení" #: morechoice.php:106 msgid "Eating people" -msgstr "" +msgstr "Žeru lidi" #: morechoice.php:107 msgid "Being eaten" diff --git a/morechoice/lang/cs/strings.php b/morechoice/lang/cs/strings.php index 6d1289c17..f0c05af00 100644 --- a/morechoice/lang/cs/strings.php +++ b/morechoice/lang/cs/strings.php @@ -29,12 +29,12 @@ $a->strings["Transvesti"] = "Transvestita"; $a->strings["Trigender"] = ""; $a->strings["Can't remember"] = "Nepamatuju si"; $a->strings["Hard to tell these days"] = "Těžké říct touhle dobou"; -$a->strings["Girls with big tits"] = ""; +$a->strings["Girls with big tits"] = "Holky s velkýma kozama"; $a->strings["Millionaires"] = "Milionáři"; -$a->strings["Guys with big schlongs"] = ""; -$a->strings["Easy women"] = ""; +$a->strings["Guys with big schlongs"] = "Chlapi s velkýma ptákama"; +$a->strings["Easy women"] = "Lehké ženy"; $a->strings["People with impaired mobility"] = "Lidé s pohybovým postižením"; -$a->strings["Amputees"] = ""; +$a->strings["Amputees"] = "Amputovaní"; $a->strings["Statues, mannequins and immobility"] = "Sochy, figuríny a nepohyblivost"; $a->strings["Pain"] = "Bolest"; $a->strings["Trans men"] = "Transmuž"; @@ -47,7 +47,7 @@ $a->strings["Pretending to be female"] = "Předstírám, že jsem žena"; $a->strings["Breats"] = ""; $a->strings["Scat"] = ""; $a->strings["Crying"] = "Pláču"; -$a->strings["Nappies/Diapers"] = ""; +$a->strings["Nappies/Diapers"] = "Plenky"; $a->strings["Trees"] = "Stromy"; $a->strings["Vomit"] = "Zvracení"; $a->strings["Murder"] = "Vražda"; @@ -64,18 +64,18 @@ $a->strings["Immersing genitals in liquids"] = ""; $a->strings["Giants"] = "Obři"; $a->strings["Masochism"] = "Masochismus"; $a->strings["Cars"] = "Auto"; -$a->strings["Menstruation"] = ""; +$a->strings["Menstruation"] = "Menstruace"; $a->strings["Mucus"] = ""; $a->strings["Obscene language"] = "Sprostý jazyk"; $a->strings["Noses"] = "Nosy"; -$a->strings["Navels"] = ""; +$a->strings["Navels"] = "Pupky"; $a->strings["Corpses"] = ""; -$a->strings["Smells"] = ""; +$a->strings["Smells"] = "Pachy"; $a->strings["Buttocks"] = ""; $a->strings["Nonliving objects"] = "Neživoucí předměty"; $a->strings["Sleeping people"] = "Spící lidé"; $a->strings["Urination"] = "Močení"; -$a->strings["Eating people"] = ""; +$a->strings["Eating people"] = "Žeru lidi"; $a->strings["Being eaten"] = ""; $a->strings["Animals"] = "Zvířata"; $a->strings["I'd rather just have some chocolate"] = "Radši bych si prostě dal čokoládu"; From 8e5a0f8b179ff4639502f81b40147829f7d3475c Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 29 Aug 2018 12:59:00 +0000 Subject: [PATCH 002/107] And one notice removed for twitter --- twitter/twitter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index bc81144f1..8b7166495 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -1002,7 +1002,7 @@ function twitter_fix_avatar($avatar) function twitter_fetch_contact($uid, $data, $create_user) { - if ($data->id_str == "") { + if (empty($data->id_str)) { return -1; } From 5e86fb1b9ec4136af3dc60f7a315557734981f5e Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 29 Aug 2018 17:09:19 +0000 Subject: [PATCH 003/107] Pumpio does connect now again. --- pumpio/pumpio.php | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/pumpio/pumpio.php b/pumpio/pumpio.php index 862a75b54..60d1807bd 100644 --- a/pumpio/pumpio.php +++ b/pumpio/pumpio.php @@ -139,7 +139,8 @@ function pumpio_registerclient(App $a, $host) function pumpio_connect(App $a) { // Start a session. This is necessary to hold on to a few keys the callback script will also need - session_start(); + // Currently disabled, since a session is already running + //session_start(); // Define the needed keys $consumer_key = PConfig::get(local_user(), 'pumpio', 'consumer_key'); @@ -174,7 +175,7 @@ function pumpio_connect(App $a) // Create a new instance of the oauth_client_class library. For this step, all we need to give the library is our // Consumer Key and Consumer Secret $client = new oauth_client_class; - $client->debug = 1; + $client->debug = 0; $client->server = ''; $client->oauth_version = '1.0a'; $client->request_token_url = 'https://'.$hostname.'/oauth/request_token'; @@ -202,7 +203,7 @@ function pumpio_connect(App $a) if ($success) { logger("pumpio_connect: authenticated"); - $o .= L10n::t("You are now authenticated to pumpio."); + $o = L10n::t("You are now authenticated to pumpio."); $o .= '
'.L10n::t("return to the connector page").''; } else { logger("pumpio_connect: could not connect"); @@ -361,20 +362,17 @@ function pumpio_settings_post(App $a, array &$b) $host = trim($host); $host = str_replace(["https://", "http://"], ["", ""], $host); - if (isset($_POST['pumpio'])) { - PConfig::set(local_user(), 'pumpio', 'post' , intval($_POST['pumpio'])); - PConfig::set(local_user(), 'pumpio', 'import' , $_POST['pumpio_import']); - PConfig::set(local_user(), 'pumpio', 'host' , $host); - PConfig::set(local_user(), 'pumpio', 'user' , $user); - PConfig::set(local_user(), 'pumpio', 'public' , $_POST['pumpio_public']); - PConfig::set(local_user(), 'pumpio', 'mirror' , $_POST['pumpio_mirror']); - PConfig::set(local_user(), 'pumpio', 'post_by_default', intval($_POST['pumpio_bydefault'])); + PConfig::set(local_user(), 'pumpio', 'post' , defaults($_POST, 'pumpio', false)); + PConfig::set(local_user(), 'pumpio', 'import' , defaults($_POST, 'pumpio_import', false)); + PConfig::set(local_user(), 'pumpio', 'host' , $host); + PConfig::set(local_user(), 'pumpio', 'user' , $user); + PConfig::set(local_user(), 'pumpio', 'public' , defaults($_POST, 'pumpio_public', false)); + PConfig::set(local_user(), 'pumpio', 'mirror' , defaults($_POST, 'pumpio_mirror', false)); + PConfig::set(local_user(), 'pumpio', 'post_by_default', defaults($_POST, 'pumpio_bydefault', false)); - if (!$_POST['pumpio_mirror']) { - PConfig::delete(local_user(), 'pumpio', 'lastdate'); - } + if (!empty($_POST['pumpio_mirror'])) { + PConfig::delete(local_user(), 'pumpio', 'lastdate'); } - //header("Location: ".$a->get_baseurl()."/pumpio/connect"); } } } From 2db9b497bd7047a601413fe585984e77b45f75f2 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 29 Aug 2018 17:55:36 +0000 Subject: [PATCH 004/107] removed code --- pumpio/pumpio.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pumpio/pumpio.php b/pumpio/pumpio.php index 60d1807bd..9960ec562 100644 --- a/pumpio/pumpio.php +++ b/pumpio/pumpio.php @@ -138,10 +138,6 @@ function pumpio_registerclient(App $a, $host) function pumpio_connect(App $a) { - // Start a session. This is necessary to hold on to a few keys the callback script will also need - // Currently disabled, since a session is already running - //session_start(); - // Define the needed keys $consumer_key = PConfig::get(local_user(), 'pumpio', 'consumer_key'); $consumer_secret = PConfig::get(local_user(), 'pumpio', 'consumer_secret'); From 19abd1a17e68e24dd4ddf78ed1292190288623e8 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 29 Aug 2018 18:04:03 +0000 Subject: [PATCH 005/107] Some removed notices --- ifttt/ifttt.php | 2 +- xmpp/xmpp.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ifttt/ifttt.php b/ifttt/ifttt.php index 55f46091f..ddd64394c 100644 --- a/ifttt/ifttt.php +++ b/ifttt/ifttt.php @@ -180,7 +180,7 @@ function ifttt_message($uid, $item) //$_REQUEST['date'] = $item['date']; //$_REQUEST['uri'] = $item['url']; - if (strstr($item['url'], 'facebook.com')) { + if (!empty($item['url']) && strstr($item['url'], 'facebook.com')) { $hash = hash('ripemd128', $item['url']); $_REQUEST['extid'] = Protocol::FACEBOOK; $_REQUEST['message_id'] = Item::newURI($uid, Protocol::FACEBOOK . ':' . $hash); diff --git a/xmpp/xmpp.php b/xmpp/xmpp.php index 41b02f067..e589f9229 100644 --- a/xmpp/xmpp.php +++ b/xmpp/xmpp.php @@ -34,9 +34,9 @@ function xmpp_addon_settings_post() return; } - PConfig::set(local_user(), 'xmpp', 'enabled', intval($_POST['xmpp_enabled'])); - PConfig::set(local_user(), 'xmpp', 'individual', intval($_POST['xmpp_individual'])); - PConfig::set(local_user(), 'xmpp', 'bosh_proxy', $_POST['xmpp_bosh_proxy']); + PConfig::set(local_user(), 'xmpp', 'enabled', defaults($_POST, 'xmpp_enabled', false)); + PConfig::set(local_user(), 'xmpp', 'individual', defaults($_POST, 'xmpp_individual', false)); + PConfig::set(local_user(), 'xmpp', 'bosh_proxy', defaults($_POST, 'xmpp_bosh_proxy', '')); info(L10n::t('XMPP settings updated.') . EOL); } From 3d828f1ae44911ee4e2a3b86b020cc835f5769aa Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 30 Aug 2018 01:24:03 -0400 Subject: [PATCH 006/107] [mastodoncustomemojis] Reduce cache TTL to prevent raw emojis display --- mastodoncustomemojis/mastodoncustomemojis.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mastodoncustomemojis/mastodoncustomemojis.php b/mastodoncustomemojis/mastodoncustomemojis.php index 6ba96f115..1acd924af 100644 --- a/mastodoncustomemojis/mastodoncustomemojis.php +++ b/mastodoncustomemojis/mastodoncustomemojis.php @@ -77,7 +77,7 @@ function mastodoncustomemojis_get_custom_emojis_for_author($author_link) if (empty($return) || Config::get('system', 'ignore_cache')) { $return = mastodoncustomemojis_fetch_custom_emojis_for_url($api_base_url); - Cache::set($cache_key, $return, empty($return['texts']) ? Cache::HALF_HOUR : Cache::WEEK); + Cache::set($cache_key, $return, empty($return['texts']) ? Cache::QUARTER_HOUR : Cache::HOUR); } return $return; From bfd6e25b2440690f24e4cc87ae2d3cc9d4135c62 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 30 Aug 2018 19:53:12 +0000 Subject: [PATCH 007/107] Removed notice in ijpost and cleaned code --- ijpost/ijpost.php | 225 +++++++++++++++++++++++----------------------- 1 file changed, 114 insertions(+), 111 deletions(-) diff --git a/ijpost/ijpost.php b/ijpost/ijpost.php index 8d5290855..b003742f7 100644 --- a/ijpost/ijpost.php +++ b/ijpost/ijpost.php @@ -15,151 +15,153 @@ use Friendica\Core\PConfig; use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; -function ijpost_install() { - Addon::registerHook('post_local', 'addon/ijpost/ijpost.php', 'ijpost_post_local'); - Addon::registerHook('notifier_normal', 'addon/ijpost/ijpost.php', 'ijpost_send'); - Addon::registerHook('jot_networks', 'addon/ijpost/ijpost.php', 'ijpost_jot_nets'); - Addon::registerHook('connector_settings', 'addon/ijpost/ijpost.php', 'ijpost_settings'); - Addon::registerHook('connector_settings_post', 'addon/ijpost/ijpost.php', 'ijpost_settings_post'); - -} -function ijpost_uninstall() { - Addon::unregisterHook('post_local', 'addon/ijpost/ijpost.php', 'ijpost_post_local'); - Addon::unregisterHook('notifier_normal', 'addon/ijpost/ijpost.php', 'ijpost_send'); - Addon::unregisterHook('jot_networks', 'addon/ijpost/ijpost.php', 'ijpost_jot_nets'); - Addon::unregisterHook('connector_settings', 'addon/ijpost/ijpost.php', 'ijpost_settings'); - Addon::unregisterHook('connector_settings_post', 'addon/ijpost/ijpost.php', 'ijpost_settings_post'); - +function ijpost_install() +{ + Addon::registerHook('post_local', 'addon/ijpost/ijpost.php', 'ijpost_post_local'); + Addon::registerHook('notifier_normal', 'addon/ijpost/ijpost.php', 'ijpost_send'); + Addon::registerHook('jot_networks', 'addon/ijpost/ijpost.php', 'ijpost_jot_nets'); + Addon::registerHook('connector_settings', 'addon/ijpost/ijpost.php', 'ijpost_settings'); + Addon::registerHook('connector_settings_post', 'addon/ijpost/ijpost.php', 'ijpost_settings_post'); } - -function ijpost_jot_nets(&$a,&$b) { - if(! local_user()) - return; - - $ij_post = PConfig::get(local_user(),'ijpost','post'); - if(intval($ij_post) == 1) { - $ij_defpost = PConfig::get(local_user(),'ijpost','post_by_default'); - $selected = ((intval($ij_defpost) == 1) ? ' checked="checked" ' : ''); - $b .= '
' - . L10n::t('Post to Insanejournal') . '
'; - } +function ijpost_uninstall() +{ + Addon::unregisterHook('post_local', 'addon/ijpost/ijpost.php', 'ijpost_post_local'); + Addon::unregisterHook('notifier_normal', 'addon/ijpost/ijpost.php', 'ijpost_send'); + Addon::unregisterHook('jot_networks', 'addon/ijpost/ijpost.php', 'ijpost_jot_nets'); + Addon::unregisterHook('connector_settings', 'addon/ijpost/ijpost.php', 'ijpost_settings'); + Addon::unregisterHook('connector_settings_post', 'addon/ijpost/ijpost.php', 'ijpost_settings_post'); } +function ijpost_jot_nets(&$a, &$b) +{ + if (!local_user()) { + return; + } -function ijpost_settings(&$a,&$s) { + $ij_post = PConfig::get(local_user(), 'ijpost', 'post'); + if (intval($ij_post) == 1) { + $ij_defpost = PConfig::get(local_user(), 'ijpost', 'post_by_default'); + $selected = ((intval($ij_defpost) == 1) ? ' checked="checked" ' : ''); + $b .= '
' + . L10n::t('Post to Insanejournal') . '
'; + } +} - if(! local_user()) - return; +function ijpost_settings(&$a, &$s) +{ + if (!local_user()) { + return; + } - /* Add our stylesheet to the page so we can make our settings look nice */ + /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; - /* Get the current state of our config variables */ + /* Get the current state of our config variables */ - $enabled = PConfig::get(local_user(),'ijpost','post'); + $enabled = PConfig::get(local_user(), 'ijpost', 'post'); - $checked = (($enabled) ? ' checked="checked" ' : ''); + $checked = (($enabled) ? ' checked="checked" ' : ''); - $def_enabled = PConfig::get(local_user(),'ijpost','post_by_default'); + $def_enabled = PConfig::get(local_user(), 'ijpost', 'post_by_default'); - $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); + $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); $ij_username = PConfig::get(local_user(), 'ijpost', 'ij_username'); $ij_password = PConfig::get(local_user(), 'ijpost', 'ij_password'); + /* Add some HTML to the existing form */ + $s .= ''; + $s .= '

'. L10n::t("InsaneJournal Export").'

'; + $s .= '
'; + $s .= ''; } - -function ijpost_settings_post(&$a,&$b) { - - if(x($_POST,'ijpost-submit')) { - - PConfig::set(local_user(),'ijpost','post',intval($_POST['ijpost'])); - PConfig::set(local_user(),'ijpost','post_by_default',intval($_POST['ij_bydefault'])); - PConfig::set(local_user(),'ijpost','ij_username',trim($_POST['ij_username'])); - PConfig::set(local_user(),'ijpost','ij_password',trim($_POST['ij_password'])); - +function ijpost_settings_post(&$a, &$b) +{ + if (x($_POST, 'ijpost-submit')) { + PConfig::set(local_user(), 'ijpost', 'post', intval($_POST['ijpost'])); + PConfig::set(local_user(), 'ijpost', 'post_by_default', intval($_POST['ij_bydefault'])); + PConfig::set(local_user(), 'ijpost', 'ij_username', trim($_POST['ij_username'])); + PConfig::set(local_user(), 'ijpost', 'ij_password', trim($_POST['ij_password'])); } - } -function ijpost_post_local(&$a,&$b) { - +function ijpost_post_local(&$a, &$b) +{ // This can probably be changed to allow editing by pointing to a different API endpoint - if($b['edit']) + if ($b['edit']) { return; + } - if((! local_user()) || (local_user() != $b['uid'])) + if (!local_user() || (local_user() != $b['uid'])) { return; + } - if($b['private'] || $b['parent']) + if ($b['private'] || $b['parent']) { return; + } - $ij_post = intval(PConfig::get(local_user(),'ijpost','post')); + $ij_post = intval(PConfig::get(local_user(), 'ijpost', 'post')); - $ij_enable = (($ij_post && x($_REQUEST,'ijpost_enable')) ? intval($_REQUEST['ijpost_enable']) : 0); + $ij_enable = (($ij_post && x($_REQUEST, 'ijpost_enable')) ? intval($_REQUEST['ijpost_enable']) : 0); - if($_REQUEST['api_source'] && intval(PConfig::get(local_user(),'ijpost','post_by_default'))) + if ($b['api_source'] && intval(PConfig::get(local_user(), 'ijpost', 'post_by_default'))) { $ij_enable = 1; + } - if(! $ij_enable) - return; + if (!$ij_enable) { + return; + } - if(strlen($b['postopts'])) - $b['postopts'] .= ','; - $b['postopts'] .= 'ijpost'; + if (strlen($b['postopts'])) { + $b['postopts'] .= ','; + } + + $b['postopts'] .= 'ijpost'; } +function ijpost_send(&$a, &$b) +{ + if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) { + return; + } + if (!strstr($b['postopts'], 'ijpost')) { + return; + } - -function ijpost_send(&$a,&$b) { - - if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) - return; - - if(! strstr($b['postopts'],'ijpost')) - return; - - if($b['parent'] != $b['id']) - return; + if ($b['parent'] != $b['id']) { + return; + } // insanejournal post in the LJ user's timezone. // Hopefully the person's Friendica account @@ -170,14 +172,16 @@ function ijpost_send(&$a,&$b) { $x = q("select timezone from user where uid = %d limit 1", intval($b['uid']) ); - if($x && strlen($x[0]['timezone'])) - $tz = $x[0]['timezone']; - $ij_username = PConfig::get($b['uid'],'ijpost','ij_username'); - $ij_password = PConfig::get($b['uid'],'ijpost','ij_password'); + if ($x && strlen($x[0]['timezone'])) { + $tz = $x[0]['timezone']; + } + + $ij_username = PConfig::get($b['uid'], 'ijpost', 'ij_username'); + $ij_password = PConfig::get($b['uid'], 'ijpost', 'ij_password'); $ij_blog = 'http://www.insanejournal.com/interface/xmlrpc'; - if($ij_username && $ij_password && $ij_blog) { + if ($ij_username && $ij_password && $ij_blog) { $title = $b['title']; $post = BBCode::convert($b['body']); $post = xmlify($post); @@ -219,17 +223,16 @@ EOT; logger('ijpost: data: ' . $xml, LOGGER_DATA); - if($ij_blog !== 'test') { + if ($ij_blog !== 'test') { $x = Network::post($ij_blog, $xml, ["Content-Type: text/xml"]); } - logger('posted to insanejournal: ' . ($x) ? $x : '', LOGGER_DEBUG); - + logger('posted to insanejournal: ' . $x ? $x : '', LOGGER_DEBUG); } } function ijpost_get_tags($post) { - preg_match_all("/\]([^\[#]+)\[/",$post,$matches); - $tags = implode(', ',$matches[1]); + preg_match_all("/\]([^\[#]+)\[/", $post, $matches); + $tags = implode(', ', $matches[1]); return $tags; } From 74047d2aef57c3072e048fdb418b83d2ae21fced Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 30 Aug 2018 21:16:53 +0000 Subject: [PATCH 008/107] Fixes "Message: Class 'L10n' not found" in advancedcontentfilter --- advancedcontentfilter/src/middlewares.php | 1 + 1 file changed, 1 insertion(+) diff --git a/advancedcontentfilter/src/middlewares.php b/advancedcontentfilter/src/middlewares.php index 35153a210..32e8cb99f 100644 --- a/advancedcontentfilter/src/middlewares.php +++ b/advancedcontentfilter/src/middlewares.php @@ -1,4 +1,5 @@ getContainer(); From c48776586093e178c9ea94183e44b978456bebf1 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 31 Aug 2018 05:10:53 +0000 Subject: [PATCH 009/107] Where do these notices hide? Now one is removed --- langfilter/langfilter.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/langfilter/langfilter.php b/langfilter/langfilter.php index b89c32dfe..fe413d63e 100644 --- a/langfilter/langfilter.php +++ b/langfilter/langfilter.php @@ -163,6 +163,10 @@ function langfilter_prepare_body_content_filter(App $a, &$hook_data) break; } + if (empty($iso2)) { + return; + } + $lang = Text_LanguageDetect_ISO639::code2ToName($iso2); } else { $opts = $hook_data['item']['postopts']; From 9578e3ff2acf79c7ae5fc6b0c1d91f6c6ef54e3a Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 1 Sep 2018 03:15:29 +0000 Subject: [PATCH 010/107] And again a notice --- blogger/blogger.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blogger/blogger.php b/blogger/blogger.php index 3114f98e5..68837cd8e 100644 --- a/blogger/blogger.php +++ b/blogger/blogger.php @@ -120,8 +120,8 @@ function blogger_settings(App $a, &$s) function blogger_settings_post(App $a, array &$b) { if (!empty($_POST['blogger-submit'])) { - PConfig::set(local_user(), 'blogger', 'post', intval($_POST['blogger'])); - PConfig::set(local_user(), 'blogger', 'post_by_default', intval($_POST['bl_bydefault'])); + PConfig::set(local_user(), 'blogger', 'post', defaults($_POST, 'blogger', false)); + PConfig::set(local_user(), 'blogger', 'post_by_default', defaults($_POST, 'bl_bydefault', false)); PConfig::set(local_user(), 'blogger', 'bl_username', trim($_POST['bl_username'])); PConfig::set(local_user(), 'blogger', 'bl_password', trim($_POST['bl_password'])); PConfig::set(local_user(), 'blogger', 'bl_blog', trim($_POST['bl_blog'])); From 43d8d5079934686ad483d7db6f00788ac08086fb Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 2 Sep 2018 07:46:55 +0000 Subject: [PATCH 011/107] Again a user found a notice ... --- notifyall/notifyall.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notifyall/notifyall.php b/notifyall/notifyall.php index 408e74a3b..ddadc3b62 100644 --- a/notifyall/notifyall.php +++ b/notifyall/notifyall.php @@ -106,8 +106,8 @@ function notifyall_content(&$a) $o = replace_macros(get_markup_template('notifyall_form.tpl', 'addon/notifyall/'), [ '$title' => $title, - '$text' => htmlspecialchars($_REQUEST['text']), - '$subject' => ['subject',L10n::t('Message subject'),$_REQUEST['subject'],''], + '$text' => htmlspecialchars(defaults($_REQUEST, 'text', '')), + '$subject' => ['subject', L10n::t('Message subject'), defaults($_REQUEST, 'subject', ''),''], '$test' => ['test',L10n::t('Test mode (only send to administrator)'), 0,''], '$submit' => L10n::t('Submit') ]); From ee1e87c5c4f01ef900822ffddba9902082998404 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 3 Sep 2018 18:20:23 +0000 Subject: [PATCH 012/107] Added some logging for Twitter to better analyse problems --- twitter/twitter.php | 52 ++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index 8b7166495..8b8d404ae 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -888,16 +888,19 @@ function twitter_fetchtimeline(App $a, $uid) try { $items = $connection->get('statuses/user_timeline', $parameters); } catch (TwitterOAuthException $e) { - logger('twitter_fetchtimeline: Error fetching timeline for user ' . $uid . ': ' . $e->getMessage()); + logger('Error fetching timeline for user ' . $uid . ': ' . $e->getMessage()); return; } if (!is_array($items)) { + logger('No items for user ' . $uid, LOGGER_INFO); return; } $posts = array_reverse($items); + logger('Starting from ID ' . $lastid . ' for user ' . $uid, LOGGER_DEBUG); + if (count($posts)) { foreach ($posts as $post) { if ($post->id_str > $lastid) { @@ -913,19 +916,22 @@ function twitter_fetchtimeline(App $a, $uid) $_SESSION["authenticated"] = true; $_SESSION["uid"] = $uid; + logger('Preparing Twitter ID ' . $post->id_str . ' for user ' . $uid, LOGGER_DEBUG); + $_REQUEST = twitter_do_mirrorpost($a, $uid, $post); if (empty($_REQUEST['body'])) { continue; } - logger('twitter: posting for user ' . $uid); + logger('Posting Twitter ID ' . $post->id_str . ' for user ' . $uid); item_post($a); } } } PConfig::set($uid, 'twitter', 'lastid', $lastid); + logger('Last ID for user ' . $uid . ' is now ' . $lastid, LOGGER_DEBUG); } function twitter_queue_hook(App $a) @@ -1581,7 +1587,7 @@ function twitter_fetchhometimeline(App $a, $uid) $create_user = PConfig::get($uid, 'twitter', 'create_user'); $mirror_posts = PConfig::get($uid, 'twitter', 'mirror_posts'); - logger("twitter_fetchhometimeline: Fetching for user " . $uid, LOGGER_DEBUG); + logger("Fetching timeline for user " . $uid, LOGGER_DEBUG); $application_name = Config::get('twitter', 'application_name'); @@ -1596,7 +1602,7 @@ function twitter_fetchhometimeline(App $a, $uid) try { $own_contact = twitter_fetch_own_contact($a, $uid); } catch (TwitterOAuthException $e) { - logger('twitter_fetchhometimeline: Error fetching own contact for user ' . $uid . ': ' . $e->getMessage()); + logger('Error fetching own contact for user ' . $uid . ': ' . $e->getMessage()); return; } @@ -1607,7 +1613,7 @@ function twitter_fetchhometimeline(App $a, $uid) if (DBA::isResult($r)) { $own_id = $r[0]["nick"]; } else { - logger("twitter_fetchhometimeline: Own twitter contact not found for user " . $uid, LOGGER_DEBUG); + logger("Own twitter contact not found for user " . $uid); return; } @@ -1617,14 +1623,14 @@ function twitter_fetchhometimeline(App $a, $uid) if (DBA::isResult($r)) { $self = $r[0]; } else { - logger("twitter_fetchhometimeline: Own contact not found for user " . $uid, LOGGER_DEBUG); + logger("Own contact not found for user " . $uid); return; } $u = q("SELECT * FROM user WHERE uid = %d LIMIT 1", intval($uid)); if (!DBA::isResult($u)) { - logger("twitter_fetchhometimeline: Own user not found for user " . $uid, LOGGER_DEBUG); + logger("Own user not found for user " . $uid); return; } @@ -1642,18 +1648,23 @@ function twitter_fetchhometimeline(App $a, $uid) try { $items = $connection->get('statuses/home_timeline', $parameters); } catch (TwitterOAuthException $e) { - logger('twitter_fetchhometimeline: Error fetching home timeline: ' . $e->getMessage()); + logger('Error fetching home timeline for user ' . $uid . ': ' . $e->getMessage()); return; } if (!is_array($items)) { - logger("twitter_fetchhometimeline: Error fetching home timeline: " . print_r($items, true), LOGGER_DEBUG); + logger('No array while fetching home timeline for user ' . $uid . ': ' . print_r($items, true)); + return; + } + + if (empty($items)) { + logger('No new timeline content for user ' . $uid, LOGGER_INFO); return; } $posts = array_reverse($items); - logger("twitter_fetchhometimeline: Fetching timeline for user " . $uid . " " . sizeof($posts) . " items", LOGGER_DEBUG); + logger('Fetching timeline from ID ' . $lastid . ' for user ' . $uid . ' ' . sizeof($posts) . ' items', LOGGER_DEBUG); if (count($posts)) { foreach ($posts as $post) { @@ -1667,12 +1678,12 @@ function twitter_fetchhometimeline(App $a, $uid) } if (stristr($post->source, $application_name) && $post->user->screen_name == $own_id) { - logger("twitter_fetchhometimeline: Skip previously sended post", LOGGER_DEBUG); + logger("Skip previously send post", LOGGER_DEBUG); continue; } if ($mirror_posts && $post->user->screen_name == $own_id && $post->in_reply_to_status_id_str == "") { - logger("twitter_fetchhometimeline: Skip post that will be mirrored", LOGGER_DEBUG); + logger("Skip post that will be mirrored", LOGGER_DEBUG); continue; } @@ -1680,9 +1691,12 @@ function twitter_fetchhometimeline(App $a, $uid) twitter_fetchparentposts($a, $uid, $post, $connection, $self); } + logger('Preparing post ' . $post->id_str . ' for user ' . $uid, LOGGER_DEBUG); + $postarray = twitter_createpost($a, $uid, $post, $self, $create_user, true, false); if (empty($postarray['body']) || trim($postarray['body']) == "") { + logger('Empty body for post ' . $post->id_str . ' and user ' . $uid, LOGGER_DEBUG); continue; } @@ -1698,11 +1712,13 @@ function twitter_fetchhometimeline(App $a, $uid) $item = Item::insert($postarray, false, $notify); $postarray["id"] = $item; - logger('twitter_fetchhometimeline: User ' . $self["nick"] . ' posted home timeline item ' . $item); + logger('User ' . uid . ' posted home timeline item ' . $item); } } PConfig::set($uid, 'twitter', 'lasthometimelineid', $lastid); + logger('Last timeline ID for user ' . $uid . ' is now ' . $lastid, LOGGER_DEBUG); + // Fetching mentions $lastid = PConfig::get($uid, 'twitter', 'lastmentionid'); @@ -1715,18 +1731,18 @@ function twitter_fetchhometimeline(App $a, $uid) try { $items = $connection->get('statuses/mentions_timeline', $parameters); } catch (TwitterOAuthException $e) { - logger('twitter_fetchhometimeline: Error fetching mentions: ' . $e->getMessage()); + logger('Error fetching mentions: ' . $e->getMessage()); return; } if (!is_array($items)) { - logger("twitter_fetchhometimeline: Error fetching mentions: " . print_r($items, true), LOGGER_DEBUG); + logger("Error fetching mentions: " . print_r($items, true), LOGGER_DEBUG); return; } $posts = array_reverse($items); - logger("twitter_fetchhometimeline: Fetching mentions for user " . $uid . " " . sizeof($posts) . " items", LOGGER_DEBUG); + logger("Fetching mentions for user " . $uid . " " . sizeof($posts) . " items", LOGGER_DEBUG); if (count($posts)) { foreach ($posts as $post) { @@ -1750,11 +1766,13 @@ function twitter_fetchhometimeline(App $a, $uid) $item = Item::insert($postarray); - logger('twitter_fetchhometimeline: User ' . $self["nick"] . ' posted mention timeline item ' . $item); + logger('User ' . $uid . ' posted mention timeline item ' . $item); } } PConfig::set($uid, 'twitter', 'lastmentionid', $lastid); + + logger('Last mentions ID for user ' . $uid . ' is now ' . $lastid, LOGGER_DEBUG); } function twitter_fetch_own_contact(App $a, $uid) From aa34316be8d769ca5928107277359e2ec4b4c008 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 3 Sep 2018 21:58:21 +0000 Subject: [PATCH 013/107] Typo --- twitter/twitter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index 8b8d404ae..75a0604a3 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -1678,7 +1678,7 @@ function twitter_fetchhometimeline(App $a, $uid) } if (stristr($post->source, $application_name) && $post->user->screen_name == $own_id) { - logger("Skip previously send post", LOGGER_DEBUG); + logger("Skip previously sent post", LOGGER_DEBUG); continue; } From a2cca2426051ed01f739c94b56aa28f49dc097ff Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 7 Sep 2018 05:23:54 +0000 Subject: [PATCH 014/107] Avoid notice due to missing $ --- twitter/twitter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index 75a0604a3..cd1fa9f0b 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -1712,7 +1712,7 @@ function twitter_fetchhometimeline(App $a, $uid) $item = Item::insert($postarray, false, $notify); $postarray["id"] = $item; - logger('User ' . uid . ' posted home timeline item ' . $item); + logger('User ' . $uid . ' posted home timeline item ' . $item); } } PConfig::set($uid, 'twitter', 'lasthometimelineid', $lastid); From a5183985d1e4468e85910559477c55c0fb3638a3 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 9 Sep 2018 06:25:55 +0000 Subject: [PATCH 015/107] One single notice ... --- pumpio/pumpio.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pumpio/pumpio.php b/pumpio/pumpio.php index 9960ec562..907d928a0 100644 --- a/pumpio/pumpio.php +++ b/pumpio/pumpio.php @@ -644,7 +644,7 @@ function pumpio_action(App $a, $uid, $uri, $action, $content = "") } else { logger('pumpio_action '.$username.' '.$action.': general error: '.$uri.' '.print_r($user, true)); - $r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self`", $b['uid']); + $r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self`", $uid); if (DBA::isResult($r)) { $a->contact = $r[0]["id"]; } From 70fba8a98554bbcea966d13d70f8d6207a9008a6 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 11 Sep 2018 21:37:54 -0400 Subject: [PATCH 016/107] [twitter] Fix external link picture - Ensure the media url is the same as one of the external links url before showing only a picture --- twitter/twitter.php | 40 ++++++++++++++++------------------------ 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index cd1fa9f0b..82861de06 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -1298,20 +1298,22 @@ function twitter_media_entities($post, array &$postarray) { // There are no media entities? So we quit. if (empty($post->extended_entities->media)) { - return ""; + return ''; } // When the post links to an external page, we only take one picture. // We only do this when there is exactly one media. if ((count($post->entities->urls) > 0) && (count($post->extended_entities->media) == 1)) { - $picture = ""; - foreach ($post->extended_entities->media AS $medium) { - if (isset($medium->media_url_https)) { + $medium = $post->extended_entities->media[0]; + $picture = ''; + foreach ($post->entities->urls as $link) { + // Let's make sure the external link url matches the media url + if ($medium->url == $link->url && isset($medium->media_url_https)) { $picture = $medium->media_url_https; - $postarray['body'] = str_replace($medium->url, "", $postarray['body']); + $postarray['body'] = str_replace($medium->url, '', $postarray['body']); + return $picture; } } - return $picture; } // This is a pure media post, first search for all media urls @@ -1322,19 +1324,19 @@ function twitter_media_entities($post, array &$postarray) } switch ($medium->type) { case 'photo': - $media[$medium->url] .= "\n[img]" . $medium->media_url_https . "[/img]"; + $media[$medium->url] .= "\n[img]" . $medium->media_url_https . '[/img]'; $postarray['object-type'] = ACTIVITY_OBJ_IMAGE; break; case 'video': case 'animated_gif': - $media[$medium->url] .= "\n[img]" . $medium->media_url_https . "[/img]"; + $media[$medium->url] .= "\n[img]" . $medium->media_url_https . '[/img]'; $postarray['object-type'] = ACTIVITY_OBJ_VIDEO; if (is_array($medium->video_info->variants)) { $bitrate = 0; // We take the video with the highest bitrate foreach ($medium->video_info->variants AS $variant) { - if (($variant->content_type == "video/mp4") && ($variant->bitrate >= $bitrate)) { - $media[$medium->url] = "\n[video]" . $variant->url . "[/video]"; + if (($variant->content_type == 'video/mp4') && ($variant->bitrate >= $bitrate)) { + $media[$medium->url] = "\n[video]" . $variant->url . '[/video]'; $bitrate = $variant->bitrate; } } @@ -1350,7 +1352,8 @@ function twitter_media_entities($post, array &$postarray) foreach ($media AS $key => $value) { $postarray['body'] = str_replace($key, "\n" . $value . "\n", $postarray['body']); } - return ""; + + return ''; } function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $only_existing_contact, $noquote) @@ -1617,23 +1620,12 @@ function twitter_fetchhometimeline(App $a, $uid) return; } - $r = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1", - intval($uid)); - - if (DBA::isResult($r)) { - $self = $r[0]; - } else { + $self = User::getOwnerDataById($uid); + if ($self === false) { logger("Own contact not found for user " . $uid); return; } - $u = q("SELECT * FROM user WHERE uid = %d LIMIT 1", - intval($uid)); - if (!DBA::isResult($u)) { - logger("Own user not found for user " . $uid); - return; - } - $parameters = ["exclude_replies" => false, "trim_user" => false, "contributor_details" => true, "include_rts" => true, "tweet_mode" => "extended"]; //$parameters["count"] = 200; // Fetching timeline From 78eb36a1bbc70bd2366f8bd71be0dc4ee5914905 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 11 Sep 2018 22:07:51 -0400 Subject: [PATCH 017/107] [twitter] Use rich text for quote tweet --- twitter/twitter.php | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index cd1fa9f0b..2c53a9eee 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -1159,6 +1159,13 @@ function twitter_expand_entities(App $a, $body, $item, $picture) $plain = str_replace($url->url, '', $plain); if ($url->url && $url->expanded_url && $url->display_url) { + // Quote tweet, we just remove the quoted tweet URL from the body, the share block will be added later. + if (isset($item->quoted_status_id_str) + && substr($url->expanded_url, -strlen($item->quoted_status_id_str)) == $item->quoted_status_id_str ) { + $body = str_replace($url->url, '', $body); + continue; + } + $expanded_url = Network::finalUrl($url->expanded_url); $oembed_data = OEmbed::fetchURL($expanded_url); @@ -1221,24 +1228,27 @@ function twitter_expand_entities(App $a, $body, $item, $picture) } } - if ($footerurl != "") { - $footer = add_page_info($footerurl, false, $picture); - } - - if (($footerlink != "") && (trim($footer) != "")) { - $removedlink = trim(str_replace($footerlink, "", $body)); - - if (($removedlink == "") || strstr($body, $removedlink)) { - $body = $removedlink; + // Footer will be taken care of with a share block in the case of a quote + if (empty($item->quoted_status)) { + if ($footerurl != "") { + $footer = add_page_info($footerurl, false, $picture); } - $body .= $footer; - } + if (($footerlink != "") && (trim($footer) != "")) { + $removedlink = trim(str_replace($footerlink, "", $body)); - if (($footer == "") && ($picture != "")) { - $body .= "\n\n[img]" . $picture . "[/img]\n"; - } elseif (($footer == "") && ($picture == "")) { - $body = add_page_info_to_body($body); + if (($removedlink == "") || strstr($body, $removedlink)) { + $body = $removedlink; + } + + $body .= $footer; + } + + if (($footer == "") && ($picture != "")) { + $body .= "\n\n[img]" . $picture . "[/img]\n"; + } elseif (($footer == "") && ($picture == "")) { + $body = add_page_info_to_body($body); + } } } @@ -1448,7 +1458,7 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl $postarray['allow_cid'] = ''; } - if (is_string($post->full_text)) { + if (!empty($post->full_text)) { $postarray['body'] = $post->full_text; } else { $postarray['body'] = $post->text; @@ -1507,8 +1517,6 @@ function twitter_createpost(App $a, $uid, $post, array $self, $create_user, $onl return []; } - $postarray['body'] = $statustext; - $postarray['body'] .= "\n" . share_header( $quoted['author-name'], $quoted['author-link'], From 2dfb6b497e54cd48495290666fa4d99fd8cecee8 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 11 Sep 2018 22:13:22 -0400 Subject: [PATCH 018/107] [twitter] Source format twitter_expand_entities --- twitter/twitter.php | 76 +++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 41 deletions(-) diff --git a/twitter/twitter.php b/twitter/twitter.php index 2c53a9eee..57fb83024 100644 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -1138,22 +1138,22 @@ function twitter_expand_entities(App $a, $body, $item, $picture) $tags_arr = []; foreach ($item->entities->hashtags AS $hashtag) { - $url = "#[url=" . $a->get_baseurl() . "/search?tag=" . rawurlencode($hashtag->text) . "]" . $hashtag->text . "[/url]"; - $tags_arr["#" . $hashtag->text] = $url; - $body = str_replace("#" . $hashtag->text, $url, $body); + $url = '#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($hashtag->text) . ']' . $hashtag->text . '[/url]'; + $tags_arr['#' . $hashtag->text] = $url; + $body = str_replace('#' . $hashtag->text, $url, $body); } foreach ($item->entities->user_mentions AS $mention) { - $url = "@[url=https://twitter.com/" . rawurlencode($mention->screen_name) . "]" . $mention->screen_name . "[/url]"; - $tags_arr["@" . $mention->screen_name] = $url; - $body = str_replace("@" . $mention->screen_name, $url, $body); + $url = '@[url=https://twitter.com/' . rawurlencode($mention->screen_name) . ']' . $mention->screen_name . '[/url]'; + $tags_arr['@' . $mention->screen_name] = $url; + $body = str_replace('@' . $mention->screen_name, $url, $body); } if (isset($item->entities->urls)) { - $type = ""; - $footerurl = ""; - $footerlink = ""; - $footer = ""; + $type = ''; + $footerurl = ''; + $footerlink = ''; + $footer = ''; foreach ($item->entities->urls as $url) { $plain = str_replace($url->url, '', $plain); @@ -1174,34 +1174,29 @@ function twitter_expand_entities(App $a, $body, $item, $picture) continue; } - // Quickfix: Workaround for URL with "[" and "]" in it - if (strpos($expanded_url, "[") || strpos($expanded_url, "]")) { + // Quickfix: Workaround for URL with '[' and ']' in it + if (strpos($expanded_url, '[') || strpos($expanded_url, ']')) { $expanded_url = $url->url; } - if ($type == "") { + if ($type == '') { $type = $oembed_data->type; } - if ($oembed_data->type == "video") { - //$body = str_replace($url->url, - // "[video]".$expanded_url."[/video]", $body); - //$dontincludemedia = true; + if ($oembed_data->type == 'video') { $type = $oembed_data->type; $footerurl = $expanded_url; - $footerlink = "[url=" . $expanded_url . "]" . $url->display_url . "[/url]"; + $footerlink = '[url=' . $expanded_url . ']' . $url->display_url . '[/url]'; $body = str_replace($url->url, $footerlink, $body); - //} elseif (($oembed_data->type == "photo") AND isset($oembed_data->url) AND !$dontincludemedia) { - } elseif (($oembed_data->type == "photo") && isset($oembed_data->url)) { - $body = str_replace($url->url, "[url=" . $expanded_url . "][img]" . $oembed_data->url . "[/img][/url]", $body); - //$dontincludemedia = true; - } elseif ($oembed_data->type != "link") { - $body = str_replace($url->url, "[url=" . $expanded_url . "]" . $url->display_url . "[/url]", $body); + } elseif (($oembed_data->type == 'photo') && isset($oembed_data->url)) { + $body = str_replace($url->url, '[url=' . $expanded_url . '][img]' . $oembed_data->url . '[/img][/url]', $body); + } elseif ($oembed_data->type != 'link') { + $body = str_replace($url->url, '[url=' . $expanded_url . ']' . $url->display_url . '[/url]', $body); } else { $img_str = Network::fetchUrl($expanded_url, true, $redirects, 4); - $tempfile = tempnam(get_temppath(), "cache"); + $tempfile = tempnam(get_temppath(), 'cache'); file_put_contents($tempfile, $img_str); // See http://php.net/manual/en/function.exif-imagetype.php#79283 @@ -1213,14 +1208,13 @@ function twitter_expand_entities(App $a, $body, $item, $picture) unlink($tempfile); - if (substr($mime, 0, 6) == "image/") { - $type = "photo"; - $body = str_replace($url->url, "[img]" . $expanded_url . "[/img]", $body); - //$dontincludemedia = true; + if (substr($mime, 0, 6) == 'image/') { + $type = 'photo'; + $body = str_replace($url->url, '[img]' . $expanded_url . '[/img]', $body); } else { $type = $oembed_data->type; $footerurl = $expanded_url; - $footerlink = "[url=" . $expanded_url . "]" . $url->display_url . "[/url]"; + $footerlink = '[url=' . $expanded_url . ']' . $url->display_url . '[/url]'; $body = str_replace($url->url, $footerlink, $body); } @@ -1230,23 +1224,23 @@ function twitter_expand_entities(App $a, $body, $item, $picture) // Footer will be taken care of with a share block in the case of a quote if (empty($item->quoted_status)) { - if ($footerurl != "") { + if ($footerurl != '') { $footer = add_page_info($footerurl, false, $picture); } - if (($footerlink != "") && (trim($footer) != "")) { - $removedlink = trim(str_replace($footerlink, "", $body)); + if (($footerlink != '') && (trim($footer) != '')) { + $removedlink = trim(str_replace($footerlink, '', $body)); - if (($removedlink == "") || strstr($body, $removedlink)) { + if (($removedlink == '') || strstr($body, $removedlink)) { $body = $removedlink; } $body .= $footer; } - if (($footer == "") && ($picture != "")) { + if ($footer == '' && $picture != '') { $body .= "\n\n[img]" . $picture . "[/img]\n"; - } elseif (($footer == "") && ($picture == "")) { + } elseif ($footer == '' && $picture == '') { $body = add_page_info_to_body($body); } } @@ -1257,7 +1251,7 @@ function twitter_expand_entities(App $a, $body, $item, $picture) if (count($tags)) { foreach ($tags as $tag) { - if (strstr(trim($tag), " ")) { + if (strstr(trim($tag), ' ')) { continue; } @@ -1277,7 +1271,7 @@ function twitter_expand_entities(App $a, $body, $item, $picture) $basetag = str_replace('_', ' ', substr($tag, 1)); $url = '#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]'; $body = str_replace($tag, $url, $body); - $tags_arr["#" . $basetag] = $url; + $tags_arr['#' . $basetag] = $url; } elseif (strpos($tag, '@') === 0) { if (strpos($tag, '[url=')) { continue; @@ -1286,14 +1280,14 @@ function twitter_expand_entities(App $a, $body, $item, $picture) $basetag = substr($tag, 1); $url = '@[url=https://twitter.com/' . rawurlencode($basetag) . ']' . $basetag . '[/url]'; $body = str_replace($tag, $url, $body); - $tags_arr["@" . $basetag] = $url; + $tags_arr['@' . $basetag] = $url; } } } - $tags = implode($tags_arr, ","); + $tags = implode($tags_arr, ','); - return ["body" => $body, "tags" => $tags, "plain" => $plain]; + return ['body' => $body, 'tags' => $tags, 'plain' => $plain]; } /** From 9e0c2ea01ad2fa362b662a7740706387c7421f95 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sat, 15 Sep 2018 19:30:59 -0400 Subject: [PATCH 019/107] [various] Update "mrpetovan" email address --- advancedcontentfilter/composer.json | 2 +- blackout/lang/fr/messages.po | 4 ++-- buffer/lang/fr/messages.po | 4 ++-- curweather/lang/fr/messages.po | 4 ++-- twitter/composer.json | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/advancedcontentfilter/composer.json b/advancedcontentfilter/composer.json index 576bbce7a..93b19cd59 100644 --- a/advancedcontentfilter/composer.json +++ b/advancedcontentfilter/composer.json @@ -5,7 +5,7 @@ "authors": [ { "name": "Hypolite Petovan", - "email": "mrpetovan@gmail.com", + "email": "hypolite@mrpetovan.com", "homepage": "https://friendica.mrpetovan.com/profile/hypolite", "role": "Developer" } diff --git a/blackout/lang/fr/messages.po b/blackout/lang/fr/messages.po index b52d3809d..8f241a715 100644 --- a/blackout/lang/fr/messages.po +++ b/blackout/lang/fr/messages.po @@ -5,14 +5,14 @@ # # Translators: # Damien Goutte-Gattat , 2015 -# Hypolite Petovan , 2016 +# Hypolite Petovan , 2016 msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-06-22 13:18+0200\n" "PO-Revision-Date: 2016-09-24 02:13+0000\n" -"Last-Translator: Hypolite Petovan \n" +"Last-Translator: Hypolite Petovan \n" "Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/buffer/lang/fr/messages.po b/buffer/lang/fr/messages.po index 5ba45daad..3362afe72 100644 --- a/buffer/lang/fr/messages.po +++ b/buffer/lang/fr/messages.po @@ -4,7 +4,7 @@ # # # Translators: -# Hypolite Petovan , 2016 +# Hypolite Petovan , 2016 # Nicola Spanti , 2015 # StefOfficiel , 2015 msgid "" @@ -13,7 +13,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-06-22 13:18+0200\n" "PO-Revision-Date: 2016-09-24 03:03+0000\n" -"Last-Translator: Hypolite Petovan \n" +"Last-Translator: Hypolite Petovan \n" "Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/curweather/lang/fr/messages.po b/curweather/lang/fr/messages.po index c23300055..0518bb210 100644 --- a/curweather/lang/fr/messages.po +++ b/curweather/lang/fr/messages.po @@ -4,7 +4,7 @@ # # # Translators: -# Hypolite Petovan , 2016 +# Hypolite Petovan , 2016 # Nicola Spanti , 2015 # StefOfficiel , 2015 msgid "" @@ -13,7 +13,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-03-12 08:10+0100\n" "PO-Revision-Date: 2016-09-24 03:15+0000\n" -"Last-Translator: Hypolite Petovan \n" +"Last-Translator: Hypolite Petovan \n" "Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/twitter/composer.json b/twitter/composer.json index 9694b9bb7..3494c069e 100644 --- a/twitter/composer.json +++ b/twitter/composer.json @@ -15,7 +15,7 @@ }, { "name": "Hypolite Petovan", - "email": "mrpetovan@gmail.com", + "email": "hypolite@mrpetovan.com", "homepage": "https://friendica.mrpetovan.com/profile/hypolite", "role": "Developer" } From 5d653c156d86c2b6cf7a76f364856c21eeda07ce Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 20:53:49 +0200 Subject: [PATCH 020/107] CS translation impressum THX Aditoo --- impressum/lang/cs/messages.po | 21 +++++++++++---------- impressum/lang/cs/strings.php | 13 +++++++------ 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/impressum/lang/cs/messages.po b/impressum/lang/cs/messages.po index 04297ff41..1f49f2a78 100644 --- a/impressum/lang/cs/messages.po +++ b/impressum/lang/cs/messages.po @@ -4,20 +4,21 @@ # # # Translators: -# Michal Šupler , 2014-2015 +# Aditoo, 2018 +# michal_s , 2014-2015 msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-02-27 05:01-0500\n" -"PO-Revision-Date: 2015-02-11 19:41+0000\n" -"Last-Translator: Michal Šupler \n" -"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n" +"PO-Revision-Date: 2018-09-12 09:51+0000\n" +"Last-Translator: Aditoo\n" +"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: impressum.php:37 msgid "Impressum" @@ -25,7 +26,7 @@ msgstr "Impressum" #: impressum.php:50 impressum.php:52 impressum.php:84 msgid "Site Owner" -msgstr "Vlastník webu" +msgstr "Majitel webu" #: impressum.php:50 impressum.php:88 msgid "Email Address" @@ -40,11 +41,11 @@ msgid "" "The impressum addon needs to be configured!
Please add at least the " "owner variable to your config file. For other variables please " "refer to the README file of the addon." -msgstr "Doplněk Impressum musí být nakonfigurován!
Prosím, přidejte alespoň proměnnou owner do konfiguračního souboru. Pro nastavení ostatních proměnných se seznamte s nápovědou v souboru README tohoto doplňku." +msgstr "Doplněk Impressum musí být nakonfigurován!
Prosím, přidejte alespoň proměnnou owner do konfiguračního souboru. Pro nastavení ostatních proměnných se seznamte s nápovědou v souboru README tohoto doplňku." #: impressum.php:78 msgid "Settings updated." -msgstr "Nastavení aktualizováno." +msgstr "Nastavení aktualizována." #: impressum.php:83 msgid "Submit" @@ -60,7 +61,7 @@ msgstr "Profil majitele webu" #: impressum.php:85 msgid "Profile address of the operator." -msgstr "Profilová addresa operátora." +msgstr "Profilová adresa operátora." #: impressum.php:86 msgid "How to contact the operator via snail mail. You can use BBCode here." @@ -78,7 +79,7 @@ msgstr "Další poznámky, které jsou zobrazeny pod kontaktními informacemi. Z #: impressum.php:88 msgid "How to contact the operator via email. (will be displayed obfuscated)" -msgstr "Jak konktaktovat operátora přes mail. (bude zobrazen \"zmateně\")" +msgstr "Jak konktaktovat operátora přes mail. (bude zobrazeno \"obfuskovaně\")" #: impressum.php:89 msgid "Footer note" diff --git a/impressum/lang/cs/strings.php b/impressum/lang/cs/strings.php index 16f45aa58..9e49b43a9 100644 --- a/impressum/lang/cs/strings.php +++ b/impressum/lang/cs/strings.php @@ -2,22 +2,23 @@ if(! function_exists("string_plural_select_cs")) { function string_plural_select_cs($n){ - return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;; + $n = intval($n); + return ($n == 1 && $n % 1 == 0) ? 0 : ($n >= 2 && $n <= 4 && $n % 1 == 0) ? 1: ($n % 1 != 0 ) ? 2 : 3;; }} ; $a->strings["Impressum"] = "Impressum"; -$a->strings["Site Owner"] = "Vlastník webu"; +$a->strings["Site Owner"] = "Majitel webu"; $a->strings["Email Address"] = "E-mailová adresa"; $a->strings["Postal Address"] = "Poštovní adresa"; -$a->strings["The impressum addon needs to be configured!
Please add at least the owner variable to your config file. For other variables please refer to the README file of the addon."] = "Doplněk Impressum musí být nakonfigurován!
Prosím, přidejte alespoň proměnnou owner do konfiguračního souboru. Pro nastavení ostatních proměnných se seznamte s nápovědou v souboru README tohoto doplňku."; -$a->strings["Settings updated."] = "Nastavení aktualizováno."; +$a->strings["The impressum addon needs to be configured!
Please add at least the owner variable to your config file. For other variables please refer to the README file of the addon."] = "Doplněk Impressum musí být nakonfigurován!
Prosím, přidejte alespoň proměnnou owner do konfiguračního souboru. Pro nastavení ostatních proměnných se seznamte s nápovědou v souboru README tohoto doplňku."; +$a->strings["Settings updated."] = "Nastavení aktualizována."; $a->strings["Submit"] = "Odeslat"; $a->strings["The page operators name."] = "Jméno operátora stránky."; $a->strings["Site Owners Profile"] = "Profil majitele webu"; -$a->strings["Profile address of the operator."] = "Profilová addresa operátora."; +$a->strings["Profile address of the operator."] = "Profilová adresa operátora."; $a->strings["How to contact the operator via snail mail. You can use BBCode here."] = "Jak kontaktovat operátora prostřednictvím klasické pošty. Zde můžete použít BBCode."; $a->strings["Notes"] = "Poznámky"; $a->strings["Additional notes that are displayed beneath the contact information. You can use BBCode here."] = "Další poznámky, které jsou zobrazeny pod kontaktními informacemi. Zde můžete použít BBCode."; -$a->strings["How to contact the operator via email. (will be displayed obfuscated)"] = "Jak konktaktovat operátora přes mail. (bude zobrazen \"zmateně\")"; +$a->strings["How to contact the operator via email. (will be displayed obfuscated)"] = "Jak konktaktovat operátora přes mail. (bude zobrazeno \"obfuskovaně\")"; $a->strings["Footer note"] = "Poznámka v zápatí"; $a->strings["Text for the footer. You can use BBCode here."] = "Text pro zápatí. Zde můžete použít BBCode."; From c28c3eed91120c8aec52a66c510ea9b98837adb1 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 20:59:15 +0200 Subject: [PATCH 021/107] CS translation group_text THX Aditoo --- group_text/lang/cs/messages.po | 15 ++++++++------- group_text/lang/cs/strings.php | 7 ++++--- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/group_text/lang/cs/messages.po b/group_text/lang/cs/messages.po index 499800732..8b56b630e 100644 --- a/group_text/lang/cs/messages.po +++ b/group_text/lang/cs/messages.po @@ -4,24 +4,25 @@ # # # Translators: -# Michal Šupler , 2014-2015 +# Aditoo, 2018 +# michal_s , 2014-2015 msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-02-27 05:01-0500\n" -"PO-Revision-Date: 2015-02-11 19:40+0000\n" -"Last-Translator: Michal Šupler \n" -"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n" +"PO-Revision-Date: 2018-09-12 09:47+0000\n" +"Last-Translator: Aditoo\n" +"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: group_text.php:46 msgid "Group Text settings updated." -msgstr "Nastavení textu skupiny aktualizováno." +msgstr "Nastavení Group Text aktualizována." #: group_text.php:76 msgid "Group Text" @@ -29,7 +30,7 @@ msgstr "Skupinový text" #: group_text.php:78 msgid "Use a text only (non-image) group selector in the \"group edit\" menu" -msgstr "Použijte pouze textový (neobrázkový) výběr skupiny v menu editace skupin." +msgstr "Použijte pouze textový (bezobrázkový) výběr skupiny v menu úpravy skupin." #: group_text.php:84 msgid "Submit" diff --git a/group_text/lang/cs/strings.php b/group_text/lang/cs/strings.php index 335283147..c5055a293 100644 --- a/group_text/lang/cs/strings.php +++ b/group_text/lang/cs/strings.php @@ -2,10 +2,11 @@ if(! function_exists("string_plural_select_cs")) { function string_plural_select_cs($n){ - return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;; + $n = intval($n); + return ($n == 1 && $n % 1 == 0) ? 0 : ($n >= 2 && $n <= 4 && $n % 1 == 0) ? 1: ($n % 1 != 0 ) ? 2 : 3;; }} ; -$a->strings["Group Text settings updated."] = "Nastavení textu skupiny aktualizováno."; +$a->strings["Group Text settings updated."] = "Nastavení Group Text aktualizována."; $a->strings["Group Text"] = "Skupinový text"; -$a->strings["Use a text only (non-image) group selector in the \"group edit\" menu"] = "Použijte pouze textový (neobrázkový) výběr skupiny v menu editace skupin."; +$a->strings["Use a text only (non-image) group selector in the \"group edit\" menu"] = "Použijte pouze textový (bezobrázkový) výběr skupiny v menu úpravy skupin."; $a->strings["Submit"] = "Odeslat"; From 974a7d2c504437be58151716d80e99e5faa9fe5f Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 21:04:59 +0200 Subject: [PATCH 022/107] CS translation buffer THX Aditoo --- buffer/lang/cs/messages.po | 23 ++++++++++++----------- buffer/lang/cs/strings.php | 16 ++++++++-------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/buffer/lang/cs/messages.po b/buffer/lang/cs/messages.po index e294425d5..ce1d936b3 100644 --- a/buffer/lang/cs/messages.po +++ b/buffer/lang/cs/messages.po @@ -4,15 +4,16 @@ # # # Translators: -# Lorem Ipsum , 2018 +# Aditoo, 2018 +# Aditoo, 2018 # michal_s , 2014 msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-06-22 13:18+0200\n" -"PO-Revision-Date: 2018-06-09 09:15+0000\n" -"Last-Translator: Lorem Ipsum \n" +"PO-Revision-Date: 2018-09-12 09:43+0000\n" +"Last-Translator: Aditoo\n" "Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -38,19 +39,19 @@ msgstr "Client Secret" #: buffer.php:67 msgid "Error when registering buffer connection:" -msgstr "Chyba při registraci buffer spojená" +msgstr "Chyba při registraci připojení na buffer:" #: buffer.php:86 msgid "You are now authenticated to buffer. " -msgstr "Nyní jste přihlášen k bufferu." +msgstr "Nyní jste přihlášen/a na buffer." #: buffer.php:87 msgid "return to the connector page" -msgstr "návrat ke stránce konektor" +msgstr "zpět ke stránce konektoru" #: buffer.php:103 msgid "Post to Buffer" -msgstr "Příspěvek na Buffer" +msgstr "Posílat na Buffer" #: buffer.php:128 buffer.php:132 msgid "Buffer Export" @@ -58,7 +59,7 @@ msgstr "Buffer Export" #: buffer.php:142 msgid "Authenticate your Buffer connection" -msgstr "Přihlásit ke spojení na Buffer" +msgstr "Autentikujte své připojení na Buffer" #: buffer.php:146 msgid "Enable Buffer Post Addon" @@ -66,12 +67,12 @@ msgstr "Povolit doplněk Buffer Post" #: buffer.php:151 msgid "Post to Buffer by default" -msgstr "Defaultně zaslat na Buffer" +msgstr "Ve výchozím stavu posílat na Buffer" #: buffer.php:156 msgid "Check to delete this preset" -msgstr "Zaškrtnout pro smazání tohoto nastavení" +msgstr "Zaškrtnutím smažete toto nastavení" #: buffer.php:165 msgid "Posts are going to all accounts that are enabled by default:" -msgstr "Příspěvky jsou zasílány na všechny účty, které jsou defaultně povoleny:" +msgstr "Příspěvky budou posílány na všechny účty, které jsou ve výchozím stavu povoleny:" diff --git a/buffer/lang/cs/strings.php b/buffer/lang/cs/strings.php index a3e7a329b..971dbe9b2 100644 --- a/buffer/lang/cs/strings.php +++ b/buffer/lang/cs/strings.php @@ -10,13 +10,13 @@ $a->strings["Permission denied."] = "Přístup odmítnut."; $a->strings["Save Settings"] = "Uložit Nastavení"; $a->strings["Client ID"] = "Client ID"; $a->strings["Client Secret"] = "Client Secret"; -$a->strings["Error when registering buffer connection:"] = "Chyba při registraci buffer spojená"; -$a->strings["You are now authenticated to buffer. "] = "Nyní jste přihlášen k bufferu."; -$a->strings["return to the connector page"] = "návrat ke stránce konektor"; -$a->strings["Post to Buffer"] = "Příspěvek na Buffer"; +$a->strings["Error when registering buffer connection:"] = "Chyba při registraci připojení na buffer:"; +$a->strings["You are now authenticated to buffer. "] = "Nyní jste přihlášen/a na buffer."; +$a->strings["return to the connector page"] = "zpět ke stránce konektoru"; +$a->strings["Post to Buffer"] = "Posílat na Buffer"; $a->strings["Buffer Export"] = "Buffer Export"; -$a->strings["Authenticate your Buffer connection"] = "Přihlásit ke spojení na Buffer"; +$a->strings["Authenticate your Buffer connection"] = "Autentikujte své připojení na Buffer"; $a->strings["Enable Buffer Post Addon"] = "Povolit doplněk Buffer Post"; -$a->strings["Post to Buffer by default"] = "Defaultně zaslat na Buffer"; -$a->strings["Check to delete this preset"] = "Zaškrtnout pro smazání tohoto nastavení"; -$a->strings["Posts are going to all accounts that are enabled by default:"] = "Příspěvky jsou zasílány na všechny účty, které jsou defaultně povoleny:"; +$a->strings["Post to Buffer by default"] = "Ve výchozím stavu posílat na Buffer"; +$a->strings["Check to delete this preset"] = "Zaškrtnutím smažete toto nastavení"; +$a->strings["Posts are going to all accounts that are enabled by default:"] = "Příspěvky budou posílány na všechny účty, které jsou ve výchozím stavu povoleny:"; From fb806682cc5ce9b76cb14c556fb5de7c64f0781b Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 21:16:06 +0200 Subject: [PATCH 023/107] CS translation ijpost THX Aditoo --- ijpost/lang/cs/messages.po | 23 ++++++++++++----------- ijpost/lang/cs/strings.php | 15 ++++++++------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/ijpost/lang/cs/messages.po b/ijpost/lang/cs/messages.po index dd273de41..33705d1ed 100644 --- a/ijpost/lang/cs/messages.po +++ b/ijpost/lang/cs/messages.po @@ -4,44 +4,45 @@ # # # Translators: -# Michal Šupler , 2014-2015 +# Aditoo, 2018 +# michal_s , 2014-2015 msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-02-27 05:01-0500\n" -"PO-Revision-Date: 2015-02-11 19:40+0000\n" -"Last-Translator: Michal Šupler \n" -"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n" +"PO-Revision-Date: 2018-09-12 09:49+0000\n" +"Last-Translator: Aditoo\n" +"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: ijpost.php:39 msgid "Post to Insanejournal" -msgstr "Odeslat na Insanejournal" +msgstr "Posílat na InsaneJournal" #: ijpost.php:70 msgid "InsaneJournal Post Settings" -msgstr "Nastavení příspěvků pro InsaneJournal" +msgstr "Nastavení InsaneJournal Post" #: ijpost.php:72 msgid "Enable InsaneJournal Post Addon" -msgstr "Povolit Insanejournal addon" +msgstr "Povolit doplněk InsaneJournal Post" #: ijpost.php:77 msgid "InsaneJournal username" -msgstr "Insanejournal uživatelské jméno" +msgstr "Uživatelské jméno InsaneJournal" #: ijpost.php:82 msgid "InsaneJournal password" -msgstr "Insanejournal heslo" +msgstr "Heslo InsaneJournal" #: ijpost.php:87 msgid "Post to InsaneJournal by default" -msgstr "Defaultně zasílat příspěvky na InsaneJournal" +msgstr "Ve výchozím stavu posílat příspěvky na InsaneJournal" #: ijpost.php:93 msgid "Submit" diff --git a/ijpost/lang/cs/strings.php b/ijpost/lang/cs/strings.php index 4f4fec366..c9ef79787 100644 --- a/ijpost/lang/cs/strings.php +++ b/ijpost/lang/cs/strings.php @@ -2,13 +2,14 @@ if(! function_exists("string_plural_select_cs")) { function string_plural_select_cs($n){ - return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;; + $n = intval($n); + return ($n == 1 && $n % 1 == 0) ? 0 : ($n >= 2 && $n <= 4 && $n % 1 == 0) ? 1: ($n % 1 != 0 ) ? 2 : 3;; }} ; -$a->strings["Post to Insanejournal"] = "Odeslat na Insanejournal"; -$a->strings["InsaneJournal Post Settings"] = "Nastavení příspěvků pro InsaneJournal"; -$a->strings["Enable InsaneJournal Post Addon"] = "Povolit Insanejournal addon"; -$a->strings["InsaneJournal username"] = "Insanejournal uživatelské jméno"; -$a->strings["InsaneJournal password"] = "Insanejournal heslo"; -$a->strings["Post to InsaneJournal by default"] = "Defaultně zasílat příspěvky na InsaneJournal"; +$a->strings["Post to Insanejournal"] = "Posílat na InsaneJournal"; +$a->strings["InsaneJournal Post Settings"] = "Nastavení InsaneJournal Post"; +$a->strings["Enable InsaneJournal Post Addon"] = "Povolit doplněk InsaneJournal Post"; +$a->strings["InsaneJournal username"] = "Uživatelské jméno InsaneJournal"; +$a->strings["InsaneJournal password"] = "Heslo InsaneJournal"; +$a->strings["Post to InsaneJournal by default"] = "Ve výchozím stavu posílat příspěvky na InsaneJournal"; $a->strings["Submit"] = "Odeslat"; From 895942a3a2bfa4104509e57701bbbefe383b62b9 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 21:25:33 +0200 Subject: [PATCH 024/107] CS translation jappixmini THX Aditoo --- jappixmini/lang/cs/messages.po | 12 ++++++------ jappixmini/lang/cs/strings.php | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/jappixmini/lang/cs/messages.po b/jappixmini/lang/cs/messages.po index 332a5e856..6db4e4595 100644 --- a/jappixmini/lang/cs/messages.po +++ b/jappixmini/lang/cs/messages.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-02-27 05:01-0500\n" -"PO-Revision-Date: 2018-08-16 10:11+0000\n" +"PO-Revision-Date: 2018-09-12 12:50+0000\n" "Last-Translator: Aditoo\n" "Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" @@ -36,7 +36,7 @@ msgstr "Nevkládejte Jappixmini Chat-Widget do webového rozhraní" #: jappixmini.php:274 msgid "Jabber username" -msgstr "Jabber uživatelské jméno" +msgstr "Uživatelské jméno Jabber" #: jappixmini.php:277 msgid "Jabber server" @@ -48,11 +48,11 @@ msgstr "Jabber BOSH host" #: jappixmini.php:285 msgid "Jabber password" -msgstr "Jabber heslo" +msgstr "Heslo Jabber" #: jappixmini.php:290 msgid "Encrypt Jabber password with Friendica password (recommended)" -msgstr "Zašifrovat Jabber heslo s heslem Friendica (doporučeno)" +msgstr "Zašifrovat heslo Jabber heslem Friendica (doporučeno)" #: jappixmini.php:293 msgid "Friendica password" @@ -60,11 +60,11 @@ msgstr "Heslo Friendica" #: jappixmini.php:296 msgid "Approve subscription requests from Friendica contacts automatically" -msgstr "Automaticky schválit požadavek na členství od kontaktů Friendica." +msgstr "Automaticky schválit požadavek o odběr od kontaktů Friendica." #: jappixmini.php:299 msgid "Subscribe to Friendica contacts automatically" -msgstr "Automaticky zaslat požadavek na členství kontaktům Friendica." +msgstr "Automaticky odebírat od kontaktů Friendica." #: jappixmini.php:302 msgid "Purge internal list of jabber addresses of contacts" diff --git a/jappixmini/lang/cs/strings.php b/jappixmini/lang/cs/strings.php index 154c50194..4fe5d3521 100644 --- a/jappixmini/lang/cs/strings.php +++ b/jappixmini/lang/cs/strings.php @@ -9,14 +9,14 @@ function string_plural_select_cs($n){ $a->strings["Jappix Mini addon settings"] = "Nastavení rozšíření Jappix Mini"; $a->strings["Activate addon"] = "Aktivovat doplněk"; $a->strings["Do not insert the Jappixmini Chat-Widget into the webinterface"] = "Nevkládejte Jappixmini Chat-Widget do webového rozhraní"; -$a->strings["Jabber username"] = "Jabber uživatelské jméno"; +$a->strings["Jabber username"] = "Uživatelské jméno Jabber"; $a->strings["Jabber server"] = "Jabber server"; $a->strings["Jabber BOSH host"] = "Jabber BOSH host"; -$a->strings["Jabber password"] = "Jabber heslo"; -$a->strings["Encrypt Jabber password with Friendica password (recommended)"] = "Zašifrovat Jabber heslo s heslem Friendica (doporučeno)"; +$a->strings["Jabber password"] = "Heslo Jabber"; +$a->strings["Encrypt Jabber password with Friendica password (recommended)"] = "Zašifrovat heslo Jabber heslem Friendica (doporučeno)"; $a->strings["Friendica password"] = "Heslo Friendica"; -$a->strings["Approve subscription requests from Friendica contacts automatically"] = "Automaticky schválit požadavek na členství od kontaktů Friendica."; -$a->strings["Subscribe to Friendica contacts automatically"] = "Automaticky zaslat požadavek na členství kontaktům Friendica."; +$a->strings["Approve subscription requests from Friendica contacts automatically"] = "Automaticky schválit požadavek o odběr od kontaktů Friendica."; +$a->strings["Subscribe to Friendica contacts automatically"] = "Automaticky odebírat od kontaktů Friendica."; $a->strings["Purge internal list of jabber addresses of contacts"] = "Očistit interní seznam jabber adres kontaktů"; $a->strings["Submit"] = "Odeslat"; $a->strings["Add contact"] = "Přidat kontakt"; From c5f77da10cfff9d55c608c3453cb0f675ae05d2f Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 21:27:04 +0200 Subject: [PATCH 025/107] CS translation showmore THX Aditoo --- showmore/lang/cs/messages.po | 6 +++--- showmore/lang/cs/strings.php | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/showmore/lang/cs/messages.po b/showmore/lang/cs/messages.po index b937ff561..84d1057c9 100644 --- a/showmore/lang/cs/messages.po +++ b/showmore/lang/cs/messages.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-04-01 11:11-0400\n" -"PO-Revision-Date: 2018-06-13 18:01+0000\n" +"PO-Revision-Date: 2018-09-11 09:52+0000\n" "Last-Translator: Aditoo\n" "Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" @@ -22,7 +22,7 @@ msgstr "" #: showmore.php:41 showmore.php:45 msgid "\"Show more\" Settings" -msgstr "\"Show more\" nastavení" +msgstr "Nastavení \"Show more\"" #: showmore.php:50 msgid "Enable Show More" @@ -30,7 +30,7 @@ msgstr "Povolit Show more" #: showmore.php:53 msgid "Cutting posts after how much characters" -msgstr "Oříznout přízpěvky po zadaném množství znaků" +msgstr "Oříznout příspěvky po zadaném množství znaků" #: showmore.php:57 msgid "Save Settings" diff --git a/showmore/lang/cs/strings.php b/showmore/lang/cs/strings.php index 9a5068b8c..1b82b570b 100644 --- a/showmore/lang/cs/strings.php +++ b/showmore/lang/cs/strings.php @@ -6,9 +6,9 @@ function string_plural_select_cs($n){ return ($n == 1 && $n % 1 == 0) ? 0 : ($n >= 2 && $n <= 4 && $n % 1 == 0) ? 1: ($n % 1 != 0 ) ? 2 : 3;; }} ; -$a->strings["\"Show more\" Settings"] = "\"Show more\" nastavení"; +$a->strings["\"Show more\" Settings"] = "Nastavení \"Show more\""; $a->strings["Enable Show More"] = "Povolit Show more"; -$a->strings["Cutting posts after how much characters"] = "Oříznout přízpěvky po zadaném množství znaků"; +$a->strings["Cutting posts after how much characters"] = "Oříznout příspěvky po zadaném množství znaků"; $a->strings["Save Settings"] = "Uložit nastavení"; $a->strings["Show More Settings saved."] = "Nastavení \"Show more\" uložena."; $a->strings["show more"] = "zobrazit více"; From 473cf1243c1fc4ab52fabd8bea06bf4e98a23714 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 21:53:56 +0200 Subject: [PATCH 026/107] CS translation forumdirectory THX Aditoo --- forumdirectory/lang/cs/messages.po | 23 ++++++++++++----------- forumdirectory/lang/cs/strings.php | 15 ++++++++------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/forumdirectory/lang/cs/messages.po b/forumdirectory/lang/cs/messages.po index 7f7a85596..138c26f33 100644 --- a/forumdirectory/lang/cs/messages.po +++ b/forumdirectory/lang/cs/messages.po @@ -4,24 +4,25 @@ # # # Translators: -# Michal Šupler , 2014 +# Aditoo, 2018 +# michal_s , 2014 msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-02-27 05:01-0500\n" -"PO-Revision-Date: 2014-07-07 18:45+0000\n" -"Last-Translator: Michal Šupler \n" -"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n" +"PO-Revision-Date: 2018-09-11 19:04+0000\n" +"Last-Translator: Aditoo\n" +"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: forumdirectory.php:22 msgid "Forum Directory" -msgstr "Adresář Fór" +msgstr "Adresář fór" #: forumdirectory.php:53 msgid "Public access denied." @@ -33,11 +34,11 @@ msgstr "Globální adresář" #: forumdirectory.php:79 msgid "Find on this site" -msgstr "Nalézt na tomto webu" +msgstr "Najít na tomto webu" #: forumdirectory.php:81 msgid "Finding: " -msgstr "Zjištění: " +msgstr "Hledání: " #: forumdirectory.php:82 msgid "Site Directory" @@ -57,7 +58,7 @@ msgstr "Pohlaví: " #: forumdirectory.php:156 msgid "Location:" -msgstr "Místo:" +msgstr "Poloha:" #: forumdirectory.php:158 msgid "Gender:" @@ -65,11 +66,11 @@ msgstr "Pohlaví:" #: forumdirectory.php:160 msgid "Status:" -msgstr "Status:" +msgstr "Stav:" #: forumdirectory.php:162 msgid "Homepage:" -msgstr "Domácí stránka:" +msgstr "Domovská stránka:" #: forumdirectory.php:164 msgid "About:" diff --git a/forumdirectory/lang/cs/strings.php b/forumdirectory/lang/cs/strings.php index 631780265..f438ade9d 100644 --- a/forumdirectory/lang/cs/strings.php +++ b/forumdirectory/lang/cs/strings.php @@ -2,21 +2,22 @@ if(! function_exists("string_plural_select_cs")) { function string_plural_select_cs($n){ - return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;; + $n = intval($n); + return ($n == 1 && $n % 1 == 0) ? 0 : ($n >= 2 && $n <= 4 && $n % 1 == 0) ? 1: ($n % 1 != 0 ) ? 2 : 3;; }} ; -$a->strings["Forum Directory"] = "Adresář Fór"; +$a->strings["Forum Directory"] = "Adresář fór"; $a->strings["Public access denied."] = "Veřejný přístup odepřen."; $a->strings["Global Directory"] = "Globální adresář"; -$a->strings["Find on this site"] = "Nalézt na tomto webu"; -$a->strings["Finding: "] = "Zjištění: "; +$a->strings["Find on this site"] = "Najít na tomto webu"; +$a->strings["Finding: "] = "Hledání: "; $a->strings["Site Directory"] = "Adresář serveru"; $a->strings["Find"] = "Najít"; $a->strings["Age: "] = "Věk: "; $a->strings["Gender: "] = "Pohlaví: "; -$a->strings["Location:"] = "Místo:"; +$a->strings["Location:"] = "Poloha:"; $a->strings["Gender:"] = "Pohlaví:"; -$a->strings["Status:"] = "Status:"; -$a->strings["Homepage:"] = "Domácí stránka:"; +$a->strings["Status:"] = "Stav:"; +$a->strings["Homepage:"] = "Domovská stránka:"; $a->strings["About:"] = "O mě:"; $a->strings["No entries (some entries may be hidden)."] = "Žádné záznamy (některé položky mohou být skryty)."; From 92fae0c0b7afb560ee8577501dbb52a3e25c76a6 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 21:55:29 +0200 Subject: [PATCH 027/107] CS translation libravatar THX Aditoo --- libravatar/lang/cs/messages.po | 25 +++++++++++++------------ libravatar/lang/cs/strings.php | 17 +++++++++-------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/libravatar/lang/cs/messages.po b/libravatar/lang/cs/messages.po index a84e36fd2..cb048a9e5 100644 --- a/libravatar/lang/cs/messages.po +++ b/libravatar/lang/cs/messages.po @@ -4,24 +4,25 @@ # # # Translators: -# Michal Šupler , 2014-2015 +# Aditoo, 2018 +# michal_s , 2014-2015 msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-02-27 05:01-0500\n" -"PO-Revision-Date: 2015-02-11 19:41+0000\n" -"Last-Translator: Michal Šupler \n" -"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n" +"PO-Revision-Date: 2018-09-12 12:54+0000\n" +"Last-Translator: Aditoo\n" +"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: libravatar.php:14 msgid "Could NOT install Libravatar successfully.
It requires PHP >= 5.3" -msgstr "Libravatar není možné úspěšně nainstalovat .
Vyžaduje PHP >= 5.3" +msgstr "Libravatar NENÍ možné úspěšně nainstalovat.
Vyžaduje PHP >= 5.3" #: libravatar.php:73 msgid "generic profile image" @@ -45,16 +46,16 @@ msgstr "tvář v retro arkádovém stylu" #: libravatar.php:82 msgid "Warning" -msgstr "Omezení" +msgstr "Varování" #: libravatar.php:83 #, php-format msgid "Your PHP version %s is lower than the required PHP >= 5.3." -msgstr "Vaše PHP verze %s je nižší než požadovaná PHP >= 5.3." +msgstr "Vaše verze PHP %s je nižší než požadovaná: PHP >= 5.3." #: libravatar.php:84 msgid "This addon is not functional on your server." -msgstr "Tento doplněk není funkční na Vašem serveru." +msgstr "Tento doplněk není na Vašem serveru funkční." #: libravatar.php:93 msgid "Information" @@ -65,7 +66,7 @@ msgid "" "Gravatar addon is installed. Please disable the Gravatar addon.
The " "Libravatar addon will fall back to Gravatar if nothing was found at " "Libravatar." -msgstr "Gravatar doplněk je nainstalován. Prosím zakažte doplněk Gravatar.
Libravatar doplněk se vrátí k doplňku Gravatar, pokud na Libravataru nebude nic nalezeno." +msgstr "Doplněk Gravatar je nainstalován. Prosím zakažte doplněk Gravatar.
Doplněk Libravatar se přepne na Gravatar, pokud na Libravataru nebude nic nalezeno." #: libravatar.php:99 msgid "Submit" @@ -73,11 +74,11 @@ msgstr "Odeslat" #: libravatar.php:100 msgid "Default avatar image" -msgstr "Defaultní obrázek avataru" +msgstr "Výchozí avatarový obrázek" #: libravatar.php:100 msgid "Select default avatar image if none was found. See README" -msgstr "Vyberte defaultní avatar obrázek pokud nebyl žádný nalezen. Více viz. soubor README." +msgstr "Nastavte výchozí avatarový obrázek, pokud není žádný nalezen. Více viz. soubor README." #: libravatar.php:112 msgid "Libravatar settings updated." diff --git a/libravatar/lang/cs/strings.php b/libravatar/lang/cs/strings.php index e8ad79314..9d47c544d 100644 --- a/libravatar/lang/cs/strings.php +++ b/libravatar/lang/cs/strings.php @@ -2,21 +2,22 @@ if(! function_exists("string_plural_select_cs")) { function string_plural_select_cs($n){ - return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;; + $n = intval($n); + return ($n == 1 && $n % 1 == 0) ? 0 : ($n >= 2 && $n <= 4 && $n % 1 == 0) ? 1: ($n % 1 != 0 ) ? 2 : 3;; }} ; -$a->strings["Could NOT install Libravatar successfully.
It requires PHP >= 5.3"] = "Libravatar není možné úspěšně nainstalovat .
Vyžaduje PHP >= 5.3"; +$a->strings["Could NOT install Libravatar successfully.
It requires PHP >= 5.3"] = "Libravatar NENÍ možné úspěšně nainstalovat.
Vyžaduje PHP >= 5.3"; $a->strings["generic profile image"] = "generický profilový obrázek"; $a->strings["random geometric pattern"] = "náhodný geometrický vzor"; $a->strings["monster face"] = "tvář příšery"; $a->strings["computer generated face"] = "počítačově generovaná tvář"; $a->strings["retro arcade style face"] = "tvář v retro arkádovém stylu"; -$a->strings["Warning"] = "Omezení"; -$a->strings["Your PHP version %s is lower than the required PHP >= 5.3."] = "Vaše PHP verze %s je nižší než požadovaná PHP >= 5.3."; -$a->strings["This addon is not functional on your server."] = "Tento doplněk není funkční na Vašem serveru."; +$a->strings["Warning"] = "Varování"; +$a->strings["Your PHP version %s is lower than the required PHP >= 5.3."] = "Vaše verze PHP %s je nižší než požadovaná: PHP >= 5.3."; +$a->strings["This addon is not functional on your server."] = "Tento doplněk není na Vašem serveru funkční."; $a->strings["Information"] = "Informace"; -$a->strings["Gravatar addon is installed. Please disable the Gravatar addon.
The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar."] = "Gravatar doplněk je nainstalován. Prosím zakažte doplněk Gravatar.
Libravatar doplněk se vrátí k doplňku Gravatar, pokud na Libravataru nebude nic nalezeno."; +$a->strings["Gravatar addon is installed. Please disable the Gravatar addon.
The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar."] = "Doplněk Gravatar je nainstalován. Prosím zakažte doplněk Gravatar.
Doplněk Libravatar se přepne na Gravatar, pokud na Libravataru nebude nic nalezeno."; $a->strings["Submit"] = "Odeslat"; -$a->strings["Default avatar image"] = "Defaultní obrázek avataru"; -$a->strings["Select default avatar image if none was found. See README"] = "Vyberte defaultní avatar obrázek pokud nebyl žádný nalezen. Více viz. soubor README."; +$a->strings["Default avatar image"] = "Výchozí avatarový obrázek"; +$a->strings["Select default avatar image if none was found. See README"] = "Nastavte výchozí avatarový obrázek, pokud není žádný nalezen. Více viz. soubor README."; $a->strings["Libravatar settings updated."] = "Nastavení Libravatar aktualizováno."; From 45cff3affd15f8d1908648c0a93db4560fb589d3 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 21:56:45 +0200 Subject: [PATCH 028/107] CS translation blackout THX Aditoo --- blackout/lang/cs/messages.po | 15 ++++++++------- blackout/lang/cs/strings.php | 7 ++++--- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/blackout/lang/cs/messages.po b/blackout/lang/cs/messages.po index 1fa459afa..a4a71e0d2 100644 --- a/blackout/lang/cs/messages.po +++ b/blackout/lang/cs/messages.po @@ -4,24 +4,25 @@ # # # Translators: -# Michal Šupler , 2014 +# Aditoo, 2018 +# michal_s , 2014 msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-06-22 13:18+0200\n" -"PO-Revision-Date: 2014-07-02 15:28+0000\n" -"Last-Translator: Michal Šupler \n" -"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n" +"PO-Revision-Date: 2018-09-02 17:54+0000\n" +"Last-Translator: Aditoo\n" +"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: blackout.php:99 msgid "Save Settings" -msgstr "Uložit Nastavení" +msgstr "Uložit nastavení" #: blackout.php:100 msgid "Redirect URL" @@ -49,4 +50,4 @@ msgstr "Konec odstávky" msgid "" "The end-date is prior to the start-date of the blackout, you should fix " "this." -msgstr "Datum konce odstávky je před datem zahájení odstávky prosím opravte to." +msgstr "Datum konce odstávky je před datem zahájení odstávky, prosím opravte to." diff --git a/blackout/lang/cs/strings.php b/blackout/lang/cs/strings.php index 6bca0c651..c1b8b66b8 100644 --- a/blackout/lang/cs/strings.php +++ b/blackout/lang/cs/strings.php @@ -2,13 +2,14 @@ if(! function_exists("string_plural_select_cs")) { function string_plural_select_cs($n){ - return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;; + $n = intval($n); + return ($n == 1 && $n % 1 == 0) ? 0 : ($n >= 2 && $n <= 4 && $n % 1 == 0) ? 1: ($n % 1 != 0 ) ? 2 : 3;; }} ; -$a->strings["Save Settings"] = "Uložit Nastavení"; +$a->strings["Save Settings"] = "Uložit nastavení"; $a->strings["Redirect URL"] = "URL Přesměrování"; $a->strings["all your visitors from the web will be redirected to this URL"] = "všichni vaši návštěvníci z webu budou přesměrování na tuto URL adresu"; $a->strings["Begin of the Blackout"] = "Zahájení odstávky"; $a->strings["format is YYYY year, MM month, DD day, hh hour and mm minute"] = "formát je RRRR rok, MM měsíc, DD den, hh hodina a mm minuta"; $a->strings["End of the Blackout"] = "Konec odstávky"; -$a->strings["The end-date is prior to the start-date of the blackout, you should fix this."] = "Datum konce odstávky je před datem zahájení odstávky prosím opravte to."; +$a->strings["The end-date is prior to the start-date of the blackout, you should fix this."] = "Datum konce odstávky je před datem zahájení odstávky, prosím opravte to."; From ed9297ea25ffe77667c69a488bbb9f497a90e42d Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 21:58:44 +0200 Subject: [PATCH 029/107] CS translation fromapp THX Aditoo --- fromapp/lang/cs/messages.po | 19 ++++++++++--------- fromapp/lang/cs/strings.php | 11 ++++++----- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/fromapp/lang/cs/messages.po b/fromapp/lang/cs/messages.po index 216c6db10..cac582fee 100644 --- a/fromapp/lang/cs/messages.po +++ b/fromapp/lang/cs/messages.po @@ -4,37 +4,38 @@ # # # Translators: -# Michal Šupler , 2014-2015 +# Aditoo, 2018 +# michal_s , 2014-2015 msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-02-27 05:01-0500\n" -"PO-Revision-Date: 2015-02-11 19:41+0000\n" -"Last-Translator: Michal Šupler \n" -"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n" +"PO-Revision-Date: 2018-09-11 19:01+0000\n" +"Last-Translator: Aditoo\n" +"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" #: fromapp.php:38 msgid "Fromapp settings updated." -msgstr "Fromapp nastavení aktualizováno." +msgstr "Nastavení FromApp aktualizována." #: fromapp.php:64 msgid "FromApp Settings" -msgstr "FromApp nastavení" +msgstr "Nastavení FromApp" #: fromapp.php:66 msgid "" "The application name you would like to show your posts originating from." -msgstr "Jméno zdrojové aplikace" +msgstr "Jméno aplikace, která má být zobrazena jako zdroj Vašich příspěvků." #: fromapp.php:70 msgid "Use this application name even if another application was used." -msgstr "Použij toto jméno aplikace i když byla použita jiná aplikace" +msgstr "Použít toto jméno aplikace, i když byla použita jiná aplikace" #: fromapp.php:77 msgid "Submit" diff --git a/fromapp/lang/cs/strings.php b/fromapp/lang/cs/strings.php index 39e85d333..8ade5ddd1 100644 --- a/fromapp/lang/cs/strings.php +++ b/fromapp/lang/cs/strings.php @@ -2,11 +2,12 @@ if(! function_exists("string_plural_select_cs")) { function string_plural_select_cs($n){ - return ($n==1) ? 0 : ($n>=2 && $n<=4) ? 1 : 2;; + $n = intval($n); + return ($n == 1 && $n % 1 == 0) ? 0 : ($n >= 2 && $n <= 4 && $n % 1 == 0) ? 1: ($n % 1 != 0 ) ? 2 : 3;; }} ; -$a->strings["Fromapp settings updated."] = "Fromapp nastavení aktualizováno."; -$a->strings["FromApp Settings"] = "FromApp nastavení"; -$a->strings["The application name you would like to show your posts originating from."] = "Jméno zdrojové aplikace"; -$a->strings["Use this application name even if another application was used."] = "Použij toto jméno aplikace i když byla použita jiná aplikace"; +$a->strings["Fromapp settings updated."] = "Nastavení FromApp aktualizována."; +$a->strings["FromApp Settings"] = "Nastavení FromApp"; +$a->strings["The application name you would like to show your posts originating from."] = "Jméno aplikace, která má být zobrazena jako zdroj Vašich příspěvků."; +$a->strings["Use this application name even if another application was used."] = "Použít toto jméno aplikace, i když byla použita jiná aplikace"; $a->strings["Submit"] = "Odeslat"; From ab5aa50ae919f77f41b93bca342db98acb967ae6 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 22:00:08 +0200 Subject: [PATCH 030/107] CS translation diaspora THX Aditoo --- diaspora/lang/cs/messages.po | 4 ++-- diaspora/lang/cs/strings.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/diaspora/lang/cs/messages.po b/diaspora/lang/cs/messages.po index 68af6b735..44b1d4b42 100644 --- a/diaspora/lang/cs/messages.po +++ b/diaspora/lang/cs/messages.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-06-22 13:18+0200\n" -"PO-Revision-Date: 2018-08-16 10:10+0000\n" +"PO-Revision-Date: 2018-09-02 17:54+0000\n" "Last-Translator: Aditoo\n" "Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n" "MIME-Version: 1.0\n" @@ -23,7 +23,7 @@ msgstr "" #: diaspora.php:37 msgid "Post to Diaspora" -msgstr "Odeslat příspěvek na Diasporu" +msgstr "Odeslat na Diasporu" #: diaspora.php:142 msgid "" diff --git a/diaspora/lang/cs/strings.php b/diaspora/lang/cs/strings.php index 25323fd9f..649b02c75 100644 --- a/diaspora/lang/cs/strings.php +++ b/diaspora/lang/cs/strings.php @@ -6,7 +6,7 @@ function string_plural_select_cs($n){ return ($n == 1 && $n % 1 == 0) ? 0 : ($n >= 2 && $n <= 4 && $n % 1 == 0) ? 1: ($n % 1 != 0 ) ? 2 : 3;; }} ; -$a->strings["Post to Diaspora"] = "Odeslat příspěvek na Diasporu"; +$a->strings["Post to Diaspora"] = "Odeslat na Diasporu"; $a->strings["Can't login to your Diaspora account. Please check username and password and ensure you used the complete address (including http...)"] = "Nelze se přihlásit na váš účet Diaspora. Prosím ověřte své uživatelské jméno a heslo a ujistěte se, že jste použili kompletní adresu (včetně http...)"; $a->strings["Diaspora Export"] = "Diaspora export"; $a->strings["Enable Diaspora Post Addon"] = "Povolit doplněk Diaspora Post"; From 15bb681770960f67b25b81b010b1e2e215ea7518 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 17 Sep 2018 22:01:41 +0200 Subject: [PATCH 031/107] CS translation morechoice THX Aditoo --- morechoice/lang/cs/messages.po | 22 +++++++++++----------- morechoice/lang/cs/strings.php | 22 +++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/morechoice/lang/cs/messages.po b/morechoice/lang/cs/messages.po index 3251e9eca..a89b96aca 100644 --- a/morechoice/lang/cs/messages.po +++ b/morechoice/lang/cs/messages.po @@ -64,7 +64,7 @@ msgstr "" #: morechoice.php:45 msgid "Metrosexual" -msgstr "" +msgstr "Metrosexuál" #: morechoice.php:46 msgid "Monk" @@ -144,7 +144,7 @@ msgstr "Bolest" #: morechoice.php:68 msgid "Trans men" -msgstr "Transmuž" +msgstr "Transmuži" #: morechoice.php:69 msgid "Older women" @@ -164,11 +164,11 @@ msgstr "V nebezpečí" #: morechoice.php:73 msgid "Pretending to be male" -msgstr "Předstírám, že jsem muž" +msgstr "Předstírají, že jsou muži" #: morechoice.php:74 msgid "Pretending to be female" -msgstr "Předstírám, že jsem žena" +msgstr "Předstírají, že jsou ženy" #: morechoice.php:75 msgid "Breats" @@ -180,7 +180,7 @@ msgstr "" #: morechoice.php:77 msgid "Crying" -msgstr "Pláču" +msgstr "Pláčí" #: morechoice.php:78 msgid "Nappies/Diapers" @@ -208,11 +208,11 @@ msgstr "Nohy" #: morechoice.php:84 msgid "Covered in insects" -msgstr "Pokryt/a hmyzem" +msgstr "Pokryti hmyzem" #: morechoice.php:85 msgid "Turning a human being into furniture" -msgstr "" +msgstr "Mění lidské bytosti v nábytek" #: morechoice.php:86 msgid "Elderly people" @@ -228,7 +228,7 @@ msgstr "Zločinci" #: morechoice.php:89 msgid "Stealing" -msgstr "" +msgstr "Kradou" #: morechoice.php:90 msgid "Breast milk" @@ -272,7 +272,7 @@ msgstr "Pupky" #: morechoice.php:100 msgid "Corpses" -msgstr "" +msgstr "Mrtvoly" #: morechoice.php:101 msgid "Smells" @@ -296,7 +296,7 @@ msgstr "Močení" #: morechoice.php:106 msgid "Eating people" -msgstr "Žeru lidi" +msgstr "Žerou lidi" #: morechoice.php:107 msgid "Being eaten" @@ -316,7 +316,7 @@ msgstr "" #: morechoice.php:114 msgid "Polygamist" -msgstr "" +msgstr "Polygamist(k)a" #: morechoice.php:115 msgid "Half married" diff --git a/morechoice/lang/cs/strings.php b/morechoice/lang/cs/strings.php index f0c05af00..55bcbd4d4 100644 --- a/morechoice/lang/cs/strings.php +++ b/morechoice/lang/cs/strings.php @@ -17,7 +17,7 @@ $a->strings["Gender fluid"] = ""; $a->strings["Kathoey"] = ""; $a->strings["Lady"] = "Dáma"; $a->strings["Lipstick lesbian"] = ""; -$a->strings["Metrosexual"] = ""; +$a->strings["Metrosexual"] = "Metrosexuál"; $a->strings["Monk"] = "Mnich"; $a->strings["Nun"] = "Jeptiška"; $a->strings["Soft butch"] = ""; @@ -37,28 +37,28 @@ $a->strings["People with impaired mobility"] = "Lidé s pohybovým postižením" $a->strings["Amputees"] = "Amputovaní"; $a->strings["Statues, mannequins and immobility"] = "Sochy, figuríny a nepohyblivost"; $a->strings["Pain"] = "Bolest"; -$a->strings["Trans men"] = "Transmuž"; +$a->strings["Trans men"] = "Transmuži"; $a->strings["Older women"] = "Starší ženy"; $a->strings["Asphyxiation"] = ""; $a->strings["In public"] = "Na veřejnosti"; $a->strings["In danger"] = "V nebezpečí"; -$a->strings["Pretending to be male"] = "Předstírám, že jsem muž"; -$a->strings["Pretending to be female"] = "Předstírám, že jsem žena"; +$a->strings["Pretending to be male"] = "Předstírají, že jsou muži"; +$a->strings["Pretending to be female"] = "Předstírají, že jsou ženy"; $a->strings["Breats"] = ""; $a->strings["Scat"] = ""; -$a->strings["Crying"] = "Pláču"; +$a->strings["Crying"] = "Pláčí"; $a->strings["Nappies/Diapers"] = "Plenky"; $a->strings["Trees"] = "Stromy"; $a->strings["Vomit"] = "Zvracení"; $a->strings["Murder"] = "Vražda"; $a->strings["Fat people"] = "Tlustí lidé"; $a->strings["Feet"] = "Nohy"; -$a->strings["Covered in insects"] = "Pokryt/a hmyzem"; -$a->strings["Turning a human being into furniture"] = ""; +$a->strings["Covered in insects"] = "Pokryti hmyzem"; +$a->strings["Turning a human being into furniture"] = "Mění lidské bytosti v nábytek"; $a->strings["Elderly people"] = "Postarší lidé"; $a->strings["Transgender people"] = "Transgenderoví lidé"; $a->strings["Criminals"] = "Zločinci"; -$a->strings["Stealing"] = ""; +$a->strings["Stealing"] = "Kradou"; $a->strings["Breast milk"] = ""; $a->strings["Immersing genitals in liquids"] = ""; $a->strings["Giants"] = "Obři"; @@ -69,18 +69,18 @@ $a->strings["Mucus"] = ""; $a->strings["Obscene language"] = "Sprostý jazyk"; $a->strings["Noses"] = "Nosy"; $a->strings["Navels"] = "Pupky"; -$a->strings["Corpses"] = ""; +$a->strings["Corpses"] = "Mrtvoly"; $a->strings["Smells"] = "Pachy"; $a->strings["Buttocks"] = ""; $a->strings["Nonliving objects"] = "Neživoucí předměty"; $a->strings["Sleeping people"] = "Spící lidé"; $a->strings["Urination"] = "Močení"; -$a->strings["Eating people"] = "Žeru lidi"; +$a->strings["Eating people"] = "Žerou lidi"; $a->strings["Being eaten"] = ""; $a->strings["Animals"] = "Zvířata"; $a->strings["I'd rather just have some chocolate"] = "Radši bych si prostě dal čokoládu"; $a->strings["Married to my job"] = ""; -$a->strings["Polygamist"] = ""; +$a->strings["Polygamist"] = "Polygamist(k)a"; $a->strings["Half married"] = "Napůl ženatý/vdaná"; $a->strings["Living in the past"] = "Žiju v minulosti"; $a->strings["Pretending to be over my ex"] = ""; From 0afab99d84d6bdd02dbe4f4b0f8c801afb3254e5 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 19 Sep 2018 22:03:15 -0400 Subject: [PATCH 032/107] [highlightjs] Add new addon --- highlightjs/asset/CHANGES.md | 1646 +++++++++++++++++ highlightjs/asset/LICENSE | 24 + highlightjs/asset/README.md | 150 ++ highlightjs/asset/README.ru.md | 142 ++ highlightjs/asset/highlight.pack.js | 2 + highlightjs/asset/styles/agate.css | 108 ++ highlightjs/asset/styles/androidstudio.css | 66 + highlightjs/asset/styles/arduino-light.css | 88 + highlightjs/asset/styles/arta.css | 73 + highlightjs/asset/styles/ascetic.css | 45 + .../asset/styles/atelier-cave-dark.css | 83 + .../asset/styles/atelier-cave-light.css | 85 + .../asset/styles/atelier-dune-dark.css | 69 + .../asset/styles/atelier-dune-light.css | 69 + .../asset/styles/atelier-estuary-dark.css | 84 + .../asset/styles/atelier-estuary-light.css | 84 + .../asset/styles/atelier-forest-dark.css | 69 + .../asset/styles/atelier-forest-light.css | 69 + .../asset/styles/atelier-heath-dark.css | 69 + .../asset/styles/atelier-heath-light.css | 69 + .../asset/styles/atelier-lakeside-dark.css | 69 + .../asset/styles/atelier-lakeside-light.css | 69 + .../asset/styles/atelier-plateau-dark.css | 84 + .../asset/styles/atelier-plateau-light.css | 84 + .../asset/styles/atelier-savanna-dark.css | 84 + .../asset/styles/atelier-savanna-light.css | 84 + .../asset/styles/atelier-seaside-dark.css | 69 + .../asset/styles/atelier-seaside-light.css | 69 + .../asset/styles/atelier-sulphurpool-dark.css | 69 + .../styles/atelier-sulphurpool-light.css | 69 + highlightjs/asset/styles/atom-one-dark.css | 96 + highlightjs/asset/styles/atom-one-light.css | 96 + highlightjs/asset/styles/bootstrap.css | 98 + highlightjs/asset/styles/brown-paper.css | 64 + highlightjs/asset/styles/brown-papersq.png | Bin 0 -> 18198 bytes highlightjs/asset/styles/codepen-embed.css | 60 + highlightjs/asset/styles/color-brewer.css | 71 + highlightjs/asset/styles/darcula.css | 77 + highlightjs/asset/styles/dark.css | 63 + highlightjs/asset/styles/darkula.css | 6 + highlightjs/asset/styles/default.css | 99 + highlightjs/asset/styles/docco.css | 97 + highlightjs/asset/styles/dracula.css | 76 + highlightjs/asset/styles/far.css | 71 + highlightjs/asset/styles/foundation.css | 88 + highlightjs/asset/styles/github-gist.css | 71 + highlightjs/asset/styles/github.css | 99 + highlightjs/asset/styles/googlecode.css | 89 + highlightjs/asset/styles/grayscale.css | 101 + highlightjs/asset/styles/gruvbox-dark.css | 108 ++ highlightjs/asset/styles/gruvbox-light.css | 108 ++ highlightjs/asset/styles/hopscotch.css | 83 + highlightjs/asset/styles/hybrid.css | 102 + highlightjs/asset/styles/idea.css | 97 + highlightjs/asset/styles/ir-black.css | 73 + highlightjs/asset/styles/kimbie.dark.css | 74 + highlightjs/asset/styles/kimbie.light.css | 74 + highlightjs/asset/styles/magula.css | 70 + highlightjs/asset/styles/mono-blue.css | 59 + highlightjs/asset/styles/monokai-sublime.css | 83 + highlightjs/asset/styles/monokai.css | 70 + highlightjs/asset/styles/obsidian.css | 88 + highlightjs/asset/styles/ocean.css | 74 + highlightjs/asset/styles/paraiso-dark.css | 72 + highlightjs/asset/styles/paraiso-light.css | 72 + highlightjs/asset/styles/pojoaque.css | 83 + highlightjs/asset/styles/pojoaque.jpg | Bin 0 -> 1186 bytes highlightjs/asset/styles/purebasic.css | 96 + highlightjs/asset/styles/qtcreator_dark.css | 83 + highlightjs/asset/styles/qtcreator_light.css | 83 + highlightjs/asset/styles/railscasts.css | 106 ++ highlightjs/asset/styles/rainbow.css | 85 + highlightjs/asset/styles/routeros.css | 108 ++ highlightjs/asset/styles/school-book.css | 72 + highlightjs/asset/styles/school-book.png | Bin 0 -> 486 bytes highlightjs/asset/styles/solarized-dark.css | 84 + highlightjs/asset/styles/solarized-light.css | 84 + highlightjs/asset/styles/sunburst.css | 102 + .../asset/styles/tomorrow-night-blue.css | 75 + .../asset/styles/tomorrow-night-bright.css | 74 + .../asset/styles/tomorrow-night-eighties.css | 74 + highlightjs/asset/styles/tomorrow-night.css | 75 + highlightjs/asset/styles/tomorrow.css | 72 + highlightjs/asset/styles/vs.css | 68 + highlightjs/asset/styles/vs2015.css | 115 ++ highlightjs/asset/styles/xcode.css | 93 + highlightjs/asset/styles/xt256.css | 92 + highlightjs/asset/styles/zenburn.css | 80 + highlightjs/highlightjs.php | 51 + 89 files changed, 8428 insertions(+) create mode 100644 highlightjs/asset/CHANGES.md create mode 100644 highlightjs/asset/LICENSE create mode 100644 highlightjs/asset/README.md create mode 100644 highlightjs/asset/README.ru.md create mode 100644 highlightjs/asset/highlight.pack.js create mode 100644 highlightjs/asset/styles/agate.css create mode 100644 highlightjs/asset/styles/androidstudio.css create mode 100644 highlightjs/asset/styles/arduino-light.css create mode 100644 highlightjs/asset/styles/arta.css create mode 100644 highlightjs/asset/styles/ascetic.css create mode 100644 highlightjs/asset/styles/atelier-cave-dark.css create mode 100644 highlightjs/asset/styles/atelier-cave-light.css create mode 100644 highlightjs/asset/styles/atelier-dune-dark.css create mode 100644 highlightjs/asset/styles/atelier-dune-light.css create mode 100644 highlightjs/asset/styles/atelier-estuary-dark.css create mode 100644 highlightjs/asset/styles/atelier-estuary-light.css create mode 100644 highlightjs/asset/styles/atelier-forest-dark.css create mode 100644 highlightjs/asset/styles/atelier-forest-light.css create mode 100644 highlightjs/asset/styles/atelier-heath-dark.css create mode 100644 highlightjs/asset/styles/atelier-heath-light.css create mode 100644 highlightjs/asset/styles/atelier-lakeside-dark.css create mode 100644 highlightjs/asset/styles/atelier-lakeside-light.css create mode 100644 highlightjs/asset/styles/atelier-plateau-dark.css create mode 100644 highlightjs/asset/styles/atelier-plateau-light.css create mode 100644 highlightjs/asset/styles/atelier-savanna-dark.css create mode 100644 highlightjs/asset/styles/atelier-savanna-light.css create mode 100644 highlightjs/asset/styles/atelier-seaside-dark.css create mode 100644 highlightjs/asset/styles/atelier-seaside-light.css create mode 100644 highlightjs/asset/styles/atelier-sulphurpool-dark.css create mode 100644 highlightjs/asset/styles/atelier-sulphurpool-light.css create mode 100644 highlightjs/asset/styles/atom-one-dark.css create mode 100644 highlightjs/asset/styles/atom-one-light.css create mode 100644 highlightjs/asset/styles/bootstrap.css create mode 100644 highlightjs/asset/styles/brown-paper.css create mode 100644 highlightjs/asset/styles/brown-papersq.png create mode 100644 highlightjs/asset/styles/codepen-embed.css create mode 100644 highlightjs/asset/styles/color-brewer.css create mode 100644 highlightjs/asset/styles/darcula.css create mode 100644 highlightjs/asset/styles/dark.css create mode 100644 highlightjs/asset/styles/darkula.css create mode 100644 highlightjs/asset/styles/default.css create mode 100644 highlightjs/asset/styles/docco.css create mode 100644 highlightjs/asset/styles/dracula.css create mode 100644 highlightjs/asset/styles/far.css create mode 100644 highlightjs/asset/styles/foundation.css create mode 100644 highlightjs/asset/styles/github-gist.css create mode 100644 highlightjs/asset/styles/github.css create mode 100644 highlightjs/asset/styles/googlecode.css create mode 100644 highlightjs/asset/styles/grayscale.css create mode 100644 highlightjs/asset/styles/gruvbox-dark.css create mode 100644 highlightjs/asset/styles/gruvbox-light.css create mode 100644 highlightjs/asset/styles/hopscotch.css create mode 100644 highlightjs/asset/styles/hybrid.css create mode 100644 highlightjs/asset/styles/idea.css create mode 100644 highlightjs/asset/styles/ir-black.css create mode 100644 highlightjs/asset/styles/kimbie.dark.css create mode 100644 highlightjs/asset/styles/kimbie.light.css create mode 100644 highlightjs/asset/styles/magula.css create mode 100644 highlightjs/asset/styles/mono-blue.css create mode 100644 highlightjs/asset/styles/monokai-sublime.css create mode 100644 highlightjs/asset/styles/monokai.css create mode 100644 highlightjs/asset/styles/obsidian.css create mode 100644 highlightjs/asset/styles/ocean.css create mode 100644 highlightjs/asset/styles/paraiso-dark.css create mode 100644 highlightjs/asset/styles/paraiso-light.css create mode 100644 highlightjs/asset/styles/pojoaque.css create mode 100644 highlightjs/asset/styles/pojoaque.jpg create mode 100644 highlightjs/asset/styles/purebasic.css create mode 100644 highlightjs/asset/styles/qtcreator_dark.css create mode 100644 highlightjs/asset/styles/qtcreator_light.css create mode 100644 highlightjs/asset/styles/railscasts.css create mode 100644 highlightjs/asset/styles/rainbow.css create mode 100644 highlightjs/asset/styles/routeros.css create mode 100644 highlightjs/asset/styles/school-book.css create mode 100644 highlightjs/asset/styles/school-book.png create mode 100644 highlightjs/asset/styles/solarized-dark.css create mode 100644 highlightjs/asset/styles/solarized-light.css create mode 100644 highlightjs/asset/styles/sunburst.css create mode 100644 highlightjs/asset/styles/tomorrow-night-blue.css create mode 100644 highlightjs/asset/styles/tomorrow-night-bright.css create mode 100644 highlightjs/asset/styles/tomorrow-night-eighties.css create mode 100644 highlightjs/asset/styles/tomorrow-night.css create mode 100644 highlightjs/asset/styles/tomorrow.css create mode 100644 highlightjs/asset/styles/vs.css create mode 100644 highlightjs/asset/styles/vs2015.css create mode 100644 highlightjs/asset/styles/xcode.css create mode 100644 highlightjs/asset/styles/xt256.css create mode 100644 highlightjs/asset/styles/zenburn.css create mode 100644 highlightjs/highlightjs.php diff --git a/highlightjs/asset/CHANGES.md b/highlightjs/asset/CHANGES.md new file mode 100644 index 000000000..05473a265 --- /dev/null +++ b/highlightjs/asset/CHANGES.md @@ -0,0 +1,1646 @@ +## Version 9.12.0 + +New language: + +- *MikroTik* RouterOS Scripting language by [Ivan Dementev][]. + +New style: + +- *VisualStudio 2015 Dark* by [Nicolas LLOBERA][] + +Improvements: + +- *Crystal* updated with new keywords and syntaxes by [Tsuyusato Kitsune][]. +- *Julia* updated to the modern definitions by [Alex Arslan][]. +- *julia-repl* added by [Morten Piibeleht][]. +- [Stanislav Belov][] wrote a new definition for *1C*, replacing the one that + has not been updated for more than 8 years. The new version supports syntax + for versions 7.7 and 8. +- [Nicolas LLOBERA][] improved C# definition fixing edge cases with function + titles detection and added highlighting of `[Attributes]`. +- [nnnik][] provided a few correctness fixes for *Autohotkey*. +- [Martin Clausen][] made annotation collections in *Clojure* to look + consistently with other kinds. +- [Alejandro Alonso][] updated *Swift* keywords. + +[Tsuyusato Kitsune]: https://github.com/MakeNowJust +[Alex Arslan]: https://github.com/ararslan +[Morten Piibeleht]: https://github.com/mortenpi +[Stanislav Belov]: https://github.com/4ppl +[Ivan Dementev]: https://github.com/DiVAN1x +[Nicolas LLOBERA]: https://github.com/Nicolas01 +[nnnik]: https://github.com/nnnik +[Martin Clausen]: https://github.com/maacl +[Alejandro Alonso]: https://github.com/Azoy + + +## Version 9.11.0 + +New languages: + +- *Shell* by [Tsuyusato Kitsune][] +- *jboss-cli* by [Raphaël Parrëe][] + +Improvements: + +- [Joël Porquet] has [greatly improved the definition of *makefile*][5b3e0e6]. +- *C++* class titles are now highlighted as in other languages with classes. +- [Jordi Petit][] added rarely used `or`, `and` and `not` keywords to *C++*. +- [Pieter Vantorre][] fixed highlighting of negative floating point values. + + +[Tsuyusato Kitsune]: https://github.com/MakeNowJust +[Jordi Petit]: https://github.com/jordi-petit +[Raphaël Parrëe]: https://github.com/rparree +[Pieter Vantorre]: https://github.com/NuclearCookie +[5b3e0e6]: https://github.com/isagalaev/highlight.js/commit/5b3e0e68bfaae282faff6697d6a490567fa9d44b + + +## Version 9.10.0 + +Apologies for missing the previous release cycle. Some thing just can't be +automated… Anyway, we're back! + +New languages: + +- *Hy* by [Sergey Sobko][] +- *Leaf* by [Hale Chan][] +- *N1QL* by [Andres Täht][] and [Rene Saarsoo][] + +Improvements: + +- *Rust* got updated with new keywords by [Kasper Andersen][] and then + significantly modernized even more by [Eduard-Mihai Burtescu][] (yes, @eddyb, + Rust core team member!) +- *Python* updated with f-literals by [Philipp A][]. +- *YAML* updated with unquoted strings support. +- *Gauss* updated with new keywords by [Matt Evans][]. +- *Lua* updated with new keywords by [Joe Blow][]. +- *Kotlin* updated with new keywords by [Philipp Hauer][]. +- *TypeScript* got highlighting of function params and updated keywords by + [Ike Ku][]. +- *Scheme* now correctly handles \`-quoted lists thanks to [Guannan Wei]. +- [Sam Wu][] fixed handling of `<<` in *C++* defines. + +[Philipp A]: https://github.com/flying-sheep +[Philipp Hauer]: https://github.com/phauer +[Sergey Sobko]: https://github.com/profitware +[Hale Chan]: https://github.com/halechan +[Matt Evans]: https://github.com/matthewevans +[Joe Blow]: https://github.com/mossarelli +[Kasper Andersen]: https://github.com/kasma1990 +[Eduard-Mihai Burtescu]: https://github.com/eddyb +[Andres Täht]: https://github.com/andrestaht +[Rene Saarsoo]: https://github.com/nene +[Philipp Hauer]: https://github.com/phauer +[Ike Ku]: https://github.com/dempfi +[Guannan Wei]: https://github.com/Kraks +[Sam Wu]: https://github.com/samsam2310 + + +## Version 9.9.0 + +New languages + +- *LLVM* by [Michael Rodler][] + +Improvements: + +- *TypeScript* updated with annotations and param lists inside constructors, by + [Raphael Parree][]. +- *CoffeeScript* updated with new keywords and fixed to recognize JavaScript + in \`\`\`, thanks to thanks to [Geoffrey Booth][]. +- Compiler directives in *Delphi* are now correctly highlighted as "meta". + +[Raphael Parree]: https://github.com/rparree +[Michael Rodler]: https://github.com/f0rki +[Geoffrey Booth]: https://github.com/GeoffreyBooth + + +## Version 9.8.0 "New York" + +This version is the second one that deserved a name. Because I'm in New York, +and the release isn't missing the deadline only because it's still Tuesday on +West Coast. + +New languages: + +- *Clean* by [Camil Staps][] +- *Flix* by [Magnus Madsen][] + +Improvements: + +- [Kenton Hamaluik][] did a comprehensive update for *Haxe*. +- New commands for *PowerShell* from [Nicolas Le Gall][]. +- [Jan T. Sott][] updated *NSIS*. +- *Java* and *Swift* support unicode characters in identifiers thanks to + [Alexander Lichter][]. + +[Camil Staps]: https://github.com/camilstaps +[Magnus Madsen]: https://github.com/magnus-madsen +[Kenton Hamaluik]: https://github.com/FuzzyWuzzie +[Nicolas Le Gall]: https://github.com/darkitty +[Jan T. Sott]: https://github.com/idleberg +[Alexander Lichter]: https://github.com/manniL + + +## Version 9.7.0 + +A comprehensive bugfix release. This is one of the best things about +highlight.js: even boring things keep getting better (even if slow). + +- VHDL updated with PSL keywords and uses more consistent styling. +- Nested C-style comments no longer break highlighting in many languages. +- JavaScript updated with `=>` functions, highlighted object attributes and + parsing within template string substitution blocks (`${...}`). +- Fixed another corner case with self-closing `` in JSX. +- Added `HEALTHCHECK` directive in Docker. +- Delphi updated with new Free Pascal keywords. +- Fixed digit separator parsing in C++. +- C# updated with new keywords and fixed to allow multiple identifiers within + generics `<...>`. +- Fixed another slow regex in Less. + + +## Version 9.6.0 + +New languages: + +- *ABNF* and *EBNF* by [Alex McKibben][] +- *Awk* by [Matthew Daly][] +- *SubUnit* by [Sergey Bronnikov][] + +New styles: + +- *Atom One* in both Dark and Light variants by [Daniel Gamage][] + +Plus, a few smaller updates for *Lasso*, *Elixir*, *C++* and *SQL*. + +[Alex McKibben]: https://github.com/mckibbenta +[Daniel Gamage]: https://github.com/danielgamage +[Matthew Daly]: https://github.com/matthewbdaly +[Sergey Bronnikov]: https://github.com/ligurio + + +## Version 9.5.0 + +New languages: + +- *Excel* by [Victor Zhou][] +- *Linden Scripting Language* by [Builder's Brewery][] +- *TAP* (Test Anything Protocol) by [Sergey Bronnikov][] +- *Pony* by [Joe Eli McIlvain][] +- *Coq* by [Stephan Boyer][] +- *dsconfig* and *LDIF* by [Jacob Childress][] + +New styles: + +- *Ocean Dark* by [Gavin Siu][] + +Notable changes: + +- [Minh Nguyễn][] added more built-ins to Objective C. +- [Jeremy Hull][] fixed corner cases in C++ preprocessor directives and Diff + comments. +- [Victor Zhou][] added support for digit separators in C++ numbers. + +[Gavin Siu]: https://github.com/gavsiu +[Builder's Brewery]: https://github.com/buildersbrewery +[Victor Zhou]: https://github.com/OiCMudkips +[Sergey Bronnikov]: https://github.com/ligurio +[Joe Eli McIlvain]: https://github.com/jemc +[Stephan Boyer]: https://github.com/boyers +[Jacob Childress]: https://github.com/braveulysses +[Minh Nguyễn]: https://github.com/1ec5 +[Jeremy Hull]: https://github.com/sourrust + + +## Version 9.4.0 + +New languages: + +- *PureBASIC* by [Tristano Ajmone][] +- *BNF* by [Oleg Efimov][] +- *Ada* by [Lars Schulna][] + +New styles: + +- *PureBASIC* by [Tristano Ajmone][] + +Improvements to existing languages and styles: + +- We now highlight function declarations in Go. +- [Taisuke Fujimoto][] contributed very convoluted rules for raw and + interpolated strings in C#. +- [Boone Severson][] updated Verilog to comply with IEEE 1800-2012 + SystemVerilog. +- [Victor Zhou][] improved rules for comments and strings in PowerShell files. +- [Janis Voigtländer][] updated the definition of Elm to version 0.17 of the + languages. Elm is now featured on the front page of . +- Special variable `$this` is highlighted as a keyword in PHP. +- `usize` and `isize` are now highlighted in Rust. +- Fixed labels and directives in x86 assembler. + +[Tristano Ajmone]: https://github.com/tajmone +[Taisuke Fujimoto]: https://github.com/temp-impl +[Oleg Efimov]: https://github.com/Sannis +[Boone Severson]: https://github.com/BooneJS +[Victor Zhou]: https://github.com/OiCMudkips +[Lars Schulna]: https://github.com/captain-hanuta +[Janis Voigtländer]: https://github.com/jvoigtlaender + + +## Version 9.3.0 + +New languages: + +- *Tagger Script* by [Philipp Wolfer][] +- *MoonScript* by [Billy Quith][] + +New styles: + +- *xt256* by [Herbert Shin][] + +Improvements to existing languages and styles: + +- More robust handling of unquoted HTML tag attributes +- Relevance tuning for QML which was unnecessary eager at seizing other + languages' code +- Improve GAMS language parsing +- Fixed a bunch of bugs around selectors in Less +- Kotlin's got a new definition for annotations, updated keywords and other + minor improvements +- Added `move` to Rust keywords +- Markdown now recognizes \`\`\`-fenced code blocks +- Improved detection of function declarations in C++ and C# + +[Philipp Wolfer]: https://github.com/phw +[Billy Quith]: https://github.com/billyquith +[Herbert Shin]: https://github.com/initbar + + +## Version 9.2.0 + +New languages: + +- *QML* by [John Foster][] +- *HTMLBars* by [Michael Johnston][] +- *CSP* by [Taras][] +- *Maxima* by [Robert Dodier][] + +New styles: + +- *Gruvbox* by [Qeole][] +- *Dracula* by [Denis Ciccale][] + +Improvements to existing languages and styles: + +- We now correctly handle JSX with arbitrary node tree depth. +- Argument list for `(lambda)` in Scheme is no longer highlighted as a function + call. +- Stylus syntax doesn't break on valid CSS. +- More correct handling of comments and strings and other improvements for + VimScript. +- More subtle work on the default style. +- We now use anonymous modules for AMD. +- `macro_rules!` is now recognized as a built-in in Rust. + +[John Foster]: https://github.com/jf990 +[Qeole]: https://github.com/Qeole +[Denis Ciccale]: https://github.com/dciccale +[Michael Johnston]: https://github.com/lastobelus +[Taras]: https://github.com/oxdef +[Robert Dodier]: https://github.com/robert-dodier + + +## Version 9.1.0 + +New languages: + +- *Stan* by [Brendan Rocks][] +- *BASIC* by [Raphaël Assénat][] +- *GAUSS* by [Matt Evans][] +- *DTS* by [Martin Braun][] +- *Arduino* by [Stefania Mellai][] + +New Styles: + +- *Arduino Light* by [Stefania Mellai][] + +Improvements to existing languages and styles: + +- Handle return type annotations in Python +- Allow shebang headers in Javascript +- Support strings in Rust meta +- Recognize `struct` as a class-level definition in Rust +- Recognize b-prefixed chars and strings in Rust +- Better numbers handling in Verilog + +[Brendan Rocks]: http://brendanrocks.com +[Raphaël Assénat]: https://github.com/raphnet +[Matt Evans]: https://github.com/matthewevans +[Martin Braun]: https://github.com/mbr0wn +[Stefania Mellai]: https://github.com/smellai + + +## Version 9.0.0 + +The new major version brings a reworked styling system. Highlight.js now defines +a limited set of highlightable classes giving a consistent result across all the +styles and languages. You can read a more detailed explanation and background in +the [tracking issue][#348] that started this long process back in May. + +This change is backwards incompatible for those who uses highlight.js with a +custom stylesheet. The [new style guide][sg] explains how to write styles +in this new world. + +Bundled themes have also suffered a significant amount of improvements and may +look different in places, but all the things now consistent and make more sense. +Among others, the Default style has got a refresh and will probably be tweaked +some more in next releases. Please do give your feedback in our +[issue tracker][issues]. + +New languages in this release: + +- *Caché Object Script* by [Nikita Savchenko][] +- *YAML* by [Stefan Wienert][] +- *MIPS Assembler* by [Nebuleon Fumika][] +- *HSP* by [prince][] + +Improvements to existing languages and styles: + +- ECMAScript 6 modules import now do not require closing semicolon. +- ECMAScript 6 classes constructors now highlighted. +- Template string support for Typescript, as for ECMAScript 6. +- Scala case classes params highlight fixed. +- Built-in names introduced in Julia v0.4 added by [Kenta Sato][]. +- Refreshed Default style. + +Other notable changes: + +- [Web workers support][webworkers] added bu [Jan Kühle][]. +- We now have tests for compressed browser builds as well. +- The building tool chain has been switched to node.js 4.x. and is now + shamelessly uses ES6 features all over the place, courtesy of [Jeremy Hull][]. +- License added to non-compressed browser build. + +[Jan Kühle]: https://github.com/frigus02 +[Stefan Wienert]: https://github.com/zealot128 +[Kenta Sato]: https://github.com/bicycle1885 +[Nikita Savchenko]: https://github.com/ZitRos +[webworkers]: https://github.com/isagalaev/highlight.js#web-workers +[Jeremy Hull]: https://github.com/sourrust +[#348]: https://github.com/isagalaev/highlight.js/issues/348 +[sg]: http://highlightjs.readthedocs.org/en/latest/style-guide.html +[issues]: https://github.com/isagalaev/highlight.js/issues +[Nebuleon Fumika]: https://github.com/Nebuleon +[prince]: https://github.com/prince-0203 + + +## Version 8.9.1 + +Some last-minute changes reverted due to strange bug with minified browser build: + +- Scala case classes params highlight fixed +- ECMAScript 6 modules import now do not require closing semicolon +- ECMAScript 6 classes constructors now highlighted +- Template string support for Typescript, as for ECMAScript 6 +- License added to not minified browser build + + +## Version 8.9.0 + +New languages: + +- *crmsh* by [Kristoffer Gronlund][] +- *SQF* by [Soren Enevoldsen][] + +[Kristoffer Gronlund]: https://github.com/krig +[Soren Enevoldsen]: https://github.com/senevoldsen90 + +Notable fixes and improvements to existing languages: + +- Added `abstract` and `namespace` keywords to TypeScript by [Daniel Rosenwasser][] +- Added `label` support to Dockerfile by [Ladislav Prskavec][] +- Crystal highlighting improved by [Tsuyusato Kitsune][] +- Missing Swift keywords added by [Nate Cook][] +- Improve detection of C block comments +- ~~Scala case classes params highlight fixed~~ +- ~~ECMAScript 6 modules import now do not require closing semicolon~~ +- ~~ECMAScript 6 classes constructors now highlighted~~ +- ~~Template string support for Typescript, as for ECMAScript 6~~ + +Other notable changes: + +- ~~License added to not minified browser build~~ + +[Kristoffer Gronlund]: https://github.com/krig +[Søren Enevoldsen]: https://github.com/senevoldsen90 +[Daniel Rosenwasser]: https://github.com/DanielRosenwasser +[Ladislav Prskavec]: https://github.com/abtris +[Tsuyusato Kitsune]: https://github.com/MakeNowJust +[Nate Cook]: https://github.com/natecook1000 + + +## Version 8.8.0 + +New languages: + +- *Golo* by [Philippe Charrière][] +- *GAMS* by [Stefan Bechert][] +- *IRPF90* by [Anthony Scemama][] +- *Access logs* by [Oleg Efimov][] +- *Crystal* by [Tsuyusato Kitsune][] + +Notable fixes and improvements to existing languages: + +- JavaScript highlighting no longer fails with ES6 default parameters +- Added keywords `async` and `await` to Python +- PHP heredoc support improved +- Allow preprocessor directives within C++ functions + +Other notable changes: + +- Change versions to X.Y.Z SemVer-compatible format +- Added ability to build all targets at once + +[Philippe Charrière]: https://github.com/k33g +[Stefan Bechert]: https://github.com/b-pos465 +[Anthony Scemama]: https://github.com/scemama +[Oleg Efimov]: https://github.com/Sannis +[Tsuyusato Kitsune]: https://github.com/MakeNowJust + + +## Version 8.7 + +New languages: + +- *Zephir* by [Oleg Efimov][] +- *Elm* by [Janis Voigtländer][] +- *XQuery* by [Dirk Kirsten][] +- *Mojolicious* by [Dotan Dimet][] +- *AutoIt* by Manh Tuan from [J2TeaM][] +- *Toml* (ini extension) by [Guillaume Gomez][] + +New styles: + +- *Hopscotch* by [Jan T. Sott][] +- *Grayscale* by [MY Sun][] + +Notable fixes and improvements to existing languages: + +- Fix encoding of images when copied over in certain builds +- Fix incorrect highlighting of the word "bug" in comments +- Treat decorators different from matrix multiplication in Python +- Fix traits inheritance highlighting in Rust +- Fix incorrect document +- Oracle keywords added to SQL language definition by [Vadimtro][] +- Postgres keywords added to SQL language definition by [Benjamin Auder][] +- Fix registers in x86asm being highlighted as a hex number +- Fix highlighting for numbers with a leading decimal point +- Correctly highlight numbers and strings inside of C/C++ macros +- C/C++ functions now support pointer, reference, and move returns + +[Oleg Efimov]: https://github.com/Sannis +[Guillaume Gomez]: https://github.com/GuillaumeGomez +[Janis Voigtländer]: https://github.com/jvoigtlaender +[Jan T. Sott]: https://github.com/idleberg +[Dirk Kirsten]: https://github.com/dirkk +[MY Sun]: https://github.com/simonmysun +[Vadimtro]: https://github.com/Vadimtro +[Benjamin Auder]: https://github.com/ghost +[Dotan Dimet]: https://github.com/dotandimet +[J2TeaM]: https://github.com/J2TeaM + + +## Version 8.6 + +New languages: + +- *C/AL* by [Kenneth Fuglsang][] +- *DNS zone file* by [Tim Schumacher][] +- *Ceylon* by [Lucas Werkmeister][] +- *OpenSCAD* by [Dan Panzarella][] +- *Inform7* by [Bruno Dias][] +- *armasm* by [Dan Panzarella][] +- *TP* by [Jay Strybis][] + +New styles: + +- *Atelier Cave*, *Atelier Estuary*, + *Atelier Plateau* and *Atelier Savanna* by [Bram de Haan][] +- *Github Gist* by [Louis Barranqueiro][] + +Notable fixes and improvements to existing languages: + +- Multi-line raw strings from C++11 are now supported +- Fix class names with dashes in HAML +- The `async` keyword from ES6/7 is now supported +- TypeScript functions handle type and parameter complexity better +- We unified phpdoc/javadoc/yardoc etc modes across all languages +- CSS .class selectors relevance was dropped to prevent wrong language detection +- Images is now included to CDN build +- Release process is now automated + +[Bram de Haan]: https://github.com/atelierbram +[Kenneth Fuglsang]: https://github.com/kfuglsang +[Louis Barranqueiro]: https://github.com/LouisBarranqueiro +[Tim Schumacher]: https://github.com/enko +[Lucas Werkmeister]: https://github.com/lucaswerkmeister +[Dan Panzarella]: https://github.com/pzl +[Bruno Dias]: https://github.com/sequitur +[Jay Strybis]: https://github.com/unreal + + +## Version 8.5 + +New languages: + +- *pf.conf* by [Peter Piwowarski][] +- *Julia* by [Kenta Sato][] +- *Prolog* by [Raivo Laanemets][] +- *Docker* by [Alexis Hénaut][] +- *Fortran* by [Anthony Scemama][] and [Thomas Applencourt][] +- *Kotlin* by [Sergey Mashkov][] + +New styles: + +- *Agate* by [Taufik Nurrohman][] +- *Darcula* by [JetBrains][] +- *Atelier Sulphurpool* by [Bram de Haan][] +- *Android Studio* by [Pedro Oliveira][] + +Notable fixes and improvements to existing languages: + +- ES6 features in JavaScript are better supported now by [Gu Yiling][]. +- Swift now recognizes body-less method definitions. +- Single expression functions `def foo, do: ... ` now work in Elixir. +- More uniform detection of built-in classes in Objective C. +- Fixes for number literals and processor directives in Rust. +- HTML ` + ``` + +- `tabReplace` and `useBR` that were used in different places are also unified + into the global options object and are to be set using `configure(options)`. + This function is documented in our [API docs][]. Also note that these + parameters are gone from `highlightBlock` and `fixMarkup` which are now also + rely on `configure`. + +- We removed public-facing (though undocumented) object `hljs.LANGUAGES` which + was used to register languages with the library in favor of two new methods: + `registerLanguage` and `getLanguage`. Both are documented in our [API docs][]. + +- Result returned from `highlight` and `highlightAuto` no longer contains two + separate attributes contributing to relevance score, `relevance` and + `keyword_count`. They are now unified in `relevance`. + +Another technically compatible change that nonetheless might need attention: + +- The structure of the NPM package was refactored, so if you had installed it + locally, you'll have to update your paths. The usual `require('highlight.js')` + works as before. This is contributed by [Dmitry Smolin][]. + +New features: + +- Languages now can be recognized by multiple names like "js" for JavaScript or + "html" for, well, HTML (which earlier insisted on calling it "xml"). These + aliases can be specified in the class attribute of the code container in your + HTML as well as in various API calls. For now there are only a few very common + aliases but we'll expand it in the future. All of them are listed in the + [class reference][cr]. + +- Language detection can now be restricted to a subset of languages relevant in + a given context — a web page or even a single highlighting call. This is + especially useful for node.js build that includes all the known languages. + Another example is a StackOverflow-style site where users specify languages + as tags rather than in the markdown-formatted code snippets. This is + documented in the [API reference][] (see methods `highlightAuto` and + `configure`). + +- Language definition syntax streamlined with [variants][] and + [beginKeywords][]. + +New languages and styles: + +- *Oxygene* by [Carlo Kok][] +- *Mathematica* by [Daniel Kvasnička][] +- *Autohotkey* by [Seongwon Lee][] +- *Atelier* family of styles in 10 variants by [Bram de Haan][] +- *Paraíso* styles by [Jan T. Sott][] + +Miscellaneous improvements: + +- Highlighting `=>` prompts in Clojure. +- [Jeremy Hull][] fixed a lot of styles for consistency. +- Finally, highlighting PHP and HTML [mixed in peculiar ways][php-html]. +- Objective C and C# now properly highlight titles in method definition. +- Big overhaul of relevance counting for a number of languages. Please do report + bugs about mis-detection of non-trivial code snippets! + +[API reference]: http://highlightjs.readthedocs.org/en/latest/api.html + +[cr]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html +[api docs]: http://highlightjs.readthedocs.org/en/latest/api.html +[variants]: https://groups.google.com/d/topic/highlightjs/VoGC9-1p5vk/discussion +[beginKeywords]: https://github.com/isagalaev/highlight.js/commit/6c7fdea002eb3949577a85b3f7930137c7c3038d +[php-html]: https://twitter.com/highlightjs/status/408890903017689088 + +[Carlo Kok]: https://github.com/carlokok +[Bram de Haan]: https://github.com/atelierbram +[Daniel Kvasnička]: https://github.com/dkvasnicka +[Dmitry Smolin]: https://github.com/dimsmol +[Jeremy Hull]: https://github.com/sourrust +[Seongwon Lee]: https://github.com/dlimpid +[Jan T. Sott]: https://github.com/idleberg + + +## Version 7.5 + +A catch-up release dealing with some of the accumulated contributions. This one +is probably will be the last before the 8.0 which will be slightly backwards +incompatible regarding some advanced use-cases. + +One outstanding change in this version is the addition of 6 languages to the +[hosted script][d]: Markdown, ObjectiveC, CoffeeScript, Apache, Nginx and +Makefile. It now weighs about 6K more but we're going to keep it under 30K. + +New languages: + +- OCaml by [Mehdi Dogguy][mehdid] and [Nicolas Braud-Santoni][nbraud] +- [LiveCode Server][lcs] by [Ralf Bitter][revig] +- Scilab by [Sylvestre Ledru][sylvestre] +- basic support for Makefile by [Ivan Sagalaev][isagalaev] + +Improvements: + +- Ruby's got support for characters like `?A`, `?1`, `?\012` etc. and `%r{..}` + regexps. +- Clojure now allows a function call in the beginning of s-expressions + `(($filter "myCount") (arr 1 2 3 4 5))`. +- Haskell's got new keywords and now recognizes more things like pragmas, + preprocessors, modules, containers, FFIs etc. Thanks to [Zena Treep][treep] + for the implementation and to [Jeremy Hull][sourrust] for guiding it. +- Miscellaneous fixes in PHP, Brainfuck, SCSS, Asciidoc, CMake, Python and F#. + +[mehdid]: https://github.com/mehdid +[nbraud]: https://github.com/nbraud +[revig]: https://github.com/revig +[lcs]: http://livecode.com/developers/guides/server/ +[sylvestre]: https://github.com/sylvestre +[isagalaev]: https://github.com/isagalaev +[treep]: https://github.com/treep +[sourrust]: https://github.com/sourrust +[d]: http://highlightjs.org/download/ + + +## New core developers + +The latest long period of almost complete inactivity in the project coincided +with growing interest to it led to a decision that now seems completely obvious: +we need more core developers. + +So without further ado let me welcome to the core team two long-time +contributors: [Jeremy Hull][] and [Oleg +Efimov][]. + +Hope now we'll be able to work through stuff faster! + +P.S. The historical commit is [here][1] for the record. + +[Jeremy Hull]: https://github.com/sourrust +[Oleg Efimov]: https://github.com/sannis +[1]: https://github.com/isagalaev/highlight.js/commit/f3056941bda56d2b72276b97bc0dd5f230f2473f + + +## Version 7.4 + +This long overdue version is a snapshot of the current source tree with all the +changes that happened during the past year. Sorry for taking so long! + +Along with the changes in code highlight.js has finally got its new home at +, moving from its cradle on Software Maniacs which it +outgrew a long time ago. Be sure to report any bugs about the site to +. + +On to what's new… + +New languages: + +- Handlebars templates by [Robin Ward][] +- Oracle Rules Language by [Jason Jacobson][] +- F# by [Joans Follesø][] +- AsciiDoc and Haml by [Dan Allen][] +- Lasso by [Eric Knibbe][] +- SCSS by [Kurt Emch][] +- VB.NET by [Poren Chiang][] +- Mizar by [Kelley van Evert][] + +[Robin Ward]: https://github.com/eviltrout +[Jason Jacobson]: https://github.com/jayce7 +[Joans Follesø]: https://github.com/follesoe +[Dan Allen]: https://github.com/mojavelinux +[Eric Knibbe]: https://github.com/EricFromCanada +[Kurt Emch]: https://github.com/kemch +[Poren Chiang]: https://github.com/rschiang +[Kelley van Evert]: https://github.com/kelleyvanevert + +New style themes: + +- Monokai Sublime by [noformnocontent][] +- Railscasts by [Damien White][] +- Obsidian by [Alexander Marenin][] +- Docco by [Simon Madine][] +- Mono Blue by [Ivan Sagalaev][] (uses a single color hue for everything) +- Foundation by [Dan Allen][] + +[noformnocontent]: http://nn.mit-license.org/ +[Damien White]: https://github.com/visoft +[Alexander Marenin]: https://github.com/ioncreature +[Simon Madine]: https://github.com/thingsinjars +[Ivan Sagalaev]: https://github.com/isagalaev + +Other notable changes: + +- Corrected many corner cases in CSS. +- Dropped Python 2 version of the build tool. +- Implemented building for the AMD format. +- Updated Rust keywords (thanks to [Dmitry Medvinsky][]). +- Literal regexes can now be used in language definitions. +- CoffeeScript highlighting is now significantly more robust and rich due to + input from [Cédric Néhémie][]. + +[Dmitry Medvinsky]: https://github.com/dmedvinsky +[Cédric Néhémie]: https://github.com/abe33 + + +## Version 7.3 + +- Since this version highlight.js no longer works in IE version 8 and older. + It's made it possible to reduce the library size and dramatically improve code + readability and made it easier to maintain. Time to go forward! + +- New languages: AppleScript (by [Nathan Grigg][ng] and [Dr. Drang][dd]) and + Brainfuck (by [Evgeny Stepanischev][bolk]). + +- Improvements to existing languages: + + - interpreter prompt in Python (`>>>` and `...`) + - @-properties and classes in CoffeeScript + - E4X in JavaScript (by [Oleg Efimov][oe]) + - new keywords in Perl (by [Kirk Kimmel][kk]) + - big Ruby syntax update (by [Vasily Polovnyov][vast]) + - small fixes in Bash + +- Also Oleg Efimov did a great job of moving all the docs for language and style + developers and contributors from the old wiki under the source code in the + "docs" directory. Now these docs are nicely presented at + . + +[ng]: https://github.com/nathan11g +[dd]: https://github.com/drdrang +[bolk]: https://github.com/bolknote +[oe]: https://github.com/Sannis +[kk]: https://github.com/kimmel +[vast]: https://github.com/vast + + +## Version 7.2 + +A regular bug-fix release without any significant new features. Enjoy! + + +## Version 7.1 + +A Summer crop: + +- [Marc Fornos][mf] made the definition for Clojure along with the matching + style Rainbow (which, of course, works for other languages too). +- CoffeeScript support continues to improve getting support for regular + expressions. +- Yoshihide Jimbo ported to highlight.js [five Tomorrow styles][tm] from the + [project by Chris Kempson][tm0]. +- Thanks to [Casey Duncun][cd] the library can now be built in the popular + [AMD format][amd]. +- And last but not least, we've got a fair number of correctness and consistency + fixes, including a pretty significant refactoring of Ruby. + +[mf]: https://github.com/mfornos +[tm]: http://jmblog.github.com/color-themes-for-highlightjs/ +[tm0]: https://github.com/ChrisKempson/Tomorrow-Theme +[cd]: https://github.com/caseman +[amd]: http://requirejs.org/docs/whyamd.html + + +## Version 7.0 + +The reason for the new major version update is a global change of keyword syntax +which resulted in the library getting smaller once again. For example, the +hosted build is 2K less than at the previous version while supporting two new +languages. + +Notable changes: + +- The library now works not only in a browser but also with [node.js][]. It is + installable with `npm install highlight.js`. [API][] docs are available on our + wiki. + +- The new unique feature (apparently) among syntax highlighters is highlighting + *HTTP* headers and an arbitrary language in the request body. The most useful + languages here are *XML* and *JSON* both of which highlight.js does support. + Here's [the detailed post][p] about the feature. + +- Two new style themes: a dark "south" *[Pojoaque][]* by Jason Tate and an + emulation of*XCode* IDE by [Angel Olloqui][ao]. + +- Three new languages: *D* by [Aleksandar Ružičić][ar], *R* by [Joe Cheng][jc] + and *GLSL* by [Sergey Tikhomirov][st]. + +- *Nginx* syntax has become a million times smaller and more universal thanks to + remaking it in a more generic manner that doesn't require listing all the + directives in the known universe. + +- Function titles are now highlighted in *PHP*. + +- *Haskell* and *VHDL* were significantly reworked to be more rich and correct + by their respective maintainers [Jeremy Hull][sr] and [Igor Kalnitsky][ik]. + +And last but not least, many bugs have been fixed around correctness and +language detection. + +Overall highlight.js currently supports 51 languages and 20 style themes. + +[node.js]: http://nodejs.org/ +[api]: http://softwaremaniacs.org/wiki/doku.php/highlight.js:api +[p]: http://softwaremaniacs.org/blog/2012/05/10/http-and-json-in-highlight-js/en/ +[pojoaque]: http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html +[ao]: https://github.com/angelolloqui +[ar]: https://github.com/raleksandar +[jc]: https://github.com/jcheng5 +[st]: https://github.com/tikhomirov +[sr]: https://github.com/sourrust +[ik]: https://github.com/ikalnitsky + + +## Version 6.2 + +A lot of things happened in highlight.js since the last version! We've got nine +new contributors, the discussion group came alive, and the main branch on GitHub +now counts more than 350 followers. Here are most significant results coming +from all this activity: + +- 5 (five!) new languages: Rust, ActionScript, CoffeeScript, MatLab and + experimental support for markdown. Thanks go to [Andrey Vlasovskikh][av], + [Alexander Myadzel][am], [Dmytrii Nagirniak][dn], [Oleg Efimov][oe], [Denis + Bardadym][db] and [John Crepezzi][jc]. + +- 2 new style themes: Monokai by [Luigi Maselli][lm] and stylistic imitation of + another well-known highlighter Google Code Prettify by [Aahan Krish][ak]. + +- A vast number of [correctness fixes and code refactorings][log], mostly made + by [Oleg Efimov][oe] and [Evgeny Stepanischev][es]. + +[av]: https://github.com/vlasovskikh +[am]: https://github.com/myadzel +[dn]: https://github.com/dnagir +[oe]: https://github.com/Sannis +[db]: https://github.com/btd +[jc]: https://github.com/seejohnrun +[lm]: http://grigio.org/ +[ak]: https://github.com/geekpanth3r +[es]: https://github.com/bolknote +[log]: https://github.com/isagalaev/highlight.js/commits/ + + +## Version 6.1 — Solarized + +[Jeremy Hull][jh] has implemented my dream feature — a port of [Solarized][] +style theme famous for being based on the intricate color theory to achieve +correct contrast and color perception. It is now available for highlight.js in +both variants — light and dark. + +This version also adds a new original style Arta. Its author pumbur maintains a +[heavily modified fork of highlight.js][pb] on GitHub. + +[jh]: https://github.com/sourrust +[solarized]: http://ethanschoonover.com/solarized +[pb]: https://github.com/pumbur/highlight.js + + +## Version 6.0 + +New major version of the highlighter has been built on a significantly +refactored syntax. Due to this it's even smaller than the previous one while +supporting more languages! + +New languages are: + +- Haskell by [Jeremy Hull][sourrust] +- Erlang in two varieties — module and REPL — made collectively by [Nikolay + Zakharov][desh], [Dmitry Kovega][arhibot] and [Sergey Ignatov][ignatov] +- Objective C by [Valerii Hiora][vhbit] +- Vala by [Antono Vasiljev][antono] +- Go by [Stephan Kountso][steplg] + +[sourrust]: https://github.com/sourrust +[desh]: http://desh.su/ +[arhibot]: https://github.com/arhibot +[ignatov]: https://github.com/ignatov +[vhbit]: https://github.com/vhbit +[antono]: https://github.com/antono +[steplg]: https://github.com/steplg + +Also this version is marginally faster and fixes a number of small long-standing +bugs. + +Developer overview of the new language syntax is available in a [blog post about +recent beta release][beta]. + +[beta]: http://softwaremaniacs.org/blog/2011/04/25/highlight-js-60-beta/en/ + +P.S. New version is not yet available on a Yandex CDN, so for now you have to +download [your own copy][d]. + +[d]: /soft/highlight/en/download/ + + +## Version 5.14 + +Fixed bugs in HTML/XML detection and relevance introduced in previous +refactoring. + +Also test.html now shows the second best result of language detection by +relevance. + + +## Version 5.13 + +Past weekend began with a couple of simple additions for existing languages but +ended up in a big code refactoring bringing along nice improvements for language +developers. + +### For users + +- Description of C++ has got new keywords from the upcoming [C++ 0x][] standard. +- Description of HTML has got new tags from [HTML 5][]. +- CSS-styles have been unified to use consistent padding and also have lost + pop-outs with names of detected languages. +- [Igor Kalnitsky][ik] has sent two new language descriptions: CMake & VHDL. + +This makes total number of languages supported by highlight.js to reach 35. + +Bug fixes: + +- Custom classes on `
` tags are not being overridden anymore
+- More correct highlighting of code blocks inside non-`
` containers:
+  highlighter now doesn't insist on replacing them with its own container and
+  just replaces the contents.
+- Small fixes in browser compatibility and heuristics.
+
+[c++ 0x]: http://ru.wikipedia.org/wiki/C%2B%2B0x
+[html 5]: http://en.wikipedia.org/wiki/HTML5
+[ik]: http://kalnitsky.org.ua/
+
+### For developers
+
+The most significant change is the ability to include language submodes right
+under `contains` instead of defining explicit named submodes in the main array:
+
+    contains: [
+      'string',
+      'number',
+      {begin: '\\n', end: hljs.IMMEDIATE_RE}
+    ]
+
+This is useful for auxiliary modes needed only in one place to define parsing.
+Note that such modes often don't have `className` and hence won't generate a
+separate `` in the resulting markup. This is similar in effect to
+`noMarkup: true`. All existing languages have been refactored accordingly.
+
+Test file test.html has at last become a real test. Now it not only puts the
+detected language name under the code snippet but also tests if it matches the
+expected one. Test summary is displayed right above all language snippets.
+
+
+## CDN
+
+Fine people at [Yandex][] agreed to host highlight.js on their big fast servers.
+[Link up][l]!
+
+[yandex]: http://yandex.com/
+[l]: http://softwaremaniacs.org/soft/highlight/en/download/
+
+
+## Version 5.10 — "Paris".
+
+Though I'm on a vacation in Paris, I decided to release a new version with a
+couple of small fixes:
+
+- Tomas Vitvar discovered that TAB replacement doesn't always work when used
+  with custom markup in code
+- SQL parsing is even more rigid now and doesn't step over SmallTalk in tests
+
+
+## Version 5.9
+
+A long-awaited version is finally released.
+
+New languages:
+
+- Andrew Fedorov made a definition for Lua
+- a long-time highlight.js contributor [Peter Leonov][pl] made a definition for
+  Nginx config
+- [Vladimir Moskva][vm] made a definition for TeX
+
+[pl]: http://kung-fu-tzu.ru/
+[vm]: http://fulc.ru/
+
+Fixes for existing languages:
+
+- [Loren Segal][ls] reworked the Ruby definition and added highlighting for
+  [YARD][] inline documentation
+- the definition of SQL has become more solid and now it shouldn't be overly
+  greedy when it comes to language detection
+
+[ls]: http://gnuu.org/
+[yard]: http://yardoc.org/
+
+The highlighter has become more usable as a library allowing to do highlighting
+from initialization code of JS frameworks and in ajax methods (see.
+readme.eng.txt).
+
+Also this version drops support for the [WordPress][wp] plugin. Everyone is
+welcome to [pick up its maintenance][p] if needed.
+
+[wp]: http://wordpress.org/
+[p]: http://bazaar.launchpad.net/~isagalaev/+junk/highlight/annotate/342/src/wp_highlight.js.php
+
+
+## Version 5.8
+
+- Jan Berkel has contributed a definition for Scala. +1 to hotness!
+- All CSS-styles are rewritten to work only inside `
` tags to avoid
+  conflicts with host site styles.
+
+
+## Version 5.7.
+
+Fixed escaping of quotes in VBScript strings.
+
+
+## Version 5.5
+
+This version brings a small change: now .ini-files allow digits, underscores and
+square brackets in key names.
+
+
+## Version 5.4
+
+Fixed small but upsetting bug in the packer which caused incorrect highlighting
+of explicitly specified languages. Thanks to Andrew Fedorov for precise
+diagnostics!
+
+
+## Version 5.3
+
+The version to fulfil old promises.
+
+The most significant change is that highlight.js now preserves custom user
+markup in code along with its own highlighting markup. This means that now it's
+possible to use, say, links in code. Thanks to [Vladimir Dolzhenko][vd] for the
+[initial proposal][1] and for making a proof-of-concept patch.
+
+Also in this version:
+
+- [Vasily Polovnyov][vp] has sent a GitHub-like style and has implemented
+  support for CSS @-rules and Ruby symbols.
+- Yura Zaripov has sent two styles: Brown Paper and School Book.
+- Oleg Volchkov has sent a definition for [Parser 3][p3].
+
+[1]: http://softwaremaniacs.org/forum/highlightjs/6612/
+[p3]: http://www.parser.ru/
+[vp]: http://vasily.polovnyov.ru/
+[vd]: http://dolzhenko.blogspot.com/
+
+
+## Version 5.2
+
+- at last it's possible to replace indentation TABs with something sensible
+  (e.g. 2 or 4 spaces)
+- new keywords and built-ins for 1C by Sergey Baranov
+- a couple of small fixes to Apache highlighting
+
+
+## Version 5.1
+
+This is one of those nice version consisting entirely of new and shiny
+contributions!
+
+- [Vladimir Ermakov][vooon] created highlighting for AVR Assembler
+- [Ruslan Keba][rukeba] created highlighting for Apache config file. Also his
+  original visual style for it is now available for all highlight.js languages
+  under the name "Magula".
+- [Shuen-Huei Guan][drake] (aka Drake) sent new keywords for RenderMan
+  languages. Also thanks go to [Konstantin Evdokimenko][ke] for his advice on
+  the matter.
+
+[vooon]: http://vehq.ru/about/
+[rukeba]: http://rukeba.com/
+[drake]: http://drakeguan.org/
+[ke]: http://k-evdokimenko.moikrug.ru/
+
+
+## Version 5.0
+
+The main change in the new major version of highlight.js is a mechanism for
+packing several languages along with the library itself into a single compressed
+file. Now sites using several languages will load considerably faster because
+the library won't dynamically include additional files while loading.
+
+Also this version fixes a long-standing bug with Javascript highlighting that
+couldn't distinguish between regular expressions and division operations.
+
+And as usually there were a couple of minor correctness fixes.
+
+Great thanks to all contributors! Keep using highlight.js.
+
+
+## Version 4.3
+
+This version comes with two contributions from [Jason Diamond][jd]:
+
+- language definition for C# (yes! it was a long-missed thing!)
+- Visual Studio-like highlighting style
+
+Plus there are a couple of minor bug fixes for parsing HTML and XML attributes.
+
+[jd]: http://jason.diamond.name/weblog/
+
+
+## Version 4.2
+
+The biggest news is highlighting for Lisp, courtesy of Vasily Polovnyov. It's
+somewhat experimental meaning that for highlighting "keywords" it doesn't use
+any pre-defined set of a Lisp dialect. Instead it tries to highlight first word
+in parentheses wherever it makes sense. I'd like to ask people programming in
+Lisp to confirm if it's a good idea and send feedback to [the forum][f].
+
+Other changes:
+
+- Smalltalk was excluded from DEFAULT_LANGUAGES to save traffic
+- [Vladimir Epifanov][voldmar] has implemented javascript style switcher for
+  test.html
+- comments now allowed inside Ruby function definition
+- [MEL][] language from [Shuen-Huei Guan][drake]
+- whitespace now allowed between `
` and ``
+- better auto-detection of C++ and PHP
+- HTML allows embedded VBScript (`<% .. %>`)
+
+[f]: http://softwaremaniacs.org/forum/highlightjs/
+[voldmar]: http://voldmar.ya.ru/
+[mel]: http://en.wikipedia.org/wiki/Maya_Embedded_Language
+[drake]: http://drakeguan.org/
+
+
+## Version 4.1
+
+Languages:
+
+- Bash from Vah
+- DOS bat-files from Alexander Makarov (Sam)
+- Diff files from Vasily Polovnyov
+- Ini files from myself though initial idea was from Sam
+
+Styles:
+
+- Zenburn from Vladimir Epifanov, this is an imitation of a
+  [well-known theme for Vim][zenburn].
+- Ascetic from myself, as a realization of ideals of non-flashy highlighting:
+  just one color in only three gradations :-)
+
+In other news. [One small bug][bug] was fixed, built-in keywords were added for
+Python and C++ which improved auto-detection for the latter (it was shame that
+[my wife's blog][alenacpp] had issues with it from time to time). And lastly
+thanks go to Sam for getting rid of my stylistic comments in code that were
+getting in the way of [JSMin][].
+
+[zenburn]: http://en.wikipedia.org/wiki/Zenburn
+[alenacpp]: http://alenacpp.blogspot.com/
+[bug]: http://softwaremaniacs.org/forum/viewtopic.php?id=1823
+[jsmin]: http://code.google.com/p/jsmin-php/
+
+
+## Version 4.0
+
+New major version is a result of vast refactoring and of many contributions.
+
+Visible new features:
+
+- Highlighting of embedded languages. Currently is implemented highlighting of
+  Javascript and CSS inside HTML.
+- Bundled 5 ready-made style themes!
+
+Invisible new features:
+
+- Highlight.js no longer pollutes global namespace. Only one object and one
+  function for backward compatibility.
+- Performance is further increased by about 15%.
+
+Changing of a major version number caused by a new format of language definition
+files. If you use some third-party language files they should be updated.
+
+
+## Version 3.5
+
+A very nice version in my opinion fixing a number of small bugs and slightly
+increased speed in a couple of corner cases. Thanks to everybody who reports
+bugs in he [forum][f] and by email!
+
+There is also a new language — XML. A custom XML formerly was detected as HTML
+and didn't highlight custom tags. In this version I tried to make custom XML to
+be detected and highlighted by its own rules. Which by the way include such
+things as CDATA sections and processing instructions (``).
+
+[f]: http://softwaremaniacs.org/forum/viewforum.php?id=6
+
+
+## Version 3.3
+
+[Vladimir Gubarkov][xonix] has provided an interesting and useful addition.
+File export.html contains a little program that shows and allows to copy and
+paste an HTML code generated by the highlighter for any code snippet. This can
+be useful in situations when one can't use the script itself on a site.
+
+
+[xonix]: http://xonixx.blogspot.com/
+
+
+## Version 3.2 consists completely of contributions:
+
+- Vladimir Gubarkov has described SmallTalk
+- Yuri Ivanov has described 1C
+- Peter Leonov has packaged the highlighter as a Firefox extension
+- Vladimir Ermakov has compiled a mod for phpBB
+
+Many thanks to you all!
+
+
+## Version 3.1
+
+Three new languages are available: Django templates, SQL and Axapta. The latter
+two are sent by [Dmitri Roudakov][1]. However I've almost entirely rewrote an
+SQL definition but I'd never started it be it from the ground up :-)
+
+The engine itself has got a long awaited feature of grouping keywords
+("keyword", "built-in function", "literal"). No more hacks!
+
+[1]: http://roudakov.ru/
+
+
+## Version 3.0
+
+It is major mainly because now highlight.js has grown large and has become
+modular. Now when you pass it a list of languages to highlight it will
+dynamically load into a browser only those languages.
+
+Also:
+
+- Konstantin Evdokimenko of [RibKit][] project has created a highlighting for
+  RenderMan Shading Language and RenderMan Interface Bytestream. Yay for more
+  languages!
+- Heuristics for C++ and HTML got better.
+- I've implemented (at last) a correct handling of backslash escapes in C-like
+  languages.
+
+There is also a small backwards incompatible change in the new version. The
+function initHighlighting that was used to initialize highlighting instead of
+initHighlightingOnLoad a long time ago no longer works. If you by chance still
+use it — replace it with the new one.
+
+[RibKit]: http://ribkit.sourceforge.net/
+
+
+## Version 2.9
+
+Highlight.js is a parser, not just a couple of regular expressions. That said
+I'm glad to announce that in the new version 2.9 has support for:
+
+- in-string substitutions for Ruby -- `#{...}`
+- strings from from numeric symbol codes (like #XX) for Delphi
+
+
+## Version 2.8
+
+A maintenance release with more tuned heuristics. Fully backwards compatible.
+
+
+## Version 2.7
+
+- Nikita Ledyaev presents highlighting for VBScript, yay!
+- A couple of bugs with escaping in strings were fixed thanks to Mickle
+- Ongoing tuning of heuristics
+
+Fixed bugs were rather unpleasant so I encourage everyone to upgrade!
+
+
+## Version 2.4
+
+- Peter Leonov provides another improved highlighting for Perl
+- Javascript gets a new kind of keywords — "literals". These are the words
+  "true", "false" and "null"
+
+Also highlight.js homepage now lists sites that use the library. Feel free to
+add your site by [dropping me a message][mail] until I find the time to build a
+submit form.
+
+[mail]: mailto:Maniac@SoftwareManiacs.Org
+
+
+## Version 2.3
+
+This version fixes IE breakage in previous version. My apologies to all who have
+already downloaded that one!
+
+
+## Version 2.2
+
+- added highlighting for Javascript
+- at last fixed parsing of Delphi's escaped apostrophes in strings
+- in Ruby fixed highlighting of keywords 'def' and 'class', same for 'sub' in
+  Perl
+
+
+## Version 2.0
+
+- Ruby support by [Anton Kovalyov][ak]
+- speed increased by orders of magnitude due to new way of parsing
+- this same way allows now correct highlighting of keywords in some tricky
+  places (like keyword "End" at the end of Delphi classes)
+
+[ak]: http://anton.kovalyov.net/
+
+
+## Version 1.0
+
+Version 1.0 of javascript syntax highlighter is released!
+
+It's the first version available with English description. Feel free to post
+your comments and question to [highlight.js forum][forum]. And don't be afraid
+if you find there some fancy Cyrillic letters -- it's for Russian users too :-)
+
+[forum]: http://softwaremaniacs.org/forum/viewforum.php?id=6
diff --git a/highlightjs/asset/LICENSE b/highlightjs/asset/LICENSE
new file mode 100644
index 000000000..422deb735
--- /dev/null
+++ b/highlightjs/asset/LICENSE
@@ -0,0 +1,24 @@
+Copyright (c) 2006, Ivan Sagalaev
+All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of highlight.js nor the names of its contributors 
+      may be used to endorse or promote products derived from this software 
+      without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/highlightjs/asset/README.md b/highlightjs/asset/README.md
new file mode 100644
index 000000000..9f76e6bd5
--- /dev/null
+++ b/highlightjs/asset/README.md
@@ -0,0 +1,150 @@
+# Highlight.js
+
+[![Build Status](https://travis-ci.org/isagalaev/highlight.js.svg?branch=master)](https://travis-ci.org/isagalaev/highlight.js)
+
+Highlight.js is a syntax highlighter written in JavaScript. It works in
+the browser as well as on the server. It works with pretty much any
+markup, doesn’t depend on any framework and has automatic language
+detection.
+
+## Getting Started
+
+The bare minimum for using highlight.js on a web page is linking to the
+library along with one of the styles and calling
+[`initHighlightingOnLoad`][1]:
+
+```html
+
+
+
+```
+
+This will find and highlight code inside of `
` tags; it tries
+to detect the language automatically. If automatic detection doesn’t
+work for you, you can specify the language in the `class` attribute:
+
+```html
+
...
+``` + +The list of supported language classes is available in the [class +reference][2]. Classes can also be prefixed with either `language-` or +`lang-`. + +To disable highlighting altogether use the `nohighlight` class: + +```html +
...
+``` + +## Custom Initialization + +When you need a bit more control over the initialization of +highlight.js, you can use the [`highlightBlock`][3] and [`configure`][4] +functions. This allows you to control *what* to highlight and *when*. + +Here’s an equivalent way to calling [`initHighlightingOnLoad`][1] using +jQuery: + +```javascript +$(document).ready(function() { + $('pre code').each(function(i, block) { + hljs.highlightBlock(block); + }); +}); +``` + +You can use any tags instead of `
` to mark up your code. If
+you don't use a container that preserve line breaks you will need to
+configure highlight.js to use the `
` tag: + +```javascript +hljs.configure({useBR: true}); + +$('div.code').each(function(i, block) { + hljs.highlightBlock(block); +}); +``` + +For other options refer to the documentation for [`configure`][4]. + + +## Web Workers + +You can run highlighting inside a web worker to avoid freezing the browser +window while dealing with very big chunks of code. + +In your main script: + +```javascript +addEventListener('load', function() { + var code = document.querySelector('#code'); + var worker = new Worker('worker.js'); + worker.onmessage = function(event) { code.innerHTML = event.data; } + worker.postMessage(code.textContent); +}) +``` + +In worker.js: + +```javascript +onmessage = function(event) { + importScripts('/highlight.pack.js'); + var result = self.hljs.highlightAuto(event.data); + postMessage(result.value); +} +``` + + +## Getting the Library + +You can get highlight.js as a hosted, or custom-build, browser script or +as a server module. Right out of the box the browser script supports +both AMD and CommonJS, so if you wish you can use RequireJS or +Browserify without having to build from source. The server module also +works perfectly fine with Browserify, but there is the option to use a +build specific to browsers rather than something meant for a server. +Head over to the [download page][5] for all the options. + +**Don't link to GitHub directly.** The library is not supposed to work straight +from the source, it requires building. If none of the pre-packaged options +work for you refer to the [building documentation][6]. + +**The CDN-hosted package doesn't have all the languages.** Otherwise it'd be +too big. If you don't see the language you need in the ["Common" section][5], +it can be added manually: + +```html + +``` + +**On Almond.** You need to use the optimizer to give the module a name. For +example: + +``` +r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js +``` + + +## License + +Highlight.js is released under the BSD License. See [LICENSE][7] file +for details. + +## Links + +The official site for the library is at . + +Further in-depth documentation for the API and other topics is at +. + +Authors and contributors are listed in the [AUTHORS.en.txt][8] file. + +[1]: http://highlightjs.readthedocs.io/en/latest/api.html#inithighlightingonload +[2]: http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html +[3]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightblock-block +[4]: http://highlightjs.readthedocs.io/en/latest/api.html#configure-options +[5]: https://highlightjs.org/download/ +[6]: http://highlightjs.readthedocs.io/en/latest/building-testing.html +[7]: https://github.com/isagalaev/highlight.js/blob/master/LICENSE +[8]: https://github.com/isagalaev/highlight.js/blob/master/AUTHORS.en.txt diff --git a/highlightjs/asset/README.ru.md b/highlightjs/asset/README.ru.md new file mode 100644 index 000000000..ac481d071 --- /dev/null +++ b/highlightjs/asset/README.ru.md @@ -0,0 +1,142 @@ +# Highlight.js + +Highlight.js — это инструмент для подсветки синтаксиса, написанный на JavaScript. Он работает +и в браузере, и на сервере. Он работает с практически любой HTML разметкой, не +зависит от каких-либо фреймворков и умеет автоматически определять язык. + + +## Начало работы + +Минимум, что нужно сделать для использования highlight.js на веб-странице — это +подключить библиотеку, CSS-стили и вызывать [`initHighlightingOnLoad`][1]: + +```html + + + +``` + +Библиотека найдёт и раскрасит код внутри тегов `
`, попытавшись
+автоматически определить язык. Когда автоопределение не срабатывает, можно явно
+указать язык в атрибуте class:
+
+```html
+
...
+``` + +Список поддерживаемых классов языков доступен в [справочнике по классам][2]. +Класс также можно предварить префиксами `language-` или `lang-`. + +Чтобы отключить подсветку для какого-то блока, используйте класс `nohighlight`: + +```html +
...
+``` + +## Инициализация вручную + +Чтобы иметь чуть больше контроля за инициализацией подсветки, вы можете +использовать функции [`highlightBlock`][3] и [`configure`][4]. Таким образом +можно управлять тем, *что* и *когда* подсвечивать. + +Вот пример инициализации, эквивалентной вызову [`initHighlightingOnLoad`][1], но +с использованием jQuery: + +```javascript +$(document).ready(function() { + $('pre code').each(function(i, block) { + hljs.highlightBlock(block); + }); +}); +``` + +Вы можете использовать любые теги разметки вместо `
`. Если
+используете контейнер, не сохраняющий переводы строк, вам нужно сказать
+highlight.js использовать для них тег `
`: + +```javascript +hljs.configure({useBR: true}); + +$('div.code').each(function(i, block) { + hljs.highlightBlock(block); +}); +``` + +Другие опции можно найти в документации функции [`configure`][4]. + + +## Web Workers + +Подсветку можно запустить внутри web worker'а, чтобы окно +браузера не подтормаживало при работе с большими кусками кода. + +В основном скрипте: + +```javascript +addEventListener('load', function() { + var code = document.querySelector('#code'); + var worker = new Worker('worker.js'); + worker.onmessage = function(event) { code.innerHTML = event.data; } + worker.postMessage(code.textContent); +}) +``` + +В worker.js: + +```javascript +onmessage = function(event) { + importScripts('/highlight.pack.js'); + var result = self.hljs.highlightAuto(event.data); + postMessage(result.value); +} +``` + + +## Установка библиотеки + +Highlight.js можно использовать в браузере прямо с CDN хостинга или скачать +индивидуальную сборку, а также установив модуль на сервере. На +[странице загрузки][5] подробно описаны все варианты. + +**Не подключайте GitHub напрямую.** Библиотека не предназначена для +использования в виде исходного кода, а требует отдельной сборки. Если вам не +подходит ни один из готовых вариантов, читайте [документацию по сборке][6]. + +**Файл на CDN содержит не все языки.** Иначе он будет слишком большого размера. +Если нужного вам языка нет в [категории "Common"][5], можно дообавить его +вручную: + +```html + +``` + +**Про Almond.** Нужно задать имя модуля в оптимизаторе, например: + +``` +r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js +``` + + +## Лицензия + +Highlight.js распространяется под лицензией BSD. Подробнее читайте файл +[LICENSE][7]. + + +## Ссылки + +Официальный сайт билиотеки расположен по адресу . + +Более подробная документация по API и другим темам расположена на +. + +Авторы и контрибьюторы перечислены в файле [AUTHORS.ru.txt][8] file. + +[1]: http://highlightjs.readthedocs.io/en/latest/api.html#inithighlightingonload +[2]: http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html +[3]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightblock-block +[4]: http://highlightjs.readthedocs.io/en/latest/api.html#configure-options +[5]: https://highlightjs.org/download/ +[6]: http://highlightjs.readthedocs.io/en/latest/building-testing.html +[7]: https://github.com/isagalaev/highlight.js/blob/master/LICENSE +[8]: https://github.com/isagalaev/highlight.js/blob/master/AUTHORS.ru.txt diff --git a/highlightjs/asset/highlight.pack.js b/highlightjs/asset/highlight.pack.js new file mode 100644 index 000000000..9a5bb0f12 --- /dev/null +++ b/highlightjs/asset/highlight.pack.js @@ -0,0 +1,2 @@ +/*! highlight.js v9.12.0 | BSD3 License | git.io/hljslicense */ +!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/&/g,"&").replace(//g,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=B.exec(o))return w(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||w(i))return i}function o(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset"}function u(e){s+=""}function c(e){("start"===e.event?o:u)(e.node)}for(var l=0,s="",f=[];e.length||r.length;){var g=i();if(s+=n(a.substring(l,g[0].offset)),l=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===l);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return s+n(a.substr(l))}function l(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(n){return o(e,{v:null},n)})),e.cached_variants||e.eW&&[o(e)]||[e]}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var o={},u=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");o[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?u("keyword",a.k):x(a.k).forEach(function(e){u(e,a.k[e])}),a.k=o}a.lR=t(a.l||/\w+/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]),a.c=Array.prototype.concat.apply([],a.c.map(function(e){return l("self"===e?a:e)})),a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var c=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=c.length?t(c.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function l(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function p(e,n,t,r){var a=r?"":I.classPrefix,i='',i+n+o}function h(){var e,t,r,a;if(!E.k)return n(k);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(k);r;)a+=n(k.substring(t,r.index)),e=l(E,r),e?(B+=e[1],a+=p(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(k);return a+n(k.substr(t))}function d(){var e="string"==typeof E.sL;if(e&&!y[E.sL])return n(k);var t=e?f(E.sL,k,!0,x[E.sL]):g(k,E.sL.length?E.sL:void 0);return E.r>0&&(B+=t.r),e&&(x[E.sL]=t.top),p(t.language,t.value,!1,!0)}function b(){L+=null!=E.sL?d():h(),k=""}function v(e){L+=e.cN?p(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(k+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?k+=n:(t.eB&&(k+=n),b(),t.rB||t.eB||(k=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?k+=n:(a.rE||a.eE||(k+=n),b(),a.eE&&(k=n));do E.cN&&(L+=C),E.skip||(B+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,""),a.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"")+'"');return k+=n,n.length||1}var N=w(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,E=i||N,x={},L="";for(R=E;R!==N;R=R.parent)R.cN&&(L=p(R.cN,"",!0)+L);var k="",B=0;try{for(var M,j,O=0;;){if(E.t.lastIndex=O,M=E.t.exec(t),!M)break;j=m(t.substring(O,M.index),M[0]),O=M.index+j}for(m(t.substr(O)),R=E;R.parent;R=R.parent)R.cN&&(L+=C);return{r:B,value:L,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf("Illegal"))return{r:0,value:n(t)};throw T}}function g(e,t){t=t||I.languages||x(y);var r={r:0,value:n(e)},a=r;return t.filter(w).forEach(function(n){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function p(e){return I.tabReplace||I.useBR?e.replace(M,function(e,n){return I.useBR&&"\n"===e?"
":I.tabReplace?n.replace(/\t/g,I.tabReplace):""}):e}function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function d(e){var n,t,r,o,l,s=i(e);a(s)||(I.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):n=e,l=n.textContent,r=s?f(s,l,!0):g(l),t=u(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=c(t,u(o),l)),r.value=p(r.value),e.innerHTML=r.value,e.className=h(e.className,s,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function b(e){I=o(I,e)}function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("pre code");E.forEach.call(e,d)}}function m(){addEventListener("DOMContentLoaded",v,!1),addEventListener("load",v,!1)}function N(n,t){var r=y[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function R(){return x(y)}function w(e){return e=(e||"").toLowerCase(),y[e]||y[L[e]]}var E=[],x=Object.keys,y={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="
",I={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=f,e.highlightAuto=g,e.fixMarkup=p,e.highlightBlock=d,e.configure=b,e.initHighlighting=v,e.initHighlightingOnLoad=m,e.registerLanguage=N,e.listLanguages=R,e.getLanguage=w,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e});hljs.registerLanguage("xml",function(s){var e="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[t],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[t],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,s,a,t]}});hljs.registerLanguage("java",function(e){var a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",t=a+"(<"+a+"(\\s*,\\s*"+a+")*>)?",r="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",s="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",c={cN:"number",b:s,r:0};return{aliases:["jsp"],k:r,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},c,{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],o=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=o,s.c=o,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:o}});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={cN:"subst",b:/#\{/,e:/}/,k:c},i=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,r]},{b:/"/,e:/"/,c:[e.BE,r]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[r,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+n},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];r.c=i;var s=e.inherit(e.TM,{b:n}),t="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(i)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:i.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+t,e:"[-=]>",rB:!0,c:[s,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:t,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[s]},s]},{b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("ruby",function(e){var b="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},c={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},s=[e.C("#","$",{c:[c]}),e.C("^\\=begin","^\\=end",{c:[c],r:10}),e.C("^__END__","\\n$")],n={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,n],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(s)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:b}),i].concat(s)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:b}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[a,{cN:"regexp",c:[e.BE,n],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(s),r:0}].concat(s);n.c=d,i.c=d;var l="[>?]>",o="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",w=[{b:/^\s*=>/,starts:{e:"$",c:d}},{cN:"meta",b:"^("+l+"|"+o+"|"+u+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:s.concat(w).concat(d)}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:c,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U)?L?"',e:'"',i:"\\n",c:[t.BE]},{b:'(u8?|U)?R"',e:'"',c:[t.BE]},{b:"'\\\\?.",e:"'",i:"."}]},s={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},i={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},t.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:/<[^\n>]*>/,e:/$/,i:"\\n"},t.CLCM,t.CBCM]},a=t.IR+"\\s*\\(",c={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},n=[e,t.CLCM,t.CBCM,s,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:c,i:"",k:c,c:["self",e]},{b:t.IR+"::",k:c},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:c,c:n.concat([{b:/\(/,e:/\)/,k:c,c:n.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+t.IR+"[\\*&\\s]+)+"+a,rB:!0,e:/[{;=]/,eE:!0,k:c,i:/[^\w\s\*&]/,c:[{b:a,rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:c,r:0,c:[t.CLCM,t.CBCM,r,s,e]},t.CLCM,t.CBCM,i]},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b://,c:["self"]},t.TM]}]),exports:{preprocessor:i,strings:r,k:c}}});hljs.registerLanguage("shell",function(s){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}});hljs.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},i=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:_,l:i,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:i,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("ini",function(e){var b={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},b,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}});hljs.registerLanguage("makefile",function(e){var i={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%>>|\.\.\.) /},c={cN:"subst",b:/\{/,e:/\}/,k:r,i:/#/},a={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[b],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[b],r:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[b,c]},{b:/(fr|rf|f)"""/,e:/"""/,c:[b,c]},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[c]},{b:/(fr|rf|f)"/,e:/"/,c:[c]},e.ASM,e.QSM]},s={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},i={cN:"params",b:/\(/,e:/\)/,c:["self",b,s,a]};return c.c=[a,s,b],{aliases:["py","gyp"],k:r,i:/(<\/|->|\?)|=>/,c:[b,s,a,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,i,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("cs",function(e){var i={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},t={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},r=e.inherit(t,{i:/\n/}),a={cN:"subst",b:"{",e:"}",k:i},c=e.inherit(a,{i:/\n/}),n={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,c]},s={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},a]},o=e.inherit(s,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},c]});a.c=[s,n,t,e.ASM,e.QSM,e.CNM,e.CBCM],c.c=[o,n,r,e.ASM,e.QSM,e.CNM,e.inherit(e.CBCM,{i:/\n/})];var l={v:[s,n,t,e.ASM,e.QSM]},b=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp"],k:i,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},l,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",r:0},{cN:"function",b:"("+b+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:i,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:i,r:0,c:[l,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*#]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage("php",function(e){var c={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},i={cN:"meta",b:/<\?(php)?|\?>/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}}); \ No newline at end of file diff --git a/highlightjs/asset/styles/agate.css b/highlightjs/asset/styles/agate.css new file mode 100644 index 000000000..8d64547c5 --- /dev/null +++ b/highlightjs/asset/styles/agate.css @@ -0,0 +1,108 @@ +/*! + * Agate by Taufik Nurrohman + * ---------------------------------------------------- + * + * #ade5fc + * #a2fca2 + * #c6b4f0 + * #d36363 + * #fcc28c + * #fc9b9b + * #ffa + * #fff + * #333 + * #62c8f3 + * #888 + * + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #333; + color: white; +} + +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-code, +.hljs-emphasis { + font-style: italic; +} + +.hljs-tag { + color: #62c8f3; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-selector-class { + color: #ade5fc; +} + +.hljs-string, +.hljs-bullet { + color: #a2fca2; +} + +.hljs-type, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-quote, +.hljs-built_in, +.hljs-builtin-name { + color: #ffa; +} + +.hljs-number, +.hljs-symbol, +.hljs-bullet { + color: #d36363; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #fcc28c; +} + +.hljs-comment, +.hljs-deletion, +.hljs-code { + color: #888; +} + +.hljs-regexp, +.hljs-link { + color: #c6b4f0; +} + +.hljs-meta { + color: #fc9b9b; +} + +.hljs-deletion { + background-color: #fc9b9b; + color: #333; +} + +.hljs-addition { + background-color: #a2fca2; + color: #333; +} + +.hljs a { + color: inherit; +} + +.hljs a:focus, +.hljs a:hover { + color: inherit; + text-decoration: underline; +} diff --git a/highlightjs/asset/styles/androidstudio.css b/highlightjs/asset/styles/androidstudio.css new file mode 100644 index 000000000..bc8e473b5 --- /dev/null +++ b/highlightjs/asset/styles/androidstudio.css @@ -0,0 +1,66 @@ +/* +Date: 24 Fev 2015 +Author: Pedro Oliveira +*/ + +.hljs { + color: #a9b7c6; + background: #282b2e; + display: block; + overflow-x: auto; + padding: 0.5em; +} + +.hljs-number, +.hljs-literal, +.hljs-symbol, +.hljs-bullet { + color: #6897BB; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-deletion { + color: #cc7832; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-link { + color: #629755; +} + +.hljs-comment, +.hljs-quote { + color: #808080; +} + +.hljs-meta { + color: #bbb529; +} + +.hljs-string, +.hljs-attribute, +.hljs-addition { + color: #6A8759; +} + +.hljs-section, +.hljs-title, +.hljs-type { + color: #ffc66d; +} + +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e8bf6a; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/arduino-light.css b/highlightjs/asset/styles/arduino-light.css new file mode 100644 index 000000000..4b8b7fd3c --- /dev/null +++ b/highlightjs/asset/styles/arduino-light.css @@ -0,0 +1,88 @@ +/* + +Arduino® Light Theme - Stefania Mellai + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #FFFFFF; +} + +.hljs, +.hljs-subst { + color: #434f54; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name { + color: #00979D; +} + +.hljs-built_in, +.hljs-literal, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #D35400; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #00979D; +} + +.hljs-type, +.hljs-string, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #005C5F; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-comment { + color: rgba(149,165,166,.8); +} + +.hljs-meta-keyword { + color: #728E00; +} + +.hljs-meta { + color: #728E00; + color: #434f54; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-function { + color: #728E00; +} + +.hljs-number { + color: #8A7B52; +} diff --git a/highlightjs/asset/styles/arta.css b/highlightjs/asset/styles/arta.css new file mode 100644 index 000000000..75ef3a9e5 --- /dev/null +++ b/highlightjs/asset/styles/arta.css @@ -0,0 +1,73 @@ +/* +Date: 17.V.2011 +Author: pumbur +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #222; +} + +.hljs, +.hljs-subst { + color: #aaa; +} + +.hljs-section { + color: #fff; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #444; +} + +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-regexp { + color: #ffcc33; +} + +.hljs-number, +.hljs-addition { + color: #00cc66; +} + +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-template-variable, +.hljs-attribute, +.hljs-link { + color: #32aaee; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #6644aa; +} + +.hljs-title, +.hljs-variable, +.hljs-deletion, +.hljs-template-tag { + color: #bb1166; +} + +.hljs-section, +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/ascetic.css b/highlightjs/asset/styles/ascetic.css new file mode 100644 index 000000000..48397e889 --- /dev/null +++ b/highlightjs/asset/styles/ascetic.css @@ -0,0 +1,45 @@ +/* + +Original style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-symbol, +.hljs-bullet, +.hljs-section, +.hljs-addition, +.hljs-attribute, +.hljs-link { + color: #888; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #ccc; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-name, +.hljs-type, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/atelier-cave-dark.css b/highlightjs/asset/styles/atelier-cave-dark.css new file mode 100644 index 000000000..65428f3b1 --- /dev/null +++ b/highlightjs/asset/styles/atelier-cave-dark.css @@ -0,0 +1,83 @@ +/* Base16 Atelier Cave Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Cave Comment */ +.hljs-comment, +.hljs-quote { + color: #7e7887; +} + +/* Atelier-Cave Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-regexp, +.hljs-link, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #be4678; +} + +/* Atelier-Cave Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #aa573c; +} + +/* Atelier-Cave Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #2a9292; +} + +/* Atelier-Cave Blue */ +.hljs-title, +.hljs-section { + color: #576ddb; +} + +/* Atelier-Cave Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #955ae7; +} + +.hljs-deletion, +.hljs-addition { + color: #19171c; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #be4678; +} + +.hljs-addition { + background-color: #2a9292; +} + +.hljs { + display: block; + overflow-x: auto; + background: #19171c; + color: #8b8792; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-cave-light.css b/highlightjs/asset/styles/atelier-cave-light.css new file mode 100644 index 000000000..b419f9fd8 --- /dev/null +++ b/highlightjs/asset/styles/atelier-cave-light.css @@ -0,0 +1,85 @@ +/* Base16 Atelier Cave Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Cave Comment */ +.hljs-comment, +.hljs-quote { + color: #655f6d; +} + +/* Atelier-Cave Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #be4678; +} + +/* Atelier-Cave Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #aa573c; +} + +/* Atelier-Cave Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #2a9292; +} + +/* Atelier-Cave Blue */ +.hljs-title, +.hljs-section { + color: #576ddb; +} + +/* Atelier-Cave Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #955ae7; +} + +.hljs-deletion, +.hljs-addition { + color: #19171c; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #be4678; +} + +.hljs-addition { + background-color: #2a9292; +} + +.hljs { + display: block; + overflow-x: auto; + background: #efecf4; + color: #585260; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-dune-dark.css b/highlightjs/asset/styles/atelier-dune-dark.css new file mode 100644 index 000000000..1684f5225 --- /dev/null +++ b/highlightjs/asset/styles/atelier-dune-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Dune Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Dune Comment */ +.hljs-comment, +.hljs-quote { + color: #999580; +} + +/* Atelier-Dune Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d73737; +} + +/* Atelier-Dune Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b65611; +} + +/* Atelier-Dune Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #60ac39; +} + +/* Atelier-Dune Blue */ +.hljs-title, +.hljs-section { + color: #6684e1; +} + +/* Atelier-Dune Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b854d4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #20201d; + color: #a6a28c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-dune-light.css b/highlightjs/asset/styles/atelier-dune-light.css new file mode 100644 index 000000000..547719de8 --- /dev/null +++ b/highlightjs/asset/styles/atelier-dune-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Dune Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Dune Comment */ +.hljs-comment, +.hljs-quote { + color: #7d7a68; +} + +/* Atelier-Dune Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d73737; +} + +/* Atelier-Dune Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b65611; +} + +/* Atelier-Dune Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #60ac39; +} + +/* Atelier-Dune Blue */ +.hljs-title, +.hljs-section { + color: #6684e1; +} + +/* Atelier-Dune Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b854d4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #fefbec; + color: #6e6b5e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-estuary-dark.css b/highlightjs/asset/styles/atelier-estuary-dark.css new file mode 100644 index 000000000..a5e507187 --- /dev/null +++ b/highlightjs/asset/styles/atelier-estuary-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Estuary Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Estuary Comment */ +.hljs-comment, +.hljs-quote { + color: #878573; +} + +/* Atelier-Estuary Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ba6236; +} + +/* Atelier-Estuary Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ae7313; +} + +/* Atelier-Estuary Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7d9726; +} + +/* Atelier-Estuary Blue */ +.hljs-title, +.hljs-section { + color: #36a166; +} + +/* Atelier-Estuary Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #5f9182; +} + +.hljs-deletion, +.hljs-addition { + color: #22221b; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ba6236; +} + +.hljs-addition { + background-color: #7d9726; +} + +.hljs { + display: block; + overflow-x: auto; + background: #22221b; + color: #929181; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-estuary-light.css b/highlightjs/asset/styles/atelier-estuary-light.css new file mode 100644 index 000000000..1daee5d98 --- /dev/null +++ b/highlightjs/asset/styles/atelier-estuary-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Estuary Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Estuary Comment */ +.hljs-comment, +.hljs-quote { + color: #6c6b5a; +} + +/* Atelier-Estuary Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ba6236; +} + +/* Atelier-Estuary Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ae7313; +} + +/* Atelier-Estuary Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7d9726; +} + +/* Atelier-Estuary Blue */ +.hljs-title, +.hljs-section { + color: #36a166; +} + +/* Atelier-Estuary Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #5f9182; +} + +.hljs-deletion, +.hljs-addition { + color: #22221b; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ba6236; +} + +.hljs-addition { + background-color: #7d9726; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4f3ec; + color: #5f5e4e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-forest-dark.css b/highlightjs/asset/styles/atelier-forest-dark.css new file mode 100644 index 000000000..0ef4fae31 --- /dev/null +++ b/highlightjs/asset/styles/atelier-forest-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Forest Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Forest Comment */ +.hljs-comment, +.hljs-quote { + color: #9c9491; +} + +/* Atelier-Forest Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #f22c40; +} + +/* Atelier-Forest Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #df5320; +} + +/* Atelier-Forest Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7b9726; +} + +/* Atelier-Forest Blue */ +.hljs-title, +.hljs-section { + color: #407ee7; +} + +/* Atelier-Forest Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6666ea; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b1918; + color: #a8a19f; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-forest-light.css b/highlightjs/asset/styles/atelier-forest-light.css new file mode 100644 index 000000000..bbedde18a --- /dev/null +++ b/highlightjs/asset/styles/atelier-forest-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Forest Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Forest Comment */ +.hljs-comment, +.hljs-quote { + color: #766e6b; +} + +/* Atelier-Forest Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #f22c40; +} + +/* Atelier-Forest Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #df5320; +} + +/* Atelier-Forest Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7b9726; +} + +/* Atelier-Forest Blue */ +.hljs-title, +.hljs-section { + color: #407ee7; +} + +/* Atelier-Forest Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6666ea; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f1efee; + color: #68615e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-heath-dark.css b/highlightjs/asset/styles/atelier-heath-dark.css new file mode 100644 index 000000000..fe01ff721 --- /dev/null +++ b/highlightjs/asset/styles/atelier-heath-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Heath Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Heath Comment */ +.hljs-comment, +.hljs-quote { + color: #9e8f9e; +} + +/* Atelier-Heath Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca402b; +} + +/* Atelier-Heath Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #a65926; +} + +/* Atelier-Heath Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #918b3b; +} + +/* Atelier-Heath Blue */ +.hljs-title, +.hljs-section { + color: #516aec; +} + +/* Atelier-Heath Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7b59c0; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b181b; + color: #ab9bab; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-heath-light.css b/highlightjs/asset/styles/atelier-heath-light.css new file mode 100644 index 000000000..ee43786d1 --- /dev/null +++ b/highlightjs/asset/styles/atelier-heath-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Heath Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Heath Comment */ +.hljs-comment, +.hljs-quote { + color: #776977; +} + +/* Atelier-Heath Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca402b; +} + +/* Atelier-Heath Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #a65926; +} + +/* Atelier-Heath Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #918b3b; +} + +/* Atelier-Heath Blue */ +.hljs-title, +.hljs-section { + color: #516aec; +} + +/* Atelier-Heath Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7b59c0; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f7f3f7; + color: #695d69; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-lakeside-dark.css b/highlightjs/asset/styles/atelier-lakeside-dark.css new file mode 100644 index 000000000..a937d3bf5 --- /dev/null +++ b/highlightjs/asset/styles/atelier-lakeside-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Lakeside Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Lakeside Comment */ +.hljs-comment, +.hljs-quote { + color: #7195a8; +} + +/* Atelier-Lakeside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d22d72; +} + +/* Atelier-Lakeside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #935c25; +} + +/* Atelier-Lakeside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #568c3b; +} + +/* Atelier-Lakeside Blue */ +.hljs-title, +.hljs-section { + color: #257fad; +} + +/* Atelier-Lakeside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6b6bb8; +} + +.hljs { + display: block; + overflow-x: auto; + background: #161b1d; + color: #7ea2b4; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-lakeside-light.css b/highlightjs/asset/styles/atelier-lakeside-light.css new file mode 100644 index 000000000..6c7e8f9ef --- /dev/null +++ b/highlightjs/asset/styles/atelier-lakeside-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Lakeside Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Lakeside Comment */ +.hljs-comment, +.hljs-quote { + color: #5a7b8c; +} + +/* Atelier-Lakeside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d22d72; +} + +/* Atelier-Lakeside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #935c25; +} + +/* Atelier-Lakeside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #568c3b; +} + +/* Atelier-Lakeside Blue */ +.hljs-title, +.hljs-section { + color: #257fad; +} + +/* Atelier-Lakeside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6b6bb8; +} + +.hljs { + display: block; + overflow-x: auto; + background: #ebf8ff; + color: #516d7b; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-plateau-dark.css b/highlightjs/asset/styles/atelier-plateau-dark.css new file mode 100644 index 000000000..3bb052693 --- /dev/null +++ b/highlightjs/asset/styles/atelier-plateau-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Plateau Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Plateau Comment */ +.hljs-comment, +.hljs-quote { + color: #7e7777; +} + +/* Atelier-Plateau Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca4949; +} + +/* Atelier-Plateau Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b45a3c; +} + +/* Atelier-Plateau Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #4b8b8b; +} + +/* Atelier-Plateau Blue */ +.hljs-title, +.hljs-section { + color: #7272ca; +} + +/* Atelier-Plateau Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8464c4; +} + +.hljs-deletion, +.hljs-addition { + color: #1b1818; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ca4949; +} + +.hljs-addition { + background-color: #4b8b8b; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b1818; + color: #8a8585; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-plateau-light.css b/highlightjs/asset/styles/atelier-plateau-light.css new file mode 100644 index 000000000..5f0222bec --- /dev/null +++ b/highlightjs/asset/styles/atelier-plateau-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Plateau Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Plateau Comment */ +.hljs-comment, +.hljs-quote { + color: #655d5d; +} + +/* Atelier-Plateau Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca4949; +} + +/* Atelier-Plateau Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b45a3c; +} + +/* Atelier-Plateau Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #4b8b8b; +} + +/* Atelier-Plateau Blue */ +.hljs-title, +.hljs-section { + color: #7272ca; +} + +/* Atelier-Plateau Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8464c4; +} + +.hljs-deletion, +.hljs-addition { + color: #1b1818; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ca4949; +} + +.hljs-addition { + background-color: #4b8b8b; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4ecec; + color: #585050; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-savanna-dark.css b/highlightjs/asset/styles/atelier-savanna-dark.css new file mode 100644 index 000000000..38f831431 --- /dev/null +++ b/highlightjs/asset/styles/atelier-savanna-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Savanna Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Savanna Comment */ +.hljs-comment, +.hljs-quote { + color: #78877d; +} + +/* Atelier-Savanna Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #b16139; +} + +/* Atelier-Savanna Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #9f713c; +} + +/* Atelier-Savanna Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #489963; +} + +/* Atelier-Savanna Blue */ +.hljs-title, +.hljs-section { + color: #478c90; +} + +/* Atelier-Savanna Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #55859b; +} + +.hljs-deletion, +.hljs-addition { + color: #171c19; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #b16139; +} + +.hljs-addition { + background-color: #489963; +} + +.hljs { + display: block; + overflow-x: auto; + background: #171c19; + color: #87928a; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-savanna-light.css b/highlightjs/asset/styles/atelier-savanna-light.css new file mode 100644 index 000000000..1ccd7c685 --- /dev/null +++ b/highlightjs/asset/styles/atelier-savanna-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Savanna Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Savanna Comment */ +.hljs-comment, +.hljs-quote { + color: #5f6d64; +} + +/* Atelier-Savanna Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #b16139; +} + +/* Atelier-Savanna Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #9f713c; +} + +/* Atelier-Savanna Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #489963; +} + +/* Atelier-Savanna Blue */ +.hljs-title, +.hljs-section { + color: #478c90; +} + +/* Atelier-Savanna Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #55859b; +} + +.hljs-deletion, +.hljs-addition { + color: #171c19; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #b16139; +} + +.hljs-addition { + background-color: #489963; +} + +.hljs { + display: block; + overflow-x: auto; + background: #ecf4ee; + color: #526057; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-seaside-dark.css b/highlightjs/asset/styles/atelier-seaside-dark.css new file mode 100644 index 000000000..df29949c6 --- /dev/null +++ b/highlightjs/asset/styles/atelier-seaside-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Seaside Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Seaside Comment */ +.hljs-comment, +.hljs-quote { + color: #809980; +} + +/* Atelier-Seaside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e6193c; +} + +/* Atelier-Seaside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #87711d; +} + +/* Atelier-Seaside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #29a329; +} + +/* Atelier-Seaside Blue */ +.hljs-title, +.hljs-section { + color: #3d62f5; +} + +/* Atelier-Seaside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ad2bee; +} + +.hljs { + display: block; + overflow-x: auto; + background: #131513; + color: #8ca68c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-seaside-light.css b/highlightjs/asset/styles/atelier-seaside-light.css new file mode 100644 index 000000000..9d960f29f --- /dev/null +++ b/highlightjs/asset/styles/atelier-seaside-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Seaside Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Seaside Comment */ +.hljs-comment, +.hljs-quote { + color: #687d68; +} + +/* Atelier-Seaside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e6193c; +} + +/* Atelier-Seaside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #87711d; +} + +/* Atelier-Seaside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #29a329; +} + +/* Atelier-Seaside Blue */ +.hljs-title, +.hljs-section { + color: #3d62f5; +} + +/* Atelier-Seaside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ad2bee; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4fbf4; + color: #5e6e5e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-sulphurpool-dark.css b/highlightjs/asset/styles/atelier-sulphurpool-dark.css new file mode 100644 index 000000000..c2ab7938d --- /dev/null +++ b/highlightjs/asset/styles/atelier-sulphurpool-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Sulphurpool Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Sulphurpool Comment */ +.hljs-comment, +.hljs-quote { + color: #898ea4; +} + +/* Atelier-Sulphurpool Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #c94922; +} + +/* Atelier-Sulphurpool Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #c76b29; +} + +/* Atelier-Sulphurpool Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #ac9739; +} + +/* Atelier-Sulphurpool Blue */ +.hljs-title, +.hljs-section { + color: #3d8fd1; +} + +/* Atelier-Sulphurpool Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6679cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #202746; + color: #979db4; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atelier-sulphurpool-light.css b/highlightjs/asset/styles/atelier-sulphurpool-light.css new file mode 100644 index 000000000..96c47d086 --- /dev/null +++ b/highlightjs/asset/styles/atelier-sulphurpool-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Sulphurpool Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Sulphurpool Comment */ +.hljs-comment, +.hljs-quote { + color: #6b7394; +} + +/* Atelier-Sulphurpool Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #c94922; +} + +/* Atelier-Sulphurpool Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #c76b29; +} + +/* Atelier-Sulphurpool Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #ac9739; +} + +/* Atelier-Sulphurpool Blue */ +.hljs-title, +.hljs-section { + color: #3d8fd1; +} + +/* Atelier-Sulphurpool Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6679cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f5f7ff; + color: #5e6687; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/atom-one-dark.css b/highlightjs/asset/styles/atom-one-dark.css new file mode 100644 index 000000000..1616aafe3 --- /dev/null +++ b/highlightjs/asset/styles/atom-one-dark.css @@ -0,0 +1,96 @@ +/* + +Atom One Dark by Daniel Gamage +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +base: #282c34 +mono-1: #abb2bf +mono-2: #818896 +mono-3: #5c6370 +hue-1: #56b6c2 +hue-2: #61aeee +hue-3: #c678dd +hue-4: #98c379 +hue-5: #e06c75 +hue-5-2: #be5046 +hue-6: #d19a66 +hue-6-2: #e6c07b + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #abb2bf; + background: #282c34; +} + +.hljs-comment, +.hljs-quote { + color: #5c6370; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #c678dd; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e06c75; +} + +.hljs-literal { + color: #56b6c2; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #98c379; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #e6c07b; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #d19a66; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #61aeee; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/highlightjs/asset/styles/atom-one-light.css b/highlightjs/asset/styles/atom-one-light.css new file mode 100644 index 000000000..d5bd1d2a9 --- /dev/null +++ b/highlightjs/asset/styles/atom-one-light.css @@ -0,0 +1,96 @@ +/* + +Atom One Light by Daniel Gamage +Original One Light Syntax theme from https://github.com/atom/one-light-syntax + +base: #fafafa +mono-1: #383a42 +mono-2: #686b77 +mono-3: #a0a1a7 +hue-1: #0184bb +hue-2: #4078f2 +hue-3: #a626a4 +hue-4: #50a14f +hue-5: #e45649 +hue-5-2: #c91243 +hue-6: #986801 +hue-6-2: #c18401 + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #383a42; + background: #fafafa; +} + +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #a626a4; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e45649; +} + +.hljs-literal { + color: #0184bb; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #50a14f; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #c18401; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #986801; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #4078f2; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/highlightjs/asset/styles/bootstrap.css b/highlightjs/asset/styles/bootstrap.css new file mode 100644 index 000000000..4191e46ec --- /dev/null +++ b/highlightjs/asset/styles/bootstrap.css @@ -0,0 +1,98 @@ +/* + +Original highlight.js style (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + background: transparent; +} + + +/* Base color: saturation 0; */ + +.hljs, +.hljs-subst { + color: #444; +} + +.hljs-comment { + color: #888888; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; +} + + +/* User color: hue: 0 */ + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060; +} + + +/* Language color: hue: 90; */ + +.hljs-literal { + color: #78A960; +} + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300; +} + + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/brown-paper.css b/highlightjs/asset/styles/brown-paper.css new file mode 100644 index 000000000..f0197b924 --- /dev/null +++ b/highlightjs/asset/styles/brown-paper.css @@ -0,0 +1,64 @@ +/* + +Brown Paper style from goldblog.com.ua (c) Zaripov Yura + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background:#b7a68e url(./brown-papersq.png); +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color:#005599; + font-weight:bold; +} + +.hljs, +.hljs-subst { + color: #363c69; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link, +.hljs-name { + color: #2c009f; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #802022; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/brown-papersq.png b/highlightjs/asset/styles/brown-papersq.png new file mode 100644 index 0000000000000000000000000000000000000000..3813903dbf9fa7b1fb5bd11d9534c06667d9056f GIT binary patch literal 18198 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
G3S-EN>9CM!{YB*|;6wg-K3V?)eR((z#1 zHyX+Us~H@9)~!8`K-#ZDU>v8HpiaQ|@=VU5MgT@ehzQ(1nZ!M0ZDk{Fb`>pCb0vQE z`gX@ZK}6S!(-($v3w8-+L6Xs~;@WTrR}q42gH9p2ncZYDab8*`#p8jbS&H9$DTx{1 z|8L)r+}X3oIp6b9dN^fZsl0TpRK4NW^TVGZOit8~r*qM+QL3pd7G0|~C`PHxw2PM3 z->n8iEh)LU)Je%r7nEt|D%&F&(={XI*19z_HKI38aE6Cfm-buU7W|=mo3gMA57~g` z7aBx4OS&(O5w@W;2pO@ZVyG;2^F+2cYshx%M2*M@%;(4quYc}>z1WX(9ccb&>8#{j zE=VlFg+&2-xsr%AY_}ciz4+<$^}2TO2e)byPmJl?+aOU7{UVx$=ZNQDTQLxsh}+(_ zak-NBw`v4=+Ydp_L=w^J1&NT$-AbEUuj%8LN7nJzt^APyl$(ght>;(o{)xCqf8IX6 zq`a-CyPq$UOPJN(oo>$gX?v65Y$GnIq7Fq?=??};kY4#Na69k#iG|Wd|{Tt z&uFLgaDQ4)`{9^3rX|Bg zNY8N2w1??HVsq#}Xk&RcmoQBacog;CZ%I-HU?7dT+nZRo?h7BQd5Yrv%sI0rPF^Sk^9@l-_4``bwK!A z5Ud{#8B%fMPHat04G9kj%j5>0maQK}jQTzGC!2<9FicZ-#V^ZaC)A?QK9EelA!nP) z+Z2DqYAqTsfZ9k1CW9+h;Uao59}OnJ9>r}xs&nHlM5^Y58T*TkM80zn8=UE2e8u{j zpH(Cv<_IWBdh<6_f1={d7#R|wGLcIoegMU>82VZLrcn;{FuCmF59Tpu7qQ5TEj5`AFXQxx{XS6|0N# z3g?J^0RDM8_l@3M4G0f^O03>$S#_it3cdG%7HWo_Xb-<{a&XHHzW`(2t54<~-m{AO)J~7AhPI zbkz9A9Eq!7aijhY%^=rG`j6?w^hb13^_LKf!X*}jaV$GaXvsies~+H0T#v%OcveHN zw6t*A@XdVfqJIPsPwPO4;>%M4C+{dTVU{cOk`3puW6b36K2&z%>btSk&&H>Z;<`p> z`FMTMiHw&wOXcQ$-Y{pG@3aN}s_>;# zeQ6GDsqIMA?iz{B1XzIIegeu-#qL_ZBH|eh`L{~J(A{bH*vND8W}io(WZ9s;;m3qZ zElXp!ru)Ht+yJJ|dfvRtcX?~Pn_nW{zZbM5z3mB?Hbf_|+7ZC-9yVjR&7mnNul4vE z%KEK*b1~tReV{kNh2E=&iwgU8w0kYs3c1o6m;*fZfrF-g?1!~+<-`f!Dj8+i7NJUI zcZj}vt?|8iHQ3TdM;gn(X(Vidn!cd{^x{>dX&Vt^`^_3pu?t)#>x|K0cW=egSMl9#+mqq-8|RdMP1Dw zx^5}L#|i6)ERW8LBjm}wD6@3$`!cXl0aV*W>(xz)J2m+v|RNGEXIA%XWv z$Hx$v!@W5LfaU7iEY}no2e;*F&dh{F;<$?``JyH&l3RVjA{xC=Rq{ z6}dLQKK(BW4N!Y)Mzd3h)PX8L3OR6JX82vsk%|<`y{3G<99ycR8(ZD;4@=k|d zx1nPOrARPmMi86c#Qn^1g5RVk00)%LY3fdvDm`_|D|ZP>a4hmnJmTiqc40*eItZ0G z(Cfxe`6oWB{4L&V2-lf)Dz{MkXQ(A{E}?e1cWU;s-J?xBbGBUgebeTI{+k+LT|P=A z;GHDn*981}=hBJAGXPX?iXEu)RoZN2kKn)}Yp)=+)%`(=Hk2z^Csu^a+hNSE9<}O4 zW9BhF843QW<{+N^4NZ(+Ohu0L$qp9AhpJ?UbX8~fibx(>f3CRh|ZH~FPW;%L4 z2Jfb`#^2zr=0rNvM5{6`q6x-M;QJ8B$W1lwJwBT6OTa+L|E?*68NnD-d zqirI@#!DTk6=nvBq1t|F2a57+*JomCoPO&bkNHd&fq@7CoA#=ogI@ER;^g6MTjnNJpU8$17lkcby!fn#Y^cf59qs4;WjW9@I`pu+^=!$XvlzSp zHl-BP6qCLifc*pwQ8vDfUY0lgjC>>zTLL$6VLQBKH2U4M(&?%A718nspPj%tmUBw+ z#X>LH_#p;`9!I5vv6@cVh1b)~bHTXz;!@s>4omWjec#A;((g=Fq_p{u1|<#I-D{h1 zr%{sZ%zv+3T?)s{c78c|r6Ez1kf5OuRJ<^!_`!;|HxG;mZiSf=CdVqy^)Fpf= zR6<3YrraF!c1|tIJ#;9sg<)`+=a+cw8*6)$-yV3w_=*W`MB#~zjz6^LYX4eVoTxdI zc3h_Bc-v+z^z5>e3vEp)brfA?bQ>r1^-8x`-ATBNL)99$& z;rXG-!IBn08OxyuZoj`hcQ)a@7O5;d=o7$6_hSTJ z;(^Dr%6p+QhE473G62?L^T{&S2^UB8^~fFHE0@wP^b_T#h%rn7^=(?yQf+N!)<~#c zB&mh#W%khdZrGJgs@ixb%h?ad2HG&$G8+QXR6zbUk;$(r4F#>F^1>Br!mAfDkRR@D z!K|#|oQjAh)DlY~3|CG`+4@opGIM z^i^Z4rXu>d*NVXngpKKI2U_*K}S3_}=T|7q^w`XB` z2D5mfvT(`vMwh8DGJql?=LI15;DsNI&n^nhYwgI&-{a#V-{;<=cJWiZ5HEkDY(4jD zc2?xCALMIz@)_iwDG(vRJQ8kP7xC8|N5n z-mb8AOpEdA->ZPnh_c<&o3Jg+X;AwynF(`1Ihpp9xt|hy zu7!?dLSahdVg=JpZk#xq{L7i0Y3(N`w+}g zn}vYJKK$VH`HhCBK)g%Cw8flu&$)8+Ef5m{+5}|bRYsP&t~Jk0TLEENO=yT3nrvyfYKk*n#uYjkyI9wC{A(mO8ae&B%;9#dTh)|_V0}&D>^xO(UZ2e z2{_|CZ)7#U(3yWf5i9##7`c79OX{6Y8(moRVE~tW6|XopYg$JLlxm|Q3X{o#=h{Lt zyCavxXR*2;2qGJ^XJ;nKfb^TpVwPUUM{br*(tWeRu{4Id4v!3gY2#K~T^)u_Zer}E zn_7xjY>yK@ouN|9;O0P^ZRT#CcRfGYf%F#Vs;VRb^a|0p^Z(QZ;v z_h#9VcRfJ+!d^?N=4N?P&mP&Il_OwCQMpD;0zHfk@ay$}8TVzgO~mUpV_LitM@Q8z z?9S+w#)-R7Wlo;vsZz9D@#pj>8Cxn}a*?q4(u0!Y^j5C?U$fc+Q?CL`w3ANg?&_1 z?FycB-DhP^mg2^y?@lqA_P>^f{|QRaU~igN=blSkS9CZwMjy&9MHhfv%{2!{eynf` z$pvnj!j!PJ^$UUrQOmKo@@YFMK}y`iI9Na(F-H2m)K^;G@|^OUI0RWuw$|>Zi>>4v zq8|c(foEJT-K`qR-DS&5P&JlKeXe6o?f)$qE9Lfsl2!ik}0GeaVk8W1YV42f9! zrDpRi_q@-CcyuXkqt%*k_=Sc09&?96Tu==56A9)J#}xMwb)PC2fO#x-Caabw>Rn0y z{HI2_IqLYwp=X|p=?Np~=954+Ml?kfMhR7O0xujiI*!b{uTA~|{_q>bBp z=-{T8<|tDq3CTI;lW2D@h@1>&cH*BDa_y{)8j?pQ@ST4-bycb_leaSjIqXOg!I-dI zwNUCuLgX|9CoCb|R&9g{#A6D$#nUq#?A;pr8AdUx?+Mg??0rWBc7w@CmP8$GxdE}e zzHzq~`$CYEEw*mQui5d*E?e~uhB&}WX3EcR8?CKn>HfFzpYY*7uYx^#J!@o8sI_T# z<9>7j4!UEiu=RQ98@44ed!uGToSby}kzEY$x!v2ihKXiyj2);!CRiFr>vI6V7wV&~ zpF$-W<*Q*jZKoda1CDyKwXd4AY%8NW?9?a@Yy}T{I z8l%pzl#*N&hVTtVAK9|*u$h3nx1=6hC?%PgdUH$1 zgU4B#9LvX`-GA_Cqken?Okqp8ZYE~ymacnbL{jExU#!eyp{f&~&7KrUZ(@I$| z*^;qz>W?cO%fU+}`r^A}yw+(=Jny@=CHlQvYr*sZn~Mq?a}U+deU_vMDx=p%_S zeq4>UTvg|Ns%zPo!tKDK1jo!MHXs5k!B@$&Iw30U0NMQkIcpzN?DYb2*ymZtS+0tL z|7ZN81f&h|3Gcxa1-K}FIu}UC&Q5;*yA>^uZA?ny{4)}sFcUL|IrhZMoeaaeLpX1W z;w-j*w2UV02#G(CdabMIPx^&kQ$y&xwe3xF%dn^Zx=-2>R>1)!wONiAju(G&X}wa&e3M9e@y*jUOnq=Da;aeY3U?)V#0wlC4b>zD zYg41RpwFSrtQS5)@i*U(!g@ZK3qpF#ekkwhzv36}MIRhhvDIX_{kvF-w-i!URUy&1 zZ(GVLd13Rxa`n}=54^&rT5t6b{-~*ny>~1i9TpVYZ!wNEQFHytZc3QlVJihZ*&r<0 z+pVZ@C%9pIE7QsXE_Wp;lEw)G|JA?Qr?Kw4JQlq%?zBMH%3 zQ6JVx`e*&{{{B6UR&7EDCoSR>Ia4d+4zz1c4JkkrJzYuTQJ&qreUvcDtG1l9xOB(^ zrc~7sn*MO0arcJ>5^dNJY0Dd`dhvNp0zvzsHa0TO=<$99GqoAfRNXiNXf(!*IEnmP zr8tbeCb^b*$m_VvC6g&*bjtGqCpo-Ox`{)A5lw;yGH&b+sGu3`p#9`TQsPue)fUR< z&`V+$NVA8gzWIS^yrU#20h!!^9m?LW?#vpgS2M(T!&ts|UtGu)ibm12hjYQH3>Qh9 z&4Gq1i{aI05C~XPmovUh_g2b!EvwQ{JyK_xNk>x&ulaux-hYGOKQD&wmOXCwH|wi# z>ZA;Hh-sqvZJyfmPTTsim;OTNb>l5w$r>9)Wr+8Y$ptx_kA@kv@KugIc@7s51}<>$GYQ56)Ki`;R>$*#5fm%=a3oHXA{2r ze(gE^q7@6M#NOKDk?lQ!5v+|OS})<3Q$-XinH=iC%oZ$K*8mR&EYajonfKIB3qJw` zEh)zGw95_xD1yBg7v#8+sMaF^CW02x=1c30XZN3`1|S3xsHPU&%AtideyTVxW^pmN zC+CEKwcWLdiPK%WA><$Zk_5~1-n5;YlQ3aqhz90Q0Xyfxt(2@|0?VzodBvU=`;yT2 z97iv%rVlOZAzEh~-1FWqO$aNkyaLq>*<|?mOs(GR3FT392W{moZ;HD&I)GzNjoj|$ z6#h>D!~{G0fG#7m_{NwN;WBo+FBYH&u^ak!z=N*W+uPe4om4A>NYVy$G_k2Ag|NAO z1wvW{1B!~LGZRF@(ZG@sG?88UFOlrO7R5%3$!Z0a^39~K+xO1U`7jU^5z(@hy;s>te8_ua9x0Q zn(l}+Nj+K~g&_``wy#um;Qzq?f&T;l2mTNIANW7;|84Ov|JCpRS8NUz9_W9coCNv_ z?xl52VVa7r#b5F5PRa<1$EH=S_IdUhr^0@&t!&FBRvJ)_Pg&>TFXt z;Him`;9z20Fs(B_&VW(!)c3M{jzBor(F1Dq}caD#skevw=^xy`W{jSaVH-|RF^ zSxJ<1s$c_lG4y9pCj12Kt805nHipE(fmI(remtK}i2v8umpU5=fE&6Kz!tKfD5{zY zco!fp1V_e}JZR%cv(4G}(kNtwr>75|O)au*I`|}b#FsjqhIe!NJ-zeaOcKF`RqzgX zM*JenjN>g8sc(CV9npdUo7l-3T~TbOt`ob-!+y>EHiCg>^;n^+rmplETdVk@A`cVT zA1`NM{`03FQ?x4Ad8O#s9fGCv7?9O}iuG`+X$PzYMAI#+5>jAk1=DDL4Zw~OY#s>1 zQelFQX}adIQepTSq~Q#Jb(w>Y{qR)gW)Aw04L6*=W|uYVCY8oiUWoVZpBMokVRv`n z|G@u&{{#OA{tx^g_&@OfZSgOE^Xp%o&t1c5t;L4bTyJavWpxv!`N2~II|QWnuI)Ob zYv3~hzdJ|?XBxHj0LyR7#yX)CPY)MQMfjp;JB;mJUhwT5L@?^+5I~?-#K5{H_o>s$tlw9%!2JAO% zwPewi-QXC{!xhKIj#2sjTTl)0}n}@N`7N{W=1DLw7kpe!!Zsa-=pa8*m(NH%XbHdb1Xf#@^W+ z0!Yl(Z&WF*q+t}rJ+X~J$AAkhsNVDQV?(l=i7Q)eikH_fxBDBC;`#gl3*YY74ymO- zu^WR8?-b)qS)xc+#&MP};#uWZXjqxtS8$~83O9k&BTMF?%87MjbR|K3ytK zDO-8yV;5vhR^p`+p+(ZmL}s%bYB1U6cA4RPB%6{$xxo07C&85m{tx^g_&@M};Qzq? jf&T;l-xmM>p8x{@D(Mktb)u`N00000NkvXXu0mjf(?NUb literal 0 HcmV?d00001 diff --git a/highlightjs/asset/styles/codepen-embed.css b/highlightjs/asset/styles/codepen-embed.css new file mode 100644 index 000000000..195c4a078 --- /dev/null +++ b/highlightjs/asset/styles/codepen-embed.css @@ -0,0 +1,60 @@ +/* + codepen.io Embed Theme + Author: Justin Perry + Original theme - https://github.com/chriskempson/tomorrow-theme +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #222; + color: #fff; +} + +.hljs-comment, +.hljs-quote { + color: #777; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-regexp, +.hljs-meta, +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-params, +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-deletion { + color: #ab875d; +} + +.hljs-section, +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-type, +.hljs-attribute { + color: #9b869b; +} + +.hljs-string, +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #8f9c6c; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/color-brewer.css b/highlightjs/asset/styles/color-brewer.css new file mode 100644 index 000000000..7934d986a --- /dev/null +++ b/highlightjs/asset/styles/color-brewer.css @@ -0,0 +1,71 @@ +/* + +Colorbrewer theme +Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock +Ported by Fabrício Tavares de Oliveira + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fff; +} + +.hljs, +.hljs-subst { + color: #000; +} + +.hljs-string, +.hljs-meta, +.hljs-symbol, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #756bb1; +} + +.hljs-comment, +.hljs-quote { + color: #636363; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-bullet, +.hljs-link { + color: #31a354; +} + +.hljs-deletion, +.hljs-variable { + color: #88f; +} + + + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-doctag, +.hljs-type, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-strong { + color: #3182bd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-attribute { + color: #e6550d; +} diff --git a/highlightjs/asset/styles/darcula.css b/highlightjs/asset/styles/darcula.css new file mode 100644 index 000000000..be182d0b5 --- /dev/null +++ b/highlightjs/asset/styles/darcula.css @@ -0,0 +1,77 @@ +/* + +Darcula color scheme from the JetBrains family of IDEs + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #2b2b2b; +} + +.hljs { + color: #bababa; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-link, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #6896ba; +} + +.hljs-code, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-attribute, +.hljs-name, +.hljs-variable { + color: #cb7832; +} + +.hljs-params { + color: #b9b9b9; +} + +.hljs-string { + color: #6a8759; +} + +.hljs-subst, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-symbol, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #e0c46c; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #7f7f7f; +} diff --git a/highlightjs/asset/styles/dark.css b/highlightjs/asset/styles/dark.css new file mode 100644 index 000000000..b4724f5f5 --- /dev/null +++ b/highlightjs/asset/styles/dark.css @@ -0,0 +1,63 @@ +/* + +Dark style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #444; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: white; +} + +.hljs, +.hljs-subst { + color: #ddd; +} + +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #d88; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #777; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/darkula.css b/highlightjs/asset/styles/darkula.css new file mode 100644 index 000000000..f4646c3c5 --- /dev/null +++ b/highlightjs/asset/styles/darkula.css @@ -0,0 +1,6 @@ +/* + Deprecated due to a typo in the name and left here for compatibility purpose only. + Please use darcula.css instead. +*/ + +@import url('darcula.css'); diff --git a/highlightjs/asset/styles/default.css b/highlightjs/asset/styles/default.css new file mode 100644 index 000000000..f1bfade31 --- /dev/null +++ b/highlightjs/asset/styles/default.css @@ -0,0 +1,99 @@ +/* + +Original highlight.js style (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #F0F0F0; +} + + +/* Base color: saturation 0; */ + +.hljs, +.hljs-subst { + color: #444; +} + +.hljs-comment { + color: #888888; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; +} + + +/* User color: hue: 0 */ + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060; +} + + +/* Language color: hue: 90; */ + +.hljs-literal { + color: #78A960; +} + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300; +} + + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/docco.css b/highlightjs/asset/styles/docco.css new file mode 100644 index 000000000..db366be37 --- /dev/null +++ b/highlightjs/asset/styles/docco.css @@ -0,0 +1,97 @@ +/* +Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #000; + background: #f8f8ff; +} + +.hljs-comment, +.hljs-quote { + color: #408080; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-subst { + color: #954121; +} + +.hljs-number { + color: #40a070; +} + +.hljs-string, +.hljs-doctag { + color: #219161; +} + +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #19469d; +} + +.hljs-params { + color: #00f; +} + +.hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-variable, +.hljs-template-variable { + color: #008080; +} + +.hljs-regexp, +.hljs-link { + color: #b68; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/dracula.css b/highlightjs/asset/styles/dracula.css new file mode 100644 index 000000000..d591db680 --- /dev/null +++ b/highlightjs/asset/styles/dracula.css @@ -0,0 +1,76 @@ +/* + +Dracula Theme v1.2.0 + +https://github.com/zenorocha/dracula-theme + +Copyright 2015, All rights reserved + +Code licensed under the MIT license +http://zenorocha.mit-license.org + +@author Éverton Ribeiro +@author Zeno Rocha + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282a36; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: #8be9fd; +} + +.hljs-function .hljs-keyword { + color: #ff79c6; +} + +.hljs, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #f1fa8c; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #6272a4; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/far.css b/highlightjs/asset/styles/far.css new file mode 100644 index 000000000..2b3f87b56 --- /dev/null +++ b/highlightjs/asset/styles/far.css @@ -0,0 +1,71 @@ +/* + +FAR Style (c) MajestiC + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000080; +} + +.hljs, +.hljs-subst { + color: #0ff; +} + +.hljs-string, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #ff0; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-variable { + color: #fff; +} + +.hljs-comment, +.hljs-quote, +.hljs-doctag, +.hljs-deletion { + color: #888; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #0f0; +} + +.hljs-meta { + color: #008080; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/foundation.css b/highlightjs/asset/styles/foundation.css new file mode 100644 index 000000000..f1fe64b37 --- /dev/null +++ b/highlightjs/asset/styles/foundation.css @@ -0,0 +1,88 @@ +/* +Description: Foundation 4 docs style for highlight.js +Author: Dan Allen +Website: http://foundation.zurb.com/docs/ +Version: 1.0 +Date: 2013-04-02 +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #eee; color: black; +} + +.hljs-link, +.hljs-emphasis, +.hljs-attribute, +.hljs-addition { + color: #070; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong, +.hljs-string, +.hljs-deletion { + color: #d14; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-quote, +.hljs-comment { + color: #998; + font-style: italic; +} + +.hljs-section, +.hljs-title { + color: #900; +} + +.hljs-class .hljs-title, +.hljs-type { + color: #458; +} + +.hljs-variable, +.hljs-template-variable { + color: #336699; +} + +.hljs-bullet { + color: #997700; +} + +.hljs-meta { + color: #3344bb; +} + +.hljs-code, +.hljs-number, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag { + color: #099; +} + +.hljs-regexp { + background-color: #fff0ff; + color: #880088; +} + +.hljs-symbol { + color: #990073; +} + +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #007700; +} diff --git a/highlightjs/asset/styles/github-gist.css b/highlightjs/asset/styles/github-gist.css new file mode 100644 index 000000000..155f0b916 --- /dev/null +++ b/highlightjs/asset/styles/github-gist.css @@ -0,0 +1,71 @@ +/** + * GitHub Gist Theme + * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro + */ + +.hljs { + display: block; + background: white; + padding: 0.5em; + color: #333333; + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #a71d5d; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-title, +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #795da3; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/highlightjs/asset/styles/github.css b/highlightjs/asset/styles/github.css new file mode 100644 index 000000000..791932b87 --- /dev/null +++ b/highlightjs/asset/styles/github.css @@ -0,0 +1,99 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} + +.hljs-string, +.hljs-doctag { + color: #d14; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-regexp, +.hljs-link { + color: #009926; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/googlecode.css b/highlightjs/asset/styles/googlecode.css new file mode 100644 index 000000000..884ad6353 --- /dev/null +++ b/highlightjs/asset/styles/googlecode.css @@ -0,0 +1,89 @@ +/* + +Google Code style (c) Aahan Krish + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-comment, +.hljs-quote { + color: #800; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-title, +.hljs-name { + color: #008; +} + +.hljs-variable, +.hljs-template-variable { + color: #660; +} + +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-regexp { + color: #080; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-meta, +.hljs-number, +.hljs-link { + color: #066; +} + +.hljs-title, +.hljs-doctag, +.hljs-type, +.hljs-attr, +.hljs-built_in, +.hljs-builtin-name, +.hljs-params { + color: #606; +} + +.hljs-attribute, +.hljs-subst { + color: #000; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #9B703F +} + +.hljs-addition { + background-color: #baeeba; +} + +.hljs-deletion { + background-color: #ffc8bd; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/grayscale.css b/highlightjs/asset/styles/grayscale.css new file mode 100644 index 000000000..5376f3406 --- /dev/null +++ b/highlightjs/asset/styles/grayscale.css @@ -0,0 +1,101 @@ +/* + +grayscale style (c) MY Sun + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #fff; +} + +.hljs-comment, +.hljs-quote { + color: #777; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal { + color: #777; +} + +.hljs-string, +.hljs-doctag, +.hljs-formula { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #000; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-class .hljs-title, +.hljs-type, +.hljs-name { + color: #333; + font-weight: bold; +} + +.hljs-tag { + color: #333; +} + +.hljs-regexp { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #000; + text-decoration: underline; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + color: #fff; + background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat; +} + +.hljs-addition { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/gruvbox-dark.css b/highlightjs/asset/styles/gruvbox-dark.css new file mode 100644 index 000000000..f563811a8 --- /dev/null +++ b/highlightjs/asset/styles/gruvbox-dark.css @@ -0,0 +1,108 @@ +/* + +Gruvbox style (dark) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282828; +} + +.hljs, +.hljs-subst { + color: #ebdbb2; +} + +/* Gruvbox Red */ +.hljs-deletion, +.hljs-formula, +.hljs-keyword, +.hljs-link, +.hljs-selector-tag { + color: #fb4934; +} + +/* Gruvbox Blue */ +.hljs-built_in, +.hljs-emphasis, +.hljs-name, +.hljs-quote, +.hljs-strong, +.hljs-title, +.hljs-variable { + color: #83a598; +} + +/* Gruvbox Yellow */ +.hljs-attr, +.hljs-params, +.hljs-template-tag, +.hljs-type { + color: #fabd2f; +} + +/* Gruvbox Purple */ +.hljs-builtin-name, +.hljs-doctag, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +/* Gruvbox Orange */ +.hljs-code, +.hljs-meta, +.hljs-regexp, +.hljs-selector-id, +.hljs-template-variable { + color: #fe8019; +} + +/* Gruvbox Green */ +.hljs-addition, +.hljs-meta-string, +.hljs-section, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-string, +.hljs-symbol { + color: #b8bb26; +} + +/* Gruvbox Aqua */ +.hljs-attribute, +.hljs-bullet, +.hljs-class, +.hljs-function, +.hljs-function .hljs-keyword, +.hljs-meta-keyword, +.hljs-selector-pseudo, +.hljs-tag { + color: #8ec07c; +} + +/* Gruvbox Gray */ +.hljs-comment { + color: #928374; +} + +/* Gruvbox Purple */ +.hljs-link_label, +.hljs-literal, +.hljs-number { + color: #d3869b; +} + +.hljs-comment, +.hljs-emphasis { + font-style: italic; +} + +.hljs-section, +.hljs-strong, +.hljs-tag { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/gruvbox-light.css b/highlightjs/asset/styles/gruvbox-light.css new file mode 100644 index 000000000..ff45468eb --- /dev/null +++ b/highlightjs/asset/styles/gruvbox-light.css @@ -0,0 +1,108 @@ +/* + +Gruvbox style (light) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fbf1c7; +} + +.hljs, +.hljs-subst { + color: #3c3836; +} + +/* Gruvbox Red */ +.hljs-deletion, +.hljs-formula, +.hljs-keyword, +.hljs-link, +.hljs-selector-tag { + color: #9d0006; +} + +/* Gruvbox Blue */ +.hljs-built_in, +.hljs-emphasis, +.hljs-name, +.hljs-quote, +.hljs-strong, +.hljs-title, +.hljs-variable { + color: #076678; +} + +/* Gruvbox Yellow */ +.hljs-attr, +.hljs-params, +.hljs-template-tag, +.hljs-type { + color: #b57614; +} + +/* Gruvbox Purple */ +.hljs-builtin-name, +.hljs-doctag, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +/* Gruvbox Orange */ +.hljs-code, +.hljs-meta, +.hljs-regexp, +.hljs-selector-id, +.hljs-template-variable { + color: #af3a03; +} + +/* Gruvbox Green */ +.hljs-addition, +.hljs-meta-string, +.hljs-section, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-string, +.hljs-symbol { + color: #79740e; +} + +/* Gruvbox Aqua */ +.hljs-attribute, +.hljs-bullet, +.hljs-class, +.hljs-function, +.hljs-function .hljs-keyword, +.hljs-meta-keyword, +.hljs-selector-pseudo, +.hljs-tag { + color: #427b58; +} + +/* Gruvbox Gray */ +.hljs-comment { + color: #928374; +} + +/* Gruvbox Purple */ +.hljs-link_label, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +.hljs-comment, +.hljs-emphasis { + font-style: italic; +} + +.hljs-section, +.hljs-strong, +.hljs-tag { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/hopscotch.css b/highlightjs/asset/styles/hopscotch.css new file mode 100644 index 000000000..32e60d230 --- /dev/null +++ b/highlightjs/asset/styles/hopscotch.css @@ -0,0 +1,83 @@ +/* + * Hopscotch + * by Jan T. Sott + * https://github.com/idleberg/Hopscotch + * + * This work is licensed under the Creative Commons CC0 1.0 Universal License + */ + +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #989498; +} + +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-deletion { + color: #dd464c; +} + +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #fd8b19; +} + +/* Yellow */ +.hljs-class .hljs-title { + color: #fdcc59; +} + +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #8fc13e; +} + +/* Aqua */ +.hljs-meta { + color: #149b93; +} + +/* Blue */ +.hljs-function, +.hljs-section, +.hljs-title { + color: #1290bf; +} + +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c85e7c; +} + +.hljs { + display: block; + background: #322931; + color: #b9b5b8; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/hybrid.css b/highlightjs/asset/styles/hybrid.css new file mode 100644 index 000000000..29735a189 --- /dev/null +++ b/highlightjs/asset/styles/hybrid.css @@ -0,0 +1,102 @@ +/* + +vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) + +*/ + +/*background color*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #1d1f21; +} + +/*selection color*/ +.hljs::selection, +.hljs span::selection { + background: #373b41; +} + +.hljs::-moz-selection, +.hljs span::-moz-selection { + background: #373b41; +} + +/*foreground color*/ +.hljs { + color: #c5c8c6; +} + +/*color: fg_yellow*/ +.hljs-title, +.hljs-name { + color: #f0c674; +} + +/*color: fg_comment*/ +.hljs-comment, +.hljs-meta, +.hljs-meta .hljs-keyword { + color: #707880; +} + +/*color: fg_red*/ +.hljs-number, +.hljs-symbol, +.hljs-literal, +.hljs-deletion, +.hljs-link { + color: #cc6666 +} + +/*color: fg_green*/ +.hljs-string, +.hljs-doctag, +.hljs-addition, +.hljs-regexp, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #b5bd68; +} + +/*color: fg_purple*/ +.hljs-attribute, +.hljs-code, +.hljs-selector-id { + color: #b294bb; +} + +/*color: fg_blue*/ +.hljs-keyword, +.hljs-selector-tag, +.hljs-bullet, +.hljs-tag { + color: #81a2be; +} + +/*color: fg_aqua*/ +.hljs-subst, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8abeb7; +} + +/*color: fg_orange*/ +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-quote, +.hljs-section, +.hljs-selector-class { + color: #de935f; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/idea.css b/highlightjs/asset/styles/idea.css new file mode 100644 index 000000000..3bf1892bd --- /dev/null +++ b/highlightjs/asset/styles/idea.css @@ -0,0 +1,97 @@ +/* + +Intellij Idea-like styling (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #000; + background: #fff; +} + +.hljs-subst, +.hljs-title { + font-weight: normal; + color: #000; +} + +.hljs-comment, +.hljs-quote { + color: #808080; + font-style: italic; +} + +.hljs-meta { + color: #808000; +} + +.hljs-tag { + background: #efefef; +} + +.hljs-section, +.hljs-name, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag, +.hljs-type, +.hljs-selector-id, +.hljs-selector-class { + font-weight: bold; + color: #000080; +} + +.hljs-attribute, +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: bold; + color: #0000ff; +} + +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: normal; +} + +.hljs-string { + color: #008000; + font-weight: bold; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-formula { + color: #000; + background: #d0eded; + font-style: italic; +} + +.hljs-doctag { + text-decoration: underline; +} + +.hljs-variable, +.hljs-template-variable { + color: #660e7a; +} + +.hljs-addition { + background: #baeeba; +} + +.hljs-deletion { + background: #ffc8bd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/ir-black.css b/highlightjs/asset/styles/ir-black.css new file mode 100644 index 000000000..bd4c755ed --- /dev/null +++ b/highlightjs/asset/styles/ir-black.css @@ -0,0 +1,73 @@ +/* + IR_Black style (c) Vasily Mikhailitchenko +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000; + color: #f8f8f8; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7c7c7c; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag, +.hljs-name { + color: #96cbfe; +} + +.hljs-attribute, +.hljs-selector-id { + color: #ffffb6; +} + +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition { + color: #a8ff60; +} + +.hljs-subst { + color: #daefa3; +} + +.hljs-regexp, +.hljs-link { + color: #e9c062; +} + +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-doctag { + color: #ffffb6; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-literal { + color: #c6c5fe; +} + +.hljs-number, +.hljs-deletion { + color:#ff73fd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/kimbie.dark.css b/highlightjs/asset/styles/kimbie.dark.css new file mode 100644 index 000000000..d139cb5d0 --- /dev/null +++ b/highlightjs/asset/styles/kimbie.dark.css @@ -0,0 +1,74 @@ +/* + Name: Kimbie (dark) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ + +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #d6baad; +} + +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958; +} + +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32; +} + +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431; +} + +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a; +} + +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a; +} + +.hljs { + display: block; + overflow-x: auto; + background: #221a0f; + color: #d3af86; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/kimbie.light.css b/highlightjs/asset/styles/kimbie.light.css new file mode 100644 index 000000000..04ff6ed3a --- /dev/null +++ b/highlightjs/asset/styles/kimbie.light.css @@ -0,0 +1,74 @@ +/* + Name: Kimbie (light) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ + +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #a57a4c; +} + +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958; +} + +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32; +} + +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431; +} + +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a; +} + +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a; +} + +.hljs { + display: block; + overflow-x: auto; + background: #fbebd4; + color: #84613d; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/magula.css b/highlightjs/asset/styles/magula.css new file mode 100644 index 000000000..44dee5e8e --- /dev/null +++ b/highlightjs/asset/styles/magula.css @@ -0,0 +1,70 @@ +/* +Description: Magula style for highligh.js +Author: Ruslan Keba +Website: http://rukeba.com/ +Version: 1.0 +Date: 2009-01-03 +Music: Aphex Twin / Xtal +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background-color: #f4f4f4; +} + +.hljs, +.hljs-subst { + color: black; +} + +.hljs-string, +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #050; +} + +.hljs-comment, +.hljs-quote { + color: #777; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-type, +.hljs-link { + color: #800; +} + +.hljs-deletion, +.hljs-meta { + color: #00e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-tag, +.hljs-name { + font-weight: bold; + color: navy; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/mono-blue.css b/highlightjs/asset/styles/mono-blue.css new file mode 100644 index 000000000..884c97c76 --- /dev/null +++ b/highlightjs/asset/styles/mono-blue.css @@ -0,0 +1,59 @@ +/* + Five-color theme from a single blue hue. +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #eaeef3; +} + +.hljs { + color: #00193a; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-comment { + color: #738191; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-addition, +.hljs-tag, +.hljs-quote, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #0048ab; +} + +.hljs-meta, +.hljs-subst, +.hljs-symbol, +.hljs-regexp, +.hljs-attribute, +.hljs-deletion, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-bullet { + color: #4c81c9; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/monokai-sublime.css b/highlightjs/asset/styles/monokai-sublime.css new file mode 100644 index 000000000..2864170da --- /dev/null +++ b/highlightjs/asset/styles/monokai-sublime.css @@ -0,0 +1,83 @@ +/* + +Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #23241f; +} + +.hljs, +.hljs-tag, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #ae81ff; +} + +.hljs-code, +.hljs-title, +.hljs-section, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-attr { + color: #f92672; +} + +.hljs-symbol, +.hljs-attribute { + color: #66d9ef; +} + +.hljs-params, +.hljs-class .hljs-title { + color: #f8f8f2; +} + +.hljs-string, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-variable { + color: #e6db74; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} diff --git a/highlightjs/asset/styles/monokai.css b/highlightjs/asset/styles/monokai.css new file mode 100644 index 000000000..775d53f91 --- /dev/null +++ b/highlightjs/asset/styles/monokai.css @@ -0,0 +1,70 @@ +/* +Monokai style - ported by Luigi Maselli - http://grigio.org +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #272822; color: #ddd; +} + +.hljs-tag, +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-strong, +.hljs-name { + color: #f92672; +} + +.hljs-code { + color: #66d9ef; +} + +.hljs-class .hljs-title { + color: white; +} + +.hljs-attribute, +.hljs-symbol, +.hljs-regexp, +.hljs-link { + color: #bf79db; +} + +.hljs-string, +.hljs-bullet, +.hljs-subst, +.hljs-title, +.hljs-section, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #a6e22e; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-selector-id { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/obsidian.css b/highlightjs/asset/styles/obsidian.css new file mode 100644 index 000000000..356630fa2 --- /dev/null +++ b/highlightjs/asset/styles/obsidian.css @@ -0,0 +1,88 @@ +/** + * Obsidian style + * ported by Alexander Marenin (http://github.com/ioncreature) + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282b2e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-selector-id { + color: #93c763; +} + +.hljs-number { + color: #ffcd22; +} + +.hljs { + color: #e0e2e4; +} + +.hljs-attribute { + color: #668bb0; +} + +.hljs-code, +.hljs-class .hljs-title, +.hljs-section { + color: white; +} + +.hljs-regexp, +.hljs-link { + color: #d39745; +} + +.hljs-meta { + color: #557182; +} + +.hljs-tag, +.hljs-name, +.hljs-bullet, +.hljs-subst, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8cbbad; +} + +.hljs-string, +.hljs-symbol { + color: #ec7600; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion { + color: #818e96; +} + +.hljs-selector-class { + color: #A082BD +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/ocean.css b/highlightjs/asset/styles/ocean.css new file mode 100644 index 000000000..5901581b4 --- /dev/null +++ b/highlightjs/asset/styles/ocean.css @@ -0,0 +1,74 @@ +/* Ocean Dark Theme */ +/* https://github.com/gavsiu */ +/* Original theme - https://github.com/chriskempson/base16 */ + +/* Ocean Comment */ +.hljs-comment, +.hljs-quote { + color: #65737e; +} + +/* Ocean Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #bf616a; +} + +/* Ocean Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #d08770; +} + +/* Ocean Yellow */ +.hljs-attribute { + color: #ebcb8b; +} + +/* Ocean Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #a3be8c; +} + +/* Ocean Blue */ +.hljs-title, +.hljs-section { + color: #8fa1b3; +} + +/* Ocean Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b48ead; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2b303b; + color: #c0c5ce; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/paraiso-dark.css b/highlightjs/asset/styles/paraiso-dark.css new file mode 100644 index 000000000..e7292401c --- /dev/null +++ b/highlightjs/asset/styles/paraiso-dark.css @@ -0,0 +1,72 @@ +/* + Paraíso (dark) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ + +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #8d8687; +} + +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155; +} + +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15; +} + +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418; +} + +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685; +} + +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2f1e2e; + color: #a39e9b; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/paraiso-light.css b/highlightjs/asset/styles/paraiso-light.css new file mode 100644 index 000000000..944857cd8 --- /dev/null +++ b/highlightjs/asset/styles/paraiso-light.css @@ -0,0 +1,72 @@ +/* + Paraíso (light) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ + +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #776e71; +} + +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155; +} + +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15; +} + +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418; +} + +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685; +} + +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #e7e9db; + color: #4f424c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/pojoaque.css b/highlightjs/asset/styles/pojoaque.css new file mode 100644 index 000000000..2e07847b2 --- /dev/null +++ b/highlightjs/asset/styles/pojoaque.css @@ -0,0 +1,83 @@ +/* + +Pojoaque Style by Jason Tate +http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html +Based on Solarized Style from http://ethanschoonover.com/solarized + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #dccf8f; + background: url(./pojoaque.jpg) repeat scroll left top #181914; +} + +.hljs-comment, +.hljs-quote { + color: #586e75; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-addition { + color: #b64926; +} + +.hljs-number, +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #468966; +} + +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-name { + color: #ffb03b; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type, +.hljs-tag { + color: #b58900; +} + +.hljs-attribute { + color: #b89859; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-subst, +.hljs-meta { + color: #cb4b16; +} + +.hljs-deletion { + color: #dc322f; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #d3a60c; +} + +.hljs-formula { + background: #073642; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/pojoaque.jpg b/highlightjs/asset/styles/pojoaque.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c07d4ab40b6d77e90ff69f0012bcd33b21d31c3 GIT binary patch literal 1186 zcmZXSe^8Tk9LK-kXFs3)f@f?)Cddzw3v4wdZyXQ;4x3=;Ja*N#%n9ik!UGmt9H3k0 zJST|5jOc(ID$FQt3C?jQZBws#kXolO1lg9Pba9BB=Q+UEBX!nY@6Uhl&+ofe$Q$y5 z@ci`~)&qzDP(lOiQ5p?p z(`j^e7!yUAVHk%K#^GQXn?s0=VLYCI$HRoe=xCuZ>A6A3@sxEP#XqNFpIb=0)KQ#Nss_tD17;m4@$JKL;LR|K|QF3f%!L5+s(9Ft8SQ zG|~pGpEGFW5Z|OA)-O@mNHy-g@7m8JTf?kl@vUKBGmw)Y*9sDRNr3PN!IKefWaydTe1D zjzpyzPnD3}hBNaS4aFX7=0&~I*Hu7#4au@qVBglH#-m;QFOx_`=j z{EqRY#Eh*yoWP^pa4H>8GH{rO?!_+xwL0(k4yL^D%^nBkJ*UI;Lx;ped8d|f*S_s@ z3~ilcRC(&NT#9Gn#UD;o^EYSMXDMf%XcUi3>;WXXD-QX3P9wMyP7eA&RS{)h5{??W3^Rq=goFJ>?lA~J- zdYe>!xvYLW*fPT0RK7wsJRg^?x#W1*GP9_f`6t>QD_X>0d!owyN>nO2?U5}|3?hX_UZYT@^>S!9eB~bZ9U`q;`U)@L670o1g z`Hd}h<_WRvUc|n*%v4Hbb-4tJD40iyF^q%g*&!6>hkYDvi-{Uc4yTM zzcthN4Z{ka!+F_KzYV#yWi;c^X^q6g`pD8cp?$Kl?hCz0s^a|mH%P!CF%*<6k^~i` zT5Mi-t5-frUcHkk^Qh}+N)Kz1&Bi95`oNc|quI>tUi~BY>xcF9(%tv2i{G6kE9*q~ qCoAGl20`)w0rdgp9H%Q=M5|p`hOhFz6$I%Y&ncY8>c?7PXyh+SL&XXJ literal 0 HcmV?d00001 diff --git a/highlightjs/asset/styles/purebasic.css b/highlightjs/asset/styles/purebasic.css new file mode 100644 index 000000000..5ce9b9e07 --- /dev/null +++ b/highlightjs/asset/styles/purebasic.css @@ -0,0 +1,96 @@ +/* + +PureBASIC native IDE style ( version 1.0 - April 2016 ) + +by Tristano Ajmone + +Public Domain + +NOTE_1: PureBASIC code syntax highlighting only applies the following classes: + .hljs-comment + .hljs-function + .hljs-keywords + .hljs-string + .hljs-symbol + + Other classes are added here for the benefit of styling other languages with the look and feel of PureBASIC native IDE style. + If you need to customize a stylesheet for PureBASIC only, remove all non-relevant classes -- PureBASIC-related classes are followed by + a "--- used for PureBASIC ... ---" comment on same line. + +NOTE_2: Color names provided in comments were derived using "Name that Color" online tool: + http://chir.ag/projects/name-that-color +*/ + +.hljs { /* Common set of rules required by highlight.js (don'r remove!) */ + display: block; + overflow-x: auto; + padding: 0.5em; + background: #FFFFDF; /* Half and Half (approx.) */ +/* --- Uncomment to add PureBASIC native IDE styled font! + font-family: Consolas; +*/ +} + +.hljs, /* --- used for PureBASIC base color --- */ +.hljs-type, /* --- used for PureBASIC Procedures return type --- */ +.hljs-function, /* --- used for wrapping PureBASIC Procedures definitions --- */ +.hljs-name, +.hljs-number, +.hljs-attr, +.hljs-params, +.hljs-subst { + color: #000000; /* Black */ +} + +.hljs-comment, /* --- used for PureBASIC Comments --- */ +.hljs-regexp, +.hljs-section, +.hljs-selector-pseudo, +.hljs-addition { + color: #00AAAA; /* Persian Green (approx.) */ +} + +.hljs-title, /* --- used for PureBASIC Procedures Names --- */ +.hljs-tag, +.hljs-variable, +.hljs-code { + color: #006666; /* Blue Stone (approx.) */ +} + +.hljs-keyword, /* --- used for PureBASIC Keywords --- */ +.hljs-class, +.hljs-meta-keyword, +.hljs-selector-class, +.hljs-built_in, +.hljs-builtin-name { + color: #006666; /* Blue Stone (approx.) */ + font-weight: bold; +} + +.hljs-string, /* --- used for PureBASIC Strings --- */ +.hljs-selector-attr { + color: #0080FF; /* Azure Radiance (approx.) */ +} + +.hljs-symbol, /* --- used for PureBASIC Constants --- */ +.hljs-link, +.hljs-deletion, +.hljs-attribute { + color: #924B72; /* Cannon Pink (approx.) */ +} + +.hljs-meta, +.hljs-literal, +.hljs-selector-id { + color: #924B72; /* Cannon Pink (approx.) */ + font-weight: bold; +} + +.hljs-strong, +.hljs-name { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/qtcreator_dark.css b/highlightjs/asset/styles/qtcreator_dark.css new file mode 100644 index 000000000..7aa56a365 --- /dev/null +++ b/highlightjs/asset/styles/qtcreator_dark.css @@ -0,0 +1,83 @@ +/* + +Qt Creator dark color scheme + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000000; +} + +.hljs, +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #aaaaaa; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #ff55ff; +} + +.hljs-code +.hljs-selector-class { + color: #aaaaff; +} + +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #ffff55; +} + +.hljs-attribute { + color: #ff5555; +} + +.hljs-variable, +.hljs-params, +.hljs-class .hljs-title { + color: #8888ff; +} + +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #ff55ff; +} + +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #55ffff; +} diff --git a/highlightjs/asset/styles/qtcreator_light.css b/highlightjs/asset/styles/qtcreator_light.css new file mode 100644 index 000000000..1efa2c660 --- /dev/null +++ b/highlightjs/asset/styles/qtcreator_light.css @@ -0,0 +1,83 @@ +/* + +Qt Creator light color scheme + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #ffffff; +} + +.hljs, +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #000000; +} + +.hljs-strong, +.hljs-emphasis { + color: #000000; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #000080; +} + +.hljs-code +.hljs-selector-class { + color: #800080; +} + +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #808000; +} + +.hljs-attribute { + color: #800000; +} + +.hljs-variable, +.hljs-params, +.hljs-class .hljs-title { + color: #0055AF; +} + +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #008000; +} + +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #008000; +} diff --git a/highlightjs/asset/styles/railscasts.css b/highlightjs/asset/styles/railscasts.css new file mode 100644 index 000000000..008cdc5bf --- /dev/null +++ b/highlightjs/asset/styles/railscasts.css @@ -0,0 +1,106 @@ +/* + +Railscasts-like style (c) Visoft, Inc. (Damien White) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #232323; + color: #e6e1dc; +} + +.hljs-comment, +.hljs-quote { + color: #bc9458; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag { + color: #c26230; +} + +.hljs-string, +.hljs-number, +.hljs-regexp, +.hljs-variable, +.hljs-template-variable { + color: #a5c261; +} + +.hljs-subst { + color: #519f50; +} + +.hljs-tag, +.hljs-name { + color: #e8bf6a; +} + +.hljs-type { + color: #da4939; +} + + +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name, +.hljs-attr, +.hljs-link { + color: #6d9cbe; +} + +.hljs-params { + color: #d0d0ff; +} + +.hljs-attribute { + color: #cda869; +} + +.hljs-meta { + color: #9b859d; +} + +.hljs-title, +.hljs-section { + color: #ffc66d; +} + +.hljs-addition { + background-color: #144212; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #600; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.hljs-selector-class { + color: #9b703f; +} + +.hljs-selector-id { + color: #8b98ab; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/highlightjs/asset/styles/rainbow.css b/highlightjs/asset/styles/rainbow.css new file mode 100644 index 000000000..905eb8ef1 --- /dev/null +++ b/highlightjs/asset/styles/rainbow.css @@ -0,0 +1,85 @@ +/* + +Style with support for rainbow parens + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #474949; + color: #d1d9e1; +} + + +.hljs-comment, +.hljs-quote { + color: #969896; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-type, +.hljs-addition { + color: #cc99cc; +} + +.hljs-number, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #f99157; +} + +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #8abeb7; +} + +.hljs-title, +.hljs-name, +.hljs-section, +.hljs-built_in { + color: #b5bd68; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-class .hljs-title { + color: #ffcc66; +} + +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-link { + color: #f99157; +} + +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #eee8d5; +} + +.hljs-attr, +.hljs-attribute { + color: #81a2be; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/routeros.css b/highlightjs/asset/styles/routeros.css new file mode 100644 index 000000000..ebe23990d --- /dev/null +++ b/highlightjs/asset/styles/routeros.css @@ -0,0 +1,108 @@ +/* + + highlight.js style for Microtik RouterOS script + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #F0F0F0; +} + +/* Base color: saturation 0; */ + +.hljs, +.hljs-subst { + color: #444; +} + +.hljs-comment { + color: #888888; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; +} + +.hljs-attribute { + color: #0E9A00; +} + +.hljs-function { + color: #99069A; +} + +.hljs-builtin-name { + color: #99069A; +} + +/* User color: hue: 0 */ + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060; +} + + +/* Language color: hue: 90; */ + +.hljs-literal { + color: #78A960; +} + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #0C9A9A; +} + + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/school-book.css b/highlightjs/asset/styles/school-book.css new file mode 100644 index 000000000..964b51d84 --- /dev/null +++ b/highlightjs/asset/styles/school-book.css @@ -0,0 +1,72 @@ +/* + +School Book style from goldblog.com.ua (c) Zaripov Yura + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 15px 0.5em 0.5em 30px; + font-size: 11px; + line-height:16px; +} + +pre{ + background:#f6f6ae url(./school-book.png); + border-top: solid 2px #d2e8b9; + border-bottom: solid 1px #d2e8b9; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color:#005599; + font-weight:bold; +} + +.hljs, +.hljs-subst { + color: #3e5915; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-built_in, +.hljs-builtin-name, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link { + color: #2c009f; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #e60415; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/school-book.png b/highlightjs/asset/styles/school-book.png new file mode 100644 index 0000000000000000000000000000000000000000..956e9790a0e2c079b3d568348ff3accd1d9cac30 GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0y~yV7?7x3vjRjNjAS6Ga$v1?&#~tz_9*=IcwKTAYZb? zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|R4)r;B4q#jQ7Ycl#YS5MfK$ z?b^fh#qmaEhFDxvyThwfhdfkOPApt1lr{NA;Vr%uzxJuVIyzm(ed_8_-0$LLU})H&o5Re&aDemE>EG#(|F^t9_pa-H z_Mf?rMVrs}-M?S|?ZdY@c6s41zy8~}@a{v&#Ea7V)wJ$+#K|u$5UvWCdFLwGac}6w{_s*=8A6L7Rfc|9gboFyt I=akR{0OLZ+qyPW_ literal 0 HcmV?d00001 diff --git a/highlightjs/asset/styles/solarized-dark.css b/highlightjs/asset/styles/solarized-dark.css new file mode 100644 index 000000000..b4c0da1f7 --- /dev/null +++ b/highlightjs/asset/styles/solarized-dark.css @@ -0,0 +1,84 @@ +/* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #002b36; + color: #839496; +} + +.hljs-comment, +.hljs-quote { + color: #586e75; +} + +/* Solarized Green */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #859900; +} + +/* Solarized Cyan */ +.hljs-number, +.hljs-string, +.hljs-meta .hljs-meta-string, +.hljs-literal, +.hljs-doctag, +.hljs-regexp { + color: #2aa198; +} + +/* Solarized Blue */ +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #268bd2; +} + +/* Solarized Yellow */ +.hljs-attribute, +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type { + color: #b58900; +} + +/* Solarized Orange */ +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link { + color: #cb4b16; +} + +/* Solarized Red */ +.hljs-built_in, +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #073642; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/solarized-light.css b/highlightjs/asset/styles/solarized-light.css new file mode 100644 index 000000000..fdcfcc72c --- /dev/null +++ b/highlightjs/asset/styles/solarized-light.css @@ -0,0 +1,84 @@ +/* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fdf6e3; + color: #657b83; +} + +.hljs-comment, +.hljs-quote { + color: #93a1a1; +} + +/* Solarized Green */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #859900; +} + +/* Solarized Cyan */ +.hljs-number, +.hljs-string, +.hljs-meta .hljs-meta-string, +.hljs-literal, +.hljs-doctag, +.hljs-regexp { + color: #2aa198; +} + +/* Solarized Blue */ +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #268bd2; +} + +/* Solarized Yellow */ +.hljs-attribute, +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type { + color: #b58900; +} + +/* Solarized Orange */ +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link { + color: #cb4b16; +} + +/* Solarized Red */ +.hljs-built_in, +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #eee8d5; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/sunburst.css b/highlightjs/asset/styles/sunburst.css new file mode 100644 index 000000000..f56dd5e9b --- /dev/null +++ b/highlightjs/asset/styles/sunburst.css @@ -0,0 +1,102 @@ +/* + +Sunburst-like style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000; + color: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #aeaeae; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #e28964; +} + +.hljs-string { + color: #65b042; +} + +.hljs-subst { + color: #daefa3; +} + +.hljs-regexp, +.hljs-link { + color: #e9c062; +} + +.hljs-title, +.hljs-section, +.hljs-tag, +.hljs-name { + color: #89bdff; +} + +.hljs-class .hljs-title, +.hljs-doctag { + text-decoration: underline; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-number { + color: #3387cc; +} + +.hljs-params, +.hljs-variable, +.hljs-template-variable { + color: #3e87e3; +} + +.hljs-attribute { + color: #cda869; +} + +.hljs-meta { + color: #8996a8; +} + +.hljs-formula { + background-color: #0e2231; + color: #f8f8f8; + font-style: italic; +} + +.hljs-addition { + background-color: #253b22; + color: #f8f8f8; +} + +.hljs-deletion { + background-color: #420e09; + color: #f8f8f8; +} + +.hljs-selector-class { + color: #9b703f; +} + +.hljs-selector-id { + color: #8b98ab; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/tomorrow-night-blue.css b/highlightjs/asset/styles/tomorrow-night-blue.css new file mode 100644 index 000000000..78e59cc8c --- /dev/null +++ b/highlightjs/asset/styles/tomorrow-night-blue.css @@ -0,0 +1,75 @@ +/* Tomorrow Night Blue Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #7285b7; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #ff9da4; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #ffc58f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffeead; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #d1f1a9; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #bbdaff; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ebbbff; +} + +.hljs { + display: block; + overflow-x: auto; + background: #002451; + color: white; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/tomorrow-night-bright.css b/highlightjs/asset/styles/tomorrow-night-bright.css new file mode 100644 index 000000000..e05af8ae2 --- /dev/null +++ b/highlightjs/asset/styles/tomorrow-night-bright.css @@ -0,0 +1,74 @@ +/* Tomorrow Night Bright Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #d54e53; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #e78c45; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #e7c547; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b9ca4a; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #7aa6da; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c397d8; +} + +.hljs { + display: block; + overflow-x: auto; + background: black; + color: #eaeaea; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/tomorrow-night-eighties.css b/highlightjs/asset/styles/tomorrow-night-eighties.css new file mode 100644 index 000000000..08fd51c74 --- /dev/null +++ b/highlightjs/asset/styles/tomorrow-night-eighties.css @@ -0,0 +1,74 @@ +/* Tomorrow Night Eighties Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #999999; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #f2777a; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f99157; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffcc66; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #99cc99; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #6699cc; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #cc99cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2d2d2d; + color: #cccccc; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/tomorrow-night.css b/highlightjs/asset/styles/tomorrow-night.css new file mode 100644 index 000000000..ddd270a4e --- /dev/null +++ b/highlightjs/asset/styles/tomorrow-night.css @@ -0,0 +1,75 @@ +/* Tomorrow Night Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #cc6666; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #de935f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #f0c674; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b5bd68; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #81a2be; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b294bb; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1d1f21; + color: #c5c8c6; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/tomorrow.css b/highlightjs/asset/styles/tomorrow.css new file mode 100644 index 000000000..026a62fe3 --- /dev/null +++ b/highlightjs/asset/styles/tomorrow.css @@ -0,0 +1,72 @@ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #8e908c; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #c82829; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f5871f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #eab700; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #718c00; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #4271ae; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8959a8; +} + +.hljs { + display: block; + overflow-x: auto; + background: white; + color: #4d4d4c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/vs.css b/highlightjs/asset/styles/vs.css new file mode 100644 index 000000000..c5d07d311 --- /dev/null +++ b/highlightjs/asset/styles/vs.css @@ -0,0 +1,68 @@ +/* + +Visual Studio-like style based on original C# coloring by Jason Diamond + +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-comment, +.hljs-quote, +.hljs-variable { + color: #008000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-built_in, +.hljs-name, +.hljs-tag { + color: #00f; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-literal, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-addition { + color: #a31515; +} + +.hljs-deletion, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-meta { + color: #2b91af; +} + +.hljs-doctag { + color: #808080; +} + +.hljs-attr { + color: #f00; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #00b0e8; +} + + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/asset/styles/vs2015.css b/highlightjs/asset/styles/vs2015.css new file mode 100644 index 000000000..d1d9be3ca --- /dev/null +++ b/highlightjs/asset/styles/vs2015.css @@ -0,0 +1,115 @@ +/* + * Visual Studio 2015 dark style + * Author: Nicolas LLOBERA + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #1E1E1E; + color: #DCDCDC; +} + +.hljs-keyword, +.hljs-literal, +.hljs-symbol, +.hljs-name { + color: #569CD6; +} +.hljs-link { + color: #569CD6; + text-decoration: underline; +} + +.hljs-built_in, +.hljs-type { + color: #4EC9B0; +} + +.hljs-number, +.hljs-class { + color: #B8D7A3; +} + +.hljs-string, +.hljs-meta-string { + color: #D69D85; +} + +.hljs-regexp, +.hljs-template-tag { + color: #9A5334; +} + +.hljs-subst, +.hljs-function, +.hljs-title, +.hljs-params, +.hljs-formula { + color: #DCDCDC; +} + +.hljs-comment, +.hljs-quote { + color: #57A64A; + font-style: italic; +} + +.hljs-doctag { + color: #608B4E; +} + +.hljs-meta, +.hljs-meta-keyword, +.hljs-tag { + color: #9B9B9B; +} + +.hljs-variable, +.hljs-template-variable { + color: #BD63C5; +} + +.hljs-attr, +.hljs-attribute, +.hljs-builtin-name { + color: #9CDCFE; +} + +.hljs-section { + color: gold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +/*.hljs-code { + font-family:'Monospace'; +}*/ + +.hljs-bullet, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #D7BA7D; +} + +.hljs-addition { + background-color: #144212; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #600; + display: inline-block; + width: 100%; +} diff --git a/highlightjs/asset/styles/xcode.css b/highlightjs/asset/styles/xcode.css new file mode 100644 index 000000000..43dddad84 --- /dev/null +++ b/highlightjs/asset/styles/xcode.css @@ -0,0 +1,93 @@ +/* + +XCode style (c) Angel Garcia + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fff; + color: black; +} + +.hljs-comment, +.hljs-quote { + color: #006a00; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #aa0d91; +} + +.hljs-name { + color: #008; +} + +.hljs-variable, +.hljs-template-variable { + color: #660; +} + +.hljs-string { + color: #c41a16; +} + +.hljs-regexp, +.hljs-link { + color: #080; +} + +.hljs-title, +.hljs-tag, +.hljs-symbol, +.hljs-bullet, +.hljs-number, +.hljs-meta { + color: #1c00cf; +} + +.hljs-section, +.hljs-class .hljs-title, +.hljs-type, +.hljs-attr, +.hljs-built_in, +.hljs-builtin-name, +.hljs-params { + color: #5c2699; +} + +.hljs-attribute, +.hljs-subst { + color: #000; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-addition { + background-color: #baeeba; +} + +.hljs-deletion { + background-color: #ffc8bd; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #9b703f; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/highlightjs/asset/styles/xt256.css b/highlightjs/asset/styles/xt256.css new file mode 100644 index 000000000..58df82cb7 --- /dev/null +++ b/highlightjs/asset/styles/xt256.css @@ -0,0 +1,92 @@ + +/* + xt256.css + + Contact: initbar [at] protonmail [dot] ch + : github.com/initbar +*/ + +.hljs { + display: block; + overflow-x: auto; + color: #eaeaea; + background: #000; + padding: 0.5; +} + +.hljs-subst { + color: #eaeaea; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-builtin-name, +.hljs-type { + color: #eaeaea; +} + +.hljs-params { + color: #da0000; +} + +.hljs-literal, +.hljs-number, +.hljs-name { + color: #ff0000; + font-weight: bolder; +} + +.hljs-comment { + color: #969896; +} + +.hljs-selector-id, +.hljs-quote { + color: #00ffff; +} + +.hljs-template-variable, +.hljs-variable, +.hljs-title { + color: #00ffff; + font-weight: bold; +} + +.hljs-selector-class, +.hljs-keyword, +.hljs-symbol { + color: #fff000; +} + +.hljs-string, +.hljs-bullet { + color: #00ff00; +} + +.hljs-tag, +.hljs-section { + color: #000fff; +} + +.hljs-selector-tag { + color: #000fff; + font-weight: bold; +} + +.hljs-attribute, +.hljs-built_in, +.hljs-regexp, +.hljs-link { + color: #ff00ff; +} + +.hljs-meta { + color: #fff; + font-weight: bolder; +} diff --git a/highlightjs/asset/styles/zenburn.css b/highlightjs/asset/styles/zenburn.css new file mode 100644 index 000000000..07be50201 --- /dev/null +++ b/highlightjs/asset/styles/zenburn.css @@ -0,0 +1,80 @@ +/* + +Zenburn style from voldmar.ru (c) Vladimir Epifanov +based on dark.css by Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #3f3f3f; + color: #dcdcdc; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag { + color: #e3ceab; +} + +.hljs-template-tag { + color: #dcdcdc; +} + +.hljs-number { + color: #8cd0d3; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-attribute { + color: #efdcbc; +} + +.hljs-literal { + color: #efefaf; +} + +.hljs-subst { + color: #8f8f8f; +} + +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #efef8f; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #dca3a3; +} + +.hljs-deletion, +.hljs-string, +.hljs-built_in, +.hljs-builtin-name { + color: #cc9393; +} + +.hljs-addition, +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7f9f7f; +} + + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/highlightjs/highlightjs.php b/highlightjs/highlightjs.php new file mode 100644 index 000000000..e8b5fe019 --- /dev/null +++ b/highlightjs/highlightjs.php @@ -0,0 +1,51 @@ + + */ + +use Friendica\App; +use Friendica\Core\Addon; + +function highlightjs_install() +{ + Addon::registerHook('page_end', __FILE__, 'highlightjs_page_end'); +} + +function highlightjs_uninstall() +{ + Addon::unregisterHook('page_end', __FILE__, 'highlightjs_page_end'); +} + +function highlightjs_page_end(App $a, &$b) +{ + $basedir = $a->get_baseurl() . '/addon/highlightjs/asset'; + + if ($a->getCurrentTheme() == 'frio') { + $style = 'bootstrap'; + } else { + $style = 'default'; + } + + $a->page['htmlhead'] .= <<< HTML + + + +HTML; + + $b .= <<< HTML + + + + +HTML; +} From a731f1ada0494fd951fe1695574faf116786b13d Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 19 Sep 2018 22:45:43 -0400 Subject: [PATCH 033/107] [mathjax] Add local copy of MathJax JS library --- mathjax/asset/.gitignore | 6 + mathjax/asset/.npmignore | 7 + mathjax/asset/.travis.yml | 17 + mathjax/asset/CONTRIBUTING.md | 259 ++++ mathjax/asset/LICENSE | 202 +++ mathjax/asset/MathJax.js | 19 + mathjax/asset/README.md | 53 + mathjax/asset/bower.json | 11 + mathjax/asset/composer.json | 14 + mathjax/asset/config/Safe.js | 19 + mathjax/asset/config/TeX-MML-AM_CHTML.js | 69 ++ mathjax/asset/config/default.js | 1104 +++++++++++++++++ mathjax/asset/config/local/local.js | 40 + mathjax/asset/extensions/AssistiveMML.js | 19 + mathjax/asset/extensions/CHTML-preview.js | 19 + mathjax/asset/extensions/FontWarnings.js | 19 + .../extensions/HTML-CSS/handle-floats.js | 19 + mathjax/asset/extensions/HelpDialog.js | 19 + mathjax/asset/extensions/MatchWebFonts.js | 19 + mathjax/asset/extensions/MathEvents.js | 19 + .../asset/extensions/MathML/content-mathml.js | 19 + mathjax/asset/extensions/MathML/mml3.js | 19 + mathjax/asset/extensions/MathMenu.js | 19 + mathjax/asset/extensions/MathZoom.js | 19 + mathjax/asset/extensions/Safe.js | 19 + mathjax/asset/extensions/TeX/AMScd.js | 19 + mathjax/asset/extensions/TeX/AMSmath.js | 19 + mathjax/asset/extensions/TeX/AMSsymbols.js | 19 + mathjax/asset/extensions/TeX/HTML.js | 19 + mathjax/asset/extensions/TeX/action.js | 19 + mathjax/asset/extensions/TeX/autobold.js | 19 + mathjax/asset/extensions/TeX/autoload-all.js | 19 + mathjax/asset/extensions/TeX/bbox.js | 19 + mathjax/asset/extensions/TeX/begingroup.js | 19 + mathjax/asset/extensions/TeX/boldsymbol.js | 19 + mathjax/asset/extensions/TeX/cancel.js | 19 + mathjax/asset/extensions/TeX/color.js | 19 + mathjax/asset/extensions/TeX/enclose.js | 19 + mathjax/asset/extensions/TeX/extpfeil.js | 19 + mathjax/asset/extensions/TeX/mathchoice.js | 19 + .../asset/extensions/TeX/mediawiki-texvc.js | 19 + mathjax/asset/extensions/TeX/mhchem.js | 19 + .../asset/extensions/TeX/mhchem3/mhchem.js | 332 +++++ mathjax/asset/extensions/TeX/newcommand.js | 19 + mathjax/asset/extensions/TeX/noErrors.js | 19 + mathjax/asset/extensions/TeX/noUndefined.js | 19 + mathjax/asset/extensions/TeX/unicode.js | 19 + mathjax/asset/extensions/TeX/verb.js | 19 + .../extensions/a11y/accessibility-menu.js | 1 + .../asset/extensions/a11y/auto-collapse.js | 1 + mathjax/asset/extensions/a11y/collapsible.js | 1 + mathjax/asset/extensions/a11y/explorer.js | 1 + .../extensions/a11y/invalid_keypress.mp3 | Bin 0 -> 9030 bytes .../extensions/a11y/invalid_keypress.ogg | Bin 0 -> 5353 bytes mathjax/asset/extensions/a11y/mathjax-sre.js | 985 +++++++++++++++ .../a11y/mathmaps/en/functions/algebra.js | 1 + .../a11y/mathmaps/en/functions/elementary.js | 1 + .../a11y/mathmaps/en/functions/hyperbolic.js | 1 + .../mathmaps/en/functions/trigonometry.js | 1 + .../a11y/mathmaps/en/symbols/greek-capital.js | 1 + .../en/symbols/greek-mathfonts-bold.js | 1 + .../en/symbols/greek-mathfonts-italic.js | 1 + .../greek-mathfonts-sans-serif-bold.js | 1 + .../a11y/mathmaps/en/symbols/greek-scripts.js | 1 + .../a11y/mathmaps/en/symbols/greek-small.js | 1 + .../a11y/mathmaps/en/symbols/greek-symbols.js | 1 + .../mathmaps/en/symbols/hebrew_letters.js | 1 + .../en/symbols/latin-lower-double-accent.js | 1 + .../mathmaps/en/symbols/latin-lower-normal.js | 1 + .../en/symbols/latin-lower-phonetic.js | 1 + .../en/symbols/latin-lower-single-accent.js | 1 + .../symbols/latin-mathfonts-bold-fraktur.js | 1 + .../en/symbols/latin-mathfonts-bold-script.js | 1 + .../en/symbols/latin-mathfonts-bold.js | 1 + .../symbols/latin-mathfonts-double-struck.js | 1 + .../en/symbols/latin-mathfonts-fraktur.js | 1 + .../en/symbols/latin-mathfonts-italic.js | 1 + .../en/symbols/latin-mathfonts-monospace.js | 1 + .../latin-mathfonts-sans-serif-bold.js | 1 + .../latin-mathfonts-sans-serif-italic.js | 1 + .../en/symbols/latin-mathfonts-sans-serif.js | 1 + .../en/symbols/latin-mathfonts-script.js | 1 + .../a11y/mathmaps/en/symbols/latin-rest.js | 1 + .../en/symbols/latin-upper-double-accent.js | 1 + .../mathmaps/en/symbols/latin-upper-normal.js | 1 + .../en/symbols/latin-upper-single-accent.js | 1 + .../a11y/mathmaps/en/symbols/math_angles.js | 1 + .../a11y/mathmaps/en/symbols/math_arrows.js | 1 + .../mathmaps/en/symbols/math_characters.js | 1 + .../mathmaps/en/symbols/math_delimiters.js | 1 + .../a11y/mathmaps/en/symbols/math_digits.js | 1 + .../a11y/mathmaps/en/symbols/math_geometry.js | 1 + .../a11y/mathmaps/en/symbols/math_harpoons.js | 1 + .../en/symbols/math_non_characters.js | 1 + .../a11y/mathmaps/en/symbols/math_symbols.js | 1 + .../mathmaps/en/symbols/math_whitespace.js | 1 + .../a11y/mathmaps/en/symbols/other_stars.js | 1 + .../a11y/mathmaps/en/units/energy.js | 1 + .../a11y/mathmaps/en/units/length.js | 1 + .../a11y/mathmaps/en/units/memory.js | 1 + .../a11y/mathmaps/en/units/other.js | 1 + .../a11y/mathmaps/en/units/speed.js | 1 + .../a11y/mathmaps/en/units/temperature.js | 1 + .../extensions/a11y/mathmaps/en/units/time.js | 1 + .../a11y/mathmaps/en/units/volume.js | 1 + .../a11y/mathmaps/en/units/weight.js | 1 + .../a11y/mathmaps/es/functions/algebra.js | 1 + .../a11y/mathmaps/es/functions/elementary.js | 1 + .../a11y/mathmaps/es/functions/hyperbolic.js | 1 + .../mathmaps/es/functions/trigonometry.js | 1 + .../a11y/mathmaps/es/symbols/greek-capital.js | 1 + .../es/symbols/greek-mathfonts-bold.js | 1 + .../es/symbols/greek-mathfonts-italic.js | 1 + .../greek-mathfonts-sans-serif-bold.js | 1 + .../a11y/mathmaps/es/symbols/greek-scripts.js | 1 + .../a11y/mathmaps/es/symbols/greek-small.js | 1 + .../a11y/mathmaps/es/symbols/greek-symbols.js | 1 + .../mathmaps/es/symbols/hebrew_letters.js | 1 + .../es/symbols/latin-lower-double-accent.js | 1 + .../mathmaps/es/symbols/latin-lower-normal.js | 1 + .../es/symbols/latin-lower-phonetic.js | 1 + .../es/symbols/latin-lower-single-accent.js | 1 + .../symbols/latin-mathfonts-bold-fraktur.js | 1 + .../es/symbols/latin-mathfonts-bold-script.js | 1 + .../es/symbols/latin-mathfonts-bold.js | 1 + .../symbols/latin-mathfonts-double-struck.js | 1 + .../es/symbols/latin-mathfonts-fraktur.js | 1 + .../es/symbols/latin-mathfonts-italic.js | 1 + .../es/symbols/latin-mathfonts-monospace.js | 1 + .../latin-mathfonts-sans-serif-bold.js | 1 + .../latin-mathfonts-sans-serif-italic.js | 1 + .../es/symbols/latin-mathfonts-sans-serif.js | 1 + .../es/symbols/latin-mathfonts-script.js | 1 + .../a11y/mathmaps/es/symbols/latin-rest.js | 1 + .../es/symbols/latin-upper-double-accent.js | 1 + .../mathmaps/es/symbols/latin-upper-normal.js | 1 + .../es/symbols/latin-upper-single-accent.js | 1 + .../a11y/mathmaps/es/symbols/math_angles.js | 1 + .../a11y/mathmaps/es/symbols/math_arrows.js | 1 + .../mathmaps/es/symbols/math_characters.js | 1 + .../mathmaps/es/symbols/math_delimiters.js | 1 + .../a11y/mathmaps/es/symbols/math_digits.js | 1 + .../a11y/mathmaps/es/symbols/math_geometry.js | 1 + .../a11y/mathmaps/es/symbols/math_harpoons.js | 1 + .../es/symbols/math_non_characters.js | 1 + .../a11y/mathmaps/es/symbols/math_symbols.js | 1 + .../mathmaps/es/symbols/math_whitespace.js | 1 + .../a11y/mathmaps/es/symbols/other_stars.js | 1 + .../a11y/mathmaps/es/units/energy.js | 1 + .../a11y/mathmaps/es/units/length.js | 1 + .../a11y/mathmaps/es/units/memory.js | 1 + .../a11y/mathmaps/es/units/other.js | 1 + .../a11y/mathmaps/es/units/speed.js | 1 + .../a11y/mathmaps/es/units/temperature.js | 1 + .../extensions/a11y/mathmaps/es/units/time.js | 1 + .../a11y/mathmaps/es/units/volume.js | 1 + .../a11y/mathmaps/es/units/weight.js | 1 + .../extensions/a11y/mathmaps/mathmaps_ie.js | 308 +++++ .../asset/extensions/a11y/semantic-enrich.js | 1 + .../asset/extensions/a11y/wgxpath.install.js | 77 ++ mathjax/asset/extensions/asciimath2jax.js | 19 + mathjax/asset/extensions/fast-preview.js | 19 + mathjax/asset/extensions/jsMath2jax.js | 19 + mathjax/asset/extensions/mml2jax.js | 19 + mathjax/asset/extensions/tex2jax.js | 19 + mathjax/asset/extensions/toMathML.js | 19 + mathjax/asset/jax/element/mml/jax.js | 19 + .../asset/jax/element/mml/optable/Arrows.js | 19 + .../jax/element/mml/optable/BasicLatin.js | 19 + .../element/mml/optable/CombDiacritMarks.js | 19 + .../mml/optable/CombDiactForSymbols.js | 19 + .../asset/jax/element/mml/optable/Dingbats.js | 19 + .../element/mml/optable/GeneralPunctuation.js | 19 + .../element/mml/optable/GeometricShapes.js | 19 + .../jax/element/mml/optable/GreekAndCoptic.js | 19 + .../element/mml/optable/Latin1Supplement.js | 19 + .../element/mml/optable/LetterlikeSymbols.js | 19 + .../jax/element/mml/optable/MathOperators.js | 19 + .../element/mml/optable/MiscMathSymbolsA.js | 19 + .../element/mml/optable/MiscMathSymbolsB.js | 19 + .../mml/optable/MiscSymbolsAndArrows.js | 19 + .../jax/element/mml/optable/MiscTechnical.js | 19 + .../element/mml/optable/SpacingModLetters.js | 19 + .../element/mml/optable/SuppMathOperators.js | 19 + .../mml/optable/SupplementalArrowsA.js | 19 + .../mml/optable/SupplementalArrowsB.js | 19 + mathjax/asset/jax/input/AsciiMath/config.js | 19 + mathjax/asset/jax/input/AsciiMath/jax.js | 19 + mathjax/asset/jax/input/MathML/config.js | 19 + mathjax/asset/jax/input/MathML/entities/a.js | 19 + mathjax/asset/jax/input/MathML/entities/b.js | 19 + mathjax/asset/jax/input/MathML/entities/c.js | 19 + mathjax/asset/jax/input/MathML/entities/d.js | 19 + mathjax/asset/jax/input/MathML/entities/e.js | 19 + mathjax/asset/jax/input/MathML/entities/f.js | 19 + mathjax/asset/jax/input/MathML/entities/fr.js | 19 + mathjax/asset/jax/input/MathML/entities/g.js | 19 + mathjax/asset/jax/input/MathML/entities/h.js | 19 + mathjax/asset/jax/input/MathML/entities/i.js | 19 + mathjax/asset/jax/input/MathML/entities/j.js | 19 + mathjax/asset/jax/input/MathML/entities/k.js | 19 + mathjax/asset/jax/input/MathML/entities/l.js | 19 + mathjax/asset/jax/input/MathML/entities/m.js | 19 + mathjax/asset/jax/input/MathML/entities/n.js | 19 + mathjax/asset/jax/input/MathML/entities/o.js | 19 + .../asset/jax/input/MathML/entities/opf.js | 19 + mathjax/asset/jax/input/MathML/entities/p.js | 19 + mathjax/asset/jax/input/MathML/entities/q.js | 19 + mathjax/asset/jax/input/MathML/entities/r.js | 19 + mathjax/asset/jax/input/MathML/entities/s.js | 19 + .../asset/jax/input/MathML/entities/scr.js | 19 + mathjax/asset/jax/input/MathML/entities/t.js | 19 + mathjax/asset/jax/input/MathML/entities/u.js | 19 + mathjax/asset/jax/input/MathML/entities/v.js | 19 + mathjax/asset/jax/input/MathML/entities/w.js | 19 + mathjax/asset/jax/input/MathML/entities/x.js | 19 + mathjax/asset/jax/input/MathML/entities/y.js | 19 + mathjax/asset/jax/input/MathML/entities/z.js | 19 + mathjax/asset/jax/input/MathML/jax.js | 19 + mathjax/asset/jax/input/TeX/config.js | 19 + mathjax/asset/jax/input/TeX/jax.js | 19 + .../CommonHTML/autoload/annotation-xml.js | 19 + .../jax/output/CommonHTML/autoload/maction.js | 19 + .../output/CommonHTML/autoload/menclose.js | 19 + .../jax/output/CommonHTML/autoload/mglyph.js | 19 + .../CommonHTML/autoload/mmultiscripts.js | 19 + .../jax/output/CommonHTML/autoload/ms.js | 19 + .../jax/output/CommonHTML/autoload/mtable.js | 19 + .../output/CommonHTML/autoload/multiline.js | 19 + mathjax/asset/jax/output/CommonHTML/config.js | 19 + .../CommonHTML/fonts/TeX/AMS-Regular.js | 19 + .../CommonHTML/fonts/TeX/Caligraphic-Bold.js | 19 + .../CommonHTML/fonts/TeX/Fraktur-Bold.js | 19 + .../CommonHTML/fonts/TeX/Fraktur-Regular.js | 19 + .../output/CommonHTML/fonts/TeX/Main-Bold.js | 19 + .../CommonHTML/fonts/TeX/Math-BoldItalic.js | 19 + .../CommonHTML/fonts/TeX/SansSerif-Bold.js | 19 + .../CommonHTML/fonts/TeX/SansSerif-Italic.js | 19 + .../CommonHTML/fonts/TeX/SansSerif-Regular.js | 19 + .../CommonHTML/fonts/TeX/Script-Regular.js | 19 + .../fonts/TeX/Typewriter-Regular.js | 19 + .../CommonHTML/fonts/TeX/fontdata-extra.js | 19 + .../output/CommonHTML/fonts/TeX/fontdata.js | 19 + mathjax/asset/jax/output/CommonHTML/jax.js | 19 + .../asset/jax/output/PreviewHTML/config.js | 19 + mathjax/asset/jax/output/PreviewHTML/jax.js | 19 + mathjax/asset/latest.js | 19 + mathjax/asset/localization/ar/FontWarnings.js | 19 + mathjax/asset/localization/ar/HTML-CSS.js | 19 + mathjax/asset/localization/ar/HelpDialog.js | 19 + mathjax/asset/localization/ar/MathML.js | 19 + mathjax/asset/localization/ar/MathMenu.js | 19 + mathjax/asset/localization/ar/TeX.js | 19 + mathjax/asset/localization/ar/ar.js | 19 + .../asset/localization/ast/FontWarnings.js | 19 + mathjax/asset/localization/ast/HTML-CSS.js | 19 + mathjax/asset/localization/ast/HelpDialog.js | 19 + mathjax/asset/localization/ast/MathML.js | 19 + mathjax/asset/localization/ast/MathMenu.js | 19 + mathjax/asset/localization/ast/TeX.js | 19 + mathjax/asset/localization/ast/ast.js | 19 + .../asset/localization/bcc/FontWarnings.js | 19 + mathjax/asset/localization/bcc/HTML-CSS.js | 19 + mathjax/asset/localization/bcc/HelpDialog.js | 19 + mathjax/asset/localization/bcc/MathML.js | 19 + mathjax/asset/localization/bcc/MathMenu.js | 19 + mathjax/asset/localization/bcc/TeX.js | 19 + mathjax/asset/localization/bcc/bcc.js | 19 + mathjax/asset/localization/bg/FontWarnings.js | 19 + mathjax/asset/localization/bg/HTML-CSS.js | 19 + mathjax/asset/localization/bg/HelpDialog.js | 19 + mathjax/asset/localization/bg/MathML.js | 19 + mathjax/asset/localization/bg/MathMenu.js | 19 + mathjax/asset/localization/bg/TeX.js | 19 + mathjax/asset/localization/bg/bg.js | 19 + mathjax/asset/localization/br/FontWarnings.js | 19 + mathjax/asset/localization/br/HTML-CSS.js | 19 + mathjax/asset/localization/br/HelpDialog.js | 19 + mathjax/asset/localization/br/MathML.js | 19 + mathjax/asset/localization/br/MathMenu.js | 19 + mathjax/asset/localization/br/TeX.js | 19 + mathjax/asset/localization/br/br.js | 19 + mathjax/asset/localization/ca/FontWarnings.js | 19 + mathjax/asset/localization/ca/HTML-CSS.js | 19 + mathjax/asset/localization/ca/HelpDialog.js | 19 + mathjax/asset/localization/ca/MathML.js | 19 + mathjax/asset/localization/ca/MathMenu.js | 19 + mathjax/asset/localization/ca/TeX.js | 19 + mathjax/asset/localization/ca/ca.js | 19 + .../asset/localization/cdo/FontWarnings.js | 19 + mathjax/asset/localization/cdo/HTML-CSS.js | 19 + mathjax/asset/localization/cdo/HelpDialog.js | 19 + mathjax/asset/localization/cdo/MathML.js | 19 + mathjax/asset/localization/cdo/MathMenu.js | 19 + mathjax/asset/localization/cdo/TeX.js | 19 + mathjax/asset/localization/cdo/cdo.js | 19 + mathjax/asset/localization/ce/FontWarnings.js | 19 + mathjax/asset/localization/ce/HTML-CSS.js | 19 + mathjax/asset/localization/ce/HelpDialog.js | 19 + mathjax/asset/localization/ce/MathML.js | 19 + mathjax/asset/localization/ce/MathMenu.js | 19 + mathjax/asset/localization/ce/TeX.js | 19 + mathjax/asset/localization/ce/ce.js | 19 + mathjax/asset/localization/cs/FontWarnings.js | 19 + mathjax/asset/localization/cs/HTML-CSS.js | 19 + mathjax/asset/localization/cs/HelpDialog.js | 19 + mathjax/asset/localization/cs/MathML.js | 19 + mathjax/asset/localization/cs/MathMenu.js | 19 + mathjax/asset/localization/cs/TeX.js | 19 + mathjax/asset/localization/cs/cs.js | 19 + mathjax/asset/localization/cy/FontWarnings.js | 19 + mathjax/asset/localization/cy/HTML-CSS.js | 19 + mathjax/asset/localization/cy/HelpDialog.js | 19 + mathjax/asset/localization/cy/MathML.js | 19 + mathjax/asset/localization/cy/MathMenu.js | 19 + mathjax/asset/localization/cy/TeX.js | 19 + mathjax/asset/localization/cy/cy.js | 19 + mathjax/asset/localization/da/FontWarnings.js | 19 + mathjax/asset/localization/da/HTML-CSS.js | 19 + mathjax/asset/localization/da/HelpDialog.js | 19 + mathjax/asset/localization/da/MathML.js | 19 + mathjax/asset/localization/da/MathMenu.js | 19 + mathjax/asset/localization/da/TeX.js | 19 + mathjax/asset/localization/da/da.js | 19 + mathjax/asset/localization/de/FontWarnings.js | 19 + mathjax/asset/localization/de/HTML-CSS.js | 19 + mathjax/asset/localization/de/HelpDialog.js | 19 + mathjax/asset/localization/de/MathML.js | 19 + mathjax/asset/localization/de/MathMenu.js | 19 + mathjax/asset/localization/de/TeX.js | 19 + mathjax/asset/localization/de/de.js | 19 + .../asset/localization/diq/FontWarnings.js | 19 + mathjax/asset/localization/diq/HTML-CSS.js | 19 + mathjax/asset/localization/diq/HelpDialog.js | 19 + mathjax/asset/localization/diq/MathML.js | 19 + mathjax/asset/localization/diq/MathMenu.js | 19 + mathjax/asset/localization/diq/TeX.js | 19 + mathjax/asset/localization/diq/diq.js | 19 + mathjax/asset/localization/en/FontWarnings.js | 19 + mathjax/asset/localization/en/HTML-CSS.js | 19 + mathjax/asset/localization/en/HelpDialog.js | 19 + mathjax/asset/localization/en/MathML.js | 19 + mathjax/asset/localization/en/MathMenu.js | 19 + mathjax/asset/localization/en/TeX.js | 19 + mathjax/asset/localization/en/en.js | 19 + mathjax/asset/localization/eo/FontWarnings.js | 19 + mathjax/asset/localization/eo/HTML-CSS.js | 19 + mathjax/asset/localization/eo/HelpDialog.js | 19 + mathjax/asset/localization/eo/MathML.js | 19 + mathjax/asset/localization/eo/MathMenu.js | 19 + mathjax/asset/localization/eo/TeX.js | 19 + mathjax/asset/localization/eo/eo.js | 19 + mathjax/asset/localization/es/FontWarnings.js | 19 + mathjax/asset/localization/es/HTML-CSS.js | 19 + mathjax/asset/localization/es/HelpDialog.js | 19 + mathjax/asset/localization/es/MathML.js | 19 + mathjax/asset/localization/es/MathMenu.js | 19 + mathjax/asset/localization/es/TeX.js | 19 + mathjax/asset/localization/es/es.js | 19 + mathjax/asset/localization/fa/FontWarnings.js | 19 + mathjax/asset/localization/fa/HTML-CSS.js | 19 + mathjax/asset/localization/fa/HelpDialog.js | 19 + mathjax/asset/localization/fa/MathML.js | 19 + mathjax/asset/localization/fa/MathMenu.js | 19 + mathjax/asset/localization/fa/TeX.js | 19 + mathjax/asset/localization/fa/fa.js | 19 + mathjax/asset/localization/fi/FontWarnings.js | 19 + mathjax/asset/localization/fi/HTML-CSS.js | 19 + mathjax/asset/localization/fi/HelpDialog.js | 19 + mathjax/asset/localization/fi/MathML.js | 19 + mathjax/asset/localization/fi/MathMenu.js | 19 + mathjax/asset/localization/fi/TeX.js | 19 + mathjax/asset/localization/fi/fi.js | 19 + mathjax/asset/localization/fr/FontWarnings.js | 19 + mathjax/asset/localization/fr/HTML-CSS.js | 19 + mathjax/asset/localization/fr/HelpDialog.js | 19 + mathjax/asset/localization/fr/MathML.js | 19 + mathjax/asset/localization/fr/MathMenu.js | 19 + mathjax/asset/localization/fr/TeX.js | 19 + mathjax/asset/localization/fr/fr.js | 19 + mathjax/asset/localization/gl/FontWarnings.js | 19 + mathjax/asset/localization/gl/HTML-CSS.js | 19 + mathjax/asset/localization/gl/HelpDialog.js | 19 + mathjax/asset/localization/gl/MathML.js | 19 + mathjax/asset/localization/gl/MathMenu.js | 19 + mathjax/asset/localization/gl/TeX.js | 19 + mathjax/asset/localization/gl/gl.js | 19 + mathjax/asset/localization/he/FontWarnings.js | 19 + mathjax/asset/localization/he/HTML-CSS.js | 19 + mathjax/asset/localization/he/HelpDialog.js | 19 + mathjax/asset/localization/he/MathML.js | 19 + mathjax/asset/localization/he/MathMenu.js | 19 + mathjax/asset/localization/he/TeX.js | 19 + mathjax/asset/localization/he/he.js | 19 + mathjax/asset/localization/ia/FontWarnings.js | 19 + mathjax/asset/localization/ia/HTML-CSS.js | 19 + mathjax/asset/localization/ia/HelpDialog.js | 19 + mathjax/asset/localization/ia/MathML.js | 19 + mathjax/asset/localization/ia/MathMenu.js | 19 + mathjax/asset/localization/ia/TeX.js | 19 + mathjax/asset/localization/ia/ia.js | 19 + mathjax/asset/localization/it/FontWarnings.js | 19 + mathjax/asset/localization/it/HTML-CSS.js | 19 + mathjax/asset/localization/it/HelpDialog.js | 19 + mathjax/asset/localization/it/MathML.js | 19 + mathjax/asset/localization/it/MathMenu.js | 19 + mathjax/asset/localization/it/TeX.js | 19 + mathjax/asset/localization/it/it.js | 19 + mathjax/asset/localization/ja/FontWarnings.js | 19 + mathjax/asset/localization/ja/HTML-CSS.js | 19 + mathjax/asset/localization/ja/HelpDialog.js | 19 + mathjax/asset/localization/ja/MathML.js | 19 + mathjax/asset/localization/ja/MathMenu.js | 19 + mathjax/asset/localization/ja/TeX.js | 19 + mathjax/asset/localization/ja/ja.js | 19 + mathjax/asset/localization/kn/FontWarnings.js | 19 + mathjax/asset/localization/kn/HTML-CSS.js | 19 + mathjax/asset/localization/kn/HelpDialog.js | 19 + mathjax/asset/localization/kn/MathML.js | 19 + mathjax/asset/localization/kn/MathMenu.js | 19 + mathjax/asset/localization/kn/TeX.js | 19 + mathjax/asset/localization/kn/kn.js | 19 + mathjax/asset/localization/ko/FontWarnings.js | 19 + mathjax/asset/localization/ko/HTML-CSS.js | 19 + mathjax/asset/localization/ko/HelpDialog.js | 19 + mathjax/asset/localization/ko/MathML.js | 19 + mathjax/asset/localization/ko/MathMenu.js | 19 + mathjax/asset/localization/ko/TeX.js | 19 + mathjax/asset/localization/ko/ko.js | 19 + mathjax/asset/localization/lb/FontWarnings.js | 19 + mathjax/asset/localization/lb/HTML-CSS.js | 19 + mathjax/asset/localization/lb/HelpDialog.js | 19 + mathjax/asset/localization/lb/MathML.js | 19 + mathjax/asset/localization/lb/MathMenu.js | 19 + mathjax/asset/localization/lb/TeX.js | 19 + mathjax/asset/localization/lb/lb.js | 19 + .../asset/localization/lki/FontWarnings.js | 19 + mathjax/asset/localization/lki/HTML-CSS.js | 19 + mathjax/asset/localization/lki/HelpDialog.js | 19 + mathjax/asset/localization/lki/MathML.js | 19 + mathjax/asset/localization/lki/MathMenu.js | 19 + mathjax/asset/localization/lki/TeX.js | 19 + mathjax/asset/localization/lki/lki.js | 19 + mathjax/asset/localization/lt/FontWarnings.js | 19 + mathjax/asset/localization/lt/HTML-CSS.js | 19 + mathjax/asset/localization/lt/HelpDialog.js | 19 + mathjax/asset/localization/lt/MathML.js | 19 + mathjax/asset/localization/lt/MathMenu.js | 19 + mathjax/asset/localization/lt/TeX.js | 19 + mathjax/asset/localization/lt/lt.js | 19 + mathjax/asset/localization/mk/FontWarnings.js | 19 + mathjax/asset/localization/mk/HTML-CSS.js | 19 + mathjax/asset/localization/mk/HelpDialog.js | 19 + mathjax/asset/localization/mk/MathML.js | 19 + mathjax/asset/localization/mk/MathMenu.js | 19 + mathjax/asset/localization/mk/TeX.js | 19 + mathjax/asset/localization/mk/mk.js | 19 + mathjax/asset/localization/nl/FontWarnings.js | 19 + mathjax/asset/localization/nl/HTML-CSS.js | 19 + mathjax/asset/localization/nl/HelpDialog.js | 19 + mathjax/asset/localization/nl/MathML.js | 19 + mathjax/asset/localization/nl/MathMenu.js | 19 + mathjax/asset/localization/nl/TeX.js | 19 + mathjax/asset/localization/nl/nl.js | 19 + mathjax/asset/localization/oc/FontWarnings.js | 19 + mathjax/asset/localization/oc/HTML-CSS.js | 19 + mathjax/asset/localization/oc/HelpDialog.js | 19 + mathjax/asset/localization/oc/MathML.js | 19 + mathjax/asset/localization/oc/MathMenu.js | 19 + mathjax/asset/localization/oc/TeX.js | 19 + mathjax/asset/localization/oc/oc.js | 19 + mathjax/asset/localization/pl/FontWarnings.js | 19 + mathjax/asset/localization/pl/HTML-CSS.js | 19 + mathjax/asset/localization/pl/HelpDialog.js | 19 + mathjax/asset/localization/pl/MathML.js | 19 + mathjax/asset/localization/pl/MathMenu.js | 19 + mathjax/asset/localization/pl/TeX.js | 19 + mathjax/asset/localization/pl/pl.js | 19 + .../asset/localization/pt-br/FontWarnings.js | 19 + mathjax/asset/localization/pt-br/HTML-CSS.js | 19 + .../asset/localization/pt-br/HelpDialog.js | 19 + mathjax/asset/localization/pt-br/MathML.js | 19 + mathjax/asset/localization/pt-br/MathMenu.js | 19 + mathjax/asset/localization/pt-br/TeX.js | 19 + mathjax/asset/localization/pt-br/pt-br.js | 19 + mathjax/asset/localization/pt/FontWarnings.js | 19 + mathjax/asset/localization/pt/HTML-CSS.js | 19 + mathjax/asset/localization/pt/HelpDialog.js | 19 + mathjax/asset/localization/pt/MathML.js | 19 + mathjax/asset/localization/pt/MathMenu.js | 19 + mathjax/asset/localization/pt/TeX.js | 19 + mathjax/asset/localization/pt/pt.js | 19 + .../asset/localization/qqq/FontWarnings.js | 19 + mathjax/asset/localization/qqq/HTML-CSS.js | 19 + mathjax/asset/localization/qqq/HelpDialog.js | 19 + mathjax/asset/localization/qqq/MathML.js | 19 + mathjax/asset/localization/qqq/MathMenu.js | 19 + mathjax/asset/localization/qqq/TeX.js | 19 + mathjax/asset/localization/qqq/qqq.js | 19 + mathjax/asset/localization/ru/FontWarnings.js | 19 + mathjax/asset/localization/ru/HTML-CSS.js | 19 + mathjax/asset/localization/ru/HelpDialog.js | 19 + mathjax/asset/localization/ru/MathML.js | 19 + mathjax/asset/localization/ru/MathMenu.js | 19 + mathjax/asset/localization/ru/TeX.js | 19 + mathjax/asset/localization/ru/ru.js | 19 + .../asset/localization/scn/FontWarnings.js | 19 + mathjax/asset/localization/scn/HTML-CSS.js | 19 + mathjax/asset/localization/scn/HelpDialog.js | 19 + mathjax/asset/localization/scn/MathML.js | 19 + mathjax/asset/localization/scn/MathMenu.js | 19 + mathjax/asset/localization/scn/TeX.js | 19 + mathjax/asset/localization/scn/scn.js | 19 + .../asset/localization/sco/FontWarnings.js | 19 + mathjax/asset/localization/sco/HTML-CSS.js | 19 + mathjax/asset/localization/sco/HelpDialog.js | 19 + mathjax/asset/localization/sco/MathML.js | 19 + mathjax/asset/localization/sco/MathMenu.js | 19 + mathjax/asset/localization/sco/TeX.js | 19 + mathjax/asset/localization/sco/sco.js | 19 + mathjax/asset/localization/sk/FontWarnings.js | 19 + mathjax/asset/localization/sk/HTML-CSS.js | 19 + mathjax/asset/localization/sk/HelpDialog.js | 19 + mathjax/asset/localization/sk/MathML.js | 19 + mathjax/asset/localization/sk/MathMenu.js | 19 + mathjax/asset/localization/sk/TeX.js | 19 + mathjax/asset/localization/sk/sk.js | 19 + mathjax/asset/localization/sl/FontWarnings.js | 19 + mathjax/asset/localization/sl/HTML-CSS.js | 19 + mathjax/asset/localization/sl/HelpDialog.js | 19 + mathjax/asset/localization/sl/MathML.js | 19 + mathjax/asset/localization/sl/MathMenu.js | 19 + mathjax/asset/localization/sl/TeX.js | 19 + mathjax/asset/localization/sl/sl.js | 19 + mathjax/asset/localization/sv/FontWarnings.js | 19 + mathjax/asset/localization/sv/HTML-CSS.js | 19 + mathjax/asset/localization/sv/HelpDialog.js | 19 + mathjax/asset/localization/sv/MathML.js | 19 + mathjax/asset/localization/sv/MathMenu.js | 19 + mathjax/asset/localization/sv/TeX.js | 19 + mathjax/asset/localization/sv/sv.js | 19 + mathjax/asset/localization/th/FontWarnings.js | 19 + mathjax/asset/localization/th/HTML-CSS.js | 19 + mathjax/asset/localization/th/HelpDialog.js | 19 + mathjax/asset/localization/th/MathML.js | 19 + mathjax/asset/localization/th/MathMenu.js | 19 + mathjax/asset/localization/th/TeX.js | 19 + mathjax/asset/localization/th/th.js | 19 + mathjax/asset/localization/tr/FontWarnings.js | 19 + mathjax/asset/localization/tr/HTML-CSS.js | 19 + mathjax/asset/localization/tr/HelpDialog.js | 19 + mathjax/asset/localization/tr/MathML.js | 19 + mathjax/asset/localization/tr/MathMenu.js | 19 + mathjax/asset/localization/tr/TeX.js | 19 + mathjax/asset/localization/tr/tr.js | 19 + mathjax/asset/localization/uk/FontWarnings.js | 19 + mathjax/asset/localization/uk/HTML-CSS.js | 19 + mathjax/asset/localization/uk/HelpDialog.js | 19 + mathjax/asset/localization/uk/MathML.js | 19 + mathjax/asset/localization/uk/MathMenu.js | 19 + mathjax/asset/localization/uk/TeX.js | 19 + mathjax/asset/localization/uk/uk.js | 19 + mathjax/asset/localization/vi/FontWarnings.js | 19 + mathjax/asset/localization/vi/HTML-CSS.js | 19 + mathjax/asset/localization/vi/HelpDialog.js | 19 + mathjax/asset/localization/vi/MathML.js | 19 + mathjax/asset/localization/vi/MathMenu.js | 19 + mathjax/asset/localization/vi/TeX.js | 19 + mathjax/asset/localization/vi/vi.js | 19 + .../localization/zh-hans/FontWarnings.js | 19 + .../asset/localization/zh-hans/HTML-CSS.js | 19 + .../asset/localization/zh-hans/HelpDialog.js | 19 + mathjax/asset/localization/zh-hans/MathML.js | 19 + .../asset/localization/zh-hans/MathMenu.js | 19 + mathjax/asset/localization/zh-hans/TeX.js | 19 + mathjax/asset/localization/zh-hans/zh-hans.js | 19 + .../localization/zh-hant/FontWarnings.js | 19 + .../asset/localization/zh-hant/HTML-CSS.js | 19 + .../asset/localization/zh-hant/HelpDialog.js | 19 + mathjax/asset/localization/zh-hant/MathML.js | 19 + .../asset/localization/zh-hant/MathMenu.js | 19 + mathjax/asset/localization/zh-hant/TeX.js | 19 + mathjax/asset/localization/zh-hant/zh-hant.js | 19 + mathjax/asset/package.json | 30 + 584 files changed, 12342 insertions(+) create mode 100644 mathjax/asset/.gitignore create mode 100644 mathjax/asset/.npmignore create mode 100644 mathjax/asset/.travis.yml create mode 100644 mathjax/asset/CONTRIBUTING.md create mode 100644 mathjax/asset/LICENSE create mode 100644 mathjax/asset/MathJax.js create mode 100644 mathjax/asset/README.md create mode 100644 mathjax/asset/bower.json create mode 100644 mathjax/asset/composer.json create mode 100644 mathjax/asset/config/Safe.js create mode 100644 mathjax/asset/config/TeX-MML-AM_CHTML.js create mode 100644 mathjax/asset/config/default.js create mode 100644 mathjax/asset/config/local/local.js create mode 100644 mathjax/asset/extensions/AssistiveMML.js create mode 100644 mathjax/asset/extensions/CHTML-preview.js create mode 100644 mathjax/asset/extensions/FontWarnings.js create mode 100644 mathjax/asset/extensions/HTML-CSS/handle-floats.js create mode 100644 mathjax/asset/extensions/HelpDialog.js create mode 100644 mathjax/asset/extensions/MatchWebFonts.js create mode 100644 mathjax/asset/extensions/MathEvents.js create mode 100644 mathjax/asset/extensions/MathML/content-mathml.js create mode 100644 mathjax/asset/extensions/MathML/mml3.js create mode 100644 mathjax/asset/extensions/MathMenu.js create mode 100644 mathjax/asset/extensions/MathZoom.js create mode 100644 mathjax/asset/extensions/Safe.js create mode 100644 mathjax/asset/extensions/TeX/AMScd.js create mode 100644 mathjax/asset/extensions/TeX/AMSmath.js create mode 100644 mathjax/asset/extensions/TeX/AMSsymbols.js create mode 100644 mathjax/asset/extensions/TeX/HTML.js create mode 100644 mathjax/asset/extensions/TeX/action.js create mode 100644 mathjax/asset/extensions/TeX/autobold.js create mode 100644 mathjax/asset/extensions/TeX/autoload-all.js create mode 100644 mathjax/asset/extensions/TeX/bbox.js create mode 100644 mathjax/asset/extensions/TeX/begingroup.js create mode 100644 mathjax/asset/extensions/TeX/boldsymbol.js create mode 100644 mathjax/asset/extensions/TeX/cancel.js create mode 100644 mathjax/asset/extensions/TeX/color.js create mode 100644 mathjax/asset/extensions/TeX/enclose.js create mode 100644 mathjax/asset/extensions/TeX/extpfeil.js create mode 100644 mathjax/asset/extensions/TeX/mathchoice.js create mode 100644 mathjax/asset/extensions/TeX/mediawiki-texvc.js create mode 100644 mathjax/asset/extensions/TeX/mhchem.js create mode 100644 mathjax/asset/extensions/TeX/mhchem3/mhchem.js create mode 100644 mathjax/asset/extensions/TeX/newcommand.js create mode 100644 mathjax/asset/extensions/TeX/noErrors.js create mode 100644 mathjax/asset/extensions/TeX/noUndefined.js create mode 100644 mathjax/asset/extensions/TeX/unicode.js create mode 100644 mathjax/asset/extensions/TeX/verb.js create mode 100644 mathjax/asset/extensions/a11y/accessibility-menu.js create mode 100644 mathjax/asset/extensions/a11y/auto-collapse.js create mode 100644 mathjax/asset/extensions/a11y/collapsible.js create mode 100644 mathjax/asset/extensions/a11y/explorer.js create mode 100644 mathjax/asset/extensions/a11y/invalid_keypress.mp3 create mode 100644 mathjax/asset/extensions/a11y/invalid_keypress.ogg create mode 100644 mathjax/asset/extensions/a11y/mathjax-sre.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/functions/algebra.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/functions/elementary.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/functions/hyperbolic.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/functions/trigonometry.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/greek-capital.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/greek-mathfonts-bold.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/greek-mathfonts-italic.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/greek-mathfonts-sans-serif-bold.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/greek-scripts.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/greek-small.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/greek-symbols.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/hebrew_letters.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-lower-double-accent.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-lower-normal.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-lower-phonetic.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-lower-single-accent.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-bold-fraktur.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-bold-script.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-bold.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-double-struck.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-fraktur.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-italic.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-monospace.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-sans-serif-bold.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-sans-serif-italic.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-sans-serif.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-script.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-rest.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-upper-double-accent.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-upper-normal.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/latin-upper-single-accent.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/math_angles.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/math_arrows.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/math_characters.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/math_delimiters.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/math_digits.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/math_geometry.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/math_harpoons.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/math_non_characters.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/math_symbols.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/math_whitespace.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/symbols/other_stars.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/units/energy.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/units/length.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/units/memory.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/units/other.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/units/speed.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/units/temperature.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/units/time.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/units/volume.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/en/units/weight.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/functions/algebra.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/functions/elementary.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/functions/hyperbolic.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/functions/trigonometry.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/greek-capital.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/greek-mathfonts-bold.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/greek-mathfonts-italic.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/greek-mathfonts-sans-serif-bold.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/greek-scripts.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/greek-small.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/greek-symbols.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/hebrew_letters.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-lower-double-accent.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-lower-normal.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-lower-phonetic.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-lower-single-accent.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-mathfonts-bold-fraktur.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-mathfonts-bold-script.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-mathfonts-bold.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-mathfonts-double-struck.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-mathfonts-fraktur.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-mathfonts-italic.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-mathfonts-monospace.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-mathfonts-sans-serif-bold.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-mathfonts-sans-serif-italic.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-mathfonts-sans-serif.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-mathfonts-script.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-rest.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-upper-double-accent.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-upper-normal.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/latin-upper-single-accent.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/math_angles.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/math_arrows.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/math_characters.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/math_delimiters.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/math_digits.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/math_geometry.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/math_harpoons.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/math_non_characters.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/math_symbols.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/math_whitespace.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/symbols/other_stars.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/units/energy.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/units/length.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/units/memory.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/units/other.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/units/speed.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/units/temperature.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/units/time.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/units/volume.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/es/units/weight.js create mode 100644 mathjax/asset/extensions/a11y/mathmaps/mathmaps_ie.js create mode 100644 mathjax/asset/extensions/a11y/semantic-enrich.js create mode 100644 mathjax/asset/extensions/a11y/wgxpath.install.js create mode 100644 mathjax/asset/extensions/asciimath2jax.js create mode 100644 mathjax/asset/extensions/fast-preview.js create mode 100644 mathjax/asset/extensions/jsMath2jax.js create mode 100644 mathjax/asset/extensions/mml2jax.js create mode 100644 mathjax/asset/extensions/tex2jax.js create mode 100644 mathjax/asset/extensions/toMathML.js create mode 100644 mathjax/asset/jax/element/mml/jax.js create mode 100644 mathjax/asset/jax/element/mml/optable/Arrows.js create mode 100644 mathjax/asset/jax/element/mml/optable/BasicLatin.js create mode 100644 mathjax/asset/jax/element/mml/optable/CombDiacritMarks.js create mode 100644 mathjax/asset/jax/element/mml/optable/CombDiactForSymbols.js create mode 100644 mathjax/asset/jax/element/mml/optable/Dingbats.js create mode 100644 mathjax/asset/jax/element/mml/optable/GeneralPunctuation.js create mode 100644 mathjax/asset/jax/element/mml/optable/GeometricShapes.js create mode 100644 mathjax/asset/jax/element/mml/optable/GreekAndCoptic.js create mode 100644 mathjax/asset/jax/element/mml/optable/Latin1Supplement.js create mode 100644 mathjax/asset/jax/element/mml/optable/LetterlikeSymbols.js create mode 100644 mathjax/asset/jax/element/mml/optable/MathOperators.js create mode 100644 mathjax/asset/jax/element/mml/optable/MiscMathSymbolsA.js create mode 100644 mathjax/asset/jax/element/mml/optable/MiscMathSymbolsB.js create mode 100644 mathjax/asset/jax/element/mml/optable/MiscSymbolsAndArrows.js create mode 100644 mathjax/asset/jax/element/mml/optable/MiscTechnical.js create mode 100644 mathjax/asset/jax/element/mml/optable/SpacingModLetters.js create mode 100644 mathjax/asset/jax/element/mml/optable/SuppMathOperators.js create mode 100644 mathjax/asset/jax/element/mml/optable/SupplementalArrowsA.js create mode 100644 mathjax/asset/jax/element/mml/optable/SupplementalArrowsB.js create mode 100644 mathjax/asset/jax/input/AsciiMath/config.js create mode 100644 mathjax/asset/jax/input/AsciiMath/jax.js create mode 100644 mathjax/asset/jax/input/MathML/config.js create mode 100644 mathjax/asset/jax/input/MathML/entities/a.js create mode 100644 mathjax/asset/jax/input/MathML/entities/b.js create mode 100644 mathjax/asset/jax/input/MathML/entities/c.js create mode 100644 mathjax/asset/jax/input/MathML/entities/d.js create mode 100644 mathjax/asset/jax/input/MathML/entities/e.js create mode 100644 mathjax/asset/jax/input/MathML/entities/f.js create mode 100644 mathjax/asset/jax/input/MathML/entities/fr.js create mode 100644 mathjax/asset/jax/input/MathML/entities/g.js create mode 100644 mathjax/asset/jax/input/MathML/entities/h.js create mode 100644 mathjax/asset/jax/input/MathML/entities/i.js create mode 100644 mathjax/asset/jax/input/MathML/entities/j.js create mode 100644 mathjax/asset/jax/input/MathML/entities/k.js create mode 100644 mathjax/asset/jax/input/MathML/entities/l.js create mode 100644 mathjax/asset/jax/input/MathML/entities/m.js create mode 100644 mathjax/asset/jax/input/MathML/entities/n.js create mode 100644 mathjax/asset/jax/input/MathML/entities/o.js create mode 100644 mathjax/asset/jax/input/MathML/entities/opf.js create mode 100644 mathjax/asset/jax/input/MathML/entities/p.js create mode 100644 mathjax/asset/jax/input/MathML/entities/q.js create mode 100644 mathjax/asset/jax/input/MathML/entities/r.js create mode 100644 mathjax/asset/jax/input/MathML/entities/s.js create mode 100644 mathjax/asset/jax/input/MathML/entities/scr.js create mode 100644 mathjax/asset/jax/input/MathML/entities/t.js create mode 100644 mathjax/asset/jax/input/MathML/entities/u.js create mode 100644 mathjax/asset/jax/input/MathML/entities/v.js create mode 100644 mathjax/asset/jax/input/MathML/entities/w.js create mode 100644 mathjax/asset/jax/input/MathML/entities/x.js create mode 100644 mathjax/asset/jax/input/MathML/entities/y.js create mode 100644 mathjax/asset/jax/input/MathML/entities/z.js create mode 100644 mathjax/asset/jax/input/MathML/jax.js create mode 100644 mathjax/asset/jax/input/TeX/config.js create mode 100644 mathjax/asset/jax/input/TeX/jax.js create mode 100644 mathjax/asset/jax/output/CommonHTML/autoload/annotation-xml.js create mode 100644 mathjax/asset/jax/output/CommonHTML/autoload/maction.js create mode 100644 mathjax/asset/jax/output/CommonHTML/autoload/menclose.js create mode 100644 mathjax/asset/jax/output/CommonHTML/autoload/mglyph.js create mode 100644 mathjax/asset/jax/output/CommonHTML/autoload/mmultiscripts.js create mode 100644 mathjax/asset/jax/output/CommonHTML/autoload/ms.js create mode 100644 mathjax/asset/jax/output/CommonHTML/autoload/mtable.js create mode 100644 mathjax/asset/jax/output/CommonHTML/autoload/multiline.js create mode 100644 mathjax/asset/jax/output/CommonHTML/config.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/Caligraphic-Bold.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/Fraktur-Bold.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/Fraktur-Regular.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/Main-Bold.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/Math-BoldItalic.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/SansSerif-Bold.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/SansSerif-Italic.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/SansSerif-Regular.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/Script-Regular.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/Typewriter-Regular.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/fontdata-extra.js create mode 100644 mathjax/asset/jax/output/CommonHTML/fonts/TeX/fontdata.js create mode 100644 mathjax/asset/jax/output/CommonHTML/jax.js create mode 100644 mathjax/asset/jax/output/PreviewHTML/config.js create mode 100644 mathjax/asset/jax/output/PreviewHTML/jax.js create mode 100644 mathjax/asset/latest.js create mode 100644 mathjax/asset/localization/ar/FontWarnings.js create mode 100644 mathjax/asset/localization/ar/HTML-CSS.js create mode 100644 mathjax/asset/localization/ar/HelpDialog.js create mode 100644 mathjax/asset/localization/ar/MathML.js create mode 100644 mathjax/asset/localization/ar/MathMenu.js create mode 100644 mathjax/asset/localization/ar/TeX.js create mode 100644 mathjax/asset/localization/ar/ar.js create mode 100644 mathjax/asset/localization/ast/FontWarnings.js create mode 100644 mathjax/asset/localization/ast/HTML-CSS.js create mode 100644 mathjax/asset/localization/ast/HelpDialog.js create mode 100644 mathjax/asset/localization/ast/MathML.js create mode 100644 mathjax/asset/localization/ast/MathMenu.js create mode 100644 mathjax/asset/localization/ast/TeX.js create mode 100644 mathjax/asset/localization/ast/ast.js create mode 100644 mathjax/asset/localization/bcc/FontWarnings.js create mode 100644 mathjax/asset/localization/bcc/HTML-CSS.js create mode 100644 mathjax/asset/localization/bcc/HelpDialog.js create mode 100644 mathjax/asset/localization/bcc/MathML.js create mode 100644 mathjax/asset/localization/bcc/MathMenu.js create mode 100644 mathjax/asset/localization/bcc/TeX.js create mode 100644 mathjax/asset/localization/bcc/bcc.js create mode 100644 mathjax/asset/localization/bg/FontWarnings.js create mode 100644 mathjax/asset/localization/bg/HTML-CSS.js create mode 100644 mathjax/asset/localization/bg/HelpDialog.js create mode 100644 mathjax/asset/localization/bg/MathML.js create mode 100644 mathjax/asset/localization/bg/MathMenu.js create mode 100644 mathjax/asset/localization/bg/TeX.js create mode 100644 mathjax/asset/localization/bg/bg.js create mode 100644 mathjax/asset/localization/br/FontWarnings.js create mode 100644 mathjax/asset/localization/br/HTML-CSS.js create mode 100644 mathjax/asset/localization/br/HelpDialog.js create mode 100644 mathjax/asset/localization/br/MathML.js create mode 100644 mathjax/asset/localization/br/MathMenu.js create mode 100644 mathjax/asset/localization/br/TeX.js create mode 100644 mathjax/asset/localization/br/br.js create mode 100644 mathjax/asset/localization/ca/FontWarnings.js create mode 100644 mathjax/asset/localization/ca/HTML-CSS.js create mode 100644 mathjax/asset/localization/ca/HelpDialog.js create mode 100644 mathjax/asset/localization/ca/MathML.js create mode 100644 mathjax/asset/localization/ca/MathMenu.js create mode 100644 mathjax/asset/localization/ca/TeX.js create mode 100644 mathjax/asset/localization/ca/ca.js create mode 100644 mathjax/asset/localization/cdo/FontWarnings.js create mode 100644 mathjax/asset/localization/cdo/HTML-CSS.js create mode 100644 mathjax/asset/localization/cdo/HelpDialog.js create mode 100644 mathjax/asset/localization/cdo/MathML.js create mode 100644 mathjax/asset/localization/cdo/MathMenu.js create mode 100644 mathjax/asset/localization/cdo/TeX.js create mode 100644 mathjax/asset/localization/cdo/cdo.js create mode 100644 mathjax/asset/localization/ce/FontWarnings.js create mode 100644 mathjax/asset/localization/ce/HTML-CSS.js create mode 100644 mathjax/asset/localization/ce/HelpDialog.js create mode 100644 mathjax/asset/localization/ce/MathML.js create mode 100644 mathjax/asset/localization/ce/MathMenu.js create mode 100644 mathjax/asset/localization/ce/TeX.js create mode 100644 mathjax/asset/localization/ce/ce.js create mode 100644 mathjax/asset/localization/cs/FontWarnings.js create mode 100644 mathjax/asset/localization/cs/HTML-CSS.js create mode 100644 mathjax/asset/localization/cs/HelpDialog.js create mode 100644 mathjax/asset/localization/cs/MathML.js create mode 100644 mathjax/asset/localization/cs/MathMenu.js create mode 100644 mathjax/asset/localization/cs/TeX.js create mode 100644 mathjax/asset/localization/cs/cs.js create mode 100644 mathjax/asset/localization/cy/FontWarnings.js create mode 100644 mathjax/asset/localization/cy/HTML-CSS.js create mode 100644 mathjax/asset/localization/cy/HelpDialog.js create mode 100644 mathjax/asset/localization/cy/MathML.js create mode 100644 mathjax/asset/localization/cy/MathMenu.js create mode 100644 mathjax/asset/localization/cy/TeX.js create mode 100644 mathjax/asset/localization/cy/cy.js create mode 100644 mathjax/asset/localization/da/FontWarnings.js create mode 100644 mathjax/asset/localization/da/HTML-CSS.js create mode 100644 mathjax/asset/localization/da/HelpDialog.js create mode 100644 mathjax/asset/localization/da/MathML.js create mode 100644 mathjax/asset/localization/da/MathMenu.js create mode 100644 mathjax/asset/localization/da/TeX.js create mode 100644 mathjax/asset/localization/da/da.js create mode 100644 mathjax/asset/localization/de/FontWarnings.js create mode 100644 mathjax/asset/localization/de/HTML-CSS.js create mode 100644 mathjax/asset/localization/de/HelpDialog.js create mode 100644 mathjax/asset/localization/de/MathML.js create mode 100644 mathjax/asset/localization/de/MathMenu.js create mode 100644 mathjax/asset/localization/de/TeX.js create mode 100644 mathjax/asset/localization/de/de.js create mode 100644 mathjax/asset/localization/diq/FontWarnings.js create mode 100644 mathjax/asset/localization/diq/HTML-CSS.js create mode 100644 mathjax/asset/localization/diq/HelpDialog.js create mode 100644 mathjax/asset/localization/diq/MathML.js create mode 100644 mathjax/asset/localization/diq/MathMenu.js create mode 100644 mathjax/asset/localization/diq/TeX.js create mode 100644 mathjax/asset/localization/diq/diq.js create mode 100644 mathjax/asset/localization/en/FontWarnings.js create mode 100644 mathjax/asset/localization/en/HTML-CSS.js create mode 100644 mathjax/asset/localization/en/HelpDialog.js create mode 100644 mathjax/asset/localization/en/MathML.js create mode 100644 mathjax/asset/localization/en/MathMenu.js create mode 100644 mathjax/asset/localization/en/TeX.js create mode 100644 mathjax/asset/localization/en/en.js create mode 100644 mathjax/asset/localization/eo/FontWarnings.js create mode 100644 mathjax/asset/localization/eo/HTML-CSS.js create mode 100644 mathjax/asset/localization/eo/HelpDialog.js create mode 100644 mathjax/asset/localization/eo/MathML.js create mode 100644 mathjax/asset/localization/eo/MathMenu.js create mode 100644 mathjax/asset/localization/eo/TeX.js create mode 100644 mathjax/asset/localization/eo/eo.js create mode 100644 mathjax/asset/localization/es/FontWarnings.js create mode 100644 mathjax/asset/localization/es/HTML-CSS.js create mode 100644 mathjax/asset/localization/es/HelpDialog.js create mode 100644 mathjax/asset/localization/es/MathML.js create mode 100644 mathjax/asset/localization/es/MathMenu.js create mode 100644 mathjax/asset/localization/es/TeX.js create mode 100644 mathjax/asset/localization/es/es.js create mode 100644 mathjax/asset/localization/fa/FontWarnings.js create mode 100644 mathjax/asset/localization/fa/HTML-CSS.js create mode 100644 mathjax/asset/localization/fa/HelpDialog.js create mode 100644 mathjax/asset/localization/fa/MathML.js create mode 100644 mathjax/asset/localization/fa/MathMenu.js create mode 100644 mathjax/asset/localization/fa/TeX.js create mode 100644 mathjax/asset/localization/fa/fa.js create mode 100644 mathjax/asset/localization/fi/FontWarnings.js create mode 100644 mathjax/asset/localization/fi/HTML-CSS.js create mode 100644 mathjax/asset/localization/fi/HelpDialog.js create mode 100644 mathjax/asset/localization/fi/MathML.js create mode 100644 mathjax/asset/localization/fi/MathMenu.js create mode 100644 mathjax/asset/localization/fi/TeX.js create mode 100644 mathjax/asset/localization/fi/fi.js create mode 100644 mathjax/asset/localization/fr/FontWarnings.js create mode 100644 mathjax/asset/localization/fr/HTML-CSS.js create mode 100644 mathjax/asset/localization/fr/HelpDialog.js create mode 100644 mathjax/asset/localization/fr/MathML.js create mode 100644 mathjax/asset/localization/fr/MathMenu.js create mode 100644 mathjax/asset/localization/fr/TeX.js create mode 100644 mathjax/asset/localization/fr/fr.js create mode 100644 mathjax/asset/localization/gl/FontWarnings.js create mode 100644 mathjax/asset/localization/gl/HTML-CSS.js create mode 100644 mathjax/asset/localization/gl/HelpDialog.js create mode 100644 mathjax/asset/localization/gl/MathML.js create mode 100644 mathjax/asset/localization/gl/MathMenu.js create mode 100644 mathjax/asset/localization/gl/TeX.js create mode 100644 mathjax/asset/localization/gl/gl.js create mode 100644 mathjax/asset/localization/he/FontWarnings.js create mode 100644 mathjax/asset/localization/he/HTML-CSS.js create mode 100644 mathjax/asset/localization/he/HelpDialog.js create mode 100644 mathjax/asset/localization/he/MathML.js create mode 100644 mathjax/asset/localization/he/MathMenu.js create mode 100644 mathjax/asset/localization/he/TeX.js create mode 100644 mathjax/asset/localization/he/he.js create mode 100644 mathjax/asset/localization/ia/FontWarnings.js create mode 100644 mathjax/asset/localization/ia/HTML-CSS.js create mode 100644 mathjax/asset/localization/ia/HelpDialog.js create mode 100644 mathjax/asset/localization/ia/MathML.js create mode 100644 mathjax/asset/localization/ia/MathMenu.js create mode 100644 mathjax/asset/localization/ia/TeX.js create mode 100644 mathjax/asset/localization/ia/ia.js create mode 100644 mathjax/asset/localization/it/FontWarnings.js create mode 100644 mathjax/asset/localization/it/HTML-CSS.js create mode 100644 mathjax/asset/localization/it/HelpDialog.js create mode 100644 mathjax/asset/localization/it/MathML.js create mode 100644 mathjax/asset/localization/it/MathMenu.js create mode 100644 mathjax/asset/localization/it/TeX.js create mode 100644 mathjax/asset/localization/it/it.js create mode 100644 mathjax/asset/localization/ja/FontWarnings.js create mode 100644 mathjax/asset/localization/ja/HTML-CSS.js create mode 100644 mathjax/asset/localization/ja/HelpDialog.js create mode 100644 mathjax/asset/localization/ja/MathML.js create mode 100644 mathjax/asset/localization/ja/MathMenu.js create mode 100644 mathjax/asset/localization/ja/TeX.js create mode 100644 mathjax/asset/localization/ja/ja.js create mode 100644 mathjax/asset/localization/kn/FontWarnings.js create mode 100644 mathjax/asset/localization/kn/HTML-CSS.js create mode 100644 mathjax/asset/localization/kn/HelpDialog.js create mode 100644 mathjax/asset/localization/kn/MathML.js create mode 100644 mathjax/asset/localization/kn/MathMenu.js create mode 100644 mathjax/asset/localization/kn/TeX.js create mode 100644 mathjax/asset/localization/kn/kn.js create mode 100644 mathjax/asset/localization/ko/FontWarnings.js create mode 100644 mathjax/asset/localization/ko/HTML-CSS.js create mode 100644 mathjax/asset/localization/ko/HelpDialog.js create mode 100644 mathjax/asset/localization/ko/MathML.js create mode 100644 mathjax/asset/localization/ko/MathMenu.js create mode 100644 mathjax/asset/localization/ko/TeX.js create mode 100644 mathjax/asset/localization/ko/ko.js create mode 100644 mathjax/asset/localization/lb/FontWarnings.js create mode 100644 mathjax/asset/localization/lb/HTML-CSS.js create mode 100644 mathjax/asset/localization/lb/HelpDialog.js create mode 100644 mathjax/asset/localization/lb/MathML.js create mode 100644 mathjax/asset/localization/lb/MathMenu.js create mode 100644 mathjax/asset/localization/lb/TeX.js create mode 100644 mathjax/asset/localization/lb/lb.js create mode 100644 mathjax/asset/localization/lki/FontWarnings.js create mode 100644 mathjax/asset/localization/lki/HTML-CSS.js create mode 100644 mathjax/asset/localization/lki/HelpDialog.js create mode 100644 mathjax/asset/localization/lki/MathML.js create mode 100644 mathjax/asset/localization/lki/MathMenu.js create mode 100644 mathjax/asset/localization/lki/TeX.js create mode 100644 mathjax/asset/localization/lki/lki.js create mode 100644 mathjax/asset/localization/lt/FontWarnings.js create mode 100644 mathjax/asset/localization/lt/HTML-CSS.js create mode 100644 mathjax/asset/localization/lt/HelpDialog.js create mode 100644 mathjax/asset/localization/lt/MathML.js create mode 100644 mathjax/asset/localization/lt/MathMenu.js create mode 100644 mathjax/asset/localization/lt/TeX.js create mode 100644 mathjax/asset/localization/lt/lt.js create mode 100644 mathjax/asset/localization/mk/FontWarnings.js create mode 100644 mathjax/asset/localization/mk/HTML-CSS.js create mode 100644 mathjax/asset/localization/mk/HelpDialog.js create mode 100644 mathjax/asset/localization/mk/MathML.js create mode 100644 mathjax/asset/localization/mk/MathMenu.js create mode 100644 mathjax/asset/localization/mk/TeX.js create mode 100644 mathjax/asset/localization/mk/mk.js create mode 100644 mathjax/asset/localization/nl/FontWarnings.js create mode 100644 mathjax/asset/localization/nl/HTML-CSS.js create mode 100644 mathjax/asset/localization/nl/HelpDialog.js create mode 100644 mathjax/asset/localization/nl/MathML.js create mode 100644 mathjax/asset/localization/nl/MathMenu.js create mode 100644 mathjax/asset/localization/nl/TeX.js create mode 100644 mathjax/asset/localization/nl/nl.js create mode 100644 mathjax/asset/localization/oc/FontWarnings.js create mode 100644 mathjax/asset/localization/oc/HTML-CSS.js create mode 100644 mathjax/asset/localization/oc/HelpDialog.js create mode 100644 mathjax/asset/localization/oc/MathML.js create mode 100644 mathjax/asset/localization/oc/MathMenu.js create mode 100644 mathjax/asset/localization/oc/TeX.js create mode 100644 mathjax/asset/localization/oc/oc.js create mode 100644 mathjax/asset/localization/pl/FontWarnings.js create mode 100644 mathjax/asset/localization/pl/HTML-CSS.js create mode 100644 mathjax/asset/localization/pl/HelpDialog.js create mode 100644 mathjax/asset/localization/pl/MathML.js create mode 100644 mathjax/asset/localization/pl/MathMenu.js create mode 100644 mathjax/asset/localization/pl/TeX.js create mode 100644 mathjax/asset/localization/pl/pl.js create mode 100644 mathjax/asset/localization/pt-br/FontWarnings.js create mode 100644 mathjax/asset/localization/pt-br/HTML-CSS.js create mode 100644 mathjax/asset/localization/pt-br/HelpDialog.js create mode 100644 mathjax/asset/localization/pt-br/MathML.js create mode 100644 mathjax/asset/localization/pt-br/MathMenu.js create mode 100644 mathjax/asset/localization/pt-br/TeX.js create mode 100644 mathjax/asset/localization/pt-br/pt-br.js create mode 100644 mathjax/asset/localization/pt/FontWarnings.js create mode 100644 mathjax/asset/localization/pt/HTML-CSS.js create mode 100644 mathjax/asset/localization/pt/HelpDialog.js create mode 100644 mathjax/asset/localization/pt/MathML.js create mode 100644 mathjax/asset/localization/pt/MathMenu.js create mode 100644 mathjax/asset/localization/pt/TeX.js create mode 100644 mathjax/asset/localization/pt/pt.js create mode 100644 mathjax/asset/localization/qqq/FontWarnings.js create mode 100644 mathjax/asset/localization/qqq/HTML-CSS.js create mode 100644 mathjax/asset/localization/qqq/HelpDialog.js create mode 100644 mathjax/asset/localization/qqq/MathML.js create mode 100644 mathjax/asset/localization/qqq/MathMenu.js create mode 100644 mathjax/asset/localization/qqq/TeX.js create mode 100644 mathjax/asset/localization/qqq/qqq.js create mode 100644 mathjax/asset/localization/ru/FontWarnings.js create mode 100644 mathjax/asset/localization/ru/HTML-CSS.js create mode 100644 mathjax/asset/localization/ru/HelpDialog.js create mode 100644 mathjax/asset/localization/ru/MathML.js create mode 100644 mathjax/asset/localization/ru/MathMenu.js create mode 100644 mathjax/asset/localization/ru/TeX.js create mode 100644 mathjax/asset/localization/ru/ru.js create mode 100644 mathjax/asset/localization/scn/FontWarnings.js create mode 100644 mathjax/asset/localization/scn/HTML-CSS.js create mode 100644 mathjax/asset/localization/scn/HelpDialog.js create mode 100644 mathjax/asset/localization/scn/MathML.js create mode 100644 mathjax/asset/localization/scn/MathMenu.js create mode 100644 mathjax/asset/localization/scn/TeX.js create mode 100644 mathjax/asset/localization/scn/scn.js create mode 100644 mathjax/asset/localization/sco/FontWarnings.js create mode 100644 mathjax/asset/localization/sco/HTML-CSS.js create mode 100644 mathjax/asset/localization/sco/HelpDialog.js create mode 100644 mathjax/asset/localization/sco/MathML.js create mode 100644 mathjax/asset/localization/sco/MathMenu.js create mode 100644 mathjax/asset/localization/sco/TeX.js create mode 100644 mathjax/asset/localization/sco/sco.js create mode 100644 mathjax/asset/localization/sk/FontWarnings.js create mode 100644 mathjax/asset/localization/sk/HTML-CSS.js create mode 100644 mathjax/asset/localization/sk/HelpDialog.js create mode 100644 mathjax/asset/localization/sk/MathML.js create mode 100644 mathjax/asset/localization/sk/MathMenu.js create mode 100644 mathjax/asset/localization/sk/TeX.js create mode 100644 mathjax/asset/localization/sk/sk.js create mode 100644 mathjax/asset/localization/sl/FontWarnings.js create mode 100644 mathjax/asset/localization/sl/HTML-CSS.js create mode 100644 mathjax/asset/localization/sl/HelpDialog.js create mode 100644 mathjax/asset/localization/sl/MathML.js create mode 100644 mathjax/asset/localization/sl/MathMenu.js create mode 100644 mathjax/asset/localization/sl/TeX.js create mode 100644 mathjax/asset/localization/sl/sl.js create mode 100644 mathjax/asset/localization/sv/FontWarnings.js create mode 100644 mathjax/asset/localization/sv/HTML-CSS.js create mode 100644 mathjax/asset/localization/sv/HelpDialog.js create mode 100644 mathjax/asset/localization/sv/MathML.js create mode 100644 mathjax/asset/localization/sv/MathMenu.js create mode 100644 mathjax/asset/localization/sv/TeX.js create mode 100644 mathjax/asset/localization/sv/sv.js create mode 100644 mathjax/asset/localization/th/FontWarnings.js create mode 100644 mathjax/asset/localization/th/HTML-CSS.js create mode 100644 mathjax/asset/localization/th/HelpDialog.js create mode 100644 mathjax/asset/localization/th/MathML.js create mode 100644 mathjax/asset/localization/th/MathMenu.js create mode 100644 mathjax/asset/localization/th/TeX.js create mode 100644 mathjax/asset/localization/th/th.js create mode 100644 mathjax/asset/localization/tr/FontWarnings.js create mode 100644 mathjax/asset/localization/tr/HTML-CSS.js create mode 100644 mathjax/asset/localization/tr/HelpDialog.js create mode 100644 mathjax/asset/localization/tr/MathML.js create mode 100644 mathjax/asset/localization/tr/MathMenu.js create mode 100644 mathjax/asset/localization/tr/TeX.js create mode 100644 mathjax/asset/localization/tr/tr.js create mode 100644 mathjax/asset/localization/uk/FontWarnings.js create mode 100644 mathjax/asset/localization/uk/HTML-CSS.js create mode 100644 mathjax/asset/localization/uk/HelpDialog.js create mode 100644 mathjax/asset/localization/uk/MathML.js create mode 100644 mathjax/asset/localization/uk/MathMenu.js create mode 100644 mathjax/asset/localization/uk/TeX.js create mode 100644 mathjax/asset/localization/uk/uk.js create mode 100644 mathjax/asset/localization/vi/FontWarnings.js create mode 100644 mathjax/asset/localization/vi/HTML-CSS.js create mode 100644 mathjax/asset/localization/vi/HelpDialog.js create mode 100644 mathjax/asset/localization/vi/MathML.js create mode 100644 mathjax/asset/localization/vi/MathMenu.js create mode 100644 mathjax/asset/localization/vi/TeX.js create mode 100644 mathjax/asset/localization/vi/vi.js create mode 100644 mathjax/asset/localization/zh-hans/FontWarnings.js create mode 100644 mathjax/asset/localization/zh-hans/HTML-CSS.js create mode 100644 mathjax/asset/localization/zh-hans/HelpDialog.js create mode 100644 mathjax/asset/localization/zh-hans/MathML.js create mode 100644 mathjax/asset/localization/zh-hans/MathMenu.js create mode 100644 mathjax/asset/localization/zh-hans/TeX.js create mode 100644 mathjax/asset/localization/zh-hans/zh-hans.js create mode 100644 mathjax/asset/localization/zh-hant/FontWarnings.js create mode 100644 mathjax/asset/localization/zh-hant/HTML-CSS.js create mode 100644 mathjax/asset/localization/zh-hant/HelpDialog.js create mode 100644 mathjax/asset/localization/zh-hant/MathML.js create mode 100644 mathjax/asset/localization/zh-hant/MathMenu.js create mode 100644 mathjax/asset/localization/zh-hant/TeX.js create mode 100644 mathjax/asset/localization/zh-hant/zh-hant.js create mode 100644 mathjax/asset/package.json diff --git a/mathjax/asset/.gitignore b/mathjax/asset/.gitignore new file mode 100644 index 000000000..bc9861160 --- /dev/null +++ b/mathjax/asset/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +docs/build/html-mathjax-site +config/local/*.js +!config/local/local.js +unpacked/config/local/*.js +!unpacked/config/local/local.js diff --git a/mathjax/asset/.npmignore b/mathjax/asset/.npmignore new file mode 100644 index 000000000..5caebfb75 --- /dev/null +++ b/mathjax/asset/.npmignore @@ -0,0 +1,7 @@ +.DS_Store +docs/build/html-mathjax-site +config/local/*.js +!config/local/local.js +unpacked/config/local/*.js +!unpacked/config/local/local.js +fonts/HTML-CSS/TeX/png diff --git a/mathjax/asset/.travis.yml b/mathjax/asset/.travis.yml new file mode 100644 index 000000000..f7f8b6e50 --- /dev/null +++ b/mathjax/asset/.travis.yml @@ -0,0 +1,17 @@ +language: node_js +node_js: +- stable +sudo: false +script: +- npm install +- npm test +branches: + only: + - "/^\\d+\\.\\d+/" +deploy: + provider: npm + email: manager@mathjax.org + api_key: + secure: cTkds6AqvCrkE9lAbBBjyDy7swjQEsGTCvLcjEyJemWH7ciNmtbwQ+Mzpk5bsL1i734CS29fTUBY05bPdwhBXB19yC0LzDfuNd2OKd1GhKa5OUig3d3+iNZEb/bhlEL/N2pM3pNBLT3+HDWBWVPPzDOCgSHYf355WmNlFIxrUtWbQQ7w5cX1d6ZKHVDkO0s9cl9eIQkX5aIKpsQM/N/tfkqPlF3OZuseTg7TU1wL+g6zqtsa0a1uhjXiCSRfDzgi4e2FUg9OBJHInbRho7MoZ9c8NrgCDTqwh1xJVAgi50HZpFAlhw3bBvWMzWLESLKUgmDOQc1/jzq6EhdUY1HMmryHPtvFIlyj0mWH88lZjUOqsCntG+t874ONYGkHF7I5q9VsX5LJNiZzASeXMymA1BP3fC33s/vGXen1H90JpdlGQXQvIXn6ZIQ9UiI1/bONuxVEUghnVRZHLTe2Nhy7s2s0OHTN23PmDVPHSzuM1FjEXXFaza/dGgOfi0ACRBPcqopQ2wxuCVDlmrrL+3r2o4Tp5F3f49KIrqNwO/GSnWX5H7GgxHKSh7CK1rUwqcpTumwYfY1Do/xdlu2D3I/IjZXO9TzDtZYJG1ye0BVTh44cECfBgBIZVmRH56Yjo5MvKEQwSSFfETKW4PKWoahbZIC4V99YWhoRqYqtb+OT0ow= + on: + tags: true diff --git a/mathjax/asset/CONTRIBUTING.md b/mathjax/asset/CONTRIBUTING.md new file mode 100644 index 000000000..a803fc9e2 --- /dev/null +++ b/mathjax/asset/CONTRIBUTING.md @@ -0,0 +1,259 @@ +# Contributing to MathJax + +You are interested in giving us a hand? That's awesome! We've put together some brief guidelines that should help you get started quickly and easily. + +There are lots and lots of ways to get involved, this document covers: + +* [reporting an issue](#reporting-an-issue) + * [bug reports](#bug-reports) + * [feature requests](#feature-requests) + * [change requests](#change-requests) +* [working on MathJax core](#working-on-mathjax-core) + * [key branches and tags](#key-branches--tags) + * [submitting pull requests](#submitting-pull-requests) + * [testing and quality assurance](#testing-and-quality-assurance) + * [writing documentation](#writing-documentation) + * [translation](#translation) +* [Conduct](#conduct) + + +## Reporting An Issue + +If you're about to raise an issue because you think you've found a +problem with MathJax, or you'd like to make a request for a new +feature in the codebase, or any other reason… please read this first. + +The GitHub issue tracker is the preferred channel for [bug reports](#bug-reports), +[feature requests](#feature-requests), [change requests](#change-requests) and [submitting pull +requests](#submitting-pull-requests), but please respect the following restrictions: + +* Please **search for existing issues**. Help us keep duplicate issues + to a minimum by checking to see if someone has already reported your + problem or requested your idea. + +* Please **do not** use the issue tracker for personal support + requests (use [the MathJax User Group](https://groups.google.com/forum/#!forum/mathjax-users)). + +* Please **be civil**. Keep the discussion on topic and respect the + opinions of others. See also our [Conduct Guidelines](#conduct) + +### Bug Reports + +A bug is a _demonstrable problem_ that is caused by the code in the repository. +Good bug reports are extremely helpful - thank you! + +Guidelines for bug reports: + +1. **Use the GitHub issue search** — check if the issue has already been + reported. + +2. **Check if the issue has been fixed** — look for [closed issues in the + current milestone](https://github.com/MathJax/MathJax/issues?&page=1&state=closed) or try to reproduce it + using the latest `develop` branch. Please note that we only pack MathJax for releases, so on the `develop` branch you have to use `/unpacked/MathJax.js` etc. to test. + +3. **Share a live sample of the problem** — without a live page it is usually impossible to debug problems; see also the Bug Report Template below. + +4. **Isolate the problem** — a live sample is a starting point but if you want to speed things up create a [reduced test + case](http://css-tricks.com/6263-reduced-test-cases/). Be specific about your setup (browser, OS versions etc). Use services like [jsbin](http://jsbin.com), [CodePen](http://codepen.io), [JSfiddle](http://jsfiddle.com) to make collaboration on minimal test cases easier for everyone. Use the unpacked copy of MathJax (`[...]/unpacked/MathJax.js` etc.) for better debugging. + +5. **Include a screenshot/cast as a last resort** — Is your issue about a layout + or design feature / bug but hard to reproduce or isolate? Then please provide a screenshot or screencast. Tools like [LICEcap](http://www.cockos.com/licecap/) or [SauceLabs](http://www.saucelabs.com) allow you to quickly and easily record a screencasts. Make it an animated gif, embed it directly into your GitHub issue -- kapow! + +6. Use the Bug Report template below or [click this + link](https://github.com/MathJax/MathJax/issues/new?title=Bug%3A&body=%23%23%23%20Issue%20Summary%0A%0A%23%23%23%20Steps%20to%20Reproduce%0A%0A1.%20This%20is%20the%20first%20step%0A%0AThis%20is%20a%20bug%20because...%0A%0A%23%23%23%20Technical%20details%0A%0A*%20MathJax%20Version%3A%20master%20-%20latest%20commit%3A%20%20INSERT%20COMMIT%20REF%0A*%20Client%20OS%3A%20%0A*%20Browser%3A%20%0A*%20) + to start creating a bug report with the template automatically. + +A good bug report shouldn't leave others needing to chase you up for +more information. Be sure to include the details of your environment. + +Here is a [real example](https://github.com/mathjax/MathJax/issues/820) + +Template Example ([click to use](https://github.com/MathJax/MathJax/issues/new?title=Bug%3A&body=%23%23%23%20Issue%20Summary%0A%0A%23%23%23%20Steps%20to%20Reproduce%0A%0A1.%20This%20is%20the%20first%20step%0A%0AThis%20is%20a%20bug%20because...%0A%0A%23%23%23%20Technical%20details%0A%0A*%20MathJax%20Version%3A%20master%20-%20latest%20commit%3A%20%20INSERT%20COMMIT%20REF%0A*%20Client%20OS%3A%20%0A*%20Browser%3A%20%0A*%20)): +``` +Short and descriptive example bug report title + +### Issue Summary + +A summary of the issue and the browser/OS environment in which it occurs. If +suitable, include the steps required to reproduce the bug. + +### Steps to Reproduce + +1. This is the first step +2. This is the second step +3. Further steps, etc. + +Any other information you want to share that is relevant to the issue +being reported. Especially, why do you consider this to be a bug? What +do you expect to happen instead? + +### Technical details: + +* MathJax Version: 2.3 (latest commit: f3aaf3a2a3e964df2770dc4aaaa9c87ce5f47e2c) +* Client OS: Mac OS X 10.8.4 +* Browser: Chrome 29.0.1547.57 +``` + + +### Feature Requests + +Feature requests are welcome. Before you submit one be sure to have: + +1. Read the + [Roadmaps](https://github.com/mathjax/MathJax/wiki/Mathjax-roadmap), + **use the GitHub search** and check the feature hasn't already been + requested. +2. Take a moment to think about whether your idea fits with the scope + and aims of the project, or if it might better fit being a [custom + extension](https://github.com/mathjax/MathJax-third-party-extensions). +3. Remember, it's up to *you* to make a strong case to convince the + project's leaders of the merits of this feature. Please provide as + much detail and context as possible, this means explaining the use + case and why it is likely to be common. +4. Clearly indicate whether this is a feature request for MathJax + core, input & output jax, or extensions. + + +### Change Requests + +Change requests cover both architectural and functional changes to how +MathJax works. If you have an idea for a new or different dependency, +a refactor, or an improvement to a feature, etc - please be sure to: + +1. **Use the GitHub search** and check someone else didn't get there first +2. Take a moment to think about the best way to make a case for, and + explain what you're thinking. Are you sure this shouldn't really be + a [bug report](#bug-reports) or a [feature + request](#feature-requests)? Is it really one idea or is it many? + What's the context? What problem are you solving? Why is what you + are suggesting better than what's already there? Does it fit with + the Roadmap? + +## Working on MathJax core + +You want to contribute code? Fantastic! Let's get you started. + +### Key Branches & Tags + +To get it out of the way: + +- **[develop](https://github.com/MathJax/MathJax/tree/develop)** is + the development branch. All work on the next release happens here so + you should generally branch off `develop`. Do **NOT** use this branch + for a production site. +- **[master](https://github.com/MathJax/MathJax)** contains the latest + release of MathJax. This branch may be used in production. Do + **NOT** use this branch to work on MathJax's source. + +### Submitting Pull Requests + +Pull requests are awesome. If you're looking to raise a PR for +something which doesn't have an open issue, please think carefully +about [raising an issue](#reporting-an-issue) which your PR can close, +especially if you're fixing a bug. This makes it more likely that +there will be enough information available for your PR to be properly +tested and merged. + +##### Need Help? + +If you're not completely clear on how to submit / update / *do* Pull +Requests, please check out our [source control +policies](https://github.com/mathjax/MathJax/wiki/Source-control-policies). For +more insights, chech the excellent in depth [Git Workflow +guide](https://github.com/TryGhost/Ghost/wiki/Git-Workflow) from +Ghost, in particular + +* [Ghost Workflow guide: commit messages](https://github.com/TryGhost/Ghost/wiki/Git-workflow#commit-messages) + +### Testing and Quality Assurance + +Never underestimate just how useful quality assurance is. If you're +looking to get involved with the code base and don't know where to +start, checking out and testing a pull request is one of the most +useful things you could do. + +If you want to get involved with testing MathJax, there is a set of QA +Documentation [in our testing +framework](https://github.com/MathJax/MathJax-test). + +Essentially though, [check out the latest develop +branch](#working-on-mathJax-core), take it for a spin, and if you find +anything odd, please follow the [bug report guidelines](#bug-reports) +and let us know! + +#### Checking out a Pull Request + +These are some [excellent +instructions](https://gist.github.com/piscisaureus/3342247) on +configuring your GitHub repository to allow you to checkout pull +requests in the same way as branches: +. + + +### Writing documentation + +MathJax's main documentation can be found at [docs.mathjax.org](http://docs.mathjax.org). +The source of the docs is hosted in the +[mathjax/mathjax-docs](http://github.com/mathjax/mathjax-docs) repo here on GitHub. + +The documentation is generated using [Sphinx-doc](http://sphinx-doc.org/) and hosted on +[Read the docs](http://readthedocs.org). +You can clone the repo and submit pull requests following the +[pull-request](#submitting-pull-requests) guidelines. + + +### Translation + +If you wish to add or update translations of MathJax, please do it on +[TranslateWiki.net](https://translatewiki.net/w/i.php?title=Special:Translate&group=out-mathjax-0-all) +(and while you're there you can help other open source projects, +too, because you're awesome!). + +For bug reports and other questions that don't fit on +TranslateWiki.net, head over to the +[mathjax/mathjax-i18n](https://github.com/mathjax/MathJax-i18n) +repository. + +## Conduct + +We are committed to providing a friendly, safe and welcoming environment for +all, regardless of gender, sexual orientation, disability, ethnicity, religion, +or similar personal characteristic. + +Please be kind and courteous. There's no need to be mean or rude. +Respect that people have differences of opinion and that every design or +implementation choice carries a trade-off and numerous costs. There is seldom +a right answer, merely an optimal answer given a set of values and +circumstances. + +Please keep unstructured critique to a minimum. If you have solid ideas you +want to experiment with, make a fork and see how it works. + +We will exclude you from interaction if you insult, demean or harass anyone. +That is not welcome behaviour. We interpret the term "harassment" as +including the definition in the +[Citizen Code of Conduct](http://citizencodeofconduct.org/); +if you have any lack of clarity about what might be included in that concept, +please read their definition. In particular, we don't tolerate behavior that +excludes people in socially marginalized groups. + +Private harassment is also unacceptable. No matter who you are, if you feel +you have been or are being harassed or made uncomfortable by a community +member, please contact one of the channel ops or any of the +[MathJax](https://github.com/MathJax/MathJax) core team +immediately. Whether you're a regular contributor or a newcomer, we care about +making this community a safe place for you and we've got your back. + +Likewise any spamming, trolling, flaming, baiting or other attention-stealing +behaviour is not welcome. + +We also suggest to read [discourse's +rules](http://blog.discourse.org/2013/03/the-universal-rules-of-civilized-discourse/) + +## References + +* We heavily borrowed from Mozilla and Ghost -- thank you! + * https://github.com/TryGhost/Ghost/blob/master/CONTRIBUTING.md + * https://github.com/mozilla/rust/wiki/Note-development-policy +* https://github.com/jden/CONTRIBUTING.md/blob/master/CONTRIBUTING.md +* http://blog.discourse.org/2013/03/the-universal-rules-of-civilized-discourse/ diff --git a/mathjax/asset/LICENSE b/mathjax/asset/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/mathjax/asset/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/mathjax/asset/MathJax.js b/mathjax/asset/MathJax.js new file mode 100644 index 000000000..c54a1ed2d --- /dev/null +++ b/mathjax/asset/MathJax.js @@ -0,0 +1,19 @@ +/* + * /MathJax.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +if(document.getElementById&&document.childNodes&&document.createElement){if(!(window.MathJax&&MathJax.Hub)){if(window.MathJax){window.MathJax={AuthorConfig:window.MathJax}}else{window.MathJax={}}MathJax.isPacked=true;MathJax.version="2.7.5";MathJax.fileversion="2.7.5";MathJax.cdnVersion="2.7.5";MathJax.cdnFileVersions={};(function(d){var b=window[d];if(!b){b=window[d]={}}var e=[];var c=function(f){var g=f.constructor;if(!g){g=function(){}}for(var h in f){if(h!=="constructor"&&f.hasOwnProperty(h)){g[h]=f[h]}}return g};var a=function(){return function(){return arguments.callee.Init.call(this,arguments)}};b.Object=c({constructor:a(),Subclass:function(f,h){var g=a();g.SUPER=this;g.Init=this.Init;g.Subclass=this.Subclass;g.Augment=this.Augment;g.protoFunction=this.protoFunction;g.can=this.can;g.has=this.has;g.isa=this.isa;g.prototype=new this(e);g.prototype.constructor=g;g.Augment(f,h);return g},Init:function(f){var g=this;if(f.length===1&&f[0]===e){return g}if(!(g instanceof f.callee)){g=new f.callee(e)}return g.Init.apply(g,f)||g},Augment:function(f,g){var h;if(f!=null){for(h in f){if(f.hasOwnProperty(h)){this.protoFunction(h,f[h])}}if(f.toString!==this.prototype.toString&&f.toString!=={}.toString){this.protoFunction("toString",f.toString)}}if(g!=null){for(h in g){if(g.hasOwnProperty(h)){this[h]=g[h]}}}return this},protoFunction:function(g,f){this.prototype[g]=f;if(typeof f==="function"){f.SUPER=this.SUPER.prototype}},prototype:{Init:function(){},SUPER:function(f){return f.callee.SUPER},can:function(f){return typeof(this[f])==="function"},has:function(f){return typeof(this[f])!=="undefined"},isa:function(f){return(f instanceof Object)&&(this instanceof f)}},can:function(f){return this.prototype.can.call(this,f)},has:function(f){return this.prototype.has.call(this,f)},isa:function(g){var f=this;while(f){if(f===g){return true}else{f=f.SUPER}}return false},SimpleSUPER:c({constructor:function(f){return this.SimpleSUPER.define(f)},define:function(f){var h={};if(f!=null){for(var g in f){if(f.hasOwnProperty(g)){h[g]=this.wrap(g,f[g])}}if(f.toString!==this.prototype.toString&&f.toString!=={}.toString){h.toString=this.wrap("toString",f.toString)}}return h},wrap:function(i,h){if(typeof(h)!=="function"||!h.toString().match(/\.\s*SUPER\s*\(/)){return h}var g=function(){this.SUPER=g.SUPER[i];try{var f=h.apply(this,arguments)}catch(j){delete this.SUPER;throw j}delete this.SUPER;return f};g.toString=function(){return h.toString.apply(h,arguments)};return g}})});b.Object.isArray=Array.isArray||function(f){return Object.prototype.toString.call(f)==="[object Array]"};b.Object.Array=Array})("MathJax");(function(BASENAME){var BASE=window[BASENAME];if(!BASE){BASE=window[BASENAME]={}}var isArray=BASE.Object.isArray;var CALLBACK=function(data){var cb=function(){return arguments.callee.execute.apply(arguments.callee,arguments)};for(var id in CALLBACK.prototype){if(CALLBACK.prototype.hasOwnProperty(id)){if(typeof(data[id])!=="undefined"){cb[id]=data[id]}else{cb[id]=CALLBACK.prototype[id]}}}cb.toString=CALLBACK.prototype.toString;return cb};CALLBACK.prototype={isCallback:true,hook:function(){},data:[],object:window,execute:function(){if(!this.called||this.autoReset){this.called=!this.autoReset;return this.hook.apply(this.object,this.data.concat([].slice.call(arguments,0)))}},reset:function(){delete this.called},toString:function(){return this.hook.toString.apply(this.hook,arguments)}};var ISCALLBACK=function(f){return(typeof(f)==="function"&&f.isCallback)};var EVAL=function(code){return eval.call(window,code)};var TESTEVAL=function(){EVAL("var __TeSt_VaR__ = 1");if(window.__TeSt_VaR__){try{delete window.__TeSt_VaR__}catch(error){window.__TeSt_VaR__=null}}else{if(window.execScript){EVAL=function(code){BASE.__code=code;code="try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";window.execScript(code);var result=BASE.__result;delete BASE.__result;delete BASE.__code;if(result instanceof Error){throw result}return result}}else{EVAL=function(code){BASE.__code=code;code="try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";var head=(document.getElementsByTagName("head"))[0];if(!head){head=document.body}var script=document.createElement("script");script.appendChild(document.createTextNode(code));head.appendChild(script);head.removeChild(script);var result=BASE.__result;delete BASE.__result;delete BASE.__code;if(result instanceof Error){throw result}return result}}}TESTEVAL=null};var USING=function(args,i){if(arguments.length>1){if(arguments.length===2&&!(typeof arguments[0]==="function")&&arguments[0] instanceof Object&&typeof arguments[1]==="number"){args=[].slice.call(args,i)}else{args=[].slice.call(arguments,0)}}if(isArray(args)&&args.length===1&&typeof(args[0])==="function"){args=args[0]}if(typeof args==="function"){if(args.execute===CALLBACK.prototype.execute){return args}return CALLBACK({hook:args})}else{if(isArray(args)){if(typeof(args[0])==="string"&&args[1] instanceof Object&&typeof args[1][args[0]]==="function"){return CALLBACK({hook:args[1][args[0]],object:args[1],data:args.slice(2)})}else{if(typeof args[0]==="function"){return CALLBACK({hook:args[0],data:args.slice(1)})}else{if(typeof args[1]==="function"){return CALLBACK({hook:args[1],object:args[0],data:args.slice(2)})}}}}else{if(typeof(args)==="string"){if(TESTEVAL){TESTEVAL()}return CALLBACK({hook:EVAL,data:[args]})}else{if(args instanceof Object){return CALLBACK(args)}else{if(typeof(args)==="undefined"){return CALLBACK({})}}}}}throw Error("Can't make callback from given data")};var DELAY=function(time,callback){callback=USING(callback);callback.timeout=setTimeout(callback,time);return callback};var WAITFOR=function(callback,signal){callback=USING(callback);if(!callback.called){WAITSIGNAL(callback,signal);signal.pending++}};var WAITEXECUTE=function(){var signals=this.signal;delete this.signal;this.execute=this.oldExecute;delete this.oldExecute;var result=this.execute.apply(this,arguments);if(ISCALLBACK(result)&&!result.called){WAITSIGNAL(result,signals)}else{for(var i=0,m=signals.length;i0&&priority=0;i--){this.hooks.splice(i,1)}this.remove=[]}});var EXECUTEHOOKS=function(hooks,data,reset){if(!hooks){return null}if(!isArray(hooks)){hooks=[hooks]}if(!isArray(data)){data=(data==null?[]:[data])}var handler=HOOKS(reset);for(var i=0,m=hooks.length;ig){g=document.styleSheets.length}if(!i){i=document.head||((document.getElementsByTagName("head"))[0]);if(!i){i=document.body}}return i};var f=[];var c=function(){for(var k=0,j=f.length;k=this.timeout){i(this.STATUS.ERROR);return 1}return 0},file:function(j,i){if(i<0){a.Ajax.loadTimeout(j)}else{a.Ajax.loadComplete(j)}},execute:function(){this.hook.call(this.object,this,this.data[0],this.data[1])},checkSafari2:function(i,j,k){if(i.time(k)){return}if(document.styleSheets.length>j&&document.styleSheets[j].cssRules&&document.styleSheets[j].cssRules.length){k(i.STATUS.OK)}else{setTimeout(i,i.delay)}},checkLength:function(i,l,n){if(i.time(n)){return}var m=0;var j=(l.sheet||l.styleSheet);try{if((j.cssRules||j.rules||[]).length>0){m=1}}catch(k){if(k.message.match(/protected variable|restricted URI/)){m=1}else{if(k.message.match(/Security error/)){m=1}}}if(m){setTimeout(a.Callback([n,i.STATUS.OK]),0)}else{setTimeout(i,i.delay)}}},loadComplete:function(i){i=this.fileURL(i);var j=this.loading[i];if(j&&!j.preloaded){a.Message.Clear(j.message);clearTimeout(j.timeout);if(j.script){if(f.length===0){setTimeout(c,0)}f.push(j.script)}this.loaded[i]=j.status;delete this.loading[i];this.addHook(i,j.callback)}else{if(j){delete this.loading[i]}this.loaded[i]=this.STATUS.OK;j={status:this.STATUS.OK}}if(!this.loadHooks[i]){return null}return this.loadHooks[i].Execute(j.status)},loadTimeout:function(i){if(this.loading[i].timeout){clearTimeout(this.loading[i].timeout)}this.loading[i].status=this.STATUS.ERROR;this.loadError(i);this.loadComplete(i)},loadError:function(i){a.Message.Set(["LoadFailed","File failed to load: %1",i],null,2000);a.Hub.signal.Post(["file load error",i])},Styles:function(k,l){var i=this.StyleString(k);if(i===""){l=a.Callback(l);l()}else{var j=document.createElement("style");j.type="text/css";this.head=h(this.head);this.head.appendChild(j);if(j.styleSheet&&typeof(j.styleSheet.cssText)!=="undefined"){j.styleSheet.cssText=i}else{j.appendChild(document.createTextNode(i))}l=this.timer.create.call(this,l,j)}return l},StyleString:function(n){if(typeof(n)==="string"){return n}var k="",o,m;for(o in n){if(n.hasOwnProperty(o)){if(typeof n[o]==="string"){k+=o+" {"+n[o]+"}\n"}else{if(a.Object.isArray(n[o])){for(var l=0;l="0"&&q<="9"){f[j]=p[f[j]-1];if(typeof f[j]==="number"){f[j]=this.number(f[j])}}else{if(q==="{"){q=f[j].substr(1);if(q>="0"&&q<="9"){f[j]=p[f[j].substr(1,f[j].length-2)-1];if(typeof f[j]==="number"){f[j]=this.number(f[j])}}else{var k=f[j].match(/^\{([a-z]+):%(\d+)\|(.*)\}$/);if(k){if(k[1]==="plural"){var d=p[k[2]-1];if(typeof d==="undefined"){f[j]="???"}else{d=this.plural(d)-1;var h=k[3].replace(/(^|[^%])(%%)*%\|/g,"$1$2%\uEFEF").split(/\|/);if(d>=0&&d=3){c.push([f[0],f[1],this.processSnippet(g,f[2])])}else{c.push(e[d])}}}}else{c.push(e[d])}}return c},markdownPattern:/(%.)|(\*{1,3})((?:%.|.)+?)\2|(`+)((?:%.|.)+?)\4|\[((?:%.|.)+?)\]\(([^\s\)]+)\)/,processMarkdown:function(b,h,d){var j=[],e;var c=b.split(this.markdownPattern);var g=c[0];for(var f=1,a=c.length;f1?d[1]:""));f=null}if(e&&(!b.preJax||d)){c.nodeValue=c.nodeValue.replace(b.postJax,(e.length>1?e[1]:""))}if(f&&!f.nodeValue.match(/\S/)){f=f.previousSibling}}if(b.preRemoveClass&&f&&f.className===b.preRemoveClass){a.MathJax.preview=f}a.MathJax.checked=1},processInput:function(a){var b,i=MathJax.ElementJax.STATE;var h,e,d=a.scripts.length;try{while(a.ithis.processUpdateTime&&a.i1){d.jax[a.outputJax].push(b)}b.MathJax.state=c.OUTPUT},prepareOutput:function(c,f){while(c.jthis.processUpdateTime&&h.i=0;q--){if((b[q].src||"").match(f)){s.script=b[q].innerHTML;if(RegExp.$2){var t=RegExp.$2.substr(1).split(/\&/);for(var p=0,l=t.length;p=parseInt(y[z])}}return true},Select:function(j){var i=j[d.Browser];if(i){return i(d.Browser)}return null}};var e=k.replace(/^Mozilla\/(\d+\.)+\d+ /,"").replace(/[a-z][-a-z0-9._: ]+\/\d+[^ ]*-[^ ]*\.([a-z][a-z])?\d+ /i,"").replace(/Gentoo |Ubuntu\/(\d+\.)*\d+ (\([^)]*\) )?/,"");d.Browser=d.Insert(d.Insert(new String("Unknown"),{version:"0.0"}),a);for(var v in a){if(a.hasOwnProperty(v)){if(a[v]&&v.substr(0,2)==="is"){v=v.slice(2);if(v==="Mac"||v==="PC"){continue}d.Browser=d.Insert(new String(v),a);var r=new RegExp(".*(Version/| Trident/.*; rv:)((?:\\d+\\.)+\\d+)|.*("+v+")"+(v=="MSIE"?" ":"/")+"((?:\\d+\\.)*\\d+)|(?:^|\\(| )([a-z][-a-z0-9._: ]+|(?:Apple)?WebKit)/((?:\\d+\\.)+\\d+)");var u=r.exec(e)||["","","","unknown","0.0"];d.Browser.name=(u[1]!=""?v:(u[3]||u[5]));d.Browser.version=u[2]||u[4]||u[6];break}}}try{d.Browser.Select({Safari:function(j){var i=parseInt((String(j.version).split("."))[0]);if(i>85){j.webkit=j.version}if(i>=538){j.version="8.0"}else{if(i>=537){j.version="7.0"}else{if(i>=536){j.version="6.0"}else{if(i>=534){j.version="5.1"}else{if(i>=533){j.version="5.0"}else{if(i>=526){j.version="4.0"}else{if(i>=525){j.version="3.1"}else{if(i>500){j.version="3.0"}else{if(i>400){j.version="2.0"}else{if(i>85){j.version="1.0"}}}}}}}}}}j.webkit=(navigator.appVersion.match(/WebKit\/(\d+)\./))[1];j.isMobile=(navigator.appVersion.match(/Mobile/i)!=null);j.noContextMenu=j.isMobile},Firefox:function(j){if((j.version==="0.0"||k.match(/Firefox/)==null)&&navigator.product==="Gecko"){var m=k.match(/[\/ ]rv:(\d+\.\d.*?)[\) ]/);if(m){j.version=m[1]}else{var i=(navigator.buildID||navigator.productSub||"0").substr(0,8);if(i>="20111220"){j.version="9.0"}else{if(i>="20111120"){j.version="8.0"}else{if(i>="20110927"){j.version="7.0"}else{if(i>="20110816"){j.version="6.0"}else{if(i>="20110621"){j.version="5.0"}else{if(i>="20110320"){j.version="4.0"}else{if(i>="20100121"){j.version="3.6"}else{if(i>="20090630"){j.version="3.5"}else{if(i>="20080617"){j.version="3.0"}else{if(i>="20061024"){j.version="2.0"}}}}}}}}}}}}j.isMobile=(navigator.appVersion.match(/Android/i)!=null||k.match(/ Fennec\//)!=null||k.match(/Mobile/)!=null)},Chrome:function(i){i.noContextMenu=i.isMobile=!!navigator.userAgent.match(/ Mobile[ \/]/)},Opera:function(i){i.version=opera.version()},Edge:function(i){i.isMobile=!!navigator.userAgent.match(/ Phone/)},MSIE:function(j){j.isMobile=!!navigator.userAgent.match(/ Phone/);j.isIE9=!!(document.documentMode&&(window.performance||window.msPerformance));MathJax.HTML.setScriptBug=!j.isIE9||document.documentMode<9;MathJax.Hub.msieHTMLCollectionBug=(document.documentMode<9);if(document.documentMode<10&&!s.params.NoMathPlayer){try{new ActiveXObject("MathPlayer.Factory.1");j.hasMathPlayer=true}catch(m){}try{if(j.hasMathPlayer){var i=document.createElement("object");i.id="mathplayer";i.classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987";g.appendChild(i);document.namespaces.add("m","http://www.w3.org/1998/Math/MathML");j.mpNamespace=true;if(document.readyState&&(document.readyState==="loading"||document.readyState==="interactive")){document.write('');j.mpImported=true}}else{document.namespaces.add("mjx_IE_fix","http://www.w3.org/1999/xlink")}}catch(m){}}}})}catch(c){console.error(c.message)}d.Browser.Select(MathJax.Message.browsers);if(h.AuthorConfig&&typeof h.AuthorConfig.AuthorInit==="function"){h.AuthorConfig.AuthorInit()}d.queue=h.Callback.Queue();d.queue.Push(["Post",s.signal,"Begin"],["Config",s],["Cookie",s],["Styles",s],["Message",s],function(){var i=h.Callback.Queue(s.Jax(),s.Extensions());return i.Push({})},["Menu",s],s.onLoad(),function(){MathJax.isReady=true},["Typeset",s],["Hash",s],["MenuZoom",s],["Post",s.signal,"End"])})("MathJax")}}; diff --git a/mathjax/asset/README.md b/mathjax/asset/README.md new file mode 100644 index 000000000..7ca6f7e4b --- /dev/null +++ b/mathjax/asset/README.md @@ -0,0 +1,53 @@ +# MathJax + +## Beautiful math in all browsers + +MathJax is an open-source JavaScript display engine for LaTeX, MathML, and +AsciiMath notation that works in all modern browsers. It was designed with +the goal of consolidating the recent advances in web technologies into a +single, definitive, math-on-the-web platform supporting the major browsers +and operating systems. It requires no setup on the part of the user (no +plugins to download or software to install), so the page author can write +web documents that include mathematics and be confident that users will be +able to view it naturally and easily. Simply include MathJax and some +mathematics in a web page, and MathJax does the rest. + +Some of the main features of MathJax include: + +- High-quality display of LaTeX, MathML, and AsciiMath notation in HTML pages + +- Supported in most browsers with no plug-ins, extra fonts, or special + setup for the reader + +- Easy for authors, flexible for publishers, extensible for developers + +- Supports math accessibility, cut-and-paste interoperability, and other + advanced functionality + +- Powerful API for integration with other web applications + +See for additional details. + + +## Installation and Usage + +The MathJax installation and usage documentation is available in a +separate GitHub repository at . +The HTML versions can now be viewed at , +where it is possible for you to submit corrections and modifications +directly to the documentation on line. + + +## Community + +The main MathJax website is , and it includes +announcements and other important information. MathJax is maintained and +distributed on GitHub at . A user forum +for asking questions and getting assistance is hosted at Google, and the +bug tracker is hosted at GitHub: + +Bug tracker: +MathJax-Users Group: + +Before reporting a bug, please check that it has not already been reported. +Also, please use the bug tracker for reporting bugs rather than the help forum. diff --git a/mathjax/asset/bower.json b/mathjax/asset/bower.json new file mode 100644 index 000000000..6b214b933 --- /dev/null +++ b/mathjax/asset/bower.json @@ -0,0 +1,11 @@ +{ + "name": "MathJax", + "main": "./MathJax.js", + "homepage": "http://www.mathjax.org/", + "ignore": [ + "**/.*", + "node_modules", + "components" + ], + "keywords": ["math", "js", "LaTeX", "MathML", "AsciiMath"] +} diff --git a/mathjax/asset/composer.json b/mathjax/asset/composer.json new file mode 100644 index 000000000..b1b9d27ae --- /dev/null +++ b/mathjax/asset/composer.json @@ -0,0 +1,14 @@ +{ + "name": "mathjax/mathjax", + "type": "library", + "description": "MathJax is an open-source JavaScript display engine for LaTeX, MathML, and AsciiMath notation that works in all modern browsers.", + "keywords": ["math", "js", "LaTeX", "MathML", "AsciiMath"], + "homepage": "http://www.mathjax.org/", + "license": "Apache-2.0", + "authors": [ + { + "name": "MathJax Consortium", + "homepage": "https://github.com/mathjax" + } + ] +} diff --git a/mathjax/asset/config/Safe.js b/mathjax/asset/config/Safe.js new file mode 100644 index 000000000..a76efe4e8 --- /dev/null +++ b/mathjax/asset/config/Safe.js @@ -0,0 +1,19 @@ +/* + * /MathJax/config/Safe.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Hub.Register.StartupHook("End Config",function(){if(!MathJax.Hub.config.extensions){MathJax.Hub.config.extensions=[]}MathJax.Hub.config.extensions.push("Safe.js")});MathJax.Ajax.loadComplete("[MathJax]/config/Safe.js"); diff --git a/mathjax/asset/config/TeX-MML-AM_CHTML.js b/mathjax/asset/config/TeX-MML-AM_CHTML.js new file mode 100644 index 000000000..5b6f4db71 --- /dev/null +++ b/mathjax/asset/config/TeX-MML-AM_CHTML.js @@ -0,0 +1,69 @@ +/* + * /MathJax/config/TeX-MML-AM_CHTML.js + * + * Copyright (c) 2010-2018 The MathJax Consortium + * + * Part of the MathJax library. + * See http://www.mathjax.org for details. + * + * Licensed under the Apache License, Version 2.0; + * you may not use this file except in compliance with the License. + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + +MathJax.Ajax.Preloading( + "[MathJax]/jax/input/TeX/config.js", + "[MathJax]/jax/input/MathML/config.js", + "[MathJax]/jax/input/AsciiMath/config.js", + "[MathJax]/jax/output/CommonHTML/config.js", + "[MathJax]/jax/output/PreviewHTML/config.js", + "[MathJax]/extensions/tex2jax.js", + "[MathJax]/extensions/mml2jax.js", + "[MathJax]/extensions/asciimath2jax.js", + "[MathJax]/extensions/MathEvents.js", + "[MathJax]/extensions/MathZoom.js", + "[MathJax]/extensions/MathMenu.js", + "[MathJax]/jax/element/mml/jax.js", + "[MathJax]/extensions/toMathML.js", + "[MathJax]/extensions/TeX/noErrors.js", + "[MathJax]/extensions/TeX/noUndefined.js", + "[MathJax]/jax/input/TeX/jax.js", + "[MathJax]/extensions/TeX/AMSmath.js", + "[MathJax]/extensions/TeX/AMSsymbols.js", + "[MathJax]/jax/input/MathML/jax.js", + "[MathJax]/jax/input/AsciiMath/jax.js", + "[MathJax]/jax/output/PreviewHTML/jax.js", + "[MathJax]/extensions/fast-preview.js", + "[MathJax]/extensions/AssistiveMML.js", + "[MathJax]/extensions/a11y/accessibility-menu.js" +); + +MathJax.Hub.Config({ + extensions: ['[a11y]/accessibility-menu.js'] +}); + +MathJax.InputJax.TeX=MathJax.InputJax({id:"TeX",version:"2.7.5",directory:MathJax.InputJax.directory+"/TeX",extensionDir:MathJax.InputJax.extensionDir+"/TeX",config:{TagSide:"right",TagIndent:"0.8em",MultLineWidth:"85%",equationNumbers:{autoNumber:"none",formatNumber:function(a){return a},formatTag:function(a){return"("+a+")"},formatID:function(a){return"mjx-eqn-"+String(a).replace(/\s/g,"_")},formatURL:function(b,a){return a+"#"+encodeURIComponent(b)},useLabelIds:true}},resetEquationNumbers:function(){}});MathJax.InputJax.TeX.Register("math/tex");MathJax.InputJax.TeX.loadComplete("config.js"); +MathJax.InputJax.MathML=MathJax.InputJax({id:"MathML",version:"2.7.5",directory:MathJax.InputJax.directory+"/MathML",extensionDir:MathJax.InputJax.extensionDir+"/MathML",entityDir:MathJax.InputJax.directory+"/MathML/entities",config:{useMathMLspacing:false}});MathJax.InputJax.MathML.Register("math/mml");MathJax.InputJax.MathML.loadComplete("config.js"); +MathJax.InputJax.AsciiMath=MathJax.InputJax({id:"AsciiMath",version:"2.7.5",directory:MathJax.InputJax.directory+"/AsciiMath",extensionDir:MathJax.InputJax.extensionDir+"/AsciiMath",config:{fixphi:true,useMathMLspacing:true,displaystyle:true,decimalsign:"."}});MathJax.InputJax.AsciiMath.Register("math/asciimath");MathJax.InputJax.AsciiMath.loadComplete("config.js"); +MathJax.OutputJax.CommonHTML=MathJax.OutputJax({id:"CommonHTML",version:"2.7.5",directory:MathJax.OutputJax.directory+"/CommonHTML",extensionDir:MathJax.OutputJax.extensionDir+"/CommonHTML",autoloadDir:MathJax.OutputJax.directory+"/CommonHTML/autoload",fontDir:MathJax.OutputJax.directory+"/CommonHTML/fonts",webfontDir:MathJax.OutputJax.fontDir+"/HTML-CSS",config:{matchFontHeight:true,scale:100,minScaleAdjust:50,mtextFontInherit:false,undefinedFamily:"STIXGeneral,'Cambria Math','Arial Unicode MS',serif",EqnChunk:(MathJax.Hub.Browser.isMobile?20:100),EqnChunkFactor:1.5,EqnChunkDelay:100,linebreaks:{automatic:false,width:"container"}}});if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax.CommonHTML.Register("jax/mml")}MathJax.OutputJax.CommonHTML.loadComplete("config.js"); +MathJax.OutputJax.PreviewHTML=MathJax.OutputJax({id:"PreviewHTML",version:"2.7.5",directory:MathJax.OutputJax.directory+"/PreviewHTML",extensionDir:MathJax.OutputJax.extensionDir+"/PreviewHTML",noFastPreview:true,config:{scale:100,minScaleAdjust:50,mtextFontInherit:false,linebreaks:{automatic:false,width:"container"}}});if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax.PreviewHTML.Register("jax/mml")}MathJax.OutputJax.PreviewHTML.loadComplete("config.js"); +MathJax.Extension.tex2jax={version:"2.7.5",config:{inlineMath:[["\\(","\\)"]],displayMath:[["$$","$$"],["\\[","\\]"]],skipTags:["script","noscript","style","textarea","pre","code","annotation","annotation-xml"],ignoreClass:"tex2jax_ignore",processClass:"tex2jax_process",processEscapes:false,processEnvironments:true,processRefs:true,preview:"TeX"},ignoreTags:{br:(MathJax.Hub.Browser.isMSIE&&document.documentMode<9?"\n":" "),wbr:"","#comment":""},PreProcess:function(a){if(!this.configured){this.config=MathJax.Hub.CombineConfig("tex2jax",this.config);if(this.config.Augment){MathJax.Hub.Insert(this,this.config.Augment)}if(typeof(this.config.previewTeX)!=="undefined"&&!this.config.previewTeX){this.config.preview="none"}this.configured=true}if(typeof(a)==="string"){a=document.getElementById(a)}if(!a){a=document.body}if(this.createPatterns()){this.scanElement(a,a.nextSibling)}},createPatterns:function(){var d=[],e=[],c,a,b=this.config;this.match={};for(c=0,a=b.inlineMath.length;c0)},patternQuote:function(a){return a.replace(/([\^$(){}+*?\-|\[\]\:\\])/g,"\\$1")},endPattern:function(a){return new RegExp(this.patternQuote(a)+"|\\\\.|[{}]","g")},sortLength:function(d,c){if(d.length!==c.length){return c.length-d.length}return(d==c?0:(d/i,"").replace(/<\?xml:namespace .*?\/>/i,"");b=b.replace(/ /g," ")}MathJax.HTML.setScript(a,b);d.removeChild(e)}else{var c=MathJax.HTML.Element("span");c.appendChild(e);MathJax.HTML.setScript(a,c.innerHTML)}if(this.config.preview!=="none"){this.createPreview(e,a)}},ProcessMathFlattened:function(f){var d=f.parentNode;if(!d||d.className===MathJax.Hub.config.preRemoveClass){return}var b=document.createElement("script");b.type="math/mml";d.insertBefore(b,f);var c="",e,a=f;while(f&&f.nodeName!=="/MATH"){e=f;f=f.nextSibling;c+=this.NodeHTML(e);e.parentNode.removeChild(e)}if(f&&f.nodeName==="/MATH"){f.parentNode.removeChild(f)}b.text=c+"";if(this.config.preview!=="none"){this.createPreview(a,b)}},NodeHTML:function(e){var c,b,a;if(e.nodeName==="#text"){c=this.quoteHTML(e.nodeValue)}else{if(e.nodeName==="#comment"){c=""}else{c="<"+e.nodeName.toLowerCase();for(b=0,a=e.attributes.length;b";if(e.outerHTML!=null&&e.outerHTML.match(/(.<\/[A-Z]+>|\/>)$/)){for(b=0,a=e.childNodes.length;b"}}}return c},OuterHTML:function(d){if(d.nodeName.charAt(0)==="#"){return this.NodeHTML(d)}if(!this.AttributeBug){return d.outerHTML}var c=this.NodeHTML(d);for(var b=0,a=d.childNodes.length;b";return c},quoteHTML:function(a){if(a==null){a=""}return a.replace(/&/g,"&").replace(//g,">").replace(/\"/g,""")},createPreview:function(g,f){var e=this.config.preview;if(e==="none"){return}var i=false;var c=MathJax.Hub.config.preRemoveClass;if((f.previousSibling||{}).className===c){return}if(e==="mathml"){i=true;if(this.MathTagBug){e="alttext"}else{e=g.cloneNode(true)}}if(e==="alttext"||e==="altimg"){i=true;var d=this.filterPreview(g.getAttribute("alttext"));if(e==="alttext"){if(d!=null){e=MathJax.HTML.TextNode(d)}else{e=null}}else{var a=g.getAttribute("altimg");if(a!=null){var b={width:g.getAttribute("altimg-width"),height:g.getAttribute("altimg-height")};e=MathJax.HTML.Element("img",{src:a,alt:d,style:b})}else{e=null}}}if(e){var h;if(i){h=MathJax.HTML.Element("span",{className:c});h.appendChild(e)}else{h=MathJax.HTML.Element("span",{className:c},e)}f.parentNode.insertBefore(h,f)}},filterPreview:function(a){return a},InitBrowser:function(){var b=MathJax.HTML.Element("span",{id:"<",className:"mathjax",innerHTML:"x"});var a=b.outerHTML||"";this.AttributeBug=a!==""&&!(a.match(/id="<"/)&&a.match(/class="mathjax"/)&&a.match(/<\/math>/));this.MathTagBug=b.childNodes.length>1;this.CleanupHTML=MathJax.Hub.Browser.isMSIE}};MathJax.Hub.Register.PreProcessor(["PreProcess",MathJax.Extension.mml2jax],5);MathJax.Ajax.loadComplete("[MathJax]/extensions/mml2jax.js"); +MathJax.Extension.asciimath2jax={version:"2.7.5",config:{delimiters:[["`","`"]],skipTags:["script","noscript","style","textarea","pre","code","annotation","annotation-xml"],ignoreClass:"asciimath2jax_ignore",processClass:"asciimath2jax_process",preview:"AsciiMath"},ignoreTags:{br:(MathJax.Hub.Browser.isMSIE&&document.documentMode<9?"\n":" "),wbr:"","#comment":""},PreProcess:function(a){if(!this.configured){this.config=MathJax.Hub.CombineConfig("asciimath2jax",this.config);if(this.config.Augment){MathJax.Hub.Insert(this,this.config.Augment)}this.configured=true}if(typeof(a)==="string"){a=document.getElementById(a)}if(!a){a=document.body}if(this.createPatterns()){this.scanElement(a,a.nextSibling)}},createPatterns:function(){var d=[],c,a,b=this.config;this.match={};if(b.delimiters.length===0){return false}for(c=0,a=b.delimiters.length;c0){this.HoverFadeTimer(q,q.hover.inc);return}s.parentNode.removeChild(s);if(r){r.parentNode.removeChild(r)}if(q.hover.remove){clearTimeout(q.hover.remove)}delete q.hover},HoverFadeTimer:function(q,s,r){q.hover.inc=s;if(!q.hover.timer){q.hover.timer=setTimeout(g(["HoverFade",this,q]),(r||o.fadeDelay))}},HoverMenu:function(q){if(!q){q=window.event}return b[this.jax].ContextMenu(q,this.math,true)},ClearHover:function(q){if(q.hover.remove){clearTimeout(q.hover.remove)}if(q.hover.timer){clearTimeout(q.hover.timer)}f.ClearHoverTimer();delete q.hover},Px:function(q){if(Math.abs(q)<0.006){return"0px"}return q.toFixed(2).replace(/\.?0+$/,"")+"px"},getImages:function(){if(k.discoverable){var q=new Image();q.src=o.button.src}}};var a=c.Touch={last:0,delay:500,start:function(r){var q=new Date().getTime();var s=(q-a.lastt){z.style.height=t+"px";z.style.width=(x.zW+this.scrollSize)+"px"}if(z.offsetWidth>l){z.style.width=l+"px";z.style.height=(x.zH+this.scrollSize)+"px"}}if(this.operaPositionBug){z.style.width=Math.min(l,x.zW)+"px"}if(z.offsetWidth>m&&z.offsetWidth-m=9);h.msiePositionBug=!m;h.msieSizeBug=l.versionAtLeast("7.0")&&(!document.documentMode||n===7||n===8);h.msieZIndexBug=(n<=7);h.msieInlineBlockAlignBug=(n<=7);h.msieTrapEventBug=!window.addEventListener;if(document.compatMode==="BackCompat"){h.scrollSize=52}if(m){delete i.styles["#MathJax_Zoom"].filter}},Opera:function(l){h.operaPositionBug=true;h.operaRefreshBug=true}});h.topImg=(h.msieInlineBlockAlignBug?d.Element("img",{style:{width:0,height:0,position:"relative"},src:"about:blank"}):d.Element("span",{style:{width:0,height:0,display:"inline-block"}}));if(h.operaPositionBug||h.msieTopBug){h.topImg.style.border="1px solid"}MathJax.Callback.Queue(["StartupHook",MathJax.Hub.Register,"Begin Styles",{}],["Styles",f,i.styles],["Post",a.Startup.signal,"MathZoom Ready"],["loadComplete",f,"[MathJax]/extensions/MathZoom.js"])})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,MathJax.OutputJax["HTML-CSS"],MathJax.OutputJax.NativeMML); +(function(f,o,q,e,r){var p="2.7.5";var d=MathJax.Callback.Signal("menu");MathJax.Extension.MathMenu={version:p,signal:d};var t=function(u){return MathJax.Localization._.apply(MathJax.Localization,[["MathMenu",u]].concat([].slice.call(arguments,1)))};var i=MathJax.Object.isArray;var a=f.Browser.isPC,l=f.Browser.isMSIE,m=((document.documentMode||0)>8);var j=(a?null:"5px");var s=f.CombineConfig("MathMenu",{delay:150,showRenderer:true,showMathPlayer:true,showFontMenu:false,showContext:false,showDiscoverable:false,showLocale:true,showLocaleURL:false,semanticsAnnotations:{TeX:["TeX","LaTeX","application/x-tex"],StarMath:["StarMath 5.0"],Maple:["Maple"],ContentMathML:["MathML-Content","application/mathml-content+xml"],OpenMath:["OpenMath"]},windowSettings:{status:"no",toolbar:"no",locationbar:"no",menubar:"no",directories:"no",personalbar:"no",resizable:"yes",scrollbars:"yes",width:400,height:300,left:Math.round((screen.width-400)/2),top:Math.round((screen.height-300)/3)},styles:{"#MathJax_About":{position:"fixed",left:"50%",width:"auto","text-align":"center",border:"3px outset",padding:"1em 2em","background-color":"#DDDDDD",color:"black",cursor:"default","font-family":"message-box","font-size":"120%","font-style":"normal","text-indent":0,"text-transform":"none","line-height":"normal","letter-spacing":"normal","word-spacing":"normal","word-wrap":"normal","white-space":"nowrap","float":"none","z-index":201,"border-radius":"15px","-webkit-border-radius":"15px","-moz-border-radius":"15px","-khtml-border-radius":"15px","box-shadow":"0px 10px 20px #808080","-webkit-box-shadow":"0px 10px 20px #808080","-moz-box-shadow":"0px 10px 20px #808080","-khtml-box-shadow":"0px 10px 20px #808080",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')"},"#MathJax_About.MathJax_MousePost":{outline:"none"},".MathJax_Menu":{position:"absolute","background-color":"white",color:"black",width:"auto",padding:(a?"2px":"5px 0px"),border:"1px solid #CCCCCC",margin:0,cursor:"default",font:"menu","text-align":"left","text-indent":0,"text-transform":"none","line-height":"normal","letter-spacing":"normal","word-spacing":"normal","word-wrap":"normal","white-space":"nowrap","float":"none","z-index":201,"border-radius":j,"-webkit-border-radius":j,"-moz-border-radius":j,"-khtml-border-radius":j,"box-shadow":"0px 10px 20px #808080","-webkit-box-shadow":"0px 10px 20px #808080","-moz-box-shadow":"0px 10px 20px #808080","-khtml-box-shadow":"0px 10px 20px #808080",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')"},".MathJax_MenuItem":{padding:(a?"2px 2em":"1px 2em"),background:"transparent"},".MathJax_MenuArrow":{position:"absolute",right:".5em","padding-top":".25em",color:"#666666","font-family":(l?"'Arial unicode MS'":null),"font-size":".75em"},".MathJax_MenuActive .MathJax_MenuArrow":{color:"white"},".MathJax_MenuArrow.RTL":{left:".5em",right:"auto"},".MathJax_MenuCheck":{position:"absolute",left:".7em","font-family":(l?"'Arial unicode MS'":null)},".MathJax_MenuCheck.RTL":{right:".7em",left:"auto"},".MathJax_MenuRadioCheck":{position:"absolute",left:(a?"1em":".7em")},".MathJax_MenuRadioCheck.RTL":{right:(a?"1em":".7em"),left:"auto"},".MathJax_MenuLabel":{padding:(a?"2px 2em 4px 1.33em":"1px 2em 3px 1.33em"),"font-style":"italic"},".MathJax_MenuRule":{"border-top":(a?"1px solid #CCCCCC":"1px solid #DDDDDD"),margin:(a?"4px 1px 0px":"4px 3px")},".MathJax_MenuDisabled":{color:"GrayText"},".MathJax_MenuActive":{"background-color":(a?"Highlight":"#606872"),color:(a?"HighlightText":"white")},".MathJax_MenuDisabled:focus, .MathJax_MenuLabel:focus":{"background-color":"#E8E8E8"},".MathJax_ContextMenu:focus":{outline:"none"},".MathJax_ContextMenu .MathJax_MenuItem:focus":{outline:"none"},"#MathJax_AboutClose":{top:".2em",right:".2em"},".MathJax_Menu .MathJax_MenuClose":{top:"-10px",left:"-10px"},".MathJax_MenuClose":{position:"absolute",cursor:"pointer",display:"inline-block",border:"2px solid #AAA","border-radius":"18px","-webkit-border-radius":"18px","-moz-border-radius":"18px","-khtml-border-radius":"18px","font-family":"'Courier New',Courier","font-size":"24px",color:"#F0F0F0"},".MathJax_MenuClose span":{display:"block","background-color":"#AAA",border:"1.5px solid","border-radius":"18px","-webkit-border-radius":"18px","-moz-border-radius":"18px","-khtml-border-radius":"18px","line-height":0,padding:"8px 0 6px"},".MathJax_MenuClose:hover":{color:"white!important",border:"2px solid #CCC!important"},".MathJax_MenuClose:hover span":{"background-color":"#CCC!important"},".MathJax_MenuClose:hover:focus":{outline:"none"}}});var n,k,b;f.Register.StartupHook("MathEvents Ready",function(){n=MathJax.Extension.MathEvents.Event.False;k=MathJax.Extension.MathEvents.Hover;b=MathJax.Extension.MathEvents.Event.KEY});var h=MathJax.Object.Subclass({Keydown:function(u,v){switch(u.keyCode){case b.ESCAPE:this.Remove(u,v);break;case b.RIGHT:this.Right(u,v);break;case b.LEFT:this.Left(u,v);break;case b.UP:this.Up(u,v);break;case b.DOWN:this.Down(u,v);break;case b.RETURN:case b.SPACE:this.Space(u,v);break;default:return;break}return n(u)},Escape:function(u,v){},Right:function(u,v){},Left:function(u,v){},Up:function(u,v){},Down:function(u,v){},Space:function(u,v){}},{});var g=MathJax.Menu=h.Subclass({version:p,items:[],posted:false,title:null,margin:5,Init:function(u){this.items=[].slice.call(arguments,0)},With:function(u){if(u){f.Insert(this,u)}return this},Post:function(M,E,B){if(!M){M=window.event||{}}var I=document.getElementById("MathJax_MenuFrame");if(!I){I=g.Background(this);delete c.lastItem;delete c.lastMenu;delete g.skipUp;d.Post(["post",g.jax]);g.isRTL=(MathJax.Localization.fontDirection()==="rtl")}var v=o.Element("div",{onmouseup:g.Mouseup,ondblclick:n,ondragstart:n,onselectstart:n,oncontextmenu:n,menuItem:this,className:"MathJax_Menu",onkeydown:g.Keydown,role:"menu"});if(M.type==="contextmenu"||M.type==="mouseover"){v.className+=" MathJax_ContextMenu"}if(!B){MathJax.Localization.setCSS(v)}for(var N=0,K=this.items.length;NA-this.margin){H=A-v.offsetWidth-this.margin}if(g.isMobile){H=Math.max(5,H-Math.floor(v.offsetWidth/2));F-=20}g.skipUp=M.isContextMenu}else{var z="left",J=E.offsetWidth;H=(g.isMobile?30:J-2);F=0;while(E&&E!==I){H+=E.offsetLeft;F+=E.offsetTop;E=E.parentNode}if(!g.isMobile){if((g.isRTL&&H-J-v.offsetWidth>this.margin)||(!g.isRTL&&H+v.offsetWidth>A-this.margin)){z="right";H=Math.max(this.margin,H-J-v.offsetWidth+6)}}if(!a){v.style["borderRadiusTop"+z]=0;v.style["WebkitBorderRadiusTop"+z]=0;v.style["MozBorderRadiusTop"+z]=0;v.style["KhtmlBorderRadiusTop"+z]=0}}v.style.left=H+"px";v.style.top=F+"px";if(document.selection&&document.selection.empty){document.selection.empty()}var G=window.pageXOffset||document.documentElement.scrollLeft;var D=window.pageYOffset||document.documentElement.scrollTop;g.Focus(v);if(M.type==="keydown"){g.skipMouseoverFromKey=true;setTimeout(function(){delete g.skipMouseoverFromKey},s.delay)}window.scrollTo(G,D);return n(M)},Remove:function(u,v){d.Post(["unpost",g.jax]);var w=document.getElementById("MathJax_MenuFrame");if(w){w.parentNode.removeChild(w);if(this.msieFixedPositionBug){detachEvent("onresize",g.Resize)}}if(g.jax.hover){delete g.jax.hover.nofade;k.UnHover(g.jax)}g.Unfocus(v);if(u.type==="mousedown"){g.CurrentNode().blur()}return n(u)},Find:function(u){return this.FindN(1,u,[].slice.call(arguments,1))},FindId:function(u){return this.FindN(0,u,[].slice.call(arguments,1))},FindN:function(y,v,x){for(var w=0,u=this.items.length;w0){u.oldTabIndex=u.tabIndex}u.tabIndex=-1}},SetTabIndex:function(){var v=g.AllNodes();for(var w=0,u;u=v[w];w++){if(u.oldTabIndex!==undefined){u.tabIndex=u.oldTabIndex;delete u.oldTabIndex}else{u.tabIndex=f.getTabOrder(u)}}},Mod:function(u,v){return((u%v)+v)%v},IndexOf:(Array.prototype.indexOf?function(u,v,w){return u.indexOf(v,w)}:function(u,x,y){for(var w=(y||0),v=u.length;w=0&&c.GetMenuNode(w).menuItem!==v[u].menuItem){v[u].menuItem.posted=false;v[u].parentNode.removeChild(v[u]);u--}},Touchstart:function(u,v){return this.TouchEvent(u,v,"Mousedown")},Touchend:function(u,v){return this.TouchEvent(u,v,"Mouseup")},TouchEvent:function(v,w,u){if(this!==c.lastItem){if(c.lastMenu){g.Event(v,c.lastMenu,"Mouseout")}g.Event(v,w,"Mouseover",true);c.lastItem=this;c.lastMenu=w}if(this.nativeTouch){return null}g.Event(v,w,u);return false},Remove:function(u,v){v=v.parentNode.menuItem;return v.Remove(u,v)},With:function(u){if(u){f.Insert(this,u)}return this},isRTL:function(){return g.isRTL},rtlClass:function(){return(this.isRTL()?" RTL":"")}},{GetMenuNode:function(u){return u.parentNode}});g.ENTRY=g.ITEM.Subclass({role:"menuitem",Attributes:function(u){u=f.Insert({onmouseover:g.Mouseover,onmouseout:g.Mouseout,onmousedown:g.Mousedown,onkeydown:g.Keydown,"aria-disabled":!!this.disabled},u);u=this.SUPER(arguments).Attributes.call(this,u);if(this.disabled){u.className+=" MathJax_MenuDisabled"}return u},MoveVertical:function(u,E,w){var x=c.GetMenuNode(E);var D=[];for(var z=0,C=x.menuItem.items,y;y=C[z];z++){if(!y.hidden){D.push(y)}}var B=g.IndexOf(D,this);if(B===-1){return}var A=D.length;var v=x.childNodes;do{B=g.Mod(w(B),A)}while(D[B].hidden||!v[B].role||v[B].role==="separator");this.Deactivate(E);D[B].Activate(u,v[B])},Up:function(v,u){this.MoveVertical(v,u,function(w){return w-1})},Down:function(v,u){this.MoveVertical(v,u,function(w){return w+1})},Right:function(v,u){this.MoveHorizontal(v,u,g.Right,!this.isRTL())},Left:function(v,u){this.MoveHorizontal(v,u,g.Left,this.isRTL())},MoveHorizontal:function(A,z,u,B){var x=c.GetMenuNode(z);if(x.menuItem===g.menu&&A.shiftKey){u(A,z)}if(B){return}if(x.menuItem!==g.menu){this.Deactivate(z)}var v=x.previousSibling.childNodes;var y=v.length;while(y--){var w=v[y];if(w.menuItem.submenu&&w.menuItem.submenu===x.menuItem){g.Focus(w);break}}this.RemoveSubmenus(z)},Space:function(u,v){this.Mouseup(u,v)},Activate:function(u,v){this.Deactivate(v);if(!this.disabled){v.className+=" MathJax_MenuActive"}this.DeactivateSubmenus(v);g.Focus(v)},Deactivate:function(u){u.className=u.className.replace(/ MathJax_MenuActive/,"")}});g.ITEM.COMMAND=g.ENTRY.Subclass({action:function(){},Init:function(u,w,v){if(!i(u)){u=[u,u]}this.name=u;this.action=w;this.With(v)},Label:function(u,v){return[this.Name()]},Mouseup:function(u,v){if(!this.disabled){this.Remove(u,v);d.Post(["command",this]);this.action.call(this,u)}return n(u)}});g.ITEM.SUBMENU=g.ENTRY.Subclass({submenu:null,marker:"\u25BA",markerRTL:"\u25C4",Attributes:function(u){u=f.Insert({"aria-haspopup":"true"},u);u=this.SUPER(arguments).Attributes.call(this,u);return u},Init:function(u,w){if(!i(u)){u=[u,u]}this.name=u;var v=1;if(!(w instanceof g.ITEM)){this.With(w),v++}this.submenu=g.apply(g,[].slice.call(arguments,v))},Label:function(u,v){this.submenu.posted=false;return[this.Name()+" ",["span",{className:"MathJax_MenuArrow"+this.rtlClass()},[this.isRTL()?this.markerRTL:this.marker]]]},Timer:function(u,v){this.ClearTimer();u={type:u.type,clientX:u.clientX,clientY:u.clientY};this.timer=setTimeout(e(["Mouseup",this,u,v]),s.delay)},ClearTimer:function(){if(this.timer){clearTimeout(this.timer)}},Touchend:function(v,x){var w=this.submenu.posted;var u=this.SUPER(arguments).Touchend.apply(this,arguments);if(w){this.Deactivate(x);delete c.lastItem;delete c.lastMenu}return u},Mouseout:function(u,v){if(!this.submenu.posted){this.Deactivate(v)}this.ClearTimer()},Mouseover:function(u,v){this.Activate(u,v)},Mouseup:function(u,v){if(!this.disabled){if(!this.submenu.posted){this.ClearTimer();this.submenu.Post(u,v,this.ltr);g.Focus(v)}else{this.DeactivateSubmenus(v)}}return n(u)},Activate:function(u,v){if(!this.disabled){this.Deactivate(v);v.className+=" MathJax_MenuActive"}if(!this.submenu.posted){this.DeactivateSubmenus(v);if(!g.isMobile){this.Timer(u,v)}}g.Focus(v)},MoveVertical:function(w,v,u){this.ClearTimer();this.SUPER(arguments).MoveVertical.apply(this,arguments)},MoveHorizontal:function(w,y,v,x){if(!x){this.SUPER(arguments).MoveHorizontal.apply(this,arguments);return}if(this.disabled){return}if(!this.submenu.posted){this.Activate(w,y);return}var u=c.GetMenuNode(y).nextSibling.childNodes;if(u.length>0){this.submenu.items[0].Activate(w,u[0])}}});g.ITEM.RADIO=g.ENTRY.Subclass({variable:null,marker:(a?"\u25CF":"\u2713"),role:"menuitemradio",Attributes:function(v){var u=s.settings[this.variable]===this.value?"true":"false";v=f.Insert({"aria-checked":u},v);v=this.SUPER(arguments).Attributes.call(this,v);return v},Init:function(v,u,w){if(!i(v)){v=[v,v]}this.name=v;this.variable=u;this.With(w);if(this.value==null){this.value=this.name[0]}},Label:function(v,w){var u={className:"MathJax_MenuRadioCheck"+this.rtlClass()};if(s.settings[this.variable]!==this.value){u={style:{display:"none"}}}return[["span",u,[this.marker]]," "+this.Name()]},Mouseup:function(x,y){if(!this.disabled){var z=y.parentNode.childNodes;for(var v=0,u=z.length;v/g,">");var y=t("EqSource","MathJax Equation Source");if(g.isMobile){u.document.open();u.document.write(""+y+"");u.document.write("
"+z+"
");u.document.write("
");u.document.write("");u.document.close()}else{u.document.open();u.document.write(""+y+"");u.document.write("
"+z+"
");u.document.write("");u.document.close();var v=u.document.body.firstChild;setTimeout(function(){var B=(u.outerHeight-u.innerHeight)||30,A=(u.outerWidth-u.innerWidth)||30,w,E;A=Math.max(140,Math.min(Math.floor(0.5*screen.width),v.offsetWidth+A+25));B=Math.max(40,Math.min(Math.floor(0.5*screen.height),v.offsetHeight+B+25));if(g.prototype.msieHeightBug){B+=35}u.resizeTo(A,B);var D;try{D=x.screenX}catch(C){}if(x&&D!=null){w=Math.max(0,Math.min(x.screenX-Math.floor(A/2),screen.width-A-20));E=Math.max(0,Math.min(x.screenY-Math.floor(B/2),screen.height-B-20));u.moveTo(w,E)}},50)}};g.Scale=function(){var z=["CommonHTML","HTML-CSS","SVG","NativeMML","PreviewHTML"],u=z.length,y=100,w,v;for(w=0;w7;g.Augment({margin:20,msieBackgroundBug:((document.documentMode||0)<9),msieFixedPositionBug:(v||!w),msieAboutBug:v,msieHeightBug:((document.documentMode||0)<9)});if(m){delete s.styles["#MathJax_About"].filter;delete s.styles[".MathJax_Menu"].filter}},Firefox:function(u){g.skipMouseover=u.isMobile&&u.versionAtLeast("6.0");g.skipMousedown=u.isMobile}});g.isMobile=f.Browser.isMobile;g.noContextMenu=f.Browser.noContextMenu;g.CreateLocaleMenu=function(){if(!g.menu){return}var z=g.menu.Find("Language").submenu,w=z.items;var v=[],B=MathJax.Localization.strings;for(var A in B){if(B.hasOwnProperty(A)){v.push(A)}}v=v.sort();z.items=[];for(var x=0,u=v.length;x0||this.Get("scriptlevel")>0)&&g>=0){return""}return this.TEXSPACELENGTH[Math.abs(g)]},TEXSPACELENGTH:["",a.LENGTH.THINMATHSPACE,a.LENGTH.MEDIUMMATHSPACE,a.LENGTH.THICKMATHSPACE],TEXSPACE:[[0,-1,2,3,0,0,0,1],[-1,-1,0,3,0,0,0,1],[2,2,0,0,2,0,0,2],[3,3,0,0,3,0,0,3],[0,0,0,0,0,0,0,0],[0,-1,2,3,0,0,0,1],[1,1,0,1,1,1,1,1],[1,-1,2,3,1,0,1,1]],autoDefault:function(e){return""},isSpacelike:function(){return false},isEmbellished:function(){return false},Core:function(){return this},CoreMO:function(){return this},childIndex:function(g){if(g==null){return}for(var f=0,e=this.data.length;f=55296&&e.charCodeAt(0)<56320)?a.VARIANT.ITALIC:a.VARIANT.NORMAL)}return""},setTeXclass:function(f){this.getPrevClass(f);var e=this.data.join("");if(e.length>1&&e.match(/^[a-z][a-z0-9]*$/i)&&this.texClass===a.TEXCLASS.ORD){this.texClass=a.TEXCLASS.OP;this.autoOP=true}return this}});a.mn=a.mbase.Subclass({type:"mn",isToken:true,texClass:a.TEXCLASS.ORD,defaults:{mathvariant:a.INHERIT,mathsize:a.INHERIT,mathbackground:a.INHERIT,mathcolor:a.INHERIT,dir:a.INHERIT}});a.mo=a.mbase.Subclass({type:"mo",isToken:true,defaults:{mathvariant:a.INHERIT,mathsize:a.INHERIT,mathbackground:a.INHERIT,mathcolor:a.INHERIT,dir:a.INHERIT,form:a.AUTO,fence:a.AUTO,separator:a.AUTO,lspace:a.AUTO,rspace:a.AUTO,stretchy:a.AUTO,symmetric:a.AUTO,maxsize:a.AUTO,minsize:a.AUTO,largeop:a.AUTO,movablelimits:a.AUTO,accent:a.AUTO,linebreak:a.LINEBREAK.AUTO,lineleading:a.INHERIT,linebreakstyle:a.AUTO,linebreakmultchar:a.INHERIT,indentalign:a.INHERIT,indentshift:a.INHERIT,indenttarget:a.INHERIT,indentalignfirst:a.INHERIT,indentshiftfirst:a.INHERIT,indentalignlast:a.INHERIT,indentshiftlast:a.INHERIT,texClass:a.AUTO},defaultDef:{form:a.FORM.INFIX,fence:false,separator:false,lspace:a.LENGTH.THICKMATHSPACE,rspace:a.LENGTH.THICKMATHSPACE,stretchy:false,symmetric:false,maxsize:a.SIZE.INFINITY,minsize:"0em",largeop:false,movablelimits:false,accent:false,linebreak:a.LINEBREAK.AUTO,lineleading:"1ex",linebreakstyle:"before",indentalign:a.INDENTALIGN.AUTO,indentshift:"0",indenttarget:"",indentalignfirst:a.INDENTALIGN.INDENTALIGN,indentshiftfirst:a.INDENTSHIFT.INDENTSHIFT,indentalignlast:a.INDENTALIGN.INDENTALIGN,indentshiftlast:a.INDENTSHIFT.INDENTSHIFT,texClass:a.TEXCLASS.REL},SPACE_ATTR:{lspace:1,rspace:2},useMMLspacing:3,hasMMLspacing:function(){if(this.useMMLspacing){return true}return this.form&&(this.OPTABLE[this.form]||{})[this.data.join("")]},autoDefault:function(g,n){var l=this.def;if(!l){if(g==="form"){return this.getForm()}var k=this.data.join("");var f=[this.Get("form"),a.FORM.INFIX,a.FORM.POSTFIX,a.FORM.PREFIX];for(var h=0,e=f.length;h=55296&&k<56320){k=(((k-55296)<<10)+(j.charCodeAt(1)-56320))+65536}for(var g=0,e=this.RANGES.length;g=0;e--){if(this.data[0]&&!this.data[e].isSpacelike()){return this.data[e]}}return null},Core:function(){if(!(this.isEmbellished())||typeof(this.core)==="undefined"){return this}return this.data[this.core]},CoreMO:function(){if(!(this.isEmbellished())||typeof(this.core)==="undefined"){return this}return this.data[this.core].CoreMO()},toString:function(){if(this.inferred){return"["+this.data.join(",")+"]"}return this.SUPER(arguments).toString.call(this)},setTeXclass:function(g){var f,e=this.data.length;if((this.open||this.close)&&(!g||!g.fnOP)){this.getPrevClass(g);g=null;for(f=0;f0){e++}return e},adjustChild_texprimestyle:function(e){if(e==this.den){return true}return this.Get("texprimestyle")},setTeXclass:a.mbase.setSeparateTeXclasses});a.msqrt=a.mbase.Subclass({type:"msqrt",inferRow:true,linebreakContainer:true,texClass:a.TEXCLASS.ORD,setTeXclass:a.mbase.setSeparateTeXclasses,adjustChild_texprimestyle:function(e){return true}});a.mroot=a.mbase.Subclass({type:"mroot",linebreakContainer:true,texClass:a.TEXCLASS.ORD,adjustChild_displaystyle:function(e){if(e===1){return false}return this.Get("displaystyle")},adjustChild_scriptlevel:function(f){var e=this.Get("scriptlevel");if(f===1){e+=2}return e},adjustChild_texprimestyle:function(e){if(e===0){return true}return this.Get("texprimestyle")},setTeXclass:a.mbase.setSeparateTeXclasses});a.mstyle=a.mbase.Subclass({type:"mstyle",isSpacelike:a.mbase.childrenSpacelike,isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,inferRow:true,defaults:{scriptlevel:a.INHERIT,displaystyle:a.INHERIT,scriptsizemultiplier:Math.sqrt(1/2),scriptminsize:"8pt",mathbackground:a.INHERIT,mathcolor:a.INHERIT,dir:a.INHERIT,infixlinebreakstyle:a.LINEBREAKSTYLE.BEFORE,decimalseparator:"."},adjustChild_scriptlevel:function(g){var f=this.scriptlevel;if(f==null){f=this.Get("scriptlevel")}else{if(String(f).match(/^ *[-+]/)){var e=this.Get("scriptlevel",null,true);f=e+parseInt(f)}}return f},inheritFromMe:true,noInherit:{mpadded:{width:true,height:true,depth:true,lspace:true,voffset:true},mtable:{width:true,height:true,depth:true,align:true}},getRemoved:{fontfamily:"fontFamily",fontweight:"fontWeight",fontstyle:"fontStyle",fontsize:"fontSize"},setTeXclass:a.mbase.setChildTeXclass});a.merror=a.mbase.Subclass({type:"merror",inferRow:true,linebreakContainer:true,texClass:a.TEXCLASS.ORD});a.mpadded=a.mbase.Subclass({type:"mpadded",inferRow:true,isSpacelike:a.mbase.childrenSpacelike,isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,width:"",height:"",depth:"",lspace:0,voffset:0},setTeXclass:a.mbase.setChildTeXclass});a.mphantom=a.mbase.Subclass({type:"mphantom",texClass:a.TEXCLASS.ORD,inferRow:true,isSpacelike:a.mbase.childrenSpacelike,isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,setTeXclass:a.mbase.setChildTeXclass});a.mfenced=a.mbase.Subclass({type:"mfenced",defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,open:"(",close:")",separators:","},addFakeNodes:function(){var f=this.getValues("open","close","separators");f.open=f.open.replace(/[ \t\n\r]/g,"");f.close=f.close.replace(/[ \t\n\r]/g,"");f.separators=f.separators.replace(/[ \t\n\r]/g,"");if(f.open!==""){this.SetData("open",a.mo(f.open).With({fence:true,form:a.FORM.PREFIX,texClass:a.TEXCLASS.OPEN}))}if(f.separators!==""){while(f.separators.length0){return false}return this.Get("displaystyle")},adjustChild_scriptlevel:function(f){var e=this.Get("scriptlevel");if(f>0){e++}return e},adjustChild_texprimestyle:function(e){if(e===this.sub){return true}return this.Get("texprimestyle")},setTeXclass:a.mbase.setBaseTeXclasses});a.msub=a.msubsup.Subclass({type:"msub"});a.msup=a.msubsup.Subclass({type:"msup",sub:2,sup:1});a.mmultiscripts=a.msubsup.Subclass({type:"mmultiscripts",adjustChild_texprimestyle:function(e){if(e%2===1){return true}return this.Get("texprimestyle")}});a.mprescripts=a.mbase.Subclass({type:"mprescripts"});a.none=a.mbase.Subclass({type:"none"});a.munderover=a.mbase.Subclass({type:"munderover",base:0,under:1,over:2,sub:1,sup:2,ACCENTS:["","accentunder","accent"],linebreakContainer:true,isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,accent:a.AUTO,accentunder:a.AUTO,align:a.ALIGN.CENTER,texClass:a.AUTO,subscriptshift:"",superscriptshift:""},autoDefault:function(e){if(e==="texClass"){return(this.isEmbellished()?this.CoreMO().Get(e):a.TEXCLASS.ORD)}if(e==="accent"&&this.data[this.over]){return this.data[this.over].CoreMO().Get("accent")}if(e==="accentunder"&&this.data[this.under]){return this.data[this.under].CoreMO().Get("accent")}return false},adjustChild_displaystyle:function(e){if(e>0){return false}return this.Get("displaystyle")},adjustChild_scriptlevel:function(g){var f=this.Get("scriptlevel");var e=(this.data[this.base]&&!this.Get("displaystyle")&&this.data[this.base].CoreMO().Get("movablelimits"));if(g==this.under&&(e||!this.Get("accentunder"))){f++}if(g==this.over&&(e||!this.Get("accent"))){f++}return f},adjustChild_texprimestyle:function(e){if(e===this.base&&this.data[this.over]){return true}return this.Get("texprimestyle")},setTeXclass:a.mbase.setBaseTeXclasses});a.munder=a.munderover.Subclass({type:"munder"});a.mover=a.munderover.Subclass({type:"mover",over:1,under:2,sup:1,sub:2,ACCENTS:["","accent","accentunder"]});a.mtable=a.mbase.Subclass({type:"mtable",defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,align:a.ALIGN.AXIS,rowalign:a.ALIGN.BASELINE,columnalign:a.ALIGN.CENTER,groupalign:"{left}",alignmentscope:true,columnwidth:a.WIDTH.AUTO,width:a.WIDTH.AUTO,rowspacing:"1ex",columnspacing:".8em",rowlines:a.LINES.NONE,columnlines:a.LINES.NONE,frame:a.LINES.NONE,framespacing:"0.4em 0.5ex",equalrows:false,equalcolumns:false,displaystyle:false,side:a.SIDE.RIGHT,minlabelspacing:"0.8em",texClass:a.TEXCLASS.ORD,useHeight:1},adjustChild_displaystyle:function(){return(this.displaystyle!=null?this.displaystyle:this.defaults.displaystyle)},inheritFromMe:true,noInherit:{mover:{align:true},munder:{align:true},munderover:{align:true},mtable:{align:true,rowalign:true,columnalign:true,groupalign:true,alignmentscope:true,columnwidth:true,width:true,rowspacing:true,columnspacing:true,rowlines:true,columnlines:true,frame:true,framespacing:true,equalrows:true,equalcolumns:true,displaystyle:true,side:true,minlabelspacing:true,texClass:true,useHeight:1}},linebreakContainer:true,Append:function(){for(var f=0,e=arguments.length;f>10)+55296)+String.fromCharCode((e&1023)+56320)}});a.xml=a.mbase.Subclass({type:"xml",Init:function(){this.div=document.createElement("div");return this.SUPER(arguments).Init.apply(this,arguments)},Append:function(){for(var f=0,e=arguments.length;f":d.REL,"?":[1,1,b.CLOSE],"\\":d.ORD,"^":d.ORD11,_:d.ORD11,"|":[2,2,b.ORD,{fence:true,stretchy:true,symmetric:true}],"#":d.ORD,"$":d.ORD,"\u002E":[0,3,b.PUNCT,{separator:true}],"\u02B9":d.ORD,"\u0300":d.ACCENT,"\u0301":d.ACCENT,"\u0303":d.WIDEACCENT,"\u0304":d.ACCENT,"\u0306":d.ACCENT,"\u0307":d.ACCENT,"\u0308":d.ACCENT,"\u030C":d.ACCENT,"\u0332":d.WIDEACCENT,"\u0338":d.REL4,"\u2015":[0,0,b.ORD,{stretchy:true}],"\u2017":[0,0,b.ORD,{stretchy:true}],"\u2020":d.BIN3,"\u2021":d.BIN3,"\u20D7":d.ACCENT,"\u2111":d.ORD,"\u2113":d.ORD,"\u2118":d.ORD,"\u211C":d.ORD,"\u2205":d.ORD,"\u221E":d.ORD,"\u2305":d.BIN3,"\u2306":d.BIN3,"\u2322":d.REL4,"\u2323":d.REL4,"\u2329":d.OPEN,"\u232A":d.CLOSE,"\u23AA":d.ORD,"\u23AF":[0,0,b.ORD,{stretchy:true}],"\u23B0":d.OPEN,"\u23B1":d.CLOSE,"\u2500":d.ORD,"\u25EF":d.BIN3,"\u2660":d.ORD,"\u2661":d.ORD,"\u2662":d.ORD,"\u2663":d.ORD,"\u3008":d.OPEN,"\u3009":d.CLOSE,"\uFE37":d.WIDEACCENT,"\uFE38":d.WIDEACCENT}}},{OPTYPES:d});var c=a.mo.prototype.OPTABLE;c.infix["^"]=d.WIDEREL;c.infix._=d.WIDEREL;c.prefix["\u2223"]=d.OPEN;c.prefix["\u2225"]=d.OPEN;c.postfix["\u2223"]=d.CLOSE;c.postfix["\u2225"]=d.CLOSE})(MathJax.ElementJax.mml);MathJax.ElementJax.mml.loadComplete("jax.js"); +MathJax.Hub.Register.LoadHook("[MathJax]/jax/element/mml/jax.js",function(){var c="2.7.5";var a=MathJax.ElementJax.mml,b=MathJax.Hub.config.menuSettings;a.mbase.Augment({toMathML:function(l){var h=(this.inferred&&this.parent.inferRow);if(l==null){l=""}var f=this.type,e=this.toMathMLattributes();if(f==="mspace"){return l+"<"+f+e+" />"}var k=[],j=(this.isToken?"":l+(h?"":" "));for(var g=0,d=this.data.length;g")}}}if(this.isToken||this.isChars){return l+"<"+f+e+">"+k.join("")+""}if(h){return k.join("\n")}if(k.length===0||(k.length===1&&k[0]==="")){return l+"<"+f+e+" />"}return l+"<"+f+e+">\n"+k.join("\n")+"\n"+l+""},toMathMLattributes:function(){var j=(this.type==="mstyle"?a.math.prototype.defaults:this.defaults);var h=(this.attrNames||a.copyAttributeNames),g=a.skipAttributes,l=a.copyAttributes;var e=[];if(this.type==="math"&&(!this.attr||!("xmlns" in this.attr))){e.push('xmlns="http://www.w3.org/1998/Math/MathML"')}if(!this.attrNames){for(var k in j){if(!g[k]&&!l[k]&&j.hasOwnProperty(k)){if(this[k]!=null&&this[k]!==j[k]){if(this.Get(k,null,1)!==this[k]){e.push(k+'="'+this.toMathMLattribute(this[k])+'"')}}}}}for(var f=0,d=h.length;f126||(k<32&&k!==10&&k!==13&&k!==9)){f[g]="&#x"+k.toString(16).toUpperCase()+";"}else{var j={"&":"&","<":"<",">":">",'"':"""}[f[g]];if(j){f[g]=j}}}else{if(g+11);var p=this.type,k=this.toMathMLattributes();var j=[],o=d+(g?" "+(n?" ":""):"")+" ";for(var h=0,f=this.data.length;h")}}if(j.length===0||(j.length===1&&j[0]==="")){if(!g){return"<"+p+k+" />"}j.push(o+"")}if(g){if(n){j.unshift(d+" ");j.push(d+" ")}j.unshift(d+" ");var l=e.originalText.replace(/[&<>]/g,function(i){return{">":">","<":"<","&":"&"}[i]});j.push(d+' '+l+"");j.push(d+" ")}return d+"<"+p+k+">\n"+j.join("\n")+"\n"+d+""}});a.msubsup.Augment({toMathML:function(j){var f=this.type;if(this.data[this.sup]==null){f="msub"}if(this.data[this.sub]==null){f="msup"}var e=this.toMathMLattributes();delete this.data[0].inferred;var h=[];for(var g=0,d=this.data.length;g\n"+h.join("\n")+"\n"+j+""}});a.munderover.Augment({toMathML:function(k){var f=this.type;var j=this.data[this.base];if(j&&j.isa(a.TeXAtom)&&j.movablelimits&&!j.Get("displaystyle")){type="msubsup";if(this.data[this.under]==null){f="msup"}if(this.data[this.over]==null){f="msub"}}else{if(this.data[this.under]==null){f="mover"}if(this.data[this.over]==null){f="munder"}}var e=this.toMathMLattributes();delete this.data[0].inferred;var h=[];for(var g=0,d=this.data.length;g\n"+h.join("\n")+"\n"+k+""}});a.TeXAtom.Augment({toMathML:function(e){var d=this.toMathMLattributes();if(!d&&this.data[0].data.length===1){return e.substr(2)+this.data[0].toMathML(e)}return e+"\n"+this.data[0].toMathML(e+" ")+"\n"+e+""}});a.chars.Augment({toMathML:function(d){return(d||"")+this.toMathMLquote(this.toString())}});a.entity.Augment({toMathML:function(d){return(d||"")+"&"+this.toMathMLquote(this.data[0])+";"}});a.xml.Augment({toMathML:function(d){return(d||"")+this.toString()}});MathJax.Hub.Register.StartupHook("TeX mathchoice Ready",function(){a.TeXmathchoice.Augment({toMathML:function(d){return this.Core().toMathML(d)}})});MathJax.Hub.Startup.signal.Post("toMathML Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/toMathML.js"); +(function(b,e){var d="2.7.5";var a=b.CombineConfig("TeX.noErrors",{disabled:false,multiLine:true,inlineDelimiters:["",""],style:{"font-size":"90%","text-align":"left",color:"black",padding:"1px 3px",border:"1px solid"}});var c="\u00A0";MathJax.Extension["TeX/noErrors"]={version:d,config:a};b.Register.StartupHook("TeX Jax Ready",function(){var f=MathJax.InputJax.TeX.formatError;MathJax.InputJax.TeX.Augment({formatError:function(j,i,k,g){if(a.disabled){return f.apply(this,arguments)}var h=j.message.replace(/\n.*/,"");b.signal.Post(["TeX Jax - parse error",h,i,k,g]);var m=a.inlineDelimiters;var l=(k||a.multiLine);if(!k){i=m[0]+i+m[1]}if(l){i=i.replace(/ /g,c)}else{i=i.replace(/\n/g," ")}return MathJax.ElementJax.mml.merror(i).With({isError:true,multiLine:l})}})});b.Register.StartupHook("HTML-CSS Jax Config",function(){b.Config({"HTML-CSS":{styles:{".MathJax .noError":b.Insert({"vertical-align":(b.Browser.isMSIE&&a.multiLine?"-2px":"")},a.style)}}})});b.Register.StartupHook("HTML-CSS Jax Ready",function(){var g=MathJax.ElementJax.mml;var h=MathJax.OutputJax["HTML-CSS"];var f=g.math.prototype.toHTML,i=g.merror.prototype.toHTML;g.math.Augment({toHTML:function(j,k){var l=this.data[0];if(l&&l.data[0]&&l.data[0].isError){j.style.fontSize="";j=this.HTMLcreateSpan(j);j.bbox=l.data[0].toHTML(j).bbox}else{j=f.apply(this,arguments)}return j}});g.merror.Augment({toHTML:function(p){if(!this.isError){return i.apply(this,arguments)}p=this.HTMLcreateSpan(p);p.className="noError";if(this.multiLine){p.style.display="inline-block"}var r=this.data[0].data[0].data.join("").split(/\n/);for(var o=0,l=r.length;o1){var n=(q.h+q.d)/2,j=h.TeX.x_height/2;p.parentNode.style.verticalAlign=h.Em(q.d+(j-n));q.h=j+n;q.d=n-j}p.bbox={h:q.h,d:q.d,w:k,lw:0,rw:k};return p}})});b.Register.StartupHook("SVG Jax Config",function(){b.Config({SVG:{styles:{".MathJax_SVG .noError":b.Insert({"vertical-align":(b.Browser.isMSIE&&a.multiLine?"-2px":"")},a.style)}}})});b.Register.StartupHook("SVG Jax Ready",function(){var g=MathJax.ElementJax.mml;var f=g.math.prototype.toSVG,h=g.merror.prototype.toSVG;g.math.Augment({toSVG:function(i,j){var k=this.data[0];if(k&&k.data[0]&&k.data[0].isError){i=k.data[0].toSVG(i)}else{i=f.apply(this,arguments)}return i}});g.merror.Augment({toSVG:function(n){if(!this.isError||this.Parent().type!=="math"){return h.apply(this,arguments)}n=e.addElement(n,"span",{className:"noError",isMathJax:true});if(this.multiLine){n.style.display="inline-block"}var o=this.data[0].data[0].data.join("").split(/\n/);for(var l=0,j=o.length;l1){var k=n.offsetHeight/2;n.style.verticalAlign=(-k+(k/j))+"px"}return n}})});b.Register.StartupHook("NativeMML Jax Ready",function(){var h=MathJax.ElementJax.mml;var g=MathJax.Extension["TeX/noErrors"].config;var f=h.math.prototype.toNativeMML,i=h.merror.prototype.toNativeMML;h.math.Augment({toNativeMML:function(j){var k=this.data[0];if(k&&k.data[0]&&k.data[0].isError){j=k.data[0].toNativeMML(j)}else{j=f.apply(this,arguments)}return j}});h.merror.Augment({toNativeMML:function(n){if(!this.isError){return i.apply(this,arguments)}n=n.appendChild(document.createElement("span"));var o=this.data[0].data[0].data.join("").split(/\n/);for(var l=0,k=o.length;l1){n.style.verticalAlign="middle"}}for(var p in g.style){if(g.style.hasOwnProperty(p)){var j=p.replace(/-./g,function(m){return m.charAt(1).toUpperCase()});n.style[j]=g.style[p]}}return n}})});b.Register.StartupHook("PreviewHTML Jax Config",function(){b.Config({PreviewHTML:{styles:{".MathJax_PHTML .noError":b.Insert({"vertical-align":(b.Browser.isMSIE&&a.multiLine?"-2px":"")},a.style)}}})});b.Register.StartupHook("PreviewHTML Jax Ready",function(){var f=MathJax.ElementJax.mml;var h=MathJax.HTML;var g=f.merror.prototype.toPreviewHTML;f.merror.Augment({toPreviewHTML:function(l){if(!this.isError){return g.apply(this,arguments)}l=this.PHTMLcreateSpan(l);l.className="noError";if(this.multiLine){l.style.display="inline-block"}var n=this.data[0].data[0].data.join("").split(/\n/);for(var k=0,j=n.length;k1){var l=1.2*j/2;o.h=l+0.25;o.d=l-0.25;n.style.verticalAlign=g.Em(0.45-l)}else{o.h=1;o.d=0.2+2/g.em}return n}})});b.Startup.signal.Post("TeX noErrors Ready")})(MathJax.Hub,MathJax.HTML);MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noErrors.js"); +MathJax.Extension["TeX/noUndefined"]={version:"2.7.5",config:MathJax.Hub.CombineConfig("TeX.noUndefined",{disabled:false,attributes:{mathcolor:"red"}})};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.Extension["TeX/noUndefined"].config;var a=MathJax.ElementJax.mml;var c=MathJax.InputJax.TeX.Parse.prototype.csUndefined;MathJax.InputJax.TeX.Parse.Augment({csUndefined:function(d){if(b.disabled){return c.apply(this,arguments)}MathJax.Hub.signal.Post(["TeX Jax - undefined control sequence",d]);this.Push(a.mtext(d).With(b.attributes))}});MathJax.Hub.Startup.signal.Post("TeX noUndefined Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noUndefined.js"); +(function(d,c,j){var i,h="\u00A0";var k=function(m){return MathJax.Localization._.apply(MathJax.Localization,[["TeX",m]].concat([].slice.call(arguments,1)))};var f=MathJax.Object.isArray;var e=MathJax.Object.Subclass({Init:function(n,m){this.global={isInner:m};this.data=[b.start(this.global)];if(n){this.data[0].env=n}this.env=this.data[0].env},Push:function(){var o,n,p,q;for(o=0,n=arguments.length;o":"27E9","\\lt":"27E8","\\gt":"27E9","/":"/","|":["|",{texClass:i.TEXCLASS.ORD}],".":"","\\\\":"\\","\\lmoustache":"23B0","\\rmoustache":"23B1","\\lgroup":"27EE","\\rgroup":"27EF","\\arrowvert":"23D0","\\Arrowvert":"2016","\\bracevert":"23AA","\\Vert":["2016",{texClass:i.TEXCLASS.ORD}],"\\|":["2016",{texClass:i.TEXCLASS.ORD}],"\\vert":["|",{texClass:i.TEXCLASS.ORD}],"\\uparrow":"2191","\\downarrow":"2193","\\updownarrow":"2195","\\Uparrow":"21D1","\\Downarrow":"21D3","\\Updownarrow":"21D5","\\backslash":"\\","\\rangle":"27E9","\\langle":"27E8","\\rbrace":"}","\\lbrace":"{","\\}":"}","\\{":"{","\\rceil":"2309","\\lceil":"2308","\\rfloor":"230B","\\lfloor":"230A","\\lbrack":"[","\\rbrack":"]"},macros:{displaystyle:["SetStyle","D",true,0],textstyle:["SetStyle","T",false,0],scriptstyle:["SetStyle","S",false,1],scriptscriptstyle:["SetStyle","SS",false,2],rm:["SetFont",i.VARIANT.NORMAL],mit:["SetFont",i.VARIANT.ITALIC],oldstyle:["SetFont",i.VARIANT.OLDSTYLE],cal:["SetFont",i.VARIANT.CALIGRAPHIC],it:["SetFont","-tex-mathit"],bf:["SetFont",i.VARIANT.BOLD],bbFont:["SetFont",i.VARIANT.DOUBLESTRUCK],scr:["SetFont",i.VARIANT.SCRIPT],frak:["SetFont",i.VARIANT.FRAKTUR],sf:["SetFont",i.VARIANT.SANSSERIF],tt:["SetFont",i.VARIANT.MONOSPACE],tiny:["SetSize",0.5],Tiny:["SetSize",0.6],scriptsize:["SetSize",0.7],small:["SetSize",0.85],normalsize:["SetSize",1],large:["SetSize",1.2],Large:["SetSize",1.44],LARGE:["SetSize",1.73],huge:["SetSize",2.07],Huge:["SetSize",2.49],arcsin:["NamedFn"],arccos:["NamedFn"],arctan:["NamedFn"],arg:["NamedFn"],cos:["NamedFn"],cosh:["NamedFn"],cot:["NamedFn"],coth:["NamedFn"],csc:["NamedFn"],deg:["NamedFn"],det:"NamedOp",dim:["NamedFn"],exp:["NamedFn"],gcd:"NamedOp",hom:["NamedFn"],inf:"NamedOp",ker:["NamedFn"],lg:["NamedFn"],lim:"NamedOp",liminf:["NamedOp","lim inf"],limsup:["NamedOp","lim sup"],ln:["NamedFn"],log:["NamedFn"],max:"NamedOp",min:"NamedOp",Pr:"NamedOp",sec:["NamedFn"],sin:["NamedFn"],sinh:["NamedFn"],sup:"NamedOp",tan:["NamedFn"],tanh:["NamedFn"],limits:["Limits",1],nolimits:["Limits",0],overline:["UnderOver","00AF",null,1],underline:["UnderOver","005F"],overbrace:["UnderOver","23DE",1],underbrace:["UnderOver","23DF",1],overparen:["UnderOver","23DC"],underparen:["UnderOver","23DD"],overrightarrow:["UnderOver","2192"],underrightarrow:["UnderOver","2192"],overleftarrow:["UnderOver","2190"],underleftarrow:["UnderOver","2190"],overleftrightarrow:["UnderOver","2194"],underleftrightarrow:["UnderOver","2194"],overset:"Overset",underset:"Underset",stackrel:["Macro","\\mathrel{\\mathop{#2}\\limits^{#1}}",2],over:"Over",overwithdelims:"Over",atop:"Over",atopwithdelims:"Over",above:"Over",abovewithdelims:"Over",brace:["Over","{","}"],brack:["Over","[","]"],choose:["Over","(",")"],frac:"Frac",sqrt:"Sqrt",root:"Root",uproot:["MoveRoot","upRoot"],leftroot:["MoveRoot","leftRoot"],left:"LeftRight",right:"LeftRight",middle:"Middle",llap:"Lap",rlap:"Lap",raise:"RaiseLower",lower:"RaiseLower",moveleft:"MoveLeftRight",moveright:"MoveLeftRight",",":["Spacer",i.LENGTH.THINMATHSPACE],":":["Spacer",i.LENGTH.MEDIUMMATHSPACE],">":["Spacer",i.LENGTH.MEDIUMMATHSPACE],";":["Spacer",i.LENGTH.THICKMATHSPACE],"!":["Spacer",i.LENGTH.NEGATIVETHINMATHSPACE],enspace:["Spacer",".5em"],quad:["Spacer","1em"],qquad:["Spacer","2em"],thinspace:["Spacer",i.LENGTH.THINMATHSPACE],negthinspace:["Spacer",i.LENGTH.NEGATIVETHINMATHSPACE],hskip:"Hskip",hspace:"Hskip",kern:"Hskip",mskip:"Hskip",mspace:"Hskip",mkern:"Hskip",rule:"rule",Rule:["Rule"],Space:["Rule","blank"],big:["MakeBig",i.TEXCLASS.ORD,0.85],Big:["MakeBig",i.TEXCLASS.ORD,1.15],bigg:["MakeBig",i.TEXCLASS.ORD,1.45],Bigg:["MakeBig",i.TEXCLASS.ORD,1.75],bigl:["MakeBig",i.TEXCLASS.OPEN,0.85],Bigl:["MakeBig",i.TEXCLASS.OPEN,1.15],biggl:["MakeBig",i.TEXCLASS.OPEN,1.45],Biggl:["MakeBig",i.TEXCLASS.OPEN,1.75],bigr:["MakeBig",i.TEXCLASS.CLOSE,0.85],Bigr:["MakeBig",i.TEXCLASS.CLOSE,1.15],biggr:["MakeBig",i.TEXCLASS.CLOSE,1.45],Biggr:["MakeBig",i.TEXCLASS.CLOSE,1.75],bigm:["MakeBig",i.TEXCLASS.REL,0.85],Bigm:["MakeBig",i.TEXCLASS.REL,1.15],biggm:["MakeBig",i.TEXCLASS.REL,1.45],Biggm:["MakeBig",i.TEXCLASS.REL,1.75],mathord:["TeXAtom",i.TEXCLASS.ORD],mathop:["TeXAtom",i.TEXCLASS.OP],mathopen:["TeXAtom",i.TEXCLASS.OPEN],mathclose:["TeXAtom",i.TEXCLASS.CLOSE],mathbin:["TeXAtom",i.TEXCLASS.BIN],mathrel:["TeXAtom",i.TEXCLASS.REL],mathpunct:["TeXAtom",i.TEXCLASS.PUNCT],mathinner:["TeXAtom",i.TEXCLASS.INNER],vcenter:["TeXAtom",i.TEXCLASS.VCENTER],mathchoice:["Extension","mathchoice"],buildrel:"BuildRel",hbox:["HBox",0],text:"HBox",mbox:["HBox",0],fbox:"FBox",strut:"Strut",mathstrut:["Macro","\\vphantom{(}"],phantom:"Phantom",vphantom:["Phantom",1,0],hphantom:["Phantom",0,1],smash:"Smash",acute:["Accent","00B4"],grave:["Accent","0060"],ddot:["Accent","00A8"],tilde:["Accent","007E"],bar:["Accent","00AF"],breve:["Accent","02D8"],check:["Accent","02C7"],hat:["Accent","005E"],vec:["Accent","2192"],dot:["Accent","02D9"],widetilde:["Accent","007E",1],widehat:["Accent","005E",1],matrix:"Matrix",array:"Matrix",pmatrix:["Matrix","(",")"],cases:["Matrix","{","","left left",null,".1em",null,true],eqalign:["Matrix",null,null,"right left",i.LENGTH.THICKMATHSPACE,".5em","D"],displaylines:["Matrix",null,null,"center",null,".5em","D"],cr:"Cr","\\":"CrLaTeX",newline:"Cr",hline:["HLine","solid"],hdashline:["HLine","dashed"],eqalignno:["Matrix",null,null,"right left",i.LENGTH.THICKMATHSPACE,".5em","D",null,"right"],leqalignno:["Matrix",null,null,"right left",i.LENGTH.THICKMATHSPACE,".5em","D",null,"left"],hfill:"HFill",hfil:"HFill",hfilll:"HFill",bmod:["Macro",'\\mmlToken{mo}[lspace="thickmathspace" rspace="thickmathspace"]{mod}'],pmod:["Macro","\\pod{\\mmlToken{mi}{mod}\\kern 6mu #1}",1],mod:["Macro","\\mathchoice{\\kern18mu}{\\kern12mu}{\\kern12mu}{\\kern12mu}\\mmlToken{mi}{mod}\\,\\,#1",1],pod:["Macro","\\mathchoice{\\kern18mu}{\\kern8mu}{\\kern8mu}{\\kern8mu}(#1)",1],iff:["Macro","\\;\\Longleftrightarrow\\;"],skew:["Macro","{{#2{#3\\mkern#1mu}\\mkern-#1mu}{}}",3],mathcal:["Macro","{\\cal #1}",1],mathscr:["Macro","{\\scr #1}",1],mathrm:["Macro","{\\rm #1}",1],mathbf:["Macro","{\\bf #1}",1],mathbb:["Macro","{\\bbFont #1}",1],Bbb:["Macro","{\\bbFont #1}",1],mathit:["Macro","{\\it #1}",1],mathfrak:["Macro","{\\frak #1}",1],mathsf:["Macro","{\\sf #1}",1],mathtt:["Macro","{\\tt #1}",1],textrm:["Macro","\\mathord{\\rm\\text{#1}}",1],textit:["Macro","\\mathord{\\it\\text{#1}}",1],textbf:["Macro","\\mathord{\\bf\\text{#1}}",1],textsf:["Macro","\\mathord{\\sf\\text{#1}}",1],texttt:["Macro","\\mathord{\\tt\\text{#1}}",1],pmb:["Macro","\\rlap{#1}\\kern1px{#1}",1],TeX:["Macro","T\\kern-.14em\\lower.5ex{E}\\kern-.115em X"],LaTeX:["Macro","L\\kern-.325em\\raise.21em{\\scriptstyle{A}}\\kern-.17em\\TeX"]," ":["Macro","\\text{ }"],not:"Not",dots:"Dots",space:"Tilde","\u00A0":"Tilde",begin:"BeginEnd",end:"BeginEnd",newcommand:["Extension","newcommand"],renewcommand:["Extension","newcommand"],newenvironment:["Extension","newcommand"],renewenvironment:["Extension","newcommand"],def:["Extension","newcommand"],let:["Extension","newcommand"],verb:["Extension","verb"],boldsymbol:["Extension","boldsymbol"],tag:["Extension","AMSmath"],notag:["Extension","AMSmath"],label:["Extension","AMSmath"],ref:["Extension","AMSmath"],eqref:["Extension","AMSmath"],nonumber:["Macro","\\notag"],unicode:["Extension","unicode"],color:"Color",href:["Extension","HTML"],"class":["Extension","HTML"],style:["Extension","HTML"],cssId:["Extension","HTML"],bbox:["Extension","bbox"],mmlToken:"MmlToken",require:"Require"},environment:{array:["AlignedArray"],matrix:["Array",null,null,null,"c"],pmatrix:["Array",null,"(",")","c"],bmatrix:["Array",null,"[","]","c"],Bmatrix:["Array",null,"\\{","\\}","c"],vmatrix:["Array",null,"\\vert","\\vert","c"],Vmatrix:["Array",null,"\\Vert","\\Vert","c"],cases:["Array",null,"\\{",".","ll",null,".2em","T"],equation:[null,"Equation"],"equation*":[null,"Equation"],eqnarray:["ExtensionEnv",null,"AMSmath"],"eqnarray*":["ExtensionEnv",null,"AMSmath"],align:["ExtensionEnv",null,"AMSmath"],"align*":["ExtensionEnv",null,"AMSmath"],aligned:["ExtensionEnv",null,"AMSmath"],multline:["ExtensionEnv",null,"AMSmath"],"multline*":["ExtensionEnv",null,"AMSmath"],split:["ExtensionEnv",null,"AMSmath"],gather:["ExtensionEnv",null,"AMSmath"],"gather*":["ExtensionEnv",null,"AMSmath"],gathered:["ExtensionEnv",null,"AMSmath"],alignat:["ExtensionEnv",null,"AMSmath"],"alignat*":["ExtensionEnv",null,"AMSmath"],alignedat:["ExtensionEnv",null,"AMSmath"]},p_height:1.2/0.85});if(this.config.Macros){var m=this.config.Macros;for(var n in m){if(m.hasOwnProperty(n)){if(typeof(m[n])==="string"){g.macros[n]=["Macro",m[n]]}else{g.macros[n]=["Macro"].concat(m[n])}g.macros[n].isUser=true}}}};var a=MathJax.Object.Subclass({Init:function(n,o){this.string=n;this.i=0;this.macroCount=0;var m;if(o){m={};for(var p in o){if(o.hasOwnProperty(p)){m[p]=o[p]}}}this.stack=d.Stack(m,!!o);this.Parse();this.Push(b.stop())},Parse:function(){var o,m;while(this.i=55296&&m<56320){o+=this.string.charAt(this.i++)}if(g.special.hasOwnProperty(o)){this[g.special[o]](o)}else{if(g.letter.test(o)){this.Variable(o)}else{if(g.digit.test(o)){this.Number(o)}else{this.Other(o)}}}}},Push:function(){this.stack.Push.apply(this.stack,arguments)},mml:function(){if(this.stack.Top().type!=="mml"){return null}return this.stack.Top().data[0]},mmlToken:function(m){return m},ControlSequence:function(p){var m=this.GetCS(),o=this.csFindMacro(m);if(o){if(!f(o)){o=[o]}var n=o[0];if(!(n instanceof Function)){n=this[n]}n.apply(this,[p+m].concat(o.slice(1)))}else{if(g.mathchar0mi.hasOwnProperty(m)){this.csMathchar0mi(m,g.mathchar0mi[m])}else{if(g.mathchar0mo.hasOwnProperty(m)){this.csMathchar0mo(m,g.mathchar0mo[m])}else{if(g.mathchar7.hasOwnProperty(m)){this.csMathchar7(m,g.mathchar7[m])}else{if(g.delimiter.hasOwnProperty("\\"+m)){this.csDelimiter(m,g.delimiter["\\"+m])}else{this.csUndefined(p+m)}}}}}},csFindMacro:function(m){return(g.macros.hasOwnProperty(m)?g.macros[m]:null)},csMathchar0mi:function(m,o){var n={mathvariant:i.VARIANT.ITALIC};if(f(o)){n=o[1];o=o[0]}this.Push(this.mmlToken(i.mi(i.entity("#x"+o)).With(n)))},csMathchar0mo:function(m,o){var n={stretchy:false};if(f(o)){n=o[1];n.stretchy=false;o=o[0]}this.Push(this.mmlToken(i.mo(i.entity("#x"+o)).With(n)))},csMathchar7:function(m,o){var n={mathvariant:i.VARIANT.NORMAL};if(f(o)){n=o[1];o=o[0]}if(this.stack.env.font){n.mathvariant=this.stack.env.font}this.Push(this.mmlToken(i.mi(i.entity("#x"+o)).With(n)))},csDelimiter:function(m,o){var n={};if(f(o)){n=o[1];o=o[0]}if(o.length===4){o=i.entity("#x"+o)}else{o=i.chars(o)}this.Push(this.mmlToken(i.mo(o).With({fence:false,stretchy:false}).With(n)))},csUndefined:function(m){d.Error(["UndefinedControlSequence","Undefined control sequence %1",m])},Variable:function(n){var m={};if(this.stack.env.font){m.mathvariant=this.stack.env.font}this.Push(this.mmlToken(i.mi(i.chars(n)).With(m)))},Number:function(p){var m,o=this.string.slice(this.i-1).match(g.number);if(o){m=i.mn(o[0].replace(/[{}]/g,""));this.i+=o[0].length-1}else{m=i.mo(i.chars(p))}if(this.stack.env.font){m.mathvariant=this.stack.env.font}this.Push(this.mmlToken(m))},Open:function(m){this.Push(b.open())},Close:function(m){this.Push(b.close())},Tilde:function(m){this.Push(i.mtext(i.chars(h)))},Space:function(m){},Superscript:function(r){if(this.GetNext().match(/\d/)){this.string=this.string.substr(0,this.i+1)+" "+this.string.substr(this.i+1)}var q,o,p=this.stack.Top();if(p.type==="prime"){o=p.data[0];q=p.data[1];this.stack.Pop()}else{o=this.stack.Prev();if(!o){o=i.mi("")}}if(o.isEmbellishedWrapper){o=o.data[0].data[0]}var n=o.movesupsub,m=o.sup;if((o.type==="msubsup"&&o.data[o.sup])||(o.type==="munderover"&&o.data[o.over]&&!o.subsupOK)){d.Error(["DoubleExponent","Double exponent: use braces to clarify"])}if(o.type!=="msubsup"){if(n){if(o.type!=="munderover"||o.data[o.over]){if(o.movablelimits&&o.isa(i.mi)){o=this.mi2mo(o)}o=i.munderover(o,null,null).With({movesupsub:true})}m=o.over}else{o=i.msubsup(o,null,null);m=o.sup}}this.Push(b.subsup(o).With({position:m,primes:q,movesupsub:n}))},Subscript:function(r){if(this.GetNext().match(/\d/)){this.string=this.string.substr(0,this.i+1)+" "+this.string.substr(this.i+1)}var q,o,p=this.stack.Top();if(p.type==="prime"){o=p.data[0];q=p.data[1];this.stack.Pop()}else{o=this.stack.Prev();if(!o){o=i.mi("")}}if(o.isEmbellishedWrapper){o=o.data[0].data[0]}var n=o.movesupsub,m=o.sub;if((o.type==="msubsup"&&o.data[o.sub])||(o.type==="munderover"&&o.data[o.under]&&!o.subsupOK)){d.Error(["DoubleSubscripts","Double subscripts: use braces to clarify"])}if(o.type!=="msubsup"){if(n){if(o.type!=="munderover"||o.data[o.under]){if(o.movablelimits&&o.isa(i.mi)){o=this.mi2mo(o)}o=i.munderover(o,null,null).With({movesupsub:true})}m=o.under}else{o=i.msubsup(o,null,null);m=o.sub}}this.Push(b.subsup(o).With({position:m,primes:q,movesupsub:n}))},PRIME:"\u2032",SMARTQUOTE:"\u2019",Prime:function(o){var n=this.stack.Prev();if(!n){n=i.mi()}if(n.type==="msubsup"&&n.data[n.sup]){d.Error(["DoubleExponentPrime","Prime causes double exponent: use braces to clarify"])}var m="";this.i--;do{m+=this.PRIME;this.i++,o=this.GetNext()}while(o==="'"||o===this.SMARTQUOTE);m=["","\u2032","\u2033","\u2034","\u2057"][m.length]||m;this.Push(b.prime(n,this.mmlToken(i.mo(m))))},mi2mo:function(m){var n=i.mo();n.Append.apply(n,m.data);var o;for(o in n.defaults){if(n.defaults.hasOwnProperty(o)&&m[o]!=null){n[o]=m[o]}}for(o in i.copyAttributes){if(i.copyAttributes.hasOwnProperty(o)&&m[o]!=null){n[o]=m[o]}}n.lspace=n.rspace="0";n.useMMLspacing&=~(n.SPACE_ATTR.lspace|n.SPACE_ATTR.rspace);return n},Comment:function(m){while(this.id.config.MAXMACROS){d.Error(["MaxMacroSub1","MathJax maximum macro substitution count exceeded; is there a recursive macro call?"])}},Matrix:function(n,p,v,r,u,o,m,w,t){var s=this.GetNext();if(s===""){d.Error(["MissingArgFor","Missing argument for %1",n])}if(s==="{"){this.i++}else{this.string=s+"}"+this.string.slice(this.i+1);this.i=0}var q=b.array().With({requireClose:true,arraydef:{rowspacing:(o||"4pt"),columnspacing:(u||"1em")}});if(w){q.isCases=true}if(t){q.isNumbered=true;q.arraydef.side=t}if(p||v){q.open=p;q.close=v}if(m==="D"){q.arraydef.displaystyle=true}if(r!=null){q.arraydef.columnalign=r}this.Push(q)},Entry:function(p){this.Push(b.cell().With({isEntry:true,name:p}));if(this.stack.Top().isCases){var o=this.string;var t=0,s=-1,q=this.i,n=o.length;while(qd.config.MAXMACROS){d.Error(["MaxMacroSub2","MathJax maximum substitution count exceeded; is there a recursive latex environment?"])}if(q[0]&&this[q[0]]){n=this[q[0]].apply(this,[n].concat(q.slice(2)))}}this.Push(n)},envFindName:function(m){return(g.environment.hasOwnProperty(m)?g.environment[m]:null)},Equation:function(m,n){return n},ExtensionEnv:function(n,m){this.Extension(n.name,m,"environment")},Array:function(n,p,u,s,t,o,m,q){if(!s){s=this.GetArgument("\\begin{"+n.name+"}")}var v=("c"+s).replace(/[^clr|:]/g,"").replace(/[^|:]([|:])+/g,"$1");s=s.replace(/[^clr]/g,"").split("").join(" ");s=s.replace(/l/g,"left").replace(/r/g,"right").replace(/c/g,"center");var r=b.array().With({arraydef:{columnalign:s,columnspacing:(t||"1em"),rowspacing:(o||"4pt")}});if(v.match(/[|:]/)){if(v.charAt(0).match(/[|:]/)){r.frame.push("left");r.frame.dashed=v.charAt(0)===":"}if(v.charAt(v.length-1).match(/[|:]/)){r.frame.push("right")}v=v.substr(1,v.length-2);r.arraydef.columnlines=v.split("").join(" ").replace(/[^|: ]/g,"none").replace(/\|/g,"solid").replace(/:/g,"dashed")}if(p){r.open=this.convertDelimiter(p)}if(u){r.close=this.convertDelimiter(u)}if(m==="D"){r.arraydef.displaystyle=true}else{if(m){r.arraydef.displaystyle=false}}if(m==="S"){r.arraydef.scriptlevel=1}if(q){r.arraydef.useHeight=false}this.Push(n);return r},AlignedArray:function(m){var n=this.GetBrackets("\\begin{"+m.name+"}");return this.setArrayAlign(this.Array.apply(this,arguments),n)},setArrayAlign:function(n,m){m=this.trimSpaces(m||"");if(m==="t"){n.arraydef.align="baseline 1"}else{if(m==="b"){n.arraydef.align="baseline -1"}else{if(m==="c"){n.arraydef.align="center"}else{if(m){n.arraydef.align=m}}}}return n},convertDelimiter:function(m){if(m){m=(g.delimiter.hasOwnProperty(m)?g.delimiter[m]:null)}if(m==null){return null}if(f(m)){m=m[0]}if(m.length===4){m=String.fromCharCode(parseInt(m,16))}return m},trimSpaces:function(n){if(typeof(n)!="string"){return n}var m=n.replace(/^\s+|\s+$/g,"");if(m.match(/\\$/)&&n.match(/ $/)){m+=" "}return m},nextIsSpace:function(){return this.string.charAt(this.i).match(/\s/)},GetNext:function(){while(this.nextIsSpace()){this.i++}return this.string.charAt(this.i)},GetCS:function(){var m=this.string.slice(this.i).match(/^([a-z]+|.) ?/i);if(m){this.i+=m[1].length;return m[1]}else{this.i++;return" "}},GetArgument:function(n,o){switch(this.GetNext()){case"":if(!o){d.Error(["MissingArgFor","Missing argument for %1",n])}return null;case"}":if(!o){d.Error(["ExtraCloseMissingOpen","Extra close brace or missing open brace"])}return null;case"\\":this.i++;return"\\"+this.GetCS();case"{":var m=++this.i,p=1;while(this.i1){n=[i.mrow.apply(i,n)]}}return n},InternalText:function(n,m){n=n.replace(/^\s+/,h).replace(/\s+$/,h);return i.mtext(i.chars(n)).With(m)},setDef:function(m,n){n.isUser=true;g.macros[m]=n},setEnv:function(m,n){n.isUser=true;g.environment[m]=n},SubstituteArgs:function(n,m){var q="";var p="";var r;var o=0;while(on.length){d.Error(["IllegalMacroParam","Illegal macro parameter reference"])}p=this.AddArgs(this.AddArgs(p,q),n[r-1]);q=""}}else{q+=r}}}return this.AddArgs(p,q)},AddArgs:function(n,m){if(m.match(/^[a-z]/i)&&n.match(/(^|[^\\])(\\\\)*\\[a-z]+$/i)){n+=" "}if(n.length+m.length>d.config.MAXBUFFER){d.Error(["MaxBufferSize","MathJax internal buffer size exceeded; is there a recursive macro call?"])}return n+m}});d.Augment({Stack:e,Parse:a,Definitions:g,Startup:l,config:{MAXMACROS:10000,MAXBUFFER:5*1024},sourceMenuTitle:["TeXCommands","TeX Commands"],annotationEncoding:"application/x-tex",prefilterHooks:MathJax.Callback.Hooks(true),postfilterHooks:MathJax.Callback.Hooks(true),Config:function(){this.SUPER(arguments).Config.apply(this,arguments);if(this.config.equationNumbers.autoNumber!=="none"){if(!this.config.extensions){this.config.extensions=[]}this.config.extensions.push("AMSmath.js")}},Translate:function(m){var n,o=false,q=MathJax.HTML.getScript(m);var s=(m.type.replace(/\n/g," ").match(/(;|\s|\n)mode\s*=\s*display(;|\s|\n|$)/)!=null);var r={math:q,display:s,script:m};var t=this.prefilterHooks.Execute(r);if(t){return t}q=r.math;try{n=d.Parse(q).mml()}catch(p){if(!p.texError){throw p}n=this.formatError(p,q,s,m);o=true}if(n.isa(i.mtable)&&n.displaystyle==="inherit"){n.displaystyle=s}if(n.inferred){n=i.apply(MathJax.ElementJax,n.data)}else{n=i(n)}if(s){n.root.display="block"}if(o){n.texError=true}r.math=n;return this.postfilterHooks.Execute(r)||r.math},prefilterMath:function(n,o,m){return n},postfilterMath:function(n,o,m){this.combineRelations(n.root);return n},formatError:function(p,o,q,m){var n=p.message.replace(/\n.*/,"");c.signal.Post(["TeX Jax - parse error",n,o,q,m]);return i.Error(n)},Error:function(m){if(f(m)){m=k.apply(k,m)}throw c.Insert(Error(m),{texError:true})},Macro:function(m,n,o){g.macros[m]=["Macro"].concat([].slice.call(arguments,1));g.macros[m].isUser=true},fenced:function(o,n,p){var m=i.mrow().With({open:o,close:p,texClass:i.TEXCLASS.INNER});m.Append(i.mo(o).With({fence:true,stretchy:true,symmetric:true,texClass:i.TEXCLASS.OPEN}));if(n.type==="mrow"&&n.inferred){m.Append.apply(m,n.data)}else{m.Append(n)}m.Append(i.mo(p).With({fence:true,stretchy:true,symmetric:true,texClass:i.TEXCLASS.CLOSE}));return m},fixedFence:function(o,n,p){var m=i.mrow().With({open:o,close:p,texClass:i.TEXCLASS.ORD});if(o){m.Append(this.mathPalette(o,"l"))}if(n.type==="mrow"){m.Append.apply(m,n.data)}else{m.Append(n)}if(p){m.Append(this.mathPalette(p,"r"))}return m},mathPalette:function(p,n){if(p==="{"||p==="}"){p="\\"+p}var o="{\\bigg"+n+" "+p+"}",m="{\\big"+n+" "+p+"}";return d.Parse("\\mathchoice"+o+m+m+m,{}).mml()},combineRelations:function(q){var r,n,p,o;for(r=0,n=q.data.length;r0){p+="rl";o.push("0em 0em");q--}o=o.join(" ");if(i){return this.AMSarray(l,j,i,p,o)}var m=this.AMSarray(l,j,i,p,o);return this.setArrayAlign(m,k)},EquationBegin:function(i,j){this.checkEqnEnv();this.stack.global.forcetag=(j&&a.autoNumber!=="none");return i},EquationStar:function(i,j){this.stack.global.tagged=true;return j},checkEqnEnv:function(){if(this.stack.global.eqnenv){h.Error(["ErroneousNestingEq","Erroneous nesting of equation structures"])}this.stack.global.eqnenv=true},MultiIntegral:function(j,m){var l=this.GetNext();if(l==="\\"){var k=this.i;l=this.GetArgument(j);this.i=k;if(l==="\\limits"){if(j==="\\idotsint"){m="\\!\\!\\mathop{\\,\\,"+m+"}"}else{m="\\!\\!\\!\\mathop{\\,\\,\\,"+m+"}"}}}this.string=m+" "+this.string.slice(this.i);this.i=0},xArrow:function(k,o,n,i){var m={width:"+"+(n+i)+"mu",lspace:n+"mu"};var p=this.GetBrackets(k),q=this.ParseArg(k);var s=b.mo(b.chars(String.fromCharCode(o))).With({stretchy:true,texClass:b.TEXCLASS.REL});var j=b.munderover(s);j.SetData(j.over,b.mpadded(q).With(m).With({voffset:".15em"}));if(p){p=h.Parse(p,this.stack.env).mml();j.SetData(j.under,b.mpadded(p).With(m).With({voffset:"-.24em"}))}this.Push(j.With({subsupOK:true}))},GetDelimiterArg:function(i){var j=this.trimSpaces(this.GetArgument(i));if(j==""){return null}if(j in d.delimiter){return j}h.Error(["MissingOrUnrecognizedDelim","Missing or unrecognized delimiter for %1",i])},GetStar:function(){var i=(this.GetNext()==="*");if(i){this.i++}return i}});f.Augment({autoTag:function(){var j=this.global;if(!j.notag){g.number++;j.tagID=a.formatNumber(g.number.toString());var i=h.Parse("\\text{"+a.formatTag(j.tagID)+"}",{}).mml();j.tag=b.mtd(i).With({id:a.formatID(j.tagID)})}},getTag:function(){var m=this.global,k=m.tag;m.tagged=true;if(m.label){if(a.useLabelIds){k.id=a.formatID(m.label)}g.eqlabels[m.label]={tag:m.tagID,id:k.id}}if(document.getElementById(k.id)||g.IDs[k.id]||g.eqIDs[k.id]){var l=0,j;do{l++;j=k.id+"_"+l}while(document.getElementById(j)||g.IDs[j]||g.eqIDs[j]);k.id=j;if(m.label){g.eqlabels[m.label].id=j}}g.eqIDs[k.id]=1;this.clearTag();return k},clearTag:function(){var i=this.global;delete i.tag;delete i.tagID;delete i.label},fixInitialMO:function(l){for(var k=0,j=l.length;k element, not %1","<"+j.firstChild.nodeName+">"])}var i={math:j.firstChild,script:e};c.DOMfilterHooks.Execute(i);this.mml=this.MakeMML(i.math)},MakeMML:function(h){var i=String(h.getAttribute("class")||"");var f,g=h.nodeName.toLowerCase().replace(/^[a-z]+:/,"");var e=(i.match(/(^| )MJX-TeXAtom-([^ ]*)/));if(e){f=this.TeXAtom(e[2],e[2]==="OP"&&!i.match(/MJX-fixedlimits/))}else{if(!(a[g]&&a[g].isa&&a[g].isa(a.mbase))){MathJax.Hub.signal.Post(["MathML Jax - unknown node type",g]);return a.Error(b("UnknownNodeType","Unknown node type: %1",g))}else{f=a[g]()}}this.AddAttributes(f,h);this.CheckClass(f,f["class"]);this.AddChildren(f,h);if(c.config.useMathMLspacing){f.useMMLspacing=8}return f},TeXAtom:function(g,f){var e=a.TeXAtom().With({texClass:a.TEXCLASS[g]});if(f){e.movesupsub=e.movablelimits=true}return e},CheckClass:function(f,h){h=(h||"").split(/ /);var j=[];for(var g=0,e=h.length;g=2){var l=e.data[0],n=e.data[e.data.length-1];if(l.type==="mo"&&l.Get("fence")&&n.type==="mo"&&n.Get("fence")){if(l.data[0]){e.open=l.data.join("")}if(n.data[0]){e.close=n.data.join("")}}}},preProcessMath:function(f){if(f.match(/^<[a-z]+:/i)&&!f.match(/^<[^<>]* xmlns:/)){f=f.replace(/^<([a-z]+)(:math)/i,'<$1$2 xmlns:$1="http://www.w3.org/1998/Math/MathML"')}var e=f.match(/^(])+)>)/i);if(e&&e[2].match(/ (?!xmlns=)[a-z]+=\"http:/i)){f=e[1].replace(/ (?!xmlns=)([a-z]+=(['"])http:.*?\2)/ig," xmlns:$1 $1")+f.substr(e[0].length)}if(f.match(/^]/i)&&!f.match(/^<[^<>]* xmlns=/)){f=f.replace(/^<(math)/i,'\s*$/,"$2");return f.replace(/&([a-z][a-z0-9]*);/ig,this.replaceEntity)},trimSpace:function(e){return e.replace(/[\t\n\r]/g," ").replace(/^ +/,"").replace(/ +$/,"").replace(/ +/g," ")},replaceEntity:function(g,f){if(f.match(/^(lt|amp|quot)$/)){return g}if(c.Parse.Entity[f]){return c.Parse.Entity[f]}var h=f.charAt(0).toLowerCase();var e=f.match(/^[a-zA-Z](fr|scr|opf)$/);if(e){h=e[1]}if(!c.Parse.loaded[h]){c.Parse.loaded[h]=true;MathJax.Hub.RestartAfter(MathJax.Ajax.Require(c.entityDir+"/"+h+".js"))}return g}},{loaded:[]});c.Augment({sourceMenuTitle:["OriginalMathML","Original MathML"],prefilterHooks:MathJax.Callback.Hooks(true),DOMfilterHooks:MathJax.Callback.Hooks(true),postfilterHooks:MathJax.Callback.Hooks(true),Translate:function(e){if(!this.ParseXML){this.ParseXML=this.createParser()}var f,h,i={script:e};if(e.firstChild&&e.firstChild.nodeName.toLowerCase().replace(/^[a-z]+:/,"")==="math"){i.math=e.firstChild}else{h=MathJax.HTML.getScript(e);if(d.isMSIE){h=h.replace(/( )+$/,"")}i.math=h}var j=this.prefilterHooks.Execute(i);if(j){return j}h=i.math;try{f=c.Parse(h,e).mml}catch(g){if(!g.mathmlError){throw g}f=this.formatError(g,h,e)}i.math=a(f);return this.postfilterHooks.Execute(i)||i.math},prefilterMath:function(f,e){return f},prefilterMathML:function(f,e){return f},formatError:function(h,g,e){var f=h.message.replace(/\n.*/,"");MathJax.Hub.signal.Post(["MathML Jax - parse error",f,g,e]);return a.Error(f)},Error:function(e){if(MathJax.Object.isArray(e)){e=b.apply(b,e)}throw MathJax.Hub.Insert(Error(e),{mathmlError:true})},parseDOM:function(e){return this.parser.parseFromString(e,"text/xml")},parseMS:function(e){return(this.parser.loadXML(e)?this.parser:null)},parseDIV:function(e){this.div.innerHTML="
"+e.replace(/<([a-z]+)([^>]*)\/>/g,"<$1$2>")+"
";var f=this.div.firstChild;this.div.innerHTML="";return f},parseError:function(e){return null},createMSParser:function(){var j=null;var f=["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument.2.0","Microsoft.XMLDOM"];for(var g=0,e=f.length;g=ab-1){this.lastChild=ae}this.childNodes[ad]=ae;ae.nextSibling=ac.nextSibling;ac.nextSibling=ac.parent=null;return ac},hasChildNodes:function(ab){return(this.childNodes.length>0)},toString:function(){return"{"+this.childNodes.join("")+"}"}});var x=function(){g=MathJax.ElementJax.mml;var ab=g.mbase.prototype.Init;g.mbase.Augment({firstChild:null,lastChild:null,nodeValue:null,nextSibling:null,Init:function(){var ac=ab.apply(this,arguments)||this;ac.childNodes=ac.data;ac.nodeName=ac.type;return ac},appendChild:function(af){if(af.parent){af.parent.removeChild(af)}var ad=arguments;if(af.isa(X)){ad=af.childNodes;af.data=af.childNodes=[];af.firstChild=af.lastChild=null}for(var ae=0,ac=ad.length;ae=ac-1){this.lastChild=af}this.SetData(ae,af);af.nextSibling=ad.nextSibling;ad.nextSibling=ad.parent=null;return ad},hasChildNodes:function(ac){return(this.childNodes.length>0)},setAttribute:function(ac,ad){this[ac]=ad}})};var Q={};var e={getElementById:true,createElementNS:function(ac,ab){var ad=g[ab]();if(ab==="mo"&&aa.config.useMathMLspacing){ad.useMMLspacing=128}return ad},createTextNode:function(ab){return g.chars(ab).With({nodeValue:ab})},createDocumentFragment:function(){return X()}};var J={appName:"MathJax"};var C="blue";var o=true;var v=true;var d=".";var f=true;var l=(J.appName.slice(0,9)=="Microsoft");function E(ab){if(l){return e.createElement(ab)}else{return e.createElementNS("http://www.w3.org/1999/xhtml",ab)}}var W="http://www.w3.org/1998/Math/MathML";function P(ab){if(l){return e.createElement("m:"+ab)}else{return e.createElementNS(W,ab)}}function O(ab,ad){var ac;if(l){ac=e.createElement("m:"+ab)}else{ac=e.createElementNS(W,ab)}if(ad){ac.appendChild(ad)}return ac}function u(ab,ac){z.push({input:ab,tag:"mo",output:ac,tex:null,ttype:V});B()}function r(ab){z.push(ab);B()}var D=["\uD835\uDC9C","\u212C","\uD835\uDC9E","\uD835\uDC9F","\u2130","\u2131","\uD835\uDCA2","\u210B","\u2110","\uD835\uDCA5","\uD835\uDCA6","\u2112","\u2133","\uD835\uDCA9","\uD835\uDCAA","\uD835\uDCAB","\uD835\uDCAC","\u211B","\uD835\uDCAE","\uD835\uDCAF","\uD835\uDCB0","\uD835\uDCB1","\uD835\uDCB2","\uD835\uDCB3","\uD835\uDCB4","\uD835\uDCB5","\uD835\uDCB6","\uD835\uDCB7","\uD835\uDCB8","\uD835\uDCB9","\u212F","\uD835\uDCBB","\u210A","\uD835\uDCBD","\uD835\uDCBE","\uD835\uDCBF","\uD835\uDCC0","\uD835\uDCC1","\uD835\uDCC2","\uD835\uDCC3","\u2134","\uD835\uDCC5","\uD835\uDCC6","\uD835\uDCC7","\uD835\uDCC8","\uD835\uDCC9","\uD835\uDCCA","\uD835\uDCCB","\uD835\uDCCC","\uD835\uDCCD","\uD835\uDCCE","\uD835\uDCCF"];var H=["\uD835\uDD04","\uD835\uDD05","\u212D","\uD835\uDD07","\uD835\uDD08","\uD835\uDD09","\uD835\uDD0A","\u210C","\u2111","\uD835\uDD0D","\uD835\uDD0E","\uD835\uDD0F","\uD835\uDD10","\uD835\uDD11","\uD835\uDD12","\uD835\uDD13","\uD835\uDD14","\u211C","\uD835\uDD16","\uD835\uDD17","\uD835\uDD18","\uD835\uDD19","\uD835\uDD1A","\uD835\uDD1B","\uD835\uDD1C","\u2128","\uD835\uDD1E","\uD835\uDD1F","\uD835\uDD20","\uD835\uDD21","\uD835\uDD22","\uD835\uDD23","\uD835\uDD24","\uD835\uDD25","\uD835\uDD26","\uD835\uDD27","\uD835\uDD28","\uD835\uDD29","\uD835\uDD2A","\uD835\uDD2B","\uD835\uDD2C","\uD835\uDD2D","\uD835\uDD2E","\uD835\uDD2F","\uD835\uDD30","\uD835\uDD31","\uD835\uDD32","\uD835\uDD33","\uD835\uDD34","\uD835\uDD35","\uD835\uDD36","\uD835\uDD37"];var w=["\uD835\uDD38","\uD835\uDD39","\u2102","\uD835\uDD3B","\uD835\uDD3C","\uD835\uDD3D","\uD835\uDD3E","\u210D","\uD835\uDD40","\uD835\uDD41","\uD835\uDD42","\uD835\uDD43","\uD835\uDD44","\u2115","\uD835\uDD46","\u2119","\u211A","\u211D","\uD835\uDD4A","\uD835\uDD4B","\uD835\uDD4C","\uD835\uDD4D","\uD835\uDD4E","\uD835\uDD4F","\uD835\uDD50","\u2124","\uD835\uDD52","\uD835\uDD53","\uD835\uDD54","\uD835\uDD55","\uD835\uDD56","\uD835\uDD57","\uD835\uDD58","\uD835\uDD59","\uD835\uDD5A","\uD835\uDD5B","\uD835\uDD5C","\uD835\uDD5D","\uD835\uDD5E","\uD835\uDD5F","\uD835\uDD60","\uD835\uDD61","\uD835\uDD62","\uD835\uDD63","\uD835\uDD64","\uD835\uDD65","\uD835\uDD66","\uD835\uDD67","\uD835\uDD68","\uD835\uDD69","\uD835\uDD6A","\uD835\uDD6B"];var c=0,A=1,U=2,i=3,b=4,h=5,a=6,L=7,V=8,m=9,Y=10,K=15;var k={input:'"',tag:"mtext",output:"mbox",tex:null,ttype:Y};var z=[{input:"alpha",tag:"mi",output:"\u03B1",tex:null,ttype:c},{input:"beta",tag:"mi",output:"\u03B2",tex:null,ttype:c},{input:"chi",tag:"mi",output:"\u03C7",tex:null,ttype:c},{input:"delta",tag:"mi",output:"\u03B4",tex:null,ttype:c},{input:"Delta",tag:"mo",output:"\u0394",tex:null,ttype:c},{input:"epsi",tag:"mi",output:"\u03B5",tex:"epsilon",ttype:c},{input:"varepsilon",tag:"mi",output:"\u025B",tex:null,ttype:c},{input:"eta",tag:"mi",output:"\u03B7",tex:null,ttype:c},{input:"gamma",tag:"mi",output:"\u03B3",tex:null,ttype:c},{input:"Gamma",tag:"mo",output:"\u0393",tex:null,ttype:c},{input:"iota",tag:"mi",output:"\u03B9",tex:null,ttype:c},{input:"kappa",tag:"mi",output:"\u03BA",tex:null,ttype:c},{input:"lambda",tag:"mi",output:"\u03BB",tex:null,ttype:c},{input:"Lambda",tag:"mo",output:"\u039B",tex:null,ttype:c},{input:"lamda",tag:"mi",output:"\u03BB",tex:null,ttype:c},{input:"Lamda",tag:"mo",output:"\u039B",tex:null,ttype:c},{input:"mu",tag:"mi",output:"\u03BC",tex:null,ttype:c},{input:"nu",tag:"mi",output:"\u03BD",tex:null,ttype:c},{input:"omega",tag:"mi",output:"\u03C9",tex:null,ttype:c},{input:"Omega",tag:"mo",output:"\u03A9",tex:null,ttype:c},{input:"phi",tag:"mi",output:f?"\u03D5":"\u03C6",tex:null,ttype:c},{input:"varphi",tag:"mi",output:f?"\u03C6":"\u03D5",tex:null,ttype:c},{input:"Phi",tag:"mo",output:"\u03A6",tex:null,ttype:c},{input:"pi",tag:"mi",output:"\u03C0",tex:null,ttype:c},{input:"Pi",tag:"mo",output:"\u03A0",tex:null,ttype:c},{input:"psi",tag:"mi",output:"\u03C8",tex:null,ttype:c},{input:"Psi",tag:"mi",output:"\u03A8",tex:null,ttype:c},{input:"rho",tag:"mi",output:"\u03C1",tex:null,ttype:c},{input:"sigma",tag:"mi",output:"\u03C3",tex:null,ttype:c},{input:"Sigma",tag:"mo",output:"\u03A3",tex:null,ttype:c},{input:"tau",tag:"mi",output:"\u03C4",tex:null,ttype:c},{input:"theta",tag:"mi",output:"\u03B8",tex:null,ttype:c},{input:"vartheta",tag:"mi",output:"\u03D1",tex:null,ttype:c},{input:"Theta",tag:"mo",output:"\u0398",tex:null,ttype:c},{input:"upsilon",tag:"mi",output:"\u03C5",tex:null,ttype:c},{input:"xi",tag:"mi",output:"\u03BE",tex:null,ttype:c},{input:"Xi",tag:"mo",output:"\u039E",tex:null,ttype:c},{input:"zeta",tag:"mi",output:"\u03B6",tex:null,ttype:c},{input:"*",tag:"mo",output:"\u22C5",tex:"cdot",ttype:c},{input:"**",tag:"mo",output:"\u2217",tex:"ast",ttype:c},{input:"***",tag:"mo",output:"\u22C6",tex:"star",ttype:c},{input:"//",tag:"mo",output:"/",tex:null,ttype:c},{input:"\\\\",tag:"mo",output:"\\",tex:"backslash",ttype:c},{input:"setminus",tag:"mo",output:"\\",tex:null,ttype:c},{input:"xx",tag:"mo",output:"\u00D7",tex:"times",ttype:c},{input:"|><",tag:"mo",output:"\u22C9",tex:"ltimes",ttype:c},{input:"><|",tag:"mo",output:"\u22CA",tex:"rtimes",ttype:c},{input:"|><|",tag:"mo",output:"\u22C8",tex:"bowtie",ttype:c},{input:"-:",tag:"mo",output:"\u00F7",tex:"div",ttype:c},{input:"divide",tag:"mo",output:"-:",tex:null,ttype:V},{input:"@",tag:"mo",output:"\u2218",tex:"circ",ttype:c},{input:"o+",tag:"mo",output:"\u2295",tex:"oplus",ttype:c},{input:"ox",tag:"mo",output:"\u2297",tex:"otimes",ttype:c},{input:"o.",tag:"mo",output:"\u2299",tex:"odot",ttype:c},{input:"sum",tag:"mo",output:"\u2211",tex:null,ttype:L},{input:"prod",tag:"mo",output:"\u220F",tex:null,ttype:L},{input:"^^",tag:"mo",output:"\u2227",tex:"wedge",ttype:c},{input:"^^^",tag:"mo",output:"\u22C0",tex:"bigwedge",ttype:L},{input:"vv",tag:"mo",output:"\u2228",tex:"vee",ttype:c},{input:"vvv",tag:"mo",output:"\u22C1",tex:"bigvee",ttype:L},{input:"nn",tag:"mo",output:"\u2229",tex:"cap",ttype:c},{input:"nnn",tag:"mo",output:"\u22C2",tex:"bigcap",ttype:L},{input:"uu",tag:"mo",output:"\u222A",tex:"cup",ttype:c},{input:"uuu",tag:"mo",output:"\u22C3",tex:"bigcup",ttype:L},{input:"!=",tag:"mo",output:"\u2260",tex:"ne",ttype:c},{input:":=",tag:"mo",output:":=",tex:null,ttype:c},{input:"lt",tag:"mo",output:"<",tex:null,ttype:c},{input:"<=",tag:"mo",output:"\u2264",tex:"le",ttype:c},{input:"lt=",tag:"mo",output:"\u2264",tex:"leq",ttype:c},{input:"gt",tag:"mo",output:">",tex:null,ttype:c},{input:">=",tag:"mo",output:"\u2265",tex:"ge",ttype:c},{input:"gt=",tag:"mo",output:"\u2265",tex:"geq",ttype:c},{input:"-<",tag:"mo",output:"\u227A",tex:"prec",ttype:c},{input:"-lt",tag:"mo",output:"\u227A",tex:null,ttype:c},{input:">-",tag:"mo",output:"\u227B",tex:"succ",ttype:c},{input:"-<=",tag:"mo",output:"\u2AAF",tex:"preceq",ttype:c},{input:">-=",tag:"mo",output:"\u2AB0",tex:"succeq",ttype:c},{input:"in",tag:"mo",output:"\u2208",tex:null,ttype:c},{input:"!in",tag:"mo",output:"\u2209",tex:"notin",ttype:c},{input:"sub",tag:"mo",output:"\u2282",tex:"subset",ttype:c},{input:"sup",tag:"mo",output:"\u2283",tex:"supset",ttype:c},{input:"sube",tag:"mo",output:"\u2286",tex:"subseteq",ttype:c},{input:"supe",tag:"mo",output:"\u2287",tex:"supseteq",ttype:c},{input:"-=",tag:"mo",output:"\u2261",tex:"equiv",ttype:c},{input:"~=",tag:"mo",output:"\u2245",tex:"cong",ttype:c},{input:"~~",tag:"mo",output:"\u2248",tex:"approx",ttype:c},{input:"prop",tag:"mo",output:"\u221D",tex:"propto",ttype:c},{input:"and",tag:"mtext",output:"and",tex:null,ttype:a},{input:"or",tag:"mtext",output:"or",tex:null,ttype:a},{input:"not",tag:"mo",output:"\u00AC",tex:"neg",ttype:c},{input:"=>",tag:"mo",output:"\u21D2",tex:"implies",ttype:c},{input:"if",tag:"mo",output:"if",tex:null,ttype:a},{input:"<=>",tag:"mo",output:"\u21D4",tex:"iff",ttype:c},{input:"AA",tag:"mo",output:"\u2200",tex:"forall",ttype:c},{input:"EE",tag:"mo",output:"\u2203",tex:"exists",ttype:c},{input:"_|_",tag:"mo",output:"\u22A5",tex:"bot",ttype:c},{input:"TT",tag:"mo",output:"\u22A4",tex:"top",ttype:c},{input:"|--",tag:"mo",output:"\u22A2",tex:"vdash",ttype:c},{input:"|==",tag:"mo",output:"\u22A8",tex:"models",ttype:c},{input:"(",tag:"mo",output:"(",tex:"left(",ttype:b},{input:")",tag:"mo",output:")",tex:"right)",ttype:h},{input:"[",tag:"mo",output:"[",tex:"left[",ttype:b},{input:"]",tag:"mo",output:"]",tex:"right]",ttype:h},{input:"{",tag:"mo",output:"{",tex:null,ttype:b},{input:"}",tag:"mo",output:"}",tex:null,ttype:h},{input:"|",tag:"mo",output:"|",tex:null,ttype:m},{input:":|:",tag:"mo",output:"|",tex:null,ttype:c},{input:"|:",tag:"mo",output:"|",tex:null,ttype:b},{input:":|",tag:"mo",output:"|",tex:null,ttype:h},{input:"(:",tag:"mo",output:"\u2329",tex:"langle",ttype:b},{input:":)",tag:"mo",output:"\u232A",tex:"rangle",ttype:h},{input:"<<",tag:"mo",output:"\u2329",tex:null,ttype:b},{input:">>",tag:"mo",output:"\u232A",tex:null,ttype:h},{input:"{:",tag:"mo",output:"{:",tex:null,ttype:b,invisible:true},{input:":}",tag:"mo",output:":}",tex:null,ttype:h,invisible:true},{input:"int",tag:"mo",output:"\u222B",tex:null,ttype:c},{input:"dx",tag:"mi",output:"{:d x:}",tex:null,ttype:V},{input:"dy",tag:"mi",output:"{:d y:}",tex:null,ttype:V},{input:"dz",tag:"mi",output:"{:d z:}",tex:null,ttype:V},{input:"dt",tag:"mi",output:"{:d t:}",tex:null,ttype:V},{input:"oint",tag:"mo",output:"\u222E",tex:null,ttype:c},{input:"del",tag:"mo",output:"\u2202",tex:"partial",ttype:c},{input:"grad",tag:"mo",output:"\u2207",tex:"nabla",ttype:c},{input:"+-",tag:"mo",output:"\u00B1",tex:"pm",ttype:c},{input:"O/",tag:"mo",output:"\u2205",tex:"emptyset",ttype:c},{input:"oo",tag:"mo",output:"\u221E",tex:"infty",ttype:c},{input:"aleph",tag:"mo",output:"\u2135",tex:null,ttype:c},{input:"...",tag:"mo",output:"...",tex:"ldots",ttype:c},{input:":.",tag:"mo",output:"\u2234",tex:"therefore",ttype:c},{input:":'",tag:"mo",output:"\u2235",tex:"because",ttype:c},{input:"/_",tag:"mo",output:"\u2220",tex:"angle",ttype:c},{input:"/_\\",tag:"mo",output:"\u25B3",tex:"triangle",ttype:c},{input:"'",tag:"mo",output:"\u2032",tex:"prime",ttype:c},{input:"tilde",tag:"mover",output:"~",tex:null,ttype:A,acc:true},{input:"\\ ",tag:"mo",output:"\u00A0",tex:null,ttype:c},{input:"frown",tag:"mo",output:"\u2322",tex:null,ttype:c},{input:"quad",tag:"mo",output:"\u00A0\u00A0",tex:null,ttype:c},{input:"qquad",tag:"mo",output:"\u00A0\u00A0\u00A0\u00A0",tex:null,ttype:c},{input:"cdots",tag:"mo",output:"\u22EF",tex:null,ttype:c},{input:"vdots",tag:"mo",output:"\u22EE",tex:null,ttype:c},{input:"ddots",tag:"mo",output:"\u22F1",tex:null,ttype:c},{input:"diamond",tag:"mo",output:"\u22C4",tex:null,ttype:c},{input:"square",tag:"mo",output:"\u25A1",tex:null,ttype:c},{input:"|__",tag:"mo",output:"\u230A",tex:"lfloor",ttype:c},{input:"__|",tag:"mo",output:"\u230B",tex:"rfloor",ttype:c},{input:"|~",tag:"mo",output:"\u2308",tex:"lceiling",ttype:c},{input:"~|",tag:"mo",output:"\u2309",tex:"rceiling",ttype:c},{input:"CC",tag:"mo",output:"\u2102",tex:null,ttype:c},{input:"NN",tag:"mo",output:"\u2115",tex:null,ttype:c},{input:"QQ",tag:"mo",output:"\u211A",tex:null,ttype:c},{input:"RR",tag:"mo",output:"\u211D",tex:null,ttype:c},{input:"ZZ",tag:"mo",output:"\u2124",tex:null,ttype:c},{input:"f",tag:"mi",output:"f",tex:null,ttype:A,func:true},{input:"g",tag:"mi",output:"g",tex:null,ttype:A,func:true},{input:"lim",tag:"mo",output:"lim",tex:null,ttype:L},{input:"Lim",tag:"mo",output:"Lim",tex:null,ttype:L},{input:"sin",tag:"mo",output:"sin",tex:null,ttype:A,func:true},{input:"cos",tag:"mo",output:"cos",tex:null,ttype:A,func:true},{input:"tan",tag:"mo",output:"tan",tex:null,ttype:A,func:true},{input:"sinh",tag:"mo",output:"sinh",tex:null,ttype:A,func:true},{input:"cosh",tag:"mo",output:"cosh",tex:null,ttype:A,func:true},{input:"tanh",tag:"mo",output:"tanh",tex:null,ttype:A,func:true},{input:"cot",tag:"mo",output:"cot",tex:null,ttype:A,func:true},{input:"sec",tag:"mo",output:"sec",tex:null,ttype:A,func:true},{input:"csc",tag:"mo",output:"csc",tex:null,ttype:A,func:true},{input:"arcsin",tag:"mo",output:"arcsin",tex:null,ttype:A,func:true},{input:"arccos",tag:"mo",output:"arccos",tex:null,ttype:A,func:true},{input:"arctan",tag:"mo",output:"arctan",tex:null,ttype:A,func:true},{input:"coth",tag:"mo",output:"coth",tex:null,ttype:A,func:true},{input:"sech",tag:"mo",output:"sech",tex:null,ttype:A,func:true},{input:"csch",tag:"mo",output:"csch",tex:null,ttype:A,func:true},{input:"exp",tag:"mo",output:"exp",tex:null,ttype:A,func:true},{input:"abs",tag:"mo",output:"abs",tex:null,ttype:A,rewriteleftright:["|","|"]},{input:"norm",tag:"mo",output:"norm",tex:null,ttype:A,rewriteleftright:["\u2225","\u2225"]},{input:"floor",tag:"mo",output:"floor",tex:null,ttype:A,rewriteleftright:["\u230A","\u230B"]},{input:"ceil",tag:"mo",output:"ceil",tex:null,ttype:A,rewriteleftright:["\u2308","\u2309"]},{input:"log",tag:"mo",output:"log",tex:null,ttype:A,func:true},{input:"ln",tag:"mo",output:"ln",tex:null,ttype:A,func:true},{input:"det",tag:"mo",output:"det",tex:null,ttype:A,func:true},{input:"dim",tag:"mo",output:"dim",tex:null,ttype:c},{input:"mod",tag:"mo",output:"mod",tex:null,ttype:c},{input:"gcd",tag:"mo",output:"gcd",tex:null,ttype:A,func:true},{input:"lcm",tag:"mo",output:"lcm",tex:null,ttype:A,func:true},{input:"lub",tag:"mo",output:"lub",tex:null,ttype:c},{input:"glb",tag:"mo",output:"glb",tex:null,ttype:c},{input:"min",tag:"mo",output:"min",tex:null,ttype:L},{input:"max",tag:"mo",output:"max",tex:null,ttype:L},{input:"Sin",tag:"mo",output:"Sin",tex:null,ttype:A,func:true},{input:"Cos",tag:"mo",output:"Cos",tex:null,ttype:A,func:true},{input:"Tan",tag:"mo",output:"Tan",tex:null,ttype:A,func:true},{input:"Arcsin",tag:"mo",output:"Arcsin",tex:null,ttype:A,func:true},{input:"Arccos",tag:"mo",output:"Arccos",tex:null,ttype:A,func:true},{input:"Arctan",tag:"mo",output:"Arctan",tex:null,ttype:A,func:true},{input:"Sinh",tag:"mo",output:"Sinh",tex:null,ttype:A,func:true},{input:"Cosh",tag:"mo",output:"Cosh",tex:null,ttype:A,func:true},{input:"Tanh",tag:"mo",output:"Tanh",tex:null,ttype:A,func:true},{input:"Cot",tag:"mo",output:"Cot",tex:null,ttype:A,func:true},{input:"Sec",tag:"mo",output:"Sec",tex:null,ttype:A,func:true},{input:"Csc",tag:"mo",output:"Csc",tex:null,ttype:A,func:true},{input:"Log",tag:"mo",output:"Log",tex:null,ttype:A,func:true},{input:"Ln",tag:"mo",output:"Ln",tex:null,ttype:A,func:true},{input:"Abs",tag:"mo",output:"abs",tex:null,ttype:A,notexcopy:true,rewriteleftright:["|","|"]},{input:"uarr",tag:"mo",output:"\u2191",tex:"uparrow",ttype:c},{input:"darr",tag:"mo",output:"\u2193",tex:"downarrow",ttype:c},{input:"rarr",tag:"mo",output:"\u2192",tex:"rightarrow",ttype:c},{input:"->",tag:"mo",output:"\u2192",tex:"to",ttype:c},{input:">->",tag:"mo",output:"\u21A3",tex:"rightarrowtail",ttype:c},{input:"->>",tag:"mo",output:"\u21A0",tex:"twoheadrightarrow",ttype:c},{input:">->>",tag:"mo",output:"\u2916",tex:"twoheadrightarrowtail",ttype:c},{input:"|->",tag:"mo",output:"\u21A6",tex:"mapsto",ttype:c},{input:"larr",tag:"mo",output:"\u2190",tex:"leftarrow",ttype:c},{input:"harr",tag:"mo",output:"\u2194",tex:"leftrightarrow",ttype:c},{input:"rArr",tag:"mo",output:"\u21D2",tex:"Rightarrow",ttype:c},{input:"lArr",tag:"mo",output:"\u21D0",tex:"Leftarrow",ttype:c},{input:"hArr",tag:"mo",output:"\u21D4",tex:"Leftrightarrow",ttype:c},{input:"sqrt",tag:"msqrt",output:"sqrt",tex:null,ttype:A},{input:"root",tag:"mroot",output:"root",tex:null,ttype:U},{input:"frac",tag:"mfrac",output:"/",tex:null,ttype:U},{input:"/",tag:"mfrac",output:"/",tex:null,ttype:i},{input:"stackrel",tag:"mover",output:"stackrel",tex:null,ttype:U},{input:"overset",tag:"mover",output:"stackrel",tex:null,ttype:U},{input:"underset",tag:"munder",output:"stackrel",tex:null,ttype:U},{input:"_",tag:"msub",output:"_",tex:null,ttype:i},{input:"^",tag:"msup",output:"^",tex:null,ttype:i},{input:"hat",tag:"mover",output:"\u005E",tex:null,ttype:A,acc:true},{input:"bar",tag:"mover",output:"\u00AF",tex:"overline",ttype:A,acc:true},{input:"vec",tag:"mover",output:"\u2192",tex:null,ttype:A,acc:true},{input:"dot",tag:"mover",output:".",tex:null,ttype:A,acc:true},{input:"ddot",tag:"mover",output:"..",tex:null,ttype:A,acc:true},{input:"overarc",tag:"mover",output:"\u23DC",tex:"overparen",ttype:A,acc:true},{input:"ul",tag:"munder",output:"\u0332",tex:"underline",ttype:A,acc:true},{input:"ubrace",tag:"munder",output:"\u23DF",tex:"underbrace",ttype:K,acc:true},{input:"obrace",tag:"mover",output:"\u23DE",tex:"overbrace",ttype:K,acc:true},{input:"text",tag:"mtext",output:"text",tex:null,ttype:Y},{input:"mbox",tag:"mtext",output:"mbox",tex:null,ttype:Y},{input:"color",tag:"mstyle",ttype:U},{input:"id",tag:"mrow",ttype:U},{input:"class",tag:"mrow",ttype:U},{input:"cancel",tag:"menclose",output:"cancel",tex:null,ttype:A},k,{input:"bb",tag:"mstyle",atname:"mathvariant",atval:"bold",output:"bb",tex:null,ttype:A},{input:"mathbf",tag:"mstyle",atname:"mathvariant",atval:"bold",output:"mathbf",tex:null,ttype:A},{input:"sf",tag:"mstyle",atname:"mathvariant",atval:"sans-serif",output:"sf",tex:null,ttype:A},{input:"mathsf",tag:"mstyle",atname:"mathvariant",atval:"sans-serif",output:"mathsf",tex:null,ttype:A},{input:"bbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"bbb",tex:null,ttype:A,codes:w},{input:"mathbb",tag:"mstyle",atname:"mathvariant",atval:"double-struck",output:"mathbb",tex:null,ttype:A,codes:w},{input:"cc",tag:"mstyle",atname:"mathvariant",atval:"script",output:"cc",tex:null,ttype:A,codes:D},{input:"mathcal",tag:"mstyle",atname:"mathvariant",atval:"script",output:"mathcal",tex:null,ttype:A,codes:D},{input:"tt",tag:"mstyle",atname:"mathvariant",atval:"monospace",output:"tt",tex:null,ttype:A},{input:"mathtt",tag:"mstyle",atname:"mathvariant",atval:"monospace",output:"mathtt",tex:null,ttype:A},{input:"fr",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"fr",tex:null,ttype:A,codes:H},{input:"mathfrak",tag:"mstyle",atname:"mathvariant",atval:"fraktur",output:"mathfrak",tex:null,ttype:A,codes:H}];function T(ac,ab){if(ac.input>ab.input){return 1}else{return -1}}var S=[];function n(){var ac;var ab=z.length;for(ac=0;ac>1;if(ac[ab]=S[ab]}s=y;if(af!=""){y=z[ae].ttype;return z[ae]}y=c;ab=1;ak=ah.slice(0,1);var ai=true;while("0"<=ak&&ak<="9"&&ab<=ah.length){ak=ah.slice(ab,ab+1);ab++}if(ak==d){ak=ah.slice(ab,ab+1);if("0"<=ak&&ak<="9"){ai=false;ab++;while("0"<=ak&&ak<="9"&&ab<=ah.length){ak=ah.slice(ab,ab+1);ab++}}}if((ai&&ab>1)||ab>2){ak=ah.slice(0,ab-1);aj="mn"}else{ab=2;ak=ah.slice(0,1);aj=(("A">ak||ak>"Z")&&("a">ak||ak>"z")?"mo":"mi")}if(ak=="-"&&s==i){y=i;return{input:ak,tag:aj,output:ak,ttype:A,func:true}}return{input:ak,tag:aj,output:ak,ttype:c}}function R(ac){var ab;if(!ac.hasChildNodes()){return}if(ac.firstChild.hasChildNodes()&&(ac.nodeName=="mrow"||ac.nodeName=="M:MROW")){ab=ac.firstChild.firstChild.nodeValue;if(ab=="("||ab=="["||ab=="{"){ac.removeChild(ac.firstChild)}}if(ac.lastChild.hasChildNodes()&&(ac.nodeName=="mrow"||ac.nodeName=="M:MROW")){ab=ac.lastChild.firstChild.nodeValue;if(ab==")"||ab=="]"||ab=="}"){ac.removeChild(ac.lastChild)}}}var F,s,y;function G(ai){var ad,ac,al,af,ak,ag=e.createDocumentFragment();ai=p(ai,0);ad=j(ai);if(ad==null||ad.ttype==h&&F>0){return[null,ai]}if(ad.ttype==V){ai=ad.output+p(ai,ad.input.length);ad=j(ai)}switch(ad.ttype){case L:case c:ai=p(ai,ad.input.length);return[O(ad.tag,e.createTextNode(ad.output)),ai];case b:F++;ai=p(ai,ad.input.length);al=q(ai,true);F--;if(typeof ad.invisible=="boolean"&&ad.invisible){ac=O("mrow",al[0])}else{ac=O("mo",e.createTextNode(ad.output));ac=O("mrow",ac);ac.appendChild(al[0])}return[ac,al[1]];case Y:if(ad!=k){ai=p(ai,ad.input.length)}if(ai.charAt(0)=="{"){af=ai.indexOf("}")}else{if(ai.charAt(0)=="("){af=ai.indexOf(")")}else{if(ai.charAt(0)=="["){af=ai.indexOf("]")}else{if(ad==k){af=ai.slice(1).indexOf('"')+1}else{af=0}}}}if(af==-1){af=ai.length}ak=ai.slice(1,af);if(ak.charAt(0)==" "){ac=O("mspace");ac.setAttribute("width","1ex");ag.appendChild(ac)}ag.appendChild(O(ad.tag,e.createTextNode(ak)));if(ak.charAt(ak.length-1)==" "){ac=O("mspace");ac.setAttribute("width","1ex");ag.appendChild(ac)}ai=p(ai,af+1);return[O("mrow",ag),ai];case K:case A:ai=p(ai,ad.input.length);al=G(ai);if(al[0]==null){return[O(ad.tag,e.createTextNode(ad.output)),ai]}if(typeof ad.func=="boolean"&&ad.func){ak=ai.charAt(0);if(ak=="^"||ak=="_"||ak=="/"||ak=="|"||ak==","||(ad.input.length==1&&ad.input.match(/\w/)&&ak!="(")){return[O(ad.tag,e.createTextNode(ad.output)),ai]}else{ac=O("mrow",O(ad.tag,e.createTextNode(ad.output)));ac.appendChild(al[0]);return[ac,al[1]]}}R(al[0]);if(ad.input=="sqrt"){return[O(ad.tag,al[0]),al[1]]}else{if(typeof ad.rewriteleftright!="undefined"){ac=O("mrow",O("mo",e.createTextNode(ad.rewriteleftright[0])));ac.appendChild(al[0]);ac.appendChild(O("mo",e.createTextNode(ad.rewriteleftright[1])));return[ac,al[1]]}else{if(ad.input=="cancel"){ac=O(ad.tag,al[0]);ac.setAttribute("notation","updiagonalstrike");return[ac,al[1]]}else{if(typeof ad.acc=="boolean"&&ad.acc){ac=O(ad.tag,al[0]);var ah=O("mo",e.createTextNode(ad.output));if(ad.input=="vec"&&((al[0].nodeName=="mrow"&&al[0].childNodes.length==1&&al[0].firstChild.firstChild.nodeValue!==null&&al[0].firstChild.firstChild.nodeValue.length==1)||(al[0].firstChild.nodeValue!==null&&al[0].firstChild.nodeValue.length==1))){ah.setAttribute("stretchy",false)}ac.appendChild(ah);return[ac,al[1]]}else{if(!l&&typeof ad.codes!="undefined"){for(af=0;af64&&ak.charCodeAt(ae)<91){aj=aj+ad.codes[ak.charCodeAt(ae)-65]}else{if(ak.charCodeAt(ae)>96&&ak.charCodeAt(ae)<123){aj=aj+ad.codes[ak.charCodeAt(ae)-71]}else{aj=aj+ak.charAt(ae)}}}if(al[0].nodeName=="mi"){al[0]=O("mo").appendChild(e.createTextNode(aj))}else{al[0].replaceChild(O("mo").appendChild(e.createTextNode(aj)),al[0].childNodes[af])}}}}ac=O(ad.tag,al[0]);ac.setAttribute(ad.atname,ad.atval);return[ac,al[1]]}}}}case U:ai=p(ai,ad.input.length);al=G(ai);if(al[0]==null){return[O("mo",e.createTextNode(ad.input)),ai]}R(al[0]);var ab=G(al[1]);if(ab[0]==null){return[O("mo",e.createTextNode(ad.input)),ai]}R(ab[0]);if(["color","class","id"].indexOf(ad.input)>=0){if(ai.charAt(0)=="{"){af=ai.indexOf("}")}else{if(ai.charAt(0)=="("){af=ai.indexOf(")")}else{if(ai.charAt(0)=="["){af=ai.indexOf("]")}}}ak=ai.slice(1,af);ac=O(ad.tag,ab[0]);if(ad.input==="color"){ac.setAttribute("mathcolor",ak)}else{if(ad.input==="class"){ac.setAttribute("class",ak)}else{if(ad.input==="id"){ac.setAttribute("id",ak)}}}return[ac,ab[1]]}if(ad.input=="root"||ad.output=="stackrel"){ag.appendChild(ab[0])}ag.appendChild(al[0]);if(ad.input=="frac"){ag.appendChild(ab[0])}return[O(ad.tag,ag),ab[1]];case i:ai=p(ai,ad.input.length);return[O("mo",e.createTextNode(ad.output)),ai];case a:ai=p(ai,ad.input.length);ac=O("mspace");ac.setAttribute("width","1ex");ag.appendChild(ac);ag.appendChild(O(ad.tag,e.createTextNode(ad.output)));ac=O("mspace");ac.setAttribute("width","1ex");ag.appendChild(ac);return[O("mrow",ag),ai];case m:F++;ai=p(ai,ad.input.length);al=q(ai,false);F--;ak="";if(al[0].lastChild!=null){ak=al[0].lastChild.firstChild.nodeValue}if(ak=="|"&&ai.charAt(0)!==","){ac=O("mo",e.createTextNode(ad.output));ac=O("mrow",ac);ac.appendChild(al[0]);return[ac,al[1]]}else{ac=O("mo",e.createTextNode("\u2223"));ac=O("mrow",ac);return[ac,ai]}default:ai=p(ai,ad.input.length);return[O(ad.tag,e.createTextNode(ad.output)),ai]}}function t(ah){var af,ai,ag,ae,ab,ad;ah=p(ah,0);ai=j(ah);ab=G(ah);ae=ab[0];ah=ab[1];af=j(ah);if(af.ttype==i&&af.input!="/"){ah=p(ah,af.input.length);ab=G(ah);if(ab[0]==null){ab[0]=O("mo",e.createTextNode("\u25A1"))}else{R(ab[0])}ah=ab[1];ad=(ai.ttype==L||ai.ttype==K);if(af.input=="_"){ag=j(ah);if(ag.input=="^"){ah=p(ah,ag.input.length);var ac=G(ah);R(ac[0]);ah=ac[1];ae=O((ad?"munderover":"msubsup"),ae);ae.appendChild(ab[0]);ae.appendChild(ac[0]);ae=O("mrow",ae)}else{ae=O((ad?"munder":"msub"),ae);ae.appendChild(ab[0])}}else{if(af.input=="^"&&ad){ae=O("mover",ae);ae.appendChild(ab[0])}else{ae=O(af.tag,ae);ae.appendChild(ab[0])}}if(typeof ai.func!="undefined"&&ai.func){ag=j(ah);if(ag.ttype!=i&&ag.ttype!=h){ab=t(ah);ae=O("mrow",ae);ae.appendChild(ab[0]);ah=ab[1]}}}return[ae,ah]}function q(ak,aj){var ao,al,ag,ar,ah=e.createDocumentFragment();do{ak=p(ak,0);ag=t(ak);al=ag[0];ak=ag[1];ao=j(ak);if(ao.ttype==i&&ao.input=="/"){ak=p(ak,ao.input.length);ag=t(ak);if(ag[0]==null){ag[0]=O("mo",e.createTextNode("\u25A1"))}else{R(ag[0])}ak=ag[1];R(al);al=O(ao.tag,al);al.appendChild(ag[0]);ah.appendChild(al);ao=j(ak)}else{if(al!=undefined){ah.appendChild(al)}}}while((ao.ttype!=h&&(ao.ttype!=m||aj)||F==0)&&ao!=null&&ao.output!="");if(ao.ttype==h||ao.ttype==m){var at=ah.childNodes.length;if(at>0&&ah.childNodes[at-1].nodeName=="mrow"&&ah.childNodes[at-1].lastChild&&ah.childNodes[at-1].lastChild.firstChild){var av=ah.childNodes[at-1].lastChild.firstChild.nodeValue;if(av==")"||av=="]"){var ac=ah.childNodes[at-1].firstChild.firstChild.nodeValue;if(ac=="("&&av==")"&&ao.output!="}"||ac=="["&&av=="]"){var ad=[];var ap=true;var am=ah.childNodes.length;for(ar=0;ap&&ar1){ap=ad[ar].length==ad[ar-2].length}}ap=ap&&(ad.length>1||ad[0].length>0);var af=[];if(ap){var ae,ab,ai,an,au=e.createDocumentFragment();for(ar=0;ar2){ah.removeChild(ah.firstChild);ah.removeChild(ah.firstChild)}au.appendChild(O("mtr",ae))}al=O("mtable",au);al.setAttribute("columnlines",af.join(" "));if(typeof ao.invisible=="boolean"&&ao.invisible){al.setAttribute("columnalign","left")}ah.replaceChild(al,ah.firstChild)}}}}ak=p(ak,ao.input.length);if(typeof ao.invisible!="boolean"||!ao.invisible){al=O("mo",e.createTextNode(ao.output));ah.appendChild(al)}}return[ah,ak]}function M(ad,ac){var ae,ab;F=0;ad=ad.replace(/ /g,"");ad=ad.replace(/>/g,">");ad=ad.replace(/</g,"<");ae=q(ad.replace(/^\s+/g,""),false)[0];ab=O("mstyle",ae);if(C!=""){ab.setAttribute("mathcolor",C)}if(mathfontsize!=""){ab.setAttribute("fontsize",mathfontsize);ab.setAttribute("mathsize",mathfontsize)}if(mathfontfamily!=""){ab.setAttribute("fontfamily",mathfontfamily);ab.setAttribute("mathvariant",mathfontfamily)}if(o){ab.setAttribute("displaystyle","true")}ab=O("math",ab);if(v){ab.setAttribute("title",ad.replace(/\s+/g," "))}return ab}v=false;mathfontfamily="";C="";mathfontsize="";(function(){for(var ac=0,ab=z.length;ac *":{display:"table-row!important"},".MJXp-surd":{"vertical-align":"top"},".MJXp-surd > *":{display:"block!important"},".MJXp-script-box > * ":{display:"table!important",height:"50%"},".MJXp-script-box > * > *":{display:"table-cell!important","vertical-align":"top"},".MJXp-script-box > *:last-child > *":{"vertical-align":"bottom"},".MJXp-script-box > * > * > *":{display:"block!important"},".MJXp-mphantom":{visibility:"hidden"},".MJXp-munderover, .MJXp-munder":{display:"inline-table!important"},".MJXp-over":{display:"inline-block!important","text-align":"center"},".MJXp-over > *":{display:"block!important"},".MJXp-munderover > *, .MJXp-munder > *":{display:"table-row!important"},".MJXp-mtable":{"vertical-align":".25em",margin:"0 .125em"},".MJXp-mtable > *":{display:"inline-table!important","vertical-align":"middle"},".MJXp-mtr":{display:"table-row!important"},".MJXp-mtd":{display:"table-cell!important","text-align":"center",padding:".5em 0 0 .5em"},".MJXp-mtr > .MJXp-mtd:first-child":{"padding-left":0},".MJXp-mtr:first-child > .MJXp-mtd":{"padding-top":0},".MJXp-mlabeledtr":{display:"table-row!important"},".MJXp-mlabeledtr > .MJXp-mtd:first-child":{"padding-left":0},".MJXp-mlabeledtr:first-child > .MJXp-mtd":{"padding-top":0},".MJXp-merror":{"background-color":"#FFFF88",color:"#CC0000",border:"1px solid #CC0000",padding:"1px 3px","font-style":"normal","font-size":"90%"}};(function(){for(var n=0;n<10;n++){var o="scaleX(."+n+")";m[".MJXp-scale"+n]={"-webkit-transform":o,"-moz-transform":o,"-ms-transform":o,"-o-transform":o,transform:o}}})();var k=1000000;var c="V",l="H";g.Augment({settings:b.config.menuSettings,config:{styles:m},hideProcessedMath:false,maxStretchyParts:1000,Config:function(){if(!this.require){this.require=[]}this.SUPER(arguments).Config.call(this);var n=this.settings;if(n.scale){this.config.scale=n.scale}this.require.push(MathJax.OutputJax.extensionDir+"/MathEvents.js")},Startup:function(){j=MathJax.Extension.MathEvents.Event;a=MathJax.Extension.MathEvents.Touch;d=MathJax.Extension.MathEvents.Hover;this.ContextMenu=j.ContextMenu;this.Mousedown=j.AltContextMenu;this.Mouseover=d.Mouseover;this.Mouseout=d.Mouseout;this.Mousemove=d.Mousemove;var n=e.addElement(document.body,"div",{style:{width:"5in"}});this.pxPerInch=n.offsetWidth/5;n.parentNode.removeChild(n);return i.Styles(this.config.styles,["InitializePHTML",this])},InitializePHTML:function(){},preTranslate:function(p){var s=p.jax[this.id],t,q=s.length,u,r,v,o,n;for(t=0;tthis.PHTML.h){this.PHTML.h=q.PHTML.h}if(q.PHTML.d>this.PHTML.d){this.PHTML.d=q.PHTML.d}if(q.PHTML.t>this.PHTML.t){this.PHTML.t=q.PHTML.t}if(q.PHTML.b>this.PHTML.b){this.PHTML.b=q.PHTML.b}}}else{if(n.forceChild){e.addElement(p,"span")}}},PHTMLstretchChild:function(q,p,s){var r=this.data[q];if(r&&r.PHTMLcanStretch("Vertical",p,s)){var t=this.PHTML,o=r.PHTML,n=o.w;r.PHTMLstretchV(p,s);t.w+=o.w-n;if(o.h>t.h){t.h=o.h}if(o.d>t.d){t.d=o.d}}},PHTMLcreateSpan:function(n){if(!this.PHTML){this.PHTML={}}this.PHTML={w:0,h:0,d:0,l:0,r:0,t:0,b:0};if(this.inferred){return n}if(this.type==="mo"&&this.data.join("")==="\u222B"){g.lastIsInt=true}else{if(this.type!=="mspace"||this.width!=="negativethinmathspace"){g.lastIsInt=false}}if(!this.PHTMLspanID){this.PHTMLspanID=g.GetID()}var o=(this.id||"MJXp-Span-"+this.PHTMLspanID);return e.addElement(n,"span",{className:"MJXp-"+this.type,id:o})},PHTMLspanElement:function(){if(!this.PHTMLspanID){return null}return document.getElementById(this.id||"MJXp-Span-"+this.PHTMLspanID)},PHTMLhandleToken:function(o){var n=this.getValues("mathvariant");if(n.mathvariant!==h.VARIANT.NORMAL){o.className+=" "+g.VARIANT[n.mathvariant]}},PHTMLhandleStyle:function(n){if(this.style){n.style.cssText=this.style}},PHTMLhandleColor:function(n){if(this.mathcolor){n.style.color=this.mathcolor}if(this.mathbackground){n.style.backgroundColor=this.mathbackground}},PHTMLhandleScriptlevel:function(n){var o=this.Get("scriptlevel");if(o){n.className+=" MJXp-script"}},PHTMLhandleText:function(y,A){var v,p;var z=0,o=0,q=0;for(var s=0,r=A.length;s=55296&&p<56319){s++;p=(((p-55296)<<10)+(A.charCodeAt(s)-56320))+65536}var t=0.7,u=0.22,x=0.5;if(p<127){if(v.match(/[A-Za-ehik-or-xz0-9]/)){u=0}if(v.match(/[A-HK-Z]/)){x=0.67}else{if(v.match(/[IJ]/)){x=0.36}}if(v.match(/[acegm-su-z]/)){t=0.45}else{if(v.match(/[ij]/)){t=0.75}}if(v.match(/[ijlt]/)){x=0.28}}if(g.DELIMITERS[v]){x=g.DELIMITERS[v].w||0.4}if(t>z){z=t}if(u>o){o=u}q+=x}if(!this.CHML){this.PHTML={}}this.PHTML={h:0.9,d:0.3,w:q,l:0,r:0,t:z,b:o};e.addText(y,A)},PHTMLbboxFor:function(o){if(this.data[o]&&this.data[o].PHTML){return this.data[o].PHTML}return{w:0,h:0,d:0,l:0,r:0,t:0,b:0}},PHTMLcanStretch:function(q,o,p){if(this.isEmbellished()){var n=this.Core();if(n&&n!==this){return n.PHTMLcanStretch(q,o,p)}}return false},PHTMLstretchV:function(n,o){},PHTMLstretchH:function(n){},CoreParent:function(){var n=this;while(n&&n.isEmbellished()&&n.CoreMO()===this&&!n.isa(h.math)){n=n.Parent()}return n},CoreText:function(n){if(!n){return""}if(n.isEmbellished()){return n.CoreMO().data.join("")}while((n.isa(h.mrow)||n.isa(h.TeXAtom)||n.isa(h.mstyle)||n.isa(h.mphantom))&&n.data.length===1&&n.data[0]){n=n.data[0]}if(!n.isToken){return""}else{return n.data.join("")}}});h.chars.Augment({toPreviewHTML:function(n){var o=this.toString().replace(/[\u2061-\u2064]/g,"");this.PHTMLhandleText(n,o)}});h.entity.Augment({toPreviewHTML:function(n){var o=this.toString().replace(/[\u2061-\u2064]/g,"");this.PHTMLhandleText(n,o)}});h.math.Augment({toPreviewHTML:function(n){n=this.PHTMLdefaultSpan(n);if(this.Get("display")==="block"){n.className+=" MJXp-display"}return n}});h.mo.Augment({toPreviewHTML:function(o){o=this.PHTMLdefaultSpan(o);this.PHTMLadjustAccent(o);var n=this.getValues("lspace","rspace","scriptlevel","displaystyle","largeop");if(n.scriptlevel===0){this.PHTML.l=g.length2em(n.lspace);this.PHTML.r=g.length2em(n.rspace);o.style.marginLeft=g.Em(this.PHTML.l);o.style.marginRight=g.Em(this.PHTML.r)}else{this.PHTML.l=0.15;this.PHTML.r=0.1}if(n.displaystyle&&n.largeop){var p=e.Element("span",{className:"MJXp-largeop"});p.appendChild(o.firstChild);o.appendChild(p);this.PHTML.h*=1.2;this.PHTML.d*=1.2;if(this.data.join("")==="\u222B"){p.className+=" MJXp-int"}}return o},PHTMLadjustAccent:function(p){var o=this.CoreParent();if(o&&o.isa(h.munderover)&&this.CoreText(o.data[o.base]).length===1){var q=o.data[o.over],n=o.data[o.under];var s=this.data.join(""),r;if(q&&this===q.CoreMO()&&o.Get("accent")){r=g.REMAPACCENT[s]}else{if(n&&this===n.CoreMO()&&o.Get("accentunder")){r=g.REMAPACCENTUNDER[s]}}if(r){s=p.innerHTML=r}if(s.match(/[\u02C6-\u02DC\u00A8]/)){this.PHTML.acc=-0.52}else{if(s==="\u2192"){this.PHTML.acc=-0.15;this.PHTML.vec=true}}}},PHTMLcanStretch:function(q,o,p){if(!this.Get("stretchy")){return false}var r=this.data.join("");if(r.length>1){return false}r=g.DELIMITERS[r];var n=(r&&r.dir===q.substr(0,1));if(n){n=(this.PHTML.h!==o||this.PHTML.d!==p||(this.Get("minsize",true)||this.Get("maxsize",true)))}return n},PHTMLstretchV:function(p,u){var o=this.PHTMLspanElement(),t=this.PHTML;var n=this.getValues("symmetric","maxsize","minsize");if(n.symmetric){l=2*Math.max(p-0.25,u+0.25)}else{l=p+u}n.maxsize=g.length2em(n.maxsize,t.h+t.d);n.minsize=g.length2em(n.minsize,t.h+t.d);l=Math.max(n.minsize,Math.min(n.maxsize,l));var s=l/(t.h+t.d-0.3);var q=e.Element("span",{style:{"font-size":g.Em(s)}});if(s>1.25){var r=Math.ceil(1.25/s*10);q.className="MJXp-right MJXp-scale"+r;q.style.marginLeft=g.Em(t.w*(r/10-1)+0.07);t.w*=s*r/10}q.appendChild(o.firstChild);o.appendChild(q);if(n.symmetric){o.style.verticalAlign=g.Em(0.25*(1-s))}}});h.mspace.Augment({toPreviewHTML:function(q){q=this.PHTMLdefaultSpan(q);var o=this.getValues("height","depth","width");var n=g.length2em(o.width),p=g.length2em(o.height),s=g.length2em(o.depth);var r=this.PHTML;r.w=n;r.h=p;r.d=s;if(n<0){if(!g.lastIsInt){q.style.marginLeft=g.Em(n)}n=0}q.style.width=g.Em(n);q.style.height=g.Em(p+s);if(s){q.style.verticalAlign=g.Em(-s)}return q}});h.mpadded.Augment({toPreviewHTML:function(u){u=this.PHTMLdefaultSpan(u,{childSpans:true,className:"MJXp-box",forceChild:true});var o=u.firstChild;var v=this.getValues("width","height","depth","lspace","voffset");var s=this.PHTMLdimen(v.lspace);var q=0,n=0,t=s.len,r=-s.len,p=0;if(v.width!==""){s=this.PHTMLdimen(v.width,"w",0);if(s.pm){r+=s.len}else{u.style.width=g.Em(s.len)}}if(v.height!==""){s=this.PHTMLdimen(v.height,"h",0);if(!s.pm){q+=-this.PHTMLbboxFor(0).h}q+=s.len}if(v.depth!==""){s=this.PHTMLdimen(v.depth,"d",0);if(!s.pm){n+=-this.PHTMLbboxFor(0).d;p+=-s.len}n+=s.len}if(v.voffset!==""){s=this.PHTMLdimen(v.voffset);q-=s.len;n+=s.len;p+=s.len}if(q){o.style.marginTop=g.Em(q)}if(n){o.style.marginBottom=g.Em(n)}if(t){o.style.marginLeft=g.Em(t)}if(r){o.style.marginRight=g.Em(r)}if(p){u.style.verticalAlign=g.Em(p)}return u},PHTMLdimen:function(q,r,n){if(n==null){n=-k}q=String(q);var o=q.match(/width|height|depth/);var p=(o?this.PHTML[o[0].charAt(0)]:(r?this.PHTML[r]:0));return{len:g.length2em(q,p)||0,pm:!!q.match(/^[-+]/)}}});h.munderover.Augment({toPreviewHTML:function(r){var t=this.getValues("displaystyle","accent","accentunder","align");var n=this.data[this.base];if(!t.displaystyle&&n!=null&&(n.movablelimits||n.CoreMO().Get("movablelimits"))){r=h.msubsup.prototype.toPreviewHTML.call(this,r);r.className=r.className.replace(/munderover/,"msubsup");return r}r=this.PHTMLdefaultSpan(r,{childSpans:true,className:"",noBBox:true});var p=this.PHTMLbboxFor(this.over),v=this.PHTMLbboxFor(this.under),u=this.PHTMLbboxFor(this.base),s=this.PHTML,o=p.acc;if(this.data[this.over]){if(r.lastChild.firstChild){r.lastChild.firstChild.style.marginLeft=p.l=r.lastChild.firstChild.style.marginRight=p.r=0}var q=e.Element("span",{},[["span",{className:"MJXp-over"}]]);q.firstChild.appendChild(r.lastChild);if(r.childNodes.length>(this.data[this.under]?1:0)){q.firstChild.appendChild(r.firstChild)}this.data[this.over].PHTMLhandleScriptlevel(q.firstChild.firstChild);if(o!=null){if(p.vec){q.firstChild.firstChild.firstChild.style.fontSize="60%";p.h*=0.6;p.d*=0.6;p.w*=0.6}o=o-p.d+0.1;if(u.t!=null){o+=u.t-u.h}q.firstChild.firstChild.style.marginBottom=g.Em(o)}if(r.firstChild){r.insertBefore(q,r.firstChild)}else{r.appendChild(q)}}if(this.data[this.under]){if(r.lastChild.firstChild){r.lastChild.firstChild.style.marginLeft=v.l=r.lastChild.firstChild.marginRight=v.r=0}this.data[this.under].PHTMLhandleScriptlevel(r.lastChild)}s.w=Math.max(0.8*p.w,0.8*v.w,u.w);s.h=0.8*(p.h+p.d+(o||0))+u.h;s.d=u.d+0.8*(v.h+v.d);return r}});h.msubsup.Augment({toPreviewHTML:function(q){q=this.PHTMLdefaultSpan(q,{noBBox:true});if(!this.data[this.base]){if(q.firstChild){q.insertBefore(e.Element("span"),q.firstChild)}else{q.appendChild(e.Element("span"))}}var s=this.data[this.base],p=this.data[this.sub],n=this.data[this.sup];if(!s){s={bbox:{h:0.8,d:0.2}}}q.firstChild.style.marginRight=".05em";var o=Math.max(0.4,s.PHTML.h-0.4),u=Math.max(0.2,s.PHTML.d+0.1);var t=this.PHTML;if(n&&p){var r=e.Element("span",{className:"MJXp-script-box",style:{height:g.Em(o+n.PHTML.h*0.8+u+p.PHTML.d*0.8),"vertical-align":g.Em(-u-p.PHTML.d*0.8)}},[["span",{},[["span",{},[["span",{style:{"margin-bottom":g.Em(-(n.PHTML.d-0.05))}}]]]]],["span",{},[["span",{},[["span",{style:{"margin-top":g.Em(-(n.PHTML.h-0.05))}}]]]]]]);p.PHTMLhandleScriptlevel(r.firstChild);n.PHTMLhandleScriptlevel(r.lastChild);r.firstChild.firstChild.firstChild.appendChild(q.lastChild);r.lastChild.firstChild.firstChild.appendChild(q.lastChild);q.appendChild(r);t.h=Math.max(s.PHTML.h,n.PHTML.h*0.8+o);t.d=Math.max(s.PHTML.d,p.PHTML.d*0.8+u);t.w=s.PHTML.w+Math.max(n.PHTML.w,p.PHTML.w)+0.07}else{if(n){q.lastChild.style.verticalAlign=g.Em(o);n.PHTMLhandleScriptlevel(q.lastChild);t.h=Math.max(s.PHTML.h,n.PHTML.h*0.8+o);t.d=Math.max(s.PHTML.d,n.PHTML.d*0.8-o);t.w=s.PHTML.w+n.PHTML.w+0.07}else{if(p){q.lastChild.style.verticalAlign=g.Em(-u);p.PHTMLhandleScriptlevel(q.lastChild);t.h=Math.max(s.PHTML.h,p.PHTML.h*0.8-u);t.d=Math.max(s.PHTML.d,p.PHTML.d*0.8+u);t.w=s.PHTML.w+p.PHTML.w+0.07}}}return q}});h.mfrac.Augment({toPreviewHTML:function(r){r=this.PHTMLdefaultSpan(r,{childSpans:true,className:"MJXp-box",forceChild:true,noBBox:true});var o=this.getValues("linethickness","displaystyle");if(!o.displaystyle){if(this.data[0]){this.data[0].PHTMLhandleScriptlevel(r.firstChild)}if(this.data[1]){this.data[1].PHTMLhandleScriptlevel(r.lastChild)}}var n=e.Element("span",{className:"MJXp-box"},[["span",{className:"MJXp-denom"},[["span",{},[["span",{className:"MJXp-rule",style:{height:"1em"}}]]],["span"]]]]);n.firstChild.lastChild.appendChild(r.lastChild);r.appendChild(n);var s=this.PHTMLbboxFor(0),p=this.PHTMLbboxFor(1),v=this.PHTML;v.w=Math.max(s.w,p.w)*0.8;v.h=s.h+s.d+0.1+0.25;v.d=p.h+p.d-0.25;v.l=v.r=0.125;o.linethickness=Math.max(0,g.length2em(o.linethickness||"0",0));if(o.linethickness){var u=n.firstChild.firstChild.firstChild;var q=g.Em(o.linethickness);u.style.borderTop="none";u.style.borderBottom=(o.linethickness<0.15?"1px":q)+" solid";u.style.margin=q+" 0";q=o.linethickness;n.style.marginTop=g.Em(3*q-1.2);r.style.verticalAlign=g.Em(1.5*q+0.1);v.h+=1.5*q-0.1;v.d+=1.5*q}else{n.style.marginTop="-.7em"}return r}});h.msqrt.Augment({toPreviewHTML:function(n){n=this.PHTMLdefaultSpan(n,{childSpans:true,className:"MJXp-box",forceChild:true,noBBox:true});this.PHTMLlayoutRoot(n,n.firstChild);return n},PHTMLlayoutRoot:function(u,n){var v=this.PHTMLbboxFor(0);var q=Math.ceil((v.h+v.d+0.14)*100),w=g.Em(14/q);var r=e.Element("span",{className:"MJXp-surd"},[["span",{style:{"font-size":q+"%","margin-top":w}},["\u221A"]]]);var s=e.Element("span",{className:"MJXp-root"},[["span",{className:"MJXp-rule",style:{"border-top":".08em solid"}}]]);var p=(1.2/2.2)*q/100;if(q>150){var o=Math.ceil(150/q*10);r.firstChild.className="MJXp-right MJXp-scale"+o;r.firstChild.style.marginLeft=g.Em(p*(o/10-1)/q*100);p=p*o/10;s.firstChild.style.borderTopWidth=g.Em(0.08/Math.sqrt(o/10))}s.appendChild(n);u.appendChild(r);u.appendChild(s);this.PHTML.h=v.h+0.18;this.PHTML.d=v.d;this.PHTML.w=v.w+p;return u}});h.mroot.Augment({toPreviewHTML:function(q){q=this.PHTMLdefaultSpan(q,{childSpans:true,className:"MJXp-box",forceChild:true,noBBox:true});var p=this.PHTMLbboxFor(1),n=q.removeChild(q.lastChild);var t=this.PHTMLlayoutRoot(e.Element("span"),q.firstChild);n.className="MJXp-script";var u=parseInt(t.firstChild.firstChild.style.fontSize);var o=0.55*(u/120)+p.d*0.8,s=-0.6*(u/120);if(u>150){s*=0.95*Math.ceil(150/u*10)/10}n.style.marginRight=g.Em(s);n.style.verticalAlign=g.Em(o);if(-s>p.w*0.8){n.style.marginLeft=g.Em(-s-p.w*0.8)}q.appendChild(n);q.appendChild(t);this.PHTML.w+=Math.max(0,p.w*0.8+s);this.PHTML.h=Math.max(this.PHTML.h,p.h*0.8+o);return q},PHTMLlayoutRoot:h.msqrt.prototype.PHTMLlayoutRoot});h.mfenced.Augment({toPreviewHTML:function(q){q=this.PHTMLcreateSpan(q);this.PHTMLhandleStyle(q);this.PHTMLhandleColor(q);this.addFakeNodes();this.PHTMLaddChild(q,"open",{});for(var p=0,n=this.data.length;ps){s=x.w}}}var o=this.PHTML;o.w=s;o.h=y/2+0.25;o.d=y/2-0.25;o.l=o.r=0.125;return E}});h.mlabeledtr.Augment({PHTMLdefaultSpan:function(q,o){if(!o){o={}}q=this.PHTMLcreateSpan(q);this.PHTMLhandleStyle(q);this.PHTMLhandleColor(q);if(this.isToken){this.PHTMLhandleToken(q)}for(var p=1,n=this.data.length;p/g,"")}catch(k){if(!k.restart){throw k}return MathJax.Callback.After(["HandleMML",this,l],k.restart)}n.setAttribute("data-mathml",i);j=f.addElement(n,"span",{isMathJax:true,unselectable:"on",className:"MJX_Assistive_MathML"+(h.root.Get("display")==="block"?" MJX_Assistive_MathML_Block":"")});try{j.innerHTML=i}catch(k){}n.style.position="relative";n.setAttribute("role","presentation");n.firstChild.setAttribute("aria-hidden","true");j.setAttribute("role","presentation")}l.i++}l.callback()}};b.Startup.signal.Post("AssistiveMML Ready")})(MathJax.Ajax,MathJax.Callback,MathJax.Hub,MathJax.HTML);MathJax.Callback.Queue(["Require",MathJax.Ajax,"[MathJax]/extensions/toMathML.js"],["loadComplete",MathJax.Ajax,"[MathJax]/extensions/AssistiveMML.js"],function(){MathJax.Hub.Register.StartupHook("End Config",["Config",MathJax.Extension.AssistiveMML])}); +!function(a,b){var c,d,e=a.config.menuSettings,f=Function.prototype.bind?function(a,b){return a.bind(b)}:function(a,b){return function(){a.apply(b,arguments)}},g=Object.keys||function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b},h=MathJax.Ajax.config.path;h.a11y||(h.a11y=a.config.root+"/extensions/a11y");var i=b["accessibility-menu"]={version:"1.5.0",prefix:"",defaults:{},modules:[],MakeOption:function(a){return i.prefix+a},GetOption:function(a){return e[i.MakeOption(a)]},AddDefaults:function(){for(var a,b=g(i.defaults),c=0;a=b[c];c++){var d=i.MakeOption(a);void 0===e[d]&&(e[d]=i.defaults[a])}},AddMenu:function(){for(var a,b=Array(this.modules.length),e=0;a=this.modules[e];e++)b[e]=a.placeHolder;var f=d.FindId("Accessibility");if(f)b.unshift(c.RULE()),f.submenu.items.push.apply(f.submenu.items,b);else{var g=(d.FindId("Settings","Renderer")||{}).submenu;g&&(b.unshift(c.RULE()),b.unshift(g.items.pop()),b.unshift(g.items.pop())),b.unshift("Accessibility");var f=c.SUBMENU.apply(c.SUBMENU,b),h=d.IndexOfId("Locale");h?d.items.splice(h,0,f):d.items.push(c.RULE(),f)}},Register:function(a){i.defaults[a.option]=!1,i.modules.push(a)},Startup:function(){c=MathJax.Menu.ITEM,d=MathJax.Menu.menu;for(var a,b=0;a=this.modules[b];b++)a.CreateMenu();this.AddMenu()},LoadExtensions:function(){for(var b,c=[],d=0;b=this.modules[d];d++)e[b.option]&&c.push(b.module);return c.length?a.Startup.loadArray(c):null}},j=MathJax.Extension.ModuleLoader=MathJax.Object.Subclass({option:"",name:["",""],module:"",placeHolder:null,submenu:!1,extension:null,Init:function(a,b,c,d,e){this.option=a,this.name=[b.replace(/ /g,""),b],this.module=c,this.extension=d,this.submenu=e||!1},CreateMenu:function(){var a=f(this.Load,this);this.submenu?this.placeHolder=c.SUBMENU(this.name,c.CHECKBOX(["Activate","Activate"],i.MakeOption(this.option),{action:a}),c.RULE(),c.COMMAND(["OptionsWhenActive","(Options when Active)"],null,{disabled:!0})):this.placeHolder=c.CHECKBOX(this.name,i.MakeOption(this.option),{action:a})},Load:function(){a.Queue(["Require",MathJax.Ajax,this.module,["Enable",this]])},Enable:function(a){var b=MathJax.Extension[this.extension];b&&(b.Enable(!0,!0),MathJax.Menu.saveCookie())}});i.Register(j("collapsible","Collapsible Math","[a11y]/collapsible.js","collapsible")),i.Register(j("autocollapse","Auto Collapse","[a11y]/auto-collapse.js","auto-collapse")),i.Register(j("explorer","Explorer","[a11y]/explorer.js","explorer",!0)),i.AddDefaults(),a.Register.StartupHook("End Extensions",function(){a.Register.StartupHook("MathMenu Ready",function(){i.Startup(),a.Startup.signal.Post("Accessibility Menu Ready")},5)},5),MathJax.Hub.Register.StartupHook("End Cookie",function(){MathJax.Callback.Queue(["LoadExtensions",i],["loadComplete",MathJax.Ajax,"[a11y]/accessibility-menu.js"])})}(MathJax.Hub,MathJax.Extension);MathJax.Ajax.loadComplete("[MathJax]/config/TeX-MML-AM_CHTML.js"); diff --git a/mathjax/asset/config/default.js b/mathjax/asset/config/default.js new file mode 100644 index 000000000..a4120d487 --- /dev/null +++ b/mathjax/asset/config/default.js @@ -0,0 +1,1104 @@ +/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ + +/************************************************************* + * + * MathJax/config/default.js + * + * This configuration file is loaded when you load MathJax + * via + * + * Use it to customize the MathJax settings. See comments below. + * + * --------------------------------------------------------------------- + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +/* + * This file lists most, but not all, of the options that can be set for + * MathJax and its various components. Some additional options are + * available, however, and are listed in the various links at: + * + * http://www.mathjax.org/resources/docs/?configuration.html#configuration-options-by-component + * + * You can add these to the configuration object below if you + * want to change them from their default values. + */ + +MathJax.Hub.Config({ + + // + // A comma-separated list of configuration files to load + // when MathJax starts up. E.g., to define local macros, etc. + // The default directory is the MathJax/config directory. + // + // Example: config: ["local/local.js"], + // Example: config: ["local/local.js","MMLtoHTML.js"], + // + config: [], + + // + // A comma-separated list of CSS stylesheet files to be loaded + // when MathJax starts up. The default directory is the + // MathJax/config directory. + // + // Example: styleSheets: ["MathJax.css"], + // + styleSheets: [], + + // + // Styles to be defined dynamically at startup time. + // + // Example: + // styles: { + // ".MathJax_Preview": { + // color: "#888" + // } + // }, + // + styles: {}, + + // + // A comma-separated list of input and output jax to initialize at startup. + // Their main code is loaded only when they are actually used, so it is not + // inefficient to include jax that may not actually be used on the page. These + // are found in the MathJax/jax directory. The choices include + // + // input/TeX + // input/MathML + // input/AsciiMath + // + // output/HTML-CSS + // output/NativeMML + // output/SVG + // + // If you change the input jax, you may need to include the appropriate + // preprocessor in the extensions array below. + // + jax: ["input/TeX", "output/HTML-CSS"], + + // + // A comma-separated list of extensions to load at startup. The default + // directory is MathJax/extensions. + // + // Example: extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js"], + // + // You may wish to include "mml2jax.js" if you are using "input/MathML" in the + // jax array above, and "asciimath2jax.js" if you using "input/AsciiMath". + // Include "jsmath2jax.js" if you are converting from using jsMath to MathJax. + // + extensions: ["tex2jax.js"], + + // + // Patterns to remove from before and after math script tags. If you are not + // using one of the preprocessors (e.g., tex2jax), you need to insert something + // extra into your HTML file in order to avoid a bug in Internet Explorer. IE + // removes spaces from the DOM that it thinks are redundent, and since a SCRIPT + // tag usually doesn't add content to the page, if there is a space before and after + // a MathJax SCRIPT tag, IE will remove the first space. When MathJax inserts + // the typeset mathematics, this means there will be no space before it and the + // preceding text. In order to avoid this, you should include some "guard characters" + // before or after the math SCRIPT tag; define the patterns you want to use below. + // Note that these are used as regular expressions, so you will need to quote + // special characters. Furthermore, since they are javascript strings, you must + // quote javascript special characters as well. So to obtain a backslash, you must + // use \\ (doubled for javascript). For example, "\\[" is the pattern \[ in the + // regular expression. That means that if you want an actual backslash in your + // guard characters, you need to use "\\\\" in order to get \\ in the regular + // expression, and \ in the actual text. If both preJax and postJax are defined, + // both must be present in order to be removed. + // + // See also the preRemoveClass comments below. + // + // Example: + // preJax: "\\\\\\\\", // makes a double backslash the preJax text + // or + // preJax: "\\[\\[", // jax scripts must be enclosed in double brackets + // postJax: "\\]\\]", + // + preJax: null, + postJax: null, + + // + // The CSS class for a math preview to be removed preceding a MathJax + // SCRIPT tag. If the tag just before the MathJax SCRIPT tag is of this + // class, its contents are removed when MathJax processes the SCRIPT + // tag. This allows you to include a math preview in a form that will + // be displayed prior to MathJax performing its typesetting. It also + // avoids the Internet Explorer space-removal bug, and can be used in + // place of preJax and postJax if that is more convenient. + // + // For example + // + // [math] + // + // would display "[math]" in place of the math until MathJax is able to typeset it. + // + preRemoveClass: "MathJax_Preview", + + // + // This value controls whether the "Processing Math: nn%" message are displayed + // in the lower left-hand corner. Set to "false" to prevent those messages (though + // file loading and other messages will still be shown). + // + showProcessingMessages: true, + + // + // This value controls the verbosity of the messages in the lower left-hand corner. + // Set it to "none" to eliminate all messages, or set it to "simple" to show + // "Loading..." and "Processing..." rather than showing the full file name and the + // percentage of the mathematics processed. + // + messageStyle: "normal", + + // + // These two parameters control the alignment and shifting of displayed equations. + // The first can be "left", "center", or "right", and determines the alignment of + // displayed equations. When the alignment is not "center", the second determines + // an indentation from the left or right side for the displayed equations. When + // the alignment is "center", the indent allows you to shift the center to the right + // or left (negative is left). + // + displayAlign: "center", + displayIndent: "0", + + // + // Normally MathJax will perform its starup commands (loading of + // configuration, styles, jax, and so on) as soon as it can. If you + // expect to be doing additional configuration on the page, however, you + // may want to have it wait until the page's onload hander is called. If so, + // set this to "onload". + // + delayStartupUntil: "none", + + // + // Normally MathJax will typeset the mathematics on the page as soon as + // the page is loaded. If you want to delay that process, in which case + // you will need to call MathJax.Hub.Typeset() yourself by hand, set + // this value to true. + // + skipStartupTypeset: false, + + // + // A list of element ID's that are the ones to process for mathematics + // when any of the Hub typesetting calls (Typeset, Process, Update, etc) + // are called with no element specified. This lets you restrict the + // processing to particular containers rather than scanning the entire + // document for mathematics. If none are supplied, the entire document + // is processed. + // + elements: [], + + // + // Since typesetting usually changes the vertical dimensions of the + // page, if the URL contains an anchor position you may no longer be + // positioned at the correct position on the page, so MathJax can + // reposition to that location after it completes its initial + // typesetting of the page. This value controls whether MathJax will + // reposition the browser to the #hash location from the page URL after + // typesetting for the page. + // + positionToHash: true, + + // + // These control whether to attach the MathJax contextual menu to the + // expressions typeset by MathJax. Since the code for handling + // MathPlayer in Internet Explorer is somewhat delicate, it is + // controlled separately via (showMathMenuMSIE). The latter is now + // deprecated in favor of the MathJax contextual menu settings for + // MathPlayer. + // + // These values used to be listed in the separate output jax, but + // have been moved to this more central location since they are shared + // by all output jax. + // + showMathMenu: true, + showMathMenuMSIE: true, + + + // + // The default settings for the MathJax contextual menu (overridden by + // the MathJax cookie when users change the menu settings). + // + menuSettings: { + zoom: "None", // when to do MathZoom + CTRL: false, // require CTRL for MathZoom? + ALT: false, // require Alt or Option? + CMD: false, // require CMD? + Shift: false, // require Shift? + discoverable: false, // make math menu discoverable on hover? + zscale: "200%", // the scaling factor for MathZoom + renderer: null, // set when Jax are loaded + font: "Auto", // what font HTML-CSS should use + context: "MathJax", // or "Browser" for pass-through to browser menu + locale: null, // the language to use for messages + mpContext: false, // true means pass menu events to MathPlayer in IE + mpMouse: false, // true means pass mouse events to MathPlayer in IE + texHints: true, // include class names for TeXAtom elements + FastPreview: null, // use PreviewHTML output as preview? + assistiveMML: null, // include hidden MathML for screen readers? + inTabOrder: true, // set to true if math elements should be included in the tabindex + semantics: false // add semantics tag with original form in MathML output + }, + + // + // The message and style for when there is a processing error handling + // the mathematics (something has gone wrong with the input or output + // jax that prevents it from operating properly). + // + errorSettings: { + message: ["[",["MathProcessingError","Math Processing Error"],"]"], + style: {color: "#CC0000", "font-style":"italic"} // style for message + }, + + + //============================================================================ + // + // These parameters control the tex2jax preprocessor (when you have included + // "tex2jax.js" in the extensions list above). + // + tex2jax: { + + // + // The delimiters that surround in-line math expressions. The first in each + // pair is the initial delimiter and the second is the terminal delimiter. + // Comment out any that you don't want, but be sure there is no extra + // comma at the end of the last item in the list -- some browsers won't + // be able to handle that. + // + inlineMath: [ +// ['$','$'], // uncomment this for standard TeX math delimiters + ['\\(','\\)'] + ], + + // + // The delimiters that surround displayed math expressions. The first in each + // pair is the initial delimiter and the second is the terminal delimiter. + // Comment out any that you don't want, but be sure there is no extra + // comma at the end of the last item in the list -- some browsers won't + // be able to handle that. + // + displayMath: [ + ['$$','$$'], + ['\\[','\\]'] + ], + + // + // This array lists the names of the tags whose contents should not be + // processed by tex2jax (other than to look for ignore/process classes + // as listed below). You can add to (or remove from) this list to prevent + // MathJax from processing mathematics in specific contexts. + // + skipTags: ["script","noscript","style","textarea","pre","code","annotation","annotation-xml"], + + // + // This is the class name used to mark elements whose contents should + // not be processed by tex2jax (other than to look for the + // processClass pattern below). Note that this is a regular + // expression, and so you need to be sure to quote any regexp special + // characters. The pattern is automatically preceded by '(^| )(' and + // followed by ')( |$)', so your pattern will have to match full words + // in the class name. Assigning an element this class name will + // prevent `tex2jax` from processing its contents. + // + ignoreClass: "tex2jax_ignore", + + // + // This is the class name used to mark elements whose contents SHOULD + // be processed by tex2jax. This is used to turn on processing within + // tags that have been marked as ignored or skipped above. Note that + // this is a regular expression, and so you need to be sure to quote + // any regexp special characters. The pattern is automatically + // preceded by '(^| )(' and followed by ')( |$)', so your pattern + // will have to match full words in the class name. Use this to + // restart processing within an element that has been marked as + // ignored above. + // + processClass: "tex2jax_process", + + // + // Set to "true" to allow \$ to produce a dollar without starting in-line + // math mode. If you uncomment the ['$','$'] line above, you should change + // this to true so that you can insert plain dollar signs into your documents + // + processEscapes: false, + + // + // Controls whether tex2jax processes LaTeX environments outside of math + // mode. Set to "false" to prevent processing of environments except within + // math mode. + // + processEnvironments: true, + + // + // Controls whether tex2jax processes \ref{...} commands outside + // of math mode. Set to "false" to prevent processing of \ref + // except within math mode. + // + processRefs: true, + + // + // Controls whether tex2jax inserts MathJax_Preview spans to make a + // preview available, and what preview to use, when it locates in-line + // and display mathetics on the page. The default is "TeX", which + // means use the TeX code as the preview (until it is processed by + // MathJax). Set to "none" to prevent the previews from being + // inserted (the math will simply disappear until it is typeset). Set + // to an array containing the description of an HTML snippet in order + // to use the same preview for all equations on the page (e.g., you + // could have it say "[math]" or load an image). + // + // E.g., preview: ["[math]"], + // or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]] + // + preview: "TeX" + + }, + + //============================================================================ + // + // These parameters control the asciimath2jax preprocessor (when you have included + // "asciimath2jax.js" in the extensions list above). + // + asciimath2jax: { + + // + // The delimiters that surround asciimath expressions. The first in each + // pair is the initial delimiter and the second is the terminal delimiter. + // + delimiters: [ + ['`','`'] + ], + + // + // This array lists the names of the tags whose contents should not be + // processed by asciimath2jax (other than to look for ignore/process classes + // as listed below). You can add to (or remove from) this list to prevent + // MathJax from processing mathematics in specific contexts. + // + skipTags: ["script","noscript","style","textarea","pre","code","annotation","annotation-xml"], + + // + // This is the class name used to mark elements whose contents should + // not be processed by asciimath2jax (other than to look for the + // processClass pattern below). Note that this is a regular + // expression, and so you need to be sure to quote any regexp special + // characters. The pattern is automatically preceded by '(^| )(' and + // followed by ')( |$)', so your pattern will have to match full words + // in the class name. Assigning an element this class name will + // prevent `asciimath2jax` from processing its contents. + // + ignoreClass: "asciimath2jax_ignore", + + // + // This is the class name used to mark elements whose contents SHOULD + // be processed by asciimath2jax. This is used to turn on processing + // within tags that have been marked as ignored or skipped above. + // Note that this is a regular expression, and so you need to be sure + // to quote any regexp special characters. The pattern is + // automatically preceded by '(^| )(' and followed by ')( |$)', so + // your pattern will have to match full words in the class name. Use + // this to restart processing within an element that has been marked + // as ignored above. + // + processClass: "asciimath2jax_process", + + // Controls whether asciimath2jax inserts MathJax_Preview spans to make a + // preview available, and what preview to use, when it locates in-line + // and display mathetics on the page. The default is "AsciiMath", which + // means use the AsciiMath code as the preview (until it is processed by + // MathJax). Set to "none" to prevent the previews from being + // inserted (the math will simply disappear until it is typeset). Set + // to an array containing the description of an HTML snippet in order + // to use the same preview for all equations on the page (e.g., you + // could have it say "[math]" or load an image). + // + // E.g., preview: ["[math]"], + // or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]] + // + preview: "AsciiMath" + + }, + + //============================================================================ + // + // These parameters control the mml2jax preprocessor (when you have included + // "mml2jax.js" in the extensions list above). + // + mml2jax: { + + // + // Controls whether mml2jax inserts MathJax_Preview spans to make a + // preview available, and what preview to use, when it locates + // mathematics on the page. The default is "mathml" which means use + // the tag as the preview (until it is processed by MathJax). + // Set to "alttext", to use the tag's alttext attribute as the + // preview, if the tag has one. Set to "none" to + // prevent the previews from being inserted (the math will simply + // disappear until it is typeset). Set to "altimg" to use an image + // described by the altimg* attributes of the element. + // Set to an array containing the + // description of an HTML snippet in order to use the same preview for + // all equations on the page (e.g., you could have it say "[math]" or + // load an image). + // + // E.g., preview: ["[math]"], + // or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]] + // + preview: "mathml" + + }, + + //============================================================================ + // + // These parameters control the jsMath2jax preprocessor (when you have included + // "jsMath2jax.js" in the extensions list above). + // + jsMath2jax: { + + // + // Controls whether jsMath2jax inserts MathJax_Preview spans to make a + // preview available, and what preview to use, when it locates + // mathematics on the page. The default is "TeX", which means use the + // TeX code as the preview (until it is processed by MathJax). Set to + // "none" to prevent the previews from being inserted (the math will + // simply disappear until it is typeset). Set to an array containing + // the description of an HTML snippet in order to use the same preview + // for all equations on the page (e.g., you could have it say "[math]" + // or load an image). + // + // E.g., preview: ["[math]"], + // or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]] + // + preview: "TeX" + + }, + + //============================================================================ + // + // These parameters control the TeX input jax. + // + TeX: { + + // + // This specifies the side on which \tag{} macros will place the tags. + // Set to "left" to place on the left-hand side. + // + TagSide: "right", + + // + // This is the amound of indentation (from right or left) for the tags. + // + TagIndent: "0.8em", + + // + // This is the width to use for the multline environment + // + MultLineWidth: "85%", + + // + // List of macros to define. These are of the form + // name: value + // where 'value' is the replacement text for the macro \name. + // The 'value' can also be [value,n] where 'value' is the replacement + // text and 'n' is the number of parameters for the macro. + // Note that backslashes must be doubled in the replacement string. + // + // E.g., + // + // Macros: { + // RR: '{\\bf R}', + // bold: ['{\\bf #1}', 1] + // } + // + Macros: {}, + + // + // Equation numbering parameters. + // + equationNumbers: { + autoNumber: "none", // "AMS" for standard AMS environment numbering, + // or "all" to number all displayed equations +// formatNumber: function (n) {return n}, // format for equation number n +// formatTag: function (n) {return '('+n+')'}, // format for \tag and \eqref +// formatID: function (n) {return 'mjx-eqn-'+String(n).replace(/\s/g,"_")}, +// // element ID to use for reference +// formatURL: function (id,base) {return base+'#'+encodeURIComponent(id)}, +// // URL to use for references + useLabelIds: true // make element ID's use \label name rather than equation number + }, + + // + // Controls the TeX/noErrors extension + // + noErrors: { + disabled: false, // set to true to return to original error messages + multiLine: true, // false to not include original line breaks + inlineDelimiters: ["",""], // or use ["$","$"] or ["\\(","\\)"] to put back delimiters + style: { + "font-size": "90%", + "text-align": "left", + "color": "black", + "padding": "1px 3px", + "border": "1px solid" + } + }, + + // + // Controls the TeX/noUndefined extension + // + noUndefined: { + disabled: false, // set to true to return to original error messages + attributes: { // attributes to set for the undefined control sequence + mathcolor: "red" + } + }, + + // + // Controls the TeX/unicode extension + unicode: { + fonts: "STIXGeneral,'Arial Unicode MS'" // the default font list for unknown characters + } + + }, + + //============================================================================ + // + // These parameters control the AsciiMath input jax. + // + AsciiMath: { + // + // Determines whether the unicode positions for phi and varphi are + // to be swapped or not. (Unicode originally had these reversed, and + // many fonts have them reversed as well.) When set to true, phi + // and varphi will correspond to the LaTeX macros of the same name. + // + fixphi: true, + + // + // Determines whether the MathML should be marked so that the HTML-CSS + // and SVG output jax will use MathML spacing rules rather than TeX + // spacing rules. Since AsciiMath was designed for MathML output, the + // MathML rules are used by default. + // + useMathMLspacing: true, + + // + // Determines whether limits are placed above and below operators, + // or next to them. (AsciiMath doesn't have separate in-line and + // display modes like TeX and MathML do, so this is the only control + // you have over its output) + // + displaystyle: true, + + // + // The character to use for decimal places when scanning for a number. + // If you change it to ",", beware of things like "(1,2)" which would need + // to be changed to "(1, 2)" to be parsed correctly. + // + decimal: "." + }, + + //============================================================================ + // + // These parameters control the MathML input jax. + // + MathML: { + // + // This specifies whether to use TeX spacing or MathML spacing when the + // HTML-CSS output jax is used. + // + useMathMLspacing: false + }, + + //============================================================================ + // + // These parameters control the HTML-CSS output jax. + // + "HTML-CSS": { + + // + // This controls the global scaling of mathematics as compared to the + // surrounding text. Values between 100 and 133 are usually good choices. + // + scale: 100, + + // + // Don't allow the matching of math text to surrounding text to use a scaling + // factor smaller than this. + // + minScaleAdjust: 50, + + // + // This is a list of the fonts to look for on a user's computer in + // preference to using MathJax's web-based fonts. These must + // correspond to directories available in the jax/output/HTML-CSS/fonts + // directory, where MathJax stores data about the characters available + // in the fonts. Set this to ["TeX"], for example, to prevent the + // use of the STIX fonts, or set it to an empty list, [], if + // you want to force MathJax to use web-based or image fonts. + // + availableFonts: ["STIX","TeX"], + + // + // This is the preferred font to use when more than one of those + // listed above is available. + // + preferredFont: "TeX", + + // + // This is the web-based font to use when none of the fonts listed + // above are available on the user's computer. Note that currently + // only the TeX font is available in a web-based form. Set this to + // + // webFont: null, + // + // if you want to prevent the use of web-based fonts. + // + webFont: "TeX", + + // + // This is the font to use for image fallback mode (when none of the + // fonts listed above are available and the browser doesn't support + // web-fonts via the @font-face CSS directive). Note that currently + // only the TeX font is available as an image font. Set this to + // + // imageFont: null, + // + // if you want to prevent the use of image fonts (e.g., you have not + // installed the image fonts on your server). In this case, only + // browsers that support web-based fonts will be able to view your pages + // without having the fonts installed on the client computer. The browsers + // that support web-based fonts include: IE6 and later, Chrome, Safari3.1 + // and above, Firefox3.5 and later, and Opera10 and later. Note that + // Firefox3.0 is NOT on this list, so without image fonts, FF3.0 users + // will be required to to download and install either the STIX fonts or the + // MathJax TeX fonts. + // + imageFont: "TeX", + + // + // This is the font-family CSS value used for characters that are not + // in the selected font (e.g., for web-based fonts, this is where to + // look for characters not included in the MathJax_* fonts). IE will + // stop looking after the first font that exists on the system (even + // if it doesn't contain the needed character), so order these carefully. + // + undefinedFamily: "STIXGeneral,'Arial Unicode MS',serif", + + // + // This setting controls whether elements will be typeset + // using the math fonts or the font of the surrounding text. When + // false, the mathvariant="normal" font will be used; when true, + // the font will be inherited from the surrounding paragraph. + // + mtextFontInherit: false, + + // + // These values control how "chunky" the display of mathematical + // expressions will be. + // + // EqnChunk is the number of equations that will be typeset before + // they appear on screen. Larger values make for less visual flicker + // as the equations are drawn, but also mean longer delays before the + // reader sees anything. + // + // EqChunkFactor is the factor by which the EqnChunk will grow after each + // chunk is displayed. + // + // EqChunkDelay is the time (in milliseconds) to delay between chunks + // (to allow the browser to respond to other user interaction). + // + // Set EqnChunk to 1, EqnChunkFactor to 1, and EqnChunkDelay to 10 to get + // the behavior from MathJax v1.1 and below. + // + EqnChunk: 50, + EqnChunkFactor: 1.5, + EqnChunkDelay: 100, + + // + // This option indicates whether MathJax should try to correct the + // x-height of equations to match the size of the surrounding text. + // + matchFontHeight: true, + + // + // When true, MathJax will not measure the widths or heights of the + // subexpressions as it creates its output, but instead will rely on + // its internal calculations based on the bounding boxes of the + // characters it uses, and will only take measurements when it + // absolutely has to. Since measurements cause display reflows, they + // slows down MathJax considerably, so without them MathJax runs + // faster, but can produce slightly less accurate character placements, + // especially in width fractions or roots. + // + noReflows: true, + + + // + // These settings control automatic line breaking. It is off by + // default, so only explicit line breaks are performed (via + // linebreak="newline" attributes on and elements). To + // perform automatic line breaking on line expressions, set + // 'automatic' to 'true' below. The line breaks will be applied via a + // penalty-based heuristic, which does well, but isn't perfect. You + // might need to use linebreak="goodbreak" or linebreak="badbreak" by + // hand in order to get better effects. It is also possible to modify + // the penalty values; contact the MathJax user's forum for details. + // + linebreaks: { + + // + // This controls the automatic breaking of expressions: + // when false, only process linebreak="newline", + // when true, line breaks are inserted automatically in long expressions. + // + automatic: false, + + // + // This controls how wide the lines of mathematics can be + // + // Use an explicit width like "30em" for a fixed width. + // Use "container" to compute the size from the containing element. + // Use "nn% container" for a portion of the container. + // Use "nn%" for a portion of the window size. + // + // The container-based widths may be slower, and may not produce the + // expected results if the layout width changes due to the removal + // of previews or inclusion of mathematics during typesetting. + // + width: "container" + }, + + // + // This allows you to define or modify the styles used to display + // various math elements created by MathJax. + // + // Example: + // styles: { + // ".MathJax .merror": { + // color: "#CC0000", + // border: "1px solid #CC0000" + // } + // } + // + styles: {}, + + // + // Configuration for tooltips + // (see also the #MathJax_Tooltip CSS in MathJax/jax/output/HTML-CSS/config.js, + // which can be overridden using the styles values above). + // + tooltip: { + delayPost: 600, // milliseconds delay before tooltip is posted after mouseover + delayClear: 600, // milliseconds delay before tooltip is cleared after mouseout + offsetX: 10, offsetY: 5 // pixels to offset tooltip from mouse position + } + }, + + //============================================================================ + // + // These parameters control the NativeMML output jax. + // + NativeMML: { + + // + // This controls the global scaling of mathematics as compared to the + // surrounding text. Values between 100 and 133 are usually good choices. + // + scale: 100, + + // + // Don't allow the matching of math text to surrounding text to use a scaling + // factor smaller than this. + // + minScaleAdjust: 50, + + // This option indicates whether MathJax should try to correct the + // x-height of equations to match the size of the surrounding text. + matchFontHeight: true, + + // + // This allows you to define or modify the styles used to display + // various math elements created by MathJax. + // + // Example: + // styles: { + // ".MathJax_MathML": { + // color: "red" // MathML is in red + // } + // } + // + styles: {} + }, + + //============================================================================ + // + // These parameters control the SVG output jax. + // + "SVG": { + + // + // This controls the global scaling of mathematics as compared to the + // surrounding text. Values between 100 and 133 are usually good choices. + // + scale: 100, + + // + // Don't allow the matching of math text to surrounding text to use a scaling + // factor smaller than this. + // + minScaleAdjust: 50, + + // + // This specifies the font to use for SVG output (currently the only + // one available) + // + font: "TeX", + + // + // This is the stroke width to use for all character paths (1em = 1000 + // units). This is a cheap way of getting slightly lighter or darker + // characters + // + blacker: 10, + + // + // This is the font-family CSS value used for characters that are not + // in the selected font. IE will stop looking after the first font + // that exists on the system (even if it doesn't contain the needed + // character), so order these carefully. + // + undefinedFamily: "STIXGeneral,'Arial Unicode MS',serif", + + // + // This setting controls whether elements will be typeset + // using the math fonts or the font of the surrounding text. When + // false, the mathvariant="normal" font will be used; when true, + // the font will be inherited from the surrounding paragraph. + // + mtextFontInherit: false, + + // + // This controls whether the MathML structure is retained and CSS + // classes are added to mark the original MathML elements (as in the + // HTML-CSS output). By default, the SVG output jax removes unneeded + // nesting in order to produce a more efficient markup, but if you + // want to use CSS to style the elements as if they were MathML, you + // might need to set this to true. + // + addMMLclasses: false, + + // + // These values control how "chunky" the display of mathematical + // expressions will be. + // + // EqnChunk is the number of equations that will be typeset before + // they appear on screen. Larger values make for less visual flicker + // as the equations are drawn, but also mean longer delays before the + // reader sees anything. + // + // EqChunkFactor is the factor by which the EqnChunk will grow after each + // chunk is displayed. + // + // EqChunkDelay is the time (in milliseconds) to delay between chunks + // (to allow the browser to respond to other user interaction). + // + // Set EqnChunk to 1, EqnChunkFactor to 1, and EwnChunkDelay to 10 to get + // the behavior from MathJax v1.1 and below. + // + EqnChunk: 50, + EqnChunkFactor: 1.5, + EqnChunkDelay: 100, + + // This option indicates whether MathJax should try to correct the + // x-height of equations to match the size of the surrounding text. + matchFontHeight: true, + + // + // These settings control automatic line breaking. It is off by + // default, so only explicit line breaks are performed (via + // linebreak="newline" attributes on and elements). To + // perform automatic line breaking on line expressions, set + // 'automatic' to 'true' below. The line breaks will be applied via a + // penalty-based heuristic, which does well, but isn't perfect. You + // might need to use linebreak="goodbreak" or linebreak="badbreak" by + // hand in order to get better effects. It is also possible to modify + // the penalty values; contact the MathJax user's forum for details. + // + linebreaks: { + + // + // This controls the automatic breaking of expressions: + // when false, only process linebreak="newline", + // when true, line breaks are inserted automatically in long expressions. + // + automatic: false, + + // + // This controls how wide the lines of mathematics can be + // + // Use an explicit width like "30em" for a fixed width. + // Use "container" to compute the size from the containing element. + // Use "nn% container" for a portion of the container. + // Use "nn%" for a portion of the window size. + // + // The container-based widths may be slower, and may not produce the + // expected results if the layout width changes due to the removal + // of previews or inclusion of mathematics during typesetting. + // + width: "container" + }, + + // + // These are the styles used for merror elements in SVG output. Note + // that only a limited number of style attributes are supported by + // SVG, but you can at least change the colors and borders. + // + // + merrorStyle: { + fontSize:"90%", color:"#C00", background:"#FF8", + border: "1px solid #C00", padding:"3px" + }, + + // + // This allows you to define or modify the styles used to display + // various math elements created by MathJax. + // + // Example: + // styles: { + // ".MathJax .merror": { + // color: "#CC0000", + // border: "1px solid #CC0000" + // } + // } + // + styles: {}, + + // + // Configuration for tooltips + // (see also the #MathJax_Tooltip CSS in MathJax/jax/output/SVG/config.js, + // which can be overridden using the styles values above). + // + tooltip: { + delayPost: 600, // milliseconds delay before tooltip is posted after mouseover + delayClear: 600, // milliseconds delay before tooltip is cleared after mouseout + offsetX: 10, offsetY: 5 // pixels to offset tooltip from mouse position + } + }, + + //============================================================================ + // + // These parameters control the contextual menus that are available on the + // mathematics within the page (provided the showMathMenu value is true above). + // + MathMenu: { + // + // This is the hover delay for the display of submenus in the + // contextual menu. When the mouse is still over a submenu label for + // this long, the menu will appear. (The menu also will appear if you + // click on the label.) It is in milliseconds. + // + delay: 150, + + // + // This is the URL for the MathJax Help menu item. + // + helpURL: "http://www.mathjax.org/help-v2/user/", + + // + // These control whether the "Math Renderer", "MathPlayer", "Font + // Preferences", "Contextual Menu", and "Discoverable" menu items will + // be displayed or not. + // + showRenderer: true, + showMathPlayer: true, + showFontMenu: false, + showContext: false, + showDiscoverable: false, + + // + // These are the settings for the Annotation menu. If the root has + // a child that contains one of the following annotation + // formats, the source will be available via the "Show Math As" menu. + // Each format has a list of possible encodings. + // + semanticsAnnotations: { + "TeX": ["TeX", "LaTeX", "application/x-tex"], + "StarMath": ["StarMath 5.0"], + "Maple": ["Maple"], + "ContentMathML": ["MathML-Content", "application/mathml-content+xml"], + "OpenMath": ["OpenMath"] + }, + + // + // These are the settings for the Show Source window. The initial + // width and height will be reset after the source is shown in an + // attempt to make the window fit the output better. + // + windowSettings: { + status: "no", toolbar: "no", locationbar: "no", menubar: "no", + directories: "no", personalbar: "no", resizable: "yes", scrollbars: "yes", + width: 100, height: 50 + }, + + // + // This allows you to change the CSS that controls the menu + // appearance. See the extensions/MathMenu.js file for details + // of the default settings. + // + styles: {} + + }, + + //============================================================================ + // + // These parameters control the contextual menus that are available on the + // mathematics within the page (provided the showMathMenu value is true above). + // + MathEvents: { + // + // This is the time required for the mouse to be held still over a + // typeset equation in order for it to count as a hover (used when the + // zoom trigger is "Hover"). It is in milliseconds. + // + hover: 500 + }, + + //============================================================================ + // + // These parameters control the MMLorHTML configuration file. + // NOTE: if you add MMLorHTML.js to the config array above, + // you must REMOVE the output jax from the jax array. + // + MMLorHTML: { + // + // The output jax that is to be preferred when both are possible + // (set to "MML" for native MathML, "HTML" for MathJax's HTML-CSS output jax). + // + prefer: { + MSIE: "MML", + Firefox: "HTML", + Opera: "HTML", + Safari: "HTML", + Chrome: "HTML", + other: "HTML" + } + } +}); + +MathJax.Ajax.loadComplete("[MathJax]/config/default.js"); diff --git a/mathjax/asset/config/local/local.js b/mathjax/asset/config/local/local.js new file mode 100644 index 000000000..cf2c67805 --- /dev/null +++ b/mathjax/asset/config/local/local.js @@ -0,0 +1,40 @@ +/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ + +/************************************************************* + * + * MathJax/config/local/local.js + * + * Include changes and configuration local to your installation + * in this file. For example, common macros can be defined here + * (see below). To use this file, add "local/local.js" to the + * config array in MathJax.js or your MathJax.Hub.Config() call. + * + * --------------------------------------------------------------------- + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { + var TEX = MathJax.InputJax.TeX; + + // place macros here. E.g.: + // TEX.Macro("R","{\\bf R}"); + // TEX.Macro("op","\\mathop{\\rm #1}",1); // a macro with 1 parameter + +}); + +MathJax.Ajax.loadComplete("[MathJax]/config/local/local.js"); diff --git a/mathjax/asset/extensions/AssistiveMML.js b/mathjax/asset/extensions/AssistiveMML.js new file mode 100644 index 000000000..935fcc62e --- /dev/null +++ b/mathjax/asset/extensions/AssistiveMML.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/AssistiveMML.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +(function(a,e,b,f){var c=b.config.menuSettings;var d=MathJax.Extension.AssistiveMML={version:"2.7.5",config:b.CombineConfig("AssistiveMML",{disabled:false,styles:{".MJX_Assistive_MathML":{position:"absolute!important",top:0,left:0,clip:(b.Browser.isMSIE&&(document.documentMode||0)<8?"rect(1px 1px 1px 1px)":"rect(1px, 1px, 1px, 1px)"),padding:"1px 0 0 0!important",border:"0!important",height:"1px!important",width:"1px!important",overflow:"hidden!important",display:"block!important","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none"},".MJX_Assistive_MathML.MJX_Assistive_MathML_Block":{width:"100%!important"}}}),Config:function(){if(!this.config.disabled&&c.assistiveMML==null){b.Config({menuSettings:{assistiveMML:true}})}a.Styles(this.config.styles);b.Register.MessageHook("End Math",function(g){if(c.assistiveMML){return d.AddAssistiveMathML(g[1])}})},AddAssistiveMathML:function(g){var h={jax:b.getAllJax(g),i:0,callback:MathJax.Callback({})};this.HandleMML(h);return h.callback},RemoveAssistiveMathML:function(k){var h=b.getAllJax(k),l;for(var j=0,g=h.length;j/g,"")}catch(k){if(!k.restart){throw k}return MathJax.Callback.After(["HandleMML",this,l],k.restart)}n.setAttribute("data-mathml",i);j=f.addElement(n,"span",{isMathJax:true,unselectable:"on",className:"MJX_Assistive_MathML"+(h.root.Get("display")==="block"?" MJX_Assistive_MathML_Block":"")});try{j.innerHTML=i}catch(k){}n.style.position="relative";n.setAttribute("role","presentation");n.firstChild.setAttribute("aria-hidden","true");j.setAttribute("role","presentation")}l.i++}l.callback()}};b.Startup.signal.Post("AssistiveMML Ready")})(MathJax.Ajax,MathJax.Callback,MathJax.Hub,MathJax.HTML);MathJax.Callback.Queue(["Require",MathJax.Ajax,"[MathJax]/extensions/toMathML.js"],["loadComplete",MathJax.Ajax,"[MathJax]/extensions/AssistiveMML.js"],function(){MathJax.Hub.Register.StartupHook("End Config",["Config",MathJax.Extension.AssistiveMML])}); diff --git a/mathjax/asset/extensions/CHTML-preview.js b/mathjax/asset/extensions/CHTML-preview.js new file mode 100644 index 000000000..bd6020938 --- /dev/null +++ b/mathjax/asset/extensions/CHTML-preview.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/CHTML-preview.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Callback.Queue(["Require",MathJax.Ajax,"[MathJax]/extensions/fast-preview.js"],["loadComplete",MathJax.Ajax,"[MathJax]/extensions/CHTML-preview.js"]); diff --git a/mathjax/asset/extensions/FontWarnings.js b/mathjax/asset/extensions/FontWarnings.js new file mode 100644 index 000000000..baac36562 --- /dev/null +++ b/mathjax/asset/extensions/FontWarnings.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/FontWarnings.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +(function(b,d){var i="2.7.5";var a="http://www.stixfonts.org/";var f="https://github.com/mathjax/MathJax/tree/master/fonts/HTML-CSS/TeX/otf";var h=b.CombineConfig("FontWarnings",{messageStyle:{position:"fixed",bottom:"4em",left:"3em",width:"40em",border:"3px solid #880000","background-color":"#E0E0E0",color:"black",padding:"1em","font-size":"small","white-space":"normal","border-radius":".75em","-webkit-border-radius":".75em","-moz-border-radius":".75em","-khtml-border-radius":".75em","box-shadow":"4px 4px 10px #AAAAAA","-webkit-box-shadow":"4px 4px 10px #AAAAAA","-moz-box-shadow":"4px 4px 10px #AAAAAA","-khtml-box-shadow":"4px 4px 10px #AAAAAA",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=3, OffY=3, Color='gray', Positive='true')"},Message:{webFont:[["closeBox"],["webFont","MathJax is using web-based fonts to display the mathematics on this page. These take time to download, so the page would render faster if you installed math fonts directly in your system's font folder."],["fonts"]],imageFonts:[["closeBox"],["imageFonts","MathJax is using its image fonts rather than local or web-based fonts. This will render slower than usual, and the mathematics may not print at the full resolution of your printer."],["fonts"],["webFonts"]],noFonts:[["closeBox"],["noFonts","MathJax is unable to locate a font to use to display its mathematics, and image fonts are not available, so it is falling back on generic unicode characters in hopes that your browser will be able to display them. Some characters may not show up properly, or possibly not at all."],["fonts"],["webFonts"]]},HTML:{closeBox:[["div",{style:{position:"absolute",overflow:"hidden",top:".1em",right:".1em",border:"1px outset",width:"1em",height:"1em","text-align":"center",cursor:"pointer","background-color":"#EEEEEE",color:"#606060","border-radius":".5em","-webkit-border-radius":".5em","-moz-border-radius":".5em","-khtml-border-radius":".5em"},onclick:function(){if(c.div&&c.fade===0){if(c.timer){clearTimeout(c.timer)}c.div.style.display="none"}}},[["span",{style:{position:"relative",bottom:".2em"}},["x"]]]]],webFonts:[["p"],["webFonts","Most modern browsers allow for fonts to be downloaded over the web. Updating to a more recent version of your browser (or changing browsers) could improve the quality of the mathematics on this page."]],fonts:[["p"],["fonts","MathJax can use either the [STIX fonts](%1) or the [MathJax TeX fonts](%2). Download and install one of those fonts to improve your MathJax experience.",a,f]],STIXfonts:[["p"],["STIXPage","This page is designed to use the [STIX fonts](%1). Download and install those fonts to improve your MathJax experience.",a]],TeXfonts:[["p"],["TeXPage","This page is designed to use the [MathJax TeX fonts](%1). Download and install those fonts to improve your MathJax experience.",f]]},removeAfter:12*1000,fadeoutSteps:10,fadeoutTime:1.5*1000});if(MathJax.Hub.Browser.isIE9&&document.documentMode>=9){delete h.messageStyle.filter}var c={div:null,fade:0};var e=function(m){if(c.div){return}var j=MathJax.OutputJax["HTML-CSS"],n=document.body;if(b.Browser.isMSIE){if(h.messageStyle.position==="fixed"){MathJax.Message.Init();n=document.getElementById("MathJax_MSIE_Frame")||n;if(n!==document.body){h.messageStyle.position="absolute"}}}else{delete h.messageStyle.filter}h.messageStyle.maxWidth=(document.body.clientWidth-75)+"px";var k=0;while(k1?z/h:1);C=Math.floor(Math.max(this.config.minScaleAdjust/100,C)*this.config.scale);if(C/100!==g.scale){o.push([v.style,C])}g.scale=C/100;g.fontScale=C+"%";g.ex=z;g.mex=h}if("scrollWidth" in g&&(r||g.scrollWidth!==k.firstChild.scrollWidth)){g.scrollWidth=k.firstChild.scrollWidth;t.push([k.parentNode.style,g.scrollWidth/g.ex/g.scale])}if(k.MathJaxMtds){for(var u=0,p=k.MathJaxMtds.length;u0){this.HoverFadeTimer(q,q.hover.inc);return}s.parentNode.removeChild(s);if(r){r.parentNode.removeChild(r)}if(q.hover.remove){clearTimeout(q.hover.remove)}delete q.hover},HoverFadeTimer:function(q,s,r){q.hover.inc=s;if(!q.hover.timer){q.hover.timer=setTimeout(g(["HoverFade",this,q]),(r||o.fadeDelay))}},HoverMenu:function(q){if(!q){q=window.event}return b[this.jax].ContextMenu(q,this.math,true)},ClearHover:function(q){if(q.hover.remove){clearTimeout(q.hover.remove)}if(q.hover.timer){clearTimeout(q.hover.timer)}f.ClearHoverTimer();delete q.hover},Px:function(q){if(Math.abs(q)<0.006){return"0px"}return q.toFixed(2).replace(/\.?0+$/,"")+"px"},getImages:function(){if(k.discoverable){var q=new Image();q.src=o.button.src}}};var a=c.Touch={last:0,delay:500,start:function(r){var q=new Date().getTime();var s=(q-a.last=0){h=a.cloneNode(h,true)}var i=a.cloneNode(h);for(var g=0,f=h.childNodes.length;g1){a.applyTransform(o,p[0],g)}a.appendToken(o,"mo",f);if(p.length>0){var q=p[(p.length===1)?0:1];a.applyTransform(o,q,g)}if(k){a.appendToken(o,"mo",")")}n.appendChild(o)}},infix:function(f,g){return function(r,k,o,t,i,p,h){var s=a.createElement("mrow");var n=h>g;if(n){a.appendToken(s,"mo","(")}for(var q=0,m=t.length;q0){a.appendToken(s,"mo",f)}a.applyTransform(s,t[q],g)}if(n){a.appendToken(s,"mo",")")}r.appendChild(s)}},iteration:function(f,g){return function(q,y,C,l,h,u,m){var t=a.createElement("mrow");var x=a.createElement("mo");a.setTextContent(x,f);var o=a.createElement("munderover");o.appendChild(x);var k=a.createElement("mrow");var A,w,v,B,n,s,z,r;for(A=0,v=u.length;A0){a.appendToken(y,"mo",",")}n=a.getChildren(t);if(n.length){a.applyTransform(y,n[0],0)}}var x=a.createElement("mrow");var A=false;for(v=0,p=s.length;v0){a.appendToken(n,"mo",",")}a.applyTransform(n,s[p],0)}if(o.length){a.appendToken(n,"mo","|");for(p=0,k=o.length;p",1),lt:a.transforms.infix("<",1),geq:a.transforms.infix("\u2265",1),leq:a.transforms.infix("\u2264",1),equivalent:a.transforms.infix("\u2261",1),approx:a.transforms.infix("\u2248",1),subset:a.transforms.infix("\u2286",2),prsubset:a.transforms.infix("\u2282",2),cartesianproduct:a.transforms.infix("\u00D7",2),cartesian_product:a.transforms.infix("\u00D7",2),vectorproduct:a.transforms.infix("\u00D7",2),scalarproduct:a.transforms.infix(".",2),outerproduct:a.transforms.infix("\u2297",2),sum:a.transforms.iteration("\u2211","="),product:a.transforms.iteration("\u220F","="),forall:a.transforms.bind("\u2200",".",","),exists:a.transforms.bind("\u2203",".",","),lambda:a.transforms.bind("\u03BB",".",","),limit:a.transforms.iteration("lim","\u2192"),sdev:a.transforms.fn("\u03c3"),determinant:a.transforms.fn("det"),max:a.transforms.minmax("max"),min:a.transforms.minmax("min"),real:a.transforms.fn("\u211b"),imaginary:a.transforms.fn("\u2111"),set:a.transforms.set("{","}"),list:a.transforms.set("(",")"),exp:function(h,k,g,j,i,m,f){var l=a.createElement("msup");a.appendToken(l,"mi","e");a.applyTransform(l,j[0],0);h.appendChild(l)},union:function(h,k,g,j,i,l,f){if(i.length){a.transforms.iteration("\u22C3","=")(h,k,g,j,i,l,f)}else{a.transforms.infix("\u222A",2)(h,k,g,j,i,l,f)}},intersect:function(q,i,n,s,g,o,f){if(g.length){a.transforms.iteration("\u22C2","=")(q,i,n,s,g,o,f)}else{var r=a.createElement("mrow");var m=f>2;if(m){a.appendToken(r,"mo","(")}for(var p=0,k=s.length;p0){a.appendToken(r,"mo","\u2229");if(s[p].nodeName==="apply"){var h=a.getChildren(s[p])[0];t=h.nodeName==="union"}}if(t){a.appendToken(r,"mo","(")}a.applyTransform(r,s[p],2);if(t){a.appendToken(r,"mo",")")}}if(m){a.appendToken(r,"mo",")")}q.appendChild(r)}},floor:function(h,l,g,k,j,m,f){var i=a.createElement("mrow");a.appendToken(i,"mo","\u230a");a.applyTransform(i,k[0],0);a.appendToken(i,"mo","\u230b");h.appendChild(i)},conjugate:function(h,l,g,k,j,m,f){var i=a.createElement("mover");a.applyTransform(i,k[0],0);a.appendToken(i,"mo","\u00af");h.appendChild(i)},abs:function(h,l,g,k,j,m,f){var i=a.createElement("mrow");a.appendToken(i,"mo","|");a.applyTransform(i,k[0],0);a.appendToken(i,"mo","|");h.appendChild(i)},and:function(h,k,g,j,i,l,f){if(i.length||l.length){a.transforms.iteration("\u22c0","=")(h,k,g,j,i,l,4)}else{a.transforms.infix("\u2227",2)(h,k,g,j,i,l,f)}},or:function(h,k,g,j,i,l,f){if(i.length||l.length){a.transforms.iteration("\u22c1","=")(h,k,g,j,i,l,4)}else{a.transforms.infix("\u2228",2)(h,k,g,j,i,l,f)}},xor:function(h,k,g,j,i,l,f){if(i.length||l.length){a.transforms.iteration("xor","=")(h,k,g,j,i,l,4)}else{a.transforms.infix("xor",2)(h,k,g,j,i,l,f)}},card:function(h,l,g,k,j,m,f){var i=a.createElement("mrow");a.appendToken(i,"mo","|");a.applyTransform(i,k[0],0);a.appendToken(i,"mo","|");h.appendChild(i)},mean:function(h,l,g,k,j,m,f){if(k.length===1){var i=a.createElement("mover");a.applyTransform(i,k[0],0);a.appendToken(i,"mo","\u00af");h.appendChild(i)}else{h.appendChild(a.createmfenced(k,"\u27e8","\u27e9"))}},moment:function(s,k,o,w,g,p,f){var n,v,h,r,q,m;for(r=0,m=p.length;r1){y.appendChild(a.createmfenced(w,"(",")"))}else{a.applyTransform(y,w[0],0)}if(n){var x=a.createElement("msup");x.appendChild(y);h=a.getChildren(n);for(q=0,m=h.length;q3;if(k){a.appendToken(q,"mo","(")}for(var o=0,i=r.length;o0){a.appendToken(q,"mo",(r[o].nodeName==="cn")?"\u00D7":"\u2062")}a.applyTransform(q,r[o],3)}if(k){a.appendToken(q,"mo",")")}p.appendChild(q)},plus:function(s,k,p,u,g,q,f){var t=a.createElement("mrow");var o=f>2;if(o){a.appendToken(t,"mo","(")}for(var r=0,m=u.length;r0){var i;if(a.settings.collapsePlusMinus){if(v.nodeName==="cn"&&!(h.length)&&(i=Number(a.getTextContent(v)))<0){a.appendToken(t,"mo","\u2212");a.appendToken(t,"mn",-i)}else{if(v.nodeName==="apply"&&h.length===2&&h[0].nodeName==="minus"){a.appendToken(t,"mo","\u2212");a.applyTransform(t,h[1],2)}else{if(v.nodeName==="apply"&&h.length>2&&h[0].nodeName==="times"&&h[1].nodeName==="cn"&&(i=Number(a.getTextContent(h[1])))<0){a.appendToken(t,"mo","\u2212");h[1].textContent=-i;a.applyTransform(t,v,2)}else{a.appendToken(t,"mo","+");a.applyTransform(t,v,2)}}}}else{a.appendToken(t,"mo","+");a.applyTransform(t,v,2)}}else{a.applyTransform(t,v,2)}}if(o){a.appendToken(t,"mo",")")}s.appendChild(t)},transpose:function(h,k,g,j,i,m,f){var l=a.createElement("msup");a.applyTransform(l,j[0],f);a.appendToken(l,"mi","T");h.appendChild(l)},power:function(h,k,g,j,i,m,f){var l=a.createElement("msup");a.applyTransform(l,j[0],3);a.applyTransform(l,j[1],f);h.appendChild(l)},selector:function(p,h,k,s,g,n,f){var r=a.createElement("msub");var q=s?s[0]:a.createElement("mrow");a.applyTransform(r,q,0);var m=a.createElement("mrow");for(var o=1,j=s.length;o1){a.applyTransform(i,k[1],0)}}a.appendToken(i,"mo","\u230B");h.appendChild(i)},factorial:function(h,l,g,k,j,m,f){var i=a.createElement("mrow");a.applyTransform(i,k[0],4);a.appendToken(i,"mo","!");h.appendChild(i)},root:function(p,j,m,q,h,n,f){var g;if(m.nodeName==="root"&&(n.length===0||(n[0].nodeName==="degree"&&a.getTextContent(n[0])==="2"))){g=a.createElement("msqrt");for(var o=0,k=q.length;o1){var i=a.createElement("msup");a.applyTransform(i,j,0);a.appendToken(i,"mn",l);M.appendChild(i)}else{a.applyTransform(M,j,0)}}for(K=0,F=z.length;K0){if(x){a.appendToken(s,"mo","+")}a.appendToken(s,"mn",m)}}if(g.length){L=g[0]}for(K=0,F=f.length;K ltr ) ( ] [ } { ) ( ] [ } { \ )(}{>< top right 0 decimalpoint decimalpoint . decimalpoint * 0.1em 0.15em 0.2em 0.15em 0 ) ( / : = top ) ';var b;if(window.XSLTProcessor){if(!d.ParseXML){d.ParseXML=d.createParser()}d.mml3XSLT=new XSLTProcessor();d.mml3XSLT.importStylesheet(d.ParseXML(e))}else{if(MathJax.Hub.Browser.isMSIE){if(MathJax.Hub.Browser.versionAtLeast("9.0")||(document.documentMode||0)>=9){b=new ActiveXObject("Msxml2.FreeThreadedDOMDocument");b.loadXML(e);var a=new ActiveXObject("Msxml2.XSLTemplate");a.stylesheet=b;d.mml3XSLT={mml3:a.createProcessor(),transformToDocument:function(h){this.mml3.input=h;this.mml3.transform();return this.mml3.output}}}else{b=d.createMSParser();b.async=false;b.loadXML(e);d.mml3XSLT={mml3:b,transformToDocument:function(h){return h.documentElement.transformNode(this.mml3)}}}}else{d.mml3XSLT=null}}MathJax.Ajax.Styles({".MathJax .mi, .MathJax .mo, .MathJax .mn, .MathJax .mtext":{direction:"ltr",display:"inline-block"},".MathJax .ms, .MathJax .mspace, .MathJax .mglyph":{direction:"ltr",display:"inline-block"}});MathJax.Hub.Startup.signal.Post("MathML mml3.js Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/MathML/mml3.js"); diff --git a/mathjax/asset/extensions/MathMenu.js b/mathjax/asset/extensions/MathMenu.js new file mode 100644 index 000000000..0018b80c5 --- /dev/null +++ b/mathjax/asset/extensions/MathMenu.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/MathMenu.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +(function(f,o,q,e,r){var p="2.7.5";var d=MathJax.Callback.Signal("menu");MathJax.Extension.MathMenu={version:p,signal:d};var t=function(u){return MathJax.Localization._.apply(MathJax.Localization,[["MathMenu",u]].concat([].slice.call(arguments,1)))};var i=MathJax.Object.isArray;var a=f.Browser.isPC,l=f.Browser.isMSIE,m=((document.documentMode||0)>8);var j=(a?null:"5px");var s=f.CombineConfig("MathMenu",{delay:150,showRenderer:true,showMathPlayer:true,showFontMenu:false,showContext:false,showDiscoverable:false,showLocale:true,showLocaleURL:false,semanticsAnnotations:{TeX:["TeX","LaTeX","application/x-tex"],StarMath:["StarMath 5.0"],Maple:["Maple"],ContentMathML:["MathML-Content","application/mathml-content+xml"],OpenMath:["OpenMath"]},windowSettings:{status:"no",toolbar:"no",locationbar:"no",menubar:"no",directories:"no",personalbar:"no",resizable:"yes",scrollbars:"yes",width:400,height:300,left:Math.round((screen.width-400)/2),top:Math.round((screen.height-300)/3)},styles:{"#MathJax_About":{position:"fixed",left:"50%",width:"auto","text-align":"center",border:"3px outset",padding:"1em 2em","background-color":"#DDDDDD",color:"black",cursor:"default","font-family":"message-box","font-size":"120%","font-style":"normal","text-indent":0,"text-transform":"none","line-height":"normal","letter-spacing":"normal","word-spacing":"normal","word-wrap":"normal","white-space":"nowrap","float":"none","z-index":201,"border-radius":"15px","-webkit-border-radius":"15px","-moz-border-radius":"15px","-khtml-border-radius":"15px","box-shadow":"0px 10px 20px #808080","-webkit-box-shadow":"0px 10px 20px #808080","-moz-box-shadow":"0px 10px 20px #808080","-khtml-box-shadow":"0px 10px 20px #808080",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')"},"#MathJax_About.MathJax_MousePost":{outline:"none"},".MathJax_Menu":{position:"absolute","background-color":"white",color:"black",width:"auto",padding:(a?"2px":"5px 0px"),border:"1px solid #CCCCCC",margin:0,cursor:"default",font:"menu","text-align":"left","text-indent":0,"text-transform":"none","line-height":"normal","letter-spacing":"normal","word-spacing":"normal","word-wrap":"normal","white-space":"nowrap","float":"none","z-index":201,"border-radius":j,"-webkit-border-radius":j,"-moz-border-radius":j,"-khtml-border-radius":j,"box-shadow":"0px 10px 20px #808080","-webkit-box-shadow":"0px 10px 20px #808080","-moz-box-shadow":"0px 10px 20px #808080","-khtml-box-shadow":"0px 10px 20px #808080",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')"},".MathJax_MenuItem":{padding:(a?"2px 2em":"1px 2em"),background:"transparent"},".MathJax_MenuArrow":{position:"absolute",right:".5em","padding-top":".25em",color:"#666666","font-family":(l?"'Arial unicode MS'":null),"font-size":".75em"},".MathJax_MenuActive .MathJax_MenuArrow":{color:"white"},".MathJax_MenuArrow.RTL":{left:".5em",right:"auto"},".MathJax_MenuCheck":{position:"absolute",left:".7em","font-family":(l?"'Arial unicode MS'":null)},".MathJax_MenuCheck.RTL":{right:".7em",left:"auto"},".MathJax_MenuRadioCheck":{position:"absolute",left:(a?"1em":".7em")},".MathJax_MenuRadioCheck.RTL":{right:(a?"1em":".7em"),left:"auto"},".MathJax_MenuLabel":{padding:(a?"2px 2em 4px 1.33em":"1px 2em 3px 1.33em"),"font-style":"italic"},".MathJax_MenuRule":{"border-top":(a?"1px solid #CCCCCC":"1px solid #DDDDDD"),margin:(a?"4px 1px 0px":"4px 3px")},".MathJax_MenuDisabled":{color:"GrayText"},".MathJax_MenuActive":{"background-color":(a?"Highlight":"#606872"),color:(a?"HighlightText":"white")},".MathJax_MenuDisabled:focus, .MathJax_MenuLabel:focus":{"background-color":"#E8E8E8"},".MathJax_ContextMenu:focus":{outline:"none"},".MathJax_ContextMenu .MathJax_MenuItem:focus":{outline:"none"},"#MathJax_AboutClose":{top:".2em",right:".2em"},".MathJax_Menu .MathJax_MenuClose":{top:"-10px",left:"-10px"},".MathJax_MenuClose":{position:"absolute",cursor:"pointer",display:"inline-block",border:"2px solid #AAA","border-radius":"18px","-webkit-border-radius":"18px","-moz-border-radius":"18px","-khtml-border-radius":"18px","font-family":"'Courier New',Courier","font-size":"24px",color:"#F0F0F0"},".MathJax_MenuClose span":{display:"block","background-color":"#AAA",border:"1.5px solid","border-radius":"18px","-webkit-border-radius":"18px","-moz-border-radius":"18px","-khtml-border-radius":"18px","line-height":0,padding:"8px 0 6px"},".MathJax_MenuClose:hover":{color:"white!important",border:"2px solid #CCC!important"},".MathJax_MenuClose:hover span":{"background-color":"#CCC!important"},".MathJax_MenuClose:hover:focus":{outline:"none"}}});var n,k,b;f.Register.StartupHook("MathEvents Ready",function(){n=MathJax.Extension.MathEvents.Event.False;k=MathJax.Extension.MathEvents.Hover;b=MathJax.Extension.MathEvents.Event.KEY});var h=MathJax.Object.Subclass({Keydown:function(u,v){switch(u.keyCode){case b.ESCAPE:this.Remove(u,v);break;case b.RIGHT:this.Right(u,v);break;case b.LEFT:this.Left(u,v);break;case b.UP:this.Up(u,v);break;case b.DOWN:this.Down(u,v);break;case b.RETURN:case b.SPACE:this.Space(u,v);break;default:return;break}return n(u)},Escape:function(u,v){},Right:function(u,v){},Left:function(u,v){},Up:function(u,v){},Down:function(u,v){},Space:function(u,v){}},{});var g=MathJax.Menu=h.Subclass({version:p,items:[],posted:false,title:null,margin:5,Init:function(u){this.items=[].slice.call(arguments,0)},With:function(u){if(u){f.Insert(this,u)}return this},Post:function(M,E,B){if(!M){M=window.event||{}}var I=document.getElementById("MathJax_MenuFrame");if(!I){I=g.Background(this);delete c.lastItem;delete c.lastMenu;delete g.skipUp;d.Post(["post",g.jax]);g.isRTL=(MathJax.Localization.fontDirection()==="rtl")}var v=o.Element("div",{onmouseup:g.Mouseup,ondblclick:n,ondragstart:n,onselectstart:n,oncontextmenu:n,menuItem:this,className:"MathJax_Menu",onkeydown:g.Keydown,role:"menu"});if(M.type==="contextmenu"||M.type==="mouseover"){v.className+=" MathJax_ContextMenu"}if(!B){MathJax.Localization.setCSS(v)}for(var N=0,K=this.items.length;NA-this.margin){H=A-v.offsetWidth-this.margin}if(g.isMobile){H=Math.max(5,H-Math.floor(v.offsetWidth/2));F-=20}g.skipUp=M.isContextMenu}else{var z="left",J=E.offsetWidth;H=(g.isMobile?30:J-2);F=0;while(E&&E!==I){H+=E.offsetLeft;F+=E.offsetTop;E=E.parentNode}if(!g.isMobile){if((g.isRTL&&H-J-v.offsetWidth>this.margin)||(!g.isRTL&&H+v.offsetWidth>A-this.margin)){z="right";H=Math.max(this.margin,H-J-v.offsetWidth+6)}}if(!a){v.style["borderRadiusTop"+z]=0;v.style["WebkitBorderRadiusTop"+z]=0;v.style["MozBorderRadiusTop"+z]=0;v.style["KhtmlBorderRadiusTop"+z]=0}}v.style.left=H+"px";v.style.top=F+"px";if(document.selection&&document.selection.empty){document.selection.empty()}var G=window.pageXOffset||document.documentElement.scrollLeft;var D=window.pageYOffset||document.documentElement.scrollTop;g.Focus(v);if(M.type==="keydown"){g.skipMouseoverFromKey=true;setTimeout(function(){delete g.skipMouseoverFromKey},s.delay)}window.scrollTo(G,D);return n(M)},Remove:function(u,v){d.Post(["unpost",g.jax]);var w=document.getElementById("MathJax_MenuFrame");if(w){w.parentNode.removeChild(w);if(this.msieFixedPositionBug){detachEvent("onresize",g.Resize)}}if(g.jax.hover){delete g.jax.hover.nofade;k.UnHover(g.jax)}g.Unfocus(v);if(u.type==="mousedown"){g.CurrentNode().blur()}return n(u)},Find:function(u){return this.FindN(1,u,[].slice.call(arguments,1))},FindId:function(u){return this.FindN(0,u,[].slice.call(arguments,1))},FindN:function(y,v,x){for(var w=0,u=this.items.length;w0){u.oldTabIndex=u.tabIndex}u.tabIndex=-1}},SetTabIndex:function(){var v=g.AllNodes();for(var w=0,u;u=v[w];w++){if(u.oldTabIndex!==undefined){u.tabIndex=u.oldTabIndex;delete u.oldTabIndex}else{u.tabIndex=f.getTabOrder(u)}}},Mod:function(u,v){return((u%v)+v)%v},IndexOf:(Array.prototype.indexOf?function(u,v,w){return u.indexOf(v,w)}:function(u,x,y){for(var w=(y||0),v=u.length;w=0&&c.GetMenuNode(w).menuItem!==v[u].menuItem){v[u].menuItem.posted=false;v[u].parentNode.removeChild(v[u]);u--}},Touchstart:function(u,v){return this.TouchEvent(u,v,"Mousedown")},Touchend:function(u,v){return this.TouchEvent(u,v,"Mouseup")},TouchEvent:function(v,w,u){if(this!==c.lastItem){if(c.lastMenu){g.Event(v,c.lastMenu,"Mouseout")}g.Event(v,w,"Mouseover",true);c.lastItem=this;c.lastMenu=w}if(this.nativeTouch){return null}g.Event(v,w,u);return false},Remove:function(u,v){v=v.parentNode.menuItem;return v.Remove(u,v)},With:function(u){if(u){f.Insert(this,u)}return this},isRTL:function(){return g.isRTL},rtlClass:function(){return(this.isRTL()?" RTL":"")}},{GetMenuNode:function(u){return u.parentNode}});g.ENTRY=g.ITEM.Subclass({role:"menuitem",Attributes:function(u){u=f.Insert({onmouseover:g.Mouseover,onmouseout:g.Mouseout,onmousedown:g.Mousedown,onkeydown:g.Keydown,"aria-disabled":!!this.disabled},u);u=this.SUPER(arguments).Attributes.call(this,u);if(this.disabled){u.className+=" MathJax_MenuDisabled"}return u},MoveVertical:function(u,E,w){var x=c.GetMenuNode(E);var D=[];for(var z=0,C=x.menuItem.items,y;y=C[z];z++){if(!y.hidden){D.push(y)}}var B=g.IndexOf(D,this);if(B===-1){return}var A=D.length;var v=x.childNodes;do{B=g.Mod(w(B),A)}while(D[B].hidden||!v[B].role||v[B].role==="separator");this.Deactivate(E);D[B].Activate(u,v[B])},Up:function(v,u){this.MoveVertical(v,u,function(w){return w-1})},Down:function(v,u){this.MoveVertical(v,u,function(w){return w+1})},Right:function(v,u){this.MoveHorizontal(v,u,g.Right,!this.isRTL())},Left:function(v,u){this.MoveHorizontal(v,u,g.Left,this.isRTL())},MoveHorizontal:function(A,z,u,B){var x=c.GetMenuNode(z);if(x.menuItem===g.menu&&A.shiftKey){u(A,z)}if(B){return}if(x.menuItem!==g.menu){this.Deactivate(z)}var v=x.previousSibling.childNodes;var y=v.length;while(y--){var w=v[y];if(w.menuItem.submenu&&w.menuItem.submenu===x.menuItem){g.Focus(w);break}}this.RemoveSubmenus(z)},Space:function(u,v){this.Mouseup(u,v)},Activate:function(u,v){this.Deactivate(v);if(!this.disabled){v.className+=" MathJax_MenuActive"}this.DeactivateSubmenus(v);g.Focus(v)},Deactivate:function(u){u.className=u.className.replace(/ MathJax_MenuActive/,"")}});g.ITEM.COMMAND=g.ENTRY.Subclass({action:function(){},Init:function(u,w,v){if(!i(u)){u=[u,u]}this.name=u;this.action=w;this.With(v)},Label:function(u,v){return[this.Name()]},Mouseup:function(u,v){if(!this.disabled){this.Remove(u,v);d.Post(["command",this]);this.action.call(this,u)}return n(u)}});g.ITEM.SUBMENU=g.ENTRY.Subclass({submenu:null,marker:"\u25BA",markerRTL:"\u25C4",Attributes:function(u){u=f.Insert({"aria-haspopup":"true"},u);u=this.SUPER(arguments).Attributes.call(this,u);return u},Init:function(u,w){if(!i(u)){u=[u,u]}this.name=u;var v=1;if(!(w instanceof g.ITEM)){this.With(w),v++}this.submenu=g.apply(g,[].slice.call(arguments,v))},Label:function(u,v){this.submenu.posted=false;return[this.Name()+" ",["span",{className:"MathJax_MenuArrow"+this.rtlClass()},[this.isRTL()?this.markerRTL:this.marker]]]},Timer:function(u,v){this.ClearTimer();u={type:u.type,clientX:u.clientX,clientY:u.clientY};this.timer=setTimeout(e(["Mouseup",this,u,v]),s.delay)},ClearTimer:function(){if(this.timer){clearTimeout(this.timer)}},Touchend:function(v,x){var w=this.submenu.posted;var u=this.SUPER(arguments).Touchend.apply(this,arguments);if(w){this.Deactivate(x);delete c.lastItem;delete c.lastMenu}return u},Mouseout:function(u,v){if(!this.submenu.posted){this.Deactivate(v)}this.ClearTimer()},Mouseover:function(u,v){this.Activate(u,v)},Mouseup:function(u,v){if(!this.disabled){if(!this.submenu.posted){this.ClearTimer();this.submenu.Post(u,v,this.ltr);g.Focus(v)}else{this.DeactivateSubmenus(v)}}return n(u)},Activate:function(u,v){if(!this.disabled){this.Deactivate(v);v.className+=" MathJax_MenuActive"}if(!this.submenu.posted){this.DeactivateSubmenus(v);if(!g.isMobile){this.Timer(u,v)}}g.Focus(v)},MoveVertical:function(w,v,u){this.ClearTimer();this.SUPER(arguments).MoveVertical.apply(this,arguments)},MoveHorizontal:function(w,y,v,x){if(!x){this.SUPER(arguments).MoveHorizontal.apply(this,arguments);return}if(this.disabled){return}if(!this.submenu.posted){this.Activate(w,y);return}var u=c.GetMenuNode(y).nextSibling.childNodes;if(u.length>0){this.submenu.items[0].Activate(w,u[0])}}});g.ITEM.RADIO=g.ENTRY.Subclass({variable:null,marker:(a?"\u25CF":"\u2713"),role:"menuitemradio",Attributes:function(v){var u=s.settings[this.variable]===this.value?"true":"false";v=f.Insert({"aria-checked":u},v);v=this.SUPER(arguments).Attributes.call(this,v);return v},Init:function(v,u,w){if(!i(v)){v=[v,v]}this.name=v;this.variable=u;this.With(w);if(this.value==null){this.value=this.name[0]}},Label:function(v,w){var u={className:"MathJax_MenuRadioCheck"+this.rtlClass()};if(s.settings[this.variable]!==this.value){u={style:{display:"none"}}}return[["span",u,[this.marker]]," "+this.Name()]},Mouseup:function(x,y){if(!this.disabled){var z=y.parentNode.childNodes;for(var v=0,u=z.length;v/g,">");var y=t("EqSource","MathJax Equation Source");if(g.isMobile){u.document.open();u.document.write(""+y+"");u.document.write("
"+z+"
");u.document.write("
");u.document.write("");u.document.close()}else{u.document.open();u.document.write(""+y+"");u.document.write("
"+z+"
");u.document.write("");u.document.close();var v=u.document.body.firstChild;setTimeout(function(){var B=(u.outerHeight-u.innerHeight)||30,A=(u.outerWidth-u.innerWidth)||30,w,E;A=Math.max(140,Math.min(Math.floor(0.5*screen.width),v.offsetWidth+A+25));B=Math.max(40,Math.min(Math.floor(0.5*screen.height),v.offsetHeight+B+25));if(g.prototype.msieHeightBug){B+=35}u.resizeTo(A,B);var D;try{D=x.screenX}catch(C){}if(x&&D!=null){w=Math.max(0,Math.min(x.screenX-Math.floor(A/2),screen.width-A-20));E=Math.max(0,Math.min(x.screenY-Math.floor(B/2),screen.height-B-20));u.moveTo(w,E)}},50)}};g.Scale=function(){var z=["CommonHTML","HTML-CSS","SVG","NativeMML","PreviewHTML"],u=z.length,y=100,w,v;for(w=0;w7;g.Augment({margin:20,msieBackgroundBug:((document.documentMode||0)<9),msieFixedPositionBug:(v||!w),msieAboutBug:v,msieHeightBug:((document.documentMode||0)<9)});if(m){delete s.styles["#MathJax_About"].filter;delete s.styles[".MathJax_Menu"].filter}},Firefox:function(u){g.skipMouseover=u.isMobile&&u.versionAtLeast("6.0");g.skipMousedown=u.isMobile}});g.isMobile=f.Browser.isMobile;g.noContextMenu=f.Browser.noContextMenu;g.CreateLocaleMenu=function(){if(!g.menu){return}var z=g.menu.Find("Language").submenu,w=z.items;var v=[],B=MathJax.Localization.strings;for(var A in B){if(B.hasOwnProperty(A)){v.push(A)}}v=v.sort();z.items=[];for(var x=0,u=v.length;xt){z.style.height=t+"px";z.style.width=(x.zW+this.scrollSize)+"px"}if(z.offsetWidth>l){z.style.width=l+"px";z.style.height=(x.zH+this.scrollSize)+"px"}}if(this.operaPositionBug){z.style.width=Math.min(l,x.zW)+"px"}if(z.offsetWidth>m&&z.offsetWidth-m=9);h.msiePositionBug=!m;h.msieSizeBug=l.versionAtLeast("7.0")&&(!document.documentMode||n===7||n===8);h.msieZIndexBug=(n<=7);h.msieInlineBlockAlignBug=(n<=7);h.msieTrapEventBug=!window.addEventListener;if(document.compatMode==="BackCompat"){h.scrollSize=52}if(m){delete i.styles["#MathJax_Zoom"].filter}},Opera:function(l){h.operaPositionBug=true;h.operaRefreshBug=true}});h.topImg=(h.msieInlineBlockAlignBug?d.Element("img",{style:{width:0,height:0,position:"relative"},src:"about:blank"}):d.Element("span",{style:{width:0,height:0,display:"inline-block"}}));if(h.operaPositionBug||h.msieTopBug){h.topImg.style.border="1px solid"}MathJax.Callback.Queue(["StartupHook",MathJax.Hub.Register,"Begin Styles",{}],["Styles",f,i.styles],["Post",a.Startup.signal,"MathZoom Ready"],["loadComplete",f,"[MathJax]/extensions/MathZoom.js"])})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,MathJax.OutputJax["HTML-CSS"],MathJax.OutputJax.NativeMML); diff --git a/mathjax/asset/extensions/Safe.js b/mathjax/asset/extensions/Safe.js new file mode 100644 index 000000000..34c7d7416 --- /dev/null +++ b/mathjax/asset/extensions/Safe.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/Safe.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +(function(d,c){var f="2.7.5";var a=MathJax.Hub.CombineConfig("Safe",{allow:{URLs:"safe",classes:"safe",cssIDs:"safe",styles:"safe",fontsize:"all",require:"safe"},sizeMin:0.7,sizeMax:1.44,lengthMax:3,safeProtocols:{http:true,https:true,file:true,javascript:false},safeStyles:{color:true,backgroundColor:true,border:true,cursor:true,margin:true,padding:true,textShadow:true,fontFamily:true,fontSize:true,fontStyle:true,fontWeight:true,opacity:true,outline:true},safeRequire:{action:true,amscd:true,amsmath:true,amssymbols:true,autobold:false,"autoload-all":false,bbox:true,begingroup:true,boldsymbol:true,cancel:true,color:true,enclose:true,extpfeil:true,HTML:true,mathchoice:true,mhchem:true,newcommand:true,noErrors:false,noUndefined:false,unicode:true,verb:true},styleParts:{border:true,padding:true,margin:true,outline:true},styleLengths:{borderTop:"borderTopWidth",borderRight:"borderRightWidth",borderBottom:"borderBottomWidth",borderLeft:"borderLeftWidth",paddingTop:true,paddingRight:true,paddingBottom:true,paddingLeft:true,marginTop:true,marginRight:true,marginBottom:true,marginLeft:true,outlineTop:true,outlineRight:true,outlineBottom:true,outlineLeft:true,fontSize:[0.7,1.44]}});var e=a.allow;if(e.fontsize!=="all"){a.safeStyles.fontSize=false}var b=MathJax.Extension.Safe={version:f,config:a,div1:document.createElement("div"),div2:document.createElement("div"),filter:{href:"filterURL",src:"filterURL",altimg:"filterURL","class":"filterClass",style:"filterStyles",id:"filterID",fontsize:"filterFontSize",mathsize:"filterFontSize",scriptminsize:"filterFontSize",scriptsizemultiplier:"filterSizeMultiplier",scriptlevel:"filterScriptLevel"},filterURL:function(g){var h=(g.match(/^\s*([a-z]+):/i)||[null,""])[1].toLowerCase();if(e.URLs==="none"||(e.URLs!=="all"&&!a.safeProtocols[h])){g=null}return g},filterClass:function(g){if(e.classes==="none"||(e.classes!=="all"&&!g.match(/^MJX-[-a-zA-Z0-9_.]+$/))){g=null}return g},filterID:function(g){if(e.cssIDs==="none"||(e.cssIDs!=="all"&&!g.match(/^MJX-[-a-zA-Z0-9_.]+$/))){g=null}return g},filterStyles:function(l){if(e.styles==="all"){return l}if(e.styles==="none"){return null}try{var k=this.div1.style,j=this.div2.style,m;k.cssText=l;j.cssText="";for(var g in a.safeStyles){if(a.safeStyles.hasOwnProperty(g)){if(a.styleParts[g]){for(var h=0;h<4;h++){var o=g+["Top","Right","Bottom","Left"][h];m=this.filterStyle(o,k);if(m){j[o]=m}}}else{m=this.filterStyle(g,k);if(m){j[g]=m}}}}l=j.cssText}catch(n){l=null}return l},filterStyle:function(g,h){var i=h[g];if(typeof i!=="string"||i===""){return null}if(i.match(/^\s*expression/)){return null}if(i.match(/javascript:/)){return null}var j=g.replace(/Top|Right|Left|Bottom/,"");if(!a.safeStyles[g]&&!a.safeStyles[j]){return null}if(!a.styleLengths[g]){return i}return(this.filterStyleLength(g,i,h)?i:null)},filterStyleLength:function(g,i,h){if(typeof a.styleLengths[g]==="string"){i=h[a.styleLengths[g]]}i=this.length2em(i);if(i==null){return false}var j=[-a.lengthMax,a.lengthMax];if(MathJax.Object.isArray(a.styleLengths[g])){j=a.styleLengths[g]}return(i>=j[0]&&i<=j[1])},unit2em:{em:1,ex:0.5,ch:0.5,rem:1,px:1/16,mm:96/25.4/16,cm:96/2.54/16,"in":96/16,pt:96/72/16,pc:96/6/16},length2em:function(h){var g=h.match(/(.+)(em|ex|ch|rem|px|mm|cm|in|pt|pc)/);if(!g){return null}return parseFloat(g[1])*this.unit2em[g[2]]},filterSize:function(g){if(e.fontsize==="none"){return null}if(e.fontsize!=="all"){g=Math.min(Math.max(g,a.sizeMin),a.sizeMax)}return g},filterFontSize:function(g){return(e.fontsize==="all"?g:null)},filterSizeMultiplier:function(g){if(e.fontsize==="none"){g=null}else{if(e.fontsize!=="all"){g=Math.min(1,Math.max(0.6,g)).toString()}}return g},filterScriptLevel:function(g){if(e.fontsize==="none"){g=null}else{if(e.fontsize!=="all"){g=Math.max(0,g).toString()}}return g},filterRequire:function(g){if(e.require==="none"||(e.require!=="all"&&!a.safeRequire[g.toLowerCase()])){g=null}return g}};d.Register.StartupHook("TeX HTML Ready",function(){var g=MathJax.InputJax.TeX;g.Parse.Augment({HREF_attribute:function(j){var i=b.filterURL(this.GetArgument(j)),h=this.GetArgumentMML(j);if(i){h.With({href:i})}this.Push(h)},CLASS_attribute:function(i){var j=b.filterClass(this.GetArgument(i)),h=this.GetArgumentMML(i);if(j){if(h["class"]!=null){j=h["class"]+" "+j}h.With({"class":j})}this.Push(h)},STYLE_attribute:function(i){var j=b.filterStyles(this.GetArgument(i)),h=this.GetArgumentMML(i);if(j){if(h.style!=null){if(j.charAt(j.length-1)!==";"){j+=";"}j=h.style+" "+j}h.With({style:j})}this.Push(h)},ID_attribute:function(j){var i=b.filterID(this.GetArgument(j)),h=this.GetArgumentMML(j);if(i){h.With({id:i})}this.Push(h)}})});d.Register.StartupHook("TeX Jax Ready",function(){var i=MathJax.InputJax.TeX,h=i.Parse,g=b.filter;h.Augment({Require:function(j){var k=this.GetArgument(j).replace(/.*\//,"").replace(/[^a-z0-9_.-]/ig,"");k=b.filterRequire(k);if(k){this.Extension(null,k)}},MmlFilterAttribute:function(j,k){if(g[j]){k=b[g[j]](k)}return k},SetSize:function(j,k){k=b.filterSize(k);if(k){this.stack.env.size=k;this.Push(i.Stack.Item.style().With({styles:{mathsize:k+"em"}}))}}})});d.Register.StartupHook("TeX bbox Ready",function(){var g=MathJax.InputJax.TeX;g.Parse.Augment({BBoxStyle:function(h){return b.filterStyles(h)},BBoxPadding:function(i){var h=b.filterStyles("padding: "+i);return(h?i:0)}})});d.Register.StartupHook("MathML Jax Ready",function(){var h=MathJax.InputJax.MathML.Parse,g=b.filter;h.Augment({filterAttribute:function(i,j){if(g[i]){j=b[g[i]](j)}return j}})});d.Startup.signal.Post("Safe Extension Ready");c.loadComplete("[MathJax]/extensions/Safe.js")})(MathJax.Hub,MathJax.Ajax); diff --git a/mathjax/asset/extensions/TeX/AMScd.js b/mathjax/asset/extensions/TeX/AMScd.js new file mode 100644 index 000000000..3a30fdc2b --- /dev/null +++ b/mathjax/asset/extensions/TeX/AMScd.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/TeX/AMScd.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Extension["TeX/AMScd"]={version:"2.7.5",config:MathJax.Hub.CombineConfig("TeX.CD",{colspace:"5pt",rowspace:"5pt",harrowsize:"2.75em",varrowsize:"1.75em",hideHorizontalLabels:false})};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.ElementJax.mml,e=MathJax.InputJax.TeX,d=e.Stack.Item,c=e.Definitions,a=MathJax.Extension["TeX/AMScd"].config;c.environment.CD="CD_env";c.special["@"]="CD_arrow";c.macros.minCDarrowwidth="CD_minwidth";c.macros.minCDarrowheight="CD_minheight";e.Parse.Augment({CD_env:function(f){this.Push(f);return d.array().With({arraydef:{columnalign:"center",columnspacing:a.colspace,rowspacing:a.rowspace,displaystyle:true},minw:this.stack.env.CD_minw||a.harrowsize,minh:this.stack.env.CD_minh||a.varrowsize})},CD_arrow:function(g){var l=this.string.charAt(this.i);if(!l.match(/[>":"\u2192","<":"\u2190",V:"\u2193",A:"\u2191"}[l];var p=this.GetUpTo(g+l,l),m=this.GetUpTo(g+l,l);if(l===">"||l==="<"){h=b.mo(r).With(f);if(!p){p="\\kern "+o.minw}if(p||m){var j={width:"+11mu",lspace:"6mu"};h=b.munderover(this.mmlToken(h));if(p){p=e.Parse(p,this.stack.env).mml();h.SetData(h.over,b.mpadded(p).With(j).With({voffset:".1em"}))}if(m){m=e.Parse(m,this.stack.env).mml();h.SetData(h.under,b.mpadded(m).With(j))}if(a.hideHorizontalLabels){h=b.mpadded(h).With({depth:0,height:".67em"})}}}else{h=r=this.mmlToken(b.mo(r).With(k));if(p||m){h=b.mrow();if(p){h.Append(e.Parse("\\scriptstyle\\llap{"+p+"}",this.stack.env).mml())}h.Append(r.With({texClass:b.TEXCLASS.ORD}));if(m){h.Append(e.Parse("\\scriptstyle\\rlap{"+m+"}",this.stack.env).mml())}}}}}}if(h){this.Push(h)}this.CD_cell(g)},CD_cell:function(f){var g=this.stack.Top();if((g.table||[]).length%2===0&&(g.row||[]).length===0){this.Push(b.mpadded().With({height:"8.5pt",depth:"2pt"}))}this.Push(d.cell().With({isEntry:true,name:f}))},CD_minwidth:function(f){this.stack.env.CD_minw=this.GetDimen(f)},CD_minheight:function(f){this.stack.env.CD_minh=this.GetDimen(f)}})});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/AMScd.js"); diff --git a/mathjax/asset/extensions/TeX/AMSmath.js b/mathjax/asset/extensions/TeX/AMSmath.js new file mode 100644 index 000000000..2504c5cb4 --- /dev/null +++ b/mathjax/asset/extensions/TeX/AMSmath.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/TeX/AMSmath.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Extension["TeX/AMSmath"]={version:"2.7.5",number:0,startNumber:0,IDs:{},eqIDs:{},labels:{},eqlabels:{},refs:[]};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.ElementJax.mml,h=MathJax.InputJax.TeX,g=MathJax.Extension["TeX/AMSmath"];var d=h.Definitions,f=h.Stack.Item,a=h.config.equationNumbers;var c=function(k){var n=[];for(var l=0,j=k.length;l0){p+="rl";o.push("0em 0em");q--}o=o.join(" ");if(i){return this.AMSarray(l,j,i,p,o)}var m=this.AMSarray(l,j,i,p,o);return this.setArrayAlign(m,k)},EquationBegin:function(i,j){this.checkEqnEnv();this.stack.global.forcetag=(j&&a.autoNumber!=="none");return i},EquationStar:function(i,j){this.stack.global.tagged=true;return j},checkEqnEnv:function(){if(this.stack.global.eqnenv){h.Error(["ErroneousNestingEq","Erroneous nesting of equation structures"])}this.stack.global.eqnenv=true},MultiIntegral:function(j,m){var l=this.GetNext();if(l==="\\"){var k=this.i;l=this.GetArgument(j);this.i=k;if(l==="\\limits"){if(j==="\\idotsint"){m="\\!\\!\\mathop{\\,\\,"+m+"}"}else{m="\\!\\!\\!\\mathop{\\,\\,\\,"+m+"}"}}}this.string=m+" "+this.string.slice(this.i);this.i=0},xArrow:function(k,o,n,i){var m={width:"+"+(n+i)+"mu",lspace:n+"mu"};var p=this.GetBrackets(k),q=this.ParseArg(k);var s=b.mo(b.chars(String.fromCharCode(o))).With({stretchy:true,texClass:b.TEXCLASS.REL});var j=b.munderover(s);j.SetData(j.over,b.mpadded(q).With(m).With({voffset:".15em"}));if(p){p=h.Parse(p,this.stack.env).mml();j.SetData(j.under,b.mpadded(p).With(m).With({voffset:"-.24em"}))}this.Push(j.With({subsupOK:true}))},GetDelimiterArg:function(i){var j=this.trimSpaces(this.GetArgument(i));if(j==""){return null}if(j in d.delimiter){return j}h.Error(["MissingOrUnrecognizedDelim","Missing or unrecognized delimiter for %1",i])},GetStar:function(){var i=(this.GetNext()==="*");if(i){this.i++}return i}});f.Augment({autoTag:function(){var j=this.global;if(!j.notag){g.number++;j.tagID=a.formatNumber(g.number.toString());var i=h.Parse("\\text{"+a.formatTag(j.tagID)+"}",{}).mml();j.tag=b.mtd(i).With({id:a.formatID(j.tagID)})}},getTag:function(){var m=this.global,k=m.tag;m.tagged=true;if(m.label){if(a.useLabelIds){k.id=a.formatID(m.label)}g.eqlabels[m.label]={tag:m.tagID,id:k.id}}if(document.getElementById(k.id)||g.IDs[k.id]||g.eqIDs[k.id]){var l=0,j;do{l++;j=k.id+"_"+l}while(document.getElementById(j)||g.IDs[j]||g.eqIDs[j]);k.id=j;if(m.label){g.eqlabels[m.label].id=j}}g.eqIDs[k.id]=1;this.clearTag();return k},clearTag:function(){var i=this.global;delete i.tag;delete i.tagID;delete i.label},fixInitialMO:function(l){for(var k=0,j=l.length;k0){this.stack[i].Undef(e,f);i--}if(!MathJax.Object.isArray(h)){h=[h]}if(this.isEqn){h.global=true}}this.stack[i].Def(e,h,f)},Push:function(e){this.stack.push(e);this.top=this.stack.length},Pop:function(){var e;if(this.top>1){e=this.stack[--this.top];if(this.isEqn){this.stack.pop()}}else{if(this.isEqn){this.Clear()}}return e},Find:function(e,g){for(var f=this.top-1;f>=0;f--){var h=this.stack[f].Find(e,g);if(h){return h}}return null},Merge:function(e){e.stack[0].MergeGlobals(this);this.stack[this.top-1].Merge(e.stack[0]);var f=[this.top,this.stack.length-this.top].concat(e.stack.slice(1));this.stack.splice.apply(this.stack,f);this.top=this.stack.length},Reset:function(){this.top=this.stack.length},Clear:function(e){this.stack=[this.stack[0].Clear()];this.top=this.stack.length}},{nsFrame:a});b.Add({macros:{begingroup:"BeginGroup",endgroup:"EndGroup",global:"Global",gdef:["Macro","\\global\\def"]}},null,true);d.Parse.Augment({BeginGroup:function(e){d.eqnStack.Push(a())},EndGroup:function(e){if(d.eqnStack.top>1){d.eqnStack.Pop()}else{if(d.rootStack.top===1){d.Error(["ExtraEndMissingBegin","Extra %1 or missing \\begingroup",e])}else{d.eqnStack.Clear();d.rootStack.Pop()}}},csFindMacro:function(e){return(d.eqnStack.Find(e,"macros")||d.rootStack.Find(e,"macros"))},envFindName:function(e){return(d.eqnStack.Find(e,"environments")||d.rootStack.Find(e,"environments"))},setDef:function(e,f){f.isUser=true;d.eqnStack.Def(e,f,"macros",this.stack.env.isGlobal);delete this.stack.env.isGlobal},setEnv:function(e,f){f.isUser=true;d.eqnStack.Def(e,f,"environments")},Global:function(e){var f=this.i;var g=this.GetCSname(e);this.i=f;if(g!=="let"&&g!=="def"&&g!=="newcommand"&&g!=="DeclareMathOperator"&&g!=="Newextarrow"){d.Error(["GlobalNotFollowedBy","%1 not followed by \\let, \\def, or \\newcommand",e])}this.stack.env.isGlobal=true}});d.rootStack=c();d.eqnStack=c(true);d.prefilterHooks.Add(function(){d.rootStack.Reset();d.eqnStack.Clear(true)});d.postfilterHooks.Add(function(){d.rootStack.Merge(d.eqnStack)});MathJax.Hub.Startup.signal.Post("TeX begingroup Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/begingroup.js"); diff --git a/mathjax/asset/extensions/TeX/boldsymbol.js b/mathjax/asset/extensions/TeX/boldsymbol.js new file mode 100644 index 000000000..b3a5dbaf2 --- /dev/null +++ b/mathjax/asset/extensions/TeX/boldsymbol.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/TeX/boldsymbol.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Extension["TeX/boldsymbol"]={version:"2.7.5"};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var a=MathJax.ElementJax.mml;var d=MathJax.InputJax.TeX;var b=d.Definitions;var c={};c[a.VARIANT.NORMAL]=a.VARIANT.BOLD;c[a.VARIANT.ITALIC]=a.VARIANT.BOLDITALIC;c[a.VARIANT.FRAKTUR]=a.VARIANT.BOLDFRAKTUR;c[a.VARIANT.SCRIPT]=a.VARIANT.BOLDSCRIPT;c[a.VARIANT.SANSSERIF]=a.VARIANT.BOLDSANSSERIF;c["-tex-caligraphic"]="-tex-caligraphic-bold";c["-tex-oldstyle"]="-tex-oldstyle-bold";b.Add({macros:{boldsymbol:"Boldsymbol"}},null,true);d.Parse.Augment({mmlToken:function(f){if(this.stack.env.boldsymbol){var e=f.Get("mathvariant");if(e==null){f.mathvariant=a.VARIANT.BOLD}else{f.mathvariant=(c[e]||e)}}return f},Boldsymbol:function(h){var e=this.stack.env.boldsymbol,f=this.stack.env.font;this.stack.env.boldsymbol=true;this.stack.env.font=null;var g=this.ParseArg(h);this.stack.env.font=f;this.stack.env.boldsymbol=e;this.Push(g)}});MathJax.Hub.Startup.signal.Post("TeX boldsymbol Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/boldsymbol.js"); diff --git a/mathjax/asset/extensions/TeX/cancel.js b/mathjax/asset/extensions/TeX/cancel.js new file mode 100644 index 000000000..2b8424e65 --- /dev/null +++ b/mathjax/asset/extensions/TeX/cancel.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/TeX/cancel.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Extension["TeX/cancel"]={version:"2.7.5",ALLOWED:{color:1,mathcolor:1,background:1,mathbackground:1,padding:1,thickness:1}};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var c=MathJax.InputJax.TeX,a=MathJax.ElementJax.mml,b=MathJax.Extension["TeX/cancel"];b.setAttributes=function(h,e){if(e!==""){e=e.replace(/ /g,"").split(/,/);for(var g=0,d=e.length;g1){this.TEX.Error(["ModelArg2","Color values for the %1 model must be between %2 and %3","rgb",0,1])}d=Math.floor(d*255).toString(16);if(d.length<2){d="0"+d}a+=d}return a},get_RGB:function(b){b=b.replace(/^\s+/,"").replace(/\s+$/,"").split(/\s*,\s*/);var a="#";if(b.length!==3){this.TEX.Error(["ModelArg1","Color values for the %1 model require 3 numbers","RGB"])}for(var c=0;c<3;c++){if(!b[c].match(/^\d+$/)){this.TEX.Error(["InvalidNumber","Invalid number"])}var d=parseInt(b[c]);if(d>255){this.TEX.Error(["ModelArg2","Color values for the %1 model must be between %2 and %3","RGB",0,255])}d=d.toString(16);if(d.length<2){d="0"+d}a+=d}return a},get_gray:function(a){if(!a.match(/^\s*(\d+(\.\d*)?|\.\d+)\s*$/)){this.TEX.Error(["InvalidDecimalNumber","Invalid decimal number"])}var b=parseFloat(a);if(b<0||b>1){this.TEX.Error(["ModelArg2","Color values for the %1 model must be between %2 and %3","gray",0,1])}b=Math.floor(b*255).toString(16);if(b.length<2){b="0"+b}return"#"+b+b+b},get_named:function(a){if(this.colors.hasOwnProperty(a)){return this.colors[a]}return a},padding:function(){var c="+"+this.config.padding;var a=this.config.padding.replace(/^.*?([a-z]*)$/,"$1");var b="+"+(2*parseFloat(c))+a;return{width:b,height:c,depth:c,lspace:this.config.padding}}};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var d=MathJax.InputJax.TeX,a=MathJax.ElementJax.mml;var c=d.Stack.Item;var b=MathJax.Extension["TeX/color"];b.TEX=d;d.Definitions.Add({macros:{color:"Color",textcolor:"TextColor",definecolor:"DefineColor",colorbox:"ColorBox",fcolorbox:"fColorBox"}},null,true);d.Parse.Augment({Color:function(h){var g=this.GetBrackets(h),e=this.GetArgument(h);e=b.getColor(g,e);var f=c.style().With({styles:{mathcolor:e}});this.stack.env.color=e;this.Push(f)},TextColor:function(h){var g=this.GetBrackets(h),f=this.GetArgument(h);f=b.getColor(g,f);var e=this.stack.env.color;this.stack.env.color=f;var i=this.ParseArg(h);if(e){this.stack.env.color}else{delete this.stack.env.color}this.Push(a.mstyle(i).With({mathcolor:f}))},DefineColor:function(g){var f=this.GetArgument(g),e=this.GetArgument(g),h=this.GetArgument(g);b.colors[f]=b.getColor(e,h)},ColorBox:function(g){var f=this.GetArgument(g),e=this.InternalMath(this.GetArgument(g));this.Push(a.mpadded.apply(a,e).With({mathbackground:b.getColor("named",f)}).With(b.padding()))},fColorBox:function(g){var h=this.GetArgument(g),f=this.GetArgument(g),e=this.InternalMath(this.GetArgument(g));this.Push(a.mpadded.apply(a,e).With({mathbackground:b.getColor("named",f),style:"border: "+b.config.border+" solid "+b.getColor("named",h)}).With(b.padding()))}});MathJax.Hub.Startup.signal.Post("TeX color Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/color.js"); diff --git a/mathjax/asset/extensions/TeX/enclose.js b/mathjax/asset/extensions/TeX/enclose.js new file mode 100644 index 000000000..38273a232 --- /dev/null +++ b/mathjax/asset/extensions/TeX/enclose.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/TeX/enclose.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Extension["TeX/enclose"]={version:"2.7.5",ALLOWED:{arrow:1,color:1,mathcolor:1,background:1,mathbackground:1,padding:1,thickness:1}};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var c=MathJax.InputJax.TeX,a=MathJax.ElementJax.mml,b=MathJax.Extension["TeX/enclose"].ALLOWED;c.Definitions.Add({macros:{enclose:"Enclose"}},null,true);c.Parse.Augment({Enclose:function(g){var k=this.GetArgument(g),e=this.GetBrackets(g),j=this.ParseArg(g);var l={notation:k.replace(/,/g," ")};if(e){e=e.replace(/ /g,"").split(/,/);for(var h=0,d=e.length;h0){f=Math.min(3,e.scriptlevel+1)}else{f=(e.displaystyle?0:1)}var g=this.inherit;while(g&&g.type!=="math"){g=g.inherit}if(g){this.selection=f}this.choosing=false;return f},selected:function(){return this.data[this.choice()]},setTeXclass:function(e){return this.selected().setTeXclass(e)},isSpacelike:function(){return this.selected().isSpacelike()},isEmbellished:function(){return this.selected().isEmbellished()},Core:function(){return this.selected()},CoreMO:function(){return this.selected().CoreMO()},toHTML:function(e){e=this.HTMLcreateSpan(e);e.bbox=this.Core().toHTML(e).bbox;if(e.firstChild&&e.firstChild.style.marginLeft){e.style.marginLeft=e.firstChild.style.marginLeft;e.firstChild.style.marginLeft=""}return e},toSVG:function(){var e=this.Core().toSVG();this.SVGsaveData(e);return e},toCommonHTML:function(e){e=this.CHTMLcreateNode(e);this.CHTMLhandleStyle(e);this.CHTMLhandleColor(e);this.CHTMLaddChild(e,this.choice(),{});return e},toPreviewHTML:function(e){e=this.PHTMLcreateSpan(e);this.PHTMLhandleStyle(e);this.PHTMLhandleColor(e);this.PHTMLaddChild(e,this.choice(),{});return e}});MathJax.Hub.Startup.signal.Post("TeX mathchoice Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/mathchoice.js"); diff --git a/mathjax/asset/extensions/TeX/mediawiki-texvc.js b/mathjax/asset/extensions/TeX/mediawiki-texvc.js new file mode 100644 index 000000000..7318577bf --- /dev/null +++ b/mathjax/asset/extensions/TeX/mediawiki-texvc.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/TeX/mediawiki-texvc.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Extension["TeX/mediawiki-texvc"]={version:"2.7.5"};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){MathJax.InputJax.TeX.Definitions.Add({macros:{AA:["Macro","\u00c5"],alef:["Macro","\\aleph"],alefsym:["Macro","\\aleph"],Alpha:["Macro","\\mathrm{A}"],and:["Macro","\\land"],ang:["Macro","\\angle"],Bbb:["Macro","\\mathbb"],Beta:["Macro","\\mathrm{B}"],bold:["Macro","\\mathbf"],bull:["Macro","\\bullet"],C:["Macro","\\mathbb{C}"],Chi:["Macro","\\mathrm{X}"],clubs:["Macro","\\clubsuit"],cnums:["Macro","\\mathbb{C}"],Complex:["Macro","\\mathbb{C}"],coppa:["Macro","\u03D9"],Coppa:["Macro","\u03D8"],Dagger:["Macro","\\ddagger"],Digamma:["Macro","\u03DC"],darr:["Macro","\\downarrow"],dArr:["Macro","\\Downarrow"],Darr:["Macro","\\Downarrow"],dashint:["Macro","\\unicodeInt{x2A0D}"],ddashint:["Macro","\\unicodeInt{x2A0E}"],diamonds:["Macro","\\diamondsuit"],empty:["Macro","\\emptyset"],Epsilon:["Macro","\\mathrm{E}"],Eta:["Macro","\\mathrm{H}"],euro:["Macro","\u20AC"],exist:["Macro","\\exists"],geneuro:["Macro","\u20AC"],geneuronarrow:["Macro","\u20AC"],geneurowide:["Macro","\u20AC"],H:["Macro","\\mathbb{H}"],hAar:["Macro","\\Leftrightarrow"],harr:["Macro","\\leftrightarrow"],Harr:["Macro","\\Leftrightarrow"],hearts:["Macro","\\heartsuit"],image:["Macro","\\Im"],infin:["Macro","\\infty"],Iota:["Macro","\\mathrm{I}"],isin:["Macro","\\in"],Kappa:["Macro","\\mathrm{K}"],koppa:["Macro","\u03DF"],Koppa:["Macro","\u03DE"],lang:["Macro","\\langle"],larr:["Macro","\\leftarrow"],Larr:["Macro","\\Leftarrow"],lArr:["Macro","\\Leftarrow"],lrarr:["Macro","\\leftrightarrow"],Lrarr:["Macro","\\Leftrightarrow"],lrArr:["Macro","\\Leftrightarrow"],Mu:["Macro","\\mathrm{M}"],N:["Macro","\\mathbb{N}"],natnums:["Macro","\\mathbb{N}"],Nu:["Macro","\\mathrm{N}"],O:["Macro","\\emptyset"],oint:["Macro","\\unicodeInt{x222E}"],oiint:["Macro","\\unicodeInt{x222F}"],oiiint:["Macro","\\unicodeInt{x2230}"],ointctrclockwise:["Macro","\\unicodeInt{x2233}"],officialeuro:["Macro","\u20AC"],Omicron:["Macro","\\mathrm{O}"],or:["Macro","\\lor"],P:["Macro","\u00B6"],pagecolor:["Macro","",1],part:["Macro","\\partial"],plusmn:["Macro","\\pm"],Q:["Macro","\\mathbb{Q}"],R:["Macro","\\mathbb{R}"],rang:["Macro","\\rangle"],rarr:["Macro","\\rightarrow"],Rarr:["Macro","\\Rightarrow"],rArr:["Macro","\\Rightarrow"],real:["Macro","\\Re"],reals:["Macro","\\mathbb{R}"],Reals:["Macro","\\mathbb{R}"],Rho:["Macro","\\mathrm{P}"],sdot:["Macro","\\cdot"],sampi:["Macro","\u03E1"],Sampi:["Macro","\u03E0"],sect:["Macro","\\S"],spades:["Macro","\\spadesuit"],stigma:["Macro","\u03DB"],Stigma:["Macro","\u03DA"],sub:["Macro","\\subset"],sube:["Macro","\\subseteq"],supe:["Macro","\\supseteq"],Tau:["Macro","\\mathrm{T}"],textvisiblespace:["Macro","\u2423"],thetasym:["Macro","\\vartheta"],uarr:["Macro","\\uparrow"],uArr:["Macro","\\Uparrow"],Uarr:["Macro","\\Uparrow"],unicodeInt:["Macro","\\mathop{\\vcenter{\\mathchoice{\\huge\\unicode{#1}\\,}{\\unicode{#1}}{\\unicode{#1}}{\\unicode{#1}}}\\,}\\nolimits",1],varcoppa:["Macro","\u03D9"],varstigma:["Macro","\u03DB"],varointclockwise:["Macro","\\unicodeInt{x2232}"],vline:["Macro","\\smash{\\large\\lvert}",0],weierp:["Macro","\\wp"],Z:["Macro","\\mathbb{Z}"],Zeta:["Macro","\\mathrm{Z}"]}})});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/mediawiki-texvc.js"); diff --git a/mathjax/asset/extensions/TeX/mhchem.js b/mathjax/asset/extensions/TeX/mhchem.js new file mode 100644 index 000000000..672d1fdc4 --- /dev/null +++ b/mathjax/asset/extensions/TeX/mhchem.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/TeX/mhchem.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +if(MathJax.Extension["TeX/mhchem"]){MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/mhchem.js")}else{MathJax.Extension["TeX/mhchem"]={version:"2.7.5",config:MathJax.Hub.CombineConfig("TeX.mhchem",{legacy:true})};if(!MathJax.Extension["TeX/mhchem"].config.legacy){if(!MathJax.Ajax.config.path.mhchem){MathJax.Ajax.config.path.mhchem=MathJax.Hub.config.root+"/extensions/TeX/mhchem3"}MathJax.Callback.Queue(["Require",MathJax.Ajax,"[mhchem]/mhchem.js"],["loadComplete",MathJax.Ajax,"[MathJax]/extensions/TeX/mhchem.js"])}else{MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.InputJax.TeX;var a=MathJax.Object.Subclass({string:"",i:0,tex:"",TEX:"",atom:false,sup:"",sub:"",presup:"",presub:"",Init:function(c){this.string=c},ParseTable:{"-":"Minus","+":"Plus","(":"Open",")":"Close","[":"Open","]":"Close","<":"Less","^":"Superscript",_:"Subscript","*":"Dot",".":"Dot","=":"Equal","#":"Pound","$":"Math","\\":"Macro"," ":"Space"},Arrows:{"->":"rightarrow","<-":"leftarrow","<->":"leftrightarrow","<=>":"rightleftharpoons","<=>>":"Rightleftharpoons","<<=>":"Leftrightharpoons","^":"uparrow",v:"downarrow"},Bonds:{"-":"-","=":"=","#":"\\equiv","~":"\\tripledash","~-":"\\begin{CEstack}{}\\tripledash\\\\-\\end{CEstack}","~=":"\\raise2mu{\\begin{CEstack}{}\\tripledash\\\\-\\\\-\\end{CEstack}}","~--":"\\raise2mu{\\begin{CEstack}{}\\tripledash\\\\-\\\\-\\end{CEstack}}","-~-":"\\raise2mu{\\begin{CEstack}{}-\\\\\\tripledash\\\\-\\end{CEstack}}","...":"{\\cdot}{\\cdot}{\\cdot}","....":"{\\cdot}{\\cdot}{\\cdot}{\\cdot}","->":"\\rightarrow","<-":"\\leftarrow","??":"\\text{??}"},Parse:function(){this.tex="";this.atom=false;while(this.i"){this.i+=2;this.AddArrow("->");return}else{this.tex+="{-}"}}this.i++},ParsePlus:function(d){if(this.atom){this.sup+=d}else{this.FinishAtom();this.tex+=d}this.i++},ParseDot:function(d){this.FinishAtom();this.tex+="\\cdot ";this.i++},ParseEqual:function(d){this.FinishAtom();this.tex+="{=}";this.i++},ParsePound:function(d){this.FinishAtom();this.tex+="{\\equiv}";this.i++},ParseOpen:function(e){this.FinishAtom();var d=this.Match(/^\([v^]\)/);if(d){this.tex+="{\\"+this.Arrows[d.charAt(1)]+"}"}else{this.tex+="{"+e;this.i++}},ParseClose:function(d){this.FinishAtom();this.atom=true;this.tex+=d+"}";this.i++},ParseLess:function(e){this.FinishAtom();var d=this.Match(/^(<->?|<=>>?|<<=>)/);if(!d){this.tex+=e;this.i++}else{this.AddArrow(d)}},ParseSuperscript:function(f){f=this.string.charAt(++this.i);if(f==="{"){this.i++;var d=this.Find("}");if(d==="-."){this.sup+="{-}{\\cdot}"}else{if(d){this.sup+=a(d).Parse().replace(/^\{-\}/,"-")}}}else{if(f===" "||f===""){this.tex+="{\\"+this.Arrows["^"]+"}";this.i++}else{var e=this.Match(/^(\d+|-\.)/);if(e){this.sup+=e}}}},ParseSubscript:function(e){if(this.string.charAt(++this.i)=="{"){this.i++;this.sub+=a(this.Find("}")).Parse().replace(/^\{-\}/,"-")}else{var d=this.Match(/^\d+/);if(d){this.sub+=d}}},ParseMath:function(d){this.FinishAtom();this.i++;this.tex+=this.Find(d)},ParseMacro:function(f){this.FinishAtom();this.i++;var d=this.Match(/^([a-z]+|.)/i)||" ";if(d==="sbond"){this.tex+="{-}"}else{if(d==="dbond"){this.tex+="{=}"}else{if(d==="tbond"){this.tex+="{\\equiv}"}else{if(d==="bond"){var e=(this.Match(/^\{.*?\}/)||"");e=e.substr(1,e.length-2);this.tex+="{"+(this.Bonds[e]||"\\text{??}")+"}"}else{if(d==="{"){this.tex+="{\\{"}else{if(d==="}"){this.tex+="\\}}";this.atom=true}else{this.tex+=f+d}}}}}}},ParseSpace:function(d){this.FinishAtom();this.i++},ParseOther:function(d){this.FinishAtom();this.tex+=d;this.i++},AddArrow:function(e){var g=this.Match(/^[CT]\[/);if(g){this.i--;g=g.charAt(0)}var d=this.GetBracket(g),f=this.GetBracket(g);e=this.Arrows[e];if(d||f){if(f){e+="["+f+"]"}e+="{"+d+"}";e="\\mathrel{\\x"+e+"}"}else{e="\\long"+e+" "}this.tex+=e},FinishAtom:function(c){if(this.sup||this.sub||this.presup||this.presub){if(!c&&!this.atom){if(this.tex===""&&!this.sup&&!this.sub){return}if(!this.presup&&!this.presub&&(this.tex===""||this.tex==="{"||(this.tex==="}"&&this.TEX.substr(-1)==="{"))){this.presup=this.sup,this.presub=this.sub;this.sub=this.sup="";this.TEX+=this.tex;this.tex="";return}}if(this.sub&&!this.sup){this.sup="\\Space{0pt}{0pt}{.2em}"}if((this.presup||this.presub)&&this.tex!=="{"){if(!this.presup&&!this.sup){this.presup="\\Space{0pt}{0pt}{.2em}"}this.tex="\\CEprescripts{"+(this.presub||"\\CEnone")+"}{"+(this.presup||"\\CEnone")+"}{"+(this.tex!=="}"?this.tex:"")+"}{"+(this.sub||"\\CEnone")+"}{"+(this.sup||"\\CEnone")+"}"+(this.tex==="}"?"}":"");this.presub=this.presup=""}else{if(this.sup){this.tex+="^{"+this.sup+"}"}if(this.sub){this.tex+="_{"+this.sub+"}"}}this.sup=this.sub=""}this.TEX+=this.tex;this.tex="";this.atom=false},GetBracket:function(e){if(this.string.charAt(this.i)!=="["){return""}this.i++;var d=this.Find("]");if(e==="C"){d="\\ce{"+d+"}"}else{if(e==="T"){if(!d.match(/^\{.*\}$/)){d="{"+d+"}"}d="\\text"+d}}return d},Match:function(d){var c=d.exec(this.string.substr(this.i));if(c){c=c[0];this.i+=c.length}return c},Find:function(h){var d=this.string.length,e=this.i,g=0;while(this.i0))return i;if(c.s||(n=f.t),!c.u)break n}}}if(u<=0)throw["MhchemBugU","mhchem bug U. Please report."]}}, +t.j= +function(n,r){return r?n?n.concat(r):[].concat(r):n},t.w={"~C":/^$/,"~A":/^./,"~B":/^./,"%m":/^\s/,"%l":/^\s(?=[A-Z\\$])/,"~@":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,"~M":/^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/,"@z":/^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/,"~P":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,"@%":/^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/,"~O":/^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/,"~u":/^[0-9]+/,"@h":/^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/,"@g":/^[+\-]?[0-9]+(?:[.,][0-9]+)?/,"%T": +function(n){var r=n.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/);return r&&r[0]?{h:r.splice(1),t:n.substr(r[0].length)}:null},aj: +function(n){var r=n.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/);return r&&r[0]?{h:r.splice(1),t:n.substr(r[0].length)}:null},"%n": +function(n){var r=this["@W"](n,"",/^\([a-z]{1,3}(?=[\),])/,")","");if(r&&r.t.match(/^($|[\s,;\)\]\}])/))return r;var t=n.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/);return t?{h:t[0],t:n.substr(t[0].length)}:null},ae:/^_\{(\([a-z]{1,3}\))\}/,"@K":/^(?:\\\{|\[|\()/,"@c":/^(?:\)|\]|\\\})/,", ":/^[,;]\s*/,",":/^[,;]/,".":/^[.]/,". ":/^([.\u22C5\u00B7\u2022])\s*/,"@i":/^\.\.\.(?=$|[^.])/,"* ":/^([*])\s*/,"@P": +function(n){return this["@W"](n,"^{","","","}")},"@L": +function(n){return this["@W"](n,"^","$","$","")},"^a":/^\^([0-9]+|[^\\_])/,"@O": +function(n){return this["@W"](n,"^",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"@N": +function(n){return this["@W"](n,"^",/^\\[a-zA-Z]+\{/,"}","")},"^\\x":/^\^(\\[a-zA-Z]+)\s*/,"%U":/^\^(-?\d+)/,"'":/^'/,"@Y": +function(n){return this["@W"](n,"_{","","","}")},"@Q": +function(n){return this["@W"](n,"_","$","$","")},_9:/^_([+\-]?[0-9]+|[^\\])/,"@T": +function(n){return this["@W"](n,"_",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"@S": +function(n){return this["@W"](n,"_",/^\\[a-zA-Z]+\{/,"}","")},"@R":/^_(\\[a-zA-Z]+)\s*/,"^_":/^(?:\^(?=_)|\_(?=\^)|[\^_]$)/,"{}":/^\{\}/,"%B": +function(n){return this["@W"](n,"","{","}","")},"%A": +function(n){return this["@W"](n,"{","","","}")},"@~": +function(n){return this["@W"](n,"","$","$","")},"@a": +function(n){return this["@W"](n,"${","","","}$")},"@@": +function(n){return this["@W"](n,"$","","","$")},"%D":/^[=<>]/,"#":/^[#\u2261]/,"+":/^\+/,"-$":/^-(?=[\s_},;\]\/]|$|\([a-z]+\))/,"-9":/^-(?=[0-9])/,"@f":/^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/,"-":/^-/,ai:/^(?:\\pm|\$\\pm\$|\+-|\+\/-)/,"~Q":/^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/,"~c":/^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/,"@r": +function(n){return this["@W"](n,"\\bond{","","","}")},"->":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/,"@m":/^[CMT](?=\[)/,"@o": +function(n){return this["@W"](n,"[","","","]")},al:/^(&|@q|\\hline)\s*/,"@p":/^(?:\\[,\ ;:])/,"@G": +function(n){return this["@W"](n,"",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"@F": +function(n){return this["@W"](n,"",/^\\[a-zA-Z]+\{/,"}","")},"@t":/^\\ca(?:\s+|(?![a-zA-Z]))/,"@E":/^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/,"~R":/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,"~S":/^[\/~|]/,"@y": +function(n){return this["@W"](n,"\\frac{","","","}","{","","","}")},"@A": +function(n){return this["@W"](n,"\\overset{","","","}","{","","","}")},"@C": +function(n){return this["@W"](n,"\\underset{","","","}","{","","","}")},"@B": +function(n){return this["@W"](n,"\\underbrace{","","","}_","{","","","}")},"@w": +function(n){return this["@W"](n,"\\color{","","","}")},"@x": +function(n){return this["@W"](n,"\\color{","","","}","{","","","}")},"@v": +function(n){return this["@W"](n,"\\color","\\","",/^(?=\{)/,"{","","","}")},"@u": +function(n){return this["@W"](n,"\\ce{","","","}")},"~Z":/^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"a~":/^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"%d":/^[IVX]+/,"@j":/^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,"~%": +function(n){var r;if(r=n.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/))return{h:r[0],t:n.substr(r[0].length)};var t=this["@W"](n,"","$","$","");return t&&(r=t.h.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/))?{h:r[0],t:n.substr(r[0].length)}:null},"~a": +function(n){return this["~%"](n)},"@b":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,"~E": +function(n){if(n.match(/^\([a-z]+\)$/))return null;var r=n.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);return r?{h:r[0],t:n.substr(r[0].length)}:null},"%z":/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,"/":/^\s*(\/)\s*/,"//":/^\s*(\/\/)\s*/,"*":/^\s*\*\s*/,"@W": +function(n,r,t,o,e,a,u,i,s,l){var h=this["@V"](n,r);if(null===h)return null;if(n=n.substr(h.length),h=this["@V"](n,t),null===h)return null;var p=this["@U"](n,h.length,o||e);if(null===p)return null;var c=n.substring(0,o?p.y:p.z);if(a||u){var f=this["@W"](n.substr(p.y),a,u,i,s);if(null===f)return null;var m=[c,f.h];return l&&(m=m.join("")),{h:m,t:f.t}}return{h:c,t:n.substr(p.y)}}, +"@V": +function(n,r){if("string"==typeof r)return 0!==n.indexOf(r)?null:r;var t=n.match(r);return t?t[0]:null},"@U": +function(n,r,t){for(var o=0;r":{"0|1|2|3":{k:"r=",n:"r"},"a|as":{k:["~T","r="],n:"r"},"*":{k:["~T","r="],n:"r"}}, +"+":{o:{k:"~t",n:"d"},"d|D":{k:"d=",n:"d"},q:{k:"d=",n:"qd"},"qd|qD":{k:"d=",n:"qd"},dq:{k:["~T","d="],n:"d"},3:{k:["%j","~T","~Q"],n:"0"}}, +"~%":{"0|2":{k:"a=",n:"a"}}, +ai:{"0|1|2|a|as":{k:["%j","~T",{l:"~Q",m:"\\pm"}],n:"0"}}, +"~Q":{"0|1|2|a|as":{k:["%j","~T","~Q"],n:"0"}}, +"-$":{"o|q":{k:["~g","~T"],n:"qd"},d:{k:"d=",n:"d"},D:{k:["~T",{l:"~f",m:"-"}],n:"3"},q:{k:"d=",n:"qd"},qd:{k:"d=",n:"qd"},"qD|dq":{k:["~T",{l:"~f",m:"-"}],n:"3"}}, +"-9":{"3|o":{k:["~T",{l:"~J",m:"~I"}],n:"3"}}, +"@f":{o:{k:{l:"@e",m:!0},n:"2"},d:{k:{l:"@d",m:!0},n:"2"}}, +"-":{"0|1|2":{k:[{l:"~T",m:1},"%E",{l:"~f",m:"-"}],n:"3"},3:{k:{l:"~f",m:"-"}}, +a:{k:["~T",{l:"~J",m:"~I"}],n:"2"},as:{k:[{l:"~T",m:2},{l:"~f",m:"-"}],n:"3"},b:{k:"b="},o:{k:"@e",n:"2"},q:{k:"@e",n:"2"},"d|qd|dq":{k:"@d",n:"2"},"D|qD|p":{k:["~T",{l:"~f",m:"-"}],n:"3"}}, +"~a":{"1|3":{k:"a=",n:"a"}}, +"~M":{"0|1|2|3|a|as|b|p|bp|o":{k:"o=",n:"o"},"q|dq":{k:["~T","o="],n:"o"},"d|D|qd|qD":{k:"~N",n:"o"}}, +"~u":{o:{k:"q=",n:"q"},"d|D":{k:"q=",n:"dq"},q:{k:["~T","o="],n:"o"},a:{k:"o=",n:"o"}}, +"%l":{"b|p|bp":{}}, +"%m":{a:{n:"as"},0:{k:"%j"},"1|2":{k:"%k"},"r|rt|rd|%i|%h":{k:"~T",n:"0"},"*":{k:["~T","%k"],n:"1"}}, +al:{"1|2":{k:["~T",{l:"~K",m:"al"}]}, +"*":{k:["~T",{l:"~K",m:"al"}],n:"0"}}, +"@o":{"r|rt":{k:"%a",n:"rd"},"rd|%i":{k:"%f",n:"%h"}}, +"@i":{"o|d|D|dq|qd|qD":{k:["~T",{l:"~f",m:"..."}],n:"3"},"*":{k:[{l:"~T",m:1},{l:"~J",m:"~z"}],n:"1"}}, +". |* ":{"*":{k:["~T",{l:"~J",m:"~~"}],n:"1"}}, +"%n":{"*":{k:["~T","%p"],n:"1"}}, +"@K":{"a|as|o":{k:["o=","~T","%G"],n:"2"},"0|1|2|3":{k:["o=","~T","%G"],n:"2"},"*":{k:["~T","o=","~T","%G"],n:"2"}}, +"@c":{"0|1|2|3|b|p|bp|o":{k:["o=","%H"],n:"o"},"a|as|d|D|q|qd|qD|dq":{k:["~T","o=","%H"],n:"o"}}, +", ":{"*":{k:["~T","~q"],n:"0"}}, +"^_":{"*":{}}, +"@P|@L":{"0|1|2|as":{k:"b=",n:"b"},p:{k:"b=",n:"bp"},"3|o":{k:"~t",n:"D"},q:{k:"d=",n:"qD"},"d|D|qd|qD|dq":{k:["~T","d="],n:"D"}}, +"^a|@O|@N|^\\x|'":{"0|1|2|as":{k:"b=",n:"b"},p:{k:"b=",n:"bp"},"3|o":{k:"~t",n:"d"},q:{k:"d=",n:"qd"},"d|qd|D|qD":{k:"d="},dq:{k:["~T","d="],n:"d"}}, +ae:{"d|D|q|qd|qD|dq":{k:["~T","q="],n:"q"}}, +"@Y|@Q|_9|@T|@S|@R":{"0|1|2|as":{k:"p=",n:"p"},b:{k:"p=",n:"bp"},"3|o":{k:"q=",n:"q"},"d|D":{k:"q=",n:"dq"},"q|qd|qD|dq":{k:["~T","q="],n:"q"}}, +"%D":{"0|1|2|3|a|as|o|q|d|D|qd|qD|dq":{k:[{l:"~T",m:2},"~f"],n:"3"}}, +"#":{"0|1|2|3|a|as|o":{k:[{l:"~T",m:2},{l:"~f",m:"#"}],n:"3"}}, +"{}":{"*":{k:{l:"~T",m:1},n:"1"}}, +"%B":{"0|1|2|3|a|as|b|p|bp":{k:"o=",n:"o"},"o|d|D|q|qd|qD|dq":{k:["~T","o="],n:"o"}}, +"@~":{a:{k:"a="},"0|1|2|3|as|b|p|bp|o":{k:"o=",n:"o"},"as|o":{k:"o="},"q|d|D|qd|qD|dq":{k:["~T","o="],n:"o"}}, +"@r":{"*":{k:[{l:"~T",m:2},"~f"],n:"3"}}, +"@y":{"*":{k:[{l:"~T",m:1},"~H"],n:"3"}}, +"@A":{"*":{k:[{l:"~T",m:2},"~X"],n:"3"}}, +"@C":{"*":{k:[{l:"~T",m:2},"%y"],n:"3"}}, +"@B":{"*":{k:[{l:"~T",m:2},"%w"],n:"3"}}, +"@x|@v":{"*":{k:[{l:"~T",m:2},"~k"],n:"3"}}, +"@w":{"*":{k:[{l:"~T",m:2},"~m"]}}, +"@u":{"*":{k:[{l:"~T",m:2},"ce"],n:"3"}}, +"@p":{"*":{k:[{l:"~T",m:1},"~s"],n:"1"}}, +"@G|@F|@E":{"0|1|2|3|a|as|b|p|bp|o|c0":{k:["o=","~T"],n:"3"},"*":{k:["~T","o=","~T"],n:"3"}}, +"~S":{"*":{k:[{l:"~T",m:1},"~s"],n:"3"}}, +"~B":{a:{k:"@Z",n:"o",s:!0},as:{k:[{l:"~T"},"%k"],n:"1",s:!0},"r|rt|rd|%i|%h":{k:["~T"],n:"0",s:!0},"*":{k:["~T","~s"],n:"3"}}}),g:{"~N": +function(n,r){var o;if(n.d.match(/^[0-9]+$/)){var e=n.d;n.d=void 0,o=this["~T"](n),n.b=e}else o=this["~T"](n);return t.g["o="](n,r),o},"~t": +function(n,r){n.d=r,n["%I"]="kv"},"~g": +function(n,r){if(n.yB){var o=t.j(o,this["~T"](n));return o=t.j(o,t.g["~f"](n,r,"-"))}n.d=r},"@e": +function(n,r,o){var e=o||this["@X"](n,r),a=t.j(null,this["~T"](n,r));return a=e?t.j(a,{l:"~I"}):t.j(a,t.g["~f"](n,r,"-"))},"@d": +function(n,r,o){var e,a=o||this["@X"](n,r);if(a)e=t.j(e,this["~T"](n,r)),e=t.j(e,{l:"~I"});else{var u=t.h("~u",n.d||"");u&&""===u.t?(e=t.j(null,t.g["d="](n,r)),e=t.j(e,this["~T"](n))):(e=t.j(e,this["~T"](n,r)),e=t.j(e,t.g["~f"](n,r,"-")))}return e},"@X": +function(n,r){var o=t.h("~R",n.o||""),e=t.h("~O",n.o||""),a=t.h("~P",n.o||""),u=t.h("@%",n.o||""),i="-"===r&&(o&&""===o.t||e||a||u);return!i||n.a||n.b||n.p||n.d||n.q||o||!a||(n.o="$"+n.o+"$"),i},"@Z": +function(n,r){n.o=n.a,n.a=void 0},"%k": +function(n,r){n.sb=!0},"%j": +function(n,r){n.sb=!1},"%E": +function(n,r){n.yB=!0},"%F": +function(n,r){n.yB=!1},"%G": +function(n,r){n.pL++},"%H": +function(n,r){n.pL--},"%p": +function(n,r){return r=t.go(r,"o"),{l:"%p",p1:r}}, +"~q": +function(n,r){var t=r.replace(/\s*$/,""),o=t!==r;return o&&0===n.pL?{l:"~n",p1:t}:{l:"~o",p1:t}}, +"~T": +function(n,r,o){var e;n.r?("M"===n.rdt?n.rd=t.go(n.rd,"%r"):"T"===n.rdt?n.rd=[{l:"%s",p1:n.rd}]:n.rd=t.go(n.rd),"M"===n.rqt?n.rq=t.go(n.rq,"%r"):"T"===n.rqt?n.rq=[{l:"%s",p1:n.rq}]:n.rq=t.go(n.rq),e={l:"~b",r:n.r,rd:n.rd,rq:n.rq}):(e=[],n.a||n.b||n.p||n.o||n.q||n.d||o?(n.sb&&e.push({l:"~D"}),n.o||n.q||n.d||n.b||n.p||2===o?n.o||n.q||n.d||!n.b&&!n.p?n.o&&"kv"===n["%I"]&&t.h("a~",n.d||"")?n["%I"]="~Y":n.o&&"kv"===n["%I"]&&!n.q&&(n["%I"]=void 0):(n.o=n.a,n.d=n.b,n.q=n.p,n.a=n.b=n.p=void 0):(n.o=n.a,n.a=void 0),n.a=t.go(n.a,"a"),n.b=t.go(n.b,"bd"),n.p=t.go(n.p,"pq"),n.o=t.go(n.o,"o"),"~Y"===n["%I"]?n.d=t.go(n.d,"~Y"):n.d=t.go(n.d,"bd"),n.q=t.go(n.q,"pq"),e.push({l:"~h",a:n.a,b:n.b,p:n.p,o:n.o,q:n.q,d:n.d,"%I":n["%I"]})):e=null);for(var a in n)"pL"!==a&&"yB"!==a&&delete n[a];return e},"a%": +function(n,r){var o=["{"];return o=t.j(o,t.go(r,"~Y")),o=o.concat(["}"])},"~H": +function(n,r){return{l:"~G",p1:t.go(r[0]),p2:t.go(r[1])}}, +"~X": +function(n,r){return{l:"~W",p1:t.go(r[0]),p2:t.go(r[1])}}, +"%y": +function(n,r){return{l:"%x",p1:t.go(r[0]),p2:t.go(r[1])}}, +"%w": +function(n,r){return{l:"%v",p1:t.go(r[0]),p2:t.go(r[1])}}, +"~k": +function(n,r){return{l:"~j",F:r[0],G:t.go(r[1])}}, +"r=": +function(n,r){n.r=(n.r||"")+r},"%b": +function(n,r){n.rdt=(n.rdt||"")+r},"%a": +function(n,r){n.rd=(n.rd||"")+r},"%g": +function(n,r){n.rqt=(n.rqt||"")+r},"%f": +function(n,r){n.rq=(n.rq||"")+r},"~Q": +function(n,r,t){return{l:"~Q",A:t||r}}}}, +t.c.a={e:t.C({"~C":{"*":{}}, +"@j":{0:{k:"@k"}}, +"~A":{0:{n:"1",s:!0}}, +"@@":{"*":{k:"%q",n:"1"}}, +",":{"*":{k:{l:"~J",m:"~r"}}}, +"~B":{"*":{k:"~s"}}}),g:{}}, +t.c.o={e:t.C({"~C":{"*":{}}, +"@j":{0:{k:"@k"}}, +"~A":{0:{n:"1",s:!0}}, +"~M":{"*":{k:"rm"}}, +"@t":{"*":{k:{l:"~J",m:"~i"}}}, +"@G|@F|@E":{"*":{k:"~s"}}, +"@a|@@":{"*":{k:"%r"}}, +"%A":{"*":{k:"%C"}}, +"~B":{"*":{k:"~s"}}}),g:{}}, +t.c["%s"]={e:t.C({"~C":{"*":{k:"~T"}}, +"%B":{"*":{k:"%t"}}, +"@a|@@":{"*":{k:"%r"}}, +"@z":{"*":{k:["~T","rm"]}}, +"@p|@G|@F|@E":{"*":{k:["~T","~s"]}}, +"~A":{"*":{k:"%t"}}}),g:{"~T": +function(n,r){if(n.text){var t={l:"%s",p1:n.text};for(var o in n)delete n[o];return t}return null}}}, +t.c.pq={e:t.C({"~C":{"*":{}}, +"%n":{"*":{k:"%p"}}, +i$:{0:{n:"!f",s:!0}}, +"@b":{0:{k:"rm",n:"0"}}, +"~E":{0:{n:"f",s:!0}}, +"@j":{0:{k:"@k"}}, +"~A":{0:{n:"!f",s:!0}}, +"@a|@@":{"*":{k:"%r"}}, +"%A":{"*":{k:"%s"}}, +"~@":{f:{k:"%r"}}, +"~M":{"*":{k:"rm"}}, +"@h":{"*":{k:"@l"}}, +",":{"*":{k:{l:"~K",m:"~p"}}}, +"@x|@v":{"*":{k:"~k"}}, +"@w":{"*":{k:"~m"}}, +"@u":{"*":{k:"ce"}}, +"@p|@G|@F|@E":{"*":{k:"~s"}}, +"~B":{"*":{k:"~s"}}}),g:{"%p": +function(n,r){return r=t.go(r,"o"),{l:"%K",p1:r}}, +"~k": +function(n,r){return{l:"~j",F:r[0],G:t.go(r[1],"pq")}}}}, +t.c.bd={e:t.C({"~C":{"*":{}}, +x$:{0:{n:"!f",s:!0}}, +"~E":{0:{n:"f",s:!0}}, +"~A":{0:{n:"!f",s:!0}}, +"@g":{"*":{k:"@l"}}, +".":{"*":{k:{l:"~J",m:"~y"}}}, +"~@":{f:{k:"%r"}}, +x:{"*":{k:{l:"~J",m:"@n"}}}, +"~M":{"*":{k:"rm"}}, +"'":{"*":{k:{l:"~J",m:"%%"}}}, +"@a|@@":{"*":{k:"%r"}}, +"%A":{"*":{k:"%s"}}, +"@x|@v":{"*":{k:"~k"}}, +"@w":{"*":{k:"~m"}}, +"@u":{"*":{k:"ce"}}, +"@p|@G|@F|@E":{"*":{k:"~s"}}, +"~B":{"*":{k:"~s"}}}),g:{"~k": +function(n,r){return{l:"~j",F:r[0],G:t.go(r[1],"bd")}}}}, +t.c["~Y"]={e:t.C({"~C":{"*":{}}, +"%d":{"*":{k:"%e"}}, +"@a|@@":{"*":{k:"%r"}}, +"~A":{"*":{k:"~s"}}}),g:{"%e": +function(n,r){return{l:"%d",p1:r}}}}, +t.c["%r"]={e:t.C({"~C":{"*":{k:"~T"}}, +"@u":{"*":{k:["~T","ce"]}}, +"%B|@p|@G|@F|@E":{"*":{k:"o="}}, +"~A":{"*":{k:"o="}}}),g:{"~T": +function(n,r){if(n.o){var t={l:"%r",p1:n.o};for(var o in n)delete n[o];return t}return null}}}, +t.c["%q"]={e:t.C({"~C":{"*":{k:"~T"}}, +"@u":{"*":{k:["~T","ce"]}}, +"%B|@p|@G|@F|@E":{"*":{k:"o="}}, +"-|+":{"*":{k:"%u"}}, +"~A":{"*":{k:"o="}}}),g:{"%u": +function(n,r){n.o=(n.o||"")+"{"+r+"}"},"~T": +function(n,r){if(n.o){var t={l:"%r",p1:n.o};for(var o in n)delete n[o];return t}return null}}}, +t.c["@l"]={e:t.C({"~C":{"*":{}}, +",":{"*":{k:"~q"}}, +"~A":{"*":{k:"~s"}}}),g:{"~q": +function(n,r){return{l:"~r"}}}}, +t.c.pu={e:t.C({"~C":{"*":{k:"~T"}}, +"@K|@c":{"0|a":{k:"~s"}}, +aj:{0:{k:"ak",n:"a"}}, +"%T":{0:{k:"%Z",n:"a"}}, +"%m":{"0|a":{}}, +ai:{"0|a":{k:{l:"~Q",m:"\\pm"},n:"0"}}, +"~Q":{"0|a":{k:"~s",n:"0"}}, +"//":{d:{k:"o=",n:"/"}}, +"/":{d:{k:"o=",n:"/"}}, +"%B|~A":{"0|d":{k:"d=",n:"d"},a:{k:["%m","d="],n:"d"},"/|q":{k:"q=",n:"q"}}}),g:{"%Z": +function(n,r){var o=[];return"+-"===r[0]||"+/-"===r[0]?o.push("\\pm "):r[0]&&o.push(r[0]),r[1]&&(o=t.j(o,t.go(r[1],"%X")),r[2]&&(r[2].match(/[,.]/)?o=t.j(o,t.go(r[2],"%X")):o.push(r[2])),r[3]=r[4]||r[3],r[3]&&(r[3]=r[3].trim(),"e"===r[3]||"*"===r[3].substr(0,1)?o.push({l:"%N"}):o.push({l:"%P"}))),r[3]&&o.push("10^{"+r[5]+"}"),o},ak: +function(n,r){var o=[];return"+-"===r[0]||"+/-"===r[0]?o.push("\\pm "):r[0]&&o.push(r[0]),o=t.j(o,t.go(r[1],"%X")),o.push("^{"+r[2]+"}"),o},"~Q": +function(n,r,t){return{l:"~Q",A:t||r}}, +"%m": +function(n,r){return{l:"%Q"}}, +"~T": +function(n,r){var o,e=t.h("%A",n.d||"");e&&""===e.t&&(n.d=e.h);var a=t.h("%A",n.q||"");a&&""===a.t&&(n.q=a.h),n.d&&(n.d=n.d.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),n.d=n.d.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F")),n.q?(n.d=t.go(n.d,"pu"),n.q=n.q.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),n.q=n.q.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F"),n.q=t.go(n.q,"pu"),"//"===n.o?o={l:"%S",p1:n.d,p2:n.q}:(o=n.d,o=n.d.length>1||n.q.length>1?t.j(o,{l:"%V"}):t.j(o,{l:"/"}),o=t.j(o,n.q))):o=t.go(n.d,"%R");for(var u in n)delete n[u];return o}}}, +t.c["%R"]={e:t.C({"~C":{"*":{k:"~T"}}, +"*":{"*":{k:["~T","%N"],n:"0"}}, +"@E":{"*":{k:"%c"},n:"1"},"%m":{"*":{k:["~T","%m"],n:"0"}}, +"@P|%U":{1:{k:"%U"}}, +"@h":{0:{k:"%c",n:"0"},1:{k:"%U",n:"0"}}, +"%B|~A":{"*":{k:"%c",n:"1"}}}),g:{"%N": +function(n,r){return{l:"%O"}}, +"%U": +function(n,r){n.rm+="^{"+r+"}"},"%m": +function(n,r){return{l:"ah"}}, +"~T": +function(n,r){var o;if(n.rm){var e=t.h("%A",n.rm||"");o=e&&""===e.t?t.go(e.h,"pu"):{l:"rm",p1:n.rm}}for(var a in n)delete n[a];return o}}}, +t.c["%X"]={e:t.C({"~C":{0:{k:"~U"},o:{k:"~V"}}, +",":{0:{k:["~U","~q"],n:"o"}}, +".":{0:{k:["~U","~s"],n:"o"}}, +"~A":{"*":{k:"%t"}}}),g:{"~q": +function(n,r){return{l:"~r"}}, +"~U": +function(n,r){var t=[];if(n.text.length>4){var o=n.text.length%3;0===o&&(o=3);for(var e=n.text.length-3;e>0;e-=3)t.push(n.text.substr(e,3)),t.push({l:"%W"});t.push(n.text.substr(0,o)),t.reverse()}else t.push(n.text);for(var a in n)delete n[a];return t},"~V": +function(n,r){var t=[];if(n.text.length>4){for(var o=n.text.length-3,e=0;e"===n.r||"<=>>"===n.r||"<<=>"===n.r||"<-->"===n.r?(r="\\long"+r,n.rd&&(r="\\overset{"+n.rd+"}{"+r+"}"),n.rq&&(r="\\underset{\\lower7mu{"+n.rq+"}}{"+r+"}"),r=" {}\\mathrel{"+r+"}{} "):(n.rq&&(r+="[{"+n.rq+"}]"),r+="{"+n.rd+"}",r=" {}\\mathrel{\\x"+r+"}{} "):r=" {}\\mathrel{\\long"+r+"}{} ",r},"~Q": +function(n){return o.K[n.A]}}, +J:{"->":"rightarrow","\u2192":"rightarrow","\u27f6":"rightarrow","<-":"leftarrow","<->":"leftrightarrow","<-->":"leftrightarrows","<=>":"rightleftharpoons","\u21cc":"rightleftharpoons","<=>>":"Rightleftharpoons","<<=>":"Leftrightharpoons"},I:{"-":"{-}",1:"{-}","=":"{=}",2:"{=}","#":"{\\equiv}",3:"{\\equiv}","~":"{\\tripledash}","~-":"{\\rlap{\\lower.1em{-}}\\raise.1em{\\tripledash}}","~=":"{\\rlap{\\lower.2em{-}}\\rlap{\\raise.2em{\\tripledash}}-}","~--":"{\\rlap{\\lower.2em{-}}\\rlap{\\raise.2em{\\tripledash}}-}","-~-":"{\\rlap{\\lower.2em{-}}\\rlap{\\raise.2em{-}}\\tripledash}","...":"{{\\cdot}{\\cdot}{\\cdot}}","....":"{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}","->":"{\\rightarrow}","<-":"{\\leftarrow}","<":"{<}",">":"{>}"},L:{"%m":" ","~D":"~","%Q":"~",ah:"\\mkern3mu ","%W":"\\mkern2mu ","~r":"{,}","~n":"{{0}}\\mkern6mu ","~o":"{{0}}\\mkern3mu ","~p":"{{0}}\\mkern1mu ","~I":"\\text{-}","~~":"\\,{\\cdot}\\,","~y":"\\mkern1mu \\bullet\\mkern1mu ","@n":"{\\times}","%%":"\\prime ","%N":"\\cdot ","%O":"\\mkern1mu{\\cdot}\\mkern1mu ","%P":"\\times ","~i":"{\\sim}","^":"uparrow",v:"downarrow","~z":"\\ldots ","/":"/","%V":"\\,/\\,",al:"{0} "},K:{"+":" {}+{} ","-":" {}-{} ","=":" {}={} ","<":" {}<{} ",">":" {}>{} ","<<":" {}\\ll{} ",">>":" {}\\gg{} ","\\pm":" {}\\pm{} ","\\approx":" {}\\approx{} ","$\\approx$":" {}\\approx{} ",v:" \\downarrow{} ","(v)":" \\downarrow{} ","^":" \\uparrow{} ","(^)":" \\uparrow{} "},go: +function(n,r){if(!n)return n;for(var t="",o=!1,e=0;e0){return[h,g]}else{return h}}}this.i++}b.Error(["MissingReplacementString","Missing replacement string for definition of %1",f])},MacroWithTemplate:function(d,g,h,f){if(h){var c=[];this.GetNext();if(f[0]&&!this.MatchParam(f[0])){b.Error(["MismatchUseDef","Use of %1 doesn't match its definition",d])}for(var e=0;eb.config.MAXMACROS){b.Error(["MaxMacroSub1","MathJax maximum macro substitution count exceeded; is there a recursive macro call?"])}},BeginEnv:function(g,k,c,j,h){if(j){var e=[];if(h!=null){var d=this.GetBrackets("\\begin{"+name+"}");e.push(d==null?h:d)}for(var f=e.length;f1){var n=(q.h+q.d)/2,j=h.TeX.x_height/2;p.parentNode.style.verticalAlign=h.Em(q.d+(j-n));q.h=j+n;q.d=n-j}p.bbox={h:q.h,d:q.d,w:k,lw:0,rw:k};return p}})});b.Register.StartupHook("SVG Jax Config",function(){b.Config({SVG:{styles:{".MathJax_SVG .noError":b.Insert({"vertical-align":(b.Browser.isMSIE&&a.multiLine?"-2px":"")},a.style)}}})});b.Register.StartupHook("SVG Jax Ready",function(){var g=MathJax.ElementJax.mml;var f=g.math.prototype.toSVG,h=g.merror.prototype.toSVG;g.math.Augment({toSVG:function(i,j){var k=this.data[0];if(k&&k.data[0]&&k.data[0].isError){i=k.data[0].toSVG(i)}else{i=f.apply(this,arguments)}return i}});g.merror.Augment({toSVG:function(n){if(!this.isError||this.Parent().type!=="math"){return h.apply(this,arguments)}n=e.addElement(n,"span",{className:"noError",isMathJax:true});if(this.multiLine){n.style.display="inline-block"}var o=this.data[0].data[0].data.join("").split(/\n/);for(var l=0,j=o.length;l1){var k=n.offsetHeight/2;n.style.verticalAlign=(-k+(k/j))+"px"}return n}})});b.Register.StartupHook("NativeMML Jax Ready",function(){var h=MathJax.ElementJax.mml;var g=MathJax.Extension["TeX/noErrors"].config;var f=h.math.prototype.toNativeMML,i=h.merror.prototype.toNativeMML;h.math.Augment({toNativeMML:function(j){var k=this.data[0];if(k&&k.data[0]&&k.data[0].isError){j=k.data[0].toNativeMML(j)}else{j=f.apply(this,arguments)}return j}});h.merror.Augment({toNativeMML:function(n){if(!this.isError){return i.apply(this,arguments)}n=n.appendChild(document.createElement("span"));var o=this.data[0].data[0].data.join("").split(/\n/);for(var l=0,k=o.length;l1){n.style.verticalAlign="middle"}}for(var p in g.style){if(g.style.hasOwnProperty(p)){var j=p.replace(/-./g,function(m){return m.charAt(1).toUpperCase()});n.style[j]=g.style[p]}}return n}})});b.Register.StartupHook("PreviewHTML Jax Config",function(){b.Config({PreviewHTML:{styles:{".MathJax_PHTML .noError":b.Insert({"vertical-align":(b.Browser.isMSIE&&a.multiLine?"-2px":"")},a.style)}}})});b.Register.StartupHook("PreviewHTML Jax Ready",function(){var f=MathJax.ElementJax.mml;var h=MathJax.HTML;var g=f.merror.prototype.toPreviewHTML;f.merror.Augment({toPreviewHTML:function(l){if(!this.isError){return g.apply(this,arguments)}l=this.PHTMLcreateSpan(l);l.className="noError";if(this.multiLine){l.style.display="inline-block"}var n=this.data[0].data[0].data.join("").split(/\n/);for(var k=0,j=n.length;k1){var l=1.2*j/2;o.h=l+0.25;o.d=l-0.25;n.style.verticalAlign=g.Em(0.45-l)}else{o.h=1;o.d=0.2+2/g.em}return n}})});b.Startup.signal.Post("TeX noErrors Ready")})(MathJax.Hub,MathJax.HTML);MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noErrors.js"); diff --git a/mathjax/asset/extensions/TeX/noUndefined.js b/mathjax/asset/extensions/TeX/noUndefined.js new file mode 100644 index 000000000..b0fb0dfe7 --- /dev/null +++ b/mathjax/asset/extensions/TeX/noUndefined.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/TeX/noUndefined.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Extension["TeX/noUndefined"]={version:"2.7.5",config:MathJax.Hub.CombineConfig("TeX.noUndefined",{disabled:false,attributes:{mathcolor:"red"}})};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.Extension["TeX/noUndefined"].config;var a=MathJax.ElementJax.mml;var c=MathJax.InputJax.TeX.Parse.prototype.csUndefined;MathJax.InputJax.TeX.Parse.Augment({csUndefined:function(d){if(b.disabled){return c.apply(this,arguments)}MathJax.Hub.signal.Post(["TeX Jax - undefined control sequence",d]);this.Push(a.mtext(d).With(b.attributes))}});MathJax.Hub.Startup.signal.Post("TeX noUndefined Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noUndefined.js"); diff --git a/mathjax/asset/extensions/TeX/unicode.js b/mathjax/asset/extensions/TeX/unicode.js new file mode 100644 index 000000000..4d77d451d --- /dev/null +++ b/mathjax/asset/extensions/TeX/unicode.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/TeX/unicode.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Extension["TeX/unicode"]={version:"2.7.5",unicode:{},config:MathJax.Hub.CombineConfig("TeX.unicode",{fonts:"STIXGeneral,'Arial Unicode MS'"})};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var c=MathJax.InputJax.TeX;var a=MathJax.ElementJax.mml;var b=MathJax.Extension["TeX/unicode"].unicode;c.Definitions.Add({macros:{unicode:"Unicode"}},null,true);c.Parse.Augment({Unicode:function(e){var i=this.GetBrackets(e),d;if(i){if(i.replace(/ /g,"").match(/^(\d+(\.\d*)?|\.\d+),(\d+(\.\d*)?|\.\d+)$/)){i=i.replace(/ /g,"").split(/,/);d=this.GetBrackets(e)}else{d=i;i=null}}var j=this.trimSpaces(this.GetArgument(e)).replace(/^0x/,"x");if(!j.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/)){c.Error(["BadUnicode","Argument to \\unicode must be a number"])}var h=parseInt(j.match(/^x/)?"0"+j:j);if(!b[h]){b[h]=[800,200,d,h]}else{if(!d){d=b[h][2]}}if(i){b[h][0]=Math.floor(i[0]*1000);b[h][1]=Math.floor(i[1]*1000)}var f=this.stack.env.font,g={};if(d){b[h][2]=g.fontfamily=d.replace(/"/g,"'");if(f){if(f.match(/bold/)){g.fontweight="bold"}if(f.match(/italic|-mathit/)){g.fontstyle="italic"}}}else{if(f){g.mathvariant=f}}g.unicode=[].concat(b[h]);this.Push(a.mtext(a.entity("#"+j)).With(g))}});MathJax.Hub.Startup.signal.Post("TeX unicode Ready")});MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var a=MathJax.ElementJax.mml;var c=MathJax.Extension["TeX/unicode"].config.fonts;var b=a.mbase.prototype.HTMLgetVariant;a.mbase.Augment({HTMLgetVariant:function(){var d=b.apply(this,arguments);if(d.unicode){delete d.unicode;delete d.FONTS}if(!this.unicode){return d}d.unicode=true;if(!d.defaultFont){d=MathJax.Hub.Insert({},d);d.defaultFont={family:c}}var e=this.unicode[2];if(e){e+=","+c}else{e=c}d.defaultFont[this.unicode[3]]=[this.unicode[0],this.unicode[1],500,0,500,{isUnknown:true,isUnicode:true,font:e}];return d}})});MathJax.Hub.Register.StartupHook("SVG Jax Ready",function(){var a=MathJax.ElementJax.mml;var c=MathJax.Extension["TeX/unicode"].config.fonts;var b=a.mbase.prototype.SVGgetVariant;a.mbase.Augment({SVGgetVariant:function(){var d=b.call(this);if(d.unicode){delete d.unicode;delete d.FONTS}if(!this.unicode){return d}d.unicode=true;if(!d.forceFamily){d=MathJax.Hub.Insert({},d)}d.defaultFamily=c;d.noRemap=true;d.h=this.unicode[0];d.d=this.unicode[1];return d}})});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/unicode.js"); diff --git a/mathjax/asset/extensions/TeX/verb.js b/mathjax/asset/extensions/TeX/verb.js new file mode 100644 index 000000000..9c2939fd1 --- /dev/null +++ b/mathjax/asset/extensions/TeX/verb.js @@ -0,0 +1,19 @@ +/* + * /MathJax/extensions/TeX/verb.js + * + * Copyright (c) 2009-2018 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +MathJax.Extension["TeX/verb"]={version:"2.7.5"};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var a=MathJax.ElementJax.mml;var c=MathJax.InputJax.TeX;var b=c.Definitions;b.Add({macros:{verb:"Verb"}},null,true);c.Parse.Augment({Verb:function(d){var g=this.GetNext();var f=++this.i;if(g==""){c.Error(["MissingArgFor","Missing argument for %1",d])}while(this.i=0;f--){var g=this.dependents[f];g.Disable&&g.Disable(!1,e)}d&&a.Queue(["Rerender",a])},Dependent:function(a){this.dependents.push(a)},Startup:function(){var b=MathJax.Extension.collapsible;b&&b.Dependent(this),a.postInputHooks.Add(["Filter",e],150),a.Queue(function(){return e.CollapseWideMath()}),window.addEventListener?window.addEventListener("resize",e.resizeHandler,!1):window.attachEvent?window.attachEvent("onresize",e.resizeHandler):window.onresize=e.resizeHandler},Filter:function(a,b,c){a.enriched&&!this.config.disabled&&("block"===a.root.Get("display")||c.parentNode.childNodes.length<=3)&&(a.root.SRE={action:this.Actions(a.root)})},Actions:function(a){var b=[];return this.getActions(a,0,b),this.sortActions(b)},getActions:function(a,b,c){if(!a.isToken&&a.data){b++;for(var d=0,e=a.data.length;db?1:0},CollapseWideMath:function(b){if(!this.config.disabled){this.GetContainerWidths(b);var c=a.getAllJax(b),d={collapse:[],jax:c,m:c.length,i:0,changed:!1};return this.collapseState(d)}},collapseState:function(b){for(var c=b.collapse;b.ie.M)){var f=this.getActionWidths(d,b);if(f)return f;this.collapseActions(e,b),b.changed&&c.push(d.SourceElement())}b.i++}if(0!==c.length)return 1===c.length&&(c=c[0]),a.Rerender(c)},collapseActions:function(a,b){for(var c=a.width,d=c,e=1e6,f=a.action.length-1;f>=0;f--){var g=a.action[f],h=g.selection;c>a.cwidth?(g.selection=1,d=g.SREwidth,e=c):g.selection=2,c=g.SREwidth,a.DOMupdate?document.getElementById(g.id).setAttribute("selection",g.selection):g.selection!==h&&(b.changed=!0)}a.m=d,a.M=e},getActionWidths:function(a,b){if(!a.root.SRE.actionWidths){MathJax.OutputJax[a.outputJax].getMetrics(a);try{this.computeActionWidths(a)}catch(a){if(!a.restart)throw a;return MathJax.Callback.After(["collapseState",this,b],a.restart)}b.changed=!0}return null},computeActionWidths:function(a){var b,c=a.root.SRE,d=c.action,e={};for(c.width=a.sreGetRootWidth(e),b=d.length-1;b>=0;b--)d[b].selection=2;for(b=d.length-1;b>=0;b--){var f=d[b];null==f.SREwidth&&(f.selection=1,f.SREwidth=a.sreGetActionWidth(e,f))}c.actionWidths=!0},GetContainerWidths:function(b){var c,d,e,f,g,h=a.getAllJax(b),i=MathJax.HTML.Element("span",{style:{display:"block"}}),j=[];for(c=0,d=h.length;c=0;f--){var g=this.dependents[f];g.Disable&&g.Disable(!1,e)}b&&a.Queue(["Reprocess",a])},Dependent:function(a){this.dependents.push(a)},Startup:function(){b=MathJax.ElementJax.mml;var c=MathJax.Extension["semantic-enrich"];c&&c.Dependent(this),a.postInputHooks.Add(["Filter",g],100)},Filter:function(a,b,c){a.enriched&&!this.config.disabled&&(a.root=a.root.Collapse(),a.root.inputID=c.id)},Marker:function(a){return b.mtext("\u25c2"+a+"\u25b8").With({mathcolor:"blue",attr:{},attrNames:[]})},MakeAction:function(a,c){var d=b.maction(a).With({id:this.getActionID(),actiontype:"toggle",complexity:a.getComplexity(),collapsible:!0,attrNames:["id","actiontype","selection",e],attr:{},selection:2});if(d.attr[e]=d.complexity,"math"===c.type){var f=b.mrow().With({complexity:c.complexity,attrNames:[],attr:{}});f.Append.apply(f,c.data);for(var g,h=c.attrNames.length-1;g=c.attrNames[h];h--)"data-semantic-"===g.substr(0,14)&&(f.attr[g]=c.attr[g],f.attrNames.push(g),delete c.attr[g],c.attrNames.splice(h,1));f.complexity=c.complexity,d.Append(f),c.data=[],c.Append(d),c.complexity=d.complexity,d=c}else d.Append(c);return d},actionID:1,getActionID:function(){return"MJX-Collapse-"+this.actionID++},Collapse:function(a){a.getComplexity();var b=(a.attr||{})["data-semantic-type"];if(b)if(this["Collapse_"+b])a=this["Collapse_"+b](a);else if(this.COLLAPSE[b]&&this.MARKER[b]){var c=a.attr["data-semantic-role"],d=this.COLLAPSE[b];if("number"!=typeof d&&(d=d[c]||d.value),a.complexity>d){var e=this.MARKER[b];"string"!=typeof e&&(e=e[c]||e.value),a=this.MakeAction(this.Marker(e),a)}}return a},UncollapseChild:function(a,b,c){if(null==c&&(c=1),this.SplitAttribute(a,"children").length===c){var d=1===a.data.length&&a.data[0].inferred?a.data[0]:a;if(d&&d.data[b]&&d.data[b].collapsible)return d.SetData(b,d.data[b].data[1]),a.complexity=d.complexity=null,a.getComplexity(),1}return 0},FindChildText:function(a,b){var c=this.FindChild(a,b);return c?(c.CoreMO()||c).data.join(""):"?"},FindChild:function(a,b){if(a){if(a.attr&&a.attr["data-semantic-id"]===b)return a;if(!a.isToken)for(var c=0,d=a.data.length;cthis.COLLAPSE.fenced&&"leftright"===a.attr["data-semantic-role"]){var b=a.data[0].data.join("")+a.data[a.data.length-1].data.join("");a=this.MakeAction(this.Marker(b),a)}return a},Collapse_appl:function(a){if(this.UncollapseChild(a,2,2)){var b=this.MARKER.appl;b=b[a.attr["data-semantic-role"]]||b.value,a=this.MakeAction(this.Marker(b),a)}return a},Collapse_sqrt:function(a){return this.UncollapseChild(a,0),a.complexity>this.COLLAPSE.sqrt&&(a=this.MakeAction(this.Marker(this.MARKER.sqrt),a)),a},Collapse_root:function(a){return this.UncollapseChild(a,0),a.complexity>this.COLLAPSE.sqrt&&(a=this.MakeAction(this.Marker(this.MARKER.sqrt),a)),a},Collapse_enclose:function(a){if(1===this.SplitAttribute(a,"children").length){var b=1===a.data.length&&a.data[0].inferred?a.data[0]:a;if(b.data[0]&&b.data[0].collapsible){var c=b.data[0];b.SetData(0,c.data[1]),c.SetData(1,a),a=c}}return a},Collapse_bigop:function(a){if(a.complexity>this.COLLAPSE.bigop||"mo"!==a.data[0].type){var b=this.SplitAttribute(a,"content").pop(),c=g.FindChildText(a,b);a=this.MakeAction(this.Marker(c),a)}return a},Collapse_integral:function(a){if(a.complexity>this.COLLAPSE.integral||"mo"!==a.data[0].type){var b=this.SplitAttribute(a,"content")[0],c=g.FindChildText(a,b);a=this.MakeAction(this.Marker(c),a)}return a},Collapse_relseq:function(a){if(a.complexity>this.COLLAPSE.relseq){var b=this.SplitAttribute(a,"content"),c=g.FindChildText(a,b[0]);b.length>1&&(c+="\u22ef"),a=this.MakeAction(this.Marker(c),a)}return a},Collapse_multirel:function(a){if(a.complexity>this.COLLAPSE.multirel){var b=this.SplitAttribute(a,"content"),c=g.FindChildText(a,b[0])+"\u22ef";a=this.MakeAction(this.Marker(c),a)}return a},Collapse_superscript:function(a){return this.UncollapseChild(a,0,2),a.complexity>this.COLLAPSE.superscript&&(a=this.MakeAction(this.Marker(this.MARKER.superscript),a)),a},Collapse_subscript:function(a){return this.UncollapseChild(a,0,2),a.complexity>this.COLLAPSE.subscript&&(a=this.MakeAction(this.Marker(this.MARKER.subscript),a)),a},Collapse_subsup:function(a){return this.UncollapseChild(a,0,3),a.complexity>this.COLLAPSE.subsup&&(a=this.MakeAction(this.Marker(this.MARKER.subsup),a)),a}};a.Register.StartupHook("End Extensions",function(){null==c.collapsible?c.collapsible=!g.config.disabled:g.config.disabled=!c.collapsible,a.Register.StartupHook("MathMenu Ready",function(){d=MathJax.Menu.cookie;var a,b=function(a){g[c.collapsible?"Enable":"Disable"](!0,!0),MathJax.Menu.saveCookie()},e=MathJax.Menu.ITEM,f=MathJax.Menu.menu,h=e.CHECKBOX(["CollapsibleMath","Collapsible Math"],"collapsible",{action:b}),i=(f.FindId("Accessibility")||{}).submenu;i?(a=i.IndexOfId("CollapsibleMath"),null!==a?i.items[a]=h:i.items.push(e.RULE(),h)):(a=f.IndexOfId("About"),f.items.splice(a,0,h,e.RULE()))},15)},15)}(MathJax.Hub),MathJax.Ajax.Require("[a11y]/semantic-enrich.js"),MathJax.Hub.Register.StartupHook("Semantic Enrich Ready",function(){var a=MathJax.ElementJax.mml,b=MathJax.Extension.collapsible,c=b.COMPLEXITY,d=b.COMPLEXATTR;b.Startup(),a.mbase.Augment({Collapse:function(){return b.Collapse(this)},getComplexity:function(){if(null==this.complexity){var a=0;if(this.isToken)a=c.TEXT*this.data.join("").length+c.TOKEN;else{for(var b=0,e=this.data.length;b1&&(a+=e*c.CHILD)}!this.attrNames||"complexity"in this||this.attrNames.push(d),this.attr&&(this.attr[d]=a),this.complexity=a}return this.complexity},reportComplexity:function(){!this.attr||!this.attrNames||d in this.attr||(this.attrNames.push(d),this.attr[d]=this.complexity)}}),a.mfrac.Augment({getComplexity:function(){return null==this.complexity&&(this.SUPER(arguments).getComplexity.call(this),this.complexity*=c.SCRIPT,this.complexity+=c.FRACTION,this.attr[d]=this.complexity),this.complexity}}),a.msqrt.Augment({getComplexity:function(){return null==this.complexity&&(this.SUPER(arguments).getComplexity.call(this),this.complexity+=c.SQRT,this.attr[d]=this.complexity),this.complexity}}),a.mroot.Augment({getComplexity:function(){return null==this.complexity&&(this.SUPER(arguments).getComplexity.call(this),this.complexity-=(1-c.SCRIPT)*this.data[1].getComplexity(),this.complexity+=c.SQRT,this.attr[d]=this.complexity),this.complexity}}),a.msubsup.Augment({getComplexity:function(){if(null==this.complexity){var a=0;this.data[this.sub]&&(a=this.data[this.sub].getComplexity()+c.CHILD),this.data[this.sup]&&(a=Math.max(this.data[this.sup].getComplexity(),a)),a*=c.SCRIPT,this.data[this.sub]&&(a+=c.CHILD),this.data[this.sup]&&(a+=c.CHILD),this.data[this.base]&&(a+=this.data[this.base].getComplexity()+c.CHILD),this.complexity=a+c.SUBSUP,this.reportComplexity()}return this.complexity}}),a.munderover.Augment({getComplexity:function(){if(null==this.complexity){var a=0;this.data[this.sub]&&(a=this.data[this.sub].getComplexity()+c.CHILD),this.data[this.sup]&&(a=Math.max(this.data[this.sup].getComplexity(),a)),a*=c.SCRIPT,this.data[this.base]&&(a=Math.max(this.data[this.base].getComplexity(),a)),this.data[this.sub]&&(a+=c.CHILD),this.data[this.sup]&&(a+=c.CHILD),this.data[this.base]&&(a+=c.CHILD),this.complexity=a+c.UNDEROVER,this.reportComplexity()}return this.complexity}}),a.mphantom.Augment({getComplexity:function(){return this.complexity=c.PHANTOM,this.reportComplexity(),this.complexity}}),a.ms.Augment({getComplexity:function(){return this.SUPER(arguments).getComplexity.call(this),this.complexity+=this.Get("lquote").length*c.TEXT,this.complexity+=this.Get("rquote").length*c.TEXT,this.attr[d]=this.complexity,this.complexity}}),a.menclose.Augment({getComplexity:function(){return null==this.complexity&&(this.SUPER(arguments).getComplexity.call(this),this.complexity+=c.ACTION,this.attr[d]=this.complexity),this.complexity}}),a.maction.Augment({getComplexity:function(){return this.complexity=(this.collapsible?this.data[0]:this.selected()).getComplexity(),this.reportComplexity(),this.complexity}}),a.semantics.Augment({getComplexity:function(){return null==this.complexity&&(this.complexity=this.data[0]?this.data[0].getComplexity():0,this.reportComplexity()),this.complexity}}),a["annotation-xml"].Augment({getComplexity:function(){return this.complexity=c.XML,this.reportComplexity(),this.complexity}}),a.annotation.Augment({getComplexity:function(){return this.complexity=c.XML,this.reportComplexity(),this.complexity}}),a.mglyph.Augment({getComplexity:function(){return this.complexity=c.GLYPH,this.reportComplexity(),this.complexity}}),MathJax.Hub.Startup.signal.Post("Collapsible Ready"),MathJax.Ajax.loadComplete("[a11y]/collapsible.js")}); \ No newline at end of file diff --git a/mathjax/asset/extensions/a11y/explorer.js b/mathjax/asset/extensions/a11y/explorer.js new file mode 100644 index 000000000..5478cce7a --- /dev/null +++ b/mathjax/asset/extensions/a11y/explorer.js @@ -0,0 +1 @@ +MathJax.Hub.Register.StartupHook("Sre Ready",function(){var a,b,c=MathJax.Hub.config.menuSettings,d={};MathJax.Hub.Register.StartupHook("MathEvents Ready",function(){a=MathJax.Extension.MathEvents.Event.False,b=MathJax.Extension.MathEvents.Event.KEY});var e=MathJax.Extension.explorer={version:"1.5.0",dependents:[],defaults:{walker:"table",highlight:"none",background:"blue",foreground:"black",speech:!0,generation:"lazy",subtitle:!1,ruleset:"mathspeak-default"},eagerComplexity:80,prefix:"Assistive-",hook:null,locHook:null,oldrules:null,addMenuOption:function(a,b){c[e.prefix+a]=b},addDefaults:function(){for(var a,b=MathJax.Hub.CombineConfig("explorer",e.defaults),d=Object.keys(b),f=0;a=d[f];f++)void 0===c[e.prefix+a]&&e.addMenuOption(a,b[a]);e.setSpeechOption(),h.Reset()},setOption:function(a,b){c[e.prefix+a]!==b&&(e.addMenuOption(a,b),h.Reset())},getOption:function(a){return c[e.prefix+a]},speechOption:function(a){e.oldrules!==a.value&&(e.setSpeechOption(),h.Regenerate())},setSpeechOption:function(){var a=c[e.prefix+"ruleset"],b=a.split("-");sre.System.getInstance().setupEngine({locale:MathJax.Localization.locale,domain:e.Domain(b[0]),style:b[1],rules:e.RuleSet(b[0])}),e.oldrules=a},Domain:function(a){switch(a){case"chromevox":return"default";case"mathspeak":default:return"mathspeak"}},RuleSet:function(a){switch(a){case"chromevox":return["AbstractionRules","SemanticTreeRules"];case"mathspeak":default:return["AbstractionRules","AbstractionSpanish","MathspeakRules","MathspeakSpanish"]}},hook:null,locHook:null,Enable:function(a,b){c.explorer=!0,b&&(d.explorer=!0),MathJax.Extension.collapsible.Enable(!1,b),MathJax.Extension.AssistiveMML&&(MathJax.Extension.AssistiveMML.config.disabled=!0,c.assistiveMML=!1,b&&(d.assistiveMML=!1)),this.DisableMenus(!1),this.hook||(this.hook=MathJax.Hub.Register.MessageHook("New Math",["Register",this.Explorer])),this.locHook||(this.locHook=MathJax.Hub.Register.MessageHook("Locale Reset",["RemoveSpeech",this.Explorer])),a&&MathJax.Hub.Queue(["Reprocess",MathJax.Hub])},Disable:function(a,b){c.explorer=!1,b&&(d.explorer=!1),this.DisableMenus(!0),this.hook&&(MathJax.Hub.UnRegister.MessageHook(this.hook),this.hook=null);for(var e=this.dependents.length-1;e>=0;e--){var f=this.dependents[e];f.Disable&&f.Disable(!1,b)}},DisableMenus:function(a){if(MathJax.Menu){var b=MathJax.Menu.menu.FindId("Accessibility","Explorer");if(b){b=b.submenu;for(var d,f=b.items,g=2;d=f[g];g++)d.disabled=a;a||!b.FindId("SpeechOutput")||c[e.prefix+"speech"]||(b.FindId("Subtitles").disabled=!0)}}},Dependent:function(a){this.dependents.push(a)}},f=MathJax.Object.Subclass({div:null,inner:null,Init:function(){this.div=f.Create("assertive"),this.inner=MathJax.HTML.addElement(this.div,"div")},Add:function(){f.added||(document.body.appendChild(this.div),f.added=!0)},Show:function(a,b){this.div.classList.add("MJX_LiveRegion_Show");var c=a.getBoundingClientRect(),d=c.bottom+10+window.pageYOffset,e=c.left+window.pageXOffset;this.div.style.top=d+"px",this.div.style.left=e+"px";var f=b.colorString();this.inner.style.backgroundColor=f.background,this.inner.style.color=f.foreground},Hide:function(a){this.div.classList.remove("MJX_LiveRegion_Show")},Clear:function(){this.Update(""),this.inner.style.top="",this.inner.style.backgroundColor=""},Update:function(a){e.getOption("speech")&&f.Update(this.inner,a)}},{ANNOUNCE:"Navigatable Math in page. Explore with shift space and arrow keys. Expand or collapse elements hitting enter.",announced:!1,added:!1,styles:{".MJX_LiveRegion":{position:"absolute",top:"0",height:"1px",width:"1px",padding:"1px",overflow:"hidden"},".MJX_LiveRegion_Show":{top:"0",position:"absolute",width:"auto",height:"auto",padding:"0px 0px",opacity:1,"z-index":"202",left:0,right:0,margin:"0 auto","background-color":"white","box-shadow":"0px 10px 20px #888",border:"2px solid #CCCCCC"}},Create:function(a){var b=MathJax.HTML.Element("div",{className:"MJX_LiveRegion"});return b.setAttribute("aria-live",a),b},Update:MathJax.Hub.Browser.isPC?function(a,b){a.textContent="",setTimeout(function(){a.textContent=b},100)}:function(a,b){a.textContent="",a.textContent=b},Announce:function(){if(e.getOption("speech")){f.announced=!0,MathJax.Ajax.Styles(f.styles);var a=f.Create("polite");document.body.appendChild(a),f.Update(a,f.ANNOUNCE),setTimeout(function(){document.body.removeChild(a)},1e3)}}});MathJax.Extension.explorer.LiveRegion=f;var g=MathJax.Ajax.fileURL(MathJax.Ajax.config.path.a11y),h=MathJax.Extension.explorer.Explorer={liveRegion:f(),walker:null,highlighter:null,hoverer:null,flamer:null,speechDiv:null,earconFile:g+"/invalid_keypress"+(-1!==["Firefox","Chrome","Opera"].indexOf(MathJax.Hub.Browser.name)?".ogg":".mp3"),expanded:!1,focusoutEvent:MathJax.Hub.Browser.isFirefox?"blur":"focusout",focusinEvent:"focus",ignoreFocusOut:!1,jaxCache:{},messageID:null,Reset:function(){h.FlameEnriched()},Register:function(a){if(e.hook){var b=document.getElementById(a[1]);if(b&&b.id){var c=MathJax.Hub.getJaxFor(b.id);c&&c.enriched&&(h.StateChange(b.id,c),h.liveRegion.Add(),h.AddEvent(b))}}},StateChange:function(a,b){h.GetHighlighter(.2);var c=h.jaxCache[a];c&&c===b.root||(c&&h.highlighter.resetState(a+"-Frame"),h.jaxCache[a]=b.root)},AddAria:function(a){a.setAttribute("role","application"),a.setAttribute("aria-label","Math")},AddHook:function(a){h.RemoveHook(),h.hook=MathJax.Hub.Register.MessageHook("End Math",function(b){var c=b[1].id+"-Frame",d=document.getElementById(c);a&&c===h.expanded&&(h.ActivateWalker(d,a),d.focus(),h.expanded=!1)})},RemoveHook:function(){h.hook&&(MathJax.Hub.UnRegister.MessageHook(h.hook),h.hook=null)},AddMessage:function(){return MathJax.Message.Set("Generating Speech Output")},RemoveMessage:function(a){a&&MathJax.Message.Clear(a)},AddEvent:function(a){var b=a.id+"-Frame",c=a.previousSibling;if(c){var d=c.id!==b?c.firstElementChild:c;h.AddAria(d),h.AddMouseEvents(d),"MathJax_MathML"===d.className&&(d=d.firstElementChild),d&&(d.onkeydown=h.Keydown,h.Flame(d),d.addEventListener(h.focusinEvent,function(a){e.hook&&(f.announced||f.Announce())}),d.addEventListener(h.focusoutEvent,function(a){if(e.hook)return h.ignoreFocusOut&&(h.ignoreFocusOut=!1,"enter"===h.walker.moved)?void a.target.focus():void(h.walker&&h.DeactivateWalker())}),e.getOption("speech")&&h.AddSpeech(d))}},AddSpeech:function(a){var b=a.id,c=MathJax.Hub.getJaxFor(b),d=c.root.toMathML();if(a.getAttribute("haslabel")||h.AddMathLabel(d,b),!a.getAttribute("hasspeech"))switch(MathJax.Hub.config.explorer.generation){case"eager":h.AddSpeechEager(d,b);break;case"mixed":a.querySelectorAll("[data-semantic-complexity]").length>=e.eagerComplexity&&h.AddSpeechEager(d,b)}},AddSpeechLazy:function(a){var b=new sre.TreeSpeechGenerator;b.setRebuilt(h.walker.rebuilt),b.getSpeech(h.walker.rootNode,h.walker.xml),a.setAttribute("hasspeech","true")},AddSpeechEager:function(a,b){h.MakeSpeechTask(a,b,sre.TreeSpeechGenerator,function(a,b){a.setAttribute("hasspeech","true")},5)},AddMathLabel:function(a,b){h.MakeSpeechTask(a,b,sre.SummarySpeechGenerator,function(a,b){a.setAttribute("haslabel","true"),a.setAttribute("aria-label",b)},5)},MakeSpeechTask:function(a,b,c,d,e){var f=h.AddMessage();setTimeout(function(){var e=new c,g=document.getElementById(b),i=new sre.DummyWalker(g,e,h.highlighter,a),j=i.speech();j&&d(g,j),h.RemoveMessage(f)},e)},Keydown:function(c){if(c.keyCode===b.ESCAPE){if(!h.walker)return;return h.RemoveHook(),h.DeactivateWalker(),void a(c)}if(h.walker&&h.walker.isActive()){void 0!==h.walker.modifier&&(h.walker.modifier=c.shiftKey);var d=h.walker.move(c.keyCode);if(null===d)return;if(d){if("expand"===h.walker.moved){if(h.expanded=h.walker.node.id,MathJax.Hub.Browser.isEdge)return h.ignoreFocusOut=!0,void h.DeactivateWalker();if(MathJax.Hub.Browser.isFirefox||MathJax.Hub.Browser.isMSIE)return void h.DeactivateWalker()}h.liveRegion.Update(h.walker.speech()),h.Highlight()}else h.PlayEarcon();return void a(c)}var f=c.target;if(c.keyCode===b.SPACE){if(c.shiftKey&&e.hook){var g=MathJax.Hub.getJaxFor(f);h.ActivateWalker(f,g),h.AddHook(g)}else MathJax.Extension.MathEvents.Event.ContextMenu(c,f);return void a(c)}},GetHighlighter:function(a){h.highlighter=sre.HighlighterFactory.highlighter({color:e.getOption("background"),alpha:a},{color:e.getOption("foreground"),alpha:1},{renderer:MathJax.Hub.outputJax["jax/mml"][0].id,browser:MathJax.Hub.Browser.name})},AddMouseEvents:function(a){sre.HighlighterFactory.addEvents(a,{mouseover:h.MouseOver,mouseout:h.MouseOut},{renderer:MathJax.Hub.outputJax["jax/mml"][0].id,browser:MathJax.Hub.Browser.name})},MouseOver:function(b){if("none"!==e.getOption("highlight")){if("hover"===e.getOption("highlight")){var c=b.currentTarget;h.GetHighlighter(.1),h.highlighter.highlight([c]),h.hoverer=!0}a(b)}},MouseOut:function(b){return h.hoverer&&(h.highlighter.unhighlight(),h.hoverer=!1),a(b)},Flame:function(a){if("flame"===e.getOption("highlight"))return h.GetHighlighter(.05),h.highlighter.highlightAll(a),void(h.flamer=!0)},UnFlame:function(){h.flamer&&(h.highlighter.unhighlightAll(),h.flamer=null)},FlameEnriched:function(){h.UnFlame();for(var a,b=0,c=MathJax.Hub.getAllJax();a=c[b];b++)h.Flame(a.SourceElement().previousSibling)},Walkers:{syntactic:sre.SyntaxWalker,table:sre.TableWalker,semantic:sre.SemanticWalker,none:sre.DummyWalker},ActivateWalker:function(a,b){var c=e.getOption("speech"),d=e.getOption("walker")?h.Walkers[MathJax.Hub.config.explorer.walker]:h.Walkers.none,f=c?new sre.DirectSpeechGenerator:new sre.DummySpeechGenerator;h.GetHighlighter(.2),h.walker=new d(a,f,h.highlighter,b.root.toMathML()),c&&!a.getAttribute("hasspeech")&&h.AddSpeechLazy(a),h.walker.activate(),c&&(e.getOption("subtitle")&&h.liveRegion.Show(a,h.highlighter),h.liveRegion.Update(h.walker.speech())),h.Highlight(),h.ignoreFocusOut&&setTimeout(function(){h.ignoreFocusOut=!1},500)},DeactivateWalker:function(){h.liveRegion.Clear(),h.liveRegion.Hide(),h.Unhighlight(),h.currentHighlight=null,h.walker.deactivate(),h.walker=null},Highlight:function(){h.Unhighlight(),h.highlighter.highlight(h.walker.getFocus().getNodes())},Unhighlight:function(){h.highlighter.unhighlight()},PlayEarcon:function(){new Audio(h.earconFile).play()},SpeechOutput:function(){h.Reset(),["Subtitles"].forEach(function(a){var b=MathJax.Menu.menu.FindId("Accessibility","Explorer",a);b&&(b.disabled=!b.disabled)}),h.Regenerate()},RemoveSpeech:function(){e.setSpeechOption();for(var a,b=0,c=MathJax.Hub.getAllJax();a=c[b];b++){var d=document.getElementById(a.inputID+"-Frame");d&&(d.removeAttribute("hasspeech"),d.removeAttribute("haslabel"))}},Regenerate:function(){for(var a,b=0,c=MathJax.Hub.getAllJax();a=c[b];b++){var d=document.getElementById(a.inputID+"-Frame");d&&(d.removeAttribute("hasspeech"),h.AddSpeech(d))}},Startup:function(){var a=MathJax.Extension.collapsible;a&&a.Dependent(e),e.addDefaults()}};MathJax.Hub.Register.StartupHook("End Extensions",function(){e[!1===c.explorer?"Disable":"Enable"](),MathJax.Hub.Startup.signal.Post("Explorer Ready"),MathJax.Hub.Register.StartupHook("MathMenu Ready",function(){d=MathJax.Menu.cookie;var a,b=function(a){e[c.explorer?"Enable":"Disable"](!0,!0),MathJax.Menu.saveCookie()},f=MathJax.Menu.ITEM,g=MathJax.Menu.menu,i={action:h.Reset},j={action:e.speechOption},k=f.SUBMENU(["Explorer","Explorer"],f.CHECKBOX(["Active","Active"],"explorer",{action:b}),f.RULE(),f.CHECKBOX(["Walker","Walker"],"Assistive-walker"),f.SUBMENU(["Highlight","Highlight"],f.RADIO(["none","None"],"Assistive-highlight",i),f.RADIO(["hover","Hover"],"Assistive-highlight",i),f.RADIO(["flame","Flame"],"Assistive-highlight",i)),f.SUBMENU(["Background","Background"],f.RADIO(["blue","Blue"],"Assistive-background",i),f.RADIO(["red","Red"],"Assistive-background",i),f.RADIO(["green","Green"],"Assistive-background",i),f.RADIO(["yellow","Yellow"],"Assistive-background",i),f.RADIO(["cyan","Cyan"],"Assistive-background",i),f.RADIO(["magenta","Magenta"],"Assistive-background",i),f.RADIO(["white","White"],"Assistive-background",i),f.RADIO(["black","Black"],"Assistive-background",i)),f.SUBMENU(["Foreground","Foreground"],f.RADIO(["black","Black"],"Assistive-foreground",i),f.RADIO(["white","White"],"Assistive-foreground",i),f.RADIO(["magenta","Magenta"],"Assistive-foreground",i),f.RADIO(["cyan","Cyan"],"Assistive-foreground",i),f.RADIO(["yellow","Yellow"],"Assistive-foreground",i),f.RADIO(["green","Green"],"Assistive-foreground",i),f.RADIO(["red","Red"],"Assistive-foreground",i),f.RADIO(["blue","Blue"],"Assistive-foreground",i)),f.RULE(),f.CHECKBOX(["SpeechOutput","Speech Output"],"Assistive-speech",{action:h.SpeechOutput}),f.CHECKBOX(["Subtitles","Subtitles"],"Assistive-subtitle",{disabled:!c["Assistive-speech"]}),f.RULE(),f.SUBMENU(["Mathspeak","Mathspeak Rules"],f.RADIO(["mathspeak-default","Verbose"],"Assistive-ruleset",j),f.RADIO(["mathspeak-brief","Brief"],"Assistive-ruleset",j),f.RADIO(["mathspeak-sbrief","Superbrief"],"Assistive-ruleset",j)),f.SUBMENU(["Chromevox","ChromeVox Rules"],f.RADIO(["chromevox-default","Verbose"],"Assistive-ruleset",j),f.RADIO(["chromevox-short","Short"],"Assistive-ruleset",j),f.RADIO(["chromevox-alternative","Alternative"],"Assistive-ruleset",j))),l=(g.FindId("Accessibility")||{}).submenu;l?(a=l.IndexOfId("Explorer"),null!==a?l.items[a]=k:(a=l.IndexOfId("CollapsibleMath"),l.items.splice(a+1,0,k))):(a=g.IndexOfId("CollapsibleMath"),g.items.splice(a+1,0,k)),c.explorer||e.DisableMenus(!0)},20)},20)}),MathJax.Hub.Register.StartupHook("SVG Jax Ready",function(){MathJax.Hub.Config({SVG:{addMMLclasses:!0}});var a=MathJax.OutputJax.SVG;if(parseFloat(a.version)<2.7){var b=a.getJaxFromMath;a.Augment({getJaxFromMath:function(a){return a.parentNode.className.match(/MathJax_SVG_Display/)&&(a=a.parentNode),b.call(this,a)}})}}),MathJax.Ajax.config.path.a11y||(MathJax.Ajax.config.path.a11y=MathJax.Hub.config.root+"/extensions/a11y"),MathJax.Ajax.Require("[a11y]/collapsible.js"),MathJax.Hub.Register.StartupHook("Collapsible Ready",function(){MathJax.Extension.explorer.Explorer.Startup(),MathJax.Ajax.loadComplete("[a11y]/explorer.js")}); \ No newline at end of file diff --git a/mathjax/asset/extensions/a11y/invalid_keypress.mp3 b/mathjax/asset/extensions/a11y/invalid_keypress.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..cba44de08a288ee4d5aae221b71b740349c0caad GIT binary patch literal 9030 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 WCEpm@S)lay>ms`WyLrxY(tiW58)c^e literal 0 HcmV?d00001 diff --git a/mathjax/asset/extensions/a11y/mathjax-sre.js b/mathjax/asset/extensions/a11y/mathjax-sre.js new file mode 100644 index 000000000..40a6151f2 --- /dev/null +++ b/mathjax/asset/extensions/a11y/mathjax-sre.js @@ -0,0 +1,985 @@ +// Copyright 2014-2018 Volker Sorge +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_"; +$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.Symbol=function(){var a=0;return function(b){return $jscomp.SYMBOL_PREFIX+(b||"")+a++}}(); +$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var b=0;return $jscomp.iteratorPrototype(function(){return b>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid; +goog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)}; +goog.bindJs_=function(a,b,c){if(!a)throw Error();if(2Number(a[1])?!1:b('(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')});a("es6-impl",function(){return!0});a("es7",function(){return b("2 ** 2 == 4")}); +a("es8",function(){return b("async () => 1, true")});a("es9",function(){return b("({...rest} = {}), true")});a("es_next",function(){return!1});return c},goog.Transpiler.prototype.needsTranspile=function(a,b){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;this.requiresTranspilation_||(this.requiresTranspilation_=this.createRequiresTranspilation_());if(a in this.requiresTranspilation_)return this.requiresTranspilation_[a]?!0:!goog.inHtmlDocument_()||"es6"!=b||"noModule"in goog.global.document.createElement("script")? +!1:!0;throw Error("Unknown language mode: "+a);},goog.Transpiler.prototype.transpile=function(a,b){return goog.transpile_(a,b)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(a){return a.replace(/<\/(SCRIPT)/ig,"\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory(goog.transpiler_);this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap= +function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e\x3c/script>")}else{var d=b.createElement("script");d.defer=goog.Dependency.defer_;d.async=!1;d.type="text/javascript";var e=goog.getScriptNonce();e&&(d.nonce=e);goog.DebugLoader_.IS_OLD_IE_?(a.pause(),d.onreadystatechange=function(){if("loaded"==d.readyState||"complete"==d.readyState)a.loaded(), +a.resume()}):d.onload=function(){d.onload=null;a.loaded()};d.src=this.path;b.head.appendChild(d)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or seting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load= +function(a){function b(a,b){b?d.write(''; - } else { - $use = PConfig::get(local_user(),'mathjax','use'); - if ($use) { - $b .= ''; - } - } -} -function mathjax_addon_admin_post (&$a) { - $baseurl = ((x($_POST, 'mjbaseurl')) ? trim($_POST['mjbaseurl']) : 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_CHTML'); - Config::set('mathjax','baseurl',$baseurl); - info(L10n::t('Settings updated.'). EOL); -} -function mathjax_addon_admin (App $a, &$o) { - $t = get_markup_template( "admin.tpl", "addon/mathjax/" ); +function mathjax_page_end(App $a, &$b) +{ + // if the visitor of the page is not a local_user, use MathJax + // otherwise check the users settings. + $url = $a->get_baseurl() . '/addon/mathjax/asset/MathJax.js?config=TeX-MML-AM_CHTML'; - if (Config::get('mathjax','baseurl','') == '') { - Config::set('mathjax','baseurl','https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_CHTML'); + if (!local_user() || PConfig::get(local_user(), 'mathjax', 'use', false)) { + $b .= << + +HTML; } - - $o = replace_macros( $t, [ - '$submit' => L10n::t('Save Settings'), - '$mjbaseurl' => ['mjbaseurl', L10n::t('MathJax Base URL'), Config::get('mathjax','baseurl' ), L10n::t('The URL for the javascript file that should be included to use MathJax. Can be either the MathJax CDN or another installation of MathJax.'), 'required'] - ]); } diff --git a/mathjax/templates/admin.tpl b/mathjax/templates/admin.tpl deleted file mode 100644 index e4b893806..000000000 --- a/mathjax/templates/admin.tpl +++ /dev/null @@ -1,2 +0,0 @@ -{{include file="field_input.tpl" field=$mjbaseurl}} -
From 1917f2f0aa48a01b95a11ddaf5a335b01cafb6ce Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 20 Sep 2018 00:30:31 -0400 Subject: [PATCH 035/107] [mathjax] Added missing fonts --- .../HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff | Bin 0 -> 40816 bytes .../TeX/woff/MathJax_Caligraphic-Bold.woff | Bin 0 -> 9908 bytes .../TeX/woff/MathJax_Caligraphic-Regular.woff | Bin 0 -> 9624 bytes .../HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff | Bin 0 -> 22336 bytes .../TeX/woff/MathJax_Fraktur-Regular.woff | Bin 0 -> 21492 bytes .../HTML-CSS/TeX/woff/MathJax_Main-Bold.woff | Bin 0 -> 34456 bytes .../HTML-CSS/TeX/woff/MathJax_Main-Italic.woff | Bin 0 -> 20812 bytes .../HTML-CSS/TeX/woff/MathJax_Main-Regular.woff | Bin 0 -> 34164 bytes .../TeX/woff/MathJax_Math-BoldItalic.woff | Bin 0 -> 19780 bytes .../HTML-CSS/TeX/woff/MathJax_Math-Italic.woff | Bin 0 -> 19356 bytes .../HTML-CSS/TeX/woff/MathJax_Math-Regular.woff | Bin 0 -> 19296 bytes .../TeX/woff/MathJax_SansSerif-Bold.woff | Bin 0 -> 15928 bytes .../TeX/woff/MathJax_SansSerif-Italic.woff | Bin 0 -> 14628 bytes .../TeX/woff/MathJax_SansSerif-Regular.woff | Bin 0 -> 12668 bytes .../TeX/woff/MathJax_Script-Regular.woff | Bin 0 -> 11864 bytes .../TeX/woff/MathJax_Size1-Regular.woff | Bin 0 -> 5792 bytes .../TeX/woff/MathJax_Size2-Regular.woff | Bin 0 -> 5476 bytes .../TeX/woff/MathJax_Size3-Regular.woff | Bin 0 -> 3256 bytes .../TeX/woff/MathJax_Size4-Regular.woff | Bin 0 -> 5160 bytes .../TeX/woff/MathJax_Typewriter-Regular.woff | Bin 0 -> 17620 bytes .../HTML-CSS/TeX/woff/MathJax_Vector-Bold.woff | Bin 0 -> 1116 bytes .../TeX/woff/MathJax_Vector-Regular.woff | Bin 0 -> 1136 bytes 22 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Vector-Bold.woff create mode 100644 mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Vector-Regular.woff diff --git a/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff b/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..11516fbfdf396cd3dc893fef6c048c3e8c360c28 GIT binary patch literal 40816 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 literal 0 HcmV?d00001 diff --git a/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff b/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..cf9462dde0d4c43d73e540e513762160ca83793e GIT binary patch literal 9908 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ⅅ4ZapY~y?TNY{u%cS{8jOv=mQ$++J{G# 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 z zEcE=*K3dTtN^u{Bfa8t%X792#cpv%`wqd;vAHH`())yDp2PB8&|LM=|GEj+)x$7c3 zR0>uTnD-hE1gDMU)CcK>IYFzL&!ZyFQV7Xyo{l8&#r2h(>N10u%!7Afrsewpq(NIE zKAw!Y3Xo~LnBCj#d|)JT) zKI!+Ew!-M)z@TQ@bc^4YK_;)sSvkUcqp>Z&txjUu#XL%fU{9LZC}f4C3x;TNW);tt z{mEEp-=MDk+mZlP=vAZl(c9l%_$pX|`kdsqr+wBp+SkpS|6GNHz$yIM{`;RY_MV|K ze-Fey#3n`yg5P2(-*eRbg(s~m?N*!qDk@Ta`$yQxb6sbj$j*3jqw6$6&zM6zA7Mv2 zhe(Rec!LVL9z9+s7izxBaB6Tm&%apAc8V^oMe6F||M{di>dA1x|c)rDK@p3E1~ z_!H{520@iLyac+fimSgKMECs{#!-t=ZKF_GeHvfAd{0uS8zd=?P=0J@Vl5ybQYv~Y zQlvaEQHe&ITI^I_kYi>Nk_i2_iM~U8Y@)bOTpyZ_z>C4ti_a*gl}igj$knHF)TGc@ zfB!BvI7&HIV{3#ruTW=WG5i62&Kmc*7qU?pu(GDZ`%`UqRDX>dr(kJK7VaGeRWLy~ zu=2uYk8BANt=2o$1cmt`!%JoWZh$3gSnK$?A{Rfd9Dl1#fY(2nens0ukJrB?^l>>2i8KiR@H55-Hp*`3v~qCrc$ zZ)z4q2uy!S(Yi;2&?HA;M7*6T>d@rANxp4x7I4ULY#7Iw@eP5xzXXeBLK*!T7ZvzG p9_(!SY-|8P)h-R_J+XIV(tnr!S(cRlsUJAreOLg%)Y+cx{{!&MbIt$& literal 0 HcmV?d00001 diff --git a/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff b/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..fa97e3c9f7f3f5b04391017ed19f22a7a1074857 GIT binary patch literal 22336 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�RhA-~0Q*>^Z|mwhdRr z;RPJM-g#_i5uS&+WU~cSf&QHm*;H^R=6h7xHn>)}+Znp>i2aAPlyG_oO9Vb;ke*tp z7fe^!j9k&Jz%r{qVRvkoNVf`FaFVDaDu)t4azl<6H#!KJW4edeKC|6@Ko5*boQ&M5 z-uo6L0WCYHnofjxp;`!d_9QPd!OtL=!DtxjNkmWu2GqHTH(R5v-#!-u1`+vAg6%}U zEyWFoTzt;>J6cYjEN%daY>oBlx<8@o-_U#xI_O)gxSMC0lEzdUxFPX$Wp#Q%{&K6z zOwT^Wq(-|H9U7MW?my*^roi51@dv9#v{c!Un( z;AMsRBgx`gdH930l`5)@spl z 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

MathJax ' . L10n::t('Settings') . '

'; - $s .= ''; - $s .= ''; + $tpl = get_markup_template('settings.tpl', __DIR__); + $s .= replace_macros($tpl, [ + '$title' => 'MathJax', + '$description' => L10n::t('The MathJax addon renders mathematical formulae written using the LaTeX syntax surrounded by the usual $$ or an eqnarray block in the postings of your wall,network tab and private mail.'), + '$mathjax_use' => ['mathjax_use', L10n::t('Use the MathJax renderer'), $use, ''], + '$savesettings' => L10n::t('Save Settings'), + ]); } function mathjax_footer(App $a, &$b) diff --git a/mathjax/templates/settings.tpl b/mathjax/templates/settings.tpl new file mode 100644 index 000000000..98bdb85ed --- /dev/null +++ b/mathjax/templates/settings.tpl @@ -0,0 +1,16 @@ + + +

{{$title}}

+
+ \ No newline at end of file From b192684f041994b6ce15587e0bd20f142fd7b676 Mon Sep 17 00:00:00 2001 From: Jonny Tischbein Date: Sun, 30 Sep 2018 23:07:00 +0200 Subject: [PATCH 040/107] Apply CatAvatar when submiting aproval - fix #5779 in friendica --- catavatar/catavatar.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/catavatar/catavatar.php b/catavatar/catavatar.php index f84ae117d..490c6394f 100644 --- a/catavatar/catavatar.php +++ b/catavatar/catavatar.php @@ -171,7 +171,7 @@ function catavatar_content(App $a) $size = intval($a->argv[2]); } - $condition = ['uid' => $uid, 'blocked' => false, + $condition = ['uid' => $uid, 'account_expired' => false, 'account_removed' => false]; $user = DBA::selectFirst('user', ['email'], $condition); From ee13b836d8726be400bc08c704687d3b98cb7d91 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 2 Oct 2018 15:28:31 +0000 Subject: [PATCH 041/107] Activate ActivityPub for Mastodon Custom Emojis --- mastodoncustomemojis/mastodoncustomemojis.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mastodoncustomemojis/mastodoncustomemojis.php b/mastodoncustomemojis/mastodoncustomemojis.php index 1acd924af..5636af64d 100644 --- a/mastodoncustomemojis/mastodoncustomemojis.php +++ b/mastodoncustomemojis/mastodoncustomemojis.php @@ -54,8 +54,8 @@ HTML; function mastodoncustomemojis_put_item_in_cache(App $a, array &$hook_data) { - // Mastodon uses OStatus, skipping other network protocols - if (empty($hook_data['item']['author-link']) || ($hook_data['item']['network'] != Protocol::OSTATUS)) { + // Mastodon uses OStatus and ActivityPub, skipping other network protocols + if (empty($hook_data['item']['author-link']) || !in_array($hook_data['item']['network'], [Protocol::OSTATUS, Protocol::ACTIVITYPUB])) { return; } From 1454abfdb48b8ba452d897d90f6979bb4f23912c Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Tue, 9 Oct 2018 20:13:22 +0200 Subject: [PATCH 042/107] rename App Methods - rename get_baseurl() to getBaseURL() --- blockem/blockem.php | 4 +- blogger/blogger.php | 2 +- buffer/buffer.php | 10 +- catavatar/catavatar.php | 6 +- curweather/curweather.php | 2 +- diaspora/diaspora.php | 2 +- dwpost/dwpost.php | 2 +- fortunate/fortunate.php | 2 +- forumdirectory/forumdirectory.php | 4 +- fromapp/fromapp.php | 2 +- geonames/geonames.php | 2 +- gnot/gnot.php | 2 +- group_text/group_text.php | 2 +- ifttt/ifttt.php | 2 +- ijpost/ijpost.php | 2 +- impressum/impressum.php | 2 +- .../infiniteimprobabilitydrive.php | 6 +- irc/irc.php | 6 +- jappixmini/jappixmini.php | 22 +- js_upload/js_upload.php | 4 +- krynn/krynn.php | 2 +- langfilter/langfilter.php | 2 +- libertree/libertree.php | 2 +- ljpost/ljpost.php | 2 +- mahjongg/mahjongg.php | 2 +- mailstream/mailstream.php | 4 +- namethingy/namethingy.php | 2 +- newmemberwidget/newmemberwidget.php | 2 +- notimeline/notimeline.php | 2 +- nsfw/nsfw.php | 2 +- numfriends/numfriends.php | 2 +- openstreetmap/openstreetmap.php | 2 +- pageheader/pageheader.php | 4 +- piwik/piwik.php | 2 +- planets/planets.php | 2 +- pledgie/pledgie.php | 2 +- public_server/public_server.php | 6 +- pumpio/pumpio.php | 12 +- qcomment/qcomment.php | 2 +- randplace/randplace.php | 2 +- remote_permissions/remote_permissions.php | 4 +- showmore/showmore.php | 2 +- .../lang/smiley_pack_es/smiley_pack_es.php | 274 ++++++++--------- .../lang/smiley_pack_fr/smiley_pack_fr.php | 222 +++++++------- smiley_pack/smiley_pack.php | 276 +++++++++--------- smileybutton/smileybutton.php | 50 ++-- smilies_adult/smilies_adult.php | 12 +- sniper/sniper.php | 2 +- startpage/startpage.php | 2 +- statusnet/statusnet.php | 6 +- superblock/superblock.php | 2 +- testdrive/testdrive.php | 6 +- tumblr/tumblr.php | 8 +- twitter/twitter.php | 8 +- viewsrc/viewsrc.php | 4 +- widgets/widget_friendheader.php | 2 +- widgets/widget_friends.php | 2 +- widgets/widget_like.php | 2 +- widgets/widgets.php | 12 +- windowsphonepush/windowsphonepush.php | 2 +- wppost/wppost.php | 2 +- xmpp/xmpp.php | 2 +- 62 files changed, 523 insertions(+), 523 deletions(-) diff --git a/blockem/blockem.php b/blockem/blockem.php index c915cd6ce..2a5fd8b60 100644 --- a/blockem/blockem.php +++ b/blockem/blockem.php @@ -42,7 +42,7 @@ function blockem_addon_settings (App $a, &$s) } /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; $words = PConfig::get(local_user(), 'blockem', 'words'); @@ -147,7 +147,7 @@ function blockem_prepare_body_content_filter(App $a, array &$hook_data) function blockem_display_item(App $a, array &$b = null) { if (!empty($b['output']['body']) && strstr($b['output']['body'], 'id="blockem-wrap-')) { - $b['output']['thumb'] = $a->get_baseurl() . "/images/person-80.jpg"; + $b['output']['thumb'] = $a->getBaseURL() . "/images/person-80.jpg"; } } diff --git a/blogger/blogger.php b/blogger/blogger.php index 68837cd8e..e747c3a6b 100644 --- a/blogger/blogger.php +++ b/blogger/blogger.php @@ -62,7 +62,7 @@ function blogger_settings(App $a, &$s) /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variables */ diff --git a/buffer/buffer.php b/buffer/buffer.php index 4fc45c857..048a27daf 100644 --- a/buffer/buffer.php +++ b/buffer/buffer.php @@ -105,7 +105,7 @@ function buffer_connect(App $a) $client_secret = Config::get('buffer','client_secret'); // The callback URL is the script that gets called after the user authenticates with buffer - $callback_url = $a->get_baseurl()."/buffer/connect"; + $callback_url = $a->getBaseURL()."/buffer/connect"; $buffer = new BufferApp($client_id, $client_secret, $callback_url); @@ -114,7 +114,7 @@ function buffer_connect(App $a) } else { logger("buffer_connect: authenticated"); $o .= L10n::t("You are now authenticated to buffer. "); - $o .= '
' . L10n::t("return to the connector page") . ''; + $o .= '
' . L10n::t("return to the connector page") . ''; PConfig::set(local_user(), 'buffer','access_token', $buffer->access_token); } @@ -145,7 +145,7 @@ function buffer_settings(App $a, &$s) /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variables */ @@ -174,7 +174,7 @@ function buffer_settings(App $a, &$s) if ($access_token == "") { $s .= '
'; } else { $s .= '
'; @@ -193,7 +193,7 @@ function buffer_settings(App $a, &$s) $s .= '
'; // The callback URL is the script that gets called after the user authenticates with buffer - $callback_url = $a->get_baseurl() . '/buffer/connect'; + $callback_url = $a->getBaseURL() . '/buffer/connect'; $buffer = new BufferApp($client_id, $client_secret, $callback_url, $access_token); diff --git a/catavatar/catavatar.php b/catavatar/catavatar.php index 490c6394f..27e48b7af 100644 --- a/catavatar/catavatar.php +++ b/catavatar/catavatar.php @@ -82,7 +82,7 @@ function catavatar_addon_settings_post(App $a, &$s) $seed = PConfig::get(local_user(), 'catavatar', 'seed', md5(trim(strtolower($user['email'])))); if (!empty($_POST['catavatar-usecat'])) { - $url = $a->get_baseurl() . '/catavatar/' . local_user() . '?ts=' . time(); + $url = $a->getBaseURL() . '/catavatar/' . local_user() . '?ts=' . time(); $self = DBA::selectFirst('contact', ['id'], ['uid' => local_user(), 'self' => true]); if (!DBA::isResult($self)) { @@ -109,7 +109,7 @@ function catavatar_addon_settings_post(App $a, &$s) Contact::updateSelfFromUserID(local_user(), true); // Update global directory in background - $url = $a->get_baseurl() . '/profile/' . $a->user['nickname']; + $url = $a->getBaseURL() . '/profile/' . $a->user['nickname']; if ($url && strlen(Config::get('system', 'directory'))) { Worker::add(PRIORITY_LOW, 'Directory', $url); } @@ -138,7 +138,7 @@ function catavatar_addon_settings_post(App $a, &$s) function catavatar_lookup(App $a, &$b) { $user = DBA::selectFirst('user', ['uid'], ['email' => $b['email']]); - $url = $a->get_baseurl() . '/catavatar/' . $user['uid']; + $url = $a->getBaseURL() . '/catavatar/' . $user['uid']; switch($b['size']) { case 175: $url .= "/4"; break; diff --git a/curweather/curweather.php b/curweather/curweather.php index 044f5a154..c4cf3ab46 100644 --- a/curweather/curweather.php +++ b/curweather/curweather.php @@ -103,7 +103,7 @@ function curweather_network_mod_init(App $a, &$b) return; } - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; // $rpt value is needed for location // $lang will be taken from the browser session to honour user settings diff --git a/diaspora/diaspora.php b/diaspora/diaspora.php index a54725582..ed053c75f 100644 --- a/diaspora/diaspora.php +++ b/diaspora/diaspora.php @@ -136,7 +136,7 @@ function diaspora_settings(App $a, &$s) /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variables */ diff --git a/dwpost/dwpost.php b/dwpost/dwpost.php index 0174bf105..f6f266347 100644 --- a/dwpost/dwpost.php +++ b/dwpost/dwpost.php @@ -60,7 +60,7 @@ function dwpost_settings(App $a, &$s) } /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variables */ $enabled = PConfig::get(local_user(), 'dwpost', 'post'); diff --git a/fortunate/fortunate.php b/fortunate/fortunate.php index ebece4898..b92f6085f 100644 --- a/fortunate/fortunate.php +++ b/fortunate/fortunate.php @@ -30,7 +30,7 @@ function fortunate_uninstall() function fortunate_fetch(&$a, &$b) { $a->page['htmlhead'] .= '' . "\r\n"; + . $a->getBaseURL() . '/addon/fortunate/fortunate.css' . '" media="all" />' . "\r\n"; if (FORTUNATE_SERVER != 'hostname.com') { $s = Network::fetchUrl('http://' . FORTUNATE_SERVER . '/cookie.php?numlines=2&equal=1&rand=' . mt_rand()); diff --git a/forumdirectory/forumdirectory.php b/forumdirectory/forumdirectory.php index 9f7dd8778..0c2aa2656 100644 --- a/forumdirectory/forumdirectory.php +++ b/forumdirectory/forumdirectory.php @@ -43,7 +43,7 @@ function forumdirectory_app_menu(App $a, array &$b) function forumdirectory_init(App $a) { - $a->page['htmlhead'] .= ''; + $a->page['htmlhead'] .= ''; $a->set_pager_itemspage(60); @@ -130,7 +130,7 @@ function forumdirectory_content(App $a) } foreach ($r as $rr) { - $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); + $profile_link = $a->getBaseURL() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); $pdesc = (($rr['pdesc']) ? $rr['pdesc'] . '
' : ''); diff --git a/fromapp/fromapp.php b/fromapp/fromapp.php index afdb087b3..6a33cd037 100644 --- a/fromapp/fromapp.php +++ b/fromapp/fromapp.php @@ -47,7 +47,7 @@ function fromapp_settings(&$a, &$s) /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variable */ diff --git a/geonames/geonames.php b/geonames/geonames.php index 4cd1b27cb..dc6e116b7 100644 --- a/geonames/geonames.php +++ b/geonames/geonames.php @@ -178,7 +178,7 @@ function geonames_addon_admin(&$a,&$s) { /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variable */ diff --git a/gnot/gnot.php b/gnot/gnot.php index c7678a218..2c4555ba3 100644 --- a/gnot/gnot.php +++ b/gnot/gnot.php @@ -67,7 +67,7 @@ function gnot_settings(&$a,&$s) { /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variable */ diff --git a/group_text/group_text.php b/group_text/group_text.php index 4c0cb14a9..3f91ff355 100644 --- a/group_text/group_text.php +++ b/group_text/group_text.php @@ -63,7 +63,7 @@ function group_text_settings(&$a,&$s) { /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variable */ diff --git a/ifttt/ifttt.php b/ifttt/ifttt.php index ddd64394c..2e48319ab 100644 --- a/ifttt/ifttt.php +++ b/ifttt/ifttt.php @@ -64,7 +64,7 @@ function ifttt_settings(App $a, &$s) $s .= '
'; $s .= '

' . L10n::t('Create an account at IFTTT. Create three Facebook recipes that are connected with Maker (In the form "if Facebook then Maker") with the following parameters:') . '

'; $s .= '

URL

'; - $s .= '

' . $a->get_baseurl() . '/ifttt/' . $a->user['nickname'] . '

'; + $s .= '

' . $a->getBaseURL() . '/ifttt/' . $a->user['nickname'] . '

'; $s .= '

Method

'; $s .= '

POST

'; $s .= '

Content Type

'; diff --git a/ijpost/ijpost.php b/ijpost/ijpost.php index b003742f7..5d24509e3 100644 --- a/ijpost/ijpost.php +++ b/ijpost/ijpost.php @@ -56,7 +56,7 @@ function ijpost_settings(&$a, &$s) /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variables */ diff --git a/impressum/impressum.php b/impressum/impressum.php index b7cf64e40..74d871809 100644 --- a/impressum/impressum.php +++ b/impressum/impressum.php @@ -43,7 +43,7 @@ function impressum_footer($a, &$b) { $text = ProxyUtils::proxifyHtml(BBCode::convert(Config::get('impressum','footer_text'))); if (! $text == '') { - $a->page['htmlhead'] .= ''; + $a->page['htmlhead'] .= ''; $b .= '
'; $b .= ''; } diff --git a/infiniteimprobabilitydrive/infiniteimprobabilitydrive.php b/infiniteimprobabilitydrive/infiniteimprobabilitydrive.php index e92d34407..3106a2fe6 100644 --- a/infiniteimprobabilitydrive/infiniteimprobabilitydrive.php +++ b/infiniteimprobabilitydrive/infiniteimprobabilitydrive.php @@ -32,13 +32,13 @@ function infiniteimprobabilitydrive_module() function infiniteimprobabilitydrive_content(&$a) { - $baseurl = $a->get_baseurl() . '/addon/infiniteimprobabilitydrive'; + $baseurl = $a->getBaseURL() . '/addon/infiniteimprobabilitydrive'; $o = ''; - $a->page['htmlhead'] .= ''; + $a->page['htmlhead'] .= ''; - $baseurl = $a->get_baseurl(); + $baseurl = $a->getBaseURL(); $o .= <<< EOT diff --git a/irc/irc.php b/irc/irc.php index 6aeacbe65..38ce5f24b 100644 --- a/irc/irc.php +++ b/irc/irc.php @@ -30,7 +30,7 @@ function irc_addon_settings(&$a,&$s) { /* Add our stylesheet to the page so we can make our settings look nice */ -// $a->page['htmlhead'] .= '' . "\r\n"; +// $a->page['htmlhead'] .= '' . "\r\n"; /* setting popular channels, auto connect channels */ $sitechats = PConfig::get( local_user(), 'irc','sitechats'); /* popular channels */ @@ -74,7 +74,7 @@ function irc_module() { function irc_content(&$a) { - $baseurl = $a->get_baseurl() . '/addon/irc'; + $baseurl = $a->getBaseURL() . '/addon/irc'; $o = ''; /* set the list of popular channels */ @@ -93,7 +93,7 @@ function irc_content(&$a) { $a->page['aside'] .= '

' . L10n::t('Popular Channels') . '

'; diff --git a/jappixmini/jappixmini.php b/jappixmini/jappixmini.php index ad25b6f94..8111f9fd8 100644 --- a/jappixmini/jappixmini.php +++ b/jappixmini/jappixmini.php @@ -323,10 +323,10 @@ function jappixmini_settings(App $a, &$s) if (!$activate) { // load scripts if not yet activated so that password can be saved - $a->page['htmlhead'] .= '' . "\r\n"; - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; } $s .= ''; @@ -489,10 +489,10 @@ function jappixmini_script(App $a) return; } - $a->page['htmlhead'] .= '' . "\r\n"; - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; $username = PConfig::get(local_user(), 'jappixmini', 'username'); $username = str_replace("'", "\\'", $username); @@ -513,7 +513,7 @@ function jappixmini_script(App $a) // set proxy if necessary $use_proxy = Config::get('jappixmini', 'bosh_proxy'); if ($use_proxy) { - $proxy = $a->get_baseurl() . '/addon/jappixmini/proxy.php'; + $proxy = $a->getBaseURL() . '/addon/jappixmini/proxy.php'; } else { $proxy = ""; } @@ -568,10 +568,10 @@ function jappixmini_login(App $a, &$o) { // create client secret on login to be able to encrypt jabber passwords // for setDB and str_sha1, needed by jappixmini_addon_set_client_secret - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; // for jappixmini_addon_set_client_secret - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; // save hash of password $o = str_replace("
get_baseurl() . '/addon/jappixmini/jappix/AUTHORS">Jappix authors and is distributed under the terms of the GNU Affero General Public License.

'; - $b .= '

You can download the source code of the addon. The rest of Friendica is distributed under compatible licenses and can be retrieved from https://github.com/friendica/friendica and https://github.com/friendica/friendica-addons

'; + $b .= '

This site uses the jappixmini addon, which includes Jappix Mini by the Jappix authors and is distributed under the terms of the GNU Affero General Public License.

'; + $b .= '

You can download the source code of the addon. The rest of Friendica is distributed under compatible licenses and can be retrieved from https://github.com/friendica/friendica and https://github.com/friendica/friendica-addons

'; } diff --git a/js_upload/js_upload.php b/js_upload/js_upload.php index 28903f87e..adeba838c 100644 --- a/js_upload/js_upload.php +++ b/js_upload/js_upload.php @@ -38,8 +38,8 @@ function js_upload_form(&$a,&$b) { $b['default_upload'] = false; - $b['addon_text'] .= ''; - $b['addon_text'] .= ''; + $b['addon_text'] .= ''; + $b['addon_text'] .= ''; $upload_msg = L10n::t('Select files for upload'); $drop_msg = L10n::t('Drop files here to upload'); diff --git a/krynn/krynn.php b/krynn/krynn.php index 47372926d..4b6e1f7f7 100644 --- a/krynn/krynn.php +++ b/krynn/krynn.php @@ -141,7 +141,7 @@ function krynn_settings(&$a,&$s) { /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variable */ diff --git a/langfilter/langfilter.php b/langfilter/langfilter.php index fe413d63e..6922ac823 100644 --- a/langfilter/langfilter.php +++ b/langfilter/langfilter.php @@ -121,7 +121,7 @@ function langfilter_prepare_body_content_filter(App $a, &$hook_data) // Never filter own messages // TODO: find a better way to extract this - $logged_user_profile = $a->get_baseurl() . '/profile/' . $a->user['nickname']; + $logged_user_profile = $a->getBaseURL() . '/profile/' . $a->user['nickname']; if ($logged_user_profile == $hook_data['item']['author-link']) { return; } diff --git a/libertree/libertree.php b/libertree/libertree.php index 7fce4b4e8..c6e3f9f1e 100644 --- a/libertree/libertree.php +++ b/libertree/libertree.php @@ -51,7 +51,7 @@ function libertree_settings(&$a,&$s) { /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variables */ diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index 669788fd6..61c96b7db 100644 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -54,7 +54,7 @@ function ljpost_settings(&$a,&$s) { /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variables */ diff --git a/mahjongg/mahjongg.php b/mahjongg/mahjongg.php index 3567792b4..6d772a937 100644 --- a/mahjongg/mahjongg.php +++ b/mahjongg/mahjongg.php @@ -26,7 +26,7 @@ function mahjongg_module() {} function mahjongg_content(&$a) { -$baseurl = $a->get_baseurl() . '/addon/mahjongg'; +$baseurl = $a->getBaseURL() . '/addon/mahjongg'; $o .= <<< EOT

diff --git a/mailstream/mailstream.php b/mailstream/mailstream.php index 7aad5861c..5d9153d43 100644 --- a/mailstream/mailstream.php +++ b/mailstream/mailstream.php @@ -152,7 +152,7 @@ function mailstream_do_images($a, &$item, &$attachments) { return; } $attachments = []; - $baseurl = $a->get_baseurl(); + $baseurl = $a->getBaseURL(); preg_match_all("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", $item["body"], $matches1); preg_match_all("/\[img\](.*?)\[\/img\]/ism", $item["body"], $matches2); foreach (array_merge($matches1[3], $matches2[1]) as $url) { @@ -289,7 +289,7 @@ function mailstream_send($a, $message_id, $item, $user) { $mail->CharSet = 'utf-8'; $template = get_markup_template('mail.tpl', 'addon/mailstream/'); $item['body'] = BBCode::convert($item['body']); - $item['url'] = $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $item['id']; + $item['url'] = $a->getBaseURL() . '/display/' . $user['nickname'] . '/' . $item['id']; $mail->Body = replace_macros($template, [ '$upstream' => L10n::t('Upstream'), '$local' => L10n::t('Local'), diff --git a/namethingy/namethingy.php b/namethingy/namethingy.php index c758fc08a..f6a717fc8 100644 --- a/namethingy/namethingy.php +++ b/namethingy/namethingy.php @@ -27,7 +27,7 @@ function namethingy_module() {} function namethingy_content(&$a) { -$baseurl = $a->get_baseurl() . '/addon/namethingy'; +$baseurl = $a->getBaseURL() . '/addon/namethingy'; $o .= <<< EOT

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 NGEV>i007bMURqiKN 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%0AWJDqKR4 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 MPXGV_0MYK{Y`FKg?f?J) literal 0 HcmV?d00001 diff --git a/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff b/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..7e38885870a5edf64ec62a3584e5c961f0821dc2 GIT binary patch literal 19296 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 EZSCm?z5oCK literal 0 HcmV?d00001 diff --git a/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff b/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..45e322b0044ab26adce79d2021ac4ef52b11f171 GIT binary patch literal 15928 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 CI2`c+ literal 0 HcmV?d00001 diff --git a/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff b/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..c023dd1de92eb0ac4ec3f1c5a88d59e221dc2bde GIT binary patch literal 14628 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 literal 0 HcmV?d00001 diff --git a/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff b/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..033e6e441e81a8795a9a4d9183e883b6fcac27f7 GIT binary patch literal 12668 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 WyvUI8zww3T>#YR1s|R6S?9`#h(6 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 literal 0 HcmV?d00001 diff --git a/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff b/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..23719065d68a129cb65e5997b79dc60fbfae8bb5 GIT binary patch literal 5792 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 YD5Rt{wXVu+sD zFM(wYOY%hyk=w>||M;B;p~sT9i}(RiI;kFEoOW)V!x!|0K)IH8iWKhcp6~R<{e0!A zqmiQIUf0O=HGeiM{v-q$88Qy!nLKdXUxFu=nc9~`TuHL>Si;FQI15|NU-2)2pGT0e zI88Hdv0tEJIe~8K&>%GLvTS0%KJ3f;!iUS zG>4r;fJ#?85o_yy^DBtDJ!x4}mWq!Q$$cp}YH{s-^5v3o``2;QS&HE-C_V^i zSEah#uy$4VZ5)$t)b=FqG|jo{)+b=~K7E{2?b6*}HTv6$??>m8j*_NjXBa>VT2Cg> zD9Yg5$m2)hYJ`+m0#yHIY?FQO$&7bI1Q%;M3MLET^)FPiNO6G#FTm>aeG6+z_H~eN zw%#l*m^Q_S37g~L3`~ln&bfP^5O9c|uv6H!tvxOsb;JDN{DB@K zexk>av$uo$B7eMc zr1o!HP0M1y5&}n>zvh&0cGC%D!azTUPTC`$H{!PRxyA)t59S=tFy2#~^0nV;Xd4Jn{CWP4l;tIt$&0C|jj7=}r7;3cZp#d{i8G;??IQq1>50g(JQFX&4; zh?#hbyOfQMn4zUg?hs7t*xj;>y$*v4H^77?zs4azA#FywzJ^HKWJ zPxD=jyehevig&QT+=V&c-lZ0S2-j6I6`;dzZ5xv9amNqP)W-M;fyG<&q&qxof2-^6 zqojiMCRLAOvs39j^|T^ydst(@NlKF(DRE+86)DOL!D%$!)^L4$IiB>Jy0ddlc-e;S zI*)5c$pRM=)W1*2%{Q|-VJgaK81#e_u7)x%W^88M|f`a2EC=0L*grqxB~&_2(7&nYdr zxez9JbUoEz6WLlZIru@NhfrTggBd>A8|0~rOPqB#UAaIxbP+~6{AVUFA!q5uadGU* znd~OhTi1d9FVlCUY5osK{P7XbJmhI@gt1%FZ-?Xr-g>w7x92+Ft$vr=B!&$sOfL-& za$RzI33!@?`Ft)b4gCwHxD4YMrfScMB>G@hZ#guYecODZ4@W_$Ov+<4K3f9$wIh$;^pTdnNw=NjyBm^c3o~l zJmA4!AEr(%1!VHY^Tplaic0|`%o$%}z_#QCc6R~RRDv}EQYDG=qkl7;nT4z((%IVp z3f|q%BD@{HG-bdy_BOjYS~xs&%$Q|YmHACYjoJ9lD1vb{A!o<&EH*8nm@Cs zrb@qmiL9N<_o!NGs4h0GfEOr1L?$+)48H;mz>l+!T~h=nWUe~X1tSBR3hWp5ejXsd z&Cdk)x83UC^=mTUoZczOSV)0ZZXce}@)~dp&0M#C=*isK8@yA~%n_-%zk{(D66P&N z2lZG`Wj}2#O=yIp9%&t$NbfKP8^g6Bs;SOhR}Y5MQLtf<7J z`Cv>r(rdks(Zb>tSfWj74o_$sVUtCaN+vhKE|eo-^Y^Jon(<^?q{*jcl>Iz@jnu1{ z3?x}js>aC8aOOCu%`JWae{rK?^s0DH`E$tqFBzFQ8Mn|PXTC)J^^cdFymY%wqailL zJdQf+0T>6y=FI<_ORi$U@PTAd7!+F(i^Ue>f(8II1z7!e{&L+5?KzDO3OWOQBVsYM z^?(W3nGd)TsAXa}2(tTxy(9ycTTb3Qpwz>I5`)%GXjwXjMtTPZL^AUMAsH<+yxj;a zlq6m~r+~3QCv?E>(&jzhlyKr1P-lsTa|Ks~xyM_nSH4zHo)=h{VJmD3*i&NpWrJ_` wDbTXnmoYE1Q$RqVNI(ERkp0aSgZ>c!`bPGs>k|H4z zlF}(L|9Rf`{r10W?R(eWcb{|C`Eb6R06jQd&(Kg00O%b63IKQ5n*f4;-~WG9;BYPg zAkqc^DhB|d*_Lxtv4+D9b#SrjI5*qBuxW#vs6AGN0{~q$jFDBUi}T=-;rr52q%P)g};Jq-p}761k%S8??`+40`!g%C!D_&i=TE7j@BLVWTTa2c0Zu3Lw}Wx_4wibPiD|0O$jNFaZ4PbMkl0 z>FOHl>YD2N6crYhPogaO2qEs^UYgphZ8Z@@h{A{oJe2lP* zSA>dU)dsH$)R5d0gmD&6N+KR#iK%x$5^EXvFN<=RdxP@|Z|b^buQPAlkQ~Ev@!b>y zj?y6O-rzI-tdAoEW7eBO!VT5&(!}G)a}tbmO_Uz7^TE^)ahYLDYgVY*l|1IzOu$Zd z_wx$J4yHDkLK4{e@uT@J%D~N4nmcrI2PrTF5r?s?@srnGjSPp^Pwnb0h2yN4%XNj!^Iqi(QWV??JV6s@OxN;S*>7eP6#Iu?R-vFCgNGjo&lwuyLXvH3^YN+4!B3Lq@YLce4|6&4 zFXWxu83j(Qr&0>G(^Pe|g@kTnQB+@qLE~HWTfS$0vLaI!`DXB%?Z|=^!&|kqtNJEn zlE8atHq%zW(yWletS0+pl-L*Hu9B#Ua^>>Ge}1c==RaAV>muF;wYCII9{UeCt!BE% zLK_1bqsOA*EgZtb-+7lew?KBZKCp!umWV{2(>>xhY*eOVrIMYtUb^B%QcbM^V-dB3 zP2puPgVXnBg*!|Cl-#RKY)Vi`pv^P42oTB7W6=z@t1Y(Lon(+Su4t|lu_`!{OV@1; zjFjKcGo52gfa_*BZ!EMUQM--C6ld!E9Wt+K;$PN^O;B*3Emr2Vktcd`Uft!m-x%mT zIFL~Ej$1zuWbefm;mI7+n^7?B5{u~o^^c9#s3xAcru@O|JbE_&~0nq_fQ%#g|u z$1s0|#bOCgg~VNeX*h4GqrnPE*|f3TyOI1`UF+LnZ9L|C`(jGy?MiQ=?&3!){dM1vP zNTwjXWR9@);3n-;4fprrV4?s@yd`7)H`4$HI|_n>OaVaXF2zWRm@`32^ zqZ8#=iJQx`a4~lY!}--bl;hP{+oG^6NIu>+i+Lp&9`D>o)YBVDb68q!qe-$i(9^oM zpp}!;j_k~_g%3mx!iTb$E~BRlGY`30dl$yzojB|T9!O?2kMIbDne|oJLd1o&9NzDiPT>G6n zQ;N_>MO>b+&VGYR>6%)UIlP!VGebOtl-NT8-4T{n0V(?++!;Y|cp9BIrepHX-d`JR;97ucUdY*TX3x{>`^)ftisb(Q15m+m96q^>y?f{5y!; zinxF3j4Gl|Yo{xcPV1yR#4P$}>cAen^S#<&&tItDK3~QY5gE0mhNbRI>JW_vbqRic z8fyb~$X)Gah_70c$O8LT5mJ#{ZSD@0s&=9&TMajlv~u)?sIT>!$rJW-BhcGN!Po=I zo+>IVYcuG5U&Q3D>)%&7Xi_~|i@}FmTZoSML}J>{g@fyxlsTxUJl1R|ePW39SJZ$X zG=yPn?2Dk^{;}Y)E)CZYpWK%>n zd9o)43GVtTCO5-=Ukpb3OKd~uP*I{^?9~a~Qp`mmZjm46S*7{^996Srb(w75^}DKr zs)EVcbe+&Jh!nNEV?i>Af-6sNhTkcbwoV!s{OngfxQDIa!!=q*d38$8AxB2 z-!hWVFqA*#GLx-Mu(}q;tWVfC=1Y}S;7k?2^;(Oy#jIlYHG;qXi|Qg@3gxd}F9W{f zr^FEUR6-Cz4k&oa^zXhvd5wYdw9*3?Ddm`V6!GaKC37bX?Zc*I97x&xze~?&1GIu~ z-VP%Rpw*FlmHnzm2M1q!6<2jz#Js`R8o$9LilH;F_XkesQPK^L??*DO{Di$B&qyz??c6&ywsukcX>`mO#BL*skfy0#T3N9aw2;%QpANKm@egGq z7`P^F`x{HM{0Xs^5M1k)B&Ss$sAldv7}##`VIzj~@Ui!dZ;4$hylPC#ywkStUVVym z$;=C zz}XSW&&V%RhGk@4liTe$5{VVjSaS3ui6yEv;p#|kZ|};rDBiY?=54@F@-J=tGkQ;5 zb9CX!NriAfjkd&kny5wACxa)3)?QJTLev-LFe9$eesph8QA7RSZhnKbg4G$Z5RnHF zl=czLU6G&Y)!jbnl%JDpr}AaH`GlcVF#C{?f&Cr3FSgh()xiCinitXAg~?{6`AUoF zhre4?vi@~d`RLM!o(rT9c)^a0f?tPEuz7Kq*MYrDa#N8*pSOxIh(F;9bI$Nz{%Zpz1p?ggcjvxwaJecV}lsSqsO&nUhkU=(K zs=_7(pq0Dx3rW%(`cfZQj^FsY`L>Z8noW@9Eae8=yLoydfqr(b$YJeE9k={ z_5y=4QSm@Wmz`c=VPL(Ikh;y|?>|f9&XRQooR>cquKX?xTgCWiB*j|D-Cvx3!TbKf zGd1+s7}HJ}?aoqIDst`g3&yjb%G&df`|XNnMF?$Yc#d~-=+%(Vs^LaDLH~9CvckcU z_0p4Tor&o_cDd{&^3ZLh%xpMg%h>FT`B?17v!0Uk?fVdpvZ`uQhU##NHu(FF&znZa zp%TOCZr@|9-HjVKDn0k2A6V}n9 zh|_9=k(q_zJc6j=;60nV>)b@vbLA|Z-=6$$*l0R1qKi_J3hb_0V1bYC!dJ-aXI-Qw zm(AG|IAkKKJ44zlg0+5Ws|eVP?YQzi=kV(3&b8X6cxk>wknmLqwOikDo_KEQ=2_+z zFilXamGEX(y=~hyVth9>?9J@KdYS9ESa!RK{oRLKc+ABOWzxttti5yNzKC-_i7TVY z=f`v}Zk?7t>u7{HANVj^btL5ZIwRY2SUqdggN*Lcuc@RMo7hc|%nn`!=@dh)}&^PUCdl4 zyB);nRZ`8tV+G0P;ERQHj&dDPbEC|b6xkiWr|3GK5^BR@M^&d)kb&0bLbU$fssVCkn%j;jEoolLv$p!KTp}e$*)xxviUggPpPA;%;(;jWI zQ&bi!p&3!-CKHp2N)T>|Koji7IW=^B-Q9FvN3OV&e795LlQBo;61&|-a>UWOf`XE> z^f!aL(*U9=!gjXc_n zXHR|R@UQQh!Y=4Kf5Z(_qjj}IHFXctj7r}T#>?fhq=bcWF)rS$lU?tb$#H_a$S7M! zZEJ#GN}t&(d=}~5=+-ih7HJwZwD9!91|ObG_=&J+isc+RnR=mLi;W z`je6w!(5iLR#eTjY`AGRWm8_MS*tJHw7Jz(#*c4M0QCAV@6itA$w_ejzELLT4rlRmEJX_7d?w|oQ6zQw9|Ksv+Wh#=G zGN8*$rtzcLTnnW^K-UlbCYfdv=qdaBq+s4Iz22DyM-JA#D2jyRbqa&0+cK)<3A7$gBvJrg4U8kv=_UJlGtxNp_WTupQv_gkDI&=pGcQLis-~ z%d*Nm7X-Vd5hbcGCUM3Dy@f7Fljw=`QamTI!NaEs1VrqRaSypRwh|=&JaG53 zm}WH;#*T~)jii@3$~_i|N0B$`(-@op*zfu)>$bW16~jG=Cz^X27vn!V*lpT2Cm|b? zP2q(YDiXCgs%KmeXD=6QtZy$5ezH?`Ylx7Qr7!6$k-lk57U)-b@^R+c> ziQcuv{q`3Z@2#)TTN(9((+M5Y_9tzHSri`y3*YqjZm?32ySS^B$8|1z3^)dV(v>1( z4@I*G5`}kJ=ljr^xbG;h53ipX8HVABD~Di(+X&tW6-$R&AWbgVEA_+N?|v9<%p%+d zzFxd7LV|xhFVFX>(j$|7cUOFk$|y2#K5Vs-1XF;QJdQZv{py|C{-_lgWpF1=T5^@d8n^kUL0?iY7{MKaeu6u{xV(V2oW`3O z$wL??#fuj&Xh?TQuwhg`iwDKXFr`zSuMAzWa5 zE_dW-s9kizd7kh}@&T2&#<55EdeJ{S{qD)JuS2p}x5}sHjxULWOWyej%nK&2ZMkex%Sv!f5 zxOp@hn^XNwoMrQSTP436%;>h&IutxoU3F~^2`v9G^u5AcWZoG{Xi9Fwe)E@4&hY8p zDo8gK0|`QiZ)vy2LKycZ1lGOp2XQDzsoQJRILp8OqY{%aU$%i4`?m+a*7fT~VU+W4 zOWC*-`k$w1x6F+;^v;l98bu-IJUAM%tG4fj+d)*%S+ z1V5%fZt8-6Np&#QK#0X*A_WU|AtEXXrc>p($HSW{FqYMTe8Ak0@OWMH$^CFuSmy5< ztEb+neAnbLeFx^P-4y)*d*PJdKqBYSYRX2)#ZKefYZ4BBIyEVq^Mz2>(5#%d(kJ)& zS2biPd1;r_w0t|Bv2yKS|9Pg}0|F?5nCa@zTrbgHy2$jKHPI$*m z05Lvb@!#FTMIWN~ATBISIL(%VT13)a(o}p2fdYy~Lq7qN9xr{ViA!zKhgjTpkC^L% z7t~85ie(aoW&T5kk=2L3)rjiO>3i9oGaBB_HbSY^r;QJy3N;0E1tsYKAEBLR@0j&L tPlrGBbah=2xfqcX5CA%4JSDiw0N%gXm#KSM|9LMZa6451__nw1^?w;(4R8Pe literal 0 HcmV?d00001 diff --git a/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff b/mathjax/asset/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..bd564c45861c533d0613fa5c45e43bd40a2f8f17 GIT binary patch literal 3256 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 Date: Thu, 20 Sep 2018 00:30:40 -0400 Subject: [PATCH 036/107] [mathjax] Fix version number display --- mathjax/mathjax.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mathjax/mathjax.php b/mathjax/mathjax.php index 8564890eb..83f0405a2 100644 --- a/mathjax/mathjax.php +++ b/mathjax/mathjax.php @@ -2,7 +2,7 @@ /** * Name: MathJax * Description: Addon for Friendika to include MathJax (LaTeX math syntax) - * Version: 2 + * Version: 2.0 * Author: Tobias Diekershoff * Author: Hypolite Petovan * License: 3-clause BSD license From bdb856888da23cc62553d005f5d7ab0c2251b341 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 20 Sep 2018 21:08:03 -0400 Subject: [PATCH 037/107] [mathjax] Add separate addon JS file - Use new footer hook to register script files --- mathjax/mathjax.js | 3 +++ mathjax/mathjax.php | 23 ++++++----------------- 2 files changed, 9 insertions(+), 17 deletions(-) create mode 100644 mathjax/mathjax.js diff --git a/mathjax/mathjax.js b/mathjax/mathjax.js new file mode 100644 index 000000000..6642ee29f --- /dev/null +++ b/mathjax/mathjax.js @@ -0,0 +1,3 @@ +document.addEventListener('postprocess_liveupdate', function () { + MathJax.Hub.Queue(['Typeset', MathJax.Hub]); +}); diff --git a/mathjax/mathjax.php b/mathjax/mathjax.php index 83f0405a2..a4e8fe05e 100644 --- a/mathjax/mathjax.php +++ b/mathjax/mathjax.php @@ -1,7 +1,7 @@ * Author: Hypolite Petovan @@ -15,14 +15,14 @@ use Friendica\Core\PConfig; function mathjax_install() { - Addon::registerHook('page_end' , __FILE__, 'mathjax_page_end'); + Addon::registerHook('footer' , __FILE__, 'mathjax_footer'); Addon::registerHook('addon_settings' , __FILE__, 'mathjax_settings'); Addon::registerHook('addon_settings_post', __FILE__, 'mathjax_settings_post'); } function mathjax_uninstall() { - Addon::unregisterHook('page_end' , __FILE__, 'mathjax_page_end'); + Addon::unregisterHook('footer' , __FILE__, 'mathjax_footer'); Addon::unregisterHook('addon_settings' , __FILE__, 'mathjax_settings'); Addon::unregisterHook('addon_settings_post', __FILE__, 'mathjax_settings_post'); @@ -69,23 +69,12 @@ function mathjax_settings(App $a, &$s) $s .= ''; } -/* we need to add one JavaScript include command to the html output - * note that you have to check the jsmath/easy/load.js too. - */ -function mathjax_page_end(App $a, &$b) +function mathjax_footer(App $a, &$b) { // if the visitor of the page is not a local_user, use MathJax // otherwise check the users settings. - $url = $a->get_baseurl() . '/addon/mathjax/asset/MathJax.js?config=TeX-MML-AM_CHTML'; - if (!local_user() || PConfig::get(local_user(), 'mathjax', 'use', false)) { - $b .= << - -HTML; + $a->registerFooterScript(__DIR__ . '/asset/MathJax.js?config=TeX-MML-AM_CHTML'); + $a->registerFooterScript(__DIR__ . '/mathjax.js'); } } From 27a48ae84a5452ad74f610c4c039b043fc12d20d Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 20 Sep 2018 21:32:47 -0400 Subject: [PATCH 038/107] [highlightjs] Use new 'head'/'footer' hooks - Create separate addon javascript file - Register stylesheet and Javascript files --- highlightjs/highlightjs.js | 6 ++++++ highlightjs/highlightjs.php | 36 ++++++++++++------------------------ 2 files changed, 18 insertions(+), 24 deletions(-) create mode 100644 highlightjs/highlightjs.js diff --git a/highlightjs/highlightjs.js b/highlightjs/highlightjs.js new file mode 100644 index 000000000..b198c7057 --- /dev/null +++ b/highlightjs/highlightjs.js @@ -0,0 +1,6 @@ +hljs.initHighlightingOnLoad(); + +document.addEventListener('postprocess_liveupdate', function () { + var blocks = document.querySelectorAll('pre code:not(.hljs)'); + Array.prototype.forEach.call(blocks, hljs.highlightBlock); +}); diff --git a/highlightjs/highlightjs.php b/highlightjs/highlightjs.php index e8b5fe019..8d05453b6 100644 --- a/highlightjs/highlightjs.php +++ b/highlightjs/highlightjs.php @@ -11,41 +11,29 @@ use Friendica\Core\Addon; function highlightjs_install() { - Addon::registerHook('page_end', __FILE__, 'highlightjs_page_end'); + Addon::registerHook('head' , __FILE__, 'highlightjs_head'); + Addon::registerHook('footer', __FILE__, 'highlightjs_footer'); } function highlightjs_uninstall() { - Addon::unregisterHook('page_end', __FILE__, 'highlightjs_page_end'); + Addon::unregisterHook('head' , __FILE__, 'highlightjs_head'); + Addon::unregisterHook('footer', __FILE__, 'highlightjs_footer'); } -function highlightjs_page_end(App $a, &$b) +function highlightjs_head(App $a, &$b) { - $basedir = $a->get_baseurl() . '/addon/highlightjs/asset'; - if ($a->getCurrentTheme() == 'frio') { $style = 'bootstrap'; } else { $style = 'default'; } - $a->page['htmlhead'] .= <<< HTML - - - -HTML; - - $b .= <<< HTML - - - - -HTML; + $a->registerStylesheet(__DIR__ . '/asset/styles/' . $style . '.css'); +} + +function highlightjs_footer(App $a, &$b) +{ + $a->registerFooterScript(__DIR__ . '/asset/highlight.pack.js'); + $a->registerFooterScript(__DIR__ . '/highlightjs.js'); } From ab571e687f261d829470174f48e78f48fb39d1dd Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 20 Sep 2018 21:48:46 -0400 Subject: [PATCH 039/107] [mathjax] Move settings template to separate file --- mathjax/mathjax.php | 27 ++++++++------------------- mathjax/templates/settings.tpl | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 19 deletions(-) create mode 100644 mathjax/templates/settings.tpl diff --git a/mathjax/mathjax.php b/mathjax/mathjax.php index a4e8fe05e..9aa070272 100644 --- a/mathjax/mathjax.php +++ b/mathjax/mathjax.php @@ -34,11 +34,7 @@ function mathjax_uninstall() function mathjax_settings_post($a) { - if (!local_user()) { - return; - } - - if (empty($_POST['mathjax-submit'])) { + if (!local_user() || empty($_POST['mathjax-submit'])) { return; } @@ -52,21 +48,14 @@ function mathjax_settings(App $a, &$s) } $use = PConfig::get(local_user(), 'mathjax', 'use', false); - $usetext = $use ? ' checked="checked" ' : ''; - $s .= ''; - $s .= '