From 55af8bb86cafb9509780c4e1e3ae4cd295b1d8f7 Mon Sep 17 00:00:00 2001 From: Duncaen Date: Tue, 20 Sep 2022 14:47:41 +0200 Subject: [PATCH 1/2] firefox: update to 105.0. --- srcpkgs/firefox/files/mozconfig | 37 ----- srcpkgs/firefox/template | 277 ++++++++++++++++++-------------- 2 files changed, 155 insertions(+), 159 deletions(-) delete mode 100644 srcpkgs/firefox/files/mozconfig diff --git a/srcpkgs/firefox/files/mozconfig b/srcpkgs/firefox/files/mozconfig deleted file mode 100644 index b0dade7104f4..000000000000 --- a/srcpkgs/firefox/files/mozconfig +++ /dev/null @@ -1,37 +0,0 @@ -ac_add_options --prefix=/usr -ac_add_options --libdir=/usr/lib - -ac_add_options --with-system-nspr -ac_add_options --with-system-nss -ac_add_options --with-system-jpeg -ac_add_options --with-system-zlib -ac_add_options --with-system-libevent -ac_add_options --with-system-libvpx -ac_add_options --with-system-icu -# XXX: the system's libpng doesn't have APNG support -ac_add_options --without-system-png -ac_add_options --enable-system-pixman -ac_add_options --enable-system-ffi - -nspr_config_args=" - --libdir=${XBPS_CROSS_BASE}/usr/lib - --includedir=${XBPS_CROSS_BASE}/usr/include/nspr" - -nss_config_args=" - --libdir=${XBPS_CROSS_BASE}/usr/lib - --includedir=${XBPS_CROSS_BASE}/usr/include/nss" - -ac_add_options --disable-tests -ac_add_options --disable-crashreporter -ac_add_options --disable-updater -ac_add_options --disable-install-strip -ac_add_options --disable-strip -ac_add_options --disable-profiling -ac_add_options --enable-release -ac_add_options --enable-optimize="$CFLAGS" - -ac_add_options --enable-official-branding -ac_add_options --enable-application=browser - -ac_add_options --with-unsigned-addon-scopes=app,system -ac_add_options --allow-addon-sideload diff --git a/srcpkgs/firefox/template b/srcpkgs/firefox/template index f75728d1462b..f599561489c2 100644 --- a/srcpkgs/firefox/template +++ b/srcpkgs/firefox/template @@ -3,7 +3,7 @@ # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-i18n". # pkgname=firefox -version=104.0.2 +version=105.0 revision=1 build_helper="rust" short_desc="Mozilla Firefox web browser" @@ -11,42 +11,34 @@ maintainer="Duncaen " license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later" homepage="https://www.mozilla.org/firefox/" distfiles="${MOZILLA_SITE}/${pkgname}/releases/${version}/source/${pkgname}-${version}.source.tar.xz" -checksum=72bba06f04e7745f6b02951906413eb1c15a7e253e06e373302162c6219f286a +checksum=2b5becbb89aa2b2007ba8c86ad517aeae1b54904d007d9d3acbf054be6a0ed62 lib32disabled=yes hostmakedepends="autoconf213 unzip zip pkg-config perl python3 yasm rust cargo - llvm clang nodejs-lts cbindgen python nasm which tar" + llvm clang lld nodejs cbindgen nasm which tar" makedepends="nss-devel libjpeg-turbo-devel gtk+3-devel icu-devel - pixman-devel libevent-devel libnotify-devel libvpx-devel + pixman-devel libevent-devel libnotify-devel libvpx-devel libwebp-devel libXrender-devel libXcomposite-devel libSM-devel libXt-devel rust-std - libXdamage-devel freetype-devel $(vopt_if alsa alsa-lib-devel) - $(vopt_if dbus dbus-glib-devel) $(vopt_if pulseaudio pulseaudio-devel) - $(vopt_if xscreensaver libXScrnSaver-devel) + libXdamage-devel freetype-devel libatomic-devel + $(vopt_if alsa alsa-lib-devel) $(vopt_if dbus dbus-glib-devel) + $(vopt_if pulseaudio pulseaudio-devel) $(vopt_if xscreensaver libXScrnSaver-devel) $(vopt_if sndio sndio-devel) $(vopt_if jack jack-devel)" depends="nss>=3.72 nspr>=4.32 desktop-file-utils hicolor-icon-theme" conflicts="firefox-esr>=0" -build_options="alsa jack dbus pulseaudio xscreensaver sndio wayland" +build_options="alsa jack dbus pulseaudio xscreensaver sndio wayland lto" build_options_default="alsa jack dbus pulseaudio xscreensaver sndio wayland" +desc_option_lto="Enable Link Time Optimization" + case $XBPS_TARGET_MACHINE in armv[56]*) broken="required NEON extensions are not supported on armv6" ;; ppc64*) ;; ppc*) broken="xptcall bitrot" ;; - armv7*) broken="https://build.voidlinux.org/builders/armv7l_builder/builds/39410/steps/shell_3/logs/stdio" ;; + # armv7*) broken="https://build.voidlinux.org/builders/armv7l_builder/builds/39410/steps/shell_3/logs/stdio" ;; esac -if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then - makedepends+=" libatomic-devel" -fi - -# work around large debug symbols on 32-bit hosts -# cargo:warning=cc1plus: out of memory allocating 65536 bytes after a total of 1010126848 bytes -if [ "$XBPS_WORDSIZE" = "32" ]; then - nodebug=yes -fi - # we need this because cargo verifies checksums of all files in vendor # crates when it builds and gives us no way to override or update the # file sanely... so just clear out the file list @@ -67,104 +59,157 @@ post_extract() { } post_patch() { - _clear_vendor_checksums num-traits + : # _clear_vendor_checksums num-traits } do_build() { - cp "${FILESDIR}/mozconfig" "${wrksrc}/.mozconfig" - - echo "MOZ_APP_REMOTINGNAME=Firefox" >>.mozconfig - - case "$XBPS_TARGET_MACHINE" in - *-musl) - echo "ac_add_options --disable-jemalloc" >>.mozconfig - echo "ac_add_options --enable-linker=bfd" >>.mozconfig - ;; - esac - - case "$XBPS_TARGET_MACHINE" in - x86_64*|i686*|arm*|aarch64*) - echo "ac_add_options --disable-elf-hack" >>.mozconfig - ;; - esac - - # third_party/libwebrtc/common_audio/wav_file.cc:93:2: error: - # #error "Need to convert samples to big-endian when reading from WAV file" - if [ "$XBPS_TARGET_ENDIAN" = "be" ]; then - echo "ac_add_options --disable-webrtc" >>.mozconfig - fi - - # it seems mozilla has started catching up with google's webrtc - # and this newly involves introducing several megabytes of generated - # json junk that we just cannot maintain in-tree, additionally they - # have indicated that they will be re-generating these frequently - # - # it is unacceptable to keep a 7MB patch downstream, so disable it - # - # https://phabricator.services.mozilla.com/D134738 - # - case "$XBPS_TARGET_MACHINE" in - ppc64le*|armv7l*) echo "ac_add_options --disable-webrtc" >>.mozconfig ;; - esac - - if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then - export LDFLAGS+=" -latomic" - fi + export CC=clang + export CXX=clang++ if [ "$CROSS_BUILD" ]; then - BINDGEN_INCLUDE_FLAGS=$( $CPP -x c++ -v /dev/null -o /dev/null 2>&1 | \ - sed -n '/#include <...> search starts here:/,/End of search list./p' | \ - sed '1,1d;$d' | sed 's/^ /-I/' | paste -s ) - - export BINDGEN_CFLAGS="--target=$XBPS_CROSS_TRIPLET \ - --sysroot=${XBPS_CROSS_BASE} ${BINDGEN_INCLUDE_FLAGS}" - export HOST_CC=cc - export TARGET_CC="${CC}" - export HOST_CFLAGS="${XBPS_CFLAGS}" - export HOST_CXXFLAGS="${XBPS_CXXFLAGS}" - export ac_cv_sqlite_secure_delete=yes \ - ac_cv_sqlite_threadsafe=yes \ - ac_cv_sqlite_enable_fts3=yes \ - ac_cv_sqlite_dbstat_vtab=yes \ - ac_cv_sqlite_enable_unlock_notify=yes \ - ac_cv_prog_hostcxx_works=1 - - echo "ac_add_options --target=$XBPS_CROSS_TRIPLET" >>.mozconfig - echo "ac_add_options --host=$XBPS_TRIPLET" >>.mozconfig - else - echo "ac_add_options --target=$XBPS_TRIPLET" >>.mozconfig - echo "ac_add_options --host=$XBPS_TRIPLET" >>.mozconfig + mkdir -p wrapper + + local gcc_version=$(gcc -dumpversion) + local clang_version=$(clang -dumpversion) + + cat <<-! >"wrapper/${XBPS_TARGET_MACHINE}-clang" + #!/bin/sh + exec clang \ + --target="${XBPS_CROSS_TRIPLET}" \ + --gcc-toolchain=/usr \ + --sysroot="${XBPS_CROSS_BASE}" \ + -nostdinc \ + -isystem "${XBPS_CROSS_BASE}/usr/include" \ + -isystem "/usr/lib/clang/${clang_version}/include" \ + "\$@" + ! + + cat <<-! >"wrapper/${XBPS_TARGET_MACHINE}-clang++" + #!/bin/sh + exec clang++ \ + --target="${XBPS_CROSS_TRIPLET}" \ + --gcc-toolchain=/usr \ + --sysroot="${XBPS_CROSS_BASE}" \ + -nostdinc++ \ + -isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}" \ + -isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}" \ + -isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward" \ + -nostdinc \ + -isystem "${XBPS_CROSS_BASE}/usr/include" \ + -isystem "/usr/lib/clang/${clang_version}/include" \ + "\$@" + ! + + chmod +x wrapper/* + + export PATH="${wrksrc}/wrapper:$PATH" + export CC=${XBPS_TARGET_MACHINE}-clang + export CXX=${XBPS_TARGET_MACHINE}-clang++ fi - # XXX: wasi currently not ready - # echo "ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot" >>.mozconfig - echo "ac_add_options --without-wasm-sandboxed-libraries" >>.mozconfig + export AR=llvm-ar + export NM=llvm-nm + export AS="${CC}" + export CFLAGS="-O2 -fno-plt" + export CXXFLAGS="-O2 -fno-plt" + export HOST_CC=clang + export HOST_CXX=clang++ + export HOST_CFLAGS="" + export HOST_CXXFLAGS="" + export LDFLAGS="-Wl,-rpath=/usr/lib/firefox" + # export LDFLAGS+="-Wl,--threads=${XBPS_MAKEJOBS}" + + disable_jemalloc() { + if [ "$XBPS_TARGET_LIBC" = "musl" ]; then + echo "ac_add_options --disable-jemalloc" + fi + } + + disable_elfhack() { + case "$XBPS_TARGET_MACHINE" in + x86_64*|i686*|arm*|aarch64*) echo "ac_add_options --disable-elf-hack" ;; + esac + } + + disable_webrtc() { + # it seems mozilla has started catching up with google's webrtc + # and this newly involves introducing several megabytes of generated + # json junk that we just cannot maintain in-tree, additionally they + # have indicated that they will be re-generating these frequently + # + # it is unacceptable to keep a 7MB patch downstream, so disable it + # + # https://phabricator.services.mozilla.com/D134738 + # + case "$XBPS_TARGET_MACHINE" in + ppc64le*|armv7l*) echo "ac_add_options --disable-webrtc" ;; + esac + + # third_party/libwebrtc/common_audio/wav_file.cc:93:2: error: + # #error "Need to convert samples to big-endian when reading from WAV file" + if [ "$XBPS_TARGET_ENDIAN" = "be" ]; then + echo "ac_add_options --disable-webrtc" + fi + } + + cat <<-! >.mozconfig + ac_add_options --prefix=/usr + ac_add_options --libdir=/usr/lib + ac_add_options --host=${XBPS_TRIPLET} + ac_add_options --target=${XBPS_CROSS_TRIPLET:-${XBPS_TRIPLET}} + ac_add_options --enable-linker=lld + $(vopt_if lto 'ac_add_options --enable-lto=cross') + ac_add_options --with-libclang-path=/usr/lib + + ac_add_options --enable-official-branding + ac_add_options --enable-application=browser + ac_add_options --enable-release + ac_add_options --enable-hardening + ac_add_options --enable-optimize="\${CFLAGS}" + ac_add_options --enable-path-remapping=c,rust + ac_add_options --disable-tests + ac_add_options --disable-crashreporter + ac_add_options --disable-updater + ac_add_options --disable-install-strip + ac_add_options --disable-strip + ac_add_options --disable-profiling + $(disable_jemalloc) + $(disable_elfhack) + $(disable_webrtc) - mkdir -p third_party/rust/libloading/.deps - - case "$XBPS_TARGET_MACHINE" in - armv7*) - export CFLAGS+=" -mfpu=neon -Wno-psabi" - export CXXFLAGS+=" -mfpu=neon -Wno-psabi" - ;; - esac - - # work around large debug symbols on 32-bit hosts - if [ "$XBPS_WORDSIZE" = "32" ]; then - echo "ac_add_options --disable-debug-symbols" >>.mozconfig - echo "ac_add_options --disable-debug" >>.mozconfig - export LDFLAGS+=" -Wl,--no-keep-memory" - # patch the rust debug level, this is hardcoded - vsed -i 's/debug_info = "2"/debug_info = "0"/' \ - build/moz.configure/toolchain.configure - fi - - case "$XBPS_TARGET_MACHINE" in - aarch64*|i686*|x86_64*) - echo "ac_add_options --enable-rust-simd" >>.mozconfig ;; - esac - - export LDFLAGS+=" -Wl,-rpath=/usr/lib/firefox" + # XXX: wasi currently not ready + # ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot + ac_add_options --without-wasm-sandboxed-libraries + + ac_add_options --with-mozilla-api-keyfile="${wrksrc}/mozilla-api-key" + + ac_add_options --enable-system-pixman + ac_add_options --with-system-ffi + ac_add_options --with-system-icu + ac_add_options --with-system-jpeg + ac_add_options --with-system-libevent + ac_add_options --with-system-libvpx + ac_add_options --with-system-nspr + ac_add_options --with-system-nss + ac_add_options --with-system-webp + ac_add_options --with-system-zlib + # XXX: the system's libpng doesn't have APNG support + ac_add_options --without-system-png + + ac_add_options --with-unsigned-addon-scopes=app,system + ac_add_options --allow-addon-sideload + + ac_add_options $(vopt_enable dbus) + ac_add_options $(vopt_enable dbus necko-wifi) + ac_add_options --disable-audio-backends + ac_add_options $(vopt_enable alsa) + ac_add_options $(vopt_enable jack) + ac_add_options $(vopt_enable pulseaudio) + ac_add_options $(vopt_enable sndio) + ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3') + + MOZ_APP_REMOTINGNAME=Firefox + ! if [ "$SOURCE_DATE_EPOCH" ]; then export MOZ_BUILD_DATE=$(date --date "@$SOURCE_DATE_EPOCH" "+%Y%m%d%H%M%S") @@ -175,22 +220,10 @@ do_build() { export MOZBUILD_STATE_PATH="${wrksrc}/mozbuild" export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system - export AS=$CC - - cat <>.mozconfig -ac_add_options --with-mozilla-api-keyfile="${wrksrc}/mozilla-api-key" -ac_add_options $(vopt_enable alsa) -ac_add_options $(vopt_enable jack) -ac_add_options $(vopt_enable sndio) -ac_add_options $(vopt_enable dbus) -ac_add_options $(vopt_enable dbus necko-wifi) -ac_add_options $(vopt_enable pulseaudio) -ac_add_options --enable-default-toolkit=$(vopt_if wayland 'cairo-gtk3-wayland' 'cairo-gtk3') -! - rm -f old-configure ./mach build } + do_install() { export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system export MOZBUILD_STATE_PATH="${wrksrc}/mozbuild" From 17051196f4ea36322a34cf469b0930a982a49065 Mon Sep 17 00:00:00 2001 From: Duncaen Date: Tue, 20 Sep 2022 14:47:51 +0200 Subject: [PATCH 2/2] firefox-i18n: update to 105.0. --- srcpkgs/firefox-i18n/template | 194 +++++++++++++++++----------------- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/srcpkgs/firefox-i18n/template b/srcpkgs/firefox-i18n/template index 56337a2a6222..d55b458e8281 100644 --- a/srcpkgs/firefox-i18n/template +++ b/srcpkgs/firefox-i18n/template @@ -1,6 +1,6 @@ # Template file for 'firefox-i18n' pkgname=firefox-i18n -version=104.0.2 +version=105.0 revision=1 build_style=meta short_desc="Firefox language packs" @@ -140,99 +140,99 @@ _pkgtmpl() { } } -checksum="56c6e626cf8a68317a8c85c4bd0042fdd8bfda5e1cc9a6437e5afae2dc1a649b - 686c80fdedd1b3e6fe36c04acd7ad773c75f3dacdc713835a27125013a8140d8 - 840cd7ba6a1d760673094ab9fdeb1b88099afed66ae02765b4ebdb2ed874bbe9 - 4f11fbdc9fa32743ebf469b9f142b7f33c843149c697184a2deb851361262df6 - 8bb59311265a4596c46b8357c1b602fc206877bfc13976f1c11de8e886ab3757 - a6b755232bdca0804a1e0a8f98e98562ad7b08138590865e5678d2582315e1d2 - ca7e2264a0d92201173d7f40c661919e75d611b6d43ae458f4289b072cbc3b2c - b64102aac920b29f48b212e5d589e7576f7e25b9861eb8277aad895c0729ad5e - 31b5c70deb174897a215b9cfbfb0caf900c5acb482b6570745266c73bdcf1a76 - 336fdb9bc401a71581b9a09687c7c86387edc2c1dcdcf1de1817cc3cc33f710c - f33ac54003d1a0fcc3e4e0146b131c7c986c1f1a70b313e2e0e389f693c9c83b - 540b344de1cb81c8b78355de9cd45d9e900024c0c99dfa4793263fb7586e205c - 57ef8b46e18ea491b81cc4d2b4f1c19556669fabb10ece018ae1f4ba1c70ac0d - 93bc459f02b92c5077bce0d216d2fc994cc979832c0ce24d9b077831052a621f - a76e6d37ed3fb26a8136bec5be8f9d21cb55096246a4c6b253b284491d1cbb30 - 76d64a204b44cf074644867f638928a3a4a49ee45f1e0da3ad749cb6a55b2480 - e5df73cf380393707227008879ec2e511e6b9f24f9eae7111617e3a5f0877c0f - 18e03b9025be4381b2f29c9cad5bd0295e4994813071390f4d4f6f01b0b93c79 - 9923e3f28b98553c58f3ddf24c779a7b58f99995ecf9ef8b7924767d3e0b40ff - df197a0d28bc07abb6711268663e0307f354787a4e62e36955bdbb03537cb7d1 - 2e5f37bd081b558726ad2579d9c6f0469afc37ae3c89c8c06b44b83afb1b3fae - f512a33b02fa6a72b1b6f963bf28431729c404787ccfd9ae96331affe9a696d2 - 67e85f347040ac773a2a946dde0483f91e19b6f86edc4e84b6d355d486912313 - f5f88969a0b98c768843db68ec528b2387e34acdbeee58d6a56551ac57ee2ecd - 3f272cc005ab8a8e0f449c17d6f127be53d74c0fe2506bab89169e70e60ed728 - c3b485a9938a041b91d0f4670d2683d35657b79650d9de7099870013ad0709d5 - 4170bd2da40a42044204bf5e2d5ea5e46e939ffdea9e2a852ce8f5ba09cc346d - 9c09b94126e24ae8d1f6ca10a035382ffdb5ca53e8a6ea06b19a6e49d3293b57 - 9e1acb7cdecf527806238ce344ecd149e9834457670534ff61792921cd647c55 - 90f0f7e41b65c550165cd21a1ac4f839ed089dba58af8b391358d3ed36825b26 - 88858b4a4bb4499d449a21e7fa5510da182e366f47b1bd13441edc7696a41a7a - 08176fbf3a75759e9a470e43773a2e5ef807658ef4c25a11552a9cebb48255d2 - 9743e28351548845bc39db3cd9fe5d423e8ec4fdc73afebf0076ae5b364d12d8 - d273cee85a7b9fa7d6736d3474ad2b07b07a241d1fb8344c7c6344a27e1211da - d02101cb48fad2c9961f5d6cb41da9ed96b04727d0fc209bd897eea8dab36cb7 - add4495fb36aaeab4ea4f1c5e429ab33db6c6d95c07cb72f45daf029eb376ed6 - 7dd2af2fae3b05a4f4f4c024b4f7f4b2afcb23388616e0b5a2f9a4e565ec4b03 - 07cabc052143856ab39f5bb7026f7eaafa20078850b6d6dd0e706f583648e75a - 70128ce9561033f7fa65366e03eab9c701c3056863192ef2a96b5b8b3d1182d9 - e9c89c046ad1acc43d9a33e932a6adb6f0e4aec3730b50eaa1076e19779fccf0 - 2a19552b61da26616865c2328b9de3e2ed9d5fd6dc01f062ee30b730b4e1a427 - 458a88cb7ca0a4076ed1ce7bee670b8cf3b1e7a0ceeb23d27715361d5dfc9f86 - cc8d3a52f91081d02da1552636d31ddd8eb296732f037a7394f02ecce96b4011 - a16f1e018ac32ffe3a1ffd18f1f68ac2675cf62c31d39c5e3d37c6d4c49745b5 - 52f59b7674f1123b834a98adb3a5637394cabbd255b95553c4a5f46cd16e3d51 - 359850f002c9ad375e47d2d1e091ec1b6a324dc3d795e81d85e0aeb7ddf8e9a9 - 99b85635f8ea47a4584be00d0597c23b130457d14f859f8761e9090d20b0148f - 566a2992719d9e478702b4f16e7cac74a5fefa97387b4d577d9e79ba8f1de2fe - 5cb57f443354146205665ebc8992344a01067ef6ac59c7abb7cfdbf134696530 - f9f40413626841af4e9c198c901c8ac2261eb36d78a204001a0ada904419b68c - 707525a6a2d96701691b037ac00d465d725c7e23455de385c6329f930f44eb32 - 88c9bfa868e1e4ff6cff773bc1b8c88fd29dfd24809d701ba37875c4425780c8 - c6f74cb370344f779d742b374490444b3ecdfe5c8dbed7ff642f33f22b3afc87 - 3bc4e4bd073737a7d8a2848144be2d8b3c57a8f20f0eeb79077f4bfc68a0b128 - 9f5d49ee0c6c621d0a35a546298058549f81f8c8543b7c8f77794c4d3c349a5a - 56221fbbaaa7624889673ccb3e1dde4397244fc186506a001c9092d07e48a74e - fa02af73c16840520e7a7b40eae21f946aa4cfa5000025be3143a8623cee3d6a - b7f4c076123a0ecc1566dbf90aec68a2f04777f0a5789aa5a6954b0bf882bfc8 - 49e05572fada652dab6e7ae91c9e159cceb6ab29497a3502325ece10a339384b - eac93a9ff5875a3a702a1fdf8317419fdb66ca57ea1da9fcae531483dababfba - 319b5e51444f1ffd6381a01ebdde28f8d52cdd6e6ca407bb4789db6740f54395 - 2d39f5423f5aabb068190b03b7d26ec87948039659c60f39d1064ed37ced9966 - c8d220ea905405dd18315639c4dc1c033a93aa320edbd7ef8a64a596c6004848 - 793aa905f84c541f7616e421d84afca8131a5f42d4209370a21df511d84be2ee - 6d44b60c2bb9748273bc1260bb16182d8e955b286ae6f518d11195b17ead8d2b - 93aa6034e7356fe9d47287f98e843252ff332088e7afba3b780e05123d2e58bb - e561ce7f059d4feb91566a33d80e1dfb19f4df6bdf5d8663213ba59f483db0b2 - 925cf0af3eaf22c0d47394a9650541ff6ba1dbc1615613bfde4d014d13ae6ab5 - 33f9f497d9e9b4f8a4c3f8fa825400ec9b7223db7b4012c86067e5a8e389b1be - 39d092027919a0d6f995ccfe2818e7ae68b5990e89a6d8425cb7405bda38b159 - 730c6b0e606fa23ff21485b9b871117ae11ed3cf7ddd7c2773ce9e4179213926 - db8c9b613c0e290a865cbedfe03259553afc41cd6be754e9152011987ff7c711 - 282e7391d292c010259bcff307891c94ab0348b72ba55e83be1e22fcda662abc - e05c04527667fa649528c7d568d695afb40651cfb0e45721c5cfb30d97a61fe8 - 4da1f5f4bad7aaf0a264929f396e2e043b13e6bed39291cabdce9bfa94ef4e9f - 196c38742397e2d8ef4ce08460d5b07be11c903c4ea293ea2be129da8982b004 - 1556f924e7d082ab97c7c0b8c6741acb662fa60314ef0b69da646abf4c26257a - 906dc8096ee00fe04dd9a5574b19d68e1d23c49f2cdc4052b9df20436a922915 - c52de458802d102a7166fe6e5dffdc5173bb1d031e860ca66e9114454d8ba50d - b3236b5bc7022aeeafd84e63a62d32bb6eb950a8866ec7cc3419e84dda44e1f6 - f52e7032654adaca34d3515e6c551c2e0134fc89e44af51e6dfd273010fefb4d - 42c90d28af48e89b230597ca99dd032072b88430f2e9787a6c23c12cd8bc1d77 - 2b9a9d812d0dbe9bb025b56e8e070e0127b546e437efaa57d7d486451d5a9ef4 - 9c9b2c82f515378c8d13cc3407252fe2e80a57bed72ad2a0b3c20a450267a386 - 14394e2f4c7e9e43ea582edf00908cc355bc695c9b9a4882acdcc9d99fa2c19f - 8b100b70d2dba7142b688002a6cc5d60878871917414a3bc4bfc2ac67f1e2231 - 034a460e28ead46ab29c4c3517a90de79e4d7f534158857fed695f94b201b1ae - 1aa24cc33f657833698d737414030a5b5d2b984e02c7c536dd8fdfe2a33159a1 - 896c9b0cd44fbd0eba9c133ac9a347331272cdff743ecdd793e787797f718ca2 - 84f1b3992c0c86fd152a7ebca19d3162b6c408e8d1476f3bd35880bde261da45 - dc374e5d39d8dfc44c35d35545ce1ec3f4309992315ed4c8ffeec5dda25eb451 - 66341169cba7ef9b9499f780dfa48f7442a139bed1e7f315f8c33e4110c3e574 - d7e09d0188a70430c4c147aab27eb5060df5a0d276ddc3bc1e2dd38ef57dd896 - 76a3e671a8287ff74ec87fee989ab710b3549604729f137d2dc969d030dc60ac - 8986db52d806e6d2b88b2477a0eddebcdb44b7e4d3133002739bae34b3163864 - 4728062f9ebb97ff45a3ea3e783f87a36a49eaec9b342c936437f4fa383d433a" +checksum="c7db09fb66820a0797b1b84df38ebab5b60a651e2456536d773b90f1fb5bb6cb + ee6a135ad1e0221b01dff8ca11272bf4d37a9937cbfdcd3886a8d739020bb3f3 + 6417e31e110a28814f3f52d278ca0f7cee9b9833ac7a9278594e9f3bb24b34b3 + f712b9b052718e92f966806f0e6753ae2f931d6d1aa2c82eaf745ba87076b61d + d8d1a368d4a525b711399832de31b686453b8acb5026952f29037a28e1016f75 + 2d738404db35a6738c98d421b188be765c6513a7a45945b65a38b6fb4be84ea8 + a677e9e8dda01563adc495975d99fb3d660bf93ee3d76bfe2990d6879c38ecad + 9ca262b54fb8e664681a49b5d29d274d5e855365fc6269cf0c893c9c886fa3db + 37fe0cbb443451cc82ab664fc93cb2ddf61bcb2545cac51964c412cbecfb26c8 + 60821ab5034ba81bf0531e45427f1ebea80854aa0e380a857adfbe54f8a48d68 + c9a8608fcf06033fceb6ad248aff8df8a16592a439afd54e1a67f6fa06700ae1 + 737c2aa8270241b7b775cffd8974cb62bcb1ff3dbb0fae414839cbb33a8e25bf + 01dc9d7ca8d8942b277639de877cc29092f3e0f5d4e0a0611d4e40c29fd1516b + 2451c21263be50433d34161ec6d57197d6214e310aaf6a5442823ccfccacf59b + f3ff5802d04da5da85b341d0362732e8f664c011e9e208787e786c8428ad47f5 + a8b4a4450a6399a113d0170b093064afdc97f4b6ea33a4b27287c87606465446 + 27beb5a9763849bf3e95edb89eb4c4a2d579d4296a778e2d12703db3df0866fb + 0236a5eb190ece044ac40d22e0977f1806cd3436c90c7df1888e067cb9a6a4e4 + 82954eadb8283d11e68eba997c822ac6b805f09edcd9deca3440d9e749bf85c3 + 8662fea757c960dedace9c8203a7c5bda169962d6ecc5678539507c1fdf30ef4 + 19ecf1ff9e053bf81400978d4df4bfa5788fc2b8fab0083003e5a65c66c9a069 + 346e886fae9a94cfabc72d18e1c44b2ae03f74aa7dd3bb063a094059ba58c8a1 + 97fcf52b2bba39b2e3bb9180e591506eb8dc871c58c14ea5e6e8f585d17a431f + e33de5b9e3edf0ecf11968b6d3526bd230daf1f53b265d416275a1602dd7bb9b + 0a6e0c31b931ae9c399b4917ee05e36e8ca103910f2cede85ada35f4a134b4ea + ebc0b984d2b1b71ceb94dfd8375605eaec543942c499c8ea47ab25480a3b4b57 + 9fab8cb952a832a1535a890f57a9aa0c616d0dbfc5ed8d6a93f3b3ec56d73c92 + c9d1b730ea3beb8087a04e9ab6f6150e623bdcedef4c6a9bc3e38d885ac40491 + 97f543cbd22eb2b6d643e0bead3c48ba9bc19355aa31a922dc7ff2d93dfc203e + 962dc5c481bc20bd36ea36fd8ad158ca4221f56bb787a1971e1715695cf7881f + 312057b71813b51cea032aa46a7991853ac734624b335ab229ed0e824ebcf299 + b0f15d18c7652eb31b2094c90d4c659d0d147539b6985759747b42d1a2677390 + 0582184c26d0e34b71018bd99a5820de494fcdd29466c8a2fe7151f374fbb020 + a615b993761070a637c8047ccb895fb50c9ac83252217c55d7839b69dd00bdd2 + 1dd6720268196024ccc4c2ddc6ca640a8e79b8c14fb0df9e640a817fb45949a3 + 5ad2658cec27f404ec8dad772b1b543b39d6b4ee1d75c8d663f47039de0c5deb + a6e8c03a2d27d361ea49c2d4ae2cab329f5142df7d482828461270dd40b68bfd + a9bd6564b9ba84dfd17df569b8549e4171b72ce6ea77df349e307951fd0dde91 + e199c963a678b1a72eb14a86980c375bafc3196e735e94c12c8d84adef1e392c + b4499dd3082bc79e368a65e3a82a34b8ba82e88b22cf108ee1ad66d431376852 + fac05816d0e72fec7b05cb73bcd04249ca9e79a426622aa3db35ade7ed97161d + efbef29dc26a43075787b12f0931bff4defbe423ba533b5d17c92376f71a11f5 + 649942526983f8069abda5575aa9d6d4c593dd0047854e684c94a997132311c1 + fe28a0eabb52fcbc7d5e6a018ad408f6b3232a7423f9145db1761ad4f12047a1 + 4a1f627d232fcc6441a642105247afcb945c6a734cc8237625e8399cf838073a + a99676746eaeb507aca3d5a44b398d6df9cca67c8bd4d7e1b5194a2319569e47 + b81af37eaa5ea71ad3f25ca3cad7b16ecd3e26c01059f519e3d4e25265fad1ae + 15189d356d95c24ee17e098416ff1b41416060b342b4a662fe819853a29ac219 + 8872a96a84408032c44c3ef38e424257fd0664af4309b65b5aa98a7f1a6caf4f + 3bca050e5551f5e8668fde7371956f434df54489cb31b2c23f0e4acb8bc59fed + 35b2d4ebc5361b6040ef8ed28899c4b66fdef1d4a3a768db1ff3d95c9e0bf81c + 583e8d2f99a6a544f6a961a1cd8e685c5d5448ae9b0e91a62c1f7a9fe5798c91 + 3a429fd12961da39ab226f4425a59dc20f3de5b89f0fac6483560a6ffd449532 + 6fc84477dc8566de329c012aaa604e7104bb85dea83d61127319a0a4bd08f81e + e8e68b1a590b1fd4657fd5680431d389cb1f2eb024e5cf48a872df7ff98d4ea8 + f3a2f466bc0f909360dbec31c6ee9c4e3e7791891fe9035c4ed0dd463ae4b841 + 90eba6b03b84bbeae3b501aeb09623a22912ee8d3adf3e8d0a2a4d521440b3f8 + 273c545efa871742586a771453ab6de6af5d629623946b1c7ddfd0fa4eea90f5 + ecccec0f71e6bd41d0b8a4c80066fffebf2efe4e0716ee36dcb23dd4cff66d1c + 6b57771c7a203aa5e8b4a403092accea4eeb0128959fc67ac18ffb6cd4e62665 + a99991fbf88f73a0dff605213da1f17bf76540c9ed2c0a6a02a4756a18703a6d + 62f74dc6f759b83a6b5407a211214cdd4240718884bdd2c1e738fbcb11f558ba + 777f7e87f33fed4e3f582bab3898db620801633b77dd91f64deef6cf3101fbc4 + 5cb3c9271c34f3f946072ac2cea6c6bf42c5129ed1e74516ae2d8575861f1221 + 5e190ebc6a1c77120c86180752924a531998eba38f8b78e892701ae49439a53b + a42bb196b138a215566435b6febe2506d495e14bc0166b277a94af05807c10c6 + 8177331846394923ebe80c0972400e2a1cc2ddc6c8e815cdba89719a33001bf7 + c8babc7c7e0f83e4995df1b0a00516fb6fd1a27bb252414d3fd57c67e1fda66e + 7f0bbbc326f11d43824031c33c23acdfc7dd71caa279c0b8f641c8aca5752ed9 + 2dce1d6ce8565b02c4f750de4a139df64fde22c9cb98718dd481e0fe5ebd073a + 70f1512f47d1ef48b6a9cf1922515f8cc7680a40596d49aa6243ad919ab72345 + ea59853cb01d80a55c143a109ae4621088474b8eb214d315bc80c0e874d18175 + 21c927c12e835e27580c3eda690584e1997af66d381bcc6cbf62feac8143998f + cb3da44249a8e0901795c6776744a5c7e5fda65ed598a0790c92ddb2ba4e5d17 + 16a8429e4428ebb2d861d6f190dcddca2fc0aafc6eec34b434041eabc39d7ad0 + 47e52c5756b8d6150c3b0968924ea236feeeaf1437845e341d4f261b81610de3 + 1a1f17ba043818b80692f7b5360ccfc2af9076788e4bbbd25c53dca64a2f7d25 + bde722772718c5c6a701d7fbbefac6d3b5784d1739e8f40db057005ae328a71f + fa52035dcd760a93b2bc8065b3a37fb42877601d71325df970d38c5c804c2855 + d2fa83b9854ce104ef54bdf7726d4786289d559d8075dc33cada4ef92b1bc014 + 2a57974d18d9f780af7a6b24a3f0f3fb05d13559c64c5d93e1f2ad1d45f474c8 + ec6a60ca876d1fee0e5b5fde4100dafd0ceb862c652a0b48de5339ed0bdc95f4 + e8f8eb57309ece00fc8316cdd490dc1dde94a3a0196a4811c5363978c1905b58 + 763156a8a90b72a70a54d74da9248320a2021dfc10d5fa411f310ca2d8c763c3 + 6a164308d12e66e62ed3372cf6b38a549a0aca746735e5d99e1dfccbff1cf087 + ec3d3ccc3510d70a10bbe2b3f2aaae143d1bf74e29b75bcd67991f4d5b3d3b77 + 07fe29c0d1536d01df15e089dfae09f202c30abe15001dc34c695b3e2b3c709b + e8daeb24d12e2c501b58b18da7fc8124372a89b0e75f019a1528385d99d0ab4b + 82eeb499c1a060e27934dd62783583c8c29e707908caff39756f79c0016eb3d2 + 624ea9db2b9f68828ee285e2a9aad2c7fee2f9880232691725069c0550824379 + 30d883b7fb83dd0cbe20c44979d15fe3dd020defd0f9280a6da2b0aabe9d06cb + 97e81057929d9bf17bd190bb4f0783e0623824422fe2b90ca9dbc5a0346a482e + 93460b6fc1db49b2705af4ad9c84b4ae57dd51bea637fd631fafbadd80fbe6f5 + 3d5b48a0f0553ed958791b6b30ba01feffbd5cff4671aa418c30761a52786c0e + 4ebc6f19634c881f56c3a293fd245801c0161c602f7310d0d67e1d38e43b0403 + b4b57119047bdc777d58b4764dfea2af56a2202cc8717b63338a40f8673c3038"