Hello all!
Here are the minutes from this week's meeting:
* Services team experimenting with Minikube for providing a Kubernetes based
development environment.
* RFC approved after last call: Migrate WMF production to PHP 7
<https://phabricator.wikimedia.org/T176370>
* For dropping support for PHP 5.6 with MW 1.31, a few bits of code still need
to be fixed that are not compatible with PHP 7:
<https://phabricator.wikimedia.org/T172165#3758081>
* Last Call: TechCom proposes to decline “MediaWiki Action API is a unique API
specification” because it does not offer an actionable solution to discuss and
does not address the issue of migrating existing client code.
<https://phabricator.wikimedia.org/T180096>.
* IRC discussion next week: MediaWiki platform architecture topics for the dev
summit. Please let use know what you think the most important topics for the
MediaWiki platform are, with a one to five year horizon. Discussion before the
meeting is encouraged, see <https://phabricator.wikimedia.org/T183313>
* Please also provide input on the other sessions planned for the Developer
Summit: <https://phabricator.wikimedia.org/project/view/3119/>.
Keep in mind that this year, the summit is about strategic direction, not about
concrete engineering issues.
* TechCom had a triage session. We went over 20 of about 100 RFCs in the
“backlog” and “under discussion” columns of the RFC board to check on the status.
You can also find our meeting minutes at
<https://www.mediawiki.org/wiki/Wikimedia_Technical_Committee/Minutes>
See also the TechCom RFC board
<https://phabricator.wikimedia.org/tag/mediawiki-rfcs/>.
--
Daniel Kinzler
Principal Platform Engineer
Wikimedia Deutschland
Gesellschaft zur Förderung Freien Wissens e.V.
Hello,
A recent incident post-mortem improvement was to create a one hour
buffer between the last Service/SWAT deploys and the MediaWiki Train[0].
We addressed that on Tuesday already by removing the Morning SWAT window
(was at 11am Pacific).
Now we are addressing that on Wednesday by moving the Morning SWAT
window one hour earlier (to 10am Pacific). This is effective as of next
week (Jan 15th).
As always, please see the Deployments calendar[1] for the canonical
source of what is scheduled when.
Best,
Greg
[0] https://phabricator.wikimedia.org/T182733
[1] https://wikitech.wikimedia.org/wiki/Deployments
--
| Greg Grossmeier GPG: B2FA 27B1 F7EB D327 6B8E |
| Release Team Manager A18D 1138 8E47 FAC8 1C7D |
We just had to rollback 1.31.0-wmf.16 from group1 (eg: all
non-wikipedias), so -wmf.16 is only on group0 at this time.
The issue is a data corruption bug[0]. The relevant people are aware.
Reminder that we have a task for each train rollout to track (potential)
blockers; the one for this week is [1]. You can follow that task to
track future progress.
Additional reminder that you can use the "Wikimedia MediaWiki
versions"[2] tool on Toolforge to know which wikis have which version at
any time.
Greg
[0] https://phabricator.wikimedia.org/T184749
[1] https://phabricator.wikimedia.org/T180749
[2] https://tools.wmflabs.org/versions/
--
| Greg Grossmeier GPG: B2FA 27B1 F7EB D327 6B8E |
| Release Team Manager A18D 1138 8E47 FAC8 1C7D |
Hi Everyone,
I am an undergraduate student from India, and I plan on taking part in the
google summer of code through your organization. I am interested in
frontend development, also I like working in C++. Can you please help me
out in moving forward.
Regards,
Sonali Patro
Contact: 00917381809123/0097455579707
Hi everyone.
We are making some exciting changes in TechOps!
The Technical Operations team in the Technology department is possibly the oldest team in the organization. Originating from a group of volunteers (Mark being one of them) that enjoyed building and maintaining this up-and-coming, soon to become global top-10 web site as a hobby, the team has always focused on the challenge of keeping Wikimedia’s sites, services, and infrastructure working as well as possible. They did this at first on what can only be described as a shoestring budget, and still with modest resources today (more on this later).
Over time the team has grown to a professional staff of currently 18, with a pretty flat structure. Besides the other two sub teams (Traffic and Data Center Ops) that do have a clearly defined scope, most of the team’s members as well as the majority of TechOps’s responsibilities still reside in the “Core Ops” sub team.
To strengthen the team as it continues to grow in responsibilities and membership we’ve decided to make some changes to the team’s structure, its leadership and its public profile.
Starting with the latter, we've decided to rename the team from Technical Operations to Site Reliability Engineering (SRE). SRE is a relatively modern term that more accurately describes the type of work the Technical Operations team has been doing for the past few years to some extent, as well as the path where it needs to grow into. Coined by Ben Treynor of Google, it’s now widely used across the industry. SRE describes a discipline where the emphasis is on the software engineering aspects of the work, with a focus on tools development and automation rather than human labor. Our hope is that this name change will more accurately represent the work and will help with recruiting into the team.
Second, we will increase the team’s management capacity. As the responsibilities and management/coordination/planning needs of the team kept growing, Faidon has stepped up and increased his involvement significantly. For example he covered for Mark during his paternity leave, and he has played a key leadership role in our efforts in the lawsuit against the NSA. In my time at the Foundation, I have come to rely on Faidon’s judgement, his ability to execute, and most of all on his leadership. So in recognition of Faidon’s important leadership role and responsibilities in the team, he is promoted to Director of Site Reliability Engineering. Well done Faidon!
Mark and Faidon both will now be “Director of Site Reliability Engineering”, reporting to me. They will share some of the responsibilities of the team, such as its roadmap, and CapEx and OpEx planning and execution, as they have been doing for some time now. Each will lead one of two new sub-groups, “Service Operations” led by Mark, and “Infrastructure Foundations”, led by Faidon. The team will continue to operate as a single group responsible for the organization’s broader Site Reliability Engineering function, with both Mark and Faidon as leaders of the respective groups.
I also want to offer a few words about Mark. Mark exemplifies our values and we wouldn’t be the same without him. pubFrom driving servers around in the trunk of his car at the earliest days of the projects to building and running an exemplary team that has consistently delivered 99.98% uptime for the world’s fifth-most popular website, his work has been nothing short of heroic. He has done this with a team of 18 people, which many in our industry find incomprehensible.
Both Katherine and our Board have recognized that delivering this level of performance with our radically efficient team is not sustainable as we continue to grow and make steps towards our strategic directions of knowledge equity and knowledge as a service. Katherine has asked, and the Board has unanimously recommended, that we step up our investment in the team. I am thrilled at their support which will enable our SRE team to have access to additional resources within the current fiscal year.
Last but not least, and in an effort to return to his earlier days in the projects (and, in his words, an attempt to gain back some respect from his technical colleagues :-), Mark will dedicate two days a week to individual technical contributions in addition to his managerial work. Mark, thank you for your remarkable contributions!
Finally, I wanted to share more detail on our new sub team structure and scope.
Data Center Operations
The existing Data Center Operations sub team continues as-is but will now be managed by Faidon. The team, consisting of Rob, Chris, and Papaul, is responsible for all of Wikimedia’s data center deployments and logistics as well as maintaining our presence in 8 locations across the world. They perform on-site work and maintain the full 5-year life cycle (specs, purchasing, physical install, break/fix and decommissioning) for all hardware.
Infrastructure Foundations
This new sub team will focus on building and maintaining our base platform (“metal cloud”) that forms the foundations upon which nearly everything else in our infrastructure builds upon. On top of our bare metal deployments, their responsibilities include (but are not limited to) configuration management systems, infrastructure automation, orchestration tooling, logging, metrics and monitoring as well as infrastructure security. This team consists of Riccardo, Filippo, Keith and Moritz, who will report to Faidon.
Traffic
The current Traffic sub team remains unchanged in membership, scope, and management. They are responsible for the critical first layer of high-traffic infrastructure which now spans much of the globe, including our TLS termination and caching layers, load balancing, DNS and our own network. The members of this team are Brandon, Emanuele and Arzhel as well as Valentin Gutierrez, our newly hired Traffic Security Engineer who will be starting on February 12th. They report to the team’s technical lead and manager, Brandon, who in turn will continue to report to Mark.
Data Persistence
The new Data Persistence sub team will focus on Wikimedia’s persistent data storage and retrieval systems, including (No)SQL databases, (distributed) object storage, file storage and backup systems. Today, this team will start with just our two database administrators, Jaime and Manuel, but the expectation is that this team will be built out in the near future with additional hands and expertise. They will report to Mark.
Service Operations
Finally, the Service Operations sub team will take care of public and “user-visible” services alongside Technology and Audiences teams. This includes, for example, our big MediaWiki platform, but also the newer (micro)services that comprise our stack. It also includes miscellaneous services and components that we rely upon (think Phabricator, mail systems, OTRS, etc…). The team will continue building our new SOA service infrastructure based on Kubernetes. Its membership will consist of Alexandros, Giuseppe, Ariel and Daniel, reporting to Mark.
Please welcome our new SRE team!
Victoria (with a lot of help from Mark, Faidon and the SRE team)
Hi everyone -
We're excited to have a special guest present on the Open Web Application
Security Project
<https://www.owasp.org/index.php/About_The_Open_Web_Application_Security_Pro…>
. Information security expert Dave Wichers
<https://www.owasp.org/index.php/User:Wichers> will will discuss the new OWASP
Top 10 - 2017
<https://www.owasp.org/images/7/72/OWASP_Top_10-2017_%28en%29.pdf.pdf>,
which encompasses the ten most serious web application security risks from
last year.
The OWASP Top 10 is a powerful awareness document for web application
security. It represents a broad consensus about the most critical security
risks to web applications. Project members include a variety of security
experts from around the world who have shared their expertise to produce
this list.
Please join us for this presentation on Wednesday, January 10 at 11:30am PT
(19:30 UTC). You can join remotely via the following:
Youtube: https://www.youtube.com/watch?v=wf1SfipLLzE
Google Hangout: https://hangouts.google.com/hangouts/_/wikimedia.
org/hold-owasp-talk
Feel free to use the #wikimedia-office channel on IRC to ask any questions.
Hope to see you then!
--
Lani Goto
Project Assistant, Engineering Admin
Hello,
I'm pleased to announced that Contributors team has released OOUI
0.25.0 last evening. It will be in MediaWiki core from 1.31.0-wmf.17,
which will be deployed to Wikimedia production in the regular train,
starting on Tuesday 18 January. As there are six breaking changes in
this release, at least nominally, please carefully consider if they
affect your code.
Breaking changes since last release:
* Drop the `constructive` flag entirely (James D. Forrester)
We've identified that we are providing a better experience with a
smaller number of different button types in our use cases and after
outreaching, testing and consolidating from it's starting patch Feb
2016 we finally get rid of the last remainders of this button flag
with this release.
* Remove `BookletLayout#getClosestPage` (James D. Forrester)
We rename a number of getters when asking for one of 0+ items for
consistency reasons.
This and the following three changes are all around this topic.
* SelectWidget: Remove `getFirstSelectableItem` (Prateek Saxena)
* SelectWidget: Remove `getHighlightedItem` (Prateek Saxena)
* SelectWidget: Remove `getRelativeSelectableItem` (Prateek Saxena)
* icons: Drop 'watchlist', deprecated in v0.23.1 (James D. Forrester)
'watchlist' icon was unused and we had no further plans to start using
it, therefore removed it completely.
Deprecations since last release:
* GroupElement: Rename getItem(s)FromData to findItem(s)FromData
(Prateek Saxena)
Similar to the breaking changes above, this and the following two
changes are for naming consistency reasons.
* MultiSelectWidget: Rename getters (Prateek Saxena)
* SelectWidget: Rename `getSelectedItem` to `findSelectedItem` (Prateek Saxena)
* icons: Flag indicators 'previous' & 'next' as to be removed (Volker E.)
In our quest to make OOUI core leaner, we've identified that those indicators
originally planned for a certain use case, never came into use.
You can still reference similar 'previous' & 'next' from 'movement' pack.
* icons: Rename 'arrowLast' to 'arrowPrevious' (James D. Forrester)
We're also renaming 'arrowLast' for consistency reasons to 'arrowPrevious'.
* icons: Remove 'eye'/'eyeClosed' icons (Volker E.)
We want to use 'alerts' pack more deliberately in major products and
moved 'eye'/'eyeClosed' out. They were deprecated in v0.23.0 in 'alerts'.
Use icons from 'accessibility' pack instead.
Please update your icon pack references accordingly in case you're
using one of those icons.
A personal highlight of this release is that with the various SVG
markup optimizations in this together with removal of pre Opera v15
special treatment in last minor release we've accomplished to bring
down the icons from ~180 KB to ~120 KB before or 1.8 KB of after
gzipped critical rendering CSS.
Additional details on 11 new features, 42 code-level and accessibility
changes, 18 styling and interaction design amendments, and all
improvements since v0.24.0 are in the full changelog[0]. If you have
any further queries or need help dealing with breaking changes, please
let me know.
As always, library documentation is available on mediawiki.org[1], and
there is some comprehensive generated code-level documentation and
interactive demos hosted on doc.wikimedia.org[2].
[0] - https://phabricator.wikimedia.org/diffusion/GOJU/browse/master/History.md
[1] - https://www.mediawiki.org/wiki/OOUI
[2] - https://doc.wikimedia.org/oojs-ui/master/
Best,
Volker
--
Senior UX Engineer, Contributors
Wikimedia Foundation
volker.e(a)wikimedia.org | @Volker_E
https://www.mediawiki.org/wiki/Scrum_of_scrums/2018-01-10
== Callouts ==
* Search PF would like somebody from performance/MediaWiki team to look at:
https://phabricator.wikimedia.org/T183101we’ve got some fails on
LinksUpdate which blocked search index update which makes Wikidata items
invisible in search (~50 items)
** [Perf] We've been looking at it, but we haven't identified a cause for
this issue yet.
** [SP] I guess we will just watch out for it and hope it was an one-time
thing.
* [Perf] Trying to compile a list of everything running in Prod that
*requires* Zend PHP5. Currently only aware of the XML dump job (has syntax
errors in output if run under HHVM). Anything else, please reach out to
Ian (email: imarlier@, irc: marlier)
* Reminder: Whitelist your EventLogging schema if you want data older than
90 days to be retained, talk to the Analytics team if you're not sure what
this means
== Audiences ==
=== Readers ===
==== iOS native app ====
* Blocked by: none
* Blocking: none
* Updates:
**Continuing work on 5.8 - synced reading lists
==== Android native app ====
* Blocked by: Patch to unblock DELETE endpoints in varnish:
https://gerrit.wikimedia.org/r/402433 DONE!
* Blocking: none
* Updates:
** Completed work to integrate with the new Reading List service!
Continuing to test and measure performance.
==== Reading Infrastructure ====
* Blocked by: ops on https://gerrit.wikimedia.org/r/#/c/402433/ <= this is
already merged since 2018-01-09
* Blocking: none
* Updates:
** working on request batching in reading list service
** continuing work on WP0 piracy
** Summary endpoint switchover from TextExtracts to PCS implementation
planned for Wednesday
** wrapping up media and references endpoints
** metadata and CSS endpoints to follow
==== Web ====
* Wrapping up a rework of the mobile web beta/settings page.
* Nothing new to report with regards to challenges/deliverables
==== Maps ====
* Blocked by: Services team
* Blocking: None
* Updates
** Everyone is back from vacation
** Several issues waiting on service team
==== Multimedia ====
* Nothing to report
=== Contributors ===
==== Parsing ====
* Sole update: Approaching additional wikis for replacing Tidy on those
wikis on Jan 31st.
==== Global Collaboration ====
* Blocked: Security on https://phabricator.wikimedia.org/T144467
* Blocking: Ops on Flow dumps. Matt's back from sabbatical but has been
sick off and on over the last week
=== Community Tech ===
* Investigating new year's proposals
* Will file for security/performance/DBA review for GlobalPreferences today
==== UI Standardization ====
** OOUI v0.25.0 released
https://phabricator.wikimedia.org/diffusion/GOJU/browse/master/History.md
*** 6 breaking and 5 deprecating changes, and 16 UI related improvements,
among those
**** Drop the `constructive` flag entirely
**** Remove `BookletLayout#getClosestPage`
Also we significantly reduced SVG file size for our interface elements by
up to 21% with fine-tuned markup optimizations.
* Ongoing:
** OOUI & based products:
*** icons: Unify, refine and align to WikimediaUI Style Guide
https://phabricator.wikimedia.org/T177432 – first patches in:
https://gerrit.wikimedia.org/r/#/c/402757/
** More optimizations/size savings for RL embedded SVGs as data URIs
== Technology ==
== Technical Operations ==
* Blocking:
** None
* Blocked:
** Global Collaboration on Flow. https://phabricator.wikimedia.org/T172025
* Updates
** s5 => s8 migration for wikidata completed successfully. Feel free to
reach out to DBAs for followup questions and/or details
** meltdown/spectre week, ops busy with the mitigations, do expect some
slower response times
** This is a big hardware refresh quarter. Work is already decided and
prioritized, but please do provide input when/if requested ASAP. Thanks
=== Release Engineering ===
* Blocking
** None?
* Blocked
** ops: zuul package update (blocks gerrit upgrade)
** ops: node-tunnel-agent package update (blocks moving node testing to
docker in ci)
* Updates
** 2 weeks of normal MediaWiki deploys (this and next) followed by 2 weeks
of no MediaWiki but SWATs as needed (DevSummit/All Hands followed by RelEng
team offsite)
** Currently building nightlies of Mediawiki on the new “releases” (aka
non-CI) Jenkins host. Working with Security on best way to handle security
patches (which is the goal, to ensure security patches stay cleanly
applicable).
=== Performance ===
* Blocking: None
* Blocked: None
* Updates
** As noted above, we've been investigating LinksUpdate failures, haven't
been able to identify a cause at this point, haven't been able to reproduce.
** Fixes to Thumbor implementation happening as issues are reported (no
major ones at this point)
** Published the first in a series of blog posts detailing how we measure
performance:
https://phabricator.wikimedia.org/phame/post/view/83/measuring_wikipedia_pa…
** Trying to get a list of everything running in Prod that *requires* PHP5
(Zend) -- only thing that I know of for sure is the XML dump job.
=== Security ===
* No updates
* Sam and Brian are traveling this week
* Darian's last day is January 15th
=== Fundraising Tech ===
* Blocking: None
* Blocked: None
* Updates:
** Upstreaming stuff to Civi
** Making our Amazon Pay SDK fork support TCP proxy
** Re-starting work on new API for our main credit card processor
** Stats projects:
*** Andrew Green's druid banner impressions lib:
https://github.com/AndrewGreen/centralnotice_analytics
*** Jack Gleeson's stats collector:
https://github.com/jackgleeson/stats-collector
*** More consideration of how the get banner stats to payments in realtime
(talking with Analytics)
*** Also need to talk with analytics about preserving aggregated banner
stats for December
=== Scoring Platform ===
* Blocking: no
* Blocked: no
* Updates
** We added Extension:ORES to in-house code coverage reporting :D
*** https://doc.wikimedia.org/cover-extensions/ORES/index.html
*** https://scrutinizer-ci.com/g/wikimedia/mediawiki-extensions-ORES/
=== Analytics ===
* https://superset.wikimedia.org You can now create dashboards on top of
druid data, no automatic user creation. Created users for PMs and analysts,
let us know if you want a user. Perf to be seen.
* Clickstream data now public. Research community has access to the paths
readers follow through the site (aggreggated counts, not per user)
* Eventlogging purging on master box almost done.
* Working on wikistats UI bugs and small features to make project selection
more friendly, once the UI tweaks are done we will leave this work on
backburner until next year.
* Work on new set of APIs to return pageviews per country continues.
Privacy study of this data:
https://wikitech.wikimedia.org/wiki/Analytics/AQS/Pageviews/Pageviews_by_co…
* Meeting with Asaf for our next big project: geowiki (editors per country,
quite sensitive data)
** Mostly quiet (holidays)
=== Search Platform ===
* Blocked by: none
* Blocking: none
* Updates:
* Improving LTR training mechanisms (
https://phabricator.wikimedia.org/T184547)
* Working on fixes for completion suggester & redirects namespaces (
https://phabricator.wikimedia.org/T115756)
* Investigating ElasticSearch phonetic search (
https://phabricator.wikimedia.org/T182708)
* Working on refactoring search profiles to make them more config-like
https://phabricator.wikimedia.org/T183279
* Processing feedback for Wikidata fulltext & prefix search rankings
* Running test for machine-learning ranking on Hebrew wiki (
https://phabricator.wikimedia.org/T182616)
* Discussing publishing data from WDQS query logs (
https://phabricator.wikimedia.org/T143819)
== Wikidata ==
* Gaining speed after the holidays.
* Working on Lexeme continues, now working on diffs:
https://phabricator.wikimedia.org/T182424
* Working on Quality Constraint integration continues, 1.0 rollout planned
for Q1.
* Preparing for Developer Summit.
* Planning collaboration with Multimedia (MediaInfo) as well as Search for
Q1.
== MediaWiki Platform==
* Blocked by: Wikibase on https://phabricator.wikimedia.org/T183019
* Blocking: N/A
* Updates:
* Tim: Spectre/Meltdown review
* Multi-Content Revisions:
** Actor table: 380669 needs code review
** Working on https://phabricator.wikimedia.org/T36925 and
https://phabricator.wikimedia.org/T182678
** Comment table:
***Schema changes are almost done. Then we can start trying to use it.
** cleanupUsersWithNoId:
*** enwiki finished
*** Hopefully dewiki and wikidatawiki can be run this week
* ExternalStore de-PHP-serialization: Patch done before vacation. But Jaime
raised some interesting discussion on
https://phabricator.wikimedia.org/T183419 that may determine how we go
about updating ExternalStore
* Code coverage:
** Added a bunch of @covers tags in core, we also validate them pre-merge
now (see giant spike in
https://tools.wmflabs.org/coverage/mediawiki/chart.png )
** Implemented coverage reports for extensions (
https://phabricator.wikimedia.org/T71685,
https://doc.wikimedia.org/cover-extensions/ ), still in a beta period, will
announce as ready for usage end of this or next week once
https://phabricator.wikimedia.org/T182749 is implemented and documented
** Brainstorming/working on proof of concept for pre-merge coverage reports
that don't take hours to generate
* Audiences Technology Working Group planning
* Developer Summit planning
== SoS meeting ==
* ggellerman has ongoing conflicts, looking for another facilitator every
other week
* Check in on goals here, talk about cross-team dependencies in this
meeting, rather than waiting until the end of each quarter.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Hi,
Nemo generated a list of the top +2'ers for MediaWiki core and
MediaWiki extensions in 2017:
<http://federico.kapsi.fi/crstats/2017-merges.txt>
Thank you very much for all of the code review that you do :-) Special
shout out to Timo with 365 +2's in MediaWiki core - one for every day
of the year!
- ----
Inspired by that, for 2018, my goal will be to review one MediaWiki
patch by a volunteer for each day I'm working. And if I can't find a
patch to review, I'll find an abandoned looking patch by a volunteer,
and fix it up to a merge-able state. I encourage others to take on
this pledge too!
- -- Legoktm
-----BEGIN PGP SIGNATURE-----
iQJLBAEBCgA1FiEE+h6fmkHn9DUCyl1jUvyOe+23/KIFAlpTFhsXHGxlZ29rdG1A
bWVtYmVyLmZzZi5vcmcACgkQUvyOe+23/KLLQg//TRCgSwkRlrGprcYcYJnDlAU3
FfEzgH6j0CEKKSzNnMmkoi75B8QMyCh2UH9VSbjPHCU7AY6ElO1NhGZ/r7fhZLbb
otDYCi7b684K/nGFzw2MlBd4IhERJ6K69jGnzbPOrxeDGnsN8lggsRW/dSM8YYtq
zNCzqQ5ZSHPomCNW9oKiA8xXTS+wddD+++HOLdlTlqiyiyJIhvFuAvtrdXlatLWb
o758HtCaRhI6cegqO7UIhcvtB0rN8AtIqOD/3qoNZKQkcIhCUxQrtKvwCJpyoCTG
p3J/I5aDt6LPVwpRyXLqVYy7h+d+MCiC/pfDdPVJ6D5XT9CiagVnqMSsc/Q5BoF5
VElh47NPAydRRGgprSI6+MpnitSEebUR3kLPWTUlKEp9iLKgGvPWgK64GGgYH1ww
8I4KCWC/HxNPV2ZUCTOFcIhG5bEO0fYSgpydfUJRLjJM/ZO+27bHl6bcBUBrimaG
z7iMVOCziA0nJYdvbdyHWm/xB/wA6IW4LFkqRz+OnP9f4Ntsi3ikdNof6BELROBk
efshfqyZ/N3CWtD2+rQaO6BzdCOIKea1xGG9XbYCaVTCmPDJEe7yq0+yVnDPq+Dh
7WRWrVqdJS5BqJ0MD16u6Q94OVNn+IoEBmP9tnHmZA2PW4KyPjlQWOFU7WpGtkJE
7oRLuvF9iOxA+ThHsE4=
=A7ZA
-----END PGP SIGNATURE-----