From d1ebc1e933757232953a4d799a18dbfd52d48577 Mon Sep 17 00:00:00 2001 From: inference Date: Tue, 9 May 2023 00:06:24 +0100 Subject: [PATCH 1/2] Remove non-asset branch files. --- README.md | 32 -- about.html | 413 ------------------ blog.html | 69 --- blog/foss_is_working_against_itself.html | 170 ------- blog/systemd_insecurity.html | 116 ----- blog/the_chromium_monopoly.html | 101 ----- ...usted_the_issue_with_decentralisation.html | 135 ------ contact.html | 119 ----- contact/briar.html | 48 -- contact/session.html | 48 -- contact/signal.html | 49 --- contact/xmpp.html | 72 --- index.html | 36 -- inf.css | 208 --------- key.html | 126 ------ license/BSD-3-Clause-Clear.txt | 12 - source.html | 90 ---- 17 files changed, 1844 deletions(-) delete mode 100644 README.md delete mode 100644 about.html delete mode 100644 blog.html delete mode 100644 blog/foss_is_working_against_itself.html delete mode 100644 blog/systemd_insecurity.html delete mode 100644 blog/the_chromium_monopoly.html delete mode 100644 blog/untrusted_the_issue_with_decentralisation.html delete mode 100644 contact.html delete mode 100644 contact/briar.html delete mode 100644 contact/session.html delete mode 100644 contact/signal.html delete mode 100644 contact/xmpp.html delete mode 100644 index.html delete mode 100644 inf.css delete mode 100644 key.html delete mode 100644 license/BSD-3-Clause-Clear.txt delete mode 100644 source.html diff --git a/README.md b/README.md deleted file mode 100644 index 7b3b1fa..0000000 --- a/README.md +++ /dev/null @@ -1,32 +0,0 @@ -

Website

-

Inferencium website.

-
-
-

Licensing

-

All content is licensed under BSD-3-Clause-Clear license*.
-
-*Exceptions:
-

    -
  1. All content outside of code, including personal content such as blog posts, is copyrighted and -cannot be distributed or modified without explicit consent from Inferencium.
  2. -
-
-
-

Security

-

All files are checked for security issues; however, it is always the user's responsibility to -audit the code before installing and/or executing it.
-
-Inferencium takes no responsibility for any security issues which may arise due to usage of this -repository.

-
-
-

Branches

-

dev

-

Development branch. All pre-alpha development and alpha testing happens here.
-
-

beta

-

Beta branch. All beta testing happens here.

-
-

stable

-

Stable branch. Complete and stable versions are stored here.
-
diff --git a/about.html b/about.html deleted file mode 100644 index 9a27dfd..0000000 --- a/about.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - - - - - - - - - - - Inferencium - About - - - - - -

- - -

About

-
-
-
- - -

Table of Contents

- -
-
-
- - -

About Me

-

I am Jake Winters, also known by my pseudonym "Inference", a cybersecurity researcher based in - United Kingdom.
- I am the founder, lead developer, and administrator, of Inferencium.
- All opinions are my own, and are not necessarily shared with projects or people I am - affiliated with.
-
-

I write about my research and experience in cybersecurity and also physical security. - Most of my postings are security-related, but I occasionally post about other aspects of my - life.

-
-

I am an open source advocate for the preservation and modifiability of source code. I - believe source code should be considered human knowledge as much as past knowledge and - teachings were; it is how modern humanity survives and runs.
- Source code being modifiable allows it to be adapted for use by anyone, whether to add - features, harden it for increased security and/or privacy, or provide accessibility for - disabled users.
- I am also a modular design advocate for the ability to securely and robustly make changes to - hardware and software without the entire system being affected.

-
-

If you want to contact me for any reason, you can use my - contact methods.

-
-
-
- -

Recommendations

-
- -

Hardware

-
-

Smartphone

-
- - - - - - - - - - - - -
TypeHardwareDescriptionSource model
-
- (License - SPDX)
Smartphone
-
- Google Pixel
Google Pixel devices are the best Android devices available on the market for - security and privacy.
-
- They allow locking the bootloader with a - custom Android Verified Boot (AVB) key in order to preserve security and privacy - features when installing a custom operating system, such as - verified boot which verifies that the OS has not been corrupted or tampered with, - and - rollback protection which prevents an adversary from rolling back the OS or - firmware version to a previous version with known security vulnerabilities.
-
- They also include a - hardware security module (Titan M2, improving on the previous generation - Titan M) which is extremely resistant to both remote and physical attacks due to - being completely isolated from the rest of the system, including the operating system. - Titan M2 ensures that the device cannot be remotely compromised by requiring the side - buttons of the device to be physically pressed for some sensitive operations. Titan M2 - also takes the role of - Android StrongBox Keymaster, - a hardware-backed Keystore containing sensitive user keys which are unavailable to - the OS or apps running on it without authorisation from Titan M2 itself. - Insider attack resistance ensures that Titan M2 firmware can be flashed only if the - user PIN/password is already known, making it impossible to backdoor the device without - already knowing these secrets.
-
- Google Pixel device kernels are compiled with - forward-edge control-flow integrity and - backward-edge control-flow integrity to prevent code reuse attacks against the - kernel. MAC address randomisation is - implemented well, along with minimal probe requests and randomised initial sequence - numbers.
-
- Google releases - guaranteed monthly security updates, ensuring Google Pixel devices are up-to-date - and quickly protected against security vulnerabilities.
-
- Pixel 6-series and 7-series devices are a large improvement over the already very - secure and private previous generation Pixel devices. They replace ARM-based Titan M - with RISC-V-based Titan M2, reducing trust by removing ARM from the equation. Titan M2 - is more resiliant to attacks than Titan M, and is - AVA_VAN.5 certified, the highest level of vulnerability assessment. Google's - in-house Tensor SoC includes Tensor Security Core, further improving device security.
-
- Pixel 6-series and 7-series devices are supported for a - minimum of 5 years from launch, an increase from previous generations' - support lifecycles of 3 years.
-
-
-
- -

Software

-
-

Desktop

-
- - - - - - - - - - - - - - - - - - - -
TypeSoftwareDescriptionSource model
-
- (License - SPDX)
Operating system
-
- Gentoo Linux
Gentoo Linux is a highly modular, source-based Linux-based operating system which - allows vast customisation to tailor the operating system to suit your specific needs. - There are many advantages to such an operating system, with the most notable being the - ability to optimise the software for security, privacy, performance, or power usage; - however, there are effectively unlimited other use cases, or a combination of multiple - use cases.
-
- I have focused on security hardening and privacy hardening, placing performance below - those aspects, although my system is still very performant. Some of the hardening I - apply includes - stack protection, - signed integer overflow wrapping, and GrapheneOS' - hardened_malloc memory allocator.
-
- You can find my personal Gentoo Linux configurations in my personal - configuration respository.
Open source
-
- (GPL-2.0-only)
Web browser
-
- Chromium
Chromium is a highly secure web browser which is often ahead of other web browsers - in security aspects. It has a dedicated security team and a very impressive - security brag sheet. - Chromium's security features include a strong - multi-layer sandbox, - strong site isolation, - Binding Integrity memory hardening, and - control-flow integrity (CFI).Open source
-
- (BSD-3-Clause)
-
-
-

Smartphone

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeSoftwareDescriptionSource model
-
- (License - SPDX)
Operating system
-
- GrapheneOS
GrapheneOS is a security-hardened, privacy-hardened, secure-by-default - Android-based operating system which implements extensive, systemic security and privacy - hardening to the Android Open Source Project used as its base codebase. Its hardening - includes closing gaps for apps to access sensitive system information, a secure app - spawning feature which avoids sharing address space layout and other secrets AOSP's - default Zygote app spawning model would share, - hardened kernel, hardened memory allocator - (hardened_malloc) to protect against common memory corruption vulnerabilties, - hardened Bionic standard C library, - stricter SELinux policies, and local and remote hardware-backed attestation - (Auditor) to ensure the OS has not been corrupted or tampered with.
-
- GrapheneOS only supports - high security and well-supported devices which receive full support from their - manufacturers, including firmware updates, long support lifecycles, secure hardware, and - overall high security practices.
-
- For an extensive list of features GrapheneOS provides, visit its - official features list which provides extensive documentation.
Open source
-
- (MIT)
Web browser
-
- Vanadium
Vanadium is a security-hardened, privacy-hardened Chromium-based web browser which - utilises GrapheneOS' operating system hardening to implement stronger defenses to the - already very secure Chromium web browser. Its hardening alongside Chromium's base - security features includes - disabling JavaScript just-in-time (JIT) compilation by default, - stubbing out the battery status API to prevent abuse of it, and - always-on Incognito mode as an option.
-
- Vanadium's source code, including its Chromium patchset, can be found in its - official repository.
Open source
-
- (GPL-2.0-only)
Messenger
-
- Molly
Molly is a security-hardened, privacy-hardened - Signal client which hardens Signal by using a variety of - unique features, allowing - locking the database when not in use, and - utilising Android StrongBox to protect user keys using the device's hardware - security module.
-
- Molly is available in - 2 flavours:
-
    -
  • Molly, which includes the same proprietary Google code as Signal to support - more features.
  • -
    -
  • Molly-FOSS, which removes the proprietary Google code to provide an - entirely open-source client.
  • -
Open source
-
- (GPL-3.0-only)
Messenger
-
- Conversations
Conversations is a well-designed Android - XMPP client which serves as the de facto XMPP reference client and has great - usability.Open source
-
- (GPL-3.0-only)
-
-
-
- - - diff --git a/blog.html b/blog.html deleted file mode 100644 index 1cf7ca5..0000000 --- a/blog.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Blog - - - - - - - - - -

Blog

-
-
-
- - -

Table of Contents

- -
-
- - - diff --git a/blog/foss_is_working_against_itself.html b/blog/foss_is_working_against_itself.html deleted file mode 100644 index b1c3754..0000000 --- a/blog/foss_is_working_against_itself.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Blog - FOSS is Working Against Itself - - - - - - - - -

Blog - #0

-
-

FOSS is Working Against Itself

-
-

Posted: 2022-01-27 (UTC+00:00)

-

Updated: 2022-11-09 (UTC+00:00)

-
- -

Introduction

-

The world has become a dangerous, privacy invading, human rights stripping, totalitarian place; -in order to combat this, people are joining a growing, and dangerous, trend, which I will refer to -in this post as the "Free and Open Source (FOSS) movement". With that stated, I will now debunk the -misinformation being spread inside of this extremely flawed movement.

-
-

The -FOSS movement is an attempt to regain -privacy and -control over our devices and data, but the entire concept of FOSS-only, at the current time, is -severely, and dangerously, flawed. What the FOSS community does not seem to understand is the fact -that most FOSS software cares not about -security. -"Security"; keep that word in mind as you progress through this article. What is security? Security -is being safe and secure from adversaries and unwanted consequences; security protects our rights -and allows us to protect ourselves. Without security, we have no protection, and without protection, -we have a lack of certainty of everything else, including privacy and control, which is what the -FOSS movement is seeking.

-
-

FOSS projects rarely take security into account; they simply look at the surface level, rather -than the actual -root cause of the issues they are attempting to fight against. In this case, the focus is on -privacy and control. Without security mechanisms to protect the privacy features and the ability to -control your devices and data, it can be stripped away as if it never existed in the first place, -which, inevitably, leads us back to the beginning, and the cycle repeats. With this -ideology, privacy and control will *never* be achieved. There is no foundation to build privacy -or control upon. It is impossible to build a solid, freedom respecting platform on this model.

-
-

Example: Smartphones

-

A FOSS phone, especially so-called -"Linux phones" are completely -detrimental to privacy and control, because they do not have the security necessary to enforce that -privacy. -Unlocked bootloaders prevent the device from -verifying the integrity of the boot chain, including the OS, meaning any adversary, whether a -stranger who happens to pick up the device, or a big tech or government entity, can simply inject -malicious code into your software and you wouldn't have any idea it was there. If that's not enough -of a backdoor for you to reconsider your position, how about the trivial -evil maid and data extraction attacks which could be executed on your device, without coercion? -With Android phones, this is bad enough to completely break the privacy and control the FOSS -movement seeks, but "Linux phones" take it a step further by implementing barely any security, if -any at all. -Privilege escalation is trivial to achieve on any Linux system, which is the reason Linux -hardening strategies often include restricting access to the root account; if you -root your Android phone, or use a "Linux phone", you've already destroyed the security model, -and thus privacy and control model you were attempting to achieve. Not only are these side effects -of FOSS, so is the absolutely illogical restriction of not being able to, or making it unnecessarily -difficult to, install and update critical components of the system, such as proprietary -firmware, which just so happens to be almost all of them. "Linux phones" are not as free as -they proclaim to be.

-
-

You may ask "What's so bad about using -LineageOS?", to which I answer with "What's not bad about it?".
-
-- LineageOS uses -debug builds, not safe and secure release builds.
-- LineageOS requires an unlocked bootloader. Even when installed on devices which support custom -Android Verified Boot (AVB) keys, the bootloader cannot be locked due to lack of the OS being -signed.
-- LineageOS does not install critically important firmware without manual flashing, requiring users -to perform a second update to install this firmware; this likely causes users to ignore the -notification or miss firmware updates.
-- LineageOS does not implement -rollback protection, meaning any adversary, from a stranger who physically picks up the device, -to a goverment entity remotely, can simply downgrade the OS to a previous version in order to -exploit known -security vulnerabilities.
-
-LineageOS is not the only Android OS (commonly, and incorrectly, referred to as a "ROM") with such -issues, but it is one of the worst. The only things such insecure OSes can provide you are -customisation abilities, and a backdoor to your data. They are best suited as a development OS, not -a production OS.

-
-

Solution

-

What can you do about this? The answer is simple; however, it does require you to use logic, -fact, and evidence, not emotion, which is a difficult pill for most people to swallow. Use your -adversaries' weapons against them. The only way to effectively combat the privacy invasion and lack -of control of our devices and data is to become a -renegade and not take sides. Yes, that means not taking sides with the closed source, -proprietary, big tech and government entities, but it also means not taking sides with any -FOSS entities. The only way to win this war is to take *whatever* hardware and software you can, and -use it tactically.

-
-

The only solution for phone security, privacy, and control, is to use a Google Pixel (currently, -Pixel 4a-series or newer) running -GrapheneOS. Google Pixel phones allow you complete bootloader freedom, including the -ability to lock the bootloader after flashing a custom OS -(GrapheneOS includes a custom OS signing key to allow locking the bootloader and enabling verified -boot to prevent -malware persistence, evil maid attacks, and boot chain -corruption), -long device support lifecycles (minimum 3 years for Pixel 4a-series to Pixel 5a, minimum 5 -years for Pixel 6-series and newer), and -guaranteed monthly security updates for the entire support timeframe of the devices.

-
-

Conclusion

-

Use what you can, and do what you can. By neglecting security, you are, even if unintentionally, -neglecting exactly what you are trying to gain; privacy and control.

-
-
- - - diff --git a/blog/systemd_insecurity.html b/blog/systemd_insecurity.html deleted file mode 100644 index 7edeee5..0000000 --- a/blog/systemd_insecurity.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Blog - systemd Insecurity - - - - - - - - -

Blog - #1

-
-

systemd Insecurity

-
-

Posted: 2022-01-29 (UTC+00:00)

-

Updated: 2022-11-14 (UTC+00:00)

-
-
- -

Anyone who cares about security may want to switch from systemd as soon as possible; its lead -developer doesn't care about your security at all.

-
-
-

Issue #0 - Against CVE Assignment

-
-

Poettering:
-"You don't assign CVEs to every single random bugfix we do, do you?"

-
-

My thoughts:
-Yes, if they're security-related.

-
-

Source:
-systemd GitHub Issue 5998

-
-
-
-

Issue #1 - CVEs Are Not Useful

-
-

Poettering:
-"Humpf, I am not convinced this is the right way to announce this. We never did that, and half the -CVEs aren't useful anyway, hence I am not sure we should start with that now, because it is either -inherently incomplete or blesses the nonsensical part of the CVE circus which we really shouldn't -bless..."

-
-

My thoughts:
-CVEs are supposed to be for security, and a log of when they were found and their severity, so yes, -it *is* the correct way to announce it. It seems as if over 95 security-concious people think the -same.

-
-

Source:
-systemd GitHub Issue 6225

-
-
-
-

Issue #2 - Security is a Circus

-
-

Poettering:
-"I am not sure I buy enough into the security circus to do that though for any minor issue..."

-
-

Source:
-systemd GitHub Issue 5144

-
-
-
-

Issue #3 - Blaming the User

-
-

Poettering:
-"Yes, as you found out "0day" is not a valid username. I wonder which tool permitted you to create -it in the first place. Note that not permitting numeric first characters is done on purpose: to -avoid ambiguities between numeric UID and textual user names.
-
-systemd will validate all configuration data you drop at it, making it hard to generate invalid -configuration. Hence, yes, it's a feature that we don't permit invalid user names, and I'd consider -it a limitation of xinetd that it doesn't refuse an invalid username.
-
-So, yeah, I don't think there's anything to fix in systemd here. I understand this is annoying, but -still: the username is clearly not valid."

-
-

My thoughts:
-systemd was the thing that allowed root access just because a username started with a number, then -Poettering blamed the user.

-
-

Source:
-systemd GitHub Issue 6237

-
-
- - - diff --git a/blog/the_chromium_monopoly.html b/blog/the_chromium_monopoly.html deleted file mode 100644 index f7cbb8b..0000000 --- a/blog/the_chromium_monopoly.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Blog - The Chromium Monopoly - - - - - - - - -

Blog - #3

-
-

The Chromium Monopoly

-
-

Posted: 2022-12-20 (UTC+00:00)

-

Updated: 2022-12-20 (UTC+00:00)

-
- -

Introduction

-

It's no secret that I'm an advocate of Chromium and will use it for the foreseeable future. It is -a highly secure web browser which provides strong protection against malicious wesbites and the code -they run, and, while I am not too interested in high performance, it is a very performant web -browser, despite its security features.
-
-However, the intention of this blog post is not to promote Chromium for any reason, but rather show -an issue with it; an issue which is larger than may be realised by web-surfing users. That issue is -the large monopoly Chromium has in the web browser market; -Chromium's market share is around 65%, -making it the largest slice of the cake. The issue becomes even deeper and more problematic when you -realise that the second-place web browser, Safari, has only an 18% market share.
-
-The main issue with this type of monopoly is the large amounts of power and influence it gives -Chromium, which can lead to, and is leading to, excessive authority of how the web should work, and -the standards which are implemented, which all other web browsers must comply with in order to have -a fully working web.

-
-

Solution

-

In order to combat the Chromium monopoly, users typically go over to Chromium's classical rival, -Firefox. However, Firefox is dying and has lost almost all of its userbase over the last 2-3 years; -the reason for this is a tale of selfishness and greed, caused by Firefox's parent company to go off -course and lose its original goal of providing a freedom-respecting, open web. Mozilla caused -self-inflicted damage which it cannot recover from, and, to me, is already dead. The vultures are -simply waiting for the final, small group of users to abandon the project before Firefox finally -succumbs to its own demise; the demise it caused itself.
-
-If attempting to increase Firefox's market share to previous levels will be in vain, what is the -solution? How can we prevent Chromium from completely taking over the web and dictating everything -we do and how the web should be designed and used?
-To find the answer to these important but difficult questions, we must go to the alternatives which -still have a fighting chance. Safari, developed by Apple, is based on WebKit, an engine completely -independent of Chromium and Firefox.
-
-Just using a non-Chromium-based web browser is not enough; the choice must already have enough -market share to still be relevant, and be capable of gaining new users. Safari, being preinstalled -on Apple devices including iPhone and Mac, already has a great advantage over Firefox. Apple -devices, especially iPhone, is abundant in streets everywhere on the planet. Safari is the default -choice for Apple users and has a large market share simply because of how widespread it is. -Exploiting this fact is the only way to gain more market share and take down Chromium before it is -too late; the clock is ticking, and Apple are the only ones preventing Chromium from completely -taking over the web. Backing Safari instead of Firefox will keep the WebKit market share from -falling to a critically low percentage, making it impossible to make a comeback, as has happened to -Firefox. Sometimes, directly supporting a political party is not the way to get them into power, -supporting the second-place alternative is, in order to keep the one you don't want out of power, -giving the party you do want in power an advantage. To win this war against the Chromium monopoly, -we must be tactical, not emotional. -

-
-

Conclusion

-

Supporting Safari is the first step in supporting WebKit and promoting usage of the independent -web engine. Buying time while supporting and contributing to WebKit browser projects is the best and -only chance anyone has at competing with Chromium, and preventing it from increasing its dominance -to unstoppable levels, at which point there will be no return. -
-
- - - diff --git a/blog/untrusted_the_issue_with_decentralisation.html b/blog/untrusted_the_issue_with_decentralisation.html deleted file mode 100644 index 9e76a11..0000000 --- a/blog/untrusted_the_issue_with_decentralisation.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Blog - Untrusted: The Issue with Decentralisation - - - - - -

- - -

Blog - #2

-
-

Untrusted: The Issue with Decentralisation

-
-

Posted: 2022-06-30 (UTC+00:00)

-

Updated: 2022-10-29 (UTC+00:00)

-
- -

Introduction

-

A recent trend is seeing people move towards decentralised services and platforms. While this is -reasonable and I can understand why they are doing such a thing, they are seemingly doing it without -thinking about the possible consequences of doing so. The issue with decentralisation is trust; -there is no way to pin a key to a specific person, to ensure that you are communicating with the -same person you are supposed to be communicating with. In this article, I will discuss some of the -security issues with the decentralised model.

-
-

Example: Messaging

-

When it comes to messaging your contacts on a centralised platform, such as Twitter or Facebook, -the keys are pinned to that user account, using the user's password as the method of identification. -This approach makes it impossible to log in as a specific user without their password, should it be -strong enough to not be guessed, whether via personal guessing or exhaustive search. The trust in -this centralised model is the high security these platforms have. It is extremely unlikely that -anyone other than a government would be able to access the accounts stored on such platforms' -servers, which makes the physical security trusted. As for remote security, should a user's password -be compromised, it can typically be reset if the user can prove they are the owner of the account -via some form of identification; this is where the trust issue of decentralisation occurs.

-
-

In the decentralised model, keys are kept on the users' devices, in their possession. While this -soveriegnty is welcomed, it introduces a critical flaw in the security of communicating with anyone -via a decentralised platform; should a user's device be lost, stolen, or otherwise compromised, -there is no way to know it happened and what the new keys really are, and if the same user generated -those keys. There is no centralised point where anyone can go to check if the compromised user has -updated their keys, which means there must already have been at least one other secure channel in -place before the compromise occurred. Even if there was, the security of endpoint devices, -especially typical users, is much lower than a well protected corporation's servers, making even -those secure channels questionable to trust. Should all secure channels be compromised, there is -literally no way to know if the person you are communicating with is the real person or an imposter; -there is no root of trust. This point is fatal; game over. The only way to establish trust again -would be to physically meet and exchange keys.

-
-

Solution

-

I'll cut to the chase; there isn't a definitive solution. The best way to handle this situation -is to design your threat model and think about your reasoning for avoiding centralised platforms. Is -it lack of trust of a specific company? Is it the possibility of centralised platforms going -offline? Only by thinking logically and tactically can you solve both the issue of centralisation -and decentralisation. Often, one size fits all is never the correct approach, nor does it typically -work.

-
-

In order to avoid the issue of loss of trust due to lack of root of trust, all users' keys must -be stored in a centralised location where all contacts are able to go to in case of compromise or to -periodically check the state of keys and to see if they have changed. This centralised location -requires some sort of identification to ensure that the user changing their keys is really the same -person who initially signed up for the platform, using a trust-on-first-use (TOFU) model, which -isn't much different than what today's centralised platforms are already doing; the only difference -is who is controlling the location; trust is still present and required.

-
-

In order to have a root of trust, I have posted my keys to my website, which is protected by -multiple layers of security:
-
-0. I have provided identification to my domain name registrar, to ensure I can access the website I -rightfully own, should it be compromised, by providing identification to the domain name -registrar.
-
-1. I have provided identification to my virtual private server host, to ensure I can access the -virtual private servers I rightfully rent, should they be compromised, by providing identification -to the virtual private server host.
-
-2. I have pinned my website to a globally trusted certificate authority, Let's Encrypt, which is a -trusted party to manage TLS certificates and ensure ownership of the domain when connecting to -it.
-
-3. I have enabled DNSSEC on my domain, so it is extremely difficult to spoof my domain to make you -believe you're connecting to it when you're actually connecting to someone else's.
-
-While not the most secure implementation of a root of trust, it is the most secure implementation -currently available to me. While the domain name registrar or virtual private server host could -tamper with my domain and data, they are the most trustworthy parties available. In its current -form, decentralisation would make this impossible to implement in any form.

-
-

Conclusion

-

Do not demand anonymity; demand privacy and control of your own data. Complete anonymity makes it -impossible to have a root of trust, and is typically never necessary. It is possible for someone -else to hold your keys, without them taking control of them and dictating what you can and cannot do -(Twitter's misinformation policy comes to mind). If a platform is not listening to your or other -people's concerns about how it is being run, show those platforms that you will not stand for it, -and move to a different one. This may not be ideal, but it's not different to moving from one -decentralised platform to another. Centralisation is not what is evil, the people in control of the -platforms are what is potentially evil. Carefully, logically, and tactically, choose who to trust. -Decentralisation doesn't do much for trust when you must still trust the operator of the -decentralised platform, and are still subject to the possibly draconian policies of that -decentralised platform. If government is what you are trying to avoid, there is no denying it is -feasibly impossible to avoid it; a government could always take down the decentralised platform, -forcing you to move to another, and they could also take down the centralised key storage site -mentioned earlier in this article. A government is not something you can so easily avoid. -Decentralisation does not solve the government issue. In order to live a happy, fun, and fulfilled -life, while protecting yourself against logical threats, there are only two words you must live by: -Threat model.

-
-
- - - diff --git a/contact.html b/contact.html deleted file mode 100644 index ff697bb..0000000 --- a/contact.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Contact - - - - - - - - -

Contact

-
-
-
- - -

Table of Contents

- -
-
-
- - - - Notes: -

- I have phased out usage of obsolete, insecure PGP for all contact methods.

-

- I have phased out usage of email, including TLS-encrypted email.

-
-
-
-

End-to-end Encrypted Contact Methods

-
-

Preferred

-

Whenever possible, use the following contact methods; they allow verification to mitigate man-in-the-middle - attacks, have high security, and reasonable privacy.
-
-

Use the - keys for each contact method to verify my devices.
- Note: Verification does not verify a person, only their devices, and can be defeated via coercion or other - force.

-
-

Signal
-
- +447549902964


-

XMPP
-
- inference@inferencium.net - (Key)

-
-
- - -

Metadata-free

-

If metadata leakage is an issue for you, you can use the following contact methods.
-
- Note: These services do not have verification functionality and will be treated as less secure; unless - you really need to use these services, use a preferred method instead.

-
-

Briar
-
- Unavailable


-

Session
-
- Unavailable

-
-
- - - - - - diff --git a/contact/briar.html b/contact/briar.html deleted file mode 100644 index 706cd9a..0000000 --- a/contact/briar.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Contact - Briar - - - - - -
- - -

Contact

-
-

Briar

-
-

Updated: 2022-11-15 (UTC+00:00)

-
- - - Unavailable - -
-
- - - diff --git a/contact/session.html b/contact/session.html deleted file mode 100644 index 4f5c9ed..0000000 --- a/contact/session.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Contact - Session - - - - - - - - -

Contact

-
-

Session

-
-

Updated: 2022-11-15 (UTC+00:00)

-
- - - Unavailable - -
-
- - - diff --git a/contact/signal.html b/contact/signal.html deleted file mode 100644 index 8077962..0000000 --- a/contact/signal.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Contact - Signal - - - - - - - - -

Contact

-
-

Signal

-
-

Updated: 2022-11-14 (UTC+00:00)

-
-
- - - +447549902964 - -
-
- - - diff --git a/contact/xmpp.html b/contact/xmpp.html deleted file mode 100644 index f7ce67f..0000000 --- a/contact/xmpp.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Contact - XMPP - - - - - - - - -

Contact

-
-

XMPP

-
-

Updated: 2022-12-05 (UTC+00:00)

-
- -

Whenever possible, open the links to pin the fingerprint directly from this webpage. If - that is not possible, manually verify the fingerprints.

-
-
-

inference@inferencium.net

-

Key

-
Smartphone
- - 1bd03c6a 5e011655 2fafd697 da4fce70 63de5a83 a264a34a fcce78fe 6b06820c - -
- xmpp:inference@inferencium.net?omemo-sid-1586888206= - 1bd03c6a5e0116552fafd697da4fce7063de5a83a264a34afcce78fe6b06820c -
-
-
Desktop
- - bf2aa069 2bb90210 aee7e17c e3d90127 cfe3502a 6450f8ab e76dbbb0 e5864b7a - -
- xmpp:inference@inferencium.net?omemo-sid-336821633= - bf2aa0692bb90210aee7e17ce3d90127cfe3502a6450f8abe76dbbb0e5864b7a -
-
-
- - - diff --git a/index.html b/index.html deleted file mode 100644 index dd8aa89..0000000 --- a/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - Inferencium - - - - - - - - - - - diff --git a/inf.css b/inf.css deleted file mode 100644 index b95acf6..0000000 --- a/inf.css +++ /dev/null @@ -1,208 +0,0 @@ -/* Inferencium - Website - CSS */ - -/* Copyright 2022-2023 Jake Winters */ -/* SPDX-License-Identifier: BSD-3-Clause-Clear */ - -/* Version: 7.0.0.17 */ - - -h1, .h1 { - font-family: Roboto, sans-serif; - font-size: 26px; - text-align: center; - color: #ffffff; -} - -h2, .h2 { - font-family: Roboto, sans-serif; - font-size: 22px; - color: #ffffff; -} - -h3, .h3 { - font-family: Roboto, sans-serif; - font-size: 20px; - color: #ffffff; -} - -h4, .h4 { - font-family: Roboto, sans-serif; - font-size: 18px; - color: #ffffff; -} - -h5, .h5 { - font-family: Roboto, sans-serif; - font-size: 16px; - color: #ffffff; -} - -h6, .h6 { - font-family: Roboto, sans-serif; - font-size: 16px; - color: #ffffff; -} - -body { - padding-top: 40px; - margin-left: min(400px, 45vw); - margin-right: min(150px, 12vw); - font-family: Roboto, sans-serif; - font-size: 20px; - background-color: #262626; -} - -.body-link { - font-family: Roboto, sans-serif; - font-size: 18px; - color: #ffffff; - text-decoration: underline; -} - -p { - font-family: Roboto, sans-serif; - font-size: 18px; - color: #ffffff; -} - -code { - font-size: 18px; - color: #ffffff; -} - -a { - font-family: Roboto, sans-serif; - color: #000000; - text-decoration: none; -} - -ul { - list-style: none; -} - -li { - font-family: Roboto, sans-serif; - font-size: 18px; - color: #ffffff; -} - -ul li::before { - content: "\25AA"; - margin-left: -1em; - display: inline-block; - width: 1em; - font-weight: bold; - color: #ffffff; -} - -table, th, td { - border: 2px solid; - border-collapse: collapse; - border-color: #ffffff; - padding: 15px; - font-family: Roboto, sans-serif; - font-size: 18px; - color: #ffffff; -} - -.table-title { - font-family: Roboto, sans-serif; - font-size: 18px; - color: #ffffff; - font-weight: bold; - text-align: center; -} - -.table-main { - font-family: Roboto, sans-serif; - font-size: 18px; - color: #ffffff; - text-align: center; -} - -.table-link { - font-family: Roboto, sans-serif; - font-size: 18px; - color: #ffffff; - text-decoration: underline; -} - -.sidebar { - height: 100%; - width: 250px; - position: fixed; - left: 0; - top: 0; - padding-top: 55px; - background-color: #909090; - text-align: center; -} - -.sidebar div { - padding: 8px; - font-family: Roboto, sans-serif; - font-size: 24px; - display: block; -} - -.title { - padding: 8px; - font-family: Roboto, sans-serif; - font-size: 32px; -} - -.logo-small { - transform: translate(0px, 13px); -} - -strong { - color: #ffffff; -} - -@media (max-width: 600px) { - - .sidebar { - width: 100vw; - height: auto; - font-size: 0px; - padding-top: 5px; - } - - .sidebar div { - font-size: min(max(7vw, 20px), 30px); - display: inline-block; - } - - .sidebar img, .sidebar .title { - display: none; - } - - h2 { - text-align: center; - } - - h3 { - text-align: center; - } - - h4 { - text-align: center; - } - - h5 { - text-align: center; - } - - h6 { - text-align: center; - } - - .update_date { - text-align: center; - } - - body { - margin: 15px; - } - -} diff --git a/key.html b/key.html deleted file mode 100644 index 1c61091..0000000 --- a/key.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Key - - - - - - - - -

Key

-
-
-
- - -

Table of Contents

- -
-
-
- -

Note: Verification does not verify a person, only their devices, and can be defeated via coercion or other - force.

-
-

End-to-end Encrypted Contact Methods

-
-

XMPP

-
-

Updated: 2023-01-13 (UTC+00:00)

-
-

Whenever possible, open the links to pin the fingerprints directly from this webpage. If - that is not possible, manually verify the fingerprints.

-
-

inference@inferencium.net

-
Key #0
- - 1bd03c6a 5e011655 2fafd697 da4fce70 63de5a83 a264a34a fcce78fe 6b06820c - -
- xmpp:inference@inferencium.net?omemo-sid-1586888206= - 1bd03c6a5e0116552fafd697da4fce7063de5a83a264a34afcce78fe6b06820c -
-
-
Key #1
- - bf2aa069 2bb90210 aee7e17c e3d90127 cfe3502a 6450f8ab e76dbbb0 e5864b7a - -
- xmpp:inference@inferencium.net?omemo-sid-336821633= - bf2aa0692bb90210aee7e17ce3d90127cfe3502a6450f8abe76dbbb0e5864b7a -
-
-
-
-

File/Git Signing

-
-

SSH

-
-

Updated: 2023-01-13 (UTC+00:00)

-
-
Fingerprint
- - SHA256:9Pl0nZ2UJacgm+IeEtLSZ4FOESgP1eKCtRflfPfdX9M - -
-
Key
- - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINs8UH2hVmNSg0qKig/9ZQt07IuOHsorRfw1doEgMuJ8 - -
-
- - - diff --git a/license/BSD-3-Clause-Clear.txt b/license/BSD-3-Clause-Clear.txt deleted file mode 100644 index 96fc531..0000000 --- a/license/BSD-3-Clause-Clear.txt +++ /dev/null @@ -1,12 +0,0 @@ -The Clear BSD License - -Copyright (c) 2022-2023 Jake Winters -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted (subject to the limitations in the disclaimer below) provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Inferencium nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/source.html b/source.html deleted file mode 100644 index c4bd8b9..0000000 --- a/source.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - Inferencium - Source - - - - - - - - -

Source

-
-
-
- - -

Table of Contents

- -
-
-
- - -

Inferencium Source Code Repositories

- -
-
-
- -

My Personal Source Code Repositories

- -
-
- - - From 4f3a62bb2995760d9592987b22c3e1947154d290 Mon Sep 17 00:00:00 2001 From: inference Date: Sun, 28 May 2023 23:50:21 +0100 Subject: [PATCH 2/2] Remove Session logo since Session has been removed as contact method. --- asset/img/logo-session.png | Bin 18048 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 asset/img/logo-session.png diff --git a/asset/img/logo-session.png b/asset/img/logo-session.png deleted file mode 100644 index ef25ff2502e33e38ed97fccaf933eb82ca1f23bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18048 zcmeIZbySsK_b>X8A}t^xB3(+SAh3~;76g>;&P}(J(g>2$AW9=4EmDGXN;k-+q`Nm~ z;ro5xbH*L#ocp_DocrH#AUv?wGuK*k%{AAYpZQr~D$ix`uJ&q`g>MN>&p*aU9JVPpz7HskQHa{#R& zNCf8LU}R!r=0am^W?^M7O1D$rL`P#~DoUrpuf(O~AZcc4CF|v6rsnlr-NehrM97p5 zCPpLTAq)iAnYkFzc-Yz6I}3Y=(*2by44!ZP%t=S{w~335DBaVW4rw%%RA?mOPG&Ux z90Ken+2+ZXqEcgNKuchaI$FclNY*G4f!ycc%Zh1SvCT z6DKPN7c00u&5cAOW4Nn}C>g#&A_R4d zM(oCBrb6tz{Jh5ILZ;@t#-_Y~#|7S(f}6PBsPE?ef0?Z*+yuz@kA{Rzjrh2XjLrGM z+=O^;%+;LTnENq!;uYlQ;^X6bEWji9Z)wU-R$%8C+5V4GZ$@PbBnk$ij@%!QO(7=D&|d z5^f83Qi7WTor5|2_rJ?YN~$=)&8=*~2hOT85;Stsk^xJS->O&15)l ze9^xah4cTpUVlIPANR5O`S>0UM(@SJiNHmqJcI*i5blcxW-)A5cMvoJheNc;arA!ovhVI~R zD35G;%h1-2p)vWDT`QJ-x=>6e@1(k+zdG4dKW%}~TRGj^&CQ}QQ$zRrY2WMgo~fPf z%k2yI;d-~t&!BHV@+vZL$ovrp-_}ULF(sZy2p)xlz_&qGbO`c)P75Aguu&i=OAQM= zrb~ct|F`M?c@6O7H$WA#-m`t}LX9IE(WiR<78;~#u}9RW`P4-0xb1KCOT2%C&PF0x)WDIC z5^UPS6N?Cr9s7vx&T3DkI2ic(INR`QP49_YVFRWLx#R&=)S;V!S3PG%Un=}-K?BVo zRxsHn8C|vWi&X`j>Vp^BQsg7#=>Fz+{}gvM9Nm1)qO{nndkbYb+J0LTsag;d*zk2r zTvV{;y!8qLC5zwZ1FxH&^QFrB9jC$u(n0!Mn#Tr7Ct^a&zP^bZ;hc^vk*wqgxUh5g2M~FR{UHY7lK`%{$hHx}6(q zRjwIHR|ca360WY38>Sg zA}4o8A8Q5{E+|nb4yl*M4)a|!zWey(3FG&TTS^s~?p1-lT&yp?(9$)cUl&8Y=E5Z zXfxd5iGgl&?@%~saHp%ex52x0?SmWHJ?>JxLzeNC(AmMw$CUiR&eo;UWQ5Qt-MBUN z`3iFF9Xm;cyI7V%;4HbPO%Zqe5+)I7aX|>Zr1hzNeF{G&{UcOGhN^<0DeTC?G8NhX zL1KdHGYh(ZH+sF}p+f!Y{Aj($6)D8lZF{h<_xxl}=-XRD6>L;-C7(R!h5B2((+*$B zvLbcs>0PCp4|;Lcnl-JY7j*KhvjzE1=DqQ@S5Y;enHQb>I>AqvF$XGEI>pGsOi4km zjTJ=0TWzTQ?^4@SZT9Uo@6;|l0}jm%T5&^mBw=S$^pJ80LOd(Xm^Oq9z0g5;;ELhX@G zD+4`!idI*1eA=@XtB2@pL0%<WxP1c-|~s44AluCTA5_4o@r4H_f;^D5Nw!Dozd$!sU6V{zVfMDRgU7u zxPO-k4Mm0a%zU~TcAo|P<=ndR2dRt6(2ch5OF8ddSpwjPW%!KILcUqFzOE)t%IT)X zhc>1I!^7#BukRSV3I&}@l(cg1eklq^DbmI<#17n;NLwvnT`dUuc_IYuC#2<0;Pox) z=v1VNB>333HsK1qK9OL|%zudm{al`+`heV1>9SK@UXL24y_Q_sUbUcjka>|6-%C31 zW5@NUy=BS7+I|#g#<7@yRI)Xb=8KsI` zReE5EV!R;8wzPh&hUJ8&#j0D-DZ|1%-uvweEkr^~k^B+9IbiRgvErEP*|?m#I)z+$ zY0nZidq)LN5yxlYqoZVD(%ibn_B)l5VXKTTCyzUo`dARg;K;;ksq7{^zxh*A8sX($ zPSiky=|;rx=~_r3-HYmo7dymp$?S8+>8f^RBiq6|acba2F)V1`T&zsU#liyP0YXf8 z_#lk9WXZYGf510iHCTP7jFSlZx_bW|*asbpM){QIxG#U+ZH_V3 zZ%=FaIvI$ikC5|l#+Zm?MQsu}GQrPyhjRffj) z9Vnp%@is&G`-1SZ)9G(*gKE_C&#H4*7Vi?G1knh()Tovst)5z6O!KyYc{?#%VzSF` zTUhW;Hv~P4T}2!y33L=09oQxsD%rJiLUjzm53YXO2k^4INb8IL2HOj~ZsBGON6Qao z#hUf=4Xh_&)^R&;)#)T15kU9X#knq0_(<6pN$b0G5iM+>tCIcL|4&ld;8hoKu28JO z1g}m5IHS;UtSM2&6D8iKo-LR&K1|Kyr4&0%GvmvVa`b;_6p8o-bB*0x_%R9l!>FkQ z=J_@9dinW~1ky0Vm0|KCX0?ykBjNUx1(kf|)lm^TPOkguBcG>ATM|&Q!Qo0GBEhw- z2iR@{wWzsvb1?NF4zM1i!Mi(bk5BsT14sFAQOcfYC#0XRz4~p|H=H~dEdmc+4b#BP zH)o$0wn&zZD6l$(CdQcnJ+2hx^P4@MT|0j;6-Jr9UlyRyC!FP$$ok4R;WrwGR}eC?4{`E z5h3fA|B=P@a#TUrAktLHUwioUjhJL)@5O)*{fDV_W>xuCLdd4wUHH>DamM-J;nn!e zz(DMm+bYfzF6Haqr7?x1^^IZbtY5&CCwp%R#x;!pxY|@~y@rW@r4#Slhl$uz&^uo; zx+#5fs(E3Jh7`7m+j8w7h)K&ZO_r_k3)9@e$yy0hT_Whb#A2!IE6_us%c;ahDHEvJ znUyWOr$_We?1aev2=&x1;}h@L9i9^^#*!bJq02PT7|pnKG&RH7QPbW<=^g4|43z_h zLgcEX)I-K&LBfJhFR}djll&|QT57JNG+OaaV$MqMi<^9pRwfd{PlkV8PL+F}Hb#!# zY@IN(vc}H-xo}9je5=$ThwC?W*8OiR=MR!;R3CaW&Y`m3Mk&(wThKh?g(wv3pi?Ddq!P^(fp_g=Z_#u~cDQ_Xo zr$cZ#ICI6j-irx__A9jFuq_F7-xwd_{=kF~@ag6hlWLyd#!l;)vVRq~vc*K?jFDD$ z@?CZ*&fP(5^k!_?KBP;Ab{T$LG8`l8(b&hgmvn)x3{9b6=!x{&TB;pb8_0JPdhXCS z3Dfzv%@hc-p$F*APO%yza?eox=!Qjhgyjr*(fsj~&2PK(OA(80bT?C*33a_TZI?ZJ zK+!QH=zm1(L?X`f>6Qv6s-aNVqfT9Bgr7&6EEPn>(}uGjk#$>_6xC1;oR;&(9}GI& zxXn`-ckg0~XX47CqR^C|7C%Dsi)W0PLhg8arGU3y8;7C$2h8X_zZVE;s(Mi-vwqE> z$AbKiJ`KUtaDgN#0e|ffqFm4K*C;9!ZYT*sux=vqlun3sl~vIfQ-xZMWK>^*UjmB% z07pnY3a~?)KoZapCu@E8c&Cn!nk7PKaJ`;w`9#Jr{;q$QXX{B+vt50w5O7dHLVy&7MA2x84^a=m;Uj2L?a8#i4i^Q~%m6I#fu! z#F#4J(d-?_j27zd5p>#*FhuhD`uTApj{_; z!Vm+xI7Q&Q<~4@{^%M@H4Q_v3pATxjcLZL>8%TMBS3_T+qWG6yL;H6dR&yiV9{7#0AnnQ+nQ58}w;z5Q)dr zrgZ6|u{L4(_vdghJFv#Ng4p{3Y8EbCO~=P|bQ-lTvu<0bo>CL4=beA8l7}Isd6!k- z4FtVstSikh#=11A#HWM)ii#np>NhXjfW#9gM&Ip6kpK3y?a~2JB#L=$2t$W&te z-k>8Y?7IT!_^CPaG1N&2_5csjssGo^2p}JL03ML87UIm$J^dWDr zbNX`JX=f)TUl%p-`$5t&SUDP=j?B&+RLG0>YUqnpBT|iIS(FFt^I-5=NoUPWbmP|?`!Fu~!uT7hG){glA5l=CGVSCq`l{a7tl>^+_(sr-H4W5lSivYC z@9l*SK9vt_eY~GDE5!ukv_1uXOm!+4Vv&iDj7gihXHH51mGPw9yV&Fi6y@EJ{pD$$ zq0VmybZ?Q-*UcHb<=VxGnq^n9GbwAmI*@&yiD!J-`VjQZt89)S>#}#~0UsNc+fZ7} zHH8^I?U91hV=|?M`gjPn@w$}sW-Fn*-*UZq zU(Tn-W^Lm_iddm6*Oeh`xXC6Eye^y;58No6eMDz@9A%Kau}5fk3$3jqr_yIB?efa| z+f5shIHL;m=V+fxusVSp#^f(^0p9qDGfZF2W(WFy@0V6dKx|L5i{IQnGgGYxR&&kn z__DRx9X~$pE$nJNd*YH{wQFny4ZS(G7Fl~qCwGYooxVG}o)tZ;YRFDTcwbAuJ2_6x zyS+IxObHrol4b8lkf4o$wAGi&KZPk}vb<@E|7gz+J^G@tUpPL$V`$#>Da6+0mLU$Z z+Ph7;F|t(t_kOwyU-~>6<>GlY$^a$(JUQ z9B3-a+hHDG5x$QNU{pA4oJ=jhc7+y7Tw*9Mps8=s%kNO38Ki3La9zKpp?uZ#sw;nF zH4>yAi_9NL9+up~@?UWTBA9ad)*6Zw1uIs3hGxsAbw@+V{WAmd1G6iDDr}8a;NZ=hd9AbBz zx{Kpx5nac%kBM&KK!s{ucG{;6C4=edjAVZM|#C+US0CzYznFfl#6vVt~-v`8rR-H@&luU1`2f z-1IxTIRCC(pg~P=Zyh1o#J!#6D^b>G)6e}jTVK5M~cEhye2%$%J7*EP42N&_r5?1Diw)`CK z4`Y91l6{to5LkVq`!S}cYU0dZqk24Nn?0|caNc{ITavBx_dPyLlro-y7%O11HtuZ% ze6^XW2?p3>GRA8o+uzz6g&TWbChMEo#q<_i8ndKu2q|SJT(&(B!rhY?$ZRys_|Z%q z3;K5cPQeU!yzyp3RFzJch(}GhF_VuG>_Z-UT41<6fyi1<|R>$qxNz?=#y~2AYnwM#0Xs-U*jW7l4+id80SkKb zlmnXMYL}<#=zd@II)NSSOT4UOS@i{&j9}9NEAEK~2C8A-y&XoOP@hFAy)IE#bR5(X zY_(U`mp4~21Q-ly8X2Vih#x3`m)-aen%=mQd ze5YzW+XjU8mfu$S14qNfde+EFo84Ro(FF8x=cb#s`T-nf#P{u-5ZY+LYZFygCT2^T zQ4_qFdk4ByrxefwSXYi+4Q%eTRV=vUNoJwH9nr>!%fQdmk6ETPiCGnX-(%`YI?5~u z9}J5aoWNU=x1KqEt(jUNYZgw<<8^H!XVP&##Hl~CC!0)x3S(FRu$G=FRCUzfv9Uwh zmgjf(2dDoL4ice?7<(0Xr8CrxKidFby2$tmvE^GOhE)PcVxE3!CAoOYCg3J?k5(c} zZF+6AS?YGDSS!B*f35-EDwDy??}49XTud)Fz9$5%WLs5ttE#z>1~T0f6~5!EdM~hrgj<#5tBdG^kn!X&ZevX zM0scTozGEsNt1{inRK8T3WApbXKeAaD_4tN`1F9ZgN}ldB-Cj}C5P$fWVLdY+L@@d zSwxNelc1L=6ofk{BA`=PNVOMHN(`G%fHIY==;vW&wjt7Ut z;`9_t;;z-4Plag1@Q#phE6MH?!@g5}jY}0g-6q{b9XhyOpZ&hW2clr9r(4VZQ8Z8| z*Run~r|QPVIv)cRHcQ>9GFzLAs|ph!&3JfK$j%zeIa_rjx$nVKGa4wg+#oWC^Wg41 zyS7Ikz9&u`DMfu~ZO77YDtT&$0ZG3gQL+&9{88gBi)#l^4vD+`nBu_oA!OqZa)Q?S zzGNr(SV&h=e5$F`W>Ot1C)xY0{n8t_Y7%L=XH2frG)^`}v@aHd<49B?k~a`dSYKjo zfCplQG@J=GrN+YrJTfEkh6khKlBCgHYd(lHOu*#wPkYW2bEcb=#bG$GMmy1 zkoE=r$>Tf#hksfgsb;U5uAI`X=Irbp!K=lVx3p16F2Z1lX26lD*S+3p3qR-&**&|M znriJ1)x@q!iReL09u%4v@l%5Q2%W9P=_lAIMPFc13%3FZp>PN4Oy&Eyi6Zi|2aMXd zLzFu5`VmW`TzWt7hxS9!#d`$%Cpmsrq>2(1{aMpZ>9=rVd5-zo^r) z=V~#(K|nx2vZAvozj>%f9K+j2fU%@;t51!>6xJC4sk~>6uZUtW8Rus$XI-n=)9c?| z#Mgdrd*%2oCAT|2!VqFZ!cF*gyj^~bk*#{`b~nuHHRSNu|Fof!CpYnQB}3!K zM#*C9@tCS?X2xel$|Nc(Iw|WN29ug3b!Y`hx1kxvnDJ~~k0!CUSqOUHef_iM-WjR) znuAPvK*iBdhh@^@yQt!hGva}Lx8)VXJa}8I!u7_}rqnE`lu{(TU;@P|H#ofl$v8E^ z3`{;k-K|1qsK)2fr}a%t_qF5a-Qv^dL)5|i0K5#m@`+~+FPKf}1kMlpNcVJWtIq8f zs6fcBpO|wmqZ;1PBckFAxg?0jd9GI7@x|BgbYC1XCLr(*$yE#jLy1ib`q(ffgJ=8O zWy{OL=^vj6V}x`aYb$29N+sa?OWRf>e0|3bHf2}MxlZnq)#*sT;f{|rHUd{^U z_0g2__dcx=w1Q*$?y?7euen0kqm4&rDqX!yCu1^jTi_7B{UOlcfk>0{c#yZ+0o(`_ zfEd{(5S)~#`2@r50cd>6mBa{1H)DyliWhv166?9z=C|CD46hB#?#gD3{UPfDA4nzQ zYEfaY`N~A`MX&9CYy+EDpXI~p4gA?5)?{)WgZm-vi+F_4!v&6?b{~H46;VEF@&++5 z9w>s0ua8LjX##&B^+5_iXxH>hfvxddjxQf?&WrPKt*0Y_ZQ53wQYjk7vwg=$$-?h3 zojUt1ajBw`@D5RjZ?P5?729L#&EAjT_x9EN327dtB6k%VyAt8mJ-T6vbQZGrvD!9HaRp+fE;r#brJf=8%~rP4tiye{TNfpsk7eOrZOB|k~ z03hxiO4a`L;k%Or3V_*P8Hq|l`H>uQpku|Sid)$EN4c5~^6Ske# zKEHf9Qa0S~zP8@PIAv$75%MwtLF~M68sD=+F*y}xFq;lv+CRQ-0u?`X4vWshXp$!o z8Q(hlzO-w$2*;{BGH$%OLMiJMiMxGi-76B;WqTYd@F{yh`^Cp0Qn8sBc=hzTi7n=p z(K|^TS26oi)NQn3U(ODZx;_YNeD=zm$kft~1s1(H$B#%;K2osZ)JHK|(s*+w z!rudBC=l_Ocn`+MF@@_>s&j?hHEZ0Ro}Nr=#%mj*9s}^jOI`+SknFOlCHKB6{gc|^ zY!|glmChJFIYwsU#6L(~Qg@@|z>U+i)%A6W_dPX*v((k(L>H9C?znbW*|H z8B$aO(;dE1bSj?6WBZJLQ$bJk(Ti3*-Bb6e19mqZzceKqpV+MDG?4Y}R1U9J=1nW6_jL!5ap8dA!=urqi5kvwGe0JI6iaVgz zlbyUQ_)5VqsS9UDJljn<927ZUX|<~bTy%g`#4S#yvg{8B)A$P3{G`@llHJwbpLGHo zR)~~asKwQI?qEc{JfNqlfLDCiH9JUY8y-40Xsg|+)m|m=*9Q3`Ng1bY%9~5uSyH;~ zofL|{rFN`unk%0k+gAq&?CY&aoOP{{=alqiiKJ|7g0kYx)zKTF`xw@NDTnU&TE z#_yqv_nBa4ALP8>DesEy04M*5UZkn1ss?&C+>W0Cdqy@^l^>(>9u(2*JlXulB(Xrz zEl#IQL&mSRF97La_Y|^32a1jAuQf;-sG1zzA()N?Zj$)cJ+?TCgJSC|BRjCCHdJ^V zuE|r`%>+Fe;=19eXB@!&Js;|w;%s-gc2E+BEW^3e4q!Yjcnqg_+p7GBA@fryvxr4Z z;^10r;DpejstIZ_GGMq&TDX&V_Tev%K4U55xt{_+p5oJ)^&A~8@R0Wa*nMl8n*Z5B za^HiY?ESMvpCVBoZy9dG#dBjegCS(ub5z42zmt%SqAXZ1#qV)GP)gV$%bu#$ktiaB zrlb_&zi^Uz7{+I>0o}n5-)^sEkxz|j)B(?dY8XTNVpoiR*+;0&T_^&j=vxGUAY)@$ zF3wn<-G0f8?w`mlJ>)5j@OH^Y2ps5f$d9_C#m2~OVN2Qn)uRLBd8;t4zjUsU*zQ7- z8C~4$8tMJQ;}9)j5aE?KwfKrzM=s)@7lLxUn1I^8$de^8u@CU-A~8*M-Aw{&?36s7 zmE_3mfnRnI+gE(%4Wx5?Up!Ch%WVR(t3A`5GAJ$TXm^~qa>fRn67dQ^|= zIi-&3DGphL&HYN5{auC66n|lye{f^xq&GEGP~PckE1aP=Uq{THgDrpXGYGpT(2xQP zdR?xVi$)N6ueGk%JUX0gkh8mH0-yyXe~POcANRyH`GERCXctaN+`(L4E)I%KiC!Pl zp>gs7C}w|wmHb{YJhj7uWnGyL_m>yK9;(1BgYaT*~i=(#-e0!p!L)495-YMO! zqcy%VLT^q@Uh%wcT^buwcl#t$h2&Doa~t2A#F7v)>n(5Uheqv%|@HZGnsrW6eylMIA3R|=Aus(Q|LbQ8BsCM%q@OpLqD@umVc%P*zBR=03|1pgg@YqNNuulh zL$8bsw{-1J*T*ZFfb`y2d*O;8T1Q58@|}H))}&k@U;1Nm(+b85j5LxW7IY}S!(0Ir zu0;p>S5ocHav!b{P~*0j+VKsT_Nf(Z5zs?pi%sXPUB>1S8ax`6u(a=AGjdrviWcR? z)K>|ivimpDvh6Ql?)H;cPyHrLfDU6Px0ixr+t<2pR`Gl=+q8)gPlW3sMbhRo!Jn_T z1r7h~`?2U$Mek&N5|V2Bar#L(UfLH}qYqFe%`G*; z^gL2fdLn(DsB5u&-nvfZo69ma@H`d5?^`Ye z6D2yP5vUNNLStRzJr@r$!N%AJ#yFn6Z7l!bhO~2t-{i`&=LK{iKJ)v`Xufsnr|_fs z90wEsT;hcvq7bW+Dpq%QAyCCkx8DS~@-iVDP>*rVgT;MIRcbpyP^fRQs_=;W8wNr;2q z9L^SJHE$9Jj)P^UaL~RoRPqOc7V;PQC#(?oaZ(#DmT=L^12)N!9d)6enC^11Zy_ir$>QscS}b^O&W+q(%W7Z28)1notLyJw8Io%s=6BxLN_oEh zcTC>Yn#9?DVzF146+3eaV!|d=a;ra>ibyUp8UUNXN=%6CZOe1BJ?(U!xWjM@ zHOt&ouofiaAdy>mdh zpo)}Ml%CED!JBg=wh)eM_?Pzfb!mb@Gr6^sOzdRun8q$sfM7?f`MdB7JeU3yC&g>2cIyaI$iCOWDn?Uh)MN?`H`$dY zZ$f$ImnyJbY*{;8Dqo%HGcW=GKAs-l63vn>SUSjicPCcx>bajOZ;SOg05R0O>PvSz z#v}b!_G52NpFNeq-SfHlpwFbqT;Fn(pNU1<@+_fzN-`cH{4=XL5mpoQB|~u-8tT;EYolw z0@BnS)*NC$u9CwQJNreN%#bXAYoBRScwc&3$=nxX+1d0yO4|XRvoa)QAvnJ zVF6dteMiSbrUpRo{GX%?kOr8e`av8cS59x$1vSekfq?<3w*WoqF4|bY4wd{iqt9JT z^=GpKArAAhW`ok@XZ3BE-#~8s{$Y+MsAD2h?XFA+D(SbX@*h$8o6^Ew_yG{(ps7yQfC zfY|zP92OQHE$`V>V%tch?or#pf0&2QsQmJDn)7tZAa&>}whn}CQzNGv_BTMKY-HKD zWBvW*P05jlb>5cpa>dsbcBSO3WlsZ)Sd(cuH@VnTz$SFH{KFmVz>A4AGqwa9_fF2c z-U`I1hSFFNICBneXmptB9y{=qo^Sd|?%#>NW`?~_|B9pXB3u1B;^SV^3~Q6>rD568 zh6U@Lrd2>OrID;GlQfvuz;a6P$@k>hdhOKhYO7tDfw%277!&jYd-mx<K`CqcxSkQQzhMdJbtP@c;N%l~ z)pJ(cZ<>DdhF4AaygqX47AW}M_%KIt-V(X5F}}*JlSRFRz3o zQFnaAWkh7KFq)S^{chpz;CWwzx1?99>WRv*bou&4>FAYDXuFueAoZ|MVm%39)%6s| z&Afv&@qJN>)!gDNjvM6lB=O6{7&J_rF4sT1&i$z9^eM8Q3CZCeblJP~{4MuA+i$lAj9MXc;<9wik15^V5)~+$WHk<}(&p9^~ zXDSGJi*88-qyIg;va9qHV9rz-u64ntpI0-avL5+vCb^Qc8~6+I^c_g`@9pc=(tZ^| zZ@wp0YD4Ee&Z0*6?fUYqE6dX|CjUguTemMaI;-x~8s1>)MU3T#n-^FEmsZz5tS*wd zKp{o@2VUDU87Kl{0D=)f#hkvl1!7QM7YrQWCa3p9+CTNedpKj^&j_+W7k>svF6+Ip z#++e-l$VaMmOv<_4Uf1uG6o$=*`_XgHZdq;V1T% z{TeC)gaa0NBxCChMM&$ED`0y42Gx8ATcdx8Cr;2?!GPNQqnk5Z6wCjv>@y}O1)Kuw zFYcLU*yM+pWtdDvC^Udy@DwVhaeOJ+Wyhr2eKk{jfDnmMh0X!H4nY>v`N7sOywZs-gDSST#sqFaQ5hrJKO~^+WF=i`^TX7gnA<%b;j*ldp3yLRb#K^b=2O5Z zW9gB*Z%OzC-B$>3qjrZCZb&tRk_a;Y+nKIr3(;TG+K`xZt{|4_8>XPkfewTF76v0# zK}G#j0SNQx68`K^GN|4X4@t_tIT>(J%0AzaN*T+pJI2VC&X<6==5Jvh80z>)76m%j z^KrjxmKb5E%)ZipQU_F6665E#;|$(%geRThW(lK|)COKq=eT%9al>Nia3`+4?%9)<^}Pe7KLX4LGNXMkO3WL! z1ey5Mz%#%S7_5_^ih-IrZ)h;fgQkrx4zIb-q#>7*P)G$A@JRxAJEEGSPXUwUz?+)exEJX~kys3_tHRg^72V0wx`S{{(J`=NFw*iuWJL zg}Od|8g?r1>VepLw;`ACeQ~=Wuc#fSL8w`_1gJWmF2<4pT6?wmjfu_`PzI#_SQ6a~ zuyhB5IRNJ;J*Z>06il6jNQJy?@p+-zgu{YcwA=EgN zFkM#MEM-vM3mtLHXwOjusQ-=P)_mxh0X^ygw+rHx1d6{x-G>_Db3{6bUH~W zhrv5eL_*inFXBNViOv;JOI0viarWm?Zwp8^-i8N2W9G*0)`Q}`&dK;XjyikEFOl2_qp(l`X2L3c|fsUrjYz@mC?*dG(?%Q40;v_ z%gGaKe5cMo>@(&{bjx1@I7@~LAyhTf3d-3t((f3kn*G2ro<3(TuttWoJEHZ1z$Q`Z z&x5eRol0WRh1?nGMel_`Okq38+h$G~xtGJho5rT)bzX)?&P>T8jBOx1rBW0nkWAa>&9K0D|h?@9mm$a7e^6VXe*d75%-VSh+73S@_L zt}A{`sXs7cplda^H{L66Qg4&Gz+g7Xvczopp5REW)u%Zi4c&2RFR{AuZj|W#T<1Bn zu>lAfmEAetz|lhprR+Y4eQ2K>@~}w1;H92WTukxsm*(R?uG2G(miv~Ox{Uc79p?`U zAU?Xt9o}c;RpA=nrg80|691BV0c+SR3PUm_=C|)OJ^Pv^2FRidfKMPb2{;L)o6l57 zA#3$ZLx+^LBERtL@5)MAGFXxDAwW{XzF!*L$BQ0?u14~5KgmK&+_s5VoE;>|k-naS zlj9#1pIV-GM1X#8p&Bw~Bm5j9)ysqCx8&iij3`-Z;3B}n?1dDsLbWXjL=`Jc8*|q2 zPz}u*W!kM&nR~3PFDvS$9xeJo&}gZO1=Z!sOUCGATP>5vWS8q8A2|Y)W*(ErtG+3k z%z(+8d3ow~Gg65zy9c$aSwtT`3;3O&+WQ&^qBj@v%?L`BX#?Q=li+V#t~Keu_bt%m zea@dKvwKjt_8Dvdj_TbKPIDMBlcvMv@Do5(00-nK>wG8PjPv`2vVn1Kp^ry4r9_-X zk8WrxNEd%Y{-GcESF>~30}^FS;#FO)k2zlNyeFE!Vhy*xMB03ITU!To(yBD(RXZ}Q z8N%If5@>=hCt^c^!CaPVpj>(l(^JFMOklBxQGdCpF=BkUfsJa27rMjWZ|^|x`gNwI z1g8Jk+xa;$@KTF8pr5C*yZRs*jlB zDH@98E@eFdz_97YYqGxn^XQn@blc{a&?Ty7>Iyua87Y_kc#!M#{*1*vFY{{}?YO08@f9U7ew3phur0a4qbm3-U=99OWC!HSlCllBv z#@kwQ`xKm*bSN#RIYkcw8%p8!Y$5L=eqgQuNCCGw)DVfUHdKD_NH08;_wNp+#>T(8 zLLQnS?A>%FR#)}EX8tVl11=KKR2X@tea_7HVXlnClnoz~dAN>wjqd3g<=g-CcLltV zzDB<|OEsT<&t2vZs7?1@oU?kpfi#&rCS?(JTd^+!IE0n*+|L1q1#U{<7SNrYLtn$p z-L|6zB7Mx1&G0L|Gt;aaE^IL#d1K4Z&f|`WoG(`#y(D+0%GChPgR8}U6L9Lnx4m@` zuWi5XWpbUNkI-sQfEw(<&f2T&ohsY|m)sNjfu-qaCql?+Z?*(Ut*>+$`$_PVLiY9I z9v~w%FUzQKpE2ox^7vxw7Gqw)k7$A5Q#=r`Mp8M-OF)E#4RvOR2O8=tT9quG8EJ(V zCq~mhHO(@xgc-E)_TIGYPEUcliMp0Qt^UOB;wqa7>&uK1YAlE+7xv9{o51VgnN$hq zil6C^0|W_v6bdVJ>5k87ImeM<*W03eK_}ad3 zX{=rFb!&fZ+fUe|ak`#`LL_-GTQagOZfx-SoX5aS;FztIFLkS7gM9811SkIFLv8rJ ztKwd%8ecFpZxQ!@Al+Qe2KQ>{qk39ZEgw=NPVLF&m*n9mIW?ZrMRby><1Hcy>sKt_ z8WTXSCRavzYg;I3>&116j0qo{LQY#IHg~evO3Vg(dBPN=n!gxhx^BDNuBhZwFt&{0 zRUu(?z#KAXsZ*4Wu0sfr1?o0-y~1*;69{R3*~5&4S7b)JUH!Z*dB2qJ(Jd5lP2hY^ zw^11F#W4oCz%8pS1D|A8!+ZA9i(=3ZfKi-eHu%rtKtEdMYy36L3H#_w59Y7Zhyy}n!AtU;s;DRhk3j%$ISgoMv>Zh=@eH-Q=bhF|mCjG;- z;BuP*NZ4-xF@!oWG#mH)22%gRC11DPRbpnvgNfZwOz8fBp!odS{22n5;^;US5W1L{ zE9YKU1LP+e)$LOOE=m?xm{W!}SKmR`>mw3{qK11=f+N~qMtv0UkNFLRSuE({W)5h# z$Gd_MbKk=8hA{F4Twd5-zVN&FV8H#m(`yt^F~GSGFwtbVGh%9x2$}_0>!Hu@x2tQo z?7#ItJOt&%`%IkRz5>s)13=apWiEl#gK4!akz;3o5J&O*^tXX4A(UXg5$&Ckyy86@ zg!vrY)?^7K%>ma=)-MkuqAKp_+GwW(#Db7?P zyU(_UcYK{qXo$=IB_X34i$zMGb_clG``MMni0b**_3Wvh!0?;v#P5Sh8A@RNM;!*& zep0-T9xE~Cy>K9xj(EC&n;n#Z8)=%wNNU1-Xy%BErbm>V){H