# Maintainer: Levente Polyak # Contributor: Jan Alexander Steffens (heftig) # Contributor: Ionut Biru # Contributor: Alexander Baldeck # Contributor: Dale Blount # Contributor: Anders Bostrom # ALARM: Kevin Mihelich # - mozconfig changes for ARM # - disable rust lto for v7 highmem=1 pkgbase=thunderbird pkgname=(thunderbird) pkgver=128.3.1 pkgrel=1 pkgdesc='Standalone mail and news reader from mozilla.org' url='https://www.thunderbird.net/' arch=(x86_64) license=('MPL-2.0' 'GPL-2.0-only' 'LGPL-2.1-only') depends=( glibc gtk3 libgdk-3.so libgtk-3.so mime-types dbus libdbus-1.so dbus-glib alsa-lib nss hunspell sqlite ttf-font libvpx libvpx.so zlib bzip2 libbz2.so botan2 libwebp libwebp.so libwebpdemux.so libevent libjpeg-turbo libffi libffi.so nspr gcc-libs libx11 libxrender libxfixes libxext libxcomposite libxdamage pango libpango-1.0.so cairo gdk-pixbuf2 freetype2 libfreetype.so fontconfig libfontconfig.so glib2 libglib-2.0.so pixman libpixman-1.so gnupg json-c libcanberra ffmpeg icu libicui18n.so libicuuc.so ) makedepends=( unzip zip diffutils python nasm mesa libpulse libice libsm rust clang llvm cbindgen nodejs-lts-iron lld gawk perl findutils libotr ) options=(!emptydirs !makeflags !lto) source=(https://archive.mozilla.org/pub/thunderbird/releases/${pkgver}esr/source/thunderbird-${pkgver}esr.source.tar.xz{,.asc} vendor-prefs.js distribution.ini mozconfig.cfg metainfo.patch org.mozilla.Thunderbird.desktop thunderbird-system-icu-74.patch # https://bugzilla.mozilla.org/show_bug.cgi?id=1862601 ) validpgpkeys=( 14F26682D0916CDD81E37B6D61B7B526D98F0353 # Mozilla Software Releases 4360FE2109C49763186F8E21EBE41E90F6F12F6D # Mozilla Software Releases ) # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) # Note: These are for Arch Linux use ONLY. For your own distribution, please # get your own set of keys. Feel free to contact foutrelis@archlinux.org for # more information. _google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM # Mozilla API keys (see https://location.services.mozilla.com/api) # Note: These are for Arch Linux use ONLY. For your own distribution, please # get your own set of keys. Feel free to contact heftig@archlinux.org for # more information. _mozilla_api_key=16674381-f021-49de-8622-3021c5942aff prepare() { cd $pkgname-$pkgver echo "${noextract[@]}" local src for src in "${source[@]}"; do src="${src%%::*}" src="${src##*/}" [[ $src = *.patch ]] || continue echo "Applying patch $src..." patch -Np1 < "../$src" done sed -e 's|73114a5c28472e77082ad259113ffafb418ed602c1741f26da3e10278b0bf93e|a88d6cc10ec1322b53a8f4c782b5133135ace0fdfcf03d1624b768788e17be0f|' \ -i third_party/rust/mp4parse/.cargo-checksum.json sed -e 's|880c982df0843cbdff38b9f9c3829a2d863a224e4de2260c41c3ac69e9148ad4|239b3e4d20498f69ed5f94481ed932340bd58cb485b26c35b09517f249d20d11|' \ -i third_party/rust/bindgen/.cargo-checksum.json # Make icon transparent sed -i '/^google-api-key printf "%s" "$_mozilla_api_key" >mozilla-api-key cp ../mozconfig.cfg .mozconfig sed "s|@PWD@|${PWD@Q}|g" -i .mozconfig if [[ $CARCH == "armv7h" ]]; then echo "ac_add_options --disable-elf-hack" >> .mozconfig MAKEFLAGS="-j4" # disable hard-coded LTO sed -i '/cargo_rustc_flags += -Clto/d' config/makefiles/rust.mk sed -i '/RUSTFLAGS += -Cembed-bitcode=yes/d' config/makefiles/rust.mk # increase codegen-units due to RAM constraints sed -i 's/codegen-units=1/codegen-units=16/' config/makefiles/rust.mk fi echo 'ac_add_options --enable-optimize="-g0 -O2"' >> .mozconfig echo "mk_add_options MOZ_MAKE_FLAGS=\"${MAKEFLAGS}\"" >> .mozconfig export MOZ_DEBUG_FLAGS=" " export CFLAGS+=" -g0" export CXXFLAGS+=" -g0" #export LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads" export LDFLAGS+=" -Wl,--no-keep-memory" export RUSTFLAGS="-Cdebuginfo=0" CFLAGS=${CFLAGS/-fstack-clash-protection} CXXFLAGS=${CXXFLAGS/-fstack-clash-protection} } build() { cd $pkgname-$pkgver if [[ -n "${SOURCE_DATE_EPOCH}" ]]; then export MOZ_BUILD_DATE=$(date --date "@${SOURCE_DATE_EPOCH}" "+%Y%m%d%H%M%S") fi export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none export MOZBUILD_STATE_PATH="${srcdir}/mozbuild" # malloc_usable_size is used in various parts of the codebase CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}" CFLAGS="${CFLAGS/-fexceptions/}" CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}" CXXFLAGS="${CXXFLAGS/-fexceptions/}" ./mach configure ./mach build ./mach buildsymbols } package_thunderbird() { optdepends=( 'hunspell-en_us: Spell checking, American English' 'libotr: OTR support for active one-to-one chats' 'libnotify: Notification integration' ) cd $pkgname-$pkgver DESTDIR="$pkgdir" ./mach install install -Dm 644 ../vendor-prefs.js -t "$pkgdir/usr/lib/$pkgname/defaults/pref" install -Dm 644 ../distribution.ini -t "$pkgdir/usr/lib/$pkgname/distribution" install -Dm 644 ../org.mozilla.Thunderbird.desktop -t "$pkgdir/usr/share/applications" install -Dm 644 comm/mail/branding/thunderbird/net.thunderbird.Thunderbird.appdata.xml \ "$pkgdir/usr/share/metainfo/net.thunderbird.Thunderbird.appdata.xml" for i in 16 22 24 32 48 64 128 256; do install -Dm644 comm/mail/branding/thunderbird/default${i}.png \ "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/org.mozilla.Thunderbird.png" done install -Dm644 comm/mail/branding/thunderbird/TB-symbolic.svg \ "$pkgdir/usr/share/icons/hicolor/symbolic/apps/thunderbird-symbolic.svg" # Use system-provided dictionaries ln -Ts /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries" ln -Ts /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation" # Install a wrapper to avoid confusion about binary path install -Dm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <=$pkgver") install -Dm644 thunderbird-i18n-$pkgver-$1.xpi \ "$pkgdir/usr/lib/thunderbird/extensions/langpack-$1@thunderbird.mozilla.org.xpi" } _languages=( 'af "Afrikaans"' 'ar "Arabic"' 'ast "Asturian"' 'be "Belarusian"' 'bg "Bulgarian"' 'br "Breton"' 'ca "Catalan"' 'cak "Kaqchikel"' 'cs "Czech"' 'cy "Welsh"' 'da "Danish"' 'de "German"' 'dsb "Lower Sorbian"' 'el "Greek"' 'en-GB "English (British)"' 'en-US "English (US)"' 'es-AR "Spanish (Argentina)"' 'es-ES "Spanish (Spain)"' 'et "Estonian"' 'eu "Basque"' 'fi "Finnish"' 'fr "French"' 'fy-NL "Frisian"' 'ga-IE "Irish"' 'gd "Gaelic (Scotland)"' 'gl "Galician"' 'he "Hebrew"' 'hr "Croatian"' 'hsb "Upper Sorbian"' 'hu "Hungarian"' 'hy-AM "Armenian"' 'id "Indonesian"' 'is "Icelandic"' 'it "Italian"' 'ja "Japanese"' 'ka "Georgian"' 'kab "Kabyle"' 'kk "Kazakh"' 'ko "Korean"' 'lt "Lithuanian"' 'ms "Malay"' 'nb-NO "Norwegian (Bokmål)"' 'nl "Dutch"' 'nn-NO "Norwegian (Nynorsk)"' 'pa-IN "Punjabi (India)"' 'pl "Polish"' 'pt-BR "Portuguese (Brazilian)"' 'pt-PT "Portuguese (Portugal)"' 'rm "Romansh"' 'ro "Romanian"' 'ru "Russian"' 'sk "Slovak"' 'sl "Slovenian"' 'sq "Albanian"' 'sr "Serbian"' 'sv-SE "Swedish"' 'th "Thai"' 'tr "Turkish"' 'uk "Ukrainian"' 'uz "Uzbek"' 'vi "Vietnamese"' 'zh-CN "Chinese (Simplified)"' 'zh-TW "Chinese (Traditional)"' ) _url=https://archive.mozilla.org/pub/thunderbird/releases/${pkgver}esr/linux-x86_64/xpi for _lang in "${_languages[@]}"; do _locale=${_lang%% *} _pkgname=thunderbird-i18n-${_locale,,} pkgname+=($_pkgname) source+=("thunderbird-i18n-$pkgver-$_locale.xpi::$_url/$_locale.xpi") eval "package_$_pkgname() { _package_i18n $_lang }" done # Don't extract languages noextract=() for _src in "${source[@]%%::*}"; do case "$_src" in *.xpi) noextract+=("$_src") ;; esac done sha512sums=('9fef04a0c498eb16688c141cb7d45e803ecc75ea6fc6117ff8ad1e6b049716f49b435f3e5a1baa703fa937e25483137e22256e58572eeacf317de264b961ba6a' 'SKIP' '6918c0de63deeddc6f53b9ba331390556c12e0d649cf54587dfaabb98b32d6a597b63cf02809c7c58b15501720455a724d527375a8fb9d757ccca57460320734' '5cd3ac4c94ef6dcce72fba02bc18b771a2f67906ff795e0e3d71ce7db6d8a41165bd5443908470915bdbdb98dddd9cf3f837c4ba3a36413f55ec570e6efdbb9f' 'a34dd97954f415a5ffe956ca1f10718bd164950566ceba328805c2ccbb54ed9081df07f2e063479bf932c4a443bb5b7443cca2f82eea3914465ed6e4863e0c0e' '7e43b1f25827ddae615ad43fc1e11c6ba439d6c2049477dfe60e00188a70c0a76160c59a97cc01d1fd99c476f261c7cecb57628b5be48874be7cf991c22db290' 'fffeb73e2055408c5598439b0214b3cb3bb4e53dac3090b880a55f64afcbc56ba5d32d1187829a08ef06d592513d158ced1fde2f20e2f01e967b5fbd3b2fafd4' '9897cb0ababc8e1a0001c4e1f70e0b39f5cdb9c08c69e3afd42088dfd001aa1fc6996cd83df0db1fb57ee0a80686c35c8df783108408dbe9191602cddd1e3c65' '94fc0d5210f0cb39fb4e7c8b97b467c6a8cb6d6fbebf813cec3c59c9b485bc343f04f47c7ce8c85debae1d75c9fed4c6bf0b79ea901014b401ecfa947627e602' '51ddb27f1411b867ab83c0dc92449a223a4fc5597fa1041f7a477859cb149f128ae0d7a5d25b178bb5b15a6384145eb9a20a5b60945778d11ca6db3280508c2d' '6c7b68f2ed1e346c294890868710b8ed60226df6f147aa78a1a5ce28b5bccd20456d85bca59d02917bf954ea4eee10d1a9b1265e1cd773c99959661f0b9ef39f' '6e1060ce382273be3b0a9560cc8fa70b76d1da0db8bb922122911d54f58ec49f1e1607067a2e441e1a9cdebdf5bb02916dd6fba11981a4d4e73ce14c2bbd8ba3' '7e1a9a81faaed5fd49e2fe6e5edb1776a2d88d07c304ca33701a1c08c869889b46024496ab83a9da1b23aa33953841de871753d739c297d43df59194af880838' 'd9e6d831a67c35320104c8ceaf2404bec39dd9aca0ac310d01867e05a2561fb84221f7776706cdd1c75a862f6f30088278d677ea82467972650a1275436e6d0a' '48d511bfd3b2b9df0295dc821101cdd1f92f4e2190b73db8c4dfa37ac4d450f635d057db074fda17dd20356662b67618d711e615a721af303ba9d0418a318493' '1391a3d002a504aba580b0f16d4b415156bfa26ba6af882e35f8db297f19aff8819fa613b5d15a27a41d16c9d5ee98aa821b99abbab45784741f673cce1a43f4' '4fa1f1a42f38569216f0d342505cccaf42e3e30d616b660ad01101a9087e75874434479663dadfb4e5823af1bece4a1576e5a994db01bff81c02bc21eb6eddcc' '2a63630545ce9b202e2f2cf22e99d9ade7c22d4d0de7c18d2c277b1a2b7e6a476c57070876968440c044e29c20d0e41ad1c948594d74691696de6aee266496b7' '9d4f21c2d0d80432b0557bc51a5c53cde8173d656dc010a8af51f67d89225937ef0de718c25b9ecf7cf7fb680a9497dcd6373ab4deacc73c0e86057c4f72a625' 'aff87c60c328fb91527dac870daf83c2a2382c99fa0b7666e2e38a75ef0b2bcf6c51337db66c5f0bc3d511c8dcd932cae6a25e8cbd34429ea797e3aaca7a6c74' 'f19b2f6c1e7c1f8a9e47a971c1846f85faf054650c8dfbff920c4c596bb9650fe0967b7298daf4bdf1be38f2aba1dc60ec004a16b56f92de22d7435c64bdaff4' 'ac6c5869e33b5c1664788b49e737798a14477619a376487d4ec97d78b330fc3ee41b15f2ffd85f4b8b99d684b12d6f5e7faac6bdc25a99a8cf0bca9a80034580' '86d7248ae9993667e02a17db562450c46087347de97c11baf05319627b464f3a2703ad42cb6fb1c440d100ffb5edf92a5f85f71cbc5219ea3b5eea74acef4f2a' '4b4fa9f23fd714527b0177370bd3fe3f56a8b8e4fd01e725492bbab92323c547dc403a043beb9fac2b0ccd3ee6b7e3cdd6a86cbfdcbc8a9b5112c3411b6b7a52' '23a150e7a5d2332ef16fba319845ba93e7f2d3bdd21cfeb0e1190583ac14e059c6247fd855a849a50f5de745f2ef2a0adf13d857a0c5ec761d47bbd0a8009dfb' '734e9c959fa35c888683f31231a67307bf2d7a0c32391386ad6eed14fbe89b3fa128f471d309de5afdafb19abea17637ac81746f96e30942111197459258c183' 'b42308e119a99c01ba655c1f57c6303ddc9ae484efeb717e07577fbdaeb0071f4c57997df878bccc0879d912e3c494ccc1ee55acf2174601b1fcd667fd5ae8db' '24fd87a84be40efad77f3b008f28824d3bf3dd4bf54693050acc645be6efe3d7bf3b9bc83ff293335967e62435127119ba5c92368eb4c8d6283b5a846c40bdb1' 'f49b869c8809506ebec38f59845fa8812116e8dc4d2d97e65230b1d6c67b1214ff7e9eadf68ddfbd3cb8fff8588d6632d1870cd6e2fd7a86ef84e07b908a56c7' '0a67096cf314c57747bcb5d84fe868b52f8c4a4ee96a6d202decca2adf878c24c296abce34a37ee8b11a57c2fac501f2c3bcd79e13cad9a7b0895a88dba4ee2f' '84956ffb9f8e120a697c8f99a19e80b26e1fe3f4e406acdd162c9a166d8b61e5361563271b83bd85bb83e4e902d77b911543c9384330e209763f4e9fd45ca176' 'c8ad24864c0f68e26f19e0bc4e4912b5acc76d6ee7bdc662d6e025d9d0fd9e12dce0984901c5c1a224a4ea28b3567e8881d0e5e1e529141f71f0aed35c2e2dac' 'a8dd8c77f290fc884e4af607fe339603a8d540edd5a591949d5208c8346d4c70b47f89fb57e0961af0489525fd141ade67e8970930bda9b48e9467ce55f112e7' '41a14cb55016fc157ac8cde8baaa0f7161657591be64e29a2b4e2e33dacc095de599f00800e6d3bebddd1d2ee844f5609b68cd1e90431dcacbc86c607624e577' '2ac67ec9ab2096f2509a9fbdd05a14eb68aeb1c9c5aff2ce65cd6bffa12c2d54c4d4323f12ef3b3a515ea1acf38cb6417368cd9591f2d9ce7bf6705a715a79f6' '40662e692263d3f2730dbdbe15ea03de8b0ebb5ac410adf9bff1310bac78a971f5ded08eb3ca68785983b1d9362528cb88869a42754050fae380e5159f959deb' '0b726134b4dcce386aa37e6738b1a36ed5bad93128b8894222a284a5237cd2352bd217937080f39183d5b13d68a0c952b7e53cf53497b5bce306f60cfbfa72f4' 'd9536d8e34b08a44d7863b98c989bdece5eb4829b80f0b29f66cf60baeed0f9fa7af342841d8f71e032a128d5d56b904a7ea9457e0e8b24fdd70906a69824241' '64d9e6b637b546aa65688ca32493631e3ea9e0b8b18be81343e8633a4805382f329b694f7b8ff6880440a25a8eebd117466a2c03c416a2910b4f49c8c9ae7ec8' 'd412dcafc272ea401f531977cf09544ee2f9dd4e878e8797f0878f1b646b53894ff80d690b867219160c01663c9ca8faf7c88ce851148dd700b8e7933605c501' 'f67cafcf3f84e8d3fc52963f13ea58511d068bbbc6a0be04f738b883d669742c5f48232e764be9ee9399686bd7bbe357e36d47da111e962d2a2f3d1ecfe9df1e' '7c03bdb593ba110f23bda0c9561c61b81788a5c821cd5bd2fa97bf1f85f78688ad029dbeff4d9bafd36b9e433b6f8a1308bce01512a1f8b3cffb6c756eaa1d21' '1a03036cb2ec2db8c61c407940064e6998755480fa9c2bf61d39c9f4fae735b0dafd2c9b935af10b478737170da18087e1b0a7820b0bc4289b044fb5c96e4b2b' '38a8c26e917f2bf4d0035653d2871da5d7e5d5c4f0f0f14836d5553683a088c267e954398134d8fa2a668167bb2bd36539fa34e132b46c417071caa9160a7188' 'ba53e8f5c5ad17486473200eaab2ceea7d663d7b178b6fa0a1a9e8e7ade4faa2ff1948b4d05741dd804a5d93b0797f13ada29dd0a6d704a7226400c295448f53' '57d069ce098dcdfc0044d375766eae416bd0ccc3d997d183cb5efdbcce412f4f6cd64454c84cd9d7b769b77a448094d749f5395735d73f02574ad27349fdf9b8' 'a5672fd652e1af511556ea9612a16bd8ddbc33e23facfc40871eec90669dd0c9754f38d1eba15c32f9ae9e23354dac19f7f166db95a715248517a3d0565be2a8' 'c272309e0fc1eaecebd20627df109e678d3de7223bb9d845d6086fc4e756a26c4569e52250b9ea026d1e609fb0d014675f6a67c27766d2c0aee33e8f8acadc44' '440a179b153a316b880ccce8ac35686bd06510d793f0aa863062a1b72c269551cffa27c430c72eebd9aed04a3b356fc15fcaf81d65edd2fa62ede97e1bbac75f' '5e5c72d839d05b15415941bf23ddcb78e0c9286b191e85ec479a793c897afbba7f124225c532c02aa677858984d2744c9dbe47fc98ebfa29b206f491ed59df9f' 'd22459abdd5570f0dc65ae97c2437eb9e14e76a29387819d7f54052f201ba94ea1c2ffcb480126f07e344daafa703eb85849a68ee6af2b5cced92c33637ecc78' '5586e31179704ea048d6eac06fd5383d27fc6795d07579c8e13b96d9e4cd06c61f80c58ef028772f05822f2b18548499e847656090d55ff09b9ed06f60fdb9de' '59636cdb78d3e56f026cd1df46afdd6ad800a2f2ef05cde186aca784856a06b0315cda9f3cb01f85437fcceffd75d1a8483a229bbbc828391fe122861d4a55ab' '7910af4ba77f85ca85af23fb03ceb34ad283dbd014d80161194307dc90e2f1446ed48c83aa11ee6e76b798d73172eb89443750f3c17a54a85bbf2c5cad77efc8' 'b7ad7f6e6922b1a07e9e7bffd7bae1caa13e9399a7eb66ad8baea7ec1b971059877abe93e908178c371c52efef341534d2aa08112aaab03cf1e5edb17c1e74ab' '32eb8d741b94bbb31d493445fb6235d3c884c3a15af3f833882271182a89f68599b6784b60a69b5197365c40d424bac21d983f57a07ebc7d20f6f92a174db963' 'd83f819b11035b6d8519b497c2224dffdc5b857674202608129023201b15c1fe4c0f7e8630c08899f2cd6d7d70a04c1a69b4b69ec23b70abdfd20249b545ed43' '0220f7cd61e0b0ab036f62d28d3cd904ff29679836614083c9fb454116630f9d0ef61bbf2f12cfce91a1095f5537a944cf0d987d66acb8f82802f622f950d2ea' '327d56d0b579d26b0c22cde24761ec98a22cb39a0b189e42b4487dcd99e70c458db41f06ec5d7fbc094cbc4fc5baccc5da184b1abfe65e95b27a36bb5a64d76c' '1e8593929128d8be4cd417b6e91f5242146462f814d5146d36788d71230eb8c0e5b926f13fc4b8686f7b3a40b74ce394a071398ca2d55f0883eeb5dc7d7b9037' '0d2c667e165fc363328871f32e3d82b5059e478620a99487aa2b2de08028559f2ea67bfd9ee6f436e858a2d4fb28043cb0e4eca8004870a89119e2bc76f534be' '2c014749df0a224257ed8fb467d2b4c92391bb5db5e7512de852b0bce8adde532e85787a2cb0e2796b357f24d7a94a6664db33c1911ec0b83b9fc5d26d6eeabb' 'c763f23147b123b973a61a00fd1404318ddc8c23d754b52fe8f071f23e048c7c7ecdf7e05abab03563549cd6c19805ec8eca5698921471c9786095c945bc7ff0' '0bee1d979458d06f98fa342334c919068b7c34f565200f9b29106b922ca8740c915a46bdb97e1106101c70ffe0450e325d394b313b732fb296d3ede97901e782' '402056f29f90bc9a17b9d86c149e01753ea0dd8be1047cb76f8fbd2cbb7bed6bc47ecb1d10aaa60fe864ad168bbc8f62083e7fd251f8aeeed52d88841f2c25a8' '631cdc5859dd36575bac096e6656f5bc6d381f98d593ec058b029a1372ff0efaa4dfbfd71fcde5c2c78168020616335b944ddd07d37ddf4474460417c646f97e' '5f76e3fecff40c4dc6d5a8cedbefd43fd4f44400edf4286ef1b71daae9ff719c53cd4a02b76fcdcd571c315bbcdd7b5de6f5df5e176b747340298fc932a4876c' 'd2efce20c5a25163871d8f3ea053dfb6ca03287e8dbca2f272a2e91f806751c5df749eec5ad70a78fb60dd3f8c8f1850de3dad61a7fe3d734c5d74255270c137' '4da9cf2ec26efeca4b574fc175431d683fca20b262ecb4784f25c9d441deaae14024847b89688a6e2cba19bef715750c0e588aeeb6ef76d558f84a648be03d73' '3f5f828588d56b76f14ed128baa6e681f8eb07d71898faf65a1acbe6bf5d83d04d2c4ad0b5a785c561b30d6dee338b2e72235a1411f87b1527928e0d26f7e35e' 'd1537ba6e1e27a63d60f290795bf6d689fc56b09e34fbeae8a7327be5fbe294aa569379d40c60130c26471b5e141f4f79ca53fad36151cc286ddd990a0800ec4') # vim:set sw=2 et: