From 5ff92185f36c768eca3f6686d9a589a0f8ad8f6a Mon Sep 17 00:00:00 2001 From: Sergey Zubkov Date: Sat, 11 May 2024 22:29:27 -0400 Subject: [PATCH] we should be able to publish the page from main branch --- .github/workflows/jekyll-gh-pages.yml | 2 +- _config.yml | 2 + _includes/head.html | 65 ++++ _includes/sidebar.html | 70 ++++ _layouts/default.html | 17 + cpp_core_guidelines_16b.png | Bin 0 -> 8334 bytes index.html | 22 ++ params.json | 1 + public/css/custom.css | 418 ++++++++++++++++++++++++ public/css/hyde.css | 252 +++++++++++++++ public/css/poole.css | 439 ++++++++++++++++++++++++++ public/images/bg_hr.png | Bin 0 -> 78 bytes public/images/blacktocat.png | Bin 0 -> 463 bytes public/images/icon_download.png | Bin 0 -> 216 bytes public/images/sprite_download.png | Bin 0 -> 14832 bytes 15 files changed, 1287 insertions(+), 1 deletion(-) create mode 100644 _config.yml create mode 100644 _includes/head.html create mode 100644 _includes/sidebar.html create mode 100644 _layouts/default.html create mode 100644 cpp_core_guidelines_16b.png create mode 100644 index.html create mode 100644 params.json create mode 100644 public/css/custom.css create mode 100644 public/css/hyde.css create mode 100644 public/css/poole.css create mode 100644 public/images/bg_hr.png create mode 100644 public/images/blacktocat.png create mode 100644 public/images/icon_download.png create mode 100644 public/images/sprite_download.png diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml index 6d1efb4..0ebd768 100644 --- a/.github/workflows/jekyll-gh-pages.yml +++ b/.github/workflows/jekyll-gh-pages.yml @@ -4,7 +4,7 @@ name: Deploy Jekyll with GitHub Pages dependencies preinstalled on: # Runs on pushes targeting the default branch push: - branches: ["gh-pages"] + branches: ["master"] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..189a689 --- /dev/null +++ b/_config.yml @@ -0,0 +1,2 @@ +include: [CppCoreGuidelines.md] +exclude: [docs, talks, Gemfile, params.json] diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..dff33cc --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,65 @@ + + + + + + + + + C++ Core Guidelines + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_includes/sidebar.html b/_includes/sidebar.html new file mode 100644 index 0000000..16f6e2a --- /dev/null +++ b/_includes/sidebar.html @@ -0,0 +1,70 @@ + diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000..34f1f72 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,17 @@ + + + + {% include head.html %} + + + + {% include sidebar.html %} + + + +
+ {{ content }} +
+ + + diff --git a/cpp_core_guidelines_16b.png b/cpp_core_guidelines_16b.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc304e91112161ced39d76b5eabbf179623243f GIT binary patch literal 8334 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]AA+LOYJ1gGPgDKFFwVaQxq3Xe5}b z5&rzXU~@Od<`p$9RoR_nc8p{6N%+opl`4)VT?ALbBfN)l+1*%Kz{1cTYZfT}?=WfQM#kCItJSb@JJP{~0)C+T&P?Uh zIyHtA4*6E^$yKfPKq?=hP_M6l$@?||%@|v&r;i<$93UM`NZ{Cix_Fmrkj7YaqTq&V z@`w<>=5K<(V&6}YOl9n>zIywlH*I0N@FD4-LZjJ`P>5W66dpelZi@4{>-S)E@VW|< z_=U=6W0$RGtgN|uOp5=H#el&3qyr0)4@QKm9sr?y0dO-W=i+S`7rGwI`uY>^S%|zl zG;GfpQIW@Y1`8Ie}Q*hGVfH^B*!=clvt8+HM78pS=mikDtK{6l-fUHvs3%;N8`)-z`>cH@bA)QPpb8 z9mg(Xea-_HsBaZ``zz-dM?BcdxY6)xJ0`kabKB6}v_jqnw})EUErKp?v8o*jM+UA{ zZQnBkJsfzl44y6Km$Db;CjO(^yv=3tCa|5iTD3SXHh4qpAmVY28T67ZX=A@ANN0^# zU8wW;s6NexgkC0HFojYR@cKP%M?_?PGA^P8V>fQe4uwB$?87HF9u#cU;SWW3G`C%N z>C-WhKO%dv7uKjNYf;+!jRplr)$8Z~igYs+N_Cj`54io&$Vd;7NMyp;ia)ZNmD=6B zU%)0~?Ea)^2WlG?w;8@TdXQ*sW5!1O)el~Aj%NM*&ysGGLc!qPvBrZ!cGw55?!wqc z7)soEq}c}}!snUx^*5T_A4>J$5$5{+1C+g|Cp$7$5vE3ju4&uCHf*J_<&aP+f?k4! zUERh0xKo6&hw#;TT=dt?hAdQ&3WOqT>h@mn5`F#CI@yWL7&{oBS`H1fZ(h@Vs{K4?W3zw`r@jg>sRJztr zKJm6qY(k7`@;g_-b1<3@30?0LwCQuEdZ_d%oU!-mn58os3hyWuJdEDnd!BD2i?{ z@9+Pr!|0`wzM|xJm|~~mf^hirvBT2-Eo>Lk>`xtnyC+-QFW&q6v_u-mb6Flsvl=uR z95SVT|9}!wMN-tq!YWYt_4wGqOwm&DK~}TUTQ?gLnrPC?kLLeqh-n|cn;#4hpA?#u zZOIfT72ovpl$0Nv*n}J>RWRjk>h|_~)zl_*`Bcdc+8-|zbr`dBtmS~f>!b=dc5qT4 z3J>>oa9Bp;cp<9on0WIpZm}_@ef(+s&(O#^_{#T_q@$T4q7t(3!bBgBTJjI7c%w~! zKn>UDpNv`JXH?Vvs9vkh$nbAl*e)zEru64Jy%#)hZNF$`kEs$G#~ZWo#=k8FhuB#R z2o(JE$3}yK_kZpfC9LH;sA?uW{qck0;Y;xZ3X*B~Ow+-k#UG9cM^Oz8Yp5#G|0X4V z-qghjf`Aj(rf->lG(UG{r&-W z+K*X+r~Oe;=~ngu>%MDlyKq03R)03_?f3Kx=jDk#93>5z%cP>xg8*uGb&s)WFfiyU z$%uxe-KdD89Y#mDX0D8iO8@F9%BtIXSoo}Z{rrnbrqn0RhJ;>dH8iXzb176*hS&E_ z;-*b(LL{aJ*fQV3Dxj#TP3Rb}h%NP)(^FBgt8d)JU0c~L$|D)Jrr?d6KO7N}(ASGj z`=jEhzI0jcg5J!RNCwsvyxZS9gMu@^_l*07IXo2=cjXeav(YD`mn^K)XMxuFKb8Xm z3%a^XXqo{P|J2nb#-i=W$e_l9g4Npp%M7&>P{VcaM-Jh3G+mgAii(Pgii(O#E7hv? Ye=3*Iv@|Mv%>V!Z07*qoM6N<$f(ICGUjP6A literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..8ce489f --- /dev/null +++ b/index.html @@ -0,0 +1,22 @@ +--- +layout: default +--- + + + + +
+
+ +
+
+ +{% capture readme %}{% include_relative README.md %}{% endcapture %} +{{ readme | markdownify }} diff --git a/params.json b/params.json new file mode 100644 index 0000000..9bc9107 --- /dev/null +++ b/params.json @@ -0,0 +1 @@ +{"name":"Cppcoreguidelines","tagline":"The C++ Core Guidelines are a set of tried-and-true guidelines, rules, and best practices about coding in C++","body":"# C++ Core Guidelines\r\n\r\n>\"Within C++ is a smaller, simpler, safer language struggling to get out.\" \r\n>-- Bjarne Stroustrup\r\n\r\nThe C++ Core Guidelines are a collaborative effort led by Bjarne Stroustrup, much like the C++ language itself. They are the result of many \r\nperson-years of discussion and design across a number of organizations. Their design encourages general applicability and broad adoption but \r\nthey can be freely copied and modified to meet your organization's needs. \r\n\r\nThe aim of the guidelines is to help people to use modern C++ effectively. By \"modern C++\" we mean C++11 and C++14 (and soon C++17). In other \r\nwords, what would you like your code to look like in 5 years' time, given that you can start now? In 10 years' time?\r\n\r\nThe guidelines are focused on relatively higher-level issues, such as interfaces, resource management, memory management, and concurrency. Such \r\nrules affect application architecture and library design. Following the rules will lead to code that is statically type safe, has no resource \r\nleaks, and catches many more programming logic errors than is common in code today. And it will run fast - you can afford to do things right.\r\n\r\nWe are less concerned with low-level issues, such as naming conventions and indentation style. However, no topic that can help a programmer is \r\nout of bounds.\r\n\r\nOur initial set of rules emphasize safety (of various forms) and simplicity. They may very well be too strict. We expect to have to introduce \r\nmore exceptions to better accommodate real-world needs. We also need more rules.\r\n\r\nYou will find some of the rules contrary to your expectations or even contrary to your experience. If we haven't suggested you change your \r\ncoding style in any way, we have failed! Please try to verify or disprove rules! In particular, we'd really like to have some of our rules \r\nbacked up with measurements or better examples.\r\n\r\nYou will find some of the rules obvious or even trivial. Please remember that one purpose of a guideline is to help someone who is less \r\nexperienced or coming from a different background or language to get up to speed.\r\n\r\nThe rules are designed to be supported by an analysis tool. Violations of rules will be flagged with references (or links) to the relevant rule. \r\nWe do not expect you to memorize all the rules before trying to write code.\r\n\r\nThe rules are meant for gradual introduction into a code base. We plan to build tools for that and hope others will too.\r\n\r\nComments and suggestions for improvements are most welcome. We plan to modify and extend this document as our understanding improves and the \r\nlanguage and the set of available libraries improve.\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."} \ No newline at end of file diff --git a/public/css/custom.css b/public/css/custom.css new file mode 100644 index 0000000..f9cc386 --- /dev/null +++ b/public/css/custom.css @@ -0,0 +1,418 @@ +.outer { + width: 100%; +} + +.inner { + position: relative; + max-width: 1280px; + padding: 20px 10px; + margin: 0 auto; +} + + +#header_wrap { + background: #212121; + background: -moz-linear-gradient(top, #373737, #212121); + background: -webkit-linear-gradient(top, #373737, #212121); + background: -ms-linear-gradient(top, #373737, #212121); + background: -o-linear-gradient(top, #373737, #212121); + background: linear-gradient(top, #373737, #212121); +} + +#header_wrap .inner { + padding: 50px 10px 30px 10px; +} + +#downloads { + position: absolute; + width: 210px; + z-index: 10; + bottom: -40px; + right: 0; + height: 70px; + background: url('../images/icon_download.png') no-repeat 0% 90%; +} + +/** same style for highlighted, non-highlight */ +.cpp.hljs { + overflow-x: unset; +} + +/** override poole.css */ +pre code { + /* same as hljs */ + padding: 0.5em; +} + +/** highlight js change colors (overrides style) */ +.hljs-comment { + color: #008000; +} +.hljs-meta { + color: #2b91af; +} + +.zip_download_link { + display: block; + float: right; + width: 90px; + height:70px; + text-indent: -5000px; + overflow: hidden; + background: url(../images/sprite_download.png) no-repeat bottom left; +} + +.tar_download_link { + display: block; + float: right; + width: 90px; + height:70px; + text-indent: -5000px; + overflow: hidden; + background: url(../images/sprite_download.png) no-repeat bottom right; + margin-left: 10px; +} + +.zip_download_link:hover { + background: url(../images/sprite_download.png) no-repeat top left; +} + +.tar_download_link:hover { + background: url(../images/sprite_download.png) no-repeat top right; +} + +/** + * Try to display h5 headers left of paragraphs + */ + +h5 { + display: inline; +} + +h5:before { + content: '\A'; white-space:pre-line; +} + +h5 + p { + display: inline; +} + +p:after { + content: '\A'; white-space:pre-line; +} + +@media print { + .sidebar,.banner, a:after { + display: none; + } + .container { + width: 90%; + margin: 2em; + padding: 0px; + } + .* { + color: #000; + background-color: #fff; + @include box-shadow(none); + @include text-shadow(none); + } + code,p { + page-break-inside:avoid; + page-break-before:avoid; + } + pre code { + /* try to fit 100 max chars into one A4 line */ + font-size: 2.8mm; + } + h1,h2,h3,h4,h5,strong { + page-break-after:avoid; + } + h1,h2 { + page-break-before:always; + } + a:link, a:visited { + color: #000; + } +} + + +.tgl { + display: none; +} +.tgl + .tgl-btn { + outline: 0; + display: block; + width: 8em; + height: 2em; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tgl + .tgl-btn:after, .tgl + .tgl-btn:before { + position: relative; + display: block; + content: ""; + width: 50%; + height: 100%; +} +.tgl + .tgl-btn:after { + left: 0; +} +.tgl + .tgl-btn:before { + display: none; +} +.tgl:checked + .tgl-btn:after { + left: 50%; +} + +.tgl-cpp + .tgl-btn { + overflow: hidden; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + background: #888; +} +.tgl-cpp + .tgl-btn:after, .tgl-cpp + .tgl-btn:before { + display: inline-block; + width: 100%; + text-align: center; + position: absolute; + line-height: 2em; + font-weight: bold; + color: #fff; +} +.tgl-cpp + .tgl-btn:after { + left: 100%; + content: attr(data-tg-on); +} +.tgl-cpp + .tgl-btn:before { + left: 0; + content: attr(data-tg-off); +} +.tgl-cpp + .tgl-btn:active { + background: #888; +} +.tgl-cpp:checked + .tgl-btn { + background: #268bd2; +} +.tgl-cpp:checked + .tgl-btn:before { + left: -100%; +} +.tgl-cpp:checked + .tgl-btn:after { + left: 0; +} + +// +// rougify style github +// +.highlight table td { padding: 5px; } +.highlight table pre { margin: 0; } +.highlight .cm { + color: #999988; + font-style: italic; +} +.highlight .cp { + color: #999999; + font-weight: bold; +} +.highlight .c1 { + color: #999988; + font-style: italic; +} +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; +} +.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { + color: #999988; + font-style: italic; +} +.highlight .err { + color: #a61717; + background-color: #e3d2d2; +} +.highlight .gd { + color: #000000; + background-color: #ffdddd; +} +.highlight .ge { + color: #000000; + font-style: italic; +} +.highlight .gr { + color: #aa0000; +} +.highlight .gh { + color: #999999; +} +.highlight .gi { + color: #000000; + background-color: #ddffdd; +} +.highlight .go { + color: #888888; +} +.highlight .gp { + color: #555555; +} +.highlight .gs { + font-weight: bold; +} +.highlight .gu { + color: #aaaaaa; +} +.highlight .gt { + color: #aa0000; +} +.highlight .kc { + color: #000000; + font-weight: bold; +} +.highlight .kd { + color: #000000; + font-weight: bold; +} +.highlight .kn { + color: #000000; + font-weight: bold; +} +.highlight .kp { + color: #000000; + font-weight: bold; +} +.highlight .kr { + color: #000000; + font-weight: bold; +} +.highlight .kt { + color: #445588; + font-weight: bold; +} +.highlight .k, .highlight .kv { + color: #000000; + font-weight: bold; +} +.highlight .mf { + color: #009999; +} +.highlight .mh { + color: #009999; +} +.highlight .il { + color: #009999; +} +.highlight .mi { + color: #009999; +} +.highlight .mo { + color: #009999; +} +.highlight .m, .highlight .mb, .highlight .mx { + color: #009999; +} +.highlight .sb { + color: #d14; +} +.highlight .sc { + color: #d14; +} +.highlight .sd { + color: #d14; +} +.highlight .s2 { + color: #d14; +} +.highlight .se { + color: #d14; +} +.highlight .sh { + color: #d14; +} +.highlight .si { + color: #d14; +} +.highlight .sx { + color: #d14; +} +.highlight .sr { + color: #009926; +} +.highlight .s1 { + color: #d14; +} +.highlight .ss { + color: #990073; +} +.highlight .s, .highlight .sa, .highlight .dl { + color: #d14; +} +.highlight .na { + color: #008080; +} +.highlight .bp { + color: #999999; +} +.highlight .nb { + color: #0086B3; +} +.highlight .nc { + color: #445588; + font-weight: bold; +} +.highlight .no { + color: #008080; +} +.highlight .nd { + color: #3c5d5d; + font-weight: bold; +} +.highlight .ni { + color: #800080; +} +.highlight .ne { + color: #990000; + font-weight: bold; +} +.highlight .nf, .highlight .fm { + color: #990000; + font-weight: bold; +} +.highlight .nl { + color: #990000; + font-weight: bold; +} +.highlight .nn { + color: #555555; +} +.highlight .nt { + color: #000080; +} +.highlight .vc { + color: #008080; +} +.highlight .vg { + color: #008080; +} +.highlight .vi { + color: #008080; +} +.highlight .nv, .highlight .vm { + color: #008080; +} +.highlight .ow { + color: #000000; + font-weight: bold; +} +.highlight .o { + color: #000000; + font-weight: bold; +} +.highlight .w { + color: #bbbbbb; +} +.highlight { + background-color: #f8f8f8; +} diff --git a/public/css/hyde.css b/public/css/hyde.css new file mode 100644 index 0000000..e0debb2 --- /dev/null +++ b/public/css/hyde.css @@ -0,0 +1,252 @@ +/* + * __ __ + * /\ \ /\ \ + * \ \ \___ __ __ \_\ \ __ + * \ \ _ `\/\ \/\ \ /'_` \ /'__`\ + * \ \ \ \ \ \ \_\ \/\ \_\ \/\ __/ + * \ \_\ \_\/`____ \ \___,_\ \____\ + * \/_/\/_/`/___/> \/__,_ /\/____/ + * /\___/ + * \/__/ + * + * Designed, built, and released under MIT license by @mdo. Learn more at + * https://github.com/poole/hyde. + */ + + +/* + * Contents + * + * Global resets + * Sidebar + * Container + * Reverse layout + * Themes + */ + + +/* + * Global resets + * + * Update the foundational and global aspects of the page. + */ + +html { + font-family: "PT Sans", Helvetica, Arial, sans-serif; +} +@media (min-width: 48em) { + html { + font-size: 16px; + } +} +@media (min-width: 58em) { + html { + font-size: 20px; + } +} + + +/* + * Sidebar + * + * Flexible banner for housing site name, intro, and "footer" content. Starts + * out above content in mobile and later moves to the side with wider viewports. + */ + +.sidebar { + text-align: center; + padding: none; + color: rgba(255,255,255,.5); + background-color: #202020; +} +@media (min-width: 48em) { + .sidebar { + overflow-y: scroll; + position: fixed; + top: 0; + left: 0; + bottom: 0; + width: 18rem; + text-align: left; + } +} + +/* Sidebar links */ +.sidebar a { + color: #fff; +} + +/* About section */ +.sidebar-about h1 { + color: #fff; + margin-top: 0; + font-family: "Abril Fatface", serif; + font-size: 3.25rem; +} + +/* Sidebar nav */ +.sidebar-nav { + margin-bottom: 1rem; +} +.sidebar-nav-item { + display: block; + line-height: 1.75; +} +a.sidebar-nav-item:hover, +a.sidebar-nav-item:focus { + text-decoration: underline; +} +.sidebar-nav-item.active { + font-weight: bold; +} + +/* Sticky sidebar + * + * Add the `sidebar-sticky` class to the sidebar's container to affix it the + * contents to the bottom of the sidebar in tablets and up. + */ + +@media (min-width: 48em) { + .sidebar-sticky { + position: absolute; + right: 1rem; + bottom: 1rem; + left: 1rem; + top: 0rem; + } +} + + +/* Container + * + * Align the contents of the site above the proper threshold with some margin-fu + * with a 25%-wide `.sidebar`. + */ + +.content { + padding-top: 4rem; + padding-bottom: 4rem; +} + +@media (min-width: 48em) { + .content { + max-width: 38rem; + margin-left: 20rem; + margin-right: 2rem; + } +} + +@media (min-width: 64em) { + .content { + margin-left: 22rem; + margin-right: 4rem; + } +} + + +/* + * Reverse layout + * + * Flip the orientation of the page by placing the `.sidebar` on the right. + */ + +@media (min-width: 48em) { + .layout-reverse .sidebar { + left: auto; + right: 0; + } + .layout-reverse .content { + margin-left: 2rem; + margin-right: 20rem; + } +} + +@media (min-width: 64em) { + .layout-reverse .content { + margin-left: 4rem; + margin-right: 22rem; + } +} + + + +/* + * Themes + * + * As of v1.1, Hyde includes optional themes to color the sidebar and links + * within blog posts. To use, add the class of your choosing to the `body`. + */ + +/* Base16 (http://chriskempson.github.io/base16/#default) */ + +/* Red */ +.theme-base-08 .sidebar { + background-color: #ac4142; +} +.theme-base-08 .content a, +.theme-base-08 .related-posts li a:hover { + color: #ac4142; +} + +/* Orange */ +.theme-base-09 .sidebar { + background-color: #d28445; +} +.theme-base-09 .content a, +.theme-base-09 .related-posts li a:hover { + color: #d28445; +} + +/* Yellow */ +.theme-base-0a .sidebar { + background-color: #f4bf75; +} +.theme-base-0a .content a, +.theme-base-0a .related-posts li a:hover { + color: #f4bf75; +} + +/* Green */ +.theme-base-0b .sidebar { + background-color: #90a959; +} +.theme-base-0b .content a, +.theme-base-0b .related-posts li a:hover { + color: #90a959; +} + +/* Cyan */ +.theme-base-0c .sidebar { + background-color: #75b5aa; +} +.theme-base-0c .content a, +.theme-base-0c .related-posts li a:hover { + color: #75b5aa; +} + +/* Blue */ +.theme-base-0d .sidebar { + background-color: #6a9fb5; +} +.theme-base-0d .content a, +.theme-base-0d .related-posts li a:hover { + color: #6a9fb5; +} + +/* Magenta */ +.theme-base-0e .sidebar { + background-color: #aa759f; +} +.theme-base-0e .content a, +.theme-base-0e .related-posts li a:hover { + color: #aa759f; +} + +/* Brown */ +.theme-base-0f .sidebar { + background-color: #8f5536; +} +.theme-base-0f .content a, +.theme-base-0f .related-posts li a:hover { + color: #8f5536; +} diff --git a/public/css/poole.css b/public/css/poole.css new file mode 100644 index 0000000..dfec045 --- /dev/null +++ b/public/css/poole.css @@ -0,0 +1,439 @@ +/* + * ___ + * /\_ \ + * _____ ___ ___\//\ \ __ + * /\ '__`\ / __`\ / __`\\ \ \ /'__`\ + * \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/ + * \ \ ,__/\ \____/\ \____//\____\ \____\ + * \ \ \/ \/___/ \/___/ \/____/\/____/ + * \ \_\ + * \/_/ + * + * Designed, built, and released under MIT license by @mdo. Learn more at + * https://github.com/poole/poole. + */ + + +/* + * Contents + * + * Body resets + * Custom type + * Messages + * Container + * Masthead + * Posts and pages + * Pagination + * Reverse layout + * Themes + */ + + +/* + * Body resets + * + * Update the foundational and global aspects of the page. + */ + + +html, +body { + margin: 0; + padding: 0; +} + +html { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 1.5; +} +@media (min-width: 38em) { + html { + font-size: 20px; + } +} + +body { + color: #515151; + background-color: #fff; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +/* No `:visited` state is required by default (browsers will use `a`) */ +a { + color: #268bd2; + text-decoration: none; +} +a strong { + color: inherit; +} +/* `:focus` is linked to `:hover` for basic accessibility */ +a:hover, +a:focus { + text-decoration: underline; +} + +/* Headings */ +h1, h2, h3, h4, h5, h6 { + margin-bottom: .5rem; + font-weight: bold; + line-height: 1.25; + color: #313131; + text-rendering: optimizeLegibility; +} +h1 { + font-size: 2rem; +} +h2 { + margin-top: 1rem; + font-size: 1.5rem; +} +h3 { + margin-top: 1.5rem; + font-size: 1.25rem; +} +h4, h5, h6 { + margin-top: 1rem; + font-size: 1rem; +} + +/* Body text */ +p { + margin-top: 0; + margin-bottom: 1rem; +} + +strong { + color: #303030; +} + + +/* Lists */ +ul, ol, dl { + margin-top: 0; + margin-bottom: 1rem; +} + +dt { + font-weight: bold; +} +dd { + margin-bottom: .5rem; +} + +/* Misc */ +hr { + position: relative; + margin: 1.5rem 0; + border: 0; + border-top: 1px solid #eee; + border-bottom: 1px solid #fff; +} + +abbr { + font-size: 85%; + font-weight: bold; + color: #555; + text-transform: uppercase; +} +abbr[title] { + cursor: help; + border-bottom: 1px dotted #e5e5e5; +} + +/* Code */ +code, +pre { + font-family: "Roboto Mono", monospace; +} +code { + padding: .2em .2em; + font-size: 90%; + background-color: #f9f9f9; + border-radius: 3px; +} + +@media (max-width: 70em) { + code { + white-space: pre-wrap; + word-break: break-all; + word-wrap: break-word; + } +} +pre { + display: block; + margin-top: 0; + font-size: .8rem; + line-height: 1.4; + background-color: #f9f9f9; +} +@media (min-width: 70em) { + pre { + display: inline-block; + min-width: 50em; + white-space: pre; + } +} +@media (min-width: 70em) { + pre code { + display: inline-block; + min-width: 50em; + } +} +pre code { + padding: 0; + font-size: 100%; + color: black; + background-color: transparent; +} + +/* Pygments via Jekyll */ +.highlight { + margin-bottom: 1rem; + border-radius: 4px; +} +.highlight pre { + margin-bottom: 0; +} + +/* Gist via GitHub Pages */ +.gist .gist-file { + font-family: Menlo, Monaco, "Courier New", monospace !important; +} +.gist .markdown-body { + padding: 15px; +} +.gist pre { + padding: 0; + background-color: transparent; +} +.gist .gist-file .gist-data { + font-size: .8rem !important; + line-height: 1.4; +} +.gist code { + padding: 0; + color: inherit; + background-color: transparent; + border-radius: 0; +} + +/* Quotes */ +blockquote { + padding: .5rem 1rem; + margin: .8rem 0; + color: #7a7a7a; + border-left: .25rem solid #e5e5e5; +} +blockquote p:last-child { + margin-bottom: 0; +} +@media (min-width: 30em) { + blockquote { + padding-right: 5rem; + padding-left: 1.25rem; + } +} + +img { + display: block; + max-width: 100%; + margin: 0 0 1rem; + border-radius: 5px; +} + +/* Tables */ +table { + margin-bottom: 1rem; + width: 100%; + border: 1px solid #e5e5e5; + border-collapse: collapse; +} +td, +th { + padding: .25rem .5rem; + border: 1px solid #e5e5e5; +} +tbody tr:nth-child(odd) td, +tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + + +/* + * Custom type + * + * Extend paragraphs with `.lead` for larger introductory text. + */ + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + + +/* + * Messages + * + * Show alert messages to users. You may add it to single elements like a `

`, + * or to a parent if there are multiple elements to show. + */ + +.message { + margin-bottom: 1rem; + padding: 1rem; + color: #717171; + background-color: #f9f9f9; +} + + +/* + * Container + * + * Center the page content. + */ + +.container { + max-width: 38rem; + padding-left: 1rem; + padding-right: 1rem; + margin-left: auto; + margin-right: auto; +} + + +/* + * Masthead + * + * Super small header above the content for site name and short description. + */ + +.masthead { + padding-top: 1rem; + padding-bottom: 1rem; + margin-bottom: 3rem; +} +.masthead-title { + margin-top: 0; + margin-bottom: 0; + color: #505050; +} +.masthead-title a { + color: #505050; +} +.masthead-title small { + font-size: 75%; + font-weight: 400; + color: #c0c0c0; + letter-spacing: 0; +} + + +/* + * Posts and pages + * + * Each post is wrapped in `.post` and is used on default and post layouts. Each + * page is wrapped in `.page` and is only used on the page layout. + */ + +.page, +.post { + margin-bottom: 4em; +} + +/* Blog post or page title */ +.page-title, +.post-title, +.post-title a { + color: #303030; +} +.page-title, +.post-title { + margin-top: 0; +} + +/* Meta data line below post title */ +.post-date { + display: block; + margin-top: -.5rem; + margin-bottom: 1rem; + color: #9a9a9a; +} + +/* Related posts */ +.related { + padding-top: 2rem; + padding-bottom: 2rem; + border-top: 1px solid #eee; +} +.related-posts { + padding-left: 0; + list-style: none; +} +.related-posts h3 { + margin-top: 0; +} +.related-posts li small { + font-size: 75%; + color: #999; +} +.related-posts li a:hover { + color: #268bd2; + text-decoration: none; +} +.related-posts li a:hover small { + color: inherit; +} + + +/* + * Pagination + * + * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when + * there are no more previous or next posts to show. + */ + +.pagination { + overflow: hidden; /* clearfix */ + margin-left: -1rem; + margin-right: -1rem; + font-family: "PT Sans", Helvetica, Arial, sans-serif; + color: #ccc; + text-align: center; +} + +/* Pagination items can be `span`s or `a`s */ +.pagination-item { + display: block; + padding: 1rem; + border: 1px solid #eee; +} +.pagination-item:first-child { + margin-bottom: -1px; +} + +/* Only provide a hover state for linked pagination items */ +a.pagination-item:hover { + background-color: #f5f5f5; +} + +@media (min-width: 30em) { + .pagination { + margin: 3rem 0; + } + .pagination-item { + float: left; + width: 50%; + } + .pagination-item:first-child { + margin-bottom: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } + .pagination-item:last-child { + margin-left: -1px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +} diff --git a/public/images/bg_hr.png b/public/images/bg_hr.png new file mode 100644 index 0000000000000000000000000000000000000000..514aee5056a320b059a4b92fc31385b01f3fd707 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^EI=&E!3HD~tNk5798VX=5Q)pl2@*yR?(8i7?>Hmz b1S7-U!)%xJ1CQbP0l+XkKg_jic literal 0 HcmV?d00001 diff --git a/public/images/blacktocat.png b/public/images/blacktocat.png new file mode 100644 index 0000000000000000000000000000000000000000..e160053a5bfc1f1891c5df1a04244b46132ed91c GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGW&u7Su0Z-f>EL7Xu|Ghaf+azI z!3+%h6VAUEXmGf1FkfMPe?Wo5`wP+x42q#I?$ zCZCHu*mLc{mj@jVb0qJie|tLrXx$RV*xy|DA2&%h)(GsqVy%>MraS!Shm183{#@F! zV^vm_@$^Y{GUuI-cUN0({K+A*SMX|j#GmyK98SEwQl?dz*($XqK|j>0;H2RlD{}=; zx7!XPy5}bEXEt-@-@Ngc#+nIgOgm!u=S(u>E&hLN(cd}Wb8P2o&P?9><1zE8l8pz9 zg==?S&3yIdUhdL~<_mg1Y!?@vTUiymeaGcy&vRcbOG}I6uI`9fxn}VP_6h8=I%b0Z Rq=4be;OXk;vd$@?2>`O9@hboT literal 0 HcmV?d00001 diff --git a/public/images/icon_download.png b/public/images/icon_download.png new file mode 100644 index 0000000000000000000000000000000000000000..5a793f17688b22d0c98f8b32855f69daff65afaf GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3^F3W0Lp+WrCrGd^PB3WLTm5|# z<3>ZVHGbLMPaA&Ni`7(Ic@)^~t}9m~#>{KX@F?FxM~Q7di>SquC^@HPOZ^)nnu6w= zPs-5Ln9{RS^v!FJ4Hk1|eLTx~WO~PjEv;gjQBoc84>y)53m9M4vW{f>=&v)a$*Fn% zwMt9Ivq1qGD=w^dyuiIx3lB69mQJ=Ex6cJ85q6@e`QPvJEsD4 ODubu1pUXO@geCwMBTRk( literal 0 HcmV?d00001 diff --git a/public/images/sprite_download.png b/public/images/sprite_download.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f8de24c1c49ce421a44ce2a24ac22d045a39fe GIT binary patch literal 14832 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 WAV6(21mh6^0000