commit 08f440e17bc2c6bd0eff6a180ffe264692df83b1 Author: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat Aug 12 14:57:06 2023 +0000 [Automation] Site update No.14 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/404.html b/404.html new file mode 100644 index 0000000..d5f98ab --- /dev/null +++ b/404.html @@ -0,0 +1 @@ + 404: Page not found | Cole Maxwell
Home 404: Page not found
404: Page not found
Cancel

404: Page not found

Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.

diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..ec827dc --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +colemaxwell.dev \ No newline at end of file diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..01e055c --- /dev/null +++ b/about/index.html @@ -0,0 +1 @@ + About | Cole Maxwell
Home About
About
Cancel

About

šŸ‘‹ Hi, I’m Cole

  • šŸ“ Mankato, Minnesota
  • šŸŽ“ University of Minnesota, Morris
  • 🌱 I’m currently learning:

Hi my name is Cole and I am a growing software engineer. I am currently studying Computer Science at the University of Minnesota, Morris.

diff --git a/app.js b/app.js new file mode 100644 index 0000000..6b30cf2 --- /dev/null +++ b/app.js @@ -0,0 +1 @@ +const $notification = $('#notification'); const $btnRefresh = $('#notification .toast-body>button'); if ('serviceWorker' in navigator) { /* Registering Service Worker */ navigator.serviceWorker.register('/sw.js') .then(registration => { /* in case the user ignores the notification */ if (registration.waiting) { $notification.toast('show'); } registration.addEventListener('updatefound', () => { registration.installing.addEventListener('statechange', () => { if (registration.waiting) { if (navigator.serviceWorker.controller) { $notification.toast('show'); } } }); }); $btnRefresh.click(() => { if (registration.waiting) { registration.waiting.postMessage('SKIP_WAITING'); } $notification.toast('hide'); }); } ); let refreshing = false; /* Detect controller change and refresh all the opened tabs */ navigator.serviceWorker.addEventListener('controllerchange', () => { if (!refreshing) { window.location.reload(); refreshing = true; } }); } diff --git a/archives/index.html b/archives/index.html new file mode 100644 index 0000000..92ee78b --- /dev/null +++ b/archives/index.html @@ -0,0 +1 @@ + Archives | Cole Maxwell
Home Archives
Archives
Cancel
diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..a2531ef --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,9 @@ +/*! + * The styles for Jekyll theme Chirpy + * + * Chirpy v5.2.1 (https://github.com/cotes2020/jekyll-theme-chirpy) + * Ā© 2019 Cotes Chung + * MIT Licensed + */#search-results a,h5,h4,h3,h2,h1{color:var(--heading-color);font-weight:400;font-family:'Lato', 'Microsoft Yahei', sans-serif}#core-wrapper h5,#core-wrapper h4,#core-wrapper h3,#core-wrapper h2{margin-top:2.5rem;margin-bottom:1.25rem}#core-wrapper h5:focus,#core-wrapper h4:focus,#core-wrapper h3:focus,#core-wrapper h2:focus{outline:none}h5 .anchor,h4 .anchor,h3 .anchor,h2 .anchor{font-size:80%}@media (hover: hover){h5 .anchor,h4 .anchor,h3 .anchor,h2 .anchor{visibility:hidden;opacity:0;transition:opacity 0.25s ease-in, visibility 0s ease-in 0.25s}h5:hover .anchor,h4:hover .anchor,h3:hover .anchor,h2:hover .anchor{visibility:visible;opacity:1;transition:opacity 0.25s ease-in, visibility 0s ease-in 0s}}.post-tag:hover,.tag:hover{background:var(--tag-hover);transition:background 0.35s ease-in-out}.table-wrapper>table tbody tr td,.table-wrapper>table thead th{padding:0.4rem 1rem;font-size:95%;white-space:nowrap}#page-category a:hover,#page-tag a:hover,.license-wrapper>a:hover,#post-list .post-preview a:hover,#search-results a:hover,#topbar #breadcrumb a:hover,.post-content a:not(.img-link):hover,.post-meta a:not([class]):hover,.post a:hover code,#access-lastmod a:hover,footer a:hover{color:#d2603a !important;border-bottom:1px solid #d2603a;text-decoration:none}#search-results a,#search-hints .post-tag,a{color:var(--link-color)}.post-tail-wrapper .post-meta a:not(:hover),.post-content a:not(.img-link){border-bottom:1px solid var(--link-underline-color)}#sidebar .sidebar-bottom .mode-toggle>i,#sidebar .sidebar-bottom a,#sidebar .nav-item:not(.active)>a,#sidebar .site-title a{transition:color 0.35s ease-in-out}#sidebar .sidebar-bottom .icon-border,.post a.img-link,i.far,i.fas,.code-header{user-select:none}#page-category ul>li>a,#page-tag ul>li>a,#core-wrapper .categories a:not(:hover),#core-wrapper #tags a:not(:hover),#core-wrapper #archives a:not(:hover),#search-results a,#access-lastmod a{border-bottom:none}.share-wrapper .share-icons>i,#search-cancel,.code-header button{cursor:pointer}#related-posts em,#post-list .post-preview .post-meta em,.post-meta em{font-style:normal}.post-content a.img-link+em,img[data-src]+em{display:block;text-align:center;font-style:normal;font-size:80%;padding:0;color:#6d6c6c}#sidebar .sidebar-bottom .mode-toggle,#sidebar a{color:rgba(117,117,117,0.9);user-select:none}@media (prefers-color-scheme: light){html:not([data-mode]),html[data-mode=light]{--highlight-bg-color: #f7f7f7;--highlighter-rouge-color: #2f2f2f;--highlight-lineno-color: #c2c6cc;--inline-code-bg: #f3f3f3;--code-header-text-color: #a3a3b1;--code-header-muted-color: #ebebeb;--code-header-icon-color: #d1d1d1;--clipboard-checked-color: #43c743}html:not([data-mode]) .highlight .hll,html[data-mode=light] .highlight .hll{background-color:#ffffcc}html:not([data-mode]) .highlight .c,html[data-mode=light] .highlight .c{color:#999988;font-style:italic}html:not([data-mode]) .highlight .err,html[data-mode=light] .highlight .err{color:#a61717;background-color:#e3d2d2}html:not([data-mode]) .highlight .k,html[data-mode=light] .highlight .k{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .o,html[data-mode=light] .highlight .o{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .cm,html[data-mode=light] .highlight .cm{color:#999988;font-style:italic}html:not([data-mode]) .highlight .cp,html[data-mode=light] .highlight .cp{color:#999999;font-weight:bold;font-style:italic}html:not([data-mode]) .highlight .c1,html[data-mode=light] .highlight .c1{color:#999988;font-style:italic}html:not([data-mode]) .highlight .cs,html[data-mode=light] .highlight .cs{color:#999999;font-weight:bold;font-style:italic}html:not([data-mode]) .highlight .gd,html[data-mode=light] .highlight .gd{color:#d01040;background-color:#ffdddd}html:not([data-mode]) .highlight .ge,html[data-mode=light] .highlight .ge{color:#000000;font-style:italic}html:not([data-mode]) .highlight .gr,html[data-mode=light] .highlight .gr{color:#aa0000}html:not([data-mode]) .highlight .gh,html[data-mode=light] .highlight .gh{color:#999999}html:not([data-mode]) .highlight .gi,html[data-mode=light] .highlight .gi{color:#008080;background-color:#ddffdd}html:not([data-mode]) .highlight .go,html[data-mode=light] .highlight .go{color:#888888}html:not([data-mode]) .highlight .gp,html[data-mode=light] .highlight .gp{color:#555555}html:not([data-mode]) .highlight .gs,html[data-mode=light] .highlight .gs{font-weight:bold}html:not([data-mode]) .highlight .gu,html[data-mode=light] .highlight .gu{color:#aaaaaa}html:not([data-mode]) .highlight .gt,html[data-mode=light] .highlight .gt{color:#aa0000}html:not([data-mode]) .highlight .kc,html[data-mode=light] .highlight .kc{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .kd,html[data-mode=light] .highlight .kd{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .kn,html[data-mode=light] .highlight .kn{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .kp,html[data-mode=light] .highlight .kp{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .kr,html[data-mode=light] .highlight .kr{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .kt,html[data-mode=light] .highlight .kt{color:#445588;font-weight:bold}html:not([data-mode]) .highlight .m,html[data-mode=light] .highlight .m{color:#009999}html:not([data-mode]) .highlight .s,html[data-mode=light] .highlight .s{color:#d01040}html:not([data-mode]) .highlight .na,html[data-mode=light] .highlight .na{color:#008080}html:not([data-mode]) .highlight .nb,html[data-mode=light] .highlight .nb{color:#0086b3}html:not([data-mode]) .highlight .nc,html[data-mode=light] .highlight .nc{color:#445588;font-weight:bold}html:not([data-mode]) .highlight .no,html[data-mode=light] .highlight .no{color:#008080}html:not([data-mode]) .highlight .nd,html[data-mode=light] .highlight .nd{color:#3c5d5d;font-weight:bold}html:not([data-mode]) .highlight .ni,html[data-mode=light] .highlight .ni{color:#800080}html:not([data-mode]) .highlight .ne,html[data-mode=light] .highlight .ne{color:#990000;font-weight:bold}html:not([data-mode]) .highlight .nf,html[data-mode=light] .highlight .nf{color:#990000;font-weight:bold}html:not([data-mode]) .highlight .nl,html[data-mode=light] .highlight .nl{color:#990000;font-weight:bold}html:not([data-mode]) .highlight .nn,html[data-mode=light] .highlight .nn{color:#555555}html:not([data-mode]) .highlight .nt,html[data-mode=light] .highlight .nt{color:#000080}html:not([data-mode]) .highlight .nv,html[data-mode=light] .highlight .nv{color:#008080}html:not([data-mode]) .highlight .ow,html[data-mode=light] .highlight .ow{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .w,html[data-mode=light] .highlight .w{color:#bbbbbb}html:not([data-mode]) .highlight .mf,html[data-mode=light] .highlight .mf{color:#009999}html:not([data-mode]) .highlight .mh,html[data-mode=light] .highlight .mh{color:#009999}html:not([data-mode]) .highlight .mi,html[data-mode=light] .highlight .mi{color:#009999}html:not([data-mode]) .highlight .mo,html[data-mode=light] .highlight .mo{color:#009999}html:not([data-mode]) .highlight .sb,html[data-mode=light] .highlight .sb{color:#d01040}html:not([data-mode]) .highlight .sc,html[data-mode=light] .highlight .sc{color:#d01040}html:not([data-mode]) .highlight .sd,html[data-mode=light] .highlight .sd{color:#d01040}html:not([data-mode]) .highlight .s2,html[data-mode=light] .highlight .s2{color:#d01040}html:not([data-mode]) .highlight .se,html[data-mode=light] .highlight .se{color:#d01040}html:not([data-mode]) .highlight .sh,html[data-mode=light] .highlight .sh{color:#d01040}html:not([data-mode]) .highlight .si,html[data-mode=light] .highlight .si{color:#d01040}html:not([data-mode]) .highlight .sx,html[data-mode=light] .highlight .sx{color:#d01040}html:not([data-mode]) .highlight .sr,html[data-mode=light] .highlight .sr{color:#009926}html:not([data-mode]) .highlight .s1,html[data-mode=light] .highlight .s1{color:#d01040}html:not([data-mode]) .highlight .ss,html[data-mode=light] .highlight .ss{color:#990073}html:not([data-mode]) .highlight .bp,html[data-mode=light] .highlight .bp{color:#999999}html:not([data-mode]) .highlight .vc,html[data-mode=light] .highlight .vc{color:#008080}html:not([data-mode]) .highlight .vg,html[data-mode=light] .highlight .vg{color:#008080}html:not([data-mode]) .highlight .vi,html[data-mode=light] .highlight .vi{color:#008080}html:not([data-mode]) .highlight .il,html[data-mode=light] .highlight .il{color:#009999}html:not([data-mode]) [class^=prompt-],html[data-mode=light] [class^=prompt-]{--inline-code-bg: #fbfafa;--highlighter-rouge-color: rgb(82 82 82)}html[data-mode=dark]{--highlight-bg-color: #252525;--highlighter-rouge-color: #de6b18;--highlight-lineno-color: #6c6c6d;--inline-code-bg: #272822;--code-header-text-color: #6a6a6a;--code-header-muted-color: rgb(60 60 60);--code-header-icon-color: rgb(86 86 86);--clipboard-checked-color: #2bcc2b;--filepath-text-color: #bdbdbd}html[data-mode=dark] .highlight pre{background-color:var(--highlight-bg-color)}html[data-mode=dark] .highlight .hll{background-color:var(--highlight-bg-color)}html[data-mode=dark] .highlight .c{color:#75715e}html[data-mode=dark] .highlight .err{color:#960050;background-color:#1e0010}html[data-mode=dark] .highlight .k{color:#66d9ef}html[data-mode=dark] .highlight .l{color:#ae81ff}html[data-mode=dark] .highlight .n{color:#f8f8f2}html[data-mode=dark] .highlight .o{color:#f92672}html[data-mode=dark] .highlight .p{color:#f8f8f2}html[data-mode=dark] .highlight .cm{color:#75715e}html[data-mode=dark] .highlight .cp{color:#75715e}html[data-mode=dark] .highlight .c1{color:#75715e}html[data-mode=dark] .highlight .cs{color:#75715e}html[data-mode=dark] .highlight .ge{color:inherit;font-style:italic}html[data-mode=dark] .highlight .gs{font-weight:bold}html[data-mode=dark] .highlight .kc{color:#66d9ef}html[data-mode=dark] .highlight .kd{color:#66d9ef}html[data-mode=dark] .highlight .kn{color:#f92672}html[data-mode=dark] .highlight .kp{color:#66d9ef}html[data-mode=dark] .highlight .kr{color:#66d9ef}html[data-mode=dark] .highlight .kt{color:#66d9ef}html[data-mode=dark] .highlight .ld{color:#e6db74}html[data-mode=dark] .highlight .m{color:#ae81ff}html[data-mode=dark] .highlight .s{color:#e6db74}html[data-mode=dark] .highlight .na{color:#a6e22e}html[data-mode=dark] .highlight .nb{color:#f8f8f2}html[data-mode=dark] .highlight .nc{color:#a6e22e}html[data-mode=dark] .highlight .no{color:#66d9ef}html[data-mode=dark] .highlight .nd{color:#a6e22e}html[data-mode=dark] .highlight .ni{color:#f8f8f2}html[data-mode=dark] .highlight .ne{color:#a6e22e}html[data-mode=dark] .highlight .nf{color:#a6e22e}html[data-mode=dark] .highlight .nl{color:#f8f8f2}html[data-mode=dark] .highlight .nn{color:#f8f8f2}html[data-mode=dark] .highlight .nx{color:#a6e22e}html[data-mode=dark] .highlight .py{color:#f8f8f2}html[data-mode=dark] .highlight .nt{color:#f92672}html[data-mode=dark] .highlight .nv{color:#f8f8f2}html[data-mode=dark] .highlight .ow{color:#f92672}html[data-mode=dark] .highlight .w{color:#f8f8f2}html[data-mode=dark] .highlight .mf{color:#ae81ff}html[data-mode=dark] .highlight .mh{color:#ae81ff}html[data-mode=dark] .highlight .mi{color:#ae81ff}html[data-mode=dark] .highlight .mo{color:#ae81ff}html[data-mode=dark] .highlight .sb{color:#e6db74}html[data-mode=dark] .highlight .sc{color:#e6db74}html[data-mode=dark] .highlight .sd{color:#e6db74}html[data-mode=dark] .highlight .s2{color:#e6db74}html[data-mode=dark] .highlight .se{color:#ae81ff}html[data-mode=dark] .highlight .sh{color:#e6db74}html[data-mode=dark] .highlight .si{color:#e6db74}html[data-mode=dark] .highlight .sx{color:#e6db74}html[data-mode=dark] .highlight .sr{color:#e6db74}html[data-mode=dark] .highlight .s1{color:#e6db74}html[data-mode=dark] .highlight .ss{color:#e6db74}html[data-mode=dark] .highlight .bp{color:#f8f8f2}html[data-mode=dark] .highlight .vc{color:#f8f8f2}html[data-mode=dark] .highlight .vg{color:#f8f8f2}html[data-mode=dark] .highlight .vi{color:#f8f8f2}html[data-mode=dark] .highlight .il{color:#ae81ff}html[data-mode=dark] .highlight .gu{color:#75715e}html[data-mode=dark] .highlight .gd{color:#f92672;background-color:#561c08}html[data-mode=dark] .highlight .gi{color:#a6e22e;background-color:#0b5858}html[data-mode=dark] .highlight .gp{color:#818c96}html[data-mode=dark] pre{color:#bfbfbf}}@media (prefers-color-scheme: dark){html:not([data-mode]),html[data-mode=dark]{--highlight-bg-color: #252525;--highlighter-rouge-color: #de6b18;--highlight-lineno-color: #6c6c6d;--inline-code-bg: #272822;--code-header-text-color: #6a6a6a;--code-header-muted-color: rgb(60 60 60);--code-header-icon-color: rgb(86 86 86);--clipboard-checked-color: #2bcc2b;--filepath-text-color: #bdbdbd}html:not([data-mode]) .highlight pre,html[data-mode=dark] .highlight pre{background-color:var(--highlight-bg-color)}html:not([data-mode]) .highlight .hll,html[data-mode=dark] .highlight .hll{background-color:var(--highlight-bg-color)}html:not([data-mode]) .highlight .c,html[data-mode=dark] .highlight .c{color:#75715e}html:not([data-mode]) .highlight .err,html[data-mode=dark] .highlight .err{color:#960050;background-color:#1e0010}html:not([data-mode]) .highlight .k,html[data-mode=dark] .highlight .k{color:#66d9ef}html:not([data-mode]) .highlight .l,html[data-mode=dark] .highlight .l{color:#ae81ff}html:not([data-mode]) .highlight .n,html[data-mode=dark] .highlight .n{color:#f8f8f2}html:not([data-mode]) .highlight .o,html[data-mode=dark] .highlight .o{color:#f92672}html:not([data-mode]) .highlight .p,html[data-mode=dark] .highlight .p{color:#f8f8f2}html:not([data-mode]) .highlight .cm,html[data-mode=dark] .highlight .cm{color:#75715e}html:not([data-mode]) .highlight .cp,html[data-mode=dark] .highlight .cp{color:#75715e}html:not([data-mode]) .highlight .c1,html[data-mode=dark] .highlight .c1{color:#75715e}html:not([data-mode]) .highlight .cs,html[data-mode=dark] .highlight .cs{color:#75715e}html:not([data-mode]) .highlight .ge,html[data-mode=dark] .highlight .ge{color:inherit;font-style:italic}html:not([data-mode]) .highlight .gs,html[data-mode=dark] .highlight .gs{font-weight:bold}html:not([data-mode]) .highlight .kc,html[data-mode=dark] .highlight .kc{color:#66d9ef}html:not([data-mode]) .highlight .kd,html[data-mode=dark] .highlight .kd{color:#66d9ef}html:not([data-mode]) .highlight .kn,html[data-mode=dark] .highlight .kn{color:#f92672}html:not([data-mode]) .highlight .kp,html[data-mode=dark] .highlight .kp{color:#66d9ef}html:not([data-mode]) .highlight .kr,html[data-mode=dark] .highlight .kr{color:#66d9ef}html:not([data-mode]) .highlight .kt,html[data-mode=dark] .highlight .kt{color:#66d9ef}html:not([data-mode]) .highlight .ld,html[data-mode=dark] .highlight .ld{color:#e6db74}html:not([data-mode]) .highlight .m,html[data-mode=dark] .highlight .m{color:#ae81ff}html:not([data-mode]) .highlight .s,html[data-mode=dark] .highlight .s{color:#e6db74}html:not([data-mode]) .highlight .na,html[data-mode=dark] .highlight .na{color:#a6e22e}html:not([data-mode]) .highlight .nb,html[data-mode=dark] .highlight .nb{color:#f8f8f2}html:not([data-mode]) .highlight .nc,html[data-mode=dark] .highlight .nc{color:#a6e22e}html:not([data-mode]) .highlight .no,html[data-mode=dark] .highlight .no{color:#66d9ef}html:not([data-mode]) .highlight .nd,html[data-mode=dark] .highlight .nd{color:#a6e22e}html:not([data-mode]) .highlight .ni,html[data-mode=dark] .highlight .ni{color:#f8f8f2}html:not([data-mode]) .highlight .ne,html[data-mode=dark] .highlight .ne{color:#a6e22e}html:not([data-mode]) .highlight .nf,html[data-mode=dark] .highlight .nf{color:#a6e22e}html:not([data-mode]) .highlight .nl,html[data-mode=dark] .highlight .nl{color:#f8f8f2}html:not([data-mode]) .highlight .nn,html[data-mode=dark] .highlight .nn{color:#f8f8f2}html:not([data-mode]) .highlight .nx,html[data-mode=dark] .highlight .nx{color:#a6e22e}html:not([data-mode]) .highlight .py,html[data-mode=dark] .highlight .py{color:#f8f8f2}html:not([data-mode]) .highlight .nt,html[data-mode=dark] .highlight .nt{color:#f92672}html:not([data-mode]) .highlight .nv,html[data-mode=dark] .highlight .nv{color:#f8f8f2}html:not([data-mode]) .highlight .ow,html[data-mode=dark] .highlight .ow{color:#f92672}html:not([data-mode]) .highlight .w,html[data-mode=dark] .highlight .w{color:#f8f8f2}html:not([data-mode]) .highlight .mf,html[data-mode=dark] .highlight .mf{color:#ae81ff}html:not([data-mode]) .highlight .mh,html[data-mode=dark] .highlight .mh{color:#ae81ff}html:not([data-mode]) .highlight .mi,html[data-mode=dark] .highlight .mi{color:#ae81ff}html:not([data-mode]) .highlight .mo,html[data-mode=dark] .highlight .mo{color:#ae81ff}html:not([data-mode]) .highlight .sb,html[data-mode=dark] .highlight .sb{color:#e6db74}html:not([data-mode]) .highlight .sc,html[data-mode=dark] .highlight .sc{color:#e6db74}html:not([data-mode]) .highlight .sd,html[data-mode=dark] .highlight .sd{color:#e6db74}html:not([data-mode]) .highlight .s2,html[data-mode=dark] .highlight .s2{color:#e6db74}html:not([data-mode]) .highlight .se,html[data-mode=dark] .highlight .se{color:#ae81ff}html:not([data-mode]) .highlight .sh,html[data-mode=dark] .highlight .sh{color:#e6db74}html:not([data-mode]) .highlight .si,html[data-mode=dark] .highlight .si{color:#e6db74}html:not([data-mode]) .highlight .sx,html[data-mode=dark] .highlight .sx{color:#e6db74}html:not([data-mode]) .highlight .sr,html[data-mode=dark] .highlight .sr{color:#e6db74}html:not([data-mode]) .highlight .s1,html[data-mode=dark] .highlight .s1{color:#e6db74}html:not([data-mode]) .highlight .ss,html[data-mode=dark] .highlight .ss{color:#e6db74}html:not([data-mode]) .highlight .bp,html[data-mode=dark] .highlight .bp{color:#f8f8f2}html:not([data-mode]) .highlight .vc,html[data-mode=dark] .highlight .vc{color:#f8f8f2}html:not([data-mode]) .highlight .vg,html[data-mode=dark] .highlight .vg{color:#f8f8f2}html:not([data-mode]) .highlight .vi,html[data-mode=dark] .highlight .vi{color:#f8f8f2}html:not([data-mode]) .highlight .il,html[data-mode=dark] .highlight .il{color:#ae81ff}html:not([data-mode]) .highlight .gu,html[data-mode=dark] .highlight .gu{color:#75715e}html:not([data-mode]) .highlight .gd,html[data-mode=dark] .highlight .gd{color:#f92672;background-color:#561c08}html:not([data-mode]) .highlight .gi,html[data-mode=dark] .highlight .gi{color:#a6e22e;background-color:#0b5858}html:not([data-mode]) .highlight .gp,html[data-mode=dark] .highlight .gp{color:#818c96}html:not([data-mode]) pre,html[data-mode=dark] pre{color:#bfbfbf}html[data-mode=light]{--highlight-bg-color: #f7f7f7;--highlighter-rouge-color: #2f2f2f;--highlight-lineno-color: #c2c6cc;--inline-code-bg: #f3f3f3;--code-header-text-color: #a3a3b1;--code-header-muted-color: #ebebeb;--code-header-icon-color: #d1d1d1;--clipboard-checked-color: #43c743}html[data-mode=light] .highlight .hll{background-color:#ffffcc}html[data-mode=light] .highlight .c{color:#999988;font-style:italic}html[data-mode=light] .highlight .err{color:#a61717;background-color:#e3d2d2}html[data-mode=light] .highlight .k{color:#000000;font-weight:bold}html[data-mode=light] .highlight .o{color:#000000;font-weight:bold}html[data-mode=light] .highlight .cm{color:#999988;font-style:italic}html[data-mode=light] .highlight .cp{color:#999999;font-weight:bold;font-style:italic}html[data-mode=light] .highlight .c1{color:#999988;font-style:italic}html[data-mode=light] .highlight .cs{color:#999999;font-weight:bold;font-style:italic}html[data-mode=light] .highlight .gd{color:#d01040;background-color:#ffdddd}html[data-mode=light] .highlight .ge{color:#000000;font-style:italic}html[data-mode=light] .highlight .gr{color:#aa0000}html[data-mode=light] .highlight .gh{color:#999999}html[data-mode=light] .highlight .gi{color:#008080;background-color:#ddffdd}html[data-mode=light] .highlight .go{color:#888888}html[data-mode=light] .highlight .gp{color:#555555}html[data-mode=light] .highlight .gs{font-weight:bold}html[data-mode=light] .highlight .gu{color:#aaaaaa}html[data-mode=light] .highlight .gt{color:#aa0000}html[data-mode=light] .highlight .kc{color:#000000;font-weight:bold}html[data-mode=light] .highlight .kd{color:#000000;font-weight:bold}html[data-mode=light] .highlight .kn{color:#000000;font-weight:bold}html[data-mode=light] .highlight .kp{color:#000000;font-weight:bold}html[data-mode=light] .highlight .kr{color:#000000;font-weight:bold}html[data-mode=light] .highlight .kt{color:#445588;font-weight:bold}html[data-mode=light] .highlight .m{color:#009999}html[data-mode=light] .highlight .s{color:#d01040}html[data-mode=light] .highlight .na{color:#008080}html[data-mode=light] .highlight .nb{color:#0086b3}html[data-mode=light] .highlight .nc{color:#445588;font-weight:bold}html[data-mode=light] .highlight .no{color:#008080}html[data-mode=light] .highlight .nd{color:#3c5d5d;font-weight:bold}html[data-mode=light] .highlight .ni{color:#800080}html[data-mode=light] .highlight .ne{color:#990000;font-weight:bold}html[data-mode=light] .highlight .nf{color:#990000;font-weight:bold}html[data-mode=light] .highlight .nl{color:#990000;font-weight:bold}html[data-mode=light] .highlight .nn{color:#555555}html[data-mode=light] .highlight .nt{color:#000080}html[data-mode=light] .highlight .nv{color:#008080}html[data-mode=light] .highlight .ow{color:#000000;font-weight:bold}html[data-mode=light] .highlight .w{color:#bbbbbb}html[data-mode=light] .highlight .mf{color:#009999}html[data-mode=light] .highlight .mh{color:#009999}html[data-mode=light] .highlight .mi{color:#009999}html[data-mode=light] .highlight .mo{color:#009999}html[data-mode=light] .highlight .sb{color:#d01040}html[data-mode=light] .highlight .sc{color:#d01040}html[data-mode=light] .highlight .sd{color:#d01040}html[data-mode=light] .highlight .s2{color:#d01040}html[data-mode=light] .highlight .se{color:#d01040}html[data-mode=light] .highlight .sh{color:#d01040}html[data-mode=light] .highlight .si{color:#d01040}html[data-mode=light] .highlight .sx{color:#d01040}html[data-mode=light] .highlight .sr{color:#009926}html[data-mode=light] .highlight .s1{color:#d01040}html[data-mode=light] .highlight .ss{color:#990073}html[data-mode=light] .highlight .bp{color:#999999}html[data-mode=light] .highlight .vc{color:#008080}html[data-mode=light] .highlight .vg{color:#008080}html[data-mode=light] .highlight .vi{color:#008080}html[data-mode=light] .highlight .il{color:#009999}html[data-mode=light] [class^=prompt-]{--inline-code-bg: #fbfafa;--highlighter-rouge-color: rgb(82 82 82)}}figure.highlight,.highlight,.highlighter-rouge{background:var(--highlight-bg-color)}.highlight,.highlighter-rouge{border-radius:6px}td.rouge-code{padding-left:1rem;padding-right:1.5rem}.highlighter-rouge{color:var(--highlighter-rouge-color);margin-top:0.5rem;margin-bottom:1.2em}.highlight{overflow:auto;padding-top:0.5rem;padding-bottom:1rem}.highlight pre{margin-bottom:0;font-size:.85rem;line-height:1.4rem;word-wrap:normal}.highlight table td pre{overflow:visible;word-break:normal}.highlight .lineno{padding-right:0.5rem;min-width:2.2rem;text-align:right;color:var(--highlight-lineno-color);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.highlight .gp{user-select:none}code{-webkit-hyphens:none;-ms-hyphens:none;-moz-hyphens:none;hyphens:none}code.highlighter-rouge{font-size:.85rem;padding:3px 5px;border-radius:4px;background-color:var(--inline-code-bg)}code.filepath{background-color:inherit;color:var(--filepath-text-color);font-weight:600;padding:0}a>code.highlighter-rouge{padding-bottom:0;color:inherit}a:hover>code.highlighter-rouge{border-bottom:none}blockquote code{color:inherit}.highlight>code{color:transparent}td.rouge-code a{color:inherit !important;border-bottom:none !important;pointer-events:none}div[class^='highlighter-rouge'] pre.lineno,div.language-plaintext.highlighter-rouge pre.lineno,div.language-console.highlighter-rouge pre.lineno,div.language-terminal.highlighter-rouge pre.lineno,div.nolineno pre.lineno{display:none}div[class^='highlighter-rouge'] td.rouge-code,div.language-plaintext.highlighter-rouge td.rouge-code,div.language-console.highlighter-rouge td.rouge-code,div.language-terminal.highlighter-rouge td.rouge-code,div.nolineno td.rouge-code{padding-left:1.5rem}.code-header{border-top-left-radius:6px;border-top-right-radius:6px;display:flex;justify-content:space-between;align-items:center;height:2.25rem}.code-header::before{content:"";display:inline-block;margin-left:1rem;width:.75rem;height:.75rem;border-radius:50%;background-color:var(--code-header-muted-color);box-shadow:1.25rem 0 0 var(--code-header-muted-color),2.5rem 0 0 var(--code-header-muted-color)}.code-header span i{font-size:1rem;margin-right:0.4rem;color:var(--code-header-icon-color)}.code-header span i.small{font-size:70%}[file] .code-header span>i{position:relative;top:1px}.code-header span::after{content:attr(data-label-text);font-size:0.85rem;font-weight:600;color:var(--code-header-text-color)}.code-header button{border:1px solid transparent;border-radius:6px;height:2.25rem;width:2.25rem;padding:0;background-color:inherit}.code-header button i{color:var(--code-header-icon-color)}.code-header button[timeout]:hover{border-color:var(--clipboard-checked-color)}.code-header button[timeout] i{color:var(--clipboard-checked-color)}.code-header button:not([timeout]):hover{background-color:rgba(128,128,128,0.37)}.code-header button:not([timeout]):hover i{color:white}.code-header button:focus{outline:none}@media all and (max-width: 576px){.post-content>div[class^='language-']{margin-left:-1.25rem;margin-right:-1.25rem;border-radius:0}.post-content>div[class^='language-'] .highlight{padding-left:0.25rem}.post-content>div[class^='language-'] .code-header{border-radius:0;padding-left:0.4rem;padding-right:0.5rem}}html{font-size:16px}@media (prefers-color-scheme: light){html:not([data-mode]),html[data-mode=light]{--body-bg: #fafafa;--mask-bg: #c1c3c5;--main-wrapper-bg: white;--main-border-color: #f3f3f3;--text-color: #34343c;--text-muted-color: gray;--heading-color: black;--blockquote-border-color: #eee;--blockquote-text-color: #9a9a9a;--link-color: #2a408e;--link-underline-color: #dee2e6;--button-bg: #fff;--btn-border-color: #e9ecef;--btn-backtotop-color: #686868;--btn-backtotop-border-color: #f1f1f1;--btn-box-shadow: #eaeaea;--checkbox-color: #c5c5c5;--checkbox-checked-color: #07a8f7;--sidebar-bg: #eeeeee;--sidebar-muted-color: #a2a19f;--sidebar-active-color: #424242;--nav-cursor-color: #757575;--sidebar-btn-bg: white;--topbar-text-color: rgb(78, 78, 78);--topbar-wrapper-bg: white;--search-wrapper-bg: rgb(245 245 245 / 50%);--search-wrapper-border-color: rgb(245 245 245);--search-tag-bg: #f8f9fa;--search-icon-color: #c2c6cc;--input-focus-border-color: var(--btn-border-color);--post-list-text-color: dimgray;--btn-patinator-text-color: #555555;--btn-paginator-hover-color: var(--sidebar-bg);--btn-paginator-border-color: var(--sidebar-bg);--btn-text-color: #676666;--pin-bg: #f5f5f5;--pin-color: #999fa4;--btn-share-hover-color: var(--link-color);--card-border-color: #f1f1f1;--card-box-shadow: rgba(234, 234, 234, 0.7686274509803922);--label-color: #616161;--relate-post-date: rgba(30, 55, 70, 0.4);--footnote-target-bg: lightcyan;--tag-bg: rgba(0, 0, 0, 0.075);--tag-border: #dee2e6;--tag-shadow: var(--btn-border-color);--tag-hover: rgb(222, 226, 230);--tb-odd-bg: #fbfcfd;--tb-border-color: #eaeaea;--dash-color: silver;--preview-img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(249 249 249) 100%);--kbd-wrap-color: #bdbdbd;--kbd-text-color: var(--text-color);--kbd-bg-color: white;--prompt-text-color: rgb(46 46 46 / 77%);--prompt-tip-bg: rgb(123 247 144 / 20%);--prompt-tip-icon-color: #03b303;--prompt-info-bg: #e1f5fe;--prompt-info-icon-color: #0070cb;--prompt-warning-bg: rgb(255 243 205);--prompt-warning-icon-color: #ef9c03;--prompt-danger-bg: rgb(248 215 218 / 56%);--prompt-danger-icon-color: #df3c30;--categories-hover-bg: var(--btn-border-color);--categories-icon-hover-color: darkslategray;--timeline-color: rgba(0, 0, 0, 0.075);--timeline-node-bg: #c2c6cc;--timeline-year-dot-color: #ffffff}html:not([data-mode]) [class^=prompt-],html[data-mode=light] [class^=prompt-]{--link-underline-color: rgb(219 216 216)}html[data-mode=dark]{--body-bg: var(--main-wrapper-bg);--mask-bg: rgb(68, 69, 70);--main-wrapper-bg: rgb(27, 27, 30);--main-border-color: rgb(44, 45, 45);--text-color: rgb(175, 176, 177);--text-muted-color: rgb(107, 116, 124);--heading-color: #cccccc;--blockquote-border-color: rgb(66, 66, 66);--blockquote-text-color: rgb(117, 117, 117);--link-color: rgb(138, 180, 248);--link-underline-color: rgb(82, 108, 150);--button-bg: rgb(39, 40, 43);--btn-border-color: rgb(63, 65, 68);--btn-backtotop-color: var(--text-color);--btn-backtotop-border-color: var(--btn-border-color);--btn-box-shadow: var(--main-wrapper-bg);--card-header-bg: rgb(51, 50, 50);--label-color: rgb(108, 117, 125);--checkbox-color: rgb(118 120 121);--checkbox-checked-color: var(--link-color);--sidebar-bg: radial-gradient(circle, #242424 0%, #1d1f27 100%);--sidebar-muted-color: #6d6c6b;--sidebar-active-color: rgb(255 255 255 / 80%);--nav-cursor-color: rgb(183, 182, 182);--sidebar-btn-bg: rgb(117 116 116 / 20%);--topbar-text-color: var(--text-color);--topbar-wrapper-bg: rgb(39, 40, 43);--search-wrapper-bg: rgb(34, 34, 39);--search-wrapper-border-color: rgb(34, 34, 39);--search-icon-color: rgb(100, 102, 105);--input-focus-border-color: rgb(112, 114, 115);--post-list-text-color: rgb(175, 176, 177);--btn-patinator-text-color: var(--text-color);--btn-paginator-hover-color: rgb(64, 65, 66);--btn-paginator-border-color: var(--btn-border-color);--btn-text-color: var(--text-color);--pin-bg: rgb(34 35 37);--pin-color: inherit;--toc-highlight: rgb(116, 178, 243);--tag-bg: rgb(41, 40, 40);--tag-hover: rgb(43, 56, 62);--tb-odd-bg: rgba(42, 47, 53, 0.52);--tb-even-bg: rgb(31, 31, 34);--tb-border-color: var(--tb-odd-bg);--footnote-target-bg: rgb(63, 81, 181);--btn-share-color: #6c757d;--btn-share-hover-color: #bfc1ca;--relate-post-date: var(--text-muted-color);--card-bg: rgb(39, 40, 43);--card-border-color: rgb(53, 53, 60);--card-box-shadow: var(--main-wrapper-bg);--preview-img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);--kbd-wrap-color: #6a6a6a;--kbd-text-color: #d3d3d3;--kbd-bg-color: #242424;--prompt-text-color: rgb(216 212 212 / 75%);--prompt-tip-bg: rgba(77, 187, 95, 0.2);--prompt-tip-icon-color: rgb(5 223 5 / 68%);--prompt-info-bg: rgb(7 59 104 / 80%);--prompt-info-icon-color: #0075d1;--prompt-warning-bg: rgb(90 69 3 / 95%);--prompt-warning-icon-color: rgb(255 165 0 / 80%);--prompt-danger-bg: rgb(86 28 8 / 80%);--prompt-danger-icon-color: #cd0202;--tag-border: rgb(59, 79, 88);--tag-shadow: rgb(32, 33, 33);--search-tag-bg: var(--tag-bg);--dash-color: rgb(63, 65, 68);--categories-border: rgb(64, 66, 69);--categories-hover-bg: rgb(73, 75, 76);--categories-icon-hover-color: white;--timeline-node-bg: rgb(150, 152, 156);--timeline-color: rgb(63, 65, 68);--timeline-year-dot-color: var(--timeline-color);color-scheme:dark}html[data-mode=dark] .post img[data-src]{filter:brightness(95%)}html[data-mode=dark] hr{border-color:var(--main-border-color)}html[data-mode=dark] nav[data-toggle=toc] .nav-link.active,html[data-mode=dark] nav[data-toggle=toc] .nav-link.active:focus,html[data-mode=dark] nav[data-toggle=toc] .nav-link.active:hover,html[data-mode=dark] nav[data-toggle=toc] .nav>li>a:focus,html[data-mode=dark] nav[data-toggle=toc] .nav>li>a:hover{color:var(--toc-highlight) !important;border-left-color:var(--toc-highlight) !important}html[data-mode=dark] .categories.card,html[data-mode=dark] .list-group-item{background-color:var(--card-bg)}html[data-mode=dark] .categories .card-header{background-color:var(--card-header-bg)}html[data-mode=dark] .categories .list-group-item{border-left:none;border-right:none;padding-left:2rem;border-color:var(--categories-border)}html[data-mode=dark] .categories .list-group-item:last-child{border-bottom-color:var(--card-bg)}html[data-mode=dark] #archives li:nth-child(odd){background-image:linear-gradient(to left, #1a1a1e, #27272d, #27272d, #27272d, #1a1a1e)}html[data-mode=dark] #disqus_thread{color-scheme:none}}@media (prefers-color-scheme: dark){html:not([data-mode]),html[data-mode=dark]{--body-bg: var(--main-wrapper-bg);--mask-bg: rgb(68, 69, 70);--main-wrapper-bg: rgb(27, 27, 30);--main-border-color: rgb(44, 45, 45);--text-color: rgb(175, 176, 177);--text-muted-color: rgb(107, 116, 124);--heading-color: #cccccc;--blockquote-border-color: rgb(66, 66, 66);--blockquote-text-color: rgb(117, 117, 117);--link-color: rgb(138, 180, 248);--link-underline-color: rgb(82, 108, 150);--button-bg: rgb(39, 40, 43);--btn-border-color: rgb(63, 65, 68);--btn-backtotop-color: var(--text-color);--btn-backtotop-border-color: var(--btn-border-color);--btn-box-shadow: var(--main-wrapper-bg);--card-header-bg: rgb(51, 50, 50);--label-color: rgb(108, 117, 125);--checkbox-color: rgb(118 120 121);--checkbox-checked-color: var(--link-color);--sidebar-bg: radial-gradient(circle, #242424 0%, #1d1f27 100%);--sidebar-muted-color: #6d6c6b;--sidebar-active-color: rgb(255 255 255 / 80%);--nav-cursor-color: rgb(183, 182, 182);--sidebar-btn-bg: rgb(117 116 116 / 20%);--topbar-text-color: var(--text-color);--topbar-wrapper-bg: rgb(39, 40, 43);--search-wrapper-bg: rgb(34, 34, 39);--search-wrapper-border-color: rgb(34, 34, 39);--search-icon-color: rgb(100, 102, 105);--input-focus-border-color: rgb(112, 114, 115);--post-list-text-color: rgb(175, 176, 177);--btn-patinator-text-color: var(--text-color);--btn-paginator-hover-color: rgb(64, 65, 66);--btn-paginator-border-color: var(--btn-border-color);--btn-text-color: var(--text-color);--pin-bg: rgb(34 35 37);--pin-color: inherit;--toc-highlight: rgb(116, 178, 243);--tag-bg: rgb(41, 40, 40);--tag-hover: rgb(43, 56, 62);--tb-odd-bg: rgba(42, 47, 53, 0.52);--tb-even-bg: rgb(31, 31, 34);--tb-border-color: var(--tb-odd-bg);--footnote-target-bg: rgb(63, 81, 181);--btn-share-color: #6c757d;--btn-share-hover-color: #bfc1ca;--relate-post-date: var(--text-muted-color);--card-bg: rgb(39, 40, 43);--card-border-color: rgb(53, 53, 60);--card-box-shadow: var(--main-wrapper-bg);--preview-img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);--kbd-wrap-color: #6a6a6a;--kbd-text-color: #d3d3d3;--kbd-bg-color: #242424;--prompt-text-color: rgb(216 212 212 / 75%);--prompt-tip-bg: rgba(77, 187, 95, 0.2);--prompt-tip-icon-color: rgb(5 223 5 / 68%);--prompt-info-bg: rgb(7 59 104 / 80%);--prompt-info-icon-color: #0075d1;--prompt-warning-bg: rgb(90 69 3 / 95%);--prompt-warning-icon-color: rgb(255 165 0 / 80%);--prompt-danger-bg: rgb(86 28 8 / 80%);--prompt-danger-icon-color: #cd0202;--tag-border: rgb(59, 79, 88);--tag-shadow: rgb(32, 33, 33);--search-tag-bg: var(--tag-bg);--dash-color: rgb(63, 65, 68);--categories-border: rgb(64, 66, 69);--categories-hover-bg: rgb(73, 75, 76);--categories-icon-hover-color: white;--timeline-node-bg: rgb(150, 152, 156);--timeline-color: rgb(63, 65, 68);--timeline-year-dot-color: var(--timeline-color);color-scheme:dark}html:not([data-mode]) .post img[data-src],html[data-mode=dark] .post img[data-src]{filter:brightness(95%)}html:not([data-mode]) hr,html[data-mode=dark] hr{border-color:var(--main-border-color)}html:not([data-mode]) nav[data-toggle=toc] .nav-link.active,html:not([data-mode]) nav[data-toggle=toc] .nav-link.active:focus,html:not([data-mode]) nav[data-toggle=toc] .nav-link.active:hover,html:not([data-mode]) nav[data-toggle=toc] .nav>li>a:focus,html:not([data-mode]) nav[data-toggle=toc] .nav>li>a:hover,html[data-mode=dark] nav[data-toggle=toc] .nav-link.active,html[data-mode=dark] nav[data-toggle=toc] .nav-link.active:focus,html[data-mode=dark] nav[data-toggle=toc] .nav-link.active:hover,html[data-mode=dark] nav[data-toggle=toc] .nav>li>a:focus,html[data-mode=dark] nav[data-toggle=toc] .nav>li>a:hover{color:var(--toc-highlight) !important;border-left-color:var(--toc-highlight) !important}html:not([data-mode]) .categories.card,html:not([data-mode]) .list-group-item,html[data-mode=dark] .categories.card,html[data-mode=dark] .list-group-item{background-color:var(--card-bg)}html:not([data-mode]) .categories .card-header,html[data-mode=dark] .categories .card-header{background-color:var(--card-header-bg)}html:not([data-mode]) .categories .list-group-item,html[data-mode=dark] .categories .list-group-item{border-left:none;border-right:none;padding-left:2rem;border-color:var(--categories-border)}html:not([data-mode]) .categories .list-group-item:last-child,html[data-mode=dark] .categories .list-group-item:last-child{border-bottom-color:var(--card-bg)}html:not([data-mode]) #archives li:nth-child(odd),html[data-mode=dark] #archives li:nth-child(odd){background-image:linear-gradient(to left, #1a1a1e, #27272d, #27272d, #27272d, #1a1a1e)}html:not([data-mode]) #disqus_thread,html[data-mode=dark] #disqus_thread{color-scheme:none}html[data-mode=light]{--body-bg: #fafafa;--mask-bg: #c1c3c5;--main-wrapper-bg: white;--main-border-color: #f3f3f3;--text-color: #34343c;--text-muted-color: gray;--heading-color: black;--blockquote-border-color: #eee;--blockquote-text-color: #9a9a9a;--link-color: #2a408e;--link-underline-color: #dee2e6;--button-bg: #fff;--btn-border-color: #e9ecef;--btn-backtotop-color: #686868;--btn-backtotop-border-color: #f1f1f1;--btn-box-shadow: #eaeaea;--checkbox-color: #c5c5c5;--checkbox-checked-color: #07a8f7;--sidebar-bg: #eeeeee;--sidebar-muted-color: #a2a19f;--sidebar-active-color: #424242;--nav-cursor-color: #757575;--sidebar-btn-bg: white;--topbar-text-color: rgb(78, 78, 78);--topbar-wrapper-bg: white;--search-wrapper-bg: rgb(245 245 245 / 50%);--search-wrapper-border-color: rgb(245 245 245);--search-tag-bg: #f8f9fa;--search-icon-color: #c2c6cc;--input-focus-border-color: var(--btn-border-color);--post-list-text-color: dimgray;--btn-patinator-text-color: #555555;--btn-paginator-hover-color: var(--sidebar-bg);--btn-paginator-border-color: var(--sidebar-bg);--btn-text-color: #676666;--pin-bg: #f5f5f5;--pin-color: #999fa4;--btn-share-hover-color: var(--link-color);--card-border-color: #f1f1f1;--card-box-shadow: rgba(234, 234, 234, 0.7686274509803922);--label-color: #616161;--relate-post-date: rgba(30, 55, 70, 0.4);--footnote-target-bg: lightcyan;--tag-bg: rgba(0, 0, 0, 0.075);--tag-border: #dee2e6;--tag-shadow: var(--btn-border-color);--tag-hover: rgb(222, 226, 230);--tb-odd-bg: #fbfcfd;--tb-border-color: #eaeaea;--dash-color: silver;--preview-img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(249 249 249) 100%);--kbd-wrap-color: #bdbdbd;--kbd-text-color: var(--text-color);--kbd-bg-color: white;--prompt-text-color: rgb(46 46 46 / 77%);--prompt-tip-bg: rgb(123 247 144 / 20%);--prompt-tip-icon-color: #03b303;--prompt-info-bg: #e1f5fe;--prompt-info-icon-color: #0070cb;--prompt-warning-bg: rgb(255 243 205);--prompt-warning-icon-color: #ef9c03;--prompt-danger-bg: rgb(248 215 218 / 56%);--prompt-danger-icon-color: #df3c30;--categories-hover-bg: var(--btn-border-color);--categories-icon-hover-color: darkslategray;--timeline-color: rgba(0, 0, 0, 0.075);--timeline-node-bg: #c2c6cc;--timeline-year-dot-color: #ffffff}html[data-mode=light] [class^=prompt-]{--link-underline-color: rgb(219 216 216)}}body{line-height:1.75rem;background:var(--body-bg);color:var(--text-color);-webkit-font-smoothing:antialiased;font-family:'Source Sans Pro', 'Microsoft Yahei', sans-serif}h1{font-size:1.9rem}h2{font-size:1.5rem}h3{font-size:1.2rem}h4{font-size:1.15rem}h5{font-size:1.1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:1rem}img{max-width:100%;height:auto}blockquote{border-left:5px solid var(--blockquote-border-color);padding-left:1rem;color:var(--blockquote-text-color)}blockquote[class^="prompt-"]{display:flex;border-left:0;border-radius:6px;padding:0.75rem 1.2rem;color:var(--prompt-text-color)}blockquote[class^="prompt-"]::before{margin-right:1rem;font-family:"Font Awesome 5 Free";text-align:center;width:1.25rem}blockquote[class^="prompt-"] p:last-child{margin-bottom:0rem}blockquote.prompt-tip{background-color:var(--prompt-tip-bg)}blockquote.prompt-tip::before{content:"";color:var(--prompt-tip-icon-color);font-weight:400}blockquote.prompt-info{background-color:var(--prompt-info-bg)}blockquote.prompt-info::before{content:"";color:var(--prompt-info-icon-color);font-weight:900}blockquote.prompt-warning{background-color:var(--prompt-warning-bg)}blockquote.prompt-warning::before{content:"";color:var(--prompt-warning-icon-color);font-weight:900}blockquote.prompt-danger{background-color:var(--prompt-danger-bg)}blockquote.prompt-danger::before{content:"";color:var(--prompt-danger-icon-color);font-weight:900}mjx-container{overflow-x:auto;overflow-y:hidden}kbd{font-family:inherit;display:inline-block;vertical-align:middle;line-height:1.3rem;min-width:1.75rem;text-align:center;margin:0 0.3rem;padding-top:0.1rem;color:var(--kbd-text-color);background-color:var(--kbd-bg-color);border-radius:0.25rem;border:solid 1px var(--kbd-wrap-color);box-shadow:inset 0 -2px 0 var(--kbd-wrap-color)}footer{padding-left:1.5rem;padding-right:1.5rem;font-size:0.8rem}footer>div.d-flex{height:5rem;line-height:1.2rem;padding-bottom:1rem;border-top:1px solid var(--main-border-color)}footer>div.d-flex>div{width:350px}footer a:link{text-decoration:none}footer a:hover{text-decoration:none}footer .footer-right{text-align:right}@keyframes fade-in{from{opacity:0}to{opacity:1}}img[data-src]{margin:0.5rem 0}img[data-src][data-loaded=true]{animation:fade-in linear 0.5s}img.left[data-src]{float:left;margin:0.75rem 1rem 1rem 0}img.right[data-src]{float:right;margin:0.75rem 0 1rem 1rem}img.shadow[data-src]{filter:drop-shadow(2px 4px 6px rgba(0,0,0,0.08));box-shadow:none !important}.access{top:2rem;transition:top 0.2s ease-in-out;margin-top:3rem;margin-bottom:4rem}.access:only-child{position:-webkit-sticky;position:sticky}.access>div{padding-left:1rem;border-left:1px solid var(--main-border-color)}.access>div:not(:last-child){margin-bottom:4rem}.access .post-content{font-size:0.9rem}#panel-wrapper .panel-heading{color:var(--label-color);font-size:inherit;font-weight:600}#panel-wrapper .post-tag{display:inline-block;line-height:1rem;font-size:0.85rem;background:none;border:1px solid var(--btn-border-color);border-radius:0.8rem;padding:0.3rem 0.5rem;margin:0 0.35rem 0.5rem 0}#panel-wrapper .post-tag:hover{background-color:#2a408e;border-color:#2a408e;color:#fff;transition:none}[data-topbar-visible=true] #panel-wrapper>div{top:6rem}#access-lastmod li{height:1.8rem;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;list-style:none}#access-lastmod a{color:inherit}.footnotes>ol{padding-left:2rem;margin-top:0.5rem}.footnotes>ol>li:not(:last-child){margin-bottom:0.3rem}.footnotes>ol>li>p{margin-left:0.25em;margin-top:0;margin-bottom:0}.footnotes>ol>li:target:not([scroll-focus]),.footnotes>ol>li[scroll-focus=true]>p{background-color:var(--footnote-target-bg);width:fit-content;-webkit-transition:background-color 1.5s ease-in-out;transition:background-color 1.5s ease-in-out}a.footnote{margin-left:1px;margin-right:1px;padding-left:2px;padding-right:2px;border-bottom-style:none !important;-webkit-transition:background-color 1.5s ease-in-out;transition:background-color 1.5s ease-in-out}sup:target:not([scroll-focus]),sup[scroll-focus=true]>a.footnote{background-color:var(--footnote-target-bg)}a.reversefootnote{font-size:0.6rem;line-height:1;position:relative;bottom:0.25em;margin-left:0.25em;border-bottom-style:none !important}.table-wrapper{overflow-x:auto;margin-bottom:1.5rem}.table-wrapper>table{min-width:100%;overflow-x:auto;border-spacing:0}.table-wrapper>table thead{border-bottom:solid 2px rgba(210,215,217,0.75)}.table-wrapper>table tbody tr{border-bottom:1px solid var(--tb-border-color)}.table-wrapper>table tbody tr:nth-child(2n){background-color:var(--tb-even-bg)}.table-wrapper>table tbody tr:nth-child(2n + 1){background-color:var(--tb-odd-bg)}.post h1{margin-top:3rem;margin-bottom:1.5rem}.post a.popup{cursor:zoom-in}.post a.popup>img[data-src]:not(.normal):not(.left):not(.right){position:relative;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.pageviews .fa-spinner{font-size:80%}.post-meta{font-size:0.85rem;word-spacing:1px}.post-meta a:not(:last-child){margin-right:2px}.post-content{font-size:1.08rem;line-height:1.8;margin-top:2rem;overflow-wrap:break-word;word-wrap:break-word}.post-content ul .task-list-item[hide-bullet]{list-style-type:none}.post-content ul .task-list-item[hide-bullet]>i{margin:0 0.4rem 0.2rem -1.4rem;vertical-align:middle;color:var(--checkbox-color)}.post-content ul .task-list-item[hide-bullet]>i.checked{color:var(--checkbox-checked-color)}.post-content ul input[type=checkbox]{margin:0 0.5rem 0.2rem -1.3rem;vertical-align:middle}.post-content>ol,.post-content>ul{padding-left:2rem}.post-content>ol li ol,.post-content>ol li ul,.post-content>ul li ol,.post-content>ul li ul{padding-left:2rem;margin-top:0.3rem}.post-content>ol li{padding-left:0.25em}.post-content dl>dd{margin-left:1rem}.post-tag{display:inline-block;min-width:2rem;text-align:center;background:var(--tag-bg);border-radius:0.3rem;padding:0 0.4rem;color:inherit;line-height:1.3rem}.post-tag:not(:last-child){margin-right:0.2rem}.post-tag:hover{border-bottom:none;text-decoration:none;color:#d2603a}.btn-lang{border:1px solid !important;padding:1px 3px;border-radius:3px;color:var(--link-color)}.btn-lang:focus{box-shadow:none}.loaded{display:block !important}.d-flex.loaded{display:flex !important}.unloaded{display:none !important}.visible{visibility:visible !important}.hidden{visibility:hidden !important}.flex-grow-1{-ms-flex-positive:1 !important;flex-grow:1 !important}.btn-box-shadow{box-shadow:0 0 8px 0 var(--btn-box-shadow) !important}.no-text-decoration{text-decoration:none}.tooltip-inner{font-size:0.7rem;max-width:220px;text-align:left}.disabled{color:#cec4c4;pointer-events:auto;cursor:not-allowed}.hide-border-bottom{border-bottom:none !important}.input-focus{box-shadow:none;border-color:var(--input-focus-border-color) !important;background:center !important;transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out}figure .mfp-title{text-align:center;padding-right:0;margin-top:0.5rem}.mermaid{text-align:center}#sidebar{padding-left:0;padding-right:0;position:fixed;top:0;left:0;height:100%;overflow-y:auto;width:260px;z-index:99;background:var(--sidebar-bg);-ms-overflow-style:none;scrollbar-width:none}#sidebar::-webkit-scrollbar{display:none}#sidebar a:hover{text-decoration:none;color:var(--sidebar-active-color) !important}#sidebar #avatar>a{display:block;width:6rem;height:6rem;border-radius:50%;border:2px solid rgba(222,222,222,0.7);overflow:hidden;transform:translateZ(0);-webkit-transition:border-color 0.35s ease-in-out;-moz-transition:border-color 0.35s ease-in-out;transition:border-color 0.35s ease-in-out}#sidebar #avatar>a:hover{border-color:white}#sidebar #avatar img{width:100%;height:100%;-webkit-transition:transform 0.5s;-moz-transition:transform 0.5s;transition:transform 0.5s}#sidebar #avatar img:hover{-ms-transform:scale(1.2);-moz-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2)}#sidebar .site-title a{font-weight:900;font-size:1.5rem;letter-spacing:0.5px;color:#868585}#sidebar .site-subtitle{font-size:95%;color:var(--sidebar-muted-color);line-height:1.2rem;word-spacing:1px;margin:0.5rem 1.5rem 0.5rem 1.5rem;min-height:3rem;user-select:none}#sidebar .nav-link{border-radius:0;font-size:0.95rem;font-weight:600;letter-spacing:1px;display:table-cell;vertical-align:middle}#sidebar .nav-item{text-align:center;display:table;height:3rem}#sidebar .nav-item.active .nav-link{color:var(--sidebar-active-color)}#sidebar ul{height:15rem;margin-bottom:2rem;padding-left:0}#sidebar ul li{width:100%}#sidebar ul li:last-child a{position:relative;left:1px;width:100%}#sidebar ul li:last-child::after{display:table;visibility:hidden;content:"";position:relative;right:1px;width:2px;height:1.6rem;border-radius:1px;background-color:var(--nav-cursor-color);pointer-events:none}#sidebar ul>li.active:nth-child(1)~li:last-child::after,#sidebar ul>li.nav-item:nth-child(1):hover~li:last-child::after{top:-11.3rem;visibility:visible}#sidebar ul>li.active:nth-child(2)~li:last-child::after,#sidebar ul>li.nav-item:nth-child(2):hover~li:last-child::after{top:-8.3rem;visibility:visible}#sidebar ul>li.active:nth-child(3)~li:last-child::after,#sidebar ul>li.nav-item:nth-child(3):hover~li:last-child::after{top:-5.3rem;visibility:visible}#sidebar ul>li.active:nth-child(4)~li:last-child::after,#sidebar ul>li.nav-item:nth-child(4):hover~li:last-child::after{top:-2.3rem;visibility:visible}#sidebar ul>li.active:nth-child(5):last-child::after,#sidebar ul>li.nav-item:nth-child(5):last-child:hover::after{top:.7rem;visibility:visible}#sidebar .sidebar-bottom{margin-bottom:2.1rem;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}#sidebar .sidebar-bottom .mode-toggle,#sidebar .sidebar-bottom a{width:2.4rem;text-align:center}#sidebar .sidebar-bottom i{font-size:1.2rem;line-height:1.75rem}#sidebar .sidebar-bottom .mode-toggle{padding:0;border:0;margin-bottom:1px;background-color:transparent}#sidebar .sidebar-bottom .mode-toggle:hover>i{color:var(--sidebar-active-color)}#sidebar .sidebar-bottom .icon-border{background-color:var(--sidebar-muted-color);content:"";width:3px;height:3px;border-radius:50%}@media (hover: hover){#sidebar ul>li:last-child::after{-webkit-transition:top 0.5s ease;-moz-transition:top 0.5s ease;-o-transition:top 0.5s ease;transition:top 0.5s ease}}.profile-wrapper{margin-top:2rem;width:100%}#search-result-wrapper{display:none;height:100%;width:100%;overflow:auto}#search-result-wrapper .post-content{margin-top:2rem}#topbar-wrapper{height:3rem;position:fixed;top:0;left:260px;right:0;transition:top 0.2s ease-in-out;z-index:50;border-bottom:1px solid rgba(0,0,0,0.07);background-color:var(--topbar-wrapper-bg)}[data-topbar-visible=false] #topbar-wrapper{top:-3rem}#topbar i{color:#999}#topbar #breadcrumb{font-size:1rem;color:gray;padding-left:0.5rem}#topbar #breadcrumb span:not(:last-child)::after{content:"›";padding:0 0.3rem}#sidebar-trigger,#search-trigger{display:none}#search-wrapper{display:flex;width:100%;border-radius:1rem;border:1px solid var(--search-wrapper-border-color);background:var(--search-wrapper-bg);padding:0 0.5rem}#search-wrapper i{z-index:2;font-size:0.9rem;color:var(--search-icon-color)}#search-cancel{color:var(--link-color);margin-left:1rem;display:none}#search-input{background:center;border:0;border-radius:0;padding:0.18rem 0.3rem;color:var(--text-color);height:auto}#search-input:focus{box-shadow:none;background:center}#search-input.form-control:focus::-webkit-input-placeholder{opacity:0.6}#search-input.form-control:focus::-moz-placeholder{opacity:0.6}#search-input.form-control:focus:-ms-input-placeholder{opacity:0.6}#search-input.form-control:focus::placeholder{opacity:0.6}#search-hints{padding:0 1rem}#search-hints h4{margin-bottom:1.5rem}#search-hints .post-tag{display:inline-block;line-height:1rem;font-size:1rem;background:var(--search-tag-bg);border:none;padding:0.5rem;margin:0 1.25rem 1rem 0}#search-hints .post-tag::before{content:"#";color:var(--text-muted-color);padding-right:0.2rem}#search-results{padding-bottom:3rem}#search-results a{font-size:1.4rem;line-height:2.5rem}#search-results>div{width:100%}#search-results>div:not(:last-child){margin-bottom:1rem}#search-results>div i{color:#818182;margin-right:0.15rem;font-size:80%}#search-results>div>p{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}#topbar-title{display:none;font-size:1.1rem;font-weight:600;font-family:sans-serif;color:var(--topbar-text-color);text-align:center;width:70%;overflow:hidden;text-overflow:ellipsis;word-break:keep-all;white-space:nowrap}#core-wrapper{min-height:calc(100vh - 3rem - 5rem)}#mask{display:none;position:fixed;top:0;right:0;bottom:0;left:0;height:100%;width:100%;z-index:1}[sidebar-display] #mask{display:block !important}#main-wrapper{background-color:var(--main-wrapper-bg);position:relative;min-height:100vh;padding-left:0;padding-right:0}#core-wrapper,#panel-wrapper{margin-top:3rem}#topbar-wrapper.row,#main>.row,#search-result-wrapper>.row{margin-left:0;margin-right:0}#back-to-top{display:none;z-index:1;cursor:pointer;position:fixed;background:var(--button-bg);color:var(--btn-backtotop-color);padding:0;width:2.7em;height:2.7em;border-radius:50%;border:1px solid var(--btn-backtotop-border-color);transition:transform 0.2s ease-out;-webkit-transition:transform 0.2s ease-out}#back-to-top i{line-height:2.7em;position:relative;bottom:2px}#back-to-top:hover{transform:translate3d(0, -5px, 0);-webkit-transform:translate3d(0, -5px, 0)}@keyframes popup{from{opacity:0;bottom:0}}#notification .toast-header{background:none;border-bottom:none;color:inherit}#notification .toast-body{font-family:'Lato';line-height:1.25rem}#notification .toast-body button{font-size:90%;min-width:4rem}#notification.toast{display:none}#notification.toast.show{display:block;min-width:20rem;border-radius:0.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:rgba(255,255,255,0.5);color:#1b1b1eba;position:fixed;left:50%;bottom:20%;transform:translateX(-50%);animation:popup 0.8s}@media all and (max-width: 576px){footer{height:6rem}footer>div.d-flex{padding:1.5rem 0;flex-wrap:wrap;-ms-flex-pack:distribute !important;justify-content:space-around !important}footer .footer-left,footer .footer-right{text-align:center}#core-wrapper{min-height:calc(100vh - 3rem - 6rem) !important}#core-wrapper h1{margin-top:2.2rem;font-size:1.75rem}#core-wrapper .post-content>blockquote[class^=prompt-]{margin-left:-1.25rem;margin-right:-1.25rem;border-radius:0}#avatar>a{width:5rem;height:5rem}.site-subtitle{margin-left:1.8rem;margin-right:1.8rem}}@media all and (max-width: 768px){#main,#topbar{max-width:100%}#main{padding-left:0;padding-right:0}}@media all and (max-width: 849px){html,body{overflow-x:hidden}[sidebar-display] #sidebar{transform:translateX(0)}[sidebar-display] #topbar-wrapper,[sidebar-display] #main-wrapper{transform:translateX(260px)}#sidebar{-webkit-transition:transform 0.4s ease;transition:transform 0.4s ease;transform:translateX(-260px);-webkit-transform:translateX(-260px)}#sidebar .cursor{-webkit-transition:none;-moz-transition:none;transition:none}#main-wrapper{-webkit-transition:transform 0.4s ease;transition:transform 0.4s ease;padding-top:3rem}#topbar,#main{max-width:100%}#search-result-wrapper{width:100%}#breadcrumb,#search-wrapper{display:none}#topbar-wrapper{-webkit-transition:transform 0.4s ease, top 0.2s ease;transition:transform 0.4s ease, top 0.2s ease;left:0}#core-wrapper,#panel-wrapper{margin-top:0}#topbar-title,#sidebar-trigger,#search-trigger{display:block}#search-result-wrapper .post-content{letter-spacing:0}#tags{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}h1.dynamic-title{display:none}h1.dynamic-title~.post-content{margin-top:3rem}}@media all and (max-width: 849px) and (orientation: portrait){[data-topbar-visible=false] #topbar-wrapper{top:0}}@media all and (min-width: 577px) and (max-width: 1199px){footer>.d-flex>div{width:312px}}@media all and (min-width: 850px){html{overflow-y:scroll}#main-wrapper{margin-left:260px}.profile-wrapper{margin-top:3rem}#search-hints{display:none}#search-wrapper{max-width:210px}#search-result-wrapper{margin-top:3rem;max-width:1250px}div.post-content .table-wrapper>table{min-width:70%}#back-to-top{bottom:5.5rem;right:5%}#topbar{padding-left:2rem;padding-right:2rem}#topbar-title{text-align:left}}@media all and (min-width: 992px) and (max-width: 1199px){#main .col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 96%;flex:0 0 96%;max-width:96%}}@media all and (min-width: 850px) and (max-width: 1199px){#sidebar{width:210px}#sidebar .site-subtitle{margin-left:1rem;margin-right:1rem}#sidebar .sidebar-bottom a,#sidebar .sidebar-bottom span{width:2rem}#sidebar .sidebar-bottom .icon-border{left:-3px}#topbar-wrapper{left:210px}#search-results>div{max-width:700px}.site-title{font-size:1.3rem;margin-left:0 !important}.site-subtitle{margin-left:1rem;margin-right:1rem;font-size:90%}#main-wrapper{margin-left:210px}#breadcrumb{width:65%;overflow:hidden;text-overflow:ellipsis;word-break:keep-all;white-space:nowrap}}@media all and (max-width: 1199px){#panel-wrapper{display:none}#main>div.row{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}}@media all and (min-width: 1200px){#back-to-top{bottom:6.5rem}#search-wrapper{margin-right:4rem}#search-input{-webkit-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out}#search-results>div{width:46%}#search-results>div:nth-child(odd){margin-right:1.5rem}#search-results>div:nth-child(even){margin-left:1.5rem}#search-results>div:last-child:nth-child(odd){position:relative;right:24.3%}.post-content{font-size:1.03rem}footer>div.d-felx{width:85%}}@media all and (min-width: 1400px){#back-to-top{right:calc((100vw - 260px - 1140px) / 2 + 3rem)}}@media all and (min-width: 1650px){#main-wrapper{margin-left:350px}#topbar-wrapper{left:350px}#search-wrapper{margin-right:calc(1250px * 0.25 - 210px)}#topbar,#main{max-width:1250px}#core-wrapper,#tail-wrapper{padding-right:4.5rem !important}#back-to-top{right:calc((100vw - 350px - 1250px) / 2 + 2rem)}#sidebar{width:350px}#sidebar .profile-wrapper{margin-top:4rem;margin-bottom:1rem}#sidebar .profile-wrapper.text-center{text-align:left !important}#sidebar .profile-wrapper .site-subtitle,#sidebar .profile-wrapper .site-title,#sidebar .profile-wrapper #avatar{margin-left:4.5rem}#sidebar .profile-wrapper #avatar>a{width:6.2rem;height:6.2rem}#sidebar .profile-wrapper #avatar>a.mx-auto{margin-left:0 !important}#sidebar .profile-wrapper .site-title a{font-size:1.7rem;letter-spacing:1px}#sidebar .profile-wrapper .site-subtitle{word-spacing:0;margin-top:0.3rem}#sidebar ul{padding-left:2.5rem}#sidebar ul>li:last-child>a{position:static}#sidebar ul .nav-item{text-align:left}#sidebar ul .nav-item .nav-link>span{letter-spacing:2px}#sidebar ul .nav-item .nav-link>i.unloaded{display:inline-block !important}#sidebar .sidebar-bottom{padding-left:3.5rem;width:100%}#sidebar .sidebar-bottom.justify-content-center{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}#sidebar .sidebar-bottom>span,#sidebar .sidebar-bottom>button.mode-toggle,#sidebar .sidebar-bottom>a{margin-left:.15rem;margin-right:.15rem;height:2rem;margin-bottom:0.5rem}#sidebar .sidebar-bottom i{background-color:var(--sidebar-btn-bg);font-size:1rem;width:2rem;height:2rem;border-radius:50%;position:relative}#sidebar .sidebar-bottom i::before{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}#sidebar .sidebar-bottom .icon-border{top:0.9rem}}.pagination{color:var(--btn-patinator-text-color);font-family:'Lato', sans-serif}.pagination a:hover{text-decoration:none}.pagination .page-item .page-link{color:inherit;width:2.5rem;height:2.5rem;padding:0;display:-webkit-box;-webkit-box-pack:center;-webkit-box-align:center;border-radius:50%;border:1px solid var(--btn-paginator-border-color);background-color:var(--button-bg)}.pagination .page-item .page-link:hover{background-color:var(--btn-paginator-hover-color)}.pagination .page-item.active .page-link{background-color:var(--btn-paginator-hover-color);color:var(--btn-text-color)}.pagination .page-item.disabled{cursor:not-allowed}.pagination .page-item.disabled .page-link{color:rgba(108,117,125,0.57);border-color:var(--btn-paginator-border-color);background-color:var(--button-bg)}.pagination .page-item:first-child .page-link,.pagination .page-item:last-child .page-link{border-radius:50%}#post-list{margin-top:1rem;padding-right:0.5rem}#post-list .post-preview{padding-top:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--main-border-color)}#post-list .post-preview h1{font-size:1.4rem;margin:0}#post-list .post-preview .post-meta i{font-size:0.73rem}#post-list .post-preview .post-meta i:not(:first-child){margin-left:1.2rem}#post-list .post-preview .post-content{margin-top:0.6rem;margin-bottom:0.6rem;color:var(--post-list-text-color)}#post-list .post-preview .post-content>p{margin:0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}#post-list .post-preview .pin>i{transform:rotate(45deg);padding-left:3px;color:var(--pin-color)}#post-list .post-preview .pin>span{display:none}@media all and (max-width: 830px){.pagination{justify-content:space-evenly}.pagination .page-item:not(:first-child):not(:last-child){display:none}}@media all and (min-width: 831px){#post-list{margin-top:1.5rem}#post-list .post-preview .post-meta .pin{background:var(--pin-bg);border-radius:5px;line-height:1.4rem;height:1.3rem;margin-top:3px;padding-left:1px;padding-right:6px}#post-list .post-preview .post-meta .pin>span{display:inline}.pagination{font-size:0.85rem}.pagination .page-item:not(:last-child){margin-right:0.7rem}.pagination .page-item .page-link{width:2rem;height:2rem}.pagination .page-index{display:none}}@media all and (max-width: 1200px){#post-list{padding-right:0}}#related-posts .card h3,h1+.post-meta em a,h1+.post-meta em,footer a{color:var(--text-color)}h1+.post-meta span+span::before{content:"\2022";padding-left:.25rem;padding-right:.25rem}img.preview-img{margin:0;border-radius:6px}img.preview-img.bg[data-loaded=true]{background:var(--preview-img-bg)}.post-tail-wrapper{margin-top:6rem;border-bottom:1px double var(--main-border-color);font-size:0.85rem}.post-tags{line-height:2rem}.post-navigation{padding-top:3rem;padding-bottom:4rem}.post-navigation .btn{width:50%;position:relative;border-color:var(--btn-border-color);color:var(--link-color)}.post-navigation .btn:hover{background:#2a408e;color:#fff;border-color:#2a408e}.post-navigation .btn.disabled{width:50%;position:relative;border-color:var(--btn-border-color);pointer-events:auto;cursor:not-allowed;background:none;color:gray}.post-navigation .btn.disabled:hover{border-color:none}.post-navigation .btn.btn-outline-primary.disabled:focus{box-shadow:none}.post-navigation .btn::before{color:var(--text-muted-color);font-size:0.65rem;text-transform:uppercase;content:attr(prompt)}.post-navigation .btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0;left:0.5px}.post-navigation .btn:last-child{border-top-left-radius:0;border-bottom-left-radius:0;right:0.5px}.post-navigation p{font-size:1.1rem;line-height:1.5rem;margin-top:0.3rem;white-space:normal}@keyframes fade-up{from{opacity:0;position:relative;top:2rem}to{opacity:1;position:relative;top:0}}#toc-wrapper{border-left:1px solid rgba(158,158,158,0.17);position:-webkit-sticky;position:sticky;top:4rem;transition:top 0.2s ease-in-out;animation:fade-up 0.8s}#toc li a{font-size:0.8rem}#toc li a.nav-link:not(.active){color:inherit}nav[data-toggle=toc] .nav .nav>li>a.active{font-weight:600 !important}#related-posts>h3{color:var(--label-color);font-size:1.1rem;font-weight:600}#related-posts em{color:var(--relate-post-date)}#related-posts .card{border-color:var(--card-border-color);background-color:var(--card-bg);box-shadow:0 0 5px 0 var(--card-box-shadow);-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out}#related-posts .card:hover{-webkit-transform:translate3d(0, -3px, 0);transform:translate3d(0, -3px, 0);box-shadow:0 10px 15px -4px rgba(0,0,0,0.15)}#related-posts p{font-size:0.9rem;margin-bottom:0.5rem;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}#related-posts a:hover{text-decoration:none}#related-posts ul{list-style-type:none;padding-inline-start:1.5rem}#related-posts ul>li::before{background:#c2c9d4;width:5px;height:5px;border-radius:1px;display:block;content:"";position:relative;top:1rem;right:1rem}#tail-wrapper{min-height:2rem}#tail-wrapper>div:last-of-type{margin-bottom:2rem}#tail-wrapper #disqus_thread{min-height:8.5rem}.post-tail-bottom a{color:inherit}.share-wrapper .share-icons>i:hover,.share-wrapper .share-icons a:hover>i{color:var(--btn-share-hover-color) !important}.share-wrapper{vertical-align:middle;user-select:none}.share-wrapper .share-icons{font-size:1.2rem}.share-wrapper .share-icons a:not(:last-child){margin-right:0.25rem}.share-wrapper .share-icons a:hover{text-decoration:none}.share-wrapper .share-icons>i{position:relative;bottom:1px}.share-wrapper .share-icons .fab.fa-twitter{color:var(--btn-share-color, #1da1f2)}.share-wrapper .share-icons .fab.fa-facebook-square{color:var(--btn-share-color, #425f9c)}.share-wrapper .share-icons .fab.fa-telegram{color:var(--btn-share-color, #279fd9)}.share-wrapper .share-icons .fab.fa-weibo{color:var(--btn-share-color, #e5142b)}.share-wrapper .fas.fa-link{color:var(--btn-share-color, #ababab)}.share-label{color:inherit;font-size:inherit;font-weight:400}.share-label::after{content:":"}.license-wrapper{line-height:1.2rem}.license-wrapper>a{color:var(--text-color)}.license-wrapper span:last-child{font-size:0.85rem}@media all and (max-width: 576px){.preview-img[data-src]{margin-top:2.2rem}.post-tail-bottom{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.post-tail-bottom>div:first-child{width:100%;margin-top:1rem}}@media all and (max-width: 768px){.post-content>p>img{max-width:calc(100% + 1rem)}}@media all and (max-width: 849px){.post-navigation{padding-left:0;padding-right:0;margin-left:-0.5rem;margin-right:-0.5rem}.preview-img[data-src]{max-width:100vw;border-radius:0}}.tag{border-radius:0.7em;padding:6px 8px 7px;margin-right:0.8rem;line-height:3rem;letter-spacing:0;border:1px solid var(--tag-border) !important;box-shadow:0 0 3px 0 var(--tag-shadow)}.tag span{margin-left:0.6em;font-size:0.7em;font-family:'Oswald', sans-serif}#archives ul li:first-child::before,#archives ul li::after{content:"";width:4px;left:75px;display:inline-block;float:left;position:relative;background-color:var(--timeline-color)}#archives{letter-spacing:0.03rem}#archives span.lead{font-size:1.5rem;position:relative;left:8px}#archives span.lead::after{content:"";display:block;position:relative;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;width:12px;height:12px;top:-26px;left:63px;border:3px solid;background-color:var(--timeline-year-dot-color);border-color:var(--timeline-node-bg);box-shadow:0 0 2px 0 #c2c6cc;z-index:1}#archives span.lead:not(:first-child){position:relative;left:4px}#archives span.lead:not(:first-child)::after{left:67px}#archives ul li{font-size:1.1rem;line-height:3rem}#archives ul li div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#archives ul li div a{margin-left:2.5rem;position:relative;top:0.1rem}#archives ul li:nth-child(odd){background-color:var(--main-wrapper-bg, #fff);background-image:linear-gradient(to left, #fff, #fbfbfb, #fbfbfb, #fbfbfb, #fff)}#archives ul li::after{height:2.8rem;top:-1.3rem}#archives ul li:first-child::before{height:3.06rem;top:-1.61rem}#archives ul:not(:last-child)>li:last-child::after{height:3.4rem}#archives ul:last-child>li:last-child::after{display:none}#archives .date{white-space:nowrap;display:inline-block}#archives .date.month{width:1.4rem;text-align:center}#archives .date.month~a::before{content:"";display:inline-block;position:relative;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;width:8px;height:8px;float:left;top:1.35rem;left:69px;background-color:var(--timeline-node-bg);box-shadow:0 0 3px 0 #c2c6cc;z-index:1}#archives .date.day{font-size:85%;font-family:'Lato', sans-serif;text-align:center;margin-right:-2px;width:1.2rem;position:relative;left:-0.15rem}@media all and (max-width: 576px){#archives{margin-top:-1rem}#archives ul{letter-spacing:0}}.categories i{color:gray}.categories{margin-bottom:2rem}.categories .card-header{padding-right:12px}.categories i{font-size:86%}.categories .list-group-item{border-left:none;border-right:none;padding-left:2rem}.categories .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.category-trigger{width:1.7rem;height:1.7rem;border-radius:50%;text-align:center;color:#6c757d !important}.category-trigger:hover i{color:var(--categories-icon-hover-color)}.category-trigger i{position:relative;height:0.7rem;width:1rem;transition:transform 300ms ease}@media (hover: hover){.category-trigger:hover{background-color:var(--categories-hover-bg)}}.rotate{-ms-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.dash{margin:0 0.5rem 0.6rem 0.5rem;border-bottom:2px dotted var(--dash-color)}#page-category ul>li,#page-tag ul>li{line-height:1.5rem;padding:0.6rem 0}#page-category ul>li::before,#page-tag ul>li::before{background:#999;width:5px;height:5px;border-radius:50%;display:block;content:"";position:relative;top:0.6rem;margin-right:0.5rem}#page-category ul>li>a,#page-tag ul>li>a{font-size:1.1rem}#page-category ul>li>span:last-child,#page-tag ul>li>span:last-child{white-space:nowrap}#page-tag h1>i{font-size:1.2rem}#page-category h1>i{font-size:1.25rem}#page-category a:hover,#page-tag a:hover,#access-lastmod a:hover{margin-bottom:-1px}@media all and (max-width: 576px){#page-category ul>li::before,#page-tag ul>li::before{margin:0 0.5rem}#page-category ul>li>a,#page-tag ul>li>a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}} + +/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/assets/css/style.css.map b/assets/css/style.css.map new file mode 100644 index 0000000..36581b3 --- /dev/null +++ b/assets/css/style.css.map @@ -0,0 +1,44 @@ +{ + "version": 3, + "file": "style.css", + "sources": [ + "style.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/jekyll-theme-chirpy.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/colors/light-typography.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/colors/dark-typography.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/addon/module.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/addon/variables.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/variables-hook.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/addon/syntax.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/colors/light-syntax.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/colors/dark-syntax.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/addon/commons.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/layout/home.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/layout/post.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/layout/tags.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/layout/archives.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/layout/categories.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.2.1/_sass/layout/category-tag.scss" + ], + "sourcesContent": [ + "/*\n If the number of TAB files has changed, the following variable is required.\n And it must be defined before `@import`.\n*/\n$tab-count: 5; // plus 1 for home tab\n\n@import \"jekyll-theme-chirpy\";\n\n/* append your custom style below */\n", + "/*!\n * The styles for Jekyll theme Chirpy\n *\n * Chirpy v5.2.1 (https://github.com/cotes2020/jekyll-theme-chirpy)\n * Ā© 2019 Cotes Chung\n * MIT Licensed\n */\n\n@import\n \"colors/light-typography\",\n \"colors/dark-typography\",\n\n \"addon/module\",\n \"addon/variables\",\n \"variables-hook\",\n \"addon/syntax\",\n \"addon/commons\",\n\n \"layout/home\",\n \"layout/post\",\n \"layout/tags\",\n \"layout/archives\",\n \"layout/categories\",\n \"layout/category-tag\";\n", + "/*\n * The syntax light mode typography colors\n */\n\n@mixin light-scheme {\n /* Framework color */\n --body-bg: #fafafa;\n --mask-bg: #c1c3c5;\n --main-wrapper-bg: white;\n --main-border-color: #f3f3f3;\n\n /* Common color */\n --text-color: #34343c;\n --text-muted-color: gray;\n --heading-color: black;\n --blockquote-border-color: #eee;\n --blockquote-text-color: #9a9a9a;\n --link-color: #2a408e;\n --link-underline-color: #dee2e6;\n --button-bg: #fff;\n --btn-border-color: #e9ecef;\n --btn-backtotop-color: #686868;\n --btn-backtotop-border-color: #f1f1f1;\n --btn-box-shadow: #eaeaea;\n --checkbox-color: #c5c5c5;\n --checkbox-checked-color: #07a8f7;\n\n /* Sidebar */\n --sidebar-bg: #eeeeee;\n --sidebar-muted-color: #a2a19f;\n --sidebar-active-color: #424242;\n --nav-cursor-color: #757575;\n --sidebar-btn-bg: white;\n\n /* Topbar */\n --topbar-text-color: rgb(78, 78, 78);\n --topbar-wrapper-bg: white;\n --search-wrapper-bg: rgb(245 245 245 / 50%);\n --search-wrapper-border-color: rgb(245 245 245);\n --search-tag-bg: #f8f9fa;\n --search-icon-color: #c2c6cc;\n --input-focus-border-color: var(--btn-border-color);\n\n /* Home page */\n --post-list-text-color: dimgray;\n --btn-patinator-text-color: #555555;\n --btn-paginator-hover-color: var(--sidebar-bg);\n --btn-paginator-border-color: var(--sidebar-bg);\n --btn-text-color: #676666;\n --pin-bg: #f5f5f5;\n --pin-color: #999fa4;\n\n /* Posts */\n --btn-share-hover-color: var(--link-color);\n --card-border-color: #f1f1f1;\n --card-box-shadow: rgba(234, 234, 234, 0.7686274509803922);\n --label-color: #616161;\n --relate-post-date: rgba(30, 55, 70, 0.4);\n --footnote-target-bg: lightcyan;\n --tag-bg: rgba(0, 0, 0, 0.075);\n --tag-border: #dee2e6;\n --tag-shadow: var(--btn-border-color);\n --tag-hover: rgb(222, 226, 230);\n --tb-odd-bg: #fbfcfd;\n --tb-border-color: #eaeaea;\n --dash-color: silver;\n --preview-img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(249 249 249) 100%);\n --kbd-wrap-color: #bdbdbd;\n --kbd-text-color: var(--text-color);\n --kbd-bg-color: white;\n --prompt-text-color: rgb(46 46 46 / 77%);\n --prompt-tip-bg: rgb(123 247 144 / 20%);\n --prompt-tip-icon-color: #03b303;\n --prompt-info-bg: #e1f5fe;\n --prompt-info-icon-color: #0070cb;\n --prompt-warning-bg: rgb(255 243 205);\n --prompt-warning-icon-color: #ef9c03;\n --prompt-danger-bg: rgb(248 215 218 / 56%);\n --prompt-danger-icon-color: #df3c30;\n\n [class^=prompt-] {\n --link-underline-color: rgb(219 216 216);\n }\n\n /* Categories */\n --categories-hover-bg: var(--btn-border-color);\n --categories-icon-hover-color: darkslategray;\n\n /* Archive */\n --timeline-color: rgba(0, 0, 0, 0.075);\n --timeline-node-bg: #c2c6cc;\n --timeline-year-dot-color: #ffffff;\n\n} /* light-scheme */\n", + "/*\n * The main dark mode styles\n */\n\n@mixin dark-scheme {\n /* Framework color */\n --body-bg: var(--main-wrapper-bg);\n --mask-bg: rgb(68, 69, 70);\n --main-wrapper-bg: rgb(27, 27, 30);\n --main-border-color: rgb(44, 45, 45);\n\n /* Common color */\n --text-color: rgb(175, 176, 177);\n --text-muted-color: rgb(107, 116, 124);\n --heading-color: #cccccc;\n --blockquote-border-color: rgb(66, 66, 66);\n --blockquote-text-color: rgb(117, 117, 117);\n --link-color: rgb(138, 180, 248);\n --link-underline-color: rgb(82, 108, 150);\n --button-bg: rgb(39, 40, 43);\n --btn-border-color: rgb(63, 65, 68);\n --btn-backtotop-color: var(--text-color);\n --btn-backtotop-border-color: var(--btn-border-color);\n --btn-box-shadow: var(--main-wrapper-bg);\n --card-header-bg: rgb(51, 50, 50);\n --label-color: rgb(108, 117, 125);\n --checkbox-color: rgb(118 120 121);\n --checkbox-checked-color: var(--link-color);\n\n /* Sidebar */\n --sidebar-bg: radial-gradient(circle, #242424 0%, #1d1f27 100%);\n --sidebar-muted-color: #6d6c6b;\n --sidebar-active-color: rgb(255 255 255 / 80%);\n --nav-cursor-color: rgb(183, 182, 182);\n --sidebar-btn-bg: rgb(117 116 116 / 20%);\n\n /* Topbar */\n --topbar-text-color: var(--text-color);\n --topbar-wrapper-bg: rgb(39, 40, 43);\n --search-wrapper-bg: rgb(34, 34, 39);\n --search-wrapper-border-color: rgb(34, 34, 39);\n --search-icon-color: rgb(100, 102, 105);\n --input-focus-border-color: rgb(112, 114, 115);\n\n /* Home page */\n --post-list-text-color: rgb(175, 176, 177);\n --btn-patinator-text-color: var(--text-color);\n --btn-paginator-hover-color: rgb(64, 65, 66);\n --btn-paginator-border-color: var(--btn-border-color);\n --btn-text-color: var(--text-color);\n --pin-bg: rgb(34 35 37);\n --pin-color: inherit;\n\n /* Posts */\n --toc-highlight: rgb(116, 178, 243);\n --tag-bg: rgb(41, 40, 40);\n --tag-hover: rgb(43, 56, 62);\n --tb-odd-bg: rgba(42, 47, 53, 0.52); /* odd rows of the posts' table */\n --tb-even-bg: rgb(31, 31, 34); /* even rows of the posts' table */\n --tb-border-color: var(--tb-odd-bg);\n --footnote-target-bg: rgb(63, 81, 181);\n --btn-share-color: #6c757d;\n --btn-share-hover-color: #bfc1ca;\n --relate-post-date: var(--text-muted-color);\n --card-bg: rgb(39, 40, 43);\n --card-border-color: rgb(53, 53, 60);\n --card-box-shadow: var(--main-wrapper-bg);\n --preview-img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);\n --kbd-wrap-color: #6a6a6a;\n --kbd-text-color: #d3d3d3;\n --kbd-bg-color: #242424;\n --prompt-text-color: rgb(216 212 212 / 75%);\n --prompt-tip-bg: rgba(77, 187, 95, 0.2);\n --prompt-tip-icon-color: rgb(5 223 5 / 68%);\n --prompt-info-bg: rgb(7 59 104 / 80%);\n --prompt-info-icon-color: #0075d1;\n --prompt-warning-bg: rgb(90 69 3 / 95%);\n --prompt-warning-icon-color: rgb(255 165 0 / 80%);\n --prompt-danger-bg: rgb(86 28 8 / 80%);\n --prompt-danger-icon-color: #cd0202;\n\n /* tags */\n --tag-border: rgb(59, 79, 88);\n --tag-shadow: rgb(32, 33, 33);\n --search-tag-bg: var(--tag-bg);\n --dash-color: rgb(63, 65, 68);\n\n /* categories */\n --categories-border: rgb(64, 66, 69);\n --categories-hover-bg: rgb(73, 75, 76);\n --categories-icon-hover-color: white;\n\n /* archives */\n --timeline-node-bg: rgb(150, 152, 156);\n --timeline-color: rgb(63, 65, 68);\n --timeline-year-dot-color: var(--timeline-color);\n\n .post img[data-src] {\n filter: brightness(95%);\n }\n\n hr {\n border-color: var(--main-border-color);\n }\n\n /* posts' toc, override BS */\n nav[data-toggle=toc] .nav-link.active,\n nav[data-toggle=toc] .nav-link.active:focus,\n nav[data-toggle=toc] .nav-link.active:hover,\n nav[data-toggle=toc] .nav > li > a:focus,\n nav[data-toggle=toc] .nav > li > a:hover {\n color: var(--toc-highlight) !important;\n border-left-color: var(--toc-highlight) !important;\n }\n\n /* categories */\n .categories.card,\n .list-group-item {\n background-color: var(--card-bg);\n }\n\n .categories {\n .card-header {\n background-color: var(--card-header-bg);\n }\n\n .list-group-item {\n border-left: none;\n border-right: none;\n padding-left: 2rem;\n border-color: var(--categories-border);\n\n &:last-child {\n border-bottom-color: var(--card-bg);\n }\n }\n }\n\n #archives li:nth-child(odd) {\n background-image:\n linear-gradient(\n to left,\n rgb(26, 26, 30),\n rgb(39, 39, 45),\n rgb(39, 39, 45),\n rgb(39, 39, 45),\n rgb(26, 26, 30)\n );\n }\n\n color-scheme: dark;\n\n #disqus_thread {\n color-scheme: none;\n }\n\n} /* dark-scheme */\n", + "/*\n* Mainly scss modules, only imported to `assets/css/main.scss`\n*/\n\n/* ---------- scss placeholder --------- */\n\n%heading {\n color: var(--heading-color);\n font-weight: 400;\n font-family: 'Lato', 'Microsoft Yahei', sans-serif;\n}\n\n%section {\n #core-wrapper & {\n margin-top: 2.5rem;\n margin-bottom: 1.25rem;\n\n &:focus {\n outline: none; /* avoid outline in Safari */\n }\n }\n}\n\n%anchor {\n .anchor {\n font-size: 80%;\n }\n\n @media (hover: hover) {\n .anchor {\n visibility: hidden;\n opacity: 0;\n transition: opacity 0.25s ease-in, visibility 0s ease-in 0.25s;\n }\n\n &:hover {\n .anchor {\n visibility: visible;\n opacity: 1;\n transition: opacity 0.25s ease-in, visibility 0s ease-in 0s;\n }\n }\n }\n}\n\n%tag-hover {\n background: var(--tag-hover);\n transition: background 0.35s ease-in-out;\n}\n\n%table-cell {\n padding: 0.4rem 1rem;\n font-size: 95%;\n white-space: nowrap;\n}\n\n%link-hover {\n color: #d2603a !important;\n border-bottom: 1px solid #d2603a;\n text-decoration: none;\n}\n\n%link-color {\n color: var(--link-color);\n}\n\n%link-underline {\n border-bottom: 1px solid var(--link-underline-color);\n}\n\n%clickable-transition {\n transition: color 0.35s ease-in-out;\n}\n\n%no-cursor {\n user-select: none;\n}\n\n%no-bottom-border {\n border-bottom: none;\n}\n\n%cursor-pointer {\n cursor: pointer;\n}\n\n%normal-font-style {\n font-style: normal;\n}\n\n%img-caption {\n + em {\n display: block;\n text-align: center;\n font-style: normal;\n font-size: 80%;\n padding: 0;\n color: #6d6c6c;\n }\n}\n\n%sidebar-links {\n color: rgba(117, 117, 117, 0.9);\n user-select: none;\n}\n\n/* ---------- scss mixin --------- */\n\n@mixin no-text-decoration {\n text-decoration: none;\n}\n\n@mixin ml-mr($value) {\n margin-left: $value;\n margin-right: $value;\n}\n\n@mixin pl-pr($val) {\n padding-left: $val;\n padding-right: $val;\n}\n\n@mixin input-placeholder {\n opacity: 0.6;\n}\n\n@mixin label($font-size: 1rem, $font-weight: 600, $color: var(--label-color)) {\n color: $color;\n font-size: $font-size;\n font-weight: $font-weight;\n}\n\n@mixin align-center {\n position: relative;\n left: 50%;\n -webkit-transform: translateX(-50%);\n -ms-transform: translateX(-50%);\n transform: translateX(-50%);\n}\n\n@mixin prompt($type, $fw-icon, $icon-weight: 900) {\n &.prompt-#{$type} {\n background-color: var(--prompt-#{$type}-bg);\n\n &::before {\n content: $fw-icon;\n color: var(--prompt-#{$type}-icon-color);\n font-weight: $icon-weight;\n }\n }\n}\n", + "/*\n * The SCSS variables\n */\n\n/* sidebar */\n\n$sidebar-width: 260px !default; /* the basic width */\n$sidebar-width-small: 210px !default; /* screen width: >= 850px, <= 1199px (iPad landscape) */\n$sidebar-width-large: 350px !default; /* screen width: >= 1650px */\n\n/* tabs of sidebar */\n\n$tab-count: 5 !default; /* backward compatible (version <= 4.0.2) */\n$tab-height: 3rem !default;\n$tab-cursor-height: 1.6rem !default;\n\n$cursor-width: 2px !default; /* the cursor width of the selected tab */\n\n/* other framework sizes */\n\n$topbar-height: 3rem !default;\n\n$search-max-width: 210px !default;\n\n$footer-height: 5rem !default;\n$footer-height-mobile: 6rem !default; /* screen width: <= 576px */\n\n$main-content-max-width: 1250px !default;\n\n$bottom-min-height: 35rem !default;\n\n/* syntax highlight */\n\n$code-font-size: 0.85rem !default;\n", + "/*\n Appending custom SCSS variables will override the default ones in `_sass/addon/variables.scsss`\n*/\n", + "/*\n* The syntax highlight.\n*/\n\n@import \"colors/light-syntax\";\n@import \"colors/dark-syntax\";\n\nhtml {\n @media (prefers-color-scheme: light) {\n &:not([data-mode]),\n &[data-mode=light] {\n @include light-syntax;\n }\n\n &[data-mode=dark] {\n @include dark-syntax;\n }\n }\n\n @media (prefers-color-scheme: dark) {\n &:not([data-mode]),\n &[data-mode=dark] {\n @include dark-syntax;\n }\n\n &[data-mode=light] {\n @include light-syntax;\n }\n }\n}\n\n/* -- Codes Snippet -- */\n\n$code-radius: 6px;\n\n%code-snippet-bg {\n background: var(--highlight-bg-color);\n}\n\n%code-snippet-radius {\n border-radius: $code-radius;\n}\n\n%code-snippet-padding {\n padding-left: 1rem;\n padding-right: 1.5rem;\n}\n\n.highlighter-rouge {\n @extend %code-snippet-bg;\n @extend %code-snippet-radius;\n\n color: var(--highlighter-rouge-color);\n margin-top: 0.5rem;\n margin-bottom: 1.2em; /* Override BS Inline-code style */\n}\n\n.highlight {\n @extend %code-snippet-radius;\n @extend %code-snippet-bg;\n\n @at-root figure#{&} {\n @extend %code-snippet-bg;\n }\n\n overflow: auto;\n padding-top: 0.5rem;\n padding-bottom: 1rem;\n\n pre {\n margin-bottom: 0;\n font-size: $code-font-size;\n line-height: 1.4rem;\n word-wrap: normal; /* Fixed Safari overflow-x */\n }\n\n table {\n td pre {\n overflow: visible; /* Fixed iOS safari overflow-x */\n word-break: normal; /* Fixed iOS safari linenos code break */\n }\n }\n\n .lineno {\n padding-right: 0.5rem;\n min-width: 2.2rem;\n text-align: right;\n color: var(--highlight-lineno-color);\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n user-select: none;\n }\n\n /* set the dollar sign to non-selectable */\n .gp {\n user-select: none;\n }\n\n} /* .highlight */\n\ncode {\n -webkit-hyphens: none;\n -ms-hyphens: none;\n -moz-hyphens: none;\n hyphens: none;\n\n &.highlighter-rouge {\n font-size: $code-font-size;\n padding: 3px 5px;\n border-radius: 4px;\n background-color: var(--inline-code-bg);\n }\n\n &.filepath {\n background-color: inherit;\n color: var(--filepath-text-color);\n font-weight: 600;\n padding: 0;\n }\n\n a > &.highlighter-rouge {\n padding-bottom: 0; /* show link's underlinke */\n color: inherit;\n }\n\n a:hover > &.highlighter-rouge {\n border-bottom: none;\n }\n\n blockquote & {\n color: inherit;\n }\n\n .highlight > & {\n color: transparent;\n }\n}\n\ntd.rouge-code {\n @extend %code-snippet-padding;\n\n /*\n Prevent some browser extends from\n changing the URL string of code block.\n */\n a {\n color: inherit !important;\n border-bottom: none !important;\n pointer-events: none;\n }\n\n}\n\n/* Hide line numbers for default, console, and terminal code snippets */\ndiv {\n &[class^='highlighter-rouge'],\n &.language-plaintext.highlighter-rouge,\n &.language-console.highlighter-rouge,\n &.language-terminal.highlighter-rouge,\n &.nolineno {\n pre.lineno {\n display: none;\n }\n\n td.rouge-code {\n padding-left: 1.5rem;\n }\n }\n}\n\n.code-header {\n @extend %no-cursor;\n\n $code-header-height: 2.25rem;\n\n border-top-left-radius: $code-radius;\n border-top-right-radius: $code-radius;\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: $code-header-height;\n\n &::before {\n $dot-size: 0.75rem;\n $dot-margin: 0.5rem;\n\n content: \"\";\n display: inline-block;\n margin-left: 1rem;\n width: $dot-size;\n height: $dot-size;\n border-radius: 50%;\n background-color: var(--code-header-muted-color);\n box-shadow:\n ($dot-size + $dot-margin) 0 0 var(--code-header-muted-color),\n ($dot-size + $dot-margin) * 2 0 0 var(--code-header-muted-color);\n }\n\n /* the label block */\n span {\n /* label icon */\n i {\n font-size: 1rem;\n margin-right: 0.4rem;\n color: var(--code-header-icon-color);\n\n &.small {\n font-size: 70%;\n }\n }\n\n @at-root [file] #{&} > i {\n position: relative;\n top: 1px; /* center the file icon */\n }\n\n /* label text */\n &::after {\n content: attr(data-label-text);\n font-size: 0.85rem;\n font-weight: 600;\n color: var(--code-header-text-color);\n }\n }\n\n /* clipboard */\n button {\n @extend %cursor-pointer;\n\n border: 1px solid transparent;\n border-radius: $code-radius;\n height: $code-header-height;\n width: $code-header-height;\n padding: 0;\n background-color: inherit;\n\n i {\n color: var(--code-header-icon-color);\n }\n\n &[timeout] {\n &:hover {\n border-color: var(--clipboard-checked-color);\n }\n\n i {\n color: var(--clipboard-checked-color);\n }\n }\n\n &:not([timeout]):hover {\n background-color: rgba(128, 128, 128, 0.37);\n\n i {\n color: white;\n }\n }\n\n &:focus {\n outline: none;\n }\n\n }\n\n}\n\n@media all and (max-width: 576px) {\n .post-content {\n > div[class^='language-'] {\n @include ml-mr(-1.25rem);\n\n border-radius: 0;\n\n .highlight {\n padding-left: 0.25rem;\n }\n\n .code-header {\n border-radius: 0;\n padding-left: 0.4rem;\n padding-right: 0.5rem;\n }\n }\n }\n}\n", + "/*\n * The syntax light mode code snippet colors.\n */\n\n@mixin light-syntax {\n /* see: */\n .highlight .hll { background-color: #ffffcc; }\n .highlight .c { color: #999988; font-style: italic; } /* Comment */\n .highlight .err { color: #a61717; background-color: #e3d2d2; } /* Error */\n .highlight .k { color: #000000; font-weight: bold; } /* Keyword */\n .highlight .o { color: #000000; font-weight: bold; } /* Operator */\n .highlight .cm { color: #999988; font-style: italic; } /* Comment.Multiline */\n .highlight .cp { color: #999999; font-weight: bold; font-style: italic; } /* Comment.Preproc */\n .highlight .c1 { color: #999988; font-style: italic; } /* Comment.Single */\n .highlight .cs { color: #999999; font-weight: bold; font-style: italic; } /* Comment.Special */\n .highlight .gd { color: #d01040; background-color: #ffdddd; } /* Generic.Deleted */\n .highlight .ge { color: #000000; font-style: italic; } /* Generic.Emph */\n .highlight .gr { color: #aa0000; } /* Generic.Error */\n .highlight .gh { color: #999999; } /* Generic.Heading */\n .highlight .gi { color: #008080; background-color: #ddffdd; } /* Generic.Inserted */\n .highlight .go { color: #888888; } /* Generic.Output */\n .highlight .gp { color: #555555; } /* Generic.Prompt */\n .highlight .gs { font-weight: bold; } /* Generic.Strong */\n .highlight .gu { color: #aaaaaa; } /* Generic.Subheading */\n .highlight .gt { color: #aa0000; } /* Generic.Traceback */\n .highlight .kc { color: #000000; font-weight: bold; } /* Keyword.Constant */\n .highlight .kd { color: #000000; font-weight: bold; } /* Keyword.Declaration */\n .highlight .kn { color: #000000; font-weight: bold; } /* Keyword.Namespace */\n .highlight .kp { color: #000000; font-weight: bold; } /* Keyword.Pseudo */\n .highlight .kr { color: #000000; font-weight: bold; } /* Keyword.Reserved */\n .highlight .kt { color: #445588; font-weight: bold; } /* Keyword.Type */\n .highlight .m { color: #009999; } /* Literal.Number */\n .highlight .s { color: #d01040; } /* Literal.String */\n .highlight .na { color: #008080; } /* Name.Attribute */\n .highlight .nb { color: #0086b3; } /* Name.Builtin */\n .highlight .nc { color: #445588; font-weight: bold; } /* Name.Class */\n .highlight .no { color: #008080; } /* Name.Constant */\n .highlight .nd { color: #3c5d5d; font-weight: bold; } /* Name.Decorator */\n .highlight .ni { color: #800080; } /* Name.Entity */\n .highlight .ne { color: #990000; font-weight: bold; } /* Name.Exception */\n .highlight .nf { color: #990000; font-weight: bold; } /* Name.Function */\n .highlight .nl { color: #990000; font-weight: bold; } /* Name.Label */\n .highlight .nn { color: #555555; } /* Name.Namespace */\n .highlight .nt { color: #000080; } /* Name.Tag */\n .highlight .nv { color: #008080; } /* Name.Variable */\n .highlight .ow { color: #000000; font-weight: bold; } /* Operator.Word */\n .highlight .w { color: #bbbbbb; } /* Text.Whitespace */\n .highlight .mf { color: #009999; } /* Literal.Number.Float */\n .highlight .mh { color: #009999; } /* Literal.Number.Hex */\n .highlight .mi { color: #009999; } /* Literal.Number.Integer */\n .highlight .mo { color: #009999; } /* Literal.Number.Oct */\n .highlight .sb { color: #d01040; } /* Literal.String.Backtick */\n .highlight .sc { color: #d01040; } /* Literal.String.Char */\n .highlight .sd { color: #d01040; } /* Literal.String.Doc */\n .highlight .s2 { color: #d01040; } /* Literal.String.Double */\n .highlight .se { color: #d01040; } /* Literal.String.Escape */\n .highlight .sh { color: #d01040; } /* Literal.String.Heredoc */\n .highlight .si { color: #d01040; } /* Literal.String.Interpol */\n .highlight .sx { color: #d01040; } /* Literal.String.Other */\n .highlight .sr { color: #009926; } /* Literal.String.Regex */\n .highlight .s1 { color: #d01040; } /* Literal.String.Single */\n .highlight .ss { color: #990073; } /* Literal.String.Symbol */\n .highlight .bp { color: #999999; } /* Name.Builtin.Pseudo */\n .highlight .vc { color: #008080; } /* Name.Variable.Class */\n .highlight .vg { color: #008080; } /* Name.Variable.Global */\n .highlight .vi { color: #008080; } /* Name.Variable.Instance */\n .highlight .il { color: #009999; } /* Literal.Number.Integer.Long */\n\n /* --- custom light colors --- */\n --highlight-bg-color: #f7f7f7;\n --highlighter-rouge-color: #2f2f2f;\n --highlight-lineno-color: #c2c6cc;\n --inline-code-bg: #f3f3f3;\n --code-header-text-color: #a3a3b1;\n --code-header-muted-color: #ebebeb;\n --code-header-icon-color: #d1d1d1;\n --clipboard-checked-color: #43c743;\n\n [class^=prompt-] {\n --inline-code-bg: #fbfafa;\n --highlighter-rouge-color: rgb(82 82 82);\n }\n\n} /* light-syntax */\n", + "/*\n * The syntax dark mode styles.\n */\n\n@mixin dark-syntax {\n /* syntax highlight colors from https://raw.githubusercontent.com/jwarby/pygments-css/master/monokai.css */\n .highlight pre { background-color: var(--highlight-bg-color); }\n .highlight .hll { background-color: var(--highlight-bg-color); }\n .highlight .c { color: #75715e; } /* Comment */\n .highlight .err { color: #960050; background-color: #1e0010; } /* Error */\n .highlight .k { color: #66d9ef; } /* Keyword */\n .highlight .l { color: #ae81ff; } /* Literal */\n .highlight .n { color: #f8f8f2; } /* Name */\n .highlight .o { color: #f92672; } /* Operator */\n .highlight .p { color: #f8f8f2; } /* Punctuation */\n .highlight .cm { color: #75715e; } /* Comment.Multiline */\n .highlight .cp { color: #75715e; } /* Comment.Preproc */\n .highlight .c1 { color: #75715e; } /* Comment.Single */\n .highlight .cs { color: #75715e; } /* Comment.Special */\n .highlight .ge { color: inherit; font-style: italic; } /* Generic.Emph */\n .highlight .gs { font-weight: bold; } /* Generic.Strong */\n .highlight .kc { color: #66d9ef; } /* Keyword.Constant */\n .highlight .kd { color: #66d9ef; } /* Keyword.Declaration */\n .highlight .kn { color: #f92672; } /* Keyword.Namespace */\n .highlight .kp { color: #66d9ef; } /* Keyword.Pseudo */\n .highlight .kr { color: #66d9ef; } /* Keyword.Reserved */\n .highlight .kt { color: #66d9ef; } /* Keyword.Type */\n .highlight .ld { color: #e6db74; } /* Literal.Date */\n .highlight .m { color: #ae81ff; } /* Literal.Number */\n .highlight .s { color: #e6db74; } /* Literal.String */\n .highlight .na { color: #a6e22e; } /* Name.Attribute */\n .highlight .nb { color: #f8f8f2; } /* Name.Builtin */\n .highlight .nc { color: #a6e22e; } /* Name.Class */\n .highlight .no { color: #66d9ef; } /* Name.Constant */\n .highlight .nd { color: #a6e22e; } /* Name.Decorator */\n .highlight .ni { color: #f8f8f2; } /* Name.Entity */\n .highlight .ne { color: #a6e22e; } /* Name.Exception */\n .highlight .nf { color: #a6e22e; } /* Name.Function */\n .highlight .nl { color: #f8f8f2; } /* Name.Label */\n .highlight .nn { color: #f8f8f2; } /* Name.Namespace */\n .highlight .nx { color: #a6e22e; } /* Name.Other */\n .highlight .py { color: #f8f8f2; } /* Name.Property */\n .highlight .nt { color: #f92672; } /* Name.Tag */\n .highlight .nv { color: #f8f8f2; } /* Name.Variable */\n .highlight .ow { color: #f92672; } /* Operator.Word */\n .highlight .w { color: #f8f8f2; } /* Text.Whitespace */\n .highlight .mf { color: #ae81ff; } /* Literal.Number.Float */\n .highlight .mh { color: #ae81ff; } /* Literal.Number.Hex */\n .highlight .mi { color: #ae81ff; } /* Literal.Number.Integer */\n .highlight .mo { color: #ae81ff; } /* Literal.Number.Oct */\n .highlight .sb { color: #e6db74; } /* Literal.String.Backtick */\n .highlight .sc { color: #e6db74; } /* Literal.String.Char */\n .highlight .sd { color: #e6db74; } /* Literal.String.Doc */\n .highlight .s2 { color: #e6db74; } /* Literal.String.Double */\n .highlight .se { color: #ae81ff; } /* Literal.String.Escape */\n .highlight .sh { color: #e6db74; } /* Literal.String.Heredoc */\n .highlight .si { color: #e6db74; } /* Literal.String.Interpol */\n .highlight .sx { color: #e6db74; } /* Literal.String.Other */\n .highlight .sr { color: #e6db74; } /* Literal.String.Regex */\n .highlight .s1 { color: #e6db74; } /* Literal.String.Single */\n .highlight .ss { color: #e6db74; } /* Literal.String.Symbol */\n .highlight .bp { color: #f8f8f2; } /* Name.Builtin.Pseudo */\n .highlight .vc { color: #f8f8f2; } /* Name.Variable.Class */\n .highlight .vg { color: #f8f8f2; } /* Name.Variable.Global */\n .highlight .vi { color: #f8f8f2; } /* Name.Variable.Instance */\n .highlight .il { color: #ae81ff; } /* Literal.Number.Integer.Long */\n .highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */\n .highlight .gd { color: #f92672; background-color: #561c08; } /* Generic.Deleted & Diff Deleted */\n .highlight .gi { color: #a6e22e; background-color: #0b5858; } /* Generic.Inserted & Diff Inserted */\n\n /* ----- custom styles ------ */\n\n --highlight-bg-color: #252525;\n --highlighter-rouge-color: #de6b18;\n --highlight-lineno-color: #6c6c6d;\n --inline-code-bg: #272822;\n --code-header-text-color: #6a6a6a;\n --code-header-muted-color: rgb(60 60 60);\n --code-header-icon-color: rgb(86 86 86);\n --clipboard-checked-color: #2bcc2b;\n --filepath-text-color: #bdbdbd;\n\n .highlight {\n .gp { color: #818c96; }\n }\n\n pre { color: #bfbfbf; } /* override Bootstrap */\n}\n", + "/*\n The common styles\n*/\n\nhtml {\n @media (prefers-color-scheme: light) {\n &:not([data-mode]),\n &[data-mode=light] {\n @include light-scheme;\n }\n\n &[data-mode=dark] {\n @include dark-scheme;\n }\n }\n\n @media (prefers-color-scheme: dark) {\n &:not([data-mode]),\n &[data-mode=dark] {\n @include dark-scheme;\n }\n\n &[data-mode=light] {\n @include light-scheme;\n }\n }\n\n font-size: 16px;\n}\n\nbody {\n line-height: 1.75rem;\n background: var(--body-bg);\n color: var(--text-color);\n -webkit-font-smoothing: antialiased;\n font-family: 'Source Sans Pro', 'Microsoft Yahei', sans-serif;\n}\n\n/* --- Typography --- */\n\nh1 {\n @extend %heading;\n\n font-size: 1.9rem;\n}\n\nh2 {\n @extend %heading;\n @extend %section;\n @extend %anchor;\n\n font-size: 1.5rem;\n}\n\nh3 {\n @extend %heading;\n @extend %section;\n @extend %anchor;\n\n font-size: 1.2rem;\n}\n\nh4 {\n @extend %heading;\n @extend %section;\n @extend %anchor;\n\n font-size: 1.15rem;\n}\n\nh5 {\n @extend %heading;\n @extend %section;\n @extend %anchor;\n\n font-size: 1.1rem;\n}\n\nol,\nul {\n ol,\n ul {\n margin-bottom: 1rem;\n }\n}\n\na {\n @extend %link-color;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nblockquote {\n border-left: 5px solid var(--blockquote-border-color);\n padding-left: 1rem;\n color: var(--blockquote-text-color);\n\n &[class^=\"prompt-\"] {\n display: flex;\n border-left: 0;\n border-radius: 6px;\n padding: 0.75rem 1.2rem;\n color: var(--prompt-text-color);\n\n &::before {\n margin-right: 1rem;\n font-family: \"Font Awesome 5 Free\";\n text-align: center;\n width: 1.25rem;\n }\n\n p:last-child {\n margin-bottom: 0rem;\n }\n }\n\n @include prompt(\"tip\", \"\\f0eb\", 400);\n\n @include prompt(\"info\", \"\\f06a\");\n\n @include prompt(\"warning\", \"\\f06a\");\n\n @include prompt(\"danger\", \"\\f071\");\n}\n\nmjx-container {\n overflow-x: auto;\n overflow-y: hidden;\n}\n\nkbd {\n font-family: inherit;\n display: inline-block;\n vertical-align: middle;\n line-height: 1.3rem;\n min-width: 1.75rem;\n text-align: center;\n margin: 0 0.3rem;\n padding-top: 0.1rem;\n color: var(--kbd-text-color);\n background-color: var(--kbd-bg-color);\n border-radius: 0.25rem;\n border: solid 1px var(--kbd-wrap-color);\n box-shadow: inset 0 -2px 0 var(--kbd-wrap-color);\n}\n\nfooter {\n @include pl-pr(1.5rem);\n\n font-size: 0.8rem;\n\n > div.d-flex {\n height: $footer-height;\n line-height: 1.2rem;\n padding-bottom: 1rem;\n border-top: 1px solid var(--main-border-color);\n\n > div {\n width: 350px;\n }\n }\n\n a {\n @extend %text-color;\n\n &:link {\n @include no-text-decoration;\n }\n\n &:hover {\n @extend %link-hover;\n\n @include no-text-decoration;\n }\n }\n\n .footer-right {\n text-align: right;\n }\n}\n\ni { /* fontawesome icons */\n &.far,\n &.fas {\n @extend %no-cursor;\n }\n}\n\n@keyframes fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\nimg[data-src] {\n margin: 0.5rem 0;\n\n &[data-loaded=true] {\n animation: fade-in linear 0.5s;\n }\n\n &.left {\n float: left;\n margin: 0.75rem 1rem 1rem 0;\n }\n\n &.right {\n float: right;\n margin: 0.75rem 0 1rem 1rem;\n }\n\n &.shadow {\n filter: drop-shadow(2px 4px 6px rgba(0, 0, 0, 0.08));\n box-shadow: none !important; /* cover the Bootstrap 4.6.1 styles */\n }\n\n @extend %img-caption;\n}\n\n/* --- Panels --- */\n\n.access {\n top: 2rem;\n transition: top 0.2s ease-in-out;\n margin-top: 3rem;\n margin-bottom: 4rem;\n\n &:only-child {\n position: -webkit-sticky; /* Safari */\n position: sticky;\n }\n\n > div {\n padding-left: 1rem;\n border-left: 1px solid var(--main-border-color);\n\n &:not(:last-child) {\n margin-bottom: 4rem;\n }\n }\n\n .post-content {\n font-size: 0.9rem;\n }\n\n}\n\n#panel-wrapper {\n /* the headings */\n .panel-heading {\n @include label(inherit);\n }\n\n .post-tag {\n display: inline-block;\n line-height: 1rem;\n font-size: 0.85rem;\n background: none;\n border: 1px solid var(--btn-border-color);\n border-radius: 0.8rem;\n padding: 0.3rem 0.5rem;\n margin: 0 0.35rem 0.5rem 0;\n\n &:hover {\n background-color: #2a408e;\n border-color: #2a408e;\n color: #fff;\n transition: none;\n }\n }\n\n [data-topbar-visible=true] & > div {\n top: 6rem;\n }\n}\n\n#access-lastmod {\n li {\n height: 1.8rem;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n list-style: none;\n }\n\n a {\n &:hover {\n @extend %link-hover;\n }\n\n @extend %no-bottom-border;\n\n color: inherit;\n }\n\n}\n\n.footnotes > ol {\n padding-left: 2rem;\n margin-top: 0.5rem;\n\n > li {\n &:not(:last-child) {\n margin-bottom: 0.3rem;\n }\n\n > p {\n margin-left: 0.25em;\n margin-top: 0;\n margin-bottom: 0;\n }\n\n /* [scroll-focus] added by `smooth-scroll.js` */\n &:target:not([scroll-focus]),\n &[scroll-focus=true] > p {\n background-color: var(--footnote-target-bg);\n width: fit-content;\n -webkit-transition: background-color 1.5s ease-in-out; /* Safari prior 6.1 */\n transition: background-color 1.5s ease-in-out;\n }\n }\n}\n\n.footnote {\n @at-root a#{&} {\n @include ml-mr(1px);\n @include pl-pr(2px);\n\n border-bottom-style: none !important;\n -webkit-transition: background-color 1.5s ease-in-out; /* Safari prior 6.1 */\n transition: background-color 1.5s ease-in-out;\n }\n\n /* [scroll-focus] added by `smooth-scroll.js` */\n @at-root sup:target:not([scroll-focus]),\n sup[scroll-focus=true] > a#{&} {\n background-color: var(--footnote-target-bg);\n }\n}\n\n.reversefootnote {\n @at-root a#{&} {\n font-size: 0.6rem;\n line-height: 1;\n position: relative;\n bottom: 0.25em;\n margin-left: 0.25em;\n border-bottom-style: none !important;\n }\n}\n\n/* --- Begin of Markdown table style --- */\n\n/* it will be created by Liquid */\n.table-wrapper {\n overflow-x: auto;\n margin-bottom: 1.5rem;\n\n > table {\n min-width: 100%;\n overflow-x: auto;\n border-spacing: 0;\n\n thead {\n border-bottom: solid 2px rgba(210, 215, 217, 0.75);\n\n th {\n @extend %table-cell;\n }\n }\n\n tbody {\n tr {\n border-bottom: 1px solid var(--tb-border-color);\n\n &:nth-child(2n) {\n background-color: var(--tb-even-bg);\n }\n\n &:nth-child(2n + 1) {\n background-color: var(--tb-odd-bg);\n }\n\n td {\n @extend %table-cell;\n }\n }\n } /* tbody */\n }/* table */\n}\n\n/* --- post --- */\n\n.post {\n h1 {\n margin-top: 3rem;\n margin-bottom: 1.5rem;\n }\n\n a {\n &.img-link {\n @extend %no-cursor;\n }\n\n /* created by `_includes/img-extra.html` */\n &.popup {\n cursor: zoom-in;\n\n > img[data-src]:not(.normal):not(.left):not(.right) {\n @include align-center;\n }\n }\n\n &:hover {\n code {\n @extend %link-hover;\n }\n }\n } /* a */\n\n}\n\n.pageviews .fa-spinner {\n font-size: 80%;\n}\n\n.post-meta {\n font-size: 0.85rem;\n word-spacing: 1px;\n\n a {\n &:not(:last-child) {\n margin-right: 2px;\n }\n\n &:not([class]):hover {\n @extend %link-hover;\n }\n }\n\n em {\n @extend %normal-font-style;\n }\n}\n\n.post-content {\n font-size: 1.08rem;\n line-height: 1.8;\n margin-top: 2rem;\n overflow-wrap: break-word;\n word-wrap: break-word;\n\n a {\n &:not(.img-link) {\n @extend %link-underline;\n\n &:hover {\n @extend %link-hover;\n }\n }\n\n &.img-link {\n @extend %img-caption;\n }\n\n }\n\n ul {\n /* attribute 'hide-bullet' was added by liquid */\n .task-list-item[hide-bullet] {\n list-style-type: none;\n\n > i { /* checkbox icon */\n margin: 0 0.4rem 0.2rem -1.4rem;\n vertical-align: middle;\n color: var(--checkbox-color);\n\n &.checked {\n color: var(--checkbox-checked-color);\n }\n }\n\n }\n\n input[type=checkbox] {\n margin: 0 0.5rem 0.2rem -1.3rem;\n vertical-align: middle;\n }\n\n } /* ul */\n\n > ol,\n > ul {\n padding-left: 2rem;\n\n li {\n ol,\n ul { /* sub list */\n padding-left: 2rem;\n margin-top: 0.3rem;\n }\n }\n\n }\n\n > ol {\n li {\n padding-left: 0.25em;\n }\n }\n\n dl > dd {\n margin-left: 1rem;\n }\n\n} /* .post-content */\n\n.tag:hover {\n @extend %tag-hover;\n}\n\n.post-tag {\n display: inline-block;\n min-width: 2rem;\n text-align: center;\n background: var(--tag-bg);\n border-radius: 0.3rem;\n padding: 0 0.4rem;\n color: inherit;\n line-height: 1.3rem;\n\n &:not(:last-child) {\n margin-right: 0.2rem;\n }\n\n &:hover {\n @extend %tag-hover;\n\n border-bottom: none;\n text-decoration: none;\n color: #d2603a;\n }\n}\n\n/* --- buttons --- */\n.btn-lang {\n border: 1px solid !important;\n padding: 1px 3px;\n border-radius: 3px;\n color: var(--link-color);\n\n &:focus {\n box-shadow: none;\n }\n}\n\n/* --- Effects classes --- */\n\n.loaded {\n display: block !important;\n\n @at-root .d-flex#{&} {\n display: flex !important;\n }\n}\n\n.unloaded {\n display: none !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.hidden {\n visibility: hidden !important;\n}\n\n.flex-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n}\n\n.btn-box-shadow {\n box-shadow: 0 0 8px 0 var(--btn-box-shadow) !important;\n}\n\n.no-text-decoration {\n @include no-text-decoration;\n}\n\n.tooltip-inner { /* Overrided BS4 Tooltip */\n font-size: 0.7rem;\n max-width: 220px;\n text-align: left;\n}\n\n.disabled {\n color: rgb(206, 196, 196);\n pointer-events: auto;\n cursor: not-allowed;\n}\n\n.hide-border-bottom {\n border-bottom: none !important;\n}\n\n.input-focus {\n box-shadow: none;\n border-color: var(--input-focus-border-color) !important;\n background: center !important;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n\n/* --- Overriding --- */\n\n/* magnific-popup */\nfigure .mfp-title {\n text-align: center;\n padding-right: 0;\n margin-top: 0.5rem;\n}\n\n/* mermaid */\n.mermaid {\n text-align: center;\n}\n\n/* --- sidebar layout --- */\n\n$sidebar-display: \"sidebar-display\";\n\n#sidebar {\n @include pl-pr(0);\n\n position: fixed;\n top: 0;\n left: 0;\n height: 100%;\n overflow-y: auto;\n width: $sidebar-width;\n z-index: 99;\n background: var(--sidebar-bg);\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbar for IE, Edge and Firefox */\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n\n a {\n @extend %sidebar-links;\n\n &:hover {\n @include no-text-decoration;\n\n color: var(--sidebar-active-color) !important;\n }\n }\n\n #avatar {\n > a {\n display: block;\n width: 6rem;\n height: 6rem;\n border-radius: 50%;\n border: 2px solid rgba(222, 222, 222, 0.7);\n overflow: hidden;\n transform: translateZ(0); /* fixed the zoom in Safari */\n -webkit-transition: border-color 0.35s ease-in-out;\n -moz-transition: border-color 0.35s ease-in-out;\n transition: border-color 0.35s ease-in-out;\n\n &:hover {\n border-color: white;\n }\n }\n\n img {\n width: 100%;\n height: 100%;\n -webkit-transition: transform 0.5s;\n -moz-transition: transform 0.5s;\n transition: transform 0.5s;\n\n &:hover {\n -ms-transform: scale(1.2);\n -moz-transform: scale(1.2);\n -webkit-transform: scale(1.2);\n transform: scale(1.2);\n }\n }\n } /* #avatar */\n\n .site-title {\n a {\n @extend %clickable-transition;\n\n font-weight: 900;\n font-size: 1.5rem;\n letter-spacing: 0.5px;\n color: rgba(134, 133, 133, 99%);\n }\n }\n\n .site-subtitle {\n font-size: 95%;\n color: var(--sidebar-muted-color);\n line-height: 1.2rem;\n word-spacing: 1px;\n margin: 0.5rem 1.5rem 0.5rem 1.5rem;\n min-height: 3rem; /* avoid vertical shifting in multi-line words */\n user-select: none;\n }\n\n .nav-link {\n border-radius: 0;\n font-size: 0.95rem;\n font-weight: 600;\n letter-spacing: 1px;\n display: table-cell;\n vertical-align: middle;\n }\n\n .nav-item {\n text-align: center;\n display: table;\n height: $tab-height;\n\n &.active {\n .nav-link {\n color: var(--sidebar-active-color);\n }\n }\n\n &:not(.active) > a {\n @extend %clickable-transition;\n }\n }\n\n ul {\n height: $tab-height * $tab-count;\n margin-bottom: 2rem;\n padding-left: 0;\n\n li {\n width: 100%;\n\n &:last-child {\n a {\n position: relative;\n left: $cursor-width / 2;\n width: 100%;\n }\n\n &::after { /* the cursor */\n display: table;\n visibility: hidden;\n content: \"\";\n position: relative;\n right: 1px;\n width: $cursor-width;\n height: $tab-cursor-height;\n border-radius: 1px;\n background-color: var(--nav-cursor-color);\n pointer-events: none;\n }\n }\n } /* li */\n\n @mixin fix-cursor($top) {\n top: $top;\n visibility: visible;\n }\n\n @for $i from 1 through $tab-count {\n $offset: $tab-count - $i;\n $top: -$offset * $tab-height + ($tab-height - $tab-cursor-height) / 2;\n\n @if $i < $tab-count {\n > li.active:nth-child(#{$i}),\n > li.nav-item:nth-child(#{$i}):hover {\n ~ li:last-child::after {\n @include fix-cursor($top);\n }\n }\n } @else {\n > li.active:nth-child(#{$i}):last-child::after,\n > li.nav-item:nth-child(#{$i}):last-child:hover::after {\n @include fix-cursor($top);\n }\n }\n\n } /* @for */\n\n } /* ul */\n\n .sidebar-bottom {\n margin-bottom: 2.1rem;\n\n @include ml-mr(auto);\n @include pl-pr(1rem);\n\n %icon {\n width: 2.4rem;\n text-align: center;\n }\n\n a {\n @extend %icon;\n @extend %clickable-transition;\n }\n\n i {\n font-size: 1.2rem;\n line-height: 1.75rem;\n }\n\n .mode-toggle {\n padding: 0;\n border: 0;\n margin-bottom: 1px;\n background-color: transparent;\n\n @extend %icon;\n @extend %sidebar-links;\n\n > i {\n @extend %clickable-transition;\n }\n\n &:hover > i {\n color: var(--sidebar-active-color);\n }\n }\n\n .icon-border {\n @extend %no-cursor;\n\n background-color: var(--sidebar-muted-color);\n content: \"\";\n width: 3px;\n height: 3px;\n border-radius: 50%;\n }\n\n } /* .sidebar-bottom */\n\n} /* #sidebar */\n\n@media (hover: hover) {\n #sidebar ul > li:last-child::after {\n -webkit-transition: top 0.5s ease;\n -moz-transition: top 0.5s ease;\n -o-transition: top 0.5s ease;\n transition: top 0.5s ease;\n }\n}\n\n.profile-wrapper {\n margin-top: 2rem;\n width: 100%;\n}\n\n#search-result-wrapper {\n display: none;\n height: 100%;\n width: 100%;\n overflow: auto;\n\n .post-content {\n margin-top: 2rem;\n }\n}\n\n/* --- top-bar --- */\n\n#topbar-wrapper {\n height: $topbar-height;\n position: fixed;\n top: 0;\n left: $sidebar-width; /* same as sidebar width */\n right: 0;\n transition: top 0.2s ease-in-out;\n z-index: 50;\n border-bottom: 1px solid rgba(0, 0, 0, 0.07);\n background-color: var(--topbar-wrapper-bg);\n\n [data-topbar-visible=false] & {\n top: -$topbar-height; /* same as topbar height. */\n }\n}\n\n#topbar {\n i { /* icons */\n color: #999;\n }\n\n #breadcrumb {\n font-size: 1rem;\n color: gray;\n padding-left: 0.5rem;\n\n a:hover {\n @extend %link-hover;\n }\n\n span {\n &:not(:last-child) {\n &::after {\n content: \"›\";\n padding: 0 0.3rem;\n }\n }\n }\n }\n} /* #topbar */\n\n#sidebar-trigger,\n#search-trigger {\n display: none;\n}\n\n#search-wrapper {\n display: flex;\n width: 100%;\n border-radius: 1rem;\n border: 1px solid var(--search-wrapper-border-color);\n background: var(--search-wrapper-bg);\n padding: 0 0.5rem;\n\n i {\n z-index: 2;\n font-size: 0.9rem;\n color: var(--search-icon-color);\n }\n}\n\n#search-cancel { /* 'Cancel' link */\n color: var(--link-color);\n margin-left: 1rem;\n display: none;\n\n @extend %cursor-pointer;\n}\n\n#search-input {\n background: center;\n border: 0;\n border-radius: 0;\n padding: 0.18rem 0.3rem;\n color: var(--text-color);\n height: auto;\n\n &:focus {\n box-shadow: none;\n background: center;\n\n &.form-control {\n &::-webkit-input-placeholder { @include input-placeholder; }\n &::-moz-placeholder { @include input-placeholder; }\n &:-ms-input-placeholder { @include input-placeholder; }\n &::placeholder { @include input-placeholder; }\n }\n }\n}\n\n#search-hints {\n padding: 0 1rem;\n\n h4 {\n margin-bottom: 1.5rem;\n }\n\n .post-tag {\n display: inline-block;\n line-height: 1rem;\n font-size: 1rem;\n background: var(--search-tag-bg);\n border: none;\n padding: 0.5rem;\n margin: 0 1.25rem 1rem 0;\n\n &::before {\n content: \"#\";\n color: var(--text-muted-color);\n padding-right: 0.2rem;\n }\n\n @extend %link-color;\n }\n}\n\n#search-results {\n padding-bottom: 3rem;\n\n a {\n &:hover {\n @extend %link-hover;\n }\n\n @extend %link-color;\n @extend %no-bottom-border;\n @extend %heading;\n\n font-size: 1.4rem;\n line-height: 2.5rem;\n }\n\n > div {\n width: 100%;\n\n &:not(:last-child) {\n margin-bottom: 1rem;\n }\n\n i { /* icons */\n color: #818182;\n margin-right: 0.15rem;\n font-size: 80%;\n }\n\n > p {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n }\n }\n} /* #search-results */\n\n#topbar-title {\n display: none;\n font-size: 1.1rem;\n font-weight: 600;\n font-family: sans-serif;\n color: var(--topbar-text-color);\n text-align: center;\n width: 70%;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: keep-all;\n white-space: nowrap;\n}\n\n#core-wrapper {\n min-height: calc(100vh - #{$topbar-height} - #{$footer-height});\n\n .categories,\n #tags,\n #archives {\n a:not(:hover) {\n @extend %no-bottom-border;\n }\n }\n}\n\n#mask {\n display: none;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n width: 100%;\n z-index: 1;\n\n @at-root [#{$sidebar-display}] & {\n display: block !important;\n }\n}\n\n/* --- main wrapper --- */\n\n#main-wrapper {\n background-color: var(--main-wrapper-bg);\n position: relative;\n min-height: 100vh;\n\n @include pl-pr(0);\n}\n\n#core-wrapper,\n#panel-wrapper {\n margin-top: $topbar-height; /* same as the height of topbar */\n}\n\n#topbar-wrapper.row,\n#main > .row,\n#search-result-wrapper > .row {\n @include ml-mr(0);\n}\n\n/* --- button back-to-top --- */\n\n#back-to-top {\n $size: 2.7em;\n\n display: none;\n z-index: 1;\n cursor: pointer;\n position: fixed;\n background: var(--button-bg);\n color: var(--btn-backtotop-color);\n padding: 0;\n width: $size;\n height: $size;\n border-radius: 50%;\n border: 1px solid var(--btn-backtotop-border-color);\n transition: transform 0.2s ease-out;\n -webkit-transition: transform 0.2s ease-out;\n\n i {\n line-height: $size;\n position: relative;\n bottom: 2px;\n }\n}\n\n#back-to-top:hover {\n transform: translate3d(0, -5px, 0);\n -webkit-transform: translate3d(0, -5px, 0);\n}\n\n#notification {\n @keyframes popup {\n from {\n opacity: 0;\n bottom: 0;\n }\n }\n\n .toast-header {\n background: none;\n border-bottom: none;\n color: inherit;\n }\n\n .toast-body {\n font-family: 'Lato';\n line-height: 1.25rem;\n\n button {\n font-size: 90%;\n min-width: 4rem;\n }\n }\n\n &.toast {\n display: none;\n\n &.show {\n display: block;\n min-width: 20rem;\n border-radius: 0.5rem;\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n background-color: rgba(255, 255, 255, 0.5);\n color: #1b1b1eba;\n position: fixed;\n left: 50%;\n bottom: 20%;\n transform: translateX(-50%);\n animation: popup 0.8s;\n }\n }\n\n}\n\n/*\n Responsive Design:\n\n {sidebar, content, panel} >= 1120px screen width\n {sidebar, content} >= 850px screen width\n {content} <= 849px screen width\n\n*/\n\n@media all and (max-width: 576px) {\n footer {\n height: $footer-height-mobile;\n\n > div.d-flex {\n padding: 1.5rem 0;\n flex-wrap: wrap;\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n\n .footer-left,\n .footer-right {\n text-align: center;\n }\n }\n\n #core-wrapper {\n min-height: calc(100vh - #{$topbar-height} - #{$footer-height-mobile}) !important;\n\n h1 {\n margin-top: 2.2rem;\n font-size: 1.75rem;\n }\n\n .post-content {\n > blockquote[class^=prompt-] {\n @include ml-mr(-1.25rem);\n border-radius: 0;\n }\n }\n\n }\n\n #avatar > a {\n width: 5rem;\n height: 5rem;\n }\n\n .site-subtitle {\n @include ml-mr(1.8rem);\n }\n\n}\n\n@media all and (max-width: 768px) {\n %full-width {\n max-width: 100%;\n }\n\n #topbar {\n @extend %full-width;\n }\n\n #main {\n @extend %full-width;\n @include pl-pr(0);\n }\n}\n\n/* hide sidebar and panel */\n@media all and (max-width: 849px) {\n @mixin slide($append: null) {\n $basic: transform 0.4s ease;\n @if $append {\n -webkit-transition: $basic, $append;\n transition: $basic, $append;\n } @else {\n -webkit-transition: $basic;\n transition: $basic;\n }\n }\n\n html,\n body {\n overflow-x: hidden;\n }\n\n [#{$sidebar-display}] {\n #sidebar {\n transform: translateX(0);\n }\n\n #topbar-wrapper,\n #main-wrapper {\n transform: translateX(#{$sidebar-width});\n }\n }\n\n #sidebar {\n @include slide;\n\n transform: translateX(-#{$sidebar-width}); /* hide */\n -webkit-transform: translateX(-#{$sidebar-width});\n\n .cursor {\n -webkit-transition: none;\n -moz-transition: none;\n transition: none;\n }\n }\n\n #main-wrapper {\n @include slide;\n\n padding-top: $topbar-height;\n }\n\n #topbar,\n #main {\n max-width: 100%;\n }\n\n #search-result-wrapper {\n width: 100%;\n }\n\n #breadcrumb,\n #search-wrapper {\n display: none;\n }\n\n #topbar-wrapper {\n @include slide(top 0.2s ease);\n\n left: 0;\n }\n\n #core-wrapper,\n #panel-wrapper {\n margin-top: 0;\n }\n\n #topbar-title,\n #sidebar-trigger,\n #search-trigger {\n display: block;\n }\n\n #search-result-wrapper .post-content {\n letter-spacing: 0;\n }\n\n #tags {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n\n h1.dynamic-title {\n display: none;\n\n ~ .post-content {\n margin-top: 3rem;\n }\n }\n\n} /* max-width: 849px */\n\n@media all and (max-width: 849px) and (orientation: portrait) {\n [data-topbar-visible=false] #topbar-wrapper {\n top: 0;\n }\n}\n\n/* Phone & Pad */\n@media all and (min-width: 577px) and (max-width: 1199px) {\n footer > .d-flex > div {\n width: 312px;\n }\n}\n\n/* Sidebar is visible */\n@media all and (min-width: 850px) {\n /* Solved jumping scrollbar */\n html {\n overflow-y: scroll;\n }\n\n #main-wrapper {\n margin-left: $sidebar-width;\n }\n\n .profile-wrapper {\n margin-top: 3rem;\n }\n\n #search-hints {\n display: none;\n }\n\n #search-wrapper {\n max-width: $search-max-width;\n }\n\n #search-result-wrapper {\n margin-top: 3rem;\n max-width: $main-content-max-width;\n }\n\n div.post-content .table-wrapper > table {\n min-width: 70%;\n }\n\n /* button 'back-to-Top' position */\n #back-to-top {\n bottom: 5.5rem;\n right: 5%;\n }\n\n #topbar {\n @include pl-pr(2rem);\n }\n\n #topbar-title {\n text-align: left;\n }\n\n}\n\n/* Pad horizontal */\n@media all and (min-width: 992px) and (max-width: 1199px) {\n #main .col-lg-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 96%;\n flex: 0 0 96%;\n max-width: 96%;\n }\n}\n\n/* Compact icons in sidebar & panel hidden */\n@media all and (min-width: 850px) and (max-width: 1199px) {\n #sidebar {\n width: $sidebar-width-small;\n\n .site-subtitle {\n margin-left: 1rem;\n margin-right: 1rem;\n }\n\n .sidebar-bottom {\n a,\n span {\n width: 2rem;\n }\n\n .icon-border {\n left: -3px;\n }\n }\n }\n\n #topbar-wrapper {\n left: 210px;\n }\n\n #search-results > div {\n max-width: 700px;\n }\n\n .site-title {\n font-size: 1.3rem;\n margin-left: 0 !important;\n }\n\n .site-subtitle {\n @include ml-mr(1rem);\n\n font-size: 90%;\n }\n\n #main-wrapper {\n margin-left: 210px;\n }\n\n #breadcrumb {\n width: 65%;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: keep-all;\n white-space: nowrap;\n }\n\n}\n\n/* panel hidden */\n@media all and (max-width: 1199px) {\n #panel-wrapper {\n display: none;\n }\n\n #main > div.row {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n}\n\n/* --- desktop mode, both sidebar and panel are visible --- */\n\n@media all and (min-width: 1200px) {\n #back-to-top {\n bottom: 6.5rem;\n }\n\n #search-wrapper {\n margin-right: 4rem;\n }\n\n #search-input {\n -webkit-transition: all 0.3s ease-in-out;\n transition: all 0.3s ease-in-out;\n }\n\n #search-results > div {\n width: 46%;\n\n &:nth-child(odd) {\n margin-right: 1.5rem;\n }\n\n &:nth-child(even) {\n margin-left: 1.5rem;\n }\n\n &:last-child:nth-child(odd) {\n position: relative;\n right: 24.3%;\n }\n }\n\n .post-content {\n font-size: 1.03rem;\n }\n\n footer > div.d-felx {\n width: 85%;\n }\n\n}\n\n@media all and (min-width: 1400px) {\n #back-to-top {\n right: calc((100vw - #{$sidebar-width} - 1140px) / 2 + 3rem);\n }\n}\n\n@media all and (min-width: 1650px) {\n #main-wrapper {\n margin-left: $sidebar-width-large;\n }\n\n #topbar-wrapper {\n left: $sidebar-width-large;\n }\n\n #search-wrapper {\n margin-right: calc(#{$main-content-max-width} * 0.25 - #{$search-max-width});\n }\n\n #topbar,\n #main {\n max-width: $main-content-max-width;\n }\n\n #core-wrapper,\n #tail-wrapper {\n padding-right: 4.5rem !important;\n }\n\n #back-to-top {\n right: calc((100vw - #{$sidebar-width-large} - #{$main-content-max-width}) / 2 + 2rem);\n }\n\n #sidebar {\n width: $sidebar-width-large;\n\n .profile-wrapper {\n margin-top: 4rem;\n margin-bottom: 1rem;\n\n &.text-center {\n text-align: left !important;\n }\n\n %profile-ml {\n margin-left: 4.5rem;\n }\n\n #avatar {\n @extend %profile-ml;\n\n > a {\n width: 6.2rem;\n height: 6.2rem;\n\n &.mx-auto {\n margin-left: 0 !important;\n }\n }\n }\n\n .site-title {\n @extend %profile-ml;\n\n a {\n font-size: 1.7rem;\n letter-spacing: 1px;\n }\n }\n\n .site-subtitle {\n @extend %profile-ml;\n\n word-spacing: 0;\n margin-top: 0.3rem;\n }\n\n } /* .profile-wrapper (min-width: 1650px) */\n\n ul {\n padding-left: 2.5rem;\n\n > li:last-child {\n > a {\n position: static;\n }\n }\n\n .nav-item {\n text-align: left;\n\n .nav-link {\n > span {\n letter-spacing: 2px;\n }\n\n > i {\n &.unloaded {\n display: inline-block !important;\n }\n }\n }\n\n }\n }\n\n .sidebar-bottom {\n padding-left: 3.5rem;\n width: 100%;\n\n $icon-block-size: 2rem;\n\n &.justify-content-center {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n\n > span,\n > button.mode-toggle,\n > a {\n @include ml-mr(0.15rem);\n\n height: $icon-block-size;\n margin-bottom: 0.5rem; /* wrap line */\n }\n\n i {\n background-color: var(--sidebar-btn-bg);\n font-size: 1rem;\n width: $icon-block-size;\n height: $icon-block-size;\n border-radius: 50%;\n position: relative;\n\n &::before {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n }\n\n .icon-border {\n top: 0.9rem;\n }\n\n } /* .sidebar-bottom */\n\n } /* #sidebar */\n\n} /* min-width: 1650px */\n", + "/*\n Style for Homepage\n*/\n\n.pagination {\n color: var(--btn-patinator-text-color);\n font-family: 'Lato', sans-serif;\n\n a:hover {\n text-decoration: none;\n }\n\n .page-item {\n .page-link {\n color: inherit;\n width: 2.5rem;\n height: 2.5rem;\n padding: 0;\n display: -webkit-box;\n -webkit-box-pack: center;\n -webkit-box-align: center;\n border-radius: 50%;\n border: 1px solid var(--btn-paginator-border-color);\n background-color: var(--button-bg);\n\n &:hover {\n background-color: var(--btn-paginator-hover-color);\n }\n }\n\n &.active {\n .page-link {\n background-color: var(--btn-paginator-hover-color);\n color: var(--btn-text-color);\n }\n }\n\n &.disabled {\n cursor: not-allowed;\n\n .page-link {\n color: rgba(108, 117, 125, 0.57);\n border-color: var(--btn-paginator-border-color);\n background-color: var(--button-bg);\n }\n }\n\n &:first-child .page-link,\n &:last-child .page-link {\n border-radius: 50%;\n }\n } // .page-item\n\n} // .pagination\n\n#post-list {\n margin-top: 1rem;\n padding-right: 0.5rem;\n\n .post-preview {\n padding-top: 1.5rem;\n padding-bottom: 1rem;\n border-bottom: 1px solid var(--main-border-color);\n\n a:hover {\n @extend %link-hover;\n }\n\n h1 {\n font-size: 1.4rem;\n margin: 0;\n }\n\n .post-meta {\n i {\n font-size: 0.73rem;\n\n &:not(:first-child) {\n margin-left: 1.2rem;\n }\n }\n\n em {\n @extend %normal-font-style;\n }\n }\n\n .post-content {\n margin-top: 0.6rem;\n margin-bottom: 0.6rem;\n color: var(--post-list-text-color);\n\n > p {\n /* Make preview shorter on the homepage */\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n }\n\n .pin {\n > i {\n transform: rotate(45deg);\n padding-left: 3px;\n color: var(--pin-color);\n }\n\n > span {\n display: none;\n }\n }\n\n } // .post-preview\n} // #post-list\n\n/* Hide SideBar and TOC */\n@media all and (max-width: 830px) {\n .pagination {\n justify-content: space-evenly;\n\n .page-item {\n &:not(:first-child):not(:last-child) {\n display: none;\n }\n\n }\n\n }\n}\n\n/* Sidebar is visible */\n@media all and (min-width: 831px) {\n #post-list {\n margin-top: 1.5rem;\n\n .post-preview .post-meta {\n .pin {\n background: var(--pin-bg);\n border-radius: 5px;\n line-height: 1.4rem;\n height: 1.3rem;\n margin-top: 3px;\n padding-left: 1px;\n padding-right: 6px;\n\n > span {\n display: inline;\n }\n }\n }\n }\n\n .pagination {\n font-size: 0.85rem;\n\n .page-item {\n &:not(:last-child) {\n margin-right: 0.7rem;\n }\n\n .page-link {\n width: 2rem;\n height: 2rem;\n }\n\n }\n\n .page-index {\n display: none;\n }\n\n } // .pagination\n\n}\n\n/* Pannel hidden */\n@media all and (max-width: 1200px) {\n #post-list {\n padding-right: 0;\n }\n}\n", + "/*\n Post-specific style\n*/\n\n@mixin btn-sharing-color($light-color, $important: false) {\n @if $important {\n color: var(--btn-share-color, $light-color) !important;\n } @else {\n color: var(--btn-share-color, $light-color);\n }\n}\n\n@mixin btn-post-nav {\n width: 50%;\n position: relative;\n border-color: var(--btn-border-color);\n}\n\n@mixin dot($pl: 0.25rem, $pr: 0.25rem) {\n content: \"\\2022\";\n padding-left: $pl;\n padding-right: $pr;\n}\n\n%text-color {\n color: var(--text-color);\n}\n\nh1 + .post-meta {\n span + span::before {\n @include dot;\n }\n\n em {\n @extend %text-color;\n\n a {\n @extend %text-color;\n }\n }\n}\n\nimg.preview-img {\n margin: 0;\n border-radius: 6px;\n\n &.bg[data-loaded=true] {\n background: var(--preview-img-bg);\n }\n}\n\n.post-tail-wrapper {\n margin-top: 6rem;\n border-bottom: 1px double var(--main-border-color);\n font-size: 0.85rem;\n\n .post-meta a:not(:hover) {\n @extend %link-underline;\n }\n}\n\n.post-tags {\n line-height: 2rem;\n}\n\n.post-navigation {\n padding-top: 3rem;\n padding-bottom: 4rem;\n\n .btn {\n @include btn-post-nav;\n\n color: var(--link-color);\n\n &:hover {\n background: #2a408e;\n color: #fff;\n border-color: #2a408e;\n }\n\n &.disabled {\n @include btn-post-nav;\n\n pointer-events: auto;\n cursor: not-allowed;\n background: none;\n color: gray;\n\n &:hover {\n border-color: none;\n }\n }\n\n &.btn-outline-primary.disabled:focus {\n box-shadow: none;\n }\n\n &::before {\n color: var(--text-muted-color);\n font-size: 0.65rem;\n text-transform: uppercase;\n content: attr(prompt);\n }\n\n &:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n left: 0.5px;\n }\n\n &:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n right: 0.5px;\n }\n }\n\n p {\n font-size: 1.1rem;\n line-height: 1.5rem;\n margin-top: 0.3rem;\n white-space: normal;\n }\n\n} /* .post-navigation */\n\n@keyframes fade-up {\n from {\n opacity: 0;\n position: relative;\n top: 2rem;\n }\n to {\n opacity: 1;\n position: relative;\n top: 0;\n }\n}\n\n#toc-wrapper {\n border-left: 1px solid rgba(158, 158, 158, 0.17);\n position: -webkit-sticky;\n position: sticky;\n top: 4rem;\n transition: top 0.2s ease-in-out;\n animation: fade-up 0.8s;\n}\n\n#toc li a {\n font-size: 0.8rem;\n\n &.nav-link:not(.active) {\n color: inherit;\n }\n\n}\n\nnav[data-toggle=toc] {\n .nav {\n .nav > li > a.active {\n font-weight: 600 !important;\n }\n }\n}\n\n/* --- Related Posts --- */\n\n#related-posts {\n > h3 {\n @include label(1.1rem, 600);\n }\n\n em {\n @extend %normal-font-style;\n\n color: var(--relate-post-date);\n }\n\n .card {\n border-color: var(--card-border-color);\n background-color: var(--card-bg);\n box-shadow: 0 0 5px 0 var(--card-box-shadow);\n -webkit-transition: all 0.3s ease-in-out;\n -moz-transition: all 0.3s ease-in-out;\n transition: all 0.3s ease-in-out;\n\n h3 {\n @extend %text-color;\n }\n\n &:hover {\n -webkit-transform: translate3d(0, -3px, 0);\n transform: translate3d(0, -3px, 0);\n box-shadow: 0 10px 15px -4px rgba(0, 0, 0, 0.15);\n }\n }\n\n p {\n font-size: 0.9rem;\n margin-bottom: 0.5rem;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n\n a:hover {\n text-decoration: none;\n }\n\n ul {\n list-style-type: none;\n padding-inline-start: 1.5rem;\n\n > li::before {\n background: #c2c9d4;\n width: 5px;\n height: 5px;\n border-radius: 1px;\n display: block;\n content: \"\";\n position: relative;\n top: 1rem;\n right: 1rem;\n }\n }\n}\n\n#tail-wrapper {\n min-height: 2rem;\n\n > div:last-of-type {\n margin-bottom: 2rem;\n }\n\n #disqus_thread {\n min-height: 8.5rem;\n }\n\n}\n\n.post-tail-bottom a {\n color: inherit;\n}\n\n%btn-share-hovor {\n color: var(--btn-share-hover-color) !important;\n}\n\n.share-wrapper {\n vertical-align: middle;\n user-select: none;\n\n .share-icons {\n font-size: 1.2rem;\n\n a {\n &:not(:last-child) {\n margin-right: 0.25rem;\n }\n\n &:hover {\n text-decoration: none;\n\n > i {\n @extend %btn-share-hovor;\n }\n }\n }\n\n > i {\n position: relative;\n bottom: 1px;\n\n @extend %cursor-pointer;\n\n &:hover {\n @extend %btn-share-hovor;\n }\n }\n\n .fab {\n &.fa-twitter {\n @include btn-sharing-color(rgba(29, 161, 242, 1));\n }\n\n &.fa-facebook-square {\n @include btn-sharing-color(rgb(66, 95, 156));\n }\n\n &.fa-telegram {\n @include btn-sharing-color(rgb(39, 159, 217));\n }\n\n &.fa-weibo {\n @include btn-sharing-color(rgb(229, 20, 43));\n }\n }\n\n } /* .share-icons */\n\n .fas.fa-link {\n @include btn-sharing-color(rgb(171, 171, 171));\n }\n\n} /* .share-wrapper */\n\n.share-label {\n @include label(inherit, 400, inherit);\n\n &::after {\n content: \":\";\n }\n}\n\n.license-wrapper {\n line-height: 1.2rem;\n\n > a {\n color: var(--text-color);\n\n &:hover {\n @extend %link-hover;\n }\n }\n\n span:last-child {\n font-size: 0.85rem;\n }\n\n} /* .license-wrapper */\n\n@media all and (max-width: 576px) {\n .preview-img[data-src] {\n margin-top: 2.2rem;\n }\n\n .post-tail-bottom {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n\n > div:first-child {\n width: 100%;\n margin-top: 1rem;\n }\n }\n}\n\n@media all and (max-width: 768px) {\n .post-content > p > img {\n max-width: calc(100% + 1rem);\n }\n}\n\n/* Hide SideBar and TOC */\n@media all and (max-width: 849px) {\n .post-navigation {\n padding-left: 0;\n padding-right: 0;\n margin-left: -0.5rem;\n margin-right: -0.5rem;\n }\n\n .preview-img[data-src] {\n max-width: 100vw;\n border-radius: 0;\n }\n}\n", + "/*\n Styles for Tab Tags\n*/\n\n.tag {\n border-radius: 0.7em;\n padding: 6px 8px 7px;\n margin-right: 0.8rem;\n line-height: 3rem;\n letter-spacing: 0;\n border: 1px solid var(--tag-border) !important;\n box-shadow: 0 0 3px 0 var(--tag-shadow);\n\n span {\n margin-left: 0.6em;\n font-size: 0.7em;\n font-family: 'Oswald', sans-serif;\n }\n}\n", + "/*\n Style for Archives\n*/\n\n%date-timeline {\n content: \"\";\n width: 4px;\n left: 75px;\n display: inline-block;\n float: left;\n position: relative;\n background-color: var(--timeline-color);\n}\n\n#archives {\n letter-spacing: 0.03rem;\n\n span.lead {\n font-size: 1.5rem;\n position: relative;\n left: 8px;\n\n &::after { /* Year dot */\n content: \"\";\n display: block;\n position: relative;\n -webkit-border-radius: 50%;\n -moz-border-radius: 50%;\n border-radius: 50%;\n width: 12px;\n height: 12px;\n top: -26px;\n left: 63px;\n border: 3px solid;\n background-color: var(--timeline-year-dot-color);\n border-color: var(--timeline-node-bg);\n box-shadow: 0 0 2px 0 #c2c6cc;\n z-index: 1;\n }\n\n &:not(:first-child) {\n position: relative;\n left: 4px;\n\n &::after {\n left: 67px;\n }\n }\n\n } // #archives span.lead\n\n ul {\n li {\n font-size: 1.1rem;\n line-height: 3rem;\n\n div {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n a {\n /* post title in Archvies */\n margin-left: 2.5rem;\n position: relative;\n top: 0.1rem;\n }\n }\n\n &:nth-child(odd) {\n background-color: var(--main-wrapper-bg, #fff);\n background-image: linear-gradient(to left, #fff, #fbfbfb, #fbfbfb, #fbfbfb, #fff);\n }\n\n &::after {\n @extend %date-timeline;\n\n height: 2.8rem;\n top: -1.3rem;\n }\n\n &:first-child::before {\n @extend %date-timeline;\n\n height: 3.06rem;\n top: -1.61rem;\n }\n }\n\n &:not(:last-child) > li:last-child::after {\n height: 3.4rem;\n }\n\n &:last-child > li:last-child::after {\n display: none;\n }\n } // #archives ul\n\n .date {\n white-space: nowrap;\n display: inline-block;\n\n &.month {\n width: 1.4rem;\n text-align: center;\n\n ~ a::before {\n /* A dot for Month and Day */\n content: \"\";\n display: inline-block;\n position: relative;\n -webkit-border-radius: 50%;\n -moz-border-radius: 50%;\n border-radius: 50%;\n width: 8px;\n height: 8px;\n float: left;\n top: 1.35rem;\n left: 69px;\n background-color: var(--timeline-node-bg);\n box-shadow: 0 0 3px 0 #c2c6cc;\n z-index: 1;\n }\n }\n\n &.day {\n font-size: 85%;\n font-family: 'Lato', sans-serif;\n text-align: center;\n margin-right: -2px;\n width: 1.2rem;\n position: relative;\n left: -0.15rem;\n }\n } // #archives .date\n\n} // #archives\n\n@media all and (max-width: 576px) {\n #archives {\n margin-top: -1rem;\n\n ul {\n letter-spacing: 0;\n }\n }\n}\n", + "/*\n Style for Tab Categories\n*/\n\n%category-icon-color {\n color: gray;\n}\n\n.categories {\n margin-bottom: 2rem;\n\n .card-header {\n padding-right: 12px;\n }\n\n i {\n @extend %category-icon-color;\n\n font-size: 86%; // fontawesome icons\n }\n\n .list-group-item {\n border-left: none;\n border-right: none;\n padding-left: 2rem;\n\n &:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n }\n\n} // .categories\n\n.category-trigger {\n width: 1.7rem;\n height: 1.7rem;\n border-radius: 50%;\n text-align: center;\n color: #6c757d !important;\n\n &:hover {\n i {\n color: var(--categories-icon-hover-color);\n }\n }\n\n i {\n position: relative;\n height: 0.7rem;\n width: 1rem;\n transition: transform 300ms ease;\n }\n}\n\n@media (hover: hover) { // only works on desktop\n .category-trigger:hover {\n background-color: var(--categories-hover-bg);\n }\n}\n\n.rotate {\n -ms-transform: rotate(-90deg); /* IE 9 */\n -webkit-transform: rotate(-90deg); /* Safari 3-8 */\n transform: rotate(-90deg);\n}\n", + "/*\n Style for page Category and Tag\n*/\n\n.dash {\n margin: 0 0.5rem 0.6rem 0.5rem;\n border-bottom: 2px dotted var(--dash-color);\n}\n\n#page-category,\n#page-tag {\n ul > li {\n line-height: 1.5rem;\n padding: 0.6rem 0;\n\n &::before { // dot\n background: #999;\n width: 5px;\n height: 5px;\n border-radius: 50%;\n display: block;\n content: \"\";\n position: relative;\n top: 0.6rem;\n margin-right: 0.5rem;\n }\n\n > a { /* post's title */\n @extend %no-bottom-border;\n\n font-size: 1.1rem;\n }\n\n > span:last-child {\n white-space: nowrap;\n } /* post's date */\n }\n}\n\n#page-tag h1 > i { // tag icon\n font-size: 1.2rem;\n}\n\n#page-category h1 > i {\n font-size: 1.25rem;\n}\n\n#page-category,\n#page-tag,\n#access-lastmod {\n a:hover {\n @extend %link-hover;\n\n margin-bottom: -1px; // Avoid jumping\n }\n}\n\n@media all and (max-width: 576px) {\n #page-category,\n #page-tag {\n ul > li {\n &::before {\n margin: 0 0.5rem;\n }\n\n > a {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n }\n}\n" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/assets/img/favicons/android-chrome-192x192.png b/assets/img/favicons/android-chrome-192x192.png new file mode 100644 index 0000000..d255d27 Binary files /dev/null and b/assets/img/favicons/android-chrome-192x192.png differ diff --git a/assets/img/favicons/android-chrome-384x384.png b/assets/img/favicons/android-chrome-384x384.png new file mode 100644 index 0000000..3496ccd Binary files /dev/null and b/assets/img/favicons/android-chrome-384x384.png differ diff --git a/assets/img/favicons/android-chrome-512x512.png b/assets/img/favicons/android-chrome-512x512.png new file mode 100644 index 0000000..a0cdd95 Binary files /dev/null and b/assets/img/favicons/android-chrome-512x512.png differ diff --git a/assets/img/favicons/apple-touch-icon.png b/assets/img/favicons/apple-touch-icon.png new file mode 100644 index 0000000..20f4d30 Binary files /dev/null and b/assets/img/favicons/apple-touch-icon.png differ diff --git a/assets/img/favicons/browserconfig.xml b/assets/img/favicons/browserconfig.xml new file mode 100644 index 0000000..54217f7 --- /dev/null +++ b/assets/img/favicons/browserconfig.xml @@ -0,0 +1 @@ + #da532c diff --git a/assets/img/favicons/favicon-16x16.png b/assets/img/favicons/favicon-16x16.png new file mode 100644 index 0000000..8c2bc3f Binary files /dev/null and b/assets/img/favicons/favicon-16x16.png differ diff --git a/assets/img/favicons/favicon-32x32.png b/assets/img/favicons/favicon-32x32.png new file mode 100644 index 0000000..ec77383 Binary files /dev/null and b/assets/img/favicons/favicon-32x32.png differ diff --git a/assets/img/favicons/favicon.ico b/assets/img/favicons/favicon.ico new file mode 100644 index 0000000..c92dfe5 Binary files /dev/null and b/assets/img/favicons/favicon.ico differ diff --git a/assets/img/favicons/mstile-150x150.png b/assets/img/favicons/mstile-150x150.png new file mode 100644 index 0000000..2c11823 Binary files /dev/null and b/assets/img/favicons/mstile-150x150.png differ diff --git a/assets/img/favicons/safari-pinned-tab.svg b/assets/img/favicons/safari-pinned-tab.svg new file mode 100644 index 0000000..7ae0483 --- /dev/null +++ b/assets/img/favicons/safari-pinned-tab.svg @@ -0,0 +1,480 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/favicons/site.webmanifest b/assets/img/favicons/site.webmanifest new file mode 100644 index 0000000..5d8b669 --- /dev/null +++ b/assets/img/favicons/site.webmanifest @@ -0,0 +1 @@ +{ "name": "Cole Maxwell", "short_name": "Cole Maxwell", "description": "A site about software craftsmanship, system design, and Cole Maxwell.", "icons": [ { "src": "/assets/img/favicons/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/assets/img/favicons/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" }], "start_url": "/index.html", "theme_color": "#2a1e6b", "background_color": "#ffffff", "display": "fullscreen" } diff --git a/assets/index.html b/assets/index.html new file mode 100644 index 0000000..d07f26c --- /dev/null +++ b/assets/index.html @@ -0,0 +1,11 @@ + + + + Redirecting… + + + + +

Redirecting…

+ Click here if you are not redirected. + diff --git a/assets/js/data/search.json b/assets/js/data/search.json new file mode 100644 index 0000000..0023412 --- /dev/null +++ b/assets/js/data/search.json @@ -0,0 +1 @@ +[ { "title": "Using ODBC on IBM i for Local Linux Development", "url": "/posts/ibmi-odbc-on-linux/", "categories": "IBM i", "tags": "ibmi, odbc, linux, as400, sql", "date": "2022-08-03 19:39:00 -0500", "snippet": "If you are new to the IBM i platform coming right out of school, like me, or you are a developer used to working exclusively with open-source tooling, the IBM i platform can be a strange place. The legacy application support is industry leading, to both the benefit and downside of the platform. Under the hood there is IBM’s powerful and well tested relational database, DB2 for i. So far, I like what I see. Is it possible to get the best of the open-source tooling while leveraging the power of an existing enterprise grade database? My initial take is yes, and the ODBC driver on the platform is the answer.The Open Database Connectivity (ODBC) standard is an application programming interface (API) for accessing database management systems (DBMS). The designers of ODBC aimed to make it independent of database systems and operating systems. From what I have seen so far IBM is continuing to make improvements to the driver in the latest release of IBM i. I personally view ODBC as the future of the platform and a key factor to help IBM i remain relevant as the years progress.As I have gotten my start, the other open-source advocates on the IBM i platform have provided many excellent articles, source code examples, and video lessons that have aided my on boarding to the platform. However, even though the topic of ODBC has been extensively covered I still felt like a comprehensive guide for connecting locally to DB2 for i via ODBC on a linux development machine was missing.This post has compiled the good, but scattered, information to explain how an open-source developer would go about connecting up their local linux machine to DB2 for i to develop an application in an open-source language of their choice. I want to give a big thank you and credit to Liam Allan, Kevin Adler, Seiden Group, and FormaServe for helping get this information out to the community. They are the heavy hitters aiding the open-source embracement on IBM i. Much of the following is copied directly from their blogs and video resources. Please see the references at the end of this post.PrerequisitesYou must have the ODBC driver installed on the IBM i you want to connect to. See Seiden Group’s guide1 for Using YUM to Install or Update the IBM i ODBC DriverEnhance Your UnderstandingIf your background is exclusively developing on the IBM i (AS400) and you don’t have experience with Linux or other Unix-like operating systems you may want to spend some time reading about the basic file structure of Unix-like operating systems. You will find these patterns in the /QOpenSys directory on IBM i and it will aid your journey to better understand open-source on IBM i and even Linux. University of Cincinnati: The Unix File System IBM: Open systems file system (QOpenSys)Installing the RepositoryIBM has made RPM and DEB package manager repositories for Linux available directly from IBM for the IBM i Access Client Solutions application package, which includes the IBM i Access ODBC driver.With this change, it is much easier to install the driver on Linux. It also makes it easier for automation to install the driver as well, whether that’s Ansible system deployment scripts or Dockerfiles for building ODBC-based Linux container apps. In addition, it makes updating the driver much easier too, since the process uses the same upgrade procedure as the rest of the system packages2.The repositories are located under: https://public.dhe.ibm.com/software/ibmi/products/odbc/.Add the Repository to the Package ManagerFirst, you must add IBM’s package repository to your distribution’s package manager.Debian-based and Ubuntu-based Distribution Setupcurl https://public.dhe.ibm.com/software/ibmi/products/odbc/debs/dists/1.1.0/ibmi-acs-1.1.0.list | sudo tee /etc/apt/sources.list.d/ibmi-acs-1.1.0.listRed Hat-based Distribution Setupcurl https://public.dhe.ibm.com/software/ibmi/products/odbc/rpms/ibmi-acs.repo | sudo tee /etc/yum.repos.d/ibmi-acs.repoSUSE-based Distribution Setupcurl https://public.dhe.ibm.com/software/ibmi/products/odbc/rpms/ibmi-acs.repo | sudo tee /etc/zypp/repos.d/ibmi-acs.repoInstalling the ODBC driverNow install the package via the distribution’s package manager.Debian-based and Ubuntu-based Distribution Installationsudo apt updatesudo apt install ibm-iaccessRed Hat-based Distribution Installationsudo dnf install --refresh ibm-iaccessSUSE-based Distribution Installationsudo zypper refreshsudo zypper install ibm-iaccessConfiguring the Connection (FYI)Now that you have the IBM i Access ODBC Driver installed on your system, you are ready to connect to Db2 on i. Below is some background information on the two methods to create a connection.Connection StringsODBC uses a connection string with keywords to create a database connection. Keywords are case insensitive, and values passed are separated from the keyword by an equals sign (ā€œ=ā€) and end with a semi-colon (ā€œ;ā€). As long as you are using an ODBC database connector, you should be able to pass an identical connection string in any language or technology and be confident that it will correctly connect to Db2 on i. A common connection string may look something like3:DRIVER=IBM i Access ODBC Driver;SYSTEM=my.ibmi.system;UID=foo;PWD=bar;In the above example, we define the following connection options: DRIVER: The ODBC driver for Db2 for i that we are using to connect to the database (and that we installed above) SYSTEM: The location of your IBM i system, which can be its network name, IP address, or similar UID: The User ID that you want to use on the IBM i system that you are connecting to PWD: The password of the User ID passed above.These are only some of the over 70 connection options you can use when connecting to Db2 on i using the IBM i Access ODBC Driver. A complete list of IBM i Access ODBC Driver connection options can be found at the IBM Knowledge Center: Connection string keywords webpage. If passing connections options through the connection string, be sure to use the keyword labeled with Connection String.DSNsAs you add more and more options to your connection string, your connection string can become quite cumbersome. Luckily, ODBC offers another way of defining connection options called a DSN (datasource name). Where you define your DSN will depend on whether you are using Windows ODBC driver manager or unixODBC on Linux or IBM i3.IBM i, Linux distributions, and macOS use unixODBC and have nearly identical methods of setting up your drivers and your DSNs.odbc.ini and .odbc.iniWhen using unixODBC, DSNs are defined in odbc.ini and .odbc.ini (note the . preceding the latter). These two files have the same structure, but have one important difference:odbc.ini defines DSNs that are available to all users on the system. If there are DSNs that should be available to everyone, they can be defined and shared here. Likely, this file is located in the default location, which depends on whether you are on IBM i or Linux:IBM i: /QOpenSys/etc/odbc.iniLinux: /etc/unixODBC/odbc.iniIf you want to make sure, the file can be found by running:odbcinst -j.odbc.ini is found in your home directory ~/ and defines DSNs that are available only to you. If you are going to define DSNs with your personal username and password, this is the place to do it.In both odbc.ini and .odbc.ini, you name your DSN with [] brackets, then specify keywords and values below it. An example of a DSN stored in ~/.odbc.ini used to connect to an IBM i system with private credentials might look like:[MYDSN]Description = My IBM i SystemDriver = IBM i Access ODBC DriverSystem = my.ibmi.systemUserID = fooPassword = barNaming = 0DefaultLibraries = MYLIBTrueAutoCommit = 1In the above example, we define the following connection options: Driver: The ODBC driver for Db2 for i that we are using to connect to the database (and that we installed above) System: The location of your IBM i system, which can be its network name, IP address, or similar UserID: The User ID that you want to use on the IBM i system that you are connecting to Password: The password of the User ID passed above. Naming: Specifies the naming convention used when referring to tables. For more information, refer to Naming conventions in the DB2 for i SQL reference. DefaultLibraries: Specifies the IBM i libraries to add to the server job’s library list as well as the default library used to resolve unqualified names. The libraries can be delimited by commas or spaces. TrueAutoCommit: Specifies how to handle autocommit supportLike connection string keywords, DSN keywords can be found at the IBM Knowledge Center: Connection string keywords webpage. When passing connection options through a DSN, be sure to use the keyword labeled with ODBC.INI.User Level Connection In your home directory create a .odbc.ini filetouch .odbc.ini Using your text editor of choice (vi, vim, nano, ect…) add the following DSN configuration, changing the UserID and Password to your IBM i username and password.[devserver]Description = Connection to development power serverDriver = IBM i Access ODBC DriverSystem = devserver.mycompany.comUserID = myUsernamePassword = myPasswordNaming = 0DefaultLibraries = businessDataLib,myUserLib,myBusinessUtilsIn the above example, we define the following connection options: Driver: The ODBC driver for Db2 for i that we are using to connect to the database (This must be installed on the OS) System: The location of your IBM i system, which can be its network name, IP address, or similar UserID: The User ID that you want to use on the IBM i system that you are connecting to Password: The password of the User ID passed above. Naming: Specifies the naming convention used when referring to tables. A 0 indicates you want SQLs naming convention, which is likely what you want for running queries in any program you write. DefaultLibraries: Specifies the IBM i libraries to add to the server job’s library list as well as the default library used to resolve unqualified names. The libraries can be delimited by commas or spaces.Testing the ConnectionThe isql command is included with the open source components of unixODBC and unixODBC-devel. You can use this command to run SQL queries via ODBC right from the command-line. To make the connection to the DSN configured above pass in the DSN name:isql devserverIf the connection is configured correctly, you will get a prompt that looks like this:+---------------------------------------+| Connected! || || sql-statement || help [tablename] || quit || |+---------------------------------------+SQL>There is an included sample customer table (qiws.qcustcdt) on all IBM i systems that can be used for testing4Type this command into the SQL> prompt:select * from qiws.qcustcdtThe results will look like this:SQL> select * from qiws.qcustcdt+---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+| CUSNUM | LSTNAM | INIT| STREET | CITY | STATE| ZIPCOD | CDTLMT| CHGCOD| BALDUE | CDTDUE |+---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+| 938472 | Henning | G K | 4859 Elm Ave | Dallas| TX | 75217 | 5000 | 3 | 37.00 | 0 || 839283 | Jones | B D | 21B NW 135 St| Clay | NY | 13041 | 400 | 1 | 100.00 | 0 || 392859 | Vine | S S | PO Box 79 | Broton| VT | 5046 | 700 | 1 | 439.00 | 0 || 938485 | Johnson | J A | 3 Alpine Way | Helen | GA | 30545 | 9999 | 2 | 3987.50 | 33.50 || 397267 | Tyron | W E | 13 Myrtle Dr | Hector| NY | 14841 | 1000 | 1 | 0 | 0 || 389572 | Stevens | K L | 208 Snow Pass| Denver| CO | 80226 | 400 | 1 | 58.75 | 1.50 || 846283 | Alison | J S | 787 Lake Dr | Isle | MN | 56342 | 5000 | 3 | 10.00 | 0 || 475938 | Doe | J W | 59 Archer Rd | Sutter| CA | 95685 | 700 | 2 | 250.00 | 100.00 || 693829 | Thomas | A N | 3 Dove Circle| Casper| WY | 82609 | 9999 | 2 | 0 | 0 || 593029 | Williams| E D | 485 SE 2 Ave | Dallas| TX | 75218 | 200 | 1 | 25.00 | 0 || 192837 | Lee | F L | 5963 Oak St | Hector| NY | 14841 | 700 | 2 | 489.50 | .50 || 583990 | Abraham | M T | 392 Mill St | Isle | MN | 56342 | 9999 | 3 | 500.00 | 0 |+---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+SQLRowCount returns -112 rows fetchedSQL>To exit the prompt press Ctr + C or type quit into the promptNext StepsNow that you have the ODBC driver installed and configured on you development machine you can use the ODBC drivers in many of your favorite open-source programing languages. See IBM’s Db2 for Developers page for supported languages.Examples of connections in programing languages: Seiden Group: HOW TO QUERY IBM i DATA WITH PHP AND PDO_ODBC Liam Allan: Using node-odbc on Windows to talk to IBM iOther Helpful Articles: Seiden Group: Q&A: IBM i ODBC DRIVER Seiden Group: ODBC CONNECTION STRINGS FOR IBM i DB2References Seiden Group: USING YUM TO INSTALL OR UPDATE THE IBM i ODBC DRIVERĀ ↩ Kevin Adler: IBM-provided Repositories ODBC Linux Driver RepositoriesĀ ↩ IBM i OSS DocsĀ ↩Ā ↩2 FormaServe: How to use ODBC on the IBM iĀ ↩ " }, { "title": "Utilize a RESTful API with IBMi QSYS_HTTP Tools in SQL", "url": "/posts/rest-api-ibmi-qsys2/", "categories": "IBM i", "tags": "ibmi, api, qsys2, rest, sql", "date": "2022-07-14 15:30:55 -0500", "snippet": "The ApiThis demo used the fakeStoreApi which is a free online REST API that you can use whenever you need Pseudo-real data for without running any server-side code. It’s awesome for teaching purposes, sample codes, tests, etc. This API does not require authentication for requests A list of other public APIs can be found hereHTTP Functions OverviewThese HTTP functions are used to make HTTP requests that use web services. These functions allow the SQL programmer to use Representational State Transfer (RESTful) via SQL, including Embedded SQL. They provide the same capabilities as the SYSTOOLS HTTP functions without the overhead of creating a JVM.These HTTP functions exist in QSYS2 and have lower overhead than the SYSTOOLS HTTP functions. Additional benefits of the QSYS2 HTTP functions are HTTP authentication, proxy support, configurable redirection attempts, and configurable SSL options.The URL parameter supports http: and https: URLs. The https: URL indicates that network communication should take place over a secure communication channel. An https request uses TLS (Transport Layer Security) to create the secure channel. This secure channel encrypts any transmitted data and also prevents man-in-the-middle attacks. Any communication that contains secure information should use https instead of http. Because of the sensitive nature of userids and passwords, HTTP authentication is not allowed for http URLs.Foundational HTTP functionsThe foundational functions are named according to the two dimensions used when making HTTP requests.The first dimension is the HTTP operation. There are 5 different HTTP operations: GET, PUT, POST, PATCH, and DELETE.The second dimension indicates whether the verbose version of the function should be used. The non-verbose functions are scalar functions that return the response as a CLOB. The verbose functions are table functions that return a single row, which includes the return header information that is sent from the HTTP server. The header information is formatted as JSON.The names of the functions reflect these dimensions. For example, HTTP_GET_VERBOSE uses the GET operation from the first dimension and the VERBOSE setting from the second dimension. All the functions return CLOB data. See the IBM Docs for more detailsGet a List of ProductsThe first demo receives a list of products from the fakeStoreApi as JSON. Here is a look at the JSON we can expect to receive:[ { \"id\": 1, \"title\": \"Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops\", \"price\": 109.95, \"description\": \"Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday\", \"category\": \"men's clothing\", \"image\": \"https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg\", \"rating\": { \"rate\": 3.9, \"count\": 120 } }, { \"id\": 2, \"title\": \"Mens Casual Premium Slim Fit T-Shirts \", \"price\": 22.3, \"description\": \"Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.\", \"category\": \"men's clothing\", \"image\": \"https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_.jpg\", \"rating\": { \"rate\": 4.1, \"count\": 259 } }]This is actually an array of two JSON objects. The JSON tools provided by DB2 are smart and will know to treat each object separately. To make sure we are getting the expected JSON we can print the results of QSYS2.HTTP_GET with the VALUES keyword.VALUES QSYS2.HTTP_GET( 'http://fakestoreapi.com/products?limit=2', '' );QSYS2.HTTP_GET takes two arguments. The first argument is the URL of the API endpoint the GET request will be sent to. In this case it is the http://fakestoreapi.com/products endpoint and the limit=2 parameter is added to only get two items total. The second argument is for HTTP header parameters. In this case no HTTP header parameters need to be specified to complete the request so this field can be left empty.The JSON_TABLE function can take any QSYS2.HTTP_XXXX that produces JSON as an argument. The values from the JSON keys can then be extracted and placed directly into a table.SELECT *FROM JSON_TABLE( QSYS2.HTTP_GET( 'http://fakestoreapi.com/products?limit=10', '' ), '$' COLUMNS( name VARCHAR(75) PATH 'lax $.title', totalRatings INT PATH 'lax $.rating.count' ) );This example will extract the values from the title (name of item) key and the nested field count (total number of ratings) key in the ratings array. and then place them into a table with the column names name and totalRatings.Result: Name Rating Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops 120 Mens Casual Premium Slim Fit T-Shirts 259 Mens Cotton Jacket 500 Mens Casual Slim Fit 430 John Hardy Women’s Legends Naga Gold & Silver Dragon Station Chain Bracelet 400 Solid Gold Petite Micropave 70 White Gold Plated Princess 400 Pierced Owl Rose Gold Plated Stainless Steel Double 100 WD 2TB Elements Portable External Hard Drive - USB 3.0 203 SanDisk SSD PLUS 1TB Internal SSD - SATA III 6 Gb/s 470 POST a New UserThe next example is sending a POST request to the https://fakestoreapi.com/users endpoint to create a new user. The fakeStoreApi docs indicate that the body of our HTTP POST request should contain the following JSON object:{ \"email\":\"John@gmail.com\", \"username\":\"johnd\", \"password\":\"m38rmF$\", \"name\":{ \"firstname\":\"John\", \"lastname\":\"Doe\" }, \"address\":{ \"city\":\"kilcoole\", \"street\":\"7835 new road\", \"number\":3, \"zipcode\":\"12926-3874\", \"geolocation\":{ \"lat\":\"-37.3159\", \"long\":\"81.1496\" } }, \"phone\": \"1-570-236-7033\"}Upon a successful add of a new user the API will return a 200 response code and a JSON object with the user’s new id:{ \"address\": { \"geolocation\": { \"lat\": \"-37.3159\", \"long\": \"81.1496\" }, \"city\": \"kilcoole\", \"street\": \"7835 new road\" }, \"_id\": \"62c73539f0321700139f4682\", \"id\": 1, \"email\": \"John@gmail.com\", \"username\": \"johnd\", \"password\": \"m38rmF$\", \"phone\": \"1-570-236-7033\"}QSYS2.HTTP_POST takes three This time arguments the URL, the HTTP body and the HTTP header parameters. This time the URL and body arguments of the QSYS2.HTTP_POST will be assigned to variables for readability.We also need to specify the ā€œContent-Typeā€ in the HTTP header to indicate that our HTTP body will be in JSON format. By default QSYS2.HTTP_POST specifies the content type of the body to be XML. To override this setting we pass in the header settings in JSON format:{\"header\":\"Content-Type,application/json;charset=utf-8\"} More information about the different header settings that can to passed to the QSYS2.HTTP_XXXX tools can be found in the IBM docsHere all the moving parts put together:Create or replace variable @userURL varchar(50) ;SET @userURL = 'http://fakestoreapi.com/users';Create or replace variable @postBody varchar(500) ;SET @postBody = '{ \"email\":\"John@gmail.com\", \"username\":\"johnd\", \"password\":\"m38rmF$\", \"name\":{ \"firstname\":\"John\", \"lastname\":\"Doe\" }, \"address\":{ \"city\":\"kilcoole\", \"street\":\"7835 new road\", \"number\":3, \"zipcode\":\"12926-3874\", \"geolocation\":{ \"lat\":\"-37.3159\", \"long\":\"81.1496\" } }, \"phone\": \"1-570-236-7033\"}';SELECT *FROM JSON_TABLE( QSYS2.HTTP_POST( @userURL, @postBody, '{\"header\":\"Content-Type,application/json;charset=utf-8\"}' ), '$' COLUMNS( testID INT PATH 'lax $.id', email VARCHAR(50) PATH 'lax $.email', username VARCHAR(50) PATH 'lax $.username', password VARCHAR(50) PATH 'lax $.password' ));And the result: TESTID EMAIL USERNAME PASSWORD 1 John@gmail.com johnd m38rmF$ " } ] diff --git a/assets/js/data/swcache.js b/assets/js/data/swcache.js new file mode 100644 index 0000000..6ba4d94 --- /dev/null +++ b/assets/js/data/swcache.js @@ -0,0 +1 @@ +const resource = [ /* --- CSS --- */ '/assets/css/style.css', /* --- PWA --- */ '/app.js', '/sw.js', /* --- HTML --- */ '/index.html', '/404.html', '/categories/', '/tags/', '/archives/', '/about/', /* --- Favicons & compressed JS --- */ '/assets/img/favicons/android-chrome-192x192.png', '/assets/img/favicons/android-chrome-384x384.png', '/assets/img/favicons/apple-touch-icon.png', '/assets/img/favicons/favicon-16x16.png', '/assets/img/favicons/favicon-32x32.png', '/assets/img/favicons/favicon.ico', '/assets/img/favicons/mstile-150x150.png', '/assets/img/favicons/safari-pinned-tab.svg', '/assets/img/favicons/android-chrome-512x512.png', '/assets/js/dist/categories.min.js', '/assets/js/dist/commons.min.js', '/assets/js/dist/home.min.js', '/assets/js/dist/misc.min.js', '/assets/js/dist/page.min.js', '/assets/js/dist/post.min.js', '/assets/js/dist/pvreport.min.js' ]; /* The request url with below domain will be cached */ const allowedDomains = [ 'www.googletagmanager.com', 'www.google-analytics.com', 'colemaxwell.dev', 'fonts.gstatic.com', 'fonts.googleapis.com', 'cdn.jsdelivr.net', 'polyfill.io' ]; /* Requests that include the following path will be banned */ const denyUrls = [ ]; diff --git a/assets/js/dist/categories.min.js b/assets/js/dist/categories.min.js new file mode 100644 index 0000000..34f42f5 --- /dev/null +++ b/assets/js/dist/categories.min.js @@ -0,0 +1,6 @@ +/*! + * Chirpy v5.2.1 (https://github.com/cotes2020/jekyll-theme-chirpy/) + * Ā© 2019 Cotes Chung + * MIT Licensed + */ +$(function(){$(window).scroll(()=>{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))}),$(function(){$(".mode-toggle").click(o=>{const e=$(o.target);let t=e.prop("tagName")==="button".toUpperCase()?e:e.parent();t.blur(),flipMode()})});const ScrollHelper=function(){const o=$("body"),e="data-topbar-visible",t=$("#topbar-wrapper").outerHeight();let l=0,a=!1,r=!1;return{hideTopbar:()=>o.attr(e,!1),showTopbar:()=>o.attr(e,!0),addScrollUpTask:()=>{l+=1,a=a||!0},popScrollUpTask:()=>--l,hasScrollUpTask:()=>0!0===a,unlockTopbar:()=>a=!1,getTopbarHeight:()=>t,orientationLocked:()=>!0===r,lockOrientation:()=>r=!0,unLockOrientation:()=>r=!1}}();$(function(){const o=$("#sidebar-trigger"),e=$("#search-trigger"),t=$("#search-cancel"),l=$("#main"),a=$("#topbar-title"),r=$("#search-wrapper"),n=$("#search-result-wrapper"),s=$("#search-results"),i=$("#search-input"),c=$("#search-hints"),d=function(){let o=0;return{block(){o=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(o)},getOffset(){return o}}}(),p={on(){o.addClass("unloaded"),a.addClass("unloaded"),e.addClass("unloaded"),r.addClass("d-flex"),t.addClass("loaded")},off(){t.removeClass("loaded"),r.removeClass("d-flex"),o.removeClass("unloaded"),a.removeClass("unloaded"),e.removeClass("unloaded")}},f=function(){let o=!1;return{on(){o||(d.block(),n.removeClass("unloaded"),l.addClass("unloaded"),o=!0)},off(){o&&(s.empty(),c.hasClass("unloaded")&&c.removeClass("unloaded"),n.addClass("unloaded"),l.removeClass("unloaded"),d.release(),i.val(""),o=!1)},isVisible(){return o}}}();function u(){return t.hasClass("loaded")}e.click(function(){p.on(),f.on(),i.focus()}),t.click(function(){p.off(),f.off()}),i.focus(function(){r.addClass("input-focus")}),i.focusout(function(){r.removeClass("input-focus")}),i.on("input",()=>{""===i.val()?u()?c.removeClass("unloaded"):f.off():(f.on(),u()&&c.addClass("unloaded"))})}),$(function(){var o=function(){const o="sidebar-display";let e=!1;const t=$("body");return{toggle(){!1===e?t.attr(o,""):t.removeAttr(o),e=!e}}}();$("#sidebar-trigger").click(o.toggle),$("#mask").click(o.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const e=$("#search-input"),t=ScrollHelper.getTopbarHeight();let o,l=0;function a(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var o=screen.orientation.type;"landscape-primary"!==o&&"landscape-secondary"!==o||a()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&a()}),$(window).scroll(()=>{o=o||!0}),setInterval(()=>{o&&(!function(){var o=$(this).scrollTop();if(!(Math.abs(l-o)<=t)){if(o>l)ScrollHelper.hideTopbar(),e.is(":focus")&&e.blur();else if(o+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}l=o}}(),o=!1)},250)}),$(function(){var e="div.post>h1:first-of-type";const t=$(e),n=$("#topbar-title");if(0!==t.length&&!t.hasClass("dynamic-title")&&!n.is(":hidden")){const s=n.text().trim();let l=t.text().trim(),a=!1,r=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(l)&&(l=l.replace(/[0-9]/g,"").trim()),t.offset().top<$(window).scrollTop()&&n.text(l);let o=new IntersectionObserver(o=>{var e,t;a?(t=$(window).scrollTop(),e=r{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))}),$(function(){$(".mode-toggle").click(o=>{const e=$(o.target);let t=e.prop("tagName")==="button".toUpperCase()?e:e.parent();t.blur(),flipMode()})});const ScrollHelper=function(){const o=$("body"),e="data-topbar-visible",t=$("#topbar-wrapper").outerHeight();let l=0,r=!1,a=!1;return{hideTopbar:()=>o.attr(e,!1),showTopbar:()=>o.attr(e,!0),addScrollUpTask:()=>{l+=1,r=r||!0},popScrollUpTask:()=>--l,hasScrollUpTask:()=>0!0===r,unlockTopbar:()=>r=!1,getTopbarHeight:()=>t,orientationLocked:()=>!0===a,lockOrientation:()=>a=!0,unLockOrientation:()=>a=!1}}();$(function(){const o=$("#sidebar-trigger"),e=$("#search-trigger"),t=$("#search-cancel"),l=$("#main"),r=$("#topbar-title"),a=$("#search-wrapper"),n=$("#search-result-wrapper"),s=$("#search-results"),i=$("#search-input"),c=$("#search-hints"),d=function(){let o=0;return{block(){o=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(o)},getOffset(){return o}}}(),p={on(){o.addClass("unloaded"),r.addClass("unloaded"),e.addClass("unloaded"),a.addClass("d-flex"),t.addClass("loaded")},off(){t.removeClass("loaded"),a.removeClass("d-flex"),o.removeClass("unloaded"),r.removeClass("unloaded"),e.removeClass("unloaded")}},u=function(){let o=!1;return{on(){o||(d.block(),n.removeClass("unloaded"),l.addClass("unloaded"),o=!0)},off(){o&&(s.empty(),c.hasClass("unloaded")&&c.removeClass("unloaded"),n.addClass("unloaded"),l.removeClass("unloaded"),d.release(),i.val(""),o=!1)},isVisible(){return o}}}();function f(){return t.hasClass("loaded")}e.click(function(){p.on(),u.on(),i.focus()}),t.click(function(){p.off(),u.off()}),i.focus(function(){a.addClass("input-focus")}),i.focusout(function(){a.removeClass("input-focus")}),i.on("input",()=>{""===i.val()?f()?c.removeClass("unloaded"):u.off():(u.on(),f()&&c.addClass("unloaded"))})}),$(function(){var o=function(){const o="sidebar-display";let e=!1;const t=$("body");return{toggle(){!1===e?t.attr(o,""):t.removeAttr(o),e=!e}}}();$("#sidebar-trigger").click(o.toggle),$("#mask").click(o.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const e=$("#search-input"),t=ScrollHelper.getTopbarHeight();let o,l=0;function r(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var o=screen.orientation.type;"landscape-primary"!==o&&"landscape-secondary"!==o||r()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&r()}),$(window).scroll(()=>{o=o||!0}),setInterval(()=>{o&&(!function(){var o=$(this).scrollTop();if(!(Math.abs(l-o)<=t)){if(o>l)ScrollHelper.hideTopbar(),e.is(":focus")&&e.blur();else if(o+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}l=o}}(),o=!1)},250)}),$(function(){var e="div.post>h1:first-of-type";const t=$(e),n=$("#topbar-title");if(0!==t.length&&!t.hasClass("dynamic-title")&&!n.is(":hidden")){const s=n.text().trim();let l=t.text().trim(),r=!1,a=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(l)&&(l=l.replace(/[0-9]/g,"").trim()),t.offset().top<$(window).scrollTop()&&n.text(l);let o=new IntersectionObserver(o=>{var e,t;r?(t=$(window).scrollTop(),e=a{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))}),$(function(){$(".mode-toggle").click(e=>{const t=$(e.target);let o=t.prop("tagName")==="button".toUpperCase()?t:t.parent();o.blur(),flipMode()})});const ScrollHelper=function(){const e=$("body"),t="data-topbar-visible",o=$("#topbar-wrapper").outerHeight();let a=0,l=!1,r=!1;return{hideTopbar:()=>e.attr(t,!1),showTopbar:()=>e.attr(t,!0),addScrollUpTask:()=>{a+=1,l=l||!0},popScrollUpTask:()=>--a,hasScrollUpTask:()=>0!0===l,unlockTopbar:()=>l=!1,getTopbarHeight:()=>o,orientationLocked:()=>!0===r,lockOrientation:()=>r=!0,unLockOrientation:()=>r=!1}}(),LocaleHelper=($(function(){const e=$("#sidebar-trigger"),t=$("#search-trigger"),o=$("#search-cancel"),a=$("#main"),l=$("#topbar-title"),r=$("#search-wrapper"),n=$("#search-result-wrapper"),s=$("#search-results"),i=$("#search-input"),c=$("#search-hints"),d=function(){let e=0;return{block(){e=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(e)},getOffset(){return e}}}(),p={on(){e.addClass("unloaded"),l.addClass("unloaded"),t.addClass("unloaded"),r.addClass("d-flex"),o.addClass("loaded")},off(){o.removeClass("loaded"),r.removeClass("d-flex"),e.removeClass("unloaded"),l.removeClass("unloaded"),t.removeClass("unloaded")}},u=function(){let e=!1;return{on(){e||(d.block(),n.removeClass("unloaded"),a.addClass("unloaded"),e=!0)},off(){e&&(s.empty(),c.hasClass("unloaded")&&c.removeClass("unloaded"),n.addClass("unloaded"),a.removeClass("unloaded"),d.release(),i.val(""),e=!1)},isVisible(){return e}}}();function f(){return o.hasClass("loaded")}t.click(function(){p.on(),u.on(),i.focus()}),o.click(function(){p.off(),u.off()}),i.focus(function(){r.addClass("input-focus")}),i.focusout(function(){r.removeClass("input-focus")}),i.on("input",()=>{""===i.val()?f()?c.removeClass("unloaded"):u.off():(u.on(),f()&&c.addClass("unloaded"))})}),$(function(){var e=function(){const e="sidebar-display";let t=!1;const o=$("body");return{toggle(){!1===t?o.attr(e,""):o.removeAttr(e),t=!t}}}();$("#sidebar-trigger").click(e.toggle),$("#mask").click(e.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const t=$("#search-input"),o=ScrollHelper.getTopbarHeight();let e,a=0;function l(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var e=screen.orientation.type;"landscape-primary"!==e&&"landscape-secondary"!==e||l()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&l()}),$(window).scroll(()=>{e=e||!0}),setInterval(()=>{e&&(!function(){var e=$(this).scrollTop();if(!(Math.abs(a-e)<=o)){if(e>a)ScrollHelper.hideTopbar(),t.is(":focus")&&t.blur();else if(e+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}a=e}}(),e=!1)},250)}),$(function(){var t="div.post>h1:first-of-type";const o=$(t),n=$("#topbar-title");if(0!==o.length&&!o.hasClass("dynamic-title")&&!n.is(":hidden")){const s=n.text().trim();let a=o.text().trim(),l=!1,r=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(a)&&(a=a.replace(/[0-9]/g,"").trim()),o.offset().top<$(window).scrollTop()&&n.text(a);let e=new IntersectionObserver(e=>{var t,o;l?(o=$(window).scrollTop(),t=rt,attrTimestamp:()=>o,attrDateFormat:()=>a,getTimestamp:e=>Number(e.attr(o)),getDateFormat:e=>e.attr(a)}}());$(function(){dayjs.locale(LocaleHelper.locale()),dayjs.extend(window.dayjs_plugin_localizedFormat),$(`[${LocaleHelper.attrTimestamp()}]`).each(function(){const e=dayjs.unix(LocaleHelper.getTimestamp($(this)));var t=e.format(LocaleHelper.getDateFormat($(this))),t=($(this).text(t),$(this).removeAttr(LocaleHelper.attrTimestamp()),$(this).removeAttr(LocaleHelper.attrDateFormat()),$(this).attr("data-toggle"));void 0!==t&&"tooltip"===t&&(t=e.format("llll"),$(this).attr("data-original-title",t))})}); \ No newline at end of file diff --git a/assets/js/dist/misc.min.js b/assets/js/dist/misc.min.js new file mode 100644 index 0000000..0fa7b91 --- /dev/null +++ b/assets/js/dist/misc.min.js @@ -0,0 +1,6 @@ +/*! + * Chirpy v5.2.1 (https://github.com/cotes2020/jekyll-theme-chirpy/) + * Ā© 2019 Cotes Chung + * MIT Licensed + */ +$(function(){$(window).scroll(()=>{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))}),$(function(){$(".mode-toggle").click(e=>{const t=$(e.target);let o=t.prop("tagName")==="button".toUpperCase()?t:t.parent();o.blur(),flipMode()})});const ScrollHelper=function(){const e=$("body"),t="data-topbar-visible",o=$("#topbar-wrapper").outerHeight();let a=0,l=!1,r=!1;return{hideTopbar:()=>e.attr(t,!1),showTopbar:()=>e.attr(t,!0),addScrollUpTask:()=>{a+=1,l=l||!0},popScrollUpTask:()=>--a,hasScrollUpTask:()=>0!0===l,unlockTopbar:()=>l=!1,getTopbarHeight:()=>o,orientationLocked:()=>!0===r,lockOrientation:()=>r=!0,unLockOrientation:()=>r=!1}}(),LocaleHelper=($(function(){const e=$("#sidebar-trigger"),t=$("#search-trigger"),o=$("#search-cancel"),a=$("#main"),l=$("#topbar-title"),r=$("#search-wrapper"),n=$("#search-result-wrapper"),s=$("#search-results"),i=$("#search-input"),c=$("#search-hints"),d=function(){let e=0;return{block(){e=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(e)},getOffset(){return e}}}(),p={on(){e.addClass("unloaded"),l.addClass("unloaded"),t.addClass("unloaded"),r.addClass("d-flex"),o.addClass("loaded")},off(){o.removeClass("loaded"),r.removeClass("d-flex"),e.removeClass("unloaded"),l.removeClass("unloaded"),t.removeClass("unloaded")}},u=function(){let e=!1;return{on(){e||(d.block(),n.removeClass("unloaded"),a.addClass("unloaded"),e=!0)},off(){e&&(s.empty(),c.hasClass("unloaded")&&c.removeClass("unloaded"),n.addClass("unloaded"),a.removeClass("unloaded"),d.release(),i.val(""),e=!1)},isVisible(){return e}}}();function f(){return o.hasClass("loaded")}t.click(function(){p.on(),u.on(),i.focus()}),o.click(function(){p.off(),u.off()}),i.focus(function(){r.addClass("input-focus")}),i.focusout(function(){r.removeClass("input-focus")}),i.on("input",()=>{""===i.val()?f()?c.removeClass("unloaded"):u.off():(u.on(),f()&&c.addClass("unloaded"))})}),$(function(){var e=function(){const e="sidebar-display";let t=!1;const o=$("body");return{toggle(){!1===t?o.attr(e,""):o.removeAttr(e),t=!t}}}();$("#sidebar-trigger").click(e.toggle),$("#mask").click(e.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const t=$("#search-input"),o=ScrollHelper.getTopbarHeight();let e,a=0;function l(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var e=screen.orientation.type;"landscape-primary"!==e&&"landscape-secondary"!==e||l()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&l()}),$(window).scroll(()=>{e=e||!0}),setInterval(()=>{e&&(!function(){var e=$(this).scrollTop();if(!(Math.abs(a-e)<=o)){if(e>a)ScrollHelper.hideTopbar(),t.is(":focus")&&t.blur();else if(e+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}a=e}}(),e=!1)},250)}),$(function(){var t="div.post>h1:first-of-type";const o=$(t),n=$("#topbar-title");if(0!==o.length&&!o.hasClass("dynamic-title")&&!n.is(":hidden")){const s=n.text().trim();let a=o.text().trim(),l=!1,r=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(a)&&(a=a.replace(/[0-9]/g,"").trim()),o.offset().top<$(window).scrollTop()&&n.text(a);let e=new IntersectionObserver(e=>{var t,o;l?(o=$(window).scrollTop(),t=rt,attrTimestamp:()=>o,attrDateFormat:()=>a,getTimestamp:e=>Number(e.attr(o)),getDateFormat:e=>e.attr(a)}}());$(function(){dayjs.locale(LocaleHelper.locale()),dayjs.extend(window.dayjs_plugin_localizedFormat),$(`[${LocaleHelper.attrTimestamp()}]`).each(function(){const e=dayjs.unix(LocaleHelper.getTimestamp($(this)));var t=e.format(LocaleHelper.getDateFormat($(this))),t=($(this).text(t),$(this).removeAttr(LocaleHelper.attrTimestamp()),$(this).removeAttr(LocaleHelper.attrDateFormat()),$(this).attr("data-toggle"));void 0!==t&&"tooltip"===t&&(t=e.format("llll"),$(this).attr("data-original-title",t))})}); \ No newline at end of file diff --git a/assets/js/dist/page.min.js b/assets/js/dist/page.min.js new file mode 100644 index 0000000..54a9e55 --- /dev/null +++ b/assets/js/dist/page.min.js @@ -0,0 +1,6 @@ +/*! + * Chirpy v5.2.1 (https://github.com/cotes2020/jekyll-theme-chirpy/) + * Ā© 2019 Cotes Chung + * MIT Licensed + */ +$(function(){$(window).scroll(()=>{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))}),$(function(){$(".mode-toggle").click(e=>{const t=$(e.target);let o=t.prop("tagName")==="button".toUpperCase()?t:t.parent();o.blur(),flipMode()})});const ScrollHelper=function(){const e=$("body"),t="data-topbar-visible",o=$("#topbar-wrapper").outerHeight();let r=0,a=!1,l=!1;return{hideTopbar:()=>e.attr(t,!1),showTopbar:()=>e.attr(t,!0),addScrollUpTask:()=>{r+=1,a=a||!0},popScrollUpTask:()=>--r,hasScrollUpTask:()=>0!0===a,unlockTopbar:()=>a=!1,getTopbarHeight:()=>o,orientationLocked:()=>!0===l,lockOrientation:()=>l=!0,unLockOrientation:()=>l=!1}}();$(function(){const e=$("#sidebar-trigger"),t=$("#search-trigger"),o=$("#search-cancel"),r=$("#main"),a=$("#topbar-title"),l=$("#search-wrapper"),n=$("#search-result-wrapper"),i=$("#search-results"),c=$("#search-input"),s=$("#search-hints"),d=function(){let e=0;return{block(){e=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(e)},getOffset(){return e}}}(),p={on(){e.addClass("unloaded"),a.addClass("unloaded"),t.addClass("unloaded"),l.addClass("d-flex"),o.addClass("loaded")},off(){o.removeClass("loaded"),l.removeClass("d-flex"),e.removeClass("unloaded"),a.removeClass("unloaded"),t.removeClass("unloaded")}},u=function(){let e=!1;return{on(){e||(d.block(),n.removeClass("unloaded"),r.addClass("unloaded"),e=!0)},off(){e&&(i.empty(),s.hasClass("unloaded")&&s.removeClass("unloaded"),n.addClass("unloaded"),r.removeClass("unloaded"),d.release(),c.val(""),e=!1)},isVisible(){return e}}}();function h(){return o.hasClass("loaded")}t.click(function(){p.on(),u.on(),c.focus()}),o.click(function(){p.off(),u.off()}),c.focus(function(){l.addClass("input-focus")}),c.focusout(function(){l.removeClass("input-focus")}),c.on("input",()=>{""===c.val()?h()?s.removeClass("unloaded"):u.off():(u.on(),h()&&s.addClass("unloaded"))})}),$(function(){var e=function(){const e="sidebar-display";let t=!1;const o=$("body");return{toggle(){!1===t?o.attr(e,""):o.removeAttr(e),t=!t}}}();$("#sidebar-trigger").click(e.toggle),$("#mask").click(e.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const t=$("#search-input"),o=ScrollHelper.getTopbarHeight();let e,r=0;function a(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var e=screen.orientation.type;"landscape-primary"!==e&&"landscape-secondary"!==e||a()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&a()}),$(window).scroll(()=>{e=e||!0}),setInterval(()=>{e&&(!function(){var e=$(this).scrollTop();if(!(Math.abs(r-e)<=o)){if(e>r)ScrollHelper.hideTopbar(),t.is(":focus")&&t.blur();else if(e+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}r=e}}(),e=!1)},250)}),$(function(){var t="div.post>h1:first-of-type";const o=$(t),n=$("#topbar-title");if(0!==o.length&&!o.hasClass("dynamic-title")&&!n.is(":hidden")){const i=n.text().trim();let r=o.text().trim(),a=!1,l=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(r)&&(r=r.replace(/[0-9]/g,"").trim()),o.offset().top<$(window).scrollTop()&&n.text(r);let e=new IntersectionObserver(e=>{var t,o;a?(o=$(window).scrollTop(),t=l'),$("input[type=checkbox]:not([checked])").before('')}),$(function(){var e="#main > div.row:first-child > div:first-child";if(!($(e+" img").length<=0)){var t=document.querySelectorAll(e+" img[data-src]");const o=lozad(t);o.observe(),$(e+` p > img[data-src],${e} img[data-src].preview-img`).each(function(){let e=$(this).next();var t="EM"===e.prop("tagName")?e.text():"",o=$(this).attr("data-src");$(this).wrap(``)}),$(".popup").magnificPopup({type:"image",closeOnContentClick:!0,showCloseBtn:!1,zoom:{enabled:!0,duration:300,easing:"ease-in-out"}}),$(e+" a").has("img").addClass("img-link")}}),$(function(){var e=".code-header>button";const t="timeout",a="data-title-succeed",l="data-original-title";function n(e){if($(e)[0].hasAttribute(t)){e=$(e).attr(t);if(Number(e)>Date.now())return 1}}function i(e){$(e).attr(t,Date.now()+2e3)}function c(e){$(e).removeAttr(t)}const o=new ClipboardJS(e,{target(e){let t=e.parentNode.nextElementSibling;return t.querySelector("code .rouge-code")}});$(e).tooltip({trigger:"hover",placement:"left"});const s=function(e){let t=$(e).children();return t.attr("class")}(e);o.on("success",o=>{o.clearSelection();const r=o.trigger;if(!n(r)){{o=r;let e=$(o),t=e.children();t.attr("class","fas fa-check")}var e;o=r,e=$(o).attr(a),$(o).attr(l,e).tooltip("show"),i(r),setTimeout(()=>{o=r,$(o).tooltip("hide").removeAttr(l);{var o=r;let e=$(o),t=e.children();t.attr("class",s)}c(r)},2e3)}}),$("#copy-link").click(e=>{let t=$(e.target);if(!n(t)){e=window.location.href;const o=$(""),r=($("body").append(o),o.val(e).select(),document.execCommand("copy"),o.remove(),t.attr(l));e=t.attr(a);t.attr(l,e).tooltip("show"),i(t),setTimeout(()=>{t.attr(l,r),c(t)},2e3)}})}),$(function(){const e=$("#topbar-title"),c="scroll-focus";$("a[href*='#']").not("[href='#']").not("[href='#0']").click(function(a){if(this.pathname.replace(/^\//,"")===location.pathname.replace(/^\//,"")&&location.hostname===this.hostname){const i=decodeURI(this.hash);let t=RegExp(/^#fnref:/).test(i),o=!t&&RegExp(/^#fn:/).test(i);var l=i.includes(":")?i.replace(/\:/g,"\\:"):i;let r=$(l);var l=e.is(":visible"),n=$(window).width()<$(window).height();if(void 0!==r){a.preventDefault(),history.pushState&&history.pushState(null,null,i);a=$(window).scrollTop();let e=r.offset().top-=8;e{if(r.focus(),$(`[${c}=true]`).length&&$(`[${c}=true]`).attr(c,!1),$(":target").length&&$(":target").attr(c,!1),(o||t)&&r.attr(c,!0),r.is(":focus"))return!1;r.attr("tabindex","-1"),r.focus(),ScrollHelper.hasScrollUpTask()&&ScrollHelper.popScrollUpTask()})}}})}); \ No newline at end of file diff --git a/assets/js/dist/post.min.js b/assets/js/dist/post.min.js new file mode 100644 index 0000000..332b0fc --- /dev/null +++ b/assets/js/dist/post.min.js @@ -0,0 +1,6 @@ +/*! + * Chirpy v5.2.1 (https://github.com/cotes2020/jekyll-theme-chirpy/) + * Ā© 2019 Cotes Chung + * MIT Licensed + */ +$(function(){$(window).scroll(()=>{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))}),$(function(){$(".mode-toggle").click(t=>{const e=$(t.target);let o=e.prop("tagName")==="button".toUpperCase()?e:e.parent();o.blur(),flipMode()})});const ScrollHelper=function(){const t=$("body"),e="data-topbar-visible",o=$("#topbar-wrapper").outerHeight();let a=0,r=!1,l=!1;return{hideTopbar:()=>t.attr(e,!1),showTopbar:()=>t.attr(e,!0),addScrollUpTask:()=>{a+=1,r=r||!0},popScrollUpTask:()=>--a,hasScrollUpTask:()=>0!0===r,unlockTopbar:()=>r=!1,getTopbarHeight:()=>o,orientationLocked:()=>!0===l,lockOrientation:()=>l=!0,unLockOrientation:()=>l=!1}}(),LocaleHelper=($(function(){const t=$("#sidebar-trigger"),e=$("#search-trigger"),o=$("#search-cancel"),a=$("#main"),r=$("#topbar-title"),l=$("#search-wrapper"),n=$("#search-result-wrapper"),i=$("#search-results"),c=$("#search-input"),s=$("#search-hints"),d=function(){let t=0;return{block(){t=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(t)},getOffset(){return t}}}(),p={on(){t.addClass("unloaded"),r.addClass("unloaded"),e.addClass("unloaded"),l.addClass("d-flex"),o.addClass("loaded")},off(){o.removeClass("loaded"),l.removeClass("d-flex"),t.removeClass("unloaded"),r.removeClass("unloaded"),e.removeClass("unloaded")}},u=function(){let t=!1;return{on(){t||(d.block(),n.removeClass("unloaded"),a.addClass("unloaded"),t=!0)},off(){t&&(i.empty(),s.hasClass("unloaded")&&s.removeClass("unloaded"),n.addClass("unloaded"),a.removeClass("unloaded"),d.release(),c.val(""),t=!1)},isVisible(){return t}}}();function h(){return o.hasClass("loaded")}e.click(function(){p.on(),u.on(),c.focus()}),o.click(function(){p.off(),u.off()}),c.focus(function(){l.addClass("input-focus")}),c.focusout(function(){l.removeClass("input-focus")}),c.on("input",()=>{""===c.val()?h()?s.removeClass("unloaded"):u.off():(u.on(),h()&&s.addClass("unloaded"))})}),$(function(){var t=function(){const t="sidebar-display";let e=!1;const o=$("body");return{toggle(){!1===e?o.attr(t,""):o.removeAttr(t),e=!e}}}();$("#sidebar-trigger").click(t.toggle),$("#mask").click(t.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const e=$("#search-input"),o=ScrollHelper.getTopbarHeight();let t,a=0;function r(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var t=screen.orientation.type;"landscape-primary"!==t&&"landscape-secondary"!==t||r()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&r()}),$(window).scroll(()=>{t=t||!0}),setInterval(()=>{t&&(!function(){var t=$(this).scrollTop();if(!(Math.abs(a-t)<=o)){if(t>a)ScrollHelper.hideTopbar(),e.is(":focus")&&e.blur();else if(t+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}a=t}}(),t=!1)},250)}),$(function(){var e="div.post>h1:first-of-type";const o=$(e),n=$("#topbar-title");if(0!==o.length&&!o.hasClass("dynamic-title")&&!n.is(":hidden")){const i=n.text().trim();let a=o.text().trim(),r=!1,l=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(a)&&(a=a.replace(/[0-9]/g,"").trim()),o.offset().top<$(window).scrollTop()&&n.text(a);let t=new IntersectionObserver(t=>{var e,o;r?(o=$(window).scrollTop(),e=l img[data-src],${t} img[data-src].preview-img`).each(function(){let t=$(this).next();var e="EM"===t.prop("tagName")?t.text():"",o=$(this).attr("data-src");$(this).wrap(``)}),$(".popup").magnificPopup({type:"image",closeOnContentClick:!0,showCloseBtn:!1,zoom:{enabled:!0,duration:300,easing:"ease-in-out"}}),$(t+" a").has("img").addClass("img-link")}}),function(){const t=$('meta[name="prefer-datetime-locale"]'),e=0e,attrTimestamp:()=>o,attrDateFormat:()=>a,getTimestamp:t=>Number(t.attr(o)),getDateFormat:t=>t.attr(a)}}());$(function(){dayjs.locale(LocaleHelper.locale()),dayjs.extend(window.dayjs_plugin_localizedFormat),$(`[${LocaleHelper.attrTimestamp()}]`).each(function(){const t=dayjs.unix(LocaleHelper.getTimestamp($(this)));var e=t.format(LocaleHelper.getDateFormat($(this))),e=($(this).text(e),$(this).removeAttr(LocaleHelper.attrTimestamp()),$(this).removeAttr(LocaleHelper.attrDateFormat()),$(this).attr("data-toggle"));void 0!==e&&"tooltip"===e&&(e=t.format("llll"),$(this).attr("data-original-title",e))})}),$(function(){$("input[type=checkbox]").addClass("unloaded"),$("input[type=checkbox][checked]").before(''),$("input[type=checkbox]:not([checked])").before('')}),$(function(){var t=".code-header>button";const e="timeout",r="data-title-succeed",l="data-original-title";function n(t){if($(t)[0].hasAttribute(e)){t=$(t).attr(e);if(Number(t)>Date.now())return 1}}function i(t){$(t).attr(e,Date.now()+2e3)}function c(t){$(t).removeAttr(e)}const o=new ClipboardJS(t,{target(t){let e=t.parentNode.nextElementSibling;return e.querySelector("code .rouge-code")}});$(t).tooltip({trigger:"hover",placement:"left"});const s=function(t){let e=$(t).children();return e.attr("class")}(t);o.on("success",o=>{o.clearSelection();const a=o.trigger;if(!n(a)){{o=a;let t=$(o),e=t.children();e.attr("class","fas fa-check")}var t;o=a,t=$(o).attr(r),$(o).attr(l,t).tooltip("show"),i(a),setTimeout(()=>{o=a,$(o).tooltip("hide").removeAttr(l);{var o=a;let t=$(o),e=t.children();e.attr("class",s)}c(a)},2e3)}}),$("#copy-link").click(t=>{let e=$(t.target);if(!n(e)){t=window.location.href;const o=$(""),a=($("body").append(o),o.val(t).select(),document.execCommand("copy"),o.remove(),e.attr(l));t=e.attr(r);e.attr(l,t).tooltip("show"),i(e),setTimeout(()=>{e.attr(l,a),c(e)},2e3)}})}),$(function(){const t=$("#topbar-title"),c="scroll-focus";$("a[href*='#']").not("[href='#']").not("[href='#0']").click(function(r){if(this.pathname.replace(/^\//,"")===location.pathname.replace(/^\//,"")&&location.hostname===this.hostname){const i=decodeURI(this.hash);let e=RegExp(/^#fnref:/).test(i),o=!e&&RegExp(/^#fn:/).test(i);var l=i.includes(":")?i.replace(/\:/g,"\\:"):i;let a=$(l);var l=t.is(":visible"),n=$(window).width()<$(window).height();if(void 0!==a){r.preventDefault(),history.pushState&&history.pushState(null,null,i);r=$(window).scrollTop();let t=a.offset().top-=8;t{if(a.focus(),$(`[${c}=true]`).length&&$(`[${c}=true]`).attr(c,!1),$(":target").length&&$(":target").attr(c,!1),(o||e)&&a.attr(c,!0),a.is(":focus"))return!1;a.attr("tabindex","-1"),a.focus(),ScrollHelper.hasScrollUpTask()&&ScrollHelper.popScrollUpTask()})}}})}); \ No newline at end of file diff --git a/assets/js/dist/pvreport.min.js b/assets/js/dist/pvreport.min.js new file mode 100644 index 0000000..2506259 --- /dev/null +++ b/assets/js/dist/pvreport.min.js @@ -0,0 +1,6 @@ +/*! + * Chirpy v5.2.1 (https://github.com/cotes2020/jekyll-theme-chirpy/) + * Ā© 2019 Cotes Chung + * MIT Licensed + */ +const getInitStatus=function(){let t=!1;return()=>{var e=t;return t=t||!0,e}}(),PvOpts=function(){function t(e){return $(e).attr("content")}function e(e){e=t(e);return void 0!==e&&!1!==e}return{getProxyMeta(){return t("meta[name=pv-proxy-endpoint]")},getLocalMeta(){return t("meta[name=pv-cache-path]")},hasProxyMeta(){return e("meta[name=pv-proxy-endpoint]")},hasLocalMeta(){return e("meta[name=pv-cache-path]")}}}(),PvStorage=function(){const a={KEY_PV:"pv",KEY_PV_SRC:"pv_src",KEY_CREATION:"pv_created_date"},t={LOCAL:"same-origin",PROXY:"cors"};function r(e){return localStorage.getItem(e)}function o(e,t){localStorage.setItem(e,t)}function n(e,t){o(a.KEY_PV,e),o(a.KEY_PV_SRC,t),o(a.KEY_CREATION,(new Date).toJSON())}return{keysCount(){return Object.keys(a).length},hasCache(){return null!==localStorage.getItem(a.KEY_PV)},getCache(){return JSON.parse(localStorage.getItem(a.KEY_PV))},saveLocalCache(e){n(e,t.LOCAL)},saveProxyCache(e){n(e,t.PROXY)},isExpired(){let e=new Date(r(a.KEY_CREATION));return e.setHours(e.getHours()+1),Date.now()>=e.getTime()},isFromLocal(){return r(a.KEY_PV_SRC)===t.LOCAL},isFromProxy(){return r(a.KEY_PV_SRC)===t.PROXY},newerThan(e){return PvStorage.getCache().totalsForAllResults["ga:pageviews"]>e.totalsForAllResults["ga:pageviews"]},inspectKeys(){if(localStorage.length!==PvStorage.keysCount())localStorage.clear();else for(let e=0;et&&countUp(t,o,a.attr("id"))):a.text((new Intl.NumberFormat).format(o))}function displayPageviews(e){if(void 0!==e){let t=getInitStatus();const a=e.rows;0<$("#post-list").length?$(".post-preview").each(function(){var e=$(this).find("a").attr("href");tacklePV(a,e,$(this).find(".pageviews"),t)}):0<$(".post").length&&(e=window.location.pathname,tacklePV(a,e,$("#pv"),t))}}function fetchProxyPageviews(){PvOpts.hasProxyMeta()&&$.ajax({type:"GET",url:PvOpts.getProxyMeta(),dataType:"jsonp",jsonpCallback:"displayPageviews",success:e=>{PvStorage.saveProxyCache(JSON.stringify(e))},error:(e,t,a)=>{console.log("Failed to load pageviews from proxy server: "+a)}})}function fetchLocalPageviews(t=!1){return fetch(PvOpts.getLocalMeta()).then(e=>e.json()).then(e=>{t&&PvStorage.isFromProxy()&&PvStorage.newerThan(e)||(displayPageviews(e),PvStorage.saveLocalCache(JSON.stringify(e)))})}$(function(){$(".pageviews").length<=0||(PvStorage.inspectKeys(),PvStorage.hasCache()?(displayPageviews(PvStorage.getCache()),PvStorage.isExpired()?PvOpts.hasLocalMeta()?fetchLocalPageviews(!0).then(fetchProxyPageviews):fetchProxyPageviews():PvStorage.isFromLocal()&&fetchProxyPageviews()):PvOpts.hasLocalMeta()?fetchLocalPageviews().then(fetchProxyPageviews):fetchProxyPageviews())}); \ No newline at end of file diff --git a/categories/ibm-i/index.html b/categories/ibm-i/index.html new file mode 100644 index 0000000..63879df --- /dev/null +++ b/categories/ibm-i/index.html @@ -0,0 +1 @@ + IBM i | Cole Maxwell
Home Categories IBM i
Category
Cancel
diff --git a/categories/index.html b/categories/index.html new file mode 100644 index 0000000..fd9d8d8 --- /dev/null +++ b/categories/index.html @@ -0,0 +1 @@ + Categories | Cole Maxwell
Home Categories
Categories
Cancel
diff --git a/feed.xml b/feed.xml new file mode 100644 index 0000000..c133ab1 --- /dev/null +++ b/feed.xml @@ -0,0 +1 @@ + https://colemaxwell.dev/Cole MaxwellA site about software craftsmanship, system design, and Cole Maxwell. 2023-08-12T09:57:05-05:00 Cole Maxwell https://colemaxwell.dev/ Jekyll Ā© 2023 Cole Maxwell /assets/img/favicons/favicon.ico /assets/img/favicons/favicon-96x96.png Using ODBC on IBM i for Local Linux Development2022-08-03T19:39:00-05:00 2022-08-03T21:48:45-05:00 https://colemaxwell.dev/posts/ibmi-odbc-on-linux/ Cole Maxwell If you are new to the IBM i platform coming right out of school, like me, or you are a developer used to working exclusively with open-source tooling, the IBM i platform can be a strange place. The legacy application support is industry leading, to both the benefit and downside of the platform. Under the hood there is IBM’s powerful and well tested relational database, DB2 for i. So far, I like... Utilize a RESTful API with IBMi QSYS_HTTP Tools in SQL2022-07-14T15:30:55-05:00 2022-08-03T21:32:53-05:00 https://colemaxwell.dev/posts/rest-api-ibmi-qsys2/ Cole Maxwell The Api This demo used the fakeStoreApi which is a free online REST API that you can use whenever you need Pseudo-real data for without running any server-side code. It’s awesome for teaching purposes, sample codes, tests, etc. This API does not require authentication for requests A list of other public APIs can be found here HTTP Functions Overview These HTTP functions are used to make ... diff --git a/index.html b/index.html new file mode 100644 index 0000000..99b1272 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ + Cole Maxwell
Home
Cole Maxwell
Cancel

Using ODBC on IBM i for Local Linux Development

If you are new to the IBM i platform coming right out of school, like me, or you are a developer used to working exclusively with open-source tooling, the IBM i platform can be a strange place. The...

Utilize a RESTful API with IBMi QSYS_HTTP Tools in SQL

The Api This demo used the fakeStoreApi which is a free online REST API that you can use whenever you need Pseudo-real data for without running any server-side code. It’s awesome for teaching purp...

diff --git a/norobots/index.html b/norobots/index.html new file mode 100644 index 0000000..d07f26c --- /dev/null +++ b/norobots/index.html @@ -0,0 +1,11 @@ + + + + Redirecting… + + + + +

Redirecting…

+ Click here if you are not redirected. + diff --git a/posts/ibmi-odbc-on-linux/index.html b/posts/ibmi-odbc-on-linux/index.html new file mode 100644 index 0000000..13bc957 --- /dev/null +++ b/posts/ibmi-odbc-on-linux/index.html @@ -0,0 +1,119 @@ + Using ODBC on IBM i for Local Linux Development | Cole Maxwell
Home Using ODBC on IBM i for Local Linux Development
Post
Cancel

Using ODBC on IBM i for Local Linux Development

If you are new to the IBM i platform coming right out of school, like me, or you are a developer used to working exclusively with open-source tooling, the IBM i platform can be a strange place. The legacy application support is industry leading, to both the benefit and downside of the platform. Under the hood there is IBM’s powerful and well tested relational database, DB2 for i. So far, I like what I see. Is it possible to get the best of the open-source tooling while leveraging the power of an existing enterprise grade database? My initial take is yes, and the ODBC driver on the platform is the answer.

The Open Database Connectivity (ODBC) standard is an application programming interface (API) for accessing database management systems (DBMS). The designers of ODBC aimed to make it independent of database systems and operating systems. From what I have seen so far IBM is continuing to make improvements to the driver in the latest release of IBM i. I personally view ODBC as the future of the platform and a key factor to help IBM i remain relevant as the years progress.

As I have gotten my start, the other open-source advocates on the IBM i platform have provided many excellent articles, source code examples, and video lessons that have aided my on boarding to the platform. However, even though the topic of ODBC has been extensively covered I still felt like a comprehensive guide for connecting locally to DB2 for i via ODBC on a linux development machine was missing.

This post has compiled the good, but scattered, information to explain how an open-source developer would go about connecting up their local linux machine to DB2 for i to develop an application in an open-source language of their choice. I want to give a big thank you and credit to Liam Allan, Kevin Adler, Seiden Group, and FormaServe for helping get this information out to the community. They are the heavy hitters aiding the open-source embracement on IBM i. Much of the following is copied directly from their blogs and video resources. Please see the references at the end of this post.

Prerequisites

You must have the ODBC driver installed on the IBM i you want to connect to. See Seiden Group’s guide1 for Using YUM to Install or Update the IBM i ODBC Driver

Enhance Your Understanding

If your background is exclusively developing on the IBM i (AS400) and you don’t have experience with Linux or other Unix-like operating systems you may want to spend some time reading about the basic file structure of Unix-like operating systems. You will find these patterns in the /QOpenSys directory on IBM i and it will aid your journey to better understand open-source on IBM i and even Linux.

Installing the Repository

IBM has made RPM and DEB package manager repositories for Linux available directly from IBM for the IBM i Access Client Solutions application package, which includes the IBM i Access ODBC driver.

With this change, it is much easier to install the driver on Linux. It also makes it easier for automation to install the driver as well, whether that’s Ansible system deployment scripts or Dockerfiles for building ODBC-based Linux container apps. In addition, it makes updating the driver much easier too, since the process uses the same upgrade procedure as the rest of the system packages2.

The repositories are located under: https://public.dhe.ibm.com/software/ibmi/products/odbc/.

Add the Repository to the Package Manager

First, you must add IBM’s package repository to your distribution’s package manager.

Debian-based and Ubuntu-based Distribution Setup

1
+
curl https://public.dhe.ibm.com/software/ibmi/products/odbc/debs/dists/1.1.0/ibmi-acs-1.1.0.list | sudo tee /etc/apt/sources.list.d/ibmi-acs-1.1.0.list
+

Red Hat-based Distribution Setup

1
+
curl https://public.dhe.ibm.com/software/ibmi/products/odbc/rpms/ibmi-acs.repo | sudo tee /etc/yum.repos.d/ibmi-acs.repo
+

SUSE-based Distribution Setup

1
+
curl https://public.dhe.ibm.com/software/ibmi/products/odbc/rpms/ibmi-acs.repo | sudo tee /etc/zypp/repos.d/ibmi-acs.repo
+

Installing the ODBC driver

Now install the package via the distribution’s package manager.

Debian-based and Ubuntu-based Distribution Installation

1
+2
+
sudo apt update
+sudo apt install ibm-iaccess
+

Red Hat-based Distribution Installation

1
+
sudo dnf install --refresh ibm-iaccess
+

SUSE-based Distribution Installation

1
+2
+
sudo zypper refresh
+sudo zypper install ibm-iaccess
+

Configuring the Connection (FYI)

Now that you have the IBM i Access ODBC Driver installed on your system, you are ready to connect to Db2 on i. Below is some background information on the two methods to create a connection.

Connection Strings

ODBC uses a connection string with keywords to create a database connection. Keywords are case insensitive, and values passed are separated from the keyword by an equals sign (ā€œ=ā€) and end with a semi-colon (ā€œ;ā€). As long as you are using an ODBC database connector, you should be able to pass an identical connection string in any language or technology and be confident that it will correctly connect to Db2 on i. A common connection string may look something like3:

1
+
DRIVER=IBM i Access ODBC Driver;SYSTEM=my.ibmi.system;UID=foo;PWD=bar;
+

In the above example, we define the following connection options:

  • DRIVER: The ODBC driver for Db2 for i that we are using to connect to the database (and that we installed above)
  • SYSTEM: The location of your IBM i system, which can be its network name, IP address, or similar
  • UID: The User ID that you want to use on the IBM i system that you are connecting to
  • PWD: The password of the User ID passed above.

These are only some of the over 70 connection options you can use when connecting to Db2 on i using the IBM i Access ODBC Driver. A complete list of IBM i Access ODBC Driver connection options can be found at the IBM Knowledge Center: Connection string keywords webpage. If passing connections options through the connection string, be sure to use the keyword labeled with Connection String.

DSNs

As you add more and more options to your connection string, your connection string can become quite cumbersome. Luckily, ODBC offers another way of defining connection options called a DSN (datasource name). Where you define your DSN will depend on whether you are using Windows ODBC driver manager or unixODBC on Linux or IBM i3.

IBM i, Linux distributions, and macOS use unixODBC and have nearly identical methods of setting up your drivers and your DSNs.

odbc.ini and .odbc.ini

When using unixODBC, DSNs are defined in odbc.ini and .odbc.ini (note the . preceding the latter). These two files have the same structure, but have one important difference:

odbc.ini defines DSNs that are available to all users on the system. If there are DSNs that should be available to everyone, they can be defined and shared here. Likely, this file is located in the default location, which depends on whether you are on IBM i or Linux:

IBM i: /QOpenSys/etc/odbc.ini

Linux: /etc/unixODBC/odbc.ini

If you want to make sure, the file can be found by running:

1
+
odbcinst -j
+

.odbc.ini is found in your home directory ~/ and defines DSNs that are available only to you. If you are going to define DSNs with your personal username and password, this is the place to do it.

In both odbc.ini and .odbc.ini, you name your DSN with [] brackets, then specify keywords and values below it. An example of a DSN stored in ~/.odbc.ini used to connect to an IBM i system with private credentials might look like:

1
+2
+3
+4
+5
+6
+7
+8
+9
+
[MYDSN]
+Description            = My IBM i System
+Driver                 = IBM i Access ODBC Driver
+System                 = my.ibmi.system
+UserID                 = foo
+Password               = bar
+Naming                 = 0
+DefaultLibraries       = MYLIB
+TrueAutoCommit         = 1
+

In the above example, we define the following connection options:

  • Driver: The ODBC driver for Db2 for i that we are using to connect to the database (and that we installed above)
  • System: The location of your IBM i system, which can be its network name, IP address, or similar
  • UserID: The User ID that you want to use on the IBM i system that you are connecting to
  • Password: The password of the User ID passed above.
  • Naming: Specifies the naming convention used when referring to tables. For more information, refer to Naming conventions in the DB2 for i SQL reference.
  • DefaultLibraries: Specifies the IBM i libraries to add to the server job’s library list as well as the default library used to resolve unqualified names. The libraries can be delimited by commas or spaces.
  • TrueAutoCommit: Specifies how to handle autocommit support

Like connection string keywords, DSN keywords can be found at the IBM Knowledge Center: Connection string keywords webpage. When passing connection options through a DSN, be sure to use the keyword labeled with ODBC.INI.

User Level Connection

  1. In your home directory create a .odbc.ini file
1
+
touch .odbc.ini
+
  1. Using your text editor of choice (vi, vim, nano, ect…) add the following DSN configuration, changing the UserID and Password to your IBM i username and password.
1
+2
+3
+4
+5
+6
+7
+8
+
[devserver]
+Description            = Connection to development power server
+Driver                 = IBM i Access ODBC Driver
+System                 = devserver.mycompany.com
+UserID                 = myUsername
+Password               = myPassword
+Naming                 = 0
+DefaultLibraries       = businessDataLib,myUserLib,myBusinessUtils
+

In the above example, we define the following connection options:

  • Driver: The ODBC driver for Db2 for i that we are using to connect to the database (This must be installed on the OS)
  • System: The location of your IBM i system, which can be its network name, IP address, or similar
  • UserID: The User ID that you want to use on the IBM i system that you are connecting to
  • Password: The password of the User ID passed above.
  • Naming: Specifies the naming convention used when referring to tables. A 0 indicates you want SQLs naming convention, which is likely what you want for running queries in any program you write.
  • DefaultLibraries: Specifies the IBM i libraries to add to the server job’s library list as well as the default library used to resolve unqualified names. The libraries can be delimited by commas or spaces.

Testing the Connection

The isql command is included with the open source components of unixODBC and unixODBC-devel. You can use this command to run SQL queries via ODBC right from the command-line. To make the connection to the DSN configured above pass in the DSN name:

1
+
isql devserver
+

If the connection is configured correctly, you will get a prompt that looks like this:

1
+2
+3
+4
+5
+6
+7
+8
+9
+
+---------------------------------------+
+| Connected!                            |
+|                                       |
+| sql-statement                         |
+| help [tablename]                      |
+| quit                                  |
+|                                       |
++---------------------------------------+
+SQL>
+

There is an included sample customer table (qiws.qcustcdt) on all IBM i systems that can be used for testing4

Type this command into the SQL> prompt:

1
+
select * from qiws.qcustcdt
+

The results will look like this:

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+
SQL> select * from qiws.qcustcdt
++---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+
+| CUSNUM  | LSTNAM  | INIT| STREET       | CITY  | STATE| ZIPCOD | CDTLMT| CHGCOD| BALDUE  | CDTDUE  |
++---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+
+| 938472  | Henning | G K | 4859 Elm Ave | Dallas| TX   | 75217  | 5000  | 3     | 37.00   | 0       |
+| 839283  | Jones   | B D | 21B NW 135 St| Clay  | NY   | 13041  | 400   | 1     | 100.00  | 0       |
+| 392859  | Vine    | S S | PO Box 79    | Broton| VT   | 5046   | 700   | 1     | 439.00  | 0       |
+| 938485  | Johnson | J A | 3 Alpine Way | Helen | GA   | 30545  | 9999  | 2     | 3987.50 | 33.50   |
+| 397267  | Tyron   | W E | 13 Myrtle Dr | Hector| NY   | 14841  | 1000  | 1     | 0       | 0       |
+| 389572  | Stevens | K L | 208 Snow Pass| Denver| CO   | 80226  | 400   | 1     | 58.75   | 1.50    |
+| 846283  | Alison  | J S | 787 Lake Dr  | Isle  | MN   | 56342  | 5000  | 3     | 10.00   | 0       |
+| 475938  | Doe     | J W | 59 Archer Rd | Sutter| CA   | 95685  | 700   | 2     | 250.00  | 100.00  |
+| 693829  | Thomas  | A N | 3 Dove Circle| Casper| WY   | 82609  | 9999  | 2     | 0       | 0       |
+| 593029  | Williams| E D | 485 SE 2 Ave | Dallas| TX   | 75218  | 200   | 1     | 25.00   | 0       |
+| 192837  | Lee     | F L | 5963 Oak St  | Hector| NY   | 14841  | 700   | 2     | 489.50  | .50     |
+| 583990  | Abraham | M T | 392 Mill St  | Isle  | MN   | 56342  | 9999  | 3     | 500.00  | 0       |
++---------+---------+-----+--------------+-------+------+--------+-------+-------+---------+---------+
+SQLRowCount returns -1
+12 rows fetched
+SQL>
+

To exit the prompt press Ctr + C or type quit into the prompt

Next Steps

Now that you have the ODBC driver installed and configured on you development machine you can use the ODBC drivers in many of your favorite open-source programing languages. See IBM’s Db2 for Developers page for supported languages.

Examples of connections in programing languages:

Other Helpful Articles:

References

This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/index.html b/posts/index.html new file mode 100644 index 0000000..d07f26c --- /dev/null +++ b/posts/index.html @@ -0,0 +1,11 @@ + + + + Redirecting… + + + + +

Redirecting…

+ Click here if you are not redirected. + diff --git a/posts/rest-api-ibmi-qsys2/index.html b/posts/rest-api-ibmi-qsys2/index.html new file mode 100644 index 0000000..6df725c --- /dev/null +++ b/posts/rest-api-ibmi-qsys2/index.html @@ -0,0 +1,235 @@ + Utilize a RESTful API with IBMi QSYS_HTTP Tools in SQL | Cole Maxwell
Home Utilize a RESTful API with IBMi QSYS_HTTP Tools in SQL
Post
Cancel

Utilize a RESTful API with IBMi QSYS_HTTP Tools in SQL

The Api

This demo used the fakeStoreApi which is a free online REST API that you can use whenever you need Pseudo-real data for without running any server-side code. It’s awesome for teaching purposes, sample codes, tests, etc. This API does not require authentication for requests

A list of other public APIs can be found here

HTTP Functions Overview

These HTTP functions are used to make HTTP requests that use web services. These functions allow the SQL programmer to use Representational State Transfer (RESTful) via SQL, including Embedded SQL. They provide the same capabilities as the SYSTOOLS HTTP functions without the overhead of creating a JVM.

These HTTP functions exist in QSYS2 and have lower overhead than the SYSTOOLS HTTP functions. Additional benefits of the QSYS2 HTTP functions are HTTP authentication, proxy support, configurable redirection attempts, and configurable SSL options.

The URL parameter supports http: and https: URLs. The https: URL indicates that network communication should take place over a secure communication channel. An https request uses TLS (Transport Layer Security) to create the secure channel. This secure channel encrypts any transmitted data and also prevents man-in-the-middle attacks. Any communication that contains secure information should use https instead of http. Because of the sensitive nature of userids and passwords, HTTP authentication is not allowed for http URLs.

Foundational HTTP functions

The foundational functions are named according to the two dimensions used when making HTTP requests. The first dimension is the HTTP operation. There are 5 different HTTP operations: GET, PUT, POST, PATCH, and DELETE. The second dimension indicates whether the verbose version of the function should be used. The non-verbose functions are scalar functions that return the response as a CLOB. The verbose functions are table functions that return a single row, which includes the return header information that is sent from the HTTP server. The header information is formatted as JSON. The names of the functions reflect these dimensions. For example, HTTP_GET_VERBOSE uses the GET operation from the first dimension and the VERBOSE setting from the second dimension. All the functions return CLOB data.

See the IBM Docs for more details

Get a List of Products

The first demo receives a list of products from the fakeStoreApi as JSON. Here is a look at the JSON we can expect to receive:

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+
[
+  {
+    "id": 1,
+    "title": "Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops",
+    "price": 109.95,
+    "description": "Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday",
+    "category": "men's clothing",
+    "image": "https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg",
+    "rating": {
+      "rate": 3.9,
+      "count": 120
+    }
+  },
+  {
+    "id": 2,
+    "title": "Mens Casual Premium Slim Fit T-Shirts ",
+    "price": 22.3,
+    "description": "Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.",
+    "category": "men's clothing",
+    "image": "https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_.jpg",
+    "rating": {
+      "rate": 4.1,
+      "count": 259
+    }
+  }
+]
+

This is actually an array of two JSON objects. The JSON tools provided by DB2 are smart and will know to treat each object separately. To make sure we are getting the expected JSON we can print the results of QSYS2.HTTP_GET with the VALUES keyword.

1
+2
+3
+4
+
VALUES QSYS2.HTTP_GET(
+            'http://fakestoreapi.com/products?limit=2',
+           ''
+           );
+

QSYS2.HTTP_GET takes two arguments. The first argument is the URL of the API endpoint the GET request will be sent to. In this case it is the http://fakestoreapi.com/products endpoint and the limit=2 parameter is added to only get two items total. The second argument is for HTTP header parameters. In this case no HTTP header parameters need to be specified to complete the request so this field can be left empty.

The JSON_TABLE function can take any QSYS2.HTTP_XXXX that produces JSON as an argument. The values from the JSON keys can then be extracted and placed directly into a table.

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+
SELECT *
+FROM JSON_TABLE(
+        QSYS2.HTTP_GET(
+            'http://fakestoreapi.com/products?limit=10',
+            ''
+        ),
+        '$' COLUMNS(
+            name VARCHAR(75) PATH 'lax $.title',
+            totalRatings INT PATH 'lax $.rating.count'
+        )
+    );
+

This example will extract the values from the title (name of item) key and the nested field count (total number of ratings) key in the ratings array. and then place them into a table with the column names name and totalRatings.

Result:

NameRating
Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops120
Mens Casual Premium Slim Fit T-Shirts259
Mens Cotton Jacket500
Mens Casual Slim Fit430
John Hardy Women’s Legends Naga Gold & Silver Dragon Station Chain Bracelet400
Solid Gold Petite Micropave70
White Gold Plated Princess400
Pierced Owl Rose Gold Plated Stainless Steel Double100
WD 2TB Elements Portable External Hard Drive - USB 3.0203
SanDisk SSD PLUS 1TB Internal SSD - SATA III 6 Gb/s470

POST a New User

The next example is sending a POST request to the https://fakestoreapi.com/users endpoint to create a new user. The fakeStoreApi docs indicate that the body of our HTTP POST request should contain the following JSON object:

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+
{
+    "email":"John@gmail.com",
+    "username":"johnd",
+    "password":"m38rmF$",
+    "name":{
+        "firstname":"John",
+        "lastname":"Doe"
+    },
+    "address":{
+        "city":"kilcoole",
+        "street":"7835 new road",
+        "number":3,
+        "zipcode":"12926-3874",
+        "geolocation":{
+            "lat":"-37.3159",
+            "long":"81.1496"
+        }
+    },
+    "phone": "1-570-236-7033"
+}
+

Upon a successful add of a new user the API will return a 200 response code and a JSON object with the user’s new id:

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+
{
+  "address": {
+    "geolocation": {
+      "lat": "-37.3159",
+      "long": "81.1496"
+    },
+    "city": "kilcoole",
+    "street": "7835 new road"
+  },
+  "_id": "62c73539f0321700139f4682",
+  "id": 1,
+  "email": "John@gmail.com",
+  "username": "johnd",
+  "password": "m38rmF$",
+  "phone": "1-570-236-7033"
+}
+

QSYS2.HTTP_POST takes three This time arguments the URL, the HTTP body and the HTTP header parameters. This time the URL and body arguments of the QSYS2.HTTP_POST will be assigned to variables for readability.

We also need to specify the ā€œContent-Typeā€ in the HTTP header to indicate that our HTTP body will be in JSON format. By default QSYS2.HTTP_POST specifies the content type of the body to be XML. To override this setting we pass in the header settings in JSON format:

1
+
{"header":"Content-Type,application/json;charset=utf-8"}
+

More information about the different header settings that can to passed to the QSYS2.HTTP_XXXX tools can be found in the IBM docs

Here all the moving parts put together:

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+
Create or replace variable @userURL varchar(50) ;
+SET @userURL = 'http://fakestoreapi.com/users';
+
+Create or replace variable @postBody varchar(500) ;
+SET @postBody = '{
+    "email":"John@gmail.com",
+    "username":"johnd",
+    "password":"m38rmF$",
+    "name":{
+        "firstname":"John",
+        "lastname":"Doe"
+    },
+    "address":{
+        "city":"kilcoole",
+        "street":"7835 new road",
+        "number":3,
+        "zipcode":"12926-3874",
+        "geolocation":{
+            "lat":"-37.3159",
+            "long":"81.1496"
+        }
+    },
+    "phone": "1-570-236-7033"
+}';
+
+SELECT *
+FROM JSON_TABLE(
+    QSYS2.HTTP_POST(
+        @userURL,
+        @postBody,
+        '{"header":"Content-Type,application/json;charset=utf-8"}'
+    ),
+    '$' COLUMNS(
+        testID INT PATH 'lax $.id',
+        email VARCHAR(50) PATH 'lax $.email',
+        username VARCHAR(50) PATH 'lax $.username',
+        password VARCHAR(50) PATH 'lax $.password'
+    )
+);
+

And the result:

TESTIDEMAILUSERNAMEPASSWORD
1John@gmail.comjohndm38rmF$
This post is licensed under CC BY 4.0 by the author.
diff --git a/redirects.json b/redirects.json new file mode 100644 index 0000000..af1525c --- /dev/null +++ b/redirects.json @@ -0,0 +1 @@ +{"/norobots/":"https://colemaxwell.dev/404.html","/assets/":"https://colemaxwell.dev/404.html","/posts/":"https://colemaxwell.dev/404.html"} \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..432a4c1 --- /dev/null +++ b/robots.txt @@ -0,0 +1,5 @@ +User-agent: * + +Disallow: /norobots/ + +Sitemap: https://colemaxwell.dev/sitemap.xml diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..2cc83b4 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,57 @@ + + + +https://colemaxwell.dev/posts/rest-api-ibmi-qsys2/ +2022-08-03T21:32:53-05:00 + + +https://colemaxwell.dev/posts/ibmi-odbc-on-linux/ +2022-08-03T21:48:45-05:00 + + +https://colemaxwell.dev/categories/ +2023-08-12T09:57:05-05:00 + + +https://colemaxwell.dev/tags/ +2023-08-12T09:57:05-05:00 + + +https://colemaxwell.dev/archives/ +2023-08-12T09:57:05-05:00 + + +https://colemaxwell.dev/about/ +2023-08-12T09:57:05-05:00 + + +https://colemaxwell.dev/ + + +https://colemaxwell.dev/tags/ibmi/ + + +https://colemaxwell.dev/tags/api/ + + +https://colemaxwell.dev/tags/qsys2/ + + +https://colemaxwell.dev/tags/rest/ + + +https://colemaxwell.dev/tags/sql/ + + +https://colemaxwell.dev/tags/odbc/ + + +https://colemaxwell.dev/tags/linux/ + + +https://colemaxwell.dev/tags/as400/ + + +https://colemaxwell.dev/categories/ibm-i/ + + diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..f64a4a5 --- /dev/null +++ b/sw.js @@ -0,0 +1 @@ +self.importScripts('/assets/js/data/swcache.js'); const cacheName = 'chirpy-20230812.095705'; function verifyDomain(url) { for (const domain of allowedDomains) { const regex = RegExp(`^http(s)?:\/\/${domain}\/`); if (regex.test(url)) { return true; } } return false; } function isExcluded(url) { for (const item of denyUrls) { if (url === item) { return true; } } return false; } self.addEventListener('install', event => { event.waitUntil( caches.open(cacheName).then(cache => { return cache.addAll(resource); }) ); }); self.addEventListener('activate', event => { event.waitUntil( caches.keys().then(keyList => { return Promise.all( keyList.map(key => { if (key !== cacheName) { return caches.delete(key); } }) ); }) ); }); self.addEventListener('message', (event) => { if (event.data === 'SKIP_WAITING') { self.skipWaiting(); } }); self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request).then(response => { if (response) { return response; } return fetch(event.request).then(response => { const url = event.request.url; if (event.request.method !== 'GET' || !verifyDomain(url) || isExcluded(url)) { return response; } /* see: */ let responseToCache = response.clone(); caches.open(cacheName).then(cache => { /* console.log('[sw] Caching new resource: ' + event.request.url); */ cache.put(event.request, responseToCache); }); return response; }); }) ); }); diff --git a/tags/api/index.html b/tags/api/index.html new file mode 100644 index 0000000..0c41a47 --- /dev/null +++ b/tags/api/index.html @@ -0,0 +1 @@ + api | Cole Maxwell
Home Tags api
Tag
Cancel
diff --git a/tags/as400/index.html b/tags/as400/index.html new file mode 100644 index 0000000..3092d5e --- /dev/null +++ b/tags/as400/index.html @@ -0,0 +1 @@ + as400 | Cole Maxwell
Home Tags as400
Tag
Cancel
diff --git a/tags/ibmi/index.html b/tags/ibmi/index.html new file mode 100644 index 0000000..e936ec1 --- /dev/null +++ b/tags/ibmi/index.html @@ -0,0 +1 @@ + ibmi | Cole Maxwell
Home Tags ibmi
Tag
Cancel
diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 0000000..a66c59e --- /dev/null +++ b/tags/index.html @@ -0,0 +1 @@ + Tags | Cole Maxwell
Home Tags
Tags
Cancel
diff --git a/tags/linux/index.html b/tags/linux/index.html new file mode 100644 index 0000000..cd3a3a9 --- /dev/null +++ b/tags/linux/index.html @@ -0,0 +1 @@ + linux | Cole Maxwell
Home Tags linux
Tag
Cancel
diff --git a/tags/odbc/index.html b/tags/odbc/index.html new file mode 100644 index 0000000..031e6b2 --- /dev/null +++ b/tags/odbc/index.html @@ -0,0 +1 @@ + odbc | Cole Maxwell
Home Tags odbc
Tag
Cancel
diff --git a/tags/qsys2/index.html b/tags/qsys2/index.html new file mode 100644 index 0000000..42466c4 --- /dev/null +++ b/tags/qsys2/index.html @@ -0,0 +1 @@ + qsys2 | Cole Maxwell
Home Tags qsys2
Tag
Cancel
diff --git a/tags/rest/index.html b/tags/rest/index.html new file mode 100644 index 0000000..7d87997 --- /dev/null +++ b/tags/rest/index.html @@ -0,0 +1 @@ + rest | Cole Maxwell
Home Tags rest
Tag
Cancel
diff --git a/tags/sql/index.html b/tags/sql/index.html new file mode 100644 index 0000000..3278dcd --- /dev/null +++ b/tags/sql/index.html @@ -0,0 +1 @@ + sql | Cole Maxwell
Home Tags sql
Tag
Cancel
diff --git a/unregister.js b/unregister.js new file mode 100644 index 0000000..20cef0d --- /dev/null +++ b/unregister.js @@ -0,0 +1 @@ +if ('serviceWorker' in navigator) { navigator.serviceWorker.getRegistrations().then((registrations) => { for (let reg of registrations) { reg.unregister(); } }); }