From 0995516008a257ae565d1bfa09c45fdea996049d Mon Sep 17 00:00:00 2001 From: Stef Dawson Date: Tue, 13 Jan 2026 00:17:35 +0000 Subject: [PATCH 01/75] Update build scripts to use 4.9.x branches --- .github/get-classic-admin-theme.sh | 2 +- .github/get-default-theme.sh | 2 +- .github/get-hive-admin-theme.sh | 2 +- .github/get-pophelp.sh | 2 +- .github/get-textpacks.sh | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/get-classic-admin-theme.sh b/.github/get-classic-admin-theme.sh index bca4ce09b..038e6a6cc 100644 --- a/.github/get-classic-admin-theme.sh +++ b/.github/get-classic-admin-theme.sh @@ -6,7 +6,7 @@ REPO="textpattern-classic-admin-theme"; EXTRACT="textpattern/admin-themes/classic"; -TAG="main"; +TAG="4.9.x"; if [ ! -z "$1" ]; then TAG="$1"; fi diff --git a/.github/get-default-theme.sh b/.github/get-default-theme.sh index b885165ae..91ff36046 100644 --- a/.github/get-default-theme.sh +++ b/.github/get-default-theme.sh @@ -6,7 +6,7 @@ REPO="textpattern-default-theme"; EXTRACT="textpattern/setup/themes"; -TAG="main"; +TAG="4.9.x"; if [ ! -z "$1" ]; then TAG="$1"; fi diff --git a/.github/get-hive-admin-theme.sh b/.github/get-hive-admin-theme.sh index a4a7aa0d9..b0739820a 100644 --- a/.github/get-hive-admin-theme.sh +++ b/.github/get-hive-admin-theme.sh @@ -7,7 +7,7 @@ EXTRACT1="textpattern/admin-themes"; EXTRACT2="sites/site1/admin/setup"; -TAG="main"; +TAG="4.9.x"; if [ ! -z "$1" ]; then TAG="$1"; fi diff --git a/.github/get-pophelp.sh b/.github/get-pophelp.sh index 96881edf8..00d6d60c5 100644 --- a/.github/get-pophelp.sh +++ b/.github/get-pophelp.sh @@ -6,7 +6,7 @@ REPO="pophelp"; EXTRACT="textpattern/lang"; -TAG="main"; +TAG="4.9.x"; if [ ! -z "$1" ]; then TAG="$1"; fi diff --git a/.github/get-textpacks.sh b/.github/get-textpacks.sh index 688d9a6c1..19c13ebb1 100644 --- a/.github/get-textpacks.sh +++ b/.github/get-textpacks.sh @@ -6,7 +6,7 @@ REPO="textpacks"; EXTRACT="textpattern/lang"; -TAG="main"; +TAG="4.9.x"; if [ ! -z "$1" ]; then TAG="$1"; fi From 42250a551ba372fc5f7d2fddd14f705f8d82b36a Mon Sep 17 00:00:00 2001 From: etc Date: Wed, 14 Jan 2026 22:19:51 +0100 Subject: [PATCH 02/75] Update taghandlers.php see #2033 --- textpattern/publish/taghandlers.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/textpattern/publish/taghandlers.php b/textpattern/publish/taghandlers.php index 554703a83..f54d601a5 100644 --- a/textpattern/publish/taghandlers.php +++ b/textpattern/publish/taghandlers.php @@ -1697,7 +1697,7 @@ function txp_sandbox($atts = array(), $thing = null) if (empty($id)) { assert_article(); - $id = $thisarticle['thisid']; + $id = $thisarticle['thisid'] ?: 0; } elseif (!isset($articles[$id])) { return; } @@ -1725,7 +1725,7 @@ function txp_sandbox($atts = array(), $thing = null) $oldarticle = $thisarticle; isset($articles[$id]) and $thisarticle = $articles[$id]; $was_article_body = $is_article_body; - $is_article_body = $thisarticle['authorid']; + $is_article_body = $thisarticle['authorid'] ?: true; $was_form = $is_form; $is_form = 0; From 2c12d5bb714730809cfe07cea311f29687baa3dc Mon Sep 17 00:00:00 2001 From: etc Date: Fri, 16 Jan 2026 15:20:42 +0100 Subject: [PATCH 03/75] Patch MariaDB unixtime zero bug --- rpc/TXP_RPCServer.php | 10 +++--- textpattern/include/txp_admin.php | 2 +- textpattern/include/txp_article.php | 20 +++++------ textpattern/include/txp_diag.php | 2 +- textpattern/include/txp_discuss.php | 6 ++-- textpattern/include/txp_file.php | 8 ++--- textpattern/include/txp_image.php | 6 ++-- textpattern/include/txp_link.php | 6 ++-- textpattern/include/txp_list.php | 6 ++-- textpattern/include/txp_lore.php | 2 +- textpattern/lib/txplib_db.php | 4 +-- textpattern/lib/txplib_misc.php | 10 +++--- textpattern/lib/txplib_publish.php | 36 +++++++++---------- textpattern/lib/txplib_wrapper.php | 4 +-- textpattern/publish.php | 6 ++-- textpattern/publish/atom.php | 8 ++--- textpattern/publish/comment.php | 4 +-- textpattern/publish/rss.php | 8 ++--- textpattern/vendors/Textpattern/L10n/Lang.php | 2 +- .../Textpattern/Tag/Syntax/Comment.php | 8 ++--- .../vendors/Textpattern/Tag/Syntax/Link.php | 2 +- 21 files changed, 80 insertions(+), 80 deletions(-) diff --git a/rpc/TXP_RPCServer.php b/rpc/TXP_RPCServer.php index 9537c81dc..64e3879f9 100644 --- a/rpc/TXP_RPCServer.php +++ b/rpc/TXP_RPCServer.php @@ -533,7 +533,7 @@ function blogger_getPost($params) return new IXR_Error(100, gTxt('bad_login')); } - $rs = $txp->getArticleID($postid, 'ID, Body, AuthorId, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) as uPosted'); + $rs = $txp->getArticleID($postid, 'ID, Body, AuthorId, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) as uPosted'); if (!$rs) { return new IXR_Error(205, gTxt('problem_retrieving_article')); @@ -579,7 +579,7 @@ function blogger_getRecentPosts($params) return new IXR_Error(100, gTxt('bad_login')); } - $articles = $txp->getArticleList('ID, Body, AuthorId, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) as uPosted', "Section='" . doSlash($blogid) . "'", '0', $numberOfPosts, false); + $articles = $txp->getArticleList('ID, Body, AuthorId, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) as uPosted', "Section='" . doSlash($blogid) . "'", '0', $numberOfPosts, false); if (false === $articles) { return new IXR_Error(207, gTxt('problem_getting_articles')); @@ -610,7 +610,7 @@ function metaWeblog_getPost($params) return new IXR_Error(100, gTxt('bad_login')); } - $rs = $txp->getArticleID($postid, 'ID, Title, Body, Excerpt, Annotate, Keywords, Section, Category1, Category2, textile_body, url_title, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) as uPosted'); + $rs = $txp->getArticleID($postid, 'ID, Title, Body, Excerpt, Annotate, Keywords, Section, Category1, Category2, textile_body, url_title, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) as uPosted'); if (!$rs) { return new IXR_Error(205, gTxt('problem_retrieving_article')); @@ -707,7 +707,7 @@ function metaWeblog_getRecentPosts($params) } $articles = $txp->getArticleList( - 'ID, Title, url_title, Body, Excerpt, Annotate, Keywords, Section, Category1, Category2, textile_body, AuthorID, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) as uPosted, Status', + 'ID, Title, url_title, Body, Excerpt, Annotate, Keywords, Section, Category1, Category2, textile_body, AuthorID, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) as uPosted, Status', "Section='" . doSlash($blogid) . "'", '0', $numberOfPosts, false ); @@ -739,7 +739,7 @@ function mt_getRecentPostTitles($params) return new IXR_Error(100, gTxt('bad_login')); } - $articles = $txp->getArticleList('ID, Title, AuthorID, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) as uPosted', "Section='" . doSlash($blogid) . "'", '0', $numberOfPosts, false); + $articles = $txp->getArticleList('ID, Title, AuthorID, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) as uPosted', "Section='" . doSlash($blogid) . "'", '0', $numberOfPosts, false); if (false === $articles) { return new IXR_Error(207, gTxt('problem_getting_articles')); diff --git a/textpattern/include/txp_admin.php b/textpattern/include/txp_admin.php index 8187337b1..12a481ff5 100644 --- a/textpattern/include/txp_admin.php +++ b/textpattern/include/txp_admin.php @@ -324,7 +324,7 @@ function author_list($message = '') 'label' => 'privileges', ), 'last_login' => array( - 'column' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), last_access)', + 'column' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), last_access)', 'class' => 'date', ), 'article_count' => array( diff --git a/textpattern/include/txp_article.php b/textpattern/include/txp_article.php index 801cdfcb5..08a1f6ab9 100644 --- a/textpattern/include/txp_article.php +++ b/textpattern/include/txp_article.php @@ -146,9 +146,9 @@ function article_save($write = true) if ($incoming['ID']) { $oldArticle = safe_row( "Status, AuthorID, url_title, Title, textile_body, textile_excerpt, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS sLastMod, LastModID, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS sPosted, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS sExpires", + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS sLastMod, LastModID, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS sPosted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS sExpires", 'textpattern', "ID = " . (int) $incoming['ID'] ); @@ -218,7 +218,7 @@ function article_save($write = true) $uPosted = $ts - tz_offset($ts); } - $whenposted = "FROM_UNIXTIME(0) + INTERVAL $uPosted SECOND"; + $whenposted = "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $uPosted SECOND"; } // Set and validate expiry timestamp. @@ -264,7 +264,7 @@ function article_save($write = true) } if ($uExpires) { - $whenexpires = "FROM_UNIXTIME(0) + INTERVAL $uExpires SECOND"; + $whenexpires = "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $uExpires SECOND"; } else { $whenexpires = "NULL"; } @@ -702,9 +702,9 @@ function article_edit($message = '', $concurrent = false, $refresh_partials = fa $ID = assert_int($ID); $rs = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS sPosted, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS sExpires, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS sLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS sPosted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS sExpires, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS sLastMod", 'textpattern', "ID = $ID" ); @@ -724,7 +724,7 @@ function article_edit($message = '', $concurrent = false, $refresh_partials = fa $store_out = array('ID' => $ID) + psa($vars); if ($concurrent) { - $store_out['sLastMod'] = safe_field("TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS sLastMod", 'textpattern', "ID = $ID"); + $store_out['sLastMod'] = safe_field("TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS sLastMod", 'textpattern', "ID = $ID"); } if (!has_privs('article.set_markup') && !empty($ID)) { @@ -1164,7 +1164,7 @@ function checkIfNeighbour($whichway, $sPosted, $ID = 0) return safe_field( "ID", 'textpattern', - "(Posted $dir (FROM_UNIXTIME(0) + INTERVAL $sPosted SECOND) OR Posted = (FROM_UNIXTIME(0) + INTERVAL $sPosted SECOND) AND ID $dir $ID) $crit ORDER BY Posted $ord, ID $ord LIMIT 1" + "(Posted $dir (COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $sPosted SECOND) OR Posted = (COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $sPosted SECOND) AND ID $dir $ID) $crit ORDER BY Posted $ord, ID $ord LIMIT 1" ); } diff --git a/textpattern/include/txp_diag.php b/textpattern/include/txp_diag.php index 6e9fabc35..01ea45da7 100644 --- a/textpattern/include/txp_diag.php +++ b/textpattern/include/txp_diag.php @@ -501,7 +501,7 @@ function doDiagnostics() } // Database server time. - extract(doSpecial(getRow("SELECT @@global.time_zone AS db_global_timezone, @@session.time_zone AS db_session_timezone, NOW() AS db_server_time, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), NOW()) AS db_server_timestamp"))); + extract(doSpecial(getRow("SELECT @@global.time_zone AS db_global_timezone, @@session.time_zone AS db_session_timezone, NOW() AS db_server_time, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), NOW()) AS db_server_timestamp"))); $db_server_timeoffset = $db_server_timestamp - $now; echo pagetop(gTxt('tab_diagnostics'), ''); diff --git a/textpattern/include/txp_discuss.php b/textpattern/include/txp_discuss.php index 740fc31bd..5f523fe59 100644 --- a/textpattern/include/txp_discuss.php +++ b/textpattern/include/txp_discuss.php @@ -290,7 +290,7 @@ function discuss_list($message = '') txp_discuss.web, txp_discuss.message, txp_discuss.visible, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), txp_discuss.posted) AS posted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), txp_discuss.posted) AS posted, textpattern.ID AS thisid, textpattern.Section AS section, textpattern.url_title, @@ -298,7 +298,7 @@ function discuss_list($message = '') textpattern.Category1 AS category1, textpattern.Category2 AS category2, textpattern.Status, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), textpattern.Posted) AS uPosted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), textpattern.Posted) AS uPosted, (SELECT COUNT(*) FROM " . safe_pfx('txp_discuss') . " AS count WHERE $spamcrit AND txp_discuss.parentid = count.parentid) AS c FROM " . safe_pfx_j('txp_discuss') . " LEFT JOIN " . safe_pfx_j('textpattern') . " ON txp_discuss.parentid = textpattern.ID @@ -492,7 +492,7 @@ function discuss_edit() $discussid = assert_int($discussid); - $rs = safe_row("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), posted) AS uPosted", 'txp_discuss', "discussid = '$discussid'"); + $rs = safe_row("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), posted) AS uPosted", 'txp_discuss', "discussid = '$discussid'"); if ($rs) { extract($rs); diff --git a/textpattern/include/txp_file.php b/textpattern/include/txp_file.php index 648ee3c4d..912187c28 100644 --- a/textpattern/include/txp_file.php +++ b/textpattern/include/txp_file.php @@ -278,8 +278,8 @@ function file_list($message = '', $ids = array()) txp_file.title, txp_file.category, txp_file.description, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), txp_file.created) AS uDate, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), txp_file.modified) AS mDate, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), txp_file.created) AS uDate, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), txp_file.modified) AS mDate, txp_file.downloads, txp_file.status, txp_file.author, @@ -676,7 +676,7 @@ function file_edit($message = '', $id = '') } $id = assert_int($id); - $rs = safe_row("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), created) AS created, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), modified) AS modified", 'txp_file', "id = '$id'"); + $rs = safe_row("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), created) AS created, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), modified) AS modified", 'txp_file', "id = '$id'"); if ($rs) { extract($rs); @@ -1242,7 +1242,7 @@ function file_save() $created = "NOW()"; } else { $created_ts = safe_strtotime($year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $second); - $created = $created_ts === false ? false : "FROM_UNIXTIME(0) + INTERVAL $created_ts SECOND"; + $created = $created_ts === false ? false : "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $created_ts SECOND"; } $size = file_exists($new_path) ? filesize($new_path) : $rs['size']; diff --git a/textpattern/include/txp_image.php b/textpattern/include/txp_image.php index a378769ac..a38027688 100644 --- a/textpattern/include/txp_image.php +++ b/textpattern/include/txp_image.php @@ -99,7 +99,7 @@ function image_list($message = '') 'class' => 'name', ), 'uDate' => array( - 'column' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), txp_image.date)', + 'column' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), txp_image.date)', 'label' => 'date', 'class' => 'date', ), @@ -690,7 +690,7 @@ function image_edit($message = '', $id = '') } $id = assert_int($id); - $rs = safe_row("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), date) AS uDate", 'txp_image', "id = '$id'"); + $rs = safe_row("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), date) AS uDate", 'txp_image', "id = '$id'"); if ($rs) { extract($rs); @@ -1208,7 +1208,7 @@ function image_save() $created = "NOW()"; } else { $created_ts = safe_strtotime($year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $second); - $created = $created_ts === false ? false : "FROM_UNIXTIME(0) + INTERVAL $created_ts SECOND"; + $created = $created_ts === false ? false : "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $created_ts SECOND"; } $constraints = array('category' => new CategoryConstraint(gps('category'), array('type' => 'image'))); diff --git a/textpattern/include/txp_link.php b/textpattern/include/txp_link.php index c2de7293b..9e2327037 100644 --- a/textpattern/include/txp_link.php +++ b/textpattern/include/txp_link.php @@ -227,7 +227,7 @@ function link_list($message = '') $rs = safe_query( "SELECT txp_link.id, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), txp_link.date) AS uDate, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), txp_link.date) AS uDate, txp_link.category, txp_link.url, txp_link.linkname, @@ -394,7 +394,7 @@ function link_edit($message = '') if ($is_edit) { $id = assert_int($id); - $rs = safe_row("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), date) AS date", 'txp_link', "id = '$id'"); + $rs = safe_row("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), date) AS date", 'txp_link', "id = '$id'"); if ($rs) { extract($rs); @@ -542,7 +542,7 @@ function link_save() $created = "NOW()"; if (!$publish_now && $created_ts !== false) { - $created = "FROM_UNIXTIME(0) + INTERVAL $created_ts SECOND"; + $created = "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $created_ts SECOND"; } $constraints = array( diff --git a/textpattern/include/txp_list.php b/textpattern/include/txp_list.php index 380e39e6a..5836b39fe 100644 --- a/textpattern/include/txp_list.php +++ b/textpattern/include/txp_list.php @@ -100,17 +100,17 @@ function list_list($message = '', $post = '') 'class' => 'title', ), 'posted' => array( - 'column' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted)', + 'column' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted)', 'label' => 'posted', 'class' => 'posted date', ), 'lastmod' => array( - 'column' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod)', + 'column' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod)', 'label' => 'modified', 'class' => 'lastmod date', ), 'expires' => array( - 'column' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires)', + 'column' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires)', 'label' => 'expires', 'class' => 'expires date', ), diff --git a/textpattern/include/txp_lore.php b/textpattern/include/txp_lore.php index 18fb3e794..f2f439b13 100644 --- a/textpattern/include/txp_lore.php +++ b/textpattern/include/txp_lore.php @@ -174,7 +174,7 @@ function lore_list($message = '') ); } else { $rs = safe_rows_start( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), time) AS uTime", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), time) AS uTime", 'txp_log', "$criteria ORDER BY $sort_sql LIMIT $offset, $limit" ); diff --git a/textpattern/lib/txplib_db.php b/textpattern/lib/txplib_db.php index 14e246e87..cee65bbd5 100644 --- a/textpattern/lib/txplib_db.php +++ b/textpattern/lib/txplib_db.php @@ -1935,12 +1935,12 @@ function now($type, $update = false) if ($time > $now or $update) { $table = ($type === 'date') ? 'txp_link' : (($type === 'created') ? 'txp_file' : 'textpattern'); $where = '1=1 having utime > '.$time.' order by utime asc limit 1'; - $now = safe_field('TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), '.$type.') as utime', $table, $where); + $now = safe_field('TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), '.$type.') as utime', $table, $where); $now = ($now === false) ? 2147483647 : intval($now) - 1; update_pref($pref, $now); $nows[$type] = $now; } } - return "(FROM_UNIXTIME(0) + INTERVAL $now SECOND)"; + return "(COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $now SECOND)"; } diff --git a/textpattern/lib/txplib_misc.php b/textpattern/lib/txplib_misc.php index eb622bdf6..4fda1fc73 100644 --- a/textpattern/lib/txplib_misc.php +++ b/textpattern/lib/txplib_misc.php @@ -4006,7 +4006,7 @@ function get_lastmod($unix_ts = null) } // Check for future articles that are now visible. - if (txpinterface === 'public' && $max_article = safe_field("TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted)", 'textpattern', "Posted <= ".now('posted')." AND Status >= 4 ORDER BY Posted DESC LIMIT 1")) { + if (txpinterface === 'public' && $max_article = safe_field("TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted)", 'textpattern', "Posted <= ".now('posted')." AND Status >= 4 ORDER BY Posted DESC LIMIT 1")) { $unix_ts = max($unix_ts, $max_article); } @@ -4642,7 +4642,7 @@ function buildTimeSql($month, $time, $field = 'Posted') $from = $month ? "'".doSlash($month)."'" : now($field); $start = time(); } else { - $from = "(FROM_UNIXTIME(0) + INTERVAL $start SECOND)"; + $from = "(COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $start SECOND)"; } if ($time === 'since') { @@ -4657,8 +4657,8 @@ function buildTimeSql($month, $time, $field = 'Posted') } $timeq = ($start == $stop ? - "$safe_field = (FROM_UNIXTIME(0) + INTERVAL $start SECOND)" : - "$safe_field BETWEEN (FROM_UNIXTIME(0) + INTERVAL $start SECOND) AND (FROM_UNIXTIME(0) + INTERVAL $stop SECOND)" + "$safe_field = (COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $start SECOND)" : + "$safe_field BETWEEN (COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $start SECOND) AND (COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $stop SECOND)" ); } } @@ -5052,7 +5052,7 @@ function permlinkurl_id($id) } $rs = empty($id) ? array() : safe_row( - "ID AS thisid, Section, Title, url_title, Category1, Category2, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS posted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS expires", + "ID AS thisid, Section, Title, url_title, Category1, Category2, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS posted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS expires", 'textpattern', "ID = $id" ); diff --git a/textpattern/lib/txplib_publish.php b/textpattern/lib/txplib_publish.php index 5a298b486..5a3739aee 100644 --- a/textpattern/lib/txplib_publish.php +++ b/textpattern/lib/txplib_publish.php @@ -87,9 +87,9 @@ function filterFrontPage($field = 'Section', $column = array('on_frontpage'), $n * @param bool $all Rewrite all data * @example * if ($rs = safe_rows_start("*, - * TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, - * TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, - * TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + * TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, + * TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, + * TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", * 'textpattern', * "1 = 1" * )) @@ -234,7 +234,7 @@ function getNeighbour($threshold, $s, $type, $atts = array(), $threshold_type = $where = isset($atts['?']) ? $atts['?'] : '1'; $tables = isset($atts['#']) ? $atts['#'] : safe_pfx('textpattern'); - $columns = isset($atts['*']) ? $atts['*'] : '*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod'; + $columns = isset($atts['*']) ? $atts['*'] : '*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod'; $q = array( "SELECT $columns FROM $tables", @@ -304,13 +304,13 @@ function getNextPrev($id = 0, $threshold = null, $s = '') // Attributes with special treatment. switch ($atts['sortby']) { case 'Posted': - $threshold = "(FROM_UNIXTIME(0) + INTERVAL ".intval($thisarticle['posted'])." SECOND)"; + $threshold = "(COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL ".intval($thisarticle['posted'])." SECOND)"; break; case 'Expires': - $threshold = "(FROM_UNIXTIME(0) + INTERVAL ".intval($thisarticle['expires'])." SECOND)"; + $threshold = "(COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL ".intval($thisarticle['expires'])." SECOND)"; break; case 'LastMod': - $threshold = "(FROM_UNIXTIME(0) + INTERVAL ".intval($thisarticle['modified'])." SECOND)"; + $threshold = "(COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL ".intval($thisarticle['modified'])." SECOND)"; break; default: // Retrieve current threshold value per sort column from $thisarticle. @@ -342,7 +342,7 @@ function getNextPrev($id = 0, $threshold = null, $s = '') function lastMod() { - $last = safe_field("TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), val)", 'txp_prefs', "name = 'lastmod'"); + $last = safe_field("TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), val)", 'txp_prefs', "name = 'lastmod'"); return gmdate("D, d M Y H:i:s \G\M\T", $last); } @@ -651,7 +651,7 @@ function ckCat($type, $val, $debug = false) function ckExID($val, $debug = false) { return safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "ID = ".intval($val)." AND Status >= 4 LIMIT 1", $debug ); @@ -678,7 +678,7 @@ function ckExID($val, $debug = false) function lookupByTitle($val, $debug = false) { $res = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "url_title = '".doSlash($val)."' LIMIT 1", $debug ); @@ -708,7 +708,7 @@ function lookupByTitle($val, $debug = false) function lookupByTitleSection($val, $section, $debug = false) { $res = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "url_title = '".doSlash($val)."' AND Section = '".doSlash($section)."' LIMIT 1", $debug ); @@ -729,7 +729,7 @@ function lookupByTitleSection($val, $section, $debug = false) function lookupByIDSection($id, $section, $debug = false) { $res = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "ID = ".intval($id)." AND Section = '".doSlash($section)."' LIMIT 1", $debug ); @@ -749,7 +749,7 @@ function lookupByIDSection($id, $section, $debug = false) function lookupByID($id, $debug = false) { return safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "ID = ".intval($id)." LIMIT 1", $debug ); @@ -775,7 +775,7 @@ function lookupByDateTitle($when, $title, $debug = false) } $res = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', "url_title = '".doSlash($title)."' AND $dateClause LIMIT 1" ); @@ -916,9 +916,9 @@ function filterAtts($atts = null, $iscustom = null) } $coreColumns = array( - 'posted' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted', - 'expires' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires', - 'modified' => 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod', + 'posted' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted', + 'expires' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires', + 'modified' => 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod', ) + article_column_map(); foreach ($windowed + $coreColumns as $field => $val) { @@ -1208,7 +1208,7 @@ function filterAtts($atts = null, $iscustom = null) } if (isset($date_fields[$field])) { - $what['u'.$field] = 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), '.$what[$field].')'; + $what['u'.$field] = 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), '.$what[$field].')'; $alias['u'.$field] = " AS `u{$column}`"; } } diff --git a/textpattern/lib/txplib_wrapper.php b/textpattern/lib/txplib_wrapper.php index 4281591d5..5fe1556eb 100644 --- a/textpattern/lib/txplib_wrapper.php +++ b/textpattern/lib/txplib_wrapper.php @@ -639,7 +639,7 @@ public function updateArticleField($article_id, $field, $value) if ($field == 'Posted') { $value = strtotime($value) - tz_offset(); - $value = "FROM_UNIXTIME(0) + INTERVAL $value SECOND"; + $value = "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $value SECOND"; $sql = "Posted = $value"; } elseif ($field == 'Status') { $value = assert_int($value); @@ -730,7 +730,7 @@ public function _setArticle($incoming, $article_id = null) } } else { $when = strtotime($incoming['Posted']) - tz_offset(); - $when = "FROM_UNIXTIME(0) + INTERVAL $when SECOND"; + $when = "COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)) + INTERVAL $when SECOND"; } if ($incoming['Title'] || $incoming['Body'] || $incoming['Excerpt']) { diff --git a/textpattern/publish.php b/textpattern/publish.php index 015fd8e43..f602b8158 100644 --- a/textpattern/publish.php +++ b/textpattern/publish.php @@ -479,9 +479,9 @@ function preText($store, $prefs = null) $slash = $trailing_slash <= 0 ? '' : '/'; $guessarticles = safe_rows( - '*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted,'. - 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires,'. - 'TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod', + '*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted,'. + 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires,'. + 'TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod', 'textpattern', "(url_title='$safe_un'" . ($n < 3 && is_numeric($un) ? " OR ID='$safe_un')" : ')') . $status ); diff --git a/textpattern/publish/atom.php b/textpattern/publish/atom.php index b39eb425d..5964b95b5 100644 --- a/textpattern/publish/atom.php +++ b/textpattern/publish/atom.php @@ -173,9 +173,9 @@ function atom() $rs = safe_rows_start( "*, ID AS thisid, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', $where . " ORDER BY uPosted DESC LIMIT $limit" ); @@ -243,7 +243,7 @@ function atom() } elseif ($area == 'link') { $cfilter = ($category) ? "category IN ('" . join("','", $category) . "')" : '1'; - $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), date) AS uDate", 'txp_link', "$cfilter ORDER BY date DESC, id DESC LIMIT $limit"); + $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), date) AS uDate", 'txp_link', "$cfilter ORDER BY date DESC, id DESC LIMIT $limit"); if ($rs) { while ($a = nextRow($rs)) { diff --git a/textpattern/publish/comment.php b/textpattern/publish/comment.php index 7134ad2c1..4097bd3a3 100644 --- a/textpattern/publish/comment.php +++ b/textpattern/publish/comment.php @@ -42,7 +42,7 @@ function fetchComments($id) { $rs = safe_rows( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), posted) AS time", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), posted) AS time", 'txp_discuss', "parentid = " . intval($id) . " AND visible = " . VISIBLE . " ORDER BY posted ASC" ); @@ -558,7 +558,7 @@ function checkCommentsAllowed($id) } else { extract( safe_row( - "Annotate, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted", + "Annotate, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted", 'textpattern', "ID = $id" ) diff --git a/textpattern/publish/rss.php b/textpattern/publish/rss.php index df383027a..5afc48de3 100644 --- a/textpattern/publish/rss.php +++ b/textpattern/publish/rss.php @@ -121,9 +121,9 @@ function rss() $rs = safe_rows_start( "*, ID AS thisid, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod", + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod", 'textpattern', $where . " ORDER BY uPosted DESC LIMIT $limit" ); @@ -178,7 +178,7 @@ function rss() } elseif ($area == 'link') { $cfilter = ($category) ? "category IN ('" . join("','", $category) . "')" : '1'; - $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), date) AS uDate", 'txp_link', "$cfilter ORDER BY date DESC, id DESC LIMIT $limit"); + $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), date) AS uDate", 'txp_link', "$cfilter ORDER BY date DESC, id DESC LIMIT $limit"); if ($rs) { while ($a = nextRow($rs)) { diff --git a/textpattern/vendors/Textpattern/L10n/Lang.php b/textpattern/vendors/Textpattern/L10n/Lang.php index 242b0b427..9052a2d7c 100644 --- a/textpattern/vendors/Textpattern/L10n/Lang.php +++ b/textpattern/vendors/Textpattern/L10n/Lang.php @@ -274,7 +274,7 @@ public function available($flags = TEXTPATTERN_LANG_AVAILABLE, $force = 0) // Need a value here for the language itself, not for each one of the rows. $ownClause = ($this->hasOwnerSupport() ? "owner = ''" : "1")." GROUP BY lang ORDER BY lastmod DESC"; $this->dbLangs = safe_rows( - "lang, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), MAX(lastmod)) AS lastmod", + "lang, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), MAX(lastmod)) AS lastmod", 'txp_lang', $ownClause ); diff --git a/textpattern/vendors/Textpattern/Tag/Syntax/Comment.php b/textpattern/vendors/Textpattern/Tag/Syntax/Comment.php index 264b4b8bc..23dc0ebc8 100644 --- a/textpattern/vendors/Textpattern/Tag/Syntax/Comment.php +++ b/textpattern/vendors/Textpattern/Tag/Syntax/Comment.php @@ -49,8 +49,8 @@ public static function recent_comments($atts, $thing = null) $sort = preg_replace('/\bposted\b/', 'd.posted', $sort); $expired = ($prefs['publish_expired_articles']) ? '' : " AND (".now('expires')." <= t.Expires OR t.Expires IS NULL) "; - $rs = startRows("SELECT d.name, d.email, d.web, d.message, d.discussid, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), d.Posted) AS time, t.ID AS thisid, - TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), t.Posted) AS posted, t.Title AS title, t.Section AS section, t.Category1, t.Category2, t.url_title + $rs = startRows("SELECT d.name, d.email, d.web, d.message, d.discussid, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), d.Posted) AS time, t.ID AS thisid, + TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), t.Posted) AS posted, t.Title AS title, t.Section AS section, t.Category1, t.Category2, t.url_title FROM ".safe_pfx('txp_discuss')." AS d INNER JOIN ".safe_pfx('textpattern')." AS t ON d.parentid = t.ID WHERE t.Status >= ".STATUS_LIVE.$expired." AND d.visible = ".VISIBLE." ORDER BY ".sanitizeForSort($sort)." @@ -107,7 +107,7 @@ public static function popup_comments($atts, $thing = null) extract(lAtts(array('form' => 'comments_display'), $atts)); $rs = safe_row( - "*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), LastMod) AS uLastMod, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), Expires) AS uExpires", + "*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Posted) AS uPosted, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), LastMod) AS uLastMod, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), Expires) AS uExpires", 'textpattern', "ID=".intval(gps('parentid'))." AND Status >= 4" ); @@ -433,7 +433,7 @@ public static function comments($atts, $thing = null) ($limit) ? "LIMIT ".intval($offset).", ".intval($limit) : '', ); - $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), posted) AS time", 'txp_discuss', join(' ', $qparts)); + $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), posted) AS time", 'txp_discuss', join(' ', $qparts)); $out = ''; diff --git a/textpattern/vendors/Textpattern/Tag/Syntax/Link.php b/textpattern/vendors/Textpattern/Tag/Syntax/Link.php index 7970e9f72..d9805924d 100644 --- a/textpattern/vendors/Textpattern/Tag/Syntax/Link.php +++ b/textpattern/vendors/Textpattern/Tag/Syntax/Link.php @@ -143,7 +143,7 @@ public static function linklist($atts, $thing = null) ($limit) ? 'LIMIT '.intval($pgoffset).', '.intval($limit) : '', ); - $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, FROM_UNIXTIME(0), date) AS uDate", 'txp_link', join(' ', $qparts)); + $rs = safe_rows_start("*, TIMESTAMPDIFF(SECOND, COALESCE(FROM_UNIXTIME(0), FROM_UNIXTIME(1)), date) AS uDate", 'txp_link', join(' ', $qparts)); $out = parseList($rs, $thislink, function($a) { global $thislink; $thislink = $a; From 88d2f375c5a03ab62b4dea1ad5ff886b9124e96f Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Sun, 18 Jan 2026 15:27:42 +0000 Subject: [PATCH 04/75] Prepare for jQuery 4.0.0 ping https://github.com/textpattern/textpattern/issues/1896 https://blog.jquery.com/2026/01/17/jquery-4-0-0/ --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 07af311cf..9655f8c00 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "dependencies": { "blueimp-file-upload": "10.32.0", "dompurify": "3.3.1", - "jquery": "3.7.1", + "jquery": "4.0.0", "jquery-ui": "1.14.1", "prismjs": "1.30.0" }, From 12d102cada9cb388d5e7fd8f451cfdcdd7424601 Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Sun, 18 Jan 2026 15:37:50 +0000 Subject: [PATCH 05/75] `.gitignore` -> `.htaccess` we use `.htaccess` in `/images/` so it needs tracked (i.e. not `.gitignore`-d) --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b8f29353c..a19789916 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,7 @@ Icon? ehthumbs.db Thumbs.db /images/* -/images/!.gitignore +/images/!.htaccess /files/* /files/!.htaccess /themes/* From ac224610ec4d3e1574461ac86d6fb47faae48a2a Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Sun, 18 Jan 2026 16:25:59 +0000 Subject: [PATCH 06/75] Update HISTORY.txt with recent fixes and changes @Bloke @bloatware Is this an accurate description without committing to official support in 4.9? --- HISTORY.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/HISTORY.txt b/HISTORY.txt index 8b4096132..4fd02386b 100644 --- a/HISTORY.txt +++ b/HISTORY.txt @@ -4,9 +4,10 @@ Changes in 4.9.1 (upcoming) * Changed: skips empty images/thumbnails. * Changed: Valueless width/height/crop behaviour in (Article)Image tags. * Changed: Thumb path now permits virtual/multiple host setups too. -* Fixed: PHP 5.6 support. Thanks, pinalgirkar. +* Fixed: Fatal error with UNIXTIME() changes in MariaDB 11.8+. * Fixed: Dynamic thumbnail MIME detection (thanks, rezozero/ambroisemaupate). * Fixed: Correct admin theme file scaffold for dynamic thumbnails. +* Fixed: PHP 5.6 support. Thanks, pinalgirkar. Changes in 4.9.0 (21 Dec 2025) From 8c800dd14cf47f7b559094ef8c86b058f22e37ab Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Sun, 18 Jan 2026 16:27:09 +0000 Subject: [PATCH 07/75] Update HISTORY.txt with recent changes and fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add MariaDB 11.8+ changes from https://github.com/textpattern/textpattern/commit/2c12d5bb714730809cfe07cea311f29687baa3dc and reorder to deprioritise PHP 5.6 vs thumbStuffs© --- HISTORY.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/HISTORY.txt b/HISTORY.txt index 8b4096132..4fd02386b 100644 --- a/HISTORY.txt +++ b/HISTORY.txt @@ -4,9 +4,10 @@ Changes in 4.9.1 (upcoming) * Changed: skips empty images/thumbnails. * Changed: Valueless width/height/crop behaviour in (Article)Image tags. * Changed: Thumb path now permits virtual/multiple host setups too. -* Fixed: PHP 5.6 support. Thanks, pinalgirkar. +* Fixed: Fatal error with UNIXTIME() changes in MariaDB 11.8+. * Fixed: Dynamic thumbnail MIME detection (thanks, rezozero/ambroisemaupate). * Fixed: Correct admin theme file scaffold for dynamic thumbnails. +* Fixed: PHP 5.6 support. Thanks, pinalgirkar. Changes in 4.9.0 (21 Dec 2025) From a3c502a3900a6391972c03a4a09cf06bdb185db1 Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Sun, 18 Jan 2026 16:40:46 +0000 Subject: [PATCH 08/75] formatting --- HISTORY.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HISTORY.txt b/HISTORY.txt index 4fd02386b..c46d65961 100644 --- a/HISTORY.txt +++ b/HISTORY.txt @@ -7,7 +7,7 @@ Changes in 4.9.1 (upcoming) * Fixed: Fatal error with UNIXTIME() changes in MariaDB 11.8+. * Fixed: Dynamic thumbnail MIME detection (thanks, rezozero/ambroisemaupate). * Fixed: Correct admin theme file scaffold for dynamic thumbnails. -* Fixed: PHP 5.6 support. Thanks, pinalgirkar. +* Fixed: PHP 5.6 support (thanks, pinalgirkar). Changes in 4.9.0 (21 Dec 2025) From d18c38cebabca983aea8161ef3dad078f0421376 Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Sun, 18 Jan 2026 16:41:03 +0000 Subject: [PATCH 09/75] formatting --- HISTORY.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HISTORY.txt b/HISTORY.txt index 4fd02386b..c46d65961 100644 --- a/HISTORY.txt +++ b/HISTORY.txt @@ -7,7 +7,7 @@ Changes in 4.9.1 (upcoming) * Fixed: Fatal error with UNIXTIME() changes in MariaDB 11.8+. * Fixed: Dynamic thumbnail MIME detection (thanks, rezozero/ambroisemaupate). * Fixed: Correct admin theme file scaffold for dynamic thumbnails. -* Fixed: PHP 5.6 support. Thanks, pinalgirkar. +* Fixed: PHP 5.6 support (thanks, pinalgirkar). Changes in 4.9.0 (21 Dec 2025) From d9afc7a529522aaca4c89fcdc39bdc66cb0c36ed Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Sun, 18 Jan 2026 16:44:51 +0000 Subject: [PATCH 10/75] latest core checksums --- textpattern/checksums.txt | 137 ++++++++++++++++++++------------------ 1 file changed, 72 insertions(+), 65 deletions(-) diff --git a/textpattern/checksums.txt b/textpattern/checksums.txt index a39a606c3..1cf691a9a 100644 --- a/textpattern/checksums.txt +++ b/textpattern/checksums.txt @@ -106,13 +106,13 @@ /vendors/Textpattern/Skin/CommonBase.php: 58892b016c4d7172cf83b26d15e465d8e9affaf0c3b2ae4b /vendors/Textpattern/Skin/AssetInterface.php: 42729ab7c1eba7ef4f784cc1b967a8badf397ca85c2a1066 /vendors/Textpattern/Skin/CssInterface.php: 41dccdbd6d9c3732b6c6f06dfecb2809bbd0b693eed45f67 -/vendors/Textpattern/Skin/Skin.php: f852d13c3d5bcc536047aa7c34385e4c158c58a26f27790a +/vendors/Textpattern/Skin/Skin.php: 7cdeec5a11e3b29e99ac0514005e1546e388d7ddd63bdded /vendors/Textpattern/Skin/CommonInterface.php: 5ed3dfb842cad07a9071e595a888a179435decabd9539a9e /vendors/Textpattern/Skin/Page.php: 0b1175ef0be465ffc1d881e9f90a7a0b4c395649b9f98e10 /vendors/Textpattern/Skin/Form.php: fb9847d54210cec2d719a84872008581687b63118d361c6b /vendors/Textpattern/Skin/Css.php: 2071740b0da8f7be7170943dc358d0550e515f49a72e8623 /vendors/Textpattern/Skin/SkinInterface.php: 46831dd41ebddc8859b8c1ade3d6587471e76c88bd751f2e -/vendors/Textpattern/L10n/Lang.php: 7ce77e592b3acaa7fc27465c08f45189ec2af98da1829333 +/vendors/Textpattern/L10n/Lang.php: 292ff3e49d365603234f11942f25ce659c30d263c716da66 /vendors/Textpattern/L10n/Locale.php: 3a1f57eab1173ff5c991bda0ffd76a2fec4b5208c8ce83b9 /vendors/Textpattern/Password/Hash.php: cf5568a4c42ba3dd74ce816f1e58c0e3cc9006cbc8a522a4 /vendors/Textpattern/Password/Adapter/PasswordHash.php: 0e30ff987d048fbc5a530e2023c56e6855b80fa63c53239e @@ -148,17 +148,21 @@ /vendors/Textpattern/Module/Help/HelpAdmin.php: 7c7c70e9eb2cb15022b9eebbe099487191ee53bbc5a591bf /vendors/Textpattern/Date/Timezone.php: b8c44c2dfaffab16715200f861afb2567ecc291f7fc62d31 /vendors/Textpattern/Textfilter/Registry.php: 3ec65a8be5432ad3dd521cee445d250ad0f121ca408423ef -/vendors/Textpattern/Textfilter/Plain.php: f4484253854547bc96a5064380e66f8a3bbd3960b9c16b07 +/vendors/Textpattern/Textfilter/Plain.php: 6b119bb35b848081016dea8f8d9efd18c28b40ba346ced47 /vendors/Textpattern/Textfilter/Constraint.php: 15b779cd445661449415d7fb995d1e475b9feacde4ef2670 /vendors/Textpattern/Textfilter/Base.php: e9045ea12803103b5486a293c934dc88c29578be4e18dfd2 -/vendors/Textpattern/Textfilter/Nl2Br.php: a31cfdd94ba7bad12cc0e1aa147d9ac72ead26c14edd1d76 +/vendors/Textpattern/Textfilter/Nl2Br.php: 5817785c3f2411d532c17b00865bbd6684603f2130cd8d86 /vendors/Textpattern/Textfilter/Textile.php: 434e374d740a371f4bca0ea96fc4cfd78eb258da85538ca1 /vendors/Textpattern/Textfilter/TextfilterInterface.php: e6aa36fa4f1e238a3a63c49f223bb3327765718fde2fb64a -/vendors/Textpattern/Plugin/Plugin.php: 2696918bcc7bac669db6b08cd4f4154e2986053cdef0024b +/vendors/Textpattern/Plugin/Plugin.php: 4a9831c651274397002752360ab124dc13aeb1ad5fa9bcd1 /vendors/Textpattern/Admin/Paginator.php: 6a586fb44f9a8dd46f41a279227c424e22ff89a5042885b8 -/vendors/Textpattern/Admin/Theme.php: 93f51cc4c9f555dd0005f7442ef083a4a7bb9cebda2b68ed +/vendors/Textpattern/Admin/Theme.php: ec8a3cecb5be8e24980b675aea046d14302b05d750e50984 /vendors/Textpattern/Admin/Tools.php: fe9f63e9ee6a3c3f8290126dc7ac6a2a3aa25b5c14656d3c /vendors/Textpattern/Admin/Table.php: 6519449c9cf1c83cadbc7c195b40704e8fac6028e12963be +/vendors/Textpattern/Meta/Field.php: a8ff83805e01c833a9ea10e2dcca8b7d157c8871ea86d58d +/vendors/Textpattern/Meta/ContentType.php: 5051036baa76639d78d320a170322e8ab277584d97758deb +/vendors/Textpattern/Meta/FieldSet.php: bc4c0426f348e733fed454f6c5d28dce248513e1bf34f7cb +/vendors/Textpattern/Meta/DataType.php: ccb7dbe821d206b6710b987a9210b5414d380c6222033dc3 /vendors/Textpattern/Server/Files.php: 5691ca3546abd2508373997a6958bc3ea365438f3b9f3930 /vendors/Textpattern/Server/Config.php: bcb130c022395642b6bf106eefb8fbbd9c69a21750460afe /vendors/Textpattern/Search/Method.php: c85aeaed494563924272f6b5bb01e26053f52ef5f3d58c98 @@ -179,15 +183,15 @@ /vendors/Textpattern/Type/TypeInterface.php: 846159bc1a54070b6189a21d586b398d5d72dbc6aee87dee /vendors/Textpattern/Type/StringType.php: d539fb0343c046aa13efdd5c58555571d0a67106a5e90a8b /vendors/Textpattern/Http/Request.php: 65d0efaca63598fa2780006d3d03eb6617bacb10267cc930 -/vendors/Textpattern/DB/Core.php: 608a321c5e3545a2650e01acf8a1143554566bc01d6d0485 +/vendors/Textpattern/DB/Core.php: 2c8deb4249ccecc842115f087095b1db798d529b4d6c315a /vendors/Textpattern/Textpack/Parser.php: 3fe2d12cb42081eefa143c2560a706aa42a43b1b80bfab2e /vendors/Textpattern/Textpack/StringInterface.php: 3ed4339ac24ea5aaa7e01827c5bc6fc08451ddc19bd04892 /vendors/Textpattern/Textpack/String/Iterator.php: 76e2d21dd8292848ae2bb1dcff2cc43480fa4312e228b558 /vendors/Textpattern/Filter/FilterCallable.php: dc00b706e51f3d1a51b4331f350ea0ecdda798c1429cfea4 /vendors/Textpattern/Filter/StringFilter.php: 7fa8fe74e5f7c97e26c14989ec1c068e02d467c6305f10a9 /vendors/Textpattern/Filter/Exception.php: 569c38f56ec40cfdb2332969a7ff1884821814894f8e04cd -/vendors/Textpattern/Import/TxpXML.php: dc2f2cda98c365596bba2eb56fc99784c6a68361ff275183 -/vendors/Textpattern/Tag/Registry.php: c436845bd9d064a6e672ce5db36beacc45f3ca2763d97b30 +/vendors/Textpattern/Import/TxpXML.php: a34336d1fc340b81a177f9feb77061d381865d24f291e747 +/vendors/Textpattern/Tag/Registry.php: b8f75a46d7c86f92cb09d6a7355c176dcc1ad5e35aa539ff /vendors/Textpattern/Tag/Syntax/Link.php: 006ef0978d2d8fbc3cab9466cae56a39d641851ecefb5cbe /vendors/Textpattern/Tag/Syntax/Pagination.php: a78af75e87222d1561bf71f435a3295a21d57c7dcce96ad7 /vendors/Textpattern/Tag/Syntax/File.php: 092255edbd0d478b677744a9d943474575420971a71cdb39 @@ -196,7 +200,7 @@ /vendors/Textpattern/Tag/Syntax/Privacy.php: 01320a0f9f74c993fffc1c3ddd77b94f5462793ffca187aa /vendors/Textpattern/Tag/Syntax/Authors.php: bde24d053f291924dc02f631ae8e853136eb58a7bc961878 /vendors/Textpattern/Tag/Syntax/Comment.php: 5816abb0fbec57c3115332bdaafb0b99fa505077cc04ba6b -/vendors/Textpattern/Tag/Syntax/Image.php: a7bd98d74d9f942342cee3b222e8e88edb118c07f48c4f35 +/vendors/Textpattern/Tag/Syntax/Image.php: 5c53928cc844883ba8adf633322880ceca0178ba757e49e1 /vendors/Txp.php: 48b9fbc44647e9d11a2ad39dca90ca7812b5a188bff78098 /vendors/composer/autoload_namespaces.php: f462232d64dc8dc3a8aaf4e199bb7c93441bd031e1f1ace8 /vendors/composer/ClassLoader.php: c768e7a2094b365687414aa6d3be7abf552f1ae0b2032848 @@ -214,28 +218,29 @@ /vendors/Netcarver/Textile/DataBag.php: dac3873b32d536fae065d27d85fe4982f953ab2495ae23ba /vendors/Netcarver/Textile/Tag.php: 8e83699fc4c1e99ff17a2ebc2ef7c32ed002eea4a1f7c3f9 /vendors/blueimp/fileupload/jquery.fileupload.js: b59cbb40e462c3e14cb8f6b3427e2aafee07090c08f00b1d -/vendors/lencioni/SLIR/SLIR.php: 6fb86d81a05ef3115fb11390c0e4950365bb56a2021c525b +/vendors/lencioni/SLIR/SLIR.php: 7cfe4ad54a6ac794e0acb4b155caa037deefdfbcdd6136e0 /vendors/lencioni/SLIR/icc/JPEG_ICC.php: 3cb67de5afd3a716278930bf5745a45fc2aa55780822ceb7 -/vendors/lencioni/SLIR/libs/SLIRImage.php: 474c2d0817f8a7ac09071a2beaaae61670add6ca8c1fa706 -/vendors/lencioni/SLIR/libs/gd/SLIRGDImage.php: 9910fb83419558cdc5363dbc0fc97efaf4acca9c7236fa60 -/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperTopcentered.php: 63a043edfeff79b2251b1ca227f06d0832dcbe2f607d7356 -/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperCentered.php: 6b2201da2cb84ac8cefd70c87cc2c39bd6cc0966682480e4 -/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropper.php: c0bbaef878cbb9037bca6e089823ea25915201e0db7bd8ba -/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperSmart.php: 8a93530319963c96fe90c14d77fb59475031b13698c5cdd6 -/vendors/lencioni/SLIR/libs/SLIRImageLibrary.php: d02f102b5635602fed51a444ccd659dd0b843bb1bcfa9486 -/vendors/lencioni/SLIR/libs/SLIRCoordinates.php: 76e148513169266c4eac1c98dca201e448bc0b4555dbfe37 -/vendors/lencioni/SLIR/SLIRConfig.php: 27a4b11e2f87f496dd4bcaaa73f99ca7cc1924a6c1f82413 -/vendors/lencioni/SLIR/SLIRConfigDefaults.php: 509e18b0ff0aec7ee63dc037bb3621167e3f6a95e9334664 -/vendors/lencioni/SLIR/SLIRRequest.php: e69a5a80e0903c30ace8c48b76af185ab1fb013f59ad60c7 -/vendors/lencioni/SLIR/SLIRExceptionHandler.php: 427e04986c160272f8460997125d8e0767d522a87ec55a6f -/vendors/lencioni/SLIR/SLIRGarbageCollector.php: cf05f5a58461690cc32b5e128a5a5ed2f1652a635333f535 -/index.php: 72a2c4409b6adf7ef88621cbd01badac7d2b265569de5ff6 +/vendors/lencioni/SLIR/libs/SLIRImage.php: 10ca2b75d1c70ee5cca4357c4e60d3f3ce5b1e099219133a +/vendors/lencioni/SLIR/libs/gd/SLIRGDImage.php: 6d9dc52cf490f15e24c0675a73cfe7982333954bef8a0d68 +/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperTopcentered.php: 8a8a6b485ee174dcefb0e933c6bbee7cb8e0af42def212c2 +/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperCentered.php: 20b7335399b3b1d7c6d0ee0b7629cb7dbf0a14770d1f0122 +/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropper.php: f56ddd58f43f3457ccf89c49b951d3e497daeab7bb67630f +/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperSmart.php: 1feb4fefa1059932ed89816bc43389fb672dc7517221412b +/vendors/lencioni/SLIR/libs/SLIRImageLibrary.php: 7fa2b21b8e4713431984e23bc0cc85281aa48d017bd554f6 +/vendors/lencioni/SLIR/libs/SLIRCoordinates.php: 2139a1e7dfea2d7ae24d2ff540843c61afeb634ab8c094a9 +/vendors/lencioni/SLIR/SLIRConfig.php: 8221c43e2b8f25efe40bd2b2f88b8ac3aa77bb7e95a6aa0e +/vendors/lencioni/SLIR/SLIRConfigDefaults.php: 80363bf9ed514ca8d9edebefafef1e44d2d341a1a66bb4f5 +/vendors/lencioni/SLIR/SLIRRequest.php: 1078b28eef0aa473b360a6590268f017d9a359b7aa1950db +/vendors/lencioni/SLIR/SLIRExceptionHandler.php: f04bcf3507ed6fe2f52263c62cc0559bc3fda412f313ab13 +/vendors/lencioni/SLIR/SLIRGarbageCollector.php: b50bd185cedf971975f26c72040c1ee8ebc4cbd10d9ff8ca +/index.php: 05e4afd393ac88e84bf3359d4da536ec0208c974bf78e24d /update/_to_4.7.0.php: 4d0601fbb30daf30390ca4e290d5c0e865f97a04d7398ccb -/update/_update.php: 71ec5d8e7ce872f2565b42cd2038b0f228a275da59961f4a +/update/_update.php: 28743eb2554948d36fb10243a47dad94b5e33a7b8ddb1ee6 /update/_to_4.7.2.php: 7e9f994864910268cb87da6952bf9eb5f71a705f4acd16e0 /update/_to_4.5.0.php: b5cb5cf142c455ed9b64619162c4d45b90b0845f05836851 /update/_to_4.5.7.php: 4bda9e5cd5453f19e41cf9eafb4b99a08cf6a9a7b581a590 /update/_to_4.3.0.php: 7c03f552c99fea6b0e93691d8cbe60666500dbc5049ab98f +/update/_to_5.0.0.php: 5d69afa99d72f6bae9f7cae49ef218ba4c3293076f8f1f32 /update/_to_4.0.5.php: 9fba9cbeeae6bb29a41cbf826367dcccf97f53cda26390e0 /update/_to_4.0.4.php: e031c19b8ecc02dbcf0c858c05143ee42ecb90230e949ea2 /update/_to_4.0.6.php: 4e4f1c4d6422479c0de87722fd49d2af5093ae6c549e986a @@ -244,57 +249,59 @@ /update/_to_4.0.3.php: 049d1b663767c92677780147d9a720ac322988e38174136e /update/_to_4.2.0.php: 305999d22304a012d76aa7a4477cb8e85a72244e99456620 /update/_to_4.8.4.php: 72ddb46a91bdcc31d5463ed3275efff8b0d7727086f85596 -/update/_to_4.8.0.php: e48113857368a0bf2196692331cac3b0c398cfd665cfd2b6 +/update/_to_4.8.0.php: fbc447ccfbc164437df373f046195101db6a482f332eefe4 /update/_to_4.0.8.php: cc05f0c6b6c33db34d33ee0cc635fafa23d91b36d31551ec /update/_to_4.9.0.php: 64b78c3a28c51769f042fcd9fc70a201f4637497db16ab4a -/include/txp_lang.php: 9d67ac4447727ad269ef1eac367bb0debd254a98237e3191 -/include/txp_link.php: ee6ff28f58ba9e53208a1fb909960a490e23596ffb73e437 +/include/txp_lang.php: 2c33756938b647abea6699e7f4c525502b20036c07f85f6d +/include/txp_link.php: 7b5996d3e94bd4347ecaff9c6815e5dd73aa5dbf61727728 /include/txp_log.php: d90bfd9f2f38ceb5443b2f58b590623460249781e49bd10e -/include/txp_auth.php: ff6d0afde257ccf806c762294cb33cac11182e742ff4d76b -/include/txp_css.php: a434b91a9ed31fc772576f91d4eae9faae7a9f99e9dff683 -/include/txp_admin.php: bb75f29e39c3c8c4fa12aa53e44f830e05c8c47b734f23c5 -/include/txp_prefs.php: 1a76c8be5f841ce3536d4f5fd0271876f8b080dbb1f6c458 -/include/txp_lore.php: 66a3891f1719fbed3b55f421a2f9d2c59a47d337136d6b05 -/include/txp_file.php: b273b3cf554ae7e6bfec7ec74c48374cd144c93e76ea816a -/include/txp_diag.php: 2d06e2b26c5f94b4662fa0239fd90b68bc46bb21f93ed5ae -/include/txp_section.php: f00f68b92f2ad8838a77afee224679f967db17dce5bad47b -/include/txp_image.php: 85875d24f4d8e0125ca4fb98b7c10f180a227ae9e41370f7 -/include/txp_list.php: 05afce9c5346db7224f7f790e180fcbb5ffbcf6351e02d7b -/include/txp_category.php: 0d824fcf353765138c4d39fd01b8c359b9976c755299ffde +/include/txp_auth.php: 94fecee532db2b950538becfe0c1b900911c0658db003cf5 +/include/txp_css.php: b7e882eb0adf2e530f9f64aad6520202133de525c889df19 +/include/txp_admin.php: 511b73ea6dea992955a52a400d178bdb554e34f178dc7045 +/include/txp_prefs.php: 572722a1a50aee63d190aac0a543df31cc62e93e53d2091b +/include/txp_lore.php: adad2116eb59a672a74d1d9bd1d086a468d8639d68fee4a2 +/include/txp_entity.php: 2cfb683bd69e20b56640fb08aae19d6d4ba82650f1e8037d +/include/txp_file.php: 72ec131a97603b56bd324ed249d810ffc997f97300f40e67 +/include/txp_diag.php: 7c77b4e54a79b9094eacbc01ff6d12de26f180a31f3a3659 +/include/txp_section.php: f0e2edffbf5f2de95edfcae5553bddb8b51253a78bcb9058 +/include/txp_image.php: 6b562df00d1481ea639158fd39dcc55c2eecd9595b4c95c0 +/include/txp_list.php: f6c337892a163ece9ec7a1528efdf4cfd55025d7a700ce33 +/include/txp_meta.php: 1baa090278b71cd8e093ee3dc9001def49d00bdf00a9e407 +/include/txp_category.php: 568240e1dea56ffd92ca279040b567ee49d3e35b940492cf /include/txp_skin.php: ad59c805e04e81deaf8346166a900cef39df1df405b02265 -/include/txp_tag.php: e3cc394e6095594d6892ec7bef52dbdce6725e7872fa0489 -/include/txp_form.php: fe65330d56ffdbfee479c9fe2fc4aa490a1a33c11907ee31 -/include/txp_article.php: 44f5fac05546933009f78b8be9a23199e38200fe2bc30f9f -/include/txp_page.php: 6b87645524583cd3df4cb191c330392a19985c752c64a832 -/include/txp_plugin.php: 7dcab54f25c2940424a01db4a924f3e185d5d2fef40899d2 -/include/txp_discuss.php: 45f3cd3d1854dea844a590274a051bfef9cebae6736efdbf -/textpattern.js: 139519db3ec1b4b8b01087c2725bb89c08341e04725e40a2 +/include/txp_tag.php: 319381731d5feb12ed8015e9590b7c6574eba4f9b95b2d72 +/include/txp_form.php: 41652d566390ed7fb4cf5f378d8af7f9ac150a3fb34c82d3 +/include/txp_article.php: b8da12b47eba84e177dd3cb9cbbf9085cdfa467dd97e13d3 +/include/txp_page.php: 0b1ebf647118dd7217dd28662499c6f32321fc9e83af24d5 +/include/txp_plugin.php: aa322367bfeb61386ccce1a670d618b5e8cff5ac9ad01aa0 +/include/txp_discuss.php: 69cd63ff0cb4d6a2495e1b61b7955d6175652c68ebddb112 +/textpattern.js: ab4b01042ae20c8a1e92168bc043887a25fa562413e67f44 /publish/rss.php: 82b420c045feb9bead0cfd70adcb4f721fceda8c3d71115e -/publish/taghandlers.php: 164ec821db3222c0a8e9304ef463342342d6e0674bc1eea8 +/publish/taghandlers.php: e64791f67b74d0b29eff0824d6ff2b3f1fba5f413aa6aad0 /publish/search.php: 5fbd4a8249021a47f6f9e869ab4b35a7de412484247e3ad2 /publish/atom.php: 918bd2e5375fa38ad5ed1632a07aa0d457acbb8831d32b10 /publish/comment.php: e6d6425e1ae0e4a66862582d373125c17d27f9e1d052dcec /publish/log.php: 640f7ae692292345e9f7cdbdb3676a42198858842f07507a -/lib/txplib_publish.php: cfcbcef3118e78e7e4ad3bb5f8e0714e27c368fd78db5537 +/lib/txplib_publish.php: 705ed72cd957a8875d300b2276d0da79d69a4cb863809d74 /lib/txplib_wrapper.php: c7dd5fdd9fe893ccc44d073d7a749e8f6ea4074740a39e04 -/lib/IXRClass.php: 09badaa2e74f5930fad755c2f7d82ec092184ef53e1ce5c9 +/lib/IXRClass.php: bfabdcdc84a5778d021b4462ae3a3c2f26dbb4717b6da730 /lib/txplib_validator.php: 3ff0939074ee855c293b53b71a8c1b78847912317f44586a -/lib/txplib_db.php: ad5fb11a6cf1d361720a68a8fd43c44238f8cf953bd41c70 +/lib/txplib_db.php: 239c2fc98d3dc1f2de6ac7bbc8e7468acfcc29a27486501f /lib/PasswordHash.php: e27ad1c7be80975898b6c510cfb5f097c2e145cd7f89b724 /lib/txplib_update.php: 510aa6c06d280063da7c2d006e905723e7f911d9766390f7 /lib/taglib.php: bf75edec753700fdeaabf3a80960d9945fd0e79e80442e21 -/lib/constants.php: 5d9cca352d9d74bcbd523a839a64c29b1b82ebc5767f879b -/lib/txplib_forms.php: 85fc82ace04c8a01e7553372fd9fa738b0e41e8192f319a9 -/lib/txplib_head.php: 0947c2b536b47b9637d260fb5759a4a855f0a27c9618f726 -/lib/txplib_html.php: 680c2db7d909a946a9de375082ab0f6dfb164940fe7f085f -/lib/txplib_admin.php: 4320716f3dd60a42cdc1350b499945c0d44705bf4d640957 -/lib/class.thumb.php: 84840d3d633a86fcd6486729a8b2b41de4948da8591aff00 -/lib/txplib_misc.php: aab0533b745d04e749ad6495ebb84020951adbe718a70197 -/lib/class.trace.php: 184e555bf4c6dac7d59d6a31b70496adac4bd11a2b73000f -/lib/admin_config.php: d5065a17556ef06b39a562124d6af9e374c7cc9063f6d3bd +/lib/constants.php: 4a75f1cd5608827dc7f24f2159fd7b8e509ec8c525f07859 +/lib/txplib_forms.php: fdc4028fac0f1219c5fe6cd6429f3de1ea72546f939a1ea3 +/lib/txplib_head.php: 8fcb2807dd896d0aecd862257d9c7c0622771ad62c4d43c2 +/lib/txplib_html.php: d69c75f7747143c2c9f33a8328edc4cb9a2a89603cbdafd5 +/lib/txplib_admin.php: 69b897114ecb2a697a87f34a1a647901e43d153ac70e93a7 +/lib/class.thumb.php: 1c8c4a1c7fc5bccbd0ff2798e53cc16f55b5429f474274f4 +/lib/txplib_misc.php: 419aa0dcc5fdb9dad92e0b7d2603b6e16d980509dbbe5acf +/lib/class.trace.php: 7abf0d49c3bd42bf7b4ea6df5e51619fd7e0d51492336d79 +/lib/admin_config.php: d50476a1a25662bc912aa01b8fdf99e41f8a4e27986dcdd7 /tmp/index.php: 773450db22ed43cfcea2ef0d29c8f75a0109197d0d83e17f -/publish.php: be218f02d92bedfc558e276e841dd1acc527d64ae166d334 -/../css.php: 9ffe76164aec83d428dc75531630a52a2abebfef7c63fdea -/../index.php: 725e7f7377447bef8594c6901c85ad912506f7e22e37aed4 -/../rpc/TXP_RPCServer.php: df487a0339e5a1d619b52b0ee28f819821e8c3e23afb7da6 -/../rpc/index.php: 9c5c0f4d5b917c759c6f860fae37989eca3967b0d76e1d84 \ No newline at end of file +/publish.php: 6e08ea193bbe7f3c505f0f9829e43c65ae1d754ddc833128 +/../css.php: 30116e38ea9df3dae4880a9ad20814e16373946cf0a57f6b +/../index.php: e0e2d189266580aaf2d1ec58dcc7c5dff361bd9f9a964df0 +/../rpc/TXP_RPCServer.php: c2c6afd1eed8bd96226639f33b2f24d36d4dc9c532ec39f3 +/../rpc/index.php: 3b5fe476f7014c111eb22354f47ea50ec738893fba8a9cc1 \ No newline at end of file From 90b6cedc76774010ee97435e5d93d10c534cf7c7 Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Sun, 18 Jan 2026 16:45:42 +0000 Subject: [PATCH 11/75] latest core checksums --- textpattern/checksums.txt | 96 +++++++++++++++++++-------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/textpattern/checksums.txt b/textpattern/checksums.txt index a39a606c3..844f762a4 100644 --- a/textpattern/checksums.txt +++ b/textpattern/checksums.txt @@ -112,7 +112,7 @@ /vendors/Textpattern/Skin/Form.php: fb9847d54210cec2d719a84872008581687b63118d361c6b /vendors/Textpattern/Skin/Css.php: 2071740b0da8f7be7170943dc358d0550e515f49a72e8623 /vendors/Textpattern/Skin/SkinInterface.php: 46831dd41ebddc8859b8c1ade3d6587471e76c88bd751f2e -/vendors/Textpattern/L10n/Lang.php: 7ce77e592b3acaa7fc27465c08f45189ec2af98da1829333 +/vendors/Textpattern/L10n/Lang.php: 148e4172e5ddbed35013ccee1ba028d0733a4ed81a4ae454 /vendors/Textpattern/L10n/Locale.php: 3a1f57eab1173ff5c991bda0ffd76a2fec4b5208c8ce83b9 /vendors/Textpattern/Password/Hash.php: cf5568a4c42ba3dd74ce816f1e58c0e3cc9006cbc8a522a4 /vendors/Textpattern/Password/Adapter/PasswordHash.php: 0e30ff987d048fbc5a530e2023c56e6855b80fa63c53239e @@ -154,7 +154,7 @@ /vendors/Textpattern/Textfilter/Nl2Br.php: a31cfdd94ba7bad12cc0e1aa147d9ac72ead26c14edd1d76 /vendors/Textpattern/Textfilter/Textile.php: 434e374d740a371f4bca0ea96fc4cfd78eb258da85538ca1 /vendors/Textpattern/Textfilter/TextfilterInterface.php: e6aa36fa4f1e238a3a63c49f223bb3327765718fde2fb64a -/vendors/Textpattern/Plugin/Plugin.php: 2696918bcc7bac669db6b08cd4f4154e2986053cdef0024b +/vendors/Textpattern/Plugin/Plugin.php: 4a9831c651274397002752360ab124dc13aeb1ad5fa9bcd1 /vendors/Textpattern/Admin/Paginator.php: 6a586fb44f9a8dd46f41a279227c424e22ff89a5042885b8 /vendors/Textpattern/Admin/Theme.php: 93f51cc4c9f555dd0005f7442ef083a4a7bb9cebda2b68ed /vendors/Textpattern/Admin/Tools.php: fe9f63e9ee6a3c3f8290126dc7ac6a2a3aa25b5c14656d3c @@ -179,24 +179,24 @@ /vendors/Textpattern/Type/TypeInterface.php: 846159bc1a54070b6189a21d586b398d5d72dbc6aee87dee /vendors/Textpattern/Type/StringType.php: d539fb0343c046aa13efdd5c58555571d0a67106a5e90a8b /vendors/Textpattern/Http/Request.php: 65d0efaca63598fa2780006d3d03eb6617bacb10267cc930 -/vendors/Textpattern/DB/Core.php: 608a321c5e3545a2650e01acf8a1143554566bc01d6d0485 +/vendors/Textpattern/DB/Core.php: 2c8deb4249ccecc842115f087095b1db798d529b4d6c315a /vendors/Textpattern/Textpack/Parser.php: 3fe2d12cb42081eefa143c2560a706aa42a43b1b80bfab2e /vendors/Textpattern/Textpack/StringInterface.php: 3ed4339ac24ea5aaa7e01827c5bc6fc08451ddc19bd04892 /vendors/Textpattern/Textpack/String/Iterator.php: 76e2d21dd8292848ae2bb1dcff2cc43480fa4312e228b558 /vendors/Textpattern/Filter/FilterCallable.php: dc00b706e51f3d1a51b4331f350ea0ecdda798c1429cfea4 /vendors/Textpattern/Filter/StringFilter.php: 7fa8fe74e5f7c97e26c14989ec1c068e02d467c6305f10a9 /vendors/Textpattern/Filter/Exception.php: 569c38f56ec40cfdb2332969a7ff1884821814894f8e04cd -/vendors/Textpattern/Import/TxpXML.php: dc2f2cda98c365596bba2eb56fc99784c6a68361ff275183 +/vendors/Textpattern/Import/TxpXML.php: 561ae4fc260c7c4530c6314a7a72c988e9542ad1fef0f321 /vendors/Textpattern/Tag/Registry.php: c436845bd9d064a6e672ce5db36beacc45f3ca2763d97b30 -/vendors/Textpattern/Tag/Syntax/Link.php: 006ef0978d2d8fbc3cab9466cae56a39d641851ecefb5cbe +/vendors/Textpattern/Tag/Syntax/Link.php: def425c5ef47ead810553ded56d85179b440a7663711c494 /vendors/Textpattern/Tag/Syntax/Pagination.php: a78af75e87222d1561bf71f435a3295a21d57c7dcce96ad7 /vendors/Textpattern/Tag/Syntax/File.php: 092255edbd0d478b677744a9d943474575420971a71cdb39 /vendors/Textpattern/Tag/Syntax/Partial.php: 511a6ede0b08ed82956847e0ccae867dbce90f08854a0922 /vendors/Textpattern/Tag/Syntax/Search.php: 6e78a8edbbf512d7adb0574880df8ea86449ed4ed2cf8cb2 /vendors/Textpattern/Tag/Syntax/Privacy.php: 01320a0f9f74c993fffc1c3ddd77b94f5462793ffca187aa /vendors/Textpattern/Tag/Syntax/Authors.php: bde24d053f291924dc02f631ae8e853136eb58a7bc961878 -/vendors/Textpattern/Tag/Syntax/Comment.php: 5816abb0fbec57c3115332bdaafb0b99fa505077cc04ba6b -/vendors/Textpattern/Tag/Syntax/Image.php: a7bd98d74d9f942342cee3b222e8e88edb118c07f48c4f35 +/vendors/Textpattern/Tag/Syntax/Comment.php: c47c2b19df3449badaa4d04613ce93c0330ca1881eec03f2 +/vendors/Textpattern/Tag/Syntax/Image.php: 5c53928cc844883ba8adf633322880ceca0178ba757e49e1 /vendors/Txp.php: 48b9fbc44647e9d11a2ad39dca90ca7812b5a188bff78098 /vendors/composer/autoload_namespaces.php: f462232d64dc8dc3a8aaf4e199bb7c93441bd031e1f1ace8 /vendors/composer/ClassLoader.php: c768e7a2094b365687414aa6d3be7abf552f1ae0b2032848 @@ -214,21 +214,21 @@ /vendors/Netcarver/Textile/DataBag.php: dac3873b32d536fae065d27d85fe4982f953ab2495ae23ba /vendors/Netcarver/Textile/Tag.php: 8e83699fc4c1e99ff17a2ebc2ef7c32ed002eea4a1f7c3f9 /vendors/blueimp/fileupload/jquery.fileupload.js: b59cbb40e462c3e14cb8f6b3427e2aafee07090c08f00b1d -/vendors/lencioni/SLIR/SLIR.php: 6fb86d81a05ef3115fb11390c0e4950365bb56a2021c525b +/vendors/lencioni/SLIR/SLIR.php: 7cfe4ad54a6ac794e0acb4b155caa037deefdfbcdd6136e0 /vendors/lencioni/SLIR/icc/JPEG_ICC.php: 3cb67de5afd3a716278930bf5745a45fc2aa55780822ceb7 -/vendors/lencioni/SLIR/libs/SLIRImage.php: 474c2d0817f8a7ac09071a2beaaae61670add6ca8c1fa706 -/vendors/lencioni/SLIR/libs/gd/SLIRGDImage.php: 9910fb83419558cdc5363dbc0fc97efaf4acca9c7236fa60 -/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperTopcentered.php: 63a043edfeff79b2251b1ca227f06d0832dcbe2f607d7356 -/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperCentered.php: 6b2201da2cb84ac8cefd70c87cc2c39bd6cc0966682480e4 -/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropper.php: c0bbaef878cbb9037bca6e089823ea25915201e0db7bd8ba -/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperSmart.php: 8a93530319963c96fe90c14d77fb59475031b13698c5cdd6 -/vendors/lencioni/SLIR/libs/SLIRImageLibrary.php: d02f102b5635602fed51a444ccd659dd0b843bb1bcfa9486 -/vendors/lencioni/SLIR/libs/SLIRCoordinates.php: 76e148513169266c4eac1c98dca201e448bc0b4555dbfe37 -/vendors/lencioni/SLIR/SLIRConfig.php: 27a4b11e2f87f496dd4bcaaa73f99ca7cc1924a6c1f82413 -/vendors/lencioni/SLIR/SLIRConfigDefaults.php: 509e18b0ff0aec7ee63dc037bb3621167e3f6a95e9334664 -/vendors/lencioni/SLIR/SLIRRequest.php: e69a5a80e0903c30ace8c48b76af185ab1fb013f59ad60c7 -/vendors/lencioni/SLIR/SLIRExceptionHandler.php: 427e04986c160272f8460997125d8e0767d522a87ec55a6f -/vendors/lencioni/SLIR/SLIRGarbageCollector.php: cf05f5a58461690cc32b5e128a5a5ed2f1652a635333f535 +/vendors/lencioni/SLIR/libs/SLIRImage.php: 10ca2b75d1c70ee5cca4357c4e60d3f3ce5b1e099219133a +/vendors/lencioni/SLIR/libs/gd/SLIRGDImage.php: 6d9dc52cf490f15e24c0675a73cfe7982333954bef8a0d68 +/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperTopcentered.php: 8a8a6b485ee174dcefb0e933c6bbee7cb8e0af42def212c2 +/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperCentered.php: 20b7335399b3b1d7c6d0ee0b7629cb7dbf0a14770d1f0122 +/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropper.php: f56ddd58f43f3457ccf89c49b951d3e497daeab7bb67630f +/vendors/lencioni/SLIR/libs/gd/croppers/SLIRCropperSmart.php: 1feb4fefa1059932ed89816bc43389fb672dc7517221412b +/vendors/lencioni/SLIR/libs/SLIRImageLibrary.php: 7fa2b21b8e4713431984e23bc0cc85281aa48d017bd554f6 +/vendors/lencioni/SLIR/libs/SLIRCoordinates.php: 2139a1e7dfea2d7ae24d2ff540843c61afeb634ab8c094a9 +/vendors/lencioni/SLIR/SLIRConfig.php: 8221c43e2b8f25efe40bd2b2f88b8ac3aa77bb7e95a6aa0e +/vendors/lencioni/SLIR/SLIRConfigDefaults.php: 80363bf9ed514ca8d9edebefafef1e44d2d341a1a66bb4f5 +/vendors/lencioni/SLIR/SLIRRequest.php: 1078b28eef0aa473b360a6590268f017d9a359b7aa1950db +/vendors/lencioni/SLIR/SLIRExceptionHandler.php: f04bcf3507ed6fe2f52263c62cc0559bc3fda412f313ab13 +/vendors/lencioni/SLIR/SLIRGarbageCollector.php: b50bd185cedf971975f26c72040c1ee8ebc4cbd10d9ff8ca /index.php: 72a2c4409b6adf7ef88621cbd01badac7d2b265569de5ff6 /update/_to_4.7.0.php: 4d0601fbb30daf30390ca4e290d5c0e865f97a04d7398ccb /update/_update.php: 71ec5d8e7ce872f2565b42cd2038b0f228a275da59961f4a @@ -248,53 +248,53 @@ /update/_to_4.0.8.php: cc05f0c6b6c33db34d33ee0cc635fafa23d91b36d31551ec /update/_to_4.9.0.php: 64b78c3a28c51769f042fcd9fc70a201f4637497db16ab4a /include/txp_lang.php: 9d67ac4447727ad269ef1eac367bb0debd254a98237e3191 -/include/txp_link.php: ee6ff28f58ba9e53208a1fb909960a490e23596ffb73e437 +/include/txp_link.php: 2518270fad10a4bbe0c45a29074baa6306374e65ee4e1280 /include/txp_log.php: d90bfd9f2f38ceb5443b2f58b590623460249781e49bd10e -/include/txp_auth.php: ff6d0afde257ccf806c762294cb33cac11182e742ff4d76b +/include/txp_auth.php: eb47d27548306c77cf7650e6b0d40c43e031cf9fd74131f8 /include/txp_css.php: a434b91a9ed31fc772576f91d4eae9faae7a9f99e9dff683 -/include/txp_admin.php: bb75f29e39c3c8c4fa12aa53e44f830e05c8c47b734f23c5 +/include/txp_admin.php: 299dd90ecfad434a505b0c3470e82dfeb5c78e4b0fab3db1 /include/txp_prefs.php: 1a76c8be5f841ce3536d4f5fd0271876f8b080dbb1f6c458 -/include/txp_lore.php: 66a3891f1719fbed3b55f421a2f9d2c59a47d337136d6b05 -/include/txp_file.php: b273b3cf554ae7e6bfec7ec74c48374cd144c93e76ea816a -/include/txp_diag.php: 2d06e2b26c5f94b4662fa0239fd90b68bc46bb21f93ed5ae +/include/txp_lore.php: bb245d6570e43a76cb40c256d0f42b4b225517c77dd75b2c +/include/txp_file.php: 17d13a233eaafa2103aaac5d048ee67e4489fa7346ed8880 +/include/txp_diag.php: 2b2432e20e0d53b32df26459d733699163c6109b5eb4d4e5 /include/txp_section.php: f00f68b92f2ad8838a77afee224679f967db17dce5bad47b -/include/txp_image.php: 85875d24f4d8e0125ca4fb98b7c10f180a227ae9e41370f7 -/include/txp_list.php: 05afce9c5346db7224f7f790e180fcbb5ffbcf6351e02d7b -/include/txp_category.php: 0d824fcf353765138c4d39fd01b8c359b9976c755299ffde +/include/txp_image.php: 545cfd2d4e646634686c38a3a7ee2117b30b64b6f2f6b973 +/include/txp_list.php: a10da9b536bf9b3d9d3773b35ceab3fd527bcd014c8a8f1b +/include/txp_category.php: 76e719ce0e1f12dee06ba7a17d232f095ae9039873abeba0 /include/txp_skin.php: ad59c805e04e81deaf8346166a900cef39df1df405b02265 /include/txp_tag.php: e3cc394e6095594d6892ec7bef52dbdce6725e7872fa0489 /include/txp_form.php: fe65330d56ffdbfee479c9fe2fc4aa490a1a33c11907ee31 -/include/txp_article.php: 44f5fac05546933009f78b8be9a23199e38200fe2bc30f9f +/include/txp_article.php: fb198445debd50b8b30bbccd467a8e28314c002a94fdadcc /include/txp_page.php: 6b87645524583cd3df4cb191c330392a19985c752c64a832 /include/txp_plugin.php: 7dcab54f25c2940424a01db4a924f3e185d5d2fef40899d2 -/include/txp_discuss.php: 45f3cd3d1854dea844a590274a051bfef9cebae6736efdbf +/include/txp_discuss.php: f68fe1ccda01f07de34f1437c7dbc4edcc5da2e85768d787 /textpattern.js: 139519db3ec1b4b8b01087c2725bb89c08341e04725e40a2 -/publish/rss.php: 82b420c045feb9bead0cfd70adcb4f721fceda8c3d71115e -/publish/taghandlers.php: 164ec821db3222c0a8e9304ef463342342d6e0674bc1eea8 +/publish/rss.php: 43cd60410feca52da1243d5decdce26aa9fdc5e23a42002f +/publish/taghandlers.php: 2a1c13ddfe2d682a6617738b239044f015aae3e9554f6240 /publish/search.php: 5fbd4a8249021a47f6f9e869ab4b35a7de412484247e3ad2 -/publish/atom.php: 918bd2e5375fa38ad5ed1632a07aa0d457acbb8831d32b10 -/publish/comment.php: e6d6425e1ae0e4a66862582d373125c17d27f9e1d052dcec +/publish/atom.php: fcf993ed15e369f456775580f2ce2c38e94c1ce557a06775 +/publish/comment.php: e8deefd21b5139e5cb650ab64141d7a25e83cf694e54d023 /publish/log.php: 640f7ae692292345e9f7cdbdb3676a42198858842f07507a -/lib/txplib_publish.php: cfcbcef3118e78e7e4ad3bb5f8e0714e27c368fd78db5537 -/lib/txplib_wrapper.php: c7dd5fdd9fe893ccc44d073d7a749e8f6ea4074740a39e04 -/lib/IXRClass.php: 09badaa2e74f5930fad755c2f7d82ec092184ef53e1ce5c9 +/lib/txplib_publish.php: 7a26375b24bb1f082c9cea2d7c7ec163ac341b2e327ce438 +/lib/txplib_wrapper.php: 505050760f7359c25c959198e5975664f54e9c6162724665 +/lib/IXRClass.php: bfabdcdc84a5778d021b4462ae3a3c2f26dbb4717b6da730 /lib/txplib_validator.php: 3ff0939074ee855c293b53b71a8c1b78847912317f44586a -/lib/txplib_db.php: ad5fb11a6cf1d361720a68a8fd43c44238f8cf953bd41c70 +/lib/txplib_db.php: 5337d33cad88a3b877a0b1bdcd0e6317346d73a1c2cd909c /lib/PasswordHash.php: e27ad1c7be80975898b6c510cfb5f097c2e145cd7f89b724 /lib/txplib_update.php: 510aa6c06d280063da7c2d006e905723e7f911d9766390f7 /lib/taglib.php: bf75edec753700fdeaabf3a80960d9945fd0e79e80442e21 -/lib/constants.php: 5d9cca352d9d74bcbd523a839a64c29b1b82ebc5767f879b +/lib/constants.php: a11a8dcc2c19f0b3be19cfcb9ee331cc7b2fd074e0b9b299 /lib/txplib_forms.php: 85fc82ace04c8a01e7553372fd9fa738b0e41e8192f319a9 /lib/txplib_head.php: 0947c2b536b47b9637d260fb5759a4a855f0a27c9618f726 -/lib/txplib_html.php: 680c2db7d909a946a9de375082ab0f6dfb164940fe7f085f -/lib/txplib_admin.php: 4320716f3dd60a42cdc1350b499945c0d44705bf4d640957 -/lib/class.thumb.php: 84840d3d633a86fcd6486729a8b2b41de4948da8591aff00 -/lib/txplib_misc.php: aab0533b745d04e749ad6495ebb84020951adbe718a70197 -/lib/class.trace.php: 184e555bf4c6dac7d59d6a31b70496adac4bd11a2b73000f +/lib/txplib_html.php: 7749584f07db9a64432071c40dd312b2687310f2b12e7659 +/lib/txplib_admin.php: 8f3e3ea9dcaebd808fab0c8ad42fedaf2a9a7234e0194d54 +/lib/class.thumb.php: 1c8c4a1c7fc5bccbd0ff2798e53cc16f55b5429f474274f4 +/lib/txplib_misc.php: 127a0157ddf166ed9c5f0def5472dd6f8d4843eff06a35cc +/lib/class.trace.php: 7abf0d49c3bd42bf7b4ea6df5e51619fd7e0d51492336d79 /lib/admin_config.php: d5065a17556ef06b39a562124d6af9e374c7cc9063f6d3bd /tmp/index.php: 773450db22ed43cfcea2ef0d29c8f75a0109197d0d83e17f -/publish.php: be218f02d92bedfc558e276e841dd1acc527d64ae166d334 +/publish.php: fe01e99ad0a45877500158a94a434969f087f3fad8e45a07 /../css.php: 9ffe76164aec83d428dc75531630a52a2abebfef7c63fdea /../index.php: 725e7f7377447bef8594c6901c85ad912506f7e22e37aed4 -/../rpc/TXP_RPCServer.php: df487a0339e5a1d619b52b0ee28f819821e8c3e23afb7da6 +/../rpc/TXP_RPCServer.php: 43a10e4a9236d15a94b622700c833dc0a556ab781279b8f9 /../rpc/index.php: 9c5c0f4d5b917c759c6f860fae37989eca3967b0d76e1d84 \ No newline at end of file From 7e3386f94f3be44f9cde5a18886405160d5887fd Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Sun, 18 Jan 2026 16:46:44 +0000 Subject: [PATCH 12/75] latest admin-themes checksums --- textpattern/admin-themes/classic/checksums.txt | 2 +- textpattern/admin-themes/hive/checksums.txt | 2 +- textpattern/admin-themes/hiveneutral/checksums.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/textpattern/admin-themes/classic/checksums.txt b/textpattern/admin-themes/classic/checksums.txt index 02a6b4e5e..a646e9c27 100644 --- a/textpattern/admin-themes/classic/checksums.txt +++ b/textpattern/admin-themes/classic/checksums.txt @@ -1 +1 @@ -/admin-themes/classic/classic.php: 57033bb3fe97d5db855bf330392af50f91dbaa86551fce01 \ No newline at end of file +/admin-themes/classic/classic.php: d2b431c640a1f32cd00139925db2922f670790cf0f0a0608 \ No newline at end of file diff --git a/textpattern/admin-themes/hive/checksums.txt b/textpattern/admin-themes/hive/checksums.txt index 1ae26816d..53b87acac 100644 --- a/textpattern/admin-themes/hive/checksums.txt +++ b/textpattern/admin-themes/hive/checksums.txt @@ -1,4 +1,4 @@ -/admin-themes/hive/hive.php: 96fb3301d96c0e340676705976a3cc681958feacf5f02399 +/admin-themes/hive/hive.php: f1439e28434f706aedea7cc225fc7adf79cd377eb0e9735a /admin-themes/hive/assets/js/autosize.js: a443b43bc89d5b153e3b396a7e47be86e31728231a0f2520 /admin-themes/hive/assets/js/main.js: 6d3e72e69025f84d2b6a0abc5dcda677acf341029c3c0548 /admin-themes/hive/assets/js/darkmode.js: 80f48c67e4a78adff48c38700ecf120c43d07d7a6a4900e7 \ No newline at end of file diff --git a/textpattern/admin-themes/hiveneutral/checksums.txt b/textpattern/admin-themes/hiveneutral/checksums.txt index 57332ac08..692a8154f 100644 --- a/textpattern/admin-themes/hiveneutral/checksums.txt +++ b/textpattern/admin-themes/hiveneutral/checksums.txt @@ -1,4 +1,4 @@ -/admin-themes/hiveneutral/hiveneutral.php: 49736f03617375dde9355895823f63e4d09eaacc1cf5b173 +/admin-themes/hiveneutral/hiveneutral.php: 8a82f7bd5ea878dbd6154d26bf944473999383233ced0d6a /admin-themes/hiveneutral/assets/js/autosize.js: a443b43bc89d5b153e3b396a7e47be86e31728231a0f2520 /admin-themes/hiveneutral/assets/js/main.js: 6d3e72e69025f84d2b6a0abc5dcda677acf341029c3c0548 /admin-themes/hiveneutral/assets/js/darkmode.js: 80f48c67e4a78adff48c38700ecf120c43d07d7a6a4900e7 \ No newline at end of file From 1923560b2444bf04367695b724a38ce8fa9f08e8 Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Sun, 18 Jan 2026 16:54:23 +0000 Subject: [PATCH 13/75] get jQuery 4.0.0 from npm thank you very much @jools-r ping https://github.com/textpattern/textpattern/issues/1896 --- textpattern/vendors/jquery/jquery/jquery.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/textpattern/vendors/jquery/jquery/jquery.js b/textpattern/vendors/jquery/jquery/jquery.js index 7f37b5d99..3b89a1ca6 100644 --- a/textpattern/vendors/jquery/jquery/jquery.js +++ b/textpattern/vendors/jquery/jquery/jquery.js @@ -1,2 +1,2 @@ -/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 00&&t-1 in e)}var y=e.document,m={type:!0,src:!0,nonce:!0,noModule:!0};function x(e,t,n){var r,i=(n=n||y).createElement("script");for(r in i.text=e,m)t&&t[r]&&(i[r]=t[r]);n.head.appendChild(i).parentNode&&i.parentNode.removeChild(i)}var b="4.0.0",w=/HTML$/i,T=function(e,t){return new T.fn.init(e,t)};function C(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}T.fn=T.prototype={jquery:b,constructor:T,length:0,toArray:function(){return i.call(this)},get:function(e){return null==e?i.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=T.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return T.each(this,e)},map:function(e){return this.pushStack(T.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(i.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(T.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(T.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|"+E+")"+E+"*"),q=RegExp(E+"|>"),O=/[+~]/,L=y.documentElement,H=L.matches||L.msMatchesSelector;function P(){var e=[];function t(n,r){return e.push(n+" ")>T.expr.cacheLength&&delete t[e.shift()],t[n+" "]=r}return t}function R(e){return e&&void 0!==e.getElementsByTagName&&e}var M="\\["+E+"*("+A+")(?:"+E+"*([*^$|!~]?=)"+E+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+A+"))|)"+E+"*\\]",W=":("+A+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",$={ID:RegExp("^#("+A+")"),CLASS:RegExp("^\\.("+A+")"),TAG:RegExp("^("+A+"|[*])"),ATTR:RegExp("^"+M),PSEUDO:RegExp("^"+W),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i")},I=new RegExp(W),F=RegExp("\\\\[\\da-fA-F]{1,6}"+E+"?|\\\\([^\\r\\n\\f])","g"),B=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))};function _(e){return e.replace(F,B)}function U(e){T.error("Syntax error, unrecognized expression: "+e)}var X=RegExp("^"+E+"*,"+E+"*"),z=P();function Y(e,t){var n,r,i,o,a,s,u,l=z[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=T.expr.preFilter;while(a){for(o in(!n||(r=X.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=N.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(D," ")}),a=a.slice(n.length)),$)(r=T.expr.match[o].exec(a))&&(!u[o]||(r=u[o](r)))&&(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?U(e):z(e,s).slice(0)}function G(e){for(var t=0,n=e.length,r="";t1)},removeAttr:function(e){return this.each(function(){T.removeAttr(this,e)})}}),T.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?T.prop(e,t,n):(1===o&&T.isXMLDoc(e)||(i=T.attrHooks[t.toLowerCase()]),void 0!==n)?null===n||!1===n&&0!==t.toLowerCase().indexOf("aria-")?void T.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=e.getAttribute(t))?void 0:r},attrHooks:{},removeAttr:function(e,t){var n,r=0,i=t&&t.match(Q);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),k&&(T.attrHooks.type={set:function(e,t){if("radio"===t&&C(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}});var J=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function K(e,t){return t?"\0"===e?"\uFFFD":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}T.escapeSelector=function(e){return(e+"").replace(J,K)};var Z=n.sort,ee=n.splice;function et(e,t){if(e===t)return en=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)?e==y||e.ownerDocument==y&&T.contains(y,e)?-1:t==y||t.ownerDocument==y&&T.contains(y,t)?1:0:4&n?-1:1}T.uniqueSort=function(e){var t,n=[],r=0,i=0;if(en=!1,Z.call(e,et),en){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)ee.call(e,n[r],1)}return e},T.fn.uniqueSort=function(){return this.pushStack(T.uniqueSort(i.apply(this)))};var en,er,ei,eo,ea,es,eu=0,el=0,ec=P(),ef=P(),ep=P(),ed=RegExp(E+"+","g"),eh=RegExp("^"+A+"$"),eg=T.extend({needsContext:RegExp("^"+E+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)","i")},$),ev=/^(?:input|select|textarea|button)$/i,ey=/^h\d$/i,em=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ex=function(){eE()},eb=eS(function(e){return!0===e.disabled&&C(e,"fieldset")},{dir:"parentNode",next:"legend"});function ew(e,t,n,r){var i,o,s,u,l,c,f,p=t&&t.ownerDocument,d=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==d&&9!==d&&11!==d)return n;if(!r&&(eE(t),t=t||eo,es)){if(11!==d&&(l=em.exec(e))){if(i=l[1]){if(9===d)return(s=t.getElementById(i))&&a.call(n,s),n;else if(p&&(s=p.getElementById(i))&&T.contains(t,s))return a.call(n,s),n}else if(l[2])return a.apply(n,t.getElementsByTagName(e)),n;else if((i=l[3])&&t.getElementsByClassName)return a.apply(n,t.getElementsByClassName(i)),n}if(!ep[e+" "]&&(!S||!S.test(e))){if(f=e,p=t,1===d&&(q.test(e)||N.test(e))){((p=O.test(e)&&R(t.parentNode)||t)!=t||k)&&((u=t.getAttribute("id"))?u=T.escapeSelector(u):t.setAttribute("id",u=T.expando)),o=(c=Y(e)).length;while(o--)c[o]=(u?"#"+u:":scope")+" "+G(c[o]);f=c.join(",")}try{return a.apply(n,p.querySelectorAll(f)),n}catch(t){ep(e,!0)}finally{u===T.expando&&t.removeAttribute("id")}}}return eq(e.replace(D,"$1"),t,n,r)}function eT(e){return e[T.expando]=!0,e}function eC(e){return function(t){if("form"in t){if(t.parentNode&&!1===t.disabled){if("label"in t)if("label"in t.parentNode)return t.parentNode.disabled===e;else return t.disabled===e;return t.isDisabled===e||!e!==t.isDisabled&&eb(t)===e}return t.disabled===e}return"label"in t&&t.disabled===e}}function ej(e){return eT(function(t){return t*=1,eT(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function eE(e){var t,n=e?e.ownerDocument||e:y;n!=eo&&9===n.nodeType&&(ea=(eo=n).documentElement,es=!T.isXMLDoc(eo),k&&y!=eo&&(t=eo.defaultView)&&t.top!==t&&t.addEventListener("unload",ex))}for(er in ew.matches=function(e,t){return ew(e,null,null,t)},ew.matchesSelector=function(e,t){if(eE(e),es&&!ep[t+" "]&&(!S||!S.test(t)))try{return H.call(e,t)}catch(e){ep(t,!0)}return ew(t,eo,null,[e]).length>0},T.expr={cacheLength:50,createPseudo:eT,match:eg,find:{ID:function(e,t){if(void 0!==t.getElementById&&es){var n=t.getElementById(e);return n?[n]:[]}},TAG:function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},CLASS:function(e,t){if(void 0!==t.getElementsByClassName&&es)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=_(e[1]),e[3]=_(e[3]||e[4]||e[5]||""),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||U(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&U(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return $.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&I.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{ID:function(e){var t=_(e);return function(e){return e.getAttribute("id")===t}},TAG:function(e){var t=_(e).toLowerCase();return"*"===e?function(){return!0}:function(e){return C(e,t)}},CLASS:function(e){var t=ec[e+" "];return t||(t=RegExp("(^|"+E+")"+e+"("+E+"|$)"))&&ec(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=T.attr(r,e);return null==i?"!="===t:!t||((i+="","="===t)?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(ed," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!u&&!s,m=!1;if(g){if(o){while(h){f=t;while(f=f[h])if(s?C(f,v):1===f.nodeType)return!1;d=h="only"===e&&!d&&"nextSibling"}return!0}if(d=[a?g.firstChild:g.lastChild],a&&y){m=(p=(l=(c=g[T.expando]||(g[T.expando]={}))[e]||[])[0]===eu&&l[1])&&l[2],f=p&&g.childNodes[p];while(f=++p&&f&&f[h]||(m=p=0)||d.pop())if(1===f.nodeType&&++m&&f===t){c[e]=[eu,p,m];break}}else if(y&&(m=p=(l=(c=t[T.expando]||(t[T.expando]={}))[e]||[])[0]===eu&&l[1]),!1===m){while(f=++p&&f&&f[h]||(m=p=0)||d.pop())if((s?C(f,v):1===f.nodeType)&&++m&&(y&&((c=f[T.expando]||(f[T.expando]={}))[e]=[eu,m]),f===t))break}return(m-=i)===r||m%r==0&&m/r>=0}}},PSEUDO:function(e,t){var n=T.expr.pseudos[e]||T.expr.setFilters[e.toLowerCase()]||U("unsupported pseudo: "+e);return n[T.expando]?n(t):n}},pseudos:{not:eT(function(e){var t=[],n=[],r=eN(e.replace(D,"$1"));return r[T.expando]?eT(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:eT(function(e){return function(t){return ew(e,t).length>0}}),contains:eT(function(e){return e=_(e),function(t){return(t.textContent||T.text(t)).indexOf(e)>-1}}),lang:eT(function(e){return eh.test(e||"")||U("unsupported lang: "+e),e=_(e).toLowerCase(),function(t){var n;do if(n=es?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===ea},focus:function(e){return e===eo.activeElement&&eo.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:eC(!1),disabled:eC(!0),checked:function(e){return C(e,"input")&&!!e.checked||C(e,"option")&&!!e.selected},selected:function(e){return k&&e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.expr.pseudos.empty(e)},header:function(e){return ey.test(e.nodeName)},input:function(e){return ev.test(e.nodeName)},button:function(e){return C(e,"input")&&"button"===e.type||C(e,"button")},text:function(e){return C(e,"input")&&"text"===e.type},first:ej(function(){return[0]}),last:ej(function(e,t){return[t-1]}),eq:ej(function(e,t,n){return[n<0?n+t:n]}),even:ej(function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e}),gt:ej(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function eA(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s-1},l,!0),d=[function(e,t,r){var i=!u&&(r||t!=ei)||((n=t).nodeType?f(e,t,r):p(e,t,r));return n=null,i}];c-1&&(e[f]=!(u[f]=d))}}else h=eA(h===u?h.splice(y,h.length):h),o?o(null,u,h,c):a.apply(u,h)})}(c>1&&eD(d),c>1&&G(t.slice(0,c-1).concat({value:" "===t[c-2].type?"*":""})).replace(D,"$1"),r,c0,r=l.length>0,i=function(e,t,i,o,s){var c,f,p,d=0,h="0",g=e&&[],v=[],y=ei,m=e||r&&T.expr.find.TAG("*",s),x=eu+=null==y?1:Math.random()||.1;for(s&&(ei=t==eo||t||s);null!=(c=m[h]);h++){if(r&&c){f=0,t||c.ownerDocument==eo||(eE(c),i=!es);while(p=l[f++])if(p(c,t||eo,i)){a.call(o,c);break}s&&(eu=x)}n&&((c=!p&&c)&&d--,e&&g.push(c))}if(d+=h,n&&h!==d){f=0;while(p=u[f++])p(g,v,t,i);if(e){if(d>0)while(h--)g[h]||v[h]||(v[h]=j.call(o));v=eA(v)}a.apply(o,v),s&&!e&&v.length>0&&d+u.length>1&&T.uniqueSort(o)}return s&&(eu=x,ei=y),g},n?eT(i):i))).selector=e}return c}function eq(e,t,n,r){var i,o,s,u,l,c="function"==typeof e&&e,f=!r&&Y(e=c.selector||e);if(n=n||[],1===f.length){if((o=f[0]=f[0].slice(0)).length>2&&"ID"===(s=o[0]).type&&9===t.nodeType&&es&&T.expr.relative[o[1].type]){if(!(t=(T.expr.find.ID(_(s.matches[0]),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=eg.needsContext.test(e)?0:o.length;while(i--){if(s=o[i],T.expr.relative[u=s.type])break;if((l=T.expr.find[u])&&(r=l(_(s.matches[0]),O.test(o[0].type)&&R(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&G(o)))return a.apply(n,r),n;break}}}return(c||eN(e,f))(r,t,!es,n,!t||O.test(e)&&R(t.parentNode)||t),n}function eO(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&T(e).is(n))break;r.push(e)}return r}function eL(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}ek.prototype=T.expr.pseudos,T.expr.setFilters=new ek,eE(),T.find=ew,ew.compile=eN,ew.select=eq,ew.setDocument=eE,ew.tokenize=Y;var eH=T.expr.match.needsContext,eP=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function eR(e){return"<"===e[0]&&">"===e[e.length-1]&&e.length>=3}function eM(e,t,n){return"function"==typeof t?T.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?T.grep(e,function(e){return e===t!==n}):"string"!=typeof t?T.grep(e,function(e){return s.call(t,e)>-1!==n}):T.filter(t,e,n)}T.filter=function(e,t,n){var r=t[0];return(n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType)?T.find.matchesSelector(r,e)?[r]:[]:T.find.matches(e,T.grep(t,function(e){return 1===e.nodeType}))},T.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(T(e).filter(function(){for(t=0;t1?T.uniqueSort(n):n},filter:function(e){return this.pushStack(eM(this,e||[],!1))},not:function(e){return this.pushStack(eM(this,e||[],!0))},is:function(e){return!!eM(this,"string"==typeof e&&eH.test(e)?T(e):e||[],!1).length}});var eW,e$=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(T.fn.init=function(e,t){var n,r;if(!e)return this;if(e.nodeType)return this[0]=e,this.length=1,this;if("function"==typeof e)return void 0!==eW.ready?eW.ready(e):e(T);if(eR(n=e+""))n=[null,e,null];else{if("string"!=typeof e)return T.makeArray(e,this);n=e$.exec(e)}if(n&&(n[1]||!t))if(!n[1])return(r=y.getElementById(n[2]))&&(this[0]=r,this.length=1),this;else{if(t=t instanceof T?t[0]:t,T.merge(this,T.parseHTML(n[1],t&&t.nodeType?t.ownerDocument||t:y,!0)),eP.test(n[1])&&T.isPlainObject(t))for(n in t)"function"==typeof this[n]?this[n](t[n]):this.attr(n,t[n]);return this}return!t||t.jquery?(t||eW).find(e):this.constructor(t).find(e)}).prototype=T.fn,eW=T(y);var eI=/^(?:parents|prev(?:Until|All))/,eF={children:!0,contents:!0,next:!0,prev:!0};function eB(e,t){while((e=e[t])&&1!==e.nodeType);return e}function e_(e){return e}function eU(e){throw e}function eX(e,t,n,r){var i;try{e&&"function"==typeof(i=e.promise)?i.call(e).done(t).fail(n):e&&"function"==typeof(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n(e)}}T.fn.extend({has:function(e){var t=T(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&T.find.matchesSelector(n,e))){o.push(n);break}}return this.pushStack(o.length>1?T.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?s.call(T(e),this[0]):s.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(T.uniqueSort(T.merge(this.get(),T(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),T.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return eO(e,"parentNode")},parentsUntil:function(e,t,n){return eO(e,"parentNode",n)},next:function(e){return eB(e,"nextSibling")},prev:function(e){return eB(e,"previousSibling")},nextAll:function(e){return eO(e,"nextSibling")},prevAll:function(e){return eO(e,"previousSibling")},nextUntil:function(e,t,n){return eO(e,"nextSibling",n)},prevUntil:function(e,t,n){return eO(e,"previousSibling",n)},siblings:function(e){return eL((e.parentNode||{}).firstChild,e)},children:function(e){return eL(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(C(e,"template")&&(e=e.content||e),T.merge([],e.childNodes))}},function(e,t){T.fn[e]=function(n,r){var i=T.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=T.filter(r,i)),this.length>1&&(eF[e]||T.uniqueSort(i),eI.test(e)&&i.reverse()),this.pushStack(i)}}),T.Callbacks=function(e){e="string"==typeof e?(t=e,n={},T.each(t.match(Q)||[],function(e,t){n[t]=!0}),n):T.extend({},e);var t,n,r,i,o,a,s=[],u=[],l=-1,c=function(){for(a=a||e.once,o=r=!0;u.length;l=-1){i=u.shift();while(++l-1)s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?T.inArray(e,s)>-1:s.length>0},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=i="",this},disabled:function(){return!s},lock:function(){return a=u=[],i||r||(s=i=""),this},locked:function(){return!!a},fireWith:function(e,t){return!a&&(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),r||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},T.extend({Deferred:function(t){var n=[["notify","progress",T.Callbacks("memory"),T.Callbacks("memory"),2],["resolve","done",T.Callbacks("once memory"),T.Callbacks("once memory"),0,"resolved"],["reject","fail",T.Callbacks("once memory"),T.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return T.Deferred(function(t){T.each(n,function(n,r){var i="function"==typeof e[r[4]]&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==eU&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(T.Deferred.getErrorHook&&(c.error=T.Deferred.getErrorHook()),e.setTimeout(c))}}return T.Deferred(function(e){n[0][3].add(a(0,e,"function"==typeof i?i:e_,e.notifyWith)),n[1][3].add(a(0,e,"function"==typeof t?t:e_)),n[2][3].add(a(0,e,"function"==typeof r?r:eU))}).promise()},promise:function(e){return null!=e?T.extend(e,i):i}},o={};return T.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),o=i.call(arguments),a=T.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?i.call(arguments):n,--t||a.resolveWith(r,o)}};if(t<=1&&(eX(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||"function"==typeof(o[n]&&o[n].then)))return a.then();while(n--)eX(o[n],s(n),a.reject);return a.promise()}});var ez=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;T.Deferred.exceptionHook=function(t,n){t&&ez.test(t.name)&&e.console.warn("jQuery.Deferred exception",t,n)},T.readyException=function(t){e.setTimeout(function(){throw t})};var eY=T.Deferred();function eG(){y.removeEventListener("DOMContentLoaded",eG),e.removeEventListener("load",eG),T.ready()}T.fn.ready=function(e){return eY.then(e).catch(function(e){T.readyException(e)}),this},T.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--T.readyWait:T.isReady)||(T.isReady=!0,!0!==e&&--T.readyWait>0||eY.resolveWith(y,[T]))}}),T.ready.then=eY.then,"loading"!==y.readyState?e.setTimeout(T.ready):(y.addEventListener("DOMContentLoaded",eG),e.addEventListener("load",eG));var eV=/-([a-z])/g;function eQ(e,t){return t.toUpperCase()}function eJ(e){return e.replace(eV,eQ)}function eK(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType}function eZ(){this.expando=T.expando+eZ.uid++}eZ.uid=1,eZ.prototype={cache:function(e){var t=e[this.expando];return!t&&(t=Object.create(null),eK(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[eJ(t)]=n;else for(r in t)i[eJ(r)]=t[r];return n},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][eJ(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(eJ):(t=eJ(t))in r?[t]:t.match(Q)||[]).length;while(n--)delete r[t[n]]}(void 0===t||T.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!T.isEmptyObject(t)}};var e0=new eZ,e1=new eZ,e2=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,e3=/[A-Z]/g;function e4(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(e3,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{i=n,n="true"===i||"false"!==i&&("null"===i?null:i===+i+""?+i:e2.test(i)?JSON.parse(i):i)}catch(e){}e1.set(e,t,n)}else n=void 0;return n}T.extend({hasData:function(e){return e1.hasData(e)||e0.hasData(e)},data:function(e,t,n){return e1.access(e,t,n)},removeData:function(e,t){e1.remove(e,t)},_data:function(e,t,n){return e0.access(e,t,n)},_removeData:function(e,t){e0.remove(e,t)}}),T.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=e1.get(o),1===o.nodeType&&!e0.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&e4(o,r=eJ(r.slice(5)),i[r]);e0.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){e1.set(this,e)}):V(this,function(t){var n;if(o&&void 0===t)return void 0!==(n=e1.get(o,e))||void 0!==(n=e4(o,e))?n:void 0;this.each(function(){e1.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){e1.remove(this,e)})}}),T.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=e0.get(e,t),n&&(!r||Array.isArray(n)?r=e0.set(e,t,T.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=T.queue(e,t),r=n.length,i=n.shift(),o=T._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){T.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return e0.get(e,n)||e0.set(e,n,{empty:T.Callbacks("once memory").add(function(){e0.remove(e,[t+"queue",n])})})}}),T.fn.extend({queue:function(e,t){var n=2;return("string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,tc={thead:["table"],col:["colgroup","table"],tr:["tbody","table"],td:["tr","tbody","table"]};function tf(e,t){var r;return(r=void 0!==e.getElementsByTagName?n.slice.call(e.getElementsByTagName(t||"*")):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&C(e,t))?T.merge([e],r):r}tc.tbody=tc.tfoot=tc.colgroup=tc.caption=tc.thead,tc.th=tc.td;var tp=/^$|^module$|\/(?:java|ecma)script/i;function td(e,t){for(var n=0,r=e.length;n-1)s=s.appendChild(t.createElement(u[c]));s.innerHTML=T.htmlPrefilter(a),T.merge(p,s.childNodes),(s=f.firstChild).textContent=""}else p.push(t.createTextNode(a));f.textContent="",d=0;while(a=p[d++]){if(i&&T.inArray(a,i)>-1){o&&o.push(a);continue}if(l=ts(a),s=tf(f.appendChild(a),"script"),l&&td(s),r){c=0;while(a=s[c++])tp.test(a.type||"")&&r.push(a)}}return f}function tv(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ty(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function tm(e,t,n,r){t=o(t);var i,a,s,u,l,c,f=0,p=e.length,d=p-1,h=t[0];if("function"==typeof h)return e.each(function(i){var o=e.eq(i);t[0]=h.call(this,i,o.html()),tm(o,t,n,r)});if(p&&(a=(i=tg(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=a),a||r)){for(u=(s=T.map(tf(i,"script"),tv)).length;f=1)){for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(n=0,o=[],a={};n-1:T.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}}return l=this,u0&&td(a,!u&&tf(e,"script")),s},cleanData:function(e){for(var t,n,r,i=T.event.special,o=0;void 0!==(n=e[o]);o++)if(eK(n)){if(t=n[e0.expando]){if(t.events)for(r in t.events)i[r]?T.event.remove(n,r):T.removeEvent(n,r,t.handle);n[e0.expando]=void 0}n[e1.expando]&&(n[e1.expando]=void 0)}}}),T.fn.extend({detach:function(e){return tD(this,e,!0)},remove:function(e){return tD(this,e)},text:function(e){return V(this,function(e){return void 0===e?T.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=e)})},null,e,arguments.length)},append:function(){return tm(this,arguments,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&tk(this,e).appendChild(e)})},prepend:function(){return tm(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=tk(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return tm(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return tm(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(T.cleanData(tf(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return T.clone(this,e,t)})},html:function(e){return V(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!tE.test(e)&&!tc[(tl.exec(e)||["",""])[1].toLowerCase()]){e=T.htmlPrefilter(e);try{for(;nT.inArray(this,e)&&(T.cleanData(tf(this)),n&&n.replaceChild(t,this))},e)}}),T.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){T.fn[e]=function(e){for(var n,r=[],i=T(e),o=i.length-1,s=0;s<=o;s++)n=s===o?this:this.clone(!0),T(i[s])[t](n),a.apply(r,n);return this.pushStack(r)}});var tA=RegExp("^("+e5+")(?!px)[a-z%]+$","i"),tN=/^--/;function tq(t){var n=t.ownerDocument.defaultView;return n||(n=e),n.getComputedStyle(t)}function tO(e,t,n){var r,i=tN.test(t);return(n=n||tq(e))&&(r=n.getPropertyValue(t)||n[t],i&&r&&(r=r.replace(D,"$1")||void 0),""!==r||ts(e)||(r=T.style(e,t))),void 0!==r?r+"":r}var tL=["Webkit","Moz","ms"],tH=y.createElement("div").style;function tP(e){return e in tH?e:function(e){var t=e[0].toUpperCase()+e.slice(1),n=tL.length;while(n--)if((e=tL[n]+t)in tH)return e}(e)||e}var tR,tM,tW=y.createElement("table");function t$(){if(tW&&tW.style){var t,n=y.createElement("col"),r=y.createElement("tr"),i=y.createElement("td");if(tW.style.cssText="position:absolute;left:-11111px;border-collapse:separate;border-spacing:0",r.style.cssText="box-sizing:content-box;border:1px solid;height:1px",i.style.cssText="height:9px;width:9px;padding:0",n.span=2,L.appendChild(tW).appendChild(n).parentNode.appendChild(r).appendChild(i).parentNode.appendChild(i.cloneNode(!0)),0===tW.offsetWidth)return void L.removeChild(tW);t=e.getComputedStyle(r),tM=k||18===Math.round(parseFloat(e.getComputedStyle(n).width)),tR=Math.round(parseFloat(t.height)+parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth))===r.offsetHeight,L.removeChild(tW),tW=null}}T.extend(d,{reliableTrDimensions:function(){return t$(),tR},reliableColDimensions:function(){return t$(),tM}});var tI={position:"absolute",visibility:"hidden",display:"block"},tF={letterSpacing:"0",fontWeight:"400"};function tB(e,t,n){var r=e9.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function t_(e,t,n,r,i,o){var a=+("width"===t),s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=T.css(e,n+e6[a],!0,i)),r?("content"===n&&(u-=T.css(e,"padding"+e6[a],!0,i)),"margin"!==n&&(u-=T.css(e,"border"+e6[a]+"Width",!0,i))):(u+=T.css(e,"padding"+e6[a],!0,i),"padding"!==n?u+=T.css(e,"border"+e6[a]+"Width",!0,i):s+=T.css(e,"border"+e6[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function tU(e,t,n){var r=tq(e),i=(k||n)&&"border-box"===T.css(e,"boxSizing",!1,r),o=i,a=tO(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(tA.test(a)){if(!n)return a;a="auto"}return("auto"===a||k&&i||!d.reliableColDimensions()&&C(e,"col")||!d.reliableTrDimensions()&&C(e,"tr"))&&e.getClientRects().length&&(i="border-box"===T.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+t_(e,t,n||(i?"border":"content"),o,r,a)+"px"}function tX(e,t,n,r,i){return new tX.prototype.init(e,t,n,r,i)}T.extend({cssHooks:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=ti(t),u=tN.test(t),l=e.style;if(u||(t=tP(s)),a=T.cssHooks[t]||T.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];if("string"==(o=typeof n)&&(i=e9.exec(n))&&i[1]&&(n=tn(e,t,i),o="number"),null!=n&&n==n)"number"===o&&(n+=i&&i[3]||(tt(s)?"px":"")),k&&""===n&&0===t.indexOf("background")&&(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n)}},css:function(e,t,n,r){var i,o,a,s=ti(t);return(tN.test(t)||(t=tP(s)),(a=T.cssHooks[t]||T.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=tO(e,t,r)),"normal"===i&&t in tF&&(i=tF[t]),""===n||n)?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),T.each(["height","width"],function(e,t){T.cssHooks[t]={get:function(e,n,r){if(n)return"none"===T.css(e,"display")?function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r}(e,tI,function(){return tU(e,t,r)}):tU(e,t,r)},set:function(e,n,r){var i,o=tq(e),a=r&&"border-box"===T.css(e,"boxSizing",!1,o),s=r?t_(e,t,r,a,o):0;return s&&(i=e9.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=T.css(e,t)),tB(e,n,s)}}}),T.each({margin:"",padding:"",border:"Width"},function(e,t){T.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+e6[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(T.cssHooks[e+t].set=tB)}),T.fn.extend({css:function(e,t){return V(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=tq(e),i=t.length;a1)}}),T.Tween=tX,tX.prototype={constructor:tX,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||T.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(tt(n)?"px":"")},cur:function(){var e=tX.propHooks[this.prop];return e&&e.get?e.get(this):tX.propHooks._default.get(this)},run:function(e){var t,n=tX.propHooks[this.prop];return this.options.duration?this.pos=t=T.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tX.propHooks._default.set(this),this}},tX.prototype.init.prototype=tX.prototype,tX.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=T.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){T.fx.step[e.prop]?T.fx.step[e.prop](e):1===e.elem.nodeType&&(T.cssHooks[e.prop]||null!=e.elem.style[tP(e.prop)])?T.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},T.easing={linear:function(e){return e},swing:function(e){return .5-Math.cos(e*Math.PI)/2},_default:"swing"},T.fx=tX.prototype.init,T.fx.step={};var tz,tY,tG=/^(?:toggle|show|hide)$/,tV=/queueHooks$/;function tQ(){return e.setTimeout(function(){tz=void 0}),tz=Date.now()}function tJ(e,t){var n,r=0,i={height:e};for(t=+!!t;r<4;r+=2-t)i["margin"+(n=e6[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function tK(e,t,n){for(var r,i=(tZ.tweeners[t]||[]).concat(tZ.tweeners["*"]),o=0,a=i.length;o1)},removeProp:function(e){return this.each(function(){delete this[T.propFix[e]||e]})}}),T.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return(1===o&&T.isXMLDoc(e)||(t=T.propFix[t]||t,i=T.propHooks[t]),void 0!==n)?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=e.getAttribute("tabindex");return t?parseInt(t,10):t0.test(e.nodeName)||t1.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),k&&(T.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),T.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){T.propFix[this.toLowerCase()]=this}),T.fn.extend({addClass:function(e){var t,n,r,i,o,a;return"function"==typeof e?this.each(function(t){T(this).addClass(e.call(this,t,t3(this)))}):(t=t4(e)).length?this.each(function(){if(r=t3(this),n=1===this.nodeType&&" "+t2(r)+" "){for(o=0;on.indexOf(" "+i+" ")&&(n+=i+" ");r!==(a=t2(n))&&this.setAttribute("class",a)}}):this},removeClass:function(e){var t,n,r,i,o,a;return"function"==typeof e?this.each(function(t){T(this).removeClass(e.call(this,t,t3(this)))}):arguments.length?(t=t4(e)).length?this.each(function(){if(r=t3(this),n=1===this.nodeType&&" "+t2(r)+" "){for(o=0;o-1)n=n.replace(" "+i+" "," ")}r!==(a=t2(n))&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(e,t){var n,r,i,o;return"function"==typeof e?this.each(function(n){T(this).toggleClass(e.call(this,n,t3(this),t),t)}):"boolean"==typeof t?t?this.addClass(e):this.removeClass(e):(n=t4(e)).length?this.each(function(){for(i=0,o=T(this);i-1)return!0;return!1}}),T.fn.extend({val:function(e){var t,n,r,i=this[0];if(!arguments.length)return i?(t=T.valHooks[i.type]||T.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:null==(n=i.value)?"":n:void 0;return r="function"==typeof e,this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,T(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=T.map(i,function(e){return null==e?"":e+""})),(t=T.valHooks[this.type]||T.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))})}}),T.extend({valHooks:{select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k&&(T.valHooks.option={get:function(e){var t=e.getAttribute("value");return null!=t?t:t2(T.text(e))}}),T.each(["radio","checkbox"],function(){T.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=T.inArray(T(e).val(),t)>-1}}});var t5=/^(?:focusinfocus|focusoutblur)$/,t9=function(e){e.stopPropagation()};T.extend(T.event,{trigger:function(t,n,r,i){var o,a,s,u,l,f,p,d,h=[r||y],v=c.call(t,"type")?t.type:t,m=c.call(t,"namespace")?t.namespace.split("."):[];if((a=d=s=r=r||y,!(3===r.nodeType||8===r.nodeType||t5.test(v+T.event.triggered)))&&(v.indexOf(".")>-1&&(v=(m=v.split(".")).shift(),m.sort()),l=0>v.indexOf(":")&&"on"+v,(t=t[T.expando]?t:new T.Event(v,"object"==typeof t&&t)).isTrigger=i?2:3,t.namespace=m.join("."),t.rnamespace=t.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:T.makeArray(n,[t]),p=T.event.special[v]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||v,!t5.test(u+v)&&(a=a.parentNode);a;a=a.parentNode)h.push(a),s=a;s===(r.ownerDocument||y)&&h.push(s.defaultView||s.parentWindow||e)}o=0;while((a=h[o++])&&!t.isPropagationStopped())d=a,t.type=o>1?u:p.bindType||v,(f=(e0.get(a,"events")||Object.create(null))[t.type]&&e0.get(a,"handle"))&&f.apply(a,n),(f=l&&a[l])&&f.apply&&eK(a)&&(t.result=f.apply(a,n),!1===t.result&&t.preventDefault());return t.type=v,!i&&!t.isDefaultPrevented()&&(!p._default||!1===p._default.apply(h.pop(),n))&&eK(r)&&l&&"function"==typeof r[v]&&!g(r)&&((s=r[l])&&(r[l]=null),T.event.triggered=v,t.isPropagationStopped()&&d.addEventListener(v,t9),r[v](),t.isPropagationStopped()&&d.removeEventListener(v,t9),T.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=T.extend(new T.Event,n,{type:e,isSimulated:!0});T.event.trigger(r,null,t)}}),T.fn.extend({trigger:function(e,t){return this.each(function(){T.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return T.event.trigger(e,t,n,!0)}});var t6=e.location,t8={guid:Date.now()},t7=/\?/;T.parseXML=function(t){var n,r;if(!t||"string"!=typeof t)return null;try{n=new e.DOMParser().parseFromString(t,"text/xml")}catch(e){}return r=n&&n.getElementsByTagName("parsererror")[0],(!n||r)&&T.error("Invalid XML: "+(r?T.map(r.childNodes,function(e){return e.textContent}).join("\n"):t)),n};var ne=/\[\]$/,nt=/\r?\n/g,nn=/^(?:submit|button|image|reset|file)$/i,nr=/^(?:input|select|textarea|keygen)/i;T.param=function(e,t){var n,r=[],i=function(e,t){var n="function"==typeof t?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!T.isPlainObject(e))T.each(e,function(){i(this.name,this.value)});else for(n in e)!function e(t,n,r,i){var o;if(Array.isArray(n))T.each(n,function(n,o){r||ne.test(t)?i(t,o):e(t+"["+("object"==typeof o&&null!=o?n:"")+"]",o,r,i)});else if(r||"object"!==h(n))i(t,n);else for(o in n)e(t+"["+o+"]",n[o],r,i)}(n,e[n],t,i);return r.join("&")},T.fn.extend({serialize:function(){return T.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=T.prop(this,"elements");return e?T.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!T(this).is(":disabled")&&nr.test(this.nodeName)&&!nn.test(e)&&(this.checked||!tx.test(e))}).map(function(e,t){var n=T(this).val();return null==n?null:Array.isArray(n)?T.map(n,function(e){return{name:t.name,value:e.replace(nt,"\r\n")}}):{name:t.name,value:n.replace(nt,"\r\n")}}).get()}});var ni=/%20/g,no=/#.*$/,na=/([?&])_=[^&]*/,ns=/^(.*?):[ \t]*([^\r\n]*)$/mg,nu=/^(?:GET|HEAD)$/,nl=/^\/\//,nc={},nf={},np="*/".concat("*"),nd=y.createElement("a");function nh(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(Q)||[];if("function"==typeof n)while(r=o[i++])"+"===r[0]?(e[r=r.slice(1)||"*"]=e[r]||[]).unshift(n):(e[r]=e[r]||[]).push(n)}}function ng(e,t,n,r){var i={},o=e===nf;function a(s){var u;return i[s]=!0,T.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function nv(e,t){var n,r,i=T.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&T.extend(!0,e,r),e}nd.href=t6.href,T.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:t6.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(t6.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":np,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":T.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?nv(nv(e,T.ajaxSettings),t):nv(T.ajaxSettings,e)},ajaxPrefilter:nh(nc),ajaxTransport:nh(nf),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var r,i,o,a,s,u,l,c,f,p,d=T.ajaxSetup({},n),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?T(h):T.event,v=T.Deferred(),m=T.Callbacks("once memory"),x=d.statusCode||{},b={},w={},C="canceled",j={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a){a={};while(t=ns.exec(o))a[t[1].toLowerCase()+" "]=(a[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=a[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(b[e=w[e.toLowerCase()]=w[e.toLowerCase()]||e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)j.always(e[j.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return r&&r.abort(t),E(0,t),this}};if(v.promise(j),d.url=((t||d.url||t6.href)+"").replace(nl,t6.protocol+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(Q)||[""],null==d.crossDomain){u=y.createElement("a");try{u.href=d.url,u.href=u.href,d.crossDomain=nd.protocol+"//"+nd.host!=u.protocol+"//"+u.host}catch(e){d.crossDomain=!0}}if(ng(nc,d,n,j),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=T.param(d.data,d.traditional)),l)return j;for(f in(c=T.event&&d.global)&&0==T.active++&&T.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!nu.test(d.type),i=d.url.replace(no,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(ni,"+")):(p=d.url.slice(i.length),d.data&&(d.processData||"string"==typeof d.data)&&(i+=(t7.test(i)?"&":"?")+d.data,delete d.data),!1===d.cache&&(i=i.replace(na,"$1"),p=(t7.test(i)?"&":"?")+"_="+t8.guid+++p),d.url=i+p),d.ifModified&&(T.lastModified[i]&&j.setRequestHeader("If-Modified-Since",T.lastModified[i]),T.etag[i]&&j.setRequestHeader("If-None-Match",T.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||n.contentType)&&j.setRequestHeader("Content-Type",d.contentType),j.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+np+"; q=0.01":""):d.accepts["*"]),d.headers)j.setRequestHeader(f,d.headers[f]);if(d.beforeSend&&(!1===d.beforeSend.call(h,j,d)||l))return j.abort();if(C="abort",m.add(d.complete),j.done(d.success),j.fail(d.error),r=ng(nf,d,n,j)){if(j.readyState=1,c&&g.trigger("ajaxSend",[j,d]),l)return j;d.async&&d.timeout>0&&(s=e.setTimeout(function(){j.abort("timeout")},d.timeout));try{l=!1,r.send(b,E)}catch(e){if(l)throw e;E(-1,e)}}else E(-1,"No Transport");function E(t,n,a,u){var f,p,y,b,w,C=n;!l&&(l=!0,s&&e.clearTimeout(s),r=void 0,o=u||"",j.readyState=4*(t>0),f=t>=200&&t<300||304===t,a&&(b=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r){for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(d,j,a)),!f&&T.inArray("script",d.dataTypes)>-1&&0>T.inArray("json",d.dataTypes)&&(d.converters["text script"]=function(){}),b=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift()){if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o])){for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}}return{state:"success",data:t}}(d,b,j,f),f?(d.ifModified&&((w=j.getResponseHeader("Last-Modified"))&&(T.lastModified[i]=w),(w=j.getResponseHeader("etag"))&&(T.etag[i]=w)),204===t||"HEAD"===d.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,f=!(y=b.error))):(y=C,(t||!C)&&(C="error",t<0&&(t=0))),j.status=t,j.statusText=(n||C)+"",f?v.resolveWith(h,[p,C,j]):v.rejectWith(h,[j,C,y]),j.statusCode(x),x=void 0,c&&g.trigger(f?"ajaxSuccess":"ajaxError",[j,d,f?p:y]),m.fireWith(h,[j,C]),c&&(g.trigger("ajaxComplete",[j,d]),--T.active||T.event.trigger("ajaxStop")))}return j},getJSON:function(e,t,n){return T.get(e,t,n,"json")},getScript:function(e,t){return T.get(e,void 0,t,"script")}}),T.each(["get","post"],function(e,t){T[t]=function(e,n,r,i){return("function"==typeof n||null===n)&&(i=i||r,r=n,n=void 0),T.ajax(T.extend({url:e,type:t,dataType:i,data:n,success:r},T.isPlainObject(e)&&e))}}),T.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),T._evalUrl=function(e,t,n){return T.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,scriptAttrs:t.crossOrigin?{crossOrigin:t.crossOrigin}:void 0,converters:{"text script":function(){}},dataFilter:function(e){T.globalEval(e,t,n)}})},T.fn.extend({wrapAll:function(e){var t;return this[0]&&("function"==typeof e&&(e=e.call(this[0])),t=T(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return"function"==typeof e?this.each(function(t){T(this).wrapInner(e.call(this,t))}):this.each(function(){var t=T(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t="function"==typeof e;return this.each(function(n){T(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){T(this).replaceWith(this.childNodes)}),this}}),T.expr.pseudos.hidden=function(e){return!T.expr.pseudos.visible(e)},T.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},T.ajaxSettings.xhr=function(){return new e.XMLHttpRequest};var ny={0:200};function nm(e){return e.scriptAttrs||!e.headers&&(e.crossDomain||e.async&&0>T.inArray("json",e.dataTypes))}T.ajaxTransport(function(e){var t;return{send:function(n,r){var i,o=e.xhr();if(o.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)o[i]=e.xhrFields[i];for(i in e.mimeType&&o.overrideMimeType&&o.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest"),n)o.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(t=o.onload=o.onerror=o.onabort=o.ontimeout=null,"abort"===e?o.abort():"error"===e?r(o.status,o.statusText):r(ny[o.status]||o.status,o.statusText,"text"===(o.responseType||"text")?{text:o.responseText}:{binary:o.response},o.getAllResponseHeaders()))}},o.onload=t(),o.onabort=o.onerror=o.ontimeout=t("error"),t=t("abort");try{o.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}}),T.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},converters:{"text script":function(e){return T.globalEval(e),e}}}),T.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),nm(e)&&(e.type="GET")}),T.ajaxTransport("script",function(e){if(nm(e)){var t,n;return{send:function(r,i){t=T("