X-Loop: help-debbugs@HIDDEN Subject: bug#33827: SRFI 69 weak hash-tables is broken Resent-From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= <jessymilare@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Fri, 21 Dec 2018 16:23:01 +0000 Resent-Message-ID: <handler.33827.B.154540933131085 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 33827 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 33827 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-guile@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.154540933131085 (code B ref -1); Fri, 21 Dec 2018 16:23:01 +0000 Received: (at submit) by debbugs.gnu.org; 21 Dec 2018 16:22:11 +0000 Received: from localhost ([127.0.0.1]:58702 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1gaNYw-00085J-Mw for submit <at> debbugs.gnu.org; Fri, 21 Dec 2018 11:22:10 -0500 Received: from eggs.gnu.org ([208.118.235.92]:38466) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jessymilare@HIDDEN>) id 1gaIl3-0004l1-FX for submit <at> debbugs.gnu.org; Fri, 21 Dec 2018 06:14:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <jessymilare@HIDDEN>) id 1gaIkw-0002XP-2b for submit <at> debbugs.gnu.org; Fri, 21 Dec 2018 06:14:15 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=1.0 required=5.0 tests=BAYES_40,FREEMAIL_FROM, FROM_EXCESS_BASE64,HTML_MESSAGE autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:47113) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from <jessymilare@HIDDEN>) id 1gaIks-0002VH-Vj for submit <at> debbugs.gnu.org; Fri, 21 Dec 2018 06:14:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <jessymilare@HIDDEN>) id 1gaIks-0000H5-6C for bug-guile@HIDDEN; Fri, 21 Dec 2018 06:14:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <jessymilare@HIDDEN>) id 1gaIkq-0002TZ-7l for bug-guile@HIDDEN; Fri, 21 Dec 2018 06:14:10 -0500 Received: from mail-it1-x132.google.com ([2607:f8b0:4864:20::132]:50343) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from <jessymilare@HIDDEN>) id 1gaIko-0002O5-4I for bug-guile@HIDDEN; Fri, 21 Dec 2018 06:14:08 -0500 Received: by mail-it1-x132.google.com with SMTP id z7so6299507iti.0 for <bug-guile@HIDDEN>; Fri, 21 Dec 2018 03:14:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=tQuJtSolxmnboASWju1QdWd1dlujOQQsBsIbcgLjK3E=; b=IJ0Rh4Bmd2+63UsLz8WcNjzV2udlMK1UvNmEe2Ufgy3R/ds0mas8G9PrgzqbYL44QW 6geH1Jy7a9ZKz1UnZpmsIyieLlJtXy3ZFgELV5S5h+38cFy8CGus/G4KcZZEi9W7RNTf ID+GW/u7Q/3rQntS2xVAxK0ZC4vfXlRQiKXHmp+og6shl1Z++gQ2PUr3gCq2eQpXPIUK D/3+mj6SRswGTVbq94J/rnBVTX37dP0wdy4dS+18BTnAfofq1DxhWk+sQ5ugJWYrntkE PpbYcV7pCl8nqGHGbvu4UeOWV3FAMJjVL3B/4C9NZnu+GOpGkk0D6BDKogSay8kK0Ksv QAeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=tQuJtSolxmnboASWju1QdWd1dlujOQQsBsIbcgLjK3E=; b=aTLw4ayikTBGQqq5s6lh4LRHa4kms4aTbR92Tc37KsFwiVSwrydhU4C/0iBiaal2M4 Q/jF3l+53Rg5CDBsNXrwkYt7evU+WtLXMIrjrn2uqi9bDcs8f8N8JlJkq3P/HGlIAvTB J6ExWNGJsOa6zzDlEwqq/Xmgy3vSF5fDW1YPkPGWc71wUMyvXQFr27jH2iZITN4huhaK qXnwOSb1bk8F1MclJQXWobEobCtXUSCx9/O3Tx45GODZ7XqktKabBBJKx3cqzWwsVdMg djDf25r2wIpWdK9ygnfz5PtKsmkfMsRHvm2g5ml0k5KPc+sbTrMmN4ggq9M+Kjpe58jK nEow== X-Gm-Message-State: AA+aEWY6b2GbAnGFd9kLBHA7zshFhx5tI4gCRDRssHMUgyo1F8NfasAF LksYZywGFHVje1RQ2y9fQ0RdMyXQil/OsTya13UussCI X-Google-Smtp-Source: AFSGD/U5zkF7HlRvCRPqgsS4pyUGY9biT/Nn9KOO+Sh7IqoIyKVT9VBLyHrnO26oYWb5C3h/DBuKNaMDiADpU9GR8sg= X-Received: by 2002:a24:6c12:: with SMTP id w18mr1822384itb.14.1545390841804; Fri, 21 Dec 2018 03:14:01 -0800 (PST) MIME-Version: 1.0 From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= <jessymilare@HIDDEN> Date: Fri, 21 Dec 2018 09:13:50 -0200 Message-ID: <CAGBcF1bqdT0nDnQZvc_tUJjhcu-RHAPsWNGUPGgYLf0mYVL_1w@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000002a3f90057d865886" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.9 (---) X-Mailman-Approved-At: Fri, 21 Dec 2018 11:22:09 -0500 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -4.9 (----) --0000000000002a3f90057d865886 Content-Type: text/plain; charset="UTF-8" The srfi-69 implementation that comes with Guile doesn't function properly when some non-false #:weak argument is provided. The problems seems to be that it tries to use handles, which are only available for non-weak hash-tables. scheme@(guile-user)> (import (srfi :69)) scheme@(guile-user)> (define ht (make-hash-table eq? hashq #:weak 'key)) scheme@(guile-user)> (hash-table-set! ht 10 10) ERROR: In procedure hashx-create-handle!: In procedure scm_hash_fn_create_handle_x: Wrong type argument in position 1 (expecting hash-table): #<weak-table 0/31> Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. scheme@(guile-user) [1]> Regards, Jessica --0000000000002a3f90057d865886 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">The srf= i-69 implementation that comes with Guile doesn't function properly whe= n some non-false #:weak argument is provided. The problems seems to be that= it tries to use handles, which are only available for non-weak hash-tables= .<div><br></div></div></div></div><blockquote style=3D"margin:0 0 0 40px;bo= rder:none;padding:0px"><div><div><div><div><div><font face=3D"monospace, mo= nospace">scheme@(guile-user)> (import (srfi :69))</font></div></div></di= v></div></div><div><div><div><div><div><font face=3D"monospace, monospace">= scheme@(guile-user)> (define ht (make-hash-table eq? hashq #:weak 'k= ey))</font></div></div></div></div></div><div><div><div><div><div><font fac= e=3D"monospace, monospace">scheme@(guile-user)> (hash-table-set! ht 10 1= 0)</font></div></div></div></div></div><div><div><div><div><div><font face= =3D"monospace, monospace">ERROR: In procedure hashx-create-handle!:</font><= /div></div></div></div></div><div><div><div><div><div><font face=3D"monospa= ce, monospace">In procedure scm_hash_fn_create_handle_x: Wrong type argumen= t in position 1 (expecting hash-table): #<weak-table 0/31></font></di= v></div></div></div></div><div><div><div><div><div><font face=3D"monospace,= monospace"><br></font></div></div></div></div></div><div><div><div><div><d= iv><font face=3D"monospace, monospace">Entering a new prompt.=C2=A0 Type `,= bt' for a backtrace or `,q' to continue.</font></div></div></div></= div></div><div><div><div><div><div><font face=3D"monospace, monospace">sche= me@(guile-user) [1]></font></div></div></div></div></div></blockquote><d= iv dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div><br></div><div>Regard= s,</div><div>Jessica</div></div></div></div></div> --0000000000002a3f90057d865886--
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= <jessymilare@HIDDEN> Subject: bug#33827: Acknowledgement (SRFI 69 weak hash-tables is broken) Message-ID: <handler.33827.B.154540933131085.ack <at> debbugs.gnu.org> References: <CAGBcF1bqdT0nDnQZvc_tUJjhcu-RHAPsWNGUPGgYLf0mYVL_1w@HIDDEN> X-Gnu-PR-Message: ack 33827 X-Gnu-PR-Package: guile Reply-To: 33827 <at> debbugs.gnu.org Date: Fri, 21 Dec 2018 16:23:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-guile@HIDDEN If you wish to submit further information on this problem, please send it to 33827 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 33827: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D33827 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: bug#33827: Attempt to fix References: <CAGBcF1bqdT0nDnQZvc_tUJjhcu-RHAPsWNGUPGgYLf0mYVL_1w@HIDDEN> In-Reply-To: <CAGBcF1bqdT0nDnQZvc_tUJjhcu-RHAPsWNGUPGgYLf0mYVL_1w@HIDDEN> Resent-From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= <jessymilare@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Sat, 22 Dec 2018 17:46:01 +0000 Resent-Message-ID: <handler.33827.B33827.154550070420551 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 33827 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 33827 <at> debbugs.gnu.org Received: via spool by 33827-submit <at> debbugs.gnu.org id=B33827.154550070420551 (code B ref 33827); Sat, 22 Dec 2018 17:46:01 +0000 Received: (at 33827) by debbugs.gnu.org; 22 Dec 2018 17:45:04 +0000 Received: from localhost ([127.0.0.1]:60201 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1galKh-0005LO-Nq for submit <at> debbugs.gnu.org; Sat, 22 Dec 2018 12:45:03 -0500 Received: from mail-io1-f51.google.com ([209.85.166.51]:46874) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jessymilare@HIDDEN>) id 1galKf-0005Kc-PL for 33827 <at> debbugs.gnu.org; Sat, 22 Dec 2018 12:45:02 -0500 Received: by mail-io1-f51.google.com with SMTP id v10so6216110ios.13 for <33827 <at> debbugs.gnu.org>; Sat, 22 Dec 2018 09:45:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=HoyMrOlzoXi0NvLyzRanSvWmKeA2kYKGV6cb+7sYV2Y=; b=MYPlJOHd0BgOEVu4uJ9OJDXzE2Xz0cPnR9v0zumEJI8d6hqK519PPsBu1/dw/3WHEf 8YKpEiayCGqqwIuxonZYg5gtYil2lhqFPZIq/MNa0i5A73SQwfa5PxcpKVu5PmkNh2AS nRR/0AQ6HXg7uObetMvWwPpxv3Dp3A63YVSXdS8A3FNN9PdQ5AbXCvwfBjp1x4wejkB0 u1iBNy7j9LjeqYtgRBdvBTF2JfhELi/MFWDj+Q4H1M5o8ymaMmXe+pZLZG8gxoWDBXUx 8BQyOhAjOn69+kMGCIVSgigFZBoJjdxbTSTvSChQMAkYT9pmjbgfmWXhnxWnWMudUcfv QiiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=HoyMrOlzoXi0NvLyzRanSvWmKeA2kYKGV6cb+7sYV2Y=; b=Ja/vZG8dHpF1nLuuYUVHMp2iKU0lGha/nTR3C3y/v/GrtZPQJ9HWTmIc4PGwBMayaR yaXs5oLXHLzjWQW52M6s0WQq9hmzVVY6pXuLePEdgLkKUzI6RQLG1NBEqe1zIfiGcSpn GTDZF6b+UtsMmrCl2DcQh5UiVttMUYHpKUl661TCgy58AF/YM5CE10WGGBhqzgp3l4Gv T8bVfZ6Lwq4kqQbN5Kqcb1uZ84yP4oRGkoI7GYoo/sChrNujbt613YIbcsIsRStSyxYq X2NIknW8jLBI5ztLqJijihw1qV2cJCrRqp1yK9Cfv8ybElMFq6y3lsmIUWvJPAUERDKU 4CGA== X-Gm-Message-State: AJcUukfi7o4c6mxny+/uXwq+SMYrsL/71SoaxgwGhXKCLKxdFyQYlQqo w2k1N3Y/BF/zjkRPG982FGvwWWoUc6PU4zR5LjxN4Q== X-Google-Smtp-Source: ALg8bN5a2KJ+XJsvyMBt2vIGwUOKcYw+HtGeobbYqQR8fHTJIHAwgE4xzNUPOUkg1zOFeR2wzCiEkSdLA8VhaIVdX94= X-Received: by 2002:a6b:156:: with SMTP id 83mr4743257iob.63.1545500695595; Sat, 22 Dec 2018 09:44:55 -0800 (PST) MIME-Version: 1.0 From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= <jessymilare@HIDDEN> Date: Sat, 22 Dec 2018 15:44:44 -0200 Message-ID: <CAGBcF1YqKUqkNzSW_=hNVVE86WU2Hdh6RGBW3KD7AU7dj_iQRA@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000f60eab057d9febc3" X-Spam-Score: 0.1 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.9 (/) --000000000000f60eab057d9febc3 Content-Type: text/plain; charset="UTF-8" I'll try to fix this bug and create some tests, then I send a format-patch here. I'll need to do that anyway. --000000000000f60eab057d9febc3 Content-Type: text/html; charset="UTF-8" <div dir="ltr">I'll try to fix this bug and create some tests, then I send a format-patch here. I'll need to do that anyway.</div> --000000000000f60eab057d9febc3--
X-Loop: help-debbugs@HIDDEN Subject: bug#33827: Patch References: <CAGBcF1bqdT0nDnQZvc_tUJjhcu-RHAPsWNGUPGgYLf0mYVL_1w@HIDDEN> In-Reply-To: <CAGBcF1bqdT0nDnQZvc_tUJjhcu-RHAPsWNGUPGgYLf0mYVL_1w@HIDDEN> Resent-From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= <jessymilare@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Sun, 23 Dec 2018 17:10:02 +0000 Resent-Message-ID: <handler.33827.B33827.154558498222678 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 33827 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 33827 <at> debbugs.gnu.org Received: via spool by 33827-submit <at> debbugs.gnu.org id=B33827.154558498222678 (code B ref 33827); Sun, 23 Dec 2018 17:10:02 +0000 Received: (at 33827) by debbugs.gnu.org; 23 Dec 2018 17:09:42 +0000 Received: from localhost ([127.0.0.1]:33966 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1gb7G1-0005th-Ia for submit <at> debbugs.gnu.org; Sun, 23 Dec 2018 12:09:42 -0500 Received: from mail-io1-f47.google.com ([209.85.166.47]:43217) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jessymilare@HIDDEN>) id 1gb7Fz-0005tU-A2 for 33827 <at> debbugs.gnu.org; Sun, 23 Dec 2018 12:09:40 -0500 Received: by mail-io1-f47.google.com with SMTP id q17so4151119ior.10 for <33827 <at> debbugs.gnu.org>; Sun, 23 Dec 2018 09:09:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=gPxRgx/PXSiUvuxxbLLlD7TRxE9/gR3n6MpbGVuzHGs=; b=nV6BldKApEzuHtIR+P9O0inLtyaK6Vs1JlBsr+1yvpLM7sH/YcqPE101MNDK2YFIHU 4V/AI2AoseP1nWXEgB900NHmJuyIQxbwrVzDXUxlgykZ+MSSkyHUTRcxt/go5NYM+cem 7eELVrvpoaFzdW+t7fVzEABeeTnfv5uBs7KXFE8g+kg5//7decjmYBIbPMPMKTj7/seQ qxya20PR9f7m3P/49T1Cknv5xZY4XVmHOAV81SyNA1pAy0uPzd2k1lEx6POepRC6bfSf rhAKelXPCRE5PqkKZzbWJzBezTZMt1EZ1jrYI4flxHNZ9mFBh+Honkc1r6iOkUzdUhhv w2dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=gPxRgx/PXSiUvuxxbLLlD7TRxE9/gR3n6MpbGVuzHGs=; b=k1OXwsdTmkJ0nSmrcvl0DlQiC8FK2AKE+Aaw8OGc56I+Hjz0IhE4Q8to3XHr/r7oQA KEibkUUmEMRgyOlKIPnp0Pj1QzGqPE821rvmKgX0U+isA2HobQWj2se1UziJ6wIW5e8A lQd7r71jtVpWdP7x1d9ycfVDUWsa0JDflQLUXMGBAFwcJ+iQlZAmx0BJcbseA1myT0Kw gHeomQv0tMyihFlD2gbH/imwuf9MTPshs7OhRYR+0qPXBljn4EAJXVRwbpONh7itWMuB yWF6Cv4dspkwzZdRZdqAqFhyLq1pnzII3dbaEi5OfAhTWGrk5fgCgjYGzzS2ayRKjkD4 cIjg== X-Gm-Message-State: AJcUukcA05edCyoh6/+sL7z1KlaxF+HIgRueI+8xJIG6jmPMYUaJ8GWz Fb2eAbn7Q3UFPAMy8Yl4wBaxFpUi9aEoD1sFc8awWQ== X-Google-Smtp-Source: ALg8bN5B1ZrQ3bVVjPhIcFf9A3pX4ejXKy/bsQY/r+Fb9Mp5HAI8VJw8wLDnx5tZobD0NXnBQP2C4Ow1DI0hRkcTmMU= X-Received: by 2002:a6b:600b:: with SMTP id r11mr7537125iog.259.1545584973273; Sun, 23 Dec 2018 09:09:33 -0800 (PST) MIME-Version: 1.0 From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= <jessymilare@HIDDEN> Date: Sun, 23 Dec 2018 15:09:22 -0200 Message-ID: <CAGBcF1Z5WmXij2vX+EhxQHvWkmmOkeL-hV+Y-SUSpByH0tZQHw@HIDDEN> Content-Type: multipart/mixed; boundary="0000000000004d8042057db38bed" X-Spam-Score: 0.1 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.9 (/) --0000000000004d8042057db38bed Content-Type: multipart/alternative; boundary="0000000000004d8040057db38beb" --0000000000004d8040057db38beb Content-Type: text/plain; charset="UTF-8" --0000000000004d8040057db38beb Content-Type: text/html; charset="UTF-8" <div dir="ltr"><br></div> --0000000000004d8040057db38beb-- --0000000000004d8042057db38bed Content-Type: text/x-patch; charset="UTF-8"; name="0001-Fix-SRFI-69-don-t-use-handles-with-weak-tables-anymo.patch" Content-Disposition: attachment; filename="0001-Fix-SRFI-69-don-t-use-handles-with-weak-tables-anymo.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jq15dexw0> X-Attachment-Id: f_jq15dexw0 RnJvbSA4N2ZmNTE5YjkyODhkZWRjYzYyYTJmZDFiMmMwM2VjY2JmNjMxZTU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDIzIERlYyAyMDE4IDE1OjA3OjMy IC0wMjAwClN1YmplY3Q6IFtQQVRDSF0gRml4OiAoU1JGSSA6NjkpIGRvbid0IHVzZSBoYW5kbGVz IHdpdGggd2VhayB0YWJsZXMgYW55bW9yZS4KCk1hbnkgcHJvY2VkdXJlcyB1c2VkIGhhc2h4LWdl dC1oYW5kbGUgYW5kIGhhc2h4LWNyZWF0ZS1oYW5kbGUhIHdpdGhvdXQKY2hlY2tpbmcgd2hldGhl ciByZWFsLWhhc2gtdGFibGUgd2FzIHdlYWsuIE5vdyB0aGF0IGlzbid0IHRoZSBjYXNlCmFueW1v cmUgKEJ1ZyAzMzgyNykuIEEgYnVnIHdhcyBmaXhlZCBpbiBoYXNoLXRhYmxlLW1lcmdlISBhbmQg YSB0ZXN0IGNhc2UKd2FzIGFkZGVkLiBBIGZldyBvdGhlciBvcHRpbWl6YXRpb25zIHdlcmUgbWFk ZS4KCiogbW9kdWxlL3NyZmkvc3JmaS02OS5zY20gKGFsaXN0LT5oYXNoLXRhYmxlKToKKGhhc2gt dGFibGUtZGVsZXRlISk6CihoYXNoLXRhYmxlLWV4aXN0cz8pOgooaGFzaC10YWJsZS1yZWYpOiBE b24ndCB1c2UgaGFzaHgtZ2V0LWhhbmRsZS4KKGhhc2gtdGFibGUtc2V0ISk6IElmIHdlYWtuZXNz IGlzIHNldCwgZG9uJ3QgdXNlIGhhc2h4LWNyZWF0ZS1oYW5kbGUhCmFuZCBkb24ndCB1cGRhdGUg c2l6ZS4KKGhhc2gtdGFibGUtdXBkYXRlISk6IElmIHdlYWtuZXNzIGlzIHNldCwgZG9uJ3QgdXNl IGhhc2h4LWdldC1oYW5kbGUKYW5kIGRvbid0IHVwZGF0ZSBzaXplLiBPdGhlcndpc2UsIGNoZWNr IHdoZXRoZXIgZGVmYXVsdC10aHVuayBpcyBnaXZlbgphbmQsIGlmIHNvLCB1c2UgaGFzaHgtY3Jl YXRlLWhhbmRsZSEgdG8gYXZvaWQgZG91YmxlIGxvb2t1cC4KKGhhc2gtdGFibGUtdXBkYXRlIS9k ZWZhdWx0KTogQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBkb2Vzbid0IGNhbGwKaGFzaC10 YWJsZS11cGRhdGUhLCBhdm9pZGluZyBhbGxvY2F0aW5nIGEgcHJvY2VkdXJlLgooaGFzaC10YWJs ZS1zaXplKTogU2V0IGh0LXNpemUgZm9yIHdlYWsgaGFzaC10YWJsZXMuCihoYXNoLXRhYmxlLXdh bGspOgooaGFzaC10YWJsZS1jb3B5KTogVXNlIG5hdGl2ZSBoYXNoLWZvci1lYWNoIGluc3RlYWQg b2YgaGFzaC10YWJsZS1mb2xkLgooaGFzaC10YWJsZS0+YWxpc3QpOiBVc2UgbmF0aXZlIGhhc2gt bWFwLT5saXN0IGluc3RlYWQgb2YgaGFzaC10YWJsZS1mb2xkLgooaGFzaC10YWJsZS1tZXJnZSEp OiBVc2UgbmF0aXZlIGhhc2gtZm9yLWVhY2ggaW5zdGVhZCBvZiBoYXNoLXRhYmxlLWZvbGQuCldh bGtzIG92ZXIgb3RoZXItaHQgcmF0aGVyIHRoYW4gd2Fsa2luZyBodCAoYW5kIGRvaW5nIG5vdGhp bmcpLgoqIHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0OiBhbGwgYXBwcm9wcmlhdGUgdGVz dCBhcmUgcmVwbGljYXRlZCBmb3IKYWxsIHBvc3NpYmxlIHdlYWs6IGFyZ3VtZW50cy4gQWRkZWQg YSB0ZXN0IGZvciBoYXNoLXRhYmxlLW1lcmdlIS4KLS0tCiBUSEFOS1MgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBtb2R1bGUvc3JmaS9zcmZpLTY5LnNjbSAgICAgICB8IDE0OSArKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tCiB0ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdCB8 IDE3NyArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQs IDIwNSBpbnNlcnRpb25zKCspLCAxMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvVEhBTktT IGIvVEhBTktTCmluZGV4IDYxNmQzYjA0Yi4uOTA1NmE3OTVjIDEwMDY0NAotLS0gYS9USEFOS1MK KysrIGIvVEhBTktTCkBAIC0yMCw2ICsyMCw3IEBAIENvbnRyaWJ1dG9ycyBzaW5jZSB0aGUgbGFz dCByZWxlYXNlOgogICAgICAgICAgICBOb2FoIExhdmluZQogICAgICAgICAgRGFuaWVsIExsb3Jl bnMKICAgICAgICAgR3JlZ29yeSBNYXJ0b24KKyAgICAgICAgSsOpc3NpY2EgTWlsYXLDqQogICAg ICAgVGhpZW4tVGhpIE5ndXllbgogICAgICAgICBIYW4tV2VuIE5pZW5odXlzCiAgICAgICAgICAg ICBKYW4gTmlldXdlbmh1aXplbgpkaWZmIC0tZ2l0IGEvbW9kdWxlL3NyZmkvc3JmaS02OS5zY20g Yi9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbQppbmRleCBiOTQ4NmM0NjUuLmEwNWVjNjFlYSAxMDA2 NDQKLS0tIGEvbW9kdWxlL3NyZmkvc3JmaS02OS5zY20KKysrIGIvbW9kdWxlL3NyZmkvc3JmaS02 OS5zY20KQEAgLTYyLDYgKzYyLDE0IEBACiA7OyBpbXBsZW1lbnRhdGlvbiwgYm90aCBhbnN3ZXIg KCJ4WSIpLiAgSG93ZXZlciwgSSBkb24ndCBndWFyYW50ZWUgdGhhdAogOzsgdGhpcyB3b24ndCBj aGFuZ2UgaW4gdGhlIGZ1dHVyZS4KIAorCis7Ozs7IENvbW1lbnRhcnkgYnkgSmVzc2ljYSBNaWxh cmUgMjAxOAorCis7OyBNYWtlIGJ1ZyBmaXhlcyBmb3Igd2VhayBoYXNoLXRhYmxlcywgc2luY2Ug aGFuZGxlcyBkb24ndCB3b3JrIGFueW1vcmUsCis7OyBhbmQgYWxzbyBzb21lIG9wdGltaXphdGlv bnMuCis7OworOzsgTXkgcGVyc29uYWwgY29tbWVudHMgYXJlIG1hcmtlZCBieSBKLk0uCisKIDs7 OyBDb2RlOgogDAogOzs7OyBNb2R1bGUgZGVmaW5pdGlvbiAmIGV4cG9ydHMKQEAgLTczLDE4ICs4 MSwxOCBAQAogICAjOnVzZS1tb2R1bGUgKGljZS05IG9wdGFyZ3MpCiAgICM6ZXhwb3J0ICg7OyBU eXBlIGNvbnN0cnVjdG9ycyAmIHByZWRpY2F0ZQogCSAgICBtYWtlLWhhc2gtdGFibGUgaGFzaC10 YWJsZT8gYWxpc3QtPmhhc2gtdGFibGUKLQkgICAgOzsgUmVmbGVjdGl2ZSBxdWVyaWVzCi0JICAg IGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9u Ci0JICAgIDs7IERlYWxpbmcgd2l0aCBzaW5nbGUgZWxlbWVudHMKLQkgICAgaGFzaC10YWJsZS1y ZWYgaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBoYXNoLXRhYmxlLXNldCEKLQkgICAgaGFzaC10YWJs ZS1kZWxldGUhIGhhc2gtdGFibGUtZXhpc3RzPyBoYXNoLXRhYmxlLXVwZGF0ZSEKLQkgICAgaGFz aC10YWJsZS11cGRhdGUhL2RlZmF1bHQKLQkgICAgOzsgRGVhbGluZyB3aXRoIHRoZSB3aG9sZSBj b250ZW50cwotCSAgICBoYXNoLXRhYmxlLXNpemUgaGFzaC10YWJsZS1rZXlzIGhhc2gtdGFibGUt dmFsdWVzCi0JICAgIGhhc2gtdGFibGUtd2FsayBoYXNoLXRhYmxlLWZvbGQgaGFzaC10YWJsZS0+ YWxpc3QKLQkgICAgaGFzaC10YWJsZS1jb3B5IGhhc2gtdGFibGUtbWVyZ2UhCi0JICAgIDs7IEhh c2hpbmcKLQkgICAgc3RyaW5nLWNpLWhhc2ggaGFzaC1ieS1pZGVudGl0eSkKKyAgICAgICAgICAg IDs7IFJlZmxlY3RpdmUgcXVlcmllcworICAgICAgICAgICAgaGFzaC10YWJsZS1lcXVpdmFsZW5j ZS1mdW5jdGlvbiBoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgIDs7IERlYWxp bmcgd2l0aCBzaW5nbGUgZWxlbWVudHMKKyAgICAgICAgICAgIGhhc2gtdGFibGUtcmVmIGhhc2gt dGFibGUtcmVmL2RlZmF1bHQgaGFzaC10YWJsZS1zZXQhCisgICAgICAgICAgICBoYXNoLXRhYmxl LWRlbGV0ZSEgaGFzaC10YWJsZS1leGlzdHM/IGhhc2gtdGFibGUtdXBkYXRlIQorICAgICAgICAg ICAgaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQKKyAgICAgICAgICAgIDs7IERlYWxpbmcgd2l0 aCB0aGUgd2hvbGUgY29udGVudHMKKyAgICAgICAgICAgIGhhc2gtdGFibGUtc2l6ZSBoYXNoLXRh YmxlLWtleXMgaGFzaC10YWJsZS12YWx1ZXMKKyAgICAgICAgICAgIGhhc2gtdGFibGUtd2FsayBo YXNoLXRhYmxlLWZvbGQgaGFzaC10YWJsZS0+YWxpc3QKKyAgICAgICAgICAgIGhhc2gtdGFibGUt Y29weSBoYXNoLXRhYmxlLW1lcmdlIQorICAgICAgICAgICAgOzsgSGFzaGluZworICAgICAgICAg ICAgc3RyaW5nLWNpLWhhc2ggaGFzaC1ieS1pZGVudGl0eSkKICAgIzpyZS1leHBvcnQgKHN0cmlu Zy1oYXNoKQogICAjOnJlcGxhY2UgKGhhc2ggbWFrZS1oYXNoLXRhYmxlIGhhc2gtdGFibGU/KSkK IApAQCAtMjA0LDMwICsyMTIsMzIgQEAgbWFudWFsIGZvciBzcGVjaWZpY3MsIG9mIHdoaWNoIHRo ZXJlIGFyZSBtYW55LiIKIAkgKHNpemUgKGh0LXNpemUgcmVzdWx0KSkpCiAgICAgKHdpdGgtaGFz aHgtdmFsdWVzIChoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxlKSByZXN1bHQKICAgICAg IChmb3ItZWFjaCAobGFtYmRhIChwYWlyKQotCQkgIChsZXQgKChoYW5kbGUgKGhhc2h4LWdldC1o YW5kbGUgaGFzaC1wcm9jIGFzc29jaWF0b3IKLQkJCQkJCSAgcmVhbC10YWJsZSAoY2FyIHBhaXIp KSkpCi0JCSAgICAoY29uZCAoKG5vdCBoYW5kbGUpCi0JCQkgICAoc2V0ISBzaXplICgxKyBzaXpl KSkKLQkJCSAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUKLQkJ CQkgICAgICAgKGNhciBwYWlyKSAoY2RyIHBhaXIpKSkpKSkKLQkJYWxpc3QpKQorICAgICAgICAg ICAgICAgICAgKGxldCAoKHZhbHVlIChoYXNoeC1yZWYgaGFzaC1wcm9jIGFzc29jaWF0b3IKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWwtdGFibGUgKGNhciBw YWlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHQtdW5zcGVj aWZpZWQpKSkKKyAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChlcT8gaHQtdW5zcGVjaWZpZWQg dmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBzaXplICgxKyBzaXplKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBhc3NvY2lh dG9yIHJlYWwtdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj YXIgcGFpcikgKGNkciBwYWlyKSkpKSkpCisgICAgICAgICAgICAgICAgYWxpc3QpKQogICAgICho dC1zaXplISByZXN1bHQgc2l6ZSkKICAgICByZXN1bHQpKQogDAogOzs7OyBBY2Nlc3NpbmcgdGFi bGUgaXRlbXMKIAogOzsgV2UgdXNlIHRoaXMgdG8gZGVub3RlIG1pc3Npbmcgb3IgdW5zcGVjaWZp ZWQgdmFsdWVzIHRvIGF2b2lkCisKIDs7IHBvc3NpYmxlIGNvbGxpc2lvbiB3aXRoICp1bnNwZWNp ZmllZCouCiAoZGVmaW5lIGh0LXVuc3BlY2lmaWVkIChjb25zICp1bnNwZWNpZmllZCogImh0LXZh bHVlIikpCiAKLShkZWZpbmUgKGhhc2gtdGFibGUtcmVmIGh0IGtleSAuIGRlZmF1bHQtdGh1bmst bHN0KQorKGRlZmluZSogKGhhc2gtdGFibGUtcmVmIGh0IGtleSAgIzpvcHRpb25hbCAoZGVmYXVs dC10aHVuayBodC11bnNwZWNpZmllZCkpCiAgICJMb29rdXAgS0VZIGluIEhUIGFuZCBhbnN3ZXIg dGhlIHZhbHVlLCBpbnZva2UgREVGQVVMVC1USFVOSyBpZiBLRVkKIGlzbid0IHByZXNlbnQsIG9y IHNpZ25hbCBhbiBlcnJvciBpZiBERUZBVUxULVRIVU5LIGlzbid0IHByb3ZpZGVkLiIKICAgKGxl dCAoKHJlc3VsdCAoaGFzaHgtaW52b2tlIGhhc2h4LXJlZiBodCBrZXkgaHQtdW5zcGVjaWZpZWQp KSkKICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCByZXN1bHQpCi0JKGlmIChwYWlyPyBkZWZh dWx0LXRodW5rLWxzdCkKLQkgICAgKChmaXJzdCBkZWZhdWx0LXRodW5rLWxzdCkpCi0JICAgIChl cnJvciAiS2V5IG5vdCBpbiB0YWJsZSIga2V5IGh0KSkKKwkoaWYgKGVxPyBodC11bnNwZWNpZmll ZCBkZWZhdWx0LXRodW5rKQorCSAgICAoZXJyb3IgIktleSBub3QgaW4gdGFibGUiIGtleSBodCkK KwkgICAgKGRlZmF1bHQtdGh1bmspKQogCXJlc3VsdCkpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxl LXJlZi9kZWZhdWx0IGh0IGtleSBkZWZhdWx0KQpAQCAtMjM3LDQ5ICsyNDcsNzkgQEAgcHJlc2Vu dC4iCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtc2V0ISBodCBrZXkgbmV3LXZhbHVlKQogICAiU2V0 IEtFWSB0byBORVctVkFMVUUgaW4gSFQuIgotICAobGV0ICgoaGFuZGxlIChoYXNoeC1pbnZva2Ug aGFzaHgtY3JlYXRlLWhhbmRsZSEgaHQga2V5IGh0LXVuc3BlY2lmaWVkKSkpCi0gICAgKGlmIChl cT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5kbGUpKQotCShodC1zaXplISBodCAoMSsgKGh0LXNp emUgaHQpKSkpCi0gICAgKHNldC1jZHIhIGhhbmRsZSBuZXctdmFsdWUpKQorICAoaWYgKGh0LXdl YWtuZXNzIGh0KQorICAgICAgOzsgSi5NLiBzZXBhcmF0ZSB0aGUgY2FzZSB3aGVyZSBodCBpcyB3 ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQorICAgICAgOzsgSi5NLiBkb24ndCBuZWVkIHRvIHVwZGF0 ZSBzaXplIGZvciB3ZWFrIGhhc2gtdGFibGVzCisgICAgICAoaGFzaHgtaW52b2tlIGhhc2h4LXNl dCEgaHQga2V5IG5ldy12YWx1ZSkKKyAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWludm9rZSBo YXNoeC1jcmVhdGUtaGFuZGxlISBodCBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBodC11bnNwZWNpZmllZCkpKQorICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAo Y2RyIGhhbmRsZSkpCisgICAgICAgICAgICAoaHQtc2l6ZSEgaHQgKDErIChodC1zaXplIGh0KSkp KQorICAgICAgICAoc2V0LWNkciEgaGFuZGxlIG5ldy12YWx1ZSkpKQogICAqdW5zcGVjaWZpZWQq KQogCiAoZGVmaW5lIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQga2V5KQogICAiUmVtb3ZlIEtFWSdz IGFzc29jaWF0aW9uIGluIEhULiIKICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC1odCkg aHQKLSAgICAoaWYgKGhhc2h4LWdldC1oYW5kbGUgaCBhIHJlYWwtaHQga2V5KQotCShiZWdpbgot CSAgKGh0LXNpemUhIGh0ICgxLSAoaHQtc2l6ZSBodCkpKQotCSAgKGhhc2h4LXJlbW92ZSEgaCBh IHJlYWwtaHQga2V5KSkpKQorICAgIChpZiAobm90IChlcT8gaHQtdW5zcGVjaWZpZWQgKGhhc2h4 LXJlZiBoIGEgcmVhbC1odCBrZXkgaHQtdW5zcGVjaWZpZWQpKSkKKyAgICAgICAgKGJlZ2luCisg ICAgICAgICAgKGh0LXNpemUhIGh0ICgxLSAoaHQtc2l6ZSBodCkpKQorICAgICAgICAgIChoYXNo eC1yZW1vdmUhIGggYSByZWFsLWh0IGtleSkpKSkKICAgKnVuc3BlY2lmaWVkKikKIAogKGRlZmlu ZSAoaGFzaC10YWJsZS1leGlzdHM/IGh0IGtleSkKICAgIlJldHVybiB3aGV0aGVyIEtFWSBpcyBh IGtleSBpbiBIVC4iCi0gIChhbmQgKGhhc2h4LWludm9rZSBoYXNoeC1nZXQtaGFuZGxlIGh0IGtl eSkgI3QpKQorICAobm90IChlcT8gaHQtdW5zcGVjaWZpZWQgKGhhc2h4LWludm9rZSBoYXNoeC1y ZWYgaHQga2V5IGh0LXVuc3BlY2lmaWVkKSkpKQogCi07OzsgYGhhc2h4LXNldCEnIGR1cGxpY2F0 ZXMgdGhlIGhhc2ggbG9va3VwLCBidXQgd2UgdXNlIGl0IGFueXdheSB0bwotOzs7IGF2b2lkIGNy ZWF0aW5nIGEgaGFuZGxlIGluIGNhc2UgREVGQVVMVC1USFVOSyBleGl0cwogOzs7IGBoYXNoLXRh YmxlLXVwZGF0ZSEnIG5vbi1sb2NhbGx5LgotKGRlZmluZSAoaGFzaC10YWJsZS11cGRhdGUhIGh0 IGtleSBtb2RpZmllciAuIGRlZmF1bHQtdGh1bmstbHN0KQorKGRlZmluZSogKGhhc2gtdGFibGUt dXBkYXRlISBodCBrZXkgbW9kaWZpZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpv cHRpb25hbCAoZGVmYXVsdC10aHVuayBodC11bnNwZWNpZmllZCkpCiAgICJNb2RpZnkgSFQncyB2 YWx1ZSBhdCBLRVkgYnkgcGFzc2luZyBpdHMgdmFsdWUgdG8gTU9ESUZJRVIgYW5kCiBzZXR0aW5n IGl0IHRvIHRoZSByZXN1bHQgdGhlcmVvZi4gIEludm9rZSBERUZBVUxULVRIVU5LIGZvciB0aGUg b2xkCiB2YWx1ZSBpZiBLRVkgaXNuJ3QgaW4gSFQsIG9yIHNpZ25hbCBhbiBlcnJvciBpZiBERUZB VUxULVRIVU5LIGlzIG5vdAogcHJvdmlkZWQuIgogICAod2l0aC1oYXNoeC12YWx1ZXMgKGhhc2gt cHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUpIGh0Ci0gICAgKGxldCAoKGhhbmRsZSAoaGFzaHgt Z2V0LWhhbmRsZSBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxlIGtleSkpKQotICAgICAg KGNvbmQgKGhhbmRsZQotCSAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9kaWZpZXIgKGNkciBoYW5k bGUpKSkpCi0JICAgIChlbHNlCi0JICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRv ciByZWFsLXRhYmxlIGtleQotCQkJIChpZiAocGFpcj8gZGVmYXVsdC10aHVuay1sc3QpCi0JCQkg ICAgIChtb2RpZmllciAoKGNhciBkZWZhdWx0LXRodW5rLWxzdCkpKQotCQkJICAgICAoZXJyb3Ig IktleSBub3QgaW4gdGFibGUiIGtleSBodCkpKQotCSAgICAgKGh0LXNpemUhIGh0ICgxKyAoaHQt c2l6ZSBodCkpKSkpKSkKKyAgICAoaWYgKGh0LXdlYWtuZXNzIGh0KQorICAgICAgICA7OyBKLk0u IHNlcGFyYXRlIHRoZSBjYXNlIHdoZXJlIGh0IGlzIHdlYWsgLSBkb24ndCB1c2UgaGFuZGxlCisg ICAgICAgIChsZXQqICgob2xkIChoYXNoeC1yZWYgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10 YWJsZSBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodC11bnNwZWNpZmllZCkp KQorICAgICAgICAgIChjb25kICgoZXE/IGh0LXVuc3BlY2lmaWVkIG9sZCkKKyAgICAgICAgICAg ICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgZGVmYXVsdC10aHVuaykKKyAgICAgICAgICAg ICAgICAgICAgIChlcnJvciAiS2V5IG5vdCBpbiB0YWJsZSIga2V5IGh0KQorICAgICAgICAgICAg ICAgICAgICAgKGhhc2h4LXNldCEgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10YWJsZSBrZXkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RpZmllciAoZGVmYXVsdC10aHVu aykpKSkpCisgICAgICAgICAgICAgICAgKGVsc2UKKyAgICAgICAgICAgICAgICAgKGhhc2h4LXNl dCEgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10YWJsZSBrZXkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1vZGlmaWVyIG9sZCkpKSkpCisgICAgICAgIChsZXQgKChoYW5kbGUKKyAg ICAgICAgICAgICAgIChpZiAoZXE/IGh0LXVuc3BlY2lmaWVkIGRlZmF1bHQtdGh1bmspCisgICAg ICAgICAgICAgICAgICAgKGhhc2h4LWdldC1oYW5kbGUgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVh bC10YWJsZSBrZXkpCisgICAgICAgICAgICAgICAgICAgKGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGhh c2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGh0LXVuc3BlY2lmaWVkKSkpKQorICAgICAgICAgIChjb25kICho YW5kbGUKKyAgICAgICAgICAgICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5k bGUpKQorICAgICAgICAgICAgICAgICAgICAgKGJlZ2luIChodC1zaXplISBodCAoMSsgKGh0LXNp emUgaHQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlICht b2RpZmllciAoZGVmYXVsdC10aHVuaykpKSkKKyAgICAgICAgICAgICAgICAgICAgIChzZXQtY2Ry ISBoYW5kbGUgKG1vZGlmaWVyIChjZHIgaGFuZGxlKSkpKSkKKyAgICAgICAgICAgICAgICAoZWxz ZQorICAgICAgICAgICAgICAgICAoZXJyb3IgIktleSBub3QgaW4gdGFibGUiIGtleSBodCkpKSkp KQogICAqdW5zcGVjaWZpZWQqKQogCis7OzsgSi5NLiBDdXN0b20gaW1wbGVtZW50YXRpb24gaW5z dGVhZCBvZiB1c2luZyBoYXNoLXRhYmxlLXVwZGF0ZSEKIChkZWZpbmUgKGhhc2gtdGFibGUtdXBk YXRlIS9kZWZhdWx0IGh0IGtleSBtb2RpZmllciBkZWZhdWx0KQogICAiTW9kaWZ5IEhUJ3MgdmFs dWUgYXQgS0VZIGJ5IHBhc3NpbmcgaXRzIG9sZCB2YWx1ZSwgb3IgREVGQVVMVCBpZiBpdAogZG9l c24ndCBoYXZlIG9uZSwgdG8gTU9ESUZJRVIsIGFuZCBzZXR0aW5nIGl0IHRvIHRoZSByZXN1bHQg dGhlcmVvZi4iCi0gIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQga2V5IG1vZGlmaWVyIChsYW1iZGEg KCkgZGVmYXVsdCkpKQorICAod2l0aC1oYXNoeC12YWx1ZXMgKGhhc2gtcHJvYyBhc3NvY2lhdG9y IHJlYWwtdGFibGUpIGh0CisgICAgKGlmIChodC13ZWFrbmVzcyBodCkKKyAgICAgICAgOzsgSi5N LiBzZXBhcmF0ZSB0aGUgY2FzZSB3aGVyZSBodCBpcyB3ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQor ICAgICAgICAobGV0KiAoKG9sZCAoaGFzaHgtcmVmIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwt dGFibGUga2V5IGRlZmF1bHQpKSkKKyAgICAgICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNz b2NpYXRvciByZWFsLXRhYmxlIGtleSAobW9kaWZpZXIgb2xkKSkpCisgICAgICAgIChsZXQgKCho YW5kbGUgKGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFi bGUga2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LXVu c3BlY2lmaWVkKSkpCisgICAgICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5k bGUpKQorICAgICAgICAgICAgICAoYmVnaW4gKGh0LXNpemUhIGh0ICgxKyAoaHQtc2l6ZSBodCkp KQorICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9kaWZpZXIgZGVmYXVs dCkpKQorICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlIChtb2RpZmllciAoY2RyIGhhbmRs ZSkpKSkpKSkpCiAMCiA7Ozs7IEFjY2Vzc2luZyB3aG9sZSB0YWJsZXMKIApAQCAtMjg3LDcgKzMy Nyw5IEBAIGRvZXNuJ3QgaGF2ZSBvbmUsIHRvIE1PRElGSUVSLCBhbmQgc2V0dGluZyBpdCB0byB0 aGUgcmVzdWx0IHRoZXJlb2YuIgogICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgYXNzb2NpYXRpb25z IGluIEhULiAgVGhpcyBpcyBndWFyYW50ZWVkIE8oMSkKIGZvciB0YWJsZXMgd2hlcmUgIzp3ZWFr IHdhcyAjZiBvciBub3Qgc3BlY2lmaWVkIGF0IGNyZWF0aW9uIHRpbWUuIgogICAoaWYgKGh0LXdl YWtuZXNzIGh0KQotICAgICAgKGhhc2gtdGFibGUtZm9sZCBodCAobGFtYmRhIChrIHYgYW5zKSAo MSsgYW5zKSkgMCkKKyAgICAgIChsZXQgKChzaXplIChoYXNoLXRhYmxlLWZvbGQgaHQgKGxhbWJk YSAoayB2IGFucykgKDErIGFucykpIDApKSkKKyAgICAgICAgKGh0LXNpemUhIGh0IHNpemUpCisg ICAgICAgIHNpemUpCiAgICAgICAoaHQtc2l6ZSBodCkpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxl LWtleXMgaHQpCkBAIC0zMDAsMTAgKzM0Miw3IEBAIGZvciB0YWJsZXMgd2hlcmUgIzp3ZWFrIHdh cyAjZiBvciBub3Qgc3BlY2lmaWVkIGF0IGNyZWF0aW9uIHRpbWUuIgogCiAoZGVmaW5lIChoYXNo LXRhYmxlLXdhbGsgaHQgcHJvYykKICAgIkNhbGwgUFJPQyB3aXRoIGVhY2gga2V5IGFuZCB2YWx1 ZSBhcyB0d28gYXJndW1lbnRzLiIKLSAgKGhhc2gtdGFibGUtZm9sZCBodCAobGFtYmRhIChrIHYg dW5zcGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC12YWx1ZXMgKGxhbWJk YSAoKSAocHJvYyBrIHYpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIHZhbHMg dW5zcGVjKSkpCi0JCSAgICp1bnNwZWNpZmllZCopKQorICAoaGFzaC1mb3ItZWFjaCBwcm9jICho dC1yZWFsLXRhYmxlIGh0KSkpCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtZm9sZCBodCBmIGtuaWwp CiAgICJJbnZva2UgKEYgS0VZIFZBTCBQUkVWKSBmb3IgZWFjaCBLRVkgYW5kIFZBTCBpbiBIVCwg d2hlcmUgUFJFViBpcwpAQCAtMzEzLDE1ICszNTIsMTUgQEAgQW5zd2VyIHRoZSBmaW5hbCBGIHJl c3VsdC4iCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtPmFsaXN0IGh0KQogICAiUmV0dXJuIGFuIGFs aXN0IGZvciBIVC4iCi0gIChoYXNoLXRhYmxlLWZvbGQgaHQgYWxpc3QtY29ucyAnKCkpKQorICAo aGFzaC1tYXAtPmxpc3QgY29ucyAoaHQtcmVhbC10YWJsZSBodCkpKQogCiAoZGVmaW5lIChoYXNo LXRhYmxlLWNvcHkgaHQpCiAgICJBbnN3ZXIgYSBjb3B5IG9mIEhULiIKICAgKHdpdGgtaGFzaHgt dmFsdWVzIChoIGEgcmVhbC1odCkgaHQKICAgICAobGV0KiAoKHNpemUgKGhhc2gtdGFibGUtc2l6 ZSBodCkpICh3ZWFrIChodC13ZWFrbmVzcyBodCkpCiAJICAgKG5ldy1yZWFsLWh0ICgoZ3VpbGUt aHQtY3RvciB3ZWFrKSBzaXplKSkpCi0gICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGsgdiBpZ24p IChoYXNoeC1zZXQhIGggYSBuZXctcmVhbC1odCBrIHYpKQotCQkgI2YgcmVhbC1odCkKKyAgICAg IChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGsgdikgKGhhc2h4LXNldCEgaCBhIG5ldy1yZWFsLWh0 IGsgdikpCisgICAgICAgICAgICAgICAgICAgICByZWFsLWh0KQogICAgICAgKG1ha2Utc3JmaS02 OS1oYXNoLXRhYmxlCQk7cmVhbCxhc3NvYyxzaXplLHdlYWssZXF1aXYsaAogICAgICAgIG5ldy1y ZWFsLWh0IGEgc2l6ZSB3ZWFrCiAgICAgICAgKGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rp b24gaHQpIGgpKSkpCkBAIC0zMjksOCArMzY4LDggQEAgQW5zd2VyIHRoZSBmaW5hbCBGIHJlc3Vs dC4iCiAoZGVmaW5lIChoYXNoLXRhYmxlLW1lcmdlISBodCBvdGhlci1odCkKICAgIkFkZCBhbGwg a2V5L3ZhbHVlIHBhaXJzIGZyb20gT1RIRVItSFQgdG8gSFQsIG92ZXJyaWRpbmcgSFQncwogbWFw cGluZ3Mgd2hlcmUgcHJlc2VudC4gIFJldHVybiBIVC4iCi0gIChoYXNoLXRhYmxlLWZvbGQKLSAg IGh0IChsYW1iZGEgKGsgdiBpZ24pIChoYXNoLXRhYmxlLXNldCEgaHQgayB2KSkgI2YpCisgICho YXNoLWZvci1lYWNoIChsYW1iZGEgKGsgdikgKGhhc2gtdGFibGUtc2V0ISBodCBrIHYpKQorICAg ICAgICAgICAgICAgICAoaHQtcmVhbC10YWJsZSBvdGhlci1odCkpCiAgIGh0KQogCiA7Ozsgc3Jm aS02OS5zY20gZW5kcyBoZXJlCmRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjku dGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0CmluZGV4IGU5OWI3NmM2ZC4uMTA1 YWUzNzU5IDEwMDY0NAotLS0gYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdAorKysgYi90 ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdApAQCAtMjgsODAgKzI4LDEyMyBAQCBjYXNlLWlu c2Vuc2l0aXZlIHN0cmluZ3MgdG8gYGVxdWFsPyctdGVzdGVkIHZhbHVlcy4iCiAgIChhbmQgKHN0 cmluZy1jaT0/IChjYXIgbGVmdCkgKGNhciByaWdodCkpCiAgICAgICAgKGVxdWFsPyAoY2RyIGxl ZnQpIChjZHIgcmlnaHQpKSkpCiAKKyhkZWZpbmUtc3ludGF4IHdpdGgtd2Vha25lc3MtbGlzdAor ICAoc3ludGF4LXJ1bGVzICgpCisgICAgKCh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3Mgd2Vh a25lc3MtbGlzdCBleHByIC4uLikKKyAgICAgKGxldCBsb29wICgod2Vha25lc3MtbGlzdCogd2Vh a25lc3MtbGlzdCkpCisgICAgICAgKG9yIChudWxsPyB3ZWFrbmVzcy1saXN0KikKKyAgICAgICAg ICAgKGFuZCAobGV0ICgod2Vha25lc3MgKGNhciB3ZWFrbmVzcy1saXN0KikpKQorICAgICAgICAg ICAgICAgICAgZXhwciAuLi4pCisgICAgICAgICAgICAgICAgKGxvb3AgKGNkciB3ZWFrbmVzcy1s aXN0KikpKSkpKSkpCisKKyhkZWZpbmUgKHRlc3Qtc3RyLXdlYWtuZXNzIHN0ciB3ZWFrbmVzcykK KyAgKGlmIChub3Qgd2Vha25lc3MpIHN0ciAoZm9ybWF0ICNmICJ+YSAod2VhazogfmEpIiBzdHIg d2Vha25lc3MpKSkKKwogKHdpdGgtdGVzdC1wcmVmaXggIlNSRkktNjkiCiAKLSAgKHBhc3MtaWYg InNtYWxsIGFsaXN0PC0+aGFzaCB0YWJsZXMgcm91bmQtdHJpcCIKLSAgICAobGV0KiAoKHN0YXJ0 LWFsaXN0ICcoKGEgLiAxKSAoYiAuIDIpIChjIC4gMykgKGEgLiA0MikpKQotCSAgIChodCAoYWxp c3QtPmhhc2gtdGFibGUgc3RhcnQtYWxpc3QgZXE/KSkKLQkgICAoZW5kLWFsaXN0IChoYXNoLXRh YmxlLT5hbGlzdCBodCkpKQotICAgICAgKGFuZCAoPSAzIChoYXNoLXRhYmxlLXNpemUgaHQpKQot CSAgIChsc2V0PSBlcXVhbD8gZW5kLWFsaXN0ICh0YWtlIHN0YXJ0LWFsaXN0IDMpKQotCSAgICg9 IDEgKGhhc2gtdGFibGUtcmVmIGh0ICdhKSkKLQkgICAoPSAyIChoYXNoLXRhYmxlLXJlZiBodCAn YikpCi0JICAgKD0gMyAoaGFzaC10YWJsZS1yZWYgaHQgJ2MpKSkpKQotCi0gIChwYXNzLWlmICJz dHJpbmctY2k9PyB0YWJsZXMgd29yayBieSBkZWZhdWx0IgotICAgIChsZXQgKChodCAoYWxpc3Qt Pmhhc2gtdGFibGUgJygoInhZIiAuIDIpICgiYWJjIiAuIDU0KSkgc3RyaW5nLWNpPT8pKSkKLSAg ICAgIChoYXNoLXRhYmxlLXNldCEgaHQgIlhZIiA0MikKLSAgICAgIChoYXNoLXRhYmxlLXNldCEg aHQgInFxcSIgMTAwKQotICAgICAgKGFuZCAoPSA1NCAoaGFzaC10YWJsZS1yZWYgaHQgIkFCYyIp KQotCSAgICg9IDQyIChoYXNoLXRhYmxlLXJlZiBodCAieHkiKSkKLQkgICAoPSAzIChoYXNoLXRh YmxlLXNpemUgaHQpKQotCSAgIChsc2V0PSBzdHJpbmctY2ktYXNzb2MtZXF1YWw/Ci0JCSAgJygo Inh5IiAuIDQyKSAoImFiYyIgLiA1NCkgKCJxcXEiIC4gMTAwKSkKLQkJICAoaGFzaC10YWJsZS0+ YWxpc3QgaHQpKSkpKQorICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdr ZXkgJ3ZhbHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNz ICJzbWFsbCBhbGlzdDwtPmhhc2ggdGFibGVzIHJvdW5kLXRyaXAiIHdlYWtuZXNzKQorICAgICAg KGxldCogKChzdGFydC1hbGlzdCAnKChhIC4gMSkgKGIgLiAyKSAoYyAuIDMpIChhIC4gNDIpKSkK KyAgICAgICAgICAgICAoaHQgKGFsaXN0LT5oYXNoLXRhYmxlIHN0YXJ0LWFsaXN0IGVxPykpCisg ICAgICAgICAgICAgKGVuZC1hbGlzdCAoaGFzaC10YWJsZS0+YWxpc3QgaHQpKSkKKyAgICAgICAg KGFuZCAoPSAzIChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgIChsc2V0PSBlcXVh bD8gZW5kLWFsaXN0ICh0YWtlIHN0YXJ0LWFsaXN0IDMpKQorICAgICAgICAgICAgICg9IDEgKGhh c2gtdGFibGUtcmVmIGh0ICdhKSkKKyAgICAgICAgICAgICAoPSAyIChoYXNoLXRhYmxlLXJlZiBo dCAnYikpCisgICAgICAgICAgICAgKD0gMyAoaGFzaC10YWJsZS1yZWYgaHQgJ2MpKSkpKSkKKwor ICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdrZXkgJ3ZhbHVlICdrZXkt b3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJzdHJpbmctY2k9PyB0 YWJsZXMgd29yayBieSBkZWZhdWx0IiB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAoYWxpc3Qt Pmhhc2gtdGFibGUgJygoInhZIiAuIDIpICgiYWJjIiAuIDU0KSkgc3RyaW5nLWNpPT8KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrIHdlYWtuZXNzKSkpCisgICAgICAg IChoYXNoLXRhYmxlLXNldCEgaHQgIlhZIiA0MikKKyAgICAgICAgKGhhc2gtdGFibGUtc2V0ISBo dCAicXFxIiAxMDApCisgICAgICAgIChhbmQgKD0gNTQgKGhhc2gtdGFibGUtcmVmIGh0ICJBQmMi KSkKKyAgICAgICAgICAgICAoPSA0MiAoaGFzaC10YWJsZS1yZWYgaHQgInh5IikpCisgICAgICAg ICAgICAgKD0gMyAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgICAgICAobHNldD0gc3Ry aW5nLWNpLWFzc29jLWVxdWFsPworICAgICAgICAgICAgICAgICAgICAnKCgieHkiIC4gNDIpICgi YWJjIiAuIDU0KSAoInFxcSIgLiAxMDApKQorICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJs ZS0+YWxpc3QgaHQpKSkpKSkKIAogICAocGFzcy1pZi1leGNlcHRpb24gIkJhZCB3ZWFrbmVzcyBh cmcgdG8gbWh0IHNpZ25hbHMgYW4gZXJyb3IiCi0JCSAgICAgJyhtaXNjLWVycm9yIC4gIl5JbnZh bGlkIHdlYWsgaGFzaCB0YWJsZSB0eXBlIikKKyAgICAgICAgICAgICAgICAgICAgICcobWlzYy1l cnJvciAuICJeSW52YWxpZCB3ZWFrIGhhc2ggdGFibGUgdHlwZSIpCiAgICAgKG1ha2UtaGFzaC10 YWJsZSBlcXVhbD8gaGFzaCAjOndlYWsgJ2tleS1hbmQtdmFsdWUpKQogCi0gIChwYXNzLWlmICJl bXB0eSBoYXNoIHRhYmxlcyBhcmUgZW1wdHkiCi0gICAgKG51bGw/IChoYXNoLXRhYmxlLT5hbGlz dCAobWFrZS1oYXNoLXRhYmxlIGVxPykpKSkKLQotICAocGFzcy1pZiAiaGFzaC10YWJsZS1yZWYg dXNlcyBkZWZhdWx0IgotICAgIChlcXVhbD8gJyg0KQotCSAgICAoaGFzaC10YWJsZS1yZWYgKGFs aXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSkgZXE/KQotCQkJICAgICdiIChjdXQgbGlzdCAoKyAy IDIpKSkpKQotCi0gIChwYXNzLWlmICJoYXNoLXRhYmxlLWRlbGV0ZSEgZGVsZXRlcyBwcmVzZW50 IGFzc29jcywgaWdub3JlcyBvdGhlcnMiCi0gICAgKGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJs ZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/KSkpCi0gICAgICAoaGFzaC10YWJsZS1kZWxldGUhIGh0 ICdjKQotICAgICAgKGFuZCAoPSAyIChoYXNoLXRhYmxlLXNpemUgaHQpKQotCSAgIChiZWdpbgot CSAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodCAnYSkKLQkgICAgICg9IDEgKGhhc2gtdGFibGUt c2l6ZSBodCkpKQotCSAgIChsc2V0PSBlcXVhbD8gJygoYiAuIDIpKSAoaGFzaC10YWJsZS0+YWxp c3QgaHQpKSkpKQotCi0gIChwYXNzLWlmICJhbGlzdC0+aGFzaC10YWJsZSBkb2VzIG5vdCByZXF1 aXJlIGxpbmVhciBzdGFjayBzcGFjZSIKLSAgICAoZXF2PyA5OTk5OQotCSAgKGhhc2gtdGFibGUt cmVmIChhbGlzdC0+aGFzaC10YWJsZQotCQkJICAgKHVuZm9sZC1yaWdodCAoY3V0ID49IDw+IDEw MDAwMCkKLQkJCQkJIChsYW1iZGEgKHMpIGAoeCAuICxzKSkgMSsgMCkKLQkJCSAgIGVxPykKLQkJ CSAgJ3gpKSkKLQotICAocGFzcy1pZiAiaGFzaC10YWJsZS13YWxrIGlnbm9yZXMgcmV0dXJuIHZh bHVlcyIKLSAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAuIDIp IChjIC4gMykpIGVxPykpKQotICAgICAgKGZvci1lYWNoIChjdXQgaGFzaC10YWJsZS13YWxrIGh0 IDw+KQotCQkobGlzdCAobGFtYmRhIChrIHYpICh2YWx1ZXMpKQotCQkgICAgICAobGFtYmRhIChr IHYpICh2YWx1ZXMgMSAyIDMpKSkpCi0gICAgICAjdCkpCi0KLSAgKHBhc3MtaWYgImhhc2gtdGFi bGUtdXBkYXRlISBtb2RpZmllcyBleGlzdGluZyBiaW5kaW5nIgotICAgIChsZXQgKChodCAoYWxp c3QtPmhhc2gtdGFibGUgJygoYSAuIDEpKSBlcT8pKSkKLSAgICAgIChoYXNoLXRhYmxlLXVwZGF0 ZSEgaHQgJ2EgMSspCi0gICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0ICdhIChjdXQgKyA0IDw+ KSAobGFtYmRhICgpIDQyKSkKLSAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkK LQkgICAobHNldD0gZXF1YWw/ICcoKGEgLiA2KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkK LQotICAocGFzcy1pZiAiaGFzaC10YWJsZS11cGRhdGUhIGNyZWF0ZXMgbmV3IGJpbmRpbmcgd2hl biBhcHByb3ByaWF0ZSIKLSAgICAobGV0ICgoaHQgKG1ha2UtaGFzaC10YWJsZSBlcT8pKSkKLSAg ICAgIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQgJ2IgMSsgKGxhbWJkYSAoKSA0MikpCi0gICAgICAo aGFzaC10YWJsZS11cGRhdGUhIGh0ICdiIChjdXQgKyAxMCA8PikpCi0gICAgICAoYW5kICg9IDEg KGhhc2gtdGFibGUtc2l6ZSBodCkpCi0JICAgKGxzZXQ9IGVxdWFsPyAnKChiIC4gNTMpKSAoaGFz aC10YWJsZS0+YWxpc3QgaHQpKSkpKQorICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChs aXN0ICNmICdrZXkgJ3ZhbHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3Ry LXdlYWtuZXNzICJlbXB0eSBoYXNoIHRhYmxlcyBhcmUgZW1wdHkiIHdlYWtuZXNzKQorICAgICAg KGxldCBsb29wICgod2Vha25lc3MtbGlzdCAobGlzdCAjZiAna2V5ICd2YWx1ZSAna2V5LW9yLXZh bHVlKSkpCisgICAgICAgIChvciAobnVsbD8gd2Vha25lc3MtbGlzdCkKKyAgICAgICAgICAgIChs ZXQgKCh3ZWFrbmVzcyAoY2FyIHdlYWtuZXNzLWxpc3QpKSkKKyAgICAgICAgICAgICAgKGFuZCAo bnVsbD8gKGhhc2gtdGFibGUtPmFsaXN0IChtYWtlLWhhc2gtdGFibGUgZXE/ICM6d2VhayB3ZWFr bmVzcykpKQorICAgICAgICAgICAgICAgICAgIChsb29wIChjZHIgd2Vha25lc3MtbGlzdCkpKSkp KSkpCisKKyAgKHdpdGgtd2Vha25lc3MtbGlzdCB3ZWFrbmVzcyAobGlzdCAjZiAna2V5ICd2YWx1 ZSAna2V5LW9yLXZhbHVlKQorICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10 YWJsZS1yZWYgdXNlcyBkZWZhdWx0IiB3ZWFrbmVzcykKKyAgICAgIChlcXVhbD8gJyg0KQorICAg ICAgICAgICAgICAoaGFzaC10YWJsZS1yZWYgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSkg ZXE/ICM6d2VhayB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiIChj dXQgbGlzdCAoKyAyIDIpKSkpKSkKKworICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChs aXN0ICNmICdrZXkgJ3ZhbHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3Ry LXdlYWtuZXNzICJoYXNoLXRhYmxlLWRlbGV0ZSEgZGVsZXRlcyBwcmVzZW50IGFzc29jcywgaWdu b3JlcyBvdGhlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtuZXNzKQor ICAgICAgKGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/ ICM6d2VhayB3ZWFrbmVzcykpKQorICAgICAgICAoaGFzaC10YWJsZS1kZWxldGUhIGh0ICdjKQor ICAgICAgICAoYW5kICg9IDIgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAgICAgKGJl Z2luCisgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1kZWxldGUhIGh0ICdhKQorICAgICAgICAg ICAgICAgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkpCisgICAgICAgICAgICAgKGxzZXQ9IGVx dWFsPyAnKChiIC4gMikpIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkpKQorCisgICh3aXRoLXdl YWtuZXNzLWxpc3Qgd2Vha25lc3MgKGxpc3QgI2YgJ2tleSAndmFsdWUgJ2tleS1vci12YWx1ZSkK KyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImFsaXN0LT5oYXNoLXRhYmxlIGRvZXMg bm90IHJlcXVpcmUgbGluZWFyIHN0YWNrIHNwYWNlIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3ZWFrbmVzcykKKyAgICAgIChlcXY/IDk5OTk5CisgICAgICAgICAgICAoaGFzaC10 YWJsZS1yZWYgKGFsaXN0LT5oYXNoLXRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh1bmZvbGQtcmlnaHQgKGN1dCA+PSA8PiAxMDAwMDApCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAocykgYCh4IC4gLHMpKSAxKyAwKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlcT8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Izp3ZWFrIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4KSkpKQorCisg ICh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3MgKGxpc3QgI2YgJ2tleSAndmFsdWUgJ2tleS1v ci12YWx1ZSkKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtd2Fs ayBpZ25vcmVzIHJldHVybiB2YWx1ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkg KGIgLiAyKSAoYyAuIDMpKSBlcT8pKSkKKyAgICAgICAgKGZvci1lYWNoIChjdXQgaGFzaC10YWJs ZS13YWxrIGh0IDw+KQorICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhbWJkYSAoayB2KSAodmFs dWVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGsgdikgKHZhbHVlcyAxIDIg MykpKSkKKyAgICAgICAgI3QpKSkKKworICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChs aXN0ICNmICdrZXkgJ3ZhbHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3Ry LXdlYWtuZXNzICJoYXNoLXRhYmxlLXVwZGF0ZSEgbW9kaWZpZXMgZXhpc3RpbmcgYmluZGluZyIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha25lc3MpCisgICAgICAobGV0ICgo aHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSkgZXE/ICM6d2VhayB3ZWFrbmVzcykpKQor ICAgICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0ICdhIDErKQorICAgICAgICAoaGFzaC10YWJs ZS11cGRhdGUhIGh0ICdhIChjdXQgKyA0IDw+KSAobGFtYmRhICgpIDQyKSkKKyAgICAgICAgKGFu ZCAoPSAxIChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgIChsc2V0PSBlcXVhbD8g JygoYSAuIDYpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpKSkKKworICAod2l0aC13ZWFrbmVz cy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdrZXkgJ3ZhbHVlICdrZXktb3ItdmFsdWUpCisgICAg KHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxlLXVwZGF0ZSEgY3JlYXRlcyBu ZXcgYmluZGluZyB3aGVuIGFwcHJvcHJpYXRlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIGVxPyAjOndl YWsgd2Vha25lc3MpKSkKKyAgICAgICAgKGhhc2gtdGFibGUtdXBkYXRlISBodCAnYiAxKyAobGFt YmRhICgpIDQyKSkKKyAgICAgICAgKGhhc2gtdGFibGUtdXBkYXRlISBodCAnYiAoY3V0ICsgMTAg PD4pKQorICAgICAgICAoYW5kICg9IDEgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAg ICAgKGxzZXQ9IGVxdWFsPyAnKChiIC4gNTMpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpKSkK KworICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdrZXkgJ3ZhbHVlICdr ZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxl LW1lcmdlISBmdW5jdGlvbnMgcHJvcGVybHkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdlYWtuZXNzKQorICAgICAgKGxldCogKChodDEgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEg LiAxKSAoYiAuIDIpKSBlcT8gIzp3ZWFrIHdlYWtuZXNzKSkKKyAgICAgICAgICAgICAoaHQyIChh bGlzdC0+aGFzaC10YWJsZSAnKChiIC4gMykgKGMgLiA0KSkgZXE/ICM6d2VhayB3ZWFrbmVzcykp KQorICAgICAgICAoc2V0ISBodDEgKGhhc2gtdGFibGUtbWVyZ2UhIGh0MSBodDIpKQorICAgICAg ICAoYW5kICg9IDMgKGhhc2gtdGFibGUtc2l6ZSBodDEpKQorICAgICAgICAgICAgICg9IDIgKGhh c2gtdGFibGUtc2l6ZSBodDIpKQorICAgICAgICAgICAgIChsc2V0PSBlcXVhbD8gJygoYSAuIDEp IChiIC4gMykgKGMgLiA0KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0MSkpCisgICAgICAgICAgICAg KGxzZXQ9IGVxdWFsPyAnKChiIC4gMykgKGMgLiA0KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0Mikp KSkpKQogCiAgIChwYXNzLWlmICJjYW4gdXNlIGFsbCBhcmd1bWVudHMsIGluY2x1ZGluZyBzaXpl IgogICAgIChoYXNoLXRhYmxlPyAobWFrZS1oYXNoLXRhYmxlIGVxdWFsPyBoYXNoICM6d2VhayAn a2V5IDMxKSkpCiAKLSkKKyAgKQotLSAKMi4xOS4xCgo= --0000000000004d8042057db38bed--
X-Loop: help-debbugs@HIDDEN Subject: bug#33827: Patches Resent-From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= <jessymilare@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Wed, 09 Jan 2019 00:22:01 +0000 Resent-Message-ID: <handler.33827.B33827.15469932844542 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 33827 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 33827 <at> debbugs.gnu.org Received: via spool by 33827-submit <at> debbugs.gnu.org id=B33827.15469932844542 (code B ref 33827); Wed, 09 Jan 2019 00:22:01 +0000 Received: (at 33827) by debbugs.gnu.org; 9 Jan 2019 00:21:24 +0000 Received: from localhost ([127.0.0.1]:50659 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1gh1ca-0001BC-BX for submit <at> debbugs.gnu.org; Tue, 08 Jan 2019 19:21:24 -0500 Received: from mail-io1-f46.google.com ([209.85.166.46]:36210) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jessymilare@HIDDEN>) id 1gh1cY-0001Az-Cy for 33827 <at> debbugs.gnu.org; Tue, 08 Jan 2019 19:21:22 -0500 Received: by mail-io1-f46.google.com with SMTP id m19so4670880ioh.3 for <33827 <at> debbugs.gnu.org>; Tue, 08 Jan 2019 16:21:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=hPKnBztstyAL426C2WIwSz5LV+xsm3dsuY3t6JHnAso=; b=NL//hpDbAMiwhkko4+/sp7eVvq+ZuLD1HS3eVVjUQk4mXi+r9VBcpiACXOiE1vtWuR +kiHfV4hbR9oezSucw0xAIFtPNHG5Fhay+htKSCe534wJop6Ix1fUcrRkvYP5eQX3/me njAww2Nej9vjwmJdfVU1ct7q0vMUHdOgZKubnCu05MwuJYB+PXtKWzV2ZIM7G5b8p3Xn nQV8wNX/5+hh1u7aRTNNdIuJV0RMohpCJKArQdQNcHjUs7wqUA2pRFHB9Bh8bPMiEN0B noS/wjmAo3HgOvSxAJ4Lvpw0XnW/fVBJSTORX50y5xO76VI+wRQmifzyUF2KxVKETsJf Dp6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=hPKnBztstyAL426C2WIwSz5LV+xsm3dsuY3t6JHnAso=; b=WuSM/7LfpqbS2/xVH23XBDqdpnSZmnANCDjD7TtPtR3c9iWP2De82trH7P9T8coczd wCHpzBrxdEnl9zMJgBoXLNFX7jspZeglUw6N/bB1KUgnacpwXS4Eelprn+se9KpCouih hsIwSwrmLmXBhESxn+72gGZ5tdSe8IG//RyyIEyttmAxdV585Dd0Cl805wLxIqN580Tj vaNQRXa2HPkHikzymjS1ATQAHmE+WZ9oowylPQcT4W6DGWyzibfukg0exmYomGGurckd QivgLSYMU1vkREdfokp2xaeEZnwv6gSwKYveLUllrlyde4yQ1BgUJz4Lt66m0UQjpIuN +W2Q== X-Gm-Message-State: AJcUukfYEzRdp43BotxlwFlXMw1NKeNR3dmPpjNLQYxyAv7fgcNAJsak EfXevIEWAh3aOGYu4DMRoq9PdLhl9oOkNFe2p60yCgkX X-Google-Smtp-Source: ALg8bN7ihvv9V9CukS3mjcnYDlYQNnloZO8y7cVJUx5tVqNpRf2Owzl7Psni3r7GUdNZyUAZJFttf0UVQQ96GsGbqr0= X-Received: by 2002:a6b:da10:: with SMTP id x16mr2494069iob.101.1546993276398; Tue, 08 Jan 2019 16:21:16 -0800 (PST) MIME-Version: 1.0 References: <CAGBcF1Z5WmXij2vX+EhxQHvWkmmOkeL-hV+Y-SUSpByH0tZQHw@HIDDEN> In-Reply-To: <CAGBcF1Z5WmXij2vX+EhxQHvWkmmOkeL-hV+Y-SUSpByH0tZQHw@HIDDEN> From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= <jessymilare@HIDDEN> Date: Tue, 8 Jan 2019 22:21:04 -0200 Message-ID: <CAGBcF1aZrZhBjEk=tvsJHLJnMDc1ERt-ZaCiwOzqMksnfZsP_Q@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000b6a39d057efb700b" X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> --000000000000b6a39d057efb700b Content-Type: multipart/alternative; boundary="000000000000b6a39a057efb7009" --000000000000b6a39a057efb7009 Content-Type: text/plain; charset="UTF-8" Patch 0001 fixes SRFI-69 bugs as specified. Patches 0002 to 0005 implement the module (ice-9 generic-hash-tables) and then reimplement SRFI-69 and (rnrs hashtables) and add an implementation of SRFI 126, all of them using generic-hash-tables (and therefore compatible to each other). I've called `make check' after each commit and all tests PASS: or XFAIL:, except the four tests in linker.test, as reported in Bug 33991[1]. [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=33991 --000000000000b6a39a057efb7009 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">Patch 0001 fixes SRFI-69= bugs as specified. Patches 0002 to 0005 implement the module (ice-9 generi= c-hash-tables) and then reimplement SRFI-69 and (rnrs hashtables) and add a= n implementation of SRFI 126, all of them using generic-hash-tables (and th= erefore compatible to each other).<div><br></div><div>I've called `make= check' after each commit and all tests PASS: or XFAIL:, except the fou= r tests in linker.test, as reported in Bug=C2=A033991[1].</div><div><br></d= iv><div>[1]=C2=A0<a href=3D"https://debbugs.gnu.org/cgi/bugreport.cgi?bug= =3D33991">https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D33991</a></div></= div></div></div> --000000000000b6a39a057efb7009-- --000000000000b6a39d057efb700b Content-Type: text/x-patch; charset="US-ASCII"; name="0003-Reimplemented-SRFI-69-using-GENERIC-HASH-TABLES.patch" Content-Disposition: attachment; filename="0003-Reimplemented-SRFI-69-using-GENERIC-HASH-TABLES.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqofmio12> X-Attachment-Id: f_jqofmio12 RnJvbSBhODM5NDZmMGNkOGFiYjY0YjliODkwNjY4OTM4Njc1OTU1ODE1OTE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDggSmFuIDIwMTkgMjI6MDI6MjUg LTAyMDAKU3ViamVjdDogW1BBVENIIDMvNV0gUmVpbXBsZW1lbnRlZCBTUkZJLTY5IHVzaW5nIEdF TkVSSUMtSEFTSC1UQUJMRVMKCi0tLQogbW9kdWxlL3JucnMvaGFzaHRhYmxlcy5zY20gICAgfCAg MjkgKystLQogbW9kdWxlL3NyZmkvc3JmaS02OS5zY20gICAgICAgfCAzMTggKysrKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTY5LnRlc3QgfCAg IDMgKy0KIDMgZmlsZXMgY2hhbmdlZCwgOTMgaW5zZXJ0aW9ucygrKSwgMjU3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL21vZHVsZS9ybnJzL2hhc2h0YWJsZXMuc2NtIGIvbW9kdWxlL3JucnMv aGFzaHRhYmxlcy5zY20KaW5kZXggMjJiYWU3ZjA5Li40ODY0NTJhMmEgMTAwNjQ0Ci0tLSBhL21v ZHVsZS9ybnJzL2hhc2h0YWJsZXMuc2NtCisrKyBiL21vZHVsZS9ybnJzL2hhc2h0YWJsZXMuc2Nt CkBAIC02Nyw2ICs2Nyw3IEBACiAJCQkJICAgaGFzaC10YWJsZS1mb2xkKQogCQkgIChoYXNoIGVx dWFsLWhhc2gpCiAJCSAgKGhhc2gtYnktaWRlbnRpdHkgc3ltYm9sLWhhc2gpKQorICAgICAgICAg IChvbmx5IChpY2UtOSBnZW5lcmljLWhhc2gtdGFibGVzKSBoYXNoLWJ5LXZhbHVlKQogCSAgKHJu cnMgYmFzZSAoNikpCiAJICAocm5ycyByZWNvcmRzIHByb2NlZHVyYWwgKDYpKSkKICAgCkBAIC05 MCw5ICs5MSw5IEBACiAKICAgKGRlZmluZSBoYXNodGFibGUtbXV0YWJsZT8gcjZyczpoYXNodGFi bGUtbXV0YWJsZT8pCiAKLSAgKGRlZmluZSBoYXNoLWJ5LXZhbHVlICgoQEAgKHNyZmkgc3JmaS02 OSkgY2FsbGVyLXdpdGgtZGVmYXVsdC1zaXplKSBoYXNodikpCi0gIChkZWZpbmUgKHdyYXAtaGFz aC1mdW5jdGlvbiBwcm9jKSAKLSAgICAobGFtYmRhIChrZXkgY2FwYWNpdHkpIChtb2R1bG8gKHBy b2Mga2V5KSBjYXBhY2l0eSkpKQorICA7OyAoZGVmaW5lIGhhc2gtYnktdmFsdWUgKChAQCAoc3Jm aSBzcmZpLTY5KSBjYWxsZXItd2l0aC1kZWZhdWx0LXNpemUpIGhhc2h2KSkKKyAgOzsgKGRlZmlu ZSAod3JhcC1oYXNoLWZ1bmN0aW9uIHByb2MpCisgIDs7ICAgKGxhbWJkYSAoa2V5IGNhcGFjaXR5 KSAobW9kdWxvIChwcm9jIGtleSkgY2FwYWNpdHkpKSkKIAogICAoZGVmaW5lKiAobWFrZS1lcS1o YXNodGFibGUgIzpvcHRpb25hbCBrKQogICAgIChtYWtlLXI2cnMtaGFzaHRhYmxlIApAQCAtMTA5 LDE0ICsxMTAsMTMgQEAKICAgICAgJ2VxdikpCiAKICAgKGRlZmluZSogKG1ha2UtaGFzaHRhYmxl IGhhc2gtZnVuY3Rpb24gZXF1aXYgIzpvcHRpb25hbCBrKQotICAgIChsZXQgKCh3cmFwcGVkLWhh c2gtZnVuY3Rpb24gKHdyYXAtaGFzaC1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uKSkpCi0gICAgICAo bWFrZS1yNnJzLWhhc2h0YWJsZQotICAgICAgIChpZiBrIAotCSAgIChtYWtlLWhhc2gtdGFibGUg ZXF1aXYgd3JhcHBlZC1oYXNoLWZ1bmN0aW9uIGspCi0JICAgKG1ha2UtaGFzaC10YWJsZSBlcXVp diB3cmFwcGVkLWhhc2gtZnVuY3Rpb24pKQotICAgICAgIGhhc2gtZnVuY3Rpb24KLSAgICAgICAj dAotICAgICAgICdjdXN0b20pKSkKKyAgICAobWFrZS1yNnJzLWhhc2h0YWJsZQorICAgICAoaWYg aworICAgICAgICAgKG1ha2UtaGFzaC10YWJsZSBlcXVpdiBoYXNoLWZ1bmN0aW9uIGspCisgICAg ICAgICAobWFrZS1oYXNoLXRhYmxlIGVxdWl2IGhhc2gtZnVuY3Rpb24pKQorICAgICBoYXNoLWZ1 bmN0aW9uCisgICAgICN0CisgICAgICdjdXN0b20pKQogIAogICAoZGVmaW5lIChoYXNodGFibGUt c2l6ZSBoYXNodGFibGUpCiAgICAgKGhhc2gtdGFibGUtc2l6ZSAocjZyczpoYXNodGFibGUtd3Jh cHBlZC10YWJsZSBoYXNodGFibGUpKSkKQEAgLTE1NiwxMyArMTU2LDEyIEBACiAgICAgKGlmIChy NnJzOmhhc2h0YWJsZS1tdXRhYmxlPyBoYXNodGFibGUpCiAJKGxldCogKChodCAocjZyczpoYXNo dGFibGUtd3JhcHBlZC10YWJsZSBoYXNodGFibGUpKQogCSAgICAgICAoZXF1aXYgKGhhc2gtdGFi bGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQpKQotCSAgICAgICAoaGFzaC1mdW5jdGlvbiAocjZy czpoYXNodGFibGUtb3JpZy1oYXNoLWZ1bmN0aW9uIGhhc2h0YWJsZSkpCi0JICAgICAgICh3cmFw cGVkLWhhc2gtZnVuY3Rpb24gKHdyYXAtaGFzaC1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uKSkpCisJ ICAgICAgIChoYXNoLWZ1bmN0aW9uIChyNnJzOmhhc2h0YWJsZS1vcmlnLWhhc2gtZnVuY3Rpb24g aGFzaHRhYmxlKSkpCiAJICAocjZyczpoYXNodGFibGUtc2V0LXdyYXBwZWQtdGFibGUhCiAJICAg aGFzaHRhYmxlCiAJICAgKGlmIGsgCi0JICAgICAgIChtYWtlLWhhc2gtdGFibGUgZXF1aXYgd3Jh cHBlZC1oYXNoLWZ1bmN0aW9uIGspCi0JICAgICAgIChtYWtlLWhhc2gtdGFibGUgZXF1aXYgd3Jh cHBlZC1oYXNoLWZ1bmN0aW9uKSkpKSkKKwkgICAgICAgKG1ha2UtaGFzaC10YWJsZSBlcXVpdiBo YXNoLWZ1bmN0aW9uIGspCisJICAgICAgIChtYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1mdW5j dGlvbikpKSkpCiAgICAgKnVuc3BlY2lmaWVkKikKIAogICAoZGVmaW5lIChoYXNodGFibGUta2V5 cyBoYXNodGFibGUpCmRpZmYgLS1naXQgYS9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbSBiL21vZHVs ZS9zcmZpL3NyZmktNjkuc2NtCmluZGV4IDJiN2ZiOWE3Zi4uYWU1YmM3ZjA2IDEwMDY0NAotLS0g YS9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbQorKysgYi9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbQpA QCAtMTYsNyArMTYsOCBAQAogOzsgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogOzsgRm91bmRhdGlvbiwgSW5jLiwgNTEg RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQog DAotOzs7OyBDb21tZW50YXJ5OgorCis7Ozs7IE9yaWdpbmFsIChzdGFsZSkgU1JGSS02OSBjb21t ZW50YXJ5OgogCiA7OyBNeSBgaGFzaCcgaXMgY29tcGF0aWJsZSB3aXRoIGNvcmUgYGhhc2gnLCBz byBJIHJlcGxhY2UgaXQuCiA7OyBIb3dldmVyLCBteSBgaGFzaC10YWJsZT8nIGFuZCBgbWFrZS1o YXNoLXRhYmxlJyBhcmUgZGlmZmVyZW50LCBzbwpAQCAtNjUsOCArNjYsNyBAQAogCiA7Ozs7IENv bW1lbnRhcnkgYnkgSmVzc2ljYSBNaWxhcmUgMjAxOAogCi07OyBNYWtlIGJ1ZyBmaXhlcyBmb3Ig d2VhayBoYXNoLXRhYmxlcywgc2luY2UgaGFuZGxlcyBkb24ndCB3b3JrIGFueW1vcmUsCi07OyBh bmQgYWxzbyBzb21lIG9wdGltaXphdGlvbnMuCis7OyBOb3cgaW1wbGVtZW50ZWQgdXNpbmcgbW9k dWxlIChpY2UtOSBnZW5lcmljLWhhc2gtdGFibGVzKQogOzsKIDs7IE15IHBlcnNvbmFsIGNvbW1l bnRzIGFyZSBtYXJrZWQgYnkgSi5NLgogCkBAIC03NSwzMDAgKzc1LDEzNiBAQAogOzs7OyBNb2R1 bGUgZGVmaW5pdGlvbiAmIGV4cG9ydHMKIAogKGRlZmluZS1tb2R1bGUgKHNyZmkgc3JmaS02OSkK LSAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkJO2FsaXN0LWNvbnMsc2Vjb25kJmMsYXNzb2MK LSAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktOSkKLSAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmkt MTMpCTtzdHJpbmctaGFzaCxzdHJpbmctaGFzaC1jaQotICAjOnVzZS1tb2R1bGUgKGljZS05IG9w dGFyZ3MpCi0gICM6ZXhwb3J0ICg7OyBUeXBlIGNvbnN0cnVjdG9ycyAmIHByZWRpY2F0ZQotCSAg ICBtYWtlLWhhc2gtdGFibGUgaGFzaC10YWJsZT8gYWxpc3QtPmhhc2gtdGFibGUKKyAgIzp1c2Ut bW9kdWxlIChzcmZpIHNyZmktMSkKKyAgIzp1c2UtbW9kdWxlICgoaWNlLTkgZ2VuZXJpYy1oYXNo LXRhYmxlcykgIzpwcmVmaXggZ2VuOikKKyAgIzpyZXBsYWNlIChtYWtlLWhhc2gtdGFibGUgaGFz aC10YWJsZT8gaGFzaCkKKyAgIzpleHBvcnQgKDs7IFR5cGUgY29uc3RydWN0b3JzCisgICAgICAg ICAgICBtYWtlLWhhc2gtdGFibGUKKyAgICAgICAgICAgIGhhc2gtdGFibGU/IGFsaXN0LT5oYXNo LXRhYmxlCiAgICAgICAgICAgICA7OyBSZWZsZWN0aXZlIHF1ZXJpZXMKICAgICAgICAgICAgIGhh c2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uCiAg ICAgICAgICAgICA7OyBEZWFsaW5nIHdpdGggc2luZ2xlIGVsZW1lbnRzCiAgICAgICAgICAgICBo YXNoLXRhYmxlLXJlZiBoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGhhc2gtdGFibGUtc2V0IQotICAg ICAgICAgICAgaGFzaC10YWJsZS1kZWxldGUhIGhhc2gtdGFibGUtZXhpc3RzPyBoYXNoLXRhYmxl LXVwZGF0ZSEKKyAgICAgICAgICAgIGhhc2gtdGFibGUtZGVsZXRlISBoYXNoLXRhYmxlLXVwZGF0 ZSEKICAgICAgICAgICAgIGhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0CisgICAgICAgICAgICBo YXNoLXRhYmxlLWV4aXN0cz8KICAgICAgICAgICAgIDs7IERlYWxpbmcgd2l0aCB0aGUgd2hvbGUg Y29udGVudHMKICAgICAgICAgICAgIGhhc2gtdGFibGUtc2l6ZSBoYXNoLXRhYmxlLWtleXMgaGFz aC10YWJsZS12YWx1ZXMKLSAgICAgICAgICAgIGhhc2gtdGFibGUtd2FsayBoYXNoLXRhYmxlLWZv bGQgaGFzaC10YWJsZS0+YWxpc3QKLSAgICAgICAgICAgIGhhc2gtdGFibGUtY29weSBoYXNoLXRh YmxlLW1lcmdlIQorICAgICAgICAgICAgaGFzaC10YWJsZS0+YWxpc3QgaGFzaC10YWJsZS1mb2xk CisgICAgICAgICAgICBoYXNoLXRhYmxlLXdhbGsgaGFzaC10YWJsZS1tZXJnZSEKKyAgICAgICAg ICAgIGhhc2gtdGFibGUtY29weQogICAgICAgICAgICAgOzsgSGFzaGluZwotICAgICAgICAgICAg c3RyaW5nLWNpLWhhc2ggaGFzaC1ieS1pZGVudGl0eSkKLSAgIzpyZS1leHBvcnQgKHN0cmluZy1o YXNoKQotICAjOnJlcGxhY2UgKGhhc2ggbWFrZS1oYXNoLXRhYmxlIGhhc2gtdGFibGU/KSkKKyAg ICAgICAgICAgIHN0cmluZy1jaS1oYXNoIGhhc2gtYnktaWRlbnRpdHkgaGFzaCkKKyAgIzpyZS1l eHBvcnQgKHN0cmluZy1oYXNoKSkKIAogKGNvbmQtZXhwYW5kLXByb3ZpZGUgKGN1cnJlbnQtbW9k dWxlKSAnKHNyZmktNjkpKQotDAotOzs7OyBJbnRlcm5hbCBoZWxwZXIgbWFjcm9zCi0KLTs7IERl ZmluZSB0aGVzZSBmaXJzdCwgc28gdGhlIGNvbXBpbGVyIHdpbGwgcGljayB0aGVtIHVwLgotCi07 OyBJIGFtIGEgbWFjcm8gb25seSBmb3IgZWZmaWNpZW5jeSwgdG8gYXZvaWQgdmFyYXJncy9hcHBs eS4KLShkZWZpbmUtbWFjcm8gKGhhc2h4LWludm9rZSBoYXNoeC1wcm9jIGh0LXZhciAuIGFyZ3Mp Ci0gICJJbnZva2UgSEFTSFgtUFJPQywgYSBgaGFzaHgtKicgcHJvY2VkdXJlIHRha2luZyBhIGhh c2gtZnVuY3Rpb24sCi1hc3NvYy1mdW5jdGlvbiwgYW5kIHRoZSBoYXNoLXRhYmxlIGFzIGZpcnN0 IGFyZ3MuIgotICBgKCxoYXNoeC1wcm9jIChoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24gLGh0LXZh cikKLQkJKGh0LWFzc29jaWF0b3IgLGh0LXZhcikKLQkJKGh0LXJlYWwtdGFibGUgLGh0LXZhcikK LQkJLiAsYXJncykpCiAKLShkZWZpbmUtbWFjcm8gKHdpdGgtaGFzaHgtdmFsdWVzIGJpbmRpbmdz IGh0LXZhciAuIGJvZHktZm9ybXMpCi0gICJCaW5kIEJJTkRJTkdTIHRvIHRoZSBoYXNoLWZ1bmN0 aW9uLCBhc3NvY2lhdG9yLCBhbmQgcmVhbC10YWJsZSBvZgotSFQtVkFSLCB3aGlsZSBldmFsdWF0 aW5nIEJPRFktRk9STVMuIgotICBgKGxldCAoKCwoZmlyc3QgYmluZGluZ3MpIChoYXNoLXRhYmxl LWhhc2gtZnVuY3Rpb24gLGh0LXZhcikpCi0JICgsKHNlY29uZCBiaW5kaW5ncykgKGh0LWFzc29j aWF0b3IgLGh0LXZhcikpCi0JICgsKHRoaXJkIGJpbmRpbmdzKSAoaHQtcmVhbC10YWJsZSAsaHQt dmFyKSkpCi0gICAgIC4gLGJvZHktZm9ybXMpKQotCi0MCiA7Ozs7IEhhc2hpbmcKLQotOzs7IFRo ZSBsYXJnZXN0IGZpeG51bSBpcyBpbiBgbW9zdC1wb3NpdGl2ZS1maXhudW0nIGluIG1vZHVsZSAo Z3VpbGUpLAotOzs7IHRob3VnaCBub3QgZG9jdW1lbnRlZCBhbnl3aGVyZSBidXQgbGliZ3VpbGUv bnVtYmVycy5jLgotCi0oZGVmaW5lIChjYWxsZXItd2l0aC1kZWZhdWx0LXNpemUgaGFzaC1mbikK LSAgIkFuc3dlciBhIGZ1bmN0aW9uIHRoYXQgbWFrZXMgYG1vc3QtcG9zaXRpdmUtZml4bnVtJyB0 aGUgZGVmYXVsdAotc2Vjb25kIGFyZ3VtZW50IHRvIEhBU0gtRk4sIGEgMi1hcmcgcHJvY2VkdXJl LiIKLSAgKGxhbWJkYSogKG9iaiAjOm9wdGlvbmFsIChzaXplIG1vc3QtcG9zaXRpdmUtZml4bnVt KSkKLSAgICAoaGFzaC1mbiBvYmogc2l6ZSkpKQotCi0oZGVmaW5lIGhhc2ggKGNhbGxlci13aXRo LWRlZmF1bHQtc2l6ZSAoQCAoZ3VpbGUpIGhhc2gpKSkKLQogKGRlZmluZSBzdHJpbmctY2ktaGFz aCBzdHJpbmctaGFzaC1jaSkKKyhkZWZpbmUgaGFzaCBnZW46aGFzaCkKKyhkZWZpbmUgaGFzaC1i eS1pZGVudGl0eSBnZW46aGFzaC1ieS1pZGVudGl0eSkKIAotKGRlZmluZSBoYXNoLWJ5LWlkZW50 aXR5IChjYWxsZXItd2l0aC1kZWZhdWx0LXNpemUgaGFzaHEpKQogDAogOzs7OyBSZWZsZWN0aXZl IHF1ZXJpZXMsIGNvbnN0cnVjdGlvbiwgcHJlZGljYXRlCiAKLShkZWZpbmUtcmVjb3JkLXR5cGUg c3JmaS02OTpoYXNoLXRhYmxlCi0gIChtYWtlLXNyZmktNjktaGFzaC10YWJsZSByZWFsLXRhYmxl IGFzc29jaWF0b3Igc2l6ZSB3ZWFrbmVzcwotCQkJICAgZXF1aXZhbGVuY2UtZnVuY3Rpb24gaGFz aC1mdW5jdGlvbikKLSAgaGFzaC10YWJsZT8KLSAgKHJlYWwtdGFibGUgaHQtcmVhbC10YWJsZSkK LSAgKGFzc29jaWF0b3IgaHQtYXNzb2NpYXRvcikKLSAgOzsgcmVxdWlyZWQgZm9yIE8oMSkgYnkg U1JGSS02OS4gIEl0IHJlYWxseSBtYWtlcyBhIG1lc3Mgb2YgdGhpbmdzLAotICA7OyBhbmQgSSdk IGxpa2UgdG8gY29tcHV0ZSBpdCBpbiBPKG4pIGFuZCBtZW1vaXplIGl0IGJlY2F1c2UgaXQKLSAg OzsgZG9lc24ndCBzZWVtIHRlcnJpYmx5IHVzZWZ1bCwgYnV0IFNSRkktNjkgaXMgZmluYWwuCi0g IChzaXplIGh0LXNpemUgaHQtc2l6ZSEpCi0gIDs7IHJlcXVpcmVkIGZvciBgaGFzaC10YWJsZS1j b3B5JwotICAod2Vha25lc3MgaHQtd2Vha25lc3MpCi0gIDs7IHVzZWQgb25seSB0byBpbXBsZW1l bnQgaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbjsgSSBkb24ndAotICA7OyB1c2UgaXQg aW50ZXJuYWxseSBvdGhlciB0aGFuIGZvciBgaHQtYXNzb2NpYXRvcicuCi0gIChlcXVpdmFsZW5j ZS1mdW5jdGlvbiBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uKQotICAoaGFzaC1mdW5j dGlvbiBoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24pKQorKGRlZmluZSBoYXNoLXRhYmxlPyBnZW46 aGFzaC10YWJsZT8pCiAKIChkZWZpbmUgKGd1ZXNzLWhhc2gtZnVuY3Rpb24gZXF1YWwtcHJvYykK ICAgIkd1ZXNzIGEgaGFzaCBmdW5jdGlvbiBmb3IgRVFVQUwtUFJPQywgZmFsbGluZyBiYWNrIG9u IGBoYXNoJywgYXMKIHNwZWNpZmllZCBpbiBTUkZJLTY5IGZvciBgbWFrZS1oYXNoLXRhYmxlJy4i Ci0gIChjb25kICgoZXE/IGVxdWFsPyBlcXVhbC1wcm9jKSAoQCAoZ3VpbGUpIGhhc2gpKSA7c2hv cnRjdXQgbW9zdCBjb21tb24gY2FzZQotCSgoZXE/IGVxPyBlcXVhbC1wcm9jKSBoYXNocSkKLQko KGVxPyBlcXY/IGVxdWFsLXByb2MpIGhhc2h2KQotCSgoZXE/IHN0cmluZz0/IGVxdWFsLXByb2Mp IHN0cmluZy1oYXNoKQotCSgoZXE/IHN0cmluZy1jaT0/IGVxdWFsLXByb2MpIHN0cmluZy1jaS1o YXNoKQotCShlbHNlIChAIChndWlsZSkgaGFzaCkpKSkKLQotKGRlZmluZSAod2l0aG91dC1rZXl3 b3JkLWFyZ3MgcmVzdC1saXN0KQotICAiQW5zd2VyIFJFU1QtTElTVCB3aXRoIGFsbCBrZXl3b3Jk cyByZW1vdmVkIGFsb25nIHdpdGggaXRlbXMgdGhhdAotZm9sbG93IHRoZW0uIgotICAobGV0IGxw ICgoYWNjICcoKSkgKHJlc3QtbGlzdCByZXN0LWxpc3QpKQotICAgIChjb25kICgobnVsbD8gcmVz dC1saXN0KSAocmV2ZXJzZSEgYWNjKSkKLQkgICgoa2V5d29yZD8gKGZpcnN0IHJlc3QtbGlzdCkp Ci0JICAgKGxwIGFjYyAoY2RkciByZXN0LWxpc3QpKSkKLQkgIChlbHNlIChscCAoY29ucyAoZmly c3QgcmVzdC1saXN0KSBhY2MpIChjZHIgcmVzdC1saXN0KSkpKSkpCi0KLShkZWZpbmUgKGd1aWxl LWh0LWN0b3Igd2Vha25lc3MpCi0gICJBbnN3ZXIgdGhlIEd1aWxlIEhUIGNvbnN0cnVjdG9yIGZv ciB0aGUgZ2l2ZW4gV0VBS05FU1MuIgotICAoY2FzZSB3ZWFrbmVzcwotICAgICgoI2YpIChAIChn dWlsZSkgbWFrZS1oYXNoLXRhYmxlKSkKLSAgICAoKGtleSkgbWFrZS13ZWFrLWtleS1oYXNoLXRh YmxlKQotICAgICgodmFsdWUpIG1ha2Utd2Vhay12YWx1ZS1oYXNoLXRhYmxlKQotICAgICgoa2V5 LW9yLXZhbHVlKSBtYWtlLWRvdWJseS13ZWFrLWhhc2gtdGFibGUpCi0gICAgKGVsc2UgKGVycm9y ICJJbnZhbGlkIHdlYWsgaGFzaCB0YWJsZSB0eXBlIiB3ZWFrbmVzcykpKSkKLQotKGRlZmluZSAo ZXF1aXZhbGVuY2UtcHJvYy0+YXNzb2NpYXRvciBlcXVhbC1wcm9jKQotICAiQW5zd2VyIGFuIGBh c3NvYyctbGlrZSBwcm9jZWR1cmUgdGhhdCBjb21wYXJlcyB0aGUgYXJndW1lbnQga2V5IHRvCi1h bGlzdCBrZXlzIHdpdGggRVFVQUwtUFJPQy4iCi0gIChjb25kICgob3IgKGVxPyBlcXVhbD8gZXF1 YWwtcHJvYykKLQkgICAgIChlcT8gc3RyaW5nPT8gZXF1YWwtcHJvYykpIChAIChndWlsZSkgYXNz b2MpKQotCSgoZXE/IGVxPyBlcXVhbC1wcm9jKSBhc3NxKQotCSgoZXE/IGVxdj8gZXF1YWwtcHJv YykgYXNzdikKLQkoZWxzZSAobGFtYmRhIChpdGVtIGFsaXN0KQotCQkoYXNzb2MgaXRlbSBhbGlz dCBlcXVhbC1wcm9jKSkpKSkKLQotKGRlZmluZSogKG1ha2UtaGFzaC10YWJsZQotCSAgIzpvcHRp b25hbCAoZXF1YWwtcHJvYyBlcXVhbD8pCi0JICAoaGFzaC1wcm9jIChndWVzcy1oYXNoLWZ1bmN0 aW9uIGVxdWFsLXByb2MpKQotCSAgIzprZXkgKHdlYWsgI2YpICM6cmVzdCBndWlsZS1vcHRzKQor ICAoY29uZCAoKGVxPyBlcXVhbD8gZXF1YWwtcHJvYykgZ2VuOmhhc2gpIDtzaG9ydGN1dCBtb3N0 IGNvbW1vbiBjYXNlCisJKChlcT8gZXE/IGVxdWFsLXByb2MpIGdlbjpoYXNoLWJ5LWlkZW50aXR5 KQorCSgoZXE/IGVxdj8gZXF1YWwtcHJvYykgZ2VuOmhhc2gtYnktdmFsdWUpCisJKChlcT8gc3Ry aW5nPT8gZXF1YWwtcHJvYykgZ2VuOnN0cmluZy1oYXNoKQorCSgoZXE/IHN0cmluZy1jaT0/IGVx dWFsLXByb2MpIGdlbjpzdHJpbmctY2ktaGFzaCkKKwkoZWxzZSBnZW46aGFzaCkpKQorCisoZGVm aW5lIChub3JtYWxpemUtd2Vha25lc3Mgd2VhaykKKyAgIk5vcm1hbGl6ZXMgU1JGSS02OSBzdGFu ZGFyZCAjOndlYWsgdG8gU1JGSS0xMjYgd2Vha25lc3MgYXJndW1lbnQuIgorICAoY2FzZSB3ZWFr CisgICAgKCgjZikgI2YpCisgICAgKChrZXkpICd3ZWFrLWtleSkKKyAgICAoKHZhbHVlKSAnd2Vh ay12YWx1ZSkKKyAgICAoKGtleS1vci12YWx1ZSkgJ3dlYWsta2V5LWFuZC12YWx1ZSkKKyAgICAo ZWxzZSAoZXJyb3IgIkludmFsaWQgd2VhayBoYXNoIHRhYmxlIHR5cGUiIHdlYWspKSkpCisKKyhk ZWZpbmUqIChtYWtlLWhhc2gtdGFibGUgIzpvcHRpb25hbCAoZXF1YWwtcHJvYyBlcXVhbD8pCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoLXByb2MgKGd1ZXNzLWhhc2gtZnVuY3Rpb24g ZXF1YWwtcHJvYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICM6a2V5ICh3ZWFrICNmKSAj OnJlc3QgYXJncykKICAgIkFuc3dlciBhIG5ldyBoYXNoIHRhYmxlIHVzaW5nIEVRVUFMLVBST0Mg YXMgdGhlIGNvbXBhcmlzb24KIGZ1bmN0aW9uLCBhbmQgSEFTSC1QUk9DIGFzIHRoZSBoYXNoIGZ1 bmN0aW9uLiAgU2VlIHRoZSByZWZlcmVuY2UKIG1hbnVhbCBmb3Igc3BlY2lmaWNzLCBvZiB3aGlj aCB0aGVyZSBhcmUgbWFueS4iCi0gIChtYWtlLXNyZmktNjktaGFzaC10YWJsZQotICAgKGFwcGx5 IChndWlsZS1odC1jdG9yIHdlYWspICh3aXRob3V0LWtleXdvcmQtYXJncyBndWlsZS1vcHRzKSkK LSAgIChlcXVpdmFsZW5jZS1wcm9jLT5hc3NvY2lhdG9yIGVxdWFsLXByb2MpCi0gICAwIHdlYWsg ZXF1YWwtcHJvYyBoYXNoLXByb2MpKQorICAobGV0ICgoY2FwYWNpdHkgKGZpbmQgaW50ZWdlcj8g YXJncykpKQorICAgIChnZW46bWFrZS1oYXNoLXRhYmxlIGVxdWFsLXByb2MgaGFzaC1wcm9jCisg ICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVzcyAobm9ybWFsaXplLXdlYWtuZXNzIHdl YWspCisgICAgICAgICAgICAgICAgICAgICAgICAgIzpjYXBhY2l0eSAob3IgY2FwYWNpdHkgMSkp KSkKKworKGRlZmluZSBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGdlbjpoYXNoLXRh YmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uKQorKGRlZmluZSBoYXNoLXRhYmxlLWhhc2gtZnVuY3Rp b24gZ2VuOmhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbikKKyhkZWZpbmUqIChhbGlzdC0+aGFzaC10 YWJsZSBhbGlzdCAjOm9wdGlvbmFsIChlcXVhbC1wcm9jIGVxdWFsPykKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoaGFzaC1wcm9jIChndWVzcy1oYXNoLWZ1bmN0aW9uIGVxdWFsLXByb2Mp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6a2V5ICh3ZWFrICNmKSAjOnJlc3QgYXJn cykKKyAgKGxldCAoKGNhcGFjaXR5IChmaW5kIGludGVnZXI/IGFyZ3MpKSkKKyAgICAoZ2VuOmFs aXN0LT5oYXNoLXRhYmxlIGFsaXN0IGVxdWFsLXByb2MgaGFzaC1wcm9jCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAjOndlYWtuZXNzIChub3JtYWxpemUtd2Vha25lc3Mgd2VhaykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICM6Y2FwYWNpdHkgKG9yIGNhcGFjaXR5IDEpKSkpCiAKLShk ZWZpbmUgKGFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0IC4gbWh0LWFyZ3MpCi0gICJDb252ZXJ0IEFM SVNUIHRvIGEgaGFzaCB0YWJsZSBjcmVhdGVkIHdpdGggTUhULUFSR1MuIgotICAobGV0KiAoKHJl c3VsdCAoYXBwbHkgbWFrZS1oYXNoLXRhYmxlIG1odC1hcmdzKSkKLQkgKHNpemUgKGh0LXNpemUg cmVzdWx0KSkpCi0gICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoYXNoLXByb2MgYXNzb2NpYXRvciBy ZWFsLXRhYmxlKSByZXN1bHQKLSAgICAgIChmb3ItZWFjaCAobGFtYmRhIChwYWlyKQotICAgICAg ICAgICAgICAgICAgKGxldCAoKHZhbHVlIChoYXNoeC1yZWYgaGFzaC1wcm9jIGFzc29jaWF0b3IK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWwtdGFibGUgKGNh ciBwYWlyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHQtdW5z cGVjaWZpZWQpKSkKLSAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChlcT8gaHQtdW5zcGVjaWZp ZWQgdmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBzaXplICgxKyBzaXpl KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBhc3Nv Y2lhdG9yIHJlYWwtdGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChjYXIgcGFpcikgKGNkciBwYWlyKSkpKSkpCi0gICAgICAgICAgICAgICAgYWxpc3QpKQotICAg IChodC1zaXplISByZXN1bHQgc2l6ZSkKLSAgICByZXN1bHQpKQogDAotOzs7OyBBY2Nlc3Npbmcg dGFibGUgaXRlbXMKLQotOzsgV2UgdXNlIHRoaXMgdG8gZGVub3RlIG1pc3Npbmcgb3IgdW5zcGVj aWZpZWQgdmFsdWVzIHRvIGF2b2lkCi0KLTs7IHBvc3NpYmxlIGNvbGxpc2lvbiB3aXRoICp1bnNw ZWNpZmllZCouCi0oZGVmaW5lIGh0LXVuc3BlY2lmaWVkIChjb25zICp1bnNwZWNpZmllZCogImh0 LXZhbHVlIikpCis7OyBEZWFsaW5nIHdpdGggc2luZ2xlIGVsZW1lbnRzCiAKLShkZWZpbmUqICho YXNoLXRhYmxlLXJlZiBodCBrZXkgICM6b3B0aW9uYWwgKGRlZmF1bHQtdGh1bmsgaHQtdW5zcGVj aWZpZWQpKQorKGRlZmluZSogKGhhc2gtdGFibGUtcmVmIGh0IGtleSAjOm9wdGlvbmFsIGZhaWx1 cmUpCiAgICJMb29rdXAgS0VZIGluIEhUIGFuZCBhbnN3ZXIgdGhlIHZhbHVlLCBpbnZva2UgREVG QVVMVC1USFVOSyBpZiBLRVkKIGlzbid0IHByZXNlbnQsIG9yIHNpZ25hbCBhbiBlcnJvciBpZiBE RUZBVUxULVRIVU5LIGlzbid0IHByb3ZpZGVkLiIKLSAgKGxldCAoKHJlc3VsdCAoaGFzaHgtaW52 b2tlIGhhc2h4LXJlZiBodCBrZXkgaHQtdW5zcGVjaWZpZWQpKSkKLSAgICAoaWYgKGVxPyBodC11 bnNwZWNpZmllZCByZXN1bHQpCi0JKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgZGVmYXVsdC10aHVu aykKLQkgICAgKGVycm9yICJLZXkgbm90IGluIHRhYmxlIiBrZXkgaHQpCi0JICAgIChkZWZhdWx0 LXRodW5rKSkKLQlyZXN1bHQpKSkKLQotKGRlZmluZSAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBo dCBrZXkgZGVmYXVsdCkKLSAgIkxvb2t1cCBLRVkgaW4gSFQgYW5kIGFuc3dlciB0aGUgdmFsdWUu ICBBbnN3ZXIgREVGQVVMVCBpZiBLRVkgaXNuJ3QKLXByZXNlbnQuIgotICAoaGFzaHgtaW52b2tl IGhhc2h4LXJlZiBodCBrZXkgZGVmYXVsdCkpCi0KLShkZWZpbmUgKGhhc2gtdGFibGUtc2V0ISBo dCBrZXkgbmV3LXZhbHVlKQotICAiU2V0IEtFWSB0byBORVctVkFMVUUgaW4gSFQuIgotICAoaWYg KGh0LXdlYWtuZXNzIGh0KQotICAgICAgOzsgSi5NLiBzZXBhcmF0ZSB0aGUgY2FzZSB3aGVyZSBo dCBpcyB3ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQotICAgICAgOzsgSi5NLiBkb24ndCBuZWVkIHRv IHVwZGF0ZSBzaXplIGZvciB3ZWFrIGhhc2gtdGFibGVzCi0gICAgICAoaGFzaHgtaW52b2tlIGhh c2h4LXNldCEgaHQga2V5IG5ldy12YWx1ZSkKLSAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWlu dm9rZSBoYXNoeC1jcmVhdGUtaGFuZGxlISBodCBrZXkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBodC11bnNwZWNpZmllZCkpKQotICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNp ZmllZCAoY2RyIGhhbmRsZSkpCi0gICAgICAgICAgICAoaHQtc2l6ZSEgaHQgKDErIChodC1zaXpl IGh0KSkpKQotICAgICAgICAoc2V0LWNkciEgaGFuZGxlIG5ldy12YWx1ZSkpKQotICAqdW5zcGVj aWZpZWQqKQorICAoaWYgZmFpbHVyZQorICAgICAgKGdlbjpoYXNoLXRhYmxlLXJlZiBodCBrZXkg ZmFpbHVyZSkKKyAgICAgIChnZW46aGFzaC10YWJsZS1yZWYgaHQga2V5KSkpCiAKKyhkZWZpbmUg aGFzaC10YWJsZS1yZWYvZGVmYXVsdCBnZW46aGFzaC10YWJsZS1yZWYvZGVmYXVsdCkKKyhkZWZp bmUgaGFzaC10YWJsZS1leGlzdHM/IGdlbjpoYXNoLXRhYmxlLWNvbnRhaW5zPykKKyhkZWZpbmUg aGFzaC10YWJsZS1zZXQhIGdlbjpoYXNoLXRhYmxlLXNldC1zaW5nbGUhKQogKGRlZmluZSAoaGFz aC10YWJsZS1kZWxldGUhIGh0IGtleSkKLSAgIlJlbW92ZSBLRVkncyBhc3NvY2lhdGlvbiBpbiBI VC4iCi0gICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtaHQpIGh0Ci0gICAgKGlmIChub3Qg KGVxPyBodC11bnNwZWNpZmllZCAoaGFzaHgtcmVmIGggYSByZWFsLWh0IGtleSBodC11bnNwZWNp ZmllZCkpKQotICAgICAgICAoYmVnaW4KLSAgICAgICAgICAoaHQtc2l6ZSEgaHQgKDEtIChodC1z aXplIGh0KSkpCi0gICAgICAgICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJlYWwtaHQga2V5KSkpKQor ICAoZ2VuOmhhc2gtdGFibGUtZGVsZXRlLXNpbmdsZSEgaHQga2V5KQogICAqdW5zcGVjaWZpZWQq KQogCi0oZGVmaW5lIChoYXNoLXRhYmxlLWV4aXN0cz8gaHQga2V5KQotICAiUmV0dXJuIHdoZXRo ZXIgS0VZIGlzIGEga2V5IGluIEhULiIKLSAgKG5vdCAoZXE/IGh0LXVuc3BlY2lmaWVkIChoYXNo eC1pbnZva2UgaGFzaHgtcmVmIGh0IGtleSBodC11bnNwZWNpZmllZCkpKSkKLQotOzs7IGBoYXNo LXRhYmxlLXVwZGF0ZSEnIG5vbi1sb2NhbGx5LgotKGRlZmluZSogKGhhc2gtdGFibGUtdXBkYXRl ISBodCBrZXkgbW9kaWZpZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpvcHRpb25h bCAoZGVmYXVsdC10aHVuayBodC11bnNwZWNpZmllZCkpCisoZGVmaW5lKiAoaGFzaC10YWJsZS11 cGRhdGUhIGh0IGtleSBtb2RpZmllciAjOm9wdGlvbmFsIGRlZmF1bHQtdGh1bmspCiAgICJNb2Rp ZnkgSFQncyB2YWx1ZSBhdCBLRVkgYnkgcGFzc2luZyBpdHMgdmFsdWUgdG8gTU9ESUZJRVIgYW5k CiBzZXR0aW5nIGl0IHRvIHRoZSByZXN1bHQgdGhlcmVvZi4gIEludm9rZSBERUZBVUxULVRIVU5L IGZvciB0aGUgb2xkCiB2YWx1ZSBpZiBLRVkgaXNuJ3QgaW4gSFQsIG9yIHNpZ25hbCBhbiBlcnJv ciBpZiBERUZBVUxULVRIVU5LIGlzIG5vdAogcHJvdmlkZWQuIgotICAod2l0aC1oYXNoeC12YWx1 ZXMgKGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUpIGh0Ci0gICAgKGlmIChodC13ZWFr bmVzcyBodCkKLSAgICAgICAgOzsgSi5NLiBzZXBhcmF0ZSB0aGUgY2FzZSB3aGVyZSBodCBpcyB3 ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQotICAgICAgICAobGV0KiAoKG9sZCAoaGFzaHgtcmVmIGhh c2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaHQtdW5zcGVjaWZpZWQpKSkKLSAgICAgICAgICAoY29uZCAoKGVxPyBodC11bnNw ZWNpZmllZCBvbGQpCi0gICAgICAgICAgICAgICAgIChpZiAoZXE/IGh0LXVuc3BlY2lmaWVkIGRl ZmF1bHQtdGh1bmspCi0gICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIktleSBub3QgaW4gdGFi bGUiIGtleSBodCkKLSAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBh c3NvY2lhdG9yIHJlYWwtdGFibGUga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobW9kaWZpZXIgKGRlZmF1bHQtdGh1bmspKSkpKQotICAgICAgICAgICAgICAgIChlbHNlCi0g ICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFi bGUga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RpZmllciBvbGQpKSkpKQot ICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1nZXQtaGFuZGxlIGhhc2gtcHJvYyBhc3NvY2lh dG9yIHJlYWwtdGFibGUga2V5KSkpCi0gICAgICAgICAgKGNvbmQgKGhhbmRsZSAoaWYgKGVxPyBo dC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg KGJlZ2luIChodC1zaXplISBodCAoMSsgKGh0LXNpemUgaHQpKSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9kaWZpZXIgKGRlZmF1bHQtdGh1 bmspKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9k aWZpZXIgKGNkciBoYW5kbGUpKSkpKQotICAgICAgICAgICAgICAgIChlbHNlIChpZiAoZXE/IGh0 LXVuc3BlY2lmaWVkIGRlZmF1bHQtdGh1bmspCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChl cnJvciAiS2V5IG5vdCBpbiB0YWJsZSIga2V5IGh0KQotICAgICAgICAgICAgICAgICAgICAgICAg ICAobGV0ICgoZGVmYXVsdCAoZGVmYXVsdC10aHVuaykpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChodC1zaXplISBodCAoMSsgKGh0LXNpemUgaHQpKSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxlIGtl eQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RpZmllciBkZWZh dWx0KSkpKSkpKSkpCi0gICp1bnNwZWNpZmllZCopCisgIChpZiBkZWZhdWx0LXRodW5rCisgICAg ICAoZ2VuOmhhc2gtdGFibGUtdXBkYXRlISBodCBrZXkgbW9kaWZpZXIgZGVmYXVsdC10aHVuaykK KyAgICAgIChnZW46aGFzaC10YWJsZS11cGRhdGUhIGh0IGtleSBtb2RpZmllcikpKQorCisoZGVm aW5lIGhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0IGdlbjpoYXNoLXRhYmxlLXVwZGF0ZSEvZGVm YXVsdCkKIAotOzs7IEouTS4gQ3VzdG9tIGltcGxlbWVudGF0aW9uIGluc3RlYWQgb2YgdXNpbmcg aGFzaC10YWJsZS11cGRhdGUhCi0oZGVmaW5lIChoYXNoLXRhYmxlLXVwZGF0ZSEvZGVmYXVsdCBo dCBrZXkgbW9kaWZpZXIgZGVmYXVsdCkKLSAgIk1vZGlmeSBIVCdzIHZhbHVlIGF0IEtFWSBieSBw YXNzaW5nIGl0cyBvbGQgdmFsdWUsIG9yIERFRkFVTFQgaWYgaXQKLWRvZXNuJ3QgaGF2ZSBvbmUs IHRvIE1PRElGSUVSLCBhbmQgc2V0dGluZyBpdCB0byB0aGUgcmVzdWx0IHRoZXJlb2YuIgotICAo d2l0aC1oYXNoeC12YWx1ZXMgKGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUpIGh0Ci0g ICAgKGlmIChodC13ZWFrbmVzcyBodCkKLSAgICAgICAgOzsgSi5NLiBzZXBhcmF0ZSB0aGUgY2Fz ZSB3aGVyZSBodCBpcyB3ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQotICAgICAgICAobGV0KiAoKG9s ZCAoaGFzaHgtcmVmIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5IGRlZmF1bHQp KSkKLSAgICAgICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxl IGtleSAobW9kaWZpZXIgb2xkKSkpCi0gICAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWNyZWF0 ZS1oYW5kbGUhIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LXVuc3BlY2lmaWVkKSkpCi0gICAg ICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5kbGUpKQotICAgICAgICAgICAg ICAoYmVnaW4gKGh0LXNpemUhIGh0ICgxKyAoaHQtc2l6ZSBodCkpKQotICAgICAgICAgICAgICAg ICAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9kaWZpZXIgZGVmYXVsdCkpKQotICAgICAgICAgICAg ICAoc2V0LWNkciEgaGFuZGxlIChtb2RpZmllciAoY2RyIGhhbmRsZSkpKSkpKSkpCiAMCiA7Ozs7 IEFjY2Vzc2luZyB3aG9sZSB0YWJsZXMKIAotKGRlZmluZSAoaGFzaC10YWJsZS1zaXplIGh0KQot ICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgYXNzb2NpYXRpb25zIGluIEhULiAgVGhpcyBpcyBndWFy YW50ZWVkIE8oMSkKLWZvciB0YWJsZXMgd2hlcmUgIzp3ZWFrIHdhcyAjZiBvciBub3Qgc3BlY2lm aWVkIGF0IGNyZWF0aW9uIHRpbWUuIgotICAoaWYgKGh0LXdlYWtuZXNzIGh0KQotICAgICAgKGxl dCAoKHNpemUgKGhhc2gtdGFibGUtZm9sZCBodCAobGFtYmRhIChrIHYgYW5zKSAoMSsgYW5zKSkg MCkpKQotICAgICAgICAoaHQtc2l6ZSEgaHQgc2l6ZSkKLSAgICAgICAgc2l6ZSkKLSAgICAgICho dC1zaXplIGh0KSkpCi0KLShkZWZpbmUgKGhhc2gtdGFibGUta2V5cyBodCkKLSAgIlJldHVybiBh IGxpc3Qgb2YgdGhlIGtleXMgaW4gSFQuIgotICAoaGFzaC10YWJsZS1mb2xkIGh0IChsYW1iZGEg KGsgdiBsc3QpIChjb25zIGsgbHN0KSkgJygpKSkKLQotKGRlZmluZSAoaGFzaC10YWJsZS12YWx1 ZXMgaHQpCi0gICJSZXR1cm4gYSBsaXN0IG9mIHRoZSB2YWx1ZXMgaW4gSFQuIgotICAoaGFzaC10 YWJsZS1mb2xkIGh0IChsYW1iZGEgKGsgdiBsc3QpIChjb25zIHYgbHN0KSkgJygpKSkKKyhkZWZp bmUgaGFzaC10YWJsZS1zaXplIGdlbjpoYXNoLXRhYmxlLXNpemUpCisoZGVmaW5lIGhhc2gtdGFi bGUta2V5cyBnZW46aGFzaC10YWJsZS1rZXlzKQorKGRlZmluZSBoYXNoLXRhYmxlLXZhbHVlcyBn ZW46aGFzaC10YWJsZS12YWx1ZXMpCisoZGVmaW5lIGhhc2gtdGFibGUtPmFsaXN0IGdlbjpoYXNo LXRhYmxlLT5hbGlzdCkKIAogKGRlZmluZSAoaGFzaC10YWJsZS13YWxrIGh0IHByb2MpCiAgICJD YWxsIFBST0Mgd2l0aCBlYWNoIGtleSBhbmQgdmFsdWUgYXMgdHdvIGFyZ3VtZW50cy4iCi0gICho YXNoLWZvci1lYWNoIHByb2MgKGh0LXJlYWwtdGFibGUgaHQpKSkKKyAgKGdlbjpoYXNoLXRhYmxl LWZvci1lYWNoIHByb2MgaHQpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxlLWZvbGQgaHQgZiBrbmls KQogICAiSW52b2tlIChGIEtFWSBWQUwgUFJFVikgZm9yIGVhY2ggS0VZIGFuZCBWQUwgaW4gSFQs IHdoZXJlIFBSRVYgaXMKIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIGludm9jYXRpb24sIHVz aW5nIEtOSUwgYXMgdGhlIGZpcnN0IFBSRVYuCiBBbnN3ZXIgdGhlIGZpbmFsIEYgcmVzdWx0LiIK LSAgKGhhc2gtZm9sZCBmIGtuaWwgKGh0LXJlYWwtdGFibGUgaHQpKSkKLQotKGRlZmluZSAoaGFz aC10YWJsZS0+YWxpc3QgaHQpCi0gICJSZXR1cm4gYW4gYWxpc3QgZm9yIEhULiIKLSAgKGhhc2gt bWFwLT5saXN0IGNvbnMgKGh0LXJlYWwtdGFibGUgaHQpKSkKKyAgKGdlbjpoYXNoLXRhYmxlLWZv bGQgZiBrbmlsIGh0KSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1jb3B5IGh0KQogICAiQW5zd2Vy IGEgY29weSBvZiBIVC4iCi0gICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtaHQpIGh0Ci0g ICAgKGxldCogKChzaXplIChoYXNoLXRhYmxlLXNpemUgaHQpKSAod2VhayAoaHQtd2Vha25lc3Mg aHQpKQotCSAgIChuZXctcmVhbC1odCAoKGd1aWxlLWh0LWN0b3Igd2Vhaykgc2l6ZSkpKQotICAg ICAgKGhhc2gtZm9yLWVhY2ggKGxhbWJkYSAoayB2KSAoaGFzaHgtc2V0ISBoIGEgbmV3LXJlYWwt aHQgayB2KSkKLSAgICAgICAgICAgICAgICAgICAgIHJlYWwtaHQpCi0gICAgICAobWFrZS1zcmZp LTY5LWhhc2gtdGFibGUJCTtyZWFsLGFzc29jLHNpemUsd2VhayxlcXVpdixoCi0gICAgICAgbmV3 LXJlYWwtaHQgYSBzaXplIHdlYWsKLSAgICAgICAoaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5j dGlvbiBodCkgaCkpKSkKKyAgKGdlbjpoYXNoLXRhYmxlLWNvcHkgaHQpKQogCiAoZGVmaW5lICho YXNoLXRhYmxlLW1lcmdlISBodCBvdGhlci1odCkKICAgIkFkZCBhbGwga2V5L3ZhbHVlIHBhaXJz IGZyb20gT1RIRVItSFQgdG8gSFQsIG92ZXJyaWRpbmcgSFQncwogbWFwcGluZ3Mgd2hlcmUgcHJl c2VudC4gIFJldHVybiBIVC4iCi0gIChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGsgdikgKGhhc2gt dGFibGUtc2V0ISBodCBrIHYpKQotICAgICAgICAgICAgICAgICAoaHQtcmVhbC10YWJsZSBvdGhl ci1odCkpCisgIDs7IEhBU0gtVEFCTEUtU0VUISB0ZXN0cyBpZiBIVCBpcyBtdXRhYmxlLgorICAo Z2VuOmhhc2gtdGFibGUtZm9yLWVhY2ggKGxhbWJkYSAoayB2KSAoaGFzaC10YWJsZS1zZXQhIGh0 IGsgdikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci1odCkKICAgaHQpCiAKIDs7 OyBzcmZpLTY5LnNjbSBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3Jm aS02OS50ZXN0IGIvdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTY5LnRlc3QKaW5kZXggYzJhNTU0ZGIz Li5lMTU3OWY3M2EgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0Cisr KyBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0CkBAIC0xNDEsNiArMTQxLDcgQEAgY2Fz ZS1pbnNlbnNpdGl2ZSBzdHJpbmdzIHRvIGBlcXVhbD8nLXRlc3RlZCB2YWx1ZXMuIgogICAgICAg ICAgICAgIChsc2V0PSBlcXVhbD8gJygoYiAuIDMpIChjIC4gNCkpIChoYXNoLXRhYmxlLT5hbGlz dCBodDIpKSkpKSkKIAogICAocGFzcy1pZiAiY2FuIHVzZSBhbGwgYXJndW1lbnRzLCBpbmNsdWRp bmcgc2l6ZSIKLSAgICAoaGFzaC10YWJsZT8gKG1ha2UtaGFzaC10YWJsZSBlcXVhbD8gaGFzaCAj OndlYWsgJ2tleSAzMSkpKQorICAgIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIGVxdWFsPyBo YXNoICM6d2VhayAna2V5IDMxKSkpCisgICAgICAoaGFzaC10YWJsZT8gaHQpKSkKIAogICApCi0t IAoyLjE5LjEKCg== --000000000000b6a39d057efb700b Content-Type: text/x-patch; charset="UTF-8"; name="0001-Fix-SRFI-69-don-t-use-handles-with-weak-tables.patch" Content-Disposition: attachment; filename="0001-Fix-SRFI-69-don-t-use-handles-with-weak-tables.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqofminb0> X-Attachment-Id: f_jqofminb0 RnJvbSBjZTEwOTk0ZmQ3Y2Q3NTQ2Yjc3MDdhNDA3MTJlYzk2MDNlNzQwMTA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDggSmFuIDIwMTkgMjE6NTU6NDAg LTAyMDAKU3ViamVjdDogW1BBVENIIDEvNV0gRml4OiBTUkZJLTY5IGRvbid0IHVzZSBoYW5kbGVz IHdpdGggd2VhayB0YWJsZXMgIGFueW1vcmUuCgpNYW55IHByb2NlZHVyZXMgdXNlZCBoYXNoeC1n ZXQtaGFuZGxlIGFuZCBoYXNoeC1jcmVhdGUtaGFuZGxlISB3aXRob3V0CmNoZWNraW5nIHdoZXRo ZXIgcmVhbC1oYXNoLXRhYmxlIHdhcyB3ZWFrLiBOb3cgdGhhdCBpc24ndCB0aGUgY2FzZQphbnlt b3JlIChCdWcgMzM4MjcpLiBBIGJ1ZyB3YXMgZml4ZWQgaW4gaGFzaC10YWJsZS1tZXJnZSEgYW5k IGEgdGVzdCBjYXNlCndhcyBhZGRlZC4gQSBmZXcgb3RoZXIgb3B0aW1pemF0aW9ucyB3ZXJlIG1h ZGUuCgoqIG1vZHVsZS9zcmZpL3NyZmktNjkuc2NtIChhbGlzdC0+aGFzaC10YWJsZSk6CihoYXNo LXRhYmxlLWRlbGV0ZSEpOgooaGFzaC10YWJsZS1leGlzdHM/KToKKGhhc2gtdGFibGUtcmVmKTog RG9uJ3QgdXNlIGhhc2h4LWdldC1oYW5kbGUuCihoYXNoLXRhYmxlLXNldCEpOiBJZiB3ZWFrbmVz cyBpcyBzZXQsIGRvbid0IHVzZSBoYXNoeC1jcmVhdGUtaGFuZGxlIQphbmQgZG9uJ3QgdXBkYXRl IHNpemUuCihoYXNoLXRhYmxlLXVwZGF0ZSEpOiBJZiB3ZWFrbmVzcyBpcyBzZXQsIGRvbid0IHVz ZSBoYXNoeC1nZXQtaGFuZGxlCmFuZCBkb24ndCB1cGRhdGUgc2l6ZS4KKGhhc2gtdGFibGUtdXBk YXRlIS9kZWZhdWx0KTogQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBkb2Vzbid0IGNhbGwK aGFzaC10YWJsZS11cGRhdGUhLCBhdm9pZGluZyBhbGxvY2F0aW5nIGEgcHJvY2VkdXJlLgooaGFz aC10YWJsZS1zaXplKTogU2V0IGh0LXNpemUgZm9yIHdlYWsgaGFzaC10YWJsZXMuCihoYXNoLXRh YmxlLXdhbGspOgooaGFzaC10YWJsZS1jb3B5KTogVXNlIG5hdGl2ZSBoYXNoLWZvci1lYWNoIGlu c3RlYWQgb2YgaGFzaC10YWJsZS1mb2xkLgooaGFzaC10YWJsZS0+YWxpc3QpOiBVc2UgbmF0aXZl IGhhc2gtbWFwLT5saXN0IGluc3RlYWQgb2YgaGFzaC10YWJsZS1mb2xkLgooaGFzaC10YWJsZS1t ZXJnZSEpOiBVc2UgbmF0aXZlIGhhc2gtZm9yLWVhY2ggaW5zdGVhZCBvZiBoYXNoLXRhYmxlLWZv bGQuCldhbGtzIG92ZXIgb3RoZXItaHQgcmF0aGVyIHRoYW4gd2Fsa2luZyBodCAoYW5kIGRvaW5n IG5vdGhpbmcpLgoqIHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0OiBhbGwgYXBwcm9wcmlh dGUgdGVzdCBhcmUgcmVwbGljYXRlZCBmb3IKYWxsIHBvc3NpYmxlICM6d2VhayBhcmd1bWVudHMu IEFkZGVkIGEgdGVzdCBmb3IgaGFzaC10YWJsZS1tZXJnZSEuCi0tLQogVEhBTktTICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogbW9kdWxlL3NyZmkvc3JmaS02OS5zY20gICAgICAgfCAx NDggKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS02 OS50ZXN0IHwgMTczICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDMgZmlsZXMg Y2hhbmdlZCwgMjAwIGluc2VydGlvbnMoKyksIDEyMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9USEFOS1MgYi9USEFOS1MKaW5kZXggNjE2ZDNiMDRiLi45MDU2YTc5NWMgMTAwNjQ0Ci0tLSBh L1RIQU5LUworKysgYi9USEFOS1MKQEAgLTIwLDYgKzIwLDcgQEAgQ29udHJpYnV0b3JzIHNpbmNl IHRoZSBsYXN0IHJlbGVhc2U6CiAgICAgICAgICAgIE5vYWggTGF2aW5lCiAgICAgICAgICBEYW5p ZWwgTGxvcmVucwogICAgICAgICBHcmVnb3J5IE1hcnRvbgorICAgICAgICBKw6lzc2ljYSBNaWxh csOpCiAgICAgICBUaGllbi1UaGkgTmd1eWVuCiAgICAgICAgIEhhbi1XZW4gTmllbmh1eXMKICAg ICAgICAgICAgIEphbiBOaWV1d2VuaHVpemVuCmRpZmYgLS1naXQgYS9tb2R1bGUvc3JmaS9zcmZp LTY5LnNjbSBiL21vZHVsZS9zcmZpL3NyZmktNjkuc2NtCmluZGV4IGI5NDg2YzQ2NS4uMmI3ZmI5 YTdmIDEwMDY0NAotLS0gYS9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbQorKysgYi9tb2R1bGUvc3Jm aS9zcmZpLTY5LnNjbQpAQCAtNjIsNiArNjIsMTQgQEAKIDs7IGltcGxlbWVudGF0aW9uLCBib3Ro IGFuc3dlciAoInhZIikuICBIb3dldmVyLCBJIGRvbid0IGd1YXJhbnRlZSB0aGF0CiA7OyB0aGlz IHdvbid0IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgogCisKKzs7OzsgQ29tbWVudGFyeSBieSBKZXNz aWNhIE1pbGFyZSAyMDE4CisKKzs7IE1ha2UgYnVnIGZpeGVzIGZvciB3ZWFrIGhhc2gtdGFibGVz LCBzaW5jZSBoYW5kbGVzIGRvbid0IHdvcmsgYW55bW9yZSwKKzs7IGFuZCBhbHNvIHNvbWUgb3B0 aW1pemF0aW9ucy4KKzs7Cis7OyBNeSBwZXJzb25hbCBjb21tZW50cyBhcmUgbWFya2VkIGJ5IEou TS4KKwogOzs7IENvZGU6CiAMCiA7Ozs7IE1vZHVsZSBkZWZpbml0aW9uICYgZXhwb3J0cwpAQCAt NzMsMTggKzgxLDE4IEBACiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgb3B0YXJncykKICAgIzpleHBv cnQgKDs7IFR5cGUgY29uc3RydWN0b3JzICYgcHJlZGljYXRlCiAJICAgIG1ha2UtaGFzaC10YWJs ZSBoYXNoLXRhYmxlPyBhbGlzdC0+aGFzaC10YWJsZQotCSAgICA7OyBSZWZsZWN0aXZlIHF1ZXJp ZXMKLQkgICAgaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBoYXNoLXRhYmxlLWhhc2gt ZnVuY3Rpb24KLQkgICAgOzsgRGVhbGluZyB3aXRoIHNpbmdsZSBlbGVtZW50cwotCSAgICBoYXNo LXRhYmxlLXJlZiBoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGhhc2gtdGFibGUtc2V0IQotCSAgICBo YXNoLXRhYmxlLWRlbGV0ZSEgaGFzaC10YWJsZS1leGlzdHM/IGhhc2gtdGFibGUtdXBkYXRlIQot CSAgICBoYXNoLXRhYmxlLXVwZGF0ZSEvZGVmYXVsdAotCSAgICA7OyBEZWFsaW5nIHdpdGggdGhl IHdob2xlIGNvbnRlbnRzCi0JICAgIGhhc2gtdGFibGUtc2l6ZSBoYXNoLXRhYmxlLWtleXMgaGFz aC10YWJsZS12YWx1ZXMKLQkgICAgaGFzaC10YWJsZS13YWxrIGhhc2gtdGFibGUtZm9sZCBoYXNo LXRhYmxlLT5hbGlzdAotCSAgICBoYXNoLXRhYmxlLWNvcHkgaGFzaC10YWJsZS1tZXJnZSEKLQkg ICAgOzsgSGFzaGluZwotCSAgICBzdHJpbmctY2ktaGFzaCBoYXNoLWJ5LWlkZW50aXR5KQorICAg ICAgICAgICAgOzsgUmVmbGVjdGl2ZSBxdWVyaWVzCisgICAgICAgICAgICBoYXNoLXRhYmxlLWVx dWl2YWxlbmNlLWZ1bmN0aW9uIGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbgorICAgICAgICAgICAg OzsgRGVhbGluZyB3aXRoIHNpbmdsZSBlbGVtZW50cworICAgICAgICAgICAgaGFzaC10YWJsZS1y ZWYgaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBoYXNoLXRhYmxlLXNldCEKKyAgICAgICAgICAgIGhh c2gtdGFibGUtZGVsZXRlISBoYXNoLXRhYmxlLWV4aXN0cz8gaGFzaC10YWJsZS11cGRhdGUhCisg ICAgICAgICAgICBoYXNoLXRhYmxlLXVwZGF0ZSEvZGVmYXVsdAorICAgICAgICAgICAgOzsgRGVh bGluZyB3aXRoIHRoZSB3aG9sZSBjb250ZW50cworICAgICAgICAgICAgaGFzaC10YWJsZS1zaXpl IGhhc2gtdGFibGUta2V5cyBoYXNoLXRhYmxlLXZhbHVlcworICAgICAgICAgICAgaGFzaC10YWJs ZS13YWxrIGhhc2gtdGFibGUtZm9sZCBoYXNoLXRhYmxlLT5hbGlzdAorICAgICAgICAgICAgaGFz aC10YWJsZS1jb3B5IGhhc2gtdGFibGUtbWVyZ2UhCisgICAgICAgICAgICA7OyBIYXNoaW5nCisg ICAgICAgICAgICBzdHJpbmctY2ktaGFzaCBoYXNoLWJ5LWlkZW50aXR5KQogICAjOnJlLWV4cG9y dCAoc3RyaW5nLWhhc2gpCiAgICM6cmVwbGFjZSAoaGFzaCBtYWtlLWhhc2gtdGFibGUgaGFzaC10 YWJsZT8pKQogCkBAIC0yMDQsMzAgKzIxMiwzMiBAQCBtYW51YWwgZm9yIHNwZWNpZmljcywgb2Yg d2hpY2ggdGhlcmUgYXJlIG1hbnkuIgogCSAoc2l6ZSAoaHQtc2l6ZSByZXN1bHQpKSkKICAgICAo d2l0aC1oYXNoeC12YWx1ZXMgKGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUpIHJlc3Vs dAogICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHBhaXIpCi0JCSAgKGxldCAoKGhhbmRsZSAoaGFz aHgtZ2V0LWhhbmRsZSBoYXNoLXByb2MgYXNzb2NpYXRvcgotCQkJCQkJICByZWFsLXRhYmxlIChj YXIgcGFpcikpKSkKLQkJICAgIChjb25kICgobm90IGhhbmRsZSkKLQkJCSAgIChzZXQhIHNpemUg KDErIHNpemUpKQotCQkJICAgKGhhc2h4LXNldCEgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10 YWJsZQotCQkJCSAgICAgICAoY2FyIHBhaXIpIChjZHIgcGFpcikpKSkpKQotCQlhbGlzdCkpCisg ICAgICAgICAgICAgICAgICAobGV0ICgodmFsdWUgKGhhc2h4LXJlZiBoYXNoLXByb2MgYXNzb2Np YXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbC10YWJs ZSAoY2FyIHBhaXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo dC11bnNwZWNpZmllZCkpKQorICAgICAgICAgICAgICAgICAgICAoY29uZCAoKGVxPyBodC11bnNw ZWNpZmllZCB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQhIHNpemUgKDEr IHNpemUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXNldCEgaGFzaC1wcm9j IGFzc29jaWF0b3IgcmVhbC10YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNhciBwYWlyKSAoY2RyIHBhaXIpKSkpKSkKKyAgICAgICAgICAgICAgICBhbGlzdCkp CiAgICAgKGh0LXNpemUhIHJlc3VsdCBzaXplKQogICAgIHJlc3VsdCkpCiAMCiA7Ozs7IEFjY2Vz c2luZyB0YWJsZSBpdGVtcwogCiA7OyBXZSB1c2UgdGhpcyB0byBkZW5vdGUgbWlzc2luZyBvciB1 bnNwZWNpZmllZCB2YWx1ZXMgdG8gYXZvaWQKKwogOzsgcG9zc2libGUgY29sbGlzaW9uIHdpdGgg KnVuc3BlY2lmaWVkKi4KIChkZWZpbmUgaHQtdW5zcGVjaWZpZWQgKGNvbnMgKnVuc3BlY2lmaWVk KiAiaHQtdmFsdWUiKSkKIAotKGRlZmluZSAoaGFzaC10YWJsZS1yZWYgaHQga2V5IC4gZGVmYXVs dC10aHVuay1sc3QpCisoZGVmaW5lKiAoaGFzaC10YWJsZS1yZWYgaHQga2V5ICAjOm9wdGlvbmFs IChkZWZhdWx0LXRodW5rIGh0LXVuc3BlY2lmaWVkKSkKICAgIkxvb2t1cCBLRVkgaW4gSFQgYW5k IGFuc3dlciB0aGUgdmFsdWUsIGludm9rZSBERUZBVUxULVRIVU5LIGlmIEtFWQogaXNuJ3QgcHJl c2VudCwgb3Igc2lnbmFsIGFuIGVycm9yIGlmIERFRkFVTFQtVEhVTksgaXNuJ3QgcHJvdmlkZWQu IgogICAobGV0ICgocmVzdWx0IChoYXNoeC1pbnZva2UgaGFzaHgtcmVmIGh0IGtleSBodC11bnNw ZWNpZmllZCkpKQogICAgIChpZiAoZXE/IGh0LXVuc3BlY2lmaWVkIHJlc3VsdCkKLQkoaWYgKHBh aXI/IGRlZmF1bHQtdGh1bmstbHN0KQotCSAgICAoKGZpcnN0IGRlZmF1bHQtdGh1bmstbHN0KSkK LQkgICAgKGVycm9yICJLZXkgbm90IGluIHRhYmxlIiBrZXkgaHQpKQorCShpZiAoZXE/IGh0LXVu c3BlY2lmaWVkIGRlZmF1bHQtdGh1bmspCisJICAgIChlcnJvciAiS2V5IG5vdCBpbiB0YWJsZSIg a2V5IGh0KQorCSAgICAoZGVmYXVsdC10aHVuaykpCiAJcmVzdWx0KSkpCiAKIChkZWZpbmUgKGhh c2gtdGFibGUtcmVmL2RlZmF1bHQgaHQga2V5IGRlZmF1bHQpCkBAIC0yMzcsNDkgKzI0Nyw3OCBA QCBwcmVzZW50LiIKIAogKGRlZmluZSAoaGFzaC10YWJsZS1zZXQhIGh0IGtleSBuZXctdmFsdWUp CiAgICJTZXQgS0VZIHRvIE5FVy1WQUxVRSBpbiBIVC4iCi0gIChsZXQgKChoYW5kbGUgKGhhc2h4 LWludm9rZSBoYXNoeC1jcmVhdGUtaGFuZGxlISBodCBrZXkgaHQtdW5zcGVjaWZpZWQpKSkKLSAg ICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCi0JKGh0LXNpemUhIGh0ICgx KyAoaHQtc2l6ZSBodCkpKSkKLSAgICAoc2V0LWNkciEgaGFuZGxlIG5ldy12YWx1ZSkpCisgIChp ZiAoaHQtd2Vha25lc3MgaHQpCisgICAgICA7OyBKLk0uIHNlcGFyYXRlIHRoZSBjYXNlIHdoZXJl IGh0IGlzIHdlYWsgLSBkb24ndCB1c2UgaGFuZGxlCisgICAgICA7OyBKLk0uIGRvbid0IG5lZWQg dG8gdXBkYXRlIHNpemUgZm9yIHdlYWsgaGFzaC10YWJsZXMKKyAgICAgIChoYXNoeC1pbnZva2Ug aGFzaHgtc2V0ISBodCBrZXkgbmV3LXZhbHVlKQorICAgICAgKGxldCAoKGhhbmRsZSAoaGFzaHgt aW52b2tlIGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGh0IGtleQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGh0LXVuc3BlY2lmaWVkKSkpCisgICAgICAgIChpZiAoZXE/IGh0LXVuc3Bl Y2lmaWVkIChjZHIgaGFuZGxlKSkKKyAgICAgICAgICAgIChodC1zaXplISBodCAoMSsgKGh0LXNp emUgaHQpKSkpCisgICAgICAgIChzZXQtY2RyISBoYW5kbGUgbmV3LXZhbHVlKSkpCiAgICp1bnNw ZWNpZmllZCopCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtZGVsZXRlISBodCBrZXkpCiAgICJSZW1v dmUgS0VZJ3MgYXNzb2NpYXRpb24gaW4gSFQuIgogICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSBy ZWFsLWh0KSBodAotICAgIChpZiAoaGFzaHgtZ2V0LWhhbmRsZSBoIGEgcmVhbC1odCBrZXkpCi0J KGJlZ2luCi0JICAoaHQtc2l6ZSEgaHQgKDEtIChodC1zaXplIGh0KSkpCi0JICAoaGFzaHgtcmVt b3ZlISBoIGEgcmVhbC1odCBrZXkpKSkpCisgICAgKGlmIChub3QgKGVxPyBodC11bnNwZWNpZmll ZCAoaGFzaHgtcmVmIGggYSByZWFsLWh0IGtleSBodC11bnNwZWNpZmllZCkpKQorICAgICAgICAo YmVnaW4KKyAgICAgICAgICAoaHQtc2l6ZSEgaHQgKDEtIChodC1zaXplIGh0KSkpCisgICAgICAg ICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJlYWwtaHQga2V5KSkpKQogICAqdW5zcGVjaWZpZWQqKQog CiAoZGVmaW5lIChoYXNoLXRhYmxlLWV4aXN0cz8gaHQga2V5KQogICAiUmV0dXJuIHdoZXRoZXIg S0VZIGlzIGEga2V5IGluIEhULiIKLSAgKGFuZCAoaGFzaHgtaW52b2tlIGhhc2h4LWdldC1oYW5k bGUgaHQga2V5KSAjdCkpCisgIChub3QgKGVxPyBodC11bnNwZWNpZmllZCAoaGFzaHgtaW52b2tl IGhhc2h4LXJlZiBodCBrZXkgaHQtdW5zcGVjaWZpZWQpKSkpCiAKLTs7OyBgaGFzaHgtc2V0IScg ZHVwbGljYXRlcyB0aGUgaGFzaCBsb29rdXAsIGJ1dCB3ZSB1c2UgaXQgYW55d2F5IHRvCi07Ozsg YXZvaWQgY3JlYXRpbmcgYSBoYW5kbGUgaW4gY2FzZSBERUZBVUxULVRIVU5LIGV4aXRzCiA7Ozsg YGhhc2gtdGFibGUtdXBkYXRlIScgbm9uLWxvY2FsbHkuCi0oZGVmaW5lIChoYXNoLXRhYmxlLXVw ZGF0ZSEgaHQga2V5IG1vZGlmaWVyIC4gZGVmYXVsdC10aHVuay1sc3QpCisoZGVmaW5lKiAoaGFz aC10YWJsZS11cGRhdGUhIGh0IGtleSBtb2RpZmllcgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjOm9wdGlvbmFsIChkZWZhdWx0LXRodW5rIGh0LXVuc3BlY2lmaWVkKSkKICAgIk1vZGlm eSBIVCdzIHZhbHVlIGF0IEtFWSBieSBwYXNzaW5nIGl0cyB2YWx1ZSB0byBNT0RJRklFUiBhbmQK IHNldHRpbmcgaXQgdG8gdGhlIHJlc3VsdCB0aGVyZW9mLiAgSW52b2tlIERFRkFVTFQtVEhVTksg Zm9yIHRoZSBvbGQKIHZhbHVlIGlmIEtFWSBpc24ndCBpbiBIVCwgb3Igc2lnbmFsIGFuIGVycm9y IGlmIERFRkFVTFQtVEhVTksgaXMgbm90CiBwcm92aWRlZC4iCiAgICh3aXRoLWhhc2h4LXZhbHVl cyAoaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10YWJsZSkgaHQKLSAgICAobGV0ICgoaGFuZGxl IChoYXNoeC1nZXQtaGFuZGxlIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5KSkp Ci0gICAgICAoY29uZCAoaGFuZGxlCi0JICAgICAoc2V0LWNkciEgaGFuZGxlIChtb2RpZmllciAo Y2RyIGhhbmRsZSkpKSkKLQkgICAgKGVsc2UKLQkgICAgIChoYXNoeC1zZXQhIGhhc2gtcHJvYyBh c3NvY2lhdG9yIHJlYWwtdGFibGUga2V5Ci0JCQkgKGlmIChwYWlyPyBkZWZhdWx0LXRodW5rLWxz dCkKLQkJCSAgICAgKG1vZGlmaWVyICgoY2FyIGRlZmF1bHQtdGh1bmstbHN0KSkpCi0JCQkgICAg IChlcnJvciAiS2V5IG5vdCBpbiB0YWJsZSIga2V5IGh0KSkpCi0JICAgICAoaHQtc2l6ZSEgaHQg KDErIChodC1zaXplIGh0KSkpKSkpKQorICAgIChpZiAoaHQtd2Vha25lc3MgaHQpCisgICAgICAg IDs7IEouTS4gc2VwYXJhdGUgdGhlIGNhc2Ugd2hlcmUgaHQgaXMgd2VhayAtIGRvbid0IHVzZSBo YW5kbGUKKyAgICAgICAgKGxldCogKChvbGQgKGhhc2h4LXJlZiBoYXNoLXByb2MgYXNzb2NpYXRv ciByZWFsLXRhYmxlIGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LXVuc3Bl Y2lmaWVkKSkpCisgICAgICAgICAgKGNvbmQgKChlcT8gaHQtdW5zcGVjaWZpZWQgb2xkKQorICAg ICAgICAgICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCBkZWZhdWx0LXRodW5rKQorICAg ICAgICAgICAgICAgICAgICAgKGVycm9yICJLZXkgbm90IGluIHRhYmxlIiBrZXkgaHQpCisgICAg ICAgICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRh YmxlIGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGlmaWVyIChkZWZh dWx0LXRodW5rKSkpKSkKKyAgICAgICAgICAgICAgICAoZWxzZQorICAgICAgICAgICAgICAgICAo aGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxlIGtleQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobW9kaWZpZXIgb2xkKSkpKSkKKyAgICAgICAgKGxldCAoKGhh bmRsZSAoaGFzaHgtZ2V0LWhhbmRsZSBoYXNoLXByb2MgYXNzb2NpYXRvciByZWFsLXRhYmxlIGtl eSkpKQorICAgICAgICAgIChjb25kIChoYW5kbGUgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNk ciBoYW5kbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZWdpbiAoaHQtc2l6ZSEg aHQgKDErIChodC1zaXplIGh0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzZXQtY2RyISBoYW5kbGUgKG1vZGlmaWVyIChkZWZhdWx0LXRodW5rKSkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzZXQtY2RyISBoYW5kbGUgKG1vZGlmaWVyIChjZHIgaGFuZGxl KSkpKSkKKyAgICAgICAgICAgICAgICAoZWxzZSAoaWYgKGVxPyBodC11bnNwZWNpZmllZCBkZWZh dWx0LXRodW5rKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IgIktleSBub3QgaW4g dGFibGUiIGtleSBodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGRlZmF1bHQg KGRlZmF1bHQtdGh1bmspKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaHQtc2l6ZSEg aHQgKDErIChodC1zaXplIGh0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4 LXNldCEgaGFzaC1wcm9jIGFzc29jaWF0b3IgcmVhbC10YWJsZSBrZXkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kaWZpZXIgZGVmYXVsdCkpKSkpKSkpKQogICAq dW5zcGVjaWZpZWQqKQogCis7OzsgSi5NLiBDdXN0b20gaW1wbGVtZW50YXRpb24gaW5zdGVhZCBv ZiB1c2luZyBoYXNoLXRhYmxlLXVwZGF0ZSEKIChkZWZpbmUgKGhhc2gtdGFibGUtdXBkYXRlIS9k ZWZhdWx0IGh0IGtleSBtb2RpZmllciBkZWZhdWx0KQogICAiTW9kaWZ5IEhUJ3MgdmFsdWUgYXQg S0VZIGJ5IHBhc3NpbmcgaXRzIG9sZCB2YWx1ZSwgb3IgREVGQVVMVCBpZiBpdAogZG9lc24ndCBo YXZlIG9uZSwgdG8gTU9ESUZJRVIsIGFuZCBzZXR0aW5nIGl0IHRvIHRoZSByZXN1bHQgdGhlcmVv Zi4iCi0gIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQga2V5IG1vZGlmaWVyIChsYW1iZGEgKCkgZGVm YXVsdCkpKQorICAod2l0aC1oYXNoeC12YWx1ZXMgKGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwt dGFibGUpIGh0CisgICAgKGlmIChodC13ZWFrbmVzcyBodCkKKyAgICAgICAgOzsgSi5NLiBzZXBh cmF0ZSB0aGUgY2FzZSB3aGVyZSBodCBpcyB3ZWFrIC0gZG9uJ3QgdXNlIGhhbmRsZQorICAgICAg ICAobGV0KiAoKG9sZCAoaGFzaHgtcmVmIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUg a2V5IGRlZmF1bHQpKSkKKyAgICAgICAgICAoaGFzaHgtc2V0ISBoYXNoLXByb2MgYXNzb2NpYXRv ciByZWFsLXRhYmxlIGtleSAobW9kaWZpZXIgb2xkKSkpCisgICAgICAgIChsZXQgKChoYW5kbGUg KGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGhhc2gtcHJvYyBhc3NvY2lhdG9yIHJlYWwtdGFibGUga2V5 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LXVuc3BlY2lm aWVkKSkpCisgICAgICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5kbGUpKQor ICAgICAgICAgICAgICAoYmVnaW4gKGh0LXNpemUhIGh0ICgxKyAoaHQtc2l6ZSBodCkpKQorICAg ICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAobW9kaWZpZXIgZGVmYXVsdCkpKQor ICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlIChtb2RpZmllciAoY2RyIGhhbmRsZSkpKSkp KSkpCiAMCiA7Ozs7IEFjY2Vzc2luZyB3aG9sZSB0YWJsZXMKIApAQCAtMjg3LDcgKzMyNiw5IEBA IGRvZXNuJ3QgaGF2ZSBvbmUsIHRvIE1PRElGSUVSLCBhbmQgc2V0dGluZyBpdCB0byB0aGUgcmVz dWx0IHRoZXJlb2YuIgogICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgYXNzb2NpYXRpb25zIGluIEhU LiAgVGhpcyBpcyBndWFyYW50ZWVkIE8oMSkKIGZvciB0YWJsZXMgd2hlcmUgIzp3ZWFrIHdhcyAj ZiBvciBub3Qgc3BlY2lmaWVkIGF0IGNyZWF0aW9uIHRpbWUuIgogICAoaWYgKGh0LXdlYWtuZXNz IGh0KQotICAgICAgKGhhc2gtdGFibGUtZm9sZCBodCAobGFtYmRhIChrIHYgYW5zKSAoMSsgYW5z KSkgMCkKKyAgICAgIChsZXQgKChzaXplIChoYXNoLXRhYmxlLWZvbGQgaHQgKGxhbWJkYSAoayB2 IGFucykgKDErIGFucykpIDApKSkKKyAgICAgICAgKGh0LXNpemUhIGh0IHNpemUpCisgICAgICAg IHNpemUpCiAgICAgICAoaHQtc2l6ZSBodCkpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxlLWtleXMg aHQpCkBAIC0zMDAsMTAgKzM0MSw3IEBAIGZvciB0YWJsZXMgd2hlcmUgIzp3ZWFrIHdhcyAjZiBv ciBub3Qgc3BlY2lmaWVkIGF0IGNyZWF0aW9uIHRpbWUuIgogCiAoZGVmaW5lIChoYXNoLXRhYmxl LXdhbGsgaHQgcHJvYykKICAgIkNhbGwgUFJPQyB3aXRoIGVhY2gga2V5IGFuZCB2YWx1ZSBhcyB0 d28gYXJndW1lbnRzLiIKLSAgKGhhc2gtdGFibGUtZm9sZCBodCAobGFtYmRhIChrIHYgdW5zcGVj KQotICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGwtd2l0aC12YWx1ZXMgKGxhbWJkYSAoKSAo cHJvYyBrIHYpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIHZhbHMgdW5zcGVj KSkpCi0JCSAgICp1bnNwZWNpZmllZCopKQorICAoaGFzaC1mb3ItZWFjaCBwcm9jIChodC1yZWFs LXRhYmxlIGh0KSkpCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtZm9sZCBodCBmIGtuaWwpCiAgICJJ bnZva2UgKEYgS0VZIFZBTCBQUkVWKSBmb3IgZWFjaCBLRVkgYW5kIFZBTCBpbiBIVCwgd2hlcmUg UFJFViBpcwpAQCAtMzEzLDE1ICszNTEsMTUgQEAgQW5zd2VyIHRoZSBmaW5hbCBGIHJlc3VsdC4i CiAKIChkZWZpbmUgKGhhc2gtdGFibGUtPmFsaXN0IGh0KQogICAiUmV0dXJuIGFuIGFsaXN0IGZv ciBIVC4iCi0gIChoYXNoLXRhYmxlLWZvbGQgaHQgYWxpc3QtY29ucyAnKCkpKQorICAoaGFzaC1t YXAtPmxpc3QgY29ucyAoaHQtcmVhbC10YWJsZSBodCkpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxl LWNvcHkgaHQpCiAgICJBbnN3ZXIgYSBjb3B5IG9mIEhULiIKICAgKHdpdGgtaGFzaHgtdmFsdWVz IChoIGEgcmVhbC1odCkgaHQKICAgICAobGV0KiAoKHNpemUgKGhhc2gtdGFibGUtc2l6ZSBodCkp ICh3ZWFrIChodC13ZWFrbmVzcyBodCkpCiAJICAgKG5ldy1yZWFsLWh0ICgoZ3VpbGUtaHQtY3Rv ciB3ZWFrKSBzaXplKSkpCi0gICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGsgdiBpZ24pIChoYXNo eC1zZXQhIGggYSBuZXctcmVhbC1odCBrIHYpKQotCQkgI2YgcmVhbC1odCkKKyAgICAgIChoYXNo LWZvci1lYWNoIChsYW1iZGEgKGsgdikgKGhhc2h4LXNldCEgaCBhIG5ldy1yZWFsLWh0IGsgdikp CisgICAgICAgICAgICAgICAgICAgICByZWFsLWh0KQogICAgICAgKG1ha2Utc3JmaS02OS1oYXNo LXRhYmxlCQk7cmVhbCxhc3NvYyxzaXplLHdlYWssZXF1aXYsaAogICAgICAgIG5ldy1yZWFsLWh0 IGEgc2l6ZSB3ZWFrCiAgICAgICAgKGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQp IGgpKSkpCkBAIC0zMjksOCArMzY3LDggQEAgQW5zd2VyIHRoZSBmaW5hbCBGIHJlc3VsdC4iCiAo ZGVmaW5lIChoYXNoLXRhYmxlLW1lcmdlISBodCBvdGhlci1odCkKICAgIkFkZCBhbGwga2V5L3Zh bHVlIHBhaXJzIGZyb20gT1RIRVItSFQgdG8gSFQsIG92ZXJyaWRpbmcgSFQncwogbWFwcGluZ3Mg d2hlcmUgcHJlc2VudC4gIFJldHVybiBIVC4iCi0gIChoYXNoLXRhYmxlLWZvbGQKLSAgIGh0IChs YW1iZGEgKGsgdiBpZ24pIChoYXNoLXRhYmxlLXNldCEgaHQgayB2KSkgI2YpCisgIChoYXNoLWZv ci1lYWNoIChsYW1iZGEgKGsgdikgKGhhc2gtdGFibGUtc2V0ISBodCBrIHYpKQorICAgICAgICAg ICAgICAgICAoaHQtcmVhbC10YWJsZSBvdGhlci1odCkpCiAgIGh0KQogCiA7Ozsgc3JmaS02OS5z Y20gZW5kcyBoZXJlCmRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdCBi L3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS02OS50ZXN0CmluZGV4IGU5OWI3NmM2ZC4uYzJhNTU0ZGIz IDEwMDY0NAotLS0gYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdAorKysgYi90ZXN0LXN1 aXRlL3Rlc3RzL3NyZmktNjkudGVzdApAQCAtMjgsODAgKzI4LDExOSBAQCBjYXNlLWluc2Vuc2l0 aXZlIHN0cmluZ3MgdG8gYGVxdWFsPyctdGVzdGVkIHZhbHVlcy4iCiAgIChhbmQgKHN0cmluZy1j aT0/IChjYXIgbGVmdCkgKGNhciByaWdodCkpCiAgICAgICAgKGVxdWFsPyAoY2RyIGxlZnQpIChj ZHIgcmlnaHQpKSkpCiAKKyhkZWZpbmUtc3ludGF4IHdpdGgtd2Vha25lc3MtbGlzdAorICAoc3lu dGF4LXJ1bGVzICgpCisgICAgKCh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3Mgd2Vha25lc3Mt bGlzdCBleHByIC4uLikKKyAgICAgKGxldCBsb29wICgod2Vha25lc3MtbGlzdCogd2Vha25lc3Mt bGlzdCkpCisgICAgICAgKG9yIChudWxsPyB3ZWFrbmVzcy1saXN0KikKKyAgICAgICAgICAgKGFu ZCAobGV0ICgod2Vha25lc3MgKGNhciB3ZWFrbmVzcy1saXN0KikpKQorICAgICAgICAgICAgICAg ICAgZXhwciAuLi4pCisgICAgICAgICAgICAgICAgKGxvb3AgKGNkciB3ZWFrbmVzcy1saXN0Kikp KSkpKSkpCisKKyhkZWZpbmUgKHRlc3Qtc3RyLXdlYWtuZXNzIHN0ciB3ZWFrbmVzcykKKyAgKGlm IChub3Qgd2Vha25lc3MpIHN0ciAoZm9ybWF0ICNmICJ+YSAod2VhazogfmEpIiBzdHIgd2Vha25l c3MpKSkKKwogKHdpdGgtdGVzdC1wcmVmaXggIlNSRkktNjkiCiAKLSAgKHBhc3MtaWYgInNtYWxs IGFsaXN0PC0+aGFzaCB0YWJsZXMgcm91bmQtdHJpcCIKLSAgICAobGV0KiAoKHN0YXJ0LWFsaXN0 ICcoKGEgLiAxKSAoYiAuIDIpIChjIC4gMykgKGEgLiA0MikpKQotCSAgIChodCAoYWxpc3QtPmhh c2gtdGFibGUgc3RhcnQtYWxpc3QgZXE/KSkKLQkgICAoZW5kLWFsaXN0IChoYXNoLXRhYmxlLT5h bGlzdCBodCkpKQotICAgICAgKGFuZCAoPSAzIChoYXNoLXRhYmxlLXNpemUgaHQpKQotCSAgIChs c2V0PSBlcXVhbD8gZW5kLWFsaXN0ICh0YWtlIHN0YXJ0LWFsaXN0IDMpKQotCSAgICg9IDEgKGhh c2gtdGFibGUtcmVmIGh0ICdhKSkKLQkgICAoPSAyIChoYXNoLXRhYmxlLXJlZiBodCAnYikpCi0J ICAgKD0gMyAoaGFzaC10YWJsZS1yZWYgaHQgJ2MpKSkpKQotCi0gIChwYXNzLWlmICJzdHJpbmct Y2k9PyB0YWJsZXMgd29yayBieSBkZWZhdWx0IgotICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gt dGFibGUgJygoInhZIiAuIDIpICgiYWJjIiAuIDU0KSkgc3RyaW5nLWNpPT8pKSkKLSAgICAgICho YXNoLXRhYmxlLXNldCEgaHQgIlhZIiA0MikKLSAgICAgIChoYXNoLXRhYmxlLXNldCEgaHQgInFx cSIgMTAwKQotICAgICAgKGFuZCAoPSA1NCAoaGFzaC10YWJsZS1yZWYgaHQgIkFCYyIpKQotCSAg ICg9IDQyIChoYXNoLXRhYmxlLXJlZiBodCAieHkiKSkKLQkgICAoPSAzIChoYXNoLXRhYmxlLXNp emUgaHQpKQotCSAgIChsc2V0PSBzdHJpbmctY2ktYXNzb2MtZXF1YWw/Ci0JCSAgJygoInh5IiAu IDQyKSAoImFiYyIgLiA1NCkgKCJxcXEiIC4gMTAwKSkKLQkJICAoaGFzaC10YWJsZS0+YWxpc3Qg aHQpKSkpKQorICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdrZXkgJ3Zh bHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJzbWFs bCBhbGlzdDwtPmhhc2ggdGFibGVzIHJvdW5kLXRyaXAiIHdlYWtuZXNzKQorICAgICAgKGxldCog KChzdGFydC1hbGlzdCAnKChhIC4gMSkgKGIgLiAyKSAoYyAuIDMpIChhIC4gNDIpKSkKKyAgICAg ICAgICAgICAoaHQgKGFsaXN0LT5oYXNoLXRhYmxlIHN0YXJ0LWFsaXN0IGVxPyAjOndlYWsgd2Vh a25lc3MpKQorICAgICAgICAgICAgIChlbmQtYWxpc3QgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkp CisgICAgICAgIChhbmQgKD0gMyAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgICAgICAo bHNldD0gZXF1YWw/IGVuZC1hbGlzdCAodGFrZSBzdGFydC1hbGlzdCAzKSkKKyAgICAgICAgICAg ICAoPSAxIChoYXNoLXRhYmxlLXJlZiBodCAnYSkpCisgICAgICAgICAgICAgKD0gMiAoaGFzaC10 YWJsZS1yZWYgaHQgJ2IpKQorICAgICAgICAgICAgICg9IDMgKGhhc2gtdGFibGUtcmVmIGh0ICdj KSkpKSkpCisKKyAgKHdpdGgtd2Vha25lc3MtbGlzdCB3ZWFrbmVzcyAobGlzdCAjZiAna2V5ICd2 YWx1ZSAna2V5LW9yLXZhbHVlKQorICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAic3Ry aW5nLWNpPT8gdGFibGVzIHdvcmsgYnkgZGVmYXVsdCIgd2Vha25lc3MpCisgICAgICAobGV0ICgo aHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKCJ4WSIgLiAyKSAoImFiYyIgLiA1NCkpIHN0cmluZy1j aT0/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6d2VhayB3ZWFrbmVzcykp KQorICAgICAgICAoaGFzaC10YWJsZS1zZXQhIGh0ICJYWSIgNDIpCisgICAgICAgIChoYXNoLXRh YmxlLXNldCEgaHQgInFxcSIgMTAwKQorICAgICAgICAoYW5kICg9IDU0IChoYXNoLXRhYmxlLXJl ZiBodCAiQUJjIikpCisgICAgICAgICAgICAgKD0gNDIgKGhhc2gtdGFibGUtcmVmIGh0ICJ4eSIp KQorICAgICAgICAgICAgICg9IDMgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAgICAg KGxzZXQ9IHN0cmluZy1jaS1hc3NvYy1lcXVhbD8KKyAgICAgICAgICAgICAgICAgICAgJygoInh5 IiAuIDQyKSAoImFiYyIgLiA1NCkgKCJxcXEiIC4gMTAwKSkKKyAgICAgICAgICAgICAgICAgICAg KGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkpCiAKICAgKHBhc3MtaWYtZXhjZXB0aW9uICJCYWQg d2Vha25lc3MgYXJnIHRvIG1odCBzaWduYWxzIGFuIGVycm9yIgotCQkgICAgICcobWlzYy1lcnJv ciAuICJeSW52YWxpZCB3ZWFrIGhhc2ggdGFibGUgdHlwZSIpCisgICAgICAnKG1pc2MtZXJyb3Ig LiAiXkludmFsaWQgd2VhayBoYXNoIHRhYmxlIHR5cGUiKQogICAgIChtYWtlLWhhc2gtdGFibGUg ZXF1YWw/IGhhc2ggIzp3ZWFrICdrZXktYW5kLXZhbHVlKSkKIAotICAocGFzcy1pZiAiZW1wdHkg aGFzaCB0YWJsZXMgYXJlIGVtcHR5IgotICAgIChudWxsPyAoaGFzaC10YWJsZS0+YWxpc3QgKG1h a2UtaGFzaC10YWJsZSBlcT8pKSkpCi0KLSAgKHBhc3MtaWYgImhhc2gtdGFibGUtcmVmIHVzZXMg ZGVmYXVsdCIKLSAgICAoZXF1YWw/ICcoNCkKLQkgICAgKGhhc2gtdGFibGUtcmVmIChhbGlzdC0+ aGFzaC10YWJsZSAnKChhIC4gMSkpIGVxPykKLQkJCSAgICAnYiAoY3V0IGxpc3QgKCsgMiAyKSkp KSkKLQotICAocGFzcy1pZiAiaGFzaC10YWJsZS1kZWxldGUhIGRlbGV0ZXMgcHJlc2VudCBhc3Nv Y3MsIGlnbm9yZXMgb3RoZXJzIgotICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygo YSAuIDEpIChiIC4gMikpIGVxPykpKQotICAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodCAnYykK LSAgICAgIChhbmQgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0KSkKLQkgICAoYmVnaW4KLQkgICAg IChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQgJ2EpCi0JICAgICAoPSAxIChoYXNoLXRhYmxlLXNpemUg aHQpKSkKLQkgICAobHNldD0gZXF1YWw/ICcoKGIgLiAyKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0 KSkpKSkKLQotICAocGFzcy1pZiAiYWxpc3QtPmhhc2gtdGFibGUgZG9lcyBub3QgcmVxdWlyZSBs aW5lYXIgc3RhY2sgc3BhY2UiCi0gICAgKGVxdj8gOTk5OTkKLQkgIChoYXNoLXRhYmxlLXJlZiAo YWxpc3QtPmhhc2gtdGFibGUKLQkJCSAgICh1bmZvbGQtcmlnaHQgKGN1dCA+PSA8PiAxMDAwMDAp Ci0JCQkJCSAobGFtYmRhIChzKSBgKHggLiAscykpIDErIDApCi0JCQkgICBlcT8pCi0JCQkgICd4 KSkpCi0KLSAgKHBhc3MtaWYgImhhc2gtdGFibGUtd2FsayBpZ25vcmVzIHJldHVybiB2YWx1ZXMi Ci0gICAgKGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSAoYyAu IDMpKSBlcT8pKSkKLSAgICAgIChmb3ItZWFjaCAoY3V0IGhhc2gtdGFibGUtd2FsayBodCA8PikK LQkJKGxpc3QgKGxhbWJkYSAoayB2KSAodmFsdWVzKSkKLQkJICAgICAgKGxhbWJkYSAoayB2KSAo dmFsdWVzIDEgMiAzKSkpKQotICAgICAgI3QpKQotCi0gIChwYXNzLWlmICJoYXNoLXRhYmxlLXVw ZGF0ZSEgbW9kaWZpZXMgZXhpc3RpbmcgYmluZGluZyIKLSAgICAobGV0ICgoaHQgKGFsaXN0LT5o YXNoLXRhYmxlICcoKGEgLiAxKSkgZXE/KSkpCi0gICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0 ICdhIDErKQotICAgICAgKGhhc2gtdGFibGUtdXBkYXRlISBodCAnYSAoY3V0ICsgNCA8PikgKGxh bWJkYSAoKSA0MikpCi0gICAgICAoYW5kICg9IDEgKGhhc2gtdGFibGUtc2l6ZSBodCkpCi0JICAg KGxzZXQ9IGVxdWFsPyAnKChhIC4gNikpIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkpCi0KLSAg KHBhc3MtaWYgImhhc2gtdGFibGUtdXBkYXRlISBjcmVhdGVzIG5ldyBiaW5kaW5nIHdoZW4gYXBw cm9wcmlhdGUiCi0gICAgKGxldCAoKGh0IChtYWtlLWhhc2gtdGFibGUgZXE/KSkpCi0gICAgICAo aGFzaC10YWJsZS11cGRhdGUhIGh0ICdiIDErIChsYW1iZGEgKCkgNDIpKQotICAgICAgKGhhc2gt dGFibGUtdXBkYXRlISBodCAnYiAoY3V0ICsgMTAgPD4pKQotICAgICAgKGFuZCAoPSAxIChoYXNo LXRhYmxlLXNpemUgaHQpKQotCSAgIChsc2V0PSBlcXVhbD8gJygoYiAuIDUzKSkgKGhhc2gtdGFi bGUtPmFsaXN0IGh0KSkpKSkKKyAgKHdpdGgtd2Vha25lc3MtbGlzdCB3ZWFrbmVzcyAobGlzdCAj ZiAna2V5ICd2YWx1ZSAna2V5LW9yLXZhbHVlKQorICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFr bmVzcyAiZW1wdHkgaGFzaCB0YWJsZXMgYXJlIGVtcHR5IiB3ZWFrbmVzcykKKyAgICAgIChudWxs PyAoaGFzaC10YWJsZS0+YWxpc3QgKG1ha2UtaGFzaC10YWJsZSBlcT8gIzp3ZWFrIHdlYWtuZXNz KSkpKSkKKworICAod2l0aC13ZWFrbmVzcy1saXN0IHdlYWtuZXNzIChsaXN0ICNmICdrZXkgJ3Zh bHVlICdrZXktb3ItdmFsdWUpCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNo LXRhYmxlLXJlZiB1c2VzIGRlZmF1bHQiIHdlYWtuZXNzKQorICAgICAgKGVxdWFsPyAnKDQpCisg ICAgICAgICAgICAgIChoYXNoLXRhYmxlLXJlZiAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEp KSBlcT8gIzp3ZWFrIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Ig KGN1dCBsaXN0ICgrIDIgMikpKSkpKQorCisgICh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3Mg KGxpc3QgI2YgJ2tleSAndmFsdWUgJ2tleS1vci12YWx1ZSkKKyAgICAocGFzcy1pZiAodGVzdC1z dHItd2Vha25lc3MgImhhc2gtdGFibGUtZGVsZXRlISBkZWxldGVzIHByZXNlbnQgYXNzb2NzLCBp Z25vcmVzIG90aGVycyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha25lc3Mp CisgICAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAuIDIpKSBl cT8gIzp3ZWFrIHdlYWtuZXNzKSkpCisgICAgICAgIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQgJ2Mp CisgICAgICAgIChhbmQgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgICAgICAo YmVnaW4KKyAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQgJ2EpCisgICAgICAg ICAgICAgICAoPSAxIChoYXNoLXRhYmxlLXNpemUgaHQpKSkKKyAgICAgICAgICAgICAobHNldD0g ZXF1YWw/ICcoKGIgLiAyKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkpCisKKyAgKHdpdGgt d2Vha25lc3MtbGlzdCB3ZWFrbmVzcyAobGlzdCAjZiAna2V5ICd2YWx1ZSAna2V5LW9yLXZhbHVl KQorICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiYWxpc3QtPmhhc2gtdGFibGUgZG9l cyBub3QgcmVxdWlyZSBsaW5lYXIgc3RhY2sgc3BhY2UiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHdlYWtuZXNzKQorICAgICAgKGVxdj8gOTk5OTkKKyAgICAgICAgICAgIChoYXNo LXRhYmxlLXJlZiAoYWxpc3QtPmhhc2gtdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHVuZm9sZC1yaWdodCAoY3V0ID49IDw+IDEwMDAwMCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChzKSBgKHggLiAscykpIDErIDApCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVxPworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjOndlYWsgd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gpKSkpCisK KyAgKHdpdGgtd2Vha25lc3MtbGlzdCB3ZWFrbmVzcyAobGlzdCAjZiAna2V5ICd2YWx1ZSAna2V5 LW9yLXZhbHVlKQorICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS13 YWxrIGlnbm9yZXMgcmV0dXJuIHZhbHVlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgd2Vha25lc3MpCisgICAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAx KSAoYiAuIDIpIChjIC4gMykpIGVxPykpKQorICAgICAgICAoZm9yLWVhY2ggKGN1dCBoYXNoLXRh YmxlLXdhbGsgaHQgPD4pCisgICAgICAgICAgICAgICAgICAobGlzdCAobGFtYmRhIChrIHYpICh2 YWx1ZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoayB2KSAodmFsdWVzIDEg MiAzKSkpKQorICAgICAgICAjdCkpKQorCisgICh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3Mg KGxpc3QgI2YgJ2tleSAndmFsdWUgJ2tleS1vci12YWx1ZSkKKyAgICAocGFzcy1pZiAodGVzdC1z dHItd2Vha25lc3MgImhhc2gtdGFibGUtdXBkYXRlISBtb2RpZmllcyBleGlzdGluZyBiaW5kaW5n IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrbmVzcykKKyAgICAgIChsZXQg KChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEpKSBlcT8gIzp3ZWFrIHdlYWtuZXNzKSkp CisgICAgICAgIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQgJ2EgMSspCisgICAgICAgIChoYXNoLXRh YmxlLXVwZGF0ZSEgaHQgJ2EgKGN1dCArIDQgPD4pIChsYW1iZGEgKCkgNDIpKQorICAgICAgICAo YW5kICg9IDEgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFs PyAnKChhIC4gNikpIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkpKQorCisgICh3aXRoLXdlYWtu ZXNzLWxpc3Qgd2Vha25lc3MgKGxpc3QgI2YgJ2tleSAndmFsdWUgJ2tleS1vci12YWx1ZSkKKyAg ICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtdXBkYXRlISBjcmVhdGVz IG5ldyBiaW5kaW5nIHdoZW4gYXBwcm9wcmlhdGUiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0IChtYWtlLWhhc2gtdGFibGUgZXE/ICM6 d2VhayB3ZWFrbmVzcykpKQorICAgICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0ICdiIDErIChs YW1iZGEgKCkgNDIpKQorICAgICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0ICdiIChjdXQgKyAx MCA8PikpCisgICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAg ICAgICAobHNldD0gZXF1YWw/ICcoKGIgLiA1MykpIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkp KQorCisgICh3aXRoLXdlYWtuZXNzLWxpc3Qgd2Vha25lc3MgKGxpc3QgI2YgJ2tleSAndmFsdWUg J2tleS1vci12YWx1ZSkKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFi bGUtbWVyZ2UhIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2Vha25lc3MpCisgICAgICAobGV0KiAoKGh0MSAoYWxpc3QtPmhhc2gtdGFibGUgJygo YSAuIDEpIChiIC4gMikpIGVxPyAjOndlYWsgd2Vha25lc3MpKQorICAgICAgICAgICAgIChodDIg KGFsaXN0LT5oYXNoLXRhYmxlICcoKGIgLiAzKSAoYyAuIDQpKSBlcT8gIzp3ZWFrIHdlYWtuZXNz KSkpCisgICAgICAgIChzZXQhIGh0MSAoaGFzaC10YWJsZS1tZXJnZSEgaHQxIGh0MikpCisgICAg ICAgIChhbmQgKD0gMyAoaGFzaC10YWJsZS1zaXplIGh0MSkpCisgICAgICAgICAgICAgKD0gMiAo aGFzaC10YWJsZS1zaXplIGh0MikpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFsPyAnKChhIC4g MSkgKGIgLiAzKSAoYyAuIDQpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQxKSkKKyAgICAgICAgICAg ICAobHNldD0gZXF1YWw/ICcoKGIgLiAzKSAoYyAuIDQpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQy KSkpKSkpCiAKICAgKHBhc3MtaWYgImNhbiB1c2UgYWxsIGFyZ3VtZW50cywgaW5jbHVkaW5nIHNp emUiCiAgICAgKGhhc2gtdGFibGU/IChtYWtlLWhhc2gtdGFibGUgZXF1YWw/IGhhc2ggIzp3ZWFr ICdrZXkgMzEpKSkKIAotKQorICApCi0tIAoyLjE5LjEKCg== --000000000000b6a39d057efb700b Content-Type: text/x-patch; charset="US-ASCII"; name="0004-Reimplemented-RNRS-HASHTABLES-using-GENERIC-HASH-TAB.patch" Content-Disposition: attachment; filename="0004-Reimplemented-RNRS-HASHTABLES-using-GENERIC-HASH-TAB.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqofmioc3> X-Attachment-Id: f_jqofmioc3 RnJvbSBiOWU0ZWJmZWViOGQ5YjE2YTExZWZmYmU0OWY0YTdlODI2ODQ0ZGI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDggSmFuIDIwMTkgMjI6MDY6MTAg LTAyMDAKU3ViamVjdDogW1BBVENIIDQvNV0gUmVpbXBsZW1lbnRlZCAoUk5SUyBIQVNIVEFCTEVT KSB1c2luZyBHRU5FUklDLUhBU0gtVEFCTEVTCgotLS0KIG1vZHVsZS9ybnJzL2hhc2h0YWJsZXMu c2NtIHwgMjEyICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCAxMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bW9kdWxlL3JucnMvaGFzaHRhYmxlcy5zY20gYi9tb2R1bGUvcm5ycy9oYXNodGFibGVzLnNjbQpp bmRleCA0ODY0NTJhMmEuLmZkMjdjNTRjNiAxMDA2NDQKLS0tIGEvbW9kdWxlL3JucnMvaGFzaHRh Ymxlcy5zY20KKysrIGIvbW9kdWxlL3JucnMvaGFzaHRhYmxlcy5zY20KQEAgLTQzLDE0NyArNDMs ODUgQEAKIAkgIHN0cmluZy1jaS1oYXNoCiAJICBzeW1ib2wtaGFzaCkKICAgKGltcG9ydCAocmVu YW1lIChvbmx5IChndWlsZSkgc3RyaW5nLWhhc2gtY2kgCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cmluZy1oYXNoIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo YXNocSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHYKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbW9kdWxvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICp1bnNwZWNpZmllZCoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQEApCisg ICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmctaGFzaAorICAgICAgICAgICAgICAgICAgICAg ICAgaGFzaHEKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h2CisgICAgICAgICAgICAgICAg ICAgICAgICBtb2R1bG8KKyAgICAgICAgICAgICAgICAgICAgICAgICp1bnNwZWNpZmllZCopCiAJ CSAgKHN0cmluZy1oYXNoLWNpIHN0cmluZy1jaS1oYXNoKSkKIAkgIChvbmx5IChpY2UtOSBvcHRh cmdzKSBkZWZpbmUqKQotCSAgKHJlbmFtZSAob25seSAoc3JmaSA6NjkpIG1ha2UtaGFzaC10YWJs ZQotCQkJICAgICAgICAgICBoYXNoCi0JCQkJICAgaGFzaC1ieS1pZGVudGl0eQotCQkJICAgICAg ICAgICBoYXNoLXRhYmxlLXNpemUKLQkJCQkgICBoYXNoLXRhYmxlLXJlZi9kZWZhdWx0Ci0JCQkJ ICAgaGFzaC10YWJsZS1zZXQhCi0JCQkJICAgaGFzaC10YWJsZS1kZWxldGUhCi0JCQkJICAgaGFz aC10YWJsZS1leGlzdHM/Ci0JCQkJICAgaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQKLQkJCQkg ICBoYXNoLXRhYmxlLWNvcHkKLQkJCQkgICBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9u Ci0JCQkJICAgaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uCi0JCQkJICAgaGFzaC10YWJsZS1rZXlz Ci0JCQkJICAgaGFzaC10YWJsZS1mb2xkKQotCQkgIChoYXNoIGVxdWFsLWhhc2gpCi0JCSAgKGhh c2gtYnktaWRlbnRpdHkgc3ltYm9sLWhhc2gpKQotICAgICAgICAgIChvbmx5IChpY2UtOSBnZW5l cmljLWhhc2gtdGFibGVzKSBoYXNoLWJ5LXZhbHVlKQorCSAgKHJlbmFtZSAob25seSAoaWNlLTkg Z2VuZXJpYy1oYXNoLXRhYmxlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2UtaGFzaC10 YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC10YWJsZT8KKyAgICAgICAgICAgICAg ICAgICAgICAgIGhhc2gtdGFibGUtbXV0YWJsZT8KKyAgICAgICAgICAgICAgICAgICAgICAgIGhh c2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gtYnktaWRlbnRpdHkKKyAgICAgICAgICAg ICAgICAgICAgICAgIGhhc2gtYnktdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gt dGFibGUtc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC10YWJsZS1yZWYvZGVmYXVs dAorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC10YWJsZS1zZXQtc2luZ2xlIQorICAgICAg ICAgICAgICAgICAgICAgICAgaGFzaC10YWJsZS1kZWxldGUtc2luZ2xlIQorICAgICAgICAgICAg ICAgICAgICAgICAgaGFzaC10YWJsZS1jb250YWlucz8KKyAgICAgICAgICAgICAgICAgICAgICAg IGhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICBoYXNo LXRhYmxlLWNsZWFyIQorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC10YWJsZS1jb3B5Cisg ICAgICAgICAgICAgICAgICAgICAgICBoYXNoLXRhYmxlLWVudHJ5LXZlY3RvcnMKKyAgICAgICAg ICAgICAgICAgICAgICAgIGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgIGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbgorICAgICAgICAgICAgICAg ICAgICAgICAgaGFzaC10YWJsZS1rZXktdmVjdG9yKQorICAgICAgICAgICAgICAgICAgKG1ha2Ut aGFzaC10YWJsZSBnZW46bWFrZS1oYXNoLXRhYmxlKQorCQkgIChoYXNoIGVxdWFsLWhhc2gpKQor ICAgICAgICAgIChvbmx5IChzcmZpIHNyZmktNjkpIGhhc2gtdGFibGUtc2V0ISBoYXNoLXRhYmxl LWRlbGV0ZSEpCiAJICAocm5ycyBiYXNlICg2KSkKIAkgIChybnJzIHJlY29yZHMgcHJvY2VkdXJh bCAoNikpKQorCisgIChkZWZpbmUgaGFzaHRhYmxlPyBoYXNoLXRhYmxlPykKKworICAoZGVmaW5l IGhhc2h0YWJsZS1tdXRhYmxlPyBoYXNoLXRhYmxlLW11dGFibGU/KQorCisgIChkZWZpbmUgc3lt Ym9sLWhhc2ggaGFzaC1ieS1pZGVudGl0eSkKKworICAoZGVmaW5lKiAobWFrZS1lcS1oYXNodGFi bGUgIzpvcHRpb25hbCBjYXBhY2l0eSkKKyAgICAoaWYgY2FwYWNpdHkKKyAgICAgICAgKGdlbjpt YWtlLWhhc2gtdGFibGUgZXE/ICNmICM6Y2FwYWNpdHkgY2FwYWNpdHkpCisgICAgICAgIChnZW46 bWFrZS1oYXNoLXRhYmxlIGVxPyAjZikpKQorCisgIChkZWZpbmUqIChtYWtlLWVxdi1oYXNodGFi bGUgIzpvcHRpb25hbCBjYXBhY2l0eSkKKyAgICAoaWYgY2FwYWNpdHkKKyAgICAgICAgKGdlbjpt YWtlLWhhc2gtdGFibGUgZXF2PyAjZiAjOmNhcGFjaXR5IGNhcGFjaXR5KQorICAgICAgICAoZ2Vu Om1ha2UtaGFzaC10YWJsZSBlcXY/ICNmKSkpCisKKyAgKGRlZmluZSogKG1ha2UtaGFzaHRhYmxl IGhhc2gtZnVuY3Rpb24gZXF1aXYgIzpvcHRpb25hbCBjYXBhY2l0eSkKKyAgICAoaWYgY2FwYWNp dHkKKyAgICAgICAgKGdlbjptYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1mdW5jdGlvbiAjOmNh cGFjaXR5IGNhcGFjaXR5KQorICAgICAgICAoZ2VuOm1ha2UtaGFzaC10YWJsZSBlcXVpdiBoYXNo LWZ1bmN0aW9uKSkpCiAgIAotICAoZGVmaW5lIHI2cnM6aGFzaHRhYmxlIAotICAgIChtYWtlLXJl Y29yZC10eXBlLWRlc2NyaXB0b3IgCi0gICAgICdyNnJzOmhhc2h0YWJsZSAjZiAjZiAjdCAjdCAK LSAgICAgJyMoKG11dGFibGUgd3JhcHBlZC10YWJsZSkKLSAgICAgICAgKGltbXV0YWJsZSBvcmln LWhhc2gtZnVuY3Rpb24pCi0gICAgICAgIChpbW11dGFibGUgbXV0YWJsZSkKLSAgICAgICAgKGlt bXV0YWJsZSB0eXBlKSkpKQotCi0gIChkZWZpbmUgaGFzaHRhYmxlPyAocmVjb3JkLXByZWRpY2F0 ZSByNnJzOmhhc2h0YWJsZSkpCi0gIChkZWZpbmUgbWFrZS1yNnJzLWhhc2h0YWJsZSAKLSAgICAo cmVjb3JkLWNvbnN0cnVjdG9yIChtYWtlLXJlY29yZC1jb25zdHJ1Y3Rvci1kZXNjcmlwdG9yIAot CQkJIHI2cnM6aGFzaHRhYmxlICNmICNmKSkpCi0gIChkZWZpbmUgcjZyczpoYXNodGFibGUtd3Jh cHBlZC10YWJsZSAocmVjb3JkLWFjY2Vzc29yIHI2cnM6aGFzaHRhYmxlIDApKQotICAoZGVmaW5l IHI2cnM6aGFzaHRhYmxlLXNldC13cmFwcGVkLXRhYmxlISAocmVjb3JkLW11dGF0b3IgcjZyczpo YXNodGFibGUgMCkpCi0gIChkZWZpbmUgcjZyczpoYXNodGFibGUtb3JpZy1oYXNoLWZ1bmN0aW9u IChyZWNvcmQtYWNjZXNzb3IgcjZyczpoYXNodGFibGUgMSkpCi0gIChkZWZpbmUgcjZyczpoYXNo dGFibGUtbXV0YWJsZT8gKHJlY29yZC1hY2Nlc3NvciByNnJzOmhhc2h0YWJsZSAyKSkKLSAgKGRl ZmluZSByNnJzOmhhc2h0YWJsZS10eXBlIChyZWNvcmQtYWNjZXNzb3IgcjZyczpoYXNodGFibGUg MykpCi0KLSAgKGRlZmluZSBoYXNodGFibGUtbXV0YWJsZT8gcjZyczpoYXNodGFibGUtbXV0YWJs ZT8pCi0KLSAgOzsgKGRlZmluZSBoYXNoLWJ5LXZhbHVlICgoQEAgKHNyZmkgc3JmaS02OSkgY2Fs bGVyLXdpdGgtZGVmYXVsdC1zaXplKSBoYXNodikpCi0gIDs7IChkZWZpbmUgKHdyYXAtaGFzaC1m dW5jdGlvbiBwcm9jKQotICA7OyAgIChsYW1iZGEgKGtleSBjYXBhY2l0eSkgKG1vZHVsbyAocHJv YyBrZXkpIGNhcGFjaXR5KSkpCi0KLSAgKGRlZmluZSogKG1ha2UtZXEtaGFzaHRhYmxlICM6b3B0 aW9uYWwgaykKLSAgICAobWFrZS1yNnJzLWhhc2h0YWJsZSAKLSAgICAgKGlmIGsgKG1ha2UtaGFz aC10YWJsZSBlcT8gaGFzaHEgaykgKG1ha2UtaGFzaC10YWJsZSBlcT8gc3ltYm9sLWhhc2gpKQot ICAgICBzeW1ib2wtaGFzaAotICAgICAjdAotICAgICAnZXEpKQotCi0gIChkZWZpbmUqIChtYWtl LWVxdi1oYXNodGFibGUgIzpvcHRpb25hbCBrKQotICAgIChtYWtlLXI2cnMtaGFzaHRhYmxlIAot ICAgICAoaWYgayAobWFrZS1oYXNoLXRhYmxlIGVxdj8gaGFzaHYgaykgKG1ha2UtaGFzaC10YWJs ZSBlcXY/IGhhc2gtYnktdmFsdWUpKQotICAgICBoYXNoLWJ5LXZhbHVlCi0gICAgICN0Ci0gICAg ICdlcXYpKQotCi0gIChkZWZpbmUqIChtYWtlLWhhc2h0YWJsZSBoYXNoLWZ1bmN0aW9uIGVxdWl2 ICM6b3B0aW9uYWwgaykKLSAgICAobWFrZS1yNnJzLWhhc2h0YWJsZQotICAgICAoaWYgawotICAg ICAgICAgKG1ha2UtaGFzaC10YWJsZSBlcXVpdiBoYXNoLWZ1bmN0aW9uIGspCi0gICAgICAgICAo bWFrZS1oYXNoLXRhYmxlIGVxdWl2IGhhc2gtZnVuY3Rpb24pKQotICAgICBoYXNoLWZ1bmN0aW9u Ci0gICAgICN0Ci0gICAgICdjdXN0b20pKQotIAotICAoZGVmaW5lIChoYXNodGFibGUtc2l6ZSBo YXNodGFibGUpCi0gICAgKGhhc2gtdGFibGUtc2l6ZSAocjZyczpoYXNodGFibGUtd3JhcHBlZC10 YWJsZSBoYXNodGFibGUpKSkKLQotICAoZGVmaW5lIChoYXNodGFibGUtcmVmIGhhc2h0YWJsZSBr ZXkgZGVmYXVsdCkKLSAgICAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCAKLSAgICAgKHI2cnM6aGFz aHRhYmxlLXdyYXBwZWQtdGFibGUgaGFzaHRhYmxlKSBrZXkgZGVmYXVsdCkpCi0KLSAgKGRlZmlu ZSAoaGFzaHRhYmxlLXNldCEgaGFzaHRhYmxlIGtleSBvYmopCi0gICAgKGlmIChyNnJzOmhhc2h0 YWJsZS1tdXRhYmxlPyBoYXNodGFibGUpCi0gICAgICAgIChoYXNoLXRhYmxlLXNldCEgKHI2cnM6 aGFzaHRhYmxlLXdyYXBwZWQtdGFibGUgaGFzaHRhYmxlKSBrZXkgb2JqKQotICAgICAgICAoYXNz ZXJ0aW9uLXZpb2xhdGlvbgotICAgICAgICAgJ2hhc2h0YWJsZS1zZXQhICJIYXNodGFibGUgaXMg aW1tdXRhYmxlLiIgaGFzaHRhYmxlKSkpCi0KLSAgKGRlZmluZSAoaGFzaHRhYmxlLWRlbGV0ZSEg aGFzaHRhYmxlIGtleSkKLSAgICAoaWYgKHI2cnM6aGFzaHRhYmxlLW11dGFibGU/IGhhc2h0YWJs ZSkKLQkoaGFzaC10YWJsZS1kZWxldGUhIChyNnJzOmhhc2h0YWJsZS13cmFwcGVkLXRhYmxlIGhh c2h0YWJsZSkga2V5KSkKLSAgICAqdW5zcGVjaWZpZWQqKQotCi0gIChkZWZpbmUgKGhhc2h0YWJs ZS1jb250YWlucz8gaGFzaHRhYmxlIGtleSkKLSAgICAoaGFzaC10YWJsZS1leGlzdHM/IChyNnJz Omhhc2h0YWJsZS13cmFwcGVkLXRhYmxlIGhhc2h0YWJsZSkga2V5KSkKLQotICAoZGVmaW5lICho YXNodGFibGUtdXBkYXRlISBoYXNodGFibGUga2V5IHByb2MgZGVmYXVsdCkKLSAgICAoaWYgKHI2 cnM6aGFzaHRhYmxlLW11dGFibGU/IGhhc2h0YWJsZSkKLQkoaGFzaC10YWJsZS11cGRhdGUhL2Rl ZmF1bHQgCi0JIChyNnJzOmhhc2h0YWJsZS13cmFwcGVkLXRhYmxlIGhhc2h0YWJsZSkga2V5IHBy b2MgZGVmYXVsdCkpCi0gICAgKnVuc3BlY2lmaWVkKikKLQotICAoZGVmaW5lKiAoaGFzaHRhYmxl LWNvcHkgaGFzaHRhYmxlICM6b3B0aW9uYWwgbXV0YWJsZSkKLSAgICAobWFrZS1yNnJzLWhhc2h0 YWJsZSAKLSAgICAgKGhhc2gtdGFibGUtY29weSAocjZyczpoYXNodGFibGUtd3JhcHBlZC10YWJs ZSBoYXNodGFibGUpKQotICAgICAocjZyczpoYXNodGFibGUtb3JpZy1oYXNoLWZ1bmN0aW9uIGhh c2h0YWJsZSkKLSAgICAgKGFuZCBtdXRhYmxlICN0KQotICAgICAocjZyczpoYXNodGFibGUtdHlw ZSBoYXNodGFibGUpKSkKLQotICAoZGVmaW5lKiAoaGFzaHRhYmxlLWNsZWFyISBoYXNodGFibGUg IzpvcHRpb25hbCBrKQotICAgIChpZiAocjZyczpoYXNodGFibGUtbXV0YWJsZT8gaGFzaHRhYmxl KQotCShsZXQqICgoaHQgKHI2cnM6aGFzaHRhYmxlLXdyYXBwZWQtdGFibGUgaGFzaHRhYmxlKSkK LQkgICAgICAgKGVxdWl2IChoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0KSkKLQkg ICAgICAgKGhhc2gtZnVuY3Rpb24gKHI2cnM6aGFzaHRhYmxlLW9yaWctaGFzaC1mdW5jdGlvbiBo YXNodGFibGUpKSkKLQkgIChyNnJzOmhhc2h0YWJsZS1zZXQtd3JhcHBlZC10YWJsZSEKLQkgICBo YXNodGFibGUKLQkgICAoaWYgayAKLQkgICAgICAgKG1ha2UtaGFzaC10YWJsZSBlcXVpdiBoYXNo LWZ1bmN0aW9uIGspCi0JICAgICAgIChtYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1mdW5jdGlv bikpKSkpCi0gICAgKnVuc3BlY2lmaWVkKikKLQotICAoZGVmaW5lIChoYXNodGFibGUta2V5cyBo YXNodGFibGUpCi0gICAgKGxpc3QtPnZlY3RvciAoaGFzaC10YWJsZS1rZXlzIChyNnJzOmhhc2h0 YWJsZS13cmFwcGVkLXRhYmxlIGhhc2h0YWJsZSkpKSkKLQotICAoZGVmaW5lIChoYXNodGFibGUt ZW50cmllcyBoYXNodGFibGUpCi0gICAgKGxldCogKChodCAocjZyczpoYXNodGFibGUtd3JhcHBl ZC10YWJsZSBoYXNodGFibGUpKQotCSAgIChzaXplIChoYXNoLXRhYmxlLXNpemUgaHQpKQotCSAg IChrZXlzIChtYWtlLXZlY3RvciBzaXplKSkKLQkgICAodmFscyAobWFrZS12ZWN0b3Igc2l6ZSkp KQotICAgICAgKGhhc2gtdGFibGUtZm9sZCAocjZyczpoYXNodGFibGUtd3JhcHBlZC10YWJsZSBo YXNodGFibGUpCi0JCSAgICAgICAobGFtYmRhIChrIHYgaSkKLQkJCSAodmVjdG9yLXNldCEga2V5 cyBpIGspCi0JCQkgKHZlY3Rvci1zZXQhIHZhbHMgaSB2KQotCQkJICgrIGkgMSkpCi0JCSAgICAg ICAwKQotICAgICAgKHZhbHVlcyBrZXlzIHZhbHMpKSkKLQotICAoZGVmaW5lIChoYXNodGFibGUt ZXF1aXZhbGVuY2UtZnVuY3Rpb24gaGFzaHRhYmxlKQotICAgIChoYXNoLXRhYmxlLWVxdWl2YWxl bmNlLWZ1bmN0aW9uIChyNnJzOmhhc2h0YWJsZS13cmFwcGVkLXRhYmxlIGhhc2h0YWJsZSkpKQor ICAoZGVmaW5lIGhhc2h0YWJsZS1zaXplIGhhc2gtdGFibGUtc2l6ZSkKKworICAoZGVmaW5lIGhh c2h0YWJsZS1yZWYgaGFzaC10YWJsZS1yZWYvZGVmYXVsdCkKKworICAoZGVmaW5lIGhhc2h0YWJs ZS1zZXQhIGhhc2gtdGFibGUtc2V0ISkKKworICAoZGVmaW5lIGhhc2h0YWJsZS1kZWxldGUhIGhh c2gtdGFibGUtZGVsZXRlISkKKworICAoZGVmaW5lIGhhc2h0YWJsZS1jb250YWlucz8gaGFzaC10 YWJsZS1jb250YWlucz8pCisKKyAgKGRlZmluZSBoYXNodGFibGUtdXBkYXRlISBoYXNoLXRhYmxl LXVwZGF0ZSEvZGVmYXVsdCkKKworICAoZGVmaW5lKiAoaGFzaHRhYmxlLWNvcHkgaHQgIzpvcHRp b25hbCBtdXRhYmxlKQorICAgIChoYXNoLXRhYmxlLWNvcHkgaHQgIzptdXRhYmxlIG11dGFibGUp KQorCisgIChkZWZpbmUgaGFzaHRhYmxlLWNsZWFyISBoYXNoLXRhYmxlLWNsZWFyISkKKworICAo ZGVmaW5lIGhhc2h0YWJsZS1rZXlzIGhhc2gtdGFibGUta2V5LXZlY3RvcikKKworICAoZGVmaW5l IGhhc2h0YWJsZS1lbnRyaWVzIGhhc2gtdGFibGUtZW50cnktdmVjdG9ycykKKworICAoZGVmaW5l IGhhc2h0YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1 bmN0aW9uKQogCiAgIChkZWZpbmUgKGhhc2h0YWJsZS1oYXNoLWZ1bmN0aW9uIGhhc2h0YWJsZSkK LSAgICAoY2FzZSAocjZyczpoYXNodGFibGUtdHlwZSBoYXNodGFibGUpCi0gICAgICAoKGVxIGVx dikgI2YpCi0gICAgICAoZWxzZSAocjZyczpoYXNodGFibGUtb3JpZy1oYXNoLWZ1bmN0aW9uIGhh c2h0YWJsZSkpKSkpCisgICAgKGxldCAoKGhhc2gtZnVuY3Rpb24gKGhhc2gtdGFibGUtaGFzaC1m dW5jdGlvbiBoYXNodGFibGUpKSkKKyAgICAgIChjb25kICgob3IgKGVxPyBoYXNoLWJ5LWlkZW50 aXR5IGhhc2gtZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgIChlcT8gaGFzaC1ieS12YWx1ZSAg ICBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAjZikKKyAgICAgICAgICAgIChlbHNlIGhh c2gtZnVuY3Rpb24pKSkpKQotLSAKMi4xOS4xCgo= --000000000000b6a39d057efb700b Content-Type: text/x-patch; charset="US-ASCII"; name="0005-Implemented-SRFI-126-using-GENERIC-HASH-TABLES.patch" Content-Disposition: attachment; filename="0005-Implemented-SRFI-126-using-GENERIC-HASH-TABLES.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqofmiol4> X-Attachment-Id: f_jqofmiol4 RnJvbSA1NzVhMzMxNjkxNmZkZGRiYzMwYTQwNGYxOTAyNzdlMWI1YzBlNzFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDggSmFuIDIwMTkgMjI6MDc6MDIg LTAyMDAKU3ViamVjdDogW1BBVENIIDUvNV0gSW1wbGVtZW50ZWQgU1JGSS0xMjYgdXNpbmcgR0VO RVJJQy1IQVNILVRBQkxFUwoKLS0tCiBtb2R1bGUvTWFrZWZpbGUuYW0gICAgICAgICAgICAgfCAg IDEgKwogbW9kdWxlL3NyZmkvc3JmaS0xMjYuc2NtICAgICAgIHwgMjE1ICsrKysrKysrKysrKysr KysrKysrKwogdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbSAgICAgICAgIHwgICAxICsKIHRlc3Qtc3Vp dGUvdGVzdHMvc3JmaS0xMjYudGVzdCB8IDM0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNTYxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBtb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20KIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0LXN1 aXRlL3Rlc3RzL3NyZmktMTI2LnRlc3QKCmRpZmYgLS1naXQgYS9tb2R1bGUvTWFrZWZpbGUuYW0g Yi9tb2R1bGUvTWFrZWZpbGUuYW0KaW5kZXggNmRiYTg3Y2U4Li42ZTczOWZlZDAgMTAwNjQ0Ci0t LSBhL21vZHVsZS9NYWtlZmlsZS5hbQorKysgYi9tb2R1bGUvTWFrZWZpbGUuYW0KQEAgLTI5NCw2 ICsyOTQsNyBAQCBTT1VSQ0VTID0JCQkJCVwKICAgc3JmaS9zcmZpLTg4LnNjbQkJCQlcCiAgIHNy Zmkvc3JmaS05OC5zY20JCQkJXAogICBzcmZpL3NyZmktMTExLnNjbQkJCQlcCisgIHNyZmkvc3Jm aS0xMjYuc2NtCQkJCVwKIAkJCQkJCVwKICAgc3RhdHByb2Yuc2NtCQkJCQlcCiAJCQkJCQlcCmRp ZmYgLS1naXQgYS9tb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20gYi9tb2R1bGUvc3JmaS9zcmZpLTEy Ni5zY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi43YTY1OTQ0MzQKLS0t IC9kZXYvbnVsbAorKysgYi9tb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20KQEAgLTAsMCArMSwyMTUg QEAKKzs7OyBzcmZpLTY5LnNjbSAtLS0gQmFzaWMgaGFzaCB0YWJsZXMKKworOzsgCUNvcHlyaWdo dCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKzs7Cis7OyBUaGlzIGxp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCis7 OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCis7OyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIKKzs7IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7Cis7OyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQorOzsgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K Kzs7Cis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCis7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisM CisKKyhkZWZpbmUtbW9kdWxlIChzcmZpIHNyZmktMTI2KQorICAjOnVzZS1tb2R1bGUgKHNyZmkg c3JmaS0xKQorICAjOnVzZS1tb2R1bGUgKChpY2UtOSBnZW5lcmljLWhhc2gtdGFibGVzKSAjOnBy ZWZpeCBnZW46KQorICAjOnVzZS1tb2R1bGUgKChybnJzIGhhc2h0YWJsZXMpCisgICAgICAgICAg ICAgICAgIzpzZWxlY3QgKGhhc2h0YWJsZT8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGFz aHRhYmxlLWNvbnRhaW5zPyBoYXNodGFibGUtbXV0YWJsZT8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgaGFzaHRhYmxlLXNldCEgaGFzaHRhYmxlLWRlbGV0ZSEgaGFzaHRhYmxlLWNsZWFyIQor ICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGUtc2l6ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICBoYXNodGFibGUta2V5cyBoYXNodGFibGUtZW50cmllcworICAgICAgICAgICAg ICAgICAgICAgICAgICBoYXNodGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgaGFzaHRhYmxlLWhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgZXF1YWwtaGFzaCBzeW1ib2wtaGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJpbmctaGFzaCBzdHJpbmctY2ktaGFzaCkpCisgICM6cmUtZXhwb3J0IChoYXNodGFibGU/ CisgICAgICAgICAgICAgICBoYXNodGFibGUtY29udGFpbnM/IGhhc2h0YWJsZS1tdXRhYmxlPwor ICAgICAgICAgICAgICAgaGFzaHRhYmxlLXNldCEgaGFzaHRhYmxlLWRlbGV0ZSEgaGFzaHRhYmxl LWNsZWFyIQorICAgICAgICAgICAgICAgaGFzaHRhYmxlLXNpemUKKyAgICAgICAgICAgICAgIGhh c2h0YWJsZS1rZXlzIGhhc2h0YWJsZS1lbnRyaWVzCisgICAgICAgICAgICAgICBoYXNodGFibGUt ZXF1aXZhbGVuY2UtZnVuY3Rpb24KKyAgICAgICAgICAgICAgIGhhc2h0YWJsZS1oYXNoLWZ1bmN0 aW9uCisgICAgICAgICAgICAgICBlcXVhbC1oYXNoIHN5bWJvbC1oYXNoCisgICAgICAgICAgICAg ICBzdHJpbmctaGFzaCBzdHJpbmctY2ktaGFzaCkKKyAgIzpleHBvcnQgKG1ha2UtZXEtaGFzaHRh YmxlCisgICAgICAgICAgICBtYWtlLWVxdi1oYXNodGFibGUgbWFrZS1oYXNodGFibGUKKyAgICAg ICAgICAgIGFsaXN0LT5lcS1oYXNodGFibGUgYWxpc3QtPmVxdi1oYXNodGFibGUgYWxpc3QtPmhh c2h0YWJsZQorICAgICAgICAgICAgaGFzaHRhYmxlLXdlYWtuZXNzCisgICAgICAgICAgICBoYXNo dGFibGUtcmVmIGhhc2h0YWJsZS1sb29rdXAKKyAgICAgICAgICAgIGhhc2h0YWJsZS11cGRhdGUh IGhhc2h0YWJsZS1pbnRlcm4hCisgICAgICAgICAgICBoYXNodGFibGUtY29weSBoYXNodGFibGUt ZW1wdHktY29weQorICAgICAgICAgICAgaGFzaHRhYmxlLXZhbHVlcworICAgICAgICAgICAgaGFz aHRhYmxlLWtleS1saXN0IGhhc2h0YWJsZS12YWx1ZS1saXN0IGhhc2h0YWJsZS1lbnRyeS1saXN0 cworICAgICAgICAgICAgaGFzaHRhYmxlLXdhbGsgaGFzaHRhYmxlLXVwZGF0ZS1hbGwhCisgICAg ICAgICAgICBoYXNodGFibGUtcHJ1bmUhIGhhc2h0YWJsZS1tZXJnZSEgaGFzaHRhYmxlLXN1bQor ICAgICAgICAgICAgaGFzaHRhYmxlLW1hcC0+bHNldAorICAgICAgICAgICAgaGFzaHRhYmxlLWZp bmQgaGFzaHRhYmxlLWVtcHR5PworICAgICAgICAgICAgaGFzaHRhYmxlLXBvcCEKKyAgICAgICAg ICAgIGhhc2h0YWJsZS1pbmMhIGhhc2h0YWJsZS1kZWMhCisgICAgICAgICAgICBoYXNoLXNhbHQp KQorCisoY29uZC1leHBhbmQtcHJvdmlkZSAoY3VycmVudC1tb2R1bGUpICcoc3JmaS0xMjYpKQor CisoZGVmaW5lIGhhc2h0YWJsZT8gZ2VuOmhhc2gtdGFibGU/KQorCisoZGVmaW5lKiAobWFrZS1o YXNodGFibGUgaGFzaC1mdW5jdGlvbiBlcXVpdi1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAg ICAgICAgICM6b3B0aW9uYWwgY2FwYWNpdHkgd2Vha25lc3MpCisgICJDcmVhdGVzIGEgbmV3IGhh c2ggdGFibGUuIEVRVUlWLUZVTkNUSU9OIGlzIHVzZWQgYXMgdGhlIGNvbXBhcmlzb24KK2Z1bmN0 aW9uIGFuZCBIQVNILUZVTkNUSU9OLCBpZiBwcm92aWRlZCBhbmQgbm90IGZhbHNlLCBpcyB1c2Vk IGFzIHRoZQoraGFzaCBmdW5jdGlvbiwgb3RoZXJ3aXNlIGEgc3VpdGFibGUgaGFzaC1mdW5jdGlv biBmb3IgdGhlIGhhc2ggdGFibGUgaXMKK2d1ZXNzZWQgb3IsIGlmIG9uZSBjYW4ndCBiZSBndWVz c2VkLCBhbiBlcnJvciBpcyBzaWduYWxlZC4gV0VBS05FU1MKK3Nob3VsZCBiZSBlaXRoZXIgI2Ys IFdFQUstS0VZLCBXRUFLLVZBTFVFIG9yIFdFQUstS0VZLUFORC1WQUxVRS4KK0NBUEFDSVRZIGlz IHRoZSBtaW5pbWFsIG51bWJlciBvZiBidWNrZXRzIG9mIHRoZSBoYXNoIHRhYmxlLiIKKyAgKGdl bjptYWtlLWhhc2gtdGFibGUgZXF1aXYtZnVuY3Rpb24gKGlmIChwYWlyPyBoYXNoLWZ1bmN0aW9u KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBoYXNoLWZ1 bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC1m dW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIzpjYXBhY2l0eSAob3IgY2FwYWNpdHkg MSkKKyAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpCisKKyhkZWZp bmUqIChtYWtlLWVxLWhhc2h0YWJsZSAjOm9wdGlvbmFsIGNhcGFjaXR5IHdlYWtuZXNzKQorICAo Z2VuOm1ha2UtaGFzaC10YWJsZSBlcT8gZ2VuOmhhc2gtYnktaWRlbnRpdHkKKyAgICAgICAgICAg ICAgICAgICAgICAgIzpjYXBhY2l0eSAob3IgY2FwYWNpdHkgMSkKKyAgICAgICAgICAgICAgICAg ICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpCisKKyhkZWZpbmUqIChtYWtlLWVxdi1oYXNodGFi bGUgIzpvcHRpb25hbCBjYXBhY2l0eSB3ZWFrbmVzcykKKyAgKGdlbjptYWtlLWhhc2gtdGFibGUg ZXF2PyBnZW46aGFzaC1ieS12YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAjOmNhcGFjaXR5 IChvciBjYXBhY2l0eSAxKQorICAgICAgICAgICAgICAgICAgICAgICAjOndlYWtuZXNzIHdlYWtu ZXNzKSkKKworKGRlZmluZSBhbGlzdC0+aGFzaHRhYmxlCisgIChjYXNlLWxhbWJkYQorICAgICgo aGFzaC1mdW5jdGlvbiBlcXVpdi1mdW5jdGlvbiBhbGlzdCkKKyAgICAgKGdlbjphbGlzdC0+aGFz aC10YWJsZSBhbGlzdCBlcXVpdi1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IChpZiAocGFpcj8gaGFzaC1mdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNhciBoYXNoLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo YXNoLWZ1bmN0aW9uKSkpCisgICAgKChoYXNoLWZ1bmN0aW9uIGVxdWl2LWZ1bmN0aW9uIGNhcGFj aXR5IGFsaXN0KQorICAgICAoZ2VuOmFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0IGVxdWl2LWZ1bmN0 aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChwYWlyPyBoYXNoLWZ1bmN0aW9u KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGhhc2gtZnVuY3Rpb24pCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gtZnVuY3Rpb24pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIzpjYXBhY2l0eSAob3IgY2FwYWNpdHkgMSkpKQorICAgICgoaGFz aC1mdW5jdGlvbiBlcXVpdi1mdW5jdGlvbiBjYXBhY2l0eSB3ZWFrbmVzcyBhbGlzdCkKKyAgICAg KGdlbjphbGlzdC0+aGFzaC10YWJsZSBhbGlzdCBlcXVpdi1mdW5jdGlvbgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChpZiAocGFpcj8gaGFzaC1mdW5jdGlvbikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNhciBoYXNoLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBoYXNoLWZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICM6Y2FwYWNpdHkgKG9yIGNhcGFjaXR5IDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg Izp3ZWFrbmVzcyB3ZWFrbmVzcykpKSkKKworKGRlZmluZSAoYWxpc3QtPmVxLWhhc2h0YWJsZSAu IGFyZ3MpCisgIChhcHBseSBhbGlzdC0+aGFzaHRhYmxlICNmIGVxPyBhcmdzKSkKKworKGRlZmlu ZSAoYWxpc3QtPmVxdi1oYXNodGFibGUgLiBhcmdzKQorICAoYXBwbHkgYWxpc3QtPmhhc2h0YWJs ZSAjZiBlcXY/IGFyZ3MpKQorCisoZGVmaW5lKiAoaGFzaHRhYmxlLXJlZiBodCBrZXkgIzpvcHRp b25hbCBkZWZhdWx0KQorICAoaWYgZGVmYXVsdAorICAgICAgKGdlbjpoYXNoLXRhYmxlLXJlZi9k ZWZhdWx0IGh0IGtleSBkZWZhdWx0KQorICAgICAgKGdlbjpoYXNoLXRhYmxlLXJlZiBodCBrZXkp KSkKKworOzsgKGRlZmluZSBoYXNodGFibGUtY29udGFpbnM/IHJucnM6aGFzaHRhYmxlLWNvbnRh aW5zPykKKzs7IChkZWZpbmUgaGFzaHRhYmxlLXNldCEgcm5yczpoYXNodGFibGUtc2V0ISkKKzs7 IChkZWZpbmUgaGFzaHRhYmxlLWRlbGV0ZSEgcm5yczpoYXNodGFibGUtZGVsZXRlISkKKworKGRl ZmluZSAoaGFzaHRhYmxlLWxvb2t1cCBoYXNodGFibGUga2V5KQorICAobGV0KiAoKGZvdW5kPyAj dCkKKyAgICAgICAgICh2YWx1ZSAoZ2VuOmhhc2gtdGFibGUtcmVmIGhhc2h0YWJsZSBrZXkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKHNldCEgZm91bmQ/ ICNmKSAjZikpKSkKKyAgICAodmFsdWVzIHZhbHVlIGZvdW5kPykpKQorCisoZGVmaW5lKiAoaGFz aHRhYmxlLXVwZGF0ZSEgaHQga2V5IG1vZGlmaWVyICM6b3B0aW9uYWwgZGVmYXVsdCkKKyAgKGlm IGRlZmF1bHQKKyAgICAgIChnZW46aGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQgaHQga2V5IG1v ZGlmaWVyIGRlZmF1bHQpCisgICAgICAoZ2VuOmhhc2gtdGFibGUtdXBkYXRlISBodCBrZXkgbW9k aWZpZXIpKSkKKworKGRlZmluZSBoYXNodGFibGUtaW50ZXJuISBnZW46aGFzaC10YWJsZS1pbnRl cm4hKQorCisoZGVmaW5lKiAoaGFzaHRhYmxlLWNvcHkgaGFzaHRhYmxlICM6b3B0aW9uYWwgbXV0 YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICh3ZWFrbmVzcyAoaGFzaHRhYmxlLXdlYWtu ZXNzIGhhc2h0YWJsZSkpKQorICAoZ2VuOmhhc2gtdGFibGUtY29weSBoYXNodGFibGUgIzptdXRh YmxlIG11dGFibGUgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpCisKKzs7IChkZWZpbmUgaGFzaHRhYmxl LWNsZWFyISBybnJzOmhhc2h0YWJsZS1jbGVhciEpCisKKyhkZWZpbmUqIChoYXNodGFibGUtZW1w dHktY29weSBoYXNodGFibGUgIzpvcHRpb25hbCBjYXBhY2l0eQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh3ZWFrbmVzcyAoaGFzaHRhYmxlLXdlYWtuZXNzIGhhc2h0YWJsZSkpKQor ICAobGV0ICgoY2FwYWNpdHkgKGNhc2UgY2FwYWNpdHkKKyAgICAgICAgICAgICAgICAgICAgKCgj ZikgMSkKKyAgICAgICAgICAgICAgICAgICAgKCgjdCkgKGhhc2h0YWJsZS1zaXplIGhhc2h0YWJs ZSkpCisgICAgICAgICAgICAgICAgICAgIChlbHNlIGNhcGFjaXR5KSkpKQorICAgIChnZW46aGFz aC10YWJsZS1lbXB0eS1jb3B5IGhhc2h0YWJsZSAjOmNhcGFjaXR5IGNhcGFjaXR5ICM6d2Vha25l c3Mgd2Vha25lc3MpKSkKKworDAorOzs7OyBBY2Nlc3Npbmcgd2hvbGUgdGFibGVzCisKKzs7IChk ZWZpbmUgaGFzaHRhYmxlLXNpemUgcm5yczpoYXNodGFibGUtc2l6ZSkKKzs7IChkZWZpbmUgaGFz aHRhYmxlLWtleXMgZ2VuOmhhc2gtdGFibGUta2V5LXZlY3RvcikKKyhkZWZpbmUgaGFzaHRhYmxl LXZhbHVlcyBnZW46aGFzaC10YWJsZS12YWx1ZS12ZWN0b3IpCis7OyAoZGVmaW5lIGhhc2h0YWJs ZS1lbnRyaWVzIHJucnM6aGFzaHRhYmxlLWVudHJpZXMpCisoZGVmaW5lIGhhc2h0YWJsZS1rZXkt bGlzdCBnZW46aGFzaC10YWJsZS1rZXlzKQorKGRlZmluZSBoYXNodGFibGUtdmFsdWUtbGlzdCBn ZW46aGFzaC10YWJsZS12YWx1ZXMpCisoZGVmaW5lIGhhc2h0YWJsZS1lbnRyeS1saXN0cyBnZW46 aGFzaC10YWJsZS1lbnRyaWVzKQorKGRlZmluZSBoYXNodGFibGUtPmFsaXN0IGdlbjpoYXNoLXRh YmxlLT5hbGlzdCkKKworKGRlZmluZSAoaGFzaHRhYmxlLXdhbGsgaGFzaHRhYmxlIHByb2MpCisg IChnZW46aGFzaC10YWJsZS1mb3ItZWFjaCBwcm9jIGhhc2h0YWJsZSkpCisKKyhkZWZpbmUgKGhh c2h0YWJsZS11cGRhdGUtYWxsISBoYXNodGFibGUgcHJvYykKKyAgKGdlbjpoYXNoLXRhYmxlLW1h cCEgcHJvYyBoYXNodGFibGUpKQorCisoZGVmaW5lIChoYXNodGFibGUtcHJ1bmUhIGhhc2h0YWJs ZSBwcm9jKQorICAoZ2VuOmhhc2gtdGFibGUtcHJ1bmUhIHByb2MgaGFzaHRhYmxlKSkKKworKGRl ZmluZSAoaGFzaHRhYmxlLXN1bSBoYXNodGFibGUgaW5pdCBwcm9jKQorICAoZ2VuOmhhc2gtdGFi bGUtZm9sZCBwcm9jIGluaXQgaGFzaHRhYmxlKSkKKworKGRlZmluZSAoaGFzaHRhYmxlLW1lcmdl ISBodCBvdGhlci1odCkKKyAgKGdlbjpoYXNoLXRhYmxlLWZvci1lYWNoIChsYW1iZGEgKGsgdikg KGhhc2h0YWJsZS1zZXQhIGh0IGsgdikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhl ci1odCkKKyAgaHQpCisKKyhkZWZpbmUgKGhhc2h0YWJsZS1tYXAtPmxzZXQgaGFzaHRhYmxlIHBy b2MpCisgIChnZW46aGFzaC10YWJsZS1tYXAtPmxpc3QgcHJvYyBoYXNodGFibGUpKQorCisoZGVm aW5lIChoYXNodGFibGUtZmluZCBoYXNodGFibGUgcHJvYykKKyAgKGNhbGwvY2MgKGxhbWJkYSAo cmV0dXJuKQorICAgICAgICAgICAgIChnZW46aGFzaC10YWJsZS1mb3ItZWFjaCAobGFtYmRhIChr IHYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKHByb2Mg ayB2KSAocmV0dXJuIGsgdiAjdCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBoYXNodGFibGUpCisgICAgICAgICAgICAgKHZhbHVlcyAqdW5zcGVjaWZpZWQqICp1bnNw ZWNpZmllZCogI2YpKSkpCisKKyhkZWZpbmUgaGFzaHRhYmxlLWVtcHR5PyBnZW46aGFzaC10YWJs ZS1lbXB0eT8pCisoZGVmaW5lIGhhc2h0YWJsZS1wb3AhIGdlbjpoYXNoLXRhYmxlLXBvcCEpCisK KyhkZWZpbmUqIChoYXNodGFibGUtaW5jISBoYXNodGFibGUga2V5ICM6b3B0aW9uYWwgKG51bWJl ciAxKSkKKyAgKGhhc2h0YWJsZS11cGRhdGUhIGhhc2h0YWJsZSBrZXkgKGxhbWJkYSAodikgKCsg diBudW1iZXIpKSAwKSkKKworKGRlZmluZSogKGhhc2h0YWJsZS1kZWMhIGhhc2h0YWJsZSBrZXkg IzpvcHRpb25hbCAobnVtYmVyIDEpKQorICAoaGFzaHRhYmxlLXVwZGF0ZSEgaGFzaHRhYmxlIGtl eSAobGFtYmRhICh2KSAoLSB2IG51bWJlcikpIDApKQorCisoZGVmaW5lIGhhc2h0YWJsZS13ZWFr bmVzcyBnZW46aGFzaC10YWJsZS13ZWFrbmVzcykKKzs7IChkZWZpbmUgaGFzaHRhYmxlLW11dGFi bGU/IHJucnM6aGFzaHRhYmxlLW11dGFibGU/KQorOzsgKGRlZmluZSBoYXNodGFibGUtZXF1aXZh bGVuY2UtZnVuY3Rpb24gcm5yczpoYXNodGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24pCis7OyAo ZGVmaW5lIGhhc2h0YWJsZS1oYXNoLWZ1bmN0aW9uIHJucnM6aGFzaHRhYmxlLWhhc2gtZnVuY3Rp b24pCis7OyAoZGVmaW5lIGVxdWFsLWhhc2ggcm5yczplcXVhbC1oYXNoKQorOzsgKGRlZmluZSBz dHJpbmctaGFzaCBybnJzOnN0cmluZy1oYXNoKQorOzsgKGRlZmluZSBzdHJpbmctY2ktaGFzaCBy bnJzOnN0cmluZy1jaS1oYXNoKQorOzsgKGRlZmluZSBzeW1ib2wtaGFzaCBybnJzOnN5bWJvbC1o YXNoKQorCisoZGVmaW5lICpoYXNoLXNhbHQqCisgIChsZXQgKChzZWVkIChnZXRlbnYgIlNSRklf MTI2X0hBU0hfU0VFRCIpKSkKKyAgICAoaWYgKG9yIChub3Qgc2VlZCkgKHN0cmluZz0/IHNlZWQg IiIpKQorICAgICAgICAocmFuZG9tIG1vc3QtcG9zaXRpdmUtZml4bnVtKQorICAgICAgICAobW9k dWxvIChzdHJpbmctaGFzaCBzZWVkKSBtb3N0LXBvc2l0aXZlLWZpeG51bSkpKSkKKworKGRlZmlu ZSAoaGFzaC1zYWx0KSAqaGFzaC1zYWx0KikKKworOzsgZW9mCmRpZmYgLS1naXQgYS90ZXN0LXN1 aXRlL01ha2VmaWxlLmFtIGIvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQppbmRleCBlMTU0NjAyYTcu LmYwYWQ4YmI5MSAxMDA2NDQKLS0tIGEvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQorKysgYi90ZXN0 LXN1aXRlL01ha2VmaWxlLmFtCkBAIC0xNjIsNiArMTYyLDcgQEAgU0NNX1RFU1RTID0gdGVzdHMv MDAtaW5pdGlhbC1lbnYudGVzdAkJXAogCSAgICB0ZXN0cy9zcmZpLTk4LnRlc3QJCQlcCiAJICAg IHRlc3RzL3NyZmktMTA1LnRlc3QJCQlcCiAJICAgIHRlc3RzL3NyZmktMTExLnRlc3QJCQlcCisJ ICAgIHRlc3RzL3NyZmktMTI2LnRlc3QJCQlcCiAJICAgIHRlc3RzL3NyZmktNC50ZXN0CQkJXAog CSAgICB0ZXN0cy9zcmZpLTkudGVzdAkJCVwKIAkgICAgdGVzdHMvc3RhdHByb2YudGVzdAkJCVwK ZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjYudGVzdCBiL3Rlc3Qtc3VpdGUv dGVzdHMvc3JmaS0xMjYudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LmU2YTRlNjZhOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjYu dGVzdApAQCAtMCwwICsxLDM0NCBAQAorOzs7OyBzcmZpLTY5LnRlc3QgLS0tIFRlc3Qgc3VpdGUg Zm9yIFNSRkkgNjkgLSotIHNjaGVtZSAtKi0KKzs7OzsKKzs7OzsgCUNvcHlyaWdodCAoQykgMjAw NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKzs7OzsKKzs7OzsgVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorOzs7OyBt b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj Cis7Ozs7IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcgorOzs7OyB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7Ozs7Cis7Ozs7IFRoaXMgbGlicmFyeSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzs7OyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor Ozs7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQorOzs7OyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorOzs7OworOzs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7Ozs7IExpY2Vuc2UgYWxvbmcgd2l0aCB0 aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKzs7OzsgRm91 bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAwMjExMC0xMzAxIFVTQQorCis7OzsgVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgdGhlIHRlc3Rz IGZyb20gU1JGSS0xMjYgcmVmZXJlbmNlCis7OzsgaW1wbGVtZW50YXRpb24gcG9ydGVkIHRvIEd1 aWxlIHRlc3Qgc3VpdGUuCisKKyhkZWZpbmUtbW9kdWxlICh0ZXN0LXNyZmktMTI2KQorICAjOnVz ZS1tb2R1bGUgKHRlc3Qtc3VpdGUgbGliKQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjYp CisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZp LTIpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTgpKQorCisoZGVmaW5lLXN5bnRheCB3aXRo LWVsdC1pbi1saXN0CisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKHdpdGgtZWx0LWluLWxpc3Qg YXJnIGFyZy1saXN0IGV4cHIgLi4uKQorICAgICAobGV0IGxvb3AgKChhcmctbGlzdCogYXJnLWxp c3QpKQorICAgICAgIChvciAobnVsbD8gYXJnLWxpc3QqKQorICAgICAgICAgICAoYW5kIChsZXQg KChhcmcgKGNhciBhcmctbGlzdCopKSkKKyAgICAgICAgICAgICAgICAgIGV4cHIgLi4uKQorICAg ICAgICAgICAgICAgIChsb29wIChjZHIgYXJnLWxpc3QqKSkpKSkpKSkKKworKGRlZmluZSAoZXhh Y3QtaW50ZWdlcj8gb2JqKQorICAoYW5kIChpbnRlZ2VyPyBvYmopIChleGFjdD8gb2JqKSkpCisK KyhkZWZpbmUgKHRlc3Qtc3RyLXdlYWtuZXNzIHN0ciB3ZWFrbmVzcykKKyAgKGlmIChub3Qgd2Vh a25lc3MpIHN0ciAoZm9ybWF0ICNmICJ+YSAod2Vha25lc3M6IH5hKSIgc3RyIHdlYWtuZXNzKSkp CisKKworCisod2l0aC10ZXN0LXByZWZpeCAiU1JGSS0xMjYiCisKKyAgOzsgVGhlIGZvbGxvd2lu ZyB0ZXN0cyBhcmUgZG9uZSBvbmNlIHdpdGggZWFjaCBraW5kIG9mIHdlYWtuZXNzCisgICh3aXRo LWVsdC1pbi1saXN0IHdlYWtuZXNzIChsaXN0ICNmICd3ZWFrLWtleSAnd2Vhay12YWx1ZSAnd2Vh ay1rZXktYW5kLXZhbHVlKQorCisgICAgKHdpdGgtdGVzdC1wcmVmaXggImVxIgorICAgICAgKGxl dCAoKHRhYmxlcyAobGlzdCAoYW5kIChub3Qgd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1ha2UtZXEtaGFzaHRhYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1ha2UtZXEtaGFzaHRhYmxlIDEwIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAobWFrZS1lcS1oYXNodGFibGUgI2Ygd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYWtlLWhhc2h0YWJsZSAjZiBlcT8gI2Ygd2Vha25lc3MpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChhbmQgKG5vdCB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoYWxpc3QtPmVxLWhhc2h0YWJsZSAnKChhIC4gYikgKGMgLiBkKSkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAoYWxpc3QtPmVxLWhhc2h0YWJsZSAxMCB3ZWFrbmVzcyAnKChh IC4gYikgKGMgLiBkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC0+ZXEtaGFz aHRhYmxlICNmIHdlYWtuZXNzICcoKGEgLiBiKSAoYyAuIGQpKSkpKSkKKyAgICAgICAgKGRvICgo dGFibGVzIHRhYmxlcyAoY2RyIHRhYmxlcykpCisgICAgICAgICAgICAgKGkgMCAoKyBpIDEpKSkK KyAgICAgICAgICAgICgobnVsbD8gdGFibGVzKSkKKyAgICAgICAgICAoYW5kLWxldCogKCh0YWJs ZSAoY2FyIHRhYmxlcykpKQorICAgICAgICAgICAgKHdpdGgtdGVzdC1wcmVmaXggKHRlc3Qtc3Ry LXdlYWtuZXNzIChmb3JtYXQgI2YgInRhYmxlIH5hIiBpKSB3ZWFrbmVzcykKKyAgICAgICAgICAg ICAgKHBhc3MtaWYgKGhhc2h0YWJsZT8gdGFibGUpKQorICAgICAgICAgICAgICAocGFzcy1pZi1l cXVhbCAjZiAoaGFzaHRhYmxlLWhhc2gtZnVuY3Rpb24gdGFibGUpKQorICAgICAgICAgICAgICAo cGFzcy1pZi1lcXVhbCBlcT8gKGhhc2h0YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiB0YWJsZSkp CisgICAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIHdlYWtuZXNzIChoYXNodGFibGUtd2Vha25l c3MgdGFibGUpKQorICAgICAgICAgICAgICAocGFzcy1pZiAoaGFzaHRhYmxlLW11dGFibGU/IHRh YmxlKSkpKSkpKQorCisgICAgKHdpdGgtdGVzdC1wcmVmaXggImVxdiIKKyAgICAgIChsZXQgKCh0 YWJsZXMgKGxpc3QgKGFuZCAobm90IHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYWtlLWVxdi1oYXNodGFibGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAo bWFrZS1lcXYtaGFzaHRhYmxlIDEwIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAobWFrZS1lcXYtaGFzaHRhYmxlICNmIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAobWFrZS1oYXNodGFibGUgI2YgZXF2PyAjZiB3ZWFrbmVzcykKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKGFuZCAobm90IHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChhbGlzdC0+ZXF2LWhhc2h0YWJsZSAnKChhIC4gYikgKGMgLiBkKSkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAoYWxpc3QtPmVxdi1oYXNodGFibGUgMTAgd2Vha25lc3MgJygo YSAuIGIpIChjIC4gZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxpc3QtPmVxdi1o YXNodGFibGUgI2Ygd2Vha25lc3MgJygoYSAuIGIpIChjIC4gZCkpKSkpKQorICAgICAgICAoZG8g KCh0YWJsZXMgdGFibGVzIChjZHIgdGFibGVzKSkKKyAgICAgICAgICAgICAoaSAwICgrIGkgMSkp KQorICAgICAgICAgICAgKChudWxsPyB0YWJsZXMpKQorICAgICAgICAgIChhbmQtbGV0KiAoKHRh YmxlIChjYXIgdGFibGVzKSkpCisgICAgICAgICAgICAod2l0aC10ZXN0LXByZWZpeCAodGVzdC1z dHItd2Vha25lc3MgKGZvcm1hdCAjZiAidGFibGUgfmEiIGkpIHdlYWtuZXNzKQorICAgICAgICAg ICAgICAocGFzcy1pZiAoaGFzaHRhYmxlPyB0YWJsZSkpCisgICAgICAgICAgICAgIChwYXNzLWlm LWVxdWFsICNmIChoYXNodGFibGUtaGFzaC1mdW5jdGlvbiB0YWJsZSkpCisgICAgICAgICAgICAg IChwYXNzLWlmLWVxdWFsIGVxdj8gKGhhc2h0YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiB0YWJs ZSkpCisgICAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIHdlYWtuZXNzIChoYXNodGFibGUtd2Vh a25lc3MgdGFibGUpKQorICAgICAgICAgICAgICAocGFzcy1pZiAoaGFzaHRhYmxlLW11dGFibGU/ IHRhYmxlKSkpKSkpKQorCisgICAgKHdpdGgtdGVzdC1wcmVmaXggImVxdWFsIgorICAgICAgKGxl dCAoKHRhYmxlcyAobGlzdCAoYW5kIChub3Qgd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1ha2UtaGFzaHRhYmxlIGVxdWFsLWhhc2ggZXF1YWw/KSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1ha2UtaGFzaHRhYmxlIGVxdWFsLWhhc2ggZXF1YWw/IDEwIHdl YWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1oYXNodGFibGUgZXF1YWwt aGFzaCBlcXVhbD8gI2Ygd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQg KG5vdCB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWxpc3QtPmhh c2h0YWJsZSBlcXVhbC1oYXNoIGVxdWFsPyAnKChhIC4gYikgKGMgLiBkKSkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAoYWxpc3QtPmhhc2h0YWJsZSBlcXVhbC1oYXNoIGVxdWFsPyAxMCB3 ZWFrbmVzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChh IC4gYikgKGMgLiBkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC0+aGFzaHRh YmxlIGVxdWFsLWhhc2ggZXF1YWw/ICNmIHdlYWtuZXNzCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICcoKGEgLiBiKSAoYyAuIGQpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKGFuZCAobm90IHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYWtlLWhhc2h0YWJsZSAoY29ucyBlcXVhbC1oYXNoIGVxdWFsLWhhc2gpIGVxdWFs PykpKSkpCisgICAgICAgIChkbyAoKHRhYmxlcyB0YWJsZXMgKGNkciB0YWJsZXMpKQorICAgICAg ICAgICAgIChpIDAgKCsgaSAxKSkpCisgICAgICAgICAgICAoKG51bGw/IHRhYmxlcykpCisgICAg ICAgICAgKGFuZC1sZXQqICgodGFibGUgKGNhciB0YWJsZXMpKSkKKyAgICAgICAgICAgICh3aXRo LXRlc3QtcHJlZml4ICh0ZXN0LXN0ci13ZWFrbmVzcyAoZm9ybWF0ICNmICJ0YWJsZSB+YSIgaSkg d2Vha25lc3MpCisgICAgICAgICAgICAgIChwYXNzLWlmIChoYXNodGFibGU/IHRhYmxlKSkKKyAg ICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgZXF1YWwtaGFzaCAoaGFzaHRhYmxlLWhhc2gtZnVu Y3Rpb24gdGFibGUpKQorICAgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCBlcXVhbD8gKGhhc2h0 YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiB0YWJsZSkpCisgICAgICAgICAgICAgIChwYXNzLWlm LWVxdWFsIHdlYWtuZXNzIChoYXNodGFibGUtd2Vha25lc3MgdGFibGUpKQorICAgICAgICAgICAg ICAocGFzcy1pZiAoaGFzaHRhYmxlLW11dGFibGU/IHRhYmxlKSkpKSkpKQorCisgICAgKHdpdGgt dGVzdC1wcmVmaXggImFsaXN0IgorICAgICAgKGxldCAoKHRhYmxlcyAobGlzdCAoYW5kIChub3Qg d2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsaXN0LT5lcS1oYXNo dGFibGUgJygoYSAuIGIpIChhIC4gYykpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGFu ZCAobm90IHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC0+ ZXF2LWhhc2h0YWJsZSAnKChhIC4gYikgKGEgLiBjKSkpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAoYW5kIChub3Qgd2Vha25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGFsaXN0LT5oYXNodGFibGUgZXF1YWwtaGFzaCBlcXVhbD8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKChhIC4gYikgKGEgLiBjKSkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAoYWxpc3QtPmVxLWhhc2h0YWJsZSAjZiB3ZWFrbmVzcyAnKChh IC4gYikgKGEgLiBjKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChhbGlzdC0+ZXF2LWhh c2h0YWJsZSAjZiB3ZWFrbmVzcyAnKChhIC4gYikgKGEgLiBjKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChhbGlzdC0+aGFzaHRhYmxlIGVxdWFsLWhhc2ggZXF1YWw/ICNmIHdlYWtuZXNz CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKGEgLiBiKSAo YSAuIGMpKSkpKSkKKyAgICAgICAgKGRvICgodGFibGVzIHRhYmxlcyAoY2RyIHRhYmxlcykpCisg ICAgICAgICAgICAgKGkgMCAoKyBpIDEpKSkKKyAgICAgICAgICAgICgobnVsbD8gdGFibGVzKSkK KyAgICAgICAgICAoYW5kLWxldCogKCh0YWJsZSAoY2FyIHRhYmxlcykpKQorICAgICAgICAgICAg KHdpdGgtdGVzdC1wcmVmaXggKHRlc3Qtc3RyLXdlYWtuZXNzIChmb3JtYXQgI2YgInRhYmxlIH5h IiBpKSB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgJ2IgKGhhc2h0YWJs ZS1yZWYgdGFibGUgJ2EpKSkpKSkpCisKKyAgICAod2l0aC10ZXN0LXByZWZpeCAicHJvY2VkdXJl cyIKKyAgICAgICh3aXRoLXRlc3QtcHJlZml4ICJiYXNpY3MiCisgICAgICAgIChsZXQgKCh0YWJs ZSAobWFrZS1lcS1oYXNodGFibGUgI2Ygd2Vha25lc3MpKSkKKyAgICAgICAgICAod2l0aC10ZXN0 LXByZWZpeCAicmVmIgorICAgICAgICAgICAgKHBhc3MtaWYtZXhjZXB0aW9uICJrZXkgbm90IGZv dW5kIgorICAgICAgICAgICAgICAgICcobWlzYy1lcnJvciAuICJeS2V5IG5vdCBpbiB0YWJsZSIp CisgICAgICAgICAgICAgIChoYXNodGFibGUtcmVmIHRhYmxlICdhKSkKKyAgICAgICAgICAgIChw YXNzLWlmLWVxdWFsICdiIChoYXNodGFibGUtcmVmIHRhYmxlICdhICdiKSkKKyAgICAgICAgICAg IChwYXNzLWlmIChub3QgKGhhc2h0YWJsZS1jb250YWlucz8gdGFibGUgJ2EpKSkKKyAgICAgICAg ICAgIChwYXNzLWlmLWVxdWFsIDAgKGhhc2h0YWJsZS1zaXplIHRhYmxlKSkpCisgICAgICAgICAg KHdpdGgtdGVzdC1wcmVmaXggInNldCIKKyAgICAgICAgICAgIChoYXNodGFibGUtc2V0ISB0YWJs ZSAnYSAnYykKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsICdjIChoYXNodGFibGUtcmVmIHRh YmxlICdhKSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsICdjIChoYXNodGFibGUtcmVmIHRh YmxlICdhICdiKSkKKyAgICAgICAgICAgIChwYXNzLWlmIChoYXNodGFibGUtY29udGFpbnM/IHRh YmxlICdhKSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIDEgKGhhc2h0YWJsZS1zaXplIHRh YmxlKSkpCisgICAgICAgICAgKHdpdGgtdGVzdC1wcmVmaXggImRlbGV0ZSIKKyAgICAgICAgICAg IChoYXNodGFibGUtZGVsZXRlISB0YWJsZSAnYSkKKyAgICAgICAgICAgIChwYXNzLWlmLWV4Y2Vw dGlvbiAia2V5IG5vdCBmb3VuZCIKKyAgICAgICAgICAgICAgICAnKG1pc2MtZXJyb3IgLiAiXktl eSBub3QgaW4gdGFibGUiKQorICAgICAgICAgICAgICAoaGFzaHRhYmxlLXJlZiB0YWJsZSAnYSkp CisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAnYiAoaGFzaHRhYmxlLXJlZiB0YWJsZSAnYSAn YikpCisgICAgICAgICAgICAocGFzcy1pZiAobm90IChoYXNodGFibGUtY29udGFpbnM/IHRhYmxl ICdhKSkpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAwIChoYXNodGFibGUtc2l6ZSB0YWJs ZSkpKSkpKQorCisgICAgKHdpdGgtdGVzdC1wcmVmaXggImFkdmFuY2VkIgorICAgICAgKGxldCAo KHRhYmxlIChtYWtlLWVxLWhhc2h0YWJsZSkpKQorICAgICAgICAod2l0aC10ZXN0LXByZWZpeCAi bG9va3VwIgorICAgICAgICAgIChyZWNlaXZlICh4IGZvdW5kPykgKGhhc2h0YWJsZS1sb29rdXAg dGFibGUgJ2EpCisgICAgICAgICAgICAocGFzcy1pZiAobm90IGZvdW5kPykpKSkKKyAgICAgICAg KHdpdGgtdGVzdC1wcmVmaXggInVwZGF0ZSIKKyAgICAgICAgICAocGFzcy1pZi1leGNlcHRpb24g ImtleSBub3QgZm91bmQiCisgICAgICAgICAgICAgICcobWlzYy1lcnJvciAuICJeS2V5IG5vdCBp biB0YWJsZSIpCisgICAgICAgICAgICAoaGFzaHRhYmxlLXVwZGF0ZSEgdGFibGUgJ2EgKGxhbWJk YSAoeCkgKCsgeCAxKSkpKQorICAgICAgICAgIChoYXNodGFibGUtdXBkYXRlISB0YWJsZSAnYSAo bGFtYmRhICh4KSAoKyB4IDEpKSAwKQorICAgICAgICAgIChyZWNlaXZlICh4IGZvdW5kPykgKGhh c2h0YWJsZS1sb29rdXAgdGFibGUgJ2EpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAxIHgp CisgICAgICAgICAgICAocGFzcy1pZiBmb3VuZD8pKQorICAgICAgICAgIChoYXNodGFibGUtdXBk YXRlISB0YWJsZSAnYSAobGFtYmRhICh4KSAoKyB4IDEpKSkKKyAgICAgICAgICAocmVjZWl2ZSAo eCBmb3VuZD8pIChoYXNodGFibGUtbG9va3VwIHRhYmxlICdhKQorICAgICAgICAgICAgKHBhc3Mt aWYtZXF1YWwgeCAyKQorICAgICAgICAgICAgKHBhc3MtaWYgZm91bmQ/KSkKKyAgICAgICAgICAo aGFzaHRhYmxlLXVwZGF0ZSEgdGFibGUgJ2EgKGxhbWJkYSAoeCkgKCsgeCAxKSkgMCkKKyAgICAg ICAgICAocmVjZWl2ZSAoeCBmb3VuZD8pIChoYXNodGFibGUtbG9va3VwIHRhYmxlICdhKQorICAg ICAgICAgICAgKHBhc3MtaWYtZXF1YWwgeCAzKQorICAgICAgICAgICAgKHBhc3MtaWYgZm91bmQ/ KSkpCisgICAgICAgICh3aXRoLXRlc3QtcHJlZml4ICJpbnRlcm4iCisgICAgICAgICAgKHBhc3Mt aWYtZXF1YWwgMCAoaGFzaHRhYmxlLWludGVybiEgdGFibGUgJ2IgKGxhbWJkYSAoKSAwKSkpCisg ICAgICAgICAgKHBhc3MtaWYtZXF1YWwgMCAoaGFzaHRhYmxlLWludGVybiEgdGFibGUgJ2IgKGxh bWJkYSAoKSAxKSkpKSkpCisKKyAgICAod2l0aC10ZXN0LXByZWZpeCAiY29weS9jbGVhciIKKyAg ICAgIChsZXQgKCh0YWJsZSAoYWxpc3QtPmhhc2h0YWJsZSBlcXVhbC1oYXNoIGVxdWFsPyAjZiB3 ZWFrbmVzcyAnKChhIC4gYikpKSkpCisgICAgICAgICh3aXRoLXRlc3QtcHJlZml4ICJjb3B5Igor ICAgICAgICAgIChsZXQgKCh0YWJsZTIgKGhhc2h0YWJsZS1jb3B5IHRhYmxlKSkpCisgICAgICAg ICAgICAocGFzcy1pZi1lcXVhbCBlcXVhbC1oYXNoIChoYXNodGFibGUtaGFzaC1mdW5jdGlvbiB0 YWJsZTIpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgZXF1YWw/IChoYXNodGFibGUtZXF1 aXZhbGVuY2UtZnVuY3Rpb24gdGFibGUyKSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsICdi IChoYXNodGFibGUtcmVmIHRhYmxlMiAnYSkpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCB3 ZWFrbmVzcyAoaGFzaHRhYmxlLXdlYWtuZXNzIHRhYmxlMikpCisgICAgICAgICAgICAocGFzcy1p Zi1leGNlcHRpb24gInNldCEgaW1tdXRhYmxlIHRhYmxlIgorICAgICAgICAgICAgICAgICcobWlz Yy1lcnJvciAuICJeSGFzaCB0YWJsZSBpcyBub3QgbXV0YWJsZSIpCisgICAgICAgICAgICAgICho YXNodGFibGUtc2V0ISB0YWJsZTIgJ2EgJ2MpKSkKKyAgICAgICAgICAobGV0ICgodGFibGUyICho YXNodGFibGUtY29weSB0YWJsZSAjZikpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgZXF1 YWwtaGFzaCAoaGFzaHRhYmxlLWhhc2gtZnVuY3Rpb24gdGFibGUyKSkKKyAgICAgICAgICAgIChw YXNzLWlmLWVxdWFsIGVxdWFsPyAoaGFzaHRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIHRhYmxl MikpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAnYiAoaGFzaHRhYmxlLXJlZiB0YWJsZTIg J2EpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgd2Vha25lc3MgKGhhc2h0YWJsZS13ZWFr bmVzcyB0YWJsZTIpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXhjZXB0aW9uICJzZXQhIGltbXV0 YWJsZSB0YWJsZSIKKyAgICAgICAgICAgICAgICAnKG1pc2MtZXJyb3IgLiAiXkhhc2ggdGFibGUg aXMgbm90IG11dGFibGUiKQorICAgICAgICAgICAgICAoaGFzaHRhYmxlLXNldCEgdGFibGUyICdh ICdjKSkpCisgICAgICAgICAgKGxldCAoKHRhYmxlMiAoaGFzaHRhYmxlLWNvcHkgdGFibGUgI3Qp KSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIGVxdWFsLWhhc2ggKGhhc2h0YWJsZS1oYXNo LWZ1bmN0aW9uIHRhYmxlMikpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCBlcXVhbD8gKGhh c2h0YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiB0YWJsZTIpKQorICAgICAgICAgICAgKHBhc3Mt aWYtZXF1YWwgJ2IgKGhhc2h0YWJsZS1yZWYgdGFibGUyICdhKSkKKyAgICAgICAgICAgIChwYXNz LWlmLWVxdWFsIHdlYWtuZXNzIChoYXNodGFibGUtd2Vha25lc3MgdGFibGUyKSkKKyAgICAgICAg ICAgIChoYXNodGFibGUtc2V0ISB0YWJsZTIgJ2EgJ2MpCisgICAgICAgICAgICAocGFzcy1pZi1l cXVhbCAnYyAoaGFzaHRhYmxlLXJlZiB0YWJsZTIgJ2EpKSkKKyAgICAgICAgICAobGV0ICgodGFi bGUyIChoYXNodGFibGUtY29weSB0YWJsZSAjZiAjZikpKQorICAgICAgICAgICAgKHBhc3MtaWYt ZXF1YWwgZXF1YWwtaGFzaCAoaGFzaHRhYmxlLWhhc2gtZnVuY3Rpb24gdGFibGUyKSkKKyAgICAg ICAgICAgIChwYXNzLWlmLWVxdWFsIGVxdWFsPyAoaGFzaHRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0 aW9uIHRhYmxlMikpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAjZiAoaGFzaHRhYmxlLXdl YWtuZXNzIHRhYmxlMikpKSkKKworICAgICAgICAod2l0aC10ZXN0LXByZWZpeCAiY2xlYXIiCisg ICAgICAgICAgKGxldCAoKHRhYmxlMiAoaGFzaHRhYmxlLWNvcHkgdGFibGUgI3QpKSkKKyAgICAg ICAgICAgIChoYXNodGFibGUtY2xlYXIhIHRhYmxlMikKKyAgICAgICAgICAgIChwYXNzLWlmLWVx dWFsIDAgKGhhc2h0YWJsZS1zaXplIHRhYmxlMikpKQorICAgICAgICAgIChsZXQgKCh0YWJsZTIg KGhhc2h0YWJsZS1jb3B5IHRhYmxlICN0KSkpCisgICAgICAgICAgICAoaGFzaHRhYmxlLWNsZWFy ISB0YWJsZTIgMTApCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAwIChoYXNodGFibGUtc2l6 ZSB0YWJsZTIpKSkpCisKKyAgICAgICAgKHdpdGgtdGVzdC1wcmVmaXggImVtcHR5LWNvcHkiCisg ICAgICAgICAgKGxldCAoKHRhYmxlMiAoaGFzaHRhYmxlLWVtcHR5LWNvcHkgdGFibGUpKSkKKyAg ICAgICAgICAgIChwYXNzLWlmLWVxdWFsIGVxdWFsLWhhc2ggKGhhc2h0YWJsZS1oYXNoLWZ1bmN0 aW9uIHRhYmxlMikpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCBlcXVhbD8gKGhhc2h0YWJs ZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiB0YWJsZTIpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXF1 YWwgMCAoaGFzaHRhYmxlLXNpemUgdGFibGUyKSkpCisgICAgICAgICAgKGxldCAoKHRhYmxlMiAo aGFzaHRhYmxlLWVtcHR5LWNvcHkgdGFibGUgMTApKSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVx dWFsIGVxdWFsLWhhc2ggKGhhc2h0YWJsZS1oYXNoLWZ1bmN0aW9uIHRhYmxlMikpCisgICAgICAg ICAgICAocGFzcy1pZi1lcXVhbCBlcXVhbD8gKGhhc2h0YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlv biB0YWJsZTIpKQorICAgICAgICAgICAgKHBhc3MtaWYtZXF1YWwgMCAoaGFzaHRhYmxlLXNpemUg dGFibGUyKSkpKSkpCisKKyAgICAod2l0aC10ZXN0LXByZWZpeCAia2V5cy92YWx1ZXMiCisgICAg ICAobGV0ICgodGFibGUgKGFsaXN0LT5lcS1oYXNodGFibGUgJygoYSAuIGIpIChjIC4gZCkpKSkp CisgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhhIGMpICh2ZWN0b3ItPmxpc3QgKGhhc2h0 YWJsZS1rZXlzIHRhYmxlKSkpKQorICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ICcoYiBkKSAo dmVjdG9yLT5saXN0IChoYXNodGFibGUtdmFsdWVzIHRhYmxlKSkpKQorICAgICAgICAocmVjZWl2 ZSAoa2V5cyB2YWx1ZXMpIChoYXNodGFibGUtZW50cmllcyB0YWJsZSkKKyAgICAgICAgICAocGFz cy1pZiAobHNldD0gZXE/ICcoYSBjKSAodmVjdG9yLT5saXN0IGtleXMpKSkKKyAgICAgICAgICAo cGFzcy1pZiAobHNldD0gZXE/ICcoYiBkKSAodmVjdG9yLT5saXN0IHZhbHVlcykpKSkKKyAgICAg ICAgKHBhc3MtaWYgKGxzZXQ9IGVxPyAnKGEgYykgKGhhc2h0YWJsZS1rZXktbGlzdCB0YWJsZSkp KQorICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ICcoYiBkKSAoaGFzaHRhYmxlLXZhbHVlLWxp c3QgdGFibGUpKSkKKyAgICAgICAgKHJlY2VpdmUgKGtleXMgdmFsdWVzKSAoaGFzaHRhYmxlLWVu dHJ5LWxpc3RzIHRhYmxlKQorICAgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhhIGMpIGtl eXMpKQorICAgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhiIGQpIHZhbHVlcykpKSkpCisK KyAgICAod2l0aC10ZXN0LXByZWZpeCAiaXRlcmF0aW9uIgorICAgICAgKHdpdGgtdGVzdC1wcmVm aXggIndhbGsiCisgICAgICAgIChsZXQgKChrZXlzICcoKSkKKyAgICAgICAgICAgICAgKHZhbHVl cyAnKCkpKQorICAgICAgICAgIChoYXNodGFibGUtd2FsayAoYWxpc3QtPmVxLWhhc2h0YWJsZSAn KChhIC4gYikgKGMgLiBkKSkpCisgICAgICAgICAgICAobGFtYmRhIChrIHYpCisgICAgICAgICAg ICAgIChzZXQhIGtleXMgKGNvbnMgayBrZXlzKSkKKyAgICAgICAgICAgICAgKHNldCEgdmFsdWVz IChjb25zIHYgdmFsdWVzKSkpKQorICAgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhhIGMp IGtleXMpKQorICAgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhiIGQpIHZhbHVlcykpKSkK KworICAgICAgKHdpdGgtdGVzdC1wcmVmaXggInVwZGF0ZS1hbGwiCisgICAgICAgIChsZXQgKCh0 YWJsZSAoYWxpc3QtPmVxLWhhc2h0YWJsZSAnKChhIC4gYikgKGMgLiBkKSkpKSkKKyAgICAgICAg ICAoaGFzaHRhYmxlLXVwZGF0ZS1hbGwhIHRhYmxlCisgICAgICAgICAgICAobGFtYmRhIChrIHYp CisgICAgICAgICAgICAgIChzdHJpbmctPnN5bWJvbCAoc3RyaW5nLWFwcGVuZCAoc3ltYm9sLT5z dHJpbmcgdikgIngiKSkpKQorICAgICAgICAgIChwYXNzLWlmIChsc2V0PSBlcT8gJyhhIGMpICho YXNodGFibGUta2V5LWxpc3QgdGFibGUpKSkKKyAgICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ ICcoYnggZHgpIChoYXNodGFibGUtdmFsdWUtbGlzdCB0YWJsZSkpKSkpCisKKyAgICAgICh3aXRo LXRlc3QtcHJlZml4ICJwcnVuZSIKKyAgICAgICAgKGxldCAoKHRhYmxlIChhbGlzdC0+ZXEtaGFz aHRhYmxlICcoKGEgLiBiKSAoYyAuIGQpKSkpKQorICAgICAgICAgIChoYXNodGFibGUtcHJ1bmUh IHRhYmxlIChsYW1iZGEgKGsgdikgKGVxPyBrICdhKSkpCisgICAgICAgICAgKHBhc3MtaWYgKG5v dCAoaGFzaHRhYmxlLWNvbnRhaW5zPyB0YWJsZSAnYSkpKQorICAgICAgICAgIChwYXNzLWlmICho YXNodGFibGUtY29udGFpbnM/IHRhYmxlICdjKSkpKQorCisgICAgICAod2l0aC10ZXN0LXByZWZp eCAibWVyZ2UiCisgICAgICAgIChsZXQgKCh0YWJsZSAoYWxpc3QtPmVxLWhhc2h0YWJsZSAnKChh IC4gYikgKGMgLiBkKSkpKQorICAgICAgICAgICAgICAodGFibGUyIChhbGlzdC0+ZXEtaGFzaHRh YmxlICcoKGEgLiB4KSAoZSAuIGYpKSkpKQorICAgICAgICAgIChoYXNodGFibGUtbWVyZ2UhIHRh YmxlIHRhYmxlMikKKyAgICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ICcoYSBjIGUpIChoYXNo dGFibGUta2V5LWxpc3QgdGFibGUpKSkKKyAgICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ICco eCBkIGYpIChoYXNodGFibGUtdmFsdWUtbGlzdCB0YWJsZSkpKSkpCisKKyAgICAgICh3aXRoLXRl c3QtcHJlZml4ICJzdW0iCisgICAgICAgIChsZXQgKCh0YWJsZSAoYWxpc3QtPmVxLWhhc2h0YWJs ZSAnKChhIC4gYikgKGMgLiBkKSkpKSkKKyAgICAgICAgICAocGFzcy1pZiAobHNldD0gZXE/ICco YSBiIGMgZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h0YWJsZS1zdW0gdGFibGUg JygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoayB2IGFjYykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsc2V0LWFkam9pbiBlcT8gYWNjIGsgdikpKSkpKSkK KworICAgICAgKHdpdGgtdGVzdC1wcmVmaXggIm1hcC0+bHNldCIKKyAgICAgICAgKGxldCAoKHRh YmxlIChhbGlzdC0+ZXEtaGFzaHRhYmxlICcoKGEgLiBiKSAoYyAuIGQpKSkpKQorICAgICAgICAg IChwYXNzLWlmIChsc2V0PSBlcXVhbD8gJygoYSAuIGIpIChjIC4gZCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgIChoYXNodGFibGUtbWFwLT5sc2V0IHRhYmxlIGNvbnMpKSkpKQorCisgICAg ICAod2l0aC10ZXN0LXByZWZpeCAiZmluZCIKKyAgICAgICAgKGxldCAoKHRhYmxlIChhbGlzdC0+ ZXEtaGFzaHRhYmxlICcoKGEgLiBiKSAoYyAuIGQpKSkpKQorICAgICAgICAgIChyZWNlaXZlIChr IHYgZj8pIChoYXNodGFibGUtZmluZCB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxhbWJkYSAoayB2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXE/IGsg J2EpKSkKKyAgICAgICAgICAgIChwYXNzLWlmIChhbmQgZj8gKGVxPyBrICdhKSAoZXE/IHYgJ2Ip KSkpCisgICAgICAgICAgKHJlY2VpdmUgKGsgdiBmPykgKGhhc2h0YWJsZS1maW5kIHRhYmxlIChs YW1iZGEgKGsgdikgI2YpKQorICAgICAgICAgICAgKHBhc3MtaWYgKG5vdCBmPykpKSkpCisKKyAg ICAgICh3aXRoLXRlc3QtcHJlZml4ICJtaXNjIgorCisgICAgICAgICh3aXRoLXRlc3QtcHJlZml4 ICJlbXB0eT8iCisgICAgICAgICAgKHBhc3MtaWYgKGhhc2h0YWJsZS1lbXB0eT8gKGFsaXN0LT5l cS1oYXNodGFibGUgJygpKSkpCisgICAgICAgICAgKHBhc3MtaWYgKG5vdCAoaGFzaHRhYmxlLWVt cHR5PyAoYWxpc3QtPmVxLWhhc2h0YWJsZSAnKChhIC4gYikpKSkpKSkKKworICAgICAgICAod2l0 aC10ZXN0LXByZWZpeCAicG9wISIKKyAgICAgICAgICAocGFzcy1pZi1leGNlcHRpb24gIiIKKyAg ICAgICAgICAgICAgJyhtaXNjLWVycm9yIC4gIl5IYXNoIHRhYmxlIGlzIGVtcHR5IikKKyAgICAg ICAgICAgIChoYXNodGFibGUtcG9wISAobWFrZS1lcS1oYXNodGFibGUpKSkKKyAgICAgICAgICAo bGV0ICgodGFibGUgKGFsaXN0LT5lcS1oYXNodGFibGUgJygoYSAuIGIpKSkpKQorICAgICAgICAg ICAgKHJlY2VpdmUgKGsgdikgKGhhc2h0YWJsZS1wb3AhIHRhYmxlKQorICAgICAgICAgICAgICAo cGFzcy1pZi1lcXVhbCAnYSBrKQorICAgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAnYiB2KQor ICAgICAgICAgICAgICAocGFzcy1pZiAoaGFzaHRhYmxlLWVtcHR5PyB0YWJsZSkpKSkpCisKKyAg ICAgICAgKHdpdGgtdGVzdC1wcmVmaXggImluYyEiCisgICAgICAgICAgKGxldCAoKHRhYmxlIChh bGlzdC0+ZXEtaGFzaHRhYmxlICcoKGEgLiAwKSkpKSkKKyAgICAgICAgICAgIChoYXNodGFibGUt aW5jISB0YWJsZSAnYSkKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIDEgKGhhc2h0YWJsZS1y ZWYgdGFibGUgJ2EpKQorICAgICAgICAgICAgKGhhc2h0YWJsZS1pbmMhIHRhYmxlICdhIDIpCisg ICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAzIChoYXNodGFibGUtcmVmIHRhYmxlICdhKSkpKQor CisgICAgICAgICh3aXRoLXRlc3QtcHJlZml4ICJkZWMhIgorICAgICAgICAgIChsZXQgKCh0YWJs ZSAoYWxpc3QtPmVxLWhhc2h0YWJsZSAnKChhIC4gMCkpKSkpCisgICAgICAgICAgICAoaGFzaHRh YmxlLWRlYyEgdGFibGUgJ2EpCisgICAgICAgICAgICAocGFzcy1pZi1lcXVhbCAtMSAoaGFzaHRh YmxlLXJlZiB0YWJsZSAnYSkpCisgICAgICAgICAgICAoaGFzaHRhYmxlLWRlYyEgdGFibGUgJ2Eg MikKKyAgICAgICAgICAgIChwYXNzLWlmLWVxdWFsIC0zIChoYXNodGFibGUtcmVmIHRhYmxlICdh KSkpKSkpCisKKyAgICAod2l0aC10ZXN0LXByZWZpeCAiaGFzaGluZyIKKyAgICAgIChwYXNzLWlm IChleGFjdC1pbnRlZ2VyPyAoaGFzaC1zYWx0KSkpCisgICAgICAocGFzcy1pZiAobm90IChuZWdh dGl2ZT8gKGhhc2gtc2FsdCkpKSkKKyAgICAgIChwYXNzLWlmICg9IChoYXNoLXNhbHQpIChoYXNo LXNhbHQpKSkKKyAgICAgIChwYXNzLWlmICg9IChlcXVhbC1oYXNoIChsaXN0ICJmb28iICdiYXIg NDIpKQorICAgICAgICAgICAgICAgICAgKGVxdWFsLWhhc2ggKGxpc3QgImZvbyIgJ2JhciA0Mikp KSkKKyAgICAgIChwYXNzLWlmICg9IChzdHJpbmctaGFzaCAoc3RyaW5nLWNvcHkgImZvbyIpKQor ICAgICAgICAgICAgICAgICAgKHN0cmluZy1oYXNoIChzdHJpbmctY29weSAiZm9vIikpKSkKKyAg ICAgIChwYXNzLWlmICg9IChzdHJpbmctY2ktaGFzaCAoc3RyaW5nLWNvcHkgImZvbyIpKQorICAg ICAgICAgICAgICAgICAgKHN0cmluZy1jaS1oYXNoIChzdHJpbmctY29weSAiRk9PIikpKSkKKyAg ICAgIChwYXNzLWlmICg9IChzeW1ib2wtaGFzaCAoc3RyaW5nLT5zeW1ib2wgImZvbyIpKQorICAg ICAgICAgICAgICAgICAgKHN5bWJvbC1oYXNoIChzdHJpbmctPnN5bWJvbCAiZm9vIikpKSkpCisg ICAgKQorICApCi0tIAoyLjE5LjEKCg== --000000000000b6a39d057efb700b Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Implemented-GENERIC-HASH-TABLES-module.patch" Content-Disposition: attachment; filename="0002-Implemented-GENERIC-HASH-TABLES-module.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqofminu1> X-Attachment-Id: f_jqofminu1 RnJvbSA0NzI1NmMwY2JmZjliMWNhNmUyNjhkNWQ0NDA3NjcxODA3ZWRjMjAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDggSmFuIDIwMTkgMjE6NTg6Mzcg LTAyMDAKU3ViamVjdDogW1BBVENIIDIvNV0gSW1wbGVtZW50ZWQgR0VORVJJQy1IQVNILVRBQkxF UyBtb2R1bGUuCgpUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB0byBpbnRlcm1l ZGlhdGUgaGFzaCB0YWJsZXMgYW5kIGNhbgpiZSB1c2VkIHRvIGltcGxlbWVudCBTUkZJLTY5LCBT UkZJLTEyNSwgU1JGSS0xMjYgYW5kIFI2UlMgaGFzaCB0YWJsZQpsaWJyYXJpZXMuIFRoYXQgd2F5 LCB3ZSBhdm9pZCBkdXBsaWNhdGlvbiBvZiBjb2RlLCBtaXNzaW5nIGZlYXR1cmVzIGFuZAppbmNv bXBhdGliaWxpdGllcy4gSXQgcmV1c2VzIGN1cnJlbnQgU1JGSS02OSBjb2RlIGFuZCBpdHMgcHJv Y2VkdXJlcyBhcmUKbW9zdGx5IGJhc2VkIG9uIFNSRkktMTI1IHNwZWNpZmljYXRpb25zIHdpdGgg c29tZSBjaGFuZ2VzLiBJdCBkb2VzIG5vdApkZXBlbmQgb24gU1JGSS0xMjg6IGluc3RlYWQgb2Yg dXNpbmcgY29tcGFyYXRvcnMsIHRoZSBwcm9jZWR1cmVzIGFjY2VwdAp0aGUgc2FtZSBhcmd1bWVu dHMgdGhhdCBhcmUgYWNjZXB0ZWQgYnkgTUFLRS1IQVNILVRBQkxFLiBUaGUgd2Vha25lc3MKYXJn dW1lbnQgaXMgYXMgc3BlY2lmaWVkIGJ5IFNSRkkgMTI2LgotLS0KIG1vZHVsZS9NYWtlZmlsZS5h bSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIG1vZHVsZS9pY2UtOS9nZW5lcmljLWhh c2gtdGFibGVzLnNjbSAgICAgIHwgOTE1ICsrKysrKysrKysrKysrKysrKysrKysKIHRlc3Qtc3Vp dGUvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHRlc3Qtc3VpdGUvdGVz dHMvZ2VuZXJpYy1oYXNoLXRhYmxlcy50ZXN0IHwgNDE1ICsrKysrKysrKysKIDQgZmlsZXMgY2hh bmdlZCwgMTMzMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbW9kdWxlL2ljZS05 L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC1zdWl0ZS90 ZXN0cy9nZW5lcmljLWhhc2gtdGFibGVzLnRlc3QKCmRpZmYgLS1naXQgYS9tb2R1bGUvTWFrZWZp bGUuYW0gYi9tb2R1bGUvTWFrZWZpbGUuYW0KaW5kZXggYzcyZmI5MjI4Li42ZGJhODdjZTggMTAw NjQ0Ci0tLSBhL21vZHVsZS9NYWtlZmlsZS5hbQorKysgYi9tb2R1bGUvTWFrZWZpbGUuYW0KQEAg LTY2LDYgKzY2LDcgQEAgU09VUkNFUyA9CQkJCQlcCiAgIGljZS05L2Z1dHVyZXMuc2NtCQkJCVwK ICAgaWNlLTkvZ2FwLWJ1ZmZlci5zY20JCQkJXAogICBpY2UtOS9nZXRvcHQtbG9uZy5zY20JCQkJ XAorICBpY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNjbSAgICAgICAgICAgICAgICAgXAogICBp Y2UtOS9oYXNoLXRhYmxlLnNjbQkJCQlcCiAgIGljZS05L2hjb25zLnNjbQkJCQlcCiAgIGljZS05 L2hpc3Rvcnkuc2NtCQkJCVwKZGlmZiAtLWdpdCBhL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gt dGFibGVzLnNjbSBiL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNjbQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjAzM2MzZWNkYQotLS0gL2Rldi9udWxsCisr KyBiL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNjbQpAQCAtMCwwICsxLDkxNSBA QAorOzs7IGdlbmVyaWMtaGFzaC10YWJsZXMuc2NtIC0tLSBJbnRlcm1lZGlhdGUgaGFzaCB0YWJs ZXMKKworOzsgCUNvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKzs7Cis7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCis7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKzs7IHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7Cis7OyBUaGlzIGxp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK Kzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorOzsgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKzs7Cis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFsb25nIHdpdGgg dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCis7OyBGb3Vu ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEgVVNBCisMCisKKzs7OzsgQ29tbWVudGFyeSBieSBKZXNzaWNhIE1pbGFyZSAy MDE4CisKKzs7IFRoaXMgaW1wbGVtZW50YXRpb24gd2FzIGNyZWF0ZWQgb24gdG9wIG9mIFNSRkkt NjkgKG9sZCkgR3VpbGUgY29kZSwKKzs7IGV4dGVuZGluZyBpdCB0byBzdXBwb3J0IFNSRkktMTI1 IHNwZWNpZmljYXRpb25zIGFuZCBpbnRlbmRlZCB0byBiZQorOzsgdXNlZCBieSBTUkZJLTY5LCBT UkZJLTEyNSwgU1JGSS0xMjYgYW5kIFI2UlMuIE9uZSBzaW5nbGUgaGFzaCB0YWJsZXMKKzs7IGlt cGxlbWVudGF0aW9uIGNvdWxkIGJlIGV4cG9ydGVkIHRvIGFsbCBvZiB0aGVzZSBsaWJyYXJpZXMs IGF2b2lkaW5nCis7OyBkdXBsaWNhdGlvbiBvZiBjb2RlLCBtaXNzaW5nIGZlYXR1cmVzIGFuZCBp bmNvbXBhdGliaWxpdGllcy4KKzs7Cis7OyBIYXNoIHRhYmxlcyBoZXJlIGhhdmUgMiBoYXNoIGZ1 bmN0aW9ucywgb25lIGludGVybmFsICh0aGF0IGlzIHVzZWQgYnkKKzs7IEd1aWxlKSBhbmQgb25l IGV4dGVybmFsICh0aGF0IGlzIHJldHVybmVkIGJ5IGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbiku Cis7OyBJbnRlcm5hbCBoYXNoIGZ1bmN0aW9ucyBhY2NlcHRzIHR3byBhcmd1bWVudHMsIHdoaWxl IGV4dGVybmFsIGZ1bmN0aW9ucworOzsgYWNjZXB0IG9uZSBhcmd1bWVudCAoYW5kIHBvc3NpYmx5 IG1vcmUgb3B0aW9uYWwgYXJndW1lbnRzKS4KKworOzs7IENvZGU6CisMCis7Ozs7IE1vZHVsZSBk ZWZpbml0aW9uICYgZXhwb3J0cworCisoZGVmaW5lLW1vZHVsZSAoaWNlLTkgZ2VuZXJpYy1oYXNo LXRhYmxlcykKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkJO2FsaXN0LWNvbnMsc2Vjb25k JmMsYXNzb2MKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktOCkgICAgO3JlY2VpdmUKKyAgIzp1 c2UtbW9kdWxlIChzcmZpIHNyZmktOSkKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktOSBnbnUp CisgICM6dXNlLW1vZHVsZSAoaWNlLTkgZm9ybWF0KQorICAjOmV4cG9ydCAoOzsgVHlwZSBjb25z dHJ1Y3RvcnMgJiBwcmVkaWNhdGUKKwkgICAgbWFrZS1oYXNoLXRhYmxlCisgICAgICAgICAgICBo YXNoLXRhYmxlPyBoYXNoLXRhYmxlIGhhc2gtdGFibGUtdW5mb2xkIGFsaXN0LT5oYXNoLXRhYmxl CisgICAgICAgICAgICA7OyBSZWZsZWN0aXZlIHF1ZXJpZXMKKyAgICAgICAgICAgIGhhc2gtdGFi bGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uCisgICAgICAg ICAgICBoYXNoLXRhYmxlLXdlYWtuZXNzIGhhc2gtdGFibGUta2V5LXdlYWtuZXNzIGhhc2gtdGFi bGUtdmFsdWUtd2Vha25lc3MKKyAgICAgICAgICAgIDs7IFByZWRpY2F0ZXMKKyAgICAgICAgICAg IGhhc2gtdGFibGUtbXV0YWJsZT8gaGFzaC10YWJsZS1jb250YWlucz8KKyAgICAgICAgICAgIGhh c2gtdGFibGUtZW1wdHk/IGhhc2gtdGFibGU9PworICAgICAgICAgICAgOzsgQWNjZXNzb3JzCisg ICAgICAgICAgICBoYXNoLXRhYmxlLXJlZiBoYXNoLXRhYmxlLXJlZi9kZWZhdWx0CisgICAgICAg ICAgICA7OyBNdXRhdG9ycworICAgICAgICAgICAgaGFzaC10YWJsZS1zZXQhIGhhc2gtdGFibGUt c2V0LXNpbmdsZSEKKyAgICAgICAgICAgIGhhc2gtdGFibGUtZGVsZXRlISBoYXNoLXRhYmxlLWRl bGV0ZS1zaW5nbGUhCisgICAgICAgICAgICBoYXNoLXRhYmxlLWludGVybiEgaGFzaC10YWJsZS1p bnRlcm4hL2RlZmF1bHQKKyAgICAgICAgICAgIGhhc2gtdGFibGUtdXBkYXRlISBoYXNoLXRhYmxl LXVwZGF0ZSEvZGVmYXVsdAorICAgICAgICAgICAgaGFzaC10YWJsZS1wb3AhIGhhc2gtdGFibGUt Y2xlYXIhCisgICAgICAgICAgICA7OyBUaGUgd2hvbGUgaGFzaCB0YWJsZQorICAgICAgICAgICAg aGFzaC10YWJsZS1zaXplIGhhc2gtdGFibGUtZmluZCBoYXNoLXRhYmxlLWNvdW50CisgICAgICAg ICAgICBoYXNoLXRhYmxlLWtleXMgaGFzaC10YWJsZS12YWx1ZXMgaGFzaC10YWJsZS1lbnRyaWVz CisgICAgICAgICAgICBoYXNoLXRhYmxlLWtleS12ZWN0b3IgaGFzaC10YWJsZS12YWx1ZS12ZWN0 b3IgaGFzaC10YWJsZS1lbnRyeS12ZWN0b3JzCisgICAgICAgICAgICA7OyBNYXBwaW5nIGFuZCBm b2xkaW5nCisgICAgICAgICAgICBoYXNoLXRhYmxlLW1hcCBoYXNoLXRhYmxlLWZvci1lYWNoIGhh c2gtdGFibGUtbWFwISBoYXNoLXRhYmxlLW1hcC0+bGlzdAorICAgICAgICAgICAgaGFzaC10YWJs ZS1mb2xkIGhhc2gtdGFibGUtcHJ1bmUhCisgICAgICAgICAgICA7OyBDb3B5aW5nCisgICAgICAg ICAgICBoYXNoLXRhYmxlLWNvcHkgaGFzaC10YWJsZS1lbXB0eS1jb3B5CisgICAgICAgICAgICA7 OyBDb252ZXJzaW9uCisgICAgICAgICAgICBoYXNoLXRhYmxlLT5hbGlzdAorICAgICAgICAgICAg OzsgSGFzaCB0YWJsZXMgYXMgc2V0cworICAgICAgICAgICAgaGFzaC10YWJsZS11bmlvbiEgaGFz aC10YWJsZS1pbnRlcnNlY3Rpb24hIGhhc2gtdGFibGUtZGlmZmVyZW5jZSEKKyAgICAgICAgICAg IGhhc2gtdGFibGUteG9yIQorICAgICAgICAgICAgOzsgSGFzaGluZworICAgICAgICAgICAgc3Ry aW5nLWNpLWhhc2ggaGFzaC1ieS1pZGVudGl0eSBoYXNoLWJ5LXZhbHVlIGhhc2gpCisgICM6cmUt ZXhwb3J0IChzdHJpbmctaGFzaCkKKyAgIzpyZXBsYWNlIChoYXNoIG1ha2UtaGFzaC10YWJsZSBo YXNoLXRhYmxlPykpCisKKwwKKzs7OzsgSW50ZXJuYWwgaGVscGVyIG1hY3JvcworCis7OyBEZWZp bmUgdGhlc2UgZmlyc3QsIHNvIHRoZSBjb21waWxlciB3aWxsIHBpY2sgdGhlbSB1cC4KKworOzsg SSBhbSBhIG1hY3JvIG9ubHkgZm9yIGVmZmljaWVuY3ksIHRvIGF2b2lkIHZhcmFyZ3MvYXBwbHku CisoZGVmaW5lLW1hY3JvIChoYXNoeC1pbnZva2UgaGFzaHgtcHJvYyBodC12YXIgLiBhcmdzKQor ICAiSW52b2tlIEhBU0hYLVBST0MsIGEgYGhhc2h4LSonIHByb2NlZHVyZSB0YWtpbmcgYSBoYXNo LWZ1bmN0aW9uLAorYXNzb2MtZnVuY3Rpb24sIGFuZCB0aGUgaGFzaC10YWJsZSBhcyBmaXJzdCBh cmdzLiIKKyAgYCgsaGFzaHgtcHJvYyAoaHQtaGFzaC1mdW5jdGlvbiAsaHQtdmFyKQorCQkoaHQt YXNzb2NpYXRvciAsaHQtdmFyKQorCQkoaHQtcmVhbC10YWJsZSAsaHQtdmFyKQorCQkuICxhcmdz KSkKKworKGRlZmluZS1tYWNybyAod2l0aC1oYXNoeC12YWx1ZXMgYmluZGluZ3MgaHQtdmFyIC4g Ym9keS1mb3JtcykKKyAgIkJpbmQgQklORElOR1MgdG8gdGhlIGhhc2gtZnVuY3Rpb24sIGFzc29j aWF0b3IsIGFuZCByZWFsLXRhYmxlIG9mCitIVC1WQVIsIHdoaWxlIGV2YWx1YXRpbmcgQk9EWS1G T1JNUy4iCisgIGAobGV0ICgoLCh0aGlyZCBiaW5kaW5ncykgKGh0LXJlYWwtdGFibGUgLGh0LXZh cikpCisgICAgICAgICAoLChmaXJzdCBiaW5kaW5ncykgKGh0LWhhc2gtZnVuY3Rpb24gLGh0LXZh cikpCisJICgsKHNlY29uZCBiaW5kaW5ncykgKGh0LWFzc29jaWF0b3IgLGh0LXZhcikpKQorICAg ICAuICxib2R5LWZvcm1zKSkKKworKGRlZmluZS1zeW50YXggYXNzZXJ0LW11dGFibGUKKyAgKHN5 bnRheC1ydWxlcyAoKQorICAgICgoYXNzZXJ0LW11dGFibGUgaHQpCisgICAgIChvciAoaGFzaC10 YWJsZS1tdXRhYmxlPyBodCkKKyAgICAgICAgIChlcnJvciAiSGFzaCB0YWJsZSBpcyBub3QgbXV0 YWJsZSIgaHQpKSkpKQorCisMCis7Ozs7IEhhc2hpbmcKKworOzs7IFNSRkktMTI1IGFuZCBSNlJT IGhhc2ggZnVuY3Rpb25zIGFyZSBzdXBwb3NlZCB0byBhY2NlcHQgb25seSBvbmUKKzs7OyBhcmd1 bWVudCwgYnV0IEd1aWxlIHN0YW5kYXJkIGhhc2ggdGFibGVzIG5lZWRzIHR3byBhcmdzLgorOzs7 IFRoZXJlZm9yZSwgdGhlIGhhc2ggZnVuY3Rpb25zIGluc2lkZSB0aGUgaGFzaCB0YWJsZSBhbHdh eXMgYWNjZXB0cworOzs7IG9uZSAocmVxdWlyZWQpIGFyZ3VtZW50IGFuZCBhdCBsZWFzdCBvbmUg cG9zc2libGUgYXJndW1lbnQsIHdoaWNoCis7OzsgbXVzdCBiZSBhIGZpeG51bS4KKworOzs7IFRo ZSBsYXJnZXN0IGZpeG51bSBpcyBpbiBgbW9zdC1wb3NpdGl2ZS1maXhudW0nIGluIG1vZHVsZSAo Z3VpbGUpLAorOzs7IHRob3VnaCBub3QgZG9jdW1lbnRlZCBhbnl3aGVyZSBidXQgbGliZ3VpbGUv bnVtYmVycy5jLgorCisoZGVmaW5lIChjYWxsZXItd2l0aC1kZWZhdWx0LXNpemUgaGFzaC1mbikK KyAgIkFuc3dlciBhIGZ1bmN0aW9uIHRoYXQgbWFrZXMgYG1vc3QtcG9zaXRpdmUtZml4bnVtJyB0 aGUgZGVmYXVsdAorc2Vjb25kIGFyZ3VtZW50IHRvIEhBU0gtRk4sIGEgMi1hcmcgcHJvY2VkdXJl LiIKKyAgKGxhbWJkYSogKG9iaiAjOm9wdGlvbmFsIChzaXplIG1vc3QtcG9zaXRpdmUtZml4bnVt KSkKKyAgICAoaGFzaC1mbiBvYmogc2l6ZSkpKQorCisoZGVmaW5lIGhhc2ggKGNhbGxlci13aXRo LWRlZmF1bHQtc2l6ZSAoQCAoZ3VpbGUpIGhhc2gpKSkKKworKGRlZmluZSBzdHJpbmctY2ktaGFz aCBzdHJpbmctaGFzaC1jaSkKKworKGRlZmluZSBoYXNoLWJ5LWlkZW50aXR5IChjYWxsZXItd2l0 aC1kZWZhdWx0LXNpemUgaGFzaHEpKQorKGRlZmluZSBoYXNoLWJ5LXZhbHVlICAgIChjYWxsZXIt d2l0aC1kZWZhdWx0LXNpemUgaGFzaHYpKQorCisoZGVmaW5lICh3cmFwLWhhc2gtZnVuY3Rpb24g aGFzaC1mdW5jdGlvbikKKyAgKGxhbWJkYSogKG9iaiBzaXplKQorICAgIChtb2R1bG8gKGhhc2gt ZnVuY3Rpb24gb2JqKSBzaXplKSkpCisKKwwKKzs7OzsgUmVmbGVjdGl2ZSBxdWVyaWVzLCBjb25z dHJ1Y3Rpb24sIHByZWRpY2F0ZQorCisoZGVmaW5lIChnZXQtaGFzaC1mdW5jdGlvbnMgZXF1aXYt ZnVuY3Rpb24gaGFzaC1mdW5jdGlvbikKKyAgIlJldHVybnMgYW4gaW50ZXJuYWwgYW5kIGFuIGV4 dGVybmFsIGhhc2ggZnVuY3Rpb24uIgorICAoY29uZAorICAgKGhhc2gtZnVuY3Rpb24gKGNvbmQK KyAgICAgICAgICAgICAgICAgICA7OyBTUkZJLTY5IHNob3VsZCBnaXZlIEhBU0ggYXMgZGVmYXVs dCBoYXNoLWZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICgob3IgKGVxPyAoQCAoZ3VpbGUp IGhhc2gpIGhhc2gtZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAoZXE/IGhhc2gg aGFzaC1mdW5jdGlvbikpCisgICAgICAgICAgICAgICAgICAgICh2YWx1ZXMgKEAgKGd1aWxlKSBo YXNoKSBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICA7OyBUaGVzZSBwcm9jZWR1 cmVzIGRvbid0IG5lZWQgdG8gYmUgd3JhcHBlZC4KKyAgICAgICAgICAgICAgICAgICAoKG9yIChl cT8gc3RyaW5nLWhhc2ggaGFzaC1mdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIChl cT8gc3RyaW5nLWNpLWhhc2ggaGFzaC1mdW5jdGlvbikpCisgICAgICAgICAgICAgICAgICAgICh2 YWx1ZXMgaGFzaC1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAo KG9yIChlcT8gaGFzaHEgaGFzaC1mdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIChl cT8gaGFzaC1ieS1pZGVudGl0eSBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAg KHZhbHVlcyBoYXNocSBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAoKG9yIChl cT8gaGFzaHYgaGFzaC1mdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIChlcT8gaGFz aC1ieS12YWx1ZSBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgKHZhbHVlcyBo YXNodiBoYXNoLWZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICA7OyBPdGhlcndpc2UsIHdy YXAgdGhlIGdpdmVuIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgIChlbHNlICh2YWx1ZXMg KHdyYXAtaGFzaC1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uKSBoYXNoLWZ1bmN0aW9uKSkpKQorICAg KChlcT8gZXF1YWw/IGVxdWl2LWZ1bmN0aW9uKSAodmFsdWVzIChAIChndWlsZSkgaGFzaCkgaGFz aCkpCisgICAoKGVxPyBlcT8gZXF1aXYtZnVuY3Rpb24pICh2YWx1ZXMgaGFzaHEgaGFzaC1ieS1p ZGVudGl0eSkpCisgICAoKGVxPyBlcXY/IGVxdWl2LWZ1bmN0aW9uKSAodmFsdWVzIGhhc2h2IGhh c2gtYnktdmFsdWUpKQorICAgKChlcT8gc3RyaW5nPT8gZXF1aXYtZnVuY3Rpb24pICh2YWx1ZXMg c3RyaW5nLWhhc2ggc3RyaW5nLWhhc2gpKQorICAgKChlcT8gc3RyaW5nLWNpPT8gZXF1aXYtZnVu Y3Rpb24pICh2YWx1ZXMgc3RyaW5nLWNpLWhhc2ggc3RyaW5nLWNpLWhhc2gpKQorICAgKGVsc2Ug KGVycm9yICJBIHN1aXRhYmxlIGhhc2ggZnVuY3Rpb24gY291bGQgbm90IGJlIGRldGVybWluZWQi IGVxdWl2LWZ1bmN0aW9uKSkpKQorCisoZGVmaW5lIChndWlsZS1odC1jdG9yIHdlYWtuZXNzKQor ICAiQW5zd2VyIHRoZSBHdWlsZSBIVCBjb25zdHJ1Y3RvciBmb3IgdGhlIGdpdmVuIFdFQUtORVNT LCB3aGVyZQorV0VBS05FU1MgaXMgYXMgc3BlY2lmaWVkIGJ5IFNSRkktMTI2LiIKKyAgKGNhc2Ug d2Vha25lc3MKKyAgICAoKCNmKSAoQCAoZ3VpbGUpIG1ha2UtaGFzaC10YWJsZSkpCisgICAgKCh3 ZWFrLWtleSkgbWFrZS13ZWFrLWtleS1oYXNoLXRhYmxlKQorICAgICgod2Vhay12YWx1ZSkgbWFr ZS13ZWFrLXZhbHVlLWhhc2gtdGFibGUpCisgICAgKCh3ZWFrLWtleS1hbmQtdmFsdWUpIG1ha2Ut ZG91Ymx5LXdlYWstaGFzaC10YWJsZSkKKyAgICAoKGVwaGVtZXJhbC1rZXkgZXBoZW1lcmFsLXZh bHVlIGVwaGVtZXJhbC1rZXktYW5kLXZhbHVlKQorICAgICAoZXJyb3IgIlVuc3VwcG9ydGVkIGhh c2ggdGFibGUgd2Vha25lc3MiIHdlYWtuZXNzKSkKKyAgICAoZWxzZSAoZXJyb3IgIkludmFsaWQg aGFzaCB0YWJsZSB3ZWFrbmVzcyIgd2Vha25lc3MpKSkpCisKKyhkZWZpbmUgKGVxdWl2YWxlbmNl LXByb2MtPmFzc29jaWF0b3IgZXF1aXYtZnVuY3Rpb24pCisgICJBbnN3ZXIgYW4gYGFzc29jJy1s aWtlIHByb2NlZHVyZSB0aGF0IGNvbXBhcmVzIHRoZSBhcmd1bWVudCBrZXkgdG8KK2FsaXN0IGtl eXMgd2l0aCBFUVVJVi1GVU5DVElPTi4iCisgIChjb25kICgob3IgKGVxPyBlcXVhbD8gZXF1aXYt ZnVuY3Rpb24pCisJICAgICAoZXE/IHN0cmluZz0/IGVxdWl2LWZ1bmN0aW9uKSkgKEAgKGd1aWxl KSBhc3NvYykpCisJKChlcT8gZXE/IGVxdWl2LWZ1bmN0aW9uKSBhc3NxKQorCSgoZXE/IGVxdj8g ZXF1aXYtZnVuY3Rpb24pIGFzc3YpCisJKGVsc2UgKGxhbWJkYSAoaXRlbSBhbGlzdCkKKwkJKGFz c29jIGl0ZW0gYWxpc3QgZXF1aXYtZnVuY3Rpb24pKSkpKQorCisoZGVmaW5lLXJlY29yZC10eXBl IGdlbmVyaWMtaGFzaC10YWJsZQorICAobWFrZS1nZW5lcmljLWhhc2gtdGFibGUgcmVhbC10YWJs ZSBoYXNoLWZ1bmN0aW9uIGFzc29jaWF0b3Igd2Vha25lc3MKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIG11dGFibGU/IHNpemUgZXF1aXZhbGVuY2UtZnVuY3Rpb24gb3JpZ2luYWwtaGFzaC1m dW5jdGlvbikKKyAgaGFzaC10YWJsZT8KKyAgOzsgVGhlc2UgdGhyZWUgYXJlIHRoZSBtb3N0IGFj Y2Vzc2VkIGZpZWxkcy4KKyAgKHJlYWwtdGFibGUgaHQtcmVhbC10YWJsZSBodC1yZWFsLXRhYmxl ISkKKyAgKGhhc2gtZnVuY3Rpb24gaHQtaGFzaC1mdW5jdGlvbikKKyAgKGFzc29jaWF0b3IgaHQt YXNzb2NpYXRvcikKKyAgOzsgV2VhayBoYXNoIHRhYmxlcyBkb24ndCB1c2UgaGFuZGxlcyBhbmQg ZG9uJ3QgdXBkYXRlIGh0LXNpemUuCisgICh3ZWFrbmVzcyBodC13ZWFrbmVzcykKKyAgOzsgU3Vw cG9ydHMgaW1tdXRhYmlsaXR5LgorICAobXV0YWJsZT8gaGFzaC10YWJsZS1tdXRhYmxlPykKKyAg OzsgU2l6ZSBvZiBoYXNoLXRhYmxlLCBhbGxvd2luZyBPKDEpIGhhc2gtdGFibGUtc2l6ZSBmb3IK KyAgOzsgbm9uLXdlYWsgaGFzaCB0YWJsZXMuCisgIChzaXplIGh0LXNpemUgaHQtc2l6ZSEpCisg IDs7IFRoZXNlIGFyZSBtb3N0bHkgbmVlZGVkIGZvciByZWZsZWN0aXZlIHF1ZXJpZXMKKyAgKGVx dWl2YWxlbmNlLWZ1bmN0aW9uIGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24pCisgIChv cmlnaW5hbC1oYXNoLWZ1bmN0aW9uIGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbikpCisKKzs7IFNo b3cgc29tZSBpbmZvcm1hdGlvbnMuCisoZGVmaW5lIChwcmludC1oYXNoLXRhYmxlIGh0IHBvcnQp CisgIChsZXQgKChlcXVpdi1uYW1lIChwcm9jZWR1cmUtbmFtZSAoaGFzaC10YWJsZS1lcXVpdmFs ZW5jZS1mdW5jdGlvbiBodCkpKSkKKyAgICAoZm9ybWF0IHBvcnQgIiM8Z2VuZXJpYy1oYXNoLXRh YmxlIH5AW35hIH5dfkBbfmEgfl1zaXplOiB+YSBtdXRhYmxlPyB+YT4iCisgICAgICAgICAgICBl cXVpdi1uYW1lIChodC13ZWFrbmVzcyBodCkKKyAgICAgICAgICAgIChoYXNoLXRhYmxlLXNpemUg aHQpIChoYXNoLXRhYmxlLW11dGFibGU/IGh0KSkpKQorCisoc2V0LXJlY29yZC10eXBlLXByaW50 ZXIhIGdlbmVyaWMtaGFzaC10YWJsZSBwcmludC1oYXNoLXRhYmxlKQorCisoZGVmaW5lIChoYXNo LXRhYmxlLWtleS13ZWFrbmVzcyBodCkKKyAgIlJldHVybnMgV0VBSy1LRVlTIGlmIEhUIGhhcyB3 ZWFrIGtleXMsIG9yICNmIG90aGVyd2lzZS4iCisgIDs7IElmIEd1aWxlIGV2ZXIgc3VwcG9ydHMg ZXBoZW1lcmFsIGtleXMsIHRoaXMgcHJvY2VkdXJlIHNob3VsZAorICA7OyByZXR1cm4gRVBIRU1F UkFMLUtFWVMgaWYgdGhlIEhUIGtleXMgYXJlIGVwaGVtZXJhbC4KKyAgKGNhc2UgKGh0LXdlYWtu ZXNzIGh0KQorICAgICgoI2Ygd2Vhay12YWx1ZSkgI2YpCisgICAgKCh3ZWFrLWtleSB3ZWFrLWtl eS1hbmQtdmFsdWUpICd3ZWFrLWtleXMpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS12YWx1ZS13 ZWFrbmVzcyBodCkKKyAgIlJldHVybnMgV0VBSy1WQUxVRVMgaWYgSFQgaGFzIHdlYWsgdmFsdWVz LCBvciAjZiBvdGhlcndpc2UuIgorICA7OyBJZiBHdWlsZSBldmVyIHN1cHBvcnRzIGVwaGVtZXJh bCB2YWx1ZXMsIHRoaXMgcHJvY2VkdXJlIHNob3VsZAorICA7OyByZXR1cm4gRVBIRU1FUkFMLVZB TFVFUyBpZiB0aGUgSFQgdmFsdWVzIGFyZSBlcGhlbWVyYWwuCisgIChjYXNlIChodC13ZWFrbmVz cyBodCkKKyAgICAoKCNmIHdlYWsta2V5KSAjZikKKyAgICAoKHdlYWstdmFsdWUgd2Vhay1rZXkt YW5kLXZhbHVlKSAnd2Vhay12YWx1ZXMpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS13ZWFrbmVz cyBodCkKKyAgIlJldHVybiB0aGUgd2Vha25lc3Mgb2YgSFQgYWNjb3JkaW5nIHRvIFNSRkktMTI2 IHNwZWMuIgorICAoaHQtd2Vha25lc3MgaHQpKQorCis7OyBUaGlzIGludGVybmFsIGZ1bmN0aW9u IGFsbG93cyB1cyB0byBjcmVhdGUgaW1tdXRhYmxlIGhhc2ggdGFibGVzCisoZGVmaW5lICglbWFr ZS1oYXNoLXRhYmxlIGVxdWl2LWZ1bmN0aW9uIGhhc2gtZnVuY3Rpb24gbXV0YWJsZSBjYXBhY2l0 eSB3ZWFrbmVzcykKKyAgKHJlY2VpdmUgKGludGVybmFsLWhhc2gtZnVuY3Rpb24gaGFzaC1mdW5j dGlvbikKKyAgICAgIChnZXQtaGFzaC1mdW5jdGlvbnMgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5j dGlvbikKKyAgICAobGV0ICgocmVhbC10YWJsZSAoKGd1aWxlLWh0LWN0b3Igd2Vha25lc3MpIGNh cGFjaXR5KSkpCisgICAgICA7OyBBcmd1bWVudHM6IHJlYWwtdGFibGUgaGFzaC1mdW5jdGlvbiBh c3NvY2lhdG9yCisgICAgICA7OyAgICAgICAgICAgIHdlYWtuZXNzIG11dGFibGU/IHNpemUgZXF1 aXZhbGVuY2UtZnVuY3Rpb24gb3JpZy1oYXNoLWZ1bmN0aW9uCisgICAgICAobWFrZS1nZW5lcmlj LWhhc2gtdGFibGUgcmVhbC10YWJsZSBpbnRlcm5hbC1oYXNoLWZ1bmN0aW9uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGVxdWl2YWxlbmNlLXByb2MtPmFzc29jaWF0b3IgZXF1aXYt ZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha25lc3MgKGFuZCBt dXRhYmxlICN0KSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXYtZnVuY3Rp b24gaGFzaC1mdW5jdGlvbikpKSkKKworOzsgSWYgdGhlIGxpc3Qgb2YgYXJndW1lbnRzIGlzIHVw ZGF0ZWQsIEhBU0gtVEFCTEUsIEFMSVNULT5IQVNILVRBQkxFLAorOzsgSEFTSC1UQUJMRS1VTkZP TEQgYW5kIEhBU0gtVEFCTEUtTUFQIHNob3VsZCBiZSB1cGRhdGVkIGFzIHdlbGwuCisoZGVmaW5l KiAobWFrZS1oYXNoLXRhYmxlIGVxdWl2LWZ1bmN0aW9uIGhhc2gtZnVuY3Rpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIzprZXkgKGNhcGFjaXR5IDEpICh3ZWFrbmVzcyAjZikgIzpyZXN0 IGFyZ3MpCisgICJDcmVhdGVzIGEgbmV3IGhhc2ggdGFibGUuIEVRVUlWLUZVTkNUSU9OIGlzIHVz ZWQgYXMgdGhlIGNvbXBhcmlzb24KK2Z1bmN0aW9uIGFuZCBIQVNILUZVTkNUSU9OLCBpZiBub3Qg ZmFsc2UsIGlzIHVzZWQgYXMgdGhlIGhhc2ggZnVuY3Rpb24sCitvdGhlcndpc2UgYSBzdWl0YWJs ZSBoYXNoLWZ1bmN0aW9uIGZvciB0aGUgaGFzaCB0YWJsZSBpcyBndWVzc2VkIG9yLCBpZgorb25l IGNhbid0IGJlIGd1ZXNzZWQsIGFuIGVycm9yIGlzIHNpZ25hbGVkLiAjOldFQUtORVNTIHNob3Vs ZCBiZSBlaXRoZXIKKyNmLCBXRUFLLUtFWSwgV0VBSy1WQUxVRSBvciBXRUFLLUtFWS1BTkQtVkFM VUUsIGFzIHNwZWNpZmllZCBieQorU1JGSS0xMjYuICM6Q0FQQUNJVFkgaXMgdGhlIG1pbmltYWwg bnVtYmVyIG9mIGJ1Y2tldHMgb2YgdGhlIGhhc2ggdGFibGUuCisKK0FSR1MgaXMgaWdub3JlZCBh bmQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiIKKyAgKCVtYWtlLWhhc2gtdGFibGUg ZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlvbiAjdCBjYXBhY2l0eSB3ZWFrbmVzcykpCisKKzs7 IFdlIHVzZSB0aGlzIHRvIGRlbm90ZSBtaXNzaW5nIG9yIHVuc3BlY2lmaWVkIHZhbHVlcyB0byBh dm9pZAorOzsgcG9zc2libGUgY29sbGlzaW9uIHdpdGggKnVuc3BlY2lmaWVkKi4KKworKGRlZmlu ZSBodC11bnNwZWNpZmllZCAoY29ucyAqdW5zcGVjaWZpZWQqICJodC12YWx1ZSIpKQorCisoZGVm aW5lKiAoaGFzaC10YWJsZSBlcXVpdi1mdW5jdGlvbi1vci1taHQtYXJncyAuIGFyZ3MpCisgICJD cmVhdGVzIGEgbmV3IGltbXV0YWJsZSBoYXNoIHRhYmxlIHdpdGggdGhlIGFzc29jaWF0aW9ucyBn aXZlbiBieQorQVJHUy4gSWYgRVFVSVYtRlVOQ1RJT04tT1ItTUhULUFSR1MgaXMgYSBsaXN0LCB0 aGUgbmV3IGhhc2ggdGFibGUgaXMKK2NyZWF0ZWQgYnkgKEFQUExZIE1BS0UtSEFTSC1UQUJMRSBF UVVJVi1GVU5DVElPTi1PUi1NSFQtQVJHUyksIG90aGVyd2lzZQoraXQgaXMgY3JlYXRlZCBieSAo TUFLRS1IQVNILVRBQkxFIEVRVUlWLUZVTkNUSU9OLU9SLU1IVC1BUkdTKSB3aXRoIHRoZQoraW5p dGlhbCBjYXBhY2l0eSBzZXQgdG8gdGhlIG51bWJlciBvZiBhc3NvY2lhdGlvbnMgaW4gYXJncy4K KworVGhlIEFSR1MgYWx0ZXJuYXRlIGJldHdlZW4ga2V5cyBhbmQgdmFsdWVzLiBJZiB0aGUgc2Ft ZSBrZXkgKGluIHRoZQorc2Vuc2Ugb2YgdGhlIGVxdWFsaXR5IHByb2NlZHVyZSkgaXMgc3BlY2lm aWVkIG1vcmUgdGhlbiBvbmNlLCBhbiBlcnJvcgoraXMgc2lnbmFsZWQuIgorICAobGV0ICgobGVu IChsZW5ndGggYXJncykpKQorICAgICh1bmxlc3MgKGV2ZW4/IGxlbikKKyAgICAgIChlcnJvciAi T2RkIG51bWJlciBvZiBrZXktdmFsdWUgcGFpcnMiIGFyZ3MpKQorICAgIChsZXQqICgoY2FwYWNp dHkgKHF1b3RpZW50IGxlbiAyKSkKKyAgICAgICAgICAgKGh0IChpZiAocGFpcj8gZXF1aXYtZnVu Y3Rpb24tb3ItbWh0LWFyZ3MpCisgICAgICAgICAgICAgICAgICAgKGNvbmQgKChudWxsPyBlcXVp di1mdW5jdGlvbi1vci1taHQtYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgU1JG SS0xMjUgU3BlYyBzYXlzIHRoaXMgc2hvdWxkIHJldHVybiBhbiBpbW11dGFibGUgaGFzaCB0YWJs ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAoJW1ha2UtaGFzaC10YWJsZSBlcXVhbD8gI2Yg I2YgY2FwYWNpdHkgI2YpKQorICAgICAgICAgICAgICAgICAgICAgICAgICgobnVsbD8gKGNkciBl cXVpdi1mdW5jdGlvbi1vci1taHQtYXJncykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICgl bWFrZS1oYXNoLXRhYmxlIChjYXIgZXF1aXYtZnVuY3Rpb24tb3ItbWh0LWFyZ3MpICNmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmIGNhcGFjaXR5ICNmKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAoKG51bGw/IChjZGRyIGVxdWl2LWZ1bmN0aW9uLW9y LW1odC1hcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCVtYWtlLWhhc2gtdGFibGUg KGNhciBlcXVpdi1mdW5jdGlvbi1vci1taHQtYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNhZHIgZXF1aXYtZnVuY3Rpb24tb3ItbWh0LWFyZ3MpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmIGNhcGFjaXR5ICNm KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZWxzZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAoYXBwbHkgKGxhbWJkYSogKGVxdWl2LWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaGFzaC1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICM6a2V5IChtdXRhYmxlICNmKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXBhY2l0eSBjYXBhY2l0eSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2Vha25lc3MgI2YpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpyZXN0IGFyZ3MpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICglbWFrZS1oYXNoLXRhYmxlIGVxdWl2LWZ1 bmN0aW9uIGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbXV0YWJsZSBjYXBhY2l0eSB3ZWFrbmVzcykpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGVxdWl2LWZ1bmN0aW9uLW9yLW1odC1hcmdzKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhZHIgZXF1aXYtZnVuY3Rpb24tb3It bWh0LWFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNhcGFjaXR5IGNh cGFjaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RkciBlcXVpdi1mdW5j dGlvbi1vci1taHQtYXJncykpKSkKKyAgICAgICAgICAgICAgICAgICAoJW1ha2UtaGFzaC10YWJs ZSBlcXVpdi1mdW5jdGlvbi1vci1taHQtYXJncyAjZiAjZiBjYXBhY2l0eSAjZikpKSkKKyAgICAg ICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUpIGh0CisgICAgICAgIChpZiAoaHQt d2Vha25lc3MgaHQpCisgICAgICAgICAgICAobGV0IGxvb3AgKChrdnMgYXJncykpCisgICAgICAg ICAgICAgIChjb25kCisgICAgICAgICAgICAgICAoKG51bGw/IGt2cykgI2YpCisgICAgICAgICAg ICAgICAoKG5vdCAoZXE/IGh0LXVuc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgICAgICAg IChoYXNoeC1yZWYgaCBhIHJlYWwtdGFibGUgKGNhciBrdnMpIGh0LXVuc3BlY2lmaWVkKSkpCisg ICAgICAgICAgICAgICAgKGVycm9yICJUd28gZXF1aXZhbGVudCBrZXlzIHdlcmUgcHJvdmlkZWQi CisgICAgICAgICAgICAgICAgICAgICAgIChjYXIgKG1lbWJlciAoY2FyIGt2cykgKGhhc2gtdGFi bGUta2V5cyBodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoLXRh YmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0KSkpCisgICAgICAgICAgICAgICAgICAgICAgIChj YXIga3ZzKSkpCisgICAgICAgICAgICAgICAoZWxzZSAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJs ZSAoY2FyIGt2cykgKGNhZHIga3ZzKSkKKyAgICAgICAgICAgICAgICAgICAgIChsb29wIChjZGRy IGt2cykpKSkpCisgICAgICAgICAgICAobGV0IGxvb3AgKChrdnMgYXJncykpCisgICAgICAgICAg ICAgIChjb25kCisgICAgICAgICAgICAgICAoKG51bGw/IGt2cykgI2YpCisgICAgICAgICAgICAg ICAoZWxzZSAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFuZGxlISBoIGEgcmVhbC10YWJs ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNhciBrdnMpIGh0LXVuc3BlY2lmaWVkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICh1 bmxlc3MgKGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgKGVycm9yICJUd28gZXF1aXZhbGVudCBrZXlzIHdlcmUgcHJvdmlkZWQiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgaGFuZGxlKSAoY2FyIGt2cykpKQorICAg ICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlIChjYWRyIGt2cykpKQorICAgICAg ICAgICAgICAgICAgICAgKGxvb3AgKGNkZHIga3ZzKSkpKQorICAgICAgICAgICAgICAoaHQtc2l6 ZSEgaHQgY2FwYWNpdHkpKSkpCisgICAgICBodCkpKQorCisoZGVmaW5lKiAoaGFzaC10YWJsZS11 bmZvbGQgc3RvcD8gbWFwcGVyIHN1Y2Nlc3NvciBzZWVkCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICM6a2V5IChtdXRhYmxlICN0KSAod2Vha25lc3MgI2YpIChjYXBhY2l0eSAxKSAjOnJl c3QgYXJncykKKyAgIlJldHVybnMgYSBuZXcgaGFzaCB0YWJsZSBjcmVhdGVkIGJ5IE1BS0UtSEFT SC1UQUJMRSB3aXRoIHRoZSBnaXZlbgorYXJndW1lbnRzLiBJZiB0aGUgcmVzdWx0IG9mIGFwcGx5 aW5nIHRoZSBwcmVkaWNhdGUgU1RPUD8gdG8gU0VFRCBpcwordHJ1ZSwgcmV0dXJucyB0aGUgaGFz aCB0YWJsZS4gT3RoZXJ3aXNlLCBhcHBseSB0aGUgcHJvY2VkdXJlIE1BUFBFUiB0bworU0VFRC4g TUFQUEVSIHJldHVybnMgdHdvIHZhbHVlcywgd2hpY2ggYXJlIGluc2VydGVkIGludG8gdGhlIGhh c2ggdGFibGUKK2FzIHRoZSBrZXkgYW5kIHRoZSB2YWx1ZSByZXNwZWN0aXZlbHkuIFRoZW4gZ2V0 IGEgbmV3IHNlZWQgYnkgYXBwbHlpbmcKK3RoZSBwcm9jZWR1cmUgU1VDQ0VTU09SIHRvIFNFRUQs IGFuZCByZXBlYXQgdGhpcyBhbGdvcml0aG0uIgorICAobGV0ICgocmVzdWx0ICglbWFrZS1oYXNo LXRhYmxlIGVxdWl2LWZ1bmN0aW9uIGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtdXRhYmxlIGNhcGFjaXR5IHdlYWtuZXNzKSkpCisgICAgKHdpdGgtaGFz aHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgcmVzdWx0CisgICAgICAoaWYgKGh0LXdlYWtuZXNz IHJlc3VsdCkKKyAgICAgICAgICAobGV0IGxvb3AgKChzZWVkIHNlZWQpKQorICAgICAgICAgICAg KGlmIChzdG9wPyBzZWVkKQorICAgICAgICAgICAgICAgIHJlc3VsdAorICAgICAgICAgICAgICAg IChyZWNlaXZlIChrZXkgdmFsKSAobWFwcGVyIHNlZWQpCisgICAgICAgICAgICAgICAgICAoaGFz aHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgKGxvb3Ag KHN1Y2Nlc3NvciBzZWVkKSkpKSkKKyAgICAgICAgICAobGV0ICgoc2l6ZSAoaHQtc2l6ZSByZXN1 bHQpKSkKKyAgICAgICAgICAgIChsZXQgbG9vcCAoKHNlZWQgc2VlZCkpCisgICAgICAgICAgICAg IChpZiAoc3RvcD8gc2VlZCkKKyAgICAgICAgICAgICAgICAgIHJlc3VsdAorICAgICAgICAgICAg ICAgICAgKHJlY2VpdmUgKGtleSB2YWwpIChtYXBwZXIgc2VlZCkKKyAgICAgICAgICAgICAgICAg ICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRlLWhhbmRsZSEgaCBhIHJlYWwtdGFibGUga2V5 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGh0LXVuc3BlY2lmaWVkKSkpCisgICAgICAgICAgICAgICAgICAgICAgKGlmIChlcT8gaHQtdW5z cGVjaWZpZWQgKGNkciBoYW5kbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBz aXplICgrIDEgc2l6ZSkpKQorICAgICAgICAgICAgICAgICAgICAgIChzZXQtY2RyISBoYW5kbGUg dmFsKSkKKyAgICAgICAgICAgICAgICAgICAgKGxvb3AgKHN1Y2Nlc3NvciBzZWVkKSkpKSkKKyAg ICAgICAgICAgIChodC1zaXplISByZXN1bHQgc2l6ZSkpKSkKKyAgICByZXN1bHQpKQorCisoZGVm aW5lKiAoYWxpc3QtPmhhc2gtdGFibGUgYWxpc3QgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlv bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6a2V5IChtdXRhYmxlICN0KSAoY2FwYWNp dHkgKGxlbmd0aCBhbGlzdCkpICh3ZWFrbmVzcyAjZikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjOnJlc3QgYXJncykKKyAgIlJldHVybnMgYSBuZXcgaGFzaC10YWJsZSBjcmVhdGVkIGJ5 IE1BS0UtSEFTSC1UQUJMRSB3aXRoIHRoZSBnaXZlbgorYXJndW1lbnRzLiBJdCBpcyBpbml0aWFs aXplZCBmcm9tIHRoZSBhc3NvY2lhdGlvbnMgb2YgYWxpc3QuCitBc3NvY2lhdGlvbnMgZWFybGll ciBpbiB0aGUgbGlzdCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aG9zZSB0aGF0Citjb21lIGxhdGVy LiIKKyAgKGxldCAoKHJlc3VsdCAoJW1ha2UtaGFzaC10YWJsZSBlcXVpdi1mdW5jdGlvbiBoYXNo LWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YWJsZSBjYXBh Y2l0eSB3ZWFrbmVzcykpKQorICAgICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUp IHJlc3VsdAorICAgICAgKGlmIChodC13ZWFrbmVzcyByZXN1bHQpCisgICAgICAgICAgKGZvci1l YWNoIChsYW1iZGEgKHBhaXIpCisgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXNldCEgaCBh IHJlYWwtdGFibGUgKGNhciBwYWlyKSAoY2RyIHBhaXIpKSkKKyAgICAgICAgICAgICAgICAgICAg KHJldmVyc2UgYWxpc3QpKQorICAgICAgICAgIChsZXQgKChzaXplIChodC1zaXplIHJlc3VsdCkp KQorICAgICAgICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHBhaXIpCisgICAgICAgICAgICAgICAg ICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFuZGxlIQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaCBhIHJlYWwtdGFibGUgKGNhciBwYWlyKSBodC11 bnNwZWNpZmllZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoZXE/IGh0LXVu c3BlY2lmaWVkIChjZHIgaGFuZGxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 ISBzaXplICgrIDEgc2l6ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIh IGhhbmRsZSAoY2RyIHBhaXIpKSkpKQorICAgICAgICAgICAgICAgICAgICAgIGFsaXN0KQorICAg ICAgICAgICAgKGh0LXNpemUhIHJlc3VsdCBzaXplKSkpKQorICAgIHJlc3VsdCkpCisKKwwKKzs7 OzsgQWNjZXNzaW5nIHRhYmxlIGl0ZW1zCisKKyhkZWZpbmUqIChoYXNoLXRhYmxlLXJlZiBodCBr ZXkgIzpvcHRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgIChmYWlsdXJlIChsYW1iZGEg KCkgKGVycm9yICJLZXkgbm90IGluIHRhYmxlIiBrZXkgaHQpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICBzdWNjZXNzKQorICAiRXh0cmFjdHMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgdG8gS0VZ IGluIEhULCBpbnZva2VzIHRoZSBwcm9jZWR1cmUKK1NVQ0NFU1Mgb24gaXQsIGFuZCByZXR1cm5z IGl0cyByZXN1bHQ7IGlmIFNVQ0NFU1MgaXMgbm90IHByb3ZpZGVkLCB0aGVuCit0aGUgdmFsdWUg aXRzZWxmIGlzIHJldHVybmVkLiBJZiBrZXkgaXMgbm90IGNvbnRhaW5lZCBpbiBoYXNoLXRhYmxl IGFuZAorRkFJTFVSRSBpcyBzdXBwbGllZCwgdGhlbiBGQUlMVVJFIGlzIGludm9rZWQgb24gbm8g YXJndW1lbnRzIGFuZCBpdHMKK3Jlc3VsdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCBhbiBlcnJv ciBpcyBzaWduYWxlZC4iCisgIChsZXQgKChyZXN1bHQgKGhhc2h4LWludm9rZSBoYXNoeC1yZWYg aHQga2V5IGh0LXVuc3BlY2lmaWVkKSkpCisgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgcmVz dWx0KQorICAgICAgICAoZmFpbHVyZSkKKyAgICAgICAgKGlmIHN1Y2Nlc3MgKHN1Y2Nlc3MgcmVz dWx0KSByZXN1bHQpKSkpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQga2V5 IGRlZmF1bHQpCisgICJMb29rdXBzIEtFWSBpbiBIVCBhbmQgcmV0dXJucyB0aGUgYXNzb2NpYXRl ZCB2YWx1ZS4gUmV0dXJucyBERUZBVUxUIGlmCitLRVkgaXNuJ3QgcHJlc2VudC4iCisgIChoYXNo eC1pbnZva2UgaGFzaHgtcmVmIGh0IGtleSBkZWZhdWx0KSkKKworDAorOzs7IFByZWRpY2F0ZXMu CisKKzs7IChkZWZpbmUgKGhhc2gtdGFibGU/IG9iaikpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUt ZW1wdHk/IGh0KQorICAiUmV0dXJucyB3aGV0aGVyIEtFWSBpcyBlbXB0eS4iCisgIChpZiAoaHQt d2Vha25lc3MgaHQpCisgICAgICAoY2FsbC9jYyAobGFtYmRhIChleGl0KQorICAgICAgICAgICAg ICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKSAoZXhpdCAjZikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChodC1yZWFsLXRhYmxlIGh0KSkKKyAgICAgICAgICAg ICAgICAgI3QpKQorICAgICAgKHplcm8/IChodC1zaXplIGh0KSkpKQorCisoZGVmaW5lIChoYXNo LXRhYmxlLWNvbnRhaW5zPyBodCBrZXkpCisgICJSZXR1cm4gd2hldGhlciBLRVkgaXMgYSBrZXkg aW4gSFQuIgorICAobm90IChlcT8gaHQtdW5zcGVjaWZpZWQgKGhhc2h4LWludm9rZSBoYXNoeC1y ZWYgaHQga2V5IGh0LXVuc3BlY2lmaWVkKSkpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlPT8gdmFs PT8gaHQxIGh0MikKKyAgIlJldHVybnMgI3QgaWYgdGhlIGhhc2ggdGFibGVzIEhUMSBhbmQgSFQy IGhhdmUgdGhlIHNhbWUga2V5cyAoaW4gdGhlCitzZW5zZSBvZiB0aGVpciBjb21tb24gZXF1YWxp dHkgcHJlZGljYXRlKSBhbmQgZWFjaCBrZXkgaGFzIHRoZSBzYW1lCit2YWx1ZSAoaW4gdGhlIHNl bnNlIG9mIFZBTD0/KSwgYW5kICNmIG90aGVyd2lzZS4iCisgIChsZXQgKChuMSAoaGFzaC10YWJs ZS1zaXplIGh0MSkpCisgICAgICAgIChuMiAoaGFzaC10YWJsZS1zaXplIGh0MikpKQorICAgIChh bmQgKD0gbjEgbjIpCisgICAgICAgICAoZXE/IChoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0 aW9uIGh0MSkKKyAgICAgICAgICAgICAgKGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24g aHQyKSkKKyAgICAgICAgIChyZWNlaXZlIChrZXlzIHZhbHMpIChoYXNoLXRhYmxlLWVudHJpZXMg aHQxKQorICAgICAgICAgICAoZXZlcnkgKGxhbWJkYSAoa2V5IHZhbDEpCisgICAgICAgICAgICAg ICAgICAgIChhbmQgKGhhc2gtdGFibGUtY29udGFpbnM/IGh0MiBrZXkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKHZhbD0/IHZhbDEgKGhhc2gtdGFibGUtcmVmIGh0MiBrZXkpKSkpCisgICAg ICAgICAgICAgICAgICBrZXlzIHZhbHMpKSkpKQorCisMCis7OzsgTXV0YXRvcnMuCisKKyhkZWZp bmUgKGhhc2gtdGFibGUtc2V0LXNpbmdsZSEgaHQga2V5IHZhbCkKKyAgIklmIEhUIGlzIGltbXV0 YWJsZSwgYW4gZXJyb3IgaXMgc2lnbmFsZWQuIE90aGVyd2lzZSwgYSBuZXcKK2Fzc29jaWF0aW9u IGlzIGNyZWF0ZWQgYmV0d2VlbiBLRVkgYW5kIFZBTC4gSWYgdGhlcmUgaXMgYSBwcmV2aW91cwor YXNzb2NpYXRpb24gZm9yIEtFWSwgaXQgaXMgZGVsZXRlZC4iCisgIChhc3NlcnQtbXV0YWJsZSBo dCkKKyAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgaHQKKyAgICAoaWYgKGh0 LXdlYWtuZXNzIGh0KQorICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkgdmFs KQorICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFuZGxlIQorICAgICAgICAg ICAgICAgICAgICAgICBoIGEgcmVhbC10YWJsZSBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAg aHQtdW5zcGVjaWZpZWQpKSkKKyAgICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAoY2Ry IGhhbmRsZSkpCisgICAgICAgICAgICAgIChodC1zaXplISBodCAoKyAxIChodC1zaXplIGh0KSkp KQorICAgICAgICAgIChzZXQtY2RyISBoYW5kbGUgdmFsKSkpKSkKKworKGRlZmluZSogKGhhc2gt dGFibGUtc2V0ISBodCAjOm9wdGlvbmFsIChrZXkxIGh0LXVuc3BlY2lmaWVkKSAodmFsMSBodC11 bnNwZWNpZmllZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIzpyZXN0IGFyZ3MpCisgICJJ ZiBIVCBpcyBpbW11dGFibGUsIGFuIGVycm9yIGlzIHNpZ25hbGVkLiBPdGhlcndpc2UsIHJlcGVh dGVkbHkKK211dGF0ZXMgdGhlIGhhc2ggdGFibGUgSFQsIGNyZWF0aW5nIG5ldyBhc3NvY2lhdGlv bnMgaW4gaXQgYnkgcHJvY2Vzc2luZwordGhlIGFyZ3VtZW50cyBmcm9tIGxlZnQgdG8gcmlnaHQu IFRoZSBBUkdTIGFsdGVybmF0ZSBiZXR3ZWVuIGtleXMgYW5kCit2YWx1ZXMuIFdoZW5ldmVyIHRo ZXJlIGlzIGEgcHJldmlvdXMgYXNzb2NpYXRpb24gZm9yIGEga2V5LCBpdCBpcworZGVsZXRlZC4i CisgIChpZiAobnVsbD8gYXJncykKKyAgICAgIChpZiAoZXE/IHZhbDEgaHQtdW5zcGVjaWZpZWQp CisgICAgICAgICAgKGlmIChlcT8ga2V5MSBodC11bnNwZWNpZmllZCkKKyAgICAgICAgICAgICAg OzsgSWYgb25lIGNhbGxzIChoYXNoLXRhYmxlLXNldCEgaHQpIHdpdGggYW4KKyAgICAgICAgICAg ICAgOzsgaW1tdXRhYmxlIGhhc2ggdGFibGUsIHNvbWV0aGluZyBpcyByZWFsbHkgd3JvbmcuCisg ICAgICAgICAgICAgIChhc3NlcnQtbXV0YWJsZSBodCkKKyAgICAgICAgICAgICAgKGVycm9yICJO byB2YWx1ZSBwcm92aWRlZCBmb3Iga2V5IiBrZXkxKSkKKyAgICAgICAgICAoaGFzaC10YWJsZS1z ZXQtc2luZ2xlISBodCBrZXkxIHZhbDEpKQorICAgICAgKGJlZ2luCisgICAgICAgIChhc3NlcnQt bXV0YWJsZSBodCkKKyAgICAgICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkg aHQKKyAgICAgICAgICAobGV0ICgoc2V0LW9uZSEgKGlmIChodC13ZWFrbmVzcyBodCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGtleSB2YWwpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRlLWhhbmRs ZSEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCBhIHJl YWwtdGFibGUga2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGh0LXVuc3BlY2lmaWVkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIChlcT8gaHQtdW5zcGVjaWZpZWQgKGNkciBoYW5kbGUpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoaHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlIHZhbCkpKSkp KQorICAgICAgICAgICAgKHNldC1vbmUhIGtleTEgdmFsMSkKKyAgICAgICAgICAgIChsZXQgbG9v cCAoKGt2cyBhcmdzKSkKKyAgICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICgobnVs bD8ga3ZzKSAqdW5zcGVjaWZpZWQqKQorICAgICAgICAgICAgICAgKChudWxsPyAoY2RyIGt2cykp CisgICAgICAgICAgICAgICAgKGVycm9yICJPZGQgbnVtYmVyIG9mIGtleS12YWx1ZSBwYWlycyIK KyAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMqIGtleTEgdmFsMSBhcmdzKSkpCisgICAgICAg ICAgICAgICAoZWxzZSAoc2V0LW9uZSEgKGNhciBrdnMpIChjYWRyIGt2cykpCisgICAgICAgICAg ICAgICAgICAgICAobG9vcCAoY2RkciBrdnMpKSkpKSkpKSkpCisKKyhkZWZpbmUgKGhhc2gtdGFi bGUtZGVsZXRlLXNpbmdsZSEgaHQga2V5KQorICAiRGVsZXRlcyBLRVkgYW5kIGFzc29jaWF0ZWQg dmFsdWUgaW4gaGFzaCB0YWJsZSBIVC4gUmV0dXJucyAjdCBpZiBLRVkKK2hhZCBhbiBhc3NvY2lh dGlvbiBhbmQgI2Ygb3RoZXJ3aXNlLiIKKyAgKGFzc2VydC1tdXRhYmxlIGh0KQorICAod2l0aC1o YXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAorICAgIChpZiAoZXE/IGh0LXVuc3BlY2lm aWVkIChoYXNoeC1yZWYgaCBhIHJlYWwtdGFibGUga2V5IGh0LXVuc3BlY2lmaWVkKSkKKyAgICAg ICAgI2YKKyAgICAgICAgKGJlZ2luIChoYXNoeC1yZW1vdmUhIGggYSByZWFsLXRhYmxlIGtleSkK KyAgICAgICAgICAgICAgIChodC1zaXplISBodCAoLSAoaHQtc2l6ZSBodCkgMSkpCisgICAgICAg ICAgICAgICAjdCkpKSkKKworKGRlZmluZSogKGhhc2gtdGFibGUtZGVsZXRlISBodCAjOm9wdGlv bmFsIChrZXkxIGh0LXVuc3BlY2lmaWVkKSAjOnJlc3Qga2V5cykKKyAgIkRlbGV0ZXMgYW55IGFz c29jaWF0aW9uIHRvIGVhY2gga2V5IGluIGhhc2ggdGFibGUgSFQgYW5kIHJldHVybnMgdGhlCitu dW1iZXIgb2Yga2V5cyB0aGF0IGhhZCBhc3NvY2lhdGlvbnMuIgorICAoaWYgKG51bGw/IGtleXMp CisgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCBrZXkxKQorICAgICAgICAgIChiZWdpbiAo YXNzZXJ0LW11dGFibGUgaHQpIDApCisgICAgICAgICAgKGlmIChoYXNoLXRhYmxlLWRlbGV0ZS1z aW5nbGUhIGh0IGtleTEpIDEgMCkpCisgICAgICAoYmVnaW4KKyAgICAgICAgKGFzc2VydC1tdXRh YmxlIGh0KQorICAgICAgICAobGV0KiAoKGNvdW50IDApCisgICAgICAgICAgICAgICAoZGVsZXRl LW9uZSEgKGxhbWJkYSAoa2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgt aGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgaHQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHdoZW4gKG5vdCAoZXE/IGh0LXVuc3BlY2lmaWVkCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgtcmVmIGggYSByZWFsLXRhYmxl IGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBodC11bnNwZWNpZmllZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzZXQhIGNvdW50ICgrIDEgY291bnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChoYXNoeC1yZW1vdmUhIGggYSByZWFsLXRhYmxlIGtleSkpKSkpKQorICAgICAgICAg IChkZWxldGUtb25lISBrZXkxKQorICAgICAgICAgIChmb3ItZWFjaCBkZWxldGUtb25lISBrZXlz KQorICAgICAgICAgICh1bmxlc3MgKG9yIChodC13ZWFrbmVzcyBodCkgKHplcm8/IGNvdW50KSkK KyAgICAgICAgICAgIChodC1zaXplISBodCAoLSAoaHQtc2l6ZSBodCkgY291bnQpKSkKKyAgICAg ICAgICBjb3VudCkpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS1pbnRlcm4hIGh0IGtleSBmYWls dXJlKQorICAiRWZmZWN0aXZlbHkgaW52b2tlcyBIQVNILVRBQkxFLVJFRiB3aXRoIHRoZSBnaXZl biBhcmd1bWVudHMgYW5kCityZXR1cm5zIHdoYXQgaXQgcmV0dXJucy4gSWYgS0VZIHdhcyBub3Qg Zm91bmQgaW4gaGFzaC10YWJsZSwgaXRzIHZhbHVlCitpcyBzZXQgdG8gdGhlIHJlc3VsdCBvZiBj YWxsaW5nIEZBSUxVUkUgYW5kIHRoZSBuZXcgdmFsdWUgaXMgcmV0dXJuZWQuIgorICAoYXNzZXJ0 LW11dGFibGUgaHQpCisgICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUpIGh0Cisg ICAgKGlmIChodC13ZWFrbmVzcyBodCkKKyAgICAgICAgOzsgU2VwYXJhdGUgdGhlIGNhc2Ugd2hl cmUgaHQgaXMgd2VhayAtIGRvbid0IHVzZSBoYW5kbGUKKyAgICAgICAgKGxldCogKCh2YWx1ZSAo aGFzaHgtcmVmIGggYSByZWFsLXRhYmxlIGtleSBodC11bnNwZWNpZmllZCkpKQorICAgICAgICAg IChjb25kICgoZXE/IGh0LXVuc3BlY2lmaWVkIHZhbHVlKQorICAgICAgICAgICAgICAgICAobGV0 ICgodmFsdWUgKGZhaWx1cmUpKSkKKyAgICAgICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEg cmVhbC10YWJsZSBrZXkgdmFsdWUpCisgICAgICAgICAgICAgICAgICAgdmFsdWUpKQorICAgICAg ICAgICAgICAgIChlbHNlIHZhbHVlKSkpCisgICAgICAgIChsZXQgKChoYW5kbGUKKyAgICAgICAg ICAgICAgIChoYXNoeC1jcmVhdGUtaGFuZGxlISBoIGEgcmVhbC10YWJsZSBrZXkgaHQtdW5zcGVj aWZpZWQpKSkKKyAgICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkp CisgICAgICAgICAgICAgIChiZWdpbiAoaHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKQor ICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAoZmFpbHVyZSkpKSkKKyAgICAg ICAgICAoY2RyIGhhbmRsZSkpKSkpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtaW50ZXJuIS9kZWZh dWx0IGh0IGtleSBkZWZhdWx0KQorICAiRWZmZWN0aXZlbHkgaW52b2tlcyBIQVNILVRBQkxFLVJF RiB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMgYW5kCityZXR1cm5zIHdoYXQgaXQgcmV0dXJucy4g SWYgS0VZIHdhcyBub3QgZm91bmQgaW4gaGFzaC10YWJsZSwgaXRzIHZhbHVlCitpcyBzZXQgdG8g REVGQVVMVCBhbmQgREVGQVVMVCBpcyByZXR1cm5lZC4iCisgIChhc3NlcnQtbXV0YWJsZSBodCkK KyAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgaHQKKyAgICAoaWYgKGh0LXdl YWtuZXNzIGh0KQorICAgICAgICA7OyBTZXBhcmF0ZSB0aGUgY2FzZSB3aGVyZSBodCBpcyB3ZWFr IC0gZG9uJ3QgdXNlIGhhbmRsZQorICAgICAgICAobGV0KiAoKHZhbHVlIChoYXNoeC1yZWYgaCBh IHJlYWwtdGFibGUga2V5IGh0LXVuc3BlY2lmaWVkKSkpCisgICAgICAgICAgKGNvbmQgKChlcT8g aHQtdW5zcGVjaWZpZWQgdmFsdWUpCisgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQhIGggYSBy ZWFsLXRhYmxlIGtleSBkZWZhdWx0KQorICAgICAgICAgICAgICAgICBkZWZhdWx0KQorICAgICAg ICAgICAgICAgIChlbHNlIHZhbHVlKSkpCisgICAgICAgIChsZXQgKChoYW5kbGUKKyAgICAgICAg ICAgICAgIChoYXNoeC1jcmVhdGUtaGFuZGxlISBoIGEgcmVhbC10YWJsZSBrZXkgaHQtdW5zcGVj aWZpZWQpKSkKKyAgICAgICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkp CisgICAgICAgICAgICAgIChiZWdpbiAoaHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKQor ICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSBkZWZhdWx0KSkpCisgICAgICAg ICAgKGNkciBoYW5kbGUpKSkpKQorCisoZGVmaW5lKiAoaGFzaC10YWJsZS11cGRhdGUhIGh0IGtl eSB1cGRhdGVyICM6b3B0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWx1 cmUgKGxhbWJkYSAoKSAoZXJyb3IgIktleSBub3QgaW4gdGFibGUiIGtleSBodCkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKQorICAiU2VtYW50aWNhbGx5IGVxdWl2YWxl bnQgdG8sIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQgdGhhbiwgdGhlCisgZm9sbG93aW5nIGNv ZGU6CisgKEhBU0gtVEFCTEUtU0VUISBIVCBLRVkgKFVQREFURVIgKEhBU0gtVEFCTEUtUkVGIEhU IEtFWSBbRkFJTFVSRSBbU1VDQ0VTU11dKSkpCisKK1NpZ25hbHMgYW4gZXJyb3IgaWYgSFQgaXMg aW1tdXRhYmxlLiBPdGhlcndpc2UsIGlmIEtFWSBpcyBmb3VuZCBpbiBoYXNoCit0YWJsZSBIVCwg aXRzIGFzc29jaWF0ZWQgVkFMVUUgaXMgc2V0IHRvIChVUERBVEVSIChTVUNDRVNTIFZBTFVFKSks CitvciAoVVBEQVRFUiBWQUxVRSkgaWYgU1VDQ0VTUyBpc24ndCBwcm92aWRlZC4gSWYgS0VZIGlz IG5vdCBmb3VuZCwgc2V0cwordGhlIG5ldyB2YWx1ZSB0byB0aGUgcmVzdWx0IG9mIChVUERBVEVS IChGQUlMVVJFKSkgaWYgRkFJTFVSRSBpcworcHJvdmlkZWQsIG9yIHNpZ25hbHMgYW4gZXJyb3Ig b3RoZXJ3aXNlLiIKKyAgKGFzc2VydC1tdXRhYmxlIGh0KQorICAod2l0aC1oYXNoeC12YWx1ZXMg KGggYSByZWFsLXRhYmxlKSBodAorICAgIChpZiAoaHQtd2Vha25lc3MgaHQpCisgICAgICAgIDs7 IFNlcGFyYXRlIHRoZSBjYXNlIHdoZXJlIGh0IGlzIHdlYWsgLSBkb24ndCB1c2UgaGFuZGxlCisg ICAgICAgIChsZXQqICgob2xkIChoYXNoeC1yZWYgaCBhIHJlYWwtdGFibGUga2V5IGh0LXVuc3Bl Y2lmaWVkKSkKKyAgICAgICAgICAgICAgIChuZXcgKHVwZGF0ZXIgKGlmIChlcT8gb2xkIGh0LXVu c3BlY2lmaWVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWx1cmUpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgc3VjY2VzcyAoc3VjY2VzcyBvbGQp IG9sZCkpKSkpCisgICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFibGUga2V5IG5ldykp CisgICAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWdldC1oYW5kbGUgaCBhIHJlYWwtdGFibGUg a2V5KSkpCisgICAgICAgICAgKGNvbmQgKGhhbmRsZQorICAgICAgICAgICAgICAgICAobGV0KiAo KG9sZCAoY2RyIGhhbmRsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAobmV3ICh1cGRhdGVy IChpZiBzdWNjZXNzIChzdWNjZXNzIG9sZCkgb2xkKSkpKQorICAgICAgICAgICAgICAgICAgIChz ZXQtY2RyISBoYW5kbGUgbmV3KSkpCisgICAgICAgICAgICAgICAgKGVsc2UKKyAgICAgICAgICAg ICAgICAgKGxldCAoKG5ldyAodXBkYXRlciAoZmFpbHVyZSkpKSkKKyAgICAgICAgICAgICAgICAg ICAoaHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKQorICAgICAgICAgICAgICAgICAgICho YXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSBuZXcpKSkpKSkpCisgICp1bnNwZWNpZmllZCop CisKKyhkZWZpbmUgKGhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0IGh0IGtleSB1cGRhdGVyIGRl ZmF1bHQpCisgICJTZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bywgYnV0IG1heSBiZSBtb3JlIGVm ZmljaWVudCB0aGFuLCB0aGUKK2ZvbGxvd2luZyBjb2RlOgorIChIQVNILVRBQkxFLVNFVCEgSFQg S0VZIChVUERBVEVSIChIQVNILVRBQkxFLVJFRi9ERUZBVUxUIEhUIEtFWSBERUZBVUxUKSkpCisK K1NpZ25hbHMgYW4gZXJyb3IgaWYgSFQgaXMgaW1tdXRhYmxlLiBPdGhlcndpc2UsIG1vZGlmaWVz IEhUJ3MgdmFsdWUgYXQKK0tFWSBieSBwYXNzaW5nIGl0cyBvbGQgdmFsdWUsIG9yIERFRkFVTFQg aWYgaXQgZG9lc24ndCBoYXZlIG9uZSwgdG8KK1VQREFURVIsIGFuZCBzZXR0aW5nIGl0IHRvIHRo ZSByZXN1bHQgdGhlcmVvZi4iCisgIChhc3NlcnQtbXV0YWJsZSBodCkKKyAgKHdpdGgtaGFzaHgt dmFsdWVzIChoIGEgcmVhbC10YWJsZSkgaHQKKyAgICAoaWYgKGh0LXdlYWtuZXNzIGh0KQorICAg ICAgICA7OyBKLk0uIHNlcGFyYXRlIHRoZSBjYXNlIHdoZXJlIGh0IGlzIHdlYWsgLSBkb24ndCB1 c2UgaGFuZGxlCisgICAgICAgIChsZXQqICgob2xkIChoYXNoeC1yZWYgaCBhIHJlYWwtdGFibGUg a2V5IGRlZmF1bHQpKSkKKyAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkg KHVwZGF0ZXIgb2xkKSkpCisgICAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWNyZWF0ZS1oYW5k bGUhIGggYSByZWFsLXRhYmxlIGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBodC11bnNwZWNpZmllZCkpKQorICAgICAgICAgIChpZiAoZXE/IGh0LXVuc3Bl Y2lmaWVkIChjZHIgaGFuZGxlKSkKKyAgICAgICAgICAgICAgKGJlZ2luIChodC1zaXplISBodCAo KyAxIChodC1zaXplIGh0KSkpCisgICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxl ICh1cGRhdGVyIGRlZmF1bHQpKSkKKyAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAodXBk YXRlciAoY2RyIGhhbmRsZSkpKSkpKSkKKyAgKnVuc3BlY2lmaWVkKikKKworKGRlZmluZSAoaGFz aC10YWJsZS1wb3AhIGh0KQorICAiU2lnbmFscyBhbiBlcnJvciBpZiBIVCBpcyBpbW11dGFibGUg b3IgZW1wdHkuIE90aGVyd2lzZSwgY2hvb3NlcyBhbgorYXJiaXRyYXJ5IGFzc29jaWF0aW9uIGZy b20gaGFzaC10YWJsZSBhbmQgcmVtb3ZlcyBpdCwgcmV0dXJuaW5nIHRoZSBrZXkKK2FuZCB2YWx1 ZSBhcyB0d28gdmFsdWVzLiIKKyAgKGFzc2VydC1tdXRhYmxlIGh0KQorICAoY2FsbC9jYworICAg KGxhbWJkYSAocmV0dXJuKQorICAgICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxl KSBodAorICAgICAgIChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGtleSB2YWx1ZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgIChoYXNoeC1yZW1vdmUhIGggYSByZWFsLXRhYmxlIGtleSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKGh0LXdlYWtuZXNzIGh0KQorICAgICAgICAgICAg ICAgICAgICAgICAgICAoaHQtc2l6ZSEgaHQgKC0gKGh0LXNpemUgaHQpIDEpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgIChyZXR1cm4ga2V5IHZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAg ICByZWFsLXRhYmxlKSkKKyAgICAgKGVycm9yICJIYXNoIHRhYmxlIGlzIGVtcHR5IiBodCkpKSkK KworKGRlZmluZSogKGhhc2gtdGFibGUtY2xlYXIhIGh0ICM6b3B0aW9uYWwgY2FwYWNpdHkpCisg ICJEZWxldGVzIGFsbCBhc3NvY2lhdGlvbnMgZnJvbSBIVC4iCisgIChhc3NlcnQtbXV0YWJsZSBo dCkKKyAgKGlmIGNhcGFjaXR5CisgICAgICAoaHQtcmVhbC10YWJsZSEgaHQgKChndWlsZS1odC1j dG9yIChodC13ZWFrbmVzcyBodCkpIGNhcGFjaXR5KSkKKyAgICAgIChoYXNoLWNsZWFyISAoaHQt cmVhbC10YWJsZSBodCkpKQorICAoaHQtc2l6ZSEgaHQgMCkKKyAgKnVuc3BlY2lmaWVkKikKKwor DAorOzsgVGhlIHdob2xlIGhhc2ggdGFibGUuCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtc2l6ZSBo dCkKKyAgIlJldHVybnMgdGhlIG51bWJlciBvZiBhc3NvY2lhdGlvbnMgaW4gSFQuIFRoaXMgaXMg Z3VhcmFudGVlZCBPKDEpIGZvcgordGFibGVzIHdoZXJlICM6V0VBS05FU1MgaXMgI2YuIgorICAo aWYgKGh0LXdlYWtuZXNzIGh0KQorICAgICAgKGhhc2gtZm9sZCAobGFtYmRhIChrZXkgdmFsIGFu cykgKCsgMSBhbnMpKQorICAgICAgICAgICAgICAgICAwIChodC1yZWFsLXRhYmxlIGh0KSkKKyAg ICAgIChodC1zaXplIGh0KSkpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUta2V5cyBodCkKKyAgIlJl dHVybnMgYSBsaXN0IG9mIHRoZSBrZXlzIGluIEhULiIKKyAgKGhhc2gtZm9sZCAobGFtYmRhIChr ZXkgdmFsIGxzdCkgKGNvbnMga2V5IGxzdCkpCisgICAgICAgICAgICAgJygpIChodC1yZWFsLXRh YmxlIGh0KSkpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtdmFsdWVzIGh0KQorICAiUmV0dXJucyBh IGxpc3Qgb2YgdGhlIHZhbHVlcyBpbiBIVC4iCisgIChoYXNoLWZvbGQgKGxhbWJkYSAoa2V5IHZh bCBsc3QpIChjb25zIHZhbCBsc3QpKQorICAgICAgICAgICAgICcoKSAoaHQtcmVhbC10YWJsZSBo dCkpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWVudHJpZXMgaHQpCisgICJSZXR1cm5zIHR3byB2 YWx1ZXM6IGEgbGlzdCBvZiB0aGUga2V5cyBhbmQgYSBsaXN0IG9mIHRoZSBhc3NvY2lhdGVkCit2 YWx1ZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgb3JkZXIuIgorICAobGV0ICgoa2V5cyAnKCkpICh2 YWxzICcoKSkpCisgICAgKGhhc2gtZm9yLWVhY2ggKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAg ICAgICAgICAgICAgIChzZXQhIGtleXMgKGNvbnMga2V5IGtleXMpKQorICAgICAgICAgICAgICAg ICAgICAgKHNldCEgdmFscyAoY29ucyB2YWwgdmFscykpKQorICAgICAgICAgICAgICAgICAgICho dC1yZWFsLXRhYmxlIGh0KSkKKyAgICAodmFsdWVzIGtleXMgdmFscykpKQorCis7OzsgSW4gYSBu b24td2VhayBoYXNoIHRhYmxlLCB3ZSBrbm93IHRoZSBzaXplIHRoYXQgdGhlIGtleS92YWx1ZSB2 ZWN0b3IKKzs7OyB3aWxsIGhhdmUuIEluIGEgd2VhayBoYXNoIHRhYmxlLCB3ZSBoYXZlIHRvIGl0 ZXJhdGUgdGhyb3cKKzs7OyBhc3NvY2lhdGlvbnMgb2YgdGhlIGhhc2ggdGFibGUgdG8gY29tcHV0 ZSBpdHMgc2l6ZSwgc28gaXQgaXMgZWFzaWVyCis7OzsgdG8gc2ltcGx5IGNhbGwgSEFTSC1UQUJM RS1LRVlTL0hBU0gtVEFCTEUtVkFMVUVTLgorKGRlZmluZSAoaGFzaC10YWJsZS1rZXktdmVjdG9y IGh0KQorICAiUmV0dXJucyBhIHZlY3RvciBvZiB0aGUga2V5cyBpbiBIVC4iCisgIChpZiAoaHQt d2Vha25lc3MgaHQpCisgICAgICAobGlzdC0+dmVjdG9yIChoYXNoLXRhYmxlLWtleXMgaHQpKQor ICAgICAgKGxldCogKChsZW4gKGh0LXNpemUgaHQpKQorICAgICAgICAgICAgIChrZXlzIChtYWtl LXZlY3RvciBsZW4pKSkKKyAgICAgICAgKGhhc2gtZm9sZCAobGFtYmRhIChrZXkgdmFsIGkpCisg ICAgICAgICAgICAgICAgICAgICAodmVjdG9yLXNldCEga2V5cyBpIGtleSkKKyAgICAgICAgICAg ICAgICAgICAgICgrIGkgMSkpCisgICAgICAgICAgICAgICAgICAgMCAoaHQtcmVhbC10YWJsZSBo dCkpCisgICAgICAgIGtleXMpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS12YWx1ZS12ZWN0b3Ig aHQpCisgICJSZXR1cm5zIGEgdmVjdG9yIG9mIHRoZSB2YWx1ZXMgaW4gSFQuIgorICAoaWYgKGh0 LXdlYWtuZXNzIGh0KQorICAgICAgKGxpc3QtPnZlY3RvciAoaGFzaC10YWJsZS12YWx1ZXMgaHQp KQorICAgICAgKGxldCogKChsZW4gKGh0LXNpemUgaHQpKQorICAgICAgICAgICAgICh2YWxzICht YWtlLXZlY3RvciBsZW4pKSkKKyAgICAgICAgKGhhc2gtZm9sZCAobGFtYmRhIChrZXkgdmFsIGkp CisgICAgICAgICAgICAgICAgICAgICAodmVjdG9yLXNldCEgdmFscyBpIHZhbCkKKyAgICAgICAg ICAgICAgICAgICAgICgrIGkgMSkpCisgICAgICAgICAgICAgICAgICAgMCAoaHQtcmVhbC10YWJs ZSBodCkpCisgICAgICAgIHZhbHMpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS1lbnRyeS12ZWN0 b3JzIGh0KQorICAiUmV0dXJucyB0d28gdmFsdWVzOiBhIHZlY3RvciBvZiB0aGUga2V5cyBhbmQg YSB2ZWN0b3Igb2YgdGhlCithc3NvY2lhdGVkIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9uZGluZyBv cmRlci4iCisgIChpZiAoaHQtd2Vha25lc3MgaHQpCisgICAgICAocmVjZWl2ZSAoa2V5cyB2YWxz KSAoaGFzaC10YWJsZS1lbnRyaWVzIGh0KQorICAgICAgICAodmFsdWVzIChsaXN0LT52ZWN0b3Ig a2V5cykgKGxpc3QtPnZlY3RvciB2YWxzKSkpCisgICAgICAobGV0KiAoKGxlbiAoaHQtc2l6ZSBo dCkpCisgICAgICAgICAgICAgKGtleXMgKG1ha2UtdmVjdG9yIGxlbikpCisgICAgICAgICAgICAg KHZhbHMgKG1ha2UtdmVjdG9yIGxlbikpKQorICAgICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGtl eSB2YWwgaSkKKyAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Itc2V0ISBrZXlzIGkga2V5KQor ICAgICAgICAgICAgICAgICAgICAgKHZlY3Rvci1zZXQhIHZhbHMgaSB2YWwpCisgICAgICAgICAg ICAgICAgICAgICAoKyBpIDEpKQorICAgICAgICAgICAgICAgICAgIDAgKGh0LXJlYWwtdGFibGUg aHQpKQorICAgICAgICAodmFsdWVzIGtleXMgdmFscykpKSkKKworKGRlZmluZSAoaGFzaC10YWJs ZS1maW5kIHByb2MgaHQgZmFpbHVyZSkKKyAgIkZvciBlYWNoIGFzc29jaWF0aW9uIG9mIHRoZSBo YXNoIHRhYmxlIEhULCBpbnZva2UgUFJPQyBvbiBpdHMga2V5IGFuZAordmFsdWUuIElmIFBST0Mg cmV0dXJucyB0cnVlLCB0aGVuIEhBU0gtVEFCTEUtRklORCByZXR1cm5zIHdoYXQgUFJPQworcmV0 dXJucy4gSWYgYWxsIHRoZSBjYWxscyB0byBQUk9DIHJldHVybiAjZiwgcmV0dXJucyB0aGUgcmVz dWx0IG9mCitpbnZva2luZyB0aGUgdGh1bmsgRkFJTFVSRS4iCisgIChjYWxsL2NjIChsYW1iZGEg KHJldHVybikKKyAgICAgICAgICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHggKHByb2Mga2V5IHZhbCkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgeCAocmV0dXJuIHgpKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGh0LXJlYWwtdGFibGUgaHQpKQorICAgICAgICAgICAg IChmYWlsdXJlKSkpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWNvdW50IHByZWQgaHQpCisgICJG b3IgZWFjaCBhc3NvY2lhdGlvbiBvZiBIVCwgaW52b2tlIFBSRUQgb24gaXRzIGtleSBhbmQgdmFs dWUuIFJldHVybgordGhlIG51bWJlciBvZiBjYWxscyB0byBQUkVEIHdoaWNoIHJldHVybmVkIHRy dWUuIgorICAoaGFzaC1mb2xkIChsYW1iZGEgKGtleSB2YWwgbikKKyAgICAgICAgICAgICAgIChp ZiAocHJlZCBrZXkgdmFsKSAoKyAxIG4pIG4pKQorICAgICAgICAgICAgIDAgKGh0LXJlYWwtdGFi bGUgaHQpKSkKKworDAorOzs7IE1hcHBpbmcgYW5kIGZvbGRpbmcuCisKKyhkZWZpbmUqIChoYXNo LXRhYmxlLW1hcCBwcm9jIGh0IGVxdWl2LWZ1bmN0aW9uIGhhc2gtZnVuY3Rpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgICAjOmtleSAobXV0YWJsZSAjdCkgKGNhcGFjaXR5IChoYXNoLXRhYmxl LXNpemUgaHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICh3ZWFrbmVzcyAjZikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAjOnJlc3QgYXJncykKKyAgIkNyZWF0ZXMgYSBuZXcgaGFzaCB0 YWJsZSBieSBjYWxsaW5nIE1BS0UtSEFTSC1UQUJMRSB3aXRoIHRoZSBnaXZlbgorYXJndW1lbnRz LiBBZnRlciBjcmVhdGlvbiwgSEFTSC1UQUJMRS1NQVAgY2FsbHMgUFJPQyBmb3IgZXZlcnkKK2Fz c29jaWF0aW9uIGluIGhhc2gtdGFibGUgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIGFzc29jaWF0aW9u LiBUaGUga2V5IG9mCit0aGUgYXNzb2NpYXRpb24gYW5kIHRoZSByZXN1bHQgb2YgaW52b2tpbmcg UFJPQyBhcmUgZW50ZXJlZCBpbnRvIHRoZSBuZXcKK2hhc2ggdGFibGUsIHdoaWNoIGlzIHRoZW4g cmV0dXJuZWQuIgorICAobGV0ICgocmVzdWx0ICglbWFrZS1oYXNoLXRhYmxlIGVxdWl2LWZ1bmN0 aW9uIGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRh YmxlIGNhcGFjaXR5IHdlYWtuZXNzKSkKKyAgICAgICAgKHNpemUgMCkpCisgICAgKHdpdGgtaGFz aHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgcmVzdWx0CisgICAgICAoaGFzaC1mb3ItZWFjaAor ICAgICAgIChsYW1iZGEgKGtleSB2YWwpCisgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10 YWJsZSBrZXkgKHByb2MgdmFsKSkKKyAgICAgICAgIChzZXQhIHNpemUgKCsgMSBzaXplKSkpCisg ICAgICAgKGh0LXJlYWwtdGFibGUgaHQpKSkKKyAgICAoaHQtc2l6ZSEgcmVzdWx0IHNpemUpCisg ICAgcmVzdWx0KSkKKworKGRlZmluZSAoaGFzaC10YWJsZS1tYXAtPmxpc3QgcHJvYyBodCkKKyAg IkNhbGxzIFBST0MgZm9yIGV2ZXJ5IGFzc29jaWF0aW9uIGluIEhUIHdpdGggdHdvIGFyZ3VtZW50 czoKK3RoZSBrZXkgb2YgdGhlIGFzc29jaWF0aW9uIGFuZCB0aGUgdmFsdWUgb2YgdGhlIGFzc29j aWF0aW9uLiBUaGUgdmFsdWVzCityZXR1cm5lZCBieSB0aGUgaW52b2NhdGlvbnMgb2YgUFJPQyBh cmUgYWNjdW11bGF0ZWQgaW50byBhIGxpc3QsIHdoaWNoCitpcyByZXR1cm5lZC4iCisgIChoYXNo LW1hcC0+bGlzdCBwcm9jIChodC1yZWFsLXRhYmxlIGh0KSkpCisKKzs7OyBXaXRoIHRoaXMgcGFy dGljdWxhciBpbXBsZW1lbnRhdGlvbiwgdGhlIHByb2MgY2FuIHNhZmVseSBtdXRhdGUgaHQuCis7 OzsgVGhhdCBwcm9wZXJ0eSBpcyBub3QgZ3VhcmFudGVlZCBieSB0aGUgc3BlY2lmaWNhdGlvbiwg YnV0IGNhbiBiZQorOzs7IHJlbGllZCB1cG9uIGJ5IHByb2NlZHVyZXMgZGVmaW5lZCBpbiB0aGlz IGZpbGUuCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtZm9yLWVhY2ggcHJvYyBodCkKKyAgIkNhbGxz IFBST0Mgd2l0aCBlYWNoIGtleSBhbmQgdmFsdWUgYXMgdHdvIGFyZ3VtZW50cy4gUmV0dXJucyBh bgordW5zcGVjaWZpZWQgdmFsdWUuIgorICAoaGFzaC1mb3ItZWFjaCBwcm9jIChodC1yZWFsLXRh YmxlIGh0KSkpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtbWFwISBwcm9jIGh0KQorICAiU2lnbmFs cyBhbiBlcnJvciBpZiBIVCBpcyBpbW11dGFibGUuIE90aGVyd2lzZSwgY2FsbHMgUFJPQyBmb3Ig ZXZlcnkKK2Fzc29jaWF0aW9uIGluIEhUIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIGtleSBvZiB0 aGUgYXNzb2NpYXRpb24gYW5kIHRoZQordmFsdWUgb2YgdGhlIGFzc29jaWF0aW9uLiBUaGUgdmFs dWUgcmV0dXJuZWQgYnkgUFJPQyBpcyB1c2VkIHRvIHVwZGF0ZQordGhlIHZhbHVlIG9mIHRoZSBh c3NvY2lhdGlvbi4gUmV0dXJuIGFuIHVuc3BlY2lmaWVkIHZhbHVlLiIKKyAgKGFzc2VydC1tdXRh YmxlIGh0KQorICAoaWYgKGh0LXdlYWtuZXNzIGh0KQorICAgICAgKHdpdGgtaGFzaHgtdmFsdWVz IChoIGEgcmVhbC10YWJsZSkgaHQKKyAgICAgICAgKGhhc2gtZm9yLWVhY2ggKGxhbWJkYSAoa2V5 IHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJs ZSBrZXkgKHByb2Mga2V5IHZhbCkpKQorICAgICAgICAgICAgICAgICAgICAgICByZWFsLXRhYmxl KSkKKyAgICAgIChsZXQgKChyZWFsLXRhYmxlIChodC1yZWFsLXRhYmxlIGh0KSkpCisgICAgICAg IChoYXNoLWZvci1lYWNoLWhhbmRsZSAobGFtYmRhIChoYW5kbGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsZXQgKChrZXkgKGNhciBoYW5kbGUpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodmFsIChjZHIgaGFuZGxlKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAocHJvYyBrZXkgdmFsKSkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbC10YWJsZSkpKSkKKworKGRlZmluZSAo aGFzaC10YWJsZS1mb2xkIHByb2MgaW5pdCBodCkKKyAgIkNhbGxzIFBST0MgZm9yIGV2ZXJ5IGFz c29jaWF0aW9uIGluIEhUIHdpdGggdGhyZWUgYXJndW1lbnRzOiB0aGUga2V5CitvZiB0aGUgYXNz b2NpYXRpb24sIHRoZSB2YWx1ZSBvZiB0aGUgYXNzb2NpYXRpb24sIGFuZCBhbiBhY2N1bXVsYXRl ZAordmFsdWUgVkFMLiBWQUwgaXMgU0VFRCBmb3IgdGhlIGZpcnN0IGludm9jYXRpb24gb2YgcHJv Y2VkdXJlLCBhbmQgZm9yCitzdWJzZXF1ZW50IGludm9jYXRpb25zIG9mIFBST0MsIHRoZSByZXR1 cm5lZCB2YWx1ZSBvZiB0aGUgcHJldmlvdXMKK2ludm9jYXRpb24uIFRoZSB2YWx1ZSByZXR1cm5l ZCBieSBIQVNILVRBQkxFLUZPTEQgaXMgdGhlIHJldHVybiB2YWx1ZSBvZgordGhlIGxhc3QgaW52 b2NhdGlvbiBvZiBQUk9DLiIKKyAgKGhhc2gtZm9sZCBwcm9jIGluaXQgKGh0LXJlYWwtdGFibGUg aHQpKSkKKworKGRlZmluZSAoaGFzaC10YWJsZS1wcnVuZSEgcHJvYyBodCkKKyAgIklmIEhUIGlz IGltbXV0YWJsZSwgc2lnbmFscyBhbiBlcnJvci4gT3RoZXJ3aXNlLCBjYWxscyBQUk9DIGZvciBl dmVyeQorYXNzb2NpYXRpb24gaW4gaGFzaC10YWJsZSB3aXRoIHR3byBhcmd1bWVudHMsIHRoZSBr ZXkgYW5kIHRoZSB2YWx1ZSBvZgordGhlIGFzc29jaWF0aW9uLCBhbmQgcmVtb3ZlcyBhbGwgYXNz b2NpYXRpb25zIGZyb20gaGFzaC10YWJsZSBmb3Igd2hpY2gKK1BST0MgcmV0dXJucyB0cnVlLiBS ZXR1cm5zIGFuIHVuc3BlY2lmaWVkIHZhbHVlLiIKKyAgKGFzc2VydC1tdXRhYmxlIGh0KQorICAo d2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAorICAgIChoYXNoLWZvci1lYWNo IChsYW1iZGEgKGtleSB2YWwpCisgICAgICAgICAgICAgICAgICAgICAoaWYgKHByb2Mga2V5IHZh bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgtcmVtb3ZlISBoIGEgcmVhbC10YWJs ZSBrZXkpKSkKKyAgICAgICAgICAgICAgICAgICByZWFsLXRhYmxlKSkpCisKKwwKKzs7OyBDb3B5 aW5nIGFuZCBjb252ZXJzaW9uLgorCisoZGVmaW5lKiAoaGFzaC10YWJsZS1jb3B5IGh0ICM6a2V5 IChtdXRhYmxlIChoYXNoLXRhYmxlLW11dGFibGU/IGh0KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNhcGFjaXR5IChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAod2Vha25lc3MgKGhhc2gtdGFibGUtd2Vha25lc3MgaHQpKSkKKyAgIlJldHVybnMg YSBuZXdseSBhbGxvY2F0ZWQgaGFzaCB0YWJsZSB3aXRoIHRoZSBhc3NvY2lhdGlvbnMgYXMgSFQg YW5kCitwcm9wZXJ0aWVzIGFzIGdpdmVuIGJ5IGtleXdvcmQgYXJndW1lbnRzLCB3aGljaCBkZWZh dWx0IHRvIEhUCitwcm9wZXJ0aWVzLiBJZiBNVVRBQkxFIGlzIHRydWUsIHRoZSBuZXcgaGFzaCB0 YWJsZSBpcyBtdXRhYmxlLAorb3RoZXJ3aXNlLCBpdCBpcyBpbW11dGFibGUuIgorICAod2l0aC1o YXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAorICAgIChsZXQgKChuZXctcmVhbC10YWJs ZSAoKGd1aWxlLWh0LWN0b3Igd2Vha25lc3MpIGNhcGFjaXR5KSkKKyAgICAgICAgICAoc2l6ZSAw KSkKKyAgICAgIChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGtleSB2YWwpCisgICAgICAgICAgICAg ICAgICAgICAgIChoYXNoeC1zZXQhIGggYSBuZXctcmVhbC10YWJsZSBrZXkgdmFsKQorICAgICAg ICAgICAgICAgICAgICAgICAoc2V0ISBzaXplICgrIDEgc2l6ZSkpKQorICAgICAgICAgICAgICAg ICAgICAgcmVhbC10YWJsZSkKKyAgICAgIDs7IEFyZ3VtZW50czogcmVhbC10YWJsZSBoYXNoLWZ1 bmN0aW9uIGFzc29jaWF0b3IKKyAgICAgIDs7ICAgICAgICAgICAgd2Vha25lc3MgbXV0YWJsZT8g c2l6ZSBlcXVpdmFsZW5jZS1mdW5jdGlvbiBvcmlnLWhhc2gtZnVuY3Rpb24KKyAgICAgIChtYWtl LWdlbmVyaWMtaGFzaC10YWJsZSBuZXctcmVhbC10YWJsZSBoIGEgd2Vha25lc3MgKGFuZCBtdXRh YmxlICN0KSBzaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2gtdGFibGUt ZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbiBodCkpKSkpCisKKyhkZWZpbmUqIChoYXNoLXRhYmxl LWVtcHR5LWNvcHkgaHQgIzprZXkgKG11dGFibGUgI3QpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjYXBhY2l0eSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo d2Vha25lc3MgKGhhc2gtdGFibGUtd2Vha25lc3MgaHQpKSkKKyAgIlJldHVybnMgYSBuZXdseSBh bGxvY2F0ZWQgbXV0YWJsZSBoYXNoIHRhYmxlIHdpdGggdGhlIHNhbWUgcHJvcGVydGllcworYXMg SFQsIGJ1dCB3aXRoIG5vIGFzc29jaWF0aW9ucy4iCisgICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBh IHJlYWwtdGFibGUpIGh0CisgICAgKGxldCAoKG5ldy1yZWFsLXRhYmxlICgoZ3VpbGUtaHQtY3Rv ciB3ZWFrbmVzcykgY2FwYWNpdHkpKSkKKyAgICAgIDs7IEFyZ3VtZW50czogcmVhbC10YWJsZSBo YXNoLWZ1bmN0aW9uIGFzc29jaWF0b3IKKyAgICAgIDs7ICAgICAgICAgICAgd2Vha25lc3MgbXV0 YWJsZT8gc2l6ZSBlcXVpdmFsZW5jZS1mdW5jdGlvbiBvcmlnLWhhc2gtZnVuY3Rpb24KKyAgICAg IChtYWtlLWdlbmVyaWMtaGFzaC10YWJsZSBuZXctcmVhbC10YWJsZSBoIGEgd2Vha25lc3MgKGFu ZCBtdXRhYmxlICN0KSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2gtdGFi bGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbiBodCkpKSkpCisKKyhkZWZpbmUgKGhhc2gtdGFi bGUtPmFsaXN0IGh0KQorICAiUmV0dXJucyBhbiBhbGlzdCB3aXRoIHRoZSBzYW1lIGFzc29jaWF0 aW9ucyBhcyBoYXNoLXRhYmxlIGluIGFuCit1bnNwZWNpZmllZCBvcmRlci4iCisgIChoYXNoLW1h cC0+bGlzdCBjb25zIChodC1yZWFsLXRhYmxlIGh0KSkpCisKKwwKKzs7OyBIYXNoIHRhYmxlcyBh cyBzZXRzLgorCisoZGVmaW5lIChoYXNoLXRhYmxlLXVuaW9uISBodDEgaHQyKQorICAiSWYgSFQx IGlzIGltbXV0YWJsZSwgc2lnbmFscyBhbiBlcnJvci4gT3RoZXJ3aXNlLCBhZGRzIHRoZSBhc3Nv Y2lhdGlvbnMKK29mIEhUMiB0byBIVDEgYW5kIHJldHVybiBIVDEuIElmIGEga2V5IGFwcGVhcnMg aW4gYm90aCBoYXNoIHRhYmxlcywgaXRzCit2YWx1ZSBpcyBzZXQgdG8gdGhlIHZhbHVlIGFwcGVh cmluZyBpbiBIVDEuIgorICAoYXNzZXJ0LW11dGFibGUgaHQxKQorICAoaGFzaC1mb3ItZWFjaCAo bGFtYmRhIChrZXkyIHZhbDIpCisgICAgICAgICAgICAgICAgICAgKGhhc2gtdGFibGUtaW50ZXJu IS9kZWZhdWx0IGh0MSBrZXkyIHZhbDIpKQorICAgICAgICAgICAgICAgICAoaHQtcmVhbC10YWJs ZSBodDIpKQorICBodDEpCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtaW50ZXJzZWN0aW9uISBodDEg aHQyKQorICAiSWYgSFQxIGlzIGltbXV0YWJsZSwgc2lnbmFscyBhbiBlcnJvci4gT3RoZXJ3aXNl LCBkZWxldGVzIHRoZQorYXNzb2NpYXRpb25zIGZyb20gSFQgd2hvc2Uga2V5cyBkb24ndCBhbHNv IGFwcGVhciBpbiBIVDIgYW5kIHJldHVybnMKK0hUMS4iCisgIChhc3NlcnQtbXV0YWJsZSBodDEp CisgIChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGtleTEgdmFsMSkKKyAgICAgICAgICAgICAgICAg ICAoaWYgKG5vdCAoaGFzaC10YWJsZS1jb250YWlucz8gaHQyIGtleTEpKQorICAgICAgICAgICAg ICAgICAgICAgICAoaGFzaC10YWJsZS1kZWxldGUhIGh0MSBrZXkxKSkpCisgICAgICAgICAgICAg ICAgIChodC1yZWFsLXRhYmxlIGh0MSkpCisgIGh0MSkKKworKGRlZmluZSAoaGFzaC10YWJsZS1k aWZmZXJlbmNlISBodDEgaHQyKQorICAiSWYgSFQxIGlzIGltbXV0YWJsZSwgc2lnbmFscyBhbiBl cnJvci4gT3RoZXJ3aXNlLCBkZWxldGVzIHRoZQorYXNzb2NpYXRpb25zIG9mIEhUMSB3aG9zZSBr ZXlzIGFyZSBhbHNvIHByZXNlbnQgaW4gSFQyIGFuZCByZXR1cm5zIEhUMS4iCisgIChhc3NlcnQt bXV0YWJsZSBodDEpCisgIChoYXNoLWZvci1lYWNoIChsYW1iZGEgKGtleTEgdmFsMSkKKyAgICAg ICAgICAgICAgICAgICAoaWYgKGhhc2gtdGFibGUtY29udGFpbnM/IGh0MiBrZXkxKQorICAgICAg ICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1kZWxldGUhIGh0MSBrZXkxKSkpCisgICAgICAg ICAgICAgICAgIChodC1yZWFsLXRhYmxlIGh0MSkpCisgIGh0MSkKKworKGRlZmluZSAoaGFzaC10 YWJsZS14b3IhIGh0MSBodDIpCisgICJJZiBIVDEgaXMgaW1tdXRhYmxlLCBzaWduYWxzIGFuIGVy cm9yLiBPdGhlcndpc2UsIGRlbGV0ZXMgdGhlCithc3NvY2lhdGlvbnMgb2YgSFQxIHdob3NlIGtl eXMgYXJlIGFsc28gcHJlc2VudCBpbiBIVDIsIGFuZCB0aGVuIGFkZHMKK3RoZSBhc3NvY2lhdGlv bnMgb2YgSFQyIHdob3NlIGtleXMgYXJlIG5vdCBwcmVzZW50IGluIEhUMSB0bworSFQxLiBSZXR1 cm5zIEhUMS4iCisgIChhc3NlcnQtbXV0YWJsZSBodDEpCisgIChoYXNoLWZvci1lYWNoIChsYW1i ZGEgKGtleTIgdmFsMikKKyAgICAgICAgICAgICAgICAgICAoaWYgKGhhc2gtdGFibGUtY29udGFp bnM/IGh0MSBrZXkyKQorICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1kZWxldGUh IGh0MSBrZXkyKQorICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1zZXQhIGh0MSBr ZXkyIHZhbDIpKSkKKyAgICAgICAgICAgICAgICAgKGh0LXJlYWwtdGFibGUgaHQyKSkKKyAgaHQx KQorCis7OyBlb2YKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0gYi90ZXN0LXN1 aXRlL01ha2VmaWxlLmFtCmluZGV4IDA5MzRkYmIzNC4uZTE1NDYwMmE3IDEwMDY0NAotLS0gYS90 ZXN0LXN1aXRlL01ha2VmaWxlLmFtCisrKyBiL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0KQEAgLTYz LDYgKzYzLDcgQEAgU0NNX1RFU1RTID0gdGVzdHMvMDAtaW5pdGlhbC1lbnYudGVzdAkJXAogCSAg ICB0ZXN0cy9mdHcudGVzdAkJCVwKIAkgICAgdGVzdHMvZnV0dXJlLnRlc3QJCQlcCiAJICAgIHRl c3RzL2djLnRlc3QJCQlcCisgICAgICAgICAgICB0ZXN0cy9nZW5lcmljLWhhc2gtdGFibGVzLnRl c3QgICAgICBcCiAJICAgIHRlc3RzL2dldG9wdC1sb25nLnRlc3QJCVwKIAkgICAgdGVzdHMvZ29v cHMudGVzdAkJCVwKIAkgICAgdGVzdHMvZ3VhcmRpYW5zLnRlc3QJCVwKZGlmZiAtLWdpdCBhL3Rl c3Qtc3VpdGUvdGVzdHMvZ2VuZXJpYy1oYXNoLXRhYmxlcy50ZXN0IGIvdGVzdC1zdWl0ZS90ZXN0 cy9nZW5lcmljLWhhc2gtdGFibGVzLnRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwLi40OTRjYmY3MGEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0LXN1aXRlL3Rlc3RzL2dl bmVyaWMtaGFzaC10YWJsZXMudGVzdApAQCAtMCwwICsxLDQxNSBAQAorOzs7OyBzcmZpLTY5LnRl c3QgLS0tIFRlc3Qgc3VpdGUgZm9yIFNSRkkgNjkgLSotIHNjaGVtZSAtKi0KKzs7OzsKKzs7Ozsg CUNvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKzs7OzsK Kzs7OzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorOzs7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCis7Ozs7IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorOzs7OyB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7Ozs7Cis7Ozs7IFRo aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorOzs7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorOzs7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorOzs7OyBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7OworOzs7OyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7Ozs7IExp Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKKzs7OzsgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorCisoZGVmaW5lLW1vZHVsZSAodGVz dC1nZW5lcmljLWhhc2gtdGFibGVzKQorICAjOnVzZS1tb2R1bGUgKHRlc3Qtc3VpdGUgbGliKQor ICAjOnVzZS1tb2R1bGUgKGljZS05IGdlbmVyaWMtaGFzaC10YWJsZXMpCisgICM6dXNlLW1vZHVs ZSAoc3JmaSBzcmZpLTEpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTgpCisgICM6dXNlLW1v ZHVsZSAoc3JmaSBzcmZpLTI2KSkKKworKGRlZmluZSAoc3RyaW5nLWNpLWFzc29jLWVxdWFsPyBs ZWZ0IHJpZ2h0KQorICAiQW5zd2VyIHdoZXRoZXIgTEVGVCBhbmQgUklHSFQgYXJlIGVxdWFsLCBi ZWluZyBhc3NvY2lhdGlvbnMgb2YKK2Nhc2UtaW5zZW5zaXRpdmUgc3RyaW5ncyB0byBgZXF1YWw/ Jy10ZXN0ZWQgdmFsdWVzLiIKKyAgKGFuZCAoc3RyaW5nLWNpPT8gKGNhciBsZWZ0KSAoY2FyIHJp Z2h0KSkKKyAgICAgICAoZXF1YWw/IChjZHIgbGVmdCkgKGNkciByaWdodCkpKSkKKworKGRlZmlu ZS1zeW50YXggd2l0aC1lbHQtaW4tbGlzdAorICAoc3ludGF4LXJ1bGVzICgpCisgICAgKCh3aXRo LWVsdC1pbi1saXN0IGFyZyBhcmctbGlzdCBleHByIC4uLikKKyAgICAgKGxldCBsb29wICgoYXJn LWxpc3QqIGFyZy1saXN0KSkKKyAgICAgICAob3IgKG51bGw/IGFyZy1saXN0KikKKyAgICAgICAg ICAgKGFuZCAobGV0ICgoYXJnIChjYXIgYXJnLWxpc3QqKSkpCisgICAgICAgICAgICAgICAgICBl eHByIC4uLikKKyAgICAgICAgICAgICAgICAobG9vcCAoY2RyIGFyZy1saXN0KikpKSkpKSkpCisK KyhkZWZpbmUgKHRlc3Qtc3RyLXdlYWtuZXNzIHN0ciB3ZWFrbmVzcykKKyAgKGlmIChub3Qgd2Vh a25lc3MpIHN0ciAoZm9ybWF0ICNmICJ+YSAod2Vha25lc3M6IH5hKSIgc3RyIHdlYWtuZXNzKSkp CisKKyh3aXRoLXRlc3QtcHJlZml4ICJnZW5lcmljLWhhc2gtdGFibGVzIgorCisgIChwYXNzLWlm LWV4Y2VwdGlvbiAiYmFkIHdlYWtuZXNzIGFyZyB0byBtaHQgc2lnbmFscyBhbiBlcnJvciIKKyAg ICAgICcobWlzYy1lcnJvciAuICJeSW52YWxpZCBoYXNoIHRhYmxlIHdlYWtuZXNzIikKKyAgICAo bWFrZS1oYXNoLXRhYmxlIGVxdWFsPyBoYXNoICM6d2Vha25lc3MgJ3dlYWsta2V5LW9yLXZhbHVl KSkKKworICAocGFzcy1pZi1leGNlcHRpb24gInVuc3VwcG9ydGVkIHdlYWtuZXNzIGFyZyB0byBt aHQgc2lnbmFscyBhbiBlcnJvciIKKyAgICAgICcobWlzYy1lcnJvciAuICJeVW5zdXBwb3J0ZWQg aGFzaCB0YWJsZSB3ZWFrbmVzcyIpCisgICAgKG1ha2UtaGFzaC10YWJsZSBlcXVhbD8gaGFzaCAj OndlYWtuZXNzICdlcGhlbWVyYWwta2V5KSkKKworICAocGFzcy1pZiAiY2FuIHVzZSBhbGwgYXJn dW1lbnRzLCBpbmNsdWRpbmcgc2l6ZSIKKyAgICAoaGFzaC10YWJsZT8gKG1ha2UtaGFzaC10YWJs ZSBlcXVhbD8gaGFzaCAjOndlYWtuZXNzICd3ZWFrLWtleSAzMSkpKQorCisgIDs7IFRoZSBmb2xs b3dpbmcgdGVzdHMgYXJlIGRvbmUgb25jZSB3aXRoIGVhY2gga2luZCBvZiB3ZWFrbmVzcworICAo d2l0aC1lbHQtaW4tbGlzdCB3ZWFrbmVzcyAobGlzdCAjZiAnd2Vhay1rZXkgJ3dlYWstdmFsdWUg J3dlYWsta2V5LWFuZC12YWx1ZSkKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgInJl ZmxlY3RpdmUgcXVlcmllcyBmdW5jdGlvbiBwcm9wZXJseSIgd2Vha25lc3MpCisgICAgICAobGV0 ICgoaHQgKG1ha2UtaGFzaC10YWJsZSBlcXY/ICNmICM6d2Vha25lc3Mgd2Vha25lc3MpKSkKKyAg ICAgICAgKGFuZCAoaGFzaC10YWJsZS1tdXRhYmxlPyBodCkKKyAgICAgICAgICAgICAoZXE/IGVx dj8gKGhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQpKQorICAgICAgICAgICAgIChl cT8gaGFzaC1ieS12YWx1ZSAoaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uIGh0KSkKKyAgICAgICAg ICAgICAoZXE/IHdlYWtuZXNzIChoYXNoLXRhYmxlLXdlYWtuZXNzIGh0KSkKKyAgICAgICAgICAg ICAoZXF1YWw/IChsaXN0IChoYXNoLXRhYmxlLWtleS13ZWFrbmVzcyBodCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLXZhbHVlLXdlYWtuZXNzIGh0KSkKKyAgICAgICAg ICAgICAgICAgICAgIChjYXNlIHdlYWtuZXNzCisgICAgICAgICAgICAgICAgICAgICAgICgoI2Yp ICcoI2YgI2YpKQorICAgICAgICAgICAgICAgICAgICAgICAoKHdlYWsta2V5KSAnKHdlYWsta2V5 cyAjZikpCisgICAgICAgICAgICAgICAgICAgICAgICgod2Vhay12YWx1ZSkgJygjZiB3ZWFrLXZh bHVlcykpCisgICAgICAgICAgICAgICAgICAgICAgICgod2Vhay1rZXktYW5kLXZhbHVlKSAnKHdl YWsta2V5cyB3ZWFrLXZhbHVlcykpKSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFr bmVzcyAiaGFzaC10YWJsZS1jb250YWlucz8gZnVuY3Rpb25zIHByb3Blcmx5IiB3ZWFrbmVzcykK KyAgICAgIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtu ZXNzKSkpCisgICAgICAgIChoYXNoLXRhYmxlLXNldC1zaW5nbGUhIGh0ICdhIDEpCisgICAgICAg IChhbmQgKGhhc2gtdGFibGUtY29udGFpbnM/IGh0ICdhKQorICAgICAgICAgICAgIChub3QgKGhh c2gtdGFibGUtY29udGFpbnM/IGh0ICdiKSkKKyAgICAgICAgICAgICAoYmVnaW4gKGhhc2gtdGFi bGUtc2V0LXNpbmdsZSEgaHQgJ2IgMSkKKyAgICAgICAgICAgICAgICAgICAgKGhhc2gtdGFibGUt Y29udGFpbnM/IGh0ICdiKSkKKyAgICAgICAgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtZGVsZXRl LXNpbmdsZSEgaHQgJ2EpCisgICAgICAgICAgICAgICAgICAgIChub3QgKGhhc2gtdGFibGUtY29u dGFpbnM/IGh0ICdhKSkpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgInNt YWxsIGFsaXN0PC0+aGFzaCB0YWJsZXMgcm91bmQtdHJpcCIgd2Vha25lc3MpCisgICAgICAobGV0 KiAoKHN0YXJ0LWFsaXN0ICcoKGEgLiAxKSAoYiAuIDIpIChjIC4gMykgKGEgLiA0MikpKQorICAg ICAgICAgICAgIChodCAoYWxpc3QtPmhhc2gtdGFibGUgc3RhcnQtYWxpc3QgZXE/ICNmICM6d2Vh a25lc3Mgd2Vha25lc3MpKQorICAgICAgICAgICAgIChlbmQtYWxpc3QgKGhhc2gtdGFibGUtPmFs aXN0IGh0KSkpCisgICAgICAgIChhbmQgKD0gMyAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAg ICAgICAgICAobHNldD0gZXF1YWw/IGVuZC1hbGlzdCAodGFrZSBzdGFydC1hbGlzdCAzKSkKKyAg ICAgICAgICAgICAoPSAxIChoYXNoLXRhYmxlLXJlZiBodCAnYSkpCisgICAgICAgICAgICAgKD0g MiAoaGFzaC10YWJsZS1yZWYgaHQgJ2IpKQorICAgICAgICAgICAgICg9IDMgKGhhc2gtdGFibGUt cmVmIGh0ICdjKSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAic3RyaW5n LWNpPT8gdGFibGVzIHdvcmsgYnkgZGVmYXVsdCIgd2Vha25lc3MpCisgICAgICAobGV0ICgoaHQg KGFsaXN0LT5oYXNoLXRhYmxlICcoKCJ4WSIgLiAyKSAoImFiYyIgLiA1NCkpIHN0cmluZy1jaT0/ ICNmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6d2Vha25lc3Mgd2Vha25l c3MpKSkKKyAgICAgICAgKGhhc2gtdGFibGUtc2V0ISBodCAiWFkiIDQyICJxcXEiIDEwMCkKKyAg ICAgICAgKGFuZCAoPSA1NCAoaGFzaC10YWJsZS1yZWYgaHQgIkFCYyIpKQorICAgICAgICAgICAg ICg9IDQyIChoYXNoLXRhYmxlLXJlZiBodCAieHkiKSkKKyAgICAgICAgICAgICAoPSAzIChoYXNo LXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgIChsc2V0PSBzdHJpbmctY2ktYXNzb2MtZXF1 YWw/CisgICAgICAgICAgICAgICAgICAgICcoKCJ4eSIgLiA0MikgKCJhYmMiIC4gNTQpICgicXFx IiAuIDEwMCkpCisgICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkp CisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImVtcHR5IGhhc2ggdGFibGVzIGFy ZSBlbXB0eSIgd2Vha25lc3MpCisgICAgICAobGV0ICgoaHQgKG1ha2UtaGFzaC10YWJsZSBlcT8g I2YgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoYW5kICg9IDAgKGhhc2gtdGFibGUt c2l6ZSBodCkpCisgICAgICAgICAgICAgKGhhc2gtdGFibGUtZW1wdHk/IGh0KQorICAgICAgICAg ICAgIChudWxsPyAoaGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpKQorCisgICAgKHBhc3MtaWYgKHRl c3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxlIGZ1bmN0aW9ucyBwcm9wZXJseSIgd2Vha25lc3Mp CisgICAgICAobGV0ICgoaHQgKGhhc2gtdGFibGUgKGxpc3QgZXE/ICNmICM6d2Vha25lc3Mgd2Vh a25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EgMSAnYiAyICdjIDMpKSkKKyAg ICAgICAgKGFuZCAoPSAzIChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgIChsc2V0 PSBlcXVhbD8gJygoYSAuIDEpIChiIC4gMikgKGMgLiAzKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0 KSkKKyAgICAgICAgICAgICAoZXE/IHdlYWtuZXNzIChoYXNoLXRhYmxlLXdlYWtuZXNzIGh0KSkK KyAgICAgICAgICAgICAobm90IChoYXNoLXRhYmxlLW11dGFibGU/IGh0KSkpKSkKKworICAgIChw YXNzLWlmLWV4Y2VwdGlvbgorICAgICAgICAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUg d2l0aCBlcXVpdmFsZW50IGtleXMgc2lnbmFscyBhbiBlcnJvciIgd2Vha25lc3MpCisgICAgICAg ICcobWlzYy1lcnJvciAuICJeVHdvIGVxdWl2YWxlbnQga2V5cyB3ZXJlIHByb3ZpZGVkIikKKyAg ICAgIChoYXNoLXRhYmxlIChsaXN0IHN0cmluZz0/ICNmICM6d2Vha25lc3Mgd2Vha25lc3MpCisg ICAgICAgICAgICAgICAgICAiYSIgMSAiYiIgMiAiYyIgMyAiYSIgNCkpCisKKyAgICAocGFzcy1p ZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtdW5mb2xkIGZ1bmN0aW9ucyBwcm9wZXJs eSIgd2Vha25lc3MpCisgICAgICAobGV0ICgoaHQgKGhhc2gtdGFibGUtdW5mb2xkIChsYW1iZGEg KGkpICg+PSBpIDUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRh IChpKSAodmFsdWVzIGkgKCogaSAxMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxKyAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdj8gI2YgIzp3 ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoYW5kICg9IDUgKGhhc2gtdGFibGUtc2l6ZSBo dCkpCisgICAgICAgICAgICAgKGVxPyB3ZWFrbmVzcyAoaGFzaC10YWJsZS13ZWFrbmVzcyBodCkp CisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFsPyAnKCgwIC4gMCkgKDEgLiAxMCkgKDIgLiAyMCkg KDMgLiAzMCkgKDQgLiA0MCkpCisgICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLT5hbGlz dCBodCkpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGU9 PyBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0MSAoaGFzaC10 YWJsZS11bmZvbGQgKGxhbWJkYSAoaSkgKD49IGkgNSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGFtYmRhIChpKSAodmFsdWVzIGkgKCogaSAxMCkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMSsgMAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXF2PyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkKKyAgICAgICAgICAgICho dDIgKGFsaXN0LT5oYXNoLXRhYmxlICcoKDAgLiAwKSAoMSAuIDEwKSAoMiAuIDIwKSAoMyAuIDMw KSAoNCAuIDQwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdj8gI2Yg Izp3ZWFrbmVzcyB3ZWFrbmVzcykpCisgICAgICAgICAgICAoaHQzIChhbGlzdC0+aGFzaC10YWJs ZSAnKCgwIC4gMCkgKDEgLiAxMCkgKDIgLiAyMCkgKDMgLiAzMCkgKDQgLiA0MCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVhbD8gI2YgIzp3ZWFrbmVzcyB3ZWFrbmVz cykpCisgICAgICAgICAgICAoaHQ0IChhbGlzdC0+aGFzaC10YWJsZSAnKCgwIC4gMTApICgxIC4g MTApICgyIC4gMjApICgzIC4gMzApICg0IC4gNDApKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXF2PyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkpCisgICAgICAgIChhbmQg KGhhc2gtdGFibGU9PyBlcXY/IGh0MSBodDIpCisgICAgICAgICAgICAgKG5vdCAoaGFzaC10YWJs ZT0/IGVxdj8gaHQxIGh0MykpCisgICAgICAgICAgICAgKG5vdCAoaGFzaC10YWJsZT0/IGVxdj8g aHQxIGh0NCkpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFsPyAnKCgwIC4gMCkgKDEgLiAxMCkg KDIgLiAyMCkgKDMgLiAzMCkgKDQgLiA0MCkpCisgICAgICAgICAgICAgICAgICAgIChoYXNoLXRh YmxlLT5hbGlzdCBodDMpKSkpKQorCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJo YXNoLXRhYmxlLXJlZiB1c2VzIGRlZmF1bHQiIHdlYWtuZXNzKQorICAgICAgKGVxdWFsPyAnKDQp CisgICAgICAgICAgICAgIChoYXNoLXRhYmxlLXJlZiAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAu IDEpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjOndlYWtuZXNzIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2IgKGN1dCBsaXN0ICgrIDIgMikpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25l c3MgImhhc2gtdGFibGUtcmVmL2RlZmF1bHQgdXNlcyBkZWZhdWx0IiB3ZWFrbmVzcykKKyAgICAg IChlcXVhbD8gJ2ZvbworICAgICAgICAgICAgICAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCAoYWxp c3QtPmhhc2gtdGFibGUgJygoYSAuIDEpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6d2Vha25lc3Mgd2Vha25lc3MpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiICdmb28pKSkKKworICAgIChw YXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1kZWxldGUhIGRlbGV0ZXMgcHJl c2VudCBhc3NvY3MsIGlnbm9yZXMgb3RoZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAu IDEpIChiIC4gMikpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkpCisgICAgICAgIChhbmQg KD0gMCAoaGFzaC10YWJsZS1kZWxldGUhIGh0ICdjKSkKKyAgICAgICAgICAgICAoPSAyIChoYXNo LXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgICg9IDEgKGhhc2gtdGFibGUtZGVsZXRlISBo dCAnYSkpCisgICAgICAgICAgICAgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAg ICAgICAobHNldD0gZXF1YWw/ICcoKGIgLiAyKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkK KworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1kZWxldGUhIGRl bGV0ZXMgc2V2ZXJhbCBrZXlzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWFr bmVzcykKKyAgICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEpIChiIC4g MikgKGQgLiA0KSAoZSAuIDUpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoYW5kICg9IDQgKGhhc2gtdGFi bGUtc2l6ZSBodCkpCisgICAgICAgICAgICAgKD0gMyAoaGFzaC10YWJsZS1kZWxldGUhIGh0ICdh ICdiICdjICdlKSkKKyAgICAgICAgICAgICAoPSAxIChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAg ICAgICAgICAgIChsc2V0PSBlcXVhbD8gJygoZCAuIDQpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQp KSkpKQorCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJhbGlzdC0+aGFzaC10YWJs ZSBkb2VzIG5vdCByZXF1aXJlIGxpbmVhciBzdGFjayBzcGFjZSIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd2Vha25lc3MpCisgICAgICAoZXF2PyA5OTk5OQorICAgICAgICAgICAg KGhhc2gtdGFibGUtcmVmCisgICAgICAgICAgICAgKGFsaXN0LT5oYXNoLXRhYmxlICh1bmZvbGQt cmlnaHQgKGN1dCA+PSA8PiAxMDAwMDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxhbWJkYSAocykgYCh4IC4gLHMpKSAxKyAwKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykKKyAgICAgICAgICAgICAneCkpKQorCisgICAgKHBhc3Mt aWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxlLXVwZGF0ZSEgbW9kaWZpZXMgZXhpc3Rp bmcgYmluZGluZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha25lc3MpCisg ICAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSkgZXE/ICNmICM6d2Vh a25lc3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKGhhc2gtdGFibGUtdXBkYXRlISBodCAnYSAxKykK KyAgICAgICAgKGhhc2gtdGFibGUtdXBkYXRlISBodCAnYSAoY3V0ICsgNCA8PikgKGxhbWJkYSAo KSA0MikpCisgICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAg ICAgICAobHNldD0gZXF1YWw/ICcoKGEgLiA2KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkK KworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS11cGRhdGUhIGNy ZWF0ZXMgbmV3IGJpbmRpbmcgd2hlbiBhcHByb3ByaWF0ZSIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgd2Vha25lc3MpCisgICAgICAobGV0ICgoaHQgKG1ha2UtaGFzaC10YWJsZSBl cT8gI2YgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoaGFzaC10YWJsZS11cGRhdGUh IGh0ICdiIDErIChsYW1iZGEgKCkgNDIpKQorICAgICAgICAoaGFzaC10YWJsZS11cGRhdGUhIGh0 ICdiIChjdXQgKyAxMCA8PikpCisgICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0 KSkKKyAgICAgICAgICAgICAobHNldD0gZXF1YWw/ICcoKGIgLiA1MykpIChoYXNoLXRhYmxlLT5h bGlzdCBodCkpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFi bGUtaW50ZXJuISBjcmVhdGVzIG5ldyBiaW5kaW5nIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIGVxPyAj ZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkpCisgICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1p bnRlcm4hIGh0ICdiIChjb25zdCAxKSkpCisgICAgICAgICAgICAgKD0gMSAoaGFzaC10YWJsZS1z aXplIGh0KSkKKyAgICAgICAgICAgICAobHNldD0gZXF1YWw/ICcoKGIgLiAxKSkgKGhhc2gtdGFi bGUtPmFsaXN0IGh0KSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFz aC10YWJsZS1pbnRlcm4hIGRvZXNuJ3QgbW9kaWZ5IGV4aXN0aW5nIGJpbmRpbmciCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0IChhbGlz dC0+aGFzaC10YWJsZSAnKChhIC4gMSkpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkpCisg ICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1pbnRlcm4hIGh0ICdhIChjb25zdCAyKSkpCisg ICAgICAgICAgICAgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgICAgICAobHNl dD0gZXF1YWw/ICcoKGEgLiAxKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkKKworICAgIChw YXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1wb3AhIGZ1bmN0aW9ucyBwcm9w ZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vha25lc3MpCisgICAgICAo bGV0KiAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/ICNmICM6 d2Vha25lc3Mgd2Vha25lc3MpKQorICAgICAgICAgICAgIChwb3BwZWQgKHJlY2VpdmUgKGtleSB2 YWwpIChoYXNoLXRhYmxlLXBvcCEgaHQpIChsaXN0IGtleSB2YWwpKSkpCisgICAgICAgIChvciAo YW5kIChlcXVhbD8gJyhhIDEpIHBvcHBlZCkKKyAgICAgICAgICAgICAgICAgKGVxdWFsPyAnKChi IC4gMikpIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKQorICAgICAgICAgICAgKGFuZCAoZXF1YWw/ ICcoYiAyKSBwb3BwZWQpCisgICAgICAgICAgICAgICAgIChlcXVhbD8gJygoYSAuIDEpKSAoaGFz aC10YWJsZS0+YWxpc3QgaHQpKSkpKSkKKworICAgIChwYXNzLWlmLWV4Y2VwdGlvbgorICAgICAg ICAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtcG9wISB3aXRoIGVtcHR5IGhhc2ggdGFi bGUgc2lnbmFscyBhbiBlcnJvciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtuZXNz KQorICAgICAgICAnKG1pc2MtZXJyb3IgLiAiXkhhc2ggdGFibGUgaXMgZW1wdHkiKQorICAgICAg KGhhc2gtdGFibGUtcG9wISAobWFrZS1oYXNoLXRhYmxlIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtu ZXNzKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtY2xl YXIhIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg d2Vha25lc3MpCisgICAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAo YiAuIDIpKSBlcT8gI2YgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoaGFzaC10YWJs ZS1jbGVhciEgaHQpCisgICAgICAgIChhbmQgKD0gMCAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAg ICAgICAgICAgICAoaGFzaC10YWJsZS1lbXB0eT8gaHQpCisgICAgICAgICAgICAgKG51bGw/ICho YXNoLXRhYmxlLT5hbGlzdCBodCkpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25l c3MgImhhc2gtdGFibGUtZmluZCBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQorICAgICAg KGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSAoYyAuIDMpKSBl cT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVzcyB3ZWFr bmVzcykpKQorICAgICAgICAoYW5kIChlcT8gJ2IgKGhhc2gtdGFibGUtZmluZCAobGFtYmRhIChr ZXkgdmFsKSAoYW5kIChldmVuPyB2YWwpIGtleSkpIGh0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgI2YpKSkKKyAgICAgICAgICAgICAobm90IChoYXNo LXRhYmxlLWZpbmQgKGxhbWJkYSAoa2V5IHZhbCkgKD0gdmFsIDQpKSBodAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpICNmKSkpKSkpCisKKyAgICAocGFzcy1p ZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtY291bnQgZnVuY3Rpb25zIHByb3Blcmx5 IiB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEp IChiIC4gMikgKGMgLiAzKSAoZCAuIDQpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoYW5kICg9IDIgKGhh c2gtdGFibGUtY291bnQgKGxhbWJkYSAoa2V5IHZhbCkgKGV2ZW4/IHZhbCkpIGh0KSkKKyAgICAg ICAgICAgICAoPSAxIChoYXNoLXRhYmxlLWNvdW50IChsYW1iZGEgKGtleSB2YWwpICg9IHZhbCA0 KSkgaHQpKQorICAgICAgICAgICAgICg9IDAgKGhhc2gtdGFibGUtY291bnQgKGxhbWJkYSAoa2V5 IHZhbCkgKD0gdmFsIDUpKSBodCkpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25l c3MgImhhc2ggdGFibGUga2V5cyBhbmQgdmFsdWVzIGFyZSBjb3JyZWN0IiB3ZWFrbmVzcykKKyAg ICAgIChsZXQgKChodCAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEpIChiIC4gMikgKGMgLiAz KSAoZCAuIDQpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3 ZWFrbmVzcyB3ZWFrbmVzcykpKQorICAgICAgICAoYW5kIChsc2V0PSBlcT8gJyhhIGIgYyBkKSAo aGFzaC10YWJsZS1rZXlzIGh0KSkKKyAgICAgICAgICAgICAobHNldD0gPSAgICcoMSAyIDMgNCkg KGhhc2gtdGFibGUtdmFsdWVzIGh0KSkKKyAgICAgICAgICAgICAocmVjZWl2ZSAoa2V5cyB2YWxz KSAoaGFzaC10YWJsZS1lbnRyaWVzIGh0KQorICAgICAgICAgICAgICAgKGFuZCAobHNldD0gZXE/ ICcoYSBiIGMgZCkga2V5cykKKyAgICAgICAgICAgICAgICAgICAgKGxzZXQ9ID0gICAnKDEgMiAz IDQpIHZhbHMpKSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaCB0 YWJsZSBrZXkgYW5kIHZhbHVlIHZlY3RvcnMgYXJlIGNvcnJlY3QiIHdlYWtuZXNzKQorICAgICAg KGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSAoYyAuIDMpIChk IC4gNCkpIGVxPyAjZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOndlYWtu ZXNzIHdlYWtuZXNzKSkpCisgICAgICAgIChhbmQgKGxzZXQ9IGVxPyAnKGEgYiBjIGQpICh2ZWN0 b3ItPmxpc3QgKGhhc2gtdGFibGUta2V5LXZlY3RvciBodCkpKQorICAgICAgICAgICAgIChsc2V0 PSA9ICAgJygxIDIgMyA0KSAodmVjdG9yLT5saXN0IChoYXNoLXRhYmxlLXZhbHVlLXZlY3RvciBo dCkpKQorICAgICAgICAgICAgIChyZWNlaXZlIChrZXlzIHZhbHMpIChoYXNoLXRhYmxlLWVudHJ5 LXZlY3RvcnMgaHQpCisgICAgICAgICAgICAgICAoYW5kIChsc2V0PSBlcT8gJyhhIGIgYyBkKSAo dmVjdG9yLT5saXN0IGtleXMpKQorICAgICAgICAgICAgICAgICAgICAobHNldD0gPSAgICcoMSAy IDMgNCkgKHZlY3Rvci0+bGlzdCB2YWxzKSkpKSkpKQorCisgICAgKHBhc3MtaWYgKHRlc3Qtc3Ry LXdlYWtuZXNzICJoYXNoLXRhYmxlLW1hcCBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQor ICAgICAgKGxldCogKChodDEgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAuIDIpKSBl cT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOndlYWtuZXNzIHdl YWtuZXNzKSkKKyAgICAgICAgICAgICAoaHQyIChoYXNoLXRhYmxlLW1hcCAxKyBodDEgZXE/ICNm KSkpCisgICAgICAgIChhbmQgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0MikpCisgICAgICAgICAg ICAgKGxzZXQ9IGVxdWFsPyAnKChhIC4gMikgKGIgLiAzKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0 MikpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gtdGFibGUtbWFw ISBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0IChhbGlzdC0+ aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/ICNmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICM6d2Vha25lc3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKGhhc2gtdGFi bGUtbWFwISAobGFtYmRhIChrZXkgdmFsKSAoKyB2YWwgMSkpIGh0KQorICAgICAgICAoYW5kICg9 IDIgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFsPyAnKChh IC4gMikgKGIgLiAzKSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0KSkpKSkKKworICAgIChwYXNzLWlm ICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1mb3ItZWFjaCBpZ25vcmVzIHJldHVybiB2 YWx1ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtuZXNzKQorICAgICAg KGxldCAoKGh0IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSAoYyAuIDMpKSBl cT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVzcyB3ZWFr bmVzcykpKQorICAgICAgICAoZm9yLWVhY2ggKGN1dCBoYXNoLXRhYmxlLWZvci1lYWNoIDw+IGh0 KQorICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhbWJkYSAoayB2KSAodmFsdWVzKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGsgdikgKHZhbHVlcyAxIDIgMykpKSkKKyAgICAg ICAgI3QpKQorCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxlLW1h cC0+bGlzdCBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0IChh bGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/ICNmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICM6d2Vha25lc3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKGFu ZCAobHNldD0gZXE/ICcoYSBiKSAoaGFzaC10YWJsZS1tYXAtPmxpc3QgKGxhbWJkYSAoa2V5IHZh bCkga2V5KSBodCkpCisgICAgICAgICAgICAgKGxzZXQ9ID0gJygxIDIpIChoYXNoLXRhYmxlLW1h cC0+bGlzdCAobGFtYmRhIChrZXkgdmFsKSB2YWwpIGh0KSkpKSkKKworICAgIChwYXNzLWlmICh0 ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1mb2xkIGZ1bmN0aW9ucyBwcm9wZXJseSIgd2Vh a25lc3MpCisgICAgICAobGV0ICgoaHQgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAu IDIpKSBlcT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVz cyB3ZWFrbmVzcykpKQorICAgICAgICAoPSAzIChoYXNoLXRhYmxlLWZvbGQgKGxhbWJkYSAoa2V5 IHZhbCBhY2MpICgrIHZhbCBhY2MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCBo dCkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1wcnVu ZSEgZnVuY3Rpb25zIHByb3Blcmx5IiB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAoYWxpc3Qt Pmhhc2gtdGFibGUgJygoYSAuIDEpIChiIC4gMikgKGMgLiAzKSAoZCAuIDQpKSBlcT8gI2YKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpKQor ICAgICAgICAoaGFzaC10YWJsZS1wcnVuZSEgKGxhbWJkYSAoa2V5IHZhbCkgKGV2ZW4/IHZhbCkp IGh0KQorICAgICAgICAobHNldD0gZXF1YWw/ICcoKGEgLiAxKSAoYyAuIDMpKSAoaGFzaC10YWJs ZS0+YWxpc3QgaHQpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImhhc2gt dGFibGUtY29weSBmdW5jdGlvbnMgcHJvcGVybHkiIHdlYWtuZXNzKQorICAgICAgKGxldCAoKGh0 IChoYXNoLXRhYmxlLWNvcHkgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAuIDIpKSBl cT8gI2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjOndlYWtuZXNzIHdlYWtuZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IzptdXRhYmxlICN0KSkpCisgICAgICAgIChhbmQgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0KSkK KyAgICAgICAgICAgICAobHNldD0gZXF1YWw/ICcoKGEgLiAxKSAoYiAuIDIpKSAoaGFzaC10YWJs ZS0+YWxpc3QgaHQpKQorICAgICAgICAgICAgIChoYXNoLXRhYmxlLW11dGFibGU/IGh0KSkpKQor CisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxlLXVuaW9uISBmdW5j dGlvbnMgcHJvcGVybHkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtuZXNz KQorICAgICAgKGxldCogKChodDEgKGFsaXN0LT5oYXNoLXRhYmxlICcoKGEgLiAxKSAoYiAuIDIp KSBlcT8gI2YgIzp3ZWFrbmVzcyB3ZWFrbmVzcykpCisgICAgICAgICAgICAgKGh0MiAoYWxpc3Qt Pmhhc2gtdGFibGUgJygoYiAuIDMpIChjIC4gNCkpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNz KSkpCisgICAgICAgIChzZXQhIGh0MSAoaGFzaC10YWJsZS11bmlvbiEgaHQxIGh0MikpCisgICAg ICAgIChhbmQgKD0gMyAoaGFzaC10YWJsZS1zaXplIGh0MSkpCisgICAgICAgICAgICAgKD0gMiAo aGFzaC10YWJsZS1zaXplIGh0MikpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFsPyAnKChhIC4g MSkgKGIgLiAyKSAoYyAuIDQpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQxKSkKKyAgICAgICAgICAg ICAobHNldD0gZXF1YWw/ICcoKGIgLiAzKSAoYyAuIDQpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQy KSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJsZS1pbnRl cnNlY3Rpb24hIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2Vha25lc3MpCisgICAgICAobGV0KiAoKGh0MSAoYWxpc3QtPmhhc2gtdGFibGUgJygo YSAuIDEpIChiIC4gMikpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkKKyAgICAgICAgICAg ICAoaHQyIChhbGlzdC0+aGFzaC10YWJsZSAnKChiIC4gMykgKGMgLiA0KSkgZXE/ICNmICM6d2Vh a25lc3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKHNldCEgaHQxIChoYXNoLXRhYmxlLWludGVyc2Vj dGlvbiEgaHQxIGh0MikpCisgICAgICAgIChhbmQgKD0gMSAoaGFzaC10YWJsZS1zaXplIGh0MSkp CisgICAgICAgICAgICAgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0MikpCisgICAgICAgICAgICAg KGxzZXQ9IGVxdWFsPyAnKChiIC4gMikpIChoYXNoLXRhYmxlLT5hbGlzdCBodDEpKQorICAgICAg ICAgICAgIChsc2V0PSBlcXVhbD8gJygoYiAuIDMpIChjIC4gNCkpIChoYXNoLXRhYmxlLT5hbGlz dCBodDIpKSkpKQorCisgICAgKHBhc3MtaWYgKHRlc3Qtc3RyLXdlYWtuZXNzICJoYXNoLXRhYmxl LWRpZmZlcmVuY2UhIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgd2Vha25lc3MpCisgICAgICAobGV0KiAoKGh0MSAoYWxpc3QtPmhhc2gtdGFibGUg JygoYSAuIDEpIChiIC4gMikpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkKKyAgICAgICAg ICAgICAoaHQyIChhbGlzdC0+aGFzaC10YWJsZSAnKChiIC4gMykgKGMgLiA0KSkgZXE/ICNmICM6 d2Vha25lc3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKHNldCEgaHQxIChoYXNoLXRhYmxlLWRpZmZl cmVuY2UhIGh0MSBodDIpKQorICAgICAgICAoYW5kICg9IDEgKGhhc2gtdGFibGUtc2l6ZSBodDEp KQorICAgICAgICAgICAgICg9IDIgKGhhc2gtdGFibGUtc2l6ZSBodDIpKQorICAgICAgICAgICAg IChsc2V0PSBlcXVhbD8gJygoYSAuIDEpKSAoaGFzaC10YWJsZS0+YWxpc3QgaHQxKSkKKyAgICAg ICAgICAgICAobHNldD0gZXF1YWw/ICcoKGIgLiAzKSAoYyAuIDQpKSAoaGFzaC10YWJsZS0+YWxp c3QgaHQyKSkpKSkKKworICAgIChwYXNzLWlmICh0ZXN0LXN0ci13ZWFrbmVzcyAiaGFzaC10YWJs ZS14b3IhIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgd2Vha25lc3MpCisgICAgICAobGV0KiAoKGh0MSAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAu IDEpIChiIC4gMikpIGVxPyAjZiAjOndlYWtuZXNzIHdlYWtuZXNzKSkKKyAgICAgICAgICAgICAo aHQyIChhbGlzdC0+aGFzaC10YWJsZSAnKChiIC4gMykgKGMgLiA0KSkgZXE/ICNmICM6d2Vha25l c3Mgd2Vha25lc3MpKSkKKyAgICAgICAgKHNldCEgaHQxIChoYXNoLXRhYmxlLXhvciEgaHQxIGh0 MikpCisgICAgICAgIChhbmQgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0MSkpCisgICAgICAgICAg ICAgKD0gMiAoaGFzaC10YWJsZS1zaXplIGh0MikpCisgICAgICAgICAgICAgKGxzZXQ9IGVxdWFs PyAnKChhIC4gMSkgKGMgLiA0KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0MSkpCisgICAgICAgICAg ICAgKGxzZXQ9IGVxdWFsPyAnKChiIC4gMykgKGMgLiA0KSkgKGhhc2gtdGFibGUtPmFsaXN0IGh0 MikpKSkpCisKKyAgICAocGFzcy1pZiAodGVzdC1zdHItd2Vha25lc3MgImltbXV0YWJsZSBoYXNo IHRhYmxlcyBhcmUgaW1tdXRhYmxlIiB3ZWFrbmVzcykKKyAgICAgIChsZXQgKChodCAoaGFzaC10 YWJsZS1jb3B5IChhbGlzdC0+aGFzaC10YWJsZSAnKChhIC4gMSkgKGIgLiAyKSkgZXE/ICNmCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp3ZWFr bmVzcyB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6bXV0YWJs ZSAjZikpKQorICAgICAgICAoYW5kICg9IDIgKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAg ICAgICAgKG5vdCAoaGFzaC10YWJsZS1tdXRhYmxlPyBodCkpKSkpCisKKyAgICA7OyBUZXN0cyB3 aGV0aGVyIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBwcm9jZWR1cmUgc2lnbmFscyBhbiBlcnJvciBv bgorICAgIDs7IGltbXV0YWJsZSBoYXNoIHRhYmxlcworICAgICh3aXRoLWVsdC1pbi1saXN0IHN5 bStwcm9jCisgICAgICAgIChsaXN0CisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS1zZXQhCisg ICAgICAgICAgICAgICAobGFtYmRhIChodCkgKGhhc2gtdGFibGUtc2V0ISBodCAnYSAyICdiIDMp KSkKKyAgICAgICAgIChjb25zICdoYXNoLXRhYmxlLXNldC1zaW5nbGUhCisgICAgICAgICAgICAg ICAobGFtYmRhIChodCkgKGhhc2gtdGFibGUtc2V0LXNpbmdsZSEgaHQgJ2EgMikpKQorICAgICAg ICAgKGNvbnMgJ2hhc2gtdGFibGUtZGVsZXRlIQorICAgICAgICAgICAgICAgKGxhbWJkYSAoaHQp IChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQgJ2EgJ2IpKSkKKyAgICAgICAgIChjb25zICdoYXNoLXRh YmxlLWRlbGV0ZS1zaW5nbGUhCisgICAgICAgICAgICAgICAobGFtYmRhIChodCkgKGhhc2gtdGFi bGUtZGVsZXRlLXNpbmdsZSEgaHQgJ2EpKSkKKyAgICAgICAgIChjb25zICdoYXNoLXRhYmxlLWlu dGVybiEKKyAgICAgICAgICAgICAgIChsYW1iZGEgKGh0KSAoaGFzaC10YWJsZS1pbnRlcm4hIGh0 ICdhIChjb25zdCAyKSkpKQorICAgICAgICAgKGNvbnMgJ2hhc2gtdGFibGUtdXBkYXRlIQorICAg ICAgICAgICAgICAgKGxhbWJkYSAoaHQpIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQgJ2EgMSspKSkK KyAgICAgICAgIChjb25zICdoYXNoLXRhYmxlLXVwZGF0ZSEvZGVmYXVsdAorICAgICAgICAgICAg ICAgKGxhbWJkYSAoaHQpIChoYXNoLXRhYmxlLXVwZGF0ZSEvZGVmYXVsdCBodCAnYSAxKyAwKSkp CisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS1wb3AhCisgICAgICAgICAgICAgICAobGFtYmRh IChodCkgKGhhc2gtdGFibGUtcG9wISBodCkpKQorICAgICAgICAgKGNvbnMgJ2hhc2gtdGFibGUt Y2xlYXIhCisgICAgICAgICAgICAgICAobGFtYmRhIChodCkgKGhhc2gtdGFibGUtY2xlYXIhIGh0 KSkpCisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS1wcnVuZSEKKyAgICAgICAgICAgICAgIChs YW1iZGEgKGh0KSAoaGFzaC10YWJsZS1wcnVuZSEgKGxhbWJkYSAoa2V5IHZhbCkgI3QpIGh0KSkp CisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS11bmlvbiEKKyAgICAgICAgICAgICAgIChsYW1i ZGEgKGh0KSAoaGFzaC10YWJsZS11bmlvbiEgaHQgaHQpKSkKKyAgICAgICAgIChjb25zICdoYXNo LXRhYmxlLWludGVyc2VjdGlvbiEKKyAgICAgICAgICAgICAgIChsYW1iZGEgKGh0KSAoaGFzaC10 YWJsZS1pbnRlcnNlY3Rpb24hIGh0IGh0KSkpCisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS1k aWZmZXJlbmNlIQorICAgICAgICAgICAgICAgKGxhbWJkYSAoaHQpIChoYXNoLXRhYmxlLWRpZmZl cmVuY2UhIGh0IGh0KSkpCisgICAgICAgICAoY29ucyAnaGFzaC10YWJsZS14b3IhCisgICAgICAg ICAgICAgICAobGFtYmRhIChodCkgKGhhc2gtdGFibGUteG9yISBodCBodCkpKSkKKyAgICAgIChw YXNzLWlmLWV4Y2VwdGlvbgorICAgICAgICAgICh0ZXN0LXN0ci13ZWFrbmVzcworICAgICAgICAg ICAoZm9ybWF0ICNmICJ+YSB3aXRoIGltbXV0YWJsZSBoYXNoIHRhYmxlIHNpZ25hbHMgYW4gZXJy b3IiIChjYXIgc3ltK3Byb2MpKQorICAgICAgICAgICB3ZWFrbmVzcykKKyAgICAgICAgICAnKG1p c2MtZXJyb3IgLiAiXkhhc2ggdGFibGUgaXMgbm90IG11dGFibGUiKQorICAgICAgICAobGV0ICgo aHQgKGhhc2gtdGFibGUtY29weSAoYWxpc3QtPmhhc2gtdGFibGUgJygoYSAuIDEpIChiIC4gMikp IGVxPyAjZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIzp3ZWFrbmVzcyB3ZWFrbmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIzptdXRhYmxlICNmKSkpCisgICAgICAgICAgKChjZHIgc3ltK3Byb2MpIGh0KSkpKQor ICAgICkKKyAgKQotLSAKMi4xOS4xCgo= --000000000000b6a39d057efb700b--
X-Loop: help-debbugs@HIDDEN Subject: bug#33827: Patches Resent-From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= <jessymilare@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-guile@HIDDEN Resent-Date: Sun, 13 Jan 2019 22:54:02 +0000 Resent-Message-ID: <handler.33827.B33827.15474200035522 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 33827 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 33827 <at> debbugs.gnu.org Received: via spool by 33827-submit <at> debbugs.gnu.org id=B33827.15474200035522 (code B ref 33827); Sun, 13 Jan 2019 22:54:02 +0000 Received: (at 33827) by debbugs.gnu.org; 13 Jan 2019 22:53:23 +0000 Received: from localhost ([127.0.0.1]:58172 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1giod8-0001R0-Sw for submit <at> debbugs.gnu.org; Sun, 13 Jan 2019 17:53:22 -0500 Received: from mail-io1-f50.google.com ([209.85.166.50]:44985) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <jessymilare@HIDDEN>) id 1giod7-0001Qk-LK for 33827 <at> debbugs.gnu.org; Sun, 13 Jan 2019 17:53:21 -0500 Received: by mail-io1-f50.google.com with SMTP id r200so16277477iod.11 for <33827 <at> debbugs.gnu.org>; Sun, 13 Jan 2019 14:53:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=ppW40DuBYi1PajJYqIFTFHzz1IAKNFo7l4UxOoFzRAA=; b=WuLToive7jlEjL5jFP4Czg139VV1DlbZiTBo/OvP7ddOJdFfZzZyfVSuglbvsFxMdZ 0HmNiJBw4yqvsTTgUAASfoqOsYrxJfddS6QL1tP+ycT3vDV5Hsk6vupTVkyvammWp0AH n8Bp4r0vEuIPTZ+0nQbo3x953SQb99IDdzhxHovyq82RJo+yy9L7/9j2lpYurAXXYmQA b6LMzttH89ttL/OL4WyX57aUrimKI7InGAOM5SBfrzQltu0Wj2m3SPg8lxpkmjvQWRnl u0DhjYlqGtNO/v3MNZsBubfup2XpMPxXDdEYnIgg79W8nJwrXicRP05SLhqTFYUp/xfP Y/fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=ppW40DuBYi1PajJYqIFTFHzz1IAKNFo7l4UxOoFzRAA=; b=p6Nfi9ylI5lC0ZdmNoQPQjj6JQZlaNrQgDvIYwhI5TCK3uP6NnOcYcXZosFPI/kx3w /RK7B3kwjZRSl/+VgS9fm8gobtih+s8Ufyz0j1vGz5olVs2wSKlhLPeBXXIkd4GkwSSm KY0bc2j/CuLPXwsPT095MAE/fVMfw9aIDAnIgvUbcJgKxIqSL2CxPLoABLV1JRr6Yif9 kfoCyphi59UQFqRrCvVQv5d/aG6kezFQvlbRLd0pek4JtC6o1Rfb6O3nGSZGF/nDTPhT ojma6pcQvQ0jry1cZKg8+PlAZu3DHuWUGKS9Amqi+vqnW+vAvMT0HXoKc/DqQUW9LKM/ rzyg== X-Gm-Message-State: AJcUukd3JDvB7xyax7NTCeJl90xafvOAFmot9pEAmI/IroW9lNhVRht3 gainhvOIFoA2YyhWgLDn0+zeAqhSlgXSPSZie9fSQA== X-Google-Smtp-Source: ALg8bN49jHFKwSPPwjknUpVPk+Rj1SArVRfgb0ivnfi5J7x4f3dwWZZ4JvBW0OTvj/V4H41syX4eGZ2Z4PbXocBFosU= X-Received: by 2002:a6b:156:: with SMTP id 83mr14409641iob.63.1547419995521; Sun, 13 Jan 2019 14:53:15 -0800 (PST) MIME-Version: 1.0 References: <CAGBcF1Z5WmXij2vX+EhxQHvWkmmOkeL-hV+Y-SUSpByH0tZQHw@HIDDEN> <CAGBcF1aZrZhBjEk=tvsJHLJnMDc1ERt-ZaCiwOzqMksnfZsP_Q@HIDDEN> In-Reply-To: <CAGBcF1aZrZhBjEk=tvsJHLJnMDc1ERt-ZaCiwOzqMksnfZsP_Q@HIDDEN> From: =?UTF-8?Q?J=C3=A9ssica_?= =?UTF-8?Q?Milar=C3=A9?= <jessymilare@HIDDEN> Date: Sun, 13 Jan 2019 20:53:04 -0200 Message-ID: <CAGBcF1a70RQVCgRZA8cYm7mdREz0yT0NsrHn_6e9rnuK3QaZdA@HIDDEN> Content-Type: multipart/mixed; boundary="00000000000027132d057f5ecbea" X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> --00000000000027132d057f5ecbea Content-Type: multipart/alternative; boundary="000000000000271327057f5ecbe8" --000000000000271327057f5ecbe8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable The rest of the patches are here, implementing SRFI 128 and SRFI 125. Em ter, 8 de jan de 2019 =C3=A0s 22:21, J=C3=A9ssica Milar=C3=A9 <jessymila= re@HIDDEN> escreveu: > Patch 0001 fixes SRFI-69 bugs as specified. Patches 0002 to 0005 implemen= t > the module (ice-9 generic-hash-tables) and then reimplement SRFI-69 and > (rnrs hashtables) and add an implementation of SRFI 126, all of them usin= g > generic-hash-tables (and therefore compatible to each other). > > I've called `make check' after each commit and all tests PASS: or XFAIL:, > except the four tests in linker.test, as reported in Bug 33991[1]. > > [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D33991 > --000000000000271327057f5ecbe8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">The rest of the patches are here, implementing SRFI 128 an= d SRFI 125.</div><br><div class=3D"gmail_quote"><div dir=3D"ltr">Em ter, 8 = de jan de 2019 =C3=A0s 22:21, J=C3=A9ssica Milar=C3=A9 <<a href=3D"mailt= o:jessymilare@HIDDEN">jessymilare@HIDDEN</a>> escreveu:<br></div><= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir= =3D"ltr"><div dir=3D"ltr">Patch 0001 fixes SRFI-69 bugs as specified. Patch= es 0002 to 0005 implement the module (ice-9 generic-hash-tables) and then r= eimplement SRFI-69 and (rnrs hashtables) and add an implementation of SRFI = 126, all of them using generic-hash-tables (and therefore compatible to eac= h other).<div><br></div><div>I've called `make check' after each co= mmit and all tests PASS: or XFAIL:, except the four tests in linker.test, a= s reported in Bug=C2=A033991[1].</div><div><br></div><div>[1]=C2=A0<a href= =3D"https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D33991" target=3D"_blank= ">https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D33991</a></div></div></di= v></div> </blockquote></div> --000000000000271327057f5ecbe8-- --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0006-Fix-wrong-year-in-copyright-notices.patch" Content-Disposition: attachment; filename="0006-Fix-wrong-year-in-copyright-notices.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqvhvngx0> X-Attachment-Id: f_jqvhvngx0 RnJvbSBhMDJmZDA5MTE3MDEzMTU0YzAxMTA3NGI1YTc1ODNhMWJlZDVlY2E0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBGcmksIDExIEphbiAyMDE5IDE3OjQwOjM4 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwNi8xMF0gRml4IHdyb25nIHllYXIgaW4gY29weXJpZ2h0 IG5vdGljZXMuCgotLS0KIG1vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNjbSAgICAg IHwgMiArLQogbW9kdWxlL3NyZmkvc3JmaS0xMjYuc2NtICAgICAgICAgICAgICAgICAgfCA0ICsr LS0KIG1vZHVsZS9zcmZpL3NyZmktNjkuc2NtICAgICAgICAgICAgICAgICAgIHwgMiArLQogdGVz dC1zdWl0ZS90ZXN0cy9nZW5lcmljLWhhc2gtdGFibGVzLnRlc3QgfCA0ICsrLS0KIHRlc3Qtc3Vp dGUvdGVzdHMvc3JmaS0xMjYudGVzdCAgICAgICAgICAgIHwgNCArKy0tCiB0ZXN0LXN1aXRlL3Rl c3RzL3NyZmktNjkudGVzdCAgICAgICAgICAgICB8IDIgKy0KIDYgZmlsZXMgY2hhbmdlZCwgOSBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL21vZHVsZS9pY2UtOS9n ZW5lcmljLWhhc2gtdGFibGVzLnNjbSBiL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVz LnNjbQppbmRleCAwMzNjM2VjZGEuLjMxZGVhZDk3YSAxMDA2NDQKLS0tIGEvbW9kdWxlL2ljZS05 L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtCisrKyBiL21vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gt dGFibGVzLnNjbQpAQCAtMSw2ICsxLDYgQEAKIDs7OyBnZW5lcmljLWhhc2gtdGFibGVzLnNjbSAt LS0gSW50ZXJtZWRpYXRlIGhhc2ggdGFibGVzCiAKLTs7IAlDb3B5cmlnaHQgKEMpIDIwMDcgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsMjAx OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7CiA7OyBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiA7OyBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCmRpZmYg LS1naXQgYS9tb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20gYi9tb2R1bGUvc3JmaS9zcmZpLTEyNi5z Y20KaW5kZXggN2E2NTk0NDM0Li5lN2ZlZTM1ZDMgMTAwNjQ0Ci0tLSBhL21vZHVsZS9zcmZpL3Ny ZmktMTI2LnNjbQorKysgYi9tb2R1bGUvc3JmaS9zcmZpLTEyNi5zY20KQEAgLTEsNiArMSw2IEBA Ci07Ozsgc3JmaS02OS5zY20gLS0tIEJhc2ljIGhhc2ggdGFibGVzCis7Ozsgc3JmaS0xMjYuc2Nt IC0tLSBSNlJTIGhhc2ggdGFibGVzCiAKLTs7IAlDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OyAgICBDb3B5cmlnaHQgKEMpIDIwMTkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA7OwogOzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogOzsgbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpkaWZmIC0tZ2l0IGEvbW9k dWxlL3NyZmkvc3JmaS02OS5zY20gYi9tb2R1bGUvc3JmaS9zcmZpLTY5LnNjbQppbmRleCBhZTVi YzdmMDYuLjEzNGJjZDY5NCAxMDA2NDQKLS0tIGEvbW9kdWxlL3NyZmkvc3JmaS02OS5zY20KKysr IGIvbW9kdWxlL3NyZmkvc3JmaS02OS5zY20KQEAgLTEsNiArMSw2IEBACiA7Ozsgc3JmaS02OS5z Y20gLS0tIEJhc2ljIGhhc2ggdGFibGVzCiAKLTs7IAlDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsMjAxOCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7CiA7OyBUaGlzIGxpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiA7OyBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCmRpZmYgLS1n aXQgYS90ZXN0LXN1aXRlL3Rlc3RzL2dlbmVyaWMtaGFzaC10YWJsZXMudGVzdCBiL3Rlc3Qtc3Vp dGUvdGVzdHMvZ2VuZXJpYy1oYXNoLXRhYmxlcy50ZXN0CmluZGV4IDQ5NGNiZjcwYS4uZDFlYjJh YzJkIDEwMDY0NAotLS0gYS90ZXN0LXN1aXRlL3Rlc3RzL2dlbmVyaWMtaGFzaC10YWJsZXMudGVz dAorKysgYi90ZXN0LXN1aXRlL3Rlc3RzL2dlbmVyaWMtaGFzaC10YWJsZXMudGVzdApAQCAtMSw2 ICsxLDYgQEAKLTs7Ozsgc3JmaS02OS50ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDY5IC0q LSBzY2hlbWUgLSotCis7Ozs7IGdlbmVyaWMtaGFzaC10YWJsZXMudGVzdCAtLS0gVGVzdCBzdWl0 ZSBmb3IgR0VORVJJQy1IQVNILVRBQkxFUyAtKi0gc2NoZW1lIC0qLQogOzs7OwotOzs7OyAJQ29w eXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOzs7OyAgICBD b3B5cmlnaHQgKEMpIDIwMDcsMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7 OzsKIDs7OzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgogOzs7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCmRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmkt MTI2LnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI2LnRlc3QKaW5kZXggZTZhNGU2NmE5 Li45NzA3NzBhNmUgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjYudGVzdAor KysgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI2LnRlc3QKQEAgLTEsNiArMSw2IEBACi07Ozs7 IHNyZmktNjkudGVzdCAtLS0gVGVzdCBzdWl0ZSBmb3IgU1JGSSA2OSAtKi0gc2NoZW1lIC0qLQor Ozs7OyBzcmZpLTEyNi50ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDEyNiAtKi0gc2NoZW1l IC0qLQogOzs7OwotOzs7OyAJQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorOzs7OyBDb3B5cmlnaHQgKEMpIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiA7Ozs7CiA7Ozs7IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKIDs7OzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpkaWZmIC0tZ2l0IGEvdGVzdC1zdWl0 ZS90ZXN0cy9zcmZpLTY5LnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjkudGVzdAppbmRl eCBlMTU3OWY3M2EuLjk3NDkxYmE4MyAxMDA2NDQKLS0tIGEvdGVzdC1zdWl0ZS90ZXN0cy9zcmZp LTY5LnRlc3QKKysrIGIvdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTY5LnRlc3QKQEAgLTEsNiArMSw2 IEBACiA7Ozs7IHNyZmktNjkudGVzdCAtLS0gVGVzdCBzdWl0ZSBmb3IgU1JGSSA2OSAtKi0gc2No ZW1lIC0qLQogOzs7OwotOzs7OyAJQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorOzs7OyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsMjAxOCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KIDs7OzsKIDs7OzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogOzs7OyBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0tIAoyLjE5LjEK Cg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="UTF-8"; name="0009-Implemented-SRFI-125.patch" Content-Disposition: attachment; filename="0009-Implemented-SRFI-125.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqvhvnoy3> X-Attachment-Id: f_jqvhvnoy3 RnJvbSAxOGNlMTAyYzI3MGJhYjNjZjUyNDBlN2FjOTMxMjllMTA3YzMzNWRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDEzIEphbiAyMDE5IDEyOjAxOjA4 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwOS8xMF0gSW1wbGVtZW50ZWQgU1JGSS0xMjUKCi0tLQog bW9kdWxlL01ha2VmaWxlLmFtICAgICAgICAgICAgIHwgICAxICsKIG1vZHVsZS9zcmZpL3NyZmkt MTI1LnNjbSAgICAgICB8IDQ3OSArKysrKysrKysrKysrKysrKysKIHRlc3Qtc3VpdGUvTWFrZWZp bGUuYW0gICAgICAgICB8ICAgMSArCiB0ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI1LnRlc3QgfCA4 NjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDEz NDEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IG1vZHVsZS9zcmZpL3NyZmktMTI1 LnNjbQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjUudGVzdAoK ZGlmZiAtLWdpdCBhL21vZHVsZS9NYWtlZmlsZS5hbSBiL21vZHVsZS9NYWtlZmlsZS5hbQppbmRl eCA1ZmMzMDEwYzEuLjQxYzFjMjgyNiAxMDA2NDQKLS0tIGEvbW9kdWxlL01ha2VmaWxlLmFtCisr KyBiL21vZHVsZS9NYWtlZmlsZS5hbQpAQCAtMjk0LDYgKzI5NCw3IEBAIFNPVVJDRVMgPQkJCQkJ XAogICBzcmZpL3NyZmktODguc2NtCQkJCVwKICAgc3JmaS9zcmZpLTk4LnNjbQkJCQlcCiAgIHNy Zmkvc3JmaS0xMTEuc2NtCQkJCVwKKyAgc3JmaS9zcmZpLTEyNS5zY20JCQkJXAogICBzcmZpL3Ny ZmktMTI2LnNjbQkJCQlcCiAgIHNyZmkvc3JmaS0xMjgvZ251LnNjbQkJCQlcCiAgIHNyZmkvc3Jm aS0xMjguc2NtCQkJCVwKZGlmZiAtLWdpdCBhL21vZHVsZS9zcmZpL3NyZmktMTI1LnNjbSBiL21v ZHVsZS9zcmZpL3NyZmktMTI1LnNjbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAuLmYwYTFkZmIwMgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS9zcmZpL3NyZmktMTI1LnNj bQpAQCAtMCwwICsxLDQ3OSBAQAorOzs7IHNyZmktMTI1LnNjbSAtLS0gSW50ZXJtZWRpYXRlIGhh c2ggdGFibGVzCisKKzs7ICAgIENvcHlyaWdodCAoQykgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKzs7Cis7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCis7OyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKzs7IHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7Cis7 OyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorOzsgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7Cis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCis7OyBMaWNlbnNlIGFs b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl Cis7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisKKzs7IFRoaXMgZmlsZSBjb250YWlucyBjb2RlIGZy b20gU1JGSSAxMjggcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLCBieQorOzsgV2lsbGlhbSBEIENs aW5nZXIKKworOzs7IENvcHlyaWdodCAyMDE1IFdpbGxpYW0gRCBDbGluZ2VyLgorOzs7Cis7Ozsg UGVybWlzc2lvbiB0byBjb3B5IHRoaXMgc29mdHdhcmUsIGluIHdob2xlIG9yIGluIHBhcnQsIHRv IHVzZSB0aGlzCis7Ozsgc29mdHdhcmUgZm9yIGFueSBsYXdmdWwgcHVycG9zZSwgYW5kIHRvIHJl ZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCis7OzsgaXMgZ3JhbnRlZCBzdWJqZWN0IHRvIHRoZSBy ZXN0cmljdGlvbiB0aGF0IGFsbCBjb3BpZXMgbWFkZSBvZiB0aGlzCis7Ozsgc29mdHdhcmUgbXVz dCBpbmNsdWRlIHRoaXMgY29weXJpZ2h0IGFuZCBwZXJtaXNzaW9uIG5vdGljZSBpbiBmdWxsLgor Ozs7Cis7OzsgSSBhbHNvIHJlcXVlc3QgdGhhdCB5b3Ugc2VuZCBtZSBhIGNvcHkgb2YgYW55IGlt cHJvdmVtZW50cyB0aGF0IHlvdQorOzs7IG1ha2UgdG8gdGhpcyBzb2Z0d2FyZSBzbyB0aGF0IHRo ZXkgbWF5IGJlIGluY29ycG9yYXRlZCB3aXRoaW4gaXQgdG8KKzs7OyB0aGUgYmVuZWZpdCBvZiB0 aGUgU2NoZW1lIGNvbW11bml0eS4KKwwKKworKGRlZmluZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjUp CisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZp LTEyOCkKKyAgIzp1c2UtbW9kdWxlICgocm5ycyBiYXNlKSAjOnNlbGVjdCAoc3ltYm9sPT8pKQor ICAjOnVzZS1tb2R1bGUgKChpY2UtOSBnZW5lcmljLWhhc2gtdGFibGVzKSAjOnByZWZpeCBnZW46 KQorICAjOmV4cG9ydCAoOzsgVHlwZSBjb25zdHJ1Y3RvcnMgYW5kIHByZWRpY2F0ZQorICAgICAg ICAgICAgbWFrZS1oYXNoLXRhYmxlCisgICAgICAgICAgICBoYXNoLXRhYmxlIGhhc2gtdGFibGUt dW5mb2xkIGFsaXN0LT5oYXNoLXRhYmxlCisgICAgICAgICAgICA7OyBQcmVkaWNhdGVzCisgICAg ICAgICAgICBoYXNoLXRhYmxlPyBoYXNoLXRhYmxlLWNvbnRhaW5zPyBoYXNoLXRhYmxlLWVtcHR5 PyBoYXNoLXRhYmxlPT8KKyAgICAgICAgICAgIGhhc2gtdGFibGUtbXV0YWJsZT8KKyAgICAgICAg ICAgIDs7IEFjY2Vzc29ycworICAgICAgICAgICAgaGFzaC10YWJsZS1yZWYgaGFzaC10YWJsZS1y ZWYvZGVmYXVsdAorICAgICAgICAgICAgOzsgTXV0YXRvcnMKKyAgICAgICAgICAgIGhhc2gtdGFi bGUtc2V0ISBoYXNoLXRhYmxlLWRlbGV0ZSEgaGFzaC10YWJsZS1pbnRlcm4hIGhhc2gtdGFibGUt dXBkYXRlIQorICAgICAgICAgICAgaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQgaGFzaC10YWJs ZS1wb3AhIGhhc2gtdGFibGUtY2xlYXIhCisgICAgICAgICAgICA7OyBUaGUgd2hvbGUgaGFzaCB0 YWJsZQorICAgICAgICAgICAgaGFzaC10YWJsZS1zaXplIGhhc2gtdGFibGUta2V5cyBoYXNoLXRh YmxlLXZhbHVlcyBoYXNoLXRhYmxlLWVudHJpZXMKKyAgICAgICAgICAgIGhhc2gtdGFibGUtZmlu ZCBoYXNoLXRhYmxlLWNvdW50CisgICAgICAgICAgICA7OyBNYXBwaW5nIGFuZCBmb2xkaW5nCisg ICAgICAgICAgICBoYXNoLXRhYmxlLW1hcCBoYXNoLXRhYmxlLWZvci1lYWNoIGhhc2gtdGFibGUt bWFwISBoYXNoLXRhYmxlLW1hcC0+bGlzdAorICAgICAgICAgICAgaGFzaC10YWJsZS1mb2xkIGhh c2gtdGFibGUtcHJ1bmUhCisgICAgICAgICAgICA7OyBDb3B5aW5nCisgICAgICAgICAgICBoYXNo LXRhYmxlLWNvcHkgaGFzaC10YWJsZS1lbXB0eS1jb3B5CisgICAgICAgICAgICA7OyBDb252ZXJz aW9uCisgICAgICAgICAgICBoYXNoLXRhYmxlLT5hbGlzdAorICAgICAgICAgICAgOzsgSGFzaCB0 YWJsZXMgYXMgc2V0cworICAgICAgICAgICAgaGFzaC10YWJsZS11bmlvbiEgaGFzaC10YWJsZS1p bnRlcnNlY3Rpb24hIGhhc2gtdGFibGUtZGlmZmVyZW5jZSEKKyAgICAgICAgICAgIGhhc2gtdGFi bGUteG9yIQorICAgICAgICAgICAgOzsgVGhlIGZvbGxvd2luZyBwcm9jZWR1cmVzIGFyZSBkZXBy ZWNhdGVkIGJ5IFNSRkkgMTI1OgorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1l eGlzdHM/IC4gaGFzaC10YWJsZS1leGlzdHM/KQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6aGFz aC10YWJsZS13YWxrIC4gaGFzaC10YWJsZS13YWxrKQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6 aGFzaC10YWJsZS1tZXJnZSEgLiBoYXNoLXRhYmxlLW1lcmdlISkKKyAgICAgICAgICAgIDs7IEZp eG1lOiBzaG91bGQgd2UgcmVhbGx5IGRlcHJlY2F0ZSB0aGVzZSBpbiBHdWlsZT8KKyAgICAgICAg ICAgIChkZXByZWNhdGVkOmhhc2ggLiBoYXNoKQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6c3Ry aW5nLWhhc2ggLiBzdHJpbmctaGFzaCkKKyAgICAgICAgICAgIChkZXByZWNhdGVkOnN0cmluZy1j aS1oYXNoIC4gc3RyaW5nLWNpLWhhc2gpCisgICAgICAgICAgICAoZGVwcmVjYXRlZDpoYXNoLWJ5 LWlkZW50aXR5IC4gaGFzaC1ieS1pZGVudGl0eSkKKyAgICAgICAgICAgIChkZXByZWNhdGVkOmhh c2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gLiBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1 bmN0aW9uKQorICAgICAgICAgICAgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9u IC4gaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uKSkKKyAgIzpyZXBsYWNlIChtYWtlLWhhc2gtdGFi bGUgaGFzaC10YWJsZT8pKQorCisoY29uZC1leHBhbmQtcHJvdmlkZSAoY3VycmVudC1tb2R1bGUp ICcoc3JmaS0xMjUpKQorCisMCis7OzsgUHJpdmF0ZSBzdHVmZiwgbm90IGV4cG9ydGVkLgorCis7 OyBUZW4gb2YgdGhlIFNSRkkgMTI1IHByb2NlZHVyZXMgYXJlIGRlcHJlY2F0ZWQsIGFuZCBhbm90 aGVyCis7OyB0d28gYWxsb3cgYWx0ZXJuYXRpdmUgYXJndW1lbnRzIHRoYXQgYXJlIGRlcHJlY2F0 ZWQuCisKKyhkZWZpbmUgKGlzc3VlLWRlcHJlY2F0ZWQtd2FybmluZ3M/KSAjdCkKKworKGRlZmlu ZSAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkIG5hbWUtb2YtZGVwcmVjYXRlZC1taXNmZWF0dXJl KQorICAoaWYgKG5vdCAobWVtcSBuYW1lLW9mLWRlcHJlY2F0ZWQtbWlzZmVhdHVyZSBhbHJlYWR5 LXdhcm5lZCkpCisgICAgICAoYmVnaW4KKyAgICAgICAgKHNldCEgYWxyZWFkeS13YXJuZWQKKyAg ICAgICAgICAoY29ucyBuYW1lLW9mLWRlcHJlY2F0ZWQtbWlzZmVhdHVyZSBhbHJlYWR5LXdhcm5l ZCkpCisgICAgICAgIChpZiAoaXNzdWUtZGVwcmVjYXRlZC13YXJuaW5ncz8pCisgICAgICAgICAg ICAobGV0ICgob3V0IChjdXJyZW50LWVycm9yLXBvcnQpKSkKKyAgICAgICAgICAgICAgKGRpc3Bs YXkgIldBUk5JTkc6ICIgb3V0KQorICAgICAgICAgICAgICAoZGlzcGxheSBuYW1lLW9mLWRlcHJl Y2F0ZWQtbWlzZmVhdHVyZSBvdXQpCisgICAgICAgICAgICAgIChuZXdsaW5lIG91dCkKKyAgICAg ICAgICAgICAgKGRpc3BsYXkgIiAgICBpcyBkZXByZWNhdGVkIGJ5IFNSRkkgMTI1LiAgU2VlIiBv dXQpCisgICAgICAgICAgICAgIChuZXdsaW5lIG91dCkKKyAgICAgICAgICAgICAgKGRpc3BsYXkg IiAgICAiIG91dCkKKyAgICAgICAgICAgICAgKGRpc3BsYXkgdXJsOmRlcHJlY2F0ZWQgb3V0KQor ICAgICAgICAgICAgICAobmV3bGluZSBvdXQpKSkpKSkKKworKGRlZmluZSB1cmw6ZGVwcmVjYXRl ZAorICAiaHR0cDovL3NyZmkuc2NoZW1lcnMub3JnL3NyZmktMTI1L3NyZmktMTI1Lmh0bWwiKQor Cis7OyBMaXN0IG9mIGRlcHJlY2F0ZWQgZmVhdHVyZXMgZm9yIHdoaWNoIGEgd2FybmluZyBoYXMg YWxyZWFkeQorOzsgYmVlbiBpc3N1ZWQuCisKKyhkZWZpbmUgYWxyZWFkeS13YXJuZWQgJygpKQor Cis7OzsgQ29tZW50YXJ5IGZyb20gU1JGSSAxMjUgc3RhbmRhcmQgaW1wbGVtZW50YXRpb24KKzs7 OworOzs7IENvbXBhcmF0b3JzIGNvbnRhaW4gYSB0eXBlIHRlc3QgcHJlZGljYXRlLCB3aGljaCBp bXBsZW1lbnRhdGlvbnMKKzs7OyBvZiB0aGUgaGFzaC10YWJsZS1zZXQhIHByb2NlZHVyZSBjYW4g dXNlIHRvIHJlamVjdCBpbnZhbGlkIGtleXMuCis7OzsgVGhhdCdzIGhhcmQgdG8gZG8gd2l0aG91 dCBzYWNyaWZpY2luZyBpbnRlcm9wZXJhYmlsaXR5IHdpdGggUjZSUworOzs7IGFuZC9vciBTUkZJ IDY5IGFuZC9vciBTUkZJIDEyNiBoYXNoIHRhYmxlcy4KKzs7OworOzs7IEZ1bGwgaW50ZXJvcGVy YWJpbGl0eSBtZWFucyB0aGUgaGFzaCB0YWJsZXMgaW1wbGVtZW50ZWQgaGVyZSBhcmUKKzs7OyBp bnRlcmNoYW5nZWFibGUgd2l0aCB0aGUgU1JGSSAxMjYgaGFzaHRhYmxlcyB1c2VkIHRvIGltcGxl bWVudCB0aGVtLgorOzs7IFNSRkkgNjkgYW5kIFI2UlMgYW5kIFNSRkkgMTI2IGhhc2h0YWJsZXMg ZG9uJ3QgY29udGFpbiBjb21wYXJhdG9ycywKKzs7OyBzbyBhbnkgYXNzb2NpYXRpb24gYmV0d2Vl biBhIGhhc2ggdGFibGUgYW5kIGl0cyBjb21wYXJhdG9yIHdvdWxkIGhhdmUKKzs7OyB0byBiZSBt YWludGFpbmVkIG91dHNpZGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGhhc2ggdGFibGVzIHRoZW1z ZWx2ZXMsCis7Ozsgd2hpY2ggaXMgcHJvYmxlbWF0aWMgdW5sZXNzIHdlYWsgcG9pbnRlcnMgYXJl IGF2YWlsYWJsZS4KKzs7OworOzs7IE5vdCBhbGwgb2YgdGhlIGhhc2ggdGFibGVzIGltcGxlbWVu dGVkIGhlcmUgd2lsbCBoYXZlIGNvbXBhcmF0b3JzCis7OzsgYXNzb2NpYXRlZCB3aXRoIHRoZW0g YW55d2F5LCBiZWNhdXNlIGFuIGVxdWl2YWxlbmNlIHByb2NlZHVyZQorOzs7IGFuZCBoYXNoIGZ1 bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIGhhc2ggdGFibGUgaW5zdGVhZCBvZgorOzs7 IGEgY29tcGFyYXRvciAoYWx0aG91Z2ggdGhhdCB1c2FnZSBpcyBkZXByZWNhdGVkIGJ5IFNSRkkg MTI1KS4KKzs7OworOzs7IE9uZSB3YXkgdG8gcHJlc2VydmUgaW50ZXJvcGVyYWJpbGl0eSB3aGls ZSBlbmZvcmNpbmcgYSBjb21wYXJhdG9yJ3MKKzs7OyB0eXBlIHRlc3QgaXMgdG8gaW5jb3Jwb3Jh dGUgdGhhdCB0ZXN0IGludG8gYSBoYXNoIHRhYmxlJ3MgaGFzaAorOzs7IGZ1bmN0aW9uLiAgVGhl IGFkdmFudGFnZSBvZiBkb2luZyB0aGF0IHNob3VsZCBiZSB3ZWlnaGVkIGFnYWluc3QKKzs7OyB0 aGVzZSBkaXNhZHZhbnRhZ2VzOgorOzs7Cis7OzsgICAgIElmIHRoZSB0eXBlIHRlc3QgaXMgc2xv dywgdGhlbiBoYXNoaW5nIHdvdWxkIGFsc28gYmUgc2xvd2VyLgorOzs7Cis7OzsgICAgIFRoZSBS NlJTLCBTUkZJIDY5LCBhbmQgU1JGSSAxMjYgQVBJcyBhbGxvdyBleHRyYWN0aW9uIG9mCis7Ozsg ICAgIGEgaGFzaCBmdW5jdGlvbiBmcm9tIHNvbWUgaGFzaCB0YWJsZXMuCis7OzsgICAgIFNvbWUg cHJvZ3JhbW1lcnMgbWlnaHQgZXhwZWN0IHRoYXQgaGFzaCBmdW5jdGlvbiB0byBiZSB0aGUKKzs7 OyAgICAgaGFzaCBmdW5jdGlvbiBlbmNhcHN1bGF0ZWQgYnkgdGhlIGNvbXBhcmF0b3IgKGluIHRo ZSBzZW5zZQorOzs7ICAgICBvZiBlcT8sIHBlcmhhcHMpIGV2ZW4gdGhvdWdoIHRoaXMgQVBJIG1h a2VzIG5vIHN1Y2ggZ3VhcmFudGVlCis7OzsgICAgIChhbmQgZXh0cmFjdGlvbiBvZiB0aGF0IGhh c2ggZnVuY3Rpb24gZnJvbSBhbiBleGlzdGluZyBoYXNoCis7OzsgICAgIHRhYmxlIGNhbiBvbmx5 IGJlIGRvbmUgYnkgY2FsbGluZyBhIGRlcHJlY2F0ZWQgcHJvY2VkdXJlKS4KKworOzsgSWYgJWVu Zm9yY2UtY29tcGFyYXRvci10eXBlLXRlc3RzIGlzIHRydWUsIHRoZW4gbWFrZS1oYXNoLXRhYmxl LAorOzsgd2hlbiBwYXNzZWQgYSBjb21wYXJhdG9yLCB3aWxsIHVzZSBhIGhhc2ggZnVuY3Rpb24g dGhhdCBlbmZvcmNlcworOzsgdGhlIGNvbXBhcmF0b3IncyB0eXBlIHRlc3QuCisKKyhkZWZpbmUg JWVuZm9yY2UtY29tcGFyYXRvci10eXBlLXRlc3RzICN0KQorCis7OzsgRG9uJ3QgdXNlIEhBU0gt RlVOQ1RJT04gaWYgRVFVSVYgaXMgYSAoa25vd24pIHJlZmluZW1lbnQgb2YgRVFVQUw/CisoZGVm aW5lICglZ2V0LWhhc2gtdGFibGUtaGFzaC1mdW5jdGlvbiBlcXVpdiBoYXNoLWZ1bmN0aW9uKQor ICAoaWYgKG9yIChlcT8gZXE/IGVxdWl2KQorICAgICAgICAgIChlcT8gZXF2PyBlcXVpdikKKyAg ICAgICAgICAoZXE/IGVxdWFsPyBlcXVpdikKKyAgICAgICAgICAoZXE/IHN0cmluZz0/IGVxdWl2 KSkKKyAgICAgIDs7IExldCBHRU5FUklDLUhBU0gtVEFCTEVTIGRlY2lkZSBhIGJldHRlciBIQVNI LUZVTkNUSU9OCisgICAgICAjZgorICAgICAgOzsgTm90IHJlcXVpcmVkIGJ5IHNwZWNpZmljYXRp b24sIGJ1dCBpbXBsZW1lbnRlZCBieSBzdGFuZGFyZAorICAgICAgOzsgaW1wbGVtZW50YXRpb24K KyAgICAgIChpZiAoZXE/IHN5bWJvbD0/IGVxdWl2KQorICAgICAgICAgIHN5bWJvbC1oYXNoCisg ICAgICAgICAgaGFzaC1mdW5jdGlvbikpKQorCis7OzsgR2l2ZW4gYSBjb21wYXJhdG9yLCByZXR1 cm4gaXRzIGhhc2ggZnVuY3Rpb24sIHBvc3NpYmx5IGF1Z21lbnRlZAorOzs7IGJ5IHRoZSBjb21w YXJhdG9yJ3MgdHlwZSB0ZXN0LgorKGRlZmluZSAoJWNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBj b21wYXJhdG9yKQorICAobGV0ICgob2theT8gKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0 ZSBjb21wYXJhdG9yKSkKKyAgICAgICAgKGhhc2gtZnVuY3Rpb24gKCVnZXQtaGFzaC10YWJsZS1o YXNoLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoY29tcGFyYXRvci1lcXVhbGl0 eS1wcmVkaWNhdGUgY29tcGFyYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb21wYXJh dG9yLWhhc2gtZnVuY3Rpb24gY29tcGFyYXRvcikpKSkKKyAgICAoYW5kIGhhc2gtZnVuY3Rpb24K KyAgICAgICAgIChpZiAoYW5kICVlbmZvcmNlLWNvbXBhcmF0b3ItdHlwZS10ZXN0cworICAgICAg ICAgICAgICAgICAgOzsgVGhlc2UgcHJvY2VkdXJlcyBhbHJlYWR5IHRlc3QgdHlwZQorICAgICAg ICAgICAgICAgICAgKG5vdCAob3IgKGVxPyBoYXNoLWZ1bmN0aW9uIHN5bWJvbC1oYXNoKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGVxPyBoYXNoLWZ1bmN0aW9uIHN0cmluZy1jaS1oYXNo KSkpKQorICAgICAgICAgICAgIChsYW1iZGEgKHgpCisgICAgICAgICAgICAgICAoY29uZCAoKG5v dCAob2theT8geCkpCisgICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJLZXkgcmVqZWN0ZWQg YnkgaGFzaC10YWJsZSBjb21wYXJhdG9yIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmF0b3IpKQorICAgICAgICAgICAg ICAgICAgICAgKGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAoaGFzaC1mdW5jdGlvbiB4KSkp KQorICAgICAgICAgICAgIGhhc2gtZnVuY3Rpb24pKSkpCisKKzs7OyBXZSBsZXQgR0VORVJJQy1I QVNILVRBQkxFUyBkZWNpZGUgd2hpY2ggd2Vha25lc3NlcyBhcmUgc3VwcG9ydGVkCisoZGVmaW5l ICglY2hlY2stb3B0aW9uYWwtYXJndW1lbnRzIHByb2NuYW1lIGFyZ3MpCisgIChpZiAobWVtcSAn dGhyZWFkLXNhZmUgYXJncykKKyAgICAgIChlcnJvciAoc3RyaW5nLWFwcGVuZCAoc3ltYm9sLT5z dHJpbmcgcHJvY25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogdW5zdXBwb3J0 ZWQgb3B0aW9uYWwgYXJndW1lbnQocykiKQorICAgICAgICAgICAgIGFyZ3MpKSkKKworKGRlZmlu ZSAoJWdldC1oYXNoLXRhYmxlLXdlYWtuZXNzIGFyZ3MpCisgIChjb25kCisgICAoKG1lbXEgJ2Vw aGVtZXJhbC12YWx1ZXMgYXJncykKKyAgICAoaWYgKG9yIChtZW1xICdlcGhlbWVyYWwta2V5cyBh cmdzKQorICAgICAgICAgICAgKG1lbXEgJ3dlYWsta2V5cyBhcmdzKSkKKyAgICAgICAgJ2VwaGVt ZXJhbC1rZXktYW5kLXZhbHVlCisgICAgICAgICdlcGhlbWVyYWwtdmFsdWUpKQorICAgKChtZW1x ICdlcGhlbWVyYWwta2V5cyBhcmdzKQorICAgIChpZiAobWVtcSAnd2Vhay12YWx1ZXMgYXJncykK KyAgICAgICAgJ2VwaGVtZXJhbC1rZXktYW5kLXZhbHVlCisgICAgICAgICdlcGhlbWVyYWwta2V5 KSkKKyAgICgobWVtcSAnd2Vhay1rZXlzIGFyZ3MpCisgICAgKGlmIChtZW1xICd3ZWFrLXZhbHVl cyBhcmdzKQorICAgICAgICAnd2Vhay1rZXktYW5kLXZhbHVlCisgICAgICAgICd3ZWFrLWtleSkp CisgICAoKG1lbXEgJ3dlYWstdmFsdWVzIGFyZ3MpCisgICAgJ3dlYWstdmFsdWUpCisgICAoZWxz ZSAjZikpKQorCisoZGVmaW5lICglZ2V0LWhhc2gtdGFibGUtY2FwYWNpdHkgYXJncykKKyAgKG9y IChmaW5kIGludGVnZXI/IGFyZ3MpIDEpKQorCisMCis7OzsgQ29uc3RydWN0b3JzLgorCis7Ozsg Q29tZW50YXJ5IGZyb20gU1JGSSAxMjUgc3RhbmRhcmQgaW1wbGVtZW50YXRpb24KKzs7OworOzs7 IFRoZSBmaXJzdCBhcmd1bWVudCBjYW4gYmUgYSBjb21wYXJhdG9yIG9yIGFuIGVxdWFsaXR5IHBy ZWRpY2F0ZS4KKzs7OworOzs7IElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIGNvbXBhcmF0b3Is IGFueSByZW1haW5pbmcgYXJndW1lbnRzCis7OzsgYXJlIGltcGxlbWVudGF0aW9uLWRlcGVuZGVu dCwgYnV0IGEgbm9uLW5lZ2F0aXZlIGV4YWN0IGludGVnZXIKKzs7OyBzaG91bGQgYmUgaW50ZXJw cmV0ZWQgYXMgYW4gaW5pdGlhbCBjYXBhY2l0eSBhbmQgdGhlIHN5bWJvbHMKKzs7OyB0aHJlYWQt c2FmZSwgd2Vhay1rZXlzLCBlcGhlbWVyYWwta2V5cywgd2Vhay12YWx1ZXMsIGFuZAorOzs7IGVt cGhlbWVyYWwtdmFsdWVzIHNob3VsZCBiZSBpbnRlcnByZXRlZCBzcGVjaWFsbHkuICAoVGhlc2UK Kzs7OyBzcGVjaWFsIHN5bWJvbHMgYXJlIGRpc3RpbmN0IGZyb20gdGhlIGFuYWxvZ291cyBzcGVj aWFsIHN5bWJvbHMKKzs7OyBpbiBTUkZJIDEyNi4pCis7OzsKKzs7OyBJZiB0aGUgZmlyc3QgYXJn dW1lbnQgaXMgbm90IGEgY29tcGFyYXRvciwgdGhlbiBpdCBoYWQgYmV0dGVyCis7OzsgYmUgYW4g ZXF1YWxpdHkgcHJlZGljYXRlICh3aGljaCBpcyBkZXByZWNhdGVkIGJ5IFNSRkkgMTI1KS4KKzs7 OyBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50IGFuZCBpcyBhIHByb2NlZHVyZSwgdGhl biBpdCdzCis7OzsgYSBoYXNoIGZ1bmN0aW9uICh3aGljaCBpcyBhbGxvd2VkIG9ubHkgZm9yIHRo ZSBkZXByZWNhdGVkIGNhc2UKKzs7OyBpbiB3aGljaCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYW4g ZXF1YWxpdHkgcHJlZGljYXRlKS4gIElmIGEKKzs7OyBzZWNvbmQgYXJndW1lbnQgaXMgbm90IGEg cHJvY2VkdXJlLCB0aGVuIGl0J3Mgc29tZSBraW5kIG9mCis7OzsgaW1wbGVtZW50YXRpb24tZGVw ZW5kZW50IG9wdGlvbmFsIGFyZ3VtZW50LCBhcyBhcmUgYWxsIGFyZ3VtZW50cworOzs7IGJleW9u ZCB0aGUgc2Vjb25kLgorOzs7Cis7OzsgU1JGSSAxMjggZGVmaW5lcyBtYWtlLWVxLWNvbXBhcmF0 b3IsIG1ha2UtZXF2LWNvbXBhcmF0b3IsIGFuZAorOzs7IG1ha2UtZXF1YWwtY29tcGFyYXRvciBw cm9jZWR1cmVzIHdob3NlIGhhc2ggZnVuY3Rpb24gaXMgdGhlCis7OzsgZGVmYXVsdC1oYXNoIHBy b2NlZHVyZSBvZiBTUkZJIDEyOCwgd2hpY2ggaXMgaW5hcHByb3ByaWF0ZQorOzs7IGZvciB1c2Ug d2l0aCBlcT8gYW5kIGVxdj8gdW5sZXNzIHRoZSBvYmplY3QgYmVpbmcgaGFzaGVkIGlzCis7Ozsg bmV2ZXIgbXV0YXRlZC4gIE5laXRoZXIgU1JGSSAxMjUgbm9yIDEyOCBwcm92aWRlIGFueSB3YXkg dG8KKzs7OyBkZWZpbmUgYSBjb21wYXJhdG9yIHdob3NlIGhhc2ggZnVuY3Rpb24gaXMgdHJ1bHkg Y29tcGF0aWJsZQorOzs7IHdpdGggdGhlIHVzZSBvZiBlcT8gb3IgZXF2PyBhcyBhbiBlcXVhbGl0 eSBwcmVkaWNhdGUuCis7OzsKKzs7OyBUaGF0IHdvdWxkIG1ha2UgU1JGSSAxMjUgYWxtb3N0IGFz IGJhZCBhcyBTUkZJIDY5IGlmIG5vdCBmb3IKKzs7OyB0aGUgZm9sbG93aW5nIHBhcmFncmFwaCBv ZiBTUkZJIDEyNToKKzs7OworOzs7ICAgICBJbXBsZW1lbnRhdGlvbnMgYXJlIHBlcm1pdHRlZCB0 byBpZ25vcmUgdXNlci1zcGVjaWZpZWQKKzs7OyAgICAgaGFzaCBmdW5jdGlvbnMgaW4gY2VydGFp biBjaXJjdW1zdGFuY2VzLiBTcGVjaWZpY2FsbHksCis7OzsgICAgIGlmIHRoZSBlcXVhbGl0eSBw cmVkaWNhdGUsIHdoZXRoZXIgcGFzc2VkIGFzIHBhcnQgb2YgYQorOzs7ICAgICBjb21wYXJhdG9y IG9yIGV4cGxpY2l0bHksIGlzIG1vcmUgZmluZS1ncmFpbmVkIChpbiB0aGUKKzs7OyAgICAgc2Vu c2Ugb2YgUjdSUy1zbWFsbCBzZWN0aW9uIDYuMSkgdGhhbiBlcXVhbD8sIHRoZQorOzs7ICAgICBp bXBsZW1lbnRhdGlvbiBpcyBmcmVlIOKAlCBpbmRlZWQsIGlzIGVuY291cmFnZWQg4oCUIHRvCis7 OzsgICAgIGlnbm9yZSB0aGUgdXNlci1zcGVjaWZpZWQgaGFzaCBmdW5jdGlvbiBhbmQgdXNlIHNv bWV0aGluZworOzs7ICAgICBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFRoaXMgYWxsb3dzIHRo ZSB1c2Ugb2YgYWRkcmVzc2VzCis7OzsgICAgIGFzIGhhc2hlcywgaW4gd2hpY2ggY2FzZSB0aGUg a2V5cyBtdXN0IGJlIHJlaGFzaGVkIGlmCis7OzsgICAgIHRoZXkgYXJlIG1vdmVkIGJ5IHRoZSBn YXJiYWdlIGNvbGxlY3Rvci4gU3VjaCBhIGhhc2gKKzs7OyAgICAgZnVuY3Rpb24gaXMgdW5zYWZl IHRvIHVzZSBvdXRzaWRlIHRoZSBjb250ZXh0IG9mCis7OzsgICAgIGltcGxlbWVudGF0aW9uLXBy b3ZpZGVkIGhhc2ggdGFibGVzLiBJdCBjYW4gb2YgY291cnNlIGJlCis7OzsgICAgIGV4cG9zZWQg YnkgYW4gaW1wbGVtZW50YXRpb24gYXMgYW4gZXh0ZW5zaW9uLCB3aXRoCis7OzsgICAgIHN1aXRh YmxlIHdhcm5pbmdzIGFnYWluc3QgaW5hcHByb3ByaWF0ZSB1c2VzLgorOzs7Cis7OzsgVGhhdCBn aXZlcyBpbXBsZW1lbnRhdGlvbnMgcGVybWlzc2lvbiB0byBkbyBzb21ldGhpbmcgbW9yZQorOzs7 IHVzZWZ1bCwgYnV0IHdoZW4gc2hvdWxkIGltcGxlbWVudGF0aW9ucyB0YWtlIGFkdmFudGFnZSBv ZgorOzs7IHRoYXQgcGVybWlzc2lvbj8gIFRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgc3Vw ZXJpb3IKKzs7OyBzb2x1dGlvbiBwcm92aWRlZCBieSBTUkZJIDEyNiB3aGVuZXZlcjoKKzs7Owor Ozs7ICAgICBBIGNvbXBhcmF0b3IgaXMgcGFzc2VkIGFzIGZpcnN0IGFyZ3VtZW50IGFuZCBpdHMg ZXF1YWxpdHkKKzs7OyAgICAgcHJlZGljYXRlIGlzIGVxPyBvciBlcXY/LgorOzs7Cis7OzsgICAg IFRoZSBlcT8gb3IgZXF2PyBwcm9jZWR1cmUgaXMgcGFzc2VkIGFzIGZpcnN0IGFyZ3VtZW50Cis7 OzsgICAgICh3aGljaCBpcyBhIGRlcHJlY2F0ZWQgdXNhZ2UpLgorCisoZGVmaW5lIChtYWtlLWhh c2gtdGFibGUgY29tcGFyYXRvci9lcXVpdiAuIHJlc3QpCisgIChpZiAoY29tcGFyYXRvcj8gY29t cGFyYXRvci9lcXVpdikKKyAgICAgIChsZXQgKChlcXVpdiAoY29tcGFyYXRvci1lcXVhbGl0eS1w cmVkaWNhdGUgY29tcGFyYXRvci9lcXVpdikpCisgICAgICAgICAgICAoaGFzaC1mdW5jdGlvbiAo JWNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBjb21wYXJhdG9yL2VxdWl2KSkpCisgICAgICAgICgl bWFrZS1oYXNoLXRhYmxlIGVxdWl2IGhhc2gtZnVuY3Rpb24gcmVzdCkpCisgICAgICAobGV0KiAo KGVxdWl2IGNvbXBhcmF0b3IvZXF1aXYpCisgICAgICAgICAgICAgKGhhc2gtZnVuY3Rpb24gKGlm IChhbmQgKG5vdCAobnVsbD8gcmVzdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHByb2NlZHVyZT8gKGNhciByZXN0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjYXIgcmVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2YpKQor ICAgICAgICAgICAgIChyZXN0IChpZiBoYXNoLWZ1bmN0aW9uIChjZHIgcmVzdCkgcmVzdCkpKQor ICAgICAgICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkICdzcmZpLTY5LXN0eWxlOm1ha2UtaGFz aC10YWJsZSkKKyAgICAgICAgKCVtYWtlLWhhc2gtdGFibGUgZXF1aXYgKCVnZXQtaGFzaC10YWJs ZS1oYXNoLWZ1bmN0aW9uIGVxdWl2IGhhc2gtZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc3QpKSkpCisKKyhkZWZpbmUgKCVtYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1m dW5jdGlvbiBvcHRzKQorICAoJWNoZWNrLW9wdGlvbmFsLWFyZ3VtZW50cyAnbWFrZS1oYXNoLXRh YmxlIG9wdHMpCisgIChsZXQgKCh3ZWFrbmVzcyAoJWdldC1oYXNoLXRhYmxlLXdlYWtuZXNzIG9w dHMpKQorICAgICAgICAoY2FwYWNpdHkgKCVnZXQtaGFzaC10YWJsZS1jYXBhY2l0eSBvcHRzKSkp CisgICAgKGdlbjptYWtlLWhhc2gtdGFibGUgZXF1aXYgaGFzaC1mdW5jdGlvbgorICAgICAgICAg ICAgICAgICAgICAgICAgICM6Y2FwYWNpdHkgY2FwYWNpdHkgIzp3ZWFrbmVzcyB3ZWFrbmVzcykp KQorCisoZGVmaW5lIChoYXNoLXRhYmxlIGNvbXBhcmF0b3IgLiBhcmdzKQorICAobGV0ICgoZXF1 aXYgKGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlIGNvbXBhcmF0b3IpKQorICAgICAgICAo aGFzaC1mdW5jdGlvbiAoJWNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBjb21wYXJhdG9yKSkpCisg ICAgKGFwcGx5IGdlbjpoYXNoLXRhYmxlIChpZiBoYXNoLWZ1bmN0aW9uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobGlzdCBlcXVpdiBoYXNoLWZ1bmN0aW9uKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXF1aXYpCisgICAgICAgICAgIGFyZ3MpKSkKKworKGRlZmluZSAo aGFzaC10YWJsZS11bmZvbGQgc3RvcD8gbWFwcGVyIHN1Y2Nlc3NvciBzZWVkIGNvbXBhcmF0b3Ig LiByZXN0KQorICAobGV0ICgoZXF1aXYgKGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlIGNv bXBhcmF0b3IpKQorICAgICAgICAoaGFzaC1mdW5jdGlvbiAoJWNvbXBhcmF0b3ItaGFzaC1mdW5j dGlvbiBjb21wYXJhdG9yKSkKKyAgICAgICAgKHdlYWtuZXNzICglZ2V0LWhhc2gtdGFibGUtd2Vh a25lc3MgcmVzdCkpCisgICAgICAgIChjYXBhY2l0eSAoJWdldC1oYXNoLXRhYmxlLWNhcGFjaXR5 IHJlc3QpKSkKKyAgICAoZ2VuOmhhc2gtdGFibGUtdW5mb2xkIHN0b3A/IG1hcHBlciBzdWNjZXNz b3Igc2VlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXYgaGFzaC1mdW5jdGlvbiAj OndlYWtuZXNzIHdlYWtuZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNhcGFjaXR5 IGNhcGFjaXR5KSkpCisKKyhkZWZpbmUgKGFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0IGNvbXBhcmF0 b3IvZXF1aXYgLiByZXN0KQorICAoaWYgKHByb2NlZHVyZT8gY29tcGFyYXRvci9lcXVpdikKKyAg ICAgIChsZXQqICgoZXF1aXYgY29tcGFyYXRvci9lcXVpdikKKyAgICAgICAgICAgICAoaGFzaC1m dW5jdGlvbiAoYW5kIChwYWlyPyByZXN0KSAocHJvY2VkdXJlPyAoY2FyIHJlc3QpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciByZXN0KSkpCisgICAgICAgICAgICAgKHJl c3QgKGlmIGhhc2gtZnVuY3Rpb24gKGNkciByZXN0KSByZXN0KSkKKyAgICAgICAgICAgICAoaGFz aC1mdW5jdGlvbiAoJWdldC1oYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24gZXF1aXYgaGFzaC1mdW5j dGlvbikpCisgICAgICAgICAgICAgKHdlYWtuZXNzICglZ2V0LWhhc2gtdGFibGUtd2Vha25lc3Mg cmVzdCkpCisgICAgICAgICAgICAgKGNhcGFjaXR5ICglZ2V0LWhhc2gtdGFibGUtY2FwYWNpdHkg cmVzdCkpKQorICAgICAgICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkICdzcmZpLTY5LXN0eWxl OmFsaXN0LT5oYXNoLXRhYmxlKQorICAgICAgICAoZ2VuOmFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0 IGVxdWl2IGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNh cGFjaXR5IGNhcGFjaXR5ICM6d2Vha25lc3Mgd2Vha25lc3MpKQorICAgICAgKGxldCogKChlcXVp diAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgY29tcGFyYXRvci9lcXVpdikpCisgICAg ICAgICAgICAgKGhhc2gtZnVuY3Rpb24gKCVjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY29tcGFy YXRvci9lcXVpdikpCisgICAgICAgICAgICAgKHdlYWtuZXNzICglZ2V0LWhhc2gtdGFibGUtd2Vh a25lc3MgcmVzdCkpCisgICAgICAgICAgICAgKGNhcGFjaXR5ICglZ2V0LWhhc2gtdGFibGUtY2Fw YWNpdHkgcmVzdCkpKQorICAgICAgICAoZ2VuOmFsaXN0LT5oYXNoLXRhYmxlIGFsaXN0IGVxdWl2 IGhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNhcGFjaXR5 IGNhcGFjaXR5ICM6d2Vha25lc3Mgd2Vha25lc3MpKSkpCisKKwwKKzs7OzsgQWNjZXNzaW5nIHRh YmxlIGl0ZW1zCisKKyhkZWZpbmUgaGFzaC10YWJsZS1yZWYgZ2VuOmhhc2gtdGFibGUtcmVmKQor KGRlZmluZSBoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGdlbjpoYXNoLXRhYmxlLXJlZi9kZWZhdWx0 KQorCisMCis7OzsgUHJlZGljYXRlcy4KKworKGRlZmluZSBoYXNoLXRhYmxlPyBnZW46aGFzaC10 YWJsZT8pCisoZGVmaW5lIGhhc2gtdGFibGUtZW1wdHk/IGdlbjpoYXNoLXRhYmxlLWVtcHR5PykK KyhkZWZpbmUgaGFzaC10YWJsZS1jb250YWlucz8gZ2VuOmhhc2gtdGFibGUtY29udGFpbnM/KQor KGRlZmluZSBoYXNoLXRhYmxlLW11dGFibGU/IGdlbjpoYXNoLXRhYmxlLW11dGFibGU/KQorCiso ZGVmaW5lIChoYXNoLXRhYmxlPT8gdmFsdWUtY29tcGFyYXRvciBodDEgaHQyKQorICAoZ2VuOmhh c2gtdGFibGU9PyAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgdmFsdWUtY29tcGFyYXRv cikKKyAgICAgICAgICAgICAgICAgICAgaHQxIGh0MikpCisKKwwKKzs7OyBNdXRhdG9ycy4KKwor KGRlZmluZSBoYXNoLXRhYmxlLXNldCEgZ2VuOmhhc2gtdGFibGUtc2V0ISkKKyhkZWZpbmUgaGFz aC10YWJsZS1kZWxldGUhIGdlbjpoYXNoLXRhYmxlLWRlbGV0ZSEpCisoZGVmaW5lIGhhc2gtdGFi bGUtaW50ZXJuISBnZW46aGFzaC10YWJsZS1pbnRlcm4hKQorKGRlZmluZSBoYXNoLXRhYmxlLXVw ZGF0ZSEgZ2VuOmhhc2gtdGFibGUtdXBkYXRlISkKKyhkZWZpbmUgaGFzaC10YWJsZS11cGRhdGUh L2RlZmF1bHQgZ2VuOmhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0KQorKGRlZmluZSBoYXNoLXRh YmxlLXBvcCEgZ2VuOmhhc2gtdGFibGUtcG9wISkKKyhkZWZpbmUgKGhhc2gtdGFibGUtY2xlYXIh IGh0KSAoZ2VuOmhhc2gtdGFibGUtY2xlYXIhIGh0KSkKKworDAorOzsgVGhlIHdob2xlIGhhc2gg dGFibGUuCisKKyhkZWZpbmUgaGFzaC10YWJsZS1zaXplIGdlbjpoYXNoLXRhYmxlLXNpemUpCiso ZGVmaW5lIGhhc2gtdGFibGUta2V5cyBnZW46aGFzaC10YWJsZS1rZXlzKQorKGRlZmluZSBoYXNo LXRhYmxlLXZhbHVlcyBnZW46aGFzaC10YWJsZS12YWx1ZXMpCisoZGVmaW5lIGhhc2gtdGFibGUt ZW50cmllcyBnZW46aGFzaC10YWJsZS1lbnRyaWVzKQorKGRlZmluZSBoYXNoLXRhYmxlLWZpbmQg Z2VuOmhhc2gtdGFibGUtZmluZCkKKyhkZWZpbmUgaGFzaC10YWJsZS1jb3VudCBnZW46aGFzaC10 YWJsZS1jb3VudCkKKworDAorOzs7IE1hcHBpbmcgYW5kIGZvbGRpbmcuCisKKyhkZWZpbmUgaGFz aC10YWJsZS1tYXAtPmxpc3QgZ2VuOmhhc2gtdGFibGUtbWFwLT5saXN0KQorKGRlZmluZSBoYXNo LXRhYmxlLWZvci1lYWNoIGdlbjpoYXNoLXRhYmxlLWZvci1lYWNoKQorKGRlZmluZSBoYXNoLXRh YmxlLXBydW5lISBnZW46aGFzaC10YWJsZS1wcnVuZSEpCisoZGVmaW5lIGhhc2gtdGFibGUtbWFw ISBnZW46aGFzaC10YWJsZS1tYXAhKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLW1hcCBwcm9jIGNv bXBhcmF0b3IgaHQpCisgIChsZXQgKChlcXVpdiAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNh dGUgY29tcGFyYXRvcikpCisgICAgICAgIChoYXNoLWZ1bmN0aW9uICglY29tcGFyYXRvci1oYXNo LWZ1bmN0aW9uIGNvbXBhcmF0b3IpKSkKKyAgICAoZ2VuOmhhc2gtdGFibGUtbWFwIHByb2MgaHQg ZXF1aXYgaGFzaC1mdW5jdGlvbikpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWZvbGQgcHJvYyBp bml0IGh0KQorICAoaWYgKGhhc2gtdGFibGU/IHByb2MpCisgICAgICAoYmVnaW4gKGlzc3VlLXdh cm5pbmctZGVwcmVjYXRlZCAnc3JmaS02OS1zdHlsZTpoYXNoLXRhYmxlLWZvbGQpCisgICAgICAg ICAgICAgKGhhc2gtdGFibGUtZm9sZCBpbml0IGh0IHByb2MpKQorICAgICAgKGdlbjpoYXNoLXRh YmxlLWZvbGQgcHJvYyBpbml0IGh0KSkpCisKKworDAorOzs7IENvcHlpbmcgYW5kIGNvbnZlcnNp b24uCisKKyhkZWZpbmUgaGFzaC10YWJsZS0+YWxpc3QgZ2VuOmhhc2gtdGFibGUtPmFsaXN0KQor CisoZGVmaW5lKiAoaGFzaC10YWJsZS1jb3B5IGh0ICM6b3B0aW9uYWwgbXV0YWJsZSkKKyAgKGdl bjpoYXNoLXRhYmxlLWNvcHkgaHQgIzptdXRhYmxlIG11dGFibGUpKQorCisoZGVmaW5lIChoYXNo LXRhYmxlLWVtcHR5LWNvcHkgaHQpCisgIChnZW46aGFzaC10YWJsZS1lbXB0eS1jb3B5IGh0KSkK KworDAorOzs7IEhhc2ggdGFibGVzIGFzIHNldHMuCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtdW5p b24hIGh0MSBodDIpCisgICh1bmxlc3MgKGVxPyAoZ2VuOmhhc2gtdGFibGUtZXF1aXZhbGVuY2Ut ZnVuY3Rpb24gaHQxKQorICAgICAgICAgICAgICAgKGdlbjpoYXNoLXRhYmxlLWVxdWl2YWxlbmNl LWZ1bmN0aW9uIGh0MikpCisgICAgKGVycm9yICJIYXNoIHRhYmxlcyBoYXZlIGRpZmZlcmVudCBl cXVpdmFsZW5jZSBmdW5jdGlvbnMiIGh0MSBodDIpKQorICAoZ2VuOmhhc2gtdGFibGUtdW5pb24h IGh0MSBodDIpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWludGVyc2VjdGlvbiEgaHQxIGh0MikK KyAgKHVubGVzcyAoZXE/IChnZW46aGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodDEp CisgICAgICAgICAgICAgICAoZ2VuOmhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQy KSkKKyAgICAoZXJyb3IgIkhhc2ggdGFibGVzIGhhdmUgZGlmZmVyZW50IGVxdWl2YWxlbmNlIGZ1 bmN0aW9ucyIgaHQxIGh0MikpCisgIChnZW46aGFzaC10YWJsZS1pbnRlcnNlY3Rpb24hIGh0MSBo dDIpKQorCisoZGVmaW5lIChoYXNoLXRhYmxlLWRpZmZlcmVuY2UhIGh0MSBodDIpCisgICh1bmxl c3MgKGVxPyAoZ2VuOmhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVuY3Rpb24gaHQxKQorICAgICAg ICAgICAgICAgKGdlbjpoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0MikpCisgICAg KGVycm9yICJIYXNoIHRhYmxlcyBoYXZlIGRpZmZlcmVudCBlcXVpdmFsZW5jZSBmdW5jdGlvbnMi IGh0MSBodDIpKQorICAoZ2VuOmhhc2gtdGFibGUtZGlmZmVyZW5jZSEgaHQxIGh0MikpCisKKyhk ZWZpbmUgKGhhc2gtdGFibGUteG9yISBodDEgaHQyKQorICAodW5sZXNzIChlcT8gKGdlbjpoYXNo LXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0MSkKKyAgICAgICAgICAgICAgIChnZW46aGFz aC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodDIpKQorICAgIChlcnJvciAiSGFzaCB0YWJs ZXMgaGF2ZSBkaWZmZXJlbnQgZXF1aXZhbGVuY2UgZnVuY3Rpb25zIiBodDEgaHQyKSkKKyAgKGdl bjpoYXNoLXRhYmxlLXhvciEgaHQxIGh0MikpCisKKworOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworOzs7Cis7OzsgVGhlIGZv bGxvd2luZyBwcm9jZWR1cmVzIGFyZSBkZXByZWNhdGVkIGJ5IFNSRkkgMTI1LCBidXQgbXVzdAor Ozs7IGJlIGV4cG9ydGVkIG5vbmV0aGVsZXNzLgorOzs7Cis7OzsgUHJvZ3JhbXMgdGhhdCBpbXBv cnQgdGhlIChzcmZpIDEyNSkgbGlicmFyeSBtdXN0IHJlbmFtZSB0aGUKKzs7OyBkZXByZWNhdGVk IHN0cmluZy1oYXNoIGFuZCBzdHJpbmctY2ktaGFzaCBwcm9jZWR1cmVzIHRvIGF2b2lkCis7Ozsg Y29uZmxpY3Qgd2l0aCB0aGUgc3RyaW5nLWhhc2ggYW5kIHN0cmluZy1jaS1oYXNoIHByb2NlZHVy ZXMKKzs7OyBleHBvcnRlZCBieSBTUkZJIDEyNiBhbmQgU1JGSSAxMjguCis7OzsKKzs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsK KworKGRlZmluZSAoZGVwcmVjYXRlZDpoYXNoIG9iaiAuIHJlc3QpCisgIChpc3N1ZS13YXJuaW5n LWRlcHJlY2F0ZWQgJ2hhc2gpCisgIChhcHBseSBnZW46aGFzaCBvYmogcmVzdCkpCisKKyhkZWZp bmUgKGRlcHJlY2F0ZWQ6c3RyaW5nLWhhc2ggb2JqIC4gcmVzdCkKKyAgKGlzc3VlLXdhcm5pbmct ZGVwcmVjYXRlZCAnc3JmaS0xMjU6c3RyaW5nLWhhc2gpCisgIChhcHBseSBzdHJpbmctaGFzaCBv YmogcmVzdCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0ZWQ6c3RyaW5nLWNpLWhhc2ggb2JqIC4gcmVz dCkKKyAgKGlzc3VlLXdhcm5pbmctZGVwcmVjYXRlZCAnc3JmaS0xMjU6c3RyaW5nLWNpLWhhc2gp CisgIChhcHBseSBzdHJpbmctY2ktaGFzaCBvYmogcmVzdCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0 ZWQ6aGFzaC1ieS1pZGVudGl0eSBvYmogLiByZXN0KQorICAoaXNzdWUtd2FybmluZy1kZXByZWNh dGVkICdoYXNoLWJ5LWlkZW50aXR5KQorICAoYXBwbHkgZ2VuOmhhc2gtYnktaWRlbnRpdHkgb2Jq IHJlc3QpKQorCisoZGVmaW5lIChkZXByZWNhdGVkOmhhc2gtdGFibGUtZXF1aXZhbGVuY2UtZnVu Y3Rpb24gaHQpCisgIChpc3N1ZS13YXJuaW5nLWRlcHJlY2F0ZWQgJ2hhc2gtdGFibGUtZXF1aXZh bGVuY2UtZnVuY3Rpb24pCisgIChnZW46aGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBo dCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uIGh0KQor ICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVkICdoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24pCisg IChnZW46aGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uIGh0KSkKKworKGRlZmluZSAoZGVwcmVjYXRl ZDpoYXNoLXRhYmxlLWV4aXN0cz8gaHQga2V5KQorICAoaXNzdWUtd2FybmluZy1kZXByZWNhdGVk ICdoYXNoLXRhYmxlLWV4aXN0cz8pCisgIChnZW46aGFzaC10YWJsZS1jb250YWlucz8gaHQga2V5 KSkKKworKGRlZmluZSAoZGVwcmVjYXRlZDpoYXNoLXRhYmxlLXdhbGsgaHQgcHJvYykKKyAgKGlz c3VlLXdhcm5pbmctZGVwcmVjYXRlZCAnaGFzaC10YWJsZS13YWxrKQorICAoZ2VuOmhhc2gtdGFi bGUtZm9yLWVhY2ggcHJvYyBodCkpCisKKyhkZWZpbmUgKGRlcHJlY2F0ZWQ6aGFzaC10YWJsZS1t ZXJnZSEgaHQxIGh0MikKKyAgKGlzc3VlLXdhcm5pbmctZGVwcmVjYXRlZCAnaGFzaC10YWJsZS1t ZXJnZSEpCisgIChnZW46aGFzaC10YWJsZS11bmlvbiEgaHQxIGh0MikpCisKKzs7IGVvZgpkaWZm IC0tZ2l0IGEvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbSBiL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0K aW5kZXggYTJmNzNiMzI5Li4zODUzN2FhYWMgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvTWFrZWZp bGUuYW0KKysrIGIvdGVzdC1zdWl0ZS9NYWtlZmlsZS5hbQpAQCAtMTYyLDYgKzE2Miw3IEBAIFND TV9URVNUUyA9IHRlc3RzLzAwLWluaXRpYWwtZW52LnRlc3QJCVwKIAkgICAgdGVzdHMvc3JmaS05 OC50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZpLTEwNS50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZp LTExMS50ZXN0CQkJXAorCSAgICB0ZXN0cy9zcmZpLTEyNS50ZXN0CQkJXAogCSAgICB0ZXN0cy9z cmZpLTEyNi50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZpLTEyOC50ZXN0CQkJXAogCSAgICB0ZXN0 cy9zcmZpLTQudGVzdAkJCVwKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjUu dGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjUudGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAuLmU1YmE5NWVkMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtc3Vp dGUvdGVzdHMvc3JmaS0xMjUudGVzdApAQCAtMCwwICsxLDg2MCBAQAorOzs7OyBzcmZpLTEyNS50 ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDEyNSAtKi0gc2NoZW1lIC0qLQorOzs7OworOzs7 OyAJQ29weXJpZ2h0IChDKSAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOzs7 OworOzs7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCis7Ozs7IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7OzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7Ozs7IHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OzsKKzs7Ozsg VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCis7Ozs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCis7Ozs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7Ozs7IExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7Ozs7Cis7Ozs7IFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7Ozsg TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorOzs7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisKKzs7OyBUaGUgZm9sbG93aW5n IHRlc3RzIGFyZSB0aGUgdGVzdHMgZnJvbSBTUkZJLTEyNSByZWZlcmVuY2UKKzs7OyBpbXBsZW1l bnRhdGlvbiBwb3J0ZWQgdG8gR3VpbGUgdGVzdCBzdWl0ZS4KKworOzs7IENvcHlyaWdodCAoQykg V2lsbGlhbSBEIENsaW5nZXIgMjAxNS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKzs7OworOzs7IFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u Cis7Ozsgb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24KKzs7OyBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLAorOzs7IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsCis7OzsgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwKKzs7OyBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLAorOzs7IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorOzs7Cis7OzsgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2Ugc2hhbGwgYmUKKzs7OyBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKzs7OworOzs7IFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorOzs7IEVY UFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRgorOzs7IE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKzs7OyBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorOzs7IENMQUlNLCBE QU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsCis7OzsgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUKKzs7OyBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KKworOzs7IENvbWVudGFyeSBmcm9tIHN0YW5kYXJkIFNSRkkg MTI1IHRlc3RzOgorOzs7Cis7OzsgVGhpcyBpcyBhIHZlcnkgc2hhbGxvdyBzYW5pdHkgdGVzdCBm b3IgaGFzaCB0YWJsZXMuCis7OzsKKzs7OyBUZXN0cyBtYXJrZWQgYnkgYSAiRklYTUU6IGdsYXNz LWJveCIgY29tbWVudCB0ZXN0IGJlaGF2aW9yIG9mIHRoZQorOzs7IHJlZmVyZW5jZSBpbXBsZW1l bnRhdGlvbiB0aGF0IGlzIG5vdCByZXF1aXJlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi4KKworKGRl ZmluZS1tb2R1bGUgKHRlc3Qtc3JmaS0xMjUpCisgICM6ZHVwbGljYXRlcyAobGFzdCkKKyAgIzp1 c2UtbW9kdWxlICh0ZXN0LXN1aXRlIGxpYikKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTI4 KQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjUpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBz cmZpLTEpCisgICM6dXNlLW1vZHVsZSAocm5ycyBieXRldmVjdG9ycykKKyAgIzp1c2UtbW9kdWxl ICgocm5ycyBiYXNlKSAjOnNlbGVjdCAoc3ltYm9sPT8pKQorICAjOnVzZS1tb2R1bGUgKChybnJz KSAjOnNlbGVjdCAobGlzdC1zb3J0IGd1YXJkKSkpCisKKyhkZWZpbmUgKGJ5dGV2ZWN0b3IgLiBh cmdzKQorICAodTgtbGlzdC0+Ynl0ZXZlY3RvciBhcmdzKSkKKworKGRlZmluZSBkZWZhdWx0LWNv bXBhcmF0b3IgKG1ha2UtZGVmYXVsdC1jb21wYXJhdG9yKSkKKworKGRlZmluZSBudW1iZXItY29t cGFyYXRvcgorICAobWFrZS1jb21wYXJhdG9yIHJlYWw/ID0gPCAobGFtYmRhICh4KSAoaW5leGFj dC0+ZXhhY3QgKGFicyAocm91bmQgeCkpKSkpKQorCisoZGVmaW5lIHN0cmluZy1jb21wYXJhdG9y CisgIChtYWtlLWNvbXBhcmF0b3Igc3RyaW5nPyBzdHJpbmc9PyBzdHJpbmc8PyBzdHJpbmctaGFz aCkpCisKKyhkZWZpbmUgc3RyaW5nLWNpLWNvbXBhcmF0b3IKKyAgKG1ha2UtY29tcGFyYXRvciBz dHJpbmc/IHN0cmluZy1jaT0/IHN0cmluZy1jaTw/IHN0cmluZy1jaS1oYXNoKSkKKworKGRlZmlu ZSBlcS1jb21wYXJhdG9yIChtYWtlLWVxLWNvbXBhcmF0b3IpKQorCisoZGVmaW5lIGVxdi1jb21w YXJhdG9yIChtYWtlLWVxdi1jb21wYXJhdG9yKSkKKworOzs7IFJldHVybnMgYW4gaW1tdXRhYmxl IGhhc2ggdGFibGUuCisKKyhkZWZpbmUgKGhhc2gtdGFibGUtdGFidWxhdGUgY29tcGFyYXRvciBu IHByb2MpCisgIChsZXQgKChodCAobWFrZS1oYXNoLXRhYmxlIGNvbXBhcmF0b3IpKSkKKyAgICAo ZG8gKChpIDAgKCsgaSAxKSkpCisgICAgICAgICgoPSBpIG4pCisgICAgICAgICAoaGFzaC10YWJs ZS1jb3B5IGh0KSkKKyAgICAgIChjYWxsLXdpdGgtdmFsdWVzCisgICAgICAgICAgKGxhbWJkYSAo KQorICAgICAgICAgICAgKHByb2MgaSkpCisgICAgICAgIChsYW1iZGEgKGtleSB2YWwpCisgICAg ICAgICAgKGhhc2gtdGFibGUtc2V0ISBodCBrZXkgdmFsKSkpKSkpCisKKzs7OyBDb25zdHJ1Y3Rv cnMuCisKKyhkZWZpbmUgaHQtZGVmYXVsdCAobWFrZS1oYXNoLXRhYmxlIGRlZmF1bHQtY29tcGFy YXRvcikpCisKKyhkZWZpbmUgaHQtZXEgKG1ha2UtaGFzaC10YWJsZSBlcS1jb21wYXJhdG9yICdy YW5kb20tYXJndW1lbnQgImFub3RoZXIiKSkKKworKGRlZmluZSBodC1lcXYgKG1ha2UtaGFzaC10 YWJsZSBlcXYtY29tcGFyYXRvcikpCisKKyhkZWZpbmUgaHQtZXEyIChtYWtlLWhhc2gtdGFibGUg ZXE/KSkKKworKGRlZmluZSBodC1lcXYyIChtYWtlLWhhc2gtdGFibGUgZXF2PykpCisKKyhkZWZp bmUgaHQtZXF1YWwgKG1ha2UtaGFzaC10YWJsZSBlcXVhbD8pKQorCisoZGVmaW5lIGh0LXN0cmlu ZyAobWFrZS1oYXNoLXRhYmxlIHN0cmluZz0/KSkKKworKGRlZmluZSBodC1zdHJpbmctY2kgKG1h a2UtaGFzaC10YWJsZSBzdHJpbmctY2k9PykpCisKKyhkZWZpbmUgaHQtc3ltYm9sIChtYWtlLWhh c2gtdGFibGUgc3ltYm9sPT8pKSAgICA7IEZJWE1FOiBnbGFzcy1ib3gKKworKGRlZmluZSBodC1m aXhudW0gKG1ha2UtaGFzaC10YWJsZSA9IGFicykpCisKKzs7IFNwZWMgc2F5cyBIQVNILVRBQkxF IHJldHVybnMgYW4gaW1tdXRhYmxlIGhhc2ggdGFibGUsIHNvIHdlIHB1dCBhCis7OyBIQVNILVRB QkxFLUNPUFkgaGVyZQorKGRlZmluZSBodC1kZWZhdWx0MgorICAoaGFzaC10YWJsZS1jb3B5Cisg ICAoaGFzaC10YWJsZSBkZWZhdWx0LWNvbXBhcmF0b3IgJ2ZvbyAnYmFyIDEwMS4zICJmZXZlciIg Jyh4IHkgeikgJyMoKSkKKyAgICN0KSkKKworKGRlZmluZSBodC1maXhudW0yCisgIChoYXNoLXRh YmxlLXRhYnVsYXRlIG51bWJlci1jb21wYXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgIDEw CisgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGkpICh2YWx1ZXMgKCogaSBpKSBpKSkp KQorCisoZGVmaW5lIGh0LXN0cmluZzIKKyAgKGhhc2gtdGFibGUtdW5mb2xkIChsYW1iZGEgKHMp ICg9IDAgKHN0cmluZy1sZW5ndGggcykpKQorICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAo cykgKHZhbHVlcyBzIChzdHJpbmctbGVuZ3RoIHMpKSkKKyAgICAgICAgICAgICAgICAgICAgIChs YW1iZGEgKHMpIChzdWJzdHJpbmcgcyAwICgtIChzdHJpbmctbGVuZ3RoIHMpIDEpKSkKKyAgICAg ICAgICAgICAgICAgICAgICJwcmVmaXhlcyIKKyAgICAgICAgICAgICAgICAgICAgIHN0cmluZy1j b21wYXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAnaWdub3JlZDEgJ2lnbm9yZWQyICJpZ25v cmVkMyIgJyMoaWdub3JlZCA0IDUpKSkKKworKGRlZmluZSBodC1zdHJpbmctY2kyCisgIChhbGlz dC0+aGFzaC10YWJsZSAnKCgiIiAuIDApICgiTWFyeSIgLiA0KSAoIlBhdWwiIC4gNCkgKCJQZXRl ciIgLiA1KSkKKyAgICAgICAgICAgICAgICAgICAgIHN0cmluZy1jaS1jb21wYXJhdG9yCisgICAg ICAgICAgICAgICAgICAgICAiaWdub3JlZDEiICdpZ25vcmVkMikpCisKKyhkZWZpbmUgaHQtc3lt Ym9sMgorICAoYWxpc3QtPmhhc2gtdGFibGUgJygobWFyeSAuIHRyYXZlcnMpIChub2VsIC4gc3Rv b2tleSkgKHBldGVyIC4geWFycm93KSkKKyAgICAgICAgICAgICAgICAgICAgIGVxPykpCisKKyhk ZWZpbmUgaHQtZXF1YWwyCisgIChhbGlzdC0+aGFzaC10YWJsZSAnKCgoZWR3YXJkKSAuIGFiYmV5 KQorICAgICAgICAgICAgICAgICAgICAgICAoKGRhc2hpZWxsKSAuIGhhbW1ldHQpCisgICAgICAg ICAgICAgICAgICAgICAgICgoZWR3YXJkKSAuIHRlYWNoKQorICAgICAgICAgICAgICAgICAgICAg ICAoKG1hcmspIC4gdHdhaW4pKQorICAgICAgICAgICAgICAgICAgICAgZXF1YWw/CisgICAgICAg ICAgICAgICAgICAgICAoY29tcGFyYXRvci1oYXNoLWZ1bmN0aW9uIGRlZmF1bHQtY29tcGFyYXRv cikpKQorCisoZGVmaW5lIHRlc3QtdGFibGVzCisgIChsaXN0IGh0LWRlZmF1bHQgICBodC1kZWZh dWx0MiAgIDsgaW5pdGlhbCBrZXlzOiBmb28sIDEwMS4zLCAoeCB5IHopCisgICAgICAgIGh0LWVx ICAgICAgICBodC1lcTIgICAgICAgIDsgaW5pdGlhbGx5IGVtcHR5CisgICAgICAgIGh0LWVxdiAg ICAgICBodC1lcXYyICAgICAgIDsgaW5pdGlhbGx5IGVtcHR5CisgICAgICAgIGh0LWVxdWFsICAg ICBodC1lcXVhbDIgICAgIDsgaW5pdGlhbCBrZXlzOiAoZWR3YXJkKSwgKGRhc2hpZWxsKSwgKG1h cmspCisgICAgICAgIGh0LXN0cmluZyAgICBodC1zdHJpbmcyICAgIDsgaW5pdGlhbCBrZXlzOiAi cCwgInByIiwgLi4uLCAicHJlZml4ZXMiCisgICAgICAgIGh0LXN0cmluZy1jaSBodC1zdHJpbmct Y2kyIDsgaW5pdGlhbCBrZXlzOiAiIiwgIk1hcnkiLCAiUGF1bCIsICJQZXRlciIKKyAgICAgICAg aHQtc3ltYm9sICAgIGh0LXN5bWJvbDIgICAgOyBpbml0aWFsIGtleXM6IG1hcnksIG5vZWwsIHBl dGVyCisgICAgICAgIGh0LWZpeG51bSAgICBodC1maXhudW0yKSkgIDsgaW5pdGlhbCBrZXlzOiAw LCAxLCA0LCA5LCAuLi4sIDgxCisKKworKHdpdGgtdGVzdC1wcmVmaXggIlNSRkktMTI1IgorCisg ICh3aXRoLXRlc3QtcHJlZml4ICJwcmVkaWNhdGVzIgorCisgICAgKHBhc3MtaWYtZXF1YWwgImhh c2gtdGFibGU/IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgKGFwcGVuZCAnKCNmICNmKSAo bWFwIChsYW1iZGEgKHgpICN0KSB0ZXN0LXRhYmxlcykpCisgICAgICAobWFwIGhhc2gtdGFibGU/ CisgICAgICAgICAgIChjb25zICcjKCkKKyAgICAgICAgICAgICAgICAgKGNvbnMgZGVmYXVsdC1j b21wYXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgIHRlc3QtdGFibGVzKSkpKQorCisgICAg KHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtY29udGFpbnM/IGZ1bmN0aW9ucyBwcm9wZXJseSIK KyAgICAgICAgJygjZiAjdCAjZiAjZiAjZiAjZiAjZiAjdCAjZiAjdCAjZiAjdCAjZiAjdCAjZiAj dCkKKyAgICAgIChtYXAgaGFzaC10YWJsZS1jb250YWlucz8KKyAgICAgICAgICAgdGVzdC10YWJs ZXMKKyAgICAgICAgICAgJyhmb28gMTAxLjMKKyAgICAgICAgICAgICAgICAgeCAieSIKKyAgICAg ICAgICAgICAgICAgKDE0IDE1KSAjXG5ld2xpbmUKKyAgICAgICAgICAgICAgICAgKGVkd2FyZCkg KG1hcmspCisgICAgICAgICAgICAgICAgICJwIiAicHJlZiIKKyAgICAgICAgICAgICAgICAgIm1p a2UiICJQQVVMIgorICAgICAgICAgICAgICAgICBqYW5lIG5vZWwKKyAgICAgICAgICAgICAgICAg MCA0KSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1jb250YWlucz8gZnVuY3Rp b25zIHByb3Blcmx5IgorICAgICAgICAobWFwIChsYW1iZGEgKHgpICNmKSB0ZXN0LXRhYmxlcykK KyAgICAgIChtYXAgaGFzaC10YWJsZS1jb250YWlucz8KKyAgICAgICAgICAgdGVzdC10YWJsZXMK KyAgICAgICAgICAgYCgsKGJ5dGV2ZWN0b3IpIDQ3LjkKKyAgICAgICAgICAgICAnIygpICcoKQor ICAgICAgICAgICAgIGZvbyBiYXIKKyAgICAgICAgICAgICAxOSAoaGVucnkpCisgICAgICAgICAg ICAgInAiICJwZXJwIgorICAgICAgICAgICAgICJtaWtlIiAiTm9lbCIKKyAgICAgICAgICAgICBq YW5lIHBhdWwKKyAgICAgICAgICAgICAwIDUpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNo LXRhYmxlLWVtcHR5PyBmdW5jdGlvbnMgcHJvcGVybHkiCisgICAgICAgICcoI3QgI2YgI3QgI3Qg I3QgI3QgI3QgI2YgI3QgI2YgI3QgI2YgI3QgI2YgI3QgI2YpCisgICAgICAobWFwIGhhc2gtdGFi bGUtZW1wdHk/IHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxl PT8gaXMgcmVmbGVjdGl2ZSIKKyAgICAgICAgKG1hcCAobGFtYmRhICh4KSAjdCkgdGVzdC10YWJs ZXMpCisgICAgICAobWFwIChsYW1iZGEgKGh0MSBodDIpIChoYXNoLXRhYmxlPT8gZGVmYXVsdC1j b21wYXJhdG9yIGh0MSBodDIpKQorICAgICAgICAgICB0ZXN0LXRhYmxlcworICAgICAgICAgICB0 ZXN0LXRhYmxlcykpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZT0/IGZ1bmN0aW9u cyBwcm9wZXJseSIKKyAgICAgICAgJygjZiAjZiAjdCAjdCAjdCAjdCAjZiAjZiAjZiAjZiAjZiAj ZiAjZiAjZiAjZiAjZikKKyAgICAgIChtYXAgKGxhbWJkYSAoaHQxIGh0MikgKGhhc2gtdGFibGU9 PyBkZWZhdWx0LWNvbXBhcmF0b3IgaHQxIGh0MikpCisgICAgICAgICAgIHRlc3QtdGFibGVzCisg ICAgICAgICAgIChkbyAoKHRhYmxlcyAocmV2ZXJzZSB0ZXN0LXRhYmxlcykgKGNkZHIgdGFibGVz KSkKKyAgICAgICAgICAgICAgICAocmV2ICcoKSAoY29ucyAoY2FyIHRhYmxlcykgKGNvbnMgKGNh ZHIgdGFibGVzKSByZXYpKSkpCisgICAgICAgICAgICAgICAoKG51bGw/IHRhYmxlcykKKyAgICAg ICAgICAgICAgICByZXYpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1tdXRh YmxlPyBmdW5jdGlvbnMgcHJvcGVybHkgb24gbXV0YWJsZSBoYXNoIHRhYmxlcyAxIgorICAgICAg ICAnKCN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICN0ICNmKQorICAg ICAgKG1hcCBoYXNoLXRhYmxlLW11dGFibGU/IHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlm LWVxdWFsICJoYXNoLXRhYmxlLW11dGFibGU/IGZ1bmN0aW9ucyBwcm9wZXJseSBvbiBpbW11dGFi bGUgaGFzaCB0YWJsZXMiCisgICAgICAgIChtYXAgKGxhbWJkYSAoeCkgI2YpIHRlc3QtdGFibGVz KQorICAgICAgKG1hcCBoYXNoLXRhYmxlLW11dGFibGU/IChtYXAgaGFzaC10YWJsZS1jb3B5IHRl c3QtdGFibGVzKSkpCisKKyAgICAocGFzcy1pZiAiaGFzaC10YWJsZS1tdXRhYmxlPyBmdW5jdGlv bnMgcHJvcGVybHkgb24gbXV0YWJsZSBoYXNoIHRhYmxlcyAyIgorICAgICAgKGhhc2gtdGFibGUt bXV0YWJsZT8gKGhhc2gtdGFibGUtY29weSBodC1maXhudW0yICN0KSkpKQorCisgICh3aXRoLXRl c3QtcHJlZml4ICJhY2Nlc3NvcnMiCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1y ZWYgd2hlbiBrZXkgaXMgbm90IGluIHRhYmxlIDEiCisgICAgICAgIChtYXAgKGxhbWJkYSAoaHQp ICdlcnIpIHRlc3QtdGFibGVzKQorICAgICAgKG1hcCAobGFtYmRhIChodCkKKyAgICAgICAgICAg ICAoZ3VhcmQgKGV4bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VycikpCisgICAgICAg ICAgICAgICAoaGFzaC10YWJsZS1yZWYgaHQgJ25vdC1hLWtleSkpKQorICAgICAgICAgICB0ZXN0 LXRhYmxlcykpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1yZWYgd2hlbiBrZXkg aXMgbm90IGluIHRhYmxlIDIiCisgICAgICAgIChtYXAgKGxhbWJkYSAoaHQpICdlcnIpIHRlc3Qt dGFibGVzKQorICAgICAgKG1hcCAobGFtYmRhIChodCkKKyAgICAgICAgICAgICAoZ3VhcmQgKGV4 bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VycikpCisgICAgICAgICAgICAgICAoaGFz aC10YWJsZS1yZWYgaHQgJ25vdC1hLWtleSAobGFtYmRhICgpICdlcnIpKSkpCisgICAgICAgICAg IHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXJlZiB3aGVu IGtleSBpcyBub3QgaW4gdGFibGUgMyIKKyAgICAgICAgKG1hcCAobGFtYmRhIChodCkgJ2Vycikg dGVzdC10YWJsZXMpCisgICAgICAobWFwIChsYW1iZGEgKGh0KQorICAgICAgICAgICAgIChndWFy ZCAoZXhuCisgICAgICAgICAgICAgICAgICAgICAoZWxzZSAnZXJyKSkKKyAgICAgICAgICAgICAg IChoYXNoLXRhYmxlLXJlZiBodCAnbm90LWEta2V5IChsYW1iZGEgKCkgJ2VycikgdmFsdWVzKSkp CisgICAgICAgICAgIHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRh YmxlLXJlZiBmdW5jdGlvbnMgcHJvcGVybHkiCisgICAgICAgICcoZXJyICJmZXZlciIgZXJyIGVy ciBlcnIgZXJyIGVyciB0d2FpbiBlcnIgNCBlcnIgNCBlcnIgc3Rvb2tleSBlcnIgMikKKyAgICAg IChtYXAgKGxhbWJkYSAoaHQga2V5KQorICAgICAgICAgICAgIChndWFyZCAoZXhuCisgICAgICAg ICAgICAgICAgICAgICAoZWxzZSAnZXJyKSkKKyAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLXJl ZiBodCBrZXkpKSkKKyAgICAgICAgICAgdGVzdC10YWJsZXMKKyAgICAgICAgICAgJyhmb28gMTAx LjMKKyAgICAgICAgICAgICAgICAgeCAieSIKKyAgICAgICAgICAgICAgICAgKDE0IDE1KSAjXG5l d2xpbmUKKyAgICAgICAgICAgICAgICAgKGVkd2FyZCkgKG1hcmspCisgICAgICAgICAgICAgICAg ICJwIiAicHJlZiIKKyAgICAgICAgICAgICAgICAgIm1pa2UiICJQQVVMIgorICAgICAgICAgICAg ICAgICBqYW5lIG5vZWwKKyAgICAgICAgICAgICAgICAgMCA0KSkpCisKKyAgICAocGFzcy1pZi1l cXVhbCAiaGFzaC10YWJsZS1yZWYgYWNjZXB0cyBGQUlMVVJFIGFuZCBmdW5jdGlvbnMgcHJvcGVy bHkiCisgICAgICAgICcoZWggImZldmVyIiBlaCBlaCBlaCBlaCBlaCB0d2FpbiBlaCA0IGVoIDQg ZWggc3Rvb2tleSBlaCAyKQorICAgICAgKG1hcCAobGFtYmRhIChodCBrZXkpCisgICAgICAgICAg ICAgKGhhc2gtdGFibGUtcmVmIGh0IGtleSAobGFtYmRhICgpICdlaCkpKQorICAgICAgICAgICB0 ZXN0LXRhYmxlcworICAgICAgICAgICAnKGZvbyAxMDEuMworICAgICAgICAgICAgICAgICB4ICJ5 IgorICAgICAgICAgICAgICAgICAoMTQgMTUpICNcbmV3bGluZQorICAgICAgICAgICAgICAgICAo ZWR3YXJkKSAobWFyaykKKyAgICAgICAgICAgICAgICAgInAiICJwcmVmIgorICAgICAgICAgICAg ICAgICAibWlrZSIgIlBBVUwiCisgICAgICAgICAgICAgICAgIGphbmUgbm9lbAorICAgICAgICAg ICAgICAgICAwIDQpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXJlZiBhY2Nl cHRzIEZBSUxVUkUgYW5kIFNVQ0NFU1MgYW5kIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAg JyhlaCAoImZldmVyIikgZWggZWggZWggZWggZWggKHR3YWluKSBlaCAoNCkgZWggKDQpIGVoIChz dG9va2V5KSBlaCAoMikpCisgICAgICAobWFwIChsYW1iZGEgKGh0IGtleSkKKyAgICAgICAgICAg ICAoZ3VhcmQgKGV4bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VycikpCisgICAgICAg ICAgICAgICAoaGFzaC10YWJsZS1yZWYgaHQga2V5IChsYW1iZGEgKCkgJ2VoKSBsaXN0KSkpCisg ICAgICAgICAgIHRlc3QtdGFibGVzCisgICAgICAgICAgICcoZm9vIDEwMS4zCisgICAgICAgICAg ICAgICAgIHggInkiCisgICAgICAgICAgICAgICAgICgxNCAxNSkgI1xuZXdsaW5lCisgICAgICAg ICAgICAgICAgIChlZHdhcmQpIChtYXJrKQorICAgICAgICAgICAgICAgICAicCIgInByZWYiCisg ICAgICAgICAgICAgICAgICJtaWtlIiAiUEFVTCIKKyAgICAgICAgICAgICAgICAgamFuZSBub2Vs CisgICAgICAgICAgICAgICAgIDAgNCkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFi bGUtcmVmL2RlZmF1bHQgdXNlcyBERUZBVUxUIgorICAgICAgICAobWFwIChsYW1iZGEgKGh0KSAn ZWgpIHRlc3QtdGFibGVzKQorICAgICAgKG1hcCAobGFtYmRhIChodCkKKyAgICAgICAgICAgICAo Z3VhcmQgKGV4bgorICAgICAgICAgICAgICAgICAgICAgKGVsc2UgJ2VoKSkKKyAgICAgICAgICAg ICAgIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0ICdub3QtYS1rZXkgJ2VoKSkpCisgICAgICAg ICAgIHRlc3QtdGFibGVzKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXJlZi9k ZWZhdWx0IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgJyhlaCAiZmV2ZXIiIGVoIGVoIGVo IGVoIGVoIHR3YWluIGVoIDQgZWggNCBlaCBzdG9va2V5IGVoIDIpCisgICAgICAobWFwIChsYW1i ZGEgKGh0IGtleSkKKyAgICAgICAgICAgICAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBodCBrZXkg J2VoKSkKKyAgICAgICAgICAgdGVzdC10YWJsZXMKKyAgICAgICAgICAgJyhmb28gMTAxLjMKKyAg ICAgICAgICAgICAgICAgeCAieSIKKyAgICAgICAgICAgICAgICAgKDE0IDE1KSAjXG5ld2xpbmUK KyAgICAgICAgICAgICAgICAgKGVkd2FyZCkgKG1hcmspCisgICAgICAgICAgICAgICAgICJwIiAi cHJlZiIKKyAgICAgICAgICAgICAgICAgIm1pa2UiICJQQVVMIgorICAgICAgICAgICAgICAgICBq YW5lIG5vZWwKKyAgICAgICAgICAgICAgICAgMCA0KSkpKQorCisgICh3aXRoLXRlc3QtcHJlZml4 ICJtdXRhdG9ycyIKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgd2l0aCBu byBrZXktdmFsdWUgcGFpcnMgZG9lcyBub3RoaW5nIgorICAgICAgICAnKCkKKyAgICAgIChiZWdp biAoaGFzaC10YWJsZS1zZXQhIGh0LWZpeG51bSkKKyAgICAgICAgICAgICAobGlzdC1zb3J0IDwg KGhhc2gtdGFibGUta2V5cyBodC1maXhudW0pKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFz aC10YWJsZS1zZXQhIGZ1bmN0aW9ucyBwcm9wZXJseSAxIgorICAgICAgICAnKDEyMSAxNDQgMTY5 KQorICAgICAgKGJlZ2luIChoYXNoLXRhYmxlLXNldCEgaHQtZml4bnVtIDEyMSAxMSAxNDQgMTIg MTY5IDEzKQorICAgICAgICAgICAgIChsaXN0LXNvcnQgPCAoaGFzaC10YWJsZS1rZXlzIGh0LWZp eG51bSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgZnVuY3Rpb25z IHByb3Blcmx5IDIiCisgICAgICAgICcoMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSAxMjEgMTQ0 IDE2OSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1zZXQhIGh0LWZpeG51bQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMCAwIDEgMSA0IDIgOSAzIDE2IDQgMjUgNSAzNiA2IDQ5IDcg NjQgOCA4MSA5KQorICAgICAgICAgICAgIChsaXN0LXNvcnQgPCAoaGFzaC10YWJsZS1rZXlzIGh0 LWZpeG51bSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgZnVuY3Rp b25zIHByb3Blcmx5IDMiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgNiA3IDggOSkK KyAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVt IGkgJ2Vycm9yKSkKKyAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5 IDY0IDgxKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIHdpdGgg bm8ga2V5cyBkb2VzIG5vdGhpbmciCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgNiA3 IDggOSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1kZWxldGUhIGh0LWZpeG51bSkKKyAgICAg ICAgICAgICAobWFwIChsYW1iZGEgKGkpIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0LWZpeG51 bSBpICdlcnJvcikpCisgICAgICAgICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkgMTYg MjUgMzYgNDkgNjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kZWxl dGUhIGZ1bmN0aW9ucyBwcm9wZXJseSAxIgorICAgICAgICAnKC0xIDEyIC0xIDAgLTEgMiAtMSA0 IC0xIDYgLTEgOCAtMSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1kZWxldGUhIGh0LWZpeG51 bSAxIDkgMjUgNDkgODEgMjAwIDEyMSAxNjkgODEgMSkKKyAgICAgICAgICAgICAobWFwIChsYW1i ZGEgKGkpIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0LWZpeG51bSBpIC0xKSkKKyAgICAgICAg ICAgICAgICAgICcoMTY5IDE0NCAxMjEgMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSkpKSkKKwor ICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLWRlbGV0ZSEgZnVuY3Rpb25zIHByb3Blcmx5 IDIiCisgICAgICAgICcoLTEgMTIgLTEgLTEgLTEgMiAtMSA0IC0xIC0xIC0xIDggLTEpCisgICAg ICAoYmVnaW4gKGhhc2gtdGFibGUtZGVsZXRlISBodC1maXhudW0gMjAwIDEwMCAwIDgxIDM2KQor ICAgICAgICAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQt Zml4bnVtIGkgLTEpKQorICAgICAgICAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2 IDI1IDM2IDQ5IDY0IDgxKSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtaW50 ZXJuISBmdW5jdGlvbnMgcHJvcGVybHkgMSIKKyAgICAgICAgJygxMyAxMiAxMSAwIDEgMiAtMSA0 IC0xIC0xIC0xIDggLTEpCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtaW50ZXJuISBodC1maXhu dW0gMTY5IChsYW1iZGEgKCkgMTMpKQorICAgICAgICAgICAgIChoYXNoLXRhYmxlLWludGVybiEg aHQtZml4bnVtIDEyMSAobGFtYmRhICgpIDExKSkKKyAgICAgICAgICAgICAoaGFzaC10YWJsZS1p bnRlcm4hIGh0LWZpeG51bSAgIDAgKGxhbWJkYSAoKSAgMCkpCisgICAgICAgICAgICAgKGhhc2gt dGFibGUtaW50ZXJuISBodC1maXhudW0gICAxIChsYW1iZGEgKCkgIDEpKQorICAgICAgICAgICAg IChoYXNoLXRhYmxlLWludGVybiEgaHQtZml4bnVtICAgMSAobGFtYmRhICgpIDk5KSkKKyAgICAg ICAgICAgICAoaGFzaC10YWJsZS1pbnRlcm4hIGh0LWZpeG51bSAxMjEgKGxhbWJkYSAoKSA2Nikp CisgICAgICAgICAgICAgKG1hcCAobGFtYmRhIChpKSAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBo dC1maXhudW0gaSAtMSkpCisgICAgICAgICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkg MTYgMjUgMzYgNDkgNjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1t YXAtPmxpc3QgZnVuY3Rpb25zIHByb3Blcmx5IDEiCisgICAgICAgICcoIygwIDApICMoMSAxKSAj KDQgMikgIygxNiA0KSAjKDY0IDgpICMoMTIxIDExKSAjKDE0NCAxMikgIygxNjkgMTMpKQorICAg ICAgKGxpc3Qtc29ydCAobGFtYmRhICh2MSB2MikgKDwgKHZlY3Rvci1yZWYgdjEgMCkgKHZlY3Rv ci1yZWYgdjIgMCkpKQorICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1tYXAtPmxpc3QgdmVj dG9yIGh0LWZpeG51bSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtcHJ1bmUh IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgJygoMCAwKSAoMSAxKSAoNCAyKSAoMTYgNCkg KDY0IDgpICM7KDEyMSAxMSkgKDE0NCAxMikgIzsoMTY5IDEzKSkKKyAgICAgIChiZWdpbiAoaGFz aC10YWJsZS1wcnVuZSEgKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYW5kIChvZGQ/IGtleSkgKD4gdmFsIDEwKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGh0LWZpeG51bSkKKyAgICAgICAgICAgICAobGlzdC1zb3J0IChsYW1i ZGEgKGwxIGwyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoPCAoY2FyIGwxKSAoY2FyIGwy KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1tYXAtPmxpc3QgbGlzdCBo dC1maXhudW0pKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1pbnRlcm4hIGZ1 bmN0aW9ucyBwcm9wZXJseSAyIgorICAgICAgICAnKCgwIDApICgxIDEpICg0IDIpICgxNiA0KSAo NjQgOCkgKDEyMSAxMSkgKDE0NCAxMikgKDE2OSAxMykpCisgICAgICAoYmVnaW4gKGhhc2gtdGFi bGUtaW50ZXJuISBodC1maXhudW0gMTY5IChsYW1iZGEgKCkgMTMpKQorICAgICAgICAgICAgICho YXNoLXRhYmxlLWludGVybiEgaHQtZml4bnVtIDE0NCAobGFtYmRhICgpIDk5OTkpKQorICAgICAg ICAgICAgIChoYXNoLXRhYmxlLWludGVybiEgaHQtZml4bnVtIDEyMSAobGFtYmRhICgpIDExKSkK KyAgICAgICAgICAgICAobGlzdC1zb3J0IChsYW1iZGEgKGwxIGwyKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAoPCAoY2FyIGwxKSAoY2FyIGwyKSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAoaGFzaC10YWJsZS1tYXAtPmxpc3QgbGlzdCBodC1maXhudW0pKSkpCisKKyAgICAocGFzcy1p Zi1lcXVhbCAiaGFzaC10YWJsZS11cGRhdGUhIHdpdGggRkFJTFVSRSBmdW5jdGlvbnMgcHJvcGVy bHkgMSIKKyAgICAgICAgJygxMyAxMiAxMSAwIDEgMiAzIDQgLTEgLTEgLTEgOCAtMSkKKyAgICAg IChiZWdpbiAoaGFzaC10YWJsZS11cGRhdGUhIGh0LWZpeG51bSA5IGxlbmd0aCAobGFtYmRhICgp ICcoYSBiIGMpKSkKKyAgICAgICAgICAgICAobWFwIChsYW1iZGEgKGkpIChoYXNoLXRhYmxlLXJl Zi9kZWZhdWx0IGh0LWZpeG51bSBpIC0xKSkKKyAgICAgICAgICAgICAgICAgICcoMTY5IDE0NCAx MjEgMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJo YXNoLXRhYmxlLXVwZGF0ZSEgZnVuY3Rpb25zIHByb3Blcmx5IgorICAgICAgICAnKDEzIDEyIDEx IDAgMSAyIDMgLTQgLTEgLTEgLTEgOCAtMSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS11cGRh dGUhIGh0LWZpeG51bSAxNiAtKQorICAgICAgICAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gt dGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEpKQorICAgICAgICAgICAgICAgICAgJygx NjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxKSkpKQorCisgICAgKHBhc3MtaWYt ZXF1YWwgImhhc2gtdGFibGUtdXBkYXRlISB3aXRoIEZBSUxVUkUgZnVuY3Rpb25zIHByb3Blcmx5 IDIiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IC0xIC0xIC0xIDggLTEpCisgICAgICAo YmVnaW4gKGhhc2gtdGFibGUtdXBkYXRlISBodC1maXhudW0gMTYgLSBhYnMpCisgICAgICAgICAg ICAgKG1hcCAobGFtYmRhIChpKSAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBodC1maXhudW0gaSAt MSkpCisgICAgICAgICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkgMTYgMjUgMzYgNDkg NjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1 bHQgZnVuY3Rpb25zIHByb3Blcmx5IDEiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IC01 IC0xIC0xIDggLTEpCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtdXBkYXRlIS9kZWZhdWx0IGh0 LWZpeG51bSAyNSAtIDUpCisgICAgICAgICAgICAgKG1hcCAobGFtYmRhIChpKSAoaGFzaC10YWJs ZS1yZWYvZGVmYXVsdCBodC1maXhudW0gaSAtMSkpCisgICAgICAgICAgICAgICAgICAnKDE2OSAx NDQgMTIxIDAgMSA0IDkgMTYgMjUgMzYgNDkgNjQgODEpKSkpCisKKyAgICAocGFzcy1pZi1lcXVh bCAiaGFzaC10YWJsZS11cGRhdGUhL2RlZmF1bHQgZnVuY3Rpb25zIHByb3Blcmx5IDIiCisgICAg ICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgLTEgLTEgOCAtMSkKKyAgICAgIChiZWdpbiAoaGFz aC10YWJsZS11cGRhdGUhL2RlZmF1bHQgaHQtZml4bnVtIDI1IC0gOTk5KQorICAgICAgICAgICAg IChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEp KQorICAgICAgICAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0 IDgxKSkpKQorCisgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtcG9wISBmdW5jdGlvbnMgcHJvcGVy bHkiCisgICAgICAobGV0KiAoKG4wIChoYXNoLXRhYmxlLXNpemUgaHQtZml4bnVtKSkKKyAgICAg ICAgICAgICAoaHQgKGhhc2gtdGFibGUtY29weSBodC1maXhudW0gI3QpKSkKKyAgICAgICAgKGNh bGwtd2l0aC12YWx1ZXMKKyAgICAgICAgICAgIChsYW1iZGEgKCkgKGhhc2gtdGFibGUtcG9wISBo dCkpCisgICAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAgICAgIChhbmQgKD0ga2V5 ICgqIHZhbCB2YWwpKQorICAgICAgICAgICAgICAgICAoPSAoLSBuMCAxKSAoaGFzaC10YWJsZS1z aXplIGh0KSkpKSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtZGVsZXRlISBm dW5jdGlvbnMgcHJvcGVybHkgMiIKKyAgICAgICAgJygxMyAxMiAxMSAwIDEgMiAzIDQgNSAtMSAt MSA4IC0xIC0xKQorICAgICAgKGJlZ2luIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQtZml4bnVtIDc1 KQorICAgICAgICAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQg aHQtZml4bnVtIGkgLTEpKQorICAgICAgICAgICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5 IDE2IDI1IDM2IDQ5IDY0IDc1IDgxKSkpKQorCisgICAgOzsgU3BlYyBzYXlzIEhBU0gtVEFCTEUg cmV0dXJucyBhbiBpbW11dGFibGUgaGFzaCB0YWJsZSwgc28gd2UgcHV0IGEKKyAgICA7OyBIQVNI LVRBQkxFLUNPUFkgaGVyZQorICAgIChsZXQgKChodC1lZyAoaGFzaC10YWJsZS1jb3B5CisgICAg ICAgICAgICAgICAgICAoaGFzaC10YWJsZSBudW1iZXItY29tcGFyYXRvciAxIDEgNCAyIDkgMyAx NiA0IDI1IDUgNjQgOCkKKyAgICAgICAgICAgICAgICAgICN0KSkpCisgICAgICAocGFzcy1pZi1l cXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIGZ1bmN0aW9ucyBwcm9wZXJseSAzIgorICAgICAgICAg IDAKKyAgICAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodC1lZykpCisgICAgICAocGFzcy1pZi1l cXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIGZ1bmN0aW9ucyBwcm9wZXJseSA0IgorICAgICAgICAg IDAKKyAgICAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodC1lZyAyIDcgMjAwMCkpCisgICAgICAo cGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kZWxldGUhIGZ1bmN0aW9ucyBwcm9wZXJseSA1Igor ICAgICAgICAgIDMKKyAgICAgICAgKGhhc2gtdGFibGUtZGVsZXRlISBodC1lZyAxIDIgNCA3IDY0 IDIwMDApKQorICAgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtZGVsZXRlISBmdW5jdGlvbnMgcHJv cGVybHkgNiIKKyAgICAgICAgKD0gMyAobGVuZ3RoIChoYXNoLXRhYmxlLWtleXMgaHQtZWcpKSkp KQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtcmVmL2RlZmF1bHQgZnVuY3Rpb25z IHByb3Blcmx5IDIiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgLTEgLTEgOCAtMSkK KyAgICAgIChtYXAgKGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVt IGkgLTEpKQorICAgICAgICAgICAnKDE2OSAxNDQgMTIxIDAgMSA0IDkgMTYgMjUgMzYgNDkgNjQg ODEpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXNldCEgZnVuY3Rpb25zIHBy b3Blcmx5IDQiCisgICAgICAgICcoMTMgMTIgMTEgMCAxIDIgMyA0IDUgNiAtMSA4IDkpCisgICAg ICAoYmVnaW4gKGhhc2gtdGFibGUtc2V0ISBodC1maXhudW0gMzYgNikKKyAgICAgICAgICAgICAo aGFzaC10YWJsZS1zZXQhIGh0LWZpeG51bSA4MSA5KQorICAgICAgICAgICAgIChtYXAgKGxhbWJk YSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEpKQorICAgICAgICAg ICAgICAgICAgJygxNjkgMTQ0IDEyMSAwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxKSkpKQorCisg ICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtY2xlYXIhIGNsZWFycyBoYXNoIHRhYmxlIgor ICAgICAgICAwCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtY2xlYXIhIGh0LWVxKQorICAgICAg ICAgICAgIChoYXNoLXRhYmxlLXNpemUgaHQtZXEpKSkpCisKKyAgKHdpdGgtdGVzdC1wcmVmaXgg InRoZSB3aG9sZSBoYXNoIHRhYmxlIgorCisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUt c2l6ZSByZXR1cm5zIGNvcnJlY3QgdGFibGUgc2l6ZSIKKyAgICAgICAgMworICAgICAgKGJlZ2lu IChoYXNoLXRhYmxlLXNldCEgaHQtZXEgJ2ZvbyAxMyAnYmFyIDE0ICdiYXogMTgpCisgICAgICAg ICAgICAgKGhhc2gtdGFibGUtc2l6ZSBodC1lcSkpKQorCisgICAgKHBhc3MtaWYtZXF1YWwgImhh c2gtdGFibGUtc2l6ZSByZXR1cm5zIGNvcnJlY3QgdGFibGUgc2l6ZSAyIgorICAgICAgICAnKDAg MyAjdCkKKyAgICAgIChsZXQqICgoaHQgKGhhc2gtdGFibGUtZW1wdHktY29weSBodC1lcSkpCisg ICAgICAgICAgICAgKG4wIChoYXNoLXRhYmxlLXNpemUgaHQpKQorICAgICAgICAgICAgIChpZ25v cmVkIChoYXNoLXRhYmxlLXNldCEgaHQgJ2ZvbyAxMyAnYmFyIDE0ICdiYXogMTgpKQorICAgICAg ICAgICAgIChuMSAoaGFzaC10YWJsZS1zaXplIGh0KSkpCisgICAgICAgIChsaXN0IG4wIG4xICho YXNoLXRhYmxlPT8gZGVmYXVsdC1jb21wYXJhdG9yIGh0IGh0LWVxKSkpKQorCisgICAgKHBhc3Mt aWYtZXF1YWwgImhhc2gtdGFibGUtc2l6ZSByZXR1cm5zIDAgd2l0aCBlbXB0eSBoYXNoIHRhYmxl IgorICAgICAgICAwCisgICAgICAoYmVnaW4gKGhhc2gtdGFibGUtY2xlYXIhIGh0LWVxKQorICAg ICAgICAgICAgIChoYXNoLXRhYmxlLXNpemUgaHQtZXEpKSkKKworICAgIChwYXNzLWlmLWVxdWFs ICJoYXNoLXRhYmxlLWZpbmQgZnVuY3Rpb25zIHByb3Blcmx5IDEiCisgICAgICAgICcoMTQ0IDEy KQorICAgICAgKGhhc2gtdGFibGUtZmluZCAobGFtYmRhIChrZXkgdmFsKQorICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAoPSAxNDQga2V5ICgqIHZhbCB2YWwpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGlzdCBrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjZikpCisgICAgICAgICAgICAgICAgICAgICAgIGh0LWZpeG51bQorICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhICgpIDk5KSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJs ZS1maW5kIGZ1bmN0aW9ucyBwcm9wZXJseSAyIgorICAgICAgICA5OQorICAgICAgKGhhc2gtdGFi bGUtZmluZCAobGFtYmRhIChrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAo PSAxNDQga2V5IHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3Qga2V5IHZh bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2YpKQorICAgICAgICAgICAgICAgICAg ICAgICBodC1maXhudW0KKyAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKSA5OSkpKQor CisgICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtY291bnQgZnVuY3Rpb25zIHByb3Blcmx5 IgorICAgICAgICAyCisgICAgICAoaGFzaC10YWJsZS1jb3VudCA8PSBodC1maXhudW0pKSkKKwor ICAod2l0aC10ZXN0LXByZWZpeCAibWFwcGluZyBhbmQgZm9sZGluZyIKKworICAgIChwYXNzLWlm LWVxdWFsICJoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGZ1bmN0aW9ucyBwcm9wZXJseSAzIgorICAg ICAgICAnKDAgMSAyIDMgNCA1IDYgLTEgOCA5IC0xIDExIDEyIDEzIC0xKQorICAgICAgKG1hcCAo bGFtYmRhIChpKSAoaGFzaC10YWJsZS1yZWYvZGVmYXVsdCBodC1maXhudW0gaSAtMSkpCisgICAg ICAgICAgICcoMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSAxMDAgMTIxIDE0NCAxNjkgMTk2KSkp CisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1tYXAgZnVuY3Rpb25zIHByb3Blcmx5 IgorICAgICAgICAnKDAgMSA0IDkgMTYgMjUgMzYgLTEgNjQgODEgLTEgMTIxIDE0NCAxNjkgLTEp CisgICAgICAobGV0ICgoaHQgKGhhc2gtdGFibGUtbWFwIChsYW1iZGEgKHZhbCkgKCogdmFsIHZh bCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdi1jb21wYXJhdG9yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LWZpeG51bSkpKQorICAgICAgICAobWFwIChs YW1iZGEgKGkpIChoYXNoLXRhYmxlLXJlZi9kZWZhdWx0IGh0IGkgLTEpKQorICAgICAgICAgICAg ICcoMCAxIDQgOSAxNiAyNSAzNiA0OSA2NCA4MSAxMDAgMTIxIDE0NCAxNjkgMTk2KSkpKQorCisg ICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtZm9yLWVhY2ggZnVuY3Rpb25zIHByb3Blcmx5 IgorICAgICAgICAnKCMoMCAxIDQgOSAxNiAyNSAzNiAtMSA2NCA4MSAtMSAxMjEgMTQ0IDE2OSAt MSkKKyAgICAgICAgICAjKDAgMSAyIDMgIDQgIDUgIDYgLTEgIDggIDkgLTEgIDExICAxMiAgMTMg LTEpKQorICAgICAgKGxldCAoKGtleXMgKG1ha2UtdmVjdG9yIDE1IC0xKSkKKyAgICAgICAgICAg ICh2YWxzIChtYWtlLXZlY3RvciAxNSAtMSkpKQorICAgICAgICAoaGFzaC10YWJsZS1mb3ItZWFj aCAobGFtYmRhIChrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0 b3Itc2V0ISBrZXlzIHZhbCBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZl Y3Rvci1zZXQhIHZhbHMgdmFsIHZhbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0 LWZpeG51bSkKKyAgICAgICAgKGxpc3Qga2V5cyB2YWxzKSkpCisKKyAgICAocGFzcy1pZi1lcXVh bCAiaGFzaC10YWJsZS1tYXAhIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgJygwIDEgMiAz IC00IC01IC02IC0xIC04IC05IC0xIC0xMSAtMTIgLTEzIC0xKQorICAgICAgKGJlZ2luIChoYXNo LXRhYmxlLW1hcCEgKGxhbWJkYSAoa2V5IHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGlmICg8PSAxMCBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoLSB2YWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaHQtZml4bnVtKQorICAgICAgICAgICAgIChtYXAg KGxhbWJkYSAoaSkgKGhhc2gtdGFibGUtcmVmL2RlZmF1bHQgaHQtZml4bnVtIGkgLTEpKQorICAg ICAgICAgICAgICAgICAgJygwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxIDEwMCAxMjEgMTQ0IDE2 OSAxOTYpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1mb2xkIGZ1bmN0aW9u cyBwcm9wZXJseSAxIgorICAgICAgICAxMworICAgICAgKGhhc2gtdGFibGUtZm9sZCAobGFtYmRh IChrZXkgdmFsIGFjYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKyB2YWwgYWNjKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICBodC1zdHJpbmct Y2kyKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLWZvbGQgZnVuY3Rpb25zIHBy b3Blcmx5IDIiCisgICAgICAgICcoMCAxIDQgOSAxNiAyNSAzNiA2NCA4MSAxMjEgMTQ0IDE2OSkK KyAgICAgIChsaXN0LXNvcnQgPCAoaGFzaC10YWJsZS1mb2xkIChsYW1iZGEgKGtleSB2YWwgYWNj KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyBrZXkgYWNjKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaHQtZml4bnVtKSkpKQorCisgICh3aXRoLXRlc3QtcHJlZml4 ICJjb3B5aW5nIGFuZCBjb252ZXJzaW9uIgorCisgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtY29w eSBmdW5jdGlvbnMgcHJvcGVybHkgMSIKKyAgICAgIChoYXNoLXRhYmxlPT8gbnVtYmVyLWNvbXBh cmF0b3IgaHQtZml4bnVtIChoYXNoLXRhYmxlLWNvcHkgaHQtZml4bnVtKSkpCisKKyAgICAocGFz cy1pZiAiaGFzaC10YWJsZS1jb3B5IGZ1bmN0aW9ucyBwcm9wZXJseSAyIgorICAgICAgKGhhc2gt dGFibGU9PyBudW1iZXItY29tcGFyYXRvciBodC1maXhudW0gKGhhc2gtdGFibGUtY29weSBodC1m aXhudW0gI2YpKSkKKworICAgIChwYXNzLWlmICJoYXNoLXRhYmxlLWNvcHkgZnVuY3Rpb25zIHBy b3Blcmx5IDMiCisgICAgICAoaGFzaC10YWJsZT0/IG51bWJlci1jb21wYXJhdG9yIGh0LWZpeG51 bSAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bSAjdCkpKQorCisgICAgKHBhc3MtaWYgImhhc2gt dGFibGUtY29weSBmdW5jdGlvbnMgcHJvcGVybHkgNCIKKyAgICAgIChub3QgKGhhc2gtdGFibGUt bXV0YWJsZT8gKGhhc2gtdGFibGUtY29weSBodC1maXhudW0pKSkpCisKKyAgICAocGFzcy1pZiAi aGFzaC10YWJsZS1jb3B5IGZ1bmN0aW9ucyBwcm9wZXJseSA1IgorICAgICAgKG5vdCAoaGFzaC10 YWJsZS1tdXRhYmxlPyAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bSAjZikpKSkKKworICAgIChw YXNzLWlmICJoYXNoLXRhYmxlLWNvcHkgZnVuY3Rpb25zIHByb3Blcmx5IDYiCisgICAgICAoaGFz aC10YWJsZS1tdXRhYmxlPyAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bSAjdCkpKQorCisgICAg KHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtPmFsaXN0IGZ1bmN0aW9ucyBwcm9wZXJseSAxIgor ICAgICAgICAnKCkKKyAgICAgIChoYXNoLXRhYmxlLT5hbGlzdCBodC1lcSkpCisKKyAgICAocGFz cy1pZi1lcXVhbCAiaGFzaC10YWJsZS0+YWxpc3QgZnVuY3Rpb25zIHByb3Blcmx5IDIiCisgICAg ICAgICcoKDAgLiAwKQorICAgICAgICAgICgxIC4gMSkKKyAgICAgICAgICAoNCAuIDIpCisgICAg ICAgICAgKDkgLiAzKQorICAgICAgICAgICgxNiAuIC00KQorICAgICAgICAgICgyNSAuIC01KQor ICAgICAgICAgICgzNiAuIC02KQorICAgICAgICAgICg2NCAuIC04KQorICAgICAgICAgICg4MSAu IC05KQorICAgICAgICAgICgxMjEgLiAtMTEpCisgICAgICAgICAgKDE0NCAuIC0xMikKKyAgICAg ICAgICAoMTY5IC4gLTEzKSkKKyAgICAgIChsaXN0LXNvcnQgKGxhbWJkYSAoeCB5KSAoPCAoY2Fy IHgpIChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS0+YWxpc3QgaHQtZml4 bnVtKSkpKQorCisgICh3aXRoLXRlc3QtcHJlZml4ICJoYXNoIHRhYmxlcyBhcyBzZXRzIgorCisg ICAgKHBhc3MtaWYtZXF1YWwgImhhc2gtdGFibGUtdW5pb24hIGZ1bmN0aW9ucyBwcm9wZXJseSAx IgorICAgICAgICAnKCgwIC4gMCkKKyAgICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDQgLiAy KQorICAgICAgICAgICg5IC4gMykKKyAgICAgICAgICAoMTYgLiAtNCkKKyAgICAgICAgICAoMjUg LiAtNSkKKyAgICAgICAgICAoMzYgLiAtNikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAg ICg2NCAuIC04KQorICAgICAgICAgICg4MSAuIC05KQorICAgICAgICAgICgxMjEgLiAtMTEpCisg ICAgICAgICAgKDE0NCAuIC0xMikKKyAgICAgICAgICAoMTY5IC4gLTEzKSkKKyAgICAgIChiZWdp biAoaGFzaC10YWJsZS11bmlvbiEgaHQtZml4bnVtIGh0LWZpeG51bTIpCisgICAgICAgICAgICAg KGxpc3Qtc29ydCAobGFtYmRhICh4IHkpICg8IChjYXIgeCkgKGNhciB5KSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAoaGFzaC10YWJsZS0+YWxpc3QgaHQtZml4bnVtKSkpKQorCisgICAgKHBh c3MtaWYtZXF1YWwgImhhc2gtdGFibGUtdW5pb24hIGZ1bmN0aW9ucyBwcm9wZXJseSAyIgorICAg ICAgICAnKCgwIC4gMCkKKyAgICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDQgLiAyKQorICAg ICAgICAgICg5IC4gMykKKyAgICAgICAgICAoMTYgLiA0KQorICAgICAgICAgICgyNSAuIDUpCisg ICAgICAgICAgKDM2IC4gNikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAgICg2NCAuIDgp CisgICAgICAgICAgKDgxIC4gOSkKKyAgICAgICAgICAoMTIxIC4gLTExKQorICAgICAgICAgICgx NDQgLiAtMTIpCisgICAgICAgICAgKDE2OSAuIC0xMykpCisgICAgICAobGV0ICgoaHQgKGhhc2gt dGFibGUtY29weSBodC1maXhudW0yICN0KSkpCisgICAgICAgIChoYXNoLXRhYmxlLXVuaW9uISBo dCBodC1maXhudW0pCisgICAgICAgIChsaXN0LXNvcnQgKGxhbWJkYSAoeCB5KSAoPCAoY2FyIHgp IChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLT5hbGlzdCBodCkpKSkK KworICAgIDs7IFNwZWMgaW4gU3BlY2lmaWNhdGlvbiBzZWN0aW9uIHNheXMgIkl0IGlzIGFuIGVy cm9yIHRvIHBhc3MgdHdvCisgICAgOzsgaGFzaCB0YWJsZXMgdGhhdCBoYXZlIGRpZmZlcmVudCBj b21wYXJhdG9ycyBvciBlcXVhbGl0eQorICAgIDs7IHByZWRpY2F0ZXMgdG8gYW55IG9mIHRoZSBw cm9jZWR1cmVzIG9mIHRoaXMgU1JGSS4iCisgICAgOzsKKyAgICA7OyBTbyB3ZSBjcmVhdGUgYSBu ZXcgaGFzaCB0YWJsZSB3aXRoIG51bWJlci1jb21wYXJhdG9yIHdpdGggdGhlCisgICAgOzsgY29u dGVudHMgb2YgaHQtZXF2MgorCisgICAgKGxldCAoKGh0LWZpeG51bTMgKGhhc2gtdGFibGUtbWFw IGlkZW50aXR5IG51bWJlci1jb21wYXJhdG9yIGh0LWVxdjIpKSkKKyAgICAgIChwYXNzLWlmICJo YXNoLXRhYmxlLXVuaW9uISBmdW5jdGlvbnMgcHJvcGVybHkgMyIKKyAgICAgICAgKGJlZ2luICho YXNoLXRhYmxlLXVuaW9uISBodC1maXhudW0zIGh0LWZpeG51bSkKKyAgICAgICAgICAgICAgICho YXNoLXRhYmxlPT8gbnVtYmVyLWNvbXBhcmF0b3IgaHQtZml4bnVtIGh0LWZpeG51bTMpKSkKKwor ICAgICAgKHBhc3MtaWYgImhhc2gtdGFibGUtaW50ZXJzZWN0aW9uISBmdW5jdGlvbnMgcHJvcGVy bHkgMSIKKyAgICAgICAgKGJlZ2luIChoYXNoLXRhYmxlLWludGVyc2VjdGlvbiEgaHQtZml4bnVt MyBodC1maXhudW0pCisgICAgICAgICAgICAgICAoaGFzaC10YWJsZT0/IG51bWJlci1jb21wYXJh dG9yIGh0LWZpeG51bSBodC1maXhudW0zKSkpKQorCisgICAgKHBhc3MtaWYgImhhc2gtdGFibGUt aW50ZXJzZWN0aW9uISBmdW5jdGlvbnMgcHJvcGVybHkgMiIKKyAgICAgIChiZWdpbiAoaGFzaC10 YWJsZS1pbnRlcnNlY3Rpb24hIGh0LWVxdjIgaHQtZXF2KQorICAgICAgICAgICAgIChoYXNoLXRh YmxlLWVtcHR5PyBodC1lcXYyKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10YWJsZS1p bnRlcnNlY3Rpb24hIGZ1bmN0aW9ucyBwcm9wZXJseSAzIgorICAgICAgICAnKCgwIC4gMCkKKyAg ICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDQgLiAyKQorICAgICAgICAgICg5IC4gMykKKyAg ICAgICAgICAoMTYgLiAtNCkKKyAgICAgICAgICAoMjUgLiAtNSkKKyAgICAgICAgICAoMzYgLiAt NikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAgICg2NCAuIC04KQorICAgICAgICAgICg4 MSAuIC05KSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1pbnRlcnNlY3Rpb24hIGh0LWZpeG51 bSBodC1maXhudW0yKQorICAgICAgICAgICAgIChsaXN0LXNvcnQgKGxhbWJkYSAoeCB5KSAoPCAo Y2FyIHgpIChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2gtdGFibGUtPmFs aXN0IGh0LWZpeG51bSkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLWludGVy c2VjdGlvbiEgZnVuY3Rpb25zIHByb3Blcmx5IDQiCisgICAgICAgICcoKDQgLiAyKQorICAgICAg ICAgICgyNSAuIC01KSkKKyAgICAgIChiZWdpbiAoaGFzaC10YWJsZS1pbnRlcnNlY3Rpb24hCisg ICAgICAgICAgICAgIGh0LWZpeG51bQorICAgICAgICAgICAgICAoYWxpc3QtPmhhc2gtdGFibGUg JygoLTEgLiAtMSkgKDQgLiAyMDIpICgyNSAuIDIwNSkgKDEwMCAuIDEwKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG51bWJlci1jb21wYXJhdG9yKSkKKyAgICAgICAgICAgICAo bGlzdC1zb3J0IChsYW1iZGEgKHggeSkgKDwgKGNhciB4KSAoY2FyIHkpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIChoYXNoLXRhYmxlLT5hbGlzdCBodC1maXhudW0pKSkpCisKKyAgICAocGFz cy1pZi1lcXVhbCAiaGFzaC10YWJsZS1kaWZmZXJlbmNlISBmdW5jdGlvbnMgcHJvcGVybHkiCisg ICAgICAgICcoKDAgLiAwKQorICAgICAgICAgICgxIC4gMSkKKyAgICAgICAgICAoOSAuIDMpCisg ICAgICAgICAgKDE2IC4gNCkKKyAgICAgICAgICAoMzYgLiA2KQorICAgICAgICAgICg0OSAuIDcp CisgICAgICAgICAgKDY0IC4gOCkKKyAgICAgICAgICAoODEgLiA5KSkKKyAgICAgIChsZXQgKCho dCAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bTIgI3QpKSkKKyAgICAgICAgKGhhc2gtdGFibGUt ZGlmZmVyZW5jZSEKKyAgICAgICAgIGh0CisgICAgICAgICAoYWxpc3QtPmhhc2gtdGFibGUgJygo LTEgLiAtMSkgKDQgLiAyMDIpICgyNSAuIDIwNSkgKDEwMCAuIDEwKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBudW1iZXItY29tcGFyYXRvcikpCisgICAgICAgIChsaXN0LXNvcnQgKGxh bWJkYSAoeCB5KSAoPCAoY2FyIHgpIChjYXIgeSkpKQorICAgICAgICAgICAgICAgICAgIChoYXNo LXRhYmxlLT5hbGlzdCBodCkpKSkKKworICAgIChwYXNzLWlmLWVxdWFsICJoYXNoLXRhYmxlLXhv ciEgZnVuY3Rpb25zIHByb3Blcmx5IgorICAgICAgICAnKCgtMSAuIC0xKQorICAgICAgICAgICgw IC4gMCkKKyAgICAgICAgICAoMSAuIDEpCisgICAgICAgICAgKDkgLiAzKQorICAgICAgICAgICgx NiAuIDQpCisgICAgICAgICAgKDM2IC4gNikKKyAgICAgICAgICAoNDkgLiA3KQorICAgICAgICAg ICg2NCAuIDgpCisgICAgICAgICAgKDgxIC4gOSkKKyAgICAgICAgICAoMTAwIC4gMTApKQorICAg ICAgKGxldCAoKGh0IChoYXNoLXRhYmxlLWNvcHkgaHQtZml4bnVtMiAjdCkpKQorICAgICAgICAo aGFzaC10YWJsZS14b3IhCisgICAgICAgICBodAorICAgICAgICAgKGFsaXN0LT5oYXNoLXRhYmxl ICcoKC0xIC4gLTEpICg0IC4gMjAyKSAoMjUgLiAyMDUpICgxMDAgLiAxMCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbnVtYmVyLWNvbXBhcmF0b3IpKQorICAgICAgICAobGlzdC1zb3J0 IChsYW1iZGEgKHggeSkgKDwgKGNhciB4KSAoY2FyIHkpKSkKKyAgICAgICAgICAgICAgICAgICAo aGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpCisKKyAgICAocGFzcy1pZi1leGNlcHRpb24gImhhc2gt dGFibGUtcmVmIHNpZ25hbHMgJ2tleSBub3QgZm91bmQnIGVycm9yIChhZ2FpbikiCisgICAgICAg ICcobWlzYy1lcnJvciAuICJeS2V5IG5vdCBpbiB0YWJsZSIpCisgICAgICAoaGFzaC10YWJsZS1y ZWYgaHQtZGVmYXVsdCAidGhpcyBrZXkgd29uJ3QgYmUgcHJlc2VudCIpKSkKKworICAod2l0aC10 ZXN0LXByZWZpeCAiZGVwcmVjYXRlZCIKKworICAgIChwYXNzLWlmICJoYXNoIHJldHVybnMgZXhh Y3QgaW50ZWdlcnMiCisgICAgICAobGV0KiAoKHggKGxpc3QgMSAyIDMpKQorICAgICAgICAgICAg ICh5IChjb25zIDEgKGNkciB4KSkpCisgICAgICAgICAgICAgKGgxIChoYXNoIHgpKQorICAgICAg ICAgICAgIChoMiAoaGFzaCB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0LWludGVnZXI/IGgxKQor ICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAgICAgICAoPSBoMSBoMikp KSkKKworICAgIChwYXNzLWlmICJzdHJpbmctaGFzaCByZXR1cm5zIGV4YWN0IGludGVnZXJzIgor ICAgICAgKGxldCogKCh4ICJhYmNkIikKKyAgICAgICAgICAgICAoeSAoc3RyaW5nLWFwcGVuZCAi YWIiICJjZCIpKQorICAgICAgICAgICAgIChoMSAoc3RyaW5nLWhhc2ggeCkpCisgICAgICAgICAg ICAgKGgyIChzdHJpbmctaGFzaCB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0LWludGVnZXI/IGgx KQorICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAgICAgICAoPSBoMSBo MikpKSkKKworICAgIChwYXNzLWlmICJzdHJpbmctY2ktaGFzaCByZXR1cm5zIGV4YWN0IGludGVn ZXJzIgorICAgICAgKGxldCogKCh4ICJIZWxsbyBUaGVyZSEiKQorICAgICAgICAgICAgICh5ICJo ZWxsbyBUSEVSRSEiKQorICAgICAgICAgICAgIChoMSAoc3RyaW5nLWNpLWhhc2ggeCkpCisgICAg ICAgICAgICAgKGgyIChzdHJpbmctY2ktaGFzaCB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0LWlu dGVnZXI/IGgxKQorICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAgICAg ICAoPSBoMSBoMikpKSkKKworICAgIChwYXNzLWlmICJoYXNoLWJ5LWlkZW50aXR5IHJldHVybnMg ZXhhY3QgaW50ZWdlcnMiCisgICAgICAobGV0KiAoKHggKHZlY3RvciAnYSAiYmNEIiAjXGMgJyhk IDIuNzE4KSAtNDIgKGJ5dGV2ZWN0b3IpICcjKCkgKGJ5dGV2ZWN0b3IgOSAyMCkpKQorICAgICAg ICAgICAgICh5IHgpCisgICAgICAgICAgICAgKGgxIChoYXNoLWJ5LWlkZW50aXR5IHgpKQorICAg ICAgICAgICAgIChoMiAoaGFzaC1ieS1pZGVudGl0eSB5KSkpCisgICAgICAgIChhbmQgKGV4YWN0 LWludGVnZXI/IGgxKQorICAgICAgICAgICAgIChleGFjdC1pbnRlZ2VyPyBoMikKKyAgICAgICAg ICAgICAoPSBoMSBoMikpKSkKKworICAgIChwYXNzLWlmICJoYXNoIHJldHVybnMgZXhhY3QgaW50 ZWdlcnMgMiIKKyAgICAgIChsZXQqICgoeCAobGlzdCAxIDIgMykpCisgICAgICAgICAgICAgKHkg KGNvbnMgMSAoY2RyIHgpKSkKKyAgICAgICAgICAgICAoaDEgKGhhc2ggeCA2MCkpCisgICAgICAg ICAgICAgKGgyIChoYXNoIHkgNjApKSkKKyAgICAgICAgKGFuZCAoZXhhY3QtaW50ZWdlcj8gaDEp CisgICAgICAgICAgICAgKGV4YWN0LWludGVnZXI/IGgyKQorICAgICAgICAgICAgICg9IGgxIGgy KSkpKQorCisgICAgKHBhc3MtaWYgInN0cmluZy1oYXNoIHJldHVybnMgZXhhY3QgaW50ZWdlcnMg MiIKKyAgICAgIChsZXQqICgoeCAiYWJjZCIpCisgICAgICAgICAgICAgKHkgKHN0cmluZy1hcHBl bmQgImFiIiAiY2QiKSkKKyAgICAgICAgICAgICAoaDEgKHN0cmluZy1oYXNoIHggOTcpKQorICAg ICAgICAgICAgIChoMiAoc3RyaW5nLWhhc2ggeSA5NykpKQorICAgICAgICAoYW5kIChleGFjdC1p bnRlZ2VyPyBoMSkKKyAgICAgICAgICAgICAoZXhhY3QtaW50ZWdlcj8gaDIpCisgICAgICAgICAg ICAgKD0gaDEgaDIpKSkpCisKKyAgICAocGFzcy1pZiAic3RyaW5nLWNpLWhhc2ggcmV0dXJucyBl eGFjdCBpbnRlZ2VycyAyIgorICAgICAgKGxldCogKCh4ICJIZWxsbyBUaGVyZSEiKQorICAgICAg ICAgICAgICh5ICJoZWxsbyBUSEVSRSEiKQorICAgICAgICAgICAgIChoMSAoc3RyaW5nLWNpLWhh c2ggeCAxMDEpKQorICAgICAgICAgICAgIChoMiAoc3RyaW5nLWNpLWhhc2ggeSAxMDEpKSkKKyAg ICAgICAgKGFuZCAoZXhhY3QtaW50ZWdlcj8gaDEpCisgICAgICAgICAgICAgKGV4YWN0LWludGVn ZXI/IGgyKQorICAgICAgICAgICAgICg9IGgxIGgyKSkpKQorCisgICAgKHBhc3MtaWYgImhhc2gt YnktaWRlbnRpdHkgcmV0dXJucyBleGFjdCBpbnRlZ2VycyAyIgorICAgICAgKGxldCogKCh4ICh2 ZWN0b3IgJ2EgImJjRCIgI1xjICcoZCAyLjcxOCkgLTQyIChieXRldmVjdG9yKSAnIygpIChieXRl dmVjdG9yIDE5IDIwKSkpCisgICAgICAgICAgICAgKHkgeCkKKyAgICAgICAgICAgICAoaDEgKGhh c2gtYnktaWRlbnRpdHkgeCAxMDIpKQorICAgICAgICAgICAgIChoMiAoaGFzaC1ieS1pZGVudGl0 eSB5IDEwMikpKQorICAgICAgICAoYW5kIChleGFjdC1pbnRlZ2VyPyBoMSkKKyAgICAgICAgICAg ICAoZXhhY3QtaW50ZWdlcj8gaDIpCisgICAgICAgICAgICAgKD0gaDEgaDIpKSkpCisKKyAgICAo cGFzcy1pZiAiaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBmdW5jdGlvbnMgcHJvcGVy bHkiCisgICAgICAobGV0ICgoZiAoaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodC1m aXhudW0pKSkKKyAgICAgICAgKGlmIChwcm9jZWR1cmU/IGYpCisgICAgICAgICAgICAoZiAzNCAz NCkKKyAgICAgICAgICAgICN0KSkpCisKKyAgICAocGFzcy1pZiAiaGFzaC10YWJsZS1oYXNoLWZ1 bmN0aW9uIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgIChsZXQgKChmIChoYXNoLXRhYmxlLWhh c2gtZnVuY3Rpb24gaHQtZml4bnVtKSkpCisgICAgICAgIChpZiAocHJvY2VkdXJlPyBmKQorICAg ICAgICAgICAgKD0gKGYgMzQpIChmIDM0KSkKKyAgICAgICAgICAgICN0KSkpCisKKyAgICAocGFz cy1pZi1lcXVhbCAiaGFzaC10YWJsZS1leGlzdHM/IGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAg ICAgJygjdCAjdCAjZiAjZiAjdCAjZiAjZiAjZiAjZiAjdCAjZikKKyAgICAgIChtYXAgKGxhbWJk YSAoa2V5KSAoaGFzaC10YWJsZS1leGlzdHM/IGh0LWZpeG51bTIga2V5KSkKKyAgICAgICAgICAg JygwIDEgMiAzIDQgNSA2IDcgOCA5IDEwKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10 YWJsZS13YWxrIGZ1bmN0aW9ucyBwcm9wZXJseSIKKyAgICAgICAgKGFwcGx5ICsKKyAgICAgICAg ICAgICAgIChtYXAgKGxhbWJkYSAoeCkgKCogeCB4KSkKKyAgICAgICAgICAgICAgICAgICAgJygw IDEgMiAzIDQgNSA2IDcgOCA5KSkpCisgICAgICAobGV0ICgobiAwKSkKKyAgICAgICAgKGhhc2gt dGFibGUtd2FsayBodC1maXhudW0yCisgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAo a2V5IHZhbCkgKHNldCEgbiAoKyBuIGtleSkpKSkKKyAgICAgICAgbikpCisKKyAgICAocGFzcy1p Zi1lcXVhbCAiaGFzaC10YWJsZS1mb2xkIHdpdGggcmV2ZXJzZWQgYXJndW1lbnRzIGZ1bmN0aW9u cyBwcm9wZXJseSIKKyAgICAgICAgJygwIDEgNCA5IDE2IDI1IDM2IDQ5IDY0IDgxKQorICAgICAg KGxpc3Qtc29ydCA8IChoYXNoLXRhYmxlLWZvbGQgaHQtZml4bnVtMgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCBhY2MpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIGtleSBhY2MpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJygpKSkpCisKKyAgICAocGFzcy1pZi1lcXVhbCAiaGFzaC10 YWJsZS1tZXJnZSEgZnVuY3Rpb25zIHByb3Blcmx5IgorICAgICAgICAnKCgwIC4gMCkKKyAgICAg ICAgICAoLjI1IC4gLjUpCisgICAgICAgICAgKDEgLiAxKQorICAgICAgICAgICg0IC4gMikKKyAg ICAgICAgICAoOSAuIDMpCisgICAgICAgICAgKDE2IC4gNCkKKyAgICAgICAgICAoMjUgLiA1KQor ICAgICAgICAgICgzNiAuIDYpCisgICAgICAgICAgKDQ5IC4gNykKKyAgICAgICAgICAoNjQgLiA4 KQorICAgICAgICAgICg4MSAuIDkpCisgICAgICAgICAgKDEyMSAuIC0xMSkKKyAgICAgICAgICAo MTQ0IC4gLTEyKSkKKyAgICAgIChsZXQgKChodCAoaGFzaC10YWJsZS1jb3B5IGh0LWZpeG51bTIg I3QpKQorICAgICAgICAgICAgKGh0MiAoaGFzaC10YWJsZSBudW1iZXItY29tcGFyYXRvcgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAuMjUgLjUgNjQgOTk5OSA4MSA5OTk4IDEyMSAtMTEg MTQ0IC0xMikpKQorICAgICAgICAoaGFzaC10YWJsZS1tZXJnZSEgaHQgaHQyKQorICAgICAgICAo bGlzdC1zb3J0IChsYW1iZGEgKHggeSkgKDwgKGNhciB4KSAoY2FyIHkpKSkKKyAgICAgICAgICAg ICAgICAgICAoaGFzaC10YWJsZS0+YWxpc3QgaHQpKSkpKSkKKworOzsgZW9mCi0tIAoyLjE5LjEK Cg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0008-Fix-bugs-in-GENERIC-HASH-TABLES.patch" Content-Disposition: attachment; filename="0008-Fix-bugs-in-GENERIC-HASH-TABLES.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqvhvnow2> X-Attachment-Id: f_jqvhvnow2 RnJvbSA1NTRiNDQwYzQ4OGE5MGM4ZjZiZDJkOWJmMGFlZTI0MjVkYWI2N2ZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDEyIEphbiAyMDE5IDE4OjE1OjQ0 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwOC8xMF0gRml4IGJ1Z3MgaW4gR0VORVJJQy1IQVNILVRB QkxFUwoKSEFTSC1UQUJMRS1QUlVORSEgZGlkbid0IHVwZGF0ZSBzaXplIGFmdGVyIHJlbW92aW5n IGtleXMuCkhBU0gtVEFCTEUtREVMRVRFISBhY2Nlc3NlZCBoYXNoIGZ1bmN0aW9uIGFuZCBhc3Nv Y2lhdG9yCiAgb25jZSBwZXIga2V5LCBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBvbmx5IG9uY2UgcGVy CiAgcHJvY2VkdXJlIGNhbGwuCgoqIG1vZHVsZS9pY2UtOS9nZW5lcmljLWhhc2gtdGFibGVzLnNj bSAoaGFzaC10YWJsZS1wcnVuZSEpOgogIE5vdyB1cGRhdGVzIHNpemUgYWZ0ZXIgcmVtb3Zpbmcg a2V5cyAoYnVnKS4KKiAoaGFzaC10YWJsZS1kZWxldGUhKTogdXNlIFdJVEgtSEFTSFgtVkFMVUVT IG91dHNpZGUgb2YgbG9vcCwKICBzbyB0aGF0IGhhc2ggZnVuY3Rpb24gYW5kIGFzc29jaWF0b3Ig YXJlIGFjY2Vzc2VkIG9ubHkgb25jZS4KLS0tCiBtb2R1bGUvaWNlLTkvZ2VuZXJpYy1oYXNoLXRh Ymxlcy5zY20gfCAyNSArKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MTQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbW9kdWxlL2lj ZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtIGIvbW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10 YWJsZXMuc2NtCmluZGV4IDMxZGVhZDk3YS4uNjJmZDViYjEzIDEwMDY0NAotLS0gYS9tb2R1bGUv aWNlLTkvZ2VuZXJpYy1oYXNoLXRhYmxlcy5zY20KKysrIGIvbW9kdWxlL2ljZS05L2dlbmVyaWMt aGFzaC10YWJsZXMuc2NtCkBAIC01MTcsMTkgKzUxNywyMCBAQCBudW1iZXIgb2Yga2V5cyB0aGF0 IGhhZCBhc3NvY2lhdGlvbnMuIgogICAgICAgICAgIChpZiAoaGFzaC10YWJsZS1kZWxldGUtc2lu Z2xlISBodCBrZXkxKSAxIDApKQogICAgICAgKGJlZ2luCiAgICAgICAgIChhc3NlcnQtbXV0YWJs ZSBodCkKLSAgICAgICAgKGxldCogKChjb3VudCAwKQotICAgICAgICAgICAgICAgKGRlbGV0ZS1v bmUhIChsYW1iZGEgKGtleSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aXRoLWhh c2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUpIGh0CisgICAgICAgICh3aXRoLWhhc2h4LXZhbHVl cyAoaCBhIHJlYWwtdGFibGUpIGh0CisgICAgICAgICAgKGxldCogKChjb3VudCAwKQorICAgICAg ICAgICAgICAgICAoc2l6ZSAoaHQtc2l6ZSBodCkpCisgICAgICAgICAgICAgICAgIChkZWxldGUt b25lISAobGFtYmRhIChrZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVu IChub3QgKGVxPyBodC11bnNwZWNpZmllZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlZiBoIGEgcmVhbC10YWJsZSBrZXkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHQtdW5z cGVjaWZpZWQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBjb3Vu dCAoKyAxIGNvdW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgt cmVtb3ZlISBoIGEgcmVhbC10YWJsZSBrZXkpKSkpKSkKLSAgICAgICAgICAoZGVsZXRlLW9uZSEg a2V5MSkKLSAgICAgICAgICAoZm9yLWVhY2ggZGVsZXRlLW9uZSEga2V5cykKLSAgICAgICAgICAo dW5sZXNzIChvciAoaHQtd2Vha25lc3MgaHQpICh6ZXJvPyBjb3VudCkpCi0gICAgICAgICAgICAo aHQtc2l6ZSEgaHQgKC0gKGh0LXNpemUgaHQpIGNvdW50KSkpCi0gICAgICAgICAgY291bnQpKSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJl YWwtdGFibGUga2V5KSkpKSkKKyAgICAgICAgICAgIChkZWxldGUtb25lISBrZXkxKQorICAgICAg ICAgICAgKGZvci1lYWNoIGRlbGV0ZS1vbmUhIGtleXMpCisgICAgICAgICAgICAodW5sZXNzIChv ciAoaHQtd2Vha25lc3MgaHQpICh6ZXJvPyBjb3VudCkpCisgICAgICAgICAgICAgIChodC1zaXpl ISBodCAoLSBzaXplIGNvdW50KSkpCisgICAgICAgICAgICBjb3VudCkpKSkpCiAKIChkZWZpbmUg KGhhc2gtdGFibGUtaW50ZXJuISBodCBrZXkgZmFpbHVyZSkKICAgIkVmZmVjdGl2ZWx5IGludm9r ZXMgSEFTSC1UQUJMRS1SRUYgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFuZApAQCAtODIwLDgg KzgyMSwxMCBAQCBQUk9DIHJldHVybnMgdHJ1ZS4gUmV0dXJucyBhbiB1bnNwZWNpZmllZCB2YWx1 ZS4iCiAgIChhc3NlcnQtbXV0YWJsZSBodCkKICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVh bC10YWJsZSkgaHQKICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKQotICAgICAg ICAgICAgICAgICAgICAgKGlmIChwcm9jIGtleSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJlYWwtdGFibGUga2V5KSkpCisgICAgICAgICAgICAgICAg ICAgICAod2hlbiAocHJvYyBrZXkgdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAodW5sZXNz IChodC13ZWFrbmVzcyBodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaHQtc2l6ZSEgaHQg KC0gKGh0LXNpemUgaHQpIDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlbW92 ZSEgaCBhIHJlYWwtdGFibGUga2V5KSkpCiAgICAgICAgICAgICAgICAgICAgcmVhbC10YWJsZSkp KQogCiAMCi0tIAoyLjE5LjEKCg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0010-Created-a-procedure-that-returns-the-size-of-a-hash-.patch" Content-Disposition: attachment; filename="0010-Created-a-procedure-that-returns-the-size-of-a-hash-.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqvhvnp14> X-Attachment-Id: f_jqvhvnp14 RnJvbSBlMjc0NTI3NWU4ZWVlYWI1ZDdiOTE3NDZlOTJjMWMwZTc4ZmZjOTNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDEzIEphbiAyMDE5IDIwOjQ0OjE4 IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAxMC8xMF0gQ3JlYXRlZCBhIHByb2NlZHVyZSB0aGF0IHJl dHVybnMgdGhlIHNpemUgb2YgYSBoYXNoCiB0YWJsZQoKVGhlIG1vZHVsZSAoSUNFLTkgR0VORVJJ Qy1IQVNILVRBQkxFUykgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGhhc2ggdGFibGUKc2l6ZSBieSBp dHNlbGYuIE5vdywgYSBwcm9jZWR1cmUgSEFTSC1OLUlURU1TIHdhcyBpbXBsZW1lbnRlZCBpbgon bGliZ3VpbGUvaGFzaHRhYi5jJyB0byBhY2Nlc3MgdGhlIG5faXRlbXMgZmllbGQgb2YgR3VpbGUg aGFzaCB0YWJsZQpzdHJ1Y3R1cmUuCgoqIGxpYmd1aWxlL2hhc2h0YWIuYyAoc2NtX2hhc2hfbl9p dGVtcyk6IGNyZWF0ZWQsIGl0IHJldHVybnMgdGhlIG51bWJlcgogIG9mIGl0ZW1zIHRoYXQgdGhl IGdpdmVuIGhhc2ggdGFibGUgaGFzLiBJdCB3b3JrcyBmb3Igbm9ybWFsIGFuZCB3ZWFrCiAgaGFz aCB0YWJsZXMuCiogbW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtOiByZW1vdmVk ICdzaXplJyBmaWVsZCBvZgogIDxnZW5lcmljLWhhc2gtdGFibGU+IHJlY29yZCB0eXBlLiBObyBw cm9jZWR1cmVzIG5lZWQgdG8gdXBkYXRlIGl0CiAgYW55bW9yZS4KKGhhc2gtdGFibGUtc2l6ZSk6 IG5vdyBhY2Nlc3NlcyB0aGUgc2l6ZSB1c2luZyBIQVNILU4tSVRFTVMuIFRoYXQKICBndWFyYW50 ZWVzIE8oMSkgcHJvY2VkdXJlIHRpbWUuCi0tLQogbGliZ3VpbGUvaGFzaHRhYi5jICAgICAgICAg ICAgICAgICAgIHwgIDE5ICsrLQogbGliZ3VpbGUvaGFzaHRhYi5oICAgICAgICAgICAgICAgICAg IHwgICAxICsKIGxpYmd1aWxlL3dlYWstdGFibGUuYyAgICAgICAgICAgICAgICB8ICAxNCArKwog bGliZ3VpbGUvd2Vhay10YWJsZS5oICAgICAgICAgICAgICAgIHwgICAzICstCiBtb2R1bGUvaWNl LTkvZ2VuZXJpYy1oYXNoLXRhYmxlcy5zY20gfCAyMzAgKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tCiA1IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCAxNTAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvaGFzaHRhYi5jIGIvbGliZ3VpbGUvaGFzaHRhYi5jCmlu ZGV4IGI0ZjAwNGMxZC4uZGQwNjU5ZjdjIDEwMDY0NAotLS0gYS9saWJndWlsZS9oYXNodGFiLmMK KysrIGIvbGliZ3VpbGUvaGFzaHRhYi5jCkBAIC0yMTAsNiArMjEwLDIyIEBAIFNDTV9ERUZJTkUg KHNjbV9oYXNoX3RhYmxlX3AsICJoYXNoLXRhYmxlPyIsIDEsIDAsIDAsCiB9CiAjdW5kZWYgRlVO Q19OQU1FCiAKK1NDTV9ERUZJTkUgKHNjbV9oYXNoX25faXRlbXMsICJoYXNoLW4taXRlbXMiLCAx LCAwLCAwLAorICAgICAgICAgICAgKFNDTSB0YWJsZSksCisgICAgICAgICAgICAiUmV0dXJuIHRo ZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGdpdmVuIGhhc2ggVEFCTEUuIikKKyNkZWZpbmUg RlVOQ19OQU1FIHNfc2NtX2hhc2hfbl9pdGVtcworeworICBpZiAoU0NNX1dFQUtfVEFCTEVfUCAo dGFibGUpKQorICAgIHsKKyAgICAgIHJldHVybiBzY21fd2Vha190YWJsZV9uX2l0ZW1zICh0YWJs ZSk7CisgICAgfQorCisgIFNDTV9WQUxJREFURV9IQVNIVEFCTEUgKDEsIHRhYmxlKTsKKworICBy ZXR1cm4gc2NtX2Zyb21fdWxvbmcgKFNDTV9IQVNIVEFCTEVfTl9JVEVNUyAodGFibGUpKTsKK30K KyN1bmRlZiBGVU5DX05BTUUKKwogCiAMCiAvKiBBY2Nlc3NpbmcgaGFzaCB0YWJsZSBlbnRyaWVz LiAgKi8KQEAgLTk4Niw4ICsxMDAyLDcgQEAgY291bnRfcHJvYyAodm9pZCAqcHJlZCwgU0NNIGtl eSwgU0NNIGRhdGEsIFNDTSB2YWx1ZSkKIFNDTV9ERUZJTkUgKHNjbV9oYXNoX2NvdW50LCAiaGFz aC1jb3VudCIsIDIsIDAsIDAsCiAgICAgICAgICAgICAoU0NNIHByZWQsIFNDTSB0YWJsZSksCiAg ICAgICAgICAgICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGdpdmVuIGhh c2ggVEFCTEUgdGhhdFxuIgotICAgICAgICAgICAgImNhdXNlIGAoUFJFRCBLRVkgVkFMVUUpJyB0 byByZXR1cm4gdHJ1ZS4gIFRvIHF1aWNrbHkgZGV0ZXJtaW5lXG4iCi0gICAgICAgICAgICAidGhl IHRvdGFsIG51bWJlciBvZiBlbGVtZW50cywgdXNlIGAoY29uc3QgI3QpJyBmb3IgUFJFRC4iKQor ICAgICAgICAgICAgImNhdXNlIGAoUFJFRCBLRVkgVkFMVUUpJyB0byByZXR1cm4gdHJ1ZS4iKQog I2RlZmluZSBGVU5DX05BTUUgc19zY21faGFzaF9jb3VudAogewogICBTQ00gaW5pdDsKZGlmZiAt LWdpdCBhL2xpYmd1aWxlL2hhc2h0YWIuaCBiL2xpYmd1aWxlL2hhc2h0YWIuaAppbmRleCA2MWU4 MWIzNDEuLjcwZTlkYWFiYiAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvaGFzaHRhYi5oCisrKyBiL2xp Ymd1aWxlL2hhc2h0YWIuaApAQCAtNzgsNiArNzgsNyBAQCBTQ01fQVBJIFNDTSBzY21fY19tYWtl X2hhc2hfdGFibGUgKHVuc2lnbmVkIGxvbmcgayk7CiBTQ01fQVBJIFNDTSBzY21fbWFrZV9oYXNo X3RhYmxlIChTQ00gbik7CiAKIFNDTV9BUEkgU0NNIHNjbV9oYXNoX3RhYmxlX3AgKFNDTSBoKTsK K1NDTV9BUEkgU0NNIHNjbV9oYXNoX25faXRlbXMgKFNDTSBoYXNoKTsKIAogU0NNX0lOVEVSTkFM IHZvaWQgc2NtX2lfcmVoYXNoIChTQ00gdGFibGUsIHNjbV90X2hhc2hfZm4gaGFzaF9mbiwKIAkJ CQl2b2lkICpjbG9zdXJlLCBjb25zdCBjaGFyICpmdW5jX25hbWUpOwpkaWZmIC0tZ2l0IGEvbGli Z3VpbGUvd2Vhay10YWJsZS5jIGIvbGliZ3VpbGUvd2Vhay10YWJsZS5jCmluZGV4IDFlNGQ4ZDMw Mi4uM2Y5NGI0ZmQ5IDEwMDY0NAotLS0gYS9saWJndWlsZS93ZWFrLXRhYmxlLmMKKysrIGIvbGli Z3VpbGUvd2Vhay10YWJsZS5jCkBAIC01MTUsNiArNTE1LDIwIEBAIHNjbV93ZWFrX3RhYmxlX3Ag KFNDTSBvYmopCiAgIHJldHVybiBzY21fZnJvbV9ib29sIChTQ01fV0VBS19UQUJMRV9QIChvYmop KTsKIH0KIAorU0NNCitzY21fd2Vha190YWJsZV9uX2l0ZW1zIChTQ00gdGFibGUpCisjZGVmaW5l IEZVTkNfTkFNRSAid2Vhay10YWJsZS1uLWl0ZW1zIgoreworICBzY21fdF93ZWFrX3RhYmxlICp0 OworCisgIFNDTV9WQUxJREFURV9XRUFLX1RBQkxFICgxLCB0YWJsZSk7CisKKyAgdCA9IFNDTV9X RUFLX1RBQkxFICh0YWJsZSk7CisKKyAgcmV0dXJuIHNjbV9mcm9tX3Vsb25nICh0LT5uX2l0ZW1z KTsKK30KKyN1bmRlZiBGVU5DX05BTUUKKwogU0NNCiBzY21fY193ZWFrX3RhYmxlX3JlZiAoU0NN IHRhYmxlLCB1bnNpZ25lZCBsb25nIHJhd19oYXNoLAogICAgICAgICAgICAgICAgICAgICAgIHNj bV90X3RhYmxlX3ByZWRpY2F0ZV9mbiBwcmVkLApkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvd2Vhay10 YWJsZS5oIGIvbGliZ3VpbGUvd2Vhay10YWJsZS5oCmluZGV4IGJjYmM5NGUzZi4uYjMwOWIxMWY5 IDEwMDY0NAotLS0gYS9saWJndWlsZS93ZWFrLXRhYmxlLmgKKysrIGIvbGliZ3VpbGUvd2Vhay10 YWJsZS5oCkBAIC00NSw2ICs0NSw3IEBAIHR5cGVkZWYgU0NNICgqc2NtX3RfdGFibGVfZm9sZF9m bikgKHZvaWQgKmNsb3N1cmUsIFNDTSBrLCBTQ00gdiwgU0NNIHJlc3VsdCk7CiBTQ01fSU5URVJO QUwgU0NNIHNjbV9jX21ha2Vfd2Vha190YWJsZSAodW5zaWduZWQgbG9uZyBrLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjbV90X3dlYWtfdGFibGVfa2luZCBraW5k KTsKIFNDTV9JTlRFUk5BTCBTQ00gc2NtX3dlYWtfdGFibGVfcCAoU0NNIGgpOworU0NNX0lOVEVS TkFMIFNDTSBzY21fd2Vha190YWJsZV9uX2l0ZW1zIChTQ00gdGFibGUpOwogCiBTQ01fSU5URVJO QUwgU0NNIHNjbV9jX3dlYWtfdGFibGVfcmVmIChTQ00gdGFibGUsIHVuc2lnbmVkIGxvbmcgcmF3 X2hhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY21fdF90YWJs ZV9wcmVkaWNhdGVfZm4gcHJlZCwKQEAgLTYzLDcgKzY0LDcgQEAgU0NNX0lOVEVSTkFMIHZvaWQg c2NtX3dlYWtfdGFibGVfcmVtcV94IChTQ00gdGFibGUsIFNDTSBrZXkpOwogU0NNX0lOVEVSTkFM IHZvaWQgc2NtX3dlYWtfdGFibGVfY2xlYXJfeCAoU0NNIHRhYmxlKTsKIAogU0NNX0lOVEVSTkFM IFNDTSBzY21fY193ZWFrX3RhYmxlX2ZvbGQgKHNjbV90X3RhYmxlX2ZvbGRfZm4gcHJvYywgdm9p ZCAqY2xvc3VyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NNIGlu aXQsIFNDTSB0YWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U0NNIGluaXQsIFNDTSB0YWJsZSk7CiBTQ01fSU5URVJOQUwgU0NNIHNjbV93ZWFrX3RhYmxlX2Zv bGQgKFNDTSBwcm9jLCBTQ00gaW5pdCwgU0NNIHRhYmxlKTsKIFNDTV9JTlRFUk5BTCB2b2lkIHNj bV93ZWFrX3RhYmxlX2Zvcl9lYWNoIChTQ00gcHJvYywgU0NNIHRhYmxlKTsKIFNDTV9JTlRFUk5B TCBTQ00gc2NtX3dlYWtfdGFibGVfbWFwX3RvX2xpc3QgKFNDTSBwcm9jLCBTQ00gdGFibGUpOwpk aWZmIC0tZ2l0IGEvbW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtIGIvbW9kdWxl L2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtCmluZGV4IDYyZmQ1YmIxMy4uNDVjZDEzNjRh IDEwMDY0NAotLS0gYS9tb2R1bGUvaWNlLTkvZ2VuZXJpYy1oYXNoLXRhYmxlcy5zY20KKysrIGIv bW9kdWxlL2ljZS05L2dlbmVyaWMtaGFzaC10YWJsZXMuc2NtCkBAIC0xODcsMTkgKzE4NywxNiBA QCBhbGlzdCBrZXlzIHdpdGggRVFVSVYtRlVOQ1RJT04uIgogCiAoZGVmaW5lLXJlY29yZC10eXBl IGdlbmVyaWMtaGFzaC10YWJsZQogICAobWFrZS1nZW5lcmljLWhhc2gtdGFibGUgcmVhbC10YWJs ZSBoYXNoLWZ1bmN0aW9uIGFzc29jaWF0b3Igd2Vha25lc3MKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIG11dGFibGU/IHNpemUgZXF1aXZhbGVuY2UtZnVuY3Rpb24gb3JpZ2luYWwtaGFzaC1m dW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGFibGU/IGVxdWl2YWxlbmNl LWZ1bmN0aW9uIG9yaWdpbmFsLWhhc2gtZnVuY3Rpb24pCiAgIGhhc2gtdGFibGU/CiAgIDs7IFRo ZXNlIHRocmVlIGFyZSB0aGUgbW9zdCBhY2Nlc3NlZCBmaWVsZHMuCiAgIChyZWFsLXRhYmxlIGh0 LXJlYWwtdGFibGUgaHQtcmVhbC10YWJsZSEpCiAgIChoYXNoLWZ1bmN0aW9uIGh0LWhhc2gtZnVu Y3Rpb24pCiAgIChhc3NvY2lhdG9yIGh0LWFzc29jaWF0b3IpCi0gIDs7IFdlYWsgaGFzaCB0YWJs ZXMgZG9uJ3QgdXNlIGhhbmRsZXMgYW5kIGRvbid0IHVwZGF0ZSBodC1zaXplLgorICA7OyBXZWFr IGhhc2ggdGFibGVzIGRvbid0IHVzZSBoYW5kbGVzLgogICAod2Vha25lc3MgaHQtd2Vha25lc3Mp CiAgIDs7IFN1cHBvcnRzIGltbXV0YWJpbGl0eS4KICAgKG11dGFibGU/IGhhc2gtdGFibGUtbXV0 YWJsZT8pCi0gIDs7IFNpemUgb2YgaGFzaC10YWJsZSwgYWxsb3dpbmcgTygxKSBoYXNoLXRhYmxl LXNpemUgZm9yCi0gIDs7IG5vbi13ZWFrIGhhc2ggdGFibGVzLgotICAoc2l6ZSBodC1zaXplIGh0 LXNpemUhKQogICA7OyBUaGVzZSBhcmUgbW9zdGx5IG5lZWRlZCBmb3IgcmVmbGVjdGl2ZSBxdWVy aWVzCiAgIChlcXVpdmFsZW5jZS1mdW5jdGlvbiBoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0 aW9uKQogICAob3JpZ2luYWwtaGFzaC1mdW5jdGlvbiBoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24p KQpAQCAtMjM5LDEwICsyMzYsMTAgQEAgYWxpc3Qga2V5cyB3aXRoIEVRVUlWLUZVTkNUSU9OLiIK ICAgICAgIChnZXQtaGFzaC1mdW5jdGlvbnMgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlvbikK ICAgICAobGV0ICgocmVhbC10YWJsZSAoKGd1aWxlLWh0LWN0b3Igd2Vha25lc3MpIGNhcGFjaXR5 KSkpCiAgICAgICA7OyBBcmd1bWVudHM6IHJlYWwtdGFibGUgaGFzaC1mdW5jdGlvbiBhc3NvY2lh dG9yCi0gICAgICA7OyAgICAgICAgICAgIHdlYWtuZXNzIG11dGFibGU/IHNpemUgZXF1aXZhbGVu Y2UtZnVuY3Rpb24gb3JpZy1oYXNoLWZ1bmN0aW9uCisgICAgICA7OyAgICAgICAgICAgIHdlYWtu ZXNzIG11dGFibGU/IGVxdWl2YWxlbmNlLWZ1bmN0aW9uIG9yaWctaGFzaC1mdW5jdGlvbgogICAg ICAgKG1ha2UtZ2VuZXJpYy1oYXNoLXRhYmxlIHJlYWwtdGFibGUgaW50ZXJuYWwtaGFzaC1mdW5j dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVpdmFsZW5jZS1wcm9jLT5h c3NvY2lhdG9yIGVxdWl2LWZ1bmN0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlcXVpdi1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uKSkpKQogCiA7OyBJZiB0aGUgbGlzdCBv ZiBhcmd1bWVudHMgaXMgdXBkYXRlZCwgSEFTSC1UQUJMRSwgQUxJU1QtPkhBU0gtVEFCTEUsCkBA IC0zMjUsOCArMzIyLDcgQEAgaXMgc2lnbmFsZWQuIgogICAgICAgICAgICAgICAgICAgICAgICAg IChlcnJvciAiVHdvIGVxdWl2YWxlbnQga2V5cyB3ZXJlIHByb3ZpZGVkIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY2FyIGhhbmRsZSkgKGNhciBrdnMpKSkKICAgICAgICAgICAg ICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAoY2FkciBrdnMpKSkKLSAgICAgICAgICAgICAg ICAgICAgIChsb29wIChjZGRyIGt2cykpKSkKLSAgICAgICAgICAgICAgKGh0LXNpemUhIGh0IGNh cGFjaXR5KSkpKQorICAgICAgICAgICAgICAgICAgICAgKGxvb3AgKGNkZHIga3ZzKSkpKSkpKQog ICAgICAgaHQpKSkKIAogKGRlZmluZSogKGhhc2gtdGFibGUtdW5mb2xkIHN0b3A/IG1hcHBlciBz dWNjZXNzb3Igc2VlZApAQCAtMzQxLDI1ICszMzcsMTIgQEAgdGhlIHByb2NlZHVyZSBTVUNDRVNT T1IgdG8gU0VFRCwgYW5kIHJlcGVhdCB0aGlzIGFsZ29yaXRobS4iCiAgIChsZXQgKChyZXN1bHQg KCVtYWtlLWhhc2gtdGFibGUgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlvbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG11dGFibGUgY2FwYWNpdHkgd2Vha25lc3MpKSkKICAg ICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSByZXN1bHQKLSAgICAgIChpZiAo aHQtd2Vha25lc3MgcmVzdWx0KQotICAgICAgICAgIChsZXQgbG9vcCAoKHNlZWQgc2VlZCkpCi0g ICAgICAgICAgICAoaWYgKHN0b3A/IHNlZWQpCi0gICAgICAgICAgICAgICAgcmVzdWx0Ci0gICAg ICAgICAgICAgICAgKHJlY2VpdmUgKGtleSB2YWwpIChtYXBwZXIgc2VlZCkKLSAgICAgICAgICAg ICAgICAgIChoYXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpCi0gICAgICAgICAgICAg ICAgICAobG9vcCAoc3VjY2Vzc29yIHNlZWQpKSkpKQotICAgICAgICAgIChsZXQgKChzaXplICho dC1zaXplIHJlc3VsdCkpKQotICAgICAgICAgICAgKGxldCBsb29wICgoc2VlZCBzZWVkKSkKLSAg ICAgICAgICAgICAgKGlmIChzdG9wPyBzZWVkKQotICAgICAgICAgICAgICAgICAgcmVzdWx0Ci0g ICAgICAgICAgICAgICAgICAocmVjZWl2ZSAoa2V5IHZhbCkgKG1hcHBlciBzZWVkKQotICAgICAg ICAgICAgICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFuZGxlISBoIGEgcmVh bC10YWJsZSBrZXkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaHQtdW5zcGVjaWZpZWQpKSkKLSAgICAgICAgICAgICAgICAgICAgICAoaWYg KGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgIChzZXQhIHNpemUgKCsgMSBzaXplKSkpCi0gICAgICAgICAgICAgICAgICAgICAgKHNldC1j ZHIhIGhhbmRsZSB2YWwpKQotICAgICAgICAgICAgICAgICAgICAobG9vcCAoc3VjY2Vzc29yIHNl ZWQpKSkpKQotICAgICAgICAgICAgKGh0LXNpemUhIHJlc3VsdCBzaXplKSkpKQorICAgICAgKGxl dCBsb29wICgoc2VlZCBzZWVkKSkKKyAgICAgICAgKGlmIChzdG9wPyBzZWVkKQorICAgICAgICAg ICAgcmVzdWx0CisgICAgICAgICAgICAocmVjZWl2ZSAoa2V5IHZhbCkgKG1hcHBlciBzZWVkKQor ICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkgdmFsKQorICAgICAg ICAgICAgICAobG9vcCAoc3VjY2Vzc29yIHNlZWQpKSkpKSkKICAgICByZXN1bHQpKQogCiAoZGVm aW5lKiAoYWxpc3QtPmhhc2gtdGFibGUgYWxpc3QgZXF1aXYtZnVuY3Rpb24gaGFzaC1mdW5jdGlv bgpAQCAtMzcyLDE5ICszNTUsOSBAQCBjb21lIGxhdGVyLiIKICAgKGxldCAoKHJlc3VsdCAoJW1h a2UtaGFzaC10YWJsZSBlcXVpdi1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbXV0YWJsZSBjYXBhY2l0eSB3ZWFrbmVzcykpKQogICAgICh3 aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFibGUpIHJlc3VsdAotICAgICAgKGlmIChodC13 ZWFrbmVzcyByZXN1bHQpCi0gICAgICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHBhaXIpCi0gICAg ICAgICAgICAgICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFibGUgKGNhciBwYWlyKSAo Y2RyIHBhaXIpKSkKLSAgICAgICAgICAgICAgICAgICAgKHJldmVyc2UgYWxpc3QpKQotICAgICAg ICAgIChsZXQgKChzaXplIChodC1zaXplIHJlc3VsdCkpKQotICAgICAgICAgICAgKGZvci1lYWNo IChsYW1iZGEgKHBhaXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoaGFuZGxlICho YXNoeC1jcmVhdGUtaGFuZGxlIQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaCBhIHJlYWwtdGFibGUgKGNhciBwYWlyKSBodC11bnNwZWNpZmllZCkpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAod2hlbiAoZXE/IGh0LXVuc3BlY2lmaWVkIChjZHIgaGFuZGxlKSkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0ISBzaXplICgrIDEgc2l6ZSkpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAoY2RyIHBhaXIpKSkpKQot ICAgICAgICAgICAgICAgICAgICAgIGFsaXN0KQotICAgICAgICAgICAgKGh0LXNpemUhIHJlc3Vs dCBzaXplKSkpKQorICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHBhaXIpCisgICAgICAgICAgICAg ICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSAoY2FyIHBhaXIpIChjZHIgcGFpcikpKQor ICAgICAgICAgICAgICAgIChyZXZlcnNlIGFsaXN0KSkpCiAgICAgcmVzdWx0KSkKIAogDApAQCAt NDE1LDEyICszODgsNyBAQCBLRVkgaXNuJ3QgcHJlc2VudC4iCiAKIChkZWZpbmUgKGhhc2gtdGFi bGUtZW1wdHk/IGh0KQogICAiUmV0dXJucyB3aGV0aGVyIEtFWSBpcyBlbXB0eS4iCi0gIChpZiAo aHQtd2Vha25lc3MgaHQpCi0gICAgICAoY2FsbC9jYyAobGFtYmRhIChleGl0KQotICAgICAgICAg ICAgICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKSAoZXhpdCAjZikpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChodC1yZWFsLXRhYmxlIGh0KSkKLSAgICAgICAg ICAgICAgICAgI3QpKQotICAgICAgKHplcm8/IChodC1zaXplIGh0KSkpKQorICAoemVybz8gKGhh c2gtbi1pdGVtcyAoaHQtcmVhbC10YWJsZSBodCkpKSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1j b250YWlucz8gaHQga2V5KQogICAiUmV0dXJuIHdoZXRoZXIgS0VZIGlzIGEga2V5IGluIEhULiIK QEAgLTQ1MCwxNCArNDE4LDggQEAgYXNzb2NpYXRpb24gaXMgY3JlYXRlZCBiZXR3ZWVuIEtFWSBh bmQgVkFMLiBJZiB0aGVyZSBpcyBhIHByZXZpb3VzCiBhc3NvY2lhdGlvbiBmb3IgS0VZLCBpdCBp cyBkZWxldGVkLiIKICAgKGFzc2VydC1tdXRhYmxlIGh0KQogICAod2l0aC1oYXNoeC12YWx1ZXMg KGggYSByZWFsLXRhYmxlKSBodAotICAgIChpZiAoaHQtd2Vha25lc3MgaHQpCi0gICAgICAgICho YXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpCi0gICAgICAgIChsZXQgKChoYW5kbGUg KGhhc2h4LWNyZWF0ZS1oYW5kbGUhCi0gICAgICAgICAgICAgICAgICAgICAgIGggYSByZWFsLXRh YmxlIGtleQotICAgICAgICAgICAgICAgICAgICAgICBodC11bnNwZWNpZmllZCkpKQotICAgICAg ICAgIChpZiAoZXE/IGh0LXVuc3BlY2lmaWVkIChjZHIgaGFuZGxlKSkKLSAgICAgICAgICAgICAg KGh0LXNpemUhIGh0ICgrIDEgKGh0LXNpemUgaHQpKSkpCi0gICAgICAgICAgKHNldC1jZHIhIGhh bmRsZSB2YWwpKSkpKQorICAgIChoYXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpKQor ICAqdW5zcGVjaWZpZWQqKQogCiAoZGVmaW5lKiAoaGFzaC10YWJsZS1zZXQhIGh0ICM6b3B0aW9u YWwgKGtleTEgaHQtdW5zcGVjaWZpZWQpICh2YWwxIGh0LXVuc3BlY2lmaWVkKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAjOnJlc3QgYXJncykKQEAgLTQ3NywyNSArNDM5LDE1IEBAIGRlbGV0 ZWQuIgogICAgICAgKGJlZ2luCiAgICAgICAgIChhc3NlcnQtbXV0YWJsZSBodCkKICAgICAgICAg KHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkgaHQKLSAgICAgICAgICAobGV0ICgo c2V0LW9uZSEgKGlmIChodC13ZWFrbmVzcyBodCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsYW1iZGEgKGtleSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICho YXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWwpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRlLWhhbmRsZSEKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCBhIHJlYWwtdGFibGUga2V5Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0LXVuc3BlY2lmaWVkKSkp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChlcT8gaHQtdW5zcGVjaWZp ZWQgKGNkciBoYW5kbGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKSkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlIHZhbCkpKSkpKQotICAgICAgICAgICAgKHNldC1v bmUhIGtleTEgdmFsMSkKLSAgICAgICAgICAgIChsZXQgbG9vcCAoKGt2cyBhcmdzKSkKLSAgICAg ICAgICAgICAgKGNvbmQKLSAgICAgICAgICAgICAgICgobnVsbD8ga3ZzKSAqdW5zcGVjaWZpZWQq KQotICAgICAgICAgICAgICAgKChudWxsPyAoY2RyIGt2cykpCi0gICAgICAgICAgICAgICAgKGVy cm9yICJPZGQgbnVtYmVyIG9mIGtleS12YWx1ZSBwYWlycyIKLSAgICAgICAgICAgICAgICAgICAg ICAgKGNvbnMqIGtleTEgdmFsMSBhcmdzKSkpCi0gICAgICAgICAgICAgICAoZWxzZSAoc2V0LW9u ZSEgKGNhciBrdnMpIChjYWRyIGt2cykpCi0gICAgICAgICAgICAgICAgICAgICAobG9vcCAoY2Rk ciBrdnMpKSkpKSkpKSkpCisgICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFibGUga2V5 MSB2YWwxKQorICAgICAgICAgIChsZXQgbG9vcCAoKGt2cyBhcmdzKSkKKyAgICAgICAgICAgIChj b25kCisgICAgICAgICAgICAgKChudWxsPyBrdnMpICp1bnNwZWNpZmllZCopCisgICAgICAgICAg ICAgKChudWxsPyAoY2RyIGt2cykpCisgICAgICAgICAgICAgIChlcnJvciAiT2RkIG51bWJlciBv ZiBrZXktdmFsdWUgcGFpcnMiCisgICAgICAgICAgICAgICAgICAgICAoY29ucyoga2V5MSB2YWwx IGFyZ3MpKSkKKyAgICAgICAgICAgICAoZWxzZSAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSAo Y2FyIGt2cykgKGNhZHIga3ZzKSkKKyAgICAgICAgICAgICAgICAgICAobG9vcCAoY2RkciBrdnMp KSkpKSkpKSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1kZWxldGUtc2luZ2xlISBodCBrZXkpCiAg ICJEZWxldGVzIEtFWSBhbmQgYXNzb2NpYXRlZCB2YWx1ZSBpbiBoYXNoIHRhYmxlIEhULiBSZXR1 cm5zICN0IGlmIEtFWQpAQCAtNTA1LDcgKzQ1Nyw2IEBAIGhhZCBhbiBhc3NvY2lhdGlvbiBhbmQg I2Ygb3RoZXJ3aXNlLiIKICAgICAoaWYgKGVxPyBodC11bnNwZWNpZmllZCAoaGFzaHgtcmVmIGgg YSByZWFsLXRhYmxlIGtleSBodC11bnNwZWNpZmllZCkpCiAgICAgICAgICNmCiAgICAgICAgIChi ZWdpbiAoaGFzaHgtcmVtb3ZlISBoIGEgcmVhbC10YWJsZSBrZXkpCi0gICAgICAgICAgICAgICAo aHQtc2l6ZSEgaHQgKC0gKGh0LXNpemUgaHQpIDEpKQogICAgICAgICAgICAgICAgI3QpKSkpCiAK IChkZWZpbmUqIChoYXNoLXRhYmxlLWRlbGV0ZSEgaHQgIzpvcHRpb25hbCAoa2V5MSBodC11bnNw ZWNpZmllZCkgIzpyZXN0IGtleXMpCkBAIC01MTksNyArNDcwLDYgQEAgbnVtYmVyIG9mIGtleXMg dGhhdCBoYWQgYXNzb2NpYXRpb25zLiIKICAgICAgICAgKGFzc2VydC1tdXRhYmxlIGh0KQogICAg ICAgICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAogICAgICAgICAgIChs ZXQqICgoY291bnQgMCkKLSAgICAgICAgICAgICAgICAgKHNpemUgKGh0LXNpemUgaHQpKQogICAg ICAgICAgICAgICAgICAoZGVsZXRlLW9uZSEgKGxhbWJkYSAoa2V5KQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAod2hlbiAobm90IChlcT8gaHQtdW5zcGVjaWZpZWQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1yZWYgaCBhIHJl YWwtdGFibGUga2V5CkBAIC01MjgsOCArNDc4LDYgQEAgbnVtYmVyIG9mIGtleXMgdGhhdCBoYWQg YXNzb2NpYXRpb25zLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgt cmVtb3ZlISBoIGEgcmVhbC10YWJsZSBrZXkpKSkpKQogICAgICAgICAgICAgKGRlbGV0ZS1vbmUh IGtleTEpCiAgICAgICAgICAgICAoZm9yLWVhY2ggZGVsZXRlLW9uZSEga2V5cykKLSAgICAgICAg ICAgICh1bmxlc3MgKG9yIChodC13ZWFrbmVzcyBodCkgKHplcm8/IGNvdW50KSkKLSAgICAgICAg ICAgICAgKGh0LXNpemUhIGh0ICgtIHNpemUgY291bnQpKSkKICAgICAgICAgICAgIGNvdW50KSkp KSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1pbnRlcm4hIGh0IGtleSBmYWlsdXJlKQpAQCAtNTQ2 LDExICs0OTQsOSBAQCBpcyBzZXQgdG8gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEZBSUxVUkUgYW5k IHRoZSBuZXcgdmFsdWUgaXMgcmV0dXJuZWQuIgogICAgICAgICAgICAgICAgICAgIChoYXNoeC1z ZXQhIGggYSByZWFsLXRhYmxlIGtleSB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICB2YWx1ZSkp CiAgICAgICAgICAgICAgICAgKGVsc2UgdmFsdWUpKSkKLSAgICAgICAgKGxldCAoKGhhbmRsZQot ICAgICAgICAgICAgICAgKGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGggYSByZWFsLXRhYmxlIGtleSBo dC11bnNwZWNpZmllZCkpKQorICAgICAgICAobGV0ICgoaGFuZGxlIChoYXNoeC1jcmVhdGUtaGFu ZGxlISBoIGEgcmVhbC10YWJsZSBrZXkgaHQtdW5zcGVjaWZpZWQpKSkKICAgICAgICAgICAoaWYg KGVxPyBodC11bnNwZWNpZmllZCAoY2RyIGhhbmRsZSkpCi0gICAgICAgICAgICAgIChiZWdpbiAo aHQtc2l6ZSEgaHQgKCsgMSAoaHQtc2l6ZSBodCkpKQotICAgICAgICAgICAgICAgICAgICAgKHNl dC1jZHIhIGhhbmRsZSAoZmFpbHVyZSkpKSkKKyAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRs ZSAoZmFpbHVyZSkpKQogICAgICAgICAgIChjZHIgaGFuZGxlKSkpKSkKIAogKGRlZmluZSAoaGFz aC10YWJsZS1pbnRlcm4hL2RlZmF1bHQgaHQga2V5IGRlZmF1bHQpCkBAIC01NjYsMTEgKzUxMiw3 IEBAIGlzIHNldCB0byBERUZBVUxUIGFuZCBERUZBVUxUIGlzIHJldHVybmVkLiIKICAgICAgICAg ICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFibGUga2V5IGRlZmF1bHQpCiAgICAgICAg ICAgICAgICAgIGRlZmF1bHQpCiAgICAgICAgICAgICAgICAgKGVsc2UgdmFsdWUpKSkKLSAgICAg ICAgKGxldCAoKGhhbmRsZQotICAgICAgICAgICAgICAgKGhhc2h4LWNyZWF0ZS1oYW5kbGUhIGgg YSByZWFsLXRhYmxlIGtleSBodC11bnNwZWNpZmllZCkpKQotICAgICAgICAgIChpZiAoZXE/IGh0 LXVuc3BlY2lmaWVkIChjZHIgaGFuZGxlKSkKLSAgICAgICAgICAgICAgKGJlZ2luIChodC1zaXpl ISBodCAoKyAxIChodC1zaXplIGh0KSkpCi0gICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEg aGFuZGxlIGRlZmF1bHQpKSkKKyAgICAgICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRlLWhh bmRsZSEgaCBhIHJlYWwtdGFibGUga2V5IGRlZmF1bHQpKSkKICAgICAgICAgICAoY2RyIGhhbmRs ZSkpKSkpCiAKIChkZWZpbmUqIChoYXNoLXRhYmxlLXVwZGF0ZSEgaHQga2V5IHVwZGF0ZXIgIzpv cHRpb25hbApAQCAtNjAxLDcgKzU0Myw2IEBAIHByb3ZpZGVkLCBvciBzaWduYWxzIGFuIGVycm9y IG90aGVyd2lzZS4iCiAgICAgICAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSBuZXcpKSkK ICAgICAgICAgICAgICAgICAoZWxzZQogICAgICAgICAgICAgICAgICAobGV0ICgobmV3ICh1cGRh dGVyIChmYWlsdXJlKSkpKQotICAgICAgICAgICAgICAgICAgIChodC1zaXplISBodCAoKyAxICho dC1zaXplIGh0KSkpCiAgICAgICAgICAgICAgICAgICAgKGhhc2h4LXNldCEgaCBhIHJlYWwtdGFi bGUga2V5IG5ldykpKSkpKSkKICAgKnVuc3BlY2lmaWVkKikKIApAQCAtNjE5LDEyICs1NjAsOCBA QCBVUERBVEVSLCBhbmQgc2V0dGluZyBpdCB0byB0aGUgcmVzdWx0IHRoZXJlb2YuIgogICAgICAg ICA7OyBKLk0uIHNlcGFyYXRlIHRoZSBjYXNlIHdoZXJlIGh0IGlzIHdlYWsgLSBkb24ndCB1c2Ug aGFuZGxlCiAgICAgICAgIChsZXQqICgob2xkIChoYXNoeC1yZWYgaCBhIHJlYWwtdGFibGUga2V5 IGRlZmF1bHQpKSkKICAgICAgICAgICAoaGFzaHgtc2V0ISBoIGEgcmVhbC10YWJsZSBrZXkgKHVw ZGF0ZXIgb2xkKSkpCi0gICAgICAgIChsZXQgKChoYW5kbGUgKGhhc2h4LWNyZWF0ZS1oYW5kbGUh IGggYSByZWFsLXRhYmxlIGtleQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBodC11bnNwZWNpZmllZCkpKQotICAgICAgICAgIChpZiAoZXE/IGh0LXVuc3BlY2lm aWVkIChjZHIgaGFuZGxlKSkKLSAgICAgICAgICAgICAgKGJlZ2luIChodC1zaXplISBodCAoKyAx IChodC1zaXplIGh0KSkpCi0gICAgICAgICAgICAgICAgICAgICAoc2V0LWNkciEgaGFuZGxlICh1 cGRhdGVyIGRlZmF1bHQpKSkKLSAgICAgICAgICAgICAgKHNldC1jZHIhIGhhbmRsZSAodXBkYXRl ciAoY2RyIGhhbmRsZSkpKSkpKSkKKyAgICAgICAgKGxldCAoKGhhbmRsZSAoaGFzaHgtY3JlYXRl LWhhbmRsZSEgaCBhIHJlYWwtdGFibGUga2V5IGRlZmF1bHQpKSkKKyAgICAgICAgICAoc2V0LWNk ciEgaGFuZGxlICh1cGRhdGVyIChjZHIgaGFuZGxlKSkpKSkpCiAgICp1bnNwZWNpZmllZCopCiAK IChkZWZpbmUgKGhhc2gtdGFibGUtcG9wISBodCkKQEAgLTYzNyw4ICs1NzQsNiBAQCBhbmQgdmFs dWUgYXMgdHdvIHZhbHVlcy4iCiAgICAgICh3aXRoLWhhc2h4LXZhbHVlcyAoaCBhIHJlYWwtdGFi bGUpIGh0CiAgICAgICAgKGhhc2gtZm9yLWVhY2ggKGxhbWJkYSAoa2V5IHZhbHVlKQogICAgICAg ICAgICAgICAgICAgICAgICAgKGhhc2h4LXJlbW92ZSEgaCBhIHJlYWwtdGFibGUga2V5KQotICAg ICAgICAgICAgICAgICAgICAgICAgKHVubGVzcyAoaHQtd2Vha25lc3MgaHQpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgIChodC1zaXplISBodCAoLSAoaHQtc2l6ZSBodCkgMSkpKQogICAgICAg ICAgICAgICAgICAgICAgICAgKHJldHVybiBrZXkgdmFsdWUpKQogICAgICAgICAgICAgICAgICAg ICAgIHJlYWwtdGFibGUpKQogICAgICAoZXJyb3IgIkhhc2ggdGFibGUgaXMgZW1wdHkiIGh0KSkp KQpAQCAtNjQ5LDcgKzU4NCw2IEBAIGFuZCB2YWx1ZSBhcyB0d28gdmFsdWVzLiIKICAgKGlmIGNh cGFjaXR5CiAgICAgICAoaHQtcmVhbC10YWJsZSEgaHQgKChndWlsZS1odC1jdG9yIChodC13ZWFr bmVzcyBodCkpIGNhcGFjaXR5KSkKICAgICAgIChoYXNoLWNsZWFyISAoaHQtcmVhbC10YWJsZSBo dCkpKQotICAoaHQtc2l6ZSEgaHQgMCkKICAgKnVuc3BlY2lmaWVkKikKIAogDApAQCAtNjU4LDEw ICs1OTIsNyBAQCBhbmQgdmFsdWUgYXMgdHdvIHZhbHVlcy4iCiAoZGVmaW5lIChoYXNoLXRhYmxl LXNpemUgaHQpCiAgICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYXNzb2NpYXRpb25zIGluIEhULiBU aGlzIGlzIGd1YXJhbnRlZWQgTygxKSBmb3IKIHRhYmxlcyB3aGVyZSAjOldFQUtORVNTIGlzICNm LiIKLSAgKGlmIChodC13ZWFrbmVzcyBodCkKLSAgICAgIChoYXNoLWZvbGQgKGxhbWJkYSAoa2V5 IHZhbCBhbnMpICgrIDEgYW5zKSkKLSAgICAgICAgICAgICAgICAgMCAoaHQtcmVhbC10YWJsZSBo dCkpCi0gICAgICAoaHQtc2l6ZSBodCkpKQorICAoaGFzaC1uLWl0ZW1zIChodC1yZWFsLXRhYmxl IGh0KSkpCiAKIChkZWZpbmUgKGhhc2gtdGFibGUta2V5cyBodCkKICAgIlJldHVybnMgYSBsaXN0 IG9mIHRoZSBrZXlzIGluIEhULiIKQEAgLTY4Myw0OCArNjE0LDYwIEBAIHZhbHVlcyBpbiB0aGUg Y29ycmVzcG9uZGluZyBvcmRlci4iCiAgICAgICAgICAgICAgICAgICAgKGh0LXJlYWwtdGFibGUg aHQpKQogICAgICh2YWx1ZXMga2V5cyB2YWxzKSkpCiAKLTs7OyBJbiBhIG5vbi13ZWFrIGhhc2gg dGFibGUsIHdlIGtub3cgdGhlIHNpemUgdGhhdCB0aGUga2V5L3ZhbHVlIHZlY3RvcgotOzs7IHdp bGwgaGF2ZS4gSW4gYSB3ZWFrIGhhc2ggdGFibGUsIHdlIGhhdmUgdG8gaXRlcmF0ZSB0aHJvdwot Ozs7IGFzc29jaWF0aW9ucyBvZiB0aGUgaGFzaCB0YWJsZSB0byBjb21wdXRlIGl0cyBzaXplLCBz byBpdCBpcyBlYXNpZXIKLTs7OyB0byBzaW1wbHkgY2FsbCBIQVNILVRBQkxFLUtFWVMvSEFTSC1U QUJMRS1WQUxVRVMuCiAoZGVmaW5lIChoYXNoLXRhYmxlLWtleS12ZWN0b3IgaHQpCiAgICJSZXR1 cm5zIGEgdmVjdG9yIG9mIHRoZSBrZXlzIGluIEhULiIKLSAgKGlmIChodC13ZWFrbmVzcyBodCkK LSAgICAgIChsaXN0LT52ZWN0b3IgKGhhc2gtdGFibGUta2V5cyBodCkpCi0gICAgICAobGV0KiAo KGxlbiAoaHQtc2l6ZSBodCkpCi0gICAgICAgICAgICAgKGtleXMgKG1ha2UtdmVjdG9yIGxlbikp KQotICAgICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGtleSB2YWwgaSkKLSAgICAgICAgICAgICAg ICAgICAgICh2ZWN0b3Itc2V0ISBrZXlzIGkga2V5KQotICAgICAgICAgICAgICAgICAgICAgKCsg aSAxKSkKLSAgICAgICAgICAgICAgICAgICAwIChodC1yZWFsLXRhYmxlIGh0KSkKKyAgKGxldCog KChsZW4gKGhhc2gtdGFibGUtc2l6ZSBodCkpCisgICAgICAgICAoa2V5cyAobWFrZS12ZWN0b3Ig bGVuKSkKKyAgICAgICAgIDs7IEluIGEgd2VhayBoYXNoIHRhYmxlLCBzb21lIHZhbHVlcyBtaWdo dCBnZXQgZ2FyZ2FiZQorICAgICAgICAgOzsgY29sbGVjdGVkIHdoaWxlIHRoZSBwcm9jZWR1cmUg aXMgcnVubmluZywgc28gd2UgZG91YmxlLWNoZWNrCisgICAgICAgICA7OyBpZiB3ZSBjb2xsZWN0 ZWQgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBrZXlzLgorICAgICAgICAgKG5ldy1sZW4gKGhhc2gt Zm9sZCAobGFtYmRhIChrZXkgdmFsIGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHZlY3Rvci1zZXQhIGtleXMgaSBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCsgaSAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAoaHQtcmVhbC10YWJsZSBo dCkpKSkKKyAgICAoaWYgKDwgbmV3LWxlbiBsZW4pCisgICAgICAgIChsZXQgKChuZXcta2V5cyAo bWFrZS12ZWN0b3IgbmV3LWxlbikpKQorICAgICAgICAgICh2ZWN0b3ItbW92ZS1sZWZ0ISBrZXlz IDAgbmV3LWxlbiBuZXcta2V5cyAwKQorICAgICAgICAgIG5ldy1rZXlzKQogICAgICAgICBrZXlz KSkpCiAKIChkZWZpbmUgKGhhc2gtdGFibGUtdmFsdWUtdmVjdG9yIGh0KQogICAiUmV0dXJucyBh IHZlY3RvciBvZiB0aGUgdmFsdWVzIGluIEhULiIKLSAgKGlmIChodC13ZWFrbmVzcyBodCkKLSAg ICAgIChsaXN0LT52ZWN0b3IgKGhhc2gtdGFibGUtdmFsdWVzIGh0KSkKLSAgICAgIChsZXQqICgo bGVuIChodC1zaXplIGh0KSkKLSAgICAgICAgICAgICAodmFscyAobWFrZS12ZWN0b3IgbGVuKSkp Ci0gICAgICAgIChoYXNoLWZvbGQgKGxhbWJkYSAoa2V5IHZhbCBpKQotICAgICAgICAgICAgICAg ICAgICAgKHZlY3Rvci1zZXQhIHZhbHMgaSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAoKyBp IDEpKQotICAgICAgICAgICAgICAgICAgIDAgKGh0LXJlYWwtdGFibGUgaHQpKQorICAobGV0KiAo KGxlbiAoaGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgICh2YWxzIChtYWtlLXZlY3RvciBs ZW4pKQorICAgICAgICAgOzsgSW4gYSB3ZWFrIGhhc2ggdGFibGUsIHNvbWUgdmFsdWVzIG1pZ2h0 IGdldCBnYXJnYWJlCisgICAgICAgICA7OyBjb2xsZWN0ZWQgd2hpbGUgdGhlIHByb2NlZHVyZSBp cyBydW5uaW5nLCBzbyB3ZSBkb3VibGUtY2hlY2sKKyAgICAgICAgIDs7IGlmIHdlIGNvbGxlY3Rl ZCB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGtleXMuCisgICAgICAgICAobmV3LWxlbiAoaGFzaC1m b2xkIChsYW1iZGEgKGtleSB2YWwgaSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dmVjdG9yLXNldCEgdmFscyBpIHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KyBpIDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIChodC1yZWFsLXRhYmxlIGh0 KSkpKQorICAgIChpZiAoPCBuZXctbGVuIGxlbikKKyAgICAgICAgKGxldCAoKG5ldy12YWxzICht YWtlLXZlY3RvciBuZXctbGVuKSkpCisgICAgICAgICAgKHZlY3Rvci1tb3ZlLWxlZnQhIHZhbHMg MCBuZXctbGVuIG5ldy12YWxzIDApCisgICAgICAgICAgbmV3LXZhbHMpCiAgICAgICAgIHZhbHMp KSkKIAogKGRlZmluZSAoaGFzaC10YWJsZS1lbnRyeS12ZWN0b3JzIGh0KQogICAiUmV0dXJucyB0 d28gdmFsdWVzOiBhIHZlY3RvciBvZiB0aGUga2V5cyBhbmQgYSB2ZWN0b3Igb2YgdGhlCiBhc3Nv Y2lhdGVkIHZhbHVlcyBpbiB0aGUgY29ycmVzcG9uZGluZyBvcmRlci4iCi0gIChpZiAoaHQtd2Vh a25lc3MgaHQpCi0gICAgICAocmVjZWl2ZSAoa2V5cyB2YWxzKSAoaGFzaC10YWJsZS1lbnRyaWVz IGh0KQotICAgICAgICAodmFsdWVzIChsaXN0LT52ZWN0b3Iga2V5cykgKGxpc3QtPnZlY3RvciB2 YWxzKSkpCi0gICAgICAobGV0KiAoKGxlbiAoaHQtc2l6ZSBodCkpCi0gICAgICAgICAgICAgKGtl eXMgKG1ha2UtdmVjdG9yIGxlbikpCi0gICAgICAgICAgICAgKHZhbHMgKG1ha2UtdmVjdG9yIGxl bikpKQotICAgICAgICAoaGFzaC1mb2xkIChsYW1iZGEgKGtleSB2YWwgaSkKLSAgICAgICAgICAg ICAgICAgICAgICh2ZWN0b3Itc2V0ISBrZXlzIGkga2V5KQotICAgICAgICAgICAgICAgICAgICAg KHZlY3Rvci1zZXQhIHZhbHMgaSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAoKyBpIDEpKQot ICAgICAgICAgICAgICAgICAgIDAgKGh0LXJlYWwtdGFibGUgaHQpKQorICAobGV0KiAoKGxlbiAo aGFzaC10YWJsZS1zaXplIGh0KSkKKyAgICAgICAgIChrZXlzIChtYWtlLXZlY3RvciBsZW4pKQor ICAgICAgICAgKHZhbHMgKG1ha2UtdmVjdG9yIGxlbikpCisgICAgICAgICA7OyBJbiBhIHdlYWsg aGFzaCB0YWJsZSwgc29tZSB2YWx1ZXMgbWlnaHQgZ2V0IGdhcmdhYmUKKyAgICAgICAgIDs7IGNv bGxlY3RlZCB3aGlsZSB0aGUgcHJvY2VkdXJlIGlzIHJ1bm5pbmcsIHNvIHdlIGRvdWJsZS1jaGVj aworICAgICAgICAgOzsgaWYgd2UgY29sbGVjdGVkIHRoZSBleHBlY3RlZCBudW1iZXIgb2Yga2V5 cy4KKyAgICAgICAgIChuZXctbGVuIChoYXNoLWZvbGQgKGxhbWJkYSAoa2V5IHZhbCBpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Itc2V0ISBrZXlzIGkga2V5KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZWN0b3Itc2V0ISB2YWxzIGkgdmFsKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIGkgMSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDAgKGh0LXJlYWwtdGFibGUgaHQpKSkpCisgICAgKGlmICg8IG5ldy1sZW4gbGVu KQorICAgICAgICAobGV0ICgobmV3LWtleXMgKG1ha2UtdmVjdG9yIG5ldy1sZW4pKQorICAgICAg ICAgICAgICAobmV3LXZhbHMgKG1ha2UtdmVjdG9yIG5ldy1sZW4pKSkKKyAgICAgICAgICAodmVj dG9yLW1vdmUtbGVmdCEga2V5cyAwIG5ldy1sZW4gbmV3LWtleXMgMCkKKyAgICAgICAgICAodmVj dG9yLW1vdmUtbGVmdCEgdmFscyAwIG5ldy1sZW4gbmV3LXZhbHMgMCkKKyAgICAgICAgICAodmFs dWVzIG5ldy1rZXlzIG5ldy12YWxzKSkKICAgICAgICAgKHZhbHVlcyBrZXlzIHZhbHMpKSkpCiAK IChkZWZpbmUgKGhhc2gtdGFibGUtZmluZCBwcm9jIGh0IGZhaWx1cmUpCkBAIC03NTksMTUgKzcw MiwxMiBAQCBhc3NvY2lhdGlvbiBpbiBoYXNoLXRhYmxlIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBh c3NvY2lhdGlvbi4gVGhlIGtleSBvZgogdGhlIGFzc29jaWF0aW9uIGFuZCB0aGUgcmVzdWx0IG9m IGludm9raW5nIFBST0MgYXJlIGVudGVyZWQgaW50byB0aGUgbmV3CiBoYXNoIHRhYmxlLCB3aGlj aCBpcyB0aGVuIHJldHVybmVkLiIKICAgKGxldCAoKHJlc3VsdCAoJW1ha2UtaGFzaC10YWJsZSBl cXVpdi1mdW5jdGlvbiBoYXNoLWZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbXV0YWJsZSBjYXBhY2l0eSB3ZWFrbmVzcykpCi0gICAgICAgIChzaXplIDApKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGFibGUgY2FwYWNpdHkgd2Vha25lc3Mp KSkKICAgICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSByZXN1bHQKICAgICAg IChoYXNoLWZvci1lYWNoCiAgICAgICAgKGxhbWJkYSAoa2V5IHZhbCkKLSAgICAgICAgIChoYXNo eC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSAocHJvYyB2YWwpKQotICAgICAgICAgKHNldCEgc2l6 ZSAoKyAxIHNpemUpKSkKKyAgICAgICAgIChoYXNoeC1zZXQhIGggYSByZWFsLXRhYmxlIGtleSAo cHJvYyB2YWwpKSkKICAgICAgICAoaHQtcmVhbC10YWJsZSBodCkpKQotICAgIChodC1zaXplISBy ZXN1bHQgc2l6ZSkKICAgICByZXN1bHQpKQogCiAoZGVmaW5lIChoYXNoLXRhYmxlLW1hcC0+bGlz dCBwcm9jIGh0KQpAQCAtODIyLDggKzc2Miw2IEBAIFBST0MgcmV0dXJucyB0cnVlLiBSZXR1cm5z IGFuIHVuc3BlY2lmaWVkIHZhbHVlLiIKICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10 YWJsZSkgaHQKICAgICAoaGFzaC1mb3ItZWFjaCAobGFtYmRhIChrZXkgdmFsKQogICAgICAgICAg ICAgICAgICAgICAgKHdoZW4gKHByb2Mga2V5IHZhbCkKLSAgICAgICAgICAgICAgICAgICAgICAg KHVubGVzcyAoaHQtd2Vha25lc3MgaHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGh0LXNp emUhIGh0ICgtIChodC1zaXplIGh0KSAxKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChoYXNo eC1yZW1vdmUhIGggYSByZWFsLXRhYmxlIGtleSkpKQogICAgICAgICAgICAgICAgICAgIHJlYWwt dGFibGUpKSkKIApAQCAtODM4LDE1ICs3NzYsMTMgQEAgcHJvcGVydGllcyBhcyBnaXZlbiBieSBr ZXl3b3JkIGFyZ3VtZW50cywgd2hpY2ggZGVmYXVsdCB0byBIVAogcHJvcGVydGllcy4gSWYgTVVU QUJMRSBpcyB0cnVlLCB0aGUgbmV3IGhhc2ggdGFibGUgaXMgbXV0YWJsZSwKIG90aGVyd2lzZSwg aXQgaXMgaW1tdXRhYmxlLiIKICAgKHdpdGgtaGFzaHgtdmFsdWVzIChoIGEgcmVhbC10YWJsZSkg aHQKLSAgICAobGV0ICgobmV3LXJlYWwtdGFibGUgKChndWlsZS1odC1jdG9yIHdlYWtuZXNzKSBj YXBhY2l0eSkpCi0gICAgICAgICAgKHNpemUgMCkpCisgICAgKGxldCAoKG5ldy1yZWFsLXRhYmxl ICgoZ3VpbGUtaHQtY3RvciB3ZWFrbmVzcykgY2FwYWNpdHkpKSkKICAgICAgIChoYXNoLWZvci1l YWNoIChsYW1iZGEgKGtleSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAgIChoYXNoeC1zZXQh IGggYSBuZXctcmVhbC10YWJsZSBrZXkgdmFsKQotICAgICAgICAgICAgICAgICAgICAgICAoc2V0 ISBzaXplICgrIDEgc2l6ZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAoaGFzaHgtc2V0ISBo IGEgbmV3LXJlYWwtdGFibGUga2V5IHZhbCkpCiAgICAgICAgICAgICAgICAgICAgICByZWFsLXRh YmxlKQogICAgICAgOzsgQXJndW1lbnRzOiByZWFsLXRhYmxlIGhhc2gtZnVuY3Rpb24gYXNzb2Np YXRvcgotICAgICAgOzsgICAgICAgICAgICB3ZWFrbmVzcyBtdXRhYmxlPyBzaXplIGVxdWl2YWxl bmNlLWZ1bmN0aW9uIG9yaWctaGFzaC1mdW5jdGlvbgotICAgICAgKG1ha2UtZ2VuZXJpYy1oYXNo LXRhYmxlIG5ldy1yZWFsLXRhYmxlIGggYSB3ZWFrbmVzcyAoYW5kIG11dGFibGUgI3QpIHNpemUK KyAgICAgIDs7ICAgICAgICAgICAgd2Vha25lc3MgbXV0YWJsZT8gZXF1aXZhbGVuY2UtZnVuY3Rp b24gb3JpZy1oYXNoLWZ1bmN0aW9uCisgICAgICAobWFrZS1nZW5lcmljLWhhc2gtdGFibGUgbmV3 LXJlYWwtdGFibGUgaCBhIHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1lcXVpdmFsZW5jZS1mdW5jdGlvbiBodCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaC10YWJsZS1oYXNoLWZ1bmN0aW9uIGh0 KSkpKSkKIApAQCAtODU4LDggKzc5NCw4IEBAIGFzIEhULCBidXQgd2l0aCBubyBhc3NvY2lhdGlv bnMuIgogICAod2l0aC1oYXNoeC12YWx1ZXMgKGggYSByZWFsLXRhYmxlKSBodAogICAgIChsZXQg KChuZXctcmVhbC10YWJsZSAoKGd1aWxlLWh0LWN0b3Igd2Vha25lc3MpIGNhcGFjaXR5KSkpCiAg ICAgICA7OyBBcmd1bWVudHM6IHJlYWwtdGFibGUgaGFzaC1mdW5jdGlvbiBhc3NvY2lhdG9yCi0g ICAgICA7OyAgICAgICAgICAgIHdlYWtuZXNzIG11dGFibGU/IHNpemUgZXF1aXZhbGVuY2UtZnVu Y3Rpb24gb3JpZy1oYXNoLWZ1bmN0aW9uCi0gICAgICAobWFrZS1nZW5lcmljLWhhc2gtdGFibGUg bmV3LXJlYWwtdGFibGUgaCBhIHdlYWtuZXNzIChhbmQgbXV0YWJsZSAjdCkgMAorICAgICAgOzsg ICAgICAgICAgICB3ZWFrbmVzcyBtdXRhYmxlPyBlcXVpdmFsZW5jZS1mdW5jdGlvbiBvcmlnLWhh c2gtZnVuY3Rpb24KKyAgICAgIChtYWtlLWdlbmVyaWMtaGFzaC10YWJsZSBuZXctcmVhbC10YWJs ZSBoIGEgd2Vha25lc3MgKGFuZCBtdXRhYmxlICN0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChoYXNoLXRhYmxlLWVxdWl2YWxlbmNlLWZ1bmN0aW9uIGh0KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLWhhc2gtZnVuY3Rpb24gaHQpKSkpKQogCi0t IAoyLjE5LjEKCg== --00000000000027132d057f5ecbea Content-Type: text/x-patch; charset="US-ASCII"; name="0007-Implemented-SRFI-128.patch" Content-Disposition: attachment; filename="0007-Implemented-SRFI-128.patch" Content-Transfer-Encoding: base64 Content-ID: <f_jqvhvnos1> X-Attachment-Id: f_jqvhvnos1 RnJvbSAwNTBiNzA1MGUzOGRlYzNiODMwMTM1NjA1MzU4MjUwNWY2Njc3YWZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXNzaWNhPTIwTWlsYXI9QzM9QTk/ PSA8amVzc3ltaWxhcmVAZ21haWwuY29tPgpEYXRlOiBGcmksIDExIEphbiAyMDE5IDE5OjQxOjIw IC0wMjAwClN1YmplY3Q6IFtQQVRDSCAwNy8xMF0gSW1wbGVtZW50ZWQgU1JGSS0xMjgKCi0tLQog bW9kdWxlL01ha2VmaWxlLmFtICAgICAgICAgICAgIHwgICAyICsKIG1vZHVsZS9zcmZpL3NyZmkt MTI4LnNjbSAgICAgICB8IDU3NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIG1v ZHVsZS9zcmZpL3NyZmktMTI4L2dudS5zY20gICB8ICAzOCArKysKIHRlc3Qtc3VpdGUvTWFrZWZp bGUuYW0gICAgICAgICB8ICAgMSArCiB0ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTI4LnRlc3QgfCAz NDggKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgOTY2IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBtb2R1bGUvc3JmaS9zcmZpLTEyOC5zY20KIGNyZWF0ZSBt b2RlIDEwMDY0NCBtb2R1bGUvc3JmaS9zcmZpLTEyOC9nbnUuc2NtCiBjcmVhdGUgbW9kZSAxMDA2 NDQgdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTEyOC50ZXN0CgpkaWZmIC0tZ2l0IGEvbW9kdWxlL01h a2VmaWxlLmFtIGIvbW9kdWxlL01ha2VmaWxlLmFtCmluZGV4IDZlNzM5ZmVkMC4uNWZjMzAxMGMx IDEwMDY0NAotLS0gYS9tb2R1bGUvTWFrZWZpbGUuYW0KKysrIGIvbW9kdWxlL01ha2VmaWxlLmFt CkBAIC0yOTUsNiArMjk1LDggQEAgU09VUkNFUyA9CQkJCQlcCiAgIHNyZmkvc3JmaS05OC5zY20J CQkJXAogICBzcmZpL3NyZmktMTExLnNjbQkJCQlcCiAgIHNyZmkvc3JmaS0xMjYuc2NtCQkJCVwK KyAgc3JmaS9zcmZpLTEyOC9nbnUuc2NtCQkJCVwKKyAgc3JmaS9zcmZpLTEyOC5zY20JCQkJXAog CQkJCQkJXAogICBzdGF0cHJvZi5zY20JCQkJCVwKIAkJCQkJCVwKZGlmZiAtLWdpdCBhL21vZHVs ZS9zcmZpL3NyZmktMTI4LnNjbSBiL21vZHVsZS9zcmZpL3NyZmktMTI4LnNjbQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmJkYWNmYjNjMAotLS0gL2Rldi9udWxsCisrKyBi L21vZHVsZS9zcmZpL3NyZmktMTI4LnNjbQpAQCAtMCwwICsxLDU3NyBAQAorOzs7IHNyZmktMTI4 LnNjbSAtLS0gQ29tcGFyYXRvcnMKKworOzsgICAgQ29weXJpZ2h0IChDKSAyMDE5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorOzsKKzs7IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKzs7IG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7IExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorOzsgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorOzsKKzs7IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7OyBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzsKKzs7IFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7 IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKKzs7IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKworOzsgVGhpcyBmaWxlIGNvbnRh aW5zIGNvZGUgZnJvbSBTUkZJIDEyOCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24sIGJ5Cis7OyBK b2huIENvd2FuCisKKzs7OyBDb3B5cmlnaHQgKEMpIEpvaG4gQ293YW4gKDIwMTUpLiBBbGwgUmln aHRzIFJlc2VydmVkLgorOzs7Cis7OzsgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KKzs7OyBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorOzs7IGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKzs7OyByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwKKzs7OyBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv b3IKKzs7OyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorOzs7IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nCis7OzsgY29uZGl0aW9uczoKKzs7OworOzs7IFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCis7Ozsg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCis7OzsKKzs7OyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKzs7OyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMKKzs7OyBPRiBNRVJDSEFOVEFCSUxJ VFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorOzs7IE5PTklORlJJTkdF TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCis7OzsgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFks Cis7OzsgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCis7OzsgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUgorOzs7IE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K KwwKKworKGRlZmluZS1tb2R1bGUgKHNyZmkgc3JmaS0xMjgpCisgICM6dXNlLW1vZHVsZSAoc3Jm aSBzcmZpLTkpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTQzKQorICA7OyBIQVNILUJPVU5E LCBIQVNILVNBTFQgYW5kIFdJVEgtSEFTSC1TQUxUIGFyZSBkZWZpbmVkIGhlcmUgYmVjYXVzZQor ICA7OyB0aGUgbGF0dGVyIGlzIG5vdCBzdGFuZGFyZAorICAjOnVzZS1tb2R1bGUgKChzcmZpIHNy ZmktMTI4IGdudSkgIzpzZWxlY3QgKGhhc2gtYm91bmQgaGFzaC1zYWx0KSkKKyAgIzp1c2UtbW9k dWxlICgocm5ycyB1bmljb2RlKSAjOnNlbGVjdCAoY2hhci1mb2xkY2FzZSkpCisgICM6dXNlLW1v ZHVsZSAocm5ycyBieXRldmVjdG9ycykKKyAgIzp1c2UtbW9kdWxlICgoaWNlLTkgZ2VuZXJpYy1o YXNoLXRhYmxlcykKKyAgICAgICAgICAgICAgICAjOnNlbGVjdCAoKGhhc2ggLiBlcXVhbC1oYXNo KQorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmctY2ktaGFzaCBoYXNoLWJ5LWlkZW50 aXR5IGhhc2gtYnktdmFsdWUpKQorICAjOmV4cG9ydCAoY29tcGFyYXRvcj8KKyAgICAgICAgICAg IG1ha2UtY29tcGFyYXRvcgorICAgICAgICAgICAgY29tcGFyYXRvci10eXBlLXRlc3QtcHJlZGlj YXRlIGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlCisgICAgICAgICAgICBjb21wYXJhdG9y LW9yZGVyaW5nLXByZWRpY2F0ZSBjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24KKyAgICAgICAgICAg IGNvbXBhcmF0b3Itb3JkZXJlZD8gY29tcGFyYXRvci1oYXNoYWJsZT8KKyAgICAgICAgICAgIGNv bXBhcmF0b3ItdGVzdC10eXBlIGNvbXBhcmF0b3ItY2hlY2stdHlwZQorICAgICAgICAgICAgY29t cGFyYXRvci1oYXNoCisgICAgICAgICAgICBtYWtlLXBhaXItY29tcGFyYXRvciBtYWtlLWxpc3Qt Y29tcGFyYXRvciBtYWtlLXZlY3Rvci1jb21wYXJhdG9yCisgICAgICAgICAgICBtYWtlLWVxLWNv bXBhcmF0b3IgbWFrZS1lcXYtY29tcGFyYXRvciBtYWtlLWVxdWFsLWNvbXBhcmF0b3IKKyAgICAg ICAgICAgIGJvb2xlYW4taGFzaCBjaGFyLWhhc2ggY2hhci1jaS1oYXNoIG51bWJlci1oYXNoCisg ICAgICAgICAgICBtYWtlLWRlZmF1bHQtY29tcGFyYXRvciBkZWZhdWx0LWhhc2gKKyAgICAgICAg ICAgIGNvbXBhcmF0b3ItcmVnaXN0ZXItZGVmYXVsdCEKKyAgICAgICAgICAgID0/IDw/ID4/IDw9 PyA+PT8KKyAgICAgICAgICAgIGNvbXBhcmF0b3ItaWY8PT4pCisgICM6cmUtZXhwb3J0IChzdHJp bmctaGFzaCBzdHJpbmctY2ktaGFzaCBzeW1ib2wtaGFzaCBoYXNoLWJvdW5kIGhhc2gtc2FsdCkp CisKKyhjb25kLWV4cGFuZC1wcm92aWRlIChjdXJyZW50LW1vZHVsZSkgJyhzcmZpLTEyOCkpCisK KwwKKzs7IEFyaXRobWV0aWMgaWYKKyhkZWZpbmUtc3ludGF4IGNvbXBhcmF0b3ItaWY8PT4KKyAg KHN5bnRheC1ydWxlcyAoKQorICAgICgoaWY8PT4gYSBiIGxlc3MgZXF1YWwgZ3JlYXRlcikKKyAg ICAgKGNvbXBhcmF0b3ItaWY8PT4gZGVmYXVsdC1jb21wYXJhdG9yIGEgYiBsZXNzIGVxdWFsIGdy ZWF0ZXIpKQorICAgICgoY29tcGFyYXRvci1pZjw9PiBjb21wYXJhdG9yIGEgYiBsZXNzIGVxdWFs IGdyZWF0ZXIpCisgICAgIChjb25kCisgICAgICAoKDw/IGNvbXBhcmF0b3IgYSBiKSBsZXNzKQor ICAgICAgKCg9PyBjb21wYXJhdG9yIGEgYikgZXF1YWwpCisgICAgICAoZWxzZSBncmVhdGVyKSkp KSkKKworDAorOzs7IERlZmluaXRpb24gb2YgY29tcGFyYXRvciByZWNvcmRzIHdpdGggYWNjZXNz b3JzIGFuZCBiYXNpYyBjb21wYXJhdG9yCisKKyhkZWZpbmUtcmVjb3JkLXR5cGUgY29tcGFyYXRv cgorICAobWFrZS1yYXctY29tcGFyYXRvciB0eXBlLXRlc3QgZXF1YWxpdHkgb3JkZXJpbmcgaGFz aCBvcmRlcmluZz8gaGFzaD8pCisgIGNvbXBhcmF0b3I/CisgICh0eXBlLXRlc3QgY29tcGFyYXRv ci10eXBlLXRlc3QtcHJlZGljYXRlKQorICAoZXF1YWxpdHkgY29tcGFyYXRvci1lcXVhbGl0eS1w cmVkaWNhdGUpCisgIChvcmRlcmluZyBjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSkKKyAg KGhhc2ggY29tcGFyYXRvci1oYXNoLWZ1bmN0aW9uKQorICAob3JkZXJpbmc/IGNvbXBhcmF0b3It b3JkZXJlZD8pCisgIChoYXNoPyBjb21wYXJhdG9yLWhhc2hhYmxlPykpCisKKyhkZWZpbmUgKGFs d2F5cy10cnVlIG9iaikgI3QpCisKKzs7IFB1YmxpYyBjb25zdHJ1Y3RvcgorKGRlZmluZSAobWFr ZS1jb21wYXJhdG9yIHR5cGUtdGVzdCBlcXVhbGl0eSBvcmRlcmluZyBoYXNoKQorICAobWFrZS1y YXctY29tcGFyYXRvcgorICAgKGlmIChlcT8gdHlwZS10ZXN0ICN0KSBhbHdheXMtdHJ1ZSB0eXBl LXRlc3QpCisgICAoaWYgKGVxPyBlcXVhbGl0eSAjdCkgKGxhbWJkYSAoeCB5KSAoZXF2PyAob3Jk ZXJpbmcgeCB5KSAwKSkgZXF1YWxpdHkpCisgICAoaWYgb3JkZXJpbmcgb3JkZXJpbmcgKGxhbWJk YSAoeCB5KSAoZXJyb3IgIm9yZGVyaW5nIG5vdCBzdXBwb3J0ZWQiKSkpCisgICAoaWYgaGFzaCBo YXNoIChsYW1iZGEgKHggeSkgKGVycm9yICJoYXNoaW5nIG5vdCBzdXBwb3J0ZWQiKSkpCisgICAo aWYgb3JkZXJpbmcgI3QgI2YpCisgICAoaWYgaGFzaCAjdCAjZikpKQorCisMCis7OzsgSW52b2tl cnMKKworOzsgSW52b2tlIHRoZSB0ZXN0IHR5cGUKKyhkZWZpbmUgKGNvbXBhcmF0b3ItdGVzdC10 eXBlIGNvbXBhcmF0b3Igb2JqKQorICAoKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0ZSBj b21wYXJhdG9yKSBvYmopKQorCis7OyBJbnZva2UgdGhlIHRlc3QgdHlwZSBhbmQgdGhyb3cgYW4g ZXJyb3IgaWYgaXQgZmFpbHMKKyhkZWZpbmUgKGNvbXBhcmF0b3ItY2hlY2stdHlwZSBjb21wYXJh dG9yIG9iaikKKyAgKGlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBjb21wYXJhdG9yIG9iaikKKyAg ICAgICN0CisgICAgICAoZXJyb3IgIkNvbXBhcmF0b3IgdHlwZSBjaGVjayBmYWlsZWQiIGNvbXBh cmF0b3Igb2JqKSkpCisKKzs7IEludm9rZSB0aGUgaGFzaCBmdW5jdGlvbgorKGRlZmluZSAoY29t cGFyYXRvci1oYXNoIGNvbXBhcmF0b3Igb2JqKQorICAoKGNvbXBhcmF0b3ItaGFzaC1mdW5jdGlv biBjb21wYXJhdG9yKSBvYmopKQorCisMCis7OzsgQ29tcGFyaXNvbiBwcmVkaWNhdGVzCisKKzs7 IEJpbmFyeSB2ZXJzaW9ucyBmb3IgaW50ZXJuYWwgdXNlCisKKyhkZWZpbmUgKGJpbmFyeT0/IGNv bXBhcmF0b3IgYSBiKQorICAoKGNvbXBhcmF0b3ItZXF1YWxpdHktcHJlZGljYXRlIGNvbXBhcmF0 b3IpIGEgYikpCisKKyhkZWZpbmUgKGJpbmFyeTw/IGNvbXBhcmF0b3IgYSBiKQorICAoKGNvbXBh cmF0b3Itb3JkZXJpbmctcHJlZGljYXRlIGNvbXBhcmF0b3IpIGEgYikpCisKKyhkZWZpbmUgKGJp bmFyeT4/IGNvbXBhcmF0b3IgYSBiKQorICAoYmluYXJ5PD8gY29tcGFyYXRvciBiIGEpKQorCiso ZGVmaW5lIChiaW5hcnk8PT8gY29tcGFyYXRvciBhIGIpCisgIChub3QgKGJpbmFyeT4/IGNvbXBh cmF0b3IgYSBiKSkpCisKKyhkZWZpbmUgKGJpbmFyeT49PyBjb21wYXJhdG9yIGEgYikKKyAgKG5v dCAoYmluYXJ5PD8gY29tcGFyYXRvciBhIGIpKSkKKworOzsgR2VuZXJhbCB2ZXJzaW9ucyBmb3Ig ZXhwb3J0CisKKyhkZWZpbmUgKD0/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBsb29w ICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk9PyBjb21wYXJhdG9y IGEgYikKKwkgKGlmIChudWxsPyBvYmpzKSAjdCAobG9vcCBiIChjYXIgb2JqcykgKGNkciBvYmpz KSkpKSkpCisKKyhkZWZpbmUgKDw/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBsb29w ICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk8PyBjb21wYXJhdG9y IGEgYikKKwkgKGlmIChudWxsPyBvYmpzKSAjdCAobG9vcCBiIChjYXIgb2JqcykgKGNkciBvYmpz KSkpKSkpCisKKyhkZWZpbmUgKD4/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBsb29w ICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk+PyBjb21wYXJhdG9y IGEgYikKKwkgKGlmIChudWxsPyBvYmpzKSAjdCAobG9vcCBiIChjYXIgb2JqcykgKGNkciBvYmpz KSkpKSkpCisKKyhkZWZpbmUgKDw9PyBjb21wYXJhdG9yIGEgYiAuIG9ianMpCisgIChsZXQgbG9v cCAoKGEgYSkgKGIgYikgKG9ianMgb2JqcykpCisgICAgKGFuZCAoYmluYXJ5PD0/IGNvbXBhcmF0 b3IgYSBiKQorCSAoaWYgKG51bGw/IG9ianMpICN0IChsb29wIGIgKGNhciBvYmpzKSAoY2RyIG9i anMpKSkpKSkKKworKGRlZmluZSAoPj0/IGNvbXBhcmF0b3IgYSBiIC4gb2JqcykKKyAgKGxldCBs b29wICgoYSBhKSAoYiBiKSAob2JqcyBvYmpzKSkKKyAgICAoYW5kIChiaW5hcnk+PT8gY29tcGFy YXRvciBhIGIpCisJIChpZiAobnVsbD8gb2JqcykgI3QgKGxvb3AgYiAoY2FyIG9ianMpIChjZHIg b2JqcykpKSkpKQorCisMCis7OzsgU2ltcGxlIG9yZGVyaW5nIGFuZCBoYXNoIGZ1bmN0aW9ucwor CisoZGVmaW5lIGJvb2xlYW4taGFzaCBoYXNoLWJ5LWlkZW50aXR5KQorKGRlZmluZSBjaGFyLWhh c2ggICAgaGFzaC1ieS1pZGVudGl0eSkKKyhkZWZpbmUgbnVtYmVyLWhhc2ggIGhhc2gtYnktdmFs dWUpCisKKyhkZWZpbmUqIChjaGFyLWNpLWhhc2ggYyAjOm9wdGlvbmFsIChzaXplIG1vc3QtcG9z aXRpdmUtZml4bnVtKSkKKyAgKGhhc2hxIChjaGFyLWZvbGRjYXNlIGMpIHNpemUpKQorCis7OyBM ZXhpY29ncmFwaGljIG9yZGVyaW5nIG9mIGNvbXBsZXggbnVtYmVycworKGRlZmluZSAoY29tcGxl eDw/IGEgYikKKyAgKG9yICg8IChyZWFsLXBhcnQgYSkgKHJlYWwtcGFydCBiKSkKKyAgICAgIChh bmQgKD0gKHJlYWwtcGFydCBhKSAocmVhbC1wYXJ0IGIpKQorICAgICAgICAgICAoPCAoaW1hZy1w YXJ0IGEpIChpbWFnLXBhcnQgYikpKSkpCisKKyhkZWZpbmUgKHN5bWJvbDw/IGEgYikKKyAgOzsg VmFsaWQgYWNjb3JkaW5nIHRvIHNwZWMuCisgIDs7IEl0J3MgZmFzdGVyIHRvIGhhc2ggdGhhbiB0 byBjb21wYXJlIHN0cmluZ3MuCisgIChsZXQgKChoYSAoaGFzaHEgYSAoaGFzaC1ib3VuZCkpKQor ICAgICAgICAoaGIgKGhhc2hxIGIgKGhhc2gtYm91bmQpKSkpCisgICAgKG9yICg8IGhhIGhiKQor ICAgICAgICAoYW5kICg9IGhhIGhiKQorICAgICAgICAgICAgIChub3QgKGVxPyBhIGIpKQorICAg ICAgICAgICAgIChzdHJpbmc8PyAoc3ltYm9sLT5zdHJpbmcgYSkgKHN5bWJvbC0+c3RyaW5nIGIp KSkpKSkKKworOzsgU3RpY2sgdG8gZml4bnVtcworKGRlZmluZSBsb3dlci1tYXNrIChhc2ggKGhh c2gtYm91bmQpIC01KSkgOyAoLyAoaGFzaC1ib3VuZCkgMzIpCisKKzs7IEhhc2ggaGVscGVyCiso ZGVmaW5lIChtaXggaDEgaDIpCisgIChsb2d4b3IgKCogKGxvZ2FuZCBoMSBsb3dlci1tYXNrKSAz MSkgaDIpKQorCisKKwwKKzs7OyBQYWlyIGNvbXBhcmF0b3IKKyhkZWZpbmUgKG1ha2UtcGFpci1j b21wYXJhdG9yIGNhci1jb21wYXJhdG9yIGNkci1jb21wYXJhdG9yKQorICAobWFrZS1jb21wYXJh dG9yCisgICAobWFrZS1wYWlyLXR5cGUtdGVzdCBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRv cikKKyAgIChtYWtlLXBhaXI9PyBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgICht YWtlLXBhaXI8PyBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgIChtYWtlLXBhaXIt aGFzaCBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikpKQorCisoZGVmaW5lIChtYWtlLXBh aXItdHlwZS10ZXN0IGNhci1jb21wYXJhdG9yIGNkci1jb21wYXJhdG9yKQorICAobGV0ICgoY2Fy LXRlc3QgKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0ZSBjYXItY29tcGFyYXRvcikpCisg ICAgICAgIChjZHItdGVzdCAoY29tcGFyYXRvci10eXBlLXRlc3QtcHJlZGljYXRlIGNkci1jb21w YXJhdG9yKSkpCisgICAgKGlmIChlcT8gYWx3YXlzLXRydWUgY2FyLXRlc3QgY2RyLXRlc3QpCisg ICAgICAgIHBhaXI/CisgICAgICAgIChsYW1iZGEgKG9iaikKKyAgICAgICAgICAoYW5kIChwYWly PyBvYmopCisgICAgICAgICAgICAgICAoY2FyLXRlc3QgKGNhciBvYmopKQorICAgICAgICAgICAg ICAgKGNkci10ZXN0IChjZHIgb2JqKSkpKSkpKQorCisoZGVmaW5lIChtYWtlLXBhaXI9PyBjYXIt Y29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgKGxldCAoKGNhci1lcXVpdiAoY29tcGFyYXRv ci1lcXVhbGl0eS1wcmVkaWNhdGUgY2FyLWNvbXBhcmF0b3IpKQorICAgICAgICAoY2RyLWVxdWl2 IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBjZHItY29tcGFyYXRvcikpKQorICAgIChp ZiAoZXE/IGVxdWFsPyBjYXItZXF1aXYgY2RyLWVxdWl2KQorICAgICAgICBlcXVhbD8KKyAgICAg ICAgKGxhbWJkYSAoYSBiKQorICAgICAgICAgIChhbmQgKGNhci1lcXVpdiAoY2FyIGEpIChjYXIg YikpCisgICAgICAgICAgICAgICAoY2RyLWVxdWl2IChjZHIgYSkgKGNkciBiKSkpKSkpKQorCiso ZGVmaW5lIChtYWtlLXBhaXI8PyBjYXItY29tcGFyYXRvciBjZHItY29tcGFyYXRvcikKKyAgKGxl dCAoKGNhci1lcXVpdiAoY29tcGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgY2FyLWNvbXBhcmF0 b3IpKQorICAgICAgICAoY2FyPD8gKGNvbXBhcmF0b3Itb3JkZXJpbmctcHJlZGljYXRlIGNhci1j b21wYXJhdG9yKSkKKyAgICAgICAgKGNkcjw/IChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0 ZSBjZHItY29tcGFyYXRvcikpKQorICAgIChsYW1iZGEgKGEgYikKKyAgICAgIChvciAoY2FyPD8g KGNhciBhKSAoY2FyIGIpKQorICAgICAgICAgIChhbmQgKGNhci1lcXVpdiAoY2FyIGEpIChjYXIg YikpCisgICAgICAgICAgICAgICAoY2RyPD8gKGNkciBhKSAoY2RyIGIpKSkpKSkpCisKKyhkZWZp bmUgcGFpci1oYXNoLXNhbHQgKG1peCAoc3ltYm9sLWhhc2ggJ3BhaXIpIChoYXNoLXNhbHQpKSkK KworKGRlZmluZSAobWFrZS1wYWlyLWhhc2ggY2FyLWNvbXBhcmF0b3IgY2RyLWNvbXBhcmF0b3Ip CisgIChsZXQgKChjYXItaGFzaCAoY29tcGFyYXRvci1oYXNoLWZ1bmN0aW9uIGNhci1jb21wYXJh dG9yKSkKKyAgICAgICAgKGNkci1oYXNoIChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY2RyLWNv bXBhcmF0b3IpKSkKKyAgICAoaWYgKGVxPyBlcXVhbC1oYXNoIGNhci1oYXNoIGNkci1oYXNoKQor ICAgICAgICBlcXVhbC1oYXNoCisgICAgICAgIChsYW1iZGEgKG9iaikKKyAgICAgICAgICAobWl4 IChtaXggcGFpci1oYXNoLXNhbHQgKGNhci1oYXNoIChjYXIgb2JqKSkpCisgICAgICAgICAgICAg ICAoY2RyLWhhc2ggKGNkciBvYmopKSkpKSkpCisKKwwKKzs7OyBMaXN0IGNvbXBhcmF0b3IKKwor KGRlZmluZSAobWFrZS1saXN0LWNvbXBhcmF0b3IgZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVz dCBlbXB0eT8gaGVhZCB0YWlsKQorICAobWFrZS1jb21wYXJhdG9yCisgICAobWFrZS1saXN0LXR5 cGUtdGVzdCBlbGVtZW50LWNvbXBhcmF0b3IgdHlwZS10ZXN0IGVtcHR5PyBoZWFkIHRhaWwpCisg ICAobWFrZS1saXN0PT8gZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBlbXB0eT8gaGVhZCB0 YWlsKQorICAgKG1ha2UtbGlzdDw/IGVsZW1lbnQtY29tcGFyYXRvciB0eXBlLXRlc3QgZW1wdHk/ IGhlYWQgdGFpbCkKKyAgIChtYWtlLWxpc3QtaGFzaCBlbGVtZW50LWNvbXBhcmF0b3IgdHlwZS10 ZXN0IGVtcHR5PyBoZWFkIHRhaWwpKSkKKworKGRlZmluZSAobWFrZS1saXN0LXR5cGUtdGVzdCBl bGVtZW50LWNvbXBhcmF0b3IgdHlwZS10ZXN0IGVtcHR5PyBoZWFkIHRhaWwpCisgIChsZXQgKChl bGVtLXR5cGUtdGVzdCAoY29tcGFyYXRvci10eXBlLXRlc3QtcHJlZGljYXRlIGVsZW1lbnQtY29t cGFyYXRvcikpKQorICAgIChsYW1iZGEgKG9iaikKKyAgICAgIChhbmQKKyAgICAgICAodHlwZS10 ZXN0IG9iaikKKyAgICAgICAobGV0IGxvb3AgKChvYmogb2JqKSkKKyAgICAgICAgIChjb25kCisg ICAgICAgICAgKChlbXB0eT8gb2JqKSAjdCkKKyAgICAgICAgICAoKG5vdCAoZWxlbS10eXBlLXRl c3QgKGhlYWQgb2JqKSkpICNmKQorICAgICAgICAgIChlbHNlIChsb29wICh0YWlsIG9iaikpKSkp KSkpKQorCisoZGVmaW5lIChtYWtlLWxpc3Q9PyBlbGVtZW50LWNvbXBhcmF0b3IgdHlwZS10ZXN0 IGVtcHR5PyBoZWFkIHRhaWwpCisgIChsZXQgKChlbGVtPT8gKGNvbXBhcmF0b3ItZXF1YWxpdHkt cHJlZGljYXRlIGVsZW1lbnQtY29tcGFyYXRvcikpKQorICAgIChsYW1iZGEgKGEgYikKKyAgICAg IChsZXQgbG9vcCAoKGEgYSkgKGIgYikpCisgICAgICAgIChjb25kCisgICAgICAgICAoKGVtcHR5 PyBhKSAoZW1wdHk/IGIpKQorICAgICAgICAgKChlbXB0eT8gYikgI2YpCisgICAgICAgICAoKGVs ZW09PyAoaGVhZCBhKSAoaGVhZCBiKSkgKGxvb3AgKHRhaWwgYSkgKHRhaWwgYikpKQorICAgICAg ICAgKGVsc2UgI2YpKSkpKSkKKworKGRlZmluZSAobWFrZS1saXN0PD8gZWxlbWVudC1jb21wYXJh dG9yIHR5cGUtdGVzdCBlbXB0eT8gaGVhZCB0YWlsKQorICAobGV0ICgoZWxlbT0/IChjb21wYXJh dG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBlbGVtZW50LWNvbXBhcmF0b3IpKQorICAgICAgICAoZWxl bTw/IChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSBlbGVtZW50LWNvbXBhcmF0b3IpKSkK KyAgICAobGFtYmRhIChhIGIpCisgICAgICAobGV0IGxvb3AgKChhIGEpIChiIGIpKQorICAgICAg ICAoY29uZAorICAgICAgICAgKChlbXB0eT8gYSkgKG5vdCAoZW1wdHk/IGIpKSkKKyAgICAgICAg ICgoZW1wdHk/IGIpICNmKQorICAgICAgICAgKChlbGVtPD8gKGhlYWQgYSkgKGhlYWQgYikpICN0 KQorICAgICAgICAgKChlbGVtPT8gKGhlYWQgYSkgKGhlYWQgYikpIChsb29wICh0YWlsIGEpICh0 YWlsIGIpKSkKKyAgICAgICAgIChlbHNlICNmKSkpKSkpCisKKyhkZWZpbmUgbGlzdC1oYXNoLXNh bHQgKG1peCAoc3ltYm9sLWhhc2ggJ2xpc3QpIChoYXNoLXNhbHQpKSkKKworKGRlZmluZSAobWFr ZS1saXN0LWhhc2ggZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBlbXB0eT8gaGVhZCB0YWls KQorICAobGV0ICgoZWxlbS1oYXNoIChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gZWxlbWVudC1j b21wYXJhdG9yKSkpCisgICAgKGxhbWJkYSAob2JqKQorICAgICAgKGxldCBsb29wICgob2JqIG9i aikKKyAgICAgICAgICAgICAgICAgKHJlc3VsdCBsaXN0LWhhc2gtc2FsdCkpCisgICAgICAgIChj b25kCisgICAgICAgICAoKGVtcHR5PyBvYmopIHJlc3VsdCkKKyAgICAgICAgIChlbHNlIChsb29w ICh0YWlsIG9iaikgKG1peCByZXN1bHQgKGVsZW0taGFzaCAoaGVhZCBvYmopKSkpKSkpKSkpCisK KwwKKzs7OyBWZWN0b3IgY29tcGFyYXRvcgorCisoZGVmaW5lIChtYWtlLXZlY3Rvci1jb21wYXJh dG9yIGVsZW1lbnQtY29tcGFyYXRvciB0eXBlLXRlc3QgbGVuZ3RoIHJlZikKKyAgKG1ha2UtY29t cGFyYXRvcgorICAgKG1ha2UtdmVjdG9yLXR5cGUtdGVzdCBlbGVtZW50LWNvbXBhcmF0b3IgdHlw ZS10ZXN0IGxlbmd0aCByZWYpCisgICAobWFrZS12ZWN0b3I9PyBlbGVtZW50LWNvbXBhcmF0b3Ig dHlwZS10ZXN0IGxlbmd0aCByZWYpCisgICAobWFrZS12ZWN0b3I8PyBlbGVtZW50LWNvbXBhcmF0 b3IgdHlwZS10ZXN0IGxlbmd0aCByZWYpCisgICAobWFrZS12ZWN0b3ItaGFzaCBlbGVtZW50LWNv bXBhcmF0b3IgdHlwZS10ZXN0IGxlbmd0aCByZWYpKSkKKworKGRlZmluZSAobWFrZS12ZWN0b3It dHlwZS10ZXN0IGVsZW1lbnQtY29tcGFyYXRvciB0eXBlLXRlc3QgbGVuZ3RoIHJlZikKKyAgKGxl dCAoKGVsZW0tdHlwZS10ZXN0IChjb21wYXJhdG9yLXR5cGUtdGVzdC1wcmVkaWNhdGUgZWxlbWVu dC1jb21wYXJhdG9yKSkpCisgICAgKGxhbWJkYSAob2JqKQorICAgICAgKGFuZAorICAgICAgICh0 eXBlLXRlc3Qgb2JqKQorICAgICAgIChsZXQgKChsZW4gKGxlbmd0aCBvYmopKSkKKyAgICAgICAg IChsZXQgbG9vcCAoKG4gMCkpCisgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAoKD0gbiBs ZW4pICN0KQorICAgICAgICAgICAgKChub3QgKGVsZW0tdHlwZS10ZXN0IChyZWYgb2JqIG4pKSkg I2YpCisgICAgICAgICAgICAoZWxzZSAobG9vcCAoKyBuIDEpKSkpKSkpKSkpCisKKyhkZWZpbmUg KG1ha2UtdmVjdG9yPT8gZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBsZW5ndGggcmVmKQor ICAobGV0ICgoZWxlbT0/IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBlbGVtZW50LWNv bXBhcmF0b3IpKSkKKyAgICAobGFtYmRhIChhIGIpCisgICAgICAobGV0ICgobGVuIChsZW5ndGgg YikpKQorICAgICAgICAoYW5kCisgICAgICAgICAoPSAobGVuZ3RoIGEpIGxlbikKKyAgICAgICAg IChsZXQgbG9vcCAoKG4gMCkpCisgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAoKD0gbiBs ZW4pICN0KQorICAgICAgICAgICAgKChlbGVtPT8gKHJlZiBhIG4pIChyZWYgYiBuKSkgKGxvb3Ag KCsgbiAxKSkpCisgICAgICAgICAgICAoZWxzZSAjZikpKSkpKSkpCisKKyhkZWZpbmUgKG1ha2Ut dmVjdG9yPD8gZWxlbWVudC1jb21wYXJhdG9yIHR5cGUtdGVzdCBsZW5ndGggcmVmKQorICAobGV0 ICgoZWxlbT0/IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBlbGVtZW50LWNvbXBhcmF0 b3IpKQorICAgICAgICAoZWxlbTw/IChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSBlbGVt ZW50LWNvbXBhcmF0b3IpKSkKKyAgICAobGFtYmRhIChhIGIpCisgICAgICAobGV0ICgobGVuYSAo bGVuZ3RoIGEpKQorICAgICAgICAgICAgKGxlbmIgKGxlbmd0aCBiKSkpCisgICAgICAgIChjb25k CisgICAgICAgICAoKDwgbGVuYSBsZW5iKSAjdCkKKyAgICAgICAgICgoPiBsZW5hIGxlbmIpICNm KQorICAgICAgICAgKGVsc2UKKyAgICAgICAgICAobGV0IGxvb3AgKChuIDApKQorICAgICAgICAg ICAgKGNvbmQKKyAgICAgICAgICAgICAoKD0gbiBsZW5hKSAjZikKKyAgICAgICAgICAgICAoKGVs ZW08PyAocmVmIGEgbikgKHJlZiBiIG4pKSAjdCkKKyAgICAgICAgICAgICAoKGVsZW09PyAocmVm IGEgbikgKHJlZiBiIG4pKSAobG9vcCAoKyBuIDEpKSkKKyAgICAgICAgICAgICAoZWxzZSAjZikp KSkpKSkpKQorCisoZGVmaW5lIHZlY3Rvci1oYXNoLXNhbHQgKG1peCAoc3ltYm9sLWhhc2ggJ3Zl Y3RvcikgKGhhc2gtc2FsdCkpKQorCisoZGVmaW5lIChtYWtlLXZlY3Rvci1oYXNoIGVsZW1lbnQt Y29tcGFyYXRvciB0eXBlLXRlc3QgbGVuZ3RoIHJlZikKKyAgKGxldCAoKGVsZW0taGFzaCAoY29t cGFyYXRvci1oYXNoLWZ1bmN0aW9uIGVsZW1lbnQtY29tcGFyYXRvcikpKQorICAgIChsYW1iZGEg KG9iaikKKyAgICAgIChsZXQgKChsZW4gKGxlbmd0aCBvYmopKSkKKyAgICAgICAgKGxldCBsb29w ICgobiAwKSAocmVzdWx0IHZlY3Rvci1oYXNoLXNhbHQpKQorICAgICAgICAgIChjb25kCisgICAg ICAgICAgICgoPSBuIGxlbikgcmVzdWx0KQorICAgICAgICAgICAoZWxzZSAobG9vcCAoKyBuIDEp IChtaXggcmVzdWx0IChlbGVtLWhhc2ggKHJlZiBvYmogbikpKSkpKSkpKSkpCisKKwwKKzs7OyBU aGUgZGVmYXVsdCBjb21wYXJhdG9yCisKKzs7OyBTdGFuZGFyZCBjb21wYXJhdG9ycyBhbmQgdGhl aXIgZnVuY3Rpb25zCisKKzs7IFRoZSB1bmtub3duLW9iamVjdCBjb21wYXJhdG9yLCB1c2VkIGFz IGEgZmFsbGJhY2sgdG8gZXZlcnl0aGluZyBlbHNlCis7OyBFdmVyeXRoaW5nIGNvbXBhcmVzIGV4 YWN0bHkgdGhlIHNhbWUgYW5kIGhhc2hlcyB0byAwCisoZGVmaW5lIHVua25vd24tb2JqZWN0LWNv bXBhcmF0b3IKKyAgKG1ha2UtY29tcGFyYXRvcgorICAgYWx3YXlzLXRydWUKKyAgIChsYW1iZGEg KGEgYikgI3QpCisgICAobGFtYmRhIChhIGIpICNmKQorICAgKGxhbWJkYSAob2JqKSAwKSkpCisK Kzs7IE5leHQgaW5kZXggZm9yIGFkZGVkIGNvbXBhcmF0b3IKKworKGRlZmluZSAqbmV4dC1jb21w YXJhdG9yLWluZGV4KiAwKQorKGRlZmluZSAqcmVnaXN0ZXJlZC1jb21wYXJhdG9ycyogKG1ha2Ut dmVjdG9yIDggdW5rbm93bi1vYmplY3QtY29tcGFyYXRvcikpCisKKzs7IFJlZ2lzdGVyIGEgbmV3 IGNvbXBhcmF0b3IgZm9yIHVzZSBieSB0aGUgZGVmYXVsdCBjb21wYXJhdG9yLgorKGRlZmluZSAo Y29tcGFyYXRvci1yZWdpc3Rlci1kZWZhdWx0ISBjb21wYXJhdG9yKQorICAobGV0ICgobGVuICh2 ZWN0b3ItbGVuZ3RoICpyZWdpc3RlcmVkLWNvbXBhcmF0b3JzKikpKQorICAgIChpZiAoPSAqbmV4 dC1jb21wYXJhdG9yLWluZGV4KiAoLSBsZW4gMSkpCisgICAgICAgIChzZXQhICpyZWdpc3RlcmVk LWNvbXBhcmF0b3JzKgorICAgICAgICAgICh2ZWN0b3ItY29weSAqcmVnaXN0ZXJlZC1jb21wYXJh dG9ycyogMCAoKiAyIGxlbikgdW5rbm93bi1vYmplY3QtY29tcGFyYXRvcikpKSkKKyAgKHZlY3Rv ci1zZXQhICpyZWdpc3RlcmVkLWNvbXBhcmF0b3JzKiAqbmV4dC1jb21wYXJhdG9yLWluZGV4KiBj b21wYXJhdG9yKQorICAoc2V0ISAqbmV4dC1jb21wYXJhdG9yLWluZGV4KiAoKyAxICpuZXh0LWNv bXBhcmF0b3ItaW5kZXgqKSkpCisKKzs7IFJldHVybiBvcmRpbmFsIGZvciBvYmplY3QgdHlwZXM6 IG51bGwgc29ydHMgYmVmb3JlIGJvb2xlYW5zLCB3aGljaCBzb3J0Cis7OyBiZWZvcmUgbnVtYmVy cywgZXRjLiAgSW1wbGVtZW50YXRpb25zIGNhbiBleHRlbmQgdGhpcy4KKzs7IFBlb3BsZSB3aG8g Y2FsbCBjb21wYXJhdG9yLXJlZ2lzdGVyLWRlZmF1bHQhIGVmZmVjdGl2ZWx5IGRvIGV4dGVuZCBp dC4KKyhkZWZpbmUgKGludGVybmFsLW9iamVjdC10eXBlIG9iaikKKyAgKGNvbmQKKyAgICgobnVs bD8gb2JqKSAwKQorICAgKChib29sZWFuPyBvYmopIDEpCisgICAoKG51bWJlcj8gb2JqKSAyKQor ICAgKChjaGFyPyBvYmopIDMpCisgICAoKHN0cmluZz8gb2JqKSA0KQorICAgKChzeW1ib2w/IG9i aikgNSkKKyAgICgoYnl0ZXZlY3Rvcj8gb2JqKSA2KQorICAgKCh2ZWN0b3I/IG9iaikgNykKKyAg ICgocGFpcj8gb2JqKSA4KQorICAgKCh1bnNwZWNpZmllZD8gb2JqKSA5KQorICAgKChlb2Ytb2Jq ZWN0PyBvYmopIDEwKQorICAgOzsgQWRkIG1vcmUgaGVyZSBpZiB5b3Ugd2FudAorICAgKGVsc2Ug I2YpKSkKKworKGRlZmluZSAoZXh0ZXJuYWwtb2JqZWN0LXR5cGUgb2JqKQorICAocmVnaXN0ZXJl ZC1pbmRleCBvYmopKQorCis7OyBSZXR1cm4gdGhlIGluZGV4IGZvciB0aGUgcmVnaXN0ZXJlZCB0 eXBlIG9mIG9iai4KKyhkZWZpbmUgKHJlZ2lzdGVyZWQtaW5kZXggb2JqKQorICAodmVjdG9yLWlu ZGV4IChsYW1iZGEgKGNvbXBhcmF0b3IpCisgICAgICAgICAgICAgICAgICAoY29tcGFyYXRvci10 ZXN0LXR5cGUgY29tcGFyYXRvciBvYmopKQorICAgICAgICAgICAgICAgICpyZWdpc3RlcmVkLWNv bXBhcmF0b3JzKikpCisKKyhkZWZpbmUgKGV4dGVybmFsLW9iamVjdC1jb21wYXJhdG9yIG9iaikK KyAgKHZlY3Rvci1hbnkgKGxhbWJkYSAoY29tcGFyYXRvcikKKyAgICAgICAgICAgICAgICAoYW5k IChjb21wYXJhdG9yLXRlc3QtdHlwZSBjb21wYXJhdG9yIG9iaikKKyAgICAgICAgICAgICAgICAg ICAgIGNvbXBhcmF0b3IpKQorICAgICAgICAgICAgICAqcmVnaXN0ZXJlZC1jb21wYXJhdG9ycyop KQorCis7OyBHaXZlbiBhbiBpbmRleCwgcmV0cmlldmUgYSByZWdpc3RlcmVkIGNvbmR1Y3Rvci4K KyhkZWZpbmUgKHJlZ2lzdGVyZWQtY29tcGFyYXRvciBpKQorICAodmVjdG9yLXJlZiAqcmVnaXN0 ZXJlZC1jb21wYXJhdG9ycyogaSkpCisKKyhkZWZpbmUgKGludGVybmFsLWRpc3BhdGNoLWVxdWFs aXR5IHR5cGUgYSBiKQorICA7OyBFUVVBTD8gYWxyZWFkeSByZXR1cm5zICN0IGZvciBtYW55IGlu dGVybmFsIHR5cGVzCisgIChjYXNlIHR5cGUKKyAgICA7OyAoKDApICN0KSA7IEFsbCBlbXB0eSBs aXN0cyBhcmUgZXF1YWwKKyAgICA7OyAoKDEpIChpZiBhIChhbmQgYiAjdCkgKG5vdCBiKSkpCisg ICAgOzsgKCgyKSAoPSBhIGIpKQorICAgIDs7ICgoMykgKGNoYXI9PyBhIGIpKQorICAgIDs7ICgo NCkgKHN0cmluZz0/IGEgYikpCisgICAgOzsgKCg1KSAoZXE/IGEgYikpCisgICAgOzsgKCg2KSAo ZGVmYXVsdC1ieXRldmVjdG9yPT8gYSBiKSkKKyAgICAoKDcpIChkZWZhdWx0LXZlY3Rvcj0/IGEg YikpCisgICAgKCg4KSAoZGVmYXVsdC1wYWlyPT8gYSBiKSkKKyAgICA7OyAoKDkgMTApICN0KQor ICAgIDs7IEFkZCBtb3JlIGhlcmUKKyAgICAoZWxzZSAjZikpKQorCisoZGVmaW5lIChleHRlcm5h bC1kaXNwYXRjaC1lcXVhbGl0eSB0eXBlIGEgYikKKyAgKGJpbmFyeT0/IChyZWdpc3RlcmVkLWNv bXBhcmF0b3IgdHlwZSkgYSBiKSkKKworKGRlZmluZSAoaW50ZXJuYWwtZGlzcGF0Y2gtb3JkZXJp bmcgdHlwZSBhIGIpCisgIDs7IEVRVUFMPyBhbHJlYWR5IGVsaW1pbmF0ZXMgc29tZSBpbnRlcm5h bCB0eXBlcworICAoY2FzZSB0eXBlCisgICAgOzsgKCgwKSAjZikgOyBBbGwgZW1wdHkgbGlzdHMg YXJlIGVxdWFsCisgICAgKCgxKSAoYW5kIChub3QgYSkgYikpIDsgI2YgPCAjdCBidXQgbm90IG90 aGVyd2lzZQorICAgICgoMikgKGNvbXBsZXg8PyBhIGIpKQorICAgICgoMykgKGNoYXI8PyBhIGIp KQorICAgICgoNCkgKHN0cmluZzw/IGEgYikpCisgICAgKCg1KSAoc3ltYm9sPD8gYSBiKSkKKyAg ICAoKDYpIChkZWZhdWx0LWJ5dGV2ZWN0b3I8PyBhIGIpKQorICAgICgoNykgKGRlZmF1bHQtdmVj dG9yPD8gYSBiKSkKKyAgICAoKDgpIChkZWZhdWx0LXBhaXI8PyBhIGIpKQorICAgIDs7ICgoOSAx MCkgI2YpCisgICAgOzsgQWRkIG1vcmUgaGVyZQorICAgICkpCisKKyhkZWZpbmUgKGV4dGVybmFs LWRpc3BhdGNoLW9yZGVyaW5nIHR5cGUgYSBiKQorICAoYmluYXJ5PD8gKHJlZ2lzdGVyZWQtY29t cGFyYXRvciB0eXBlKSBhIGIpKQorCis7OyBFUVVBTC1IQVNIIHJldHVybnMgdGhlIHNhbWUgYXMg SEFTSC1CWS1WQUxVRSBvbiBudW1iZXJzIGFuZAorOzsgSEFTSC1CWS1JREVOVElUWSBvbiBib29s ZWFucywgY2hhcnMgYW5kIHN5bWJvbHMuCisKKyhkZWZpbmUgKGRlZmF1bHQtaGFzaCBvYmopCisg IChsZXQgKCh0eXBlIChpbnRlcm5hbC1vYmplY3QtdHlwZSBvYmopKSkKKyAgICAoaWYgdHlwZQor ICAgICAgICAoaWYgKG9yICg8PSB0eXBlIDYpICg+PSB0eXBlIDkpKQorICAgICAgICAgICAgKGVx dWFsLWhhc2ggb2JqKQorICAgICAgICAgICAgKGNhc2UgdHlwZQorICAgICAgICAgICAgICAoKDcp IChkZWZhdWx0LXZlY3Rvci1oYXNoIG9iaikpCisgICAgICAgICAgICAgICgoOCkgKGRlZmF1bHQt cGFpci1oYXNoIG9iaikpCisgICAgICAgICAgICAgIDs7IEFkZCBtb3JlIGhlcmUKKyAgICAgICAg ICAgICAgKSkKKyAgICAgICAgKGxldCAoKGNvbXBhcmF0b3IgKGV4dGVybmFsLW9iamVjdC1jb21w YXJhdG9yIG9iaikpKQorICAgICAgICAgIChjb21wYXJhdG9yLWhhc2ggY29tcGFyYXRvciBvYmop KSkpKQorCisoZGVmaW5lIChkZWZhdWx0LW9yZGVyaW5nIGEgYikKKyAgKGFuZCAobm90IChlcXVh bD8gYSBiKSkgOyBzaG91bGQgYmUgbXVjaCBmYXN0ZXIgdGhhbiB0aGlzIHByb2NlZHVyZQorICAg ICAgIChsZXQgKChhLWl0eXBlIChpbnRlcm5hbC1vYmplY3QtdHlwZSBhKSkKKyAgICAgICAgICAg ICAoYi1pdHlwZSAoaW50ZXJuYWwtb2JqZWN0LXR5cGUgYikpKQorICAgICAgICAgKGNvbmQKKyAg ICAgICAgICAoKG5vdCBiLWl0eXBlKQorICAgICAgICAgICAob3IgYS1pdHlwZQorICAgICAgICAg ICAgICAgOzsgTmVpdGhlciBhIG5vciBiIGFyZSBvZiBpbnRlcm5hbCB0eXBlOgorICAgICAgICAg ICAgICAgOzsgZGlzcGF0Y2ggb3JkZXJpbmcgb24gZXh0ZXJuYWwgdHlwZQorICAgICAgICAgICAg ICAgKGxldCAoKGEtZXR5cGUgKGV4dGVybmFsLW9iamVjdC10eXBlIGEpKQorICAgICAgICAgICAg ICAgICAgICAgKGItZXR5cGUgKGV4dGVybmFsLW9iamVjdC10eXBlIGIpKSkKKyAgICAgICAgICAg ICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICgoPCBhLWV0eXBlIGItZXR5cGUpICN0KQor ICAgICAgICAgICAgICAgICAgKCg+IGEtZXR5cGUgYi1ldHlwZSkgI2YpCisgICAgICAgICAgICAg ICAgICAoZWxzZSAoZXh0ZXJuYWwtZGlzcGF0Y2gtb3JkZXJpbmcgYS1ldHlwZSBhIGIpKSkpKSkK KyAgICAgICAgICAoKG5vdCBhLWl0eXBlKSAjZikKKyAgICAgICAgICA7OyBCb3RoIGEgYW5kIGIg YXJlIG9mIGludGVybmFsIHR5cGUKKyAgICAgICAgICAoKDwgYS1pdHlwZSBiLWl0eXBlKSAjdCkK KyAgICAgICAgICAoKD4gYS1pdHlwZSBiLWl0eXBlKSAjZikKKyAgICAgICAgICAoZWxzZSAoaW50 ZXJuYWwtZGlzcGF0Y2gtb3JkZXJpbmcgYS1pdHlwZSBhIGIpKSkpKSkKKworKGRlZmluZSAoZGVm YXVsdC1lcXVhbGl0eSBhIGIpCisgIChvciAoZXF1YWw/IGEgYikgOyBzaG91bGQgYmUgbXVjaCBm YXN0ZXIgdGhhbiB0aGlzIHByb2NlZHVyZQorICAgICAgKGxldCAoKGEtaXR5cGUgKGludGVybmFs LW9iamVjdC10eXBlIGEpKQorICAgICAgICAgICAgKGItaXR5cGUgKGludGVybmFsLW9iamVjdC10 eXBlIGIpKSkKKyAgICAgICAgKGFuZCAoZXF2PyBhLWl0eXBlIGItaXR5cGUpCisgICAgICAgICAg ICAgKGlmIGEtaXR5cGUKKyAgICAgICAgICAgICAgICAgKGludGVybmFsLWRpc3BhdGNoLWVxdWFs aXR5IGEtaXR5cGUgYSBiKQorICAgICAgICAgICAgICAgICAobGV0ICgoYS1jb21wIChleHRlcm5h bC1vYmplY3QtY29tcGFyYXRvciBhKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGItY29tcCAo ZXh0ZXJuYWwtb2JqZWN0LWNvbXBhcmF0b3IgYikpKQorICAgICAgICAgICAgICAgICAgIChhbmQg KGVxPyBhLWNvbXAgYi1jb21wKSAoYmluYXJ5PT8gYS1jb21wIGEgYikpKSkpKSkpCisKKzs7IE5v dGU6IGNvbXBhcmF0b3JzIGFyZSBpbW11dGFibGUsIG5vIHJlYXNvbiB0byBhbGxvY2F0ZSBhIG5l dyBvbmUKKyhkZWZpbmUgZGVmYXVsdC1jb21wYXJhdG9yIChtYWtlLWNvbXBhcmF0b3IgYWx3YXlz LXRydWUgZGVmYXVsdC1lcXVhbGl0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZWZhdWx0LW9yZGVyaW5nIGRlZmF1bHQtaGFzaCkpCisKKyhkZWZpbmUgKG1h a2UtZGVmYXVsdC1jb21wYXJhdG9yKSBkZWZhdWx0LWNvbXBhcmF0b3IpCisKKyhkZWZpbmUgZGVm YXVsdC1wYWlyLWNvbXBhcmF0b3IKKyAgKG1ha2UtcGFpci1jb21wYXJhdG9yIGRlZmF1bHQtY29t cGFyYXRvciBkZWZhdWx0LWNvbXBhcmF0b3IpKQorCisoZGVmaW5lIGRlZmF1bHQtcGFpcj0/Cisg IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBkZWZhdWx0LXBhaXItY29tcGFyYXRvcikp CisoZGVmaW5lIGRlZmF1bHQtcGFpcjw/CisgIChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0 ZSBkZWZhdWx0LXBhaXItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQtcGFpci1oYXNoCisg IChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gZGVmYXVsdC1wYWlyLWNvbXBhcmF0b3IpKQorCiso ZGVmaW5lIGRlZmF1bHQtdmVjdG9yLWNvbXBhcmF0b3IKKyAgKG1ha2UtdmVjdG9yLWNvbXBhcmF0 b3IgZGVmYXVsdC1jb21wYXJhdG9yIHZlY3Rvcj8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg dmVjdG9yLWxlbmd0aCB2ZWN0b3ItcmVmKSkKKworKGRlZmluZSBkZWZhdWx0LXZlY3Rvcj0/Cisg IChjb21wYXJhdG9yLWVxdWFsaXR5LXByZWRpY2F0ZSBkZWZhdWx0LXZlY3Rvci1jb21wYXJhdG9y KSkKKyhkZWZpbmUgZGVmYXVsdC12ZWN0b3I8PworICAoY29tcGFyYXRvci1vcmRlcmluZy1wcmVk aWNhdGUgZGVmYXVsdC12ZWN0b3ItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQtdmVjdG9y LWhhc2gKKyAgKGNvbXBhcmF0b3ItaGFzaC1mdW5jdGlvbiBkZWZhdWx0LXZlY3Rvci1jb21wYXJh dG9yKSkKKworKGRlZmluZSBkZWZhdWx0LWJ5dGV2ZWN0b3ItY29tcGFyYXRvcgorICAobWFrZS12 ZWN0b3ItY29tcGFyYXRvciBkZWZhdWx0LWNvbXBhcmF0b3IgYnl0ZXZlY3Rvcj8KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgYnl0ZXZlY3Rvci1sZW5ndGggYnl0ZXZlY3Rvci11OC1yZWYpKQor CisoZGVmaW5lIGRlZmF1bHQtYnl0ZXZlY3Rvcj0/CisgIChjb21wYXJhdG9yLWVxdWFsaXR5LXBy ZWRpY2F0ZSBkZWZhdWx0LWJ5dGV2ZWN0b3ItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQt Ynl0ZXZlY3Rvcjw/CisgIChjb21wYXJhdG9yLW9yZGVyaW5nLXByZWRpY2F0ZSBkZWZhdWx0LWJ5 dGV2ZWN0b3ItY29tcGFyYXRvcikpCisoZGVmaW5lIGRlZmF1bHQtYnl0ZXZlY3Rvci1oYXNoCisg IChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gZGVmYXVsdC1ieXRldmVjdG9yLWNvbXBhcmF0b3Ip KQorCis7OzsgV3JhcHBlZCBlcXVhbGl0eSBwcmVkaWNhdGVzCis7OzsgVGhlc2UgY29tcGFyYXRv cnMgZG9uJ3QgaGF2ZSBvcmRlcmluZyBmdW5jdGlvbnMuCisKKzs7IE5vdGU6IGNvbXBhcmF0b3Jz IGFyZSBpbW11dGFibGUsIG5vIHJlYXNvbiB0byBhbGxvY2F0ZSBhIG5ldyBvbmUKKyhkZWZpbmUg ZXEtY29tcGFyYXRvciAobWFrZS1jb21wYXJhdG9yICN0IGVxPyAjZiBkZWZhdWx0LWhhc2gpKQor KGRlZmluZSAobWFrZS1lcS1jb21wYXJhdG9yKSBlcS1jb21wYXJhdG9yKQorCisoZGVmaW5lIGVx di1jb21wYXJhdG9yIChtYWtlLWNvbXBhcmF0b3IgI3QgZXF2PyAjZiBkZWZhdWx0LWhhc2gpKQor KGRlZmluZSAobWFrZS1lcXYtY29tcGFyYXRvcikgZXF2LWNvbXBhcmF0b3IpCisKKyhkZWZpbmUg ZXF1YWwtY29tcGFyYXRvciAobWFrZS1jb21wYXJhdG9yICN0IGVxdWFsPyAjZiBkZWZhdWx0LWhh c2gpKQorKGRlZmluZSAobWFrZS1lcXVhbC1jb21wYXJhdG9yKSBlcXVhbC1jb21wYXJhdG9yKQor Cis7OyBlb2YKZGlmZiAtLWdpdCBhL21vZHVsZS9zcmZpL3NyZmktMTI4L2dudS5zY20gYi9tb2R1 bGUvc3JmaS9zcmZpLTEyOC9nbnUuc2NtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMC4uODlmZDQzNGFhCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlL3NyZmkvc3JmaS0xMjgv Z251LnNjbQpAQCAtMCwwICsxLDM4IEBACis7OzsgRXh0ZW5zaW9ucyB0byBTUkZJLTEyOAorCis7 OyAgICBDb3B5cmlnaHQgKEMpIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7 OworOzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorOzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7OyB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OworOzsgVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKzs7IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCis7OworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorOzsgRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQorCisoZGVmaW5lLW1vZHVsZSAoc3JmaSBzcmZpLTEyOCBnbnUpCisgICM6ZXhw b3J0IChoYXNoLWJvdW5kIGhhc2gtc2FsdCB3aXRoLWhhc2gtc2FsdCkpCisKKyhkZWZpbmUtc3lu dGF4IGhhc2gtYm91bmQKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoaGFzaC1ib3VuZCkgbW9z dC1wb3NpdGl2ZS1maXhudW0pKSkKKworKGRlZmluZSAlc2FsdCUgKG1ha2UtcGFyYW1ldGVyIChy YW5kb20gKGhhc2gtYm91bmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2VlZC0+cmFuZG9tLXN0YXRlIChjdXJyZW50LXRpbWUpKSkpKQorCisoZGVmaW5lLXN5bnRh eCBoYXNoLXNhbHQKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoaGFzaC1zYWx0KSAoJXNhbHQl KSkpKQorCisoZGVmaW5lLXN5bnRheCB3aXRoLWhhc2gtc2FsdAorICAoc3ludGF4LXJ1bGVzICgp CisgICAgKCh3aXRoLWhhc2gtc2FsdCBuZXctc2FsdCBoYXNoLWZ1bmMgb2JqKQorICAgICAocGFy YW1ldGVyaXplICgoJXNhbHQlIG5ldy1zYWx0KSkgKGhhc2gtZnVuYyBvYmopKSkpKQorCis7OyBl b2YKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0gYi90ZXN0LXN1aXRlL01ha2Vm aWxlLmFtCmluZGV4IGYwYWQ4YmI5MS4uYTJmNzNiMzI5IDEwMDY0NAotLS0gYS90ZXN0LXN1aXRl L01ha2VmaWxlLmFtCisrKyBiL3Rlc3Qtc3VpdGUvTWFrZWZpbGUuYW0KQEAgLTE2Myw2ICsxNjMs NyBAQCBTQ01fVEVTVFMgPSB0ZXN0cy8wMC1pbml0aWFsLWVudi50ZXN0CQlcCiAJICAgIHRlc3Rz L3NyZmktMTA1LnRlc3QJCQlcCiAJICAgIHRlc3RzL3NyZmktMTExLnRlc3QJCQlcCiAJICAgIHRl c3RzL3NyZmktMTI2LnRlc3QJCQlcCisJICAgIHRlc3RzL3NyZmktMTI4LnRlc3QJCQlcCiAJICAg IHRlc3RzL3NyZmktNC50ZXN0CQkJXAogCSAgICB0ZXN0cy9zcmZpLTkudGVzdAkJCVwKIAkgICAg dGVzdHMvc3RhdHByb2YudGVzdAkJCVwKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3Jm aS0xMjgudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjgudGVzdApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjAyYTUzOGUyMgotLS0gL2Rldi9udWxsCisrKyBiL3Rl c3Qtc3VpdGUvdGVzdHMvc3JmaS0xMjgudGVzdApAQCAtMCwwICsxLDM0OCBAQAorOzs7OyBzcmZp LTEyOC50ZXN0IC0tLSBUZXN0IHN1aXRlIGZvciBTUkZJIDEyOCAtKi0gc2NoZW1lIC0qLQorOzs7 OworOzs7OyAJQ29weXJpZ2h0IChDKSAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorOzs7OworOzs7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCis7Ozs7IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzs7OzsgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7Ozs7IHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OzsK Kzs7OzsgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCis7Ozs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7Ozs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCis7Ozs7IExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7Ozs7Cis7Ozs7IFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK Kzs7OzsgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorOzs7OyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisKKzs7OyBUaGUgZm9s bG93aW5nIHRlc3RzIGFyZSB0aGUgdGVzdHMgZnJvbSBTUkZJLTEyNiByZWZlcmVuY2UKKzs7OyBp bXBsZW1lbnRhdGlvbiBwb3J0ZWQgdG8gR3VpbGUgdGVzdCBzdWl0ZS4KKworOzsgVGhpcyBmaWxl IGNvbnRhaW5zIGNvZGUgZnJvbSBTUkZJIDEyOCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24sIGJ5 Cis7OyBKb2huIENvd2FuCisKKzs7OyBDb3B5cmlnaHQgKEMpIEpvaG4gQ293YW4gKDIwMTUpLiBB bGwgUmlnaHRzIFJlc2VydmVkLgorOzs7Cis7OzsgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KKzs7OyBvYnRhaW5pbmcgYSBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorOzs7IGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKzs7OyByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwK Kzs7OyBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LCBhbmQvb3IKKzs7OyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorOzs7IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nCis7OzsgY29uZGl0aW9uczoKKzs7OworOzs7IFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJl Cis7OzsgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUgU29mdHdhcmUuCis7OzsKKzs7OyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKzs7OyBFWFBSRVNTIE9SIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMKKzs7OyBPRiBNRVJDSEFO VEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorOzs7IE5PTklO RlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCis7 OzsgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFC SUxJVFksCis7OzsgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HCis7OzsgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorOzs7IE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZU V0FSRS4KKworKGRlZmluZS1tb2R1bGUgKHRlc3Qtc3JmaS0xMjgpCisgICM6dXNlLW1vZHVsZSAo dGVzdC1zdWl0ZSBsaWIpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEyOCkKKyAgIzp1c2Ut bW9kdWxlIChzcmZpIHNyZmktMSkKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMikKKyAgIzp1 c2UtbW9kdWxlIChzcmZpIHNyZmktOCkKKyAgIzp1c2UtbW9kdWxlIChybnJzIGJ5dGV2ZWN0b3Jz KSkKKworKGRlZmluZSAodmVjdG9yLWNkciB2ZWMpCisgIChsZXQqICgobGVuICh2ZWN0b3ItbGVu Z3RoIHZlYykpCisgICAgICAgICAocmVzdWx0IChtYWtlLXZlY3RvciAoLSBsZW4gMSkpKSkKKyAg ICAobGV0IGxvb3AgKChuIDEpKQorICAgICAgKGNvbmQKKyAgICAgICAoKD0gbiBsZW4pIHJlc3Vs dCkKKyAgICAgICAoZWxzZSAodmVjdG9yLXNldCEgcmVzdWx0ICgtIG4gMSkgKHZlY3Rvci1yZWYg dmVjIG4pKQorICAgICAgICAgICAgIChsb29wICgrIG4gMSkpKSkpKSkKKworKGRlZmluZSBkZWZh dWx0LWNvbXBhcmF0b3IgKG1ha2UtZGVmYXVsdC1jb21wYXJhdG9yKSkKKworKGRlZmluZSByZWFs LWNvbXBhcmF0b3IgKG1ha2UtY29tcGFyYXRvciByZWFsPyA9IDwgbnVtYmVyLWhhc2gpKQorCiso ZGVmaW5lIGRlZ2VuZXJhdGUtY29tcGFyYXRvciAobWFrZS1jb21wYXJhdG9yIChsYW1iZGEgKHgp ICN0KSBlcXVhbD8gI2YgI2YpKQorCisoZGVmaW5lIGJvb2xlYW4tY29tcGFyYXRvcgorICAobWFr ZS1jb21wYXJhdG9yIGJvb2xlYW4/IGVxPyAobGFtYmRhICh4IHkpIChhbmQgKG5vdCB4KSB5KSkg Ym9vbGVhbi1oYXNoKSkKKworKGRlZmluZSBib29sLXBhaXItY29tcGFyYXRvcgorICAobWFrZS1w YWlyLWNvbXBhcmF0b3IgYm9vbGVhbi1jb21wYXJhdG9yIGJvb2xlYW4tY29tcGFyYXRvcikpCisK KyhkZWZpbmUgbnVtLWxpc3QtY29tcGFyYXRvcgorICAobWFrZS1saXN0LWNvbXBhcmF0b3IgcmVh bC1jb21wYXJhdG9yIGxpc3Q/IG51bGw/IGNhciBjZHIpKQorCisoZGVmaW5lIG51bS12ZWN0b3It Y29tcGFyYXRvcgorICAobWFrZS12ZWN0b3ItY29tcGFyYXRvciByZWFsLWNvbXBhcmF0b3IgdmVj dG9yPyB2ZWN0b3ItbGVuZ3RoIHZlY3Rvci1yZWYpKQorCisoZGVmaW5lIHZlY3Rvci1xdWEtbGlz dC1jb21wYXJhdG9yCisgIChtYWtlLWxpc3QtY29tcGFyYXRvcgorICAgcmVhbC1jb21wYXJhdG9y CisgICB2ZWN0b3I/CisgICAobGFtYmRhICh2ZWMpICg9IDAgKHZlY3Rvci1sZW5ndGggdmVjKSkp CisgICAobGFtYmRhICh2ZWMpICh2ZWN0b3ItcmVmIHZlYyAwKSkKKyAgIHZlY3Rvci1jZHIpKQor CisoZGVmaW5lIGxpc3QtcXVhLXZlY3Rvci1jb21wYXJhdG9yCisgIChtYWtlLXZlY3Rvci1jb21w YXJhdG9yIGRlZmF1bHQtY29tcGFyYXRvciBsaXN0PyBsZW5ndGggbGlzdC1yZWYpKQorCisoZGVm aW5lIGVxLWNvbXBhcmF0b3IgKG1ha2UtZXEtY29tcGFyYXRvcikpCisKKyhkZWZpbmUgZXF2LWNv bXBhcmF0b3IgKG1ha2UtZXF2LWNvbXBhcmF0b3IpKQorCisoZGVmaW5lIGVxdWFsLWNvbXBhcmF0 b3IgKG1ha2UtZXF1YWwtY29tcGFyYXRvcikpCisKKyhkZWZpbmUgc3ltYm9sLWNvbXBhcmF0b3IK KyAgKG1ha2UtY29tcGFyYXRvcgorICAgc3ltYm9sPworICAgZXE/CisgICAobGFtYmRhIChhIGIp IChzdHJpbmc8PyAoc3ltYm9sLT5zdHJpbmcgYSkgKHN5bWJvbC0+c3RyaW5nIGIpKSkKKyAgIHN5 bWJvbC1oYXNoKSkKKworCisod2l0aC10ZXN0LXByZWZpeCAiU1JGSS0xMjgiCisKKyAgKHBhc3Mt aWYtZXF1YWwgJyMoMiAzIDQpICh2ZWN0b3ItY2RyICcjKDEgMiAzIDQpKSkKKyAgKHBhc3MtaWYt ZXF1YWwgJyMoKSAodmVjdG9yLWNkciAnIygxKSkpCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNv bXBhcmF0b3JzL3ByZWRpY2F0ZXMiCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0b3I/IHJlYWwtY29t cGFyYXRvcikpCisgICAgKHBhc3MtaWYgKG5vdCAoY29tcGFyYXRvcj8gPSkpKQorICAgIChwYXNz LWlmIChjb21wYXJhdG9yLW9yZGVyZWQ/IHJlYWwtY29tcGFyYXRvcikpCisgICAgKHBhc3MtaWYg KGNvbXBhcmF0b3ItaGFzaGFibGU/IHJlYWwtY29tcGFyYXRvcikpCisgICAgKHBhc3MtaWYgKG5v dCAoY29tcGFyYXRvci1vcmRlcmVkPyBkZWdlbmVyYXRlLWNvbXBhcmF0b3IpKSkKKyAgICAocGFz cy1pZiAobm90IChjb21wYXJhdG9yLWhhc2hhYmxlPyBkZWdlbmVyYXRlLWNvbXBhcmF0b3IpKSkK KyAgICApIDsgZW5kIGNvbXBhcmF0b3JzL3ByZWRpY2F0ZXMKKworICAod2l0aC10ZXN0LXByZWZp eCAiY29tcGFyYXRvcnMvY29uc3RydWN0b3JzIgorICAgIChwYXNzLWlmICg9PyBib29sZWFuLWNv bXBhcmF0b3IgI3QgI3QpKQorICAgIChwYXNzLWlmIChub3QgKD0/IGJvb2xlYW4tY29tcGFyYXRv ciAjdCAjZikpKQorICAgIChwYXNzLWlmICg8PyBib29sZWFuLWNvbXBhcmF0b3IgI2YgI3QpKQor ICAgIChwYXNzLWlmIChub3QgKDw/IGJvb2xlYW4tY29tcGFyYXRvciAjdCAjdCkpKQorICAgIChw YXNzLWlmIChub3QgKDw/IGJvb2xlYW4tY29tcGFyYXRvciAjdCAjZikpKQorCisgICAgKHBhc3Mt aWYgKGNvbXBhcmF0b3ItdGVzdC10eXBlIGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3QgLiAjZikp KQorICAgIChwYXNzLWlmIChub3QgKGNvbXBhcmF0b3ItdGVzdC10eXBlIGJvb2wtcGFpci1jb21w YXJhdG9yIDMyKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoY29tcGFyYXRvci10ZXN0LXR5cGUgYm9v bC1wYWlyLWNvbXBhcmF0b3IgJygzMiAuICNmKSkpKQorICAgIChwYXNzLWlmIChub3QgKGNvbXBh cmF0b3ItdGVzdC10eXBlIGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3QgLiAzMikpKSkKKyAgICAo cGFzcy1pZiAobm90IChjb21wYXJhdG9yLXRlc3QtdHlwZSBib29sLXBhaXItY29tcGFyYXRvciAn KDMyIC4gMzQpKSkpCisgICAgKHBhc3MtaWYgKD0/IGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3Qg LiAjdCkgJygjdCAuICN0KSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gYm9vbC1wYWlyLWNvbXBh cmF0b3IgJygjdCAuICN0KSAnKCNmIC4gI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gYm9v bC1wYWlyLWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCN0IC4gI2YpKSkpCisgICAgKHBhc3MtaWYg KDw/IGJvb2wtcGFpci1jb21wYXJhdG9yICcoI2YgLiAjdCkgJygjdCAuICN0KSkpCisgICAgKHBh c3MtaWYgKDw/IGJvb2wtcGFpci1jb21wYXJhdG9yICcoI3QgLiAjZikgJygjdCAuICN0KSkpCisg ICAgKHBhc3MtaWYgKG5vdCAoPD8gYm9vbC1wYWlyLWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCN0 IC4gI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gYm9vbC1wYWlyLWNvbXBhcmF0b3IgJygj dCAuICN0KSAnKCNmIC4gI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gYm9vbC1wYWlyLWNv bXBhcmF0b3IgJygjZiAuICN0KSAnKCNmIC4gI2YpKSkpCisKKyAgICAocGFzcy1pZiAoY29tcGFy YXRvci10ZXN0LXR5cGUgbnVtLXZlY3Rvci1jb21wYXJhdG9yICcjKDEgMiAzKSkpCisgICAgKHBh c3MtaWYgKGNvbXBhcmF0b3ItdGVzdC10eXBlIG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygpKSkK KyAgICAocGFzcy1pZiAobm90IChjb21wYXJhdG9yLXRlc3QtdHlwZSBudW0tdmVjdG9yLWNvbXBh cmF0b3IgMSkpKQorICAgIChwYXNzLWlmIChub3QgKGNvbXBhcmF0b3ItdGVzdC10eXBlIG51bS12 ZWN0b3ItY29tcGFyYXRvciAnIyhhIDIgMykpKSkKKyAgICAocGFzcy1pZiAobm90IChjb21wYXJh dG9yLXRlc3QtdHlwZSBudW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSBiIDMpKSkpCisgICAgKHBh c3MtaWYgKG5vdCAoY29tcGFyYXRvci10ZXN0LXR5cGUgbnVtLXZlY3Rvci1jb21wYXJhdG9yICcj KDEgMiBjKSkpKQorICAgIChwYXNzLWlmICg9PyBudW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSAy IDMpICcjKDEgMiAzKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gbnVtLXZlY3Rvci1jb21wYXJh dG9yICcjKDEgMiAzKSAnIyg0IDUgNikpKSkKKyAgICAocGFzcy1pZiAobm90ICg9PyBudW0tdmVj dG9yLWNvbXBhcmF0b3IgJyMoMSAyIDMpICcjKDEgNSA2KSkpKQorICAgIChwYXNzLWlmIChub3Qg KD0/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIgMykgJyMoMSAyIDYpKSkpCisgICAgKHBh c3MtaWYgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIpICcjKDEgMiAzKSkpCisgICAg KHBhc3MtaWYgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIgMykgJyMoMiAzIDQpKSkK KyAgICAocGFzcy1pZiAoPD8gbnVtLXZlY3Rvci1jb21wYXJhdG9yICcjKDEgMiAzKSAnIygxIDMg NCkpKQorICAgIChwYXNzLWlmICg8PyBudW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSAyIDMpICcj KDEgMiA0KSkpCisgICAgKHBhc3MtaWYgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygzIDQp ICcjKDEgMiAzKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gbnVtLXZlY3Rvci1jb21wYXJhdG9y ICcjKDEgMiAzKSAnIygxIDIgMykpKSkKKyAgICAocGFzcy1pZiAobm90ICg8PyBudW0tdmVjdG9y LWNvbXBhcmF0b3IgJyMoMSAyIDMpICcjKDEgMikpKSkKKyAgICAocGFzcy1pZiAobm90ICg8PyBu dW0tdmVjdG9yLWNvbXBhcmF0b3IgJyMoMSAyIDMpICcjKDAgMiAzKSkpKQorICAgIChwYXNzLWlm IChub3QgKDw/IG51bS12ZWN0b3ItY29tcGFyYXRvciAnIygxIDIgMykgJyMoMSAxIDMpKSkpCisK KyAgICAocGFzcy1pZiAobm90ICg8PyB2ZWN0b3ItcXVhLWxpc3QtY29tcGFyYXRvciAnIygzIDQp ICcjKDEgMiAzKSkpKQorICAgIChwYXNzLWlmICg8PyBsaXN0LXF1YS12ZWN0b3ItY29tcGFyYXRv ciAnKDMgNCkgJygxIDIgMykpKQorCisgICAgKGxldCAoKGJvb2wtcGFpciAoY29ucyAjdCAjZikp CisgICAgICAgICAgKGJvb2wtcGFpci0yIChjb25zICN0ICNmKSkKKyAgICAgICAgICAocmV2ZXJz ZS1ib29sLXBhaXIgKGNvbnMgI2YgI3QpKSkKKyAgICAgIChwYXNzLWlmICg9PyBlcS1jb21wYXJh dG9yICN0ICN0KSkKKyAgICAgIChwYXNzLWlmIChub3QgKD0/IGVxLWNvbXBhcmF0b3IgI2YgI3Qp KSkKKyAgICAgIChwYXNzLWlmICg9PyBlcXYtY29tcGFyYXRvciBib29sLXBhaXIgYm9vbC1wYWly KSkKKyAgICAgIChwYXNzLWlmIChub3QgKD0/IGVxdi1jb21wYXJhdG9yIGJvb2wtcGFpciBib29s LXBhaXItMikpKQorICAgICAgKHBhc3MtaWYgKD0/IGVxdWFsLWNvbXBhcmF0b3IgYm9vbC1wYWly IGJvb2wtcGFpci0yKSkKKyAgICAgIChwYXNzLWlmIChub3QgKD0/IGVxdWFsLWNvbXBhcmF0b3Ig Ym9vbC1wYWlyIHJldmVyc2UtYm9vbC1wYWlyKSkpKQorICAgICkgOyBlbmQgY29tcGFyYXRvcnMv Y29uc3RydWN0b3JzCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBhcmF0b3JzL2hhc2giCisg ICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChib29sZWFuLWhhc2ggI2YpKSkKKyAgICAocGFz cy1pZiAobm90IChuZWdhdGl2ZT8gKGJvb2xlYW4taGFzaCAjdCkpKSkKKyAgICAocGFzcy1pZiAo ZXhhY3QtaW50ZWdlcj8gKGNoYXItaGFzaCAjXGEpKSkKKyAgICAocGFzcy1pZiAobm90IChuZWdh dGl2ZT8gKGNoYXItaGFzaCAjXGIpKSkpCisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChj aGFyLWNpLWhhc2ggI1xhKSkpCisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChjaGFyLWNp LWhhc2ggI1xiKSkpKQorICAgIChwYXNzLWlmICg9IChjaGFyLWNpLWhhc2ggI1xhKSAoY2hhci1j aS1oYXNoICNcQSkpKQorICAgIChwYXNzLWlmIChleGFjdC1pbnRlZ2VyPyAoc3RyaW5nLWhhc2gg ImYiKSkpCisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChzdHJpbmctaGFzaCAiZyIpKSkp CisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChzdHJpbmctY2ktaGFzaCAiZiIpKSkKKyAg ICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKHN0cmluZy1jaS1oYXNoICJnIikpKSkKKyAgICAo cGFzcy1pZiAoPSAoc3RyaW5nLWNpLWhhc2ggImYiKSAoc3RyaW5nLWNpLWhhc2ggIkYiKSkpCisg ICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChzeW1ib2wtaGFzaCAnZikpKQorICAgIChwYXNz LWlmIChub3QgKG5lZ2F0aXZlPyAoc3ltYm9sLWhhc2ggJ3QpKSkpCisgICAgKHBhc3MtaWYgKGV4 YWN0LWludGVnZXI/IChudW1iZXItaGFzaCAzKSkpCisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRp dmU/IChudW1iZXItaGFzaCAzKSkpKQorICAgIChwYXNzLWlmIChleGFjdC1pbnRlZ2VyPyAobnVt YmVyLWhhc2ggLTMpKSkKKyAgICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKG51bWJlci1oYXNo IC0zKSkpKQorICAgIChwYXNzLWlmIChleGFjdC1pbnRlZ2VyPyAobnVtYmVyLWhhc2ggMy4wKSkp CisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChudW1iZXItaGFzaCAzLjApKSkpCisgICAg KHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChudW1iZXItaGFzaCAzLjQ3KSkpCisgICAgKHBhc3Mt aWYgKG5vdCAobmVnYXRpdmU/IChudW1iZXItaGFzaCAzLjQ3KSkpKQorICAgIChwYXNzLWlmIChl eGFjdC1pbnRlZ2VyPyAoZGVmYXVsdC1oYXNoICcoKSkpKQorICAgIChwYXNzLWlmIChub3QgKG5l Z2F0aXZlPyAoZGVmYXVsdC1oYXNoICcoKSkpKSkKKyAgICAocGFzcy1pZiAoZXhhY3QtaW50ZWdl cj8gKGRlZmF1bHQtaGFzaCAnKGEgImIiICNcYyAjKGRlZSkgMi43MTgpKSkpCisgICAgKHBhc3Mt aWYgKG5vdCAobmVnYXRpdmU/IChkZWZhdWx0LWhhc2ggJyhhICJiIiAjXGMgIyhkZWUpIDIuNzE4 KSkpKSkKKyAgICAocGFzcy1pZiAoZXhhY3QtaW50ZWdlcj8gKGRlZmF1bHQtaGFzaCAnI3U4KCkp KSkKKyAgICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKGRlZmF1bHQtaGFzaCAnI3U4KCkpKSkp CisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChkZWZhdWx0LWhhc2ggJyN1OCg4IDYgMykp KSkKKyAgICAocGFzcy1pZiAobm90IChuZWdhdGl2ZT8gKGRlZmF1bHQtaGFzaCAnI3U4KDggNiAz KSkpKSkKKyAgICAocGFzcy1pZiAoZXhhY3QtaW50ZWdlcj8gKGRlZmF1bHQtaGFzaCAnIygpKSkp CisgICAgKHBhc3MtaWYgKG5vdCAobmVnYXRpdmU/IChkZWZhdWx0LWhhc2ggJyMoKSkpKSkKKyAg ICAocGFzcy1pZiAoZXhhY3QtaW50ZWdlcj8gKGRlZmF1bHQtaGFzaCAnIyhhICJiIiAjXGMgIyhk ZWUpIDIuNzE4KSkpKQorICAgIChwYXNzLWlmIChub3QgKG5lZ2F0aXZlPyAoZGVmYXVsdC1oYXNo ICcjKGEgImIiICNcYyAjKGRlZSkgMi43MTgpKSkpKQorCisgICAgKSA7IGVuZCBjb21wYXJhdG9y cy9oYXNoCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBhcmF0b3JzL2RlZmF1bHQiCisgICAg KHBhc3MtaWYgKDw/IGRlZmF1bHQtY29tcGFyYXRvciAnKCkgJyhhKSkpCisgICAgKHBhc3MtaWYg KG5vdCAoPT8gZGVmYXVsdC1jb21wYXJhdG9yICcoKSAnKGEpKSkpCisgICAgKHBhc3MtaWYgKD0/ IGRlZmF1bHQtY29tcGFyYXRvciAjdCAjdCkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gZGVmYXVs dC1jb21wYXJhdG9yICN0ICNmKSkpCisgICAgKHBhc3MtaWYgKDw/IGRlZmF1bHQtY29tcGFyYXRv ciAjZiAjdCkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVsdC1jb21wYXJhdG9yICN0ICN0 KSkpCisgICAgKHBhc3MtaWYgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAjXGEgI1xhKSkKKyAgICAo cGFzcy1pZiAoPD8gZGVmYXVsdC1jb21wYXJhdG9yICNcYSAjXGIpKQorCisgICAgKHBhc3MtaWYg KGNvbXBhcmF0b3ItdGVzdC10eXBlIGRlZmF1bHQtY29tcGFyYXRvciAnKCkpKQorICAgIChwYXNz LWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgI3QpKQorICAgIChw YXNzLWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgI1x0KSkKKyAg ICAocGFzcy1pZiAoY29tcGFyYXRvci10ZXN0LXR5cGUgZGVmYXVsdC1jb21wYXJhdG9yICcoYSkp KQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3Ig J2EpKQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0 b3IgKG1ha2UtYnl0ZXZlY3RvciAxMCkpKQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRlc3Qt dHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgMTApKQorICAgIChwYXNzLWlmIChjb21wYXJhdG9yLXRl c3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgMTAuMCkpCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0 b3ItdGVzdC10eXBlIGRlZmF1bHQtY29tcGFyYXRvciAiMTAuMCIpKQorICAgIChwYXNzLWlmIChj b21wYXJhdG9yLXRlc3QtdHlwZSBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoMTApKSkKKworICAgIChw YXNzLWlmICg9PyBkZWZhdWx0LWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCN0IC4gI3QpKSkKKyAg ICAocGFzcy1pZiAobm90ICg9PyBkZWZhdWx0LWNvbXBhcmF0b3IgJygjdCAuICN0KSAnKCNmIC4g I3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPT8gZGVmYXVsdC1jb21wYXJhdG9yICcoI3QgLiAj dCkgJygjdCAuICNmKSkpKQorICAgIChwYXNzLWlmICg8PyBkZWZhdWx0LWNvbXBhcmF0b3IgJygj ZiAuICN0KSAnKCN0IC4gI3QpKSkKKyAgICAocGFzcy1pZiAoPD8gZGVmYXVsdC1jb21wYXJhdG9y ICcoI3QgLiAjZikgJygjdCAuICN0KSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVsdC1j b21wYXJhdG9yICcoI3QgLiAjdCkgJygjdCAuICN0KSkpKQorICAgIChwYXNzLWlmIChub3QgKDw/ IGRlZmF1bHQtY29tcGFyYXRvciAnKCN0IC4gI3QpICcoI2YgLiAjdCkpKSkKKyAgICAocGFzcy1p ZiAobm90ICg8PyBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoI2YgI3QpICcjKCNmICNmKSkpKQorCisg ICAgKHBhc3MtaWYgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAnIygjdCAjdCkgJyMoI3QgI3QpKSkK KyAgICAocGFzcy1pZiAobm90ICg9PyBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoI3QgI3QpICcjKCNm ICN0KSkpKQorICAgIChwYXNzLWlmIChub3QgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAnIygjdCAj dCkgJyMoI3QgI2YpKSkpCisgICAgKHBhc3MtaWYgKDw/IGRlZmF1bHQtY29tcGFyYXRvciAnIygj ZiAjdCkgJyMoI3QgI3QpKSkKKyAgICAocGFzcy1pZiAoPD8gZGVmYXVsdC1jb21wYXJhdG9yICcj KCN0ICNmKSAnIygjdCAjdCkpKQorICAgIChwYXNzLWlmIChub3QgKDw/IGRlZmF1bHQtY29tcGFy YXRvciAnIygjdCAjdCkgJyMoI3QgI3QpKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVs dC1jb21wYXJhdG9yICcjKCN0ICN0KSAnIygjZiAjdCkpKSkKKyAgICAocGFzcy1pZiAobm90ICg8 PyBkZWZhdWx0LWNvbXBhcmF0b3IgJyMoI2YgI3QpICcjKCNmICNmKSkpKQorCisgICAgKHBhc3Mt aWYgKD0gKGNvbXBhcmF0b3ItaGFzaCBkZWZhdWx0LWNvbXBhcmF0b3IgI3QpIChib29sZWFuLWhh c2ggI3QpKSkKKyAgICAocGFzcy1pZiAoPSAoY29tcGFyYXRvci1oYXNoIGRlZmF1bHQtY29tcGFy YXRvciAjXHQpIChjaGFyLWhhc2ggI1x0KSkpCisgICAgKHBhc3MtaWYgKD0gKGNvbXBhcmF0b3It aGFzaCBkZWZhdWx0LWNvbXBhcmF0b3IgInQiKSAoc3RyaW5nLWhhc2ggInQiKSkpCisgICAgKHBh c3MtaWYgKD0gKGNvbXBhcmF0b3ItaGFzaCBkZWZhdWx0LWNvbXBhcmF0b3IgJ3QpIChzeW1ib2wt aGFzaCAndCkpKQorICAgIChwYXNzLWlmICg9IChjb21wYXJhdG9yLWhhc2ggZGVmYXVsdC1jb21w YXJhdG9yIDEwKSAobnVtYmVyLWhhc2ggMTApKSkKKyAgICAocGFzcy1pZiAoPSAoY29tcGFyYXRv ci1oYXNoIGRlZmF1bHQtY29tcGFyYXRvciAxMC4wKSAobnVtYmVyLWhhc2ggMTAuMCkpKQorCisg ICAgKGNvbXBhcmF0b3ItcmVnaXN0ZXItZGVmYXVsdCEKKyAgICAgKG1ha2UtY29tcGFyYXRvciBw cm9jZWR1cmU/IChsYW1iZGEgKGEgYikgI3QpIChsYW1iZGEgKGEgYikgI2YpIChsYW1iZGEgKG9i aikgMjAwKSkpCisgICAgKHBhc3MtaWYgKD0/IGRlZmF1bHQtY29tcGFyYXRvciAobGFtYmRhICgp ICN0KSAobGFtYmRhICgpICNmKSkpCisgICAgKHBhc3MtaWYgKG5vdCAoPD8gZGVmYXVsdC1jb21w YXJhdG9yIChsYW1iZGEgKCkgI3QpIChsYW1iZGEgKCkgI2YpKSkpCisgICAgKHBhc3MtaWYtZXF1 YWwgMjAwIChjb21wYXJhdG9yLWhhc2ggZGVmYXVsdC1jb21wYXJhdG9yIChsYW1iZGEgKCkgI3Qp KSkKKworICAgICkgOyBlbmQgY29tcGFyYXRvcnMvZGVmYXVsdAorCisgIDs7IFNSRkkgMTI4IGRv ZXMgbm90IGFjdHVhbGx5IHJlcXVpcmUgYSBjb21wYXJhdG9yJ3MgZm91ciBwcm9jZWR1cmVzCisg IDs7IHRvIGJlIGVxPyB0byB0aGUgcHJvY2VkdXJlcyBvcmlnaW5hbGx5IHBhc3NlZCB0byBtYWtl LWNvbXBhcmF0b3IuCisgIDs7IEZvciBpbnRlcm9wZXJhYmlsaXR5L2ludGVyY2hhbmdlYWJpbGl0 eSBiZXR3ZWVuIHRoZSBjb21wYXJhdG9ycworICA7OyBvZiBTUkZJIDExNCBhbmQgU1JGSSAxMjgs IHNvbWUgb2YgdGhlIHByb2NlZHVyZXMgcGFzc2VkIHRvCisgIDs7IG1ha2UtY29tcGFyYXRvciBt YXkgbmVlZCB0byBiZSB3cmFwcGVkIGluc2lkZSBhbm90aGVyIGxhbWJkYQorICA7OyBleHByZXNz aW9uIGJlZm9yZSB0aGV5J3JlIHJldHVybmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGFjY2Vzc29y LgorICA7OworICA7OyBTbyB0aGlzIG5leHQgZ3JvdXAgb2YgdGVzdHMgaXMgaW5jb3JyZWN0LCBo ZW5jZSBjb21tZW50ZWQgb3V0CisgIDs7IGFuZCByZXBsYWNlZCBieSBhIHNsaWdodGx5IGxlc3Mg bmFpdmUgZ3JvdXAgb2YgdGVzdHMuCisKKyAgIzsKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBh cmF0b3JzL2FjY2Vzc29ycyIKKyAgKGRlZmluZSB0dHAgKGxhbWJkYSAoeCkgI3QpKQorICAoZGVm aW5lIGVxcCAobGFtYmRhICh4IHkpICN0KSkKKyAgKGRlZmluZSBvcnAgKGxhbWJkYSAoeCB5KSAj dCkpCisgIChkZWZpbmUgaGYgKGxhbWJkYSAoeCkgMCkpCisgIChkZWZpbmUgY29tcCAobWFrZS1j b21wYXJhdG9yIHR0cCBlcXAgb3JwIGhmKSkKKyAgKHBhc3MtaWYtZXF1YWwgdHRwIChjb21wYXJh dG9yLXR5cGUtdGVzdC1wcmVkaWNhdGUgY29tcCkpCisgIChwYXNzLWlmLWVxdWFsIGVxcCAoY29t cGFyYXRvci1lcXVhbGl0eS1wcmVkaWNhdGUgY29tcCkpCisgIChwYXNzLWlmLWVxdWFsIG9ycCAo Y29tcGFyYXRvci1vcmRlcmluZy1wcmVkaWNhdGUgY29tcCkpCisgIChwYXNzLWlmLWVxdWFsIGhm IChjb21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY29tcCkpCisgICkgOyBlbmQgY29tcGFyYXRvcnMv YWNjZXNzb3JzCisKKyAgKHdpdGgtdGVzdC1wcmVmaXggImNvbXBhcmF0b3JzL2FjY2Vzc29ycyIK KyAgICAobGV0KiAoKHgxIDApCisgICAgICAgICAgICh4MiAwKQorICAgICAgICAgICAoeDMgMCkK KyAgICAgICAgICAgKHg0IDApCisgICAgICAgICAgICh0dHAgKGxhbWJkYSAoeCkgKHNldCEgeDEg MTExKSAjdCkpCisgICAgICAgICAgIChlcXAgKGxhbWJkYSAoeCB5KSAoc2V0ISB4MiAyMjIpICN0 KSkKKyAgICAgICAgICAgKG9ycCAobGFtYmRhICh4IHkpIChzZXQhIHgzIDMzMykgI3QpKQorICAg ICAgICAgICAoaGYgKGxhbWJkYSAoeCkgKHNldCEgeDQgNDQ0KSAwKSkKKyAgICAgICAgICAgKGNv bXAgKG1ha2UtY29tcGFyYXRvciB0dHAgZXFwIG9ycCBoZikpKQorICAgICAgKHBhc3MtaWYtZXF1 YWwgI3QgKGFuZCAoKGNvbXBhcmF0b3ItdHlwZS10ZXN0LXByZWRpY2F0ZSBjb21wKSB4MSkgICAo PSB4MSAxMTEpKSkKKyAgICAgIChwYXNzLWlmLWVxdWFsICN0IChhbmQgKChjb21wYXJhdG9yLWVx dWFsaXR5LXByZWRpY2F0ZSBjb21wKSB4MSB4MikgKD0geDIgMjIyKSkpCisgICAgICAocGFzcy1p Zi1lcXVhbCAjdCAoYW5kICgoY29tcGFyYXRvci1vcmRlcmluZy1wcmVkaWNhdGUgY29tcCkgeDEg eDMpICg9IHgzIDMzMykpKQorICAgICAgKHBhc3MtaWYtZXF1YWwgI3QgKGFuZCAoemVybz8gKChj b21wYXJhdG9yLWhhc2gtZnVuY3Rpb24gY29tcCkgeDEpKSAoPSB4NCA0NDQpKSkpCisgICAgKSA7 IGVuZCBjb21wYXJhdG9ycy9hY2Nlc3NvcnMKKworICAod2l0aC10ZXN0LXByZWZpeCAiY29tcGFy YXRvcnMvaW52b2tlcnMiCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0b3ItdGVzdC10eXBlIHJlYWwt Y29tcGFyYXRvciAzKSkKKyAgICAocGFzcy1pZiAoY29tcGFyYXRvci10ZXN0LXR5cGUgcmVhbC1j b21wYXJhdG9yIDMuMCkpCisgICAgKHBhc3MtaWYgKG5vdCAoY29tcGFyYXRvci10ZXN0LXR5cGUg cmVhbC1jb21wYXJhdG9yICIzLjAiKSkpCisgICAgKHBhc3MtaWYgKGNvbXBhcmF0b3ItY2hlY2st dHlwZSBib29sZWFuLWNvbXBhcmF0b3IgI3QpKQorICAgIChwYXNzLWlmLWV4Y2VwdGlvbiAiY2hl Y2stdHlwZSIKKyAgICAgICAgJyhtaXNjLWVycm9yIC4gIl5Db21wYXJhdG9yIHR5cGUgY2hlY2sg ZmFpbGVkIikKKyAgICAgIChjb21wYXJhdG9yLWNoZWNrLXR5cGUgYm9vbGVhbi1jb21wYXJhdG9y ICd0KSkKKyAgICApIDsgZW5kIGNvbXBhcmF0b3JzL2ludm9rZXJzCisKKyAgKHdpdGgtdGVzdC1w cmVmaXggImNvbXBhcmF0b3JzL2NvbXBhcmlzb24iCisgICAgKHBhc3MtaWYgKD0/IHJlYWwtY29t cGFyYXRvciAyIDIuMCAyKSkKKyAgICAocGFzcy1pZiAoPD8gcmVhbC1jb21wYXJhdG9yIDIgMy4w IDQpKQorICAgIChwYXNzLWlmICg+PyByZWFsLWNvbXBhcmF0b3IgNC4wIDMuMCAyKSkKKyAgICAo cGFzcy1pZiAoPD0/IHJlYWwtY29tcGFyYXRvciAyLjAgMiAzLjApKQorICAgIChwYXNzLWlmICg+ PT8gcmVhbC1jb21wYXJhdG9yIDMgMy4wIDIpKQorICAgIChwYXNzLWlmIChub3QgKD0/IHJlYWwt Y29tcGFyYXRvciAxIDIgMykpKQorICAgIChwYXNzLWlmIChub3QgKDw/IHJlYWwtY29tcGFyYXRv ciAzIDEgMikpKQorICAgIChwYXNzLWlmIChub3QgKD4/IHJlYWwtY29tcGFyYXRvciAxIDIgMykp KQorICAgIChwYXNzLWlmIChub3QgKDw9PyByZWFsLWNvbXBhcmF0b3IgNCAzIDMpKSkKKyAgICAo cGFzcy1pZiAobm90ICg+PT8gcmVhbC1jb21wYXJhdG9yIDMgNCA0LjApKSkKKworICAgICkgOyBl bmQgY29tcGFyYXRvcnMvY29tcGFyaXNvbgorCisgICh3aXRoLXRlc3QtcHJlZml4ICJjb21wYXJh dG9ycy9zeW50YXgiCisgICAgKHBhc3MtaWYtZXF1YWwgJ2xlc3MgKGNvbXBhcmF0b3ItaWY8PT4g cmVhbC1jb21wYXJhdG9yIDEgMiAnbGVzcyAnZXF1YWwgJ2dyZWF0ZXIpKQorICAgIChwYXNzLWlm LWVxdWFsICdlcXVhbCAoY29tcGFyYXRvci1pZjw9PiByZWFsLWNvbXBhcmF0b3IgMSAxICdsZXNz ICdlcXVhbCAnZ3JlYXRlcikpCisgICAgKHBhc3MtaWYtZXF1YWwgJ2dyZWF0ZXIgKGNvbXBhcmF0 b3ItaWY8PT4gcmVhbC1jb21wYXJhdG9yIDIgMSAnbGVzcyAnZXF1YWwgJ2dyZWF0ZXIpKQorICAg IChwYXNzLWlmLWVxdWFsICdsZXNzIChjb21wYXJhdG9yLWlmPD0+ICIxIiAiMiIgJ2xlc3MgJ2Vx dWFsICdncmVhdGVyKSkKKyAgICAocGFzcy1pZi1lcXVhbCAnZXF1YWwgKGNvbXBhcmF0b3ItaWY8 PT4gIjEiICIxIiAnbGVzcyAnZXF1YWwgJ2dyZWF0ZXIpKQorICAgIChwYXNzLWlmLWVxdWFsICdn cmVhdGVyIChjb21wYXJhdG9yLWlmPD0+ICIyIiAiMSIgJ2xlc3MgJ2VxdWFsICdncmVhdGVyKSkK KworICAgICkgOyBlbmQgY29tcGFyYXRvcnMvc3ludGF4CisKKyAgKHdpdGgtdGVzdC1wcmVmaXgg ImNvbXBhcmF0b3JzL2JvdW5kLXNhbHQiCisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/ICho YXNoLWJvdW5kKSkpCisgICAgKHBhc3MtaWYgKGV4YWN0LWludGVnZXI/IChoYXNoLXNhbHQpKSkK KyAgICAocGFzcy1pZiAoPCAoaGFzaC1zYWx0KSAoaGFzaC1ib3VuZCkpKQorICAgICM7ICAocGFz cy1pZi1lcXVhbCAoaGFzaC1zYWx0KSAoZmFrZS1zYWx0LWhhc2ggI3QpKSAgOyBubyBzdWNoIHRo aW5nIGFzIGZha2Utc2FsdC1oYXNoCisgICAgKSA7IGVuZCBjb21wYXJhdG9ycy9ib3VuZC1zYWx0 CisgICkKLS0gCjIuMTkuMQoK --00000000000027132d057f5ecbea--
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.