Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jacobsun/edidor.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsun6eal <jacob.sun.meta@gmail.com>2019-05-20 09:03:55 +0300
committersun6eal <jacob.sun.meta@gmail.com>2019-05-20 09:03:55 +0300
commit935fb9933033c56115ffa7c7ece3e5648ae77bd5 (patch)
tree1794401e773d190e2536c29868743d848e89210e
parent91b7cf5c4bac458921daa7a717fdafae84a1c893 (diff)
update
-rw-r--r--README-zh.md2
-rw-r--r--README.md2
-rw-r--r--static/css/main.css654
-rw-r--r--static/js/main.js400
4 files changed, 77 insertions, 981 deletions
diff --git a/README-zh.md b/README-zh.md
index a887eec..9daacd4 100644
--- a/README-zh.md
+++ b/README-zh.md
@@ -25,7 +25,7 @@
# 特色
- 视口单位, 测试了从 1920 x 1080 到 to 320 x 568 的分辨率
-- 无框架, 为了性能使用了单独的lodash throttle函数
+- 无框架, 只有一个lodash的throttle函数, 和d3.ease 的一个easing 函数
- 所有图标都是mask-image svg, 可以随意改变颜色
- highlight.js 提供语法高亮, 可关闭从而不加载文件
- Disqus 评论
diff --git a/README.md b/README.md
index ac67631..8345079 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ I don't need to post more images, you can generate it by your self. Just head to
# Features
- viewport unit, test from 1920 x 1080 desktop to 320 x 568 mobile
-- No frameworks, only a Lodash throttle function for performance
+- No frameworks, only a Lodash `throttle` and an easing function from d3.ease
- All static icons are inline svgs, coloring available due to mask-image
- syntax hightlighting by highlight.js, can be turn off
- Disqus comment system
diff --git a/static/css/main.css b/static/css/main.css
index 994e174..cb6c0e5 100644
--- a/static/css/main.css
+++ b/static/css/main.css
@@ -1,653 +1 @@
-html {
- font-size: calc(1vh + 1vw); }
-
-body {
- margin: 0;
- word-break: break-all;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, WenQuanYi Micro Hei, sans-serif;
- overflow: hidden; }
-
-img {
- height: auto;
- width: 100%;
- max-width: 40vw; }
-
-.clearfix::after {
- content: "";
- display: table;
- clear: both; }
-
-.left {
- float: left; }
-
-.right {
- float: right; }
-
-.hide {
- height: 0;
- opacity: 0; }
-
-.btn {
- text-decoration: none;
- cursor: pointer; }
-
-.control {
- list-style-type: none;
- margin: 0;
- padding: 0; }
-
-.no-break {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap; }
-
-a:hover {
- text-decoration: none !important; }
-
-body.loaded .top {
- display: none; }
-
-body.loaded .bottom {
- display: none; }
-
-.top img.logo, .bottom img.logo {
- display: block;
- margin: 0 auto;
- position: relative; }
-
-.top, .bottom {
- position: absolute;
- width: 100vw;
- height: 50vh;
- z-index: 99999;
- overflow: hidden; }
-
-.top {
- background: #282C34;
- top: -50vh; }
- .top img.logo {
- bottom: -100%;
- -webkit-transform: translateY(-50%);
- transform: translateY(-50%); }
-
-.bottom {
- background: #282C34;
- top: 100vh; }
- .bottom img.logo {
- -webkit-transform: translateY(-50%);
- transform: translateY(-50%); }
-
-.header,
-.footer {
- height: 5vh; }
-
-.header a,
-.footer a {
- line-height: 5vh;
- display: block;
- padding-left: 0.8rem;
- padding-right: 0.8rem; }
-
-.header > ul,
-.footer ul {
- margin: 0 1vw; }
-
-.menu > li,
-.footer li {
- float: left; }
-
-.menu > li {
- position: relative; }
-
-.footer .social {
- float: left; }
-
-.footer .status {
- float: right; }
-
-.middle {
- height: 90vh; }
-
-.sidebar {
- width: 20vw;
- float: left; }
-
-.main {
- margin-left: 20vw;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- padding: 2vw 3vw;
- overflow-y: auto;
- position: relative; }
-
-.sidebar,
-.main {
- height: 100%; }
-
-.sidebar.hide {
- display: none; }
-
-.sidebar.hide + .main {
- margin-left: 0 !important; }
-
-.intro {
- text-align: center;
- position: absolute;
- top: 50%;
- left: 0;
- right: 0;
- -webkit-transform: translateY(-50%);
- transform: translateY(-50%); }
-
-.intro img.logo {
- display: inline; }
-
-.header ul ul {
- display: none;
- position: absolute;
- top: 100%;
- left: 0;
- width: 14em;
- z-index: 999; }
-
-.header li:hover > ul {
- display: block; }
-
-.main {
- font-size: 1rem;
- line-height: 2; }
-
-.header .sub-menu a {
- padding: 0 2vw; }
-
-.sidebar {
- overflow-y: auto; }
-
-.sidebar a {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap; }
-
-.sidebar a,
-.taxonomy-key {
- display: block; }
-
-.sidebar ul {
- margin-top: 1rem; }
-
-.sidebar a,
-.taxonomy-key {
- display: block;
- line-height: 2;
- padding: 0 2vw; }
-
-.logo-link {
- height: 5vh;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- padding-top: 1.2vh; }
-
-.logo {
- height: 70%;
- width: auto;
- display: block; }
-
-.logo-container {
- display: none; }
-
-body.wild-mode .logo-wild {
- display: list-item; }
-
-body.light-mode .logo-light {
- display: list-item; }
-
-body.dark-mode .logo-default {
- display: list-item; }
-
-body.wild-mode .intro .logo-wild {
- display: block; }
-
-body.light-mode .intro .logo-light {
- display: block; }
-
-body.dark-mode .intro .logo-default {
- display: block; }
-
-hr {
- margin: 1rem 0; }
-
-pre {
- overflow: auto;
- padding: 0.8rem 1rem; }
-
-code {
- overflow: auto;
- font-size: 0.8rem;
- font-family: 'Fira Code', Inconsolata, 'Deja Vu Sans Mono', 'Source Code Pro', Consolas, monospace;
- padding: 0.2rem 0.6rem; }
-
-.icon {
- width: 1rem;
- height: 1rem;
- display: inline-block; }
-
-.footer .icon {
- position: relative;
- top: 0.2rem; }
-
-.sidebar .icon {
- margin-right: 0.5rem;
- position: relative;
- top: 0.1rem; }
-
-.article-meta .icon {
- position: relative;
- top: calc(0.1rem + 2px); }
-
-.article-tags .icon {
- position: relative;
- top: -0.2rem; }
-
-.article-categories li:first-child .icon {
- top: calc(0.1rem + 1px); }
-
-.article {
- text-align: left; }
-
-.title {
- font-weight: bold;
- margin: 0 0 0.5rem 0; }
-
-.item {
- margin-bottom: 1rem; }
-
-.item .title {
- margin: 0; }
-
-.article-meta {
- font-size: 0.8rem;
- margin-bottom: 1rem; }
-
-.article-meta ul {
- list-style-type: none;
- margin: 0; }
-
-.article-meta-splitter {
- margin-bottom: 0.5rem; }
-
-.article-meta li {
- float: left;
- margin-right: 1rem;
- margin-bottom: 0.5rem; }
-
-.article-meta li:first-child {
- margin-right: 0.5rem; }
-
-.main .article-tags a {
- padding: 0rem 0.8rem;
- border-radius: 1px;
- display: block;
- line-height: 1.4; }
-
-.main p a {
- margin: 0 0.3rem; }
-
-.title a,
-.article-meta a,
-.list a,
-a.terms-title,
-.terms-list a,
-.pagination a {
- text-decoration: none; }
-
-.terms-list a {
- font-size: 0.8rem; }
-
-.pagination a {
- font-size: 0.8rem;
- padding: 0 0.5rem; }
-
-.pagination {
- position: absolute;
- left: 0;
- right: 0;
- bottom: 0;
- padding: 0 2rem; }
-
-.pagination ul {
- list-style-type: none;
- margin-left: 0; }
-
-/* prism toolbar */
-.code-toolbar > .toolbar a {
- border-bottom: none;
- display: block; }
-
-.local-info {
- font-size: 0.8rem;
- padding: 0.8rem;
- margin-bottom: 1rem; }
-
-.header a,
-.footer a,
-.sidebar a,
-.taxonomy-key {
- font-size: 0.81rem; }
-
-.main a {
- color: #99CCFF; }
-
-.main .article-tags a {
- background: #327E36;
- color: #FFF; }
-
-.local-info, .dialog label {
- background: #FFFF99;
- color: #333;
- -webkit-box-shadow: 2px 3px 1px 1px #000;
- box-shadow: 2px 3px 1px 1px #000; }
-
-/* man bg */
-body,
-.main,
-.header .menu > li:hover,
-.footer a:hover,
-.logo-link,
-.dialog {
- background: #282C34; }
-
-/* main fg */
-.main,
-blockquote.twitter-tweet,
-.header .sub-menu a,
-.sidebar a,
-.taxonomy-key,
-.main .title a,
-.dialog .title {
- color: #C6C6C7; }
-
-.icon {
- background: #C6C6C7; }
-
-/* main minor */
-.article-meta,
-.item-meta,
-.footnotes {
- color: #939BAB; }
-
-th,
-td {
- border-bottom: 1px solid #939BAB; }
-
-hr {
- border: 1px solid #939BAB; }
-
-.pagination {
- background: #939BAB; }
-
-/* sidebar bg */
-.sidebar {
- background: #16191D; }
-
-.header ul ul {
- -webkit-box-shadow: 0 0.1em 0.2em 0 #060606;
- box-shadow: 0 0.1em 0.2em 0 #060606; }
-
-.header ul ul,
-.pagination a:hover {
- background: #1A1D21; }
-
-code {
- background: #1A1C21; }
-
-/* sidebar minor */
-.count,
-.taxonomy-key {
- color: #939394; }
-
-/* header, footer bg */
-.header,
-.footer,
-.header .sub-menu li:hover,
-.sidebar a:hover {
- background: #21252B; }
-
-/* header, footer fg */
-.header a,
-.footer a,
-.footer time,
-.pagination a {
- color: #797D85; }
-
-.footer .icon {
- background-color: #797D85; }
-
-.main h1,
-.main h2,
-.main h3,
-.main h4,
-.main h5,
-.main h6 {
- text-shadow: 0 1px 1px #000; }
-
-.title {
- text-shadow: 0 1px 1px #000; }
-
-.dialog {
- width: 100vw;
- height: 0;
- position: absolute;
- top: 0;
- left: 0;
- z-index: 9999;
- overflow: hidden;
- font-size: 1rem; }
-
-.dialog .wrapper {
- padding: 1rem; }
-
-.dialog header, .dialog main, .dialog footer {
- margin-bottom: 2rem; }
-
-.dialog header {
- margin-top: -2rem; }
-
-.dialog div {
- margin-bottom: 1rem; }
-
-.dialog.show {
- height: 100vh; }
-
-.dialog label {
- display: block;
- margin-bottom: 1rem;
- padding: 0.8rem 1rem;
- -webkit-box-shadow: none;
- box-shadow: none; }
-
-.dialog input {
- padding: 0.3rem; }
-
-.dialog input, .dialog button {
- font-size: 1.2rem;
- float: right; }
-
-.dialog button {
- padding: 0.3rem 1rem;
- background: #3083FE;
- color: #FFF; }
-
-.dialog .close-dialog {
- font-size: 3rem;
- background: none;
- border: none; }
-
-.light-mode .dialog button {
- color: #3083FE; }
-
-.light-mode .main a {
- color: #3083FE; }
-
-.light-mode .main .article-tags a {
- background: #35CC81;
- color: #FFF; }
-
-.light-mode .local-info {
- background: #EFECAA;
- color: #000000;
- -webkit-box-shadow: none;
- box-shadow: none; }
-
-/* man bg */
-body.light-mode,
-.light-mode .main {
- background: #FFF; }
-
-/* main fg */
-.light-mode .main,
-.light-mode blockquote.twitter-tweet,
-.light-mode .sidebar a,
-.light-mode .taxonomy-key,
-.light-mode .main .title a,
-.light-mode .dialog .title {
- color: #4C4C4C; }
-
-.light-mode .icon {
- background: #4C4C4C; }
-
-/* main minor */
-.light-mode .article-meta,
-.light-mode .item-meta,
-.light-mode .footnotes {
- color: #999999; }
-
-.light-mode th,
-.light-mode td {
- border-bottom: 1px solid #CCCCCC; }
-
-.light-mode hr {
- border: 1px solid #CCCCCC; }
-
-.light-mode .pagination {
- background: #CCCCCC; }
-
-/* sidebar bg */
-.light-mode .sidebar {
- background: #EEEEEE; }
-
-.light-mode pre,
-.light-mode code {
- background: #DDD; }
-
-/* sidebar fg */
-.light-mode .sidebar a {
- color: #3F3F3F; }
-
-/* sidebar minor */
-.light-mode .count,
-.light-mode .taxonomy-key {
- color: #777777; }
-
-/* header, footer bg */
-.light-mode .header,
-.light-mode .footer,
-.light-mode .header .sub-menu li:hover,
-.light-mode .sidebar a:hover,
-.light-mode .logo-link,
-.light-mode .dialog,
-.light-mode .dialog button {
- background: #DDD; }
-
-.light-mode .header .menu > li:hover,
-.light-mode .footer a:hover {
- background: #CCCCCC; }
-
-/* sub-menu bg */
-.light-mode .header ul ul {
- -webkit-box-shadow: 0 0.1em 0.2em 0 #AAAAAA;
- box-shadow: 0 0.1em 0.2em 0 #AAAAAA; }
-
-.light-mode .header ul ul,
-.light-mode .pagination a:hover {
- background: #CCCCCC; }
-
-/* header, footer fg */
-.light-mode .header a,
-.light-mode .footer a,
-.light-mode .footer time,
-.light-mode .pagination a {
- color: #323232; }
-
-.light-mode .header .sub-menu a {
- color: #0B0B0B; }
-
-.light-mode .footer .icon {
- background-color: #323232; }
-
-.light-mode .main h1,
-.light-mode .main h2,
-.light-mode .main h3,
-.light-mode .main h4,
-.light-mode .main h5,
-.light-mode .main h6,
-.light-mode .title {
- text-shadow: none; }
-
-.light-mode .top, .light-mode .bottom {
- background: #DDD; }
-
-.wild-mode .main h1,
-.wild-mode .main h2,
-.wild-mode .main h3,
-.wild-mode .main h4,
-.wild-mode .main h5,
-.wild-mode .main h6,
-.wild-mode .title {
- text-shadow: none; }
-
-.wild-mode .local-info {
- -webkit-box-shadow: none;
- box-shadow: none; }
-
-.icon-tags {
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='pricetags'%3E%3Cpath d='M12.87 22a1.84 1.84 0 0 1-1.29-.53l-6.41-6.42a1 1 0 0 1-.29-.61L4 5.09a1 1 0 0 1 .29-.8 1 1 0 0 1 .8-.29l9.35.88a1 1 0 0 1 .61.29l6.42 6.41a1.82 1.82 0 0 1 0 2.57l-7.32 7.32a1.82 1.82 0 0 1-1.28.53zm-6-8.11l6 6 7.05-7.05-6-6-7.81-.73z'/%3E%3Ccircle cx='10.5' cy='10.5' r='1.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='pricetags'%3E%3Cpath d='M12.87 22a1.84 1.84 0 0 1-1.29-.53l-6.41-6.42a1 1 0 0 1-.29-.61L4 5.09a1 1 0 0 1 .29-.8 1 1 0 0 1 .8-.29l9.35.88a1 1 0 0 1 .61.29l6.42 6.41a1.82 1.82 0 0 1 0 2.57l-7.32 7.32a1.82 1.82 0 0 1-1.28.53zm-6-8.11l6 6 7.05-7.05-6-6-7.81-.73z'/%3E%3Ccircle cx='10.5' cy='10.5' r='1.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); }
-
-.icon-categories {
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19.5 20.5h-15A2.47 2.47 0 0 1 2 18.07V5.93A2.47 2.47 0 0 1 4.5 3.5h4.6a1 1 0 0 1 .77.37l2.6 3.18h7A2.47 2.47 0 0 1 22 9.48v8.59a2.47 2.47 0 0 1-2.5 2.43zM4 13.76v4.31a.46.46 0 0 0 .5.43h15a.46.46 0 0 0 .5-.43V9.48a.46.46 0 0 0-.5-.43H12a1 1 0 0 1-.77-.37L8.63 5.5H4.5a.46.46 0 0 0-.5.43z' data-name='folder'/%3E%3C/g%3E%3C/svg%3E");
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19.5 20.5h-15A2.47 2.47 0 0 1 2 18.07V5.93A2.47 2.47 0 0 1 4.5 3.5h4.6a1 1 0 0 1 .77.37l2.6 3.18h7A2.47 2.47 0 0 1 22 9.48v8.59a2.47 2.47 0 0 1-2.5 2.43zM4 13.76v4.31a.46.46 0 0 0 .5.43h15a.46.46 0 0 0 .5-.43V9.48a.46.46 0 0 0-.5-.43H12a1 1 0 0 1-.77-.37L8.63 5.5H4.5a.46.46 0 0 0-.5.43z' data-name='folder'/%3E%3C/g%3E%3C/svg%3E"); }
-
-.icon-post {
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='file-text'%3E%3Cpath d='M15 16H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2zM9 14h3a1 1 0 0 0 0-2H9a1 1 0 0 0 0 2z'/%3E%3Cpath d='M19.74 8.33l-5.44-6a1 1 0 0 0-.74-.33h-7A2.53 2.53 0 0 0 4 4.5v15A2.53 2.53 0 0 0 6.56 22h10.88A2.53 2.53 0 0 0 20 19.5V9a1 1 0 0 0-.26-.67zM14 5l2.74 3h-2a.79.79 0 0 1-.74-.85zm3.44 15H6.56a.53.53 0 0 1-.56-.5v-15a.53.53 0 0 1 .56-.5H12v3.15A2.79 2.79 0 0 0 14.71 10H18v9.5a.53.53 0 0 1-.56.5z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='file-text'%3E%3Cpath d='M15 16H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2zM9 14h3a1 1 0 0 0 0-2H9a1 1 0 0 0 0 2z'/%3E%3Cpath d='M19.74 8.33l-5.44-6a1 1 0 0 0-.74-.33h-7A2.53 2.53 0 0 0 4 4.5v15A2.53 2.53 0 0 0 6.56 22h10.88A2.53 2.53 0 0 0 20 19.5V9a1 1 0 0 0-.26-.67zM14 5l2.74 3h-2a.79.79 0 0 1-.74-.85zm3.44 15H6.56a.53.53 0 0 1-.56-.5v-15a.53.53 0 0 1 .56-.5H12v3.15A2.79 2.79 0 0 0 14.71 10H18v9.5a.53.53 0 0 1-.56.5z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); }
-
-.article-meta .icon-date {
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='calendar'%3E%3Cpath d='M18 4h-1V3a1 1 0 0 0-2 0v1H9V3a1 1 0 0 0-2 0v1H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zM6 6h1v1a1 1 0 0 0 2 0V6h6v1a1 1 0 0 0 2 0V6h1a1 1 0 0 1 1 1v4H5V7a1 1 0 0 1 1-1zm12 14H6a1 1 0 0 1-1-1v-6h14v6a1 1 0 0 1-1 1z'/%3E%3Ccircle cx='8' cy='16' r='1'/%3E%3Cpath d='M16 15h-4a1 1 0 0 0 0 2h4a1 1 0 0 0 0-2z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='calendar'%3E%3Cpath d='M18 4h-1V3a1 1 0 0 0-2 0v1H9V3a1 1 0 0 0-2 0v1H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zM6 6h1v1a1 1 0 0 0 2 0V6h6v1a1 1 0 0 0 2 0V6h1a1 1 0 0 1 1 1v4H5V7a1 1 0 0 1 1-1zm12 14H6a1 1 0 0 1-1-1v-6h14v6a1 1 0 0 1-1 1z'/%3E%3Ccircle cx='8' cy='16' r='1'/%3E%3Cpath d='M16 15h-4a1 1 0 0 0 0 2h4a1 1 0 0 0 0-2z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); }
-
-.github {
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M12 1A10.89 10.89 0 0 0 1 11.77 10.79 10.79 0 0 0 8.52 22c.55.1.75-.23.75-.52v-1.83c-3.06.65-3.71-1.44-3.71-1.44a2.86 2.86 0 0 0-1.22-1.58c-1-.66.08-.65.08-.65a2.31 2.31 0 0 1 1.68 1.11 2.37 2.37 0 0 0 3.2.89 2.33 2.33 0 0 1 .7-1.44c-2.44-.27-5-1.19-5-5.32a4.15 4.15 0 0 1 1.11-2.91 3.78 3.78 0 0 1 .11-2.84s.93-.29 3 1.1a10.68 10.68 0 0 1 5.5 0c2.1-1.39 3-1.1 3-1.1a3.78 3.78 0 0 1 .11 2.84A4.15 4.15 0 0 1 19 11.2c0 4.14-2.58 5.05-5 5.32a2.5 2.5 0 0 1 .75 2v2.95c0 .35.2.63.75.52A10.8 10.8 0 0 0 23 11.77 10.89 10.89 0 0 0 12 1' data-name='github'/%3E%3C/g%3E%3C/svg%3E");
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M12 1A10.89 10.89 0 0 0 1 11.77 10.79 10.79 0 0 0 8.52 22c.55.1.75-.23.75-.52v-1.83c-3.06.65-3.71-1.44-3.71-1.44a2.86 2.86 0 0 0-1.22-1.58c-1-.66.08-.65.08-.65a2.31 2.31 0 0 1 1.68 1.11 2.37 2.37 0 0 0 3.2.89 2.33 2.33 0 0 1 .7-1.44c-2.44-.27-5-1.19-5-5.32a4.15 4.15 0 0 1 1.11-2.91 3.78 3.78 0 0 1 .11-2.84s.93-.29 3 1.1a10.68 10.68 0 0 1 5.5 0c2.1-1.39 3-1.1 3-1.1a3.78 3.78 0 0 1 .11 2.84A4.15 4.15 0 0 1 19 11.2c0 4.14-2.58 5.05-5 5.32a2.5 2.5 0 0 1 .75 2v2.95c0 .35.2.63.75.52A10.8 10.8 0 0 0 23 11.77 10.89 10.89 0 0 0 12 1' data-name='github'/%3E%3C/g%3E%3C/svg%3E"); }
-
-.twitter {
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M8.08 20A11.07 11.07 0 0 0 19.52 9 8.09 8.09 0 0 0 21 6.16a.44.44 0 0 0-.62-.51 1.88 1.88 0 0 1-2.16-.38 3.89 3.89 0 0 0-5.58-.17A4.13 4.13 0 0 0 11.49 9C8.14 9.2 5.84 7.61 4 5.43a.43.43 0 0 0-.75.24 9.68 9.68 0 0 0 4.6 10.05A6.73 6.73 0 0 1 3.38 18a.45.45 0 0 0-.14.84A11 11 0 0 0 8.08 20' data-name='twitter'/%3E%3C/g%3E%3C/svg%3E");
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M8.08 20A11.07 11.07 0 0 0 19.52 9 8.09 8.09 0 0 0 21 6.16a.44.44 0 0 0-.62-.51 1.88 1.88 0 0 1-2.16-.38 3.89 3.89 0 0 0-5.58-.17A4.13 4.13 0 0 0 11.49 9C8.14 9.2 5.84 7.61 4 5.43a.43.43 0 0 0-.75.24 9.68 9.68 0 0 0 4.6 10.05A6.73 6.73 0 0 1 3.38 18a.45.45 0 0 0-.14.84A11 11 0 0 0 8.08 20' data-name='twitter'/%3E%3C/g%3E%3C/svg%3E"); }
-
-.facebook {
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M17 3.5a.5.5 0 0 0-.5-.5H14a4.77 4.77 0 0 0-5 4.5v2.7H6.5a.5.5 0 0 0-.5.5v2.6a.5.5 0 0 0 .5.5H9v6.7a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-6.7h2.62a.5.5 0 0 0 .49-.37l.72-2.6a.5.5 0 0 0-.48-.63H13V7.5a1 1 0 0 1 1-.9h2.5a.5.5 0 0 0 .5-.5z' data-name='facebook'/%3E%3C/g%3E%3C/svg%3E");
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M17 3.5a.5.5 0 0 0-.5-.5H14a4.77 4.77 0 0 0-5 4.5v2.7H6.5a.5.5 0 0 0-.5.5v2.6a.5.5 0 0 0 .5.5H9v6.7a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-6.7h2.62a.5.5 0 0 0 .49-.37l.72-2.6a.5.5 0 0 0-.48-.63H13V7.5a1 1 0 0 1 1-.9h2.5a.5.5 0 0 0 .5-.5z' data-name='facebook'/%3E%3C/g%3E%3C/svg%3E"); }
-
-.behance {
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='behance'%3E%3Cpath d='M14.76 11.19a1 1 0 0 0-1 1.09h2.06a1 1 0 0 0-1.06-1.09zM9.49 12.3H8.26v1.94h1c1 0 1.44-.33 1.44-1s-.46-.94-1.21-.94zM10.36 10.52c0-.53-.35-.85-.95-.85H8.26v1.74h.85c.89 0 1.25-.32 1.25-.89z'/%3E%3Cpath d='M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zM9.7 15.2H7V8.7h2.7c1.17 0 1.94.61 1.94 1.6a1.4 1.4 0 0 1-1.12 1.43A1.52 1.52 0 0 1 12 13.37c0 1.16-1 1.83-2.3 1.83zm3.55-6h3v.5h-3zM17 13.05h-3.3v.14a1.07 1.07 0 0 0 1.09 1.19.9.9 0 0 0 1-.63H17a2 2 0 0 1-2.17 1.55 2.15 2.15 0 0 1-2.36-2.3v-.44a2.11 2.11 0 0 1 2.28-2.25A2.12 2.12 0 0 1 17 12.58z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='behance'%3E%3Cpath d='M14.76 11.19a1 1 0 0 0-1 1.09h2.06a1 1 0 0 0-1.06-1.09zM9.49 12.3H8.26v1.94h1c1 0 1.44-.33 1.44-1s-.46-.94-1.21-.94zM10.36 10.52c0-.53-.35-.85-.95-.85H8.26v1.74h.85c.89 0 1.25-.32 1.25-.89z'/%3E%3Cpath d='M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zM9.7 15.2H7V8.7h2.7c1.17 0 1.94.61 1.94 1.6a1.4 1.4 0 0 1-1.12 1.43A1.52 1.52 0 0 1 12 13.37c0 1.16-1 1.83-2.3 1.83zm3.55-6h3v.5h-3zM17 13.05h-3.3v.14a1.07 1.07 0 0 0 1.09 1.19.9.9 0 0 0 1-.63H17a2 2 0 0 1-2.17 1.55 2.15 2.15 0 0 1-2.36-2.3v-.44a2.11 2.11 0 0 1 2.28-2.25A2.12 2.12 0 0 1 17 12.58z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); }
-
-.email {
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19 4H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zm0 2l-6.5 4.47a1 1 0 0 1-1 0L5 6z' data-name='email'/%3E%3C/g%3E%3C/svg%3E");
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19 4H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zm0 2l-6.5 4.47a1 1 0 0 1-1 0L5 6z' data-name='email'/%3E%3C/g%3E%3C/svg%3E"); }
-
-.rss {
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3Ccircle cx='6.18' cy='17.82' r='2.18'/%3E%3Cpath d='M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z'/%3E%3C/svg%3E");
- mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3Ccircle cx='6.18' cy='17.82' r='2.18'/%3E%3Cpath d='M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z'/%3E%3C/svg%3E"); }
-
+html{font-size:calc(1vh + 1vw)}body{margin:0;word-break:break-all;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif;overflow:hidden}img{height:auto;width:100%;max-width:40vw}.clearfix:after{content:"";display:table;clear:both}.left{float:left}.right{float:right}.hide{height:0;opacity:0}.btn{text-decoration:none;cursor:pointer}.control{list-style-type:none;margin:0;padding:0}.no-break{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}a:hover{text-decoration:none!important}body.loaded .bottom,body.loaded .top{display:none}.bottom img.logo,.top img.logo{display:block;margin:0 auto;position:relative}.bottom,.top{position:absolute;width:100vw;height:50vh;z-index:99999;overflow:hidden}.top{background:#282c34;top:-50vh}.top img.logo{bottom:-100%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.bottom{background:#282c34;top:100vh}.bottom img.logo{-webkit-transform:translateY(-50%);transform:translateY(-50%)}.footer,.header{height:5vh}.footer a,.header a{line-height:5vh;display:block;padding-left:.8rem;padding-right:.8rem}.footer ul,.header>ul{margin:0 1vw}.footer li,.menu>li{float:left}.menu>li{position:relative}.footer .social{float:left}.footer .status{float:right}.middle{height:90vh}.sidebar{width:20vw;float:left}.main{margin-left:20vw;-webkit-box-sizing:border-box;box-sizing:border-box;padding:2vw 3vw;overflow-y:auto;position:relative}.main,.sidebar{height:100%}.sidebar.hide{display:none}.sidebar.hide+.main{margin-left:0!important}.intro{text-align:center;position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.intro img.logo{display:inline}.header ul ul{display:none;position:absolute;top:100%;left:0;width:14em;z-index:999}.header li:hover>ul{display:block}.main{font-size:1rem;line-height:2}.header .sub-menu a{padding:0 2vw}.sidebar{overflow-y:auto}.sidebar a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar ul{margin-top:1rem}.sidebar a,.taxonomy-key{display:block;line-height:2;padding:0 2vw}.logo-link{height:5vh;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:1.2vh}.logo{height:70%;width:auto;display:block}.logo-container{display:none}body.dark-mode .logo-default,body.light-mode .logo-light,body.wild-mode .logo-wild{display:list-item}body.dark-mode .intro .logo-default,body.light-mode .intro .logo-light,body.wild-mode .intro .logo-wild{display:block}hr{margin:1rem 0}pre{padding:.8rem 1rem}code,pre{overflow:auto}code{font-size:.8rem;font-family:Fira Code,Inconsolata,Deja Vu Sans Mono,Source Code Pro,Consolas,monospace;padding:.2rem .6rem}.icon{width:1rem;height:1rem;display:inline-block}.footer .icon{position:relative;top:.2rem}.sidebar .icon{margin-right:.5rem;position:relative;top:.1rem}.article-meta .icon{position:relative;top:calc(.1rem + 2px)}.article-tags .icon{position:relative;top:-.2rem}.article-categories li:first-child .icon{top:calc(.1rem + 1px)}.article{text-align:left}.title{font-weight:700;margin:0 0 .5rem}.item{margin-bottom:1rem}.item .title{margin:0}.article-meta{font-size:.8rem;margin-bottom:1rem}.article-meta ul{list-style-type:none;margin:0}.article-meta-splitter,.article-meta li{margin-bottom:.5rem}.article-meta li{float:left;margin-right:1rem}.article-meta li:first-child{margin-right:.5rem}.main .article-tags a{padding:0 .8rem;border-radius:1px;display:block;line-height:1.4}.main p a{margin:0 .3rem}.article-meta a,.list a,.pagination a,.terms-list a,.title a,a.terms-title{text-decoration:none}.pagination a,.terms-list a{font-size:.8rem}.pagination a{padding:0 .5rem}.pagination{position:absolute;left:0;right:0;bottom:0;padding:0 2rem}.pagination ul{list-style-type:none;margin-left:0}.code-toolbar>.toolbar a{border-bottom:none;display:block}.local-info{font-size:.8rem;padding:.8rem;margin-bottom:1rem}.footer a,.header a,.sidebar a,.taxonomy-key{font-size:.81rem}.main a{color:#9cf}.main .article-tags a{background:#327e36;color:#fff}.dialog label,.local-info{background:#ff9;color:#333;-webkit-box-shadow:2px 3px 1px 1px #000;box-shadow:2px 3px 1px 1px #000}.dialog,.footer a:hover,.header .menu>li:hover,.logo-link,.main,body{background:#282c34}.dialog .title,.header .sub-menu a,.main,.main .title a,.sidebar a,.taxonomy-key,blockquote.twitter-tweet{color:#c6c6c7}.icon{background:#c6c6c7}.article-meta,.footnotes,.item-meta{color:#939bab}td,th{border-bottom:1px solid #939bab}hr{border:1px solid #939bab}.pagination{background:#939bab}.sidebar{background:#16191d}.header ul ul{-webkit-box-shadow:0 .1em .2em 0 #060606;box-shadow:0 .1em .2em 0 #060606}.header ul ul,.pagination a:hover{background:#1a1d21}code{background:#1a1c21}.count,.taxonomy-key{color:#939394}.footer,.header,.header .sub-menu li:hover,.sidebar a:hover{background:#21252b}.footer a,.footer time,.header a,.pagination a{color:#797d85}.footer .icon{background-color:#797d85}.main h1,.main h2,.main h3,.main h4,.main h5,.main h6,.title{text-shadow:0 1px 1px #000}.dialog{width:100vw;height:0;position:absolute;top:0;left:0;z-index:9999;overflow:hidden;font-size:1rem}.dialog .wrapper{padding:1rem}.dialog footer,.dialog header,.dialog main{margin-bottom:2rem}.dialog header{margin-top:-2rem}.dialog div{margin-bottom:1rem}.dialog.show{height:100vh}.dialog label{display:block;margin-bottom:1rem;padding:.8rem 1rem;-webkit-box-shadow:none;box-shadow:none}.dialog input{padding:.3rem}.dialog button,.dialog input{font-size:1.2rem;float:right}.dialog button{padding:.3rem 1rem;background:#3083fe;color:#fff}.dialog .close-dialog{font-size:3rem;background:none;border:none}.light-mode .dialog button,.light-mode .main a{color:#3083fe}.light-mode .main .article-tags a{background:#35cc81;color:#fff}.light-mode .local-info{background:#efecaa;color:#000;-webkit-box-shadow:none;box-shadow:none}.light-mode .main,body.light-mode{background:#fff}.light-mode .dialog .title,.light-mode .main,.light-mode .main .title a,.light-mode .sidebar a,.light-mode .taxonomy-key,.light-mode blockquote.twitter-tweet{color:#4c4c4c}.light-mode .icon{background:#4c4c4c}.light-mode .article-meta,.light-mode .footnotes,.light-mode .item-meta{color:#999}.light-mode td,.light-mode th{border-bottom:1px solid #ccc}.light-mode hr{border:1px solid #ccc}.light-mode .pagination{background:#ccc}.light-mode .sidebar{background:#eee}.light-mode code,.light-mode pre{background:#ddd}.light-mode .sidebar a{color:#3f3f3f}.light-mode .count,.light-mode .taxonomy-key{color:#777}.light-mode .dialog,.light-mode .dialog button,.light-mode .footer,.light-mode .header,.light-mode .header .sub-menu li:hover,.light-mode .logo-link,.light-mode .sidebar a:hover{background:#ddd}.light-mode .footer a:hover,.light-mode .header .menu>li:hover{background:#ccc}.light-mode .header ul ul{-webkit-box-shadow:0 .1em .2em 0 #aaa;box-shadow:0 .1em .2em 0 #aaa}.light-mode .header ul ul,.light-mode .pagination a:hover{background:#ccc}.light-mode .footer a,.light-mode .footer time,.light-mode .header a,.light-mode .pagination a{color:#323232}.light-mode .header .sub-menu a{color:#0b0b0b}.light-mode .footer .icon{background-color:#323232}.light-mode .main h1,.light-mode .main h2,.light-mode .main h3,.light-mode .main h4,.light-mode .main h5,.light-mode .main h6,.light-mode .title{text-shadow:none}.light-mode .bottom,.light-mode .top{background:#ddd}.wild-mode .main h1,.wild-mode .main h2,.wild-mode .main h3,.wild-mode .main h4,.wild-mode .main h5,.wild-mode .main h6,.wild-mode .title{text-shadow:none}.wild-mode .local-info{-webkit-box-shadow:none;box-shadow:none}.icon-tags{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='pricetags'%3E%3Cpath d='M12.87 22a1.84 1.84 0 0 1-1.29-.53l-6.41-6.42a1 1 0 0 1-.29-.61L4 5.09a1 1 0 0 1 .29-.8 1 1 0 0 1 .8-.29l9.35.88a1 1 0 0 1 .61.29l6.42 6.41a1.82 1.82 0 0 1 0 2.57l-7.32 7.32a1.82 1.82 0 0 1-1.28.53zm-6-8.11l6 6 7.05-7.05-6-6-7.81-.73z'/%3E%3Ccircle cx='10.5' cy='10.5' r='1.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='pricetags'%3E%3Cpath d='M12.87 22a1.84 1.84 0 0 1-1.29-.53l-6.41-6.42a1 1 0 0 1-.29-.61L4 5.09a1 1 0 0 1 .29-.8 1 1 0 0 1 .8-.29l9.35.88a1 1 0 0 1 .61.29l6.42 6.41a1.82 1.82 0 0 1 0 2.57l-7.32 7.32a1.82 1.82 0 0 1-1.28.53zm-6-8.11l6 6 7.05-7.05-6-6-7.81-.73z'/%3E%3Ccircle cx='10.5' cy='10.5' r='1.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.icon-categories{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19.5 20.5h-15A2.47 2.47 0 0 1 2 18.07V5.93A2.47 2.47 0 0 1 4.5 3.5h4.6a1 1 0 0 1 .77.37l2.6 3.18h7A2.47 2.47 0 0 1 22 9.48v8.59a2.47 2.47 0 0 1-2.5 2.43zM4 13.76v4.31a.46.46 0 0 0 .5.43h15a.46.46 0 0 0 .5-.43V9.48a.46.46 0 0 0-.5-.43H12a1 1 0 0 1-.77-.37L8.63 5.5H4.5a.46.46 0 0 0-.5.43z' data-name='folder'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19.5 20.5h-15A2.47 2.47 0 0 1 2 18.07V5.93A2.47 2.47 0 0 1 4.5 3.5h4.6a1 1 0 0 1 .77.37l2.6 3.18h7A2.47 2.47 0 0 1 22 9.48v8.59a2.47 2.47 0 0 1-2.5 2.43zM4 13.76v4.31a.46.46 0 0 0 .5.43h15a.46.46 0 0 0 .5-.43V9.48a.46.46 0 0 0-.5-.43H12a1 1 0 0 1-.77-.37L8.63 5.5H4.5a.46.46 0 0 0-.5.43z' data-name='folder'/%3E%3C/g%3E%3C/svg%3E")}.icon-post{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='file-text'%3E%3Cpath d='M15 16H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2zm-6-2h3a1 1 0 0 0 0-2H9a1 1 0 0 0 0 2z'/%3E%3Cpath d='M19.74 8.33l-5.44-6a1 1 0 0 0-.74-.33h-7A2.53 2.53 0 0 0 4 4.5v15A2.53 2.53 0 0 0 6.56 22h10.88A2.53 2.53 0 0 0 20 19.5V9a1 1 0 0 0-.26-.67zM14 5l2.74 3h-2a.79.79 0 0 1-.74-.85zm3.44 15H6.56a.53.53 0 0 1-.56-.5v-15a.53.53 0 0 1 .56-.5H12v3.15A2.79 2.79 0 0 0 14.71 10H18v9.5a.53.53 0 0 1-.56.5z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='file-text'%3E%3Cpath d='M15 16H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2zm-6-2h3a1 1 0 0 0 0-2H9a1 1 0 0 0 0 2z'/%3E%3Cpath d='M19.74 8.33l-5.44-6a1 1 0 0 0-.74-.33h-7A2.53 2.53 0 0 0 4 4.5v15A2.53 2.53 0 0 0 6.56 22h10.88A2.53 2.53 0 0 0 20 19.5V9a1 1 0 0 0-.26-.67zM14 5l2.74 3h-2a.79.79 0 0 1-.74-.85zm3.44 15H6.56a.53.53 0 0 1-.56-.5v-15a.53.53 0 0 1 .56-.5H12v3.15A2.79 2.79 0 0 0 14.71 10H18v9.5a.53.53 0 0 1-.56.5z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.article-meta .icon-date{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='calendar'%3E%3Cpath d='M18 4h-1V3a1 1 0 0 0-2 0v1H9V3a1 1 0 0 0-2 0v1H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zM6 6h1v1a1 1 0 0 0 2 0V6h6v1a1 1 0 0 0 2 0V6h1a1 1 0 0 1 1 1v4H5V7a1 1 0 0 1 1-1zm12 14H6a1 1 0 0 1-1-1v-6h14v6a1 1 0 0 1-1 1z'/%3E%3Ccircle cx='8' cy='16' r='1'/%3E%3Cpath d='M16 15h-4a1 1 0 0 0 0 2h4a1 1 0 0 0 0-2z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='calendar'%3E%3Cpath d='M18 4h-1V3a1 1 0 0 0-2 0v1H9V3a1 1 0 0 0-2 0v1H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zM6 6h1v1a1 1 0 0 0 2 0V6h6v1a1 1 0 0 0 2 0V6h1a1 1 0 0 1 1 1v4H5V7a1 1 0 0 1 1-1zm12 14H6a1 1 0 0 1-1-1v-6h14v6a1 1 0 0 1-1 1z'/%3E%3Ccircle cx='8' cy='16' r='1'/%3E%3Cpath d='M16 15h-4a1 1 0 0 0 0 2h4a1 1 0 0 0 0-2z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.github{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M12 1A10.89 10.89 0 0 0 1 11.77 10.79 10.79 0 0 0 8.52 22c.55.1.75-.23.75-.52v-1.83c-3.06.65-3.71-1.44-3.71-1.44a2.86 2.86 0 0 0-1.22-1.58c-1-.66.08-.65.08-.65a2.31 2.31 0 0 1 1.68 1.11 2.37 2.37 0 0 0 3.2.89 2.33 2.33 0 0 1 .7-1.44c-2.44-.27-5-1.19-5-5.32a4.15 4.15 0 0 1 1.11-2.91 3.78 3.78 0 0 1 .11-2.84s.93-.29 3 1.1a10.68 10.68 0 0 1 5.5 0c2.1-1.39 3-1.1 3-1.1a3.78 3.78 0 0 1 .11 2.84A4.15 4.15 0 0 1 19 11.2c0 4.14-2.58 5.05-5 5.32a2.5 2.5 0 0 1 .75 2v2.95c0 .35.2.63.75.52A10.8 10.8 0 0 0 23 11.77 10.89 10.89 0 0 0 12 1' data-name='github'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M12 1A10.89 10.89 0 0 0 1 11.77 10.79 10.79 0 0 0 8.52 22c.55.1.75-.23.75-.52v-1.83c-3.06.65-3.71-1.44-3.71-1.44a2.86 2.86 0 0 0-1.22-1.58c-1-.66.08-.65.08-.65a2.31 2.31 0 0 1 1.68 1.11 2.37 2.37 0 0 0 3.2.89 2.33 2.33 0 0 1 .7-1.44c-2.44-.27-5-1.19-5-5.32a4.15 4.15 0 0 1 1.11-2.91 3.78 3.78 0 0 1 .11-2.84s.93-.29 3 1.1a10.68 10.68 0 0 1 5.5 0c2.1-1.39 3-1.1 3-1.1a3.78 3.78 0 0 1 .11 2.84A4.15 4.15 0 0 1 19 11.2c0 4.14-2.58 5.05-5 5.32a2.5 2.5 0 0 1 .75 2v2.95c0 .35.2.63.75.52A10.8 10.8 0 0 0 23 11.77 10.89 10.89 0 0 0 12 1' data-name='github'/%3E%3C/g%3E%3C/svg%3E")}.twitter{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M8.08 20A11.07 11.07 0 0 0 19.52 9 8.09 8.09 0 0 0 21 6.16a.44.44 0 0 0-.62-.51 1.88 1.88 0 0 1-2.16-.38 3.89 3.89 0 0 0-5.58-.17A4.13 4.13 0 0 0 11.49 9C8.14 9.2 5.84 7.61 4 5.43a.43.43 0 0 0-.75.24 9.68 9.68 0 0 0 4.6 10.05A6.73 6.73 0 0 1 3.38 18a.45.45 0 0 0-.14.84A11 11 0 0 0 8.08 20' data-name='twitter'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M8.08 20A11.07 11.07 0 0 0 19.52 9 8.09 8.09 0 0 0 21 6.16a.44.44 0 0 0-.62-.51 1.88 1.88 0 0 1-2.16-.38 3.89 3.89 0 0 0-5.58-.17A4.13 4.13 0 0 0 11.49 9C8.14 9.2 5.84 7.61 4 5.43a.43.43 0 0 0-.75.24 9.68 9.68 0 0 0 4.6 10.05A6.73 6.73 0 0 1 3.38 18a.45.45 0 0 0-.14.84A11 11 0 0 0 8.08 20' data-name='twitter'/%3E%3C/g%3E%3C/svg%3E")}.facebook{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M17 3.5a.5.5 0 0 0-.5-.5H14a4.77 4.77 0 0 0-5 4.5v2.7H6.5a.5.5 0 0 0-.5.5v2.6a.5.5 0 0 0 .5.5H9v6.7a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-6.7h2.62a.5.5 0 0 0 .49-.37l.72-2.6a.5.5 0 0 0-.48-.63H13V7.5a1 1 0 0 1 1-.9h2.5a.5.5 0 0 0 .5-.5z' data-name='facebook'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M17 3.5a.5.5 0 0 0-.5-.5H14a4.77 4.77 0 0 0-5 4.5v2.7H6.5a.5.5 0 0 0-.5.5v2.6a.5.5 0 0 0 .5.5H9v6.7a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-6.7h2.62a.5.5 0 0 0 .49-.37l.72-2.6a.5.5 0 0 0-.48-.63H13V7.5a1 1 0 0 1 1-.9h2.5a.5.5 0 0 0 .5-.5z' data-name='facebook'/%3E%3C/g%3E%3C/svg%3E")}.behance{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='behance'%3E%3Cpath d='M14.76 11.19a1 1 0 0 0-1 1.09h2.06a1 1 0 0 0-1.06-1.09zM9.49 12.3H8.26v1.94h1c1 0 1.44-.33 1.44-1s-.46-.94-1.21-.94zm.87-1.78c0-.53-.35-.85-.95-.85H8.26v1.74h.85c.89 0 1.25-.32 1.25-.89z'/%3E%3Cpath d='M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zM9.7 15.2H7V8.7h2.7c1.17 0 1.94.61 1.94 1.6a1.4 1.4 0 0 1-1.12 1.43A1.52 1.52 0 0 1 12 13.37c0 1.16-1 1.83-2.3 1.83zm3.55-6h3v.5h-3zM17 13.05h-3.3v.14a1.07 1.07 0 0 0 1.09 1.19.9.9 0 0 0 1-.63H17a2 2 0 0 1-2.17 1.55 2.15 2.15 0 0 1-2.36-2.3v-.44a2.11 2.11 0 0 1 2.28-2.25A2.12 2.12 0 0 1 17 12.58z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='behance'%3E%3Cpath d='M14.76 11.19a1 1 0 0 0-1 1.09h2.06a1 1 0 0 0-1.06-1.09zM9.49 12.3H8.26v1.94h1c1 0 1.44-.33 1.44-1s-.46-.94-1.21-.94zm.87-1.78c0-.53-.35-.85-.95-.85H8.26v1.74h.85c.89 0 1.25-.32 1.25-.89z'/%3E%3Cpath d='M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zM9.7 15.2H7V8.7h2.7c1.17 0 1.94.61 1.94 1.6a1.4 1.4 0 0 1-1.12 1.43A1.52 1.52 0 0 1 12 13.37c0 1.16-1 1.83-2.3 1.83zm3.55-6h3v.5h-3zM17 13.05h-3.3v.14a1.07 1.07 0 0 0 1.09 1.19.9.9 0 0 0 1-.63H17a2 2 0 0 1-2.17 1.55 2.15 2.15 0 0 1-2.36-2.3v-.44a2.11 2.11 0 0 1 2.28-2.25A2.12 2.12 0 0 1 17 12.58z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.email{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19 4H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zm0 2l-6.5 4.47a1 1 0 0 1-1 0L5 6z' data-name='email'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19 4H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zm0 2l-6.5 4.47a1 1 0 0 1-1 0L5 6z' data-name='email'/%3E%3C/g%3E%3C/svg%3E")}.rss{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3Ccircle cx='6.18' cy='17.82' r='2.18'/%3E%3Cpath d='M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3Ccircle cx='6.18' cy='17.82' r='2.18'/%3E%3Cpath d='M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z'/%3E%3C/svg%3E")} \ No newline at end of file
diff --git a/static/js/main.js b/static/js/main.js
index 4fb899f..bf8650d 100644
--- a/static/js/main.js
+++ b/static/js/main.js
@@ -1,326 +1,74 @@
-/******/ (function(modules) { // webpackBootstrap
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId]) {
-/******/ return installedModules[moduleId].exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ i: moduleId,
-/******/ l: false,
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.l = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = modules;
-/******/
-/******/ // expose the module cache
-/******/ __webpack_require__.c = installedModules;
-/******/
-/******/ // define getter function for harmony exports
-/******/ __webpack_require__.d = function(exports, name, getter) {
-/******/ if(!__webpack_require__.o(exports, name)) {
-/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/ }
-/******/ };
-/******/
-/******/ // define __esModule on exports
-/******/ __webpack_require__.r = function(exports) {
-/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ }
-/******/ Object.defineProperty(exports, '__esModule', { value: true });
-/******/ };
-/******/
-/******/ // create a fake namespace object
-/******/ // mode & 1: value is a module id, require it
-/******/ // mode & 2: merge all properties of value into the ns
-/******/ // mode & 4: return value when already ns object
-/******/ // mode & 8|1: behave like require
-/******/ __webpack_require__.t = function(value, mode) {
-/******/ if(mode & 1) value = __webpack_require__(value);
-/******/ if(mode & 8) return value;
-/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/ var ns = Object.create(null);
-/******/ __webpack_require__.r(ns);
-/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/ return ns;
-/******/ };
-/******/
-/******/ // getDefaultExport function for compatibility with non-harmony modules
-/******/ __webpack_require__.n = function(module) {
-/******/ var getter = module && module.__esModule ?
-/******/ function getDefault() { return module['default']; } :
-/******/ function getModuleExports() { return module; };
-/******/ __webpack_require__.d(getter, 'a', getter);
-/******/ return getter;
-/******/ };
-/******/
-/******/ // Object.prototype.hasOwnProperty.call
-/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "";
-/******/
-/******/
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ "./node_modules/d3-ease/src/back.js":
-/*!******************************************!*\
- !*** ./node_modules/d3-ease/src/back.js ***!
- \******************************************/
-/*! exports provided: backIn, backOut, backInOut */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backIn\", function() { return backIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backOut\", function() { return backOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backInOut\", function() { return backInOut; });\nvar overshoot = 1.70158;\n\nvar backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nvar backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nvar backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/back.js?");
-
-/***/ }),
-
-/***/ "./node_modules/d3-ease/src/bounce.js":
-/*!********************************************!*\
- !*** ./node_modules/d3-ease/src/bounce.js ***!
- \********************************************/
-/*! exports provided: bounceIn, bounceOut, bounceInOut */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceIn\", function() { return bounceIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceOut\", function() { return bounceOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceInOut\", function() { return bounceInOut; });\nvar b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nfunction bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nfunction bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nfunction bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/bounce.js?");
-
-/***/ }),
-
-/***/ "./node_modules/d3-ease/src/circle.js":
-/*!********************************************!*\
- !*** ./node_modules/d3-ease/src/circle.js ***!
- \********************************************/
-/*! exports provided: circleIn, circleOut, circleInOut */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleIn\", function() { return circleIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleOut\", function() { return circleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleInOut\", function() { return circleInOut; });\nfunction circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nfunction circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nfunction circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/circle.js?");
-
-/***/ }),
-
-/***/ "./node_modules/d3-ease/src/cubic.js":
-/*!*******************************************!*\
- !*** ./node_modules/d3-ease/src/cubic.js ***!
- \*******************************************/
-/*! exports provided: cubicIn, cubicOut, cubicInOut */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicIn\", function() { return cubicIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicOut\", function() { return cubicOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicInOut\", function() { return cubicInOut; });\nfunction cubicIn(t) {\n return t * t * t;\n}\n\nfunction cubicOut(t) {\n return --t * t * t + 1;\n}\n\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/cubic.js?");
-
-/***/ }),
-
-/***/ "./node_modules/d3-ease/src/elastic.js":
-/*!*********************************************!*\
- !*** ./node_modules/d3-ease/src/elastic.js ***!
- \*********************************************/
-/*! exports provided: elasticIn, elasticOut, elasticInOut */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticIn\", function() { return elasticIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticOut\", function() { return elasticOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticInOut\", function() { return elasticInOut; });\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nvar elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nvar elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nvar elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/elastic.js?");
-
-/***/ }),
-
-/***/ "./node_modules/d3-ease/src/exp.js":
-/*!*****************************************!*\
- !*** ./node_modules/d3-ease/src/exp.js ***!
- \*****************************************/
-/*! exports provided: expIn, expOut, expInOut */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expIn\", function() { return expIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expOut\", function() { return expOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expInOut\", function() { return expInOut; });\nfunction expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nfunction expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nfunction expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/exp.js?");
-
-/***/ }),
-
-/***/ "./node_modules/d3-ease/src/index.js":
-/*!*******************************************!*\
- !*** ./node_modules/d3-ease/src/index.js ***!
- \*******************************************/
-/*! exports provided: easeLinear, easeQuad, easeQuadIn, easeQuadOut, easeQuadInOut, easeCubic, easeCubicIn, easeCubicOut, easeCubicInOut, easePoly, easePolyIn, easePolyOut, easePolyInOut, easeSin, easeSinIn, easeSinOut, easeSinInOut, easeExp, easeExpIn, easeExpOut, easeExpInOut, easeCircle, easeCircleIn, easeCircleOut, easeCircleInOut, easeBounce, easeBounceIn, easeBounceOut, easeBounceInOut, easeBack, easeBackIn, easeBackOut, easeBackInOut, easeElastic, easeElasticIn, easeElasticOut, easeElasticInOut */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear */ \"./node_modules/d3-ease/src/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeLinear\", function() { return _linear__WEBPACK_IMPORTED_MODULE_0__[\"linear\"]; });\n\n/* harmony import */ var _quad__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quad */ \"./node_modules/d3-ease/src/quad.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuad\", function() { return _quad__WEBPACK_IMPORTED_MODULE_1__[\"quadInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadIn\", function() { return _quad__WEBPACK_IMPORTED_MODULE_1__[\"quadIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadOut\", function() { return _quad__WEBPACK_IMPORTED_MODULE_1__[\"quadOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadInOut\", function() { return _quad__WEBPACK_IMPORTED_MODULE_1__[\"quadInOut\"]; });\n\n/* harmony import */ var _cubic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubic */ \"./node_modules/d3-ease/src/cubic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubic\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicIn\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicOut\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicInOut\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicInOut\"]; });\n\n/* harmony import */ var _poly__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./poly */ \"./node_modules/d3-ease/src/poly.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePoly\", function() { return _poly__WEBPACK_IMPORTED_MODULE_3__[\"polyInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyIn\", function() { return _poly__WEBPACK_IMPORTED_MODULE_3__[\"polyIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyOut\", function() { return _poly__WEBPACK_IMPORTED_MODULE_3__[\"polyOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyInOut\", function() { return _poly__WEBPACK_IMPORTED_MODULE_3__[\"polyInOut\"]; });\n\n/* harmony import */ var _sin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sin */ \"./node_modules/d3-ease/src/sin.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSin\", function() { return _sin__WEBPACK_IMPORTED_MODULE_4__[\"sinInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinIn\", function() { return _sin__WEBPACK_IMPORTED_MODULE_4__[\"sinIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinOut\", function() { return _sin__WEBPACK_IMPORTED_MODULE_4__[\"sinOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinInOut\", function() { return _sin__WEBPACK_IMPORTED_MODULE_4__[\"sinInOut\"]; });\n\n/* harmony import */ var _exp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exp */ \"./node_modules/d3-ease/src/exp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExp\", function() { return _exp__WEBPACK_IMPORTED_MODULE_5__[\"expInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpIn\", function() { return _exp__WEBPACK_IMPORTED_MODULE_5__[\"expIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpOut\", function() { return _exp__WEBPACK_IMPORTED_MODULE_5__[\"expOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpInOut\", function() { return _exp__WEBPACK_IMPORTED_MODULE_5__[\"expInOut\"]; });\n\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./circle */ \"./node_modules/d3-ease/src/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircle\", function() { return _circle__WEBPACK_IMPORTED_MODULE_6__[\"circleInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleIn\", function() { return _circle__WEBPACK_IMPORTED_MODULE_6__[\"circleIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleOut\", function() { return _circle__WEBPACK_IMPORTED_MODULE_6__[\"circleOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleInOut\", function() { return _circle__WEBPACK_IMPORTED_MODULE_6__[\"circleInOut\"]; });\n\n/* harmony import */ var _bounce__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./bounce */ \"./node_modules/d3-ease/src/bounce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounce\", function() { return _bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceIn\", function() { return _bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceOut\", function() { return _bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceInOut\", function() { return _bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceInOut\"]; });\n\n/* harmony import */ var _back__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./back */ \"./node_modules/d3-ease/src/back.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBack\", function() { return _back__WEBPACK_IMPORTED_MODULE_8__[\"backInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackIn\", function() { return _back__WEBPACK_IMPORTED_MODULE_8__[\"backIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackOut\", function() { return _back__WEBPACK_IMPORTED_MODULE_8__[\"backOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackInOut\", function() { return _back__WEBPACK_IMPORTED_MODULE_8__[\"backInOut\"]; });\n\n/* harmony import */ var _elastic__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./elastic */ \"./node_modules/d3-ease/src/elastic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElastic\", function() { return _elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticIn\", function() { return _elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticOut\", function() { return _elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticInOut\", function() { return _elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticInOut\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/d3-ease/src/linear.js":
-/*!********************************************!*\
- !*** ./node_modules/d3-ease/src/linear.js ***!
- \********************************************/
-/*! exports provided: linear */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linear\", function() { return linear; });\nfunction linear(t) {\n return +t;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/linear.js?");
-
-/***/ }),
-
-/***/ "./node_modules/d3-ease/src/poly.js":
-/*!******************************************!*\
- !*** ./node_modules/d3-ease/src/poly.js ***!
- \******************************************/
-/*! exports provided: polyIn, polyOut, polyInOut */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyIn\", function() { return polyIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyOut\", function() { return polyOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyInOut\", function() { return polyInOut; });\nvar exponent = 3;\n\nvar polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nvar polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nvar polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/poly.js?");
-
-/***/ }),
-
-/***/ "./node_modules/d3-ease/src/quad.js":
-/*!******************************************!*\
- !*** ./node_modules/d3-ease/src/quad.js ***!
- \******************************************/
-/*! exports provided: quadIn, quadOut, quadInOut */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadIn\", function() { return quadIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadOut\", function() { return quadOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadInOut\", function() { return quadInOut; });\nfunction quadIn(t) {\n return t * t;\n}\n\nfunction quadOut(t) {\n return t * (2 - t);\n}\n\nfunction quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/quad.js?");
-
-/***/ }),
-
-/***/ "./node_modules/d3-ease/src/sin.js":
-/*!*****************************************!*\
- !*** ./node_modules/d3-ease/src/sin.js ***!
- \*****************************************/
-/*! exports provided: sinIn, sinOut, sinInOut */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinIn\", function() { return sinIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinOut\", function() { return sinOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinInOut\", function() { return sinInOut; });\nvar pi = Math.PI,\n halfPi = pi / 2;\n\nfunction sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nfunction sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nfunction sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/sin.js?");
-
-/***/ }),
-
-/***/ "./node_modules/lodash.throttle/index.js":
-/*!***********************************************!*\
- !*** ./node_modules/lodash.throttle/index.js ***!
- \***********************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("/* WEBPACK VAR INJECTION */(function(global) {/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/lodash.throttle/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/webpack/buildin/global.js":
-/*!***********************************!*\
- !*** (webpack)/buildin/global.js ***!
- \***********************************/
-/*! no static exports found */
-/***/ (function(module, exports) {
-
-eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n//# sourceURL=webpack:///(webpack)/buildin/global.js?");
-
-/***/ }),
-
-/***/ "./src/css/main.scss":
-/*!***************************!*\
- !*** ./src/css/main.scss ***!
- \***************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/css/main.scss?");
-
-/***/ }),
-
-/***/ "./src/index.js":
-/*!**********************!*\
- !*** ./src/index.js ***!
- \**********************/
-/*! no exports provided */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _css_main_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./css/main.scss */ \"./src/css/main.scss\");\n/* harmony import */ var _css_main_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_main_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _js_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./js/helpers */ \"./src/js/helpers.js\");\n/* harmony import */ var _js_main__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./js/main */ \"./src/js/main.js\");\n/* harmony import */ var _js_loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./js/loader */ \"./src/js/loader.js\");\n\n\n\n\nconst loader = Object(_js_loader__WEBPACK_IMPORTED_MODULE_3__[\"getLoader\"])()\nObject(_js_helpers__WEBPACK_IMPORTED_MODULE_1__[\"onEvent\"])('DOMContentLoaded', e => {\n console.log('page loaded!', Date.now())\n loader.loading()\n const doms = {}\n doms.pane = Object(_js_helpers__WEBPACK_IMPORTED_MODULE_1__[\"qs\"])('.sidebar')\n doms.main = Object(_js_helpers__WEBPACK_IMPORTED_MODULE_1__[\"qs\"])('.main')\n doms.cloak = Object(_js_helpers__WEBPACK_IMPORTED_MODULE_1__[\"qs\"])('#cloak')\n doms.paneLeft = doms.pane.getBoundingClientRect().left\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"tryLoadMode\"])(doms, loader)\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"tryRestoreSidebar\"])(doms)\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"activateSidebarToggle\"])(doms)\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"activateModeSwitcher\"])(doms, loader)\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"activateSidebarDrag\"])(doms)\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"activateDialog\"])(doms, loader)\n}, 0, document)\n\n\n//# sourceURL=webpack:///./src/index.js?");
-
-/***/ }),
-
-/***/ "./src/js/css_template.js":
-/*!********************************!*\
- !*** ./src/js/css_template.js ***!
- \********************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/js/helpers.js\");\n\n\n// tagged template function, produce wild styles\nfunction styleTemplate (strings, ...keys) {\n return function () {\n let temp = strings.slice()\n keys.forEach((key, i) => {\n temp[i] += gen[key]()\n })\n return temp.join('').replace(/\\s{2}/gm, ' ')\n }\n}\n\nconst gen = {\n darkCode: ['c', 'f', '6', '9'],\n lightCode: ['a', 'b', 'c', 'd', 'e', 'f'],\n textCode: ['1a2a3a', '2a3a4a', '3a4a5a', '4a5a6a', '5a6a7a', '6a7a8a', '7a8a9a'],\n grayCode: ['aaa', 'bbb', 'ccc', 'ddd'],\n lightGrayCode: ['e2e2e2', 'e7e7e7', 'ececec'],\n deepGrayCode: ['222', '333', '444']\n}\n\ngen.dark = () => {\n let d = ''\n for (let i = 0; i !== 3; i++) {\n let c = gen.darkCode[Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(0, gen.darkCode.length)]\n d += c + c\n }\n return '#' + d\n}\ngen.light = () => {\n let d = ''\n for (let i = 0; i !== 6; i++) {\n d += gen.lightCode[Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(0, gen.lightCode.length)]\n }\n return '#' + d\n}\n\ngen.gray = () => {\n let i = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(0, gen.grayCode.length)\n return '#' + gen.grayCode[i]\n}\ngen.lightGray = () => {\n let i = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(0, gen.lightGrayCode.length)\n return '#' + gen.lightGrayCode[i]\n}\ngen.deepGray = () => {\n let i = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(0, gen.deepGrayCode.length)\n return '#' + gen.deepGrayCode[i]\n}\ngen.text = (base = 0, max = 7) => {\n let i = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(base, max)\n return '#' + gen.textCode[i]\n}\n\ngen.deepText = gen.text.bind(gen, 0, 2)\ngen.mediumText = gen.text.bind(gen, 2, 5)\ngen.lightText = gen.text.bind(gen, 5, 6)\n\nconst wildStyle = styleTemplate`\n .wild-mode code {\n background: ${'lightGray'}\n }\n .wild-mode .main .article-tags a {\n background: ${'light'};\n }\n .wild-mode .local-info {\n background: ${'light'};\n }\n body.wild-mode,\n .wild-mode .main {\n background: ${'light'};\n }\n .wild-mode th,\n .wild-mode td {\n border-bottom: 1px solid ${'dark'};\n }\n .wild-mode hr {\n border: 1px solid ${'dark'};\n }\n .wild-mode .pagination {\n background: ${'dark'};\n }\n .wild-mode .sidebar {\n background: ${'dark'};\n }\n .wild-mode .header,\n .wild-mode .footer,\n .wild-mode .header .sub-menu li:hover,\n .wild-mode .sidebar a:hover,\n .wild-mode .logo-link,\n .wild-mode .top, .wild-mode .bottom {\n background: ${'dark'};\n }\n .wild-mode .header .menu>li:hover,\n .wild-mode .footer a:hover {\n background: ${'light'};\n }\n .wild-mode .header ul ul {\n box-shadow: 0 0.1em 0.2em 0 ${'dark'};\n }\n .wild-mode .header ul ul,\n .wild-mode .pagination a:hover {\n background: ${'dark'};\n }\n .wild-mode .article-meta,\n .wild-mode .item-meta,\n .wild-mode .footnotes,\n .wild-mode .count,\n .wild-mode .taxonomy-key {\n color: ${'mediumText'};\n }\n .wild-mode .main .article-tags a,\n .wild-mode .local-info,\n .wild-mode .main,\n .wild-mode .main a,\n .wild-mode .terms-list a,\n .wild-mode blockquote.twitter-tweet,\n .wild-mode .sidebar a,\n .wild-mode .taxonomy-key,\n .wild-mode .main .title a,\n .wild-mode .header a,\n .wild-mode .footer a,\n .wild-mode .footer time,\n .wild-mode .pagination a,\n .wild-mode .header .sub-menu a {\n color: ${'deepGray'};\n }\n .wild-mode .icon,\n .wild-mode .footer .icon {\n background: ${'deepGray'};\n }\n `\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (wildStyle);\n\n\n//# sourceURL=webpack:///./src/js/css_template.js?");
-
-/***/ }),
-
-/***/ "./src/js/file_template.js":
-/*!*********************************!*\
- !*** ./src/js/file_template.js ***!
- \*********************************/
-/*! exports provided: genFile */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genFile\", function() { return genFile; });\nfunction genFile (identifier, themeName) {\n return `/*\nHugo Edidor theme wild mode exported.\nhomepage: https://github.com/jacobsun/edidor\nUsage:\n1. Throw me to your site root folder/static/css directory, you can rename me to whatever you like.\n2. Copy the code below to your config file.\n\n--------\n[[menu.main]]\nparent = \"Theme\"\nidentifier = \"${identifier}\"\nname = \"${themeName}\"\nurl = \"#\"\nweight = 30\n--------\n\n3. Change the field 'name' and 'weight' to whatever you like. Leave others alone, and don't add your custom field, hugo doesn't support that, though I really hope so :/.\n*/`\n}\n\n\n//# sourceURL=webpack:///./src/js/file_template.js?");
-
-/***/ }),
-
-/***/ "./src/js/helpers.js":
-/*!***************************!*\
- !*** ./src/js/helpers.js ***!
- \***************************/
-/*! exports provided: qs, elt, removeClass, clearClass, addClass, toggleClass, hasClass, setStyle, onEvent, onPointerMove, ls, randomInt, download, trackTime, getProgress */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"qs\", function() { return qs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elt\", function() { return elt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeClass\", function() { return removeClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearClass\", function() { return clearClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addClass\", function() { return addClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toggleClass\", function() { return toggleClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasClass\", function() { return hasClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setStyle\", function() { return setStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onEvent\", function() { return onEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onPointerMove\", function() { return onPointerMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ls\", function() { return ls; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"randomInt\", function() { return randomInt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"download\", function() { return download; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"trackTime\", function() { return trackTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getProgress\", function() { return getProgress; });\n// dom helper functions\nconst throttle = __webpack_require__(/*! lodash.throttle */ \"./node_modules/lodash.throttle/index.js\")\nfunction qs (sel, parent = document.body) {\n if (typeof parent === 'string') {\n parent = document.querySelector(parent)\n }\n return parent.querySelector(sel)\n}\n\nfunction elt (name, attr = {}, ...text) {\n const node = document.createElement(name)\n Object.keys(attr).forEach(k => {\n node.setAttribute(k, attr[k])\n })\n text.forEach(t => {\n if (typeof t === 'string') {\n t = document.createTextNode(t)\n }\n node.appendChild(t)\n })\n return node\n}\n\nfunction removeClass (dom, cls) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n dom.classList.remove(cls)\n return dom\n}\nfunction clearClass (dom, cls) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n dom.className = ''\n return dom\n}\nfunction addClass (dom, cls) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n dom.classList.add(cls)\n return dom\n}\nfunction toggleClass (dom, cls) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n dom.classList.toggle(cls)\n return dom\n}\nfunction hasClass (dom, cls) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n return dom.classList.contains(cls)\n}\nfunction setStyle (dom, styles) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n\n Object.keys(styles).forEach(key => {\n dom.style[key] = styles[key]\n })\n}\nfunction onEvent (event, cb, limit = 0, dom = document.body, options = {}) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n if (limit > 0) {\n dom.addEventListener(event, throttle(cb, limit), options)\n } else {\n dom.addEventListener(event, cb, options)\n }\n}\n// mousemove and touchmove abstraction\nfunction onPointerMove (cb, limit, dom = document.body) {\n onEvent('mousemove', e => {\n cb({ // eslint-disable-line\n clientX: e.clientX,\n clientY: e.clientY,\n type: e.type\n })\n }, limit, dom, { passive: true })\n\n onEvent('touchmove', e => {\n cb({ // eslint-disable-line\n clientX: e.touches[0].clientX,\n clientY: e.touches[0].clientY,\n type: e.type\n })\n }, limit, dom, { passive: true })\n}\n// local storage\nconst ls = {}\nls.get = key => window.localStorage.getItem(key)\n\nls.set = (key, value) => {\n if (value === null || value === undefined) {\n value = ''\n } else if (typeof value !== 'string') {\n value = JSON.stringify(value)\n }\n window.localStorage.setItem(key, value)\n}\nfunction randomInt (min, max) {\n min = Math.ceil(min)\n max = Math.floor(max)\n return Math.floor(Math.random() * (max - min)) + min\n}\n\nfunction download (filename, text) {\n const a = elt('a', {\n href: 'data:text/plain;charset=utf-8,' + encodeURIComponent(text),\n download: filename,\n style: {\n display: 'none'\n }\n })\n document.body.appendChild(a)\n a.click()\n document.body.removeChild(a)\n}\n\nfunction trackTime (id) {\n const [entry] = window.performance.getEntriesByName(id)\n if (!entry) {\n window.performance.mark(id)\n return 0\n }\n return window.performance.now() - entry.startTime\n}\nfunction getProgress (data) {\n if (data.duration) {\n return Math.min(trackTime(data.id) / data.duration, 1)\n }\n return 1\n}\n\n\n//# sourceURL=webpack:///./src/js/helpers.js?");
-
-/***/ }),
-
-/***/ "./src/js/loader.js":
-/*!**************************!*\
- !*** ./src/js/loader.js ***!
- \**************************/
-/*! exports provided: getLoader */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLoader\", function() { return getLoader; });\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/js/helpers.js\");\n/* harmony import */ var d3_ease__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-ease */ \"./node_modules/d3-ease/src/index.js\");\n\n\nfunction getLoader () {\n let topEle = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.top')\n let bottomEle = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.bottom')\n let distance = document.documentElement.clientHeight / 2\n let ticket = false\n let closed = false\n let opening = false\n let openWaiting = false\n const animation = (ease, cb, duration, finaly = () => {}) => {\n const tick = () => {\n let progress = Math.min(ease((Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"getProgress\"])(data))), 1)\n // d3.easeExpOut has problem, t can not reach to 1, so I mannually fix it\n // progress = progress > 0.999 ? 1 : progress\n if (progress < 1) {\n cb(progress)\n window.requestAnimationFrame(tick)\n } else {\n window.performance.clearMarks(data.id)\n cb(progress)\n finaly()\n }\n }\n const data = {\n duration,\n id: window.requestAnimationFrame(tick)\n }\n }\n const loading = () => {\n console.log('loading', ticket)\n if (ticket) return\n ticket = true\n close(() => {\n closed = true\n if (openWaiting) {\n open()\n }\n })\n }\n const loaded = () => {\n console.log('loaded: ', ticket, opening)\n if (!ticket) return\n if (opening) return\n opening = true\n if (closed) {\n open()\n } else {\n openWaiting = true\n }\n }\n function close (cb) {\n animation(d3_ease__WEBPACK_IMPORTED_MODULE_1__[\"easeElasticOut\"], progress => {\n topEle.style.top = -((1 - progress) * distance) + 'px'\n bottomEle.style.top = (1 - progress) * distance + distance + 'px'\n }, 1000, cb)\n }\n\n function open (cb) {\n animation(d3_ease__WEBPACK_IMPORTED_MODULE_1__[\"easeElasticOut\"], progress => {\n topEle.style.top = -(progress * distance) + 'px'\n bottomEle.style.top = progress * distance + distance + 'px'\n }, 1000, () => {\n opening = false\n closed = false\n openWaiting = false\n ticket = false\n })\n }\n\n return {\n loading,\n loaded\n }\n}\n\n\n//# sourceURL=webpack:///./src/js/loader.js?");
-
-/***/ }),
-
-/***/ "./src/js/main.js":
-/*!************************!*\
- !*** ./src/js/main.js ***!
- \************************/
-/*! exports provided: tryLoadMode, tryRestoreSidebar, activateSidebarToggle, activateModeSwitcher, activateSidebarDrag, activateDialog */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tryLoadMode\", function() { return tryLoadMode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tryRestoreSidebar\", function() { return tryRestoreSidebar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"activateSidebarToggle\", function() { return activateSidebarToggle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"activateModeSwitcher\", function() { return activateModeSwitcher; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"activateSidebarDrag\", function() { return activateSidebarDrag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"activateDialog\", function() { return activateDialog; });\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/js/helpers.js\");\n/* harmony import */ var _css_template__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./css_template */ \"./src/js/css_template.js\");\n/* harmony import */ var _file_template__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./file_template */ \"./src/js/file_template.js\");\n\n\n\n\n// sidebar function dragging wrapper\nfunction activateSidebarDrag (doms) {\n const state = {\n last: false,\n resizing: false,\n resizable: false\n }\n\n function switchCursor () {\n if (state.resizable) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"setStyle\"])(document.body, { cursor: 'ew-resize' })\n } else {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"setStyle\"])(document.body, { cursor: 'auto' })\n }\n }\n\n function canResize (x, threshold = 4) {\n return Math.abs(x - doms.pane.getBoundingClientRect().right) <= threshold\n }\n function resize (x) {\n let newWidth = x - doms.paneLeft\n if (newWidth <= 10) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"addClass\"])(doms.pane, 'hide')\n } else {\n adjustWidth(newWidth)\n }\n }\n function cancelResize (e) {\n state.resizing = false\n let r = doms.pane.getBoundingClientRect()\n saveWidth(r.right - r.left)\n }\n\n function saveWidth (x) {\n if (x <= 10) {\n return\n }\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].set('sidebar_width', x)\n }\n\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('mousedown', e => {\n if (state.resizable) {\n state.resizing = true\n }\n }, 0)\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('mouseup', cancelResize, 0)\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('keydown', e => {\n if (e.ctrlKey && e.keyCode === 66) {\n toggleSidebar()\n }\n }, 0)\n\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('touchstart', e => {\n state.resizing = canResize(e.touches[0].clientX, 10)\n })\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('touchend', cancelResize)\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onPointerMove\"])(pointerMoveHandler, 50, Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.middle'))\n function pointerMoveHandler (e) {\n state.resizable = canResize(e.clientX)\n if (state.resizing) {\n resize(e.clientX)\n } else if (e.type === 'mousemove' && e.clientX > 10 && state.last !== state.resizable) {\n switchCursor()\n state.last = state.resizable\n }\n }\n}\n// sidebar dragging function end\n// toggle and load sidebar width\nfunction adjustWidth (x, unit = 'px') {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"setStyle\"])(Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.sidebar'), { width: x + 'px' })\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"setStyle\"])(Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.main'), { marginLeft: x + 'px' })\n}\nfunction tryRestoreSidebar (doms) {\n let x = _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].get('sidebar_width')\n adjustWidth(x)\n let flag = _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].get('is_sidebar_hide')\n flag === '1' ? Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"addClass\"])(doms.pane, 'hide') : Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"removeClass\"])(doms.pane, 'hide')\n}\nfunction activateSidebarToggle (doms) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('click', toggleSidebar.bind(null, doms), 0, '.toggle-sidebar')\n}\n\nfunction toggleSidebar (doms, e) {\n if (Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"hasClass\"])(doms.pane, 'hide')) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"removeClass\"])(doms.pane, 'hide')\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].set('is_sidebar_hide', '0')\n } else {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"addClass\"])(doms.pane, 'hide')\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].set('is_sidebar_hide', '1')\n }\n e.preventDefault()\n e.stopPropagation()\n return false\n}\n// style mode functions\nconst toMode = name => {\n if (!Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"hasClass\"])(document.body, name)) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"addClass\"])(Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"clearClass\"])(document.body), name)\n }\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].set('mode', name)\n}\nfunction tryLoadMode (doms, loader) {\n let mode = _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].get('mode')\n mode && toMode(mode)\n if (mode === 'wild-mode') {\n let wildEle = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"elt\"])(\n 'style',\n { class: 'wild-ele' },\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].get('wild_style'))\n document.body.appendChild(wildEle)\n }\n loader.loaded()\n}\nfunction activateModeSwitcher (doms, loader) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('click', e => {\n e.preventDefault()\n e.stopPropagation()\n if (e.target.id === 'theme-switcher-button') {\n return\n }\n if (Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"hasClass\"])(e.target, 'export-wild')) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"addClass\"])('.dialog', 'show')\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('#theme-name').focus()\n return\n }\n let theme = e.target.dataset.theme\n if (!theme) {\n console.error('Theme name not found, probably missing an \"Identifier\" field in Config file.')\n return\n }\n loader.loading()\n toMode(theme + '-mode')\n if (theme === 'wild') {\n const wildEle = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.wild-ele')\n const style = Object(_css_template__WEBPACK_IMPORTED_MODULE_1__[\"default\"])()\n if (wildEle) {\n wildEle.innerText = style\n } else {\n document.body.appendChild(Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"elt\"])('style', { class: 'wild-ele' }, style))\n }\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].set('wild_style', style)\n }\n loader.loaded()\n }, 0, '#theme-switcher')\n}\n\n// function showCloak () {\n// removeClass(cloak, 'hide')\n// }\n\nfunction activateDialog (doms, loader) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('click', e => {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"removeClass\"])('.dialog', 'show')\n }, 0, '.close-dialog')\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('click', e => {\n const themeName = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('#theme-name').value.trim()\n if (!themeName) {\n window.alert('Name is required.')\n return\n }\n if (!/^[a-zA-Z\\s-]+$/.test(themeName)) {\n window.alert('Only English letters, space, hyphens are allowed.')\n return\n }\n if (themeName === 'light' || themeName === 'dark' || themeName === 'wild') {\n window.alert('Mess up builtin themes.')\n return\n }\n loader.loading()\n exportWild(themeName)\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"removeClass\"])('.dialog', 'show')\n loader.loaded()\n }, 0, '.export')\n}\nfunction exportWild (themeName) {\n let content = generateFile(themeName)\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"download\"])(themeName + '.css', content)\n}\n\nfunction generateFile (themeName) {\n let style = _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].get('wild_style')\n let identifier = themeName.replace(/\\s/g, '-')\n style = style.replace(/wild-mode/g, `${identifier}-mode`)\n let file = Object(_file_template__WEBPACK_IMPORTED_MODULE_2__[\"genFile\"])(identifier, themeName)\n return file + style\n}\n\n\n\n\n//# sourceURL=webpack:///./src/js/main.js?");
-
-/***/ })
-
-/******/ }); \ No newline at end of file
+!function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t,n){},function(e,t,n){(function(t){var n="Expected a function",o=NaN,i="[object Symbol]",r=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,d=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt,c="object"==typeof t&&t&&t.Object===Object&&t,s="object"==typeof self&&self&&self.Object===Object&&self,f=c||s||Function("return this")(),m=Object.prototype.toString,p=Math.max,h=Math.min,g=function(){return f.Date.now()};function w(e,t,o){var i,r,a,d,l,u,c=0,s=!1,f=!1,m=!0;if("function"!=typeof e)throw new TypeError(n);function w(t){var n=i,o=r;return i=r=void 0,c=t,d=e.apply(o,n)}function v(e){var n=e-u;return void 0===u||n>=t||n<0||f&&e-c>=a}function x(){var e=g();if(v(e))return k(e);l=setTimeout(x,function(e){var n=t-(e-u);return f?h(n,a-(e-c)):n}(e))}function k(e){return l=void 0,m&&i?w(e):(i=r=void 0,d)}function M(){var e=g(),n=v(e);if(i=arguments,r=this,u=e,n){if(void 0===l)return function(e){return c=e,l=setTimeout(x,t),s?w(e):d}(u);if(f)return l=setTimeout(x,t),w(u)}return void 0===l&&(l=setTimeout(x,t)),d}return t=b(t)||0,y(o)&&(s=!!o.leading,a=(f="maxWait"in o)?p(b(o.maxWait)||0,t):a,m="trailing"in o?!!o.trailing:m),M.cancel=function(){void 0!==l&&clearTimeout(l),c=0,i=u=r=l=void 0},M.flush=function(){return void 0===l?d:k(g())},M}function y(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function b(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&m.call(e)==i}(e))return o;if(y(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=y(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(r,"");var n=d.test(e);return n||l.test(e)?u(e.slice(2),n?2:8):a.test(e)?o:+e}e.exports=function(e,t,o){var i=!0,r=!0;if("function"!=typeof e)throw new TypeError(n);return y(o)&&(i="leading"in o?!!o.leading:i,r="trailing"in o?!!o.trailing:r),w(e,t,{leading:i,maxWait:t,trailing:r})}}).call(this,n(2))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";n.r(t);n(0);const o=n(1);function i(e,t=document.body){return"string"==typeof t&&(t=document.querySelector(t)),t.querySelector(e)}function r(e,t={},...n){const o=document.createElement(e);return Object.keys(t).forEach(e=>{o.setAttribute(e,t[e])}),n.forEach(e=>{"string"==typeof e&&(e=document.createTextNode(e)),o.appendChild(e)}),o}function a(e,t){return"string"==typeof e&&(e=i(e)),e.classList.remove(t),e}function d(e,t){return"string"==typeof e&&(e=i(e)),e.classList.add(t),e}function l(e,t){return"string"==typeof e&&(e=i(e)),e.classList.contains(t)}function u(e,t){"string"==typeof e&&(e=i(e)),Object.keys(t).forEach(n=>{e.style[n]=t[n]})}function c(e,t,n=0,r=document.body,a={}){"string"==typeof r&&(r=i(r)),n>0?r.addEventListener(e,o(t,n),a):r.addEventListener(e,t,a)}const s={};function f(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e))+e}function m(e){return e.duration?Math.min(function(e){const[t]=window.performance.getEntriesByName(e);return t?window.performance.now()-t.startTime:(window.performance.mark(e),0)}(e.id)/e.duration,1):1}s.get=(e=>window.localStorage.getItem(e)),s.set=((e,t)=>{null==t?t="":"string"!=typeof t&&(t=JSON.stringify(t)),window.localStorage.setItem(e,t)});const p={darkCode:["c","f","6","9"],lightCode:["a","b","c","d","e","f"],textCode:["1a2a3a","2a3a4a","3a4a5a","4a5a6a","5a6a7a","6a7a8a","7a8a9a"],grayCode:["aaa","bbb","ccc","ddd"],lightGrayCode:["e2e2e2","e7e7e7","ececec"],deepGrayCode:["222","333","444"],dark:()=>{let e="";for(let t=0;3!==t;t++){let t=p.darkCode[f(0,p.darkCode.length)];e+=t+t}return"#"+e},light:()=>{let e="";for(let t=0;6!==t;t++)e+=p.lightCode[f(0,p.lightCode.length)];return"#"+e},gray:()=>{let e=f(0,p.grayCode.length);return"#"+p.grayCode[e]},lightGray:()=>{let e=f(0,p.lightGrayCode.length);return"#"+p.lightGrayCode[e]},deepGray:()=>{let e=f(0,p.deepGrayCode.length);return"#"+p.deepGrayCode[e]},text:(e=0,t=7)=>{let n=f(e,t);return"#"+p.textCode[n]}};p.deepText=p.text.bind(p,0,2),p.mediumText=p.text.bind(p,2,5),p.lightText=p.text.bind(p,5,6);var h=function(e,...t){return function(){let n=e.slice();return t.forEach((e,t)=>{n[t]+=p[e]()}),n.join("").replace(/\s{2}/gm," ")}}`
+ .wild-mode code {
+ background: ${"lightGray"}
+ }
+ .wild-mode .main .article-tags a {
+ background: ${"light"};
+ }
+ .wild-mode .local-info {
+ background: ${"light"};
+ }
+ body.wild-mode,
+ .wild-mode .main {
+ background: ${"light"};
+ }
+ .wild-mode th,
+ .wild-mode td {
+ border-bottom: 1px solid ${"dark"};
+ }
+ .wild-mode hr {
+ border: 1px solid ${"dark"};
+ }
+ .wild-mode .pagination {
+ background: ${"dark"};
+ }
+ .wild-mode .sidebar {
+ background: ${"dark"};
+ }
+ .wild-mode .header,
+ .wild-mode .footer,
+ .wild-mode .header .sub-menu li:hover,
+ .wild-mode .sidebar a:hover,
+ .wild-mode .logo-link,
+ .wild-mode .top, .wild-mode .bottom {
+ background: ${"dark"};
+ }
+ .wild-mode .header .menu>li:hover,
+ .wild-mode .footer a:hover {
+ background: ${"light"};
+ }
+ .wild-mode .header ul ul {
+ box-shadow: 0 0.1em 0.2em 0 ${"dark"};
+ }
+ .wild-mode .header ul ul,
+ .wild-mode .pagination a:hover {
+ background: ${"dark"};
+ }
+ .wild-mode .article-meta,
+ .wild-mode .item-meta,
+ .wild-mode .footnotes,
+ .wild-mode .count,
+ .wild-mode .taxonomy-key {
+ color: ${"mediumText"};
+ }
+ .wild-mode .main .article-tags a,
+ .wild-mode .local-info,
+ .wild-mode .main,
+ .wild-mode .main a,
+ .wild-mode .terms-list a,
+ .wild-mode blockquote.twitter-tweet,
+ .wild-mode .sidebar a,
+ .wild-mode .taxonomy-key,
+ .wild-mode .main .title a,
+ .wild-mode .header a,
+ .wild-mode .footer a,
+ .wild-mode .footer time,
+ .wild-mode .pagination a,
+ .wild-mode .header .sub-menu a {
+ color: ${"deepGray"};
+ }
+ .wild-mode .icon,
+ .wild-mode .footer .icon {
+ background: ${"deepGray"};
+ }
+ `;function g(e){const t={last:!1,resizing:!1,resizable:!1};function n(t,n=4){return Math.abs(t-e.pane.getBoundingClientRect().right)<=n}function o(n){t.resizing=!1;let o=e.pane.getBoundingClientRect();!function(e){if(e<=10)return;s.set("sidebar_width",e)}(o.right-o.left)}c("mousedown",e=>{t.resizable&&(t.resizing=!0)},0),c("mouseup",o,0),c("keydown",e=>{e.ctrlKey&&66===e.keyCode&&y()},0),c("touchstart",e=>{t.resizing=n(e.touches[0].clientX,10)}),c("touchend",o),function(e,t,n=document.body){c("mousemove",t=>{e({clientX:t.clientX,clientY:t.clientY,type:t.type})},t,n,{passive:!0}),c("touchmove",t=>{e({clientX:t.touches[0].clientX,clientY:t.touches[0].clientY,type:t.type})},t,n,{passive:!0})}(function(o){t.resizable=n(o.clientX),t.resizing?function(t){let n=t-e.paneLeft;n<=10?d(e.pane,"hide"):w(n)}(o.clientX):"mousemove"===o.type&&o.clientX>10&&t.last!==t.resizable&&(t.resizable?u(document.body,{cursor:"ew-resize"}):u(document.body,{cursor:"auto"}),t.last=t.resizable)},50,i(".middle"))}function w(e,t="px"){u(i(".sidebar"),{width:e+"px"}),u(i(".main"),{marginLeft:e+"px"})}function y(e,t){return l(e.pane,"hide")?(a(e.pane,"hide"),s.set("is_sidebar_hide","0")):(d(e.pane,"hide"),s.set("is_sidebar_hide","1")),t.preventDefault(),t.stopPropagation(),!1}const b=e=>{l(document.body,e)||d(function(e,t){return"string"==typeof e&&(e=i(e)),e.className="",e}(document.body),e),s.set("mode",e)};function v(e,t){c("click",e=>{a(".dialog","show")},0,".close-dialog"),c("click",e=>{const n=i("#theme-name").value.trim();n?/^[a-zA-Z\s-]+$/.test(n)?"light"!==n&&"dark"!==n&&"wild"!==n?(t.loading(),function(e){let t=function(e){let t=s.get("wild_style"),n=e.replace(/\s/g,"-");return t=t.replace(/wild-mode/g,`${n}-mode`),function(e,t){return`/*\nHugo Edidor theme wild mode exported.\nhomepage: https://github.com/jacobsun/edidor\nUsage:\n1. Throw me to your site root folder/static/css directory, you can rename me to whatever you like.\n2. Copy the code below to your config file.\n\n--------\n[[menu.main]]\nparent = "Theme"\nidentifier = "${e}"\nname = "${t}"\nurl = "#"\nweight = 30\n--------\n\n3. Change the field 'name' and 'weight' to whatever you like. Leave others alone, and don't add your custom field, hugo doesn't support that, though I really hope so :/.\n*/`}(n,e)+t}(e);!function(e,t){const n=r("a",{href:"data:text/plain;charset=utf-8,"+encodeURIComponent(t),download:e,style:{display:"none"}});document.body.appendChild(n),n.click(),document.body.removeChild(n)}(e+".css",t)}(n),a(".dialog","show"),t.loaded()):window.alert("Mess up builtin themes."):window.alert("Only English letters, space, hyphens are allowed."):window.alert("Name is required.")},0,".export")}(function e(t){function n(e){return Math.pow(e,t)}return t=+t,n.exponent=e,n})(3),function e(t){function n(e){return 1-Math.pow(1-e,t)}return t=+t,n.exponent=e,n}(3),function e(t){function n(e){return((e*=2)<=1?Math.pow(e,t):2-Math.pow(2-e,t))/2}return t=+t,n.exponent=e,n}(3),Math.PI;(function e(t){function n(e){return e*e*((t+1)*e-t)}return t=+t,n.overshoot=e,n})(1.70158),function e(t){function n(e){return--e*e*((t+1)*e+t)+1}return t=+t,n.overshoot=e,n}(1.70158),function e(t){function n(e){return((e*=2)<1?e*e*((t+1)*e-t):(e-=2)*e*((t+1)*e+t)+2)/2}return t=+t,n.overshoot=e,n}(1.70158);var x=2*Math.PI,k=(function e(t,n){var o=Math.asin(1/(t=Math.max(1,t)))*(n/=x);function i(e){return t*Math.pow(2,10*--e)*Math.sin((o-e)/n)}return i.amplitude=function(t){return e(t,n*x)},i.period=function(n){return e(t,n)},i}(1,.3),function e(t,n){var o=Math.asin(1/(t=Math.max(1,t)))*(n/=x);function i(e){return 1-t*Math.pow(2,-10*(e=+e))*Math.sin((e+o)/n)}return i.amplitude=function(t){return e(t,n*x)},i.period=function(n){return e(t,n)},i}(1,.3));(function e(t,n){var o=Math.asin(1/(t=Math.max(1,t)))*(n/=x);function i(e){return((e=2*e-1)<0?t*Math.pow(2,10*e)*Math.sin((o-e)/n):2-t*Math.pow(2,-10*e)*Math.sin((o+e)/n))/2}return i.amplitude=function(t){return e(t,n*x)},i.period=function(n){return e(t,n)},i})(1,.3);const M=function(){let e=i(".top"),t=i(".bottom"),n=document.documentElement.clientHeight/2,o=!1,r=!1,a=!1,d=!1;const l=(e,t,n,o=(()=>{}))=>{const i=()=>{let n=Math.min(e(m(r)),1);n<1?(t(n),window.requestAnimationFrame(i)):(window.performance.clearMarks(r.id),t(n),o())},r={duration:n,id:window.requestAnimationFrame(i)}};function u(i){l(k,o=>{e.style.top=-o*n+"px",t.style.top=o*n+n+"px"},1e3,()=>{a=!1,r=!1,d=!1,o=!1})}return{loading:()=>{console.log("loading",o),o||(o=!0,function(o){l(k,o=>{e.style.top=-(1-o)*n+"px",t.style.top=(1-o)*n+n+"px"},1e3,o)}(()=>{r=!0,d&&u()}))},loaded:()=>{console.log("loaded: ",o,a),o&&(a||(a=!0,r?u():d=!0))}}}();c("DOMContentLoaded",e=>{console.log("page loaded!",Date.now()),M.loading();const t={};t.pane=i(".sidebar"),t.main=i(".main"),t.cloak=i("#cloak"),t.paneLeft=t.pane.getBoundingClientRect().left,function(e,t){let n=s.get("mode");if(n&&b(n),"wild-mode"===n){let e=r("style",{class:"wild-ele"},s.get("wild_style"));document.body.appendChild(e)}t.loaded()}(0,M),function(e){w(s.get("sidebar_width")),"1"===s.get("is_sidebar_hide")?d(e.pane,"hide"):a(e.pane,"hide")}(t),function(e){c("click",y.bind(null,e),0,".toggle-sidebar")}(t),function(e,t){c("click",e=>{if(e.preventDefault(),e.stopPropagation(),"theme-switcher-button"===e.target.id)return;if(l(e.target,"export-wild"))return d(".dialog","show"),void i("#theme-name").focus();let n=e.target.dataset.theme;if(n){if(t.loading(),b(n+"-mode"),"wild"===n){const e=i(".wild-ele"),t=h();e?e.innerText=t:document.body.appendChild(r("style",{class:"wild-ele"},t)),s.set("wild_style",t)}t.loaded()}else console.error('Theme name not found, probably missing an "Identifier" field in Config file.')},0,"#theme-switcher")}(0,M),g(t),v(0,M)},0,document)}]); \ No newline at end of file