From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Webber Subject: Re: [PATCH] add kobodeluxe Date: Mon, 17 Oct 2016 22:49:58 -0500 Message-ID: References: <87k2d7anh9.fsf@dustycloud.org> <87wph7afv5.fsf@openmailbox.org> <87funv9i5n.fsf@dustycloud.org> <87funvlygc.fsf@openmailbox.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a113f30342ac23d053f1b96ea Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:40941) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bwLPi-0004N8-HA for guix-devel@gnu.org; Mon, 17 Oct 2016 23:50:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bwLPd-0005cL-3S for guix-devel@gnu.org; Mon, 17 Oct 2016 23:50:06 -0400 Received: from mail-io0-x241.google.com ([2607:f8b0:4001:c06::241]:35220) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1bwLPc-0005bu-Op for guix-devel@gnu.org; Mon, 17 Oct 2016 23:50:01 -0400 Received: by mail-io0-x241.google.com with SMTP id p26so11965593ioo.2 for ; Mon, 17 Oct 2016 20:50:00 -0700 (PDT) In-Reply-To: <87funvlygc.fsf@openmailbox.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Kei Kebreau Cc: guix-devel@gnu.org --001a113f30342ac23d053f1b96ea Content-Type: multipart/alternative; boundary=001a113f30342ac237053f1b96e8 --001a113f30342ac237053f1b96e8 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Thank you both for the warm welcome and feedback :) I've attached a patch that builds upon Chris's changes. Changed: spelling patch - removed description - "game" now included in description patch names - use dashes consistently (thank you Chris) Unchanged: whitespace warnings - these are due to an intersection of the git patch format and the tabular convention within Kobodeluxe's code user profile - postponed until someone with security expertise can modify Patches originate from: https://packages.debian.org/sid/games/kobodeluxe (parent page) http://http.debian.net/debian/pool/main/k/kobodeluxe/kobodeluxe_0.5.1-8.deb= ian.tar.xz (direct link) If any future changes are necessary, please let me know :) On Mon, Oct 17, 2016 at 11:41 AM, Kei Kebreau wrote: > Christopher Allan Webber writes: > > >> On Sun, Oct 16, 2016 at 9:06 PM, Kei Kebreau > wrote: > >>> When I applied the patch, git complained about trailing whitespace; a > >>> trivial fix. > > > > Those whitespace "errors" were in the original patches we borrowed from > > Debian, and weren't on any of the lines that patch in new code. > > Nonetheless the patches seem to apply fine without them, so here's an > > adjusted patch that fixes that. (It also fixes the commit line, since = I > > forgot to change the underscores to hyphens there in my last patch!) > > > > - Chris > > > > From 62bf271a6907bd5b0ec73662bc3f92c64aafa229 Mon Sep 17 00:00:00 2001 > > From: Stephen Webber > > Date: Sun, 16 Oct 2016 15:04:35 -0500 > > Subject: [PATCH] gnu: Add kobodeluxe. > > > > * gnu/packages/games.scm (kobodeluxe): New variable. > > * gnu/packages/patches/kobodeluxe-paths.patch: New file. > > * gnu/packages/patches/kobodeluxe-spelling.patch: New file. > > * gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch: New file. > > * gnu/packages/patches/kobodeluxe-const-charp-conversion.patch: New > file. > > * gnu/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch: New > file. > > * gnu/packages/patches/kobodeluxe-midicon-segmentation-fault.patch: New > file. > > * gnu/packages/patches/kobodeluxe-graphics-window-signed-char.patch: > New file. > > * gnu/local.mk (dist_patch_DATA): Register it. > > --- > > gnu/local.mk | 7 +++ > > gnu/packages/games.scm | 34 +++++++++++ > > .../kobodeluxe-const-charp-conversion.patch | 17 ++++++ > > .../patches/kobodeluxe-enemies-pipe-decl.patch | 67 > ++++++++++++++++++++++ > > .../kobodeluxe-graphics-window-signed-char.patch | 38 ++++++++++++ > > .../kobodeluxe-manpage-minus-not-hyphen.patch | 15 +++++ > > .../kobodeluxe-midicon-segmentation-fault.patch | 24 ++++++++ > > gnu/packages/patches/kobodeluxe-paths.patch | 40 +++++++++++++ > > gnu/packages/patches/kobodeluxe-spelling.patch | 25 ++++++++ > > 9 files changed, 267 insertions(+) > > create mode 100644 gnu/packages/patches/kobodeluxe-const-charp- > conversion.patch > > create mode 100644 gnu/packages/patches/kobodeluxe-enemies-pipe-decl. > patch > > create mode 100644 gnu/packages/patches/kobodeluxe-graphics-window- > signed-char.patch > > create mode 100644 gnu/packages/patches/kobodeluxe-manpage-minus-not- > hyphen.patch > > create mode 100644 gnu/packages/patches/kobodeluxe-midicon- > segmentation-fault.patch > > create mode 100644 gnu/packages/patches/kobodeluxe-paths.patch > > create mode 100644 gnu/packages/patches/kobodeluxe-spelling.patch > > > > diff --git a/gnu/local.mk b/gnu/local.mk > > index 19dd9ae..a358939 100644 > > --- a/gnu/local.mk > > +++ b/gnu/local.mk > > @@ -621,6 +621,13 @@ dist_patch_DATA =3D > \ > > %D%/packages/patches/jq-CVE-2015-8863.patch \ > > %D%/packages/patches/khmer-use-libraries.patch \ > > %D%/packages/patches/kmod-module-directory.patch \ > > + %D%/packages/patches/kobodeluxe-paths.patch \ > > + %D%/packages/patches/kobodeluxe-spelling.patch \ > > + %D%/packages/patches/kobodeluxe-enemies-pipe-decl.patch \ > > + %D%/packages/patches/kobodeluxe-const-charp-conversion.patch \ > > + %D%/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch \ > > + %D%/packages/patches/kobodeluxe-midicon-segmentation-fault.patch \ > > + %D%/packages/patches/kobodeluxe-graphics-window-signed-char.patch \ > > %D%/packages/patches/laby-make-install.patch \ > > %D%/packages/patches/ldc-disable-tests.patch \ > > %D%/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \ > > diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm > > index 2bb53e0..7c43f84 100644 > > --- a/gnu/packages/games.scm > > +++ b/gnu/packages/games.scm > > @@ -23,6 +23,7 @@ > > ;;; Copyright =C2=A9 2016 Alex Griffin > > ;;; Copyright =C2=A9 2016 Efraim Flashner > > ;;; Copyright =C2=A9 2016 Jan Nieuwenhuizen > > +;;; Copyright =C2=A9 2016 Steve Webber > > ;;; > > ;;; This file is part of GNU Guix. > > ;;; > > @@ -2994,3 +2995,36 @@ symbols, the game needs graphics to render the > non-euclidean world.") > > license:public-domain ; src/direntx.* > > license:zlib ; src/savepng.* > > license:gpl2+)))) ; remaining files > > + > > +(define-public kobodeluxe > > + (package > > + (name "kobodeluxe") > > + (version "0.5.1") > > + (source (origin > > + (method url-fetch) > > + (uri (string-append "http://olofson.net/kobodl/ > download/KoboDeluxe-" > > + version ".tar.bz2")) > > + (sha256 > > + (base32 > > + "0b2wvdpnmaibsy419c16dfwj5kvd3p > ccby2aaqvm964x74592yqg")) > > + (patches (search-patches > > + "kobodeluxe-const-charp-conversion.patch" > > + "kobodeluxe-enemies-pipe-decl.patch" > > + "kobodeluxe-graphics-window-signed-char.patch" > > + "kobodeluxe-manpage-minus-not-hyphen.patch" > > + "kobodeluxe-midicon-segmentation-fault.patch" > > + "kobodeluxe-paths.patch" > > + "kobodeluxe-spelling.patch")))) > > + (build-system gnu-build-system) > > + (arguments > > + '(#:configure-flags > > + (list (string-append "CPPFLAGS=3D-I" > > + (assoc-ref %build-inputs "sdl-union") > > + "/include/SDL")))) > > + (inputs `(("sdl-union" ,(sdl-union (list sdl sdl-image))))) > > + (synopsis "Shooter with space station destruction") > > + (description > > + "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo for > Un*x > > +systems with X11.") > > + (home-page "http://olofson.net/kobodl/") > > + (license license:gpl2+))) > > diff --git a/gnu/packages/patches/kobodeluxe-const-charp-conversion.pat= ch > b/gnu/packages/patches/kobodeluxe-const-charp-conversion.patch > > new file mode 100644 > > index 0000000..8386cf8 > > --- /dev/null > > +++ b/gnu/packages/patches/kobodeluxe-const-charp-conversion.patch > > @@ -0,0 +1,17 @@ > > +Description: Avoid compilation error with gcc-4.4. > > + "const char* -> char*" conversion is fatal in that version > > +Origin: vendor, https://bugs.launchpad.net/ubuntu/+source/kobodeluxe/+ > bug/461373 > > +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/kobodeluxe/+ > bug/461373 > > +Bug-Debian: http://bugs.debian.org/552548 > > +Forwarded: http://www.freelists.org/post/olofsonprojects/kobodlpatch- > compile-error-in-windowcpp-with-g44 > > +--- a/graphics/window.cpp > > ++++ b/graphics/window.cpp > > +@@ -398,7 +398,7 @@ void window_t::center_token_fxp(int _x, > > + */ > > + if(token) > > + { > > +- char *tok =3D strchr(txt, token); > > ++ const char *tok =3D strchr(txt, token); > > + if(tok) > > + tokpos =3D tok-txt; > > + else > > diff --git a/gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch > b/gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch > > new file mode 100644 > > index 0000000..05cd884 > > --- /dev/null > > +++ b/gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch > > @@ -0,0 +1,67 @@ > > +# Authhor: Damyan Ivanov > > +# Description: rename pipe2 symbol to pipe2_kbdl to avoid clashes with > the one > > +# declared in system unistd.h > > +# Debian-Bug: 527705 > > +# Upstream-Report: http://www.freelists.org/post/ > olofsonprojects/kobodeluxe-failing-to-build-in-Debian- > enemiesh75-error-const-enemy-kind-pipe2-redeclared-as- > different-kind-of-symbol > > +--- a/enemies.h > > ++++ b/enemies.h > > +@@ -72,7 +72,7 @@ extern const enemy_kind bombdeto; > > + extern const enemy_kind cannon; > > + extern const enemy_kind pipe1; > > + extern const enemy_kind core; > > +-extern const enemy_kind pipe2; > > ++extern const enemy_kind pipe2_kbdl; > > + extern const enemy_kind rock; > > + extern const enemy_kind ring; > > + extern const enemy_kind enemy_m1; > > +@@ -430,7 +430,7 @@ inline int _enemy::realize() > > + > > + inline int _enemy::is_pipe() > > + { > > +- return ((_state !=3D notuse) && ((ek =3D=3D &pipe1) || (ek =3D=3D= &pipe2))); > > ++ return ((_state !=3D notuse) && ((ek =3D=3D &pipe1) || (ek =3D=3D > &pipe2_kbdl))); > > + } > > + > > + > > +--- a/enemy.cpp > > ++++ b/enemy.cpp > > +@@ -755,10 +755,10 @@ void _enemy::move_core() > > + > > + void _enemy::kill_core() > > + { > > +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3); > > +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7); > > +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1); > > +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5); > > ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3); > > ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7); > > ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1); > > ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5); > > + enemies.make(&explosion4, CS2PIXEL(x), CS2PIXEL(y)); > > + sound.g_base_core_explo(x, y); > > + release(); > > +@@ -978,19 +978,19 @@ void _enemy::move_pipe2() > > + } > > + p ^=3D a; > > + if(p & U_MASK) > > +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1); > > ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, > 1); > > + if(p & R_MASK) > > +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3); > > ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, > 3); > > + if(p & D_MASK) > > +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5); > > ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, > 5); > > + if(p & L_MASK) > > +- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7); > > ++ enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, > 7); > > + manage.add_score(10); > > + release(); > > + } > > + > > + > > +-const enemy_kind pipe2 =3D { > > ++const enemy_kind pipe2_kbdl =3D { > > + 0, > > + &_enemy::make_pipe2, > > + &_enemy::move_pipe2, > > diff --git a/gnu/packages/patches/kobodeluxe-graphics-window-signed-cha= r.patch > b/gnu/packages/patches/kobodeluxe-graphics-window-signed-char.patch > > new file mode 100644 > > index 0000000..d626618 > > --- /dev/null > > +++ b/gnu/packages/patches/kobodeluxe-graphics-window-signed-char.patch > > @@ -0,0 +1,38 @@ > > +# This was created in responce to Debian bug #163979 > > +# Thing is, if you want to compant "-1" with a char value, > > +# you better make that char signed > > +--- kobodeluxe-0.5.1.orig/graphics/window.cpp > > ++++ kobodeluxe-0.5.1/graphics/window.cpp > > +@@ -331,7 +331,7 @@ > > + } > > + > > + > > +-void window_t::center_token(int _x, int _y, const char *txt, char > token) > > ++void window_t::center_token(int _x, int _y, const char *txt, signed > char token) > > + { > > + center_token_fxp(PIXEL2CS(_x), PIXEL2CS(_y), txt, token); > > + } > > +@@ -374,7 +374,7 @@ > > + } > > + > > + > > +-void window_t::center_token_fxp(int _x, int _y, const char *txt, char > token) > > ++void window_t::center_token_fxp(int _x, int _y, const char *txt, > signed char token) > > + { > > + _x =3D CS2PIXEL((_x * xs + 128) >> 8); > > + _y =3D CS2PIXEL((_y * ys + 128) >> 8); > > +--- kobodeluxe-0.5.1.orig/graphics/window.h > > ++++ kobodeluxe-0.5.1/graphics/window.h > > +@@ -265,10 +265,10 @@ > > + void font(int fnt); > > + void string(int _x, int _y, const char *txt); > > + void center(int _y, const char *txt); > > +- void center_token(int _x, int _y, const char *txt, char token =3D= 0); > > ++ void center_token(int _x, int _y, const char *txt, signed char > token =3D 0); > > + void string_fxp(int _x, int _y, const char *txt); > > + void center_fxp(int _y, const char *txt); > > +- void center_token_fxp(int _x, int _y, const char *txt, char token > =3D 0); > > ++ void center_token_fxp(int _x, int _y, const char *txt, signed cha= r > token =3D 0); > > + int textwidth(const char *txt, int min =3D 0, int max =3D 255); > > + int textwidth_fxp(const char *txt, int min =3D 0, int max =3D 255= ); > > + int fontheight(); > > diff --git a/gnu/packages/patches/kobodeluxe-manpage-minus-not-hyphen.p= atch > b/gnu/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch > > new file mode 100644 > > index 0000000..34cab90 > > --- /dev/null > > +++ b/gnu/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch > > @@ -0,0 +1,15 @@ > > +# Author: Damyan Ivanov > > +# Description: convert a hyphen in kobodl manpage to a minus, which is > what is > > +# inttented here > > +# Upstream-Report: http://www.freelists.org/post/ > olofsonprojects/patch-manpage-uses-hyphen-instead-of-a-minus-sign > > +--- a/kobodl.6 > > ++++ b/kobodl.6 > > +@@ -176,7 +176,7 @@ Video Mode. Default: 17200. > > + Enable Vertical Sync. Default: On. > > + .TP > > + .B \-videopages > > +-Number of Video Pages. Default: -1. > > ++Number of Video Pages. Default: \-1. > > + .TP > > + .B \-scalemode > > + Scaling Filter Mode. Default: 1. > > diff --git a/gnu/packages/patches/kobodeluxe-midicon-segmentation-fault= .patch > b/gnu/packages/patches/kobodeluxe-midicon-segmentation-fault.patch > > new file mode 100644 > > index 0000000..3348348 > > --- /dev/null > > +++ b/gnu/packages/patches/kobodeluxe-midicon-segmentation-fault.patch > > @@ -0,0 +1,24 @@ > > +From: Emile CARRY > > +Date: Wed, 6 Apr 2016 00:27:17 +0200 > > +Subject: midicon segmentation fault > > + > > +Debian-Bug: https://bugs.debian.org/819897 > > +Forwarded: no > > +--- > > + sound/a_midicon.c | 2 +- > > + 1 file changed, 1 insertion(+), 1 deletion(-) > > + > > +diff --git a/sound/a_midicon.c b/sound/a_midicon.c > > +index 57de3cf..ded2988 100644 > > +--- a/sound/a_midicon.c > > ++++ b/sound/a_midicon.c > > +@@ -120,8 +120,8 @@ static inline void __press(unsigned ch, unsigned > key) > > + { > > + m[ch].next[key] =3D -1; > > + m[ch].prev[key] =3D m[ch].last; > > +- m[ch].next[m[ch].last] =3D (char)key; > > + m[ch].last =3D (char)key; > > ++ m[ch].next[m[ch].last] =3D (char)key; > > + } > > + > > + > > diff --git a/gnu/packages/patches/kobodeluxe-paths.patch > b/gnu/packages/patches/kobodeluxe-paths.patch > > new file mode 100644 > > index 0000000..87c7b3a > > --- /dev/null > > +++ b/gnu/packages/patches/kobodeluxe-paths.patch > > @@ -0,0 +1,40 @@ > > +# Disable reading of configs, graphics, and data from the current > directory. > > +# So it's safe to run kobodeluxe from anywhere w/o worry about an > attacker > > +# feeding it bad data. > > +--- kobodeluxe-0.5.1.orig/kobo.cpp > > ++++ kobodeluxe-0.5.1/kobo.cpp > > +@@ -141,21 +141,21 @@ > > + * Graphics data > > + */ > > + /* Current dir; from within the build tree */ > > +- fmap->addpath("GFX", "./data/gfx"); > > ++ //fmap->addpath("GFX", "./data/gfx"); > > + /* Real data dir */ > > + fmap->addpath("GFX", "DATA>>gfx"); > > + /* Current dir */ > > +- fmap->addpath("GFX", "./gfx"); > > ++ //fmap->addpath("GFX", "./gfx"); > > + > > + /* > > + * Sound data > > + */ > > + /* Current dir; from within the build tree */ > > +- fmap->addpath("SFX", "./data/sfx"); > > ++ //fmap->addpath("SFX", "./data/sfx"); > > + /* Real data dir */ > > + fmap->addpath("SFX", "DATA>>sfx"); > > + /* Current dir */ > > +- fmap->addpath("SFX", "./sfx"); > > ++ //fmap->addpath("SFX", "./sfx"); > > + > > + /* > > + * Score files (user and global) > > +@@ -173,7 +173,7 @@ > > + /* System local */ > > + fmap->addpath("CONFIG", SYSCONF_DIR); > > + /* In current dir (last resort) */ > > +- fmap->addpath("CONFIG", "./"); > > ++ //fmap->addpath("CONFIG", "./"); > > + } > > + > > + > > diff --git a/gnu/packages/patches/kobodeluxe-spelling.patch > b/gnu/packages/patches/kobodeluxe-spelling.patch > > new file mode 100644 > > index 0000000..cca1629 > > --- /dev/null > > +++ b/gnu/packages/patches/kobodeluxe-spelling.patch > > @@ -0,0 +1,25 @@ > > +Description: two spelling fixes > > +Author: Damyan Ivanov > > + > > +--- a/graphics/sofont.cpp > > ++++ b/graphics/sofont.cpp > > +@@ -255,7 +255,7 @@ bool SoFont::load(SDL_Surface * FontSurf > > + > > + if(!FontSurface) > > + { > > +- log_printf(ELOG, "SoFont recieved a NULL SDL_Surface\n"); > > ++ log_printf(ELOG, "SoFont received a NULL SDL_Surface\n"); > > + return false; > > + } > > + if(picture) > > +--- a/prefs.cpp > > ++++ b/prefs.cpp > > +@@ -161,7 +161,7 @@ void prefs_t::postload() > > + > > + if((o_wait_msec !=3D 30) && !cmd_cheat) > > + { > > +- log_printf(ELOG, "'wait' is only avaliable in cheat > mode!\n"); > > ++ log_printf(ELOG, "'wait' is only available in cheat > mode!\n"); > > + o_wait_msec =3D 30; > > + } > > + > > Less whitespace errors, but the patches apply to the kobodeluxe source > code just fine. But other than what Ludovic brought up and my > nitpicking, the patch looks good. :-) > --001a113f30342ac237053f1b96e8 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Thank you both for the warm = welcome and feedback :)

I've attached a patch that builds = upon Chris's changes.

Changed:
spelling patc= h - removed
description - "game" now included in de= scription
patch names - use dashes consistently (thank you Ch= ris)

Unchanged:
whitespace warnings - thes= e are due to an intersection of the git patch format and the tabular conven= tion within Kobodeluxe's code
user profile - postponed until s= omeone with security expertise can modify

Patches originate fr= om:
https:/= /packages.debian.org/sid/games/kobodeluxe (parent page)
http://http.debian.net/debian/pool/main/k/kobodeluxe/kobodeluxe_= 0.5.1-8.debian.tar.xz (direct link)

If = any future changes are necessary, please let me know :)

On Mon, Oct 17, 2016 at 11:41 AM, Kei Kebreau <kei@openmailbox.org> wrote:
Chri= stopher Allan Webber <cwebber@= dustycloud.org> writes:

>> On Sun, Oct 16, 2016 at 9:06 PM, Kei Kebre= au <kei@openmailbox.org> w= rote:
>>> When I applied the patch, git complained about trailing whites= pace; a
>>> trivial fix.
>
> Those whitespace "errors" were in the original patches we bo= rrowed from
> Debian, and weren't on any of the lines that patch in new code. > Nonetheless the patches seem to apply fine without them, so here's= an
> adjusted patch that fixes that.=C2=A0 (It also fixes the commit line, = since I
> forgot to change the underscores to hyphens there in my last patch!) >
>=C2=A0 - Chris
>
> From 62bf271a6907bd5b0ec73662bc3f92c64aafa229 Mon Sep 17 0= 0:00:00 2001
> From: Stephen Webber <webber.sl@gmail.com>
> Date: Sun, 16 Oct 2016 15:04:35 -0500
> Subject: [PATCH] gnu: Add kobodeluxe.
>
> * gnu/packages/games.scm (kobodeluxe): New variable.
> * gnu/packages/patches/kobodeluxe-paths.patch: New file. > * gnu/packages/patches/kobodeluxe-spelling.patch: New file.
> * gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch: N= ew file.
> * gnu/packages/patches/kobodeluxe-const-charp-conversion.pat= ch: New file.
> * gnu/packages/patches/kobodeluxe-manpage-minus-not-hyphen.p= atch: New file.
> * gnu/packages/patches/kobodeluxe-midicon-segmentation-fault= .patch: New file.
> * gnu/packages/patches/kobodeluxe-graphics-window-signed-cha= r.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Register it.
> ---
>=C2=A0 gnu/local.mk=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0|=C2=A0 7 +++
>=C2=A0 gnu/packages/games.scm=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 34 ++++++++= +++
>=C2=A0 .../kobodeluxe-const-charp-conversion.patch=C2=A0 =C2=A0 = =C2=A0 =C2=A0 | 17 ++++++
>=C2=A0 .../patches/kobodeluxe-enemies-pipe-decl.patch=C2=A0 =C2=A0= =C2=A0| 67 ++++++++++++++++++++++
>=C2=A0 .../kobodeluxe-graphics-window-signed-char.patch=C2=A0 =C2= =A0| 38 ++++++++++++
>=C2=A0 .../kobodeluxe-manpage-minus-not-hyphen.patch=C2=A0 =C2=A0 = =C2=A0 | 15 +++++
>=C2=A0 .../kobodeluxe-midicon-segmentation-fault.patch=C2=A0 =C2= =A0 | 24 ++++++++
>=C2=A0 gnu/packages/patches/kobodeluxe-paths.patch=C2=A0 =C2=A0 = =C2=A0 =C2=A0 | 40 +++++++++++++
>=C2=A0 gnu/packages/patches/kobodeluxe-spelling.patch=C2=A0 =C2=A0= =C2=A0| 25 ++++++++
>=C2=A0 9 files changed, 267 insertions(+)
>=C2=A0 create mode 100644 gnu/packages/patches/kobodeluxe-const-ch= arp-conversion.patch
>=C2=A0 create mode 100644 gnu/packages/patches/kobodeluxe-enemies-= pipe-decl.patch
>=C2=A0 create mode 100644 gnu/packages/patches/kobodeluxe-graphics= -window-signed-char.patch
>=C2=A0 create mode 100644 gnu/packages/patches/kobodeluxe-manpage-= minus-not-hyphen.patch
>=C2=A0 create mode 100644 gnu/packages/patches/kobodeluxe-midicon-= segmentation-fault.patch
>=C2=A0 create mode 100644 gnu/packages/patches/kobodeluxe-paths.pa= tch
>=C2=A0 create mode 100644 gnu/packages/patches/kobodeluxe-spelling= .patch
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 19dd9ae..a358939 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -621,6 +621,13 @@ dist_patch_DATA =3D=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \
>=C2=A0 =C2=A0 %D%/packages/patches/jq-CVE-2015-8863.patch=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 \
>=C2=A0 =C2=A0 %D%/packages/patches/khmer-use-libraries.patch=C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \
>=C2=A0 =C2=A0 %D%/packages/patches/kmod-module-directory.patch=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\
> +=C2=A0 %D%/packages/patches/kobodeluxe-paths.patch=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 \
> +=C2=A0 %D%/packages/patches/kobodeluxe-spelling.patch=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\
> +=C2=A0 %D%/packages/patches/kobodeluxe-enemies-pipe-decl.pa= tch=C2=A0 =C2=A0 \
> +=C2=A0 %D%/packages/patches/kobodeluxe-const-charp-conversi= on.patch=C2=A0 =C2=A0 =C2=A0 =C2=A0\
> +=C2=A0 %D%/packages/patches/kobodeluxe-manpage-minus-not-hy= phen.patch=C2=A0 =C2=A0 =C2=A0\
> +=C2=A0 %D%/packages/patches/kobodeluxe-midicon-segmentation= -fault.patch=C2=A0 =C2=A0\
> +=C2=A0 %D%/packages/patches/kobodeluxe-graphics-window-sign= ed-char.patch=C2=A0 \
>=C2=A0 =C2=A0 %D%/packages/patches/laby-make-install.patch=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0\
>=C2=A0 =C2=A0 %D%/packages/patches/ldc-disable-tests.patch=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0\
>=C2=A0 =C2=A0 %D%/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \
> diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
> index 2bb53e0..7c43f84 100644
> --- a/gnu/packages/games.scm
> +++ b/gnu/packages/games.scm
> @@ -23,6 +23,7 @@
>=C2=A0 ;;; Copyright =C2=A9 2016 Alex Griffin <a@ajgrf.com>
>=C2=A0 ;;; Copyright =C2=A9 2016 Efraim Flashner <efraim@flashner.co.il>
>=C2=A0 ;;; Copyright =C2=A9 2016 Jan Nieuwenhuizen <janneke@gnu.org>
> +;;; Copyright =C2=A9 2016 Steve Webber <webber.sl@gmail.com>
>=C2=A0 ;;;
>=C2=A0 ;;; This file is part of GNU Guix.
>=C2=A0 ;;;
> @@ -2994,3 +2995,36 @@ symbols, the game needs graphics to render the = non-euclidean world.")
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0license:public-domain ; src/direntx.*
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0license:zlib=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ; src/savepng.*
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0license:gpl2+))))=C2=A0 =C2=A0 =C2=A0; remaining files
> +
> +(define-public kobodeluxe
> +=C2=A0 (package
> +=C2=A0 =C2=A0 (name "kobodeluxe")
> +=C2=A0 =C2=A0 (version "0.5.1")
> +=C2=A0 =C2=A0 (source (origin
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (method url-fetch) > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (uri (string-append = "http://olofson.net/kobodl/download/KoboDelu= xe-"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 version ".tar.bz2&qu= ot;))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (sha256
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(base32
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "0b= 2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (patches (search-pat= ches
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 "kobodeluxe-const-charp-conversion.patch"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 "kobodeluxe-enemies-pipe-decl.patch"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 "kobodeluxe-graphics-window-signed-char.patch"= ;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 "kobodeluxe-manpage-minus-not-hyphen.patch" > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 "kobodeluxe-midicon-segmentation-fault.patch"=
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 "kobodeluxe-paths.patch"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 "kobodeluxe-spelling.patch"))))
> +=C2=A0 =C2=A0 (build-system gnu-build-system)
> +=C2=A0 =C2=A0 (arguments
> +=C2=A0 =C2=A0 =C2=A0'(#:configure-flags
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0(list (string-append "CPPFLAGS=3D-I&q= uot;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 (assoc-ref %build-inputs "sdl-union"= )
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 "/include/SDL"))))
> +=C2=A0 =C2=A0 (inputs `(("sdl-union" ,(sdl-union (list sdl = sdl-image)))))
> +=C2=A0 =C2=A0 (synopsis "Shooter with space sta= tion destruction")
> +=C2=A0 =C2=A0 (description
> +=C2=A0 =C2=A0 =C2=A0"Kobo Deluxe is an enhanced version of Akira= Higuchi's XKobo for Un*x
> +systems with X11.")
> +=C2=A0 =C2=A0 (home-page "http://olofson.net/kobodl/= ")
> +=C2=A0 =C2=A0 (license license:gpl2+)))
> diff --git a/gnu/packages/patches/kobodeluxe-const-charp-con= version.patch b/gnu/packages/patches/kobodeluxe-const-charp-conve= rsion.patch
> new file mode 100644
> index 0000000..8386cf8
> --- /dev/null
> +++ b/gnu/packages/patches/kobodeluxe-const-charp-conversion= .patch
> @@ -0,0 +1,17 @@
> +Description: Avoid compilation error with gcc-4.4.
> + "const char* -> char*" conversion is fatal in that vers= ion
> +Origin: vendor, https://bugs.l= aunchpad.net/ubuntu/+source/kobodeluxe/+bug/461373
> +Bug-Ubuntu: https://bugs.launc= hpad.net/ubuntu/+source/kobodeluxe/+bug/461373
> +Bug-Debian: http://bugs.debian.org/552548
> +Forwarded: http://www.freelists.org/post/olofsonprojects/kobodlpatch-= compile-error-in-windowcpp-with-g44
> +--- a/graphics/window.cpp
> ++++ b/graphics/window.cpp
> +@@ -398,7 +398,7 @@ void window_t::center_token_fxp(int _x,
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 */
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if(token)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{
> +-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 char *tok =3D strchr(txt, token);
> ++=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 const char *tok =3D strchr(txt, token);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0if(tok)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0tokpos =3D tok-txt;
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0else
> diff --git a/gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patch b/gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patc= h
> new file mode 100644
> index 0000000..05cd884
> --- /dev/null
> +++ b/gnu/packages/patches/kobodeluxe-enemies-pipe-decl.patc= h
> @@ -0,0 +1,67 @@
> +# Authhor: Damyan Ivanov <dmn@de= bian.org>
> +# Description: rename pipe2 symbol to pipe2_kbdl to avoid clashes wit= h the one
> +#=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 declared in system = unistd.h
> +# Debian-Bug: 527705
> +# Upstream-Report: http://www.freelists.org/post/olofsonprojects/kobodeluxe-<= wbr>failing-to-build-in-Debian-enemiesh75-error-const-enemy-kind-= pipe2-redeclared-as-different-kind-of-symbol
> +--- a/enemies.h
> ++++ b/enemies.h
> +@@ -72,7 +72,7 @@ extern const enemy_kind bombdeto;
> + extern const enemy_kind cannon;
> + extern const enemy_kind pipe1;
> + extern const enemy_kind core;
> +-extern const enemy_kind pipe2;
> ++extern const enemy_kind pipe2_kbdl;
> + extern const enemy_kind rock;
> + extern const enemy_kind ring;
> + extern const enemy_kind enemy_m1;
> +@@ -430,7 +430,7 @@ inline int _enemy::realize()
> +
> + inline int _enemy::is_pipe()
> + {
> +-=C2=A0 =C2=A0 return ((_state !=3D notuse) && ((ek =3D=3D &a= mp;pipe1) || (ek =3D=3D &pipe2)));
> ++=C2=A0 =C2=A0 return ((_state !=3D notuse) && ((ek =3D=3D &a= mp;pipe1) || (ek =3D=3D &pipe2_kbdl)));
> + }
> +
> +
> +--- a/enemy.cpp
> ++++ b/enemy.cpp
> +@@ -755,10 +755,10 @@ void _enemy::move_core()
> +
> + void _enemy::kill_core()
> + {
> +-=C2=A0 =C2=A0 enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, = 0, 3);
> +-=C2=A0 =C2=A0 enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, = 0, 7);
> +-=C2=A0 =C2=A0 enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, = 0, 1);
> +-=C2=A0 =C2=A0 enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, = 0, 5);
> ++=C2=A0 =C2=A0 enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y)= , 0, 0, 3);
> ++=C2=A0 =C2=A0 enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y)= , 0, 0, 7);
> ++=C2=A0 =C2=A0 enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y)= , 0, 0, 1);
> ++=C2=A0 =C2=A0 enemies.make(&pipe2_kbdl, CS2PIXEL(x), CS2PIXEL(y)= , 0, 0, 5);
> +=C2=A0 =C2=A0 =C2=A0enemies.make(&explosion4, CS2PIXEL(x), CS2PIX= EL(y));
> +=C2=A0 =C2=A0 =C2=A0sound.g_base_core_explo(x, y);
> +=C2=A0 =C2=A0 =C2=A0release();
> +@@ -978,19 +978,19 @@ void _enemy::move_pipe2()
> +=C2=A0 =C2=A0 =C2=A0}
> +=C2=A0 =C2=A0 =C2=A0p ^=3D a;
> +=C2=A0 =C2=A0 =C2=A0if(p & U_MASK)
> +-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enemies.make(&pipe2, C= S2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
> ++=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enemies.make(&pipe2_kb= dl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
> +=C2=A0 =C2=A0 =C2=A0if(p & R_MASK)
> +-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enemies.make(&pipe2, C= S2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
> ++=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enemies.make(&pipe2_kb= dl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
> +=C2=A0 =C2=A0 =C2=A0if(p & D_MASK)
> +-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enemies.make(&pipe2, C= S2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
> ++=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enemies.make(&pipe2_kb= dl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
> +=C2=A0 =C2=A0 =C2=A0if(p & L_MASK)
> +-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enemies.make(&pipe2, C= S2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
> ++=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 enemies.make(&pipe2_kb= dl, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
> +=C2=A0 =C2=A0 =C2=A0manage.add_score(10);
> +=C2=A0 =C2=A0 =C2=A0release();
> + }
> +
> +
> +-const enemy_kind pipe2 =3D {
> ++const enemy_kind pipe2_kbdl =3D {
> +=C2=A0 =C2=A0 =C2=A00,
> +=C2=A0 =C2=A0 =C2=A0&_enemy::make_pipe2,
> +=C2=A0 =C2=A0 =C2=A0&_enemy::move_pipe2,
> diff --git a/gnu/packages/patches/kobodeluxe-graphics-window-signed-char.patch b/gnu/packages/patches/kobodeluxe-graphics-window-<= wbr>signed-char.patch
> new file mode 100644
> index 0000000..d626618
> --- /dev/null
> +++ b/gnu/packages/patches/kobodeluxe-graphics-window-signed= -char.patch
> @@ -0,0 +1,38 @@
> +# This was created in responce to Debian bug #163979
> +# Thing is, if you want to compant "-1" with a char value,<= br> > +# you better make that char signed
> +--- kobodeluxe-0.5.1.orig/graphics/window.cpp
> ++++ kobodeluxe-0.5.1/graphics/window.cpp
> +@@ -331,7 +331,7 @@
> + }
> +
> +
> +-void window_t::center_token(int _x, int _y, const char *txt, char to= ken)
> ++void window_t::center_token(int _x, int _y, const char *txt, signed = char token)
> + {
> +=C2=A0 =C2=A0 =C2=A0center_token_fxp(PIXEL2CS(_x), PIXEL2CS(_y), txt,= token);
> + }
> +@@ -374,7 +374,7 @@
> + }
> +
> +
> +-void window_t::center_token_fxp(int _x, int _y, const char *txt, cha= r token)
> ++void window_t::center_token_fxp(int _x, int _y, const char *txt, sig= ned char token)
> + {
> +=C2=A0 =C2=A0 =C2=A0_x =3D CS2PIXEL((_x * xs + 128) >> 8);
> +=C2=A0 =C2=A0 =C2=A0_y =3D CS2PIXEL((_y * ys + 128) >> 8);
> +--- kobodeluxe-0.5.1.orig/graphics/window.h
> ++++ kobodeluxe-0.5.1/graphics/window.h
> +@@ -265,10 +265,10 @@
> +=C2=A0 =C2=A0 =C2=A0void font(int fnt);
> +=C2=A0 =C2=A0 =C2=A0void string(int _x, int _y, const char *txt);
> +=C2=A0 =C2=A0 =C2=A0void center(int _y, const char *txt);
> +-=C2=A0 =C2=A0 void center_token(int _x, int _y, const char *txt, cha= r token =3D 0);
> ++=C2=A0 =C2=A0 void center_token(int _x, int _y, const char *txt, sig= ned char token =3D 0);
> +=C2=A0 =C2=A0 =C2=A0void string_fxp(int _x, int _y, const char *txt);=
> +=C2=A0 =C2=A0 =C2=A0void center_fxp(int _y, const char *txt);
> +-=C2=A0 =C2=A0 void center_token_fxp(int _x, int _y, const char *txt,= char token =3D 0);
> ++=C2=A0 =C2=A0 void center_token_fxp(int _x, int _y, const char *txt,= signed char token =3D 0);
> +=C2=A0 =C2=A0 =C2=A0int textwidth(const char *txt, int min =3D 0, int= max =3D 255);
> +=C2=A0 =C2=A0 =C2=A0int textwidth_fxp(const char *txt, int min =3D 0,= int max =3D 255);
> +=C2=A0 =C2=A0 =C2=A0int fontheight();
> diff --git a/gnu/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch b/gnu/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch
> new file mode 100644
> index 0000000..34cab90
> --- /dev/null
> +++ b/gnu/packages/patches/kobodeluxe-manpage-minus-not-hyph= en.patch
> @@ -0,0 +1,15 @@
> +# Author: Damyan Ivanov <dmn@deb= ian.org>
> +# Description: convert a hyphen in kobodl manpage to a minus, which i= s what is
> +#=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 inttented here
> +# Upstream-Report: http://www.freelists.org/post/olofsonprojects/patc= h-manpage-uses-hyphen-instead-of-a-minus-sign
> +--- a/kobodl.6
> ++++ b/kobodl.6
> +@@ -176,7 +176,7 @@ Video Mode. Default: 17200.
> + Enable Vertical Sync. Default: On.
> + .TP
> + .B \-videopages
> +-Number of Video Pages. Default: -1.
> ++Number of Video Pages. Default: \-1.
> + .TP
> + .B \-scalemode
> + Scaling Filter Mode. Default: 1.
> diff --git a/gnu/packages/patches/kobodeluxe-midicon-segment= ation-fault.patch b/gnu/packages/patches/kobodeluxe-midicon-segme= ntation-fault.patch
> new file mode 100644
> index 0000000..3348348
> --- /dev/null
> +++ b/gnu/packages/patches/kobodeluxe-midicon-segmentation-f= ault.patch
> @@ -0,0 +1,24 @@
> +From: Emile CARRY <emi= le.carry@sequanux.org>
> +Date: Wed, 6 Apr 2016 00:27:17 +0200
> +Subject: midicon segmentation fault
> +
> +Debian-Bug: https://bugs.debian.org/819897
> +Forwarded: no
> +---
> + sound/a_midicon.c | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/sound/a_midicon.c b/sound/a_midicon.c
> +index 57de3cf..ded2988 100644
> +--- a/sound/a_midicon.c
> ++++ b/sound/a_midicon.c
> +@@ -120,8 +120,8 @@ static inline void __press(unsigned ch, unsigned = key)
> + {
> +=C2=A0 =C2=A0 =C2=A0m[ch].next[key] =3D -1;
> +=C2=A0 =C2=A0 =C2=A0m[ch].prev[key] =3D m[ch].last;
> +-=C2=A0 =C2=A0 m[ch].next[m[ch].last] =3D (char)key;
> +=C2=A0 =C2=A0 =C2=A0m[ch].last =3D (char)key;
> ++=C2=A0 =C2=A0 m[ch].next[m[ch].last] =3D (char)key;
> + }
> +
> +
> diff --git a/gnu/packages/patches/kobodeluxe-paths.patch b/gnu/pa= ckages/patches/kobodeluxe-paths.patch
> new file mode 100644
> index 0000000..87c7b3a
> --- /dev/null
> +++ b/gnu/packages/patches/kobodeluxe-paths.patch
> @@ -0,0 +1,40 @@
> +# Disable reading of configs, graphics, and data from the current dir= ectory.
> +# So it's safe to run kobodeluxe from anywhere w/o worry about an= attacker
> +# feeding it bad data.
> +--- kobodeluxe-0.5.1.orig/kobo.cpp
> ++++ kobodeluxe-0.5.1/kobo.cpp
> +@@ -141,21 +141,21 @@
> +=C2=A0 =C2=A0 =C2=A0 * Graphics data
> +=C2=A0 =C2=A0 =C2=A0 */
> +=C2=A0 =C2=A0 =C2=A0/* Current dir; from within the build tree */
> +-=C2=A0 =C2=A0 fmap->addpath("GFX", "./data/gfx&quo= t;);
> ++=C2=A0 =C2=A0 //fmap->addpath("GFX", "./data/gfx&q= uot;);
> +=C2=A0 =C2=A0 =C2=A0/* Real data dir */
> +=C2=A0 =C2=A0 =C2=A0fmap->addpath("GFX", "DATA>&= gt;gfx");
> +=C2=A0 =C2=A0 =C2=A0/* Current dir */
> +-=C2=A0 =C2=A0 fmap->addpath("GFX", "./gfx");<= br> > ++=C2=A0 =C2=A0 //fmap->addpath("GFX", "./gfx")= ;
> +
> +=C2=A0 =C2=A0 =C2=A0/*
> +=C2=A0 =C2=A0 =C2=A0 * Sound data
> +=C2=A0 =C2=A0 =C2=A0 */
> +=C2=A0 =C2=A0 =C2=A0/* Current dir; from within the build tree */
> +-=C2=A0 =C2=A0 fmap->addpath("SFX", "./data/sfx&quo= t;);
> ++=C2=A0 =C2=A0 //fmap->addpath("SFX", "./data/sfx&q= uot;);
> +=C2=A0 =C2=A0 =C2=A0/* Real data dir */
> +=C2=A0 =C2=A0 =C2=A0fmap->addpath("SFX", "DATA>&= gt;sfx");
> +=C2=A0 =C2=A0 =C2=A0/* Current dir */
> +-=C2=A0 =C2=A0 fmap->addpath("SFX", "./sfx");<= br> > ++=C2=A0 =C2=A0 //fmap->addpath("SFX", "./sfx")= ;
> +
> +=C2=A0 =C2=A0 =C2=A0/*
> +=C2=A0 =C2=A0 =C2=A0 * Score files (user and global)
> +@@ -173,7 +173,7 @@
> +=C2=A0 =C2=A0 =C2=A0/* System local */
> +=C2=A0 =C2=A0 =C2=A0fmap->addpath("CONFIG", SYSCONF_DIR)= ;
> +=C2=A0 =C2=A0 =C2=A0/* In current dir (last resort) */
> +-=C2=A0 =C2=A0 fmap->addpath("CONFIG", "./");<= br> > ++=C2=A0 =C2=A0 //fmap->addpath("CONFIG", "./")= ;
> + }
> +
> +
> diff --git a/gnu/packages/patches/kobodeluxe-spelling.patch b/gnu= /packages/patches/kobodeluxe-spelling.patch
> new file mode 100644
> index 0000000..cca1629
> --- /dev/null
> +++ b/gnu/packages/patches/kobodeluxe-spelling.patch
> @@ -0,0 +1,25 @@
> +Description: two spelling fixes
> +Author: Damyan Ivanov <dmn@debia= n.org>
> +
> +--- a/graphics/sofont.cpp
> ++++ b/graphics/sofont.cpp
> +@@ -255,7 +255,7 @@ bool SoFont::load(SDL_Surface * FontSurf
> +
> +=C2=A0 =C2=A0 =C2=A0if(!FontSurface)
> +=C2=A0 =C2=A0 =C2=A0{
> +-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 log_printf(ELOG, "SoF= ont recieved a NULL SDL_Surface\n");
> ++=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 log_printf(ELOG, "SoF= ont received a NULL SDL_Surface\n");
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return false;
> +=C2=A0 =C2=A0 =C2=A0}
> +=C2=A0 =C2=A0 =C2=A0if(picture)
> +--- a/prefs.cpp
> ++++ b/prefs.cpp
> +@@ -161,7 +161,7 @@ void prefs_t::postload()
> +
> +=C2=A0 =C2=A0 =C2=A0if((o_wait_msec !=3D 30) && !cmd_cheat) > +=C2=A0 =C2=A0 =C2=A0{
> +-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 log_printf(ELOG, "= 9;wait' is only avaliable in cheat mode!\n");
> ++=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 log_printf(ELOG, "= 9;wait' is only available in cheat mode!\n");
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0o_wait_msec =3D 30; > +=C2=A0 =C2=A0 =C2=A0}
> +

Less whitespace errors, but the patches apply to the kobodeluxe source
code just fine. But other than what Ludovic brought up and my
nitpicking, the patch looks good. :-)

--001a113f30342ac237053f1b96e8-- --001a113f30342ac23d053f1b96ea Content-Type: text/x-patch; charset=UTF-8; name="0001-gnu-Add-kobodeluxe.patch" Content-Disposition: attachment; filename="0001-gnu-Add-kobodeluxe.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iuexotij1 RnJvbSAwYWY4ZjhmYzlmMDk3NjkwNGVjMDE5YTlmYjk0NDZhMzY5OWYxZjM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVwaGVuIFdlYmJlciA8d2ViYmVyLnNsQGdtYWlsLmNvbT4K RGF0ZTogU3VuLCAxNiBPY3QgMjAxNiAxNTowNDozNSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIGdu dTogQWRkIGtvYm9kZWx1eGUuCgoqIGdudS9wYWNrYWdlcy9nYW1lcy5zY20gKGtvYm9kZWx1eGUp OiBOZXcgdmFyaWFibGUuCiogZ251L3BhY2thZ2VzL3BhdGNoZXMva29ib2RlbHV4ZS1wYXRocy5w YXRjaDogTmV3IGZpbGUuCiogZ251L3BhY2thZ2VzL3BhdGNoZXMva29ib2RlbHV4ZS1lbmVtaWVz LXBpcGUtZGVjbC5wYXRjaDogTmV3IGZpbGUuCiogZ251L3BhY2thZ2VzL3BhdGNoZXMva29ib2Rl bHV4ZS1jb25zdC1jaGFycC1jb252ZXJzaW9uLnBhdGNoOiBOZXcgZmlsZS4KKiBnbnUvcGFja2Fn ZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLW1hbnBhZ2UtbWludXMtbm90LWh5cGhlbi5wYXRjaDogTmV3 IGZpbGUuCiogZ251L3BhY2thZ2VzL3BhdGNoZXMva29ib2RlbHV4ZS1taWRpY29uLXNlZ21lbnRh dGlvbi1mYXVsdC5wYXRjaDogTmV3IGZpbGUuCiogZ251L3BhY2thZ2VzL3BhdGNoZXMva29ib2Rl bHV4ZS1ncmFwaGljcy13aW5kb3ctc2lnbmVkLWNoYXIucGF0Y2g6IE5ldyBmaWxlLgoqIGdudS9s b2NhbC5tayAoZGlzdF9wYXRjaF9EQVRBKTogUmVnaXN0ZXIgaXQuCi0tLQogZ251L2xvY2FsLm1r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKysKIGdudS9wYWNr YWdlcy9nYW1lcy5zY20gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzMgKysrKysrKysr KysKIC4uLi9rb2JvZGVsdXhlLWNvbnN0LWNoYXJwLWNvbnZlcnNpb24ucGF0Y2ggICAgICAgIHwg MTcgKysrKysrCiAuLi4vcGF0Y2hlcy9rb2JvZGVsdXhlLWVuZW1pZXMtcGlwZS1kZWNsLnBhdGNo ICAgICB8IDY3ICsrKysrKysrKysrKysrKysrKysrKysKIC4uLi9rb2JvZGVsdXhlLWdyYXBoaWNz LXdpbmRvdy1zaWduZWQtY2hhci5wYXRjaCAgIHwgMzggKysrKysrKysrKysrCiAuLi4va29ib2Rl bHV4ZS1tYW5wYWdlLW1pbnVzLW5vdC1oeXBoZW4ucGF0Y2ggICAgICB8IDE1ICsrKysrCiAuLi4v a29ib2RlbHV4ZS1taWRpY29uLXNlZ21lbnRhdGlvbi1mYXVsdC5wYXRjaCAgICB8IDI0ICsrKysr KysrCiBnbnUvcGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLXBhdGhzLnBhdGNoICAgICAgICB8 IDQwICsrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjQxIGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLWNvbnN0LWNo YXJwLWNvbnZlcnNpb24ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0 Y2hlcy9rb2JvZGVsdXhlLWVuZW1pZXMtcGlwZS1kZWNsLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ251L3BhY2thZ2VzL3BhdGNoZXMva29ib2RlbHV4ZS1ncmFwaGljcy13aW5kb3ctc2lnbmVk LWNoYXIucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9rb2Jv ZGVsdXhlLW1hbnBhZ2UtbWludXMtbm90LWh5cGhlbi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdudS9wYWNrYWdlcy9wYXRjaGVzL2tvYm9kZWx1eGUtbWlkaWNvbi1zZWdtZW50YXRpb24tZmF1 bHQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVs dXhlLXBhdGhzLnBhdGNoCgpkaWZmIC0tZ2l0IGEvZ251L2xvY2FsLm1rIGIvZ251L2xvY2FsLm1r CmluZGV4IDUyMjZiNDkuLjliZjYzYjMgMTAwNjQ0Ci0tLSBhL2dudS9sb2NhbC5taworKysgYi9n bnUvbG9jYWwubWsKQEAgLTYwOSw2ICs2MDksMTMgQEAgZGlzdF9wYXRjaF9EQVRBID0JCQkJCQlc CiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL2pxLUNWRS0yMDE1LTg4NjMucGF0Y2gJCQlcCiAgICVE JS9wYWNrYWdlcy9wYXRjaGVzL2tobWVyLXVzZS1saWJyYXJpZXMucGF0Y2ggICAgICAgICAgICAg ICAgXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9rbW9kLW1vZHVsZS1kaXJlY3RvcnkucGF0Y2gJ CVwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMva29ib2RlbHV4ZS1wYXRocy5wYXRjaAkJCVwKKyAg JUQlL3BhY2thZ2VzL3BhdGNoZXMva29ib2RlbHV4ZS1zcGVsbGluZy5wYXRjaAkJXAorICAlRCUv cGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLWVuZW1pZXMtcGlwZS1kZWNsLnBhdGNoCVwKKyAg JUQlL3BhY2thZ2VzL3BhdGNoZXMva29ib2RlbHV4ZS1jb25zdC1jaGFycC1jb252ZXJzaW9uLnBh dGNoCVwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMva29ib2RlbHV4ZS1tYW5wYWdlLW1pbnVzLW5v dC1oeXBoZW4ucGF0Y2gJXAorICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLW1pZGlj b24tc2VnbWVudGF0aW9uLWZhdWx0LnBhdGNoCVwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMva29i b2RlbHV4ZS1ncmFwaGljcy13aW5kb3ctc2lnbmVkLWNoYXIucGF0Y2gJXAogICAlRCUvcGFja2Fn ZXMvcGF0Y2hlcy9sYWJ5LW1ha2UtaW5zdGFsbC5wYXRjaAkJCVwKICAgJUQlL3BhY2thZ2VzL3Bh dGNoZXMvbGRjLWRpc2FibGUtdGVzdHMucGF0Y2gJCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVz L2xmdHAtZG9udC1zYXZlLXVua25vd24taG9zdC1maW5nZXJwcmludC5wYXRjaCBcCmRpZmYgLS1n aXQgYS9nbnUvcGFja2FnZXMvZ2FtZXMuc2NtIGIvZ251L3BhY2thZ2VzL2dhbWVzLnNjbQppbmRl eCAxN2NhMTJiLi5hMmM4YWMwIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZ2FtZXMuc2NtCisr KyBiL2dudS9wYWNrYWdlcy9nYW1lcy5zY20KQEAgLTIzLDYgKzIzLDcgQEAKIDs7OyBDb3B5cmln aHQgwqkgMjAxNiBBbGV4IEdyaWZmaW4gPGFAYWpncmYuY29tPgogOzs7IENvcHlyaWdodCDCqSAy MDE2IEVmcmFpbSBGbGFzaG5lciA8ZWZyYWltQGZsYXNobmVyLmNvLmlsPgogOzs7IENvcHlyaWdo dCDCqSAyMDE2IEphbiBOaWV1d2VuaHVpemVuIDxqYW5uZWtlQGdudS5vcmc+Cis7OzsgQ29weXJp Z2h0IMKpIDIwMTYgU3RldmUgV2ViYmVyIDx3ZWJiZXIuc2xAZ21haWwuY29tPgogOzs7CiA7Ozsg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXguCiA7OzsKQEAgLTI5NjYsMyArMjk2NywzNSBA QCBzeW1ib2xzLCB0aGUgZ2FtZSBuZWVkcyBncmFwaGljcyB0byByZW5kZXIgdGhlIG5vbi1ldWNs aWRlYW4gd29ybGQuIikKICAgICAgICAgICAgICAgICAgICBsaWNlbnNlOnB1YmxpYy1kb21haW4g OyBzcmMvZGlyZW50eC4qCiAgICAgICAgICAgICAgICAgICAgbGljZW5zZTp6bGliICAgICAgICAg IDsgc3JjL3NhdmVwbmcuKgogICAgICAgICAgICAgICAgICAgIGxpY2Vuc2U6Z3BsMispKSkpICAg ICA7IHJlbWFpbmluZyBmaWxlcworCisoZGVmaW5lLXB1YmxpYyBrb2JvZGVsdXhlCisgIChwYWNr YWdlCisgICAgKG5hbWUgImtvYm9kZWx1eGUiKQorICAgICh2ZXJzaW9uICIwLjUuMSIpCisgICAg KHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgIChtZXRob2QgdXJsLWZldGNoKQorICAgICAg ICAgICAgICAodXJpIChzdHJpbmctYXBwZW5kICJodHRwOi8vb2xvZnNvbi5uZXQva29ib2RsL2Rv d25sb2FkL0tvYm9EZWx1eGUtIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZl cnNpb24gIi50YXIuYnoyIikpCisgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAg IChiYXNlMzIKKyAgICAgICAgICAgICAgICAiMGIyd3ZkcG5tYWlic3k0MTljMTZkZndqNWt2ZDNw Y2NieTJhYXF2bTk2NHg3NDU5MnlxZyIpKQorICAgICAgICAgICAgICAocGF0Y2hlcyAoc2VhcmNo LXBhdGNoZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICJrb2JvZGVsdXhlLWNvbnN0LWNoYXJw LWNvbnZlcnNpb24ucGF0Y2giCisgICAgICAgICAgICAgICAgICAgICAgICAia29ib2RlbHV4ZS1l bmVtaWVzLXBpcGUtZGVjbC5wYXRjaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICJrb2JvZGVs dXhlLWdyYXBoaWNzLXdpbmRvdy1zaWduZWQtY2hhci5wYXRjaCIKKyAgICAgICAgICAgICAgICAg ICAgICAgICJrb2JvZGVsdXhlLW1hbnBhZ2UtbWludXMtbm90LWh5cGhlbi5wYXRjaCIKKyAgICAg ICAgICAgICAgICAgICAgICAgICJrb2JvZGVsdXhlLW1pZGljb24tc2VnbWVudGF0aW9uLWZhdWx0 LnBhdGNoIgorICAgICAgICAgICAgICAgICAgICAgICAgImtvYm9kZWx1eGUtcGF0aHMucGF0Y2gi KSkpKQorICAgIChidWlsZC1zeXN0ZW0gZ251LWJ1aWxkLXN5c3RlbSkKKyAgICAoYXJndW1lbnRz CisgICAgICcoIzpjb25maWd1cmUtZmxhZ3MKKyAgICAgICAobGlzdCAoc3RyaW5nLWFwcGVuZCAi Q1BQRkxBR1M9LUkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzc29jLXJlZiAlYnVp bGQtaW5wdXRzICJzZGwtdW5pb24iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvaW5j bHVkZS9TREwiKSkpKQorICAgIChpbnB1dHMgYCgoInNkbC11bmlvbiIgLChzZGwtdW5pb24gKGxp c3Qgc2RsIHNkbC1pbWFnZSkpKSkpCisgICAgKHN5bm9wc2lzICJTaG9vdGVyIHdpdGggc3BhY2Ug c3RhdGlvbiBkZXN0cnVjdGlvbiIpCisgICAgKGRlc2NyaXB0aW9uCisgICAgICJLb2JvIERlbHV4 ZSBpcyBhbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIEFraXJhIEhpZ3VjaGkncyBYS29ibyBncmFwaGlj YWwgZ2FtZQorZm9yIFVuKnggc3lzdGVtcyB3aXRoIFgxMS4iKQorICAgIChob21lLXBhZ2UgImh0 dHA6Ly9vbG9mc29uLm5ldC9rb2JvZGwvIikKKyAgICAobGljZW5zZSBsaWNlbnNlOmdwbDIrKSkp CmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLWNvbnN0LWNoYXJw LWNvbnZlcnNpb24ucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLWNvbnN0 LWNoYXJwLWNvbnZlcnNpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uODM4NmNmOAotLS0gL2Rldi9udWxsCisrKyBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL2tvYm9k ZWx1eGUtY29uc3QtY2hhcnAtY29udmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDE3IEBACitEZXNj cmlwdGlvbjogQXZvaWQgY29tcGlsYXRpb24gZXJyb3Igd2l0aCBnY2MtNC40LgorICJjb25zdCBj aGFyKiAtPiBjaGFyKiIgY29udmVyc2lvbiBpcyBmYXRhbCBpbiB0aGF0IHZlcnNpb24KK09yaWdp bjogdmVuZG9yLCBodHRwczovL2J1Z3MubGF1bmNocGFkLm5ldC91YnVudHUvK3NvdXJjZS9rb2Jv ZGVsdXhlLytidWcvNDYxMzczCitCdWctVWJ1bnR1OiBodHRwczovL2J1Z3MubGF1bmNocGFkLm5l dC91YnVudHUvK3NvdXJjZS9rb2JvZGVsdXhlLytidWcvNDYxMzczCitCdWctRGViaWFuOiBodHRw Oi8vYnVncy5kZWJpYW4ub3JnLzU1MjU0OAorRm9yd2FyZGVkOiBodHRwOi8vd3d3LmZyZWVsaXN0 cy5vcmcvcG9zdC9vbG9mc29ucHJvamVjdHMva29ib2RscGF0Y2gtY29tcGlsZS1lcnJvci1pbi13 aW5kb3djcHAtd2l0aC1nNDQKKy0tLSBhL2dyYXBoaWNzL3dpbmRvdy5jcHAKKysrKyBiL2dyYXBo aWNzL3dpbmRvdy5jcHAKK0BAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCB3aW5kb3dfdDo6Y2VudGVy X3Rva2VuX2Z4cChpbnQgX3gsCisgCQkgKi8KKyAJCWlmKHRva2VuKQorIAkJeworLQkJCWNoYXIg KnRvayA9IHN0cmNocih0eHQsIHRva2VuKTsKKysJCQljb25zdCBjaGFyICp0b2sgPSBzdHJjaHIo dHh0LCB0b2tlbik7CisgCQkJaWYodG9rKQorIAkJCQl0b2twb3MgPSB0b2stdHh0OworIAkJCWVs c2UKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL2tvYm9kZWx1eGUtZW5lbWllcy1w aXBlLWRlY2wucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLWVuZW1pZXMt cGlwZS1kZWNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1Y2Q4 ODQKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLWVu ZW1pZXMtcGlwZS1kZWNsLnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKKyMgQXV0aGhvcjogRGFteWFu IEl2YW5vdiA8ZG1uQGRlYmlhbi5vcmc+CisjIERlc2NyaXB0aW9uOiByZW5hbWUgcGlwZTIgc3lt Ym9sIHRvIHBpcGUyX2tiZGwgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBvbmUKKyMgICAgICAg ICAgICAgIGRlY2xhcmVkIGluIHN5c3RlbSB1bmlzdGQuaAorIyBEZWJpYW4tQnVnOiA1Mjc3MDUK KyMgVXBzdHJlYW0tUmVwb3J0OiBodHRwOi8vd3d3LmZyZWVsaXN0cy5vcmcvcG9zdC9vbG9mc29u cHJvamVjdHMva29ib2RlbHV4ZS1mYWlsaW5nLXRvLWJ1aWxkLWluLURlYmlhbi1lbmVtaWVzaDc1 LWVycm9yLWNvbnN0LWVuZW15LWtpbmQtcGlwZTItcmVkZWNsYXJlZC1hcy1kaWZmZXJlbnQta2lu ZC1vZi1zeW1ib2wKKy0tLSBhL2VuZW1pZXMuaAorKysrIGIvZW5lbWllcy5oCitAQCAtNzIsNyAr NzIsNyBAQCBleHRlcm4gY29uc3QgZW5lbXlfa2luZCBib21iZGV0bzsKKyBleHRlcm4gY29uc3Qg ZW5lbXlfa2luZCBjYW5ub247CisgZXh0ZXJuIGNvbnN0IGVuZW15X2tpbmQgcGlwZTE7CisgZXh0 ZXJuIGNvbnN0IGVuZW15X2tpbmQgY29yZTsKKy1leHRlcm4gY29uc3QgZW5lbXlfa2luZCBwaXBl MjsKKytleHRlcm4gY29uc3QgZW5lbXlfa2luZCBwaXBlMl9rYmRsOworIGV4dGVybiBjb25zdCBl bmVteV9raW5kIHJvY2s7CisgZXh0ZXJuIGNvbnN0IGVuZW15X2tpbmQgcmluZzsKKyBleHRlcm4g Y29uc3QgZW5lbXlfa2luZCBlbmVteV9tMTsKK0BAIC00MzAsNyArNDMwLDcgQEAgaW5saW5lIGlu dCBfZW5lbXk6OnJlYWxpemUoKQorCisgaW5saW5lIGludCBfZW5lbXk6OmlzX3BpcGUoKQorIHsK Ky0JcmV0dXJuICgoX3N0YXRlICE9IG5vdHVzZSkgJiYgKChlayA9PSAmcGlwZTEpIHx8IChlayA9 PSAmcGlwZTIpKSk7CisrCXJldHVybiAoKF9zdGF0ZSAhPSBub3R1c2UpICYmICgoZWsgPT0gJnBp cGUxKSB8fCAoZWsgPT0gJnBpcGUyX2tiZGwpKSk7CisgfQorCisKKy0tLSBhL2VuZW15LmNwcAor KysrIGIvZW5lbXkuY3BwCitAQCAtNzU1LDEwICs3NTUsMTAgQEAgdm9pZCBfZW5lbXk6Om1vdmVf Y29yZSgpCisKKyB2b2lkIF9lbmVteTo6a2lsbF9jb3JlKCkKKyB7CistCWVuZW1pZXMubWFrZSgm cGlwZTIsIENTMlBJWEVMKHgpLCBDUzJQSVhFTCh5KSwgMCwgMCwgMyk7CistCWVuZW1pZXMubWFr ZSgmcGlwZTIsIENTMlBJWEVMKHgpLCBDUzJQSVhFTCh5KSwgMCwgMCwgNyk7CistCWVuZW1pZXMu bWFrZSgmcGlwZTIsIENTMlBJWEVMKHgpLCBDUzJQSVhFTCh5KSwgMCwgMCwgMSk7CistCWVuZW1p ZXMubWFrZSgmcGlwZTIsIENTMlBJWEVMKHgpLCBDUzJQSVhFTCh5KSwgMCwgMCwgNSk7CisrCWVu ZW1pZXMubWFrZSgmcGlwZTJfa2JkbCwgQ1MyUElYRUwoeCksIENTMlBJWEVMKHkpLCAwLCAwLCAz KTsKKysJZW5lbWllcy5tYWtlKCZwaXBlMl9rYmRsLCBDUzJQSVhFTCh4KSwgQ1MyUElYRUwoeSks IDAsIDAsIDcpOworKwllbmVtaWVzLm1ha2UoJnBpcGUyX2tiZGwsIENTMlBJWEVMKHgpLCBDUzJQ SVhFTCh5KSwgMCwgMCwgMSk7CisrCWVuZW1pZXMubWFrZSgmcGlwZTJfa2JkbCwgQ1MyUElYRUwo eCksIENTMlBJWEVMKHkpLCAwLCAwLCA1KTsKKyAJZW5lbWllcy5tYWtlKCZleHBsb3Npb240LCBD UzJQSVhFTCh4KSwgQ1MyUElYRUwoeSkpOworIAlzb3VuZC5nX2Jhc2VfY29yZV9leHBsbyh4LCB5 KTsKKyAJcmVsZWFzZSgpOworQEAgLTk3OCwxOSArOTc4LDE5IEBAIHZvaWQgX2VuZW15Ojptb3Zl X3BpcGUyKCkKKyAJfQorIAlwIF49IGE7CisgCWlmKHAgJiBVX01BU0spCistCQllbmVtaWVzLm1h a2UoJnBpcGUyLCBDUzJQSVhFTCh4KSwgQ1MyUElYRUwoeSksIDAsIDAsIDEpOworKwkJZW5lbWll cy5tYWtlKCZwaXBlMl9rYmRsLCBDUzJQSVhFTCh4KSwgQ1MyUElYRUwoeSksIDAsIDAsIDEpOwor IAlpZihwICYgUl9NQVNLKQorLQkJZW5lbWllcy5tYWtlKCZwaXBlMiwgQ1MyUElYRUwoeCksIENT MlBJWEVMKHkpLCAwLCAwLCAzKTsKKysJCWVuZW1pZXMubWFrZSgmcGlwZTJfa2JkbCwgQ1MyUElY RUwoeCksIENTMlBJWEVMKHkpLCAwLCAwLCAzKTsKKyAJaWYocCAmIERfTUFTSykKKy0JCWVuZW1p ZXMubWFrZSgmcGlwZTIsIENTMlBJWEVMKHgpLCBDUzJQSVhFTCh5KSwgMCwgMCwgNSk7CisrCQll bmVtaWVzLm1ha2UoJnBpcGUyX2tiZGwsIENTMlBJWEVMKHgpLCBDUzJQSVhFTCh5KSwgMCwgMCwg NSk7CisgCWlmKHAgJiBMX01BU0spCistCQllbmVtaWVzLm1ha2UoJnBpcGUyLCBDUzJQSVhFTCh4 KSwgQ1MyUElYRUwoeSksIDAsIDAsIDcpOworKwkJZW5lbWllcy5tYWtlKCZwaXBlMl9rYmRsLCBD UzJQSVhFTCh4KSwgQ1MyUElYRUwoeSksIDAsIDAsIDcpOworIAltYW5hZ2UuYWRkX3Njb3JlKDEw KTsKKyAJcmVsZWFzZSgpOworIH0KKworCistY29uc3QgZW5lbXlfa2luZCBwaXBlMiA9IHsKKytj b25zdCBlbmVteV9raW5kIHBpcGUyX2tiZGwgPSB7CisgCTAsCisgCSZfZW5lbXk6Om1ha2VfcGlw ZTIsCisgCSZfZW5lbXk6Om1vdmVfcGlwZTIsCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcGF0 Y2hlcy9rb2JvZGVsdXhlLWdyYXBoaWNzLXdpbmRvdy1zaWduZWQtY2hhci5wYXRjaCBiL2dudS9w YWNrYWdlcy9wYXRjaGVzL2tvYm9kZWx1eGUtZ3JhcGhpY3Mtd2luZG93LXNpZ25lZC1jaGFyLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MjY2MTgKLS0tIC9kZXYv bnVsbAorKysgYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLWdyYXBoaWNzLXdpbmRv dy1zaWduZWQtY2hhci5wYXRjaApAQCAtMCwwICsxLDM4IEBACisjIFRoaXMgd2FzIGNyZWF0ZWQg aW4gcmVzcG9uY2UgdG8gRGViaWFuIGJ1ZyAjMTYzOTc5CisjIFRoaW5nIGlzLCBpZiB5b3Ugd2Fu dCB0byBjb21wYW50ICItMSIgd2l0aCBhIGNoYXIgdmFsdWUsCisjIHlvdSBiZXR0ZXIgbWFrZSB0 aGF0IGNoYXIgc2lnbmVkCistLS0ga29ib2RlbHV4ZS0wLjUuMS5vcmlnL2dyYXBoaWNzL3dpbmRv dy5jcHAKKysrKyBrb2JvZGVsdXhlLTAuNS4xL2dyYXBoaWNzL3dpbmRvdy5jcHAKK0BAIC0zMzEs NyArMzMxLDcgQEAKKyB9CisKKworLXZvaWQgd2luZG93X3Q6OmNlbnRlcl90b2tlbihpbnQgX3gs IGludCBfeSwgY29uc3QgY2hhciAqdHh0LCBjaGFyIHRva2VuKQorK3ZvaWQgd2luZG93X3Q6OmNl bnRlcl90b2tlbihpbnQgX3gsIGludCBfeSwgY29uc3QgY2hhciAqdHh0LCBzaWduZWQgY2hhciB0 b2tlbikKKyB7CisgCWNlbnRlcl90b2tlbl9meHAoUElYRUwyQ1MoX3gpLCBQSVhFTDJDUyhfeSks IHR4dCwgdG9rZW4pOworIH0KK0BAIC0zNzQsNyArMzc0LDcgQEAKKyB9CisKKworLXZvaWQgd2lu ZG93X3Q6OmNlbnRlcl90b2tlbl9meHAoaW50IF94LCBpbnQgX3ksIGNvbnN0IGNoYXIgKnR4dCwg Y2hhciB0b2tlbikKKyt2b2lkIHdpbmRvd190OjpjZW50ZXJfdG9rZW5fZnhwKGludCBfeCwgaW50 IF95LCBjb25zdCBjaGFyICp0eHQsIHNpZ25lZCBjaGFyIHRva2VuKQorIHsKKyAJX3ggPSBDUzJQ SVhFTCgoX3ggKiB4cyArIDEyOCkgPj4gOCk7CisgCV95ID0gQ1MyUElYRUwoKF95ICogeXMgKyAx MjgpID4+IDgpOworLS0tIGtvYm9kZWx1eGUtMC41LjEub3JpZy9ncmFwaGljcy93aW5kb3cuaAor KysrIGtvYm9kZWx1eGUtMC41LjEvZ3JhcGhpY3Mvd2luZG93LmgKK0BAIC0yNjUsMTAgKzI2NSwx MCBAQAorIAl2b2lkIGZvbnQoaW50IGZudCk7CisgCXZvaWQgc3RyaW5nKGludCBfeCwgaW50IF95 LCBjb25zdCBjaGFyICp0eHQpOworIAl2b2lkIGNlbnRlcihpbnQgX3ksIGNvbnN0IGNoYXIgKnR4 dCk7CistCXZvaWQgY2VudGVyX3Rva2VuKGludCBfeCwgaW50IF95LCBjb25zdCBjaGFyICp0eHQs IGNoYXIgdG9rZW4gPSAwKTsKKysJdm9pZCBjZW50ZXJfdG9rZW4oaW50IF94LCBpbnQgX3ksIGNv bnN0IGNoYXIgKnR4dCwgc2lnbmVkIGNoYXIgdG9rZW4gPSAwKTsKKyAJdm9pZCBzdHJpbmdfZnhw KGludCBfeCwgaW50IF95LCBjb25zdCBjaGFyICp0eHQpOworIAl2b2lkIGNlbnRlcl9meHAoaW50 IF95LCBjb25zdCBjaGFyICp0eHQpOworLQl2b2lkIGNlbnRlcl90b2tlbl9meHAoaW50IF94LCBp bnQgX3ksIGNvbnN0IGNoYXIgKnR4dCwgY2hhciB0b2tlbiA9IDApOworKwl2b2lkIGNlbnRlcl90 b2tlbl9meHAoaW50IF94LCBpbnQgX3ksIGNvbnN0IGNoYXIgKnR4dCwgc2lnbmVkIGNoYXIgdG9r ZW4gPSAwKTsKKyAJaW50IHRleHR3aWR0aChjb25zdCBjaGFyICp0eHQsIGludCBtaW4gPSAwLCBp bnQgbWF4ID0gMjU1KTsKKyAJaW50IHRleHR3aWR0aF9meHAoY29uc3QgY2hhciAqdHh0LCBpbnQg bWluID0gMCwgaW50IG1heCA9IDI1NSk7CisgCWludCBmb250aGVpZ2h0KCk7CmRpZmYgLS1naXQg YS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLW1hbnBhZ2UtbWludXMtbm90LWh5cGhl bi5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL2tvYm9kZWx1eGUtbWFucGFnZS1taW51cy1u b3QtaHlwaGVuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0Y2Fi OTAKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLW1h bnBhZ2UtbWludXMtbm90LWh5cGhlbi5wYXRjaApAQCAtMCwwICsxLDE1IEBACisjIEF1dGhvcjog RGFteWFuIEl2YW5vdiA8ZG1uQGRlYmlhbi5vcmc+CisjIERlc2NyaXB0aW9uOiBjb252ZXJ0IGEg aHlwaGVuIGluIGtvYm9kbCBtYW5wYWdlIHRvIGEgbWludXMsIHdoaWNoIGlzIHdoYXQgaXMKKyMg ICAgICAgICAgICAgIGludHRlbnRlZCBoZXJlCisjIFVwc3RyZWFtLVJlcG9ydDogaHR0cDovL3d3 dy5mcmVlbGlzdHMub3JnL3Bvc3Qvb2xvZnNvbnByb2plY3RzL3BhdGNoLW1hbnBhZ2UtdXNlcy1o eXBoZW4taW5zdGVhZC1vZi1hLW1pbnVzLXNpZ24KKy0tLSBhL2tvYm9kbC42CisrKysgYi9rb2Jv ZGwuNgorQEAgLTE3Niw3ICsxNzYsNyBAQCBWaWRlbyBNb2RlLiBEZWZhdWx0OiAxNzIwMC4KKyBF bmFibGUgVmVydGljYWwgU3luYy4gRGVmYXVsdDogT24uCisgLlRQCisgLkIgXC12aWRlb3BhZ2Vz CistTnVtYmVyIG9mIFZpZGVvIFBhZ2VzLiBEZWZhdWx0OiAtMS4KKytOdW1iZXIgb2YgVmlkZW8g UGFnZXMuIERlZmF1bHQ6IFwtMS4KKyAuVFAKKyAuQiBcLXNjYWxlbW9kZQorIFNjYWxpbmcgRmls dGVyIE1vZGUuIERlZmF1bHQ6IDEuCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9r b2JvZGVsdXhlLW1pZGljb24tc2VnbWVudGF0aW9uLWZhdWx0LnBhdGNoIGIvZ251L3BhY2thZ2Vz L3BhdGNoZXMva29ib2RlbHV4ZS1taWRpY29uLXNlZ21lbnRhdGlvbi1mYXVsdC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzQ4MzQ4Ci0tLSAvZGV2L251bGwKKysr IGIvZ251L3BhY2thZ2VzL3BhdGNoZXMva29ib2RlbHV4ZS1taWRpY29uLXNlZ21lbnRhdGlvbi1m YXVsdC5wYXRjaApAQCAtMCwwICsxLDI0IEBACitGcm9tOiBFbWlsZSBDQVJSWSA8ZW1pbGUuY2Fy cnlAc2VxdWFudXgub3JnPgorRGF0ZTogV2VkLCA2IEFwciAyMDE2IDAwOjI3OjE3ICswMjAwCitT dWJqZWN0OiBtaWRpY29uIHNlZ21lbnRhdGlvbiBmYXVsdAorCitEZWJpYW4tQnVnOiBodHRwczov L2J1Z3MuZGViaWFuLm9yZy84MTk4OTcKK0ZvcndhcmRlZDogbm8KKy0tLQorIHNvdW5kL2FfbWlk aWNvbi5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQorCitkaWZmIC0tZ2l0IGEvc291bmQvYV9taWRpY29uLmMgYi9zb3VuZC9hX21pZGljb24u YworaW5kZXggNTdkZTNjZi4uZGVkMjk4OCAxMDA2NDQKKy0tLSBhL3NvdW5kL2FfbWlkaWNvbi5j CisrKysgYi9zb3VuZC9hX21pZGljb24uYworQEAgLTEyMCw4ICsxMjAsOCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgX19wcmVzcyh1bnNpZ25lZCBjaCwgdW5zaWduZWQga2V5KQorIHsKKyAJbVtjaF0u bmV4dFtrZXldID0gLTE7CisgCW1bY2hdLnByZXZba2V5XSA9IG1bY2hdLmxhc3Q7CistCW1bY2hd Lm5leHRbbVtjaF0ubGFzdF0gPSAoY2hhcilrZXk7CisgCW1bY2hdLmxhc3QgPSAoY2hhcilrZXk7 CisrCW1bY2hdLm5leHRbbVtjaF0ubGFzdF0gPSAoY2hhcilrZXk7CisgfQorCisKZGlmZiAtLWdp dCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL2tvYm9kZWx1eGUtcGF0aHMucGF0Y2ggYi9nbnUvcGFj a2FnZXMvcGF0Y2hlcy9rb2JvZGVsdXhlLXBhdGhzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjg3YzdiM2EKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFja2FnZXMv cGF0Y2hlcy9rb2JvZGVsdXhlLXBhdGhzLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKKyMgRGlzYWJs ZSByZWFkaW5nIG9mIGNvbmZpZ3MsIGdyYXBoaWNzLCBhbmQgZGF0YSBmcm9tIHRoZSBjdXJyZW50 IGRpcmVjdG9yeS4KKyMgU28gaXQncyBzYWZlIHRvIHJ1biBrb2JvZGVsdXhlIGZyb20gYW55d2hl cmUgdy9vIHdvcnJ5IGFib3V0IGFuIGF0dGFja2VyCisjIGZlZWRpbmcgaXQgYmFkIGRhdGEuCist LS0ga29ib2RlbHV4ZS0wLjUuMS5vcmlnL2tvYm8uY3BwCisrKysga29ib2RlbHV4ZS0wLjUuMS9r b2JvLmNwcAorQEAgLTE0MSwyMSArMTQxLDIxIEBACisgCSAqIEdyYXBoaWNzIGRhdGEKKyAJICov CisgCS8qIEN1cnJlbnQgZGlyOyBmcm9tIHdpdGhpbiB0aGUgYnVpbGQgdHJlZSAqLworLQlmbWFw LT5hZGRwYXRoKCJHRlgiLCAiLi9kYXRhL2dmeCIpOworKwkvL2ZtYXAtPmFkZHBhdGgoIkdGWCIs ICIuL2RhdGEvZ2Z4Iik7CisgCS8qIFJlYWwgZGF0YSBkaXIgKi8KKyAJZm1hcC0+YWRkcGF0aCgi R0ZYIiwgIkRBVEE+PmdmeCIpOworIAkvKiBDdXJyZW50IGRpciAqLworLQlmbWFwLT5hZGRwYXRo KCJHRlgiLCAiLi9nZngiKTsKKysJLy9mbWFwLT5hZGRwYXRoKCJHRlgiLCAiLi9nZngiKTsKKwor IAkvKgorIAkgKiBTb3VuZCBkYXRhCisgCSAqLworIAkvKiBDdXJyZW50IGRpcjsgZnJvbSB3aXRo aW4gdGhlIGJ1aWxkIHRyZWUgKi8KKy0JZm1hcC0+YWRkcGF0aCgiU0ZYIiwgIi4vZGF0YS9zZngi KTsKKysJLy9mbWFwLT5hZGRwYXRoKCJTRlgiLCAiLi9kYXRhL3NmeCIpOworIAkvKiBSZWFsIGRh dGEgZGlyICovCisgCWZtYXAtPmFkZHBhdGgoIlNGWCIsICJEQVRBPj5zZngiKTsKKyAJLyogQ3Vy cmVudCBkaXIgKi8KKy0JZm1hcC0+YWRkcGF0aCgiU0ZYIiwgIi4vc2Z4Iik7CisrCS8vZm1hcC0+ YWRkcGF0aCgiU0ZYIiwgIi4vc2Z4Iik7CisKKyAJLyoKKyAJICogU2NvcmUgZmlsZXMgKHVzZXIg YW5kIGdsb2JhbCkKK0BAIC0xNzMsNyArMTczLDcgQEAKKyAJLyogU3lzdGVtIGxvY2FsICovCisg CWZtYXAtPmFkZHBhdGgoIkNPTkZJRyIsIFNZU0NPTkZfRElSKTsKKyAJLyogSW4gY3VycmVudCBk aXIgKGxhc3QgcmVzb3J0KSAqLworLQlmbWFwLT5hZGRwYXRoKCJDT05GSUciLCAiLi8iKTsKKysJ Ly9mbWFwLT5hZGRwYXRoKCJDT05GSUciLCAiLi8iKTsKKyB9CisKKwotLSAKMi4xLjQKCg== --001a113f30342ac23d053f1b96ea--