From 6727c3087307c00f39f7f618f7fb1a42326595573a57d775c2da2f7ae91a6492 Mon Sep 17 00:00:00 2001 From: Nicholas Johnson Date: Thu, 28 Apr 2022 00:00:00 +0000 Subject: Initial commit --- static/resource/age.pub | 1 + static/resource/decision_tree.jpg | Bin 0 -> 32125 bytes static/resource/feed-icon-28x28.png | Bin 0 -> 1683 bytes .../gpg-signify-transition-statement.txt.asc | 35 ++ .../gpg-signify-transition-statement.txt.sig | 27 ++ static/resource/narrative.org | 375 +++++++++++++++++++++ static/resource/signify.pub | 1 + static/resource/timestamp-1.txt | 45 +++ 8 files changed, 484 insertions(+) create mode 100644 static/resource/age.pub create mode 100644 static/resource/decision_tree.jpg create mode 100644 static/resource/feed-icon-28x28.png create mode 100644 static/resource/gpg-signify-transition-statement.txt.asc create mode 100644 static/resource/gpg-signify-transition-statement.txt.sig create mode 100644 static/resource/narrative.org create mode 100644 static/resource/signify.pub create mode 100644 static/resource/timestamp-1.txt (limited to 'static/resource') diff --git a/static/resource/age.pub b/static/resource/age.pub new file mode 100644 index 0000000..5eb64e1 --- /dev/null +++ b/static/resource/age.pub @@ -0,0 +1 @@ +age18gn5hyfy0nmg82ymrtl23zje300a7pue6430ucss2vslwl0t5gks4645wp diff --git a/static/resource/decision_tree.jpg b/static/resource/decision_tree.jpg new file mode 100644 index 0000000..f2b97cc Binary files /dev/null and b/static/resource/decision_tree.jpg differ diff --git a/static/resource/feed-icon-28x28.png b/static/resource/feed-icon-28x28.png new file mode 100644 index 0000000..74ebf71 Binary files /dev/null and b/static/resource/feed-icon-28x28.png differ diff --git a/static/resource/gpg-signify-transition-statement.txt.asc b/static/resource/gpg-signify-transition-statement.txt.asc new file mode 100644 index 0000000..7f55660 --- /dev/null +++ b/static/resource/gpg-signify-transition-statement.txt.asc @@ -0,0 +1,35 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +Date: 2021-12-30 + +Statement of GPG Key Transition + +To replace my GnuPG key, I have set up a new Signify key, and will be transitioning away from my GnuPG key. + +The GnuPG key will continue to be valid until 2022-02-01 for the purpose of verifying this transition statement. Please do not use it send me encrypted emails anymore. + +This message is signed by both keys to certify the transition. + +The old GnuPG key's primary key fingerprint was: +BF49E81C1D888979B6506B225B4FE8CA89C066C0 + +The new Signify key is: +RWTJ8JZMFWhB2Ya9GyXbmOQKSxd/x57IV/oNo6/nl344CR1aqf/OgPXf + +If you have my old GnuPG key, you can verify this transition statement with: +gpg2 --verify gpg-signify-transition-statement.txt.asc + +You can verify the new Signify key with: +signify -V -e -p key.pub -m gpg-signify-transition-statement.txt + +Thank you, and sorry for the inconvenience. + +Nick +-----BEGIN PGP SIGNATURE----- + +iHUEARYKAB0WIQS/SegcHYiJebZQayJbT+jKicBmwAUCX+0UgAAKCRBbT+jKicBm +wOjOAQC6NKik3E4ooWBFEXm+0jNoENASyVFRRGNZ1qnaazPZUwEAvD88rtV75Z+9 +NX1JG1iGPgTcfKO1I+m4PblgxXCsbQ8= +=novT +-----END PGP SIGNATURE----- diff --git a/static/resource/gpg-signify-transition-statement.txt.sig b/static/resource/gpg-signify-transition-statement.txt.sig new file mode 100644 index 0000000..19a074f --- /dev/null +++ b/static/resource/gpg-signify-transition-statement.txt.sig @@ -0,0 +1,27 @@ +untrusted comment: verify with key.pub +RWTJ8JZMFWhB2eYyA14Q6xQJS/Ak0RrXKrvixXFQujsOcIwD/plAkeOhd6QxO8sQxsiwiG5Zvo6JIi7IQycjB3ycCrs/Yp0lZQQ= +Date: 2021-12-30 + +Statement of GPG Key Transition + +To replace my GnuPG key, I have set up a new Signify key, and will be transitioning away from my GnuPG key. + +The GnuPG key will continue to be valid until 2022-02-01 for the purpose of verifying this transition statement. Please do not use it send me encrypted emails anymore. + +This message is signed by both keys to certify the transition. + +The old GnuPG key's primary key fingerprint was: +BF49E81C1D888979B6506B225B4FE8CA89C066C0 + +The new Signify key is: +RWTJ8JZMFWhB2Ya9GyXbmOQKSxd/x57IV/oNo6/nl344CR1aqf/OgPXf + +If you have my old GnuPG key, you can verify this transition statement with: +gpg2 --verify gpg-signify-transition-statement.txt.asc + +You can verify the new Signify key with: +signify -V -e -p key.pub -m gpg-signify-transition-statement.txt + +Thank you, and sorry for the inconvenience. + +Nick diff --git a/static/resource/narrative.org b/static/resource/narrative.org new file mode 100644 index 0000000..49b9e62 --- /dev/null +++ b/static/resource/narrative.org @@ -0,0 +1,375 @@ +#+TITLE: Struggle to graduate without nonfree software +#+LANG: en +#+AUTHOR: Wojciech Kosior +#+LICENSE: CC0 + +Due to pandemic many people experienced deaths of their relatives, others became +jobless. Those are some severe losses, many of which couldn't be prevented. +At the same time we also witnessed an embrace of proprietary videoconferencing +platforms, that brought a huge loss of freedom. Most ppl would disagree over +how severe this loss is, but one is certain - it *could* be prevented. + +As a university student, I struggled to avoid losing freedom and pass my courses +without surrendering to the imposed not-free-as-in-freedom services, +often by proposing free/libre solutions instead. I didn't expect to win this +fight - but now I think it may happen. I describe my fight below so as to +build up and inspire others. + +* Studies +For over 3 years I've been studying informatics at the AGH University of Science +and Technology in Kraków, Poland. Over that time I was becoming more and more +determined to avoid nonfree software. That, among others, meant getting +a librebooted ThinkPad and switching to GNU/Linux distros that only include +libre packages. + +"What about studies?" - one could ask - "Weren't You required to use Windows? + Or MS Office? Or some other proprietary tools?" + +Actually, a great majority of the jobs could be completed with (or even +required) free software. In present times there we have the luxury +of having excellent libre operating systems and libre tools for most tasks, +including free software implementations of most popular programming languages. +On those few occasions some nonfree tool was required, I was either able +to convince given professor to let me do a replacement homework (e.g. doing the +same exercises under Postgres database instead of Oracle's) or do it at the +university during other groups' classes. I admit running nonfree software +on someone else's computer doesn't fully solve the problem of nonfreeness +and is not something to be proud of. Nevertheless, it just seemed fair. + +I was also gradually taking the issue of in-browser javascript +more seriously. Web pages' js runs in an isolated sandbox, which makes many +ppl believe it's OK even when it's nonfree. Sandbox might indeed solve +security issues, but the true problem with proprietary programs lies elsewhere, +in taking away of user control. Currently, maintaining one's software freedom +in the field of web browsing is not easy. Numerous sites break with js disabled. +On many occasions I had to ask colleagues to put me into a Google sheet +for something studies-related, because I couldn't do that without js +(also, proprietary js is not the only issue with Google services). +I only dared to ask them for that, because I knew they were already accessing +Google sheets. + +* Start of the pandemic +Without bigger problems I completed the 5th semester of my studies. At the +beginning of 6th - the pandemic began. Universities closed, most students +traveled home and professors started organizing remote +lectures and classes. You guessed it - they all chose proprietary platforms. +The ones used were Cisco Webex, MS Teams, ClickMeeting and, duh, Skype. +Each of those either doesn't have a free software client or I couldn't find one. +Of course, the professors expected everyone to be able to easily connect using +web interface. They didn't realize the problem of nonfree js. + +Lectures didn't pose a real problem, since they're not obligatory at the AGH. +As to lab classes, their form varied from professor to professor. Some only +described what they want us to do for homework. Then we had to just upload the +completed homework to UPEL (AGH's modified version of Moodle). Some organized +non-obligatory consultancies. Many didn't care about actual presence on classes +and only wanted student to appear at specified time to interactively +hand homework in. Finally, one expected us all to attend the meetings at lab +class hours and was very angry about me having issues with it. + +What were my actions in those circumstances? I would *very* politely email every +single professor who announced something would be done via one of the +problematic platforms. In my mails I usually linked the Costumed Heroes video +and some free videoconferencing tools (Jami, Jitsi Meet). I often remarked, that +the service used by them has no free software client available. Centralized +nature of those services and surveillance being possibly conducted through them +are also severe issues, but to me - software freedom was the decisive factor. + +I'm under impression, that few professors didn't understand the issue or only +understood it partially. Hence, replies like "the solution would be to run +the program in a virtual machine" or "You don't need the source code to use the +service". Fortunately, even though many professors were irritated by my emails, +most of them eventually agreed to for example use another tool (Jami/Jitsi Meet) +to receive my homework. I think what helped me a bit is the fact, that they are +all teaching some field of computer science. Otherwise, the fraction of those +who don't understand the problem would be way higher. That's why I think it +could be more difficult on other faculties or in case of lower-level education +(e.g. schools). + +* 6th semester +As the universities were closing, I was in the middle of doing some kind of +group homework for machine learning course. It was quite natural, that +I asked one person doing that homework with me to forward +what the professor said during Skype sessions. She later continued to do +me this favor and everything else could be done in free software. + +The first real problem was with the artificial intelligence methods course (I shall later +just call it AI). It was rotational and we managed to have one lab class on-site before +the pandemic. The homework for this class was to be done in proprietary Framsticks +application. When emailed, the professor allowed me to do some neural networks +exercise instead. But I did have double stress, because I then had to ask him to +provide me with the required materials using some method other than Google Drive +(which I would be able to download from, but only if someone gave me a link to +a single file and not to a folder). + +Later in march we learned another professor teaching AI wanted us to +complete an online NVIDIA course and send him a certificate. This was supposed +to serve as a replacement for a single lab class. The course, +obviously, required nonfree js. I wrote an email to that professor, +but did not receive any response. + +Also in the early part of the semester, I was supposed to hand in distributed +systems homework via Webex. When I emailed the professor, he agreed to use Jami +for that. That was a little victory, but classes of this course were also +rotational - I knew I would have to ask 3 more professors with subsequent +homework. The grading system was such, that if one refused, +I would fail the entire course. + +Near the end of March, system programming (i.e. meddling with guts of Linux) +classes started. Those were obligatory and during Webex meetings students would +present their homework. The professor didn't want to lose time connecting to other +services than Webex. At that point, his response didn't give any hope. Especially +that I knew him from earlier semester and he didn't seem very kind. +I kept uploading homework exercises to UPEL but I was to live in uncertainty +through the Easter and long after it. + +At some point I emailed two professors about the use of nonfree platforms +for lectures. One didn't respond at all and the other replied rudely +and seemed not to understand the issue. That's how I stopped caring about +lectures. + +It was April. I presented second distributed systems homework. But even in cases +proprietary videoconferencing platforms were not needed, +there were other difficulties. For example, some lab classes assumed using +Java packages from Maven repository. Even though I knew given library is +free software, I would always attempt to avoid using a language-specific +package manager for it. That's because repositories used by tools like Pip (for Python) +and Gradle (for Java) allow some sorts nonfree packages and also lack good +security verification. This deserves its own essay. Eventually, I would +install libre libraries from there, but only if they were not packaged for my distro +and there were too many dependencies to install them manually. You can imagine, +that this costed some time and on my faculty - time is precious. + +Also in April, the lazy "do an NVIDIA course" professor sent us a list of +students who did not send a certificate. Surprisingly, my name was not on the list. +Instead, I was rated 100% for this exercise. I concluded, that he just wrote down +surnames of all students who sent him emails with certificates and also mistakenly +included my surname from my mail... I did not want to be a cheater, so I later +emailed him about his mistake, but he didn't respond anyway. + +More problems with AI were to come. Another professor wanted us to do homework +in proprietary Choreographe simulator. After learning about the nonfreeness issue, +he proposed that I use Webots instead and I agreed. + +Around that time I was to realize, that the most unkind professor of that semester +wold the one giving software engineering course. The course had the form of a group +project, but we were still expected to appear on meetings every week. +The professor first didn't answer my emails and eventually wrote a long reply +in which he threatened, that if I miss one more meeting, I'm going to fail the +course. He wrote why he thinks I'm obliged to connect to ClickMeeting and the +way he wrote that showed great annoyance or even anger. He did, however, write, +that he doesn't care whether I connect directly or my voice reaches him through +colleague's computer. And that's what we did. Me and 1 buddy from my project +group were connected through Mumble and he was also connected to the meeting +(as he would anyway). He moved his microphone close to the speaker so that +I could hear the others and vice-versa. That was so provisional I am very +surprised it worked! + +May. Distributed systems homework presented to 3 professors and 1 left to +convince. Another AI homework was also supposed to be handed in interactively, +but the professor first agreed to use Jami and later decided, that he's already +seen so much AIML stuff, that he doesn't even need my commentary. + +End of May was when the situation seemed to be the most overwhelming. +There was yet no course I knew for sure I would pass, there were still many +emails to be written and I was already having delays with some homework +due to lack of time. + +In June the semester was theoretically ending, but in practice grades could +be given until the middle of September. Everyone, who hoped they would be able +to conduct some classes at the university, now knew it wouldn't be possible. +One of those ppl was the last professor I had to hand in distributed systems +homework to. Although he was not eager to use another platform, he agreed +for Jitsi Meet, which doesn't require installation. + +Professor giving network security course also put up with the impossibility +to organize stationary finals, as he used to. He instead gave us some +exercise to complete and upload. Unfortunately, we were supposed to use +Cisco Packet Tracer to simulate networks. The professor was unkind at some +point earlier, so I was not sure if he would allow me to do some replacement +task. But he did. The new exercise involved Mininet and nDPI library. + +The last AI homework could only be fully done using Jupyter Notebook on Google +servers. I did what I could on a local Jupyter Notebook instance. I did not +need to have this 100% completed in order to pass the course. + +System programming classes were also finishing in June. +I wrote another email to the professor. I was afraid he would just say I failed, +but no. He said he would look at my solutions and decide and *maybe* +it would be possible to meet at the university in September. +Hence, I had some hope, but no guarantee. + +Now, another, bigger problem - the compilers course included an exam, that was +supposed to be done through MS Teams. I wrote to the professor preparing it. +Even though he always seemed to like me, he did not (could not?) give me +an option to write the exam some other way. I though I would fail then, but +funnily - Teams failed to handle the load of over 100 students connecting and +the exam was instead conducted via email (sending photos of solutions). + +In that semester we already had seminar classes. The professor wanted +students to present their prototypes on some meeting, but I didn't have +mine ready yet, so he allowed me to finish it during summer holidays and +eventually I avoided the meeting. I also had little contact with my +thesis supervisor. We were to talk in July and that was the first time +free software videoconferencing failed me by refusing to work properly +(there were some issues earlier, but not so severe). +At least it didn't happen during handing in of some homework... + +In summer I also had to do an internship. I first backed out of a well-paid +(as for internship) offer after learning, that there is no way to +negotiate a contract, that would allow my code to be released +as free software. I eventually did another, unpaid internship, +which had the benefit, that I was able to spend some of its time working +on my thesis. + +In September I finally met with the professor and presented my system +programming homework. He turned out not to be as unkind as +he seemed before. + +So after all the struggle I finally passed the summer semester and even had +decent grades. What at some point seemed almost impossible, was now a reality. + +* 7th semester +The winter semester was the last semester of the first-cycle +studies, so it was shorter - all classes had to finish by the middle of +December or earlier. Before the semester started in October, university had +specified some formal rules as to what platforms and tools can be used +to conduct classes and exams. This was mostly to comply with GDPR. +Allowed videoconferencing solutions lecturers and teachers can +officially use were MS Teams, Cisco Webex, ClickMeeting and Google Meet, +although didn't see anyone use the last one. + +This time most professors required presence on meetings. +The only exception was introduction to security engineering where +the professor announced there would only be consultancies and uploading +homework on time equals presence on lab classes. + +There was a cryptography course. The professor did not agree to use +Jitsi Meet citing too big amount of work to bother using another +platform. Even though he suggested that I write to university +authorities, I didn't do that, for reasons not related to the topic. +I just kept writing tests (those were conducted through UPEL, so it +was not a problem for me) and uploading Jupyter notebooks with completed +exercises. This course didn't involve anything like interactive handing +of homework, so the only problem were my "absences". + +Situation with computational geometry course was very silimar, with +the exception, that all homework was to be presented through MS Teams. + +Another course I chose was optimization of code for different architectures. +I knew the professor teaching this. During fortran course on one of the +earlier semesters he required us to use proprietary ifort compiler. +On the other hand, he was one of the professors showing appreciation +for stuff I do well. When I emailed him, he was kind, although +afraid of using any other platform that those allowed. He suggested +me to contact student council of our faculty to suggest Jitsi Meet to +dean and eventually get it hosted by university itself. The professor +even said, that he would then happily use it for all his classes. +Unfortunately, student council never responded to my emails. +I was allowed to gain presence by writing reports instead of +participating in the meetings. This took more of precious time, +but I was glad anyway. + +For second and final part of the seminar course the professor +made obligatory consultancies. He initially wanted to stick to allowed +platforms and even pointed out, that Jitsi Meet also runs on someone +else's server and hence - is not safer. I then responded with my +counterpoints and once again asked politely that we use Jitsi Meet. +I made it clear, that I'd rather fail, than use any proprietary platform +and he finally agreed. + +For optimization of code we were also supposed to be presenting our +homework interactively, 2 times during the semester. The first time was +at the beginning of November and the professor wrote, that he agrees +to use platform not from the official list. He just noted, that he +doesn't take responsibility for security of any data exchanged +through it. + +Then I had an argument with my supervisor, who got annoyed with +me (although there were probably other factors, too) and gave an +ultimatum that I use MS Teams. I didn't agree and my +supervisor was supposed to inform dean about resignation from +supervising. Perhaps the dean didn't read the email? +I'm just guessing. Anyway, I wrote again a few weeks later +and even borrowed some electronics from my supervisor - almost +as if the argument never happened. + +Around that time someone told on the professors giving security course +and they started organizing classes via MS Teams, but they still didn't +require students to do anything during those classes and they allowed +me to just send them emails at the right time and they marked me present +based on that. There were also difficulties with Windows VM being required +for some exploit exercise - but I eventually also avoided Windows, even +though it required some additional work. + +At the beginning of December it was clear, the only problems +were cryptography and geometry. I wrote another email asking for +a way to pass the first one. The professor told me to implement some hashing +algorithm in Jupyter. I suspect he might have needed that as a teaching +resource. I chose BLAKE2b, implemented it, sent it to him and this way +passed the course and even got the highest grade for it, despite my +mistakes in tests. That was surprisingly easy. + +I also wrote to the professor giving geometry course. At first, she +didn't respond. The semester was supposed to end on 15 December +(although only some of the professors gave final grades that early). +Before that I wrote another email and I eventually received a determined +response, that I am being failed for absences. She did not mention +some of my homework being uploaded late, but I guess that's good for me. + +At that point I was going to stop arguing. My supervisor in an email +got back to the topic of meeting on MS Teams and I responded, that +I'm not going to pass this semester and thanked for cooperation. + +Then, someone convinced me not to hesitate to argue more or seek help +from university authorities. Or rather, I still didn't want to do the +second thing, because I already declared to the professor, that I won't. +But I did write subsequent emails. She agreed for an online meeting +on 8 January... but on MS Teams only. And I refused again and yet +again wrote why it is wrong to fail me like that. +She was not responding to all of my emails and I ended up spending +a lot of time waiting for replies. She eventually told me again +to contact the authorities for a permission to use another platform +and CC'd associate dean in that email. Given that, I no longer felt obligated +not to inform him about the issue. + +As he's always busy, quite a few reminder emails were needed. In the +meantime, the deadline to upload thesis passed. Actually, that was +the deadline for those, who wanted to defend in January. Defense +in March was still possible, it would just be too late to apply +for second-cycle studies - something I wouldn't be interested in, +given all the difficulties I faced so far. + +The dean eventually responded, but he didn't read into the right email +in the thread, so another set of reminders was needed. On 13 January +he finally wrote, that he talked to the professor and she would +allow me to correct the reports she considered bad. +No mention of videoconferencing services. Was there another misunderstanding? + +The email i received from the professor explained the situation to me. +The dean pleaded for her to allow me to pass without interactive +presentation of my homework. So she would then give me a positive +grade and I would pass the semester, right? In theory only. + +She then wrote about how bad my homework is. I never claimed it +to be perfect, because it was all done in a hurry and I even couldn't fix +some problems I knew about. But I don't think it was bad either, especially +considering the mere amount of it. +She eventually wanted me to correct 2 exercises. So I did. +I finally uploaded those on 15 January. I had to actually wait 4 more days for +the grade, but I got it. I finally passed my 7th semester. + +Now, there are still some possible pitfalls, e.g. getting statement from my +supervisor. But after a month of stagnation the case seems to be finally +heading into the right direction. + +When I look behind, I'm actually glad I acted +how I acted. Perhaps I won't be able to please those who want to see +me graduate. But I don't think graduating by surrendering to +nonfree platforms would bring any long-term benefits. Only more compromises. +Come back in some time to see how this compromise-less effort ends. +This article will be updated :) + +* Notes +- I called all university teachers professors, although only the Framsticks +and seminar ones have that title. diff --git a/static/resource/signify.pub b/static/resource/signify.pub new file mode 100644 index 0000000..da54489 --- /dev/null +++ b/static/resource/signify.pub @@ -0,0 +1 @@ +RWTJ8JZMFWhB2Ya9GyXbmOQKSxd/x57IV/oNo6/nl344CR1aqf/OgPXf diff --git a/static/resource/timestamp-1.txt b/static/resource/timestamp-1.txt new file mode 100644 index 0000000..4f48250 --- /dev/null +++ b/static/resource/timestamp-1.txt @@ -0,0 +1,45 @@ +tree 1c3569eccb0109da67d15f58d1a74d2c38dd3b3f +parent 04c9625977a7ad28a0bd4150a198121d8d143cc6 +author Nicholas Johnson 1636502400 +0000 +committer Nicholas Johnson 1636502400 +0000 +gpgsig -----BEGIN PGP SIGNATURE----- + + iHUEABYKAB0WIQTA24M2cjnhOx8C5Q/rFUe/DFrSVAUCX8Q2AAAKCRDrFUe/DFrS + VKYwAP4pkzBCpyWmXNLeL4CBDimQa6Lq4dzLlhakDkiZatJCcgD/Tr7jNbbv+PeV + xizfe0wunT8RTvVpLtS4Hx2sGiCyEgA= + =Zx9G + -----END PGP SIGNATURE----- + -----BEGIN OPENTIMESTAMPS GIT TIMESTAMP----- + + AQHwIKZ0M3RaIiJQ9rQazVBQhSNbxuQ5VSddbNSOGPsbudsdCP/wEANiYun41xWt + 2Jsg27FKDR8I8QRhi+XD8AgWRdJJvBcJUv8Ag9/jDS75DI4jImh0dHBzOi8vYnRj + LmNhbGVuZGFyLmNhdGFsbGF4eS5jb20I8CCF1SLU5/dyPCa3YcO0vgrmXt5rAUu6 + M1jREKXwqqcxDwjxIEswtUlnUdjL0oJRaHJbq2iu7ZDy0VvArmcNUqVAK8GRCPEg + CWu8w6I9r2rAWgRmHpqIvsyIJv6M9zeZvJFi6L85zRoI8CDzpbaG0nHjf+NQgVGY + 2JMe+r0KbO7Flh5QSjkl7lHW3wjwIOYPKdtm5P6LioriewhZtRrRA2WM5SmQV1YZ + 7FY7DVeqCPEgrXnl5Y03zTEL7PjKlTR0aMDvDK+hXUEplWta/T+/LFAI8SAmOtbn + SLD6Yta/vYbsOpyQTLD/kpq9QWlCcY4df1j+igjxILxbJ04OT68piwAw3stqdykY + 71fZmyOibMOJ7BACTQQCCPAgj75wv/R5qQb9HR7+P1rBjAuOO3+GGi2iEr0MrVzp + GosI8SB66x5B3F44JmPVPq+I1re2r1mx2STk6oWTTsHT5IfOwQjxWQEAAAABT6Qi + UX1oF9NejbGEgegj+JM2S2BRy66eI9pt9HQNSI0AAAAAAP3///8CQUE8AAAAAAAW + ABSZOR1FaAmMnptJFyY5RisS+dgriQAAAAAAAAAAImog8ATe0QoACAjxIA5pCUrE + 4aLY3sIP/8EXiEs3gS0Xx/yUQDrF6AbO2a1wCAjwINJ9k2c9JPooOuz7O7Gen4ao + VCCljy/J81M/bxsPocyYCAjxIPhNhFpWvANWebQMmLgzevdvr4TcF4ftsuK/O6Mt + zmHUCAjxIKnvmVOPk4QNWAgN5KM1VgvSxTV8a+U80DKMaZxuhSJ5CAjwILsDNhTx + 3IVSKHcxgd+ilZ8rMFPYF67MCIhkQokdgok7CAjwIDwakjR7y1N8lYCuaUHx5m5g + zxtsNSH8lW/3tisU2aVeCAjwIIuvD6K6/Bh0zL07RAj6oJyx6q6dLl/Se7aNu7nV + QiTcCAjxIMInKQEad7ilxhq+HyXNIBUg/kA4pLn/CSsTxdmNi77UCAjwIG8OsFhx + 5Xfj6XjxNEle2n4ODQiEGyhNV5t72rhcggCcCAjwIAWHPs5vGbXGq+S6PSRKnJtS + ltq5eBuq0bxrMNldAyitCAjwIJuOqlfMi+/VES3i9EKauEJ5p3TVG1pTDbVdbf88 + B8b8CAjxIHWzxfzIjOHWEvIgki7SChNKXQRX1Rn/P1ECeOCXS+/qCAgABYiWDXPX + GQED36Mr//AQEha5S4UztINmFaswTVRI6AjxBGGL5cPwCBbwxjPwZjVsAIPf4w0u + +QyOLCtodHRwczovL2JvYi5idGMuY2FsZW5kYXIub3BlbnRpbWVzdGFtcHMub3Jn + //AQi6M/mGb5529M71c04F8hcAjwIHTSXoHjHsWGuRbaRsu3QLNdk6QQY7R8WzWU + mOc7+4wxCPAg01jytwMO7K6GA80LZ3mbxI2G51iqk2JQmcJ6L4I9cZII8QRhi+XD + 8Ai2QIimGJFT8gCD3+MNLvkMjikoaHR0cHM6Ly9maW5uZXkuY2FsZW5kYXIuZXRl + cm5pdHl3YWxsLmNvbfAQkir30fYfxn06h4vQ74OFMAjxIBwV2Gi/pTIhwfaUbdyj + IoXfJIFms/F0nKBP6GVz3xl4CPEEYYvlw/AIqlQ3ujOnrdIAg9/jDS75DI4uLWh0 + dHBzOi8vYWxpY2UuYnRjLmNhbGVuZGFyLm9wZW50aW1lc3RhbXBzLm9yZw== + -----END OPENTIMESTAMPS GIT TIMESTAMP----- + +Timestamp \ No newline at end of file -- cgit v1.2.3