Update site and move to sr.ht
5
archetypes/default.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
+++
|
||||||
|
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
|
||||||
|
date = {{ .Date }}
|
||||||
|
draft = true
|
||||||
|
+++
|
19
content/_index.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
title: home
|
||||||
|
description: "The personal writings and expressions of Grayfox, otherwise known as you too and everyone else. It is a loving and silly place."
|
||||||
|
---
|
||||||
|
<img
|
||||||
|
id="personal"
|
||||||
|
src="/images/me.jpg"
|
||||||
|
alt="My face">
|
||||||
|
|
||||||
|
## vasilis valatsos (βασίλης βαλατσός)
|
||||||
|
|
||||||
|
### machine learning | reinforcement learning | natural languages
|
||||||
|
|
||||||
|
I am interested in the world in all of it's offerings; when I am not exploring man made constructs, like logic, physics, and most recently ai, I like to think about the ways we occupy space.
|
||||||
|
|
||||||
|
m.sc. in mathematics (statistics and data science),<br/>
|
||||||
|
university of turin,<br/>
|
||||||
|
[m-thesis](/pdf/mthesis.pdf): implemented ppo in a custom environment named pneuma
|
||||||
|
|
51
hugo.toml
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
baseurl = "https://www.valatsos.gr"
|
||||||
|
enableEmoji = true
|
||||||
|
footnotereturnlinkcontents = "↩"
|
||||||
|
ignoreFiles = ["\\.Rmd$", "_files$", "_cache$"]
|
||||||
|
languageCode = "en-us"
|
||||||
|
title = "valatsos"
|
||||||
|
|
||||||
|
[markup.goldmark.renderer]
|
||||||
|
unsafe = true
|
||||||
|
|
||||||
|
[markup.highlight]
|
||||||
|
anchorLineNos = false
|
||||||
|
codeFences = true
|
||||||
|
guessSyntax = false
|
||||||
|
hl_Lines = ""
|
||||||
|
lineAnchors = ""
|
||||||
|
lineNoStart = 1
|
||||||
|
lineNos = false
|
||||||
|
lineNumbersInTable = true
|
||||||
|
noClasses = true
|
||||||
|
style = "monokai"
|
||||||
|
tabWidth = 4
|
||||||
|
|
||||||
|
[permalinks]
|
||||||
|
post = "/post/:year/:month/:day/:slug/"
|
||||||
|
|
||||||
|
[[menu.main]]
|
||||||
|
name = "life"
|
||||||
|
url = "/life/"
|
||||||
|
weight = 2
|
||||||
|
|
||||||
|
[[menu.main]]
|
||||||
|
name = "apotheke"
|
||||||
|
url = "https://apotheke.earth"
|
||||||
|
weight = 3
|
||||||
|
|
||||||
|
[[menu.main]]
|
||||||
|
name = "cv"
|
||||||
|
url = "/pdf/CV.pdf"
|
||||||
|
weight = 4
|
||||||
|
|
||||||
|
[[menu.feed]]
|
||||||
|
name = "contact"
|
||||||
|
url = "mailto:valatsosvasilis@gmail.com"
|
||||||
|
|
||||||
|
[params]
|
||||||
|
custom_css = ["css/theme-override.css"]
|
||||||
|
description = "A simple, minimal website, based on the hugo-classic theme."
|
||||||
|
footer = """
|
||||||
|
[github/aethrvmn](https://github.com/aethrvmn) | [sr.ht:~aethrvmn](https://git.sr.ht/~aethrvmn) | [@aethrvmn@sigmoid.social](https://sigmoid.social/@aethrvmn) | [t.me/aethrvmn](https://t.me/aethrvmn)
|
||||||
|
"""
|
5
layouts/404.html
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{{ partial "header.html" . }}
|
||||||
|
|
||||||
|
404 - You once were found. But now you're lost.
|
||||||
|
|
||||||
|
{{ partial "footer.html" . }}
|
1
layouts/_default/_markup/render-link.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if or (strings.HasPrefix .Destination "http") (strings.HasSuffix .Destination "pdf") }} target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>
|
21
layouts/_default/list.html
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{{ partial "header.html" . }}
|
||||||
|
|
||||||
|
<div class="content-wrapper">
|
||||||
|
{{if not .IsHome }}
|
||||||
|
<h1>{{ .Title | markdownify }}</h1>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ .Content }}
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
{{ $pages := .Pages }}
|
||||||
|
{{ if .IsHome }}{{ $pages = .Site.RegularPages }}{{ end }}
|
||||||
|
{{ range (where $pages "Section" "!=" "") }}
|
||||||
|
<li>
|
||||||
|
<span class="date">{{ .Date.Format "2006/01/02" }}</span>
|
||||||
|
<a href="{{ .RelPermalink }}">{{ .Title | markdownify }}</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{{ partial "footer.html" . }}
|
30
layouts/_default/single.html
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{{ partial "header.html" . }}
|
||||||
|
<div class="article-meta">
|
||||||
|
<h1><span class="title">{{ .Title | markdownify }}</span></h1>
|
||||||
|
{{ with .Params.author }}<h2 class="author">{{ . }}</h2>{{ end }}
|
||||||
|
{{ if .Params.date }}<h2 class="date">{{ .Date.Format "2006/01/02" }}</h2>{{ end }}
|
||||||
|
<p class="terms">
|
||||||
|
{{ range $i := (slice "categories" "tags") }}
|
||||||
|
{{ with ($.Param $i) }}
|
||||||
|
{{ $i | title }}: {{ range $k := . }}<a href="{{ relURL (print "/" $i "/" $k | urlize) }}">{{$k}}</a> {{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{ if .Params.toc }}
|
||||||
|
{{ with .TableOfContents }}
|
||||||
|
<div id="table-of-contents">
|
||||||
|
<h2>Table of Contents</h2>
|
||||||
|
{{ . | safeHTML }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<main>
|
||||||
|
{{ .Content }}
|
||||||
|
<a href="/"> >> Home</a>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
{{ partial "footer.html" . }}
|
13
layouts/_default/terms.html
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{{ partial "header.html" . }}
|
||||||
|
|
||||||
|
<h1>{{ .Title }}</h1>
|
||||||
|
|
||||||
|
<ul class="terms">
|
||||||
|
{{ range .Data.Terms }}
|
||||||
|
<li>
|
||||||
|
<a href="{{ .Page.Permalink }}">{{ .Page.Title }}</a> ({{ .Count }})
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{{ partial "footer.html" . }}
|
1
layouts/partials/foot_custom.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<a rel="me" href="https://sigmoid.social/@aethrvmn"></a>
|
35
layouts/partials/footer.html
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
<footer>
|
||||||
|
{{ partial "foot_custom.html" . }}
|
||||||
|
<!-- Automagically centers images. Original Author Yihui Xie: https://yihui.name -->
|
||||||
|
<script>
|
||||||
|
(function() {
|
||||||
|
function center_el(tagName) {
|
||||||
|
var tags = document.getElementsByTagName(tagName), i, tag;
|
||||||
|
for (i = 0; i < tags.length; i++) {
|
||||||
|
tag = tags[i];
|
||||||
|
var parent = tag.parentElement;
|
||||||
|
// center an image if it is the only element of its parent
|
||||||
|
if (parent.childNodes.length === 1) {
|
||||||
|
// if there is a link on image, check grandparent
|
||||||
|
if (parent.nodeName === 'A') {
|
||||||
|
parent = parent.parentElement;
|
||||||
|
if (parent.childNodes.length != 1) continue;
|
||||||
|
}
|
||||||
|
if (parent.nodeName === 'P') parent.style.textAlign = 'center';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var tagNames = ['img', 'embed', 'object'];
|
||||||
|
for (var i = 0; i < tagNames.length; i++) {
|
||||||
|
center_el(tagNames[i]);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{{ with .Site.Params.footer }}
|
||||||
|
<hr/>
|
||||||
|
{{ . | markdownify }}
|
||||||
|
{{ end }}
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
0
layouts/partials/head_custom.html
Normal file
48
layouts/partials/header.html
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{{ .Site.LanguageCode }}">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
|
||||||
|
<link rel="manifest" href="/images/site.webmanifest">
|
||||||
|
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="{{ if .Description }}{{ .Description }}{{ else }}{{ .Site.Params.Description }}{{ end }}">
|
||||||
|
<title>{{ .Title }} | {{ .Site.Title }}</title>
|
||||||
|
<link rel="stylesheet" href="{{ "/css/style.css" | relURL }}" />
|
||||||
|
<link rel="stylesheet" href="{{ "/css/fonts.css" | relURL }}" />
|
||||||
|
{{ range .Site.Params.custom_css -}}
|
||||||
|
<link rel="stylesheet" href="{{ . | absURL }}">
|
||||||
|
{{- end }}
|
||||||
|
{{ partial "head_custom.html" . }}
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<nav>
|
||||||
|
<ul>
|
||||||
|
{{ $title := lower .Title }}
|
||||||
|
{{ $section := lower .Section }}
|
||||||
|
<li class="pull-left {{ if .IsHome }}current{{ end }}">
|
||||||
|
<a href="{{ .Site.BaseURL }}">~/home</a>
|
||||||
|
</li>
|
||||||
|
{{ range .Site.Menus.main }}
|
||||||
|
{{ $name := lower .Name }}
|
||||||
|
<li class="pull-left {{ if eq $name $title }}current{{ else if eq $section $name }}current{{ else if eq $title (pluralize $name) }}current{{ end }}">
|
||||||
|
<a href="{{ .URL }}" target="{{ if gt .Weight 2 }}_blank{{ end }}">~/{{ lower .Name }}</a>
|
||||||
|
</li>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
{{ range .Site.Menus.feed }}
|
||||||
|
{{ $name := lower .Name}}
|
||||||
|
<li class="pull-right">
|
||||||
|
<a href="{{ .URL }}">~/{{ lower .Name}}</a>
|
||||||
|
</li>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
4
layouts/robots.txt
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# robots.txt
|
||||||
|
User-agent: *
|
||||||
|
Disallow:
|
||||||
|
Disallow: /cgi-bin/
|
34
static/css/fonts.css
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
@import url('https://fonts.googleapis.com/css2?family=GFS+Didot&display=swap');
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-family:
|
||||||
|
'GFS Didot',
|
||||||
|
sans-serif,
|
||||||
|
'Apple Color Emoji',
|
||||||
|
'Segoe UI Emoji',
|
||||||
|
'Segoe UI Symbol';
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports (font-variation-settings: normal) {
|
||||||
|
html { font-family:
|
||||||
|
'GFS Didot',
|
||||||
|
sans-serif,
|
||||||
|
'Apple Color Emoji',
|
||||||
|
'Segoe UI Emoji',
|
||||||
|
'Segoe UI Symbol';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
font-family:
|
||||||
|
-apple-system,
|
||||||
|
BlinkMacSystemFont,
|
||||||
|
"Segoe UI",
|
||||||
|
Helvetica,
|
||||||
|
Arial,
|
||||||
|
sans-serif,
|
||||||
|
"Apple Color Emoji",
|
||||||
|
"Segoe UI Emoji",
|
||||||
|
"Segoe UI Symbol";
|
||||||
|
font-size: 85%;
|
||||||
|
}
|
239
static/css/style.css
Normal file
|
@ -0,0 +1,239 @@
|
||||||
|
/* Dark mode */
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
body {
|
||||||
|
background-color: #2d2a2e;
|
||||||
|
color: #f7f6f3;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
background: #2d2a2e;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #ac9c6d;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
background: #2d2a2e;
|
||||||
|
border-bottom: 2px dotted #EBC3DB;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.article-meta, .menu a {
|
||||||
|
background: #393E41;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
margin: auto;
|
||||||
|
border-top: 1px solid #666;
|
||||||
|
border-bottom: 1px solid #666;
|
||||||
|
}
|
||||||
|
table thead th { border-bottom: 1px solid #666; }
|
||||||
|
th, td { padding: 5px; }
|
||||||
|
tr:nth-child(even) { background: #666 }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Light mode */
|
||||||
|
@media (prefers-color-scheme: light) {
|
||||||
|
blockquote {
|
||||||
|
background: #f9f9f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #613DC1;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
background: #613DC1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.article-meta, .menu a {
|
||||||
|
background: #E8DBC5;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
margin: auto;
|
||||||
|
border-top: 1px solid #666;
|
||||||
|
border-bottom: 1px solid #666;
|
||||||
|
}
|
||||||
|
table thead th { border-bottom: 1px solid #ddd; }
|
||||||
|
th, td { padding: 5px; }
|
||||||
|
tr:nth-child(even) { background: #eee }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: auto;
|
||||||
|
padding: .2em;
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
line-height: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Table of Contents, if wanted
|
||||||
|
|
||||||
|
Add to yaml:
|
||||||
|
|
||||||
|
output:
|
||||||
|
blogdown::html_page:
|
||||||
|
toc: true
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#TableOfContents, #TOC {
|
||||||
|
border: 1px solid #eee;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header and Footer */
|
||||||
|
.menu li { display: inline-block; }
|
||||||
|
.article-meta, .menu a {
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
border-style: dotted;
|
||||||
|
border-width: 1px;
|
||||||
|
margin: 20px 0px 20px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.terms { font-size: .9em; }
|
||||||
|
.menu, .article-meta, footer { text-align: center; }
|
||||||
|
.title { font-size: 1.1em; }
|
||||||
|
footer a { text-decoration: none; }
|
||||||
|
|
||||||
|
.pull-left {
|
||||||
|
float: left
|
||||||
|
}
|
||||||
|
.pull-right {
|
||||||
|
float: right
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Adjust background at your leisure! */
|
||||||
|
header {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 1.75rem;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
header ul,
|
||||||
|
header ol {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none
|
||||||
|
}
|
||||||
|
header nav {
|
||||||
|
padding: 0 0.5rem
|
||||||
|
}
|
||||||
|
|
||||||
|
header a {
|
||||||
|
color: #fff;
|
||||||
|
line-height: 1.75rem;
|
||||||
|
padding: 0 0.5rem
|
||||||
|
}
|
||||||
|
header a:hover,
|
||||||
|
header .current a {
|
||||||
|
color: #fff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code Boxes */
|
||||||
|
pre {
|
||||||
|
border: 2px solid #EBC3DB;
|
||||||
|
padding: 1em;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
pre code { background: none; }
|
||||||
|
|
||||||
|
code {
|
||||||
|
background-color: light-dark(#D6D6D6, #888);
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 0.2em;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Images, tables, misc. */
|
||||||
|
img, iframe, video {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
hyphens: auto;
|
||||||
|
max-width: 650px;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
line-height: 1.7em;
|
||||||
|
hyphens: auto;
|
||||||
|
display: block;
|
||||||
|
font-size: 1.1em;
|
||||||
|
}
|
||||||
|
main a {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
border-left: 5px solid #ccc;
|
||||||
|
padding: 3px 1em 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper {
|
||||||
|
padding: 0px 12px 0px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#personal {
|
||||||
|
min-width: 40px;
|
||||||
|
max-width: 200px;
|
||||||
|
float: right;
|
||||||
|
padding: 10px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#table-of-contents {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Small devices, phones */
|
||||||
|
@media only screen and (min-width : 480px) {
|
||||||
|
#foxy {
|
||||||
|
min-width: 40px;
|
||||||
|
float: center;
|
||||||
|
padding: 10px 10px 10px 20px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 在大屏幕上应用特定样式 */
|
||||||
|
@media screen and (min-width: 768px) {
|
||||||
|
#table-of-contents {
|
||||||
|
position: fixed; /* 固定定位,使其悬浮在页面上 */
|
||||||
|
top: 50%; /* 上边距为50% */
|
||||||
|
right: 15px; /* 右边距为0,将其放在右侧 */
|
||||||
|
transform: translateY(-50%); /* 使用transform来垂直居中 */
|
||||||
|
background-color: #f0f0f0; /* 设置背景颜色 */
|
||||||
|
padding: 10px; /* 添加一些内边距以增加可读性 */
|
||||||
|
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); /* 添加阴影效果 */
|
||||||
|
width: 250px; /* 设置宽度 */
|
||||||
|
max-height: 70vh; /* 设置最大高度为视口的70% */
|
||||||
|
overflow-y: auto; /* 添加垂直滚动条 */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
5
static/css/theme-override.css
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
footer { font-size: 90%; }
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
BIN
static/images/android-chrome-192x192.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
static/images/android-chrome-512x512.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
static/images/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
static/images/favicon-16x16.png
Normal file
After Width: | Height: | Size: 187 B |
BIN
static/images/favicon-32x32.png
Normal file
After Width: | Height: | Size: 234 B |
BIN
static/images/favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
static/images/me.jpg
Normal file
After Width: | Height: | Size: 105 KiB |
BIN
static/images/partywizard.gif
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
static/images/screenshot.png
Normal file
After Width: | Height: | Size: 358 KiB |
BIN
static/images/tn.png
Normal file
After Width: | Height: | Size: 127 KiB |