From 686ca232448aa2a92af756dab8a7c34cbd33e5aa Mon Sep 17 00:00:00 2001 From: nezu <29180158+dumbasPL@users.noreply.github.com> Date: Tue, 14 Jan 2025 22:33:46 +0100 Subject: [PATCH 1/4] update to 9.0sp1 --- .SRCINFO | 14 +++++++------- PKGBUILD | 13 +++++++------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 45f8e56..841a7c9 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = ida-pro-patched pkgdesc = IDA - The Interactive Disassembler (Patched) - pkgver = 9.0.240925 - pkgrel = 3 + pkgver = 9.0.20241216 + pkgrel = 1 url = https://hex-rays.com/ida-pro/ arch = x86_64 license = custom @@ -9,13 +9,13 @@ pkgbase = ida-pro-patched depends = python>=3 depends = python<4 options = !strip - source = ida-pro-9.0.240925.run::https://vaclive.party/software/ida-pro/releases/download/9.0.240925/ida-pro_90_x64linux.run - source = ida-pro-9.0.240925.run.sig::https://vaclive.party/software/ida-pro/releases/download/9.0.240925/ida-pro_90_x64linux.run.sig - source = patch.py::https://vaclive.party/software/ida-pro/releases/download/9.0.240925/keygen2.py - source = patch.py.sig::https://vaclive.party/software/ida-pro/releases/download/9.0.240925/keygen2.py.sig + source = ida-pro-9.0.20241216.run::https://vaclive.party/software/ida-pro/releases/download/9.0.20241216/ida-pro_90sp1_x64linux.run + source = ida-pro-9.0.20241216.run.sig::https://vaclive.party/software/ida-pro/releases/download/9.0.20241216/ida-pro_90sp1_x64linux.run.sig + source = patch.py::https://vaclive.party/software/ida-pro/releases/download/9.0.20241216/keygen2.py + source = patch.py.sig::https://vaclive.party/software/ida-pro/releases/download/9.0.20241216/keygen2.py.sig source = ida-pro.desktop validpgpkeys = 09BE40243217978201A0440E101BA3F4C612AA41 - sha256sums = 159cf8983a0e7b199d6efab5af42eca31a288e7ef2ec44eba6336de4acb8107a + sha256sums = c0e2d5f410f8a4a3745bb219d821d690ce1768a5ce0a25e86e0c30c1fe599c71 sha256sums = SKIP sha256sums = da41a74453b5e4b6816c5ed1ad66c8c7a19684c48d23e083bda9d5149966616e sha256sums = SKIP diff --git a/PKGBUILD b/PKGBUILD index 24caa76..202ed19 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,8 +1,8 @@ # Maintainer: nezu@nezu.cc pkgname=ida-pro-patched _pkgname=ida-pro -pkgver=9.0.240925 -pkgrel=3 +pkgver=9.0.20241216 +pkgrel=1 pkgdesc="IDA - The Interactive Disassembler (Patched)" arch=('x86_64') url="https://hex-rays.com/ida-pro/" @@ -13,13 +13,13 @@ options=('!strip') _name="$_pkgname-$pkgver" _release_url="https://vaclive.party/software/$_pkgname/releases/download/$pkgver" source=( - "$_name.run::$_release_url/ida-pro_90_x64linux.run" - "$_name.run.sig::$_release_url/ida-pro_90_x64linux.run.sig" + "$_name.run::$_release_url/ida-pro_90sp1_x64linux.run" + "$_name.run.sig::$_release_url/ida-pro_90sp1_x64linux.run.sig" "patch.py::$_release_url/keygen2.py" "patch.py.sig::$_release_url/keygen2.py.sig" "$_pkgname.desktop" ) -sha256sums=('159cf8983a0e7b199d6efab5af42eca31a288e7ef2ec44eba6336de4acb8107a' +sha256sums=('c0e2d5f410f8a4a3745bb219d821d690ce1768a5ce0a25e86e0c30c1fe599c71' 'SKIP' 'da41a74453b5e4b6816c5ed1ad66c8c7a19684c48d23e083bda9d5149966616e' 'SKIP' @@ -30,7 +30,8 @@ prepare() { mkdir -p "$_name/tmp" cp "$srcdir/$_name.run" "$_name" chmod +x "$_name/$_name.run" - fakechroot chroot "$srcdir/$_name" "/$_name.run" --mode unattended --unattendedmodeui none --prefix /opt/$_name + mkdir -p "$srcdir/$_name/$HOME/.local/share/applications" + fakechroot chroot "$srcdir/$_name" "/$_name.run" --mode unattended --prefix /opt/$_name cd "$_name/opt/$_name" python3 "$srcdir/patch.py" mv -v libida32.so.patched libida32.so From 464ed17c6a29ee33e76f34bb0d128e7c9f5b2e10 Mon Sep 17 00:00:00 2001 From: nezu <29180158+dumbasPL@users.noreply.github.com> Date: Thu, 20 Mar 2025 13:22:56 +0100 Subject: [PATCH 2/4] update --- .SRCINFO | 27 +++++++++++++++++---------- PKGBUILD | 33 +++++++++++++++++++++++---------- 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 841a7c9..8870c41 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,24 +1,31 @@ pkgbase = ida-pro-patched - pkgdesc = IDA - The Interactive Disassembler (Patched) - pkgver = 9.0.20241216 + pkgdesc = Hex-Rays IDA Pro + pkgver = 9.1.250226 pkgrel = 1 url = https://hex-rays.com/ida-pro/ arch = x86_64 license = custom makedepends = fakechroot - depends = python>=3 - depends = python<4 + depends = libgl + depends = libx11 + depends = libxext + depends = libxrender + depends = glib2 + depends = qt5-base + depends = python-rpyc options = !strip - source = ida-pro-9.0.20241216.run::https://vaclive.party/software/ida-pro/releases/download/9.0.20241216/ida-pro_90sp1_x64linux.run - source = ida-pro-9.0.20241216.run.sig::https://vaclive.party/software/ida-pro/releases/download/9.0.20241216/ida-pro_90sp1_x64linux.run.sig - source = patch.py::https://vaclive.party/software/ida-pro/releases/download/9.0.20241216/keygen2.py - source = patch.py.sig::https://vaclive.party/software/ida-pro/releases/download/9.0.20241216/keygen2.py.sig + source = ida-pro-9.1.250226.run::https://vaclive.party/software/ida-pro/releases/download/9.1.250226/ida-pro_91_x64linux.run + source = ida-pro-9.1.250226.run.sig::https://vaclive.party/software/ida-pro/releases/download/9.1.250226/ida-pro_91_x64linux.run.sig + source = patch.py::https://vaclive.party/software/ida-pro/releases/download/9.1.250226/keygen.py + source = patch.py.sig::https://vaclive.party/software/ida-pro/releases/download/9.1.250226/keygen.py.sig source = ida-pro.desktop + source = ida-pro-teams.desktop validpgpkeys = 09BE40243217978201A0440E101BA3F4C612AA41 - sha256sums = c0e2d5f410f8a4a3745bb219d821d690ce1768a5ce0a25e86e0c30c1fe599c71 + sha256sums = 8ff08022be3a0ef693a9e3ea01010d1356b26cfdcbbe7fdd68d01b3c9700f9e2 sha256sums = SKIP - sha256sums = da41a74453b5e4b6816c5ed1ad66c8c7a19684c48d23e083bda9d5149966616e + sha256sums = f1459fd512ac44d589f020ba71e0de20ebf8798df26f167db6fe4c087c7cd0d6 sha256sums = SKIP sha256sums = 445e0498d24676cc81c1f9b81a30241eabd480852561f398e520e6e23d4b97bd + sha256sums = b8a7ca4f69428c0191733167905f89c34d73d14778f62aea9b3e2c758792308f pkgname = ida-pro-patched diff --git a/PKGBUILD b/PKGBUILD index 202ed19..c14e660 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,29 +1,39 @@ # Maintainer: nezu@nezu.cc pkgname=ida-pro-patched _pkgname=ida-pro -pkgver=9.0.20241216 +pkgver=9.1.250226 pkgrel=1 -pkgdesc="IDA - The Interactive Disassembler (Patched)" +pkgdesc="Hex-Rays IDA Pro" arch=('x86_64') url="https://hex-rays.com/ida-pro/" license=('custom') makedepends=('fakechroot') -depends=('python>=3' 'python<4') +depends=( + 'libgl' + 'libx11' + 'libxext' + 'libxrender' + 'glib2' + 'qt5-base' + 'python-rpyc' +) options=('!strip') _name="$_pkgname-$pkgver" _release_url="https://vaclive.party/software/$_pkgname/releases/download/$pkgver" source=( - "$_name.run::$_release_url/ida-pro_90sp1_x64linux.run" - "$_name.run.sig::$_release_url/ida-pro_90sp1_x64linux.run.sig" - "patch.py::$_release_url/keygen2.py" - "patch.py.sig::$_release_url/keygen2.py.sig" + "$_name.run::$_release_url/ida-pro_91_x64linux.run" + "$_name.run.sig::$_release_url/ida-pro_91_x64linux.run.sig" + "patch.py::$_release_url/keygen.py" + "patch.py.sig::$_release_url/keygen.py.sig" "$_pkgname.desktop" + "$_pkgname-teams.desktop" ) -sha256sums=('c0e2d5f410f8a4a3745bb219d821d690ce1768a5ce0a25e86e0c30c1fe599c71' +sha256sums=('8ff08022be3a0ef693a9e3ea01010d1356b26cfdcbbe7fdd68d01b3c9700f9e2' 'SKIP' - 'da41a74453b5e4b6816c5ed1ad66c8c7a19684c48d23e083bda9d5149966616e' + 'f1459fd512ac44d589f020ba71e0de20ebf8798df26f167db6fe4c087c7cd0d6' 'SKIP' - '445e0498d24676cc81c1f9b81a30241eabd480852561f398e520e6e23d4b97bd') + '445e0498d24676cc81c1f9b81a30241eabd480852561f398e520e6e23d4b97bd' + 'b8a7ca4f69428c0191733167905f89c34d73d14778f62aea9b3e2c758792308f') validpgpkeys=('09BE40243217978201A0440E101BA3F4C612AA41') # nezu prepare() { @@ -45,7 +55,10 @@ package() { install -dm755 "$pkgdir/usr/bin" ln -s "/opt/$_pkgname/ida" "$pkgdir/usr/bin/ida" + ln -s "/opt/$_pkgname/hvui" "$pkgdir/usr/bin/hvui" install -Dm644 "$srcdir/$_name/opt/$_name/appico.png" "$pkgdir/usr/share/pixmaps/$_pkgname.png" + install -Dm644 "$srcdir/$_name/opt/$_name/hvui.png" "$pkgdir/usr/share/pixmaps/$_pkgname-teams.png" install -Dm644 "$srcdir/$_pkgname.desktop" "$pkgdir/usr/share/applications/$_pkgname.desktop" + install -Dm644 "$srcdir/$_pkgname-teams.desktop" "$pkgdir/usr/share/applications/$_pkgname-teams.desktop" } From 2751e614594d2d5a4439be22804cb0645c946688 Mon Sep 17 00:00:00 2001 From: nezu <29180158+dumbasPL@users.noreply.github.com> Date: Thu, 20 Mar 2025 13:31:01 +0100 Subject: [PATCH 3/4] add ida teams desktop file --- .gitignore | 2 +- ida-pro-teams.desktop | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 ida-pro-teams.desktop diff --git a/.gitignore b/.gitignore index 9eeb704..39467d7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ !.gitignore !PKGBUILD !.SRCINFO -!ida-pro.desktop \ No newline at end of file +!*.desktop diff --git a/ida-pro-teams.desktop b/ida-pro-teams.desktop new file mode 100644 index 0000000..8dc6e56 --- /dev/null +++ b/ida-pro-teams.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=IDA Teams +Comment=Teams for The Interactive Disassembler +Exec=/usr/bin/hvui %f +Icon=ida-pro-teams +Terminal=false +Type=Application +Categories=Development From c1e3cedf48476f1d63b49e772139e37e359880ce Mon Sep 17 00:00:00 2001 From: nezu <29180158+dumbasPL@users.noreply.github.com> Date: Mon, 5 May 2025 12:56:46 +0200 Subject: [PATCH 4/4] update desktop files, add database mime type, add qwingraph --- .SRCINFO | 16 +++-- .gitignore | 1 + PKGBUILD | 81 ++++++++++++++-------- ida-pro-teams.desktop => com.hex-rays.hvui.desktop | 1 + ida-pro.desktop => com.hex-rays.ida.desktop | 2 + ida-pro.xml | 17 +++++ qwingraph.desktop | 10 +++ 7 files changed, 95 insertions(+), 33 deletions(-) rename ida-pro-teams.desktop => com.hex-rays.hvui.desktop (84%) rename ida-pro.desktop => com.hex-rays.ida.desktop (56%) create mode 100644 ida-pro.xml create mode 100644 qwingraph.desktop diff --git a/.SRCINFO b/.SRCINFO index 8870c41..2ffb9c8 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = ida-pro-patched pkgdesc = Hex-Rays IDA Pro pkgver = 9.1.250226 - pkgrel = 1 + pkgrel = 2 url = https://hex-rays.com/ida-pro/ arch = x86_64 license = custom @@ -13,19 +13,25 @@ pkgbase = ida-pro-patched depends = glib2 depends = qt5-base depends = python-rpyc + provides = ida-pro + conflicts = ida-pro options = !strip source = ida-pro-9.1.250226.run::https://vaclive.party/software/ida-pro/releases/download/9.1.250226/ida-pro_91_x64linux.run source = ida-pro-9.1.250226.run.sig::https://vaclive.party/software/ida-pro/releases/download/9.1.250226/ida-pro_91_x64linux.run.sig source = patch.py::https://vaclive.party/software/ida-pro/releases/download/9.1.250226/keygen.py source = patch.py.sig::https://vaclive.party/software/ida-pro/releases/download/9.1.250226/keygen.py.sig - source = ida-pro.desktop - source = ida-pro-teams.desktop + source = com.hex-rays.ida.desktop + source = com.hex-rays.hvui.desktop + source = qwingraph.desktop + source = ida-pro.xml validpgpkeys = 09BE40243217978201A0440E101BA3F4C612AA41 sha256sums = 8ff08022be3a0ef693a9e3ea01010d1356b26cfdcbbe7fdd68d01b3c9700f9e2 sha256sums = SKIP sha256sums = f1459fd512ac44d589f020ba71e0de20ebf8798df26f167db6fe4c087c7cd0d6 sha256sums = SKIP - sha256sums = 445e0498d24676cc81c1f9b81a30241eabd480852561f398e520e6e23d4b97bd - sha256sums = b8a7ca4f69428c0191733167905f89c34d73d14778f62aea9b3e2c758792308f + sha256sums = 9490296e773cda6b03d4bbfbd1e9a398756e074f3574cffdfb31e5d40b2f956d + sha256sums = 3010186d85f0ffc12da572be8688e3cfb5fb9b86ac7c4ec7284c4c9a17c17c14 + sha256sums = 1e4b2ec71111b102ecbfa78ec8d7f03506d5726a19d087b59c643572f4e50af6 + sha256sums = 58bb9f10b90bc6a7368629a5577852b4f21f8f44e9b2101b24b7f4fc87dff529 pkgname = ida-pro-patched diff --git a/.gitignore b/.gitignore index 39467d7..b3cd2aa 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ !PKGBUILD !.SRCINFO !*.desktop +!*.xml diff --git a/PKGBUILD b/PKGBUILD index c14e660..022e1ce 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -2,11 +2,12 @@ pkgname=ida-pro-patched _pkgname=ida-pro pkgver=9.1.250226 -pkgrel=1 +pkgrel=2 pkgdesc="Hex-Rays IDA Pro" arch=('x86_64') url="https://hex-rays.com/ida-pro/" license=('custom') + makedepends=('fakechroot') depends=( 'libgl' @@ -17,48 +18,72 @@ depends=( 'qt5-base' 'python-rpyc' ) +provides=("$_pkgname") +conflicts=("$_pkgname") + options=('!strip') _name="$_pkgname-$pkgver" _release_url="https://vaclive.party/software/$_pkgname/releases/download/$pkgver" source=( - "$_name.run::$_release_url/ida-pro_91_x64linux.run" - "$_name.run.sig::$_release_url/ida-pro_91_x64linux.run.sig" - "patch.py::$_release_url/keygen.py" - "patch.py.sig::$_release_url/keygen.py.sig" - "$_pkgname.desktop" - "$_pkgname-teams.desktop" + "$_name.run::$_release_url/ida-pro_91_x64linux.run" + "$_name.run.sig::$_release_url/ida-pro_91_x64linux.run.sig" + "patch.py::$_release_url/keygen.py" + "patch.py.sig::$_release_url/keygen.py.sig" + "com.hex-rays.ida.desktop" + "com.hex-rays.hvui.desktop" + "qwingraph.desktop" + "ida-pro.xml" ) + sha256sums=('8ff08022be3a0ef693a9e3ea01010d1356b26cfdcbbe7fdd68d01b3c9700f9e2' 'SKIP' 'f1459fd512ac44d589f020ba71e0de20ebf8798df26f167db6fe4c087c7cd0d6' 'SKIP' - '445e0498d24676cc81c1f9b81a30241eabd480852561f398e520e6e23d4b97bd' - 'b8a7ca4f69428c0191733167905f89c34d73d14778f62aea9b3e2c758792308f') + '9490296e773cda6b03d4bbfbd1e9a398756e074f3574cffdfb31e5d40b2f956d' + '3010186d85f0ffc12da572be8688e3cfb5fb9b86ac7c4ec7284c4c9a17c17c14' + '1e4b2ec71111b102ecbfa78ec8d7f03506d5726a19d087b59c643572f4e50af6' + '58bb9f10b90bc6a7368629a5577852b4f21f8f44e9b2101b24b7f4fc87dff529') validpgpkeys=('09BE40243217978201A0440E101BA3F4C612AA41') # nezu prepare() { - mkdir -p "$_name/tmp" - cp "$srcdir/$_name.run" "$_name" - chmod +x "$_name/$_name.run" - mkdir -p "$srcdir/$_name/$HOME/.local/share/applications" - fakechroot chroot "$srcdir/$_name" "/$_name.run" --mode unattended --prefix /opt/$_name - cd "$_name/opt/$_name" - python3 "$srcdir/patch.py" - mv -v libida32.so.patched libida32.so - mv -v libida.so.patched libida.so - rm uninstall* Uninstall* + mkdir -p "$_name/tmp" + + # chroot is needed to prevent the installer from creating a single file outside of prefix + # have to copy the installer due to chroot + cp "$srcdir"/$_name.run "$_name/" + chmod +x "$_name/$_name.run" + # IDA Pro 9.0 SP1 (and newer) installer now tries to copy the .desktop files to $HOME even if you specify a prefix. Very annoying. + mkdir -p "$srcdir"/$_name/"$HOME"/.local/share/applications + fakechroot chroot "$srcdir"/$_name "/$_name.run" --mode unattended --prefix "/opt/$_name" + rm "$_name/$_name.run" + + cd "$_name/opt/$_name" + python3 "$srcdir"/patch.py + mv -v libida32.so.patched libida32.so + mv -v libida.so.patched libida.so + rm uninstall* Uninstall* } package() { - install -dm755 "$pkgdir/opt/$_pkgname" - cp --preserve=mode,timestamps -r "$srcdir/$_name/opt/$_name/"* "$pkgdir/opt/$_pkgname" + install -dm755 "$pkgdir"/opt/$_pkgname + install -dm755 "$pkgdir"/usr/bin + install -dm755 "$pkgdir"/usr/share/{icons,applications,licenses/$pkgname} - install -dm755 "$pkgdir/usr/bin" - ln -s "/opt/$_pkgname/ida" "$pkgdir/usr/bin/ida" - ln -s "/opt/$_pkgname/hvui" "$pkgdir/usr/bin/hvui" + cp --preserve=mode,timestamps -r "$srcdir"/$_name/opt/$_name/* "$pkgdir"/opt/$_pkgname/ - install -Dm644 "$srcdir/$_name/opt/$_name/appico.png" "$pkgdir/usr/share/pixmaps/$_pkgname.png" - install -Dm644 "$srcdir/$_name/opt/$_name/hvui.png" "$pkgdir/usr/share/pixmaps/$_pkgname-teams.png" - install -Dm644 "$srcdir/$_pkgname.desktop" "$pkgdir/usr/share/applications/$_pkgname.desktop" - install -Dm644 "$srcdir/$_pkgname-teams.desktop" "$pkgdir/usr/share/applications/$_pkgname-teams.desktop" + ln -s "/opt/$_pkgname/ida" "$pkgdir"/usr/bin/ida + ln -s "/opt/$_pkgname/hvui" "$pkgdir"/usr/bin/hvui + ln -s "/opt/$_pkgname/qwingraph" "$pkgdir"/usr/bin/qwingraph + ln -s "/opt/$_pkgname/idapyswitch" "$pkgdir"/usr/bin/idapyswitch + + ln -s "/opt/$_pkgname/appico.png" "$pkgdir"/usr/share/icons/$_pkgname.png + ln -s "/opt/$_pkgname/hvui.png" "$pkgdir"/usr/share/icons/$_pkgname-teams.png + + ln -s /opt/$_pkgname/license.txt "$pkgdir"/usr/share/licenses/$pkgname/LICENSE + + install -Dm644 "$_pkgname.xml" "$pkgdir"/usr/share/mime/packages/$_pkgname.xml + + install -Dm644 "$srcdir"/com.hex-rays.ida.desktop "$pkgdir"/usr/share/applications/com.hex-rays.ida.desktop + install -Dm644 "$srcdir"/com.hex-rays.hvui.desktop "$pkgdir"/usr/share/applications/com.hex-rays.hvui.desktop + install -Dm644 "$srcdir"/qwingraph.desktop "$pkgdir"/usr/share/applications/qwingraph.desktop } diff --git a/ida-pro-teams.desktop b/com.hex-rays.hvui.desktop similarity index 84% rename from ida-pro-teams.desktop rename to com.hex-rays.hvui.desktop index 8dc6e56..3985ac5 100644 --- a/ida-pro-teams.desktop +++ b/com.hex-rays.hvui.desktop @@ -2,6 +2,7 @@ Name=IDA Teams Comment=Teams for The Interactive Disassembler Exec=/usr/bin/hvui %f +StartupWMClass=com.hex-rays.hvui Icon=ida-pro-teams Terminal=false Type=Application diff --git a/ida-pro.desktop b/com.hex-rays.ida.desktop similarity index 56% rename from ida-pro.desktop rename to com.hex-rays.ida.desktop index 29b77de..709b6b5 100644 --- a/ida-pro.desktop +++ b/com.hex-rays.ida.desktop @@ -2,7 +2,9 @@ Name=IDA Pro Comment=The Interactive Disassembler Exec=/usr/bin/ida %f +StartupWMClass=com.hex-rays.ida Icon=ida-pro +MimeType=application/vnd.hex-rays.ida.database64;application/vnd.hex-rays.ida.database32 Terminal=false Type=Application Categories=Development diff --git a/ida-pro.xml b/ida-pro.xml new file mode 100644 index 0000000..8101a3e --- /dev/null +++ b/ida-pro.xml @@ -0,0 +1,17 @@ + + + + IDA (64-bit) Database + + + + + IDA Database + + + + + WinGraph File + + + diff --git a/qwingraph.desktop b/qwingraph.desktop new file mode 100644 index 0000000..8f800c5 --- /dev/null +++ b/qwingraph.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=WinGraph32 (IDA) +Comment=External program to display IDA graphs +Exec=/usr/bin/qwingraph %f +StartupWMClass=qwingraph +MimeType=application/vnd.hex-rays.ida.wingraph +NoDisplay=true +Terminal=false +Type=Application +Categories=Development