|
| 1 | +<!DOCTYPE html> |
| 2 | +<html lang="en" dir="auto"> |
| 3 | + |
| 4 | +<head><meta charset="utf-8"> |
| 5 | +<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| 6 | +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
| 7 | +<meta name="robots" content="index, follow"> |
| 8 | +<title>404 Page not found | PaperModX</title> |
| 9 | +<meta name="keywords" content=""> |
| 10 | +<meta name="description" content="Theme PaperModX - https://github.com/reorx/hugo-PaperModX"> |
| 11 | +<meta name="author" content="Reorx"> |
| 12 | +<link rel="canonical" href="https://reorx.github.io/404.html"> |
| 13 | +<link crossorigin="anonymous" href="/assets/css/stylesheet.min.7da7716a1f2d0725f74c6ae7f8d6adafc43aabe2b366b65bfbf433448e2a2001.css" integrity="sha256-fadxah8tByX3TGrn+Natr8Q6q+KzZrZb+/QzRI4qIAE=" rel="preload stylesheet" as="style"> |
| 14 | +<link rel="icon" href="https://reorx.github.io/favicon.ico"> |
| 15 | +<link rel="apple-touch-icon" href="https://reorx.github.io/apple-touch-icon.png"> |
| 16 | +<link rel="alternate" hreflang="en" href="https://reorx.github.io/404.html"> |
| 17 | +<link rel="alternate" hreflang="zh" href="https://reorx.github.io/zh/404.html"> |
| 18 | +<script async defer data-website-id="f4e3ad0a-7fc1-4f18-b08c-9be77b60cdd5" src="https://oishii.reorx.com/oishii.js"></script> |
| 19 | +<meta name="twitter:card" content="summary" /> |
| 20 | +<meta name="twitter:title" content="404 Page not found | PaperModX" /> |
| 21 | +<meta name="twitter:description" content="Theme PaperModX - https://github.com/reorx/hugo-PaperModX" /> |
| 22 | +<meta property="og:title" content="404 Page not found | PaperModX" /> |
| 23 | +<meta property="og:description" content="Theme PaperModX - https://github.com/reorx/hugo-PaperModX" /> |
| 24 | +<meta property="og:type" content="website" /> |
| 25 | +<meta property="og:url" content="https://reorx.github.io/404.html" /> |
| 26 | + <meta property="og:image" content="https://reorx.github.io/cover.png"/> |
| 27 | + |
| 28 | + |
| 29 | +<noscript> |
| 30 | + <style> |
| 31 | + #theme-toggle, |
| 32 | + .top-link { |
| 33 | + display: none; |
| 34 | + } |
| 35 | + |
| 36 | + </style> |
| 37 | + <style> |
| 38 | + @media (prefers-color-scheme: dark) { |
| 39 | + :root { |
| 40 | + --theme: rgb(29, 30, 32); |
| 41 | + --entry: rgb(46, 46, 51); |
| 42 | + --primary: rgb(218, 218, 219); |
| 43 | + --secondary: rgb(155, 156, 157); |
| 44 | + --tertiary-bg: rgb(65, 66, 68); |
| 45 | + --content: rgb(196, 196, 197); |
| 46 | + --code-bg: rgb(55, 56, 62); |
| 47 | + --border: rgb(51, 51, 51); |
| 48 | + } |
| 49 | + |
| 50 | + .list-page { |
| 51 | + background: var(--theme); |
| 52 | + } |
| 53 | + |
| 54 | + .list-page:not(.dark)::-webkit-scrollbar-track { |
| 55 | + background: 0 0; |
| 56 | + } |
| 57 | + |
| 58 | + .list-page:not(.dark)::-webkit-scrollbar-thumb { |
| 59 | + border-color: var(--theme); |
| 60 | + } |
| 61 | + } |
| 62 | + |
| 63 | + </style> |
| 64 | +</noscript> |
| 65 | + |
| 66 | +</head> |
| 67 | + |
| 68 | +<body class="list-page type-page kind-404 layout-" id="top"><script data-no-instant> |
| 69 | +function switchTheme(theme) { |
| 70 | + switch (theme) { |
| 71 | + case 'light': |
| 72 | + document.body.classList.remove('dark'); |
| 73 | + break; |
| 74 | + case 'dark': |
| 75 | + document.body.classList.add('dark'); |
| 76 | + break; |
| 77 | + |
| 78 | + default: |
| 79 | + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { |
| 80 | + document.body.classList.add('dark'); |
| 81 | + } |
| 82 | + } |
| 83 | +} |
| 84 | + |
| 85 | +function isDarkTheme() { |
| 86 | + return document.body.className.includes("dark"); |
| 87 | +} |
| 88 | + |
| 89 | +function getPrefTheme() { |
| 90 | + return localStorage.getItem("pref-theme"); |
| 91 | +} |
| 92 | + |
| 93 | +function setPrefTheme(theme) { |
| 94 | + switchTheme(theme) |
| 95 | + localStorage.setItem("pref-theme", theme); |
| 96 | +} |
| 97 | + |
| 98 | +const toggleThemeCallbacks = {} |
| 99 | +toggleThemeCallbacks['main'] = (isDark) => { |
| 100 | + |
| 101 | + if (isDark) { |
| 102 | + setPrefTheme('light'); |
| 103 | + } else { |
| 104 | + setPrefTheme('dark'); |
| 105 | + } |
| 106 | +} |
| 107 | + |
| 108 | + |
| 109 | + |
| 110 | + |
| 111 | +window.addEventListener('toggle-theme', function() { |
| 112 | + |
| 113 | + const isDark = isDarkTheme() |
| 114 | + for (const key in toggleThemeCallbacks) { |
| 115 | + toggleThemeCallbacks[key](isDark) |
| 116 | + } |
| 117 | +}); |
| 118 | + |
| 119 | + |
| 120 | +function toggleThemeListener() { |
| 121 | + |
| 122 | + window.dispatchEvent(new CustomEvent('toggle-theme')); |
| 123 | +} |
| 124 | + |
| 125 | +</script> |
| 126 | +<script> |
| 127 | + |
| 128 | + (function() { |
| 129 | + const defaultTheme = 'auto'; |
| 130 | + const prefTheme = getPrefTheme(); |
| 131 | + const theme = prefTheme ? prefTheme : defaultTheme; |
| 132 | + |
| 133 | + switchTheme(theme); |
| 134 | + })(); |
| 135 | +</script> |
| 136 | + |
| 137 | +<header class="header"> |
| 138 | + <nav class="nav"> |
| 139 | + <div class="logo"> |
| 140 | + <a href="https://reorx.github.io/" accesskey="h" title="PaperModX (Alt + H)">PaperModX</a> |
| 141 | + <span class="logo-switches"> |
| 142 | + <button id="theme-toggle" accesskey="t" title="(Alt + T)"> |
| 143 | + <svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" |
| 144 | + fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 145 | + stroke-linejoin="round"> |
| 146 | + <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path> |
| 147 | + </svg> |
| 148 | + <svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" |
| 149 | + fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 150 | + stroke-linejoin="round"> |
| 151 | + <circle cx="12" cy="12" r="5"></circle> |
| 152 | + <line x1="12" y1="1" x2="12" y2="3"></line> |
| 153 | + <line x1="12" y1="21" x2="12" y2="23"></line> |
| 154 | + <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> |
| 155 | + <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> |
| 156 | + <line x1="1" y1="12" x2="3" y2="12"></line> |
| 157 | + <line x1="21" y1="12" x2="23" y2="12"></line> |
| 158 | + <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> |
| 159 | + <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> |
| 160 | + </svg> |
| 161 | + </button> |
| 162 | + </span> |
| 163 | + </div> |
| 164 | + <ul id="menu"> |
| 165 | + <li> |
| 166 | + <a href="https://reorx.github.io/docs/" title="Docs" |
| 167 | + >Docs |
| 168 | + </a> |
| 169 | + </li> |
| 170 | + <li> |
| 171 | + <a href="https://reorx.github.io/newsletter/" title="Newsletter" |
| 172 | + >Newsletter |
| 173 | + </a> |
| 174 | + </li> |
| 175 | + <li> |
| 176 | + <a href="https://reorx.github.io/tags/" title="Tags" |
| 177 | + >Tags |
| 178 | + </a> |
| 179 | + </li> |
| 180 | + <li> |
| 181 | + <a href="https://reorx.github.io/archives/" title="Archive" |
| 182 | + >Archive |
| 183 | + </a> |
| 184 | + </li> |
| 185 | + <li> |
| 186 | + <a href="https://reorx.github.io/search/" title="Search" |
| 187 | + >Search |
| 188 | + </a> |
| 189 | + </li> |
| 190 | + <li> |
| 191 | + <a href="https://reorx.com/" title="@Author" target="_blank" |
| 192 | + >@Author<span class="external-link"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-external-link" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> |
| 193 | + <path stroke="none" d="M0 0h24v24H0z" fill="none"/> |
| 194 | + <path d="M11 7h-5a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-5" /> |
| 195 | + <line x1="10" y1="14" x2="20" y2="4" /> |
| 196 | + <polyline points="15 4 20 4 20 9" /> |
| 197 | +</svg> |
| 198 | +</span> |
| 199 | + </a> |
| 200 | + </li> |
| 201 | + </ul> |
| 202 | + </nav> |
| 203 | +</header> |
| 204 | +<main class="main"> |
| 205 | +<div class="not-found">404</div> |
| 206 | + </main> |
| 207 | + |
| 208 | +<footer class="footer"> |
| 209 | + <span>© 2025 <a href="https://reorx.github.io/">PaperModX</a></span><span style="display: inline-block; margin-left: 1em;"> |
| 210 | + <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA</a> |
| 211 | + </span> |
| 212 | + <span style="display: inline-block; margin-left: 1em;"> |
| 213 | + Powered by |
| 214 | + <a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> & |
| 215 | + <a href="https://github.com/reorx/hugo-PaperModX/" rel="noopener" target="_blank">PaperModX</a> |
| 216 | + </span> |
| 217 | +</footer> |
| 218 | +<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g"> |
| 219 | + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor"> |
| 220 | + <path d="M12 6H0l6-6z" /> |
| 221 | + </svg> |
| 222 | +</a> |
| 223 | + |
| 224 | +<script> |
| 225 | + (function() { |
| 226 | + |
| 227 | + const disableThemeToggle = '' == '1'; |
| 228 | + if (disableThemeToggle) { |
| 229 | + return; |
| 230 | + } |
| 231 | + |
| 232 | + let button = document.getElementById("theme-toggle") |
| 233 | + |
| 234 | + button.removeEventListener('click', toggleThemeListener) |
| 235 | + |
| 236 | + button.addEventListener('click', toggleThemeListener) |
| 237 | + })(); |
| 238 | +</script> |
| 239 | + |
| 240 | +<script> |
| 241 | + (function () { |
| 242 | + let menu = document.getElementById('menu') |
| 243 | + if (menu) { |
| 244 | + menu.scrollLeft = localStorage.getItem("menu-scroll-position"); |
| 245 | + menu.onscroll = function () { |
| 246 | + localStorage.setItem("menu-scroll-position", menu.scrollLeft); |
| 247 | + } |
| 248 | + } |
| 249 | + |
| 250 | + const disableSmoothScroll = '' == '1'; |
| 251 | + const enableInstantClick = '1' == '1'; |
| 252 | + |
| 253 | + if (window.matchMedia('(prefers-reduced-motion: reduce)').matches || disableSmoothScroll || enableInstantClick) { |
| 254 | + return; |
| 255 | + } |
| 256 | + |
| 257 | + document.querySelectorAll('a[href^="#"]').forEach(anchor => { |
| 258 | + anchor.addEventListener("click", function (e) { |
| 259 | + e.preventDefault(); |
| 260 | + var id = this.getAttribute("href").substr(1); |
| 261 | + document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({ |
| 262 | + behavior: "smooth" |
| 263 | + }); |
| 264 | + if (id === "top") { |
| 265 | + history.replaceState(null, null, " "); |
| 266 | + } else { |
| 267 | + history.pushState(null, null, `#${id}`); |
| 268 | + } |
| 269 | + }); |
| 270 | + }); |
| 271 | + })(); |
| 272 | +</script> |
| 273 | +<script> |
| 274 | + var mybutton = document.getElementById("top-link"); |
| 275 | + window.onscroll = function () { |
| 276 | + if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) { |
| 277 | + mybutton.style.visibility = "visible"; |
| 278 | + mybutton.style.opacity = "1"; |
| 279 | + } else { |
| 280 | + mybutton.style.visibility = "hidden"; |
| 281 | + mybutton.style.opacity = "0"; |
| 282 | + } |
| 283 | + }; |
| 284 | +</script> |
| 285 | +<script> |
| 286 | + if (window.scrollListeners) { |
| 287 | + |
| 288 | + for (const listener of scrollListeners) { |
| 289 | + window.removeEventListener('scroll', listener) |
| 290 | + } |
| 291 | + } |
| 292 | + window.scrollListeners = [] |
| 293 | +</script> |
| 294 | + |
| 295 | + |
| 296 | + |
| 297 | +<script src="/js/medium-zoom.min.js" data-no-instant |
| 298 | +></script> |
| 299 | +<script src="/js/instantclick.min.js" data-no-instant |
| 300 | +></script> |
| 301 | +<script data-no-instant> |
| 302 | + |
| 303 | + |
| 304 | + |
| 305 | + |
| 306 | + |
| 307 | + |
| 308 | + InstantClick.init(); |
| 309 | +</script> |
| 310 | +</body> |
| 311 | + |
| 312 | +</html> |
0 commit comments