summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog.txt235
-rw-r--r--academic/Gridcoin-Research/Gridcoin-Research.SlackBuild2
-rw-r--r--academic/Gridcoin-Research/Gridcoin-Research.info6
-rw-r--r--academic/Gridcoin-Research/README4
-rw-r--r--academic/R/R.SlackBuild2
-rw-r--r--academic/R/R.info6
-rw-r--r--academic/bcftools/bcftools.SlackBuild6
-rw-r--r--academic/bcftools/bcftools.info6
-rw-r--r--academic/copasi/copasi.SlackBuild2
-rw-r--r--academic/copasi/copasi.info10
-rw-r--r--academic/fet/fet.SlackBuild2
-rw-r--r--academic/fet/fet.info6
-rw-r--r--academic/pspp/pspp.SlackBuild2
-rw-r--r--academic/pspp/pspp.info6
-rw-r--r--academic/samtools/samtools.SlackBuild12
-rw-r--r--academic/samtools/samtools.info6
-rw-r--r--academic/smath-studio/smath-studio.SlackBuild2
-rw-r--r--academic/smath-studio/smath-studio.desktop2
-rw-r--r--academic/smath-studio/smath-studio.info6
-rw-r--r--academic/stellarsolver/stellarsolver.info8
-rw-r--r--audio/ardour/ardour.SlackBuild10
-rw-r--r--audio/ardour/ardour.info6
-rw-r--r--audio/ardour/libxml2-2.12-fix.patch53
-rw-r--r--audio/ardour/vendor_qm-dsp.patch37
-rw-r--r--audio/audacity/audacity.SlackBuild8
-rw-r--r--audio/audacity/audacity.info10
-rw-r--r--audio/openvino-plugins-ai-audacity/README16
-rw-r--r--audio/openvino-plugins-ai-audacity/openvino-plugins-ai-audacity.SlackBuild158
-rw-r--r--audio/openvino-plugins-ai-audacity/openvino-plugins-ai-audacity.info20
-rw-r--r--audio/openvino-plugins-ai-audacity/slack-desc19
-rw-r--r--audio/rack/rack.SlackBuild2
-rw-r--r--audio/rack/rack.info6
-rw-r--r--audio/yabridge/yabridge.info2
-rw-r--r--desktop/BlockstreamGreen/BlockstreamGreen.SlackBuild2
-rw-r--r--desktop/BlockstreamGreen/BlockstreamGreen.info6
-rw-r--r--desktop/Matcha-gtk-theme/Matcha-gtk-theme.SlackBuild4
-rw-r--r--desktop/Matcha-gtk-theme/Matcha-gtk-theme.info6
-rw-r--r--desktop/arc-theme/arc-theme.SlackBuild50
-rw-r--r--desktop/arc-theme/arc-theme.info12
-rw-r--r--desktop/buku/buku.SlackBuild18
-rw-r--r--desktop/buku/buku.info6
-rw-r--r--desktop/nwg-displays/nwg-displays.SlackBuild4
-rw-r--r--desktop/nwg-displays/nwg-displays.info6
-rw-r--r--desktop/nwg-panel/nwg-panel.SlackBuild2
-rw-r--r--desktop/nwg-panel/nwg-panel.info6
-rw-r--r--desktop/papirus-icon-theme/doinst.sh.gzbin672890 -> 680359 bytes
-rw-r--r--desktop/papirus-icon-theme/papirus-icon-theme.SlackBuild4
-rw-r--r--desktop/papirus-icon-theme/papirus-icon-theme.info6
-rw-r--r--desktop/waybar/waybar.info2
-rw-r--r--development/Bear/Bear.SlackBuild3
-rw-r--r--development/Bear/Bear.info8
-rw-r--r--development/Bear/fcc90e43eebe9250abeeb81aab429053864da325.patch34
-rw-r--r--development/avrdude/avrdude.SlackBuild2
-rw-r--r--development/avrdude/avrdude.info6
-rw-r--r--development/aws-cdk/aws-cdk.SlackBuild2
-rw-r--r--development/aws-cdk/aws-cdk.info6
-rw-r--r--development/bluefish/bluefish.SlackBuild2
-rw-r--r--development/bluefish/bluefish.info6
-rw-r--r--development/github-cli/github-cli.SlackBuild2
-rw-r--r--development/github-cli/github-cli.info10
-rw-r--r--development/gitlab-cli/gitlab-cli.SlackBuild2
-rw-r--r--development/gitlab-cli/gitlab-cli.info18
-rw-r--r--development/heroku-cli/heroku-cli.SlackBuild4
-rw-r--r--development/heroku-cli/heroku-cli.info6
-rw-r--r--development/hhvm/README59
-rw-r--r--development/hhvm/doinst.sh20
-rw-r--r--development/hhvm/etc/php.ini1
-rw-r--r--development/hhvm/etc/rc.hhvm163
-rw-r--r--development/hhvm/etc/server.ini9
-rw-r--r--development/hhvm/hhvm.SlackBuild209
-rw-r--r--development/hhvm/hhvm.info40
-rw-r--r--development/hhvm/patches/0001-liburing.patch37
-rw-r--r--development/hhvm/patches/0002-download.patch247
-rw-r--r--development/hhvm/patches/0003-iquote.patch18
-rw-r--r--development/hhvm/slack-desc19
-rw-r--r--development/hipSYCL/hipSYCL.info2
-rw-r--r--development/jdk11/README7
-rw-r--r--development/jdk11/jdk11.SlackBuild9
-rw-r--r--development/jdk11/jdk11.info6
-rw-r--r--development/jupyter-nbconvert/jupyter-nbconvert.SlackBuild2
-rw-r--r--development/jupyter-nbconvert/jupyter-nbconvert.info6
-rw-r--r--development/kForth-32/kForth-32.info2
-rw-r--r--development/kForth-64/kForth-64.info8
-rw-r--r--development/liberica-jdk-bin/liberica-jdk-bin.SlackBuild18
-rw-r--r--development/liberica-jdk-bin/liberica-jdk-bin.csh3
-rw-r--r--development/liberica-jdk-bin/liberica-jdk-bin.sh3
-rw-r--r--development/mold/mold.SlackBuild2
-rw-r--r--development/mold/mold.info6
-rw-r--r--development/mongodb-compass/mongodb-compass.SlackBuild2
-rw-r--r--development/mongodb-compass/mongodb-compass.info6
-rw-r--r--development/mongodb-shell/mongodb-shell.SlackBuild2
-rw-r--r--development/mongodb-shell/mongodb-shell.info6
-rw-r--r--development/openjdk7/openjdk7.info8
-rw-r--r--development/openjdk8/README3
-rw-r--r--development/openjdk8/openjdk8.info8
-rw-r--r--development/protoc-gen-go/protoc-gen-go.SlackBuild2
-rw-r--r--development/protoc-gen-go/protoc-gen-go.info6
-rw-r--r--development/pylint/pylint.SlackBuild7
-rw-r--r--development/rust16/rust16.SlackBuild4
-rw-r--r--development/rust16/rust16.info14
-rw-r--r--development/sqlcl/sqlcl.SlackBuild16
-rw-r--r--development/sqlcl/sqlcl.info6
-rw-r--r--development/sqldeveloper/sqldeveloper.SlackBuild4
-rw-r--r--development/sqldeveloper/sqldeveloper.info8
-rw-r--r--development/stablediffusion-pipelines-cpp/README4
-rw-r--r--development/stablediffusion-pipelines-cpp/slack-desc19
-rw-r--r--development/stablediffusion-pipelines-cpp/stablediffusion-pipelines-cpp.info10
-rw-r--r--development/textadept/textadept.SlackBuild6
-rw-r--r--development/textadept/textadept.info14
-rw-r--r--development/vscode-bin/vscode-bin.SlackBuild4
-rw-r--r--development/vscode-bin/vscode-bin.info6
-rw-r--r--development/whisper.cpp/whisper.cpp.SlackBuild1
-rw-r--r--development/whisper.cpp/whisper.cpp.info2
-rw-r--r--games/Mindustry/Mindustry.SlackBuild21
-rw-r--r--games/Mindustry/Mindustry.info6
-rw-r--r--games/Mindustry/Mindustry.pngbin0 -> 13869 bytes
-rw-r--r--games/PrismLauncher/PrismLauncher.SlackBuild2
-rw-r--r--games/PrismLauncher/PrismLauncher.info6
-rw-r--r--games/PrismLauncher/README11
-rw-r--r--games/ags/ags.SlackBuild2
-rw-r--r--games/ags/ags.info6
-rw-r--r--games/ddnet/ddnet.SlackBuild5
-rw-r--r--games/ddnet/ddnet.info6
-rw-r--r--games/dwarffortress/dwarffortress.SlackBuild16
-rw-r--r--games/dwarffortress/dwarffortress.info6
-rw-r--r--games/dwarffortress/slack-desc2
-rw-r--r--games/freeciv/freeciv.SlackBuild4
-rw-r--r--games/freeciv/freeciv.info6
-rw-r--r--games/gzdoom/README6
-rw-r--r--games/gzdoom/gzdoom.info8
-rw-r--r--games/lbreakouthd/lbreakouthd.SlackBuild2
-rw-r--r--games/lbreakouthd/lbreakouthd.info6
-rw-r--r--games/melonds/melonds.info8
-rw-r--r--games/openttd/openttd.SlackBuild2
-rw-r--r--games/openttd/openttd.info6
-rw-r--r--games/planetblupi/planetblupi.SlackBuild2
-rw-r--r--games/planetblupi/planetblupi.info6
-rw-r--r--games/quakespasm/quakespasm.SlackBuild7
-rw-r--r--games/quakespasm/quakespasm.info6
-rw-r--r--games/wesnoth/wesnoth.SlackBuild2
-rw-r--r--games/wesnoth/wesnoth.info6
-rw-r--r--games/xemu/xemu.info8
-rw-r--r--games/zsnes/zsnes.info2
-rw-r--r--gis/gpxsee/doinst.sh7
-rw-r--r--gis/gpxsee/gpxsee.SlackBuild2
-rw-r--r--gis/gpxsee/gpxsee.info6
-rw-r--r--gis/osgEarth/osgEarth.info2
-rw-r--r--graphics/FSPViewer/FSPViewer.SlackBuild2
-rw-r--r--graphics/graphviz/graphviz.SlackBuild2
-rw-r--r--graphics/graphviz/graphviz.info6
-rw-r--r--graphics/hugin/boost-1.85.0-patch16
-rw-r--r--graphics/hugin/boost-1.85.0-patch.gzbin0 -> 388 bytes
-rw-r--r--graphics/hugin/hugin.SlackBuild4
-rw-r--r--graphics/ueberzugpp/ueberzugpp.info2
-rw-r--r--graphics/veles/README2
-rw-r--r--graphics/veles/veles.SlackBuild9
-rw-r--r--graphics/veles/veles.info2
-rw-r--r--graphics/wine-nine-standalone/wine-nine-standalone.info2
-rw-r--r--ham/cm256cc/cm256cc.SlackBuild4
-rw-r--r--ham/cm256cc/cm256cc.info6
-rw-r--r--ham/dab_lib/dab_lib.SlackBuild14
-rw-r--r--ham/dab_lib/dab_lib.info6
-rw-r--r--ham/libsigmf/libsigmf.SlackBuild4
-rw-r--r--ham/libsigmf/libsigmf.info8
-rw-r--r--ham/mbelib/mbelib.SlackBuild9
-rw-r--r--ham/mbelib/mbelib.info6
-rw-r--r--ham/qlog/qlog.SlackBuild2
-rw-r--r--ham/qlog/qlog.info10
-rw-r--r--ham/sdrangel/README2
-rw-r--r--ham/sdrangel/sdrangel.SlackBuild5
-rw-r--r--ham/sdrangel/sdrangel.info6
-rw-r--r--ham/sgp4/sgp4.SlackBuild12
-rw-r--r--ham/sgp4/sgp4.info6
-rw-r--r--libraries/CLI11/CLI11.SlackBuild2
-rw-r--r--libraries/CLI11/CLI11.info6
-rw-r--r--libraries/ell/ell.SlackBuild2
-rw-r--r--libraries/ell/ell.info6
-rw-r--r--libraries/goffice/goffice.SlackBuild18
-rw-r--r--libraries/goffice/goffice.info6
-rw-r--r--libraries/goffice/import-ryu97
-rw-r--r--libraries/goffice/patches/NEWS.patch11
-rw-r--r--libraries/goffice/patches/configure.ac.patch29
-rw-r--r--libraries/goffice/patches/go-dtoa.c.patch19
-rw-r--r--libraries/goffice/patches/go-ryu.c.patch204
-rw-r--r--libraries/goffice/patches/go-ryu.h.patch12
-rw-r--r--libraries/grpc/grpc.SlackBuild5
-rw-r--r--libraries/grpc/grpc.info6
-rw-r--r--libraries/htslib/htslib.SlackBuild2
-rw-r--r--libraries/htslib/htslib.info6
-rw-r--r--libraries/libbass/libbass.info2
-rw-r--r--libraries/libcpuid/libcpuid.SlackBuild2
-rw-r--r--libraries/libcpuid/libcpuid.info6
-rw-r--r--libraries/libfaketime/libfaketime.SlackBuild4
-rw-r--r--libraries/libfaketime/libfaketime.info6
-rw-r--r--libraries/libliftoff/libliftoff.SlackBuild6
-rw-r--r--libraries/libliftoff/libliftoff.info2
-rw-r--r--libraries/librepfunc/librepfunc.SlackBuild2
-rw-r--r--libraries/librepfunc/librepfunc.info6
-rw-r--r--libraries/libtecla/libtecla.info8
-rw-r--r--libraries/libtorch-cxx11-abi-shared-with-deps/README4
-rw-r--r--libraries/libtorch-cxx11-abi-shared-with-deps/libtorch-cxx11-abi-shared-with-deps.info10
-rw-r--r--libraries/libtorch-cxx11-abi-shared-with-deps/slack-desc19
-rw-r--r--libraries/libxmlb/libxmlb.SlackBuild6
-rw-r--r--libraries/libxmlb/libxmlb.info8
-rw-r--r--libraries/lua-readline/README5
-rw-r--r--libraries/lua-readline/lua-readline.SlackBuild109
-rw-r--r--libraries/lua-readline/lua-readline.info10
-rw-r--r--libraries/lua-readline/slack-desc19
-rw-r--r--libraries/mimalloc/mimalloc.SlackBuild2
-rw-r--r--libraries/mimalloc/mimalloc.info6
-rw-r--r--libraries/nng/nng.SlackBuild2
-rw-r--r--libraries/nng/nng.info6
-rw-r--r--libraries/opencl-amd/opencl-amd.info4
-rw-r--r--libraries/openvdb/openvdb.info8
-rw-r--r--libraries/openvino/openvino.SlackBuild17
-rw-r--r--libraries/openvino/openvino.info8
-rw-r--r--libraries/pcl/pcl.SlackBuild4
-rw-r--r--libraries/pcl/pcl.info6
-rw-r--r--libraries/pytorch/README3
-rw-r--r--libraries/pytorch/pytorch.SlackBuild (renamed from development/stablediffusion-pipelines-cpp/stablediffusion-pipelines-cpp.SlackBuild)74
-rw-r--r--libraries/pytorch/pytorch.info10
-rw-r--r--libraries/pytorch/slack-desc19
-rw-r--r--libraries/rapidjson/fix-build-on-gcc7.diff13
-rw-r--r--libraries/rapidjson/rapidjson.SlackBuild24
-rw-r--r--libraries/rapidjson/rapidjson.info12
-rw-r--r--libraries/rapidjson/slack-desc2
-rw-r--r--libraries/spdlog/spdlog.SlackBuild4
-rw-r--r--libraries/spdlog/spdlog.info8
-rw-r--r--libraries/tclws/tclws.info2
-rw-r--r--libraries/yascreen/yascreen.SlackBuild4
-rw-r--r--libraries/yascreen/yascreen.info6
-rw-r--r--misc/fcitx5-chinese-addons/fcitx5-chinese-addons.SlackBuild2
-rw-r--r--misc/par2cmdline-tbb/par2cmdline-tbb.info2
-rw-r--r--misc/yubioath-desktop/yubioath-desktop.SlackBuild5
-rw-r--r--misc/yubioath-desktop/yubioath-desktop.info6
-rw-r--r--multimedia/droidcam/droidcam.SlackBuild7
-rw-r--r--multimedia/droidcam/droidcam.info6
-rw-r--r--multimedia/kodi/kodi.info2
-rw-r--r--multimedia/sfnt2woff/sfnt2woff.SlackBuild16
-rw-r--r--multimedia/sfnt2woff/sfnt2woff.info6
-rw-r--r--multimedia/shine/fix-bugs.patch12394
-rw-r--r--multimedia/shine/shine.SlackBuild14
-rw-r--r--multimedia/shine/shine.info6
-rw-r--r--multimedia/uavs3d/changelog21
-rw-r--r--multimedia/uavs3d/fix-build-issue.patch7618
-rw-r--r--multimedia/uavs3d/fix-libdir.patch (renamed from multimedia/uavs3d/fix-libdir-in-cmakelists.patch)6
-rw-r--r--multimedia/uavs3d/uavs3d.SlackBuild23
-rw-r--r--multimedia/uavs3d/uavs3d.info6
-rw-r--r--multimedia/vgmplay/vgmplay.SlackBuild7
-rw-r--r--multimedia/vgmplay/vgmplay.info2
-rw-r--r--multimedia/vvenc/README15
-rw-r--r--multimedia/vvenc/vvenc.SlackBuild5
-rw-r--r--multimedia/vvenc/vvenc.info10
-rw-r--r--multimedia/w_scan_cpp/w_scan_cpp.SlackBuild4
-rw-r--r--multimedia/w_scan_cpp/w_scan_cpp.info4
-rw-r--r--multimedia/winff/changelog5
-rw-r--r--multimedia/winff/patches/unit1-pas.patch60
-rw-r--r--multimedia/winff/patches/unit3-pas.patch61
-rw-r--r--multimedia/winff/patches/winff-lpi.patch22
-rw-r--r--multimedia/winff/winff.SlackBuild2
-rw-r--r--multimedia/winff/winff.info6
-rw-r--r--multimedia/xavs2/xavs2.SlackBuild37
-rw-r--r--multimedia/xavs2/xavs2.info8
-rw-r--r--network/QuiteRSS/QuiteRSS.info2
-rw-r--r--network/argus-clients/argus-clients.SlackBuild3
-rw-r--r--network/argus-clients/argus-clients.info2
-rw-r--r--network/bpfmon/bpfmon.SlackBuild4
-rw-r--r--network/bpfmon/bpfmon.info6
-rw-r--r--network/brave-browser/brave-browser.SlackBuild2
-rw-r--r--network/brave-browser/brave-browser.info6
-rw-r--r--network/cacti/cacti.SlackBuild5
-rw-r--r--network/cacti/cacti.info6
-rw-r--r--network/davmail/davmail.SlackBuild4
-rw-r--r--network/davmail/davmail.info6
-rw-r--r--network/discord/discord.SlackBuild2
-rw-r--r--network/discord/discord.info6
-rw-r--r--network/dnsproxy-bin/dnsproxy-bin.SlackBuild2
-rw-r--r--network/dnsproxy-bin/dnsproxy-bin.info14
-rw-r--r--network/drawterm/drawterm.info2
-rw-r--r--network/dropbear/dropbear.SlackBuild8
-rw-r--r--network/dropbear/dropbear.info6
-rw-r--r--network/dropbox/dropbox.SlackBuild2
-rw-r--r--network/dropbox/dropbox.info10
-rw-r--r--network/freedownloadmanager/freedownloadmanager.SlackBuild5
-rw-r--r--network/freedownloadmanager/freedownloadmanager.info4
-rw-r--r--network/goimapnotify/go.mod4
-rw-r--r--network/goimapnotify/go.sum4
-rw-r--r--network/goimapnotify/goimapnotify.SlackBuild4
-rw-r--r--network/goimapnotify/goimapnotify.info10
-rw-r--r--network/goimapnotify/modules.txt2
-rw-r--r--network/hylafax+/hylafax+.SlackBuild2
-rw-r--r--network/hylafax+/hylafax+.info6
-rw-r--r--network/kismet/kismet.SlackBuild14
-rw-r--r--network/kismet/kismet.info8
-rw-r--r--network/monkey/monkey.info2
-rw-r--r--network/movgrab/movgrab.SlackBuild17
-rw-r--r--network/movgrab/movgrab.info8
-rw-r--r--network/movgrab/slack-desc2
-rw-r--r--network/mptcpd/README6
-rw-r--r--network/mptcpd/mptcpd.SlackBuild (renamed from perl/perl-Locale-Msgfmt/perl-Locale-Msgfmt.SlackBuild)52
-rw-r--r--network/mptcpd/mptcpd.info10
-rw-r--r--network/mptcpd/slack-desc19
-rw-r--r--network/mullvadvpn-app/mullvadvpn-app.SlackBuild4
-rw-r--r--network/mullvadvpn-app/mullvadvpn-app.info10
-rw-r--r--network/neomutt/neomutt.SlackBuild2
-rw-r--r--network/neomutt/neomutt.info6
-rw-r--r--network/nessus/README2
-rw-r--r--network/nessus/nessus.SlackBuild2
-rw-r--r--network/nessus/nessus.info6
-rw-r--r--network/nextcloud-desktop/nextcloud-desktop.SlackBuild2
-rw-r--r--network/nextcloud-desktop/nextcloud-desktop.info6
-rw-r--r--network/ngrok/ngrok.info4
-rw-r--r--network/owncloud-server/owncloud-server.info2
-rw-r--r--network/phppgadmin/phppgadmin.SlackBuild17
-rw-r--r--network/phppgadmin/phppgadmin.info8
-rw-r--r--network/purple-hangouts/LICENSE674
-rw-r--r--network/purple-hangouts/README10
-rw-r--r--network/purple-hangouts/purple-hangouts.SlackBuild97
-rw-r--r--network/purple-hangouts/purple-hangouts.info10
-rw-r--r--network/purple-hangouts/slack-desc19
-rw-r--r--network/signal-desktop/signal-desktop.SlackBuild2
-rw-r--r--network/signal-desktop/signal-desktop.info6
-rw-r--r--network/telegram/telegram.SlackBuild2
-rw-r--r--network/telegram/telegram.info6
-rw-r--r--network/translate/translate.info2
-rw-r--r--network/viber/viber.SlackBuild2
-rw-r--r--network/viber/viber.info4
-rw-r--r--network/vimb/vimb.SlackBuild2
-rw-r--r--network/vimb/vimb.info2
-rw-r--r--network/vivaldi/vivaldi.SlackBuild2
-rw-r--r--network/vivaldi/vivaldi.info10
-rw-r--r--network/xmrig/xmrig.SlackBuild2
-rw-r--r--network/xmrig/xmrig.info6
-rw-r--r--office/1password/1password.info2
-rw-r--r--office/LibreOffice/LibreOffice.SlackBuild2
-rw-r--r--office/LibreOffice/LibreOffice.info10
-rw-r--r--office/calibre-bin/calibre-bin.SlackBuild2
-rw-r--r--office/calibre-bin/calibre-bin.info6
-rw-r--r--office/gnumeric/gnumeric.SlackBuild6
-rw-r--r--office/gnumeric/gnumeric.info6
-rw-r--r--office/krop/krop.SlackBuild2
-rw-r--r--office/krop/krop.info2
-rw-r--r--office/libreoffice-helppack/libreoffice-helppack.SlackBuild2
-rw-r--r--office/libreoffice-helppack/libreoffice-helppack.info6
-rw-r--r--office/libreoffice-langpack/libreoffice-langpack.SlackBuild2
-rw-r--r--office/libreoffice-langpack/libreoffice-langpack.info6
-rw-r--r--office/libreoffice/libreoffice.SlackBuild2
-rw-r--r--office/libreoffice/libreoffice.info6
-rw-r--r--office/lotus123/lotus123.info2
-rw-r--r--office/xtrkcad/slack-desc2
-rw-r--r--office/xtrkcad/xtrkcad.SlackBuild15
-rw-r--r--office/xtrkcad/xtrkcad.info8
-rw-r--r--perl/perl-Locale-Codes/perl-Locale-Codes.SlackBuild2
-rw-r--r--perl/perl-Locale-Codes/perl-Locale-Codes.info6
-rw-r--r--perl/perl-Locale-Msgfmt/README9
-rw-r--r--perl/perl-Locale-Msgfmt/perl-Locale-Msgfmt.info10
-rw-r--r--perl/perl-Locale-Msgfmt/slack-desc19
-rw-r--r--perl/perl-Module-Build-Tiny/perl-Module-Build-Tiny.SlackBuild2
-rw-r--r--perl/perl-Module-Build-Tiny/perl-Module-Build-Tiny.info6
-rw-r--r--perl/perl-Module-Install/perl-Module-Install.SlackBuild5
-rw-r--r--perl/perl-Module-Install/perl-Module-Install.info8
-rw-r--r--perl/perl-Module-Manifest/perl-Module-Manifest.SlackBuild2
-rw-r--r--perl/perl-Module-Manifest/perl-Module-Manifest.info6
-rw-r--r--perl/perl-Net-DNS-SEC/perl-Net-DNS-SEC.SlackBuild7
-rw-r--r--perl/perl-Net-DNS-SEC/perl-Net-DNS-SEC.info6
-rw-r--r--perl/perl-PDF-API2/perl-PDF-API2.SlackBuild5
-rw-r--r--perl/perl-PDF-API2/perl-PDF-API2.info10
-rw-r--r--perl/perl-Test-Script/README6
-rw-r--r--perl/perl-Test-Script/perl-Test-Script.SlackBuild93
-rw-r--r--perl/perl-Test-Script/perl-Test-Script.info10
-rw-r--r--perl/perl-Test-Script/slack-desc19
-rw-r--r--perl/perl-WWW-Curl/curl-7.71.0.patch.gzbin497 -> 527 bytes
-rw-r--r--perl/perl-WWW-Curl/perl-WWW-Curl.SlackBuild7
-rw-r--r--perl/perl-YAML-Tiny/perl-YAML-Tiny.SlackBuild5
-rw-r--r--perl/perl-YAML-Tiny/perl-YAML-Tiny.info8
-rw-r--r--perl/perl-html-form/perl-html-form.SlackBuild7
-rw-r--r--perl/perl-html-form/perl-html-form.info8
-rw-r--r--python/certbot-dns-cloudflare/certbot-dns-cloudflare.SlackBuild4
-rw-r--r--python/certbot-dns-cloudflare/certbot-dns-cloudflare.info8
-rw-r--r--python/pyPdf/README16
-rw-r--r--python/pyPdf/pyPdf.info10
-rw-r--r--python/pyPdf/slack-desc19
-rw-r--r--python/pytest/pytest.info2
-rw-r--r--python/python-mysql-replication/python-mysql-replication.SlackBuild2
-rw-r--r--python/python-mysql-replication/python-mysql-replication.info6
-rw-r--r--python/python2-pluggy/README6
-rw-r--r--python/python2-pluggy/python2-pluggy.SlackBuild (renamed from libraries/libtorch-cxx11-abi-shared-with-deps/libtorch-cxx11-abi-shared-with-deps.SlackBuild)27
-rw-r--r--python/python2-pluggy/python2-pluggy.info10
-rw-r--r--python/python2-pluggy/slack-desc19
-rw-r--r--python/python3-ZConfig/python3-ZConfig.SlackBuild4
-rw-r--r--python/python3-ZConfig/python3-ZConfig.info6
-rw-r--r--python/python3-astroid/python3-astroid.SlackBuild4
-rw-r--r--python/python3-astroid/python3-astroid.info6
-rw-r--r--python/python3-cairocffi/python3-cairocffi.SlackBuild2
-rw-r--r--python/python3-cairocffi/python3-cairocffi.info6
-rw-r--r--python/python3-cloudflare/python3-cloudflare.SlackBuild4
-rw-r--r--python/python3-cloudflare/python3-cloudflare.info8
-rw-r--r--python/python3-filelock/python3-filelock.SlackBuild2
-rw-r--r--python/python3-filelock/python3-filelock.info6
-rw-r--r--python/python3-grpcio/python3-grpcio.SlackBuild2
-rw-r--r--python/python3-grpcio/python3-grpcio.info6
-rw-r--r--python/python3-identify/python3-identify.SlackBuild2
-rw-r--r--python/python3-identify/python3-identify.info6
-rw-r--r--python/python3-joblib/python3-joblib.SlackBuild2
-rw-r--r--python/python3-joblib/python3-joblib.info6
-rw-r--r--python/python3-keyring/python3-keyring.SlackBuild2
-rw-r--r--python/python3-keyring/python3-keyring.info6
-rw-r--r--python/python3-librosa/python3-librosa.SlackBuild18
-rw-r--r--python/python3-librosa/python3-librosa.info6
-rw-r--r--python/python3-paste/python3-paste.SlackBuild4
-rw-r--r--python/python3-paste/python3-paste.info6
-rw-r--r--python/python3-pdm-backend/python3-pdm-backend.SlackBuild2
-rw-r--r--python/python3-pdm-backend/python3-pdm-backend.info6
-rw-r--r--python/python3-plotly/python3-plotly.SlackBuild2
-rw-r--r--python/python3-plotly/python3-plotly.info6
-rw-r--r--python/python3-pylint/python3-pylint.SlackBuild9
-rw-r--r--python/python3-pylint/python3-pylint.info6
-rw-r--r--python/python3-pypdf/README7
-rw-r--r--python/python3-pypdf/python3-pypdf.SlackBuild (renamed from python/pyPdf/pyPdf.SlackBuild)37
-rw-r--r--python/python3-pypdf/python3-pypdf.info10
-rw-r--r--python/python3-pypdf/slack-desc19
-rw-r--r--python/python3-pytest/python3-pytest.SlackBuild2
-rw-r--r--python/python3-pytest/python3-pytest.info6
-rw-r--r--python/python3-regex/python3-regex.SlackBuild2
-rw-r--r--python/python3-regex/python3-regex.info6
-rw-r--r--python/python3-threadpoolctl/python3-threadpoolctl.SlackBuild2
-rw-r--r--python/python3-threadpoolctl/python3-threadpoolctl.info6
-rw-r--r--python/python3-virtualenv/python3-virtualenv.SlackBuild2
-rw-r--r--python/python3-virtualenv/python3-virtualenv.info6
-rw-r--r--python/python3-wurlitzer/python3-wurlitzer.SlackBuild18
-rw-r--r--python/python3-wurlitzer/python3-wurlitzer.info6
-rw-r--r--python/sphinxcontrib-htmlhelp/README1
-rw-r--r--python/sphinxcontrib-htmlhelp/slack-desc19
-rw-r--r--python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp.SlackBuild85
-rw-r--r--python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp.info10
-rw-r--r--python/tox/tox.info2
-rw-r--r--ruby/ruby-build/ruby-build.SlackBuild2
-rw-r--r--ruby/ruby-build/ruby-build.info6
-rw-r--r--system/CPU-X/CPU-X.SlackBuild2
-rw-r--r--system/CPU-X/CPU-X.info6
-rw-r--r--system/Solaar/Solaar.SlackBuild8
-rw-r--r--system/alacritty/alacritty.SlackBuild8
-rw-r--r--system/alacritty/alacritty.info328
-rw-r--r--system/apple-fonts-NY/apple-fonts-NY.info2
-rw-r--r--system/apple-fonts-SF/apple-fonts-SF.info6
-rw-r--r--system/apptainer/README7
-rw-r--r--system/apptainer/apptainer.SlackBuild10
-rw-r--r--system/btop/btop.SlackBuild6
-rw-r--r--system/btop/btop.info6
-rw-r--r--system/conky/conky.SlackBuild2
-rw-r--r--system/conky/conky.info6
-rw-r--r--system/courier-screenplay/courier-screenplay.info2
-rw-r--r--system/cpmtools/cpmtools.info2
-rw-r--r--system/distrobox/distrobox.SlackBuild2
-rw-r--r--system/distrobox/distrobox.info6
-rw-r--r--system/docker-buildx/docker-buildx.SlackBuild4
-rw-r--r--system/docker-buildx/docker-buildx.info6
-rw-r--r--system/docker-compose/docker-compose.SlackBuild2
-rw-r--r--system/docker-compose/docker-compose.info6
-rw-r--r--system/efi-sync/README19
-rw-r--r--system/efi-sync/doinst.sh25
-rw-r--r--system/efi-sync/efi-sync.SlackBuild62
-rw-r--r--system/efi-sync/efi-sync.info10
-rw-r--r--system/efi-sync/files/rc.efi-sync.new60
-rw-r--r--system/efi-sync/slack-desc19
-rw-r--r--system/efitools/efitools.SlackBuild6
-rw-r--r--system/fastfetch/fastfetch.SlackBuild2
-rw-r--r--system/fastfetch/fastfetch.info6
-rw-r--r--system/fzf/fzf.SlackBuild10
-rw-r--r--system/fzf/fzf.info14
-rw-r--r--system/inotify-info/inotify-info.SlackBuild13
-rw-r--r--system/inotify-info/inotify-info.info6
-rw-r--r--system/limine/limine.SlackBuild2
-rw-r--r--system/limine/limine.info6
-rw-r--r--system/openzfs/openzfs.SlackBuild9
-rw-r--r--system/pacemaker/pacemaker.info2
-rw-r--r--system/qemu/README19
-rw-r--r--system/qemu/qemu.SlackBuild7
-rw-r--r--system/qemu/qemu.info2
-rw-r--r--system/slackrepo-hints/slackrepo-hints.SlackBuild2
-rw-r--r--system/slackrepo-hints/slackrepo-hints.info6
-rw-r--r--system/sysdig/sysdig.SlackBuild4
-rw-r--r--system/sysdig/sysdig.info12
-rw-r--r--system/ti99sim/ti99sim.SlackBuild2
-rw-r--r--system/ttf-babelstone-cjk/APL.txt58
-rw-r--r--system/ttf-babelstone-cjk/BabelStoneOFL.txt94
-rw-r--r--system/ttf-babelstone-cjk/README5
-rw-r--r--system/ttf-babelstone-cjk/copyright13
-rw-r--r--system/ttf-babelstone-cjk/copyright26
-rw-r--r--system/ttf-babelstone-cjk/readme_fonts147
-rw-r--r--system/ttf-babelstone-cjk/ttf-babelstone-cjk.SlackBuild28
-rw-r--r--system/ttf-babelstone-cjk/ttf-babelstone-cjk.info54
-rw-r--r--system/ttf-xo-fonts/ttf-xo-fonts.SlackBuild2
-rw-r--r--system/ttf-xo-fonts/ttf-xo-fonts.info2
-rw-r--r--system/usermin/usermin.SlackBuild2
-rw-r--r--system/usermin/usermin.info6
-rw-r--r--system/webmin/webmin.SlackBuild3
-rw-r--r--system/webmin/webmin.info10
-rw-r--r--system/xarchiver/xarchiver.SlackBuild4
-rw-r--r--system/xarchiver/xarchiver.info6
500 files changed, 2296 insertions, 24609 deletions
diff --git a/ChangeLog.txt b/ChangeLog.txt
index e9c3eeeda5..957cc536ea 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,238 @@
+Sat May 4 14:46:17 UTC 2024
+academic/Gridcoin-Research: Updated for version 5.4.8.0
+academic/R: Updated for version 4.4.0.
+academic/bcftools
+academic/copasi: Updated for version 4.43.288.
+academic/fet: Updated for version 6.19.4.
+academic/pspp: Updated for version 2.0.1.
+academic/samtools:Upgrade to 1.20
+academic/smath-studio: Updated for version 1.1.8763
+academic/stellarsolver: Mark for x86_64 only.
+audio/ardour: Updated for version 8.6.0.
+audio/audacity: Updated for version 3.5.1.
+audio/openvino-plugins-ai-audacity: Added (AI-enabled effects, generators, and analyzers for Audacity).
+audio/rack: Updated for version 2.5.1.
+audio/yabridge: Mark for i586 only.
+desktop/BlockstreamGreen: Updated for version 2.0.4.
+desktop/Matcha-gtk-theme: Update for 2024_05_01
+desktop/arc-theme: Updated for version 20221218.
+desktop/buku: Updated for version 4.9.
+desktop/nwg-displays: Updated for version 0.3.17.
+desktop/nwg-panel: Updated for version 0.9.28.
+desktop/papirus-icon-theme: Updated for version 20240501.
+desktop/waybar: Remove dep.
+development/Bear: Fix BUILD and remove dep.
+development/Bear: Fix build.
+development/Bear: Updated for version 3.1.3.
+development/avrdude: Updated for version 7.3.
+development/aws-cdk: Updated for version 2.140.0.
+development/bluefish: Updated for version 2.2.15
+development/github-cli: Updated for version 2.49.0
+development/gitlab-cli: Updated for version 1.40.0.
+development/heroku-cli: Updated for version 8.11.5.
+development/hhvm: Removed (maintainer request).
+development/hipSYCL: Fix MD5SUM.
+development/jdk11: Updated for version 11.0.22.
+development/jupyter-nbconvert: Update for 7.16.4
+development/kForth-32: Mark for i586 only.
+development/kForth-64: Mark for x86_64 only.
+development/liberica-jdk-bin: Update script.
+development/mold: Updated for version 2.31.0.
+development/mongodb-compass: Updated for version 1.43.0.
+development/mongodb-shell: Updated for version 2.2.5.
+development/openjdk7: Mark for x86_64.
+development/openjdk8: Mark for x86_64.
+development/protoc-gen-go: Update for 1.34.0
+development/pylint: Update script.
+development/rust16: Updated for version 1.77.2.
+development/sqlcl: Updated for version 24.1.0.087.0929.
+development/sqldeveloper: Updated for version 23.1.1.345.2114.
+development/stablediffusion-pipelines-cpp: Removed (maintainer).
+development/stablediffusion-pipelines-cpp: Update script.
+development/textadept: Updated for version 12.4.
+development/vscode-bin: Updated for version 1.89.0.
+development/whisper.cpp: Update script.
+games/Mindustry: Repackage instead of Gradle build
+games/PrismLauncher: Updated for version 8.3.
+games/ags: Updated for version 3.6.1.24.
+games/ddnet: Updated for version 18.2.
+games/dwarffortress: Updated for version 0.50.13.
+games/freeciv: updated for version 3.1.1
+games/gzdoom: Mark for x86_64 only.
+games/lbreakouthd: Updated for version 1.1.8.
+games/melonds: Mark for x86_64.
+games/openttd: Updated for version 14.0.
+games/planetblupi: updated for version 1.15.1
+games/quakespasm: Updated for version 0.96.1.
+games/wesnoth: Updated for version 1.18.0
+games/xemu: Mark for x86_64.
+games/zsnes: Mark for i586 only.
+gis/gpxsee: Updated for version 13.19.
+gis/osgEarth: Remove dep.
+graphics/FSPViewer: Fix stripping binary.
+graphics/graphviz: updated for version 11.0.0
+graphics/hugin: gzip patch.
+graphics/ueberzugpp: Remove dep.
+graphics/veles: Require updated rust for 32bit build.
+graphics/wine-nine-standalone: Mark for i586 only.
+ham/cm256cc: Updated for version 1.1.1.
+ham/dab_lib: Updated for version 20240428.229149eb.
+ham/libsigmf: Updated for version 20240428.299dc8f9.
+ham/mbelib: Updated for version 20240428.9a04ed5c.
+ham/qlog: Updated for version 0.35.0.
+ham/sdrangel: Updated for version 7.20.0.
+ham/sgp4: Updated for version 20240428.6a448b48.
+libraries/CLI11: Updated for version 2.4.2.
+libraries/ell: Updated for version 0.65.
+libraries/goffice: Updated for version 0.10.57.
+libraries/grpc: Update for 1.63.0
+libraries/htslib: upgrade to 1.20
+libraries/libbass: Fixed MD5SUM.
+libraries/libcpuid: Updated for version 0.6.5.
+libraries/libfaketime: Updated for version 0.9.10.
+libraries/libliftoff: Update MD5SUM and script.
+libraries/librepfunc: Updated for version 1.10.0.
+libraries/libtecla: Mark x86_64 only.
+libraries/libtorch-cxx11-abi-shared-with-deps: Removed (pytorch).
+libraries/libxmlb: Updated for version 0.3.19.
+libraries/lua-readline: Removed (upstream no longer exists).
+libraries/mimalloc: Updated for version 2.1.4
+libraries/nng: Updated for version 1.8.0.
+libraries/opencl-amd: Mark for x86_64 only.
+libraries/openvdb: Mark for x86_64.
+libraries/openvino: Updated for version 2024.1.0.
+libraries/pcl: Updated for version 1.14.0
+libraries/pytorch: Added (machine learning library).
+libraries/rapidjson: Fix FTBFS with gtest installed + new maintainer
+libraries/spdlog: Updated for version 1.14.1.
+libraries/tclws: Fixed MD5SUM.
+libraries/yascreen: Updated for version 1.99.
+misc/fcitx5-chinese-addons: Disable Qt6.
+misc/par2cmdline-tbb: Update DEP.
+misc/yubioath-desktop: Updated for version 5.1.0.
+multimedia/droidcam: Updated for version 2.1.3.
+multimedia/kodi: Remove dep.
+multimedia/sfnt2woff: Update project HOMEPAGE and DOWNLOAD.
+multimedia/shine: Updated for version ab5e352_20230101.
+multimedia/uavs3d: Updated for version 1fd0491_20230223.
+multimedia/vgmplay: Update script.
+multimedia/vvenc: Updated for version 1.11.1.
+multimedia/w_scan_cpp: Updated for internal version vdr-2.6.7.
+multimedia/winff: Updated for version 1.6.4.
+multimedia/xavs2: Mark for x86_64 only.
+network/QuiteRSS: Update DOWNLOAD.
+network/argus-clients: Fix script.
+network/bpfmon: Updated for version 2.52.
+network/brave-browser: brave-browser: update 1.65.126
+network/cacti: Updated for version 1.2.26.
+network/davmail: Updated for version 6.2.2.
+network/discord: Updated for version 0.0.52.
+network/dnsproxy-bin: Updated for version 0.71.1.
+network/drawterm: Fix MD5SUM.
+network/dropbear: Updated for version 2024.85.
+network/dropbox: Updated for version 197.4.7629.
+network/freedownloadmanager: Updated for version 6.20.0.5510.
+network/goimapnotify: Updated for version 2.3.15.
+network/hylafax+: Updated for version 7.0.8.
+network/kismet: Updated for version 20240430.
+network/monkey: Updated DOWNLOAD.
+network/movgrab: Updated for version 3.1.2.
+network/mptcpd: Added (Multipath TCP management).
+network/mullvadvpn-app: Updated for version 2024.2.
+network/neomutt: Updated for version 20240425.
+network/nessus: Updated for version 10.7.2.
+network/nextcloud-desktop: Updated for version 3.13.0.
+network/ngrok: Update MD5SUM.
+network/owncloud-server: Update DOWNLOAD.
+network/phppgadmin: Updated for version 7.14.7
+network/purple-hangouts: Removed (Google shut it down).
+network/signal-desktop: Updated for version 7.7.0.
+network/telegram: Updated for version 5.0.0.
+network/translate: Add missing dependency.
+network/viber: Updated for version 21.8.0.11.
+network/vimb: Update dependencies.
+network/vivaldi: Updated for version 6.7.3329.21.
+network/xmrig: Updated for version 6.21.3.
+office/1password: Fix MD5SUM.
+office/LibreOffice: Updated for version 24.2.3.2
+office/calibre-bin: Updated for version 7.10.0.
+office/gnumeric: Updated for version 1.12.57.
+office/krop: Updates.
+office/libreoffice-helppack: Updated for version 24.2.3.
+office/libreoffice-langpack: Updated for version 24.2.3.
+office/libreoffice: Updated for version 24.2.3.
+office/lotus123: Mark for i586 only.
+office/xtrkcad: Updated for version 5.3.0GA.
+perl/perl-Locale-Codes: Updated for version 3.78
+perl/perl-Locale-Msgfmt: Removed (FTBFS).
+perl/perl-Module-Build-Tiny: Updated for version 0.048.
+perl/perl-Module-Install: Updated for version 1.21
+perl/perl-Module-Manifest: Updated for version 1.09.
+perl/perl-Net-DNS-SEC: Updated for version 1.24.
+perl/perl-PDF-API2: Updated for version 2.045
+perl/perl-Test-Script: Removed (FTBFS).
+perl/perl-WWW-Curl: Update curl patch.
+perl/perl-YAML-Tiny: Updated for version 1.74
+perl/perl-html-form: Updated for version 6.11.
+python/certbot-dns-cloudflare: Updated for version 2.10.0
+python/pyPdf: Removed (use python3-pypdf).
+python/pytest: Update dep.
+python/python-mysql-replication: Updated for version 1.0.8.
+python/python2-pluggy: Added (python2 version of pluggy).
+python/python3-ZConfig: Updated for version 4.1.
+python/python3-astroid: Updated for version 3.1.0.
+python/python3-cairocffi: updated for version 1.7.0
+python/python3-cloudflare: Updated for version 2.9.14
+python/python3-filelock: Updated for version 3.14.0.
+python/python3-grpcio: Update for 1.63.0
+python/python3-identify: Updated for version 2.5.36.
+python/python3-joblib: Updated for version 1.4.2.
+python/python3-keyring: Update for 25.2.0
+python/python3-librosa: Updated for version 0.10.2.
+python/python3-paste: updated for version 3.10.0
+python/python3-paste: updated for version 3.10.1
+python/python3-pdm-backend: Updated for version 2.3.0.
+python/python3-plotly: Update for 5.22.0
+python/python3-pylint: Updated for version 3.1.0.
+python/python3-pypdf: Added (PDF Library).
+python/python3-pytest: Updated for version 8.2.0.
+python/python3-regex: Update for 2024.4.28
+python/python3-threadpoolctl: Updated for version 3.5.0.
+python/python3-virtualenv: Updated for version 20.26.1.
+python/python3-wurlitzer: Update for 3.1.0
+python/tox: Update dep.
+ruby/ruby-build: Updated for version 20240501.
+system/CPU-X: Updated for version 5.0.4.
+system/Solaar: Fix building on -current.
+system/alacritty: Updated for version 0.13.2.
+system/apple-fonts-NY: Update MD5SUM.
+system/apple-fonts-SF: Update MD5SUM.
+system/apptainer: Make setuid configurable.
+system/btop: Updated for version 1.3.2.
+system/conky: Updated for version 1.20.2.
+system/courier-screenplay: Update MD5SUM.
+system/cpmtools: Fixed MD5SUM.
+system/distrobox: Updated for version 1.7.2.0.
+system/docker-buildx: Updated for version 0.14.0.
+system/docker-compose: Updated for version 2.27.0.
+system/efi-sync: Added (EFI auto update).
+system/efitools: Fix build.
+system/fastfetch: Updated for version 2.10.2.
+system/fzf: Updated for version 0.51.0.
+system/inotify-info: Updated for version 0.0.1.
+system/limine: Updated for version 7.4.1
+system/openzfs: removed unnecessary configure arguments
+system/pacemaker: Fixed MD5SUM.
+system/qemu: Update dependencies to allow offline build
+system/slackrepo-hints: Updated for version 20240503.
+system/sysdig: Updated for version 0.36.1.
+system/ti99sim: Fix build when ARCH is set in the environment.
+system/ttf-babelstone-cjk: Updated for version 1.1.
+system/ttf-xo-fonts: Updates.
+system/usermin: Updated for version 2.010.
+system/webmin: Updated for version 2.111.
+system/xarchiver: Updated for version 0.5.4.23
++--------------------------+
Sat Apr 27 02:29:53 UTC 2024
academic/cadabra2: Updated for version 2.4.5.7.
academic/nco: Updated for version 5.2.4.
diff --git a/academic/Gridcoin-Research/Gridcoin-Research.SlackBuild b/academic/Gridcoin-Research/Gridcoin-Research.SlackBuild
index 9a04eb6fc4..7ef6e2ceba 100644
--- a/academic/Gridcoin-Research/Gridcoin-Research.SlackBuild
+++ b/academic/Gridcoin-Research/Gridcoin-Research.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=Gridcoin-Research
-VERSION=${VERSION:-5.4.7.0}
+VERSION=${VERSION:-5.4.8.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/academic/Gridcoin-Research/Gridcoin-Research.info b/academic/Gridcoin-Research/Gridcoin-Research.info
index a28295c32f..8db3ea0b94 100644
--- a/academic/Gridcoin-Research/Gridcoin-Research.info
+++ b/academic/Gridcoin-Research/Gridcoin-Research.info
@@ -1,8 +1,8 @@
PRGNAM="Gridcoin-Research"
-VERSION="5.4.7.0"
+VERSION="5.4.8.0"
HOMEPAGE="https://gridcoin.us/"
-DOWNLOAD="https://github.com/gridcoin-community/Gridcoin-Research/archive/5.4.7.0/Gridcoin-Research-5.4.7.0.tar.gz"
-MD5SUM="8c42dfd8deaa754d78aa248785e724b0"
+DOWNLOAD="https://github.com/gridcoin-community/Gridcoin-Research/archive/5.4.8.0/Gridcoin-Research-5.4.8.0.tar.gz"
+MD5SUM="69a861f7eca09f6142c8e737744ad9fd"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/academic/Gridcoin-Research/README b/academic/Gridcoin-Research/README
index 2fc9a1a4f5..53cc2f8645 100644
--- a/academic/Gridcoin-Research/README
+++ b/academic/Gridcoin-Research/README
@@ -34,6 +34,6 @@ release notes on
https://github.com/gridcoin-community/Gridcoin-Research/releases
** NOTE: **
-This is a MANDATORY upgrade for versions 5.4.5 and below to fix an
+While this is a LEISURE update, you are highly encouraged to upgrade.
+Included are additonal fixes and improvements releated to the recent
inadvertent fork as a result of an inadvertent protocol change.
-If you are already on 5.4.6 this upgrade is "leisure."
diff --git a/academic/R/R.SlackBuild b/academic/R/R.SlackBuild
index 3ee98369fc..97b5d3a22b 100644
--- a/academic/R/R.SlackBuild
+++ b/academic/R/R.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=R
-VERSION=${VERSION:-4.3.3}
+VERSION=${VERSION:-4.4.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/academic/R/R.info b/academic/R/R.info
index 45cf892f94..6c12168093 100644
--- a/academic/R/R.info
+++ b/academic/R/R.info
@@ -1,8 +1,8 @@
PRGNAM="R"
-VERSION="4.3.3"
+VERSION="4.4.0"
HOMEPAGE="https://www.r-project.org/"
-DOWNLOAD="https://cran.r-project.org/src/base/R-4/R-4.3.3.tar.xz"
-MD5SUM="5602f5996107c346dba12a16e866d2e2"
+DOWNLOAD="https://cran.r-project.org/src/base/R-4/R-4.4.0.tar.xz"
+MD5SUM="647ef3e012e9cf36a187db64a6082217"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/academic/bcftools/bcftools.SlackBuild b/academic/bcftools/bcftools.SlackBuild
index b7a8433557..ad6f5d7181 100644
--- a/academic/bcftools/bcftools.SlackBuild
+++ b/academic/bcftools/bcftools.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for bcftools
-# Copyright 2017-2023 Rob van Nues # All rights reserved.
+# Copyright 2017-2024 Rob van Nues # All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
@@ -24,8 +24,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=bcftools
-VERSION=${VERSION:-1.19}
-HTSLIBV=${HTSLIBV:-1.19}
+VERSION=${VERSION:-1.20}
+HTSLIBV=${HTSLIBV:-1.20}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/academic/bcftools/bcftools.info b/academic/bcftools/bcftools.info
index 1998ed001c..84e5bb039b 100644
--- a/academic/bcftools/bcftools.info
+++ b/academic/bcftools/bcftools.info
@@ -1,8 +1,8 @@
PRGNAM="bcftools"
-VERSION="1.19"
+VERSION="1.20"
HOMEPAGE="http://www.htslib.org"
-DOWNLOAD="https://github.com/samtools/bcftools/releases/download/1.19/bcftools-1.19.tar.bz2"
-MD5SUM="9b4e8be279024d19f36bbaad1d2bdb41"
+DOWNLOAD="https://github.com/samtools/bcftools/releases/download/1.20/bcftools-1.20.tar.bz2"
+MD5SUM="5cfb124c7d9e4db6c5a4e6080a2f27f8"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="htslib"
diff --git a/academic/copasi/copasi.SlackBuild b/academic/copasi/copasi.SlackBuild
index 0a6da4fcfd..732cd916d9 100644
--- a/academic/copasi/copasi.SlackBuild
+++ b/academic/copasi/copasi.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=copasi
-VERSION=${VERSION:-4.42.284}
+VERSION=${VERSION:-4.43.288}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/academic/copasi/copasi.info b/academic/copasi/copasi.info
index 75e1b966a6..2840e1662d 100644
--- a/academic/copasi/copasi.info
+++ b/academic/copasi/copasi.info
@@ -1,10 +1,10 @@
PRGNAM="copasi"
-VERSION="4.42.284"
+VERSION="4.43.288"
HOMEPAGE="https://copasi.org"
-DOWNLOAD="https://github.com/copasi/COPASI/releases/download/Build-284/COPASI-4.42.284-Linux-32bit.sh"
-MD5SUM="66ae94a23f8d7745835e3639f1c567f6"
-DOWNLOAD_x86_64="https://github.com/copasi/COPASI/releases/download/Build-284/COPASI-4.42.284-Linux-64bit.sh"
-MD5SUM_x86_64="87f09230f64ea4c69a6695963e4f2594"
+DOWNLOAD="https://github.com/copasi/COPASI/releases/download/Build-288/COPASI-4.43.288-Linux-32bit.sh"
+MD5SUM="2eb1afccd0697ab7b75a1177e89ce15b"
+DOWNLOAD_x86_64="https://github.com/copasi/COPASI/releases/download/Build-288/COPASI-4.43.288-Linux-64bit.sh"
+MD5SUM_x86_64="cf48d9dd2672f1ba676ddc457b71c91d"
REQUIRES=""
MAINTAINER="Pedro Mendes"
EMAIL="pedro@gepasi.org"
diff --git a/academic/fet/fet.SlackBuild b/academic/fet/fet.SlackBuild
index 6962abec49..198ce373f9 100644
--- a/academic/fet/fet.SlackBuild
+++ b/academic/fet/fet.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=fet
-VERSION=${VERSION:-6.19.3}
+VERSION=${VERSION:-6.19.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/academic/fet/fet.info b/academic/fet/fet.info
index 2093219a59..47f4960d2d 100644
--- a/academic/fet/fet.info
+++ b/academic/fet/fet.info
@@ -1,8 +1,8 @@
PRGNAM="fet"
-VERSION="6.19.3"
+VERSION="6.19.4"
HOMEPAGE="https://www.lalescu.ro/liviu/fet/"
-DOWNLOAD="https://www.lalescu.ro/liviu/fet/download/fet-6.19.3.tar.bz2"
-MD5SUM="5af48c9d1fdf303d7f2ed8ec306a257d"
+DOWNLOAD="https://www.lalescu.ro/liviu/fet/download/fet-6.19.4.tar.bz2"
+MD5SUM="799ab0b68fa7a16efe4c2a5e1284a817"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/academic/pspp/pspp.SlackBuild b/academic/pspp/pspp.SlackBuild
index 17b31eb664..efd42d80ce 100644
--- a/academic/pspp/pspp.SlackBuild
+++ b/academic/pspp/pspp.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=pspp
-VERSION=${VERSION:-2.0.0}
+VERSION=${VERSION:-2.0.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/academic/pspp/pspp.info b/academic/pspp/pspp.info
index 702e496e28..7c293f4bc2 100644
--- a/academic/pspp/pspp.info
+++ b/academic/pspp/pspp.info
@@ -1,8 +1,8 @@
PRGNAM="pspp"
-VERSION="2.0.0"
+VERSION="2.0.1"
HOMEPAGE="http://www.gnu.org/software/pspp/"
-DOWNLOAD="http://mirrors.nav.ro/gnu/pspp/pspp-2.0.0.tar.gz"
-MD5SUM="11f5949311bfe66a44999b9d7db6c99b"
+DOWNLOAD="http://mirrors.nav.ro/gnu/pspp/pspp-2.0.1.tar.gz"
+MD5SUM="0933860d7d511dac67277ef4829263ce"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="spread-sheet-widget"
diff --git a/academic/samtools/samtools.SlackBuild b/academic/samtools/samtools.SlackBuild
index 7efbaf3288..4f39dce0d0 100644
--- a/academic/samtools/samtools.SlackBuild
+++ b/academic/samtools/samtools.SlackBuild
@@ -25,14 +25,14 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=samtools
-VERSION=${VERSION:-1.19.2}
-HTSLIBV=${HTSLIBV:-1.19.1}
+VERSION=${VERSION:-1.20}
+HTSLIBV=${HTSLIBV:-1.20}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-# Some applications still rely on the legacy samtools API instead of using htslib
-# exclusively, in that case, install the headers in /usr/include/bam and the static
+# Some applications still rely on the legacy samtools API instead of using htslib
+# exclusively, in that case, install the headers in /usr/include/bam and the static
# libbam library as well by declaring (uncommenting):
#SAMLIB="yes"
# and commenting out:
@@ -122,9 +122,7 @@ find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- AUTHORS LICENSE README NEWS.md examples \
- $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS LICENSE README NEWS.md examples $PKG/usr/doc/$PRGNAM-$VERSION
cp $CWD/README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/academic/samtools/samtools.info b/academic/samtools/samtools.info
index eef9473b1e..40df7ba546 100644
--- a/academic/samtools/samtools.info
+++ b/academic/samtools/samtools.info
@@ -1,8 +1,8 @@
PRGNAM="samtools"
-VERSION="1.19.2"
+VERSION="1.20"
HOMEPAGE="http://www.htslib.org"
-DOWNLOAD="https://github.com/samtools/samtools/releases/download/1.19.2/samtools-1.19.2.tar.bz2"
-MD5SUM="318492d95f5d8cef697442d1be996b77"
+DOWNLOAD="https://github.com/samtools/samtools/releases/download/1.20/samtools-1.20.tar.bz2"
+MD5SUM="e33f429b57324a55e5cbe0ef9f3a094e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="htslib"
diff --git a/academic/smath-studio/smath-studio.SlackBuild b/academic/smath-studio/smath-studio.SlackBuild
index 4b26c719c3..e6b4740429 100644
--- a/academic/smath-studio/smath-studio.SlackBuild
+++ b/academic/smath-studio/smath-studio.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=smath-studio
-VERSION=${VERSION:-1.0.8348}
+VERSION=${VERSION:-1.1.8763}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/academic/smath-studio/smath-studio.desktop b/academic/smath-studio/smath-studio.desktop
index 6b41e1fe8d..2af6903742 100644
--- a/academic/smath-studio/smath-studio.desktop
+++ b/academic/smath-studio/smath-studio.desktop
@@ -7,5 +7,5 @@ GenericName=Computer algebra system
Comment=Symbolic computation software
Icon=smath-studio
Exec=smath-studio
-Categories=Education;
+Categories=Science;Education;Math
MimeType=
diff --git a/academic/smath-studio/smath-studio.info b/academic/smath-studio/smath-studio.info
index bc40d92965..c10558c6b9 100644
--- a/academic/smath-studio/smath-studio.info
+++ b/academic/smath-studio/smath-studio.info
@@ -1,9 +1,9 @@
PRGNAM="smath-studio"
-VERSION="1.0.8348"
+VERSION="1.1.8763"
HOMEPAGE="https://smath.info"
-DOWNLOAD="https://smath.com/file/Lw2xA/SMathStudioDesktop.1_0_8348.Mono.tar.gz \
+DOWNLOAD="https://smath.info/en-US/files/Download/w3XHB/SMathStudioDesktop.1_1_8763.Mono.tar.gz \
http://ponce.cc/slackware/sources/repo/SMathStudio.Icons.zip"
-MD5SUM="4ae9109f910c0085eeb8c193f3ad1c10 \
+MD5SUM="0e3c05eb81a82dbcce2ef04904624b2b \
1dd3ff0477b5c3c57fb815320a387643"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/academic/stellarsolver/stellarsolver.info b/academic/stellarsolver/stellarsolver.info
index e9d567c16f..106ea0e7ce 100644
--- a/academic/stellarsolver/stellarsolver.info
+++ b/academic/stellarsolver/stellarsolver.info
@@ -1,10 +1,10 @@
PRGNAM="stellarsolver"
VERSION="2.4"
HOMEPAGE="https://github.com/rlancaste/stellarsolver"
-DOWNLOAD="https://github.com/rlancaste/stellarsolver/archive/2.4/stellarsolver-2.4.tar.gz"
-MD5SUM="a4a92e7c2dc296d7fcbc814134d45886"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/rlancaste/stellarsolver/archive/2.4/stellarsolver-2.4.tar.gz"
+MD5SUM_x86_64="a4a92e7c2dc296d7fcbc814134d45886"
REQUIRES="wcslib"
MAINTAINER="Edward W. Koenig"
EMAIL="kingbeowulf@linuxgalaxy.org"
diff --git a/audio/ardour/ardour.SlackBuild b/audio/ardour/ardour.SlackBuild
index 63f72ba036..8dfad24c8d 100644
--- a/audio/ardour/ardour.SlackBuild
+++ b/audio/ardour/ardour.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for ardour
# Copyright 2008-2016 Heinz Wiesinger, Amsterdam, The Netherlands
-# Copyright 2018-2023 Matteo Bernardini, Pisa, Italy
+# Copyright 2018-2024 Matteo Bernardini, Pisa, Italy
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -29,7 +29,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ardour
-VERSION=${VERSION:-8.1.0}
+VERSION=${VERSION:-8.6.0}
MAJVER=$(echo $VERSION | cut -d. -f1)
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -61,9 +61,6 @@ else
TARGET="$ARCH"
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$TARGET-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -88,8 +85,7 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
-# Thanks to fourtysixandtwo for pointing at this upstream pull request!
-patch -p1 < $CWD/libxml2-2.12-fix.patch
+sed -i "s|env\ python|env\ python3|" waf wscript
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
diff --git a/audio/ardour/ardour.info b/audio/ardour/ardour.info
index c68b2e5110..5a1196d197 100644
--- a/audio/ardour/ardour.info
+++ b/audio/ardour/ardour.info
@@ -1,8 +1,8 @@
PRGNAM="ardour"
-VERSION="8.1.0"
+VERSION="8.6.0"
HOMEPAGE="http://ardour.org"
-DOWNLOAD="https://ponce.cc/slackware/sources/repo/Ardour-8.1.0.tar.bz2"
-MD5SUM="278d59f3343057124989acbbf67d7f15"
+DOWNLOAD="https://ponce.cc/slackware/sources/repo/Ardour-8.6.0.tar.bz2"
+MD5SUM="b3f176e79f14988c7b42479214c15184"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="aubio jack liblo liblrdf rubberband suil cwiid lilv vst3sdk"
diff --git a/audio/ardour/libxml2-2.12-fix.patch b/audio/ardour/libxml2-2.12-fix.patch
deleted file mode 100644
index 00ebd0f4e2..0000000000
--- a/audio/ardour/libxml2-2.12-fix.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From e995daa37529715214c6c4a2587e4134aaaba02f Mon Sep 17 00:00:00 2001
-From: Nils Philippsen <nils@tiptoe.de>
-Date: Fri, 17 Nov 2023 23:26:06 +0100
-Subject: [PATCH] Fix failure to build with libxml2 version 2.12
-
-This declared some xmlError pointers const, which probably was always
-assumed, but not made explicit.
-
-Signed-off-by: Nils Philippsen <nils@tiptoe.de>
----
- gtk2_ardour/ardour_ui.cc | 8 ++++++--
- libs/pbd/xml++.cc | 2 +-
- 2 files changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
-index 54ed79ea83d..77ddbbe99ca 100644
---- a/gtk2_ardour/ardour_ui.cc
-+++ b/gtk2_ardour/ardour_ui.cc
-@@ -255,7 +255,7 @@ libxml_generic_error_func (void* /* parsing_context*/,
-
- static void
- libxml_structured_error_func (void* /* parsing_context*/,
-- xmlErrorPtr err)
-+ const xmlError *err)
- {
- string msg;
-
-@@ -403,7 +403,11 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
- /* stop libxml from spewing to stdout/stderr */
-
- xmlSetGenericErrorFunc (this, libxml_generic_error_func);
-- xmlSetStructuredErrorFunc (this, libxml_structured_error_func);
-+
-+ /* Cast to xmlStructuredErrorFunc to cope with different constness in different
-+ * versions of libxml2. */
-+
-+ xmlSetStructuredErrorFunc (this, (xmlStructuredErrorFunc)libxml_structured_error_func);
-
- /* Set this up early */
-
-diff --git a/libs/pbd/xml++.cc b/libs/pbd/xml++.cc
-index 5c57ad8395d..1f5a85772f6 100644
---- a/libs/pbd/xml++.cc
-+++ b/libs/pbd/xml++.cc
-@@ -170,7 +170,7 @@ XMLTree::write() const
- result = xmlSaveFormatFileEnc(_filename.c_str(), doc, "UTF-8", 1);
- #ifndef NDEBUG
- if (result == -1) {
-- xmlErrorPtr xerr = xmlGetLastError ();
-+ const xmlError *xerr = xmlGetLastError ();
- if (!xerr) {
- std::cerr << "unknown XML error during xmlSaveFormatFileEnc()." << std::endl;
- } else {
diff --git a/audio/ardour/vendor_qm-dsp.patch b/audio/ardour/vendor_qm-dsp.patch
deleted file mode 100644
index f8265fd6e4..0000000000
--- a/audio/ardour/vendor_qm-dsp.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff --git i/libs/qm-dsp/wscript w/libs/qm-dsp/wscript
-index 775098e06b..13f6b9410a 100644
---- i/libs/qm-dsp/wscript
-+++ w/libs/qm-dsp/wscript
-@@ -23,17 +23,10 @@ def options(opt):
- autowaf.set_options(opt)
-
- def configure(conf):
-- if conf.is_defined('USE_EXTERNAL_LIBS'):
-- conf.check_cxx(header_name="base/Pitch.h", mandatory=True)
-- conf.check_cxx(lib="qm-dsp", uselib_store="QMDSP", mandatory=True)
-- else:
-- conf.load('compiler_cxx')
-- autowaf.configure(conf)
-+ conf.load('compiler_cxx')
-+ autowaf.configure(conf)
-
- def build(bld):
-- if bld.is_defined('USE_EXTERNAL_LIBS'):
-- return
--
- # Host Library
- obj = bld(features = 'c cxx cxxstlib')
- obj.source = '''
-diff --git i/wscript w/wscript
-index 1c9bb1ff5d..95d377d8a7 100644
---- i/wscript
-+++ w/wscript
-@@ -1041,8 +1041,6 @@ def configure(conf):
-
- if Options.options.use_external_libs:
- conf.define('USE_EXTERNAL_LIBS', 1)
-- conf.env.append_value(
-- 'CXXFLAGS', '-I' + Options.options.qm_dsp_include)
-
- if Options.options.boost_include != '':
- conf.env.append_value('CXXFLAGS', '-I' + Options.options.boost_include)
diff --git a/audio/audacity/audacity.SlackBuild b/audio/audacity/audacity.SlackBuild
index ddaee0e1a0..8d9d32e1dc 100644
--- a/audio/audacity/audacity.SlackBuild
+++ b/audio/audacity/audacity.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for audacity
# Copyright 2006-2010 Chess Griffin <chess@chessgriffin.com>
-# Copyright 2011-2023 Matteo Bernardini <ponce@slackbuilds.org>
+# Copyright 2011-2024 Matteo Bernardini <ponce@slackbuilds.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -34,8 +34,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=audacity
-VERSION=${VERSION:-3.4.2}
-MANVER=${MANVER:-3.4.2}
+VERSION=${VERSION:-3.5.1}
+MANVER=${MANVER:-3.5.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -94,6 +94,8 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+sed -i 's|^#include "allegro.h"|#include "portsmf/allegro.h"|' libraries/lib-note-track/WrapAllegro.h
+
mkdir -p build
cd build
cmake \
diff --git a/audio/audacity/audacity.info b/audio/audacity/audacity.info
index 407e0201a9..e958eb685d 100644
--- a/audio/audacity/audacity.info
+++ b/audio/audacity/audacity.info
@@ -1,10 +1,10 @@
PRGNAM="audacity"
-VERSION="3.4.2"
+VERSION="3.5.1"
HOMEPAGE="https://www.audacityteam.org"
-DOWNLOAD="https://github.com/audacity/audacity/releases/download/Audacity-3.4.2/audacity-sources-3.4.2.tar.gz \
- https://github.com/audacity/audacity/releases/download/Audacity-3.4.2/audacity-manual-3.4.2.zip"
-MD5SUM="f8f96e980b5a880e5be4cd066662b290 \
- fba06b370931a6f0b1a69f5e8a922ab5"
+DOWNLOAD="https://github.com/audacity/audacity/releases/download/Audacity-3.5.1/audacity-sources-3.5.1.tar.gz \
+ https://github.com/audacity/audacity/releases/download/Audacity-3.5.1/audacity-manual-3.5.1.tar.gz"
+MD5SUM="42d866855b2563dc0ec50b9c38476a0d \
+ 237e90933f6367311dcc81a5dd53d075"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="libsbsms lilv portaudio portmidi portsmf rapidjson soxr suil wxWidgets"
diff --git a/audio/openvino-plugins-ai-audacity/README b/audio/openvino-plugins-ai-audacity/README
new file mode 100644
index 0000000000..d4111dc4cf
--- /dev/null
+++ b/audio/openvino-plugins-ai-audacity/README
@@ -0,0 +1,16 @@
+A set of AI-enabled effects, generators, and analyzers for Audacity.
+
+These AI features run 100% locally on your PC -- no internet connection
+necessary!
+OpenVINO is used to run AI models on supported accelerators found on
+the user's system such as CPU, GPU, and NPU.
+
+Due to the size of the openvino models, currently only two of the
+effects are provided with this build:
+ -Music Separation -- Separate a mono or stereo track into individual
+ stems -- Drums, Bass, Vocals, & Other Instruments.
+ -Noise Suppression -- Removes background noise from an audio sample.
+
+
+whisper.cpp needs to be build against openvino to pick it up as
+dependency.
diff --git a/audio/openvino-plugins-ai-audacity/openvino-plugins-ai-audacity.SlackBuild b/audio/openvino-plugins-ai-audacity/openvino-plugins-ai-audacity.SlackBuild
new file mode 100644
index 0000000000..84ec8619dd
--- /dev/null
+++ b/audio/openvino-plugins-ai-audacity/openvino-plugins-ai-audacity.SlackBuild
@@ -0,0 +1,158 @@
+#!/bin/bash
+
+# Slackware build script for openvino-plugins-ai-audacity
+
+# Copyright 2024 Johannes Schoepfer, Germany
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=openvino-plugins-ai-audacity
+VERSION=${VERSION:-3.5.1}
+VERSION_SRC="${VERSION}-R2"
+VERSION_AUDACITY=3.5.1
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "arm" ]; then
+ SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard"
+ LIBDIRSUFFIX=""
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION_SRC
+tar xvf $CWD/$PRGNAM-$VERSION_SRC.tar.gz
+cd $PRGNAM-$VERSION_SRC
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} + -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
+
+tar vxf $CWD/audacity-sources-$VERSION_AUDACITY.tar.gz
+
+cat << EOF >> audacity-sources-$VERSION_AUDACITY/modules/CMakeLists.txt
+add_subdirectory(mod-openvino)
+EOF
+mv mod-openvino audacity-sources-$VERSION_AUDACITY/modules/
+
+source /usr/share/openvino/setupvars.sh
+
+cd audacity-sources-$VERSION_AUDACITY
+ sed -i 's|^#include "allegro.h"|#include "portsmf/allegro.h"|' libraries/lib-note-track/WrapAllegro.h
+ mkdir build
+ cd build
+ unshare -n cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS $RPATH $LDPATH" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS $RPATH $LDPATH" \
+ -DAUDACITY_BUILD_LEVEL=2 \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -DHAVE_VISIBILITY=1" \
+ -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS -DHAVE_VISIBILITY=1" \
+ -DCMAKE_CXX_STANDARD=11 \
+ -DCMAKE_INSTALL_DOCDIR=/usr/doc/$PRGNAM-$VERSION \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib${LIBDIRSUFFIX} \
+ -DCMAKE_INSTALL_MANDIR=/usr/man \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_VERBOSE_MAKEFILE:BOOL="on" \
+ -Daudacity_use_twolame="off" \
+ -Daudacity_use_ladspa="off" \
+ -Daudacity_use_soundtouch="off" \
+ -Daudacity_use_vamp="off" \
+ -Daudacity_has_vst3="off" \
+ -Daudacity_use_expat="system" \
+ -Daudacity_use_lame="off" \
+ -Daudacity_use_ffmpeg="off" \
+ -Daudacity_conan_enabled="off" \
+ -Daudacity_has_networking="off" \
+ -Daudacity_has_crashreports="off" \
+ -Daudacity_has_updates_check="off" \
+ -Daudacity_has_sentry_reporting="off" \
+ -Daudacity_obey_system_dependencies="on" \
+ -Daudacity_lib_preference="system" \
+ -Daudacity_use_wxwidgets="system" \
+ -DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config \
+ -DwxWidgets_wxrc_EXECUTABLE=/usr/bin/wxrc \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make mod-openvino
+ make install/strip DESTDIR=$PKG/tmpxxx
+ mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/audacity/modules
+ mv $PKG/tmpxxx/usr/lib$LIBDIRSUFFIX/audacity/modules/mod-openvino.so $PKG/usr/lib$LIBDIRSUFFIX/audacity/modules/mod-openvino.so
+ patchelf --add-rpath "$INTEL_OPENVINO_DIR/runtime/lib/intel64/" $PKG/usr/lib$LIBDIRSUFFIX/audacity/modules/mod-openvino.so
+ rm -rf $PKG/tmpxxx
+ cd ..
+cd ..
+
+# Provide openvino models
+mkdir -p $PKG/usr/lib/openvino-models
+unzip $CWD/deepfilternet2.zip -d $PKG/usr/lib/openvino-models
+unzip $CWD/deepfilternet3.zip -d $PKG/usr/lib/openvino-models
+cp $CWD/htdemucs_v4.bin $PKG/usr/lib/openvino-models
+cp $CWD/htdemucs_v4.xml $PKG/usr/lib/openvino-models
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSE.txt README.md doc/feature_doc $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/audio/openvino-plugins-ai-audacity/openvino-plugins-ai-audacity.info b/audio/openvino-plugins-ai-audacity/openvino-plugins-ai-audacity.info
new file mode 100644
index 0000000000..007adbf4e1
--- /dev/null
+++ b/audio/openvino-plugins-ai-audacity/openvino-plugins-ai-audacity.info
@@ -0,0 +1,20 @@
+PRGNAM="openvino-plugins-ai-audacity"
+VERSION="3.5.1"
+HOMEPAGE="https://github.com/intel/openvino-plugins-ai-audacity/"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/intel/openvino-plugins-ai-audacity/archive/v3.5.1-R2/openvino-plugins-ai-audacity-3.5.1-R2.tar.gz \
+ https://github.com/audacity/audacity/releases/download/Audacity-3.5.1/audacity-sources-3.5.1.tar.gz \
+ https://huggingface.co/Intel/demucs-openvino/resolve/main/htdemucs_v4.xml \
+ https://huggingface.co/Intel/demucs-openvino/resolve/main/htdemucs_v4.bin \
+ https://huggingface.co/Intel/deepfilternet-openvino/resolve/main/deepfilternet2.zip \
+ https://huggingface.co/Intel/deepfilternet-openvino/resolve/main/deepfilternet3.zip"
+MD5SUM_x86_64="3a8159867cf264afc280ab836ef848f9 \
+ 42d866855b2563dc0ec50b9c38476a0d \
+ aa7fcbb6980d83683902ac48c53116be \
+ 1d1fbf4673bd956b3c13879555fa0ad2 \
+ c17382730bdef35c325df210a1ff3d4b \
+ dfaca36bb422a37a299e4f328e1b6843"
+REQUIRES="audacity pytorch whisper.cpp"
+MAINTAINER="Johannes Schoepfer"
+EMAIL="slackbuilds@schoepfer.info"
diff --git a/audio/openvino-plugins-ai-audacity/slack-desc b/audio/openvino-plugins-ai-audacity/slack-desc
new file mode 100644
index 0000000000..a5be7b7654
--- /dev/null
+++ b/audio/openvino-plugins-ai-audacity/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+openvino-plugins-ai-audacity: openvino-plugins-ai-audacity (AI Plugins for Audacity)
+openvino-plugins-ai-audacity:
+openvino-plugins-ai-audacity: A set of AI-enabled effects, generators, and analyzers for Audacity
+openvino-plugins-ai-audacity:
+openvino-plugins-ai-audacity:
+openvino-plugins-ai-audacity:
+openvino-plugins-ai-audacity:
+openvino-plugins-ai-audacity:
+openvino-plugins-ai-audacity:
+openvino-plugins-ai-audacity: https://github.com/intel/openvino-plugins-ai-audacity/
+openvino-plugins-ai-audacity:
diff --git a/audio/rack/rack.SlackBuild b/audio/rack/rack.SlackBuild
index d782b51e9c..438b5e58bf 100644
--- a/audio/rack/rack.SlackBuild
+++ b/audio/rack/rack.SlackBuild
@@ -24,7 +24,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=rack
SRCNAM=Rack2Free
-VERSION=${VERSION:-2.4.1}
+VERSION=${VERSION:-2.5.1}
SRCDIR=RackFree-$VERSION
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
diff --git a/audio/rack/rack.info b/audio/rack/rack.info
index 89d3f94faa..6ae407805c 100644
--- a/audio/rack/rack.info
+++ b/audio/rack/rack.info
@@ -1,8 +1,8 @@
PRGNAM="rack"
-VERSION="2.4.1"
+VERSION="2.5.1"
HOMEPAGE="https://vcvrack.com"
-DOWNLOAD="https://vcvrack.com/downloads/RackFree-2.4.1-lin-x64.zip"
-MD5SUM="23a13e50f617bc483ca2eb64d48d3b56"
+DOWNLOAD="https://vcvrack.com/downloads/RackFree-2.5.1-lin-x64.zip"
+MD5SUM="ca3a5ec5f1f9a3f948269e731cb73330"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="jack"
diff --git a/audio/yabridge/yabridge.info b/audio/yabridge/yabridge.info
index b5c35ef898..34ee3a893a 100644
--- a/audio/yabridge/yabridge.info
+++ b/audio/yabridge/yabridge.info
@@ -7,7 +7,7 @@ DOWNLOAD="https://github.com/robbert-vdh/yabridge/archive/5.1.0/yabridge-5.1.0.t
MD5SUM="2383d67c9089a4fda8ae311baaa8fe3b \
f9e2185ea8cdfbdc4d99c4a5f5e4d426 \
a58876a05ac16ada09f750a4b8564443"
-DOWNLOAD_x86_64=""
+DOWNLOAD_x86_64="UNSUPPORTED"
MD5SUM_x86_64=""
REQUIRES="%README% wine-staging asio bitsery function2 ghc_filesystem tomlplusplus rust16"
MAINTAINER="Martin Bångens"
diff --git a/desktop/BlockstreamGreen/BlockstreamGreen.SlackBuild b/desktop/BlockstreamGreen/BlockstreamGreen.SlackBuild
index 9a18f60302..7a00deeaf3 100644
--- a/desktop/BlockstreamGreen/BlockstreamGreen.SlackBuild
+++ b/desktop/BlockstreamGreen/BlockstreamGreen.SlackBuild
@@ -24,7 +24,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=BlockstreamGreen
-VERSION=${VERSION:-1.2.9}
+VERSION=${VERSION:-2.0.4}
SRC=BlockstreamGreen-x86_64.AppImage
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
diff --git a/desktop/BlockstreamGreen/BlockstreamGreen.info b/desktop/BlockstreamGreen/BlockstreamGreen.info
index 03805d808d..c9525e5ad2 100644
--- a/desktop/BlockstreamGreen/BlockstreamGreen.info
+++ b/desktop/BlockstreamGreen/BlockstreamGreen.info
@@ -1,10 +1,10 @@
PRGNAM="BlockstreamGreen"
-VERSION="1.2.9"
+VERSION="2.0.4"
HOMEPAGE="https://blockstream.com/green/"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/Blockstream/green_qt/releases/download/release_1.2.9/BlockstreamGreen-x86_64.AppImage"
-MD5SUM_x86_64="0444b34b2a25b953efafa6ab3cabeacd"
+DOWNLOAD_x86_64="https://github.com/Blockstream/green_qt/releases/download/release_2.0.4/BlockstreamGreen-x86_64.AppImage"
+MD5SUM_x86_64="953c3a04a8dd95ac7762472e94edff55"
REQUIRES=""
MAINTAINER="David Ferrone"
EMAIL="zapwai@gmail.com"
diff --git a/desktop/Matcha-gtk-theme/Matcha-gtk-theme.SlackBuild b/desktop/Matcha-gtk-theme/Matcha-gtk-theme.SlackBuild
index 300bd92de0..2819e88f64 100644
--- a/desktop/Matcha-gtk-theme/Matcha-gtk-theme.SlackBuild
+++ b/desktop/Matcha-gtk-theme/Matcha-gtk-theme.SlackBuild
@@ -25,8 +25,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM="Matcha-gtk-theme"
-SRCVER=${SRCVER:-2023-10-30}
-VERSION=${VERSION:-2023_10_30}
+SRCVER=${SRCVER:-2024-05-01}
+VERSION=${VERSION:-2024_05_01}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/desktop/Matcha-gtk-theme/Matcha-gtk-theme.info b/desktop/Matcha-gtk-theme/Matcha-gtk-theme.info
index 225abb1e26..2d0eb5bbd3 100644
--- a/desktop/Matcha-gtk-theme/Matcha-gtk-theme.info
+++ b/desktop/Matcha-gtk-theme/Matcha-gtk-theme.info
@@ -1,8 +1,8 @@
PRGNAM="Matcha-gtk-theme"
-VERSION="2023_10_30"
+VERSION="2024_05_01"
HOMEPAGE="https://github.com/vinceliuice/Matcha-gtk-theme"
-DOWNLOAD="https://github.com/vinceliuice/Matcha-gtk-theme/archive/2023-10-30/Matcha-gtk-theme-2023-10-30.tar.gz"
-MD5SUM="3c08f4271dec2846a0ffedc0d6ed5aec"
+DOWNLOAD="https://github.com/vinceliuice/Matcha-gtk-theme/archive/2024-05-01/Matcha-gtk-theme-2024-05-01.tar.gz"
+MD5SUM="208cef85926ab3eb27d3ab6dc4ff7d23"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/desktop/arc-theme/arc-theme.SlackBuild b/desktop/arc-theme/arc-theme.SlackBuild
index 8b5bf58ebb..1e5fd96b8e 100644
--- a/desktop/arc-theme/arc-theme.SlackBuild
+++ b/desktop/arc-theme/arc-theme.SlackBuild
@@ -3,6 +3,7 @@
# Slackware build script for "arc-theme".
# Copyright 2016 Marcel Saegebarth <marc@mos6581.de>
+# Copyright 2024 Philip van der Hoeven <philip@vd-hoeven.nl>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -27,7 +28,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=arc-theme
-VERSION=${VERSION:-20201121_81130a2}
+VERSION=${VERSION:-20221218}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -66,9 +67,6 @@ else
LIBDIRSUFFIX=""
fi
-gnome_shell="--disable-gnome-shell" ; [[ $(which gnome-shell) ]] && gnome_shell=""
-cinnamon="--disable-cinnamon" ; [[ $(which cinnamon-session) ]] && cinnamon=""
-
set -e
rm -rf $PKG
@@ -84,23 +82,33 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-sed -i "s|export-png=|export-type=png --export-filename=|" common/*/*.am || exit 1
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./autogen.sh \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- $gnome_shell \
- $cinnamon \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
+THEMES="gtk2,gtk3,gtk4,metacity,plank,unity,xfwm"
+
+# Check for gnome and cinnamon
+type -P gnome-shell >/dev/null && THEMES+=",gnome-shell"
+type -P cinnamon-session >/dev/null && THEMES+=",cinnamon"
+
+# Build transparent theme
+mkdir build
+cd build
+ meson setup .. \
+ --prefix=/usr \
+ -Dthemes=$THEMES
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+# Build solid theme
+rm -rf build
+mkdir build
+cd build
+ meson setup .. \
+ --prefix=/usr \
+ -Dtransparency=false \
+ -Dthemes=$THEMES
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a AUTHORS COPYING HACKING.md README.md $PKG/usr/doc/$PRGNAM-$VERSION
diff --git a/desktop/arc-theme/arc-theme.info b/desktop/arc-theme/arc-theme.info
index 37e8664521..e0226cf701 100644
--- a/desktop/arc-theme/arc-theme.info
+++ b/desktop/arc-theme/arc-theme.info
@@ -1,10 +1,10 @@
PRGNAM="arc-theme"
-VERSION="20201121_81130a2"
+VERSION="20221218"
HOMEPAGE="https://github.com/jnsh/arc-theme"
-DOWNLOAD="http://ponce.cc/slackware/sources/repo/arc-theme-20201121_81130a2.tar.xz"
-MD5SUM="bffd762770faf368ad2849534c5e3ad4"
+DOWNLOAD="https://github.com/jnsh/arc-theme/releases/download/20221218/arc-theme-20221218.tar.xz"
+MD5SUM="ac268a1603e85e9a1c8fd07f04f92cc1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="inkscape murrine optipng"
-MAINTAINER="Marcel Saegebarth"
-EMAIL="marc@mos6581.de"
+REQUIRES="murrine"
+MAINTAINER="Philip van der Hoeven"
+EMAIL="philip@vd-hoeven.nl"
diff --git a/desktop/buku/buku.SlackBuild b/desktop/buku/buku.SlackBuild
index 582fae6e37..d793e0db50 100644
--- a/desktop/buku/buku.SlackBuild
+++ b/desktop/buku/buku.SlackBuild
@@ -4,7 +4,7 @@
#
# Copyright 2018 Edinaldo P. Silva, Rio de Janeiro, Brazil.
# Copyright 2019-2021 Andrew Clemons, Wellington New Zealand
-# Copyright 2022-2023 Andrew Clemons, Tokyo Japan
+# Copyright 2022-2024 Andrew Clemons, Tokyo Japan
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -27,7 +27,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=buku
-VERSION=${VERSION:-4.8}
+VERSION=${VERSION:-4.9}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -49,20 +49,6 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
set -e
rm -rf $PKG
diff --git a/desktop/buku/buku.info b/desktop/buku/buku.info
index 62d587b8a9..317170e488 100644
--- a/desktop/buku/buku.info
+++ b/desktop/buku/buku.info
@@ -1,8 +1,8 @@
PRGNAM="buku"
-VERSION="4.8"
+VERSION="4.9"
HOMEPAGE="https://github.com/jarun/buku"
-DOWNLOAD="https://github.com/jarun/buku/archive/v4.8/buku-4.8.tar.gz"
-MD5SUM="63cf5e007af3eaa8f7b07b8c70e12112"
+DOWNLOAD="https://github.com/jarun/buku/archive/v4.9/buku-4.9.tar.gz"
+MD5SUM="0c5de4443843f3cc6215566a82bb2c88"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="BeautifulSoup4 cryptography html5lib"
diff --git a/desktop/nwg-displays/nwg-displays.SlackBuild b/desktop/nwg-displays/nwg-displays.SlackBuild
index 66372a4210..284c2e9e88 100644
--- a/desktop/nwg-displays/nwg-displays.SlackBuild
+++ b/desktop/nwg-displays/nwg-displays.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for nwg-displays
-# Copyright 2023 Jay Lanagan (j@lngn.net), Detroit, MI, USA.
+# Copyright 2023-2024 Jay Lanagan (j@lngn.net), Detroit, MI, USA.
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=nwg-displays
-VERSION=${VERSION:-0.3.16}
+VERSION=${VERSION:-0.3.17}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/desktop/nwg-displays/nwg-displays.info b/desktop/nwg-displays/nwg-displays.info
index 67f4173ceb..b6bf74f177 100644
--- a/desktop/nwg-displays/nwg-displays.info
+++ b/desktop/nwg-displays/nwg-displays.info
@@ -1,8 +1,8 @@
PRGNAM="nwg-displays"
-VERSION="0.3.16"
+VERSION="0.3.17"
HOMEPAGE="https://github.com/nwg-piotr/nwg-displays/"
-DOWNLOAD="https://github.com/nwg-piotr/nwg-displays/archive/v0.3.16/nwg-displays-0.3.16.tar.gz"
-MD5SUM="9bf04d6d1f6cc0b94e5548bc59355926"
+DOWNLOAD="https://github.com/nwg-piotr/nwg-displays/archive/v0.3.17/nwg-displays-0.3.17.tar.gz"
+MD5SUM="42ba5a4988acfbf94eb0ba6e6fee34e3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="gtk-layer-shell i3ipc wlr-randr"
diff --git a/desktop/nwg-panel/nwg-panel.SlackBuild b/desktop/nwg-panel/nwg-panel.SlackBuild
index 78cff94a2f..df099d5bc7 100644
--- a/desktop/nwg-panel/nwg-panel.SlackBuild
+++ b/desktop/nwg-panel/nwg-panel.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=nwg-panel
-VERSION=${VERSION:-0.9.27}
+VERSION=${VERSION:-0.9.28}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/desktop/nwg-panel/nwg-panel.info b/desktop/nwg-panel/nwg-panel.info
index 4b6eebdc6d..bd115c9f4b 100644
--- a/desktop/nwg-panel/nwg-panel.info
+++ b/desktop/nwg-panel/nwg-panel.info
@@ -1,8 +1,8 @@
PRGNAM="nwg-panel"
-VERSION="0.9.27"
+VERSION="0.9.28"
HOMEPAGE="https://github.com/nwg-piotr/nwg-panel/"
-DOWNLOAD="https://github.com/nwg-piotr/nwg-panel/archive/v0.9.27/nwg-panel-0.9.27.tar.gz"
-MD5SUM="0a1b3233e889aef64296336f18559681"
+DOWNLOAD="https://github.com/nwg-piotr/nwg-panel/archive/v0.9.28/nwg-panel-0.9.28.tar.gz"
+MD5SUM="2e0b28a0c591dcca14be96ede00c4ff4"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="brightnessctl nwg-icon-picker playerctl python3-psutil i3ipc python3-dasbus python3-netifaces SwayNotificationCenter wlr-randr ddcutil"
diff --git a/desktop/papirus-icon-theme/doinst.sh.gz b/desktop/papirus-icon-theme/doinst.sh.gz
index da9bfee95f..4095c32b36 100644
--- a/desktop/papirus-icon-theme/doinst.sh.gz
+++ b/desktop/papirus-icon-theme/doinst.sh.gz
Binary files differ
diff --git a/desktop/papirus-icon-theme/papirus-icon-theme.SlackBuild b/desktop/papirus-icon-theme/papirus-icon-theme.SlackBuild
index d55b5d4558..db9dd02e82 100644
--- a/desktop/papirus-icon-theme/papirus-icon-theme.SlackBuild
+++ b/desktop/papirus-icon-theme/papirus-icon-theme.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for papirus-icon-theme
# Copyright 2018 Azure Zanculmarktum <zanculmarktum@gmail.com>
-# Updates/Maintenance 2023 Jay Lanagan (j@lngn.net), Detroit, MI.
+# Updates/Maintenance 2023-2024 Jay Lanagan (j@lngn.net), Detroit, MI.
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=papirus-icon-theme
-VERSION=${VERSION:-20240201}
+VERSION=${VERSION:-20240501}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/desktop/papirus-icon-theme/papirus-icon-theme.info b/desktop/papirus-icon-theme/papirus-icon-theme.info
index 36d932a399..b32f471113 100644
--- a/desktop/papirus-icon-theme/papirus-icon-theme.info
+++ b/desktop/papirus-icon-theme/papirus-icon-theme.info
@@ -1,8 +1,8 @@
PRGNAM="papirus-icon-theme"
-VERSION="20240201"
+VERSION="20240501"
HOMEPAGE="https://github.com/PapirusDevelopmentTeam/papirus-icon-theme"
-DOWNLOAD="https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/archive/20240201/papirus-icon-theme-20240201.tar.gz"
-MD5SUM="9e0578bb5d87b8b56fad12e4150cb4a7"
+DOWNLOAD="https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/archive/20240501/papirus-icon-theme-20240501.tar.gz"
+MD5SUM="9ff1f17bef26332ae4a22552a566b437"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/desktop/waybar/waybar.info b/desktop/waybar/waybar.info
index 67f541fe93..6c16a84b42 100644
--- a/desktop/waybar/waybar.info
+++ b/desktop/waybar/waybar.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/Alexays/Waybar/archive/0.9.20/Waybar-0.9.20.tar.gz"
MD5SUM="3c736fb5a28b14ed327e72e93f193cdf"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="jsoncpp scdoc fmt spdlog date gtk-layer-shell"
+REQUIRES="jsoncpp scdoc spdlog date gtk-layer-shell"
MAINTAINER="Damian Perticone"
EMAIL="mjolnirdam@gmail.com"
diff --git a/development/Bear/Bear.SlackBuild b/development/Bear/Bear.SlackBuild
index b05f008f7e..5ee668e122 100644
--- a/development/Bear/Bear.SlackBuild
+++ b/development/Bear/Bear.SlackBuild
@@ -25,7 +25,7 @@
cd "$(dirname "$0")" ; CWD=$(pwd)
PRGNAM=Bear
-VERSION=${VERSION:-3.1.1}
+VERSION=${VERSION:-3.1.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -70,6 +70,7 @@ cd "$PRGNAM-$VERSION"
chown -R root:root .
chmod -R u+w,go+r-w,a-s .
+patch -p1 < $CWD/fcc90e43eebe9250abeeb81aab429053864da325.patch
INSTPREFIX='/usr'
cmake \
diff --git a/development/Bear/Bear.info b/development/Bear/Bear.info
index 806bbb151f..59893d6079 100644
--- a/development/Bear/Bear.info
+++ b/development/Bear/Bear.info
@@ -1,10 +1,10 @@
PRGNAM="Bear"
-VERSION="3.1.1"
+VERSION="3.1.3"
HOMEPAGE="https://github.com/rizsotto/Bear"
-DOWNLOAD="https://github.com/rizsotto/Bear/archive/3.1.1/Bear-3.1.1.tar.gz"
-MD5SUM="1eccc34705eac635aa7408c6c01aef86"
+DOWNLOAD="https://github.com/rizsotto/Bear/archive/3.1.3/Bear-3.1.3.tar.gz"
+MD5SUM="95dd52be536907a672df211de22fa15c"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="grpc fmt spdlog nlohmann_json"
+REQUIRES="grpc spdlog nlohmann_json"
MAINTAINER="Ivan Kovmir"
EMAIL="i@kovmir.eu"
diff --git a/development/Bear/fcc90e43eebe9250abeeb81aab429053864da325.patch b/development/Bear/fcc90e43eebe9250abeeb81aab429053864da325.patch
new file mode 100644
index 0000000000..3d760041bd
--- /dev/null
+++ b/development/Bear/fcc90e43eebe9250abeeb81aab429053864da325.patch
@@ -0,0 +1,34 @@
+From fcc90e43eebe9250abeeb81aab429053864da325 Mon Sep 17 00:00:00 2001
+From: Ruben Carlo Benante <rcb@beco.cc>
+Date: Thu, 28 Mar 2024 23:29:41 -0300
+Subject: [PATCH] always_print_primitive_fields only if GOOGLE_PROTOBUF_VERSION
+ < 5026000 ref #566
+
+---
+ source/intercept/source/collect/db/EventsDatabaseWriter.cc | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/source/intercept/source/collect/db/EventsDatabaseWriter.cc b/source/intercept/source/collect/db/EventsDatabaseWriter.cc
+index 0403a1ae..bd30cb29 100644
+--- a/source/intercept/source/collect/db/EventsDatabaseWriter.cc
++++ b/source/intercept/source/collect/db/EventsDatabaseWriter.cc
+@@ -21,6 +21,8 @@
+ #include "libsys/Errors.h"
+
+ #include <google/protobuf/util/json_util.h>
++#include <google/protobuf/stubs/common.h>
++
+ #include <fmt/format.h>
+
+ #include <sys/types.h>
+@@ -36,7 +38,9 @@ namespace {
+ JsonPrintOptions create_print_options() {
+ JsonPrintOptions print_options;
+ print_options.add_whitespace = false;
+- print_options.always_print_primitive_fields = true;
++#if GOOGLE_PROTOBUF_VERSION < 5026000
++ print_options.always_print_primitive_fields = true;
++#endif
+ print_options.preserve_proto_field_names = true;
+ print_options.always_print_enums_as_ints = false;
+ return print_options;
diff --git a/development/avrdude/avrdude.SlackBuild b/development/avrdude/avrdude.SlackBuild
index 374837ed45..58d9a69ccc 100644
--- a/development/avrdude/avrdude.SlackBuild
+++ b/development/avrdude/avrdude.SlackBuild
@@ -30,7 +30,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=avrdude
-VERSION=${VERSION:-7.2}
+VERSION=${VERSION:-7.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/development/avrdude/avrdude.info b/development/avrdude/avrdude.info
index 96b1392200..dcf472fae4 100644
--- a/development/avrdude/avrdude.info
+++ b/development/avrdude/avrdude.info
@@ -1,8 +1,8 @@
PRGNAM="avrdude"
-VERSION="7.2"
+VERSION="7.3"
HOMEPAGE="http://www.nongnu.org/avrdude/"
-DOWNLOAD="https://github.com/avrdudes/avrdude/archive/v7.2/avrdude-7.2.tar.gz"
-MD5SUM="9b423eab6d04e7dff1897cb183a78b87"
+DOWNLOAD="https://github.com/avrdudes/avrdude/archive/v7.3/avrdude-7.3.tar.gz"
+MD5SUM="5ff78f7dad276a0fb2808e300b3eb1bf"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/development/aws-cdk/aws-cdk.SlackBuild b/development/aws-cdk/aws-cdk.SlackBuild
index 5c43db3874..48ca2f4b1b 100644
--- a/development/aws-cdk/aws-cdk.SlackBuild
+++ b/development/aws-cdk/aws-cdk.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=aws-cdk
-VERSION=${VERSION:-2.139.0}
+VERSION=${VERSION:-2.140.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/development/aws-cdk/aws-cdk.info b/development/aws-cdk/aws-cdk.info
index 8705eb3f57..4745a057fc 100644
--- a/development/aws-cdk/aws-cdk.info
+++ b/development/aws-cdk/aws-cdk.info
@@ -1,8 +1,8 @@
PRGNAM="aws-cdk"
-VERSION="2.139.0"
+VERSION="2.140.0"
HOMEPAGE="https://github.com/aws/aws-cdk"
-DOWNLOAD="https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.139.0.tgz"
-MD5SUM="c76a775183607df622753788210de44a"
+DOWNLOAD="https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.140.0.tgz"
+MD5SUM="2eb1539f4afd05cf02da27efdaa270d4"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="nodejs awscli"
diff --git a/development/bluefish/bluefish.SlackBuild b/development/bluefish/bluefish.SlackBuild
index c5e73fabf3..35ae07435c 100644
--- a/development/bluefish/bluefish.SlackBuild
+++ b/development/bluefish/bluefish.SlackBuild
@@ -28,7 +28,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=bluefish
-VERSION=${VERSION:-2.2.14}
+VERSION=${VERSION:-2.2.15}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/development/bluefish/bluefish.info b/development/bluefish/bluefish.info
index aa041ccaa5..f45bde7a11 100644
--- a/development/bluefish/bluefish.info
+++ b/development/bluefish/bluefish.info
@@ -1,8 +1,8 @@
PRGNAM="bluefish"
-VERSION="2.2.14"
+VERSION="2.2.15"
HOMEPAGE="http://bluefish.openoffice.nl/index.html"
-DOWNLOAD="https://www.bennewitz.com/bluefish/stable/source/bluefish-2.2.14.tar.bz2"
-MD5SUM="c99b6b1ba3e3e70b032936182bb0b387"
+DOWNLOAD="https://www.bennewitz.com/bluefish/stable/source/bluefish-2.2.15.tar.bz2"
+MD5SUM="48018bcfef0faeceb66b0f2d814ded03"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/development/github-cli/github-cli.SlackBuild b/development/github-cli/github-cli.SlackBuild
index 2049193371..3e3b8324ce 100644
--- a/development/github-cli/github-cli.SlackBuild
+++ b/development/github-cli/github-cli.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=github-cli
DEBNAM=gh
-VERSION=${VERSION:-2.48.0}
+VERSION=${VERSION:-2.49.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/development/github-cli/github-cli.info b/development/github-cli/github-cli.info
index e2d9bb5726..b8019c769a 100644
--- a/development/github-cli/github-cli.info
+++ b/development/github-cli/github-cli.info
@@ -1,10 +1,10 @@
PRGNAM="github-cli"
-VERSION="2.48.0"
+VERSION="2.49.0"
HOMEPAGE="https://cli.github.com/"
-DOWNLOAD="https://github.com/cli/cli/releases/download/v2.48.0/gh_2.48.0_linux_386.deb"
-MD5SUM="5183ca269bb9b242055871c7483a5426"
-DOWNLOAD_x86_64="https://github.com/cli/cli/releases/download/v2.48.0/gh_2.48.0_linux_amd64.deb"
-MD5SUM_x86_64="bd56f8bd78c1762e8f6d0a31a02a617f"
+DOWNLOAD="https://github.com/cli/cli/releases/download/v2.49.0/gh_2.49.0_linux_386.deb"
+MD5SUM="8400fa3fcd6f58b838f55d655e50d467"
+DOWNLOAD_x86_64="https://github.com/cli/cli/releases/download/v2.49.0/gh_2.49.0_linux_amd64.deb"
+MD5SUM_x86_64="a3fb594c630dc06f176a6411f85c81cc"
REQUIRES=""
MAINTAINER="Ebben Aries"
EMAIL="slackbuilds@dscp.org"
diff --git a/development/gitlab-cli/gitlab-cli.SlackBuild b/development/gitlab-cli/gitlab-cli.SlackBuild
index 53406543b5..1d81f6fe3a 100644
--- a/development/gitlab-cli/gitlab-cli.SlackBuild
+++ b/development/gitlab-cli/gitlab-cli.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=gitlab-cli
DEBNAM=glab
-VERSION=${VERSION:-1.37.0}
+VERSION=${VERSION:-1.40.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/development/gitlab-cli/gitlab-cli.info b/development/gitlab-cli/gitlab-cli.info
index 26f732fcff..eb9f088c12 100644
--- a/development/gitlab-cli/gitlab-cli.info
+++ b/development/gitlab-cli/gitlab-cli.info
@@ -1,14 +1,14 @@
PRGNAM="gitlab-cli"
-VERSION="1.37.0"
+VERSION="1.40.0"
HOMEPAGE="https://gitlab.com/gitlab-org/cli"
-DOWNLOAD="https://gitlab.com/gitlab-org/cli/-/archive/v1.37.0/cli-v1.37.0.tar.gz \
- https://gitlab.com/gitlab-org/cli/-/releases/v1.37.0/downloads/glab_1.37.0_Linux_i386.deb"
-MD5SUM="83e99040535ee1b6b3222ca4751913ba \
- ecee73526ca604c4702064fda4955b6a"
-DOWNLOAD_x86_64="https://gitlab.com/gitlab-org/cli/-/archive/v1.37.0/cli-v1.37.0.tar.gz \
- https://gitlab.com/gitlab-org/cli/-/releases/v1.37.0/downloads/glab_1.37.0_Linux_x86_64.deb"
-MD5SUM_x86_64="83e99040535ee1b6b3222ca4751913ba \
- 176a122cf49a586f817c54b52822319a"
+DOWNLOAD="https://gitlab.com/gitlab-org/cli/-/archive/v1.40.0/cli-v1.40.0.tar.gz \
+ https://gitlab.com/gitlab-org/cli/-/releases/v1.40.0/downloads/glab_1.40.0_Linux_i386.deb"
+MD5SUM="211aea19fc88dbf6f21763e593ba2079 \
+ 94ff62f6214017c6204178810c9ef7a4"
+DOWNLOAD_x86_64="https://gitlab.com/gitlab-org/cli/-/archive/v1.40.0/cli-v1.40.0.tar.gz \
+ https://gitlab.com/gitlab-org/cli/-/releases/v1.40.0/downloads/glab_1.40.0_Linux_x86_64.deb"
+MD5SUM_x86_64="211aea19fc88dbf6f21763e593ba2079 \
+ b5774bc5db8eaf3099e83f3a4a3c74bf"
REQUIRES=""
MAINTAINER="Diniz Bortolotto"
EMAIL="diniz.bortolotto@gmail.com"
diff --git a/development/heroku-cli/heroku-cli.SlackBuild b/development/heroku-cli/heroku-cli.SlackBuild
index e1d8c3af76..a256e49e10 100644
--- a/development/heroku-cli/heroku-cli.SlackBuild
+++ b/development/heroku-cli/heroku-cli.SlackBuild
@@ -25,11 +25,11 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=heroku-cli
-VERSION=${VERSION:-8.11.0}
+VERSION=${VERSION:-8.11.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-TARBALL=heroku-v8.11.0-a525d5e-linux-x64.tar.xz
+TARBALL=heroku-v8.11.5-df5cd30-linux-x64.tar.xz
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
diff --git a/development/heroku-cli/heroku-cli.info b/development/heroku-cli/heroku-cli.info
index 6ae07ce0b1..62703521da 100644
--- a/development/heroku-cli/heroku-cli.info
+++ b/development/heroku-cli/heroku-cli.info
@@ -1,10 +1,10 @@
PRGNAM="heroku-cli"
-VERSION="8.11.0"
+VERSION="8.11.5"
HOMEPAGE="https://www.heroku.com/home"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://cli-assets.heroku.com/versions/8.11.0/a525d5e/heroku-v8.11.0-a525d5e-linux-x64.tar.xz"
-MD5SUM_x86_64="e6ee7fb62ac489aef98155b8ed4057a1"
+DOWNLOAD_x86_64="https://cli-assets.heroku.com/versions/8.11.5/df5cd30/heroku-v8.11.5-df5cd30-linux-x64.tar.xz"
+MD5SUM_x86_64="fdb3118070d581bfc9c4670a205644a2"
REQUIRES=""
MAINTAINER="Diniz Bortolotto"
EMAIL="diniz.bortolotto@gmail.com"
diff --git a/development/hhvm/README b/development/hhvm/README
deleted file mode 100644
index 2467669770..0000000000
--- a/development/hhvm/README
+++ /dev/null
@@ -1,59 +0,0 @@
-HHVM is an open-source virtual machine designed for executing programs
-written in Hack and PHP. HHVM uses a just-in-time (JIT) compilation
-approach to achieve superior performance while maintaining the
-development flexibility that PHP provides.
-
-Hack is a programming language for HHVM. Hack reconciles the fast
-development cycle of a dynamically typed language with the discipline
-provided by static typing, while adding many features commonly found
-in other modern programming languages.
-
-Please note that HHVM is unsupported on 32-bit OSes and there are no
-current plans to ever add support.
-
-In order to start HHVM at boot and stop it properly at shutdown,
-make sure rc.hhvm is executable and add the following lines to
-your rc.d scripts:
-
- /etc/rc.d/rc.local
- ==================
- # Startup HHVM
- if [ -x /etc/rc.d/rc.hhvm ]; then
- /etc/rc.d/rc.hhvm start
- fi
-
- /etc/rc.d/rc.local_shutdown
- ===========================
- # Stop HHVM
- if [ -x /etc/rc.d/rc.hhvm ]; then
- /etc/rc.d/rc.hhvm stop
- fi
-
-HHVM ships an integrated web server, proxygen, which listens on port
-9000 (though you can configure proxygen to make use of a different
-port): https://docs.hhvm.com/hhvm/basic-usage/proxygen.
-
-Alternatively to reverse proxy, FastCGI is available, which uses Unix
-sockets by default. If your web server isn't Apache make sure it has
-write access to the socket file. You can create a new group and add
-your web server user to this group or just use the main group of your
-web server and start HHVM as following:
-
- hhvm_GROUP=apache /etc/rc.d/rc.hhvm start
-
-See https://docs.hhvm.com/hhvm/advanced-usage/fastCGI.
-
-To start a project you have to configure the type checker as well.
-See the official documentation:
-https://docs.hhvm.com/hack/getting-started/getting-started
-
-Basically you create an empty .hhconfig file in the root dir of your
-project:
-
- touch .hhconfig
-
-and run:
-
- hh_client
-
-Happy Hacking!
diff --git a/development/hhvm/doinst.sh b/development/hhvm/doinst.sh
deleted file mode 100644
index 6979f0cdcf..0000000000
--- a/development/hhvm/doinst.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-config() {
- NEW="$1"
- OLD="`dirname $NEW`/`basename $NEW .new`"
- # If there's no config file by that name, mv it over:
- if [ ! -r $OLD ]; then
- mv $NEW $OLD
- elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
- rm $NEW
- fi
- # Otherwise, we leave the .new copy for the admin to consider...
-}
-# Keep same perms on rc.hhvm.new:
-if [ -e etc/rc.d/rc.hhvm ]; then
- cp -a etc/rc.d/rc.hhvm etc/rc.d/rc.hhvm.new.incoming
- cat etc/rc.d/rc.hhvm.new > etc/rc.d/rc.hhvm.new.incoming
- mv etc/rc.d/rc.hhvm.new.incoming etc/rc.d/rc.hhvm.new
-fi
-config etc/rc.d/rc.hhvm.new
-config etc/hhvm/server.ini.new
-config etc/hhvm/php.ini.new
diff --git a/development/hhvm/etc/php.ini b/development/hhvm/etc/php.ini
deleted file mode 100644
index 5004b9fb11..0000000000
--- a/development/hhvm/etc/php.ini
+++ /dev/null
@@ -1 +0,0 @@
-extension_dir = /usr/lib64/hhvm/extensions
diff --git a/development/hhvm/etc/rc.hhvm b/development/hhvm/etc/rc.hhvm
deleted file mode 100644
index 049fb521d4..0000000000
--- a/development/hhvm/etc/rc.hhvm
+++ /dev/null
@@ -1,163 +0,0 @@
-#!/bin/bash
-#
-### BEGIN INIT INFO
-# Provides: hhvm
-# Required-Start: $remote_fs $network
-# Required-Stop: $remote_fs $network
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Description: Starts the HHVM daemon
-### END INIT INFO
-
-PIDFILE=/var/run/hhvm/pid
-hhvm_SOCKET=/var/run/hhvm/sock
-hhvm_GROUP=${hhvm_GROUP:-apache}
-CONFIG_FILE="/etc/hhvm/server.ini"
-SYSTEM_CONFIG_FILE="/etc/hhvm/php.ini"
-
-DAEMON_ARGS="--config ${SYSTEM_CONFIG_FILE} \
- --config ${CONFIG_FILE} \
- --user ${hhvm_GROUP} \
- -vPidFile=${PIDFILE}"
-
-do_stop () {
- try=0
-
- if [ ! -r $2 ]; then
- echo "warning, no pid file found - HHVM is not running?"
- exit 1
- fi
-
- PID=$(cat $2)
- kill $1 $PID
-
- # Waiting for HHVM to shutdown
- while test $try -lt 35
- do
- if ps -p $PID | grep -q $PID
- then
- echo -n .
- try=$(expr $try + 1)
- sleep 1
- else
- try=''
- break
- fi
- done
-
- if [ -n "$try" ]
- then
- echo " failed. Use force-quit"
- exit 1
- else
- rm -f $2
- echo " done"
- fi
-}
-
-wait_for_pid () {
- try=0
-
- while test $try -lt 35
- do
- if [ -f "$1" ] ; then
- try=''
- break
- fi
-
- echo -n .
- try=$(expr $try + 1)
- sleep 1
- done
-
-}
-
-case "$1" in
- start)
- echo -n "Starting HHVM "
-
- if [ -r $PIDFILE ]; then
- echo "warning, pid file found - HHVM is already running?"
- exit 1
- fi
-
- mkdir -p $(dirname ${PIDFILE}) $(dirname ${hhvm_SOCKET})
- chown apache:apache $(dirname ${PIDFILE})
-
- echo
- /usr/bin/hhvm --mode daemon $DAEMON_ARGS
- if [ "$?" != 0 ]
- then
- echo "Failed"
- exit 1
- fi
-
- wait_for_pid $PIDFILE
-
- if [ -n "$try" ] ; then
- echo " failed"
- exit 1
- fi
-
- # Set the socket permissions if HHVM uses UDS
- if [ -S "$hhvm_SOCKET" ]
- then
- chgrp $hhvm_GROUP $hhvm_SOCKET
- fi
-
- echo " done"
- ;;
-
- stop)
- echo -n "Stopping HHVM "
-
- do_stop -QUIT $PIDFILE
- ;;
-
- force-quit)
- echo -n "Terminating HHVM "
-
- do_stop -TERM $PIDFILE
- ;;
-
- status)
- if [ ! -r $PIDFILE ]
- then
- echo "HHVM is stopped"
- exit 0
- fi
-
- PID=$(cat $PIDFILE)
- if ps -p $PID | grep -q $PID
- then
- echo "HHVM (pid $PID) is running..."
- else
- echo "HHVM dead but pid file exists"
- fi
- ;;
-
- restart)
- sh $0 stop
- sh $0 start
- ;;
-
- reload)
- echo -n "Reload service HHVM "
-
- if [ ! -r $PIDFILE ]
- then
- echo "warning, no pid file found - HHVM is not running?"
- exit 1
- fi
-
- kill -USR2 $(cat $PIDFILE)
-
- echo " done"
- ;;
-
- *)
- echo "Usage: $0 {start|stop|status|restart|reload|force-quit}" >&2
- exit 1
- ;;
-
-esac
diff --git a/development/hhvm/etc/server.ini b/development/hhvm/etc/server.ini
deleted file mode 100644
index ce240979d4..0000000000
--- a/development/hhvm/etc/server.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-pid = /var/run/hhvm/pid
-
-;hhvm.server.file_socket = /var/run/hhvm/sock
-hhvm.server.port = 9000
-hhvm.server.type = proxygen
-hhvm.server.default_document = index.hh
-hhvm.log.use_log_file = true
-hhvm.log.file = /var/log/hhvm/error.log
-hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
diff --git a/development/hhvm/hhvm.SlackBuild b/development/hhvm/hhvm.SlackBuild
deleted file mode 100644
index fadc3c030f..0000000000
--- a/development/hhvm/hhvm.SlackBuild
+++ /dev/null
@@ -1,209 +0,0 @@
-#!/bin/bash
-
-# Slackware build script for HHVM
-
-# Copyright 2015-2023 Eugene Wissner, Dachau, Germany
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-cd $(dirname $0) ; CWD=$(pwd)
-
-PRGNAM=hhvm
-VERSION=${VERSION:-4.168.2}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-PKGTYPE=${PKGTYPE:-tgz}
-
-OPAM_STAMP="1d2e919"
-CARGO_BUILD="3"
-FB_VERSION="2022.07.04.00"
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
-if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
- echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
- exit 0
-fi
-
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- echo "$ARCH is not supported."
- exit 1
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar Jxvf $CWD/$PRGNAM-$VERSION.tar.xz
-cd $PRGNAM-$VERSION
-
-mkdir -p hphp/hack/facebook hphp/hack/_build/opam
-tar Jxvf $CWD/hack-switch-$OPAM_STAMP.tar.xz -C hphp/hack/_build/opam
-tar Jxvf $CWD/cargo-home-$CARGO_BUILD.tar.xz -C hphp/hack/_build
-
-install -m 0755 -D $CWD/opam-2.1.0-x86_64-linux \
- third-party/opam/opamDownload-prefix/src/opam-2.1.0-x86_64-linux
-
-install -m 0644 -D $CWD/fmt-8.0.0.zip third-party/fmt/bundled_fmt-prefix/src/fmt-8.0.0.zip
-unzip $CWD/fmt-8.0.0.zip -d third-party/fmt/bundled_fmt-prefix/src
-mv third-party/fmt/bundled_fmt-prefix/src/fmt-8.0.0 third-party/fmt/bundled_fmt-prefix/src/bundled_fmt
-
-mkdir -p third-party/re2/bundled_re2-prefix/src/bundled_re2
-install -m 0644 -D $CWD/re2-2021-11-01.tar.gz third-party/re2/bundled_re2-prefix/src/re2-2021-11-01.tar.gz
-tar zxvf $CWD/re2-2021-11-01.tar.gz \
- -C third-party/re2/bundled_re2-prefix/src/bundled_re2 \
- --strip-components=1
-
-mkdir -p third-party/brotli/bundled_brotli-prefix/src/bundled_brotli
-install -m 0644 -D $CWD/brotli-v1.0.9.tar.gz third-party/brotli/bundled_brotli-prefix/src/brotli-v1.0.9.tar.gz
-tar zxvf $CWD/brotli-v1.0.9.tar.gz \
- -C third-party/brotli/bundled_brotli-prefix/src/bundled_brotli \
- --strip-components=1
-
-mkdir -p third-party/rustc/bundled_rust-prefix/src/bundled_rust
-install -m 0644 -D $CWD/rust-nightly-x86_64-unknown-linux-gnu.tar.gz \
- third-party/rustc/bundled_rust-prefix/src/rust-nightly-x86_64-unknown-linux-gnu.tar.gz
-tar zxvf $CWD/rust-nightly-x86_64-unknown-linux-gnu.tar.gz \
- -C third-party/rustc/bundled_rust-prefix/src/bundled_rust \
- --strip-components=1
-
-mkdir -p third-party/proxygen/bundled_proxygen-prefix/src/bundled_proxygen
-install -m 0644 -D $CWD/proxygen-v${FB_VERSION}.tar.gz \
- third-party/proxygen/bundled_proxygen-prefix/src/proxygen-v${FB_VERSION}.tar.gz
-tar zxvf $CWD/proxygen-v${FB_VERSION}.tar.gz \
- -C third-party/proxygen/bundled_proxygen-prefix/src/bundled_proxygen
-
-mkdir -p third-party/folly/bundled_folly-prefix/src/bundled_folly
-install -m 0644 -D $CWD/folly-v${FB_VERSION}.tar.gz \
- third-party/folly/bundled_folly-prefix/src/folly-v${FB_VERSION}.tar.gz
-tar zxvf $CWD/folly-v${FB_VERSION}.tar.gz \
- -C third-party/folly/bundled_folly-prefix/src/bundled_folly
-
-mkdir -p third-party/wangle/bundled_wangle-prefix/src/bundled_wangle
-install -m 0644 -D $CWD/wangle-v${FB_VERSION}.tar.gz \
- third-party/wangle/bundled_wangle-prefix/src/wangle-v${FB_VERSION}.tar.gz
-tar -zxvf $CWD/wangle-v${FB_VERSION}.tar.gz \
- -C third-party/wangle/bundled_wangle-prefix/src/bundled_wangle
-
-mkdir -p third-party/thrift/bundled_thrift-prefix/src/bundled_thrift
-install -m 0644 -D $CWD/fbthrift-v${FB_VERSION}.tar.gz \
- third-party/thrift/bundled_thrift-prefix/src/fbthrift-v${FB_VERSION}.tar.gz
-tar -zxvf $CWD/fbthrift-v${FB_VERSION}.tar.gz \
- -C third-party/thrift/bundled_thrift-prefix/src/bundled_thrift \
- --strip-components=1
-
-mkdir -p third-party/mcrouter/bundled_mcrouter-prefix/src/bundled_mcrouter
-install -m 0644 -D $CWD/mcrouter-v${FB_VERSION}.tar.gz \
- third-party/mcrouter/bundled_mcrouter-prefix/src/mcrouter-v${FB_VERSION}.tar.gz
-tar -zxvf $CWD/mcrouter-v${FB_VERSION}.tar.gz \
- -C third-party/mcrouter/bundled_mcrouter-prefix/src/bundled_mcrouter \
- --strip-components=1
-
-mkdir -p third-party/timelib/bundled_timelib-prefix/src/bundled_timelib
-install -m 0644 -D $CWD/timelib-2021.07.tar.gz third-party/timelib/bundled_timelib-prefix/src/timelib-2021.07.tar.gz
-tar -zxvf $CWD/timelib-2021.07.tar.gz \
- -C third-party/timelib/bundled_timelib-prefix/src/bundled_timelib \
- --strip-components=1
-
-mkdir -p third-party/fizz/bundled_fizz-prefix/src/bundled_fizz
-install -m 0644 -D $CWD/fizz-v${FB_VERSION}.tar.gz \
- third-party/fizz/bundled_fizz-prefix/src/fizz-v${FB_VERSION}.tar.gz
-tar -zxvf $CWD/fizz-v${FB_VERSION}.tar.gz \
- -C third-party/fizz/bundled_fizz-prefix/src/bundled_fizz
-
-# The working directory is hphp/hack.
-cat << EOF > hphp/hack/facebook/fetch_opam2_repo_hack.sh
-!/bin/sh
-cp $CWD/index-$OPAM_STAMP.tar.gz facebook/
-echo facebook/index-$OPAM_STAMP
-EOF
-chmod 0755 hphp/hack/facebook/fetch_opam2_repo_hack.sh
-
-patch -p1 --verbose -i $CWD/patches/0001-liburing.patch
-patch -p1 --verbose -i $CWD/patches/0002-download.patch
-patch -p1 --verbose -i $CWD/patches/0003-iquote.patch
-
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-export CMAKE_PREFIX_PATH=`pwd`
-cmake \
- -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_CXX_STANDARD=17 \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} \
- -DENABLE_MCROUTER=true \
- -DENABLE_EXTENSION_IMAGICK=false \
- -DNON_DISTRIBUTABLE_BUILD=true \
- -DENABLE_LD_GOLD=true \
- -DUSE_JEMALLOC=true \
- -DUSE_BUNDLED_TZDATA=OFF \
- -DFORCE_BUNDLED_LZ4=OFF \
- -DCAN_USE_SYSTEM_ZSTD=ON \
- -DMYSQL_UNIX_SOCK_ADDR=/var/run/mysqld/mysqld.sock \
- -DCMAKE_BUILD_TYPE=Release .
-make || make -j1
-make install DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/man
-mv hphp/doc/man $PKG/usr/man/man1
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-
-install -m 644 -D $CWD/etc/rc.hhvm $PKG/etc/rc.d/rc.hhvm.new
-install -m 644 -D $CWD/etc/server.ini $PKG/etc/hhvm/server.ini.new
-install -m 644 -D $CWD/etc/php.ini $PKG/etc/hhvm/php.ini.new
-
-mkdir -p $PKG/var/log/hhvm $PKG/usr/lib64/hhvm/extensions
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a *.md LICENSE* hphp/doc/* $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/development/hhvm/hhvm.info b/development/hhvm/hhvm.info
deleted file mode 100644
index 5eaeddab22..0000000000
--- a/development/hhvm/hhvm.info
+++ /dev/null
@@ -1,40 +0,0 @@
-PRGNAM="hhvm"
-VERSION="4.168.2"
-HOMEPAGE="https://hhvm.com/"
-DOWNLOAD="UNSUPPORTED"
-MD5SUM=""
-DOWNLOAD_x86_64="https://download.dlackware.com/hosted-sources/hhvm/hhvm-4.168.2.tar.xz \
- https://static.rust-lang.org/dist/2022-08-01/rust-nightly-x86_64-unknown-linux-gnu.tar.gz \
- https://download.dlackware.com/hosted-sources/hhvm/opam-2.1.0-x86_64-linux \
- https://download.dlackware.com/hosted-sources/hhvm/brotli-v1.0.9.tar.gz \
- https://download.dlackware.com/hosted-sources/hhvm/fmt-8.0.0.zip \
- https://download.dlackware.com/hosted-sources/hhvm/cargo-home-3.tar.xz \
- https://download.dlackware.com/hosted-sources/hhvm/index-1d2e919.tar.gz \
- https://download.dlackware.com/hosted-sources/hhvm/hack-switch-1d2e919.tar.xz \
- https://download.dlackware.com/hosted-sources/hhvm/fbthrift-v2022.07.04.00.tar.gz \
- https://download.dlackware.com/hosted-sources/hhvm/fizz-v2022.07.04.00.tar.gz \
- https://download.dlackware.com/hosted-sources/hhvm/folly-v2022.07.04.00.tar.gz \
- https://download.dlackware.com/hosted-sources/hhvm/mcrouter-v2022.07.04.00.tar.gz \
- https://download.dlackware.com/hosted-sources/hhvm/proxygen-v2022.07.04.00.tar.gz \
- https://download.dlackware.com/hosted-sources/hhvm/re2-2021-11-01.tar.gz \
- https://download.dlackware.com/hosted-sources/hhvm/timelib-2021.07.tar.gz \
- https://download.dlackware.com/hosted-sources/hhvm/wangle-v2022.07.04.00.tar.gz"
-MD5SUM_x86_64="e28368785c9d9a450e535dfab58edd25 \
- 6c9d12670d6ef18be6da3e92ebe692e9 \
- 87d949d8dd93061c5f727094da67f315 \
- c2274f0c7af8470ad514637c35bcee7d \
- f6eb7f98a6aa09aa0102c0c931feec55 \
- e4fd7b7137880abf755c34d8bd53cb2c \
- 65d68e3ecb52e910245cb6d3a02d137f \
- 0eec01bc44b88f75ce6a0799b09b6e3b \
- ba0283a7a932e329852b0634765ea6f1 \
- 34e50ea874ba018c567409a02919f613 \
- 0b6de34c0ca84a4f89d72a3380de9391 \
- 0084e476218aeb9a03fa1a0e5d797522 \
- cc6c17ef5b582d8f602efce8a61a117e \
- 8db4cf198c296eb001b4bf7ac194e598 \
- 7b869e86c44b5a3d9296149285c8bd69 \
- 544011faeb62a328f8b92044f9adcf11"
-REQUIRES="tbb glog libdwarf libmemcached double-conversion gflags"
-MAINTAINER="Eugene Wissner"
-EMAIL="belka@caraus.de"
diff --git a/development/hhvm/patches/0001-liburing.patch b/development/hhvm/patches/0001-liburing.patch
deleted file mode 100644
index 1369df0f0d..0000000000
--- a/development/hhvm/patches/0001-liburing.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- a/third-party/proxygen/bundled_proxygen-prefix/src/bundled_proxygen/proxygen/lib/services/WorkerThread.cpp 2022-06-16 13:33:00.766000000 +0200
-+++ b/third-party/proxygen/bundled_proxygen-prefix/src/bundled_proxygen/proxygen/lib/services/WorkerThread.cpp 2022-06-16 13:37:39.111000000 +0200
-@@ -17,7 +17,7 @@
- #include <glog/logging.h>
- #include <signal.h>
-
--#if !FOLLY_MOBILE && __has_include(<liburing.h>)
-+#if !FOLLY_MOBILE && false
-
- DEFINE_int32(pwt_io_uring_capacity, -1, "io_uring backend capacity");
- DEFINE_int32(pwt_io_uring_max_submit, 128, "io_uring backend max submit");
---- a/third-party/folly/bundled_folly-prefix/src/bundled_folly/folly/experimental/io/IoUringBackend.h 2022-06-16 13:38:45.523000000 +0200
-+++ b/third-party/folly/bundled_folly-prefix/src/bundled_folly/folly/experimental/io/IoUringBackend.h 2022-06-16 13:43:08.748000000 +0200
-@@ -40,11 +40,7 @@
- #include <poll.h>
- #endif
-
--#if __has_include(<liburing.h>)
--#include <liburing.h>
--#endif
--
--#if __has_include(<liburing.h>)
-+#if false
-
- namespace folly {
-
---- a/third-party/folly/bundled_folly-prefix/src/bundled_folly/folly/experimental/io/IoUringBackend.cpp 2022-06-16 14:12:06.191000000 +0200
-+++ b/third-party/folly/bundled_folly-prefix/src/bundled_folly/folly/experimental/io/IoUringBackend.cpp 2022-06-16 14:09:28.887000000 +0200
-@@ -31,7 +31,7 @@
- #include <sys/timerfd.h>
- #endif
-
--#if __has_include(<liburing.h>)
-+#if false
-
- extern "C" FOLLY_ATTR_WEAK void eb_poll_loop_pre_hook(uint64_t* call_time);
- extern "C" FOLLY_ATTR_WEAK void eb_poll_loop_post_hook(
diff --git a/development/hhvm/patches/0002-download.patch b/development/hhvm/patches/0002-download.patch
deleted file mode 100644
index 5693c55e74..0000000000
--- a/development/hhvm/patches/0002-download.patch
+++ /dev/null
@@ -1,247 +0,0 @@
---- hhvm-4.168.2/third-party/libzip/CMakeLists.txt 2023-05-28 20:16:44.000000000 +0200
-+++ - 2023-06-01 19:10:40.449428587 +0200
-@@ -23,10 +23,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- LIBZIP_DOWNLOAD_ARGS
-- SOURCE_URL
-- "https://libzip.org/download/libzip-1.6.1.tar.gz"
-- SOURCE_HASH
-- "SHA256=06eb8e9141fd19e2788cabaea9c9c2fd4d488d9e1484eb474bbfcac78e7b1d88"
- )
-
- ExternalProject_Add(
---- hhvm-4.168.2/third-party/re2/CMakeLists.txt 2023-05-28 20:16:44.000000000 +0200
-+++ - 2023-06-01 19:10:40.453034229 +0200
-@@ -12,10 +12,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- RE2_SOURCE_ARGS
-- SOURCE_URL
-- "https://github.com/google/re2/archive/refs/tags/2021-11-01.tar.gz"
-- SOURCE_HASH
-- "SHA256=8c45f7fba029ab41f2a7e6545058d9eec94eef97ce70df58e92d85cfc08b4669"
- FILENAME_PREFIX "re2-"
- )
-
---- hhvm-4.168.2/third-party/zstd/CMakeLists.txt 2023-05-28 20:16:44.000000000 +0200
-+++ - 2023-06-01 19:10:40.454513420 +0200
-@@ -36,10 +36,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- ZSTD_DOWNLOAD_ARGS
-- SOURCE_URL
-- "https://github.com/facebook/zstd/releases/download/v1.4.9/zstd-1.4.9.tar.gz"
-- SOURCE_HASH
-- "SHA512=10d325c844be43f801c798158c6f1d1ab57401abf1e783e04f6b9e4ac0ba53cf487204fa3244370b1ade239d5f3a784bf1829e206c4ba61fdd9c2f4e9502b238"
- )
- ExternalProject_Add(
- bundled_zstd
---- hhvm-4.168.2/third-party/libsodium/CMakeLists.txt 2023-05-28 20:16:44.000000000 +0200
-+++ - 2023-06-01 19:10:40.456241341 +0200
-@@ -21,10 +21,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- LIBSODIUM_DOWNLOAD_ARGS
-- SOURCE_URL
-- "https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz"
-- SOURCE_HASH
-- "SHA512=17e8638e46d8f6f7d024fe5559eccf2b8baf23e143fadd472a7d29d228b186d86686a5e6920385fe2020729119a5f12f989c3a782afbd05a8db4819bb18666ef"
- )
-
- if (CMAKE_OSX_SYSROOT)
---- hhvm-4.168.2/third-party/brotli/CMakeLists.txt 2023-05-28 20:16:43.000000000 +0200
-+++ - 2023-06-01 19:10:40.458519062 +0200
-@@ -4,10 +4,6 @@
- include(HPHPFunctions)
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- BROTLI_SOURCE_ARGS
-- SOURCE_URL
-- "https://github.com/google/brotli/archive/refs/tags/v1.0.9.tar.gz"
-- SOURCE_HASH
-- "SHA256=f9e8d81d0405ba66d181529af42a3354f838c939095ff99930da6aa9cdf6fe46"
- FILENAME_PREFIX "brotli-"
- )
-
---- hhvm-4.168.2/third-party/proxygen/CMakeLists.txt 2023-05-28 20:24:27.000000000 +0200
-+++ - 2023-06-01 19:10:40.460795033 +0200
-@@ -18,10 +18,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- PROXYGEN_SOURCE_ARGS
-- SOURCE_URL
-- "https://github.com/facebook/proxygen/releases/download/v2022.07.04.00/proxygen-v2022.07.04.00.tar.gz"
-- SOURCE_HASH
-- "SHA256=4de47545a5beb9f3ac2ccdd62ae9def112b3cc361bb71820b9306a04f4bb40e9"
- )
-
- ExternalProject_Add(
---- hhvm-4.168.2/third-party/wangle/CMakeLists.txt 2023-05-28 20:24:27.000000000 +0200
-+++ - 2023-06-01 19:10:40.463064724 +0200
-@@ -20,10 +20,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- WANGLE_SOURCE_ARGS
-- SOURCE_URL
-- "https://github.com/facebook/wangle/releases/download/v2022.07.04.00/wangle-v2022.07.04.00.tar.gz"
-- SOURCE_HASH
-- "SHA256=8c7b538f9e9d84162056d6dc757bea1d0d4c0978889469f10e9d05b1dc4e5a83"
- )
-
- ExternalProject_Add(
---- hhvm-4.168.2/third-party/thrift/CMakeLists.txt 2023-05-28 20:24:27.000000000 +0200
-+++ - 2023-06-01 19:10:40.465499515 +0200
-@@ -20,10 +20,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- THRIFT_SOURCE_ARGS
-- SOURCE_URL
-- "https://github.com/facebook/fbthrift/archive/refs/tags/v2022.07.04.00.tar.gz"
-- SOURCE_HASH
-- "SHA256=45e7ffb38655d9b518d28066f4276000a298990c7c32b9460ddb7a37f2af78bd"
- FILENAME_PREFIX
- "fbthrift-"
- )
---- hhvm-4.168.2/third-party/mcrouter/CMakeLists.txt 2023-05-28 20:24:27.000000000 +0200
-+++ - 2023-06-01 19:10:40.467849786 +0200
-@@ -5,9 +5,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- MCROUTER_DOWNLOAD_ARGS
-- SOURCE_URL "https://github.com/facebook/mcrouter/archive/refs/tags/v2022.07.04.00.tar.gz"
-- SOURCE_HASH "SHA256=7a2a0b44736e896c844c4f8c7697202cdebf7fa42dbb4b84931ee5036a46945c"
-- # The tarball name is just the tag name, which can conflict in the cache
- FILENAME_PREFIX "mcrouter-"
- )
-
---- hhvm-4.168.2/third-party/double-conversion/CMakeLists.txt 2023-05-28 20:16:43.000000000 +0200
-+++ - 2023-06-01 19:10:40.470198057 +0200
-@@ -1,33 +1,7 @@
- include(ExternalProject)
- include(HPHPFunctions)
-
--SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
-- DOUBLE_CONVERSION_DOWNLOAD_ARGS
-- SOURCE_URL "https://github.com/google/double-conversion/archive/refs/tags/v3.0.1.tar.gz"
-- SOURCE_HASH "SHA256=d400c86417df2980b60dc27ad68249dd124964738916d20cdc9c90b42de86490"
-- # The tarball name is just the tag name, which can conflict in the cache
-- FILENAME_PREFIX "double-conversion-"
--)
--
--ExternalProject_Add(
-- bundled_double-conversion
-- ${DOUBLE_CONVERSION_DOWNLOAD_ARGS}
-- CMAKE_ARGS
-- -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
-- -DCMAKE_INSTALL_LIBDIR=lib
-- -DCMAKE_INSTALL_INCLUDEDIR=include
-- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-- -DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}
-- EXCLUDE_FROM_ALL
--)
--
--option(FORCE_BUNDLED_DOUBLE_CONVERSION "Always use bundled double-conversion" OFF)
--if(FORCE_BUNDLED_DOUBLE_CONVERSION)
-- set(DOUBLE_CONVERSION_FOUND FALSE)
--else()
-- find_package(DoubleConversion)
--endif()
-+find_package(DoubleConversion)
-
- add_library(double-conversion INTERFACE)
- if(DOUBLE_CONVERSION_FOUND)
---- hhvm-4.168.2/third-party/timelib/CMakeLists.txt 2023-05-28 20:16:44.000000000 +0200
-+++ - 2023-06-01 19:10:40.472727059 +0200
-@@ -6,9 +6,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- TIMELIB_DOWNLOAD_ARGS
-- SOURCE_URL "https://github.com/derickr/timelib/archive/refs/tags/2021.07.tar.gz"
-- SOURCE_HASH "SHA512=7bc56d20360937af10f63960e443cc8bd4d24c5369f697241e54da21465d4512bd16cfa6f0efcf2b847cc19781e1cecf93c9e19a1efa4f1a7012c9fa442eeabe"
-- # Look for timelib-YYYY.MM.tar.gz in download cache, not just YYYY.MM.tar.gz
- FILENAME_PREFIX "timelib-"
- )
-
---- hhvm-4.168.2/third-party/oniguruma/CMakeLists.txt 2023-05-28 20:16:44.000000000 +0200
-+++ - 2023-06-01 19:10:40.474969410 +0200
-@@ -28,10 +28,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- ONIG_SOURCE_ARGS
-- SOURCE_URL
-- "https://github.com/kkos/oniguruma/releases/download/v6.9.5/onig-6.9.5.tar.gz"
-- SOURCE_HASH
-- "SHA512=2bdb24914e7069c6df9ab8a3d0190ddb58440d94b13860cdc36d259062ae0bc2aa85d564a4209ec596fc7ee47b0823d1b817d4f7ffcc3ea60e9870da84491dc1"
- )
-
- ExternalProject_add(
---- hhvm-4.168.2/third-party/fizz/CMakeLists.txt 2023-05-28 20:24:27.000000000 +0200
-+++ - 2023-06-01 19:10:40.477204211 +0200
-@@ -22,10 +22,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- FIZZ_SOURCE_ARGS
-- SOURCE_URL
-- "https://github.com/facebookincubator/fizz/releases/download/v2022.07.04.00/fizz-v2022.07.04.00.tar.gz"
-- SOURCE_HASH
-- "SHA256=48941c3726b99aa9b22480ff92cbe3715154df0a4330ad42485b3d7649167b76"
- )
-
- set(
---- hhvm-4.168.2/third-party/fmt/CMakeLists.txt 2023-05-28 20:24:27.000000000 +0200
-+++ - 2023-06-01 19:10:40.478716581 +0200
-@@ -3,10 +3,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- FMT_SOURCE_ARGS
-- SOURCE_URL
-- "https://github.com/fmtlib/fmt/releases/download/8.0.0/fmt-8.0.0.zip"
-- SOURCE_HASH
-- "SHA512=70848739642bebf2820d661e7547208445329325a0d8b5919d85f375d683c0f9bef763bc7e9d7823def15100134fd9a126a9e418223b20bf8d567e5084334778"
- )
-
- set(INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/fmt-prefix")
---- hhvm-4.168.2/third-party/rustc/CMakeLists.txt 2023-05-28 20:16:44.000000000 +0200
-+++ - 2023-06-01 19:10:40.480975123 +0200
-@@ -32,14 +32,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- RUST_DOWNLOAD_ARGS
-- Linux_URL
-- "https://static.rust-lang.org/dist/${RUST_NIGHTLY_VERSION}/rust-nightly-x86_64-unknown-linux-gnu.tar.gz"
-- Darwin_URL
-- "https://static.rust-lang.org/dist/${RUST_NIGHTLY_VERSION}/rust-nightly-x86_64-apple-darwin.tar.gz"
-- Linux_HASH
-- "SHA512=de136959121b4117ab31a9ae4c4b3c593d4fcdf9724bd0f62e8a4ab41becccfa4b8e92ebe1460d9be508986888b95b38620bb68b58496db89706760074b9585d"
-- Darwin_HASH
-- "SHA512=77beb1d67233d3954c2709a47c2513762e91e506041bb5ad8d0aad90124cb5a229dfc87e1fb767826f27a31b52520f148c52c2f3a595dac6e09a676c6e660462"
- # The original filename doesn't contain any version information, so add the version information as a prefix to avoid cache collisions when updating later
- FILENAME_PREFIX "rustc-${RUST_NIGHTLY_VERSION}-"
- )
---- hhvm-4.168.2/third-party/lz4/CMakeLists.txt 2023-05-28 20:16:44.000000000 +0200
-+++ - 2023-06-01 19:10:40.483215304 +0200
-@@ -21,10 +21,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- LZ4_DOWNLOAD_ARGS
-- SOURCE_URL "https://github.com/lz4/lz4/archive/v1.9.2.tar.gz"
-- SOURCE_HASH "SHA256=658ba6191fa44c92280d4aa2c271b0f4fbc0e34d249578dd05e50e76d0e5efcc"
-- # By default, we'd look for v1.9.2.tar.gz in the cache - let's look for
-- # lz4-v1.9.2 instead
- FILENAME_PREFIX "lz4-"
- )
- set(MAKE_ARGS CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} "MOREFLAGS=-fPIC ${ISYSROOT_FLAG}")
---- hhvm-4.168.2/third-party/folly/CMakeLists.txt 2023-05-28 20:24:27.000000000 +0200
-+++ - 2023-06-01 19:10:40.485574035 +0200
-@@ -3,10 +3,6 @@
-
- SET_HHVM_THIRD_PARTY_SOURCE_ARGS(
- FOLLY_SOURCE_ARGS
-- SOURCE_URL
-- "https://github.com/facebook/folly/releases/download/v2022.07.04.00/folly-v2022.07.04.00.tar.gz"
-- SOURCE_HASH
-- "SHA256=fff7caa4a230ac0b3ee88e383fa9ea1ee2b2f3f7611ae5b18c73a71a40ec0d43"
- )
-
- get_target_property(BOOST_INCLUDE_DIR boost INTERFACE_INCLUDE_DIRECTORIES)
diff --git a/development/hhvm/patches/0003-iquote.patch b/development/hhvm/patches/0003-iquote.patch
deleted file mode 100644
index e8a42ce09f..0000000000
--- a/development/hhvm/patches/0003-iquote.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/hphp/hack/CMakeLists.txt b/hphp/hack/CMakeLists.txt
-index b1aec712dbb..831c46db9e4 100644
---- a/hphp/hack/CMakeLists.txt
-+++ b/hphp/hack/CMakeLists.txt
-@@ -293,11 +293,8 @@ function(build_cxx_bridge NAME)
- "${NAME}_rust_part"
- ${CXX_BRIDGE_LINK_LIBS}
- )
-- # `-iquote` is like `-I` (or target_include_directories()`), except:
-- # - it takes precedence over `-I`
-- # - it only applies to `#include "foo"`, not `#include <foo>`
-- target_compile_options("${NAME}" INTERFACE "-iquote" "${RUST_FFI_BUILD_ROOT}")
-- target_compile_options("${NAME}" PRIVATE "-iquote" "${GENERATED_CXXBRIDGE}")
-+ target_include_directories("${NAME}" INTERFACE "${RUST_FFI_BUILD_ROOT}")
-+ target_include_directories("${NAME}" PRIVATE "${GENERATED_CXXBRIDGE}")
- endfunction()
-
- build_cxx_bridge(
diff --git a/development/hhvm/slack-desc b/development/hhvm/slack-desc
deleted file mode 100644
index 9d6bbdf91e..0000000000
--- a/development/hhvm/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-hhvm: hhvm (a virtual machine designed for executing Hack and PHP)
-hhvm:
-hhvm: HHVM uses a just-in-time (JIT) compilation approach to achieve
-hhvm: superior performance while maintaining the development flexibility
-hhvm: that PHP provides.
-hhvm:
-hhvm: Hack is a programming language for HHVM.
-hhvm:
-hhvm:
-hhvm: Homepage: https://hhvm.com/
-hhvm:
diff --git a/development/hipSYCL/hipSYCL.info b/development/hipSYCL/hipSYCL.info
index d110044bc7..4f096f7982 100644
--- a/development/hipSYCL/hipSYCL.info
+++ b/development/hipSYCL/hipSYCL.info
@@ -2,7 +2,7 @@ PRGNAM="hipSYCL"
VERSION="0.9.3"
HOMEPAGE="https://hipsycl.github.io"
DOWNLOAD="https://github.com/illuhad/hipSYCL/archive/v0.9.3/hipSYCL-0.9.3.tar.gz"
-MD5SUM="47ce0e5ba85aec91494e2ea49bc12cf2"
+MD5SUM="2e213619c9a0e5761100166beec0a22e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/development/jdk11/README b/development/jdk11/README
index 2b77c7fb6f..cdb6241f70 100644
--- a/development/jdk11/README
+++ b/development/jdk11/README
@@ -8,15 +8,14 @@ The JDK is a development environment for building applications,
applets and components that can be deployed with the
Java Platform Standard Edition Runtime Environment.
-More details:
-https://developer.oracle.com/java/
-
This SlackBuild will repackage official Oracle JDK archive.
You must accept the Oracle Technology Network License Agreement
for Oracle Java SE to download this software
-https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
+https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html
After installation you will need to log out from the system and log
in back for environment variables get updated. Or just run "source
/etc/profile"
+
+NOTE: This version of JDK is considered End of Life (EOL)
diff --git a/development/jdk11/jdk11.SlackBuild b/development/jdk11/jdk11.SlackBuild
index 272f86d660..bd17ab104e 100644
--- a/development/jdk11/jdk11.SlackBuild
+++ b/development/jdk11/jdk11.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=jdk11
-VERSION=${VERSION:-11.0.12}
+VERSION=${VERSION:-11.0.22}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +38,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -61,8 +58,8 @@ LIBDIRSUFFIX=64
rm -rf $PKG
mkdir -p $TMP $OUTPUT $PKG/{install,etc/profile.d,usr/{bin,lib${LIBDIRSUFFIX},doc/$PRGNAM-$VERSION,man/man1}}
cd $PKG/usr/lib${LIBDIRSUFFIX}
-tar -xvf $CWD/jdk-${VERSION}_linux*.tar.gz
-mv $(tar -tf $CWD/jdk-${VERSION}_linux*.tar.gz | head -1 | cut -d/ -f1) $PRGNAM-$VERSION
+tar -xvf $CWD/jdk-${VERSION}_linux-x64_bin.tar.gz
+mv $(tar -tf $CWD/jdk-${VERSION}_linux-x64_bin.tar.gz | head -1 | cut -d/ -f1) $PRGNAM-$VERSION
chown -R root:root $PRGNAM-$VERSION
find -L $PRGNAM-$VERSION \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
diff --git a/development/jdk11/jdk11.info b/development/jdk11/jdk11.info
index 61610c0225..9eacf2946b 100644
--- a/development/jdk11/jdk11.info
+++ b/development/jdk11/jdk11.info
@@ -1,10 +1,10 @@
PRGNAM="jdk11"
-VERSION="11.0.12"
+VERSION="11.0.22"
HOMEPAGE="https://developer.oracle.com/java"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://download.oracle.com/otn/java/jdk/11.0.12+8/f411702ca7704a54a79ead0c2e0942a3/jdk-11.0.12_linux-x64_bin.tar.gz?AuthParam=1630328792_80e3bfc8ea574dfdd3391fd65ea454d3"
-MD5SUM_x86_64="ce9d5fecc743ab9f808415132938addb"
+DOWNLOAD_x86_64="https://download.oracle.com/otn/java/jdk/11.0.22+9/8662aac2120442c2a89b1ee9c67d7069/jdk-11.0.22_linux-x64_bin.tar.gz"
+MD5SUM_x86_64="1d0ca55b8121d35a69a4666ce49c5381"
REQUIRES=""
MAINTAINER="Igor Alexandrov"
EMAIL="igor.alexandrov@outlook.com"
diff --git a/development/jupyter-nbconvert/jupyter-nbconvert.SlackBuild b/development/jupyter-nbconvert/jupyter-nbconvert.SlackBuild
index 1704e25847..a9ae5d6c5c 100644
--- a/development/jupyter-nbconvert/jupyter-nbconvert.SlackBuild
+++ b/development/jupyter-nbconvert/jupyter-nbconvert.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=jupyter-nbconvert
-VERSION=${VERSION:-7.16.3}
+VERSION=${VERSION:-7.16.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/development/jupyter-nbconvert/jupyter-nbconvert.info b/development/jupyter-nbconvert/jupyter-nbconvert.info
index 11ffff748f..27c49d870a 100644
--- a/development/jupyter-nbconvert/jupyter-nbconvert.info
+++ b/development/jupyter-nbconvert/jupyter-nbconvert.info
@@ -1,8 +1,8 @@
PRGNAM="jupyter-nbconvert"
-VERSION="7.16.3"
+VERSION="7.16.4"
HOMEPAGE="https://jupyter.org/"
-DOWNLOAD="https://files.pythonhosted.org/packages/source/n/nbconvert/nbconvert-7.16.3.tar.gz"
-MD5SUM="3598dda22ab9fb316c55fdaa189ee2c7"
+DOWNLOAD="https://files.pythonhosted.org/packages/source/n/nbconvert/nbconvert-7.16.4.tar.gz"
+MD5SUM="8cdc74f178e14c5f3dfeceda96ef8144"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-bleach python3-defusedxml jupyter-nbclient jupyterlab_pygments python3-mistune pandocfilters testpath BeautifulSoup4 tinycss2 python-importlib_metadata"
diff --git a/development/kForth-32/kForth-32.info b/development/kForth-32/kForth-32.info
index 3cb0cbc586..0cacea33cb 100644
--- a/development/kForth-32/kForth-32.info
+++ b/development/kForth-32/kForth-32.info
@@ -3,7 +3,7 @@ VERSION="2.4.3"
HOMEPAGE="https://github.com/mynenik/kForth-32"
DOWNLOAD="https://github.com/mynenik/kForth-32/archive/refs/tags/v2.4.3/kForth-32-2.4.3.tar.gz"
MD5SUM="fe006640fadef2863063728a884f7cb7"
-DOWNLOAD_x86_64=""
+DOWNLOAD_x86_64="UNSUPPORTED"
MD5SUM_x86_64=""
REQUIRES="patchutils"
MAINTAINER="Antonio Leal"
diff --git a/development/kForth-64/kForth-64.info b/development/kForth-64/kForth-64.info
index 4cf4f9c7f6..fb8d73297d 100644
--- a/development/kForth-64/kForth-64.info
+++ b/development/kForth-64/kForth-64.info
@@ -1,10 +1,10 @@
PRGNAM="kForth-64"
VERSION="0.4.3"
HOMEPAGE="https://github.com/mynenik/kForth-64"
-DOWNLOAD="https://github.com/mynenik/kForth-64/archive/refs/tags/v0.4.3/kForth-64-0.4.3.tar.gz"
-MD5SUM="44bc386a5ac16dacac44daa04aeba8af"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/mynenik/kForth-64/archive/refs/tags/v0.4.3/kForth-64-0.4.3.tar.gz"
+MD5SUM_x86_64="44bc386a5ac16dacac44daa04aeba8af"
REQUIRES="patchutils"
MAINTAINER="Antonio Leal"
EMAIL="antonio.leal@yahoo.com"
diff --git a/development/liberica-jdk-bin/liberica-jdk-bin.SlackBuild b/development/liberica-jdk-bin/liberica-jdk-bin.SlackBuild
index db42532f47..6fe16a4b5d 100644
--- a/development/liberica-jdk-bin/liberica-jdk-bin.SlackBuild
+++ b/development/liberica-jdk-bin/liberica-jdk-bin.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=liberica-jdk-bin
VERSION=${VERSION:-21.0.3+10}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -67,11 +67,17 @@ find -L . \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
mkdir -p $PKG/etc/profile.d
-for s in $PRGNAM.sh $PRGNAM.csh ; do
- sed "s|/usr/lib|/usr/lib$LIBDIRSUFFIX/liberica-$JDKNAM|" $CWD/$s \
- > $PKG/etc/profile.d/$s
- chmod 755 $PKG/etc/profile.d/$s
-done
+cat > $PKG/etc/profile.d/liberica-jdk-bin.csh << EOF
+setenv JAVA_HOME /usr/lib${LIBDIRSUFFIX}/liberica-${JDKNAM}
+setenv PATH \${PATH}:\${JAVA_HOME}/bin
+EOF
+cat > $PKG/etc/profile.d/liberica-jdk-bin.sh << EOF
+export JAVA_HOME="/usr/lib${LIBDIRSUFFIX}/liberica-${JDKNAM}"
+export PATH="\${PATH}:\${JAVA_HOME}/bin"
+EOF
+
+chmod 0755 $PKG/etc/profile.d/liberica-jdk-bin.csh
+chmod 0755 $PKG/etc/profile.d/liberica-jdk-bin.sh
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/development/liberica-jdk-bin/liberica-jdk-bin.csh b/development/liberica-jdk-bin/liberica-jdk-bin.csh
deleted file mode 100644
index 19044c534a..0000000000
--- a/development/liberica-jdk-bin/liberica-jdk-bin.csh
+++ /dev/null
@@ -1,3 +0,0 @@
-setenv JAVA_HOME /usr/lib
-setenv PATH ${PATH}:${JAVA_HOME}/bin
-setenv MANPATH ${MANPATH}:${JAVA_HOME}/man
diff --git a/development/liberica-jdk-bin/liberica-jdk-bin.sh b/development/liberica-jdk-bin/liberica-jdk-bin.sh
deleted file mode 100644
index 85556c6edd..0000000000
--- a/development/liberica-jdk-bin/liberica-jdk-bin.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-export JAVA_HOME=/usr/lib
-export PATH="${PATH}:${JAVA_HOME}/bin"
-export MANPATH="${MANPATH}:${JAVA_HOME}/man"
diff --git a/development/mold/mold.SlackBuild b/development/mold/mold.SlackBuild
index c217619c76..cbe6e4223b 100644
--- a/development/mold/mold.SlackBuild
+++ b/development/mold/mold.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=mold
-VERSION=${VERSION:-2.30.0}
+VERSION=${VERSION:-2.31.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/development/mold/mold.info b/development/mold/mold.info
index 7d13959d7b..bd11720a95 100644
--- a/development/mold/mold.info
+++ b/development/mold/mold.info
@@ -1,8 +1,8 @@
PRGNAM="mold"
-VERSION="2.30.0"
+VERSION="2.31.0"
HOMEPAGE="https://github.com/rui314/mold"
-DOWNLOAD="https://github.com/rui314/mold/archive/v2.30.0/mold-2.30.0.tar.gz"
-MD5SUM="061da806be174abe79d87c3a439f982f"
+DOWNLOAD="https://github.com/rui314/mold/archive/v2.31.0/mold-2.31.0.tar.gz"
+MD5SUM="fdfcddefc039071f5a7611c051a8f5ea"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/development/mongodb-compass/mongodb-compass.SlackBuild b/development/mongodb-compass/mongodb-compass.SlackBuild
index 5c873ce37c..2ff02c9e75 100644
--- a/development/mongodb-compass/mongodb-compass.SlackBuild
+++ b/development/mongodb-compass/mongodb-compass.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=mongodb-compass
-VERSION=${VERSION:-1.42.5}
+VERSION=${VERSION:-1.43.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/development/mongodb-compass/mongodb-compass.info b/development/mongodb-compass/mongodb-compass.info
index 90f25cda2f..094ba74a33 100644
--- a/development/mongodb-compass/mongodb-compass.info
+++ b/development/mongodb-compass/mongodb-compass.info
@@ -1,10 +1,10 @@
PRGNAM="mongodb-compass"
-VERSION="1.42.5"
+VERSION="1.43.0"
HOMEPAGE="https://www.mongodb.com/products/compass"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://downloads.mongodb.com/compass/mongodb-compass-1.42.5.x86_64.rpm"
-MD5SUM_x86_64="fa91dafb9ec7d7e2f4b03d4b017f7687"
+DOWNLOAD_x86_64="https://downloads.mongodb.com/compass/mongodb-compass-1.43.0.x86_64.rpm"
+MD5SUM_x86_64="cfc514ba727bc235e3251f1a7e5ad3f2"
REQUIRES=""
MAINTAINER="Willy Sudiarto Raharjo"
EMAIL="willysr@slackbuilds.org"
diff --git a/development/mongodb-shell/mongodb-shell.SlackBuild b/development/mongodb-shell/mongodb-shell.SlackBuild
index aa40b02031..b84ddfcc0c 100644
--- a/development/mongodb-shell/mongodb-shell.SlackBuild
+++ b/development/mongodb-shell/mongodb-shell.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=mongodb-shell
SRCNAM=mongosh
-VERSION=${VERSION:-2.2.1}
+VERSION=${VERSION:-2.2.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/development/mongodb-shell/mongodb-shell.info b/development/mongodb-shell/mongodb-shell.info
index c797fc405b..d038dc6f30 100644
--- a/development/mongodb-shell/mongodb-shell.info
+++ b/development/mongodb-shell/mongodb-shell.info
@@ -1,10 +1,10 @@
PRGNAM="mongodb-shell"
-VERSION="2.2.1"
+VERSION="2.2.5"
HOMEPAGE="https://www.mongodb.com/try/download/shell"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://downloads.mongodb.com/compass/mongosh-2.2.1-linux-x64.tgz"
-MD5SUM_x86_64="524de3b897441d652bb8e33015b2b09a"
+DOWNLOAD_x86_64="https://downloads.mongodb.com/compass/mongosh-2.2.5-linux-x64.tgz"
+MD5SUM_x86_64="c49777d1e51002203e556a57f7d439c4"
REQUIRES=""
MAINTAINER="Willy Sudiarto Raharjo"
EMAIL="willysr@slackbuilds.org"
diff --git a/development/openjdk7/openjdk7.info b/development/openjdk7/openjdk7.info
index 1b5049b35b..92fc606bda 100644
--- a/development/openjdk7/openjdk7.info
+++ b/development/openjdk7/openjdk7.info
@@ -1,7 +1,9 @@
PRGNAM="openjdk7"
VERSION="7u321"
HOMEPAGE="https://openjdk.java.net"
-DOWNLOAD="https://icedtea.classpath.org/download/source/icedtea-2.6.28.tar.xz \
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://icedtea.classpath.org/download/source/icedtea-2.6.28.tar.xz \
https://icedtea.classpath.org/download/drops/icedtea7/2.6.28/openjdk.tar.bz2 \
https://icedtea.classpath.org/download/drops/icedtea7/2.6.28/corba.tar.bz2 \
https://icedtea.classpath.org/download/drops/icedtea7/2.6.28/jaxp.tar.bz2 \
@@ -10,7 +12,7 @@ DOWNLOAD="https://icedtea.classpath.org/download/source/icedtea-2.6.28.tar.xz \
https://icedtea.classpath.org/download/drops/icedtea7/2.6.28/langtools.tar.bz2 \
https://icedtea.classpath.org/download/drops/icedtea7/2.6.28/hotspot.tar.bz2 \
https://archive.apache.org/dist/ant/binaries/apache-ant-1.9.16-bin.tar.bz2"
-MD5SUM="11663b88a06f3461607c026510dd733a \
+MD5SUM_x86_64="11663b88a06f3461607c026510dd733a \
bcd48aa756a108cb437f07ed291436f9 \
5c16e53e461cf640842cec44f9a6264a \
9fe804632cfd4a47423a58a0171bc420 \
@@ -19,8 +21,6 @@ MD5SUM="11663b88a06f3461607c026510dd733a \
ebbc311a2aa8afdf1dd4e3d2b7f55aba \
c168159cc98db90a5d14b077e2c49ae9 \
2a1ef0230e673b6da876a8fc9744b9a1"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
REQUIRES="gcc5"
MAINTAINER="Lenard Spencer"
EMAIL="lenardrspencer@gmail.com"
diff --git a/development/openjdk8/README b/development/openjdk8/README
index 3139fca714..148f6beaa4 100644
--- a/development/openjdk8/README
+++ b/development/openjdk8/README
@@ -7,9 +7,6 @@ that you have already installed as they may cause conflicts with the
PATH, JAVA_HOME and MANPATH variables (this includes the 'openjdk7'
dependency package -- you may wish to remove it after you're done.)
-On 32-bit slackware you will need 'zulu-openjdk7' as dependency instead
-of 'openjdk7'. You can use the former on 64-bit slackware too.
-
If you already have 'openjdk8' on your system (and are compiling a newer
version, for example) you won't need any dependencies at all.
diff --git a/development/openjdk8/openjdk8.info b/development/openjdk8/openjdk8.info
index ee0977437d..2f8bfddcf8 100644
--- a/development/openjdk8/openjdk8.info
+++ b/development/openjdk8/openjdk8.info
@@ -1,12 +1,12 @@
PRGNAM="openjdk8"
VERSION="8u392"
HOMEPAGE="https://openjdk.java.net"
-DOWNLOAD="https://icedtea.classpath.org/download/source/icedtea-3.29.0.tar.xz \
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://icedtea.classpath.org/download/source/icedtea-3.29.0.tar.xz \
https://icedtea.classpath.org/download/drops/icedtea8/3.29.0/openjdk-git.tar.xz"
-MD5SUM="2f4cdbee15aa0832b9f5bec2ea27289d\
+MD5SUM_x86_64="2f4cdbee15aa0832b9f5bec2ea27289d\
3b34d935beaca314c974fea3089916d3"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
REQUIRES="openjdk7"
MAINTAINER="Strahil Yordanov"
EMAIL="strahilski@yahoo.com"
diff --git a/development/protoc-gen-go/protoc-gen-go.SlackBuild b/development/protoc-gen-go/protoc-gen-go.SlackBuild
index b8fa624af9..4a5521782a 100644
--- a/development/protoc-gen-go/protoc-gen-go.SlackBuild
+++ b/development/protoc-gen-go/protoc-gen-go.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=protoc-gen-go
-VERSION=${VERSION:-1.33.0}
+VERSION=${VERSION:-1.34.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/development/protoc-gen-go/protoc-gen-go.info b/development/protoc-gen-go/protoc-gen-go.info
index 2d99015626..845fb32568 100644
--- a/development/protoc-gen-go/protoc-gen-go.info
+++ b/development/protoc-gen-go/protoc-gen-go.info
@@ -1,8 +1,8 @@
PRGNAM="protoc-gen-go"
-VERSION="1.33.0"
+VERSION="1.34.0"
HOMEPAGE="https://github.com/protocolbuffers/protobuf-go"
-DOWNLOAD="https://github.com/protocolbuffers/protobuf-go/archive/v1.33.0/protobuf-go-1.33.0.tar.gz"
-MD5SUM="7de0737359c575dcaa2c58cbc27cf93e"
+DOWNLOAD="https://github.com/protocolbuffers/protobuf-go/archive/v1.34.0/protobuf-go-1.34.0.tar.gz"
+MD5SUM="f3334f859640a128e34c5dce90f48a69"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="google-go-lang"
diff --git a/development/pylint/pylint.SlackBuild b/development/pylint/pylint.SlackBuild
index 8469fde965..36003d6637 100644
--- a/development/pylint/pylint.SlackBuild
+++ b/development/pylint/pylint.SlackBuild
@@ -30,7 +30,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=pylint
VERSION=${VERSION:-1.7.1}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -71,6 +71,11 @@ find -L . \
python setup.py install --root=$PKG
+# Rename executables to avoid conflicts with Python 3 version of pylint.
+for executable in pylint epylint pyreverse symilar; do
+ mv $PKG/usr/bin/${executable}{,2}
+done
+
mkdir -p ${PKG}/usr/doc/$PRGNAM-$VERSION
rm -rf ${PKG}/usr/share
diff --git a/development/rust16/rust16.SlackBuild b/development/rust16/rust16.SlackBuild
index 1029773a03..9e73fcedb0 100644
--- a/development/rust16/rust16.SlackBuild
+++ b/development/rust16/rust16.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=rust16
SRCNAM=rust
-VERSION=${VERSION:-1.76.0}
+VERSION=${VERSION:-1.77.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -103,7 +103,7 @@ rust-demangler-preview,\
rustfmt-preview
find $PKG/opt/$PRGNAM/lib -type f -name "*.so" -exec chmod +x {} \; 2> /dev/null || true
-# As of 1.76.0, stripping the libraries causes memory faults on Slackware64-15.0.
+# As of 1.77.2, stripping the libraries causes memory faults on Slackware64-15.0.
if [ $ARCH = "x86_64" ]; then
find $PKG -print0 | xargs -0 file | grep "executable" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
diff --git a/development/rust16/rust16.info b/development/rust16/rust16.info
index 588184a035..97d4823321 100644
--- a/development/rust16/rust16.info
+++ b/development/rust16/rust16.info
@@ -1,12 +1,12 @@
PRGNAM="rust16"
-VERSION="1.76.0"
+VERSION="1.77.2"
HOMEPAGE="https://rust-lang.org"
-DOWNLOAD="https://static.rust-lang.org/dist/2024-02-08/rust-1.76.0-i686-unknown-linux-gnu.tar.gz \
- https://static.rust-lang.org/dist/2024-02-08/rust-1.76.0-arm-unknown-linux-gnueabihf.tar.gz"
-MD5SUM="9d8fb8d9d18987d3c65e781fd916adfa \
- 3f27044b6d18155a3849ae3d3958faf5"
-DOWNLOAD_x86_64="https://static.rust-lang.org/dist/2024-02-08/rust-1.76.0-x86_64-unknown-linux-gnu.tar.gz"
-MD5SUM_x86_64="3d00cf0861b0eb28e7010663dc59b2ed"
+DOWNLOAD="https://static.rust-lang.org/dist/2024-04-09/rust-1.77.2-i686-unknown-linux-gnu.tar.gz \
+ https://static.rust-lang.org/dist/2024-04-09/rust-1.77.2-arm-unknown-linux-gnueabihf.tar.gz"
+MD5SUM="279c9bda8f7406629c5c7e1bb66cf365 \
+ 454dd1e89f14825dd6279d4f5a1a24a2"
+DOWNLOAD_x86_64="https://static.rust-lang.org/dist/2024-04-09/rust-1.77.2-x86_64-unknown-linux-gnu.tar.gz"
+MD5SUM_x86_64="5df06513e998f33b00ed5d8920dc0cfc"
REQUIRES=""
MAINTAINER="K. Eugene Carlson"
EMAIL="kvngncrlsn@gmail.com"
diff --git a/development/sqlcl/sqlcl.SlackBuild b/development/sqlcl/sqlcl.SlackBuild
index 7c8a23a1e3..66a71bde10 100644
--- a/development/sqlcl/sqlcl.SlackBuild
+++ b/development/sqlcl/sqlcl.SlackBuild
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
# Slackware build script for Oracle SQL Developer Command Line
@@ -25,17 +25,21 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=sqlcl
-VERSION=${VERSION:-23.3.0.270.1251}
+VERSION=${VERSION:-24.1.0.087.0929}
ARCH=${ARCH:-noarch}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
+CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -62,10 +66,10 @@ find -L . \
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-mv $PKG/opt/sqlcl/*.md $PKG/usr/doc/$PRGNAM-$VERSION
-mv $PKG/opt/sqlcl/*.txt $PKG/usr/doc/$PRGNAM-$VERSION
-mv $PKG/opt/sqlcl/bin/*.md $PKG/usr/doc/$PRGNAM-$VERSION
-mv $PKG/opt/sqlcl/bin/*.txt $PKG/usr/doc/$PRGNAM-$VERSION
+mv $PKG/opt/sqlcl/*.md $PKG/usr/doc/$PRGNAM-$VERSION || true
+mv $PKG/opt/sqlcl/*.txt $PKG/usr/doc/$PRGNAM-$VERSION || true
+mv $PKG/opt/sqlcl/bin/*.md $PKG/usr/doc/$PRGNAM-$VERSION || true
+mv $PKG/opt/sqlcl/bin/*.txt $PKG/usr/doc/$PRGNAM-$VERSION || true
rm $PKG/opt/sqlcl/$VERSION || true
diff --git a/development/sqlcl/sqlcl.info b/development/sqlcl/sqlcl.info
index 5609cf1a22..ff6292f64e 100644
--- a/development/sqlcl/sqlcl.info
+++ b/development/sqlcl/sqlcl.info
@@ -1,8 +1,8 @@
PRGNAM="sqlcl"
-VERSION="23.3.0.270.1251"
+VERSION="24.1.0.087.0929"
HOMEPAGE="https://www.oracle.com/database/sqldeveloper/technologies/sqlcl/"
-DOWNLOAD="https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-23.3.0.270.1251.zip"
-MD5SUM="e96e38ffdf40cd8f8763052dfad3a127"
+DOWNLOAD="https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-24.1.0.087.0929.zip"
+MD5SUM="cc413282428dac100138918971113a26"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="zulu-openjdk11"
diff --git a/development/sqldeveloper/sqldeveloper.SlackBuild b/development/sqldeveloper/sqldeveloper.SlackBuild
index b175eec991..9eeab5d4cf 100644
--- a/development/sqldeveloper/sqldeveloper.SlackBuild
+++ b/development/sqldeveloper/sqldeveloper.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for Oracle SQL Developer
-# Copyright 2015-2021 Giuseppe Di Terlizzi <giuseppe.diterlizzi@gmail.com>
+# Copyright 2015-2024 Giuseppe Di Terlizzi <giuseppe.diterlizzi@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=sqldeveloper
-VERSION=${VERSION:-20.4.1.407.0006}
+VERSION=${VERSION:-23.1.1.345.2114}
ARCH=${ARCH:-noarch}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
diff --git a/development/sqldeveloper/sqldeveloper.info b/development/sqldeveloper/sqldeveloper.info
index 85c55ba6ec..0e0ae16104 100644
--- a/development/sqldeveloper/sqldeveloper.info
+++ b/development/sqldeveloper/sqldeveloper.info
@@ -1,10 +1,10 @@
PRGNAM="sqldeveloper"
-VERSION="20.4.1.407.0006"
+VERSION="23.1.1.345.2114"
HOMEPAGE="http://oracle.com/technetwork/developer-tools/sql-developer"
-DOWNLOAD="http://download.oracle.com/otn/java/sqldeveloper/sqldeveloper-20.4.1.407.0006-no-jre.zip"
-MD5SUM="041709f01de2c6d176f37132089b61b8"
+DOWNLOAD="https://download.oracle.com/otn/java/sqldeveloper/sqldeveloper-23.1.1.345.2114-no-jre.zip"
+MD5SUM="dc13da11f837a5f9c64187f52afb1ffe"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="zulu-openjdk8"
+REQUIRES="zulu-openjdk11"
MAINTAINER="Giuseppe Di Terlizzi"
EMAIL="giuseppe.diterlizzi@gmail.com"
diff --git a/development/stablediffusion-pipelines-cpp/README b/development/stablediffusion-pipelines-cpp/README
deleted file mode 100644
index 96571cfe2e..0000000000
--- a/development/stablediffusion-pipelines-cpp/README
+++ /dev/null
@@ -1,4 +0,0 @@
-A set of Stable Diffusion pipelines (and related utilities) ported
-entirely to C++ (from python), with easy-to-use API’s and a focus on
-minimal third-party dependencies. The core stable-diffusion libraries
-built by this project only have dependencies on OpenVINO.
diff --git a/development/stablediffusion-pipelines-cpp/slack-desc b/development/stablediffusion-pipelines-cpp/slack-desc
deleted file mode 100644
index 815c308afa..0000000000
--- a/development/stablediffusion-pipelines-cpp/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-stablediffusion-pipelines-cpp: stablediffusion-pipelines-cpp (Stable Diffusion Pipelines forOpenVINO)
-stablediffusion-pipelines-cpp:
-stablediffusion-pipelines-cpp: A set of Stable Diffusion pipelines (and related utilities) ported
-stablediffusion-pipelines-cpp: entirely to C++ (from python), with easy-to-use APIs and a focus on
-stablediffusion-pipelines-cpp: minimal third-party dependencies. The core stable-diffusion libraries
-stablediffusion-pipelines-cpp: built by this project only have dependencies on OpenVINO.
-stablediffusion-pipelines-cpp:
-stablediffusion-pipelines-cpp:
-stablediffusion-pipelines-cpp:
-stablediffusion-pipelines-cpp: https://github.com/intel/stablediffusion-pipelines-cpp
-stablediffusion-pipelines-cpp:
diff --git a/development/stablediffusion-pipelines-cpp/stablediffusion-pipelines-cpp.info b/development/stablediffusion-pipelines-cpp/stablediffusion-pipelines-cpp.info
deleted file mode 100644
index 7ecca413ca..0000000000
--- a/development/stablediffusion-pipelines-cpp/stablediffusion-pipelines-cpp.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="stablediffusion-pipelines-cpp"
-VERSION="0.1"
-HOMEPAGE="https://github.com/intel/stablediffusion-pipelines-cpp"
-DOWNLOAD="UNSUPPORTED"
-MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/intel/stablediffusion-pipelines-cpp/archive/v0.1/stablediffusion-pipelines-cpp-0.1.tar.gz"
-MD5SUM_x86_64="b3acd91b7202a83aeaa575c6a1dc6036"
-REQUIRES="openvino libtorch-cxx11-abi-shared-with-deps"
-MAINTAINER="Johannes Schoepfer"
-EMAIL="slackbuilds@schoepfer.info"
diff --git a/development/textadept/textadept.SlackBuild b/development/textadept/textadept.SlackBuild
index b834636e3a..54486a6eed 100644
--- a/development/textadept/textadept.SlackBuild
+++ b/development/textadept/textadept.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=textadept
-VERSION=${VERSION:-12.3}
+VERSION=${VERSION:-12.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -92,8 +92,8 @@ ln -s $CWD/*lua-5.4.6.tar.gz build/_deps/lua-5.4.6.tar.gz
ln -s $CWD/*PDCurses-3.9.zip build/_deps/PDCurses-3.9.zip
ln -s $CWD/*1.0.zip build/_deps/1.0.zip
ln -s $CWD/*scinterm_5.0.zip build/_deps/scinterm_5.0.zip
-ln -s $CWD/*scintilla541.tgz build/_deps/scintilla541.tgz
-ln -s $CWD/*48a6fc9511ec67993e43ac7f5a33efc616b7ea32.zip build/_deps/48a6fc9511ec67993e43ac7f5a33efc616b7ea32.zip
+ln -s $CWD/*scintilla550.tgz build/_deps/scintilla550.tgz
+ln -s $CWD/*scintillua_6.3.zip build/_deps/scintillua_6.3.zip
ln -s $CWD/*3.4.0.zip build/_deps/v3.4.0.zip
ln -s $CWD/*libtermkey-0.22.tar.gz build/_deps/libtermkey-0.22.tar.gz
cmake -S . -B build -D CMAKE_BUILD_TYPE=Release \
diff --git a/development/textadept/textadept.info b/development/textadept/textadept.info
index 904460a663..e1a3e26a0f 100644
--- a/development/textadept/textadept.info
+++ b/development/textadept/textadept.info
@@ -1,7 +1,7 @@
PRGNAM="textadept"
-VERSION="12.3"
+VERSION="12.4"
HOMEPAGE="https://foicica.com/textadept/"
-DOWNLOAD="https://github.com/orbitalquark/textadept/archive/textadept_12.3/textadept-textadept_12.3.tar.gz \
+DOWNLOAD="https://github.com/orbitalquark/textadept/archive/textadept_12.4/textadept-textadept_12.4.tar.gz \
https://github.com/ThomasDickey/cdk-snapshots/archive/refs/tags/t20200923.tar.gz \
https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz \
https://www.scintilla.org/lexilla510.tgz \
@@ -11,11 +11,11 @@ DOWNLOAD="https://github.com/orbitalquark/textadept/archive/textadept_12.3/texta
https://prdownloads.sourceforge.net/pdcurses/PDCurses-3.9.zip \
https://github.com/orbitalquark/lua-std-regex/archive/1.0.zip \
https://github.com/orbitalquark/scinterm/archive/scinterm_5.0.zip \
- https://www.scintilla.org/scintilla541.tgz \
- https://github.com/orbitalquark/scintillua/archive/48a6fc9511ec67993e43ac7f5a33efc616b7ea32.zip \
+ https://www.scintilla.org/scintilla550.tgz \
+ https://github.com/orbitalquark/scintillua/archive/scintillua_6.3.zip \
https://github.com/itay-grudev/SingleApplication/archive/refs/tags/v3.4.0.zip \
https://www.leonerd.org.uk/code/libtermkey/libtermkey-0.22.tar.gz"
-MD5SUM="27020397bbe264b44e7fe96ba8177b7b \
+MD5SUM="4b7ac0d08f5aa001aa8275de19adb27c \
0908cb133f473506a40807c0204a960a \
d718cd5a59438be666d1575855be72c3 \
210fab20f43c7d77af7249fd50c2cdc1 \
@@ -25,8 +25,8 @@ MD5SUM="27020397bbe264b44e7fe96ba8177b7b \
06d657aec0e655d5a335c5a5dc888ef3 \
c3314ca8c5be471888342efeee3a46d2 \
dd7c1f88dd42ae5f2113ba5fe0df2561 \
- d0d5b7944907b7eae125f132b17a80e8 \
- 88ebd6a8c79685c1d6339357faccc76e \
+ 972f2fa44a886b19c62c779f458260e7 \
+ 5ab1205f426f06f5fe7a67b692cf0bb1 \
93b78904c173f13b88ce1398f8d8e576 \
08bf514d59660391c3a21b3977a16c8c"
DOWNLOAD_x86_64=""
diff --git a/development/vscode-bin/vscode-bin.SlackBuild b/development/vscode-bin/vscode-bin.SlackBuild
index c543e3cce1..7d8cb0f553 100644
--- a/development/vscode-bin/vscode-bin.SlackBuild
+++ b/development/vscode-bin/vscode-bin.SlackBuild
@@ -26,8 +26,8 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=vscode-bin
SRCNAM=code-stable
-VERSION=${VERSION:-1.88.0}
-SRCVER=1712150767
+VERSION=${VERSION:-1.89.0}
+SRCVER=1714529314
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/development/vscode-bin/vscode-bin.info b/development/vscode-bin/vscode-bin.info
index 47c077e1e1..1179b669b2 100644
--- a/development/vscode-bin/vscode-bin.info
+++ b/development/vscode-bin/vscode-bin.info
@@ -1,10 +1,10 @@
PRGNAM="vscode-bin"
-VERSION="1.88.0"
+VERSION="1.89.0"
HOMEPAGE="https://code.visualstudio.com/"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://vscode.download.prss.microsoft.com/dbazure/download/stable/5c3e652f63e798a5ac2f31ffd0d863669328dc4c/code-stable-x64-1712150767.tar.gz"
-MD5SUM_x86_64="0caa975f650fbb425af202bfcfa15113"
+DOWNLOAD_x86_64="https://vscode.download.prss.microsoft.com/dbazure/download/stable/b58957e67ee1e712cebf466b995adf4c5307b2bd/code-stable-x64-1714529314.tar.gz"
+MD5SUM_x86_64="dfdead89eb48f10c796cf9ee97cfe57f"
REQUIRES=""
MAINTAINER="Willy Sudiarto Raharjo"
EMAIL="willysr@slackbuilds.org"
diff --git a/development/whisper.cpp/whisper.cpp.SlackBuild b/development/whisper.cpp/whisper.cpp.SlackBuild
index 078334ebc6..3e0abaa2e2 100644
--- a/development/whisper.cpp/whisper.cpp.SlackBuild
+++ b/development/whisper.cpp/whisper.cpp.SlackBuild
@@ -92,6 +92,7 @@ pwd
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DWHISPER_OPENVINO=ON \
+ -DWHISPER_OPENBLAS=ON \
-Wno-dev \
-DCMAKE_BUILD_TYPE=Release ..
make
diff --git a/development/whisper.cpp/whisper.cpp.info b/development/whisper.cpp/whisper.cpp.info
index 3ba6af4afb..50c19d2593 100644
--- a/development/whisper.cpp/whisper.cpp.info
+++ b/development/whisper.cpp/whisper.cpp.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/ggerganov/whisper.cpp/archive/v1.5.5/whisper.cpp-1.
MD5SUM="a4c1d8283381a789c679d0b274ec6c64"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="openvino"
+REQUIRES="openvino OpenBLAS"
MAINTAINER="Johannes Schoepfer"
EMAIL="slackbuilds@schoepfer.info"
diff --git a/games/Mindustry/Mindustry.SlackBuild b/games/Mindustry/Mindustry.SlackBuild
index 37e77316d5..cb88e69d20 100644
--- a/games/Mindustry/Mindustry.SlackBuild
+++ b/games/Mindustry/Mindustry.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=Mindustry
VERSION=${VERSION:-146}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
SERVER=${SERVER:-yes}
@@ -64,23 +64,12 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION 2>/dev/null
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-./gradlew --no-daemon dist -Pbuildversion=146 desktop:dist
mkdir -p $PKG/usr/share/{$PRGNAM,applications} \
$PKG/usr/games
-cp -a desktop/build/libs/$PRGNAM.jar \
+install -m 644 $CWD/$PRGNAM.jar \
$PKG/usr/share/$PRGNAM
-cp -a core/assets/icons/icon_64.png \
+install -m 644 $CWD/$PRGNAM.png \
$PKG/usr/share/$PRGNAM/$PRGNAM.png
# Create destop entry
@@ -105,8 +94,7 @@ EOF
chmod 755 $PKG/usr/games/$PRGNAM
if [ "$SERVER" = "yes" ]; then
- ./gradlew --no-daemon dist -Pbuildversion=146 server:dist
- cp -a server/build/libs/server-release.jar \
+ install -m 644 $CWD/server-release.jar \
$PKG/usr/share/$PRGNAM/$PRGNAM-server.jar
# Create destop entry
cat > $PKG/usr/share/applications/$PRGNAM-server.desktop <<EOF
@@ -131,7 +119,6 @@ EOF
fi
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a *.md LICENSE* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/games/Mindustry/Mindustry.info b/games/Mindustry/Mindustry.info
index f7349a2884..653ea3cbb9 100644
--- a/games/Mindustry/Mindustry.info
+++ b/games/Mindustry/Mindustry.info
@@ -3,8 +3,10 @@ VERSION="146"
HOMEPAGE="https://mindustrygame.github.io/"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/Anuken/Mindustry/archive/v146/Mindustry-146.tar.gz"
-MD5SUM_x86_64="9da9f917ec9057d9e3b38134f3897478"
+DOWNLOAD_x86_64="https://github.com/Anuken/Mindustry/releases/download/v146/Mindustry.jar \
+ https://github.com/Anuken/Mindustry/releases/download/v146/server-release.jar"
+MD5SUM_x86_64="26193b0d3bad4bc84e044cce19a456d7 \
+ 7ddf0531d6abc46b4b8c978860179020"
REQUIRES="zulu-openjdk17"
MAINTAINER="Yth - Arnaud"
EMAIL="yth@ythogtha.org"
diff --git a/games/Mindustry/Mindustry.png b/games/Mindustry/Mindustry.png
new file mode 100644
index 0000000000..a67eae01f3
--- /dev/null
+++ b/games/Mindustry/Mindustry.png
Binary files differ
diff --git a/games/PrismLauncher/PrismLauncher.SlackBuild b/games/PrismLauncher/PrismLauncher.SlackBuild
index 09a660bd7f..4a4aabc117 100644
--- a/games/PrismLauncher/PrismLauncher.SlackBuild
+++ b/games/PrismLauncher/PrismLauncher.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=PrismLauncher
-VERSION=${VERSION:-8.2}
+VERSION=${VERSION:-8.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/games/PrismLauncher/PrismLauncher.info b/games/PrismLauncher/PrismLauncher.info
index d68f250a41..1505c79f56 100644
--- a/games/PrismLauncher/PrismLauncher.info
+++ b/games/PrismLauncher/PrismLauncher.info
@@ -1,8 +1,8 @@
PRGNAM="PrismLauncher"
-VERSION="8.2"
+VERSION="8.3"
HOMEPAGE="https://prismlauncher.org"
-DOWNLOAD="https://github.com/PrismLauncher/PrismLauncher/releases/download/8.2/PrismLauncher-8.2.tar.gz"
-MD5SUM="2455aec61b37898e21c3ea23498593c7"
+DOWNLOAD="https://github.com/PrismLauncher/PrismLauncher/releases/download/8.3/PrismLauncher-8.3.tar.gz"
+MD5SUM="6e3c44ebc64b2c2f6f9489185b021d57"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="OpenJDK17 scdoc"
diff --git a/games/PrismLauncher/README b/games/PrismLauncher/README
index 1c39a4cf14..9abac1f587 100644
--- a/games/PrismLauncher/README
+++ b/games/PrismLauncher/README
@@ -8,8 +8,13 @@ A Microsoft or Mojang account that owns Minecraft is required to
download and play the game through PrismLauncher.
zulu-openjdk17 can be used instead of OpenJDK17, if one wishes to do
-so. If you plan on using a version of Minecraft that is on version
-1.16.5 or older, you will also have to install either openjdk8 or
-zulu-openjdk8. If you have multiple versions of Java installed on your
+so. Other versions of Java may be needed to run different versions of
+Minecraft.
+
+1.20.5 or newer: zulu-openjdk21
+1.17 to 1.20.4: OpenJDK17 or zulu-openjdk17
+1.16 or older: openjdk8 or zulu-openjdk8
+
+If you have multiple versions of Java installed on your
system, make sure that your JAVA_HOME environment variable is pointed
to OpenJDK17 when building PrismLauncher.
diff --git a/games/ags/ags.SlackBuild b/games/ags/ags.SlackBuild
index ab08d344b7..1ab3530198 100644
--- a/games/ags/ags.SlackBuild
+++ b/games/ags/ags.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ags
-VERSION=${VERSION:-3.6.1.23}
+VERSION=${VERSION:-3.6.1.24}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/games/ags/ags.info b/games/ags/ags.info
index f094e76463..18fe5ee3cf 100644
--- a/games/ags/ags.info
+++ b/games/ags/ags.info
@@ -1,8 +1,8 @@
PRGNAM="ags"
-VERSION="3.6.1.23"
+VERSION="3.6.1.24"
HOMEPAGE="https://github.com/adventuregamestudio/ags"
-DOWNLOAD="https://github.com/adventuregamestudio/ags/archive/v3.6.1.23/ags-3.6.1.23.tar.gz"
-MD5SUM="a69283fea676a89fdc810519932857ca"
+DOWNLOAD="https://github.com/adventuregamestudio/ags/archive/v3.6.1.24/ags-3.6.1.24.tar.gz"
+MD5SUM="db1d9a58de8d0f17fb97ee9ff4734c08"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="SDL2_sound"
diff --git a/games/ddnet/ddnet.SlackBuild b/games/ddnet/ddnet.SlackBuild
index 9c0505f297..4f29fbef88 100644
--- a/games/ddnet/ddnet.SlackBuild
+++ b/games/ddnet/ddnet.SlackBuild
@@ -28,7 +28,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ddnet
SRCNAM=DDNet
-VERSION=${VERSION:-18.1}
+VERSION=${VERSION:-18.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -73,6 +73,9 @@ if [ -z "$ARCH" ]; then
esac
fi
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$PKGVER-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/games/ddnet/ddnet.info b/games/ddnet/ddnet.info
index 718eaa839f..069312d0bb 100644
--- a/games/ddnet/ddnet.info
+++ b/games/ddnet/ddnet.info
@@ -1,7 +1,7 @@
PRGNAM="ddnet"
-VERSION="18.1"
+VERSION="18.2"
HOMEPAGE="https://ddnet.org/"
-DOWNLOAD="https://ddnet.org/downloads/DDNet-18.1.tar.xz \
+DOWNLOAD="https://ddnet.org/downloads/DDNet-18.2.tar.xz \
https://static.crates.io/crates/cc/cc-1.0.73.crate \
https://static.crates.io/crates/cxx/cxx-1.0.71.crate \
https://static.crates.io/crates/cxxbridge-flags/cxxbridge-flags-1.0.71.crate \
@@ -11,7 +11,7 @@ DOWNLOAD="https://ddnet.org/downloads/DDNet-18.1.tar.xz \
https://static.crates.io/crates/quote/quote-1.0.20.crate \
https://static.crates.io/crates/syn/syn-1.0.98.crate \
https://static.crates.io/crates/unicode-ident/unicode-ident-1.0.1.crate"
-MD5SUM="248c4beb3f27b5f75c209e81cbbd563b \
+MD5SUM="4da22b3f95ba0c01b0b85e36dd03d604 \
8e3a4d0980acef2c4e74485a45de29a9 \
fda5c633e604f175e07829961763f18f \
a8b59a9c52b44b92ec73248f3c85c608 \
diff --git a/games/dwarffortress/dwarffortress.SlackBuild b/games/dwarffortress/dwarffortress.SlackBuild
index ff95029f94..69cc222af2 100644
--- a/games/dwarffortress/dwarffortress.SlackBuild
+++ b/games/dwarffortress/dwarffortress.SlackBuild
@@ -21,12 +21,10 @@
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
cd $(dirname $0) ; CWD=$(pwd)
-
PRGNAM=dwarffortress
-VERSION=${VERSION:-0.50.11}
-SRCNAM=df_50_11_linux
+VERSION=${VERSION:-0.50.13}
+SRCNAM=df_50_13_linux
SRCDIR=df_linux
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -45,14 +43,6 @@ if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
exit 0
fi
-if [ "$ARCH" = "i586" ]; then
- BITFLAG="32"
-elif [ "$ARCH" = "x86_64" ]; then
- BITFLAG=""
-else
- BITFLAG=""
-fi
-
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -65,7 +55,7 @@ cd $PKG
mkdir opt opt/$PRGNAM
cd opt/$PRGNAM
-tar pxvf $CWD/$SRCNAM$BITFLAG.tar.bz2
+tar pxvf $CWD/$SRCNAM.tar.bz2
chown -R root:root .
chmod -R 755 .
diff --git a/games/dwarffortress/dwarffortress.info b/games/dwarffortress/dwarffortress.info
index 0f70dfdd1c..16bc9356e3 100644
--- a/games/dwarffortress/dwarffortress.info
+++ b/games/dwarffortress/dwarffortress.info
@@ -1,8 +1,8 @@
PRGNAM="dwarffortress"
-VERSION="0.50.11"
+VERSION="0.50.13"
HOMEPAGE="https://bay12games.com/dwarves/"
-DOWNLOAD="https://bay12games.com/dwarves/df_50_11_linux.tar.bz2"
-MD5SUM="2974f9f6c563547b4fd40a65f9919593"
+DOWNLOAD="https://bay12games.com/dwarves/df_50_13_linux.tar.bz2"
+MD5SUM="1f8f3eb59d41ed86dba8dc08cb38f4d1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/games/dwarffortress/slack-desc b/games/dwarffortress/slack-desc
index 8f8e6d21fb..e0dace8895 100644
--- a/games/dwarffortress/slack-desc
+++ b/games/dwarffortress/slack-desc
@@ -8,7 +8,7 @@
|-----handy-ruler------------------------------------------------------|
dwarffortress: dwarffortress (A single-player fantasy simulator adventure game)
dwarffortress:
-dwarffortress: Dwarf Fortress is a complex sandbox game created by Tarn Adams of
+dwarffortress: Dwarf Fortress is a complex sandbox game created by Tarn Adams of
dwarffortress: Bay 12 Games. The graphics are ASCII with various tilesets available.
dwarffortress: In Fortress Mode, the player helps their dwarves survive by declaring
dwarffortress: areas to collect food, create workshops, create defenses, etc.
diff --git a/games/freeciv/freeciv.SlackBuild b/games/freeciv/freeciv.SlackBuild
index a5bf1ae724..30d0c9da5e 100644
--- a/games/freeciv/freeciv.SlackBuild
+++ b/games/freeciv/freeciv.SlackBuild
@@ -30,8 +30,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=freeciv
-VERSION=${VERSION:-3.1.0}
-SRCVERSION=${SRCVERSION:-3.1.0}
+VERSION=${VERSION:-3.1.1}
+SRCVERSION=${SRCVERSION:-3.1.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/games/freeciv/freeciv.info b/games/freeciv/freeciv.info
index b57bd89161..18fd0b06ba 100644
--- a/games/freeciv/freeciv.info
+++ b/games/freeciv/freeciv.info
@@ -1,8 +1,8 @@
PRGNAM="freeciv"
-VERSION="3.1.0"
+VERSION="3.1.1"
HOMEPAGE="http://www.freeciv.org"
-DOWNLOAD="http://files.freeciv.org/stable/freeciv-3.1.0.tar.xz"
-MD5SUM="c6d2a68f74f2fdecf7a793ee926129a4"
+DOWNLOAD="http://files.freeciv.org/stable/freeciv-3.1.1.tar.xz"
+MD5SUM="84cc920acf453fafad95ea16fa46a924"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/games/gzdoom/README b/games/gzdoom/README
index c9017e9818..30176aa78d 100644
--- a/games/gzdoom/README
+++ b/games/gzdoom/README
@@ -10,9 +10,3 @@ your system, try installing gzdoom-legacy instead. Note that gzdoom
and gzdoom-legacy conflict: only install one or the other.
See README_SBo.txt for optional runtime dependencies.
-
-Note to 32-bit users: gzdoom requires the SSE2 extension. If you
-get "illegal instruction" errors when trying to run gzdoom, your
-CPU doesn't have SSE2, and you should use gzdoom-legacy instead.
-At this point (2022), there aren't that many non-SSE2 x86 CPUs still
-in service, so probably this won't be a problem for you.
diff --git a/games/gzdoom/gzdoom.info b/games/gzdoom/gzdoom.info
index 96cbbf7bc5..83f1c39a2e 100644
--- a/games/gzdoom/gzdoom.info
+++ b/games/gzdoom/gzdoom.info
@@ -1,10 +1,10 @@
PRGNAM="gzdoom"
VERSION="4.10.0"
HOMEPAGE="http://gzdoom.drdteam.org/"
-DOWNLOAD="https://github.com/coelckers/gzdoom/archive/g4.10.0/gzdoom-g4.10.0.tar.gz"
-MD5SUM="54d8348650b8693fb545b20538e019ad"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/coelckers/gzdoom/archive/g4.10.0/gzdoom-g4.10.0.tar.gz"
+MD5SUM_x86_64="54d8348650b8693fb545b20538e019ad"
REQUIRES="zmusic"
MAINTAINER="B. Watson"
EMAIL="urchlay@slackware.uk"
diff --git a/games/lbreakouthd/lbreakouthd.SlackBuild b/games/lbreakouthd/lbreakouthd.SlackBuild
index 99f74b7cf2..00fb105958 100644
--- a/games/lbreakouthd/lbreakouthd.SlackBuild
+++ b/games/lbreakouthd/lbreakouthd.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=lbreakouthd
-VERSION=${VERSION:-1.1.7}
+VERSION=${VERSION:-1.1.8}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/games/lbreakouthd/lbreakouthd.info b/games/lbreakouthd/lbreakouthd.info
index b075b57837..447090c0cb 100644
--- a/games/lbreakouthd/lbreakouthd.info
+++ b/games/lbreakouthd/lbreakouthd.info
@@ -1,8 +1,8 @@
PRGNAM="lbreakouthd"
-VERSION="1.1.7"
+VERSION="1.1.8"
HOMEPAGE="https://lgames.sourceforge.io/LBreakoutHD/"
-DOWNLOAD="https://sourceforge.net/projects/lgames/files/lbreakouthd/lbreakouthd-1.1.7.tar.gz"
-MD5SUM="2525f94abb7383a4067b84f1ca44b92b"
+DOWNLOAD="https://sourceforge.net/projects/lgames/files/lbreakouthd/lbreakouthd-1.1.8.tar.gz"
+MD5SUM="d0af6085ca948059cb46145285c57b18"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/games/melonds/melonds.info b/games/melonds/melonds.info
index 555f3cb883..70c8d2495a 100644
--- a/games/melonds/melonds.info
+++ b/games/melonds/melonds.info
@@ -1,10 +1,10 @@
PRGNAM="melonds"
VERSION="0.9.5"
HOMEPAGE="https://melonds.kuribo64.net"
-DOWNLOAD="https://github.com/melonDS-emu/melonDS/archive/0.9.5/melonDS-0.9.5.tar.gz"
-MD5SUM="23ee3637af072854371675b9e61ab96d"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/melonDS-emu/melonDS/archive/0.9.5/melonDS-0.9.5.tar.gz"
+MD5SUM_x86_64="23ee3637af072854371675b9e61ab96d"
REQUIRES="libslirp"
MAINTAINER="Steven Voges"
EMAIL="svoges.sbo@gmail.com"
diff --git a/games/openttd/openttd.SlackBuild b/games/openttd/openttd.SlackBuild
index f7e8f0912e..dcf0ae6f50 100644
--- a/games/openttd/openttd.SlackBuild
+++ b/games/openttd/openttd.SlackBuild
@@ -27,7 +27,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=openttd
-VERSION=${VERSION:-13.4}
+VERSION=${VERSION:-14.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/games/openttd/openttd.info b/games/openttd/openttd.info
index 7ba1d9ef92..88fd22d9c2 100644
--- a/games/openttd/openttd.info
+++ b/games/openttd/openttd.info
@@ -1,11 +1,11 @@
PRGNAM="openttd"
-VERSION="13.4"
+VERSION="14.0"
HOMEPAGE="http://www.openttd.org"
-DOWNLOAD="https://cdn.openttd.org/openttd-releases/13.4/openttd-13.4-source.tar.xz \
+DOWNLOAD="https://cdn.openttd.org/openttd-releases/14.0/openttd-14.0-source.tar.xz \
https://cdn.openttd.org/opengfx-releases/7.1/opengfx-7.1-all.zip \
https://cdn.openttd.org/openmsx-releases/0.4.2/openmsx-0.4.2-all.zip \
https://cdn.openttd.org/opensfx-releases/1.0.3/opensfx-1.0.3-all.zip"
-MD5SUM="ed42437a6f33e83b3e27f9ebd988efc4 \
+MD5SUM="f8244406ab5a1efcdf4fe8d173516a5a \
f3cd9de89db7caf37a2e5c4c70fb1304 \
7f853e6b6e673268165a09265ed284b0 \
4cd2a4f8b2e160f8754736beb4d31ccd"
diff --git a/games/planetblupi/planetblupi.SlackBuild b/games/planetblupi/planetblupi.SlackBuild
index 50fba689fc..3dcafa93b7 100644
--- a/games/planetblupi/planetblupi.SlackBuild
+++ b/games/planetblupi/planetblupi.SlackBuild
@@ -23,7 +23,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=planetblupi
-VERSION=${VERSION:-1.15.0}
+VERSION=${VERSION:-1.15.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/games/planetblupi/planetblupi.info b/games/planetblupi/planetblupi.info
index 38db5bb805..3b8b04b920 100644
--- a/games/planetblupi/planetblupi.info
+++ b/games/planetblupi/planetblupi.info
@@ -1,9 +1,9 @@
PRGNAM="planetblupi"
-VERSION="1.15.0"
+VERSION="1.15.1"
HOMEPAGE="http://www.blupi.org/"
-DOWNLOAD="https://github.com/blupi-games/planetblupi/archive/v1.15.0/planetblupi-1.15.0.tar.gz \
+DOWNLOAD="https://github.com/blupi-games/planetblupi/archive/v1.15.1/planetblupi-1.15.1.tar.gz \
https://github.com/libsdl-org/SDL_ttf/archive/release-2.20.2/SDL_ttf-release-2.20.2.tar.gz"
-MD5SUM="25820360b1f778ff8232c63a6cc4e337 \
+MD5SUM="030fa1514b0e2fe2088aae9b9023e4f7 \
b584f806d65e9c5ced69b99b12828bee"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/games/quakespasm/quakespasm.SlackBuild b/games/quakespasm/quakespasm.SlackBuild
index 8139ffc37a..0e4695cd94 100644
--- a/games/quakespasm/quakespasm.SlackBuild
+++ b/games/quakespasm/quakespasm.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for quakespasm
-# Copyright 2018-2023 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
+# Copyright 2018-2024 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=quakespasm
-VERSION=${VERSION:-0.95.1}
+VERSION=${VERSION:-0.96.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +38,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/games/quakespasm/quakespasm.info b/games/quakespasm/quakespasm.info
index 69473df54d..3b6dc64613 100644
--- a/games/quakespasm/quakespasm.info
+++ b/games/quakespasm/quakespasm.info
@@ -1,8 +1,8 @@
PRGNAM="quakespasm"
-VERSION="0.95.1"
+VERSION="0.96.1"
HOMEPAGE="https://quakespasm.sourceforge.net"
-DOWNLOAD="https://downloads.sourceforge.net/quakespasm/quakespasm-0.95.1.tar.gz"
-MD5SUM="5445eaab666b1a8c229c4900dc9f8542"
+DOWNLOAD="https://downloads.sourceforge.net/quakespasm/quakespasm-0.96.1.tar.gz"
+MD5SUM="37ea60a01b5cc852ab7635df89496301"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/games/wesnoth/wesnoth.SlackBuild b/games/wesnoth/wesnoth.SlackBuild
index 3af210423e..710a0892b0 100644
--- a/games/wesnoth/wesnoth.SlackBuild
+++ b/games/wesnoth/wesnoth.SlackBuild
@@ -29,7 +29,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=wesnoth
-VERSION=${VERSION:-1.16.11}
+VERSION=${VERSION:-1.18.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/games/wesnoth/wesnoth.info b/games/wesnoth/wesnoth.info
index c64864bc2c..c25de4dc25 100644
--- a/games/wesnoth/wesnoth.info
+++ b/games/wesnoth/wesnoth.info
@@ -1,8 +1,8 @@
PRGNAM="wesnoth"
-VERSION="1.16.11"
+VERSION="1.18.0"
HOMEPAGE="http://www.wesnoth.org"
-DOWNLOAD="http://downloads.sourceforge.net/wesnoth/wesnoth-1.16.11.tar.bz2"
-MD5SUM="926fce1f3b89e9cf409437a4b78802e6"
+DOWNLOAD="http://downloads.sourceforge.net/wesnoth/wesnoth-1.18.0.tar.bz2"
+MD5SUM="b475028bebe0168f46d5a452c4bc1c05"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/games/xemu/xemu.info b/games/xemu/xemu.info
index 82ea280ea5..a2cbec71ae 100644
--- a/games/xemu/xemu.info
+++ b/games/xemu/xemu.info
@@ -1,7 +1,9 @@
PRGNAM="xemu"
VERSION="0.7.86"
HOMEPAGE="https://xemu.app"
-DOWNLOAD="https://github.com/mborgerson/xemu/archive/v0.7.86/xemu-0.7.86.tar.gz \
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/mborgerson/xemu/archive/v0.7.86/xemu-0.7.86.tar.gz \
https://gitlab.com/qemu-project/berkeley-softfloat-3/-/archive/b64af41c3276f97f0e181920400ee056b9c88037/berkeley-softfloat-3-b64af41c3276f97f0e181920400ee056b9c88037.tar.gz \
https://gitlab.com/qemu-project/berkeley-testfloat-3/-/archive/5a59dcec19327396a011a17fd924aed4fec416b3/berkeley-testfloat-3-5a59dcec19327396a011a17fd924aed4fec416b3.tar.gz \
https://github.com/mborgerson/genconfig/archive/44bab849ce87fceafd74703bfcf2b61a1a1b738f/genconfig-44bab849ce87fceafd74703bfcf2b61a1a1b738f.tar.gz \
@@ -9,7 +11,7 @@ DOWNLOAD="https://github.com/mborgerson/xemu/archive/v0.7.86/xemu-0.7.86.tar.gz
https://github.com/epezent/implot/archive/b47c8bacdbc78bc521691f70666f13924bb522ab/implot-b47c8bacdbc78bc521691f70666f13924bb522ab.tar.gz \
https://gitlab.com/qemu-project/keycodemapdb/-/archive/d21009b1c9f94b740ea66be8e48a1d8ad8124023/keycodemapdb-d21009b1c9f94b740ea66be8e48a1d8ad8124023.tar.gz \
https://github.com/abaire/nv2a_vsh_cpu/archive/d5a7308809a80e1b01b5c016127d4f1b91c8673b/nv2a_vsh_cpu-d5a7308809a80e1b01b5c016127d4f1b91c8673b.tar.gz"
-MD5SUM="f5d4863774ec134b7a7eac371e5b45b6 \
+MD5SUM_x86_64="f5d4863774ec134b7a7eac371e5b45b6 \
7fa778ee82a15c09162b66564455c01e \
5627edcf7c64f95f50925784c806e4d9 \
f55989cc5fd27ee7cbf8addcec370275 \
@@ -17,8 +19,6 @@ MD5SUM="f5d4863774ec134b7a7eac371e5b45b6 \
bc067af8983f58ff4fb492a5fc79dae6 \
109a1dc5d8c7ed5745a78e78a5cfd7f2 \
cfb9f8a87e1b685ca10fe4e0992c76fe"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
REQUIRES="libslirp tomlplusplus"
MAINTAINER="Steven Voges"
EMAIL="svoges.sbo@gmail.com"
diff --git a/games/zsnes/zsnes.info b/games/zsnes/zsnes.info
index 4677393f02..facf966b21 100644
--- a/games/zsnes/zsnes.info
+++ b/games/zsnes/zsnes.info
@@ -3,7 +3,7 @@ VERSION="2.0.12"
HOMEPAGE="https://github.com/xyproto/zsnes"
DOWNLOAD="https://github.com/xyproto/zsnes/archive/2.0.12/zsnes-2.0.12.tar.gz"
MD5SUM="6c28a252c887f1d697c1baa960a1db98"
-DOWNLOAD_x86_64=""
+DOWNLOAD_x86_64="UNSUPPORTED"
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
diff --git a/gis/gpxsee/doinst.sh b/gis/gpxsee/doinst.sh
index daaf27f812..43c30eaca1 100644
--- a/gis/gpxsee/doinst.sh
+++ b/gis/gpxsee/doinst.sh
@@ -5,3 +5,10 @@ fi
if [ -x /usr/bin/update-mime-database ]; then
/usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+
diff --git a/gis/gpxsee/gpxsee.SlackBuild b/gis/gpxsee/gpxsee.SlackBuild
index be7b61c536..435c3c1ca6 100644
--- a/gis/gpxsee/gpxsee.SlackBuild
+++ b/gis/gpxsee/gpxsee.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=gpxsee
-VERSION=${VERSION:-13.18}
+VERSION=${VERSION:-13.19}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/gis/gpxsee/gpxsee.info b/gis/gpxsee/gpxsee.info
index 2fca84e828..d7051c0ef0 100644
--- a/gis/gpxsee/gpxsee.info
+++ b/gis/gpxsee/gpxsee.info
@@ -1,8 +1,8 @@
PRGNAM="gpxsee"
-VERSION="13.18"
+VERSION="13.19"
HOMEPAGE="https://www.gpxsee.org/"
-DOWNLOAD="https://github.com/tumic0/GPXSee/archive/13.18/GPXSee-13.18.tar.gz"
-MD5SUM="edd35b435e1d1c1b6f89688927d56248"
+DOWNLOAD="https://github.com/tumic0/GPXSee/archive/13.19/GPXSee-13.19.tar.gz"
+MD5SUM="f7d73349bac597b58ca89a282b7e9e94"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/gis/osgEarth/osgEarth.info b/gis/osgEarth/osgEarth.info
index e46300338f..a5577fa633 100644
--- a/gis/osgEarth/osgEarth.info
+++ b/gis/osgEarth/osgEarth.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://sourceforge.net/projects/slackbuildsdirectlinks/files/osgEarth
MD5SUM="58de6c17ac7643a3ba30d978dc6f0e1b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="fmt gdal OpenSceneGraph protobuf3 rocksdb spdlog"
+REQUIRES="gdal OpenSceneGraph protobuf3 rocksdb spdlog"
MAINTAINER="Christoph Willing"
EMAIL="chris.willing@linux.com"
diff --git a/graphics/FSPViewer/FSPViewer.SlackBuild b/graphics/FSPViewer/FSPViewer.SlackBuild
index c42064c0f9..f55f8876f9 100644
--- a/graphics/FSPViewer/FSPViewer.SlackBuild
+++ b/graphics/FSPViewer/FSPViewer.SlackBuild
@@ -61,7 +61,7 @@ tar xf $CWD/$PRGNAM-$VERSION-$SRCSUFFIX.tar.gz -C $PKG
mkdir -p $PKG/usr/bin
mv $PKG/FSPViewer$SRCSUFFIX $PKG/usr/bin
-strip --strip-unneeded $/usr/bin/FSPViewer$SRCSUFFIX
+strip --strip-unneeded $PKG/usr/bin/FSPViewer$SRCSUFFIX
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/graphics/graphviz/graphviz.SlackBuild b/graphics/graphviz/graphviz.SlackBuild
index 40849f7daf..68c4d53abe 100644
--- a/graphics/graphviz/graphviz.SlackBuild
+++ b/graphics/graphviz/graphviz.SlackBuild
@@ -28,7 +28,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=graphviz
-VERSION=${VERSION:-10.0.1}
+VERSION=${VERSION:-11.0.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/graphics/graphviz/graphviz.info b/graphics/graphviz/graphviz.info
index 2418064f2d..97a5a45696 100644
--- a/graphics/graphviz/graphviz.info
+++ b/graphics/graphviz/graphviz.info
@@ -1,8 +1,8 @@
PRGNAM="graphviz"
-VERSION="10.0.1"
+VERSION="11.0.0"
HOMEPAGE="https://www.graphviz.org/"
-DOWNLOAD="https://gitlab.com/graphviz/graphviz/-/archive/10.0.1/graphviz-10.0.1.tar.bz2"
-MD5SUM="5d343d0ba08dc11624d3961af2b4755c"
+DOWNLOAD="https://gitlab.com/graphviz/graphviz/-/archive/11.0.0/graphviz-11.0.0.tar.bz2"
+MD5SUM="cbc948bb249ff4a26cd3f0ef35938a98"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/graphics/hugin/boost-1.85.0-patch b/graphics/hugin/boost-1.85.0-patch
deleted file mode 100644
index d2909ded9b..0000000000
--- a/graphics/hugin/boost-1.85.0-patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- src/hugin_base/hugin_utils/filesystem.h.old 2023-05-08 20:19:14.000000000 +0200
-+++ src/hugin_base/hugin_utils/filesystem.h 2024-04-21 10:00:22.770138350 +0200
-@@ -64,6 +64,12 @@
- #endif
- #include <boost/filesystem.hpp>
- namespace fs = boost::filesystem;
-- #define OVERWRITE_EXISTING boost::filesystem::copy_option::overwrite_if_exists
-+ #if BOOST_VERSION>=107400
-+ // in Boost 1.74 and later filesystem::copy_option is deprecated
-+ // use filesystem::copy_options instead
-+ #define OVERWRITE_EXISTING boost::filesystem::copy_options::overwrite_existing
-+ #else
-+ #define OVERWRITE_EXISTING boost::filesystem::copy_option::overwrite_if_exists
-+ #endif
- #endif
- #endif // _HUGIN_UTILS_FILESYSTEM_H
diff --git a/graphics/hugin/boost-1.85.0-patch.gz b/graphics/hugin/boost-1.85.0-patch.gz
new file mode 100644
index 0000000000..d03ca9fd5e
--- /dev/null
+++ b/graphics/hugin/boost-1.85.0-patch.gz
Binary files differ
diff --git a/graphics/hugin/hugin.SlackBuild b/graphics/hugin/hugin.SlackBuild
index cd74672bfe..e90b451e18 100644
--- a/graphics/hugin/hugin.SlackBuild
+++ b/graphics/hugin/hugin.SlackBuild
@@ -35,7 +35,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=hugin
VERSION=${VERSION:-2023.0.0}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -79,7 +79,7 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION
-patch -p0 <$CWD/boost-1.85.0-patch
+zcat $CWD/boost-1.85.0-patch | patch -p0
chown -R root:root .
find -L . \
diff --git a/graphics/ueberzugpp/ueberzugpp.info b/graphics/ueberzugpp/ueberzugpp.info
index 49f1b3a994..0ee4d3f378 100644
--- a/graphics/ueberzugpp/ueberzugpp.info
+++ b/graphics/ueberzugpp/ueberzugpp.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/jstkdng/ueberzugpp/archive/v2.9.4/ueberzugpp-2.9.4.
MD5SUM="7388e482a328d1fdfc655d48576e017b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="CLI11 chafa fmt libsixel nlohmann_json oneTBB range-v3 spdlog vips"
+REQUIRES="CLI11 chafa libsixel nlohmann_json oneTBB range-v3 spdlog vips"
MAINTAINER="xaizek"
EMAIL="xaizek@posteo.net"
diff --git a/graphics/veles/README b/graphics/veles/README
index 67aa361a89..b1b2d4b179 100644
--- a/graphics/veles/README
+++ b/graphics/veles/README
@@ -10,3 +10,5 @@ binary data - all at a glance.
Warning: This SlackBuild requires network access when it runs, meaning
it downloads files from the Internet with root access. YMMV on whether
this is a good idea.
+
+NOTE: Upstream project is now archived
diff --git a/graphics/veles/veles.SlackBuild b/graphics/veles/veles.SlackBuild
index 058d5f6a29..bcaf3c427a 100644
--- a/graphics/veles/veles.SlackBuild
+++ b/graphics/veles/veles.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=veles
VERSION=${VERSION:-2018.05.0.TIF}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -79,6 +79,13 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+export PATH="/opt/rust16/bin:$PATH"
+if [ -z "$LD_LIBRARY_PATH" ]; then
+ export LD_LIBRARY_PATH="/opt/rust16/lib$LIBDIRSUFFIX"
+else
+ export LD_LIBRARY_PATH="/opt/rust16/lib$LIBDIRSUFFIX:$LD_LIBRARY_PATH"
+fi
+
mkdir -p build
cd build
cmake \
diff --git a/graphics/veles/veles.info b/graphics/veles/veles.info
index 5fda33da35..cd8cd095b7 100644
--- a/graphics/veles/veles.info
+++ b/graphics/veles/veles.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/codilime/veles/archive/2018.05.0.TIF/veles-2018.05.
MD5SUM="f10259c5d85700f45e36b629090efed7"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="msgpack-c"
+REQUIRES="msgpack-c rust16"
MAINTAINER="Fernando Lopez Jr."
EMAIL="fernando.lopezjr@gmail.com"
diff --git a/graphics/wine-nine-standalone/wine-nine-standalone.info b/graphics/wine-nine-standalone/wine-nine-standalone.info
index 99c9a530d6..140159575a 100644
--- a/graphics/wine-nine-standalone/wine-nine-standalone.info
+++ b/graphics/wine-nine-standalone/wine-nine-standalone.info
@@ -3,7 +3,7 @@ VERSION="0.8"
HOMEPAGE="https://github.com/iXit/wine-nine-standalone"
DOWNLOAD="https://github.com/iXit/wine-nine-standalone/archive/v0.8/wine-nine-standalone-0.8.tar.gz"
MD5SUM="84c245c029aa88e21a544dd01607d93e"
-DOWNLOAD_x86_64=""
+DOWNLOAD_x86_64="UNSUPPORTED"
MD5SUM_x86_64=""
REQUIRES="wine"
MAINTAINER="Hunter Sezen"
diff --git a/ham/cm256cc/cm256cc.SlackBuild b/ham/cm256cc/cm256cc.SlackBuild
index c20e2a7004..c341be9e75 100644
--- a/ham/cm256cc/cm256cc.SlackBuild
+++ b/ham/cm256cc/cm256cc.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=cm256cc
-VERSION=${VERSION:-1.1.0}
+VERSION=${VERSION:-1.1.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -71,7 +71,7 @@ mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-unzip $CWD/$PRGNAM-$VERSION.zip
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
diff --git a/ham/cm256cc/cm256cc.info b/ham/cm256cc/cm256cc.info
index 2ff6b319ad..a1073a6aaa 100644
--- a/ham/cm256cc/cm256cc.info
+++ b/ham/cm256cc/cm256cc.info
@@ -1,8 +1,8 @@
PRGNAM="cm256cc"
-VERSION="1.1.0"
+VERSION="1.1.1"
HOMEPAGE="https://github.com/f4exb/cm256cc/"
-DOWNLOAD="https://github.com/f4exb/cm256cc/archive/v1.1.0/cm256cc-1.1.0.zip"
-MD5SUM="0b9b0a5b8eebbee6eb90a31fe96957df"
+DOWNLOAD="https://github.com/f4exb/cm256cc/archive/v1.1.1/cm256cc-1.1.1.tar.gz"
+MD5SUM="d727f0f10cc00e91d9c24d83004b351c"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/ham/dab_lib/dab_lib.SlackBuild b/ham/dab_lib/dab_lib.SlackBuild
index 3d5fc871b4..02071203fb 100644
--- a/ham/dab_lib/dab_lib.SlackBuild
+++ b/ham/dab_lib/dab_lib.SlackBuild
@@ -25,11 +25,11 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=dab_lib
-VERSION=${VERSION:-20231211.815d83fc}
-SRCVERSION=${SRCVERSION:-815d83fcd1b2ffa1289501943c913cc86d6b567b}
+VERSION=${VERSION:-20240428.229149eb}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
+NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -71,9 +71,9 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf dab-cmdline-$SRCVERSION#
-unzip $CWD/dab-cmdline-$SRCVERSION.zip
-cd dab-cmdline-$SRCVERSION/library
+rm -rf dab-cmdline-${VERSION##*.}*
+tar xvf $CWD/dab-cmdline-${VERSION##*.}*.tar.gz
+cd dab-cmdline-${VERSION##*.}*/library
chown -R root:root .
find -L . \
@@ -91,6 +91,7 @@ cd build
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
-DMAN_INSTALL_DIR=/usr/man \
-DCMAKE_BUILD_TYPE=Release ..
+ make $NUMJOBS
make install/strip DESTDIR=$PKG
cd ../..
@@ -98,10 +99,9 @@ cd ../..
[ -d $PKG/usr/lib -a ! -e $PKG/usr/lib$LIBDIRSUFFIX ] && mv $PKG/usr/lib $PKG/usr/lib$LIBDIRSUFFIX
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
+cp \
LICENSE README.md AUTHORS \
$PKG/usr/doc/$PRGNAM-$VERSION
-chmod 0644 $PKG/usr/doc/$PRGNAM-$VERSION/README.md
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/ham/dab_lib/dab_lib.info b/ham/dab_lib/dab_lib.info
index 5b501d25d7..a1a2c14183 100644
--- a/ham/dab_lib/dab_lib.info
+++ b/ham/dab_lib/dab_lib.info
@@ -1,8 +1,8 @@
PRGNAM="dab_lib"
-VERSION="20231211.815d83fc"
+VERSION="20240428.229149eb"
HOMEPAGE="https://github.com/JvanKatwijk/dab-cmdline/"
-DOWNLOAD="https://github.com/JvanKatwijk/dab-cmdline/archive/815d83fc/dab-cmdline-815d83fcd1b2ffa1289501943c913cc86d6b567b.zip"
-MD5SUM="15457cfebfeda63a0619bf6ea170eb8f"
+DOWNLOAD="https://github.com/JvanKatwijk/dab-cmdline/archive/229149eb/dab-cmdline-229149eb421eeb8302ff96005c69b3cdab2cc349.tar.gz"
+MD5SUM="38f5fb46df66f6bf395b0d1a367e1a77"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="faad2"
diff --git a/ham/libsigmf/libsigmf.SlackBuild b/ham/libsigmf/libsigmf.SlackBuild
index 269312c783..2278ca3bb0 100644
--- a/ham/libsigmf/libsigmf.SlackBuild
+++ b/ham/libsigmf/libsigmf.SlackBuild
@@ -25,8 +25,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=libsigmf
-VERSION=${VERSION:-20231212.b9d14e21}
-SRCVERSION=${SRCVERSION:-b9d14e2199bfcd958e16c33612ab35295e527087}
+VERSION=${VERSION:-20240428.299dc8f9}
+SRCVERSION=${SRCVERSION:-299dc8f9725f1733e5cc1ce8a69fbcf7f18a2f58}
VERSION_flatbuffers=${VERSION_flatbuffers:-d8210d5a83faa345046648e520d82b54ea724e35}
VERSION_json=${VERSION_json:-9cca280a4d0ccf0c08f47a99aa71d1b0e52f8d03}
BUILD=${BUILD:-1}
diff --git a/ham/libsigmf/libsigmf.info b/ham/libsigmf/libsigmf.info
index df9b092712..78a17159dc 100644
--- a/ham/libsigmf/libsigmf.info
+++ b/ham/libsigmf/libsigmf.info
@@ -1,10 +1,12 @@
PRGNAM="libsigmf"
-VERSION="20231212.b9d14e21"
+VERSION="20240428.299dc8f9"
HOMEPAGE="https://github.com/f4exb/libsigmf/"
-DOWNLOAD="https://github.com/f4exb/libsigmf/archive/b9d14e21/libsigmf-b9d14e2199bfcd958e16c33612ab35295e527087.zip \
+DOWNLOAD="https://github.com/f4exb/libsigmf/archive/299dc8f9/libsigmf-299dc8f9725f1733e5cc1ce8a69fbcf7f18a2f58.zip \
https://github.com/google/flatbuffers/archive/d8210d5a/flatbuffers-d8210d5a83faa345046648e520d82b54ea724e35.zip \
https://github.com/nlohmann/json/archive/9cca280a/json-9cca280a4d0ccf0c08f47a99aa71d1b0e52f8d03.zip"
-MD5SUM="85fcd782696082c48e1654b050d0ba98 9cd198fc0c93c4cd7bf632eb80a39286 05239fe4145889a732c4d90a180ce4bc"
+MD5SUM="2da9c5db69ed2c0570e7e5d1f2a6f206 \
+ 9cd198fc0c93c4cd7bf632eb80a39286 \
+ 05239fe4145889a732c4d90a180ce4bc"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/ham/mbelib/mbelib.SlackBuild b/ham/mbelib/mbelib.SlackBuild
index 9ae7571738..43890bfeec 100644
--- a/ham/mbelib/mbelib.SlackBuild
+++ b/ham/mbelib/mbelib.SlackBuild
@@ -25,8 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=mbelib
-VERSION=${VERSION:-20231211.9a04ed5c}
-SRCVERSION=${SRCVERSION:-9a04ed5c78176a9965f3d43f7aa1b1f5330e771f}
+VERSION=${VERSION:-20240428.9a04ed5c}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -71,9 +70,9 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$SRCVERSION
-unzip $CWD/$PRGNAM-$SRCVERSION.zip
-cd $PRGNAM-$SRCVERSION
+rm -rf $PRGNAM-${VERSION##*.}*
+tar xvf $CWD/$PRGNAM-${VERSION##*.}*.tar.gz
+cd $PRGNAM-${VERSION##*.}*
chown -R root:root .
find -L . \
diff --git a/ham/mbelib/mbelib.info b/ham/mbelib/mbelib.info
index fc1a97d7bf..06887470b0 100644
--- a/ham/mbelib/mbelib.info
+++ b/ham/mbelib/mbelib.info
@@ -1,8 +1,8 @@
PRGNAM="mbelib"
-VERSION="20231211.9a04ed5c"
+VERSION="20240428.9a04ed5c"
HOMEPAGE="https://github.com/szechyjs/mbelib/"
-DOWNLOAD="https://github.com/szechyjs/mbelib/archive/9a04ed5c/mbelib-9a04ed5c78176a9965f3d43f7aa1b1f5330e771f.zip"
-MD5SUM="7925d70bbf0d0e6607555f3a90d7b10f"
+DOWNLOAD="https://github.com/szechyjs/mbelib/archive/9a04ed5c/mbelib-9a04ed5c78176a9965f3d43f7aa1b1f5330e771f.tar.gz"
+MD5SUM="9c998de63e1dea2f04bcd085177008dc"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/ham/qlog/qlog.SlackBuild b/ham/qlog/qlog.SlackBuild
index 8fc28d502d..829fe4d22a 100644
--- a/ham/qlog/qlog.SlackBuild
+++ b/ham/qlog/qlog.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=qlog
SRCNAM=QLog
-VERSION=${VERSION:-0.34.0}
+VERSION=${VERSION:-0.35.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/ham/qlog/qlog.info b/ham/qlog/qlog.info
index fe742b58bf..2d5827fee5 100644
--- a/ham/qlog/qlog.info
+++ b/ham/qlog/qlog.info
@@ -1,10 +1,10 @@
PRGNAM="qlog"
-VERSION="0.34.0"
+VERSION="0.35.0"
HOMEPAGE="https://github.com/foldynl/QLog"
-DOWNLOAD="https://github.com/foldynl/QLog/archive/refs/tags/v0.34.0/QLog-0.34.0.tar.gz \
- https://github.com/foldynl/QLog-Flags/archive/refs/tags/v0.34.0/QLog-Flags-0.34.0.tar.gz"
-MD5SUM="209a1b87e6e0d4e7f1120a74b6e2b87c \
- f6e076d783f2a102bb6704edc022d5b7"
+DOWNLOAD="https://github.com/foldynl/QLog/archive/refs/tags/v0.35.0/QLog-0.35.0.tar.gz \
+ https://github.com/foldynl/QLog-Flags/archive/refs/tags/v0.35.0/QLog-Flags-0.35.0.tar.gz"
+MD5SUM="4987483e95af8b668e21a4fce29debb8\
+ 3e6dc56ab8f80bf8acfc93424eb8883d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="hamlib"
diff --git a/ham/sdrangel/README b/ham/sdrangel/README
index 1093c95fd2..883a6e912d 100644
--- a/ham/sdrangel/README
+++ b/ham/sdrangel/README
@@ -30,7 +30,7 @@ is to provide a Software Defined Radio platform that is committed to:
Depending to your SDR hardware you may want to install some or all:
libairspy, libairspyhf, libbladeRF, libhackrf, liniio, libmirisdr,
-libperseus, librtlsdr, uhd ...
+SDRplay, libperseus, librtlsdr, uhd ...
(not all available at slackbuilds.org)
Optional features can be enabled installing:
diff --git a/ham/sdrangel/sdrangel.SlackBuild b/ham/sdrangel/sdrangel.SlackBuild
index 6736df78bc..1307b9c770 100644
--- a/ham/sdrangel/sdrangel.SlackBuild
+++ b/ham/sdrangel/sdrangel.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=sdrangel
-VERSION=${VERSION:-7.17.3}
+VERSION=${VERSION:-7.20.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -85,6 +85,9 @@ find -L . \
# Fix
zcat $CWD/localsink.diff.gz | patch -p0 || exit
+# Fix (ver 3.14 Added RSP1B Support)
+sed 's/case SDRPLAY_RSP1B_ID/case (6)/' -i plugins/samplesource/sdrplayv3/sdrplayv3input.cpp
+
mkdir -p build
cd build
cmake \
diff --git a/ham/sdrangel/sdrangel.info b/ham/sdrangel/sdrangel.info
index 75d60fb1ed..e638693ff9 100644
--- a/ham/sdrangel/sdrangel.info
+++ b/ham/sdrangel/sdrangel.info
@@ -1,8 +1,8 @@
PRGNAM="sdrangel"
-VERSION="7.17.3"
+VERSION="7.20.0"
HOMEPAGE="https://github.com/f4exb/sdrangel/wiki/"
-DOWNLOAD="https://github.com/f4exb/sdrangel/archive/v7.17.3/sdrangel-v7.17.3.tar.gz"
-MD5SUM="845857adc5a4ce96c6a74ed26832453d"
+DOWNLOAD="https://github.com/f4exb/sdrangel/archive/v7.20.0/sdrangel-v7.20.0.tar.gz"
+MD5SUM="f32e5c197ae11116ddb9c8dede609722"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="faad2 codec2 hamlib"
diff --git a/ham/sgp4/sgp4.SlackBuild b/ham/sgp4/sgp4.SlackBuild
index a9f9bc2f4d..cd3ac618cb 100644
--- a/ham/sgp4/sgp4.SlackBuild
+++ b/ham/sgp4/sgp4.SlackBuild
@@ -25,11 +25,11 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=sgp4
-VERSION=${VERSION:-20231211.6a448b48}
-SRCVERSION=${SRCVERSION:-6a448b4850e5fbf8c1ca03bb5f6013a9fdc1fd91}
+VERSION=${VERSION:-20240428.6a448b48}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
+NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -71,9 +71,9 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$SRCVERSION
-unzip $CWD/$PRGNAM-$SRCVERSION.zip
-cd $PRGNAM-$SRCVERSION
+rm -rf $PRGNAM-${VERSION##*.}*
+tar xvf $CWD/$PRGNAM-${VERSION##*.}*.tar.gz
+cd $PRGNAM-${VERSION##*.}*
chown -R root:root .
find -L . \
@@ -91,7 +91,7 @@ cd build
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
-DMAN_INSTALL_DIR=/usr/man \
-DCMAKE_BUILD_TYPE=Release ..
- make
+ make $NUMJOBS
make install/strip DESTDIR=$PKG
cd ..
diff --git a/ham/sgp4/sgp4.info b/ham/sgp4/sgp4.info
index 4f1ce6b7ed..460f8aaf32 100644
--- a/ham/sgp4/sgp4.info
+++ b/ham/sgp4/sgp4.info
@@ -1,8 +1,8 @@
PRGNAM="sgp4"
-VERSION="20231211.6a448b48"
+VERSION="20240428.6a448b48"
HOMEPAGE="https://github.com/dnwrnr/sgp4/"
-DOWNLOAD="https://github.com/dnwrnr/sgp4/archive/6a448b48/sgp4-6a448b4850e5fbf8c1ca03bb5f6013a9fdc1fd91.zip"
-MD5SUM="90b246600ec54eaeb35f414accc020d4"
+DOWNLOAD="https://github.com/dnwrnr/sgp4/archive/6a448b48/sgp4-6a448b4850e5fbf8c1ca03bb5f6013a9fdc1fd91.tar.gz"
+MD5SUM="795cfea39667e3348a5d664ff5415fb6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="serialDV"
diff --git a/libraries/CLI11/CLI11.SlackBuild b/libraries/CLI11/CLI11.SlackBuild
index dcbca39923..6835bf9685 100644
--- a/libraries/CLI11/CLI11.SlackBuild
+++ b/libraries/CLI11/CLI11.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=CLI11
-VERSION=${VERSION:-2.4.1}
+VERSION=${VERSION:-2.4.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/libraries/CLI11/CLI11.info b/libraries/CLI11/CLI11.info
index 2fe228f05b..55590fd232 100644
--- a/libraries/CLI11/CLI11.info
+++ b/libraries/CLI11/CLI11.info
@@ -1,8 +1,8 @@
PRGNAM="CLI11"
-VERSION="2.4.1"
+VERSION="2.4.2"
HOMEPAGE="https://cliutils.github.io/CLI11/book/"
-DOWNLOAD="https://github.com/CLIUtils/CLI11/archive/v2.4.1/CLI11-2.4.1.tar.gz"
-MD5SUM="d88b829bb557951e2b784baa2a0a2655"
+DOWNLOAD="https://github.com/CLIUtils/CLI11/archive/v2.4.2/CLI11-2.4.2.tar.gz"
+MD5SUM="f9c0acb8c483a524e9dd275955227254"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/libraries/ell/ell.SlackBuild b/libraries/ell/ell.SlackBuild
index 0944559867..c73d685198 100644
--- a/libraries/ell/ell.SlackBuild
+++ b/libraries/ell/ell.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ell
-VERSION=${VERSION:-0.64}
+VERSION=${VERSION:-0.65}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/libraries/ell/ell.info b/libraries/ell/ell.info
index f421ac83e9..92c3d61ac5 100644
--- a/libraries/ell/ell.info
+++ b/libraries/ell/ell.info
@@ -1,8 +1,8 @@
PRGNAM="ell"
-VERSION="0.64"
+VERSION="0.65"
HOMEPAGE="https://git.kernel.org/pub/scm/libs/ell/ell.git"
-DOWNLOAD="https://mirrors.edge.kernel.org/pub/linux/libs/ell/ell-0.64.tar.gz"
-MD5SUM="8172c03f912bfa800b61bdbb4cb5ab3f"
+DOWNLOAD="https://mirrors.edge.kernel.org/pub/linux/libs/ell/ell-0.65.tar.gz"
+MD5SUM="b1480a0d8cf5826e02c60802b602e173"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/libraries/goffice/goffice.SlackBuild b/libraries/goffice/goffice.SlackBuild
index 39282e2f9d..e30e2ed5f1 100644
--- a/libraries/goffice/goffice.SlackBuild
+++ b/libraries/goffice/goffice.SlackBuild
@@ -3,6 +3,7 @@
# Slackware build script for goffice
# Copyright (c) 2007 alkos333 <me@alkos333.net>
+# Copyright (c) 2023-24 Jim Diamond, Dartmouth, Nova Scotia, Canada
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -31,8 +32,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=goffice
-VERSION=${VERSION:-0.10.56}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-0.10.57}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -57,17 +58,14 @@ if [ "$ARCH" = "i586" -o "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=$ARCH -mtune=i686"
LIBDIRSUFFIX=""
CONFIG_ARGS="--without-long-double"
- NEED_PATCHES=T
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
CONFIG_ARGS=
- NEED_PATCHES=F
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
CONFIG_ARGS=
- NEED_PATCHES=F
fi
set -e
@@ -79,16 +77,6 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
cd $PRGNAM-$VERSION
-if [ "$NEED_PATCHES" = T ]
-then
- for i in $CWD/patches/*
- do
- patch -p0 < $i
- done
- cp $CWD/import-ryu tools/
- chmod 755 tools/import-ryu
-fi
-
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
diff --git a/libraries/goffice/goffice.info b/libraries/goffice/goffice.info
index 209e7365ab..7e4d226c69 100644
--- a/libraries/goffice/goffice.info
+++ b/libraries/goffice/goffice.info
@@ -1,8 +1,8 @@
PRGNAM="goffice"
-VERSION="0.10.56"
+VERSION="0.10.57"
HOMEPAGE="https://download.gnome.org/sources/goffice/"
-DOWNLOAD="https://download.gnome.org/sources/goffice/0.10/goffice-0.10.56.tar.xz"
-MD5SUM="50555440e0e4ccef4651193e5e0b5f62"
+DOWNLOAD="https://download.gnome.org/sources/goffice/0.10/goffice-0.10.57.tar.xz"
+MD5SUM="4c55f99d8fafe1f91276cb7538521fdb"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/libraries/goffice/import-ryu b/libraries/goffice/import-ryu
deleted file mode 100644
index e99f022e0b..0000000000
--- a/libraries/goffice/import-ryu
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/usr/bin/perl -w
-# -----------------------------------------------------------------------------
-
-my $ryu = $ARGV[0];
-
-my @files = (# "ryu.h",
- "common.h",
- "digit_table.h",
- "d2s_intrinsics.h",
- "d2s_small_table.h",
- 'd2s.c',
- 'WITH_LONG_DOUBLE',
- 'ryu_generic_128.h',
- 'generic_128.h',
- 'generic_128.c');
-
-print "#define RYU_OPTIMIZE_SIZE 1\n\n";
-print "#define bool int\n\n";
-print "#include \"go-ryu.h\"\n";
-print "#include <inttypes.h>\n";
-print "\n";
-
-my $with_long_double = 0;
-
-foreach my $f (@files) {
- if ($f eq 'WITH_LONG_DOUBLE') {
- $with_long_double = 1;
- next;
- }
-
- my $fn = "$ryu/ryu/$f";
-
- my $in_conditional = 0;
-
- print STDERR "Importing $f...\n";
- open my $fh, "<", $fn or die "$0: cannot read $fn:$!\n";
-
- print "#ifdef GOFFICE_WITH_LONG_DOUBLE\n" if $with_long_double;
-
- print "// File $f imported from ryu\n";
- while (<$fh>) {
- next if /^\s*#\s*include\s*"ryu.*"/;
-
- s/\b((float|double|long_double)_to_fd128|generic_binary_to_decimal|generic_to_chars|(d|f)2(s|exp|fixed)(|_buffered_n|_buffered))\b/go_ryu_$1/g;
-
- if (/\b(go_ryu_d2s_buffered|go_ryu_d2s|go_ryu_f2s_buffered_n|go_ryu_f2s_buffered|go_ryu_f2s|go_ryu_d2fixed_buffered_n|go_ryu_d2fixed_buffered|go_ryu_d2fixed|go_ryu_d2exp_buffered_n|go_ryu_d2exp_buffered|go_ryu_d2exp)\s*\([a-z]+\s.*\)(;|\s*\{)$/) {
- print "#if 0\n";
- $_ = "static $_";
- $in_conditional = 1;
- }
-
- if (/\b(go_ryu_long_double_to_fd128|go_ryu_generic_to_chars)\s*\([a-z]+\s.*\)(;|\s*\{)$/) {
- $_ = "static $_";
- }
-
- if (/struct floating_decimal_128 go_ryu_generic_binary_to_decimal\(/) {
- $_ = "static $_";
- }
-
-
- if ($f =~ /128/) {
- s/\b(pow5bits|pow5Factor|multipleOfPowerOf[25]|log10Pow[25]|copy_special_str|POW5_TABLE_SIZE)\b/$1l/g;
-
- if (/go_ryu_float_to_fd128\(float/) {
- print "#if 0\n";
- $_ = "static $_";
- $in_conditional = 1;
- }
-
- if (/go_ryu_double_to_fd128\(double/) {
- print "#if 0\n";
- $_ = "static $_";
- $in_conditional = 1;
- }
- }
-
- if ($in_conditional && (/^[a-z].*\);$/ || /^}/)) {
- $_ = "$_#endif\n";
- $in_conditional = 0;
- }
-
- print;
- }
- print "// End of file $f imported from ryu\n";
- print "#endif // GOFFICE_WITH_LONG_DOUBLE\n" if $with_long_double;
- print "\n";
-
- die "Trouble" if $in_conditional;
-}
-
-print "\n";
-print "#ifdef GOFFICE_WITH_LONG_DOUBLE\n";
-print "int go_ryu_ld2s_buffered_n (long double d, char *dst) {\n";
-print " struct floating_decimal_128 fd128 = go_ryu_long_double_to_fd128(d);\n";
-print " return go_ryu_generic_to_chars(fd128, dst);\n";
-print "}\n";
-print "#endif\n";
diff --git a/libraries/goffice/patches/NEWS.patch b/libraries/goffice/patches/NEWS.patch
deleted file mode 100644
index 773bb5a77b..0000000000
--- a/libraries/goffice/patches/NEWS.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- NEWS 2023-12-27 18:37:51.129423722 -0400
-+++ NEWS.patched 2023-12-27 18:36:14.000000000 -0400
-@@ -1,3 +1,8 @@
-+goffice 0.10.57:
-+
-+ * Excise long double parts of ryu unless --with-long-double.
-+
-+--------------------------------------------------------------------------
- goffice 0.10.56:
-
- B.S.:
diff --git a/libraries/goffice/patches/configure.ac.patch b/libraries/goffice/patches/configure.ac.patch
deleted file mode 100644
index 1b82b29215..0000000000
--- a/libraries/goffice/patches/configure.ac.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- configure.ac 2023-05-19 22:19:44.000000000 -0300
-+++ configure.ac.fixed 2023-12-27 16:38:43.520064640 -0400
-@@ -560,14 +560,23 @@
- GOFFICE_CHECK_FUNC(acosh)
- GOFFICE_CHECK_FUNC(atanh)
-
-+AC_TYPE_LONG_DOUBLE
-+dnl go-ryu needs __uint128_t for long double support.
-+AC_CHECK_TYPES([__uint128_t], [], [], [[#include <inttypes.h>
-+#include <stdint.h>]])
-+if test $ac_cv_type_long_double.$ac_cv_type___uint128_t = yes.yes; then
-+ with_long_double_default=yes
-+else
-+ with_long_double_default=no
-+fi
-+
- float_msg=no
- AC_ARG_WITH(long-double,
- [ --without-long-double disable support for long double],
-- , [ with_long_double=yes])
-+ , [ with_long_double=$with_long_double_default])
-
- if test "x$with_long_double" = "xyes"; then
-- AC_TYPE_LONG_DOUBLE
-- if test $ac_cv_type_long_double = yes; then
-+ if test $with_long_double_default = yes; then
- have_mandatory_funcs=yes
- need_sunmath=0
- ss_ccprog=`echo $CC | sed -e 's/ .*//'`
diff --git a/libraries/goffice/patches/go-dtoa.c.patch b/libraries/goffice/patches/go-dtoa.c.patch
deleted file mode 100644
index 525d2893b8..0000000000
--- a/libraries/goffice/patches/go-dtoa.c.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- goffice/math/go-dtoa.c 2023-05-21 13:08:07.000000000 -0300
-+++ goffice/math/go-dtoa.c.patched 2023-12-27 19:28:35.623167312 -0400
-@@ -464,9 +464,14 @@
- GString const *dec = go_locale_get_decimal();
-
- g_string_set_size (dst, 53 + oldlen + dec->len);
-- if (is_long)
-+ if (is_long) {
-+#ifdef GOFFICE_WITH_LONG_DOUBLE
- n = go_ryu_ld2s_buffered_n (d, dst->str + oldlen);
-- else
-+#else
-+ g_critical ("Compiled with long-double, then asked to use it");
-+ return;
-+#endif
-+ } else
- n = go_ryu_d2s_buffered_n ((double)d, dst->str + oldlen);
- g_string_set_size (dst, oldlen + n);
- dpos = strchr (dst->str + oldlen, '.');
diff --git a/libraries/goffice/patches/go-ryu.c.patch b/libraries/goffice/patches/go-ryu.c.patch
deleted file mode 100644
index 6d0513c752..0000000000
--- a/libraries/goffice/patches/go-ryu.c.patch
+++ /dev/null
@@ -1,204 +0,0 @@
---- goffice/math/go-ryu.c 2023-05-20 20:02:02.000000000 -0300
-+++ goffice/math/go-ryu.c.patched 2023-12-27 19:28:35.623167312 -0400
-@@ -3,55 +3,8 @@
- #define bool int
-
- #include "go-ryu.h"
--// File ryu.h imported from ryu
--// Copyright 2018 Ulf Adams
--//
--// The contents of this file may be used under the terms of the Apache License,
--// Version 2.0.
--//
--// (See accompanying file LICENSE-Apache or copy at
--// http://www.apache.org/licenses/LICENSE-2.0)
--//
--// Alternatively, the contents of this file may be used under the terms of
--// the Boost Software License, Version 1.0.
--// (See accompanying file LICENSE-Boost or copy at
--// https://www.boost.org/LICENSE_1_0.txt)
--//
--// Unless required by applicable law or agreed to in writing, this software
--// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
--// KIND, either express or implied.
--#ifndef RYU_H
--#define RYU_H
--
--#ifdef __cplusplus
--extern "C" {
--#endif
--
- #include <inttypes.h>
-
--int go_ryu_d2s_buffered_n(double f, char* result);
--void go_ryu_d2s_buffered(double f, char* result);
--char* go_ryu_d2s(double f);
--
--int go_ryu_f2s_buffered_n(float f, char* result);
--void go_ryu_f2s_buffered(float f, char* result);
--char* go_ryu_f2s(float f);
--
--int go_ryu_d2fixed_buffered_n(double d, uint32_t precision, char* result);
--void go_ryu_d2fixed_buffered(double d, uint32_t precision, char* result);
--char* go_ryu_d2fixed(double d, uint32_t precision);
--
--int go_ryu_d2exp_buffered_n(double d, uint32_t precision, char* result);
--void go_ryu_d2exp_buffered(double d, uint32_t precision, char* result);
--char* go_ryu_d2exp(double d, uint32_t precision);
--
--#ifdef __cplusplus
--}
--#endif
--
--#endif // RYU_H
--// End of file ryu.h imported from ryu
--
- // File common.h imported from ryu
- // Copyright 2018 Ulf Adams
- //
-@@ -1242,20 +1195,25 @@
- return to_chars(v, ieeeSign, result);
- }
-
--void go_ryu_d2s_buffered(double f, char* result) {
-+#if 0
-+static void go_ryu_d2s_buffered(double f, char* result) {
- const int index = go_ryu_d2s_buffered_n(f, result);
-
- // Terminate the string.
- result[index] = '\0';
- }
-+#endif
-
--char* go_ryu_d2s(double f) {
-+#if 0
-+static char* go_ryu_d2s(double f) {
- char* const result = (char*) malloc(25);
- go_ryu_d2s_buffered(f, result);
- return result;
- }
-+#endif
- // End of file d2s.c imported from ryu
-
-+#ifdef GOFFICE_WITH_LONG_DOUBLE
- // File ryu_generic_128.h imported from ryu
- // Copyright 2018 Ulf Adams
- //
-@@ -1303,16 +1261,20 @@
- bool sign;
- };
-
--struct floating_decimal_128 go_ryu_float_to_fd128(float f);
--struct floating_decimal_128 go_ryu_double_to_fd128(double d);
-+#if 0
-+static struct floating_decimal_128 go_ryu_float_to_fd128(float f);
-+#endif
-+#if 0
-+static struct floating_decimal_128 go_ryu_double_to_fd128(double d);
-+#endif
-
- // According to wikipedia (https://en.wikipedia.org/wiki/Long_double), this likely only works on
- // x86 with specific compilers (clang?). May need an ifdef.
--struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d);
-+static struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d);
-
- // Converts the given binary floating point number to the shortest decimal floating point number
- // that still accurately represents it.
--struct floating_decimal_128 go_ryu_generic_binary_to_decimal(
-+static struct floating_decimal_128 go_ryu_generic_binary_to_decimal(
- const __uint128_t bits, const uint32_t mantissaBits, const uint32_t exponentBits, const bool explicitLeadingBit);
-
- // Converts the given decimal floating point number to a string, writing to result, and returning
-@@ -1322,7 +1284,7 @@
- // Maximal char buffer requirement:
- // sign + mantissa digits + decimal dot + 'E' + exponent sign + exponent digits
- // = 1 + 39 + 1 + 1 + 1 + 10 = 53
--int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result);
-+static int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result);
-
- #ifdef __cplusplus
- }
-@@ -1330,7 +1292,9 @@
-
- #endif // RYU_GENERIC_128_H
- // End of file ryu_generic_128.h imported from ryu
-+#endif // GOFFICE_WITH_LONG_DOUBLE
-
-+#ifdef GOFFICE_WITH_LONG_DOUBLE
- // File generic_128.h imported from ryu
- // Copyright 2018 Ulf Adams
- //
-@@ -1852,7 +1816,9 @@
-
- #endif // RYU_GENERIC128_H
- // End of file generic_128.h imported from ryu
-+#endif // GOFFICE_WITH_LONG_DOUBLE
-
-+#ifdef GOFFICE_WITH_LONG_DOUBLE
- // File generic_128.c imported from ryu
- // Copyright 2018 Ulf Adams
- //
-@@ -1903,25 +1869,29 @@
- #define FLOAT_MANTISSA_BITS 23
- #define FLOAT_EXPONENT_BITS 8
-
--struct floating_decimal_128 go_ryu_float_to_fd128(float f) {
-+#if 0
-+static struct floating_decimal_128 go_ryu_float_to_fd128(float f) {
- uint32_t bits = 0;
- memcpy(&bits, &f, sizeof(float));
- return go_ryu_generic_binary_to_decimal(bits, FLOAT_MANTISSA_BITS, FLOAT_EXPONENT_BITS, false);
- }
-+#endif
-
- #define DOUBLE_MANTISSA_BITS 52
- #define DOUBLE_EXPONENT_BITS 11
-
--struct floating_decimal_128 go_ryu_double_to_fd128(double d) {
-+#if 0
-+static struct floating_decimal_128 go_ryu_double_to_fd128(double d) {
- uint64_t bits = 0;
- memcpy(&bits, &d, sizeof(double));
- return go_ryu_generic_binary_to_decimal(bits, DOUBLE_MANTISSA_BITS, DOUBLE_EXPONENT_BITS, false);
- }
-+#endif
-
- #define LONG_DOUBLE_MANTISSA_BITS 64
- #define LONG_DOUBLE_EXPONENT_BITS 15
-
--struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d) {
-+static struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d) {
- uint128_t bits = 0;
- memcpy(&bits, &d, sizeof(long double));
- #ifdef RYU_DEBUG
-@@ -1934,7 +1904,7 @@
- return go_ryu_generic_binary_to_decimal(bits, LONG_DOUBLE_MANTISSA_BITS, LONG_DOUBLE_EXPONENT_BITS, true);
- }
-
--struct floating_decimal_128 go_ryu_generic_binary_to_decimal(
-+static struct floating_decimal_128 go_ryu_generic_binary_to_decimal(
- const uint128_t bits, const uint32_t mantissaBits, const uint32_t exponentBits, const bool explicitLeadingBit) {
- #ifdef RYU_DEBUG
- printf("IN=");
-@@ -2147,7 +2117,7 @@
- return fd.sign + 8;
- }
-
--int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result) {
-+static int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result) {
- if (v.exponent == FD128_EXCEPTIONAL_EXPONENT) {
- return copy_special_strl(result, v);
- }
-@@ -2200,9 +2170,12 @@
- return index;
- }
- // End of file generic_128.c imported from ryu
-+#endif // GOFFICE_WITH_LONG_DOUBLE
-
-
-+#ifdef GOFFICE_WITH_LONG_DOUBLE
- int go_ryu_ld2s_buffered_n (long double d, char *dst) {
- struct floating_decimal_128 fd128 = go_ryu_long_double_to_fd128(d);
- return go_ryu_generic_to_chars(fd128, dst);
- }
-+#endif
diff --git a/libraries/goffice/patches/go-ryu.h.patch b/libraries/goffice/patches/go-ryu.h.patch
deleted file mode 100644
index 623da14e36..0000000000
--- a/libraries/goffice/patches/go-ryu.h.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- goffice/math/go-ryu.h 2023-05-20 19:48:32.000000000 -0300
-+++ goffice/math/go-ryu.h.patched 2023-12-27 19:28:35.623167312 -0400
-@@ -9,7 +9,9 @@
- /* ------------------------------------------------------------------------- */
-
- int go_ryu_d2s_buffered_n (double d, char *dst);
-+#ifdef GOFFICE_WITH_LONG_DOUBLE
- int go_ryu_ld2s_buffered_n (long double d, char *dst);
-+#endif
-
- /* ------------------------------------------------------------------------- */
-
diff --git a/libraries/grpc/grpc.SlackBuild b/libraries/grpc/grpc.SlackBuild
index 520fe59c11..981e72a85d 100644
--- a/libraries/grpc/grpc.SlackBuild
+++ b/libraries/grpc/grpc.SlackBuild
@@ -27,7 +27,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=grpc
-VERSION=${VERSION:-1.62.2}
+VERSION=${VERSION:-1.63.0}
OPENCENSUS_VERSION=${OPENCENSUS_VERSION:-0.3.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -103,14 +103,11 @@ cmake -Bbuild \
-DCMAKE_SKIP_INSTALL_RPATH=ON \
-DgRPC_BUILD_TESTS=OFF \
-DgRPC_BUILD_CODEGEN=ON \
- -DgRPC_BUILD_CSHARP_EXT=ON \
- -DgRPC_BACKWARDS_COMPATIBILITY_MODE=OFF \
-DgRPC_ZLIB_PROVIDER='package' \
-DgRPC_CARES_PROVIDER='package' \
-DgRPC_RE2_PROVIDER='package' \
-DgRPC_SSL_PROVIDER='package' \
-DgRPC_PROTOBUF_PROVIDER='package' \
- -DgRPC_PROTOBUF_PACKAGE_TYPE='MODULE' \
-DgRPC_BENCHMARK_PROVIDER:STRING='package' \
-DgRPC_ABSL_PROVIDER:STRING='package' \
-DgRPC_USE_PROTO_LITE=OFF \
diff --git a/libraries/grpc/grpc.info b/libraries/grpc/grpc.info
index 7aea95c747..a5342238d1 100644
--- a/libraries/grpc/grpc.info
+++ b/libraries/grpc/grpc.info
@@ -1,9 +1,9 @@
PRGNAM="grpc"
-VERSION="1.62.2"
+VERSION="1.63.0"
HOMEPAGE="https://grpc.io/"
-DOWNLOAD="https://github.com/grpc/grpc/archive/v1.62.2/grpc-1.62.2.tar.gz \
+DOWNLOAD="https://github.com/grpc/grpc/archive/v1.63.0/grpc-1.63.0.tar.gz \
https://github.com/census-instrumentation/opencensus-proto/archive/v0.3.0/opencensus-proto-0.3.0.tar.gz"
-MD5SUM="0cabd7727133de65d9d1c7d521b6b05f \
+MD5SUM="a7a4cd8ce187c4a49d9498b3fcd148b2 \
0b208800a68548cbf2d4bff763c050a2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/libraries/htslib/htslib.SlackBuild b/libraries/htslib/htslib.SlackBuild
index b27ea38502..d88f89c846 100644
--- a/libraries/htslib/htslib.SlackBuild
+++ b/libraries/htslib/htslib.SlackBuild
@@ -24,7 +24,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=htslib
-VERSION=${VERSION:-1.19.1}
+VERSION=${VERSION:-1.20}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/libraries/htslib/htslib.info b/libraries/htslib/htslib.info
index dd142db7c4..fb49fe4935 100644
--- a/libraries/htslib/htslib.info
+++ b/libraries/htslib/htslib.info
@@ -1,8 +1,8 @@
PRGNAM="htslib"
-VERSION="1.19.1"
+VERSION="1.20"
HOMEPAGE="http://www.htslib.org"
-DOWNLOAD="https://github.com/samtools/htslib/releases/download/1.19.1/htslib-1.19.1.tar.bz2"
-MD5SUM="f9b2f75e1e9ec6cc5c1e204d56fbee9e"
+DOWNLOAD="https://github.com/samtools/htslib/releases/download/1.20/htslib-1.20.tar.bz2"
+MD5SUM="127cbea4e9a8c084fb09c3fd24bd825d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/libraries/libbass/libbass.info b/libraries/libbass/libbass.info
index 6079096f0c..63193d59d0 100644
--- a/libraries/libbass/libbass.info
+++ b/libraries/libbass/libbass.info
@@ -2,7 +2,7 @@ PRGNAM="libbass"
VERSION="2.4.17"
HOMEPAGE="https://www.un4seen.com"
DOWNLOAD="http://www.un4seen.com/files/bass24-linux.zip"
-MD5SUM="a9ea0bca8e1da1d3759cc0d0dc7e6bbe"
+MD5SUM="91b04cdc2f29c79ff9f6108b8aa33486"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/libraries/libcpuid/libcpuid.SlackBuild b/libraries/libcpuid/libcpuid.SlackBuild
index 46c85264ab..f5aed0b7fe 100644
--- a/libraries/libcpuid/libcpuid.SlackBuild
+++ b/libraries/libcpuid/libcpuid.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=libcpuid
-VERSION=${VERSION:-0.6.4}
+VERSION=${VERSION:-0.6.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/libraries/libcpuid/libcpuid.info b/libraries/libcpuid/libcpuid.info
index 55a61967b6..0ce6795494 100644
--- a/libraries/libcpuid/libcpuid.info
+++ b/libraries/libcpuid/libcpuid.info
@@ -1,8 +1,8 @@
PRGNAM="libcpuid"
-VERSION="0.6.4"
+VERSION="0.6.5"
HOMEPAGE="http://libcpuid.sourceforge.net"
-DOWNLOAD="https://github.com/anrieff/libcpuid/archive/v0.6.4/libcpuid-0.6.4.tar.gz"
-MD5SUM="dad029ee90ed683ee07bf83a2b32304d"
+DOWNLOAD="https://github.com/anrieff/libcpuid/archive/v0.6.5/libcpuid-0.6.5.tar.gz"
+MD5SUM="034584d695e8df67d544c571c98c9467"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/libraries/libfaketime/libfaketime.SlackBuild b/libraries/libfaketime/libfaketime.SlackBuild
index 70ce838f4a..1b335e33aa 100644
--- a/libraries/libfaketime/libfaketime.SlackBuild
+++ b/libraries/libfaketime/libfaketime.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for libfaketime
-# Copyright 2016-2021 Giuseppe Di Terlizzi <giuseppe.diterlizzi@gmail.com>
+# Copyright 2016-2024 Giuseppe Di Terlizzi <giuseppe.diterlizzi@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=libfaketime
-VERSION=${VERSION:-0.9.9}
+VERSION=${VERSION:-0.9.10}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/libraries/libfaketime/libfaketime.info b/libraries/libfaketime/libfaketime.info
index 6b7bed9c56..f1b7ff542f 100644
--- a/libraries/libfaketime/libfaketime.info
+++ b/libraries/libfaketime/libfaketime.info
@@ -1,8 +1,8 @@
PRGNAM="libfaketime"
-VERSION="0.9.9"
+VERSION="0.9.10"
HOMEPAGE="https://github.com/wolfcw/libfaketime"
-DOWNLOAD="https://github.com/wolfcw/libfaketime/archive/v0.9.9/libfaketime-0.9.9.tar.gz"
-MD5SUM="1f784c9c0ec7807b9d1107d1730dbb41"
+DOWNLOAD="https://github.com/wolfcw/libfaketime/archive/v0.9.10/libfaketime-0.9.10.tar.gz"
+MD5SUM="bbeaa43f514fc8e637e5efdac53e2671"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/libraries/libliftoff/libliftoff.SlackBuild b/libraries/libliftoff/libliftoff.SlackBuild
index a27bf71e70..a4d25ff895 100644
--- a/libraries/libliftoff/libliftoff.SlackBuild
+++ b/libraries/libliftoff/libliftoff.SlackBuild
@@ -67,9 +67,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-v$VERSION-$COMMIT
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz || tar xvf $CWD/$VERSION.tar.gz
-cd $PRGNAM-v$VERSION-$COMMIT
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
diff --git a/libraries/libliftoff/libliftoff.info b/libraries/libliftoff/libliftoff.info
index 4f240361bd..126a9a6352 100644
--- a/libraries/libliftoff/libliftoff.info
+++ b/libraries/libliftoff/libliftoff.info
@@ -1,7 +1,7 @@
PRGNAM="libliftoff"
VERSION="0.4.1"
HOMEPAGE="https://gitlab.freedesktop.org/emersion/libliftoff"
-DOWNLOAD="https://gitlab.freedesktop.org/emersion/libliftoff/-/archive/v0.4.1/libliftoff-0.4.1.tar.gz"
+DOWNLOAD="https://gitlab.freedesktop.org/emersion/libliftoff/-/releases/v0.4.1/downloads/libliftoff-0.4.1.tar.gz"
MD5SUM="5c5ef466a63cf7e00822341e424d7412"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/libraries/librepfunc/librepfunc.SlackBuild b/libraries/librepfunc/librepfunc.SlackBuild
index 0f89fe34bc..2f4ec2353f 100644
--- a/libraries/librepfunc/librepfunc.SlackBuild
+++ b/libraries/librepfunc/librepfunc.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=librepfunc
-VERSION=${VERSION:-1.8.1}
+VERSION=${VERSION:-1.10.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/libraries/librepfunc/librepfunc.info b/libraries/librepfunc/librepfunc.info
index 3c47205f09..af3a723875 100644
--- a/libraries/librepfunc/librepfunc.info
+++ b/libraries/librepfunc/librepfunc.info
@@ -1,8 +1,8 @@
PRGNAM="librepfunc"
-VERSION="1.8.1"
+VERSION="1.10.0"
HOMEPAGE="https://github.com/wirbel-at-vdr-portal/librepfunc"
-DOWNLOAD="https://github.com/wirbel-at-vdr-portal/librepfunc/archive/1.8.1/librepfunc-1.8.1.tar.gz"
-MD5SUM="8087573812dd396efb55cd0702b3faa8"
+DOWNLOAD="https://github.com/wirbel-at-vdr-portal/librepfunc/archive/1.10.0/librepfunc-1.10.0.tar.gz"
+MD5SUM="b1f52cb230907416628af27539e11923"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/libraries/libtecla/libtecla.info b/libraries/libtecla/libtecla.info
index c54eb281f5..7bfdf5a61d 100644
--- a/libraries/libtecla/libtecla.info
+++ b/libraries/libtecla/libtecla.info
@@ -1,10 +1,10 @@
PRGNAM="libtecla"
VERSION="1.6.3"
HOMEPAGE="http://www.astro.caltech.edu/~mcs/tecla/"
-DOWNLOAD="http://www.astro.caltech.edu/~mcs/tecla/libtecla-1.6.3.tar.gz"
-MD5SUM="90105ca19e405fb92825a90978e4ab18"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="http://www.astro.caltech.edu/~mcs/tecla/libtecla-1.6.3.tar.gz"
+MD5SUM_x86_64="90105ca19e405fb92825a90978e4ab18"
REQUIRES=""
MAINTAINER="Roberto Metere"
EMAIL="roberto@metere.it"
diff --git a/libraries/libtorch-cxx11-abi-shared-with-deps/README b/libraries/libtorch-cxx11-abi-shared-with-deps/README
deleted file mode 100644
index 3afc98cdc6..0000000000
--- a/libraries/libtorch-cxx11-abi-shared-with-deps/README
+++ /dev/null
@@ -1,4 +0,0 @@
-Tensors and Dynamic neural networks in Python with strong GPU
-acceleration.
-
-These are precompiled libraries for x86_64 only.
diff --git a/libraries/libtorch-cxx11-abi-shared-with-deps/libtorch-cxx11-abi-shared-with-deps.info b/libraries/libtorch-cxx11-abi-shared-with-deps/libtorch-cxx11-abi-shared-with-deps.info
deleted file mode 100644
index a51b573ba4..0000000000
--- a/libraries/libtorch-cxx11-abi-shared-with-deps/libtorch-cxx11-abi-shared-with-deps.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="libtorch-cxx11-abi-shared-with-deps"
-VERSION="2.1.1"
-HOMEPAGE="https://pytorch.org/"
-DOWNLOAD="UNSUPPORTED"
-MD5SUM=""
-DOWNLOAD_x86_64="https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-2.1.1%2Bcpu.zip"
-MD5SUM_x86_64="9209a7dba2ab08bea5a2b59b5ae36088"
-REQUIRES=""
-MAINTAINER="Johannes Schoepfer"
-EMAIL="slackbuilds@schoepfer.info"
diff --git a/libraries/libtorch-cxx11-abi-shared-with-deps/slack-desc b/libraries/libtorch-cxx11-abi-shared-with-deps/slack-desc
deleted file mode 100644
index f7792a3a2e..0000000000
--- a/libraries/libtorch-cxx11-abi-shared-with-deps/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-libtorch-cxx11-abi-shared-with-deps: libtorch-cxx11-abi-shared-with-deps (Tensors and neural networks)
-libtorch-cxx11-abi-shared-with-deps:
-libtorch-cxx11-abi-shared-with-deps: Tensors and Dynamic neural networks in Python with strong GPU
-libtorch-cxx11-abi-shared-with-deps: acceleration.
-libtorch-cxx11-abi-shared-with-deps:
-libtorch-cxx11-abi-shared-with-deps: These are precompiled libraries.
-libtorch-cxx11-abi-shared-with-deps:
-libtorch-cxx11-abi-shared-with-deps:
-libtorch-cxx11-abi-shared-with-deps:
-libtorch-cxx11-abi-shared-with-deps: https://pytorch.org/
-libtorch-cxx11-abi-shared-with-deps:
diff --git a/libraries/libxmlb/libxmlb.SlackBuild b/libraries/libxmlb/libxmlb.SlackBuild
index 026fdc3ffb..b7cf8065f1 100644
--- a/libraries/libxmlb/libxmlb.SlackBuild
+++ b/libraries/libxmlb/libxmlb.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=libxmlb
-VERSION=${VERSION:-0.3.15}
+VERSION=${VERSION:-0.3.19}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -77,6 +77,10 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+# Use newer meson
+PYVER=$(python3 -c 'import sys; print("%d.%d" % sys.version_info[:2])')
+export PYTHONPATH=/opt/python$PYVER/site-packages/
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
meson \
diff --git a/libraries/libxmlb/libxmlb.info b/libraries/libxmlb/libxmlb.info
index 908366a050..3f6c7c61d8 100644
--- a/libraries/libxmlb/libxmlb.info
+++ b/libraries/libxmlb/libxmlb.info
@@ -1,10 +1,10 @@
PRGNAM="libxmlb"
-VERSION="0.3.15"
+VERSION="0.3.19"
HOMEPAGE="https://github.com/hughsie/libxmlb"
-DOWNLOAD="https://github.com/hughsie/libxmlb/archive/0.3.15/libxmlb-0.3.15.tar.gz"
-MD5SUM="8cec7081a7bb4db1eb38d8709d890035"
+DOWNLOAD="https://github.com/hughsie/libxmlb/archive/0.3.19/libxmlb-0.3.19.tar.gz"
+MD5SUM="4a66b1865538868efd902db6a9f27234"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="python3-meson-opt"
MAINTAINER="Andrew Clemons"
EMAIL="andrew.clemons@gmail.com"
diff --git a/libraries/lua-readline/README b/libraries/lua-readline/README
deleted file mode 100644
index 6effa3b8f8..0000000000
--- a/libraries/lua-readline/README
+++ /dev/null
@@ -1,5 +0,0 @@
-This Lua module offers a simple calling interface
-to the GNU Readline/History Library.
-
-Optional Dependency: lua52, lua53.
-Default support for all versions of Lua installed before build.
diff --git a/libraries/lua-readline/lua-readline.SlackBuild b/libraries/lua-readline/lua-readline.SlackBuild
deleted file mode 100644
index f2ec41e0ab..0000000000
--- a/libraries/lua-readline/lua-readline.SlackBuild
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/bin/bash
-
-# Slackware build script for lua-readline
-# Copyright 2021 abooksigun <abooksigun09@gmail.com>
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-cd $(dirname $0) ; CWD=$(pwd)
-
-PRGNAM=lua-readline
-SRCNAM=readline
-VERSION=${VERSION:-2.9}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-PKGTYPE=${PKGTYPE:-tgz}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
-if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
- echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
- exit 0
-fi
-
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
-cd $SRCNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-LUAVERS="5.1 5.2 5.3 5.4"
-
-for luaver in $LUAVERS
-do
- if [ $luaver != 5.1 ]; then version=$luaver dir=lua$version; fi
- if $(lua$version -v &> /dev/null)
- then
- gcc $SLKCFLAGS -I /usr/include/$dir -c C-readline.c -o C-readline.o
- gcc $SLKCFLAGS -shared -o C-readline.so.$luaver C-readline.o
-
- install -D -m 0755 C-readline.so.$luaver $PKG/usr/lib$LIBDIRSUFFIX/lua/$luaver/C-readline.so
- install -D -m 0644 readline.lua $PKG/usr/share/lua/$luaver/readline.lua
- fi
-done
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp doc/readline.html $PKG/usr/doc/$PRGNAM-$VERSION
-
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/libraries/lua-readline/lua-readline.info b/libraries/lua-readline/lua-readline.info
deleted file mode 100644
index 6c8455a684..0000000000
--- a/libraries/lua-readline/lua-readline.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="lua-readline"
-VERSION="2.9"
-HOMEPAGE="http://www.pjb.com.au/comp/lua/readline.html"
-DOWNLOAD="http://www.pjb.com.au/comp/lua/readline-2.9.tar.gz"
-MD5SUM="9423302e81cad9a2b9f0fbfd0b39b5a8"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="lua-posix"
-MAINTAINER="abooksigun"
-EMAIL="abooksigun09@gmail.com"
diff --git a/libraries/lua-readline/slack-desc b/libraries/lua-readline/slack-desc
deleted file mode 100644
index 566ea2ce2a..0000000000
--- a/libraries/lua-readline/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-lua-readline: lua-readline (Interface to the readline library)
-lua-readline:
-lua-readline: This Lua module offers a simple calling interface
-lua-readline: to the GNU Readline/History Library.
-lua-readline:
-lua-readline: Homepage: http://www.pjb.com.au/comp/lua/readline.html
-lua-readline:
-lua-readline:
-lua-readline:
-lua-readline:
-lua-readline:
diff --git a/libraries/mimalloc/mimalloc.SlackBuild b/libraries/mimalloc/mimalloc.SlackBuild
index 7cde1378c7..8f87d83a0f 100644
--- a/libraries/mimalloc/mimalloc.SlackBuild
+++ b/libraries/mimalloc/mimalloc.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=mimalloc
-VERSION=${VERSION:-2.1.2}
+VERSION=${VERSION:-2.1.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/libraries/mimalloc/mimalloc.info b/libraries/mimalloc/mimalloc.info
index 55cded1893..79cf6a1b71 100644
--- a/libraries/mimalloc/mimalloc.info
+++ b/libraries/mimalloc/mimalloc.info
@@ -1,8 +1,8 @@
PRGNAM="mimalloc"
-VERSION="2.1.2"
+VERSION="2.1.4"
HOMEPAGE="https://github.com/microsoft/mimalloc"
-DOWNLOAD="https://github.com/microsoft/mimalloc/archive/v2.1.2/mimalloc-2.1.2.tar.gz"
-MD5SUM="5179c8f5cf1237d2300e2d8559a7bc55"
+DOWNLOAD="https://github.com/microsoft/mimalloc/archive/v2.1.4/mimalloc-2.1.4.tar.gz"
+MD5SUM="50f2e6e2bf0e92876bedf95cf5444d43"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/libraries/nng/nng.SlackBuild b/libraries/nng/nng.SlackBuild
index b85000e4b5..79e9122276 100644
--- a/libraries/nng/nng.SlackBuild
+++ b/libraries/nng/nng.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=nng
-VERSION=${VERSION:-1.6.0}
+VERSION=${VERSION:-1.8.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/libraries/nng/nng.info b/libraries/nng/nng.info
index c29dc48122..98339ffc94 100644
--- a/libraries/nng/nng.info
+++ b/libraries/nng/nng.info
@@ -1,8 +1,8 @@
PRGNAM="nng"
-VERSION="1.6.0"
+VERSION="1.8.0"
HOMEPAGE="https://nng.nanomsg.org/"
-DOWNLOAD="https://github.com/nanomsg/nng/archive/v1.6.0/nng-v1.6.0.tar.gz"
-MD5SUM="1af544f3cc51c0d240e3dcd329333264"
+DOWNLOAD="https://github.com/nanomsg/nng/archive/v1.8.0/nng-v1.8.0.tar.gz"
+MD5SUM="6a8857856b9b15f0187ebcc5f7301b5a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/libraries/opencl-amd/opencl-amd.info b/libraries/opencl-amd/opencl-amd.info
index 15f6c25ea6..8ff03f005d 100644
--- a/libraries/opencl-amd/opencl-amd.info
+++ b/libraries/opencl-amd/opencl-amd.info
@@ -1,8 +1,8 @@
PRGNAM="opencl-amd"
VERSION="22.20.3"
HOMEPAGE="https://docs.amd.com/bundle/ROCm-Release-Notes-v5.2/page/About_This_Document.html"
-DOWNLOAD="https://repo.radeon.com/amdgpu/22.20.3/ubuntu/pool/main/libd/libdrm-amdgpu/libdrm-amdgpu-amdgpu1_2.4.110.50203-1462318~22.04_amd64.deb"
-MD5SUM="cd291312140d06b001381991c3e6ce24"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
DOWNLOAD_x86_64="https://repo.radeon.com/amdgpu/22.20.3/ubuntu/pool/main/libd/libdrm-amdgpu/libdrm-amdgpu-amdgpu1_2.4.110.50203-1462318~22.04_amd64.deb \
https://repo.radeon.com/rocm/apt/5.2.3/pool/main/r/rocm-core/rocm-core_5.2.3.50203-109_amd64.deb \
https://repo.radeon.com/rocm/apt/5.2.3/pool/main/c/comgr/comgr_2.4.0.50203-109_amd64.deb \
diff --git a/libraries/openvdb/openvdb.info b/libraries/openvdb/openvdb.info
index f27cbec8cb..88e5891ac6 100644
--- a/libraries/openvdb/openvdb.info
+++ b/libraries/openvdb/openvdb.info
@@ -1,10 +1,10 @@
PRGNAM="openvdb"
VERSION="10.0.1"
HOMEPAGE="https://github.com/AcademySoftwareFoundation/openvdb/"
-DOWNLOAD="https://github.com/AcademySoftwareFoundation/openvdb/archive/v10.0.1/openvdb-10.0.1.tar.gz"
-MD5SUM="0239ff0c912a3eac76bd6a4ae1b03522"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/AcademySoftwareFoundation/openvdb/archive/v10.0.1/openvdb-10.0.1.tar.gz"
+MD5SUM_x86_64="0239ff0c912a3eac76bd6a4ae1b03522"
REQUIRES="c-blosc tbb glfw3"
MAINTAINER="Lockywolf"
EMAIL="for_sbo.openvdb_2023-07-12@lockywolf.net"
diff --git a/libraries/openvino/openvino.SlackBuild b/libraries/openvino/openvino.SlackBuild
index 0bd25aea3b..e05fe6fbfa 100644
--- a/libraries/openvino/openvino.SlackBuild
+++ b/libraries/openvino/openvino.SlackBuild
@@ -25,11 +25,10 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=openvino
-VERSION=${VERSION:-2024.0.0}
+VERSION=${VERSION:-2024.1.0}
VERSION_FLATBUFFERS=24.3.25
VERSION_ONNX=1.16.0
VERSION_ITTAPI=3.24.4
-VERSION_ONEDNN_GPU=3.4.1
COMMIT_ONEDNN=26633ae49edd4353a29b7170d9fcef6b2d79f4b3
COMMIT_MLAS=d1bc25ec4660cddd87804fcf03b2411b5dfb2e94
BUILD=${BUILD:-1}
@@ -96,7 +95,7 @@ rmdir flatbuffers
tar vxf $CWD/flatbuffers-$VERSION_FLATBUFFERS.tar.gz
ln -s flatbuffers-$VERSION_FLATBUFFERS flatbuffers
)
-# onnx frontend
+## onnx frontend
(
cd thirdparty/onnx/
rmdir onnx
@@ -117,7 +116,7 @@ rmdir mlas
tar vxf $CWD/mlas-$COMMIT_MLAS.tar.gz
ln -s mlas-$COMMIT_MLAS mlas
)
-# oneDNN for cpu inference device, fork from openvinotoolkit needed
+# oneDNN for cpu inference device
# oneDNN supports 64 bit platforms only
if [ "$LIBDIRSUFFIX" == 64 ]; then
CPU=ON
@@ -132,8 +131,8 @@ if [ "$LIBDIRSUFFIX" == 64 ]; then
(
cd src/plugins/intel_gpu/thirdparty
rmdir onednn_gpu
- tar vxf $CWD/oneDNN-$VERSION_ONEDNN_GPU.tar.gz
- ln -s oneDNN-$VERSION_ONEDNN_GPU onednn_gpu
+ tar vxf $CWD/oneDNN-$COMMIT_ONEDNN.tar.gz
+ ln -s oneDNN-$COMMIT_ONEDNN onednn
)
else
CPU=OFF
@@ -146,20 +145,22 @@ cd build
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_STANDARD=17 \
- -DLIB_SUFFIX=${LIBDIRSUFFIX} \
-DCMAKE_INSTALL_PREFIX=/usr/share/openvino \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ -DONNX_ML=ON \
-DENABLE_SYSTEM_SNAPPY=ON \
-DENABLE_SYSTEM_TBB=ON \
-DENABLE_SYSTEM_PROTOBUF=ON \
-DENABLE_SYSTEM_PUGIXML=ON \
-DProtobuf_LIBRARY=/usr/lib$LIBDIRSUFFIX/libprotobuf.so \
- -DENABLE_LTO=ON \
-DENABLE_PROFILING_ITT=ON \
-DENABLE_TBBBIND_2_5=OFF \
-DENABLE_JS=OFF \
-DENABLE_SAMPLES=OFF \
-DENABLE_INTEL_CPU=$CPU \
-DENABLE_INTEL_GPU=$GPU \
+ -DENABLE_INTEL_NPU=OFF \
+ -DENABLE_ONEDNN_FOR_GPU=OFF \
-Wno-dev \
-DCMAKE_BUILD_TYPE=Release ..
make
diff --git a/libraries/openvino/openvino.info b/libraries/openvino/openvino.info
index 60fe2c863b..01a9c32ad4 100644
--- a/libraries/openvino/openvino.info
+++ b/libraries/openvino/openvino.info
@@ -1,17 +1,15 @@
PRGNAM="openvino"
-VERSION="2024.0.0"
+VERSION="2024.1.0"
HOMEPAGE="https://github.com/openvinotoolkit/openvino/"
-DOWNLOAD="https://github.com/openvinotoolkit/openvino/archive/2024.0.0/openvino-2024.0.0.tar.gz \
+DOWNLOAD="https://github.com/openvinotoolkit/openvino/archive/2024.1.0/openvino-2024.1.0.tar.gz \
https://github.com/openvinotoolkit/mlas/archive/d1bc25e/mlas-d1bc25ec4660cddd87804fcf03b2411b5dfb2e94.tar.gz \
https://github.com/openvinotoolkit/onednn/archive/26633ae/oneDNN-26633ae49edd4353a29b7170d9fcef6b2d79f4b3.tar.gz \
- https://github.com/oneapi-src/oneDNN/archive/v3.4.1/oneDNN-3.4.1.tar.gz \
https://github.com/google/flatbuffers/archive/v24.3.25/flatbuffers-24.3.25.tar.gz \
https://github.com/onnx/onnx/archive/v1.16.0/onnx-1.16.0.tar.gz \
https://github.com/intel/ittapi/archive/v3.24.4/ittapi-3.24.4.tar.gz"
-MD5SUM="5fec9788393e2f48033e6acf839ee11f \
+MD5SUM="459481c0b3f7fe3fcc2be799fe413308 \
0e87473410db355fd9251a2e1337dc32 \
2cbdb4f80608959b3c013bab745bb807 \
- 8e355bb8b51db1e80e9a93953355f1a9 \
f28f12fc16c72f4e7c22066a35405c3a \
5ef5a7bd4f9dad914bddc3b4335a67cd \
aec402d3441bb8ecb9c8e75bab6cc102"
diff --git a/libraries/pcl/pcl.SlackBuild b/libraries/pcl/pcl.SlackBuild
index c99211b384..fad32479ee 100644
--- a/libraries/pcl/pcl.SlackBuild
+++ b/libraries/pcl/pcl.SlackBuild
@@ -4,7 +4,7 @@
# Copyright 2017 Nikolay Nikolov <nikobnikolov[at]gmail[dot]com>
# All rights reserved.
-# Copyright 2019 Chriastoph Willing Brisbane, Australia
+# Copyright 2019-2024 Christoph Willing Sydney, Australia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -27,7 +27,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=pcl
-VERSION=${VERSION:-1.12.1}
+VERSION=${VERSION:-1.14.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/libraries/pcl/pcl.info b/libraries/pcl/pcl.info
index 02a97014de..5a6657f92c 100644
--- a/libraries/pcl/pcl.info
+++ b/libraries/pcl/pcl.info
@@ -1,8 +1,8 @@
PRGNAM="pcl"
-VERSION="1.12.1"
+VERSION="1.14.0"
HOMEPAGE="http://www.pointclouds.org/"
-DOWNLOAD="https://github.com/PointCloudLibrary/pcl/archive/pcl-1.12.1/pcl-pcl-1.12.1.tar.gz"
-MD5SUM="eb1be79330872f9674c9850bb35023bf"
+DOWNLOAD="https://github.com/PointCloudLibrary/pcl/archive/pcl-1.14.0/pcl-pcl-1.14.0.tar.gz"
+MD5SUM="b0a73380e878837916a782c8ee807ab6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="flann VTK"
diff --git a/libraries/pytorch/README b/libraries/pytorch/README
new file mode 100644
index 0000000000..a27962167a
--- /dev/null
+++ b/libraries/pytorch/README
@@ -0,0 +1,3 @@
+Deep neural networks built on a tape-based autograd system.
+
+This package is a library build, supporting CPU(not GPU).
diff --git a/development/stablediffusion-pipelines-cpp/stablediffusion-pipelines-cpp.SlackBuild b/libraries/pytorch/pytorch.SlackBuild
index 8059d3486a..76967ea5c5 100644
--- a/development/stablediffusion-pipelines-cpp/stablediffusion-pipelines-cpp.SlackBuild
+++ b/libraries/pytorch/pytorch.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Slackware build script for stablediffusion-pipelines-cpp
+# Slackware build script for pytorch
# Copyright 2024 Johannes Schoepfer, Germany
# All rights reserved.
@@ -24,8 +24,8 @@
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=stablediffusion-pipelines-cpp
-VERSION=${VERSION:-0.1}
+PRGNAM=pytorch
+VERSION=${VERSION:-2.3.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -49,10 +49,8 @@ OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "aarch64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
@@ -61,10 +59,8 @@ elif [ "$ARCH" = "x86_64" ]; then
LIBDIRSUFFIX="64"
elif [ "$ARCH" = "arm" ]; then
SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard"
- LIBDIRSUFFIX=""
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
set -e
@@ -72,37 +68,63 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z
-cd $PRGNAM-$VERSION
-
+rm -rf v$PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-v$VERSION.tar.gz
+cd $PRGNAM-v$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} + -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
+chmod -R u+w,go-w,a+rX-st $PKG
-export LIBTORCH_ROOTDIR=/opt/libtorch
+# Fix cmake libdir location
+sed -i c10/CMakeLists.txt \
+ -e "s;DESTINATION lib;DESTINATION lib$LIBDIRSUFFIX;g"
mkdir -p build
cd build
unshare -n cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DOpenVINO_DIR=/usr/share/openvino/runtime/cmake \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DLIBSHM_INSTALL_LIB_SUBDIR="lib$LIBDIRSUFFIX" \
+ -DTORCH_INSTALL_LIB_DIR="lib$LIBDIRSUFFIX" \
+ -DPYTHON_EXECUTABLE=$(which python3) \
+ -DBUILD_TEST=OFF \
+ -DBUILD_CAFFE2=OFF \
+ -DBUILD_CAFFE2_OPS=OFF \
+ -DBUILD_PYTHON=OFF \
+ -DBUILD_CUSTOM_PROTOBUF=OFF \
+ -DUSE_CUDA=OFF \
+ -DUSE_CUDNN=OFF \
+ -DUSE_FBGEMM=OFF \
+ -DUSE_FFMPEG=ON \
+ -DUSE_KINETO=OFF \
+ -DUSE_MKLDNN=OFF \
+ -DUSE_MPI=OFF \
+ -DUSE_NCCL=OFF \
+ -DUSE_NNPACK=OFF \
+ -DUSE_OPENMP=OFF \
+ -DUSE_OPENCL=ON \
+ -DUSE_OPENCV=ON \
+ -DUSE_PTHREADPOOL=OFF \
+ -DUSE_PYTORCH_QNNPACK=OFF \
+ -DUSE_QNNPACK=OFF \
+ -DUSE_SYSTEM_TBB=ON \
+ -DUSE_XNNPACK=OFF \
+ -Wno-dev \
+ -DUSE_DISTRIBUTED=OFF \
-DCMAKE_BUILD_TYPE=Release ..
- cmake --build .
- make install/strip DESTDIR=$PKG
+ make
+ make install/strip DESTDIR=tmpxxx
+
+ mkdir -p $PKG/usr
+ mv tmpxxx/usr/include $PKG/usr
+ mkdir -p $PKG/usr/share
+ mv tmpxxx/usr/share/cmake $PKG/usr/share
+ mkdir -p $PKG/usr/lib$LIBDIRSUFFIX
+ mv tmpxxx/usr/lib$LIBDIRSUFFIX/*.so $PKG/usr/lib$LIBDIRSUFFIX
cd ..
-mv $PKG/usr/local/* $PKG/usr
-[ "$ARCH" = "x86_64" ] && mv $PKG/usr/lib $PKG/usr/lib$LIBDIRSUFFIX
-rmdir $PKG/usr/local
-
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a LICENSE.txt README.md CONTRIBUTING.md $PKG/usr/doc/$PRGNAM-$VERSION
-
+cp -a LICENSE NOTICE README.md RELEASE.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/libraries/pytorch/pytorch.info b/libraries/pytorch/pytorch.info
new file mode 100644
index 0000000000..f8cd244420
--- /dev/null
+++ b/libraries/pytorch/pytorch.info
@@ -0,0 +1,10 @@
+PRGNAM="pytorch"
+VERSION="2.3.0"
+HOMEPAGE="https://pytorch.org/"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/pytorch/pytorch/releases/download/v2.3.0/pytorch-v2.3.0.tar.gz"
+MD5SUM_x86_64="786047d07da744410eb41493a1cd0687"
+REQUIRES="oneTBB protobuf3 OpenBLAS typing-extensions"
+MAINTAINER="Johannes Schoepfer"
+EMAIL="slackbuilds@schoepfer.info"
diff --git a/libraries/pytorch/slack-desc b/libraries/pytorch/slack-desc
new file mode 100644
index 0000000000..72ee22b524
--- /dev/null
+++ b/libraries/pytorch/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+pytorch: pytorch (Tensors and Dynamic neural networks in Python)
+pytorch:
+pytorch: Deep neural networks built on a tape-based autograd system.
+pytorch:
+pytorch: This package is a library build, supporting CPU(not GPU).
+pytorch:
+pytorch:
+pytorch:
+pytorch:
+pytorch: https://pytorch.org
+pytorch:
diff --git a/libraries/rapidjson/fix-build-on-gcc7.diff b/libraries/rapidjson/fix-build-on-gcc7.diff
deleted file mode 100644
index d55a477678..0000000000
--- a/libraries/rapidjson/fix-build-on-gcc7.diff
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -Nur rapidjson-1.1.0.orig/include/rapidjson/internal/regex.h rapidjson-1.1.0/include/rapidjson/internal/regex.h
---- rapidjson-1.1.0.orig/include/rapidjson/internal/regex.h 2016-08-25 02:59:05.000000000 -0500
-+++ rapidjson-1.1.0/include/rapidjson/internal/regex.h 2017-12-27 01:10:17.765316098 -0600
-@@ -29,6 +29,9 @@
- #ifdef __GNUC__
- RAPIDJSON_DIAG_PUSH
- RAPIDJSON_DIAG_OFF(effc++)
-+#if __GNUC__ >= 7
-+RAPIDJSON_DIAG_OFF(implicit-fallthrough)
-+#endif
- #endif
-
- #ifdef _MSC_VER
diff --git a/libraries/rapidjson/rapidjson.SlackBuild b/libraries/rapidjson/rapidjson.SlackBuild
index e1454d89c6..029cf9421d 100644
--- a/libraries/rapidjson/rapidjson.SlackBuild
+++ b/libraries/rapidjson/rapidjson.SlackBuild
@@ -3,6 +3,7 @@
# Slackware build script for RapidJson
# Copyright 2017 Andre Barboza, Belo Horizonte - Brazil
+# Copyright 2024 Jeremy Hansen <jebrhansen+SBo@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -29,7 +30,8 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=rapidjson
VERSION=${VERSION:-1.1.0}
-BUILD=${BUILD:-3}
+GTESTVER=${GTESTVER:-ba96d0b1161f540656efdaed035b3c062b60e006}
+BUILD=${BUILD:-4}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -72,6 +74,9 @@ cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
+rmdir thirdparty/gtest/
+tar xvf $CWD/googletest-$GTESTVER.tar.gz
+mv googletest-$GTESTVER thirdparty/gtest
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -79,26 +84,27 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
-# Patch for -current but should be harmless on -stable
-patch -p1 < $CWD/fix-build-on-gcc7.diff
-find -name CMakeLists.txt | xargs sed -e 's|-Werror||' -i
+# Fix for gcc7+
+find -name CMakeLists.txt -exec sed -i 's/ -Werror//g' {} +
mkdir -p build
cd build
cmake \
- -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -Wno-error" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLIB_INSTALL_DIR=/usr/lib${LIBDIRSUFFIX} \
+ -DDOC_INSTALL_DIR=/usr/doc/$PRGNAM-$VERSION \
+ -DRAPIDJSON_BUILD_THIRDPARTY_GTEST=ON \
-DCMAKE_BUILD_TYPE=Release ..
make
make install DESTDIR=$PKG
cd ..
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-mv $PKG/usr/share/doc/RapidJSON/* $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a CHANGELOG.md license.txt readme.md readme.zh-cn.md $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ CHANGELOG.md license.txt readme.md readme.zh-cn.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-rmdir --parents $PKG/usr/share/doc/RapidJSON 2>/dev/null || true
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/libraries/rapidjson/rapidjson.info b/libraries/rapidjson/rapidjson.info
index 4eff481a5f..281fa98e7a 100644
--- a/libraries/rapidjson/rapidjson.info
+++ b/libraries/rapidjson/rapidjson.info
@@ -1,10 +1,12 @@
PRGNAM="rapidjson"
VERSION="1.1.0"
-HOMEPAGE="https://github.com/miloyip/rapidjson/"
-DOWNLOAD="https://github.com/miloyip/rapidjson/archive/v1.1.0/rapidjson-1.1.0.tar.gz"
-MD5SUM="badd12c511e081fec6c89c43a7027bce"
+HOMEPAGE="https://github.com/Tencent/rapidjson/"
+DOWNLOAD="https://github.com/Tencent/rapidjson/archive/v1.1.0/rapidjson-1.1.0.tar.gz \
+ https://github.com/google/googletest/archive/ba96d0b/googletest-ba96d0b1161f540656efdaed035b3c062b60e006.tar.gz"
+MD5SUM="badd12c511e081fec6c89c43a7027bce \
+ b629364cd39a2dd886d449d9559da0f1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Andre Barboza"
-EMAIL="bmg.andre@gmail.com"
+MAINTAINER="Jeremy Hansen"
+EMAIL="jebrhansen+SBo@@gmail.com"
diff --git a/libraries/rapidjson/slack-desc b/libraries/rapidjson/slack-desc
index 937f0eb30e..cb48eb4d26 100644
--- a/libraries/rapidjson/slack-desc
+++ b/libraries/rapidjson/slack-desc
@@ -15,5 +15,5 @@ rapidjson:
rapidjson:
rapidjson:
rapidjson:
-rapidjson: https://github.com/miloyip/rapidjson
+rapidjson: https://github.com/Tencent/rapidjson
rapidjson:
diff --git a/libraries/spdlog/spdlog.SlackBuild b/libraries/spdlog/spdlog.SlackBuild
index 2895b47708..b94c82e6cb 100644
--- a/libraries/spdlog/spdlog.SlackBuild
+++ b/libraries/spdlog/spdlog.SlackBuild
@@ -27,8 +27,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=spdlog
-VERSION=${VERSION:-1.12.0}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-1.14.1}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/libraries/spdlog/spdlog.info b/libraries/spdlog/spdlog.info
index 2da0e77b10..e4584a4019 100644
--- a/libraries/spdlog/spdlog.info
+++ b/libraries/spdlog/spdlog.info
@@ -1,10 +1,10 @@
PRGNAM="spdlog"
-VERSION="1.12.0"
+VERSION="1.14.1"
HOMEPAGE="https://github.com/gabime/spdlog"
-DOWNLOAD="https://github.com/gabime/spdlog/archive/v1.12.0/spdlog-1.12.0.tar.gz"
-MD5SUM="6b4446526264c1d1276105482adc18d1"
+DOWNLOAD="https://github.com/gabime/spdlog/archive/v1.14.1/spdlog-1.14.1.tar.gz"
+MD5SUM="f2c3f15c20e67b261836ff7bfda302cf"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="Catch2"
+REQUIRES="Catch2 fmt"
MAINTAINER="Steven Voges"
EMAIL="svoges.sbo@gmail.com"
diff --git a/libraries/tclws/tclws.info b/libraries/tclws/tclws.info
index c3f5e6da90..4d7a8cb331 100644
--- a/libraries/tclws/tclws.info
+++ b/libraries/tclws/tclws.info
@@ -2,7 +2,7 @@ PRGNAM="tclws"
VERSION="3.4.0"
HOMEPAGE="https://core.tcl-lang.org/tclws"
DOWNLOAD="https://core.tcl-lang.org/tclws/tarball/tclws-3.4.0.tar.gz"
-MD5SUM="36815313028e90332048d9e16bd0726f"
+MD5SUM="886df07686b75354b6cd70c55316ea82"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="tcllib tcl-tls tDOM"
diff --git a/libraries/yascreen/yascreen.SlackBuild b/libraries/yascreen/yascreen.SlackBuild
index e00d1cd642..ea1ca081f9 100644
--- a/libraries/yascreen/yascreen.SlackBuild
+++ b/libraries/yascreen/yascreen.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for yascreen
-# Copyright 2022-2023 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
+# Copyright 2022-2024 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=yascreen
-VERSION=${VERSION:-1.97}
+VERSION=${VERSION:-1.99}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/libraries/yascreen/yascreen.info b/libraries/yascreen/yascreen.info
index e0006d05b4..c9ad43afc7 100644
--- a/libraries/yascreen/yascreen.info
+++ b/libraries/yascreen/yascreen.info
@@ -1,8 +1,8 @@
PRGNAM="yascreen"
-VERSION="1.97"
+VERSION="1.99"
HOMEPAGE="https://github.com/bbonev/yascreen"
-DOWNLOAD="https://github.com/bbonev/yascreen/releases/download/v1.97/yascreen-1.97.tar.xz"
-MD5SUM="6e0d650760d3376d83cedbff4133f214"
+DOWNLOAD="https://github.com/bbonev/yascreen/releases/download/v1.99/yascreen-1.99.tar.xz"
+MD5SUM="016255de7841ff711e1f778cff7b3c23"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/fcitx5-chinese-addons/fcitx5-chinese-addons.SlackBuild b/misc/fcitx5-chinese-addons/fcitx5-chinese-addons.SlackBuild
index 2d1e5c5a1f..8729f514fe 100644
--- a/misc/fcitx5-chinese-addons/fcitx5-chinese-addons.SlackBuild
+++ b/misc/fcitx5-chinese-addons/fcitx5-chinese-addons.SlackBuild
@@ -80,6 +80,8 @@ cd build
-DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
-DCMAKE_C_FLAGS="${SLKCFLAGS}" \
-DCMAKE_INSTALL_PREFIX="/usr" \
+ -DUSE_QT6="OFF" \
+ -DENABLE_TEST="OFF" \
-DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} ..
make
make install/strip DESTDIR=$PKG
diff --git a/misc/par2cmdline-tbb/par2cmdline-tbb.info b/misc/par2cmdline-tbb/par2cmdline-tbb.info
index abf6afd8b3..d197ad0868 100644
--- a/misc/par2cmdline-tbb/par2cmdline-tbb.info
+++ b/misc/par2cmdline-tbb/par2cmdline-tbb.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/jcfp/par2tbb-chuchusoft-sources/releases/download/0
MD5SUM="8159d5747647d9790ae39e3aedbd2f3c"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="tbb"
+REQUIRES="oneTBB"
MAINTAINER="powtrix"
EMAIL="powtrix@gmail.com"
diff --git a/misc/yubioath-desktop/yubioath-desktop.SlackBuild b/misc/yubioath-desktop/yubioath-desktop.SlackBuild
index 2b0fd0e736..0bb70150f8 100644
--- a/misc/yubioath-desktop/yubioath-desktop.SlackBuild
+++ b/misc/yubioath-desktop/yubioath-desktop.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=yubioath-desktop
-VERSION=${VERSION:-5.0.4}
+VERSION=${VERSION:-5.1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +38,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/misc/yubioath-desktop/yubioath-desktop.info b/misc/yubioath-desktop/yubioath-desktop.info
index 6426460d0d..c435869b24 100644
--- a/misc/yubioath-desktop/yubioath-desktop.info
+++ b/misc/yubioath-desktop/yubioath-desktop.info
@@ -1,10 +1,10 @@
PRGNAM="yubioath-desktop"
-VERSION="5.0.4"
+VERSION="5.1.0"
HOMEPAGE="https://www.yubico.com/products/services-software/download/yubico-authenticator/"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://developers.yubico.com/yubioath-desktop/Releases/yubioath-desktop-5.0.4-linux.AppImage"
-MD5SUM_x86_64="4490045c8910b8f34678a1a3b4541eaa"
+DOWNLOAD_x86_64="https://developers.yubico.com/yubioath-flutter/Releases/yubioath-desktop-5.1.0-linux.AppImage"
+MD5SUM_x86_64="ba9a3d61e6f400f94530baf0f255fee4"
REQUIRES=""
MAINTAINER="Spycrowsoft"
EMAIL="spycrowsoft [ at ] gmail [ dot ] com"
diff --git a/multimedia/droidcam/droidcam.SlackBuild b/multimedia/droidcam/droidcam.SlackBuild
index d2d8ffdfc5..1297ce75f7 100644
--- a/multimedia/droidcam/droidcam.SlackBuild
+++ b/multimedia/droidcam/droidcam.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=droidcam
-VERSION=${VERSION:-1.8.2}
+VERSION=${VERSION:-2.1.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -39,9 +39,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -106,7 +103,7 @@ sed -i "5,6s/local\///" $PKG/usr/share/applications/Droidcam.desktop
sed -i "7s/.*/Icon=\/usr\/share\/icons\/droidcam.png/" $PKG/usr/share/applications/Droidcam.desktop
#Documentation
-cp -a $CWD/README* $PKG/usr/doc/$PRGNAM-$VERSION/
+cp $CWD/README* $PKG/usr/doc/$PRGNAM-$VERSION/
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/multimedia/droidcam/droidcam.info b/multimedia/droidcam/droidcam.info
index 3849af8446..c249de346e 100644
--- a/multimedia/droidcam/droidcam.info
+++ b/multimedia/droidcam/droidcam.info
@@ -1,8 +1,8 @@
PRGNAM="droidcam"
-VERSION="1.8.2"
+VERSION="2.1.3"
HOMEPAGE="https://www.dev47apps.com/"
-DOWNLOAD="https://files.dev47apps.net/linux/droidcam_1.8.2.zip"
-MD5SUM="af019ca66198c501e2ffa813d1c81471"
+DOWNLOAD="https://files.dev47apps.net/linux/droidcam_2.1.3.zip"
+MD5SUM="9e4034e81ba9be6c9a37d6f38c4d4f62"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="android-tools dkms"
diff --git a/multimedia/kodi/kodi.info b/multimedia/kodi/kodi.info
index 8ea284404e..5a7f801ab3 100644
--- a/multimedia/kodi/kodi.info
+++ b/multimedia/kodi/kodi.info
@@ -27,6 +27,6 @@ MD5SUM="74501a89f0ea23d2908a9b983ab3d6f8 \
ab9c27629c2a43689c63ff55fd7cbf67"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="zulu-openjdk11 libass flatbuffers tinyxml gtest fmt fstrcmp spdlog tinyxml2 libdisplay-info"
+REQUIRES="zulu-openjdk11 libass flatbuffers tinyxml gtest fstrcmp spdlog tinyxml2 libdisplay-info"
MAINTAINER="Jeremy Hansen"
EMAIL="jebrhansen+SBo@gmail.com"
diff --git a/multimedia/sfnt2woff/sfnt2woff.SlackBuild b/multimedia/sfnt2woff/sfnt2woff.SlackBuild
index a20ab3a34d..b357def98c 100644
--- a/multimedia/sfnt2woff/sfnt2woff.SlackBuild
+++ b/multimedia/sfnt2woff/sfnt2woff.SlackBuild
@@ -26,6 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=sfnt2woff
+SRCNAM=woff-tools
VERSION=${VERSION:-2009.10.03}
SRCVER=20091003
BUILD=${BUILD:-1}
@@ -40,9 +41,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -67,9 +65,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$SRCVER
-tar xvf $CWD/$PRGNAM-$SRCVER.tar.gz
-cd $PRGNAM-$SRCVER
+rm -rf $SRCNAM-$SRCVER
+tar xvf $CWD/$SRCNAM-$SRCVER.tar.gz
+cd $SRCNAM-$SRCVER
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -80,13 +78,13 @@ find -L . \
# Ain't really much to the build process
CC="cc $SLCKFLAGS" make
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
# There's no "make install", but we can do that ourselves.
mkdir -p $PKG/usr/bin
cp -a sfnt2woff woff2sfnt $PKG/usr/bin
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/multimedia/sfnt2woff/sfnt2woff.info b/multimedia/sfnt2woff/sfnt2woff.info
index f687f5ca67..1c9e706aeb 100644
--- a/multimedia/sfnt2woff/sfnt2woff.info
+++ b/multimedia/sfnt2woff/sfnt2woff.info
@@ -1,8 +1,8 @@
PRGNAM="sfnt2woff"
VERSION="2009.10.03"
-HOMEPAGE="https://github.com/wget/sfnt2woff"
-DOWNLOAD="https://github.com/wget/sfnt2woff/archive/20091003/sfnt2woff-20091003.tar.gz"
-MD5SUM="38f57b8a1925314ca918280c7536701e"
+HOMEPAGE="https://github.com/wget/woff-tools"
+DOWNLOAD="https://github.com/wget/woff-tools/archive/20091003/woff-tools-20091003.tar.gz"
+MD5SUM="eca28571c45eb412099bb57a0b83ce5e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/shine/fix-bugs.patch b/multimedia/shine/fix-bugs.patch
deleted file mode 100644
index 8e97a12bce..0000000000
--- a/multimedia/shine/fix-bugs.patch
+++ /dev/null
@@ -1,12394 +0,0 @@
-diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
-new file mode 100644
-index 0000000..500a5f6
---- /dev/null
-+++ b/.github/workflows/ci.yml
-@@ -0,0 +1,73 @@
-+name: Build and install
-+
-+on:
-+ push:
-+ branches: [ "main" ]
-+ pull_request:
-+
-+concurrency:
-+ group: ${{ github.workflow }}-${{ github.ref }}
-+ cancel-in-progress: true
-+
-+jobs:
-+ build:
-+ runs-on: ${{ matrix.os }}
-+ strategy:
-+ fail-fast: false
-+ matrix:
-+ os: [macos-latest, ubuntu-latest]
-+ steps:
-+ - uses: actions/checkout@v3
-+ - name: Install required packages on macos
-+ if: matrix.os == 'macos-latest'
-+ run: brew install autoconf automake pkg-config
-+ - name: Install required packages on ubuntu
-+ if: matrix.os == 'ubuntu-latest'
-+ run: sudo apt-get -y install automake autoconf pkg-config
-+ - name: bootstrap
-+ run: ./bootstrap
-+ - name: configure
-+ run: ./configure
-+ - name: make
-+ run: make
-+ - name: make install on macos
-+ if: matrix.os == 'macos-latest'
-+ run: make install
-+ - name: make install on ubuntu
-+ if: matrix.os == 'ubuntu-latest'
-+ run: sudo make install
-+ - name: Test pkg-config setup
-+ run: pkg-config --libs shine
-+
-+ android_build:
-+ runs-on: ubuntu-latest
-+ steps:
-+ - uses: actions/checkout@v3
-+ - uses: nttld/setup-ndk@v1
-+ with:
-+ ndk-version: r25b
-+ local-cache: true
-+ - name: Install autoconf/automake
-+ run: sudo apt-get -y install automake autoconf
-+ - name: bootstrap
-+ run: ./bootstrap
-+ - name: configure
-+ run: ./configure
-+ - name: make android
-+ run: make android
-+
-+ js_build:
-+ runs-on: ubuntu-latest
-+ steps:
-+ - uses: actions/checkout@v3
-+ - uses: mymindstorm/setup-emsdk@v11
-+ - name: JS build
-+ run: |
-+ cd js
-+ make
-+ - uses: actions/setup-node@v3
-+ - name: Run node test
-+ run: |
-+ cd js/test/node
-+ npm install
-+ npm run test
-diff --git a/.gitignore b/.gitignore
-index aa76abe..ffdd74d 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -2,9 +2,9 @@
- obj
- libs
- compile
--android/lib
--android/include
--android/bin
-+android/
-+js/src/post-node.js
-+!android/*.mk
- shine
- shine.pc
- m4
-@@ -82,6 +82,6 @@ src/lib/reservoir.o
- src/lib/tables.lo
- src/lib/tables.o
- shine-*.tar.gz
--*.bc
-+*.o
- *.mp3
- node_modules
-diff --git a/ChangeLog b/ChangeLog
-index 122dae5..0713282 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,8 @@
-+x.y.z ()
-+=====
-+* Be more specific when enabling MIPS assembly routines.
-+* Fix wave header reading on big endian machines (#34)
-+
- 3.1.1 (2017-07-28)
- =====
- * Remove invalid MPEG 2.5 bitrates.
-diff --git a/Makefile.am b/Makefile.am
-index bebf32d..538256c 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -26,14 +26,14 @@ pkgconfigdir = $(libdir)/pkgconfig
- pkgconfig_DATA = shine.pc
-
- android:
-- [ -d android/bin ] || mkdir android/bin
- [ -d android/include ] || mkdir android/include
-- [ -d android/lib ] || mkdir android/lib
-- NDK_PROJECT_PATH=$(shell pwd) ndk-build APP_BUILD_SCRIPT=$(shell pwd)/android/Library.mk
-- cp libs/armeabi/libshine.so android/lib
-+ [ -d android/lib ] || mkdir android/lib
-+ [ -d android/bin ] || mkdir android/bin
- cp src/lib/layer3.h android/include
-+ NDK_PROJECT_PATH=$(shell pwd) ndk-build APP_BUILD_SCRIPT=$(shell pwd)/android/Library.mk
-+ mv libs/* android/lib
- NDK_PROJECT_PATH=$(shell pwd) ndk-build APP_BUILD_SCRIPT=$(shell pwd)/android/Binary.mk
-- cp libs/armeabi/shineenc android/bin
-+ mv libs/* android/bin
-
- clean-local:
- -rm -rf obj libs android/lib android/bin android/include
-diff --git a/README.md b/README.md
-index 1d30cbd..e9b781a 100644
---- a/README.md
-+++ b/README.md
-@@ -2,15 +2,15 @@ Shine: fast fixed-point mp3 encoding
- ====================================
-
- [shine](https://github.com/savonet/shine) is a blazing fast mp3 encoding library implemented in
--fixed-point arithmetic. The library can thus be used to performe super fast mp3 encoding on architectures
--without a FPU, such as `armel`, etc.. It is also, however, also super fast on architectures with a FPU!
-+fixed-point arithmetic. The library can thus be used to perform super fast mp3 encoding on architectures
-+without a FPU, such as `armel`, etc.. It is also super fast on architectures with a FPU!
-
- How to use?
- -----------
-
- The encoding API should be quite straight forward:
-
--```
-+```c
- #include <shine/layer3.h>
-
- (...)
-@@ -42,46 +42,47 @@ shine_close(s);
- How fast is it?
- ---------------
-
--On a [Raspberry Pi](http://www.raspberrypi.org/) (`ARM`, `FPU`):
-+On a macbook pro (`arm64`/M1 pro, `FPU`, December 30, 2022):
-
--Lame, `3m06s`, `1.8x` realtime:
--```
--pi@raspberrypi ~ $ lame bla.wav bla.mp3
--LAME 3.99.5 32bits (http://lame.sf.net)
-+Lame, `88.7x` realtime:
-+```bash
-+LAME 3.100 64bits (http://lame.sf.net)
- Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz
--Encoding bla.wav to bla.mp3
-+Encoding /tmp/decoded.wav to /tmp/lame.mp3
- Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3
- Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
-- 12987/12987 (100%)| 3:06/ 3:06| 3:06/ 3:06| 1.8216x| 0:00
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-+ 12203/12203 (100%)| 0:03/ 0:03| 0:04/ 0:04| 88.773x| 0:00
-+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- kbps LR MS % long switch short %
-- 128.0 0.1 99.9 89.1 6.1 4.9
-+ 128.0 32.6 67.4 96.4 1.9 1.7
- Writing LAME Tag...done
--ReplayGain: -10.5dB
-+ReplayGain: -9.3dB
-+lame -b 128 /tmp/decoded.wav /tmp/lame.mp3 3.55s user 0.05s system 99% cpu 3.609 total
- ```
-
--Shine, `1m35s`, `3.6x` realtime:
-+Shine, `318.0x` realtime:
- ```
--pi@raspberrypi ~ $ shineenc bla.wav bla.mp3
- shineenc (Liquidsoap version)
--WAVE PCM Data, stereo 44100Hz 16bit, duration: 00:05:39
-+WAVE PCM Data, stereo 44100Hz 16bit, duration: 00:05:18
- MPEG-I layer III, stereo Psychoacoustic Model: Shine
- Bitrate: 128 kbps De-emphasis: none Original
--Encoding "bla.wav" to "bla.mp3"
--Finished in 00:01:35 (3.6x realtime)
-+Encoding "/tmp/bla.wav" to "/tmp/shine.mp3"
-+Finished in 00:00:01 (318.0x realtime)
- ```
-
--Now, on a mac airbook (`x86_64`, `FPU`):
-+### ⚠ The following are outdated tests ⚠
-
--Lame, `15s`, `22x` realtime:
--```
--toots@zulu tmp % lame bla.wav bla.mp3
--LAME 3.99.5 64bits (http://lame.sf.net)
-+On a [Raspberry Pi](http://www.raspberrypi.org/) (`ARM`, `FPU`):
-+
-+Lame, `1.8x` realtime:
-+```bash
-+pi@raspberrypi ~ $ lame bla.wav bla.mp3
-+LAME 3.99.5 32bits (http://lame.sf.net)
- Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz
- Encoding bla.wav to bla.mp3
- Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3
- Frame | CPU time/estim | REAL time/estim | play/CPU | ETA
-- 12987/12987 (100%)| 0:15/ 0:15| 0:17/ 0:17| 22.087x| 0:00
-+ 12987/12987 (100%)| 3:06/ 3:06| 3:06/ 3:06| 1.8216x| 0:00
- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- kbps LR MS % long switch short %
- 128.0 0.1 99.9 89.1 6.1 4.9
-@@ -89,20 +90,21 @@ Writing LAME Tag...done
- ReplayGain: -10.5dB
- ```
-
--Shine, `9s`, `37.7x` realtime:
--```
-+Shine, `3.6x` realtime:
-+```bash
-+pi@raspberrypi ~ $ shineenc bla.wav bla.mp3
- shineenc (Liquidsoap version)
- WAVE PCM Data, stereo 44100Hz 16bit, duration: 00:05:39
- MPEG-I layer III, stereo Psychoacoustic Model: Shine
- Bitrate: 128 kbps De-emphasis: none Original
--Encoding "/tmp/bla.wav" to "/tmp/bla.mp3"
--Finished in 00:00:09 (37.7x realtime)
-+Encoding "bla.wav" to "bla.mp3"
-+Finished in 00:01:35 (3.6x realtime)
- ```
-
- On a Google Nexus 5 (`ARM`, `FPU`):
-
- Shine, `14s`, `24.2x` realtime:
--```
-+```bash
- u0_a65@hammerhead:/mnt/sdcard $ shineenc bla.wav bla.mp3
- shineenc (Liquidsoap version)
- WAVE PCM Data, stereo 44100Hz 16bit, duration: 00:05:39
-@@ -128,7 +130,7 @@ A bit of history
- This code was dug out from the dusty crates of those times before internet
- and github. It apparently was created by Gabriel Bouvigne sometime around
- the end of the 20th century. The encoder was converted circa 2001 by Pete
--Everett to fixed-point arithmetic for the RISC OS. Latest we know, Patrick
-+Everett to fixed-point arithmetic for the RISC OS. Last we know, Patrick
- Roberts had worked on the code to make it multi-platform and more library
- oriented. That was around 2006.
-
-diff --git a/configure.ac b/configure.ac
-index 87a5f68..6d6cb23 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1,6 +1,7 @@
--AC_INIT([shine],[3.1.0],[savonet-users@lists.sourceforge.net])
-+AC_INIT([shine],[3.1.1],[toots@rastageeks.org])
- AM_INIT_AUTOMAKE([subdir-objects])
- LT_INIT
- AC_CONFIG_MACRO_DIR([m4])
- AC_C_BIGENDIAN([CFLAGS="$CFLAGS -DSHINE_BIG_ENDIAN"])
-+AC_CHECK_HEADER([byteswap.h],[CFLAGS="$CFLAGS -DSHINE_HAVE_BSWAP_H"])
- AC_OUTPUT([Makefile shine.pc])
-diff --git a/js/.npmignore b/js/.npmignore
-new file mode 100644
-index 0000000..f1b84a5
---- /dev/null
-+++ b/js/.npmignore
-@@ -0,0 +1,4 @@
-+test/
-+src/
-+Makefile
-+.*
-diff --git a/js/.prettierignore b/js/.prettierignore
-new file mode 100644
-index 0000000..1b64941
---- /dev/null
-+++ b/js/.prettierignore
-@@ -0,0 +1,5 @@
-+.next/
-+dist/
-+stubs/
-+public/audio
-+__ENV.js
-diff --git a/js/.prettierrc b/js/.prettierrc
-new file mode 100644
-index 0000000..a995c49
---- /dev/null
-+++ b/js/.prettierrc
-@@ -0,0 +1,12 @@
-+{
-+ "singleQuote": false,
-+ "quoteProps": "as-needed",
-+ "arrowParens": "avoid",
-+ "tabWidth": 2,
-+ "trailingComma": "es5",
-+ "semi": true,
-+ "jsxSingleQuote": true,
-+ "bracketSameLine": false,
-+ "printWidth": 120,
-+ "parser": "typescript"
-+}
-diff --git a/js/Makefile b/js/Makefile
-index 465ffde..3781b6e 100644
---- a/js/Makefile
-+++ b/js/Makefile
-@@ -1,24 +1,37 @@
- # Emscriptem compilation
-
- EMCC:=emcc
--EXPORTED_FUNCTIONS:='["_shine_check_config", "_shine_js_init",\
-+EXPORTED_FUNCTIONS:='["_malloc", "_free", "_shine_check_config", "_shine_js_init",\
-+ "_shine_js_int16_len", "_shine_js_ptr_len", \
- "_shine_samples_per_pass", "_shine_encode_buffer",\
-- "_shine_flush", "_shine_close"]'
-+ "_shine_flush", "_shine_close"]'
- CFLAGS:=-O3
--LINKFLAGS:=-s EXPORTED_FUNCTIONS=$(EXPORTED_FUNCTIONS) --memory-init-file 0 $(CFLAGS)
-+LINKFLAGS:=-s EXPORTED_FUNCTIONS=$(EXPORTED_FUNCTIONS) -s SINGLE_FILE=1 -s EXPORTED_RUNTIME_METHODS=setValue,getValue --memory-init-file 0 $(CFLAGS)
-+WEB_LINKFLAGS:=$(LINKFLAGS) -s ENVIRONMENT='web' -s EXPORT_NAME='createModule' -s USE_ES6_IMPORT_META=0
-
- C_FILES:=$(wildcard ../src/lib/*.c) src/wrapper.c
- HEADER_FILES:=$(wildcard ../src/lib/*.h)
- SOURCES:=$(C_FILES) $(HEADER_FILES)
--OBJECTS:=$(C_FILES:%.c=%.bc)
-+OBJECTS:=$(C_FILES:%.c=%.o)
-
--all: dist/libshine.js
-+all: dist/libshine_node.js dist/libshine_browser.js
-
--dist/libshine.js: $(SOURCES) $(OBJECTS) src/pre.js src/post.js
-- $(EMCC) $(LINKFLAGS) --pre-js src/pre.js --post-js src/post.js $(OBJECTS) -o $@
-+src/post-node.js: src/libshine_class.js src/libshine_node_wrapper.js
-+ rm -f src/post-node.js
-+ cat src/libshine_class.js src/libshine_node_wrapper.js > src/post-node.js
-
--%.bc: %.c
-+dist/libshine_node.js: $(SOURCES) $(OBJECTS) src/post-node.js
-+ $(EMCC) $(LINKFLAGS) --post-js src/post-node.js $(OBJECTS) -o dist/libshine_node.js
-+
-+dist/libshine_browser_stubs.js: $(SOURCES) $(OBJECTS)
-+ $(EMCC) $(WEB_LINKFLAGS) $(OBJECTS) -o dist/libshine_browser_stubs.mjs
-+ mv dist/libshine_browser_stubs.mjs dist/libshine_browser_stubs.js
-+
-+dist/libshine_browser.js: src/libshine_class.js src/libshine_browser_wrapper.js dist/libshine_browser_stubs.js
-+ cat src/libshine_class.js src/libshine_browser_wrapper.js > dist/libshine_browser.js
-+
-+%.o: %.c
- $(EMCC) $(CFLAGS) -I../src/lib -c $< -o $@
-
- clean:
-- rm -f *.bc ../src/lib/*.bc
-+ rm -rf *.o ../src/lib/*.o dist/libshine*js
-diff --git a/js/README.md b/js/README.md
-index 49ca3f6..d521d4b 100644
---- a/js/README.md
-+++ b/js/README.md
-@@ -1,112 +1,156 @@
- Shine encoder library for Javascript
- ====================================
-
--This directory contains a build of shine for Javascript using
--[kripken/emscripten](https://github.com/kripken/emscripten) and
--located in `dist/libshine.js`
-+This package contains a build of the [shine](https://github.com/toots/shine) fixed-point
-+mp3 encoder compiled for Javascript and wasm using [emscripten-core/emscripten](https://github.com/emscripten-core/emscripten).
-+
-+Install
-+-------
-+
-+Using `npm`:
-+
-+```shell
-+npm install @toots/shine.js
-+```
-+
-+Using `yarn`:
-+
-+```shell
-+yarn add @toots/shine.js
-+```
-+
-+Using `pnpm`:
-+
-+```shell
-+pnpm install @toots/shine.js
-+```
-+
-+In a HTML page:
-+
-+When using `webpack`, the package should point to the correct
-+`libshine_browser.js` file automatically.
-+
-+When using directly as a script, you can load the `libshine_node.js`
-+file as:
-+
-+```html
-+<script src="libshine_node.js"></script>
-+```
-+
-+See: [test/browser](https://github.com/toots/shine/tree/main/js/test/browser) for an example.
-
- How to use?
- -----------
-
- The encoding API should be quite straight forward:
-
--```
--shine = new Shine({
-- samplerate: 44100,
-- bitrate: 128,
-- channels: 2,
-- mode: Shine.STEREO
--});
-+```js
-+import { Shine, StereoModel } from "@toots/shine.js";
-+
-+const exec = async () => {
-+ await Shine.initialized;
-+
-+ shine = new Shine({
-+ samplerate: 44100,
-+ bitrate: 128,
-+ channels: 2,
-+ stereoModel: StereoModel.STEREO
-+ });
-
--// All the magic happens here
--while (..) {
-- // data here is an array of channels.
-- // Channels must have the same number of samples
-- // and both be either Int16Array or Float32Array.
-- encoded = shine.encode(data);
-+ // All the magic happens here
-+ while (..) {
-+ // data here is an array of channels.
-+ // Channels must have the same number of samples
-+ // and both be either Int16Array or Float32Array.
-+ encoded = shine.encode(data);
-+ ...
-+ }
-+
-+ // Close and get remaining data.
-+ flushed = shine.close();
-+
- ...
- }
-
--// Close and get remaining data.
--flushed = shine.close();
--...
-+exec();
- ```
-
- How fast is it?
- ---------------
-
--You can run the test suite located in `test/`. As of now (26/07/2014), only firefox
--and seems to show performances decent enough for real-time encoding while Google Chrome
--can encode between 1X and 2X.
-+You can run the test suite located in `test/`. Encoding rate above `1X` means that
-+the browser should be suitable for real-time encoding.
-+
-+Results, as of December 30, 2022:
-
--Chrome:
-+Chrome (`108.0.5359.124`):
- ```
- Executing encoding test
- Got WAV file.
- Encoding..
- Done encoding.
- File duration: 5.57 seconds
--Encoding time: 5.18 seconds
--Encoding rate: 1.08X
-+Encoding time: 0.08 seconds
-+Encoding rate: 67.96X
-
- Executing rounds test
- Encoding 50 buffers of 4096 samples
- Done encoding
- Total duration: 4.64
--Encoding time: 2.73
--Encoding rate: 1.70X
-+Encoding time: 0.03
-+Encoding rate: 160.00X
- ```
-
--Firefox:
-+Firefox (`108.0.1`):
- ```
- Executing encoding test
- Got WAV file.
- Encoding..
- Done encoding.
- File duration: 5.57 seconds
--Encoding time: 1.48 seconds
--Encoding rate: 3.76X
-+Encoding time: 0.06 seconds
-+Encoding rate: 99.52X
-
- Executing rounds test
- Encoding 50 buffers of 4096 samples
- Done encoding
- Total duration: 4.64
--Encoding time: 0.98
--Encoding rate: 4.72X
-+Encoding time: 0.03
-+Encoding rate: 178.46X
- ```
-
--Safari:
-+Safari (`16.2`):
- ```
- Executing encoding test
- Got WAV file.
- Encoding..
- Done encoding.
- File duration: 5.57 seconds
--Encoding time: 11.77 seconds
--Encoding rate: 0.47X
-+Encoding time: 0.12 seconds
-+Encoding rate: 46.44X
-
- Executing rounds test
- Encoding 50 buffers of 4096 samples
- Done encoding
- Total duration: 4.64
--Encoding time: 6.93
--Encoding rate: 0.67X
-+Encoding time: 0.02
-+Encoding rate: 210.91X
- ```
-
--NodeJS, v0.10.24:
-+NodeJS (`v19.3.0`):
- ```
- Executing encoding test
- Got WAV file.
- Encoding..
- Done encoding.
- File duration: 5.57 seconds
--Encoding time: 22.57 seconds
--Encoding rate: 0.25X
-+Encoding time: 0.06 seconds
-+Encoding rate: 94.45X
-
- Executing rounds test
- Encoding 50 buffers of 4096 samples
- Done encoding
- Total duration: 4.64
--Encoding time: 11.46
--Encoding rate: 0.40X
-+Encoding time: 0.03
-+Encoding rate: 178.46X
- ```
-diff --git a/js/dist/libshine.js b/js/dist/libshine.js
-deleted file mode 100644
-index c44f119..0000000
---- a/js/dist/libshine.js
-+++ /dev/null
-@@ -1,16 +0,0 @@
--var Shine=(function(){var context={};return(function(){var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function shell_read(){throw"no read() available"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function shell_print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function shell_printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}if(!Module["quit"]){Module["quit"]=(function(status,toThrow){throw toThrow})}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i<Runtime.functionPointers.length;i++){if(!Runtime.functionPointers[i]){Runtime.functionPointers[i]=func;return 2*(1+i)}}throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}),removeFunction:(function(index){Runtime.functionPointers[(index-2)/2]=null}),warnOnce:(function(text){if(!Runtime.warnOnce.shown)Runtime.warnOnce.shown={};if(!Runtime.warnOnce.shown[text]){Runtime.warnOnce.shown[text]=1;Module.printErr(text)}}),funcWrappers:{},getFuncWrapper:(function(func,sig){assert(sig);if(!Runtime.funcWrappers[sig]){Runtime.funcWrappers[sig]={}}var sigCache=Runtime.funcWrappers[sig];if(!sigCache[func]){if(sig.length===1){sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func)}}else if(sig.length===2){sigCache[func]=function dynCall_wrapper(arg){return Runtime.dynCall(sig,func,[arg])}}else{sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func,Array.prototype.slice.call(arguments))}}}return sigCache[func]}),getCompilerSetting:(function(name){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"}),stackAlloc:(function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+15&-16;return ret}),staticAlloc:(function(size){var ret=STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+15&-16;return ret}),dynamicAlloc:(function(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0){if(opts&&opts.async){EmterpreterAsync.asyncFinalizers.push((function(){Runtime.stackRestore(stack)}));return}Runtime.stackRestore(stack)}return ret};var sourceRegex=/^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(jsfunc){var parsed=jsfunc.toString().match(sourceRegex).slice(1);return{arguments:parsed[0],body:parsed[1],returnValue:parsed[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource){JSsource={};for(var fun in JSfuncs){if(JSfuncs.hasOwnProperty(fun)){JSsource[fun]=parseJSFunc(JSfuncs[fun])}}}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident);var numericArgs=argTypes.every((function(type){return type==="number"}));var numericRet=returnType!=="string";if(numericRet&&numericArgs){return cfunc}var argNames=argTypes.map((function(x,i){return"$"+i}));var funcstr="(function("+argNames.join(",")+") {";var nargs=argTypes.length;if(!numericArgs){ensureJSsource();funcstr+="var stack = "+JSsource["stackSave"].body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type==="number")continue;var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";";funcstr+=convertCode.body+";";funcstr+=arg+"=("+convertCode.returnValue+");"}}var cfuncname=parseJSFunc((function(){return cfunc})).returnValue;funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");";if(!numericRet){var strgfy=parseJSFunc((function(){return Pointer_stringify})).returnValue;funcstr+="ret = "+strgfy+"(ret);"}if(!numericArgs){ensureJSsource();funcstr+=JSsource["stackRestore"].body.replace("()","(stack)")+";"}funcstr+="return ret})";return eval(funcstr)}}))();Module["ccall"]=ccall;Module["cwrap"]=cwrap;function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];if(typeof curr==="function"){curr=Runtime.getFunctionIndex(curr)}type=singleType||types[i];if(type===0){i++;continue}if(type=="i64")type="i32";setValue(ret+i,curr,type);if(previousType!==type){typeSize=Runtime.getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}Module["allocate"]=allocate;function getMemory(size){if(!staticSealed)return Runtime.staticAlloc(size);if(!runtimeInitialized)return Runtime.dynamicAlloc(size);return _malloc(size)}Module["getMemory"]=getMemory;function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}Module["stackTrace"]=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY<TOTAL_STACK)Module.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")");if(Module["buffer"]){buffer=Module["buffer"]}else{{buffer=new ArrayBuffer(TOTAL_MEMORY)}}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}HEAP32[0]=1668509029;HEAP16[1]=25459;if(HEAPU8[2]!==115||HEAPU8[3]!==99)throw"Runtime error: expected the system to be little-endian!";Module["HEAP"]=HEAP;Module["buffer"]=buffer;Module["HEAP8"]=HEAP8;Module["HEAP16"]=HEAP16;Module["HEAP32"]=HEAP32;Module["HEAPU8"]=HEAPU8;Module["HEAPU16"]=HEAPU16;Module["HEAPU32"]=HEAPU32;Module["HEAPF32"]=HEAPF32;Module["HEAPF64"]=HEAPF64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var lastChar,end;if(dontAddNull){end=buffer+lengthBytesUTF8(string);lastChar=HEAP8[end]}stringToUTF8(string,buffer,Infinity);if(dontAddNull)HEAP8[end]=lastChar}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var ASM_CONSTS=[];STATIC_BASE=Runtime.GLOBAL_BASE;STATICTOP=STATIC_BASE+10560;__ATINIT__.push();allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,104,18,0,0,108,29,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,112,18,0,0,112,29,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,130,18,0,0,121,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,148,18,0,0,130,29,0,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,180,18,0,0,146,29,0,0,6,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,212,18,0,0,162,29,0,0,6,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,28,19,0,0,198,29,0,0,6,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,100,19,0,0,234,29,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,172,19,0,0,14,30,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,44,20,0,0,78,30,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,172,20,0,0,142,30,0,0,16,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,44,21,0,0,206,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,44,23,0,0,206,31,0,0,16,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,2,0,0,0,3,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,3,0,0,0,7,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,4,0,0,0,15,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,6,0,0,0,63,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,8,0,0,0,255,0,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,10,0,0,0,255,3,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,13,0,0,0,255,31,0,0,44,25,0,0,206,32,0,0,16,0,0,0,16,0,0,0,4,0,0,0,15,0,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,5,0,0,0,31,0,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,6,0,0,0,63,0,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,7,0,0,0,127,0,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,8,0,0,0,255,0,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,9,0,0,0,255,1,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,11,0,0,0,255,7,0,0,44,27,0,0,206,33,0,0,16,0,0,0,16,0,0,0,13,0,0,0,255,31,0,0,44,27,0,0,206,33,0,0,1,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,44,29,0,0,206,34,0,0,1,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,76,29,0,0,222,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,6,0,0,0,11,0,0,0,16,0,0,0,21,0,0,0,1,0,0,0,255,255,255,255,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,68,172,0,0,128,187,0,0,0,125,0,0,34,86,0,0,192,93,0,0,128,62,0,0,17,43,0,0,224,46,0,0,64,31,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,8,0,0,0,255,255,255,255,8,0,0,0,32,0,0,0,16,0,0,0,255,255,255,255,16,0,0,0,40,0,0,0,24,0,0,0,255,255,255,255,24,0,0,0,48,0,0,0,32,0,0,0,255,255,255,255,32,0,0,0,56,0,0,0,40,0,0,0,255,255,255,255,40,0,0,0,64,0,0,0,48,0,0,0,255,255,255,255,48,0,0,0,80,0,0,0,56,0,0,0,255,255,255,255,56,0,0,0,96,0,0,0,64,0,0,0,255,255,255,255,64,0,0,0,112,0,0,0,255,255,255,255,255,255,255,255,80,0,0,0,128,0,0,0,255,255,255,255,255,255,255,255,96,0,0,0,160,0,0,0,255,255,255,255,255,255,255,255,112,0,0,0,192,0,0,0,255,255,255,255,255,255,255,255,128,0,0,0,224,0,0,0,255,255,255,255,255,255,255,255,144,0,0,0,0,1,0,0,255,255,255,255,255,255,255,255,160,0,0,0,64,1,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,4,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,52,0,0,0,62,0,0,0,74,0,0,0,90,0,0,0,110,0,0,0,134,0,0,0,162,0,0,0,196,0,0,0,238,0,0,0,32,1,0,0,86,1,0,0,162,1,0,0,64,2,0,0,0,0,0,0,4,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,42,0,0,0,50,0,0,0,60,0,0,0,72,0,0,0,88,0,0,0,106,0,0,0,128,0,0,0,156,0,0,0,190,0,0,0,230,0,0,0,20,1,0,0,74,1,0,0,128,1,0,0,64,2,0,0,0,0,0,0,4,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,54,0,0,0,66,0,0,0,82,0,0,0,102,0,0,0,126,0,0,0,156,0,0,0,194,0,0,0,240,0,0,0,40,1,0,0,108,1,0,0,192,1,0,0,38,2,0,0,64,2,0,0,0,0,0,0,6,0,0,0,12,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,54,0,0,0,66,0,0,0,80,0,0,0,96,0,0,0,116,0,0,0,140,0,0,0,168,0,0,0,200,0,0,0,238,0,0,0,28,1,0,0,80,1,0,0,140,1,0,0,208,1,0,0,10,2,0,0,64,2,0,0,0,0,0,0,6,0,0,0,12,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,54,0,0,0,66,0,0,0,80,0,0,0,96,0,0,0,114,0,0,0,136,0,0,0,162,0,0,0,194,0,0,0,232,0,0,0,22,1,0,0,74,1,0,0,138,1,0,0,208,1,0,0,28,2,0,0,64,2,0,0,0,0,0,0,6,0,0,0,12,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,80,0,0,0,96,0,0,0,116,0,0,0,140,0,0,0,168,0,0,0,200,0,0,0,238,0,0,0,248,0,0,0,80,1,0,0,140,1,0,0,208,1,0,0,10,2,0,0,64,2,0,0,0,0,0,0,6,0,0,0,12,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,54,0,0,0,66,0,0,0,80,0,0,0,96,0,0,0,116,0,0,0,140,0,0,0,168,0,0,0,200,0,0,0,238,0,0,0,28,1,0,0,80,1,0,0,140,1,0,0,208,1,0,0,10,2,0,0,64,2,0,0,0,0,0,0,6,0,0,0,12,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,36,0,0,0,44,0,0,0,54,0,0,0,66,0,0,0,80,0,0,0,96,0,0,0,116,0,0,0,140,0,0,0,168,0,0,0,200,0,0,0,238,0,0,0,28,1,0,0,80,1,0,0,140,1,0,0,208,1,0,0,10,2,0,0,64,2,0,0,0,0,0,0,12,0,0,0,24,0,0,0,36,0,0,0,48,0,0,0,60,0,0,0,72,0,0,0,88,0,0,0,108,0,0,0,132,0,0,0,160,0,0,0,192,0,0,0,232,0,0,0,24,1,0,0,80,1,0,0,144,1,0,0,220,1,0,0,54,2,0,0,56,2,0,0,58,2,0,0,60,2,0,0,62,2,0,0,64,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,247,255,255,157,247,255,255,157,247,255,255,157,247,255,255,157,247,255,255,157,247,255,255,58,239,255,255,58,239,255,255,58,239,255,255,58,239,255,255,214,230,255,255,214,230,255,255,214,230,255,255,115,222,255,255,115,222,255,255,15,214,255,255,15,214,255,255,172,205,255,255,72,197,255,255,229,188,255,255,229,188,255,255,129,180,255,255,30,172,255,255,186,163,255,255,87,155,255,255,144,138,255,255,44,130,255,255,101,113,255,255,2,105,255,255,59,88,255,255,215,79,255,255,16,63,255,255,73,46,255,255,31,21,255,255,88,4,255,255,145,243,254,255,103,218,254,255,60,193,254,255,18,168,254,255,75,151,254,255,32,126,254,255,146,92,254,255,104,67,254,255,61,42,254,255,175,8,254,255,133,239,253,255,91,214,253,255,205,180,253,255,162,155,253,255,20,122,253,255,134,88,253,255,92,63,253,255,49,38,253,255,163,4,253,255,221,243,252,255,178,218,252,255,136,193,252,255,163,87,3,0,106,104,3,0,49,121,3,0,148,129,3,0,248,137,3,0,91,146,3,0,91,146,3,0,248,137,3,0,148,129,3,0,205,112,3,0,6,96,3,0,120,62,3,0,234,28,3,0,249,242,2,0,164,192,2,0,79,142,2,0,51,75,2,0,180,255,1,0,209,171,1,0,139,79,1,0,126,226,0,0,112,117,0,0,157,247,255,255,101,113,255,255,202,226,254,255,104,67,254,255,162,155,253,255,121,235,252,255,236,50,252,255,153,105,251,255,226,151,250,255,199,189,249,255,230,210,248,255,4,232,247,255,92,236,246,255,80,232,245,255,68,228,244,255,212,215,243,255,1,195,242,255,203,165,241,255,49,128,240,255,250,98,239,255,96,61,238,255,198,23,237,255,45,242,235,255,147,204,234,255,92,175,233,255,137,154,232,255,182,133,231,255,71,121,230,255,59,117,229,255,246,129,228,255,120,159,227,255,93,197,226,255,109,4,226,255,68,84,225,255,69,189,224,255,113,63,224,255,199,218,223,255,171,151,223,255,186,109,223,255,86,101,223,255,129,126,223,255,157,193,223,255,86,209,31,0,187,66,31,0,203,129,30,0,233,150,29,0,179,121,28,0,39,42,27,0,171,176,25,0,118,252,23,0,235,21,22,0,13,253,19,0,117,169,17,0,236,43,15,0,72,107,12,0,235,111,9,0,156,74,6,0,50,226,2,0,215,79,255,255,195,130,251,255,247,122,247,255,57,73,243,255,38,229,238,255,190,78,234,255,101,142,229,255,27,164,224,255,66,152,219,255,120,98,214,255,132,19,209,255,2,163,203,255,85,25,198,255,69,135,192,255,10,220,186,255,207,48,181,255,49,125,175,255,147,201,169,255,188,38,164,255,72,140,158,255,255,10,153,255,224,162,147,255,179,100,142,255,19,72,137,255,44,102,132,255,254,190,127,255,135,82,123,255,144,49,119,255,124,100,115,255,174,243,111,255,39,223,108,255,16,64,106,255,163,5,104,255,11,73,102,255,170,18,101,255,129,98,100,255,86,73,100,255,42,199,100,255,97,228,101,255,93,169,103,255,130,30,106,255,52,76,109,255,115,50,113,255,5,226,117,255,135,82,123,255,93,140,129,255,78,160,136,255,245,133,144,255,73,186,102,0,9,24,93,0,17,164,82,0,56,69,71,0,226,3,59,0,13,224,45,0,86,209,31,0,133,232,16,0,210,20,1,0,6,103,240,255,187,214,222,255,85,108,204,255,213,39,185,255,1,26,165,255,118,58,144,255,151,145,122,255,200,39,100,255,109,5,77,255,232,50,53,255,58,176,28,255,142,150,3,255,227,229,233,254,156,166,207,254,130,233,180,254,90,191,153,254,37,40,126,254,169,52,98,254,18,254,69,254,251,123,41,254,243,207,12,254,92,2,240,253,255,35,211,253,63,61,182,253,226,94,153,253,19,162,124,253,209,6,96,253,172,174,67,253,163,153,39,253,67,233,11,253,141,157,240,252,171,207,213,252,1,136,187,252,86,215,161,252,212,214,136,252,223,142,112,252,218,7,89,252,239,90,66,252,130,144,44,252,247,176,23,252,120,213,3,252,105,6,241,251,44,76,223,251,38,175,206,251,29,64,191,251,117,7,177,251,145,13,164,251,214,90,152,251,165,247,141,251,0,228,132,251,174,48,125,251,173,221,118,251,255,234,113,251,7,97,110,251,197,63,108,251,200,120,148,4,59,192,147,4,249,158,145,4,1,21,142,4,83,34,137,4,82,207,130,4,0,28,123,4,91,8,114,4,42,165,103,4,111,242,91,4,139,248,78,4,227,191,64,4,218,80,49,4,212,179,32,4,151,249,14,4,136,42,252,3,9,79,232,3,126,111,211,3,17,165,189,3,38,248,166,3,33,113,143,3,44,41,119,3,170,40,94,3,255,119,68,3,85,48,42,3,115,98,15,3,189,22,244,2,93,102,216,2,84,81,188,2,47,249,159,2,237,93,131,2,30,161,102,2,193,194,73,2,1,220,44,2,164,253,15,2,13,48,243,1,5,132,214,1,238,1,186,1,87,203,157,1,219,215,129,1,166,64,102,1,126,22,75,1,100,89,48,1,29,26,22,1,114,105,252,0,198,79,227,0,24,205,202,0,147,250,178,0,56,216,155,0,105,110,133,0,138,197,111,0,255,229,90,0,43,216,70,0,171,147,51,0,69,41,33,0,250,152,15,0,46,235,254,255,123,23,239,255,170,46,224,255,243,31,210,255,30,252,196,255,200,186,184,255,239,91,173,255,247,231,162,255,73,186,102,0,11,122,111,0,178,95,119,0,163,115,126,0,121,173,132,0,251,29,138,0,141,205,142,0,204,179,146,0,126,225,149,0,163,86,152,0,159,27,154,0,214,56,155,0,170,182,155,0,127,157,155,0,86,237,154,0,245,182,153,0,93,250,151,0,240,191,149,0,217,32,147,0,82,12,144,0,132,155,140,0,112,206,136,0,121,173,132,0,2,65,128,0,212,153,123,0,237,183,118,0,77,155,113,0,32,93,108,0,1,245,102,0,184,115,97,0,68,217,91,0,109,54,86,0,207,130,80,0,49,207,74,0,246,35,69,0,187,120,63,0,171,230,57,0,254,92,52,0,124,236,46,0,136,157,41,0,190,103,36,0,229,91,31,0,155,113,26,0,66,177,21,0,218,26,17,0,199,182,12,0,9,133,8,0,61,125,4,0,41,176,0,0,206,29,253,255,100,181,249,255,21,144,246,255,184,148,243,255,20,212,240,255,139,86,238,255,243,2,236,255,21,234,233,255,138,3,232,255,85,79,230,255,217,213,228,255,77,134,227,255,23,105,226,255,53,126,225,255,69,189,224,255,86,209,31,0,99,62,32,0,127,129,32,0,170,154,32,0,70,146,32,0,85,104,32,0,57,37,32,0,143,192,31,0,187,66,31,0,188,171,30,0,147,251,29,0,163,58,29,0,136,96,28,0,10,126,27,0,197,138,26,0,185,134,25,0,74,122,24,0,119,101,23,0,164,80,22,0,109,51,21,0,211,13,20,0,58,232,18,0,160,194,17,0,6,157,16,0,207,127,15,0,53,90,14,0,255,60,13,0,44,40,12,0,188,27,11,0,176,23,10,0,164,19,9,0,252,23,8,0,26,45,7,0,57,66,6,0,30,104,5,0,103,150,4,0,20,205,3,0,135,20,3,0,94,100,2,0,152,188,1,0,54,29,1,0,155,142,0,0,99,8,0,0,144,138,255,255,130,29,255,255,117,176,254,255,47,84,254,255,76,0,254,255,205,180,253,255,177,113,253,255,92,63,253,255,7,13,253,255,22,227,252,255,136,193,252,255,250,159,252,255,51,143,252,255,108,126,252,255,8,118,252,255,165,109,252,255,165,109,252,255,8,118,252,255,108,126,252,255,207,134,252,255,150,151,252,255,163,87,3,0,120,62,3,0,78,37,3,0,35,12,3,0,93,251,2,0,207,217,2,0,164,192,2,0,122,167,2,0,236,133,2,0,94,100,2,0,51,75,2,0,165,41,2,0,123,16,2,0,81,247,1,0,195,213,1,0,152,188,1,0,110,163,1,0,224,129,1,0,181,104,1,0,238,87,1,0,196,62,1,0,153,37,1,0,111,12,1,0,168,251,0,0,225,234,0,0,183,209,0,0,240,192,0,0,41,176,0,0,197,167,0,0,254,150,0,0,155,142,0,0,212,125,0,0,112,117,0,0,169,100,0,0,70,92,0,0,226,83,0,0,127,75,0,0,27,67,0,0,27,67,0,0,184,58,0,0,84,50,0,0,241,41,0,0,241,41,0,0,141,33,0,0,141,33,0,0,42,25,0,0,42,25,0,0,42,25,0,0,198,16,0,0,198,16,0,0,198,16,0,0,198,16,0,0,99,8,0,0,99,8,0,0,99,8,0,0,99,8,0,0,99,8,0,0,99,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,52,37,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,17,0,0,1,0,1,0,1,0,0,0,1,0,2,0,1,0,3,0,1,0,1,0,3,0,2,0,0,0,3,0,2,0,1,0,1,0,1,0,1,0,3,0,2,0,0,0,1,0,2,0,6,0,5,0,3,0,1,0,4,0,4,0,7,0,5,0,7,0,1,0,6,0,1,0,1,0,0,0,7,0,3,0,5,0,1,0,6,0,2,0,3,0,2,0,5,0,4,0,4,0,1,0,3,0,3,0,2,0,0,0,1,0,2,0,10,0,19,0,16,0,10,0,3,0,3,0,7,0,10,0,5,0,3,0,11,0,4,0,13,0,17,0,8,0,4,0,12,0,11,0,18,0,15,0,11,0,2,0,7,0,6,0,9,0,14,0,3,0,1,0,6,0,4,0,5,0,3,0,2,0,0,0,3,0,4,0,6,0,18,0,12,0,5,0,5,0,1,0,2,0,16,0,9,0,3,0,7,0,3,0,5,0,14,0,7,0,3,0,19,0,17,0,15,0,13,0,10,0,4,0,13,0,5,0,8,0,11,0,5,0,1,0,12,0,4,0,4,0,1,0,1,0,0,0,7,0,5,0,9,0,14,0,15,0,7,0,6,0,4,0,5,0,5,0,6,0,7,0,7,0,6,0,8,0,8,0,8,0,5,0,15,0,6,0,9,0,10,0,5,0,1,0,11,0,7,0,9,0,6,0,4,0,1,0,14,0,4,0,6,0,2,0,6,0,0,0,1,0,2,0,10,0,23,0,35,0,30,0,12,0,17,0,3,0,3,0,8,0,12,0,18,0,21,0,12,0,7,0,11,0,9,0,15,0,21,0,32,0,40,0,19,0,6,0,14,0,13,0,22,0,34,0,46,0,23,0,18,0,7,0,20,0,19,0,33,0,47,0,27,0,22,0,9,0,3,0,31,0,22,0,41,0,26,0,21,0,20,0,5,0,3,0,14,0,13,0,10,0,11,0,16,0,6,0,5,0,1,0,9,0,8,0,7,0,8,0,4,0,4,0,2,0,0,0,3,0,4,0,10,0,24,0,34,0,33,0,21,0,15,0,5,0,3,0,4,0,10,0,32,0,17,0,11,0,10,0,11,0,7,0,13,0,18,0,30,0,31,0,20,0,5,0,25,0,11,0,19,0,59,0,27,0,18,0,12,0,5,0,35,0,33,0,31,0,58,0,30,0,16,0,7,0,5,0,28,0,26,0,32,0,19,0,17,0,15,0,8,0,14,0,14,0,12,0,9,0,13,0,14,0,9,0,4,0,1,0,11,0,4,0,6,0,6,0,6,0,3,0,2,0,0,0,9,0,6,0,16,0,33,0,41,0,39,0,38,0,26,0,7,0,5,0,6,0,9,0,23,0,16,0,26,0,11,0,17,0,7,0,11,0,14,0,21,0,30,0,10,0,7,0,17,0,10,0,15,0,12,0,18,0,28,0,14,0,5,0,32,0,13,0,22,0,19,0,18,0,16,0,9,0,5,0,40,0,17,0,31,0,29,0,17,0,13,0,4,0,2,0,27,0,12,0,11,0,15,0,10,0,7,0,4,0,1,0,27,0,12,0,8,0,12,0,6,0,3,0,1,0,0,0,1,0,5,0,14,0,21,0,34,0,51,0,46,0,71,0,42,0,52,0,68,0,52,0,67,0,44,0,43,0,19,0,3,0,4,0,12,0,19,0,31,0,26,0,44,0,33,0,31,0,24,0,32,0,24,0,31,0,35,0,22,0,14,0,15,0,13,0,23,0,36,0,59,0,49,0,77,0,65,0,29,0,40,0,30,0,40,0,27,0,33,0,42,0,16,0,22,0,20,0,37,0,61,0,56,0,79,0,73,0,64,0,43,0,76,0,56,0,37,0,26,0,31,0,25,0,14,0,35,0,16,0,60,0,57,0,97,0,75,0,114,0,91,0,54,0,73,0,55,0,41,0,48,0,53,0,23,0,24,0,58,0,27,0,50,0,96,0,76,0,70,0,93,0,84,0,77,0,58,0,79,0,29,0,74,0,49,0,41,0,17,0,47,0,45,0,78,0,74,0,115,0,94,0,90,0,79,0,69,0,83,0,71,0,50,0,59,0,38,0,36,0,15,0,72,0,34,0,56,0,95,0,92,0,85,0,91,0,90,0,86,0,73,0,77,0,65,0,51,0,44,0,43,0,42,0,43,0,20,0,30,0,44,0,55,0,78,0,72,0,87,0,78,0,61,0,46,0,54,0,37,0,30,0,20,0,16,0,53,0,25,0,41,0,37,0,44,0,59,0,54,0,81,0,66,0,76,0,57,0,54,0,37,0,18,0,39,0,11,0,35,0,33,0,31,0,57,0,42,0,82,0,72,0,80,0,47,0,58,0,55,0,21,0,22,0,26,0,38,0,22,0,53,0,25,0,23,0,38,0,70,0,60,0,51,0,36,0,55,0,26,0,34,0,23,0,27,0,14,0,9,0,7,0,34,0,32,0,28,0,39,0,49,0,75,0,30,0,52,0,48,0,40,0,52,0,28,0,18,0,17,0,9,0,5,0,45,0,21,0,34,0,64,0,56,0,50,0,49,0,45,0,31,0,19,0,12,0,15,0,10,0,7,0,6,0,3,0,48,0,23,0,20,0,39,0,36,0,35,0,53,0,21,0,16,0,23,0,13,0,10,0,6,0,1,0,4,0,2,0,16,0,15,0,17,0,27,0,25,0,20,0,29,0,11,0,17,0,12,0,16,0,8,0,1,0,1,0,0,0,1,0,7,0,12,0,18,0,53,0,47,0,76,0,124,0,108,0,89,0,123,0,108,0,119,0,107,0,81,0,122,0,63,0,13,0,5,0,16,0,27,0,46,0,36,0,61,0,51,0,42,0,70,0,52,0,83,0,65,0,41,0,59,0,36,0,19,0,17,0,15,0,24,0,41,0,34,0,59,0,48,0,40,0,64,0,50,0,78,0,62,0,80,0,56,0,33,0,29,0,28,0,25,0,43,0,39,0,63,0,55,0,93,0,76,0,59,0,93,0,72,0,54,0,75,0,50,0,29,0,52,0,22,0,42,0,40,0,67,0,57,0,95,0,79,0,72,0,57,0,89,0,69,0,49,0,66,0,46,0,27,0,77,0,37,0,35,0,66,0,58,0,52,0,91,0,74,0,62,0,48,0,79,0,63,0,90,0,62,0,40,0,38,0,125,0,32,0,60,0,56,0,50,0,92,0,78,0,65,0,55,0,87,0,71,0,51,0,73,0,51,0,70,0,30,0,109,0,53,0,49,0,94,0,88,0,75,0,66,0,122,0,91,0,73,0,56,0,42,0,64,0,44,0,21,0,25,0,90,0,43,0,41,0,77,0,73,0,63,0,56,0,92,0,77,0,66,0,47,0,67,0,48,0,53,0,36,0,20,0,71,0,34,0,67,0,60,0,58,0,49,0,88,0,76,0,67,0,106,0,71,0,54,0,38,0,39,0,23,0,15,0,109,0,53,0,51,0,47,0,90,0,82,0,58,0,57,0,48,0,72,0,57,0,41,0,23,0,27,0,62,0,9,0,86,0,42,0,40,0,37,0,70,0,64,0,52,0,43,0,70,0,55,0,42,0,25,0,29,0,18,0,11,0,11,0,118,0,68,0,30,0,55,0,50,0,46,0,74,0,65,0,49,0,39,0,24,0,16,0,22,0,13,0,14,0,7,0,91,0,44,0,39,0,38,0,34,0,63,0,52,0,45,0,31,0,52,0,28,0,19,0,14,0,8,0,9,0,3,0,123,0,60,0,58,0,53,0,47,0,43,0,32,0,22,0,37,0,24,0,17,0,12,0,15,0,10,0,2,0,1,0,71,0,37,0,34,0,30,0,28,0,20,0,17,0,26,0,21,0,16,0,10,0,6,0,8,0,6,0,2,0,0,0,1,0,5,0,14,0,44,0,74,0,63,0,110,0,93,0,172,0,149,0,138,0,242,0,225,0,195,0,120,1,17,0,3,0,4,0,12,0,20,0,35,0,62,0,53,0,47,0,83,0,75,0,68,0,119,0,201,0,107,0,207,0,9,0,15,0,13,0,23,0,38,0,67,0,58,0,103,0,90,0,161,0,72,0,127,0,117,0,110,0,209,0,206,0,16,0,45,0,21,0,39,0,69,0,64,0,114,0,99,0,87,0,158,0,140,0,252,0,212,0,199,0,131,1,109,1,26,0,75,0,36,0,68,0,65,0,115,0,101,0,179,0,164,0,155,0,8,1,246,0,226,0,139,1,126,1,106,1,9,0,66,0,30,0,59,0,56,0,102,0,185,0,173,0,9,1,142,0,253,0,232,0,144,1,132,1,122,1,189,1,16,0,111,0,54,0,52,0,100,0,184,0,178,0,160,0,133,0,1,1,244,0,228,0,217,0,129,1,110,1,203,2,10,0,98,0,48,0,91,0,88,0,165,0,157,0,148,0,5,1,248,0,151,1,141,1,116,1,124,1,121,3,116,3,8,0,85,0,84,0,81,0,159,0,156,0,143,0,4,1,249,0,171,1,145,1,136,1,127,1,215,2,201,2,196,2,7,0,154,0,76,0,73,0,141,0,131,0,0,1,245,0,170,1,150,1,138,1,128,1,223,2,103,1,198,2,96,1,11,0,139,0,129,0,67,0,125,0,247,0,233,0,229,0,219,0,137,1,231,2,225,2,208,2,117,3,114,3,183,1,4,0,243,0,120,0,118,0,115,0,227,0,223,0,140,1,234,2,230,2,224,2,209,2,200,2,194,2,223,0,180,1,6,0,202,0,224,0,222,0,218,0,216,0,133,1,130,1,125,1,108,1,120,3,187,1,195,2,184,1,181,1,192,6,4,0,235,2,211,0,210,0,208,0,114,1,123,1,222,2,211,2,202,2,199,6,115,3,109,3,108,3,131,13,97,3,2,0,121,1,113,1,102,0,187,0,214,2,210,2,102,1,199,2,197,2,98,3,198,6,103,3,130,13,102,3,178,1,0,0,12,0,10,0,7,0,11,0,10,0,17,0,11,0,9,0,13,0,12,0,10,0,7,0,5,0,3,0,1,0,3,0,15,0,13,0,46,0,80,0,146,0,6,1,248,0,178,1,170,1,157,2,141,2,137,2,109,2,5,2,8,4,88,0,14,0,12,0,21,0,38,0,71,0,130,0,122,0,216,0,209,0,198,0,71,1,89,1,63,1,41,1,23,1,42,0,47,0,22,0,41,0,74,0,68,0,128,0,120,0,221,0,207,0,194,0,182,0,84,1,59,1,39,1,29,2,18,0,81,0,39,0,75,0,70,0,134,0,125,0,116,0,220,0,204,0,190,0,178,0,69,1,55,1,37,1,15,1,16,0,147,0,72,0,69,0,135,0,127,0,118,0,112,0,210,0,200,0,188,0,96,1,67,1,50,1,29,1,28,2,14,0,7,1,66,0,129,0,126,0,119,0,114,0,214,0,202,0,192,0,180,0,85,1,61,1,45,1,25,1,6,1,12,0,249,0,123,0,121,0,117,0,113,0,215,0,206,0,195,0,185,0,91,1,74,1,52,1,35,1,16,1,8,2,10,0,179,1,115,0,111,0,109,0,211,0,203,0,196,0,187,0,97,1,76,1,57,1,42,1,27,1,19,2,125,1,17,0,171,1,212,0,208,0,205,0,201,0,193,0,186,0,177,0,169,0,64,1,47,1,30,1,12,1,2,2,121,1,16,0,79,1,199,0,197,0,191,0,189,0,181,0,174,0,77,1,65,1,49,1,33,1,19,1,9,2,123,1,115,1,11,0,156,2,184,0,183,0,179,0,175,0,88,1,75,1,58,1,48,1,34,1,21,1,18,2,127,1,117,1,110,1,10,0,140,2,90,1,171,0,168,0,164,0,62,1,53,1,43,1,31,1,20,1,7,1,1,2,119,1,112,1,106,1,6,0,136,2,66,1,60,1,56,1,51,1,46,1,36,1,28,1,13,1,5,1,0,2,120,1,114,1,108,1,103,1,4,0,108,2,44,1,40,1,38,1,32,1,26,1,17,1,10,1,3,2,124,1,118,1,113,1,109,1,105,1,101,1,2,0,9,4,24,1,22,1,18,1,11,1,8,1,3,1,126,1,122,1,116,1,111,1,107,1,104,1,102,1,100,1,0,0,43,0,20,0,19,0,17,0,15,0,13,0,11,0,9,0,7,0,6,0,4,0,7,0,5,0,3,0,1,0,3,0,1,0,5,0,4,0,5,0,6,0,5,0,4,0,4,0,7,0,3,0,6,0,0,0,7,0,2,0,3,0,1,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,0,1,0,0,0,1,3,2,3,1,3,6,3,3,5,5,5,6,2,2,6,3,2,5,5,5,6,1,3,6,7,3,3,6,7,6,6,7,8,7,6,7,8,3,3,5,7,3,2,4,5,4,4,5,6,6,5,6,7,1,3,6,8,8,9,3,4,6,7,7,8,6,5,7,8,8,9,7,7,8,9,9,9,7,7,8,9,9,10,8,8,9,10,10,10,2,3,6,8,8,9,3,2,4,8,8,8,6,4,6,8,8,9,8,8,8,9,9,10,8,7,8,9,10,10,9,8,9,9,11,11,3,3,5,6,8,9,3,3,4,5,6,8,4,4,5,6,7,8,6,5,6,7,7,8,7,6,7,7,8,9,8,7,8,8,9,9,1,3,6,8,9,9,9,10,3,4,6,7,8,9,8,8,6,6,7,8,9,10,9,9,7,7,8,9,10,10,9,10,8,8,9,10,10,10,10,10,9,9,10,10,11,11,10,11,8,8,9,10,10,10,11,11,9,8,9,10,10,11,11,11,2,3,5,7,8,9,8,9,3,3,4,6,8,8,7,8,5,5,6,7,8,9,8,8,7,6,7,9,8,10,8,9,8,8,8,9,9,10,9,10,8,8,9,10,10,11,10,11,8,7,7,8,9,10,10,10,8,7,8,9,10,10,10,10,4,3,5,7,8,9,9,9,3,3,4,5,7,7,8,8,5,4,5,6,7,8,7,8,6,5,6,6,7,8,8,8,7,6,7,7,8,8,8,9,8,7,8,8,8,9,8,9,8,7,7,8,8,9,9,10,9,8,8,9,9,9,9,10,1,4,6,7,8,9,9,10,9,10,11,11,12,12,13,13,3,4,6,7,8,8,9,9,9,9,10,10,11,12,12,12,6,6,7,8,9,9,10,10,9,10,10,11,11,12,13,13,7,7,8,9,9,10,10,10,10,11,11,11,11,12,13,13,8,7,9,9,10,10,11,11,10,11,11,12,12,13,13,14,9,8,9,10,10,10,11,11,11,11,12,11,13,13,14,14,9,9,10,10,11,11,11,11,11,12,12,12,13,13,14,14,10,9,10,11,11,11,12,12,12,12,13,13,13,14,16,16,9,8,9,10,10,11,11,12,12,12,12,13,13,14,15,15,10,9,10,10,11,11,11,13,12,13,13,14,14,14,16,15,10,10,10,11,11,12,12,13,12,13,14,13,14,15,16,17,11,10,10,11,12,12,12,12,13,13,13,14,15,15,15,16,11,11,11,12,12,13,12,13,14,14,15,15,15,16,16,16,12,11,12,13,13,13,14,14,14,14,14,15,16,15,16,16,13,12,12,13,13,13,15,14,14,17,15,15,15,17,16,16,12,12,13,14,14,14,15,14,15,15,16,16,19,18,19,16,3,4,5,7,7,8,9,9,9,10,10,11,11,11,12,13,4,3,5,6,7,7,8,8,8,9,9,10,10,10,11,11,5,5,5,6,7,7,8,8,8,9,9,10,10,11,11,11,6,6,6,7,7,8,8,9,9,9,10,10,10,11,11,11,7,6,7,7,8,8,9,9,9,9,10,10,10,11,11,11,8,7,7,8,8,8,9,9,9,9,10,10,11,11,11,12,9,7,8,8,8,9,9,9,9,10,10,10,11,11,12,12,9,8,8,9,9,9,9,10,10,10,10,10,11,11,11,12,9,8,8,9,9,9,9,10,10,10,10,11,11,12,12,12,9,8,9,9,9,9,10,10,10,11,11,11,11,12,12,12,10,9,9,9,10,10,10,10,10,11,11,11,11,12,13,12,10,9,9,9,10,10,10,10,11,11,11,11,12,12,12,13,11,10,9,10,10,10,11,11,11,11,11,11,12,12,13,13,11,10,10,10,10,11,11,11,11,12,12,12,12,12,13,13,12,11,11,11,11,11,11,11,12,12,12,12,13,13,12,13,12,11,11,11,11,11,11,12,12,12,12,12,13,13,13,13,1,4,6,8,9,9,10,10,11,11,11,12,12,12,13,9,3,4,6,7,8,9,9,9,10,10,10,11,12,11,12,8,6,6,7,8,9,9,10,10,11,10,11,11,11,12,12,9,8,7,8,9,9,10,10,10,11,11,12,12,12,13,13,10,9,8,9,9,10,10,11,11,11,12,12,12,13,13,13,9,9,8,9,9,10,11,11,12,11,12,12,13,13,13,14,10,10,9,9,10,11,11,11,11,12,12,12,12,13,13,14,10,10,9,10,10,11,11,11,12,12,13,13,13,13,15,15,10,10,10,10,11,11,11,12,12,13,13,13,13,14,14,14,10,11,10,10,11,11,12,12,13,13,13,13,14,13,14,13,11,11,11,10,11,12,12,12,12,13,14,14,14,15,15,14,10,12,11,11,11,12,12,13,14,14,14,14,14,14,13,14,11,12,12,12,12,12,13,13,13,13,15,14,14,14,14,16,11,14,12,12,12,13,13,14,14,14,16,15,15,15,17,15,11,13,13,11,12,14,14,13,14,14,15,16,15,17,15,14,11,9,8,8,9,9,10,10,10,11,11,11,11,11,11,11,8,4,4,6,7,8,9,9,10,10,11,11,11,11,11,12,9,4,4,5,6,7,8,8,9,9,9,10,10,10,10,10,8,6,5,6,7,7,8,8,9,9,9,9,10,10,10,11,7,7,6,7,7,8,8,8,9,9,9,9,10,10,10,10,7,8,7,7,8,8,8,8,9,9,9,10,10,10,10,11,7,9,7,8,8,8,8,9,9,9,9,10,10,10,10,10,7,9,8,8,8,8,9,9,9,9,10,10,10,10,10,11,7,10,8,8,8,9,9,9,9,10,10,10,10,10,11,11,8,10,9,9,9,9,9,9,9,9,10,10,10,10,11,11,8,10,9,9,9,9,9,9,10,10,10,10,10,11,11,11,8,11,9,9,9,9,10,10,10,10,10,10,11,11,11,11,8,11,10,9,9,9,10,10,10,10,10,10,11,11,11,11,8,11,10,10,10,10,10,10,10,10,10,11,11,11,11,11,8,11,10,10,10,10,10,10,10,11,11,11,11,11,11,11,8,12,10,10,10,10,10,10,11,11,11,11,11,11,11,11,8,8,7,7,7,7,7,7,7,7,7,7,8,8,8,8,4,1,4,4,5,4,6,5,6,4,5,5,6,5,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;Module["_i64Add"]=_i64Add;function _llvm_exp2_f32(x){return Math.pow(2,x)}function _llvm_exp2_f64(){return _llvm_exp2_f32.apply(null,arguments)}Module["_memset"]=_memset;Module["_bitshift64Lshr"]=_bitshift64Lshr;function _abort(){Module["abort"]()}function ___lock(){}function ___unlock(){}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["___muldsi3"]=___muldsi3;Module["___muldi3"]=___muldi3;function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}Module["_sbrk"]=_sbrk;function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;Module["_llvm_bswap_i32"]=_llvm_bswap_i32;function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j<len;j++){___syscall146.printChar(stream,HEAPU8[ptr+j])}ret+=len}return ret}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}__ATEXIT__.push((function(){var fflush=Module["_fflush"];if(fflush)fflush(0);var printChar=___syscall146.printChar;if(!printChar)return;var buffers=___syscall146.buffers;if(buffers[1].length)printChar(1,10);if(buffers[2].length)printChar(2,10)}));DYNAMICTOP_PTR=allocate(1,"i32",ALLOC_STATIC);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_ii":invoke_ii,"invoke_iiii":invoke_iiii,"_llvm_exp2_f64":_llvm_exp2_f64,"___lock":___lock,"_llvm_exp2_f32":_llvm_exp2_f32,"_abort":_abort,"___setErrNo":___setErrNo,"___syscall6":___syscall6,"___syscall140":___syscall140,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___syscall54":___syscall54,"___unlock":___unlock,"___syscall146":___syscall146,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};// EMSCRIPTEN_START_ASM
--var asm=(function(global,env,buffer) {
--"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.DYNAMICTOP_PTR|0;var j=env.tempDoublePtr|0;var k=env.ABORT|0;var l=env.STACKTOP|0;var m=env.STACK_MAX|0;var n=0;var o=0;var p=0;var q=0;var r=global.NaN,s=global.Infinity;var t=0,u=0,v=0,w=0,x=0.0;var y=0;var z=global.Math.floor;var A=global.Math.abs;var B=global.Math.sqrt;var C=global.Math.pow;var D=global.Math.cos;var E=global.Math.sin;var F=global.Math.tan;var G=global.Math.acos;var H=global.Math.asin;var I=global.Math.atan;var J=global.Math.atan2;var K=global.Math.exp;var L=global.Math.log;var M=global.Math.ceil;var N=global.Math.imul;var O=global.Math.min;var P=global.Math.max;var Q=global.Math.clz32;var R=env.abort;var S=env.assert;var T=env.enlargeMemory;var U=env.getTotalMemory;var V=env.abortOnCannotGrowMemory;var W=env.invoke_ii;var X=env.invoke_iiii;var Y=env._llvm_exp2_f64;var Z=env.___lock;var _=env._llvm_exp2_f32;var $=env._abort;var aa=env.___setErrNo;var ba=env.___syscall6;var ca=env.___syscall140;var da=env._emscripten_memcpy_big;var ea=env.___syscall54;var fa=env.___unlock;var ga=env.___syscall146;var ha=0.0;
--// EMSCRIPTEN_START_FUNCS
--function ka(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}function la(){return l|0}function ma(a){a=a|0;l=a}function na(a,b){a=a|0;b=b|0;l=a;m=b}function oa(a,b){a=a|0;b=b|0;if(!n){n=a;o=b}}function pa(a){a=a|0;y=a}function qa(){return y|0}function ra(a,b){a=a|0;b=b|0;c[a>>2]=gb(b)|0;c[a+4>>2]=b;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=32;return}function sa(a){a=a|0;a=c[a>>2]|0;if(!a)return;hb(a);return}function ta(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=a+16|0;i=c[k>>2]|0;if(i>>>0>d>>>0){d=i-d|0;c[k>>2]=d;k=a+12|0;c[k>>2]=c[k>>2]|b<<d;return}j=a+8|0;e=c[j>>2]|0;g=a+4|0;h=c[g>>2]|0;f=c[a>>2]|0;if((e+4|0)>>>0<h>>>0)g=i;else{f=jb(f,((h|0)/2|0)+h|0)|0;c[a>>2]=f;e=c[g>>2]|0;c[g>>2]=((e|0)/2|0)+e;g=c[k>>2]|0;e=c[j>>2]|0}i=d-g|0;d=a+12|0;c[f+e>>2]=ub(b>>>i|c[d>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+4;j=32-i|0;c[k>>2]=j;c[d>>2]=(i|0)==0?0:b<<j;return}function ua(a){a=a|0;return (c[a+8>>2]<<3)+32-(c[a+16>>2]|0)|0}function va(a){a=a|0;var b=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;C=l;l=l+416|0;B=C;if((c[a>>2]|0)>0){j=a+16|0;g=0;b=c[j>>2]|0;do{if((b|0)>0){f=0;do{b=0;do{if((c[a+25264+(g*4608|0)+(f*2304|0)+(b<<2)>>2]|0)<0?(h=a+2224+(g*4608|0)+(f*2304|0)+(b<<2)|0,i=c[h>>2]|0,(i|0)>0):0)c[h>>2]=0-i;b=b+1|0}while((b|0)!=576);f=f+1|0;b=c[j>>2]|0}while((f|0)<(b|0))}g=g+1|0}while((g|0)<(c[a>>2]|0))}j=a+116|0;tb(B|0,j|0,408)|0;z=a+96|0;ta(z,2047,11);i=a+8|0;ta(z,c[i>>2]|0,2);ta(z,c[a+12>>2]|0,2);ta(z,(c[a+76>>2]|0)==0&1,1);ta(z,c[a+68>>2]|0,4);A=a+72|0;ta(z,(c[A>>2]|0)%3|0,2);ta(z,c[a+32>>2]|0,1);ta(z,c[a+80>>2]|0,1);ta(z,c[a+20>>2]|0,2);ta(z,c[a+84>>2]|0,2);ta(z,c[a+88>>2]|0,1);ta(z,c[a+92>>2]|0,1);ta(z,c[a+28>>2]|0,2);do if((c[i>>2]|0)==3){ta(z,0,9);b=c[B>>2]|0;if((c[a>>2]|0)==2){ta(z,b,3);break}else{ta(z,b,5);break}}else{ta(z,0,8);b=c[B>>2]|0;if((c[a>>2]|0)==2){ta(z,b,2);break}else{ta(z,b,1);break}}while(0);if((c[i>>2]|0)==3?(c[a>>2]|0)>0:0){b=0;do{ta(z,c[B+8+(b<<4)>>2]|0,1);ta(z,c[B+8+(b<<4)+4>>2]|0,1);ta(z,c[B+8+(b<<4)+8>>2]|0,1);ta(z,c[B+8+(b<<4)+12>>2]|0,1);b=b+1|0}while((b|0)<(c[a>>2]|0))}y=a+16|0;b=c[y>>2]|0;if((b|0)>0){h=0;g=c[a>>2]|0;do{if((g|0)>0){f=0;do{ta(z,c[B+40+(h*184|0)+(f*92|0)>>2]|0,12);ta(z,c[B+40+(h*184|0)+(f*92|0)+4>>2]|0,9);ta(z,c[B+40+(h*184|0)+(f*92|0)+12>>2]|0,8);b=c[B+40+(h*184|0)+(f*92|0)+16>>2]|0;if((c[i>>2]|0)==3)ta(z,b,4);else ta(z,b,9);ta(z,0,1);ta(z,c[B+40+(h*184|0)+(f*92|0)+20>>2]|0,5);ta(z,c[B+40+(h*184|0)+(f*92|0)+24>>2]|0,5);ta(z,c[B+40+(h*184|0)+(f*92|0)+28>>2]|0,5);ta(z,c[B+40+(h*184|0)+(f*92|0)+32>>2]|0,4);ta(z,c[B+40+(h*184|0)+(f*92|0)+36>>2]|0,3);if((c[i>>2]|0)==3)ta(z,c[B+40+(h*184|0)+(f*92|0)+40>>2]|0,1);ta(z,c[B+40+(h*184|0)+(f*92|0)+44>>2]|0,1);ta(z,c[B+40+(h*184|0)+(f*92|0)+48>>2]|0,1);f=f+1|0;g=c[a>>2]|0}while((f|0)<(g|0));b=c[y>>2]|0}h=h+1|0}while((h|0)<(b|0))}tb(B|0,j|0,408)|0;if((b|0)<=0){l=C;return}x=0;f=c[a>>2]|0;do{if((f|0)>0){w=(x|0)==0;v=0;do{f=c[B+40+(x*184|0)+(v*92|0)+16>>2]|0;b=c[1044+(f<<2)>>2]|0;f=c[1108+(f<<2)>>2]|0;if(!w?(c[B+8+(v<<4)>>2]|0)!=0:0)t=39;else{ta(z,c[a+1208+(x*176|0)+(v*88|0)>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+4>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+8>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+12>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+16>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+20>>2]|0,b);if(w)t=40;else t=39}if((t|0)==39)if(!(c[B+8+(v<<4)+4>>2]|0))t=40;else t=41;if((t|0)==40){ta(z,c[a+1208+(x*176|0)+(v*88|0)+24>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+28>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+32>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+36>>2]|0,b);ta(z,c[a+1208+(x*176|0)+(v*88|0)+40>>2]|0,b);if(w)t=42;else t=41}if((t|0)==41)if(!(c[B+8+(v<<4)+8>>2]|0))t=42;else t=43;if((t|0)==42){ta(z,c[a+1208+(x*176|0)+(v*88|0)+44>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+48>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+52>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+56>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+60>>2]|0,f);if(w)t=44;else t=43}if((t|0)==43?(t=0,(c[B+8+(v<<4)+12>>2]|0)==0):0)t=44;if((t|0)==44){t=0;ta(z,c[a+1208+(x*176|0)+(v*88|0)+64>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+68>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+72>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+76>>2]|0,f);ta(z,c[a+1208+(x*176|0)+(v*88|0)+80>>2]|0,f)}q=c[A>>2]|0;u=ua(z)|0;b=c[B+40+(x*184|0)+(v*92|0)+4>>2]<<1;s=c[B+40+(x*184|0)+(v*92|0)+32>>2]|0;r=c[1464+(q*92|0)+(s+1<<2)>>2]|0;s=c[1464+(q*92|0)+(s+2+(c[B+40+(x*184|0)+(v*92|0)+36>>2]|0)<<2)>>2]|0;if((b|0)>0){q=0;do{g=c[B+40+(x*184|0)+(v*92|0)+20+(((q|0)>=(r|0)&1)+((q|0)>=(s|0)&1)<<2)>>2]|0;do if(g|0){h=c[a+2224+(v*4608|0)+(x*2304|0)+(q<<2)>>2]|0;k=c[a+2224+(v*4608|0)+(x*2304|0)+((q|1)<<2)>>2]|0;i=(h|0)>0;h=i?h:0-h|0;i=(i^1)&1;o=(k|0)>0;k=o?k:0-k|0;o=(o^1)&1;f=c[8+(g*24|0)+4>>2]|0;if((g|0)<=15){p=(N(f,h)|0)+k|0;j=e[(c[8+(g*24|0)+16>>2]|0)+(p<<1)>>1]|0;n=(h|0)==0;j=n?j:j<<1|i;m=(k|0)==0;ta(z,m?j:j<<1|o,((m^1)&1)+((n^1)&1)+(d[(c[8+(g*24|0)+20>>2]|0)+p>>0]|0)|0);break}m=c[8+(g*24|0)+8>>2]|0;E=(h|0)>14;F=E?15:h;D=(k|0)>14;j=D?15:k;n=(N(F,f)|0)+j|0;p=e[(c[8+(g*24|0)+16>>2]|0)+(n<<1)>>1]|0;n=d[(c[8+(g*24|0)+20>>2]|0)+n>>0]|0;f=E?h+-15|0:0;g=(F|0)==0;f=g?f:f<<1|i;g=(E?m:0)+((g^1)&1)|0;if(!D){if(j)t=51}else{g=g+m|0;f=f<<m|k+2147483633;t=51}if((t|0)==51){t=0;g=g+1|0;f=f<<1|o}ta(z,p,n);ta(z,f,g)}while(0);q=q+2|0}while((q|0)<(b|0))}f=(c[B+40+(x*184|0)+(v*92|0)+48>>2]|0)+32|0;h=(c[B+40+(x*184|0)+(v*92|0)+8>>2]<<2)+b|0;if((b|0)<(h|0)){g=c[8+(f*24|0)+16>>2]|0;f=c[8+(f*24|0)+20>>2]|0;do{E=c[a+2224+(v*4608|0)+(x*2304|0)+(b<<2)>>2]|0;D=c[a+2224+(v*4608|0)+(x*2304|0)+((b|1)<<2)>>2]|0;t=c[a+2224+(v*4608|0)+(x*2304|0)+(b+2<<2)>>2]|0;F=c[a+2224+(v*4608|0)+(x*2304|0)+(b+3<<2)>>2]|0;p=(E|0)>0;E=p?E:0-E|0;q=(D|0)>0;D=q?D:0-D|0;r=(t|0)>0;t=r?t:0-t|0;s=(F|0)>0;F=s?F:0-F|0;o=(D<<1)+E+(t<<2)+(F<<3)|0;ta(z,e[g+(o<<1)>>1]|0,d[f+o>>0]|0);E=(E|0)==0;p=((p|E)^1)&1;D=(D|0)==0;q=D?p:p<<1|(q^1)&1;t=(t|0)==0;r=t?q:q<<1|(r^1)&1;F=(F|0)==0;ta(z,F?r:r<<1|(s^1)&1,((t^1)&1)+(D?(E^1)&1:E?1:2)+((F^1)&1)|0);b=b+4|0}while((b|0)<(h|0))}b=ua(z)|0;b=(c[B+40+(x*184|0)+(v*92|0)>>2]|0)-(c[B+40+(x*184|0)+(v*92|0)+52>>2]|0)+(u-b)|0;if(b|0){f=(b|0)%32|0;if((b+31|0)>>>0>=63){b=(b|0)/32|0;do{b=b+-1|0;ta(z,-1,32)}while((b|0)!=0)}if(f|0)ta(z,(1<<f)+-1|0,f)}v=v+1|0;f=c[a>>2]|0}while((v|0)<(f|0));b=c[y>>2]|0}x=x+1|0}while((x|0)<(b|0));l=C;return}function wa(a,b,e,f,g,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0,O=0,P=0;J=e+72|0;if((b|0)<0)c[J>>2]=(c[J>>2]|0)+-1;v=i+39100|0;w=i+34488|0;x=e+8|0;z=e+4|0;A=e+48|0;C=e+32|0;D=e+36|0;E=e+20|0;F=e+24|0;G=e+28|0;H=e+60|0;I=e+64|0;r=e+68|0;s=i+72|0;t=c[199]|0;u=c[205]|0;do{while(1){f=c[J>>2]|0;c[J>>2]=f+1;f=f+128|0;l=c[i+40480+(f<<2)>>2]|0;q=c[v>>2]|0;m=((l|0)<0)<<31>>31;q=rb(q|0,((q|0)<0)<<31>>31|0,l|0,m|0)|0;nb(q|0,y|0,-2147483648,0)|0;if((y|0)>165140)continue;k=i+39456+(f<<3)|0;j=c[w>>2]|0;g=0;e=0;do{f=c[j+(e<<2)>>2]|0;f=(f|0)>-1?f:0-f|0;f=rb(f|0,((f|0)<0)<<31>>31|0,l|0,m|0)|0;nb(f|0,y|0,-2147483648,0)|0;f=y;if((f|0)<1e4)f=c[i+40992+(f<<2)>>2]|0;else{K=+h[k>>3]*+(c[i+36796+(e<<2)>>2]|0)*4.656612875e-10;f=~~+B(+(+B(+K)*K))}c[a+(e<<2)>>2]=f;g=(g|0)<(f|0)?f:g;e=e+1|0}while((e|0)!=576);if((g|0)<=8192){g=576;break}}while(1){if((g|0)<=1){n=13;break}if(c[a+(g+-1<<2)>>2]|0){n=16;break}f=g+-2|0;if(!(c[a+(f<<2)>>2]|0))g=f;else{n=16;break}}do if((n|0)==13){c[x>>2]=0;n=23}else if((n|0)==16){c[x>>2]=0;if((g|0)>3){j=0;while(1){if((c[a+(g+-1<<2)>>2]|0)>=2){n=24;break}if((c[a+(g+-2<<2)>>2]|0)>=2){n=24;break}if((c[a+(g+-3<<2)>>2]|0)>=2){n=24;break}f=g+-4|0;e=j+1|0;if((c[a+(f<<2)>>2]|0)>=2){n=24;break}c[x>>2]=e;if((f|0)>3){g=f;j=e}else{n=18;break}}if((n|0)==18){n=0;q=f>>1;c[z>>2]=q;g=f;f=q}else if((n|0)==24){n=0;f=g>>>1;c[z>>2]=f;if(!j){k=0;j=0;break}else e=j}j=0;l=g;m=0;k=0;while(1){o=c[a+(l<<2)>>2]|0;L=c[a+((l|1)<<2)>>2]|0;M=c[a+(l+2<<2)>>2]|0;p=c[a+(l+3<<2)>>2]|0;q=(L<<1)+o+(M<<2)+(p<<3)|0;o=(o|0)!=0;p=((M|0)!=0&1)+((L|0)==0?o&1:o?2:1)+((p|0)!=0&1)|0;j=(d[t+q>>0]|0)+j+p|0;k=p+k+(d[u+q>>0]|0)|0;m=m+1|0;if((m|0)==(e|0))break;else l=l+4|0}}else n=23}while(0);if((n|0)==23){f=g>>1;c[z>>2]=f;k=0;j=0}M=(j|0)<(k|0);q=M?j:k;c[A>>2]=(M^1)&1;if(!f){c[C>>2]=0;c[D>>2]=0;j=c[H>>2]|0}else{j=c[s>>2]|0;e=0;while(1)if((c[1464+(j*92|0)+(e<<2)>>2]|0)<(g|0))e=e+1|0;else break;f=c[824+(e<<3)>>2]|0;while(1){k=1464+(j*92|0)+(f+1<<2)|0;l=c[k>>2]|0;if((f|0)!=0&(l|0)>(g|0))f=f+-1|0;else break}c[C>>2]=f;c[H>>2]=l;f=c[824+(e<<3)+4>>2]|0;while(1){e=c[k+(f+1<<2)>>2]|0;if((f|0)!=0&(e|0)>(g|0))f=f+-1|0;else break}c[D>>2]=f;c[I>>2]=e;c[r>>2]=g;j=l}c[E>>2]=0;c[F>>2]=0;c[G>>2]=0;if(!j)k=0;else{k=xa(a,0,j)|0;c[E>>2]=k}e=c[I>>2]|0;n=e>>>0>j>>>0;if(n){o=xa(a,j,e)|0;c[F>>2]=o}else o=0;if(g>>>0>e>>>0){p=xa(a,e,g)|0;c[G>>2]=p}else p=0;do if(k){m=c[8+(k*24|0)+4>>2]|0;l=c[8+(k*24|0)+8>>2]|0;f=(j|0)!=0;if(k>>>0>15){if(!f){f=0;break}k=c[8+(k*24|0)+20>>2]|0;f=0;g=0;do{L=c[a+(g<<2)>>2]|0;M=c[a+((g|1)<<2)>>2]|0;P=(L|0)>14;L=P?15:L;O=(M|0)>14;M=O?15:M;f=(P?l:0)+f+(O?l:0)+(d[k+((N(L,m)|0)+M)>>0]|0)+((L|0)!=0&1)+((M|0)!=0&1)|0;g=g+2|0}while(g>>>0<j>>>0)}else{if(!f){f=0;break}k=c[8+(k*24|0)+20>>2]|0;g=0;f=0;do{O=c[a+(g<<2)>>2]|0;P=c[a+((g|1)<<2)>>2]|0;f=((O|0)!=0&1)+f+((P|0)!=0&1)+(d[k+((N(O,m)|0)+P)>>0]|0)|0;g=g+2|0}while(g>>>0<j>>>0)}}else f=0;while(0);if(o){m=c[8+(o*24|0)+4>>2]|0;l=c[8+(o*24|0)+8>>2]|0;if(o>>>0>15)if(n){k=c[8+(o*24|0)+20>>2]|0;g=0;do{O=c[a+(j<<2)>>2]|0;P=c[a+(j+1<<2)>>2]|0;L=(O|0)>14;O=L?15:O;M=(P|0)>14;P=M?15:P;g=(L?l:0)+g+(M?l:0)+(d[k+((N(O,m)|0)+P)>>0]|0)+((O|0)!=0&1)+((P|0)!=0&1)|0;j=j+2|0}while(j>>>0<e>>>0)}else g=0;else if(n){k=c[8+(o*24|0)+20>>2]|0;g=0;do{O=c[a+(j<<2)>>2]|0;P=c[a+(j+1<<2)>>2]|0;g=((O|0)!=0&1)+g+((P|0)!=0&1)+(d[k+((N(O,m)|0)+P)>>0]|0)|0;j=j+2|0}while(j>>>0<e>>>0)}else g=0;f=g+f|0}if(p){l=c[r>>2]|0;m=c[8+(p*24|0)+4>>2]|0;k=c[8+(p*24|0)+8>>2]|0;g=e>>>0<l>>>0;if(p>>>0>15)if(g){j=c[8+(p*24|0)+20>>2]|0;g=0;do{O=c[a+(e<<2)>>2]|0;P=c[a+(e+1<<2)>>2]|0;L=(O|0)>14;O=L?15:O;M=(P|0)>14;P=M?15:P;g=(L?k:0)+g+(M?k:0)+(d[j+((N(O,m)|0)+P)>>0]|0)+((O|0)!=0&1)+((P|0)!=0&1)|0;e=e+2|0}while(e>>>0<l>>>0)}else g=0;else if(g){j=c[8+(p*24|0)+20>>2]|0;g=0;do{O=c[a+(e<<2)>>2]|0;P=c[a+(e+1<<2)>>2]|0;g=((O|0)!=0&1)+g+((P|0)!=0&1)+(d[j+((N(O,m)|0)+P)>>0]|0)|0;e=e+2|0}while(e>>>0<l>>>0)}else g=0;f=g+f|0}f=f+q|0}while((f|0)>(b|0));return f|0}function xa(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if(b>>>0<e>>>0){f=b;g=0}else{e=0;return e|0}do{m=c[a+(f<<2)>>2]|0;g=(g|0)<(m|0)?m:g;f=f+1|0}while((f|0)!=(e|0));if(!g){e=0;return e|0}if((g|0)>=15){f=g+-15|0;if((c[95]|0)>>>0<f>>>0)if((c[101]|0)>>>0<f>>>0)if((c[107]|0)>>>0<f>>>0)if((c[113]|0)>>>0<f>>>0)if((c[119]|0)>>>0<f>>>0)if((c[125]|0)>>>0<f>>>0)if((c[131]|0)>>>0<f>>>0)if((c[137]|0)>>>0<f>>>0)m=(c[143]|0)>>>0<f>>>0?0:23;else m=22;else m=21;else m=20;else m=19;else m=18;else m=17;else m=16;else m=15;if((c[149]|0)>>>0<f>>>0)if((c[155]|0)>>>0<f>>>0)if((c[161]|0)>>>0<f>>>0)if((c[167]|0)>>>0<f>>>0)if((c[173]|0)>>>0<f>>>0)if((c[179]|0)>>>0<f>>>0)if((c[185]|0)>>>0<f>>>0)l=(c[191]|0)>>>0<f>>>0?0:31;else l=30;else l=29;else l=28;else l=27;else l=26;else l=25;else l=24;if(m){i=c[8+(m*24|0)+4>>2]|0;h=c[8+(m*24|0)+8>>2]|0;j=c[8+(m*24|0)+20>>2]|0;if(m>>>0>15){f=0;g=b;do{n=c[a+(g<<2)>>2]|0;k=c[a+(g+1<<2)>>2]|0;p=(n|0)>14;n=p?15:n;o=(k|0)>14;k=o?15:k;f=(p?h:0)+f+(o?h:0)+(d[j+((N(n,i)|0)+k)>>0]|0)+((n|0)!=0&1)+((k|0)!=0&1)|0;g=g+2|0}while(g>>>0<e>>>0);k=f}else{g=b;f=0;do{o=c[a+(g<<2)>>2]|0;p=c[a+(g+1<<2)>>2]|0;f=((o|0)!=0&1)+f+((p|0)!=0&1)+(d[j+((N(o,i)|0)+p)>>0]|0)|0;g=g+2|0}while(g>>>0<e>>>0);k=f}}else k=0;if(!l){p=0;p=(p|0)<(k|0);p=p?l:m;return p|0}i=c[8+(l*24|0)+4>>2]|0;h=c[8+(l*24|0)+8>>2]|0;j=c[8+(l*24|0)+20>>2]|0;if(l>>>0>15){f=0;g=b;do{o=c[a+(g<<2)>>2]|0;p=c[a+(g+1<<2)>>2]|0;b=(o|0)>14;o=b?15:o;n=(p|0)>14;p=n?15:p;f=(b?h:0)+f+(n?h:0)+(d[j+((N(o,i)|0)+p)>>0]|0)+((o|0)!=0&1)+((p|0)!=0&1)|0;g=g+2|0}while(g>>>0<e>>>0);p=(f|0)<(k|0);p=p?l:m;return p|0}else{g=b;f=0;do{o=c[a+(g<<2)>>2]|0;p=c[a+(g+1<<2)>>2]|0;f=((o|0)!=0&1)+f+((p|0)!=0&1)+(d[j+((N(o,i)|0)+p)>>0]|0)|0;g=g+2|0}while(g>>>0<e>>>0);p=(f|0)<(k|0);p=p?l:m;return p|0}}else k=14;while(1){l=k+-1|0;if(!k){f=0;h=44;break}if((c[8+(l*24|0)>>2]|0)>>>0>g>>>0)break;else k=l}if((h|0)==44)return f|0;if(!l){p=0;return p|0}i=c[8+(l*24|0)+4>>2]|0;h=c[8+(l*24|0)+8>>2]|0;j=c[8+(l*24|0)+20>>2]|0;if(l>>>0>15){f=0;g=b;do{o=c[a+(g<<2)>>2]|0;p=c[a+(g+1<<2)>>2]|0;m=(o|0)>14;o=m?15:o;n=(p|0)>14;p=n?15:p;f=(m?h:0)+f+(n?h:0)+(d[j+((N(o,i)|0)+p)>>0]|0)+((o|0)!=0&1)+((p|0)!=0&1)|0;g=g+2|0}while(g>>>0<e>>>0);j=f}else{g=b;f=0;do{o=c[a+(g<<2)>>2]|0;p=c[a+(g+1<<2)>>2]|0;f=((o|0)!=0&1)+f+((p|0)!=0&1)+(d[j+((N(o,i)|0)+p)>>0]|0)|0;g=g+2|0}while(g>>>0<e>>>0);j=f}switch(k|0){case 3:{h=c[21]|0;i=c[25]|0;f=b;g=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;g=((o|0)!=0&1)+g+((p|0)!=0&1)+(d[i+((N(o,h)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);p=(g|0)>(j|0)?l:3;return p|0}case 6:{h=c[39]|0;i=c[43]|0;f=b;g=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;g=((o|0)!=0&1)+g+((p|0)!=0&1)+(d[i+((N(o,h)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);p=(g|0)>(j|0)?l:6;return p|0}case 8:{g=c[51]|0;h=c[55]|0;f=b;i=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;i=((o|0)!=0&1)+i+((p|0)!=0&1)+(d[h+((N(o,g)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);h=(i|0)>(j|0);k=h?l:8;h=h?j:i;i=c[57]|0;j=c[61]|0;f=b;g=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;g=((o|0)!=0&1)+g+((p|0)!=0&1)+(d[j+((N(o,i)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);return ((g|0)>(h|0)?k:9)|0}case 11:{g=c[69]|0;h=c[73]|0;f=b;i=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;i=((o|0)!=0&1)+i+((p|0)!=0&1)+(d[h+((N(o,g)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);h=(i|0)>(j|0);k=h?l:11;h=h?j:i;i=c[75]|0;j=c[79]|0;f=b;g=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;g=((o|0)!=0&1)+g+((p|0)!=0&1)+(d[j+((N(o,i)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);p=(g|0)>(h|0)?k:12;return p|0}case 14:{h=c[93]|0;i=c[97]|0;f=b;g=0;do{o=c[a+(f<<2)>>2]|0;p=c[a+(f+1<<2)>>2]|0;g=((o|0)!=0&1)+g+((p|0)!=0&1)+(d[i+((N(o,h)|0)+p)>>0]|0)|0;f=f+2|0}while(f>>>0<e>>>0);p=(g|0)>(j|0)?l:15;return p|0}default:{p=l;return p|0}}return 0}function ya(a,b,e,f,g,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,Q=0.0,R=0,S=0,T=0,U=0;K=i+39100|0;L=i+34488|0;M=i+156+(f*184|0)+(g*92|0)+8|0;O=i+156+(f*184|0)+(g*92|0)+4|0;u=i+156+(f*184|0)+(g*92|0)+48|0;v=i+156+(f*184|0)+(g*92|0)+32|0;w=i+156+(f*184|0)+(g*92|0)+36|0;x=i+156+(f*184|0)+(g*92|0)+20|0;z=i+156+(f*184|0)+(g*92|0)+24|0;A=i+156+(f*184|0)+(g*92|0)+28|0;C=i+156+(f*184|0)+(g*92|0)+60|0;D=i+156+(f*184|0)+(g*92|0)+64|0;E=i+156+(f*184|0)+(g*92|0)+68|0;F=i+72|0;G=c[199]|0;H=c[205]|0;t=120;P=-120;do{I=(t|0)/2|0;J=I+P|0;b=J+127|0;n=c[i+40480+(b<<2)>>2]|0;s=c[K>>2]|0;o=((n|0)<0)<<31>>31;s=rb(s|0,((s|0)<0)<<31>>31|0,n|0,o|0)|0;nb(s|0,y|0,-2147483648,0)|0;if((y|0)<=165140){m=i+39456+(b<<3)|0;l=c[L>>2]|0;j=0;k=0;do{b=c[l+(k<<2)>>2]|0;b=(b|0)>-1?b:0-b|0;b=rb(b|0,((b|0)<0)<<31>>31|0,n|0,o|0)|0;nb(b|0,y|0,-2147483648,0)|0;b=y;if((b|0)<1e4)b=c[i+40992+(b<<2)>>2]|0;else{Q=+h[m>>3]*+(c[i+36796+(k<<2)>>2]|0)*4.656612875e-10;b=~~+B(+(+B(+Q)*Q))}c[e+(k<<2)>>2]=b;j=(j|0)<(b|0)?b:j;k=k+1|0}while((k|0)!=576);if((j|0)<=8192){j=576;while(1){if((j|0)<=1){n=10;break}if(c[e+(j+-1<<2)>>2]|0){n=13;break}b=j+-2|0;if(!(c[e+(b<<2)>>2]|0))j=b;else{n=13;break}}do if((n|0)==10){c[M>>2]=0;n=20}else if((n|0)==13){c[M>>2]=0;if((j|0)>3){l=0;while(1){if((c[e+(j+-1<<2)>>2]|0)>=2){n=21;break}if((c[e+(j+-2<<2)>>2]|0)>=2){n=21;break}if((c[e+(j+-3<<2)>>2]|0)>=2){n=21;break}b=j+-4|0;k=l+1|0;if((c[e+(b<<2)>>2]|0)>=2){n=21;break}c[M>>2]=k;if((b|0)>3){j=b;l=k}else{n=15;break}}if((n|0)==15){s=b>>1;c[O>>2]=s;j=b;b=s}else if((n|0)==21){b=j>>>1;c[O>>2]=b;if(!l){c[u>>2]=1;b=0;n=27;break}else k=l}l=0;n=j;o=0;m=0;while(1){q=c[e+(n<<2)>>2]|0;p=c[e+((n|1)<<2)>>2]|0;R=c[e+(n+2<<2)>>2]|0;r=c[e+(n+3<<2)>>2]|0;s=(p<<1)+q+(R<<2)+(r<<3)|0;q=(q|0)!=0;r=((R|0)!=0&1)+((p|0)==0?q&1:q?2:1)+((r|0)!=0&1)|0;l=(d[G+s>>0]|0)+l+r|0;m=r+m+(d[H+s>>0]|0)|0;o=o+1|0;if((o|0)==(k|0)){k=b;n=25;break}else n=n+4|0}}else n=20}while(0);if((n|0)==20){k=j>>1;c[O>>2]=k;m=0;l=0;n=25}if((n|0)==25){n=0;R=(l|0)<(m|0);b=R?l:m;c[u>>2]=(R^1)&1;if(!k){c[v>>2]=0;c[w>>2]=0;s=b;l=c[C>>2]|0}else n=27}if((n|0)==27){m=c[F>>2]|0;l=0;while(1)if((c[1464+(m*92|0)+(l<<2)>>2]|0)<(j|0))l=l+1|0;else break;k=c[824+(l<<3)>>2]|0;while(1){n=1464+(m*92|0)+(k+1<<2)|0;o=c[n>>2]|0;if((k|0)!=0&(o|0)>(j|0))k=k+-1|0;else break}c[v>>2]=k;c[C>>2]=o;k=c[824+(l<<3)+4>>2]|0;while(1){l=c[n+(k+1<<2)>>2]|0;if((k|0)!=0&(l|0)>(j|0))k=k+-1|0;else break}c[w>>2]=k;c[D>>2]=l;c[E>>2]=j;s=b;l=o}c[x>>2]=0;c[z>>2]=0;c[A>>2]=0;if(!l)m=0;else{m=xa(e,0,l)|0;c[x>>2]=m}k=c[D>>2]|0;p=k>>>0>l>>>0;if(p){q=xa(e,l,k)|0;c[z>>2]=q}else q=0;if(j>>>0>k>>>0){r=xa(e,k,j)|0;c[A>>2]=r}else r=0;do if(m){o=c[8+(m*24|0)+4>>2]|0;n=c[8+(m*24|0)+8>>2]|0;b=(l|0)!=0;if(m>>>0>15){if(!b){b=0;break}m=c[8+(m*24|0)+20>>2]|0;b=0;j=0;do{S=c[e+(j<<2)>>2]|0;R=c[e+((j|1)<<2)>>2]|0;U=(S|0)>14;S=U?15:S;T=(R|0)>14;R=T?15:R;b=(U?n:0)+b+(T?n:0)+(d[m+((N(S,o)|0)+R)>>0]|0)+((S|0)!=0&1)+((R|0)!=0&1)|0;j=j+2|0}while(j>>>0<l>>>0)}else{if(!b){b=0;break}m=c[8+(m*24|0)+20>>2]|0;j=0;b=0;do{T=c[e+(j<<2)>>2]|0;U=c[e+((j|1)<<2)>>2]|0;b=((T|0)!=0&1)+b+((U|0)!=0&1)+(d[m+((N(T,o)|0)+U)>>0]|0)|0;j=j+2|0}while(j>>>0<l>>>0)}}else b=0;while(0);if(q){o=c[8+(q*24|0)+4>>2]|0;n=c[8+(q*24|0)+8>>2]|0;if(q>>>0>15)if(p){m=c[8+(q*24|0)+20>>2]|0;j=0;do{T=c[e+(l<<2)>>2]|0;U=c[e+(l+1<<2)>>2]|0;R=(T|0)>14;T=R?15:T;S=(U|0)>14;U=S?15:U;j=(R?n:0)+j+(S?n:0)+(d[m+((N(T,o)|0)+U)>>0]|0)+((T|0)!=0&1)+((U|0)!=0&1)|0;l=l+2|0}while(l>>>0<k>>>0)}else j=0;else if(p){m=c[8+(q*24|0)+20>>2]|0;j=0;do{T=c[e+(l<<2)>>2]|0;U=c[e+(l+1<<2)>>2]|0;j=((T|0)!=0&1)+j+((U|0)!=0&1)+(d[m+((N(T,o)|0)+U)>>0]|0)|0;l=l+2|0}while(l>>>0<k>>>0)}else j=0;b=j+b|0}if(r){n=c[E>>2]|0;o=c[8+(r*24|0)+4>>2]|0;m=c[8+(r*24|0)+8>>2]|0;j=k>>>0<n>>>0;if(r>>>0>15)if(j){l=c[8+(r*24|0)+20>>2]|0;j=0;do{T=c[e+(k<<2)>>2]|0;U=c[e+(k+1<<2)>>2]|0;R=(T|0)>14;T=R?15:T;S=(U|0)>14;U=S?15:U;j=(R?m:0)+j+(S?m:0)+(d[l+((N(T,o)|0)+U)>>0]|0)+((T|0)!=0&1)+((U|0)!=0&1)|0;k=k+2|0}while(k>>>0<n>>>0)}else j=0;else if(j){l=c[8+(r*24|0)+20>>2]|0;j=0;do{T=c[e+(k<<2)>>2]|0;U=c[e+(k+1<<2)>>2]|0;j=((T|0)!=0&1)+j+((U|0)!=0&1)+(d[l+((N(T,o)|0)+U)>>0]|0)|0;k=k+2|0}while(k>>>0<n>>>0)}else j=0;b=j+b|0}b=b+s|0}else b=1e5}else b=1e5;U=(b|0)<(a|0);P=U?P:J;t=U?I:t-I|0}while((t|0)>1);l=i+156+(f*184|0)+(g*92|0)|0;c[i+156+(f*184|0)+(g*92|0)+72>>2]=P;b=c[i+156+(f*184|0)+(g*92|0)+16>>2]|0;k=c[1044+(b<<2)>>2]|0;b=c[1108+(b<<2)>>2]|0;if(f){j=b*5|0;b=((c[i+124+(g<<4)+4>>2]|0)==0?k*5|0:0)+((c[i+124+(g<<4)>>2]|0)==0?k*6|0:0)+((c[i+124+(g<<4)+8>>2]|0)==0?j:0)|0;if(c[i+124+(g<<4)+12>>2]|0){U=b;T=i+156+(f*184|0)+(g*92|0)+52|0;c[T>>2]=U;U=a-U|0;U=wa(e,U,l,0,0,i)|0;T=c[T>>2]|0;U=T+U|0;c[l>>2]=U;return U|0}}else{j=b*5|0;b=j+(k*11|0)|0}U=b+j|0;T=i+156+(f*184|0)+(g*92|0)+52|0;c[T>>2]=U;U=a-U|0;U=wa(e,U,l,0,0,i)|0;T=c[T>>2]|0;U=T+U|0;c[l>>2]=U;return U|0}function za(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;F=l;l=l+672|0;t=F;b=c[a>>2]|0;if(!b){Pa(a);l=F;return}z=a+16|0;A=a+34488|0;B=a+39100|0;C=a+8|0;D=a+72|0;E=a+39452|0;u=a+39448|0;v=a+39104|0;w=a+39108|0;x=b*23|0;d=c[z>>2]|0;s=0;while(1){r=x+(N(s,-23)|0)|0;b=b+-1|0;if((d|0)>0){q=a+((b<<4)+124)|0;p=0;while(1){o=a+140+(r+(p*46|0)<<2)|0;c[A>>2]=a+25264+(b*4608|0)+(p*2304|0);d=576;e=0;a:while(1){c[B>>2]=e;while(1){f=d+-1|0;if(!d)break a;n=c[(c[A>>2]|0)+(f<<2)>>2]|0;e=((n|0)<0)<<31>>31;e=rb(n|0,e|0,n|0,e|0)|0;e=nb(e|0,y|0,1073741824,0)|0;e=pb(e|0,y|0,31)|0;c[a+34492+(f<<2)>>2]=e;e=c[(c[A>>2]|0)+(f<<2)>>2]|0;e=(e|0)>-1?e:0-e|0;c[a+36796+(f<<2)>>2]=e;if((e|0)>(c[B>>2]|0)){d=f;continue a}else d=f}}m=a+2224+(b*4608|0)+(p*2304|0)|0;n=a+156+(p*184|0)+(b*92|0)|0;c[a+156+(p*184|0)+(b*92|0)+56>>2]=21;ob(t+(p*336|0)+(b*168|0)|0,0,168)|0;b:do if((c[C>>2]|0)==3){k=c[D>>2]|0;c[a+39448+(p<<2)>>2]=c[B>>2];d=0;e=575;while(1){d=(c[a+34492+(e<<2)>>2]>>10)+d|0;if(!e)break;else e=e+-1|0}if(!d)d=0;else d=~~(+L(+(+(d|0)*4.768371584e-07))/.69314718);c[a+39104+(p<<2)>>2]=d;i=20;j=c[1464+(k*92|0)+84>>2]|0;while(1){f=j;j=c[1464+(k*92|0)+(i<<2)>>2]|0;if((j|0)<(f|0)){d=0;e=j;do{d=(c[a+34492+(e<<2)>>2]>>10)+d|0;e=e+1|0}while((e|0)!=(f|0));if(d)d=~~(+L(+(+(d|0)*4.768371584e-07))/.69314718);else d=0}else d=0;c[a+39112+(p*84|0)+(i<<2)>>2]=d;g=+h[t+(p*336|0)+(b*168|0)+(i<<3)>>3];if(g!=0.0)d=~~(+L(+g)/.69314718);else d=0;c[a+39280+(p*84|0)+(i<<2)>>2]=d;if(!i)break;else i=i+-1|0}if((p|0)==1){j=(c[u>>2]|0)!=0;e=c[E>>2]|0?3:2;i=(c[v>>2]|0)-(c[w>>2]|0)|0;i=(((i|0)>-1?i:0-i|0)|0)<10;d=0;f=20;while(1){k=(c[a+39112+(f<<2)>>2]|0)-(c[a+39196+(f<<2)>>2]|0)|0;d=((k|0)>-1?k:0-k|0)+d|0;if(!f)break;else f=f+-1|0}if(((j&1)+e+(i&1)+((d|0)<100&1)|0)==6){d=0;e=0}else{c[q>>2]=0;c[q+4>>2]=0;c[q+8>>2]=0;c[q+12>>2]=0;break}do{while(1){k=a+124+(b<<4)+(d<<2)|0;c[k>>2]=0;d=d+1|0;j=e;e=c[1008+(d<<2)>>2]|0;if((j|0)<(e|0)){f=0;i=0;do{G=(c[a+39112+(j<<2)>>2]|0)-(c[a+39196+(j<<2)>>2]|0)|0;f=((G|0)>-1?G:0-G|0)+f|0;G=(c[a+39280+(j<<2)>>2]|0)-(c[a+39364+(j<<2)>>2]|0)|0;i=((G|0)>-1?G:0-G|0)+i|0;j=j+1|0}while((j|0)!=(e|0))}else{i=0;f=0}if((f|0)<10&(i|0)<10)break;c[k>>2]=0;if((d|0)>=4)break b}c[k>>2]=1}while((d|0)<4)}}while(0);d=Na(a+2192+(b<<4)+(p<<3)|0,a)|0;e=a+1208+(p*176|0)+(b*88|0)|0;f=e+88|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));ob(a+1560+(p*312|0)+(b*156|0)|0,0,156)|0;c[o>>2]=0;c[o+4>>2]=0;c[o+8>>2]=0;c[o+12>>2]=0;c[n>>2]=0;c[a+156+(p*184|0)+(b*92|0)+4>>2]=0;c[a+156+(p*184|0)+(b*92|0)+8>>2]=0;e=a+156+(p*184|0)+(b*92|0)+16|0;f=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));if(c[B>>2]|0)c[n>>2]=ya(d,0,m,p,b,a)|0;Oa(n,a);c[a+156+(p*184|0)+(b*92|0)+12>>2]=(c[a+156+(p*184|0)+(b*92|0)+72>>2]|0)+210;p=p+1|0;d=c[z>>2]|0;if((p|0)>=(d|0))break}}if(!b)break;else s=s+1|0}Pa(a);l=F;return}function Aa(a){a=a|0;var b=0,d=0,e=0.0;b=128;d=127;while(1){e=+Y(+(+(128-b|0)*.25));h[a+39456+(d<<3)>>3]=e;e=e*2.0;c[a+40480+(d<<2)>>2]=e>2147483647.0?2147483647:~~(e+.5);if(!d){b=9999;break}else{b=d;d=d+-1|0}}while(1){e=+(b|0);c[a+40992+(b<<2)>>2]=~~(+B(+(e*+B(+e)))+-.0946+.5);if(!b)break;else b=b+-1|0}return}function Ba(a){a=a|0;var b=0,d=0.0,e=0;b=17;while(1){d=+(b<<1|1|0);e=35;while(1){c[a+80992+(b*144|0)+(e<<2)>>2]=~~(+E(+((+(e|0)+.5)*.087266462599717))*+D(+(d*(+((e<<1)+19|0)*.043633231299858195)))*2147483647.0);if(!e)break;else e=e+-1|0}if(!b)break;else b=b+-1|0}return}function Ca(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;s=l;l=l+144|0;p=s;d=c[a>>2]|0;if(!d){l=s;return}q=a+16|0;r=p+140|0;do{d=d+-1|0;e=c[q>>2]|0;if((e|0)>0){o=a+2184+(d<<2)|0;n=0;do{m=a+25264+(d*4608|0)+(n*2304|0)|0;k=n;n=n+1|0;e=0;do{Ea(o,a+11440+(d*6912|0)+(n*2304|0)+(e<<7)|0,d,a,b);j=e|1;Ea(o,a+11440+(d*6912|0)+(n*2304|0)+(j<<7)|0,d,a,b);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+4|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+12|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+20|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+28|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+36|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+44|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+52|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+60|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+68|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+76|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+84|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+92|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+100|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+108|0;c[i>>2]=0-(c[i>>2]|0);i=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+116|0;c[i>>2]=0-(c[i>>2]|0);j=a+11440+(d*6912|0)+(n*2304|0)+(j<<7)+124|0;c[j>>2]=0-(c[j>>2]|0);e=e+2|0}while((e|0)<18);j=0;while(1){e=18;f=17;while(1){c[p+(f<<2)>>2]=c[a+11440+(d*6912|0)+(k*2304|0)+(f<<7)+(j<<2)>>2];c[p+(e+17<<2)>>2]=c[a+11440+(d*6912|0)+(n*2304|0)+(f<<7)+(j<<2)>>2];if(!f)break;else{e=f;f=f+-1|0}}g=c[r>>2]|0;h=((g|0)<0)<<31>>31;i=17;while(1){e=c[a+80992+(i*144|0)+140>>2]|0;rb(e|0,((e|0)<0)<<31>>31|0,g|0,h|0)|0;e=35;f=y;do{v=e+-1|0;t=c[p+(v<<2)>>2]|0;v=c[a+80992+(i*144|0)+(v<<2)>>2]|0;rb(v|0,((v|0)<0)<<31>>31|0,t|0,((t|0)<0)<<31>>31|0)|0;t=y+f|0;v=e+-2|0;u=c[p+(v<<2)>>2]|0;v=c[a+80992+(i*144|0)+(v<<2)>>2]|0;rb(v|0,((v|0)<0)<<31>>31|0,u|0,((u|0)<0)<<31>>31|0)|0;t=t+y|0;u=e+-3|0;v=c[p+(u<<2)>>2]|0;u=c[a+80992+(i*144|0)+(u<<2)>>2]|0;rb(u|0,((u|0)<0)<<31>>31|0,v|0,((v|0)<0)<<31>>31|0)|0;t=t+y|0;v=e+-4|0;u=c[p+(v<<2)>>2]|0;v=c[a+80992+(i*144|0)+(v<<2)>>2]|0;rb(v|0,((v|0)<0)<<31>>31|0,u|0,((u|0)<0)<<31>>31|0)|0;t=t+y|0;u=e+-5|0;v=c[p+(u<<2)>>2]|0;u=c[a+80992+(i*144|0)+(u<<2)>>2]|0;rb(u|0,((u|0)<0)<<31>>31|0,v|0,((v|0)<0)<<31>>31|0)|0;t=t+y|0;v=e+-6|0;u=c[p+(v<<2)>>2]|0;v=c[a+80992+(i*144|0)+(v<<2)>>2]|0;rb(v|0,((v|0)<0)<<31>>31|0,u|0,((u|0)<0)<<31>>31|0)|0;t=t+y|0;e=e+-7|0;u=c[p+(e<<2)>>2]|0;v=c[a+80992+(i*144|0)+(e<<2)>>2]|0;rb(v|0,((v|0)<0)<<31>>31|0,u|0,((u|0)<0)<<31>>31|0)|0;f=t+y|0}while((e|0)!=0);c[m+(j*72|0)+(i<<2)>>2]=f;if(!i)break;else i=i+-1|0}if(!j){j=1;continue}v=m+(j*72|0)|0;e=c[v>>2]|0;u=((e|0)<0)<<31>>31;w=rb(e|0,u|0,1841452035,0)|0;i=y;t=j+-1|0;h=m+(t*72|0)+68|0;g=c[h>>2]|0;f=((g|0)<0)<<31>>31;x=rb(g|0,f|0,1104871221,0)|0;i=nb(x|0,y|0,w|0,i|0)|0;i=pb(i|0,y|0,31)|0;u=rb(e|0,u|0,-1104871221,-1)|0;e=y;f=rb(g|0,f|0,1841452035,0)|0;e=nb(f|0,y|0,u|0,e|0)|0;e=pb(e|0,y|0,31)|0;c[h>>2]=e;c[v>>2]=i;v=m+(j*72|0)+4|0;i=c[v>>2]|0;h=((i|0)<0)<<31>>31;e=rb(i|0,h|0,1893526520,0)|0;u=y;f=m+(t*72|0)+64|0;g=c[f>>2]|0;w=((g|0)<0)<<31>>31;x=rb(g|0,w|0,1013036688,0)|0;u=nb(x|0,y|0,e|0,u|0)|0;u=pb(u|0,y|0,31)|0;h=rb(i|0,h|0,-1013036688,-1)|0;i=y;w=rb(g|0,w|0,1893526520,0)|0;i=nb(w|0,y|0,h|0,i|0)|0;i=pb(i|0,y|0,31)|0;c[f>>2]=i;c[v>>2]=u;v=m+(j*72|0)+8|0;u=c[v>>2]|0;f=((u|0)<0)<<31>>31;i=rb(u|0,f|0,2039311994,0)|0;h=y;w=m+(t*72|0)+60|0;g=c[w>>2]|0;e=((g|0)<0)<<31>>31;x=rb(g|0,e|0,672972958,0)|0;h=nb(x|0,y|0,i|0,h|0)|0;h=pb(h|0,y|0,31)|0;f=rb(u|0,f|0,-672972958,-1)|0;u=y;e=rb(g|0,e|0,2039311994,0)|0;u=nb(e|0,y|0,f|0,u|0)|0;u=pb(u|0,y|0,31)|0;c[w>>2]=u;c[v>>2]=h;v=m+(j*72|0)+12|0;h=c[v>>2]|0;w=((h|0)<0)<<31>>31;u=rb(h|0,w|0,2111652007,0)|0;f=y;e=m+(t*72|0)+56|0;g=c[e>>2]|0;i=((g|0)<0)<<31>>31;x=rb(g|0,i|0,390655621,0)|0;f=nb(x|0,y|0,u|0,f|0)|0;f=pb(f|0,y|0,31)|0;w=rb(h|0,w|0,-390655621,-1)|0;h=y;i=rb(g|0,i|0,2111652007,0)|0;h=nb(i|0,y|0,w|0,h|0)|0;h=pb(h|0,y|0,31)|0;c[e>>2]=h;c[v>>2]=f;v=m+(j*72|0)+16|0;f=c[v>>2]|0;e=((f|0)<0)<<31>>31;h=rb(f|0,e|0,2137858230,0)|0;w=y;i=m+(t*72|0)+52|0;g=c[i>>2]|0;u=((g|0)<0)<<31>>31;x=rb(g|0,u|0,203096531,0)|0;w=nb(x|0,y|0,h|0,w|0)|0;w=pb(w|0,y|0,31)|0;e=rb(f|0,e|0,-203096531,-1)|0;f=y;u=rb(g|0,u|0,2137858230,0)|0;f=nb(u|0,y|0,e|0,f|0)|0;f=pb(f|0,y|0,31)|0;c[i>>2]=f;c[v>>2]=w;v=m+(j*72|0)+20|0;w=c[v>>2]|0;i=((w|0)<0)<<31>>31;f=rb(w|0,i|0,2145680959,0)|0;e=y;u=m+(t*72|0)+48|0;g=c[u>>2]|0;h=((g|0)<0)<<31>>31;x=rb(g|0,h|0,87972919,0)|0;e=nb(x|0,y|0,f|0,e|0)|0;e=pb(e|0,y|0,31)|0;i=rb(w|0,i|0,-87972919,-1)|0;w=y;h=rb(g|0,h|0,2145680959,0)|0;w=nb(h|0,y|0,i|0,w|0)|0;w=pb(w|0,y|0,31)|0;c[u>>2]=w;c[v>>2]=e;v=m+(j*72|0)+24|0;e=c[v>>2]|0;u=((e|0)<0)<<31>>31;w=rb(e|0,u|0,2147267170,0)|0;i=y;h=m+(t*72|0)+44|0;g=c[h>>2]|0;f=((g|0)<0)<<31>>31;x=rb(g|0,f|0,30491193,0)|0;i=nb(x|0,y|0,w|0,i|0)|0;i=pb(i|0,y|0,31)|0;u=rb(e|0,u|0,-30491193,-1)|0;e=y;f=rb(g|0,f|0,2147267170,0)|0;e=nb(f|0,y|0,u|0,e|0)|0;e=pb(e|0,y|0,31)|0;c[h>>2]=e;c[v>>2]=i;v=m+(j*72|0)+28|0;i=c[v>>2]|0;h=((i|0)<0)<<31>>31;e=rb(i|0,h|0,2147468947,0)|0;u=y;t=m+(t*72|0)+40|0;f=c[t>>2]|0;g=((f|0)<0)<<31>>31;w=rb(f|0,g|0,7945635,0)|0;u=nb(w|0,y|0,e|0,u|0)|0;u=pb(u|0,y|0,31)|0;h=rb(i|0,h|0,-7945635,-1)|0;i=y;g=rb(f|0,g|0,2147468947,0)|0;i=nb(g|0,y|0,h|0,i|0)|0;i=pb(i|0,y|0,31)|0;c[t>>2]=i;c[v>>2]=u;j=j+1|0;if((j|0)==32)break}e=c[q>>2]|0}while((n|0)<(e|0))}tb(a+11440+(d*6912|0)|0,a+11440+(d*6912|0)+(e*2304|0)|0,2304)|0}while((d|0)!=0);l=s;return}function Da(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+16|0;e=j;c[a+83588>>2]=0;c[a+83584>>2]=0;ob(a+91784|0,0,4096)|0;g=31;while(1){i=g<<1|1;b=64;f=63;while(1){d=+D(+(+(N(17-b|0,i)|0)*.049087385212))*1.0e9;h[e>>3]=d;if(!(d>=0.0))+bb(d+-.5,e);else+bb(d+.5,e);c[a+83592+(g<<8)+(f<<2)>>2]=~~(+h[e>>3]*2.147483647);if(!f)break;else{b=f;f=f+-1|0}}if(!g)break;else g=g+-1|0}l=j;return}function Ea(a,b,d,f,g){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+256|0;o=p;j=c[a>>2]|0;n=f+83584+(d<<2)|0;k=g<<5;h=j;i=31;m=c[n>>2]|0;while(1){c[f+91784+(d<<11)+(i+m<<2)>>2]=(e[h>>1]|0)<<16;m=c[n>>2]|0;if(!i)break;else{h=h+(g<<1)|0;i=i+-1|0}}c[a>>2]=j+(k<<1);h=64;a=63;while(1){j=a+m|0;k=c[f+91784+(d<<11)+((j&511)<<2)>>2]|0;g=c[2292+(a<<2)>>2]|0;rb(g|0,((g|0)<0)<<31>>31|0,k|0,((k|0)<0)<<31>>31|0)|0;k=y;g=c[f+91784+(d<<11)+((j+64&511)<<2)>>2]|0;i=c[2292+(h+63<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=y+k|0;g=c[f+91784+(d<<11)+((j+128&511)<<2)>>2]|0;i=c[2292+(h+127<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=k+y|0;g=c[f+91784+(d<<11)+((j+192&511)<<2)>>2]|0;i=c[2292+(h+191<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=k+y|0;g=c[f+91784+(d<<11)+((j+256&511)<<2)>>2]|0;i=c[2292+(h+255<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=k+y|0;g=c[f+91784+(d<<11)+((j+320&511)<<2)>>2]|0;i=c[2292+(h+319<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=k+y|0;g=c[f+91784+(d<<11)+((j+384&511)<<2)>>2]|0;i=c[2292+(h+383<<2)>>2]|0;rb(i|0,((i|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0;k=k+y|0;j=c[f+91784+(d<<11)+((j+448&511)<<2)>>2]|0;g=c[2292+(h+447<<2)>>2]|0;rb(g|0,((g|0)<0)<<31>>31|0,j|0,((j|0)<0)<<31>>31|0)|0;c[o+(a<<2)>>2]=k+y;if(!a)break;else{h=a;a=a+-1|0}}c[n>>2]=m+480&511;i=c[o+252>>2]|0;g=((i|0)<0)<<31>>31;j=31;while(1){h=c[f+83592+(j<<8)+252>>2]|0;rb(i|0,g|0,h|0,((h|0)<0)<<31>>31|0)|0;h=y;a=63;do{m=a+-1|0;n=c[f+83592+(j<<8)+(m<<2)>>2]|0;m=c[o+(m<<2)>>2]|0;rb(m|0,((m|0)<0)<<31>>31|0,n|0,((n|0)<0)<<31>>31|0)|0;n=y+h|0;m=a+-2|0;d=c[f+83592+(j<<8)+(m<<2)>>2]|0;m=c[o+(m<<2)>>2]|0;rb(m|0,((m|0)<0)<<31>>31|0,d|0,((d|0)<0)<<31>>31|0)|0;n=n+y|0;d=a+-3|0;m=c[f+83592+(j<<8)+(d<<2)>>2]|0;d=c[o+(d<<2)>>2]|0;rb(d|0,((d|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;n=n+y|0;m=a+-4|0;d=c[f+83592+(j<<8)+(m<<2)>>2]|0;m=c[o+(m<<2)>>2]|0;rb(m|0,((m|0)<0)<<31>>31|0,d|0,((d|0)<0)<<31>>31|0)|0;n=n+y|0;d=a+-5|0;m=c[f+83592+(j<<8)+(d<<2)>>2]|0;d=c[o+(d<<2)>>2]|0;rb(d|0,((d|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0;n=n+y|0;m=a+-6|0;d=c[f+83592+(j<<8)+(m<<2)>>2]|0;m=c[o+(m<<2)>>2]|0;rb(m|0,((m|0)<0)<<31>>31|0,d|0,((d|0)<0)<<31>>31|0)|0;n=n+y|0;a=a+-7|0;d=c[f+83592+(j<<8)+(a<<2)>>2]|0;m=c[o+(a<<2)>>2]|0;rb(m|0,((m|0)<0)<<31>>31|0,d|0,((d|0)<0)<<31>>31|0)|0;h=n+y|0}while((a|0)!=0);c[b+(j<<2)>>2]=h;if(!j)break;else j=j+-1|0}l=p;return}function Fa(a){a=a|0;c[a+4>>2]=128;c[a+8>>2]=0;c[a+12>>2]=0;c[a+16>>2]=1;return}function Ga(a,b){a=a|0;b=b|0;if((c[1208+(b<<2)>>2]|0)==(a|0)){b=0;return b|0}if((c[1224+(b<<2)>>2]|0)==(a|0)){b=1;return b|0}if((c[1240+(b<<2)>>2]|0)==(a|0)){b=2;return b|0}if((c[1256+(b<<2)>>2]|0)==(a|0)){b=3;return b|0}if((c[1272+(b<<2)>>2]|0)==(a|0)){b=4;return b|0}if((c[1288+(b<<2)>>2]|0)==(a|0)){b=5;return b|0}if((c[1304+(b<<2)>>2]|0)==(a|0)){b=6;return b|0}if((c[1320+(b<<2)>>2]|0)==(a|0)){b=7;return b|0}if((c[1336+(b<<2)>>2]|0)==(a|0)){b=8;return b|0}if((c[1352+(b<<2)>>2]|0)==(a|0)){b=9;return b|0}if((c[1368+(b<<2)>>2]|0)==(a|0)){b=10;return b|0}if((c[1384+(b<<2)>>2]|0)==(a|0)){b=11;return b|0}if((c[1400+(b<<2)>>2]|0)==(a|0)){b=12;return b|0}if((c[1416+(b<<2)>>2]|0)==(a|0)){b=13;return b|0}if((c[1432+(b<<2)>>2]|0)==(a|0)){b=14;return b|0}else return ((c[1448+(b<<2)>>2]|0)==(a|0)?15:-1)|0;return 0}function Ha(a,b){a=a|0;b=b|0;if((c[293]|0)!=(a|0))if((c[294]|0)!=(a|0))if((c[295]|0)!=(a|0))if((c[296]|0)!=(a|0))if((c[297]|0)!=(a|0))if((c[298]|0)!=(a|0))if((c[299]|0)!=(a|0))if((c[300]|0)!=(a|0))if((c[301]|0)==(a|0))a=8;else{b=-1;return b|0}else a=7;else a=6;else a=5;else a=4;else a=3;else a=2;else a=1;else a=0;a=a>>>0<3?3:a>>>0<6?2:0;b=(Ga(b,a)|0)<0;b=b?-1:a;return b|0}function Ia(a){a=a|0;return (c[a+16>>2]|0)*576|0}function Ja(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0.0;e=a+4|0;b=c[e>>2]|0;i=a+12|0;d=c[i>>2]|0;j=c[293]|0;if((j|0)!=(b|0))if((c[294]|0)!=(b|0))if((c[295]|0)!=(b|0))if((c[296]|0)!=(b|0))if((c[297]|0)!=(b|0))if((c[298]|0)!=(b|0))if((c[299]|0)!=(b|0))if((c[300]|0)!=(b|0))if((c[301]|0)==(b|0))b=8;else{j=0;return j|0}else b=7;else b=6;else b=5;else b=4;else b=3;else b=2;else b=1;else b=0;if((Ga(d,b>>>0<3?3:b>>>0<6?2:0)|0)<0){j=0;return j|0}g=ib(1,95880)|0;if(!g){j=g;return j|0}Da(g);Ba(g);Aa(g);c[g>>2]=c[a>>2];f=c[e>>2]|0;c[g+4>>2]=f;d=g+8|0;c[g+20>>2]=c[a+8>>2];e=c[i>>2]|0;c[g+24>>2]=e;c[g+28>>2]=c[a+16>>2];c[g+88>>2]=c[a+20>>2];c[g+92>>2]=c[a+24>>2];c[g+34484>>2]=0;c[g+34480>>2]=0;c[g+12>>2]=1;c[g+76>>2]=0;c[g+80>>2]=0;c[g+84>>2]=0;c[g+40>>2]=8;if((j|0)!=(f|0))if((c[294]|0)!=(f|0))if((c[295]|0)!=(f|0))if((c[296]|0)!=(f|0))if((c[297]|0)!=(f|0))if((c[298]|0)!=(f|0))if((c[299]|0)!=(f|0))if((c[300]|0)==(f|0))b=7;else b=(c[301]|0)==(f|0)?8:-1;else b=6;else b=5;else b=4;else b=3;else b=2;else b=1;else b=0;c[g+72>>2]=b;j=(b|0)<3?3:(b|0)<6?2:0;c[d>>2]=j;c[g+68>>2]=Ga(e,j)|0;j=c[1028+(j<<2)>>2]|0;b=g+16|0;c[b>>2]=j;k=+(j|0)*576.0/+(f|0)*(+(e|0)*1.0e3*.125);j=~~k;c[g+64>>2]=j;k=k-+(j|0);h[g+48>>3]=k;h[g+56>>3]=-k;if(k==0.0)c[g+32>>2]=0;ra(g+96|0,4096);ob(g+116|0,0,408)|0;j=(c[g>>2]|0)==1;c[g+524>>2]=(c[b>>2]|0)==2?(j?168:288):j?104:168;j=g;return j|0}function Ka(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0;c[a+2184>>2]=c[b>>2];if((c[a>>2]|0)==2)c[a+2188>>2]=c[b+4>>2];e=+h[a+48>>3];if(e!=0.0){f=a+56|0;i=+h[f>>3];g=i<=e+-1.0;b=g&1;c[a+32>>2]=b;h[f>>3]=i+(+(g&1)-e)}else b=c[a+32>>2]|0;g=(c[a+64>>2]|0)+b<<3;c[a+36>>2]=g;c[a+528>>2]=(g-(c[a+524>>2]|0)|0)/(c[a+16>>2]|0)|0;Ca(a,1);za(a);va(a);g=a+104|0;c[d>>2]=c[g>>2];c[g>>2]=0;return c[a+96>>2]|0}function La(a,b){a=a|0;b=b|0;var d=0;d=a+104|0;c[b>>2]=c[d>>2];c[d>>2]=0;return c[a+96>>2]|0}function Ma(a){a=a|0;sa(a+96|0);hb(a);return}function Na(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b+528>>2]|0)/(c[b>>2]|0)|0;e=(d|0)<4095?d:4095;f=c[b+34484>>2]|0;if(!f){f=e;return f|0}a=~~(+h[a>>3]*3.1-+(d|0));d=c[b+34480>>2]|0;if((a|0)>100){b=(d*6|0)/10|0;a=(b|0)<(a|0)?b:a}else a=0;f=d-((f<<3|0)/10|0)|0;f=((f|0)>(a|0)?f:a)+e|0;f=(f|0)<4095?f:4095;return f|0}function Oa(a,b){a=a|0;b=b|0;var d=0;d=b+34480|0;c[d>>2]=((c[b+528>>2]|0)/(c[b>>2]|0)|0)-(c[a>>2]|0)+(c[d>>2]|0);return}function Pa(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;f=c[a>>2]|0;if((f|0)==2?c[a+528>>2]&1|0:0){h=a+34480|0;c[h>>2]=(c[h>>2]|0)+1}h=a+34480|0;e=c[h>>2]|0;b=e-(c[a+34484>>2]|0)|0;b=(b|0)>0?b:0;e=e-b|0;g=(e|0)%8|0;b=g+b|0;c[h>>2]=e-g;if(!b)return;d=a+156|0;e=(c[d>>2]|0)+b|0;if(e>>>0<4095){c[d>>2]=e;return}h=a+16|0;d=c[h>>2]|0;if((d|0)>0){g=0;e=f;do{if((e|0)>0){f=0;d=e;while(1){if(!b){b=0;e=d;break}e=a+156+(g*184|0)+(f*92|0)|0;i=c[e>>2]|0;d=4095-i|0;d=(d|0)<(b|0)?d:b;c[e>>2]=d+i;b=b-d|0;f=f+1|0;d=c[a>>2]|0;if((f|0)>=(d|0)){e=d;break}}d=c[h>>2]|0}g=g+1|0}while((g|0)<(d|0))}c[a+120>>2]=b;return}function Qa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=l;l=l+32|0;g=f;c[g>>2]=a;c[g+4>>2]=b;b=g+8|0;Fa(b);c[b>>2]=d;c[g+12>>2]=e;e=Ja(g)|0;l=f;return e|0}function Ra(){return 8944}function Sa(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Za(c[a+60>>2]|0)|0;a=Va(ba(6,d|0)|0)|0;l=b;return a|0}function Ta(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+48|0;k=n+16|0;g=n;f=n+32|0;i=a+28|0;e=c[i>>2]|0;c[f>>2]=e;j=a+20|0;e=(c[j>>2]|0)-e|0;c[f+4>>2]=e;c[f+8>>2]=b;c[f+12>>2]=d;e=e+d|0;h=a+60|0;c[g>>2]=c[h>>2];c[g+4>>2]=f;c[g+8>>2]=2;g=Va(ga(146,g|0)|0)|0;a:do if((e|0)!=(g|0)){b=2;while(1){if((g|0)<0)break;e=e-g|0;p=c[f+4>>2]|0;o=g>>>0>p>>>0;f=o?f+8|0:f;b=(o<<31>>31)+b|0;p=g-(o?p:0)|0;c[f>>2]=(c[f>>2]|0)+p;o=f+4|0;c[o>>2]=(c[o>>2]|0)-p;c[k>>2]=c[h>>2];c[k+4>>2]=f;c[k+8>>2]=b;g=Va(ga(146,k|0)|0)|0;if((e|0)==(g|0)){m=3;break a}}c[a+16>>2]=0;c[i>>2]=0;c[j>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[f+4>>2]|0)|0}else m=3;while(0);if((m|0)==3){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[i>>2]=p;c[j>>2]=p}l=n;return d|0}function Ua(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((Va(ca(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;l=f;return a|0}function Va(a){a=a|0;if(a>>>0>4294963200){c[(Wa()|0)>>2]=0-a;a=-1}return a|0}function Wa(){return (Xa()|0)+64|0}function Xa(){return Ya()|0}function Ya(){return 4340}function Za(a){a=a|0;return a|0}function _a(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36>>2]=3;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21523,c[f+8>>2]=g+16,ea(54,f|0)|0):0)a[b+75>>0]=-1;f=Ta(b,d,e)|0;l=g;return f|0}function $a(a){a=a|0;return 0}function ab(a){a=a|0;return}function bb(a,b){a=+a;b=b|0;var d=0,e=0,f=0,g=0,i=0.0;h[j>>3]=a;f=c[j>>2]|0;g=c[j+4>>2]|0;d=pb(f|0,g|0,52)|0;d=d&2047;e=d+-1023|0;if((e|0)>51){h[b>>3]=a;c[j>>2]=0;c[j+4>>2]=g&-2147483648;return +((f|0)==0&(g&1048575|0)==0|(e|0)!=1024?+h[j>>3]:a)}do if(d>>>0>=1023){d=pb(-1,1048575,e|0)|0;e=y;if((d&f|0)==0&(e&g|0)==0){h[b>>3]=a;c[j>>2]=0;c[j+4>>2]=g&-2147483648;a=+h[j>>3];break}else{d=f&~d;f=g&~e;c[j>>2]=d;c[j+4>>2]=f;i=+h[j>>3];g=b;c[g>>2]=d;c[g+4>>2]=f;a=a-i;break}}else{f=b;c[f>>2]=0;c[f+4>>2]=g&-2147483648}while(0);return +a}function cb(){Z(9008);return 9016}function db(){fa(9008);return}function eb(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=fb(a)|0;break}d=($a(a)|0)==0;b=fb(a)|0;if(!d)ab(a)}else{if(!(c[1177]|0))b=0;else b=eb(c[1177]|0)|0;a=c[(cb()|0)>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=$a(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=fb(a)|0|b;if(d|0)ab(a);a=c[a+56>>2]|0}while((a|0)!=0);db()}while(0);return b|0}function fb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(ja[c[a+36>>2]&3](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0<g>>>0)ja[c[a+40>>2]&3](a,e-g|0,1)|0;c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function gb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=l;l=l+16|0;o=K;do if(a>>>0<245){p=a>>>0<11?16:a+11&-8;a=p>>>3;t=c[2255]|0;d=t>>>a;if(d&3|0){a=(d&1^1)+a|0;d=9060+(a<<1<<2)|0;e=d+8|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[2259]|0)>>>0)$();b=h+12|0;if((c[b>>2]|0)==(f|0)){c[b>>2]=d;c[e>>2]=h;break}else $()}else c[2255]=t&~(1<<a);while(0);J=a<<3;c[f+4>>2]=J|3;J=f+J+4|0;c[J>>2]=c[J>>2]|1;J=g;l=K;return J|0}s=c[2257]|0;if(p>>>0>s>>>0){if(d|0){i=2<<a;a=d<<a&(i|0-i);a=(a&0-a)+-1|0;i=a>>>12&16;a=a>>>i;e=a>>>5&8;a=a>>>e;g=a>>>2&4;a=a>>>g;d=a>>>1&2;a=a>>>d;b=a>>>1&1;b=(e|i|g|d|b)+(a>>>b)|0;a=9060+(b<<1<<2)|0;d=a+8|0;g=c[d>>2]|0;i=g+8|0;e=c[i>>2]|0;do if((a|0)!=(e|0)){if(e>>>0<(c[2259]|0)>>>0)$();f=e+12|0;if((c[f>>2]|0)==(g|0)){c[f>>2]=a;c[d>>2]=e;j=t;break}else $()}else{j=t&~(1<<b);c[2255]=j}while(0);h=(b<<3)-p|0;c[g+4>>2]=p|3;e=g+p|0;c[e+4>>2]=h|1;c[e+h>>2]=h;if(s|0){f=c[2260]|0;b=s>>>3;d=9060+(b<<1<<2)|0;b=1<<b;if(j&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[2259]|0)>>>0)$();else{k=a;m=b}}else{c[2255]=j|b;k=d;m=d+8|0}c[m>>2]=f;c[k+12>>2]=f;c[f+8>>2]=k;c[f+12>>2]=d}c[2257]=h;c[2260]=e;J=i;l=K;return J|0}k=c[2256]|0;if(k){a=(k&0-k)+-1|0;I=a>>>12&16;a=a>>>I;H=a>>>5&8;a=a>>>H;J=a>>>2&4;a=a>>>J;d=a>>>1&2;a=a>>>d;b=a>>>1&1;b=c[9324+((H|I|J|d|b)+(a>>>b)<<2)>>2]|0;a=(c[b+4>>2]&-8)-p|0;d=c[b+16+(((c[b+16>>2]|0)==0&1)<<2)>>2]|0;if(!d){j=b;h=a}else{do{I=(c[d+4>>2]&-8)-p|0;J=I>>>0<a>>>0;a=J?I:a;b=J?d:b;d=c[d+16+(((c[d+16>>2]|0)==0&1)<<2)>>2]|0}while((d|0)!=0);j=b;h=a}f=c[2259]|0;if(j>>>0<f>>>0)$();i=j+p|0;if(j>>>0>=i>>>0)$();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){n=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0<f>>>0)$();else{c[a>>2]=0;n=b;break}}else{e=c[j+8>>2]|0;if(e>>>0<f>>>0)$();b=e+12|0;if((c[b>>2]|0)!=(j|0))$();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;n=d;break}else $()}while(0);a:do if(g|0){b=c[j+28>>2]|0;a=9324+(b<<2)|0;do if((j|0)==(c[a>>2]|0)){c[a>>2]=n;if(!n){c[2256]=k&~(1<<b);break a}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=n;if(!n)break a;else break}else $();while(0);a=c[2259]|0;if(n>>>0<a>>>0)$();c[n+24>>2]=g;b=c[j+16>>2]|0;do if(b|0)if(b>>>0<a>>>0)$();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);b=c[j+20>>2]|0;if(b|0)if(b>>>0<(c[2259]|0)>>>0)$();else{c[n+20>>2]=b;c[b+24>>2]=n;break}}while(0);if(h>>>0<16){J=h+p|0;c[j+4>>2]=J|3;J=j+J+4|0;c[J>>2]=c[J>>2]|1}else{c[j+4>>2]=p|3;c[i+4>>2]=h|1;c[i+h>>2]=h;if(s|0){e=c[2260]|0;b=s>>>3;d=9060+(b<<1<<2)|0;b=1<<b;if(t&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[2259]|0)>>>0)$();else{q=a;r=b}}else{c[2255]=t|b;q=d;r=d+8|0}c[r>>2]=e;c[q+12>>2]=e;c[e+8>>2]=q;c[e+12>>2]=d}c[2257]=h;c[2260]=i}J=j+8|0;l=K;return J|0}}}else if(a>>>0<=4294967231){a=a+11|0;p=a&-8;k=c[2256]|0;if(k){e=0-p|0;a=a>>>8;if(a)if(p>>>0>16777215)i=31;else{r=(a+1048320|0)>>>16&8;C=a<<r;q=(C+520192|0)>>>16&4;C=C<<q;i=(C+245760|0)>>>16&2;i=14-(q|r|i)+(C<<i>>>15)|0;i=p>>>(i+7|0)&1|i<<1}else i=0;d=c[9324+(i<<2)>>2]|0;b:do if(!d){d=0;a=0;C=81}else{a=0;h=p<<((i|0)==31?0:25-(i>>>1)|0);g=0;while(1){f=(c[d+4>>2]&-8)-p|0;if(f>>>0<e>>>0)if(!f){a=d;e=0;f=d;C=85;break b}else{a=d;e=f}f=c[d+20>>2]|0;d=c[d+16+(h>>>31<<2)>>2]|0;g=(f|0)==0|(f|0)==(d|0)?g:f;f=(d|0)==0;if(f){d=g;C=81;break}else h=h<<((f^1)&1)}}while(0);if((C|0)==81){if((d|0)==0&(a|0)==0){a=2<<i;a=k&(a|0-a);if(!a)break;r=(a&0-a)+-1|0;m=r>>>12&16;r=r>>>m;j=r>>>5&8;r=r>>>j;n=r>>>2&4;r=r>>>n;q=r>>>1&2;r=r>>>q;d=r>>>1&1;a=0;d=c[9324+((j|m|n|q|d)+(r>>>d)<<2)>>2]|0}if(!d){j=a;i=e}else{f=d;C=85}}if((C|0)==85)while(1){C=0;d=(c[f+4>>2]&-8)-p|0;r=d>>>0<e>>>0;d=r?d:e;a=r?f:a;f=c[f+16+(((c[f+16>>2]|0)==0&1)<<2)>>2]|0;if(!f){j=a;i=d;break}else{e=d;C=85}}if((j|0)!=0?i>>>0<((c[2257]|0)-p|0)>>>0:0){f=c[2259]|0;if(j>>>0<f>>>0)$();h=j+p|0;if(j>>>0>=h>>>0)$();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){s=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0<f>>>0)$();else{c[a>>2]=0;s=b;break}}else{e=c[j+8>>2]|0;if(e>>>0<f>>>0)$();b=e+12|0;if((c[b>>2]|0)!=(j|0))$();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;s=d;break}else $()}while(0);c:do if(g){b=c[j+28>>2]|0;a=9324+(b<<2)|0;do if((j|0)==(c[a>>2]|0)){c[a>>2]=s;if(!s){t=k&~(1<<b);c[2256]=t;break c}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=s;if(!s){t=k;break c}else break}else $();while(0);a=c[2259]|0;if(s>>>0<a>>>0)$();c[s+24>>2]=g;b=c[j+16>>2]|0;do if(b|0)if(b>>>0<a>>>0)$();else{c[s+16>>2]=b;c[b+24>>2]=s;break}while(0);b=c[j+20>>2]|0;if(b)if(b>>>0<(c[2259]|0)>>>0)$();else{c[s+20>>2]=b;c[b+24>>2]=s;t=k;break}else t=k}else t=k;while(0);do if(i>>>0>=16){c[j+4>>2]=p|3;c[h+4>>2]=i|1;c[h+i>>2]=i;b=i>>>3;if(i>>>0<256){d=9060+(b<<1<<2)|0;a=c[2255]|0;b=1<<b;if(a&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[2259]|0)>>>0)$();else{x=a;y=b}}else{c[2255]=a|b;x=d;y=d+8|0}c[y>>2]=h;c[x+12>>2]=h;c[h+8>>2]=x;c[h+12>>2]=d;break}b=i>>>8;if(b)if(i>>>0>16777215)b=31;else{I=(b+1048320|0)>>>16&8;J=b<<I;H=(J+520192|0)>>>16&4;J=J<<H;b=(J+245760|0)>>>16&2;b=14-(H|I|b)+(J<<b>>>15)|0;b=i>>>(b+7|0)&1|b<<1}else b=0;d=9324+(b<<2)|0;c[h+28>>2]=b;a=h+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<<b;if(!(t&a)){c[2256]=t|a;c[d>>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}a=i<<((b|0)==31?0:25-(b>>>1)|0);e=c[d>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(i|0)){C=139;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=136;break}else{a=a<<1;e=b}}if((C|0)==136)if(d>>>0<(c[2259]|0)>>>0)$();else{c[d>>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;break}else if((C|0)==139){b=e+8|0;a=c[b>>2]|0;J=c[2259]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=h;c[b>>2]=h;c[h+8>>2]=a;c[h+12>>2]=e;c[h+24>>2]=0;break}else $()}}else{J=i+p|0;c[j+4>>2]=J|3;J=j+J+4|0;c[J>>2]=c[J>>2]|1}while(0);J=j+8|0;l=K;return J|0}}}else p=-1;while(0);d=c[2257]|0;if(d>>>0>=p>>>0){b=d-p|0;a=c[2260]|0;if(b>>>0>15){J=a+p|0;c[2260]=J;c[2257]=b;c[J+4>>2]=b|1;c[J+b>>2]=b;c[a+4>>2]=p|3}else{c[2257]=0;c[2260]=0;c[a+4>>2]=d|3;J=a+d+4|0;c[J>>2]=c[J>>2]|1}J=a+8|0;l=K;return J|0}h=c[2258]|0;if(h>>>0>p>>>0){H=h-p|0;c[2258]=H;J=c[2261]|0;I=J+p|0;c[2261]=I;c[I+4>>2]=H|1;c[J+4>>2]=p|3;J=J+8|0;l=K;return J|0}if(!(c[2373]|0)){c[2375]=4096;c[2374]=4096;c[2376]=-1;c[2377]=-1;c[2378]=0;c[2366]=0;a=o&-16^1431655768;c[o>>2]=a;c[2373]=a;a=4096}else a=c[2375]|0;i=p+48|0;j=p+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=p>>>0){J=0;l=K;return J|0}a=c[2365]|0;if(a|0?(x=c[2363]|0,y=x+k|0,y>>>0<=x>>>0|y>>>0>a>>>0):0){J=0;l=K;return J|0}d:do if(!(c[2366]&4)){d=c[2261]|0;e:do if(d){e=9468;while(1){a=c[e>>2]|0;if(a>>>0<=d>>>0?(w=e+4|0,(a+(c[w>>2]|0)|0)>>>0>d>>>0):0)break;a=c[e+8>>2]|0;if(!a){C=163;break e}else e=a}b=g-h&f;if(b>>>0<2147483647){a=sb(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[w>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;C=180;break d}}else{e=a;C=171}}else b=0}else C=163;while(0);do if((C|0)==163){d=sb(0)|0;if((d|0)!=(-1|0)?(b=d,u=c[2374]|0,v=u+-1|0,b=((v&b|0)==0?0:(v+b&0-u)-b|0)+k|0,u=c[2363]|0,v=b+u|0,b>>>0>p>>>0&b>>>0<2147483647):0){y=c[2365]|0;if(y|0?v>>>0<=u>>>0|v>>>0>y>>>0:0){b=0;break}a=sb(b|0)|0;if((a|0)==(d|0)){h=b;g=d;C=180;break d}else{e=a;C=171}}else b=0}while(0);do if((C|0)==171){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;C=180;break d}a=c[2375]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;C=180;break d}if((sb(a|0)|0)==(-1|0)){sb(d|0)|0;b=0;break}else{h=a+b|0;g=e;C=180;break d}}while(0);c[2366]=c[2366]|4;C=178}else{b=0;C=178}while(0);if(((C|0)==178?k>>>0<2147483647:0)?(B=sb(k|0)|0,y=sb(0)|0,z=y-B|0,A=z>>>0>(p+40|0)>>>0,!((B|0)==(-1|0)|A^1|B>>>0<y>>>0&((B|0)!=(-1|0)&(y|0)!=(-1|0))^1)):0){h=A?z:b;g=B;C=180}if((C|0)==180){b=(c[2363]|0)+h|0;c[2363]=b;if(b>>>0>(c[2364]|0)>>>0)c[2364]=b;k=c[2261]|0;do if(k){b=9468;while(1){a=c[b>>2]|0;d=b+4|0;e=c[d>>2]|0;if((g|0)==(a+e|0)){C=190;break}f=c[b+8>>2]|0;if(!f)break;else b=f}if(((C|0)==190?(c[b+12>>2]&8|0)==0:0)?k>>>0<g>>>0&k>>>0>=a>>>0:0){c[d>>2]=e+h;J=k+8|0;J=(J&7|0)==0?0:0-J&7;I=k+J|0;J=(c[2258]|0)+(h-J)|0;c[2261]=I;c[2258]=J;c[I+4>>2]=J|1;c[I+J+4>>2]=40;c[2262]=c[2377];break}b=c[2259]|0;if(g>>>0<b>>>0){c[2259]=g;i=g}else i=b;d=g+h|0;b=9468;while(1){if((c[b>>2]|0)==(d|0)){C=198;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((C|0)==198?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;n=b+4|0;c[n>>2]=(c[n>>2]|0)+h;n=g+8|0;n=g+((n&7|0)==0?0:0-n&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;m=n+p|0;j=b-n-p|0;c[n+4>>2]=p|3;do if((b|0)!=(k|0)){if((b|0)==(c[2260]|0)){J=(c[2257]|0)+j|0;c[2257]=J;c[2260]=m;c[m+4>>2]=J|1;c[m+J>>2]=J;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;f=a>>>3;f:do if(a>>>0>=256){g=c[b+24>>2]|0;e=c[b+12>>2]|0;do if((e|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){H=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}if(d>>>0<i>>>0)$();else{c[d>>2]=0;H=a;break}}else{f=c[b+8>>2]|0;if(f>>>0<i>>>0)$();a=f+12|0;if((c[a>>2]|0)!=(b|0))$();d=e+8|0;if((c[d>>2]|0)==(b|0)){c[a>>2]=e;c[d>>2]=f;H=e;break}else $()}while(0);if(!g)break;a=c[b+28>>2]|0;d=9324+(a<<2)|0;do if((b|0)!=(c[d>>2]|0))if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=H;if(!H)break f;else break}else $();else{c[d>>2]=H;if(H|0)break;c[2256]=c[2256]&~(1<<a);break f}while(0);e=c[2259]|0;if(H>>>0<e>>>0)$();c[H+24>>2]=g;a=b+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0<e>>>0)$();else{c[H+16>>2]=d;c[d+24>>2]=H;break}while(0);a=c[a+4>>2]|0;if(!a)break;if(a>>>0<(c[2259]|0)>>>0)$();else{c[H+20>>2]=a;c[a+24>>2]=H;break}}else{d=c[b+8>>2]|0;e=c[b+12>>2]|0;a=9060+(f<<1<<2)|0;do if((d|0)!=(a|0)){if(d>>>0<i>>>0)$();if((c[d+12>>2]|0)==(b|0))break;$()}while(0);if((e|0)==(d|0)){c[2255]=c[2255]&~(1<<f);break}do if((e|0)==(a|0))E=e+8|0;else{if(e>>>0<i>>>0)$();a=e+8|0;if((c[a>>2]|0)==(b|0)){E=a;break}$()}while(0);c[d+12>>2]=e;c[E>>2]=d}while(0);b=b+h|0;f=h+j|0}else f=j;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[m+4>>2]=f|1;c[m+f>>2]=f;b=f>>>3;if(f>>>0<256){d=9060+(b<<1<<2)|0;a=c[2255]|0;b=1<<b;do if(!(a&b)){c[2255]=a|b;I=d;J=d+8|0}else{b=d+8|0;a=c[b>>2]|0;if(a>>>0>=(c[2259]|0)>>>0){I=a;J=b;break}$()}while(0);c[J>>2]=m;c[I+12>>2]=m;c[m+8>>2]=I;c[m+12>>2]=d;break}b=f>>>8;do if(!b)b=0;else{if(f>>>0>16777215){b=31;break}I=(b+1048320|0)>>>16&8;J=b<<I;H=(J+520192|0)>>>16&4;J=J<<H;b=(J+245760|0)>>>16&2;b=14-(H|I|b)+(J<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}while(0);e=9324+(b<<2)|0;c[m+28>>2]=b;a=m+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[2256]|0;d=1<<b;if(!(a&d)){c[2256]=a|d;c[e>>2]=m;c[m+24>>2]=e;c[m+12>>2]=m;c[m+8>>2]=m;break}a=f<<((b|0)==31?0:25-(b>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(f|0)){C=265;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=262;break}else{a=a<<1;e=b}}if((C|0)==262)if(d>>>0<(c[2259]|0)>>>0)$();else{c[d>>2]=m;c[m+24>>2]=e;c[m+12>>2]=m;c[m+8>>2]=m;break}else if((C|0)==265){b=e+8|0;a=c[b>>2]|0;J=c[2259]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=m;c[b>>2]=m;c[m+8>>2]=a;c[m+12>>2]=e;c[m+24>>2]=0;break}else $()}}else{J=(c[2258]|0)+j|0;c[2258]=J;c[2261]=m;c[m+4>>2]=J|1}while(0);J=n+8|0;l=K;return J|0}b=9468;while(1){a=c[b>>2]|0;if(a>>>0<=k>>>0?(D=a+(c[b+4>>2]|0)|0,D>>>0>k>>>0):0)break;b=c[b+8>>2]|0}f=D+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=k+16|0;a=a>>>0<f>>>0?k:a;b=a+8|0;d=g+8|0;d=(d&7|0)==0?0:0-d&7;J=g+d|0;d=h+-40-d|0;c[2261]=J;c[2258]=d;c[J+4>>2]=d|1;c[J+d+4>>2]=40;c[2262]=c[2377];d=a+4|0;c[d>>2]=27;c[b>>2]=c[2367];c[b+4>>2]=c[2368];c[b+8>>2]=c[2369];c[b+12>>2]=c[2370];c[2367]=g;c[2368]=h;c[2370]=0;c[2369]=b;b=a+24|0;do{J=b;b=b+4|0;c[b>>2]=7}while((J+8|0)>>>0<D>>>0);if((a|0)!=(k|0)){g=a-k|0;c[d>>2]=c[d>>2]&-2;c[k+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=9060+(b<<1<<2)|0;a=c[2255]|0;b=1<<b;if(a&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[2259]|0)>>>0)$();else{F=a;G=b}}else{c[2255]=a|b;F=d;G=d+8|0}c[G>>2]=k;c[F+12>>2]=k;c[k+8>>2]=F;c[k+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{I=(b+1048320|0)>>>16&8;J=b<<I;H=(J+520192|0)>>>16&4;J=J<<H;d=(J+245760|0)>>>16&2;d=14-(H|I|d)+(J<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=9324+(d<<2)|0;c[k+28>>2]=d;c[k+20>>2]=0;c[f>>2]=0;b=c[2256]|0;a=1<<d;if(!(b&a)){c[2256]=b|a;c[e>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(g|0)){C=292;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=289;break}else{a=a<<1;e=b}}if((C|0)==289)if(d>>>0<(c[2259]|0)>>>0)$();else{c[d>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((C|0)==292){b=e+8|0;a=c[b>>2]|0;J=c[2259]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=k;c[b>>2]=k;c[k+8>>2]=a;c[k+12>>2]=e;c[k+24>>2]=0;break}else $()}}}else{J=c[2259]|0;if((J|0)==0|g>>>0<J>>>0)c[2259]=g;c[2367]=g;c[2368]=h;c[2370]=0;c[2264]=c[2373];c[2263]=-1;b=0;do{J=9060+(b<<1<<2)|0;c[J+12>>2]=J;c[J+8>>2]=J;b=b+1|0}while((b|0)!=32);J=g+8|0;J=(J&7|0)==0?0:0-J&7;I=g+J|0;J=h+-40-J|0;c[2261]=I;c[2258]=J;c[I+4>>2]=J|1;c[I+J+4>>2]=40;c[2262]=c[2377]}while(0);b=c[2258]|0;if(b>>>0>p>>>0){H=b-p|0;c[2258]=H;J=c[2261]|0;I=J+p|0;c[2261]=I;c[I+4>>2]=H|1;c[J+4>>2]=p|3;J=J+8|0;l=K;return J|0}}c[(Wa()|0)>>2]=12;J=0;l=K;return J|0}function hb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!a)return;d=a+-8|0;h=c[2259]|0;if(d>>>0<h>>>0)$();a=c[a+-4>>2]|0;b=a&3;if((b|0)==1)$();e=a&-8;o=d+e|0;a:do if(!(a&1)){a=c[d>>2]|0;if(!b)return;k=d+(0-a)|0;j=a+e|0;if(k>>>0<h>>>0)$();if((k|0)==(c[2260]|0)){a=o+4|0;b=c[a>>2]|0;if((b&3|0)!=3){r=k;f=j;m=k;break}c[2257]=j;c[a>>2]=b&-2;c[k+4>>2]=j|1;c[k+j>>2]=j;return}e=a>>>3;if(a>>>0<256){b=c[k+8>>2]|0;d=c[k+12>>2]|0;a=9060+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<h>>>0)$();if((c[b+12>>2]|0)!=(k|0))$()}if((d|0)==(b|0)){c[2255]=c[2255]&~(1<<e);r=k;f=j;m=k;break}if((d|0)!=(a|0)){if(d>>>0<h>>>0)$();a=d+8|0;if((c[a>>2]|0)==(k|0))g=a;else $()}else g=d+8|0;c[b+12>>2]=d;c[g>>2]=b;r=k;f=j;m=k;break}g=c[k+24>>2]|0;d=c[k+12>>2]|0;do if((d|0)==(k|0)){d=k+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){i=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<h>>>0)$();else{c[b>>2]=0;i=a;break}}else{e=c[k+8>>2]|0;if(e>>>0<h>>>0)$();a=e+12|0;if((c[a>>2]|0)!=(k|0))$();b=d+8|0;if((c[b>>2]|0)==(k|0)){c[a>>2]=d;c[b>>2]=e;i=d;break}else $()}while(0);if(g){a=c[k+28>>2]|0;b=9324+(a<<2)|0;do if((k|0)==(c[b>>2]|0)){c[b>>2]=i;if(!i){c[2256]=c[2256]&~(1<<a);r=k;f=j;m=k;break a}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(k|0)&1)<<2)>>2]=i;if(!i){r=k;f=j;m=k;break a}else break}else $();while(0);d=c[2259]|0;if(i>>>0<d>>>0)$();c[i+24>>2]=g;a=k+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0<d>>>0)$();else{c[i+16>>2]=b;c[b+24>>2]=i;break}while(0);a=c[a+4>>2]|0;if(a)if(a>>>0<(c[2259]|0)>>>0)$();else{c[i+20>>2]=a;c[a+24>>2]=i;r=k;f=j;m=k;break}else{r=k;f=j;m=k}}else{r=k;f=j;m=k}}else{r=d;f=e;m=d}while(0);if(m>>>0>=o>>>0)$();a=o+4|0;b=c[a>>2]|0;if(!(b&1))$();if(!(b&2)){a=c[2260]|0;if((o|0)==(c[2261]|0)){q=(c[2258]|0)+f|0;c[2258]=q;c[2261]=r;c[r+4>>2]=q|1;if((r|0)!=(a|0))return;c[2260]=0;c[2257]=0;return}if((o|0)==(a|0)){q=(c[2257]|0)+f|0;c[2257]=q;c[2260]=m;c[r+4>>2]=q|1;c[m+q>>2]=q;return}f=(b&-8)+f|0;e=b>>>3;b:do if(b>>>0>=256){g=c[o+24>>2]|0;a=c[o+12>>2]|0;do if((a|0)==(o|0)){d=o+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){n=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<(c[2259]|0)>>>0)$();else{c[b>>2]=0;n=a;break}}else{b=c[o+8>>2]|0;if(b>>>0<(c[2259]|0)>>>0)$();d=b+12|0;if((c[d>>2]|0)!=(o|0))$();e=a+8|0;if((c[e>>2]|0)==(o|0)){c[d>>2]=a;c[e>>2]=b;n=a;break}else $()}while(0);if(g|0){a=c[o+28>>2]|0;b=9324+(a<<2)|0;do if((o|0)==(c[b>>2]|0)){c[b>>2]=n;if(!n){c[2256]=c[2256]&~(1<<a);break b}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(!n)break b;else break}else $();while(0);d=c[2259]|0;if(n>>>0<d>>>0)$();c[n+24>>2]=g;a=o+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0<d>>>0)$();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);a=c[a+4>>2]|0;if(a|0)if(a>>>0<(c[2259]|0)>>>0)$();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}}else{b=c[o+8>>2]|0;d=c[o+12>>2]|0;a=9060+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(c[2259]|0)>>>0)$();if((c[b+12>>2]|0)!=(o|0))$()}if((d|0)==(b|0)){c[2255]=c[2255]&~(1<<e);break}if((d|0)!=(a|0)){if(d>>>0<(c[2259]|0)>>>0)$();a=d+8|0;if((c[a>>2]|0)==(o|0))l=a;else $()}else l=d+8|0;c[b+12>>2]=d;c[l>>2]=b}while(0);c[r+4>>2]=f|1;c[m+f>>2]=f;if((r|0)==(c[2260]|0)){c[2257]=f;return}}else{c[a>>2]=b&-2;c[r+4>>2]=f|1;c[m+f>>2]=f}a=f>>>3;if(f>>>0<256){d=9060+(a<<1<<2)|0;b=c[2255]|0;a=1<<a;if(b&a){a=d+8|0;b=c[a>>2]|0;if(b>>>0<(c[2259]|0)>>>0)$();else{p=b;q=a}}else{c[2255]=b|a;p=d;q=d+8|0}c[q>>2]=r;c[p+12>>2]=r;c[r+8>>2]=p;c[r+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<<p;o=(q+520192|0)>>>16&4;q=q<<o;a=(q+245760|0)>>>16&2;a=14-(o|p|a)+(q<<a>>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=9324+(a<<2)|0;c[r+28>>2]=a;c[r+20>>2]=0;c[r+16>>2]=0;b=c[2256]|0;d=1<<a;do if(b&d){b=f<<((a|0)==31?0:25-(a>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(f|0)){a=124;break}d=e+16+(b>>>31<<2)|0;a=c[d>>2]|0;if(!a){a=121;break}else{b=b<<1;e=a}}if((a|0)==121)if(d>>>0<(c[2259]|0)>>>0)$();else{c[d>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r;break}else if((a|0)==124){a=e+8|0;b=c[a>>2]|0;q=c[2259]|0;if(b>>>0>=q>>>0&e>>>0>=q>>>0){c[b+12>>2]=r;c[a>>2]=r;c[r+8>>2]=b;c[r+12>>2]=e;c[r+24>>2]=0;break}else $()}}else{c[2256]=b|d;c[e>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r}while(0);r=(c[2263]|0)+-1|0;c[2263]=r;if(!r)a=9476;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[2263]=-1;return}function ib(a,b){a=a|0;b=b|0;var d=0;if(a){d=N(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=gb(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;ob(a|0,0,d|0)|0;return a|0}function jb(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=gb(b)|0;return b|0}if(b>>>0>4294967231){c[(Wa()|0)>>2]=12;b=0;return b|0}d=kb(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=gb(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;tb(d|0,a|0,(e>>>0<b>>>0?e:b)|0)|0;hb(a);b=d;return b|0}function kb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=a+4|0;n=c[o>>2]|0;d=n&-8;k=a+d|0;i=c[2259]|0;e=n&3;if(!((e|0)!=1&a>>>0>=i>>>0&a>>>0<k>>>0))$();f=c[k+4>>2]|0;if(!(f&1))$();if(!e){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[2375]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;m=a+b|0;c[o>>2]=n&1|b|2;c[m+4>>2]=d|3;o=m+d+4|0;c[o>>2]=c[o>>2]|1;lb(m,d);return a|0}if((k|0)==(c[2261]|0)){m=(c[2258]|0)+d|0;d=m-b|0;e=a+b|0;if(m>>>0<=b>>>0){a=0;return a|0}c[o>>2]=n&1|b|2;c[e+4>>2]=d|1;c[2261]=e;c[2258]=d;return a|0}if((k|0)==(c[2260]|0)){f=(c[2257]|0)+d|0;if(f>>>0<b>>>0){a=0;return a|0}d=f-b|0;e=n&1;if(d>>>0>15){n=a+b|0;m=n+d|0;c[o>>2]=e|b|2;c[n+4>>2]=d|1;c[m>>2]=d;e=m+4|0;c[e>>2]=c[e>>2]&-2;e=n}else{c[o>>2]=e|f|2;e=a+f+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[2257]=d;c[2260]=e;return a|0}if(f&2|0){a=0;return a|0}l=(f&-8)+d|0;if(l>>>0<b>>>0){a=0;return a|0}m=l-b|0;g=f>>>3;a:do if(f>>>0>=256){h=c[k+24>>2]|0;f=c[k+12>>2]|0;do if((f|0)==(k|0)){f=k+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){j=0;break}else e=f}while(1){f=d+20|0;g=c[f>>2]|0;if(g|0){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0<i>>>0)$();else{c[e>>2]=0;j=d;break}}else{g=c[k+8>>2]|0;if(g>>>0<i>>>0)$();d=g+12|0;if((c[d>>2]|0)!=(k|0))$();e=f+8|0;if((c[e>>2]|0)==(k|0)){c[d>>2]=f;c[e>>2]=g;j=f;break}else $()}while(0);if(h|0){d=c[k+28>>2]|0;e=9324+(d<<2)|0;do if((k|0)==(c[e>>2]|0)){c[e>>2]=j;if(!j){c[2256]=c[2256]&~(1<<d);break a}}else if(h>>>0>=(c[2259]|0)>>>0){c[h+16+(((c[h+16>>2]|0)!=(k|0)&1)<<2)>>2]=j;if(!j)break a;else break}else $();while(0);f=c[2259]|0;if(j>>>0<f>>>0)$();c[j+24>>2]=h;d=k+16|0;e=c[d>>2]|0;do if(e|0)if(e>>>0<f>>>0)$();else{c[j+16>>2]=e;c[e+24>>2]=j;break}while(0);d=c[d+4>>2]|0;if(d|0)if(d>>>0<(c[2259]|0)>>>0)$();else{c[j+20>>2]=d;c[d+24>>2]=j;break}}}else{e=c[k+8>>2]|0;f=c[k+12>>2]|0;d=9060+(g<<1<<2)|0;if((e|0)!=(d|0)){if(e>>>0<i>>>0)$();if((c[e+12>>2]|0)!=(k|0))$()}if((f|0)==(e|0)){c[2255]=c[2255]&~(1<<g);break}if((f|0)!=(d|0)){if(f>>>0<i>>>0)$();d=f+8|0;if((c[d>>2]|0)==(k|0))h=d;else $()}else h=f+8|0;c[e+12>>2]=f;c[h>>2]=e}while(0);d=n&1;if(m>>>0<16){c[o>>2]=l|d|2;o=a+l+4|0;c[o>>2]=c[o>>2]|1;return a|0}else{n=a+b|0;c[o>>2]=d|b|2;c[n+4>>2]=m|3;o=n+m+4|0;c[o>>2]=c[o>>2]|1;lb(n,m);return a|0}return 0}function lb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=a+b|0;d=c[a+4>>2]|0;a:do if(!(d&1)){g=c[a>>2]|0;if(!(d&3))return;l=a+(0-g)|0;k=g+b|0;i=c[2259]|0;if(l>>>0<i>>>0)$();if((l|0)==(c[2260]|0)){a=o+4|0;d=c[a>>2]|0;if((d&3|0)!=3){r=l;f=k;break}c[2257]=k;c[a>>2]=d&-2;c[l+4>>2]=k|1;c[l+k>>2]=k;return}e=g>>>3;if(g>>>0<256){d=c[l+8>>2]|0;b=c[l+12>>2]|0;a=9060+(e<<1<<2)|0;if((d|0)!=(a|0)){if(d>>>0<i>>>0)$();if((c[d+12>>2]|0)!=(l|0))$()}if((b|0)==(d|0)){c[2255]=c[2255]&~(1<<e);r=l;f=k;break}if((b|0)!=(a|0)){if(b>>>0<i>>>0)$();a=b+8|0;if((c[a>>2]|0)==(l|0))h=a;else $()}else h=b+8|0;c[d+12>>2]=b;c[h>>2]=d;r=l;f=k;break}g=c[l+24>>2]|0;b=c[l+12>>2]|0;do if((b|0)==(l|0)){b=l+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){j=0;break}else d=b}while(1){b=a+20|0;e=c[b>>2]|0;if(e|0){a=e;d=b;continue}b=a+16|0;e=c[b>>2]|0;if(!e)break;else{a=e;d=b}}if(d>>>0<i>>>0)$();else{c[d>>2]=0;j=a;break}}else{e=c[l+8>>2]|0;if(e>>>0<i>>>0)$();a=e+12|0;if((c[a>>2]|0)!=(l|0))$();d=b+8|0;if((c[d>>2]|0)==(l|0)){c[a>>2]=b;c[d>>2]=e;j=b;break}else $()}while(0);if(g){a=c[l+28>>2]|0;d=9324+(a<<2)|0;do if((l|0)==(c[d>>2]|0)){c[d>>2]=j;if(!j){c[2256]=c[2256]&~(1<<a);r=l;f=k;break a}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(l|0)&1)<<2)>>2]=j;if(!j){r=l;f=k;break a}else break}else $();while(0);b=c[2259]|0;if(j>>>0<b>>>0)$();c[j+24>>2]=g;a=l+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0<b>>>0)$();else{c[j+16>>2]=d;c[d+24>>2]=j;break}while(0);a=c[a+4>>2]|0;if(a)if(a>>>0<(c[2259]|0)>>>0)$();else{c[j+20>>2]=a;c[a+24>>2]=j;r=l;f=k;break}else{r=l;f=k}}else{r=l;f=k}}else{r=a;f=b}while(0);h=c[2259]|0;if(o>>>0<h>>>0)$();a=o+4|0;d=c[a>>2]|0;if(!(d&2)){a=c[2260]|0;if((o|0)==(c[2261]|0)){q=(c[2258]|0)+f|0;c[2258]=q;c[2261]=r;c[r+4>>2]=q|1;if((r|0)!=(a|0))return;c[2260]=0;c[2257]=0;return}if((o|0)==(a|0)){q=(c[2257]|0)+f|0;c[2257]=q;c[2260]=r;c[r+4>>2]=q|1;c[r+q>>2]=q;return}f=(d&-8)+f|0;e=d>>>3;b:do if(d>>>0>=256){g=c[o+24>>2]|0;b=c[o+12>>2]|0;do if((b|0)==(o|0)){b=o+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){n=0;break}else d=b}while(1){b=a+20|0;e=c[b>>2]|0;if(e|0){a=e;d=b;continue}b=a+16|0;e=c[b>>2]|0;if(!e)break;else{a=e;d=b}}if(d>>>0<h>>>0)$();else{c[d>>2]=0;n=a;break}}else{e=c[o+8>>2]|0;if(e>>>0<h>>>0)$();a=e+12|0;if((c[a>>2]|0)!=(o|0))$();d=b+8|0;if((c[d>>2]|0)==(o|0)){c[a>>2]=b;c[d>>2]=e;n=b;break}else $()}while(0);if(g|0){a=c[o+28>>2]|0;d=9324+(a<<2)|0;do if((o|0)==(c[d>>2]|0)){c[d>>2]=n;if(!n){c[2256]=c[2256]&~(1<<a);break b}}else if(g>>>0>=(c[2259]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(!n)break b;else break}else $();while(0);b=c[2259]|0;if(n>>>0<b>>>0)$();c[n+24>>2]=g;a=o+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0<b>>>0)$();else{c[n+16>>2]=d;c[d+24>>2]=n;break}while(0);a=c[a+4>>2]|0;if(a|0)if(a>>>0<(c[2259]|0)>>>0)$();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}}else{d=c[o+8>>2]|0;b=c[o+12>>2]|0;a=9060+(e<<1<<2)|0;if((d|0)!=(a|0)){if(d>>>0<h>>>0)$();if((c[d+12>>2]|0)!=(o|0))$()}if((b|0)==(d|0)){c[2255]=c[2255]&~(1<<e);break}if((b|0)!=(a|0)){if(b>>>0<h>>>0)$();a=b+8|0;if((c[a>>2]|0)==(o|0))m=a;else $()}else m=b+8|0;c[d+12>>2]=b;c[m>>2]=d}while(0);c[r+4>>2]=f|1;c[r+f>>2]=f;if((r|0)==(c[2260]|0)){c[2257]=f;return}}else{c[a>>2]=d&-2;c[r+4>>2]=f|1;c[r+f>>2]=f}a=f>>>3;if(f>>>0<256){b=9060+(a<<1<<2)|0;d=c[2255]|0;a=1<<a;if(d&a){a=b+8|0;d=c[a>>2]|0;if(d>>>0<(c[2259]|0)>>>0)$();else{p=d;q=a}}else{c[2255]=d|a;p=b;q=b+8|0}c[q>>2]=r;c[p+12>>2]=r;c[r+8>>2]=p;c[r+12>>2]=b;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<<p;o=(q+520192|0)>>>16&4;q=q<<o;a=(q+245760|0)>>>16&2;a=14-(o|p|a)+(q<<a>>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=9324+(a<<2)|0;c[r+28>>2]=a;c[r+20>>2]=0;c[r+16>>2]=0;d=c[2256]|0;b=1<<a;if(!(d&b)){c[2256]=d|b;c[e>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r;return}d=f<<((a|0)==31?0:25-(a>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(f|0)){a=121;break}b=e+16+(d>>>31<<2)|0;a=c[b>>2]|0;if(!a){a=118;break}else{d=d<<1;e=a}}if((a|0)==118){if(b>>>0<(c[2259]|0)>>>0)$();c[b>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r;return}else if((a|0)==121){a=e+8|0;d=c[a>>2]|0;q=c[2259]|0;if(!(d>>>0>=q>>>0&e>>>0>=q>>>0))$();c[d+12>>2]=r;c[a>>2]=r;c[r+8>>2]=d;c[r+12>>2]=e;c[r+24>>2]=0;return}}function mb(){}function nb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (y=b+d+(c>>>0<a>>>0|0)>>>0,c|0)|0}function ob(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;g=f-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function pb(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){y=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}y=0;return b>>>c-32|0}function qb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=N(e,f)|0;d=a>>>16;a=(c>>>16)+(N(e,d)|0)|0;e=b>>>16;b=N(e,f)|0;return (y=(a>>>16)+(N(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function rb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=qb(e,f)|0;a=y;return (y=(N(b,f)|0)+(N(d,e)|0)+a|a&0,c|0|0)|0}function sb(a){a=a|0;var b=0,d=0;d=a+15&-16|0;b=c[i>>2]|0;a=b+d|0;if((d|0)>0&(a|0)<(b|0)|(a|0)<0){V()|0;aa(12);return -1}c[i>>2]=a;if((a|0)>(U()|0)?(T()|0)==0:0){c[i>>2]=b;aa(12);return -1}return b|0}function tb(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return da(b|0,d|0,e|0)|0;h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function ub(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function vb(a,b){a=a|0;b=b|0;return ia[a&1](b|0)|0}function wb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ja[a&3](b|0,c|0,d|0)|0}function xb(a){a=a|0;R(0);return 0}function yb(a,b,c){a=a|0;b=b|0;c=c|0;R(1);return 0}
--
--// EMSCRIPTEN_END_FUNCS
--var ia=[xb,Sa];var ja=[yb,_a,Ua,Ta];return{_llvm_bswap_i32:ub,_shine_check_config:Ha,_shine_flush:La,setThrew:oa,_bitshift64Lshr:pb,_shine_samples_per_pass:Ia,_fflush:eb,_shine_js_init:Qa,_memset:ob,_sbrk:sb,_memcpy:tb,___errno_location:Wa,_shine_encode_buffer:Ka,_shine_close:Ma,stackAlloc:ka,getTempRet0:qa,___muldi3:rb,setTempRet0:pa,_i64Add:nb,_emscripten_get_global_libc:Ra,stackSave:la,___muldsi3:qb,_free:hb,runPostSets:mb,establishStackSpace:na,stackRestore:ma,_malloc:gb,stackAlloc:ka,stackSave:la,stackRestore:ma,establishStackSpace:na,setThrew:oa,setTempRet0:pa,getTempRet0:qa,dynCall_ii:vb,dynCall_iiii:wb}})
--
--
--// EMSCRIPTEN_END_ASM
--(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _shine_check_config=Module["_shine_check_config"]=asm["_shine_check_config"];var _shine_flush=Module["_shine_flush"]=asm["_shine_flush"];var setThrew=Module["setThrew"]=asm["setThrew"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _shine_samples_per_pass=Module["_shine_samples_per_pass"]=asm["_shine_samples_per_pass"];var _fflush=Module["_fflush"]=asm["_fflush"];var _shine_js_init=Module["_shine_js_init"]=asm["_shine_js_init"];var _memset=Module["_memset"]=asm["_memset"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var _shine_encode_buffer=Module["_shine_encode_buffer"]=asm["_shine_encode_buffer"];var _shine_close=Module["_shine_close"]=asm["_shine_close"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=asm["_emscripten_get_global_libc"];var stackSave=Module["stackSave"]=asm["stackSave"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var _malloc=Module["_malloc"]=asm["_malloc"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i<argc-1;i=i+1){argv.push(allocate(intArrayFromString(args[i]),"i8",ALLOC_NORMAL));pad()}argv.push(0);argv=allocate(argv,"i32",ALLOC_NORMAL);try{var ret=Module["_main"](argc,argv,0);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="SimulateInfiniteLoop"){Module["noExitRuntime"]=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}Module.printErr("exception thrown: "+toLog);Module["quit"](1,e)}}finally{calledMain=true}};function run(args){args=args||Module["arguments"];if(preloadStartTime===null)preloadStartTime=Date.now();if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();var isNode=typeof process==="object"&&typeof require==="function";var int16Len=Module.HEAP16.BYTES_PER_ELEMENT;var ptrLen=Module.HEAP32.BYTES_PER_ELEMENT;function Shine(args){if(_shine_check_config(args.samplerate,args.bitrate)<0)throw"Invalid configuration";var mode;if(!args.mode){if(args.channels===1){mode=Shine.MONO}else{mode=Shine.JOINT_STEREO}}else{mode=args.mode}this._handle=_shine_js_init(args.channels,args.samplerate,mode,args.bitrate);this._channels=args.channels;this._samples_per_pass=_shine_samples_per_pass(this._handle);this._buffer=_malloc(this._channels*ptrLen);this._pcm=new Array(this._channels);this._rem=new Array(this._channels);this._written=_malloc(int16Len);var _tmp,chan;for(chan=0;chan<this._channels;chan++){this._rem[chan]=new Int16Array;_tmp=_malloc(this._samples_per_pass*int16Len);setValue(this._buffer+chan*ptrLen,_tmp,"*");this._pcm[chan]=Module.HEAP16.subarray(_tmp/int16Len,_tmp/int16Len+this._samples_per_pass)}return this}Shine.STEREO=0;Shine.JOINT_STEREO=1;Shine.DUAL_CHANNEL=2;Shine.MONO=3;Shine.prototype._encodePass=(function(data){if(!this._handle)throw"Closed";var chan;for(chan=0;chan<this._channels;chan++)this._pcm[chan].set(data[chan]);var _buf=_shine_encode_buffer(this._handle,this._buffer,this._written);var written=getValue(this._written,"i16");return Module.HEAPU8.subarray(_buf,_buf+written)});function concat(ctr,a,b){if(typeof b==="undefined"){return a}var ret=new ctr(a.length+b.length);ret.set(a);ret.subarray(a.length).set(b);return ret}function clip(x){return x>1?1:x<-1?-1:x}function convertFloat32(buf){var ret=new Array(buf.length);var samples=buf[0].length;var chan,i;for(chan=0;chan<buf.length;chan++){ret[chan]=new Int16Array(samples);for(i=0;i<samples;i++){ret[chan][i]=parseInt(clip(buf[chan][i])*32767)}}return ret}Shine.prototype.encode=(function(data){if(data.length!=this._channels)throw"Invalid data";var encoded=new Uint8Array;var tmp=new Array(this._channels);if(data[0]instanceof Float32Array){data=convertFloat32(data)}var chan;for(chan=0;chan<this._channels;chan++){tmp[chan]=new Float32Array;this._rem[chan]=concat(Int16Array,this._rem[chan],data[chan])}var i,enc;for(i=0;i<this._rem[0].length;i+=this._samples_per_pass){for(chan=0;chan<this._channels;chan++){tmp[chan]=this._rem[chan].subarray(i,i+this._samples_per_pass)}if(tmp[0].length<this._samples_per_pass){break}else{enc=this._encodePass(tmp);if(enc.length>0){encoded=concat(Uint8Array,encoded,enc)}}}if(tmp[0].length<this._samples_per_pass){this._rem=tmp}else{for(chan=0;chan<this._channels;chan++){this._rem[chan]=new Int16Array}}return encoded});Shine.prototype.close=(function(){if(!this._handle){throw"Closed"}var _buf=_shine_flush(this._handle,this._written);var written=getValue(this._written,"i16");var encoded=new Uint8Array(written);encoded.set(Module.HEAPU8.subarray(_buf,_buf+written));_free(this._written);_shine_close(this._handle);this._handle=null;var chan;for(chan=0;chan<this._channels;chan++){_free(getValue(this._buffer+chan*ptrLen,"*"))}_free(this._buffer);return encoded});if(isNode){module.exports=Shine}return Shine}).call(context)})()
--
--
--
--
-diff --git a/js/dist/libshine_browser.js b/js/dist/libshine_browser.js
-new file mode 100644
-index 0000000..5e8cd74
---- /dev/null
-+++ b/js/dist/libshine_browser.js
-@@ -0,0 +1,183 @@
-+// libshine function wrappers
-+
-+var StereoMode = {
-+ '0': 'STEREO',
-+ '1': 'JOINT_STEREO',
-+ '2': 'DUAL_CHANNEL',
-+ '3': 'MONO',
-+ STEREO: 0,
-+ JOINT_STEREO: 1,
-+ DUAL_CHANNEL: 2,
-+ MONO: 3
-+};
-+
-+var ShineModule;
-+var int16Len;
-+var ptrLen;
-+
-+function shineInit() {
-+ int16Len = ShineModule._shine_js_int16_len();
-+ ptrLen = ShineModule._shine_js_ptr_len();
-+};
-+
-+function Shine(args) {
-+ if (ShineModule._shine_check_config(args.samplerate, args.bitrate) < 0)
-+ throw "Invalid configuration";
-+
-+ var stereoMode;
-+ if (!args.stereoMode) {
-+ if (args.channels === 1) {
-+ stereoMode = Shine.MONO;
-+ } else {
-+ stereoMode = Shine.JOINT_STEREO;
-+ }
-+ } else {
-+ stereoMode = args.stereoMode;
-+ }
-+
-+ this._handle = ShineModule._shine_js_init(args.channels, args.samplerate, stereoMode, args.bitrate);
-+
-+ this._channels = args.channels;
-+ this._samples_per_pass = ShineModule._shine_samples_per_pass(this._handle);
-+
-+ this._buffer = ShineModule._malloc(this._channels * ptrLen);
-+ this._pcm = new Array(this._channels);
-+ this._rem = new Array(this._channels);
-+ this._written = ShineModule._malloc(int16Len);
-+
-+ var _tmp, chan;
-+ for (chan=0; chan<this._channels; chan++) {
-+ this._rem[chan] = new Int16Array;
-+ _tmp = ShineModule._malloc(this._samples_per_pass * int16Len);
-+ ShineModule.setValue(this._buffer + chan*ptrLen, _tmp, "*")
-+ this._pcm[chan] = ShineModule.HEAP16.subarray(_tmp/int16Len, _tmp/int16Len+this._samples_per_pass)
-+ }
-+
-+ return this;
-+};
-+
-+Shine.checkConfig = function (samplerate, bitrate) {
-+ return ShineModule._shine_check_config(samplerate, bitrate) >= 0;
-+};
-+
-+Shine.prototype._encodePass = function (data) {
-+ if (!this._handle)
-+ throw "Closed";
-+
-+ var chan;
-+ for (chan=0;chan<this._channels;chan++)
-+ this._pcm[chan].set(data[chan]);
-+
-+ var _buf = ShineModule._shine_encode_buffer(this._handle, this._buffer, this._written);
-+
-+ var written = ShineModule.getValue(this._written, "i16");
-+
-+ return ShineModule.HEAPU8.subarray(_buf, _buf+written);
-+};
-+
-+function concat(ctr, a, b) {
-+ if (typeof b === "undefined") {
-+ return a;
-+ }
-+ var ret = new ctr(a.length+b.length);
-+ ret.set(a);
-+ ret.subarray(a.length).set(b);
-+ return ret;
-+}
-+
-+function clip(x) {
-+ return (x > 1 ? 1 : (x < -1 ? -1 : x));
-+}
-+
-+function convertFloat32(buf) {
-+ var ret = new Array(buf.length);
-+ var samples = buf[0].length;
-+ var chan, i;
-+
-+ for (chan=0;chan<buf.length;chan++) {
-+ ret[chan] = new Int16Array(samples);
-+ for (i=0;i<samples;i++) {
-+ ret[chan][i] = parseInt(clip(buf[chan][i]) * 32767);
-+ }
-+ }
-+ return ret;
-+}
-+
-+Shine.prototype.encode = function (data) {
-+ if (data.length != this._channels)
-+ throw "Invalid data";
-+
-+ var encoded = new Uint8Array;
-+ var tmp = new Array(this._channels);
-+
-+ if (data[0] instanceof Float32Array) {
-+ data = convertFloat32(data);
-+ }
-+
-+ var chan;
-+ for (chan=0;chan<this._channels; chan++) {
-+ tmp[chan] = new Float32Array;
-+ this._rem[chan] = concat(Int16Array, this._rem[chan], data[chan]);
-+ }
-+
-+ var i, enc;
-+ for (i=0;i<this._rem[0].length;i+=this._samples_per_pass) {
-+ for (chan=0; chan<this._channels; chan++) {
-+ tmp[chan] = this._rem[chan].subarray(i, i+this._samples_per_pass);
-+ }
-+
-+ if (tmp[0].length < this._samples_per_pass) {
-+ break;
-+ } else {
-+ enc = this._encodePass(tmp);
-+ if (enc.length > 0) {
-+ encoded = concat(Uint8Array, encoded, enc);
-+ }
-+ }
-+ }
-+
-+ if (tmp[0].length < this._samples_per_pass) {
-+ this._rem = tmp;
-+ } else {
-+ for (chan=0; chan<this._channels; chan++) {
-+ this._rem[chan] = new Int16Array;
-+ }
-+ }
-+
-+ return encoded;
-+};
-+
-+Shine.prototype.close = function () {
-+ if (!this._handle) {
-+ throw "Closed";
-+ }
-+
-+ var _buf = ShineModule._shine_flush(this._handle, this._written);
-+
-+ var written = ShineModule.getValue(this._written, "i16");
-+ var encoded = new Uint8Array(written);
-+
-+ encoded.set(ShineModule.HEAPU8.subarray(_buf, _buf + written));
-+
-+ ShineModule._free(this._written);
-+ ShineModule._shine_close(this._handle);
-+ this._handle = null;
-+
-+ var chan;
-+ for (chan=0; chan<this._channels; chan++) {
-+ ShineModule._free(ShineModule.getValue(this._buffer + chan*ptrLen, "*"));
-+ }
-+ ShineModule._free(this._buffer);
-+
-+ return encoded;
-+};
-+var createModule = require("./libshine_browser_stubs").default;
-+
-+Shine.initialized = (createModule()).then(function (Module) {
-+ ShineModule = Module;
-+ shineInit();
-+});
-+
-+module.exports.Shine = Shine;
-+
-+module.exports.StereoMode = StereoMode;
-diff --git a/js/dist/libshine_browser_stubs.js b/js/dist/libshine_browser_stubs.js
-new file mode 100644
-index 0000000..23863a3
---- /dev/null
-+++ b/js/dist/libshine_browser_stubs.js
-@@ -0,0 +1,16 @@
-+
-+var createModule = (() => {
-+ var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
-+
-+ return (
-+function(createModule) {
-+ createModule = createModule || {};
-+
-+var Module=typeof createModule!="undefined"?createModule:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}var wasmBinaryFile;wasmBinaryFile="data:application/octet-stream;base64,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/LECIAMoAtCyAmsiBiAGQR91IgZzIAZraiADKAL4sQIiBiADKALMsgJrIgggCEEfdSIIcyAIa2ogAygC9LECIAMoAsiyAiIIayIKIApBH3UiCnMgCmtqIAMoAvCxAiADKALEsgIiCmsiByAHQR91IgdzIAdraiADKALssQIgAygCwLICayIHIAdBH3UiB3MgB2tqIAMoAuixAiIHIAMoAryyAmsiCyALQR91IgtzIAtramogAygC4LECIAMoArSyAiILayIOIA5BH3UiDnMgDmtqIAMoAtyxAiADKAKwsgIiDmsiEiASQR91IhJzIBJraiADKALYsQIiEiADKAKssgJrIhMgE0EfdSITcyATa2pqaiADKALMsQIgAygCoLICIhNrIhQgFEEfdSIUcyAUa2ogAygCyLECIhQgAygCnLICayIWIBZBH3UiFnMgFmtqQeQASWpBBkcEQCAMQgA3AnwgDEIANwKEAQwBCyAMQQA2AnwgDCAAIAFqIAMoAtyxAiAOayIAIABBH3UiAHMgAGtqIBIgAygCrLICayIAIABBH3UiAHMgAGtqIAMoAsyxAiATayIAIABBH3UiAHMgAGtqIBQgAygCnLICayIAIABBH3UiAHMgAGtqQQpJIAMoAoCzAiADKALUswJrIgAgAEEfdSIAcyAAayADKAKEswIgAygC2LMCayIAIABBH3UiAHMgAGtqIAMoAvyyAiADKALQswJrIgAgAEEfdSIAcyAAa2ogAygC+LICIAMoAsyzAmsiACAAQR91IgBzIABraiADKAL0sgIgAygCyLMCayIAIABBH3UiAHMgAGtqIAMoAvCyAiADKALEswJrIgAgAEEfdSIAcyAAa2pBCklxNgJ8IAxBADYCgAEgDCADKALwsQIgCmsiACAAQR91IgBzIABrIARqIAMoAuyxAiADKALAsgJrIgAgAEEfdSIAcyAAa2ogByADKAK8sgJrIgAgAEEfdSIAcyAAa2ogAygC4LECIAtrIgAgAEEfdSIAcyAAa2pBCkkgAygClLMCIAMoAuizAmsiACAAQR91IgBzIABrIAMoApizAiADKALsswJrIgAgAEEfdSIAcyAAa2ogAygCkLMCIAMoAuSzAmsiACAAQR91IgBzIABraiADKAKMswIgAygC4LMCayIAIABBH3UiAHMgAGtqIAMoAoizAiADKALcswJrIgAgAEEfdSIAcyAAa2pBCklxNgKAASAMQQA2AoQBIAwgAygCgLICIAMoAtSyAmsiACAAQR91IgBzIABrIAMoAoSyAiAFayIAIABBH3UiAHMgAGtqIAMoAvyxAiADKALQsgJrIgAgAEEfdSIAcyAAa2ogBiADKALMsgJrIgAgAEEfdSIAcyAAa2ogAygC9LECIAhrIgAgAEEfdSIAcyAAa2pBCkkgAygCqLMCIAMoAvyzAmsiACAAQR91IgBzIABrIAMoAqyzAiADKAKAtAJrIgAgAEEfdSIAcyAAa2ogAygCpLMCIAMoAvizAmsiACAAQR91IgBzIABraiADKAKgswIgAygC9LMCayIAIABBH3UiAHMgAGtqIAMoApyzAiADKALwswJrIgAgAEEfdSIAcyAAa2pBCklxNgKEASAMQQA2AogBIAwgAygClLICIAMoAuiyAmsiACAAQR91IgBzIABrIAMoApiyAiADKALssgJrIgAgAEEfdSIAcyAAa2ogAygCkLICIAMoAuSyAmsiACAAQR91IgBzIABraiADKAKMsgIgAygC4LICayIAIABBH3UiAHMgAGtqIAMoAoiyAiADKALcsgJrIgAgAEEfdSIAcyAAa2pBCkkgAygCvLMCIAMoApC0AmsiACAAQR91IgBzIABrIAMoAsCzAiADKAKUtAJrIgAgAEEfdSIAcyAAa2ogAygCuLMCIAMoAoy0AmsiACAAQR91IgBzIABraiADKAK0swIgAygCiLQCayIAIABBH3UiAHMgAGtqIAMoArCzAiADKAKEtAJrIgAgAEEfdSIAcyAAa2pBCklxNgKIAQtB/x8gAygCkAQgAygCAG0iBCAEQf8fThshACADKAK0jQIiBQRAQQAhAUH/HyAAISMgAygCsI0CIgYgBUEDdEF2bWoiBSEiAn8gDCANQQN0akGQEWorAwBEzczMzMzMCECiIAS3oSJImUQAAAAAAADgQWMEQCBIqgwBC0GAgICAeAsiBEHlAE4EQCAGQQZsQQptIgEgBCABIARIGyEBCyAjICIgASABIAVIG2oiACAAQf8fThshAAsgGSANQbABbGogEEHYAGxqQdgAEAcgAyANQbgCbGogEEGcAWxqQZgMakGcARAHIAlCADcCCCAJQgA3AgAgEUIANwKsASARQQA2AqQBIBFCADcCnAEgEUIA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BQAHAAEABgABAAEAAAABAwYHAwMGBwYGBwgHBgcIBwADAAUAAQAGAAIAAwACAAUABAAEAAEAAwADAAIAAAADAwUHAwIEBQQEBQYGBQYHAQACAAoAEwAQAAoAAwADAAcACgAFAAMACwAEAA0AEQAIAAQADAALABIADwALAAIABwAGAAkADgADAAEABgAEAAUAAwACAEGACgskAQMGCAgJAwQGBwcIBgUHCAgJBwcICQkJBwcICQkKCAgJCgoKAEGwCgtFAwAEAAYAEgAMAAUABQABAAIAEAAJAAMABwADAAUADgAHAAMAEwARAA8ADQAKAAQADQAFAAgACwAFAAEADAAEAAQAAQABAEGACwskAgMGCAgJAwIECAgIBgQGCAgJCAgICQkKCAcICQoKCQgJCQsLAEGwCwtFBwAFAAkADgAPAAcABgAEAAUABQAGAAcABwAGAAgACAAIAAUADwAGAAkACgAFAAEACwAHAAkABgAEAAEADgAEAAYAAgAGAEGADAskAwMFBggJAwMEBQYIBAQFBgcIBgUGBwcIBwYHBwgJCAcICAkJAEGwDAugHQEAAgAKABcAIwAeAAwAEQADAAMACAAMABIAFQAMAAcACwAJAA8AFQAgACgAEwAGAA4ADQAWACIALgAXABIABwAUABMAIQAvABsAFgAJAAMAHwAWACkAGgAVABQABQADAA4ADQAKAAsAEAAGAAUAAQAJAAgABwAIAAQABAACAAAAAQMGCAkJCQoDBAYHCAkICAYGBwgJCgkJBwcICQoKCQoICAkKCgoKCgkJCgoLCwoLCAgJCgoKCwsJCAkKCgsLCwMABAAKABgAIgAhABUADwAFAAMABAAKACAAEQALAAoACwAHAA0AEgAeAB8AFAAFABkACwATADsAGwASAAwABQAjACEAHwA6AB4AEAAHAAUAHAAaACAAEwARAA8ACAAOAA4ADAAJAA0ADgAJAAQAAQALAAQABgAGAAYAAwACAAAAAgMFBwgJCAkDAwQGCAgHCAUFBgcICQgIBwYHCQgKCAkICAgJCQoJCggICQoKCwoLCAcHCAkKCgoIBwgJCgoKCgkABgAQACEAKQAnACYAGgAHAAUABgAJABcAEAAaAAsAEQAHAAsADgAVAB4ACgAHABEACgAPAAwAEgAcAA4ABQAgAA0AFgATABIAEAAJAAUAKAARAB8AHQARAA0ABAACABsADAALAA8ACgAHAAQAAQAbAAwACAAMAAYAAwABAAAABAMFBwgJCQkDAwQFBwcICAUEBQYHCAcIBgUGBgcICAgHBgcHCAgICQgHCAgICQgJCAcHCAgJCQoJCAgJCQkJCgEABQAOABUAIgAzAC4ARwAqADQARAA0AEMALAArABMAAwAEAAwAEwAfABoALAAhAB8AGAAgABgAHwAjABYADgAPAA0AFwAkADsAMQBNAEEAHQAoAB4AKAAbACEAKgAQABYAFAAlAD0AOABPAEkAQAArAEwAOAAlABoAHwAZAA4AIwAQADwAOQBhAEsAcgBbADYASQA3ACkAMAA1ABcAGAA6ABsAMgBgAEwARgBdAFQATQA6AE8AHQBKADEAKQARAC8ALQBOAEoAcwBeAFoATwBFAFMARwAyADsAJgAkAA8ASAAiADgAXwBcAFUAWwBaAFYASQBNAEEAMwAsACsAKgArABQAHgAsADcATgBIAFcATgA9AC4ANgAlAB4AFAAQADUAGQApACUALAA7ADYAUQBCAEwAOQA2ACUAEgAnAAsAIwAhAB8AOQAqAFIASABQAC8AOgA3ABUAFgAaACYAFgA1ABkAFwAmAEYAPAAzACQANwAaACIAFwAbAA4ACQAHACIAIAAcACcAMQBLAB4ANAAwACgANAAcABIAEQAJAAUALQAVACIAQAA4ADIAMQAtAB8AEwAMAA8ACgAHAAYAAwAwABcAFAAnACQAIwA1ABUAEAAXAA0ACgAGAAEABAACABAADwARABsAGQAUAB0ACwARAAwAEAAIAAEAAQAAAAEAAQQGBwgJCQoJCgsLDAwNDQMEBgcICAkJCQkKCgsMDAwGBgcICQkKCgkKCgsLDA0NBwcICQkKCgoKCwsLCwwNDQgHCQkKCgsLCgsLDAwNDQ4JCAkKCgoLCwsLDAsNDQ4OCQkKCgsLCwsLDAwMDQ0ODgoJCgsLCwwMDAwNDQ0OEBAJCAkKCgsLDAwMDA0NDg8PCgkKCgsLCw0MDQ0ODg4QDwoKCgsLDAwNDA0ODQ4PEBELCgoLDAwMDA0NDQ4PDw8QCwsLDAwNDA0ODg8PDxAQEAwLDA0NDQ4ODg4ODxAPEBANDAwNDQ0PDg4RDw8PERAQDAwNDg4ODw4PDxAQExITEAcADAASADUALwBMAHwAbABZAHsAbAB3AGsAUQB6AD8ADQAFABAAGwAuACQAPQAzACoARgA0AFMAQQApADsAJAATABEADwAYACkAIgA7ADAAKABAADIATgA+AFAAOAAhAB0AHAAZACsAJwA/ADcAXQBMADsAXQBIADYASwAyAB0ANAAWACoAKABDADkAXwBPAEgAOQBZAEUAMQBCAC4AGwBNACUAIwBCADoANABbAEoAPgAwAE8APwBaAD4AKAAmAH0AIAA8ADgAMgBcAE4AQQA3AFcARwAzAEkAMwBGAB4AbQA1ADEAXgBYAEsAQgB6AFsASQA4ACoAQAAsABUAGQBaACsAKQBNAEkAPwA4AFwATQBCAC8AQwAwADUAJAAUAEcAIgBDADwAOgAxAFgATABDAGoARwA2ACYAJwAXAA8AbQA1ADMALwBaAFIAOgA5ADAASAA5ACkAFwAbAD4ACQBWACoAKAAlAEYAQAA0ACsARgA3ACoAGQAdABIACwALAHYARAAeADcAMgAuAEoAQQAxACcAGAAQABYADQAOAAcAWwAsACcAJgAiAD8ANAAtAB8ANAAcABMADgAIAAkAAwB7ADwAOgA1AC8AKwAgABYAJQAYABEADAAPAAoAAgABAEcAJQAiAB4AHAAUABEAGgAVABAACgAGAAgABgACAAAAAwQFBwcICQkJCgoLCwsMDQQDBQYHBwgICAkJCgoKCwsFBQUGBwcICAgJCQoKCwsLBgYGBwcICAkJCQoKCgsLCwcGBwcICAkJCQkKCgoLCwsIBwcICAgJCQkJCgoLCwsMCQcICAgJCQkJCgoKCwsMDAkICAkJCQkKCgoKCgsLCwwJCAgJCQkJCgoKCgsLDAwMCQgJCQkJCgoKCwsLCwwMDAoJCQkKCgoKCgsLCwsMDQwKCQkJCgoKCgsLCwsMDAwNCwoJCgoKCwsLCwsLDAwNDQsKCgoKCwsLCwwMDAwMDQ0MCwsLCwsLCwwMDAwNDQwNDAsLCwsLCwwMDAwMDQ0NDQEABQAOACwASgA/AG4AXQCsAJUAigDyAOEAwwB4AREAAwAEAAwAFAAjAD4ANQAvAFMASwBEAHcAyQBrAM8ACQAPAA0AFwAmAEMAOgBnAFoAoQBIAH8AdQBuANEAzgAQAC0AFQAnAEUAQAByAGMAVwCeAIwA/ADUAMcAgwFtARoASwAkAEQAQQBzAGUAswCkAJsACAH2AOIAiwF+AWoBCQBCAB4AOwA4AGYAuQCtAAkBjgD9AOgAkAGEAXoBvQEQAG8ANgA0AGQAuACyAKAAhQABAfQA5ADZAIEBbgHLAgoAYgAwAFsAWAClAJ0AlAAFAfgAlwGNAXQBfAF5A3QDCABVAFQAUQCfAJwAjwAEAfkAqwGRAYgBfwHXAskCxAIHAJoATABJAI0AgwAAAfUAqgGWAYoBgAHfAmcBxgJgAQsAiwCBAEMAfQD3AOkA5QDbAIkB5wLhAtACdQNyA7cBBADzAHgAdgBzAOMA3wCMAeoC5gLgAtECyALCAt8AtAEGAMoA4ADeANoA2ACFAYIBfQFsAXgDuwHDArgBtQHABgQA6wLTANIA0AByAXsB3gLTAsoCxwZzA20DbAODDWEDAgB5AXEBZgC7ANYC0gJmAccCxQJiA8YGZwOCDWYDsgEAAAwACgAHAAsACgARAAsACQANAAwACgAHAAUAAwABAAMAAQQGCAkJCgoLCwsMDAwNCQMEBgcICQkJCgoKCwwLDAgGBgcICQkKCgsKCwsLDAwJCAcICQkKCgoLCwwMDA0NCgkICQkKCgsLCwwMDA0NDQkJCAkJCgsLDAsMDA0NDQ4KCgkJCgsLCwsMDAwMDQ0OCgoJCgoLCwsMDA0NDQ0PDwoKCgoLCwsMDA0NDQ0ODg4KCwoKCwsMDA0NDQ0ODQ4NCwsLCgsMDAwMDQ4ODg8PDgoMCwsLDAwNDg4ODg4ODQ4LDAwMDAwNDQ0NDw4ODg4QCw4MDAwNDQ4ODhAPDw8RDwsNDQsMDg4NDg4PEA8RDw4LCQgICQkKCgoLCwsLCwsLCA8ADQAuAFAAkgAGAfgAsgGqAZ0CjQKJAm0CBQIIBFgADgAMABUAJgBHAIIAegDYANEAxgBHAVkBPwEpARcBKgAvABYAKQBKAEQAgAB4AN0AzwDCALYAVAE7AScBHQISAFEAJwBLAEYAhgB9AHQA3ADMAL4AsgBFATcBJQEPARAAkwBIAEUAhwB/AHYAcADSAMgAvABgAUMBMgEdARwCDgAHAUIAgQB+AHcAcgDWAMoAwAC0AFUBPQEtARkBBgEMAPkAewB5AHUAcQDXAM4AwwC5AFsBSgE0ASMBEAEIAgoAswFzAG8AbQDTAMsAxAC7AGEBTAE5ASoBGwETAn0BEQCrAdQA0ADNAMkAwQC6ALEAqQBAAS8BHgEMAQICeQEQAE8BxwDFAL8AvQC1AK4ATQFBATEBIQETAQkCewFzAQsAnAK4ALcAswCvAFgBSwE6ATABIgEVARICfwF1AW4BCgCMAloBqwCoAKQAPgE1ASsBHwEUAQcBAQJ3AXABagEGAIgCQgE8ATgBMwEuASQBHAENAQUBAAJ4AXIBbAFnAQQAbAIsASgBJgEgARoBEQEKAQMCfAF2AXEBbQFpAWUBAgAJBBgBFgESAQsBCAEDAX4BegF0AW8BawFoAWYBZAEAACsAFAATABEADwANAAsACQAHAAYABAAHAAUAAwABAAMABAQGBwgJCQoKCwsLCwsMCQQEBQYHCAgJCQkKCgoKCggGBQYHBwgICQkJCQoKCgsHBwYHBwgICAkJCQkKCgoKBwgHBwgICAgJCQkKCgoKCwcJBwgICAgJCQkJCgoKCgoHCQgICAgJCQkJCgoKCgoLBwoICAgJCQkJCgoKCgoLCwgKCQkJCQkJCQkKCgoKCwsICgkJCQkJCQoKCgoKCwsLCAsJCQkJCgoKCgoKCwsLCwgLCgkJCQoKCgoKCgsLCwsICwoKCgoKCgoKCgsLCwsLCAsKCgoKCgoKCwsLCwsLCwgMCgoKCgoKCwsLCwsLCwsICAcHBwcHBwcHBwcICAgIBAEABQAEAAUABgAFAAQABAAHAAMABgAAAAcAAgADAAEAAQQEBQQGBQYEBQUGBQYGBg8ADgANAAwACwAKAAkACAAHAAYABQAEAAMAAgABAAAABAQEBAQEBAQEBAQEBAQEBABB6CkLBQIAAAACAEH5KQsMBAAACAQAAAMAAAADAEGQKgsNEAQAACIEAAADAAAAAwBBqCoLBjAEAABCBABByCoLBQQAAAAEAEHYKgsNUAQAAHAEAAAEAAAABABB8CoLDYAEAACgBAAABgAAAAYAQYgrCw2wBAAAAAUAAAYAAAAGAEGgKwsNMAUAAIAFAAAGAAAABgBBuCsLDbAFAAAABgAACAAAAAgAQdArCw0wBgAAsAYAAAgAAAAIAEHoKwsN8AYAAHAHAAAIAAAACABBgCwLDbAHAAAwCAAAEAAAABAAQZgsCwZwCAAAcAoAQbgsCwUQAAAAEABByCwLjQNwCwAAcA0AABAAAAAQAAAAAQAAAAEAAABwDgAAcBAAABAAAAAQAAAAAgAAAAMAAABwDgAAcBAAABAAAAAQAAAAAwAAAAcAAABwDgAAcBAAABAAAAAQAAAABAAAAA8AAABwDgAAcBAAABAAAAAQAAAABgAAAD8AAABwDgAAcBAAABAAAAAQAAAACAAAAP8AAABwDgAAcBAAABAAAAAQAAAACgAAAP8DAABwDgAAcBAAABAAAAAQAAAADQAAAP8fAABwDgAAcBAAABAAAAAQAAAABAAAAA8AAABwEQAAcBMAABAAAAAQAAAABQAAAB8AAABwEQAAcBMAABAAAAAQAAAABgAAAD8AAABwEQAAcBMAABAAAAAQAAAABwAAAH8AAABwEQAAcBMAABAAAAAQAAAACAAAAP8AAABwEQAAcBMAABAAAAAQAAAACQAAAP8BAABwEQAAcBMAABAAAAAQAAAACwAAAP8HAABwEQAAcBMAABAAAAAQAAAADQAAAP8fAABwEQAAcBMAAAEAAAAQAEHgLwsNcBQAAJAUAAABAAAAEABB+C8LBqAUAADAFABBrDALiQEBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAIAAAADAAAAAwAAAAQAAAADAAAABAAAAAMAAAAEAAAABAAAAAUAAAAEAAAABQAAAAQAAAAGAAAABQAAAAYAAAAFAAAABgAAAAUAAAAHAAAABgAAAAcAAAAGAAAABwBBwDELDQEAAAD/////AQAAAAIAQeAxC5IBAwAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAQAAAAEAAAAAAAAAAEAAAACAAAAAwAAAAAAAAABAAAAAgAAAAMAAAABAAAAAgAAAAMAAAABAAAAAgAAAAMAAAACAAAAAwAAAESsAACAuwAAAH0AACJWAADAXQAAgD4AABErAADgLgAAQB8AQYAzC7oI/////////////////////wgAAAD/////CAAAACAAAAAQAAAA/////xAAAAAoAAAAGAAAAP////8YAAAAMAAAACAAAAD/////IAAAADgAAAAoAAAA/////ygAAABAAAAAMAAAAP////8wAAAAUAAAADgAAAD/////OAAAAGAAAABAAAAA/////0AAAABwAAAA//////////9QAAAAgAAAAP//////////YAAAAKAAAAD//////////3AAAADAAAAA//////////+AAAAA4AAAAP//////////kAAAAAABAAD//////////6AAAABAAQAA/////////////////////wAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAeAAAAJAAAACwAAAA0AAAAPgAAAEoAAABaAAAAbgAAAIYAAACiAAAAxAAAAO4AAAAgAQAAVgEAAKIBAABAAgAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAB4AAAAkAAAAKgAAADIAAAA8AAAASAAAAFgAAABqAAAAgAAAAJwAAAC+AAAA5gAAABQBAABKAQAAgAEAAEACAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABSAAAAZgAAAH4AAACcAAAAwgAAAPAAAAAoAQAAbAEAAMABAAAmAgAAQAIAAAAAAAAGAAAADAAAABIAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABQAAAAYAAAAHQAAACMAAAAqAAAAMgAAADuAAAAHAEAAFABAACMAQAA0AEAAAoCAABAAgAAAAAAAAYAAAAMAAAAEgAAABgAAAAeAAAAJAAAACwAAAA2AAAAQgAAAFAAAABgAAAAcgAAAIgAAACiAAAAwgAAAOgAAAAWAQAASgEAAIoBAADQAQAAHAIAAEACAAAAAAAABgAAAAwAAAASAAAAGAAAAB4AAAAkAAAALAAAAC0AAABCAAAAUAAAAGAAAAB0AAAAjAAAAKgAAADIAAAA7gAAAPgAAABQAQAAjAEAANABAAAKAgAAQAIAAAAAAAAGAAAADAAAABIAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABQAAAAYAAAAHQAAACMAAAAqAAAAMgAAADuAAAAHAEAAFABAACMAQAA0AEAAAoCAABAAgAAAAAAAAYAAAAMAAAAEgAAABgAAAAeAAAAJAAAACwAAAA2AAAAQgAAAFAAAABgAAAAdAAAAIwAAACoAAAAyAAAAO4AAAAcAQAAUAEAAIwBAADQAQAACgIAAEACAAAAAAAADAAAABgAAAAkAAAAMAAAADwAAABIAAAAWAAAAGwAAACEAAAAoAAAAMAAAADoAAAAGAEAAFABAACQAQAA3AEAADYCAAA4AgAAOgIAADwCAAA+AgAAQAIAQdw7C8oPnff//533//+d9///nff//533//+d9///Ou///zrv//86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";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["c"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["o"];addOnInit(Module["asm"]["d"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort("invalid type for getValue: "+type)}return null}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort("invalid type for setValue: "+type)}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ASSERTIONS=false;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output};function intArrayFromBase64(s){try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error("Converting base64 string to bytes failed.")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}var asmLibraryArg={"b":_emscripten_memcpy_big,"a":_emscripten_resize_heap};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["d"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["e"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["f"]).apply(null,arguments)};var _shine_check_config=Module["_shine_check_config"]=function(){return(_shine_check_config=Module["_shine_check_config"]=Module["asm"]["g"]).apply(null,arguments)};var _shine_samples_per_pass=Module["_shine_samples_per_pass"]=function(){return(_shine_samples_per_pass=Module["_shine_samples_per_pass"]=Module["asm"]["h"]).apply(null,arguments)};var _shine_encode_buffer=Module["_shine_encode_buffer"]=function(){return(_shine_encode_buffer=Module["_shine_encode_buffer"]=Module["asm"]["i"]).apply(null,arguments)};var _shine_flush=Module["_shine_flush"]=function(){return(_shine_flush=Module["_shine_flush"]=Module["asm"]["j"]).apply(null,arguments)};var _shine_close=Module["_shine_close"]=function(){return(_shine_close=Module["_shine_close"]=Module["asm"]["k"]).apply(null,arguments)};var _shine_js_int16_len=Module["_shine_js_int16_len"]=function(){return(_shine_js_int16_len=Module["_shine_js_int16_len"]=Module["asm"]["l"]).apply(null,arguments)};var _shine_js_ptr_len=Module["_shine_js_ptr_len"]=function(){return(_shine_js_ptr_len=Module["_shine_js_ptr_len"]=Module["asm"]["m"]).apply(null,arguments)};var _shine_js_init=Module["_shine_js_init"]=function(){return(_shine_js_init=Module["_shine_js_init"]=Module["asm"]["n"]).apply(null,arguments)};Module["setValue"]=setValue;Module["getValue"]=getValue;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();
-+
-+
-+ return createModule.ready
-+}
-+);
-+})();
-+export default createModule;
-\ No newline at end of file
-diff --git a/js/dist/libshine_node.js b/js/dist/libshine_node.js
-new file mode 100644
-index 0000000..02d7990
---- /dev/null
-+++ b/js/dist/libshine_node.js
-@@ -0,0 +1 @@
-+var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{var ret=tryParseAsDataURI(filename);if(ret){return binary?ret:ret.toString()}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{var ret=tryParseAsDataURI(filename);if(ret){onload(ret)}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="data:application/octet-stream;base64,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/LECIAMoAtCyAmsiBiAGQR91IgZzIAZraiADKAL4sQIiBiADKALMsgJrIgggCEEfdSIIcyAIa2ogAygC9LECIAMoAsiyAiIIayIKIApBH3UiCnMgCmtqIAMoAvCxAiADKALEsgIiCmsiByAHQR91IgdzIAdraiADKALssQIgAygCwLICayIHIAdBH3UiB3MgB2tqIAMoAuixAiIHIAMoAryyAmsiCyALQR91IgtzIAtramogAygC4LECIAMoArSyAiILayIOIA5BH3UiDnMgDmtqIAMoAtyxAiADKAKwsgIiDmsiEiASQR91IhJzIBJraiADKALYsQIiEiADKAKssgJrIhMgE0EfdSITcyATa2pqaiADKALMsQIgAygCoLICIhNrIhQgFEEfdSIUcyAUa2ogAygCyLECIhQgAygCnLICayIWIBZBH3UiFnMgFmtqQeQASWpBBkcEQCAMQgA3AnwgDEIANwKEAQwBCyAMQQA2AnwgDCAAIAFqIAMoAtyxAiAOayIAIABBH3UiAHMgAGtqIBIgAygCrLICayIAIABBH3UiAHMgAGtqIAMoAsyxAiATayIAIABBH3UiAHMgAGtqIBQgAygCnLICayIAIABBH3UiAHMgAGtqQQpJIAMoAoCzAiADKALUswJrIgAgAEEfdSIAcyAAayADKAKEswIgAygC2LMCayIAIABBH3UiAHMgAGtqIAMoAvyyAiADKALQswJrIgAgAEEfdSIAcyAAa2ogAygC+LICIAMoAsyzAmsiACAAQR91IgBzIABraiADKAL0sgIgAygCyLMCayIAIABBH3UiAHMgAGtqIAMoAvCyAiADKALEswJrIgAgAEEfdSIAcyAAa2pBCklxNgJ8IAxBADYCgAEgDCADKALwsQIgCmsiACAAQR91IgBzIABrIARqIAMoAuyxAiADKALAsgJrIgAgAEEfdSIAcyAAa2ogByADKAK8sgJrIgAgAEEfdSIAcyAAa2ogAygC4LECIAtrIgAgAEEfdSIAcyAAa2pBCkkgAygClLMCIAMoAuizAmsiACAAQR91IgBzIABrIAMoApizAiADKALsswJrIgAgAEEfdSIAcyAAa2ogAygCkLMCIAMoAuSzAmsiACAAQR91IgBzIABraiADKAKMswIgAygC4LMCayIAIABBH3UiAHMgAGtqIAMoAoizAiADKALcswJrIgAgAEEfdSIAcyAAa2pBCklxNgKAASAMQQA2AoQBIAwgAygCgLICIAMoAtSyAmsiACAAQR91IgBzIABrIAMoAoSyAiAFayIAIABBH3UiAHMgAGtqIAMoAvyxAiADKALQsgJrIgAgAEEfdSIAcyAAa2ogBiADKALMsgJrIgAgAEEfdSIAcyAAa2ogAygC9LECIAhrIgAgAEEfdSIAcyAAa2pBCkkgAygCqLMCIAMoAvyzAmsiACAAQR91IgBzIABrIAMoAqyzAiADKAKAtAJrIgAgAEEfdSIAcyAAa2ogAygCpLMCIAMoAvizAmsiACAAQR91IgBzIABraiADKAKgswIgAygC9LMCayIAIABBH3UiAHMgAGtqIAMoApyzAiADKALwswJrIgAgAEEfdSIAcyAAa2pBCklxNgKEASAMQQA2AogBIAwgAygClLICIAMoAuiyAmsiACAAQR91IgBzIABrIAMoApiyAiADKALssgJrIgAgAEEfdSIAcyAAa2ogAygCkLICIAMoAuSyAmsiACAAQR91IgBzIABraiADKAKMsgIgAygC4LICayIAIABBH3UiAHMgAGtqIAMoAoiyAiADKALcsgJrIgAgAEEfdSIAcyAAa2pBCkkgAygCvLMCIAMoApC0AmsiACAAQR91IgBzIABrIAMoAsCzAiADKAKUtAJrIgAgAEEfdSIAcyAAa2ogAygCuLMCIAMoAoy0AmsiACAAQR91IgBzIABraiADKAK0swIgAygCiLQCayIAIABBH3UiAHMgAGtqIAMoArCzAiADKAKEtAJrIgAgAEEfdSIAcyAAa2pBCklxNgKIAQtB/x8gAygCkAQgAygCAG0iBCAEQf8fThshACADKAK0jQIiBQRAQQAhAUH/HyAAISMgAygCsI0CIgYgBUEDdEF2bWoiBSEiAn8gDCANQQN0akGQEWorAwBEzczMzMzMCECiIAS3oSJImUQAAAAAAADgQWMEQCBIqgwBC0GAgICAeAsiBEHlAE4EQCAGQQZsQQptIgEgBCABIARIGyEBCyAjICIgASABIAVIG2oiACAAQf8fThshAAsgGSANQbABbGogEEHYAGxqQdgAEAcgAyANQbgCbGogEEGcAWxqQZgMakGcARAHIAlCADcCCCAJQgA3AgAgEUIANwKsASARQQA2AqQBIBFCADcCnAEgEUIA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BQAHAAEABgABAAEAAAABAwYHAwMGBwYGBwgHBgcIBwADAAUAAQAGAAIAAwACAAUABAAEAAEAAwADAAIAAAADAwUHAwIEBQQEBQYGBQYHAQACAAoAEwAQAAoAAwADAAcACgAFAAMACwAEAA0AEQAIAAQADAALABIADwALAAIABwAGAAkADgADAAEABgAEAAUAAwACAEGACgskAQMGCAgJAwQGBwcIBgUHCAgJBwcICQkJBwcICQkKCAgJCgoKAEGwCgtFAwAEAAYAEgAMAAUABQABAAIAEAAJAAMABwADAAUADgAHAAMAEwARAA8ADQAKAAQADQAFAAgACwAFAAEADAAEAAQAAQABAEGACwskAgMGCAgJAwIECAgIBgQGCAgJCAgICQkKCAcICQoKCQgJCQsLAEGwCwtFBwAFAAkADgAPAAcABgAEAAUABQAGAAcABwAGAAgACAAIAAUADwAGAAkACgAFAAEACwAHAAkABgAEAAEADgAEAAYAAgAGAEGADAskAwMFBggJAwMEBQYIBAQFBgcIBgUGBwcIBwYHBwgJCAcICAkJAEGwDAugHQEAAgAKABcAIwAeAAwAEQADAAMACAAMABIAFQAMAAcACwAJAA8AFQAgACgAEwAGAA4ADQAWACIALgAXABIABwAUABMAIQAvABsAFgAJAAMAHwAWACkAGgAVABQABQADAA4ADQAKAAsAEAAGAAUAAQAJAAgABwAIAAQABAACAAAAAQMGCAkJCQoDBAYHCAkICAYGBwgJCgkJBwcICQoKCQoICAkKCgoKCgkJCgoLCwoLCAgJCgoKCwsJCAkKCgsLCwMABAAKABgAIgAhABUADwAFAAMABAAKACAAEQALAAoACwAHAA0AEgAeAB8AFAAFABkACwATADsAGwASAAwABQAjACEAHwA6AB4AEAAHAAUAHAAaACAAEwARAA8ACAAOAA4ADAAJAA0ADgAJAAQAAQALAAQABgAGAAYAAwACAAAAAgMFBwgJCAkDAwQGCAgHCAUFBgcICQgIBwYHCQgKCAkICAgJCQoJCggICQoKCwoLCAcHCAkKCgoIBwgJCgoKCgkABgAQACEAKQAnACYAGgAHAAUABgAJABcAEAAaAAsAEQAHAAsADgAVAB4ACgAHABEACgAPAAwAEgAcAA4ABQAgAA0AFgATABIAEAAJAAUAKAARAB8AHQARAA0ABAACABsADAALAA8ACgAHAAQAAQAbAAwACAAMAAYAAwABAAAABAMFBwgJCQkDAwQFBwcICAUEBQYHCAcIBgUGBgcICAgHBgcHCAgICQgHCAgICQgJCAcHCAgJCQoJCAgJCQkJCgEABQAOABUAIgAzAC4ARwAqADQARAA0AEMALAArABMAAwAEAAwAEwAfABoALAAhAB8AGAAgABgAHwAjABYADgAPAA0AFwAkADsAMQBNAEEAHQAoAB4AKAAbACEAKgAQABYAFAAlAD0AOABPAEkAQAArAEwAOAAlABoAHwAZAA4AIwAQADwAOQBhAEsAcgBbADYASQA3ACkAMAA1ABcAGAA6ABsAMgBgAEwARgBdAFQATQA6AE8AHQBKADEAKQARAC8ALQBOAEoAcwBeAFoATwBFAFMARwAyADsAJgAkAA8ASAAiADgAXwBcAFUAWwBaAFYASQBNAEEAMwAsACsAKgArABQAHgAsADcATgBIAFcATgA9AC4ANgAlAB4AFAAQADUAGQApACUALAA7ADYAUQBCAEwAOQA2ACUAEgAnAAsAIwAhAB8AOQAqAFIASABQAC8AOgA3ABUAFgAaACYAFgA1ABkAFwAmAEYAPAAzACQANwAaACIAFwAbAA4ACQAHACIAIAAcACcAMQBLAB4ANAAwACgANAAcABIAEQAJAAUALQAVACIAQAA4ADIAMQAtAB8AEwAMAA8ACgAHAAYAAwAwABcAFAAnACQAIwA1ABUAEAAXAA0ACgAGAAEABAACABAADwARABsAGQAUAB0ACwARAAwAEAAIAAEAAQAAAAEAAQQGBwgJCQoJCgsLDAwNDQMEBgcICAkJCQkKCgsMDAwGBgcICQkKCgkKCgsLDA0NBwcICQkKCgoKCwsLCwwNDQgHCQkKCgsLCgsLDAwNDQ4JCAkKCgoLCwsLDAsNDQ4OCQkKCgsLCwsLDAwMDQ0ODgoJCgsLCwwMDAwNDQ0OEBAJCAkKCgsLDAwMDA0NDg8PCgkKCgsLCw0MDQ0ODg4QDwoKCgsLDAwNDA0ODQ4PEBELCgoLDAwMDA0NDQ4PDw8QCwsLDAwNDA0ODg8PDxAQEAwLDA0NDQ4ODg4ODxAPEBANDAwNDQ0PDg4RDw8PERAQDAwNDg4ODw4PDxAQExITEAcADAASADUALwBMAHwAbABZAHsAbAB3AGsAUQB6AD8ADQAFABAAGwAuACQAPQAzACoARgA0AFMAQQApADsAJAATABEADwAYACkAIgA7ADAAKABAADIATgA+AFAAOAAhAB0AHAAZACsAJwA/ADcAXQBMADsAXQBIADYASwAyAB0ANAAWACoAKABDADkAXwBPAEgAOQBZAEUAMQBCAC4AGwBNACUAIwBCADoANABbAEoAPgAwAE8APwBaAD4AKAAmAH0AIAA8ADgAMgBcAE4AQQA3AFcARwAzAEkAMwBGAB4AbQA1ADEAXgBYAEsAQgB6AFsASQA4ACoAQAAsABUAGQBaACsAKQBNAEkAPwA4AFwATQBCAC8AQwAwADUAJAAUAEcAIgBDADwAOgAxAFgATABDAGoARwA2ACYAJwAXAA8AbQA1ADMALwBaAFIAOgA5ADAASAA5ACkAFwAbAD4ACQBWACoAKAAlAEYAQAA0ACsARgA3ACoAGQAdABIACwALAHYARAAeADcAMgAuAEoAQQAxACcAGAAQABYADQAOAAcAWwAsACcAJgAiAD8ANAAtAB8ANAAcABMADgAIAAkAAwB7ADwAOgA1AC8AKwAgABYAJQAYABEADAAPAAoAAgABAEcAJQAiAB4AHAAUABEAGgAVABAACgAGAAgABgACAAAAAwQFBwcICQkJCgoLCwsMDQQDBQYHBwgICAkJCgoKCwsFBQUGBwcICAgJCQoKCwsLBgYGBwcICAkJCQoKCgsLCwcGBwcICAkJCQkKCgoLCwsIBwcICAgJCQkJCgoLCwsMCQcICAgJCQkJCgoKCwsMDAkICAkJCQkKCgoKCgsLCwwJCAgJCQkJCgoKCgsLDAwMCQgJCQkJCgoKCwsLCwwMDAoJCQkKCgoKCgsLCwsMDQwKCQkJCgoKCgsLCwsMDAwNCwoJCgoKCwsLCwsLDAwNDQsKCgoKCwsLCwwMDAwMDQ0MCwsLCwsLCwwMDAwNDQwNDAsLCwsLCwwMDAwMDQ0NDQEABQAOACwASgA/AG4AXQCsAJUAigDyAOEAwwB4AREAAwAEAAwAFAAjAD4ANQAvAFMASwBEAHcAyQBrAM8ACQAPAA0AFwAmAEMAOgBnAFoAoQBIAH8AdQBuANEAzgAQAC0AFQAnAEUAQAByAGMAVwCeAIwA/ADUAMcAgwFtARoASwAkAEQAQQBzAGUAswCkAJsACAH2AOIAiwF+AWoBCQBCAB4AOwA4AGYAuQCtAAkBjgD9AOgAkAGEAXoBvQEQAG8ANgA0AGQAuACyAKAAhQABAfQA5ADZAIEBbgHLAgoAYgAwAFsAWAClAJ0AlAAFAfgAlwGNAXQBfAF5A3QDCABVAFQAUQCfAJwAjwAEAfkAqwGRAYgBfwHXAskCxAIHAJoATABJAI0AgwAAAfUAqgGWAYoBgAHfAmcBxgJgAQsAiwCBAEMAfQD3AOkA5QDbAIkB5wLhAtACdQNyA7cBBADzAHgAdgBzAOMA3wCMAeoC5gLgAtECyALCAt8AtAEGAMoA4ADeANoA2ACFAYIBfQFsAXgDuwHDArgBtQHABgQA6wLTANIA0AByAXsB3gLTAsoCxwZzA20DbAODDWEDAgB5AXEBZgC7ANYC0gJmAccCxQJiA8YGZwOCDWYDsgEAAAwACgAHAAsACgARAAsACQANAAwACgAHAAUAAwABAAMAAQQGCAkJCgoLCwsMDAwNCQMEBgcICQkJCgoKCwwLDAgGBgcICQkKCgsKCwsLDAwJCAcICQkKCgoLCwwMDA0NCgkICQkKCgsLCwwMDA0NDQkJCAkJCgsLDAsMDA0NDQ4KCgkJCgsLCwsMDAwMDQ0OCgoJCgoLCwsMDA0NDQ0PDwoKCgoLCwsMDA0NDQ0ODg4KCwoKCwsMDA0NDQ0ODQ4NCwsLCgsMDAwMDQ4ODg8PDgoMCwsLDAwNDg4ODg4ODQ4LDAwMDAwNDQ0NDw4ODg4QCw4MDAwNDQ4ODhAPDw8RDwsNDQsMDg4NDg4PEA8RDw4LCQgICQkKCgoLCwsLCwsLCA8ADQAuAFAAkgAGAfgAsgGqAZ0CjQKJAm0CBQIIBFgADgAMABUAJgBHAIIAegDYANEAxgBHAVkBPwEpARcBKgAvABYAKQBKAEQAgAB4AN0AzwDCALYAVAE7AScBHQISAFEAJwBLAEYAhgB9AHQA3ADMAL4AsgBFATcBJQEPARAAkwBIAEUAhwB/AHYAcADSAMgAvABgAUMBMgEdARwCDgAHAUIAgQB+AHcAcgDWAMoAwAC0AFUBPQEtARkBBgEMAPkAewB5AHUAcQDXAM4AwwC5AFsBSgE0ASMBEAEIAgoAswFzAG8AbQDTAMsAxAC7AGEBTAE5ASoBGwETAn0BEQCrAdQA0ADNAMkAwQC6ALEAqQBAAS8BHgEMAQICeQEQAE8BxwDFAL8AvQC1AK4ATQFBATEBIQETAQkCewFzAQsAnAK4ALcAswCvAFgBSwE6ATABIgEVARICfwF1AW4BCgCMAloBqwCoAKQAPgE1ASsBHwEUAQcBAQJ3AXABagEGAIgCQgE8ATgBMwEuASQBHAENAQUBAAJ4AXIBbAFnAQQAbAIsASgBJgEgARoBEQEKAQMCfAF2AXEBbQFpAWUBAgAJBBgBFgESAQsBCAEDAX4BegF0AW8BawFoAWYBZAEAACsAFAATABEADwANAAsACQAHAAYABAAHAAUAAwABAAMABAQGBwgJCQoKCwsLCwsMCQQEBQYHCAgJCQkKCgoKCggGBQYHBwgICQkJCQoKCgsHBwYHBwgICAkJCQkKCgoKBwgHBwgICAgJCQkKCgoKCwcJBwgICAgJCQkJCgoKCgoHCQgICAgJCQkJCgoKCgoLBwoICAgJCQkJCgoKCgoLCwgKCQkJCQkJCQkKCgoKCwsICgkJCQkJCQoKCgoKCwsLCAsJCQkJCgoKCgoKCwsLCwgLCgkJCQoKCgoKCgsLCwsICwoKCgoKCgoKCgsLCwsLCAsKCgoKCgoKCwsLCwsLCwgMCgoKCgoKCwsLCwsLCwsICAcHBwcHBwcHBwcICAgIBAEABQAEAAUABgAFAAQABAAHAAMABgAAAAcAAgADAAEAAQQEBQQGBQYEBQUGBQYGBg8ADgANAAwACwAKAAkACAAHAAYABQAEAAMAAgABAAAABAQEBAQEBAQEBAQEBAQEBABB6CkLBQIAAAACAEH5KQsMBAAACAQAAAMAAAADAEGQKgsNEAQAACIEAAADAAAAAwBBqCoLBjAEAABCBABByCoLBQQAAAAEAEHYKgsNUAQAAHAEAAAEAAAABABB8CoLDYAEAACgBAAABgAAAAYAQYgrCw2wBAAAAAUAAAYAAAAGAEGgKwsNMAUAAIAFAAAGAAAABgBBuCsLDbAFAAAABgAACAAAAAgAQdArCw0wBgAAsAYAAAgAAAAIAEHoKwsN8AYAAHAHAAAIAAAACABBgCwLDbAHAAAwCAAAEAAAABAAQZgsCwZwCAAAcAoAQbgsCwUQAAAAEABByCwLjQNwCwAAcA0AABAAAAAQAAAAAQAAAAEAAABwDgAAcBAAABAAAAAQAAAAAgAAAAMAAABwDgAAcBAAABAAAAAQAAAAAwAAAAcAAABwDgAAcBAAABAAAAAQAAAABAAAAA8AAABwDgAAcBAAABAAAAAQAAAABgAAAD8AAABwDgAAcBAAABAAAAAQAAAACAAAAP8AAABwDgAAcBAAABAAAAAQAAAACgAAAP8DAABwDgAAcBAAABAAAAAQAAAADQAAAP8fAABwDgAAcBAAABAAAAAQAAAABAAAAA8AAABwEQAAcBMAABAAAAAQAAAABQAAAB8AAABwEQAAcBMAABAAAAAQAAAABgAAAD8AAABwEQAAcBMAABAAAAAQAAAABwAAAH8AAABwEQAAcBMAABAAAAAQAAAACAAAAP8AAABwEQAAcBMAABAAAAAQAAAACQAAAP8BAABwEQAAcBMAABAAAAAQAAAACwAAAP8HAABwEQAAcBMAABAAAAAQAAAADQAAAP8fAABwEQAAcBMAAAEAAAAQAEHgLwsNcBQAAJAUAAABAAAAEABB+C8LBqAUAADAFABBrDALiQEBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAIAAAADAAAAAwAAAAQAAAADAAAABAAAAAMAAAAEAAAABAAAAAUAAAAEAAAABQAAAAQAAAAGAAAABQAAAAYAAAAFAAAABgAAAAUAAAAHAAAABgAAAAcAAAAGAAAABwBBwDELDQEAAAD/////AQAAAAIAQeAxC5IBAwAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAQAAAAEAAAAAAAAAAEAAAACAAAAAwAAAAAAAAABAAAAAgAAAAMAAAABAAAAAgAAAAMAAAABAAAAAgAAAAMAAAACAAAAAwAAAESsAACAuwAAAH0AACJWAADAXQAAgD4AABErAADgLgAAQB8AQYAzC7oI/////////////////////wgAAAD/////CAAAACAAAAAQAAAA/////xAAAAAoAAAAGAAAAP////8YAAAAMAAAACAAAAD/////IAAAADgAAAAoAAAA/////ygAAABAAAAAMAAAAP////8wAAAAUAAAADgAAAD/////OAAAAGAAAABAAAAA/////0AAAABwAAAA//////////9QAAAAgAAAAP//////////YAAAAKAAAAD//////////3AAAADAAAAA//////////+AAAAA4AAAAP//////////kAAAAAABAAD//////////6AAAABAAQAA/////////////////////wAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAeAAAAJAAAACwAAAA0AAAAPgAAAEoAAABaAAAAbgAAAIYAAACiAAAAxAAAAO4AAAAgAQAAVgEAAKIBAABAAgAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAB4AAAAkAAAAKgAAADIAAAA8AAAASAAAAFgAAABqAAAAgAAAAJwAAAC+AAAA5gAAABQBAABKAQAAgAEAAEACAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABSAAAAZgAAAH4AAACcAAAAwgAAAPAAAAAoAQAAbAEAAMABAAAmAgAAQAIAAAAAAAAGAAAADAAAABIAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABQAAAAYAAAAHQAAACMAAAAqAAAAMgAAADuAAAAHAEAAFABAACMAQAA0AEAAAoCAABAAgAAAAAAAAYAAAAMAAAAEgAAABgAAAAeAAAAJAAAACwAAAA2AAAAQgAAAFAAAABgAAAAcgAAAIgAAACiAAAAwgAAAOgAAAAWAQAASgEAAIoBAADQAQAAHAIAAEACAAAAAAAABgAAAAwAAAASAAAAGAAAAB4AAAAkAAAALAAAAC0AAABCAAAAUAAAAGAAAAB0AAAAjAAAAKgAAADIAAAA7gAAAPgAAABQAQAAjAEAANABAAAKAgAAQAIAAAAAAAAGAAAADAAAABIAAAAYAAAAHgAAACQAAAAsAAAANgAAAEIAAABQAAAAYAAAAHQAAACMAAAAqAAAAMgAAADuAAAAHAEAAFABAACMAQAA0AEAAAoCAABAAgAAAAAAAAYAAAAMAAAAEgAAABgAAAAeAAAAJAAAACwAAAA2AAAAQgAAAFAAAABgAAAAdAAAAIwAAACoAAAAyAAAAO4AAAAcAQAAUAEAAIwBAADQAQAACgIAAEACAAAAAAAADAAAABgAAAAkAAAAMAAAADwAAABIAAAAWAAAAGwAAACEAAAAoAAAAMAAAADoAAAAGAEAAFABAACQAQAA3AEAADYCAAA4AgAAOgIAADwCAAA+AgAAQAIAQdw7C8oPnff//533//+d9///nff//533//+d9///Ou///zrv//86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";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["c"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["o"];addOnInit(Module["asm"]["d"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort("invalid type for getValue: "+type)}return null}function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort("invalid type for setValue: "+type)}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ASSERTIONS=false;var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i<input.length);return output};function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE=="boolean"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(s,"base64");return new Uint8Array(buf["buffer"],buf["byteOffset"],buf["byteLength"])}try{var decoded=decodeBase64(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i<decoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}catch(_){throw new Error("Converting base64 string to bytes failed.")}}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}var asmLibraryArg={"b":_emscripten_memcpy_big,"a":_emscripten_resize_heap};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["d"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["e"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["f"]).apply(null,arguments)};var _shine_check_config=Module["_shine_check_config"]=function(){return(_shine_check_config=Module["_shine_check_config"]=Module["asm"]["g"]).apply(null,arguments)};var _shine_samples_per_pass=Module["_shine_samples_per_pass"]=function(){return(_shine_samples_per_pass=Module["_shine_samples_per_pass"]=Module["asm"]["h"]).apply(null,arguments)};var _shine_encode_buffer=Module["_shine_encode_buffer"]=function(){return(_shine_encode_buffer=Module["_shine_encode_buffer"]=Module["asm"]["i"]).apply(null,arguments)};var _shine_flush=Module["_shine_flush"]=function(){return(_shine_flush=Module["_shine_flush"]=Module["asm"]["j"]).apply(null,arguments)};var _shine_close=Module["_shine_close"]=function(){return(_shine_close=Module["_shine_close"]=Module["asm"]["k"]).apply(null,arguments)};var _shine_js_int16_len=Module["_shine_js_int16_len"]=function(){return(_shine_js_int16_len=Module["_shine_js_int16_len"]=Module["asm"]["l"]).apply(null,arguments)};var _shine_js_ptr_len=Module["_shine_js_ptr_len"]=function(){return(_shine_js_ptr_len=Module["_shine_js_ptr_len"]=Module["asm"]["m"]).apply(null,arguments)};var _shine_js_init=Module["_shine_js_init"]=function(){return(_shine_js_init=Module["_shine_js_init"]=Module["asm"]["n"]).apply(null,arguments)};Module["setValue"]=setValue;Module["getValue"]=getValue;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();var ShineModule;var int16Len;var ptrLen;function shineInit(){int16Len=ShineModule._shine_js_int16_len();ptrLen=ShineModule._shine_js_ptr_len()}function Shine(args){if(ShineModule._shine_check_config(args.samplerate,args.bitrate)<0)throw"Invalid configuration";var stereoMode;if(!args.stereoMode){if(args.channels===1){stereoMode=Shine.MONO}else{stereoMode=Shine.JOINT_STEREO}}else{stereoMode=args.stereoMode}this._handle=ShineModule._shine_js_init(args.channels,args.samplerate,stereoMode,args.bitrate);this._channels=args.channels;this._samples_per_pass=ShineModule._shine_samples_per_pass(this._handle);this._buffer=ShineModule._malloc(this._channels*ptrLen);this._pcm=new Array(this._channels);this._rem=new Array(this._channels);this._written=ShineModule._malloc(int16Len);var _tmp,chan;for(chan=0;chan<this._channels;chan++){this._rem[chan]=new Int16Array;_tmp=ShineModule._malloc(this._samples_per_pass*int16Len);ShineModule.setValue(this._buffer+chan*ptrLen,_tmp,"*");this._pcm[chan]=ShineModule.HEAP16.subarray(_tmp/int16Len,_tmp/int16Len+this._samples_per_pass)}return this}Shine.checkConfig=function(samplerate,bitrate){return ShineModule._shine_check_config(samplerate,bitrate)>=0};Shine.prototype._encodePass=function(data){if(!this._handle)throw"Closed";var chan;for(chan=0;chan<this._channels;chan++)this._pcm[chan].set(data[chan]);var _buf=ShineModule._shine_encode_buffer(this._handle,this._buffer,this._written);var written=ShineModule.getValue(this._written,"i16");return ShineModule.HEAPU8.subarray(_buf,_buf+written)};function concat(ctr,a,b){if(typeof b==="undefined"){return a}var ret=new ctr(a.length+b.length);ret.set(a);ret.subarray(a.length).set(b);return ret}function clip(x){return x>1?1:x<-1?-1:x}function convertFloat32(buf){var ret=new Array(buf.length);var samples=buf[0].length;var chan,i;for(chan=0;chan<buf.length;chan++){ret[chan]=new Int16Array(samples);for(i=0;i<samples;i++){ret[chan][i]=parseInt(clip(buf[chan][i])*32767)}}return ret}Shine.prototype.encode=function(data){if(data.length!=this._channels)throw"Invalid data";var encoded=new Uint8Array;var tmp=new Array(this._channels);if(data[0]instanceof Float32Array){data=convertFloat32(data)}var chan;for(chan=0;chan<this._channels;chan++){tmp[chan]=new Float32Array;this._rem[chan]=concat(Int16Array,this._rem[chan],data[chan])}var i,enc;for(i=0;i<this._rem[0].length;i+=this._samples_per_pass){for(chan=0;chan<this._channels;chan++){tmp[chan]=this._rem[chan].subarray(i,i+this._samples_per_pass)}if(tmp[0].length<this._samples_per_pass){break}else{enc=this._encodePass(tmp);if(enc.length>0){encoded=concat(Uint8Array,encoded,enc)}}}if(tmp[0].length<this._samples_per_pass){this._rem=tmp}else{for(chan=0;chan<this._channels;chan++){this._rem[chan]=new Int16Array}}return encoded};Shine.prototype.close=function(){if(!this._handle){throw"Closed"}var _buf=ShineModule._shine_flush(this._handle,this._written);var written=ShineModule.getValue(this._written,"i16");var encoded=new Uint8Array(written);encoded.set(ShineModule.HEAPU8.subarray(_buf,_buf+written));ShineModule._free(this._written);ShineModule._shine_close(this._handle);this._handle=null;var chan;for(chan=0;chan<this._channels;chan++){ShineModule._free(ShineModule.getValue(this._buffer+chan*ptrLen,"*"))}ShineModule._free(this._buffer);return encoded};Shine.initialized=new Promise(function(resolve){Module["onRuntimeInitialized"]=function(){ShineModule=Module;shineInit();resolve()}});Module["Shine"]=Shine;Module["StereoMode"]={0:"STEREO",1:"JOINT_STEREO",2:"DUAL_CHANNEL",3:"MONO",STEREO:0,JOINT_STEREO:1,DUAL_CHANNEL:2,MONO:3};
-diff --git a/js/libshine.d.ts b/js/libshine.d.ts
-new file mode 100644
-index 0000000..8f00edc
---- /dev/null
-+++ b/js/libshine.d.ts
-@@ -0,0 +1,19 @@
-+export type Data = Int16Array | Float32Array;
-+export declare enum StereoMode {
-+ STEREO = 0,
-+ JOINT_STEREO = 1,
-+ DUAL_CHANNEL = 2,
-+ MONO = 3
-+}
-+export class Shine {
-+ static initialized: Promise<void>;
-+ static checkConfig(samplerate: number, bitrate: number): boolean;
-+ constructor(args: {
-+ samplerate: number;
-+ bitrate: number;
-+ channels: number;
-+ stereoMode?: StereoMode;
-+ });
-+ encode(data: Data[]): Uint8Array;
-+ close(): Uint8Array;
-+}
-diff --git a/js/package-lock.json b/js/package-lock.json
-new file mode 100644
-index 0000000..38b374d
---- /dev/null
-+++ b/js/package-lock.json
-@@ -0,0 +1,18 @@
-+{
-+ "name": "@toots/shine.js",
-+ "version": "1.0.1",
-+ "lockfileVersion": 3,
-+ "requires": true,
-+ "packages": {
-+ "": {
-+ "name": "@toots/shine.js",
-+ "version": "1.0.1",
-+ "license": "LGPL-2.0-only"
-+ },
-+ "stubs": {
-+ "version": "1.0.0",
-+ "extraneous": true,
-+ "license": "ISC"
-+ }
-+ }
-+}
-diff --git a/js/package.json b/js/package.json
-new file mode 100644
-index 0000000..0c83619
---- /dev/null
-+++ b/js/package.json
-@@ -0,0 +1,24 @@
-+{
-+ "name": "@toots/shine.js",
-+ "version": "1.0.3",
-+ "description": "Shine fixed-point mp3 encoder",
-+ "main": "dist/libshine_node.js",
-+ "browser": "dist/libshine_browser.js",
-+ "types": "libshine.d.ts",
-+ "repository": {
-+ "type": "git",
-+ "url": "git+https://github.com/toots/shine.git"
-+ },
-+ "keywords": [
-+ "mp3",
-+ "encoder",
-+ "wasm",
-+ "fixed-point"
-+ ],
-+ "author": "Romain Beauxis <toots@rastageeks.org>",
-+ "license": "LGPL-2.0-only",
-+ "bugs": {
-+ "url": "https://github.com/toots/shine/issues"
-+ },
-+ "homepage": "https://github.com/toots/shine#readme"
-+}
-diff --git a/js/src/libshine_browser_wrapper.js b/js/src/libshine_browser_wrapper.js
-new file mode 100644
-index 0000000..f0ef04e
---- /dev/null
-+++ b/js/src/libshine_browser_wrapper.js
-@@ -0,0 +1,10 @@
-+var createModule = require("./libshine_browser_stubs").default;
-+
-+Shine.initialized = (createModule()).then(function (Module) {
-+ ShineModule = Module;
-+ shineInit();
-+});
-+
-+module.exports.Shine = Shine;
-+
-+module.exports.StereoMode = StereoMode;
-diff --git a/js/src/post.js b/js/src/libshine_class.js
-similarity index 57%
-rename from js/src/post.js
-rename to js/src/libshine_class.js
-index f6a07e6..5d88d9e 100644
---- a/js/src/post.js
-+++ b/js/src/libshine_class.js
-@@ -1,50 +1,64 @@
- // libshine function wrappers
-
--var isNode = typeof process === "object" && typeof require === "function";
-+var StereoMode = {
-+ '0': 'STEREO',
-+ '1': 'JOINT_STEREO',
-+ '2': 'DUAL_CHANNEL',
-+ '3': 'MONO',
-+ STEREO: 0,
-+ JOINT_STEREO: 1,
-+ DUAL_CHANNEL: 2,
-+ MONO: 3
-+};
-+
-+var ShineModule;
-+var int16Len;
-+var ptrLen;
-
--var int16Len = Module.HEAP16.BYTES_PER_ELEMENT;
--var ptrLen = Module.HEAP32.BYTES_PER_ELEMENT;
-+function shineInit() {
-+ int16Len = ShineModule._shine_js_int16_len();
-+ ptrLen = ShineModule._shine_js_ptr_len();
-+};
-
- function Shine(args) {
-- if (_shine_check_config(args.samplerate, args.bitrate) < 0)
-+ if (ShineModule._shine_check_config(args.samplerate, args.bitrate) < 0)
- throw "Invalid configuration";
-
-- var mode;
-- if (!args.mode) {
-+ var stereoMode;
-+ if (!args.stereoMode) {
- if (args.channels === 1) {
-- mode = Shine.MONO;
-+ stereoMode = Shine.MONO;
- } else {
-- mode = Shine.JOINT_STEREO;
-+ stereoMode = Shine.JOINT_STEREO;
- }
- } else {
-- mode = args.mode;
-+ stereoMode = args.stereoMode;
- }
-
-- this._handle = _shine_js_init(args.channels, args.samplerate, mode, args.bitrate);
-+ this._handle = ShineModule._shine_js_init(args.channels, args.samplerate, stereoMode, args.bitrate);
-
- this._channels = args.channels;
-- this._samples_per_pass = _shine_samples_per_pass(this._handle);
-+ this._samples_per_pass = ShineModule._shine_samples_per_pass(this._handle);
-
-- this._buffer = _malloc(this._channels * ptrLen);
-+ this._buffer = ShineModule._malloc(this._channels * ptrLen);
- this._pcm = new Array(this._channels);
- this._rem = new Array(this._channels);
-- this._written = _malloc(int16Len);
-+ this._written = ShineModule._malloc(int16Len);
-
- var _tmp, chan;
- for (chan=0; chan<this._channels; chan++) {
- this._rem[chan] = new Int16Array;
-- _tmp = _malloc(this._samples_per_pass * int16Len);
-- setValue(this._buffer + chan*ptrLen, _tmp, "*")
-- this._pcm[chan] = Module.HEAP16.subarray(_tmp/int16Len, _tmp/int16Len+this._samples_per_pass)
-+ _tmp = ShineModule._malloc(this._samples_per_pass * int16Len);
-+ ShineModule.setValue(this._buffer + chan*ptrLen, _tmp, "*")
-+ this._pcm[chan] = ShineModule.HEAP16.subarray(_tmp/int16Len, _tmp/int16Len+this._samples_per_pass)
- }
-
- return this;
- };
-
--Shine.STEREO = 0;
--Shine.JOINT_STEREO = 1;
--Shine.DUAL_CHANNEL = 2;
--Shine.MONO = 3;
-+Shine.checkConfig = function (samplerate, bitrate) {
-+ return ShineModule._shine_check_config(samplerate, bitrate) >= 0;
-+};
-
- Shine.prototype._encodePass = function (data) {
- if (!this._handle)
-@@ -54,11 +68,11 @@ Shine.prototype._encodePass = function (data) {
- for (chan=0;chan<this._channels;chan++)
- this._pcm[chan].set(data[chan]);
-
-- var _buf = _shine_encode_buffer(this._handle, this._buffer, this._written);
-+ var _buf = ShineModule._shine_encode_buffer(this._handle, this._buffer, this._written);
-
-- var written = getValue(this._written, "i16");
-+ var written = ShineModule.getValue(this._written, "i16");
-
-- return Module.HEAPU8.subarray(_buf, _buf+written);
-+ return ShineModule.HEAPU8.subarray(_buf, _buf+written);
- };
-
- function concat(ctr, a, b) {
-@@ -138,30 +152,22 @@ Shine.prototype.close = function () {
- throw "Closed";
- }
-
-- var _buf = _shine_flush(this._handle, this._written);
-+ var _buf = ShineModule._shine_flush(this._handle, this._written);
-
-- var written = getValue(this._written, "i16");
-+ var written = ShineModule.getValue(this._written, "i16");
- var encoded = new Uint8Array(written);
-
-- encoded.set(Module.HEAPU8.subarray(_buf, _buf + written));
-+ encoded.set(ShineModule.HEAPU8.subarray(_buf, _buf + written));
-
-- _free(this._written);
-- _shine_close(this._handle);
-+ ShineModule._free(this._written);
-+ ShineModule._shine_close(this._handle);
- this._handle = null;
-
- var chan;
- for (chan=0; chan<this._channels; chan++) {
-- _free(getValue(this._buffer + chan*ptrLen, "*"));
-+ ShineModule._free(ShineModule.getValue(this._buffer + chan*ptrLen, "*"));
- }
-- _free(this._buffer);
-+ ShineModule._free(this._buffer);
-
- return encoded;
- };
--
--if (isNode) {
-- module.exports = Shine;
--}
--
--return Shine;
--
--}).call(context)})();
-diff --git a/js/src/libshine_node_wrapper.js b/js/src/libshine_node_wrapper.js
-new file mode 100644
-index 0000000..aaaf28c
---- /dev/null
-+++ b/js/src/libshine_node_wrapper.js
-@@ -0,0 +1,10 @@
-+Shine.initialized = new Promise(function (resolve) {
-+ Module['onRuntimeInitialized'] = function () {
-+ ShineModule = Module;
-+ shineInit();
-+ resolve();
-+ }
-+})
-+
-+Module["Shine"] = Shine;
-+Module["StereoMode"] = StereoMode;
-diff --git a/js/src/pre.js b/js/src/pre.js
-deleted file mode 100644
-index 8078b87..0000000
---- a/js/src/pre.js
-+++ /dev/null
-@@ -1,9 +0,0 @@
--// libshine.js - port of libshine to JavaScript using emscripten
--// by Romain Beauxis <toots@rastageeks.org> from code by
--// Andreas Krennmair <ak@synflood.at>
--
--
--var Shine = (function() {
-- var Module;
-- var context = {};
-- return (function() {
-diff --git a/js/src/wrapper.c b/js/src/wrapper.c
-index 506570d..375b35c 100644
---- a/js/src/wrapper.c
-+++ b/js/src/wrapper.c
-@@ -1,7 +1,16 @@
-+#include "layer3.h"
-+#include "types.h"
- #include <stdlib.h>
- #include <string.h>
--#include "types.h"
--#include "layer3.h"
-+#include <stdint.h>
-+
-+size_t shine_js_int16_len() {
-+ return sizeof(int16_t);
-+}
-+
-+size_t shine_js_ptr_len() {
-+ return sizeof(void*);
-+}
-
- shine_t shine_js_init(int channels, int samplerate, int mode, int bitr) {
- shine_config_t config;
-@@ -13,4 +22,4 @@ shine_t shine_js_init(int channels, int samplerate, int mode, int bitr) {
- config.mpeg.bitr = bitr;
-
- return shine_initialise(&config);
--}
-+}
-diff --git a/js/test/browser/Makefile b/js/test/browser/Makefile
-index b3eedc8..befc1ce 100644
---- a/js/test/browser/Makefile
-+++ b/js/test/browser/Makefile
-@@ -1,2 +1,2 @@
- all:
-- python -m SimpleHTTPServer
-+ python -m http.server
-diff --git a/js/test/browser/encode.js b/js/test/browser/encode.js
-index 65e009d..af17116 100644
---- a/js/test/browser/encode.js
-+++ b/js/test/browser/encode.js
-@@ -4,24 +4,22 @@ function runEncodeTest(log, callback) {
- var samplerate = 44100;
- var channels = 2;
- var bitrate = 128;
-- var mode = Shine.STEREO;
-
- var shine = new Shine({
- samplerate: samplerate,
- channels: channels,
- bitrate: bitrate,
-- mode: mode
- });
-
-- var started = new Date;
-+ var started = new Date();
- var duration = 0.0;
- var encoded = [];
-
- var xhr = new XMLHttpRequest();
- xhr.open("GET", "encode.wav", true);
- xhr.responseType = "arraybuffer";
-- xhr.onload = function() {
-- var samples = xhr.response.byteLength / (2*channels);
-+ xhr.onload = function () {
-+ var samples = xhr.response.byteLength / (2 * channels);
- var data = new Int16Array(xhr.response);
- var buf = convertInterleavedBuffer(data, channels, samples);
- duration += parseFloat(samples) / samplerate;
-@@ -33,12 +31,12 @@ function runEncodeTest(log, callback) {
- xhr.addEventListener("load", function () {
- encoded.push(shine.close());
-
-- var ended = new Date
-- var encodingTime = (ended.getTime() - started.getTime())/1000
-+ var ended = new Date();
-+ var encodingTime = (ended.getTime() - started.getTime()) / 1000;
- log("Done encoding.");
- log("File duration: " + duration.toFixed(2) + " seconds");
- log("Encoding time: " + encodingTime.toFixed(2) + " seconds");
-- log("Encoding rate: " + (duration/encodingTime).toFixed(2) + "X");
-+ log("Encoding rate: " + (duration / encodingTime).toFixed(2) + "X");
- callback(new Blob(encoded));
- });
-
-@@ -48,10 +46,10 @@ function runEncodeTest(log, callback) {
- function convertInterleavedBuffer(buf, channels, samples) {
- var chan, i;
- ret = new Array(channels);
-- for (chan=0; chan<channels; chan++) {
-+ for (chan = 0; chan < channels; chan++) {
- ret[chan] = new Int16Array(samples);
-- for (i=0; i<samples; i++) {
-- ret[chan][i] = buf[i*channels + chan];
-+ for (i = 0; i < samples; i++) {
-+ ret[chan][i] = buf[i * channels + chan];
- }
- }
- return ret;
-diff --git a/js/test/browser/index.html b/js/test/browser/index.html
-index b3a4ee3..6496e46 100644
---- a/js/test/browser/index.html
-+++ b/js/test/browser/index.html
-@@ -1,4 +1,4 @@
--<script src="libshine.js"></script>
-+<script src="libshine_node.js"></script>
- <script src="encode.js"></script>
- <script src="rounds.js"></script>
- <script>
-@@ -7,20 +7,21 @@
- el.innerHTML = el.innerHTML + "<br>" + msg;
- };
-
-- var load = function() {
-- runEncodeTest(log, function (blob) {
-- if (typeof window.URL !== "undefined") {
-- var link = document.getElementById("download-link");
-- link.href = URL.createObjectURL(blob);
-- link.download = "encoded.mp3";
-- }
-+ function onLoad() {
-+ Shine.initialized.then(function () {
-+ runEncodeTest(log, function (blob) {
-+ if (typeof window.URL !== "undefined") {
-+ var link = document.getElementById("download-link");
-+ link.href = URL.createObjectURL(blob);
-+ link.download = "encoded.mp3";
-+ }
-
-- log("");
-- runRoundsTest(Shine, log);
-+ log("");
-+ runRoundsTest(Shine, log);
-+ });
- });
- };
--
-- window.addEventListener("load", load, false);
-+ window.addEventListener("load", onLoad, false);
- </script>
- <a href="#" id="download-link">Download encoded file</a>
- <div id="output"></div>
-diff --git a/js/test/browser/libshine.js b/js/test/browser/libshine.js
-deleted file mode 120000
-index fb57470..0000000
---- a/js/test/browser/libshine.js
-+++ /dev/null
-@@ -1 +0,0 @@
--../../dist/libshine.js
-\ No newline at end of file
-diff --git a/js/test/browser/libshine_node.js b/js/test/browser/libshine_node.js
-new file mode 120000
-index 0000000..07f07a4
---- /dev/null
-+++ b/js/test/browser/libshine_node.js
-@@ -0,0 +1 @@
-+../../dist/libshine_node.js
-\ No newline at end of file
-diff --git a/js/test/lib/rounds.js b/js/test/lib/rounds.js
-index f76410a..1b388b5 100644
---- a/js/test/lib/rounds.js
-+++ b/js/test/lib/rounds.js
-@@ -1,39 +1,35 @@
- var channels = 2; // test.wav is stereo
- var samplerate = 44100; // ditto
-
--var runRoundsTest = function(Shine, log) {
-+var runRoundsTest = function (Shine, log) {
- log("Executing rounds test");
-
- var nPasses = 50;
- var frameSize = 4096;
- var data = new Array(channels);
- var chan;
-- for (chan=0; chan<channels; chan++)
-- data[chan] = new Int16Array(frameSize);
-+ for (chan = 0; chan < channels; chan++) data[chan] = new Int16Array(frameSize);
-
- log("Encoding " + nPasses + " buffers of " + frameSize + " samples");
-- var started = new Date;
-+ var started = new Date();
-
- var shine = new Shine({
- samplerate: samplerate,
- bitrate: 128,
- channels: channels,
-- model: Shine.STEREO
- });
-
- var i;
-- for (i=0; i < nPasses; i++)
-- shine.encode(data);
-+ for (i = 0; i < nPasses; i++) shine.encode(data);
- shine.close();
-
-- var ended = new Date;
-- var duration = (parseFloat(nPasses*frameSize) / parseFloat(samplerate)).toFixed(2);
-- var encodingTime = (ended.getTime() - started.getTime())/1000;
-+ var ended = new Date();
-+ var duration = (parseFloat(nPasses * frameSize) / parseFloat(samplerate)).toFixed(2);
-+ var encodingTime = (ended.getTime() - started.getTime()) / 1000;
- log("Done encoding");
- log("Total duration: " + duration);
- log("Encoding time: " + encodingTime.toFixed(2));
-- log("Encoding rate: " + (duration/encodingTime).toFixed(2) + "X");
-+ log("Encoding rate: " + (duration / encodingTime).toFixed(2) + "X");
- };
-
--if (typeof process === "object" && typeof require === "function")
-- module.exports = runRoundsTest;
-+if (typeof process === "object" && typeof require === "function") module.exports = runRoundsTest;
-diff --git a/js/test/nextjs/.eslintrc.json b/js/test/nextjs/.eslintrc.json
-new file mode 100644
-index 0000000..bffb357
---- /dev/null
-+++ b/js/test/nextjs/.eslintrc.json
-@@ -0,0 +1,3 @@
-+{
-+ "extends": "next/core-web-vitals"
-+}
-diff --git a/js/test/nextjs/.gitignore b/js/test/nextjs/.gitignore
-new file mode 100644
-index 0000000..c87c9b3
---- /dev/null
-+++ b/js/test/nextjs/.gitignore
-@@ -0,0 +1,36 @@
-+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-+
-+# dependencies
-+/node_modules
-+/.pnp
-+.pnp.js
-+
-+# testing
-+/coverage
-+
-+# next.js
-+/.next/
-+/out/
-+
-+# production
-+/build
-+
-+# misc
-+.DS_Store
-+*.pem
-+
-+# debug
-+npm-debug.log*
-+yarn-debug.log*
-+yarn-error.log*
-+.pnpm-debug.log*
-+
-+# local env files
-+.env*.local
-+
-+# vercel
-+.vercel
-+
-+# typescript
-+*.tsbuildinfo
-+next-env.d.ts
-diff --git a/js/test/nextjs/.prettierignore b/js/test/nextjs/.prettierignore
-new file mode 100644
-index 0000000..799a1ca
---- /dev/null
-+++ b/js/test/nextjs/.prettierignore
-@@ -0,0 +1,4 @@
-+.next/
-+out/
-+public/audio
-+__ENV.js
-diff --git a/js/test/nextjs/.prettierrc b/js/test/nextjs/.prettierrc
-new file mode 100644
-index 0000000..a36a92f
---- /dev/null
-+++ b/js/test/nextjs/.prettierrc
-@@ -0,0 +1,12 @@
-+{
-+ "singleQuote": false,
-+ "quoteProps": "as-needed",
-+ "arrowParens": "avoid",
-+ "tabWidth": 2,
-+ "trailingComma": "es5",
-+ "semi": false,
-+ "jsxSingleQuote": true,
-+ "bracketSameLine": false,
-+ "printWidth": 120,
-+ "parser": "typescript"
-+}
-diff --git a/js/test/nextjs/README.md b/js/test/nextjs/README.md
-new file mode 100644
-index 0000000..fb9bcc9
---- /dev/null
-+++ b/js/test/nextjs/README.md
-@@ -0,0 +1,36 @@
-+This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
-+
-+## Getting Started
-+
-+First, run the development server:
-+
-+```bash
-+npm run dev
-+# or
-+yarn dev
-+```
-+
-+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
-+
-+You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.
-+
-+[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
-+
-+The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
-+
-+This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
-+
-+## Learn More
-+
-+To learn more about Next.js, take a look at the following resources:
-+
-+- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-+- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
-+
-+You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
-+
-+## Deploy on Vercel
-+
-+The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
-+
-+Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
-diff --git a/js/test/nextjs/lib/encode.ts b/js/test/nextjs/lib/encode.ts
-new file mode 100644
-index 0000000..6e1ef2d
---- /dev/null
-+++ b/js/test/nextjs/lib/encode.ts
-@@ -0,0 +1,59 @@
-+import { Shine } from "@toots/shine.js"
-+
-+const convertInterleavedBuffer = (buf: Int16Array, channels: number, samples: number) => {
-+ const ret = new Array(channels)
-+ for (let chan = 0; chan < channels; chan++) {
-+ ret[chan] = new Int16Array(samples)
-+ for (let i = 0; i < samples; i++) {
-+ ret[chan][i] = buf[i * channels + chan]
-+ }
-+ }
-+ return ret
-+}
-+
-+export const runEncodeTest = (log: (_: string) => void, callback: (_: Blob) => void) => {
-+ log("Executing encoding test")
-+
-+ const samplerate = 44100
-+ const channels = 2
-+ const bitrate = 128
-+ //const stereoMode = StereoMode.STEREO
-+
-+ const shine = new Shine({
-+ samplerate: samplerate,
-+ channels: channels,
-+ bitrate: bitrate,
-+ // stereoMode: stereoMode,
-+ })
-+
-+ const started = new Date()
-+ let duration = 0.0
-+ const encoded: Uint8Array[] = []
-+
-+ const xhr = new XMLHttpRequest()
-+ xhr.open("GET", "encode.wav", true)
-+ xhr.responseType = "arraybuffer"
-+ xhr.onload = () => {
-+ const samples = xhr.response.byteLength / (2 * channels)
-+ const data = new Int16Array(xhr.response)
-+ const buf = convertInterleavedBuffer(data, channels, samples)
-+ duration += samples / samplerate
-+ encoded.push(shine.encode(buf))
-+ }
-+
-+ log("Got WAV file.")
-+ log("Encoding..")
-+ xhr.addEventListener("load", () => {
-+ encoded.push(shine.close())
-+
-+ const ended = new Date()
-+ const encodingTime = (ended.getTime() - started.getTime()) / 1000
-+ log("Done encoding.")
-+ log("File duration: " + duration.toFixed(2) + " seconds")
-+ log("Encoding time: " + encodingTime.toFixed(2) + " seconds")
-+ log("Encoding rate: " + (duration / encodingTime).toFixed(2) + "X")
-+ callback(new Blob(encoded))
-+ })
-+
-+ xhr.send()
-+}
-diff --git a/js/test/nextjs/lib/encode.wav b/js/test/nextjs/lib/encode.wav
-new file mode 100644
-index 0000000..c8cd595
-Binary files /dev/null and b/js/test/nextjs/lib/encode.wav differ
-diff --git a/js/test/nextjs/lib/rounds.ts b/js/test/nextjs/lib/rounds.ts
-new file mode 100644
-index 0000000..fab9b7c
---- /dev/null
-+++ b/js/test/nextjs/lib/rounds.ts
-@@ -0,0 +1,34 @@
-+import { Shine, StereoMode } from "@toots/shine.js"
-+
-+const channels = 2 // test.wav is stereo
-+const samplerate = 44100 // ditto
-+
-+export const runRoundsTest = (log: (_: string) => void) => {
-+ log("Executing rounds test")
-+
-+ const nPasses = 50
-+ const frameSize = 4096
-+ const data = new Array(channels)
-+ for (let chan = 0; chan < channels; chan++) data[chan] = new Int16Array(frameSize)
-+
-+ log("Encoding " + nPasses + " buffers of " + frameSize + " samples")
-+ const started = new Date()
-+
-+ const shine = new Shine({
-+ samplerate: samplerate,
-+ bitrate: 128,
-+ channels: channels,
-+ stereoMode: StereoMode.STEREO,
-+ })
-+
-+ for (let i = 0; i < nPasses; i++) shine.encode(data)
-+ shine.close()
-+
-+ const ended = new Date()
-+ const duration = (nPasses * frameSize) / samplerate
-+ const encodingTime = (ended.getTime() - started.getTime()) / 1000
-+ log("Done encoding")
-+ log("Total duration: " + duration.toFixed(2))
-+ log("Encoding time: " + encodingTime.toFixed(2))
-+ log("Encoding rate: " + (duration / encodingTime).toFixed(2) + "X")
-+}
-diff --git a/js/test/nextjs/next.config.js b/js/test/nextjs/next.config.js
-new file mode 100644
-index 0000000..a843cbe
---- /dev/null
-+++ b/js/test/nextjs/next.config.js
-@@ -0,0 +1,6 @@
-+/** @type {import('next').NextConfig} */
-+const nextConfig = {
-+ reactStrictMode: true,
-+}
-+
-+module.exports = nextConfig
-diff --git a/js/test/nextjs/package-lock.json b/js/test/nextjs/package-lock.json
-new file mode 100644
-index 0000000..02208b0
---- /dev/null
-+++ b/js/test/nextjs/package-lock.json
-@@ -0,0 +1,3084 @@
-+{
-+ "name": "shine-nextjs-test-app",
-+ "version": "0.1.0",
-+ "lockfileVersion": 3,
-+ "requires": true,
-+ "packages": {
-+ "": {
-+ "name": "shine-nextjs-test-app",
-+ "version": "0.1.0",
-+ "dependencies": {
-+ "@next/font": "13.1.1",
-+ "@toots/shine.js": "file:../..",
-+ "@types/node": "18.11.18",
-+ "@types/react": "18.0.26",
-+ "@types/react-dom": "18.0.10",
-+ "eslint": "8.31.0",
-+ "eslint-config-next": "13.1.1",
-+ "next": "13.1.1",
-+ "react": "18.2.0",
-+ "react-dom": "18.2.0",
-+ "typescript": "4.9.4"
-+ },
-+ "devDependencies": {
-+ "prettier": "^2.8.1"
-+ }
-+ },
-+ "node_modules/@babel/runtime": {
-+ "version": "7.20.7",
-+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz",
-+ "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==",
-+ "dependencies": {
-+ "regenerator-runtime": "^0.13.11"
-+ },
-+ "engines": {
-+ "node": ">=6.9.0"
-+ }
-+ },
-+ "node_modules/@babel/runtime-corejs3": {
-+ "version": "7.20.7",
-+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.7.tgz",
-+ "integrity": "sha512-jr9lCZ4RbRQmCR28Q8U8Fu49zvFqLxTY9AMOUz+iyMohMoAgpEcVxY+wJNay99oXOpOcCTODkk70NDN2aaJEeg==",
-+ "dependencies": {
-+ "core-js-pure": "^3.25.1",
-+ "regenerator-runtime": "^0.13.11"
-+ },
-+ "engines": {
-+ "node": ">=6.9.0"
-+ }
-+ },
-+ "node_modules/@eslint/eslintrc": {
-+ "version": "1.4.1",
-+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
-+ "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==",
-+ "dependencies": {
-+ "ajv": "^6.12.4",
-+ "debug": "^4.3.2",
-+ "espree": "^9.4.0",
-+ "globals": "^13.19.0",
-+ "ignore": "^5.2.0",
-+ "import-fresh": "^3.2.1",
-+ "js-yaml": "^4.1.0",
-+ "minimatch": "^3.1.2",
-+ "strip-json-comments": "^3.1.1"
-+ },
-+ "engines": {
-+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-+ },
-+ "funding": {
-+ "url": "https://opencollective.com/eslint"
-+ }
-+ },
-+ "node_modules/@humanwhocodes/config-array": {
-+ "version": "0.11.8",
-+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
-+ "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
-+ "dependencies": {
-+ "@humanwhocodes/object-schema": "^1.2.1",
-+ "debug": "^4.1.1",
-+ "minimatch": "^3.0.5"
-+ },
-+ "engines": {
-+ "node": ">=10.10.0"
-+ }
-+ },
-+ "node_modules/@humanwhocodes/module-importer": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
-+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
-+ "engines": {
-+ "node": ">=12.22"
-+ },
-+ "funding": {
-+ "type": "github",
-+ "url": "https://github.com/sponsors/nzakas"
-+ }
-+ },
-+ "node_modules/@humanwhocodes/object-schema": {
-+ "version": "1.2.1",
-+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
-+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA=="
-+ },
-+ "node_modules/@next/env": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/env/-/env-13.1.1.tgz",
-+ "integrity": "sha512-vFMyXtPjSAiOXOywMojxfKIqE3VWN5RCAx+tT3AS3pcKjMLFTCJFUWsKv8hC+87Z1F4W3r68qTwDFZIFmd5Xkw=="
-+ },
-+ "node_modules/@next/eslint-plugin-next": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.1.tgz",
-+ "integrity": "sha512-SBrOFS8PC3nQ5aeZmawJkjKkWjwK9RoxvBSv/86nZp0ubdoVQoko8r8htALd9ufp16NhacCdqhu9bzZLDWtALQ==",
-+ "dependencies": {
-+ "glob": "7.1.7"
-+ }
-+ },
-+ "node_modules/@next/font": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/font/-/font-13.1.1.tgz",
-+ "integrity": "sha512-amygRorS05hYK1/XQRZo5qBl7l2fpHnezeKU/cNveWU5QJg+sg8gMGkUXHtvesNKpiKIJshBRH1TzvO+2sKpvQ=="
-+ },
-+ "node_modules/@next/swc-android-arm-eabi": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.1.1.tgz",
-+ "integrity": "sha512-qnFCx1kT3JTWhWve4VkeWuZiyjG0b5T6J2iWuin74lORCupdrNukxkq9Pm+Z7PsatxuwVJMhjUoYz7H4cWzx2A==",
-+ "cpu": [
-+ "arm"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "android"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-android-arm64": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.1.1.tgz",
-+ "integrity": "sha512-eCiZhTzjySubNqUnNkQCjU3Fh+ep3C6b5DCM5FKzsTH/3Gr/4Y7EiaPZKILbvnXmhWtKPIdcY6Zjx51t4VeTfA==",
-+ "cpu": [
-+ "arm64"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "android"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-darwin-arm64": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.1.1.tgz",
-+ "integrity": "sha512-9zRJSSIwER5tu9ADDkPw5rIZ+Np44HTXpYMr0rkM656IvssowPxmhK0rTreC1gpUCYwFsRbxarUJnJsTWiutPg==",
-+ "cpu": [
-+ "arm64"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "darwin"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-darwin-x64": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.1.1.tgz",
-+ "integrity": "sha512-qWr9qEn5nrnlhB0rtjSdR00RRZEtxg4EGvicIipqZWEyayPxhUu6NwKiG8wZiYZCLfJ5KWr66PGSNeDMGlNaiA==",
-+ "cpu": [
-+ "x64"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "darwin"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-freebsd-x64": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.1.1.tgz",
-+ "integrity": "sha512-UwP4w/NcQ7V/VJEj3tGVszgb4pyUCt3lzJfUhjDMUmQbzG9LDvgiZgAGMYH6L21MoyAATJQPDGiAMWAPKsmumA==",
-+ "cpu": [
-+ "x64"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "freebsd"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-linux-arm-gnueabihf": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.1.1.tgz",
-+ "integrity": "sha512-CnsxmKHco9sosBs1XcvCXP845Db+Wx1G0qouV5+Gr+HT/ZlDYEWKoHVDgnJXLVEQzq4FmHddBNGbXvgqM1Gfkg==",
-+ "cpu": [
-+ "arm"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "linux"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-linux-arm64-gnu": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.1.1.tgz",
-+ "integrity": "sha512-JfDq1eri5Dif+VDpTkONRd083780nsMCOKoFG87wA0sa4xL8LGcXIBAkUGIC1uVy9SMsr2scA9CySLD/i+Oqiw==",
-+ "cpu": [
-+ "arm64"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "linux"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-linux-arm64-musl": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.1.1.tgz",
-+ "integrity": "sha512-GA67ZbDq2AW0CY07zzGt07M5b5Yaq5qUpFIoW3UFfjOPgb0Sqf3DAW7GtFMK1sF4ROHsRDMGQ9rnT0VM2dVfKA==",
-+ "cpu": [
-+ "arm64"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "linux"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-linux-x64-gnu": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.1.1.tgz",
-+ "integrity": "sha512-nnjuBrbzvqaOJaV+XgT8/+lmXrSCOt1YYZn/irbDb2fR2QprL6Q7WJNgwsZNxiLSfLdv+2RJGGegBx9sLBEzGA==",
-+ "cpu": [
-+ "x64"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "linux"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-linux-x64-musl": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.1.1.tgz",
-+ "integrity": "sha512-CM9xnAQNIZ8zf/igbIT/i3xWbQZYaF397H+JroF5VMOCUleElaMdQLL5riJml8wUfPoN3dtfn2s4peSr3azz/g==",
-+ "cpu": [
-+ "x64"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "linux"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-win32-arm64-msvc": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.1.1.tgz",
-+ "integrity": "sha512-pzUHOGrbgfGgPlOMx9xk3QdPJoRPU+om84hqVoe6u+E0RdwOG0Ho/2UxCgDqmvpUrMab1Deltlt6RqcXFpnigQ==",
-+ "cpu": [
-+ "arm64"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "win32"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-win32-ia32-msvc": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.1.1.tgz",
-+ "integrity": "sha512-WeX8kVS46aobM9a7Xr/kEPcrTyiwJqQv/tbw6nhJ4fH9xNZ+cEcyPoQkwPo570dCOLz3Zo9S2q0E6lJ/EAUOBg==",
-+ "cpu": [
-+ "ia32"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "win32"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@next/swc-win32-x64-msvc": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.1.1.tgz",
-+ "integrity": "sha512-mVF0/3/5QAc5EGVnb8ll31nNvf3BWpPY4pBb84tk+BfQglWLqc5AC9q1Ht/YMWiEgs8ALNKEQ3GQnbY0bJF2Gg==",
-+ "cpu": [
-+ "x64"
-+ ],
-+ "optional": true,
-+ "os": [
-+ "win32"
-+ ],
-+ "engines": {
-+ "node": ">= 10"
-+ }
-+ },
-+ "node_modules/@nodelib/fs.scandir": {
-+ "version": "2.1.5",
-+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
-+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-+ "dependencies": {
-+ "@nodelib/fs.stat": "2.0.5",
-+ "run-parallel": "^1.1.9"
-+ },
-+ "engines": {
-+ "node": ">= 8"
-+ }
-+ },
-+ "node_modules/@nodelib/fs.stat": {
-+ "version": "2.0.5",
-+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-+ "engines": {
-+ "node": ">= 8"
-+ }
-+ },
-+ "node_modules/@nodelib/fs.walk": {
-+ "version": "1.2.8",
-+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
-+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-+ "dependencies": {
-+ "@nodelib/fs.scandir": "2.1.5",
-+ "fastq": "^1.6.0"
-+ },
-+ "engines": {
-+ "node": ">= 8"
-+ }
-+ },
-+ "node_modules/@pkgr/utils": {
-+ "version": "2.3.1",
-+ "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz",
-+ "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==",
-+ "dependencies": {
-+ "cross-spawn": "^7.0.3",
-+ "is-glob": "^4.0.3",
-+ "open": "^8.4.0",
-+ "picocolors": "^1.0.0",
-+ "tiny-glob": "^0.2.9",
-+ "tslib": "^2.4.0"
-+ },
-+ "engines": {
-+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
-+ },
-+ "funding": {
-+ "url": "https://opencollective.com/unts"
-+ }
-+ },
-+ "node_modules/@rushstack/eslint-patch": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz",
-+ "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg=="
-+ },
-+ "node_modules/@swc/helpers": {
-+ "version": "0.4.14",
-+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz",
-+ "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==",
-+ "dependencies": {
-+ "tslib": "^2.4.0"
-+ }
-+ },
-+ "node_modules/@toots/shine.js": {
-+ "version": "1.0.1",
-+ "resolved": "file:../..",
-+ "license": "LGPL-2.0-only"
-+ },
-+ "node_modules/@types/json5": {
-+ "version": "0.0.29",
-+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
-+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
-+ },
-+ "node_modules/@types/node": {
-+ "version": "18.11.18",
-+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
-+ "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
-+ },
-+ "node_modules/@types/prop-types": {
-+ "version": "15.7.5",
-+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
-+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
-+ },
-+ "node_modules/@types/react": {
-+ "version": "18.0.26",
-+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz",
-+ "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==",
-+ "dependencies": {
-+ "@types/prop-types": "*",
-+ "@types/scheduler": "*",
-+ "csstype": "^3.0.2"
-+ }
-+ },
-+ "node_modules/@types/react-dom": {
-+ "version": "18.0.10",
-+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz",
-+ "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==",
-+ "dependencies": {
-+ "@types/react": "*"
-+ }
-+ },
-+ "node_modules/@types/scheduler": {
-+ "version": "0.16.2",
-+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
-+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
-+ },
-+ "node_modules/@typescript-eslint/parser": {
-+ "version": "5.47.1",
-+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.47.1.tgz",
-+ "integrity": "sha512-9Vb+KIv29r6GPu4EboWOnQM7T+UjpjXvjCPhNORlgm40a9Ia9bvaPJswvtae1gip2QEeVeGh6YquqAzEgoRAlw==",
-+ "dependencies": {
-+ "@typescript-eslint/scope-manager": "5.47.1",
-+ "@typescript-eslint/types": "5.47.1",
-+ "@typescript-eslint/typescript-estree": "5.47.1",
-+ "debug": "^4.3.4"
-+ },
-+ "engines": {
-+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-+ },
-+ "funding": {
-+ "type": "opencollective",
-+ "url": "https://opencollective.com/typescript-eslint"
-+ },
-+ "peerDependencies": {
-+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
-+ },
-+ "peerDependenciesMeta": {
-+ "typescript": {
-+ "optional": true
-+ }
-+ }
-+ },
-+ "node_modules/@typescript-eslint/scope-manager": {
-+ "version": "5.47.1",
-+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.47.1.tgz",
-+ "integrity": "sha512-9hsFDsgUwrdOoW1D97Ewog7DYSHaq4WKuNs0LHF9RiCmqB0Z+XRR4Pf7u7u9z/8CciHuJ6yxNws1XznI3ddjEw==",
-+ "dependencies": {
-+ "@typescript-eslint/types": "5.47.1",
-+ "@typescript-eslint/visitor-keys": "5.47.1"
-+ },
-+ "engines": {
-+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-+ },
-+ "funding": {
-+ "type": "opencollective",
-+ "url": "https://opencollective.com/typescript-eslint"
-+ }
-+ },
-+ "node_modules/@typescript-eslint/types": {
-+ "version": "5.47.1",
-+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.47.1.tgz",
-+ "integrity": "sha512-CmALY9YWXEpwuu6377ybJBZdtSAnzXLSQcxLSqSQSbC7VfpMu/HLVdrnVJj7ycI138EHqocW02LPJErE35cE9A==",
-+ "engines": {
-+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-+ },
-+ "funding": {
-+ "type": "opencollective",
-+ "url": "https://opencollective.com/typescript-eslint"
-+ }
-+ },
-+ "node_modules/@typescript-eslint/typescript-estree": {
-+ "version": "5.47.1",
-+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.1.tgz",
-+ "integrity": "sha512-4+ZhFSuISAvRi2xUszEj0xXbNTHceV9GbH9S8oAD2a/F9SW57aJNQVOCxG8GPfSWH/X4eOPdMEU2jYVuWKEpWA==",
-+ "dependencies": {
-+ "@typescript-eslint/types": "5.47.1",
-+ "@typescript-eslint/visitor-keys": "5.47.1",
-+ "debug": "^4.3.4",
-+ "globby": "^11.1.0",
-+ "is-glob": "^4.0.3",
-+ "semver": "^7.3.7",
-+ "tsutils": "^3.21.0"
-+ },
-+ "engines": {
-+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-+ },
-+ "funding": {
-+ "type": "opencollective",
-+ "url": "https://opencollective.com/typescript-eslint"
-+ },
-+ "peerDependenciesMeta": {
-+ "typescript": {
-+ "optional": true
-+ }
-+ }
-+ },
-+ "node_modules/@typescript-eslint/visitor-keys": {
-+ "version": "5.47.1",
-+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.1.tgz",
-+ "integrity": "sha512-rF3pmut2JCCjh6BLRhNKdYjULMb1brvoaiWDlHfLNVgmnZ0sBVJrs3SyaKE1XoDDnJuAx/hDQryHYmPUuNq0ig==",
-+ "dependencies": {
-+ "@typescript-eslint/types": "5.47.1",
-+ "eslint-visitor-keys": "^3.3.0"
-+ },
-+ "engines": {
-+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-+ },
-+ "funding": {
-+ "type": "opencollective",
-+ "url": "https://opencollective.com/typescript-eslint"
-+ }
-+ },
-+ "node_modules/acorn": {
-+ "version": "8.8.1",
-+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
-+ "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
-+ "bin": {
-+ "acorn": "bin/acorn"
-+ },
-+ "engines": {
-+ "node": ">=0.4.0"
-+ }
-+ },
-+ "node_modules/acorn-jsx": {
-+ "version": "5.3.2",
-+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
-+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-+ "peerDependencies": {
-+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
-+ }
-+ },
-+ "node_modules/ajv": {
-+ "version": "6.12.6",
-+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
-+ "dependencies": {
-+ "fast-deep-equal": "^3.1.1",
-+ "fast-json-stable-stringify": "^2.0.0",
-+ "json-schema-traverse": "^0.4.1",
-+ "uri-js": "^4.2.2"
-+ },
-+ "funding": {
-+ "type": "github",
-+ "url": "https://github.com/sponsors/epoberezkin"
-+ }
-+ },
-+ "node_modules/ansi-regex": {
-+ "version": "5.0.1",
-+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/ansi-styles": {
-+ "version": "4.3.0",
-+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-+ "dependencies": {
-+ "color-convert": "^2.0.1"
-+ },
-+ "engines": {
-+ "node": ">=8"
-+ },
-+ "funding": {
-+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-+ }
-+ },
-+ "node_modules/argparse": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
-+ },
-+ "node_modules/aria-query": {
-+ "version": "4.2.2",
-+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz",
-+ "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==",
-+ "dependencies": {
-+ "@babel/runtime": "^7.10.2",
-+ "@babel/runtime-corejs3": "^7.10.2"
-+ },
-+ "engines": {
-+ "node": ">=6.0"
-+ }
-+ },
-+ "node_modules/array-includes": {
-+ "version": "3.1.6",
-+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
-+ "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.4",
-+ "es-abstract": "^1.20.4",
-+ "get-intrinsic": "^1.1.3",
-+ "is-string": "^1.0.7"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/array-union": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
-+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/array.prototype.flat": {
-+ "version": "1.3.1",
-+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
-+ "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.4",
-+ "es-abstract": "^1.20.4",
-+ "es-shim-unscopables": "^1.0.0"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/array.prototype.flatmap": {
-+ "version": "1.3.1",
-+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
-+ "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.4",
-+ "es-abstract": "^1.20.4",
-+ "es-shim-unscopables": "^1.0.0"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/array.prototype.tosorted": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz",
-+ "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.4",
-+ "es-abstract": "^1.20.4",
-+ "es-shim-unscopables": "^1.0.0",
-+ "get-intrinsic": "^1.1.3"
-+ }
-+ },
-+ "node_modules/ast-types-flow": {
-+ "version": "0.0.7",
-+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
-+ "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag=="
-+ },
-+ "node_modules/axe-core": {
-+ "version": "4.6.1",
-+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.1.tgz",
-+ "integrity": "sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w==",
-+ "engines": {
-+ "node": ">=4"
-+ }
-+ },
-+ "node_modules/axobject-query": {
-+ "version": "2.2.0",
-+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
-+ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA=="
-+ },
-+ "node_modules/balanced-match": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-+ },
-+ "node_modules/brace-expansion": {
-+ "version": "1.1.11",
-+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-+ "dependencies": {
-+ "balanced-match": "^1.0.0",
-+ "concat-map": "0.0.1"
-+ }
-+ },
-+ "node_modules/braces": {
-+ "version": "3.0.2",
-+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
-+ "dependencies": {
-+ "fill-range": "^7.0.1"
-+ },
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/call-bind": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
-+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
-+ "dependencies": {
-+ "function-bind": "^1.1.1",
-+ "get-intrinsic": "^1.0.2"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/callsites": {
-+ "version": "3.1.0",
-+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-+ "engines": {
-+ "node": ">=6"
-+ }
-+ },
-+ "node_modules/caniuse-lite": {
-+ "version": "1.0.30001441",
-+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz",
-+ "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==",
-+ "funding": [
-+ {
-+ "type": "opencollective",
-+ "url": "https://opencollective.com/browserslist"
-+ },
-+ {
-+ "type": "tidelift",
-+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
-+ }
-+ ]
-+ },
-+ "node_modules/chalk": {
-+ "version": "4.1.2",
-+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-+ "dependencies": {
-+ "ansi-styles": "^4.1.0",
-+ "supports-color": "^7.1.0"
-+ },
-+ "engines": {
-+ "node": ">=10"
-+ },
-+ "funding": {
-+ "url": "https://github.com/chalk/chalk?sponsor=1"
-+ }
-+ },
-+ "node_modules/client-only": {
-+ "version": "0.0.1",
-+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
-+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
-+ },
-+ "node_modules/color-convert": {
-+ "version": "2.0.1",
-+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-+ "dependencies": {
-+ "color-name": "~1.1.4"
-+ },
-+ "engines": {
-+ "node": ">=7.0.0"
-+ }
-+ },
-+ "node_modules/color-name": {
-+ "version": "1.1.4",
-+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-+ },
-+ "node_modules/concat-map": {
-+ "version": "0.0.1",
-+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
-+ },
-+ "node_modules/core-js-pure": {
-+ "version": "3.27.1",
-+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.27.1.tgz",
-+ "integrity": "sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw==",
-+ "hasInstallScript": true,
-+ "funding": {
-+ "type": "opencollective",
-+ "url": "https://opencollective.com/core-js"
-+ }
-+ },
-+ "node_modules/cross-spawn": {
-+ "version": "7.0.3",
-+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
-+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-+ "dependencies": {
-+ "path-key": "^3.1.0",
-+ "shebang-command": "^2.0.0",
-+ "which": "^2.0.1"
-+ },
-+ "engines": {
-+ "node": ">= 8"
-+ }
-+ },
-+ "node_modules/csstype": {
-+ "version": "3.1.1",
-+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
-+ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
-+ },
-+ "node_modules/damerau-levenshtein": {
-+ "version": "1.0.8",
-+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
-+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA=="
-+ },
-+ "node_modules/debug": {
-+ "version": "4.3.4",
-+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
-+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
-+ "dependencies": {
-+ "ms": "2.1.2"
-+ },
-+ "engines": {
-+ "node": ">=6.0"
-+ },
-+ "peerDependenciesMeta": {
-+ "supports-color": {
-+ "optional": true
-+ }
-+ }
-+ },
-+ "node_modules/deep-is": {
-+ "version": "0.1.4",
-+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
-+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
-+ },
-+ "node_modules/define-lazy-prop": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
-+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/define-properties": {
-+ "version": "1.1.4",
-+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
-+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
-+ "dependencies": {
-+ "has-property-descriptors": "^1.0.0",
-+ "object-keys": "^1.1.1"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/dir-glob": {
-+ "version": "3.0.1",
-+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
-+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
-+ "dependencies": {
-+ "path-type": "^4.0.0"
-+ },
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/doctrine": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
-+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-+ "dependencies": {
-+ "esutils": "^2.0.2"
-+ },
-+ "engines": {
-+ "node": ">=6.0.0"
-+ }
-+ },
-+ "node_modules/emoji-regex": {
-+ "version": "9.2.2",
-+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
-+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
-+ },
-+ "node_modules/enhanced-resolve": {
-+ "version": "5.12.0",
-+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
-+ "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
-+ "dependencies": {
-+ "graceful-fs": "^4.2.4",
-+ "tapable": "^2.2.0"
-+ },
-+ "engines": {
-+ "node": ">=10.13.0"
-+ }
-+ },
-+ "node_modules/es-abstract": {
-+ "version": "1.20.5",
-+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz",
-+ "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "es-to-primitive": "^1.2.1",
-+ "function-bind": "^1.1.1",
-+ "function.prototype.name": "^1.1.5",
-+ "get-intrinsic": "^1.1.3",
-+ "get-symbol-description": "^1.0.0",
-+ "gopd": "^1.0.1",
-+ "has": "^1.0.3",
-+ "has-property-descriptors": "^1.0.0",
-+ "has-symbols": "^1.0.3",
-+ "internal-slot": "^1.0.3",
-+ "is-callable": "^1.2.7",
-+ "is-negative-zero": "^2.0.2",
-+ "is-regex": "^1.1.4",
-+ "is-shared-array-buffer": "^1.0.2",
-+ "is-string": "^1.0.7",
-+ "is-weakref": "^1.0.2",
-+ "object-inspect": "^1.12.2",
-+ "object-keys": "^1.1.1",
-+ "object.assign": "^4.1.4",
-+ "regexp.prototype.flags": "^1.4.3",
-+ "safe-regex-test": "^1.0.0",
-+ "string.prototype.trimend": "^1.0.6",
-+ "string.prototype.trimstart": "^1.0.6",
-+ "unbox-primitive": "^1.0.2"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/es-shim-unscopables": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
-+ "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
-+ "dependencies": {
-+ "has": "^1.0.3"
-+ }
-+ },
-+ "node_modules/es-to-primitive": {
-+ "version": "1.2.1",
-+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-+ "dependencies": {
-+ "is-callable": "^1.1.4",
-+ "is-date-object": "^1.0.1",
-+ "is-symbol": "^1.0.2"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/escape-string-regexp": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-+ "engines": {
-+ "node": ">=10"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/eslint": {
-+ "version": "8.31.0",
-+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz",
-+ "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==",
-+ "dependencies": {
-+ "@eslint/eslintrc": "^1.4.1",
-+ "@humanwhocodes/config-array": "^0.11.8",
-+ "@humanwhocodes/module-importer": "^1.0.1",
-+ "@nodelib/fs.walk": "^1.2.8",
-+ "ajv": "^6.10.0",
-+ "chalk": "^4.0.0",
-+ "cross-spawn": "^7.0.2",
-+ "debug": "^4.3.2",
-+ "doctrine": "^3.0.0",
-+ "escape-string-regexp": "^4.0.0",
-+ "eslint-scope": "^7.1.1",
-+ "eslint-utils": "^3.0.0",
-+ "eslint-visitor-keys": "^3.3.0",
-+ "espree": "^9.4.0",
-+ "esquery": "^1.4.0",
-+ "esutils": "^2.0.2",
-+ "fast-deep-equal": "^3.1.3",
-+ "file-entry-cache": "^6.0.1",
-+ "find-up": "^5.0.0",
-+ "glob-parent": "^6.0.2",
-+ "globals": "^13.19.0",
-+ "grapheme-splitter": "^1.0.4",
-+ "ignore": "^5.2.0",
-+ "import-fresh": "^3.0.0",
-+ "imurmurhash": "^0.1.4",
-+ "is-glob": "^4.0.0",
-+ "is-path-inside": "^3.0.3",
-+ "js-sdsl": "^4.1.4",
-+ "js-yaml": "^4.1.0",
-+ "json-stable-stringify-without-jsonify": "^1.0.1",
-+ "levn": "^0.4.1",
-+ "lodash.merge": "^4.6.2",
-+ "minimatch": "^3.1.2",
-+ "natural-compare": "^1.4.0",
-+ "optionator": "^0.9.1",
-+ "regexpp": "^3.2.0",
-+ "strip-ansi": "^6.0.1",
-+ "strip-json-comments": "^3.1.0",
-+ "text-table": "^0.2.0"
-+ },
-+ "bin": {
-+ "eslint": "bin/eslint.js"
-+ },
-+ "engines": {
-+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-+ },
-+ "funding": {
-+ "url": "https://opencollective.com/eslint"
-+ }
-+ },
-+ "node_modules/eslint-config-next": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.1.1.tgz",
-+ "integrity": "sha512-/5S2XGWlGaiqrRhzpn51ux5JUSLwx8PVK2keLi5xk7QmhfYB8PqE6R6SlVw6hgnf/VexvUXSrlNJ/su00NhtHQ==",
-+ "dependencies": {
-+ "@next/eslint-plugin-next": "13.1.1",
-+ "@rushstack/eslint-patch": "^1.1.3",
-+ "@typescript-eslint/parser": "^5.42.0",
-+ "eslint-import-resolver-node": "^0.3.6",
-+ "eslint-import-resolver-typescript": "^3.5.2",
-+ "eslint-plugin-import": "^2.26.0",
-+ "eslint-plugin-jsx-a11y": "^6.5.1",
-+ "eslint-plugin-react": "^7.31.7",
-+ "eslint-plugin-react-hooks": "^4.5.0"
-+ },
-+ "peerDependencies": {
-+ "eslint": "^7.23.0 || ^8.0.0",
-+ "typescript": ">=3.3.1"
-+ },
-+ "peerDependenciesMeta": {
-+ "typescript": {
-+ "optional": true
-+ }
-+ }
-+ },
-+ "node_modules/eslint-import-resolver-node": {
-+ "version": "0.3.6",
-+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
-+ "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
-+ "dependencies": {
-+ "debug": "^3.2.7",
-+ "resolve": "^1.20.0"
-+ }
-+ },
-+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
-+ "version": "3.2.7",
-+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-+ "dependencies": {
-+ "ms": "^2.1.1"
-+ }
-+ },
-+ "node_modules/eslint-import-resolver-typescript": {
-+ "version": "3.5.2",
-+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz",
-+ "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==",
-+ "dependencies": {
-+ "debug": "^4.3.4",
-+ "enhanced-resolve": "^5.10.0",
-+ "get-tsconfig": "^4.2.0",
-+ "globby": "^13.1.2",
-+ "is-core-module": "^2.10.0",
-+ "is-glob": "^4.0.3",
-+ "synckit": "^0.8.4"
-+ },
-+ "engines": {
-+ "node": "^14.18.0 || >=16.0.0"
-+ },
-+ "funding": {
-+ "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
-+ },
-+ "peerDependencies": {
-+ "eslint": "*",
-+ "eslint-plugin-import": "*"
-+ }
-+ },
-+ "node_modules/eslint-import-resolver-typescript/node_modules/globby": {
-+ "version": "13.1.3",
-+ "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz",
-+ "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==",
-+ "dependencies": {
-+ "dir-glob": "^3.0.1",
-+ "fast-glob": "^3.2.11",
-+ "ignore": "^5.2.0",
-+ "merge2": "^1.4.1",
-+ "slash": "^4.0.0"
-+ },
-+ "engines": {
-+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/eslint-import-resolver-typescript/node_modules/slash": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
-+ "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
-+ "engines": {
-+ "node": ">=12"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/eslint-module-utils": {
-+ "version": "2.7.4",
-+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz",
-+ "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==",
-+ "dependencies": {
-+ "debug": "^3.2.7"
-+ },
-+ "engines": {
-+ "node": ">=4"
-+ },
-+ "peerDependenciesMeta": {
-+ "eslint": {
-+ "optional": true
-+ }
-+ }
-+ },
-+ "node_modules/eslint-module-utils/node_modules/debug": {
-+ "version": "3.2.7",
-+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
-+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
-+ "dependencies": {
-+ "ms": "^2.1.1"
-+ }
-+ },
-+ "node_modules/eslint-plugin-import": {
-+ "version": "2.26.0",
-+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
-+ "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
-+ "dependencies": {
-+ "array-includes": "^3.1.4",
-+ "array.prototype.flat": "^1.2.5",
-+ "debug": "^2.6.9",
-+ "doctrine": "^2.1.0",
-+ "eslint-import-resolver-node": "^0.3.6",
-+ "eslint-module-utils": "^2.7.3",
-+ "has": "^1.0.3",
-+ "is-core-module": "^2.8.1",
-+ "is-glob": "^4.0.3",
-+ "minimatch": "^3.1.2",
-+ "object.values": "^1.1.5",
-+ "resolve": "^1.22.0",
-+ "tsconfig-paths": "^3.14.1"
-+ },
-+ "engines": {
-+ "node": ">=4"
-+ },
-+ "peerDependencies": {
-+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
-+ }
-+ },
-+ "node_modules/eslint-plugin-import/node_modules/debug": {
-+ "version": "2.6.9",
-+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-+ "dependencies": {
-+ "ms": "2.0.0"
-+ }
-+ },
-+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-+ "dependencies": {
-+ "esutils": "^2.0.2"
-+ },
-+ "engines": {
-+ "node": ">=0.10.0"
-+ }
-+ },
-+ "node_modules/eslint-plugin-import/node_modules/ms": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-+ },
-+ "node_modules/eslint-plugin-jsx-a11y": {
-+ "version": "6.6.1",
-+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz",
-+ "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==",
-+ "dependencies": {
-+ "@babel/runtime": "^7.18.9",
-+ "aria-query": "^4.2.2",
-+ "array-includes": "^3.1.5",
-+ "ast-types-flow": "^0.0.7",
-+ "axe-core": "^4.4.3",
-+ "axobject-query": "^2.2.0",
-+ "damerau-levenshtein": "^1.0.8",
-+ "emoji-regex": "^9.2.2",
-+ "has": "^1.0.3",
-+ "jsx-ast-utils": "^3.3.2",
-+ "language-tags": "^1.0.5",
-+ "minimatch": "^3.1.2",
-+ "semver": "^6.3.0"
-+ },
-+ "engines": {
-+ "node": ">=4.0"
-+ },
-+ "peerDependencies": {
-+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
-+ }
-+ },
-+ "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": {
-+ "version": "6.3.0",
-+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-+ "bin": {
-+ "semver": "bin/semver.js"
-+ }
-+ },
-+ "node_modules/eslint-plugin-react": {
-+ "version": "7.31.11",
-+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz",
-+ "integrity": "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==",
-+ "dependencies": {
-+ "array-includes": "^3.1.6",
-+ "array.prototype.flatmap": "^1.3.1",
-+ "array.prototype.tosorted": "^1.1.1",
-+ "doctrine": "^2.1.0",
-+ "estraverse": "^5.3.0",
-+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
-+ "minimatch": "^3.1.2",
-+ "object.entries": "^1.1.6",
-+ "object.fromentries": "^2.0.6",
-+ "object.hasown": "^1.1.2",
-+ "object.values": "^1.1.6",
-+ "prop-types": "^15.8.1",
-+ "resolve": "^2.0.0-next.3",
-+ "semver": "^6.3.0",
-+ "string.prototype.matchall": "^4.0.8"
-+ },
-+ "engines": {
-+ "node": ">=4"
-+ },
-+ "peerDependencies": {
-+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
-+ }
-+ },
-+ "node_modules/eslint-plugin-react-hooks": {
-+ "version": "4.6.0",
-+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
-+ "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
-+ "engines": {
-+ "node": ">=10"
-+ },
-+ "peerDependencies": {
-+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
-+ }
-+ },
-+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-+ "dependencies": {
-+ "esutils": "^2.0.2"
-+ },
-+ "engines": {
-+ "node": ">=0.10.0"
-+ }
-+ },
-+ "node_modules/eslint-plugin-react/node_modules/resolve": {
-+ "version": "2.0.0-next.4",
-+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
-+ "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
-+ "dependencies": {
-+ "is-core-module": "^2.9.0",
-+ "path-parse": "^1.0.7",
-+ "supports-preserve-symlinks-flag": "^1.0.0"
-+ },
-+ "bin": {
-+ "resolve": "bin/resolve"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/eslint-plugin-react/node_modules/semver": {
-+ "version": "6.3.0",
-+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-+ "bin": {
-+ "semver": "bin/semver.js"
-+ }
-+ },
-+ "node_modules/eslint-scope": {
-+ "version": "7.1.1",
-+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
-+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
-+ "dependencies": {
-+ "esrecurse": "^4.3.0",
-+ "estraverse": "^5.2.0"
-+ },
-+ "engines": {
-+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-+ }
-+ },
-+ "node_modules/eslint-utils": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
-+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
-+ "dependencies": {
-+ "eslint-visitor-keys": "^2.0.0"
-+ },
-+ "engines": {
-+ "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/mysticatea"
-+ },
-+ "peerDependencies": {
-+ "eslint": ">=5"
-+ }
-+ },
-+ "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
-+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
-+ "engines": {
-+ "node": ">=10"
-+ }
-+ },
-+ "node_modules/eslint-visitor-keys": {
-+ "version": "3.3.0",
-+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
-+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
-+ "engines": {
-+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-+ }
-+ },
-+ "node_modules/espree": {
-+ "version": "9.4.1",
-+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
-+ "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
-+ "dependencies": {
-+ "acorn": "^8.8.0",
-+ "acorn-jsx": "^5.3.2",
-+ "eslint-visitor-keys": "^3.3.0"
-+ },
-+ "engines": {
-+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-+ },
-+ "funding": {
-+ "url": "https://opencollective.com/eslint"
-+ }
-+ },
-+ "node_modules/esquery": {
-+ "version": "1.4.0",
-+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
-+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
-+ "dependencies": {
-+ "estraverse": "^5.1.0"
-+ },
-+ "engines": {
-+ "node": ">=0.10"
-+ }
-+ },
-+ "node_modules/esrecurse": {
-+ "version": "4.3.0",
-+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-+ "dependencies": {
-+ "estraverse": "^5.2.0"
-+ },
-+ "engines": {
-+ "node": ">=4.0"
-+ }
-+ },
-+ "node_modules/estraverse": {
-+ "version": "5.3.0",
-+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-+ "engines": {
-+ "node": ">=4.0"
-+ }
-+ },
-+ "node_modules/esutils": {
-+ "version": "2.0.3",
-+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-+ "engines": {
-+ "node": ">=0.10.0"
-+ }
-+ },
-+ "node_modules/fast-deep-equal": {
-+ "version": "3.1.3",
-+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
-+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
-+ },
-+ "node_modules/fast-glob": {
-+ "version": "3.2.12",
-+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
-+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
-+ "dependencies": {
-+ "@nodelib/fs.stat": "^2.0.2",
-+ "@nodelib/fs.walk": "^1.2.3",
-+ "glob-parent": "^5.1.2",
-+ "merge2": "^1.3.0",
-+ "micromatch": "^4.0.4"
-+ },
-+ "engines": {
-+ "node": ">=8.6.0"
-+ }
-+ },
-+ "node_modules/fast-glob/node_modules/glob-parent": {
-+ "version": "5.1.2",
-+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-+ "dependencies": {
-+ "is-glob": "^4.0.1"
-+ },
-+ "engines": {
-+ "node": ">= 6"
-+ }
-+ },
-+ "node_modules/fast-json-stable-stringify": {
-+ "version": "2.1.0",
-+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
-+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
-+ },
-+ "node_modules/fast-levenshtein": {
-+ "version": "2.0.6",
-+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
-+ },
-+ "node_modules/fastq": {
-+ "version": "1.14.0",
-+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz",
-+ "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==",
-+ "dependencies": {
-+ "reusify": "^1.0.4"
-+ }
-+ },
-+ "node_modules/file-entry-cache": {
-+ "version": "6.0.1",
-+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
-+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
-+ "dependencies": {
-+ "flat-cache": "^3.0.4"
-+ },
-+ "engines": {
-+ "node": "^10.12.0 || >=12.0.0"
-+ }
-+ },
-+ "node_modules/fill-range": {
-+ "version": "7.0.1",
-+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-+ "dependencies": {
-+ "to-regex-range": "^5.0.1"
-+ },
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/find-up": {
-+ "version": "5.0.0",
-+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
-+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
-+ "dependencies": {
-+ "locate-path": "^6.0.0",
-+ "path-exists": "^4.0.0"
-+ },
-+ "engines": {
-+ "node": ">=10"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/flat-cache": {
-+ "version": "3.0.4",
-+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
-+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
-+ "dependencies": {
-+ "flatted": "^3.1.0",
-+ "rimraf": "^3.0.2"
-+ },
-+ "engines": {
-+ "node": "^10.12.0 || >=12.0.0"
-+ }
-+ },
-+ "node_modules/flatted": {
-+ "version": "3.2.7",
-+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
-+ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
-+ },
-+ "node_modules/fs.realpath": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
-+ },
-+ "node_modules/function-bind": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
-+ },
-+ "node_modules/function.prototype.name": {
-+ "version": "1.1.5",
-+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
-+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.3",
-+ "es-abstract": "^1.19.0",
-+ "functions-have-names": "^1.2.2"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/functions-have-names": {
-+ "version": "1.2.3",
-+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
-+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/get-intrinsic": {
-+ "version": "1.1.3",
-+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
-+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
-+ "dependencies": {
-+ "function-bind": "^1.1.1",
-+ "has": "^1.0.3",
-+ "has-symbols": "^1.0.3"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/get-symbol-description": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
-+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "get-intrinsic": "^1.1.1"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/get-tsconfig": {
-+ "version": "4.2.0",
-+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz",
-+ "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==",
-+ "funding": {
-+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
-+ }
-+ },
-+ "node_modules/glob": {
-+ "version": "7.1.7",
-+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
-+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
-+ "dependencies": {
-+ "fs.realpath": "^1.0.0",
-+ "inflight": "^1.0.4",
-+ "inherits": "2",
-+ "minimatch": "^3.0.4",
-+ "once": "^1.3.0",
-+ "path-is-absolute": "^1.0.0"
-+ },
-+ "engines": {
-+ "node": "*"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/isaacs"
-+ }
-+ },
-+ "node_modules/glob-parent": {
-+ "version": "6.0.2",
-+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
-+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
-+ "dependencies": {
-+ "is-glob": "^4.0.3"
-+ },
-+ "engines": {
-+ "node": ">=10.13.0"
-+ }
-+ },
-+ "node_modules/globals": {
-+ "version": "13.19.0",
-+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
-+ "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
-+ "dependencies": {
-+ "type-fest": "^0.20.2"
-+ },
-+ "engines": {
-+ "node": ">=8"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/globalyzer": {
-+ "version": "0.1.0",
-+ "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
-+ "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q=="
-+ },
-+ "node_modules/globby": {
-+ "version": "11.1.0",
-+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
-+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
-+ "dependencies": {
-+ "array-union": "^2.1.0",
-+ "dir-glob": "^3.0.1",
-+ "fast-glob": "^3.2.9",
-+ "ignore": "^5.2.0",
-+ "merge2": "^1.4.1",
-+ "slash": "^3.0.0"
-+ },
-+ "engines": {
-+ "node": ">=10"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/globrex": {
-+ "version": "0.1.2",
-+ "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
-+ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="
-+ },
-+ "node_modules/gopd": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
-+ "dependencies": {
-+ "get-intrinsic": "^1.1.3"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/graceful-fs": {
-+ "version": "4.2.10",
-+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
-+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
-+ },
-+ "node_modules/grapheme-splitter": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
-+ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="
-+ },
-+ "node_modules/has": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-+ "dependencies": {
-+ "function-bind": "^1.1.1"
-+ },
-+ "engines": {
-+ "node": ">= 0.4.0"
-+ }
-+ },
-+ "node_modules/has-bigints": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
-+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/has-flag": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/has-property-descriptors": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
-+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
-+ "dependencies": {
-+ "get-intrinsic": "^1.1.1"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/has-symbols": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/has-tostringtag": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
-+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
-+ "dependencies": {
-+ "has-symbols": "^1.0.2"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/ignore": {
-+ "version": "5.2.4",
-+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
-+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
-+ "engines": {
-+ "node": ">= 4"
-+ }
-+ },
-+ "node_modules/import-fresh": {
-+ "version": "3.3.0",
-+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
-+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-+ "dependencies": {
-+ "parent-module": "^1.0.0",
-+ "resolve-from": "^4.0.0"
-+ },
-+ "engines": {
-+ "node": ">=6"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/imurmurhash": {
-+ "version": "0.1.4",
-+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
-+ "engines": {
-+ "node": ">=0.8.19"
-+ }
-+ },
-+ "node_modules/inflight": {
-+ "version": "1.0.6",
-+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
-+ "dependencies": {
-+ "once": "^1.3.0",
-+ "wrappy": "1"
-+ }
-+ },
-+ "node_modules/inherits": {
-+ "version": "2.0.4",
-+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-+ },
-+ "node_modules/internal-slot": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz",
-+ "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==",
-+ "dependencies": {
-+ "get-intrinsic": "^1.1.3",
-+ "has": "^1.0.3",
-+ "side-channel": "^1.0.4"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ }
-+ },
-+ "node_modules/is-bigint": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
-+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
-+ "dependencies": {
-+ "has-bigints": "^1.0.1"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-boolean-object": {
-+ "version": "1.1.2",
-+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
-+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "has-tostringtag": "^1.0.0"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-callable": {
-+ "version": "1.2.7",
-+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
-+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-core-module": {
-+ "version": "2.11.0",
-+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
-+ "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-+ "dependencies": {
-+ "has": "^1.0.3"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-date-object": {
-+ "version": "1.0.5",
-+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
-+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-+ "dependencies": {
-+ "has-tostringtag": "^1.0.0"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-docker": {
-+ "version": "2.2.1",
-+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
-+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
-+ "bin": {
-+ "is-docker": "cli.js"
-+ },
-+ "engines": {
-+ "node": ">=8"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/is-extglob": {
-+ "version": "2.1.1",
-+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-+ "engines": {
-+ "node": ">=0.10.0"
-+ }
-+ },
-+ "node_modules/is-glob": {
-+ "version": "4.0.3",
-+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-+ "dependencies": {
-+ "is-extglob": "^2.1.1"
-+ },
-+ "engines": {
-+ "node": ">=0.10.0"
-+ }
-+ },
-+ "node_modules/is-negative-zero": {
-+ "version": "2.0.2",
-+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
-+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-number": {
-+ "version": "7.0.0",
-+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-+ "engines": {
-+ "node": ">=0.12.0"
-+ }
-+ },
-+ "node_modules/is-number-object": {
-+ "version": "1.0.7",
-+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
-+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
-+ "dependencies": {
-+ "has-tostringtag": "^1.0.0"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-path-inside": {
-+ "version": "3.0.3",
-+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/is-regex": {
-+ "version": "1.1.4",
-+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
-+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "has-tostringtag": "^1.0.0"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-shared-array-buffer": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
-+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-string": {
-+ "version": "1.0.7",
-+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
-+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
-+ "dependencies": {
-+ "has-tostringtag": "^1.0.0"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-symbol": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
-+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
-+ "dependencies": {
-+ "has-symbols": "^1.0.2"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-weakref": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
-+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/is-wsl": {
-+ "version": "2.2.0",
-+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
-+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-+ "dependencies": {
-+ "is-docker": "^2.0.0"
-+ },
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/isexe": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
-+ },
-+ "node_modules/js-sdsl": {
-+ "version": "4.2.0",
-+ "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz",
-+ "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==",
-+ "funding": {
-+ "type": "opencollective",
-+ "url": "https://opencollective.com/js-sdsl"
-+ }
-+ },
-+ "node_modules/js-tokens": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
-+ },
-+ "node_modules/js-yaml": {
-+ "version": "4.1.0",
-+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-+ "dependencies": {
-+ "argparse": "^2.0.1"
-+ },
-+ "bin": {
-+ "js-yaml": "bin/js-yaml.js"
-+ }
-+ },
-+ "node_modules/json-schema-traverse": {
-+ "version": "0.4.1",
-+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
-+ },
-+ "node_modules/json-stable-stringify-without-jsonify": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
-+ },
-+ "node_modules/json5": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
-+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
-+ "dependencies": {
-+ "minimist": "^1.2.0"
-+ },
-+ "bin": {
-+ "json5": "lib/cli.js"
-+ }
-+ },
-+ "node_modules/jsx-ast-utils": {
-+ "version": "3.3.3",
-+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz",
-+ "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==",
-+ "dependencies": {
-+ "array-includes": "^3.1.5",
-+ "object.assign": "^4.1.3"
-+ },
-+ "engines": {
-+ "node": ">=4.0"
-+ }
-+ },
-+ "node_modules/language-subtag-registry": {
-+ "version": "0.3.22",
-+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz",
-+ "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w=="
-+ },
-+ "node_modules/language-tags": {
-+ "version": "1.0.7",
-+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.7.tgz",
-+ "integrity": "sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw==",
-+ "dependencies": {
-+ "language-subtag-registry": "^0.3.20"
-+ }
-+ },
-+ "node_modules/levn": {
-+ "version": "0.4.1",
-+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
-+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
-+ "dependencies": {
-+ "prelude-ls": "^1.2.1",
-+ "type-check": "~0.4.0"
-+ },
-+ "engines": {
-+ "node": ">= 0.8.0"
-+ }
-+ },
-+ "node_modules/locate-path": {
-+ "version": "6.0.0",
-+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
-+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
-+ "dependencies": {
-+ "p-locate": "^5.0.0"
-+ },
-+ "engines": {
-+ "node": ">=10"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/lodash.merge": {
-+ "version": "4.6.2",
-+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
-+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
-+ },
-+ "node_modules/loose-envify": {
-+ "version": "1.4.0",
-+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
-+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
-+ "dependencies": {
-+ "js-tokens": "^3.0.0 || ^4.0.0"
-+ },
-+ "bin": {
-+ "loose-envify": "cli.js"
-+ }
-+ },
-+ "node_modules/lru-cache": {
-+ "version": "6.0.0",
-+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-+ "dependencies": {
-+ "yallist": "^4.0.0"
-+ },
-+ "engines": {
-+ "node": ">=10"
-+ }
-+ },
-+ "node_modules/merge2": {
-+ "version": "1.4.1",
-+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-+ "engines": {
-+ "node": ">= 8"
-+ }
-+ },
-+ "node_modules/micromatch": {
-+ "version": "4.0.5",
-+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
-+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
-+ "dependencies": {
-+ "braces": "^3.0.2",
-+ "picomatch": "^2.3.1"
-+ },
-+ "engines": {
-+ "node": ">=8.6"
-+ }
-+ },
-+ "node_modules/minimatch": {
-+ "version": "3.1.2",
-+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-+ "dependencies": {
-+ "brace-expansion": "^1.1.7"
-+ },
-+ "engines": {
-+ "node": "*"
-+ }
-+ },
-+ "node_modules/minimist": {
-+ "version": "1.2.7",
-+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-+ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/ms": {
-+ "version": "2.1.2",
-+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-+ },
-+ "node_modules/nanoid": {
-+ "version": "3.3.4",
-+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
-+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
-+ "bin": {
-+ "nanoid": "bin/nanoid.cjs"
-+ },
-+ "engines": {
-+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
-+ }
-+ },
-+ "node_modules/natural-compare": {
-+ "version": "1.4.0",
-+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
-+ },
-+ "node_modules/next": {
-+ "version": "13.1.1",
-+ "resolved": "https://registry.npmjs.org/next/-/next-13.1.1.tgz",
-+ "integrity": "sha512-R5eBAaIa3X7LJeYvv1bMdGnAVF4fVToEjim7MkflceFPuANY3YyvFxXee/A+acrSYwYPvOvf7f6v/BM/48ea5w==",
-+ "dependencies": {
-+ "@next/env": "13.1.1",
-+ "@swc/helpers": "0.4.14",
-+ "caniuse-lite": "^1.0.30001406",
-+ "postcss": "8.4.14",
-+ "styled-jsx": "5.1.1"
-+ },
-+ "bin": {
-+ "next": "dist/bin/next"
-+ },
-+ "engines": {
-+ "node": ">=14.6.0"
-+ },
-+ "optionalDependencies": {
-+ "@next/swc-android-arm-eabi": "13.1.1",
-+ "@next/swc-android-arm64": "13.1.1",
-+ "@next/swc-darwin-arm64": "13.1.1",
-+ "@next/swc-darwin-x64": "13.1.1",
-+ "@next/swc-freebsd-x64": "13.1.1",
-+ "@next/swc-linux-arm-gnueabihf": "13.1.1",
-+ "@next/swc-linux-arm64-gnu": "13.1.1",
-+ "@next/swc-linux-arm64-musl": "13.1.1",
-+ "@next/swc-linux-x64-gnu": "13.1.1",
-+ "@next/swc-linux-x64-musl": "13.1.1",
-+ "@next/swc-win32-arm64-msvc": "13.1.1",
-+ "@next/swc-win32-ia32-msvc": "13.1.1",
-+ "@next/swc-win32-x64-msvc": "13.1.1"
-+ },
-+ "peerDependencies": {
-+ "fibers": ">= 3.1.0",
-+ "node-sass": "^6.0.0 || ^7.0.0",
-+ "react": "^18.2.0",
-+ "react-dom": "^18.2.0",
-+ "sass": "^1.3.0"
-+ },
-+ "peerDependenciesMeta": {
-+ "fibers": {
-+ "optional": true
-+ },
-+ "node-sass": {
-+ "optional": true
-+ },
-+ "sass": {
-+ "optional": true
-+ }
-+ }
-+ },
-+ "node_modules/object-assign": {
-+ "version": "4.1.1",
-+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-+ "engines": {
-+ "node": ">=0.10.0"
-+ }
-+ },
-+ "node_modules/object-inspect": {
-+ "version": "1.12.2",
-+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
-+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/object-keys": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-+ "engines": {
-+ "node": ">= 0.4"
-+ }
-+ },
-+ "node_modules/object.assign": {
-+ "version": "4.1.4",
-+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
-+ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.4",
-+ "has-symbols": "^1.0.3",
-+ "object-keys": "^1.1.1"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/object.entries": {
-+ "version": "1.1.6",
-+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
-+ "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.4",
-+ "es-abstract": "^1.20.4"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ }
-+ },
-+ "node_modules/object.fromentries": {
-+ "version": "2.0.6",
-+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz",
-+ "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.4",
-+ "es-abstract": "^1.20.4"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/object.hasown": {
-+ "version": "1.1.2",
-+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz",
-+ "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==",
-+ "dependencies": {
-+ "define-properties": "^1.1.4",
-+ "es-abstract": "^1.20.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/object.values": {
-+ "version": "1.1.6",
-+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
-+ "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.4",
-+ "es-abstract": "^1.20.4"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/once": {
-+ "version": "1.4.0",
-+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
-+ "dependencies": {
-+ "wrappy": "1"
-+ }
-+ },
-+ "node_modules/open": {
-+ "version": "8.4.0",
-+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
-+ "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
-+ "dependencies": {
-+ "define-lazy-prop": "^2.0.0",
-+ "is-docker": "^2.1.1",
-+ "is-wsl": "^2.2.0"
-+ },
-+ "engines": {
-+ "node": ">=12"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/optionator": {
-+ "version": "0.9.1",
-+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
-+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
-+ "dependencies": {
-+ "deep-is": "^0.1.3",
-+ "fast-levenshtein": "^2.0.6",
-+ "levn": "^0.4.1",
-+ "prelude-ls": "^1.2.1",
-+ "type-check": "^0.4.0",
-+ "word-wrap": "^1.2.3"
-+ },
-+ "engines": {
-+ "node": ">= 0.8.0"
-+ }
-+ },
-+ "node_modules/p-limit": {
-+ "version": "3.1.0",
-+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
-+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-+ "dependencies": {
-+ "yocto-queue": "^0.1.0"
-+ },
-+ "engines": {
-+ "node": ">=10"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/p-locate": {
-+ "version": "5.0.0",
-+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
-+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
-+ "dependencies": {
-+ "p-limit": "^3.0.2"
-+ },
-+ "engines": {
-+ "node": ">=10"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/parent-module": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-+ "dependencies": {
-+ "callsites": "^3.0.0"
-+ },
-+ "engines": {
-+ "node": ">=6"
-+ }
-+ },
-+ "node_modules/path-exists": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/path-is-absolute": {
-+ "version": "1.0.1",
-+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
-+ "engines": {
-+ "node": ">=0.10.0"
-+ }
-+ },
-+ "node_modules/path-key": {
-+ "version": "3.1.1",
-+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/path-parse": {
-+ "version": "1.0.7",
-+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
-+ },
-+ "node_modules/path-type": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/picocolors": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
-+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
-+ },
-+ "node_modules/picomatch": {
-+ "version": "2.3.1",
-+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-+ "engines": {
-+ "node": ">=8.6"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/jonschlinkert"
-+ }
-+ },
-+ "node_modules/postcss": {
-+ "version": "8.4.14",
-+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
-+ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
-+ "funding": [
-+ {
-+ "type": "opencollective",
-+ "url": "https://opencollective.com/postcss/"
-+ },
-+ {
-+ "type": "tidelift",
-+ "url": "https://tidelift.com/funding/github/npm/postcss"
-+ }
-+ ],
-+ "dependencies": {
-+ "nanoid": "^3.3.4",
-+ "picocolors": "^1.0.0",
-+ "source-map-js": "^1.0.2"
-+ },
-+ "engines": {
-+ "node": "^10 || ^12 || >=14"
-+ }
-+ },
-+ "node_modules/prelude-ls": {
-+ "version": "1.2.1",
-+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
-+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
-+ "engines": {
-+ "node": ">= 0.8.0"
-+ }
-+ },
-+ "node_modules/prettier": {
-+ "version": "2.8.1",
-+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz",
-+ "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==",
-+ "dev": true,
-+ "bin": {
-+ "prettier": "bin-prettier.js"
-+ },
-+ "engines": {
-+ "node": ">=10.13.0"
-+ },
-+ "funding": {
-+ "url": "https://github.com/prettier/prettier?sponsor=1"
-+ }
-+ },
-+ "node_modules/prop-types": {
-+ "version": "15.8.1",
-+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
-+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
-+ "dependencies": {
-+ "loose-envify": "^1.4.0",
-+ "object-assign": "^4.1.1",
-+ "react-is": "^16.13.1"
-+ }
-+ },
-+ "node_modules/punycode": {
-+ "version": "2.1.1",
-+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-+ "engines": {
-+ "node": ">=6"
-+ }
-+ },
-+ "node_modules/queue-microtask": {
-+ "version": "1.2.3",
-+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-+ "funding": [
-+ {
-+ "type": "github",
-+ "url": "https://github.com/sponsors/feross"
-+ },
-+ {
-+ "type": "patreon",
-+ "url": "https://www.patreon.com/feross"
-+ },
-+ {
-+ "type": "consulting",
-+ "url": "https://feross.org/support"
-+ }
-+ ]
-+ },
-+ "node_modules/react": {
-+ "version": "18.2.0",
-+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
-+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
-+ "dependencies": {
-+ "loose-envify": "^1.1.0"
-+ },
-+ "engines": {
-+ "node": ">=0.10.0"
-+ }
-+ },
-+ "node_modules/react-dom": {
-+ "version": "18.2.0",
-+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
-+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
-+ "dependencies": {
-+ "loose-envify": "^1.1.0",
-+ "scheduler": "^0.23.0"
-+ },
-+ "peerDependencies": {
-+ "react": "^18.2.0"
-+ }
-+ },
-+ "node_modules/react-is": {
-+ "version": "16.13.1",
-+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
-+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
-+ },
-+ "node_modules/regenerator-runtime": {
-+ "version": "0.13.11",
-+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
-+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
-+ },
-+ "node_modules/regexp.prototype.flags": {
-+ "version": "1.4.3",
-+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
-+ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.3",
-+ "functions-have-names": "^1.2.2"
-+ },
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/regexpp": {
-+ "version": "3.2.0",
-+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
-+ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
-+ "engines": {
-+ "node": ">=8"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/mysticatea"
-+ }
-+ },
-+ "node_modules/resolve": {
-+ "version": "1.22.1",
-+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
-+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
-+ "dependencies": {
-+ "is-core-module": "^2.9.0",
-+ "path-parse": "^1.0.7",
-+ "supports-preserve-symlinks-flag": "^1.0.0"
-+ },
-+ "bin": {
-+ "resolve": "bin/resolve"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/resolve-from": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-+ "engines": {
-+ "node": ">=4"
-+ }
-+ },
-+ "node_modules/reusify": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
-+ "engines": {
-+ "iojs": ">=1.0.0",
-+ "node": ">=0.10.0"
-+ }
-+ },
-+ "node_modules/rimraf": {
-+ "version": "3.0.2",
-+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-+ "dependencies": {
-+ "glob": "^7.1.3"
-+ },
-+ "bin": {
-+ "rimraf": "bin.js"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/isaacs"
-+ }
-+ },
-+ "node_modules/run-parallel": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-+ "funding": [
-+ {
-+ "type": "github",
-+ "url": "https://github.com/sponsors/feross"
-+ },
-+ {
-+ "type": "patreon",
-+ "url": "https://www.patreon.com/feross"
-+ },
-+ {
-+ "type": "consulting",
-+ "url": "https://feross.org/support"
-+ }
-+ ],
-+ "dependencies": {
-+ "queue-microtask": "^1.2.2"
-+ }
-+ },
-+ "node_modules/safe-regex-test": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
-+ "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "get-intrinsic": "^1.1.3",
-+ "is-regex": "^1.1.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/scheduler": {
-+ "version": "0.23.0",
-+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
-+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
-+ "dependencies": {
-+ "loose-envify": "^1.1.0"
-+ }
-+ },
-+ "node_modules/semver": {
-+ "version": "7.3.8",
-+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
-+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
-+ "dependencies": {
-+ "lru-cache": "^6.0.0"
-+ },
-+ "bin": {
-+ "semver": "bin/semver.js"
-+ },
-+ "engines": {
-+ "node": ">=10"
-+ }
-+ },
-+ "node_modules/shebang-command": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-+ "dependencies": {
-+ "shebang-regex": "^3.0.0"
-+ },
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/shebang-regex": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/side-channel": {
-+ "version": "1.0.4",
-+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
-+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-+ "dependencies": {
-+ "call-bind": "^1.0.0",
-+ "get-intrinsic": "^1.0.2",
-+ "object-inspect": "^1.9.0"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/slash": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
-+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/source-map-js": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
-+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
-+ "engines": {
-+ "node": ">=0.10.0"
-+ }
-+ },
-+ "node_modules/string.prototype.matchall": {
-+ "version": "4.0.8",
-+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
-+ "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.4",
-+ "es-abstract": "^1.20.4",
-+ "get-intrinsic": "^1.1.3",
-+ "has-symbols": "^1.0.3",
-+ "internal-slot": "^1.0.3",
-+ "regexp.prototype.flags": "^1.4.3",
-+ "side-channel": "^1.0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/string.prototype.trimend": {
-+ "version": "1.0.6",
-+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
-+ "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.4",
-+ "es-abstract": "^1.20.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/string.prototype.trimstart": {
-+ "version": "1.0.6",
-+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
-+ "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "define-properties": "^1.1.4",
-+ "es-abstract": "^1.20.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/strip-ansi": {
-+ "version": "6.0.1",
-+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-+ "dependencies": {
-+ "ansi-regex": "^5.0.1"
-+ },
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/strip-bom": {
-+ "version": "3.0.0",
-+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
-+ "engines": {
-+ "node": ">=4"
-+ }
-+ },
-+ "node_modules/strip-json-comments": {
-+ "version": "3.1.1",
-+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-+ "engines": {
-+ "node": ">=8"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/styled-jsx": {
-+ "version": "5.1.1",
-+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
-+ "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
-+ "dependencies": {
-+ "client-only": "0.0.1"
-+ },
-+ "engines": {
-+ "node": ">= 12.0.0"
-+ },
-+ "peerDependencies": {
-+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
-+ },
-+ "peerDependenciesMeta": {
-+ "@babel/core": {
-+ "optional": true
-+ },
-+ "babel-plugin-macros": {
-+ "optional": true
-+ }
-+ }
-+ },
-+ "node_modules/supports-color": {
-+ "version": "7.2.0",
-+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-+ "dependencies": {
-+ "has-flag": "^4.0.0"
-+ },
-+ "engines": {
-+ "node": ">=8"
-+ }
-+ },
-+ "node_modules/supports-preserve-symlinks-flag": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-+ "engines": {
-+ "node": ">= 0.4"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/synckit": {
-+ "version": "0.8.4",
-+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz",
-+ "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==",
-+ "dependencies": {
-+ "@pkgr/utils": "^2.3.1",
-+ "tslib": "^2.4.0"
-+ },
-+ "engines": {
-+ "node": "^14.18.0 || >=16.0.0"
-+ },
-+ "funding": {
-+ "url": "https://opencollective.com/unts"
-+ }
-+ },
-+ "node_modules/tapable": {
-+ "version": "2.2.1",
-+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
-+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
-+ "engines": {
-+ "node": ">=6"
-+ }
-+ },
-+ "node_modules/text-table": {
-+ "version": "0.2.0",
-+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
-+ },
-+ "node_modules/tiny-glob": {
-+ "version": "0.2.9",
-+ "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
-+ "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
-+ "dependencies": {
-+ "globalyzer": "0.1.0",
-+ "globrex": "^0.1.2"
-+ }
-+ },
-+ "node_modules/to-regex-range": {
-+ "version": "5.0.1",
-+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-+ "dependencies": {
-+ "is-number": "^7.0.0"
-+ },
-+ "engines": {
-+ "node": ">=8.0"
-+ }
-+ },
-+ "node_modules/tsconfig-paths": {
-+ "version": "3.14.1",
-+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
-+ "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
-+ "dependencies": {
-+ "@types/json5": "^0.0.29",
-+ "json5": "^1.0.1",
-+ "minimist": "^1.2.6",
-+ "strip-bom": "^3.0.0"
-+ }
-+ },
-+ "node_modules/tslib": {
-+ "version": "2.4.1",
-+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
-+ "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
-+ },
-+ "node_modules/tsutils": {
-+ "version": "3.21.0",
-+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
-+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
-+ "dependencies": {
-+ "tslib": "^1.8.1"
-+ },
-+ "engines": {
-+ "node": ">= 6"
-+ },
-+ "peerDependencies": {
-+ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
-+ }
-+ },
-+ "node_modules/tsutils/node_modules/tslib": {
-+ "version": "1.14.1",
-+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
-+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
-+ },
-+ "node_modules/type-check": {
-+ "version": "0.4.0",
-+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
-+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
-+ "dependencies": {
-+ "prelude-ls": "^1.2.1"
-+ },
-+ "engines": {
-+ "node": ">= 0.8.0"
-+ }
-+ },
-+ "node_modules/type-fest": {
-+ "version": "0.20.2",
-+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
-+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
-+ "engines": {
-+ "node": ">=10"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ },
-+ "node_modules/typescript": {
-+ "version": "4.9.4",
-+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
-+ "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
-+ "bin": {
-+ "tsc": "bin/tsc",
-+ "tsserver": "bin/tsserver"
-+ },
-+ "engines": {
-+ "node": ">=4.2.0"
-+ }
-+ },
-+ "node_modules/unbox-primitive": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
-+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
-+ "dependencies": {
-+ "call-bind": "^1.0.2",
-+ "has-bigints": "^1.0.2",
-+ "has-symbols": "^1.0.3",
-+ "which-boxed-primitive": "^1.0.2"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/uri-js": {
-+ "version": "4.4.1",
-+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
-+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-+ "dependencies": {
-+ "punycode": "^2.1.0"
-+ }
-+ },
-+ "node_modules/which": {
-+ "version": "2.0.2",
-+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-+ "dependencies": {
-+ "isexe": "^2.0.0"
-+ },
-+ "bin": {
-+ "node-which": "bin/node-which"
-+ },
-+ "engines": {
-+ "node": ">= 8"
-+ }
-+ },
-+ "node_modules/which-boxed-primitive": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
-+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
-+ "dependencies": {
-+ "is-bigint": "^1.0.1",
-+ "is-boolean-object": "^1.1.0",
-+ "is-number-object": "^1.0.4",
-+ "is-string": "^1.0.5",
-+ "is-symbol": "^1.0.3"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/ljharb"
-+ }
-+ },
-+ "node_modules/word-wrap": {
-+ "version": "1.2.3",
-+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
-+ "engines": {
-+ "node": ">=0.10.0"
-+ }
-+ },
-+ "node_modules/wrappy": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
-+ },
-+ "node_modules/yallist": {
-+ "version": "4.0.0",
-+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
-+ },
-+ "node_modules/yocto-queue": {
-+ "version": "0.1.0",
-+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
-+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
-+ "engines": {
-+ "node": ">=10"
-+ },
-+ "funding": {
-+ "url": "https://github.com/sponsors/sindresorhus"
-+ }
-+ }
-+ }
-+}
-diff --git a/js/test/nextjs/package.json b/js/test/nextjs/package.json
-new file mode 100644
-index 0000000..f57e111
---- /dev/null
-+++ b/js/test/nextjs/package.json
-@@ -0,0 +1,28 @@
-+{
-+ "name": "shine-nextjs-test-app",
-+ "version": "0.1.0",
-+ "private": true,
-+ "scripts": {
-+ "dev": "next dev",
-+ "lint": "next lint --fix",
-+ "build": "next build && next export && touch out/.nojekyll",
-+ "format": "prettier '**/*.{ts,tsx,js,jsx}' --write",
-+ "typecheck": "tsc --noEmit"
-+ },
-+ "dependencies": {
-+ "@next/font": "13.1.1",
-+ "@toots/shine.js": "file:../..",
-+ "@types/node": "18.11.18",
-+ "@types/react": "18.0.26",
-+ "@types/react-dom": "18.0.10",
-+ "eslint": "8.31.0",
-+ "eslint-config-next": "13.1.1",
-+ "next": "13.1.1",
-+ "react": "18.2.0",
-+ "react-dom": "18.2.0",
-+ "typescript": "4.9.4"
-+ },
-+ "devDependencies": {
-+ "prettier": "^2.8.1"
-+ }
-+}
-diff --git a/js/test/nextjs/pages/index.tsx b/js/test/nextjs/pages/index.tsx
-new file mode 100644
-index 0000000..4bf771a
---- /dev/null
-+++ b/js/test/nextjs/pages/index.tsx
-@@ -0,0 +1,50 @@
-+import { Fragment, useEffect, useState, useCallback } from "react"
-+import { runEncodeTest } from "@shine/lib/encode"
-+import { runRoundsTest } from "@shine/lib/rounds"
-+
-+const logEntries: string[] = []
-+let encoderStarted = false
-+
-+export default function Home() {
-+ const [logs, setLogs] = useState(logEntries)
-+ const [encodedBlobUrl, setEncodedBlobUrl] = useState<string | undefined>()
-+
-+ const log = useCallback(
-+ (entry: string) => {
-+ logEntries.push(entry)
-+ setLogs(logEntries)
-+ },
-+ [setLogs]
-+ )
-+
-+ useEffect(() => {
-+ if (encoderStarted) return
-+
-+ runEncodeTest(log, blob => {
-+ if (!encodedBlobUrl) setEncodedBlobUrl(URL.createObjectURL(blob))
-+
-+ log("")
-+ runRoundsTest(log)
-+ })
-+
-+ encoderStarted = true
-+ }, [log, encodedBlobUrl, setEncodedBlobUrl])
-+
-+ return (
-+ <>
-+ {encodedBlobUrl && (
-+ <a href={encodedBlobUrl} download='encoded.mp3'>
-+ Download encoded file
-+ </a>
-+ )}
-+ <div>
-+ {logs.map(entry => (
-+ <Fragment key={entry}>
-+ {entry}
-+ <br />
-+ </Fragment>
-+ ))}
-+ </div>
-+ </>
-+ )
-+}
-diff --git a/js/test/nextjs/pnpm-lock.yaml b/js/test/nextjs/pnpm-lock.yaml
-new file mode 100644
-index 0000000..562cc68
---- /dev/null
-+++ b/js/test/nextjs/pnpm-lock.yaml
-@@ -0,0 +1,2032 @@
-+lockfileVersion: 5.4
-+
-+specifiers:
-+ '@next/font': 13.1.1
-+ '@toots/shine.js': file:../..
-+ '@types/node': 18.11.18
-+ '@types/react': 18.0.26
-+ '@types/react-dom': 18.0.10
-+ eslint: 8.31.0
-+ eslint-config-next: 13.1.1
-+ next: 13.1.1
-+ prettier: ^2.8.1
-+ react: 18.2.0
-+ react-dom: 18.2.0
-+ typescript: 4.9.4
-+
-+dependencies:
-+ '@next/font': 13.1.1
-+ '@toots/shine.js': file:../..
-+ '@types/node': 18.11.18
-+ '@types/react': 18.0.26
-+ '@types/react-dom': 18.0.10
-+ eslint: 8.31.0
-+ eslint-config-next: 13.1.1_iukboom6ndih5an6iafl45j2fe
-+ next: 13.1.1_biqbaboplfbrettd7655fr4n2y
-+ react: 18.2.0
-+ react-dom: 18.2.0_react@18.2.0
-+ typescript: 4.9.4
-+
-+devDependencies:
-+ prettier: 2.8.1
-+
-+packages:
-+
-+ /@babel/runtime-corejs3/7.20.7:
-+ resolution: {integrity: sha512-jr9lCZ4RbRQmCR28Q8U8Fu49zvFqLxTY9AMOUz+iyMohMoAgpEcVxY+wJNay99oXOpOcCTODkk70NDN2aaJEeg==}
-+ engines: {node: '>=6.9.0'}
-+ dependencies:
-+ core-js-pure: 3.27.1
-+ regenerator-runtime: 0.13.11
-+ dev: false
-+
-+ /@babel/runtime/7.20.7:
-+ resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==}
-+ engines: {node: '>=6.9.0'}
-+ dependencies:
-+ regenerator-runtime: 0.13.11
-+ dev: false
-+
-+ /@eslint/eslintrc/1.4.1:
-+ resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==}
-+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-+ dependencies:
-+ ajv: 6.12.6
-+ debug: 4.3.4
-+ espree: 9.4.1
-+ globals: 13.19.0
-+ ignore: 5.2.4
-+ import-fresh: 3.3.0
-+ js-yaml: 4.1.0
-+ minimatch: 3.1.2
-+ strip-json-comments: 3.1.1
-+ transitivePeerDependencies:
-+ - supports-color
-+ dev: false
-+
-+ /@humanwhocodes/config-array/0.11.8:
-+ resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
-+ engines: {node: '>=10.10.0'}
-+ dependencies:
-+ '@humanwhocodes/object-schema': 1.2.1
-+ debug: 4.3.4
-+ minimatch: 3.1.2
-+ transitivePeerDependencies:
-+ - supports-color
-+ dev: false
-+
-+ /@humanwhocodes/module-importer/1.0.1:
-+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
-+ engines: {node: '>=12.22'}
-+ dev: false
-+
-+ /@humanwhocodes/object-schema/1.2.1:
-+ resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
-+ dev: false
-+
-+ /@next/env/13.1.1:
-+ resolution: {integrity: sha512-vFMyXtPjSAiOXOywMojxfKIqE3VWN5RCAx+tT3AS3pcKjMLFTCJFUWsKv8hC+87Z1F4W3r68qTwDFZIFmd5Xkw==}
-+ dev: false
-+
-+ /@next/eslint-plugin-next/13.1.1:
-+ resolution: {integrity: sha512-SBrOFS8PC3nQ5aeZmawJkjKkWjwK9RoxvBSv/86nZp0ubdoVQoko8r8htALd9ufp16NhacCdqhu9bzZLDWtALQ==}
-+ dependencies:
-+ glob: 7.1.7
-+ dev: false
-+
-+ /@next/font/13.1.1:
-+ resolution: {integrity: sha512-amygRorS05hYK1/XQRZo5qBl7l2fpHnezeKU/cNveWU5QJg+sg8gMGkUXHtvesNKpiKIJshBRH1TzvO+2sKpvQ==}
-+ dev: false
-+
-+ /@next/swc-android-arm-eabi/13.1.1:
-+ resolution: {integrity: sha512-qnFCx1kT3JTWhWve4VkeWuZiyjG0b5T6J2iWuin74lORCupdrNukxkq9Pm+Z7PsatxuwVJMhjUoYz7H4cWzx2A==}
-+ engines: {node: '>= 10'}
-+ cpu: [arm]
-+ os: [android]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-android-arm64/13.1.1:
-+ resolution: {integrity: sha512-eCiZhTzjySubNqUnNkQCjU3Fh+ep3C6b5DCM5FKzsTH/3Gr/4Y7EiaPZKILbvnXmhWtKPIdcY6Zjx51t4VeTfA==}
-+ engines: {node: '>= 10'}
-+ cpu: [arm64]
-+ os: [android]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-darwin-arm64/13.1.1:
-+ resolution: {integrity: sha512-9zRJSSIwER5tu9ADDkPw5rIZ+Np44HTXpYMr0rkM656IvssowPxmhK0rTreC1gpUCYwFsRbxarUJnJsTWiutPg==}
-+ engines: {node: '>= 10'}
-+ cpu: [arm64]
-+ os: [darwin]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-darwin-x64/13.1.1:
-+ resolution: {integrity: sha512-qWr9qEn5nrnlhB0rtjSdR00RRZEtxg4EGvicIipqZWEyayPxhUu6NwKiG8wZiYZCLfJ5KWr66PGSNeDMGlNaiA==}
-+ engines: {node: '>= 10'}
-+ cpu: [x64]
-+ os: [darwin]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-freebsd-x64/13.1.1:
-+ resolution: {integrity: sha512-UwP4w/NcQ7V/VJEj3tGVszgb4pyUCt3lzJfUhjDMUmQbzG9LDvgiZgAGMYH6L21MoyAATJQPDGiAMWAPKsmumA==}
-+ engines: {node: '>= 10'}
-+ cpu: [x64]
-+ os: [freebsd]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-linux-arm-gnueabihf/13.1.1:
-+ resolution: {integrity: sha512-CnsxmKHco9sosBs1XcvCXP845Db+Wx1G0qouV5+Gr+HT/ZlDYEWKoHVDgnJXLVEQzq4FmHddBNGbXvgqM1Gfkg==}
-+ engines: {node: '>= 10'}
-+ cpu: [arm]
-+ os: [linux]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-linux-arm64-gnu/13.1.1:
-+ resolution: {integrity: sha512-JfDq1eri5Dif+VDpTkONRd083780nsMCOKoFG87wA0sa4xL8LGcXIBAkUGIC1uVy9SMsr2scA9CySLD/i+Oqiw==}
-+ engines: {node: '>= 10'}
-+ cpu: [arm64]
-+ os: [linux]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-linux-arm64-musl/13.1.1:
-+ resolution: {integrity: sha512-GA67ZbDq2AW0CY07zzGt07M5b5Yaq5qUpFIoW3UFfjOPgb0Sqf3DAW7GtFMK1sF4ROHsRDMGQ9rnT0VM2dVfKA==}
-+ engines: {node: '>= 10'}
-+ cpu: [arm64]
-+ os: [linux]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-linux-x64-gnu/13.1.1:
-+ resolution: {integrity: sha512-nnjuBrbzvqaOJaV+XgT8/+lmXrSCOt1YYZn/irbDb2fR2QprL6Q7WJNgwsZNxiLSfLdv+2RJGGegBx9sLBEzGA==}
-+ engines: {node: '>= 10'}
-+ cpu: [x64]
-+ os: [linux]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-linux-x64-musl/13.1.1:
-+ resolution: {integrity: sha512-CM9xnAQNIZ8zf/igbIT/i3xWbQZYaF397H+JroF5VMOCUleElaMdQLL5riJml8wUfPoN3dtfn2s4peSr3azz/g==}
-+ engines: {node: '>= 10'}
-+ cpu: [x64]
-+ os: [linux]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-win32-arm64-msvc/13.1.1:
-+ resolution: {integrity: sha512-pzUHOGrbgfGgPlOMx9xk3QdPJoRPU+om84hqVoe6u+E0RdwOG0Ho/2UxCgDqmvpUrMab1Deltlt6RqcXFpnigQ==}
-+ engines: {node: '>= 10'}
-+ cpu: [arm64]
-+ os: [win32]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-win32-ia32-msvc/13.1.1:
-+ resolution: {integrity: sha512-WeX8kVS46aobM9a7Xr/kEPcrTyiwJqQv/tbw6nhJ4fH9xNZ+cEcyPoQkwPo570dCOLz3Zo9S2q0E6lJ/EAUOBg==}
-+ engines: {node: '>= 10'}
-+ cpu: [ia32]
-+ os: [win32]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@next/swc-win32-x64-msvc/13.1.1:
-+ resolution: {integrity: sha512-mVF0/3/5QAc5EGVnb8ll31nNvf3BWpPY4pBb84tk+BfQglWLqc5AC9q1Ht/YMWiEgs8ALNKEQ3GQnbY0bJF2Gg==}
-+ engines: {node: '>= 10'}
-+ cpu: [x64]
-+ os: [win32]
-+ requiresBuild: true
-+ dev: false
-+ optional: true
-+
-+ /@nodelib/fs.scandir/2.1.5:
-+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
-+ engines: {node: '>= 8'}
-+ dependencies:
-+ '@nodelib/fs.stat': 2.0.5
-+ run-parallel: 1.2.0
-+ dev: false
-+
-+ /@nodelib/fs.stat/2.0.5:
-+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
-+ engines: {node: '>= 8'}
-+ dev: false
-+
-+ /@nodelib/fs.walk/1.2.8:
-+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
-+ engines: {node: '>= 8'}
-+ dependencies:
-+ '@nodelib/fs.scandir': 2.1.5
-+ fastq: 1.14.0
-+ dev: false
-+
-+ /@pkgr/utils/2.3.1:
-+ resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==}
-+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
-+ dependencies:
-+ cross-spawn: 7.0.3
-+ is-glob: 4.0.3
-+ open: 8.4.0
-+ picocolors: 1.0.0
-+ tiny-glob: 0.2.9
-+ tslib: 2.4.1
-+ dev: false
-+
-+ /@rushstack/eslint-patch/1.2.0:
-+ resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==}
-+ dev: false
-+
-+ /@swc/helpers/0.4.14:
-+ resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
-+ dependencies:
-+ tslib: 2.4.1
-+ dev: false
-+
-+ /@types/json5/0.0.29:
-+ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
-+ dev: false
-+
-+ /@types/node/18.11.18:
-+ resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==}
-+ dev: false
-+
-+ /@types/prop-types/15.7.5:
-+ resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
-+ dev: false
-+
-+ /@types/react-dom/18.0.10:
-+ resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==}
-+ dependencies:
-+ '@types/react': 18.0.26
-+ dev: false
-+
-+ /@types/react/18.0.26:
-+ resolution: {integrity: sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==}
-+ dependencies:
-+ '@types/prop-types': 15.7.5
-+ '@types/scheduler': 0.16.2
-+ csstype: 3.1.1
-+ dev: false
-+
-+ /@types/scheduler/0.16.2:
-+ resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
-+ dev: false
-+
-+ /@typescript-eslint/parser/5.47.1_iukboom6ndih5an6iafl45j2fe:
-+ resolution: {integrity: sha512-9Vb+KIv29r6GPu4EboWOnQM7T+UjpjXvjCPhNORlgm40a9Ia9bvaPJswvtae1gip2QEeVeGh6YquqAzEgoRAlw==}
-+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-+ peerDependencies:
-+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
-+ typescript: '*'
-+ peerDependenciesMeta:
-+ typescript:
-+ optional: true
-+ dependencies:
-+ '@typescript-eslint/scope-manager': 5.47.1
-+ '@typescript-eslint/types': 5.47.1
-+ '@typescript-eslint/typescript-estree': 5.47.1_typescript@4.9.4
-+ debug: 4.3.4
-+ eslint: 8.31.0
-+ typescript: 4.9.4
-+ transitivePeerDependencies:
-+ - supports-color
-+ dev: false
-+
-+ /@typescript-eslint/scope-manager/5.47.1:
-+ resolution: {integrity: sha512-9hsFDsgUwrdOoW1D97Ewog7DYSHaq4WKuNs0LHF9RiCmqB0Z+XRR4Pf7u7u9z/8CciHuJ6yxNws1XznI3ddjEw==}
-+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-+ dependencies:
-+ '@typescript-eslint/types': 5.47.1
-+ '@typescript-eslint/visitor-keys': 5.47.1
-+ dev: false
-+
-+ /@typescript-eslint/types/5.47.1:
-+ resolution: {integrity: sha512-CmALY9YWXEpwuu6377ybJBZdtSAnzXLSQcxLSqSQSbC7VfpMu/HLVdrnVJj7ycI138EHqocW02LPJErE35cE9A==}
-+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-+ dev: false
-+
-+ /@typescript-eslint/typescript-estree/5.47.1_typescript@4.9.4:
-+ resolution: {integrity: sha512-4+ZhFSuISAvRi2xUszEj0xXbNTHceV9GbH9S8oAD2a/F9SW57aJNQVOCxG8GPfSWH/X4eOPdMEU2jYVuWKEpWA==}
-+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-+ peerDependencies:
-+ typescript: '*'
-+ peerDependenciesMeta:
-+ typescript:
-+ optional: true
-+ dependencies:
-+ '@typescript-eslint/types': 5.47.1
-+ '@typescript-eslint/visitor-keys': 5.47.1
-+ debug: 4.3.4
-+ globby: 11.1.0
-+ is-glob: 4.0.3
-+ semver: 7.3.8
-+ tsutils: 3.21.0_typescript@4.9.4
-+ typescript: 4.9.4
-+ transitivePeerDependencies:
-+ - supports-color
-+ dev: false
-+
-+ /@typescript-eslint/visitor-keys/5.47.1:
-+ resolution: {integrity: sha512-rF3pmut2JCCjh6BLRhNKdYjULMb1brvoaiWDlHfLNVgmnZ0sBVJrs3SyaKE1XoDDnJuAx/hDQryHYmPUuNq0ig==}
-+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-+ dependencies:
-+ '@typescript-eslint/types': 5.47.1
-+ eslint-visitor-keys: 3.3.0
-+ dev: false
-+
-+ /acorn-jsx/5.3.2_acorn@8.8.1:
-+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
-+ peerDependencies:
-+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-+ dependencies:
-+ acorn: 8.8.1
-+ dev: false
-+
-+ /acorn/8.8.1:
-+ resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==}
-+ engines: {node: '>=0.4.0'}
-+ hasBin: true
-+ dev: false
-+
-+ /ajv/6.12.6:
-+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
-+ dependencies:
-+ fast-deep-equal: 3.1.3
-+ fast-json-stable-stringify: 2.1.0
-+ json-schema-traverse: 0.4.1
-+ uri-js: 4.4.1
-+ dev: false
-+
-+ /ansi-regex/5.0.1:
-+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /ansi-styles/4.3.0:
-+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
-+ engines: {node: '>=8'}
-+ dependencies:
-+ color-convert: 2.0.1
-+ dev: false
-+
-+ /argparse/2.0.1:
-+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-+ dev: false
-+
-+ /aria-query/4.2.2:
-+ resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==}
-+ engines: {node: '>=6.0'}
-+ dependencies:
-+ '@babel/runtime': 7.20.7
-+ '@babel/runtime-corejs3': 7.20.7
-+ dev: false
-+
-+ /array-includes/3.1.6:
-+ resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ get-intrinsic: 1.1.3
-+ is-string: 1.0.7
-+ dev: false
-+
-+ /array-union/2.1.0:
-+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /array.prototype.flat/1.3.1:
-+ resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ es-shim-unscopables: 1.0.0
-+ dev: false
-+
-+ /array.prototype.flatmap/1.3.1:
-+ resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ es-shim-unscopables: 1.0.0
-+ dev: false
-+
-+ /array.prototype.tosorted/1.1.1:
-+ resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ es-shim-unscopables: 1.0.0
-+ get-intrinsic: 1.1.3
-+ dev: false
-+
-+ /ast-types-flow/0.0.7:
-+ resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==}
-+ dev: false
-+
-+ /axe-core/4.6.1:
-+ resolution: {integrity: sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w==}
-+ engines: {node: '>=4'}
-+ dev: false
-+
-+ /axobject-query/2.2.0:
-+ resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==}
-+ dev: false
-+
-+ /balanced-match/1.0.2:
-+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-+ dev: false
-+
-+ /brace-expansion/1.1.11:
-+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
-+ dependencies:
-+ balanced-match: 1.0.2
-+ concat-map: 0.0.1
-+ dev: false
-+
-+ /braces/3.0.2:
-+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
-+ engines: {node: '>=8'}
-+ dependencies:
-+ fill-range: 7.0.1
-+ dev: false
-+
-+ /call-bind/1.0.2:
-+ resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
-+ dependencies:
-+ function-bind: 1.1.1
-+ get-intrinsic: 1.1.3
-+ dev: false
-+
-+ /callsites/3.1.0:
-+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
-+ engines: {node: '>=6'}
-+ dev: false
-+
-+ /caniuse-lite/1.0.30001441:
-+ resolution: {integrity: sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==}
-+ dev: false
-+
-+ /chalk/4.1.2:
-+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
-+ engines: {node: '>=10'}
-+ dependencies:
-+ ansi-styles: 4.3.0
-+ supports-color: 7.2.0
-+ dev: false
-+
-+ /client-only/0.0.1:
-+ resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
-+ dev: false
-+
-+ /color-convert/2.0.1:
-+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
-+ engines: {node: '>=7.0.0'}
-+ dependencies:
-+ color-name: 1.1.4
-+ dev: false
-+
-+ /color-name/1.1.4:
-+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-+ dev: false
-+
-+ /concat-map/0.0.1:
-+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-+ dev: false
-+
-+ /core-js-pure/3.27.1:
-+ resolution: {integrity: sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw==}
-+ requiresBuild: true
-+ dev: false
-+
-+ /cross-spawn/7.0.3:
-+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
-+ engines: {node: '>= 8'}
-+ dependencies:
-+ path-key: 3.1.1
-+ shebang-command: 2.0.0
-+ which: 2.0.2
-+ dev: false
-+
-+ /csstype/3.1.1:
-+ resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==}
-+ dev: false
-+
-+ /damerau-levenshtein/1.0.8:
-+ resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
-+ dev: false
-+
-+ /debug/2.6.9:
-+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
-+ peerDependencies:
-+ supports-color: '*'
-+ peerDependenciesMeta:
-+ supports-color:
-+ optional: true
-+ dependencies:
-+ ms: 2.0.0
-+ dev: false
-+
-+ /debug/3.2.7:
-+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
-+ peerDependencies:
-+ supports-color: '*'
-+ peerDependenciesMeta:
-+ supports-color:
-+ optional: true
-+ dependencies:
-+ ms: 2.1.3
-+ dev: false
-+
-+ /debug/4.3.4:
-+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
-+ engines: {node: '>=6.0'}
-+ peerDependencies:
-+ supports-color: '*'
-+ peerDependenciesMeta:
-+ supports-color:
-+ optional: true
-+ dependencies:
-+ ms: 2.1.2
-+ dev: false
-+
-+ /deep-is/0.1.4:
-+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
-+ dev: false
-+
-+ /define-lazy-prop/2.0.0:
-+ resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /define-properties/1.1.4:
-+ resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ has-property-descriptors: 1.0.0
-+ object-keys: 1.1.1
-+ dev: false
-+
-+ /dir-glob/3.0.1:
-+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
-+ engines: {node: '>=8'}
-+ dependencies:
-+ path-type: 4.0.0
-+ dev: false
-+
-+ /doctrine/2.1.0:
-+ resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
-+ engines: {node: '>=0.10.0'}
-+ dependencies:
-+ esutils: 2.0.3
-+ dev: false
-+
-+ /doctrine/3.0.0:
-+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
-+ engines: {node: '>=6.0.0'}
-+ dependencies:
-+ esutils: 2.0.3
-+ dev: false
-+
-+ /emoji-regex/9.2.2:
-+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
-+ dev: false
-+
-+ /enhanced-resolve/5.12.0:
-+ resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==}
-+ engines: {node: '>=10.13.0'}
-+ dependencies:
-+ graceful-fs: 4.2.10
-+ tapable: 2.2.1
-+ dev: false
-+
-+ /es-abstract/1.20.5:
-+ resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ es-to-primitive: 1.2.1
-+ function-bind: 1.1.1
-+ function.prototype.name: 1.1.5
-+ get-intrinsic: 1.1.3
-+ get-symbol-description: 1.0.0
-+ gopd: 1.0.1
-+ has: 1.0.3
-+ has-property-descriptors: 1.0.0
-+ has-symbols: 1.0.3
-+ internal-slot: 1.0.4
-+ is-callable: 1.2.7
-+ is-negative-zero: 2.0.2
-+ is-regex: 1.1.4
-+ is-shared-array-buffer: 1.0.2
-+ is-string: 1.0.7
-+ is-weakref: 1.0.2
-+ object-inspect: 1.12.2
-+ object-keys: 1.1.1
-+ object.assign: 4.1.4
-+ regexp.prototype.flags: 1.4.3
-+ safe-regex-test: 1.0.0
-+ string.prototype.trimend: 1.0.6
-+ string.prototype.trimstart: 1.0.6
-+ unbox-primitive: 1.0.2
-+ dev: false
-+
-+ /es-shim-unscopables/1.0.0:
-+ resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
-+ dependencies:
-+ has: 1.0.3
-+ dev: false
-+
-+ /es-to-primitive/1.2.1:
-+ resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ is-callable: 1.2.7
-+ is-date-object: 1.0.5
-+ is-symbol: 1.0.4
-+ dev: false
-+
-+ /escape-string-regexp/4.0.0:
-+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
-+ engines: {node: '>=10'}
-+ dev: false
-+
-+ /eslint-config-next/13.1.1_iukboom6ndih5an6iafl45j2fe:
-+ resolution: {integrity: sha512-/5S2XGWlGaiqrRhzpn51ux5JUSLwx8PVK2keLi5xk7QmhfYB8PqE6R6SlVw6hgnf/VexvUXSrlNJ/su00NhtHQ==}
-+ peerDependencies:
-+ eslint: ^7.23.0 || ^8.0.0
-+ typescript: '>=3.3.1'
-+ peerDependenciesMeta:
-+ typescript:
-+ optional: true
-+ dependencies:
-+ '@next/eslint-plugin-next': 13.1.1
-+ '@rushstack/eslint-patch': 1.2.0
-+ '@typescript-eslint/parser': 5.47.1_iukboom6ndih5an6iafl45j2fe
-+ eslint: 8.31.0
-+ eslint-import-resolver-node: 0.3.6
-+ eslint-import-resolver-typescript: 3.5.2_ol7jqilc3wemtdbq3nzhywgxq4
-+ eslint-plugin-import: 2.26.0_bpx4furzt4ibermwbsj75osuwi
-+ eslint-plugin-jsx-a11y: 6.6.1_eslint@8.31.0
-+ eslint-plugin-react: 7.31.11_eslint@8.31.0
-+ eslint-plugin-react-hooks: 4.6.0_eslint@8.31.0
-+ typescript: 4.9.4
-+ transitivePeerDependencies:
-+ - eslint-import-resolver-webpack
-+ - supports-color
-+ dev: false
-+
-+ /eslint-import-resolver-node/0.3.6:
-+ resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==}
-+ dependencies:
-+ debug: 3.2.7
-+ resolve: 1.22.1
-+ transitivePeerDependencies:
-+ - supports-color
-+ dev: false
-+
-+ /eslint-import-resolver-typescript/3.5.2_ol7jqilc3wemtdbq3nzhywgxq4:
-+ resolution: {integrity: sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==}
-+ engines: {node: ^14.18.0 || >=16.0.0}
-+ peerDependencies:
-+ eslint: '*'
-+ eslint-plugin-import: '*'
-+ dependencies:
-+ debug: 4.3.4
-+ enhanced-resolve: 5.12.0
-+ eslint: 8.31.0
-+ eslint-plugin-import: 2.26.0_bpx4furzt4ibermwbsj75osuwi
-+ get-tsconfig: 4.2.0
-+ globby: 13.1.3
-+ is-core-module: 2.11.0
-+ is-glob: 4.0.3
-+ synckit: 0.8.4
-+ transitivePeerDependencies:
-+ - supports-color
-+ dev: false
-+
-+ /eslint-module-utils/2.7.4_of6uaipqaoaobv57tu2gvxhnhu:
-+ resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
-+ engines: {node: '>=4'}
-+ peerDependencies:
-+ '@typescript-eslint/parser': '*'
-+ eslint: '*'
-+ eslint-import-resolver-node: '*'
-+ eslint-import-resolver-typescript: '*'
-+ eslint-import-resolver-webpack: '*'
-+ peerDependenciesMeta:
-+ '@typescript-eslint/parser':
-+ optional: true
-+ eslint:
-+ optional: true
-+ eslint-import-resolver-node:
-+ optional: true
-+ eslint-import-resolver-typescript:
-+ optional: true
-+ eslint-import-resolver-webpack:
-+ optional: true
-+ dependencies:
-+ '@typescript-eslint/parser': 5.47.1_iukboom6ndih5an6iafl45j2fe
-+ debug: 3.2.7
-+ eslint: 8.31.0
-+ eslint-import-resolver-node: 0.3.6
-+ eslint-import-resolver-typescript: 3.5.2_ol7jqilc3wemtdbq3nzhywgxq4
-+ transitivePeerDependencies:
-+ - supports-color
-+ dev: false
-+
-+ /eslint-plugin-import/2.26.0_bpx4furzt4ibermwbsj75osuwi:
-+ resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==}
-+ engines: {node: '>=4'}
-+ peerDependencies:
-+ '@typescript-eslint/parser': '*'
-+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
-+ peerDependenciesMeta:
-+ '@typescript-eslint/parser':
-+ optional: true
-+ dependencies:
-+ '@typescript-eslint/parser': 5.47.1_iukboom6ndih5an6iafl45j2fe
-+ array-includes: 3.1.6
-+ array.prototype.flat: 1.3.1
-+ debug: 2.6.9
-+ doctrine: 2.1.0
-+ eslint: 8.31.0
-+ eslint-import-resolver-node: 0.3.6
-+ eslint-module-utils: 2.7.4_of6uaipqaoaobv57tu2gvxhnhu
-+ has: 1.0.3
-+ is-core-module: 2.11.0
-+ is-glob: 4.0.3
-+ minimatch: 3.1.2
-+ object.values: 1.1.6
-+ resolve: 1.22.1
-+ tsconfig-paths: 3.14.1
-+ transitivePeerDependencies:
-+ - eslint-import-resolver-typescript
-+ - eslint-import-resolver-webpack
-+ - supports-color
-+ dev: false
-+
-+ /eslint-plugin-jsx-a11y/6.6.1_eslint@8.31.0:
-+ resolution: {integrity: sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==}
-+ engines: {node: '>=4.0'}
-+ peerDependencies:
-+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
-+ dependencies:
-+ '@babel/runtime': 7.20.7
-+ aria-query: 4.2.2
-+ array-includes: 3.1.6
-+ ast-types-flow: 0.0.7
-+ axe-core: 4.6.1
-+ axobject-query: 2.2.0
-+ damerau-levenshtein: 1.0.8
-+ emoji-regex: 9.2.2
-+ eslint: 8.31.0
-+ has: 1.0.3
-+ jsx-ast-utils: 3.3.3
-+ language-tags: 1.0.7
-+ minimatch: 3.1.2
-+ semver: 6.3.0
-+ dev: false
-+
-+ /eslint-plugin-react-hooks/4.6.0_eslint@8.31.0:
-+ resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
-+ engines: {node: '>=10'}
-+ peerDependencies:
-+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
-+ dependencies:
-+ eslint: 8.31.0
-+ dev: false
-+
-+ /eslint-plugin-react/7.31.11_eslint@8.31.0:
-+ resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==}
-+ engines: {node: '>=4'}
-+ peerDependencies:
-+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
-+ dependencies:
-+ array-includes: 3.1.6
-+ array.prototype.flatmap: 1.3.1
-+ array.prototype.tosorted: 1.1.1
-+ doctrine: 2.1.0
-+ eslint: 8.31.0
-+ estraverse: 5.3.0
-+ jsx-ast-utils: 3.3.3
-+ minimatch: 3.1.2
-+ object.entries: 1.1.6
-+ object.fromentries: 2.0.6
-+ object.hasown: 1.1.2
-+ object.values: 1.1.6
-+ prop-types: 15.8.1
-+ resolve: 2.0.0-next.4
-+ semver: 6.3.0
-+ string.prototype.matchall: 4.0.8
-+ dev: false
-+
-+ /eslint-scope/7.1.1:
-+ resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==}
-+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-+ dependencies:
-+ esrecurse: 4.3.0
-+ estraverse: 5.3.0
-+ dev: false
-+
-+ /eslint-utils/3.0.0_eslint@8.31.0:
-+ resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
-+ engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
-+ peerDependencies:
-+ eslint: '>=5'
-+ dependencies:
-+ eslint: 8.31.0
-+ eslint-visitor-keys: 2.1.0
-+ dev: false
-+
-+ /eslint-visitor-keys/2.1.0:
-+ resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
-+ engines: {node: '>=10'}
-+ dev: false
-+
-+ /eslint-visitor-keys/3.3.0:
-+ resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==}
-+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-+ dev: false
-+
-+ /eslint/8.31.0:
-+ resolution: {integrity: sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==}
-+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-+ hasBin: true
-+ dependencies:
-+ '@eslint/eslintrc': 1.4.1
-+ '@humanwhocodes/config-array': 0.11.8
-+ '@humanwhocodes/module-importer': 1.0.1
-+ '@nodelib/fs.walk': 1.2.8
-+ ajv: 6.12.6
-+ chalk: 4.1.2
-+ cross-spawn: 7.0.3
-+ debug: 4.3.4
-+ doctrine: 3.0.0
-+ escape-string-regexp: 4.0.0
-+ eslint-scope: 7.1.1
-+ eslint-utils: 3.0.0_eslint@8.31.0
-+ eslint-visitor-keys: 3.3.0
-+ espree: 9.4.1
-+ esquery: 1.4.0
-+ esutils: 2.0.3
-+ fast-deep-equal: 3.1.3
-+ file-entry-cache: 6.0.1
-+ find-up: 5.0.0
-+ glob-parent: 6.0.2
-+ globals: 13.19.0
-+ grapheme-splitter: 1.0.4
-+ ignore: 5.2.4
-+ import-fresh: 3.3.0
-+ imurmurhash: 0.1.4
-+ is-glob: 4.0.3
-+ is-path-inside: 3.0.3
-+ js-sdsl: 4.2.0
-+ js-yaml: 4.1.0
-+ json-stable-stringify-without-jsonify: 1.0.1
-+ levn: 0.4.1
-+ lodash.merge: 4.6.2
-+ minimatch: 3.1.2
-+ natural-compare: 1.4.0
-+ optionator: 0.9.1
-+ regexpp: 3.2.0
-+ strip-ansi: 6.0.1
-+ strip-json-comments: 3.1.1
-+ text-table: 0.2.0
-+ transitivePeerDependencies:
-+ - supports-color
-+ dev: false
-+
-+ /espree/9.4.1:
-+ resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==}
-+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-+ dependencies:
-+ acorn: 8.8.1
-+ acorn-jsx: 5.3.2_acorn@8.8.1
-+ eslint-visitor-keys: 3.3.0
-+ dev: false
-+
-+ /esquery/1.4.0:
-+ resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
-+ engines: {node: '>=0.10'}
-+ dependencies:
-+ estraverse: 5.3.0
-+ dev: false
-+
-+ /esrecurse/4.3.0:
-+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
-+ engines: {node: '>=4.0'}
-+ dependencies:
-+ estraverse: 5.3.0
-+ dev: false
-+
-+ /estraverse/5.3.0:
-+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
-+ engines: {node: '>=4.0'}
-+ dev: false
-+
-+ /esutils/2.0.3:
-+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
-+ engines: {node: '>=0.10.0'}
-+ dev: false
-+
-+ /fast-deep-equal/3.1.3:
-+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
-+ dev: false
-+
-+ /fast-glob/3.2.12:
-+ resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
-+ engines: {node: '>=8.6.0'}
-+ dependencies:
-+ '@nodelib/fs.stat': 2.0.5
-+ '@nodelib/fs.walk': 1.2.8
-+ glob-parent: 5.1.2
-+ merge2: 1.4.1
-+ micromatch: 4.0.5
-+ dev: false
-+
-+ /fast-json-stable-stringify/2.1.0:
-+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
-+ dev: false
-+
-+ /fast-levenshtein/2.0.6:
-+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
-+ dev: false
-+
-+ /fastq/1.14.0:
-+ resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==}
-+ dependencies:
-+ reusify: 1.0.4
-+ dev: false
-+
-+ /file-entry-cache/6.0.1:
-+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
-+ engines: {node: ^10.12.0 || >=12.0.0}
-+ dependencies:
-+ flat-cache: 3.0.4
-+ dev: false
-+
-+ /fill-range/7.0.1:
-+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
-+ engines: {node: '>=8'}
-+ dependencies:
-+ to-regex-range: 5.0.1
-+ dev: false
-+
-+ /find-up/5.0.0:
-+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
-+ engines: {node: '>=10'}
-+ dependencies:
-+ locate-path: 6.0.0
-+ path-exists: 4.0.0
-+ dev: false
-+
-+ /flat-cache/3.0.4:
-+ resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
-+ engines: {node: ^10.12.0 || >=12.0.0}
-+ dependencies:
-+ flatted: 3.2.7
-+ rimraf: 3.0.2
-+ dev: false
-+
-+ /flatted/3.2.7:
-+ resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
-+ dev: false
-+
-+ /fs.realpath/1.0.0:
-+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
-+ dev: false
-+
-+ /function-bind/1.1.1:
-+ resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
-+ dev: false
-+
-+ /function.prototype.name/1.1.5:
-+ resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ functions-have-names: 1.2.3
-+ dev: false
-+
-+ /functions-have-names/1.2.3:
-+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
-+ dev: false
-+
-+ /get-intrinsic/1.1.3:
-+ resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==}
-+ dependencies:
-+ function-bind: 1.1.1
-+ has: 1.0.3
-+ has-symbols: 1.0.3
-+ dev: false
-+
-+ /get-symbol-description/1.0.0:
-+ resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ get-intrinsic: 1.1.3
-+ dev: false
-+
-+ /get-tsconfig/4.2.0:
-+ resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==}
-+ dev: false
-+
-+ /glob-parent/5.1.2:
-+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
-+ engines: {node: '>= 6'}
-+ dependencies:
-+ is-glob: 4.0.3
-+ dev: false
-+
-+ /glob-parent/6.0.2:
-+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
-+ engines: {node: '>=10.13.0'}
-+ dependencies:
-+ is-glob: 4.0.3
-+ dev: false
-+
-+ /glob/7.1.7:
-+ resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
-+ dependencies:
-+ fs.realpath: 1.0.0
-+ inflight: 1.0.6
-+ inherits: 2.0.4
-+ minimatch: 3.1.2
-+ once: 1.4.0
-+ path-is-absolute: 1.0.1
-+ dev: false
-+
-+ /glob/7.2.3:
-+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
-+ dependencies:
-+ fs.realpath: 1.0.0
-+ inflight: 1.0.6
-+ inherits: 2.0.4
-+ minimatch: 3.1.2
-+ once: 1.4.0
-+ path-is-absolute: 1.0.1
-+ dev: false
-+
-+ /globals/13.19.0:
-+ resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==}
-+ engines: {node: '>=8'}
-+ dependencies:
-+ type-fest: 0.20.2
-+ dev: false
-+
-+ /globalyzer/0.1.0:
-+ resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
-+ dev: false
-+
-+ /globby/11.1.0:
-+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
-+ engines: {node: '>=10'}
-+ dependencies:
-+ array-union: 2.1.0
-+ dir-glob: 3.0.1
-+ fast-glob: 3.2.12
-+ ignore: 5.2.4
-+ merge2: 1.4.1
-+ slash: 3.0.0
-+ dev: false
-+
-+ /globby/13.1.3:
-+ resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==}
-+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-+ dependencies:
-+ dir-glob: 3.0.1
-+ fast-glob: 3.2.12
-+ ignore: 5.2.4
-+ merge2: 1.4.1
-+ slash: 4.0.0
-+ dev: false
-+
-+ /globrex/0.1.2:
-+ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
-+ dev: false
-+
-+ /gopd/1.0.1:
-+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
-+ dependencies:
-+ get-intrinsic: 1.1.3
-+ dev: false
-+
-+ /graceful-fs/4.2.10:
-+ resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
-+ dev: false
-+
-+ /grapheme-splitter/1.0.4:
-+ resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
-+ dev: false
-+
-+ /has-bigints/1.0.2:
-+ resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
-+ dev: false
-+
-+ /has-flag/4.0.0:
-+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /has-property-descriptors/1.0.0:
-+ resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
-+ dependencies:
-+ get-intrinsic: 1.1.3
-+ dev: false
-+
-+ /has-symbols/1.0.3:
-+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
-+ engines: {node: '>= 0.4'}
-+ dev: false
-+
-+ /has-tostringtag/1.0.0:
-+ resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ has-symbols: 1.0.3
-+ dev: false
-+
-+ /has/1.0.3:
-+ resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
-+ engines: {node: '>= 0.4.0'}
-+ dependencies:
-+ function-bind: 1.1.1
-+ dev: false
-+
-+ /ignore/5.2.4:
-+ resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
-+ engines: {node: '>= 4'}
-+ dev: false
-+
-+ /import-fresh/3.3.0:
-+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
-+ engines: {node: '>=6'}
-+ dependencies:
-+ parent-module: 1.0.1
-+ resolve-from: 4.0.0
-+ dev: false
-+
-+ /imurmurhash/0.1.4:
-+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
-+ engines: {node: '>=0.8.19'}
-+ dev: false
-+
-+ /inflight/1.0.6:
-+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
-+ dependencies:
-+ once: 1.4.0
-+ wrappy: 1.0.2
-+ dev: false
-+
-+ /inherits/2.0.4:
-+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-+ dev: false
-+
-+ /internal-slot/1.0.4:
-+ resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ get-intrinsic: 1.1.3
-+ has: 1.0.3
-+ side-channel: 1.0.4
-+ dev: false
-+
-+ /is-bigint/1.0.4:
-+ resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
-+ dependencies:
-+ has-bigints: 1.0.2
-+ dev: false
-+
-+ /is-boolean-object/1.1.2:
-+ resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ has-tostringtag: 1.0.0
-+ dev: false
-+
-+ /is-callable/1.2.7:
-+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
-+ engines: {node: '>= 0.4'}
-+ dev: false
-+
-+ /is-core-module/2.11.0:
-+ resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
-+ dependencies:
-+ has: 1.0.3
-+ dev: false
-+
-+ /is-date-object/1.0.5:
-+ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ has-tostringtag: 1.0.0
-+ dev: false
-+
-+ /is-docker/2.2.1:
-+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
-+ engines: {node: '>=8'}
-+ hasBin: true
-+ dev: false
-+
-+ /is-extglob/2.1.1:
-+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
-+ engines: {node: '>=0.10.0'}
-+ dev: false
-+
-+ /is-glob/4.0.3:
-+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
-+ engines: {node: '>=0.10.0'}
-+ dependencies:
-+ is-extglob: 2.1.1
-+ dev: false
-+
-+ /is-negative-zero/2.0.2:
-+ resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
-+ engines: {node: '>= 0.4'}
-+ dev: false
-+
-+ /is-number-object/1.0.7:
-+ resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ has-tostringtag: 1.0.0
-+ dev: false
-+
-+ /is-number/7.0.0:
-+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
-+ engines: {node: '>=0.12.0'}
-+ dev: false
-+
-+ /is-path-inside/3.0.3:
-+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /is-regex/1.1.4:
-+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ has-tostringtag: 1.0.0
-+ dev: false
-+
-+ /is-shared-array-buffer/1.0.2:
-+ resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
-+ dependencies:
-+ call-bind: 1.0.2
-+ dev: false
-+
-+ /is-string/1.0.7:
-+ resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ has-tostringtag: 1.0.0
-+ dev: false
-+
-+ /is-symbol/1.0.4:
-+ resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ has-symbols: 1.0.3
-+ dev: false
-+
-+ /is-weakref/1.0.2:
-+ resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
-+ dependencies:
-+ call-bind: 1.0.2
-+ dev: false
-+
-+ /is-wsl/2.2.0:
-+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
-+ engines: {node: '>=8'}
-+ dependencies:
-+ is-docker: 2.2.1
-+ dev: false
-+
-+ /isexe/2.0.0:
-+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-+ dev: false
-+
-+ /js-sdsl/4.2.0:
-+ resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==}
-+ dev: false
-+
-+ /js-tokens/4.0.0:
-+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-+ dev: false
-+
-+ /js-yaml/4.1.0:
-+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
-+ hasBin: true
-+ dependencies:
-+ argparse: 2.0.1
-+ dev: false
-+
-+ /json-schema-traverse/0.4.1:
-+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
-+ dev: false
-+
-+ /json-stable-stringify-without-jsonify/1.0.1:
-+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
-+ dev: false
-+
-+ /json5/1.0.2:
-+ resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
-+ hasBin: true
-+ dependencies:
-+ minimist: 1.2.7
-+ dev: false
-+
-+ /jsx-ast-utils/3.3.3:
-+ resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==}
-+ engines: {node: '>=4.0'}
-+ dependencies:
-+ array-includes: 3.1.6
-+ object.assign: 4.1.4
-+ dev: false
-+
-+ /language-subtag-registry/0.3.22:
-+ resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
-+ dev: false
-+
-+ /language-tags/1.0.7:
-+ resolution: {integrity: sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw==}
-+ dependencies:
-+ language-subtag-registry: 0.3.22
-+ dev: false
-+
-+ /levn/0.4.1:
-+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
-+ engines: {node: '>= 0.8.0'}
-+ dependencies:
-+ prelude-ls: 1.2.1
-+ type-check: 0.4.0
-+ dev: false
-+
-+ /locate-path/6.0.0:
-+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
-+ engines: {node: '>=10'}
-+ dependencies:
-+ p-locate: 5.0.0
-+ dev: false
-+
-+ /lodash.merge/4.6.2:
-+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
-+ dev: false
-+
-+ /loose-envify/1.4.0:
-+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
-+ hasBin: true
-+ dependencies:
-+ js-tokens: 4.0.0
-+ dev: false
-+
-+ /lru-cache/6.0.0:
-+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
-+ engines: {node: '>=10'}
-+ dependencies:
-+ yallist: 4.0.0
-+ dev: false
-+
-+ /merge2/1.4.1:
-+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
-+ engines: {node: '>= 8'}
-+ dev: false
-+
-+ /micromatch/4.0.5:
-+ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
-+ engines: {node: '>=8.6'}
-+ dependencies:
-+ braces: 3.0.2
-+ picomatch: 2.3.1
-+ dev: false
-+
-+ /minimatch/3.1.2:
-+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
-+ dependencies:
-+ brace-expansion: 1.1.11
-+ dev: false
-+
-+ /minimist/1.2.7:
-+ resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==}
-+ dev: false
-+
-+ /ms/2.0.0:
-+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
-+ dev: false
-+
-+ /ms/2.1.2:
-+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
-+ dev: false
-+
-+ /ms/2.1.3:
-+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-+ dev: false
-+
-+ /nanoid/3.3.4:
-+ resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
-+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
-+ hasBin: true
-+ dev: false
-+
-+ /natural-compare/1.4.0:
-+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
-+ dev: false
-+
-+ /next/13.1.1_biqbaboplfbrettd7655fr4n2y:
-+ resolution: {integrity: sha512-R5eBAaIa3X7LJeYvv1bMdGnAVF4fVToEjim7MkflceFPuANY3YyvFxXee/A+acrSYwYPvOvf7f6v/BM/48ea5w==}
-+ engines: {node: '>=14.6.0'}
-+ hasBin: true
-+ peerDependencies:
-+ fibers: '>= 3.1.0'
-+ node-sass: ^6.0.0 || ^7.0.0
-+ react: ^18.2.0
-+ react-dom: ^18.2.0
-+ sass: ^1.3.0
-+ peerDependenciesMeta:
-+ fibers:
-+ optional: true
-+ node-sass:
-+ optional: true
-+ sass:
-+ optional: true
-+ dependencies:
-+ '@next/env': 13.1.1
-+ '@swc/helpers': 0.4.14
-+ caniuse-lite: 1.0.30001441
-+ postcss: 8.4.14
-+ react: 18.2.0
-+ react-dom: 18.2.0_react@18.2.0
-+ styled-jsx: 5.1.1_react@18.2.0
-+ optionalDependencies:
-+ '@next/swc-android-arm-eabi': 13.1.1
-+ '@next/swc-android-arm64': 13.1.1
-+ '@next/swc-darwin-arm64': 13.1.1
-+ '@next/swc-darwin-x64': 13.1.1
-+ '@next/swc-freebsd-x64': 13.1.1
-+ '@next/swc-linux-arm-gnueabihf': 13.1.1
-+ '@next/swc-linux-arm64-gnu': 13.1.1
-+ '@next/swc-linux-arm64-musl': 13.1.1
-+ '@next/swc-linux-x64-gnu': 13.1.1
-+ '@next/swc-linux-x64-musl': 13.1.1
-+ '@next/swc-win32-arm64-msvc': 13.1.1
-+ '@next/swc-win32-ia32-msvc': 13.1.1
-+ '@next/swc-win32-x64-msvc': 13.1.1
-+ transitivePeerDependencies:
-+ - '@babel/core'
-+ - babel-plugin-macros
-+ dev: false
-+
-+ /object-assign/4.1.1:
-+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
-+ engines: {node: '>=0.10.0'}
-+ dev: false
-+
-+ /object-inspect/1.12.2:
-+ resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==}
-+ dev: false
-+
-+ /object-keys/1.1.1:
-+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
-+ engines: {node: '>= 0.4'}
-+ dev: false
-+
-+ /object.assign/4.1.4:
-+ resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ has-symbols: 1.0.3
-+ object-keys: 1.1.1
-+ dev: false
-+
-+ /object.entries/1.1.6:
-+ resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ dev: false
-+
-+ /object.fromentries/2.0.6:
-+ resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ dev: false
-+
-+ /object.hasown/1.1.2:
-+ resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==}
-+ dependencies:
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ dev: false
-+
-+ /object.values/1.1.6:
-+ resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ dev: false
-+
-+ /once/1.4.0:
-+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
-+ dependencies:
-+ wrappy: 1.0.2
-+ dev: false
-+
-+ /open/8.4.0:
-+ resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==}
-+ engines: {node: '>=12'}
-+ dependencies:
-+ define-lazy-prop: 2.0.0
-+ is-docker: 2.2.1
-+ is-wsl: 2.2.0
-+ dev: false
-+
-+ /optionator/0.9.1:
-+ resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
-+ engines: {node: '>= 0.8.0'}
-+ dependencies:
-+ deep-is: 0.1.4
-+ fast-levenshtein: 2.0.6
-+ levn: 0.4.1
-+ prelude-ls: 1.2.1
-+ type-check: 0.4.0
-+ word-wrap: 1.2.3
-+ dev: false
-+
-+ /p-limit/3.1.0:
-+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
-+ engines: {node: '>=10'}
-+ dependencies:
-+ yocto-queue: 0.1.0
-+ dev: false
-+
-+ /p-locate/5.0.0:
-+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
-+ engines: {node: '>=10'}
-+ dependencies:
-+ p-limit: 3.1.0
-+ dev: false
-+
-+ /parent-module/1.0.1:
-+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
-+ engines: {node: '>=6'}
-+ dependencies:
-+ callsites: 3.1.0
-+ dev: false
-+
-+ /path-exists/4.0.0:
-+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /path-is-absolute/1.0.1:
-+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
-+ engines: {node: '>=0.10.0'}
-+ dev: false
-+
-+ /path-key/3.1.1:
-+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /path-parse/1.0.7:
-+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
-+ dev: false
-+
-+ /path-type/4.0.0:
-+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /picocolors/1.0.0:
-+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
-+ dev: false
-+
-+ /picomatch/2.3.1:
-+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
-+ engines: {node: '>=8.6'}
-+ dev: false
-+
-+ /postcss/8.4.14:
-+ resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==}
-+ engines: {node: ^10 || ^12 || >=14}
-+ dependencies:
-+ nanoid: 3.3.4
-+ picocolors: 1.0.0
-+ source-map-js: 1.0.2
-+ dev: false
-+
-+ /prelude-ls/1.2.1:
-+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
-+ engines: {node: '>= 0.8.0'}
-+ dev: false
-+
-+ /prettier/2.8.1:
-+ resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==}
-+ engines: {node: '>=10.13.0'}
-+ hasBin: true
-+ dev: true
-+
-+ /prop-types/15.8.1:
-+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
-+ dependencies:
-+ loose-envify: 1.4.0
-+ object-assign: 4.1.1
-+ react-is: 16.13.1
-+ dev: false
-+
-+ /punycode/2.1.1:
-+ resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
-+ engines: {node: '>=6'}
-+ dev: false
-+
-+ /queue-microtask/1.2.3:
-+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-+ dev: false
-+
-+ /react-dom/18.2.0_react@18.2.0:
-+ resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
-+ peerDependencies:
-+ react: ^18.2.0
-+ dependencies:
-+ loose-envify: 1.4.0
-+ react: 18.2.0
-+ scheduler: 0.23.0
-+ dev: false
-+
-+ /react-is/16.13.1:
-+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
-+ dev: false
-+
-+ /react/18.2.0:
-+ resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
-+ engines: {node: '>=0.10.0'}
-+ dependencies:
-+ loose-envify: 1.4.0
-+ dev: false
-+
-+ /regenerator-runtime/0.13.11:
-+ resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
-+ dev: false
-+
-+ /regexp.prototype.flags/1.4.3:
-+ resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==}
-+ engines: {node: '>= 0.4'}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ functions-have-names: 1.2.3
-+ dev: false
-+
-+ /regexpp/3.2.0:
-+ resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /resolve-from/4.0.0:
-+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
-+ engines: {node: '>=4'}
-+ dev: false
-+
-+ /resolve/1.22.1:
-+ resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
-+ hasBin: true
-+ dependencies:
-+ is-core-module: 2.11.0
-+ path-parse: 1.0.7
-+ supports-preserve-symlinks-flag: 1.0.0
-+ dev: false
-+
-+ /resolve/2.0.0-next.4:
-+ resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
-+ hasBin: true
-+ dependencies:
-+ is-core-module: 2.11.0
-+ path-parse: 1.0.7
-+ supports-preserve-symlinks-flag: 1.0.0
-+ dev: false
-+
-+ /reusify/1.0.4:
-+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
-+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-+ dev: false
-+
-+ /rimraf/3.0.2:
-+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
-+ hasBin: true
-+ dependencies:
-+ glob: 7.2.3
-+ dev: false
-+
-+ /run-parallel/1.2.0:
-+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-+ dependencies:
-+ queue-microtask: 1.2.3
-+ dev: false
-+
-+ /safe-regex-test/1.0.0:
-+ resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
-+ dependencies:
-+ call-bind: 1.0.2
-+ get-intrinsic: 1.1.3
-+ is-regex: 1.1.4
-+ dev: false
-+
-+ /scheduler/0.23.0:
-+ resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
-+ dependencies:
-+ loose-envify: 1.4.0
-+ dev: false
-+
-+ /semver/6.3.0:
-+ resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
-+ hasBin: true
-+ dev: false
-+
-+ /semver/7.3.8:
-+ resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
-+ engines: {node: '>=10'}
-+ hasBin: true
-+ dependencies:
-+ lru-cache: 6.0.0
-+ dev: false
-+
-+ /shebang-command/2.0.0:
-+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
-+ engines: {node: '>=8'}
-+ dependencies:
-+ shebang-regex: 3.0.0
-+ dev: false
-+
-+ /shebang-regex/3.0.0:
-+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /side-channel/1.0.4:
-+ resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
-+ dependencies:
-+ call-bind: 1.0.2
-+ get-intrinsic: 1.1.3
-+ object-inspect: 1.12.2
-+ dev: false
-+
-+ /slash/3.0.0:
-+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /slash/4.0.0:
-+ resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
-+ engines: {node: '>=12'}
-+ dev: false
-+
-+ /source-map-js/1.0.2:
-+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
-+ engines: {node: '>=0.10.0'}
-+ dev: false
-+
-+ /string.prototype.matchall/4.0.8:
-+ resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ get-intrinsic: 1.1.3
-+ has-symbols: 1.0.3
-+ internal-slot: 1.0.4
-+ regexp.prototype.flags: 1.4.3
-+ side-channel: 1.0.4
-+ dev: false
-+
-+ /string.prototype.trimend/1.0.6:
-+ resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ dev: false
-+
-+ /string.prototype.trimstart/1.0.6:
-+ resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
-+ dependencies:
-+ call-bind: 1.0.2
-+ define-properties: 1.1.4
-+ es-abstract: 1.20.5
-+ dev: false
-+
-+ /strip-ansi/6.0.1:
-+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
-+ engines: {node: '>=8'}
-+ dependencies:
-+ ansi-regex: 5.0.1
-+ dev: false
-+
-+ /strip-bom/3.0.0:
-+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
-+ engines: {node: '>=4'}
-+ dev: false
-+
-+ /strip-json-comments/3.1.1:
-+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
-+ engines: {node: '>=8'}
-+ dev: false
-+
-+ /styled-jsx/5.1.1_react@18.2.0:
-+ resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
-+ engines: {node: '>= 12.0.0'}
-+ peerDependencies:
-+ '@babel/core': '*'
-+ babel-plugin-macros: '*'
-+ react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
-+ peerDependenciesMeta:
-+ '@babel/core':
-+ optional: true
-+ babel-plugin-macros:
-+ optional: true
-+ dependencies:
-+ client-only: 0.0.1
-+ react: 18.2.0
-+ dev: false
-+
-+ /supports-color/7.2.0:
-+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
-+ engines: {node: '>=8'}
-+ dependencies:
-+ has-flag: 4.0.0
-+ dev: false
-+
-+ /supports-preserve-symlinks-flag/1.0.0:
-+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
-+ engines: {node: '>= 0.4'}
-+ dev: false
-+
-+ /synckit/0.8.4:
-+ resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==}
-+ engines: {node: ^14.18.0 || >=16.0.0}
-+ dependencies:
-+ '@pkgr/utils': 2.3.1
-+ tslib: 2.4.1
-+ dev: false
-+
-+ /tapable/2.2.1:
-+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
-+ engines: {node: '>=6'}
-+ dev: false
-+
-+ /text-table/0.2.0:
-+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
-+ dev: false
-+
-+ /tiny-glob/0.2.9:
-+ resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
-+ dependencies:
-+ globalyzer: 0.1.0
-+ globrex: 0.1.2
-+ dev: false
-+
-+ /to-regex-range/5.0.1:
-+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
-+ engines: {node: '>=8.0'}
-+ dependencies:
-+ is-number: 7.0.0
-+ dev: false
-+
-+ /tsconfig-paths/3.14.1:
-+ resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==}
-+ dependencies:
-+ '@types/json5': 0.0.29
-+ json5: 1.0.2
-+ minimist: 1.2.7
-+ strip-bom: 3.0.0
-+ dev: false
-+
-+ /tslib/1.14.1:
-+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
-+ dev: false
-+
-+ /tslib/2.4.1:
-+ resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
-+ dev: false
-+
-+ /tsutils/3.21.0_typescript@4.9.4:
-+ resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
-+ engines: {node: '>= 6'}
-+ peerDependencies:
-+ typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
-+ dependencies:
-+ tslib: 1.14.1
-+ typescript: 4.9.4
-+ dev: false
-+
-+ /type-check/0.4.0:
-+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
-+ engines: {node: '>= 0.8.0'}
-+ dependencies:
-+ prelude-ls: 1.2.1
-+ dev: false
-+
-+ /type-fest/0.20.2:
-+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
-+ engines: {node: '>=10'}
-+ dev: false
-+
-+ /typescript/4.9.4:
-+ resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==}
-+ engines: {node: '>=4.2.0'}
-+ hasBin: true
-+ dev: false
-+
-+ /unbox-primitive/1.0.2:
-+ resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
-+ dependencies:
-+ call-bind: 1.0.2
-+ has-bigints: 1.0.2
-+ has-symbols: 1.0.3
-+ which-boxed-primitive: 1.0.2
-+ dev: false
-+
-+ /uri-js/4.4.1:
-+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-+ dependencies:
-+ punycode: 2.1.1
-+ dev: false
-+
-+ /which-boxed-primitive/1.0.2:
-+ resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
-+ dependencies:
-+ is-bigint: 1.0.4
-+ is-boolean-object: 1.1.2
-+ is-number-object: 1.0.7
-+ is-string: 1.0.7
-+ is-symbol: 1.0.4
-+ dev: false
-+
-+ /which/2.0.2:
-+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
-+ engines: {node: '>= 8'}
-+ hasBin: true
-+ dependencies:
-+ isexe: 2.0.0
-+ dev: false
-+
-+ /word-wrap/1.2.3:
-+ resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
-+ engines: {node: '>=0.10.0'}
-+ dev: false
-+
-+ /wrappy/1.0.2:
-+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
-+ dev: false
-+
-+ /yallist/4.0.0:
-+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
-+ dev: false
-+
-+ /yocto-queue/0.1.0:
-+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
-+ engines: {node: '>=10'}
-+ dev: false
-+
-+ file:../..:
-+ resolution: {directory: ../.., type: directory}
-+ name: '@toots/shine.js'
-+ version: 1.0.1
-+ dev: false
-diff --git a/js/test/nextjs/public/encode.wav b/js/test/nextjs/public/encode.wav
-new file mode 120000
-index 0000000..0f5f127
---- /dev/null
-+++ b/js/test/nextjs/public/encode.wav
-@@ -0,0 +1 @@
-+../lib/encode.wav
-\ No newline at end of file
-diff --git a/js/test/nextjs/tsconfig.json b/js/test/nextjs/tsconfig.json
-new file mode 100644
-index 0000000..66151f2
---- /dev/null
-+++ b/js/test/nextjs/tsconfig.json
-@@ -0,0 +1,23 @@
-+{
-+ "compilerOptions": {
-+ "target": "es5",
-+ "lib": ["dom", "dom.iterable", "esnext"],
-+ "allowJs": true,
-+ "skipLibCheck": true,
-+ "strict": true,
-+ "forceConsistentCasingInFileNames": true,
-+ "noEmit": true,
-+ "esModuleInterop": true,
-+ "module": "esnext",
-+ "moduleResolution": "node",
-+ "resolveJsonModule": true,
-+ "isolatedModules": true,
-+ "jsx": "preserve",
-+ "incremental": true,
-+ "paths": {
-+ "@shine/*": ["./*"]
-+ }
-+ },
-+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
-+ "exclude": ["node_modules"]
-+}
-diff --git a/js/test/node/encode.coffee b/js/test/node/encode.coffee
-deleted file mode 100644
-index 3e1ba72..0000000
---- a/js/test/node/encode.coffee
-+++ /dev/null
-@@ -1,58 +0,0 @@
--Shine = require "../../dist/libshine.js"
--{Reader} = require "wav"
--fs = require "fs"
--
--console.log ""
--console.log "Executing encoding test"
--
--bitrate = 128
--str = fs.createReadStream "../lib/encode.wav"
--fd = fs.openSync "./encode.mp3", "w"
--reader = new Reader
--
--str.pipe reader
--
--write = (encoded) ->
-- return unless encoded.length > 0
-- buf = new Buffer encoded
-- fs.writeSync fd, buf, 0, buf.length
--
--reader.on "format", (format) ->
-- console.log "Got WAV file."
--
-- shine = new Shine
-- bitrate: bitrate
-- samplerate: format.sampleRate
-- channels: format.channels
--
-- console.log "Encoding.."
-- started = new Date
-- duration = 0.0
-- samplerate = parseFloat format.sampleRate
--
-- reader.on "data", (buf) ->
-- samples = buf.length/(2*format.channels)
--
-- duration += parseFloat(samples) / samplerate
--
-- write shine.encode(convertInterleavedBuffer(buf, format.channels, samples))
--
-- reader.on "end", ->
-- write shine.close()
--
-- ended = new Date
-- encodingTime = (ended.getTime() - started.getTime())/1000
-- console.log "Done encoding."
-- console.log "File duration: #{duration.toFixed(2)} seconds"
-- console.log "Encoding time: #{encodingTime.toFixed(2)} seconds"
-- console.log "Encoding rate: #{(duration/encodingTime).toFixed(2)}X"
-- process.exit 0
--
--convertInterleavedBuffer = (buf, channels, samples) ->
-- ret = new Array channels
-- for chan in [0..channels-1]
-- ret[chan] = new Int16Array samples
-- for i in [0..samples-1]
-- ret[chan][i] = buf.readInt16LE 2*(i*channels + chan)
--
-- ret
-diff --git a/js/test/node/encode.ts b/js/test/node/encode.ts
-new file mode 100644
-index 0000000..cc971e1
---- /dev/null
-+++ b/js/test/node/encode.ts
-@@ -0,0 +1,73 @@
-+import { Shine } from "@toots/shine.js";
-+import { Reader } from "wav";
-+import fs from "fs";
-+
-+const convertInterleavedBuffer = (buf, channels, samples) => {
-+ const ret = new Array(channels);
-+ for (let chan = 0; chan < channels; chan++) {
-+ ret[chan] = new Int16Array(samples);
-+ for (let i = 0; i < samples; i++) {
-+ ret[chan][i] = buf.readInt16LE(2 * (i * channels + chan));
-+ }
-+ }
-+
-+ return ret;
-+};
-+
-+const exec = async () => {
-+ await Shine.initialized;
-+
-+ console.log("");
-+ console.log("Executing encoding test");
-+
-+ const bitrate = 128;
-+ const str = fs.createReadStream("../lib/encode.wav");
-+ const fd = fs.openSync("./encode.mp3", "w");
-+ const reader = new Reader();
-+
-+ str.pipe(reader);
-+
-+ const write = encoded => {
-+ if (encoded.length <= 0) return;
-+
-+ const buf = Buffer.from(encoded);
-+ fs.writeSync(fd, buf, 0, buf.length);
-+ };
-+
-+ reader.on("format", format => {
-+ console.log("Got WAV file.");
-+
-+ const shine = new Shine({
-+ bitrate: bitrate,
-+ samplerate: format.sampleRate,
-+ channels: format.channels,
-+ });
-+
-+ console.log("Encoding..");
-+ const started = new Date();
-+ let duration = 0.0;
-+ const samplerate = format.sampleRate;
-+
-+ reader.on("data", buf => {
-+ const samples = buf.length / (2 * format.channels);
-+
-+ duration += samples / samplerate;
-+
-+ write(shine.encode(convertInterleavedBuffer(buf, format.channels, samples)));
-+ });
-+
-+ reader.on("end", () => {
-+ write(shine.close());
-+
-+ const ended = new Date();
-+ const encodingTime = (ended.getTime() - started.getTime()) / 1000;
-+ console.log("Done encoding.");
-+ console.log(`File duration: ${duration.toFixed(2)} seconds`);
-+ console.log(`Encoding time: ${encodingTime.toFixed(2)} seconds`);
-+ console.log(`Encoding rate: ${(duration / encodingTime).toFixed(2)}X`);
-+ process.exit(0);
-+ });
-+ });
-+};
-+
-+exec();
-diff --git a/js/test/node/package-lock.json b/js/test/node/package-lock.json
-index 0096742..752a7c7 100644
---- a/js/test/node/package-lock.json
-+++ b/js/test/node/package-lock.json
-@@ -1,49 +1,493 @@
- {
- "name": "shine-js-test",
- "version": "0.0.1",
-- "lockfileVersion": 1,
-+ "lockfileVersion": 2,
- "requires": true,
-+ "packages": {
-+ "": {
-+ "name": "shine-js-test",
-+ "version": "0.0.1",
-+ "dependencies": {
-+ "@toots/shine.js": "file:../..",
-+ "@types/node": "^18.11.18",
-+ "ts-node": "^10.9.1",
-+ "typescript": "^4.9.4",
-+ "wav": "^1.0.2"
-+ }
-+ },
-+ "../..": {
-+ "name": "@toots/shine.js",
-+ "version": "1.0.1",
-+ "license": "LGPL-2.0-only"
-+ },
-+ "node_modules/@cspotcode/source-map-support": {
-+ "version": "0.8.1",
-+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
-+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
-+ "dependencies": {
-+ "@jridgewell/trace-mapping": "0.3.9"
-+ },
-+ "engines": {
-+ "node": ">=12"
-+ }
-+ },
-+ "node_modules/@jridgewell/resolve-uri": {
-+ "version": "3.1.0",
-+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
-+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
-+ "engines": {
-+ "node": ">=6.0.0"
-+ }
-+ },
-+ "node_modules/@jridgewell/sourcemap-codec": {
-+ "version": "1.4.14",
-+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
-+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
-+ },
-+ "node_modules/@jridgewell/trace-mapping": {
-+ "version": "0.3.9",
-+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
-+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
-+ "dependencies": {
-+ "@jridgewell/resolve-uri": "^3.0.3",
-+ "@jridgewell/sourcemap-codec": "^1.4.10"
-+ }
-+ },
-+ "node_modules/@toots/shine.js": {
-+ "resolved": "../..",
-+ "link": true
-+ },
-+ "node_modules/@tsconfig/node10": {
-+ "version": "1.0.9",
-+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
-+ "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA=="
-+ },
-+ "node_modules/@tsconfig/node12": {
-+ "version": "1.0.11",
-+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
-+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="
-+ },
-+ "node_modules/@tsconfig/node14": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
-+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="
-+ },
-+ "node_modules/@tsconfig/node16": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
-+ "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ=="
-+ },
-+ "node_modules/@types/node": {
-+ "version": "18.11.18",
-+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
-+ "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
-+ },
-+ "node_modules/acorn": {
-+ "version": "8.8.1",
-+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
-+ "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
-+ "bin": {
-+ "acorn": "bin/acorn"
-+ },
-+ "engines": {
-+ "node": ">=0.4.0"
-+ }
-+ },
-+ "node_modules/acorn-walk": {
-+ "version": "8.2.0",
-+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
-+ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
-+ "engines": {
-+ "node": ">=0.4.0"
-+ }
-+ },
-+ "node_modules/arg": {
-+ "version": "4.1.3",
-+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
-+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="
-+ },
-+ "node_modules/buffer-alloc": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
-+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
-+ "dependencies": {
-+ "buffer-alloc-unsafe": "^1.1.0",
-+ "buffer-fill": "^1.0.0"
-+ }
-+ },
-+ "node_modules/buffer-alloc-unsafe": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
-+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
-+ },
-+ "node_modules/buffer-fill": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
-+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
-+ },
-+ "node_modules/buffer-from": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
-+ },
-+ "node_modules/core-util-is": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
-+ },
-+ "node_modules/create-require": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
-+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="
-+ },
-+ "node_modules/debug": {
-+ "version": "2.6.9",
-+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-+ "dependencies": {
-+ "ms": "2.0.0"
-+ }
-+ },
-+ "node_modules/diff": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
-+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
-+ "engines": {
-+ "node": ">=0.3.1"
-+ }
-+ },
-+ "node_modules/inherits": {
-+ "version": "2.0.3",
-+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
-+ },
-+ "node_modules/isarray": {
-+ "version": "0.0.1",
-+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
-+ },
-+ "node_modules/make-error": {
-+ "version": "1.3.6",
-+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
-+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
-+ },
-+ "node_modules/ms": {
-+ "version": "2.0.0",
-+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
-+ },
-+ "node_modules/readable-stream": {
-+ "version": "1.1.14",
-+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
-+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
-+ "dependencies": {
-+ "core-util-is": "~1.0.0",
-+ "inherits": "~2.0.1",
-+ "isarray": "0.0.1",
-+ "string_decoder": "~0.10.x"
-+ }
-+ },
-+ "node_modules/stream-parser": {
-+ "version": "0.3.1",
-+ "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz",
-+ "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=",
-+ "dependencies": {
-+ "debug": "2"
-+ }
-+ },
-+ "node_modules/string_decoder": {
-+ "version": "0.10.31",
-+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
-+ },
-+ "node_modules/ts-node": {
-+ "version": "10.9.1",
-+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
-+ "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
-+ "dependencies": {
-+ "@cspotcode/source-map-support": "^0.8.0",
-+ "@tsconfig/node10": "^1.0.7",
-+ "@tsconfig/node12": "^1.0.7",
-+ "@tsconfig/node14": "^1.0.0",
-+ "@tsconfig/node16": "^1.0.2",
-+ "acorn": "^8.4.1",
-+ "acorn-walk": "^8.1.1",
-+ "arg": "^4.1.0",
-+ "create-require": "^1.1.0",
-+ "diff": "^4.0.1",
-+ "make-error": "^1.1.1",
-+ "v8-compile-cache-lib": "^3.0.1",
-+ "yn": "3.1.1"
-+ },
-+ "bin": {
-+ "ts-node": "dist/bin.js",
-+ "ts-node-cwd": "dist/bin-cwd.js",
-+ "ts-node-esm": "dist/bin-esm.js",
-+ "ts-node-script": "dist/bin-script.js",
-+ "ts-node-transpile-only": "dist/bin-transpile.js",
-+ "ts-script": "dist/bin-script-deprecated.js"
-+ },
-+ "peerDependencies": {
-+ "@swc/core": ">=1.2.50",
-+ "@swc/wasm": ">=1.2.50",
-+ "@types/node": "*",
-+ "typescript": ">=2.7"
-+ },
-+ "peerDependenciesMeta": {
-+ "@swc/core": {
-+ "optional": true
-+ },
-+ "@swc/wasm": {
-+ "optional": true
-+ }
-+ }
-+ },
-+ "node_modules/typescript": {
-+ "version": "4.9.4",
-+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
-+ "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
-+ "bin": {
-+ "tsc": "bin/tsc",
-+ "tsserver": "bin/tsserver"
-+ },
-+ "engines": {
-+ "node": ">=4.2.0"
-+ }
-+ },
-+ "node_modules/v8-compile-cache-lib": {
-+ "version": "3.0.1",
-+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
-+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
-+ },
-+ "node_modules/wav": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/wav/-/wav-1.0.2.tgz",
-+ "integrity": "sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==",
-+ "dependencies": {
-+ "buffer-alloc": "^1.1.0",
-+ "buffer-from": "^1.0.0",
-+ "debug": "^2.2.0",
-+ "readable-stream": "^1.1.14",
-+ "stream-parser": "^0.3.1"
-+ }
-+ },
-+ "node_modules/yn": {
-+ "version": "3.1.1",
-+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
-+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
-+ "engines": {
-+ "node": ">=6"
-+ }
-+ }
-+ },
- "dependencies": {
-- "coffee-script": {
-- "version": "1.6.3",
-- "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.3.tgz",
-- "integrity": "sha1-Y1XTLPGwTN/2tITl5xF4Ky8MOb4="
-+ "@cspotcode/source-map-support": {
-+ "version": "0.8.1",
-+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
-+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
-+ "requires": {
-+ "@jridgewell/trace-mapping": "0.3.9"
-+ }
-+ },
-+ "@jridgewell/resolve-uri": {
-+ "version": "3.1.0",
-+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
-+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
-+ },
-+ "@jridgewell/sourcemap-codec": {
-+ "version": "1.4.14",
-+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
-+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
-+ },
-+ "@jridgewell/trace-mapping": {
-+ "version": "0.3.9",
-+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
-+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
-+ "requires": {
-+ "@jridgewell/resolve-uri": "^3.0.3",
-+ "@jridgewell/sourcemap-codec": "^1.4.10"
-+ }
-+ },
-+ "@toots/shine.js": {
-+ "version": "file:../.."
-+ },
-+ "@tsconfig/node10": {
-+ "version": "1.0.9",
-+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
-+ "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA=="
-+ },
-+ "@tsconfig/node12": {
-+ "version": "1.0.11",
-+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
-+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="
-+ },
-+ "@tsconfig/node14": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
-+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="
-+ },
-+ "@tsconfig/node16": {
-+ "version": "1.0.3",
-+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
-+ "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ=="
-+ },
-+ "@types/node": {
-+ "version": "18.11.18",
-+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
-+ "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
-+ },
-+ "acorn": {
-+ "version": "8.8.1",
-+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
-+ "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA=="
-+ },
-+ "acorn-walk": {
-+ "version": "8.2.0",
-+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
-+ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA=="
-+ },
-+ "arg": {
-+ "version": "4.1.3",
-+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
-+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="
-+ },
-+ "buffer-alloc": {
-+ "version": "1.2.0",
-+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
-+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
-+ "requires": {
-+ "buffer-alloc-unsafe": "^1.1.0",
-+ "buffer-fill": "^1.0.0"
-+ }
-+ },
-+ "buffer-alloc-unsafe": {
-+ "version": "1.1.0",
-+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
-+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
-+ },
-+ "buffer-fill": {
-+ "version": "1.0.0",
-+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
-+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
-+ },
-+ "buffer-from": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
-+ },
-+ "core-util-is": {
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
-+ },
-+ "create-require": {
-+ "version": "1.1.1",
-+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
-+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="
- },
- "debug": {
-- "version": "2.6.8",
-- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
-- "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
-+ "version": "2.6.9",
-+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
-+ "diff": {
-+ "version": "4.0.2",
-+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
-+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
-+ },
-+ "inherits": {
-+ "version": "2.0.3",
-+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
-+ },
-+ "isarray": {
-+ "version": "0.0.1",
-+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
-+ },
-+ "make-error": {
-+ "version": "1.3.6",
-+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
-+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
-+ },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "readable-stream": {
-- "version": "0.0.4",
-- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-0.0.4.tgz",
-- "integrity": "sha1-8y124/uGM0SlSNeZIwBxc2ZbO40="
-+ "version": "1.1.14",
-+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
-+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
-+ "requires": {
-+ "core-util-is": "~1.0.0",
-+ "inherits": "~2.0.1",
-+ "isarray": "0.0.1",
-+ "string_decoder": "~0.10.x"
-+ }
- },
- "stream-parser": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz",
- "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=",
- "requires": {
-- "debug": "2.6.8"
-+ "debug": "2"
- }
- },
-+ "string_decoder": {
-+ "version": "0.10.31",
-+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
-+ },
-+ "ts-node": {
-+ "version": "10.9.1",
-+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
-+ "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
-+ "requires": {
-+ "@cspotcode/source-map-support": "^0.8.0",
-+ "@tsconfig/node10": "^1.0.7",
-+ "@tsconfig/node12": "^1.0.7",
-+ "@tsconfig/node14": "^1.0.0",
-+ "@tsconfig/node16": "^1.0.2",
-+ "acorn": "^8.4.1",
-+ "acorn-walk": "^8.1.1",
-+ "arg": "^4.1.0",
-+ "create-require": "^1.1.0",
-+ "diff": "^4.0.1",
-+ "make-error": "^1.1.1",
-+ "v8-compile-cache-lib": "^3.0.1",
-+ "yn": "3.1.1"
-+ }
-+ },
-+ "typescript": {
-+ "version": "4.9.4",
-+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
-+ "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg=="
-+ },
-+ "v8-compile-cache-lib": {
-+ "version": "3.0.1",
-+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
-+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="
-+ },
- "wav": {
-- "version": "0.1.0",
-- "resolved": "https://registry.npmjs.org/wav/-/wav-0.1.0.tgz",
-- "integrity": "sha1-5wTSp2nqIz858tZ5Xout1l9YsAk=",
-+ "version": "1.0.2",
-+ "resolved": "https://registry.npmjs.org/wav/-/wav-1.0.2.tgz",
-+ "integrity": "sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==",
- "requires": {
-- "debug": "2.6.8",
-- "readable-stream": "0.0.4",
-- "stream-parser": "0.3.1"
-+ "buffer-alloc": "^1.1.0",
-+ "buffer-from": "^1.0.0",
-+ "debug": "^2.2.0",
-+ "readable-stream": "^1.1.14",
-+ "stream-parser": "^0.3.1"
- }
-+ },
-+ "yn": {
-+ "version": "3.1.1",
-+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
-+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="
- }
- }
- }
-diff --git a/js/test/node/package.json b/js/test/node/package.json
-index 5160dab..650299c 100644
---- a/js/test/node/package.json
-+++ b/js/test/node/package.json
-@@ -2,26 +2,16 @@
- "name": "shine-js-test",
- "description": "Test encoder for libshine.js",
- "version": "0.0.1",
-- "homepage": "https://github.com/savonet/shine",
- "author": "Romain Beauxis <toots@rastageeks.org",
-- "repository": {
-- "type": "git",
-- "url": "git://github.com/savonet/shine"
-- },
-- "bugs": {
-- "mail": "toots@rastageeks.org",
-- "url": "http://github.com/savonet/shine/issues"
-- },
-- "main": "test.coffee",
- "scripts": {
-- "test": "coffee ./encode.coffee && coffee ./rounds.coffee"
-- },
-- "engine": {
-- "node": ">= 0.10.7",
-- "npm": "1"
-+ "test": "ts-node ./encode.ts && ts-node ./rounds.ts"
- },
- "dependencies": {
-- "coffee-script": "1.6.3",
-- "wav": "0.1.0"
-+ "@toots/shine.js": "file:../..",
-+ "@types/node": "^18.11.18",
-+ "@types/wav": "^1.0.1",
-+ "ts-node": "^10.9.1",
-+ "typescript": "^4.9.4",
-+ "wav": "^1.0.2"
- }
- }
-diff --git a/js/test/node/pnpm-lock.yaml b/js/test/node/pnpm-lock.yaml
-new file mode 100644
-index 0000000..58a8b69
---- /dev/null
-+++ b/js/test/node/pnpm-lock.yaml
-@@ -0,0 +1,227 @@
-+lockfileVersion: 5.4
-+
-+specifiers:
-+ '@toots/shine.js': file:../..
-+ '@types/node': ^18.11.18
-+ '@types/wav': ^1.0.1
-+ ts-node: ^10.9.1
-+ typescript: ^4.9.4
-+ wav: ^1.0.2
-+
-+dependencies:
-+ '@toots/shine.js': file:../..
-+ '@types/node': 18.11.18
-+ '@types/wav': 1.0.1
-+ ts-node: 10.9.1_awa2wsr5thmg3i7jqycphctjfq
-+ typescript: 4.9.4
-+ wav: 1.0.2
-+
-+packages:
-+
-+ /@cspotcode/source-map-support/0.8.1:
-+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
-+ engines: {node: '>=12'}
-+ dependencies:
-+ '@jridgewell/trace-mapping': 0.3.9
-+ dev: false
-+
-+ /@jridgewell/resolve-uri/3.1.0:
-+ resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
-+ engines: {node: '>=6.0.0'}
-+ dev: false
-+
-+ /@jridgewell/sourcemap-codec/1.4.14:
-+ resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
-+ dev: false
-+
-+ /@jridgewell/trace-mapping/0.3.9:
-+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
-+ dependencies:
-+ '@jridgewell/resolve-uri': 3.1.0
-+ '@jridgewell/sourcemap-codec': 1.4.14
-+ dev: false
-+
-+ /@tsconfig/node10/1.0.9:
-+ resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
-+ dev: false
-+
-+ /@tsconfig/node12/1.0.11:
-+ resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
-+ dev: false
-+
-+ /@tsconfig/node14/1.0.3:
-+ resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
-+ dev: false
-+
-+ /@tsconfig/node16/1.0.3:
-+ resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==}
-+ dev: false
-+
-+ /@types/node/18.11.18:
-+ resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==}
-+ dev: false
-+
-+ /@types/wav/1.0.1:
-+ resolution: {integrity: sha512-AKJeM5mqO1pdR2/HaTUQzSCm12No36KUM1larivXUmsLx+4JmMuC2Tv0kCdZzTx66h7IH2Xr92DGc9NQsXxa9Q==}
-+ dependencies:
-+ '@types/node': 18.11.18
-+ dev: false
-+
-+ /acorn-walk/8.2.0:
-+ resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
-+ engines: {node: '>=0.4.0'}
-+ dev: false
-+
-+ /acorn/8.8.1:
-+ resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==}
-+ engines: {node: '>=0.4.0'}
-+ hasBin: true
-+ dev: false
-+
-+ /arg/4.1.3:
-+ resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
-+ dev: false
-+
-+ /buffer-alloc-unsafe/1.1.0:
-+ resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==}
-+ dev: false
-+
-+ /buffer-alloc/1.2.0:
-+ resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==}
-+ dependencies:
-+ buffer-alloc-unsafe: 1.1.0
-+ buffer-fill: 1.0.0
-+ dev: false
-+
-+ /buffer-fill/1.0.0:
-+ resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==}
-+ dev: false
-+
-+ /buffer-from/1.1.2:
-+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
-+ dev: false
-+
-+ /core-util-is/1.0.3:
-+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
-+ dev: false
-+
-+ /create-require/1.1.1:
-+ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
-+ dev: false
-+
-+ /debug/2.6.9:
-+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
-+ peerDependencies:
-+ supports-color: '*'
-+ peerDependenciesMeta:
-+ supports-color:
-+ optional: true
-+ dependencies:
-+ ms: 2.0.0
-+ dev: false
-+
-+ /diff/4.0.2:
-+ resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
-+ engines: {node: '>=0.3.1'}
-+ dev: false
-+
-+ /inherits/2.0.4:
-+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-+ dev: false
-+
-+ /isarray/0.0.1:
-+ resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
-+ dev: false
-+
-+ /make-error/1.3.6:
-+ resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
-+ dev: false
-+
-+ /ms/2.0.0:
-+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
-+ dev: false
-+
-+ /readable-stream/1.1.14:
-+ resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==}
-+ dependencies:
-+ core-util-is: 1.0.3
-+ inherits: 2.0.4
-+ isarray: 0.0.1
-+ string_decoder: 0.10.31
-+ dev: false
-+
-+ /stream-parser/0.3.1:
-+ resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==}
-+ dependencies:
-+ debug: 2.6.9
-+ transitivePeerDependencies:
-+ - supports-color
-+ dev: false
-+
-+ /string_decoder/0.10.31:
-+ resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
-+ dev: false
-+
-+ /ts-node/10.9.1_awa2wsr5thmg3i7jqycphctjfq:
-+ resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
-+ hasBin: true
-+ peerDependencies:
-+ '@swc/core': '>=1.2.50'
-+ '@swc/wasm': '>=1.2.50'
-+ '@types/node': '*'
-+ typescript: '>=2.7'
-+ peerDependenciesMeta:
-+ '@swc/core':
-+ optional: true
-+ '@swc/wasm':
-+ optional: true
-+ dependencies:
-+ '@cspotcode/source-map-support': 0.8.1
-+ '@tsconfig/node10': 1.0.9
-+ '@tsconfig/node12': 1.0.11
-+ '@tsconfig/node14': 1.0.3
-+ '@tsconfig/node16': 1.0.3
-+ '@types/node': 18.11.18
-+ acorn: 8.8.1
-+ acorn-walk: 8.2.0
-+ arg: 4.1.3
-+ create-require: 1.1.1
-+ diff: 4.0.2
-+ make-error: 1.3.6
-+ typescript: 4.9.4
-+ v8-compile-cache-lib: 3.0.1
-+ yn: 3.1.1
-+ dev: false
-+
-+ /typescript/4.9.4:
-+ resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==}
-+ engines: {node: '>=4.2.0'}
-+ hasBin: true
-+ dev: false
-+
-+ /v8-compile-cache-lib/3.0.1:
-+ resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
-+ dev: false
-+
-+ /wav/1.0.2:
-+ resolution: {integrity: sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==}
-+ dependencies:
-+ buffer-alloc: 1.2.0
-+ buffer-from: 1.1.2
-+ debug: 2.6.9
-+ readable-stream: 1.1.14
-+ stream-parser: 0.3.1
-+ transitivePeerDependencies:
-+ - supports-color
-+ dev: false
-+
-+ /yn/3.1.1:
-+ resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
-+ engines: {node: '>=6'}
-+ dev: false
-+
-+ file:../..:
-+ resolution: {directory: ../.., type: directory}
-+ name: '@toots/shine.js'
-+ version: 1.0.3
-+ dev: false
-diff --git a/js/test/node/rounds.coffee b/js/test/node/rounds.coffee
-deleted file mode 100644
-index 7be6690..0000000
---- a/js/test/node/rounds.coffee
-+++ /dev/null
-@@ -1,6 +0,0 @@
--Shine = require "../../dist/libshine.js"
--runRoundsTest = require "../lib/rounds.js"
--
--console.log ""
--runRoundsTest Shine, (s) ->
-- console.log s
-diff --git a/js/test/node/rounds.ts b/js/test/node/rounds.ts
-new file mode 100644
-index 0000000..6f3e664
---- /dev/null
-+++ b/js/test/node/rounds.ts
-@@ -0,0 +1,11 @@
-+import { Shine } from "@toots/shine.js";
-+import runRoundsTest from "../lib/rounds";
-+
-+const exec = async () => {
-+ await Shine.initialized;
-+
-+ console.log("");
-+ runRoundsTest(Shine, s => console.log(s));
-+};
-+
-+exec();
-diff --git a/js/test/node/tsconfig.json b/js/test/node/tsconfig.json
-new file mode 100644
-index 0000000..d1045e4
---- /dev/null
-+++ b/js/test/node/tsconfig.json
-@@ -0,0 +1,8 @@
-+{
-+ "include": ["**/*.ts"],
-+ "compilerOptions": {
-+ "allowJs": true,
-+ "skipLibCheck": true,
-+ "esModuleInterop": true
-+ }
-+}
-diff --git a/src/bin/main.c b/src/bin/main.c
-index ab16fea..b7b70a4 100644
---- a/src/bin/main.c
-+++ b/src/bin/main.c
-@@ -35,32 +35,25 @@ int _verbose = 0;
- int stereo = STEREO;
- int force_mono = 0;
-
--int verbose()
--{
-- return _verbose;
--}
-+int verbose() { return _verbose; }
-
- /* Write out the MP3 file */
--int write_mp3(long bytes, void *buffer, void *config)
--{
-- return fwrite(buffer, sizeof(unsigned char), bytes, outfile) / sizeof(unsigned char);
-+int write_mp3(long bytes, void *buffer, void *config) {
-+ return fwrite(buffer, sizeof(unsigned char), bytes, outfile) /
-+ sizeof(unsigned char);
- }
-
- /* Output error message and exit */
--void error(char *s)
--{
-+void error(char *s) {
- fprintf(stderr, "Error: %s\n", s);
- exit(1);
- }
-
--static void print_name()
--{
-- printf("shineenc (Liquidsoap version)\n");
--}
-+static void print_name() { printf("shineenc (Liquidsoap version)\n"); }
-
--static void print_usage()
--{
-+static void print_usage() {
- printf("Usage: shineenc [options] <infile> <outfile>\n\n");
-+ printf("Use \"-\" for standard input or output.\n\n");
- printf("Options:\n");
- printf(" -h this help message\n");
- printf(" -b <bitrate> set the bitrate [8-320], default 128kbit\n");
-@@ -73,88 +66,88 @@ static void print_usage()
- }
-
- /* Use these default settings, can be overridden */
--static void set_defaults(shine_config_t *config)
--{
-+static void set_defaults(shine_config_t *config) {
- shine_set_config_mpeg_defaults(&config->mpeg);
- }
-
- /* Parse command line arguments */
--static int parse_command(int argc, char** argv, shine_config_t *config)
--{
-+static int parse_command(int argc, char **argv, shine_config_t *config) {
- int i = 0;
-
-- if(argc < 3) return 0;
-+ if (argc < 3)
-+ return 0;
-
- while (argv[++i][0] == '-' && argv[i][1] != '\000' && argv[i][1] != ' ')
- switch (argv[i][1]) {
-- case 'b':
-- config->mpeg.bitr = atoi(argv[++i]);
-- break;
--
-- case 'm':
-- force_mono = 1;
-- break;
--
-- case 'j':
-- stereo = JOINT_STEREO;
-- break;
--
-- case 'd':
-- stereo = DUAL_CHANNEL;
-- break;
--
-- case 'c':
-- config->mpeg.copyright = 1;
-- break;
--
-- case 'q':
-- quiet = 1;
-- _verbose = 0;
-- break;
--
-- case 'v':
-- _verbose = 1;
-- quiet = 0;
-- break;
--
-- case 'h':
-- default :
-- return 0;
-+ case 'b':
-+ config->mpeg.bitr = atoi(argv[++i]);
-+ break;
-+
-+ case 'm':
-+ force_mono = 1;
-+ break;
-+
-+ case 'j':
-+ stereo = JOINT_STEREO;
-+ break;
-+
-+ case 'd':
-+ stereo = DUAL_CHANNEL;
-+ break;
-+
-+ case 'c':
-+ config->mpeg.copyright = 1;
-+ break;
-+
-+ case 'q':
-+ quiet = 1;
-+ _verbose = 0;
-+ break;
-+
-+ case 'v':
-+ _verbose = 1;
-+ quiet = 0;
-+ break;
-+
-+ case 'h':
-+ default:
-+ return 0;
- }
-
-- if (argc - i != 2) return 0;
-+ if (argc - i != 2)
-+ return 0;
- infname = argv[i++];
- outfname = argv[i];
- return 1;
- }
-
- /* Print some info about what we're going to encode */
--static void check_config(shine_config_t *config)
--{
-- static char *version_names[4] = { "2.5", "reserved", "II", "I" };
-- static char *mode_names[4] = { "stereo", "joint-stereo", "dual-channel", "mono" };
-- static char *demp_names[4] = { "none", "50/15us", "", "CITT" };
-+static void check_config(shine_config_t *config) {
-+ static char *version_names[4] = {"2.5", "reserved", "II", "I"};
-+ static char *mode_names[4] = {"stereo", "joint-stereo", "dual-channel",
-+ "mono"};
-+ static char *demp_names[4] = {"none", "50/15us", "", "CITT"};
-
- printf("MPEG-%s layer III, %s Psychoacoustic Model: Shine\n",
-- version_names[shine_check_config(config->wave.samplerate, config->mpeg.bitr)],
-- mode_names[config->mpeg.mode]);
-+ version_names[shine_check_config(config->wave.samplerate,
-+ config->mpeg.bitr)],
-+ mode_names[config->mpeg.mode]);
- printf("Bitrate: %d kbps ", config->mpeg.bitr);
-- printf("De-emphasis: %s %s %s\n",
-- demp_names[config->mpeg.emph],
-- ((config->mpeg.original) ? "Original" : ""),
-- ((config->mpeg.copyright) ? "(C)" : ""));
-+ printf("De-emphasis: %s %s %s\n", demp_names[config->mpeg.emph],
-+ ((config->mpeg.original) ? "Original" : ""),
-+ ((config->mpeg.copyright) ? "(C)" : ""));
- printf("Encoding \"%s\" to \"%s\"\n", infname, outfname);
- }
-
--int main(int argc, char **argv)
--{
-- wave_t wave;
-- time_t start_time, end_time;
-- int16_t buffer[2*SHINE_MAX_SAMPLES];
-+int main(int argc, char **argv) {
-+ wave_t wave;
-+ time_t start_time, end_time;
-+ int16_t buffer[2 * SHINE_MAX_SAMPLES];
- shine_config_t config;
-- shine_t s;
-- int written;
-- unsigned char *data;
-+ shine_t s;
-+ int written;
-+ unsigned char *data;
-+ int samples_per_pass;
-
- time(&start_time);
-
-@@ -168,7 +161,8 @@ int main(int argc, char **argv)
-
- quiet = quiet || !strcmp(outfname, "-");
-
-- if (!quiet) print_name();
-+ if (!quiet)
-+ print_name();
-
- /* Open the input file and fill the config shine_wave_t header */
- if (!wave_open(infname, &wave, &config, quiet))
-@@ -205,17 +199,17 @@ int main(int argc, char **argv)
- // assert(s != NULL);
-
- /* Print some info about the file about to be created (optional) */
-- if (!quiet) check_config(&config);
-+ if (!quiet)
-+ check_config(&config);
-
-- int samples_per_pass = shine_samples_per_pass(s);
-+ samples_per_pass = shine_samples_per_pass(s);
-
- /* All the magic happens here */
- while (wave_get(buffer, &wave, samples_per_pass)) {
- data = shine_encode_buffer_interleaved(s, buffer, &written);
-- if ( write_mp3(written, data, &config) != written )
-- {
-- fprintf(stderr, "shineenc: write error\n");
-- return 1;
-+ if (write_mp3(written, data, &config) != written) {
-+ fprintf(stderr, "shineenc: write error\n");
-+ return 1;
- }
- }
-
-@@ -235,7 +229,9 @@ int main(int argc, char **argv)
- time(&end_time);
- end_time -= start_time;
- if (!quiet)
-- printf("Finished in %02ld:%02ld:%02ld (%01.1fx realtime)\n", end_time / 3600, (end_time / 60) % 60, end_time % 60, (float)wave.duration / (float)end_time);
-+ printf("Finished in %02ld:%02ld:%02ld (%01.1fx realtime)\n",
-+ end_time / 3600, (end_time / 60) % 60, end_time % 60,
-+ (float)wave.duration / (float)end_time);
-
- return 0;
- }
-diff --git a/src/bin/main.h b/src/bin/main.h
-index 52fbbb2..7ab9691 100644
---- a/src/bin/main.h
-+++ b/src/bin/main.h
-@@ -2,6 +2,6 @@
- #define MAIN_H
-
- void error(char *s);
--int verbose();
-+int verbose();
-
- #endif
-diff --git a/src/bin/wave.c b/src/bin/wave.c
-index 5d19004..3c7ab81 100644
---- a/src/bin/wave.c
-+++ b/src/bin/wave.c
-@@ -9,17 +9,32 @@
- #include "layer3.h"
-
- /* Local header */
--#include <stdint.h>
--#include <string.h>
- #include "main.h"
- #include "wave.h"
-+#include <stdint.h>
-+#include <string.h>
-
- /* RISC OS specifics */
--#define WAVE 0xfb1 /* Wave filetype */
--#define DATA 0xffd /* Data filetype */
-+#define WAVE 0xfb1 /* Wave filetype */
-+#define DATA 0xffd /* Data filetype */
-
- #define MODE_MONO 3
-
-+#ifdef SHINE_BIG_ENDIAN
-+#if defined(SHINE_HAVE_BSWAP_H)
-+#include <byteswap.h>
-+#elif defined(__GNUC__) && \
-+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
-+#define bswap_16(x) __builtin_bswap16(x)
-+#define bswap_32(x) __builtin_bswap32(x)
-+#else
-+#define bswap_16(x) ((((x) >> 8) & 0xff) | (((x)&0xff) << 8))
-+#define bswap_32(x) \
-+ ((((x)&0xFF) << 24) | (((x) >> 24) & 0xFF) | (((x)&0x0000FF00) << 8) | \
-+ (((x)&0x00FF0000) >> 8))
-+#endif
-+#endif
-+
- typedef struct {
- char id[4];
- uint32_t length;
-@@ -32,14 +47,28 @@ typedef struct {
-
- typedef struct {
- riff_chunk_header_t header;
-- uint16_t format; /* MS PCM = 1 */
-- uint16_t channels; /* channels, mono = 1, stereo = 2 */
-- uint32_t sample_rate; /* samples per second = 44100 */
-- uint32_t byte_rate; /* bytes per second = samp_rate * byte_samp = 176400 */
-- uint16_t frame_size; /* block align (bytes per sample) = channels * bits_per_sample / 8 = 4 */
-- uint16_t depth; /* bits per sample = 16 for MS PCM (format specific) */
-+ uint16_t format; /* MS PCM = 1 */
-+ uint16_t channels; /* channels, mono = 1, stereo = 2 */
-+ uint32_t sample_rate; /* samples per second = 44100 */
-+ uint32_t byte_rate; /* bytes per second = samp_rate * byte_samp = 176400 */
-+ uint16_t frame_size; /* block align (bytes per sample) = channels *
-+ bits_per_sample / 8 = 4 */
-+ uint16_t depth; /* bits per sample = 16 for MS PCM (format specific) */
- } fmt_chunk_t;
-
-+#ifdef SHINE_BIG_ENDIAN
-+#define native_fmt_chunk(fmt) \
-+ { \
-+ fmt.header.length = bswap_32(fmt.header.length); \
-+ fmt.format = bswap_16(fmt.format); \
-+ fmt.channels = bswap_16(fmt.channels); \
-+ fmt.sample_rate = bswap_32(fmt.sample_rate); \
-+ fmt.byte_rate = bswap_32(fmt.byte_rate); \
-+ fmt.frame_size = bswap_16(fmt.frame_size); \
-+ fmt.depth = bswap_16(fmt.depth); \
-+ }
-+#endif
-+
- void wave_seek(FILE *file, int has_seek, uint32_t bytes) {
- uint32_t i;
- if (has_seek == 1)
-@@ -50,15 +79,15 @@ void wave_seek(FILE *file, int has_seek, uint32_t bytes) {
- }
- }
-
--unsigned char wave_get_chunk_header(FILE *file, int has_seek, const char id[4], riff_chunk_header_t *header)
--{
-+unsigned char wave_get_chunk_header(FILE *file, int has_seek, const char id[4],
-+ riff_chunk_header_t *header) {
- unsigned char found = 0;
- uint32_t chunk_length;
-
- if (verbose())
- fprintf(stderr, "Looking for chunk '%s'\n", id);
-
-- while(!found) {
-+ while (!found) {
- if (fread(header, sizeof(riff_chunk_header_t), 1, file) != 1) {
- if (feof(file))
- return 0;
-@@ -69,24 +98,20 @@ unsigned char wave_get_chunk_header(FILE *file, int has_seek, const char id[4],
- /* chunks must be word-aligned, chunk data doesn't need to */
- chunk_length = header->length + header->length % 2;
- if (verbose()) {
-- fprintf(stderr, "Found chunk '%.4s', length: %u\n", header->id, header->length);
-+ fprintf(stderr, "Found chunk '%.4s', length: %u\n", header->id,
-+ header->length);
- }
-
- if (strncmp(header->id, id, 4) == 0)
- return 1;
--
-+
- wave_seek(file, has_seek, chunk_length);
- }
-
- return 1;
- }
-
--
--void wave_close(wave_t *wave)
--{
-- fclose(wave->file);
--}
--
-+void wave_close(wave_t *wave) { fclose(wave->file); }
-
- /*
- * wave_open:
-@@ -94,16 +119,17 @@ void wave_close(wave_t *wave)
- * Opens and verifies the header of the Input Wave file. The file pointer is
- * left pointing to the start of the samples.
- */
--unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config, int quiet)
--{
-- static char *channel_mappings[] = { NULL, "mono", "stereo" };
-+unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config,
-+ int quiet) {
-+ static char *channel_mappings[] = {NULL, "mono", "stereo"};
- wave_chunk_t wave_chunk;
- fmt_chunk_t fmt_chunk;
- riff_chunk_header_t data_chunk;
- uint32_t fmt_data, fmt_length;
-
- if (!strcmp(fname, "-")) {
-- /* TODO: support raw PCM stream with commandline parameters specifying format */
-+ /* TODO: support raw PCM stream with commandline parameters specifying
-+ * format */
- wave->file = stdin;
- wave->has_seek = 0;
- } else {
-@@ -124,14 +150,19 @@ unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config,
- error("Not a WAVE audio file");
-
- /* Check the fmt chunk */
-- if (!wave_get_chunk_header(wave->file, wave->has_seek, "fmt ", (riff_chunk_header_t *)&fmt_chunk))
-+ if (!wave_get_chunk_header(wave->file, wave->has_seek, "fmt ",
-+ (riff_chunk_header_t *)&fmt_chunk))
- error("WAVE fmt chunk not found");
-
- fmt_data = sizeof(fmt_chunk_t) - sizeof(riff_chunk_header_t);
-
-- if(fread(&fmt_chunk.format, fmt_data, 1, wave->file) != 1)
-+ if (fread(&fmt_chunk.format, fmt_data, 1, wave->file) != 1)
- error("Read error");
-
-+#ifdef SHINE_BIG_ENDIAN
-+ native_fmt_chunk(fmt_chunk);
-+#endif
-+
- if (verbose())
- fprintf(stderr, "WAVE format: %u\n", fmt_chunk.format);
-
-@@ -153,34 +184,31 @@ unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config,
- if (!wave_get_chunk_header(wave->file, wave->has_seek, "data", &data_chunk))
- error("WAVE data chunk not found");
-
-- config->wave.channels = fmt_chunk.channels;
-+ config->wave.channels = fmt_chunk.channels;
- config->wave.samplerate = fmt_chunk.sample_rate;
-
- wave->channels = fmt_chunk.channels;
-- wave->length = data_chunk.length;
-+ wave->length = data_chunk.length;
- wave->duration = data_chunk.length / fmt_chunk.byte_rate;
-
- if (!quiet)
- printf("%s, %s %ldHz %ldbit, duration: %02ld:%02ld:%02ld\n",
-- "WAVE PCM Data", channel_mappings[fmt_chunk.channels], (long)fmt_chunk.sample_rate, (long)fmt_chunk.depth,
-- (long)wave->duration / 3600, (long)(wave->duration / 60) % 60, (long)wave->duration % 60);
-+ "WAVE PCM Data", channel_mappings[fmt_chunk.channels],
-+ (long)fmt_chunk.sample_rate, (long)fmt_chunk.depth,
-+ (long)wave->duration / 3600, (long)(wave->duration / 60) % 60,
-+ (long)wave->duration % 60);
- return 1;
- }
-
- #ifdef SHINE_BIG_ENDIAN
--#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
--#define bswap_16(x) __builtin_bswap16(x)
--#else
--#define bswap_16(x) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
--#endif
--
--void swap_buffer(int16_t *sample_buffer, int length)
--{
-+void swap_buffer(int16_t *sample_buffer, int length) {
- int16_t *end = sample_buffer + length;
-
- if (length >= 2 * sizeof(long) / sizeof(int16_t)) {
-- const unsigned long mask = (~0UL / 0xffff) * 0xff; /* 0x00ff00ff or 0x00ff00ff00ff00ff */
-- unsigned long *long_ptr = (unsigned long *)((unsigned long)sample_buffer & -sizeof(long));
-+ const unsigned long mask =
-+ (~0UL / 0xffff) * 0xff; /* 0x00ff00ff or 0x00ff00ff00ff00ff */
-+ unsigned long *long_ptr =
-+ (unsigned long *)((unsigned long)sample_buffer & -sizeof(long));
-
- /* make sample_buffer aligned on word boundary */
- if ((int16_t *)long_ptr != sample_buffer) {
-@@ -212,18 +240,19 @@ void swap_buffer(int16_t *sample_buffer, int length)
- */
-
- /* TODO: respect data chunk length */
--int read_samples(int16_t *sample_buffer, int frame_size, FILE *file)
--{
-- int samples_read=0;
-+int read_samples(int16_t *sample_buffer, int frame_size, FILE *file) {
-+ int samples_read = 0;
-
-- samples_read = fread(sample_buffer,sizeof(int16_t),frame_size, file);
-+ samples_read = fread(sample_buffer, sizeof(int16_t), frame_size, file);
-
- #ifdef SHINE_BIG_ENDIAN
- swap_buffer(sample_buffer, samples_read);
- #endif
-
-- if(samples_read<frame_size && samples_read>0) { /* Pad sample with zero's */
-- memset(sample_buffer + samples_read, 0, (frame_size - samples_read) * sizeof(int16_t));
-+ if (samples_read < frame_size &&
-+ samples_read > 0) { /* Pad sample with zero's */
-+ memset(sample_buffer + samples_read, 0,
-+ (frame_size - samples_read) * sizeof(int16_t));
- samples_read = frame_size;
- }
-
-@@ -236,8 +265,6 @@ int read_samples(int16_t *sample_buffer, int frame_size, FILE *file)
- * Expects an interleaved 16bit pcm stream from read_samples, which it
- * reads into the given buffer.
- */
--int wave_get(int16_t *buffer, wave_t *wave, int samp_per_pass)
--{
-- return read_samples(buffer,samp_per_pass*wave->channels, wave->file);
-+int wave_get(int16_t *buffer, wave_t *wave, int samp_per_pass) {
-+ return read_samples(buffer, samp_per_pass * wave->channels, wave->file);
- }
--
-diff --git a/src/bin/wave.h b/src/bin/wave.h
-index 5a290a0..b77f0b5 100644
---- a/src/bin/wave.h
-+++ b/src/bin/wave.h
-@@ -4,15 +4,16 @@
- #include <stdio.h>
-
- typedef struct {
-- FILE *file;
-- int has_seek;
-- int channels;
-- long length;
-- long duration;
-+ FILE *file;
-+ int has_seek;
-+ int channels;
-+ long length;
-+ long duration;
- } wave_t;
-
--unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config, int quiet);
--int wave_get(int16_t *buffer, wave_t *wave, int samp_per_frame);
-+unsigned char wave_open(const char *fname, wave_t *wave, shine_config_t *config,
-+ int quiet);
-+int wave_get(int16_t *buffer, wave_t *wave, int samp_per_frame);
- void wave_close(wave_t *wave);
-
- #endif
-diff --git a/src/lib/bitstream.c b/src/lib/bitstream.c
-index 29afcb1..9408f2c 100644
---- a/src/lib/bitstream.c
-+++ b/src/lib/bitstream.c
-@@ -7,17 +7,16 @@
- * Removed unused functions. Feb 2001 P.Everett
- */
-
--#include "types.h"
- #include "bitstream.h"
-+#include "types.h"
-
--#if !defined(__APPLE__)
-+#if !defined(__APPLE__) && !defined(__FreeBSD__)
- #include <malloc.h>
- #endif
-
- /* open the device to write the bit stream into it */
--void shine_open_bit_stream(bitstream_t *bs, int size)
--{
-- bs->data = (unsigned char *)malloc(size*sizeof(unsigned char));
-+void shine_open_bit_stream(bitstream_t *bs, int size) {
-+ bs->data = (unsigned char *)malloc(size * sizeof(unsigned char));
- bs->data_size = size;
- bs->data_position = 0;
- bs->cache = 0;
-@@ -25,8 +24,7 @@ void shine_open_bit_stream(bitstream_t *bs, int size)
- }
-
- /*close the device containing the bit stream */
--void shine_close_bit_stream(bitstream_t *bs)
--{
-+void shine_close_bit_stream(bitstream_t *bs) {
- if (bs->data)
- free(bs->data);
- }
-@@ -39,42 +37,40 @@ void shine_close_bit_stream(bitstream_t *bs)
- * val = value to write into the buffer
- * N = number of bits of val
- */
--void shine_putbits(bitstream_t *bs, unsigned int val, unsigned int N)
--{
-+void shine_putbits(bitstream_t *bs, unsigned int val, unsigned int N) {
- #ifdef DEBUG
-- if (N > 32)
-- printf("Cannot write more than 32 bits at a time.\n");
-- if (N < 32 && (val >> N) != 0)
-- printf("Upper bits (higher than %d) are not all zeros.\n", N);
-+ if (N > 32)
-+ printf("Cannot write more than 32 bits at a time.\n");
-+ if (N < 32 && (val >> N) != 0)
-+ printf("Upper bits (higher than %d) are not all zeros.\n", N);
- #endif
-
-- if (bs->cache_bits > N) {
-- bs->cache_bits -= N;
-- bs->cache |= val << bs->cache_bits;
-- } else {
-- if (bs->data_position + sizeof(unsigned int) >= bs->data_size) {
-- bs->data = (unsigned char *)realloc(bs->data, bs->data_size + (bs->data_size / 2));
-- bs->data_size += (bs->data_size / 2);
-- }
-+ if (bs->cache_bits > N) {
-+ bs->cache_bits -= N;
-+ bs->cache |= val << bs->cache_bits;
-+ } else {
-+ if (bs->data_position + sizeof(unsigned int) >= bs->data_size) {
-+ bs->data = (unsigned char *)realloc(bs->data,
-+ bs->data_size + (bs->data_size / 2));
-+ bs->data_size += (bs->data_size / 2);
-+ }
-
-- N -= bs->cache_bits;
-- bs->cache |= val >> N;
-+ N -= bs->cache_bits;
-+ bs->cache |= val >> N;
- #ifdef SHINE_BIG_ENDIAN
-- *(unsigned int*)(bs->data + bs->data_position) = bs->cache;
-+ *(unsigned int *)(bs->data + bs->data_position) = bs->cache;
- #else
-- *(unsigned int*)(bs->data + bs->data_position) = SWAB32(bs->cache);
-+ *(unsigned int *)(bs->data + bs->data_position) = SWAB32(bs->cache);
- #endif
-- bs->data_position += sizeof(unsigned int);
-- bs->cache_bits = 32 - N;
-- if (N != 0)
-- bs->cache = val << bs->cache_bits;
-- else
-- bs->cache = 0;
-- }
-+ bs->data_position += sizeof(unsigned int);
-+ bs->cache_bits = 32 - N;
-+ if (N != 0)
-+ bs->cache = val << bs->cache_bits;
-+ else
-+ bs->cache = 0;
-+ }
- }
-
--int shine_get_bits_count(bitstream_t *bs)
--{
-- return bs->data_position * 8 + 32 - bs->cache_bits;
-+int shine_get_bits_count(bitstream_t *bs) {
-+ return bs->data_position * 8 + 32 - bs->cache_bits;
- }
--
-diff --git a/src/lib/bitstream.h b/src/lib/bitstream.h
-index d910ef9..4f7efb6 100644
---- a/src/lib/bitstream.h
-+++ b/src/lib/bitstream.h
-@@ -1,28 +1,29 @@
- #ifndef BITSTREAM_H
- #define BITSTREAM_H
-
--typedef struct bit_stream_struc {
-- unsigned char *data; /* Processed data */
-- int data_size; /* Total data size */
-- int data_position; /* Data position */
-- unsigned int cache; /* bit stream cache */
-- int cache_bits; /* free bits in cache */
-+typedef struct bit_stream_struc {
-+ unsigned char *data; /* Processed data */
-+ int data_size; /* Total data size */
-+ int data_position; /* Data position */
-+ unsigned int cache; /* bit stream cache */
-+ int cache_bits; /* free bits in cache */
- } bitstream_t;
-
- /* "bit_stream.h" Definitions */
-
--#define MINIMUM 4 /* Minimum size of the buffer in bytes */
--#define MAX_LENGTH 32 /* Maximum length of word written or
-- read from bit stream */
-+#define MINIMUM 4 /* Minimum size of the buffer in bytes */
-+#define MAX_LENGTH \
-+ 32 /* Maximum length of word written or \
-+ read from bit stream */
-
--#define BUFFER_SIZE 4096
-+#define BUFFER_SIZE 4096
-
--#define MIN(A, B) ((A) < (B) ? (A) : (B))
--#define MAX(A, B) ((A) > (B) ? (A) : (B))
-+#define MIN(A, B) ((A) < (B) ? (A) : (B))
-+#define MAX(A, B) ((A) > (B) ? (A) : (B))
-
--void shine_open_bit_stream(bitstream_t *bs,const int size);
-+void shine_open_bit_stream(bitstream_t *bs, const int size);
- void shine_close_bit_stream(bitstream_t *bs);
--void shine_putbits(bitstream_t *bs,unsigned int val, unsigned int N);
--int shine_get_bits_count(bitstream_t *bs);
-+void shine_putbits(bitstream_t *bs, unsigned int val, unsigned int N);
-+int shine_get_bits_count(bitstream_t *bs);
-
- #endif
-diff --git a/src/lib/huffman.c b/src/lib/huffman.c
-index d4bd6aa..854ae41 100644
---- a/src/lib/huffman.c
-+++ b/src/lib/huffman.c
-@@ -1,120 +1,248 @@
- /* huffman.c */
-
--#include "types.h"
- #include "huffman.h"
- #include "bitstream.h"
- #include "l3bitstream.h"
-+#include "types.h"
-
--const HUFFBITS dmask = 1 << (((sizeof(HUFFBITS))<<3)-1);
--const unsigned int hs = sizeof(HUFFBITS)<<3;
-+const HUFFBITS dmask = 1 << (((sizeof(HUFFBITS)) << 3) - 1);
-+const unsigned int hs = sizeof(HUFFBITS) << 3;
-
--static const HUFFBITS t1HB[] = {1, 1, 1, 0};
--static const HUFFBITS t2HB[] = {1, 2, 1, 3, 1, 1, 3, 2, 0};
--static const HUFFBITS t3HB[] = {3, 2, 1, 1, 1, 1, 3, 2, 0};
--static const HUFFBITS t5HB[] = {1, 2, 6, 5, 3, 1, 4, 4, 7, 5, 7, 1, 6, 1, 1, 0};
--static const HUFFBITS t6HB[] = {7, 3, 5, 1, 6, 2, 3, 2, 5, 4, 4, 1, 3, 3, 2, 0};
--static const HUFFBITS t7HB[] = {1, 2, 10, 19, 16, 10, 3, 3, 7, 10, 5, 3, 11, 4, 13, 17, 8, 4, 12, 11, 18, 15, 11, 2, 7, 6, 9, 14, 3, 1, 6, 4, 5, 3, 2, 0};
--static const HUFFBITS t8HB[] = {3, 4, 6, 18, 12, 5, 5, 1, 2, 16, 9, 3, 7, 3, 5, 14, 7, 3, 19, 17, 15, 13, 10, 4, 13, 5, 8, 11, 5, 1, 12, 4, 4, 1, 1, 0};
--static const HUFFBITS t9HB[] = {7, 5, 9, 14, 15, 7, 6, 4, 5, 5, 6, 7, 7, 6, 8, 8, 8, 5, 15, 6, 9, 10, 5, 1, 11, 7, 9, 6, 4, 1, 14, 4, 6, 2, 6, 0};
--static const HUFFBITS t10HB[] = {1, 2, 10, 23, 35, 30, 12, 17, 3, 3, 8, 12, 18, 21, 12, 7, 11, 9, 15, 21, 32, 40, 19, 6, 14, 13, 22, 34, 46, 23, 18, 7, 20, 19, 33, 47, 27, 22, 9, 3, 31, 22, 41, 26, 21, 20, 5, 3, 14, 13, 10, 11, 16, 6, 5, 1, 9, 8, 7, 8, 4 , 4, 2, 0};
--static const HUFFBITS t11HB[] = {3, 4, 10, 24, 34, 33, 21, 15, 5, 3, 4, 10, 32, 17, 11, 10, 11, 7, 13, 18, 30, 31, 20, 5, 25, 11, 19, 59, 27, 18, 12, 5, 35, 33, 31, 58, 30, 16, 7, 5, 28, 26, 32, 19, 17, 15, 8, 14, 14, 12, 9, 13, 14, 9, 4, 1, 11, 4, 6, 6, 6, 3, 2, 0};
--static const HUFFBITS t12HB[] = {9, 6, 16, 33, 41, 39, 38, 26, 7, 5, 6, 9, 23, 16, 26, 11, 17, 7, 11, 14, 21, 30, 10, 7, 17, 10, 15, 12, 18, 28, 14, 5, 32, 13, 22, 19, 18, 16, 9, 5, 40, 17, 31, 29, 17, 13, 4, 2, 27, 12, 11, 15, 10, 7, 4, 1, 27, 12, 8, 12 , 6, 3, 1, 0};
--static const HUFFBITS t13HB[] = {1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19, 3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14, 15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16, 22,
-- 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14, 35, 16, 60, 57, 97, 75, 114, 91, 54, 73, 55, 41, 48, 53, 23, 24, 58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17, 47,
-- 45, 78, 74, 115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15, 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42, 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16, 53,
-- 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11, 35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22, 53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7, 34, 32,
-- 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5, 45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3, 48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2, 16, 15, 17, 27, 25,
-- 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1};
--static const HUFFBITS t15HB[] = {7, 12, 18, 53, 47, 76, 124, 108, 89, 123, 108, 119, 107, 81, 122, 63, 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36, 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56,
-- 33, 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29, 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27, 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38,
-- 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30, 109, 53, 49, 94, 88, 75, 66, 122, 91, 73, 56, 42, 64, 44, 21, 25, 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20,
-- 71, 34, 67, 60, 58, 49, 88, 76, 67, 106, 71, 54, 38, 39, 23, 15, 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9, 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11,
-- 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7, 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3, 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1, 71,
-- 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0};
--static const HUFFBITS t16HB[] = {1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17, 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9, 15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117,
-- 110, 209, 206, 16, 45, 21, 39, 69, 64, 114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26, 75, 36, 68, 65, 115, 101, 179, 164, 155, 264, 246, 226, 395, 382, 362, 9, 66, 30, 59, 56, 102,
-- 185, 173, 265, 142, 253, 232, 400, 388, 378, 445, 16, 111, 54, 52, 100, 184, 178, 160, 133, 257, 244, 228, 217, 385, 366, 715, 10, 98, 48, 91, 88, 165, 157, 148, 261, 248, 407, 397, 372,
-- 380, 889, 884, 8, 85, 84, 81, 159, 156, 143, 260, 249, 427, 401, 392, 383, 727, 713, 708, 7, 154, 76, 73, 141, 131, 256, 245, 426, 406, 394, 384, 735, 359, 710, 352, 11, 139, 129, 67, 125,
-- 247, 233, 229, 219, 393, 743, 737, 720, 885, 882, 439, 4, 243, 120, 118, 115, 227, 223, 396, 746, 742, 736, 721, 712, 706, 223, 436, 6, 202, 224, 222, 218, 216, 389, 386, 381, 364, 888,
-- 443, 707, 440, 437, 1728, 4, 747, 211, 210, 208, 370, 379, 734, 723, 714, 1735, 883, 877, 876, 3459, 865, 2, 377, 369, 102, 187, 726, 722, 358, 711, 709, 866, 1734, 871, 3458, 870, 434,
-- 0, 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3};
--static const HUFFBITS t24HB[] = {15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88, 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42, 47, 22, 41, 74, 68, 128, 120, 221,
-- 207, 194, 182, 340, 315, 295, 541, 18, 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16, 147, 72, 69, 135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285,
-- 540, 14, 263, 66, 129, 126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12, 249, 123, 121, 117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10, 435, 115, 111,
-- 109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17, 427, 212, 208, 205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16, 335, 199, 197, 191, 189, 181, 174, 333,
-- 321, 305, 289, 275, 521, 379, 371, 11, 668, 184, 183, 179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10, 652, 346, 171, 168, 164, 318, 309, 299, 287, 276, 263, 513, 375,
-- 368, 362, 6, 648, 322, 316, 312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4, 620, 300, 296, 294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2, 1033, 280, 278,
-- 274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0, 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3};
--static const HUFFBITS t32HB[] = {1, 5, 4, 5, 6, 5, 4, 4, 7, 3, 6, 0, 7, 2, 3, 1};
--static const HUFFBITS t33HB[] = {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
-+static const HUFFBITS t1HB[] = {1, 1, 1, 0};
-+static const HUFFBITS t2HB[] = {1, 2, 1, 3, 1, 1, 3, 2, 0};
-+static const HUFFBITS t3HB[] = {3, 2, 1, 1, 1, 1, 3, 2, 0};
-+static const HUFFBITS t5HB[] = {1, 2, 6, 5, 3, 1, 4, 4, 7, 5, 7, 1, 6, 1, 1, 0};
-+static const HUFFBITS t6HB[] = {7, 3, 5, 1, 6, 2, 3, 2, 5, 4, 4, 1, 3, 3, 2, 0};
-+static const HUFFBITS t7HB[] = {1, 2, 10, 19, 16, 10, 3, 3, 7, 10, 5, 3,
-+ 11, 4, 13, 17, 8, 4, 12, 11, 18, 15, 11, 2,
-+ 7, 6, 9, 14, 3, 1, 6, 4, 5, 3, 2, 0};
-+static const HUFFBITS t8HB[] = {3, 4, 6, 18, 12, 5, 5, 1, 2, 16, 9, 3,
-+ 7, 3, 5, 14, 7, 3, 19, 17, 15, 13, 10, 4,
-+ 13, 5, 8, 11, 5, 1, 12, 4, 4, 1, 1, 0};
-+static const HUFFBITS t9HB[] = {7, 5, 9, 14, 15, 7, 6, 4, 5, 5, 6, 7,
-+ 7, 6, 8, 8, 8, 5, 15, 6, 9, 10, 5, 1,
-+ 11, 7, 9, 6, 4, 1, 14, 4, 6, 2, 6, 0};
-+static const HUFFBITS t10HB[] = {
-+ 1, 2, 10, 23, 35, 30, 12, 17, 3, 3, 8, 12, 18, 21, 12, 7,
-+ 11, 9, 15, 21, 32, 40, 19, 6, 14, 13, 22, 34, 46, 23, 18, 7,
-+ 20, 19, 33, 47, 27, 22, 9, 3, 31, 22, 41, 26, 21, 20, 5, 3,
-+ 14, 13, 10, 11, 16, 6, 5, 1, 9, 8, 7, 8, 4, 4, 2, 0};
-+static const HUFFBITS t11HB[] = {
-+ 3, 4, 10, 24, 34, 33, 21, 15, 5, 3, 4, 10, 32, 17, 11, 10,
-+ 11, 7, 13, 18, 30, 31, 20, 5, 25, 11, 19, 59, 27, 18, 12, 5,
-+ 35, 33, 31, 58, 30, 16, 7, 5, 28, 26, 32, 19, 17, 15, 8, 14,
-+ 14, 12, 9, 13, 14, 9, 4, 1, 11, 4, 6, 6, 6, 3, 2, 0};
-+static const HUFFBITS t12HB[] = {
-+ 9, 6, 16, 33, 41, 39, 38, 26, 7, 5, 6, 9, 23, 16, 26, 11,
-+ 17, 7, 11, 14, 21, 30, 10, 7, 17, 10, 15, 12, 18, 28, 14, 5,
-+ 32, 13, 22, 19, 18, 16, 9, 5, 40, 17, 31, 29, 17, 13, 4, 2,
-+ 27, 12, 11, 15, 10, 7, 4, 1, 27, 12, 8, 12, 6, 3, 1, 0};
-+static const HUFFBITS t13HB[] = {
-+ 1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19, 3, 4,
-+ 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14, 15, 13, 23, 36,
-+ 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16, 22, 20, 37, 61, 56, 79,
-+ 73, 64, 43, 76, 56, 37, 26, 31, 25, 14, 35, 16, 60, 57, 97, 75, 114, 91,
-+ 54, 73, 55, 41, 48, 53, 23, 24, 58, 27, 50, 96, 76, 70, 93, 84, 77, 58,
-+ 79, 29, 74, 49, 41, 17, 47, 45, 78, 74, 115, 94, 90, 79, 69, 83, 71, 50,
-+ 59, 38, 36, 15, 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44,
-+ 43, 42, 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16,
-+ 53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11, 35, 33,
-+ 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22, 53, 25, 23, 38,
-+ 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7, 34, 32, 28, 39, 49, 75,
-+ 30, 52, 48, 40, 52, 28, 18, 17, 9, 5, 45, 21, 34, 64, 56, 50, 49, 45,
-+ 31, 19, 12, 15, 10, 7, 6, 3, 48, 23, 20, 39, 36, 35, 53, 21, 16, 23,
-+ 13, 10, 6, 1, 4, 2, 16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8,
-+ 1, 1, 0, 1};
-+static const HUFFBITS t15HB[] = {
-+ 7, 12, 18, 53, 47, 76, 124, 108, 89, 123, 108, 119, 107, 81, 122, 63,
-+ 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36,
-+ 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33,
-+ 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29,
-+ 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27,
-+ 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38,
-+ 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30,
-+ 109, 53, 49, 94, 88, 75, 66, 122, 91, 73, 56, 42, 64, 44, 21, 25,
-+ 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20,
-+ 71, 34, 67, 60, 58, 49, 88, 76, 67, 106, 71, 54, 38, 39, 23, 15,
-+ 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9,
-+ 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11,
-+ 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7,
-+ 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3,
-+ 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1,
-+ 71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0};
-+static const HUFFBITS t16HB[] = {
-+ 1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195,
-+ 376, 17, 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119,
-+ 201, 107, 207, 9, 15, 13, 23, 38, 67, 58, 103, 90, 161, 72,
-+ 127, 117, 110, 209, 206, 16, 45, 21, 39, 69, 64, 114, 99, 87,
-+ 158, 140, 252, 212, 199, 387, 365, 26, 75, 36, 68, 65, 115, 101,
-+ 179, 164, 155, 264, 246, 226, 395, 382, 362, 9, 66, 30, 59, 56,
-+ 102, 185, 173, 265, 142, 253, 232, 400, 388, 378, 445, 16, 111, 54,
-+ 52, 100, 184, 178, 160, 133, 257, 244, 228, 217, 385, 366, 715, 10,
-+ 98, 48, 91, 88, 165, 157, 148, 261, 248, 407, 397, 372, 380, 889,
-+ 884, 8, 85, 84, 81, 159, 156, 143, 260, 249, 427, 401, 392, 383,
-+ 727, 713, 708, 7, 154, 76, 73, 141, 131, 256, 245, 426, 406, 394,
-+ 384, 735, 359, 710, 352, 11, 139, 129, 67, 125, 247, 233, 229, 219,
-+ 393, 743, 737, 720, 885, 882, 439, 4, 243, 120, 118, 115, 227, 223,
-+ 396, 746, 742, 736, 721, 712, 706, 223, 436, 6, 202, 224, 222, 218,
-+ 216, 389, 386, 381, 364, 888, 443, 707, 440, 437, 1728, 4, 747, 211,
-+ 210, 208, 370, 379, 734, 723, 714, 1735, 883, 877, 876, 3459, 865, 2,
-+ 377, 369, 102, 187, 726, 722, 358, 711, 709, 866, 1734, 871, 3458, 870,
-+ 434, 0, 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7,
-+ 5, 3, 1, 3};
-+static const HUFFBITS t24HB[] = {
-+ 15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032,
-+ 88, 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297,
-+ 279, 42, 47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315,
-+ 295, 541, 18, 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325,
-+ 311, 293, 271, 16, 147, 72, 69, 135, 127, 118, 112, 210, 200, 188, 352,
-+ 323, 306, 285, 540, 14, 263, 66, 129, 126, 119, 114, 214, 202, 192, 180,
-+ 341, 317, 301, 281, 262, 12, 249, 123, 121, 117, 113, 215, 206, 195, 185,
-+ 347, 330, 308, 291, 272, 520, 10, 435, 115, 111, 109, 211, 203, 196, 187,
-+ 353, 332, 313, 298, 283, 531, 381, 17, 427, 212, 208, 205, 201, 193, 186,
-+ 177, 169, 320, 303, 286, 268, 514, 377, 16, 335, 199, 197, 191, 189, 181,
-+ 174, 333, 321, 305, 289, 275, 521, 379, 371, 11, 668, 184, 183, 179, 175,
-+ 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10, 652, 346, 171, 168,
-+ 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6, 648, 322, 316,
-+ 312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4, 620, 300,
-+ 296, 294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2, 1033,
-+ 280, 278, 274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0,
-+ 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1,
-+ 3};
-+static const HUFFBITS t32HB[] = {1, 5, 4, 5, 6, 5, 4, 4,
-+ 7, 3, 6, 0, 7, 2, 3, 1};
-+static const HUFFBITS t33HB[] = {15, 14, 13, 12, 11, 10, 9, 8,
-+ 7, 6, 5, 4, 3, 2, 1, 0};
-
--static const unsigned char t1l[] = {1, 3, 2, 3};
--static const unsigned char t2l[] = {1, 3, 6, 3, 3, 5, 5, 5, 6};
--static const unsigned char t3l[] = {2, 2, 6, 3, 2, 5, 5, 5, 6};
--static const unsigned char t5l[] = {1, 3, 6, 7, 3, 3, 6, 7, 6, 6, 7, 8, 7, 6, 7, 8};
--static const unsigned char t6l[] = {3, 3, 5, 7, 3, 2, 4, 5, 4, 4, 5, 6, 6, 5, 6, 7};
--static const unsigned char t7l[] = {1, 3, 6, 8, 8, 9, 3, 4, 6, 7, 7, 8, 6, 5, 7, 8, 8, 9, 7, 7, 8, 9, 9, 9, 7, 7, 8, 9, 9, 10, 8, 8, 9, 10, 10, 10};
--static const unsigned char t8l[] = {2, 3, 6, 8, 8, 9, 3, 2, 4, 8, 8, 8, 6, 4, 6, 8, 8, 9, 8, 8, 8, 9, 9, 10, 8, 7, 8, 9, 10, 10, 9, 8, 9, 9, 11, 11};
--static const unsigned char t9l[] = {3, 3, 5, 6, 8, 9, 3, 3, 4, 5, 6, 8, 4, 4, 5, 6, 7, 8, 6, 5, 6, 7, 7, 8, 7, 6, 7, 7, 8, 9, 8, 7, 8, 8, 9, 9};
--static const unsigned char t10l[] = {1, 3, 6, 8, 9, 9, 9, 10, 3, 4, 6, 7, 8, 9, 8, 8, 6, 6, 7, 8, 9, 10, 9, 9, 7, 7, 8, 9, 10, 10, 9, 10, 8, 8, 9, 10, 10, 10, 10, 10, 9, 9, 10, 10, 11, 11, 10, 11, 8, 8, 9, 10, 10, 10, 11, 11, 9, 8, 9, 10, 10, 11, 11, 11};
--static const unsigned char t11l[] = {2, 3, 5, 7, 8, 9, 8, 9, 3, 3, 4, 6, 8, 8, 7, 8, 5, 5, 6, 7, 8, 9, 8, 8, 7, 6, 7, 9, 8, 10, 8, 9, 8, 8, 8, 9, 9, 10, 9, 10, 8, 8, 9, 10, 10, 11, 10, 11, 8, 7, 7, 8, 9, 10, 10, 10, 8, 7, 8, 9, 10, 10, 10, 10};
--static const unsigned char t12l[] = {4, 3, 5, 7, 8, 9, 9, 9, 3, 3, 4, 5, 7, 7, 8, 8, 5, 4, 5, 6, 7, 8, 7, 8, 6, 5, 6, 6, 7, 8, 8, 8, 7, 6, 7, 7, 8, 8, 8, 9, 8, 7, 8, 8, 8, 9, 8, 9, 8, 7, 7, 8, 8, 9, 9, 10, 9, 8, 8, 9, 9, 9, 9, 10};
--static const unsigned char t13l[] = {1, 4, 6, 7, 8, 9, 9, 10, 9, 10, 11, 11, 12, 12, 13, 13, 3, 4, 6, 7, 8, 8, 9, 9, 9, 9, 10, 10, 11, 12, 12, 12, 6, 6, 7, 8, 9, 9, 10, 10, 9, 10, 10, 11, 11, 12, 13, 13, 7, 7, 8, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 13, 13,
--8, 7, 9, 9, 10, 10, 11, 11, 10, 11, 11, 12, 12, 13, 13, 14, 9, 8, 9, 10, 10, 10, 11, 11, 11, 11, 12, 11, 13, 13, 14, 14, 9, 9, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14, 10, 9, 10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 14, 16, 16, 9, 8, 9, 10,
--10, 11, 11, 12, 12, 12, 12, 13, 13, 14, 15, 15, 10, 9, 10, 10, 11, 11, 11, 13, 12, 13, 13, 14, 14, 14, 16, 15, 10, 10, 10, 11, 11, 12, 12, 13, 12, 13, 14, 13, 14, 15, 16, 17, 11, 10, 10, 11, 12, 12, 12, 12, 13, 13, 13, 14, 15, 15, 15, 16, 11, 11, 11, 12, 12,
--13, 12, 13, 14, 14, 15, 15, 15, 16, 16, 16, 12, 11, 12, 13, 13, 13, 14, 14, 14, 14, 14, 15, 16, 15, 16, 16, 13, 12, 12, 13, 13, 13, 15, 14, 14, 17, 15, 15, 15, 17, 16, 16, 12, 12, 13, 14, 14, 14, 15, 14, 15, 15, 16, 16, 19, 18, 19, 16};
--static const unsigned char t15l[] = {3, 4, 5, 7, 7, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12, 13, 4, 3, 5, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 5, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 11, 11, 11, 6, 6, 6, 7, 7, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 7, 6, 7,
-- 7, 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 11, 8, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 11, 11, 11, 12, 9, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 12, 12, 9, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 12, 9, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11,
-- 12, 12, 12, 9, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 10, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 13, 12, 10, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 11, 10, 9, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 13, 13,
--11, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 12, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 12, 13, 12, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13};
--static const unsigned char t16l[] = {1, 4, 6, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 9, 3, 4, 6, 7, 8, 9, 9, 9, 10, 10, 10, 11, 12, 11, 12, 8, 6, 6, 7, 8, 9, 9, 10, 10, 11, 10, 11, 11, 11, 12, 12, 9, 8, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13,
-- 10, 9, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 9, 9, 8, 9, 9, 10, 11, 11, 12, 11, 12, 12, 13, 13, 13, 14, 10, 10, 9, 9, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 10, 10, 9, 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 13, 15, 15, 10, 10, 10,
-- 10, 11, 11, 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 10, 11, 10, 10, 11, 11, 12, 12, 13, 13, 13, 13, 14, 13, 14, 13, 11, 11, 11, 10, 11, 12, 12, 12, 12, 13, 14, 14, 14, 15, 15, 14, 10, 12, 11, 11, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 13, 14, 11, 12, 12,
-- 12, 12, 12, 13, 13, 13, 13, 15, 14, 14, 14, 14, 16, 11, 14, 12, 12, 12, 13, 13, 14, 14, 14, 16, 15, 15, 15, 17, 15, 11, 13, 13, 11, 12, 14, 14, 13, 14, 14, 15, 16, 15, 17, 15, 14, 11, 9, 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 8};
--static const unsigned char t24l[] = {4, 4, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 12, 9, 4, 4, 5, 6, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10, 8, 6, 5, 6, 7, 7, 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 7, 7, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 7, 8, 7, 7, 8,
-- 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 7, 9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 7, 9, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 7, 10, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 8, 10, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11,
--8, 10, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 8, 11, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 8, 11, 10, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 8, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 8, 11, 10, 10,
-- 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 8, 12, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 4};
--static const unsigned char t32l[] = {1, 4, 4, 5, 4, 6, 5, 6, 4, 5, 5, 6, 5, 6, 6, 6};
--static const unsigned char t33l[] = {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};
-+static const unsigned char t1l[] = {1, 3, 2, 3};
-+static const unsigned char t2l[] = {1, 3, 6, 3, 3, 5, 5, 5, 6};
-+static const unsigned char t3l[] = {2, 2, 6, 3, 2, 5, 5, 5, 6};
-+static const unsigned char t5l[] = {1, 3, 6, 7, 3, 3, 6, 7,
-+ 6, 6, 7, 8, 7, 6, 7, 8};
-+static const unsigned char t6l[] = {3, 3, 5, 7, 3, 2, 4, 5,
-+ 4, 4, 5, 6, 6, 5, 6, 7};
-+static const unsigned char t7l[] = {1, 3, 6, 8, 8, 9, 3, 4, 6, 7, 7, 8,
-+ 6, 5, 7, 8, 8, 9, 7, 7, 8, 9, 9, 9,
-+ 7, 7, 8, 9, 9, 10, 8, 8, 9, 10, 10, 10};
-+static const unsigned char t8l[] = {2, 3, 6, 8, 8, 9, 3, 2, 4, 8, 8, 8,
-+ 6, 4, 6, 8, 8, 9, 8, 8, 8, 9, 9, 10,
-+ 8, 7, 8, 9, 10, 10, 9, 8, 9, 9, 11, 11};
-+static const unsigned char t9l[] = {3, 3, 5, 6, 8, 9, 3, 3, 4, 5, 6, 8,
-+ 4, 4, 5, 6, 7, 8, 6, 5, 6, 7, 7, 8,
-+ 7, 6, 7, 7, 8, 9, 8, 7, 8, 8, 9, 9};
-+static const unsigned char t10l[] = {
-+ 1, 3, 6, 8, 9, 9, 9, 10, 3, 4, 6, 7, 8, 9, 8, 8,
-+ 6, 6, 7, 8, 9, 10, 9, 9, 7, 7, 8, 9, 10, 10, 9, 10,
-+ 8, 8, 9, 10, 10, 10, 10, 10, 9, 9, 10, 10, 11, 11, 10, 11,
-+ 8, 8, 9, 10, 10, 10, 11, 11, 9, 8, 9, 10, 10, 11, 11, 11};
-+static const unsigned char t11l[] = {
-+ 2, 3, 5, 7, 8, 9, 8, 9, 3, 3, 4, 6, 8, 8, 7, 8,
-+ 5, 5, 6, 7, 8, 9, 8, 8, 7, 6, 7, 9, 8, 10, 8, 9,
-+ 8, 8, 8, 9, 9, 10, 9, 10, 8, 8, 9, 10, 10, 11, 10, 11,
-+ 8, 7, 7, 8, 9, 10, 10, 10, 8, 7, 8, 9, 10, 10, 10, 10};
-+static const unsigned char t12l[] = {
-+ 4, 3, 5, 7, 8, 9, 9, 9, 3, 3, 4, 5, 7, 7, 8, 8, 5, 4, 5, 6, 7, 8,
-+ 7, 8, 6, 5, 6, 6, 7, 8, 8, 8, 7, 6, 7, 7, 8, 8, 8, 9, 8, 7, 8, 8,
-+ 8, 9, 8, 9, 8, 7, 7, 8, 8, 9, 9, 10, 9, 8, 8, 9, 9, 9, 9, 10};
-+static const unsigned char t13l[] = {
-+ 1, 4, 6, 7, 8, 9, 9, 10, 9, 10, 11, 11, 12, 12, 13, 13, 3, 4, 6,
-+ 7, 8, 8, 9, 9, 9, 9, 10, 10, 11, 12, 12, 12, 6, 6, 7, 8, 9, 9,
-+ 10, 10, 9, 10, 10, 11, 11, 12, 13, 13, 7, 7, 8, 9, 9, 10, 10, 10, 10,
-+ 11, 11, 11, 11, 12, 13, 13, 8, 7, 9, 9, 10, 10, 11, 11, 10, 11, 11, 12,
-+ 12, 13, 13, 14, 9, 8, 9, 10, 10, 10, 11, 11, 11, 11, 12, 11, 13, 13, 14,
-+ 14, 9, 9, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14, 10, 9,
-+ 10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 14, 16, 16, 9, 8, 9, 10, 10,
-+ 11, 11, 12, 12, 12, 12, 13, 13, 14, 15, 15, 10, 9, 10, 10, 11, 11, 11, 13,
-+ 12, 13, 13, 14, 14, 14, 16, 15, 10, 10, 10, 11, 11, 12, 12, 13, 12, 13, 14,
-+ 13, 14, 15, 16, 17, 11, 10, 10, 11, 12, 12, 12, 12, 13, 13, 13, 14, 15, 15,
-+ 15, 16, 11, 11, 11, 12, 12, 13, 12, 13, 14, 14, 15, 15, 15, 16, 16, 16, 12,
-+ 11, 12, 13, 13, 13, 14, 14, 14, 14, 14, 15, 16, 15, 16, 16, 13, 12, 12, 13,
-+ 13, 13, 15, 14, 14, 17, 15, 15, 15, 17, 16, 16, 12, 12, 13, 14, 14, 14, 15,
-+ 14, 15, 15, 16, 16, 19, 18, 19, 16};
-+static const unsigned char t15l[] = {
-+ 3, 4, 5, 7, 7, 8, 9, 9, 9, 10, 10, 11, 11, 11, 12, 13, 4, 3, 5,
-+ 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, 11, 5, 5, 5, 6, 7, 7,
-+ 8, 8, 8, 9, 9, 10, 10, 11, 11, 11, 6, 6, 6, 7, 7, 8, 8, 9, 9,
-+ 9, 10, 10, 10, 11, 11, 11, 7, 6, 7, 7, 8, 8, 9, 9, 9, 9, 10, 10,
-+ 10, 11, 11, 11, 8, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 11, 11, 11,
-+ 12, 9, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 12, 12, 9, 8,
-+ 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 12, 9, 8, 8, 9, 9,
-+ 9, 9, 10, 10, 10, 10, 11, 11, 12, 12, 12, 9, 8, 9, 9, 9, 9, 10, 10,
-+ 10, 11, 11, 11, 11, 12, 12, 12, 10, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11,
-+ 11, 11, 12, 13, 12, 10, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12,
-+ 12, 13, 11, 10, 9, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 13, 13, 11,
-+ 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 12, 11, 11, 11,
-+ 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 12, 13, 12, 11, 11, 11, 11, 11, 11,
-+ 12, 12, 12, 12, 12, 13, 13, 13, 13};
-+static const unsigned char t16l[] = {
-+ 1, 4, 6, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 9, 3, 4, 6,
-+ 7, 8, 9, 9, 9, 10, 10, 10, 11, 12, 11, 12, 8, 6, 6, 7, 8, 9, 9,
-+ 10, 10, 11, 10, 11, 11, 11, 12, 12, 9, 8, 7, 8, 9, 9, 10, 10, 10, 11,
-+ 11, 12, 12, 12, 13, 13, 10, 9, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12,
-+ 13, 13, 13, 9, 9, 8, 9, 9, 10, 11, 11, 12, 11, 12, 12, 13, 13, 13, 14,
-+ 10, 10, 9, 9, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 10, 10, 9,
-+ 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 13, 15, 15, 10, 10, 10, 10, 11, 11,
-+ 11, 12, 12, 13, 13, 13, 13, 14, 14, 14, 10, 11, 10, 10, 11, 11, 12, 12, 13,
-+ 13, 13, 13, 14, 13, 14, 13, 11, 11, 11, 10, 11, 12, 12, 12, 12, 13, 14, 14,
-+ 14, 15, 15, 14, 10, 12, 11, 11, 11, 12, 12, 13, 14, 14, 14, 14, 14, 14, 13,
-+ 14, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 15, 14, 14, 14, 14, 16, 11, 14,
-+ 12, 12, 12, 13, 13, 14, 14, 14, 16, 15, 15, 15, 17, 15, 11, 13, 13, 11, 12,
-+ 14, 14, 13, 14, 14, 15, 16, 15, 17, 15, 14, 11, 9, 8, 8, 9, 9, 10, 10,
-+ 10, 11, 11, 11, 11, 11, 11, 11, 8};
-+static const unsigned char t24l[] = {
-+ 4, 4, 6, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 12, 9, 4, 4, 5,
-+ 6, 7, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10, 8, 6, 5, 6, 7, 7, 8,
-+ 8, 9, 9, 9, 9, 10, 10, 10, 11, 7, 7, 6, 7, 7, 8, 8, 8, 9, 9,
-+ 9, 9, 10, 10, 10, 10, 7, 8, 7, 7, 8, 8, 8, 8, 9, 9, 9, 10, 10,
-+ 10, 10, 11, 7, 9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10,
-+ 7, 9, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 7, 10, 8,
-+ 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 8, 10, 9, 9, 9, 9,
-+ 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 8, 10, 9, 9, 9, 9, 9, 9, 10,
-+ 10, 10, 10, 10, 11, 11, 11, 8, 11, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10,
-+ 11, 11, 11, 11, 8, 11, 10, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
-+ 11, 8, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 8, 11,
-+ 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 8, 12, 10, 10, 10,
-+ 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 8, 8, 7, 7, 7, 7, 7, 7,
-+ 7, 7, 7, 7, 8, 8, 8, 8, 4};
-+static const unsigned char t32l[] = {1, 4, 4, 5, 4, 6, 5, 6,
-+ 4, 5, 5, 6, 5, 6, 6, 6};
-+static const unsigned char t33l[] = {4, 4, 4, 4, 4, 4, 4, 4,
-+ 4, 4, 4, 4, 4, 4, 4, 4};
-
- #define NOREF -1
--const struct huffcodetab shine_huffman_table[HTN] =
--{
--{ 0, 0, 0, 0,NULL,NULL},
--{ 2, 2, 0, 0,t1HB, t1l},
--{ 3, 3, 0, 0,t2HB, t2l},
--{ 3, 3, 0, 0,t3HB, t3l},
--{ 0, 0, 0, 0,NULL,NULL},/* Apparently not used*/
--{ 4, 4, 0, 0,t5HB, t5l},
--{ 4, 4, 0, 0,t6HB, t6l},
--{ 6, 6, 0, 0,t7HB, t7l},
--{ 6, 6, 0, 0,t8HB, t8l},
--{ 6, 6, 0, 0,t9HB, t9l},
--{ 8, 8, 0, 0,t10HB, t10l},
--{ 8, 8, 0, 0,t11HB, t11l},
--{ 8, 8, 0, 0,t12HB, t12l},
--{16,16, 0, 0,t13HB, t13l},
--{ 0, 0, 0, 0,NULL,NULL},/* Apparently not used*/
--{16,16, 0, 0,t15HB, t15l},
--{16,16, 1, 1,t16HB, t16l},
--{16,16, 2, 3,t16HB, t16l},
--{16,16, 3, 7,t16HB, t16l},
--{16,16, 4, 15,t16HB, t16l},
--{16,16, 6, 63,t16HB, t16l},
--{16,16, 8, 255,t16HB, t16l},
--{16,16,10,1023,t16HB, t16l},
--{16,16,13,8191,t16HB, t16l},
--{16,16, 4, 15,t24HB, t24l},
--{16,16, 5, 31,t24HB, t24l},
--{16,16, 6, 63,t24HB, t24l},
--{16,16, 7, 127,t24HB, t24l},
--{16,16, 8, 255,t24HB, t24l},
--{16,16, 9, 511,t24HB, t24l},
--{16,16,11,2047,t24HB, t24l},
--{16,16,13,8191,t24HB, t24l},
--{ 1,16, 0, 0,t32HB, t32l},
--{ 1,16, 0, 0,t33HB, t33l},
-+const struct huffcodetab shine_huffman_table[HTN] = {
-+ {0, 0, 0, 0, NULL, NULL},
-+ {2, 2, 0, 0, t1HB, t1l},
-+ {3, 3, 0, 0, t2HB, t2l},
-+ {3, 3, 0, 0, t3HB, t3l},
-+ {0, 0, 0, 0, NULL, NULL}, /* Apparently not used*/
-+ {4, 4, 0, 0, t5HB, t5l},
-+ {4, 4, 0, 0, t6HB, t6l},
-+ {6, 6, 0, 0, t7HB, t7l},
-+ {6, 6, 0, 0, t8HB, t8l},
-+ {6, 6, 0, 0, t9HB, t9l},
-+ {8, 8, 0, 0, t10HB, t10l},
-+ {8, 8, 0, 0, t11HB, t11l},
-+ {8, 8, 0, 0, t12HB, t12l},
-+ {16, 16, 0, 0, t13HB, t13l},
-+ {0, 0, 0, 0, NULL, NULL}, /* Apparently not used*/
-+ {16, 16, 0, 0, t15HB, t15l},
-+ {16, 16, 1, 1, t16HB, t16l},
-+ {16, 16, 2, 3, t16HB, t16l},
-+ {16, 16, 3, 7, t16HB, t16l},
-+ {16, 16, 4, 15, t16HB, t16l},
-+ {16, 16, 6, 63, t16HB, t16l},
-+ {16, 16, 8, 255, t16HB, t16l},
-+ {16, 16, 10, 1023, t16HB, t16l},
-+ {16, 16, 13, 8191, t16HB, t16l},
-+ {16, 16, 4, 15, t24HB, t24l},
-+ {16, 16, 5, 31, t24HB, t24l},
-+ {16, 16, 6, 63, t24HB, t24l},
-+ {16, 16, 7, 127, t24HB, t24l},
-+ {16, 16, 8, 255, t24HB, t24l},
-+ {16, 16, 9, 511, t24HB, t24l},
-+ {16, 16, 11, 2047, t24HB, t24l},
-+ {16, 16, 13, 8191, t24HB, t24l},
-+ {1, 16, 0, 0, t32HB, t32l},
-+ {1, 16, 0, 0, t33HB, t33l},
- };
--
--
-diff --git a/src/lib/huffman.h b/src/lib/huffman.h
-index d2d5b51..6a341c7 100644
---- a/src/lib/huffman.h
-+++ b/src/lib/huffman.h
-@@ -1,6 +1,8 @@
-+#include <stdint.h>
-+
- #define HUFFBITS uint16_t
--#define HTN 34
--#define MXOFF 250
-+#define HTN 34
-+#define MXOFF 250
-
- struct huffcodetab {
- unsigned int xlen; /*max. x-index+ */
-@@ -11,9 +13,8 @@ struct huffcodetab {
- const unsigned char *hlen; /*pointer to array[xlen][ylen] */
- };
-
--extern const struct huffcodetab shine_huffman_table[HTN];/* global memory block */
-- /* array of all huffcodtable headers */
-- /* 0..31 Huffman code table 0..31 */
-- /* 32,33 count1-tables */
--
--
-+extern const struct huffcodetab
-+ shine_huffman_table[HTN]; /* global memory block */
-+ /* array of all huffcodtable headers */
-+ /* 0..31 Huffman code table 0..31 */
-+ /* 32,33 count1-tables */
-diff --git a/src/lib/l3bitstream.c b/src/lib/l3bitstream.c
-index ba788e6..1b2849e 100644
---- a/src/lib/l3bitstream.c
-+++ b/src/lib/l3bitstream.c
-@@ -1,20 +1,22 @@
- /* l3bitstrea.c */
-
--#include "types.h"
--#include "l3mdct.h"
-+#include "l3bitstream.h" /* the public interface */
-+#include "bitstream.h"
-+#include "huffman.h"
- #include "l3loop.h"
-+#include "l3mdct.h"
- #include "layer3.h"
--#include "huffman.h"
--#include "bitstream.h"
- #include "tables.h"
--#include "l3bitstream.h" /* the public interface */
-+#include "types.h"
-
- static void shine_HuffmanCode(bitstream_t *bs, int table_select, int x, int y);
--static void shine_huffman_coder_count1(bitstream_t *bs, const struct huffcodetab *h, int v, int w, int x, int y);
-+static void shine_huffman_coder_count1(bitstream_t *bs,
-+ const struct huffcodetab *h, int v,
-+ int w, int x, int y);
-
--static void encodeSideInfo( shine_global_config *config );
--static void encodeMainData( shine_global_config *config );
--static void Huffmancodebits( shine_global_config *config, int *ix, gr_info *gi);
-+static void encodeSideInfo(shine_global_config *config);
-+static void encodeMainData(shine_global_config *config);
-+static void Huffmancodebits(shine_global_config *config, int *ix, gr_info *gi);
-
- /*
- shine_format_bitstream()
-@@ -27,130 +29,121 @@ static void Huffmancodebits( shine_global_config *config, int *ix, gr_info *gi);
- in the IS).
- */
-
--void
--shine_format_bitstream(shine_global_config *config)
--{
-+void shine_format_bitstream(shine_global_config *config) {
- int gr, ch, i;
-
-- for ( ch = 0; ch < config->wave.channels; ch++ )
-- for ( gr = 0; gr < config->mpeg.granules_per_frame; gr++ )
-- {
-- int *pi = &config->l3_enc[ch][gr][0];
-- int32_t *pr = &config->mdct_freq[ch][gr][0];
-- for ( i = 0; i < GRANULE_SIZE; i++ )
-- {
-- if ( (pr[i] < 0) && (pi[i] > 0) )
-- pi[i] *= -1;
-- }
-+ for (ch = 0; ch < config->wave.channels; ch++)
-+ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++) {
-+ int *pi = &config->l3_enc[ch][gr][0];
-+ int32_t *pr = &config->mdct_freq[ch][gr][0];
-+ for (i = 0; i < GRANULE_SIZE; i++) {
-+ if ((pr[i] < 0) && (pi[i] > 0))
-+ pi[i] *= -1;
- }
-+ }
-
-- encodeSideInfo( config );
-- encodeMainData( config );
-+ encodeSideInfo(config);
-+ encodeMainData(config);
- }
-
--static void encodeMainData(shine_global_config *config)
--{
-+static void encodeMainData(shine_global_config *config) {
- int gr, ch, sfb;
-- shine_side_info_t si = config->side_info;
--
-- for ( gr = 0; gr < config->mpeg.granules_per_frame; gr++ )
-- {
-- for ( ch = 0; ch < config->wave.channels; ch++ )
-- {
-- gr_info *gi = &(si.gr[gr].ch[ch].tt);
-- unsigned slen1 = shine_slen1_tab[ gi->scalefac_compress ];
-- unsigned slen2 = shine_slen2_tab[ gi->scalefac_compress ];
-- int *ix = &config->l3_enc[ch][gr][0];
--
-- if ( gr == 0 || si.scfsi[ch][0] == 0 )
-- for ( sfb = 0; sfb < 6; sfb++ )
-- shine_putbits( &config->bs, config->scalefactor.l[gr][ch][sfb], slen1 );
-- if ( gr == 0 || si.scfsi[ch][1] == 0 )
-- for ( sfb = 6; sfb < 11; sfb++ )
-- shine_putbits( &config->bs, config->scalefactor.l[gr][ch][sfb], slen1 );
-- if ( gr == 0 || si.scfsi[ch][2] == 0 )
-- for ( sfb = 11; sfb < 16; sfb++ )
-- shine_putbits( &config->bs, config->scalefactor.l[gr][ch][sfb], slen2 );
-- if ( gr == 0 || si.scfsi[ch][3] == 0 )
-- for ( sfb = 16; sfb < 21; sfb++ )
-- shine_putbits( &config->bs, config->scalefactor.l[gr][ch][sfb], slen2 );
--
-- Huffmancodebits( config, ix, gi );
-- }
-+ shine_side_info_t si = config->side_info;
-+
-+ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++) {
-+ for (ch = 0; ch < config->wave.channels; ch++) {
-+ gr_info *gi = &(si.gr[gr].ch[ch].tt);
-+ unsigned slen1 = shine_slen1_tab[gi->scalefac_compress];
-+ unsigned slen2 = shine_slen2_tab[gi->scalefac_compress];
-+ int *ix = &config->l3_enc[ch][gr][0];
-+
-+ if (gr == 0 || si.scfsi[ch][0] == 0)
-+ for (sfb = 0; sfb < 6; sfb++)
-+ shine_putbits(&config->bs, config->scalefactor.l[gr][ch][sfb], slen1);
-+ if (gr == 0 || si.scfsi[ch][1] == 0)
-+ for (sfb = 6; sfb < 11; sfb++)
-+ shine_putbits(&config->bs, config->scalefactor.l[gr][ch][sfb], slen1);
-+ if (gr == 0 || si.scfsi[ch][2] == 0)
-+ for (sfb = 11; sfb < 16; sfb++)
-+ shine_putbits(&config->bs, config->scalefactor.l[gr][ch][sfb], slen2);
-+ if (gr == 0 || si.scfsi[ch][3] == 0)
-+ for (sfb = 16; sfb < 21; sfb++)
-+ shine_putbits(&config->bs, config->scalefactor.l[gr][ch][sfb], slen2);
-+
-+ Huffmancodebits(config, ix, gi);
- }
-+ }
- }
-
--static void encodeSideInfo( shine_global_config *config )
--{
-+static void encodeSideInfo(shine_global_config *config) {
- int gr, ch, scfsi_band, region;
-- shine_side_info_t si = config->side_info;
--
-- shine_putbits( &config->bs, 0x7ff, 11 );
-- shine_putbits( &config->bs, config->mpeg.version, 2 );
-- shine_putbits( &config->bs, config->mpeg.layer, 2 );
-- shine_putbits( &config->bs, !config->mpeg.crc, 1 );
-- shine_putbits( &config->bs, config->mpeg.bitrate_index, 4 );
-- shine_putbits( &config->bs, config->mpeg.samplerate_index % 3, 2 );
-- shine_putbits( &config->bs, config->mpeg.padding, 1 );
-- shine_putbits( &config->bs, config->mpeg.ext, 1 );
-- shine_putbits( &config->bs, config->mpeg.mode, 2 );
-- shine_putbits( &config->bs, config->mpeg.mode_ext, 2 );
-- shine_putbits( &config->bs, config->mpeg.copyright, 1 );
-- shine_putbits( &config->bs, config->mpeg.original, 1 );
-- shine_putbits( &config->bs, config->mpeg.emph, 2 );
--
-- if ( config->mpeg.version == MPEG_I ) {
-- shine_putbits( &config->bs, 0, 9 );
-- if ( config->wave.channels == 2 )
-- shine_putbits( &config->bs, si.private_bits, 3 );
-+ shine_side_info_t si = config->side_info;
-+
-+ shine_putbits(&config->bs, 0x7ff, 11);
-+ shine_putbits(&config->bs, config->mpeg.version, 2);
-+ shine_putbits(&config->bs, config->mpeg.layer, 2);
-+ shine_putbits(&config->bs, !config->mpeg.crc, 1);
-+ shine_putbits(&config->bs, config->mpeg.bitrate_index, 4);
-+ shine_putbits(&config->bs, config->mpeg.samplerate_index % 3, 2);
-+ shine_putbits(&config->bs, config->mpeg.padding, 1);
-+ shine_putbits(&config->bs, config->mpeg.ext, 1);
-+ shine_putbits(&config->bs, config->mpeg.mode, 2);
-+ shine_putbits(&config->bs, config->mpeg.mode_ext, 2);
-+ shine_putbits(&config->bs, config->mpeg.copyright, 1);
-+ shine_putbits(&config->bs, config->mpeg.original, 1);
-+ shine_putbits(&config->bs, config->mpeg.emph, 2);
-+
-+ if (config->mpeg.version == MPEG_I) {
-+ shine_putbits(&config->bs, 0, 9);
-+ if (config->wave.channels == 2)
-+ shine_putbits(&config->bs, si.private_bits, 3);
- else
-- shine_putbits( &config->bs, si.private_bits, 5 );
-+ shine_putbits(&config->bs, si.private_bits, 5);
- } else {
-- shine_putbits( &config->bs, 0, 8 );
-- if ( config->wave.channels == 2 )
-- shine_putbits( &config->bs, si.private_bits, 2 );
-+ shine_putbits(&config->bs, 0, 8);
-+ if (config->wave.channels == 2)
-+ shine_putbits(&config->bs, si.private_bits, 2);
- else
-- shine_putbits( &config->bs, si.private_bits, 1 );
-+ shine_putbits(&config->bs, si.private_bits, 1);
- }
-
-- if ( config->mpeg.version == MPEG_I )
-- for ( ch = 0; ch < config->wave.channels; ch++ ) {
-- for ( scfsi_band = 0; scfsi_band < 4; scfsi_band++ )
-- shine_putbits( &config->bs, si.scfsi[ch][scfsi_band], 1 );
-+ if (config->mpeg.version == MPEG_I)
-+ for (ch = 0; ch < config->wave.channels; ch++) {
-+ for (scfsi_band = 0; scfsi_band < 4; scfsi_band++)
-+ shine_putbits(&config->bs, si.scfsi[ch][scfsi_band], 1);
- }
-
-- for ( gr = 0; gr < config->mpeg.granules_per_frame; gr++ )
-- for ( ch = 0; ch < config->wave.channels ; ch++ )
-- {
-- gr_info *gi = &(si.gr[gr].ch[ch].tt);
--
-- shine_putbits( &config->bs, gi->part2_3_length, 12 );
-- shine_putbits( &config->bs, gi->big_values, 9 );
-- shine_putbits( &config->bs, gi->global_gain, 8 );
-- if ( config->mpeg.version == MPEG_I )
-- shine_putbits( &config->bs, gi->scalefac_compress, 4 );
-- else
-- shine_putbits( &config->bs, gi->scalefac_compress, 9 );
-- shine_putbits( &config->bs, 0, 1 );
--
-- for ( region = 0; region < 3; region++ )
-- shine_putbits( &config->bs, gi->table_select[region], 5 );
--
-- shine_putbits( &config->bs, gi->region0_count, 4 );
-- shine_putbits( &config->bs, gi->region1_count, 3 );
--
-- if ( config->mpeg.version == MPEG_I )
-- shine_putbits( &config->bs, gi->preflag, 1 );
-- shine_putbits( &config->bs, gi->scalefac_scale, 1 );
-- shine_putbits( &config->bs, gi->count1table_select, 1 );
-- }
-+ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++)
-+ for (ch = 0; ch < config->wave.channels; ch++) {
-+ gr_info *gi = &(si.gr[gr].ch[ch].tt);
-+
-+ shine_putbits(&config->bs, gi->part2_3_length, 12);
-+ shine_putbits(&config->bs, gi->big_values, 9);
-+ shine_putbits(&config->bs, gi->global_gain, 8);
-+ if (config->mpeg.version == MPEG_I)
-+ shine_putbits(&config->bs, gi->scalefac_compress, 4);
-+ else
-+ shine_putbits(&config->bs, gi->scalefac_compress, 9);
-+ shine_putbits(&config->bs, 0, 1);
-+
-+ for (region = 0; region < 3; region++)
-+ shine_putbits(&config->bs, gi->table_select[region], 5);
-+
-+ shine_putbits(&config->bs, gi->region0_count, 4);
-+ shine_putbits(&config->bs, gi->region1_count, 3);
-+
-+ if (config->mpeg.version == MPEG_I)
-+ shine_putbits(&config->bs, gi->preflag, 1);
-+ shine_putbits(&config->bs, gi->scalefac_scale, 1);
-+ shine_putbits(&config->bs, gi->count1table_select, 1);
-+ }
- }
-
- /* Note the discussion of huffmancodebits() on pages 28 and 29 of the IS, as
- well as the definitions of the side information on pages 26 and 27. */
--static void Huffmancodebits( shine_global_config *config, int *ix, gr_info *gi )
--{
-- const int *scalefac = &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
-+static void Huffmancodebits(shine_global_config *config, int *ix, gr_info *gi) {
-+ const int *scalefac =
-+ &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
- unsigned scalefac_index;
- int region1Start, region2Start;
- int i, bigvalues, count1End;
-@@ -164,168 +157,153 @@ static void Huffmancodebits( shine_global_config *config, int *ix, gr_info *gi )
- bigvalues = gi->big_values << 1;
-
- scalefac_index = gi->region0_count + 1;
-- region1Start = scalefac[ scalefac_index ];
-+ region1Start = scalefac[scalefac_index];
- scalefac_index += gi->region1_count + 1;
-- region2Start = scalefac[ scalefac_index ];
--
-- for ( i = 0; i < bigvalues; i += 2 )
-- {
-- /* get table pointer */
-- int idx = (i >= region1Start) + (i >= region2Start);
-- unsigned tableindex = gi->table_select[idx];
-- /* get huffman code */
-- if ( tableindex )
-- {
-- x = ix[i];
-- y = ix[i + 1];
-- shine_HuffmanCode( &config->bs, tableindex, x, y );
-- }
-+ region2Start = scalefac[scalefac_index];
-+
-+ for (i = 0; i < bigvalues; i += 2) {
-+ /* get table pointer */
-+ int idx = (i >= region1Start) + (i >= region2Start);
-+ unsigned tableindex = gi->table_select[idx];
-+ /* get huffman code */
-+ if (tableindex) {
-+ x = ix[i];
-+ y = ix[i + 1];
-+ shine_HuffmanCode(&config->bs, tableindex, x, y);
- }
-+ }
-
- /* 2: Write count1 area */
- h = &shine_huffman_table[gi->count1table_select + 32];
-- count1End = bigvalues + (gi->count1 <<2);
-- for ( i = bigvalues; i < count1End; i += 4 )
-- {
-- v = ix[i];
-- w = ix[i+1];
-- x = ix[i+2];
-- y = ix[i+3];
-- shine_huffman_coder_count1( &config->bs, h, v, w, x, y );
-- }
-+ count1End = bigvalues + (gi->count1 << 2);
-+ for (i = bigvalues; i < count1End; i += 4) {
-+ v = ix[i];
-+ w = ix[i + 1];
-+ x = ix[i + 2];
-+ y = ix[i + 3];
-+ shine_huffman_coder_count1(&config->bs, h, v, w, x, y);
-+ }
-
- bits = shine_get_bits_count(&config->bs) - bits;
- bits = gi->part2_3_length - gi->part2_length - bits;
-- if (bits)
-- {
-- int stuffingWords = bits / 32;
-- int remainingBits = bits % 32;
--
-- /* Due to the nature of the Huffman code tables, we will pad with ones */
-- while ( stuffingWords-- )
-- shine_putbits( &config->bs, ~0, 32 );
-- if ( remainingBits )
-- shine_putbits( &config->bs, (1UL << remainingBits) - 1, remainingBits );
-- }
-+ if (bits) {
-+ int stuffingWords = bits / 32;
-+ int remainingBits = bits % 32;
-+
-+ /* Due to the nature of the Huffman code tables, we will pad with ones */
-+ while (stuffingWords--)
-+ shine_putbits(&config->bs, ~0, 32);
-+ if (remainingBits)
-+ shine_putbits(&config->bs, (1UL << remainingBits) - 1, remainingBits);
-+ }
- }
-
--static inline int shine_abs_and_sign( int *x )
--{
-- if ( *x > 0 ) return 0;
-+static inline int shine_abs_and_sign(int *x) {
-+ if (*x > 0)
-+ return 0;
- *x *= -1;
- return 1;
- }
-
--static void shine_huffman_coder_count1( bitstream_t *bs, const struct huffcodetab *h, int v, int w, int x, int y )
--{
-+static void shine_huffman_coder_count1(bitstream_t *bs,
-+ const struct huffcodetab *h, int v,
-+ int w, int x, int y) {
- unsigned int signv, signw, signx, signy;
- unsigned int code = 0;
- int p, cbits = 0;
-
-- signv = shine_abs_and_sign( &v );
-- signw = shine_abs_and_sign( &w );
-- signx = shine_abs_and_sign( &x );
-- signy = shine_abs_and_sign( &y );
-+ signv = shine_abs_and_sign(&v);
-+ signw = shine_abs_and_sign(&w);
-+ signx = shine_abs_and_sign(&x);
-+ signy = shine_abs_and_sign(&y);
-
- p = v + (w << 1) + (x << 2) + (y << 3);
-- shine_putbits( bs, h->table[p], h->hlen[p] );
-+ shine_putbits(bs, h->table[p], h->hlen[p]);
-
-- if ( v ) {
-+ if (v) {
- code = signv;
- cbits = 1;
- }
-- if ( w ) {
-+ if (w) {
- code = (code << 1) | signw;
- cbits++;
- }
-- if ( x ) {
-+ if (x) {
- code = (code << 1) | signx;
- cbits++;
- }
-- if ( y ) {
-+ if (y) {
- code = (code << 1) | signy;
- cbits++;
- }
-- shine_putbits( bs, code, cbits );
-+ shine_putbits(bs, code, cbits);
- }
-
- /* Implements the pseudocode of page 98 of the IS */
--static void shine_HuffmanCode(bitstream_t *bs, int table_select, int x, int y)
--{
-+static void shine_HuffmanCode(bitstream_t *bs, int table_select, int x, int y) {
- int cbits = 0, xbits = 0;
- unsigned int code = 0, ext = 0;
- unsigned signx, signy, ylen, idx;
- const struct huffcodetab *h;
-
-- signx = shine_abs_and_sign( &x );
-- signy = shine_abs_and_sign( &y );
-+ signx = shine_abs_and_sign(&x);
-+ signy = shine_abs_and_sign(&y);
-
- h = &(shine_huffman_table[table_select]);
- ylen = h->ylen;
-
-- if ( table_select > 15 )
-- { /* ESC-table is used */
-- unsigned linbitsx = 0, linbitsy = 0, linbits = h->linbits;
--
-- if ( x > 14 )
-- {
-- linbitsx = x - 15;
-- x = 15;
-- }
-- if ( y > 14 )
-- {
-- linbitsy = y - 15;
-- y = 15;
-- }
--
-- idx = (x * ylen) + y;
-- code = h->table[idx];
-- cbits = h->hlen [idx];
-- if ( x > 14 )
-- {
-- ext |= linbitsx;
-- xbits += linbits;
-- }
-- if ( x != 0 )
-- {
-- ext <<= 1;
-- ext |= signx;
-- xbits += 1;
-- }
-- if ( y > 14 )
-- {
-- ext <<= linbits;
-- ext |= linbitsy;
-- xbits += linbits;
-- }
-- if ( y != 0 )
-- {
-- ext <<= 1;
-- ext |= signy;
-- xbits += 1;
-- }
--
-- shine_putbits( bs, code, cbits);
-- shine_putbits( bs, ext, xbits);
-+ if (table_select > 15) { /* ESC-table is used */
-+ unsigned linbitsx = 0, linbitsy = 0, linbits = h->linbits;
-+
-+ if (x > 14) {
-+ linbitsx = x - 15;
-+ x = 15;
-+ }
-+ if (y > 14) {
-+ linbitsy = y - 15;
-+ y = 15;
-+ }
-+
-+ idx = (x * ylen) + y;
-+ code = h->table[idx];
-+ cbits = h->hlen[idx];
-+ if (x > 14) {
-+ ext |= linbitsx;
-+ xbits += linbits;
- }
-- else
-- { /* No ESC-words */
-- idx = (x * ylen) + y;
-- code = h->table[idx];
-- cbits = h->hlen[idx];
-- if ( x != 0 )
-- {
-- code <<= 1;
-- code |= signx;
-- cbits += 1;
-- }
-- if ( y != 0 )
-- {
-- code <<= 1;
-- code |= signy;
-- cbits += 1;
-- }
--
-- shine_putbits( bs, code, cbits);
-+ if (x != 0) {
-+ ext <<= 1;
-+ ext |= signx;
-+ xbits += 1;
- }
-+ if (y > 14) {
-+ ext <<= linbits;
-+ ext |= linbitsy;
-+ xbits += linbits;
-+ }
-+ if (y != 0) {
-+ ext <<= 1;
-+ ext |= signy;
-+ xbits += 1;
-+ }
-+
-+ shine_putbits(bs, code, cbits);
-+ shine_putbits(bs, ext, xbits);
-+ } else { /* No ESC-words */
-+ idx = (x * ylen) + y;
-+ code = h->table[idx];
-+ cbits = h->hlen[idx];
-+ if (x != 0) {
-+ code <<= 1;
-+ code |= signx;
-+ cbits += 1;
-+ }
-+ if (y != 0) {
-+ code <<= 1;
-+ code |= signy;
-+ cbits += 1;
-+ }
-+
-+ shine_putbits(bs, code, cbits);
-+ }
- }
-diff --git a/src/lib/l3bitstream.h b/src/lib/l3bitstream.h
-index 6e165f5..fa61899 100644
---- a/src/lib/l3bitstream.h
-+++ b/src/lib/l3bitstream.h
-@@ -1,6 +1,8 @@
- #ifndef shine_BITSTREAM_H
- #define shine_BITSTREAM_H
-
-+#include "types.h"
-+
- void shine_format_bitstream(shine_global_config *config);
-
- #endif
-diff --git a/src/lib/l3loop.c b/src/lib/l3loop.c
-index 609c2b2..d3799fb 100644
---- a/src/lib/l3loop.c
-+++ b/src/lib/l3loop.c
-@@ -1,34 +1,40 @@
- /* l3loop.c */
-
--#include "types.h"
--#include "tables.h"
- #include "l3loop.h"
--#include "layer3.h"
--#include "huffman.h"
- #include "bitstream.h"
-+#include "huffman.h"
- #include "l3bitstream.h"
-+#include "layer3.h"
- #include "reservoir.h"
-+#include "tables.h"
-+#include "types.h"
-
--#define e 2.71828182845
--#define CBLIMIT 21
-+#define e 2.71828182845
-+#define CBLIMIT 21
- #define SFB_LMAX 22
- #define en_tot_krit 10
- #define en_dif_krit 100
- #define en_scfsi_band_krit 10
- #define xm_scfsi_band_krit 10
-
--static void calc_scfsi(shine_psy_xmin_t *l3_xmin, int ch, int gr, shine_global_config *config);
-+static void calc_scfsi(shine_psy_xmin_t *l3_xmin, int ch, int gr,
-+ shine_global_config *config);
- static int part2_length(int gr, int ch, shine_global_config *config);
--static int bin_search_StepSize(int desired_rate, int ix[GRANULE_SIZE], gr_info * cod_info, shine_global_config *config);
--static int count_bit(int ix[GRANULE_SIZE], unsigned int start, unsigned int end, unsigned int table );
-+static int bin_search_StepSize(int desired_rate, int ix[GRANULE_SIZE],
-+ gr_info *cod_info, shine_global_config *config);
-+static int count_bit(int ix[GRANULE_SIZE], unsigned int start, unsigned int end,
-+ unsigned int table);
- static int bigv_bitcount(int ix[GRANULE_SIZE], gr_info *gi);
--static int new_choose_table( int ix[GRANULE_SIZE], unsigned int begin, unsigned int end );
--static void bigv_tab_select( int ix[GRANULE_SIZE], gr_info *cod_info );
--static void subdivide(gr_info *cod_info, shine_global_config *config );
--static int count1_bitcount( int ix[ GRANULE_SIZE ], gr_info *cod_info );
--static void calc_runlen( int ix[GRANULE_SIZE], gr_info *cod_info );
--static void calc_xmin(shine_psy_ratio_t *ratio, gr_info *cod_info, shine_psy_xmin_t *l3_xmin, int gr, int ch );
--static int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config);
-+static int new_choose_table(int ix[GRANULE_SIZE], unsigned int begin,
-+ unsigned int end);
-+static void bigv_tab_select(int ix[GRANULE_SIZE], gr_info *cod_info);
-+static void subdivide(gr_info *cod_info, shine_global_config *config);
-+static int count1_bitcount(int ix[GRANULE_SIZE], gr_info *cod_info);
-+static void calc_runlen(int ix[GRANULE_SIZE], gr_info *cod_info);
-+static void calc_xmin(shine_psy_ratio_t *ratio, gr_info *cod_info,
-+ shine_psy_xmin_t *l3_xmin, int gr, int ch);
-+static int quantize(int ix[GRANULE_SIZE], int stepsize,
-+ shine_global_config *config);
-
- /*
- * shine_inner_loop:
-@@ -36,25 +42,22 @@ static int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *con
- * The code selects the best quantizerStepSize for a particular set
- * of scalefacs.
- */
--int shine_inner_loop(int ix[GRANULE_SIZE],
-- int max_bits, gr_info *cod_info, int gr, int ch,
-- shine_global_config *config )
--{
-+int shine_inner_loop(int ix[GRANULE_SIZE], int max_bits, gr_info *cod_info,
-+ int gr, int ch, shine_global_config *config) {
- int bits, c1bits, bvbits;
-
-- if(max_bits<0)
-+ if (max_bits < 0)
- cod_info->quantizerStepSize--;
-- do
-- {
-- while(quantize(ix,++cod_info->quantizerStepSize,config) > 8192); /* within table range? */
--
-- calc_runlen(ix,cod_info); /* rzero,count1,big_values*/
-- bits = c1bits = count1_bitcount(ix,cod_info); /* count1_table selection*/
-- subdivide(cod_info, config); /* bigvalues sfb division */
-- bigv_tab_select(ix,cod_info); /* codebook selection*/
-- bits += bvbits = bigv_bitcount( ix, cod_info ); /* bit count */
-- }
-- while(bits>max_bits);
-+ do {
-+ while (quantize(ix, ++cod_info->quantizerStepSize, config) > 8192)
-+ ; /* within table range? */
-+
-+ calc_runlen(ix, cod_info); /* rzero,count1,big_values*/
-+ bits = c1bits = count1_bitcount(ix, cod_info); /* count1_table selection*/
-+ subdivide(cod_info, config); /* bigvalues sfb division */
-+ bigv_tab_select(ix, cod_info); /* codebook selection*/
-+ bits += bvbits = bigv_bitcount(ix, cod_info); /* bit count */
-+ } while (bits > max_bits);
- return bits;
- }
-
-@@ -66,21 +69,22 @@ int shine_inner_loop(int ix[GRANULE_SIZE],
- * global gain. This module calls the inner iteration loop.
- */
-
--int shine_outer_loop( int max_bits,
-- shine_psy_xmin_t *l3_xmin, /* the allowed distortion of the scalefactor */
-- int ix[GRANULE_SIZE], /* vector of quantized values ix(0..575) */
-- int gr, int ch, shine_global_config *config)
--{
-+int shine_outer_loop(
-+ int max_bits,
-+ shine_psy_xmin_t *l3_xmin, /* the allowed distortion of the scalefactor */
-+ int ix[GRANULE_SIZE], /* vector of quantized values ix(0..575) */
-+ int gr, int ch, shine_global_config *config) {
- int bits, huff_bits;
-- shine_side_info_t *side_info = &config->side_info;
-+ shine_side_info_t *side_info = &config->side_info;
- gr_info *cod_info = &side_info->gr[gr].ch[ch].tt;
-
-- cod_info->quantizerStepSize = bin_search_StepSize(max_bits,ix,cod_info, config);
-+ cod_info->quantizerStepSize =
-+ bin_search_StepSize(max_bits, ix, cod_info, config);
-
-- cod_info->part2_length = part2_length(gr,ch,config);
-+ cod_info->part2_length = part2_length(gr, ch, config);
- huff_bits = max_bits - cod_info->part2_length;
-
-- bits = shine_inner_loop(ix, huff_bits, cod_info, gr, ch, config );
-+ bits = shine_inner_loop(ix, huff_bits, cod_info, gr, ch, config);
- cod_info->part2_3_length = cod_info->part2_length + bits;
-
- return cod_info->part2_3_length;
-@@ -90,18 +94,15 @@ int shine_outer_loop( int max_bits,
- * shine_iteration_loop:
- * ------------------
- */
--void shine_iteration_loop(shine_global_config *config)
--{
-+void shine_iteration_loop(shine_global_config *config) {
- shine_psy_xmin_t l3_xmin;
- gr_info *cod_info;
- int max_bits;
- int ch, gr, i;
- int *ix;
-
-- for(ch=config->wave.channels; ch--; )
-- {
-- for(gr=0; gr<config->mpeg.granules_per_frame; gr++)
-- {
-+ for (ch = config->wave.channels; ch--;) {
-+ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++) {
- /* setup pointers */
- ix = config->l3_enc[ch][gr];
- config->l3loop.xr = config->mdct_freq[ch][gr];
-@@ -109,56 +110,58 @@ void shine_iteration_loop(shine_global_config *config)
- /* Precalculate the square, abs, and maximum,
- * for use later on.
- */
-- for (i=GRANULE_SIZE, config->l3loop.xrmax=0; i--;)
-- {
-- config->l3loop.xrsq[i] = mulsr(config->l3loop.xr[i],config->l3loop.xr[i]);
-+ for (i = GRANULE_SIZE, config->l3loop.xrmax = 0; i--;) {
-+ config->l3loop.xrsq[i] =
-+ mulsr(config->l3loop.xr[i], config->l3loop.xr[i]);
- config->l3loop.xrabs[i] = labs(config->l3loop.xr[i]);
-- if(config->l3loop.xrabs[i]>config->l3loop.xrmax)
-- config->l3loop.xrmax=config->l3loop.xrabs[i];
-+ if (config->l3loop.xrabs[i] > config->l3loop.xrmax)
-+ config->l3loop.xrmax = config->l3loop.xrabs[i];
- }
-
-- cod_info = (gr_info *) &(config->side_info.gr[gr].ch[ch]);
-+ cod_info = (gr_info *)&(config->side_info.gr[gr].ch[ch]);
- cod_info->sfb_lmax = SFB_LMAX - 1; /* gr_deco */
-
-- calc_xmin(&config->ratio, cod_info, &l3_xmin, gr, ch );
-+ calc_xmin(&config->ratio, cod_info, &l3_xmin, gr, ch);
-
-- if ( config->mpeg.version == MPEG_I )
-- calc_scfsi(&l3_xmin,ch,gr,config);
-+ if (config->mpeg.version == MPEG_I)
-+ calc_scfsi(&l3_xmin, ch, gr, config);
-
- /* calculation of number of available bit( per granule ) */
-- max_bits = shine_max_reservoir_bits(&config->pe[ch][gr],config);
-+ max_bits = shine_max_reservoir_bits(&config->pe[ch][gr], config);
-
- /* reset of iteration variables */
-- memset(config->scalefactor.l[gr][ch],0,sizeof(config->scalefactor.l[gr][ch]));
-- memset(config->scalefactor.s[gr][ch],0,sizeof(config->scalefactor.s[gr][ch]));
-+ memset(config->scalefactor.l[gr][ch], 0,
-+ sizeof(config->scalefactor.l[gr][ch]));
-+ memset(config->scalefactor.s[gr][ch], 0,
-+ sizeof(config->scalefactor.s[gr][ch]));
-
-- for ( i=4; i--; )
-+ for (i = 4; i--;)
- cod_info->slen[i] = 0;
-
-- cod_info->part2_3_length = 0;
-- cod_info->big_values = 0;
-- cod_info->count1 = 0;
-+ cod_info->part2_3_length = 0;
-+ cod_info->big_values = 0;
-+ cod_info->count1 = 0;
- cod_info->scalefac_compress = 0;
-- cod_info->table_select[0] = 0;
-- cod_info->table_select[1] = 0;
-- cod_info->table_select[2] = 0;
-- cod_info->region0_count = 0;
-- cod_info->region1_count = 0;
-- cod_info->part2_length = 0;
-- cod_info->preflag = 0;
-- cod_info->scalefac_scale = 0;
-- cod_info->count1table_select= 0;
-+ cod_info->table_select[0] = 0;
-+ cod_info->table_select[1] = 0;
-+ cod_info->table_select[2] = 0;
-+ cod_info->region0_count = 0;
-+ cod_info->region1_count = 0;
-+ cod_info->part2_length = 0;
-+ cod_info->preflag = 0;
-+ cod_info->scalefac_scale = 0;
-+ cod_info->count1table_select = 0;
-
- /* all spectral values zero ? */
-- if(config->l3loop.xrmax)
-- cod_info->part2_3_length = shine_outer_loop(max_bits,&l3_xmin,ix,
-- gr,ch,config);
-+ if (config->l3loop.xrmax)
-+ cod_info->part2_3_length =
-+ shine_outer_loop(max_bits, &l3_xmin, ix, gr, ch, config);
-
-- shine_ResvAdjust(cod_info, config );
-- cod_info->global_gain = cod_info->quantizerStepSize+210;
-+ shine_ResvAdjust(cod_info, config);
-+ cod_info->global_gain = cod_info->quantizerStepSize + 210;
-
- } /* for gr */
-- } /* for ch */
-+ } /* for ch */
-
- shine_ResvFrameEnd(config);
- }
-@@ -168,21 +171,20 @@ void shine_iteration_loop(shine_global_config *config)
- * -----------
- * calculation of the scalefactor select information ( scfsi ).
- */
--void calc_scfsi( shine_psy_xmin_t *l3_xmin, int ch, int gr,
-- shine_global_config *config )
--{
-+void calc_scfsi(shine_psy_xmin_t *l3_xmin, int ch, int gr,
-+ shine_global_config *config) {
- shine_side_info_t *l3_side = &config->side_info;
- /* This is the scfsi_band table from 2.4.2.7 of the IS */
-- static const int scfsi_band_long[5] = { 0, 6, 11, 16, 21 };
-+ static const int scfsi_band_long[5] = {0, 6, 11, 16, 21};
-
- int scfsi_band;
-- unsigned scfsi_set;
-
- int sfb, start, end, i;
- int condition = 0;
- int temp;
-
-- const int *scalefac_band_long = &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
-+ const int *scalefac_band_long =
-+ &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
-
- /* note. it goes quite a bit faster if you uncomment the next bit and exit
- early from scfsi, but you then loose the advantage of common scale factors.
-@@ -194,82 +196,75 @@ void calc_scfsi( shine_psy_xmin_t *l3_xmin, int ch, int gr,
- */
-
- config->l3loop.xrmaxl[gr] = config->l3loop.xrmax;
-- scfsi_set = 0;
-
- /* the total energy of the granule */
-- for ( temp = 0, i =GRANULE_SIZE; i--; )
-- temp += config->l3loop.xrsq[i]>>10; /* a bit of scaling to avoid overflow, (not very good) */
-- if ( temp )
-- config->l3loop.en_tot[gr] = log((double)temp * 4.768371584e-7) / LN2; /* 1024 / 0x7fffffff */
-+ for (temp = 0, i = GRANULE_SIZE; i--;)
-+ temp += config->l3loop.xrsq[i] >>
-+ 10; /* a bit of scaling to avoid overflow, (not very good) */
-+ if (temp)
-+ config->l3loop.en_tot[gr] =
-+ log((double)temp * 4.768371584e-7) / LN2; /* 1024 / 0x7fffffff */
- else
- config->l3loop.en_tot[gr] = 0;
-
- /* the energy of each scalefactor band, en */
- /* the allowed distortion of each scalefactor band, xm */
-
-- for(sfb=21; sfb--; )
-- {
-- start = scalefac_band_long[ sfb ];
-- end = scalefac_band_long[ sfb+1 ];
-+ for (sfb = 21; sfb--;) {
-+ start = scalefac_band_long[sfb];
-+ end = scalefac_band_long[sfb + 1];
-
-- for ( temp = 0, i = start; i < end; i++ )
-- temp += config->l3loop.xrsq[i]>>10;
-- if ( temp )
-- config->l3loop.en[gr][sfb] = log((double)temp * 4.768371584e-7) / LN2; /* 1024 / 0x7fffffff */
-+ for (temp = 0, i = start; i < end; i++)
-+ temp += config->l3loop.xrsq[i] >> 10;
-+ if (temp)
-+ config->l3loop.en[gr][sfb] =
-+ log((double)temp * 4.768371584e-7) / LN2; /* 1024 / 0x7fffffff */
- else
- config->l3loop.en[gr][sfb] = 0;
-
-- if ( l3_xmin->l[gr][ch][sfb])
-- config->l3loop.xm[gr][sfb] = log( l3_xmin->l[gr][ch][sfb] ) / LN2;
-+ if (l3_xmin->l[gr][ch][sfb])
-+ config->l3loop.xm[gr][sfb] = log(l3_xmin->l[gr][ch][sfb]) / LN2;
- else
- config->l3loop.xm[gr][sfb] = 0;
- }
-
-- if(gr==1)
-- {
-+ if (gr == 1) {
- int gr2, tp;
-
-- for(gr2=2; gr2--; )
-- {
-+ for (gr2 = 2; gr2--;) {
- /* The spectral values are not all zero */
-- if(config->l3loop.xrmaxl[gr2])
-+ if (config->l3loop.xrmaxl[gr2])
- condition++;
-
- condition++;
- }
-- if(abs(config->l3loop.en_tot[0]-config->l3loop.en_tot[1]) < en_tot_krit)
-+ if (abs(config->l3loop.en_tot[0] - config->l3loop.en_tot[1]) < en_tot_krit)
- condition++;
-- for(tp=0,sfb=21; sfb--; )
-- tp += abs(config->l3loop.en[0][sfb]-config->l3loop.en[1][sfb]);
-+ for (tp = 0, sfb = 21; sfb--;)
-+ tp += abs(config->l3loop.en[0][sfb] - config->l3loop.en[1][sfb]);
- if (tp < en_dif_krit)
- condition++;
-
-- if(condition==6)
-- {
-- for(scfsi_band=0;scfsi_band<4;scfsi_band++)
-- {
-+ if (condition == 6) {
-+ for (scfsi_band = 0; scfsi_band < 4; scfsi_band++) {
- int sum0 = 0, sum1 = 0;
- l3_side->scfsi[ch][scfsi_band] = 0;
- start = scfsi_band_long[scfsi_band];
-- end = scfsi_band_long[scfsi_band+1];
-- for ( sfb = start; sfb < end; sfb++ )
-- {
-- sum0 += abs( config->l3loop.en[0][sfb] - config->l3loop.en[1][sfb] );
-- sum1 += abs( config->l3loop.xm[0][sfb] - config->l3loop.xm[1][sfb] );
-+ end = scfsi_band_long[scfsi_band + 1];
-+ for (sfb = start; sfb < end; sfb++) {
-+ sum0 += abs(config->l3loop.en[0][sfb] - config->l3loop.en[1][sfb]);
-+ sum1 += abs(config->l3loop.xm[0][sfb] - config->l3loop.xm[1][sfb]);
- }
-
-- if(sum0<en_scfsi_band_krit && sum1<xm_scfsi_band_krit)
-- {
-+ if (sum0 < en_scfsi_band_krit && sum1 < xm_scfsi_band_krit) {
- l3_side->scfsi[ch][scfsi_band] = 1;
-- scfsi_set |= (1 << scfsi_band);
-- }
-- else
-+ } else
- l3_side->scfsi[ch][scfsi_band] = 0;
- } /* for scfsi_band */
-- } /* if condition == 6 */
-+ } /* if condition == 6 */
- else
-- for(scfsi_band=0;scfsi_band<4;scfsi_band++)
-- l3_side->scfsi[ch][scfsi_band] = 0;
-+ for (scfsi_band = 0; scfsi_band < 4; scfsi_band++)
-+ l3_side->scfsi[ch][scfsi_band] = 0;
- } /* if gr == 1 */
- }
-
-@@ -279,27 +274,26 @@ void calc_scfsi( shine_psy_xmin_t *l3_xmin, int ch, int gr,
- * calculates the number of bits needed to encode the scalefacs in the
- * main data block.
- */
--int part2_length(int gr, int ch, shine_global_config *config)
--{
-+int part2_length(int gr, int ch, shine_global_config *config) {
- int slen1, slen2, bits;
- gr_info *gi = &config->side_info.gr[gr].ch[ch].tt;
-
- bits = 0;
-
- {
-- slen1 = shine_slen1_tab[ gi->scalefac_compress ];
-- slen2 = shine_slen2_tab[ gi->scalefac_compress ];
-+ slen1 = shine_slen1_tab[gi->scalefac_compress];
-+ slen2 = shine_slen2_tab[gi->scalefac_compress];
-
-- if ( !gr || !(config->side_info.scfsi[ch][0]) )
-+ if (!gr || !(config->side_info.scfsi[ch][0]))
- bits += (6 * slen1);
-
-- if ( !gr || !(config->side_info.scfsi[ch][1]) )
-+ if (!gr || !(config->side_info.scfsi[ch][1]))
- bits += (5 * slen1);
-
-- if ( !gr || !(config->side_info.scfsi[ch][2]) )
-+ if (!gr || !(config->side_info.scfsi[ch][2]))
- bits += (5 * slen2);
-
-- if ( !gr || !(config->side_info.scfsi[ch][3]) )
-+ if (!gr || !(config->side_info.scfsi[ch][3]))
- bits += (5 * slen2);
- }
- return bits;
-@@ -312,26 +306,22 @@ int part2_length(int gr, int ch, shine_global_config *config)
- * as determined by the psychoacoustic model.
- * xmin(sb) = ratio(sb) * en(sb) / bw(sb)
- */
--void calc_xmin(shine_psy_ratio_t *ratio,
-- gr_info *cod_info,
-- shine_psy_xmin_t *l3_xmin,
-- int gr, int ch )
--{
-+void calc_xmin(shine_psy_ratio_t *ratio, gr_info *cod_info,
-+ shine_psy_xmin_t *l3_xmin, int gr, int ch) {
- int sfb;
-
-- for ( sfb = cod_info->sfb_lmax; sfb--; )
-- {
--/* note. xmin will always be zero with no psychoacoustic model
-+ for (sfb = cod_info->sfb_lmax; sfb--;) {
-+ /* note. xmin will always be zero with no psychoacoustic model
-
-- start = scalefac_band_long[ sfb ];
-- end = scalefac_band_long[ sfb+1 ];
-- bw = end - start;
-+ start = scalefac_band_long[ sfb ];
-+ end = scalefac_band_long[ sfb+1 ];
-+ bw = end - start;
-
-- for ( en = 0, l = start; l < end; l++ )
-- en += config->l3loop.xrsq[l];
-+ for ( en = 0, l = start; l < end; l++ )
-+ en += config->l3loop.xrsq[l];
-
-- l3_xmin->l[gr][ch][sfb] = ratio->l[gr][ch][sfb] * en / bw;
--*/
-+ l3_xmin->l[gr][ch][sfb] = ratio->l[gr][ch][sfb] * en / bw;
-+ */
- l3_xmin->l[gr][ch][sfb] = 0;
- }
- }
-@@ -341,8 +331,7 @@ void calc_xmin(shine_psy_ratio_t *ratio,
- * -------------------
- * Calculates the look up tables used by the iteration loop.
- */
--void shine_loop_initialise(shine_global_config *config)
--{
-+void shine_loop_initialise(shine_global_config *config) {
- int i;
-
- /* quantize: stepsize conversion, fourth root of 2 table.
-@@ -350,24 +339,26 @@ void shine_loop_initialise(shine_global_config *config)
- * in the spec because it is quicker to do x*y than x/y.
- * The 0.5 is for rounding.
- */
-- for(i=128; i--;)
-- {
-- config->l3loop.steptab[i] = pow(2.0,(double)(127-i)/4);
-- if((config->l3loop.steptab[i]*2)>0x7fffffff) /* MAXINT = 2**31 = 2**(124/4) */
-- config->l3loop.steptabi[i]=0x7fffffff;
-+ for (i = 128; i--;) {
-+ config->l3loop.steptab[i] = pow(2.0, (double)(127 - i) / 4);
-+ if ((config->l3loop.steptab[i] * 2) >
-+ 0x7fffffff) /* MAXINT = 2**31 = 2**(124/4) */
-+ config->l3loop.steptabi[i] = 0x7fffffff;
- else
- /* The table is multiplied by 2 to give an extra bit of accuracy.
- * In quantize, the long multiply does not shift it's result left one
- * bit to compensate.
- */
-- config->l3loop.steptabi[i] = (int32_t)((config->l3loop.steptab[i]*2) + 0.5);
-+ config->l3loop.steptabi[i] =
-+ (int32_t)((config->l3loop.steptab[i] * 2) + 0.5);
- }
-
- /* quantize: vector conversion, three quarter power table.
- * The 0.5 is for rounding, the .0946 comes from the spec.
- */
-- for(i=10000; i--;)
-- config->l3loop.int2idx[i] = (int)(sqrt(sqrt((double)i)*(double)i) - 0.0946 + 0.5);
-+ for (i = 10000; i--;)
-+ config->l3loop.int2idx[i] =
-+ (int)(sqrt(sqrt((double)i) * (double)i) - 0.0946 + 0.5);
- }
-
- /*
-@@ -376,39 +367,37 @@ void shine_loop_initialise(shine_global_config *config)
- * Function: Quantization of the vector xr ( -> ix).
- * Returns maximum value of ix.
- */
--int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config )
--{
-+int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config) {
- int i, max, ln;
- int32_t scalei;
- double scale, dbl;
-
-- scalei = config->l3loop.steptabi[stepsize+127]; /* 2**(-stepsize/4) */
-+ scalei = config->l3loop.steptabi[stepsize + 127]; /* 2**(-stepsize/4) */
-
- /* a quick check to see if ixmax will be less than 8192 */
- /* this speeds up the early calls to bin_search_StepSize */
-- if((mulr(config->l3loop.xrmax,scalei)) > 165140) /* 8192**(4/3) */
-+ if ((mulr(config->l3loop.xrmax, scalei)) > 165140) /* 8192**(4/3) */
- max = 16384; /* no point in continuing, stepsize not big enough */
- else
-- for(i=0, max=0;i<GRANULE_SIZE;i++)
-- {
-+ for (i = 0, max = 0; i < GRANULE_SIZE; i++) {
- /* This calculation is very sensitive. The multiply must round it's
- * result or bad things happen to the quality.
- */
-- ln = mulr(labs(config->l3loop.xr[i]),scalei);
-+ ln = mulr(labs(config->l3loop.xr[i]), scalei);
-
-- if(ln<10000) /* ln < 10000 catches most values */
-+ if (ln < 10000) /* ln < 10000 catches most values */
- ix[i] = config->l3loop.int2idx[ln]; /* quick look up method */
-- else
-- {
-+ else {
- /* outside table range so have to do it using floats */
-- scale = config->l3loop.steptab[stepsize+127]; /* 2**(-stepsize/4) */
-- dbl = ((double)config->l3loop.xrabs[i]) * scale * 4.656612875e-10; /* 0x7fffffff */
-- ix[i] = (int)sqrt(sqrt(dbl)*dbl); /* dbl**(3/4) */
-+ scale = config->l3loop.steptab[stepsize + 127]; /* 2**(-stepsize/4) */
-+ dbl = ((double)config->l3loop.xrabs[i]) * scale *
-+ 4.656612875e-10; /* 0x7fffffff */
-+ ix[i] = (int)sqrt(sqrt(dbl) * dbl); /* dbl**(3/4) */
- }
-
- /* calculate ixmax while we're here */
- /* note. ix cannot be negative */
-- if(max < ix[i])
-+ if (max < ix[i])
- max = ix[i];
- }
-
-@@ -420,13 +409,13 @@ int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config )
- * -------
- * Function: Calculate the maximum of ix from 0 to 575
- */
--static inline int ix_max( int ix[GRANULE_SIZE], unsigned int begin, unsigned int end )
--{
-+static inline int ix_max(int ix[GRANULE_SIZE], unsigned int begin,
-+ unsigned int end) {
- register int i;
- register int max = 0;
-
-- for(i=begin;i<end;i++)
-- if(max < ix[i])
-+ for (i = begin; i < end; i++)
-+ if (max < ix[i])
- max = ix[i];
- return max;
- }
-@@ -437,28 +426,24 @@ static inline int ix_max( int ix[GRANULE_SIZE], unsigned int begin, unsigned int
- * Function: Calculation of rzero, count1, big_values
- * (Partitions ix into big values, quadruples and zeros).
- */
--void calc_runlen( int ix[GRANULE_SIZE], gr_info *cod_info )
--{
-+void calc_runlen(int ix[GRANULE_SIZE], gr_info *cod_info) {
- int i;
- int rzero = 0;
-
-- for ( i = GRANULE_SIZE; i > 1; i -= 2 )
-- if ( !ix[i-1] && !ix[i-2] )
-+ for (i = GRANULE_SIZE; i > 1; i -= 2)
-+ if (!ix[i - 1] && !ix[i - 2])
- rzero++;
- else
- break;
-
-- cod_info->count1 = 0 ;
-- for ( ; i > 3; i -= 4 )
-- if ( ix[i-1] <= 1
-- && ix[i-2] <= 1
-- && ix[i-3] <= 1
-- && ix[i-4] <= 1 )
-+ cod_info->count1 = 0;
-+ for (; i > 3; i -= 4)
-+ if (ix[i - 1] <= 1 && ix[i - 2] <= 1 && ix[i - 3] <= 1 && ix[i - 4] <= 1)
- cod_info->count1++;
- else
- break;
-
-- cod_info->big_values = i>>1;
-+ cod_info->big_values = i >> 1;
- }
-
- /*
-@@ -466,27 +451,29 @@ void calc_runlen( int ix[GRANULE_SIZE], gr_info *cod_info )
- * ----------------
- * Determines the number of bits to encode the quadruples.
- */
--int count1_bitcount(int ix[GRANULE_SIZE], gr_info *cod_info)
--{
-+int count1_bitcount(int ix[GRANULE_SIZE], gr_info *cod_info) {
- int p, i, k;
- int v, w, x, y, signbits;
-- int sum0 = 0,
-- sum1 = 0;
-+ int sum0 = 0, sum1 = 0;
-
-- for(i=cod_info->big_values<<1, k=0; k<cod_info->count1; i+=4, k++)
-- {
-+ for (i = cod_info->big_values << 1, k = 0; k < cod_info->count1;
-+ i += 4, k++) {
- v = ix[i];
-- w = ix[i+1];
-- x = ix[i+2];
-- y = ix[i+3];
-+ w = ix[i + 1];
-+ x = ix[i + 2];
-+ y = ix[i + 3];
-
-- p = v + (w<<1) + (x<<2) + (y<<3);
-+ p = v + (w << 1) + (x << 2) + (y << 3);
-
- signbits = 0;
-- if(v!=0) signbits++;
-- if(w!=0) signbits++;
-- if(x!=0) signbits++;
-- if(y!=0) signbits++;
-+ if (v != 0)
-+ signbits++;
-+ if (w != 0)
-+ signbits++;
-+ if (x != 0)
-+ signbits++;
-+ if (y != 0)
-+ signbits++;
-
- sum0 += signbits;
- sum1 += signbits;
-@@ -495,13 +482,10 @@ int count1_bitcount(int ix[GRANULE_SIZE], gr_info *cod_info)
- sum1 += shine_huffman_table[33].hlen[p];
- }
-
-- if(sum0<sum1)
-- {
-+ if (sum0 < sum1) {
- cod_info->count1table_select = 0;
- return sum0;
-- }
-- else
-- {
-+ } else {
- cod_info->count1table_select = 1;
- return sum1;
- }
-@@ -510,59 +494,56 @@ int count1_bitcount(int ix[GRANULE_SIZE], gr_info *cod_info)
- /*
- * subdivide:
- * ----------
-- * presumable subdivides the bigvalue region which will use separate Huffman tables.
-+ * presumable subdivides the bigvalue region which will use separate Huffman
-+ * tables.
- */
--void subdivide(gr_info *cod_info, shine_global_config *config)
--{
-- static const struct
-- {
-+void subdivide(gr_info *cod_info, shine_global_config *config) {
-+ static const struct {
- unsigned region0_count;
- unsigned region1_count;
-- } subdv_table[ 23 ] =
-- {
-- {0, 0}, /* 0 bands */
-- {0, 0}, /* 1 bands */
-- {0, 0}, /* 2 bands */
-- {0, 0}, /* 3 bands */
-- {0, 0}, /* 4 bands */
-- {0, 1}, /* 5 bands */
-- {1, 1}, /* 6 bands */
-- {1, 1}, /* 7 bands */
-- {1, 2}, /* 8 bands */
-- {2, 2}, /* 9 bands */
-- {2, 3}, /* 10 bands */
-- {2, 3}, /* 11 bands */
-- {3, 4}, /* 12 bands */
-- {3, 4}, /* 13 bands */
-- {3, 4}, /* 14 bands */
-- {4, 5}, /* 15 bands */
-- {4, 5}, /* 16 bands */
-- {4, 6}, /* 17 bands */
-- {5, 6}, /* 18 bands */
-- {5, 6}, /* 19 bands */
-- {5, 7}, /* 20 bands */
-- {6, 7}, /* 21 bands */
-- {6, 7}, /* 22 bands */
-+ } subdv_table[23] = {
-+ {0, 0}, /* 0 bands */
-+ {0, 0}, /* 1 bands */
-+ {0, 0}, /* 2 bands */
-+ {0, 0}, /* 3 bands */
-+ {0, 0}, /* 4 bands */
-+ {0, 1}, /* 5 bands */
-+ {1, 1}, /* 6 bands */
-+ {1, 1}, /* 7 bands */
-+ {1, 2}, /* 8 bands */
-+ {2, 2}, /* 9 bands */
-+ {2, 3}, /* 10 bands */
-+ {2, 3}, /* 11 bands */
-+ {3, 4}, /* 12 bands */
-+ {3, 4}, /* 13 bands */
-+ {3, 4}, /* 14 bands */
-+ {4, 5}, /* 15 bands */
-+ {4, 5}, /* 16 bands */
-+ {4, 6}, /* 17 bands */
-+ {5, 6}, /* 18 bands */
-+ {5, 6}, /* 19 bands */
-+ {5, 7}, /* 20 bands */
-+ {6, 7}, /* 21 bands */
-+ {6, 7}, /* 22 bands */
- };
-
-- if (!cod_info->big_values)
-- { /* no big_values region */
-+ if (!cod_info->big_values) { /* no big_values region */
- cod_info->region0_count = 0;
- cod_info->region1_count = 0;
-- }
-- else
-- {
-- const int *scalefac_band_long = &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
-+ } else {
-+ const int *scalefac_band_long =
-+ &shine_scale_fact_band_index[config->mpeg.samplerate_index][0];
- int bigvalues_region, scfb_anz, thiscount;
-
- bigvalues_region = 2 * cod_info->big_values;
-
- /* Calculate scfb_anz */
- scfb_anz = 0;
-- while ( scalefac_band_long[scfb_anz] < bigvalues_region )
-+ while (scalefac_band_long[scfb_anz] < bigvalues_region)
- scfb_anz++;
-
-- for (thiscount = subdv_table[scfb_anz].region0_count; thiscount; thiscount--) {
-+ for (thiscount = subdv_table[scfb_anz].region0_count; thiscount;
-+ thiscount--) {
- if (scalefac_band_long[thiscount + 1] <= bigvalues_region)
- break;
- }
-@@ -571,7 +552,8 @@ void subdivide(gr_info *cod_info, shine_global_config *config)
-
- scalefac_band_long += cod_info->region0_count + 1;
-
-- for (thiscount = subdv_table[scfb_anz].region1_count; thiscount; thiscount--) {
-+ for (thiscount = subdv_table[scfb_anz].region1_count; thiscount;
-+ thiscount--) {
- if (scalefac_band_long[thiscount + 1] <= bigvalues_region)
- break;
- }
-@@ -587,21 +569,22 @@ void subdivide(gr_info *cod_info, shine_global_config *config)
- * ----------------
- * Function: Select huffman code tables for bigvalues regions
- */
--void bigv_tab_select( int ix[GRANULE_SIZE], gr_info *cod_info )
--{
-+void bigv_tab_select(int ix[GRANULE_SIZE], gr_info *cod_info) {
- cod_info->table_select[0] = 0;
- cod_info->table_select[1] = 0;
- cod_info->table_select[2] = 0;
-
- {
-- if ( cod_info->address1 > 0 )
-- cod_info->table_select[0] = new_choose_table( ix, 0, cod_info->address1 );
-+ if (cod_info->address1 > 0)
-+ cod_info->table_select[0] = new_choose_table(ix, 0, cod_info->address1);
-
-- if ( cod_info->address2 > cod_info->address1 )
-- cod_info->table_select[1] = new_choose_table( ix, cod_info->address1, cod_info->address2 );
-+ if (cod_info->address2 > cod_info->address1)
-+ cod_info->table_select[1] =
-+ new_choose_table(ix, cod_info->address1, cod_info->address2);
-
-- if ( cod_info->big_values<<1 > cod_info->address2 )
-- cod_info->table_select[2] = new_choose_table( ix, cod_info->address2, cod_info->big_values<<1 );
-+ if (cod_info->big_values << 1 > cod_info->address2)
-+ cod_info->table_select[2] =
-+ new_choose_table(ix, cod_info->address2, cod_info->big_values << 1);
- }
- }
-
-@@ -614,98 +597,89 @@ void bigv_tab_select( int ix[GRANULE_SIZE], gr_info *cod_info )
- * of the Huffman tables as defined in the IS (Table B.7), and will not work
- * with any arbitrary tables.
- */
--int new_choose_table( int ix[GRANULE_SIZE], unsigned int begin, unsigned int end )
--{
-+int new_choose_table(int ix[GRANULE_SIZE], unsigned int begin,
-+ unsigned int end) {
- int i, max;
- int choice[2];
- int sum[2];
-
-- max = ix_max(ix,begin,end);
-- if(!max)
-+ max = ix_max(ix, begin, end);
-+ if (!max)
- return 0;
-
- choice[0] = 0;
- choice[1] = 0;
-
-- if(max<15)
-- {
-+ if (max < 15) {
- /* try tables with no linbits */
-- for ( i =14; i--; )
-- if ( shine_huffman_table[i].xlen > max )
-- {
-+ for (i = 14; i--;)
-+ if (shine_huffman_table[i].xlen > max) {
- choice[0] = i;
- break;
- }
-
-- sum[0] = count_bit( ix, begin, end, choice[0] );
-+ sum[0] = count_bit(ix, begin, end, choice[0]);
-
-- switch (choice[0])
-- {
-- case 2:
-- sum[1] = count_bit( ix, begin, end, 3 );
-- if ( sum[1] <= sum[0] )
-- choice[0] = 3;
-- break;
-+ switch (choice[0]) {
-+ case 2:
-+ sum[1] = count_bit(ix, begin, end, 3);
-+ if (sum[1] <= sum[0])
-+ choice[0] = 3;
-+ break;
-
-- case 5:
-- sum[1] = count_bit( ix, begin, end, 6 );
-- if ( sum[1] <= sum[0] )
-- choice[0] = 6;
-- break;
-+ case 5:
-+ sum[1] = count_bit(ix, begin, end, 6);
-+ if (sum[1] <= sum[0])
-+ choice[0] = 6;
-+ break;
-
-- case 7:
-- sum[1] = count_bit( ix, begin, end, 8 );
-- if ( sum[1] <= sum[0] )
-- {
-- choice[0] = 8;
-- sum[0] = sum[1];
-- }
-- sum[1] = count_bit( ix, begin, end, 9 );
-- if ( sum[1] <= sum[0] )
-- choice[0] = 9;
-- break;
-+ case 7:
-+ sum[1] = count_bit(ix, begin, end, 8);
-+ if (sum[1] <= sum[0]) {
-+ choice[0] = 8;
-+ sum[0] = sum[1];
-+ }
-+ sum[1] = count_bit(ix, begin, end, 9);
-+ if (sum[1] <= sum[0])
-+ choice[0] = 9;
-+ break;
-
-- case 10:
-- sum[1] = count_bit( ix, begin, end, 11 );
-- if ( sum[1] <= sum[0] )
-- {
-- choice[0] = 11;
-- sum[0] = sum[1];
-- }
-- sum[1] = count_bit( ix, begin, end, 12 );
-- if ( sum[1] <= sum[0] )
-- choice[0] = 12;
-- break;
-+ case 10:
-+ sum[1] = count_bit(ix, begin, end, 11);
-+ if (sum[1] <= sum[0]) {
-+ choice[0] = 11;
-+ sum[0] = sum[1];
-+ }
-+ sum[1] = count_bit(ix, begin, end, 12);
-+ if (sum[1] <= sum[0])
-+ choice[0] = 12;
-+ break;
-
-- case 13:
-- sum[1] = count_bit( ix, begin, end, 15 );
-- if ( sum[1] <= sum[0] )
-- choice[0] = 15;
-- break;
-+ case 13:
-+ sum[1] = count_bit(ix, begin, end, 15);
-+ if (sum[1] <= sum[0])
-+ choice[0] = 15;
-+ break;
- }
-- }
-- else
-- {
-+ } else {
- /* try tables with linbits */
- max -= 15;
-
-- for(i=15;i<24;i++)
-- if(shine_huffman_table[i].linmax>=max)
-- {
-+ for (i = 15; i < 24; i++)
-+ if (shine_huffman_table[i].linmax >= max) {
- choice[0] = i;
- break;
- }
-
-- for(i=24;i<32;i++)
-- if(shine_huffman_table[i].linmax>=max)
-- {
-+ for (i = 24; i < 32; i++)
-+ if (shine_huffman_table[i].linmax >= max) {
- choice[1] = i;
- break;
- }
-
-- sum[0] = count_bit(ix,begin,end,choice[0]);
-- sum[1] = count_bit(ix,begin,end,choice[1]);
-- if (sum[1]<sum[0])
-+ sum[0] = count_bit(ix, begin, end, choice[0]);
-+ sum[1] = count_bit(ix, begin, end, choice[1]);
-+ if (sum[1] < sum[0])
- choice[0] = choice[1];
- }
- return choice[0];
-@@ -716,17 +690,16 @@ int new_choose_table( int ix[GRANULE_SIZE], unsigned int begin, unsigned int end
- * --------------
- * Function: Count the number of bits necessary to code the bigvalues region.
- */
--int bigv_bitcount(int ix[GRANULE_SIZE], gr_info *gi)
--{
-+int bigv_bitcount(int ix[GRANULE_SIZE], gr_info *gi) {
- int bits = 0;
- unsigned int table;
-
-- if( (table=gi->table_select[0])) /* region0 */
-- bits += count_bit(ix, 0, gi->address1, table );
-- if( (table=gi->table_select[1])) /* region1 */
-- bits += count_bit(ix, gi->address1, gi->address2, table );
-- if( (table=gi->table_select[2])) /* region2 */
-- bits += count_bit(ix, gi->address2, gi->address3, table );
-+ if ((table = gi->table_select[0])) /* region0 */
-+ bits += count_bit(ix, 0, gi->address1, table);
-+ if ((table = gi->table_select[1])) /* region1 */
-+ bits += count_bit(ix, gi->address1, gi->address2, table);
-+ if ((table = gi->table_select[2])) /* region2 */
-+ bits += count_bit(ix, gi->address2, gi->address3, table);
- return bits;
- }
-
-@@ -735,61 +708,51 @@ int bigv_bitcount(int ix[GRANULE_SIZE], gr_info *gi)
- * ----------
- * Function: Count the number of bits necessary to code the subregion.
- */
--int count_bit(int ix[GRANULE_SIZE],
-- unsigned int start,
-- unsigned int end,
-- unsigned int table )
--{
-- unsigned linbits, ylen;
-- register int i, sum;
-- register int x,y;
-+int count_bit(int ix[GRANULE_SIZE], unsigned int start, unsigned int end,
-+ unsigned int table) {
-+ unsigned linbits, ylen;
-+ register int i, sum;
-+ register int x, y;
- const struct huffcodetab *h;
-
-- if(!table)
-+ if (!table)
- return 0;
-
-- h = &(shine_huffman_table[table]);
-+ h = &(shine_huffman_table[table]);
- sum = 0;
-
-- ylen = h->ylen;
-+ ylen = h->ylen;
- linbits = h->linbits;
-
-- if(table>15)
-- { /* ESC-table is used */
-- for(i=start;i<end;i+=2)
-- {
-+ if (table > 15) { /* ESC-table is used */
-+ for (i = start; i < end; i += 2) {
- x = ix[i];
-- y = ix[i+1];
-- if(x>14)
-- {
-+ y = ix[i + 1];
-+ if (x > 14) {
- x = 15;
- sum += linbits;
- }
-- if(y>14)
-- {
-+ if (y > 14) {
- y = 15;
- sum += linbits;
- }
-
-- sum += h->hlen[(x*ylen)+y];
-- if(x)
-+ sum += h->hlen[(x * ylen) + y];
-+ if (x)
- sum++;
-- if(y)
-+ if (y)
- sum++;
- }
-- }
-- else
-- { /* No ESC-words */
-- for(i=start;i<end;i+=2)
-- {
-+ } else { /* No ESC-words */
-+ for (i = start; i < end; i += 2) {
- x = ix[i];
-- y = ix[i+1];
-+ y = ix[i + 1];
-
-- sum += h->hlen[(x*ylen)+y];
-+ sum += h->hlen[(x * ylen) + y];
-
-- if(x!=0)
-+ if (x != 0)
- sum++;
-- if(y!=0)
-+ if (y != 0)
- sum++;
- }
- }
-@@ -809,20 +772,18 @@ int count_bit(int ix[GRANULE_SIZE],
- * returns a good starting quantizerStepSize.
- */
- int bin_search_StepSize(int desired_rate, int ix[GRANULE_SIZE],
-- gr_info * cod_info, shine_global_config *config)
--{
-+ gr_info *cod_info, shine_global_config *config) {
- int bit, next, count;
-
-- next = -120;
-+ next = -120;
- count = 120;
-
- do {
- int half = count / 2;
-
- if (quantize(ix, next + half, config) > 8192)
-- bit = 100000; /* fail */
-- else
-- {
-+ bit = 100000; /* fail */
-+ else {
- calc_runlen(ix, cod_info); /* rzero,count1,big_values */
- bit = count1_bitcount(ix, cod_info); /* count1_table selection */
- subdivide(cod_info, config); /* bigvalues sfb division */
-@@ -832,8 +793,7 @@ int bin_search_StepSize(int desired_rate, int ix[GRANULE_SIZE],
-
- if (bit < desired_rate)
- count = half;
-- else
-- {
-+ else {
- next += half;
- count -= half;
- }
-diff --git a/src/lib/l3loop.h b/src/lib/l3loop.h
-index 0e71a91..94ecea3 100644
---- a/src/lib/l3loop.h
-+++ b/src/lib/l3loop.h
-@@ -1,9 +1,10 @@
- #ifndef L3LOOP_H
- #define L3LOOP_H
-
-+#include "types.h"
-+
- void shine_loop_initialise(shine_global_config *config);
-
- void shine_iteration_loop(shine_global_config *config);
-
- #endif
--
-diff --git a/src/lib/l3mdct.c b/src/lib/l3mdct.c
-index 7553a54..a76b702 100644
---- a/src/lib/l3mdct.c
-+++ b/src/lib/l3mdct.c
-@@ -1,88 +1,87 @@
- /* L3mdct */
-
--#include "types.h"
- #include "l3mdct.h"
- #include "l3subband.h"
-+#include "types.h"
-
- /* This is table B.9: coefficients for aliasing reduction */
--#define MDCT_CA(coef) (int32_t)(coef / sqrt(1.0 + (coef * coef)) * 0x7fffffff)
--#define MDCT_CS(coef) (int32_t)(1.0 / sqrt(1.0 + (coef * coef)) * 0x7fffffff)
-+#define MDCT_CA(coef) (int32_t)(coef / sqrt(1.0 + (coef * coef)) * 0x7fffffff)
-+#define MDCT_CS(coef) (int32_t)(1.0 / sqrt(1.0 + (coef * coef)) * 0x7fffffff)
-
--#define MDCT_CA0 MDCT_CA(-0.6)
--#define MDCT_CA1 MDCT_CA(-0.535)
--#define MDCT_CA2 MDCT_CA(-0.33)
--#define MDCT_CA3 MDCT_CA(-0.185)
--#define MDCT_CA4 MDCT_CA(-0.095)
--#define MDCT_CA5 MDCT_CA(-0.041)
--#define MDCT_CA6 MDCT_CA(-0.0142)
--#define MDCT_CA7 MDCT_CA(-0.0037)
-+#define MDCT_CA0 MDCT_CA(-0.6)
-+#define MDCT_CA1 MDCT_CA(-0.535)
-+#define MDCT_CA2 MDCT_CA(-0.33)
-+#define MDCT_CA3 MDCT_CA(-0.185)
-+#define MDCT_CA4 MDCT_CA(-0.095)
-+#define MDCT_CA5 MDCT_CA(-0.041)
-+#define MDCT_CA6 MDCT_CA(-0.0142)
-+#define MDCT_CA7 MDCT_CA(-0.0037)
-
--#define MDCT_CS0 MDCT_CS(-0.6)
--#define MDCT_CS1 MDCT_CS(-0.535)
--#define MDCT_CS2 MDCT_CS(-0.33)
--#define MDCT_CS3 MDCT_CS(-0.185)
--#define MDCT_CS4 MDCT_CS(-0.095)
--#define MDCT_CS5 MDCT_CS(-0.041)
--#define MDCT_CS6 MDCT_CS(-0.0142)
--#define MDCT_CS7 MDCT_CS(-0.0037)
-+#define MDCT_CS0 MDCT_CS(-0.6)
-+#define MDCT_CS1 MDCT_CS(-0.535)
-+#define MDCT_CS2 MDCT_CS(-0.33)
-+#define MDCT_CS3 MDCT_CS(-0.185)
-+#define MDCT_CS4 MDCT_CS(-0.095)
-+#define MDCT_CS5 MDCT_CS(-0.041)
-+#define MDCT_CS6 MDCT_CS(-0.0142)
-+#define MDCT_CS7 MDCT_CS(-0.0037)
-
- /*
- * shine_mdct_initialise:
- * -------------------
- */
--void shine_mdct_initialise(shine_global_config *config)
--{
-- int m,k;
-+void shine_mdct_initialise(shine_global_config *config) {
-+ int m, k;
-
- /* prepare the mdct coefficients */
-- for(m=18; m--; )
-- for(k=36; k--; )
-+ for (m = 18; m--;)
-+ for (k = 36; k--;)
- /* combine window and mdct coefficients into a single table */
- /* scale and convert to fixed point before storing */
-- config->mdct.cos_l[m][k] = (int32_t)(sin(PI36*(k+0.5))
-- * cos((PI/72)*(2*k+19)*(2*m+1)) * 0x7fffffff);
-+ config->mdct.cos_l[m][k] =
-+ (int32_t)(sin(PI36 * (k + 0.5)) *
-+ cos((PI / 72) * (2 * k + 19) * (2 * m + 1)) * 0x7fffffff);
- }
-
- /*
- * shine_mdct_sub:
- * ------------
- */
--void shine_mdct_sub(shine_global_config *config, int stride)
--{
-+void shine_mdct_sub(shine_global_config *config, int stride) {
- /* note. we wish to access the array 'config->mdct_freq[2][2][576]' as
- * [2][2][32][18]. (32*18=576),
- */
-- int32_t (*mdct_enc)[18];
-+ int32_t(*mdct_enc)[18];
-
-- int ch,gr,band,j,k;
-+ int ch, gr, band, j, k;
- int32_t mdct_in[36];
-
-- for(ch=config->wave.channels; ch--; )
-- {
-- for(gr=0; gr<config->mpeg.granules_per_frame; gr++)
-- {
-+ for (ch = config->wave.channels; ch--;) {
-+ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++) {
- /* set up pointer to the part of config->mdct_freq we're using */
-- mdct_enc = (int32_t (*)[18]) config->mdct_freq[ch][gr];
-+ mdct_enc = (int32_t(*)[18])config->mdct_freq[ch][gr];
-
- /* polyphase filtering */
-- for(k=0; k<18; k+=2)
-- {
-- shine_window_filter_subband(&config->buffer[ch], &config->l3_sb_sample[ch][gr+1][k ][0], ch, config, stride);
-- shine_window_filter_subband(&config->buffer[ch], &config->l3_sb_sample[ch][gr+1][k+1][0], ch, config, stride);
-+ for (k = 0; k < 18; k += 2) {
-+ shine_window_filter_subband(&config->buffer[ch],
-+ &config->l3_sb_sample[ch][gr + 1][k][0], ch,
-+ config, stride);
-+ shine_window_filter_subband(&config->buffer[ch],
-+ &config->l3_sb_sample[ch][gr + 1][k + 1][0],
-+ ch, config, stride);
- /* Compensate for inversion in the analysis filter
- * (every odd index of band AND k)
- */
-- for(band=1; band<32; band+=2)
-- config->l3_sb_sample[ch][gr+1][k+1][band] *= -1;
-+ for (band = 1; band < 32; band += 2)
-+ config->l3_sb_sample[ch][gr + 1][k + 1][band] *= -1;
- }
-
-- /* Perform imdct of 18 previous subband samples + 18 current subband samples */
-- for(band=0; band<32; band++)
-- {
-- for(k=18; k--; )
-- {
-- mdct_in[k ] = config->l3_sb_sample[ch][gr ][k][band];
-- mdct_in[k+18] = config->l3_sb_sample[ch][gr+1][k][band];
-+ /* Perform imdct of 18 previous subband samples + 18 current subband
-+ * samples */
-+ for (band = 0; band < 32; band++) {
-+ for (k = 18; k--;) {
-+ mdct_in[k] = config->l3_sb_sample[ch][gr][k][band];
-+ mdct_in[k + 18] = config->l3_sb_sample[ch][gr + 1][k][band];
- }
-
- /* Calculation of the MDCT
-@@ -90,41 +89,61 @@ void shine_mdct_sub(shine_global_config *config, int stride)
- * 36 coefficients in the time domain and 18 in the frequency
- * domain.
- */
-- for(k=18; k--; )
-- {
-+ for (k = 18; k--;) {
- int32_t vm;
-+#ifdef __BORLANDC__
-+ uint32_t vm_lo;
-+#else
- uint32_t vm_lo __attribute__((unused));
-+#endif
-
- mul0(vm, vm_lo, mdct_in[35], config->mdct.cos_l[k][35]);
-- for(j=35; j; j-=7) {
-- muladd(vm, vm_lo, mdct_in[j-1], config->mdct.cos_l[k][j-1]);
-- muladd(vm, vm_lo, mdct_in[j-2], config->mdct.cos_l[k][j-2]);
-- muladd(vm, vm_lo, mdct_in[j-3], config->mdct.cos_l[k][j-3]);
-- muladd(vm, vm_lo, mdct_in[j-4], config->mdct.cos_l[k][j-4]);
-- muladd(vm, vm_lo, mdct_in[j-5], config->mdct.cos_l[k][j-5]);
-- muladd(vm, vm_lo, mdct_in[j-6], config->mdct.cos_l[k][j-6]);
-- muladd(vm, vm_lo, mdct_in[j-7], config->mdct.cos_l[k][j-7]);
-+ for (j = 35; j; j -= 7) {
-+ muladd(vm, vm_lo, mdct_in[j - 1], config->mdct.cos_l[k][j - 1]);
-+ muladd(vm, vm_lo, mdct_in[j - 2], config->mdct.cos_l[k][j - 2]);
-+ muladd(vm, vm_lo, mdct_in[j - 3], config->mdct.cos_l[k][j - 3]);
-+ muladd(vm, vm_lo, mdct_in[j - 4], config->mdct.cos_l[k][j - 4]);
-+ muladd(vm, vm_lo, mdct_in[j - 5], config->mdct.cos_l[k][j - 5]);
-+ muladd(vm, vm_lo, mdct_in[j - 6], config->mdct.cos_l[k][j - 6]);
-+ muladd(vm, vm_lo, mdct_in[j - 7], config->mdct.cos_l[k][j - 7]);
- }
- mulz(vm, vm_lo);
- mdct_enc[band][k] = vm;
- }
-
- /* Perform aliasing reduction butterfly */
-- if (band != 0)
-- {
-- cmuls(mdct_enc[band][0], mdct_enc[band-1][17-0], mdct_enc[band][0], mdct_enc[band-1][17-0], MDCT_CS0, MDCT_CA0);
-- cmuls(mdct_enc[band][1], mdct_enc[band-1][17-1], mdct_enc[band][1], mdct_enc[band-1][17-1], MDCT_CS1, MDCT_CA1);
-- cmuls(mdct_enc[band][2], mdct_enc[band-1][17-2], mdct_enc[band][2], mdct_enc[band-1][17-2], MDCT_CS2, MDCT_CA2);
-- cmuls(mdct_enc[band][3], mdct_enc[band-1][17-3], mdct_enc[band][3], mdct_enc[band-1][17-3], MDCT_CS3, MDCT_CA3);
-- cmuls(mdct_enc[band][4], mdct_enc[band-1][17-4], mdct_enc[band][4], mdct_enc[band-1][17-4], MDCT_CS4, MDCT_CA4);
-- cmuls(mdct_enc[band][5], mdct_enc[band-1][17-5], mdct_enc[band][5], mdct_enc[band-1][17-5], MDCT_CS5, MDCT_CA5);
-- cmuls(mdct_enc[band][6], mdct_enc[band-1][17-6], mdct_enc[band][6], mdct_enc[band-1][17-6], MDCT_CS6, MDCT_CA6);
-- cmuls(mdct_enc[band][7], mdct_enc[band-1][17-7], mdct_enc[band][7], mdct_enc[band-1][17-7], MDCT_CS7, MDCT_CA7);
-+ if (band != 0) {
-+ cmuls(mdct_enc[band][0], mdct_enc[band - 1][17 - 0],
-+ mdct_enc[band][0], mdct_enc[band - 1][17 - 0], MDCT_CS0,
-+ MDCT_CA0);
-+ cmuls(mdct_enc[band][1], mdct_enc[band - 1][17 - 1],
-+ mdct_enc[band][1], mdct_enc[band - 1][17 - 1], MDCT_CS1,
-+ MDCT_CA1);
-+ cmuls(mdct_enc[band][2], mdct_enc[band - 1][17 - 2],
-+ mdct_enc[band][2], mdct_enc[band - 1][17 - 2], MDCT_CS2,
-+ MDCT_CA2);
-+ cmuls(mdct_enc[band][3], mdct_enc[band - 1][17 - 3],
-+ mdct_enc[band][3], mdct_enc[band - 1][17 - 3], MDCT_CS3,
-+ MDCT_CA3);
-+ cmuls(mdct_enc[band][4], mdct_enc[band - 1][17 - 4],
-+ mdct_enc[band][4], mdct_enc[band - 1][17 - 4], MDCT_CS4,
-+ MDCT_CA4);
-+ cmuls(mdct_enc[band][5], mdct_enc[band - 1][17 - 5],
-+ mdct_enc[band][5], mdct_enc[band - 1][17 - 5], MDCT_CS5,
-+ MDCT_CA5);
-+ cmuls(mdct_enc[band][6], mdct_enc[band - 1][17 - 6],
-+ mdct_enc[band][6], mdct_enc[band - 1][17 - 6], MDCT_CS6,
-+ MDCT_CA6);
-+ cmuls(mdct_enc[band][7], mdct_enc[band - 1][17 - 7],
-+ mdct_enc[band][7], mdct_enc[band - 1][17 - 7], MDCT_CS7,
-+ MDCT_CA7);
- }
- }
- }
-
- /* Save latest granule's subband samples to be used in the next mdct call */
-- memcpy(config->l3_sb_sample[ch][0], config->l3_sb_sample[ch][config->mpeg.granules_per_frame], sizeof(config->l3_sb_sample[0][0]));
-+ memcpy(config->l3_sb_sample[ch][0],
-+ config->l3_sb_sample[ch][config->mpeg.granules_per_frame],
-+ sizeof(config->l3_sb_sample[0][0]));
- }
- }
-diff --git a/src/lib/l3mdct.h b/src/lib/l3mdct.h
-index 1288259..3018eb9 100644
---- a/src/lib/l3mdct.h
-+++ b/src/lib/l3mdct.h
-@@ -1,7 +1,9 @@
- #ifndef shine_MDCT_H
- #define shine_MDCT_H
-
--void shine_mdct_initialise();
-+#include "types.h"
-+
-+void shine_mdct_initialise(shine_global_config *config);
- void shine_mdct_sub(shine_global_config *config, int stride);
-
- #endif
-diff --git a/src/lib/l3subband.c b/src/lib/l3subband.c
-index 58abf5f..78f428e 100644
---- a/src/lib/l3subband.c
-+++ b/src/lib/l3subband.c
-@@ -1,8 +1,8 @@
- /* L3SubBand */
-
--#include "types.h"
--#include "tables.h"
- #include "l3subband.h"
-+#include "tables.h"
-+#include "types.h"
-
- /*
- * shine_subband_initialise:
-@@ -11,23 +11,21 @@
- * 9th decimal place accuracy of the filterbank tables in the ISO
- * document. The coefficients are stored in #filter#
- */
--void shine_subband_initialise(shine_global_config *config)
--{
-- int i,j;
-+void shine_subband_initialise(shine_global_config *config) {
-+ int i, j;
- double filter;
-
-- for(i=MAX_CHANNELS; i-- ; ) {
-+ for (i = MAX_CHANNELS; i--;) {
- config->subband.off[i] = 0;
- memset(config->subband.x[i], 0, sizeof(config->subband.x[i]));
- }
-
-- for (i=SBLIMIT; i--; )
-- for (j=64; j--; )
-- {
-- if ((filter = 1e9*cos((double)((2*i+1)*(16-j)*PI64))) >= 0)
-- modf(filter+0.5, &filter);
-+ for (i = SBLIMIT; i--;)
-+ for (j = 64; j--;) {
-+ if ((filter = 1e9 * cos((double)((2 * i + 1) * (16 - j) * PI64))) >= 0)
-+ modf(filter + 0.5, &filter);
- else
-- modf(filter-0.5, &filter);
-+ modf(filter - 0.5, &filter);
- /* scale and convert to fixed point before storing */
- config->subband.fl[i][j] = (int32_t)(filter * (0x7fffffff * 1e-9));
- }
-@@ -39,58 +37,90 @@ void shine_subband_initialise(shine_global_config *config)
- * Overlapping window on PCM samples
- * 32 16-bit pcm samples are scaled to fractional 2's complement and
- * concatenated to the end of the window buffer #x#. The updated window
-- * buffer #x# is then windowed by the analysis window #shine_enwindow# to produce
-- * the windowed sample #z#
-- * Calculates the analysis filter bank coefficients
-- * The windowed samples #z# is filtered by the digital filter matrix #filter#
-- * to produce the subband samples #s#. This done by first selectively
-- * picking out values from the windowed samples, and then multiplying
-- * them by the filter matrix, producing 32 subband samples.
-+ * buffer #x# is then windowed by the analysis window #shine_enwindow# to
-+ * produce the windowed sample #z# Calculates the analysis filter bank
-+ * coefficients The windowed samples #z# is filtered by the digital filter
-+ * matrix #filter# to produce the subband samples #s#. This done by first
-+ * selectively picking out values from the windowed samples, and then
-+ * multiplying them by the filter matrix, producing 32 subband samples.
- */
--void shine_window_filter_subband(int16_t **buffer, int32_t s[SBLIMIT], int ch, shine_global_config *config, int stride)
--{
-+void shine_window_filter_subband(int16_t **buffer, int32_t s[SBLIMIT], int ch,
-+ shine_global_config *config, int stride) {
- int32_t y[64];
-- int i,j;
-+ int i, j;
- int16_t *ptr = *buffer;
-
- /* replace 32 oldest samples with 32 new samples */
-- for (i=32;i--;) {
-- config->subband.x[ch][i+config->subband.off[ch]] = ((int32_t)*ptr) << 16;
-+ for (i = 32; i--;) {
-+ config->subband.x[ch][i + config->subband.off[ch]] = ((int32_t)*ptr) << 16;
- ptr += stride;
- }
- *buffer = ptr;
-
-- for (i=64; i--; ) {
-+ for (i = 64; i--;) {
- int32_t s_value;
-+#ifdef __BORLANDC__
-+ uint32_t s_value_lo;
-+#else
- uint32_t s_value_lo __attribute__((unused));
-+#endif
-
-- mul0 (s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (0<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (0<<6)]);
-- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (1<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (1<<6)]);
-- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (2<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (2<<6)]);
-- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (3<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (3<<6)]);
-- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (4<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (4<<6)]);
-- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (5<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (5<<6)]);
-- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (6<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (6<<6)]);
-- muladd(s_value, s_value_lo, config->subband.x[ch][(config->subband.off[ch] + i + (7<<6)) & (HAN_SIZE-1)], shine_enwindow[i + (7<<6)]);
-- mulz (s_value, s_value_lo);
-+ mul0(s_value, s_value_lo,
-+ config->subband
-+ .x[ch][(config->subband.off[ch] + i + (0 << 6)) & (HAN_SIZE - 1)],
-+ shine_enwindow[i + (0 << 6)]);
-+ muladd(s_value, s_value_lo,
-+ config->subband.x[ch][(config->subband.off[ch] + i + (1 << 6)) &
-+ (HAN_SIZE - 1)],
-+ shine_enwindow[i + (1 << 6)]);
-+ muladd(s_value, s_value_lo,
-+ config->subband.x[ch][(config->subband.off[ch] + i + (2 << 6)) &
-+ (HAN_SIZE - 1)],
-+ shine_enwindow[i + (2 << 6)]);
-+ muladd(s_value, s_value_lo,
-+ config->subband.x[ch][(config->subband.off[ch] + i + (3 << 6)) &
-+ (HAN_SIZE - 1)],
-+ shine_enwindow[i + (3 << 6)]);
-+ muladd(s_value, s_value_lo,
-+ config->subband.x[ch][(config->subband.off[ch] + i + (4 << 6)) &
-+ (HAN_SIZE - 1)],
-+ shine_enwindow[i + (4 << 6)]);
-+ muladd(s_value, s_value_lo,
-+ config->subband.x[ch][(config->subband.off[ch] + i + (5 << 6)) &
-+ (HAN_SIZE - 1)],
-+ shine_enwindow[i + (5 << 6)]);
-+ muladd(s_value, s_value_lo,
-+ config->subband.x[ch][(config->subband.off[ch] + i + (6 << 6)) &
-+ (HAN_SIZE - 1)],
-+ shine_enwindow[i + (6 << 6)]);
-+ muladd(s_value, s_value_lo,
-+ config->subband.x[ch][(config->subband.off[ch] + i + (7 << 6)) &
-+ (HAN_SIZE - 1)],
-+ shine_enwindow[i + (7 << 6)]);
-+ mulz(s_value, s_value_lo);
- y[i] = s_value;
- }
-
-- config->subband.off[ch] = (config->subband.off[ch] + 480) & (HAN_SIZE-1); /* offset is modulo (HAN_SIZE)*/
-+ config->subband.off[ch] = (config->subband.off[ch] + 480) &
-+ (HAN_SIZE - 1); /* offset is modulo (HAN_SIZE)*/
-
-- for (i=SBLIMIT; i--; ) {
-+ for (i = SBLIMIT; i--;) {
- int32_t s_value;
-+#ifdef __BORLANDC__
-+ uint32_t s_value_lo;
-+#else
- uint32_t s_value_lo __attribute__((unused));
-+#endif
-
- mul0(s_value, s_value_lo, config->subband.fl[i][63], y[63]);
-- for (j=63; j; j-=7) {
-- muladd(s_value, s_value_lo, config->subband.fl[i][j-1], y[j-1]);
-- muladd(s_value, s_value_lo, config->subband.fl[i][j-2], y[j-2]);
-- muladd(s_value, s_value_lo, config->subband.fl[i][j-3], y[j-3]);
-- muladd(s_value, s_value_lo, config->subband.fl[i][j-4], y[j-4]);
-- muladd(s_value, s_value_lo, config->subband.fl[i][j-5], y[j-5]);
-- muladd(s_value, s_value_lo, config->subband.fl[i][j-6], y[j-6]);
-- muladd(s_value, s_value_lo, config->subband.fl[i][j-7], y[j-7]);
-+ for (j = 63; j; j -= 7) {
-+ muladd(s_value, s_value_lo, config->subband.fl[i][j - 1], y[j - 1]);
-+ muladd(s_value, s_value_lo, config->subband.fl[i][j - 2], y[j - 2]);
-+ muladd(s_value, s_value_lo, config->subband.fl[i][j - 3], y[j - 3]);
-+ muladd(s_value, s_value_lo, config->subband.fl[i][j - 4], y[j - 4]);
-+ muladd(s_value, s_value_lo, config->subband.fl[i][j - 5], y[j - 5]);
-+ muladd(s_value, s_value_lo, config->subband.fl[i][j - 6], y[j - 6]);
-+ muladd(s_value, s_value_lo, config->subband.fl[i][j - 7], y[j - 7]);
- }
- mulz(s_value, s_value_lo);
- s[i] = s_value;
-diff --git a/src/lib/l3subband.h b/src/lib/l3subband.h
-index 9bfe861..5cfbef5 100644
---- a/src/lib/l3subband.h
-+++ b/src/lib/l3subband.h
-@@ -1,9 +1,11 @@
- #ifndef L3SUBBAND_H
- #define L3SUBBAND_H
-
-+#include "types.h"
- #include <stdint.h>
-
--void shine_subband_initialise( shine_global_config *config );
--void shine_window_filter_subband(int16_t **buffer, int32_t s[SBLIMIT], int k, shine_global_config *config, int stride);
-+void shine_subband_initialise(shine_global_config *config);
-+void shine_window_filter_subband(int16_t **buffer, int32_t s[SBLIMIT], int k,
-+ shine_global_config *config, int stride);
-
- #endif
-diff --git a/src/lib/layer3.c b/src/lib/layer3.c
-index 0b574ad..f3d1ecd 100644
---- a/src/lib/layer3.c
-+++ b/src/lib/layer3.c
-@@ -1,28 +1,27 @@
- /* layer3.c */
-
--#include "types.h"
--#include "tables.h"
- #include "layer3.h"
--#include "l3subband.h"
--#include "l3mdct.h"
--#include "l3loop.h"
- #include "bitstream.h"
- #include "l3bitstream.h"
-+#include "l3loop.h"
-+#include "l3mdct.h"
-+#include "l3subband.h"
-+#include "tables.h"
-+#include "types.h"
-
- static int granules_per_frame[4] = {
- 1, /* MPEG 2.5 */
-- -1, /* Reserved */
-+ -1, /* Reserved */
- 1, /* MPEG II */
-- 2 /* MPEG I */
-+ 2 /* MPEG I */
- };
-
- /* Set default values for important vars */
--void shine_set_config_mpeg_defaults(shine_mpeg_t *mpeg)
--{
-+void shine_set_config_mpeg_defaults(shine_mpeg_t *mpeg) {
- mpeg->bitr = 128;
- mpeg->emph = NONE;
- mpeg->copyright = 0;
-- mpeg->original = 1;
-+ mpeg->original = 1;
- }
-
- int shine_mpeg_version(int samplerate_index) {
-@@ -38,56 +37,56 @@ int shine_mpeg_version(int samplerate_index) {
- return MPEG_25;
- }
-
--int shine_find_samplerate_index(int freq)
--{
-+int shine_find_samplerate_index(int freq) {
- int i;
-
-- for(i=0;i<9;i++)
-- if(freq==samplerates[i]) return i;
-+ for (i = 0; i < 9; i++)
-+ if (freq == samplerates[i])
-+ return i;
-
- return -1; /* error - not a valid samplerate for encoder */
- }
-
--int shine_find_bitrate_index(int bitr, int mpeg_version)
--{
-+int shine_find_bitrate_index(int bitr, int mpeg_version) {
- int i;
-
-- for(i=0;i<16;i++)
-- if(bitr==bitrates[i][mpeg_version]) return i;
-+ for (i = 0; i < 16; i++)
-+ if (bitr == bitrates[i][mpeg_version])
-+ return i;
-
- return -1; /* error - not a valid samplerate for encoder */
- }
-
--int shine_check_config(int freq, int bitr)
--{
-+int shine_check_config(int freq, int bitr) {
- int samplerate_index, bitrate_index, mpeg_version;
-
- samplerate_index = shine_find_samplerate_index(freq);
-- if (samplerate_index < 0) return -1;
-+ if (samplerate_index < 0)
-+ return -1;
-
- mpeg_version = shine_mpeg_version(samplerate_index);
-
- bitrate_index = shine_find_bitrate_index(bitr, mpeg_version);
-- if (bitrate_index < 0) return -1;
-+ if (bitrate_index < 0)
-+ return -1;
-
- return mpeg_version;
- }
-
--int shine_samples_per_pass(shine_t s)
--{
-+int shine_samples_per_pass(shine_t s) {
- return s->mpeg.granules_per_frame * GRANULE_SIZE;
- }
-
- /* Compute default encoding values. */
--shine_global_config *shine_initialise(shine_config_t *pub_config)
--{
-+shine_global_config *shine_initialise(shine_config_t *pub_config) {
- double avg_slots_per_frame;
- shine_global_config *config;
-
-- if (shine_check_config(pub_config->wave.samplerate, pub_config->mpeg.bitr) < 0)
-+ if (shine_check_config(pub_config->wave.samplerate, pub_config->mpeg.bitr) <
-+ 0)
- return NULL;
-
-- config = calloc(1,sizeof(shine_global_config));
-+ config = calloc(1, sizeof(shine_global_config));
- if (config == NULL)
- return config;
-
-@@ -96,65 +95,71 @@ shine_global_config *shine_initialise(shine_config_t *pub_config)
- shine_loop_initialise(config);
-
- /* Copy public config. */
-- config->wave.channels = pub_config->wave.channels;
-- config->wave.samplerate = pub_config->wave.samplerate;
-- config->mpeg.mode = pub_config->mpeg.mode;
-- config->mpeg.bitr = pub_config->mpeg.bitr;
-- config->mpeg.emph = pub_config->mpeg.emph;
-- config->mpeg.copyright = pub_config->mpeg.copyright;
-- config->mpeg.original = pub_config->mpeg.original;
-+ config->wave.channels = pub_config->wave.channels;
-+ config->wave.samplerate = pub_config->wave.samplerate;
-+ config->mpeg.mode = pub_config->mpeg.mode;
-+ config->mpeg.bitr = pub_config->mpeg.bitr;
-+ config->mpeg.emph = pub_config->mpeg.emph;
-+ config->mpeg.copyright = pub_config->mpeg.copyright;
-+ config->mpeg.original = pub_config->mpeg.original;
-
- /* Set default values. */
-- config->ResvMax = 0;
-- config->ResvSize = 0;
-- config->mpeg.layer = LAYER_III;
-- config->mpeg.crc = 0;
-- config->mpeg.ext = 0;
-- config->mpeg.mode_ext = 0;
-- config->mpeg.bits_per_slot = 8;
--
-- config->mpeg.samplerate_index = shine_find_samplerate_index(config->wave.samplerate);
-- config->mpeg.version = shine_mpeg_version(config->mpeg.samplerate_index);
-- config->mpeg.bitrate_index = shine_find_bitrate_index(config->mpeg.bitr, config->mpeg.version);
-+ config->ResvMax = 0;
-+ config->ResvSize = 0;
-+ config->mpeg.layer = LAYER_III;
-+ config->mpeg.crc = 0;
-+ config->mpeg.ext = 0;
-+ config->mpeg.mode_ext = 0;
-+ config->mpeg.bits_per_slot = 8;
-+
-+ config->mpeg.samplerate_index =
-+ shine_find_samplerate_index(config->wave.samplerate);
-+ config->mpeg.version = shine_mpeg_version(config->mpeg.samplerate_index);
-+ config->mpeg.bitrate_index =
-+ shine_find_bitrate_index(config->mpeg.bitr, config->mpeg.version);
- config->mpeg.granules_per_frame = granules_per_frame[config->mpeg.version];
-
- /* Figure average number of 'slots' per frame. */
-- avg_slots_per_frame = ((double)config->mpeg.granules_per_frame * GRANULE_SIZE /
-- ((double)config->wave.samplerate)) *
-- (1000*(double)config->mpeg.bitr /
-- (double)config->mpeg.bits_per_slot);
-+ avg_slots_per_frame =
-+ ((double)config->mpeg.granules_per_frame * GRANULE_SIZE /
-+ ((double)config->wave.samplerate)) *
-+ (1000 * (double)config->mpeg.bitr / (double)config->mpeg.bits_per_slot);
-
-- config->mpeg.whole_slots_per_frame = (int)avg_slots_per_frame;
-+ config->mpeg.whole_slots_per_frame = (int)avg_slots_per_frame;
-
-- config->mpeg.frac_slots_per_frame = avg_slots_per_frame - (double)config->mpeg.whole_slots_per_frame;
-- config->mpeg.slot_lag = -config->mpeg.frac_slots_per_frame;
-+ config->mpeg.frac_slots_per_frame =
-+ avg_slots_per_frame - (double)config->mpeg.whole_slots_per_frame;
-+ config->mpeg.slot_lag = -config->mpeg.frac_slots_per_frame;
-
-- if(config->mpeg.frac_slots_per_frame==0)
-+ if (config->mpeg.frac_slots_per_frame == 0)
- config->mpeg.padding = 0;
-
- shine_open_bit_stream(&config->bs, BUFFER_SIZE);
-
-- memset((char *)&config->side_info,0,sizeof(shine_side_info_t));
-+ memset((char *)&config->side_info, 0, sizeof(shine_side_info_t));
-
- /* determine the mean bitrate for main data */
- if (config->mpeg.granules_per_frame == 2) /* MPEG 1 */
-- config->sideinfo_len = 8 * ((config->wave.channels==1) ? 4 + 17 : 4 + 32);
-- else /* MPEG 2 */
-- config->sideinfo_len = 8 * ((config->wave.channels==1) ? 4 + 9 : 4 + 17);
-+ config->sideinfo_len = 8 * ((config->wave.channels == 1) ? 4 + 17 : 4 + 32);
-+ else /* MPEG 2 */
-+ config->sideinfo_len = 8 * ((config->wave.channels == 1) ? 4 + 9 : 4 + 17);
-
- return config;
- }
-
--static unsigned char *shine_encode_buffer_internal(shine_global_config *config, int *written, int stride)
--{
-- if(config->mpeg.frac_slots_per_frame)
-- {
-- config->mpeg.padding = (config->mpeg.slot_lag <= (config->mpeg.frac_slots_per_frame - 1.0));
-- config->mpeg.slot_lag += (config->mpeg.padding - config->mpeg.frac_slots_per_frame);
-+static unsigned char *shine_encode_buffer_internal(shine_global_config *config,
-+ int *written, int stride) {
-+ if (config->mpeg.frac_slots_per_frame) {
-+ config->mpeg.padding =
-+ (config->mpeg.slot_lag <= (config->mpeg.frac_slots_per_frame - 1.0));
-+ config->mpeg.slot_lag +=
-+ (config->mpeg.padding - config->mpeg.frac_slots_per_frame);
- }
-
-- config->mpeg.bits_per_frame = 8*(config->mpeg.whole_slots_per_frame + config->mpeg.padding);
-- config->mean_bits = (config->mpeg.bits_per_frame - config->sideinfo_len)/config->mpeg.granules_per_frame;
-+ config->mpeg.bits_per_frame =
-+ 8 * (config->mpeg.whole_slots_per_frame + config->mpeg.padding);
-+ config->mean_bits = (config->mpeg.bits_per_frame - config->sideinfo_len) /
-+ config->mpeg.granules_per_frame;
-
- /* apply mdct to the polyphase output */
- shine_mdct_sub(config, stride);
-@@ -172,8 +177,8 @@ static unsigned char *shine_encode_buffer_internal(shine_global_config *config,
- return config->bs.data;
- }
-
--unsigned char *shine_encode_buffer(shine_global_config *config, int16_t **data, int *written)
--{
-+unsigned char *shine_encode_buffer(shine_global_config *config, int16_t **data,
-+ int *written) {
- config->buffer[0] = data[0];
- if (config->wave.channels == 2)
- config->buffer[1] = data[1];
-@@ -181,8 +186,8 @@ unsigned char *shine_encode_buffer(shine_global_config *config, int16_t **data,
- return shine_encode_buffer_internal(config, written, 1);
- }
-
--unsigned char *shine_encode_buffer_interleaved(shine_global_config *config, int16_t *data, int *written)
--{
-+unsigned char *shine_encode_buffer_interleaved(shine_global_config *config,
-+ int16_t *data, int *written) {
- config->buffer[0] = data;
- if (config->wave.channels == 2)
- config->buffer[1] = data + 1;
-@@ -197,7 +202,6 @@ unsigned char *shine_flush(shine_global_config *config, int *written) {
- return config->bs.data;
- }
-
--
- void shine_close(shine_global_config *config) {
- shine_close_bit_stream(&config->bs);
- free(config);
-diff --git a/src/lib/layer3.h b/src/lib/layer3.h
-index 7fb11e0..d72b6a4 100644
---- a/src/lib/layer3.h
-+++ b/src/lib/layer3.h
-@@ -5,48 +5,31 @@
-
- /* This is the struct used to tell the encoder about the input PCM */
-
--enum channels {
-- PCM_MONO = 1,
-- PCM_STEREO = 2
--};
-+enum channels { PCM_MONO = 1, PCM_STEREO = 2 };
-
--enum mpeg_versions {
-- MPEG_I = 3,
-- MPEG_II = 2,
-- MPEG_25 = 0
--};
-+enum mpeg_versions { MPEG_I = 3, MPEG_II = 2, MPEG_25 = 0 };
-
- /* Only Layer III currently implemented. */
--enum mpeg_layers {
-- LAYER_III = 1
--};
-+enum mpeg_layers { LAYER_III = 1 };
-
- typedef struct {
-- enum channels channels;
-- int samplerate;
-+ enum channels channels;
-+ int samplerate;
- } shine_wave_t;
-
--/* This is the struct the encoder uses to tell the encoder about the output MP3 */
-+/* This is the struct the encoder uses to tell the encoder about the output MP3
-+ */
-
--enum modes {
-- STEREO = 0,
-- JOINT_STEREO = 1,
-- DUAL_CHANNEL = 2,
-- MONO = 3
--};
-+enum modes { STEREO = 0, JOINT_STEREO = 1, DUAL_CHANNEL = 2, MONO = 3 };
-
--enum emph {
-- NONE = 0,
-- MU50_15 = 1,
-- CITT = 3
--};
-+enum emph { NONE = 0, MU50_15 = 1, CITT = 3 };
-
- typedef struct {
-- enum modes mode; /* Stereo mode */
-- int bitr; /* Must conform to known bitrate */
-- enum emph emph; /* De-emphasis */
-- int copyright;
-- int original;
-+ enum modes mode; /* Stereo mode */
-+ int bitr; /* Must conform to known bitrate */
-+ enum emph emph; /* De-emphasis */
-+ int copyright;
-+ int original;
- } shine_mpeg_t;
-
- typedef struct {
-@@ -60,7 +43,7 @@ typedef struct {
- * const int samplerates[9] = {
- * 44100, 48000, 32000, // MPEG-I
- * 22050, 24000, 16000, // MPEG-II
-- * 11025, 12000, 8000 // MPEG-2.5
-+ * 11025, 12000, 8000 // MPEG-2.5
- * };
- *
- * const int bitrates[16][4] = {
-@@ -92,37 +75,37 @@ typedef struct shine_global_flags *shine_t;
- /* Fill in a `mpeg_t` structure with default values. */
- void shine_set_config_mpeg_defaults(shine_mpeg_t *mpeg);
-
--/* Check if a given bitrate is supported by the encoder (see `bitrates` above for a list
-- * of acceptable values. */
-+/* Check if a given bitrate is supported by the encoder (see `bitrates` above
-+ * for a list of acceptable values. */
- int shine_find_bitrate_index(int bitr, int mpeg_version);
-
--/* Check if a given samplerate is supported by the encoder (see `samplerates` above for a list
-- * of acceptable values. */
-+/* Check if a given samplerate is supported by the encoder (see `samplerates`
-+ * above for a list of acceptable values. */
- int shine_find_samplerate_index(int freq);
-
- /* Returns the MPEG version used for the given samplerate index. See above
-- * `mpeg_versions` for a list of possible values. */
-+ * `mpeg_versions` for a list of possible values. */
- int shine_mpeg_version(int samplerate_index);
-
--/* Check if a given bitrate and samplerate is supported by the encoder (see `samplerates`
-- * and `bitrates` above for a list of acceptable values).
-+/* Check if a given bitrate and samplerate is supported by the encoder (see
-+ * `samplerates` and `bitrates` above for a list of acceptable values).
- *
- * Returns -1 on error, mpeg_version on success. */
- int shine_check_config(int freq, int bitr);
-
- /* Pass a pointer to a `config_t` structure and returns an initialized
-- * encoder.
-+ * encoder.
- *
- * Configuration data is copied over to the encoder. It is not possible
- * to change its values after initializing the encoder at the moment.
- *
-- * Checking for valid configuration values is left for the application to
-- * implement. You can use the `shine_find_bitrate_index` and
-- * `shine_find_samplerate_index` functions or the `bitrates` and
-- * `samplerates` arrays above to check those parameters. Mone and stereo
-+ * Checking for valid configuration values is left for the application to
-+ * implement. You can use the `shine_find_bitrate_index` and
-+ * `shine_find_samplerate_index` functions or the `bitrates` and
-+ * `samplerates` arrays above to check those parameters. Mone and stereo
- * mode for wave and mpeg should also be consistent with each other.
- *
-- * This function returns NULL if it was not able to allocate memory data for
-+ * This function returns NULL if it was not able to allocate memory data for
- * the encoder. */
- shine_t shine_initialise(shine_config_t *config);
-
-@@ -132,26 +115,28 @@ shine_t shine_initialise(shine_config_t *config);
- /* Returns audio samples expected in each frame. */
- int shine_samples_per_pass(shine_t s);
-
--/* Encode audio data. Source data must have `shine_samples_per_pass(s)` audio samples per
-- * channels. Mono encoder only expect one channel.
-+/* Encode audio data. Source data must have `shine_samples_per_pass(s)` audio
-+ * samples per channels. Mono encoder only expect one channel.
- *
-- * Returns a pointer to freshly encoded data while `written` contains the size of
-- * available data. This pointer's memory is handled by the library and is only valid
-- * until the next call to `shine_encode_buffer` or `shine_close` and may be NULL if no data
-- * was written. */
-+ * Returns a pointer to freshly encoded data while `written` contains the size
-+ * of available data. This pointer's memory is handled by the library and is
-+ * only valid until the next call to `shine_encode_buffer` or `shine_close` and
-+ * may be NULL if no data was written. */
- unsigned char *shine_encode_buffer(shine_t s, int16_t **data, int *written);
-
--/* Encode interleaved audio data. Source data must have `shine_samples_per_pass(s)` audio samples per
-- * channels. Mono encoder only expect one channel.
-+/* Encode interleaved audio data. Source data must have
-+ * `shine_samples_per_pass(s)` audio samples per channels. Mono encoder only
-+ * expect one channel.
- *
-- * Returns a pointer to freshly encoded data while `written` contains the size of
-- * available data. This pointer's memory is handled by the library and is only valid
-- * until the next call to `shine_encode_buffer` or `shine_close` and may be NULL if no data
-- * was written. */
--unsigned char *shine_encode_buffer_interleaved(shine_t s, int16_t *data, int *written);
--
--/* Flush all data currently in the encoding buffer. Should be used before closing
-- * the encoder, to make all encoded data has been written. */
-+ * Returns a pointer to freshly encoded data while `written` contains the size
-+ * of available data. This pointer's memory is handled by the library and is
-+ * only valid until the next call to `shine_encode_buffer` or `shine_close` and
-+ * may be NULL if no data was written. */
-+unsigned char *shine_encode_buffer_interleaved(shine_t s, int16_t *data,
-+ int *written);
-+
-+/* Flush all data currently in the encoding buffer. Should be used before
-+ * closing the encoder, to make all encoded data has been written. */
- unsigned char *shine_flush(shine_t s, int *written);
-
- /* Close an encoder, freeing all associated memory. Encoder handler is not
-diff --git a/src/lib/mult_mips_gcc.h b/src/lib/mult_mips_gcc.h
-index 092ed84..d49d215 100644
---- a/src/lib/mult_mips_gcc.h
-+++ b/src/lib/mult_mips_gcc.h
-@@ -1,51 +1,50 @@
- #include <stdint.h>
-
--#define mul(a,b) \
--({ \
-- register int32_t res; \
-- __asm__ __volatile__("mult %0, %1" : : "r" (a), "r" (b)); \
-- __asm__ __volatile__("mfhi %0" : "=r" (res)); \
-- res; \
--})
-+#define mul(a, b) \
-+ ({ \
-+ register int32_t res; \
-+ __asm__ __volatile__("mult %0, %1" : : "r"(a), "r"(b)); \
-+ __asm__ __volatile__("mfhi %0" : "=r"(res)); \
-+ res; \
-+ })
-
--#define mul0(hi,lo,a,b) \
-- __asm__ __volatile__("mult %0, %1" : : "r" (a), "r" (b))
-+#define mul0(hi, lo, a, b) \
-+ __asm__ __volatile__("mult %0, %1" : : "r"(a), "r"(b))
-
--#define muladd(hi,lo,a,b) \
-- __asm__ __volatile__("madd %0, %1" : : "r" (a), "r" (b))
-+#define muladd(hi, lo, a, b) \
-+ __asm__ __volatile__("madd %0, %1" : : "r"(a), "r"(b))
-
--#define mulsub(hi,lo,a,b) \
-- __asm__ __volatile__("msub %0, %1" : : "r" (a), "r" (b))
-+#define mulsub(hi, lo, a, b) \
-+ __asm__ __volatile__("msub %0, %1" : : "r"(a), "r"(b))
-
--#define mulz(hi,lo) \
--do { \
-- register int32_t t; \
-- __asm__ __volatile__("mfhi %0" : "=r" (t)); \
-- (hi) = t; \
--} while (0)
-+#define mulz(hi, lo) \
-+ do { \
-+ register int32_t t; \
-+ __asm__ __volatile__("mfhi %0" : "=r"(t)); \
-+ (hi) = t; \
-+ } while (0)
-
--#define cmuls(dre, dim, are, aim, bre, bim) \
--do { \
-- register int32_t t1, t2, tre; \
-- __asm__ __volatile__("mult %0, %1" : : "r" (are), "r" (bre)); \
-- __asm__ __volatile__("msub %0, %1" : : "r" (aim), "r" (bim)); \
-- __asm__ __volatile__("mfhi %0; mflo %1" : "=r" (t1), "=r" (t2)); \
-- tre = (t1 << 1) | ((uint32_t)t2 >> 31); \
-- __asm__ __volatile__("mult %0, %1" : : "r" (are), "r" (bim)); \
-- __asm__ __volatile__("madd %0, %1" : : "r" (bre), "r" (aim)); \
-- dre = tre; \
-- __asm__ __volatile__("mfhi %0; mflo %1" : "=r" (t1), "=r" (t2)); \
-- dim = (t1 << 1) | ((uint32_t)t2 >> 31); \
--} while (0)
-+#define cmuls(dre, dim, are, aim, bre, bim) \
-+ do { \
-+ register int32_t t1, t2, tre; \
-+ __asm__ __volatile__("mult %0, %1" : : "r"(are), "r"(bre)); \
-+ __asm__ __volatile__("msub %0, %1" : : "r"(aim), "r"(bim)); \
-+ __asm__ __volatile__("mfhi %0; mflo %1" : "=r"(t1), "=r"(t2)); \
-+ tre = (t1 << 1) | ((uint32_t)t2 >> 31); \
-+ __asm__ __volatile__("mult %0, %1" : : "r"(are), "r"(bim)); \
-+ __asm__ __volatile__("madd %0, %1" : : "r"(bre), "r"(aim)); \
-+ dre = tre; \
-+ __asm__ __volatile__("mfhi %0; mflo %1" : "=r"(t1), "=r"(t2)); \
-+ dim = (t1 << 1) | ((uint32_t)t2 >> 31); \
-+ } while (0)
-
- #if __mips_isa_rev >= 2
--static inline uint32_t SWAB32(uint32_t x)
--{
-- __asm__(
-- " wsbh %0, %1 \n"
-- " rotr %0, %0, 16 \n"
-- : "=r" (x) : "r" (x));
-- return x;
-+static inline uint32_t SWAB32(uint32_t x) {
-+ __asm__(" wsbh %0, %1 \n"
-+ " rotr %0, %0, 16 \n"
-+ : "=r"(x)
-+ : "r"(x));
-+ return x;
- }
- #define SWAB32 SWAB32
- #endif
-diff --git a/src/lib/mult_noarch_gcc.h b/src/lib/mult_noarch_gcc.h
-index 516e66c..2ee207e 100644
---- a/src/lib/mult_noarch_gcc.h
-+++ b/src/lib/mult_noarch_gcc.h
-@@ -1,34 +1,40 @@
- #include <stdint.h>
-
- #ifndef mul
--#define mul(a,b) (int32_t) ( ( ((int64_t) a) * ((int64_t) b) ) >>32 )
-+#define mul(a, b) (int32_t)((((int64_t)a) * ((int64_t)b)) >> 32)
- #endif
-
- #ifndef muls
--#define muls(a,b) (int32_t) ( ( ((int64_t) a) * ((int64_t) b) ) >>31 )
-+#define muls(a, b) (int32_t)((((int64_t)a) * ((int64_t)b)) >> 31)
- #endif
-
- #ifndef mulr
--#define mulr(a,b) (int32_t) ( ( ( ((int64_t) a) * ((int64_t) b)) + 0x80000000LL ) >>32 )
-+#define mulr(a, b) \
-+ (int32_t)(((((int64_t)a) * ((int64_t)b)) + 0x80000000LL) >> 32)
- #endif
-
- #ifndef mulsr
--#define mulsr(a,b) (int32_t) ( ( ( ((int64_t) a) * ((int64_t) b)) + 0x40000000LL ) >>31 )
-+#define mulsr(a, b) \
-+ (int32_t)(((((int64_t)a) * ((int64_t)b)) + 0x40000000LL) >> 31)
- #endif
-
- #ifndef mul0
--#define mul0(hi,lo,a,b) ((hi) = mul((a), (b)))
--#define muladd(hi,lo,a,b) ((hi) += mul((a), (b)))
--#define mulsub(hi,lo,a,b) ((hi) -= mul((a), (b)))
--#define mulz(hi,lo)
-+#define mul0(hi, lo, a, b) ((hi) = mul((a), (b)))
-+#define muladd(hi, lo, a, b) ((hi) += mul((a), (b)))
-+#define mulsub(hi, lo, a, b) ((hi) -= mul((a), (b)))
-+#define mulz(hi, lo)
- #endif
-
- #ifndef cmuls
--#define cmuls(dre, dim, are, aim, bre, bim) \
--do { \
-- int32_t tre; \
-- (tre) = (int32_t) (((int64_t) (are) * (int64_t) (bre) - (int64_t) (aim) * (int64_t) (bim)) >> 31); \
-- (dim) = (int32_t) (((int64_t) (are) * (int64_t) (bim) + (int64_t) (aim) * (int64_t) (bre)) >> 31); \
-- (dre) = tre; \
--} while (0)
-+#define cmuls(dre, dim, are, aim, bre, bim) \
-+ do { \
-+ int32_t tre; \
-+ (tre) = (int32_t)(((int64_t)(are) * (int64_t)(bre) - \
-+ (int64_t)(aim) * (int64_t)(bim)) >> \
-+ 31); \
-+ (dim) = (int32_t)(((int64_t)(are) * (int64_t)(bim) + \
-+ (int64_t)(aim) * (int64_t)(bre)) >> \
-+ 31); \
-+ (dre) = tre; \
-+ } while (0)
- #endif
-diff --git a/src/lib/mult_sarm_gcc.h b/src/lib/mult_sarm_gcc.h
-index d229eff..0cf8e08 100644
---- a/src/lib/mult_sarm_gcc.h
-+++ b/src/lib/mult_sarm_gcc.h
-@@ -2,108 +2,102 @@
-
- /* Fractional multiply */
- #if __ARM_ARCH >= 6
--#define mul(x,y) \
--({ \
-- register int32_t result; \
-- asm ("smmul %0, %2, %1" : "=r" (result) : "r" (x), "r" (y)); \
-- result ;\
--})
-+#define mul(x, y) \
-+ ({ \
-+ register int32_t result; \
-+ asm("smmul %0, %2, %1" : "=r"(result) : "r"(x), "r"(y)); \
-+ result; \
-+ })
- #else
--#define mul(x,y) \
--({ \
-- register int32_t result; \
-- asm ("smull r3, %0, %2, %1" : "=r" (result) : "r" (x), "r" (y) : "r3"); \
-- result ; \
--})
-+#define mul(x, y) \
-+ ({ \
-+ register int32_t result; \
-+ asm("smull r3, %0, %2, %1" : "=r"(result) : "r"(x), "r"(y) : "r3"); \
-+ result; \
-+ })
- #endif
-
- /* Fractional multiply with single bit left shift. */
--#define muls(x,y) \
--({ \
-- register int32_t result; \
-- asm ( \
-- "smull r3, %0, %2, %1\n\t" \
-- "movs r3, r3, lsl #1\n\t" \
-- "adc %0, %0, %0" \
-- : "=r" (result) : "r" (x), "r" (y) : "r3", "cc" \
-- ); \
-- result; \
--})
--
-+#define muls(x, y) \
-+ ({ \
-+ register int32_t result; \
-+ asm("smull r3, %0, %2, %1\n\t" \
-+ "movs r3, r3, lsl #1\n\t" \
-+ "adc %0, %0, %0" \
-+ : "=r"(result) \
-+ : "r"(x), "r"(y) \
-+ : "r3", "cc"); \
-+ result; \
-+ })
-
- #if __ARM_ARCH >= 6
--#define mulr(x,y) \
--({ \
-- register int32_t result; \
-- asm ( \
-- "smmulr %0, %2, %1" : "=r" (result) : "r" (x), "r" (y) \
-- ); \
-- result; \
--})
-+#define mulr(x, y) \
-+ ({ \
-+ register int32_t result; \
-+ asm("smmulr %0, %2, %1" : "=r"(result) : "r"(x), "r"(y)); \
-+ result; \
-+ })
- #else
--#define mulr(x,y) \
--({ \
-- register int32_t result; \
-- asm ( \
-- "smull r3, %0, %2, %1\n\t" \
-- "adds r3, r3, #0x80000000\n\t" \
-- "adc %0, %0, #0" \
-- : "=r" (result) : "r" (x), "r" (y) : "r3", "cc" \
-- ); \
-- result; \
--})
-+#define mulr(x, y) \
-+ ({ \
-+ register int32_t result; \
-+ asm("smull r3, %0, %2, %1\n\t" \
-+ "adds r3, r3, #0x80000000\n\t" \
-+ "adc %0, %0, #0" \
-+ : "=r"(result) \
-+ : "r"(x), "r"(y) \
-+ : "r3", "cc"); \
-+ result; \
-+ })
- #endif
-
--#define mulsr(x,y) \
--({ \
-- register int32_t result; \
-- asm ( \
-- "smull r3, %0, %1, %2\n\t" \
-- "movs r3, r3, lsl #1\n\t" \
-- "adc %0, %0, %0\n\t" \
-- "adds r3, r3, #0x80000000\n\t" \
-- "adc %0, %0, #0" \
-- : "=r" (result) : "r" (x), "r" (y) : "r3", "cc" \
-- ); \
-- result; \
--})
-+#define mulsr(x, y) \
-+ ({ \
-+ register int32_t result; \
-+ asm("smull r3, %0, %1, %2\n\t" \
-+ "movs r3, r3, lsl #1\n\t" \
-+ "adc %0, %0, %0\n\t" \
-+ "adds r3, r3, #0x80000000\n\t" \
-+ "adc %0, %0, #0" \
-+ : "=r"(result) \
-+ : "r"(x), "r"(y) \
-+ : "r3", "cc"); \
-+ result; \
-+ })
-
--#define mul0(hi,lo,a,b) \
-- asm ("smull %0, %1, %2, %3" : "=r" (lo), "=r" (hi) : "r" (a), "r" (b))
-+#define mul0(hi, lo, a, b) \
-+ asm("smull %0, %1, %2, %3" : "=r"(lo), "=r"(hi) : "r"(a), "r"(b))
-
--#define muladd(hi,lo,a,b) \
-- asm ("smlal %0, %1, %2, %3" : "+r" (lo), "+r" (hi) : "r" (a), "r" (b))
-+#define muladd(hi, lo, a, b) \
-+ asm("smlal %0, %1, %2, %3" : "+r"(lo), "+r"(hi) : "r"(a), "r"(b))
-
--#define mulsub(hi,lo,a,b) \
-- asm ("smlal %0, %1, %2, %3" : "+r" (lo), "+r" (hi) : "r" (a), "r" (-(b)))
-+#define mulsub(hi, lo, a, b) \
-+ asm("smlal %0, %1, %2, %3" : "+r"(lo), "+r"(hi) : "r"(a), "r"(-(b)))
-
--#define mulz(hi,lo)
-+#define mulz(hi, lo)
-
--#define cmuls(dre, dim, are, aim, bre, bim) \
--do { \
-- register int32_t tre, tim; \
-- asm ( \
-- "smull r3, %0, %2, %4\n\t" \
-- "smlal r3, %0, %3, %5\n\t" \
-- "movs r3, r3, lsl #1\n\t" \
-- "adc %0, %0, %0\n\t" \
-- "smull r3, %1, %2, %6\n\t" \
-- "smlal r3, %1, %4, %3\n\t" \
-- "movs r3, r3, lsl #1\n\t" \
-- "adc %1, %1, %1\n\t" \
-- : "=&r" (tre), "=&r" (tim) \
-- : "r" (are), "r" (aim), "r" (bre), "r" (-(bim)), "r" (bim) \
-- : "r3", "cc" \
-- ); \
-- dre = tre; \
-- dim = tim; \
--} while (0)
-+#define cmuls(dre, dim, are, aim, bre, bim) \
-+ do { \
-+ register int32_t tre, tim; \
-+ asm("smull r3, %0, %2, %4\n\t" \
-+ "smlal r3, %0, %3, %5\n\t" \
-+ "movs r3, r3, lsl #1\n\t" \
-+ "adc %0, %0, %0\n\t" \
-+ "smull r3, %1, %2, %6\n\t" \
-+ "smlal r3, %1, %4, %3\n\t" \
-+ "movs r3, r3, lsl #1\n\t" \
-+ "adc %1, %1, %1\n\t" \
-+ : "=&r"(tre), "=&r"(tim) \
-+ : "r"(are), "r"(aim), "r"(bre), "r"(-(bim)), "r"(bim) \
-+ : "r3", "cc"); \
-+ dre = tre; \
-+ dim = tim; \
-+ } while (0)
-
- #if __ARM_ARCH >= 6
--static inline uint32_t SWAB32(uint32_t x)
--{
-- asm ("rev %0, %1" : "=r" (x) : "r" (x));
-- return x;
-+static inline uint32_t SWAB32(uint32_t x) {
-+ asm("rev %0, %1" : "=r"(x) : "r"(x));
-+ return x;
- }
- #define SWAB32 SWAB32
- #endif
-diff --git a/src/lib/reservoir.c b/src/lib/reservoir.c
-index ca84f3d..cea0a9b 100644
---- a/src/lib/reservoir.c
-+++ b/src/lib/reservoir.c
-@@ -2,13 +2,13 @@
- * Layer3 bit reservoir: Described in C.1.5.4.2.2 of the IS
- */
-
--#include "types.h"
--#include "layer3.h"
--#include "l3loop.h"
--#include "huffman.h"
-+#include "reservoir.h"
- #include "bitstream.h"
-+#include "huffman.h"
- #include "l3bitstream.h"
--#include "reservoir.h"
-+#include "l3loop.h"
-+#include "layer3.h"
-+#include "types.h"
-
- /*
- * shine_max_reservoir_bits:
-@@ -17,36 +17,34 @@
- * allowance for the current granule based on reservoir size
- * and perceptual entropy.
- */
--int shine_max_reservoir_bits (double *pe, shine_global_config *config )
--{
-+int shine_max_reservoir_bits(double *pe, shine_global_config *config) {
- int more_bits, max_bits, add_bits, over_bits;
- int mean_bits = config->mean_bits;
-
- mean_bits /= config->wave.channels;
- max_bits = mean_bits;
-
-- if(max_bits>4095)
-+ if (max_bits > 4095)
- max_bits = 4095;
-- if(!config->ResvMax)
-+ if (!config->ResvMax)
- return max_bits;
-
- more_bits = *pe * 3.1 - mean_bits;
- add_bits = 0;
-- if(more_bits>100)
-- {
-+ if (more_bits > 100) {
- int frac = (config->ResvSize * 6) / 10;
-
-- if(frac<more_bits)
-+ if (frac < more_bits)
- add_bits = frac;
- else
- add_bits = more_bits;
- }
-- over_bits = config->ResvSize - ((config->ResvMax <<3) / 10) - add_bits;
-- if (over_bits>0)
-+ over_bits = config->ResvSize - ((config->ResvMax << 3) / 10) - add_bits;
-+ if (over_bits > 0)
- add_bits += over_bits;
-
- max_bits += add_bits;
-- if(max_bits>4095)
-+ if (max_bits > 4095)
- max_bits = 4095;
- return max_bits;
- }
-@@ -57,9 +55,9 @@ int shine_max_reservoir_bits (double *pe, shine_global_config *config )
- * Called after a granule's bit allocation. Readjusts the size of
- * the reservoir to reflect the granule's usage.
- */
--void shine_ResvAdjust(gr_info *gi, shine_global_config *config )
--{
-- config->ResvSize += (config->mean_bits / config->wave.channels) - gi->part2_3_length;
-+void shine_ResvAdjust(gr_info *gi, shine_global_config *config) {
-+ config->ResvSize +=
-+ (config->mean_bits / config->wave.channels) - gi->part2_3_length;
- }
-
- /*
-@@ -71,8 +69,7 @@ void shine_ResvAdjust(gr_info *gi, shine_global_config *config )
- * part2_3_length. The bitstream formatter will detect this and write the
- * appropriate stuffing bits to the bitstream.
- */
--void shine_ResvFrameEnd(shine_global_config *config )
--{
-+void shine_ResvFrameEnd(shine_global_config *config) {
- gr_info *gi;
- int gr, ch, ancillary_pad, stuffingBits;
- int over_bits;
-@@ -81,42 +78,38 @@ void shine_ResvFrameEnd(shine_global_config *config )
- ancillary_pad = 0;
-
- /* just in case mean_bits is odd, this is necessary... */
-- if((config->wave.channels==2) && (config->mean_bits & 1))
-+ if ((config->wave.channels == 2) && (config->mean_bits & 1))
- config->ResvSize += 1;
-
- over_bits = config->ResvSize - config->ResvMax;
-- if(over_bits<0)
-+ if (over_bits < 0)
- over_bits = 0;
-
- config->ResvSize -= over_bits;
- stuffingBits = over_bits + ancillary_pad;
-
- /* we must be byte aligned */
-- if((over_bits = config->ResvSize % 8))
-- {
-+ if ((over_bits = config->ResvSize % 8)) {
- stuffingBits += over_bits;
- config->ResvSize -= over_bits;
- }
-
-- if(stuffingBits)
-- {
-+ if (stuffingBits) {
- /*
- * plan a: put all into the first granule
- * This was preferred by someone designing a
- * real-time decoder...
- */
-- gi = (gr_info *) &(l3_side->gr[0].ch[0]);
-+ gi = (gr_info *)&(l3_side->gr[0].ch[0]);
-
-- if ( gi->part2_3_length + stuffingBits < 4095 )
-+ if (gi->part2_3_length + stuffingBits < 4095)
- gi->part2_3_length += stuffingBits;
-- else
-- {
-+ else {
- /* plan b: distribute throughout the granules */
-- for (gr = 0; gr < config->mpeg.granules_per_frame; gr++ )
-- for (ch = 0; ch < config->wave.channels; ch++ )
-- {
-+ for (gr = 0; gr < config->mpeg.granules_per_frame; gr++)
-+ for (ch = 0; ch < config->wave.channels; ch++) {
- int extraBits, bitsThisGr;
-- gr_info *gi = (gr_info *) &(l3_side->gr[gr].ch[ch]);
-+ gr_info *gi = (gr_info *)&(l3_side->gr[gr].ch[ch]);
- if (!stuffingBits)
- break;
- extraBits = 4095 - gi->part2_3_length;
-@@ -133,5 +126,3 @@ void shine_ResvFrameEnd(shine_global_config *config )
- }
- }
- }
--
--
-diff --git a/src/lib/reservoir.h b/src/lib/reservoir.h
-index 2f1ffa5..2245778 100644
---- a/src/lib/reservoir.h
-+++ b/src/lib/reservoir.h
-@@ -1,9 +1,11 @@
- #ifndef RESERVOIR_H
- #define RESERVOIR_H
-
-+#include "types.h"
-+
- void shine_ResvFrameBegin(int frameLength, shine_global_config *config);
--int shine_max_reservoir_bits (double *pe, shine_global_config *config);
--void shine_ResvAdjust (gr_info *gi, shine_global_config *config );
--void shine_ResvFrameEnd (shine_global_config *config );
-+int shine_max_reservoir_bits(double *pe, shine_global_config *config);
-+void shine_ResvAdjust(gr_info *gi, shine_global_config *config);
-+void shine_ResvFrameEnd(shine_global_config *config);
-
- #endif
-diff --git a/src/lib/tables.c b/src/lib/tables.c
-index ff7e374..3c63b4f 100644
---- a/src/lib/tables.c
-+++ b/src/lib/tables.c
-@@ -7,120 +7,171 @@
-
- #include "tables.h"
-
--const int shine_slen1_tab[16] = { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 };
--const int shine_slen2_tab[16] = { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 };
-+const int shine_slen1_tab[16] = {0, 0, 0, 0, 3, 1, 1, 1,
-+ 2, 2, 2, 3, 3, 3, 4, 4};
-+const int shine_slen2_tab[16] = {0, 1, 2, 3, 0, 1, 2, 3,
-+ 1, 2, 3, 1, 2, 3, 2, 3};
-
- /* Valid samplerates and bitrates. */
- const int samplerates[9] = {
-- 44100, 48000, 32000, /* MPEG-I */
-- 22050, 24000, 16000, /* MPEG-II */
-- 11025, 12000, 8000 /* MPEG-2.5 */
-+ 44100, 48000, 32000, /* MPEG-I */
-+ 22050, 24000, 16000, /* MPEG-II */
-+ 11025, 12000, 8000 /* MPEG-2.5 */
- };
-
- const int bitrates[16][4] = {
-- /* MPEG version:
-- * 2.5, reserved, II, I */
-- { -1, -1, -1, -1},
-- { 8, -1, 8, 32},
-- { 16, -1, 16, 40},
-- { 24, -1, 24, 48},
-- { 32, -1, 32, 56},
-- { 40, -1, 40, 64},
-- { 48, -1, 48, 80},
-- { 56, -1, 56, 96},
-- { 64, -1, 64, 112},
-- { -1, -1, 80, 128},
-- { -1, -1, 96, 160},
-- { -1, -1, 112, 192},
-- { -1, -1, 128, 224},
-- { -1, -1, 144, 256},
-- { -1, -1, 160, 320},
-- { -1, -1, -1, -1}
--};
-+ /* MPEG version:
-+ * 2.5, reserved, II, I */
-+ {-1, -1, -1, -1}, {8, -1, 8, 32}, {16, -1, 16, 40},
-+ {24, -1, 24, 48}, {32, -1, 32, 56}, {40, -1, 40, 64},
-+ {48, -1, 48, 80}, {56, -1, 56, 96}, {64, -1, 64, 112},
-+ {-1, -1, 80, 128}, {-1, -1, 96, 160}, {-1, -1, 112, 192},
-+ {-1, -1, 128, 224}, {-1, -1, 144, 256}, {-1, -1, 160, 320},
-+ {-1, -1, -1, -1}};
-
--const int shine_scale_fact_band_index[9][23] =
--{
-- /* MPEG-I */
-+const int shine_scale_fact_band_index[9][23] = {
-+ /* MPEG-I */
- /* Table B.8.b: 44.1 kHz */
-- {0,4,8,12,16,20,24,30,36,44,52,62,74,90,110,134,162,196,238,288,342,418,576},
-+ {0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62,
-+ 74, 90, 110, 134, 162, 196, 238, 288, 342, 418, 576},
- /* Table B.8.c: 48 kHz */
-- {0,4,8,12,16,20,24,30,36,42,50,60,72,88,106,128,156,190,230,276,330,384,576},
-+ {0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60,
-+ 72, 88, 106, 128, 156, 190, 230, 276, 330, 384, 576},
- /* Table B.8.a: 32 kHz */
-- {0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576},
-- /* MPEG-II */
-+ {0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66,
-+ 82, 102, 126, 156, 194, 240, 296, 364, 448, 550, 576},
-+ /* MPEG-II */
- /* Table B.2.b: 22.05 kHz */
-- {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576},
-+ {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,
-+ 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576},
- /* Table B.2.c: 24 kHz */
-- {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,330,394,464,540,576},
-+ {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,
-+ 114, 136, 162, 194, 232, 278, 330, 394, 464, 540, 576},
- /* Table B.2.a: 16 kHz */
-- {0,6,12,18,24,30,36,44,45,66,80,96,116,140,168,200,238,248,336,396,464,522,576},
-+ {0, 6, 12, 18, 24, 30, 36, 44, 45, 66, 80, 96,
-+ 116, 140, 168, 200, 238, 248, 336, 396, 464, 522, 576},
-
-- /* MPEG-2.5 */
-+ /* MPEG-2.5 */
- /* 11.025 kHz */
-- {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576},
-+ {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,
-+ 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576},
- /* 12 kHz */
-- {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576},
-+ {0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96,
-+ 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576},
- /* MPEG-2.5 8 kHz */
-- {0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576},
-+ {0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192,
-+ 232, 280, 336, 400, 476, 566, 568, 570, 572, 574, 576},
- };
-
- /* note. 0.035781 is shine_enwindow maximum value */
- /* scale and convert to fixed point before storing */
--#define SHINE_EW(x) (int32_t)((double)(x) * 0x7fffffff)
--#define SHINE_EW2(a,b) SHINE_EW(a), SHINE_EW(b)
--#define SHINE_EW10(a,b,c,d,e,f,g,h,i,j) SHINE_EW2(a,b), SHINE_EW2(c,d), SHINE_EW2(e,f), SHINE_EW2(g,h), SHINE_EW2(i,j)
-+#define SHINE_EW(x) (int32_t)((double)(x)*0x7fffffff)
-+#define SHINE_EW2(a, b) SHINE_EW(a), SHINE_EW(b)
-+#define SHINE_EW10(a, b, c, d, e, f, g, h, i, j) \
-+ SHINE_EW2(a, b), SHINE_EW2(c, d), SHINE_EW2(e, f), SHINE_EW2(g, h), \
-+ SHINE_EW2(i, j)
-
- const int32_t shine_enwindow[] = {
--SHINE_EW10( 0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000001, -0.000001, -0.000001),
--SHINE_EW10( -0.000001, -0.000001, -0.000001, -0.000002, -0.000002, -0.000002, -0.000002, -0.000003, -0.000003, -0.000003),
--SHINE_EW10( -0.000004, -0.000004, -0.000005, -0.000005, -0.000006, -0.000007, -0.000008, -0.000008, -0.000009, -0.000010),
--SHINE_EW10( -0.000011, -0.000012, -0.000014, -0.000015, -0.000017, -0.000018, -0.000020, -0.000021, -0.000023, -0.000025),
--SHINE_EW10( -0.000028, -0.000030, -0.000032, -0.000035, -0.000038, -0.000041, -0.000043, -0.000046, -0.000050, -0.000053),
--SHINE_EW10( -0.000056, -0.000060, -0.000063, -0.000066, -0.000070, -0.000073, -0.000077, -0.000081, -0.000084, -0.000087),
--SHINE_EW10( -0.000091, -0.000093, -0.000096, -0.000099, 0.000102, 0.000104, 0.000106, 0.000107, 0.000108, 0.000109),
--SHINE_EW10( 0.000109, 0.000108, 0.000107, 0.000105, 0.000103, 0.000099, 0.000095, 0.000090, 0.000084, 0.000078),
--SHINE_EW10( 0.000070, 0.000061, 0.000051, 0.000040, 0.000027, 0.000014, -0.000001, -0.000017, -0.000034, -0.000053),
--SHINE_EW10( -0.000073, -0.000094, -0.000116, -0.000140, -0.000165, -0.000191, -0.000219, -0.000247, -0.000277, -0.000308),
--SHINE_EW10( -0.000339, -0.000371, -0.000404, -0.000438, -0.000473, -0.000507, -0.000542, -0.000577, -0.000612, -0.000647),
--SHINE_EW10( -0.000681, -0.000714, -0.000747, -0.000779, -0.000810, -0.000839, -0.000866, -0.000892, -0.000915, -0.000936),
--SHINE_EW10( -0.000954, -0.000969, -0.000981, -0.000989, -0.000994, -0.000995, -0.000992, -0.000984, 0.000971, 0.000954),
--SHINE_EW10( 0.000931, 0.000903, 0.000869, 0.000829, 0.000784, 0.000732, 0.000674, 0.000610, 0.000539, 0.000463),
--SHINE_EW10( 0.000379, 0.000288, 0.000192, 0.000088, -0.000021, -0.000137, -0.000260, -0.000388, -0.000522, -0.000662),
--SHINE_EW10( -0.000807, -0.000957, -0.001111, -0.001270, -0.001432, -0.001598, -0.001767, -0.001937, -0.002110, -0.002283),
--SHINE_EW10( -0.002457, -0.002631, -0.002803, -0.002974, -0.003142, -0.003307, -0.003467, -0.003623, -0.003772, -0.003914),
--SHINE_EW10( -0.004049, -0.004175, -0.004291, -0.004396, -0.004490, -0.004570, -0.004638, -0.004691, -0.004728, -0.004749),
--SHINE_EW10( -0.004752, -0.004737, -0.004703, -0.004649, -0.004574, -0.004477, -0.004358, -0.004215, -0.004049, -0.003859),
--SHINE_EW10( -0.003643, -0.003402, 0.003135, 0.002841, 0.002522, 0.002175, 0.001801, 0.001400, 0.000971, 0.000516),
--SHINE_EW10( 0.000033, -0.000476, -0.001012, -0.001574, -0.002162, -0.002774, -0.003411, -0.004072, -0.004756, -0.005462),
--SHINE_EW10( -0.006189, -0.006937, -0.007703, -0.008487, -0.009288, -0.010104, -0.010933, -0.011775, -0.012628, -0.013489),
--SHINE_EW10( -0.014359, -0.015234, -0.016113, -0.016994, -0.017876, -0.018757, -0.019634, -0.020507, -0.021372, -0.022229),
--SHINE_EW10( -0.023074, -0.023907, -0.024725, -0.025527, -0.026311, -0.027074, -0.027815, -0.028533, -0.029225, -0.029890),
--SHINE_EW10( -0.030527, -0.031133, -0.031707, -0.032248, -0.032755, -0.033226, -0.033660, -0.034056, -0.034413, -0.034730),
--SHINE_EW10( -0.035007, -0.035242, -0.035435, -0.035586, -0.035694, -0.035759, 0.035781, 0.035759, 0.035694, 0.035586),
--SHINE_EW10( 0.035435, 0.035242, 0.035007, 0.034730, 0.034413, 0.034056, 0.033660, 0.033226, 0.032755, 0.032248),
--SHINE_EW10( 0.031707, 0.031133, 0.030527, 0.029890, 0.029225, 0.028533, 0.027815, 0.027074, 0.026311, 0.025527),
--SHINE_EW10( 0.024725, 0.023907, 0.023074, 0.022229, 0.021372, 0.020507, 0.019634, 0.018757, 0.017876, 0.016994),
--SHINE_EW10( 0.016113, 0.015234, 0.014359, 0.013489, 0.012628, 0.011775, 0.010933, 0.010104, 0.009288, 0.008487),
--SHINE_EW10( 0.007703, 0.006937, 0.006189, 0.005462, 0.004756, 0.004072, 0.003411, 0.002774, 0.002162, 0.001574),
--SHINE_EW10( 0.001012, 0.000476, -0.000033, -0.000516, -0.000971, -0.001400, -0.001801, -0.002175, -0.002522, -0.002841),
--SHINE_EW10( 0.003135, 0.003402, 0.003643, 0.003859, 0.004049, 0.004215, 0.004358, 0.004477, 0.004574, 0.004649),
--SHINE_EW10( 0.004703, 0.004737, 0.004752, 0.004749, 0.004728, 0.004691, 0.004638, 0.004570, 0.004490, 0.004396),
--SHINE_EW10( 0.004291, 0.004175, 0.004049, 0.003914, 0.003772, 0.003623, 0.003467, 0.003307, 0.003142, 0.002974),
--SHINE_EW10( 0.002803, 0.002631, 0.002457, 0.002283, 0.002110, 0.001937, 0.001767, 0.001598, 0.001432, 0.001270),
--SHINE_EW10( 0.001111, 0.000957, 0.000807, 0.000662, 0.000522, 0.000388, 0.000260, 0.000137, 0.000021, -0.000088),
--SHINE_EW10( -0.000192, -0.000288, -0.000379, -0.000463, -0.000539, -0.000610, -0.000674, -0.000732, -0.000784, -0.000829),
--SHINE_EW10( -0.000869, -0.000903, -0.000931, -0.000954, 0.000971, 0.000984, 0.000992, 0.000995, 0.000994, 0.000989),
--SHINE_EW10( 0.000981, 0.000969, 0.000954, 0.000936, 0.000915, 0.000892, 0.000866, 0.000839, 0.000810, 0.000779),
--SHINE_EW10( 0.000747, 0.000714, 0.000681, 0.000647, 0.000612, 0.000577, 0.000542, 0.000507, 0.000473, 0.000438),
--SHINE_EW10( 0.000404, 0.000371, 0.000339, 0.000308, 0.000277, 0.000247, 0.000219, 0.000191, 0.000165, 0.000140),
--SHINE_EW10( 0.000116, 0.000094, 0.000073, 0.000053, 0.000034, 0.000017, 0.000001, -0.000014, -0.000027, -0.000040),
--SHINE_EW10( -0.000051, -0.000061, -0.000070, -0.000078, -0.000084, -0.000090, -0.000095, -0.000099, -0.000103, -0.000105),
--SHINE_EW10( -0.000107, -0.000108, -0.000109, -0.000109, -0.000108, -0.000107, -0.000106, -0.000104, 0.000102, 0.000099),
--SHINE_EW10( 0.000096, 0.000093, 0.000091, 0.000087, 0.000084, 0.000081, 0.000077, 0.000073, 0.000070, 0.000066),
--SHINE_EW10( 0.000063, 0.000060, 0.000056, 0.000053, 0.000050, 0.000046, 0.000043, 0.000041, 0.000038, 0.000035),
--SHINE_EW10( 0.000032, 0.000030, 0.000028, 0.000025, 0.000023, 0.000021, 0.000020, 0.000018, 0.000017, 0.000015),
--SHINE_EW10( 0.000014, 0.000012, 0.000011, 0.000010, 0.000009, 0.000008, 0.000008, 0.000007, 0.000006, 0.000005),
--SHINE_EW10( 0.000005, 0.000004, 0.000004, 0.000003, 0.000003, 0.000003, 0.000002, 0.000002, 0.000002, 0.000002),
--SHINE_EW10( 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000),
--SHINE_EW2 ( 0.000000, 0.000000)
--};
-+ SHINE_EW10(0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000000,
-+ -0.000000, -0.000001, -0.000001, -0.000001),
-+ SHINE_EW10(-0.000001, -0.000001, -0.000001, -0.000002, -0.000002, -0.000002,
-+ -0.000002, -0.000003, -0.000003, -0.000003),
-+ SHINE_EW10(-0.000004, -0.000004, -0.000005, -0.000005, -0.000006, -0.000007,
-+ -0.000008, -0.000008, -0.000009, -0.000010),
-+ SHINE_EW10(-0.000011, -0.000012, -0.000014, -0.000015, -0.000017, -0.000018,
-+ -0.000020, -0.000021, -0.000023, -0.000025),
-+ SHINE_EW10(-0.000028, -0.000030, -0.000032, -0.000035, -0.000038, -0.000041,
-+ -0.000043, -0.000046, -0.000050, -0.000053),
-+ SHINE_EW10(-0.000056, -0.000060, -0.000063, -0.000066, -0.000070, -0.000073,
-+ -0.000077, -0.000081, -0.000084, -0.000087),
-+ SHINE_EW10(-0.000091, -0.000093, -0.000096, -0.000099, 0.000102, 0.000104,
-+ 0.000106, 0.000107, 0.000108, 0.000109),
-+ SHINE_EW10(0.000109, 0.000108, 0.000107, 0.000105, 0.000103, 0.000099,
-+ 0.000095, 0.000090, 0.000084, 0.000078),
-+ SHINE_EW10(0.000070, 0.000061, 0.000051, 0.000040, 0.000027, 0.000014,
-+ -0.000001, -0.000017, -0.000034, -0.000053),
-+ SHINE_EW10(-0.000073, -0.000094, -0.000116, -0.000140, -0.000165, -0.000191,
-+ -0.000219, -0.000247, -0.000277, -0.000308),
-+ SHINE_EW10(-0.000339, -0.000371, -0.000404, -0.000438, -0.000473, -0.000507,
-+ -0.000542, -0.000577, -0.000612, -0.000647),
-+ SHINE_EW10(-0.000681, -0.000714, -0.000747, -0.000779, -0.000810, -0.000839,
-+ -0.000866, -0.000892, -0.000915, -0.000936),
-+ SHINE_EW10(-0.000954, -0.000969, -0.000981, -0.000989, -0.000994, -0.000995,
-+ -0.000992, -0.000984, 0.000971, 0.000954),
-+ SHINE_EW10(0.000931, 0.000903, 0.000869, 0.000829, 0.000784, 0.000732,
-+ 0.000674, 0.000610, 0.000539, 0.000463),
-+ SHINE_EW10(0.000379, 0.000288, 0.000192, 0.000088, -0.000021, -0.000137,
-+ -0.000260, -0.000388, -0.000522, -0.000662),
-+ SHINE_EW10(-0.000807, -0.000957, -0.001111, -0.001270, -0.001432, -0.001598,
-+ -0.001767, -0.001937, -0.002110, -0.002283),
-+ SHINE_EW10(-0.002457, -0.002631, -0.002803, -0.002974, -0.003142, -0.003307,
-+ -0.003467, -0.003623, -0.003772, -0.003914),
-+ SHINE_EW10(-0.004049, -0.004175, -0.004291, -0.004396, -0.004490, -0.004570,
-+ -0.004638, -0.004691, -0.004728, -0.004749),
-+ SHINE_EW10(-0.004752, -0.004737, -0.004703, -0.004649, -0.004574, -0.004477,
-+ -0.004358, -0.004215, -0.004049, -0.003859),
-+ SHINE_EW10(-0.003643, -0.003402, 0.003135, 0.002841, 0.002522, 0.002175,
-+ 0.001801, 0.001400, 0.000971, 0.000516),
-+ SHINE_EW10(0.000033, -0.000476, -0.001012, -0.001574, -0.002162, -0.002774,
-+ -0.003411, -0.004072, -0.004756, -0.005462),
-+ SHINE_EW10(-0.006189, -0.006937, -0.007703, -0.008487, -0.009288, -0.010104,
-+ -0.010933, -0.011775, -0.012628, -0.013489),
-+ SHINE_EW10(-0.014359, -0.015234, -0.016113, -0.016994, -0.017876, -0.018757,
-+ -0.019634, -0.020507, -0.021372, -0.022229),
-+ SHINE_EW10(-0.023074, -0.023907, -0.024725, -0.025527, -0.026311, -0.027074,
-+ -0.027815, -0.028533, -0.029225, -0.029890),
-+ SHINE_EW10(-0.030527, -0.031133, -0.031707, -0.032248, -0.032755, -0.033226,
-+ -0.033660, -0.034056, -0.034413, -0.034730),
-+ SHINE_EW10(-0.035007, -0.035242, -0.035435, -0.035586, -0.035694, -0.035759,
-+ 0.035781, 0.035759, 0.035694, 0.035586),
-+ SHINE_EW10(0.035435, 0.035242, 0.035007, 0.034730, 0.034413, 0.034056,
-+ 0.033660, 0.033226, 0.032755, 0.032248),
-+ SHINE_EW10(0.031707, 0.031133, 0.030527, 0.029890, 0.029225, 0.028533,
-+ 0.027815, 0.027074, 0.026311, 0.025527),
-+ SHINE_EW10(0.024725, 0.023907, 0.023074, 0.022229, 0.021372, 0.020507,
-+ 0.019634, 0.018757, 0.017876, 0.016994),
-+ SHINE_EW10(0.016113, 0.015234, 0.014359, 0.013489, 0.012628, 0.011775,
-+ 0.010933, 0.010104, 0.009288, 0.008487),
-+ SHINE_EW10(0.007703, 0.006937, 0.006189, 0.005462, 0.004756, 0.004072,
-+ 0.003411, 0.002774, 0.002162, 0.001574),
-+ SHINE_EW10(0.001012, 0.000476, -0.000033, -0.000516, -0.000971, -0.001400,
-+ -0.001801, -0.002175, -0.002522, -0.002841),
-+ SHINE_EW10(0.003135, 0.003402, 0.003643, 0.003859, 0.004049, 0.004215,
-+ 0.004358, 0.004477, 0.004574, 0.004649),
-+ SHINE_EW10(0.004703, 0.004737, 0.004752, 0.004749, 0.004728, 0.004691,
-+ 0.004638, 0.004570, 0.004490, 0.004396),
-+ SHINE_EW10(0.004291, 0.004175, 0.004049, 0.003914, 0.003772, 0.003623,
-+ 0.003467, 0.003307, 0.003142, 0.002974),
-+ SHINE_EW10(0.002803, 0.002631, 0.002457, 0.002283, 0.002110, 0.001937,
-+ 0.001767, 0.001598, 0.001432, 0.001270),
-+ SHINE_EW10(0.001111, 0.000957, 0.000807, 0.000662, 0.000522, 0.000388,
-+ 0.000260, 0.000137, 0.000021, -0.000088),
-+ SHINE_EW10(-0.000192, -0.000288, -0.000379, -0.000463, -0.000539, -0.000610,
-+ -0.000674, -0.000732, -0.000784, -0.000829),
-+ SHINE_EW10(-0.000869, -0.000903, -0.000931, -0.000954, 0.000971, 0.000984,
-+ 0.000992, 0.000995, 0.000994, 0.000989),
-+ SHINE_EW10(0.000981, 0.000969, 0.000954, 0.000936, 0.000915, 0.000892,
-+ 0.000866, 0.000839, 0.000810, 0.000779),
-+ SHINE_EW10(0.000747, 0.000714, 0.000681, 0.000647, 0.000612, 0.000577,
-+ 0.000542, 0.000507, 0.000473, 0.000438),
-+ SHINE_EW10(0.000404, 0.000371, 0.000339, 0.000308, 0.000277, 0.000247,
-+ 0.000219, 0.000191, 0.000165, 0.000140),
-+ SHINE_EW10(0.000116, 0.000094, 0.000073, 0.000053, 0.000034, 0.000017,
-+ 0.000001, -0.000014, -0.000027, -0.000040),
-+ SHINE_EW10(-0.000051, -0.000061, -0.000070, -0.000078, -0.000084, -0.000090,
-+ -0.000095, -0.000099, -0.000103, -0.000105),
-+ SHINE_EW10(-0.000107, -0.000108, -0.000109, -0.000109, -0.000108, -0.000107,
-+ -0.000106, -0.000104, 0.000102, 0.000099),
-+ SHINE_EW10(0.000096, 0.000093, 0.000091, 0.000087, 0.000084, 0.000081,
-+ 0.000077, 0.000073, 0.000070, 0.000066),
-+ SHINE_EW10(0.000063, 0.000060, 0.000056, 0.000053, 0.000050, 0.000046,
-+ 0.000043, 0.000041, 0.000038, 0.000035),
-+ SHINE_EW10(0.000032, 0.000030, 0.000028, 0.000025, 0.000023, 0.000021,
-+ 0.000020, 0.000018, 0.000017, 0.000015),
-+ SHINE_EW10(0.000014, 0.000012, 0.000011, 0.000010, 0.000009, 0.000008,
-+ 0.000008, 0.000007, 0.000006, 0.000005),
-+ SHINE_EW10(0.000005, 0.000004, 0.000004, 0.000003, 0.000003, 0.000003,
-+ 0.000002, 0.000002, 0.000002, 0.000002),
-+ SHINE_EW10(0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001,
-+ 0.000000, 0.000000, 0.000000, 0.000000),
-+ SHINE_EW2(0.000000, 0.000000)};
-diff --git a/src/lib/tables.h b/src/lib/tables.h
-index 5c94228..fe06502 100644
---- a/src/lib/tables.h
-+++ b/src/lib/tables.h
-@@ -9,8 +9,7 @@ extern const int shine_slen2_tab[16];
- extern const int samplerates[9];
- extern const int bitrates[16][4];
-
--extern const int shine_scale_fact_band_index[9][23];
-+extern const int shine_scale_fact_band_index[9][23];
- extern const int32_t shine_enwindow[];
-
- #endif
--
-diff --git a/src/lib/types.h b/src/lib/types.h
-index f3def1a..11a05fc 100644
---- a/src/lib/types.h
-+++ b/src/lib/types.h
-@@ -2,18 +2,18 @@
- #define PRIV_TYPES_H
-
- #include <stdio.h>
--#include <string.h>
- #include <stdlib.h>
-+#include <string.h>
-
- #include <math.h>
-
--#define GRANULE_SIZE 576
-+#define GRANULE_SIZE 576
-
- #include "bitstream.h"
-
- /* Include arch-specific instructions,
- * when defined. */
--#if defined(__mips__) && (__mips != 64)
-+#if defined(__mips__) && (__mips == 32)
- #include "mult_mips_gcc.h"
- #elif defined(__arm__) && !defined(__thumb__)
- #include "mult_sarm_gcc.h"
-@@ -24,29 +24,32 @@
- #include "mult_noarch_gcc.h"
-
- #ifndef SWAB32
--#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
--#define SWAB32(x) __builtin_bswap32(x)
-+#if defined(__GNUC__) && \
-+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
-+#define SWAB32(x) __builtin_bswap32(x)
- #else
--#define SWAB32(x) (((unsigned int)(x) >> 24) | (((unsigned int)(x) >> 8) & 0xff00) | (((unsigned int)(x) & 0xff00) << 8) | ((unsigned int)(x) << 24))
-+#define SWAB32(x) \
-+ (((unsigned int)(x) >> 24) | (((unsigned int)(x) >> 8) & 0xff00) | \
-+ (((unsigned int)(x)&0xff00) << 8) | ((unsigned int)(x) << 24))
- #endif
- #endif
-
- /* #define DEBUG if you want the library to dump info to stdout */
-
--#define PI 3.14159265358979
--#define PI4 0.78539816339745
--#define PI12 0.26179938779915
--#define PI36 0.087266462599717
--#define PI64 0.049087385212
--#define SQRT2 1.41421356237
--#define LN2 0.69314718
-+#define PI 3.14159265358979
-+#define PI4 0.78539816339745
-+#define PI12 0.26179938779915
-+#define PI36 0.087266462599717
-+#define PI64 0.049087385212
-+#define SQRT2 1.41421356237
-+#define LN2 0.69314718
- #define LN_TO_LOG10 0.2302585093
--#define BLKSIZE 1024
--#define HAN_SIZE 512 /* for loop unrolling, require that HAN_SIZE%8==0 */
-+#define BLKSIZE 1024
-+#define HAN_SIZE 512 /* for loop unrolling, require that HAN_SIZE%8==0 */
- #define SCALE_BLOCK 12
- #define SCALE_RANGE 64
--#define SCALE 32768
--#define SBLIMIT 32
-+#define SCALE 32768
-+#define SBLIMIT 32
-
- #ifndef MAX_CHANNELS
- #define MAX_CHANNELS 2
-@@ -57,44 +60,44 @@
- #endif
-
- typedef struct {
-- int channels;
-- int samplerate;
-+ int channels;
-+ int samplerate;
- } priv_shine_wave_t;
-
- typedef struct {
-- int version;
-- int layer;
-- int granules_per_frame;
-- int mode; /* + */ /* Stereo mode */
-- int bitr; /* + */ /* Must conform to known bitrate - see Main.c */
-- int emph; /* + */ /* De-emphasis */
-- int padding;
-- int bits_per_frame;
-- int bits_per_slot;
-- double frac_slots_per_frame;
-- double slot_lag;
-- int whole_slots_per_frame;
-- int bitrate_index; /* + */ /* See Main.c and Layer3.c */
-- int samplerate_index; /* + */ /* See Main.c and Layer3.c */
-- int crc;
-- int ext;
-- int mode_ext;
-- int copyright; /* + */
-- int original; /* + */
-+ int version;
-+ int layer;
-+ int granules_per_frame;
-+ int mode; /* + */ /* Stereo mode */
-+ int bitr; /* + */ /* Must conform to known bitrate - see Main.c */
-+ int emph; /* + */ /* De-emphasis */
-+ int padding;
-+ int bits_per_frame;
-+ int bits_per_slot;
-+ double frac_slots_per_frame;
-+ double slot_lag;
-+ int whole_slots_per_frame;
-+ int bitrate_index; /* + */ /* See Main.c and Layer3.c */
-+ int samplerate_index; /* + */ /* See Main.c and Layer3.c */
-+ int crc;
-+ int ext;
-+ int mode_ext;
-+ int copyright; /* + */
-+ int original; /* + */
- } priv_shine_mpeg_t;
-
- typedef struct {
-- int32_t *xr; /* magnitudes of the spectral values */
-- int32_t xrsq[GRANULE_SIZE]; /* xr squared */
-- int32_t xrabs[GRANULE_SIZE]; /* xr absolute */
-- int32_t xrmax; /* maximum of xrabs array */
-- int32_t en_tot[MAX_GRANULES]; /* gr */
-+ int32_t *xr; /* magnitudes of the spectral values */
-+ int32_t xrsq[GRANULE_SIZE]; /* xr squared */
-+ int32_t xrabs[GRANULE_SIZE]; /* xr absolute */
-+ int32_t xrmax; /* maximum of xrabs array */
-+ int32_t en_tot[MAX_GRANULES]; /* gr */
- int32_t en[MAX_GRANULES][21];
- int32_t xm[MAX_GRANULES][21];
- int32_t xrmaxl[MAX_GRANULES];
-- double steptab[128]; /* 2**(-x/4) for x = -127..0 */
-- int32_t steptabi[128]; /* 2**(-x/4) for x = -127..0 */
-- int int2idx[10000]; /* x**(3/4) for x = 0..9999 */
-+ double steptab[128]; /* 2**(-x/4) for x = -127..0 */
-+ int32_t steptabi[128]; /* 2**(-x/4) for x = -127..0 */
-+ int int2idx[10000]; /* x**(3/4) for x = 0..9999 */
- } l3loop_t;
-
- typedef struct {
-@@ -105,7 +108,7 @@ typedef struct {
- int off[MAX_CHANNELS];
- int32_t fl[SBLIMIT][64];
- int32_t x[MAX_CHANNELS][HAN_SIZE];
--} subband_t;
-+} subband_t;
-
- /* Side information */
- typedef struct {
-@@ -130,49 +133,48 @@ typedef struct {
- } gr_info;
-
- typedef struct {
-- unsigned private_bits;
-- int resvDrain;
-- unsigned scfsi[MAX_CHANNELS][4];
-+ unsigned private_bits;
-+ int resvDrain;
-+ unsigned scfsi[MAX_CHANNELS][4];
-+ struct {
- struct {
-- struct {
-- gr_info tt;
-- } ch[MAX_CHANNELS];
-- } gr[MAX_GRANULES];
-+ gr_info tt;
-+ } ch[MAX_CHANNELS];
-+ } gr[MAX_GRANULES];
- } shine_side_info_t;
-
- typedef struct {
-- double l[MAX_GRANULES][MAX_CHANNELS][21];
-+ double l[MAX_GRANULES][MAX_CHANNELS][21];
- } shine_psy_ratio_t;
-
- typedef struct {
-- double l[MAX_GRANULES][MAX_CHANNELS][21];
-+ double l[MAX_GRANULES][MAX_CHANNELS][21];
- } shine_psy_xmin_t;
-
- typedef struct {
-- int32_t l[MAX_GRANULES][MAX_CHANNELS][22]; /* [cb] */
-- int32_t s[MAX_GRANULES][MAX_CHANNELS][13][3]; /* [window][cb] */
-+ int32_t l[MAX_GRANULES][MAX_CHANNELS][22]; /* [cb] */
-+ int32_t s[MAX_GRANULES][MAX_CHANNELS][13][3]; /* [window][cb] */
- } shine_scalefac_t;
-
--
--typedef struct shine_global_flags {
-- priv_shine_wave_t wave;
-- priv_shine_mpeg_t mpeg;
-- bitstream_t bs;
-+typedef struct shine_global_flags {
-+ priv_shine_wave_t wave;
-+ priv_shine_mpeg_t mpeg;
-+ bitstream_t bs;
- shine_side_info_t side_info;
-- int sideinfo_len;
-- int mean_bits;
-+ int sideinfo_len;
-+ int mean_bits;
- shine_psy_ratio_t ratio;
-- shine_scalefac_t scalefactor;
-- int16_t *buffer[MAX_CHANNELS];
-- double pe[MAX_CHANNELS][MAX_GRANULES];
-- int l3_enc[MAX_CHANNELS][MAX_GRANULES][GRANULE_SIZE];
-- int32_t l3_sb_sample[MAX_CHANNELS][MAX_GRANULES+1][18][SBLIMIT];
-- int32_t mdct_freq[MAX_CHANNELS][MAX_GRANULES][GRANULE_SIZE];
-- int ResvSize;
-- int ResvMax;
-- l3loop_t l3loop;
-- mdct_t mdct;
-- subband_t subband;
-+ shine_scalefac_t scalefactor;
-+ int16_t *buffer[MAX_CHANNELS];
-+ double pe[MAX_CHANNELS][MAX_GRANULES];
-+ int l3_enc[MAX_CHANNELS][MAX_GRANULES][GRANULE_SIZE];
-+ int32_t l3_sb_sample[MAX_CHANNELS][MAX_GRANULES + 1][18][SBLIMIT];
-+ int32_t mdct_freq[MAX_CHANNELS][MAX_GRANULES][GRANULE_SIZE];
-+ int ResvSize;
-+ int ResvMax;
-+ l3loop_t l3loop;
-+ mdct_t mdct;
-+ subband_t subband;
- } shine_global_config;
-
- #endif
diff --git a/multimedia/shine/shine.SlackBuild b/multimedia/shine/shine.SlackBuild
index 81d701d8f3..14cac1b0cb 100644
--- a/multimedia/shine/shine.SlackBuild
+++ b/multimedia/shine/shine.SlackBuild
@@ -25,10 +25,12 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=shine
-VERSION=${VERSION:-3.1.1}
+VERSION=${VERSION:-ab5e352_20230101}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
+COMMIT=${COMMIT:-ab5e3526b64af1a2eaa43aa6f441a7312e013519}
+COMMITDATE=${COMMITDATE:-20230101}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -67,9 +69,9 @@ trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ER
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM-$COMMIT
+tar xvf $CWD/$PRGNAM-$COMMIT.tar.gz
+cd $PRGNAM-$COMMIT
chown -R root:root .
find -L . \
@@ -78,8 +80,6 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-patch -p1 --verbose --unified < $CWD/fix-bugs.patch
-
./bootstrap
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -90,6 +90,8 @@ CXXFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
+ --enable-shared \
+ --disable-static \
--build=$ARCH-slackware-linux
make
diff --git a/multimedia/shine/shine.info b/multimedia/shine/shine.info
index 401505a283..32ae886033 100644
--- a/multimedia/shine/shine.info
+++ b/multimedia/shine/shine.info
@@ -1,8 +1,8 @@
PRGNAM="shine"
-VERSION="3.1.1"
+VERSION="ab5e352_20230101"
HOMEPAGE="https://github.com/toots/shine"
-DOWNLOAD="https://github.com/toots/shine/archive/3.1.1/shine-3.1.1.tar.gz"
-MD5SUM="ff41cb139c25470f2d9c9acc9f97cc8d"
+DOWNLOAD="https://github.com/toots/shine/archive/ab5e352/shine-ab5e3526b64af1a2eaa43aa6f441a7312e013519.tar.gz"
+MD5SUM="1f8ac33d4819acf526b5de4a9a5c1bec"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/uavs3d/changelog b/multimedia/uavs3d/changelog
deleted file mode 100644
index 478e92d365..0000000000
--- a/multimedia/uavs3d/changelog
+++ /dev/null
@@ -1,21 +0,0 @@
-Changelog for uavs3d SlackBuild Script
---------------------------------------------------------------------
-
-27/08/2022:
-
-Added to SBo
-
-05/02/2023:
-
-Updated to Github commit 0133ee4
-Patched the cmakelist file to build in i586 and i686 platforms.
-Also patched the file to set the correct lib dir in 64 bit
-platforms.
-
-21/02/2024:
-
-Switched to a versioned one and
-patched it to latest git commit.
-From now on this will build only on x86 and x86_64.
-upstream hasn't made a release yet but they have
-upgraded the version to 1.2.0 internally.
diff --git a/multimedia/uavs3d/fix-build-issue.patch b/multimedia/uavs3d/fix-build-issue.patch
deleted file mode 100644
index 8aa66107a7..0000000000
--- a/multimedia/uavs3d/fix-build-issue.patch
+++ /dev/null
@@ -1,7618 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 5118377..46458c7 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -1,15 +1,20 @@
--cmake_minimum_required(VERSION 2.8)
-+cmake_minimum_required(VERSION 3.1)
-
- project(uavs3d)
-
-+option(COMPILE_10BIT "Enable 10bit streams decoding support." OFF)
-+
-+set(CMAKE_C_STANDARD 99)
-+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-+
- aux_source_directory(./test DIR_SRC_TEST)
--set_source_files_properties(${DIR_SRC_TEST} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -std=c99 -O3")
-
- add_subdirectory(./source)
-
- add_executable(uavs3dec ${DIR_SRC_TEST})
-
--target_link_libraries(uavs3dec m)
-+if (NOT MSVC)
-+ target_link_libraries(uavs3dec m)
-+endif()
- target_link_libraries(uavs3dec uavs3d)
- #target_link_libraries(uavs3dec dl)
--
-diff --git a/COPYING b/COPYING
-index 409d303..ce30f0f 100644
---- a/COPYING
-+++ b/COPYING
-@@ -1,4 +1,4 @@
--Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School", "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
-+Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School", "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
-
- All rights reserved.
-
-@@ -9,10 +9,7 @@ modification, are permitted provided that the following conditions are met:
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
--3. All advertising materials mentioning features or use of this software
-- must display the following acknowledgement:
-- This product includes the software uAVS3d developed by Peking University Shenzhen Graduate School, Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation.
--4. Neither the name of the organizations (Peking University Shenzhen Graduate School, Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation)
-+3. Neither the name of the organizations (Peking University Shenzhen Graduate School, Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation)
- nor the names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-diff --git a/README.md b/README.md
-index e46ada8..9ce6a2a 100644
---- a/README.md
-+++ b/README.md
-@@ -5,15 +5,16 @@
- 2) supports to compile for Android/IOS/Windows/Linux/MacOS systems.
- 3) optimized for ARMv7/ARMv8/SSE4/AVX2 chips.
- 4) 10bit decoding on all supported platforms.
--
-+ 5) The uavs3 codec has supported x86 and arm platforms, and has been tested and verified on the Kunpeng processor.
-+ 6) The ARM platform recommends the Kunpeng processor.
- # license
- Copyright reserved by “Peking University Shenzhen Graduate School”, “Peng Cheng Laboratory”, and “Guangdong Bohua UHD Innovation Corporation” <br><br>
-- This program is a free software. You can redistribute it and/or modify it under the terms of the BSD 4-clause license. <br>
-+ This program is a free software. You can redistribute it and/or modify it under the terms of the BSD 3-clause license. <br>
- For more details, please view the file "COPYING" in the project.
-
- # compile
- The default configuration only support 8bit decoding. <br>
-- To support 10bit streams decoding, edit source/decore/com_def.h : #define BIT_DEPTH 10
-+ To support 10bit streams decoding: cmake -DCOMPILE_10BIT=1
-
- ## windows
- Prerequisites:
-@@ -22,17 +23,20 @@ Prerequisites:
- build:
- 1. ./version.bat (to generate version.h)
- 2. solution file: build/x86_windows/uavs3d.sln
-+
-+ To support 10bit streams decoding, edit source/decore/com_def.h : #define COMPILE_10BIT 1
-
- ## linux/mac
- Prerequisites:
- 1. gawk (http://www.gnu.org/software/gawk/)
-- 2. CMake (https://cmake.org) version 2.8 or higher
-+ 2. CMake (https://cmake.org) version 3.1 or higher
-
- Build:
- 1. mkdir build/linux
-- 2. cd build/linux && cmake ../..
-+ 2. cd build/linux && cmake -DCOMPILE_10BIT=0 ../..
- 3. make && make install
-
-+ To support 10bit streams decoding: cmake -DCOMPILE_10BIT=1
- to build shared library, set BUILD_SHARED_LIBS=1 please.
-
- ## ios
-@@ -40,8 +44,11 @@ Prerequisites:
- XCode
-
- Build:
--1. ./version.sh (generate the version.h)
--2. xcode solution file: build/ios/uavs3d.xcodeproj
-+ 1. ./version.sh (generate the version.h)
-+ 2. xcode solution file: build/ios/uavs3d.xcodeproj
-+
-+ To support 10bit streams decoding:
-+ Find Xcode -> PROJECT -> Build Settings -> Preprocessor Macros, add COMPILE_10BIT=1
-
- ## android
- Prerequisites:
-@@ -51,8 +58,10 @@ Build ndk library or executable file:
- 1. ./version.sh (generate the version.h)
- 2. cd build/android/ndk/jni
- 3. $NDK_PATH/ndk-build
-+
-+ To support 10bit streams decoding: edit build/android/ndk/jni/uavs3d_main.mk:
-
--The executable application for arm64-v8a is generated by default. <br>To generate static or shared library for other platforms, modify correlative options in Android.mk and Application.mk.
-+ LOCAL_CFLAGS += -DCOMPILE_10BIT=1
-
- # Run tests
- ## window/linux/mac/android
-diff --git a/build/android/ndk/jni/Android.mk b/build/android/ndk/jni/Android.mk
-index fe79947..88d57f4 100644
---- a/build/android/ndk/jni/Android.mk
-+++ b/build/android/ndk/jni/Android.mk
-@@ -5,53 +5,26 @@ SRC_PATH := ../../../../source
- INCLUDE_PATH := ../../../../source/decore
-
- ### Name of the local module
--include $(CLEAR_VARS)
--LOCAL_MODULE := uavs3d
-+include $(LOCAL_PATH)/uavs3d_clear_vars.mk
-+LOCAL_MODULE := uavs3d-static
-+LOCAL_MODULE_FILENAME := libuavs3d
-+include $(LOCAL_PATH)/uavs3d_main.mk
-+include $(BUILD_STATIC_LIBRARY)
-+
-+include $(LOCAL_PATH)/uavs3d_clear_vars.mk
-+LOCAL_MODULE := uavs3d-shared
-+LOCAL_MODULE_FILENAME := libuavs3d
- LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -lm -llog
--
--### for posix pthread
--#LOCAL_SHARED_LIBRARIES := libcutil
--
--### include search path when compiling all sources (C,C++,Assembly)
--LOCAL_C_INCLUDES +=$(INCLUDE_PATH) \
-- $(LOCAL_PATH)/../app
--
--### c source code
--uavs3d_srcs_c += $(SRC_PATH)/decore/alf.c
--uavs3d_srcs_c += $(SRC_PATH)/decore/deblock.c
--uavs3d_srcs_c += $(SRC_PATH)/decore/inter_pred.c
--uavs3d_srcs_c += $(SRC_PATH)/decore/intra_pred.c
--uavs3d_srcs_c += $(SRC_PATH)/decore/inv_trans.c
--uavs3d_srcs_c += $(SRC_PATH)/decore/pic_manager.c
--uavs3d_srcs_c += $(SRC_PATH)/decore/recon.c
--uavs3d_srcs_c += $(SRC_PATH)/decore/sao.c
--uavs3d_srcs_c += $(SRC_PATH)/decore/com_table.c
--uavs3d_srcs_c += $(SRC_PATH)/decore/threadpool.c
--uavs3d_srcs_c += $(SRC_PATH)/decore/win32thread.c
--uavs3d_srcs_c += $(SRC_PATH)/decore/com_util.c
--uavs3d_srcs_c += $(SRC_PATH)/decoder/uavs3d.c
--uavs3d_srcs_c += $(SRC_PATH)/decoder/bitstream.c
--uavs3d_srcs_c += $(SRC_PATH)/decoder/parser.c
--uavs3d_srcs_c += $(SRC_PATH)/decoder/dec_util.c
--
--LOCAL_CFLAGS += -O3 -fPIC -std=gnu99
- LOCAL_LDFLAGS += -fPIC
-+include $(LOCAL_PATH)/uavs3d_main.mk
-+include $(BUILD_SHARED_LIBRARY)
-+
-
--#if build_executable
-+include $(LOCAL_PATH)/uavs3d_clear_vars.mk
-+LOCAL_MODULE := uavs3d
-+LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -lm -llog
- LOCAL_CFLAGS += -pie -fPIE
- LOCAL_LDFLAGS += -pie -fPIE
--uavs3d_srcs_test+= $(SRC_PATH)/../test/utest.c
--#endif
--
--#if build armv7a
--#LOCAL_CFLAGS += -mfpu=neon
--#include $(LOCAL_PATH)/uavs3d_armv7a.mk
--#elif build arm64
--include $(LOCAL_PATH)/uavs3d_arm64.mk
--#endif
--
--LOCAL_SRC_FILES := $(uavs3d_srcs_c) $(uavs3d_srcs_arm) $(uavs3d_srcs_test)
--
--#include $(BUILD_SHARED_LIBRARY)
--#include $(BUILD_STATIC_LIBRARY)
-+uavs3d_srcs_test+= $(SRC_PATH)/../test/utest.c
-+include $(LOCAL_PATH)/uavs3d_main.mk
- include $(BUILD_EXECUTABLE)
-diff --git a/build/android/ndk/jni/Application.mk b/build/android/ndk/jni/Application.mk
-index 292946e..29e7e02 100644
---- a/build/android/ndk/jni/Application.mk
-+++ b/build/android/ndk/jni/Application.mk
-@@ -1,8 +1,9 @@
- # APP_ABI := armeabi-v7a
-- APP_ABI := arm64-v8a
-+# APP_ABI := arm64-v8a
- # APP_ABI := armeabi
- # APP_ABI := x86
- # APP_ABI := x86_64
-+APP_ABI := all
- APP_OPTIM := release
- # TARGET_BUILD_TYPE=release
-
-diff --git a/build/android/ndk/jni/uavs3d_avx2.mk b/build/android/ndk/jni/uavs3d_avx2.mk
-new file mode 100644
-index 0000000..d80401a
---- /dev/null
-+++ b/build/android/ndk/jni/uavs3d_avx2.mk
-@@ -0,0 +1,11 @@
-+
-+AVX_SRC_PATH:=../../../../source/decore/avx2
-+
-+uavs3d_srcs_avx += $(AVX_SRC_PATH)/alf_avx2.c
-+uavs3d_srcs_avx += $(AVX_SRC_PATH)/avx2.c
-+uavs3d_srcs_avx += $(AVX_SRC_PATH)/inter_pred_avx2.c
-+uavs3d_srcs_avx += $(AVX_SRC_PATH)/intra_pred_avx2.c
-+uavs3d_srcs_avx += $(AVX_SRC_PATH)/itrans_avx2.c
-+uavs3d_srcs_avx += $(AVX_SRC_PATH)/pixel_avx2.c
-+uavs3d_srcs_avx += $(AVX_SRC_PATH)/sao_avx2.c
-+
-diff --git a/build/android/ndk/jni/uavs3d_clear_vars.mk b/build/android/ndk/jni/uavs3d_clear_vars.mk
-new file mode 100644
-index 0000000..0c47cfc
---- /dev/null
-+++ b/build/android/ndk/jni/uavs3d_clear_vars.mk
-@@ -0,0 +1,6 @@
-+include $(CLEAR_VARS)
-+uavs3d_srcs_c :=
-+uavs3d_srcs_test :=
-+uavs3d_srcs_arm :=
-+uavs3d_srcs_sse :=
-+uavs3d_srcs_avx :=
-diff --git a/build/android/ndk/jni/uavs3d_main.mk b/build/android/ndk/jni/uavs3d_main.mk
-new file mode 100644
-index 0000000..6506e89
---- /dev/null
-+++ b/build/android/ndk/jni/uavs3d_main.mk
-@@ -0,0 +1,61 @@
-+
-+### for posix pthread
-+#LOCAL_SHARED_LIBRARIES := libcutil
-+
-+### include search path when compiling all sources (C,C++,Assembly)
-+LOCAL_C_INCLUDES +=$(INCLUDE_PATH) \
-+ $(LOCAL_PATH)/../app
-+
-+### c source code
-+uavs3d_srcs_c += $(SRC_PATH)/decore/alf.c
-+uavs3d_srcs_c += $(SRC_PATH)/decore/deblock.c
-+uavs3d_srcs_c += $(SRC_PATH)/decore/inter_pred.c
-+uavs3d_srcs_c += $(SRC_PATH)/decore/intra_pred.c
-+uavs3d_srcs_c += $(SRC_PATH)/decore/inv_trans.c
-+uavs3d_srcs_c += $(SRC_PATH)/decore/pic_manager.c
-+uavs3d_srcs_c += $(SRC_PATH)/decore/recon.c
-+uavs3d_srcs_c += $(SRC_PATH)/decore/sao.c
-+uavs3d_srcs_c += $(SRC_PATH)/decore/com_table.c
-+uavs3d_srcs_c += $(SRC_PATH)/decore/threadpool.c
-+uavs3d_srcs_c += $(SRC_PATH)/decore/win32thread.c
-+uavs3d_srcs_c += $(SRC_PATH)/decore/com_util.c
-+uavs3d_srcs_c += $(SRC_PATH)/decoder/uavs3d.c
-+uavs3d_srcs_c += $(SRC_PATH)/decoder/bitstream.c
-+uavs3d_srcs_c += $(SRC_PATH)/decoder/parser.c
-+uavs3d_srcs_c += $(SRC_PATH)/decoder/dec_util.c
-+
-+
-+LOCAL_CFLAGS += -O3 -fPIC -std=gnu99 -I../../../source/decore
-+
-+### To support 10bit streams decoding: edit it to -DCOMPILE_10BIT=1
-+LOCAL_CFLAGS += -DCOMPILE_10BIT=0
-+
-+ifeq ($(TARGET_ARCH),arm)
-+ ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
-+ # build armv7a
-+ LOCAL_CFLAGS += -mfpu=neon -D_armv7a
-+ include $(LOCAL_PATH)/uavs3d_armv7a.mk
-+ endif
-+endif
-+
-+ifeq ($(TARGET_ARCH),arm64)
-+ # build arm64
-+ LOCAL_CFLAGS += -D_arm64
-+ include $(LOCAL_PATH)/uavs3d_arm64.mk
-+endif
-+
-+ifeq ($(TARGET_ARCH),x86)
-+ # build x86
-+ LOCAL_CFLAGS += -msse4.2 -mavx2
-+ include $(LOCAL_PATH)/uavs3d_sse2.mk
-+ include $(LOCAL_PATH)/uavs3d_avx2.mk
-+endif
-+
-+ifeq ($(TARGET_ARCH),x86_64)
-+ # build x86_64
-+ LOCAL_CFLAGS += -msse4.2 -mavx2
-+ include $(LOCAL_PATH)/uavs3d_sse2.mk
-+ include $(LOCAL_PATH)/uavs3d_avx2.mk
-+endif
-+
-+LOCAL_SRC_FILES := $(uavs3d_srcs_c) $(uavs3d_srcs_arm) $(uavs3d_srcs_sse) $(uavs3d_srcs_avx) $(uavs3d_srcs_test)
-diff --git a/build/android/ndk/jni/uavs3d_sse2.mk b/build/android/ndk/jni/uavs3d_sse2.mk
-new file mode 100644
-index 0000000..1f8847a
---- /dev/null
-+++ b/build/android/ndk/jni/uavs3d_sse2.mk
-@@ -0,0 +1,11 @@
-+
-+SSE_SRC_PATH:=../../../../source/decore/sse
-+
-+uavs3d_srcs_sse += $(SSE_SRC_PATH)/alf_sse.c
-+uavs3d_srcs_sse += $(SSE_SRC_PATH)/deblock_sse.c
-+uavs3d_srcs_sse += $(SSE_SRC_PATH)/inter_pred_sse.c
-+uavs3d_srcs_sse += $(SSE_SRC_PATH)/intra_pred_sse.c
-+uavs3d_srcs_sse += $(SSE_SRC_PATH)/itrans_sse.c
-+uavs3d_srcs_sse += $(SSE_SRC_PATH)/pixel_sse.c
-+uavs3d_srcs_sse += $(SSE_SRC_PATH)/sao_sse.c
-+uavs3d_srcs_sse += $(SSE_SRC_PATH)/sse.c
-diff --git a/build/x86_windows/common.vcxproj b/build/vs2017/common.vcxproj
-similarity index 61%
-rename from build/x86_windows/common.vcxproj
-rename to build/vs2017/common.vcxproj
-index c8cd533..95de5c4 100644
---- a/build/x86_windows/common.vcxproj
-+++ b/build/vs2017/common.vcxproj
-@@ -1,157 +1,249 @@
--<?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-- <ItemGroup Label="ProjectConfigurations">
-- <ProjectConfiguration Include="Debug|x64">
-- <Configuration>Debug</Configuration>
-- <Platform>x64</Platform>
-- </ProjectConfiguration>
-- <ProjectConfiguration Include="Release|x64">
-- <Configuration>Release</Configuration>
-- <Platform>x64</Platform>
-- </ProjectConfiguration>
-- </ItemGroup>
-- <ItemGroup>
-- <ClCompile Include="..\..\source\decore\alf.c" />
-- <ClCompile Include="..\..\source\decore\avx2\alf_avx2.c" />
-- <ClCompile Include="..\..\source\decore\avx2\avx2.c" />
-- <ClCompile Include="..\..\source\decore\avx2\inter_pred_avx2.c" />
-- <ClCompile Include="..\..\source\decore\avx2\intra_pred_avx2.c" />
-- <ClCompile Include="..\..\source\decore\avx2\itrans_avx2.c" />
-- <ClCompile Include="..\..\source\decore\avx2\pixel_avx2.c" />
-- <ClCompile Include="..\..\source\decore\avx2\sao_avx2.c" />
-- <ClCompile Include="..\..\source\decore\com_table.c" />
-- <ClCompile Include="..\..\source\decore\com_util.c" />
-- <ClCompile Include="..\..\source\decore\deblock.c" />
-- <ClCompile Include="..\..\source\decore\inter_pred.c" />
-- <ClCompile Include="..\..\source\decore\intra_pred.c" />
-- <ClCompile Include="..\..\source\decore\inv_trans.c" />
-- <ClCompile Include="..\..\source\decore\pic_manager.c" />
-- <ClCompile Include="..\..\source\decore\recon.c" />
-- <ClCompile Include="..\..\source\decore\sao.c" />
-- <ClCompile Include="..\..\source\decore\sse\alf_sse.c" />
-- <ClCompile Include="..\..\source\decore\sse\deblock_sse.c" />
-- <ClCompile Include="..\..\source\decore\sse\inter_pred_sse.c" />
-- <ClCompile Include="..\..\source\decore\sse\intra_pred_sse.c" />
-- <ClCompile Include="..\..\source\decore\sse\itrans_sse.c" />
-- <ClCompile Include="..\..\source\decore\sse\pixel_sse.c" />
-- <ClCompile Include="..\..\source\decore\sse\sao_sse.c" />
-- <ClCompile Include="..\..\source\decore\sse\sse.c" />
-- <ClCompile Include="..\..\source\decore\threadpool.c" />
-- <ClCompile Include="..\..\source\decore\win32thread.c" />
-- </ItemGroup>
-- <ItemGroup>
-- <ClInclude Include="..\..\source\decore\avx2\avx2.h" />
-- <ClInclude Include="..\..\source\decore\com_def.h" />
-- <ClInclude Include="..\..\source\decore\com_sys.h" />
-- <ClInclude Include="..\..\source\decore\com_table.h" />
-- <ClInclude Include="..\..\source\decore\com_type.h" />
-- <ClInclude Include="..\..\source\decore\com_util.h" />
-- <ClInclude Include="..\..\source\decore\modules.h" />
-- <ClInclude Include="..\..\source\decore\sse\sse.h" />
-- <ClInclude Include="..\..\source\decore\threadpool.h" />
-- <ClInclude Include="..\..\source\decore\win32thread.h" />
-- </ItemGroup>
-- <PropertyGroup Label="Globals">
-- <ProjectGuid>{3F9C7116-C287-40D7-865C-D8C89CF4FF31}</ProjectGuid>
-- <Keyword>Win32Proj</Keyword>
-- <RootNamespace>com_lib_vs17</RootNamespace>
-- <ProjectName>common</ProjectName>
-- <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
-- </PropertyGroup>
-- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-- <ConfigurationType>StaticLibrary</ConfigurationType>
-- <UseDebugLibraries>true</UseDebugLibraries>
-- <CharacterSet>MultiByte</CharacterSet>
-- <PlatformToolset>v141</PlatformToolset>
-- </PropertyGroup>
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-- <ConfigurationType>StaticLibrary</ConfigurationType>
-- <UseDebugLibraries>false</UseDebugLibraries>
-- <WholeProgramOptimization>true</WholeProgramOptimization>
-- <CharacterSet>MultiByte</CharacterSet>
-- <PlatformToolset>v141</PlatformToolset>
-- </PropertyGroup>
-- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-- <ImportGroup Label="ExtensionSettings">
-- </ImportGroup>
-- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-- </ImportGroup>
-- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-- </ImportGroup>
-- <PropertyGroup Label="UserMacros" />
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-- <OutDir>..\..\lib\</OutDir>
-- </PropertyGroup>
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-- <TargetName>$(ProjectName)</TargetName>
-- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-- </PropertyGroup>
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-- <OutDir>..\..\lib\</OutDir>
-- <TargetName>$(ProjectName)</TargetName>
-- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-- </PropertyGroup>
-- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-- <ClCompile>
-- <PrecompiledHeader>NotUsing</PrecompiledHeader>
-- <WarningLevel>Level3</WarningLevel>
-- <Optimization>Disabled</Optimization>
-- <PreprocessorDefinitions>WIN64;X86F;_DEBUG;_LIB;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS</PreprocessorDefinitions>
-- <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
-- <PrecompiledHeaderFile>
-- </PrecompiledHeaderFile>
-- <PrecompiledHeaderOutputFile>
-- </PrecompiledHeaderOutputFile>
-- <CompileAs>CompileAsC</CompileAs>
-- <ErrorReporting>Prompt</ErrorReporting>
-- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-- <TreatWarningAsError>true</TreatWarningAsError>
-- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-- </ClCompile>
-- <Link>
-- <SubSystem>Windows</SubSystem>
-- <GenerateDebugInformation>true</GenerateDebugInformation>
-- </Link>
-- <Lib>
-- <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
-- </Lib>
-- </ItemDefinitionGroup>
-- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-- <ClCompile>
-- <WarningLevel>Level3</WarningLevel>
-- <PrecompiledHeader>NotUsing</PrecompiledHeader>
-- <Optimization>MaxSpeed</Optimization>
-- <FunctionLevelLinking>true</FunctionLevelLinking>
-- <IntrinsicFunctions>true</IntrinsicFunctions>
-- <PreprocessorDefinitions>WIN64;X86F;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
-- <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
-- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-- <PrecompiledHeaderFile>
-- </PrecompiledHeaderFile>
-- <PrecompiledHeaderOutputFile>
-- </PrecompiledHeaderOutputFile>
-- <CompileAs>CompileAsC</CompileAs>
-- <ErrorReporting>Prompt</ErrorReporting>
-- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-- <TreatWarningAsError>true</TreatWarningAsError>
-- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-- </ClCompile>
-- <Link>
-- <SubSystem>Windows</SubSystem>
-- <GenerateDebugInformation>true</GenerateDebugInformation>
-- <EnableCOMDATFolding>true</EnableCOMDATFolding>
-- <OptimizeReferences>true</OptimizeReferences>
-- </Link>
-- <Lib>
-- <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
-- </Lib>
-- </ItemDefinitionGroup>
-- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-- <ImportGroup Label="ExtensionTargets">
-- </ImportGroup>
-+<?xml version="1.0" encoding="utf-8"?>
-+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+ <ItemGroup Label="ProjectConfigurations">
-+ <ProjectConfiguration Include="Debug|Win32">
-+ <Configuration>Debug</Configuration>
-+ <Platform>Win32</Platform>
-+ </ProjectConfiguration>
-+ <ProjectConfiguration Include="Debug|x64">
-+ <Configuration>Debug</Configuration>
-+ <Platform>x64</Platform>
-+ </ProjectConfiguration>
-+ <ProjectConfiguration Include="Release|Win32">
-+ <Configuration>Release</Configuration>
-+ <Platform>Win32</Platform>
-+ </ProjectConfiguration>
-+ <ProjectConfiguration Include="Release|x64">
-+ <Configuration>Release</Configuration>
-+ <Platform>x64</Platform>
-+ </ProjectConfiguration>
-+ </ItemGroup>
-+ <ItemGroup>
-+ <ClCompile Include="..\..\source\decore\alf.c" />
-+ <ClCompile Include="..\..\source\decore\avx2\alf_avx2.c" />
-+ <ClCompile Include="..\..\source\decore\avx2\avx2.c" />
-+ <ClCompile Include="..\..\source\decore\avx2\inter_pred_avx2.c" />
-+ <ClCompile Include="..\..\source\decore\avx2\intra_pred_avx2.c" />
-+ <ClCompile Include="..\..\source\decore\avx2\itrans_avx2.c" />
-+ <ClCompile Include="..\..\source\decore\avx2\pixel_avx2.c" />
-+ <ClCompile Include="..\..\source\decore\avx2\sao_avx2.c" />
-+ <ClCompile Include="..\..\source\decore\com_table.c" />
-+ <ClCompile Include="..\..\source\decore\com_util.c" />
-+ <ClCompile Include="..\..\source\decore\deblock.c" />
-+ <ClCompile Include="..\..\source\decore\inter_pred.c" />
-+ <ClCompile Include="..\..\source\decore\intra_pred.c" />
-+ <ClCompile Include="..\..\source\decore\inv_trans.c" />
-+ <ClCompile Include="..\..\source\decore\pic_manager.c" />
-+ <ClCompile Include="..\..\source\decore\recon.c" />
-+ <ClCompile Include="..\..\source\decore\sao.c" />
-+ <ClCompile Include="..\..\source\decore\sse\alf_sse.c" />
-+ <ClCompile Include="..\..\source\decore\sse\deblock_sse.c" />
-+ <ClCompile Include="..\..\source\decore\sse\inter_pred_sse.c" />
-+ <ClCompile Include="..\..\source\decore\sse\intra_pred_sse.c" />
-+ <ClCompile Include="..\..\source\decore\sse\itrans_sse.c" />
-+ <ClCompile Include="..\..\source\decore\sse\pixel_sse.c" />
-+ <ClCompile Include="..\..\source\decore\sse\sao_sse.c" />
-+ <ClCompile Include="..\..\source\decore\sse\sse.c" />
-+ <ClCompile Include="..\..\source\decore\threadpool.c" />
-+ <ClCompile Include="..\..\source\decore\win32thread.c" />
-+ </ItemGroup>
-+ <ItemGroup>
-+ <ClInclude Include="..\..\source\decore\avx2\avx2.h" />
-+ <ClInclude Include="..\..\source\decore\com_def.h" />
-+ <ClInclude Include="..\..\source\decore\com_sys.h" />
-+ <ClInclude Include="..\..\source\decore\com_table.h" />
-+ <ClInclude Include="..\..\source\decore\com_type.h" />
-+ <ClInclude Include="..\..\source\decore\com_util.h" />
-+ <ClInclude Include="..\..\source\decore\modules.h" />
-+ <ClInclude Include="..\..\source\decore\sse\sse.h" />
-+ <ClInclude Include="..\..\source\decore\threadpool.h" />
-+ <ClInclude Include="..\..\source\decore\win32thread.h" />
-+ </ItemGroup>
-+ <PropertyGroup Label="Globals">
-+ <ProjectGuid>{3F9C7116-C287-40D7-865C-D8C89CF4FF31}</ProjectGuid>
-+ <Keyword>Win32Proj</Keyword>
-+ <RootNamespace>com_lib_vs17</RootNamespace>
-+ <ProjectName>common</ProjectName>
-+ <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
-+ </PropertyGroup>
-+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
-+ <UseDebugLibraries>true</UseDebugLibraries>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ <PlatformToolset>v141</PlatformToolset>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
-+ <UseDebugLibraries>true</UseDebugLibraries>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ <PlatformToolset>v141</PlatformToolset>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
-+ <UseDebugLibraries>false</UseDebugLibraries>
-+ <WholeProgramOptimization>true</WholeProgramOptimization>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ <PlatformToolset>v141</PlatformToolset>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-+ <ConfigurationType>StaticLibrary</ConfigurationType>
-+ <UseDebugLibraries>false</UseDebugLibraries>
-+ <WholeProgramOptimization>true</WholeProgramOptimization>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ <PlatformToolset>v141</PlatformToolset>
-+ </PropertyGroup>
-+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-+ <ImportGroup Label="ExtensionSettings">
-+ </ImportGroup>
-+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <PropertyGroup Label="UserMacros" />
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-+ <OutDir>..\..\lib\</OutDir>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-+ <TargetName>$(ProjectName)</TargetName>
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-+ <TargetName>$(ProjectName)</TargetName>
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-+ <OutDir>..\..\lib\</OutDir>
-+ <TargetName>$(ProjectName)</TargetName>
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-+ <TargetName>$(ProjectName)</TargetName>
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ </PropertyGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-+ <ClCompile>
-+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
-+ <WarningLevel>Level3</WarningLevel>
-+ <Optimization>Disabled</Optimization>
-+ <PreprocessorDefinitions>WIN64;X86F;_DEBUG;_LIB;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS</PreprocessorDefinitions>
-+ <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
-+ <PrecompiledHeaderFile>
-+ </PrecompiledHeaderFile>
-+ <PrecompiledHeaderOutputFile>
-+ </PrecompiledHeaderOutputFile>
-+ <CompileAs>CompileAsC</CompileAs>
-+ <ErrorReporting>Prompt</ErrorReporting>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <SubSystem>Windows</SubSystem>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ </Link>
-+ <Lib>
-+ <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
-+ </Lib>
-+ </ItemDefinitionGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-+ <ClCompile>
-+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
-+ <WarningLevel>Level3</WarningLevel>
-+ <Optimization>Disabled</Optimization>
-+ <PreprocessorDefinitions>WIN64;X86F;_DEBUG;_LIB;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS</PreprocessorDefinitions>
-+ <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
-+ <PrecompiledHeaderFile>
-+ </PrecompiledHeaderFile>
-+ <PrecompiledHeaderOutputFile>
-+ </PrecompiledHeaderOutputFile>
-+ <CompileAs>CompileAsC</CompileAs>
-+ <ErrorReporting>Prompt</ErrorReporting>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <SubSystem>Windows</SubSystem>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ </Link>
-+ <Lib>
-+ <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
-+ </Lib>
-+ </ItemDefinitionGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-+ <ClCompile>
-+ <WarningLevel>Level3</WarningLevel>
-+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
-+ <Optimization>MaxSpeed</Optimization>
-+ <FunctionLevelLinking>true</FunctionLevelLinking>
-+ <IntrinsicFunctions>true</IntrinsicFunctions>
-+ <PreprocessorDefinitions>WIN64;X86F;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
-+ <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
-+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-+ <PrecompiledHeaderFile>
-+ </PrecompiledHeaderFile>
-+ <PrecompiledHeaderOutputFile>
-+ </PrecompiledHeaderOutputFile>
-+ <CompileAs>CompileAsC</CompileAs>
-+ <ErrorReporting>Prompt</ErrorReporting>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <SubSystem>Windows</SubSystem>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+ <OptimizeReferences>true</OptimizeReferences>
-+ </Link>
-+ <Lib>
-+ <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
-+ </Lib>
-+ </ItemDefinitionGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-+ <ClCompile>
-+ <WarningLevel>Level3</WarningLevel>
-+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
-+ <Optimization>MaxSpeed</Optimization>
-+ <FunctionLevelLinking>true</FunctionLevelLinking>
-+ <IntrinsicFunctions>true</IntrinsicFunctions>
-+ <PreprocessorDefinitions>WIN64;X86F;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
-+ <AdditionalIncludeDirectories>..\..\source\decore</AdditionalIncludeDirectories>
-+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-+ <PrecompiledHeaderFile>
-+ </PrecompiledHeaderFile>
-+ <PrecompiledHeaderOutputFile>
-+ </PrecompiledHeaderOutputFile>
-+ <CompileAs>CompileAsC</CompileAs>
-+ <ErrorReporting>Prompt</ErrorReporting>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <SubSystem>Windows</SubSystem>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+ <OptimizeReferences>true</OptimizeReferences>
-+ </Link>
-+ <Lib>
-+ <OutputFile>..\..\lib\$(ProjectName).lib</OutputFile>
-+ </Lib>
-+ </ItemDefinitionGroup>
-+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-+ <ImportGroup Label="ExtensionTargets">
-+ </ImportGroup>
- </Project>
-\ No newline at end of file
-diff --git a/build/x86_windows/common.vcxproj.filters b/build/vs2017/common.vcxproj.filters
-similarity index 100%
-rename from build/x86_windows/common.vcxproj.filters
-rename to build/vs2017/common.vcxproj.filters
-diff --git a/build/x86_windows/libuavs3d.vcxproj b/build/vs2017/libuavs3d.vcxproj
-similarity index 55%
-rename from build/x86_windows/libuavs3d.vcxproj
-rename to build/vs2017/libuavs3d.vcxproj
-index d92a51f..bb42a6c 100644
---- a/build/x86_windows/libuavs3d.vcxproj
-+++ b/build/vs2017/libuavs3d.vcxproj
-@@ -1,115 +1,193 @@
--<?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-- <ItemGroup Label="ProjectConfigurations">
-- <ProjectConfiguration Include="Debug|x64">
-- <Configuration>Debug</Configuration>
-- <Platform>x64</Platform>
-- </ProjectConfiguration>
-- <ProjectConfiguration Include="Release|x64">
-- <Configuration>Release</Configuration>
-- <Platform>x64</Platform>
-- </ProjectConfiguration>
-- </ItemGroup>
-- <ItemGroup>
-- <ClCompile Include="..\..\source\decoder\bitstream.c" />
-- <ClCompile Include="..\..\source\decoder\dec_util.c" />
-- <ClCompile Include="..\..\source\decoder\parser.c" />
-- <ClCompile Include="..\..\source\decoder\uavs3d.c" />
-- </ItemGroup>
-- <ItemGroup>
-- <ClInclude Include="..\..\contributor.h" />
-- <ClInclude Include="..\..\source\decoder\bitstream.h" />
-- <ClInclude Include="..\..\source\decoder\dec_type.h" />
-- <ClInclude Include="..\..\source\decoder\dec_util.h" />
-- <ClInclude Include="..\..\source\decoder\parser.h" />
-- <ClInclude Include="..\..\source\decoder\uavs3d.h" />
-- </ItemGroup>
-- <PropertyGroup Label="Globals">
-- <ProjectGuid>{40B445E8-306A-4C77-9B19-FC76C2379F79}</ProjectGuid>
-- <RootNamespace>dec_lib</RootNamespace>
-- <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
-- <ProjectName>libuavs3d</ProjectName>
-- </PropertyGroup>
-- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-- <ConfigurationType>DynamicLibrary</ConfigurationType>
-- <UseDebugLibraries>true</UseDebugLibraries>
-- <PlatformToolset>v141</PlatformToolset>
-- <CharacterSet>MultiByte</CharacterSet>
-- </PropertyGroup>
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-- <ConfigurationType>DynamicLibrary</ConfigurationType>
-- <UseDebugLibraries>false</UseDebugLibraries>
-- <PlatformToolset>v141</PlatformToolset>
-- <WholeProgramOptimization>true</WholeProgramOptimization>
-- <CharacterSet>MultiByte</CharacterSet>
-- </PropertyGroup>
-- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-- <ImportGroup Label="ExtensionSettings">
-- </ImportGroup>
-- <ImportGroup Label="Shared">
-- </ImportGroup>
-- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-- </ImportGroup>
-- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-- </ImportGroup>
-- <PropertyGroup Label="UserMacros" />
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-- <OutDir>..\..\bin</OutDir>
-- <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
-- </PropertyGroup>
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-- <OutDir>..\..\bin</OutDir>
-- <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
-- </PropertyGroup>
-- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-- <ClCompile>
-- <WarningLevel>Level3</WarningLevel>
-- <Optimization>Disabled</Optimization>
-- <SDLCheck>true</SDLCheck>
-- <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
-- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-- <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;_DEBUG</PreprocessorDefinitions>
-- <TreatWarningAsError>true</TreatWarningAsError>
-- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-- </ClCompile>
-- <Link>
-- <GenerateDebugInformation>true</GenerateDebugInformation>
-- <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
-- <ShowProgress>NotSet</ShowProgress>
-- <Version>1.0</Version>
-- </Link>
-- </ItemDefinitionGroup>
-- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-- <ClCompile>
-- <WarningLevel>Level3</WarningLevel>
-- <Optimization>MaxSpeed</Optimization>
-- <FunctionLevelLinking>true</FunctionLevelLinking>
-- <IntrinsicFunctions>true</IntrinsicFunctions>
-- <SDLCheck>true</SDLCheck>
-- <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
-- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-- <CompileAs>CompileAsC</CompileAs>
-- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-- <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;</PreprocessorDefinitions>
-- <TreatWarningAsError>true</TreatWarningAsError>
-- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-- </ClCompile>
-- <Link>
-- <GenerateDebugInformation>true</GenerateDebugInformation>
-- <EnableCOMDATFolding>true</EnableCOMDATFolding>
-- <OptimizeReferences>true</OptimizeReferences>
-- <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
-- <ShowProgress>NotSet</ShowProgress>
-- <Version>1.0</Version>
-- </Link>
-- </ItemDefinitionGroup>
-- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-- <ImportGroup Label="ExtensionTargets">
-- </ImportGroup>
-+<?xml version="1.0" encoding="utf-8"?>
-+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+ <ItemGroup Label="ProjectConfigurations">
-+ <ProjectConfiguration Include="Debug|Win32">
-+ <Configuration>Debug</Configuration>
-+ <Platform>Win32</Platform>
-+ </ProjectConfiguration>
-+ <ProjectConfiguration Include="Debug|x64">
-+ <Configuration>Debug</Configuration>
-+ <Platform>x64</Platform>
-+ </ProjectConfiguration>
-+ <ProjectConfiguration Include="Release|Win32">
-+ <Configuration>Release</Configuration>
-+ <Platform>Win32</Platform>
-+ </ProjectConfiguration>
-+ <ProjectConfiguration Include="Release|x64">
-+ <Configuration>Release</Configuration>
-+ <Platform>x64</Platform>
-+ </ProjectConfiguration>
-+ </ItemGroup>
-+ <ItemGroup>
-+ <ClCompile Include="..\..\source\decoder\bitstream.c" />
-+ <ClCompile Include="..\..\source\decoder\dec_util.c" />
-+ <ClCompile Include="..\..\source\decoder\parser.c" />
-+ <ClCompile Include="..\..\source\decoder\uavs3d.c" />
-+ </ItemGroup>
-+ <ItemGroup>
-+ <ClInclude Include="..\..\contributor.h" />
-+ <ClInclude Include="..\..\source\decoder\bitstream.h" />
-+ <ClInclude Include="..\..\source\decoder\dec_type.h" />
-+ <ClInclude Include="..\..\source\decoder\dec_util.h" />
-+ <ClInclude Include="..\..\source\decoder\parser.h" />
-+ <ClInclude Include="..\..\source\decoder\uavs3d.h" />
-+ </ItemGroup>
-+ <PropertyGroup Label="Globals">
-+ <ProjectGuid>{40B445E8-306A-4C77-9B19-FC76C2379F79}</ProjectGuid>
-+ <RootNamespace>dec_lib</RootNamespace>
-+ <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
-+ <ProjectName>libuavs3d</ProjectName>
-+ </PropertyGroup>
-+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-+ <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <UseDebugLibraries>true</UseDebugLibraries>
-+ <PlatformToolset>v141</PlatformToolset>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-+ <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <UseDebugLibraries>true</UseDebugLibraries>
-+ <PlatformToolset>v141</PlatformToolset>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-+ <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <UseDebugLibraries>false</UseDebugLibraries>
-+ <PlatformToolset>v141</PlatformToolset>
-+ <WholeProgramOptimization>true</WholeProgramOptimization>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-+ <ConfigurationType>DynamicLibrary</ConfigurationType>
-+ <UseDebugLibraries>false</UseDebugLibraries>
-+ <PlatformToolset>v141</PlatformToolset>
-+ <WholeProgramOptimization>true</WholeProgramOptimization>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ </PropertyGroup>
-+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-+ <ImportGroup Label="ExtensionSettings">
-+ </ImportGroup>
-+ <ImportGroup Label="Shared">
-+ </ImportGroup>
-+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <PropertyGroup Label="UserMacros" />
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ <OutDir>..\..\bin</OutDir>
-+ <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-+ <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ <OutDir>..\..\bin</OutDir>
-+ <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-+ <LibraryPath>..\..\lib;$(LibraryPath)</LibraryPath>
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ </PropertyGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-+ <ClCompile>
-+ <WarningLevel>Level3</WarningLevel>
-+ <Optimization>Disabled</Optimization>
-+ <SDLCheck>true</SDLCheck>
-+ <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
-+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;_DEBUG</PreprocessorDefinitions>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+ <ShowProgress>NotSet</ShowProgress>
-+ <Version>1.0</Version>
-+ </Link>
-+ </ItemDefinitionGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-+ <ClCompile>
-+ <WarningLevel>Level3</WarningLevel>
-+ <Optimization>Disabled</Optimization>
-+ <SDLCheck>true</SDLCheck>
-+ <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
-+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;_DEBUG</PreprocessorDefinitions>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+ <ShowProgress>NotSet</ShowProgress>
-+ <Version>1.0</Version>
-+ </Link>
-+ </ItemDefinitionGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-+ <ClCompile>
-+ <WarningLevel>Level3</WarningLevel>
-+ <Optimization>MaxSpeed</Optimization>
-+ <FunctionLevelLinking>true</FunctionLevelLinking>
-+ <IntrinsicFunctions>true</IntrinsicFunctions>
-+ <SDLCheck>true</SDLCheck>
-+ <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
-+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-+ <CompileAs>CompileAsC</CompileAs>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;</PreprocessorDefinitions>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+ <OptimizeReferences>true</OptimizeReferences>
-+ <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+ <ShowProgress>NotSet</ShowProgress>
-+ <Version>1.0</Version>
-+ </Link>
-+ </ItemDefinitionGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-+ <ClCompile>
-+ <WarningLevel>Level3</WarningLevel>
-+ <Optimization>MaxSpeed</Optimization>
-+ <FunctionLevelLinking>true</FunctionLevelLinking>
-+ <IntrinsicFunctions>true</IntrinsicFunctions>
-+ <SDLCheck>true</SDLCheck>
-+ <AdditionalIncludeDirectories>..\..\source\decore;..\..\source\decoder</AdditionalIncludeDirectories>
-+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-+ <CompileAs>CompileAsC</CompileAs>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <PreprocessorDefinitions>WIN64;;%(PreprocessorDefinitions);UAVS3D_EXPORTS;</PreprocessorDefinitions>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+ <OptimizeReferences>true</OptimizeReferences>
-+ <AdditionalDependencies>common.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+ <ShowProgress>NotSet</ShowProgress>
-+ <Version>1.0</Version>
-+ </Link>
-+ </ItemDefinitionGroup>
-+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-+ <ImportGroup Label="ExtensionTargets">
-+ </ImportGroup>
- </Project>
-\ No newline at end of file
-diff --git a/build/x86_windows/uavs3d.sln b/build/vs2017/uavs3d.sln
-similarity index 68%
-rename from build/x86_windows/uavs3d.sln
-rename to build/vs2017/uavs3d.sln
-index e6d34c4..d098d33 100644
---- a/build/x86_windows/uavs3d.sln
-+++ b/build/vs2017/uavs3d.sln
-@@ -1,47 +1,61 @@
--
--Microsoft Visual Studio Solution File, Format Version 12.00
--# Visual Studio 15
--VisualStudioVersion = 15.0.27130.2026
--MinimumVisualStudioVersion = 10.0.40219.1
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "common.vcxproj", "{3F9C7116-C287-40D7-865C-D8C89CF4FF31}"
--EndProject
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uavs3d", "uavs3d.vcxproj", "{798F7D68-C94D-41AF-86A4-98F7726D172C}"
-- ProjectSection(ProjectDependencies) = postProject
-- {3F9C7116-C287-40D7-865C-D8C89CF4FF31} = {3F9C7116-C287-40D7-865C-D8C89CF4FF31}
-- {40B445E8-306A-4C77-9B19-FC76C2379F79} = {40B445E8-306A-4C77-9B19-FC76C2379F79}
-- EndProjectSection
--EndProject
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libuavs3d", "libuavs3d.vcxproj", "{40B445E8-306A-4C77-9B19-FC76C2379F79}"
-- ProjectSection(ProjectDependencies) = postProject
-- {3F9C7116-C287-40D7-865C-D8C89CF4FF31} = {3F9C7116-C287-40D7-865C-D8C89CF4FF31}
-- EndProjectSection
--EndProject
--Global
-- GlobalSection(SolutionConfigurationPlatforms) = preSolution
-- Debug|x64 = Debug|x64
-- Release|x64 = Release|x64
-- EndGlobalSection
-- GlobalSection(ProjectConfigurationPlatforms) = postSolution
-- {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x64.ActiveCfg = Debug|x64
-- {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x64.Build.0 = Debug|x64
-- {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x64.ActiveCfg = Release|x64
-- {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x64.Build.0 = Release|x64
-- {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x64.ActiveCfg = Debug|x64
-- {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x64.Build.0 = Debug|x64
-- {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x64.ActiveCfg = Release|x64
-- {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x64.Build.0 = Release|x64
-- {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x64.ActiveCfg = Debug|x64
-- {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x64.Build.0 = Debug|x64
-- {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x64.ActiveCfg = Release|x64
-- {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x64.Build.0 = Release|x64
-- EndGlobalSection
-- GlobalSection(SolutionProperties) = preSolution
-- HideSolutionNode = FALSE
-- EndGlobalSection
-- GlobalSection(ExtensibilityGlobals) = postSolution
-- SolutionGuid = {ED69324B-A55F-49DC-91D3-5F1D34DF875C}
-- EndGlobalSection
-- GlobalSection(Performance) = preSolution
-- HasPerformanceSessions = true
-- EndGlobalSection
--EndGlobal
-+
-+Microsoft Visual Studio Solution File, Format Version 12.00
-+# Visual Studio 15
-+VisualStudioVersion = 15.0.26228.4
-+MinimumVisualStudioVersion = 10.0.40219.1
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "common.vcxproj", "{3F9C7116-C287-40D7-865C-D8C89CF4FF31}"
-+EndProject
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uavs3d", "uavs3d.vcxproj", "{798F7D68-C94D-41AF-86A4-98F7726D172C}"
-+ ProjectSection(ProjectDependencies) = postProject
-+ {3F9C7116-C287-40D7-865C-D8C89CF4FF31} = {3F9C7116-C287-40D7-865C-D8C89CF4FF31}
-+ {40B445E8-306A-4C77-9B19-FC76C2379F79} = {40B445E8-306A-4C77-9B19-FC76C2379F79}
-+ EndProjectSection
-+EndProject
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libuavs3d", "libuavs3d.vcxproj", "{40B445E8-306A-4C77-9B19-FC76C2379F79}"
-+ ProjectSection(ProjectDependencies) = postProject
-+ {3F9C7116-C287-40D7-865C-D8C89CF4FF31} = {3F9C7116-C287-40D7-865C-D8C89CF4FF31}
-+ EndProjectSection
-+EndProject
-+Global
-+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
-+ Debug|x64 = Debug|x64
-+ Debug|x86 = Debug|x86
-+ Release|x64 = Release|x64
-+ Release|x86 = Release|x86
-+ EndGlobalSection
-+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
-+ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x64.ActiveCfg = Debug|x64
-+ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x64.Build.0 = Debug|x64
-+ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x86.ActiveCfg = Debug|Win32
-+ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Debug|x86.Build.0 = Debug|Win32
-+ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x64.ActiveCfg = Release|x64
-+ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x64.Build.0 = Release|x64
-+ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x86.ActiveCfg = Release|Win32
-+ {3F9C7116-C287-40D7-865C-D8C89CF4FF31}.Release|x86.Build.0 = Release|Win32
-+ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x64.ActiveCfg = Debug|x64
-+ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x64.Build.0 = Debug|x64
-+ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x86.ActiveCfg = Debug|Win32
-+ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Debug|x86.Build.0 = Debug|Win32
-+ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x64.ActiveCfg = Release|x64
-+ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x64.Build.0 = Release|x64
-+ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x86.ActiveCfg = Release|Win32
-+ {798F7D68-C94D-41AF-86A4-98F7726D172C}.Release|x86.Build.0 = Release|Win32
-+ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x64.ActiveCfg = Debug|x64
-+ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x64.Build.0 = Debug|x64
-+ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x86.ActiveCfg = Debug|Win32
-+ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Debug|x86.Build.0 = Debug|Win32
-+ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x64.ActiveCfg = Release|x64
-+ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x64.Build.0 = Release|x64
-+ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x86.ActiveCfg = Release|Win32
-+ {40B445E8-306A-4C77-9B19-FC76C2379F79}.Release|x86.Build.0 = Release|Win32
-+ EndGlobalSection
-+ GlobalSection(SolutionProperties) = preSolution
-+ HideSolutionNode = FALSE
-+ EndGlobalSection
-+ GlobalSection(ExtensibilityGlobals) = postSolution
-+ SolutionGuid = {ED69324B-A55F-49DC-91D3-5F1D34DF875C}
-+ EndGlobalSection
-+ GlobalSection(Performance) = preSolution
-+ HasPerformanceSessions = true
-+ EndGlobalSection
-+EndGlobal
-diff --git a/build/x86_windows/uavs3d.vcxproj b/build/vs2017/uavs3d.vcxproj
-similarity index 55%
-rename from build/x86_windows/uavs3d.vcxproj
-rename to build/vs2017/uavs3d.vcxproj
-index 9557243..25603ec 100644
---- a/build/x86_windows/uavs3d.vcxproj
-+++ b/build/vs2017/uavs3d.vcxproj
-@@ -1,118 +1,200 @@
--<?xml version="1.0" encoding="utf-8"?>
--<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-- <ItemGroup Label="ProjectConfigurations">
-- <ProjectConfiguration Include="Debug|x64">
-- <Configuration>Debug</Configuration>
-- <Platform>x64</Platform>
-- </ProjectConfiguration>
-- <ProjectConfiguration Include="Release|x64">
-- <Configuration>Release</Configuration>
-- <Platform>x64</Platform>
-- </ProjectConfiguration>
-- </ItemGroup>
-- <PropertyGroup Label="Globals">
-- <ProjectGuid>{798F7D68-C94D-41AF-86A4-98F7726D172C}</ProjectGuid>
-- <Keyword>Win32Proj</Keyword>
-- <RootNamespace>dec_test_vs17</RootNamespace>
-- <ProjectName>uavs3d</ProjectName>
-- <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
-- </PropertyGroup>
-- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-- <ConfigurationType>Application</ConfigurationType>
-- <UseDebugLibraries>true</UseDebugLibraries>
-- <CharacterSet>MultiByte</CharacterSet>
-- <PlatformToolset>v141</PlatformToolset>
-- </PropertyGroup>
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-- <ConfigurationType>Application</ConfigurationType>
-- <UseDebugLibraries>false</UseDebugLibraries>
-- <WholeProgramOptimization>true</WholeProgramOptimization>
-- <CharacterSet>MultiByte</CharacterSet>
-- <PlatformToolset>v141</PlatformToolset>
-- </PropertyGroup>
-- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-- <ImportGroup Label="ExtensionSettings">
-- </ImportGroup>
-- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-- </ImportGroup>
-- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-- </ImportGroup>
-- <PropertyGroup Label="UserMacros" />
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-- <LinkIncremental>false</LinkIncremental>
-- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-- <OutDir>$(SolutionDir)\..\..\bin</OutDir>
-- </PropertyGroup>
-- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-- <LinkIncremental>false</LinkIncremental>
-- <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-- <OutDir>$(SolutionDir)\..\..\bin</OutDir>
-- </PropertyGroup>
-- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-- <ClCompile>
-- <PrecompiledHeader>
-- </PrecompiledHeader>
-- <WarningLevel>Level3</WarningLevel>
-- <Optimization>Disabled</Optimization>
-- <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions);_DEBUG</PreprocessorDefinitions>
-- <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
-- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-- <TreatWarningAsError>true</TreatWarningAsError>
-- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-- </ClCompile>
-- <Link>
-- <SubSystem>Console</SubSystem>
-- <GenerateDebugInformation>true</GenerateDebugInformation>
-- <AdditionalDependencies>
-- </AdditionalDependencies>
-- <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
-- </Link>
-- </ItemDefinitionGroup>
-- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-- <ClCompile>
-- <WarningLevel>Level3</WarningLevel>
-- <PrecompiledHeader>
-- </PrecompiledHeader>
-- <Optimization>MaxSpeed</Optimization>
-- <FunctionLevelLinking>true</FunctionLevelLinking>
-- <IntrinsicFunctions>true</IntrinsicFunctions>
-- <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-- <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
-- <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-- <TreatWarningAsError>true</TreatWarningAsError>
-- <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-- </ClCompile>
-- <Link>
-- <SubSystem>Console</SubSystem>
-- <GenerateDebugInformation>true</GenerateDebugInformation>
-- <EnableCOMDATFolding>true</EnableCOMDATFolding>
-- <OptimizeReferences>true</OptimizeReferences>
-- <AdditionalDependencies>
-- </AdditionalDependencies>
-- <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
-- </Link>
-- </ItemDefinitionGroup>
-- <ItemGroup>
-- <ClInclude Include="..\..\test\utest.h" />
-- </ItemGroup>
-- <ItemGroup>
-- <ClCompile Include="..\..\test\utest.c" />
-- </ItemGroup>
-- <ItemGroup>
-- <ProjectReference Include="common.vcxproj">
-- <Project>{3f9c7116-c287-40d7-865c-d8c89cf4ff31}</Project>
-- </ProjectReference>
-- <ProjectReference Include="libuavs3d.vcxproj">
-- <Project>{40b445e8-306a-4c77-9b19-fc76c2379f79}</Project>
-- </ProjectReference>
-- </ItemGroup>
-- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-- <ImportGroup Label="ExtensionTargets">
-- </ImportGroup>
-+<?xml version="1.0" encoding="utf-8"?>
-+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+ <ItemGroup Label="ProjectConfigurations">
-+ <ProjectConfiguration Include="Debug|Win32">
-+ <Configuration>Debug</Configuration>
-+ <Platform>Win32</Platform>
-+ </ProjectConfiguration>
-+ <ProjectConfiguration Include="Debug|x64">
-+ <Configuration>Debug</Configuration>
-+ <Platform>x64</Platform>
-+ </ProjectConfiguration>
-+ <ProjectConfiguration Include="Release|Win32">
-+ <Configuration>Release</Configuration>
-+ <Platform>Win32</Platform>
-+ </ProjectConfiguration>
-+ <ProjectConfiguration Include="Release|x64">
-+ <Configuration>Release</Configuration>
-+ <Platform>x64</Platform>
-+ </ProjectConfiguration>
-+ </ItemGroup>
-+ <PropertyGroup Label="Globals">
-+ <ProjectGuid>{798F7D68-C94D-41AF-86A4-98F7726D172C}</ProjectGuid>
-+ <Keyword>Win32Proj</Keyword>
-+ <RootNamespace>dec_test_vs17</RootNamespace>
-+ <ProjectName>uavs3d</ProjectName>
-+ <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
-+ </PropertyGroup>
-+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-+ <ConfigurationType>Application</ConfigurationType>
-+ <UseDebugLibraries>true</UseDebugLibraries>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ <PlatformToolset>v141</PlatformToolset>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-+ <ConfigurationType>Application</ConfigurationType>
-+ <UseDebugLibraries>true</UseDebugLibraries>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ <PlatformToolset>v141</PlatformToolset>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-+ <ConfigurationType>Application</ConfigurationType>
-+ <UseDebugLibraries>false</UseDebugLibraries>
-+ <WholeProgramOptimization>true</WholeProgramOptimization>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ <PlatformToolset>v141</PlatformToolset>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-+ <ConfigurationType>Application</ConfigurationType>
-+ <UseDebugLibraries>false</UseDebugLibraries>
-+ <WholeProgramOptimization>true</WholeProgramOptimization>
-+ <CharacterSet>MultiByte</CharacterSet>
-+ <PlatformToolset>v141</PlatformToolset>
-+ </PropertyGroup>
-+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-+ <ImportGroup Label="ExtensionSettings">
-+ </ImportGroup>
-+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+ </ImportGroup>
-+ <PropertyGroup Label="UserMacros" />
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-+ <LinkIncremental>false</LinkIncremental>
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ <OutDir>$(SolutionDir)\..\..\bin</OutDir>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-+ <LinkIncremental>false</LinkIncremental>
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-+ <LinkIncremental>false</LinkIncremental>
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ <OutDir>$(SolutionDir)\..\..\bin</OutDir>
-+ </PropertyGroup>
-+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-+ <LinkIncremental>false</LinkIncremental>
-+ <IntDir>$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
-+ </PropertyGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-+ <ClCompile>
-+ <PrecompiledHeader>
-+ </PrecompiledHeader>
-+ <WarningLevel>Level3</WarningLevel>
-+ <Optimization>Disabled</Optimization>
-+ <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions);_DEBUG</PreprocessorDefinitions>
-+ <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <SubSystem>Console</SubSystem>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ <AdditionalDependencies>
-+ </AdditionalDependencies>
-+ <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
-+ </Link>
-+ </ItemDefinitionGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-+ <ClCompile>
-+ <PrecompiledHeader>
-+ </PrecompiledHeader>
-+ <WarningLevel>Level3</WarningLevel>
-+ <Optimization>Disabled</Optimization>
-+ <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions);_DEBUG</PreprocessorDefinitions>
-+ <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <SubSystem>Console</SubSystem>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ <AdditionalDependencies>
-+ </AdditionalDependencies>
-+ <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
-+ </Link>
-+ </ItemDefinitionGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-+ <ClCompile>
-+ <WarningLevel>Level3</WarningLevel>
-+ <PrecompiledHeader>
-+ </PrecompiledHeader>
-+ <Optimization>MaxSpeed</Optimization>
-+ <FunctionLevelLinking>true</FunctionLevelLinking>
-+ <IntrinsicFunctions>true</IntrinsicFunctions>
-+ <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <SubSystem>Console</SubSystem>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+ <OptimizeReferences>true</OptimizeReferences>
-+ <AdditionalDependencies>
-+ </AdditionalDependencies>
-+ <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
-+ </Link>
-+ </ItemDefinitionGroup>
-+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-+ <ClCompile>
-+ <WarningLevel>Level3</WarningLevel>
-+ <PrecompiledHeader>
-+ </PrecompiledHeader>
-+ <Optimization>MaxSpeed</Optimization>
-+ <FunctionLevelLinking>true</FunctionLevelLinking>
-+ <IntrinsicFunctions>true</IntrinsicFunctions>
-+ <PreprocessorDefinitions>WIN64;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+ <AdditionalIncludeDirectories>..\..\inc;..\..\src</AdditionalIncludeDirectories>
-+ <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-+ <TreatWarningAsError>true</TreatWarningAsError>
-+ <AdditionalOptions>/arch:AVX %(AdditionalOptions)</AdditionalOptions>
-+ </ClCompile>
-+ <Link>
-+ <SubSystem>Console</SubSystem>
-+ <GenerateDebugInformation>true</GenerateDebugInformation>
-+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+ <OptimizeReferences>true</OptimizeReferences>
-+ <AdditionalDependencies>
-+ </AdditionalDependencies>
-+ <AdditionalLibraryDirectories>..\..\lib</AdditionalLibraryDirectories>
-+ </Link>
-+ </ItemDefinitionGroup>
-+ <ItemGroup>
-+ <ClInclude Include="..\..\test\utest.h" />
-+ </ItemGroup>
-+ <ItemGroup>
-+ <ClCompile Include="..\..\test\utest.c" />
-+ </ItemGroup>
-+ <ItemGroup>
-+ <ProjectReference Include="common.vcxproj">
-+ <Project>{3f9c7116-c287-40d7-865c-d8c89cf4ff31}</Project>
-+ </ProjectReference>
-+ <ProjectReference Include="libuavs3d.vcxproj">
-+ <Project>{40b445e8-306a-4c77-9b19-fc76c2379f79}</Project>
-+ </ProjectReference>
-+ </ItemGroup>
-+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-+ <ImportGroup Label="ExtensionTargets">
-+ </ImportGroup>
- </Project>
-\ No newline at end of file
-diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
-index 4530a63..b52363e 100644
---- a/source/CMakeLists.txt
-+++ b/source/CMakeLists.txt
-@@ -1,19 +1,93 @@
-
- set(LIBNAME uavs3d)
-
-+# check cpu
-+if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR
-+ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
-+ if(${CMAKE_SIZEOF_VOID_P} EQUAL 4)
-+ set(UAVS3D_TARGET_CPU "x86")
-+ elseif(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
-+ set(UAVS3D_TARGET_CPU "x86_64")
-+ else()
-+ message(FATAL_ERROR
-+ " Unexpected pointer size ${CMAKE_SIZEOF_VOID_P} for ${CMAKE_SYSTEM_PROCESSOR}\n")
-+ endif()
-+elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386" OR
-+ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86")
-+ set(UAVS3D_TARGET_CPU "x86")
-+elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64" OR
-+ "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm64")
-+ set(UAVS3D_TARGET_CPU "arm64")
-+elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm")
-+ set(UAVS3D_TARGET_CPU "armv7")
-+elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "loongarch64")
-+ set(UAVS3D_TARGET_CPU "loongarch64")
-+else()
-+ message(WARNING "unsupported architecture: ${CMAKE_SYSTEM_PROCESSOR}\n")
-+ set(UAVS3D_TARGET_CPU "generic")
-+endif()
-+
- # add source
- aux_source_directory(./decoder DIR_UAVS3D_SRC)
- aux_source_directory(./decore DIR_UAVS3D_CORE)
--aux_source_directory(./decore/sse DIR_X86_SRC)
--aux_source_directory(./decore/avx2 DIR_X86_256_SRC)
-
- list(APPEND DIR_UAVS3D_SRC ${DIR_UAVS3D_CORE})
-
- include_directories("decore")
-+set(UAVS3D_ASM_FILES "")
-+
-+if("${UAVS3D_TARGET_CPU}" MATCHES "x86" OR
-+ "${UAVS3D_TARGET_CPU}" MATCHES "x86_64")
-+ aux_source_directory(./decore/sse DIR_X86_SRC)
-+ aux_source_directory(./decore/avx2 DIR_X86_256_SRC)
-+ set_source_files_properties(${DIR_X86_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -msse4.2")
-+ set_source_files_properties(${DIR_X86_256_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -mavx2")
-+
-+ list(APPEND UAVS3D_ASM_FILES ${DIR_X86_SRC})
-+ list(APPEND UAVS3D_ASM_FILES ${DIR_X86_256_SRC})
-+elseif("${UAVS3D_TARGET_CPU}" MATCHES "armv7")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/armv7.c")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/alf_armv7.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/deblock_armv7.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/def_armv7.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/inter_pred_armv7.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/intra_pred_armv7.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/dct2_armv7.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/itrans_dct8_dst7_armv7.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/pixel_armv7.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/sao_armv7.c")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/sao_kernel_armv7.S")
-+
-+ add_definitions(-D _armv7a)
-+ enable_language(ASM)
-+elseif("${UAVS3D_TARGET_CPU}" MATCHES "arm64")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/arm64.c")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/alf_arm64.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/deblock_arm64.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/def_arm64.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/inter_pred_arm64.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/intra_pred_arm64.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/intra_pred_chroma_arm64.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/itrans_arm64.c")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/itrans_dct2_arm64.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/itrans_dct8_dst7_arm64.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/pixel_arm64.S")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/sao_arm64.c")
-+ list(APPEND UAVS3D_ASM_FILES "./decore/arm64/sao_kernel_arm64.S")
-
--set_source_files_properties(${DIR_UAVS3D_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O3")
--set_source_files_properties(${DIR_X86_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O3 -msse4.2")
--set_source_files_properties(${DIR_X86_256_SRC} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c99 -O3 -mavx2")
-+ add_definitions(-D _arm64)
-+ enable_language(ASM)
-+elseif("${UAVS3D_TARGET_CPU}" MATCHES "loongarch64")
-+ # loongarch64
-+endif()
-+
-+if(COMPILE_10BIT)
-+ add_definitions(-DCOMPILE_10BIT=1)
-+ message("-- compile 10bit")
-+else()
-+ add_definitions(-DCOMPILE_10BIT=0)
-+ message("-- compile 8bit")
-+endif()
-
- # get version
- set (CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..)
-@@ -30,6 +104,7 @@ endfunction()
- extract_version_string("${CONFIG_DIR}/version.h" uavs3d_version)
- MESSAGE(STATUS "uavs3d version \t\t: ${uavs3d_version}")
-
-+MESSAGE(STATUS "Target CPU\t\t\t: ${UAVS3D_TARGET_CPU}")
- # pkg-config
- find_package(Threads REQUIRED)
- set(prefix "${CMAKE_INSTALL_PREFIX}")
-@@ -65,9 +140,11 @@ MESSAGE(STATUS "BUILD_SHARED_LIBS \t\t: true")
- else()
- MESSAGE(STATUS "BUILD_SHARED_LIBS \t\t: false")
- endif()
--add_library(${LIBNAME} ${DIR_UAVS3D_SRC} ${DIR_X86_256_SRC} ${DIR_X86_SRC})
-+add_library(${LIBNAME} ${DIR_UAVS3D_SRC} ${UAVS3D_ASM_FILES})
-
--target_link_libraries(${LIBNAME} m)
-+if (NOT MSVC)
-+ target_link_libraries(${LIBNAME} m)
-+endif()
- if(CMAKE_USE_PTHREADS_INIT)
- target_link_libraries(${LIBNAME} pthread)
- endif()
-@@ -76,4 +153,3 @@ endif()
- install(TARGETS uavs3d LIBRARY DESTINATION ${CMAKE_INSTALL_LIB_DIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIB_DIR})
- install(FILES decoder/uavs3d.h DESTINATION ${CMAKE_INSTALL_INCLUDE_DIR})
- install(FILES ${CONFIG_DIR}/${LIBNAME}.pc DESTINATION ${CMAKE_INSTALL_PKGCONFIG_DIR})
--
-diff --git a/source/decoder/bitstream.c b/source/decoder/bitstream.c
-index 9c433ad..1c3aaac 100644
---- a/source/decoder/bitstream.c
-+++ b/source/decoder/bitstream.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decoder/bitstream.h b/source/decoder/bitstream.h
-index 60052b4..f1b1043 100644
---- a/source/decoder/bitstream.h
-+++ b/source/decoder/bitstream.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decoder/dec_type.h b/source/decoder/dec_type.h
-index 1761605..cfb0442 100644
---- a/source/decoder/dec_type.h
-+++ b/source/decoder/dec_type.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decoder/dec_util.c b/source/decoder/dec_util.c
-index e9374d9..e30e323 100644
---- a/source/decoder/dec_util.c
-+++ b/source/decoder/dec_util.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -250,7 +245,7 @@ static void uavs3d_always_inline com_mv_rounding_affine(s32 hor, s32 ver, s32 *
- }
- }
-
--static void uavs3d_always_inline check_umve_motion_availability(int scup, int cu_width, int cu_height, int i_scu, int neighbor[NUM_SPATIAL_MV], int valid[NUM_SPATIAL_MV], com_scu_t * map_scu, s16(*map_mv)[REFP_NUM][MV_D], s8(*map_refi)[REFP_NUM])
-+static void uavs3d_always_inline check_umve_motion_availability(int scup, int cu_width, int cu_height, int i_scu, int neighbor[5], int valid[5], com_scu_t * map_scu, s16(*map_mv)[REFP_NUM][MV_D], s8(*map_refi)[REFP_NUM])
- {
- int cu_width_in_scu = cu_width >> MIN_CU_LOG2;
- int cu_height_in_scu = cu_height >> MIN_CU_LOG2;
-@@ -985,7 +980,6 @@ static int get_affine_merge_candidate(com_core_t *core, s8 mrg_list_refi[REFP_NU
- int scup = core->cu_scup;
- com_map_t *map = &core->map;
- com_seqh_t *seqhdr = core->seqhdr;
-- com_ref_pic_t(*refp)[REFP_NUM] = core->refp;
- int i_scu = seqhdr->i_scu;
- int lidx, i, k;
- int cu_width = core->cu_width;
-@@ -1112,6 +1106,7 @@ static int get_affine_merge_candidate(com_core_t *core, s8 mrg_list_refi[REFP_NU
- int neb_addr_rb = scup + i_scu * (cu_height_in_scu - 1) + (cu_width_in_scu - 1);
- int scu_y;
- int scup_co = get_colocal_scup(neb_addr_rb, i_scu, seqhdr->pic_width_in_scu, seqhdr->pic_height_in_scu, &scu_y);
-+ com_ref_pic_t(*refp)[REFP_NUM] = core->refp;
-
- if (core->pichdr->slice_type == SLICE_B) {
- uavs3d_check_ref_avaliable(refp[0][REFP_1].pic, scu_y << MIN_CU_LOG2);
-diff --git a/source/decoder/dec_util.h b/source/decoder/dec_util.h
-index 77c00a6..9d46217 100644
---- a/source/decoder/dec_util.h
-+++ b/source/decoder/dec_util.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decoder/parser.c b/source/decoder/parser.c
-index 45bb26a..9405daa 100644
---- a/source/decoder/parser.c
-+++ b/source/decoder/parser.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -88,6 +83,9 @@ int dec_parse_sqh(com_bs_t * bs, com_seqh_t * seqhdr)
- dec_bs_read1(bs, 1); //marker_bit
- seqhdr->vertical_size = dec_bs_read(bs, 14, 0, COM_UINT32_MAX);
-
-+ seqhdr->display_horizontal_size = seqhdr->horizontal_size;
-+ seqhdr->display_vertical_size = seqhdr->vertical_size;
-+
- seqhdr->chroma_format = (u8)dec_bs_read(bs, 2, 1, 1);
- seqhdr->sample_precision = (u8)dec_bs_read(bs, 3, 1, 2);
-
-@@ -262,19 +260,21 @@ static int user_data(com_pic_header_t *pichdr, com_bs_t * bs)
- return RET_OK;
- }
-
--static int sequence_display_extension(com_bs_t * bs)
-+static int sequence_display_extension(com_bs_t * bs, com_seqh_t *seqhdr)
- {
- dec_bs_read(bs, 3, 0, COM_UINT32_MAX); // video_format u(3)
- dec_bs_read1(bs, -1); // sample_range u(1)
-- int colour_description = dec_bs_read1(bs, -1); // colour_description u(1)
-- if (colour_description) {
-- dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // colour_primaries u(8)
-- dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // transfer_characteristics u(8)
-- dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // matrix_coefficients u(8)
-+
-+ seqhdr->colour_description = dec_bs_read1(bs, -1); // colour_description u(1)
-+
-+ if (seqhdr->colour_description) {
-+ seqhdr->colour_primaries = dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // colour_primaries u(8)
-+ seqhdr->transfer_characteristics = dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // transfer_characteristics u(8)
-+ seqhdr->matrix_coefficients = dec_bs_read(bs, 8, 0, COM_UINT32_MAX); // matrix_coefficients u(8)
- }
-- dec_bs_read(bs, 14, 0, COM_UINT32_MAX); // display_horizontal_size u(14)
-+ seqhdr->display_horizontal_size = dec_bs_read(bs, 14, 0, COM_UINT32_MAX); // display_horizontal_size u(14)
- dec_bs_read1(bs, 1); //marker_bit
-- dec_bs_read(bs, 14, 0, COM_UINT32_MAX); // display_vertical_size u(14)
-+ seqhdr->display_vertical_size = dec_bs_read(bs, 14, 0, COM_UINT32_MAX); // display_vertical_size u(14)
- char td_mode_flag = dec_bs_read1(bs, -1); // td_mode_flag u(1)
-
- if (td_mode_flag == 1) {
-@@ -460,7 +460,7 @@ static int extension_data(com_bs_t * bs, com_seqh_t *seqhdr, com_pic_header_t *p
- if (i == 0) {
- int ret = dec_bs_read(bs, 4, 0, COM_UINT32_MAX);
- if (ret == 2) {
-- sequence_display_extension(bs);
-+ sequence_display_extension(bs, seqhdr);
- } else if (ret == 3) {
- temporal_scalability_extension(bs);
- } else if (ret == 4) {
-@@ -1647,7 +1647,7 @@ static uavs3d_always_inline u32 lbac_read_unary_sym_ep(com_lbac_t * lbac)
- low = lbac_refill2(lbac, low);
- }
- val += bin;
-- } while (bin);
-+ } while (bin && lbac->cur < lbac->end);
-
- lbac->range = range;
- lbac->low = low;
-@@ -2834,8 +2834,7 @@ int dec_parse_lcu_delta_qp(com_lbac_t * lbac, int last_dqp)
- bin = lbac_dec_bin(lbac, ctx->lcu_qp_delta + act_ctx);
- act_ctx = min(3, act_ctx + 1);
- act_sym += !bin;
-- }
-- while (!bin);
-+ } while (!bin && lbac->cur < lbac->end);
- }
-
- dquant = (act_sym + 1) >> 1;
-diff --git a/source/decoder/parser.h b/source/decoder/parser.h
-index 20cd103..93fbb1a 100644
---- a/source/decoder/parser.h
-+++ b/source/decoder/parser.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decoder/uavs3d.c b/source/decoder/uavs3d.c
-index 9ac7dc2..7b0491d 100644
---- a/source/decoder/uavs3d.c
-+++ b/source/decoder/uavs3d.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -1060,7 +1055,7 @@ int __cdecl uavs3d_flush(void *h, uavs3d_io_frm_t* frm_out)
-
- void* __cdecl uavs3d_create(uavs3d_cfg_t * dec_cfg, uavs3d_lib_output_callback_t callback, int * err)
- {
-- uavs3d_dec_t *ctx = NULL;
-+ uavs3d_dec_t *ctx;
-
- printf("libuavs3d(%2d): %s_%s, %s\n", BIT_DEPTH, VERSION_STR, VERSION_TYPE, VERSION_SHA1);
-
-diff --git a/source/decoder/uavs3d.h b/source/decoder/uavs3d.h
-index f5ea2b0..1931917 100644
---- a/source/decoder/uavs3d.h
-+++ b/source/decoder/uavs3d.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -137,6 +132,9 @@ typedef struct uavs3d_com_seqh_t {
- unsigned int bbv_buffer_size; /* 18 bits */
- int horizontal_size; /* 14 bits */
- int vertical_size; /* 14 bits */
-+ int display_horizontal_size; /* 14 bits */
-+ int display_vertical_size; /* 14 bits */
-+
- unsigned char log2_max_cu_width_height; /* 3 bits */
- unsigned char min_cu_size;
- unsigned char max_part_ratio_log2;
-@@ -211,6 +209,13 @@ typedef struct uavs3d_com_seqh_t {
-
- /* alf map */
- unsigned char *alf_idx_map;
-+
-+ /* hdr info */
-+ unsigned char colour_description;
-+ unsigned char colour_primaries;
-+ unsigned char transfer_characteristics;
-+ unsigned char matrix_coefficients;
-+
- } com_seqh_t;
-
- #define FRAME_MAX_PLANES 3
-diff --git a/source/decore/alf.c b/source/decore/alf.c
-index 89a2411..111d99f 100644
---- a/source/decore/alf.c
-+++ b/source/decore/alf.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/arm64/alf_arm64.S b/source/decore/arm64/alf_arm64.S
-index 49a620f..9998073 100644
---- a/source/decore/arm64/alf_arm64.S
-+++ b/source/decore/arm64/alf_arm64.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/arm64/arm64.c b/source/decore/arm64/arm64.c
-index 0850349..74c2f81 100644
---- a/source/decore/arm64/arm64.c
-+++ b/source/decore/arm64/arm64.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -102,7 +97,7 @@ static void uavs3d_padding_rows_chroma_arm64(pel *src, int i_src, int width, int
-
- void uavs3d_funs_init_arm64()
- {
--#if (BIT_DEPTH == 8)
-+#if !COMPILE_10BIT
- uavs3d_funs_handle.sao[ Y_C] = uavs3d_sao_on_lcu_arm64;
- uavs3d_funs_handle.sao[UV_C] = uavs3d_sao_on_lcu_chroma_arm64;
- uavs3d_funs_handle.alf[ Y_C] = uavs3d_alf_one_lcu_arm64;
-@@ -311,7 +306,7 @@ void uavs3d_funs_init_arm64()
- uavs3d_funs_handle.itrans_dst7[1] = uavs3d_itrans_dct8_pb8_arm64;
- uavs3d_funs_handle.itrans_dst7[2] = uavs3d_itrans_dct8_pb16_arm64;
-
-- uavs3d_funs_handle.conv_fmt_16bit = uavs3d_conv_fmt_16bit_arm64;
-+ //uavs3d_funs_handle.conv_fmt_16bit = uavs3d_conv_fmt_16bit_arm64;
- uavs3d_funs_handle.padding_rows_luma = uavs3d_padding_rows_luma_arm64;
- uavs3d_funs_handle.padding_rows_chroma = uavs3d_padding_rows_chroma_arm64;
-
-diff --git a/source/decore/arm64/arm64.h b/source/decore/arm64/arm64.h
-index 6ba0566..b2410ef 100644
---- a/source/decore/arm64/arm64.h
-+++ b/source/decore/arm64/arm64.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/arm64/deblock_arm64.S b/source/decore/arm64/deblock_arm64.S
-index ff47274..b152147 100644
---- a/source/decore/arm64/deblock_arm64.S
-+++ b/source/decore/arm64/deblock_arm64.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -1540,12 +1535,12 @@ deblock_ver_filtered:
- bif v17.16b, v1.16b, v25.16b
- bif v18.16b, v6.16b, v25.16b
-
-- mov v1.2d, v17.2d
-- mov v2.2d, v28.2d
-- mov v3.2d, v30.2d
-- mov v4.2d, v31.2d
-- mov v5.2d, v29.2d
-- mov v6.2d, v18.2d
-+ mov v1.16b, v17.16b
-+ mov v2.16b, v28.16b
-+ mov v3.16b, v30.16b
-+ mov v4.16b, v31.16b
-+ mov v5.16b, v29.16b
-+ mov v6.16b, v18.16b
-
- st4 {v0.H, v1.H, v2.H, v3.H}[0], [x2], #8
- st4 {v4.H, v5.H, v6.H, v7.H}[0], [x2], x5
-diff --git a/source/decore/arm64/def_arm64.S b/source/decore/arm64/def_arm64.S
-index c6a219d..82e267d 100644
---- a/source/decore/arm64/def_arm64.S
-+++ b/source/decore/arm64/def_arm64.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -35,25 +30,23 @@
- * For more information, contact us at rgwang@pkusz.edu.cn.
- **************************************************************************************/
-
--#if defined(__ANDROID__)
--.macro function name
-- .text
-- .align 4
-- .global \name
-- .type \name, %function
-- \name:
--.endm
--
- #if defined(__aarch64__) && !defined(__arm64__)
- #define __arm64__ 1
- #endif
--#elif defined(__APPLE__)
-+
-+#if defined(__APPLE__)
- .macro function name
- .text
- .align 4
- .global _\name
- _\name:
- .endm
-+#else
-+.macro function name
-+ .text
-+ .align 4
-+ .global \name
-+ .type \name, %function
-+ \name:
-+.endm
- #endif
--
--#define COMPILE_10BIT 0
-diff --git a/source/decore/arm64/inter_pred_arm64.S b/source/decore/arm64/inter_pred_arm64.S
-index e86addd..375f041 100644
---- a/source/decore/arm64/inter_pred_arm64.S
-+++ b/source/decore/arm64/inter_pred_arm64.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -1809,9 +1804,9 @@ if_hor_ver_chroma_w8_loop_y:
- smlal v30.4s, v22.4h, v7.h[3]
- smlal2 v31.4s, v22.8h, v7.h[3]
-
-- mov v16.2d, v20.2d
-- mov v17.2d, v21.2d
-- mov v18.2d, v22.2d
-+ mov v16.16b, v20.16b
-+ mov v17.16b, v21.16b
-+ mov v18.16b, v22.16b
-
- rshrn v24.4h, v24.4s, #12
- rshrn2 v24.8h, v25.4s, #12
-@@ -2553,10 +2548,10 @@ if_hor_ver_luma_w4_loop_y:
- smlal v29.4s, v21.4h, v8.h[7]
- smlal2 v30.4s, v21.8h, v8.h[7]
-
-- mov v16.2d, v18.2d
-- mov v17.2d, v19.2d
-- mov v18.2d, v20.2d
-- mov v19.2d, v21.2d
-+ mov v16.16b, v18.16b
-+ mov v17.16b, v19.16b
-+ mov v18.16b, v20.16b
-+ mov v19.16b, v21.16b
-
- rshrn v27.4h, v27.4s, #12
- rshrn v28.4h, v28.4s, #12
-@@ -5268,7 +5263,7 @@ function uavs3d_if_hor_ver_luma_w8_arm64
- ldr w8, [sp] // w8 = max_val
-
- sub sp, sp, #80
-- sub x9, sp, #16
-+ add x9, sp, #64
- st1 {v12.2d, v13.2d, v14.2d, v15.2d}, [sp]
- st1 {v11.2d}, [x9]
-
-diff --git a/source/decore/arm64/intra_pred_arm64.S b/source/decore/arm64/intra_pred_arm64.S
-index e2c4629..5689bd4 100644
---- a/source/decore/arm64/intra_pred_arm64.S
-+++ b/source/decore/arm64/intra_pred_arm64.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -2996,12 +2991,12 @@ intra_pred_bi_ipf_end:
- // const s8 *flt_coef_hor, const s8 *flt_coef_ver, int w, int h, int bit_depth)
- //src->x0, dst->x1, i_dst->x2, flt_range_hor->x3, flt_range_ver->x4, flt_coef_hor->x5, flt_coef_ver->x6, w->x7
- function uavs3d_intra_pred_ipf_arm64
--#if defined(__ANDROID__)
-- ldr w8, [sp] // w8 = h
-- ldr w9, [sp, #8] // w9 = bit_depth
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldr w8, [sp]
- ldr w9, [sp, #4]
-+#else
-+ ldr w8, [sp] // w8 = h
-+ ldr w9, [sp, #8] // w9 = bit_depth
- #endif
- add x0, x0, #1 // p_top = src + 1
-
-diff --git a/source/decore/arm64/intra_pred_chroma_arm64.S b/source/decore/arm64/intra_pred_chroma_arm64.S
-index 2c142f3..b12d02a 100644
---- a/source/decore/arm64/intra_pred_chroma_arm64.S
-+++ b/source/decore/arm64/intra_pred_chroma_arm64.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -555,7 +550,7 @@ intra_pred_dc_uv_fillblock_w8:
- b intra_pred_dc_uv_end
-
- intra_pred_dc_uv_fillblock_w16:
-- mov v1.8h, v0.8h
-+ mov v1.16b, v0.16b
- intra_pred_dc_uv_fillblock_w16_y:
- st1 {v0.8h, v1.8h}, [x1], x2 // store dst[x]
- st1 {v0.8h, v1.8h}, [x1], x2
-@@ -570,9 +565,9 @@ intra_pred_dc_uv_fillblock_w32x:
- cmp w3, #64
- beq intra_pred_dc_uv_fillblock_w64
-
-- mov v1.8h, v0.8h
-- mov v2.8h, v0.8h
-- mov v3.8h, v0.8h
-+ mov v1.16b, v0.16b
-+ mov v2.16b, v0.16b
-+ mov v3.16b, v0.16b
- intra_pred_dc_uv_fillblock_w32_y:
- st1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x1], x2 // store dst[x]
- st1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x1], x2
-@@ -585,9 +580,9 @@ intra_pred_dc_uv_fillblock_w32_y:
- intra_pred_dc_uv_fillblock_w64:
-
- sub x2, x2, #64
-- mov v1.8h, v0.8h
-- mov v2.8h, v0.8h
-- mov v3.8h, v0.8h
-+ mov v1.16b, v0.16b
-+ mov v2.16b, v0.16b
-+ mov v3.16b, v0.16b
- intra_pred_dc_uv_fillblock_w64_y:
- st1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x1], #64
- st1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x1], x2
-diff --git a/source/decore/arm64/itrans_arm64.c b/source/decore/arm64/itrans_arm64.c
-index d26ec5f..9b2362e 100644
---- a/source/decore/arm64/itrans_arm64.c
-+++ b/source/decore/arm64/itrans_arm64.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/arm64/itrans_arm64.h b/source/decore/arm64/itrans_arm64.h
-index c4977d0..15d9a4b 100644
---- a/source/decore/arm64/itrans_arm64.h
-+++ b/source/decore/arm64/itrans_arm64.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/arm64/itrans_dct2_arm64.S b/source/decore/arm64/itrans_dct2_arm64.S
-index 00b99e1..0f37c7e 100644
---- a/source/decore/arm64/itrans_dct2_arm64.S
-+++ b/source/decore/arm64/itrans_dct2_arm64.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -758,9 +753,9 @@ dct2_h16_1st_loopx:
- dct2_h16_2nd_transform:
-
- sub sp, sp, #48
-- sub x7, sp, #16
-- st1 {v10.8h, v11.8h}, [sp]
-- st1 {v12.8h}, [x7]
-+ add x7, sp, #16
-+ st1 {v10.8h, v11.8h}, [x7]
-+ st1 {v12.8h}, [sp]
-
- mov w8, #1
- lsl w8, w8, w5
-@@ -1059,8 +1054,8 @@ dct2_h16_2nd_loopx:
- cmp x8, x3
- blt dct2_h16_2nd_loopx
-
-- ld1 {v10.8h, v11.8h}, [sp], #32
- ld1 {v12.8h}, [sp], #16
-+ ld1 {v10.8h, v11.8h}, [sp], #32
- ld1 {v8.8h, v9.8h}, [sp], #32
-
- dct2_h16_end:
-diff --git a/source/decore/arm64/itrans_dct8_dst7_arm64.S b/source/decore/arm64/itrans_dct8_dst7_arm64.S
-index 340865c..5ba39e5 100644
---- a/source/decore/arm64/itrans_dct8_dst7_arm64.S
-+++ b/source/decore/arm64/itrans_dct8_dst7_arm64.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/arm64/pixel_arm64.S b/source/decore/arm64/pixel_arm64.S
-index bc79826..81fa81c 100644
---- a/source/decore/arm64/pixel_arm64.S
-+++ b/source/decore/arm64/pixel_arm64.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -285,8 +280,8 @@ padding_rows_lr_y:
-
- ld1r {v0.8h}, [x0]
- ld1r {v2.8h}, [x5] // right reference pointer
-- mov v1.8h, v0.8h
-- mov v3.8h, v2.8h
-+ mov v1.16b, v0.16b
-+ mov v3.16b, v2.16b
-
- sub x5, x0, x4
- add x6, x0, x2
-@@ -332,8 +327,8 @@ padding_rows_chroma_lr_y:
- ld1r {v0.4s}, [x0] // src[0] src[1]
- ld1r {v2.4s}, [x5] // right reference pointer
-
-- mov v1.4s, v0.4s
-- mov v3.4s, v2.4s
-+ mov v1.16b, v0.16b
-+ mov v3.16b, v2.16b
-
- sub x5, x0, x4
- add x6, x0, x2
-diff --git a/source/decore/arm64/sao_arm64.c b/source/decore/arm64/sao_arm64.c
-index dc1a5b0..37cf9e0 100644
---- a/source/decore/arm64/sao_arm64.c
-+++ b/source/decore/arm64/sao_arm64.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/arm64/sao_kernel_arm64.S b/source/decore/arm64/sao_kernel_arm64.S
-index 1546b17..b0d0bb8 100644
---- a/source/decore/arm64/sao_kernel_arm64.S
-+++ b/source/decore/arm64/sao_kernel_arm64.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -451,10 +446,10 @@ loop_x_eo_90_chroma_end:
- ************************************************************************************************************************************/
- function uavs3d_sao_eo_135_arm64
- // get start_x_r0 and end_x_r0
--#if defined(__ANDROID__)
-- ldp x8, x9, [sp]
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w8, w9, [sp]
-+#else
-+ ldp x8, x9, [sp]
- #endif
- sxtw x8, w8 // start_x_r0
- sxtw x9, w9 // end_x_r0
-@@ -537,10 +532,10 @@ test_loop_x_eo_135_end_r0:
-
- // ------- middle rows -------
- // get param
--#if defined(__ANDROID__)
-- ldp x7, x8, [sp, #16]
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w7, w8, [sp, #8]
-+#else
-+ ldp x7, x8, [sp, #16]
- #endif
- sxtw x7, w7 // start_x_r
- sxtw x8, w8 // end_x_r
-@@ -613,10 +608,10 @@ test_loop_x_eo_135_end_r:
- bgt test_loop_y_eo_135_r
-
- // ------- last row -------
--#if defined(__ANDROID__)
-- ldp x6, x7, [sp, #32]
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w6, w7, [sp, #16]
-+#else
-+ ldp x6, x7, [sp, #32]
- #endif
- sxtw x6, w6 // start_x_rn
- sxtw x7, w7 // end_x_rn
-@@ -691,10 +686,10 @@ test_loop_x_eo_135_end_rn:
- ************************************************************************************************************************************/
- function uavs3d_sao_eo_135_chroma_arm64
-
--#if defined(__ANDROID__)
-- ldp x8, x9, [sp]
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w8, w9, [sp]
-+#else
-+ ldp x8, x9, [sp]
- #endif
- sxtw x8, w8 // start_x_r0
- sxtw x9, w9 // end_x_r0
-@@ -793,10 +788,10 @@ loop_x_eo_135_chroma_end_r0:
- add x1, x1, x3 //-- dst+=dst_stride
-
- //--------------------------------middle rows--------------------------------
--#if defined(__ANDROID__)
-- ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w7 , w8, [sp, #8] //-- x7=start_x_r; x8=end_x_r
-+#else
-+ ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
- #endif
- sxtw x7 , w7
- sxtw x8 , w8
-@@ -886,10 +881,10 @@ loop_x_eo_135_chroma_end_r:
- bgt loop_y_eo_135_chroma_r
-
- //---------------------------------last row--------------------------------
--#if defined(__ANDROID__)
-- ldp x6, x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w6, w7, [sp, #16] //-- x6=start_x_rn; x7=end_x_rn
-+#else
-+ ldp x6, x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
- #endif
- sxtw x7, w7
- sxtw x6, w6
-@@ -979,10 +974,10 @@ loop_x_eo_135_chroma_end_rn:
- * end_x_r0->x8, start_x_r->x9, end_x_r->x10, start_x_rn->x11, end_x_rn->x12
- ************************************************************************************************************************************/
- function uavs3d_sao_eo_45_arm64
--#if defined(__ANDROID__)
-- ldp x8, x9, [sp]
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w8, w9, [sp]
-+#else
-+ ldp x8, x9, [sp]
- #endif
- sxtw x8, w8 // start_x_r0
- sxtw x9, w9 // end_x_r0
-@@ -1064,10 +1059,10 @@ test_loop_x_eo_45_end_r0:
-
- // ------- middle rows -------
- // get param
--#if defined(__ANDROID__)
-- ldp x7, x8, [sp, #16] // x7 start_x_r; x8 end_x_r
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w7, w8, [sp, #8] // x7 start_x_r; x8 end_x_r
-+#else
-+ ldp x7, x8, [sp, #16] // x7 start_x_r; x8 end_x_r
- #endif
- sxtw x7, w7
- sxtw x8, w8
-@@ -1141,10 +1136,10 @@ test_loop_x_eo_45_end_r:
- bgt test_loop_y_eo_45_r
-
- // ------- last row -------
--#if defined(__ANDROID__)
-- ldp x6, x7, [sp, #32] // $x6 start_x_rn; $x7 end_x_rn
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w6, w7, [sp, #16] // $x6 start_x_rn; $x7 end_x_rn
-+#else
-+ ldp x6, x7, [sp, #32] // $x6 start_x_rn; $x7 end_x_rn
- #endif
- sxtw x6, w6
- sxtw x7, w7
-@@ -1217,10 +1212,10 @@ ret
- * end_x_r0->x8, start_x_r->x9, end_x_r->x10, start_x_rn->x11, end_x_rn->x12
- ************************************************************************************************************************************/
- function uavs3d_sao_eo_45_chroma_arm64
--#if defined(__ANDROID__)
-- ldp x8, x9, [sp]
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w8, w9, [sp]
-+#else
-+ ldp x8, x9, [sp]
- #endif
- sxtw x8, w8 // start_x_r0
- sxtw x9, w9 // end_x_r0
-@@ -1315,10 +1310,10 @@ loop_x_eo_45_chroma_end_r0:
- add x1, x1, x3 //-- dst+=dst_stride
-
- //--------------------------------middle rows--------------------------------
--#if defined(__ANDROID__)
-- ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w7 , w8, [sp, #8] //-- x7=start_x_r; x8=end_x_r
-+#else
-+ ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
- #endif
- sxtw x7 , w7
- sxtw x8 , w8
-@@ -1405,10 +1400,10 @@ loop_x_eo_45_chroma_end_r:
- bgt loop_y_eo_45_chroma_r
-
- //---------------------------------last row--------------------------------
--#if defined(__ANDROID__)
-- ldp x6 , x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w6 , w7, [sp, #16] //-- x6=start_x_rn; x7=end_x_rn
-+#else
-+ ldp x6 , x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
- #endif
- sxtw x7 , w7
- sxtw x6 , w6
-@@ -2221,10 +2216,10 @@ loop_x_eo_90_chroma_end:
- * src->x0, dst->x1, src_stride->x2, dst_stride->x3, offset->x4, mask->x5, mb_height->x6, bit_depth->x7
- ************************************************************************************************************************************/
- function uavs3d_sao_eo_135_arm64
--#if defined(__ANDROID__)
-- ldp x8, x9, [sp] // start_x_r0 and end_x_r0
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w8, w9, [sp]
-+#else
-+ ldp x8, x9, [sp] // start_x_r0 and end_x_r0
- #endif
-
- sxtw x8, w8 // start_x_r0
-@@ -2336,10 +2331,10 @@ test_loop_x_eo_135_end_r0:
-
- // ------- middle rows -------
- // get param
--#if defined(__ANDROID__)
-- ldp x7, x8, [sp, #16]
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w7, w8, [sp, #8]
-+#else
-+ ldp x7, x8, [sp, #16]
- #endif
- sxtw x7, w7 // x7 start_x_r
- sxtw x8, w8 // x8 end_x_r
-@@ -2431,10 +2426,10 @@ test_loop_x_eo_135_end_r:
- bgt test_loop_y_eo_135_r
-
- // ------- last row -------
--#if defined(__ANDROID__)
-- ldp x6, x7, [sp, #32]
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w6, w7, [sp, #16]
-+#else
-+ ldp x6, x7, [sp, #32]
- #endif
- sxtw x6, w6 // start_x_rn
- sxtw x7, w7 // end_x_rn
-@@ -2527,10 +2522,10 @@ test_loop_x_eo_135_end_rn:
- * src->x0, dst->x1, src_stride->x2, dst_stride->x3, offset->x4, mask->x5, mb_height->x6, bit_depth->x7
- ************************************************************************************************************************************/
- function uavs3d_sao_eo_135_chroma_arm64
--#if defined(__ANDROID__)
-- ldp x8, x9, [sp] // start_x_r0 and end_x_r0
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w8, w9, [sp]
-+#else
-+ ldp x8, x9, [sp] // start_x_r0 and end_x_r0
- #endif
-
- mov w13, #1
-@@ -2636,10 +2631,10 @@ loop_x_eo_135_chroma_end_r0:
- add x1, x1, x3 //-- dst+=dst_stride
-
- //--------------------------------middle rows--------------------------------
--#if defined(__ANDROID__)
-- ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w7 , w8, [sp, #8] //-- x7=start_x_r; x8=end_x_r
-+#else
-+ ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
- #endif
- sxtw x7 , w7
- sxtw x8 , w8
-@@ -2730,10 +2725,10 @@ loop_x_eo_135_chroma_end_r:
- bgt loop_y_eo_135_chroma_r
-
- //---------------------------------last row--------------------------------
--#if defined(__ANDROID__)
-- ldp x6, x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w6, w7, [sp, #16] //-- x6=start_x_rn; x7=end_x_rn
-+#else
-+ ldp x6, x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
- #endif
- sxtw x7, w7
- sxtw x6, w6
-@@ -2822,10 +2817,10 @@ loop_x_eo_135_chroma_end_rn:
- * src->x0, dst->x1, src_stride->x2, dst_stride->x3, offset->x4, mask->x5, mb_height->x6, bit_depth->x7
- ************************************************************************************************************************************/
- function uavs3d_sao_eo_45_arm64
--#if defined(__ANDROID__)
-- ldp x8, x9, [sp] // start_x_r0 and end_x_r0
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w8, w9, [sp]
-+#else
-+ ldp x8, x9, [sp] // start_x_r0 and end_x_r0
- #endif
-
- mov w12, #1
-@@ -2936,10 +2931,10 @@ test_loop_x_eo_45_end_r0:
-
- // ------- middle rows -------
- // get param
--#if defined(__ANDROID__)
-- ldp x7, x8, [sp, #16] // x7 start_x_r; x8 end_x_r
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w7, w8, [sp, #8] // x7 start_x_r; x8 end_x_r
-+#else
-+ ldp x7, x8, [sp, #16] // x7 start_x_r; x8 end_x_r
- #endif
- sxtw x7, w7
- sxtw x8, w8
-@@ -3031,10 +3026,10 @@ test_loop_x_eo_45_end_r:
- bgt test_loop_y_eo_45_r
-
- // ------- last row -------
--#if defined(__ANDROID__)
-- ldp x6, x7, [sp, #32]
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w6, w7, [sp, #16]
-+#else
-+ ldp x6, x7, [sp, #32]
- #endif
- sxtw x6, w6 // start_x_rn
- sxtw x7, w7 // end_x_rn
-@@ -3126,10 +3121,10 @@ test_loop_x_eo_45_end_rn:
- * src->x0, dst->x1, src_stride->x2, dst_stride->x3, offset->x4, mask->x5, mb_height->x6, bit_depth->x7
- ************************************************************************************************************************************/
- function uavs3d_sao_eo_45_chroma_arm64
--#if defined(__ANDROID__)
-- ldp x8, x9, [sp] // start_x_r0 and end_x_r0
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w8, w9, [sp]
-+#else
-+ ldp x8, x9, [sp] // start_x_r0 and end_x_r0
- #endif
-
- mov w12, #1
-@@ -3236,10 +3231,10 @@ loop_x_eo_45_chroma_end_r0:
- add x1, x1, x3 //-- dst+=dst_stride
-
- //--------------------------------middle rows--------------------------------
--#if defined(__ANDROID__)
-- ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w7 , w8, [sp, #8] //-- x7=start_x_r; x8=end_x_r
-+#else
-+ ldp x7 , x8, [sp, #16] //-- x7=start_x_r; x8=end_x_r
- #endif
- sxtw x7 , w7
- sxtw x8 , w8
-@@ -3328,10 +3323,10 @@ loop_x_eo_45_chroma_end_r:
- bgt loop_y_eo_45_chroma_r
-
- //---------------------------------last row--------------------------------
--#if defined(__ANDROID__)
-- ldp x6 , x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- ldp w6 , w7, [sp, #16] //-- x6=start_x_rn; x7=end_x_rn
-+#else
-+ ldp x6 , x7, [sp, #32] //-- x6=start_x_rn; x7=end_x_rn
- #endif
- sxtw x7 , w7
- sxtw x6 , w6
-diff --git a/source/decore/arm64/sao_kernel_arm64.h b/source/decore/arm64/sao_kernel_arm64.h
-index 03373ce..b9c448e 100644
---- a/source/decore/arm64/sao_kernel_arm64.h
-+++ b/source/decore/arm64/sao_kernel_arm64.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/armv7/alf_armv7.S b/source/decore/armv7/alf_armv7.S
-index 5b0e3e0..c87f29b 100644
---- a/source/decore/armv7/alf_armv7.S
-+++ b/source/decore/armv7/alf_armv7.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/armv7/armv7.c b/source/decore/armv7/armv7.c
-index 0be03a4..6ad9086 100644
---- a/source/decore/armv7/armv7.c
-+++ b/source/decore/armv7/armv7.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -242,7 +237,7 @@ void uavs3d_itrans_dct2_h64_w64_armv7(s16 *src, s16 *dst, int bit_depth)
-
- void uavs3d_funs_init_armv7()
- {
--#if BIT_DEPTH == 8
-+#if !COMPILE_10BIT
- uavs3d_funs_handle.sao[ Y_C] = uavs3d_sao_on_lcu_armv7;
- uavs3d_funs_handle.sao[UV_C] = uavs3d_sao_on_lcu_chroma_armv7;
- uavs3d_funs_handle.alf[ Y_C] = uavs3d_alf_one_lcu_armv7;
-diff --git a/source/decore/armv7/armv7.h b/source/decore/armv7/armv7.h
-index 60efd7e..0114927 100644
---- a/source/decore/armv7/armv7.h
-+++ b/source/decore/armv7/armv7.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/armv7/dct2_armv7.S b/source/decore/armv7/dct2_armv7.S
-index 82c2f82..05e965f 100644
---- a/source/decore/armv7/dct2_armv7.S
-+++ b/source/decore/armv7/dct2_armv7.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/armv7/deblock_armv7.S b/source/decore/armv7/deblock_armv7.S
-index 202d121..dcdeabf 100644
---- a/source/decore/armv7/deblock_armv7.S
-+++ b/source/decore/armv7/deblock_armv7.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/armv7/def_armv7.S b/source/decore/armv7/def_armv7.S
-index fdc3d27..861f016 100644
---- a/source/decore/armv7/def_armv7.S
-+++ b/source/decore/armv7/def_armv7.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -35,23 +30,18 @@
- * For more information, contact us at rgwang@pkusz.edu.cn.
- **************************************************************************************/
-
--#if defined(__ANDROID__)
--.macro function name
-- .global \name
-- .hidden \name
-- .type \name, %function
--\name:
--.endm
--#elif defined(__APPLE__)
-+#if defined(__APPLE__)
- .macro function name
- .text
- .align 4
- .global _\name
- _\name:
- .endm
--
-+#else
-+.macro function name
-+ .global \name
-+ .hidden \name
-+ .type \name, %function
-+\name:
-+.endm
- #endif
--
--#define COMPILE_10BIT 0
--
--
-diff --git a/source/decore/armv7/inter_pred_armv7.S b/source/decore/armv7/inter_pred_armv7.S
-index edbcc62..fd78ae4 100644
---- a/source/decore/armv7/inter_pred_armv7.S
-+++ b/source/decore/armv7/inter_pred_armv7.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/armv7/intra_pred_armv7.S b/source/decore/armv7/intra_pred_armv7.S
-index cbce583..807f6a5 100644
---- a/source/decore/armv7/intra_pred_armv7.S
-+++ b/source/decore/armv7/intra_pred_armv7.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/armv7/itrans_dct8_dst7_armv7.S b/source/decore/armv7/itrans_dct8_dst7_armv7.S
-index 129bbc3..d8d1ab1 100755
---- a/source/decore/armv7/itrans_dct8_dst7_armv7.S
-+++ b/source/decore/armv7/itrans_dct8_dst7_armv7.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/armv7/pixel_armv7.S b/source/decore/armv7/pixel_armv7.S
-index 83124a4..f88f474 100644
---- a/source/decore/armv7/pixel_armv7.S
-+++ b/source/decore/armv7/pixel_armv7.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/armv7/sao_armv7.c b/source/decore/armv7/sao_armv7.c
-index cec6880..8b3070e 100644
---- a/source/decore/armv7/sao_armv7.c
-+++ b/source/decore/armv7/sao_armv7.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/armv7/sao_kernel_armv7.S b/source/decore/armv7/sao_kernel_armv7.S
-index 0449ecc..1652c99 100644
---- a/source/decore/armv7/sao_kernel_armv7.S
-+++ b/source/decore/armv7/sao_kernel_armv7.S
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/armv7/sao_kernel_armv7.h b/source/decore/armv7/sao_kernel_armv7.h
-index d30c690..49b020b 100644
---- a/source/decore/armv7/sao_kernel_armv7.h
-+++ b/source/decore/armv7/sao_kernel_armv7.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/avx2/alf_avx2.c b/source/decore/avx2/alf_avx2.c
-index 74226b6..cc2cf5f 100644
---- a/source/decore/avx2/alf_avx2.c
-+++ b/source/decore/avx2/alf_avx2.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -489,7 +484,7 @@ void uavs3d_alf_one_lcu_one_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src
- __m256i T000, T001, T010, T011, T100, T101, T110, T111, T200, T201, T210, T211, T310, T311, T300, T301, T400, T401, T410, T411, T500, T501, T510, T511, T600, T601, T610, T611, T700, T701, T710, T711;
- __m256i E00, E01, E10, E11;
- __m256i C0, C1, C2, C3, C4, C5, C6, C7, C8;
-- __m256i S0, S00, S01, S1, S10, S11, S2, S20, S21, S3, S30, S31, S4, S40, S41, S5, S50, S51, S6, S7, S8, S60, S61, S70, S71, S80, S81, S82, S83, SS1, SS2, SS3, SS4;
-+ __m256i S0, S00, S01, S1, S10, S11, S2, S20, S21, S3, S30, S31, S4, S40, S41, S5, S50, S51, S6, S7, S60, S61, S70, S71, S80, S81, S82, S83, SS1, SS2, SS3, SS4;
- __m256i mAddOffset;
- __m256i mZero = _mm256_set1_epi16(0);
- __m256i mMax = _mm256_set1_epi16((short)((1 << sample_bit_depth) - 1));
-@@ -629,7 +624,7 @@ void uavs3d_alf_one_lcu_one_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src
- S5 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S50, 1));
- S6 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S60, 1));
- S7 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S70, 1));
-- S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S80, 1));
-+ //S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S80, 1));
- S0 = _mm256_add_epi32(S0, S1);
- S2 = _mm256_add_epi32(S2, S3);
- S4 = _mm256_add_epi32(S4, S5);
-@@ -803,7 +798,7 @@ void uavs3d_alf_one_lcu_one_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src
- S5 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S50, 1));
- S6 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S60, 1));
- S7 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S70, 1));
-- S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S80, 1));
-+ //S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S80, 1));
- S0 = _mm256_add_epi32(S0, S1);
- S2 = _mm256_add_epi32(S2, S3);
- S4 = _mm256_add_epi32(S4, S5);
-@@ -821,7 +816,7 @@ void uavs3d_alf_one_lcu_one_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src
- S5 = _mm256_cvtepi16_epi32(_mm256_castsi256_si128(S51));
- S6 = _mm256_cvtepi16_epi32(_mm256_castsi256_si128(S61));
- S7 = _mm256_cvtepi16_epi32(_mm256_castsi256_si128(S71));
-- S8 = _mm256_cvtepi16_epi32(_mm256_castsi256_si128(S81));
-+ //S8 = _mm256_cvtepi16_epi32(_mm256_castsi256_si128(S81));
- S0 = _mm256_add_epi32(S0, S1);
- S2 = _mm256_add_epi32(S2, S3);
- S4 = _mm256_add_epi32(S4, S5);
-@@ -839,7 +834,7 @@ void uavs3d_alf_one_lcu_one_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src
- S5 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S51, 1));
- S6 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S61, 1));
- S7 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S71, 1));
-- S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S81, 1));
-+ //S8 = _mm256_cvtepi16_epi32(_mm256_extracti128_si256(S81, 1));
- S0 = _mm256_add_epi32(S0, S1);
- S2 = _mm256_add_epi32(S2, S3);
- S4 = _mm256_add_epi32(S4, S5);
-@@ -1055,7 +1050,6 @@ void uavs3d_alf_one_lcu_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src, in
- int startPos = 0;
- int endPos = lcu_height;
- int xPosEnd = lcu_width << 1;
-- long long tmp[8];
-
- src += (startPos*i_src);
- dst += (startPos*i_dst);
-@@ -1066,22 +1060,14 @@ void uavs3d_alf_one_lcu_chroma_avx2(pel *dst, int i_dst, pel *src, int i_src, in
- T00 = _mm256_unpacklo_epi16(C8, C8);
- T01 = _mm256_unpackhi_epi16(C8, C8);
-
-- tmp[0] = _mm256_extract_epi64(T00, 0); // win32 compile error if C0 = _mm256_set1_epi64x(_mm256_extract_epi64(T00, 0));
-- tmp[1] = _mm256_extract_epi64(T00, 1);
-- tmp[2] = _mm256_extract_epi64(T00, 2);
-- tmp[3] = _mm256_extract_epi64(T00, 3);
-- tmp[4] = _mm256_extract_epi64(T01, 0);
-- tmp[5] = _mm256_extract_epi64(T01, 1);
-- tmp[6] = _mm256_extract_epi64(T01, 2);
-- tmp[7] = _mm256_extract_epi64(T01, 3);
-- C0 = _mm256_set1_epi64x(tmp[0]);
-- C1 = _mm256_set1_epi64x(tmp[1]);
-- C2 = _mm256_set1_epi64x(tmp[2]);
-- C3 = _mm256_set1_epi64x(tmp[3]);
-- C4 = _mm256_set1_epi64x(tmp[4]);
-- C5 = _mm256_set1_epi64x(tmp[5]);
-- C6 = _mm256_set1_epi64x(tmp[6]);
-- C7 = _mm256_set1_epi64x(tmp[7]);
-+ C0 = _mm256_permute4x64_epi64(T00, 0x00);
-+ C1 = _mm256_permute4x64_epi64(T00, 0x55);
-+ C2 = _mm256_permute4x64_epi64(T00, 0xaa);
-+ C3 = _mm256_permute4x64_epi64(T00, 0xff);
-+ C4 = _mm256_permute4x64_epi64(T01, 0x00);
-+ C5 = _mm256_permute4x64_epi64(T01, 0x55);
-+ C6 = _mm256_permute4x64_epi64(T01, 0xaa);
-+ C7 = _mm256_permute4x64_epi64(T01, 0xff);
- C8 = _mm256_set1_epi32((unsigned short)coef[16] + (((unsigned short)coef[17]) << 16));
- C8 = _mm256_unpacklo_epi16(C8, C8);
-
-diff --git a/source/decore/avx2/avx2.c b/source/decore/avx2/avx2.c
-index a17dac5..d4b3ebf 100644
---- a/source/decore/avx2/avx2.c
-+++ b/source/decore/avx2/avx2.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -183,11 +178,13 @@ void uavs3d_funs_init_avx2()
- uavs3d_funs_handle.ipcpy[4] = uavs3d_if_cpy_w64_avx2;
- uavs3d_funs_handle.ipcpy[5] = uavs3d_if_cpy_w128_avx2;
-
-+ uavs3d_funs_handle.ipflt[IPFILTER_H_4][1] = uavs3d_if_hor_chroma_w8_avx2;
- uavs3d_funs_handle.ipflt[IPFILTER_H_4][2] = uavs3d_if_hor_chroma_w16_avx2;
- uavs3d_funs_handle.ipflt[IPFILTER_H_4][3] = uavs3d_if_hor_chroma_w16x_avx2;
- uavs3d_funs_handle.ipflt[IPFILTER_H_4][4] = uavs3d_if_hor_chroma_w16x_avx2;
- uavs3d_funs_handle.ipflt[IPFILTER_H_4][5] = uavs3d_if_hor_chroma_w16x_avx2;
-
-+ uavs3d_funs_handle.ipflt[IPFILTER_H_8][1] = uavs3d_if_hor_luma_w8_avx2;
- uavs3d_funs_handle.ipflt[IPFILTER_H_8][2] = uavs3d_if_hor_luma_w16_avx2;
- uavs3d_funs_handle.ipflt[IPFILTER_H_8][3] = uavs3d_if_hor_luma_w16x_avx2;
- uavs3d_funs_handle.ipflt[IPFILTER_H_8][4] = uavs3d_if_hor_luma_w16x_avx2;
-@@ -198,6 +195,7 @@ void uavs3d_funs_init_avx2()
- uavs3d_funs_handle.ipflt[IPFILTER_V_4][4] = uavs3d_if_ver_chroma_w32x_avx2;
- uavs3d_funs_handle.ipflt[IPFILTER_V_4][5] = uavs3d_if_ver_chroma_w32x_avx2;
-
-+ uavs3d_funs_handle.ipflt[IPFILTER_V_8][1] = uavs3d_if_ver_luma_w8_avx2;
- uavs3d_funs_handle.ipflt[IPFILTER_V_8][2] = uavs3d_if_ver_luma_w16_avx2;
- uavs3d_funs_handle.ipflt[IPFILTER_V_8][3] = uavs3d_if_ver_luma_w16x_avx2;
- uavs3d_funs_handle.ipflt[IPFILTER_V_8][4] = uavs3d_if_ver_luma_w16x_avx2;
-@@ -209,6 +207,8 @@ void uavs3d_funs_init_avx2()
- uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_4][4] = uavs3d_if_hor_ver_chroma_w16x_avx2;
- uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_4][5] = uavs3d_if_hor_ver_chroma_w16x_avx2;
-
-+ uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_8][0] = uavs3d_if_hor_ver_luma_w4_avx2;
-+ uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_8][1] = uavs3d_if_hor_ver_luma_w8_avx2;
- uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_8][2] = uavs3d_if_hor_ver_luma_w16x_avx2;
- uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_8][3] = uavs3d_if_hor_ver_luma_w16x_avx2;
- uavs3d_funs_handle.ipflt_ext[IPFILTER_EXT_8][4] = uavs3d_if_hor_ver_luma_w16x_avx2;
-diff --git a/source/decore/avx2/avx2.h b/source/decore/avx2/avx2.h
-index 43d0ad3..a29cfe8 100644
---- a/source/decore/avx2/avx2.h
-+++ b/source/decore/avx2/avx2.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/avx2/inter_pred_avx2.c b/source/decore/avx2/inter_pred_avx2.c
-index c7287d3..cbaa2fc 100644
---- a/source/decore/avx2/inter_pred_avx2.c
-+++ b/source/decore/avx2/inter_pred_avx2.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
--* Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+* Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
--* 3. All advertising materials mentioning features or use of this software
--* must display the following acknowledgement:
--* This product includes the software uAVS3d developed by
--* Peking University Shenzhen Graduate School, Peng Cheng Laboratory
--* and Guangdong Bohua UHD Innovation Corporation.
--* 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+* 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -33,7 +28,7 @@
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * For more information, contact us at rgwang@pkusz.edu.cn.
--**************************************************************************************/
-+**************************************************************************************/
-
- #include "avx2.h"
-
-@@ -134,9 +129,11 @@ void uavs3d_if_hor_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst
-
- __m256i mCoefy1_hor = _mm256_set1_epi16(*(s16*)coeff);
- __m256i mCoefy2_hor = _mm256_set1_epi16(*(s16*)(coeff + 2));
-- __m256i mSwitch = _mm256_setr_epi8(0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9);
-+ __m256i mSwitch0 = _mm256_setr_epi8(0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9);
-+ __m256i mSwitch1 = _mm256_setr_epi8(0+4, 2+4, 1+4, 3+4, 2+4, 4+4, 3+4, 5+4, 4+4, 6+4, 5+4, 7+4, 6+4, 8+4, 7+4, 9+4,
-+ 0+4, 2+4, 1+4, 3+4, 2+4, 4+4, 3+4, 5+4, 4+4, 6+4, 5+4, 7+4, 6+4, 8+4, 7+4, 9+4);
- __m256i mAddOffset = _mm256_set1_epi16(offset);
-- __m256i T0, T1, S0, S1, R0, R1, sum;
-+ __m256i T0, T1, S0, R0, R1, sum;
- __m128i s0, s1;
-
- src -= 2;
-@@ -144,27 +141,27 @@ void uavs3d_if_hor_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst
- while (height > 0) {
- s0 = _mm_loadu_si128((__m128i*)(src));
- s1 = _mm_loadu_si128((__m128i*)(src + i_src));
-+ src += i_src << 1;
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-
- S0 = _mm256_set_m128i(s1, s0);
-- S1 = _mm256_srli_si256(S0, 4);
-
-- R0 = _mm256_shuffle_epi8(S0, mSwitch); // 4 rows s0 and s1
-- R1 = _mm256_shuffle_epi8(S1, mSwitch);
-+ R0 = _mm256_shuffle_epi8(S0, mSwitch0); // 4 rows s0 and s1
-+ R1 = _mm256_shuffle_epi8(S0, mSwitch1);
-
- T0 = _mm256_maddubs_epi16(R0, mCoefy1_hor); // 4x4: s0*c0 + s1*c1
- T1 = _mm256_maddubs_epi16(R1, mCoefy2_hor);
- sum = _mm256_add_epi16(T0, T1);
-
-- sum = _mm256_add_epi16(sum, mAddOffset);
-+ sum = _mm256_add_epi16(sum, mAddOffset);
- sum = _mm256_srai_epi16(sum, shift);
-
- s0 = _mm_packus_epi16(_mm256_castsi256_si128(sum), _mm256_extracti128_si256(sum, 1));
-- s1 = _mm_srli_si128(s0, 8);
- _mm_storel_epi64((__m128i*)(dst), s0);
-- _mm_storel_epi64((__m128i*)(dst + i_dst), s1);
-+ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(s0));
-
- height -= 2;
-- src += i_src << 1;
- dst += i_dst << 1;
- }
- }
-@@ -184,9 +181,11 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
- src -= 2;
-
- while (height) {
-- uavs3d_prefetch(src + i_src*2, _MM_HINT_NTA);
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
-+ src += i_src << 1;
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
- S2 = _mm256_permute4x64_epi64(S0, 0x94);
- S3 = _mm256_permute4x64_epi64(S1, 0x94);
- R0 = _mm256_shuffle_epi8(S2, mSwitch1);
-@@ -200,6 +199,8 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
- sum0 = _mm256_add_epi16(T0, T1);
- sum1 = _mm256_add_epi16(T2, T3);
-
-+ height -= 2;
-+
- sum0 = _mm256_add_epi16(sum0, mAddOffset);
- sum1 = _mm256_add_epi16(sum1, mAddOffset);
- sum0 = _mm256_srai_epi16(sum0, shift);
-@@ -207,8 +208,6 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
- _mm_storeu_si128((__m128i*)(dst), _mm_packus_epi16(_mm256_castsi256_si128(sum0), _mm256_extracti128_si256(sum0, 1)));
- _mm_storeu_si128((__m128i*)(dst + i_dst), _mm_packus_epi16(_mm256_castsi256_si128(sum1), _mm256_extracti128_si256(sum1, 1)));
-
-- height -= 2;
-- src += i_src << 1;
- dst += i_dst << 1;
- }
- }
-@@ -228,10 +227,10 @@ void uavs3d_if_hor_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
- src -= 2;
-
- while (height--) {
-- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
--
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S1 = _mm256_loadu_si256((__m256i*)(src + 16));
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-+
- S2 = _mm256_permute4x64_epi64(S0, 0x94);
- S3 = _mm256_permute4x64_epi64(S1, 0x94);
- R0 = _mm256_shuffle_epi8(S2, mSwitch1);
-@@ -308,59 +307,52 @@ void uavs3d_if_hor_luma_w4_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- const int offset = 32;
- const int shift = 6;
- __m256i mAddOffset = _mm256_set1_epi16(offset);
-- __m256i mSwitch1 = _mm256_setr_epi8(0, 1, 1, 2, 2, 3, 3, 4, 8, 9, 9, 10, 10, 11, 11, 12, 0, 1, 1, 2, 2, 3, 3, 4, 8, 9, 9, 10, 10, 11, 11, 12);
-- __m256i mSwitch2 = _mm256_setr_epi8(2, 3, 3, 4, 4, 5, 5, 6, 10, 11, 11, 12, 12, 13, 13, 14, 2, 3, 3, 4, 4, 5, 5, 6, 10, 11, 11, 12, 12, 13, 13, 14);
-- __m256i T0, T1, T2, T3, S0, S1, S2, S3, sum;
-+ __m256i mSwitch1 = _mm256_setr_epi8(0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 5, 6, 0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 5, 6);
-+ __m256i mSwitch2 = _mm256_setr_epi8(4, 5, 6, 7, 5, 6, 7, 8, 6, 7, 8, 9, 7, 8, 9, 10, 4, 5, 6, 7, 5, 6, 7, 8, 6, 7, 8, 9, 7, 8, 9, 10);
-+ __m256i T0, T1, T2, T3, S0, S1, sum;
- __m256i r0, r1, r2, r3;
- __m128i s0, s1, s2, s3;
-- __m256i mCoefy1_hor = _mm256_set1_epi16(*(s16*)coeff);
-- __m256i mCoefy2_hor = _mm256_set1_epi16(*(s16*)(coeff + 2));
-- __m256i mCoefy3_hor = _mm256_set1_epi16(*(s16*)(coeff + 4));
-- __m256i mCoefy4_hor = _mm256_set1_epi16(*(s16*)(coeff + 6));
-+ __m256i mCoefy1_hor = _mm256_set1_epi32(*(s32*)coeff);
-+ __m256i mCoefy2_hor = _mm256_set1_epi32(*(s32*)(coeff + 4));
- src -= 3;
-
- while (height > 0) {
-- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
- s0 = _mm_loadu_si128((__m128i*)(src));
- s1 = _mm_loadu_si128((__m128i*)(src + i_src));
- s2 = _mm_loadu_si128((__m128i*)(src + i_src * 2));
- s3 = _mm_loadu_si128((__m128i*)(src + i_src * 3));
-+ src += i_src << 2;
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-
- S0 = _mm256_set_m128i(s2, s0);
- S1 = _mm256_set_m128i(s3, s1);
-
-- S2 = _mm256_srli_si256(S0, 4);
-- S3 = _mm256_srli_si256(S1, 4);
--
-- T0 = _mm256_unpacklo_epi64(S0, S1);
-- T1 = _mm256_unpacklo_epi64(S2, S3);
--
-- r0 = _mm256_shuffle_epi8(T0, mSwitch1);
-- r1 = _mm256_shuffle_epi8(T0, mSwitch2);
-- r2 = _mm256_shuffle_epi8(T1, mSwitch1);
-- r3 = _mm256_shuffle_epi8(T1, mSwitch2);
-+ r0 = _mm256_shuffle_epi8(S0, mSwitch1);
-+ r1 = _mm256_shuffle_epi8(S0, mSwitch2);
-+ r2 = _mm256_shuffle_epi8(S1, mSwitch1);
-+ r3 = _mm256_shuffle_epi8(S1, mSwitch2);
-
- T0 = _mm256_maddubs_epi16(r0, mCoefy1_hor);
- T1 = _mm256_maddubs_epi16(r1, mCoefy2_hor);
-- T2 = _mm256_maddubs_epi16(r2, mCoefy3_hor);
-- T3 = _mm256_maddubs_epi16(r3, mCoefy4_hor);
-+ T2 = _mm256_maddubs_epi16(r2, mCoefy1_hor);
-+ T3 = _mm256_maddubs_epi16(r3, mCoefy2_hor);
-
- T0 = _mm256_add_epi16(T0, T1);
- T1 = _mm256_add_epi16(T2, T3);
-- sum = _mm256_add_epi16(T0, T1);
-+ sum = _mm256_hadd_epi16(T0, T1);
-
- sum = _mm256_add_epi16(sum, mAddOffset);
- sum = _mm256_srai_epi16(sum, shift);
-
- s0 = _mm_packus_epi16(_mm256_castsi256_si128(sum), _mm256_extracti128_si256(sum, 1));
-
-+ height -= 4;
- M32(dst) = _mm_extract_epi32(s0, 0);
- M32(dst + i_dst) = _mm_extract_epi32(s0, 1);
- M32(dst + i_dst * 2) = _mm_extract_epi32(s0, 2);
- M32(dst + i_dst * 3) = _mm_extract_epi32(s0, 3);
-
-- height -= 4;
-- src += i_src << 2;
- dst += i_dst << 2;
- }
- }
-@@ -385,9 +377,11 @@ void uavs3d_if_hor_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- src -= 3;
-
- while (height) {
-- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
- s0 = _mm_loadu_si128((__m128i*)(src));
- s1 = _mm_loadu_si128((__m128i*)(src + i_src));
-+ src += i_src << 1;
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
- S = _mm256_set_m128i(s1, s0);
-
- r0 = _mm256_shuffle_epi8(S, mSwitch1);
-@@ -407,13 +401,11 @@ void uavs3d_if_hor_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- sum = _mm256_add_epi16(sum, mAddOffset);
- sum = _mm256_srai_epi16(sum, shift);
-
-+ height -= 2;
- s0 = _mm_packus_epi16(_mm256_castsi256_si128(sum), _mm256_extracti128_si256(sum, 1));
-- s1 = _mm_srli_si128(s0, 8);
- _mm_storel_epi64((__m128i*)(dst), s0);
-- _mm_storel_epi64((__m128i*)(dst + i_dst), s1);
-+ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(s0));
-
-- height -= 2;
-- src += i_src << 1;
- dst += i_dst << 1;
- }
- }
-@@ -437,11 +429,13 @@ void uavs3d_if_hor_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- src -= 3;
-
- while (height) {
-- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
- S2 = _mm256_permute4x64_epi64(S0, 0x94);
- S3 = _mm256_permute4x64_epi64(S1, 0x94);
-+ src += i_src << 1;
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-
- r0 = _mm256_shuffle_epi8(S2, mSwitch1);
- r1 = _mm256_shuffle_epi8(S2, mSwitch2);
-@@ -475,11 +469,10 @@ void uavs3d_if_hor_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- sum0 = _mm256_srai_epi16(sum0, shift);
- sum1 = _mm256_srai_epi16(sum1, shift);
-
-+ height -= 2;
- _mm_storeu_si128((__m128i*)(dst), _mm_packus_epi16(_mm256_castsi256_si128(sum0), _mm256_extracti128_si256(sum0, 1)));
- _mm_storeu_si128((__m128i*)(dst + i_dst), _mm_packus_epi16(_mm256_castsi256_si128(sum1), _mm256_extracti128_si256(sum1, 1)));
-
-- height -= 2;
-- src += i_src << 1;
- dst += i_dst << 1;
- }
- }
-@@ -503,13 +496,14 @@ void uavs3d_if_hor_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- src -= 3;
-
- while (height--) {
-- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
--
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S1 = _mm256_loadu_si256((__m256i*)(src + 16));
- S2 = _mm256_permute4x64_epi64(S0, 0x94);
- S3 = _mm256_permute4x64_epi64(S1, 0x94);
-
-+ src += i_src;
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+
- r0 = _mm256_shuffle_epi8(S2, mSwitch1);
- r1 = _mm256_shuffle_epi8(S2, mSwitch2);
- r2 = _mm256_shuffle_epi8(S2, mSwitch3);
-@@ -545,7 +539,6 @@ void uavs3d_if_hor_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- _mm_storeu_si128((__m128i*)(dst), _mm_packus_epi16(_mm256_castsi256_si128(sum0), _mm256_extracti128_si256(sum0, 1)));
- _mm_storeu_si128((__m128i*)(dst + 16), _mm_packus_epi16(_mm256_castsi256_si128(sum1), _mm256_extracti128_si256(sum1, 1)));
-
-- src += i_src;
- dst += i_dst;
- }
- }
-@@ -635,15 +628,17 @@ void uavs3d_if_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst
- src -= i_src;
-
- while (height) {
-- uavs3d_prefetch(src + 5 * i_src, _MM_HINT_NTA);
-- uavs3d_prefetch(src + 6 * i_src, _MM_HINT_NTA);
-- height -= 2;
- s0 = _mm_loadl_epi64((__m128i*)(src));
- s1 = _mm_loadl_epi64((__m128i*)(src + i_src));
- s2 = _mm_loadl_epi64((__m128i*)(src + i_src2));
- s3 = _mm_loadl_epi64((__m128i*)(src + i_src3));
- s4 = _mm_loadl_epi64((__m128i*)(src + i_src4));
-
-+ src += 2 * i_src;
-+ height -= 2;
-+ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src4, _MM_HINT_NTA);
-+
- S0 = _mm256_set_m128i(s1, s0);
- S1 = _mm256_set_m128i(s2, s1);
- S2 = _mm256_set_m128i(s3, s2);
-@@ -660,12 +655,10 @@ void uavs3d_if_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst
- mVal = _mm256_add_epi16(mVal, mAddOffset);
- mVal = _mm256_srai_epi16(mVal, shift);
- s0 = _mm_packus_epi16(_mm256_castsi256_si128(mVal), _mm256_extracti128_si256(mVal, 1));
-- s1 = _mm_srli_si128(s0, 8);
-
- _mm_storel_epi64((__m128i*)(dst), s0);
-- _mm_storel_epi64((__m128i*)(dst + i_dst), s1);
-+ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(s0));
-
-- src += 2 * i_src;
- dst += 2 * i_dst;
- }
- }
-@@ -687,15 +680,17 @@ void uavs3d_if_ver_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
- src -= i_src;
-
- while (height) {
-- uavs3d_prefetch(src + 5 * i_src, _MM_HINT_NTA);
-- uavs3d_prefetch(src + 6 * i_src, _MM_HINT_NTA);
-- height -= 2;
- s0 = _mm_loadu_si128((__m128i*)(src));
- s1 = _mm_loadu_si128((__m128i*)(src + i_src));
- s2 = _mm_loadu_si128((__m128i*)(src + i_src2));
- s3 = _mm_loadu_si128((__m128i*)(src + i_src3));
- s4 = _mm_loadu_si128((__m128i*)(src + i_src4));
-
-+ src += 2 * i_src;
-+ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src4, _MM_HINT_NTA);
-+ height -= 2;
-+
- S0 = _mm256_set_m128i(s1, s0);
- S1 = _mm256_set_m128i(s2, s1);
- S2 = _mm256_set_m128i(s3, s2);
-@@ -723,7 +718,6 @@ void uavs3d_if_ver_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
- _mm_storeu_si128((__m128i*)dst, _mm256_castsi256_si128(mVal0));
- _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_extracti128_si256(mVal0, 1));
-
-- src += 2 * i_src;
- dst += 2 * i_dst;
- }
- }
-@@ -744,15 +738,17 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
- src -= i_src;
-
- while (height) {
-- uavs3d_prefetch(src + 5 * i_src, _MM_HINT_NTA);
-- uavs3d_prefetch(src + 6 * i_src, _MM_HINT_NTA);
-- height -= 2;
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
- S2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
- S3 = _mm256_loadu_si256((__m256i*)(src + i_src3));
- S4 = _mm256_loadu_si256((__m256i*)(src + i_src4));
-
-+ src += 2 * i_src;
-+ height -= 2;
-+ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src4, _MM_HINT_NTA);
-+
- T0 = _mm256_unpacklo_epi8(S0, S1);
- T1 = _mm256_unpackhi_epi8(S0, S1);
- T2 = _mm256_unpacklo_epi8(S2, S3);
-@@ -790,7 +786,6 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
- _mm256_storeu_si256((__m256i*)dst, mVal0);
- _mm256_storeu_si256((__m256i*)(dst + i_dst), mVal2);
-
-- src += 2 * i_src;
- dst += 2 * i_dst;
-
- }
-@@ -811,7 +806,6 @@ void uavs3d_if_ver_chroma_w64_avx2(const pel *src, int i_src, pel *dst, int i_ds
- src -= i_src;
-
- while (height--){
-- uavs3d_prefetch(src + 4 * i_src, _MM_HINT_NTA);
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S4 = _mm256_loadu_si256((__m256i*)(src + 32));
- S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
-@@ -821,6 +815,7 @@ void uavs3d_if_ver_chroma_w64_avx2(const pel *src, int i_src, pel *dst, int i_ds
- S3 = _mm256_loadu_si256((__m256i*)(src + i_src3));
- S7 = _mm256_loadu_si256((__m256i*)(src + i_src3 + 32));
-
-+ src += i_src;
- T0 = _mm256_unpacklo_epi8(S0, S1);
- T1 = _mm256_unpacklo_epi8(S2, S3);
- T2 = _mm256_unpackhi_epi8(S0, S1);
-@@ -830,6 +825,8 @@ void uavs3d_if_ver_chroma_w64_avx2(const pel *src, int i_src, pel *dst, int i_ds
- T6 = _mm256_unpackhi_epi8(S4, S5);
- T7 = _mm256_unpackhi_epi8(S6, S7);
-
-+ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
-+
- T0 = _mm256_maddubs_epi16(T0, coeff0);
- T1 = _mm256_maddubs_epi16(T1, coeff1);
- T2 = _mm256_maddubs_epi16(T2, coeff0);
-@@ -858,7 +855,6 @@ void uavs3d_if_ver_chroma_w64_avx2(const pel *src, int i_src, pel *dst, int i_ds
- _mm256_storeu_si256((__m256i*)(dst), mVal0);
- _mm256_storeu_si256((__m256i*)(dst + 32), mVal1);
-
-- src += i_src;
- dst += i_dst;
- }
- }
-@@ -878,7 +874,6 @@ void uavs3d_if_ver_chroma_w128_avx2(const pel *src, int i_src, pel *dst, int i_d
- src -= i_src;
-
- while (height--) {
-- uavs3d_prefetch(src + 4 * i_src, _MM_HINT_NTA);
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S4 = _mm256_loadu_si256((__m256i*)(src + 32));
- S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
-@@ -934,6 +929,9 @@ void uavs3d_if_ver_chroma_w128_avx2(const pel *src, int i_src, pel *dst, int i_d
- S3 = _mm256_loadu_si256((__m256i*)(src + i_src3 + 64));
- S7 = _mm256_loadu_si256((__m256i*)(src + i_src3 + 96));
-
-+ src += i_src;
-+ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
-+
- T0 = _mm256_unpacklo_epi8(S0, S1);
- T1 = _mm256_unpacklo_epi8(S2, S3);
- T2 = _mm256_unpackhi_epi8(S0, S1);
-@@ -971,7 +969,6 @@ void uavs3d_if_ver_chroma_w128_avx2(const pel *src, int i_src, pel *dst, int i_d
- _mm256_storeu_si256((__m256i*)(dst + 64), mVal0);
- _mm256_storeu_si256((__m256i*)(dst + 96), mVal1);
-
-- src += i_src;
- dst += i_dst;
- }
- }
-@@ -1078,7 +1075,6 @@ void uavs3d_if_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- while (height) {
- __m128i S0, S1, S2, S3, S4, S5, S6, S7, S8;
-
-- height -= 2;
- S0 = _mm_loadl_epi64((__m128i*)(src));
- S1 = _mm_loadl_epi64((__m128i*)(src + i_src));
- S2 = _mm_loadl_epi64((__m128i*)(src + i_src2));
-@@ -1098,6 +1094,11 @@ void uavs3d_if_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- R6 = _mm256_set_m128i(S7, S6);
- R7 = _mm256_set_m128i(S8, S7);
-
-+ src += 2 * i_src;
-+ height -= 2;
-+ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src8, _MM_HINT_NTA);
-+
- T0 = _mm256_unpacklo_epi8(R0, R1);
- T1 = _mm256_unpacklo_epi8(R2, R3);
- T2 = _mm256_unpacklo_epi8(R4, R5);
-@@ -1115,11 +1116,9 @@ void uavs3d_if_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- mVal = _mm256_add_epi16(mVal, mAddOffset);
- mVal = _mm256_srai_epi16(mVal, shift);
- S0 = _mm_packus_epi16(_mm256_castsi256_si128(mVal), _mm256_extracti128_si256(mVal, 1));
-- S1 = _mm_srli_si128(S0, 8);
-
- _mm_storel_epi64((__m128i*)(dst), S0);
-- _mm_storel_epi64((__m128i*)(dst + i_dst), S1);
-- src += 2 * i_src;
-+ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(S0));
- dst += 2 * i_dst;
- }
- }
-@@ -1147,10 +1146,6 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
-
- while(height) {
- __m128i S0, S1, S2, S3, S4, S5, S6, S7, S8;
-- uavs3d_prefetch(src + 9 * i_src, _MM_HINT_NTA);
-- uavs3d_prefetch(src + 10 * i_src, _MM_HINT_NTA);
--
-- height -= 2;
- S0 = _mm_loadu_si128((__m128i*)(src));
- S1 = _mm_loadu_si128((__m128i*)(src + i_src));
- S2 = _mm_loadu_si128((__m128i*)(src + i_src2));
-@@ -1170,6 +1165,12 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- R6 = _mm256_set_m128i(S6, S7);
- R7 = _mm256_set_m128i(S7, S8);
-
-+ src += 2 * i_src;
-+ height -= 2;
-+
-+ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src8, _MM_HINT_NTA);
-+
- T0 = _mm256_unpacklo_epi8(R0, R1);
- T1 = _mm256_unpackhi_epi8(R0, R1);
- T2 = _mm256_unpacklo_epi8(R2, R3);
-@@ -1203,7 +1204,6 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
-
- _mm_storeu_si128((__m128i*)dst, _mm256_extractf128_si256(mVal1, 1));
- _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_castsi256_si128(mVal1));
-- src += 2 * i_src;
- dst += 2 * i_dst;
- }
- }
-@@ -1230,7 +1230,6 @@ void uavs3d_if_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- src -= 3 * i_src;
- while (height--) {
- __m256i S0, S1, S2, S3, S4, S5, S6, S7;
-- uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
- S2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
-@@ -1240,6 +1239,7 @@ void uavs3d_if_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- S6 = _mm256_loadu_si256((__m256i*)(src + i_src6));
- S7 = _mm256_loadu_si256((__m256i*)(src + i_src7));
-
-+ src += i_src;
- T0 = _mm256_unpacklo_epi8(S0, S1);
- T1 = _mm256_unpacklo_epi8(S2, S3);
- T2 = _mm256_unpacklo_epi8(S4, S5);
-@@ -1249,6 +1249,8 @@ void uavs3d_if_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- T6 = _mm256_unpackhi_epi8(S4, S5);
- T7 = _mm256_unpackhi_epi8(S6, S7);
-
-+ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
-+
- T0 = _mm256_maddubs_epi16(T0, coeff0);
- T1 = _mm256_maddubs_epi16(T1, coeff1);
- T2 = _mm256_maddubs_epi16(T2, coeff2);
-@@ -1273,7 +1275,6 @@ void uavs3d_if_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_dst,
-
- _mm256_storeu_si256((__m256i*)(dst), mVal1);
-
-- src += i_src;
- dst += i_dst;
- }
- }
-@@ -1295,12 +1296,11 @@ void uavs3d_if_ver_luma_w64_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- __m256i coeff3 = _mm256_set1_epi16(*(s16*)(coeff + 6));
- __m256i T0, T1, T2, T3, T4, T5, T6, T7, mVal1, mVal2;
-
-- src -= 3 * i_src;
-+ src -= i_src3;
-
- while (height--) {
- const pel *p = src + 32;
- __m256i S0, S1, S2, S3, S4, S5, S6, S7;
-- uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
- S2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
-@@ -1352,6 +1352,7 @@ void uavs3d_if_ver_luma_w64_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- S6 = _mm256_loadu_si256((__m256i*)(p + i_src6));
- S7 = _mm256_loadu_si256((__m256i*)(p + i_src7));
-
-+ src += i_src;
- T0 = _mm256_unpacklo_epi8(S0, S1);
- T1 = _mm256_unpacklo_epi8(S2, S3);
- T2 = _mm256_unpacklo_epi8(S4, S5);
-@@ -1361,6 +1362,8 @@ void uavs3d_if_ver_luma_w64_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- T6 = _mm256_unpackhi_epi8(S4, S5);
- T7 = _mm256_unpackhi_epi8(S6, S7);
-
-+ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
-+
- T0 = _mm256_maddubs_epi16(T0, coeff0);
- T1 = _mm256_maddubs_epi16(T1, coeff1);
- T2 = _mm256_maddubs_epi16(T2, coeff2);
-@@ -1385,7 +1388,6 @@ void uavs3d_if_ver_luma_w64_avx2(const pel *src, int i_src, pel *dst, int i_dst,
-
- _mm256_storeu_si256((__m256i*)(dst + 32), mVal1);
-
-- src += i_src;
- dst += i_dst;
- }
- }
-@@ -1412,7 +1414,6 @@ void uavs3d_if_ver_luma_w128_avx2(const pel *src, int i_src, pel *dst, int i_dst
- while (height--) {
- const pel *p = src + 32;
- __m256i S0, S1, S2, S3, S4, S5, S6, S7;
-- uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
- S2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
-@@ -1552,6 +1553,8 @@ void uavs3d_if_ver_luma_w128_avx2(const pel *src, int i_src, pel *dst, int i_dst
- S6 = _mm256_loadu_si256((__m256i*)(p + i_src6));
- S7 = _mm256_loadu_si256((__m256i*)(p + i_src7));
-
-+ src += i_src;
-+ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
- T0 = _mm256_unpacklo_epi8(S0, S1);
- T1 = _mm256_unpacklo_epi8(S2, S3);
- T2 = _mm256_unpacklo_epi8(S4, S5);
-@@ -1585,7 +1588,6 @@ void uavs3d_if_ver_luma_w128_avx2(const pel *src, int i_src, pel *dst, int i_dst
-
- _mm256_storeu_si256((__m256i*)(dst + 96), mVal1);
-
-- src += i_src;
- dst += i_dst;
- }
- }
-@@ -1668,6 +1670,8 @@ void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i
- S2 = _mm256_permute2x128_si256(mVal[1], mVal[2], 0x21);
- S3 = mVal[2];
-
-+ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
-+
- T0 = _mm256_unpacklo_epi16(S0, S1);
- T1 = _mm256_unpacklo_epi16(S2, S3);
- T2 = _mm256_unpackhi_epi16(S0, S1);
-@@ -1709,17 +1713,15 @@ void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i
- T0 = _mm256_srai_epi32(T0, shift);
- T2 = _mm256_srai_epi32(T2, shift);
-
-- s0 = _mm_packus_epi16(_mm256_castsi256_si128(R0), _mm256_extracti128_si256(R0, 1));
-- s1 = _mm_srli_si128(s0, 8);
-+ s2 = _mm_packus_epi16(_mm256_castsi256_si128(R0), _mm256_extracti128_si256(R0, 1));
-
- T0 = _mm256_packs_epi32(T0, T2);
-- s2 = _mm_packus_epi16(_mm256_castsi256_si128(T0), _mm256_extracti128_si256(T0, 1));
-- s3 = _mm_srli_si128(s2, 8);
-+ s3 = _mm_packus_epi16(_mm256_castsi256_si128(T0), _mm256_extracti128_si256(T0, 1));
-
-- _mm_storel_epi64((__m128i*)(dst), s0);
-- _mm_storel_epi64((__m128i*)(dst + i_dst), s1);
-- _mm_storel_epi64((__m128i*)(dst + i_dst*2), s2);
-- _mm_storel_epi64((__m128i*)(dst + i_dst*3), s3);
-+ _mm_storel_epi64((__m128i*)(dst), s2);
-+ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(s2));
-+ _mm_storel_epi64((__m128i*)(dst + i_dst*2), s3);
-+ _mm_storeh_pi((__m64*)(dst + i_dst*3), _mm_castsi128_ps(s3));
-
- dst += i_dst << 2;
- height -= 4;
-@@ -1756,17 +1758,17 @@ void uavs3d_if_hor_ver_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int
- row = height + 3;
-
- while (row--) {
-- uavs3d_prefetch(src + i_src*2, _MM_HINT_NTA);
- S0 = _mm256_loadu_si256((__m256i*)(src));
-+ src += i_src;
- S1 = _mm256_permute4x64_epi64(S0, 0x94);
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
- R0 = _mm256_shuffle_epi8(S1, mSwitch1);
- R1 = _mm256_shuffle_epi8(S1, mSwitch2);
- T0 = _mm256_maddubs_epi16(R0, mCoefy1_hor);
- T1 = _mm256_maddubs_epi16(R1, mCoefy2_hor);
- sum = _mm256_add_epi16(T0, T1);
-
-- _mm256_storeu_si256((__m256i*)(tmp), sum);
-- src += i_src;
-+ _mm256_store_si256((__m256i*)(tmp), sum);
- tmp += i_tmp;
- }
-
-@@ -1878,8 +1880,8 @@ void uavs3d_if_hor_ver_chroma_w32x_avx2(const pel *src, int i_src, pel *dst, int
- sum0 = _mm256_add_epi16(T0, T1);
- sum1 = _mm256_add_epi16(T2, T3);
-
-- _mm256_storeu_si256((__m256i*)(tmp + col), sum0);
-- _mm256_storeu_si256((__m256i*)(tmp + col + 16), sum1);
-+ _mm256_store_si256((__m256i*)(tmp + col), sum0);
-+ _mm256_store_si256((__m256i*)(tmp + col + 16), sum1);
- }
- src += i_src;
- tmp += i_tmp;
-@@ -2055,8 +2057,8 @@ void uavs3d_if_hor_ver_luma_w4_avx2(const pel *src, int i_src, pel *dst, int i_d
-
- s0 = _mm_loadu_si128((__m128i*)(src));
- s1 = _mm_loadu_si128((__m128i*)(src + i_src));
-- s2 = _mm_loadu_si128((__m128i*)(src + i_src * 2));
-- s3 = _mm_loadu_si128((__m128i*)(src + i_src * 3));
-+ s2 = _mm_loadu_si128((__m128i*)(src + i_src2));
-+ s3 = _mm_loadu_si128((__m128i*)(src + i_src3));
-
- S0 = _mm256_set_m128i(s2, s0);
- S1 = _mm256_set_m128i(s3, s1);
-@@ -2090,8 +2092,8 @@ void uavs3d_if_hor_ver_luma_w4_avx2(const pel *src, int i_src, pel *dst, int i_d
- // hor
- s0 = _mm_loadu_si128((__m128i*)(src));
- s1 = _mm_loadu_si128((__m128i*)(src + i_src));
-- s2 = _mm_loadu_si128((__m128i*)(src + i_src * 2));
-- s3 = _mm_loadu_si128((__m128i*)(src + i_src * 3));
-+ s2 = _mm_loadu_si128((__m128i*)(src + i_src2));
-+ s3 = _mm_loadu_si128((__m128i*)(src + i_src3));
-
- S0 = _mm256_set_m128i(s2, s0);
- S1 = _mm256_set_m128i(s3, s1);
-@@ -2173,19 +2175,7 @@ void uavs3d_if_hor_ver_luma_w4_avx2(const pel *src, int i_src, pel *dst, int i_d
-
- void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
- {
-- const int i_tmp = 8;
-- const int i_tmp2 = 16;
-- const int i_tmp3 = 24;
-- const int i_tmp4 = 32;
-- const int i_tmp5 = 40;
-- const int i_tmp6 = 48;
-- const int i_tmp7 = 56;;
-- const int i_tmp8 = 64;
-- const int i_tmp9 = 72;;
-- const int i_tmp10 = 80;
- const int i_src2 = i_src << 1;
-- int row;
-- int shift = 12;
-
- __m256i T0, T1, T2, T3, T4, T5, T6, T7, T8, T9;
- __m256i r0, r1, r2, r3, r4, r5, r6, r7, r8, r9;
-@@ -2201,12 +2191,16 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
-
- //HOR
- {
-+ int row;
- src = src - 3 * i_src - 3;
-
- // first row
- {
- __m128i mSrc0 = _mm_loadu_si128((__m128i*)(src));
- T0 = _mm256_set_m128i(mSrc0, mSrc0);
-+ src += i_src;
-+
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-
- r0 = _mm256_shuffle_epi8(T0, mSwitch1);
- r1 = _mm256_shuffle_epi8(T0, mSwitch2);
-@@ -2224,13 +2218,16 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
-
- mVal[0] = _mm256_permute4x64_epi64(mVal[0], 0x44);
-
-- src += i_src;
- }
-
- for (row = 1; row < 4; row++) {
-- __m128i mSrc0 = _mm_loadu_si128((__m128i*)(src));
-+ __m128i mSrc0 = _mm_loadu_si128((__m128i*)(src));
- __m128i mSrc1 = _mm_loadu_si128((__m128i*)(src + i_src));
- T0 = _mm256_set_m128i(mSrc1, mSrc0);
-+ src += i_src2;
-+
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-
- r0 = _mm256_shuffle_epi8(T0, mSwitch1);
- r1 = _mm256_shuffle_epi8(T0, mSwitch2);
-@@ -2245,8 +2242,6 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
- T0 = _mm256_add_epi16(T0, T1);
- T1 = _mm256_add_epi16(T2, T3);
- mVal[row] = _mm256_add_epi16(T0, T1);
--
-- src += i_src2;
- }
- }
-
-@@ -2260,35 +2255,44 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
- __m256i mCoefy2 = _mm256_cvtepi8_epi16(mCoefy22);
- __m256i mCoefy3 = _mm256_cvtepi8_epi16(mCoefy33);
- __m256i mCoefy4 = _mm256_cvtepi8_epi16(mCoefy44);
-+ const int shift = 12;
-
- while (height > 0) {
- __m128i s0, s1;
- //hor
-- s0 = _mm_loadu_si128((__m128i*)(src));
-+ s0 = _mm_loadu_si128((__m128i*)(src));
- s1 = _mm_loadu_si128((__m128i*)(src + i_src));
- T0 = _mm256_set_m128i(s1, s0);
-
-+ src += i_src2;
-+
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-+
- r0 = _mm256_shuffle_epi8(T0, mSwitch1);
- r1 = _mm256_shuffle_epi8(T0, mSwitch2);
- r2 = _mm256_shuffle_epi8(T0, mSwitch3);
- r3 = _mm256_shuffle_epi8(T0, mSwitch4);
-
-- src += i_src2;
--
- T0 = _mm256_maddubs_epi16(r0, mCoefy1_hor);
- T1 = _mm256_maddubs_epi16(r1, mCoefy2_hor);
- T2 = _mm256_maddubs_epi16(r2, mCoefy3_hor);
- T3 = _mm256_maddubs_epi16(r3, mCoefy4_hor);
-
-- s0 = _mm_loadu_si128((__m128i*)(src));
-+ s0 = _mm_loadu_si128((__m128i*)(src));
- s1 = _mm_loadu_si128((__m128i*)(src + i_src));
-
- T0 = _mm256_add_epi16(T0, T1);
- T1 = _mm256_add_epi16(T2, T3);
- mVal[4] = _mm256_add_epi16(T0, T1);
-
-+ src += i_src2;
-+
- T0 = _mm256_set_m128i(s1, s0);
-
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-+
- r0 = _mm256_shuffle_epi8(T0, mSwitch1);
- r1 = _mm256_shuffle_epi8(T0, mSwitch2);
- r2 = _mm256_shuffle_epi8(T0, mSwitch3);
-@@ -2303,8 +2307,6 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
- T1 = _mm256_add_epi16(T2, T3);
- mVal[5] = _mm256_add_epi16(T0, T1);
-
-- src += i_src2;
--
- T0 = _mm256_permute2x128_si256(mVal[0], mVal[1], 0x21);
- T1 = mVal[1];
- T2 = _mm256_permute2x128_si256(mVal[1], mVal[2], 0x21);
-@@ -2352,10 +2354,9 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
-
- T0 = _mm256_packs_epi32(T0, T4);
- s0 = _mm_packus_epi16(_mm256_castsi256_si128(T0), _mm256_extracti128_si256(T0, 1));
-- s1 = _mm_srli_si128(s0, 8);
-
- _mm_storel_epi64((__m128i*)(dst), s0);
-- _mm_storel_epi64((__m128i*)(dst + i_dst), s1);
-+ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(s0));
-
- r4 = _mm256_unpacklo_epi16(T8, T9);
- r9 = _mm256_unpackhi_epi16(T8, T9);
-@@ -2382,13 +2383,12 @@ void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_d
-
- T0 = _mm256_packs_epi32(T0, T4);
- s0 = _mm_packus_epi16(_mm256_castsi256_si128(T0), _mm256_extracti128_si256(T0, 1));
-- s1 = _mm_srli_si128(s0, 8);
-
-+ height -= 4;
- _mm_storel_epi64((__m128i*)(dst + i_dst * 2), s0);
-- _mm_storel_epi64((__m128i*)(dst + i_dst * 3), s1);
-+ _mm_storeh_pi((__m64*)(dst + i_dst * 3), _mm_castsi128_ps(s0));
-
- dst += i_dst << 2;
-- height -= 4;
- }
- }
- }
-@@ -2397,7 +2397,6 @@ void uavs3d_if_hor_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_
- {
- ALIGNED_32(s16 tmp_res[(128 + 7) * 16]);
- s16 *tmp = tmp_res;
-- int row;
- __m256i mVal1, mVal2, mVal;
- __m256i T0, T1, T2, T3, T4, T5, T6, T7, T8, T9;
- __m256i S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10;
-@@ -2406,6 +2405,7 @@ void uavs3d_if_hor_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_
-
- //HOR
- {
-+ int row;
- __m256i mSwitch1 = _mm256_setr_epi8(0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8);
- __m256i mSwitch2 = _mm256_setr_epi8(2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10);
- __m256i mSwitch3 = _mm256_setr_epi8(4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12);
-@@ -2421,8 +2421,9 @@ void uavs3d_if_hor_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_
- row = height + 7;
- while (row--) {
- S = _mm256_loadu_si256((__m256i*)(src));
-- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-+ src += i_src;
- S0 = _mm256_permute4x64_epi64(S, 0x94);
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-
- r0 = _mm256_shuffle_epi8(S0, mSwitch1);
- r1 = _mm256_shuffle_epi8(S0, mSwitch2);
-@@ -2438,9 +2439,8 @@ void uavs3d_if_hor_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_
- T1 = _mm256_add_epi16(T2, T3);
- sum = _mm256_add_epi16(T0, T1);
-
-- _mm256_storeu_si256((__m256i*)(tmp), sum);
-+ _mm256_store_si256((__m256i*)(tmp), sum);
-
-- src += i_src;
- tmp += 16;
- }
- }
-@@ -2603,9 +2603,9 @@ void uavs3d_if_hor_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_
- mVal = _mm256_packs_epi32(mVal1, mVal2);
- _mm_storeu_si128((__m128i*)(dst + 3 * i_dst), _mm_packus_epi16(_mm256_castsi256_si128(mVal), _mm256_extracti128_si256(mVal, 1)));
-
-+ height -= 4;
- tmp += 4 * i_tmp;
- dst += 4 * i_dst;
-- height -= 4;
- }
- }
- }
-@@ -2614,10 +2614,10 @@ void uavs3d_if_hor_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_
- {
- ALIGNED_32(s16 tmp_res[(128 + 7) * 32]);
- s16 *tmp = tmp_res;
-- int row, col;
- const int i_tmp = 32;
- //HOR
- {
-+ int row;
- __m256i mSwitch1 = _mm256_setr_epi8(0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8);
- __m256i mSwitch2 = _mm256_setr_epi8(2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10);
- __m256i mSwitch3 = _mm256_setr_epi8(4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12);
-@@ -2629,26 +2629,25 @@ void uavs3d_if_hor_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_
- __m256i mCoefy4_hor = _mm256_set1_epi16(*(s16*)(coef_x + 6));
-
- __m256i T0, T1, T2, T3, T4, T5, T6, T7;
-- __m256i S0, S1, S2, S3;
-+ __m256i S0, S1;
-
- src = src - 3 * i_src - 3;
-
- row = height + 7;
- while (row--) {
-- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S1 = _mm256_loadu_si256((__m256i*)(src + 8));
-- S2 = _mm256_insertf128_si256(S0, _mm256_castsi256_si128(S1), 0x1);
-- S3 = _mm256_insertf128_si256(S1, _mm256_extracti128_si256(S0, 1), 0x0);
--
-- T0 = _mm256_shuffle_epi8(S2, mSwitch1);
-- T1 = _mm256_shuffle_epi8(S2, mSwitch2);
-- T2 = _mm256_shuffle_epi8(S2, mSwitch3);
-- T3 = _mm256_shuffle_epi8(S2, mSwitch4);
-- T4 = _mm256_shuffle_epi8(S3, mSwitch1);
-- T5 = _mm256_shuffle_epi8(S3, mSwitch2);
-- T6 = _mm256_shuffle_epi8(S3, mSwitch3);
-- T7 = _mm256_shuffle_epi8(S3, mSwitch4);
-+ src += i_src;
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+
-+ T0 = _mm256_shuffle_epi8(S0, mSwitch1);
-+ T1 = _mm256_shuffle_epi8(S0, mSwitch2);
-+ T2 = _mm256_shuffle_epi8(S0, mSwitch3);
-+ T3 = _mm256_shuffle_epi8(S0, mSwitch4);
-+ T4 = _mm256_shuffle_epi8(S1, mSwitch1);
-+ T5 = _mm256_shuffle_epi8(S1, mSwitch2);
-+ T6 = _mm256_shuffle_epi8(S1, mSwitch3);
-+ T7 = _mm256_shuffle_epi8(S1, mSwitch4);
-
- T0 = _mm256_maddubs_epi16(T0, mCoefy1_hor);
- T1 = _mm256_maddubs_epi16(T1, mCoefy2_hor);
-@@ -2666,10 +2665,11 @@ void uavs3d_if_hor_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_
- T0 = _mm256_add_epi16(T0, T2);
- T4 = _mm256_add_epi16(T4, T6);
-
-- _mm256_storeu_si256((__m256i*)(tmp), T0);
-- _mm256_storeu_si256((__m256i*)(tmp + 16), T4);
-+ T1 = _mm256_permute2x128_si256(T0, T4, 0x20);
-+ T3 = _mm256_permute2x128_si256(T0, T4, 0x31);
-+ _mm256_store_si256((__m256i*)(tmp), T1);
-+ _mm256_store_si256((__m256i*)(tmp + 16), T3);
-
-- src += i_src;
- tmp += i_tmp;
- }
- }
-@@ -2685,8 +2685,8 @@ void uavs3d_if_hor_ver_luma_w32_avx2(const pel *src, int i_src, pel *dst, int i_
- const int i_tmp8 = 32 * 8;
- const int i_tmp9 = 32 * 9;
- const int i_tmp10 = 32 * 10;
--
-- int shift = 12;
-+ int col;
-+ const int shift = 12;
- __m256i mAddOffset = _mm256_set1_epi32(1 << 11);
- __m128i mCoefy11 = _mm_set1_epi16(*(s16*)coef_y);
- __m128i mCoefy22 = _mm_set1_epi16(*(s16*)(coef_y + 2));
-@@ -2850,7 +2850,6 @@ void uavs3d_if_hor_ver_luma_w32x_avx2(const pel *src, int i_src, pel *dst, int i
- {
- ALIGNED_32(s16 tmp_res[(128 + 7) * 128]);
- s16 *tmp = tmp_res;
-- int row, col;
- const int i_tmp = width;
- __m256i mVal1, mVal2, mVal;
- __m256i T0, T1, T2, T3, T4, T5, T6, T7, T8, T9;
-@@ -2859,6 +2858,7 @@ void uavs3d_if_hor_ver_luma_w32x_avx2(const pel *src, int i_src, pel *dst, int i
-
- //HOR
- {
-+ int row, col;
- __m256i mSwitch1 = _mm256_setr_epi8(0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8);
- __m256i mSwitch2 = _mm256_setr_epi8(2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10);
- __m256i mSwitch3 = _mm256_setr_epi8(4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12);
-@@ -2878,17 +2878,15 @@ void uavs3d_if_hor_ver_luma_w32x_avx2(const pel *src, int i_src, pel *dst, int i
- {
- S0 = _mm256_loadu_si256((__m256i*)(src + col));
- S1 = _mm256_loadu_si256((__m256i*)(src + col + 8));
-- S2 = _mm256_insertf128_si256(S0, _mm256_castsi256_si128(S1), 0x1);
-- S3 = _mm256_insertf128_si256(S1, _mm256_extracti128_si256(S0, 1), 0x0);
--
-- T0 = _mm256_shuffle_epi8(S2, mSwitch1);
-- T1 = _mm256_shuffle_epi8(S2, mSwitch2);
-- T2 = _mm256_shuffle_epi8(S2, mSwitch3);
-- T3 = _mm256_shuffle_epi8(S2, mSwitch4);
-- T4 = _mm256_shuffle_epi8(S3, mSwitch1);
-- T5 = _mm256_shuffle_epi8(S3, mSwitch2);
-- T6 = _mm256_shuffle_epi8(S3, mSwitch3);
-- T7 = _mm256_shuffle_epi8(S3, mSwitch4);
-+
-+ T0 = _mm256_shuffle_epi8(S0, mSwitch1);
-+ T1 = _mm256_shuffle_epi8(S0, mSwitch2);
-+ T2 = _mm256_shuffle_epi8(S0, mSwitch3);
-+ T3 = _mm256_shuffle_epi8(S0, mSwitch4);
-+ T4 = _mm256_shuffle_epi8(S1, mSwitch1);
-+ T5 = _mm256_shuffle_epi8(S1, mSwitch2);
-+ T6 = _mm256_shuffle_epi8(S1, mSwitch3);
-+ T7 = _mm256_shuffle_epi8(S1, mSwitch4);
-
- T0 = _mm256_maddubs_epi16(T0, mCoefy1_hor);
- T1 = _mm256_maddubs_epi16(T1, mCoefy2_hor);
-@@ -2906,8 +2904,10 @@ void uavs3d_if_hor_ver_luma_w32x_avx2(const pel *src, int i_src, pel *dst, int i
- T0 = _mm256_add_epi16(T0, T2);
- T4 = _mm256_add_epi16(T4, T6);
-
-- _mm256_storeu_si256((__m256i*)(tmp + col), T0);
-- _mm256_storeu_si256((__m256i*)(tmp + col + 16), T4);
-+ T1 = _mm256_permute2x128_si256(T0, T4, 0x20);
-+ T3 = _mm256_permute2x128_si256(T0, T4, 0x31);
-+ _mm256_store_si256((__m256i*)(tmp + col), T1);
-+ _mm256_store_si256((__m256i*)(tmp + col + 16), T3);
- }
- src += i_src;
- tmp += i_tmp;
-@@ -2927,6 +2927,7 @@ void uavs3d_if_hor_ver_luma_w32x_avx2(const pel *src, int i_src, pel *dst, int i
- const int i_tmp10 = i_tmp5 << 1;
-
- int shift = 12;
-+ int col;
- __m256i mAddOffset = _mm256_set1_epi32(1 << 11);
- __m128i mCoefy11 = _mm_set1_epi16(*(s16*)coef_y);
- __m128i mCoefy22 = _mm_set1_epi16(*(s16*)(coef_y + 2));
-@@ -3186,45 +3187,121 @@ void uavs3d_if_cpy_w128_avx2(const pel *src, int i_src, pel *dst, int i_dst, int
- }
- }
-
-+void uavs3d_if_hor_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
-+{
-+ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
-+ __m256i T0, T1, T2, T3, T4, T5;
-+ __m256i M0, M1, M2, M3, M4, M5, M6, M7;
-+ __m256i S0, S1, S2;
-+ __m256i offset = _mm256_set1_epi32(32);
-+ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
-+ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
-+ __m256i mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[0]));
-+ __m256i mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[1]));
-+ __m256i mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[2]));
-+ __m256i mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[3]));
-+ __m128i s0, s1;
-+
-+ src -= 3;
-+
-+ while (height) {
-+ T0 = _mm256_loadu_si256((__m256i*)(src));
-+ s0 = _mm_loadu_si128((__m128i*)(src + 4));
-+ T1 = _mm256_loadu_si256((__m256i*)(src + i_src));
-+ s1 = _mm_loadu_si128((__m128i*)(src + i_src + 4));
-+ height -= 2;
-+ src += i_src << 1;
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-+
-+ S0 = _mm256_permute2x128_si256(T0, T1, 0x20);
-+ S2 = _mm256_permute2x128_si256(T0, T1, 0x31);
-+ S1 = _mm256_set_m128i(s1, s0);
-+
-+ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
-+ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
-+ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
-+ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
-+ T4 = _mm256_shuffle_epi8(S2, mShuffle0);
-+ T5 = _mm256_shuffle_epi8(S2, mShuffle1);
-+
-+ M0 = _mm256_madd_epi16(T0, mCoef0);
-+ M1 = _mm256_madd_epi16(T1, mCoef1);
-+ M2 = _mm256_madd_epi16(T2, mCoef2);
-+ M3 = _mm256_madd_epi16(T3, mCoef3);
-+ M4 = _mm256_madd_epi16(T2, mCoef0);
-+ M5 = _mm256_madd_epi16(T3, mCoef1);
-+ M6 = _mm256_madd_epi16(T4, mCoef2);
-+ M7 = _mm256_madd_epi16(T5, mCoef3);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-+ M2 = _mm256_add_epi32(M4, M5);
-+ M3 = _mm256_add_epi32(M6, M7);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-+
-+ M2 = _mm256_add_epi32(M0, offset);
-+ M3 = _mm256_add_epi32(M1, offset);
-+ M2 = _mm256_srai_epi32(M2, 6);
-+ M3 = _mm256_srai_epi32(M3, 6);
-+ M2 = _mm256_packus_epi32(M2, M3);
-+ M2 = _mm256_min_epu16(M2, max_pel);
-+
-+ _mm_storeu_si128((__m128i*)(dst), _mm256_castsi256_si128(M2));
-+ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_extracti128_si256(M2, 1));
-+
-+ dst += i_dst << 1;
-+ }
-+}
-+
- void uavs3d_if_hor_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
- {
- __m256i max_pel = _mm256_set1_epi16((pel)max_val);
-- __m256i T0, T1, T2, T3, T4, T5, T6, T7;
-+ __m256i T0, T1, T2, T3, T4, T5;
- __m256i M0, M1, M2, M3, M4, M5, M6, M7;
-+ __m256i S0, S1, S2;
- __m256i offset = _mm256_set1_epi32(32);
-- s32* coef = (s32*)coeff;
-- __m128i mCoef0 = _mm_setr_epi32(coef[0], coef[1], coef[0], coef[1]);
-- __m256i mCoef = _mm256_cvtepi8_epi16(mCoef0);
-+ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
-+ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
-+ __m256i mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[0]));
-+ __m256i mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[1]));
-+ __m256i mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[2]));
-+ __m256i mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[3]));
-
- src -= 3;
-
- while (height--) {
-- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-- T0 = _mm256_loadu_si256((__m256i*)(src + 0));
-- T1 = _mm256_loadu_si256((__m256i*)(src + 1));
-- T2 = _mm256_loadu_si256((__m256i*)(src + 2));
-- T3 = _mm256_loadu_si256((__m256i*)(src + 3));
-- T4 = _mm256_loadu_si256((__m256i*)(src + 4));
-- T5 = _mm256_loadu_si256((__m256i*)(src + 5));
-- T6 = _mm256_loadu_si256((__m256i*)(src + 6));
-- T7 = _mm256_loadu_si256((__m256i*)(src + 7));
--
-- M0 = _mm256_madd_epi16(T0, mCoef);
-- M1 = _mm256_madd_epi16(T1, mCoef);
-- M2 = _mm256_madd_epi16(T2, mCoef);
-- M3 = _mm256_madd_epi16(T3, mCoef);
-- M4 = _mm256_madd_epi16(T4, mCoef);
-- M5 = _mm256_madd_epi16(T5, mCoef);
-- M6 = _mm256_madd_epi16(T6, mCoef);
-- M7 = _mm256_madd_epi16(T7, mCoef);
--
-- M0 = _mm256_hadd_epi32(M0, M1);
-- M1 = _mm256_hadd_epi32(M2, M3);
-- M2 = _mm256_hadd_epi32(M4, M5);
-- M3 = _mm256_hadd_epi32(M6, M7);
--
-- M0 = _mm256_hadd_epi32(M0, M1);
-- M1 = _mm256_hadd_epi32(M2, M3);
-+ S0 = _mm256_lddqu_si256((__m256i*)(src));
-+ S1 = _mm256_loadu_si256((__m256i*)(src + 4));
-+ S2 = _mm256_loadu_si256((__m256i*)(src + 8));
-+
-+ src += i_src;
-+ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
-+ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
-+ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
-+ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
-+ T4 = _mm256_shuffle_epi8(S2, mShuffle0);
-+ T5 = _mm256_shuffle_epi8(S2, mShuffle1);
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+
-+ M0 = _mm256_madd_epi16(T0, mCoef0);
-+ M1 = _mm256_madd_epi16(T1, mCoef1);
-+ M2 = _mm256_madd_epi16(T2, mCoef2);
-+ M3 = _mm256_madd_epi16(T3, mCoef3);
-+ M4 = _mm256_madd_epi16(T2, mCoef0);
-+ M5 = _mm256_madd_epi16(T3, mCoef1);
-+ M6 = _mm256_madd_epi16(T4, mCoef2);
-+ M7 = _mm256_madd_epi16(T5, mCoef3);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-+ M2 = _mm256_add_epi32(M4, M5);
-+ M3 = _mm256_add_epi32(M6, M7);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-
- M2 = _mm256_add_epi32(M0, offset);
- M3 = _mm256_add_epi32(M1, offset);
-@@ -3235,7 +3312,6 @@ void uavs3d_if_hor_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
-
- _mm256_storeu_si256((__m256i*)(dst), M2);
-
-- src += i_src;
- dst += i_dst;
- }
- }
-@@ -3244,12 +3320,16 @@ void uavs3d_if_hor_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_dst
- {
- int col;
- __m256i max_pel = _mm256_set1_epi16((pel)max_val);
-- __m256i T0, T1, T2, T3, T4, T5, T6, T7;
-+ __m256i T0, T1, T2, T3, T4, T5;
- __m256i M0, M1, M2, M3, M4, M5, M6, M7;
-+ __m256i S0, S1, S2;
- __m256i offset = _mm256_set1_epi32(32);
-- s32 *coef = (s32*)coeff;
-- __m128i mCoef0 = _mm_setr_epi32(coef[0], coef[1], coef[0], coef[1]);
-- __m256i mCoef = _mm256_cvtepi8_epi16(mCoef0);
-+ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
-+ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
-+ __m256i mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[0]));
-+ __m256i mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[1]));
-+ __m256i mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[2]));
-+ __m256i mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coeff)[3]));
-
- src -= 3;
-
-@@ -3258,31 +3338,33 @@ void uavs3d_if_hor_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_dst
- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
- for (col = 0; col < width; col += 16)
- {
-- T0 = _mm256_loadu_si256((__m256i*)(p_src + 0));
-- T1 = _mm256_loadu_si256((__m256i*)(p_src + 1));
-- T2 = _mm256_loadu_si256((__m256i*)(p_src + 2));
-- T3 = _mm256_loadu_si256((__m256i*)(p_src + 3));
-- T4 = _mm256_loadu_si256((__m256i*)(p_src + 4));
-- T5 = _mm256_loadu_si256((__m256i*)(p_src + 5));
-- T6 = _mm256_loadu_si256((__m256i*)(p_src + 6));
-- T7 = _mm256_loadu_si256((__m256i*)(p_src + 7));
--
-- M0 = _mm256_madd_epi16(T0, mCoef);
-- M1 = _mm256_madd_epi16(T1, mCoef);
-- M2 = _mm256_madd_epi16(T2, mCoef);
-- M3 = _mm256_madd_epi16(T3, mCoef);
-- M4 = _mm256_madd_epi16(T4, mCoef);
-- M5 = _mm256_madd_epi16(T5, mCoef);
-- M6 = _mm256_madd_epi16(T6, mCoef);
-- M7 = _mm256_madd_epi16(T7, mCoef);
--
-- M0 = _mm256_hadd_epi32(M0, M1);
-- M1 = _mm256_hadd_epi32(M2, M3);
-- M2 = _mm256_hadd_epi32(M4, M5);
-- M3 = _mm256_hadd_epi32(M6, M7);
--
-- M0 = _mm256_hadd_epi32(M0, M1);
-- M1 = _mm256_hadd_epi32(M2, M3);
-+ S0 = _mm256_loadu_si256((__m256i*)(p_src));
-+ S1 = _mm256_loadu_si256((__m256i*)(p_src + 4));
-+ S2 = _mm256_loadu_si256((__m256i*)(p_src + 8));
-+
-+ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
-+ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
-+ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
-+ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
-+ T4 = _mm256_shuffle_epi8(S2, mShuffle0);
-+ T5 = _mm256_shuffle_epi8(S2, mShuffle1);
-+
-+ M0 = _mm256_madd_epi16(T0, mCoef0);
-+ M1 = _mm256_madd_epi16(T1, mCoef1);
-+ M2 = _mm256_madd_epi16(T2, mCoef2);
-+ M3 = _mm256_madd_epi16(T3, mCoef3);
-+ M4 = _mm256_madd_epi16(T2, mCoef0);
-+ M5 = _mm256_madd_epi16(T3, mCoef1);
-+ M6 = _mm256_madd_epi16(T4, mCoef2);
-+ M7 = _mm256_madd_epi16(T5, mCoef3);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-+ M2 = _mm256_add_epi32(M4, M5);
-+ M3 = _mm256_add_epi32(M6, M7);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-
- M2 = _mm256_add_epi32(M0, offset);
- M3 = _mm256_add_epi32(M1, offset);
-@@ -3299,6 +3381,47 @@ void uavs3d_if_hor_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_dst
- }
- }
-
-+void uavs3d_if_hor_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
-+{
-+ const int offset = 32;
-+ const int shift = 6;
-+
-+ __m128i coef0 = _mm_cvtepi8_epi16(_mm_set1_epi16(((s16*)coeff)[0]));
-+ __m128i coef1 = _mm_cvtepi8_epi16(_mm_set1_epi16(((s16*)coeff)[1]));
-+ __m256i mCoef0 = _mm256_set_m128i(coef1, coef0);
-+ __m256i mCoef1 = _mm256_set_m128i(coef0, coef1);
-+ __m256i mSwitch = _mm256_setr_epi8(0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11, 0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11);
-+ __m256i mAddOffset = _mm256_set1_epi32((s16)offset);
-+ __m256i T0, T1, S0, S1;
-+ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
-+ __m128i s0;
-+
-+ src -= 2;
-+
-+ while (height--) {
-+ uavs3d_prefetch(src + i_src * 2, _MM_HINT_NTA);
-+ S0 = _mm256_loadu_si256((__m256i*)(src));
-+ s0 = _mm_loadu_si128((__m128i*)(src + 4));
-+ src += i_src;
-+ S1 = _mm256_set_m128i(s0, s0);
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ T0 = _mm256_shuffle_epi8(S0, mSwitch);
-+ T1 = _mm256_shuffle_epi8(S1, mSwitch);
-+ T0 = _mm256_madd_epi16(T0, mCoef0);
-+ T1 = _mm256_madd_epi16(T1, mCoef1);
-+ T0 = _mm256_add_epi32(T0, T1);
-+
-+ T0 = _mm256_add_epi32(T0, mAddOffset);
-+ T0 = _mm256_srai_epi32(T0, shift);
-+ T0 = _mm256_min_epu16(T0, max_pel);
-+ s0 = _mm_packus_epi32(_mm256_castsi256_si128(T0), _mm256_extracti128_si256(T0, 1));
-+
-+ _mm_storeu_si128((__m128i*)(dst), s0);
-+
-+ dst += i_dst;
-+ }
-+}
-+
- void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
- {
- const int offset = 32;
-@@ -3310,7 +3433,7 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
- __m256i mCoef1 = _mm256_cvtepi8_epi16(coef1);
- __m256i mSwitch = _mm256_setr_epi8(0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11, 0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11);
- __m256i mAddOffset = _mm256_set1_epi32((s16)offset);
-- __m256i T0, T1, T2, T3, S0, S1, S2, S3;
-+ __m256i T0, T1, T2, T3, S0, S1, S2;
- __m256i max_pel = _mm256_set1_epi16((pel)max_val);
-
- src -= 2;
-@@ -3320,15 +3443,14 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S1 = _mm256_loadu_si256((__m256i*)(src + 4));
- S2 = _mm256_loadu_si256((__m256i*)(src + 8));
-- S3 = _mm256_loadu_si256((__m256i*)(src + 12));
-- S0 = _mm256_permute4x64_epi64(S0, 0x94);
-- S1 = _mm256_permute4x64_epi64(S1, 0x94);
-- S2 = _mm256_permute4x64_epi64(S2, 0x94);
-- S3 = _mm256_permute4x64_epi64(S3, 0x94);
-- T0 = _mm256_madd_epi16(_mm256_shuffle_epi8(S0, mSwitch), mCoef0);
-- T1 = _mm256_madd_epi16(_mm256_shuffle_epi8(S1, mSwitch), mCoef1);
-- T2 = _mm256_madd_epi16(_mm256_shuffle_epi8(S2, mSwitch), mCoef0);
-- T3 = _mm256_madd_epi16(_mm256_shuffle_epi8(S3, mSwitch), mCoef1);
-+ T0 = _mm256_shuffle_epi8(S0, mSwitch);
-+ T1 = _mm256_shuffle_epi8(S1, mSwitch);
-+ T2 = _mm256_shuffle_epi8(S1, mSwitch);
-+ T3 = _mm256_shuffle_epi8(S2, mSwitch);
-+ T0 = _mm256_madd_epi16(T0, mCoef0);
-+ T1 = _mm256_madd_epi16(T1, mCoef1);
-+ T2 = _mm256_madd_epi16(T2, mCoef0);
-+ T3 = _mm256_madd_epi16(T3, mCoef1);
- T0 = _mm256_add_epi32(T0, T1);
- T2 = _mm256_add_epi32(T2, T3);
-
-@@ -3337,7 +3459,6 @@ void uavs3d_if_hor_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
- T0 = _mm256_srai_epi32(T0, shift);
- T2 = _mm256_srai_epi32(T2, shift);
- T0 = _mm256_packus_epi32(T0, T2);
-- T0 = _mm256_permute4x64_epi64(T0, 0xd8);
-
- T0 = _mm256_min_epu16(T0, max_pel);
- _mm256_storeu_si256((__m256i*)(dst), T0);
-@@ -3359,7 +3480,7 @@ void uavs3d_if_hor_chroma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_d
- __m256i mCoef1 = _mm256_cvtepi8_epi16(coef1);
- __m256i mSwitch = _mm256_setr_epi8(0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11, 0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11);
- __m256i mAddOffset = _mm256_set1_epi32((s16)offset);
-- __m256i T0, T1, T2, T3, S0, S1, S2, S3;
-+ __m256i T0, T1, T2, T3, S0, S1, S2;
- __m256i max_pel = _mm256_set1_epi16((pel)max_val);
-
- src -= 2;
-@@ -3370,15 +3491,14 @@ void uavs3d_if_hor_chroma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_d
- S0 = _mm256_loadu_si256((__m256i*)(src + col));
- S1 = _mm256_loadu_si256((__m256i*)(src + col + 4));
- S2 = _mm256_loadu_si256((__m256i*)(src + col + 8));
-- S3 = _mm256_loadu_si256((__m256i*)(src + col + 12));
-- S0 = _mm256_permute4x64_epi64(S0, 0x94);
-- S1 = _mm256_permute4x64_epi64(S1, 0x94);
-- S2 = _mm256_permute4x64_epi64(S2, 0x94);
-- S3 = _mm256_permute4x64_epi64(S3, 0x94);
-- T0 = _mm256_madd_epi16(_mm256_shuffle_epi8(S0, mSwitch), mCoef0);
-- T1 = _mm256_madd_epi16(_mm256_shuffle_epi8(S1, mSwitch), mCoef1);
-- T2 = _mm256_madd_epi16(_mm256_shuffle_epi8(S2, mSwitch), mCoef0);
-- T3 = _mm256_madd_epi16(_mm256_shuffle_epi8(S3, mSwitch), mCoef1);
-+ T0 = _mm256_shuffle_epi8(S0, mSwitch);
-+ T1 = _mm256_shuffle_epi8(S1, mSwitch);
-+ T2 = _mm256_shuffle_epi8(S1, mSwitch);
-+ T3 = _mm256_shuffle_epi8(S2, mSwitch);
-+ T0 = _mm256_madd_epi16(T0, mCoef0);
-+ T1 = _mm256_madd_epi16(T1, mCoef1);
-+ T2 = _mm256_madd_epi16(T2, mCoef0);
-+ T3 = _mm256_madd_epi16(T3, mCoef1);
- T0 = _mm256_add_epi32(T0, T1);
- T2 = _mm256_add_epi32(T2, T3);
-
-@@ -3387,9 +3507,8 @@ void uavs3d_if_hor_chroma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_d
- T0 = _mm256_srai_epi32(T0, shift);
- T2 = _mm256_srai_epi32(T2, shift);
- T0 = _mm256_packus_epi32(T0, T2);
-- T0 = _mm256_permute4x64_epi64(T0, 0xd8);
--
- T0 = _mm256_min_epu16(T0, max_pel);
-+
- _mm256_storeu_si256((__m256i*)(dst + col), T0);
- }
- src += i_src;
-@@ -3397,6 +3516,93 @@ void uavs3d_if_hor_chroma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_d
- }
- }
-
-+void uavs3d_if_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
-+{
-+ const int i_src2 = i_src * 2;
-+ const int i_src3 = i_src * 3;
-+ const int i_src4 = i_src * 4;
-+ const int i_src5 = i_src * 5;
-+ const int i_src6 = i_src * 6;
-+ const int i_src7 = i_src * 7;
-+ __m128i coeff0 = _mm_set1_epi16(*(s16*)coeff);
-+ __m128i coeff1 = _mm_set1_epi16(*(s16*)(coeff + 2));
-+ __m128i coeff2 = _mm_set1_epi16(*(s16*)(coeff + 4));
-+ __m128i coeff3 = _mm_set1_epi16(*(s16*)(coeff + 6));
-+ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
-+ __m256i mAddOffset = _mm256_set1_epi32(32);
-+ __m128i s0, s1, s2, s3, s4, s5, s6, s7, s8;
-+ __m256i T0, T1, T2, T3, T4, T5, T6, T7;
-+ __m256i N0, N1, N2, N3, N4, N5, N6, N7;
-+ __m256i coeff00 = _mm256_cvtepi8_epi16(coeff0);
-+ __m256i coeff01 = _mm256_cvtepi8_epi16(coeff1);
-+ __m256i coeff02 = _mm256_cvtepi8_epi16(coeff2);
-+ __m256i coeff03 = _mm256_cvtepi8_epi16(coeff3);
-+
-+ src -= i_src3;
-+
-+ while (height > 0) {
-+ s0 = _mm_loadu_si128((__m128i*)(src));
-+ s1 = _mm_loadu_si128((__m128i*)(src + i_src));
-+ s2 = _mm_loadu_si128((__m128i*)(src + i_src2));
-+ s3 = _mm_loadu_si128((__m128i*)(src + i_src3));
-+ s4 = _mm_loadu_si128((__m128i*)(src + i_src4));
-+ s5 = _mm_loadu_si128((__m128i*)(src + i_src5));
-+ s6 = _mm_loadu_si128((__m128i*)(src + i_src6));
-+ s7 = _mm_loadu_si128((__m128i*)(src + i_src7));
-+ s8 = _mm_loadu_si128((__m128i*)(src + (i_src << 3)));
-+
-+ height -= 2;
-+ src += i_src2;
-+ uavs3d_prefetch(src + i_src7, _MM_HINT_NTA);
-+
-+ T0 = _mm256_set_m128i(s1, s0);
-+ T1 = _mm256_set_m128i(s2, s1);
-+ T2 = _mm256_set_m128i(s3, s2);
-+ T3 = _mm256_set_m128i(s4, s3);
-+ T4 = _mm256_set_m128i(s5, s4);
-+ T5 = _mm256_set_m128i(s6, s5);
-+ T6 = _mm256_set_m128i(s7, s6);
-+ T7 = _mm256_set_m128i(s8, s7);
-+
-+ N0 = _mm256_unpacklo_epi16(T0, T1);
-+ N1 = _mm256_unpacklo_epi16(T2, T3);
-+ N2 = _mm256_unpacklo_epi16(T4, T5);
-+ N3 = _mm256_unpacklo_epi16(T6, T7);
-+ N4 = _mm256_unpackhi_epi16(T0, T1);
-+ N5 = _mm256_unpackhi_epi16(T2, T3);
-+ N6 = _mm256_unpackhi_epi16(T4, T5);
-+ N7 = _mm256_unpackhi_epi16(T6, T7);
-+
-+ N0 = _mm256_madd_epi16(N0, coeff00);
-+ N1 = _mm256_madd_epi16(N1, coeff01);
-+ N2 = _mm256_madd_epi16(N2, coeff02);
-+ N3 = _mm256_madd_epi16(N3, coeff03);
-+ N4 = _mm256_madd_epi16(N4, coeff00);
-+ N5 = _mm256_madd_epi16(N5, coeff01);
-+ N6 = _mm256_madd_epi16(N6, coeff02);
-+ N7 = _mm256_madd_epi16(N7, coeff03);
-+
-+ N0 = _mm256_add_epi32(N0, N1);
-+ N1 = _mm256_add_epi32(N2, N3);
-+ N2 = _mm256_add_epi32(N4, N5);
-+ N3 = _mm256_add_epi32(N6, N7);
-+
-+ N0 = _mm256_add_epi32(N0, N1);
-+ N1 = _mm256_add_epi32(N2, N3);
-+
-+ N0 = _mm256_add_epi32(N0, mAddOffset);
-+ N1 = _mm256_add_epi32(N1, mAddOffset);
-+ N0 = _mm256_srai_epi32(N0, 6);
-+ N1 = _mm256_srai_epi32(N1, 6);
-+ N0 = _mm256_packus_epi32(N0, N1);
-+ N0 = _mm256_min_epu16(N0, max_pel);
-+ _mm_storeu_si128((__m128i*)(dst), _mm256_castsi256_si128(N0));
-+ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_extracti128_si256(N0, 1));
-+
-+ dst += i_dst << 1;
-+ }
-+}
-+
- void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coeff, int max_val)
- {
- const int i_src2 = i_src * 2;
-@@ -3412,7 +3618,6 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- __m256i max_pel = _mm256_set1_epi16((pel)max_val);
- __m256i mAddOffset = _mm256_set1_epi32(32);
- __m256i T0, T1, T2, T3, T4, T5, T6, T7;
-- __m256i M0, M1, M2, M3, M4, M5, M6, M7;
- __m256i N0, N1, N2, N3, N4, N5, N6, N7;
- __m256i coeff00 = _mm256_cvtepi8_epi16(coeff0);
- __m256i coeff01 = _mm256_cvtepi8_epi16(coeff1);
-@@ -3422,7 +3627,6 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- src -= 3 * i_src;
-
- while (height--) {
-- uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
- T0 = _mm256_loadu_si256((__m256i*)(src));
- T1 = _mm256_loadu_si256((__m256i*)(src + i_src));
- T2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
-@@ -3431,24 +3635,25 @@ void uavs3d_if_ver_luma_w16_avx2(const pel *src, int i_src, pel *dst, int i_dst,
- T5 = _mm256_loadu_si256((__m256i*)(src + i_src5));
- T6 = _mm256_loadu_si256((__m256i*)(src + i_src6));
- T7 = _mm256_loadu_si256((__m256i*)(src + i_src7));
-+ uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
-
-- M0 = _mm256_unpacklo_epi16(T0, T1);
-- M1 = _mm256_unpacklo_epi16(T2, T3);
-- M2 = _mm256_unpacklo_epi16(T4, T5);
-- M3 = _mm256_unpacklo_epi16(T6, T7);
-- M4 = _mm256_unpackhi_epi16(T0, T1);
-- M5 = _mm256_unpackhi_epi16(T2, T3);
-- M6 = _mm256_unpackhi_epi16(T4, T5);
-- M7 = _mm256_unpackhi_epi16(T6, T7);
--
-- N0 = _mm256_madd_epi16(M0, coeff00);
-- N1 = _mm256_madd_epi16(M1, coeff01);
-- N2 = _mm256_madd_epi16(M2, coeff02);
-- N3 = _mm256_madd_epi16(M3, coeff03);
-- N4 = _mm256_madd_epi16(M4, coeff00);
-- N5 = _mm256_madd_epi16(M5, coeff01);
-- N6 = _mm256_madd_epi16(M6, coeff02);
-- N7 = _mm256_madd_epi16(M7, coeff03);
-+ N0 = _mm256_unpacklo_epi16(T0, T1);
-+ N1 = _mm256_unpacklo_epi16(T2, T3);
-+ N2 = _mm256_unpacklo_epi16(T4, T5);
-+ N3 = _mm256_unpacklo_epi16(T6, T7);
-+ N4 = _mm256_unpackhi_epi16(T0, T1);
-+ N5 = _mm256_unpackhi_epi16(T2, T3);
-+ N6 = _mm256_unpackhi_epi16(T4, T5);
-+ N7 = _mm256_unpackhi_epi16(T6, T7);
-+
-+ N0 = _mm256_madd_epi16(N0, coeff00);
-+ N1 = _mm256_madd_epi16(N1, coeff01);
-+ N2 = _mm256_madd_epi16(N2, coeff02);
-+ N3 = _mm256_madd_epi16(N3, coeff03);
-+ N4 = _mm256_madd_epi16(N4, coeff00);
-+ N5 = _mm256_madd_epi16(N5, coeff01);
-+ N6 = _mm256_madd_epi16(N6, coeff02);
-+ N7 = _mm256_madd_epi16(N7, coeff03);
-
- N0 = _mm256_add_epi32(N0, N1);
- N1 = _mm256_add_epi32(N2, N3);
-@@ -3568,20 +3773,23 @@ void uavs3d_if_ver_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
-
- while (height) {
- __m256i S0, S1, S2, S3, S4;
-- uavs3d_prefetch(src + 5 * i_src, _MM_HINT_NTA);
-- uavs3d_prefetch(src + 6 * i_src, _MM_HINT_NTA);
-- height -= 2;
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
- S2 = _mm256_loadu_si256((__m256i*)(src + i_src2));
- S3 = _mm256_loadu_si256((__m256i*)(src + i_src3));
- S4 = _mm256_loadu_si256((__m256i*)(src + i_src4));
-
-+ height -= 2;
-+ src += i_src2;
-+
- T0 = _mm256_unpacklo_epi16(S0, S1);
- T1 = _mm256_unpackhi_epi16(S0, S1);
- T2 = _mm256_unpacklo_epi16(S2, S3);
- T3 = _mm256_unpackhi_epi16(S2, S3);
-
-+ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src4, _MM_HINT_NTA);
-+
- T0 = _mm256_madd_epi16(T0, coeff0);
- T1 = _mm256_madd_epi16(T1, coeff0);
- T2 = _mm256_madd_epi16(T2, coeff1);
-@@ -3621,7 +3829,6 @@ void uavs3d_if_ver_chroma_w16_avx2(const pel *src, int i_src, pel *dst, int i_ds
- mVal1 = _mm256_min_epu16(mVal1, max_pel);
- _mm256_storeu_si256((__m256i*)(dst + i_dst), mVal1);
-
-- src += 2 * i_src;
- dst += 2 * i_dst;
- }
- }
-@@ -3645,9 +3852,6 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
- src -= i_src;
-
- while (height) {
-- uavs3d_prefetch(src + 5 * i_src, _MM_HINT_NTA);
-- uavs3d_prefetch(src + 6 * i_src, _MM_HINT_NTA);
-- height -= 2;
- S0 = _mm256_loadu_si256((__m256i*)(src));
- S5 = _mm256_loadu_si256((__m256i*)(src + 16));
- S1 = _mm256_loadu_si256((__m256i*)(src + i_src));
-@@ -3659,6 +3863,9 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
- S4 = _mm256_loadu_si256((__m256i*)(src + i_src4));
- S9 = _mm256_loadu_si256((__m256i*)(src + i_src4 + 16));
-
-+ height -= 2;
-+ src += i_src2;
-+
- T0 = _mm256_unpacklo_epi16(S0, S1);
- T1 = _mm256_unpackhi_epi16(S0, S1);
- T2 = _mm256_unpacklo_epi16(S2, S3);
-@@ -3668,6 +3875,9 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
- T6 = _mm256_unpacklo_epi16(S7, S8);
- T7 = _mm256_unpackhi_epi16(S7, S8);
-
-+ uavs3d_prefetch(src + i_src3, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src4, _MM_HINT_NTA);
-+
- T0 = _mm256_madd_epi16(T0, coeff0);
- T1 = _mm256_madd_epi16(T1, coeff0);
- T2 = _mm256_madd_epi16(T2, coeff1);
-@@ -3738,7 +3948,6 @@ void uavs3d_if_ver_chroma_w32_avx2(const pel *src, int i_src, pel *dst, int i_ds
- _mm256_storeu_si256((__m256i*)(dst + i_dst), T0);
- _mm256_storeu_si256((__m256i*)(dst + i_dst + 16), T2);
-
-- src += 2 * i_src;
- dst += 2 * i_dst;
- }
- }
-@@ -3820,22 +4029,18 @@ void uavs3d_if_ver_chroma_w32x_avx2(const pel *src, int i_src, pel *dst, int i_d
- }
- }
-
--void uavs3d_if_hor_ver_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
-+void uavs3d_if_hor_ver_luma_w4_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
- {
-- ALIGNED_32(s16 tmp_res[(128 + 7) * 128]);
-+ ALIGNED_32(s16 tmp_res[(32 + 7) * 4]);
- s16 *tmp = tmp_res;
-- int row, i;;
-+ int row;
- int add1, shift1;
- int add2, shift2;
-- __m128i mCoef0;
-- __m256i mCoef, offset;
-- __m256i T0, T1, T2, T3, T4, T5, T6, T7;
-- __m256i M0, M1, M2, M3, M4, M5, M6, M7;
-- __m256i N0, N1, N2, N3, N4, N5, N6, N7;
-- int i_tmp = width;
-- s32 * coef;
-- __m128i coeff0, coeff1, coeff2, coeff3;
-- __m256i coeff00, coeff01, coeff02, coeff03;
-+ __m256i offset;
-+ __m256i T0, T1, T2, T3;
-+ __m256i M0, M1, M2, M3;
-+ const int i_tmp = 4;
-+ __m256i mCoef0, mCoef1, mCoef2, mCoef3;
- __m256i max_pel = _mm256_set1_epi16((pel)max_val);
-
- if (max_val == 255) { // 8 bit_depth
-@@ -3851,80 +4056,311 @@ void uavs3d_if_hor_ver_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i
- add2 = 1 << (shift2 - 1);
-
- src += -3 * i_src - 3;
-- coef = (s32*)coef_x;
-- mCoef0 = _mm_setr_epi32(coef[0], coef[1], coef[0], coef[1]);
-- mCoef = _mm256_cvtepi8_epi16(mCoef0);
-- offset = _mm256_set1_epi32(add1);
-
-- row = height + 7;
-+ {
-+ __m128i s0, s1, s2, s3;
-+ __m256i S0, S1;
-+ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
-+ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
-+
-+ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[0]));
-+ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[1]));
-+ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[2]));
-+ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[3]));
-+ offset = _mm256_set1_epi32(add1);
-+
-+ row = height + 6;
-+
-+ while (row > 0) {
-+ s0 = _mm_loadu_si128((__m128i*)(src));
-+ s1 = _mm_loadu_si128((__m128i*)(src + 4));
-+ s2 = _mm_loadu_si128((__m128i*)(src + i_src));
-+ s3 = _mm_loadu_si128((__m128i*)(src + i_src + 4));
-+ row -= 2;
-+ src += i_src << 1;
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-
-- while (row--) {
-- const pel *p = src;
-- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-- for (i = 0; i < width; i += 16) {
-+ S0 = _mm256_set_m128i(s2, s0);
-+ S1 = _mm256_set_m128i(s3, s1);
-+
-+ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
-+ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
-+ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
-+ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
-
-- T0 = _mm256_loadu_si256((__m256i*)p++);
-- T1 = _mm256_loadu_si256((__m256i*)p++);
-- T2 = _mm256_loadu_si256((__m256i*)p++);
-- T3 = _mm256_loadu_si256((__m256i*)p++);
-- T4 = _mm256_loadu_si256((__m256i*)p++);
-- T5 = _mm256_loadu_si256((__m256i*)p++);
-- T6 = _mm256_loadu_si256((__m256i*)p++);
-- T7 = _mm256_loadu_si256((__m256i*)p++);
--
-- M0 = _mm256_madd_epi16(T0, mCoef);
-- M1 = _mm256_madd_epi16(T1, mCoef);
-- M2 = _mm256_madd_epi16(T2, mCoef);
-- M3 = _mm256_madd_epi16(T3, mCoef);
-- M4 = _mm256_madd_epi16(T4, mCoef);
-- M5 = _mm256_madd_epi16(T5, mCoef);
-- M6 = _mm256_madd_epi16(T6, mCoef);
-- M7 = _mm256_madd_epi16(T7, mCoef);
--
-- M0 = _mm256_hadd_epi32(M0, M1);
-- M1 = _mm256_hadd_epi32(M2, M3);
-- M2 = _mm256_hadd_epi32(M4, M5);
-- M3 = _mm256_hadd_epi32(M6, M7);
--
-- M0 = _mm256_hadd_epi32(M0, M1);
-- M1 = _mm256_hadd_epi32(M2, M3);
-+ M0 = _mm256_madd_epi16(T0, mCoef0);
-+ M1 = _mm256_madd_epi16(T1, mCoef1);
-+ M2 = _mm256_madd_epi16(T2, mCoef2);
-+ M3 = _mm256_madd_epi16(T3, mCoef3);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+
-+ M2 = _mm256_add_epi32(M0, offset);
-+ M2 = _mm256_srai_epi32(M2, shift1);
-+
-+ s0 = _mm_packs_epi32(_mm256_castsi256_si128(M2), _mm256_extracti128_si256(M2, 1));
-+ _mm_store_si128((__m128i*)(tmp), s0);
-+
-+ tmp += i_tmp * 2;
-+ }
-+ {
-+ // the last row
-+ __m128i t0, t1, t2, t3;
-+ __m128i m0, m1, m2, m3;
-+ s0 = _mm_loadu_si128((__m128i*)(src));
-+ s1 = _mm_loadu_si128((__m128i*)(src + 4));
-+ src += i_src;
-+
-+ t0 = _mm_shuffle_epi8(s0, _mm256_castsi256_si128(mShuffle0));
-+ t1 = _mm_shuffle_epi8(s0, _mm256_castsi256_si128(mShuffle1));
-+ t2 = _mm_shuffle_epi8(s1, _mm256_castsi256_si128(mShuffle0));
-+ t3 = _mm_shuffle_epi8(s1, _mm256_castsi256_si128(mShuffle1));
-+
-+ m0 = _mm_madd_epi16(t0, _mm256_castsi256_si128(mCoef0));
-+ m1 = _mm_madd_epi16(t1, _mm256_castsi256_si128(mCoef1));
-+ m2 = _mm_madd_epi16(t2, _mm256_castsi256_si128(mCoef2));
-+ m3 = _mm_madd_epi16(t3, _mm256_castsi256_si128(mCoef3));
-+
-+ m0 = _mm_add_epi32(m0, m1);
-+ m1 = _mm_add_epi32(m2, m3);
-+
-+ m0 = _mm_add_epi32(m0, m1);
-+
-+ m0 = _mm_add_epi32(m0, _mm256_castsi256_si128(offset));
-+ m0 = _mm_srai_epi32(m0, shift1);
-+ m0 = _mm_packs_epi32(m0, m0);
-+ _mm_storel_epi64((__m128i*)tmp, m0);
-+ }
-+ }
-+
-+ {
-+ __m256i T4, T5, T6, T7, M4, M5, M6, M7;
-+ __m128i d0, d1;
-+
-+ offset = _mm256_set1_epi32(add2);
-+ tmp = tmp_res;
-+
-+ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[0]));
-+ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[1]));
-+ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[2]));
-+ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[3]));
-+
-+ while (height > 0) {
-+ T0 = _mm256_load_si256((__m256i*)(tmp));
-+ T1 = _mm256_loadu_si256((__m256i*)(tmp + i_tmp));
-+ T2 = _mm256_loadu_si256((__m256i*)(tmp + 2 * i_tmp));
-+ T3 = _mm256_loadu_si256((__m256i*)(tmp + 3 * i_tmp));
-+ T4 = _mm256_load_si256((__m256i*)(tmp + 4 * i_tmp));
-+ T5 = _mm256_loadu_si256((__m256i*)(tmp + 5 * i_tmp));
-+ T6 = _mm256_loadu_si256((__m256i*)(tmp + 6 * i_tmp));
-+ T7 = _mm256_loadu_si256((__m256i*)(tmp + 7 * i_tmp));
-+ height -= 4;
-+ tmp += i_tmp * 4;
-+
-+ M0 = _mm256_unpacklo_epi16(T0, T1);
-+ M1 = _mm256_unpacklo_epi16(T2, T3);
-+ M2 = _mm256_unpacklo_epi16(T4, T5);
-+ M3 = _mm256_unpacklo_epi16(T6, T7);
-+ M4 = _mm256_unpackhi_epi16(T0, T1);
-+ M5 = _mm256_unpackhi_epi16(T2, T3);
-+ M6 = _mm256_unpackhi_epi16(T4, T5);
-+ M7 = _mm256_unpackhi_epi16(T6, T7);
-+
-+ M0 = _mm256_madd_epi16(M0, mCoef0);
-+ M1 = _mm256_madd_epi16(M1, mCoef1);
-+ M2 = _mm256_madd_epi16(M2, mCoef2);
-+ M3 = _mm256_madd_epi16(M3, mCoef3);
-+ M4 = _mm256_madd_epi16(M4, mCoef0);
-+ M5 = _mm256_madd_epi16(M5, mCoef1);
-+ M6 = _mm256_madd_epi16(M6, mCoef2);
-+ M7 = _mm256_madd_epi16(M7, mCoef3);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-+ M2 = _mm256_add_epi32(M4, M5);
-+ M3 = _mm256_add_epi32(M6, M7);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-+
-+ M0 = _mm256_add_epi32(M0, offset);
-+ M1 = _mm256_add_epi32(M1, offset);
-+ M0 = _mm256_srai_epi32(M0, shift2);
-+ M1 = _mm256_srai_epi32(M1, shift2);
-+ M0 = _mm256_packus_epi32(M0, M1);
-+ M0 = _mm256_min_epu16(M0, max_pel);
-+
-+ d0 = _mm256_castsi256_si128(M0);
-+ d1 = _mm256_extracti128_si256(M0, 1);
-+ _mm_storel_epi64((__m128i*)(dst), d0);
-+ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(d0));
-+ _mm_storel_epi64((__m128i*)(dst + (i_dst << 1)), d1);
-+ _mm_storeh_pi((__m64*)(dst + i_dst * 3), _mm_castsi128_ps(d1));
-+
-+ dst += i_dst << 2;
-+ }
-+ }
-+}
-+
-+void uavs3d_if_hor_ver_luma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
-+{
-+ ALIGNED_32(s16 tmp_res[(64 + 7) * 8]);
-+ s16 *tmp = tmp_res;
-+ int row;
-+ int add1, shift1;
-+ int add2, shift2;
-+ __m256i offset;
-+ __m256i T0, T1, T2, T3, T4, T5;
-+ __m256i M0, M1, M2, M3, M4, M5, M6, M7;
-+ const int i_tmp = 8;
-+ __m256i mCoef0, mCoef1, mCoef2, mCoef3;
-+ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
-+
-+ if (max_val == 255) { // 8 bit_depth
-+ shift1 = 0;
-+ shift2 = 12;
-+ }
-+ else { // 10 bit_depth
-+ shift1 = 2;
-+ shift2 = 10;
-+ }
-+
-+ add1 = (1 << (shift1)) >> 1;
-+ add2 = 1 << (shift2 - 1);
-+
-+ src += -3 * i_src - 3;
-+
-+ {
-+ __m128i s0, s1;
-+ __m256i S0, S1, S2;
-+ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
-+ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
-+
-+ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[0]));
-+ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[1]));
-+ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[2]));
-+ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[3]));
-+ offset = _mm256_set1_epi32(add1);
-+
-+ row = height + 6;
-+
-+ while (row > 0) {
-+ T0 = _mm256_loadu_si256((__m256i*)(src));
-+ s0 = _mm_loadu_si128((__m128i*)(src + 4));
-+ T1 = _mm256_loadu_si256((__m256i*)(src + i_src));
-+ s1 = _mm_loadu_si128((__m128i*)(src + i_src + 4));
-+ row -= 2;
-+ src += i_src << 1;
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-+
-+ S0 = _mm256_permute2x128_si256(T0, T1, 0x20);
-+ S2 = _mm256_permute2x128_si256(T0, T1, 0x31);
-+ S1 = _mm256_set_m128i(s1, s0);
-+
-+ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
-+ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
-+ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
-+ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
-+ T4 = _mm256_shuffle_epi8(S2, mShuffle0);
-+ T5 = _mm256_shuffle_epi8(S2, mShuffle1);
-+
-+ M0 = _mm256_madd_epi16(T0, mCoef0);
-+ M1 = _mm256_madd_epi16(T1, mCoef1);
-+ M2 = _mm256_madd_epi16(T2, mCoef2);
-+ M3 = _mm256_madd_epi16(T3, mCoef3);
-+ M4 = _mm256_madd_epi16(T2, mCoef0);
-+ M5 = _mm256_madd_epi16(T3, mCoef1);
-+ M6 = _mm256_madd_epi16(T4, mCoef2);
-+ M7 = _mm256_madd_epi16(T5, mCoef3);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-+ M2 = _mm256_add_epi32(M4, M5);
-+ M3 = _mm256_add_epi32(M6, M7);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-
- M2 = _mm256_add_epi32(M0, offset);
- M3 = _mm256_add_epi32(M1, offset);
- M2 = _mm256_srai_epi32(M2, shift1);
- M3 = _mm256_srai_epi32(M3, shift1);
- M2 = _mm256_packs_epi32(M2, M3);
-- _mm256_storeu_si256((__m256i*)(tmp + i), M2);
-
-- p += 8;
-+ _mm256_store_si256((__m256i*)(tmp), M2);
-+
-+ tmp += i_tmp * 2;
-+ }
-+ {
-+ // the last row
-+ __m128i t0, t1, t2, t3, t4, t5;
-+ __m128i m0, m1, m2, m3, m4, m5, m6, m7;
-+ __m128i s2;
-+ s0 = _mm_loadu_si128((__m128i*)(src));
-+ s1 = _mm_loadu_si128((__m128i*)(src + 4));
-+ s2 = _mm_loadu_si128((__m128i*)(src + 8));
-+ src += i_src;
-+
-+ t0 = _mm_shuffle_epi8(s0, _mm256_castsi256_si128(mShuffle0));
-+ t1 = _mm_shuffle_epi8(s0, _mm256_castsi256_si128(mShuffle1));
-+ t2 = _mm_shuffle_epi8(s1, _mm256_castsi256_si128(mShuffle0));
-+ t3 = _mm_shuffle_epi8(s1, _mm256_castsi256_si128(mShuffle1));
-+ t4 = _mm_shuffle_epi8(s2, _mm256_castsi256_si128(mShuffle0));
-+ t5 = _mm_shuffle_epi8(s2, _mm256_castsi256_si128(mShuffle1));
-+
-+ m0 = _mm_madd_epi16(t0, _mm256_castsi256_si128(mCoef0));
-+ m1 = _mm_madd_epi16(t1, _mm256_castsi256_si128(mCoef1));
-+ m2 = _mm_madd_epi16(t2, _mm256_castsi256_si128(mCoef2));
-+ m3 = _mm_madd_epi16(t3, _mm256_castsi256_si128(mCoef3));
-+ m4 = _mm_madd_epi16(t2, _mm256_castsi256_si128(mCoef0));
-+ m5 = _mm_madd_epi16(t3, _mm256_castsi256_si128(mCoef1));
-+ m6 = _mm_madd_epi16(t4, _mm256_castsi256_si128(mCoef2));
-+ m7 = _mm_madd_epi16(t5, _mm256_castsi256_si128(mCoef3));
-+
-+ m0 = _mm_add_epi32(m0, m1);
-+ m1 = _mm_add_epi32(m2, m3);
-+ m2 = _mm_add_epi32(m4, m5);
-+ m3 = _mm_add_epi32(m6, m7);
-+
-+ m0 = _mm_add_epi32(m0, m1);
-+ m1 = _mm_add_epi32(m2, m3);
-+
-+ m2 = _mm_add_epi32(m0, _mm256_castsi256_si128(offset));
-+ m3 = _mm_add_epi32(m1, _mm256_castsi256_si128(offset));
-+ m2 = _mm_srai_epi32(m2, shift1);
-+ m3 = _mm_srai_epi32(m3, shift1);
-+ m2 = _mm_packs_epi32(m2, m3);
-+ _mm_store_si128((__m128i*)tmp, m2);
- }
-- tmp += i_tmp;
-- src += i_src;
- }
-
-- offset = _mm256_set1_epi32(add2);
-- tmp = tmp_res;
-+ {
-+ __m256i N0, N1, N2, N3, N4, N5, N6, N7;
-+ __m256i T6, T7;
-+ offset = _mm256_set1_epi32(add2);
-+ tmp = tmp_res;
-
-- coeff0 = _mm_set1_epi16(*(s16*)(coef_y));
-- coeff1 = _mm_set1_epi16(*(s16*)(coef_y + 2));
-- coeff2 = _mm_set1_epi16(*(s16*)(coef_y + 4));
-- coeff3 = _mm_set1_epi16(*(s16*)(coef_y + 6));
-- coeff00 = _mm256_cvtepi8_epi16(coeff0);
-- coeff01 = _mm256_cvtepi8_epi16(coeff1);
-- coeff02 = _mm256_cvtepi8_epi16(coeff2);
-- coeff03 = _mm256_cvtepi8_epi16(coeff3);
-+ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[0]));
-+ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[1]));
-+ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[2]));
-+ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[3]));
-
-- while (height--) {
-- const pel *p = (pel*)tmp;
-- for (i = 0; i < width; i += 16) {
-- T0 = _mm256_load_si256((__m256i*)(p));
-- T1 = _mm256_load_si256((__m256i*)(p + i_tmp));
-- T2 = _mm256_load_si256((__m256i*)(p + 2 * i_tmp));
-- T3 = _mm256_load_si256((__m256i*)(p + 3 * i_tmp));
-- T4 = _mm256_load_si256((__m256i*)(p + 4 * i_tmp));
-- T5 = _mm256_load_si256((__m256i*)(p + 5 * i_tmp));
-- T6 = _mm256_load_si256((__m256i*)(p + 6 * i_tmp));
-- T7 = _mm256_load_si256((__m256i*)(p + 7 * i_tmp));
-+ while (height > 0) {
-+ T0 = _mm256_load_si256((__m256i*)(tmp));
-+ T1 = _mm256_loadu_si256((__m256i*)(tmp + i_tmp));
-+ T2 = _mm256_load_si256((__m256i*)(tmp + 2 * i_tmp));
-+ T3 = _mm256_loadu_si256((__m256i*)(tmp + 3 * i_tmp));
-+ T4 = _mm256_load_si256((__m256i*)(tmp + 4 * i_tmp));
-+ T5 = _mm256_loadu_si256((__m256i*)(tmp + 5 * i_tmp));
-+ T6 = _mm256_load_si256((__m256i*)(tmp + 6 * i_tmp));
-+ T7 = _mm256_loadu_si256((__m256i*)(tmp + 7 * i_tmp));
-+ height -= 2;
-+ tmp += i_tmp * 2;
-
- M0 = _mm256_unpacklo_epi16(T0, T1);
- M1 = _mm256_unpacklo_epi16(T2, T3);
-@@ -3935,14 +4371,14 @@ void uavs3d_if_hor_ver_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i
- M6 = _mm256_unpackhi_epi16(T4, T5);
- M7 = _mm256_unpackhi_epi16(T6, T7);
-
-- N0 = _mm256_madd_epi16(M0, coeff00);
-- N1 = _mm256_madd_epi16(M1, coeff01);
-- N2 = _mm256_madd_epi16(M2, coeff02);
-- N3 = _mm256_madd_epi16(M3, coeff03);
-- N4 = _mm256_madd_epi16(M4, coeff00);
-- N5 = _mm256_madd_epi16(M5, coeff01);
-- N6 = _mm256_madd_epi16(M6, coeff02);
-- N7 = _mm256_madd_epi16(M7, coeff03);
-+ N0 = _mm256_madd_epi16(M0, mCoef0);
-+ N1 = _mm256_madd_epi16(M1, mCoef1);
-+ N2 = _mm256_madd_epi16(M2, mCoef2);
-+ N3 = _mm256_madd_epi16(M3, mCoef3);
-+ N4 = _mm256_madd_epi16(M4, mCoef0);
-+ N5 = _mm256_madd_epi16(M5, mCoef1);
-+ N6 = _mm256_madd_epi16(M6, mCoef2);
-+ N7 = _mm256_madd_epi16(M7, mCoef3);
-
- N0 = _mm256_add_epi32(N0, N1);
- N1 = _mm256_add_epi32(N2, N3);
-@@ -3958,14 +4394,164 @@ void uavs3d_if_hor_ver_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i
- N1 = _mm256_srai_epi32(N1, shift2);
- N0 = _mm256_packus_epi32(N0, N1);
- N0 = _mm256_min_epu16(N0, max_pel);
-- _mm256_storeu_si256((__m256i*)(dst + i), N0);
-
-- p += 16;
-+ _mm_storeu_si128((__m128i*)(dst), _mm256_castsi256_si128(N0));
-+ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_extracti128_si256(N0, 1));
-+
-+ dst += i_dst << 1;
- }
-- dst += i_dst;
-- tmp += i_tmp;
-+ }
-+}
-+
-+void uavs3d_if_hor_ver_luma_w16x_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
-+{
-+ ALIGNED_32(s16 tmp_res[(128 + 7) * 128]);
-+ s16 *tmp = tmp_res;
-+ int row, i;;
-+ int add1, shift1;
-+ int add2, shift2;
-+ __m256i offset;
-+ __m256i T0, T1, T2, T3, T4, T5;
-+ __m256i M0, M1, M2, M3, M4, M5, M6, M7;
-+ int i_tmp = width;
-+ __m256i mCoef0, mCoef1, mCoef2, mCoef3;
-+ __m256i max_pel = _mm256_set1_epi16((pel)max_val);
-+
-+ if (max_val == 255) { // 8 bit_depth
-+ shift1 = 0;
-+ shift2 = 12;
-+ }
-+ else { // 10 bit_depth
-+ shift1 = 2;
-+ shift2 = 10;
- }
-
-+ add1 = (1 << (shift1)) >> 1;
-+ add2 = 1 << (shift2 - 1);
-+
-+ src += -3 * i_src - 3;
-+
-+ {
-+ __m256i S0, S1, S2;
-+ __m256i mShuffle0 = _mm256_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
-+ __m256i mShuffle1 = _mm256_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13, 4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
-+
-+ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[0]));
-+ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[1]));
-+ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[2]));
-+ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_x)[3]));
-+ offset = _mm256_set1_epi32(add1);
-+
-+ row = height + 7;
-+
-+ while (row--) {
-+ const pel *p = src;
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-+ for (i = 0; i < width; i += 16) {
-+ S0 = _mm256_loadu_si256((__m256i*)(p));
-+ S1 = _mm256_loadu_si256((__m256i*)(p + 4));
-+ S2 = _mm256_loadu_si256((__m256i*)(p + 8));
-+
-+ T0 = _mm256_shuffle_epi8(S0, mShuffle0);
-+ T1 = _mm256_shuffle_epi8(S0, mShuffle1);
-+ T2 = _mm256_shuffle_epi8(S1, mShuffle0);
-+ T3 = _mm256_shuffle_epi8(S1, mShuffle1);
-+ T4 = _mm256_shuffle_epi8(S2, mShuffle0);
-+ T5 = _mm256_shuffle_epi8(S2, mShuffle1);
-+
-+ M0 = _mm256_madd_epi16(T0, mCoef0);
-+ M1 = _mm256_madd_epi16(T1, mCoef1);
-+ M2 = _mm256_madd_epi16(T2, mCoef2);
-+ M3 = _mm256_madd_epi16(T3, mCoef3);
-+ M4 = _mm256_madd_epi16(T2, mCoef0);
-+ M5 = _mm256_madd_epi16(T3, mCoef1);
-+ M6 = _mm256_madd_epi16(T4, mCoef2);
-+ M7 = _mm256_madd_epi16(T5, mCoef3);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-+ M2 = _mm256_add_epi32(M4, M5);
-+ M3 = _mm256_add_epi32(M6, M7);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M1 = _mm256_add_epi32(M2, M3);
-+
-+ p += 16;
-+ M2 = _mm256_add_epi32(M0, offset);
-+ M3 = _mm256_add_epi32(M1, offset);
-+ M2 = _mm256_srai_epi32(M2, shift1);
-+ M3 = _mm256_srai_epi32(M3, shift1);
-+ M2 = _mm256_packs_epi32(M2, M3);
-+ _mm256_storeu_si256((__m256i*)(tmp + i), M2);
-+ }
-+ tmp += i_tmp;
-+ src += i_src;
-+ }
-+ }
-+
-+ {
-+ __m256i N0, N1, N2, N3, N4, N5, N6, N7;
-+ __m256i T6, T7;
-+ offset = _mm256_set1_epi32(add2);
-+ tmp = tmp_res;
-+
-+ mCoef0 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[0]));
-+ mCoef1 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[1]));
-+ mCoef2 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[2]));
-+ mCoef3 = _mm256_cvtepi8_epi16(_mm_set1_epi16(((short*)coef_y)[3]));
-+
-+ while (height--) {
-+ const pel *p = (pel*)tmp;
-+ for (i = 0; i < width; i += 16) {
-+ T0 = _mm256_load_si256((__m256i*)(p));
-+ T1 = _mm256_load_si256((__m256i*)(p + i_tmp));
-+ T2 = _mm256_load_si256((__m256i*)(p + 2 * i_tmp));
-+ T3 = _mm256_load_si256((__m256i*)(p + 3 * i_tmp));
-+ T4 = _mm256_load_si256((__m256i*)(p + 4 * i_tmp));
-+ T5 = _mm256_load_si256((__m256i*)(p + 5 * i_tmp));
-+ T6 = _mm256_load_si256((__m256i*)(p + 6 * i_tmp));
-+ T7 = _mm256_load_si256((__m256i*)(p + 7 * i_tmp));
-+
-+ M0 = _mm256_unpacklo_epi16(T0, T1);
-+ M1 = _mm256_unpacklo_epi16(T2, T3);
-+ M2 = _mm256_unpacklo_epi16(T4, T5);
-+ M3 = _mm256_unpacklo_epi16(T6, T7);
-+ M4 = _mm256_unpackhi_epi16(T0, T1);
-+ M5 = _mm256_unpackhi_epi16(T2, T3);
-+ M6 = _mm256_unpackhi_epi16(T4, T5);
-+ M7 = _mm256_unpackhi_epi16(T6, T7);
-+
-+ N0 = _mm256_madd_epi16(M0, mCoef0);
-+ N1 = _mm256_madd_epi16(M1, mCoef1);
-+ N2 = _mm256_madd_epi16(M2, mCoef2);
-+ N3 = _mm256_madd_epi16(M3, mCoef3);
-+ N4 = _mm256_madd_epi16(M4, mCoef0);
-+ N5 = _mm256_madd_epi16(M5, mCoef1);
-+ N6 = _mm256_madd_epi16(M6, mCoef2);
-+ N7 = _mm256_madd_epi16(M7, mCoef3);
-+
-+ N0 = _mm256_add_epi32(N0, N1);
-+ N1 = _mm256_add_epi32(N2, N3);
-+ N2 = _mm256_add_epi32(N4, N5);
-+ N3 = _mm256_add_epi32(N6, N7);
-+
-+ N0 = _mm256_add_epi32(N0, N1);
-+ N1 = _mm256_add_epi32(N2, N3);
-+
-+ N0 = _mm256_add_epi32(N0, offset);
-+ N1 = _mm256_add_epi32(N1, offset);
-+ N0 = _mm256_srai_epi32(N0, shift2);
-+ N1 = _mm256_srai_epi32(N1, shift2);
-+ N0 = _mm256_packus_epi32(N0, N1);
-+ N0 = _mm256_min_epu16(N0, max_pel);
-+ _mm256_storeu_si256((__m256i*)(dst + i), N0);
-+
-+ p += 16;
-+ }
-+ dst += i_dst;
-+ tmp += i_tmp;
-+ }
-+ }
- }
-
- void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i_dst, int width, int height, const s8 *coef_x, const s8 *coef_y, int max_val)
-@@ -3979,14 +4565,6 @@ void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i
- int shift1, shift2;
- int add1, add2;
-
-- __m128i coef0 = _mm_set1_epi16(*(s16*)coef_x);
-- __m128i coef1 = _mm_set1_epi16(*(s16*)(coef_x + 2));
-- __m256i mCoef0 = _mm256_cvtepi8_epi16(coef0);
-- __m256i mCoef1 = _mm256_cvtepi8_epi16(coef1);
-- __m256i mSwitch = _mm256_setr_epi8(0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11, 0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11);
-- __m256i T0, T1, S0, S1, sum;
-- __m256i mAddOffset;
--
- if (max_val == 255) { // 8 bit_depth
- shift1 = 0;
- shift2 = 12;
-@@ -3999,25 +4577,34 @@ void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i
- add1 = (1 << (shift1)) >> 1;
- add2 = 1 << (shift2 - 1);
-
-- mAddOffset = _mm256_set1_epi32(add1);
- //HOR
-+ __m128i coef0 = _mm_cvtepi8_epi16(_mm_set1_epi16(((s16*)coef_x)[0]));
-+ __m128i coef1 = _mm_cvtepi8_epi16(_mm_set1_epi16(((s16*)coef_x)[1]));
-+ __m256i mCoef0 = _mm256_set_m128i(coef1, coef0);
-+ __m256i mCoef1 = _mm256_set_m128i(coef0, coef1);
-+ __m256i mSwitch = _mm256_setr_epi8(0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11, 0, 1, 4, 5, 2, 3, 6, 7, 4, 5, 8, 9, 6, 7, 10, 11);
-+ __m256i T0, T1, S0, S1, sum;
-+ __m256i mAddOffset = _mm256_set1_epi32(add1);
-+ __m128i mDst;
-+ __m128i s0;
-+
- src = src - i_src - 2;
- row = height + 3;
- while (row--) {
-- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
- S0 = _mm256_loadu_si256((__m256i*)(src));
-- S1 = _mm256_loadu_si256((__m256i*)(src + 4));
-- S0 = _mm256_permute4x64_epi64(S0, 0x94);
-- S1 = _mm256_permute4x64_epi64(S1, 0x94);
-- T0 = _mm256_madd_epi16(_mm256_shuffle_epi8(S0, mSwitch), mCoef0);
-- T1 = _mm256_madd_epi16(_mm256_shuffle_epi8(S1, mSwitch), mCoef1);
-+ s0 = _mm_loadu_si128((__m128i*)(src + 4));
-+ uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-+ S1 = _mm256_set_m128i(s0, s0);
-+ T0 = _mm256_shuffle_epi8(S0, mSwitch);
-+ T1 = _mm256_shuffle_epi8(S1, mSwitch);
-+ T0 = _mm256_madd_epi16(T0, mCoef0);
-+ T1 = _mm256_madd_epi16(T1, mCoef1);
- sum = _mm256_add_epi32(T0, T1);
-
- sum = _mm256_add_epi32(sum, mAddOffset);
- sum = _mm256_srai_epi32(sum, shift1);
-- sum = _mm256_packs_epi32(sum, sum);
-- sum = _mm256_permute4x64_epi64(sum, 0xd8);
-- _mm_storeu_si128((__m128i*)(tmp), _mm256_castsi256_si128(sum));
-+ mDst = _mm_packs_epi32(_mm256_castsi256_si128(sum), _mm256_extracti128_si256(sum, 1));
-+ _mm_store_si128((__m128i*)(tmp), mDst);
-
- src += i_src;
- tmp += i_tmp;
-@@ -4027,46 +4614,49 @@ void uavs3d_if_hor_ver_chroma_w8_avx2(const pel *src, int i_src, pel *dst, int i
- tmp = tmp_res;
-
- {
-- __m128i max_val1 = _mm_set1_epi16((pel)max_val);
-- __m128i coeff0, coeff1, mVal, mAddOffset2;
-- __m128i M0, M1, M2, M3;
-+ __m128i coeff0, coeff1;
-+ __m256i MaxVal = _mm256_set1_epi16((pel)max_val);
-+ __m256i C0, C1, mVal, mAddOffset2;
-+ __m256i M0, M1, M2, M3;
-
- coeff0 = _mm_set1_epi16(*(s16*)coef_y);
- coeff1 = _mm_set1_epi16(*(s16*)(coef_y + 2));
-- mAddOffset2 = _mm_set1_epi32(add2);
--
-- coeff0 = _mm_cvtepi8_epi16(coeff0);
-- coeff1 = _mm_cvtepi8_epi16(coeff1);
-- while (height--) {
-- __m128i T00 = _mm_load_si128((__m128i*)(tmp));
-- __m128i T10 = _mm_load_si128((__m128i*)(tmp + i_tmp));
-- __m128i T20 = _mm_load_si128((__m128i*)(tmp + i_tmp2));
-- __m128i T30 = _mm_load_si128((__m128i*)(tmp + i_tmp3));
-+ mAddOffset2 = _mm256_set1_epi32(add2);
-
-- M0 = _mm_unpacklo_epi16(T00, T10);
-- M1 = _mm_unpacklo_epi16(T20, T30);
-- M2 = _mm_unpackhi_epi16(T00, T10);
-- M3 = _mm_unpackhi_epi16(T20, T30);
--
-- M0 = _mm_madd_epi16(M0, coeff0);
-- M1 = _mm_madd_epi16(M1, coeff1);
-- M2 = _mm_madd_epi16(M2, coeff0);
-- M3 = _mm_madd_epi16(M3, coeff1);
--
-- M0 = _mm_add_epi32(M0, M1);
-- M2 = _mm_add_epi32(M2, M3);
--
-- M0 = _mm_add_epi32(M0, mAddOffset2);
-- M2 = _mm_add_epi32(M2, mAddOffset2);
-- M0 = _mm_srai_epi32(M0, shift2);
-- M2 = _mm_srai_epi32(M2, shift2);
--
-- mVal = _mm_packus_epi32(M0, M2);
-- mVal = _mm_min_epu16(mVal, max_val1);
-- _mm_storeu_si128((__m128i*)dst, mVal);
--
-- tmp += i_tmp;
-- dst += i_dst;
-+ C0 = _mm256_cvtepi8_epi16(coeff0);
-+ C1 = _mm256_cvtepi8_epi16(coeff1);
-+ while (height) {
-+ __m256i T00 = _mm256_load_si256((__m256i*)(tmp));
-+ __m256i T10 = _mm256_loadu_si256((__m256i*)(tmp + i_tmp));
-+ __m256i T20 = _mm256_load_si256((__m256i*)(tmp + i_tmp2));
-+ __m256i T30 = _mm256_loadu_si256((__m256i*)(tmp + i_tmp3));
-+
-+ M0 = _mm256_unpacklo_epi16(T00, T10);
-+ M1 = _mm256_unpacklo_epi16(T20, T30);
-+ M2 = _mm256_unpackhi_epi16(T00, T10);
-+ M3 = _mm256_unpackhi_epi16(T20, T30);
-+
-+ M0 = _mm256_madd_epi16(M0, C0);
-+ M1 = _mm256_madd_epi16(M1, C1);
-+ M2 = _mm256_madd_epi16(M2, C0);
-+ M3 = _mm256_madd_epi16(M3, C1);
-+
-+ M0 = _mm256_add_epi32(M0, M1);
-+ M2 = _mm256_add_epi32(M2, M3);
-+
-+ M0 = _mm256_add_epi32(M0, mAddOffset2);
-+ M2 = _mm256_add_epi32(M2, mAddOffset2);
-+ M0 = _mm256_srai_epi32(M0, shift2);
-+ M2 = _mm256_srai_epi32(M2, shift2);
-+
-+ mVal = _mm256_packus_epi32(M0, M2);
-+ mVal = _mm256_min_epu16(mVal, MaxVal);
-+ _mm_storeu_si128((__m128i*)dst, _mm256_castsi256_si128(mVal));
-+ _mm_storeu_si128((__m128i*)(dst + i_dst), _mm256_extracti128_si256(mVal, 1));
-+
-+ height -= 2;
-+ tmp += i_tmp2;
-+ dst += i_dst << 1;
- }
- }
- }
-@@ -4113,28 +4703,26 @@ void uavs3d_if_hor_ver_chroma_w16x_avx2(const pel *src, int i_src, pel *dst, int
- while (row--) {
- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
- for (col = 0; col < width; col += 16) {
-- S0 = _mm256_loadu_si256((__m256i*)(src + col));
-- S1 = _mm256_loadu_si256((__m256i*)(src + col + 4));
-+ S0 = _mm256_loadu_si256((__m256i*)(src + col));
-+ S1 = _mm256_loadu_si256((__m256i*)(src + col + 4));
- S2 = _mm256_loadu_si256((__m256i*)(src + col + 8));
-- S3 = _mm256_loadu_si256((__m256i*)(src + col + 12));
-- S0 = _mm256_permute4x64_epi64(S0, 0x94);
-- S1 = _mm256_permute4x64_epi64(S1, 0x94);
-- S2 = _mm256_permute4x64_epi64(S2, 0x94);
-- S3 = _mm256_permute4x64_epi64(S3, 0x94);
-- T0 = _mm256_madd_epi16(_mm256_shuffle_epi8(S0, mSwitch), mCoef0);
-- T1 = _mm256_madd_epi16(_mm256_shuffle_epi8(S1, mSwitch), mCoef1);
-- T2 = _mm256_madd_epi16(_mm256_shuffle_epi8(S2, mSwitch), mCoef0);
-- T3 = _mm256_madd_epi16(_mm256_shuffle_epi8(S3, mSwitch), mCoef1);
-- T0 = _mm256_add_epi32(T0, T1);
-- T2 = _mm256_add_epi32(T2, T3);
-+ T0 = _mm256_shuffle_epi8(S0, mSwitch);
-+ T1 = _mm256_shuffle_epi8(S1, mSwitch);
-+ T2 = _mm256_shuffle_epi8(S1, mSwitch);
-+ T3 = _mm256_shuffle_epi8(S2, mSwitch);
-+ S0 = _mm256_madd_epi16(T0, mCoef0);
-+ S1 = _mm256_madd_epi16(T1, mCoef1);
-+ S2 = _mm256_madd_epi16(T2, mCoef0);
-+ S3 = _mm256_madd_epi16(T3, mCoef1);
-+ T0 = _mm256_add_epi32(S0, S1);
-+ T2 = _mm256_add_epi32(S2, S3);
-
- T0 = _mm256_add_epi32(T0, mAddOffset);
- T2 = _mm256_add_epi32(T2, mAddOffset);
- T0 = _mm256_srai_epi32(T0, shift1);
- T2 = _mm256_srai_epi32(T2, shift1);
- T0 = _mm256_packs_epi32(T0, T2);
-- T0 = _mm256_permute4x64_epi64(T0, 0xd8);
-- _mm256_storeu_si256((__m256i*)(tmp + col), T0);
-+ _mm256_store_si256((__m256i*)(tmp + col), T0);
- }
- src += i_src;
- tmp += i_tmp;
-diff --git a/source/decore/avx2/intra_pred_avx2.c b/source/decore/avx2/intra_pred_avx2.c
-index 07e19b2..18961f6 100644
---- a/source/decore/avx2/intra_pred_avx2.c
-+++ b/source/decore/avx2/intra_pred_avx2.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -204,7 +199,7 @@ void uavs3d_ipred_hor_avx2(pel *src, pel *dst, int i_dst, int width, int height)
-
- void uavs3d_ipred_dc_avx2(pel *src, pel *dst, int i_dst, int width, int height, u16 avail_cu, int bit_depth)
- {
-- int i, x, y;
-+ int x, y;
- int dc;
- pel *p_src = src - 1;
- int left_avail = IS_AVAIL(avail_cu, AVAIL_LE);
-@@ -212,6 +207,7 @@ void uavs3d_ipred_dc_avx2(pel *src, pel *dst, int i_dst, int width, int height,
-
- if (left_avail && above_avail) {
- int length = width + height + 1;
-+ int i;
- __m128i sum = _mm_setzero_si128();
- __m128i val;
-
-@@ -2738,7 +2734,6 @@ void uavs3d_ipred_ang_xy_18_avx2(pel *src, pel *dst, int i_dst, int mode, int wi
- dst += i_dst;
- }
- break;
-- break;
- }
-
- }
-@@ -3452,10 +3447,10 @@ void uavs3d_ipred_ver_avx2(pel *src, pel *dst, int i_dst, int width, int height)
- T0 = _mm256_loadu_si256((__m256i *)(src));
- T1 = _mm256_loadu_si256((__m256i *)(src + 16));
- for (y = 0; y < height; y += 2) {
-- _mm256_store_si256((__m256i *)(dst), T0);
-- _mm256_store_si256((__m256i *)(dst + 16), T1);
-- _mm256_store_si256((__m256i *)(dst + i_dst), T0);
-- _mm256_store_si256((__m256i *)(dst + i_dst + 16), T1);
-+ _mm256_storeu_si256((__m256i *)(dst), T0);
-+ _mm256_storeu_si256((__m256i *)(dst + 16), T1);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst), T0);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst + 16), T1);
- dst += i_dst2;
- }
- break;
-@@ -3468,14 +3463,14 @@ void uavs3d_ipred_ver_avx2(pel *src, pel *dst, int i_dst, int width, int height)
- T2 = _mm256_loadu_si256((__m256i *)(src + 32));
- T3 = _mm256_loadu_si256((__m256i *)(src + 48));
- for (y = 0; y < height; y += 2) {
-- _mm256_store_si256((__m256i *)(dst), T0);
-- _mm256_store_si256((__m256i *)(dst + 16), T1);
-- _mm256_store_si256((__m256i *)(dst + 32), T2);
-- _mm256_store_si256((__m256i *)(dst + 48), T3);
-- _mm256_store_si256((__m256i *)(dst + i_dst), T0);
-- _mm256_store_si256((__m256i *)(dst + i_dst + 16), T1);
-- _mm256_store_si256((__m256i *)(dst + i_dst + 32), T2);
-- _mm256_store_si256((__m256i *)(dst + i_dst + 48), T3);
-+ _mm256_storeu_si256((__m256i *)(dst), T0);
-+ _mm256_storeu_si256((__m256i *)(dst + 16), T1);
-+ _mm256_storeu_si256((__m256i *)(dst + 32), T2);
-+ _mm256_storeu_si256((__m256i *)(dst + 48), T3);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst), T0);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst + 16), T1);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst + 32), T2);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst + 48), T3);
- dst += i_dst2;
- }
- break;
-@@ -3539,10 +3534,10 @@ void uavs3d_ipred_hor_avx2(pel *src, pel *dst, int i_dst, int width, int height)
- for (y = 0; y < height; y += 2) {
- T0 = _mm256_set1_epi16(src[-y]);
- T1 = _mm256_set1_epi16(src[-y - 1]);
-- _mm256_store_si256((__m256i *)(dst), T0);
-- _mm256_store_si256((__m256i *)(dst + 16), T0);
-- _mm256_store_si256((__m256i *)(dst + i_dst), T1);
-- _mm256_store_si256((__m256i *)(dst + i_dst + 16), T1);
-+ _mm256_storeu_si256((__m256i *)(dst), T0);
-+ _mm256_storeu_si256((__m256i *)(dst + 16), T0);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst), T1);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst + 16), T1);
- dst += i_dst2;
- }
- break;
-@@ -3553,14 +3548,14 @@ void uavs3d_ipred_hor_avx2(pel *src, pel *dst, int i_dst, int width, int height)
- for (y = 0; y < height; y += 2) {
- T0 = _mm256_set1_epi16(src[-y]);
- T1 = _mm256_set1_epi16(src[-y - 1]);
-- _mm256_store_si256((__m256i *)(dst), T0);
-- _mm256_store_si256((__m256i *)(dst + 16), T0);
-- _mm256_store_si256((__m256i *)(dst + 32), T0);
-- _mm256_store_si256((__m256i *)(dst + 48), T0);
-- _mm256_store_si256((__m256i *)(dst + i_dst), T1);
-- _mm256_store_si256((__m256i *)(dst + i_dst + 16), T1);
-- _mm256_store_si256((__m256i *)(dst + i_dst + 32), T1);
-- _mm256_store_si256((__m256i *)(dst + i_dst + 48), T1);
-+ _mm256_storeu_si256((__m256i *)(dst), T0);
-+ _mm256_storeu_si256((__m256i *)(dst + 16), T0);
-+ _mm256_storeu_si256((__m256i *)(dst + 32), T0);
-+ _mm256_storeu_si256((__m256i *)(dst + 48), T0);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst), T1);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst + 16), T1);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst + 32), T1);
-+ _mm256_storeu_si256((__m256i *)(dst + i_dst + 48), T1);
- dst += i_dst2;
- }
- break;
-diff --git a/source/decore/avx2/itrans_avx2.c b/source/decore/avx2/itrans_avx2.c
-index 9b1df21..d8766b6 100644
---- a/source/decore/avx2/itrans_avx2.c
-+++ b/source/decore/avx2/itrans_avx2.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -79,14 +74,14 @@
- #define TRANSPOSE_16x8_32BIT_16BIT(I00, I01, I02, I03, I04, I05, I06, I07, I08, I09, I10, I11, I12, I13, I14, I15, O0, O1, O2, O3, O4, O5, O6, O7)\
- TRANSPOSE_8x8_32BIT_16BIT(I00, I01, I02, I03, I04, I05, I06, I07, I04, I05, I06, I07); \
- TRANSPOSE_8x8_32BIT_16BIT(I08, I09, I10, I11, I12, I13, I14, I15, I12, I13, I14, I15); \
-- O0 = _mm256_insertf128_si256(I04, _mm256_castsi256_si128(I12), 1); \
-- O1 = _mm256_insertf128_si256(I05, _mm256_castsi256_si128(I13), 1); \
-- O2 = _mm256_insertf128_si256(I06, _mm256_castsi256_si128(I14), 1); \
-- O3 = _mm256_insertf128_si256(I07, _mm256_castsi256_si128(I15), 1); \
-- O4 = _mm256_insertf128_si256(I12, _mm256_extracti128_si256(I04, 1), 0); \
-- O5 = _mm256_insertf128_si256(I13, _mm256_extracti128_si256(I05, 1), 0); \
-- O6 = _mm256_insertf128_si256(I14, _mm256_extracti128_si256(I06, 1), 0); \
-- O7 = _mm256_insertf128_si256(I15, _mm256_extracti128_si256(I07, 1), 0)
-+ O0 = _mm256_permute2x128_si256(I04, I12, 0x20); \
-+ O1 = _mm256_permute2x128_si256(I05, I13, 0x20); \
-+ O2 = _mm256_permute2x128_si256(I06, I14, 0x20); \
-+ O3 = _mm256_permute2x128_si256(I07, I15, 0x20); \
-+ O4 = _mm256_permute2x128_si256(I04, I12, 0x31); \
-+ O5 = _mm256_permute2x128_si256(I05, I13, 0x31); \
-+ O6 = _mm256_permute2x128_si256(I06, I14, 0x31); \
-+ O7 = _mm256_permute2x128_si256(I07, I15, 0x31)
-
-
- static void uavs3d_always_inline dct2_butterfly_h4_avx2(s16* src, s16* dst, int line, int shift, int bit_depth)
-@@ -272,10 +267,10 @@ static void uavs3d_always_inline dct2_butterfly_h8_avx2(s16* src, int i_src, s16
-
- // transpose 8x8 : 8 x 8(32bit) --> 4 x 16(16bit)
- TRANSPOSE_8x8_32BIT_16BIT(d0, d1, d2, d3, d4, d5, d6, d7, d4, d5, d6, d7);
-- d0 = _mm256_insertf128_si256(d4, _mm256_castsi256_si128(d5), 1);
-- d1 = _mm256_insertf128_si256(d6, _mm256_castsi256_si128(d7), 1);
-- d2 = _mm256_insertf128_si256(d5, _mm256_extracti128_si256(d4, 1), 0);
-- d3 = _mm256_insertf128_si256(d7, _mm256_extracti128_si256(d6, 1), 0);
-+ d0 = _mm256_permute2x128_si256(d4, d5, 0x20);
-+ d2 = _mm256_permute2x128_si256(d4, d5, 0x31);
-+ d1 = _mm256_permute2x128_si256(d6, d7, 0x20);
-+ d3 = _mm256_permute2x128_si256(d6, d7, 0x31);
-
- if (bit_depth != MAX_TX_DYNAMIC_RANGE) {
- __m256i max_val = _mm256_set1_epi16((1 << bit_depth) - 1);
-diff --git a/source/decore/avx2/pixel_avx2.c b/source/decore/avx2/pixel_avx2.c
-index 8031fe7..10d48f9 100644
---- a/source/decore/avx2/pixel_avx2.c
-+++ b/source/decore/avx2/pixel_avx2.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -986,8 +981,8 @@ void uavs3d_recon_chroma_w16_avx2(s16 *resi_u, s16 *resi_v, pel *pred, int width
- r1 = _mm256_loadu_si256((const __m256i*)(resi_v));
- r2 = _mm256_unpacklo_epi16(r0, r1); // UV interlaced: uv0-uv4 uv8-uv12
- r3 = _mm256_unpackhi_epi16(r0, r1);
-- r0 = _mm256_insertf128_si256(r2, _mm256_castsi256_si128(r3), 0x1); // uv0-uv8
-- r1 = _mm256_insertf128_si256(r3, _mm256_extracti128_si256(r2, 1), 0x0);
-+ r0 = _mm256_permute2x128_si256(r2, r3, 0x20); // uv0-uv8
-+ r1 = _mm256_permute2x128_si256(r2, r3, 0x31);
- p0 = _mm256_adds_epi16(p0, r0);
- p1 = _mm256_adds_epi16(p1, r1);
-
-@@ -1035,8 +1030,8 @@ void uavs3d_recon_chroma_w16_avx2(s16 *resi_u, s16 *resi_v, pel *pred, int width
- r1 = _mm256_loadu_si256((const __m256i*)(resi_v));
- r2 = _mm256_unpacklo_epi16(zero, r1); // UV interlaced: uv0-uv4 uv8-uv12
- r3 = _mm256_unpackhi_epi16(zero, r1);
-- r0 = _mm256_insertf128_si256(r2, _mm256_castsi256_si128(r3), 0x1); // uv0-uv8
-- r1 = _mm256_insertf128_si256(r3, _mm256_extracti128_si256(r2, 1), 0x0);
-+ r0 = _mm256_permute2x128_si256(r2, r3, 0x20); // uv0-uv8
-+ r1 = _mm256_permute2x128_si256(r2, r3, 0x31);
- p0 = _mm256_adds_epi16(p0, r0);
- p1 = _mm256_adds_epi16(p1, r1);
-
-@@ -1073,8 +1068,8 @@ void uavs3d_recon_chroma_w16x_avx2(s16 *resi_u, s16 *resi_v, pel *pred, int widt
- r1 = _mm256_loadu_si256((const __m256i*)(resi_v + j));
- r2 = _mm256_unpacklo_epi16(r0, r1); // UV interlaced: uv0-uv4 uv8-uv12
- r3 = _mm256_unpackhi_epi16(r0, r1);
-- r0 = _mm256_insertf128_si256(r2, _mm256_castsi256_si128(r3), 0x1); // uv0-uv8
-- r1 = _mm256_insertf128_si256(r3, _mm256_extracti128_si256(r2, 1), 0x0);
-+ r0 = _mm256_permute2x128_si256(r2, r3, 0x20); // uv0-uv8
-+ r1 = _mm256_permute2x128_si256(r2, r3, 0x31);
- p0 = _mm256_adds_epi16(p0, r0);
- p1 = _mm256_adds_epi16(p1, r1);
-
-@@ -1126,8 +1121,8 @@ void uavs3d_recon_chroma_w16x_avx2(s16 *resi_u, s16 *resi_v, pel *pred, int widt
- r1 = _mm256_loadu_si256((const __m256i*)(resi_v + j));
- r2 = _mm256_unpacklo_epi16(zero, r1); // UV interlaced: uv0-uv4 uv8-uv12
- r3 = _mm256_unpackhi_epi16(zero, r1);
-- r0 = _mm256_insertf128_si256(r2, _mm256_castsi256_si128(r3), 0x1); // uv0-uv8
-- r1 = _mm256_insertf128_si256(r3, _mm256_extracti128_si256(r2, 1), 0x0);
-+ r0 = _mm256_permute2x128_si256(r2, r3, 0x20); // uv0-uv8
-+ r1 = _mm256_permute2x128_si256(r2, r3, 0x31);
- p0 = _mm256_adds_epi16(p0, r0);
- p1 = _mm256_adds_epi16(p1, r1);
-
-diff --git a/source/decore/avx2/sao_avx2.c b/source/decore/avx2/sao_avx2.c
-index 73c01b4..7d2d527 100644
---- a/source/decore/avx2/sao_avx2.c
-+++ b/source/decore/avx2/sao_avx2.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/com_def.h b/source/decore/com_def.h
-index a8e9446..8b7ad27 100644
---- a/source/decore/com_def.h
-+++ b/source/decore/com_def.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -40,14 +35,18 @@
-
- #include "com_sys.h"
-
--#define BIT_DEPTH 8
--
- #define CHECK_RAND_STRM 0
-
--#if (BIT_DEPTH == 8)
--typedef u8 pel; /* pixel type */
-+#ifndef COMPILE_10BIT
-+#define COMPILE_10BIT 0
-+#endif
-+
-+#if COMPILE_10BIT
-+typedef unsigned short pel; /* pixel type */
-+#define BIT_DEPTH 10
- #else
--typedef s16 pel; /* pixel type */
-+typedef unsigned char pel; /* pixel type */
-+#define BIT_DEPTH 8
- #endif
-
- /************************* profile & level **********************************************/
-diff --git a/source/decore/com_sys.h b/source/decore/com_sys.h
-index 0cb4359..2ea3237 100644
---- a/source/decore/com_sys.h
-+++ b/source/decore/com_sys.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/com_table.c b/source/decore/com_table.c
-index bbc40d9..2042e6d 100644
---- a/source/decore/com_table.c
-+++ b/source/decore/com_table.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/com_table.h b/source/decore/com_table.h
-index 2c2bb3d..c419405 100644
---- a/source/decore/com_table.h
-+++ b/source/decore/com_table.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/com_type.h b/source/decore/com_type.h
-index 5bb8337..0a7db50 100644
---- a/source/decore/com_type.h
-+++ b/source/decore/com_type.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/com_util.c b/source/decore/com_util.c
-index 7e374c9..353804b 100644
---- a/source/decore/com_util.c
-+++ b/source/decore/com_util.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/com_util.h b/source/decore/com_util.h
-index b6887bb..721a0c1 100644
---- a/source/decore/com_util.h
-+++ b/source/decore/com_util.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -41,10 +36,10 @@
- #include "com_type.h"
-
- /* function selection define based on platforms */
--#if (defined(__ANDROID__) && defined(__aarch64__)) || (defined(__APPLE__) && defined(__arm64__))
-+#if defined(_arm64) || (defined(__APPLE__) && defined(__arm64__))
- #define ENABLE_FUNCTION_C 1
- #define ENABLE_FUNCTION_ARM64 1
--#elif (defined(__ANDROID__) && defined(__arm__)) || (defined(__APPLE__) && defined(__ARM_NEON__))
-+#elif defined(_armv7a) || (defined(__APPLE__) && defined(__ARM_NEON__))
- #define ENABLE_FUNCTION_C 1
- #define ENABLE_FUNCTION_ARM32 1
- #elif (defined(__WIN32__) || defined(_WIN32)) || (defined(__MACOSX__) || defined(macintosh) || defined(__linux__) || defined(__unix__)) && (defined(__i386__) || defined(__x86_64__) || defined(__AMD64__))
-diff --git a/source/decore/deblock.c b/source/decore/deblock.c
-index 0996c57..f9764d6 100644
---- a/source/decore/deblock.c
-+++ b/source/decore/deblock.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -65,7 +60,7 @@ static int uavs3d_always_inline skip_filter(com_map_t *map, com_ref_pic_t refp[M
- {
- com_scu_t MbQ = map->map_scu[scup + offset];
- com_pic_t *q_pic0, *q_pic1;
-- const com_scu_t mask = {0, 0, 0, 0, 1, 0, 0};
-+ const com_scu_t mask = {0, 1, 0, 0, 1, 0, 0};
-
- if ((*(u8*)&MbQ) & (*(u8*)&mask)) {
- return 0;
-@@ -210,7 +205,7 @@ void com_deblock_set_edge(com_core_t *core)
- int scu_x = core->cu_pix_x >> MIN_CU_LOG2;
- int scu_y = core->cu_pix_y >> MIN_CU_LOG2;
- const int grad_mask = (LOOPFILTER_GRID >> 2) - 1;
-- const com_scu_t mask = { 0, 0, 0, 0, 1, 0, 0 };
-+ const com_scu_t mask = { 0, 1, 0, 0, 1, 0, 0 };
- com_scu_t scu = map->map_scu[scup];
-
- if ((*(u8*)&scu) & (*(u8*)&mask)) {
-diff --git a/source/decore/inter_pred.c b/source/decore/inter_pred.c
-index c53d399..470c84c 100644
---- a/source/decore/inter_pred.c
-+++ b/source/decore/inter_pred.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -486,10 +481,10 @@ void uavs3d_always_inline com_affine_mc_chroma(com_core_t *core, pel *dstc, int
- int max_posx = (seqhdr->pic_width + 4) >> 1;
- int max_posy = (seqhdr->pic_height + 4) >> 1;
- int i_asb_mv = cu_width >> 2;
-- s32(*asb_mv1)[MV_D] = asb_mv0 + i_asb_mv;
- int i_src = ref_pic->stride_chroma;
-
- if (sub_blk_size == 4) {
-+ s32(*asb_mv1)[MV_D] = asb_mv0 + i_asb_mv;
- for (h = 0; h < cu_height; h += 8) {
- int base_y = (y + h) << 4;
- for (w = 0; w < cu_width; w += 8, asb_mv0 += 2, asb_mv1 += 2) {
-diff --git a/source/decore/intra_pred.c b/source/decore/intra_pred.c
-index de1eef6..c767be0 100644
---- a/source/decore/intra_pred.c
-+++ b/source/decore/intra_pred.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -320,7 +315,7 @@ void ipred_plane(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
- int ib_shift[5] = { 7, 10, 11, 15, 19 };
- int idx_w = g_tbl_log2[w] - 2;
- int idx_h = g_tbl_log2[h] - 2;
-- int im_h, is_h, im_v, is_v, temp, temp2;
-+ int im_h, is_h, im_v, is_v, temp;
- int max_pel = (1 << bit_depth) - 1;
- int val;
-
-@@ -343,7 +338,7 @@ void ipred_plane(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
- temp = a - (h2 - 1) * c - (w2 - 1) * b + 16;
-
- for (y = 0; y < h; y++) {
-- temp2 = temp;
-+ int temp2 = temp;
- for (x = 0; x < w; x++) {
- val = temp2 >> 5;
- dst[x] = (pel)COM_CLIP3(0, max_pel, val);
-@@ -368,7 +363,7 @@ void ipred_plane_ipf(pel *src, s16 *dst, int w, int h)
- int ib_shift[5] = { 7, 10, 11, 15, 19 };
- int idx_w = g_tbl_log2[w] - 2;
- int idx_h = g_tbl_log2[h] - 2;
-- int im_h, is_h, im_v, is_v, temp, temp2;
-+ int im_h, is_h, im_v, is_v, temp;
- im_h = ib_mult[idx_w];
- is_h = ib_shift[idx_w];
- im_v = ib_mult[idx_h];
-@@ -388,7 +383,7 @@ void ipred_plane_ipf(pel *src, s16 *dst, int w, int h)
- temp = a - (h2 - 1) * c - (w2 - 1) * b + 16;
-
- for (y = 0; y < h; y++) {
-- temp2 = temp;
-+ int temp2 = temp;
- for (x = 0; x < w; x++) {
- dst[x] = (s16)(temp2 >> 5);
- temp2 += b;
-@@ -416,7 +411,7 @@ void ipred_plane_uv(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
- int idx_w = g_tbl_log2[w] - 2;
- int idx_h = g_tbl_log2[h] - 2;
- int im_h, is_h, im_v, is_v;
-- int temp_u, temp_v, temp2_u, temp2_v;
-+ int temp_u, temp_v;
- int max_pel = (1 << bit_depth) - 1;
- int val_u, val_v;
-
-@@ -448,8 +443,8 @@ void ipred_plane_uv(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
- temp_v = a_v - (h2 - 1) * c_v - (w2 - 1) * b_v + 16;
-
- for (y = 0; y < h; y++) {
-- temp2_u = temp_u;
-- temp2_v = temp_v;
-+ int temp2_u = temp_u;
-+ int temp2_v = temp_v;
- for (x = 0; x < width2; x += 2) {
- val_u = temp2_u >> 5;
- val_v = temp2_v >> 5;
-@@ -475,8 +470,7 @@ void ipred_bi(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
- int ishift = COM_MIN(ishift_x, ishift_y);
- int ishift_xy = ishift_x + ishift_y + 1;
- int offset = 1 << (ishift_x + ishift_y);
-- int a, b, c, wt, wxy, tmp;
-- int predx;
-+ int a, b, c, wt, tmp;
- int ref_up[MAX_CU_SIZE], ref_le[MAX_CU_SIZE], up[MAX_CU_SIZE], le[MAX_CU_SIZE], wy[MAX_CU_SIZE];
- int wc, tbl_wc[6] = {-1, 21, 13, 7, 4, 2};
- int max_pel = (1 << bit_depth) - 1;
-@@ -510,8 +504,8 @@ void ipred_bi(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
- tmp += wt;
- }
- for( y = 0; y < h; y++ ) {
-- predx = ref_le[y];
-- wxy = 0;
-+ int predx = ref_le[y];
-+ int wxy = 0;
- for( x = 0; x < w; x++ ) {
- predx += le[y];
- ref_up[x] += up[x];
-@@ -534,8 +528,7 @@ void ipred_bi_ipf(pel *src, s16 *dst, int w, int h)
- int ishift = COM_MIN(ishift_x, ishift_y);
- int ishift_xy = ishift_x + ishift_y + 1;
- int offset = 1 << (ishift_x + ishift_y);
-- int a, b, c, wt, wxy, tmp;
-- int predx;
-+ int a, b, c, wt, tmp;
- int ref_up[MAX_CU_SIZE], ref_le[MAX_CU_SIZE], up[MAX_CU_SIZE], le[MAX_CU_SIZE], wy[MAX_CU_SIZE];
- int wc, tbl_wc[6] = { -1, 21, 13, 7, 4, 2 };
- wc = ishift_x > ishift_y ? ishift_x - ishift_y : ishift_y - ishift_x;
-@@ -566,8 +559,8 @@ void ipred_bi_ipf(pel *src, s16 *dst, int w, int h)
- tmp += wt;
- }
- for (y = 0; y < h; y++) {
-- predx = ref_le[y];
-- wxy = 0;
-+ int predx = ref_le[y];
-+ int wxy = 0;
- for (x = 0; x < w; x++) {
- predx += le[y];
- ref_up[x] += up[x];
-@@ -589,9 +582,8 @@ void ipred_bi_uv(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
- int ishift = COM_MIN(ishift_x, ishift_y);
- int ishift_xy = ishift_x + ishift_y + 1;
- int offset = 1 << (ishift_x + ishift_y);
-- int a_u, b_u, c_u, wt_u, wxy_u, tmp_u;
-- int a_v, b_v, c_v, wt_v, wxy_v, tmp_v;
-- int predx_u, predx_v;
-+ int a_u, b_u, c_u, wt_u, tmp_u;
-+ int a_v, b_v, c_v, wt_v, tmp_v;
- int ref_up[MAX_CU_SIZE], ref_le[MAX_CU_SIZE], up[MAX_CU_SIZE], le[MAX_CU_SIZE], wy[MAX_CU_SIZE];
- int wc, tbl_wc[6] = { -1, 21, 13, 7, 4, 2 };
- int w2 = w << 1;
-@@ -640,9 +632,10 @@ void ipred_bi_uv(pel *src, pel *dst, int i_dst, int w, int h, int bit_depth)
- }
- for (y = 0; y < h; y++) {
- int y2 = y << 1;
-- predx_u = ref_le[y2 ];
-- predx_v = ref_le[y2 + 1];
-- wxy_u = wxy_v = 0;
-+ int predx_u = ref_le[y2 ];
-+ int predx_v = ref_le[y2 + 1];
-+ int wxy_u = 0;
-+ int wxy_v = 0;
- for (x = 0; x < w2; x += 2) {
- predx_u += le[y2];
- predx_v += le[y2 + 1];
-@@ -1034,7 +1027,6 @@ static void uavs3d_always_inline ipf_core_s16(pel *src, pel *dst, int i_dst, s16
- s32 filter_idx_ver = (s32)g_tbl_log2[h] - 2; //Block Size
- s32 ver_filter_range = COM_MIN(h, 10);
- s32 hor_filter_range = COM_MIN(w, 10);
-- int max_val = (1 << bit_depth) - 1;
-
- // TODO: g_ipf_pred_param doesn't support 128
- if (filter_idx_hor > 4) {
-@@ -1300,7 +1292,6 @@ static void xPredIntraAngAdi_X_8(pel *pSrc, pel *dst, int i_dst, int uiDirMode,
- int line_size = iWidth + iHeight / 2 - 1;
- int real_size = min(line_size, iWidth * 2 + 1);
- int i;
-- int pad1, pad2;
- int aligned_line_size = ((line_size + 15) >> 4) << 4;
- pel *pfirst[2] = { first_line, first_line + aligned_line_size };
-
-@@ -1311,6 +1302,8 @@ static void xPredIntraAngAdi_X_8(pel *pSrc, pel *dst, int i_dst, int uiDirMode,
-
- // padding
- if (real_size < line_size) {
-+ int pad1, pad2;
-+
- pfirst[1][real_size - 1] = pfirst[1][real_size - 2];
-
- pad1 = pfirst[0][real_size - 1];
-@@ -1466,7 +1459,6 @@ static void xPredIntraAngAdi_Y_28(pel *pSrc, pel *dst, int i_dst, int uiDirMode,
- int real_size = min(line_size, iHeight * 4 + 1);
- int i;
- int iHeight2 = iHeight << 1;
-- int pad1, pad2;
-
- for (i = 0; i < real_size; i += 2, pSrc--) {
- first_line[i] = (pSrc[0] + (pSrc[-1] + pSrc[-2]) * 3 + pSrc[-3] + 4) >> 3;
-@@ -1475,6 +1467,7 @@ static void xPredIntraAngAdi_Y_28(pel *pSrc, pel *dst, int i_dst, int uiDirMode,
-
- // padding
- if (real_size < line_size) {
-+ int pad1, pad2;
- first_line[i - 1] = first_line[i - 3];
-
- pad1 = first_line[i - 2];
-diff --git a/source/decore/inv_trans.c b/source/decore/inv_trans.c
-index 2be533a..2d60b20 100644
---- a/source/decore/inv_trans.c
-+++ b/source/decore/inv_trans.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/modules.h b/source/decore/modules.h
-index 026d237..00d65b1 100644
---- a/source/decore/modules.h
-+++ b/source/decore/modules.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/pic_manager.c b/source/decore/pic_manager.c
-index 1c9be09..1a09a38 100644
---- a/source/decore/pic_manager.c
-+++ b/source/decore/pic_manager.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/recon.c b/source/decore/recon.c
-index c6466ba..951957a 100644
---- a/source/decore/recon.c
-+++ b/source/decore/recon.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/sao.c b/source/decore/sao.c
-index b39466d..9004046 100644
---- a/source/decore/sao.c
-+++ b/source/decore/sao.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/sse/alf_sse.c b/source/decore/sse/alf_sse.c
-index 2880605..24e203e 100644
---- a/source/decore/sse/alf_sse.c
-+++ b/source/decore/sse/alf_sse.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/sse/deblock_sse.c b/source/decore/sse/deblock_sse.c
-index 271c2fc..ab88636 100644
---- a/source/decore/sse/deblock_sse.c
-+++ b/source/decore/sse/deblock_sse.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/sse/inter_pred_sse.c b/source/decore/sse/inter_pred_sse.c
-index 170d079..7faf0d7 100644
---- a/source/decore/sse/inter_pred_sse.c
-+++ b/source/decore/sse/inter_pred_sse.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -55,25 +50,59 @@ void uavs3d_if_cpy_sse(const pel *src, int i_src, pel *dst, int i_dst, int width
-
- void uavs3d_if_cpy_w4_sse(const pel *src, int i_src, pel *dst, int i_dst, int width, int height)
- {
-- while (height) {
-+ if (height < 4) {
- CP32(dst, src);
- CP32(dst + i_dst, src + i_src);
-- height -= 2;
-- src += i_src << 1;
-- dst += i_dst << 1;
-+ }
-+ else {
-+ int i_src2 = i_src << 1;
-+ int i_dst2 = i_dst << 1;
-+ int i_src3 = i_src + i_src2;
-+ int i_dst3 = i_dst + i_dst2;
-+ int i_src4 = i_src << 2;
-+ int i_dst4 = i_dst << 2;
-+ while (height > 0) {
-+ CP32(dst, src);
-+ CP32(dst + i_dst, src + i_src);
-+ CP32(dst + i_dst2, src + i_src2);
-+ CP32(dst + i_dst3, src + i_src3);
-+ height -= 4;
-+ src += i_src4;
-+ dst += i_dst4;
-+ }
- }
- }
-
- void uavs3d_if_cpy_w8_sse(const pel *src, int i_src, pel *dst, int i_dst, int width, int height)
- {
-- int i_src2 = i_src << 1;
-- int i_dst2 = i_dst << 1;
-- while (height) {
-- CP64(dst, src);
-- CP64(dst + i_dst, src + i_src);
-- src += i_src2;
-- dst += i_dst2;
-- height -= 2;
-+ if (height < 4) {
-+ __m128i m0, m1;
-+ m0 = _mm_loadl_epi64((const __m128i*)src);
-+ m1 = _mm_loadl_epi64((const __m128i*)(src + i_src));
-+ _mm_storel_epi64((__m128i*)dst, m0);
-+ _mm_storel_epi64((__m128i*)(dst + i_dst), m1);
-+ } else {
-+ __m128i m0, m1, m2, m3;
-+ int i_src2 = i_src << 1;
-+ int i_dst2 = i_dst << 1;
-+ int i_src3 = i_src + i_src2;
-+ int i_dst3 = i_dst + i_dst2;
-+ int i_src4 = i_src << 2;
-+ int i_dst4 = i_dst << 2;
-+ while (height) {
-+ m0 = _mm_loadl_epi64((const __m128i*)src);
-+ m1 = _mm_loadl_epi64((const __m128i*)(src + i_src));
-+ m2 = _mm_loadl_epi64((const __m128i*)(src + i_src2));
-+ m3 = _mm_loadl_epi64((const __m128i*)(src + i_src3));
-+ height -= 4;
-+ src += i_src4;
-+
-+ _mm_storel_epi64((__m128i*)dst, m0);
-+ _mm_storel_epi64((__m128i*)(dst + i_dst), m1);
-+ _mm_storel_epi64((__m128i*)(dst + i_dst2), m2);
-+ _mm_storel_epi64((__m128i*)(dst + i_dst3), m3);
-+ dst += i_dst4;
-+ }
- }
- }
-
-@@ -371,7 +400,7 @@ void uavs3d_if_hor_luma_w8_sse(const pel *src, int i_src, pel *dst, int i_dst, i
- height -= 2;
-
- _mm_storel_epi64((__m128i*)dst, T0);
-- M64(dst + i_dst) = _mm_extract_epi64(T0, 1);
-+ _mm_storeh_pi((__m64*)(dst + i_dst), _mm_castsi128_ps(T0));
-
- src += i_src << 1;
- dst += i_dst << 1;
-@@ -512,7 +541,6 @@ void uavs3d_if_ver_chroma_w16x_sse(const pel *src, int i_src, pel *dst, int i_ds
- const int offset = 32;
- const int shift = 6;
- __m128i mAddOffset = _mm_set1_epi16(offset);
-- pel const *p;
- __m128i coeff0 = _mm_set1_epi16(*(s16*)coeff);
- __m128i coeff1 = _mm_set1_epi16(*(s16*)(coeff + 2));
- __m128i mVal1, mVal2;
-@@ -520,7 +548,7 @@ void uavs3d_if_ver_chroma_w16x_sse(const pel *src, int i_src, pel *dst, int i_ds
- src -= i_src;
-
- while (height--) {
-- p = src;
-+ pel const *p = src;
- uavs3d_prefetch(src + 4 * i_src, _MM_HINT_NTA);
- for (col = 0; col < width; col += 16) {
- __m128i T01 = _mm_loadu_si128((__m128i*)(p));
-@@ -739,7 +767,6 @@ void uavs3d_if_ver_luma_w16x_sse(const pel *src, int i_src, pel *dst, int i_dst,
- int col;
- const int offset = 32;
- const int shift = 6;
-- pel const *p;
- __m128i mAddOffset = _mm_set1_epi16(offset);
- __m128i coeff0 = _mm_set1_epi16(*(s16*)coeff);
- __m128i coeff1 = _mm_set1_epi16(*(s16*)(coeff + 2));
-@@ -750,7 +777,7 @@ void uavs3d_if_ver_luma_w16x_sse(const pel *src, int i_src, pel *dst, int i_dst,
- src -= 3 * i_src;
-
- while (height--) {
-- p = src;
-+ pel const *p = src;
- uavs3d_prefetch(src + 8 * i_src, _MM_HINT_NTA);
- for (col = 0; col < width; col += 16) {
- __m128i T01 = _mm_loadu_si128((__m128i*)(p));
-@@ -811,7 +838,6 @@ void uavs3d_if_hor_ver_chroma_w8x_sse(const pel *src, int i_src, pel *dst, int i
- {
- int row, col;
- int shift;
-- s16 const *p;
- ALIGNED_16(s16 tmp_res[(64 + 3) * 64*2]);
- s16 *tmp = tmp_res;
- const int i_tmp = width;
-@@ -856,7 +882,7 @@ void uavs3d_if_hor_ver_chroma_w8x_sse(const pel *src, int i_src, pel *dst, int i
- coeff1_ver = _mm_cvtepi8_epi16(coeff1_ver);
-
- while (height--) {
-- p = tmp;
-+ s16 const *p = tmp;
- for (col = 0; col < width; col += 8) {
- __m128i T00 = _mm_load_si128((__m128i*)(p));
- __m128i T10 = _mm_load_si128((__m128i*)(p + i_tmp));
-@@ -1411,7 +1437,6 @@ void uavs3d_if_hor_ver_luma_w8x_sse(const pel *src, int i_src, pel *dst, int i_d
- {
- int row, col;
- int shift;
-- s16 const *p;
-
- ALIGNED_16(s16 tmp_res[(128 + 7) * 128]);
- s16 *tmp = tmp_res;
-@@ -1473,7 +1498,7 @@ void uavs3d_if_hor_ver_luma_w8x_sse(const pel *src, int i_src, pel *dst, int i_d
- mCoefy4_ver = _mm_cvtepi8_epi16(mCoefy4_ver);
-
- while (height--) {
-- p = tmp;
-+ s16 const *p = tmp;
- for (col = 0; col < width; col += 8) {
- __m128i T00 = _mm_load_si128((__m128i*)(p));
- __m128i T10 = _mm_load_si128((__m128i*)(p + i_tmp));
-@@ -2315,14 +2340,13 @@ void uavs3d_if_hor_ver_luma_w8_sse(const pel *src, int i_src, pel *dst, int i_ds
- int rows;
- int add1, shift1;
- int add2, shift2;
-- __m128i T0, T1, T2, T3, T4, T5, T6, T7;
-+ __m128i T0, T1, T2, T3, T4, T5;
- __m128i M0, M1, M2, M3, M4, M5, M6, M7;
-- __m128i N0, N1, N2, N3, N4, N5, N6, N7;
-- __m128i mCoef, offset, max_pel;
-+ __m128i offset, max_pel;
- ALIGNED_16(s16 tmp_res[(64 + 7) * 8]);
- s16 *tmp = tmp_res;
- const int i_tmp = 8;
-- __m128i coeff00, coeff01, coeff02, coeff03;
-+ __m128i mCoef0, mCoef1, mCoef2, mCoef3;
-
- if (max_val == 255) { // 8 bit_depth
- shift1 = 0;
-@@ -2338,110 +2362,129 @@ void uavs3d_if_hor_ver_luma_w8_sse(const pel *src, int i_src, pel *dst, int i_ds
-
- src += -3 * i_src - 3;
-
-- mCoef = _mm_loadl_epi64((__m128i*)coef_x);
-- offset = _mm_set1_epi32(add1);
-- mCoef = _mm_cvtepi8_epi16(mCoef);
--
-- // HOR
-- rows = height + 7;
-- while (rows--) {
-- uavs3d_prefetch(src + i_src, _MM_HINT_NTA);
-- T0 = _mm_loadu_si128((__m128i*)(src + 0));
-- T1 = _mm_loadu_si128((__m128i*)(src + 1));
-- T2 = _mm_loadu_si128((__m128i*)(src + 2));
-- T3 = _mm_loadu_si128((__m128i*)(src + 3));
-- T4 = _mm_loadu_si128((__m128i*)(src + 4));
-- T5 = _mm_loadu_si128((__m128i*)(src + 5));
-- T6 = _mm_loadu_si128((__m128i*)(src + 6));
-- T7 = _mm_loadu_si128((__m128i*)(src + 7));
--
-- M0 = _mm_madd_epi16(T0, mCoef);
-- M1 = _mm_madd_epi16(T1, mCoef);
-- M2 = _mm_madd_epi16(T2, mCoef);
-- M3 = _mm_madd_epi16(T3, mCoef);
-- M4 = _mm_madd_epi16(T4, mCoef);
-- M5 = _mm_madd_epi16(T5, mCoef);
-- M6 = _mm_madd_epi16(T6, mCoef);
-- M7 = _mm_madd_epi16(T7, mCoef);
-+ {
-+ __m128i mShuffle0 = _mm_setr_epi8(0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, 7, 6, 7, 8, 9);
-+ __m128i mShuffle1 = _mm_setr_epi8(4, 5, 6, 7, 6, 7, 8, 9, 8, 9, 10, 11, 10, 11, 12, 13);
-+ __m128i S0, S1, S2;
-+
-+ mCoef0 = _mm_set1_epi16(((s16*)coef_x)[0]);
-+ mCoef1 = _mm_set1_epi16(((s16*)coef_x)[1]);
-+ mCoef2 = _mm_set1_epi16(((s16*)coef_x)[2]);
-+ mCoef3 = _mm_set1_epi16(((s16*)coef_x)[3]);
-+ mCoef0 = _mm_cvtepi8_epi16(mCoef0);
-+ mCoef1 = _mm_cvtepi8_epi16(mCoef1);
-+ mCoef2 = _mm_cvtepi8_epi16(mCoef2);
-+ mCoef3 = _mm_cvtepi8_epi16(mCoef3);
-+ offset = _mm_set1_epi32(add1);
-+
-+ // HOR
-+ rows = height + 7;
-+ while (rows--) {
-+ S0 = _mm_loadu_si128((__m128i*)(src));
-+ S1 = _mm_loadu_si128((__m128i*)(src + 4));
-+ S2 = _mm_loadu_si128((__m128i*)(src + 8));
-+ src += i_src;
-+ uavs3d_prefetch(src, _MM_HINT_NTA);
-+
-+ T0 = _mm_shuffle_epi8(S0, mShuffle0);
-+ T1 = _mm_shuffle_epi8(S0, mShuffle1);
-+ T2 = _mm_shuffle_epi8(S1, mShuffle0);
-+ T3 = _mm_shuffle_epi8(S1, mShuffle1);
-+ T4 = _mm_shuffle_epi8(S2, mShuffle0);
-+ T5 = _mm_shuffle_epi8(S2, mShuffle1);
-+
-+ M0 = _mm_madd_epi16(T0, mCoef0);
-+ M1 = _mm_madd_epi16(T1, mCoef1);
-+ M2 = _mm_madd_epi16(T2, mCoef2);
-+ M3 = _mm_madd_epi16(T3, mCoef3);
-+ M4 = _mm_madd_epi16(T2, mCoef0);
-+ M5 = _mm_madd_epi16(T3, mCoef1);
-+ M6 = _mm_madd_epi16(T4, mCoef2);
-+ M7 = _mm_madd_epi16(T5, mCoef3);
-
-- M0 = _mm_hadd_epi32(M0, M1);
-- M1 = _mm_hadd_epi32(M2, M3);
-- M2 = _mm_hadd_epi32(M4, M5);
-- M3 = _mm_hadd_epi32(M6, M7);
-+ M0 = _mm_add_epi32(M0, M1);
-+ M1 = _mm_add_epi32(M2, M3);
-+ M2 = _mm_add_epi32(M4, M5);
-+ M3 = _mm_add_epi32(M6, M7);
-
-- M0 = _mm_hadd_epi32(M0, M1);
-- M1 = _mm_hadd_epi32(M2, M3);
-+ M0 = _mm_add_epi32(M0, M1);
-+ M1 = _mm_add_epi32(M2, M3);
-
-- M2 = _mm_add_epi32(M0, offset);
-- M3 = _mm_add_epi32(M1, offset);
-- M2 = _mm_srai_epi32(M2, shift1);
-- M3 = _mm_srai_epi32(M3, shift1);
-- M2 = _mm_packs_epi32(M2, M3);
-- _mm_storeu_si128((__m128i*)tmp, M2);
-+ M2 = _mm_add_epi32(M0, offset);
-+ M3 = _mm_add_epi32(M1, offset);
-+ M2 = _mm_srai_epi32(M2, shift1);
-+ M3 = _mm_srai_epi32(M3, shift1);
-+ M2 = _mm_packs_epi32(M2, M3);
-+ _mm_store_si128((__m128i*)tmp, M2);
-
-- tmp += i_tmp;
-- src += i_src;
-+ tmp += i_tmp;
-+ }
- }
-
-- offset = _mm_set1_epi32(add2);
-- max_pel = _mm_set1_epi16((pel)max_val);
-- tmp = tmp_res;
--
-- coeff00 = _mm_set1_epi16(*(s16*)coef_y);
-- coeff01 = _mm_set1_epi16(*(s16*)(coef_y + 2));
-- coeff02 = _mm_set1_epi16(*(s16*)(coef_y + 4));
-- coeff03 = _mm_set1_epi16(*(s16*)(coef_y + 6));
-- coeff00 = _mm_cvtepi8_epi16(coeff00);
-- coeff01 = _mm_cvtepi8_epi16(coeff01);
-- coeff02 = _mm_cvtepi8_epi16(coeff02);
-- coeff03 = _mm_cvtepi8_epi16(coeff03);
--
-- while (height--) {
-- T0 = _mm_load_si128((__m128i*)(tmp));
-- T1 = _mm_load_si128((__m128i*)(tmp + i_tmp));
-- T2 = _mm_load_si128((__m128i*)(tmp + 2 * i_tmp));
-- T3 = _mm_load_si128((__m128i*)(tmp + 3 * i_tmp));
-- T4 = _mm_load_si128((__m128i*)(tmp + 4 * i_tmp));
-- T5 = _mm_load_si128((__m128i*)(tmp + 5 * i_tmp));
-- T6 = _mm_load_si128((__m128i*)(tmp + 6 * i_tmp));
-- T7 = _mm_load_si128((__m128i*)(tmp + 7 * i_tmp));
-+ {
-+ __m128i N0, N1, N2, N3, N4, N5, N6, N7;
-+ __m128i T6, T7;
-+
-+ offset = _mm_set1_epi32(add2);
-+ max_pel = _mm_set1_epi16((pel)max_val);
-+ tmp = tmp_res;
-+
-+ mCoef0 = _mm_set1_epi16(((s16*)coef_y)[0]);
-+ mCoef1 = _mm_set1_epi16(((s16*)coef_y)[1]);
-+ mCoef2 = _mm_set1_epi16(((s16*)coef_y)[2]);
-+ mCoef3 = _mm_set1_epi16(((s16*)coef_y)[3]);
-+ mCoef0 = _mm_cvtepi8_epi16(mCoef0);
-+ mCoef1 = _mm_cvtepi8_epi16(mCoef1);
-+ mCoef2 = _mm_cvtepi8_epi16(mCoef2);
-+ mCoef3 = _mm_cvtepi8_epi16(mCoef3);
-+
-+ while (height--) {
-+ T0 = _mm_load_si128((__m128i*)(tmp));
-+ T1 = _mm_load_si128((__m128i*)(tmp + i_tmp));
-+ T2 = _mm_load_si128((__m128i*)(tmp + 2 * i_tmp));
-+ T3 = _mm_load_si128((__m128i*)(tmp + 3 * i_tmp));
-+ T4 = _mm_load_si128((__m128i*)(tmp + 4 * i_tmp));
-+ T5 = _mm_load_si128((__m128i*)(tmp + 5 * i_tmp));
-+ T6 = _mm_load_si128((__m128i*)(tmp + 6 * i_tmp));
-+ T7 = _mm_load_si128((__m128i*)(tmp + 7 * i_tmp));
-
-- M0 = _mm_unpacklo_epi16(T0, T1);
-- M1 = _mm_unpacklo_epi16(T2, T3);
-- M2 = _mm_unpacklo_epi16(T4, T5);
-- M3 = _mm_unpacklo_epi16(T6, T7);
-- M4 = _mm_unpackhi_epi16(T0, T1);
-- M5 = _mm_unpackhi_epi16(T2, T3);
-- M6 = _mm_unpackhi_epi16(T4, T5);
-- M7 = _mm_unpackhi_epi16(T6, T7);
-+ M0 = _mm_unpacklo_epi16(T0, T1);
-+ M1 = _mm_unpacklo_epi16(T2, T3);
-+ M2 = _mm_unpacklo_epi16(T4, T5);
-+ M3 = _mm_unpacklo_epi16(T6, T7);
-+ M4 = _mm_unpackhi_epi16(T0, T1);
-+ M5 = _mm_unpackhi_epi16(T2, T3);
-+ M6 = _mm_unpackhi_epi16(T4, T5);
-+ M7 = _mm_unpackhi_epi16(T6, T7);
-
-- N0 = _mm_madd_epi16(M0, coeff00);
-- N1 = _mm_madd_epi16(M1, coeff01);
-- N2 = _mm_madd_epi16(M2, coeff02);
-- N3 = _mm_madd_epi16(M3, coeff03);
-- N4 = _mm_madd_epi16(M4, coeff00);
-- N5 = _mm_madd_epi16(M5, coeff01);
-- N6 = _mm_madd_epi16(M6, coeff02);
-- N7 = _mm_madd_epi16(M7, coeff03);
-+ N0 = _mm_madd_epi16(M0, mCoef0);
-+ N1 = _mm_madd_epi16(M1, mCoef1);
-+ N2 = _mm_madd_epi16(M2, mCoef2);
-+ N3 = _mm_madd_epi16(M3, mCoef3);
-+ N4 = _mm_madd_epi16(M4, mCoef0);
-+ N5 = _mm_madd_epi16(M5, mCoef1);
-+ N6 = _mm_madd_epi16(M6, mCoef2);
-+ N7 = _mm_madd_epi16(M7, mCoef3);
-
-- N0 = _mm_add_epi32(N0, N1);
-- N1 = _mm_add_epi32(N2, N3);
-- N2 = _mm_add_epi32(N4, N5);
-- N3 = _mm_add_epi32(N6, N7);
-+ N0 = _mm_add_epi32(N0, N1);
-+ N1 = _mm_add_epi32(N2, N3);
-+ N2 = _mm_add_epi32(N4, N5);
-+ N3 = _mm_add_epi32(N6, N7);
-
-- N0 = _mm_add_epi32(N0, N1);
-- N1 = _mm_add_epi32(N2, N3);
-+ N0 = _mm_add_epi32(N0, N1);
-+ N1 = _mm_add_epi32(N2, N3);
-
-- N0 = _mm_add_epi32(N0, offset);
-- N1 = _mm_add_epi32(N1, offset);
-- N0 = _mm_srai_epi32(N0, shift2);
-- N1 = _mm_srai_epi32(N1, shift2);
-- N0 = _mm_packus_epi32(N0, N1);
-- N0 = _mm_min_epu16(N0, max_pel);
-- _mm_storeu_si128((__m128i*)(dst), N0);
-+ N0 = _mm_add_epi32(N0, offset);
-+ N1 = _mm_add_epi32(N1, offset);
-+ N0 = _mm_srai_epi32(N0, shift2);
-+ N1 = _mm_srai_epi32(N1, shift2);
-+ N0 = _mm_packus_epi32(N0, N1);
-+ N0 = _mm_min_epu16(N0, max_pel);
-+ _mm_storeu_si128((__m128i*)(dst), N0);
-
-- dst += i_dst;
-- tmp += i_tmp;
-+ dst += i_dst;
-+ tmp += i_tmp;
-+ }
- }
- }
-
-diff --git a/source/decore/sse/intra_pred_sse.c b/source/decore/sse/intra_pred_sse.c
-index b877834..d77b556 100644
---- a/source/decore/sse/intra_pred_sse.c
-+++ b/source/decore/sse/intra_pred_sse.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -713,13 +708,14 @@ void uavs3d_ipred_chroma_hor_sse(pel *src, pel *dst, int i_dst, int width, int h
-
- void uavs3d_ipred_dc_sse(pel *src, pel *dst, int i_dst, int width, int height, u16 avail_cu, int bit_depth)
- {
-- int i, x, y;
-+ int x, y;
- int dc;
- pel *p_src = src - 1;
- int left_avail = IS_AVAIL(avail_cu, AVAIL_LE);
- int above_avail = IS_AVAIL(avail_cu, AVAIL_UP);
-
- if (left_avail && above_avail) {
-+ int i;
- int length = width + height + 1;
- __m128i sum = _mm_setzero_si128();
- __m128i val;
-@@ -828,7 +824,7 @@ void uavs3d_ipred_dc_sse(pel *src, pel *dst, int i_dst, int width, int height, u
- void uavs3d_ipred_chroma_dc_sse(pel *src, pel *dst, int i_dst, int width, int height, u16 avail_cu, int bit_depth)
- {
- __m128i T;
-- int i, x, y;
-+ int x, y;
- int dcU, dcV;
- pel *p_src = src - 2;
- int left_avail = IS_AVAIL(avail_cu, AVAIL_LE);
-@@ -838,6 +834,7 @@ void uavs3d_ipred_chroma_dc_sse(pel *src, pel *dst, int i_dst, int width, int he
- int height2 = height << 1;
- int wh = width + height;
- int length = (wh << 1) + 2; // 2*(width + height + 1)
-+ int i;
- __m128i sum = _mm_setzero_si128();
- __m128i val;
-
-@@ -1787,7 +1784,6 @@ void uavs3d_ipred_ipf_s16_sse(pel *src, pel *dst, int i_dst, s16* pred, int flt_
- {
- pel *p_top = src + 1;
- int row;
-- int max_val = (1 << bit_depth) - 1;
- __m128i c_32 = _mm_set1_epi16(32);
- __m128i zero = _mm_setzero_si128();
- if (w == 4) {
-diff --git a/source/decore/sse/itrans_sse.c b/source/decore/sse/itrans_sse.c
-index f7a5051..217e88e 100644
---- a/source/decore/sse/itrans_sse.c
-+++ b/source/decore/sse/itrans_sse.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/sse/pixel_sse.c b/source/decore/sse/pixel_sse.c
-index 46ce33f..804b71d 100644
---- a/source/decore/sse/pixel_sse.c
-+++ b/source/decore/sse/pixel_sse.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/sse/sao_sse.c b/source/decore/sse/sao_sse.c
-index 3459b3e..5f4723b 100644
---- a/source/decore/sse/sao_sse.c
-+++ b/source/decore/sse/sao_sse.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/sse/sse.c b/source/decore/sse/sse.c
-index cb8c119..570edf5 100644
---- a/source/decore/sse/sse.c
-+++ b/source/decore/sse/sse.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/source/decore/sse/sse.h b/source/decore/sse/sse.h
-index 967808a..4e10ab7 100644
---- a/source/decore/sse/sse.h
-+++ b/source/decore/sse/sse.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -45,12 +40,18 @@
-
- #include "modules.h"
-
--#ifdef _WIN32
--
--#ifndef _WIN64
--#define _mm_extract_epi64(a, i) (a.m128i_i64[i])
--#endif
--
-+#if __x86_64__
-+#elif __i386__ && !defined(_mm_extract_epi64)
-+#define _mm_extract_epi64 _mm_extract_epi64
-+#include <stdint.h>
-+static inline int64_t _mm_extract_epi64(__m128i a, const int imm8) {
-+ return imm8 ? ((int64_t)_mm_extract_epi16(a, 7) << 48) |
-+ ((int64_t)_mm_extract_epi16(a, 6) << 32) |
-+ (_mm_extract_epi16(a, 5) << 16) | _mm_extract_epi16(a, 4)
-+ : ((int64_t)_mm_extract_epi16(a, 3) << 48) |
-+ ((int64_t)_mm_extract_epi16(a, 2) << 32) |
-+ (_mm_extract_epi16(a, 1) << 16) | _mm_extract_epi16(a, 0);
-+}
- #endif
-
- ALIGNED_32(extern pel uavs3d_simd_mask[15][16]);
-diff --git a/source/decore/threadpool.h b/source/decore/threadpool.h
-index 3370beb..6a74bac 100644
---- a/source/decore/threadpool.h
-+++ b/source/decore/threadpool.h
-@@ -11,9 +11,6 @@ typedef volatile long atom_t; // 32 bits, signed
- #if defined(_WIN32)
- #include "win32thread.h"
- #else
--
--#pragma comment(lib, "pthreadVC2.lib")
--
- #include <pthread.h>
- #define uavs3d_pthread_t pthread_t
- #define uavs3d_pthread_create pthread_create
-diff --git a/test/utest.c b/test/utest.c
-index 724c7d8..e4df366 100644
---- a/test/utest.c
-+++ b/test/utest.c
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-@@ -202,8 +197,8 @@ static int app_img_write(char * fname, uavs3d_io_frm_t * img, com_seqh_t *seqhdr
- return -1;
- }
- for (i = 0; i < 3; i++) {
-- int hor_size = seqhdr->horizontal_size >> (i ? 1 : 0);
-- int ver_size = seqhdr->vertical_size >> (i ? 1 : 0);
-+ int hor_size = seqhdr->display_horizontal_size >> (i ? 1 : 0);
-+ int ver_size = seqhdr->display_vertical_size >> (i ? 1 : 0);
- unsigned char * p8 = (unsigned char *)img->buffer[i];
-
- for (j = 0; j < ver_size; j++) {
-@@ -412,10 +407,13 @@ void output_callback(uavs3d_io_frm_t *frm) {
- }
-
- #if defined(__APPLE__) && (defined(__arm64__) || defined(__ARM_NEON__))
--int uavs3d_decode_sample(int argc, const char **argv)
--#else
--int main(int argc, const char **argv)
-+#include <TargetConditionals.h>
-+#if !TARGET_OS_OSX
-+#define main uavs3d_decode_sample
-+#endif
- #endif
-+
-+int main(int argc, const char **argv)
- {
- int decoding = 1;
- unsigned char * bs_buf = NULL;
-@@ -465,7 +463,7 @@ int main(int argc, const char **argv)
- dec_cfg.log_level = 1;
- dec_cfg.frm_threads = 1;
-
-- if (argc < 2) {
-+ if ((argc < 2) || !(argc % 2)) {
- log_level_0("Error config, please check arguments: \n");
- print_help();
- return -1;
-@@ -588,8 +586,8 @@ finished:
- if (frame_num) {
- width = dec_frame.width[0];
- height = dec_frame.height[0];
-- hor_size = dec_frame.seqhdr->horizontal_size;
-- ver_size = dec_frame.seqhdr->vertical_size;
-+ hor_size = dec_frame.seqhdr->display_horizontal_size;
-+ ver_size = dec_frame.seqhdr->display_vertical_size;
-
- log_level_1("=========================================================================================\n");
- log_level_1(" Resolution = %d x %d (Coding: %d x %d)\n", hor_size, ver_size, width, height);
-diff --git a/test/utest.h b/test/utest.h
-index aceb8a4..1dbd239 100644
---- a/test/utest.h
-+++ b/test/utest.h
-@@ -1,5 +1,5 @@
- /**************************************************************************************
-- * Copyright (c) 2018-2020 ["Peking University Shenzhen Graduate School",
-+ * Copyright (c) 2018-2022 ["Peking University Shenzhen Graduate School",
- * "Peng Cheng Laboratory", and "Guangdong Bohua UHD Innovation Corporation"]
- *
- * All rights reserved.
-@@ -11,12 +11,7 @@
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
-- * 3. All advertising materials mentioning features or use of this software
-- * must display the following acknowledgement:
-- * This product includes the software uAVS3d developed by
-- * Peking University Shenzhen Graduate School, Peng Cheng Laboratory
-- * and Guangdong Bohua UHD Innovation Corporation.
-- * 4. Neither the name of the organizations (Peking University Shenzhen Graduate School,
-+ * 3. Neither the name of the organizations (Peking University Shenzhen Graduate School,
- * Peng Cheng Laboratory and Guangdong Bohua UHD Innovation Corporation) nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
-diff --git a/version.sh b/version.sh
-index 65e2df7..034d454 100755
---- a/version.sh
-+++ b/version.sh
-@@ -15,12 +15,12 @@ else
- shell_dir=$1
- fi
-
--VER_R=`git rev-list origin/master | sort | wc -l | gawk '{print $1}'`
--VER_L=`git rev-list HEAD | sort | wc -l | gawk '{print $1}'`
-+VER_R=`git rev-list origin/master | sort | wc -l | awk '{print $1}'`
-+VER_L=`git rev-list HEAD | sort | wc -l | awk '{print $1}'`
- VER_SHA1=`git log -n 1 | head -n 1 | cut -d ' ' -f 2`
-
- major_version="1"
--minor_version="1"
-+minor_version="2"
- type_version="release"
-
- # generate the file version.h
diff --git a/multimedia/uavs3d/fix-libdir-in-cmakelists.patch b/multimedia/uavs3d/fix-libdir.patch
index 375a1e87e2..1a8dc3ed44 100644
--- a/multimedia/uavs3d/fix-libdir-in-cmakelists.patch
+++ b/multimedia/uavs3d/fix-libdir.patch
@@ -1,11 +1,11 @@
---- /home/ben/sbo/ff/uavs3d/source/CMakeLists.txt 2024-02-21 15:38:58.265755999 +0530
-+++ /home/ben/sbo/ff/uavs3d/source/CMakeListsn.txt 2024-02-21 16:03:45.133751729 +0530
+--- CMakeLists.txt 2023-02-23 08:04:14.000000000 +0530
++++ CMakeListsn.txt 2024-04-29 23:03:55.252641340 +0530
@@ -13,6 +13,8 @@
" Unexpected pointer size ${CMAKE_SIZEOF_VOID_P} for ${CMAKE_SYSTEM_PROCESSOR}\n")
endif()
elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386" OR
+ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i586" OR
-+ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686" OR
++ "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686" OR
"${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86")
set(UAVS3D_TARGET_CPU "x86")
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64" OR
diff --git a/multimedia/uavs3d/uavs3d.SlackBuild b/multimedia/uavs3d/uavs3d.SlackBuild
index 141e072f29..f49506bf41 100644
--- a/multimedia/uavs3d/uavs3d.SlackBuild
+++ b/multimedia/uavs3d/uavs3d.SlackBuild
@@ -25,17 +25,19 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=uavs3d
-VERSION=${VERSION:-1.1}
+VERSION=${VERSION:-1fd0491_20230223}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
sys_arch=${sys_arch:-$(uname -m)}
+COMMIT=${COMMIT:-1fd04917cff50fac72ae23e45f82ca6fd9130bd8}
+COMMITDATE=${COMMITDATE:-20230223}
case "$sys_arch" in
i586) export ARCH=i586 ;;
i686) export ARCH=i686 ;;
x86_64) export ARCH=x86_64 ;;
- *) echo "This program will not build on $sys_arch platform" && exit 1 ;;
+ *) echo "This SlackBuild will not build on $sys_arch platform" && exit 1 ;;
esac
TMP=${TMP:-/tmp/SBo}
@@ -52,7 +54,7 @@ elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fPIC"
LIBDIRSUFFIX="64"
else
- echo "This program will not build on $sys_arch platform" && exit 1
+ echo "This SlackBuild will not build on $sys_arch platform" && exit 1
fi
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
@@ -66,9 +68,9 @@ trap 'echo "$0 FAILED at line $LINENO!" | tee -a $OUTPUT/error-${PRGNAM}.log' ER
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM-$COMMIT
+tar xvf $CWD/$PRGNAM-$COMMIT.tar.gz
+cd $PRGNAM-$COMMIT
chown -R root:root .
find -L . \
@@ -77,14 +79,13 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-patch -p1 --verbose --unified < $CWD/fix-build-issue.patch
cd source
-patch --verbose --unified < $CWD/fix-libdir-in-cmakelists.patch
+patch --verbose --unified < $CWD/fix-libdir.patch
cd ..
mkdir -pv build/linux
-cmake -B build/linux -S $TMP/$PRGNAM-$VERSION \
+cmake -B build/linux -S $TMP/$PRGNAM-$COMMIT \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE:STRING=Release \
@@ -95,9 +96,9 @@ cmake -B build/linux -S $TMP/$PRGNAM-$VERSION \
cmake --build build/linux
-make -C $TMP/$PRGNAM-$VERSION/build/linux DESTDIR="$PKG" install
+make -C $TMP/$PRGNAM-$COMMIT/build/linux DESTDIR="$PKG" install
-install -D -m755 $TMP/$PRGNAM-$VERSION/build/linux/uavs3dec -t "$PKG/usr/bin"
+install -D -m755 $TMP/$PRGNAM-$COMMIT/build/linux/uavs3dec -t "$PKG/usr/bin"
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded --remove-section=.comment --remove-section=.note 2> /dev/null || true
diff --git a/multimedia/uavs3d/uavs3d.info b/multimedia/uavs3d/uavs3d.info
index ee0adc5d16..940e617735 100644
--- a/multimedia/uavs3d/uavs3d.info
+++ b/multimedia/uavs3d/uavs3d.info
@@ -1,8 +1,8 @@
PRGNAM="uavs3d"
-VERSION="1.1"
+VERSION="1fd0491_20230223"
HOMEPAGE="https://github.com/uavs3/uavs3d"
-DOWNLOAD="https://github.com/uavs3/uavs3d/archive/v1.1/uavs3d-1.1.tar.gz"
-MD5SUM="a22d9d4f1da4d1e2d0b19a25754505c3"
+DOWNLOAD="https://github.com/uavs3/uavs3d/archive/1fd0491/uavs3d-1fd04917cff50fac72ae23e45f82ca6fd9130bd8.tar.gz"
+MD5SUM="347425aec780f5dfee3baa768bca02aa"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/vgmplay/vgmplay.SlackBuild b/multimedia/vgmplay/vgmplay.SlackBuild
index 00df60594f..735833f8f9 100644
--- a/multimedia/vgmplay/vgmplay.SlackBuild
+++ b/multimedia/vgmplay/vgmplay.SlackBuild
@@ -38,9 +38,6 @@ case "$( uname -m )" in
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -69,9 +66,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
+rm -rf $PRGNAM-legacy-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION/VGMPlay
+cd $PRGNAM-legacy-$VERSION/VGMPlay
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
diff --git a/multimedia/vgmplay/vgmplay.info b/multimedia/vgmplay/vgmplay.info
index 2d26e2fb13..a2051cccff 100644
--- a/multimedia/vgmplay/vgmplay.info
+++ b/multimedia/vgmplay/vgmplay.info
@@ -2,7 +2,7 @@ PRGNAM="vgmplay"
VERSION="0.40.9"
HOMEPAGE="https://github.com/vgmrips/vgmplay"
DOWNLOAD="https://github.com/vgmrips/vgmplay/archive/0.40.9/vgmplay-0.40.9.tar.gz"
-MD5SUM="a2217e465c5e3bdebc47dbb15a6cb436"
+MD5SUM="89097227705321156c0b319f5e0d529d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/multimedia/vvenc/README b/multimedia/vvenc/README
index e730b8c6df..4cc2bb4e6d 100644
--- a/multimedia/vvenc/README
+++ b/multimedia/vvenc/README
@@ -5,15 +5,6 @@ by running the following:
vvencapp --help
vvencFFapp --help
-Two issues with the 32bit build currently exist:
-
- 1. VVenC does not currently build on 32bit Linux
- although a fix for this is in progress upstream;
- see Issue 242 on the VVenC github site.
- 2. When failure to build is addressed it is unlikely
- that the memory limits of 32bit processors will allow
- effective encoding.
-
-Note that playback of H.266/VVC files is also currently a
-little challenging under Linux, although 3rd party patches
-for FFmpeg exist.
+Note that playback of H.266/VVC files is currently a little
+challenging under Linux, although 3rd party patches for FFmpeg
+exist.
diff --git a/multimedia/vvenc/vvenc.SlackBuild b/multimedia/vvenc/vvenc.SlackBuild
index c2fbedcf44..c1f179f699 100644
--- a/multimedia/vvenc/vvenc.SlackBuild
+++ b/multimedia/vvenc/vvenc.SlackBuild
@@ -2,7 +2,7 @@
# ----------------------------------------------------------------------
# Slackware build script for vvenc
#
-# Copyright (c) 2023 Andrew Strong, Blue Mountains, Australia.
+# Copyright (c) 2023-2024 Andrew Strong, Blue Mountains, Australia.
#
# Permission to use, copy, modify, and distribute this software for
# any purpose with or without fee is hereby granted, provided that
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=vvenc
-VERSION=${VERSION:-1.7.0}
+VERSION=${VERSION:-1.11.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -86,6 +86,7 @@ cd build
-DCMAKE_INSTALL_LIBDIR:PATH=lib${LIBDIRSUFFIX} \
-DCMAKE_INSTALL_INCLUDEDIR:PATH=include \
-DBUILD_SHARED_LIBS=1 \
+ -DVVENC_INSTALL_FULLFEATURE_APP=on \
-DCMAKE_BUILD_TYPE=Release ..
make
make install DESTDIR=$PKG
diff --git a/multimedia/vvenc/vvenc.info b/multimedia/vvenc/vvenc.info
index af0bda914c..6751c31e78 100644
--- a/multimedia/vvenc/vvenc.info
+++ b/multimedia/vvenc/vvenc.info
@@ -1,10 +1,10 @@
PRGNAM="vvenc"
-VERSION="1.7.0"
+VERSION="1.11.1"
HOMEPAGE="https://github.com/fraunhoferhhi/vvenc"
-DOWNLOAD="UNSUPPORTED"
-MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/fraunhoferhhi/vvenc/archive/v1.7.0/vvenc-1.7.0.tar.gz"
-MD5SUM_x86_64="bd14534787f4180cd5bebb248b27285f"
+DOWNLOAD="https://github.com/fraunhoferhhi/vvenc/archive/v1.11.1/vvenc-1.11.1.tar.gz"
+MD5SUM="c3267221f7d0f74fe58d751188c2efbb"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Andrew Strong"
EMAIL="andrew.david.strong@gmail.com"
diff --git a/multimedia/w_scan_cpp/w_scan_cpp.SlackBuild b/multimedia/w_scan_cpp/w_scan_cpp.SlackBuild
index d12732059e..8851345c45 100644
--- a/multimedia/w_scan_cpp/w_scan_cpp.SlackBuild
+++ b/multimedia/w_scan_cpp/w_scan_cpp.SlackBuild
@@ -26,10 +26,10 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=w_scan_cpp
VERSION=${VERSION:-20231015}
-VERSION_vdr=${VERSION_vdr:-2.6.5}
+VERSION_vdr=${VERSION_vdr:-2.6.7}
VERSION_satip=${VERSION_satip:-2.4.1}
VERSION_wirbelscan=${VERSION_wirbelscan:-2023.10.15}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
NUMJOBS=${NUMJOBS:-" -j$(nproc) "}
diff --git a/multimedia/w_scan_cpp/w_scan_cpp.info b/multimedia/w_scan_cpp/w_scan_cpp.info
index fc22ea9bb1..2749833793 100644
--- a/multimedia/w_scan_cpp/w_scan_cpp.info
+++ b/multimedia/w_scan_cpp/w_scan_cpp.info
@@ -4,11 +4,11 @@ HOMEPAGE="https://www.gen2vdr.de/wirbel/w_scan_cpp/index2.html"
DOWNLOAD="https://www.gen2vdr.de/wirbel/w_scan_cpp/w_scan_cpp-20231015.tar.bz2 \
https://www.gen2vdr.de/wirbel/wirbelscan/vdr-wirbelscan-2023.10.15.tgz \
https://github.com/rofafor/vdr-plugin-satip/archive/v2.4.1/vdr-plugin-satip-2.4.1.tar.gz \
- https://github.com/vdr-projects/vdr/archive/2.6.5/vdr-2.6.5.tar.gz"
+ https://github.com/vdr-projects/vdr/archive/2.6.7/vdr-2.6.7.tar.gz"
MD5SUM="ac6bca5260c571f81648bf735c0731b8 \
8a012699c1dd1e6ef9b8dd2ddc60d6af \
cd9ff5d2b47c3e55d64dbc375f84a5a7 \
- ded2dd49fd81368d5789393ed087c382"
+ 8da42e7f522f0a5c53ec28256275688e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="pugixml librepfunc"
diff --git a/multimedia/winff/changelog b/multimedia/winff/changelog
index a67e2f90bc..e464b2ee64 100644
--- a/multimedia/winff/changelog
+++ b/multimedia/winff/changelog
@@ -121,3 +121,8 @@ Resubmit to SBo
Modify the SlackBuild to avoid creating object code files to /usr/share/lazarus
when compiling winff and remove unused function in doinst.sh Thanks to Andrew Clemons
for pointing it out.
+
+27/04/2024:
+
+Updated to version 1.6.4
+Fixed dead links. Fix documentation to properly open the pdf.
diff --git a/multimedia/winff/patches/unit1-pas.patch b/multimedia/winff/patches/unit1-pas.patch
index 402e4634a9..cb6ddd2217 100644
--- a/multimedia/winff/patches/unit1-pas.patch
+++ b/multimedia/winff/patches/unit1-pas.patch
@@ -1,5 +1,5 @@
---- unit1.pas 2023-10-03 19:20:47.000000000 +0530
-+++ unit1n.pas 2024-01-10 22:26:54.221464261 +0530
+--- unit1.pas 2024-04-17 01:41:03.000000000 +0530
++++ unit1n.pas 2024-04-25 19:19:53.307142871 +0530
@@ -1,8 +1,8 @@
unit Unit1;
@@ -9,35 +9,39 @@
-// http://winff.org
+// https://github.com/WinFF/winff
// Licensed under the GPL v3 or any later version
- //
+
// This program is free software: you can redistribute it and/or modify
-@@ -1988,16 +1988,16 @@
- language:=leftstr(lang,2);
- {$ifdef unix}
- s :='';
-- if fileexists('/usr/share/doc/winff/WinFF.' + language + '.pdf.gz') then s:='/usr/share/doc/winff/WinFF.' + language + '.pdf.gz';
-- if fileexists('/usr/share/doc/winff/WinFF.' + language + '.pdf') then s:='/usr/share/doc/winff/WinFF.' + language + '.pdf';
-+ if fileexists('/usr/share/doc/winff/WinFF.' + language + '.pdf.gz') then s:='/usr/doc/winff-20231003_31b79e3/WinFF.' + language + '.pdf.gz';
-+ if fileexists('/usr/share/doc/winff/WinFF.' + language + '.pdf') then s:='/usr/doc/winff-20231003_31b79e3/WinFF.' + language + '.pdf';
- if fileexists('/usr/share/winff/WinFF.' + language + '.pdf') then s:='/usr/share/winff/WinFF.' + language + '.pdf';
- if fileexists('/usr/share/winff/WinFF.' + language + '.pdf.gz') then s:='/usr/share/winff/WinFF.' + language + '.pdf.gz';
- if fileexists('/usr/share/doc/packages/winff/WinFF.' + language + '.pdf.gz') then s:='/usr/share/doc/packages/winff/WinFF.' + language + '.pdf.gz';
- if fileexists('/usr/share/doc/packages/winff/WinFF.' + language + '.pdf') then s:='/usr/share/doc/packages/winff/WinFF.' + language + '.pdf';
- if s='' then
- begin
-- s := '/usr/share/doc/winff/WinFF.en.pdf.gz';
-- if fileexists('/usr/share/doc/winff/WinFF.en.pdf') then s:='/usr/share/doc/winff/WinFF.en.pdf';
-+ s := '/usr/doc/winff-20231003_31b79e3/WinFF.en.pdf.gz';
-+ if fileexists('/usr/doc/winff-20231003_31b79e3/WinFF.en.pdf') then s:='/usr/doc/winff-20231003_31b79e3/WinFF.en.pdf';
- if fileexists('/usr/share/winff/WinFF.en.pdf') then s:='/usr/share/winff/WinFF.en.pdf';
- if fileexists('/usr/share/winff/WinFF.en.pdf.gz') then s:='/usr/share/winff/WinFF.en.pdf.gz';
- if fileexists('/usr/share/doc/packages/winff/WinFF.en.pdf.gz') then s:='/usr/share/doc/packages/winff/WinFF.en.pdf.gz';
-@@ -2015,7 +2015,7 @@
+@@ -1795,20 +1795,12 @@
+ language:=leftstr(lang,2);
+ {$ifdef unix}
+ s :='';
+- if fileexists('/usr/share/doc/winff/WinFF.' + language + '.pdf.gz') then s:='/usr/share/doc/winff/WinFF.' + language + '.pdf.gz';
+- if fileexists('/usr/share/doc/winff/WinFF.' + language + '.pdf') then s:='/usr/share/doc/winff/WinFF.' + language + '.pdf';
+- if fileexists('/usr/share/winff/WinFF.' + language + '.pdf') then s:='/usr/share/winff/WinFF.' + language + '.pdf';
+- if fileexists('/usr/share/winff/WinFF.' + language + '.pdf.gz') then s:='/usr/share/winff/WinFF.' + language + '.pdf.gz';
+- if fileexists('/usr/share/doc/packages/winff/WinFF.' + language + '.pdf.gz') then s:='/usr/share/doc/packages/winff/WinFF.' + language + '.pdf.gz';
+- if fileexists('/usr/share/doc/packages/winff/WinFF.' + language + '.pdf') then s:='/usr/share/doc/packages/winff/WinFF.' + language + '.pdf';
++ if fileexists('/usr/doc/winff-1.6.4/WinFF.' + language + '.pdf.gz') then s:='/usr/doc/winff-1.6.4/WinFF.' + language + '.pdf.gz';
++ if fileexists('/usr/doc/winff-1.6.4/WinFF.' + language + '.pdf') then s:='/usr/doc/winff-1.6.4/WinFF.' + language + '.pdf';
+ if s='' then
+ begin
+- s := '/usr/share/doc/winff/WinFF.en.pdf.gz';
+- if fileexists('/usr/share/doc/winff/WinFF.en.pdf') then s:='/usr/share/doc/winff/WinFF.en.pdf';
+- if fileexists('/usr/share/winff/WinFF.en.pdf') then s:='/usr/share/winff/WinFF.en.pdf';
+- if fileexists('/usr/share/winff/WinFF.en.pdf.gz') then s:='/usr/share/winff/WinFF.en.pdf.gz';
+- if fileexists('/usr/share/doc/packages/winff/WinFF.en.pdf.gz') then s:='/usr/share/doc/packages/winff/WinFF.en.pdf.gz';
+- if fileexists('/usr/share/doc/packages/winff/WinFF.en.pdf') then s:='/usr/share/doc/packages/winff/WinFF.en.pdf';
++ s := '/usr/doc/winff-1.6.4/WinFF.en.pdf.gz';
++ if fileexists('/usr/doc/winff-1.6.4/WinFF.en.pdf') then s:='/usr/doc/winff-1.6.4/WinFF.en.pdf';
+ end;
+ {$endif}
+ {$IFDEF WINDOWS}
+@@ -1821,7 +1813,7 @@
+ //menu: Help Forums
procedure TfrmMain.mitForumsClick(Sender: TObject);
-
begin
-- launchbrowser('https://groups.google.com/g/winff');
-+ launchbrowser('https://github.com/WinFF/winff/issues');
+- launchbrowser('https://groups.google.com/g/winff');
++ launchbrowser('http://github.com/WinFF/winff/issues');
end;
procedure TfrmMain.mitRestoreDefaultsClick(Sender: TObject);
diff --git a/multimedia/winff/patches/unit3-pas.patch b/multimedia/winff/patches/unit3-pas.patch
index 1d99d96642..5f8dd7c238 100644
--- a/multimedia/winff/patches/unit3-pas.patch
+++ b/multimedia/winff/patches/unit3-pas.patch
@@ -1,7 +1,8 @@
---- unit3.pas 2024-02-19 19:19:13.000000000 +0530
-+++ unit3n.pas 2024-02-27 18:15:24.377843083 +0530
-@@ -1,8 +1,8 @@
- unit Unit3;
+--- unit3.pas 2024-04-17 01:41:03.000000000 +0530
++++ unit3n.pas 2024-04-25 17:30:56.674161644 +0530
+@@ -2,9 +2,9 @@
+
+ // About form
-// WInFF 1.0 Copyright 2006-2013 Matthew Weatherford
+// WInFF 1.0 Copyright 2006-2024 Matthew Weatherford
@@ -9,69 +10,69 @@
-// http://winff.org
+// https://github.com/WinFF/winff
// Licensed under the GPL v3 or any later version
- //
+
// This program is free software: you can redistribute it and/or modify
-@@ -62,7 +62,6 @@
- procedure lblBellardClick(Sender: TObject);
- procedure lblGeversClick(Sender: TObject);
- procedure lblStoffbergClick(Sender: TObject);
-- procedure lblGmaqClick(Sender: TObject);
- procedure lblURLZeranoClick(Sender: TObject);
- procedure lblWeatherfordClick(Sender: TObject);
- procedure lblURLWinffOrgClick(Sender: TObject);
-@@ -132,27 +131,22 @@
+@@ -60,7 +60,6 @@
+ procedure lblBellardClick(Sender: TObject);
+ procedure lblGeversClick(Sender: TObject);
+ procedure lblStoffbergClick(Sender: TObject);
+- procedure lblGmaqClick(Sender: TObject);
+ procedure lblURLZeranoClick(Sender: TObject);
+ procedure lblWeatherfordClick(Sender: TObject);
+ procedure lblURLWinffOrgClick(Sender: TObject);
+@@ -128,27 +127,22 @@
procedure TfrmAbout.lblBellardClick(Sender: TObject);
begin
-
-+ frmMain.LaunchBrowser('https://bellard.org/');
++ frmMain.LaunchBrowser('https://bellard.org/');
end;
procedure TfrmAbout.lblGeversClick(Sender: TObject);
begin
-- frmMain.LaunchBrowser('https://launchpad.net/~paul-climbing/+archive/ppa/');
-+ frmMain.LaunchBrowser('https://tracker.debian.org/pkg/winff');
+- frmMain.LaunchBrowser('https://launchpad.net/~paul-climbing/+archive/ppa/');
++ frmMain.LaunchBrowser('https://tracker.debian.org/pkg/winff');
end;
procedure TfrmAbout.lblStoffbergClick(Sender: TObject);
begin
--frmMain.LaunchBrowser('http://istoff.blogspot.com');
+- frmMain.LaunchBrowser('http://istoff.blogspot.com');
-end;
-
-procedure TfrmAbout.lblGmaqClick(Sender: TObject);
-begin
-- frmMain.LaunchBrowser('http://www.bandshed.net/');
-+frmMain.LaunchBrowser('https://istoff.blogspot.com');
+- frmMain.LaunchBrowser('http://www.bandshed.net/');
++ frmMain.LaunchBrowser('https://istoff.blogspot.com');
end;
procedure TfrmAbout.lblURLZeranoClick(Sender: TObject);
begin
-- frmMain.LaunchBrowser('http://ffmpeg.zeranoe.com');
-+ frmMain.LaunchBrowser('https://www.gyan.dev/ffmpeg/builds');
+- frmMain.LaunchBrowser('http://ffmpeg.zeranoe.com');
++ frmMain.LaunchBrowser('https://www.gyan.dev/ffmpeg/builds');
end;
procedure TfrmAbout.btnOkClick(Sender: TObject);
-@@ -162,7 +156,7 @@
+@@ -158,7 +152,7 @@
procedure TfrmAbout.lblWeatherfordClick(Sender: TObject);
begin
-- frmMain.LaunchBrowser('http://www.biggmatt.com');
-+ frmMain.LaunchBrowser('https://www.biggmatt.com/p/winff.html');
+- frmMain.LaunchBrowser('http://www.biggmatt.com');
++ frmMain.LaunchBrowser('https://github.com/WinFF/winff');
end;
procedure TfrmAbout.lblURLWinffOrgClick(Sender: TObject);
-@@ -172,12 +166,12 @@
+@@ -168,12 +162,12 @@
procedure TfrmAbout.lblURLffmpegClick(Sender: TObject);
begin
-- frmMain.LaunchBrowser('http://ffmpeg.org/');
-+ frmMain.LaunchBrowser('https://ffmpeg.org/');
+- frmMain.LaunchBrowser('http://ffmpeg.org/');
++ frmMain.LaunchBrowser('https://ffmpeg.org/');
end;
procedure TfrmAbout.lblwinbuildsClick(Sender: TObject);
begin
-- frmMain.LaunchBrowser('http://ffmpeg.zeranoe.com/builds/');
-+ frmMain.LaunchBrowser('https://www.gyan.dev/ffmpeg/builds');
+- frmMain.LaunchBrowser('http://ffmpeg.zeranoe.com/builds/');
++ frmMain.LaunchBrowser('https://www.gyan.dev/ffmpeg/builds');
end;
procedure TfrmAbout.lblWindowsBuildsClick(Sender: TObject);
diff --git a/multimedia/winff/patches/winff-lpi.patch b/multimedia/winff/patches/winff-lpi.patch
index 663bce1c32..5c606b7ec4 100644
--- a/multimedia/winff/patches/winff-lpi.patch
+++ b/multimedia/winff/patches/winff-lpi.patch
@@ -1,5 +1,5 @@
---- winff.lpi 2023-10-03 19:20:47.000000000 +0530
-+++ winffn.lpi 2024-01-10 22:47:30.406244263 +0530
+--- winff.lpi 2024-04-17 01:41:03.000000000 +0530
++++ winffn.lpi 2024-04-25 17:33:23.998161221 +0530
@@ -20,7 +20,7 @@
<MajorVersionNr Value="1"/>
<MinorVersionNr Value="6"/>
@@ -9,23 +9,11 @@
</VersionInfo>
<BuildModes Count="1">
<Item1 Name="default" Default="True"/>
-@@ -117,6 +117,11 @@
- <UseAnsiStrings Value="False"/>
- </SyntaxOptions>
- </Parsing>
-+ <CodeGeneration>
-+ <Optimizations>
-+ <OptimizationLevel Value="2"/>
-+ </Optimizations>
-+ </CodeGeneration>
- <Linking>
- <Debugging>
- <DebugInfoType Value="dsStabs"/>
-@@ -124,7 +129,7 @@
- <LinkSmart Value="True"/>
+@@ -129,7 +129,7 @@
+ </Debugging>
<Options>
<PassLinkerOptions Value="True"/>
-- <LinkerOptions Value="--as-needed"/>
+- <LinkerOptions Value="--as-needed -zrelro -znow"/>
+ <LinkerOptions Value="--as-needed -zrelro -znow -zdefs -pie"/>
<Win32>
<GraphicApplication Value="True"/>
diff --git a/multimedia/winff/winff.SlackBuild b/multimedia/winff/winff.SlackBuild
index 70d2b7209e..52eb1ccfc3 100644
--- a/multimedia/winff/winff.SlackBuild
+++ b/multimedia/winff/winff.SlackBuild
@@ -31,7 +31,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=winff
-VERSION=${VERSION:-1.6.3}
+VERSION=${VERSION:-1.6.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/multimedia/winff/winff.info b/multimedia/winff/winff.info
index 5ac2f04f02..52aaafeaf7 100644
--- a/multimedia/winff/winff.info
+++ b/multimedia/winff/winff.info
@@ -1,8 +1,8 @@
PRGNAM="winff"
-VERSION="1.6.3"
+VERSION="1.6.4"
HOMEPAGE="https://github.com/WinFF/winff"
-DOWNLOAD="https://github.com/WinFF/winff/archive/winff-1.6.3/winff-winff-1.6.3.tar.gz"
-MD5SUM="7a85f02bd23acef5b916166f83586e82"
+DOWNLOAD="https://github.com/WinFF/winff/archive/winff-1.6.4/winff-winff-1.6.4.tar.gz"
+MD5SUM="23138be15b60bf3fcb1c11c634d44d16"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="libqtpas lazarus"
diff --git a/multimedia/xavs2/xavs2.SlackBuild b/multimedia/xavs2/xavs2.SlackBuild
index 64ac967293..d140ef2ae7 100644
--- a/multimedia/xavs2/xavs2.SlackBuild
+++ b/multimedia/xavs2/xavs2.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for xavs2
-# Copyright 2022, Vijay Marcel
+# Copyright 2022-2024, Vijay Marcel
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -29,37 +29,31 @@ VERSION=${VERSION:-1.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
+sys_arch=${sys_arch:-$(uname -m)}
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) export ARCH=i586 ;;
- arm*) export ARCH=arm ;;
- *) export ARCH=$( uname -m ) ;;
- esac
-fi
+case "$sys_arch" in
+ x86_64) export ARCH=x86_64 ;;
+ *) echo "This program will not build on $sys_arch platform" && exit 1 ;;
+esac
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ SLKCFLAGS="-march=i586 -mtune=i686 -pipe -O2 -fPIC"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ SLKCFLAGS="-march=i686 -mtune=i686 -pipe -O2 -fPIC"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
+ SLKCFLAGS="-march=x86-64 -mtune=generic -pipe -O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
-
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -74,7 +68,6 @@ cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
-cd build/linux/
chown -R root:root .
find -L . \
@@ -83,6 +76,7 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+cd build/linux/
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -90,11 +84,10 @@ CXXFLAGS="$SLKCFLAGS" \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--bindir=/usr/bin \
--enable-shared \
- --bit-depth='8' \
- --chroma-format='all' \
- --enable-lto \
- --system-libxavs2 \
- --enable-strip
+ --bit-depth=8 \
+ --chroma-format=all \
+ --enable-strip \
+ --disable-asm
make
make install DESTDIR=$PKG
@@ -105,7 +98,7 @@ cd ../..
rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" \
- | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded --remove-section=.comment --remove-section=.note 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a COPYING README.md $PKG/usr/doc/$PRGNAM-$VERSION
diff --git a/multimedia/xavs2/xavs2.info b/multimedia/xavs2/xavs2.info
index 8ac339e43d..68dda4eedc 100644
--- a/multimedia/xavs2/xavs2.info
+++ b/multimedia/xavs2/xavs2.info
@@ -1,10 +1,10 @@
PRGNAM="xavs2"
VERSION="1.4"
HOMEPAGE="https://github.com/pkuvcl/xavs2"
-DOWNLOAD="https://github.com/pkuvcl/xavs2/archive/1.4/xavs2-1.4.tar.gz"
-MD5SUM="b776941aad474fed23da1d1eb0c0b720"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/pkuvcl/xavs2/archive/1.4/xavs2-1.4.tar.gz"
+MD5SUM_x86_64="b776941aad474fed23da1d1eb0c0b720"
REQUIRES=""
MAINTAINER="Vijay Marcel"
EMAIL="vijaymarcel@outlook.com"
diff --git a/network/QuiteRSS/QuiteRSS.info b/network/QuiteRSS/QuiteRSS.info
index f37df41ce7..31bc5425d5 100644
--- a/network/QuiteRSS/QuiteRSS.info
+++ b/network/QuiteRSS/QuiteRSS.info
@@ -1,7 +1,7 @@
PRGNAM="QuiteRSS"
VERSION="0.19.4"
HOMEPAGE="http://quiterss.org/en/node"
-DOWNLOAD="https://quiterss.org/files/0.19.4_/QuiteRSS-0.19.4-src.tar.gz"
+DOWNLOAD="https://web.archive.org/web/20240314094710/https://quiterss.org/files/0.19.4_/QuiteRSS-0.19.4-src.tar.gz"
MD5SUM="96a25a33904dadba2daa3ea5c92d4388"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/network/argus-clients/argus-clients.SlackBuild b/network/argus-clients/argus-clients.SlackBuild
index dc8c09f2be..5021d2ce9d 100644
--- a/network/argus-clients/argus-clients.SlackBuild
+++ b/network/argus-clients/argus-clients.SlackBuild
@@ -10,6 +10,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=argus-clients
+SRCNAM=clients
VERSION=${VERSION:-3.0.8.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -53,7 +54,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
mv clients-$VERSION $PRGNAM-$VERSION
cd $PRGNAM-$VERSION
chown -R root:root .
diff --git a/network/argus-clients/argus-clients.info b/network/argus-clients/argus-clients.info
index 5686260c0a..f57e9a3fd4 100644
--- a/network/argus-clients/argus-clients.info
+++ b/network/argus-clients/argus-clients.info
@@ -1,7 +1,7 @@
PRGNAM="argus-clients"
VERSION="3.0.8.4"
HOMEPAGE="https://www.qosient.com/argus/index.shtml"
-DOWNLOAD="https://github.com/openargus/clients/archive/v3.0.8.4/argus-clients-3.0.8.4.tar.gz"
+DOWNLOAD="https://github.com/openargus/clients/archive/v3.0.8.4/clients-3.0.8.4.tar.gz"
MD5SUM="67768854b128be2c477b3c0ea9eaca50"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/network/bpfmon/bpfmon.SlackBuild b/network/bpfmon/bpfmon.SlackBuild
index 5331c3663c..e67a13693b 100644
--- a/network/bpfmon/bpfmon.SlackBuild
+++ b/network/bpfmon/bpfmon.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for bpfmon
-# Copyright 2022-2023 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
+# Copyright 2022-2024 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=bpfmon
-VERSION=${VERSION:-2.51}
+VERSION=${VERSION:-2.52}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/bpfmon/bpfmon.info b/network/bpfmon/bpfmon.info
index f7db79bf56..a6eaba6a29 100644
--- a/network/bpfmon/bpfmon.info
+++ b/network/bpfmon/bpfmon.info
@@ -1,8 +1,8 @@
PRGNAM="bpfmon"
-VERSION="2.51"
+VERSION="2.52"
HOMEPAGE="https://github.com/bbonev/bpfmon"
-DOWNLOAD="https://github.com/bbonev/bpfmon/releases/download/v2.51/bpfmon-2.51.tar.xz"
-MD5SUM="54c105b49808ac8b8ad7af0dba6f73b9"
+DOWNLOAD="https://github.com/bbonev/bpfmon/releases/download/v2.52/bpfmon-2.52.tar.xz"
+MD5SUM="421beb09d0c503f1dbee1a2198985a7f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="yascreen"
diff --git a/network/brave-browser/brave-browser.SlackBuild b/network/brave-browser/brave-browser.SlackBuild
index 8c757756b4..b8da43cbac 100644
--- a/network/brave-browser/brave-browser.SlackBuild
+++ b/network/brave-browser/brave-browser.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=brave-browser
-VERSION=${VERSION:-1.65.114}
+VERSION=${VERSION:-1.65.126}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/brave-browser/brave-browser.info b/network/brave-browser/brave-browser.info
index 77dafefff7..4f591c926f 100644
--- a/network/brave-browser/brave-browser.info
+++ b/network/brave-browser/brave-browser.info
@@ -1,10 +1,10 @@
PRGNAM="brave-browser"
-VERSION="1.65.114"
+VERSION="1.65.126"
HOMEPAGE="https://brave.com"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/brave/brave-browser/releases/download/v1.65.114/brave-browser-1.65.114-1.x86_64.rpm"
-MD5SUM_x86_64="bdd1be24d71588c20f93a29ec15bd791"
+DOWNLOAD_x86_64="https://github.com/brave/brave-browser/releases/download/v1.65.126/brave-browser-1.65.126-1.x86_64.rpm"
+MD5SUM_x86_64="7edca82047d8267638bf60155160475c"
REQUIRES=""
MAINTAINER="Andrew Payne"
EMAIL="phalange@komputermatrix.com"
diff --git a/network/cacti/cacti.SlackBuild b/network/cacti/cacti.SlackBuild
index ad194b09c5..51c674525a 100644
--- a/network/cacti/cacti.SlackBuild
+++ b/network/cacti/cacti.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=cacti
-VERSION=${VERSION:-1.1.38}
+VERSION=${VERSION:-1.2.26}
ARCH=noarch
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -36,9 +36,6 @@ DOCROOT=${DOCROOT:-/var/www/htdocs}
PHPUSER=${PHPUSER:-root}
PHPGROUP=${PHPGROUP:-apache}
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/network/cacti/cacti.info b/network/cacti/cacti.info
index bdfc98b130..04b86b39a0 100644
--- a/network/cacti/cacti.info
+++ b/network/cacti/cacti.info
@@ -1,8 +1,8 @@
PRGNAM="cacti"
-VERSION="1.1.38"
+VERSION="1.2.26"
HOMEPAGE="https://www.cacti.net/"
-DOWNLOAD="https://www.cacti.net/downloads/cacti-1.1.38.tar.gz"
-MD5SUM="9bf4b63fd661e1cb91ba13e538f38288"
+DOWNLOAD="https://www.cacti.net/downloads/cacti-1.2.26.tar.gz"
+MD5SUM="53043d8279640a074cc054c7b156375d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="rrdtool"
diff --git a/network/davmail/davmail.SlackBuild b/network/davmail/davmail.SlackBuild
index ae6c441bea..c714cfd4f2 100644
--- a/network/davmail/davmail.SlackBuild
+++ b/network/davmail/davmail.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for DavMail
-# Copyright (c) 2015-2022 Giuseppe Di Terlizzi <giuseppe.diterlizzi@gmail.com>
+# Copyright (c) 2015-2024 Giuseppe Di Terlizzi <giuseppe.diterlizzi@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -29,7 +29,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=davmail
-VERSION=${VERSION:-5.5.1}
+VERSION=${VERSION:-6.2.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/davmail/davmail.info b/network/davmail/davmail.info
index f24a018308..6a7d9442a9 100644
--- a/network/davmail/davmail.info
+++ b/network/davmail/davmail.info
@@ -1,8 +1,8 @@
PRGNAM="davmail"
-VERSION="5.5.1"
+VERSION="6.2.2"
HOMEPAGE="http://davmail.sourceforge.net"
-DOWNLOAD="https://sourceforge.net/projects/davmail/files/davmail/5.5.1/davmail-5.5.1-3299.zip"
-MD5SUM="ae194c3571e107081164913a001d6f27"
+DOWNLOAD="https://sourceforge.net/projects/davmail/files/davmail/6.2.2/davmail-6.2.2-3546.zip"
+MD5SUM="9c017f41e43ff7d2df7c33a1e068d0da"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="zulu-openjdk8"
diff --git a/network/discord/discord.SlackBuild b/network/discord/discord.SlackBuild
index 3c83566361..93a18588b5 100644
--- a/network/discord/discord.SlackBuild
+++ b/network/discord/discord.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=discord
-VERSION=${VERSION:-0.0.51}
+VERSION=${VERSION:-0.0.52}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/discord/discord.info b/network/discord/discord.info
index 307eda93e9..92b95bb9d3 100644
--- a/network/discord/discord.info
+++ b/network/discord/discord.info
@@ -1,10 +1,10 @@
PRGNAM="discord"
-VERSION="0.0.51"
+VERSION="0.0.52"
HOMEPAGE="https://discordapp.com"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://dl.discordapp.net/apps/linux/0.0.51/discord-0.0.51.deb"
-MD5SUM_x86_64="71e292afdc824b883b56f3b42f3c0463"
+DOWNLOAD_x86_64="https://dl.discordapp.net/apps/linux/0.0.52/discord-0.0.52.deb"
+MD5SUM_x86_64="24d5d49fd9ef0da86f5703b7ca37873a"
REQUIRES=""
MAINTAINER="Jeremy Hansen"
EMAIL="jebrhansen+SBo@gmail.com"
diff --git a/network/dnsproxy-bin/dnsproxy-bin.SlackBuild b/network/dnsproxy-bin/dnsproxy-bin.SlackBuild
index 5e51285404..3700915963 100644
--- a/network/dnsproxy-bin/dnsproxy-bin.SlackBuild
+++ b/network/dnsproxy-bin/dnsproxy-bin.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=dnsproxy-bin
-VERSION=${VERSION:-0.71.0}
+VERSION=${VERSION:-0.71.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/dnsproxy-bin/dnsproxy-bin.info b/network/dnsproxy-bin/dnsproxy-bin.info
index 5e0ff83294..2142d4f910 100644
--- a/network/dnsproxy-bin/dnsproxy-bin.info
+++ b/network/dnsproxy-bin/dnsproxy-bin.info
@@ -1,13 +1,13 @@
PRGNAM="dnsproxy-bin"
-VERSION="0.71.0"
+VERSION="0.71.1"
HOMEPAGE="https://github.com/AdguardTeam/dnsproxy"
-DOWNLOAD="https://github.com/AdguardTeam/dnsproxy/releases/download/v0.71.0/dnsproxy-linux-386-v0.71.0.tar.gz \
- https://raw.githubusercontent.com/AdguardTeam/dnsproxy/v0.71.0/config.yaml.dist"
-MD5SUM="be403c487eb5fe5afe70a3f027986a39 \
+DOWNLOAD="https://github.com/AdguardTeam/dnsproxy/releases/download/v0.71.1/dnsproxy-linux-386-v0.71.1.tar.gz \
+ https://raw.githubusercontent.com/AdguardTeam/dnsproxy/v0.71.1/config.yaml.dist"
+MD5SUM="1536d50297c7fdaa1754f15be45785ab \
5a8aaaacbc3aeb1af4aac34233f2d14b"
-DOWNLOAD_x86_64="https://github.com/AdguardTeam/dnsproxy/releases/download/v0.71.0/dnsproxy-linux-amd64-v0.71.0.tar.gz \
- https://raw.githubusercontent.com/AdguardTeam/dnsproxy/v0.71.0/config.yaml.dist"
-MD5SUM_x86_64="99d0b78843bc089668e09346c516c68e \
+DOWNLOAD_x86_64="https://github.com/AdguardTeam/dnsproxy/releases/download/v0.71.1/dnsproxy-linux-amd64-v0.71.1.tar.gz \
+ https://raw.githubusercontent.com/AdguardTeam/dnsproxy/v0.71.1/config.yaml.dist"
+MD5SUM_x86_64="1dd834f8afa0eb721977a1ede6cf8a5f \
5a8aaaacbc3aeb1af4aac34233f2d14b"
REQUIRES=""
MAINTAINER="Alexander Verbovetsky"
diff --git a/network/drawterm/drawterm.info b/network/drawterm/drawterm.info
index 0fec204c43..3711f8fd53 100644
--- a/network/drawterm/drawterm.info
+++ b/network/drawterm/drawterm.info
@@ -2,7 +2,7 @@ PRGNAM="drawterm"
VERSION="dc703b3438f9"
HOMEPAGE="http://drawterm.9front.org"
DOWNLOAD="https://code.9front.org/hg/drawterm/archive/dc703b3438f9.tar.gz"
-MD5SUM="d5625ed2b9f830e94e7ddce1872da6f4"
+MD5SUM="49f2fea5fefe6c184f01c7f4249f19b4"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/network/dropbear/dropbear.SlackBuild b/network/dropbear/dropbear.SlackBuild
index 490b671695..870bb7ec01 100644
--- a/network/dropbear/dropbear.SlackBuild
+++ b/network/dropbear/dropbear.SlackBuild
@@ -2,7 +2,7 @@
# Copyright 2007-2008, Piter Punk, São Paulo, Brazil
# Copyright 2017-2020,2022 Andrew Clemons, Wellington New Zealand
-# Copyright 2022 Andrew Clemons, Tokyo Japan
+# Copyright 2022,2024 Andrew Clemons, Tokyo Japan
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=dropbear
-VERSION=${VERSION:-2022.83}
+VERSION=${VERSION:-2024.85}
SRCVERSION="DROPBEAR_$VERSION"
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -77,8 +77,6 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-autoreconf -if
-
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -132,7 +130,7 @@ mkdir -p $PKG/etc/rc.d
cat $CWD/rc.dropbear.new > $PKG/etc/rc.d/rc.dropbear.new
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a CHANGES LICENSE MULTI README SMALL $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a CHANGES DEVELOPING.md FUZZER-NOTES.md LICENSE MULTI.md README.md SMALL.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/network/dropbear/dropbear.info b/network/dropbear/dropbear.info
index b4635fc56b..8fe661d388 100644
--- a/network/dropbear/dropbear.info
+++ b/network/dropbear/dropbear.info
@@ -1,8 +1,8 @@
PRGNAM="dropbear"
-VERSION="2022.83"
+VERSION="2024.85"
HOMEPAGE="https://github.com/mkj/dropbear"
-DOWNLOAD="https://github.com/mkj/dropbear/archive/DROPBEAR_2022.83/dropbear-DROPBEAR_2022.83.tar.gz"
-MD5SUM="f166e27ec24752ffa892910fc89a51b1"
+DOWNLOAD="https://github.com/mkj/dropbear/archive/DROPBEAR_2024.85/dropbear-DROPBEAR_2024.85.tar.gz"
+MD5SUM="d4b107f6fd103bc2c6ed7226bbae69b2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/network/dropbox/dropbox.SlackBuild b/network/dropbox/dropbox.SlackBuild
index f84854721d..5d1b5763ba 100644
--- a/network/dropbox/dropbox.SlackBuild
+++ b/network/dropbox/dropbox.SlackBuild
@@ -31,7 +31,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=dropbox
-VERSION=${VERSION:-196.4.6900}
+VERSION=${VERSION:-197.4.7629}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/dropbox/dropbox.info b/network/dropbox/dropbox.info
index 9df24e3a6b..77878c44de 100644
--- a/network/dropbox/dropbox.info
+++ b/network/dropbox/dropbox.info
@@ -1,10 +1,10 @@
PRGNAM="dropbox"
-VERSION="196.4.6900"
+VERSION="197.4.7629"
HOMEPAGE="https://www.dropbox.com"
-DOWNLOAD="https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86-196.4.6900.tar.gz"
-MD5SUM="691c757e0689c38df18d5d3a0e54b66c"
-DOWNLOAD_x86_64="https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86_64-196.4.6900.tar.gz"
-MD5SUM_x86_64="7ceac7a9546e337c78d13106fb923880"
+DOWNLOAD="https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86-197.4.7629.tar.gz"
+MD5SUM="e242860cabbb4ad5696aa1785c67b998"
+DOWNLOAD_x86_64="https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.x86_64-197.4.7629.tar.gz"
+MD5SUM_x86_64="953e587aa7d803d55286ac91873bb87c"
REQUIRES=""
MAINTAINER="Willy Sudiarto Raharjo"
EMAIL="willysr@slackbuilds.org"
diff --git a/network/freedownloadmanager/freedownloadmanager.SlackBuild b/network/freedownloadmanager/freedownloadmanager.SlackBuild
index aebf680763..478a103c6e 100644
--- a/network/freedownloadmanager/freedownloadmanager.SlackBuild
+++ b/network/freedownloadmanager/freedownloadmanager.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=freedownloadmanager
-VERSION=${VERSION:-6.16.0.4468}
+VERSION=${VERSION:-6.20.0.5510}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +38,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/network/freedownloadmanager/freedownloadmanager.info b/network/freedownloadmanager/freedownloadmanager.info
index 9469b5fffd..032ec1f397 100644
--- a/network/freedownloadmanager/freedownloadmanager.info
+++ b/network/freedownloadmanager/freedownloadmanager.info
@@ -1,8 +1,8 @@
PRGNAM="freedownloadmanager"
-VERSION="6.16.0.4468"
+VERSION="6.20.0.5510"
HOMEPAGE="https://www.freedownloadmanager.org"
DOWNLOAD="https://dn3.freedownloadmanager.org/6/latest/freedownloadmanager.deb"
-MD5SUM="d5c4888ca4ebf7473af898c98e943bf5"
+MD5SUM="5be30821ccb115819d54c8d0642b6c70"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/network/goimapnotify/go.mod b/network/goimapnotify/go.mod
index 7dd7616515..0769ccfa39 100644
--- a/network/goimapnotify/go.mod
+++ b/network/goimapnotify/go.mod
@@ -1,6 +1,6 @@
module gitlab.com/shackra/goimapnotify
-go 1.21.6
+go 1.22.1
require (
github.com/emersion/go-imap v1.2.1
@@ -10,6 +10,6 @@ require (
)
require (
- golang.org/x/sys v0.18.0 // indirect
+ golang.org/x/sys v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
)
diff --git a/network/goimapnotify/go.sum b/network/goimapnotify/go.sum
index b58b347ff4..910b3e0e89 100644
--- a/network/goimapnotify/go.sum
+++ b/network/goimapnotify/go.sum
@@ -26,8 +26,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
-golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
+golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
diff --git a/network/goimapnotify/goimapnotify.SlackBuild b/network/goimapnotify/goimapnotify.SlackBuild
index 4f84f8f0b9..314febaac3 100644
--- a/network/goimapnotify/goimapnotify.SlackBuild
+++ b/network/goimapnotify/goimapnotify.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=goimapnotify
-VERSION=${VERSION:-2.3.12}
+VERSION=${VERSION:-2.3.15}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -98,7 +98,7 @@ go build
install -sDm 755 goimapnotify -t $PKG/usr/bin
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a CHANGELOG.rst README.md $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a CHANGELOG* README* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/network/goimapnotify/goimapnotify.info b/network/goimapnotify/goimapnotify.info
index d28f3389f0..b51ff5a449 100644
--- a/network/goimapnotify/goimapnotify.info
+++ b/network/goimapnotify/goimapnotify.info
@@ -1,19 +1,19 @@
PRGNAM="goimapnotify"
-VERSION="2.3.12"
+VERSION="2.3.15"
HOMEPAGE="https://gitlab.com/shackra/goimapnotify"
-DOWNLOAD="https://gitlab.com/shackra/goimapnotify/-/archive/2.3.12/goimapnotify-2.3.12.tar.gz \
+DOWNLOAD="https://gitlab.com/shackra/goimapnotify/-/archive/2.3.15/goimapnotify-2.3.15.tar.gz \
https://github.com/emersion/go-imap/archive/v1.2.1/go-imap-v1.2.1.tar.gz \
https://github.com/emersion/go-imap-idle/archive/db25684/go-imap-idle-db2568431445.tar.gz \
https://github.com/emersion/go-sasl/archive/e73c9f7/go-sasl-e73c9f7bad43.tar.gz \
https://github.com/sirupsen/logrus/archive/v1.9.3/logrus-v1.9.3.tar.gz \
- https://github.com/golang/sys/archive/v0.18.0/sys-v0.18.0.tar.gz \
+ https://github.com/golang/sys/archive/v0.19.0/sys-v0.19.0.tar.gz \
https://github.com/golang/text/archive/v0.14.0/text-v0.14.0.tar.gz"
-MD5SUM="ace5c852d7c851e4cb9da3f4c576bba9 \
+MD5SUM="cdd63ac1f0465b365a0d49f48494bd63 \
337ec4e15b3b9435bec02d0b4c634797 \
0c60834c277747653bf1d883ac7660b2 \
efc2190ae65129b3e2531a9258181e98 \
29e75bd7c106e1853d2a9de8bd17dbb0 \
- e00453d8847cde61907bcbee219c44bb \
+ 884f364735b00bb72fcea01a6de28c46 \
9f64144d4b1647ce4597abf657028a8d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/network/goimapnotify/modules.txt b/network/goimapnotify/modules.txt
index 0429696a1f..1711fb33fa 100644
--- a/network/goimapnotify/modules.txt
+++ b/network/goimapnotify/modules.txt
@@ -16,7 +16,7 @@ github.com/emersion/go-sasl
# github.com/sirupsen/logrus v1.9.3
## explicit; go 1.13
github.com/sirupsen/logrus
-# golang.org/x/sys v0.18.0
+# golang.org/x/sys v0.19.0
## explicit; go 1.18
golang.org/x/sys/unix
golang.org/x/sys/windows
diff --git a/network/hylafax+/hylafax+.SlackBuild b/network/hylafax+/hylafax+.SlackBuild
index 18465f759a..32abfd11e8 100644
--- a/network/hylafax+/hylafax+.SlackBuild
+++ b/network/hylafax+/hylafax+.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=hylafax+
SRCNAM=hylafax
-VERSION=${VERSION:-7.0.5}
+VERSION=${VERSION:-7.0.8}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/hylafax+/hylafax+.info b/network/hylafax+/hylafax+.info
index fd7edd7862..57f3555f7c 100644
--- a/network/hylafax+/hylafax+.info
+++ b/network/hylafax+/hylafax+.info
@@ -1,8 +1,8 @@
PRGNAM="hylafax+"
-VERSION="7.0.5"
+VERSION="7.0.8"
HOMEPAGE="http://hylafax.sourceforge.net"
-DOWNLOAD="http://prdownloads.sourceforge.net/hylafax/hylafax-7.0.5.tar.gz"
-MD5SUM="ac8450d7aa8e5d6dd726e4d601702d69"
+DOWNLOAD="http://prdownloads.sourceforge.net/hylafax/hylafax-7.0.8.tar.gz"
+MD5SUM="3b04ab1eef3ea44706c461168cab1f24"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/network/kismet/kismet.SlackBuild b/network/kismet/kismet.SlackBuild
index 31c32c7fa4..0a4f245297 100644
--- a/network/kismet/kismet.SlackBuild
+++ b/network/kismet/kismet.SlackBuild
@@ -28,8 +28,9 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=kismet
-VERSION=${VERSION:-2023.07.R1}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-20240430}
+COMMITVER="c28bca11baa23888510fac59a34bbe0b5d68dc37"
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -41,9 +42,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -82,10 +80,10 @@ set -eu
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-${VERSION//./-}
+rm -rf $PRGNAM-$COMMITVER
-tar xvf $CWD/$PRGNAM-${VERSION//./-}.tar.xz
-cd $PRGNAM-${VERSION//./-}
+tar xvf $CWD/$PRGNAM-$COMMITVER.tar.gz
+cd $PRGNAM-$COMMITVER
chown -R root:root .
find -L . \
diff --git a/network/kismet/kismet.info b/network/kismet/kismet.info
index 93aae74af6..56afd59c8c 100644
--- a/network/kismet/kismet.info
+++ b/network/kismet/kismet.info
@@ -1,10 +1,10 @@
PRGNAM="kismet"
-VERSION="2023.07.R1"
+VERSION="20240430"
HOMEPAGE="https://kismetwireless.net/"
-DOWNLOAD="https://www.kismetwireless.net/code/kismet-2023-07-R1.tar.xz"
-MD5SUM="d6c82b241de1be72d2dcb5e0102d8c99"
+DOWNLOAD="https://github.com/kismetwireless/kismet/archive/c28bca11baa23888510fac59a34bbe0b5d68dc37/kismet-c28bca11baa23888510fac59a34bbe0b5d68dc37.tar.gz"
+MD5SUM="8ebc66d758162eb4bf5324a17c7b46ad"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="libwebsockets protobuf-c"
+REQUIRES="libwebsockets protobuf-c mosquitto"
MAINTAINER="pyllyukko"
EMAIL="pyllyukko@maimed.org"
diff --git a/network/monkey/monkey.info b/network/monkey/monkey.info
index 079b2763c6..bf97a19323 100644
--- a/network/monkey/monkey.info
+++ b/network/monkey/monkey.info
@@ -1,7 +1,7 @@
PRGNAM="monkey"
VERSION="1.6.9"
HOMEPAGE="http://monkey-project.com/"
-DOWNLOAD="http://monkey-project.com/releases/1.6/monkey-1.6.9.tar.gz"
+DOWNLOAD="https://dev.alpinelinux.org/archive/monkey/monkey-1.6.9.tar.gz"
MD5SUM="c401734985a936ee07dbff5eca7d176a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/network/movgrab/movgrab.SlackBuild b/network/movgrab/movgrab.SlackBuild
index fc151c4a1d..1597dd3544 100644
--- a/network/movgrab/movgrab.SlackBuild
+++ b/network/movgrab/movgrab.SlackBuild
@@ -6,7 +6,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=movgrab
-VERSION=${VERSION:-1.2.1}
+SRCNAM=Movgrab
+VERSION=${VERSION:-3.1.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -19,9 +20,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -50,9 +48,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
+cd $SRCNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -62,7 +60,6 @@ find -L . \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS"
-autoreconf # otherwise fails with libUseful
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
@@ -80,13 +77,9 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/libUseful-2.0
cp -a \
Docs/* README LICENCE CHANGES \
$PKG/usr/doc/$PRGNAM-$VERSION
- cp -a \
- libUseful-2.0/Docs/* \
- $PKG/usr/doc/$PRGNAM-$VERSION/libUseful-2.0
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/network/movgrab/movgrab.info b/network/movgrab/movgrab.info
index 636f393e21..def597f952 100644
--- a/network/movgrab/movgrab.info
+++ b/network/movgrab/movgrab.info
@@ -1,8 +1,8 @@
PRGNAM="movgrab"
-VERSION="1.2.1"
-HOMEPAGE="http://sites.google.com/site/columscode/home/movgrab"
-DOWNLOAD="https://sites.google.com/site/columscode/files/movgrab-1.2.1.tar.gz"
-MD5SUM="db162d6963b9753d6235f23419d08a5a"
+VERSION="3.1.2"
+HOMEPAGE="https://github.com/ColumPaget/Movgrab"
+DOWNLOAD="https://github.com/ColumPaget/Movgrab/archive/3.1.2/Movgrab-3.1.2.tar.gz"
+MD5SUM="567faf36bf7f75b30e6098050688fbd3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/network/movgrab/slack-desc b/network/movgrab/slack-desc
index ed316e1576..80a6e4b96a 100644
--- a/network/movgrab/slack-desc
+++ b/network/movgrab/slack-desc
@@ -12,7 +12,7 @@ movgrab: movgrab is a downloader for all those pesky sites that insist you use
movgrab: a big fat browser that runs flash in order to see their content.
movgrab: It's a command-line app written in straight C.
movgrab:
-movgrab: homepage: http://sites.google.com/site/columscode/home/movgrab
+movgrab: homepage: https://github.com/ColumPaget/Movgrab
movgrab:
movgrab:
movgrab:
diff --git a/network/mptcpd/README b/network/mptcpd/README
new file mode 100644
index 0000000000..432f248bf4
--- /dev/null
+++ b/network/mptcpd/README
@@ -0,0 +1,6 @@
+The Multipath TCP Daemon is a daemon for Linux based operating systems
+that performs multipath TCP path management related operations in the
+user space. It interacts with the Linux kernel through a generic
+netlink connection to track per-connection information (e.g. available
+remote addresses), available network interfaces, request new MPTCP
+subflows, handle requests for subflows, etc.
diff --git a/perl/perl-Locale-Msgfmt/perl-Locale-Msgfmt.SlackBuild b/network/mptcpd/mptcpd.SlackBuild
index 647543dde1..2abb0f06d6 100644
--- a/perl/perl-Locale-Msgfmt/perl-Locale-Msgfmt.SlackBuild
+++ b/network/mptcpd/mptcpd.SlackBuild
@@ -1,8 +1,8 @@
#!/bin/bash
-# Slackware build script for perl-Locale-Msgfmt
+# Slackware build script for mptcpd
-# Copyright 2018 Nikos Giotis <nikos.giotis@gmail.com>, Athens, GR
+# Copyright 2024 Thibaut Notteboom, Paris, FRANCE
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,14 +24,12 @@
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=perl-Locale-Msgfmt
-VERSION=${VERSION:-0.15}
+PRGNAM=mptcpd
+VERSION=${VERSION:-0.12}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-SRCNAM="$(printf $PRGNAM | cut -d- -f2-)"
-
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
@@ -40,9 +38,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -61,6 +56,9 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
@@ -71,9 +69,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $SRCNAM-$VERSION
-tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
-cd $SRCNAM-$VERSION
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -81,28 +79,30 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-perl Makefile.PL \
- PREFIX=/usr \
- INSTALLDIRS=vendor \
- INSTALLVENDORMAN1DIR=/usr/man/man1 \
- INSTALLVENDORMAN3DIR=/usr/man/man3
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
make
-make test
-make install DESTDIR=$PKG
+make install-strip DESTDIR=$PKG
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*/*.la
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
-
-find $PKG -depth -type d -empty -delete || true
-
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- Changes README \
+ AUTHORS COPYING LICENSES/ NEWS README* \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/network/mptcpd/mptcpd.info b/network/mptcpd/mptcpd.info
new file mode 100644
index 0000000000..62f67cf5a9
--- /dev/null
+++ b/network/mptcpd/mptcpd.info
@@ -0,0 +1,10 @@
+PRGNAM="mptcpd"
+VERSION="0.12"
+HOMEPAGE="https://github.com/multipath-tcp/mptcpd"
+DOWNLOAD="https://github.com/multipath-tcp/mptcpd/releases/download/v0.12/mptcpd-0.12.tar.gz"
+MD5SUM="db55d55ab4591452582101d2343a8958"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="ell"
+MAINTAINER="Thibaut Notteboom"
+EMAIL="thibaut.notteboom@gmail.com"
diff --git a/network/mptcpd/slack-desc b/network/mptcpd/slack-desc
new file mode 100644
index 0000000000..6248c115aa
--- /dev/null
+++ b/network/mptcpd/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+mptcpd: mptcpd (Multipath TCP daemon)
+mptcpd:
+mptcpd: The Multipath TCP Daemon is a daemon for Linux based operating systems
+mptcpd: that performs multipath TCP path management related operations in the
+mptcpd: user space. It interacts with the Linux kernel through a generic
+mptcpd: netlink connection to track per-connection information (e.g. available
+mptcpd: remote addresses), available network interfaces, request new MPTCP
+mptcpd: subflows, handle requests for subflows, etc.
+mptcpd:
+mptcpd:
+mptcpd:
diff --git a/network/mullvadvpn-app/mullvadvpn-app.SlackBuild b/network/mullvadvpn-app/mullvadvpn-app.SlackBuild
index 164a12feba..766711169e 100644
--- a/network/mullvadvpn-app/mullvadvpn-app.SlackBuild
+++ b/network/mullvadvpn-app/mullvadvpn-app.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for mullvadvpn-app
#
-# Copyright 2023 Jay Lanagan (j@lngn.net), Detroit, MI, USA.
+# Copyright 2023-2024 Jay Lanagan (j@lngn.net), Detroit, MI, USA.
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=mullvadvpn-app
SRCNAM=MullvadVPN
-VERSION=${VERSION:-2024.1}
+VERSION=${VERSION:-2024.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/mullvadvpn-app/mullvadvpn-app.info b/network/mullvadvpn-app/mullvadvpn-app.info
index 12c12a9a7e..970e0d7ce0 100644
--- a/network/mullvadvpn-app/mullvadvpn-app.info
+++ b/network/mullvadvpn-app/mullvadvpn-app.info
@@ -1,12 +1,12 @@
PRGNAM="mullvadvpn-app"
-VERSION="2024.1"
+VERSION="2024.2"
HOMEPAGE="https://mullvad.net/"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/mullvad/mullvadvpn-app/releases/download/2024.1/MullvadVPN-2024.1_amd64.deb \
- https://github.com/mullvad/mullvadvpn-app/releases/download/2024.1/MullvadVPN-2024.1_arm64.deb"
-MD5SUM_x86_64="80a62dba93bdbce63f6468ccb2b41d46 \
- 39b9868dbd2a48088c3143c82771b5aa"
+DOWNLOAD_x86_64="https://github.com/mullvad/mullvadvpn-app/releases/download/2024.2/MullvadVPN-2024.2_amd64.deb \
+ https://github.com/mullvad/mullvadvpn-app/releases/download/2024.2/MullvadVPN-2024.2_arm64.deb"
+MD5SUM_x86_64="3b9f7014b7256d1edb2485eaecd1b495 \
+ ffde31ffe09e4039c501f05f177c16a5"
REQUIRES=""
MAINTAINER="Jay Lanagan"
EMAIL="j@lngn.net"
diff --git a/network/neomutt/neomutt.SlackBuild b/network/neomutt/neomutt.SlackBuild
index 51d1f52858..53bc4ec66b 100644
--- a/network/neomutt/neomutt.SlackBuild
+++ b/network/neomutt/neomutt.SlackBuild
@@ -28,7 +28,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=neomutt
-VERSION=${VERSION:-20240329}
+VERSION=${VERSION:-20240425}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/neomutt/neomutt.info b/network/neomutt/neomutt.info
index fab43ad595..b8d67e12fb 100644
--- a/network/neomutt/neomutt.info
+++ b/network/neomutt/neomutt.info
@@ -1,8 +1,8 @@
PRGNAM="neomutt"
-VERSION="20240329"
+VERSION="20240425"
HOMEPAGE="https://github.com/neomutt/neomutt"
-DOWNLOAD="https://github.com/neomutt/neomutt/archive/20240329/neomutt-20240329.tar.gz"
-MD5SUM="3ea5e0b732ecff28a2105041602e6222"
+DOWNLOAD="https://github.com/neomutt/neomutt/archive/20240425/neomutt-20240425.tar.gz"
+MD5SUM="136fa78c0ded07adb227446bdd5842c1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/network/nessus/README b/network/nessus/README
index 6833489890..2ca8ce9a48 100644
--- a/network/nessus/README
+++ b/network/nessus/README
@@ -1,6 +1,6 @@
Nessus Vulnerability Scanner
-Nessus Professional, the industry's most widely deployed vulnerability
+Nessus Professional, the industry's most widely deployed vulnerability
assessment solution helps you reduce your organization's attack surface
and ensure compliance. Nessus features high-speed asset discovery,
configuration auditing, target profiling, malware detection, sensitive
diff --git a/network/nessus/nessus.SlackBuild b/network/nessus/nessus.SlackBuild
index 780603c7f3..22cdab661d 100644
--- a/network/nessus/nessus.SlackBuild
+++ b/network/nessus/nessus.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=nessus
-VERSION=${VERSION:-10.7.0}
+VERSION=${VERSION:-10.7.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/nessus/nessus.info b/network/nessus/nessus.info
index aabe4b852c..3661a91f7f 100644
--- a/network/nessus/nessus.info
+++ b/network/nessus/nessus.info
@@ -1,10 +1,10 @@
PRGNAM="nessus"
-VERSION="10.7.0"
+VERSION="10.7.2"
HOMEPAGE="https://www.tenable.com/products/nessus"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://www.tenable.com/downloads/api/v2/pages/nessus/files/Nessus-10.7.0-el7.x86_64.rpm"
-MD5SUM_x86_64="618234819d2fc39c49890abb595c87e8"
+DOWNLOAD_x86_64="https://www.tenable.com/downloads/api/v2/pages/nessus/files/Nessus-10.7.2-el7.x86_64.rpm"
+MD5SUM_x86_64="7d3da436fd0759df20b6b20e56ff397e"
REQUIRES=""
MAINTAINER="Giuseppe Di Terlizzi"
EMAIL="giuseppe.diterlizzi@gmail.com"
diff --git a/network/nextcloud-desktop/nextcloud-desktop.SlackBuild b/network/nextcloud-desktop/nextcloud-desktop.SlackBuild
index 7bd204277b..5c40ac499f 100644
--- a/network/nextcloud-desktop/nextcloud-desktop.SlackBuild
+++ b/network/nextcloud-desktop/nextcloud-desktop.SlackBuild
@@ -29,7 +29,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=nextcloud-desktop
SRCNAM=desktop
-VERSION=${VERSION:-3.12.3}
+VERSION=${VERSION:-3.13.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/nextcloud-desktop/nextcloud-desktop.info b/network/nextcloud-desktop/nextcloud-desktop.info
index a6a8559331..ffb9b736b7 100644
--- a/network/nextcloud-desktop/nextcloud-desktop.info
+++ b/network/nextcloud-desktop/nextcloud-desktop.info
@@ -1,10 +1,10 @@
PRGNAM="nextcloud-desktop"
-VERSION="3.12.3"
+VERSION="3.13.0"
HOMEPAGE="https://nextcloud.com/"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/nextcloud/desktop/archive/refs/tags/v3.12.3/desktop-3.12.3.tar.gz"
-MD5SUM_x86_64="e018bec41afc23060ea6afea6108e94f"
+DOWNLOAD_x86_64="https://github.com/nextcloud/desktop/archive/refs/tags/v3.13.0/desktop-3.13.0.tar.gz"
+MD5SUM_x86_64="11eea2f5c2909114ddb4b74ff21b67b7"
REQUIRES=""
MAINTAINER="Andrew Payne"
EMAIL="phalange@komputermatrix.com"
diff --git a/network/ngrok/ngrok.info b/network/ngrok/ngrok.info
index e763f533ca..94f5f20803 100644
--- a/network/ngrok/ngrok.info
+++ b/network/ngrok/ngrok.info
@@ -2,9 +2,9 @@ PRGNAM="ngrok"
VERSION="3.8.0"
HOMEPAGE="https://ngrok.com"
DOWNLOAD="https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-3.8.0-linux-386.tar.gz"
-MD5SUM="0f2524425cb93cd994763acd913344ff"
+MD5SUM="a9c770d5d0d4f893b12d9067d0c8b8bc"
DOWNLOAD_x86_64="https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-3.8.0-linux-amd64.tar.gz"
-MD5SUM_x86_64="64a81ae592c0762146d5046861016834"
+MD5SUM_x86_64="4674abecd13591051680bf0268bf48fc"
REQUIRES=""
MAINTAINER="Ebben Aries"
EMAIL="slackbuilds@dscp.org"
diff --git a/network/owncloud-server/owncloud-server.info b/network/owncloud-server/owncloud-server.info
index ecd6605907..da1e51b1ff 100644
--- a/network/owncloud-server/owncloud-server.info
+++ b/network/owncloud-server/owncloud-server.info
@@ -1,7 +1,7 @@
PRGNAM="owncloud-server"
VERSION="8.2.11"
HOMEPAGE="https://owncloud.org/"
-DOWNLOAD="https://download.owncloud.org/community/owncloud-8.2.11.tar.bz2"
+DOWNLOAD="https://attic.owncloud.com/server/stable/owncloud-8.2.11.tar.bz2"
MD5SUM="43e3b4c53d4e819f612296c032cd2d37"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/network/phppgadmin/phppgadmin.SlackBuild b/network/phppgadmin/phppgadmin.SlackBuild
index 86bd57a71b..ef63e95e2c 100644
--- a/network/phppgadmin/phppgadmin.SlackBuild
+++ b/network/phppgadmin/phppgadmin.SlackBuild
@@ -24,12 +24,13 @@
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM='phppgadmin'
-VERSION=${VERSION:-7.13.0}
+PRGNAM="phppgadmin"
+VERSION=${VERSION:-7.14.7}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
SRCNAM=phpPgAdmin
+SUFF=${SUFF:--mod}
DOCROOT=${DOCROOT:-/usr/share}
PHPUSER=${PHPUSER:-root}
@@ -58,8 +59,8 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $SRCNAM-$VERSION
-tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
-cd $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION$SUFF.tar.gz
+cd $SRCNAM-$VERSION$SUFF
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -68,8 +69,8 @@ find -L . \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
mkdir -p $PKG$DOCROOT
-cp -a $TMP/$SRCNAM-$VERSION $PKG$DOCROOT
-( cd $PKG$DOCROOT; ln -s ./$SRCNAM-$VERSION ./$PRGNAM )
+cp -a $TMP/$SRCNAM-$VERSION$SUFF $PKG$DOCROOT
+( cd $PKG$DOCROOT; ln -s ./$SRCNAM-$VERSION$SUFF ./$PRGNAM )
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
@@ -80,8 +81,8 @@ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/etc/httpd/conf.d
cp -a $CWD/http-pgadmin.conf $PKG/etc/httpd/conf.d/phppgadmin.conf.new
-chown -R $PHPUSER:$PHPGROUP $PKG$DOCROOT/$SRCNAM-$VERSION
-chmod -R o-rwx $PKG$DOCROOT/$SRCNAM-$VERSION
+chown -R $PHPUSER:$PHPGROUP $PKG$DOCROOT/$SRCNAM-$VERSION$SUFF
+chmod -R o-rwx $PKG$DOCROOT/$SRCNAM-$VERSION$SUFF
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/network/phppgadmin/phppgadmin.info b/network/phppgadmin/phppgadmin.info
index 73bfd5f275..25d5f5a8da 100644
--- a/network/phppgadmin/phppgadmin.info
+++ b/network/phppgadmin/phppgadmin.info
@@ -1,8 +1,8 @@
PRGNAM="phppgadmin"
-VERSION="7.13.0"
-HOMEPAGE="https://github.com/phppgadmin/phppgadmin"
-DOWNLOAD="https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz"
-MD5SUM="8a38dca6bd0bcdc9481c88f1ac0c0f80"
+VERSION="7.14.7"
+HOMEPAGE="https://github.com/ReimuHakurei/phpPgAdmin"
+DOWNLOAD="https://github.com/ReimuHakurei/phpPgAdmin/archive/v7.14.7-mod/phpPgAdmin-7.14.7-mod.tar.gz"
+MD5SUM="ede785d9f3d7c85342f2bb858fd96b34"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="php-pgsql"
diff --git a/network/purple-hangouts/LICENSE b/network/purple-hangouts/LICENSE
deleted file mode 100644
index bab24037e7..0000000000
--- a/network/purple-hangouts/LICENSE
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- purple-hangouts SlackBuild script
- Copyright (C) 2019 Marian Marinov
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- purple-hangouts Copyright (C) 2019 Marian Marinov
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/network/purple-hangouts/README b/network/purple-hangouts/README
deleted file mode 100644
index 2648b4d1ac..0000000000
--- a/network/purple-hangouts/README
+++ /dev/null
@@ -1,10 +0,0 @@
-Hangouts plugin for libpurple
-
-A replacement prpl for Hangouts in Pidgin/libpurple to support the
-proprietary protocol that Google uses for its Hangouts service.
-So far it supports all the fun things that aren't part of the XMPP
-interface, such as Group Chats, synchronised history between devices
-and SMS support via Google Voice.
-
-Homepage: https://bitbucket.org/EionRobb/purple-hangouts
-
diff --git a/network/purple-hangouts/purple-hangouts.SlackBuild b/network/purple-hangouts/purple-hangouts.SlackBuild
deleted file mode 100644
index edeb75dac1..0000000000
--- a/network/purple-hangouts/purple-hangouts.SlackBuild
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/bin/bash
-
-# Slackware build script for python-certifi
-
-# Copyright 2019 Marian Marinov, Sofia, Bulgaria
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-cd $(dirname $0) ; CWD=$(pwd)
-
-PRGNAM=purple-hangouts
-SRCNAM=EionRobb-$PRGNAM
-VERSION=${VERSION:-effc9b41df8c}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-PKGTYPE=${PKGTYPE:-tgz}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
-if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
- echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
- exit 0
-fi
-
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $SRCNAM-$VERSION
-unzip $CWD/$VERSION.zip
-cd $SRCNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-make
-make install DESTDIR=$PKG
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a gpl3.txt README.md $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/network/purple-hangouts/purple-hangouts.info b/network/purple-hangouts/purple-hangouts.info
deleted file mode 100644
index def421fa90..0000000000
--- a/network/purple-hangouts/purple-hangouts.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="purple-hangouts"
-VERSION="effc9b41df8c"
-HOMEPAGE="https://bitbucket.org/EionRobb/purple-hangouts"
-DOWNLOAD="https://slackware.uk/~urchlay/src/effc9b41df8c.zip"
-MD5SUM="35cc2a7bf8ae191c04d630783b0f6e55"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="protobuf-c"
-MAINTAINER="Marian Marinov"
-EMAIL="mm@yuhu.biz"
diff --git a/network/purple-hangouts/slack-desc b/network/purple-hangouts/slack-desc
deleted file mode 100644
index 83c5176e74..0000000000
--- a/network/purple-hangouts/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-purple-hangouts: purple-hangouts (Hangouts plugin for libpurple)
-purple-hangouts:
-purple-hangouts: A replacement prpl for Hangouts in Pidgin/libpurple to support the
-purple-hangouts: proprietary protocol that Google uses for its Hangouts service.
-purple-hangouts: So far it supports all the fun things that aren't part of the XMPP
-purple-hangouts: interface, such as Group Chats, synchronised history between devices
-purple-hangouts: and SMS support via Google Voice.
-purple-hangouts:
-purple-hangouts: Homepage: https://bitbucket.org/EionRobb/purple-hangouts
-purple-hangouts:
-purple-hangouts:
diff --git a/network/signal-desktop/signal-desktop.SlackBuild b/network/signal-desktop/signal-desktop.SlackBuild
index baf5ccf003..8d909eebaa 100644
--- a/network/signal-desktop/signal-desktop.SlackBuild
+++ b/network/signal-desktop/signal-desktop.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=signal-desktop
-VERSION=${VERSION:-7.6.0}
+VERSION=${VERSION:-7.7.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/signal-desktop/signal-desktop.info b/network/signal-desktop/signal-desktop.info
index 6b1cb0f172..60b89ccfb2 100644
--- a/network/signal-desktop/signal-desktop.info
+++ b/network/signal-desktop/signal-desktop.info
@@ -1,10 +1,10 @@
PRGNAM="signal-desktop"
-VERSION="7.6.0"
+VERSION="7.7.0"
HOMEPAGE="https://signal.org/"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://updates.signal.org/desktop/apt/pool/s/signal-desktop/signal-desktop_7.6.0_amd64.deb"
-MD5SUM_x86_64="71fc54748a4721e0a5a9a156c6a5f860"
+DOWNLOAD_x86_64="https://updates.signal.org/desktop/apt/pool/s/signal-desktop/signal-desktop_7.7.0_amd64.deb"
+MD5SUM_x86_64="7f64900eb662001044eb269bb3a5d99d"
REQUIRES=""
MAINTAINER="ArTourter"
EMAIL="artourter@gmail.com"
diff --git a/network/telegram/telegram.SlackBuild b/network/telegram/telegram.SlackBuild
index a11760559c..39c5f9fb2d 100644
--- a/network/telegram/telegram.SlackBuild
+++ b/network/telegram/telegram.SlackBuild
@@ -30,7 +30,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=telegram
SRCNAM=tsetup
SRCDIR=Telegram
-VERSION=${VERSION:-4.16.8}
+VERSION=${VERSION:-5.0.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/telegram/telegram.info b/network/telegram/telegram.info
index e50a9dc192..91c42bb953 100644
--- a/network/telegram/telegram.info
+++ b/network/telegram/telegram.info
@@ -1,10 +1,10 @@
PRGNAM="telegram"
-VERSION="4.16.8"
+VERSION="5.0.0"
HOMEPAGE="https://telegram.org"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://updates.tdesktop.com/tlinux/tsetup.4.16.8.tar.xz"
-MD5SUM_x86_64="ee1a670cc7e8da43aba7a78d38b20eaf"
+DOWNLOAD_x86_64="https://updates.tdesktop.com/tlinux/tsetup.5.0.0.tar.xz"
+MD5SUM_x86_64="74350850bc7c2dd7fa065811ea5075f2"
REQUIRES=""
MAINTAINER="Willy Sudiarto Raharjo"
EMAIL="willysr@slackbuilds.org"
diff --git a/network/translate/translate.info b/network/translate/translate.info
index a4e09be129..349b9cd302 100644
--- a/network/translate/translate.info
+++ b/network/translate/translate.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://files.pythonhosted.org/packages/d1/9d/692066b9e26176a93ce627bf
MD5SUM="3ebcafb25c270e785c5f18580c4ad0c4"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="python3-libretranslatepy python3-lxml click"
+REQUIRES="python3-libretranslatepy python3-lxml click python3-pytest-runner"
MAINTAINER="Dimitris Zlatanidis"
EMAIL="dslackw@gmail.com"
diff --git a/network/viber/viber.SlackBuild b/network/viber/viber.SlackBuild
index 81a497720a..b54fcd1295 100644
--- a/network/viber/viber.SlackBuild
+++ b/network/viber/viber.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=viber
-VERSION=${VERSION:-21.0.0.1}
+VERSION=${VERSION:-21.8.0.11}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/viber/viber.info b/network/viber/viber.info
index efc5945b88..7dee10b22a 100644
--- a/network/viber/viber.info
+++ b/network/viber/viber.info
@@ -1,10 +1,10 @@
PRGNAM="viber"
-VERSION="21.0.0.1"
+VERSION="21.8.0.11"
HOMEPAGE="https://www.viber.com/"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
DOWNLOAD_x86_64="http://download.cdn.viber.com/cdn/desktop/Linux/viber.deb"
-MD5SUM_x86_64="7e93a64efebd9112df3ac7f8dc0c4580"
+MD5SUM_x86_64="376ebe7c7b798dc722e8dc2c71d3bcee"
REQUIRES="snappy tslib"
MAINTAINER="Petar Petrov"
EMAIL="slackalaxy@gmail.com"
diff --git a/network/vimb/vimb.SlackBuild b/network/vimb/vimb.SlackBuild
index e62c7acc5b..f2dbe3c8b2 100644
--- a/network/vimb/vimb.SlackBuild
+++ b/network/vimb/vimb.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=vimb
VERSION=${VERSION:-3.7.0}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/vimb/vimb.info b/network/vimb/vimb.info
index d5c1cb95aa..34dc7ac89b 100644
--- a/network/vimb/vimb.info
+++ b/network/vimb/vimb.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/fanglingsu/vimb/archive/3.7.0/vimb-3.7.0.tar.gz"
MD5SUM="4052a71111eb31e5b5a39a75c460d441"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="webkit2gtk"
+REQUIRES="webkit2gtk4.1"
MAINTAINER="Leonard Schmidt"
EMAIL="lems@gmx.net"
diff --git a/network/vivaldi/vivaldi.SlackBuild b/network/vivaldi/vivaldi.SlackBuild
index 0b8ba3e053..fc62e00cb6 100644
--- a/network/vivaldi/vivaldi.SlackBuild
+++ b/network/vivaldi/vivaldi.SlackBuild
@@ -27,7 +27,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=vivaldi
-VERSION=${VERSION:-6.6.3271.61}
+VERSION=${VERSION:-6.7.3329.21}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/vivaldi/vivaldi.info b/network/vivaldi/vivaldi.info
index 2dddcfae85..c75d268aaa 100644
--- a/network/vivaldi/vivaldi.info
+++ b/network/vivaldi/vivaldi.info
@@ -1,12 +1,12 @@
PRGNAM="vivaldi"
-VERSION="6.6.3271.61"
+VERSION="6.7.3329.21"
HOMEPAGE="https://vivaldi.com"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://downloads.vivaldi.com/stable/vivaldi-stable_6.6.3271.61-1_amd64.deb \
- https://update.vivaldi.com/update/1.0/relnotes/6.6.3271.61.html"
-MD5SUM_x86_64="8f5399008b3ce407841768b2e88d84cf \
- 5dcbd276bf780eb1106b8ac254e2a223"
+DOWNLOAD_x86_64="https://downloads.vivaldi.com/stable/vivaldi-stable_6.7.3329.21-1_amd64.deb \
+ https://update.vivaldi.com/update/1.0/relnotes/6.7.3329.21.html"
+MD5SUM_x86_64="ff07df08201dd7d9d7d99351e4833fb2 \
+ 1d86b27fde02e996db65351adcc99b91"
REQUIRES=""
MAINTAINER="Ruari Oedegaard"
EMAIL="sbo@ruari.com"
diff --git a/network/xmrig/xmrig.SlackBuild b/network/xmrig/xmrig.SlackBuild
index 97e0931923..0b6ada30e7 100644
--- a/network/xmrig/xmrig.SlackBuild
+++ b/network/xmrig/xmrig.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=xmrig
-VERSION=${VERSION:-6.21.2}
+VERSION=${VERSION:-6.21.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/network/xmrig/xmrig.info b/network/xmrig/xmrig.info
index a6777dd243..6727e9c63c 100644
--- a/network/xmrig/xmrig.info
+++ b/network/xmrig/xmrig.info
@@ -1,8 +1,8 @@
PRGNAM="xmrig"
-VERSION="6.21.2"
+VERSION="6.21.3"
HOMEPAGE="https://xmrig.com/"
-DOWNLOAD="https://github.com/xmrig/xmrig/archive/v6.21.2/xmrig-6.21.2.tar.gz"
-MD5SUM="53948f29f998b97aea24ff405998d730"
+DOWNLOAD="https://github.com/xmrig/xmrig/archive/v6.21.3/xmrig-6.21.3.tar.gz"
+MD5SUM="5067943a9c3d387d0833d1af2540dde6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="%README% hwloc"
diff --git a/office/1password/1password.info b/office/1password/1password.info
index ffe5ec8164..db8cf11513 100644
--- a/office/1password/1password.info
+++ b/office/1password/1password.info
@@ -4,7 +4,7 @@ HOMEPAGE="https://1password.com"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
DOWNLOAD_x86_64="https://downloads.1password.com/linux/rpm/beta/x86_64/1password-latest.rpm"
-MD5SUM_x86_64="c7cb43ff2b8b46b899b00942cd122126"
+MD5SUM_x86_64="4d0b0ceb2ed3c46a9b6d2f1ddfd18c9f"
REQUIRES=""
MAINTAINER="Akileo"
EMAIL="theakileo@hotmail.com"
diff --git a/office/LibreOffice/LibreOffice.SlackBuild b/office/LibreOffice/LibreOffice.SlackBuild
index b3b349606f..8994813b6f 100644
--- a/office/LibreOffice/LibreOffice.SlackBuild
+++ b/office/LibreOffice/LibreOffice.SlackBuild
@@ -28,7 +28,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=LibreOffice
SRCNAM=libreoffice
-VERSION=${VERSION:-24.2.2.2}
+VERSION=${VERSION:-24.2.3.2}
SHORT_VERSION=${VERSION%.*.*}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
diff --git a/office/LibreOffice/LibreOffice.info b/office/LibreOffice/LibreOffice.info
index eb06942f03..726660b5b7 100644
--- a/office/LibreOffice/LibreOffice.info
+++ b/office/LibreOffice/LibreOffice.info
@@ -1,10 +1,10 @@
PRGNAM="LibreOffice"
-VERSION="24.2.2.2"
+VERSION="24.2.3.2"
HOMEPAGE="https://www.libreoffice.org"
-DOWNLOAD="https://download.documentfoundation.org/libreoffice/src/24.2.2/libreoffice-24.2.2.2.tar.xz \
- https://sourceforge.net/projects/slackbuildsdirectlinks/files/LibreOffice/libreoffice-24.2.2.2-srcs.tar.xz"
-MD5SUM="72d05d00734c6921a47c369b8d7ef8cf \
- 87a2d12d9b00c2662c1fee4303d54c48"
+DOWNLOAD="https://download.documentfoundation.org/libreoffice/src/24.2.3/libreoffice-24.2.3.2.tar.xz \
+ https://sourceforge.net/projects/slackbuildsdirectlinks/files/LibreOffice/libreoffice-24.2.3.2-srcs.tar.xz"
+MD5SUM="df019f1cfa41c3dd80f06f865c752817 \
+ 8791428dd6764e1f653db63a19e4ea1f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="zulu-openjdk17 apache-ant perl-Archive-Zip libcdr libfreehand liblangtag libmspub libzmf"
diff --git a/office/calibre-bin/calibre-bin.SlackBuild b/office/calibre-bin/calibre-bin.SlackBuild
index 0adcf0b982..e01633e816 100644
--- a/office/calibre-bin/calibre-bin.SlackBuild
+++ b/office/calibre-bin/calibre-bin.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=calibre-bin
-VERSION=${VERSION:-7.9.0}
+VERSION=${VERSION:-7.10.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/office/calibre-bin/calibre-bin.info b/office/calibre-bin/calibre-bin.info
index 0d2217abd9..30bf1c52f7 100644
--- a/office/calibre-bin/calibre-bin.info
+++ b/office/calibre-bin/calibre-bin.info
@@ -1,10 +1,10 @@
PRGNAM="calibre-bin"
-VERSION="7.9.0"
+VERSION="7.10.0"
HOMEPAGE="https://calibre-ebook.com"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://download.calibre-ebook.com/7.9.0/calibre-7.9.0-x86_64.txz"
-MD5SUM_x86_64="fcff97c68fadeb4c9f6e731fae94af35"
+DOWNLOAD_x86_64="https://download.calibre-ebook.com/7.10.0/calibre-7.10.0-x86_64.txz"
+MD5SUM_x86_64="f16f8530308b81b5d6ab303890c412d9"
REQUIRES=""
MAINTAINER="Alexander Verbovetsky"
EMAIL="alik@ejik.org"
diff --git a/office/gnumeric/gnumeric.SlackBuild b/office/gnumeric/gnumeric.SlackBuild
index 8bcfa5691c..0ca64cb5e9 100644
--- a/office/gnumeric/gnumeric.SlackBuild
+++ b/office/gnumeric/gnumeric.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for gnumeric
# Copyright 2010-2021 Robby Workman, Tuscaloosa, Alabama, USA
-# Copyright 2023 Jim Diamond, Dartmouth, Nova Scotia, Canada
+# Copyright 2023-24 Jim Diamond, Dartmouth, Nova Scotia, Canada
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -29,7 +29,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=gnumeric
-VERSION=${VERSION:-1.12.56}
+VERSION=${VERSION:-1.12.57}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -54,7 +54,7 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i586" ]; then
+if [ "$ARCH" = "i586" -o "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
diff --git a/office/gnumeric/gnumeric.info b/office/gnumeric/gnumeric.info
index b8de66e8f2..f1ac6550e7 100644
--- a/office/gnumeric/gnumeric.info
+++ b/office/gnumeric/gnumeric.info
@@ -1,8 +1,8 @@
PRGNAM="gnumeric"
-VERSION="1.12.56"
+VERSION="1.12.57"
HOMEPAGE="https://projects.gnome.org/gnumeric/"
-DOWNLOAD="https://download.gnome.org/sources/gnumeric/1.12/gnumeric-1.12.56.tar.xz"
-MD5SUM="8d5b6928173797043e0a0aceeb2ceb78"
+DOWNLOAD="https://download.gnome.org/sources/gnumeric/1.12/gnumeric-1.12.57.tar.xz"
+MD5SUM="237ce4f6c43661892e802bf81dbff1b2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="goffice"
diff --git a/office/krop/krop.SlackBuild b/office/krop/krop.SlackBuild
index b768e7ec12..44d0c56cb5 100644
--- a/office/krop/krop.SlackBuild
+++ b/office/krop/krop.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for krop
-# Copyright 2018-2023, Alexander Verbovetsky, Moscow, Russia
+# Copyright 2018-2024, Alexander Verbovetsky, Moscow, Russia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
diff --git a/office/krop/krop.info b/office/krop/krop.info
index 0410cf1288..bd03c0a489 100644
--- a/office/krop/krop.info
+++ b/office/krop/krop.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/arminstraub/krop/archive/e96d42b/krop-e96d42b2f1ab4
MD5SUM="9ddb0caa00585882e4d3b081bf5b3b4f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="%README% python-poppler-qt5 python3-PyPDF2"
+REQUIRES="%README% python-poppler-qt5 python3-pypdf"
MAINTAINER="Alexander Verbovetsky"
EMAIL="alik@ejik.org"
diff --git a/office/libreoffice-helppack/libreoffice-helppack.SlackBuild b/office/libreoffice-helppack/libreoffice-helppack.SlackBuild
index 1152e6eb05..1df7d8669b 100644
--- a/office/libreoffice-helppack/libreoffice-helppack.SlackBuild
+++ b/office/libreoffice-helppack/libreoffice-helppack.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=libreoffice-helppack
-VERSION=${VERSION:-"24.2.2"}
+VERSION=${VERSION:-"24.2.3"}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/office/libreoffice-helppack/libreoffice-helppack.info b/office/libreoffice-helppack/libreoffice-helppack.info
index e51c799a13..7f16a18ec0 100644
--- a/office/libreoffice-helppack/libreoffice-helppack.info
+++ b/office/libreoffice-helppack/libreoffice-helppack.info
@@ -1,10 +1,10 @@
PRGNAM="libreoffice-helppack"
-VERSION="24.2.2"
+VERSION="24.2.3"
HOMEPAGE="https://www.libreoffice.org"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://download.documentfoundation.org/libreoffice/stable/24.2.2/rpm/x86_64/LibreOffice_24.2.2_Linux_x86-64_rpm_helppack_en-US.tar.gz"
-MD5SUM_x86_64="51b02247337c97a95fa873e52a75a991"
+DOWNLOAD_x86_64="https://download.documentfoundation.org/libreoffice/stable/24.2.3/rpm/x86_64/LibreOffice_24.2.3_Linux_x86-64_rpm_helppack_en-US.tar.gz"
+MD5SUM_x86_64="c43c97ae9070404aae545e910657606d"
REQUIRES="libreoffice"
MAINTAINER="Willy Sudiarto Raharjo"
EMAIL="willysr@slackbuilds.org"
diff --git a/office/libreoffice-langpack/libreoffice-langpack.SlackBuild b/office/libreoffice-langpack/libreoffice-langpack.SlackBuild
index 5c8cd5a3d1..7a99cccf53 100644
--- a/office/libreoffice-langpack/libreoffice-langpack.SlackBuild
+++ b/office/libreoffice-langpack/libreoffice-langpack.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=libreoffice-langpack
-VERSION=${VERSION:-"24.2.2"}
+VERSION=${VERSION:-"24.2.3"}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/office/libreoffice-langpack/libreoffice-langpack.info b/office/libreoffice-langpack/libreoffice-langpack.info
index 2149b7fe31..4d7a4f7493 100644
--- a/office/libreoffice-langpack/libreoffice-langpack.info
+++ b/office/libreoffice-langpack/libreoffice-langpack.info
@@ -1,10 +1,10 @@
PRGNAM="libreoffice-langpack"
-VERSION="24.2.2"
+VERSION="24.2.3"
HOMEPAGE="https://www.libreoffice.org"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://download.documentfoundation.org/libreoffice/stable/24.2.2/rpm/x86_64/LibreOffice_24.2.2_Linux_x86-64_rpm_langpack_en-GB.tar.gz"
-MD5SUM_x86_64="15008149a534cc5340fc1ed2b3c820ae"
+DOWNLOAD_x86_64="https://download.documentfoundation.org/libreoffice/stable/24.2.3/rpm/x86_64/LibreOffice_24.2.3_Linux_x86-64_rpm_langpack_en-GB.tar.gz"
+MD5SUM_x86_64="4a1fcfeb971e1d0bb266c6eb02f5ef64"
REQUIRES="libreoffice"
MAINTAINER="Willy Sudiarto Raharjo"
EMAIL="willysr@slackbuilds.org"
diff --git a/office/libreoffice/libreoffice.SlackBuild b/office/libreoffice/libreoffice.SlackBuild
index 82137b0e3c..747823e610 100644
--- a/office/libreoffice/libreoffice.SlackBuild
+++ b/office/libreoffice/libreoffice.SlackBuild
@@ -27,7 +27,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=libreoffice
-VERSION=${VERSION:-"24.2.2"}
+VERSION=${VERSION:-"24.2.3"}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/office/libreoffice/libreoffice.info b/office/libreoffice/libreoffice.info
index 6482c0a1aa..c31c235b28 100644
--- a/office/libreoffice/libreoffice.info
+++ b/office/libreoffice/libreoffice.info
@@ -1,10 +1,10 @@
PRGNAM="libreoffice"
-VERSION="24.2.2"
+VERSION="24.2.3"
HOMEPAGE="https://www.libreoffice.org"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://download.documentfoundation.org/libreoffice/stable/24.2.2/rpm/x86_64/LibreOffice_24.2.2_Linux_x86-64_rpm.tar.gz"
-MD5SUM_x86_64="cde06aceac2f7eed5b5761a30a072444"
+DOWNLOAD_x86_64="https://download.documentfoundation.org/libreoffice/stable/24.2.3/rpm/x86_64/LibreOffice_24.2.3_Linux_x86-64_rpm.tar.gz"
+MD5SUM_x86_64="8970eb3fc932ee7779230f97f89f7222"
REQUIRES="zulu-openjdk8 avahi"
MAINTAINER="Willy Sudiarto Raharjo"
EMAIL="willysr@slackbuilds.org"
diff --git a/office/lotus123/lotus123.info b/office/lotus123/lotus123.info
index 1a8158789d..1069e16b2e 100644
--- a/office/lotus123/lotus123.info
+++ b/office/lotus123/lotus123.info
@@ -15,7 +15,7 @@ MD5SUM="c1d56afbf72353cfc8b1e478dbbb5bb2 \
1752432abf4951589386db4f8ace4c92 \
0965e866b299af5046ec7973e7157211 \
6e39cad1bb414add02b5b1169c18fdc5"
-DOWNLOAD_x86_64=""
+DOWNLOAD_x86_64="UNSUPPORTED"
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
diff --git a/office/xtrkcad/slack-desc b/office/xtrkcad/slack-desc
index 0d5c1a3b59..d6ce431c39 100644
--- a/office/xtrkcad/slack-desc
+++ b/office/xtrkcad/slack-desc
@@ -15,5 +15,5 @@ xtrkcad: is easy with the built-in editor.
xtrkcad:
xtrkcad: The website is located at http://www.xtrkcad.org and files at
xtrkcad: http://sourceforge.net/projects/xtrkcad-fork
-xtrkcad: Also check the Yahoo! Group [XtrkCAD].
+xtrkcad: Also check the groups.io-group https://xtrackcad.groups.io.
xtrkcad: Note the spelling and CamelCase are inconsistent throughout the app.
diff --git a/office/xtrkcad/xtrkcad.SlackBuild b/office/xtrkcad/xtrkcad.SlackBuild
index 33804d3c70..c0f98a282b 100644
--- a/office/xtrkcad/xtrkcad.SlackBuild
+++ b/office/xtrkcad/xtrkcad.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for xtrkcad
-# Copyright 2013-2022 Heiko Rosemann Germany
+# Copyright 2013-2024 Heiko Rosemann Germany
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=xtrkcad
-VERSION=${VERSION:-5.2.2GA}
+VERSION=${VERSION:-5.3.0GA}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -53,16 +53,12 @@ SRCNAM=${PRGNAM}-source-$VERSION
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
set -e
@@ -80,6 +76,10 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+# Remove libzip.a bundled with xtrkcad to make cmake find the system version
+# Required for supporting platforms other than x86_64
+rm -rf app/tools/lib
+
mkdir -p build
cd build
cmake \
@@ -89,7 +89,8 @@ cd build
-DCMAKE_BUILD_TYPE=Release \
-DXTRKCAD_USE_GETTEXT=ON \
-DXTRKCAD_USE_GTK=ON ..
- make
+ # Remove DBUS access from make to avoid parallel inkscape crashing
+ DBUS_SESSION_BUS_ADDRESS="" make
make install DESTDIR=$PKG
cd ..
diff --git a/office/xtrkcad/xtrkcad.info b/office/xtrkcad/xtrkcad.info
index 24b3c50293..e3ef590bc9 100644
--- a/office/xtrkcad/xtrkcad.info
+++ b/office/xtrkcad/xtrkcad.info
@@ -1,10 +1,10 @@
PRGNAM="xtrkcad"
-VERSION="5.2.2GA"
+VERSION="5.3.0GA"
HOMEPAGE="http://www.xtrkcad.org"
-DOWNLOAD="http://sourceforge.net/projects/xtrkcad-fork/files/XTrackCad/Version%205.2.2/xtrkcad-source-5.2.2GA.tar.gz"
-MD5SUM="a91da56b9e509eab1ceab0b8fee92b2f"
+DOWNLOAD="http://sourceforge.net/projects/xtrkcad-fork/files/XTrackCad/Version%205.3.0/xtrkcad-source-5.3.0GA.tar.gz"
+MD5SUM="d9ea03fcd396a3ff7d1592abd98c3aa3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="FreeImage inkscape"
MAINTAINER="Heiko Rosemann"
EMAIL="heiko.rosemann@web.de"
diff --git a/perl/perl-Locale-Codes/perl-Locale-Codes.SlackBuild b/perl/perl-Locale-Codes/perl-Locale-Codes.SlackBuild
index ff588325b8..a6a7213610 100644
--- a/perl/perl-Locale-Codes/perl-Locale-Codes.SlackBuild
+++ b/perl/perl-Locale-Codes/perl-Locale-Codes.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=perl-Locale-Codes
-VERSION=${VERSION:-3.70}
+VERSION=${VERSION:-3.78}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/perl/perl-Locale-Codes/perl-Locale-Codes.info b/perl/perl-Locale-Codes/perl-Locale-Codes.info
index b3edafbed0..51402ecaf8 100644
--- a/perl/perl-Locale-Codes/perl-Locale-Codes.info
+++ b/perl/perl-Locale-Codes/perl-Locale-Codes.info
@@ -1,8 +1,8 @@
PRGNAM="perl-Locale-Codes"
-VERSION="3.70"
+VERSION="3.78"
HOMEPAGE="https://metacpan.org/pod/Locale::Codes"
-DOWNLOAD="https://cpan.metacpan.org/authors/id/S/SB/SBECK/Locale-Codes-3.70.tar.gz"
-MD5SUM="6e79c77d7c82f00cda3d0137c24fb798"
+DOWNLOAD="https://cpan.metacpan.org/authors/id/S/SB/SBECK/Locale-Codes-3.78.tar.gz"
+MD5SUM="899cd9b8a9188bad93763ff0aa5ff5ee"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="perl-Test-Inter"
diff --git a/perl/perl-Locale-Msgfmt/README b/perl/perl-Locale-Msgfmt/README
deleted file mode 100644
index 854d640c47..0000000000
--- a/perl/perl-Locale-Msgfmt/README
+++ /dev/null
@@ -1,9 +0,0 @@
-perl-Locale-Msgfmt
-
-Locale::Msgfmt - Compile .po files to .mo files
-
-This module does the same thing as msgfmt from GNU gettext-tools,
-except this is pure Perl. The interface is best explained through
-examples here:
-
-https://metacpan.org/source/AZAWAWI/Locale-Msgfmt-0.15/lib/Locale/Msgfmt.pm
diff --git a/perl/perl-Locale-Msgfmt/perl-Locale-Msgfmt.info b/perl/perl-Locale-Msgfmt/perl-Locale-Msgfmt.info
deleted file mode 100644
index 9e2de3c0dd..0000000000
--- a/perl/perl-Locale-Msgfmt/perl-Locale-Msgfmt.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="perl-Locale-Msgfmt"
-VERSION="0.15"
-HOMEPAGE="https://metacpan.org/pod/Locale::Msgfmt"
-DOWNLOAD="https://cpan.metacpan.org/authors/id/A/AZ/AZAWAWI/Locale-Msgfmt-0.15.tar.gz"
-MD5SUM="7e6fde43db034f765f3a425dfa1dd4d8"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="perl-Module-Install"
-MAINTAINER="Nikos Giotis"
-EMAIL="nikos.giotis@gmail.com"
diff --git a/perl/perl-Locale-Msgfmt/slack-desc b/perl/perl-Locale-Msgfmt/slack-desc
deleted file mode 100644
index 245da7a8fd..0000000000
--- a/perl/perl-Locale-Msgfmt/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-perl-Locale-Msgfmt: perl-Locale-Msgfmt (Compile .po files to .mo files)
-perl-Locale-Msgfmt:
-perl-Locale-Msgfmt: Locale::Msgfmt is a pure Perl reimplementation of msgfmt from GNU
-perl-Locale-Msgfmt: gettext-tools.
-perl-Locale-Msgfmt:
-perl-Locale-Msgfmt: Homepage: https://metacpan.org/pod/Locale::Msgfmt
-perl-Locale-Msgfmt:
-perl-Locale-Msgfmt:
-perl-Locale-Msgfmt:
-perl-Locale-Msgfmt:
-perl-Locale-Msgfmt:
diff --git a/perl/perl-Module-Build-Tiny/perl-Module-Build-Tiny.SlackBuild b/perl/perl-Module-Build-Tiny/perl-Module-Build-Tiny.SlackBuild
index d0a157b7ba..2c2e7eb157 100644
--- a/perl/perl-Module-Build-Tiny/perl-Module-Build-Tiny.SlackBuild
+++ b/perl/perl-Module-Build-Tiny/perl-Module-Build-Tiny.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=perl-Module-Build-Tiny
-VERSION=${VERSION:-0.047}
+VERSION=${VERSION:-0.048}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/perl/perl-Module-Build-Tiny/perl-Module-Build-Tiny.info b/perl/perl-Module-Build-Tiny/perl-Module-Build-Tiny.info
index 1453eafff3..17537db75d 100644
--- a/perl/perl-Module-Build-Tiny/perl-Module-Build-Tiny.info
+++ b/perl/perl-Module-Build-Tiny/perl-Module-Build-Tiny.info
@@ -1,8 +1,8 @@
PRGNAM="perl-Module-Build-Tiny"
-VERSION="0.047"
+VERSION="0.048"
HOMEPAGE="https://metacpan.org/pod/Module::Build::Tiny"
-DOWNLOAD="http://cpan.metacpan.org/authors/id/L/LE/LEONT/Module-Build-Tiny-0.047.tar.gz"
-MD5SUM="de9814b3c22825837438fc70adad58ac"
+DOWNLOAD="http://cpan.metacpan.org/authors/id/L/LE/LEONT/Module-Build-Tiny-0.048.tar.gz"
+MD5SUM="130e952464b3f8d86995392a3cb1314e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="perl-ExtUtils-InstallPaths perl-ExtUtils-Helpers perl-Test-Harness perl-JSON"
diff --git a/perl/perl-Module-Install/perl-Module-Install.SlackBuild b/perl/perl-Module-Install/perl-Module-Install.SlackBuild
index 0e3ae06411..8bef7ddbae 100644
--- a/perl/perl-Module-Install/perl-Module-Install.SlackBuild
+++ b/perl/perl-Module-Install/perl-Module-Install.SlackBuild
@@ -2,7 +2,7 @@
#
# Slackware build script for perl-Module-Install.
#
-# Copyright 2020 M.A. Begue mab974@gmail.com
+# Copyright 2020 M.A. Begue mab974@misouk.com
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=perl-Module-Install
-VERSION=${VERSION:-1.19}
+VERSION=${VERSION:-1.21}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -86,6 +86,7 @@ perl Makefile.PL \
INSTALLDIRS=vendor \
INSTALLVENDORMAN3DIR=/usr/man/man3
make
+make test
make install DESTDIR=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
diff --git a/perl/perl-Module-Install/perl-Module-Install.info b/perl/perl-Module-Install/perl-Module-Install.info
index 7242f629a9..700a418b4a 100644
--- a/perl/perl-Module-Install/perl-Module-Install.info
+++ b/perl/perl-Module-Install/perl-Module-Install.info
@@ -1,10 +1,10 @@
PRGNAM="perl-Module-Install"
-VERSION="1.19"
+VERSION="1.21"
HOMEPAGE="https://metacpan.org/pod/Module::Install"
-DOWNLOAD="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Module-Install-1.19.tar.gz"
-MD5SUM="0d1b78cc13ebf9b9ad008c8928a5b2dd"
+DOWNLOAD="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Module-Install-1.21.tar.gz"
+MD5SUM="71a170c4ecc224cb5c8b147830979549"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="perl-YAML-Tiny perl-File-Remove"
MAINTAINER="Michel A. BEGUE"
-EMAIL="mab974@gmail.com"
+EMAIL="mab974@misouk.com"
diff --git a/perl/perl-Module-Manifest/perl-Module-Manifest.SlackBuild b/perl/perl-Module-Manifest/perl-Module-Manifest.SlackBuild
index 38d572815a..6519146614 100644
--- a/perl/perl-Module-Manifest/perl-Module-Manifest.SlackBuild
+++ b/perl/perl-Module-Manifest/perl-Module-Manifest.SlackBuild
@@ -7,7 +7,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=perl-Module-Manifest
-VERSION=${VERSION:-1.08}
+VERSION=${VERSION:-1.09}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/perl/perl-Module-Manifest/perl-Module-Manifest.info b/perl/perl-Module-Manifest/perl-Module-Manifest.info
index 4cf3c5dcce..ce620b737f 100644
--- a/perl/perl-Module-Manifest/perl-Module-Manifest.info
+++ b/perl/perl-Module-Manifest/perl-Module-Manifest.info
@@ -1,8 +1,8 @@
PRGNAM="perl-Module-Manifest"
-VERSION="1.08"
+VERSION="1.09"
HOMEPAGE="https://metacpan.org/release/Module-Manifest"
-DOWNLOAD="https://cpan.metacpan.org/authors/id/A/AD/ADAMK/Module-Manifest-1.08.tar.gz"
-MD5SUM="90f035a0074c3edcf8f595a38ec90da1"
+DOWNLOAD="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Module-Manifest-1.09.tar.gz"
+MD5SUM="71cd43db0ef8d6497b4b0415497453c6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="perl-Params-Util perl-Test-Exception perl-test-warn perl-Module-Install"
diff --git a/perl/perl-Net-DNS-SEC/perl-Net-DNS-SEC.SlackBuild b/perl/perl-Net-DNS-SEC/perl-Net-DNS-SEC.SlackBuild
index 5b6692edfb..4dcbd1e587 100644
--- a/perl/perl-Net-DNS-SEC/perl-Net-DNS-SEC.SlackBuild
+++ b/perl/perl-Net-DNS-SEC/perl-Net-DNS-SEC.SlackBuild
@@ -29,7 +29,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM="perl-Net-DNS-SEC"
SRCNAM="Net-DNS-SEC"
-VERSION=${VERSION:-1.02}
+VERSION=${VERSION:-1.24}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -42,9 +42,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -80,7 +77,7 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-echo "y" | CFLAGS="$SLKCFLAGS" perl Makefile.PL \
+CFLAGS="$SLKCFLAGS" perl Makefile.PL \
PREFIX=/usr \
INSTALLDIRS=vendor \
INSTALLVENDORMAN3DIR=/usr/man/man3
diff --git a/perl/perl-Net-DNS-SEC/perl-Net-DNS-SEC.info b/perl/perl-Net-DNS-SEC/perl-Net-DNS-SEC.info
index 8a4a7db72f..240c039d3f 100644
--- a/perl/perl-Net-DNS-SEC/perl-Net-DNS-SEC.info
+++ b/perl/perl-Net-DNS-SEC/perl-Net-DNS-SEC.info
@@ -1,8 +1,8 @@
PRGNAM="perl-Net-DNS-SEC"
-VERSION="1.02"
+VERSION="1.24"
HOMEPAGE="https://metacpan.org/pod/Net::DNS::SEC"
-DOWNLOAD="https://cpan.metacpan.org/authors/id/N/NL/NLNETLABS/Net-DNS-SEC-1.02.tar.gz"
-MD5SUM="3d11216697d0fe43e74484b59f94188d"
+DOWNLOAD="https://cpan.metacpan.org/authors/id/N/NL/NLNETLABS/Net-DNS-SEC-1.24.tar.gz"
+MD5SUM="63879e0f104320f63633be7d4b02b851"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="perl-Crypt-OpenSSL-DSA perl-Crypt-OpenSSL-RSA perl-Crypt-OpenSSL-ECDSA perl-Digest-GOST perl-net-dns"
diff --git a/perl/perl-PDF-API2/perl-PDF-API2.SlackBuild b/perl/perl-PDF-API2/perl-PDF-API2.SlackBuild
index bf2095a64f..4090bcdd05 100644
--- a/perl/perl-PDF-API2/perl-PDF-API2.SlackBuild
+++ b/perl/perl-PDF-API2/perl-PDF-API2.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for perl-PDF-API2
-# Copyright 2019 M.A.Begue mab974@gmail.com
+# Copyright 2019 M.A.Begue mab974@misouk.com
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=perl-PDF-API2
-VERSION=${VERSION:-2.038}
+VERSION=${VERSION:-2.045}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -87,6 +87,7 @@ perl Makefile.PL \
INSTALLVENDORMAN1DIR=/usr/man/man1 \
INSTALLVENDORMAN3DIR=/usr/man/man3
make
+make test
make install DESTDIR=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
diff --git a/perl/perl-PDF-API2/perl-PDF-API2.info b/perl/perl-PDF-API2/perl-PDF-API2.info
index c54df2e261..66b01b8524 100644
--- a/perl/perl-PDF-API2/perl-PDF-API2.info
+++ b/perl/perl-PDF-API2/perl-PDF-API2.info
@@ -1,10 +1,10 @@
PRGNAM="perl-PDF-API2"
-VERSION="2.038"
+VERSION="2.045"
HOMEPAGE="https://metacpan.org/pod/PDF::API2"
-DOWNLOAD="https://cpan.metacpan.org/authors/id/S/SS/SSIMMS/PDF-API2-2.038.tar.gz"
-MD5SUM="2d6683d01b95f554ec5bb2e29f31ff03"
+DOWNLOAD="https://cpan.metacpan.org/authors/id/S/SS/SSIMMS/PDF-API2-2.045.tar.gz"
+MD5SUM="afe283ab6b1273ed0d129ec1a18cfb8a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="perl-Font-TTF"
+REQUIRES="perl-Font-TTF perl-Test-Exception perl-Test-Memory-Cycle"
MAINTAINER="Michel A. BEGUE"
-EMAIL="mab974@gmail.com"
+EMAIL="mab974@misouk.com"
diff --git a/perl/perl-Test-Script/README b/perl/perl-Test-Script/README
deleted file mode 100644
index 1855d732c0..0000000000
--- a/perl/perl-Test-Script/README
+++ /dev/null
@@ -1,6 +0,0 @@
-The intent of Test-Script module is to provide a series of basic
-tests for 80% of the testing you will need to do for scripts in the
-script (or bin as is also commonly used) paths of your Perl
-distribution. Further, it aims to provide this functionality with
-perfect platform-compatibility, and in a way that is as unobtrusive
-as possible.
diff --git a/perl/perl-Test-Script/perl-Test-Script.SlackBuild b/perl/perl-Test-Script/perl-Test-Script.SlackBuild
deleted file mode 100644
index feed1d477e..0000000000
--- a/perl/perl-Test-Script/perl-Test-Script.SlackBuild
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/bin/bash
-
-# Slackware build script for Test-Script
-
-# Copyright 2011 Mikko Värri, Finland
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-cd $(dirname $0) ; CWD=$(pwd)
-
-PRGNAM=perl-Test-Script
-VERSION=${VERSION:-1.07}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-PKGTYPE=${PKGTYPE:-tgz}
-
-SRCNAM="$( echo $PRGNAM | cut -d- -f2- )"
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
-if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
- echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
- exit 0
-fi
-
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $SRCNAM-$VERSION
-tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
-cd $SRCNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-perl Makefile.PL \
- PREFIX=/usr \
- INSTALLDIRS=vendor \
- INSTALLVENDORMAN3DIR=/usr/man/man3
-make
-make test
-make install DESTDIR=$PKG
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-
-find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
-
-find $PKG -depth -type d -empty -delete || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a Changes LICENSE README $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/perl/perl-Test-Script/perl-Test-Script.info b/perl/perl-Test-Script/perl-Test-Script.info
deleted file mode 100644
index 1ad7a3f757..0000000000
--- a/perl/perl-Test-Script/perl-Test-Script.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="perl-Test-Script"
-VERSION="1.07"
-HOMEPAGE="https://metacpan.org/pod/Test::Script"
-DOWNLOAD="https://cpan.metacpan.org/authors/id/A/AD/ADAMK/Test-Script-1.07.tar.gz"
-MD5SUM="f6b5baa6403cd24dac7f023e0ea22384"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="perl-IPC-Run3 perl-Probe-Perl perl-Module-Install"
-MAINTAINER="Mikko Värri"
-EMAIL="vmj@linuxbox.fi"
diff --git a/perl/perl-Test-Script/slack-desc b/perl/perl-Test-Script/slack-desc
deleted file mode 100644
index d05ae887b0..0000000000
--- a/perl/perl-Test-Script/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-perl-Test-Script: perl-Test-Script (Basic cross-platform tests for scripts)
-perl-Test-Script:
-perl-Test-Script: The intent of Test-Script module is to provide a series of basic
-perl-Test-Script: tests for 80% of the testing you will need to do for scripts in the
-perl-Test-Script: script (or bin as is also commonly used) paths of your Perl
-perl-Test-Script: distribution. Further, it aims to provide this functionality with
-perl-Test-Script: perfect platform-compatibility, and in a way that is as unobtrusive
-perl-Test-Script: as possible.
-perl-Test-Script:
-perl-Test-Script:
-perl-Test-Script:
diff --git a/perl/perl-WWW-Curl/curl-7.71.0.patch.gz b/perl/perl-WWW-Curl/curl-7.71.0.patch.gz
index f85592a36f..96e83e4a30 100644
--- a/perl/perl-WWW-Curl/curl-7.71.0.patch.gz
+++ b/perl/perl-WWW-Curl/curl-7.71.0.patch.gz
Binary files differ
diff --git a/perl/perl-WWW-Curl/perl-WWW-Curl.SlackBuild b/perl/perl-WWW-Curl/perl-WWW-Curl.SlackBuild
index 46291bd33f..f99a85f115 100644
--- a/perl/perl-WWW-Curl/perl-WWW-Curl.SlackBuild
+++ b/perl/perl-WWW-Curl/perl-WWW-Curl.SlackBuild
@@ -7,7 +7,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=perl-WWW-Curl
VERSION=${VERSION:-4.17}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -21,9 +21,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -64,6 +61,8 @@ find -L . \
zcat $CWD/curl-7.71.0.patch.gz | patch -p1
+PERL_USE_UNSAFE_INC=1 \
+PERL_MM_USE_DEFAULT=1 \
perl Makefile.PL \
PREFIX=/usr \
INSTALLDIRS=vendor \
diff --git a/perl/perl-YAML-Tiny/perl-YAML-Tiny.SlackBuild b/perl/perl-YAML-Tiny/perl-YAML-Tiny.SlackBuild
index 735e56ae23..42d511b0fc 100644
--- a/perl/perl-YAML-Tiny/perl-YAML-Tiny.SlackBuild
+++ b/perl/perl-YAML-Tiny/perl-YAML-Tiny.SlackBuild
@@ -2,7 +2,7 @@
#
# Slackware build script for perl-YAML-Tiny.
#
-# Copyright 2020 M.A. Begue mab974@gmail.com
+# Copyright 2020 M.A. Begue mab974@misouk.com
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=perl-YAML-Tiny
-VERSION=${VERSION:-1.73}
+VERSION=${VERSION:-1.74}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -86,6 +86,7 @@ perl Makefile.PL \
INSTALLDIRS=vendor \
INSTALLVENDORMAN3DIR=/usr/man/man3
make
+make test
make install DESTDIR=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
diff --git a/perl/perl-YAML-Tiny/perl-YAML-Tiny.info b/perl/perl-YAML-Tiny/perl-YAML-Tiny.info
index 7373a62810..b4ba6a7fb3 100644
--- a/perl/perl-YAML-Tiny/perl-YAML-Tiny.info
+++ b/perl/perl-YAML-Tiny/perl-YAML-Tiny.info
@@ -1,10 +1,10 @@
PRGNAM="perl-YAML-Tiny"
-VERSION="1.73"
+VERSION="1.74"
HOMEPAGE="https://metacpan.org/pod/YAML::Tiny"
-DOWNLOAD="https://cpan.metacpan.org/authors/id/E/ET/ETHER/YAML-Tiny-1.73.tar.gz"
-MD5SUM="d1bb2525e4ab46bfab4b22842c467529"
+DOWNLOAD="https://cpan.metacpan.org/authors/id/E/ET/ETHER/YAML-Tiny-1.74.tar.gz"
+MD5SUM="5a2b53a7cf7f3dcc98173944565ca0d6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Michel A. BEGUE"
-EMAIL="mab974@gmail.com"
+EMAIL="mab974@misouk.com"
diff --git a/perl/perl-html-form/perl-html-form.SlackBuild b/perl/perl-html-form/perl-html-form.SlackBuild
index a02769e550..b002bc8df9 100644
--- a/perl/perl-html-form/perl-html-form.SlackBuild
+++ b/perl/perl-html-form/perl-html-form.SlackBuild
@@ -28,7 +28,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=perl-html-form
-VERSION=${VERSION:-6.07}
+VERSION=${VERSION:-6.11}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -43,9 +43,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -104,7 +101,7 @@ find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f
find $PKG -depth -type d -empty -delete || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a Changes INSTALL LICENSE $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a Changes LICENSE $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/perl/perl-html-form/perl-html-form.info b/perl/perl-html-form/perl-html-form.info
index 79e9e18c1a..330730ef45 100644
--- a/perl/perl-html-form/perl-html-form.info
+++ b/perl/perl-html-form/perl-html-form.info
@@ -1,10 +1,10 @@
PRGNAM="perl-html-form"
-VERSION="6.07"
+VERSION="6.11"
HOMEPAGE="https://metacpan.org/pod/HTML::Form"
-DOWNLOAD="https://cpan.metacpan.org/authors/id/O/OA/OALDERS/HTML-Form-6.07.tar.gz"
-MD5SUM="71718750e6a2132b50eeca417a55e18e"
+DOWNLOAD="https://cpan.metacpan.org/authors/id/S/SI/SIMBABQUE/HTML-Form-6.11.tar.gz"
+MD5SUM="5348fbdee5ec572e21c1579d4eb183d3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="perl-http-message"
+REQUIRES="perl-html-parser perl-Test-Warnings"
MAINTAINER="Donald Cooley"
EMAIL="chytraeu@sdf.org"
diff --git a/python/certbot-dns-cloudflare/certbot-dns-cloudflare.SlackBuild b/python/certbot-dns-cloudflare/certbot-dns-cloudflare.SlackBuild
index dde14d1a34..37dbd46694 100644
--- a/python/certbot-dns-cloudflare/certbot-dns-cloudflare.SlackBuild
+++ b/python/certbot-dns-cloudflare/certbot-dns-cloudflare.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2022 S.S. Bolokanar, Bulgaria <bolokanar@bulgars.org>
+# Copyright 2022 S.S. Bolokanar, Bulgaria <bolokanar@bulgarsociety.org>
# С. С. Болоканаръ, България
# All rights reserved.
#
@@ -24,7 +24,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=certbot-dns-cloudflare
-VERSION=${VERSION:-2.9.0}
+VERSION=${VERSION:-2.10.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/certbot-dns-cloudflare/certbot-dns-cloudflare.info b/python/certbot-dns-cloudflare/certbot-dns-cloudflare.info
index bde2756c46..48dba67317 100644
--- a/python/certbot-dns-cloudflare/certbot-dns-cloudflare.info
+++ b/python/certbot-dns-cloudflare/certbot-dns-cloudflare.info
@@ -1,10 +1,10 @@
PRGNAM="certbot-dns-cloudflare"
-VERSION="2.9.0"
+VERSION="2.10.0"
HOMEPAGE="https://pypi.org/project/certbot-dns-cloudflare/"
-DOWNLOAD="https://files.pythonhosted.org/packages/cd/b4/db80e1ea8f9165ed816f64acce5e7df8beb8689457f1b1872f5b41124ae4/certbot-dns-cloudflare-2.9.0.tar.gz"
-MD5SUM="c5c704fc0035325a90457b01733fb227"
+DOWNLOAD="https://files.pythonhosted.org/packages/e9/42/afd7d47caa771fc40eb1b77d126648c3421b9277ca66917aa6d8e3599810/certbot-dns-cloudflare-2.10.0.tar.gz"
+MD5SUM="f438fa6dbaf63f1fcea140fa885827a2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-cloudflare"
MAINTAINER="S. S. Bolokanar"
-EMAIL="bolokanar@bulgars.org"
+EMAIL="bolokanar@bulgarsociety.org"
diff --git a/python/pyPdf/README b/python/pyPdf/README
deleted file mode 100644
index de81982790..0000000000
--- a/python/pyPdf/README
+++ /dev/null
@@ -1,16 +0,0 @@
-A Pure-Python library built as a PDF toolkit. It is capable of:
-
- extracting document information (title, author, ...),
- splitting documents page by page,
- merging documents page by page,
- cropping pages,
- merging multiple pages into a single page,
- encrypting and decrypting PDF files.
-
-It should run on any Python platform without any dependencies on
-external libraries. It can also work entirely on StringIO objects
-rather than file streams, allowing for PDF manipulation in memory. It
-is therefore a useful tool for websites that manage or manipulate PDFs.
-
-NOTE: the upstream project is NOT MAINTAINED. PyPDF2 is a fork based on
-this project that provides enhanced features.
diff --git a/python/pyPdf/pyPdf.info b/python/pyPdf/pyPdf.info
deleted file mode 100644
index 817b2a041d..0000000000
--- a/python/pyPdf/pyPdf.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="pyPdf"
-VERSION="1.13"
-HOMEPAGE="http://pybrary.net/pyPdf/"
-DOWNLOAD="http://pybrary.net/pyPdf/pyPdf-1.13.tar.gz"
-MD5SUM="7a75ef56f227b78ae62d6e38d4b6b1da"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Alan Alberghini"
-EMAIL="414N@slacky.it"
diff --git a/python/pyPdf/slack-desc b/python/pyPdf/slack-desc
deleted file mode 100644
index 7bd23be9aa..0000000000
--- a/python/pyPdf/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-pyPdf: pyPdf (pure Python library built as a PDF toolkit)
-pyPdf:
-pyPdf: It is capable of:
-pyPdf: - extracting document information (title, author, ...),
-pyPdf: - splitting documents page by page,
-pyPdf: - merging documents page by page,
-pyPdf: - cropping pages,
-pyPdf: - merging multiple pages into a single page,
-pyPdf: - encrypting and decrypting PDF files.
-pyPdf:
-pyPdf: Homepage: http://pybrary.net/pyPdf/
diff --git a/python/pytest/pytest.info b/python/pytest/pytest.info
index fc5a4d8b63..f66a59d9d4 100644
--- a/python/pytest/pytest.info
+++ b/python/pytest/pytest.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://files.pythonhosted.org/packages/source/p/pytest/pytest-3.8.2.t
MD5SUM="8e7d324528a63c2dab64a10ae028e0f2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="python2-py python2-attrs pluggy more-itertools python2-atomicwrites funcsigs python2-pathlib2"
+REQUIRES="python2-py python2-attrs python2-pluggy more-itertools python2-atomicwrites funcsigs python2-pathlib2"
MAINTAINER="Dimitris Zlatanidis"
EMAIL="d.zlatanidis@gmail.com"
diff --git a/python/python-mysql-replication/python-mysql-replication.SlackBuild b/python/python-mysql-replication/python-mysql-replication.SlackBuild
index 439e830544..8617797374 100644
--- a/python/python-mysql-replication/python-mysql-replication.SlackBuild
+++ b/python/python-mysql-replication/python-mysql-replication.SlackBuild
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python-mysql-replication
SRCNAM=mysql-replication
-VERSION=${VERSION:-1.0.7}
+VERSION=${VERSION:-1.0.8}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python-mysql-replication/python-mysql-replication.info b/python/python-mysql-replication/python-mysql-replication.info
index 2d35516022..4cc3d64634 100644
--- a/python/python-mysql-replication/python-mysql-replication.info
+++ b/python/python-mysql-replication/python-mysql-replication.info
@@ -1,8 +1,8 @@
PRGNAM="python-mysql-replication"
-VERSION="1.0.7"
+VERSION="1.0.8"
HOMEPAGE="https://github.com/julien-duponchelle/python-mysql-replication"
-DOWNLOAD="https://files.pythonhosted.org/packages/40/c7/43da46437af8857e474cdb6d6cc270018a227abeee3f6672edb916210357/mysql-replication-1.0.7.tar.gz"
-MD5SUM="33746e65168bb8849307b6e95fd8d5ff"
+DOWNLOAD="https://files.pythonhosted.org/packages/65/3b/74c995490ee88c906df4008a6a30c3cb0f7426edd8ed2257faaab27273d7/mysql-replication-1.0.8.tar.gz"
+MD5SUM="9004112b965b8dcd72c30c46e1be5ca0"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="pymysql"
diff --git a/python/python2-pluggy/README b/python/python2-pluggy/README
new file mode 100644
index 0000000000..588eb17442
--- /dev/null
+++ b/python/python2-pluggy/README
@@ -0,0 +1,6 @@
+pluggy (mechanisms for python)
+
+This is the plugin manager as used by pytest but stripped of pytest
+specific details.
+
+This is the Python 2 build of pluggy.
diff --git a/libraries/libtorch-cxx11-abi-shared-with-deps/libtorch-cxx11-abi-shared-with-deps.SlackBuild b/python/python2-pluggy/python2-pluggy.SlackBuild
index b305f42544..ef6b2874e7 100644
--- a/libraries/libtorch-cxx11-abi-shared-with-deps/libtorch-cxx11-abi-shared-with-deps.SlackBuild
+++ b/python/python2-pluggy/python2-pluggy.SlackBuild
@@ -1,8 +1,9 @@
#!/bin/bash
-# Slackware build script for libtorch-cxx11-abi-shared-with-deps
+# Slackware build script for pluggy
-# Copyright 2024 Johannes Schoepfer, Germany
+# Copyright 2015-2019 Dimitris Zlatanidis Orestiada, Greece
+# Copyright 2022 Isaac Yu <isaacyu@protonmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,12 +25,14 @@
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=libtorch-cxx11-abi-shared-with-deps
-VERSION=${VERSION:-2.1.1}
+PRGNAM=python2-pluggy
+VERSION=${VERSION:-0.13.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
+SRCNAM=pluggy
+
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
@@ -52,25 +55,23 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf libtorch
-unzip $CWD/$PRGNAM-$VERSION+cpu.zip
-
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
+cd $SRCNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} + -o \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} +
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-mkdir -p $PKG/opt/
-mv libtorch $PKG/opt
-rmdir $PKG/opt/libtorch/bin
-chmod 755 $PKG/opt/libtorch/lib/libgomp-52f2fd74.so.1
+python2 setup.py install --root=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a CHANGELOG.rst LICENSE README.rst $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/python/python2-pluggy/python2-pluggy.info b/python/python2-pluggy/python2-pluggy.info
new file mode 100644
index 0000000000..22082499a2
--- /dev/null
+++ b/python/python2-pluggy/python2-pluggy.info
@@ -0,0 +1,10 @@
+PRGNAM="python2-pluggy"
+VERSION="0.13.1"
+HOMEPAGE="https://github.com/pytest-dev/pluggy"
+DOWNLOAD="https://files.pythonhosted.org/packages/source/p/pluggy/pluggy-0.13.1.tar.gz"
+MD5SUM="7f610e28b8b34487336b585a3dfb803d"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="python2-setuptools-scm"
+MAINTAINER="Isaac Yu"
+EMAIL="isaacyu@protonmail.com"
diff --git a/python/python2-pluggy/slack-desc b/python/python2-pluggy/slack-desc
new file mode 100644
index 0000000000..4d8890c877
--- /dev/null
+++ b/python/python2-pluggy/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+python2-pluggy: python2-pluggy (mechanisms for python)
+python2-pluggy:
+python2-pluggy: This is the plugin manager as used by pytest but stripped of pytest
+python2-pluggy: specific details.
+python2-pluggy:
+python2-pluggy: Homepage: https://github.com/pytest-dev/pluggy
+python2-pluggy:
+python2-pluggy:
+python2-pluggy:
+python2-pluggy:
+python2-pluggy:
diff --git a/python/python3-ZConfig/python3-ZConfig.SlackBuild b/python/python3-ZConfig/python3-ZConfig.SlackBuild
index 42efe8023f..b96b71c9cd 100644
--- a/python/python3-ZConfig/python3-ZConfig.SlackBuild
+++ b/python/python3-ZConfig/python3-ZConfig.SlackBuild
@@ -25,8 +25,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-ZConfig
-SRCNAM=${PRGNAM#python3-*}
-VERSION=${VERSION:-4.0}
+SRCNAM=zconfig
+VERSION=${VERSION:-4.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-ZConfig/python3-ZConfig.info b/python/python3-ZConfig/python3-ZConfig.info
index f338c0ce30..8d77e17bb1 100644
--- a/python/python3-ZConfig/python3-ZConfig.info
+++ b/python/python3-ZConfig/python3-ZConfig.info
@@ -1,8 +1,8 @@
PRGNAM="python3-ZConfig"
-VERSION="4.0"
+VERSION="4.1"
HOMEPAGE="https://github.com/zopefoundation/ZConfig/"
-DOWNLOAD="https://pypi.python.org/packages/source/Z/ZConfig/ZConfig-4.0.tar.gz"
-MD5SUM="10b37b49d50a5006a7135cb086b72184"
+DOWNLOAD="https://pypi.python.org/packages/source/z/zconfig/zconfig-4.1.tar.gz"
+MD5SUM="2f0fd6de7d56ca7931453f486f347a39"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/python/python3-astroid/python3-astroid.SlackBuild b/python/python3-astroid/python3-astroid.SlackBuild
index e106c9ffcc..ea008a6d25 100644
--- a/python/python3-astroid/python3-astroid.SlackBuild
+++ b/python/python3-astroid/python3-astroid.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for python3-astroid
-# Copyright 2022-2023 Dimitris Zlatanidis Orestiada, Greece
+# Copyright 2022-2024 Dimitris Zlatanidis Orestiada, Greece
# Copyright 2018-2019 Markus Rinne Finland
# All rights reserved.
#
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-astroid
SRCNAM=astroid
-VERSION=${VERSION:-3.0.2}
+VERSION=${VERSION:-3.1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-astroid/python3-astroid.info b/python/python3-astroid/python3-astroid.info
index 4a58edf2ff..04d884d7ed 100644
--- a/python/python3-astroid/python3-astroid.info
+++ b/python/python3-astroid/python3-astroid.info
@@ -1,8 +1,8 @@
PRGNAM="python3-astroid"
-VERSION="3.0.2"
+VERSION="3.1.0"
HOMEPAGE="https://github.com/PyCQA/astroid"
-DOWNLOAD="https://files.pythonhosted.org/packages/58/03/c44924529da62cfa77a4a8f8fd5b0ac687f6f17dc68afd24d783d2046dfa/astroid-3.0.2.tar.gz"
-MD5SUM="978338f294cfabcc5aaa1b7db833ca34"
+DOWNLOAD="https://files.pythonhosted.org/packages/a9/b9/f11533eed9b65606fb02f1b0994d8ed0903358bc55a6b9759e42f1134725/astroid-3.1.0.tar.gz"
+MD5SUM="75c5ffd8edd0d2d74a6407db704a2e20"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-setuptools-opt typing-extensions"
diff --git a/python/python3-cairocffi/python3-cairocffi.SlackBuild b/python/python3-cairocffi/python3-cairocffi.SlackBuild
index 31b9d1d7f3..a8cd54b8af 100644
--- a/python/python3-cairocffi/python3-cairocffi.SlackBuild
+++ b/python/python3-cairocffi/python3-cairocffi.SlackBuild
@@ -28,7 +28,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-cairocffi
SRCNAM=${PRGNAM#python3-*}
-VERSION=${VERSION:-1.6.1}
+VERSION=${VERSION:-1.7.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-cairocffi/python3-cairocffi.info b/python/python3-cairocffi/python3-cairocffi.info
index 093d5ec76b..443405dfff 100644
--- a/python/python3-cairocffi/python3-cairocffi.info
+++ b/python/python3-cairocffi/python3-cairocffi.info
@@ -1,8 +1,8 @@
PRGNAM="python3-cairocffi"
-VERSION="1.6.1"
+VERSION="1.7.0"
HOMEPAGE="https://github.com/Kozea/cairocffi"
-DOWNLOAD="https://files.pythonhosted.org/packages/source/c/cairocffi/cairocffi-1.6.1.tar.gz"
-MD5SUM="57cd3346d099e2b4efbe5fad1bf085fc"
+DOWNLOAD="https://files.pythonhosted.org/packages/source/c/cairocffi/cairocffi-1.7.0.tar.gz"
+MD5SUM="45546b73a7ec182d44340df50b5ce7a3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-pytest-runner"
diff --git a/python/python3-cloudflare/python3-cloudflare.SlackBuild b/python/python3-cloudflare/python3-cloudflare.SlackBuild
index 408bfe9426..3e96b6e0ef 100644
--- a/python/python3-cloudflare/python3-cloudflare.SlackBuild
+++ b/python/python3-cloudflare/python3-cloudflare.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2022 S.S. Bolokanar, Bulgaria <bolokanar@bulgars.org>
+# Copyright 2022 S.S. Bolokanar, Bulgaria <bolokanar@bulgarsociety.org>
# С. С. Болоканаръ, България
# All rights reserved.
#
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-cloudflare
SRCNAM=python-cloudflare
-VERSION=${VERSION:-2.19.2}
+VERSION=${VERSION:-2.19.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-cloudflare/python3-cloudflare.info b/python/python3-cloudflare/python3-cloudflare.info
index d27f8e4721..2eb193861d 100644
--- a/python/python3-cloudflare/python3-cloudflare.info
+++ b/python/python3-cloudflare/python3-cloudflare.info
@@ -1,10 +1,10 @@
PRGNAM="python3-cloudflare"
-VERSION="2.19.2"
+VERSION="2.19.4"
HOMEPAGE="https://github.com/cloudflare/python-cloudflare"
-DOWNLOAD="https://github.com/cloudflare/python-cloudflare/archive/2.19.2/python-cloudflare-2.19.2.tar.gz"
-MD5SUM="c42dc71320b156eed987c81d9d6e2b6a"
+DOWNLOAD="https://github.com/cloudflare/python-cloudflare/archive/2.19.4/python-cloudflare-2.19.4.tar.gz"
+MD5SUM="41fa857c2c6ad7124d1fe56dde624a9a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-jsonlines BeautifulSoup4"
MAINTAINER="S. S. Bolokanar"
-EMAIL="bolokanar@bulgars.org"
+EMAIL="bolokanar@bulgarsociety.org"
diff --git a/python/python3-filelock/python3-filelock.SlackBuild b/python/python3-filelock/python3-filelock.SlackBuild
index a550f526aa..16f1fbb573 100644
--- a/python/python3-filelock/python3-filelock.SlackBuild
+++ b/python/python3-filelock/python3-filelock.SlackBuild
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-filelock
SRCNAM=filelock
-VERSION=${VERSION:-3.13.4}
+VERSION=${VERSION:-3.14.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-filelock/python3-filelock.info b/python/python3-filelock/python3-filelock.info
index 4f70a07e67..2be5bbe7ad 100644
--- a/python/python3-filelock/python3-filelock.info
+++ b/python/python3-filelock/python3-filelock.info
@@ -1,8 +1,8 @@
PRGNAM="python3-filelock"
-VERSION="3.13.4"
+VERSION="3.14.0"
HOMEPAGE="https://github.com/tox-dev/py-filelock"
-DOWNLOAD="https://github.com/tox-dev/py-filelock/archive/3.13.4/filelock-3.13.4.tar.gz"
-MD5SUM="b5d0234e09b488bdbc6418430bafbbc2"
+DOWNLOAD="https://github.com/tox-dev/py-filelock/archive/3.14.0/filelock-3.14.0.tar.gz"
+MD5SUM="2b7e84b2cf5a7f05d0589846d4bbd389"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-hatch_vcs"
diff --git a/python/python3-grpcio/python3-grpcio.SlackBuild b/python/python3-grpcio/python3-grpcio.SlackBuild
index 86326cbb68..d58f76d759 100644
--- a/python/python3-grpcio/python3-grpcio.SlackBuild
+++ b/python/python3-grpcio/python3-grpcio.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-grpcio
-VERSION=${VERSION:-1.62.2}
+VERSION=${VERSION:-1.63.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-grpcio/python3-grpcio.info b/python/python3-grpcio/python3-grpcio.info
index 1376e07485..f7f193c75f 100644
--- a/python/python3-grpcio/python3-grpcio.info
+++ b/python/python3-grpcio/python3-grpcio.info
@@ -1,8 +1,8 @@
PRGNAM="python3-grpcio"
-VERSION="1.62.2"
+VERSION="1.63.0"
HOMEPAGE="https://grpc.io/"
-DOWNLOAD="https://github.com/grpc/grpc/archive/v1.62.2/grpc-1.62.2.tar.gz"
-MD5SUM="0cabd7727133de65d9d1c7d521b6b05f"
+DOWNLOAD="https://github.com/grpc/grpc/archive/v1.63.0/grpc-1.63.0.tar.gz"
+MD5SUM="a7a4cd8ce187c4a49d9498b3fcd148b2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="protobuf3 re2"
diff --git a/python/python3-identify/python3-identify.SlackBuild b/python/python3-identify/python3-identify.SlackBuild
index c4eb767328..754c338f1c 100644
--- a/python/python3-identify/python3-identify.SlackBuild
+++ b/python/python3-identify/python3-identify.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-identify
SRCNAM=identify
-VERSION=${VERSION:-2.5.35}
+VERSION=${VERSION:-2.5.36}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-identify/python3-identify.info b/python/python3-identify/python3-identify.info
index e77b165cf4..8fa4cf69a3 100644
--- a/python/python3-identify/python3-identify.info
+++ b/python/python3-identify/python3-identify.info
@@ -1,8 +1,8 @@
PRGNAM="python3-identify"
-VERSION="2.5.35"
+VERSION="2.5.36"
HOMEPAGE="https://github.com/pre-commit/identify"
-DOWNLOAD="https://files.pythonhosted.org/packages/c4/ba/680e84c24284eba70aebaaa90d03bd039453419151b0e6f92cd36bf69dd5/identify-2.5.35.tar.gz"
-MD5SUM="e761ee8cac68c8b0d5ad26ee0362f2ba"
+DOWNLOAD="https://files.pythonhosted.org/packages/aa/9a/83775a4e09de8b9d774a2217bfe03038c488778e58561e6970daa39b4801/identify-2.5.36.tar.gz"
+MD5SUM="6f9a1ccf7b934e11389a9dc4a3a0898a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/python/python3-joblib/python3-joblib.SlackBuild b/python/python3-joblib/python3-joblib.SlackBuild
index 0d9f19d1c3..066b0d438c 100644
--- a/python/python3-joblib/python3-joblib.SlackBuild
+++ b/python/python3-joblib/python3-joblib.SlackBuild
@@ -28,7 +28,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-joblib
SRCNAM=joblib
-VERSION=${VERSION:-1.4.0}
+VERSION=${VERSION:-1.4.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-joblib/python3-joblib.info b/python/python3-joblib/python3-joblib.info
index 70c056d5cc..33becc4974 100644
--- a/python/python3-joblib/python3-joblib.info
+++ b/python/python3-joblib/python3-joblib.info
@@ -1,8 +1,8 @@
PRGNAM="python3-joblib"
-VERSION="1.4.0"
+VERSION="1.4.2"
HOMEPAGE="https://joblib.readthedocs.io/"
-DOWNLOAD="https://files.pythonhosted.org/packages/source/j/joblib/joblib-1.4.0.tar.gz"
-MD5SUM="496285737120962e2aea01ac21c8bdca"
+DOWNLOAD="https://files.pythonhosted.org/packages/source/j/joblib/joblib-1.4.2.tar.gz"
+MD5SUM="979072af26696c75dc90b6c9db73c51b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-setuptools-opt"
diff --git a/python/python3-keyring/python3-keyring.SlackBuild b/python/python3-keyring/python3-keyring.SlackBuild
index 14c403ea65..385b8eedd8 100644
--- a/python/python3-keyring/python3-keyring.SlackBuild
+++ b/python/python3-keyring/python3-keyring.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-keyring
-VERSION=${VERSION:-25.1.0}
+VERSION=${VERSION:-25.2.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-keyring/python3-keyring.info b/python/python3-keyring/python3-keyring.info
index d82d86cb2c..b9a3a597c9 100644
--- a/python/python3-keyring/python3-keyring.info
+++ b/python/python3-keyring/python3-keyring.info
@@ -1,8 +1,8 @@
PRGNAM="python3-keyring"
-VERSION="25.1.0"
+VERSION="25.2.0"
HOMEPAGE="https://github.com/jaraco/keyring"
-DOWNLOAD="https://files.pythonhosted.org/packages/source/k/keyring/keyring-25.1.0.tar.gz"
-MD5SUM="f5db2f4ff95722e35540e2b4fba2f83c"
+DOWNLOAD="https://files.pythonhosted.org/packages/source/k/keyring/keyring-25.2.0.tar.gz"
+MD5SUM="02d8ecd28cc341d1875d4cc8412e4919"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python-importlib_metadata python3-jaraco.classes python3-jaraco.context python3-jaraco.functools secretstorage"
diff --git a/python/python3-librosa/python3-librosa.SlackBuild b/python/python3-librosa/python3-librosa.SlackBuild
index 2c4319b166..c34c2df935 100644
--- a/python/python3-librosa/python3-librosa.SlackBuild
+++ b/python/python3-librosa/python3-librosa.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for python3-librosa
-# Copyright 2023 Jeremy Hansen jebrhansen+SBo@gmail.com
+# Copyright 2023-2024 Jeremy Hansen <jebrhansen+SBo@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-librosa
SRCNAM=librosa
-VERSION=${VERSION:-0.10.1}
+VERSION=${VERSION:-0.10.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -47,20 +47,6 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
set -e
rm -rf $PKG
diff --git a/python/python3-librosa/python3-librosa.info b/python/python3-librosa/python3-librosa.info
index e58dd15819..33e2a1a4cc 100644
--- a/python/python3-librosa/python3-librosa.info
+++ b/python/python3-librosa/python3-librosa.info
@@ -1,8 +1,8 @@
PRGNAM="python3-librosa"
-VERSION="0.10.1"
+VERSION="0.10.2"
HOMEPAGE="https://librosa.org/"
-DOWNLOAD="https://github.com/librosa/librosa/archive/refs/tags/0.10.1/librosa-0.10.1.tar.gz"
-MD5SUM="5c9d22f503c0ea20dac73e775cdca2c9"
+DOWNLOAD="https://github.com/librosa/librosa/archive/refs/tags/0.10.2/librosa-0.10.2.tar.gz"
+MD5SUM="dfd6cd2aa29050c61cb73c942dee768f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-lazy_loader python3-matplotlib ipython python3-mir_eval python3-soundfile audioread python3-soxr python3-numba python3-llvmlite msgpack-python python3-pooch scikit-learn python3-presets"
diff --git a/python/python3-paste/python3-paste.SlackBuild b/python/python3-paste/python3-paste.SlackBuild
index b7916536f1..d6ed374f44 100644
--- a/python/python3-paste/python3-paste.SlackBuild
+++ b/python/python3-paste/python3-paste.SlackBuild
@@ -23,8 +23,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-paste
-SRCNAM=Paste
-VERSION=${VERSION:-3.9.0}
+SRCNAM=${PRGNAM#python3-*}
+VERSION=${VERSION:-3.10.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-paste/python3-paste.info b/python/python3-paste/python3-paste.info
index 6b4bd329c3..8ae60196d4 100644
--- a/python/python3-paste/python3-paste.info
+++ b/python/python3-paste/python3-paste.info
@@ -1,8 +1,8 @@
PRGNAM="python3-paste"
-VERSION="3.9.0"
+VERSION="3.10.1"
HOMEPAGE="https://pythonpaste.readthedocs.io/"
-DOWNLOAD="https://pypi.python.org/packages/source/P/Paste/Paste-3.9.0.tar.gz"
-MD5SUM="82c6f39498a69220aba9cbb7453f9222"
+DOWNLOAD="https://pypi.python.org/packages/source/p/paste/paste-3.10.1.tar.gz"
+MD5SUM="7d59952c9e108d8d381944b40e90e47a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/python/python3-pdm-backend/python3-pdm-backend.SlackBuild b/python/python3-pdm-backend/python3-pdm-backend.SlackBuild
index 25b7c8f253..2910527c10 100644
--- a/python/python3-pdm-backend/python3-pdm-backend.SlackBuild
+++ b/python/python3-pdm-backend/python3-pdm-backend.SlackBuild
@@ -24,7 +24,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-pdm-backend
-VERSION=${VERSION:-2.2.1}
+VERSION=${VERSION:-2.3.0}
SRCNAM=${SRCNAM:-pdm_backend}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
diff --git a/python/python3-pdm-backend/python3-pdm-backend.info b/python/python3-pdm-backend/python3-pdm-backend.info
index dba0d5e263..4decac62d8 100644
--- a/python/python3-pdm-backend/python3-pdm-backend.info
+++ b/python/python3-pdm-backend/python3-pdm-backend.info
@@ -1,8 +1,8 @@
PRGNAM="python3-pdm-backend"
-VERSION="2.2.1"
+VERSION="2.3.0"
HOMEPAGE="https://github.com/pdm-project/pdm-backend"
-DOWNLOAD="https://files.pythonhosted.org/packages/source/p/pdm_backend/pdm_backend-2.2.1.tar.gz"
-MD5SUM="40aa986e52566087287c2ac7fec3d111"
+DOWNLOAD="https://files.pythonhosted.org/packages/source/p/pdm_backend/pdm_backend-2.3.0.tar.gz"
+MD5SUM="f660cc3f12458e31ab1561c54aedb258"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python-importlib_metadata"
diff --git a/python/python3-plotly/python3-plotly.SlackBuild b/python/python3-plotly/python3-plotly.SlackBuild
index 99fec36800..49e9e4af95 100644
--- a/python/python3-plotly/python3-plotly.SlackBuild
+++ b/python/python3-plotly/python3-plotly.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-plotly
-VERSION=${VERSION:-5.21.0}
+VERSION=${VERSION:-5.22.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-plotly/python3-plotly.info b/python/python3-plotly/python3-plotly.info
index 21f9e27d28..e0daa6084f 100644
--- a/python/python3-plotly/python3-plotly.info
+++ b/python/python3-plotly/python3-plotly.info
@@ -1,8 +1,8 @@
PRGNAM="python3-plotly"
-VERSION="5.21.0"
+VERSION="5.22.0"
HOMEPAGE="https://github.com/plotly/plotly.py"
-DOWNLOAD="https://github.com/plotly/plotly.py/archive/v5.21.0/plotly.py-5.21.0.tar.gz"
-MD5SUM="6dbbb325bbf42cf3860ac77af0c58904"
+DOWNLOAD="https://github.com/plotly/plotly.py/archive/v5.22.0/plotly.py-5.22.0.tar.gz"
+MD5SUM="43e9f68f9b78083ae4a0bd8842c28818"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-tenacity"
diff --git a/python/python3-pylint/python3-pylint.SlackBuild b/python/python3-pylint/python3-pylint.SlackBuild
index e44d5f2ecd..9e494f3cf6 100644
--- a/python/python3-pylint/python3-pylint.SlackBuild
+++ b/python/python3-pylint/python3-pylint.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for python3-pylint
-# Copyright 2022-2023 Dimitris Zlatanidis Orestiada, Greece
+# Copyright 2022-2024 Dimitris Zlatanidis Orestiada, Greece
# Copyright 2018 Markus Rinne Finland
# All rights reserved.
#
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-pylint
SRCNAM=pylint
-VERSION=${VERSION:-3.0.2}
+VERSION=${VERSION:-3.1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -84,11 +84,6 @@ find -L . \
python3 -m flit_core.wheel
python3 -m installer -d "$PKG" dist/*.whl
-# Rename executables to avoid conflicts with Python 2 version of pylint.
-for executable in pylint-config pylint pyreverse symilar; do
- mv $PKG/usr/bin/${executable}{,3}
-done
-
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
diff --git a/python/python3-pylint/python3-pylint.info b/python/python3-pylint/python3-pylint.info
index 3e5e117826..104e9b1b74 100644
--- a/python/python3-pylint/python3-pylint.info
+++ b/python/python3-pylint/python3-pylint.info
@@ -1,8 +1,8 @@
PRGNAM="python3-pylint"
-VERSION="3.0.2"
+VERSION="3.1.0"
HOMEPAGE="https://www.pylint.org"
-DOWNLOAD="https://files.pythonhosted.org/packages/10/ab/f0ad2a4fb3265d71685627db452398f769b48d64d81c7d66ca8c4f4c198b/pylint-3.0.2.tar.gz"
-MD5SUM="73baaa9253c5e16850dd9c89128fb3d2"
+DOWNLOAD="https://files.pythonhosted.org/packages/35/1c/4a8135f77a4ec8c0a6dc1d4543dd6fee55b36bb8bf629e2bcce8a94763a9/pylint-3.1.0.tar.gz"
+MD5SUM="b73081ea9c0e33139b75d0d379dd78e0"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-astroid python3-isort python3-mccabe python3-dill python3-tomlkit python3-platformdirs"
diff --git a/python/python3-pypdf/README b/python/python3-pypdf/README
new file mode 100644
index 0000000000..f6c203ff4b
--- /dev/null
+++ b/python/python3-pypdf/README
@@ -0,0 +1,7 @@
+pypdf is a free and open-source pure-python PDF library capable of
+splitting, merging, cropping, and transforming the pages of PDF files.
+It can also add custom data, viewing options, and passwords to PDF
+files. pypdf can retrieve text and metadata from PDFs as well.
+
+pypdf is a descendant of PyPDF2, which was a fork from the original
+pyPdf. (Both pyPdf and PyPDF2 are available on SBo.)
diff --git a/python/pyPdf/pyPdf.SlackBuild b/python/python3-pypdf/python3-pypdf.SlackBuild
index c8e815cc5c..17027e184b 100644
--- a/python/pyPdf/pyPdf.SlackBuild
+++ b/python/python3-pypdf/python3-pypdf.SlackBuild
@@ -1,8 +1,8 @@
#!/bin/bash
-# Slackware build script for pyPdf
+# Slackware build script for python3-pypdf
-# Copyright (c) 2017 Alan Alberghini <414N@slacky.it>
+# Copyright 2024, Alexander Verbovetsky, Moscow, Russia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -21,26 +21,15 @@
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# -----------------------------------------------------------------------------
-#
-# Build history:
-#
-# 1 - Initial release.
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=pyPdf
-VERSION=${VERSION:-1.13}
+PRGNAM=python3-pypdf
+VERSION=${VERSION:-4.2.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-DOCS="README CHANGELOG"
-
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
@@ -54,6 +43,10 @@ if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
exit 0
fi
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
@@ -63,6 +56,9 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
@@ -73,9 +69,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf pypdf-$VERSION
+tar xvf $CWD/pypdf-$VERSION.tar.gz
+cd pypdf-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -83,13 +79,14 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-python setup.py install --root=$PKG
+python3 -m build --wheel --no-isolation
+python3 -m installer --destdir "$PKG" dist/*.whl
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a CHANGELOG* README* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/python/python3-pypdf/python3-pypdf.info b/python/python3-pypdf/python3-pypdf.info
new file mode 100644
index 0000000000..9f7ff1642e
--- /dev/null
+++ b/python/python3-pypdf/python3-pypdf.info
@@ -0,0 +1,10 @@
+PRGNAM="python3-pypdf"
+VERSION="4.2.0"
+HOMEPAGE="https://github.com/py-pdf/pypdf"
+DOWNLOAD="https://github.com/py-pdf/pypdf/archive/4.2.0/pypdf-4.2.0.tar.gz"
+MD5SUM="26feb8968a26c42a974fac391bfe4a22"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="python3-wheel cryptography"
+MAINTAINER="Alexander Verbovetsky"
+EMAIL="alik@ejik.org"
diff --git a/python/python3-pypdf/slack-desc b/python/python3-pypdf/slack-desc
new file mode 100644
index 0000000000..49af322ab1
--- /dev/null
+++ b/python/python3-pypdf/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+python3-pypdf: python3-pypdf (Python PDF library)
+python3-pypdf:
+python3-pypdf: pypdf is a free and open-source pure-python PDF library capable of
+python3-pypdf: splitting, merging, cropping, and transforming the pages of PDF
+python3-pypdf: files. It can also add custom data, viewing options, and passwords
+python3-pypdf: to PDFfiles. pypdf can retrieve text and metadata from PDFs as well.
+python3-pypdf:
+python3-pypdf:
+python3-pypdf: Homepage: https://github.com/py-pdf/pypdf
+python3-pypdf:
+python3-pypdf:
diff --git a/python/python3-pytest/python3-pytest.SlackBuild b/python/python3-pytest/python3-pytest.SlackBuild
index b3d9529a79..79836cd610 100644
--- a/python/python3-pytest/python3-pytest.SlackBuild
+++ b/python/python3-pytest/python3-pytest.SlackBuild
@@ -29,7 +29,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-pytest
SRCNAM=pytest
-VERSION=${VERSION:-8.1.2}
+VERSION=${VERSION:-8.2.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-pytest/python3-pytest.info b/python/python3-pytest/python3-pytest.info
index 3a2791d12a..671dc3a0eb 100644
--- a/python/python3-pytest/python3-pytest.info
+++ b/python/python3-pytest/python3-pytest.info
@@ -1,8 +1,8 @@
PRGNAM="python3-pytest"
-VERSION="8.1.2"
+VERSION="8.2.0"
HOMEPAGE="http://pytest.org"
-DOWNLOAD="https://files.pythonhosted.org/packages/source/p/pytest/pytest-8.1.2.tar.gz"
-MD5SUM="2523a1ad08889df3209d23302cb95c9c"
+DOWNLOAD="https://files.pythonhosted.org/packages/source/p/pytest/pytest-8.2.0.tar.gz"
+MD5SUM="89fe0664e310ee8ee6a8bc1639f44775"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-iniconfig python3-exceptiongroup python3-setuptools-opt"
diff --git a/python/python3-regex/python3-regex.SlackBuild b/python/python3-regex/python3-regex.SlackBuild
index 9df6529e68..5b8cc21f34 100644
--- a/python/python3-regex/python3-regex.SlackBuild
+++ b/python/python3-regex/python3-regex.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-regex
-VERSION=${VERSION:-2024.4.16}
+VERSION=${VERSION:-2024.4.28}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-regex/python3-regex.info b/python/python3-regex/python3-regex.info
index 29f51b0f1f..01f41b36c0 100644
--- a/python/python3-regex/python3-regex.info
+++ b/python/python3-regex/python3-regex.info
@@ -1,8 +1,8 @@
PRGNAM="python3-regex"
-VERSION="2024.4.16"
+VERSION="2024.4.28"
HOMEPAGE="https://bitbucket.org/mrabarnett/mrab-regex"
-DOWNLOAD="https://files.pythonhosted.org/packages/source/r/regex/regex-2024.4.16.tar.gz"
-MD5SUM="1887cc71be6feacb692246944be9f59b"
+DOWNLOAD="https://files.pythonhosted.org/packages/source/r/regex/regex-2024.4.28.tar.gz"
+MD5SUM="543f5cb066ee5f4a3c02573b265ef32d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/python/python3-threadpoolctl/python3-threadpoolctl.SlackBuild b/python/python3-threadpoolctl/python3-threadpoolctl.SlackBuild
index 93ab6d58c5..d1d64ee6ec 100644
--- a/python/python3-threadpoolctl/python3-threadpoolctl.SlackBuild
+++ b/python/python3-threadpoolctl/python3-threadpoolctl.SlackBuild
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-threadpoolctl
SRCNAM=threadpoolctl
-VERSION=${VERSION:-3.4.0}
+VERSION=${VERSION:-3.5.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-threadpoolctl/python3-threadpoolctl.info b/python/python3-threadpoolctl/python3-threadpoolctl.info
index 8af0b0205f..b08c062aeb 100644
--- a/python/python3-threadpoolctl/python3-threadpoolctl.info
+++ b/python/python3-threadpoolctl/python3-threadpoolctl.info
@@ -1,8 +1,8 @@
PRGNAM="python3-threadpoolctl"
-VERSION="3.4.0"
+VERSION="3.5.0"
HOMEPAGE="https://github.com/joblib/threadpoolctl/"
-DOWNLOAD="https://files.pythonhosted.org/packages/source/t/threadpoolctl/threadpoolctl-3.4.0.tar.gz"
-MD5SUM="99b941e8022c91317c1e9bf6decc808b"
+DOWNLOAD="https://files.pythonhosted.org/packages/source/t/threadpoolctl/threadpoolctl-3.5.0.tar.gz"
+MD5SUM="3ae140ae3bb08f43fdc19db73bcdf478"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-build"
diff --git a/python/python3-virtualenv/python3-virtualenv.SlackBuild b/python/python3-virtualenv/python3-virtualenv.SlackBuild
index 0272effe55..81d989dde0 100644
--- a/python/python3-virtualenv/python3-virtualenv.SlackBuild
+++ b/python/python3-virtualenv/python3-virtualenv.SlackBuild
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-virtualenv
SRCNAM=virtualenv
-VERSION=${VERSION:-20.26.0}
+VERSION=${VERSION:-20.26.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/python/python3-virtualenv/python3-virtualenv.info b/python/python3-virtualenv/python3-virtualenv.info
index 7b401071b6..b96d36ed13 100644
--- a/python/python3-virtualenv/python3-virtualenv.info
+++ b/python/python3-virtualenv/python3-virtualenv.info
@@ -1,8 +1,8 @@
PRGNAM="python3-virtualenv"
-VERSION="20.26.0"
+VERSION="20.26.1"
HOMEPAGE="https://virtualenv.pypa.io/"
-DOWNLOAD="https://github.com/pypa/virtualenv/archive/20.26.0/virtualenv-20.26.0.tar.gz"
-MD5SUM="78c2838f76a3e784a9c3e33ff1ccf25c"
+DOWNLOAD="https://github.com/pypa/virtualenv/archive/20.26.1/virtualenv-20.26.1.tar.gz"
+MD5SUM="f7d19fa64089623329de3a4f6cd485f0"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="python3-setuptools-scm-opt python3-distlib python3-filelock python3-platformdirs"
diff --git a/python/python3-wurlitzer/python3-wurlitzer.SlackBuild b/python/python3-wurlitzer/python3-wurlitzer.SlackBuild
index 4ff237441c..8a47c64993 100644
--- a/python/python3-wurlitzer/python3-wurlitzer.SlackBuild
+++ b/python/python3-wurlitzer/python3-wurlitzer.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for python3-wurlitzer
-# Copyright 2023 Isaac Yu <isaacyu@protonmail.com>
+# Copyright 2023-2024 Isaac Yu <isaacyu@protonmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=python3-wurlitzer
-VERSION=${VERSION:-3.0.3}
+VERSION=${VERSION:-3.1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -49,20 +49,6 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
set -e
rm -rf $PKG
diff --git a/python/python3-wurlitzer/python3-wurlitzer.info b/python/python3-wurlitzer/python3-wurlitzer.info
index d6d4b9e72d..b89ea03fc2 100644
--- a/python/python3-wurlitzer/python3-wurlitzer.info
+++ b/python/python3-wurlitzer/python3-wurlitzer.info
@@ -1,8 +1,8 @@
PRGNAM="python3-wurlitzer"
-VERSION="3.0.3"
+VERSION="3.1.0"
HOMEPAGE="https://github.com/minrk/wurlitzer"
-DOWNLOAD="https://github.com/minrk/wurlitzer/archive/3.0.3/wurlitzer-3.0.3.tar.gz"
-MD5SUM="b9808275a4cda9485db8d8ebe4132066"
+DOWNLOAD="https://github.com/minrk/wurlitzer/archive/3.1.0/wurlitzer-3.1.0.tar.gz"
+MD5SUM="ce760bfc29daedca7cab4e7847d934ec"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/python/sphinxcontrib-htmlhelp/README b/python/sphinxcontrib-htmlhelp/README
deleted file mode 100644
index ffefb74a48..0000000000
--- a/python/sphinxcontrib-htmlhelp/README
+++ /dev/null
@@ -1 +0,0 @@
-sphinxcontrib-htmlhelp is a Sphinx extension to create HTML help files.
diff --git a/python/sphinxcontrib-htmlhelp/slack-desc b/python/sphinxcontrib-htmlhelp/slack-desc
deleted file mode 100644
index 41edc47af2..0000000000
--- a/python/sphinxcontrib-htmlhelp/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-sphinxcontrib-htmlhelp: sphinxcontrib-htmlhelp (HTML help file generator)
-sphinxcontrib-htmlhelp:
-sphinxcontrib-htmlhelp: sphinxcontrib-htmlhelp is a Sphinx extension to create HTML help
-sphinxcontrib-htmlhelp: files.
-sphinxcontrib-htmlhelp:
-sphinxcontrib-htmlhelp:
-sphinxcontrib-htmlhelp:
-sphinxcontrib-htmlhelp:
-sphinxcontrib-htmlhelp:
-sphinxcontrib-htmlhelp:
-sphinxcontrib-htmlhelp:
diff --git a/python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp.SlackBuild b/python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp.SlackBuild
deleted file mode 100644
index 222a9ead15..0000000000
--- a/python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp.SlackBuild
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/bin/bash
-
-# Slackware build script for sphinxcontrib-htmlhelp
-
-# Copyright 2024 fourtysixandtwo <fourtysixandtwo@sliderr.net>
-# Copyright 2019-2021 Benjamin Trigona-Harany <slackbuilds@jaxartes.net>
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# 20240101 46and2: Updated version, new maintainer.
-
-cd $(dirname $0) ; CWD=$(pwd)
-
-PRGNAM=sphinxcontrib-htmlhelp
-SRCNAM=sphinxcontrib_htmlhelp
-VERSION=${VERSION:-2.0.5}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-PKGTYPE=${PKGTYPE:-tgz}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
- echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
- exit 0
-fi
-
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $SRCNAM-$VERSION
-tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
-cd $SRCNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \+ -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
-
-python3 -m build --no-isolation
-python3 -m installer -d "$PKG" dist/*.whl
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- CHANGES LICENSE README.rst \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp.info b/python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp.info
deleted file mode 100644
index 4bb01129b4..0000000000
--- a/python/sphinxcontrib-htmlhelp/sphinxcontrib-htmlhelp.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="sphinxcontrib-htmlhelp"
-VERSION="2.0.5"
-HOMEPAGE="https://github.com/sphinx-doc/sphinxcontrib-htmlhelp"
-DOWNLOAD="https://files.pythonhosted.org/packages/source/s/sphinxcontrib-htmlhelp/sphinxcontrib_htmlhelp-2.0.5.tar.gz"
-MD5SUM="f7f888239f3d8afd6978e9b11701b739"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="python3-build"
-MAINTAINER="fourtysixandtwo"
-EMAIL="fourtysixandtwo@sliderr.net"
diff --git a/python/tox/tox.info b/python/tox/tox.info
index afafe63cbd..3eb612271c 100644
--- a/python/tox/tox.info
+++ b/python/tox/tox.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://files.pythonhosted.org/packages/fc/aa/31296c7cf387d8e1fe57c982
MD5SUM="5cd03e4edc4eeb808cd1cf3eced9debc"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="python2-py virtualenv pluggy"
+REQUIRES="python2-py virtualenv python2-pluggy"
MAINTAINER="Dimitris Zlatanidis"
EMAIL="d.zlatanidis@gmail.com"
diff --git a/ruby/ruby-build/ruby-build.SlackBuild b/ruby/ruby-build/ruby-build.SlackBuild
index 3b22cd8872..58891d4b7f 100644
--- a/ruby/ruby-build/ruby-build.SlackBuild
+++ b/ruby/ruby-build/ruby-build.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ruby-build
-VERSION=${VERSION:-20240423}
+VERSION=${VERSION:-20240501}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/ruby/ruby-build/ruby-build.info b/ruby/ruby-build/ruby-build.info
index d4f22d7593..dd6541ed28 100644
--- a/ruby/ruby-build/ruby-build.info
+++ b/ruby/ruby-build/ruby-build.info
@@ -1,8 +1,8 @@
PRGNAM="ruby-build"
-VERSION="20240423"
+VERSION="20240501"
HOMEPAGE="https://github.com/rbenv/ruby-build"
-DOWNLOAD="https://github.com/rbenv/ruby-build/archive/v20240423/ruby-build-20240423.tar.gz"
-MD5SUM="59054ac8cd01596a85dfe7ac6cca940b"
+DOWNLOAD="https://github.com/rbenv/ruby-build/archive/v20240501/ruby-build-20240501.tar.gz"
+MD5SUM="4106dda97bfb33c5302b30d2fef19428"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/system/CPU-X/CPU-X.SlackBuild b/system/CPU-X/CPU-X.SlackBuild
index ea1763bcb1..46d70fa9c8 100644
--- a/system/CPU-X/CPU-X.SlackBuild
+++ b/system/CPU-X/CPU-X.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=CPU-X
-VERSION=${VERSION:-5.0.3}
+VERSION=${VERSION:-5.0.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/system/CPU-X/CPU-X.info b/system/CPU-X/CPU-X.info
index d2731bc84f..a9a19819c3 100644
--- a/system/CPU-X/CPU-X.info
+++ b/system/CPU-X/CPU-X.info
@@ -1,8 +1,8 @@
PRGNAM="CPU-X"
-VERSION="5.0.3"
+VERSION="5.0.4"
HOMEPAGE="https://github.com/x0rg/CPU-X/"
-DOWNLOAD="https://github.com/x0rg/CPU-X/archive/v5.0.3/CPU-X-5.0.3.tar.gz"
-MD5SUM="548d7a6a7b27a58221a3898c47041b64"
+DOWNLOAD="https://github.com/x0rg/CPU-X/archive/v5.0.4/CPU-X-5.0.4.tar.gz"
+MD5SUM="6a8b6ba8c985c47ae29b30e2c8e84d3f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="glfw3 libcpuid libstatgrab"
diff --git a/system/Solaar/Solaar.SlackBuild b/system/Solaar/Solaar.SlackBuild
index e7d077043f..b739b40052 100644
--- a/system/Solaar/Solaar.SlackBuild
+++ b/system/Solaar/Solaar.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=Solaar
VERSION=${VERSION:-1.1.11}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -68,7 +68,11 @@ find -L . \
python3 setup.py install --root=$PKG
-mv $PKG/usr/lib $PKG/
+# 20240429 46and2: make sure to only move the udev dir to $PKG/lib/
+# and remove $PKG/usr/lib if empty.
+mkdir $PKG/lib
+mv $PKG/usr/lib/udev $PKG/lib/
+rmdir --ignore-fail-on-non-empty $PKG/usr/lib
sed -i 's/#MODE="0660", GROUP="plugdev"/MODE="0660", GROUP="plugdev"/g' $PKG/lib/udev/rules.d/42-logitech-unify-permissions.rules
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
diff --git a/system/alacritty/alacritty.SlackBuild b/system/alacritty/alacritty.SlackBuild
index 48199eabc5..03dc2e15f0 100644
--- a/system/alacritty/alacritty.SlackBuild
+++ b/system/alacritty/alacritty.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=alacritty
-VERSION=${VERSION:-0.13.1}
+VERSION=${VERSION:-0.13.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -62,7 +62,11 @@ elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
CARGOTARGET="--target $ARCH-unknown-linux-gnu"
LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ] || [ "$ARCH" = "aarch64" ]; then
+elif [ "$ARCH" = "x86_64" ] ; then
+ SLKCFLAGS="-O2 -fPIC"
+ CARGOTARGET="--target $ARCH-unknown-linux-gnu"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
SLKCFLAGS="-O2 -fPIC"
CARGOTARGET="--target $ARCH-unknown-linux-gnu"
LIBDIRSUFFIX="64"
diff --git a/system/alacritty/alacritty.info b/system/alacritty/alacritty.info
index 59214b27d8..d585afe9d2 100644
--- a/system/alacritty/alacritty.info
+++ b/system/alacritty/alacritty.info
@@ -1,34 +1,34 @@
PRGNAM="alacritty"
-VERSION="0.13.1"
+VERSION="0.13.2"
HOMEPAGE="https://github.com/alacritty/alacritty"
-DOWNLOAD="https://github.com/alacritty/alacritty/archive/v0.13.1/alacritty-0.13.1.tar.gz \
+DOWNLOAD="https://github.com/alacritty/alacritty/archive/v0.13.2/alacritty-0.13.2.tar.gz \
https://static.crates.io/crates/adler/adler-1.0.2.crate \
- https://static.crates.io/crates/ahash/ahash-0.8.6.crate \
+ https://static.crates.io/crates/ahash/ahash-0.8.11.crate \
https://static.crates.io/crates/aho-corasick/aho-corasick-1.1.2.crate \
- https://static.crates.io/crates/android-activity/android-activity-0.5.1.crate \
+ https://static.crates.io/crates/android-activity/android-activity-0.5.2.crate \
https://static.crates.io/crates/android-properties/android-properties-0.2.2.crate \
- https://static.crates.io/crates/anstream/anstream-0.6.5.crate \
+ https://static.crates.io/crates/anstream/anstream-0.6.13.crate \
https://static.crates.io/crates/anstyle-parse/anstyle-parse-0.2.3.crate \
https://static.crates.io/crates/anstyle-query/anstyle-query-1.0.0.crate \
https://static.crates.io/crates/anstyle-wincon/anstyle-wincon-3.0.1.crate \
- https://static.crates.io/crates/anstyle/anstyle-1.0.4.crate \
+ https://static.crates.io/crates/anstyle/anstyle-1.0.6.crate \
https://static.crates.io/crates/arrayref/arrayref-0.3.7.crate \
https://static.crates.io/crates/arrayvec/arrayvec-0.7.4.crate \
https://static.crates.io/crates/as-raw-xcb-connection/as-raw-xcb-connection-1.0.1.crate \
https://static.crates.io/crates/atomic-waker/atomic-waker-1.1.2.crate \
https://static.crates.io/crates/autocfg/autocfg-1.1.0.crate \
- https://static.crates.io/crates/base64/base64-0.21.5.crate \
+ https://static.crates.io/crates/base64/base64-0.22.0.crate \
https://static.crates.io/crates/bitflags/bitflags-1.3.2.crate \
- https://static.crates.io/crates/bitflags/bitflags-2.4.1.crate \
- https://static.crates.io/crates/block-sys/block-sys-0.2.0.crate \
+ https://static.crates.io/crates/bitflags/bitflags-2.4.2.crate \
+ https://static.crates.io/crates/block-sys/block-sys-0.2.1.crate \
https://static.crates.io/crates/block2/block2-0.3.0.crate \
https://static.crates.io/crates/block/block-0.1.6.crate \
- https://static.crates.io/crates/bumpalo/bumpalo-3.14.0.crate \
- https://static.crates.io/crates/bytemuck/bytemuck-1.14.0.crate \
+ https://static.crates.io/crates/bumpalo/bumpalo-3.15.4.crate \
+ https://static.crates.io/crates/bytemuck/bytemuck-1.15.0.crate \
https://static.crates.io/crates/bytes/bytes-1.5.0.crate \
https://static.crates.io/crates/calloop-wayland-source/calloop-wayland-source-0.2.0.crate \
- https://static.crates.io/crates/calloop/calloop-0.12.3.crate \
- https://static.crates.io/crates/cc/cc-1.0.83.crate \
+ https://static.crates.io/crates/calloop/calloop-0.12.4.crate \
+ https://static.crates.io/crates/cc/cc-1.0.90.crate \
https://static.crates.io/crates/cesu8/cesu8-1.1.0.crate \
https://static.crates.io/crates/cfg-if/cfg-if-1.0.0.crate \
https://static.crates.io/crates/cfg_aliases/cfg_aliases-0.1.1.crate \
@@ -45,15 +45,15 @@ DOWNLOAD="https://github.com/alacritty/alacritty/archive/v0.13.1/alacritty-0.13.
https://static.crates.io/crates/colorchoice/colorchoice-1.0.0.crate \
https://static.crates.io/crates/combine/combine-4.6.6.crate \
https://static.crates.io/crates/concurrent-queue/concurrent-queue-2.4.0.crate \
- https://static.crates.io/crates/copypasta/copypasta-0.10.0.crate \
+ https://static.crates.io/crates/copypasta/copypasta-0.10.1.crate \
https://static.crates.io/crates/core-foundation-sys/core-foundation-sys-0.8.6.crate \
https://static.crates.io/crates/core-foundation/core-foundation-0.9.4.crate \
https://static.crates.io/crates/core-graphics-types/core-graphics-types-0.1.3.crate \
https://static.crates.io/crates/core-graphics/core-graphics-0.23.1.crate \
https://static.crates.io/crates/core-text/core-text-20.1.0.crate \
- https://static.crates.io/crates/crc32fast/crc32fast-1.3.2.crate \
- https://static.crates.io/crates/crossbeam-channel/crossbeam-channel-0.5.10.crate \
- https://static.crates.io/crates/crossbeam-utils/crossbeam-utils-0.8.18.crate \
+ https://static.crates.io/crates/crc32fast/crc32fast-1.4.0.crate \
+ https://static.crates.io/crates/crossbeam-channel/crossbeam-channel-0.5.12.crate \
+ https://static.crates.io/crates/crossbeam-utils/crossbeam-utils-0.8.19.crate \
https://static.crates.io/crates/crossfont/crossfont-0.7.0.crate \
https://static.crates.io/crates/cursor-icon/cursor-icon-1.1.0.crate \
https://static.crates.io/crates/dirs-sys/dirs-sys-0.4.1.crate \
@@ -62,12 +62,12 @@ DOWNLOAD="https://github.com/alacritty/alacritty/archive/v0.13.1/alacritty-0.13.
https://static.crates.io/crates/dlib/dlib-0.5.2.crate \
https://static.crates.io/crates/downcast-rs/downcast-rs-1.2.0.crate \
https://static.crates.io/crates/dwrote/dwrote-0.11.0.crate \
- https://static.crates.io/crates/embed-resource/embed-resource-2.4.0.crate \
+ https://static.crates.io/crates/embed-resource/embed-resource-2.4.2.crate \
https://static.crates.io/crates/equivalent/equivalent-1.0.1.crate \
https://static.crates.io/crates/errno/errno-0.3.7.crate \
https://static.crates.io/crates/expat-sys/expat-sys-2.1.6.crate \
https://static.crates.io/crates/fastrand/fastrand-2.0.1.crate \
- https://static.crates.io/crates/fdeflate/fdeflate-0.3.3.crate \
+ https://static.crates.io/crates/fdeflate/fdeflate-0.3.4.crate \
https://static.crates.io/crates/filetime/filetime-0.2.22.crate \
https://static.crates.io/crates/flate2/flate2-1.0.28.crate \
https://static.crates.io/crates/foreign-types-macros/foreign-types-macros-0.2.3.crate \
@@ -77,11 +77,10 @@ DOWNLOAD="https://github.com/alacritty/alacritty/archive/v0.13.1/alacritty-0.13.
https://static.crates.io/crates/freetype-sys/freetype-sys-0.13.1.crate \
https://static.crates.io/crates/fsevent-sys/fsevent-sys-4.1.0.crate \
https://static.crates.io/crates/futures-io/futures-io-0.3.30.crate \
- https://static.crates.io/crates/gethostname/gethostname-0.3.0.crate \
https://static.crates.io/crates/gethostname/gethostname-0.4.3.crate \
- https://static.crates.io/crates/getrandom/getrandom-0.2.11.crate \
+ https://static.crates.io/crates/getrandom/getrandom-0.2.12.crate \
https://static.crates.io/crates/gl_generator/gl_generator-0.14.0.crate \
- https://static.crates.io/crates/glutin/glutin-0.31.2.crate \
+ https://static.crates.io/crates/glutin/glutin-0.31.3.crate \
https://static.crates.io/crates/glutin_egl_sys/glutin_egl_sys-0.6.0.crate \
https://static.crates.io/crates/glutin_glx_sys/glutin_glx_sys-0.5.0.crate \
https://static.crates.io/crates/glutin_wgl_sys/glutin_wgl_sys-0.5.0.crate \
@@ -89,40 +88,38 @@ DOWNLOAD="https://github.com/alacritty/alacritty/archive/v0.13.1/alacritty-0.13.
https://static.crates.io/crates/heck/heck-0.4.1.crate \
https://static.crates.io/crates/home/home-0.5.5.crate \
https://static.crates.io/crates/icrate/icrate-0.0.4.crate \
- https://static.crates.io/crates/indexmap/indexmap-2.1.0.crate \
+ https://static.crates.io/crates/indexmap/indexmap-2.2.5.crate \
https://static.crates.io/crates/inotify-sys/inotify-sys-0.1.5.crate \
https://static.crates.io/crates/inotify/inotify-0.9.6.crate \
https://static.crates.io/crates/itoa/itoa-1.0.10.crate \
https://static.crates.io/crates/jni-sys/jni-sys-0.3.0.crate \
https://static.crates.io/crates/jni/jni-0.21.1.crate \
- https://static.crates.io/crates/jobserver/jobserver-0.1.27.crate \
- https://static.crates.io/crates/js-sys/js-sys-0.3.66.crate \
+ https://static.crates.io/crates/jobserver/jobserver-0.1.28.crate \
+ https://static.crates.io/crates/js-sys/js-sys-0.3.69.crate \
https://static.crates.io/crates/khronos_api/khronos_api-3.1.0.crate \
https://static.crates.io/crates/kqueue-sys/kqueue-sys-1.0.4.crate \
https://static.crates.io/crates/kqueue/kqueue-1.0.8.crate \
https://static.crates.io/crates/lazy-bytes-cast/lazy-bytes-cast-5.0.1.crate \
https://static.crates.io/crates/lazy_static/lazy_static-1.4.0.crate \
- https://static.crates.io/crates/libc/libc-0.2.151.crate \
- https://static.crates.io/crates/libloading/libloading-0.8.1.crate \
+ https://static.crates.io/crates/libc/libc-0.2.153.crate \
+ https://static.crates.io/crates/libloading/libloading-0.8.3.crate \
https://static.crates.io/crates/libredox/libredox-0.0.1.crate \
https://static.crates.io/crates/libredox/libredox-0.0.2.crate \
- https://static.crates.io/crates/linux-raw-sys/linux-raw-sys-0.4.12.crate \
+ https://static.crates.io/crates/linux-raw-sys/linux-raw-sys-0.4.13.crate \
https://static.crates.io/crates/lock_api/lock_api-0.4.11.crate \
- https://static.crates.io/crates/log/log-0.4.20.crate \
+ https://static.crates.io/crates/log/log-0.4.21.crate \
https://static.crates.io/crates/malloc_buf/malloc_buf-0.0.6.crate \
- https://static.crates.io/crates/memchr/memchr-2.6.4.crate \
- https://static.crates.io/crates/memmap2/memmap2-0.9.3.crate \
- https://static.crates.io/crates/memoffset/memoffset-0.7.1.crate \
- https://static.crates.io/crates/miniz_oxide/miniz_oxide-0.7.1.crate \
- https://static.crates.io/crates/mio/mio-0.8.10.crate \
+ https://static.crates.io/crates/memchr/memchr-2.7.1.crate \
+ https://static.crates.io/crates/memmap2/memmap2-0.9.4.crate \
+ https://static.crates.io/crates/miniz_oxide/miniz_oxide-0.7.2.crate \
+ https://static.crates.io/crates/mio/mio-0.8.11.crate \
https://static.crates.io/crates/miow/miow-0.6.0.crate \
https://static.crates.io/crates/ndk-context/ndk-context-0.1.1.crate \
https://static.crates.io/crates/ndk-sys/ndk-sys-0.5.0%2B25.2.9519653.crate \
https://static.crates.io/crates/ndk/ndk-0.8.0.crate \
- https://static.crates.io/crates/nix/nix-0.26.4.crate \
https://static.crates.io/crates/notify/notify-6.1.1.crate \
- https://static.crates.io/crates/num_enum/num_enum-0.7.1.crate \
- https://static.crates.io/crates/num_enum_derive/num_enum_derive-0.7.1.crate \
+ https://static.crates.io/crates/num_enum/num_enum-0.7.2.crate \
+ https://static.crates.io/crates/num_enum_derive/num_enum_derive-0.7.2.crate \
https://static.crates.io/crates/objc-foundation/objc-foundation-0.1.1.crate \
https://static.crates.io/crates/objc-sys/objc-sys-0.3.2.crate \
https://static.crates.io/crates/objc2-encode/objc2-encode-3.0.0.crate \
@@ -137,88 +134,87 @@ DOWNLOAD="https://github.com/alacritty/alacritty/archive/v0.13.1/alacritty-0.13.
https://static.crates.io/crates/percent-encoding/percent-encoding-2.3.1.crate \
https://static.crates.io/crates/pin-project-lite/pin-project-lite-0.2.13.crate \
https://static.crates.io/crates/piper/piper-0.2.1.crate \
- https://static.crates.io/crates/pkg-config/pkg-config-0.3.28.crate \
- https://static.crates.io/crates/png/png-0.17.10.crate \
+ https://static.crates.io/crates/pkg-config/pkg-config-0.3.30.crate \
+ https://static.crates.io/crates/png/png-0.17.13.crate \
https://static.crates.io/crates/polling/polling-3.3.0.crate \
- https://static.crates.io/crates/proc-macro-crate/proc-macro-crate-2.0.0.crate \
- https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.71.crate \
- https://static.crates.io/crates/quick-xml/quick-xml-0.30.0.crate \
- https://static.crates.io/crates/quote/quote-1.0.33.crate \
+ https://static.crates.io/crates/proc-macro-crate/proc-macro-crate-3.1.0.crate \
+ https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.79.crate \
+ https://static.crates.io/crates/quick-xml/quick-xml-0.31.0.crate \
+ https://static.crates.io/crates/quote/quote-1.0.35.crate \
https://static.crates.io/crates/raw-window-handle/raw-window-handle-0.5.2.crate \
https://static.crates.io/crates/redox_syscall/redox_syscall-0.3.5.crate \
https://static.crates.io/crates/redox_syscall/redox_syscall-0.4.1.crate \
https://static.crates.io/crates/redox_users/redox_users-0.4.4.crate \
- https://static.crates.io/crates/regex-automata/regex-automata-0.4.3.crate \
+ https://static.crates.io/crates/regex-automata/regex-automata-0.4.6.crate \
https://static.crates.io/crates/regex-syntax/regex-syntax-0.8.2.crate \
https://static.crates.io/crates/rustc_version/rustc_version-0.4.0.crate \
https://static.crates.io/crates/rustix-openpty/rustix-openpty-0.1.1.crate \
https://static.crates.io/crates/rustix/rustix-0.38.25.crate \
- https://static.crates.io/crates/ryu/ryu-1.0.16.crate \
+ https://static.crates.io/crates/ryu/ryu-1.0.17.crate \
https://static.crates.io/crates/same-file/same-file-1.0.6.crate \
https://static.crates.io/crates/scoped-tls/scoped-tls-1.0.1.crate \
https://static.crates.io/crates/scopeguard/scopeguard-1.2.0.crate \
https://static.crates.io/crates/sctk-adwaita/sctk-adwaita-0.8.1.crate \
- https://static.crates.io/crates/semver/semver-1.0.20.crate \
- https://static.crates.io/crates/serde/serde-1.0.193.crate \
- https://static.crates.io/crates/serde_derive/serde_derive-1.0.193.crate \
- https://static.crates.io/crates/serde_json/serde_json-1.0.108.crate \
+ https://static.crates.io/crates/semver/semver-1.0.22.crate \
+ https://static.crates.io/crates/serde/serde-1.0.197.crate \
+ https://static.crates.io/crates/serde_derive/serde_derive-1.0.197.crate \
+ https://static.crates.io/crates/serde_json/serde_json-1.0.114.crate \
https://static.crates.io/crates/serde_spanned/serde_spanned-0.6.5.crate \
- https://static.crates.io/crates/serde_yaml/serde_yaml-0.9.29.crate \
+ https://static.crates.io/crates/serde_yaml/serde_yaml-0.9.33.crate \
https://static.crates.io/crates/servo-fontconfig-sys/servo-fontconfig-sys-5.1.0.crate \
https://static.crates.io/crates/servo-fontconfig/servo-fontconfig-0.5.1.crate \
https://static.crates.io/crates/signal-hook-registry/signal-hook-registry-1.4.1.crate \
https://static.crates.io/crates/signal-hook/signal-hook-0.3.17.crate \
https://static.crates.io/crates/simd-adler32/simd-adler32-0.3.7.crate \
https://static.crates.io/crates/slab/slab-0.4.9.crate \
- https://static.crates.io/crates/smallvec/smallvec-1.11.2.crate \
- https://static.crates.io/crates/smithay-client-toolkit/smithay-client-toolkit-0.18.0.crate \
- https://static.crates.io/crates/smithay-clipboard/smithay-clipboard-0.7.0.crate \
- https://static.crates.io/crates/smol_str/smol_str-0.2.0.crate \
+ https://static.crates.io/crates/smallvec/smallvec-1.13.1.crate \
+ https://static.crates.io/crates/smithay-client-toolkit/smithay-client-toolkit-0.18.1.crate \
+ https://static.crates.io/crates/smithay-clipboard/smithay-clipboard-0.7.1.crate \
+ https://static.crates.io/crates/smol_str/smol_str-0.2.1.crate \
https://static.crates.io/crates/strict-num/strict-num-0.1.1.crate \
https://static.crates.io/crates/strsim/strsim-0.10.0.crate \
- https://static.crates.io/crates/syn/syn-2.0.43.crate \
- https://static.crates.io/crates/thiserror-impl/thiserror-impl-1.0.52.crate \
- https://static.crates.io/crates/thiserror/thiserror-1.0.52.crate \
- https://static.crates.io/crates/tiny-skia-path/tiny-skia-path-0.11.3.crate \
- https://static.crates.io/crates/tiny-skia/tiny-skia-0.11.3.crate \
- https://static.crates.io/crates/toml/toml-0.8.8.crate \
+ https://static.crates.io/crates/syn/syn-2.0.53.crate \
+ https://static.crates.io/crates/thiserror-impl/thiserror-impl-1.0.58.crate \
+ https://static.crates.io/crates/thiserror/thiserror-1.0.58.crate \
+ https://static.crates.io/crates/tiny-skia-path/tiny-skia-path-0.11.4.crate \
+ https://static.crates.io/crates/tiny-skia/tiny-skia-0.11.4.crate \
+ https://static.crates.io/crates/toml/toml-0.8.11.crate \
https://static.crates.io/crates/toml_datetime/toml_datetime-0.6.5.crate \
- https://static.crates.io/crates/toml_edit/toml_edit-0.20.7.crate \
- https://static.crates.io/crates/toml_edit/toml_edit-0.21.0.crate \
+ https://static.crates.io/crates/toml_edit/toml_edit-0.21.1.crate \
+ https://static.crates.io/crates/toml_edit/toml_edit-0.22.7.crate \
https://static.crates.io/crates/tracing-core/tracing-core-0.1.32.crate \
https://static.crates.io/crates/tracing/tracing-0.1.40.crate \
https://static.crates.io/crates/unicode-ident/unicode-ident-1.0.12.crate \
- https://static.crates.io/crates/unicode-segmentation/unicode-segmentation-1.10.1.crate \
+ https://static.crates.io/crates/unicode-segmentation/unicode-segmentation-1.11.0.crate \
https://static.crates.io/crates/unicode-width/unicode-width-0.1.11.crate \
- https://static.crates.io/crates/unsafe-libyaml/unsafe-libyaml-0.2.10.crate \
+ https://static.crates.io/crates/unsafe-libyaml/unsafe-libyaml-0.2.11.crate \
https://static.crates.io/crates/utf8parse/utf8parse-0.2.1.crate \
https://static.crates.io/crates/version_check/version_check-0.9.4.crate \
https://static.crates.io/crates/vswhom-sys/vswhom-sys-0.1.2.crate \
https://static.crates.io/crates/vswhom/vswhom-0.1.0.crate \
https://static.crates.io/crates/vte/vte-0.13.0.crate \
https://static.crates.io/crates/vte_generate_state_changes/vte_generate_state_changes-0.1.1.crate \
- https://static.crates.io/crates/walkdir/walkdir-2.4.0.crate \
+ https://static.crates.io/crates/walkdir/walkdir-2.5.0.crate \
https://static.crates.io/crates/wasi/wasi-0.11.0%2Bwasi-snapshot-preview1.crate \
- https://static.crates.io/crates/wasm-bindgen-backend/wasm-bindgen-backend-0.2.89.crate \
- https://static.crates.io/crates/wasm-bindgen-futures/wasm-bindgen-futures-0.4.39.crate \
- https://static.crates.io/crates/wasm-bindgen-macro-support/wasm-bindgen-macro-support-0.2.89.crate \
- https://static.crates.io/crates/wasm-bindgen-macro/wasm-bindgen-macro-0.2.89.crate \
- https://static.crates.io/crates/wasm-bindgen-shared/wasm-bindgen-shared-0.2.89.crate \
- https://static.crates.io/crates/wasm-bindgen/wasm-bindgen-0.2.89.crate \
- https://static.crates.io/crates/wayland-backend/wayland-backend-0.3.2.crate \
- https://static.crates.io/crates/wayland-client/wayland-client-0.31.1.crate \
+ https://static.crates.io/crates/wasm-bindgen-backend/wasm-bindgen-backend-0.2.92.crate \
+ https://static.crates.io/crates/wasm-bindgen-futures/wasm-bindgen-futures-0.4.42.crate \
+ https://static.crates.io/crates/wasm-bindgen-macro-support/wasm-bindgen-macro-support-0.2.92.crate \
+ https://static.crates.io/crates/wasm-bindgen-macro/wasm-bindgen-macro-0.2.92.crate \
+ https://static.crates.io/crates/wasm-bindgen-shared/wasm-bindgen-shared-0.2.92.crate \
+ https://static.crates.io/crates/wasm-bindgen/wasm-bindgen-0.2.92.crate \
+ https://static.crates.io/crates/wayland-backend/wayland-backend-0.3.3.crate \
+ https://static.crates.io/crates/wayland-client/wayland-client-0.31.2.crate \
https://static.crates.io/crates/wayland-csd-frame/wayland-csd-frame-0.3.0.crate \
- https://static.crates.io/crates/wayland-cursor/wayland-cursor-0.31.0.crate \
+ https://static.crates.io/crates/wayland-cursor/wayland-cursor-0.31.1.crate \
https://static.crates.io/crates/wayland-protocols-plasma/wayland-protocols-plasma-0.2.0.crate \
https://static.crates.io/crates/wayland-protocols-wlr/wayland-protocols-wlr-0.2.0.crate \
- https://static.crates.io/crates/wayland-protocols/wayland-protocols-0.31.0.crate \
- https://static.crates.io/crates/wayland-scanner/wayland-scanner-0.31.0.crate \
+ https://static.crates.io/crates/wayland-protocols/wayland-protocols-0.31.2.crate \
+ https://static.crates.io/crates/wayland-scanner/wayland-scanner-0.31.1.crate \
https://static.crates.io/crates/wayland-sys/wayland-sys-0.31.1.crate \
- https://static.crates.io/crates/web-sys/web-sys-0.3.66.crate \
+ https://static.crates.io/crates/web-sys/web-sys-0.3.69.crate \
https://static.crates.io/crates/web-time/web-time-0.2.4.crate \
https://static.crates.io/crates/winapi-i686-pc-windows-gnu/winapi-i686-pc-windows-gnu-0.4.0.crate \
https://static.crates.io/crates/winapi-util/winapi-util-0.1.6.crate \
- https://static.crates.io/crates/winapi-wsapoll/winapi-wsapoll-0.1.1.crate \
https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/winapi-x86_64-pc-windows-gnu-0.4.0.crate \
https://static.crates.io/crates/winapi/winapi-0.3.9.crate \
https://static.crates.io/crates/windows-sys/windows-sys-0.45.0.crate \
@@ -239,51 +235,50 @@ DOWNLOAD="https://github.com/alacritty/alacritty/archive/v0.13.1/alacritty-0.13.
https://static.crates.io/crates/windows_x86_64_gnullvm/windows_x86_64_gnullvm-0.48.5.crate \
https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.42.2.crate \
https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.48.5.crate \
- https://static.crates.io/crates/winit/winit-0.29.9.crate \
- https://static.crates.io/crates/winnow/winnow-0.5.30.crate \
- https://static.crates.io/crates/winreg/winreg-0.51.0.crate \
+ https://static.crates.io/crates/winit/winit-0.29.15.crate \
+ https://static.crates.io/crates/winnow/winnow-0.5.40.crate \
+ https://static.crates.io/crates/winnow/winnow-0.6.5.crate \
+ https://static.crates.io/crates/winreg/winreg-0.52.0.crate \
https://static.crates.io/crates/wio/wio-0.2.2.crate \
- https://static.crates.io/crates/x11-clipboard/x11-clipboard-0.8.1.crate \
+ https://static.crates.io/crates/x11-clipboard/x11-clipboard-0.9.2.crate \
https://static.crates.io/crates/x11-dl/x11-dl-2.21.0.crate \
- https://static.crates.io/crates/x11rb-protocol/x11rb-protocol-0.12.0.crate \
https://static.crates.io/crates/x11rb-protocol/x11rb-protocol-0.13.0.crate \
- https://static.crates.io/crates/x11rb/x11rb-0.12.0.crate \
https://static.crates.io/crates/x11rb/x11rb-0.13.0.crate \
https://static.crates.io/crates/xcursor/xcursor-0.3.5.crate \
https://static.crates.io/crates/xdg/xdg-2.5.2.crate \
- https://static.crates.io/crates/xkbcommon-dl/xkbcommon-dl-0.4.1.crate \
+ https://static.crates.io/crates/xkbcommon-dl/xkbcommon-dl-0.4.2.crate \
https://static.crates.io/crates/xkeysym/xkeysym-0.2.0.crate \
https://static.crates.io/crates/xml-rs/xml-rs-0.8.19.crate \
https://static.crates.io/crates/zerocopy-derive/zerocopy-derive-0.7.32.crate \
https://static.crates.io/crates/zerocopy/zerocopy-0.7.32.crate"
-MD5SUM="9199be2f1d48125de06db0d79553ee2e \
+MD5SUM="175ba04b69b5d60747c4fb227f0a3871 \
669215548c64019c08c92b2c1afd3deb \
- 62063b829dc1fb0dcb50f845ef981263 \
+ adbb51e40b28255c49b2ad1d956eff19 \
95e5f8d0b7ab37171b8d3118542ba06a \
- 848f406142dbae274a821c9e93da9fbb \
+ 4bfc28df67ed345b63f28a426f70dd3d \
33d654107e29a1ec9c8df5947d1888f2 \
- 2764314f4afc9f9751d60ebad48f6ea6 \
+ d1dbe19a84ecc8388654099d69c77b09 \
e188f6de00a35235da008cd39e1a003d \
d2453c99c7af98286c2dc9017a8dba6d \
b57fd47f132f32001e0d4bfc4621f1bf \
- b4f71ffecd3694a82ffb62c357d997a8 \
+ dff7c2613686577772e6eaeaf76d6f5c \
ff41a5b5c2364747a7ff11f6bdeee406 \
504b5d258d68bdb980c997b93f0c6e6e \
7646c7582d8b97443a94c12d30e60d99 \
6a44afda654777d2930b93366bdfc7f3 \
05d77ef52e90ad161fdd41b252420467 \
- 577bba6ae4d7493e169ca895141dd106 \
+ 2b85559c818ca984fc61f5e7ef3ccf24 \
a295edb6953237ebbdfa8e731229f9a3 \
- ebcf604c44976809506192718f439dc1 \
- fbcf6847d661bc3fdd8745c06a721b04 \
+ fcc84166b0f45067743bd0820f1d92e5 \
+ d4a93fc92a1cdf6ccd1c26cd207622c9 \
1751ef7d3080787345baeb93455f69df \
ea2d23ceb9f98853a7dffc6c02884464 \
- d8cacbb844fca8c0ca102c7576946131 \
- 9dd8e437188fced85429d9d0d9db145f \
+ 04420ad0e34cf71c5dd4e473934f8e54 \
+ 74970f806fd0f2ab972f077ee2b7e5d7 \
51ed49380bb7d086c005208e805983b2 \
b760bf4a1a3fc54c76e9d042131a7acc \
- 458113901c4f5ab270e125b867f7dea4 \
- 9241fa90ea8b17c00010be46c9aa1ac5 \
+ b8ebda586cee9a5a79403eb33396c182 \
+ 3688fd97ff4600fa12dcba8623da73a3 \
267fc4a374516caa7ab495f0c607c1b4 \
74634128440dbc3766bda76fdf0aaa05 \
126712a51ed2962e587048a634186390 \
@@ -300,15 +295,15 @@ MD5SUM="9199be2f1d48125de06db0d79553ee2e \
010f6d0e98cc2a2b99907a23c6cd6bbc \
8b15d333a98fc02a34909961900246a4 \
59e2ac3afb27356dae5b252b6792e73c \
- 277c0eef3e10f7ec1b4db034ff40f1a8 \
+ e11e1dd3d9c75ee9bd19a8bb02e824db \
d7624e4ff046ae83eda8e82d90887bdb \
4d7e3bc6c42f8a875a87246ed14d9948 \
58ee9a40577f5086ec1f22dc238b9c60 \
1f2aefb269a8a9d8a86160c67a10c0b0 \
407b8e24ec9b7a2921414e8e22267d45 \
- a9d6492a1bd21d93dbc27c32eabd0c70 \
- 11452e33fe5f4dfe6f36f2d266a5d343 \
- 4e040f3b7359531ac7134679ea9afcdc \
+ 2cdf6f26459b770f7cf497cfba8eb5d4 \
+ 86c345cb693c291362662b0eb437af89 \
+ 398f4cce1d3067cc7a56662e52a33384 \
b98796f70d39efaf11e6489c1c266d56 \
716a56ef901b38924bf55e20f602bd34 \
6681f2b2a1b8854ec13b1d35edc6fdc3 \
@@ -317,12 +312,12 @@ MD5SUM="9199be2f1d48125de06db0d79553ee2e \
7c8ef8b5fc652fa97d3629d1ec8b18e8 \
09b520d03e86d50e3ac39d856d5aec32 \
a1544bff9ea95274369bf38508f8266a \
- 34ec0de0ebc730437e6788aa1264f86c \
+ 6a4e43c95a4c419cb00fe91d226a9095 \
bdf329a72ecd0605c296f25e53136706 \
24f6202003a936e73e51f47584ea8bea \
d318084a7a361875006cd156c19db3dc \
80e1c1b89d858c93fc5946b4a8266504 \
- 597b5678e74f368f512931d828e8ff97 \
+ b1e2ff2b24e7c0840bb0cb1174beedfd \
412f39c3faf2efd34b5fe184e36ccc2f \
110e56f20886997bc288b6fea8617ce1 \
38f845b095b4ca30f93e034c7bd5ab14 \
@@ -332,11 +327,10 @@ MD5SUM="9199be2f1d48125de06db0d79553ee2e \
c2682997e48a129ea7cc8afd6e850366 \
724696d583d5c24321c62a5e443d241f \
bb90dd58c7107a6f586b04588404b0ff \
- 8212aac8fcaeb41265840f72b31c9135 \
cbb52c723c94c83804912cde945b4510 \
- 3b00daaa372df161c5c8eeaf16a741d1 \
+ ba5684833f6b40a3aa32ae4989c40f79 \
cd6875725af793cd82db47d68b00ee93 \
- 86c67a9c1f6c51726cf94a84eecb18c0 \
+ c50f036618e5f44b0310769cc214d4e9 \
e1054d42008eb59cea63bc22136ed22f \
fb01542b6f62fe5d68d1dd9835d4e80b \
8f6832ae66ce3c13c0f5da9f585f60e8 \
@@ -344,40 +338,38 @@ MD5SUM="9199be2f1d48125de06db0d79553ee2e \
b92fa50f56a1e06a7f1bf665442d4a73 \
11681ec4554f1f934b25eeba3f558ea7 \
e1543fd467c420225dabc4d75ff3fe79 \
- f429c89da1e2d0ba564a0cb5e2ed928c \
+ 39ee9c142fcb9be5b41be73e42260979 \
639af0cca65c012e6a028acfb657e417 \
1c69490f9cefc24e2119217039c61dda \
0403f58e42c94609207c40a310cfe78a \
73272fe4aadb91d550dca8fc7ead8bf7 \
be01525e51d79736e7af74fe93d19f93 \
- 9aaf13d622cd02548feaaca35687da9c \
- 6b33b0539f6c25c66268868b6b61e240 \
+ 62156c0c6bde4f8190c611a461eb482a \
+ c6be9100355c6e77cf37c76ade56baa4 \
8bc92e2d422193be1d498146e34a0b85 \
8234d20b9a5ea5e7087bb5ddb414011c \
e646c59e9a7da5308afd8e43149bcfef \
e53d38f6285cdc1bb509983b218d10d3 \
fba3b040a55c01be7376d3dd5c4d4920 \
- 181cb83a57d327b26ebc21db41b28480 \
- feb5919f3a98172d047e10b0bc1ea5ae \
+ 49d77531898b3d7846b149c0fb4788c4 \
+ 99d57b23f1a7878ef7220513f49db015 \
4d3764b253ae871241c2f327e519f382 \
9ea1bc3f82c4c646878376eacbf366ce \
- 1d1b2033b4272a22654e55447ae7f404 \
+ f2d8f01a4e5c5236ab55240d09c6e82f \
cc1b0e90e372869ad03ef40bd53fa30f \
- 8ee79b4fe4c43d9ab09f16344612a656 \
+ 5a376ab3f01ed9e90e8d71e1d5fa6ae7 \
7c81e7a61ec172a229d6fdbc553e883d \
- ab9a5f02cef3b8794d810332ebf26a03 \
- 8c7d4897baee5e346d2184d46422ec49 \
- 48e7cc866f45af55ea3f627e29a2cd98 \
- eb7e04508518ed8f29935ec874e1740a \
- 47628a42562928b85cd28cb50e08d8bb \
+ f8cc1978aae22df3e656d12810cdf994 \
+ 5cf346df4658ff1ab6c0b3b3dba48f75 \
+ 86aa81f2561682f16c0be376294bf9d3 \
+ 13f47025d308bc16d26a9bc3334f3bbe \
c14d50ef3ce9b2640d2a9d68c53834b9 \
7e395ce2e673b7d9665751cbbe3cbcdc \
e8ba17285a3c3413579cf23c009a5f52 \
d4aa9768b074d64e8271942682ff0159 \
- 44ab2701d152b855941648698cd7a99e \
1be22bdbd81580965933512a89c00e25 \
- 99913f0b1e33a0760543c0ca3b5e4dfe \
- 0c7dc4f3d2bd9fa81623fb1f3abef015 \
+ 52af5d02a6e146eaf0fc591a5a6ccdaf \
+ 110e4691ab282e351abcb4c88687271f \
aecd889de42c8168e1bc97a6f2720d8f \
f3b8c17ba1076acbcd2074e4278f44f9 \
1986c3b1b3a4968592e1577e8676ac12 \
@@ -392,88 +384,87 @@ MD5SUM="9199be2f1d48125de06db0d79553ee2e \
0ba30a94d7b8865c23e86d4d64e5b91e \
ffc7c4e1b2639ba6c8579a1c47c5f97c \
564286699e80741f7c24b16c9a1a5f58 \
- 76c281577ef136b9484166302e37c9bd \
- 7b5035f3ae2acd6abe959249308bb5a1 \
+ 524ffd7a9b5b25c4d388686a5dde5cac \
+ 263a4e4ee967b56a460b6b717fa53279 \
4fc82daae9a3fe793c8876370d26bd6a \
- 0df16f0fae76d411cebf1e67c55070d9 \
- e83703ecba7917d4e12c8e639692e169 \
- fc70d4884e65f1c29086807a9aaad534 \
- 0ddb8bccd3198892d0dd0ec7151f7cd3 \
+ c755ef59e7394470f9e06673f7e02e2a \
+ e0c30e3bc29a1b33c71f2823cd5b5365 \
+ 5d249ea25d57d9e5b051a504a2f62a62 \
+ 0358b31bf59c7915bb03f9e66f2d1ea3 \
6150a7bb6ddc7aaa6aba6130de9fd2b8 \
782ea88d8e5b517b1c9e7d870e20e9e3 \
ff1d093069cfc9eb161907e17a51208b \
bca57d7079177ca0aa651d452c7099fe \
- 4f496143a21775fa7bd22bf329c37f37 \
+ 520b920d0c711ec1a17fb19a6060446a \
91b60a71d44302a8b05bd398eca56c37 \
fdf3aa5e1f6c33e4f68b0f7b08e1e94e \
e60c2f75a7c60276ba15dba4c1766286 \
9bdda698a3c8ba141f4daba1a7630143 \
- ca664d757b2c95424cf3465e412cce90 \
+ feefd8369d6dd6a0f269bbed1b921349 \
2d8d8b377d144f5e32b4f65a69eb0b24 \
b898bcf321bba46ecd15c9279cdbb290 \
f1358be8c98b98837cbd2cf51e75f8b3 \
92577365ba12f6bc2c5fd3b639135b62 \
- bf2aac00571a32be8a2fb842e194a728 \
- d6c1f2447aa984e398cdfdeb4cd75d44 \
- d43f1621c76532ffdc7990d23593c61b \
- 3ed0ebc631b1840f3be21e1ba07fa4ed \
+ 7b1ab65edc77a1bd7cfd8f03cd889831 \
+ 956ace3f4e2b8a6ac55aa74549cc38de \
+ e8b93865e80b67f03df2faa417960b88 \
+ 1d870838320d2810817ade2a17fcc4f8 \
fa0d5d4e1e3bd20a9ca9aef473fc3665 \
- 6bcc09c6316e342b6076da0828cad63d \
+ 0d41acddc353ee66a675dbdf61c9aee4 \
89b435ff50362dda1abe34a8862cf4ab \
b4a3e97f65acc9e03df7e95defe9b27c \
22e95901b912671da26457ac33e36a23 \
f60ab8537f924a65fbc0961e958d375b \
d0116882bd495f2b993495a8cf01f6fe \
5d8c25fc51ffebca67935516c2325860 \
- a88ce3625ee63d53088ad83d8581b368 \
- 3e595c35e2081351d8ba2da3e13353f3 \
- b70a651e684a72d00f732c90856a6a19 \
- c9fc0a9962fd7434e6d76ae22400e72a \
+ f50e12db5ae8860e3f067d5dcb4471a6 \
+ 1c636a4973414fa9b34d51157583717f \
+ 82524d56df67f220fd1232ae2878b84c \
+ dcdefdf32b08b2e1b686e30d4ffef310 \
eb8ac974a85ac3219c8c66b17bf5d0f5 \
82d98dc87dc8503400aa095f5aa70f13 \
- 5b8200043b8a729b7ed1b74825c68073 \
- 93097f1e5375355e5561e947b1b77180 \
- 0d731b0c0babb1f744fce3ef70eec11d \
- 11ccfbb001a8e067c18843864e21e033 \
- 4726ea3b77caf0028375236c677e9a82 \
- b7a1b93f85587ed99e0a46d141f26528 \
+ 285d82afae7d638437fd71f94cd1923e \
+ f443b2cca547d22f994c2dd99a6e5581 \
+ 361668f9f11e4f0eba45f70c24fa8614 \
+ b3c2227ede0550f603a0b4be15a7e96e \
+ 5e3168bac027527c809f8dfec53dcf2f \
+ cd0adf433f780963328c0540237a056f \
9aecd5ff283534a21d7cd51266abfe89 \
- dff68dc5b0704b8123a947f52e31dc8d \
- 8184f2020a3a5c78844485260ec49a36 \
+ 0cb504a1438dd87648b18def4b0e6e10 \
+ f86411859a1ef260c568e4b89546785c \
a6655e5e9845cb569991e87b5b38a1fc \
0a906c03436ec2dcc4c311c21fee0da2 \
ca65153603a1a7240bbd9d2ce19f2d67 \
- b145fb66e71c48f5f7b5b7ad98de963b \
+ 43bd6ad524e583eaa8c071dbb01f11ae \
908ec8a89821b72f3a35726bab24461f \
- 428fc5d72716c000ce20267887878be2 \
+ a8c6d404eec9e0efc975e65312b76228 \
ceee1159c41351d05f4cf705490867b3 \
d18d362345c4fe512ef67b738b239fb8 \
1ad539bb397aab6bb7c261d5b421a1a6 \
32222c3df2805eabcfe92432db2aee8f \
c67eae79cbc709d1c2c7535f3d7b6281 \
a29fec77b1e07caf7b682b881b676c06 \
- 96481ed810273371ed8b87f062a0dcda \
+ f38b27b8c9625110a51293658f1cc014 \
e972ea58ec203bfa6c79c1207852298b \
- 27e1a4ac927346509cf010b024c79e87 \
- 91606eb5d0ce66d748b5fc678b33a0ea \
- 90f2e8c0ca989290eff37cd9b3ec2a87 \
- 9202e1b9c6367013631774f38fdff707 \
- f00d62969f597349b1d460c96b57136c \
- 7f115ec6580072e95e26ab41f3fabb84 \
- e5ab780a9b5951ae6ddd1e0b26a8c6c8 \
- 1a1ac386996554c8f86261509e942f7c \
+ 1aa786b0f998b9d0440c2a03b133e991 \
+ 65689b5bdeb96ecd47930b430520f676 \
+ 651897c3311b074247a1b351bf85b4ff \
+ 8b3da5691ef460f035d90f16d3a0bebd \
+ 4abb118b896b90518fc32602088933be \
+ dca59f56e652d010c754d42df104cd22 \
+ 8ab996cc7533caa3a5675e045759e4e2 \
+ b40d4c73e3b5fd6670c4e1e253cfd689 \
2149df0c65b9963e19b4e7ca4050ad96 \
- 4a67d22614c644fef07efb496a053865 \
+ a7e739dff4b99e82ce07d8d21adc1533 \
56608eb750f70d0c9a6643a351cc5ea5 \
028a529550344ea14623168220fa1901 \
- c0188e94dfca68e01c6bf0450d4f035e \
- 5d8e90b65d01001eef0e5c2a77fed433 \
+ 4c9b7fd62dd6099a9a0e583bbdfea1cf \
+ d9cf61d9a5387dcbb3bf017aebaf2bf7 \
7da33160ff24759809edd61619a4a69f \
- e97f7d5779474c95cf1a1769013db24e \
+ 50fd776efcd20b40eb7ec5bec9c2d1cf \
b06e8c6d713b11560dd758109343209c \
db96b50050277bf05a3c68534bbb9586 \
306c0281447d1876e8220007b7a7e053 \
- e2860eb635198a35bdd26d200febc044 \
09de9d01e7331ff3da11f58be8bef0df \
0498c4a11448bfc35dc7bb2caa64c753 \
b58284cb8ce52b8de07e09f4f8fb9653 \
@@ -494,19 +485,18 @@ MD5SUM="9199be2f1d48125de06db0d79553ee2e \
45b469ad607b912256b7c80141fa2d17 \
8cec8a187df7a7b971009a7693f60140 \
7799baff9a5664205d9110a2624e8989 \
- 13b0d6da1e9b98af1619505a766656da \
- 0d4bd262b0a39e35e1e00dc97a67b827 \
- d85c237fd9f6e522379b9a41c5f34b16 \
+ bede58e46f614f2e9cb24cbb5b6706f9 \
+ cb7c86af4d8a969d849c6fce363af240 \
+ 89f70cb8305108cc51ccde5569760d5b \
+ 3aa6fd0d30e89ae0fef20f01efe44f9d \
4396bc1704f7337718352f0e6ec2d391 \
- da2424fe9f0c33ec7d8deda1f263abd0 \
+ 6debd70bca3c320090eab4677b0b2bb4 \
1d09c0d1f19fc18bb1c400100df17c0c \
- 260cb5824639b426f46f9fec71ac7ef0 \
ee9610aac4f0c37e3a31f6cea6fb8ff9 \
- 77250c45b58d52e13e3c7d2a67919d1a \
ff16c9daa9afa7ba1d5334699700b042 \
5a19e54d2580e4c0d72c281df8f54ae6 \
1613d0f9e24d4b05e81748ea1f355f6c \
- efd9146058a0c646f64bbf9282168f97 \
+ d18fcf0fa73d7bd81b2e63e0b8098869 \
423da0bc6c03a22a8c3181feec42c09b \
f7e1624bbb0598683388e7820bbae8c4 \
936257597fbe2fd02d954a5db53c687a \
diff --git a/system/apple-fonts-NY/apple-fonts-NY.info b/system/apple-fonts-NY/apple-fonts-NY.info
index 3429b3597c..4918a9deaa 100644
--- a/system/apple-fonts-NY/apple-fonts-NY.info
+++ b/system/apple-fonts-NY/apple-fonts-NY.info
@@ -2,7 +2,7 @@ PRGNAM="apple-fonts-NY"
VERSION="2023"
HOMEPAGE="https://developer.apple.com/fonts/"
DOWNLOAD="https://devimages-cdn.apple.com/design/resources/download/NY.dmg"
-MD5SUM="cf4240d1870274142788f898b73e0b04"
+MD5SUM="66be3f1753c9d266892db9001abfde7c"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="p7zip"
diff --git a/system/apple-fonts-SF/apple-fonts-SF.info b/system/apple-fonts-SF/apple-fonts-SF.info
index 8a0edd4995..5b802c60b2 100644
--- a/system/apple-fonts-SF/apple-fonts-SF.info
+++ b/system/apple-fonts-SF/apple-fonts-SF.info
@@ -4,9 +4,9 @@ HOMEPAGE="https://developer.apple.com/fonts/"
DOWNLOAD="https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg \
https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg \
https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg"
-MD5SUM="dbca7b5819e44b3c35d927048896078f \
-5ff6d068b349ac684b44264d00935f29 \
-b7ae94096a43b3ec93e851e4e588b9ed"
+MD5SUM="5d018413a9143d281bea4c7d8d6a9742 \
+02585cd22130ace172c0a1dcfbe1d466 \
+83dce1b94964815267e1ba1c9280e977"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="p7zip"
diff --git a/system/apptainer/README b/system/apptainer/README
index 28182dbd80..178c15c706 100644
--- a/system/apptainer/README
+++ b/system/apptainer/README
@@ -26,3 +26,10 @@ migration documentation and user compatibility documentation.
Usage example:
apptainer build slackware.sif \
/usr/share/apptainer/examples/slackware/slackware.def
+
+Various features can be enabled/disabled by passing variables to the
+script (VAR=yes/no ./apptainer.SlackBuild):
+
+WITH_SUID=auto|yes|no (default: auto)
+ create a setuid-installation (auto uses upstream's default which
+ is currently no)
diff --git a/system/apptainer/apptainer.SlackBuild b/system/apptainer/apptainer.SlackBuild
index 7f60d6af73..be7130c529 100644
--- a/system/apptainer/apptainer.SlackBuild
+++ b/system/apptainer/apptainer.SlackBuild
@@ -76,6 +76,15 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+WITH_SUID=${WITH_SUID:-auto}
+
+if [ "$WITH_SUID" = "no" ] ; then
+ suid_option="--without-suid"
+elif [ "$WITH_SUID" = "yes" ] ; then
+ suid_option="--with-suid"
+else
+ suid_option=""
+fi
# this sets the go path without the needs of logout
SBOGO=$(find /usr/lib${LIBDIRSUFFIX} -type f -name "go")
@@ -88,6 +97,7 @@ PATH=$GOROOT/bin:$PATH \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
+ $suid_option \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION
diff --git a/system/btop/btop.SlackBuild b/system/btop/btop.SlackBuild
index 56ee840492..1550e7d93c 100644
--- a/system/btop/btop.SlackBuild
+++ b/system/btop/btop.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for btop
-# Copyright 2022-2023 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
+# Copyright 2022-2024 Matteo Bernardini <ponce@slackbuilds.org>, Pisa, Italy
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -27,7 +27,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=btop
-VERSION=${VERSION:-1.2.13}
+VERSION=${VERSION:-1.3.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -75,7 +75,7 @@ find -L . \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
sed -i "s|-O2|$SLKCFLAGS|" Makefile || exit 1
-make PREFIX=/usr all
+LDFLAGS=-ldl make PREFIX=/usr all
make PREFIX=/usr install DESTDIR=$PKG
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
diff --git a/system/btop/btop.info b/system/btop/btop.info
index 5fbd5b55aa..faa44836df 100644
--- a/system/btop/btop.info
+++ b/system/btop/btop.info
@@ -1,8 +1,8 @@
PRGNAM="btop"
-VERSION="1.2.13"
+VERSION="1.3.2"
HOMEPAGE="https://github.com/aristocratos/btop/"
-DOWNLOAD="https://github.com/aristocratos/btop/archive/v1.2.13/btop-1.2.13.tar.gz"
-MD5SUM="be23bfd87f885c0f606f467ccfebc5e3"
+DOWNLOAD="https://github.com/aristocratos/btop/archive/v1.3.2/btop-1.3.2.tar.gz"
+MD5SUM="04ff8d32e7bf748705fe34dfea50c628"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/system/conky/conky.SlackBuild b/system/conky/conky.SlackBuild
index 828e7e1e3a..9aed1b322e 100644
--- a/system/conky/conky.SlackBuild
+++ b/system/conky/conky.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=conky
-VERSION=${VERSION:-1.20.1}
+VERSION=${VERSION:-1.20.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/system/conky/conky.info b/system/conky/conky.info
index 30fd153122..34225d0c8d 100644
--- a/system/conky/conky.info
+++ b/system/conky/conky.info
@@ -1,8 +1,8 @@
PRGNAM="conky"
-VERSION="1.20.1"
+VERSION="1.20.2"
HOMEPAGE="https://github.com/brndnmtthws/conky"
-DOWNLOAD="https://github.com/brndnmtthws/conky/archive/v1.20.1/conky-1.20.1.tar.gz"
-MD5SUM="6abe61ff017c872487f6b7a184ad68c9"
+DOWNLOAD="https://github.com/brndnmtthws/conky/archive/v1.20.2/conky-1.20.2.tar.gz"
+MD5SUM="45a6f5da697b5fb55e3ef8c401c8ef03"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="lua53 imlib2"
diff --git a/system/courier-screenplay/courier-screenplay.info b/system/courier-screenplay/courier-screenplay.info
index 37095d573a..046740d506 100644
--- a/system/courier-screenplay/courier-screenplay.info
+++ b/system/courier-screenplay/courier-screenplay.info
@@ -2,7 +2,7 @@ PRGNAM="courier-screenplay"
VERSION="1.0"
HOMEPAGE="https://www.fadeinpro.com/page.pl?content=download#fonts"
DOWNLOAD="https://www.fadeinpro.com/download/fonts/CourierScreenplay.zip"
-MD5SUM="0cc0252c07c2273d0e41f529b02acdd2"
+MD5SUM="68ba6c864b6c7b7c03d3252cb230318f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/system/cpmtools/cpmtools.info b/system/cpmtools/cpmtools.info
index 16ff90ec17..abd9fd33f1 100644
--- a/system/cpmtools/cpmtools.info
+++ b/system/cpmtools/cpmtools.info
@@ -2,7 +2,7 @@ PRGNAM="cpmtools"
VERSION="2.24"
HOMEPAGE="http://www.moria.de/~michael/cpmtools/"
DOWNLOAD="http://distcache.freebsd.org/ports-distfiles/cpmtools-2.24.tar.gz"
-MD5SUM="98dfb2f3e3246c6ddba63674b1e1af83"
+MD5SUM="0cb3a4c2fa7b2b05d9096d06b4b126b7"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/system/distrobox/distrobox.SlackBuild b/system/distrobox/distrobox.SlackBuild
index 693318d378..6db4ed1634 100644
--- a/system/distrobox/distrobox.SlackBuild
+++ b/system/distrobox/distrobox.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=distrobox
-VERSION=${VERSION:-1.7.1}
+VERSION=${VERSION:-1.7.2.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/system/distrobox/distrobox.info b/system/distrobox/distrobox.info
index 3a44b50f50..138c82b14f 100644
--- a/system/distrobox/distrobox.info
+++ b/system/distrobox/distrobox.info
@@ -1,8 +1,8 @@
PRGNAM="distrobox"
-VERSION="1.7.1"
+VERSION="1.7.2.0"
HOMEPAGE="https://github.com/89luca89/distrobox"
-DOWNLOAD="https://github.com/89luca89/distrobox/archive/1.7.1/distrobox-1.7.1.tar.gz"
-MD5SUM="25e413dbc60fbea908542c392e2affda"
+DOWNLOAD="https://github.com/89luca89/distrobox/archive/1.7.2.0/distrobox-1.7.2.0.tar.gz"
+MD5SUM="14d5352203adef489e399d5c396c9716"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="podman"
diff --git a/system/docker-buildx/docker-buildx.SlackBuild b/system/docker-buildx/docker-buildx.SlackBuild
index 6dab03e6f3..37a65556b7 100644
--- a/system/docker-buildx/docker-buildx.SlackBuild
+++ b/system/docker-buildx/docker-buildx.SlackBuild
@@ -25,8 +25,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=docker-buildx
-VERSION=${VERSION:-0.13.1}
-GITHASH=${GITHASH:-788433953af10f2a698f5c07611dddce2e08c7a0}
+VERSION=${VERSION:-0.14.0}
+GITHASH=${GITHASH:-171fcbeb69d67c90ba7f44f41a9e418f6a6ec1da}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/system/docker-buildx/docker-buildx.info b/system/docker-buildx/docker-buildx.info
index 625dad5d7c..4fea8e5bc4 100644
--- a/system/docker-buildx/docker-buildx.info
+++ b/system/docker-buildx/docker-buildx.info
@@ -1,10 +1,10 @@
PRGNAM="docker-buildx"
-VERSION="0.13.1"
+VERSION="0.14.0"
HOMEPAGE="https://github.com/docker/buildx"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/docker/buildx/archive/v0.13.1/buildx-0.13.1.tar.gz"
-MD5SUM_x86_64="42a6b7cc084755ff69b7109fb728f29d"
+DOWNLOAD_x86_64="https://github.com/docker/buildx/archive/v0.14.0/buildx-0.14.0.tar.gz"
+MD5SUM_x86_64="44115354337df52c9c609c9d41411c3b"
REQUIRES="google-go-lang"
MAINTAINER="Andrew Clemons"
EMAIL="andrew.clemons@gmail.com"
diff --git a/system/docker-compose/docker-compose.SlackBuild b/system/docker-compose/docker-compose.SlackBuild
index 463bd6d7ef..b34eeb8d87 100644
--- a/system/docker-compose/docker-compose.SlackBuild
+++ b/system/docker-compose/docker-compose.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=docker-compose
-VERSION=${VERSION:-2.26.1}
+VERSION=${VERSION:-2.27.0}
GITHASH=${GITHASH:-b929810}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
diff --git a/system/docker-compose/docker-compose.info b/system/docker-compose/docker-compose.info
index d7bf6ea891..1f77fc084d 100644
--- a/system/docker-compose/docker-compose.info
+++ b/system/docker-compose/docker-compose.info
@@ -1,10 +1,10 @@
PRGNAM="docker-compose"
-VERSION="2.26.1"
+VERSION="2.27.0"
HOMEPAGE="https://docs.docker.com/compose/"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/docker/compose/archive/v2.26.1/compose-2.26.1.tar.gz"
-MD5SUM_x86_64="64ac36e75914803274d074d107cf3e17"
+DOWNLOAD_x86_64="https://github.com/docker/compose/archive/v2.27.0/compose-2.27.0.tar.gz"
+MD5SUM_x86_64="19c94f1323a155d19afbfeda1cdecbcc"
REQUIRES="docker-cli"
MAINTAINER="Ebben Aries"
EMAIL="slackbuilds@dscp.org"
diff --git a/system/efi-sync/README b/system/efi-sync/README
new file mode 100644
index 0000000000..71a5cef40a
--- /dev/null
+++ b/system/efi-sync/README
@@ -0,0 +1,19 @@
+efi-sync is a program which will update your efi when your kernel or its
+related files are updated.
+
+To have efi-sync to start and stop with your host, add to the beginning of
+/etc/rc.d/rc.local:
+
+ if [ -x /etc/rc.d/rc.efi-sync ]; then
+ /etc/rc.d/rc.efi-sync start
+ fi
+
+and to /etc/rc.d/rc.local_shutdown (creating it if needed):
+
+ if [ -x /etc/rc.d/rc.efi-sync ]; then
+ /etc/rc.d/rc.efi-sync stop
+ fi
+
+Also ensure your EFI is mounted on boot by having its entry configured in
+/etc/fstab. For more instructions, refer to the project's README in this
+packages documentation under /usr/doc.
diff --git a/system/efi-sync/doinst.sh b/system/efi-sync/doinst.sh
new file mode 100644
index 0000000000..519c0d5c0d
--- /dev/null
+++ b/system/efi-sync/doinst.sh
@@ -0,0 +1,25 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ if [ -e $OLD ]; then
+ cp -a $OLD ${NEW}.incoming
+ cat $NEW > ${NEW}.incoming
+ mv ${NEW}.incoming $NEW
+ fi
+ config $NEW
+}
+
+preserve_perms etc/rc.d/rc.efi-sync.new
diff --git a/system/efi-sync/efi-sync.SlackBuild b/system/efi-sync/efi-sync.SlackBuild
new file mode 100644
index 0000000000..e9a06ee65a
--- /dev/null
+++ b/system/efi-sync/efi-sync.SlackBuild
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=efi-sync
+VERSION=${VERSION:-0.2.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p $PKG/usr/sbin
+cp efi-sync $PKG/usr/sbin/
+chmod +x $PKG/usr/sbin/efi-sync
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+cp -a \
+ README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cp "$CWD/README" "$PKG/usr/doc/$PRGNAM-$VERSION/README_slackware.md"
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+mkdir -p "$PKG/etc/rc.d"
+cp -R "$CWD/files/rc.efi-sync.new" "$PKG/etc/rc.d/"
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-0.2.0-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/system/efi-sync/efi-sync.info b/system/efi-sync/efi-sync.info
new file mode 100644
index 0000000000..166c307260
--- /dev/null
+++ b/system/efi-sync/efi-sync.info
@@ -0,0 +1,10 @@
+PRGNAM="efi-sync"
+VERSION="0.2.0"
+HOMEPAGE="https://git.server.ky/slackcoder/efi-sync"
+DOWNLOAD="https://git.server.ky/slackcoder/efi-sync/snapshot/efi-sync-0.2.0.tar.xz"
+MD5SUM="9da8ebe6f6bcf30e0b8304c641c72396"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Slack Coder"
+EMAIL="slackcoder@server.ky"
diff --git a/system/efi-sync/files/rc.efi-sync.new b/system/efi-sync/files/rc.efi-sync.new
new file mode 100644
index 0000000000..727c93b84a
--- /dev/null
+++ b/system/efi-sync/files/rc.efi-sync.new
@@ -0,0 +1,60 @@
+#!/bin/sh
+#
+# Startup/shutdown script for GNU Taler's exchange.
+#
+
+# Seconds to wait for daemon to shutdown.
+SHUTDOWN_WAIT=60
+
+mkdir -p /run/efi-sync
+
+start() {
+ echo "Starting EFI Sync"
+
+ daemon \
+ --name=efi-sync \
+ --pidfiles=/run/efi-sync \
+ --output=/var/log/efi-sync.log \
+ -- efi-sync watch
+}
+
+stop() {
+ echo "Stopping EFI Sync"
+
+ if /usr/bin/daemon --pidfiles=/run/efi-sync --name=efi-sync --running ; then
+ /usr/bin/daemon --pidfiles=/run/efi-sync --name=efi-sync --stop
+ fi
+
+ # Wait for daemon to politely shutdown.
+ sleep 1
+ if /usr/bin/daemon --pidfiles=/run/efi-sync --name=efi-sync --running; then
+ echo "Waiting up to ${SHUTDOWN_WAIT} to stop..."
+
+ let "count = 0"
+ while /usr/bin/daemon --pidfiles=/run/efi-sync --name=efi-sync --running && [[ $count -lt 60 ]]; do
+ sleep 1
+ let "count = $count + 1"
+ done
+ fi
+}
+
+status() {
+ if /usr/bin/daemon --pidfiles=/run/efi-sync --name=efi-sync --running ; then
+ /usr/bin/daemon --pidfiles=/run/efi-sync --name=efi-sync --running --verbose
+ fi
+}
+
+case "$1" in
+start)
+ start
+ ;;
+stop)
+ stop
+ ;;
+status)
+ status
+ ;;
+*)
+ echo $"Usage: $0 {start|stop|status}"
+ exit 1
+esac
diff --git a/system/efi-sync/slack-desc b/system/efi-sync/slack-desc
new file mode 100644
index 0000000000..1c4590c6f1
--- /dev/null
+++ b/system/efi-sync/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+efi-sync: efi-sync (Kernel EFI installer)
+efi-sync:
+efi-sync: Automatically install your kernel into the EFI on updates.
+efi-sync:
+efi-sync:
+efi-sync:
+efi-sync:
+efi-sync:
+efi-sync:
+efi-sync:
+efi-sync:
diff --git a/system/efitools/efitools.SlackBuild b/system/efitools/efitools.SlackBuild
index 6670f971bd..c00927de6c 100644
--- a/system/efitools/efitools.SlackBuild
+++ b/system/efitools/efitools.SlackBuild
@@ -43,9 +43,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -129,7 +126,8 @@ for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; r
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cd $PKG/usr/share/efitools
-mv README README_Secure_Boot COPYING $PKG/usr/doc/$PRGNAM-$VERSION
+mv README COPYING $PKG/usr/doc/$PRGNAM-$VERSION
+cp $CWD/README.Secure_Boot $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/system/fastfetch/fastfetch.SlackBuild b/system/fastfetch/fastfetch.SlackBuild
index 57f29bec06..0b0814deb8 100644
--- a/system/fastfetch/fastfetch.SlackBuild
+++ b/system/fastfetch/fastfetch.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=fastfetch
-VERSION=${VERSION:-2.9.0}
+VERSION=${VERSION:-2.10.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/system/fastfetch/fastfetch.info b/system/fastfetch/fastfetch.info
index 98a2f06064..67524f7327 100644
--- a/system/fastfetch/fastfetch.info
+++ b/system/fastfetch/fastfetch.info
@@ -1,8 +1,8 @@
PRGNAM="fastfetch"
-VERSION="2.9.0"
+VERSION="2.10.2"
HOMEPAGE="https://github.com/fastfetch-cli/fastfetch"
-DOWNLOAD="https://github.com/fastfetch-cli/fastfetch/archive/2.9.0/fastfetch-2.9.0.tar.gz"
-MD5SUM="b5e476cbd7fd82bcbc510ff1940ea502"
+DOWNLOAD="https://github.com/fastfetch-cli/fastfetch/archive/2.10.2/fastfetch-2.10.2.tar.gz"
+MD5SUM="21bf6a715d2a2cd075b75030756c1cee"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/system/fzf/fzf.SlackBuild b/system/fzf/fzf.SlackBuild
index 82af663b0f..78a31b4701 100644
--- a/system/fzf/fzf.SlackBuild
+++ b/system/fzf/fzf.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=fzf
-VERSION=${VERSION:-0.49.0}
+VERSION=${VERSION:-0.51.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -82,8 +82,8 @@ done
mkdir -p vendor/golang.org/x
for DEPENDENCY in sync/0.5.0 \
- sys/0.18.0 \
- term/0.18.0 \
+ sys/0.19.0 \
+ term/0.19.0 \
text/0.14.0 ; do
DEPENDENCY_NAME="$(echo "$DEPENDENCY" | cut -d/ -f1)"
DEPENDENCY_REV="$(echo "$DEPENDENCY" | cut -d/ -f2)"
@@ -155,12 +155,12 @@ github.com/mattn/go-shellwords
# github.com/rivo/uniseg v0.4.7
## explicit; go 1.18
github.com/rivo/uniseg
-# golang.org/x/sys v0.18.0
+# golang.org/x/sys v0.19.0
## explicit; go 1.18
golang.org/x/sys/plan9
golang.org/x/sys/unix
golang.org/x/sys/windows
-# golang.org/x/term v0.18.0
+# golang.org/x/term v0.19.0
## explicit; go 1.18
golang.org/x/term
# golang.org/x/text v0.14.0
diff --git a/system/fzf/fzf.info b/system/fzf/fzf.info
index 0ab652eb52..7578e1b62e 100644
--- a/system/fzf/fzf.info
+++ b/system/fzf/fzf.info
@@ -1,7 +1,7 @@
PRGNAM="fzf"
-VERSION="0.49.0"
+VERSION="0.51.0"
HOMEPAGE="https://github.com/junegunn/fzf"
-DOWNLOAD="https://github.com/junegunn/fzf/archive/0.49.0/fzf-0.49.0.tar.gz \
+DOWNLOAD="https://github.com/junegunn/fzf/archive/0.51.0/fzf-0.51.0.tar.gz \
https://github.com/charlievieth/fastwalk/archive/v1.0.3/fastwalk-1.0.3.tar.gz \
https://github.com/gdamore/encoding/archive/v1.0.0/encoding-1.0.0.tar.gz \
https://github.com/gdamore/tcell/archive/v2.7.4/tcell-2.7.4.tar.gz \
@@ -11,10 +11,10 @@ DOWNLOAD="https://github.com/junegunn/fzf/archive/0.49.0/fzf-0.49.0.tar.gz \
https://github.com/mattn/go-shellwords/archive/v1.0.12/go-shellwords-1.0.12.tar.gz \
https://github.com/rivo/uniseg/archive/v0.4.7/uniseg-0.4.7.tar.gz \
https://github.com/golang/sync/archive/v0.5.0/sync-0.5.0.tar.gz \
- https://github.com/golang/sys/archive/v0.18.0/sys-0.18.0.tar.gz \
- https://github.com/golang/term/archive/v0.18.0/term-0.18.0.tar.gz \
+ https://github.com/golang/sys/archive/v0.19.0/sys-0.19.0.tar.gz \
+ https://github.com/golang/term/archive/v0.19.0/term-0.19.0.tar.gz \
https://github.com/golang/text/archive/v0.14.0/text-0.14.0.tar.gz"
-MD5SUM="ae80282d8f779c58782b89eb06599306 \
+MD5SUM="a8625f0178788dfa9c98d24842eef3eb \
ab5a2274c5ccac2d968e768ac2415209 \
fbadc383bc1ace79fa769fe2de36b87b \
a03c6d4612a12e949e05ea7d67624142 \
@@ -24,8 +24,8 @@ MD5SUM="ae80282d8f779c58782b89eb06599306 \
71a4ecaadfb90ffccb392799a2f00743 \
3751c82dd342cd5823703910b9da173d \
a8371f5f0569f41210ca8a3f30e445c6 \
- e00453d8847cde61907bcbee219c44bb \
- 8f5afb0df38c6eb06f51f483e30eddba \
+ 884f364735b00bb72fcea01a6de28c46 \
+ aa8f5889c36f2124c7f3a274a66a8382 \
9f64144d4b1647ce4597abf657028a8d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/system/inotify-info/inotify-info.SlackBuild b/system/inotify-info/inotify-info.SlackBuild
index 35417bf478..5de56ed254 100644
--- a/system/inotify-info/inotify-info.SlackBuild
+++ b/system/inotify-info/inotify-info.SlackBuild
@@ -25,8 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=inotify-info
-VERSION=${VERSION:-20230226_8add69e}
-COMMIT=${COMMIT:-8add69efcfc702322819321387bae9043d7d4b59}
+VERSION=${VERSION:-0.0.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -53,16 +52,12 @@ OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
set -e
@@ -70,9 +65,9 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$COMMIT
-tar xvf $CWD/$PRGNAM-$COMMIT.tar.gz
-cd $PRGNAM-$COMMIT
+rm -rf $PRGNAM-v$VERSION
+tar xvf $CWD/$PRGNAM-v$VERSION.tar.gz
+cd $PRGNAM-v$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
diff --git a/system/inotify-info/inotify-info.info b/system/inotify-info/inotify-info.info
index 4f5ac61bf0..3107d693ed 100644
--- a/system/inotify-info/inotify-info.info
+++ b/system/inotify-info/inotify-info.info
@@ -1,8 +1,8 @@
PRGNAM="inotify-info"
-VERSION="20230226_8add69e"
+VERSION="0.0.1"
HOMEPAGE="https://github.com/mikesart/inotify-info"
-DOWNLOAD="https://github.com/mikesart/inotify-info/archive/8add69e/inotify-info-8add69efcfc702322819321387bae9043d7d4b59.tar.gz"
-MD5SUM="a800f3eaaec2ef5812a3c20ccee3244c"
+DOWNLOAD="https://github.com/mikesart/inotify-info/releases/download/v0.0.1/inotify-info-v0.0.1.tar.gz"
+MD5SUM="e63e740fc3fcf91c03bbcbc5045937b3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/system/limine/limine.SlackBuild b/system/limine/limine.SlackBuild
index fc32ab4deb..a0c89610d1 100644
--- a/system/limine/limine.SlackBuild
+++ b/system/limine/limine.SlackBuild
@@ -25,7 +25,7 @@
cd "$(dirname "$0")" ; CWD=$(pwd)
PRGNAM=limine
-VERSION=${VERSION:-7.4.0}
+VERSION=${VERSION:-7.4.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/system/limine/limine.info b/system/limine/limine.info
index 3cc2ab30fb..51c11a7990 100644
--- a/system/limine/limine.info
+++ b/system/limine/limine.info
@@ -1,8 +1,8 @@
PRGNAM="limine"
-VERSION="7.4.0"
+VERSION="7.4.1"
HOMEPAGE="https://limine-bootloader.org/"
-DOWNLOAD="https://github.com/limine-bootloader/limine/releases/download/v7.4.0/limine-7.4.0.tar.gz"
-MD5SUM="dc0a323fef04f3c955617d8176ef8b81"
+DOWNLOAD="https://github.com/limine-bootloader/limine/releases/download/v7.4.1/limine-7.4.1.tar.gz"
+MD5SUM="9ef991b2c130b5156cbf180b2543c331"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/system/openzfs/openzfs.SlackBuild b/system/openzfs/openzfs.SlackBuild
index 3b56954416..1d5e1206cd 100644
--- a/system/openzfs/openzfs.SlackBuild
+++ b/system/openzfs/openzfs.SlackBuild
@@ -33,7 +33,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=openzfs
SRCNAM=zfs
VERSION=${VERSION:-2.2.3}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -49,9 +49,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$PKGVER-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -110,8 +107,6 @@ CFLAGS="$SLKCFLAGS" \
--includedir=/usr/include \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
- --with-linux="/lib/modules/${KERNEL}/source" \
- --with-linux-obj="/lib/modules/${KERNEL}/source" \
--with-udevdir=/lib/udev \
--enable-static=no \
$DRACUTLIBDIR \
@@ -125,7 +120,7 @@ rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
# clean up leftovers
if [ "$ARCH" = "x86_64" ]; then
rm -fr $PKG/usr/lib
-elif [ -z "${DRACUTLIBDIR}" ]; then
+elif [ -z "${DRACUTLIBDIR}" ]; then
rm -fr $PKG/usr/lib/dracut
fi
rm -fr $PKG/usr/src
diff --git a/system/pacemaker/pacemaker.info b/system/pacemaker/pacemaker.info
index ca4cceefd4..36fa7e9b59 100644
--- a/system/pacemaker/pacemaker.info
+++ b/system/pacemaker/pacemaker.info
@@ -2,7 +2,7 @@ PRGNAM="pacemaker"
VERSION="2.0.5"
HOMEPAGE="https://wiki.clusterlabs.org/wiki/Pacemaker"
DOWNLOAD="https://github.com/ClusterLabs/pacemaker/archive/Pacemaker-2.0.5/pacemaker-Pacemaker-2.0.5.tar.gz"
-MD5SUM="c36c8ed401e39ff3e727ba4bf5fcc2e7"
+MD5SUM="f58503c3939de68cd45b37e87745108a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="corosync"
diff --git a/system/qemu/README b/system/qemu/README
index 1c9b196e0c..987806c423 100644
--- a/system/qemu/README
+++ b/system/qemu/README
@@ -41,23 +41,16 @@ your processor) prior to launching qemu-system-ARCH with kvm enabled.
For older/unmaintained qemu frontends, this build also creates a symlink
to qemu-system-ARCH at /usr/bin/qemu-kvm.
-libslirp (user mode networking), libcacard, spice, usbredir,
-virglrenderer, libnfs, snappy, device-tree-compiler, glusterfs, and vde2
-are optional dependencies.
+libiscsi (to access iSCSI targets directly), libslirp (user mode
+networking), libcacard, spice, usbredir, virglrenderer, libnfs, snappy,
+glusterfs, and vde2, sphinx-rtd-theme and Sphinx (to build documentation)
+are optional dependencies that will be automatically detected during
+compilation, if present (all avialable on SBo).
-To enable user mode networking, install libslirp (availale on SBO), then
-compile qemu:
+To enable user mode networking, install libslirp, then compile qemu:
SLIRP=yes ./qemu.SlackBuild
-libiscsi (to access iSCSI targets directly) is optional dependency,
-and will be picked up, if present, during the compilation.
-
-sphinx-rtd-theme and Sphinx (both on SBo) are optional but required in
-order for any of the documentation to be built.
-
-If you wish to emulate ARM, you will want device-tree-compiler.
-
NOTES:
This version breaks some backward compatibility with earlier versions.
Consult the official changelogs for details.
diff --git a/system/qemu/qemu.SlackBuild b/system/qemu/qemu.SlackBuild
index 73604dc9e3..1f6ebfffbb 100644
--- a/system/qemu/qemu.SlackBuild
+++ b/system/qemu/qemu.SlackBuild
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=qemu
VERSION=${VERSION:-8.2.2}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -93,6 +93,10 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} + || true
+# Use newer meson from python3-meson-opt
+PYVER=$(python3 -c 'import sys; print("%d.%d" % sys.version_info[:2])')
+export PYTHONPATH=/opt/python$PYVER/site-packages
+
# Remove double CFLAGS
sed -i "s|^\ \ CFLAGS=\"-O2\ | CFLAGS=\"|" configure
@@ -133,7 +137,6 @@ CXXFLAGS="$SLKCFLAGS" \
--enable-virtfs \
--enable-sdl \
--enable-malloc=jemalloc \
- --enable-fdt=auto \
--enable-nettle \
--${uring}able-linux-io-uring \
--audio-drv-list=${AUDIODRIVERS} \
diff --git a/system/qemu/qemu.info b/system/qemu/qemu.info
index 7e9f20f028..48d9efdf8c 100644
--- a/system/qemu/qemu.info
+++ b/system/qemu/qemu.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://download.qemu.org/qemu-8.2.2.tar.xz"
MD5SUM="e43091262671c1728b09522932b75b1d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="device-tree-compiler python3-meson-opt"
MAINTAINER="Edward W. Koenig"
EMAIL="kingbeowulf@linuxgalaxy.org"
diff --git a/system/slackrepo-hints/slackrepo-hints.SlackBuild b/system/slackrepo-hints/slackrepo-hints.SlackBuild
index 61abc75bfc..6c83a08e51 100644
--- a/system/slackrepo-hints/slackrepo-hints.SlackBuild
+++ b/system/slackrepo-hints/slackrepo-hints.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=slackrepo-hints
-VERSION=${VERSION:-20240420}
+VERSION=${VERSION:-20240503}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/system/slackrepo-hints/slackrepo-hints.info b/system/slackrepo-hints/slackrepo-hints.info
index 51b4bee6d2..6dc5175d70 100644
--- a/system/slackrepo-hints/slackrepo-hints.info
+++ b/system/slackrepo-hints/slackrepo-hints.info
@@ -1,8 +1,8 @@
PRGNAM="slackrepo-hints"
-VERSION="20240420"
+VERSION="20240503"
HOMEPAGE="https://github.com/aclemons/slackrepo-hints"
-DOWNLOAD="https://github.com/aclemons/slackrepo-hints/archive/v20240420/slackrepo-hints-20240420.tar.gz"
-MD5SUM="63925bb6151fe3074fb08d99a03a3c47"
+DOWNLOAD="https://github.com/aclemons/slackrepo-hints/archive/v20240503/slackrepo-hints-20240503.tar.gz"
+MD5SUM="24441ebdae1c13bcef96a719e7fe05af"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/system/sysdig/sysdig.SlackBuild b/system/sysdig/sysdig.SlackBuild
index bb0d7af4b4..f777bb8e6a 100644
--- a/system/sysdig/sysdig.SlackBuild
+++ b/system/sysdig/sysdig.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=sysdig
-VERSION=${VERSION:-0.28.0}
+VERSION=${VERSION:-0.36.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -73,7 +73,7 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
-FALCO_HASH=${FALCO_HASH:-2160111cd088aea9ae2235d3385ecb0b1ab6623c}
+FALCO_HASH=${FALCO_HASH:-b3734896de3fa23a78003a0d203d6a3aae896339}
mkdir -p build/falcosecurity-libs-repo/falcosecurity-libs-prefix/src
cp $CWD/libs-$FALCO_HASH.tar.gz \
diff --git a/system/sysdig/sysdig.info b/system/sysdig/sysdig.info
index 9e0f5eebe6..dc2642fd1a 100644
--- a/system/sysdig/sysdig.info
+++ b/system/sysdig/sysdig.info
@@ -1,12 +1,12 @@
PRGNAM="sysdig"
-VERSION="0.28.0"
+VERSION="0.36.1"
HOMEPAGE="https://www.sysdig.org"
DOWNLOAD="UNSUPPORTED"
MD5SUM=""
-DOWNLOAD_x86_64="https://github.com/draios/sysdig/archive/0.28.0/sysdig-0.28.0.tar.gz \
- https://github.com/falcosecurity/libs/archive/2160111/libs-2160111cd088aea9ae2235d3385ecb0b1ab6623c.tar.gz"
-MD5SUM_x86_64="b0a25f902d6d520380f03a1f39177033 \
- 52ff63dc35604d0a37aa780a4472a114"
-REQUIRES="jsoncpp lua libb64 jq tbb grpc gtest"
+DOWNLOAD_x86_64="https://github.com/draios/sysdig/archive/0.36.1/sysdig-0.36.1.tar.gz \
+ https://github.com/falcosecurity/libs/archive/b3734896de3fa23a78003a0d203d6a3aae896339/libs-b3734896de3fa23a78003a0d203d6a3aae896339.tar.gz"
+MD5SUM_x86_64="8bb31353ae213dffcf61ef5342e9ea35 \
+ 42b0d6b7815379f50d52e7817261d6fd"
+REQUIRES="jsoncpp lua52 libb64 jq tbb grpc gtest uthash yaml-cpp nlohmann_json"
MAINTAINER="Larry Hajali"
EMAIL="larryhaja[at]gmail[dot]com"
diff --git a/system/ti99sim/ti99sim.SlackBuild b/system/ti99sim/ti99sim.SlackBuild
index a56499dfb3..40a572a5ea 100644
--- a/system/ti99sim/ti99sim.SlackBuild
+++ b/system/ti99sim/ti99sim.SlackBuild
@@ -70,7 +70,7 @@ sed -i "s,-g3 *-O3,$SLKCFLAGS," rules.mak
# Binaries already installed stripped. SYS_BIN must be <DATA_DIR>/bin
# to avoid it creating absolute symlinks (we'll create relative ones, below).
-make install DATA_DIR=$PKG/opt/$PRGNAM SYS_BIN=$PKG/opt/$PRGNAM/bin
+env -u ARCH make install DATA_DIR=$PKG/opt/$PRGNAM SYS_BIN=$PKG/opt/$PRGNAM/bin
# Modified setup script requires arguments (original one didn't).
sh scripts/setup $CWD $PKG/opt/$PRGNAM
diff --git a/system/ttf-babelstone-cjk/APL.txt b/system/ttf-babelstone-cjk/APL.txt
deleted file mode 100644
index c1aba41d3f..0000000000
--- a/system/ttf-babelstone-cjk/APL.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-ARPHIC PUBLIC LICENSE
-
-Copyright (C) 1999 Arphic Technology Co., Ltd.
-11Fl. No.168, Yung Chi Rd., Taipei, 110 Taiwan
-All rights reserved except as specified below.
-
-Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is forbidden.
-
-Preamble
-
- The licenses for most software are designed to take away your freedom to share and change it. By contrast, the ARPHIC PUBLIC LICENSE specifically permits and encourages you to use this software, provided that you give the recipients all the rights that we gave you and make sure they can get the modifications of this software.
-
-Legal Terms
-
-0. Definitions:
- Throughout this License, "Font" means the TrueType fonts "AR PL Mingti2L Big5", "AR PL KaitiM Big5" (BIG-5 character set) and "AR PL SungtiL GB", "AR PL KaitiM GB" (GB character set) which are originally distributed by Arphic, and the derivatives of those fonts created through any modification including modifying glyph, reordering glyph, converting format, changing font name, or adding/deleting some characters in/from glyph table.
-
- "PL" means "Public License".
-
- "Copyright Holder" means whoever is named in the copyright or copyrights for the Font.
-
- "You" means the licensee, or person copying, redistributing or modifying the Font.
-
- "Freely Available" means that you have the freedom to copy or modify the Font as well as redistribute copies of the Font under the same conditions you received, not price. If you wish, you can charge for this service.
-
-1. Copying & Distribution
- You may copy and distribute verbatim copies of this Font in any medium, without restriction, provided that you retain this license file (ARPHICPL.TXT) unaltered in all copies.
-
-2. Modification
- You may otherwise modify your copy of this Font in any way, including modifying glyph, reordering glyph, converting format, changing font name, or adding/deleting some characters in/from glyph table, and copy and distribute such modifications under the terms of Section 1 above, provided that the following conditions are met:
-
- a) You must insert a prominent notice in each modified file stating how and when you changed that file.
-
- b) You must make such modifications Freely Available as a whole to all third parties under the terms of this License, such as by offering access to copy the modifications from a designated place, or distributing the modifications on a medium customarily used for software interchange.
-
- c) If the modified fonts normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the Font under these conditions, and telling the user how to view a copy of this License.
-
- These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Font, and can be reasonably considered independent and separate works in themselves, then this License and its terms, do not apply to those sections when you distribute them as separate works. Therefore, mere aggregation of another work not based on the Font with the Font on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
-
-3. Condition Subsequent
- You may not copy, modify, sublicense, or distribute the Font except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Font will automatically retroactively void your rights under this License. However, parties who have received copies or rights from you under this License will keep their licenses valid so long as such parties remain in full compliance.
-
-4. Acceptance
- You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to copy, modify, sublicense or distribute the Font. These actions are prohibited by law if you do not accept this License. Therefore, by copying, modifying, sublicensing or distributing the Font, you indicate your acceptance of this License and all its terms and conditions.
-
-5. Automatic Receipt
- Each time you redistribute the Font, the recipient automatically receives a license from the original licensor to copy, distribute or modify the Font subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
-
-6. Contradiction
- If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Font at all. For example, if a patent license would not permit royalty-free redistribution of the Font by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Font.
-
- If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
-
-7. NO WARRANTY
- BECAUSE THE FONT IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE FONT, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS OR OTHER PARTIES PROVIDE THE FONT "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE FONT IS WITH YOU. SHOULD THE FONT PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-8. DAMAGES WAIVER
- UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, IN NO EVENT WILL ANY COPYRIGHTT HOLDERS, OR OTHER PARTIES WHO MAY COPY, MODIFY OR REDISTRIBUTE THE FONT AS PERMITTED ABOVE, BE LIABLE TO YOU FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, INCIDENTAL, SPECIAL OR EXEMPLARY DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE FONT (INCLUDING BUT NOT LIMITED TO PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR PROFITS; OR BUSINESS INTERRUPTION), EVEN IF SUCH HOLDERS OR OTHER PARTIES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
diff --git a/system/ttf-babelstone-cjk/BabelStoneOFL.txt b/system/ttf-babelstone-cjk/BabelStoneOFL.txt
deleted file mode 100644
index ef758932ab..0000000000
--- a/system/ttf-babelstone-cjk/BabelStoneOFL.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-Copyright (c) 2013, Andrew West (www.babelstone.co.uk),
-with Reserved Font Name BabelStone.
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/system/ttf-babelstone-cjk/README b/system/ttf-babelstone-cjk/README
index 849bc0af07..8bab1bdd99 100644
--- a/system/ttf-babelstone-cjk/README
+++ b/system/ttf-babelstone-cjk/README
@@ -3,3 +3,8 @@ contains the chinese fonts along with regional variants.
It covers Han,Jurchen,Khitan,Tangut,Sui,Naxi Dongba and Yi
scripts.It also covers Hanzi,Kanji and Hanja.
+In this release I have moved fonts for scripts that are
+no longer used today apart from academia.
+
+To install archaic fonts run the slackbuild as
+archaic=yes ./ttf-babelstone-cjk.SlackBuild
diff --git a/system/ttf-babelstone-cjk/copyright b/system/ttf-babelstone-cjk/copyright
deleted file mode 100644
index 0a7deeeffd..0000000000
--- a/system/ttf-babelstone-cjk/copyright
+++ /dev/null
@@ -1,13 +0,0 @@
-Tangut Yinchuan v. 15.102 copyright Prof. Jing Yongshi
-
-Tangut yinchuan Font is made available for free download
-and use with the permission of Prof. Jing Yongshi, who
-reserves the copyright to the font. This font may not be
-modified, sold or redistributed for profit without the express
-permission of the copyright holders. If you use this font in
-a publication you are requested to
-acknowledge Prof. Jing Yongshi's copyright of the font.
-
-The font is maintained by Andrew West, and any feature requests
-or bug reports should be directed to Andrew West by email
-Email: babelstone@gmail.com
diff --git a/system/ttf-babelstone-cjk/copyright2 b/system/ttf-babelstone-cjk/copyright2
deleted file mode 100644
index 91eea19f45..0000000000
--- a/system/ttf-babelstone-cjk/copyright2
+++ /dev/null
@@ -1,6 +0,0 @@
-BabelStone Fonts Copyright Andrew West
-
-These fonts are free to use for personal or commercial purposes,
-and you are also free to redistribute them by themself or as part
-of a free or commercial software package, just as long as you
-do not sell the fonts on its own.
diff --git a/system/ttf-babelstone-cjk/readme_fonts b/system/ttf-babelstone-cjk/readme_fonts
deleted file mode 100644
index 473b73a9ea..0000000000
--- a/system/ttf-babelstone-cjk/readme_fonts
+++ /dev/null
@@ -1,147 +0,0 @@
-ttf-babelstone-cjk contains the following fonts:
-
-Babelstonehan:
-
-It is a free Unicode CJK font with over 56,000 Han
-characters (hanzi, kanji, hanja), and 64,973 Unicode
-characters in total. It is a Song/Ming style font.
-with glyphs modelled on the official character forms
-used in the People's Republic of China, and is primarily
-intended for writing Modern Standard Chinese,
-Classical Chinese, and various Sinitic languages and dialects.
-The font also includes many rare or archaic characters that are
-not found in most CJK fonts, as well as many characters used for
-the scholarly transcription of Early Chinese texts written on
-bone, bronze, wood, bamboo, and silk.
-
-Babelstonehan PUA:
-
-it includes 4,444 unencoded CJK ideographs and ideographic
-components in the PUA, in the range U+E080 through U+F8DF.
-
-BabelStone Erijan 1 and 2:
-
-BabelStone Erjian 1 and 2 are two Unicode Han fonts
-using the draft second stage simplified forms of characters.
-Both fonts cover 8,157 high-frequency Hanzi, comprising
-8,105 Level 1, Level 2 and Level 3 characters listed in
-Tōngyòng Guīfàn Hànzì Zìdiǎn.and 52 other characters.
-"BabelStone Erjian 1" uses second stage simplified glyph
-forms for the characters listed in Table 1 only; whereas
-"BabelStone Erjian 2" uses second stage simplified glyph
-forms for the characters listed in Table 1 and Table 2
-(where the glyph for the same character differs between
-Table 1 and Table 2, the form given in Table 2 is used).
-
-Babelstone Jurchen Scan PUA fonts:
-
-urchen Berlin, Jurchen Tianyige, and Jurchen Toyo Bunko
-are three Jurchen fonts with glyphs scanned from the
-Jurchen section of three copies of the Ming dynasty Huáyí Yìyǔ.
- "Sino-Foreign Vocabulary" (i.e. the Sino-Jurchen Vocabulary).
-Jurchen Berlin is derived from the manuscript copy held at the
-Berlin State Library (Staatsbibliothek zu Berlin)
-(pressmark Libri sin. Hirth Ms. 1);
-Jurchen Tianyige is derived from the Ming dynasty
-woodblock printed edition held at the Tiānyīgé
-library in Níngbō (pressmark 善0376);
-Jurchen Toyo Bunko is the manuscript copy held at the
-Tōyō Bunko (東洋文庫) in Tokyo (presssmark XI-5-2).
-There is currently no scan font for the manuscript
-copy held at the National Library of China
-in Běijīng (pressmark 10507). The characters are mapped
-non-contiguously to the PUA at E000..E6FA
-(matching the code points in my private Jurchen font).
-
-Babelstone Khitan Large scropt PUA fonts:
-
-it is an experimental font containing 1,469 Khitan
-Large Script glyphs, mapped to the PUA at E000..E5BC.
-This font is being developed as I slowly go through
-all Khitan Large Script sources, and will continue to grow.
-The glyphs are not ordered in the font,
-but have been added sequentially as I encounter
-each new character form. In addition, very many of the
-glyphs are variant forms of the same character,
-often trivial variants.
-
-Babelstone Khitan small script fonts:
-
-It is a Unicode font supporting the 470 Khitan Small Script
-characters which were encoded in Unicode version 13.0 (March 2020).
-This font does not support cluster composition, but is intended
-for displaying individual glyphs in horizontal linear layout
-as used in Daniel Kane's The Kitan Language and Script (Brill, 2009).
-This font uses a Chinese (Song/Ming) style of glyphs which is
-not attested in surviving examples of Khitan
-small script text (mostly epitaphs engraved on stone tablets).
-
-It also contains font for for the thirty-six seal script style
-Khitan small script characters which are engraved on the covers
-for the eulogies for Emperor Daozong and Empress Xuanyi
-
-BabelStone Naxi Dongba PUA Fonts:
-
-It is a scan font covering 2,162 glyphs for the
-Naxi Dongba (Naxi Tomba) script. The glyphs are
-derived from Lǐ Líncàn's 李霖灿 Nàxīzú
-xiàngxíng biāo yīn wénzì zìdiǎn 纳西族象形标音文字字典
-[Naxi Pictographic Symbols Dictionary]
-(Kunming: Yunnan minzu chubanshe, 2001)
-[ISBN 7-5367-2126-9]. The 2,120 glyphs at E000..E849 are the main
-entries in the dictionary, and the 42 glyphs at
-F000..F029 are variant glyphs for some of the main entries.
-
-Babelstone Sui (Shuishu) PUA Fonts:
-
-These are a set of scan fonts covering Sui
-(Shuishu 水书) characters listed in various
-printed sources, with characters mapped to
-the Unicode Private Use Area (PUA).
-
-Babelstone Tangut Scan Fonts:
-
-These are a set of fonts covering Tangut glyphs from
-various sources, mapped to the PUA. The fonts were created
-from scanned images of the source glyphs, and the quality
-of the resultant font glyphs is generally quite poor. These fonts
-are not intended for use in typesetting Tangut text, but were
-created in order to facilitate mapping of Tangut characters
-between sources.
-
-BabelStone Tangut Wenhai Font:
-
-BabelStone Tangut Wenhai is a Unicode Tangut font covering
-3,061 of the 6,125 Tangut ideographs encoded in Unicode version 9.0
-(released in June 2016). The glyphs are derived from the
-3,064 head characters in the calligraphic facsimile reproduction of the
-Sea of Writing [Wénhǎi 文海] text in
-Wénhǎi Yánjiū 文海研究 [Study of the Sea of Writing] (Beijing, 1983) by
-Shi Bojin 史金波 et al. This font also includes 442 of the 755
-encoded Tangut components, but these are poorer quality compared with
-the Tangut ideographs, and may be replaced with glyphs derived from the
-Tangut ideographs in the future.
-NB This font does not cover many common Tangut characters,
-and so is not suitable for use in typesetting Tangut text in academic works.
-
-Tangut Yinchuan Font:
-
-Tangut Yinchuan v. 15.102 is a font for the Tangut script
-that supports the full set of Tangut characters defined in
-Unicode version 15.0 (Tangut, Tangut Supplement, Tangut Components code charts).
-It is based on a font named XXZT (西夏字体 in Chinese) that was
-designed by Prof. Jǐng Yǒngshí 景永时 of the
-Beifang Ethnic University (北方民族大学) in Yinchuan. The original
-font was used for typesetting the revised 2nd edition of the
-Tangut-Chinese dictionary Xià-Hàn Zìdiǎn 夏漢字典 (Beijing, 2008)
-by Prof. Li Fanwen
-
-BabelStone Sani Yi PUA Font:
-
-BabelStone Sani Yi is a PUA font covering characters in the Sani Yi script.
-The font was created from scanned images of the hand-written characters in
-Yí-Hàn Jiǎnmíng Cídiǎn 彝汉简明词典 [Concise Yi-Chinese Dictionary]
-(Kunming: Yunnan Minzu Chubanshe, 1984). The quality of the resultant font
-glyphs is generally quite poor. This font is not intended for use in typesetting
-Yi text, but was created in order to facilitate work on the encoding of the
-Sani Yi script in Unicode.
diff --git a/system/ttf-babelstone-cjk/ttf-babelstone-cjk.SlackBuild b/system/ttf-babelstone-cjk/ttf-babelstone-cjk.SlackBuild
index fe2458ce8f..27047ef064 100644
--- a/system/ttf-babelstone-cjk/ttf-babelstone-cjk.SlackBuild
+++ b/system/ttf-babelstone-cjk/ttf-babelstone-cjk.SlackBuild
@@ -25,14 +25,11 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ttf-babelstone-cjk
-VERSION=${VERSION:-1.0}
+VERSION=${VERSION:-1.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
ARCH=noarch
-SRCH=${SRCH:-BabelStoneHan}
-SRCS=${SRCS:-BabelStoneShuishu}
-SRCT=${SRCT:-TangutScanFonts}
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
@@ -50,6 +47,8 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -57,27 +56,16 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-mkdir -pv $TMP/han
-mkdir -pv $TMP/sui
-mkdir -pv $TMP/tangut
mkdir -pv $PKG/usr/share/fonts/TTF
+find $TMP/$PRGNAM-$VERSION/ttf/ -name '*.ttf' -type f -exec install -D -m0644 -v {} -t $PKG/usr/share/fonts/TTF \;
-unzip -d $TMP/han $CWD/$SRCH.zip
-unzip -d $TMP/sui $CWD/$SRCS.zip
-unzip -d $TMP/tangut $CWD/$SRCT.zip
-
-install -D -m0644 -v $CWD/*.ttf -t $PKG/usr/share/fonts/TTF
-install -D -m0644 -v $TMP/han/*.ttf -t $PKG/usr/share/fonts/TTF
-install -D -m0644 -v $TMP/sui/*.ttf -t $PKG/usr/share/fonts/TTF
-install -D -m0644 -v $TMP/tangut/*.ttf -t $PKG/usr/share/fonts/TTF
+if [ "$archaic" = "yes" ]; then
+ find $TMP/$PRGNAM-$VERSION/archaic/ -name '*.ttf' -type f -exec install -D -m0644 -v {} -t $PKG/usr/share/fonts/TTF \;
+fi
mkdir -pv $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/APL.txt > $PKG/usr/doc/$PRGNAM-$VERSION/APL.txt
-cat $CWD/BabelStoneOFL.txt > $PKG/usr/doc/$PRGNAM-$VERSION/babelstoneOFL.txt
+cp -av APL.txt COPYRIGHT IDS.TXT LICENSE OFL.txt readme_fonts $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-cat $CWD/copyright > $PKG/usr/doc/$PRGNAM-$VERSION/copyright
-cat $CWD/copyright2 > $PKG/usr/doc/$PRGNAM-$VERSION/copyright2
-cat $CWD/readme_fonts > $PKG/usr/doc/$PRGNAM-$VERSION/readme_fonts
find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 0644 {} \+
mkdir -p $PKG/install
diff --git a/system/ttf-babelstone-cjk/ttf-babelstone-cjk.info b/system/ttf-babelstone-cjk/ttf-babelstone-cjk.info
index 7b96a36442..59472f863c 100644
--- a/system/ttf-babelstone-cjk/ttf-babelstone-cjk.info
+++ b/system/ttf-babelstone-cjk/ttf-babelstone-cjk.info
@@ -1,54 +1,8 @@
PRGNAM="ttf-babelstone-cjk"
-VERSION="1.0"
-HOMEPAGE="https://www/babelstone.co.uk"
-DOWNLOAD="https://www.babelstone.co.uk/Fonts/Download/BabelStoneHan.zip \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneHanPUA.ttf \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneErjian1.ttf \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneErjian2.ttf \
- https://www.babelstone.co.uk/Fonts/Download/JurchenBerlin.ttf \
- https://www.babelstone.co.uk/Fonts/Download/JurchenTianyige.ttf \
- https://www.babelstone.co.uk/Fonts/Download/JurchenToyoBunko.ttf \
- https://www.babelstone.co.uk/Fonts/Download/JurchenSmall.ttf \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneKhitanLargeGlyphs.ttf \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneKhitanSeals.ttf \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneKhitanSealGlyphs.ttf \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneKhitanSmallLinear.ttf \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneKhitanSmallSeal.ttf \
- https://www.babelstone.co.uk/Fonts/Download/KhitanSmallLinear.ttf \
- https://www.babelstone.co.uk/Fonts/Download/KhitanSmallRotated.ttf \
- https://www.babelstone.co.uk/Fonts/Download/KhitanSmallVertical.ttf \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneNaxiLLC.ttf \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneShuishu.zip \
- https://www.babelstone.co.uk/Fonts/Download/TangutScanFonts.zip \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneTangutWenhai.ttf \
- https://www.babelstone.co.uk/Fonts/Download/TangutYinchuan.ttf \
- https://www.babelstone.co.uk/Fonts/Download/TangutYinchuanInverse.ttf \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneTangutRadicals.ttf \
- https://www.babelstone.co.uk/Fonts/Download/BabelStoneSaniYi.ttf"
-MD5SUM="d7568d28ba67c7a6fc9fc896c4ae9bc2 \
- 6220c97e5da381b53462eef28fa81873 \
- 3dac88173ade093d945ccdae7d1f2fce \
- fa33f8875b032c1d6bb70a203e418dd4 \
- 4baf9e3a67a8ad3c002e348f9d5b6bf7 \
- 6fde3b3dd390c66e79719eba0388a7d4 \
- 1214b2722a2ebf128d8138edc3b0209d \
- a540c2fa397ae2b41191792c6023db80 \
- 5a528a3a699ab870a1ac52ffff5e5978 \
- 0d07928f544c3d873389412d1d04a94b \
- e5764f3d5e0d5540e40190d8ccf4a2cd \
- a1f9cda6991c3b0dc25afe9c98015f63 \
- 7867caf246b3f1f2f1824cd6024a44fa \
- 7ff6a2c4f32ef03343436bf4050feda5 \
- 7a3e2bd8aefdd0bb594f0f0e4b751bb7 \
- 3f80fb811bb14334f5c79f432a065445 \
- b4d2f92f9b7e3ec375b9b2b1260d267c \
- 2e46a52a13f1c37b6d4f0956e8547618 \
- 75dd9971a19f12a1a3f5cef4d0990657 \
- 3d7fb66f97e5fe530504ef8736debb47 \
- e86eae33ab5c7a4cfa3d459cc2ee1b0b \
- 70eaa3c7c9f2cdd31b6ac38b0b514298 \
- b55128a55c2200c995f1cfe60e390867 \
- b3c6baa077e7c3f4b5a75bd55c4ee650"
+VERSION="1.1"
+HOMEPAGE="https://www.babelstone.co.uk"
+DOWNLOAD="https://github.com/lecramyajiv/ttf-babelstone-cjk/archive/1.1/ttf-babelstone-cjk-1.1.tar.gz"
+MD5SUM="866582125ee408025fec30955da86a34"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/system/ttf-xo-fonts/ttf-xo-fonts.SlackBuild b/system/ttf-xo-fonts/ttf-xo-fonts.SlackBuild
index e0a61bc9fb..2754a22c23 100644
--- a/system/ttf-xo-fonts/ttf-xo-fonts.SlackBuild
+++ b/system/ttf-xo-fonts/ttf-xo-fonts.SlackBuild
@@ -46,7 +46,7 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
mkdir -p $PKG/usr/share/fonts/TTF
-unzip -j $CWD/all_fonts_myoffice.zip *.ttf -x "*__*" -d $PKG/usr/share/fonts/TTF
+unzip -j $CWD/MyOffice_XO_Fonts_1.1.zip *.ttf -x "*__*" -d $PKG/usr/share/fonts/TTF
cd $PKG/usr/share/fonts/TTF
diff --git a/system/ttf-xo-fonts/ttf-xo-fonts.info b/system/ttf-xo-fonts/ttf-xo-fonts.info
index 7182f99ce6..398a60f86d 100644
--- a/system/ttf-xo-fonts/ttf-xo-fonts.info
+++ b/system/ttf-xo-fonts/ttf-xo-fonts.info
@@ -1,7 +1,7 @@
PRGNAM="ttf-xo-fonts"
VERSION="2022"
HOMEPAGE="https://myoffice.ru/products/fonts/"
-DOWNLOAD="https://myoffice.ru/files/fonts/all_fonts_myoffice.zip"
+DOWNLOAD="https://myoffice.ru/files/fonts/MyOffice_XO_Fonts_1.1.zip"
MD5SUM="076c0cd2520074b3397bf4dbb2d02f3a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/system/usermin/usermin.SlackBuild b/system/usermin/usermin.SlackBuild
index 3bd8f88367..77263f8051 100644
--- a/system/usermin/usermin.SlackBuild
+++ b/system/usermin/usermin.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=usermin
-VERSION=${VERSION:-2.005}
+VERSION=${VERSION:-2.010}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/system/usermin/usermin.info b/system/usermin/usermin.info
index 3757f0c8b6..1430cd7c8f 100644
--- a/system/usermin/usermin.info
+++ b/system/usermin/usermin.info
@@ -1,8 +1,8 @@
PRGNAM="usermin"
-VERSION="2.005"
+VERSION="2.010"
HOMEPAGE="http://webmin.com/usermin.html"
-DOWNLOAD="http://jaist.dl.sourceforge.net/project/webadmin/usermin/2.005/usermin-2.005.tar.gz"
-MD5SUM="cee4af2a4186dfc1e8b1a2ce7756a9de"
+DOWNLOAD="http://jaist.dl.sourceforge.net/project/webadmin/usermin/2.010/usermin-2.010.tar.gz"
+MD5SUM="912789fe1baa26a86b5447ddae1aa243"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="webmin"
diff --git a/system/webmin/webmin.SlackBuild b/system/webmin/webmin.SlackBuild
index da8e6f77ad..526f016770 100644
--- a/system/webmin/webmin.SlackBuild
+++ b/system/webmin/webmin.SlackBuild
@@ -3,6 +3,7 @@
# Slackware build script for Webmin http://www.webmin.com
# Copyright 2006-2019 David Somero (dsomero@hotmail.com)
+# Copyright 2024 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=webmin
-VERSION=${VERSION:-2.105}
+VERSION=${VERSION:-2.111}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/system/webmin/webmin.info b/system/webmin/webmin.info
index 79ff5a17e7..deddb65df2 100644
--- a/system/webmin/webmin.info
+++ b/system/webmin/webmin.info
@@ -1,10 +1,10 @@
PRGNAM="webmin"
-VERSION="2.105"
+VERSION="2.111"
HOMEPAGE="https://www.webmin.com/"
-DOWNLOAD="https://downloads.sf.net/project/webadmin/webmin/2.105/webmin-2.105.tar.gz"
-MD5SUM="b518ad1a5750fd92647613d707478403"
+DOWNLOAD="https://downloads.sf.net/project/webadmin/webmin/2.111/webmin-2.111.tar.gz"
+MD5SUM="347b08feb6a07965d928c530e51bc427"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="zulu-openjdk8"
-MAINTAINER="David Somero"
-EMAIL="dsomero@hotmail.com"
+MAINTAINER="Willy Sudiarto Raharjo"
+EMAIL="willysr@slackbuilds.org"
diff --git a/system/xarchiver/xarchiver.SlackBuild b/system/xarchiver/xarchiver.SlackBuild
index 6cae31e1cb..700f950d0e 100644
--- a/system/xarchiver/xarchiver.SlackBuild
+++ b/system/xarchiver/xarchiver.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for Xarchiver
# Copyright 2007, 2008 Frank Caraballo <fecaraballo{at}gmail{dot}com>
-# Copyright 2019 Edward W. Koenig <kingbeowulf{at}gmail{dot}com>
+# Copyright 2019 Edward W. Koenig, Vancouver, WA USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=xarchiver
-VERSION=${VERSION:-0.5.4.21}
+VERSION=${VERSION:-0.5.4.23}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/system/xarchiver/xarchiver.info b/system/xarchiver/xarchiver.info
index f99069d9e9..dfb4c396a5 100644
--- a/system/xarchiver/xarchiver.info
+++ b/system/xarchiver/xarchiver.info
@@ -1,8 +1,8 @@
PRGNAM="xarchiver"
-VERSION="0.5.4.21"
+VERSION="0.5.4.23"
HOMEPAGE="https://github.com/ib/xarchiver"
-DOWNLOAD="https://github.com/ib/xarchiver/archive/0.5.4.21/xarchiver-0.5.4.21.tar.gz"
-MD5SUM="94621a793a45521ef55702e940442552"
+DOWNLOAD="https://github.com/ib/xarchiver/archive/0.5.4.23/xarchiver-0.5.4.23.tar.gz"
+MD5SUM="bfdace2b113417e1bc77ef304280d103"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""