Ex124OJ

Extend 124OJ!

当前为 2023-09-15 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Ex124OJ
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.1.2
  5. // @description Extend 124OJ!
  6. // @author Sukwants
  7. // @license MIT
  8. // @match http://124.221.194.184/*
  9. // @icon https://ex124oj.pond.ink/images/icon.png
  10. // @grant GM_addElement
  11. // @grant GM_addStyle
  12. // @grant GM_setClipboard
  13. // @grant GM_getValue
  14. // @grant GM_setValue
  15. // @grant GM_deleteValue
  16. // @grant GM_listValues
  17. // @grant GM_xmlhttpRequest
  18. // @connect ex124oj.pond.ink
  19. // @run-at document-start
  20. // ==/UserScript==
  21.  
  22.  
  23. /******/ (() => { // webpackBootstrap
  24. /******/ "use strict";
  25. /******/ var __webpack_modules__ = ({
  26.  
  27. /***/ 579:
  28. /***/ ((__unused_webpack_module, exports) => {
  29.  
  30.  
  31. Object.defineProperty(exports, "__esModule", ({ value: true }));
  32. exports.exAnnouncements = void 0;
  33. function exAnnouncements() {
  34. var PostsExp = /<body[\s\S]*?>([\s\S]*?)<\/body>/;
  35. var WrittenByExp = /^by (.*)$/;
  36. var DateTimeExp = /^(.*?) .*$/;
  37. if (document.getElementsByClassName('uoj-content')[0].children[0].children[0].children[0]) {
  38. GM_xmlhttpRequest({
  39. method: "GET",
  40. url: "https://ex124oj.pond.ink/categories/Announcements/",
  41. revalidate: true,
  42. onload: function (data) {
  43. var Announcements = document.querySelector('div.uoj-content > div.card.card-default > div.card-body > div.row > div:first-child > table');
  44. if (Announcements) {
  45. Announcements.querySelector('thead > tr').innerHTML = '<th style="width:30%">公告</th><th style="width:10%"></th><th style="width:10%"></th><th style="width:30%">Ex 公告</th><th style="width:10%"></th><th style="width:10%"></th>';
  46. var trs = Announcements.querySelectorAll('tbody > tr');
  47. for (var tr = 0; tr < trs.length - 1; ++tr) {
  48. if (trs[tr].innerHTML) {
  49. trs[tr].innerHTML = (trs[tr].children.length > 2 ? trs[tr].innerHTML : '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>') + '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>';
  50. if (WrittenByExp.test(trs[tr].children[1] && trs[tr].children[1].innerHTML)) {
  51. trs[tr].children[1].innerHTML = trs[tr].children[1].innerHTML.match(WrittenByExp)[1];
  52. }
  53. if (DateTimeExp.test(trs[tr].children[2] && trs[tr].children[2].innerHTML)) {
  54. trs[tr].children[2].innerHTML = '<small>' + trs[tr].children[2].textContent.match(DateTimeExp)[1] + '</small>';
  55. }
  56. }
  57. }
  58. trs[trs.length - 1].innerHTML = '<td class="text-right" colspan="3"><a href="/announcements">所有公告……</a></td><td class="text-right" colspan="3"><a href="https://ex124oj.pond.ink/categories/Announcements/">所有公告……</a></td>';
  59. var PostsPage = (new DOMParser()).parseFromString(data.response, 'text/html');
  60. var Posts = PostsPage.querySelectorAll('article');
  61. for (var i = 0; i < Posts.length && i < 5; ++i) {
  62. var title = Posts[i].querySelector('a.post-title-link');
  63. Announcements.querySelector('tbody').children[i].children[3].innerHTML = "<a href=\"https://ex124oj.pond.ink".concat(title.getAttribute('href'), "\">").concat(title.innerText, "</a>");
  64. Announcements.querySelector('tbody').children[i].children[4].innerHTML = '<a class="uoj-username" href="https://ex124oj.pond.ink/" style="color:rgb(40,173,202)">Ex124OJ</a>';
  65. var date = Posts[i].querySelector('time');
  66. Announcements.querySelector('tbody').children[i].children[5].innerHTML = '<small>' + date.getAttribute('content') + '</small>';
  67. }
  68. }
  69. }
  70. });
  71. }
  72. }
  73. exports.exAnnouncements = exAnnouncements;
  74.  
  75.  
  76. /***/ }),
  77.  
  78. /***/ 690:
  79. /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
  80.  
  81.  
  82. Object.defineProperty(exports, "__esModule", ({ value: true }));
  83. exports.changeIcon = exports.Background = void 0;
  84. var variables_1 = __webpack_require__(449);
  85. function Background() {
  86. if (variables_1.BackgroundImage) {
  87. document.getElementsByClassName('navbar-brand')[0].innerHTML = '<img src="/images/logo_small.png" alt="Logo" class="img-rounded" style="width:39px; height:39px;">';
  88. var container = document.getElementsByClassName('container')[0];
  89. if (container) {
  90. var firstChild = container.children[0];
  91. if (firstChild && firstChild.children.length >= 2) {
  92. var innerHTML = firstChild.children[1].innerHTML;
  93. var matchResult = innerHTML.match(/(.*> ){0,1}(.*)/);
  94. if (matchResult) {
  95. var newInnerHTML = matchResult[2];
  96. firstChild.children[1].innerHTML = newInnerHTML;
  97. }
  98. }
  99. }
  100. GM_addStyle("body {\n background: url(\"' + BackgroundImage + '\");\n background-repeat: no-repeat;\n background-attachment: fixed;\n background-position: 50% 50%;\n background-size: cover;\n}\n.uoj-content {\n background-color: #fff;\n margin: 16px -16px;\n padding: 16px 16px;\n opacity: 0.85;\n border-radius: 8px;\n}\n.navbar {\n margin: 16px -16px;\n padding: 8px 16px;\n opacity: 0.85;\n border-radius: 8px;\n}\n.giscus {\n opacity: 0.85;\n}");
  101. }
  102. }
  103. exports.Background = Background;
  104. function getIcon() {
  105. if (variables_1.SiteIconImage)
  106. return variables_1.SiteIconImage;
  107. else
  108. return '/images/logo.png';
  109. }
  110. function getIconSmall() {
  111. if (variables_1.SiteIconSmallImage)
  112. return variables_1.SiteIconSmallImage;
  113. else
  114. return getIcon();
  115. }
  116. function changeIcon() {
  117. var LogoURLRegExp = /^.*\/images\/logo(_small){0,1}.png$/;
  118. var Links = document.getElementsByTagName('link');
  119. for (var link in Links) {
  120. if (Links[link] && Links[link].nodeType && Links[link].getAttribute('rel') == 'shortcut icon') {
  121. Links[link].setAttribute('href', getIconSmall());
  122. }
  123. }
  124. var Icons = document.getElementsByTagName('img');
  125. for (var icon in Icons) {
  126. if (Icons[icon] instanceof Element && Icons[icon].nodeType === Node.ELEMENT_NODE) {
  127. var srcAttribute = Icons[icon].getAttribute('src');
  128. if (srcAttribute !== null && LogoURLRegExp.test(srcAttribute)) {
  129. if (!Icons[icon].getAttribute('style')) {
  130. Icons[icon].setAttribute('src', getIcon());
  131. Icons[icon].setAttribute('style', 'width:100%;height:auto;object-fit:cover');
  132. }
  133. else {
  134. Icons[icon].setAttribute('src', getIconSmall());
  135. }
  136. }
  137. }
  138. }
  139. }
  140. exports.changeIcon = changeIcon;
  141.  
  142.  
  143. /***/ }),
  144.  
  145. /***/ 480:
  146. /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
  147.  
  148.  
  149. Object.defineProperty(exports, "__esModule", ({ value: true }));
  150. exports.CodeCopy = void 0;
  151. var variables_1 = __webpack_require__(449);
  152. function CodeCopy() {
  153. if (!(/^.*\/manage\/statement(\?.*){0,1}$/).test(window.location.href)) {
  154. var CodeBlocks = document.getElementsByTagName('pre');
  155. var _loop_1 = function (cb) {
  156. if (CodeBlocks[cb] && CodeBlocks[cb].nodeType) {
  157. var Content_1 = CodeBlocks[cb].innerText;
  158. CodeBlocks[cb].style.position = 'relative';
  159. var CopyButton_1 = document.createElement('button');
  160. CodeBlocks[cb].insertBefore(CopyButton_1, CodeBlocks[cb].children[0]);
  161. CopyButton_1.setAttribute('class', 'copybutton');
  162. CopyButton_1.setAttribute('id', "copybutton".concat(cb));
  163. if (variables_1.Darktheme)
  164. CopyButton_1.setAttribute('style', "color: white;");
  165. CopyButton_1.innerHTML = '<i class="fa-solid fa-copy"></i>';
  166. CopyButton_1.onclick = function () {
  167. GM_setClipboard(Content_1, 'text');
  168. CopyButton_1.innerHTML = '<i class="fa-solid fa-check"></i>';
  169. setTimeout(function () { CopyButton_1.innerHTML = '<i class="fa-solid fa-copy"></i>'; }, 500);
  170. };
  171. }
  172. };
  173. for (var cb in CodeBlocks) {
  174. _loop_1(cb);
  175. }
  176. }
  177. }
  178. exports.CodeCopy = CodeCopy;
  179.  
  180.  
  181. /***/ }),
  182.  
  183. /***/ 103:
  184. /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
  185.  
  186.  
  187. Object.defineProperty(exports, "__esModule", ({ value: true }));
  188. exports.ContestStandings = exports.ContestHome = exports.ContestsCard = void 0;
  189. var name_1 = __webpack_require__(819);
  190. var variables_1 = __webpack_require__(449);
  191. var utils_1 = __webpack_require__(593);
  192. function ContestsCard() {
  193. var content = document.querySelector('div.uoj-content');
  194. if (content && content.children.length > 1) {
  195. var TabList = document.createElement('ul');
  196. content.insertBefore(TabList, content.children[0]);
  197. TabList.setAttribute('class', 'nav nav-tabs');
  198. TabList.setAttribute('role', 'tablist');
  199. var TabContent = document.createElement('div');
  200. content.insertBefore(TabContent, content.children[1]);
  201. TabContent.setAttribute('class', 'tab-content');
  202. TabContent.style.marginBottom = '20px';
  203. TabContent.style.marginTop = '20px';
  204. var counter = 0;
  205. for (var i = 2; i < content.children.length; i++) {
  206. console.log(content.children[i].tagName);
  207. if (content.children[i].tagName.toUpperCase() == 'H4') {
  208. var isActive = !counter;
  209. var title = document.createElement('li');
  210. TabList.appendChild(title);
  211. title.setAttribute('class', 'nav-item');
  212. var titleText = content.children[i].textContent;
  213. if (titleText) {
  214. titleText = titleText.charAt(0).toUpperCase() + titleText.slice(1);
  215. title.innerHTML = "<a class=\"nav-link".concat(isActive ? ' active' : '', "\" href=\"#card").concat(counter, "\" role=\"tab\" data-toggle=\"tab\" aria-selected=\"true\">").concat(titleText, "</a>");
  216. }
  217. var card = document.createElement('div');
  218. TabContent.appendChild(card);
  219. card.setAttribute('class', "tab-pane".concat(isActive ? ' active' : ''));
  220. card.setAttribute('id', "card".concat(counter));
  221. content.removeChild(content.children[i]);
  222. counter++;
  223. }
  224. else if (counter) {
  225. TabContent.children[counter - 1].appendChild(content.children[i]);
  226. }
  227. else {
  228. content.removeChild(content.children[i]);
  229. }
  230. i--;
  231. }
  232. }
  233. }
  234. exports.ContestsCard = ContestsCard;
  235. function ContestHome() {
  236. var content = document.querySelector('div.uoj-content');
  237. if (content && content.querySelectorAll('div').length < 2) {
  238. GM_xmlhttpRequest({
  239. method: "GET",
  240. url: "https://ex124oj.pond.ink/api/contest/".concat((0, utils_1.isContest)()[1]),
  241. revalidate: true,
  242. onload: function (data) {
  243. if (data.status == 200) {
  244. var res = JSON.parse(data.response);
  245. var title = document.querySelector('head > title');
  246. if (title && res.title) {
  247. title.innerHTML = res.title;
  248. }
  249. var content_1 = document.querySelector('div.uoj-content');
  250. if (content_1 && res.content) {
  251. content_1.innerHTML = res.content;
  252. eval('$(".countdown").countdown();');
  253. }
  254. }
  255. }
  256. });
  257. }
  258. }
  259. exports.ContestHome = ContestHome;
  260. function PinLineHeader() {
  261. var lines = document.querySelectorAll('div#standings > div.table-responsive > table tr');
  262. for (var i = 0; i < lines.length; i++) {
  263. var line = lines[i];
  264. var x = 0;
  265. for (var j = 0; j < line.children.length && j < 3; j++) {
  266. line.children[j].style.position = 'sticky';
  267. line.children[j].style.left = x + 'px';
  268. line.children[j].classList.add('checked');
  269. x = x + parseFloat(window.getComputedStyle(line.children[j]).width);
  270. }
  271. }
  272. }
  273. var ContestHomepage;
  274. function ProblemTitles() {
  275. var solve = function () {
  276. var lines = document.querySelectorAll('div#standings > div.table-responsive > table tr');
  277. var problems = {};
  278. var rows = ContestHomepage.querySelectorAll('table > tbody > tr');
  279. for (var i = 0; i < rows.length; i++) {
  280. if (rows[i].children.length >= 2) {
  281. var id = rows[i].children[0].textContent, title = rows[i].children[1].textContent;
  282. if (id && title) {
  283. problems[id] = "".concat(id, ". ").concat(title);
  284. }
  285. }
  286. }
  287. for (var i = 0; i < lines.length; i++) {
  288. var line = lines[i];
  289. for (var j = 3; j < line.children.length; j++) {
  290. var title = lines[0].children[j].querySelector('a');
  291. if (title && title.textContent && problems[title.textContent]) {
  292. line.children[j].title = problems[title.textContent];
  293. }
  294. }
  295. }
  296. };
  297. if (ContestHomepage) {
  298. solve();
  299. }
  300. else {
  301. GM_xmlhttpRequest({
  302. method: "GET",
  303. url: "/contest/".concat(contest_id),
  304. revalidate: true,
  305. onload: function (data) {
  306. ContestHomepage = (new DOMParser()).parseFromString(data.response, 'text/html');
  307. solve();
  308. }
  309. });
  310. }
  311. }
  312. var Problemchecked = [];
  313. function ShowStandings() {
  314. PinLineHeader();
  315. ProblemTitles();
  316. var lines = document.querySelectorAll('div#standings > div.table-responsive > table tr');
  317. if (!lines.length) {
  318. return;
  319. }
  320. var sum = 0;
  321. for (var k = 0; k < lines.length; k++) {
  322. var _loop_1 = function (i) {
  323. if (Problemchecked[i - 3]) {
  324. lines[k].children[i].classList.add('checked');
  325. if (k == 0)
  326. sum++;
  327. }
  328. lines[k].children[i].addEventListener('click', function (event) {
  329. var target = event.target;
  330. if (target.tagName === 'A') {
  331. return;
  332. }
  333. Problemchecked[i - 3] = !Problemchecked[i - 3];
  334. displayStandings();
  335. });
  336. };
  337. for (var i = 3; i < lines[k].children.length; i++) {
  338. _loop_1(i);
  339. }
  340. }
  341. if (sum == 0) {
  342. return;
  343. }
  344. var scores = document.querySelectorAll('div#standings > div.table-responsive > table > tbody > tr > td:nth-child(3) > div > span.uoj-score');
  345. for (var i = 0; i < scores.length; i++) {
  346. scores[i].style.color = getColOfScore(standings[i][0] / sum);
  347. }
  348. }
  349. function displayStandings(initial) {
  350. var standingsArea = document.querySelector('div#standings');
  351. if (!standingsArea) {
  352. return;
  353. }
  354. var lines = standingsArea.querySelectorAll('div.table-responsive > table tr');
  355. var headline = lines[0];
  356. var Problemsum = headline.children.length - 3;
  357. var Usersum = lines.length - 1;
  358. // let checked = false;
  359. // for (let i = 0; i < Problemsum; i++) {
  360. // checked = checked || Problemchecked[i];
  361. // }
  362. for (var i = 0; i < Usersum; i++) {
  363. var name_2 = standings[i][2][0];
  364. standings[i][0] = standings[i][1] = 0;
  365. for (var j = 0; j < Problemsum; j++) {
  366. if ((Problemchecked[j] /* || !checked*/) && score[name_2][j] !== undefined) {
  367. standings[i][0] += score[name_2][j][0], standings[i][1] += score[name_2][j][1];
  368. }
  369. }
  370. }
  371. standings.sort(function (a, b) {
  372. return a[0] != b[0] ? b[0] - a[0] : a[1] - b[1];
  373. });
  374. for (var i = 0; i < Usersum; i++) {
  375. if (!i || standings[i][0] != standings[i - 1][0] || standings[i][1] != standings[i - 1][1]) {
  376. standings[i][3] = i + 1;
  377. }
  378. else {
  379. standings[i][3] = standings[i - 1][3];
  380. }
  381. }
  382. var tableBefore = document.querySelector('div.table-responsive');
  383. if (tableBefore && tableBefore.children[0]) {
  384. var ScrollRight = parseInt(window.getComputedStyle(tableBefore.children[0]).width) - tableBefore.scrollLeft;
  385. showStandings();
  386. // if (!initial) {
  387. (0, name_1.NameColor)(standingsArea);
  388. (0, name_1.NameBadge)(standingsArea);
  389. // }
  390. ShowStandings();
  391. var tableAfter = document.querySelector('div.table-responsive');
  392. if (tableAfter && tableAfter.children[0]) {
  393. tableAfter.scrollLeft = parseInt(window.getComputedStyle(tableAfter.children[0]).width) - ScrollRight;
  394. }
  395. }
  396. }
  397. function NavBar(ProblemSum) {
  398. var navtabs = document.querySelector('div.uoj-content ul[role=tablist]');
  399. if (!navtabs) {
  400. return;
  401. }
  402. var navbar = document.createElement('div');
  403. navtabs.before(navbar);
  404. navbar.setAttribute('style', variables_1.Darktheme ? 'border-bottom: 1px solid #2e2e30;' : 'border-bottom: 1px solid #dee2e6;');
  405. var floatright = document.createElement('div');
  406. navbar.appendChild(floatright);
  407. floatright.setAttribute('class', 'float-right');
  408. var unselectall = document.createElement('a');
  409. floatright.appendChild(unselectall);
  410. unselectall.setAttribute('class', 'btn btn-info btn-sm');
  411. unselectall.setAttribute('target', '_blank');
  412. unselectall.style.color = '#fff';
  413. unselectall.style.cursor = 'pointer';
  414. unselectall.addEventListener('click', function () {
  415. Problemchecked = new Array(ProblemSum).fill(true);
  416. displayStandings();
  417. });
  418. unselectall.innerHTML = '全选';
  419. var selectall = document.createElement('a');
  420. floatright.appendChild(selectall);
  421. selectall.setAttribute('class', 'btn btn-primary btn-sm');
  422. selectall.setAttribute('target', '_blank');
  423. selectall.style.color = '#fff';
  424. selectall.style.cursor = 'pointer';
  425. selectall.addEventListener('click', function () {
  426. Problemchecked = new Array(ProblemSum).fill(false);
  427. displayStandings();
  428. });
  429. selectall.innerHTML = '全不选';
  430. navbar.appendChild(navtabs);
  431. navtabs.setAttribute('style', 'border-bottom: none');
  432. }
  433. function ContestStandings() {
  434. GM_addStyle("\ndiv#standings > div.table-responsive > table > thead > tr > th:nth-child(-n+3)::before,\ndiv#standings > div.table-responsive > table > tbody > tr > td:nth-child(-n+3)::before {\n content: \"\";\n position: absolute;\n top: 0;\n right: 100%;\n width: 1px;\n height: 100%;\n background-color: ".concat(variables_1.Darktheme ? '#2e2e30' : '#dee2e6', ";\n}\n\ndiv#standings > div.table-responsive > table > thead > tr > th.checked, \ndiv#standings > div.table-responsive > table > tbody > tr:nth-of-type(even) > td.checked {\n background-color: ").concat(variables_1.Darktheme ? '#192523' : '#F4FFFF', ";\n}\ndiv#standings > div.table-responsive > table > tbody > tr:nth-of-type(odd) > td.checked {\n background-color: ").concat(variables_1.Darktheme ? '#1F2B29' : '#F0FFFF', ";\n}\n\n"));
  435. var ProblemSum = document.querySelectorAll('div#standings > div.table-responsive > table > thead > tr > th').length - 3;
  436. Problemchecked = new Array(ProblemSum).fill(true);
  437. displayStandings(true);
  438. NavBar(ProblemSum);
  439. }
  440. exports.ContestStandings = ContestStandings;
  441.  
  442.  
  443. /***/ }),
  444.  
  445. /***/ 992:
  446. /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
  447.  
  448.  
  449. Object.defineProperty(exports, "__esModule", ({ value: true }));
  450. exports.DiscussionCard = void 0;
  451. var variables_1 = __webpack_require__(449);
  452. var variables_2 = __webpack_require__(449);
  453. function DiscussionCard() {
  454. var _a;
  455. var footer = document.querySelector('div.uoj-footer');
  456. if (footer) {
  457. var discrd = document.createElement('div');
  458. discrd.setAttribute('class', 'giscus');
  459. footer.insertBefore(discrd, footer.firstChild);
  460. GM_addElement('script', {
  461. 'src': 'https://giscus.app/client.js',
  462. 'data-repo': 'Sukwants/Ex124OJ-discussions',
  463. 'data-repo-id': 'R_kgDOImiZLA',
  464. 'data-category': 'Ideas',
  465. 'data-category-id': 'DIC_kwDOImiZLM4CTCIj',
  466. 'data-mapping': 'pathname',
  467. 'data-strict': '0',
  468. 'data-reactions-enabled': '1',
  469. 'data-emit-metadata': '0',
  470. 'data-input-position': 'top',
  471. 'data-theme': variables_2.Darktheme ? 'dark' : 'light',
  472. 'data-lang': 'zh-CN',
  473. 'data-loading': 'lazy',
  474. 'crossorigin': 'anonymous',
  475. 'async': ''
  476. });
  477. GM_addStyle(".giscus {\n display: ".concat((variables_1.Academic == true ? 'none' : 'unset'), ";\n}\n.giscus-frame {\n margin-top: 20px;\n}"));
  478. var lanButton = document.getElementsByClassName('btn-group dropright mb-3')[0];
  479. var blankLine = document.createElement('div');
  480. blankLine.style.marginTop = '20px';
  481. (_a = lanButton.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(blankLine, lanButton);
  482. }
  483. }
  484. exports.DiscussionCard = DiscussionCard;
  485.  
  486.  
  487. /***/ }),
  488.  
  489. /***/ 18:
  490. /***/ ((__unused_webpack_module, exports) => {
  491.  
  492.  
  493. Object.defineProperty(exports, "__esModule", ({ value: true }));
  494. exports.changeGravatarURL = void 0;
  495. function changeGravatarURL() {
  496. var GravatarURLRegExp = /\/\/cn.gravatar.com\/avatar\/(.*)/;
  497. var Gravatars = document.querySelectorAll('img');
  498. for (var i in Gravatars) {
  499. if (Gravatars[i] && Gravatars[i].nodeType
  500. && GravatarURLRegExp.test(Gravatars[i].getAttribute('src'))
  501. && Gravatars[i].getAttribute('alt').toLowerCase().includes('avatar')) {
  502. Gravatars[i].setAttribute('src', '//cravatar.cn/avatar/' + Gravatars[i].getAttribute('src').match(GravatarURLRegExp)[1]);
  503. }
  504. }
  505. }
  506. exports.changeGravatarURL = changeGravatarURL;
  507.  
  508.  
  509. /***/ }),
  510.  
  511. /***/ 819:
  512. /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
  513.  
  514.  
  515. Object.defineProperty(exports, "__esModule", ({ value: true }));
  516. exports.NameBadge = exports.NameColor = void 0;
  517. var variables_1 = __webpack_require__(449);
  518. function NameColor(where) {
  519. if (!where) {
  520. where = document;
  521. }
  522. var Names = where.querySelectorAll('.uoj-username, .uoj-honor');
  523. for (var i in Names) {
  524. if (Names[i].innerHTML && variables_1.NameColorList[Names[i].innerHTML]) {
  525. Names[i].style.color = variables_1.NameColorList[Names[i].innerHTML][0];
  526. var resN = '';
  527. for (var char = 1; char < variables_1.NameColorList[Names[i].innerHTML].length; ++char) {
  528. resN = resN + "<font style=\"color:".concat(variables_1.NameColorList[Names[i].innerHTML][char], "\">").concat(Names[i].innerHTML.substring(char - 1, char), "</font>");
  529. }
  530. Names[i].innerHTML = resN + Names[i].innerHTML.substring(variables_1.NameColorList[Names[i].innerHTML].length - 1);
  531. }
  532. }
  533. }
  534. exports.NameColor = NameColor;
  535. function NameBadge(where) {
  536. var _a;
  537. if (!where) {
  538. where = document;
  539. }
  540. var ccfbadgecode = function (color) { return "<svg width=\"1em\" height=\"1em\" data-v-303bbf52=\"\" aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fad\" data-icon=\"badge-check\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" style=\"margin-bottom:.25em!important;bottom:10px;--fa-primary-color:#fff;--fa-secondary-color:".concat(color, ";--fa-secondary-opacity:1;\"><g data-v-303bbf52=\"\" class=\"fa-group\"><path data-v-303bbf52=\"\" fill=\"var(--fa-secondary-color)\" d=\"M512 256a88 88 0 0 0-57.1-82.4A88 88 0 0 0 338.4 57.1a88 88 0 0 0-164.8 0A88 88 0 0 0 57.1 173.6a88 88 0 0 0 0 164.8 88 88 0 0 0 116.5 116.5 88 88 0 0 0 164.8 0 88 88 0 0 0 116.5-116.5A88 88 0 0 0 512 256zm-144.8-44.25l-131 130a11 11 0 0 1-15.55-.06l-75.72-76.33a11 11 0 0 1 .06-15.56L171 224a11 11 0 0 1 15.56.06l42.15 42.49 97.2-96.42a11 11 0 0 1 15.55.06l25.82 26a11 11 0 0 1-.08 15.56z\" class=\"fa-secondary\"></path></g></svg>"); };
  541. var tagbadgecode = function (color, text) { return "<span style=\"background-color:".concat(color, ";padding:0.2em 0.6em;border-radius:.2em;color:#fff;font-size:0.7em;font-weight:bold;display:inline-block\">").concat(text, "</span>"); };
  542. var Names = where.querySelectorAll('.uoj-username, .uoj-honor');
  543. for (var i in Names) {
  544. var name_1 = Names[i].textContent;
  545. if (!name_1 || ((_a = Names[i].parentElement) === null || _a === void 0 ? void 0 : _a.getAttribute('class')) == 'legendLabel')
  546. continue;
  547. if (variables_1.CCFBadgeList[name_1]) {
  548. for (var j in variables_1.CCFBadgeList[name_1]) {
  549. Names[i].innerHTML += " ".concat(ccfbadgecode(variables_1.CCFBadgeList[name_1][j]));
  550. }
  551. }
  552. if (variables_1.TagBadgeList[name_1]) {
  553. for (var j in variables_1.TagBadgeList[name_1]) {
  554. Names[i].innerHTML += " ".concat(tagbadgecode(variables_1.TagBadgeList[name_1][j].color, variables_1.TagBadgeList[name_1][j].text));
  555. }
  556. }
  557. }
  558. }
  559. exports.NameBadge = NameBadge;
  560.  
  561.  
  562. /***/ }),
  563.  
  564. /***/ 823:
  565. /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
  566.  
  567.  
  568. Object.defineProperty(exports, "__esModule", ({ value: true }));
  569. exports.Problem = void 0;
  570. var utils_1 = __webpack_require__(593);
  571. var variables_1 = __webpack_require__(449);
  572. var code_1 = __webpack_require__(480);
  573. function appendsource() {
  574. var mathjaxconfig = document.createElement('script');
  575. mathjaxconfig.type = 'text/x-mathjax-config';
  576. mathjaxconfig.innerHTML = "\n MathJax.Hub.Config({\n showProcessingMessages: false,\n tex2jax: {\n inlineMath: [[\"$\", \"$\"], [\"\\\\(\", \"\\\\)\"]],\n processEscapes:true\n },\n menuSettings: {\n zoom: \"Hover\"\n }\n });\n ";
  577. document.head.appendChild(mathjaxconfig);
  578. var mathjax = document.createElement('script');
  579. mathjax.src = '//cdn.bootcss.com/mathjax/2.6.0/MathJax.js?config=TeX-AMS_HTML';
  580. document.head.appendChild(mathjax);
  581. var jquery = document.createElement('script');
  582. jquery.src = 'http://124.221.194.184/js/jquery.form.min.js';
  583. document.head.appendChild(jquery);
  584. var shtypical = document.createElement('link');
  585. shtypical.type = 'text/css';
  586. shtypical.rel = 'stylesheet';
  587. shtypical.href = 'http://124.221.194.184/css/sh_typical.min.css';
  588. document.head.append(shtypical);
  589. var shmain = document.createElement('script');
  590. shmain.src = 'http://124.221.194.184/js/sh_main.min.js';
  591. document.head.appendChild(shmain);
  592. shmain.addEventListener('load', function () {
  593. sh_highlightDocument();
  594. });
  595. }
  596. function Problem() {
  597. GM_addStyle("\n.partly-hidden {\n transition: opacity 125ms;\n}\n.partly-hidden:not(:hover) {\n opacity: 0;\n}\n ");
  598. var uojcontent = document.querySelector('div.uoj-content');
  599. if (!uojcontent) {
  600. return;
  601. }
  602. if (!uojcontent.querySelectorAll('.page-header').length) {
  603. var lostpage_1 = document.body.innerHTML;
  604. uojcontent.innerHTML = "\n<div class=\"row d-flex justify-content-center\">\n <span class=\"badge badge-secondary mr-1\" id=\"time-limit\">\u65F6\u95F4\u9650\u5236:</span>\n <span class=\"badge badge-secondary mr-1\" id=\"memory-limit\">\u7A7A\u95F4\u9650\u5236:</span>\n</div>\n<div class=\"float-right\">\n <div class=\"uoj-click-zan-block\" id=\"vote\"></div>\n</div>\n".concat((function () {
  605. if ((0, utils_1.isProblem)()[2]) {
  606. return "\n<div class=\"page-header row\">\n <h1 class=\"col-md-3 text-left\" id=\"contest-name\"><small></small></h1>\n <h1 class=\"col-md-7 text-center\" id=\"problem-name\"></h1>\n <div class=\"col-md-2 text-right\" id=\"contest-countdown\"></div>\n</div>\n ";
  607. }
  608. else {
  609. return "<h1 class=\"page-header text-center\" id=\"problem-name\"></h1>";
  610. }
  611. })(), "\n<a role=\"button\" class=\"btn btn-info float-right\" href=\"").concat((0, utils_1.isProblem)()[2] ? "/contest/".concat((0, utils_1.isProblem)()[2]) : '', "/problem/").concat((0, utils_1.isProblem)()[3], "/statistics\"><span class=\"glyphicon glyphicon-stats\"></span> \u7EDF\u8BA1</a>\n\n<ul class=\"nav nav-tabs\" role=\"tablist\">\n <li class=\"nav-item\"><a class=\"nav-link active\" href=\"#tab-statement\" role=\"tab\" data-toggle=\"tab\"><span class=\"glyphicon glyphicon-book\"></span> \u63CF\u8FF0</a></li>\n ").concat((0, utils_1.isProblem)()[2] ? "<li class=\"nav-item\"><a class=\"nav-link\" id=\"nav-contest\" href=\"/contest/".concat((0, utils_1.isProblem)()[2], "\" role=\"tab\">\u8FD4\u56DE\u6BD4\u8D5B</a></li>") : '', "\n</ul>\n<div class=\"tab-content\">\n <div class=\"tab-pane active\" id=\"tab-statement\">\n </div>\n</div>");
  612. GM_xmlhttpRequest({
  613. method: "GET",
  614. url: "https://ex124oj.pond.ink/api".concat((0, utils_1.isProblem)()[2] ? "/contest/".concat((0, utils_1.isProblem)()[2]) : '', "/problem/").concat((0, utils_1.isProblem)()[3]),
  615. revalidate: true,
  616. onload: function (data) {
  617. if (data.status == 200) {
  618. var res = JSON.parse(data.response);
  619. var title = document.querySelector('head > title');
  620. if (title && res.title) {
  621. title.innerHTML = res.title;
  622. }
  623. var problename = document.querySelector('#problem-name');
  624. if (problename && res.problemname) {
  625. problename.innerHTML = res.problemname;
  626. }
  627. var contestname = document.querySelector('#contest-name');
  628. if (contestname && res.contestname) {
  629. contestname.innerHTML = res.contestname;
  630. }
  631. var statement = document.querySelector('#tab-statement');
  632. if (statement && res.statement) {
  633. statement.innerHTML = res.statement;
  634. }
  635. var timelimit = document.querySelector('#time-limit');
  636. if (timelimit && res.timelimit) {
  637. timelimit.innerHTML = res.timelimit;
  638. }
  639. var memorylimit = document.querySelector('#memory-limit');
  640. if (memorylimit && res.memorylimit) {
  641. memorylimit.innerHTML = res.memorylimit;
  642. }
  643. var vote = document.querySelector('#vote');
  644. if (vote && res.vote) {
  645. vote.innerHTML = res.vote;
  646. eval('$(".uoj-click-zan-block").click_zan_block();');
  647. }
  648. var countdown = document.querySelector('#contest-countdown');
  649. if (countdown && res.script) {
  650. eval(res.script);
  651. }
  652. appendsource();
  653. (0, code_1.CodeCopy)();
  654. }
  655. else {
  656. document.body.innerHTML = lostpage_1;
  657. }
  658. }
  659. });
  660. }
  661. var tabcontent = document.querySelector('div.tab-content');
  662. if (tabcontent) {
  663. var navbar = document.createElement('div');
  664. tabcontent.before(navbar);
  665. navbar.setAttribute('style', 'border-bottom: 1px solid ' + (variables_1.Darktheme ? '#2e2e30' : '#dee2e6;'));
  666. var statisticsButton = document.querySelector('div.uoj-content > a[role=button]');
  667. if (statisticsButton)
  668. navbar.appendChild(statisticsButton);
  669. var DownloadTag = document.createElement('a');
  670. navbar.appendChild(DownloadTag);
  671. DownloadTag.setAttribute('role', 'button');
  672. DownloadTag.setAttribute('class', 'btn btn-primary float-right partly-hidden');
  673. DownloadTag.setAttribute('href', '/download.php?type=problem&id=' + (0, utils_1.isProblem)()[3]);
  674. DownloadTag.setAttribute('target', '_blank');
  675. DownloadTag.innerHTML = '<span class="glyphicon glyphicon-download-alt"></span> 下载数据';
  676. var navtabs = document.querySelector('div.uoj-content > ul[role=tablist]');
  677. if (navtabs) {
  678. navbar.appendChild(navtabs);
  679. navtabs.setAttribute('style', 'border-bottom: none');
  680. var TJTag = document.createElement('li');
  681. navtabs.insertBefore(TJTag, null);
  682. TJTag.setAttribute('class', 'nav-item partly-hidden');
  683. var TJInnerTag = document.createElement('a');
  684. TJTag.appendChild(TJInnerTag);
  685. TJInnerTag.setAttribute('role', 'tab');
  686. TJInnerTag.setAttribute('class', 'nav-link');
  687. TJInnerTag.setAttribute('href', '/download.php?type=tj&id=' + (0, utils_1.isProblem)()[3]);
  688. TJInnerTag.innerHTML = '<span class="glyphicon glyphicon-book"></span> 题解';
  689. }
  690. }
  691. }
  692. exports.Problem = Problem;
  693.  
  694.  
  695. /***/ }),
  696.  
  697. /***/ 310:
  698. /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
  699.  
  700.  
  701. Object.defineProperty(exports, "__esModule", ({ value: true }));
  702. exports.Settings = void 0;
  703. var variables_1 = __webpack_require__(449);
  704. function Settings() {
  705. GM_addStyle(".settings-overlay {\n position: fixed;\n height: 100%;\n width: 100%;\n transition: visibility 0.4s, background 0.4s;\n top: 0;\n left: 0;\n visibility: hidden;\n z-index: 229;\n}\n.settings-popup-active .settings-overlay {\n background: ".concat(variables_1.Darktheme ? 'rgb(255,255,255,.3)' : 'rgb(0,0,0,.3)', ";\n visibility: visible;\n}\n.settings-popup {\n width: 60%;\n position: relative;\n transform: translate(-50%, -50%);\n top: 50%;\n left: 50%;\n visibility: hidden;\n border-radius: .5rem;\n padding: 20px 20px;\n}\n.settings-popup-active .settings-overlay .settings-popup {\n background: ").concat(variables_1.Darktheme ? '#0d1117' : '#ffffff', ";\n visibility: visible;\n}\n.settings-popup .row {\n padding: 0 30px 30px;\n}\n.settings-popup .row * {\n margin-bottom: 0;\n}\n.settings-titlebar {\n padding: 10px 20px 30px 20px !important;\n}\n.settings-titlebar h4 {\n position: relative;\n top: 50%;\n left: 0;\n transform: translate(0, -50%);\n}\n.settings-footerbar {\n height: 60px;\n padding: 20px 20px;\n}\n.switch {\n position: relative;\n vertical-align: middle;\n width: 60px;\n height: 28px;\n}\n.switch input {\n opacity: 0;\n width: 0;\n height: 0;\n}\n.settings-popup-active .slider {\n position: absolute;\n visibility: visible;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ").concat(variables_1.Darktheme ? '#333' : '#ccc', ";\n transition: background-color .4s;\n transition: visiblility 0s;\n border-radius: 28px;\n}\n.settings-popup-active .slider:before {\n position: absolute;\n visibility: visible;\n content: \"\";\n height: 20px;\n width: 20px;\n left: 4px;\n bottom: 4px;\n background-color: ").concat(variables_1.Darktheme ? '#0d1117' : '#ffffff', ";\n transition: .4s;\n border-radius: 50%;\n}\ninput:checked + .slider {\n background-color: #28ADCA;\n}\ninput:checked + .slider:before {\n transform: translateX(32px);\n}"));
  706. var HomepageEntrance = document.createElement('li');
  707. var NavBarTablist = document.querySelector('div[role=main] > div > ul[role=tablist]');
  708. NavBarTablist.insertBefore(HomepageEntrance, NavBarTablist.firstChild);
  709. HomepageEntrance.setAttribute('class', 'nav-item');
  710. HomepageEntrance.innerHTML = '<span style="padding: 0.5rem 1rem; cursor:pointer"><span style="background-color: #28adca;padding:0.2em 0.6em;border-radius: 1em;color:#fff;font-size: 0.7em;font-weight:bold;display:inline-block;position: relative;top: 50%;transform: translate(0,-50%);">Ex124OJ</span></span>';
  711. HomepageEntrance.onclick = function () {
  712. document.body.setAttribute('class', 'settings-popup-active');
  713. };
  714. var SettingsOverlay = document.createElement('div');
  715. document.body.insertBefore(SettingsOverlay, document.body.firstChild);
  716. SettingsOverlay.setAttribute('class', 'settings-overlay');
  717. var SettingsPopup = document.createElement('div');
  718. SettingsOverlay.appendChild(SettingsPopup);
  719. SettingsPopup.setAttribute('class', 'settings-popup');
  720. var SettingsTitlebar = document.createElement('div');
  721. SettingsPopup.appendChild(SettingsTitlebar);
  722. SettingsTitlebar.setAttribute('class', 'row settings-titlebar');
  723. SettingsTitlebar.innerHTML = '<h3 style="width:100%;height:3.5rem"><img src="https://ex124oj.pond.ink/images/icon.png" style="height:3.5rem;width:3.5rem;margin-right:10px"><span style="vertical-align:middle"> Ex124OJ 控制面板</span> <span style="vertical-align:middle;cursor:pointer;margin:0 10px" onclick="window.open(\'https://ex124oj.pond.ink/\');"><span style="height:1.75rem;line-height:3.5rem;vertical-align:middle;padding:0 .5rem;background-color:#28adca;border-radius:1em;color:#fff;font-size:1.2rem;font-weight:bold">Ex124OJ</span></span><span style="color:#7f7f7f;line-height:3.5rem;vertical-align:middle;font-size:1.2rem">' + variables_1.version + '</span></h3>';
  724. var SettingsCloseButton = document.createElement('span');
  725. SettingsPopup.appendChild(SettingsCloseButton);
  726. SettingsCloseButton.setAttribute('style', 'position: fixed;right: 20px;top:20px;cursor: pointer');
  727. SettingsCloseButton.setAttribute('onclick', 'document.body.setAttribute(\'class\', \'\');');
  728. SettingsCloseButton.innerHTML = '<h4><i class="fa fa-xmark"></i></h4>';
  729. var background = document.createElement('div');
  730. SettingsPopup.appendChild(background);
  731. background.setAttribute('class', 'row');
  732. var backgroundImageLabel = document.createElement('strong');
  733. background.appendChild(backgroundImageLabel);
  734. backgroundImageLabel.setAttribute('style', 'font-size: 1.25em');
  735. backgroundImageLabel.innerHTML = '背景图片&emsp;&emsp;&emsp;&emsp;';
  736. var backgroundImageInput = document.createElement('input');
  737. background.appendChild(backgroundImageInput);
  738. backgroundImageInput.setAttribute('style', 'flex-grow: 1; height: 2em; width: initial');
  739. backgroundImageInput.setAttribute('class', 'form-control');
  740. var siteIcon = document.createElement('div');
  741. SettingsPopup.appendChild(siteIcon);
  742. siteIcon.setAttribute('class', 'row');
  743. var siteIconImageLabel = document.createElement('strong');
  744. siteIcon.appendChild(siteIconImageLabel);
  745. siteIconImageLabel.setAttribute('style', 'font-size: 1.25em');
  746. siteIconImageLabel.innerHTML = '网站图标&emsp;&emsp;&emsp;&emsp;';
  747. var siteIconImageInput = document.createElement('input');
  748. siteIcon.appendChild(siteIconImageInput);
  749. siteIconImageInput.setAttribute('style', 'flex-grow: 1; height: 2em; width: initial');
  750. siteIconImageInput.setAttribute('class', 'form-control');
  751. var siteIconSmall = document.createElement('div');
  752. SettingsPopup.appendChild(siteIconSmall);
  753. siteIconSmall.setAttribute('class', 'row');
  754. var siteIconSmallImageLabel = document.createElement('strong');
  755. siteIconSmall.appendChild(siteIconSmallImageLabel);
  756. siteIconSmallImageLabel.setAttribute('style', 'font-size: 1.25em');
  757. siteIconSmallImageLabel.innerHTML = '网站图标(小)&emsp;';
  758. var siteIconSmallImageInput = document.createElement('input');
  759. siteIconSmall.appendChild(siteIconSmallImageInput);
  760. siteIconSmallImageInput.setAttribute('style', 'flex-grow: 1; height: 2em; width: initial');
  761. siteIconSmallImageInput.setAttribute('class', 'form-control');
  762. var Switchs = document.createElement('div');
  763. SettingsPopup.appendChild(Switchs);
  764. Switchs.setAttribute('class', 'row');
  765. var academic = document.createElement('div');
  766. Switchs.appendChild(academic);
  767. var academicLabel = document.createElement('strong');
  768. academic.appendChild(academicLabel);
  769. academicLabel.setAttribute('style', 'font-size: 1.25em; vertical-align: middle;');
  770. academicLabel.innerHTML = '学术模式&emsp;&emsp;&emsp;&emsp;';
  771. var academicSwitch = document.createElement('label');
  772. academicSwitch.className = 'switch';
  773. academic.appendChild(academicSwitch);
  774. academicSwitch.innerHTML = '<input type="checkbox" id="AcademicSwitch" style="display: none;">\n<i id="AcademicSwitchIcon" class="slider"></i>';
  775. {
  776. var space = document.createElement('p');
  777. Switchs.appendChild(space);
  778. space.innerHTML = '&emsp;&emsp;&emsp;&emsp;';
  779. }
  780. var ligatures = document.createElement('div');
  781. Switchs.appendChild(ligatures);
  782. var ligaturesLabel = document.createElement('strong');
  783. ligatures.appendChild(ligaturesLabel);
  784. ligaturesLabel.setAttribute('style', 'font-size: 1.25em; vertical-align: middle;');
  785. ligaturesLabel.innerHTML = '代码连字&emsp;&emsp;&emsp;&emsp;';
  786. var ligaturesSwitch = document.createElement('label');
  787. ligaturesSwitch.className = 'switch';
  788. ligatures.appendChild(ligaturesSwitch);
  789. ligaturesSwitch.innerHTML = '<input type="checkbox" id="LigaturesSwitch" style="display: none;">\n<i id="LigaturesSwitchIcon" class="slider"></i>';
  790. {
  791. var space = document.createElement('p');
  792. Switchs.appendChild(space);
  793. space.innerHTML = '&emsp;&emsp;&emsp;&emsp;';
  794. }
  795. var darktheme = document.createElement('div');
  796. Switchs.appendChild(darktheme);
  797. var darkthemeLabel = document.createElement('strong');
  798. darktheme.appendChild(darkthemeLabel);
  799. darkthemeLabel.setAttribute('style', 'font-size: 1.25em; vertical-align: middle;');
  800. darkthemeLabel.innerHTML = '主题风格&emsp;&emsp;&emsp;&emsp;';
  801. var darkthemeSelect = document.createElement('select');
  802. darktheme.appendChild(darkthemeSelect);
  803. darkthemeSelect.classList.add('form-control');
  804. darkthemeSelect.style.display = 'inline-block';
  805. darkthemeSelect.style.width = 'unset';
  806. darkthemeSelect.style.verticalAlign = 'middle';
  807. darkthemeSelect.innerHTML = '<option value="follow">跟随系统</option><option value="light">Light</option><option value="dark">Dark</option>';
  808. backgroundImageInput.value = variables_1.BackgroundImage;
  809. siteIconImageInput.value = variables_1.SiteIconImage;
  810. siteIconSmallImageInput.value = variables_1.SiteIconSmallImage;
  811. document.getElementById('AcademicSwitch').checked = variables_1.Academic;
  812. document.getElementById('LigaturesSwitch').checked = variables_1.Ligatures;
  813. darkthemeSelect.value = variables_1.DarkthemeSelect;
  814. var FooterRow = document.createElement('div');
  815. FooterRow.setAttribute('class', 'settings-footerbar');
  816. SettingsPopup.appendChild(FooterRow);
  817. var Ok = document.createElement('button');
  818. FooterRow.appendChild(Ok);
  819. Ok.setAttribute('class', 'btn btn-search btn-outline-primary float-right');
  820. Ok.innerHTML = '保存';
  821. Ok.onclick = function () {
  822. GM_setValue('BackgroundImage', backgroundImageInput.value);
  823. GM_setValue('SiteIconImage', siteIconImageInput.value);
  824. GM_setValue('SiteIconSmallImage', siteIconSmallImageInput.value);
  825. GM_setValue('Academic', document.getElementById('AcademicSwitch').checked);
  826. GM_setValue('Ligatures', document.getElementById('LigaturesSwitch').checked);
  827. GM_setValue('Darktheme', darkthemeSelect.value);
  828. location.reload();
  829. };
  830. var Clear = document.createElement('button');
  831. FooterRow.appendChild(Clear);
  832. Clear.setAttribute('class', 'btn btn-search btn-outline-primary float-right');
  833. Clear.innerHTML = '恢复默认';
  834. Clear.onclick = function () {
  835. var values = GM_listValues();
  836. for (var value in values) {
  837. GM_deleteValue(values[value]);
  838. }
  839. location.reload();
  840. };
  841. }
  842. exports.Settings = Settings;
  843.  
  844.  
  845. /***/ }),
  846.  
  847. /***/ 978:
  848. /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
  849.  
  850.  
  851. Object.defineProperty(exports, "__esModule", ({ value: true }));
  852. exports.Submission = void 0;
  853. var code_1 = __webpack_require__(480);
  854. var utils_1 = __webpack_require__(593);
  855. function SubmissionCrack() {
  856. var content = document.querySelector('div.uoj-content');
  857. if (!content || content.textContent.includes('404')) {
  858. return;
  859. }
  860. GM_xmlhttpRequest({
  861. method: "GET",
  862. url: "https://ex124oj.pond.ink/api/submission/".concat((0, utils_1.isSubmission)()[1]),
  863. revalidate: true,
  864. onload: function (data) {
  865. if (data.status == 200) {
  866. SubmissionCard(JSON.parse(data.response));
  867. }
  868. else {
  869. SubmissionCard({});
  870. }
  871. }
  872. });
  873. }
  874. function SubmissionCard(data) {
  875. var _a;
  876. GM_addStyle("\ndiv.tab-content > div.tab-pane.card {\n border-top: none;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n ");
  877. var content = document.querySelector('div.uoj-content');
  878. if (content && content.children.length) {
  879. var TabList = document.createElement('ul');
  880. content.insertBefore(TabList, content.children[1]);
  881. TabList.setAttribute('class', 'nav nav-tabs');
  882. TabList.setAttribute('role', 'tablist');
  883. var TabContent = document.createElement('div');
  884. content.insertBefore(TabContent, content.children[2]);
  885. TabContent.setAttribute('class', 'tab-content');
  886. TabContent.style.marginBottom = '20px';
  887. var counter = 0, cardtitle = void 0;
  888. var flag = { answer: false, details: false };
  889. for (var i = 3; i < content.children.length; i++, counter++) {
  890. var classlist = content.children[i].getAttribute('class');
  891. if (classlist && classlist.includes('card')) {
  892. var isActive = !counter;
  893. var title = document.createElement('li');
  894. TabList.appendChild(title);
  895. title.setAttribute('class', 'nav-item');
  896. var titleText = (_a = content.children[i].querySelector('h4.card-title')) === null || _a === void 0 ? void 0 : _a.textContent;
  897. if (titleText) {
  898. cardtitle = titleText.charAt(0).toUpperCase() + titleText.slice(1);
  899. title.innerHTML = "<a class=\"nav-link".concat(isActive ? ' active' : '', "\" href=\"#card").concat(counter, "\" role=\"tab\" data-toggle=\"tab\" aria-selected=\"true\">").concat(cardtitle, "</a>");
  900. if (cardtitle == 'Answer') {
  901. flag.answer = true;
  902. }
  903. else if (cardtitle == '详细' || cardtitle == 'Details') {
  904. flag.details = true;
  905. }
  906. }
  907. var card = document.createElement('div');
  908. TabContent.appendChild(card);
  909. card.setAttribute('class', "tab-pane card".concat(isActive ? ' active' : ''));
  910. card.setAttribute('id', "card".concat(counter));
  911. var card_body = content.children[i].querySelector('div.card-body');
  912. if (cardtitle == 'Answer' && data.answer && data.answer.body) {
  913. card_body = document.createElement('div');
  914. card_body.classList.add('card-body');
  915. card_body.innerHTML = data.answer.body;
  916. }
  917. else if ((cardtitle == '详细' || cardtitle == 'Details') && data.details && data.details.body) {
  918. card_body = document.createElement('div');
  919. card_body.classList.add('card-body');
  920. card_body.innerHTML = data.details.body;
  921. }
  922. if (card_body) {
  923. card.appendChild(card_body);
  924. }
  925. var card_footer = content.children[i].querySelector('div.card-footer');
  926. if (card_footer) {
  927. card.appendChild(card_footer);
  928. }
  929. if (cardtitle == 'Answer' && data.answer && data.answer.footer) {
  930. card_footer.innerHTML = data.answer.footer;
  931. }
  932. content.removeChild(content.children[i]);
  933. i--;
  934. }
  935. }
  936. if (!flag.answer && data.answer) {
  937. var isActive = !counter;
  938. var title = document.createElement('li');
  939. TabList.appendChild(title);
  940. title.setAttribute('class', 'nav-item');
  941. title.innerHTML = "<a class=\"nav-link".concat(isActive ? ' active' : '', "\" href=\"#card").concat(counter, "\" role=\"tab\" data-toggle=\"tab\" aria-selected=\"true\">Answer</a>");
  942. var card = document.createElement('div');
  943. TabContent.appendChild(card);
  944. card.setAttribute('class', "tab-pane card".concat(isActive ? ' active' : ''));
  945. card.setAttribute('id', "card".concat(counter));
  946. if (data.answer.body) {
  947. var card_body = document.createElement('div');
  948. card_body.classList.add('card-body');
  949. card_body.innerHTML = data.answer.body;
  950. card.appendChild(card_body);
  951. }
  952. if (data.answer.footer) {
  953. var card_body = document.createElement('div');
  954. card_body.classList.add('card-footer');
  955. card_body.innerHTML = data.answer.footer;
  956. card.appendChild(card_body);
  957. }
  958. counter++;
  959. }
  960. if (!flag.details) {
  961. var isActive = !counter;
  962. var title = document.createElement('li');
  963. TabList.appendChild(title);
  964. title.setAttribute('class', 'nav-item');
  965. title.innerHTML = "<a class=\"nav-link".concat(isActive ? ' active' : '', "\" href=\"#card").concat(counter, "\" role=\"tab\" data-toggle=\"tab\" aria-selected=\"true\">\u8BE6\u7EC6</a>");
  966. var card = document.createElement('div');
  967. TabContent.appendChild(card);
  968. card.setAttribute('class', "tab-pane card".concat(isActive ? ' active' : ''));
  969. card.setAttribute('id', "card".concat(counter));
  970. if (data.details.body) {
  971. var card_body = document.createElement('div');
  972. card_body.classList.add('card-body');
  973. card_body.innerHTML = data.details.body;
  974. card.appendChild(card_body);
  975. }
  976. counter++;
  977. }
  978. sh_highlightDocument();
  979. (0, code_1.CodeCopy)();
  980. }
  981. }
  982. function Submission() {
  983. SubmissionCrack();
  984. }
  985. exports.Submission = Submission;
  986.  
  987.  
  988. /***/ }),
  989.  
  990. /***/ 900:
  991. /***/ ((__unused_webpack_module, exports) => {
  992.  
  993.  
  994. Object.defineProperty(exports, "__esModule", ({ value: true }));
  995. exports.TableStyle = void 0;
  996. function TableStyle() {
  997. var Tables = document.getElementsByTagName('table');
  998. for (var table in Tables) {
  999. if (Tables[table].nodeType) {
  1000. var parentNode = Tables[table].parentNode;
  1001. var parentClass = parentNode.getAttribute('class');
  1002. var classList = Tables[table].classList;
  1003. if (parentClass !== 'legend' && classList.length === 0) {
  1004. Tables[table].classList.add('table', 'table-bordered');
  1005. }
  1006. }
  1007. }
  1008. var ths = document.getElementsByTagName('th');
  1009. for (var th in ths) {
  1010. if (ths[th].nodeType && ths[th].getAttribute('align')) {
  1011. ths[th].setAttribute('style', 'text-align:' + ths[th].getAttribute('align'));
  1012. }
  1013. }
  1014. }
  1015. exports.TableStyle = TableStyle;
  1016.  
  1017.  
  1018. /***/ }),
  1019.  
  1020. /***/ 446:
  1021. /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
  1022.  
  1023.  
  1024. Object.defineProperty(exports, "__esModule", ({ value: true }));
  1025. exports.Theme = void 0;
  1026. var variables_1 = __webpack_require__(449);
  1027. function Theme() {
  1028. GM_addElement('link', {
  1029. href: 'https://cdn.bootcdn.net/ajax/libs/font-awesome/6.2.1/css/fontawesome.css',
  1030. rel: 'stylesheet'
  1031. });
  1032. GM_addElement('link', {
  1033. href: 'https://cdn.bootcdn.net/ajax/libs/font-awesome/6.2.1/css/brands.css',
  1034. rel: 'stylesheet'
  1035. });
  1036. GM_addElement('link', {
  1037. href: 'https://cdn.bootcdn.net/ajax/libs/font-awesome/6.2.1/css/solid.css',
  1038. rel: 'stylesheet'
  1039. });
  1040. GM_addStyle("\n@import url(https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css);\ncode {\n font-family: \"Fira Code\";\n ".concat(variables_1.Ligatures ? '' : 'font-variant-ligatures: none;', "\n}\n.card {\n ").concat(variables_1.Darktheme ? 'border-color: rgba(255,255,255,.125);' : '', "\n}\n.card-footer {\n ").concat(variables_1.Darktheme ? 'border-color: rgba(255,255,255,.03);' : '', "\n}\npre, pre.sh_sourceCode {\n ").concat(variables_1.Darktheme ? 'color: #e0e0e0!important; background-color: #0d1117!important; border-color: #2e2e30!important;' : '', "\n}\ncode.sh_cpp>span {\n font-style: normal !important;\n font-weight: 400 !important;\n}\ncode.sh_cpp>span.sh_preproc,\ncode.sh_cpp>span.sh_keyword,\ncode.sh_cpp>span.sh_type {\n color: #8959a8;\n}\ncode.sh_cpp>span.sh_string {\n color: #718c00;\n}\ncode.sh_cpp>span.sh_cbracket {\n color: #4d4d4c;\n}\ncode.sh_cpp>span.sh_symbol {\n color: #3e999f;\n}\ncode.sh_cpp>span.sh_number {\n color: #f5871f;\n}\ncode.sh_cpp>span.sh_function {\n color: #4271ae;\n}\ncode.sh_cpp>span.sh_comment {\n color: #8e908c;\n}\n.copybutton {\n font-size: 1.1em;\n width: 2.2em;\n height: 2.2em;\n padding: 0;\n position: absolute;\n top: 0;\n right: 0;\n background-color: ").concat(variables_1.Darktheme ? 'rgb(255,255,255,.1)' : 'rgb(0,0,0,.1)', ";\n border: 0 solid transparent;\n border-bottom-left-radius: .28571429rem;\n}\n.copybutton:hover {\n background-color: ").concat(variables_1.Darktheme ? 'rgb(255,255,255,.2)' : 'rgb(0,0,0,.2);', ";\n}\n.copybutton:focus {\n outline: none;\n}\n "));
  1041. if (variables_1.Darktheme) {
  1042. GM_addStyle("\nbody {\n color: #f2eee8;\n background-color: #0d1117;\n}\n\na.header-a {\n color: #f2eee8;\n}\n\n.navbar-light .navbar-brand {\n color: #fff\n}\n.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover {\n color: #fff\n}\n.navbar-light .navbar-nav .nav-link {\n color: rgba(255,255,255,.5)\n}\n.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover {\n color: rgba(255,255,255,.75)\n}\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(255,255,255,.25)\n}\n.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link {\n color: #fff\n}\n.navbar-light .navbar-toggler {\n color: rgba(255,255,255,.5);\n border-color: rgba(255,255,255,.1)\n}\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\")\n}\n.navbar-light .navbar-text {\n color: rgba(255,255,255,.5)\n}\n.navbar-light .navbar-text a {\n color: #fff\n}\n.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover {\n color: #fff\n}\n.bg-light {\n background-color: #343a40!important\n}\na.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover {\n background-color: #1d2124!important\n}\n\n.uoj-footer {\n border-top-color: #272b31;\n}\n\n.page-header {\n border-color: #2e2e30;\n}\n\n.page-link, .page-item.disabled .page-link {\n background-color: #0d1117;\n border-color: #2e2e30;\n}\n\n.card {\n background-color: #0d1117;\n}\n.card-header {\n background-color: rgba(255,255,255,.03);\n border-bottom-color: rgba(255,255,255,.125);\n}\n\n.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active {\n color: #f2eee8;\n background-color: #0d1117;\n border-color: #2e2e30 #2e2e30 #0d1117;\n}\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #2e2e30 #2e2e30 #0d1117;\n}\n.nav-tabs {\n border-bottom-color: #2e2e30;\n}\n\n.border-info, .bg-info {\n opacity: 0.9;!important;\n}\n.btn-info, .btn-primary, .btn-warning, .btn-danger {\n opacity: 0.8;\n}\n\n.bootstrap-switch .bootstrap-switch-handle-on, .bootstrap-switch .bootstrap-switch-handle-off, .bootstrap-switch .bootstrap-switch-label {\n background-color: #0d1117;\n border-color: #2e2e30;\n color: #f2eee8;\n}\n\n.table {\n color: #f2eee8;\n}\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255,255,255,.05);\n}\n.table-hover tbody tr:hover {\n color: #d1c9bf;\n background-color: rgba(255,255,255,.075);\n}\n.table thead th {\n border-bottom-color: #2e2e30;\n}\n.table td, .table th {\n border-color: #2e2e30;\n border-top-color: #2e2e30;\n}\n.table-bordered td, .table-bordered th {\n border-color: #2e2e30;\n}\n\n.form-control {\n color: #a99e91;\n background-color: #0d1117;\n border-color: #2e2e30;\n}\n.form-control:focus {\n color: #a99e91;\n background-color: #0d1117;\n}\n\n.img-thumbnail, .img-rounded {\n background-color: #0d1117;\n}\n\n.list-group {\n background-color: #0d1117;\n}\n.list-group-item {\n background-color: #0d1117;\n border-color: rgba(255, 255, 255, .125);\n}\n\n.dropdown-menu.show {\n background-color: #0d1117;\n border-color: rgba(255, 255, 255, .15);\n}\n.dropdown-item {\n color: #f2eee8;\n}\n.dropdown-item:focus, .dropdown-item:hover {\n color: #f2eee8;\n text-decoration: none;\n background-color: #14171c;\n}\n\n.CodeMirror, .CodeMirror-scroll {\n background-color: #0d1117;\n color: #f2eee8;\n}\n.CodeMirror-activeline-background, .CodeMirror-scroll .CodeMirror-activeline-background {\n background-color: #241e17;\n}\n.CodeMirror div.CodeMirror-cursor {\n border-left-color: white!important;\n}\n.CodeMirror-gutters, .CodeMirror-scroll > .CodeMirror-gutters {\n background-color: #0d1117;\n border-right-color: #59554f;\n color: #59554f;\n}\n.CodeMirror-linenumber {\n background-color: #0d1117;\n color: #59554f;\n}\n.blog-content-md-editor-toolbar {\n background: #343a40\n}\n\n#MathJax_ZoomFrame {\n color: black;\n}\n ");
  1043. }
  1044. }
  1045. exports.Theme = Theme;
  1046.  
  1047.  
  1048. /***/ }),
  1049.  
  1050. /***/ 720:
  1051. /***/ ((__unused_webpack_module, exports) => {
  1052.  
  1053.  
  1054. Object.defineProperty(exports, "__esModule", ({ value: true }));
  1055. exports.RandomProblem = void 0;
  1056. function RandomProblem() {
  1057. var SearchBox = document.getElementById('form-search-problem');
  1058. if (SearchBox) {
  1059. var RandomButton = document.createElement('div');
  1060. RandomButton.setAttribute('class', 'input-group-append');
  1061. RandomButton.innerHTML = '<button class="btn btn-search btn-outline-primary" style="height: calc(1.5em + 0.75rem + 2px);" onclick="randomProblem();">随机跳题</button>';
  1062. var RandomScript = document.createElement('script');
  1063. RandomScript.innerHTML =
  1064. "function randomProblem() {\n const randomProblemId = Math.ceil(Math.random() * 3000);\n ($.get('/problem/' + randomProblemId, (data, status) => {\n if (status == 'success') {\n window.location.href = '/problem/' + randomProblemId;\n } else {\n randomProblem();\n }\n })).error(() => {\n randomProblem();\n })\n}";
  1065. SearchBox.after(RandomButton);
  1066. RandomButton.after(RandomScript);
  1067. }
  1068. }
  1069. exports.RandomProblem = RandomProblem;
  1070.  
  1071.  
  1072. /***/ }),
  1073.  
  1074. /***/ 593:
  1075. /***/ ((__unused_webpack_module, exports) => {
  1076.  
  1077.  
  1078. Object.defineProperty(exports, "__esModule", ({ value: true }));
  1079. exports.isBlog = exports.isUserProfile = exports.isProblem = exports.isStandings = exports.isContest = exports.isContests = exports.isSubmission = exports.isHomepage = void 0;
  1080. var HomepageRegExp = /^http:\/\/124.221.194.184(\/)?(\?.*)?$/;
  1081. function isHomepage() {
  1082. return window.location.href.match(HomepageRegExp);
  1083. }
  1084. exports.isHomepage = isHomepage;
  1085. var submissionRegExp = /^http:\/\/124.221.194.184\/submission\/(\d+)(\?.*)?$/;
  1086. function isSubmission() {
  1087. return window.location.href.match(submissionRegExp);
  1088. }
  1089. exports.isSubmission = isSubmission;
  1090. var ContestsRegExp = /^http:\/\/124.221.194.184\/contests(\?.*)?$/;
  1091. function isContests() {
  1092. return window.location.href.match(ContestsRegExp);
  1093. }
  1094. exports.isContests = isContests;
  1095. var ContestRegExp = /^http:\/\/124.221.194.184\/contest\/(\d+)(\?.*)?$/;
  1096. function isContest() {
  1097. return window.location.href.match(ContestRegExp);
  1098. }
  1099. exports.isContest = isContest;
  1100. var StandingsRegExp = /^http:\/\/124.221.194.184\/contest\/(\d+)\/standings(\?.*)?$/;
  1101. function isStandings() {
  1102. return window.location.href.match(StandingsRegExp);
  1103. }
  1104. exports.isStandings = isStandings;
  1105. var ProblemRegExp = /^http:\/\/124.221.194.184(\/contest\/(\d+))?\/problem\/(\d+)(\?.*)?$/;
  1106. function isProblem() {
  1107. return window.location.href.match(ProblemRegExp);
  1108. }
  1109. exports.isProblem = isProblem;
  1110. var UserProfileRegExp = /^http:\/\/124.221.194.184\/user\/profile\/.+(\?.*)?$/;
  1111. function isUserProfile() {
  1112. return window.location.href.match(UserProfileRegExp);
  1113. }
  1114. exports.isUserProfile = isUserProfile;
  1115. var BlogRegExp = /^http:\/\/124.221.194.184\/blog\/.+(\?.*)?$/;
  1116. function isBlog() {
  1117. return window.location.href.match(BlogRegExp);
  1118. }
  1119. exports.isBlog = isBlog;
  1120.  
  1121.  
  1122. /***/ }),
  1123.  
  1124. /***/ 449:
  1125. /***/ ((__unused_webpack_module, exports) => {
  1126.  
  1127.  
  1128. Object.defineProperty(exports, "__esModule", ({ value: true }));
  1129. exports.getVariables = exports.TagBadgeList = exports.CCFBadgeList = exports.NameColorList = exports.Darktheme = exports.DarkthemeSelect = exports.Ligatures = exports.Academic = exports.SiteIconSmallImage = exports.SiteIconImage = exports.BackgroundImage = exports.version = void 0;
  1130. exports.version = "1.1.2";
  1131. function getRandomColorCode() {
  1132. var letters = '0123456789ABCDEF';
  1133. var colorCode = '#';
  1134. for (var i = 0; i < 6; i++) {
  1135. colorCode += letters[Math.floor(Math.random() * 16)];
  1136. }
  1137. return colorCode;
  1138. }
  1139. function getVariables(callback) {
  1140. exports.BackgroundImage = GM_getValue('BackgroundImage', '');
  1141. exports.SiteIconImage = GM_getValue('SiteIconImage', '');
  1142. exports.SiteIconSmallImage = GM_getValue('SiteIconSmallImage', '');
  1143. exports.Academic = GM_getValue('Academic', false);
  1144. exports.Ligatures = GM_getValue('Ligatures', true);
  1145. exports.DarkthemeSelect = GM_getValue('Darktheme', "follow");
  1146. exports.Darktheme = (exports.DarkthemeSelect == 'light' || exports.DarkthemeSelect == 'dark') ? exports.DarkthemeSelect == 'dark' : (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches);
  1147. GM_xmlhttpRequest({
  1148. method: "GET",
  1149. url: "https://ex124oj.pond.ink/public/variables.json",
  1150. revalidate: true,
  1151. onload: function (data) {
  1152. var variables = JSON.parse(data.response);
  1153. var randomcolor = getRandomColorCode();
  1154. exports.NameColorList = variables.NameColorList;
  1155. for (var i in exports.NameColorList) {
  1156. for (var j = 0; j < exports.NameColorList[i].length; j++) {
  1157. if (exports.NameColorList[i][j] == 'rand') {
  1158. exports.NameColorList[i][j] = randomcolor;
  1159. }
  1160. }
  1161. }
  1162. exports.CCFBadgeList = variables.CCFBadgeList;
  1163. for (var i in exports.CCFBadgeList) {
  1164. for (var j = 0; j < exports.CCFBadgeList[i].length; j++) {
  1165. if (exports.CCFBadgeList[i][j] == 'rand') {
  1166. exports.CCFBadgeList[i][j] = randomcolor;
  1167. }
  1168. }
  1169. }
  1170. exports.TagBadgeList = variables.TagBadgeList;
  1171. for (var i in exports.TagBadgeList) {
  1172. for (var j = 0; j < exports.TagBadgeList[i].length; j++) {
  1173. if (exports.TagBadgeList[i][j].color == 'rand') {
  1174. exports.TagBadgeList[i][j].color = randomcolor;
  1175. }
  1176. }
  1177. }
  1178. callback();
  1179. }
  1180. });
  1181. }
  1182. exports.getVariables = getVariables;
  1183.  
  1184.  
  1185. /***/ })
  1186.  
  1187. /******/ });
  1188. /************************************************************************/
  1189. /******/ // The module cache
  1190. /******/ var __webpack_module_cache__ = {};
  1191. /******/
  1192. /******/ // The require function
  1193. /******/ function __webpack_require__(moduleId) {
  1194. /******/ // Check if module is in cache
  1195. /******/ var cachedModule = __webpack_module_cache__[moduleId];
  1196. /******/ if (cachedModule !== undefined) {
  1197. /******/ return cachedModule.exports;
  1198. /******/ }
  1199. /******/ // Create a new module (and put it into the cache)
  1200. /******/ var module = __webpack_module_cache__[moduleId] = {
  1201. /******/ // no module.id needed
  1202. /******/ // no module.loaded needed
  1203. /******/ exports: {}
  1204. /******/ };
  1205. /******/
  1206. /******/ // Execute the module function
  1207. /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
  1208. /******/
  1209. /******/ // Return the exports of the module
  1210. /******/ return module.exports;
  1211. /******/ }
  1212. /******/
  1213. /************************************************************************/
  1214. var __webpack_exports__ = {};
  1215. // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
  1216. (() => {
  1217. var exports = __webpack_exports__;
  1218. var __webpack_unused_export__;
  1219.  
  1220. /// <reference path="index.d.ts" />
  1221. __webpack_unused_export__ = ({ value: true });
  1222. var utils_1 = __webpack_require__(593);
  1223. var variables_1 = __webpack_require__(449);
  1224. var theme_1 = __webpack_require__(446);
  1225. var settings_1 = __webpack_require__(310);
  1226. var name_1 = __webpack_require__(819);
  1227. var appearance_1 = __webpack_require__(690);
  1228. var discussion_1 = __webpack_require__(992);
  1229. var code_1 = __webpack_require__(480);
  1230. var table_1 = __webpack_require__(900);
  1231. var toolbar_1 = __webpack_require__(720);
  1232. var announcement_1 = __webpack_require__(579);
  1233. var submission_1 = __webpack_require__(978);
  1234. var contest_1 = __webpack_require__(103);
  1235. var problem_1 = __webpack_require__(823);
  1236. var gravatar_1 = __webpack_require__(18);
  1237. (function () {
  1238. 'use strict';
  1239. var flag = false;
  1240. (0, variables_1.getVariables)(function () {
  1241. var tasks = function () {
  1242. (0, settings_1.Settings)();
  1243. (0, name_1.NameColor)();
  1244. (0, name_1.NameBadge)();
  1245. };
  1246. if (flag) {
  1247. tasks();
  1248. }
  1249. else {
  1250. window.onload = function () {
  1251. tasks();
  1252. if ((0, utils_1.isStandings)())
  1253. (0, contest_1.ContestStandings)();
  1254. };
  1255. }
  1256. });
  1257. (0, theme_1.Theme)();
  1258. document.addEventListener('DOMContentLoaded', function () {
  1259. (0, appearance_1.Background)();
  1260. (0, appearance_1.changeIcon)();
  1261. (0, discussion_1.DiscussionCard)();
  1262. (0, code_1.CodeCopy)();
  1263. (0, table_1.TableStyle)();
  1264. (0, toolbar_1.RandomProblem)();
  1265. if ((0, utils_1.isHomepage)())
  1266. (0, announcement_1.exAnnouncements)();
  1267. if ((0, utils_1.isSubmission)())
  1268. (0, submission_1.Submission)();
  1269. if ((0, utils_1.isContests)())
  1270. (0, contest_1.ContestsCard)();
  1271. if ((0, utils_1.isContest)())
  1272. (0, contest_1.ContestHome)();
  1273. if ((0, utils_1.isProblem)())
  1274. (0, problem_1.Problem)();
  1275. if ((0, utils_1.isUserProfile)() || (0, utils_1.isBlog)())
  1276. (0, gravatar_1.changeGravatarURL)();
  1277. });
  1278. window.onload = function () {
  1279. flag = true;
  1280. if ((0, utils_1.isStandings)())
  1281. (0, contest_1.ContestStandings)();
  1282. };
  1283. })();
  1284.  
  1285. })();
  1286.  
  1287. /******/ })()
  1288. ;