From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:403:4876::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id kL6IFPQqSmdG4QAAqHPOHw:P1 (envelope-from ) for ; Fri, 29 Nov 2024 20:58:28 +0000 Received: from aspmx1.migadu.com ([2001:41d0:403:4876::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id kL6IFPQqSmdG4QAAqHPOHw (envelope-from ) for ; Fri, 29 Nov 2024 21:58:28 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=hclhQHgb; dkim=fail ("headers rsa verify failed") header.d=proton.me header.s=protonmail header.b=Fw05FbZh; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id C5D7170073 for ; Fri, 29 Nov 2024 21:58:26 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tH845-0007tQ-Nf; Fri, 29 Nov 2024 15:58:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tH548-0001c2-Vj for guix-patches@gnu.org; Fri, 29 Nov 2024 12:46:05 -0500 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tH548-0007K2-Km for guix-patches@gnu.org; Fri, 29 Nov 2024 12:46:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:From:Date:To:Subject; bh=5BdJ2GZZrTwq59Xn8qI8n3DnwsHxQIOn2BX8rf3v+xo=; b=hclhQHgb63C8TLQwwIDGXAgUID+lCKG+WQhKYU99/z3wxKFmGSpEylLpS+pPpRQRmXgYLocH18PJ07hQVTGsy/97zYWNsozbtztDW7pnttSk6d1/W+SCu7Qb9M0QP95/PoSeRy3cUf/TqDDUgbQgN9qA++oJcW2/i/0KI8GcuadSQ5KfU+gfzmsVlXtUQ97tCGZU0EHT90wDvc7l/Soc9X3LUxqN9V90rv12wH7vIhU7ZgUC9NjCXIvJRwQGmTjaM2IuHmWumPWHcQDBtuGtkJE8is+D2jxrvcFfaUEqSW0WLe9HpEY+HXJGn0hETp3i22oQ+7d36qHW/p4/NCgRaA==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tH547-0005Tn-GZ for guix-patches@gnu.org; Fri, 29 Nov 2024 12:46:03 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#74609] [PATCH] Adding a fully-bootstrapped mono Resent-From: unmush Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 29 Nov 2024 17:46:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 74609 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 74609@debbugs.gnu.org X-Debbugs-Original-To: "guix-patches@gnu.org" Received: via spool by submit@debbugs.gnu.org id=B.173290233721004 (code B ref -1); Fri, 29 Nov 2024 17:46:03 +0000 Received: (at submit) by debbugs.gnu.org; 29 Nov 2024 17:45:37 +0000 Received: from localhost ([127.0.0.1]:44296 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tH53h-0005Sh-FF for submit@debbugs.gnu.org; Fri, 29 Nov 2024 12:45:37 -0500 Received: from lists.gnu.org ([209.51.188.17]:55242) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tH2Z9-0005ka-4U for submit@debbugs.gnu.org; Fri, 29 Nov 2024 10:05:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tH2Z7-0003dZ-PM for guix-patches@gnu.org; Fri, 29 Nov 2024 10:05:54 -0500 Received: from mail-40135.protonmail.ch ([185.70.40.135]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tH2Yk-0000pA-Do for guix-patches@gnu.org; Fri, 29 Nov 2024 10:05:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=protonmail; t=1732892717; x=1733151917; bh=5BdJ2GZZrTwq59Xn8qI8n3DnwsHxQIOn2BX8rf3v+xo=; h=Date:To:From:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector: List-Unsubscribe:List-Unsubscribe-Post; b=Fw05FbZh7y0wfyJ8cg7e19IyCNOcCahVjvLVXGv5sk0+4xm2sGULVQhbHYDVwqvgF mSNaVmP6MILbco29iQBSKHCKfn56Kr4NGj8dU+sImBwdgh0WSGE+p2CqqyiIyxLExe dS1BVl14Kr8lyAhG18yHcnysSoJ4hLzF+JCWKQsBhSyx9NRVi278I+TqGNg/klmjOF amI9DJAdXUF/CEZNIhk3xk6zJrlhvtWIliGKRE3wwWRkQ7YXbZ2n+FbNoCGMx9HU1p wxn1iyCgwxlqwfLnZZyJRvuYFIIvCitvV3RUbciOL8po7p4088xlHOzUdTwTikzSW2 ANDwy1yS7HmnQ== Date: Fri, 29 Nov 2024 15:05:09 +0000 Message-ID: Feedback-ID: 126986417:user:proton X-Pm-Message-ID: 6499f2f3bd38752c35c3f0b32ffba1249db73cd3 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A" Received-SPF: pass client-ip=185.70.40.135; envelope-from=unmush@proton.me; helo=mail-40135.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 29 Nov 2024 12:45:36 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-Mailman-Approved-At: Fri, 29 Nov 2024 15:58:09 -0500 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: unmush X-ACL-Warn: , unmush via Guix-patches From: unmush via Guix-patches via Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Spam-Score: -1.41 X-Spam-Score: -1.41 X-Migadu-Queue-Id: C5D7170073 X-Migadu-Scanner: mx10.migadu.com X-TUID: z/rKuKf8NZi1 --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable We used to have a mono package, but it was removed due to includingbootstra= p binaries (among others). =C2=A0This patch series introduces a full, 17-mono-package sequence that takes us from a mono-1.2.6 built fully from source to mono-6.12.0 built fully from source, using only packages that already have full bootstrap paths. =C2=A0I make no promise that this i= s the shortest or most optimal path, but it exists and I have verified it works. As I've spent what is probably an unreasonable amount of time working toward this, I thought I'd share some of my thoughts, experiences, and commentary. =C2=A0Sorry in advance if it gets a bit rambly or lecture-ish. * Prologue I started down this road because someone I'm working on a project with decided to depend on a C# package that requires C# 12.0 features, and my personal mono package based on the tarball releases (which include bootstrap binaries) only went up to C# 7.0. =C2=A0This meant that the C# package in question de facto required strictly Microsoft's (er, I mean, "the .NET foundation"'s) .NET implementation - hereafter referred to as "dotnet" - and a very recent version no less. =C2=A0The bootstrapping story with dotnet is very bad: https://github.com/dotnet/source-build/issues/1930. =C2=A0Even beginning to untangle it would probably require a relatively modern C# compiler, and something that at least sort of understands msbuild. =C2=A0And there's not much point to "bootstrapping" dotnet from something that isn't bootstrapped itself. =C2=A0So I figured I may as well start with mono. * History While mono is today probably the most well-known alternative to Microsoft's .NET offerings, it is not the only one. =C2=A0Indeed, in the early 2000s there were at least 2 competing free software implementations: Mono, and DotGNU's Portable.NET (abbreviated pnet). They differed in goals, licenses, and methods: Portable.NET was a GNU project concerned with, among other things, limiting the ability of Microsoft to impose vendor lock-in via its proprietary .NET implementation and software patents. =C2=A0As a GNU project, it used the GP= L for its runtime and compiler, and the GPL with a linking exception for its standard library, pnetlib. =C2=A0Mono, on the other hand, used a mix of many copyleft and permissive licenses: X11 for the standard library, GPL for the compiler (later dual-licensed to add an X11 option), and LGPL for the runtime, with GPL and LGPL code also offered "under commercial terms for when the GPL and the LGPL are not suitable". =C2=A0In 2016 after its acquisition by Microsoft, the runtime was relicensed to use the Expat (MIT) license. But perhaps most importantly to us, while Mono opted to write its C# compiler, mcs, in... C#, Portable.NET's runtime and C# compiler were both written in C. =C2=A0Portable.NET along with the entire DotGNU project was decommissioned in 2012, but the source is still available, and it still works fine (with a few modifications for compatibility with newer versions of its dependencies). =C2=A0In https://issues.guix.gnu.org/57625 Adam Faiz submitted patches to package pnet and pnetlib, along with one of their dependencies named treecc. =C2=A0These packages were based on the last release of Portable.NET, version 0.8.0, released in 2007. =C2=A0I initially used these packages as the basis for my bootstrap efforts, and even managed to get mono-1.2.6 built using them, but later discovered that using a more recent version from git made it much easier. =C2=A0For example, while pnet-0.8.0 can do pointer arithmetic inside unsafe code blocks, it doesn't support the +=3D or -=3D operators specifically, which requires lots of patching (after all, who would use x =3D x + y when you could do x+=3D y?). =C2=A0There are many other similar improvements in the = git version, so for this patch series I've decided to go with pnet-git. * The start After building mono-1.2.6, I tried a few later versions, and the third or fourth one would always fail with errors about missing methods. =C2= =A0It turns out that the reason for this is that, contrary to what their marketing suggests, C# and Java are not "write once, run everywhere". This is because their compilers rely on the details of the libraries that the program will be run with at compile-time. =C2=A0This is used, for example, to do overload resolution. =C2=A0Suppose, for example, that a certain implementation of the "=3D=3D" operator is present in version 1.0 o= f a library, and then in version 2.0 of a library a more specific implementation is introduced. =C2=A0Now code that is compiled against versi= on 2.0 may instead automatically reference the more-specific implementation, as is in accordance with the rules of C#. =C2=A0But when it is run with version 1.0, it will fail because that implementation doesn't exist. =C2=A0In my case, for some reason the initial mcs and core libraries being built to compile the rest of mono were being compiled against a 2.0 library and then run with a 1.0 library. =C2=A0It turns out that this was because mcs uses mono's code for producing assemblies (.NET dlls and exes), and mono decides which version to put in an assembly it writes based on "which runtime version" is being used, and that version is decided at startup based on... the version that was put in the assembly it is running. =C2=A0So for example, mono-1.9.1 would produ= ce 2.0 assemblies because mono-1.2.6 produced 2.0 assemblies because pnet produced 2.0 assemblies. =C2=A0So I modified mono's runtime in mono-1.9.1 t= o allow for this version to be overridden via environment variable, and set it to "v1.1.4322", and things went a lot more smoothly after that. >From there on it was mostly the usual trial-and-error process of identifying where things had bitrotted. =C2=A0I made sure to unvendor libgc wherever possible, though eventually by mono-4.9.0 they explicitly dropped support in their configure script for using any libgc other than what was bundled, so at that point I switched to using their homebrewed sgen garbage collector. * A concerning development Once I got to mono-2.11.4, though, things took a turn for the interesting: mono started using git submodules, and the (recursive? #t) clones were all failing. =C2=A0It turns out that this is because their submodules reference github.com using the git:// protocol. This is notable for a few reasons. First, github dropped support for the git:// protocol in 2021, so recursive clones won't work now. =C2=A0This means I have to explicitly list out every submodule, its commit, and its sha256 hash, for every mono version until they switched to using http or https. =C2=A0mono-2.11.4 has only 4 submodules, but that doesn't last for long: by mono-4.9.0 it has 14 submodules. =C2=A0A significant portion of these patches is just listing these submodules and their hashes. =C2=A0It's a bit annoying. The more concerning reason, though, is *why* github dropped support for the git:// protocol: it is unencrypted and unauthenticated. =C2=A0This is mitigated somewhat by the use of sha-1 hashes to identify commits in the referenced submodules, putting a significant computational burden on anyone who would try to alter what was fetched corresponding to a given submodule. =C2=A0Significantly more risky, though, is the process of *updating* submodules that use git:// URLs. =C2=A0It is quite unlikely that= a developer is going to independently clone one of the submodules over https, navigate to a desirable commit, copy the sha-1 hash, and manually update the submodule reference's commit. =C2=A0They're far more likely to r= un 'cd submodule; git pull; cd ..; git add submodule; git commit ...' or an equivalent. Of course, any changes a network man-in-the-middle might try to make here would still be reflected in the commit history, so even if a developer did that, they or any of their fellow committers could spot anything strange or malicious and point it out. =C2=A0Also, the changes couldn't be propagated to others trying to pull them who weren't on a path containing the MITM because the potentially-malicious commit wouldn't be present in the real submodule's repository. =C2=A0So the transparency of git clearly showing changes to text files, combined with the fact that surely no git hosting platform would just allow arbitrary entities to make whatever commits they want accessible under any arbitrary repository URL, rather mitigate this security issue. This usage of git:// URLs lasted all the way until September 28, 2021, when github's removal of support for it forced the developers to change them to https. * Meanwhile, in reality On November 28, 2016, mono added a submodule named roslyn-binaries. Unsurprisingly, it included binary blobs for Microsoft's Roslyn compiler (which I believe had been open-sourced shortly prior). =C2=A0From here on, mono's build system would default to using these binaries for building on little-endian systems (though another compiler could be specified with the --with-csc configure flag). =C2=A0I happen to know that it is extremely unlikely that many mono developers used this configure flag. I know this because the 5.0 series is an absolute pain in the neck to build from source, because they consistently depend on new C# features *before* they implement them. To go on a brief tangent: does anyone remember back when youtube-dl was temporarily taken down from github due to the RIAA's DMCA request? =C2= =A0Many were unhappy about that. =C2=A0One such unhappy person made news when they made the full contents of youtube-dl's repository available to access through the DMCA request repository: https://gist.github.com/lrvick/02088ee5466ca51116bdaf1e709ddd7c. =C2=A0It turns out that there are many actions that one can take on github that will make arbitrary commits available under arbitrary repository URLs. So, in reality, for the span of time from November 28, 2016 to September 28, 2021, anybody sitting on the network path between github and any mono developer updating the roslyn-binaries submodule could decide on any arbitrary new commit to be used. =C2=A0Of course, merely inspecting the diff for the commit will reveal nothing of use, because the contents are binary blobs. =C2=A0And not only are these blobs those of = a compiler, they are the blobs of a compiler that is sure to be used to compile another compiler, which will then be redistributed as an opaque, non-bootstrappable binary blob to be used for compiling other compilers. You would be hard-pressed to find a more fertile breeding ground for Ken Thompson / Trusting Trust attacks. =C2=A0If every agent of the NSA (and whatever other agencies, including those of other countries, had access to the appropriate network traffic) somehow failed to capitalize on 6 years of opportunity to compromise an entire software ecosystem using only a basic MITM of unencrypted traffic, they deserve to be sacked. Whether such an attack actually occurred or not, this is a case study in carelessness and why bootstrappability is so important; discovering all this made me quite worried about having used a mono version built from blobs previously, and has convinced me that, as time-wasting and tedious as this project has been, it is nevertheless probably an important one. * Another note on roslyn-binaries If you're going to write a self-hosting compiler, the least you can do is keep it self-hosting. =C2=A0Deciding to write a self-hosting compiler is= a valid choice, of course, with its own merits and demerits, but there is something bitterly poetic about mono starting out requiring specifically Microsoft's C# compiler in order to build (mono did its initial bootstrapping using Microsoft's proprietary csc), achieving independence through self-hosting, being acquired by Microsoft, and thereafter coming crawling back to Microsoft's C# compiler once more before eventually dying. The funny thing is that it's not even necessary. =C2=A0The dependencies on new C# features are all in mono's standard library (which increasingly borrowed code from Microsoft's corefx library), not in mono's compiler. * More binary submodules? Even before roslyn-binaries, there was binary-reference-assemblies, which contained prebuilt "reference" blobs for the various versions of the standard libraries. =C2=A0These exist, I assume, precisely because of t= he library incompatibility problems regarding overloading that I mentioned earlier. =C2=A0While later versions of mono included sources and a build system for producing these reference binaries, mono-4.9.0 and earlier did not. =C2=A0Mono's build system still demanded /something/ to install, though, so I told it to use the real standard library of the input mono version. =C2=A0When I did get to a mono version that at least claimed to support regenerating the reference binaries, I found that it didn't work with mcs due to differences in which libraries had to be referenced, so I had to patch it to add a bunch of references determined through trial and error. The xunit-binaries submodule was also added sometime before mono-5.1.0. This dependency makes it impossible to run the full test suite without binary blobs. =C2=A0Presumably for this reason, Debian elects to only run tests within the mono/mini/ and mono/tests/ subdirectories. =C2=A0For my part, I've disabled all tests except for those of mono-6.12.0, the final version, limited to the two aforementioned subdirectories. =C2=A0This is because it would take extra time for the builds, because several of the tests depend on binary blobs bundled into the mono repository itself (which my thorough cleaning of all dlls and exes from the sources removes), because a large chunk of the tests depend on binary blobs in xunit-binaries in later versions, and because "expect some test failures" is part of the mono documentation and I don't have the time to figure out for the mono developers every reason why each of 17 versions of their test suite is broken. * The long march through the 5.0s The 5.0 series was when Microsoft acquired Mono, and it shows. =C2=A0You'll notice I needed to introduce "pre-" packages for various versions because in several cases a tagged release could not build the following tagged release. =C2=A0For that matter, they couldn't build the pre- package either, but it at least took fewer patches to get them working. =C2=A0The reason for this is that Mono added a dependency on Microsoft's corefx library source code, and it usually started using C# features well before mcs was able to compile them. =C2=A0Because of this, despite taking = 8 versions to get from 1.2.6 to 4.9.0, it took another 8 versions to get through the 5.0 series, and 5 of them required nontrivial patching to massage the source into a form compilable by mcs. * The final stretch Eventually I realized that the dependencies on new features were all coming from corefx, not from mono's compiler. =C2=A0Consequently, the only reason for this particular bootstrap-hostile ordering of builds is that it happened to be the order the mono devs committed things. =C2=A0So I just cherry-picked every commit I could find touching mcs/mcs (magit was quite useful for this) and applied it to 5.10.0 to produce what is essentially the 6.12.0 compiler, then used it to jump straight to building 6.12.0. Use of this technique earlier on in the bootstrap process may be of interest to anyone looking to shorten the chain of packages. * The finishing touches My initial goal was to package dotnet, and I had tried to progress toward that from mono-4.9.0 for a period, but with no success. =C2=A0During that time, though, I did encounter a bug in mono's xbuild condition parser, which I wrote a patch for, and included in mono-6.12.0. I also discovered that xbuild would wrongly complain about missing references even when the proper assemblies were in MONO_PATH or MONO_GAC_PREFIX, because xbuild would erroneously only consider the path /gnu/store/...mono-6.12.0/lib/mono/gac when looking for global assembly caches, completely ignoring MONO_GAC_PREFIX. =C2=A0So I wrote a patch to fi= x that, and included it in mono-6.12.0. Having witnessed how much nicer it is to package things that use rpath / runpath than things that use environment variables (like python) and therefore require constant wrapping of executables and use of propagated-inputs, I devised a patch that would extend mono's per-assembly config files to support a element. =C2=A0For example= , if you have a file /tmp/dir2/test2.exe, and there is also a file /tmp/dir2/test2.exe.config, and its contents are =C2=A0 and it references test1.dll, it will first look for it at /tmp/dir1/test1.dll. =C2=A0Note that, of course, test1.dll still needs to b= e accessible to the compiler at compile-time through MONO_PATH or an explicitly-specified path passed on the mcs command line. It is my hope that this feature will be of use to anybody interested in developing a build system. * Future work Mono had several difficult points in bootstrapping and packaging, but at the end of the day it still met the basic description of a software package: well-defined environment-supplied inputs and sources, a user-supplied install prefix, and files installed under that prefix. The dotnet world is an entirely different beast. =C2=A0The first step of mo= st build systems I have encountered from that realm is downloading an entire toolchain, among other dependencies, as a binary blob. =C2=A0They heavily depend on the exact packages they specify being available exactly where they say to install them. =C2=A0There is no "install", there are no "install directories" to my knowledge. =C2=A0A build that doesn't contact nuget.org is an abberation. =C2=A0I am at a loss how to build these things, much less package them. =C2=A0I badly need help. * Closing thoughts "You wish now that our places had been exchanged. =C2=A0That I had died, an= d DotGNU had lived?" "... Yes. =C2=A0I wish that." Maintenance of Mono was recently transferred over to WineHQ. =C2=A0With tha= t announcement this statement was placed at https://www.mono-project.com: "We want to recognize that the Mono Project was the first .NET implementation on Android, iOS, Linux, and other operating systems. The Mono Project was a trailblazer for the .NET platform across many operating systems. It helped make cross-platform .NET a reality and enabled .NET in many new places and we appreciate the work of those who came before us." I would like to clarify that, according to Miguel de Icaza himself (https://www.mono-project.com/archived/mailpostearlystory/), DotGNU "started working on the system about the same time". =C2=A0According to https://lwn.net/2002/0103/a/dotgnu.php3 Portable.NET began "in January 2001". =C2=A0While it's unclear exactly when Portable.NET reached various milestones, and the significance of the various milestones varies somewhat (for example, mono probably does not care that Portable.NET also includes a Java and C compiler), I think that there is cause to dispute the claim that Mono was "the first" .NET implementation on Linux. On a related note, if we haven't looked at the possibility of using Portable.NET in the Java bootstrap process, it may be worth visiting at some point. Thank you for your time, I think I need to get some rest now. - unmush --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0001-gnu-add-treecc.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-gnu-add-treecc.patch RnJvbSAzZjhhZjY1ZjcyODcxZDYxZmE4NWU2OTM5ZjQ2Y2I4ZGFjMTg1YzcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNi OGRhYzE4NWM3MC4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkZyb206IHVubXVz aCA8dW5tdXNoQGhhc2hiYW5nLnNoPgpEYXRlOiBUdWUsIDI2IE5vdiAyMDI0IDEyOjEzOjMyClN1 YmplY3Q6IFtQQVRDSCAwMS8yMV0gZ251OiBhZGQgdHJlZWNjLgoKKiBnbnUvcGFja2FnZXMvZG90 bmV0LnNjbTogbmV3IG1vZHVsZS4KICAodHJlZWNjKTogbmV3IHBhY2thZ2UuCiogZ251L2xvY2Fs Lm1rIChHTlVfU1lTVEVNX01PRFVMRVMpOiBhZGQgbmV3IG1vZHVsZS4KCkNoYW5nZS1JZDogSWYz ZjM2NjE1Nzc0Yzg3MmYzMDE1NTEwZWIwOGVjNTM2NTdlNGVkZmIKLS0tCiBnbnUvbG9jYWwubWsg ICAgICAgICAgICB8ICAxICsKIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtIHwgNjIgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNjMgaW5z ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtCgpk aWZmIC0tZ2l0IGEvZ251L2xvY2FsLm1rIGIvZ251L2xvY2FsLm1rCmluZGV4IGJkMGY4NTBkNTMu LjBhMTYxNzQ0OGMgMTAwNjQ0Ci0tLSBhL2dudS9sb2NhbC5taworKysgYi9nbnUvbG9jYWwubWsK QEAgLTI0OSw2ICsyNDksNyBAQCBHTlVfU1lTVEVNX01PRFVMRVMgPQkJCQlcCiAgICVEJS9wYWNr YWdlcy9kb2Nib29rLnNjbQkJCVwKICAgJUQlL3BhY2thZ2VzL2RvY2tlci5zY20JCQlcCiAgICVE JS9wYWNrYWdlcy9kb2N1bWVudGF0aW9uLnNjbQkJXAorICAlRCUvcGFja2FnZXMvZG90bmV0LnNj bQkJCVwKICAgJUQlL3BhY2thZ2VzL2R2dG0uc2NtCQkJCVwKICAgJUQlL3BhY2thZ2VzL2Vhc3ly cGcuc2NtCQkJXAogICAlRCUvcGFja2FnZXMvZWJvb2suc2NtCQkJXApkaWZmIC0tZ2l0IGEvZ251 L3BhY2thZ2VzL2RvdG5ldC5zY20gYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zMDg0ZTFjZjNhCi0tLSAvZGV2L251bGwKKysr IGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KQEAgLTAsMCArMSw2MiBAQAorKGRlZmluZS1tb2R1 bGUgKGdudSBwYWNrYWdlcyBkb3RuZXQpCisgICM6dXNlLW1vZHVsZSAoKGd1aXggbGljZW5zZXMp ICM6cHJlZml4IGxpY2Vuc2U6KQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBhc3NlbWJs eSkKKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgYmlzb24pCisgICM6dXNlLW1vZHVsZSAo Z251IHBhY2thZ2VzIGNoZWNrKQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBjbWFrZSkK KyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgY29tcHJlc3Npb24pCisgICM6dXNlLW1vZHVs ZSAoZ251IHBhY2thZ2VzIGN1cmwpCisgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGZsZXgp CisgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGdldHRleHQpCisgICM6dXNlLW1vZHVsZSAo Z251IHBhY2thZ2VzIHBrZy1jb25maWcpCisgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGJh c2UpCisgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGF1dG90b29scykKKyAgIzp1c2UtbW9k dWxlIChnbnUgcGFja2FnZXMgYmR3LWdjKQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBm b250dXRpbHMpCisgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGdsaWIpCisgICM6dXNlLW1v ZHVsZSAoZ251IHBhY2thZ2VzIGljdTRjKQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBp bnN0cnVtZW50YXRpb24pCisgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGtlcmJlcm9zKQor ICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBsaWJmZmkpCisgICM6dXNlLW1vZHVsZSAoZ251 IHBhY2thZ2VzIGxpbnV4KQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBsbHZtKQorICAj OnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBwZXJsKQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNr YWdlcyBwaG90bykKKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgdGV4aW5mbykKKyAgIzp1 c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgdGxzKQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdl cyBpbWFnZSkKKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ3RrKQorICAjOnVzZS1tb2R1 bGUgKGdudSBwYWNrYWdlcyBweXRob24pCisgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHht bCkKKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgeG9yZykKKyAgIzp1c2UtbW9kdWxlIChn bnUgcGFja2FnZXMgdmVyc2lvbi1jb250cm9sKQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdl cykKKyAgIzp1c2UtbW9kdWxlIChndWl4IG1vZHVsZXMpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBw YWNrYWdlcykKKyAgIzp1c2UtbW9kdWxlIChndWl4IGRvd25sb2FkKQorICAjOnVzZS1tb2R1bGUg KGd1aXggZ2l0LWRvd25sb2FkKQorICAjOnVzZS1tb2R1bGUgKGd1aXggZ2V4cCkKKyAgIzp1c2Ut bW9kdWxlIChndWl4IHV0aWxzKQorICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIGdu dSkKKyAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBweXRob24pCisgICM6dXNlLW1v ZHVsZSAoaWNlLTkgbWF0Y2gpKQorCisoZGVmaW5lLXB1YmxpYyB0cmVlY2MKKyAgKHBhY2thZ2UK KyAgICAobmFtZSAidHJlZWNjIikKKyAgICAodmVyc2lvbiAiMC4zLjEwIikKKyAgICAoc291cmNl IChvcmlnaW4KKyAgICAgICAgICAgICAgKG1ldGhvZCB1cmwtZmV0Y2gpCisgICAgICAgICAgICAg ICh1cmkgKHN0cmluZy1hcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vZG93bmxv YWQuc2F2YW5uYWguZ251Lm9yZy9yZWxlYXNlcy9kb3RnbnUtcG5ldC90cmVlY2MtIgorICAgICAg ICAgICAgICAgICAgICB2ZXJzaW9uICIudGFyLmd6IikpCisgICAgICAgICAgICAgIChzaGEyNTYK KyAgICAgICAgICAgICAgIChiYXNlMzIKKyAgICAgICAgICAgICAgICAiMXJ6Z25zcGcyeGNjZHEz cXN4MHZpM2oyOGg0cWtyemJyam5oenZubnkzNGZqZmsyMTdheSIpKSkpCisgICAgKGJ1aWxkLXN5 c3RlbSBnbnUtYnVpbGQtc3lzdGVtKQorICAgIChob21lLXBhZ2UgImh0dHBzOi8vd3d3LmdudS5v cmcvc29mdHdhcmUvZG90Z251IikKKyAgICAoc3lub3BzaXMgIlRyZWUgQ29tcGlsZXItQ29tcGls ZXIuIikKKyAgICAoZGVzY3JpcHRpb24gIlRoZSB0cmVlY2MgcHJvZ3JhbSBpcyBkZXNpZ25lZCB0 byBhc3Npc3QgaW4gdGhlIGRldmVsb3BtZW50CitvZiBjb21waWxlcnMgYW5kIG90aGVyIGxhbmd1 YWdlLWJhc2VkIHRvb2xzLiAgSXQgbWFuYWdlcyB0aGUgZ2VuZXJhdGlvbiBvZgorY29kZSB0byBo YW5kbGUgYWJzdHJhY3Qgc3ludGF4IHRyZWVzIGFuZCBvcGVyYXRpb25zIHVwb24gdGhlIHRyZWVz LiIpCisgICAgKGxpY2Vuc2UgbGljZW5zZTpncGwyKykpKQotLSAKMi40NS4yCgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0005-gnu-Add-mono-1.9.1.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0005-gnu-Add-mono-1.9.1.patch RnJvbSA2ZDNiMGQ1YWQxMWM5ZTUwOGQyMWQzZjU0MTNjMGViYzE5ZjQ5MTdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8NmQzYjBkNWFkMTFjOWU1MDhkMjFkM2Y1NDEzYzBl YmMxOWY0OTE3ZS4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTI6 NTk6NDkKU3ViamVjdDogW1BBVENIIDA1LzIxXSBnbnU6IEFkZCBtb25vLTEuOS4xLgoKKiBnbnUv cGFja2FnZXMvZG90bmV0LnNjbSAobW9uby0xLjkuMSk6IE5ldyB2YXJpYWJsZS4KKiBnbnUvcGFj a2FnZXMvcGF0Y2hlcy9tb25vLTEuOS4xLWFkZC1NT05PX0NSRUFURV9JTUFHRV9WRVJTSU9OLnBh dGNoOgogIE5ldyBwYXRjaC4KKiBnbnUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTEuOS4xLWZpeGVz LnBhdGNoOiBOZXcgcGF0Y2guCiogZ251L2xvY2FsLm1rIChkaXN0X3BhdGNoX0RBVEEpOiByZWdp c3RlciBuZXcgcGF0Y2hlcy4KCkNoYW5nZS1JZDogSTE5YzE2MDQxZmE0NDE5YTdjMzFjYTUxMGRh NmYzM2EwMzc4NWY1ODQKLS0tCiBnbnUvbG9jYWwubWsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArCiBnbnUvcGFja2FnZXMvZG90bmV0LnNjbSAgICAgICAgICAgICAgICAg ICAgICAgfCA2MCArKysrKysrKysrKysrKysrKysrCiAuLi4tMS45LjEtYWRkLU1PTk9fQ1JFQVRF X0lNQUdFX1ZFUlNJT04ucGF0Y2ggfCAxNCArKysrKwogZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9u by0xLjkuMS1maXhlcy5wYXRjaCAgIHwgNTkgKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNo YW5nZWQsIDEzNSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2Vz L3BhdGNoZXMvbW9uby0xLjkuMS1hZGQtTU9OT19DUkVBVEVfSU1BR0VfVkVSU0lPTi5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tMS45LjEtZml4ZXMu cGF0Y2gKCmRpZmYgLS1naXQgYS9nbnUvbG9jYWwubWsgYi9nbnUvbG9jYWwubWsKaW5kZXggZmFk YTQ5NzFmYi4uODUyYjMzZTBhYSAxMDA2NDQKLS0tIGEvZ251L2xvY2FsLm1rCisrKyBiL2dudS9s b2NhbC5tawpAQCAtMTc2MSw2ICsxNzYxLDggQEAgZGlzdF9wYXRjaF9EQVRBID0JCQkJCQlcCiAg ICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vZHVsZS1pbml0LXRvb2xzLW1vZHVsZWRpci5wYXRjaAlc CiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbmVyby11c2Utc3lzdGVtLW1pbml1cG5wYy5wYXRj aAkJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby0xLjIuNi1ib290c3RyYXAucGF0Y2gJ CVwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby0xLjkuMS1hZGQtTU9OT19DUkVBVEVfSU1B R0VfVkVSU0lPTi5wYXRjaAkJXAorICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTEuOS4xLWZp eGVzLnBhdGNoCQkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb3NhaWNhdGNoZXItdW5idW5k bGUtaHRzbGliLnBhdGNoCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbXJyZXNjdWUtc3VwcG9y dC1sb3ZlLTExLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL210b29scy1tZm9ybWF0 LXVuaW5pdGlhbGl6ZWQucGF0Y2gJXApkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL2RvdG5ldC5z Y20gYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCA1NjhlNTM3MzhmLi40OTM2YTEzOTRm IDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQorKysgYi9nbnUvcGFja2FnZXMv ZG90bmV0LnNjbQpAQCAtMzYyLDMgKzM2Miw2MyBAQCAoZGVmaW5lLXB1YmxpYyBtb25vLTEuMi42 CiAgICAgICAgICAgICAgIGxpY2Vuc2U6bGdwbDIuMCsgOzsgbm90ZTogLi9tY3MvTElDRU5TRS5M R1BMIHNwZWNpZmllcyBubyB2ZXJzaW9uCiAgICAgICAgICAgICAgIDs7IG1jcy9qYXkKICAgICAg ICAgICAgICAgbGljZW5zZTpic2QtNCkpKSkKKworKGRlZmluZS1wdWJsaWMgbW9uby0xLjkuMQor ICAocGFja2FnZQorICAgIChpbmhlcml0IG1vbm8tMS4yLjYpCisgICAgKHZlcnNpb24gIjEuOS4x IikKKyAgICAobmFtZSAibW9ubyIpCisgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAg IChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAodXJpCisgICAgICAgICAgICAgICAo Z2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0bGFiLndpbmVo cS5vcmcvbW9uby9tb25vLmdpdCIpCisgICAgICAgICAgICAgICAgKGNvbW1pdCAoc3RyaW5nLWFw cGVuZCAibW9uby0iICIxLjkuMS4xIikpKSkKKyAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0 LWZpbGUtbmFtZSBuYW1lIHZlcnNpb24pKQorICAgICAgICAgICAgICAoc2hhMjU2CisgICAgICAg ICAgICAgICAoYmFzZTMyCisgICAgICAgICAgICAgICAgIjBzMW4zemRoYzJhbGs5c214ZmRsMWtq ejdsejJwMTlnczBrczRoZ3I4NjRqbG1mMTNid3MiKSkKKyAgICAgICAgICAgICAgKG1vZHVsZXMg JygoZ3VpeCBidWlsZCB1dGlscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWNlLTkgc3Ry aW5nLWZ1bikpKQorICAgICAgICAgICAgICAoc25pcHBldCBwcmVwYXJlLW1vbm8tc291cmNlKQor ICAgICAgICAgICAgICAocGF0Y2hlcworICAgICAgICAgICAgICAgKHNlYXJjaC1wYXRjaGVzCisg ICAgICAgICAgICAgICAgIm1vbm8tMS45LjEtZml4ZXMucGF0Y2giCisgICAgICAgICAgICAgICAg Im1vbm8tMS45LjEtYWRkLU1PTk9fQ1JFQVRFX0lNQUdFX1ZFUlNJT04ucGF0Y2giKSkpKQorICAg IChuYXRpdmUtaW5wdXRzCisgICAgIChtb2RpZnktaW5wdXRzIChwYWNrYWdlLW5hdGl2ZS1pbnB1 dHMgbW9uby0xLjIuNikKKyAgICAgICAoZGVsZXRlICJwbmV0LWdpdCIpCisgICAgICAgKGRlbGV0 ZSAicG5ldGxpYi1naXQiKQorICAgICAgIChwcmVwZW5kIG1vbm8tMS4yLjYpCisgICAgICAgKGFw cGVuZCB3aGljaCkKKyAgICAgICA7OyBuZWVkZWQgZm9yIHRlc3RzCisgICAgICAgKGFwcGVuZCBw ZXJsKSkpCisgICAgKGFyZ3VtZW50cworICAgICAoc3Vic3RpdHV0ZS1rZXl3b3JkLWFyZ3VtZW50 cyAocGFja2FnZS1hcmd1bWVudHMgbW9uby0xLjIuNikKKyAgICAgICAoKCM6bWFrZS1mbGFncyBf ICNmKQorICAgICAgICAjfihsaXN0ICJDQz1nY2MiICJWPTEiKSkKKyAgICAgICAoKCM6cGhhc2Vz IHBoYXNlcyAjfiVzdGFuZGFyZC1waGFzZXMpCisgICAgICAgICN+KG1vZGlmeS1waGFzZXMgIyRw aGFzZXMKKyAgICAgICAgICAgIChhZGQtYmVmb3JlICdjb25maWd1cmUgJ3NldC1jZmxhZ3MKKyAg ICAgICAgICAgICAgKGxhbWJkYSBfCisgICAgICAgICAgICAgICAgOzsgYXBwYXJlbnRseSBjYW4n dCBiZSBzZXQgdmlhIG1ha2UgZmxhZ3MgaW4gdGhpcyB2ZXJzaW9uCisgICAgICAgICAgICAgICAg KGxldCAoKG9yaWdpbmFsIChnZXRlbnYgIkNGTEFHUyIpKSkKKyAgICAgICAgICAgICAgICAgIChz ZXRlbnYgIkNGTEFHUyIgKHN0cmluZy1hcHBlbmQgKG9yIG9yaWdpbmFsICIiKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgb3JpZ2luYWwgIiAi ICIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi LURBUkdfTUFYPTUwMCIpKSkpKQorICAgICAgICAgICAgKGFkZC1iZWZvcmUgJ2NvbmZpZ3VyZSAn c2V0LWNyZWF0ZS1pbWFnZS12ZXJzaW9uCisgICAgICAgICAgICAgIChsYW1iZGEgXworICAgICAg ICAgICAgICAgIDs7IHBuZXQgcHJvZHVjZXMgdjIueCBhc3NlbWJsaWVzLiAgTW9ubyBkb2VzIHRo aXMgd2VpcmQgdGhpbmcKKyAgICAgICAgICAgICAgICA7OyB3aGVyZSBpdCBhbHdheXMgcHJvZHVj ZXMgYXNzZW1ibGllcyBvZiB0aGUgc2FtZSB2ZXJzaW9uIGFzCisgICAgICAgICAgICAgICAgOzsg dGhlIHJ1bnRpbWUgdGhhdCBpcyBydW5uaW5nIGl0LCB3aGljaCBpcyBiYXNlZCBvbiB0aGUKKyAg ICAgICAgICAgICAgICA7OyB2ZXJzaW9uIG9mIHRoZSBhc3NlbWJseSB0aGF0IGl0IGxvYWRlZCwg d2hpY2ggaXMgYmFzZWQgb24KKyAgICAgICAgICAgICAgICA7OyB3aGF0IGl0IGRlY2lkZWQgZm9y IHRoZSBwcmV2aW91cyBjb21waWxlci4uLiBvbiBhbmQgb24gYWxsCisgICAgICAgICAgICAgICAg OzsgdGhlIHdheSBiYWNrIHRvIHBuZXQuICBUaGlzIGJyZWFrcyB0aGF0IGNoYWluLCBiZWNhdXNl CisgICAgICAgICAgICAgICAgOzsgb3RoZXJ3aXNlIGl0IGVuZHMgdXAgY29tcGlsaW5nIHRoZSBp bml0aWFsIG1jcyBhZ2FpbnN0IC5ORVQKKyAgICAgICAgICAgICAgICA7OyAyLjAgbGlicmFyaWVz IGFuZCB0aGVuIHJ1bm5pbmcgd2l0aCAuTkVUIDEuMCBsaWJyYXJpZXMuCisgICAgICAgICAgICAg ICAgKHNldGVudiAiTU9OT19DUkVBVEVfSU1BR0VfVkVSU0lPTiIgInYxLjEuNDMyMiIpKSkKKyAg ICAgICAgICAgIChhZGQtYWZ0ZXIgJ3VucGFjayAncGF0Y2gtdGVzdC1kcml2ZXItc2hlYmFuZwor ICAgICAgICAgICAgICAobGFtYmRhIF8KKyAgICAgICAgICAgICAgICAocGF0Y2gtc2hlYmFuZyAi bW9uby90ZXN0cy90ZXN0LWRyaXZlciIpKSkpKQorICAgICAgICgoIzp0ZXN0cz8gXyAjZikgI2Yp CisgICAgICAgKCgjOnBhcmFsbGVsLXRlc3RzPyBfICNmKSAjZikpKSkpCmRpZmYgLS1naXQgYS9n bnUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTEuOS4xLWFkZC1NT05PX0NSRUFURV9JTUFHRV9WRVJT SU9OLnBhdGNoIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby0xLjkuMS1hZGQtTU9OT19DUkVB VEVfSU1BR0VfVkVSU0lPTi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi4xZWVmMDU0OGNhCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMv bW9uby0xLjkuMS1hZGQtTU9OT19DUkVBVEVfSU1BR0VfVkVSU0lPTi5wYXRjaApAQCAtMCwwICsx LDE0IEBACitkaWZmIC0tZ2l0IGEvbW9uby9tZXRhZGF0YS9yZWZsZWN0aW9uLmMgYi9tb25vL21l dGFkYXRhL3JlZmxlY3Rpb24uYworaW5kZXggY2UwNTNiMGVmNDkuLjdjNTFmMjBjNGNmIDEwMDY0 NAorLS0tIGEvbW9uby9tZXRhZGF0YS9yZWZsZWN0aW9uLmMKKysrKyBiL21vbm8vbWV0YWRhdGEv cmVmbGVjdGlvbi5jCitAQCAtNDMzNiw2ICs0MzM2LDkgQEAgY3JlYXRlX2R5bmFtaWNfbW9ub19p bWFnZSAoTW9ub0R5bmFtaWNBc3NlbWJseSAqYXNzZW1ibHksIGNoYXIgKmFzc2VtYmx5X25hbWUs IGMKKyAKKyAJY29uc3QgY2hhciAqdmVyc2lvbiA9IG1vbm9fZ2V0X3J1bnRpbWVfaW5mbyAoKS0+ cnVudGltZV92ZXJzaW9uOworIAorKyAgICAgICAgY2hhciAqZW52X3ZlciA9IGdldGVudigiTU9O T19DUkVBVEVfSU1BR0VfVkVSU0lPTiIpOworKyAgICAgICAgaWYgKGVudl92ZXIpIHZlcnNpb24g PSBlbnZfdmVyOworKworICNpZiBIQVZFX0JPRUhNX0dDCisgCWltYWdlID0gR0NfTUFMTE9DIChz aXplb2YgKE1vbm9EeW5hbWljSW1hZ2UpKTsKKyAjZWxzZQpkaWZmIC0tZ2l0IGEvZ251L3BhY2th Z2VzL3BhdGNoZXMvbW9uby0xLjkuMS1maXhlcy5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVz L21vbm8tMS45LjEtZml4ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uMTYzNTNlYTc0MQotLS0gL2Rldi9udWxsCisrKyBiL2dudS9wYWNrYWdlcy9wYXRjaGVz L21vbm8tMS45LjEtZml4ZXMucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorZGlmZiAtLWdpdCBhL2Rh dGEvbW9uby5wYy5pbiBiL2RhdGEvbW9uby5wYy5pbgoraW5kZXggNmRhMDk2MGRiMmQuLmQ0M2Ji MTg3MjE4IDEwMDY0NAorLS0tIGEvZGF0YS9tb25vLnBjLmluCisrKysgYi9kYXRhL21vbm8ucGMu aW4KK0BAIC03LDYgKzcsNiBAQCBzeXNjb25mZGlyPUBzeXNjb25mZGlyQAorIE5hbWU6IE1vbm8K KyBEZXNjcmlwdGlvbjogTW9ubyBSdW50aW1lCisgVmVyc2lvbjogQFZFUlNJT05ACistUmVxdWly ZXM6IGdsaWItMi4wIGd0aHJlYWQtMi4wCisrUmVxdWlyZXM6IGdsaWItMi4wIGd0aHJlYWQtMi4w IGJkdy1nYworIExpYnM6IC1MJHtsaWJkaXJ9IEBleHBvcnRfbGRmbGFnc0AgLWxtb25vIEBsaWJt b25vX2xkZmxhZ3NACisgQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQGxpYm1vbm9fY2ZsYWdzQAor ZGlmZiAtLWdpdCBhL21vbm8tdW5pbnN0YWxsZWQucGMuaW4gYi9tb25vLXVuaW5zdGFsbGVkLnBj LmluCitpbmRleCA3ZmEzZjEyZGM5MS4uMmEwNzM0MzYyZmQgMTAwNjQ0CistLS0gYS9tb25vLXVu aW5zdGFsbGVkLnBjLmluCisrKysgYi9tb25vLXVuaW5zdGFsbGVkLnBjLmluCitAQCAtMSw2ICsx LDYgQEAKKyBOYW1lOiBNb25vCisgRGVzY3JpcHRpb246IE1vbm8gUnVudGltZQorIFZlcnNpb246 IEBWRVJTSU9OQAorLVJlcXVpcmVzOiBnbGliLTIuMCBndGhyZWFkLTIuMAorK1JlcXVpcmVzOiBn bGliLTIuMCBndGhyZWFkLTIuMCBiZHctZ2MKKyBMaWJzOiAtTEBtb25vX2J1aWxkX3Jvb3RAL21v bm8vbWluaS8ubGlicyBAZXhwb3J0X2xkZmxhZ3NAIC1sbW9ubyBAbGlibW9ub19sZGZsYWdzQAor IENmbGFnczogLUlAYWJzX3RvcF9zcmNkaXJAIC1JQGFic190b3Bfc3JjZGlyQC9tb25vIEBsaWJt b25vX2NmbGFnc0AKK2RpZmYgLS1naXQgYS9tb25vL21ldGFkYXRhL01ha2VmaWxlLmFtIGIvbW9u by9tZXRhZGF0YS9NYWtlZmlsZS5hbQoraW5kZXggMmU0ODAxOTBjOGMuLjkwZDBmNjE5OTU5IDEw MDY0NAorLS0tIGEvbW9uby9tZXRhZGF0YS9NYWtlZmlsZS5hbQorKysrIGIvbW9uby9tZXRhZGF0 YS9NYWtlZmlsZS5hbQorQEAgLTE1Nyw3ICsxNTcsNiBAQCBsaWJtb25vcnVudGltZWluY2x1ZGVf SEVBREVSUyA9IFwKKyAJb2JqZWN0LmgJXAorIAlleGNlcHRpb24uaAlcCisgCXByb2ZpbGVyLmgJ XAorLQlhcHBkb21haW4uaAlcCisgCW1vbm8tY29uZmlnLmgJXAorIAlkZWJ1Zy1oZWxwZXJzLmgJ XAorIAltZW1wb29sLmgKK2RpZmYgLS1naXQgYS9tb25vL21pbmkvZHJpdmVyLmMgYi9tb25vL21p bmkvZHJpdmVyLmMKK2luZGV4IGZmYTRiNWU1ZTY5Li44NWE5NTQ5NjBlYiAxMDA2NDQKKy0tLSBh L21vbm8vbWluaS9kcml2ZXIuYworKysrIGIvbW9uby9taW5pL2RyaXZlci5jCitAQCAtMTAzMyw2 ICsxMDMzLDcgQEAgbW9ub19tYWluIChpbnQgYXJnYywgY2hhciogYXJndltdKQorICNlbmRpZgor IAlpZiAoIWdfdGhyZWFkX3N1cHBvcnRlZCAoKSkKKyAJCWdfdGhyZWFkX2luaXQgKE5VTEwpOwor KyAgICAgICAgR0NfYWxsb3dfcmVnaXN0ZXJfdGhyZWFkcygpOworIAorIAlpZiAobW9ub19ydW5u aW5nX29uX3ZhbGdyaW5kICgpICYmIGdldGVudiAoIk1PTk9fVkFMR1JJTkRfTEVBS19DSEVDSyIp KSB7CisgCQlHTWVtVlRhYmxlIG1lbV92dGFibGU7CitkaWZmIC0tZ2l0IGEvcnVudGltZS9NYWtl ZmlsZS5hbSBiL3J1bnRpbWUvTWFrZWZpbGUuYW0KK2luZGV4IGUzYThhMjFlOWUyLi41ODdiOWY0 YWE3OSAxMDA2NDQKKy0tLSBhL3J1bnRpbWUvTWFrZWZpbGUuYW0KKysrKyBiL3J1bnRpbWUvTWFr ZWZpbGUuYW0KK0BAIC0xLDYgKzEsMyBAQAorLSMgaGFjayB0byBwcmV2ZW50ICdjaGVjaycgZnJv bSBkZXBlbmRpbmcgb24gJ2FsbCcKKy1BVVRPTUFLRV9PUFRJT05TID0gY3lnbnVzCistCisgdG1w aW5zdCA9IF90bXBpbnN0CisgCisgbm9pbnN0X1NDUklQVFMgPSBtb25vLXdyYXBwZXIgbW9ub2Rp cy13cmFwcGVyIHNlbWRlbC13cmFwcGVyCi0tIAoyLjQ1LjIKCg== --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0002-gnu-Add-pnet-git.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0002-gnu-Add-pnet-git.patch RnJvbSBhZWIyZjFjZjU0MzIyY2MzNjExYjMxYzUzNmY0YzgyYWIwNDI1OTU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8YWViMmYxY2Y1NDMyMmNjMzYxMWIzMWM1MzZmNGM4 MmFiMDQyNTk1Ny4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTI6 NDQ6NTYKU3ViamVjdDogW1BBVENIIDAyLzIxXSBnbnU6IEFkZCBwbmV0LWdpdC4KCiogZ251L3Bh Y2thZ2VzL2RvdG5ldC5zY20gKHBuZXQtZ2l0KTogTmV3IHZhcmlhYmxlLgoqIGdudS9wYWNrYWdl cy9wYXRjaGVzL3BuZXQtZml4LWxpbmUtbnVtYmVyLWluZm8ucGF0Y2g6IG5ldyBwYXRjaC4KKiBn bnUvcGFja2FnZXMvcGF0Y2hlcy9wbmV0LWZpeC1vZmYtYnktb25lLnBhdGNoOiBuZXcgcGF0Y2gu CiogZ251L3BhY2thZ2VzL3BhdGNoZXMvcG5ldC1uZXdlci1saWJnYy1maXgucGF0Y2g6IG5ldyBw YXRjaC4KKiBnbnUvcGFja2FnZXMvcGF0Y2hlcy9wbmV0LW5ld2VyLXRleGluZm8tZml4LnBhdGNo OiBuZXcgcGF0Y2guCiogZ251L2xvY2FsLm1rIChkaXN0X3BhdGNoX0RBVEEpOiByZWdpc3RlciBu ZXcgcGF0Y2hlcy4KCkNoYW5nZS1JZDogSTc1MWU5NzA4OGUyYjg0ODA3ODg4OWIyMDMzZWJiNDM1 NmQzY2ZlNGIKLS0tCiBnbnUvbG9jYWwubWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDQgKwogZ251L3BhY2thZ2VzL2RvdG5ldC5zY20gICAgICAgICAgICAgICAgICAgICAg IHwgMTAwICsrKysrKysrKysrKysrKysrKwogLi4uL3BhdGNoZXMvcG5ldC1maXgtbGluZS1udW1i ZXItaW5mby5wYXRjaCAgIHwgIDEzICsrKwogLi4uL3BhdGNoZXMvcG5ldC1maXgtb2ZmLWJ5LW9u ZS5wYXRjaCAgICAgICAgIHwgIDEzICsrKwogLi4uL3BhdGNoZXMvcG5ldC1uZXdlci1saWJnYy1m aXgucGF0Y2ggICAgICAgIHwgIDQ1ICsrKysrKysrCiAuLi4vcGF0Y2hlcy9wbmV0LW5ld2VyLXRl eGluZm8tZml4LnBhdGNoICAgICAgfCAgMTMgKysrCiA2IGZpbGVzIGNoYW5nZWQsIDE4OCBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2VzL3BhdGNoZXMvcG5ldC1m aXgtbGluZS1udW1iZXItaW5mby5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdl cy9wYXRjaGVzL3BuZXQtZml4LW9mZi1ieS1vbmUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn bnUvcGFja2FnZXMvcGF0Y2hlcy9wbmV0LW5ld2VyLWxpYmdjLWZpeC5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL3BuZXQtbmV3ZXItdGV4aW5mby1maXgucGF0 Y2gKCmRpZmYgLS1naXQgYS9nbnUvbG9jYWwubWsgYi9nbnUvbG9jYWwubWsKaW5kZXggMGExNjE3 NDQ4Yy4uZDM2YTAwMzAwNyAxMDA2NDQKLS0tIGEvZ251L2xvY2FsLm1rCisrKyBiL2dudS9sb2Nh bC5tawpAQCAtMTkyNCw2ICsxOTI0LDEwIEBAIGRpc3RfcGF0Y2hfREFUQSA9CQkJCQkJXAogICAl RCUvcGFja2FnZXMvcGF0Y2hlcy9wbG90dXRpbHMtc3BsaW5lLXRlc3QucGF0Y2gJCVwKICAgJUQl L3BhY2thZ2VzL3BhdGNoZXMvcG80YS1wYXJ0aWFsLXRleGluZm8tbWVudS1maXgucGF0Y2gJXAog ICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9wbG92ZXItbXVsdGlzY3JlZW4ucGF0Y2gJCVwKKyAgJUQl L3BhY2thZ2VzL3BhdGNoZXMvcG5ldC1maXgtbGluZS1udW1iZXItaW5mby5wYXRjaAkJXAorICAl RCUvcGFja2FnZXMvcGF0Y2hlcy9wbmV0LWZpeC1vZmYtYnktb25lLnBhdGNoCQlcCisgICVEJS9w YWNrYWdlcy9wYXRjaGVzL3BuZXQtbmV3ZXItbGliZ2MtZml4LnBhdGNoCQlcCisgICVEJS9wYWNr YWdlcy9wYXRjaGVzL3BuZXQtbmV3ZXItdGV4aW5mby1maXgucGF0Y2gJCVwKICAgJUQlL3BhY2th Z2VzL3BhdGNoZXMvcG9sa2l0LWRpc2FibGUtc3lzdGVtZC5wYXRjaAkJXAogICAlRCUvcGFja2Fn ZXMvcGF0Y2hlcy9wb3J0YXVkaW8tYXVkYWNpdHktY29tcGF0LnBhdGNoCQlcCiAgICVEJS9wYWNr YWdlcy9wYXRjaGVzL3BvcnRtaWRpLW1vZHVsYXItYnVpbGQucGF0Y2gJCVwKZGlmZiAtLWdpdCBh L2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtIGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KaW5kZXgg MzA4NGUxY2YzYS4uZTExZGFmZjQ4YyAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL2RvdG5ldC5z Y20KKysrIGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KQEAgLTYwLDMgKzYwLDEwMyBAQCAoZGVm aW5lLXB1YmxpYyB0cmVlY2MKIG9mIGNvbXBpbGVycyBhbmQgb3RoZXIgbGFuZ3VhZ2UtYmFzZWQg dG9vbHMuICBJdCBtYW5hZ2VzIHRoZSBnZW5lcmF0aW9uIG9mCiBjb2RlIHRvIGhhbmRsZSBhYnN0 cmFjdCBzeW50YXggdHJlZXMgYW5kIG9wZXJhdGlvbnMgdXBvbiB0aGUgdHJlZXMuIikKICAgICAo bGljZW5zZSBsaWNlbnNlOmdwbDIrKSkpCisKKzs7IHNldmVyYWwgaW1wcm92ZW1lbnRzIG9jY3Vy cmVkIHBhc3QgdGhlIDAuOC4wIHJlbGVhc2UgdGhhdCBtYWtlIGl0IGVhc2llciB0bworOzsgYm9v dHN0cmFwIG1vbm8KKyhkZWZpbmUtcHVibGljIHBuZXQtZ2l0CisgIChsZXQgKChjb21taXQgIjNi YWY5NDczNGQ4ZGMzZmRhYmJhNjhhODg5MWU2N2E0M2VkNmM0YmQiKQorICAgICAgICAodmVyc2lv biAiMC44LjAiKQorICAgICAgICAocmV2aXNpb24gIjAiKSkKKyAgICAocGFja2FnZQorICAgICAg KG5hbWUgInBuZXQtZ2l0IikKKyAgICAgICh2ZXJzaW9uIChnaXQtdmVyc2lvbiB2ZXJzaW9uIHJl dmlzaW9uIGNvbW1pdCkpCisgICAgICAoc291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgICAo bWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisg ICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9n aXQvZG90Z251LXBuZXQvcG5ldC5naXQiKQorICAgICAgICAgICAgICAgICAgICAgIChjb21taXQg Y29tbWl0KSkpCisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1l IHZlcnNpb24pKQorICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgICAgKGJh c2UzMgorICAgICAgICAgICAgICAgICAgIjB2em52cmd6OGwwbXBpYjFyejV2M2NscjdjbjU3MHZ5 cDgwZjdmMWp2eml2bmMxaW16bjYiKSkKKyAgICAgICAgICAgICAgICAobW9kdWxlcyAnKChndWl4 IGJ1aWxkIHV0aWxzKSkpCisgICAgICAgICAgICAgICAgKHNuaXBwZXQKKyAgICAgICAgICAgICAg ICAgI34oYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgIChmb3ItZWFjaCBkZWxldGUtZmlsZS1y ZWN1cnNpdmVseSAnKCJsaWJmZmkiICJsaWJnYyIpKQorICAgICAgICAgICAgICAgICAgICAgKGZv ci1lYWNoIGRlbGV0ZS1maWxlIChmaWx0ZXIgZmlsZS1leGlzdHM/CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJjb21waWxlIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29uZmlndXJlIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29u ZmlnLmd1ZXNzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiY29uZmlnLnN1YiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImRlcGNvbXAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YWxsLXNoIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibHRjb25maWciCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsdGNmLWMuc2giCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsdG1h aW4uc2giKSkpCisgICAgICAgICAgICAgICAgICAgICAoZm9yLWVhY2ggZGVsZXRlLWZpbGUgKGZp bmQtZmlsZXMgIi4iICJNYWtlZmlsZShcXC5pbik/JCIpKQorICAgICAgICAgICAgICAgICAgICAg KGZvci1lYWNoIGRlbGV0ZS1maWxlIChmaW5kLWZpbGVzICIuIiAiX2dyYW1tYXJcXC4oY3xoKSQi KSkKKyAgICAgICAgICAgICAgICAgICAgIChmb3ItZWFjaCBkZWxldGUtZmlsZSAoZmluZC1maWxl cyAiLiIgIl9zY2FubmVyXFwuKGN8aCkkIikpCisgICAgICAgICAgICAgICAgICAgICA7OyBGaXgg dG8gbm90IHJlcXVpcmUgYnVuZGxlZCBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAg IChzdWJzdGl0dXRlKiAiY29uZmlndXJlLmluIgorICAgICAgICAgICAgICAgICAgICAgICAoKCJH Q0xJQlM9Jy4qbGliZ2MuYSciKSAiR0NMSUJTPSctbGdjJyIpCisgICAgICAgICAgICAgICAgICAg ICAgIDs7IEFDX1NFQVJDSF9MSUJKSVQgY2hlY2tzIGhhcmRjb2RlZCBoZWFkZXIgbG9jYXRpb25z CisgICAgICAgICAgICAgICAgICAgICAgICgoInNlYXJjaF9saWJqaXQ9dHJ1ZSIpCisgICAgICAg ICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAic2VhcmNoX2xpYmppdD1mYWxzZVxuIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkpJVF9MSUJTPS1saml0Iikp KQorICAgICAgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUqICJNYWtlZmlsZS5hbSIKKyAgICAg ICAgICAgICAgICAgICAgICAgKCgiT1BUX1NVQkRJUlMgXFwrPSBsaWIuKiIpICIiKSkKKyAgICAg ICAgICAgICAgICAgICAgIChzdWJzdGl0dXRlKiAic3VwcG9ydC9oYl9nYy5jIgorICAgICAgICAg ICAgICAgICAgICAgICAoKCIjaW5jbHVkZSAuKi9saWJnYy9pbmNsdWRlL2djLmguIikKKyAgICAg ICAgICAgICAgICAgICAgICAgICIjaW5jbHVkZSA8Z2MuaD4iKQorICAgICAgICAgICAgICAgICAg ICAgICAoKCIjaW5jbHVkZSAuKi9saWJnYy9pbmNsdWRlL2djX3R5cGVkLmguIikKKyAgICAgICAg ICAgICAgICAgICAgICAgICIjaW5jbHVkZSA8Z2MvZ2NfdHlwZWQuaD4iKSkKKyAgICAgICAgICAg ICAgICAgICAgIChzdWJzdGl0dXRlKiAobGlzdCAiY29kZWdlbi9NYWtlZmlsZS5hbSIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3NjYy9iZi9NYWtlZmlsZS5hbSIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3NjYy9jc2hhcnAvTWFr ZWZpbGUuYW0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNzY2Mv Yy9NYWtlZmlsZS5hbSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi Y3NjYy9qYXZhL01ha2VmaWxlLmFtIikKKyAgICAgICAgICAgICAgICAgICAgICAgOzsgR2VuZXJh dGVkIGZpbGVzIGFyZW4ndCBwcmVyZXF1aXNpdGVzCisgICAgICAgICAgICAgICAgICAgICAgICgo IlRSRUVDQ19PVVRQVVQgPS4qIikgIiIpKQorICAgICAgICAgICAgICAgICAgICAgKHN1YnN0aXR1 dGUqICJjc2NjL2NzaGFycC9jc19ncmFtbWFyLnkiCisgICAgICAgICAgICAgICAgICAgICAgICgo IllZTEVYIikgInl5bGV4KCkiKSkKKyAgICAgICAgICAgICAgICAgICAgIChzdWJzdGl0dXRlKiAi Y3NjYy9jb21tb24vY2NfbWFpbi5oIgorICAgICAgICAgICAgICAgICAgICAgICAoKCJDQ1ByZVBy b2MgQ0NQcmVQcm9jZXNzb3JTdHJlYW07IiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgICAo c3RyaW5nLWFwcGVuZCAiZXh0ZXJuICIgYWxsKSkpCisgICAgICAgICAgICAgICAgICAgICAoc3Vi c3RpdHV0ZSogImNzZG9jL3NjYW5uZXIuYyIKKyAgICAgICAgICAgICAgICAgICAgICAgKCgiaW50 XHR0b2tlbjsiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICJl eHRlcm4gIiBhbGwpKSkKKyAgICAgICAgICAgICAgICAgICAgIChzdWJzdGl0dXRlKiAiZG9jL2N2 bWRvYy5weSIKKyAgICAgICAgICAgICAgICAgICAgICAgKCgicHl0aG9uMS41IikKKyAgICAgICAg ICAgICAgICAgICAgICAgICJweXRob24zIikpKSkKKyAgICAgICAgICAgICAgICAocGF0Y2hlcwor ICAgICAgICAgICAgICAgICAoc2VhcmNoLXBhdGNoZXMgInBuZXQtbmV3ZXItbGliZ2MtZml4LnBh dGNoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBuZXQtbmV3ZXItdGV4aW5m by1maXgucGF0Y2giCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG5ldC1maXgt bGluZS1udW1iZXItaW5mby5wYXRjaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJwbmV0LWZpeC1vZmYtYnktb25lLnBhdGNoIikpKSkKKyAgICAgIChidWlsZC1zeXN0ZW0gZ251 LWJ1aWxkLXN5c3RlbSkKKyAgICAgIChuYXRpdmUtaW5wdXRzCisgICAgICAgKGxpc3QgYXV0b2Nv bmYKKyAgICAgICAgICAgICBhdXRvbWFrZQorICAgICAgICAgICAgIGJpc29uCisgICAgICAgICAg ICAgZmxleAorICAgICAgICAgICAgIGxpYnRvb2wKKyAgICAgICAgICAgICBsaWJhdG9taWMtb3Bz CisgICAgICAgICAgICAgKGRlZmF1bHQtcHl0aG9uKSA7OyBmb3IgY3ZtZG9jLnB5CisgICAgICAg ICAgICAgdGV4aW5mbworICAgICAgICAgICAgIHRyZWVjYykpCisgICAgICAoaW5wdXRzCisgICAg ICAgKGxpc3QgbGliZ2MgbGliaml0KSkKKyAgICAgIChhcmd1bWVudHMKKyAgICAgICAobGlzdCAj OmNvbmZpZ3VyZS1mbGFncyAjfihsaXN0ICItLXdpdGgtaml0IikKKyAgICAgICAgICAgICAjOm1h a2UtZmxhZ3MgI34obGlzdCAiQ0ZMQUdTKz0tV25vLXBvaW50ZXItdG8taW50LWNhc3QiKSkpCisg ICAgICAobmF0aXZlLXNlYXJjaC1wYXRocworICAgICAgIChsaXN0IChzZWFyY2gtcGF0aC1zcGVj aWZpY2F0aW9uCisgICAgICAgICAgICAgICh2YXJpYWJsZSAiQ1NDQ19MSUJfUEFUSCIpCisgICAg ICAgICAgICAgIChmaWxlcyAobGlzdCAibGliL2NzY2MvbGliIikpKSkpCisgICAgICAoaG9tZS1w YWdlICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZG90Z251L2h0bWwyLjAvcG5ldC5odG1s IikKKyAgICAgIChzeW5vcHNpcyAiQ29tcGlsZXIgZm9yIHRoZSBDIyBwcm9ncmFtbWluZyBsYW5n dWFnZSIpCisgICAgICAoZGVzY3JpcHRpb24KKyAgICAgICAiVGhlIGdvYWwgb2YgdGhpcyBwcm9q ZWN0IGlzIHRvIGJ1aWxkIGEgc3VpdGUgb2YgZnJlZSBzb2Z0d2FyZSB0b29scwordG8gYnVpbGQg YW5kIGV4ZWN1dGUgLk5FVCBhcHBsaWNhdGlvbnMsIGluY2x1ZGluZyBhIEMjIGNvbXBpbGVyLAor YXNzZW1ibGVyLCBkaXNhc3NlbWJsZXIsIGFuZCBydW50aW1lIGVuZ2luZS4iKQorICAgICAgKGxp Y2Vuc2UgbGljZW5zZTpncGwyKykpKSkKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVz L3BuZXQtZml4LWxpbmUtbnVtYmVyLWluZm8ucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9w bmV0LWZpeC1saW5lLW51bWJlci1pbmZvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLjllNWFmODQ5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFja2FnZXMv cGF0Y2hlcy9wbmV0LWZpeC1saW5lLW51bWJlci1pbmZvLnBhdGNoCkBAIC0wLDAgKzEsMTMgQEAK K2RpZmYgLS1naXQgYS9jb2RlZ2VuL2NnX2NvZXJjZS5jIGIvY29kZWdlbi9jZ19jb2VyY2UuYwor aW5kZXggOTJkMmY1OWEuLmM5MGFkNWUyIDEwMDY0NAorLS0tIGEvY29kZWdlbi9jZ19jb2VyY2Uu YworKysrIGIvY29kZWdlbi9jZ19jb2VyY2UuYworQEAgLTEyMDMsNiArMTIwMyw4IEBAIGludCBJ TENvZXJjZShJTEdlbkluZm8gKmluZm8sIElMTm9kZSAqbm9kZSwgSUxOb2RlICoqcGFyZW50LAor IAkJCQkJIT0gSUxNYWNoaW5lVHlwZV9Wb2lkKQorIAl7CisgCQkqcGFyZW50ID0gSUxOb2RlX0Nh c3RTaW1wbGVfY3JlYXRlKG5vZGUsIGNvbnN0VHlwZSk7CisrICAgICAgICAgICAgICAgIHl5c2V0 ZmlsZW5hbWUoKnBhcmVudCwgeXlnZXRmaWxlbmFtZShub2RlKSk7CisrCQl5eXNldGxpbmVudW0o KnBhcmVudCwgeXlnZXRsaW5lbnVtKG5vZGUpKTsKKyAJCXJldHVybiAxOworIAl9CisgCWVsc2Ug aWYoaW5kaXJlY3QgJiYgR2V0SW5kaXJlY3RDb252ZXJ0UnVsZXMoaW5mbyxmcm9tVHlwZSx0b1R5 cGUsMCwgCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9wbmV0LWZpeC1vZmYtYnkt b25lLnBhdGNoIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvcG5ldC1maXgtb2ZmLWJ5LW9uZS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44NThkMjI2Njk3Ci0tLSAv ZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvcG5ldC1maXgtb2ZmLWJ5LW9uZS5w YXRjaApAQCAtMCwwICsxLDEzIEBACitkaWZmIC0tZ2l0IGEvY29kZWdlbi9jZ19nZW5hdHRyLmMg Yi9jb2RlZ2VuL2NnX2dlbmF0dHIuYworaW5kZXggNTM1ODUyZGEuLmMzYWNjMGRjIDEwMDY0NAor LS0tIGEvY29kZWdlbi9jZ19nZW5hdHRyLmMKKysrKyBiL2NvZGVnZW4vY2dfZ2VuYXR0ci5jCitA QCAtMTUzMiw3ICsxNTMyLDcgQEAgc3RhdGljIGludCBNYXJzaGFsQXNBdHRyaWJ1dGUoSUxHZW5J bmZvICppbmZvLAorIAkJCWVsc2UKKyAJCQl7CisgCQkJCXNpemVQYXJhbUluZGV4ID0gYXR0cmli dXRlSW5mby0+bmFtZWRBcmdzW2N1cnJlbnROYW1lZEFyZ10uZXZhbFZhbHVlLnVuLmk0VmFsdWU7 CistCQkJCWlmKHNpemVQYXJhbUluZGV4IDw9IDApCisrCQkJCWlmKHNpemVQYXJhbUluZGV4IDwg MCkKKyAJCQkJeworIAkJCQkJQ0dFcnJvckZvck5vZGUoaW5mbywgYXR0cmlidXRlSW5mby0+bmFt ZWRBcmdzW2N1cnJlbnROYW1lZEFyZ10ubm9kZSwKKyAJCQkJCQlfKCJUaGUgc2l6ZSBwYXJhbWV0 ZXIgaW5kZXggbXVzdCBiZSA+PSAwIikpOwpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNo ZXMvcG5ldC1uZXdlci1saWJnYy1maXgucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9wbmV0 LW5ld2VyLWxpYmdjLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi4xMDg0YjVhNWJlCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMv cG5ldC1uZXdlci1saWJnYy1maXgucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorZGlmZiAtLWdpdCBh L3N1cHBvcnQvaGJfZ2MuYyBiL3N1cHBvcnQvaGJfZ2MuYworaW5kZXggYTVhZGRiMmQuLjQxMTI2 OTYzIDEwMDY0NAorLS0tIGEvc3VwcG9ydC9oYl9nYy5jCisrKysgYi9zdXBwb3J0L2hiX2djLmMK K0BAIC0xMDQsMTIgKzEwNCw2IEBAIHN0YXRpYyB2b2xhdGlsZSBpbnQgX0ZpbmFsaXplcnNSdW5u aW5nU3luY2hyb25vdXNseSA9IDA7CisgCSNkZWZpbmUgR0NfVFJBQ0UoYSwgYikKKyAjZW5kaWYK KyAKKy0vKgorLSAqIFRoaXMgaXMgYSBpbnRlcm5hbCBnbG9iYWwgdmFyaWFibGUgd2l0aCB0aGUg bnVtYmVyIG9mIHJlY2xhaW1lZCBieXRlcworLSAqIGFmdGVyIGEgZ2FyYmFnZSBjb2xsZWN0aW9u LgorLSAqLworLWV4dGVybiBHQ19zaWduZWRfd29yZCBHQ19ieXRlc19mb3VuZDsKKy0KKyAvKgor ICAqCU1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBmaW5hbGl6ZXIgdGhyZWFkLgorICAqLworQEAg LTQzMiw2ICs0MjYsNyBAQCBpbnQgSUxHQ0Z1bGxDb2xsZWN0aW9uKGludCB0aW1lb3V0KQorIHsK KyAJaW50IGxhc3RGaW5hbGl6aW5nQ291bnQ7CisgCWludCBoYXNUaHJlYWRzOworKyAgICAgICBz dHJ1Y3QgR0NfcHJvZl9zdGF0c19zIHN0YXRzOworIAorIAloYXNUaHJlYWRzID0gX0lMSGFzVGhy ZWFkcygpOworIAorQEAgLTQ2Miw3ICs0NTcsOCBAQCBpbnQgSUxHQ0Z1bGxDb2xsZWN0aW9uKGlu dCB0aW1lb3V0KQorIAkJCUdDX1RSQUNFKCJMYXN0IGZpbmFsaXppbmdDb3VudCA9ICVpXG4iLCBs YXN0RmluYWxpemluZ0NvdW50KTsKKyAKKyAJCQlHQ19nY29sbGVjdCgpOworLQkJCWJ5dGVzQ29s bGVjdGVkID0gR0NfYnl0ZXNfZm91bmQ7CisrICAgICAgICAgICAgICAgICAgICAgICBHQ19nZXRf cHJvZl9zdGF0cygmc3RhdHMsIHNpemVvZihzdGF0cykpOworKwkJCWJ5dGVzQ29sbGVjdGVkID0g c3RhdHMuYnl0ZXNfcmVjbGFpbWVkX3NpbmNlX2djOworIAorIAkJCUdDX1RSQUNFKCJHQzogYnl0 ZXMgY29sbGVjdGVkID0gICVpXG4iLCBieXRlc0NvbGxlY3RlZCk7CisgCitAQCAtNTE2LDcgKzUx Miw4IEBAIGludCBJTEdDRnVsbENvbGxlY3Rpb24oaW50IHRpbWVvdXQpCisgCQkJR0NfVFJBQ0Uo Ikxhc3QgZmluYWxpemluZ0NvdW50ID0gJWlcbiIsIGxhc3RGaW5hbGl6aW5nQ291bnQpOworIAor IAkJCUdDX2djb2xsZWN0KCk7CistCQkJYnl0ZXNDb2xsZWN0ZWQgPSBHQ19ieXRlc19mb3VuZDsK KysgICAgICAgICAgICAgICAgICAgICAgIEdDX2dldF9wcm9mX3N0YXRzKCZzdGF0cywgc2l6ZW9m KHN0YXRzKSk7CisrCQkJYnl0ZXNDb2xsZWN0ZWQgPSBzdGF0cy5ieXRlc19yZWNsYWltZWRfc2lu Y2VfZ2M7CisgCisgCQkJR0NfVFJBQ0UoIkdDOiBieXRlcyBjb2xsZWN0ZWQgPSAgJWlcbiIsIGJ5 dGVzQ29sbGVjdGVkKTsKKyAKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL3BuZXQt bmV3ZXItdGV4aW5mby1maXgucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9wbmV0LW5ld2Vy LXRleGluZm8tZml4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmI1NzA1MmVlZWEKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9wbmV0 LW5ld2VyLXRleGluZm8tZml4LnBhdGNoCkBAIC0wLDAgKzEsMTMgQEAKK2RpZmYgLS1naXQgYS9k b2MvcG5ldHRvb2xzLnRleGkgYi9kb2MvcG5ldHRvb2xzLnRleGkKK2luZGV4IDkxNmQ5MGJiLi5j ZGJlMDVjZiAxMDA2NDQKKy0tLSBhL2RvYy9wbmV0dG9vbHMudGV4aQorKysrIGIvZG9jL3BuZXR0 b29scy50ZXhpCitAQCAtNTksNyArNTksNyBAQCBDb3B5cmlnaHQgQGNvcHlyaWdodHt9IDIwMDEs IDIwMDIsIDIwMDMgU291dGhlcm4gU3Rvcm0gU29mdHdhcmUsIFB0eSBMdGQKKyBAY2VudGVyIEB0 aXRsZWZvbnR7UG9ydGFibGUuTkVUIERldmVsb3BtZW50IFRvb2xzfQorIAorIEB2c2tpcCAwcHQg cGx1cyAxZmlsbAorLUBjZW50ZXJ7Q29weXJpZ2h0IEBjb3B5cmlnaHR7fSAyMDAxLCAyMDAyLCAy MDAzIFNvdXRoZXJuIFN0b3JtIFNvZnR3YXJlLCBQdHkgTHRkfQorK0BjZW50ZXIgQ29weXJpZ2h0 IEBjb3B5cmlnaHR7fSAyMDAxLCAyMDAyLCAyMDAzIFNvdXRoZXJuIFN0b3JtIFNvZnR3YXJlLCBQ dHkgTHRkCisgQGVuZCB0aXRsZXBhZ2UKKyAKKyBAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAKMi40NS4y Cgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0003-gnu-Add-pnetlib-git.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0003-gnu-Add-pnetlib-git.patch RnJvbSBhM2U5NmVlYTc2OTNhNTU0YmQ0Y2FiMmY1MzFiZDlmNjNlZWU4NTBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8YTNlOTZlZWE3NjkzYTU1NGJkNGNhYjJmNTMxYmQ5 ZjYzZWVlODUwYi4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTI6 NTM6MjMKU3ViamVjdDogW1BBVENIIDAzLzIxXSBnbnU6IEFkZCBwbmV0bGliLWdpdC4KCiogZ251 L3BhY2thZ2VzL2RvdG5ldC5zY20gKHBuZXRsaWItZ2l0KTogTmV3IHZhcmlhYmxlLgoKQ2hhbmdl LUlkOiBJM2EwNDFkZTE4MWQ5NmJmZTllNDQ3ZDcyZGRkOTU3OGUxMmRiODAxNAotLS0KIGdudS9w YWNrYWdlcy9kb3RuZXQuc2NtIHwgNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv Z251L3BhY2thZ2VzL2RvdG5ldC5zY20gYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCBl MTFkYWZmNDhjLi45MGNjZmQyZDU0IDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZG90bmV0LnNj bQorKysgYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQpAQCAtMTYwLDMgKzE2MCw2MCBAQCAoZGVm aW5lLXB1YmxpYyBwbmV0LWdpdAogdG8gYnVpbGQgYW5kIGV4ZWN1dGUgLk5FVCBhcHBsaWNhdGlv bnMsIGluY2x1ZGluZyBhIEMjIGNvbXBpbGVyLAogYXNzZW1ibGVyLCBkaXNhc3NlbWJsZXIsIGFu ZCBydW50aW1lIGVuZ2luZS4iKQogICAgICAgKGxpY2Vuc2UgbGljZW5zZTpncGwyKykpKSkKKwor KGRlZmluZS1wdWJsaWMgcG5ldGxpYi1naXQKKyAgKGxldCAoKHZlcnNpb24gIjAuOC4wIikKKyAg ICAgICAgKGNvbW1pdCAiYzNjMTJiOGIwYzY1ZjU0ODJkMDNkNmE0ODY1Zjc2NzBlOThiYWY0YyIp CisgICAgICAgIChyZXZpc2lvbiAiMCIpKQorICAgIChwYWNrYWdlCisgICAgICAobmFtZSAicG5l dGxpYi1naXQiKQorICAgICAgKHZlcnNpb24gKGdpdC12ZXJzaW9uIHZlcnNpb24gcmV2aXNpb24g Y29tbWl0KSkKKyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAgIChtZXRob2Qg Z2l0LWZldGNoKQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAg ICAgICAgICAgICAgICAodXJsCisgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2dpdC5z YXZhbm5haC5nbnUub3JnL2dpdC9kb3RnbnUtcG5ldC9wbmV0bGliLmdpdCIpCisgICAgICAgICAg ICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpKSkKKyAgICAgICAgICAgICAgICAoZmlsZS1uYW1l IChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lvbikpCisgICAgICAgICAgICAgICAgKHNoYTI1Ngor ICAgICAgICAgICAgICAgICAoYmFzZTMyCisgICAgICAgICAgICAgICAgICAiMDRkaWtraTNscjNt MWNhY2lybGQ5MHJwaTk1NjU2YjJ5Mm1jNXJreWNiN3MweWZkejFuayIpKQorICAgICAgICAgICAg ICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQgdXRpbHMpKSkKKyAgICAgICAgICAgICAgICAoc25p cHBldAorICAgICAgICAgICAgICAgICAjfihiZWdpbgorICAgICAgICAgICAgICAgICAgICAgKGZv ci1lYWNoIGRlbGV0ZS1maWxlIChmaWx0ZXIgZmlsZS1leGlzdHM/CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJjb25maWd1cmUiCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25maWcuZ3Vl c3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJjb25maWcuc3ViIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiaW5zdGFsbC1zaCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImx0bWFpbi5zaCIpKSkKKyAgICAgICAgICAgICAgICAgICAg IChmb3ItZWFjaCBkZWxldGUtZmlsZSAoZmluZC1maWxlcyAiLiIgIk1ha2VmaWxlKFxcLmluKT8k IikpCisgICAgICAgICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogKGZpbmQtZmlsZXMgInRlc3Rz IiAiXk1ha2VmaWxlXFwuYW0kIikKKyAgICAgICAgICAgICAgICAgICAgICAgKCgiVEVTVFNfRU5W SVJPTk1FTlQuKiIpCisgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZAorICAg ICAgICAgICAgICAgICAgICAgICAgICJMT0dfQ09NUElMRVIgPSAkKFNIRUxMKVxuIgorICAgICAg ICAgICAgICAgICAgICAgICAgICJBTV9MT0dfRkxBR1MgPSAkKHRvcF9idWlsZGRpcikvdG9vbHMv cnVuX3Rlc3Quc2giCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAkKHRvcF9idWlsZGRpciki KSkpCisgICAgICAgICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogInRvb2xzL3J1bl90ZXN0LnNo LmluIgorICAgICAgICAgICAgICAgICAgICAgICAoKCJlbl9VUyIpICJlbl9VUy51dGY4IikpCisg ICAgICAgICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogInRvb2xzL3dyYXBwZXIuc2guaW4iCisg ICAgICAgICAgICAgICAgICAgICAgICgoImV4ZWMgLkxOX1MgY2xyd3JhcCAuLjEuIiBhbGwpCisg ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZAorICAgICAgICAgICAgICAgICAg ICAgICAgICJlY2hvICcjIUBTSEVMTEAnID4+ICQxXG4iCisgICAgICAgICAgICAgICAgICAgICAg ICAgImVjaG8gZXhlYyAkQ0xSV1JBUCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICQoZGly bmFtZSAkKGRpcm5hbWUgJDEpKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiL2xpYi9jc2Nj L2xpYi8kKGJhc2VuYW1lICQxKS5leGUgPj4gJDFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAiY2htb2QgK3ggJDEiKSkpKSkpKQorICAgICAgKGJ1aWxkLXN5c3RlbSBnbnUtYnVpbGQtc3lz dGVtKQorICAgICAgKGFyZ3VtZW50cworICAgICAgIChsaXN0ICM6bWFrZS1mbGFncyAjfihsaXN0 ICJDRkxBR1MrPS1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCIpKSkKKyAgICAgIChuYXRpdmUtaW5w dXRzCisgICAgICAgKGxpc3QgYXV0b2NvbmYgYXV0b21ha2UgbGlidG9vbCB0cmVlY2MpKQorICAg ICAgKGlucHV0cworICAgICAgIChsaXN0IHBuZXQtZ2l0KSkKKyAgICAgIChob21lLXBhZ2UgImh0 dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9kb3RnbnUvaHRtbDIuMC9wbmV0Lmh0bWwiKQorICAg ICAgKHN5bm9wc2lzICJMaWJyYXJpZXMgZm9yIHRoZSBDIyBwcm9ncmFtbWluZyBsYW5ndWFnZSIp CisgICAgICAoZGVzY3JpcHRpb24KKyAgICAgICAiRG90R05VIFBvcnRhYmxlLk5FVCBMaWJyYXJ5 IGNvbnRhaW5zIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBDIyBsaWJyYXJ5LAorZm9yIHVzZSB3 aXRoIC5ORVQtY2FwYWJsZSBydW50aW1lIGVuZ2luZXMgYW5kIGFwcGxpY2F0aW9ucy4iKQorICAg ICAgKGxpY2Vuc2UgbGljZW5zZTpncGwyKykpKSkKLS0gCjIuNDUuMgoK --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0004-gnu-Add-mono-1.2.6.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0004-gnu-Add-mono-1.2.6.patch RnJvbSAzYWIzY2M0YzYyNjE5YmY0MGViODZlMDMxODExNTQ2ZWMwNzQ2Mjg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8M2FiM2NjNGM2MjYxOWJmNDBlYjg2ZTAzMTgxMTU0 NmVjMDc0NjI4OC4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTI6 NTU6NTcKU3ViamVjdDogW1BBVENIIDA0LzIxXSBnbnU6IEFkZCBtb25vLTEuMi42LgoKKiBnbnUv cGFja2FnZXMvZG90bmV0LnNjbSAobW9uby0xLjIuNik6IE5ldyB2YXJpYWJsZS4KKiBnbnUvcGFj a2FnZXMvcGF0Y2hlcy9tb25vLTEuMi42LWJvb3RzdHJhcC5wYXRjaDogTmV3IHBhdGNoLgoqIGdu dS9sb2NhbC5tayAoZGlzdF9wYXRjaF9EQVRBKTogcmVnaXN0ZXIgaXQuCgpDaGFuZ2UtSWQ6IEk3 Mzc2NWQ5MjFjMjhjNDczMjcxYTIwMzhkZmFhNTNjYzdmZGFkM2M1Ci0tLQogZ251L2xvY2FsLm1r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGdudS9wYWNrYWdlcy9k b3RuZXQuc2NtICAgICAgICAgICAgICAgICAgICAgICB8IDE0NSArKysrKwogLi4uL3BhdGNoZXMv bW9uby0xLjIuNi1ib290c3RyYXAucGF0Y2ggICAgICAgIHwgNTg1ICsrKysrKysrKysrKysrKysr KwogMyBmaWxlcyBjaGFuZ2VkLCA3MzEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tMS4yLjYtYm9vdHN0cmFwLnBhdGNoCgpkaWZmIC0t Z2l0IGEvZ251L2xvY2FsLm1rIGIvZ251L2xvY2FsLm1rCmluZGV4IGQzNmEwMDMwMDcuLmZhZGE0 OTcxZmIgMTAwNjQ0Ci0tLSBhL2dudS9sb2NhbC5taworKysgYi9nbnUvbG9jYWwubWsKQEAgLTE3 NjAsNiArMTc2MCw3IEBAIGRpc3RfcGF0Y2hfREFUQSA9CQkJCQkJXAogICAlRCUvcGFja2FnZXMv cGF0Y2hlcy9tcGczMjEtZ2NjLTEwLnBhdGNoCQkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9t b2R1bGUtaW5pdC10b29scy1tb2R1bGVkaXIucGF0Y2gJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hl cy9tb25lcm8tdXNlLXN5c3RlbS1taW5pdXBucGMucGF0Y2gJCQlcCisgICVEJS9wYWNrYWdlcy9w YXRjaGVzL21vbm8tMS4yLjYtYm9vdHN0cmFwLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRj aGVzL21vc2FpY2F0Y2hlci11bmJ1bmRsZS1odHNsaWIucGF0Y2gJXAogICAlRCUvcGFja2FnZXMv cGF0Y2hlcy9tcnJlc2N1ZS1zdXBwb3J0LWxvdmUtMTEucGF0Y2gJCVwKICAgJUQlL3BhY2thZ2Vz L3BhdGNoZXMvbXRvb2xzLW1mb3JtYXQtdW5pbml0aWFsaXplZC5wYXRjaAlcCmRpZmYgLS1naXQg YS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbSBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCmluZGV4 IDkwY2NmZDJkNTQuLjU2OGU1MzczOGYgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9kb3RuZXQu c2NtCisrKyBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCkBAIC0yMTcsMyArMjE3LDE0OCBAQCAo ZGVmaW5lLXB1YmxpYyBwbmV0bGliLWdpdAogICAgICAgICJEb3RHTlUgUG9ydGFibGUuTkVUIExp YnJhcnkgY29udGFpbnMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIEMjIGxpYnJhcnksCiBmb3Ig dXNlIHdpdGggLk5FVC1jYXBhYmxlIHJ1bnRpbWUgZW5naW5lcyBhbmQgYXBwbGljYXRpb25zLiIp CiAgICAgICAobGljZW5zZSBsaWNlbnNlOmdwbDIrKSkpKQorCisoZGVmaW5lIHByZXBhcmUtbW9u by1zb3VyY2UtMAorICAjfigoZmFsc2UtaWYtZXhjZXB0aW9uCisgICAgICAoZGVsZXRlLWZpbGUg Ii4vY29uZmlndXJlIikpCisgICAgIChmYWxzZS1pZi1leGNlcHRpb24KKyAgICAgIChkZWxldGUt ZmlsZS1yZWN1cnNpdmVseSAiLi9saWJnYyIpKQorICAgICA7OyBqdXN0IHRvIGJlIHN1cmUKKyAg ICAgKGZvci1lYWNoIGRlbGV0ZS1maWxlCisgICAgICAgICAgICAgICAoZmluZC1maWxlcyAiLiIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXC4oZGxsfGV4ZXxETEx8RVhFfHNvKSQiKSkK KyAgICAgOzsgV2UgZGVsZXRlZCBkb2NzL0FnaWxpdHlQYWNrLmRsbCBlYXJsaWVyIChpZiBpdCBl eGlzdGVkKSwgYW5kIGl0J3MKKyAgICAgOzsgcmVxdWlyZWQgZm9yIGJ1aWxkaW5nIHRoZSBkb2N1 bWVudGF0aW9uLCBzbyBza2lwIGJ1aWxkaW5nIHRoZQorICAgICA7OyBkb2N1bWVudGF0aW9uLiAg QWNjb3JkaW5nIHRvIGRvY3MvUkVBRE1FLCAidGhlIHNvdXJjZXMgdG8gdGhpcyBETEwKKyAgICAg OzsgbGl2ZSBpbiBHTk9NRSBDVlMgbW9kdWxlIGJlYWdsZS9GaWx0ZXJzL0FnaWxpdHlQYWNrIi4K KyAgICAgKHN1YnN0aXR1dGUqICIuL01ha2VmaWxlLmFtIgorICAgICAgICgoIl4ofERJU1RffE1P T05MSUdIVF98TU9OT1RPVUNIXylTVUJESVJTID0uKiIgYWxsKQorICAgICAgICAoc3RyaW5nLXJl cGxhY2Utc3Vic3RyaW5nCisgICAgICAgICAoc3RyaW5nLXJlcGxhY2Utc3Vic3RyaW5nCisgICAg ICAgICAgKHN0cmluZy1yZXBsYWNlLXN1YnN0cmluZyBhbGwgIiBkb2NzIiAiIikKKyAgICAgICAg ICAiICQobGliZ2NfZGlyKSIgIiIpCisgICAgICAgICAiIGxpYmdjIiAiIikpKSkpCisKKzs7IEEg bG90IG9mIHRoZSBmaXhlcyBhcmUgc2hhcmVkIGJldHdlZW4gbWFueSB2ZXJzaW9ucywgYW5kIGl0 IGRvZXNuJ3QgaHVydCB0bworOzsgYXBwbHkgdGhlbSB0byB2ZXJzaW9ucyBiZWZvcmUgb3IgYWZ0 ZXIgdGhleSBhcmUgbmVjZXNzYXJ5LCBzbyBqdXN0IGluY2x1ZGUKKzs7IHRoZW0gYWxsLgorKGRl ZmluZSBwcmVwYXJlLW1vbm8tc291cmNlCisgICN+KGJlZ2luCisgICAgICAjJEBwcmVwYXJlLW1v bm8tc291cmNlLTAKKyAgICAgIChzdWJzdGl0dXRlKiAoZmlsdGVyIGZpbGUtZXhpc3RzPworICAg ICAgICAgICAgICAgICAgICAgICAgICAgJygiLi9jb25maWd1cmUuaW4iCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIuL2NvbmZpZ3VyZS5hYyIpKQorICAgICAgICAoKCJpbnQgZiA9IGlz aW5mIFxcKDFcXCk7IikKKyAgICAgICAgICJpbnQgZiA9IGlzaW5mICgxLjApOyIpKQorICAgICAg OzsgbWFrZWRldiBpcyBpbiA8c3lzL3N5c21hY3Jvcy5oPiBub3cuICBJbmNsdWRlCisgICAgICA7 OyBpdC4KKyAgICAgIChzdWJzdGl0dXRlKiAibW9uby9pby1sYXllci9wcm9jZXNzZXMuYyIKKyAg ICAgICAgKCgiI2lmZGVmIEhBVkVfU1lTX01LREVWX0giKSAiI2lmIDEiKQorICAgICAgICAoKCJz eXMvbWtkZXYuaCIpICJzeXMvc3lzbWFjcm9zLmgiKSkKKyAgICAgIChzdWJzdGl0dXRlKiAoZmls dGVyIGZpbGUtZXhpc3RzPyAnKCIuL21vbm8vbWV0YWRhdGEvYm9laG0tZ2MuYyIpKQorICAgICAg ICAoKCJHQ19zZXRfZmluYWxpemVyX25vdGlmeV9wcm9jIikKKyAgICAgICAgICJHQ19zZXRfYXdh aXRfZmluYWxpemVfcHJvYyIpCisgICAgICAgICgoIkdDX3RvZ2dsZXJlZl9yZWdpc3Rlcl9jYWxs YmFjayIpCisgICAgICAgICAiR0Nfc2V0X3RvZ2dsZXJlZl9mdW5jIikpCisgICAgICAoc3Vic3Rp dHV0ZSogKGZpbHRlciBmaWxlLWV4aXN0cz8gJygiLi9tb25vL3V0aWxzL21vbm8tY29tcGlsZXIu aCIpKQorICAgICAgICAoKCJzdGF0aWMgX190aHJlYWQgZ3BvaW50ZXIgeCBNT05PX1RMU19GQVNU IikKKyAgICAgICAgIChzdHJpbmctYXBwZW5kCisgICAgICAgICAgInN0YXRpYyBfX3RocmVhZCBn cG9pbnRlciB4IgorICAgICAgICAgICIgX19hdHRyaWJ1dGVfXygodXNlZCkpIikpKQorICAgICAg OzsgU2luY2UgdGhlIHRpbWUgdGhlIG9sZCBtb25vIHZlcnNpb25zIHdlcmUgd3JpdHRlbiBhdCwg Z2NjIGhhcyBzdGFydGVkCisgICAgICA7OyByZW1vdmluZyBtb3JlIHRoaW5ncyBpdCB0aGlua3Mg YXJlIHVudXNlZCAoZm9yIGV4YW1wbGUgYmVjYXVzZSB0aGV5CisgICAgICA7OyBhcmUgb25seSBy ZWZlcmVuY2VkIGluIGlubGluZSBhc3NlbWJseSBvZiBzb21lIHNvcnQpLgorICAgICAgKHN1YnN0 aXR1dGUqIChmaWx0ZXIgZmlsZS1leGlzdHM/ICcoIi4vbW9uby9tZXRhZGF0YS9zZ2VuLWFsbG9j LmMiKSkKKyAgICAgICAgKCgic3RhdGljIF9fdGhyZWFkIGNoYXIgXFwqXFwqdGxhYl9uZXh0X2Fk ZHIiKQorICAgICAgICAgKHN0cmluZy1hcHBlbmQKKyAgICAgICAgICAic3RhdGljIF9fdGhyZWFk IGNoYXIgKip0bGFiX25leHRfYWRkciIKKyAgICAgICAgICAiIF9fYXR0cmlidXRlX18oKHVzZWQp KSIpKSkKKyAgICAgIChzdWJzdGl0dXRlKiAoZmlsdGVyIGZpbGUtZXhpc3RzPyAnKCJtb25vL3V0 aWxzL21vbm8tY29tcGlsZXIuaCIpKQorICAgICAgICAoKCIjZGVmaW5lIE1PTk9fVExTX0ZBU1Qg IikKKyAgICAgICAgICIjZGVmaW5lIE1PTk9fVExTX0ZBU1QgX19hdHRyaWJ1dGVfXygodXNlZCkp ICIpKSkpCisKKyhkZWZpbmUtcHVibGljIG1vbm8tMS4yLjYKKyAgKHBhY2thZ2UKKyAgICAodmVy c2lvbiAiMS4yLjYiKQorICAgIChuYW1lICJtb25vIikKKyAgICAoc291cmNlIChvcmlnaW4KKyAg ICAgICAgICAgICAgKG1ldGhvZCB1cmwtZmV0Y2gpCisgICAgICAgICAgICAgICh1cmkgKHN0cmlu Zy1hcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9kb3dubG9hZC5tb25vLXByb2pl Y3QuY29tL3NvdXJjZXMvbW9uby8iCisgICAgICAgICAgICAgICAgICAgICJtb25vIiAiLSIgdmVy c2lvbiAiLnRhci5iejIiKSkKKyAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAg KGJhc2UzMiAiMDNzbjd3eXZyamtra2JycWFqcG1xaWZ4Zm44M3AzMHFwcml6cGIzbTZjNWNkaHds emsxNCIpKQorICAgICAgICAgICAgICAobW9kdWxlcyAnKChndWl4IGJ1aWxkIHV0aWxzKQorICAg ICAgICAgICAgICAgICAgICAgICAgIChpY2UtOSBzdHJpbmctZnVuKSkpCisgICAgICAgICAgICAg IChzbmlwcGV0ICN+KGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAjJHByZXBhcmUt bW9uby1zb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtZmlsZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIuL21jcy9jbGFzcy9TeXN0ZW0vU3lzdGVtLlRleHQu UmVndWxhckV4cHJlc3Npb25zL0Jhc2VNYWNoaW5lLmNzIikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IENhbid0IHBhdGNoIGEgZmlsZSB3aXRoIGRpZmZlcmVudCBsaW5lIGVuZGluZ3Ms CisgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBzbyB0aGUgcGF0Y2ggY3JlYXRlcyBhIG5l dyBvbmUsIGFuZCB3ZSBvdmVyd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRo ZSBvbGQgb25lIGhlcmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVuYW1lLWZpbGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLi9tY3MvY2xhc3MvU3lzdGVtL1N5c3RlbS5U ZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy9CYXNlTWFjaGluZS5jcy0yIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIuL21jcy9jbGFzcy9TeXN0ZW0vU3lzdGVtLlRleHQuUmVndWxhckV4cHJl c3Npb25zL0Jhc2VNYWNoaW5lLmNzIikpKQorICAgICAgICAgICAgICAocGF0Y2hlcworICAgICAg ICAgICAgICAgKHNlYXJjaC1wYXRjaGVzICJtb25vLTEuMi42LWJvb3RzdHJhcC5wYXRjaCIpKSkp CisgICAgKGJ1aWxkLXN5c3RlbSBnbnUtYnVpbGQtc3lzdGVtKQorICAgIChuYXRpdmUtaW5wdXRz CisgICAgIChsaXN0IGF1dG9jb25mCisgICAgICAgICAgIGF1dG9tYWtlCisgICAgICAgICAgIGJp c29uCisgICAgICAgICAgIGxpYnRvb2wKKyAgICAgICAgICAgcG5ldC1naXQKKyAgICAgICAgICAg cG5ldGxpYi1naXQKKyAgICAgICAgICAgcGtnLWNvbmZpZykpCisgICAgKGlucHV0cworICAgICAo bGlzdCBnbGliCisgICAgICAgICAgIGxpYmdjCisgICAgICAgICAgIGxpYngxMQorICAgICAgICAg ICB6bGliKSkKKyAgICAoYXJndW1lbnRzCisgICAgIChsaXN0CisgICAgICAjOmNvbmZpZ3VyZS1m bGFncyAjfihsaXN0ICItLXdpdGgtZ2M9Ym9laG0iKQorICAgICAgIzptYWtlLWZsYWdzICN+KGxp c3QgKHN0cmluZy1hcHBlbmQgIkVYVEVSTkFMX01DUz0iCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjKyh0aGlzLXBhY2thZ2UtbmF0aXZlLWlucHV0ICJwbmV0LWdp dCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL2Jpbi9jc2Nj IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICJFWFRFUk5BTF9S VU5USU1FPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMrKHRo aXMtcGFja2FnZS1uYXRpdmUtaW5wdXQgInBuZXQtZ2l0IikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIvYmluL2lscnVuIikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICJDRkxBR1MrPS1EQVJHX01BWD01MDAiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAiQ0M9Z2NjIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlY9MSIpCisgICAgICA7OyBi dWlsZCBmYWlscyBub25kZXRlcm1pbmlzdGljYWxseSB3aXRob3V0IHRoaXMKKyAgICAgICM6cGFy YWxsZWwtYnVpbGQ/ICNmCisgICAgICAjOnBoYXNlcworICAgICAgI34obW9kaWZ5LXBoYXNlcyAl c3RhbmRhcmQtcGhhc2VzCisgICAgICAgICAgKGFkZC1hZnRlciAndW5wYWNrICdzZXQtZW52Cisg ICAgICAgICAgICAobGFtYmRhIF8gOzsqICgjOmtleSBpbnB1dHMgIzphbGxvdy1vdGhlci1rZXlz KQorICAgICAgICAgICAgICA7OyBhbGwgdGVzdHMgdW5kZXIgbWNzL2NsYXNzIGZhaWwgdHJ5aW5n IHRvIGFjY2VzcyAkSE9NRQorICAgICAgICAgICAgICAoc2V0ZW52ICJIT01FIiAiL3RtcCIpCisg ICAgICAgICAgICAgIDs7IFpJUCBmaWxlcyBoYXZlICJET1MgdGltZSIgd2hpY2ggc3RhcnRzIGlu IEphbiAxOTgwLgorICAgICAgICAgICAgICAoc2V0ZW52ICJTT1VSQ0VfREFURV9FUE9DSCIgIjMx NTUzMjgwMCIpKSkpCisgICAgICA7OyBTeXN0ZW0uT2JqZWN0IGlzbid0IG1hcmtlZCBhcyBzZXJp YWxpemFibGUgYmVjYXVzZSBpdCBjYXVzZXMgaXNzdWVzCisgICAgICA7OyB3aXRoIGNvbXBpbGlu ZyB3aXRoIHBuZXQgKGNpcmN1bGFyIGNsYXNzIHJlZmVyZW5jZSBiZXR3ZWVuIE9iamVjdCBhbmQK KyAgICAgIDs7IFNlcmlhbGl6YWJsZUF0dHJpYnV0ZSksIGFuZCB0aGlzIGNhdXNlcyB0ZXN0cyB0 byBmYWlsCisgICAgICAjOnRlc3RzPyAjZikpCisgICAgKG5hdGl2ZS1zZWFyY2gtcGF0aHMKKyAg ICAgKGxpc3QgKHNlYXJjaC1wYXRoLXNwZWNpZmljYXRpb24KKyAgICAgICAgICAgICh2YXJpYWJs ZSAiTU9OT19QQVRIIikKKyAgICAgICAgICAgIChmaWxlcyAobGlzdCAibGliL21vbm8iKSkpKSkK KyAgICAoc3lub3BzaXMgIkNvbXBpbGVyIGFuZCBsaWJyYXJpZXMgZm9yIHRoZSBDIyBwcm9ncmFt bWluZyBsYW5ndWFnZSIpCisgICAgKGRlc2NyaXB0aW9uICJNb25vIGlzIGEgY29tcGlsZXIsIHZt LCBkZWJ1Z2dlciBhbmQgc2V0IG9mIGxpYnJhcmllcyBmb3IKK0MjLCBhIEMtc3R5bGUgcHJvZ3Jh bW1pbmcgbGFuZ3VhZ2UgZnJvbSBNaWNyb3NvZnQgdGhhdCBpcyB2ZXJ5IHNpbWlsYXIgdG8KK0ph dmEuIikKKyAgICAoaG9tZS1wYWdlICJodHRwczovL3d3dy5tb25vLXByb2plY3QuY29tLyIpCisg ICAgOzsgU2VlIC4vTElDRU5TRQorICAgIChsaWNlbnNlIChsaXN0CisgICAgICAgICAgICAgIDs7 IG1vc3Qgb2YgbWNzL3Rvb2xzLCBtb25vL21hbiwgbW9zdCBvZiBtY3MvY2xhc3MsIHRlc3RzIGJ5 CisgICAgICAgICAgICAgIDs7IGRlZmF1bHQsIG1vbm8vZWdsaWIKKyAgICAgICAgICAgICAgbGlj ZW5zZTp4MTEKKyAgICAgICAgICAgICAgOzsgbWNzL21jcywgbWNzL2dtY3MsIHNvbWUgb2YgbWNz L3Rvb2xzCisgICAgICAgICAgICAgIGxpY2Vuc2U6Z3BsMSsgOzsgbm90ZTogLi9tY3MvTElDRU5T RS5HUEwgc3BlY2lmaWVzIG5vIHZlcnNpb24KKyAgICAgICAgICAgICAgOzsgbW9uby9tb25vICh0 aGUgbW9ubyBWTSwgSSB0aGluayB0aGV5IG1lYW50IG1vbm8vbWluaSkKKyAgICAgICAgICAgICAg bGljZW5zZTpsZ3BsMi4wKyA7OyBub3RlOiAuL21jcy9MSUNFTlNFLkxHUEwgc3BlY2lmaWVzIG5v IHZlcnNpb24KKyAgICAgICAgICAgICAgOzsgbWNzL2pheQorICAgICAgICAgICAgICBsaWNlbnNl OmJzZC00KSkpKQpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby0xLjIuNi1i b290c3RyYXAucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTEuMi42LWJvb3RzdHJh cC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wZjZlZmQ0YTAz Ci0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby0xLjIuNi1ib290 c3RyYXAucGF0Y2gKQEAgLTAsMCArMSw1ODUgQEAKK2RpZmYgLS1naXQgYS9tY3MvY2xhc3MvU3lz dGVtL1N5c3RlbS5EaWFnbm9zdGljcy9JQ29sbGVjdERhdGEuY3MgYi9tY3MvY2xhc3MvU3lzdGVt L1N5c3RlbS5EaWFnbm9zdGljcy9JQ29sbGVjdERhdGEuY3MKK2luZGV4IGM1MmY5ODcxNTg5Li5j NjZjMTkzNmQzZCAxMDA2NDQKKy0tLSBhL21jcy9jbGFzcy9TeXN0ZW0vU3lzdGVtLkRpYWdub3N0 aWNzL0lDb2xsZWN0RGF0YS5jcworKysrIGIvbWNzL2NsYXNzL1N5c3RlbS9TeXN0ZW0uRGlhZ25v c3RpY3MvSUNvbGxlY3REYXRhLmNzCitAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgU3lzdGVt LkRpYWdub3N0aWNzCisgI2VuZGlmCisgCXB1YmxpYyBpbnRlcmZhY2UgSUNvbGxlY3REYXRhIHsK KyAJCXZvaWQgQ2xvc2VEYXRhICgpOworLQkJW3JldHVybjogTWFyc2hhbEFzKFVubWFuYWdlZFR5 cGUuSTQpXQorKwkJLy9bcmV0dXJuOiBNYXJzaGFsQXMoVW5tYW5hZ2VkVHlwZS5JNCldCisgCQl2 b2lkIENvbGxlY3REYXRhICgKKyAJCQlbSW5dIFtNYXJzaGFsQXMoVW5tYW5hZ2VkVHlwZS5JNCld IGludCBpZCwgCisgCQkJW0luXSBbTWFyc2hhbEFzKFVubWFuYWdlZFR5cGUuU3lzSW50KV0gSW50 UHRyIHZhbHVlTmFtZSwgCitkaWZmIC0tZ2l0IGEvbWNzL2NsYXNzL1N5c3RlbS9TeXN0ZW0uRGlh Z25vc3RpY3MvTG9jYWxGaWxlRXZlbnRMb2cuY3MgYi9tY3MvY2xhc3MvU3lzdGVtL1N5c3RlbS5E aWFnbm9zdGljcy9Mb2NhbEZpbGVFdmVudExvZy5jcworaW5kZXggMjgwZTZhOTcyMjcuLmM0MTgx NmRjYTI0IDEwMDY0NAorLS0tIGEvbWNzL2NsYXNzL1N5c3RlbS9TeXN0ZW0uRGlhZ25vc3RpY3Mv TG9jYWxGaWxlRXZlbnRMb2cuY3MKKysrKyBiL21jcy9jbGFzcy9TeXN0ZW0vU3lzdGVtLkRpYWdu b3N0aWNzL0xvY2FsRmlsZUV2ZW50TG9nLmNzCitAQCAtMTQwLDYgKzE0MCwzMCBAQCBuYW1lc3Bh Y2UgU3lzdGVtLkRpYWdub3N0aWNzCisgCQkJZmlsZV93YXRjaGVyLkVuYWJsZVJhaXNpbmdFdmVu dHMgPSBmYWxzZTsKKyAJCX0KKyAKKysgICAgICAgIHZvaWQgRmlsZUNyZWF0aW9uV2F0Y2hlcihv YmplY3QgbywgRmlsZVN5c3RlbUV2ZW50QXJncyBlKQorKyAgICAgICAgeworKyAgICAgICAgICAg IGxvY2sgKHRoaXMpIHsKKysgICAgICAgICAgICAgICAgaWYgKF9ub3RpZnlpbmcpCisrICAgICAg ICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgICAgIF9ub3RpZnlpbmcgPSB0cnVl OworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAvLyBQcm9jZXNzIGV2ZXJ5IG5ldyBl bnRyeSBpbiBvbmUgbm90aWZpY2F0aW9uIGV2ZW50LgorKyAgICAgICAgICAgIHRyeSB7CisrICAg ICAgICAgICAgICAgIHdoaWxlIChHZXRMYXRlc3RJbmRleCAoKSA+IGxhc3Rfbm90aWZpY2F0aW9u X2luZGV4KSB7CisrICAgICAgICAgICAgICAgICAgICB0cnkgeworKyAgICAgICAgICAgICAgICAg ICAgICAgIENvcmVFdmVudExvZy5PbkVudHJ5V3JpdHRlbiAoR2V0RW50cnkgKGxhc3Rfbm90aWZp Y2F0aW9uX2luZGV4KyspKTsKKysgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlv biBleCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBmaW5kIHNvbWUgcHJv cGVyIHdheSB0byBvdXRwdXQgdGhpcyBlcnJvcgorKyAgICAgICAgICAgICAgICAgICAgICAgIERl YnVnLldyaXRlTGluZSAoZXgpOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg ICAgICB9CisrICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisrICAgICAgICAgICAgICAgIGxv Y2sgKHRoaXMpCisrICAgICAgICAgICAgICAgICAgICBfbm90aWZ5aW5nID0gZmFsc2U7CisrICAg ICAgICAgICAgfQorKyAgICAgICAgfQorKworIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgRW5hYmxl Tm90aWZpY2F0aW9uICgpCisgCQl7CisgCQkJaWYgKGZpbGVfd2F0Y2hlciA9PSBudWxsKSB7CitA QCAtMTQ5LDI4ICsxNzMsNyBAQCBuYW1lc3BhY2UgU3lzdGVtLkRpYWdub3N0aWNzCisgCisgCQkJ CWZpbGVfd2F0Y2hlciA9IG5ldyBGaWxlU3lzdGVtV2F0Y2hlciAoKTsKKyAJCQkJZmlsZV93YXRj aGVyLlBhdGggPSBsb2dEaXI7CistCQkJCWZpbGVfd2F0Y2hlci5DcmVhdGVkICs9IGRlbGVnYXRl IChvYmplY3QgbywgRmlsZVN5c3RlbUV2ZW50QXJncyBlKSB7CistCQkJCQlsb2NrICh0aGlzKSB7 CistCQkJCQkJaWYgKF9ub3RpZnlpbmcpCistCQkJCQkJCXJldHVybjsKKy0JCQkJCQlfbm90aWZ5 aW5nID0gdHJ1ZTsKKy0JCQkJCX0KKy0KKy0JCQkJCS8vIFByb2Nlc3MgZXZlcnkgbmV3IGVudHJ5 IGluIG9uZSBub3RpZmljYXRpb24gZXZlbnQuCistCQkJCQl0cnkgeworLQkJCQkJCXdoaWxlIChH ZXRMYXRlc3RJbmRleCAoKSA+IGxhc3Rfbm90aWZpY2F0aW9uX2luZGV4KSB7CistCQkJCQkJCXRy eSB7CistCQkJCQkJCQlDb3JlRXZlbnRMb2cuT25FbnRyeVdyaXR0ZW4gKEdldEVudHJ5IChsYXN0 X25vdGlmaWNhdGlvbl9pbmRleCsrKSk7CistCQkJCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkg eworLQkJCQkJCQkJLy8gRklYTUU6IGZpbmQgc29tZSBwcm9wZXIgd2F5IHRvIG91dHB1dCB0aGlz IGVycm9yCistCQkJCQkJCQlEZWJ1Zy5Xcml0ZUxpbmUgKGV4KTsKKy0JCQkJCQkJfQorLQkJCQkJ CX0KKy0JCQkJCX0gZmluYWxseSB7CistCQkJCQkJbG9jayAodGhpcykKKy0JCQkJCQkJX25vdGlm eWluZyA9IGZhbHNlOworLQkJCQkJfQorLQkJCQl9OworKwkJCQlmaWxlX3dhdGNoZXIuQ3JlYXRl ZCArPSBuZXcgRmlsZVN5c3RlbUV2ZW50SGFuZGxlcihGaWxlQ3JlYXRpb25XYXRjaGVyKTsKKyAJ CQl9CisgCQkJbGFzdF9ub3RpZmljYXRpb25faW5kZXggPSBHZXRMYXRlc3RJbmRleCAoKTsKKyAJ CQlmaWxlX3dhdGNoZXIuRW5hYmxlUmFpc2luZ0V2ZW50cyA9IHRydWU7CitkaWZmIC0tZ2l0IGEv bWNzL2NsYXNzL1N5c3RlbS9TeXN0ZW0uSU8vSW5vdGlmeVdhdGNoZXIuY3MgYi9tY3MvY2xhc3Mv U3lzdGVtL1N5c3RlbS5JTy9Jbm90aWZ5V2F0Y2hlci5jcworaW5kZXggZDhlN2FjY2UzYTcuLjdi MDkwN2VlYmMxIDEwMDY0NAorLS0tIGEvbWNzL2NsYXNzL1N5c3RlbS9TeXN0ZW0uSU8vSW5vdGlm eVdhdGNoZXIuY3MKKysrKyBiL21jcy9jbGFzcy9TeXN0ZW0vU3lzdGVtLklPL0lub3RpZnlXYXRj aGVyLmNzCitAQCAtNDIzLDE5ICs0MjMsMzYgQEAgbmFtZXNwYWNlIFN5c3RlbS5JTyB7CisgCQkJ cmV0dXJuIDE2ICsgbGVuOworIAkJfQorIAorKyAgICAgICAgY2xhc3MgVGhpbmdFbnVtZXJhdG9y IDogSUVudW1lcmF0b3IsIElFbnVtZXJhYmxlCisrICAgICAgICB7CisrICAgICAgICAgICAgb2Jq ZWN0IHRoaW5nOworKyAgICAgICAgICAgIGludCBqOworKyAgICAgICAgICAgIHB1YmxpYyBUaGlu Z0VudW1lcmF0b3Iob2JqZWN0IHRoaW5nKQorKyAgICAgICAgICAgIHsgdGhpcy50aGluZyA9IHRo aW5nOyBqID0gLTE7IH0KKysKKysgICAgICAgICAgICBwdWJsaWMgSUVudW1lcmF0b3IgR2V0RW51 bWVyYXRvcigpIHsgcmV0dXJuIHRoaXM7IH0KKysgICAgICAgICAgICBwdWJsaWMgYm9vbCBNb3Zl TmV4dCgpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBpZih0aGluZyA9PSBudWxs KSB7IHJldHVybiBmYWxzZTsgfQorKyAgICAgICAgICAgICAgICBpZih0aGluZyBpcyBBcnJheUxp c3QpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEFycmF5TGlzdCBs aXN0ID0gKEFycmF5TGlzdCkgdGhpbmc7CisrICAgICAgICAgICAgICAgICAgICBpZihqKzEgPj0g bGlzdC5Db3VudCkgeyByZXR1cm4gZmFsc2U7IH0KKysgICAgICAgICAgICAgICAgICAgIGorKzsK KysgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICAgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgICAgIGlmKGogPT0gLTEpIHsgaiA9IDA7IHJldHVybiB0cnVlOyB9CisrICAg ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAg cHVibGljIHZvaWQgUmVzZXQoKSB7IGogPSAtMTsgfQorKyAgICAgICAgICAgIHB1YmxpYyBvYmpl Y3QgQ3VycmVudAorKyAgICAgICAgICAgIHsgZ2V0IHsgaWYodGhpbmcgaXMgQXJyYXlMaXN0KSBy ZXR1cm4gKChBcnJheUxpc3QpdGhpbmcpW2pdOworKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHRoaW5nOyB9fQorKyAgICAgICAgfQorKworIAkJc3RhdGljIElFbnVtZXJhYmxlIEdldEVudW1l cmF0b3IgKG9iamVjdCBzb3VyY2UpCisgCQl7CistCQkJaWYgKHNvdXJjZSA9PSBudWxsKQorLQkJ CQl5aWVsZCBicmVhazsKKy0KKy0JCQlpZiAoc291cmNlIGlzIElub3RpZnlEYXRhKQorLQkJCQl5 aWVsZCByZXR1cm4gc291cmNlOworLQorLQkJCWlmIChzb3VyY2UgaXMgQXJyYXlMaXN0KSB7Cist CQkJCUFycmF5TGlzdCBsaXN0ID0gKEFycmF5TGlzdCkgc291cmNlOworLQkJCQlmb3IgKGludCBp ID0gMDsgaSA8IGxpc3QuQ291bnQ7IGkrKykKKy0JCQkJCXlpZWxkIHJldHVybiBsaXN0IFtpXTsK Ky0JCQl9CisrCQkJcmV0dXJuIG5ldyBUaGluZ0VudW1lcmF0b3Ioc291cmNlKTsKKyAJCX0KKyAK KyAJCS8qIEludGVyZXN0aW5nIGV2ZW50czoKK2RpZmYgLS1naXQgYS9tY3MvY2xhc3MvU3lzdGVt L1N5c3RlbS5OZXQvU2VydmljZVBvaW50LmNzIGIvbWNzL2NsYXNzL1N5c3RlbS9TeXN0ZW0uTmV0 L1NlcnZpY2VQb2ludC5jcworaW5kZXggYTg4NGQ5MGY1MDcuLmUxYzczYjA5OGMyIDEwMDY0NAor LS0tIGEvbWNzL2NsYXNzL1N5c3RlbS9TeXN0ZW0uTmV0L1NlcnZpY2VQb2ludC5jcworKysrIGIv bWNzL2NsYXNzL1N5c3RlbS9TeXN0ZW0uTmV0L1NlcnZpY2VQb2ludC5jcworQEAgLTEzNyw3ICsx MzcsNyBAQCBuYW1lc3BhY2UgU3lzdGVtLk5ldAorIAkJCWdldCB7CisgCQkJCXJldHVybiBpZGxl U2luY2U7CisgCQkJfQorLQkJCWludGVybmFsIHNldCB7CisrCQkJc2V0IHsKKyAJCQkJbG9jayAo bG9ja2VyKQorIAkJCQkJaWRsZVNpbmNlID0gdmFsdWU7CisgCQkJfQorZGlmZiAtLWdpdCBhL21j cy9jbGFzcy9TeXN0ZW0vU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zL0Jhc2VNYWNoaW5l LmNzLTIgYi9tY3MvY2xhc3MvU3lzdGVtL1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy9C YXNlTWFjaGluZS5jcy0yCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAu LmE2ODVlMjY3OWI3CistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvY2xhc3MvU3lzdGVtL1N5c3Rl bS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy9CYXNlTWFjaGluZS5jcy0yCitAQCAtMCwwICsxLDE2 OCBAQAorKy8vCisrLy8gQmFzZU1hY2hpbmUuanZtLmNzCisrLy8KKysvLyBBdXRob3I6CisrLy8g YXV0aG9yOglEYW4gTGV3aXMgKGRsZXdpc0BnbXguY28udWspCisrLy8JCShjKSAyMDAyCisrLy8g Q29weXJpZ2h0IChDKSAyMDA1IE5vdmVsbCwgSW5jIChodHRwOi8vd3d3Lm5vdmVsbC5jb20pCisr Ly8KKysKKysvLworKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworKy8vIGEgY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorKy8vICJTb2Z0d2FyZSIp LCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcK KysvLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsCisrLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisrLy8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisrLy8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgorKy8vCisrLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKysvLyBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKysvLwor Ky8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELAorKy8vIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorKy8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisrLy8gTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorKy8vIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04KKysvLyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJP TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKysvLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKysvLworKworK3VzaW5nIFN5 c3RlbTsKKyt1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7CisrdXNpbmcgU3lzdGVtLkNvbGxlY3Rp b25zLlNwZWNpYWxpemVkOworKworK25hbWVzcGFjZSBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVz c2lvbnMKKyt7CisrCWFic3RyYWN0IGNsYXNzIEJhc2VNYWNoaW5lIDogSU1hY2hpbmUKKysJewor KwkJaW50ZXJuYWwgZGVsZWdhdGUgdm9pZCBNYXRjaEFwcGVuZEV2YWx1YXRvciAoTWF0Y2ggbWF0 Y2gsIFN0cmluZ0J1aWxkZXIgc2IpOworKworKwkJcHVibGljIHZpcnR1YWwgc3RyaW5nIFJlcGxh Y2UgKFJlZ2V4IHJlZ2V4LCBzdHJpbmcgaW5wdXQsIHN0cmluZyByZXBsYWNlbWVudCwgaW50IGNv dW50LCBpbnQgc3RhcnRhdCkKKysJCXsKKysJCQlSZXBsYWNlbWVudEV2YWx1YXRvciBldiA9IG5l dyBSZXBsYWNlbWVudEV2YWx1YXRvciAocmVnZXgsIHJlcGxhY2VtZW50KTsKKysJCQlpZiAocmVn ZXguUmlnaHRUb0xlZnQpCisrCQkJCXJldHVybiBSVExSZXBsYWNlIChyZWdleCwgaW5wdXQsIG5l dyBNYXRjaEV2YWx1YXRvciAoZXYuRXZhbHVhdGUpLCBjb3VudCwgc3RhcnRhdCk7CisrCQkJZWxz ZQorKwkJCQlyZXR1cm4gTFRSUmVwbGFjZSAocmVnZXgsIGlucHV0LCBuZXcgTWF0Y2hBcHBlbmRF dmFsdWF0b3IgKGV2LkV2YWx1YXRlQXBwZW5kKSwgY291bnQsIHN0YXJ0YXQpOworKwkJfQorKwor KwkJdmlydHVhbCBwdWJsaWMgc3RyaW5nIFtdIFNwbGl0IChSZWdleCByZWdleCwgc3RyaW5nIGlu cHV0LCBpbnQgY291bnQsIGludCBzdGFydGF0KQorKwkJeworKwkJCUFycmF5TGlzdCBzcGxpdHMg PSBuZXcgQXJyYXlMaXN0ICgpOworKwkJCWlmIChjb3VudCA9PSAwKQorKwkJCQljb3VudCA9IElu dDMyLk1heFZhbHVlOworKworKwkJCWludCBwdHIgPSBzdGFydGF0OworKwkJCU1hdGNoIG0gPSBu dWxsOworKwkJCXdoaWxlICgtLWNvdW50ID4gMCkgeworKwkJCQlpZiAobSAhPSBudWxsKQorKwkJ CQkJbSA9IG0uTmV4dE1hdGNoICgpOworKwkJCQllbHNlCisrCQkJCQltID0gcmVnZXguTWF0Y2gg KGlucHV0LCBwdHIpOworKworKwkJCQlpZiAoIW0uU3VjY2VzcykKKysJCQkJCWJyZWFrOworKwor KwkJCQlpZiAocmVnZXguUmlnaHRUb0xlZnQpCisrCQkJCQlzcGxpdHMuQWRkIChpbnB1dC5TdWJz dHJpbmcgKG0uSW5kZXggKyBtLkxlbmd0aCwgcHRyIC0gbS5JbmRleCAtIG0uTGVuZ3RoKSk7Cisr CQkJCWVsc2UKKysJCQkJCXNwbGl0cy5BZGQgKGlucHV0LlN1YnN0cmluZyAocHRyLCBtLkluZGV4 IC0gcHRyKSk7CisrCisrCQkJCWludCBnY291bnQgPSBtLkdyb3Vwcy5Db3VudDsKKysJCQkJZm9y IChpbnQgZ2luZGV4ID0gMTsgZ2luZGV4IDwgZ2NvdW50OyBnaW5kZXgrKykgeworKwkJCQkJR3Jv dXAgZ3JwID0gbS5Hcm91cHMgW2dpbmRleF07CisrCQkJCQlzcGxpdHMuQWRkIChpbnB1dC5TdWJz dHJpbmcgKGdycC5JbmRleCwgZ3JwLkxlbmd0aCkpOworKwkJCQl9CisrCisrCQkJCWlmIChyZWdl eC5SaWdodFRvTGVmdCkKKysJCQkJCXB0ciA9IG0uSW5kZXg7CisrCQkJCWVsc2UKKysJCQkJCXB0 ciA9IG0uSW5kZXggKyBtLkxlbmd0aDsKKysKKysJCQl9CisrCisrCQkJaWYgKHJlZ2V4LlJpZ2h0 VG9MZWZ0ICYmIHB0ciA+PSAwKQorKwkJCQlzcGxpdHMuQWRkIChpbnB1dC5TdWJzdHJpbmcgKDAs IHB0cikpOworKwkJCWlmICghcmVnZXguUmlnaHRUb0xlZnQgJiYgcHRyIDw9IGlucHV0Lkxlbmd0 aCkKKysJCQkJc3BsaXRzLkFkZCAoaW5wdXQuU3Vic3RyaW5nIChwdHIpKTsKKysKKysJCQlyZXR1 cm4gKHN0cmluZyBbXSkgc3BsaXRzLlRvQXJyYXkgKHR5cGVvZiAoc3RyaW5nKSk7CisrCQl9Cisr CisrCQl2aXJ0dWFsIHB1YmxpYyBNYXRjaCBTY2FuIChSZWdleCByZWdleCwgc3RyaW5nIHRleHQs IGludCBzdGFydCwgaW50IGVuZCkKKysJCXsKKysJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRF eGNlcHRpb24gKCJTY2FuIG1ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkIGluIGRlcml2ZWQgY2xh c3NlcyIpOworKwkJfQorKworKwkJdmlydHVhbCBwdWJsaWMgc3RyaW5nIFJlc3VsdCAoc3RyaW5n IHJlcGxhY2VtZW50LCBNYXRjaCBtYXRjaCkKKysJCXsKKysJCQlyZXR1cm4gUmVwbGFjZW1lbnRF dmFsdWF0b3IuRXZhbHVhdGUgKHJlcGxhY2VtZW50LCBtYXRjaCk7CisrCQl9CisrCisrCQlpbnRl cm5hbCBzdGF0aWMgc3RyaW5nIExUUlJlcGxhY2UgKFJlZ2V4IHJlZ2V4LCBzdHJpbmcgaW5wdXQs IE1hdGNoQXBwZW5kRXZhbHVhdG9yIGV2YWx1YXRvciwgaW50IGNvdW50LCBpbnQgc3RhcnRhdCkK KysJCXsKKysJCQlNYXRjaCBtID0gcmVnZXguTWF0Y2ggKGlucHV0LCBzdGFydGF0KTsKKysJCQlp ZiAoIW0uU3VjY2VzcykKKysJCQkJcmV0dXJuIGlucHV0OworKworKwkJCVN0cmluZ0J1aWxkZXIg cmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXIgKCk7CisrCQkJaW50IHB0ciA9IHN0YXJ0YXQ7Cisr CQkJaW50IGNvdW50ZXIgPSBjb3VudDsKKysKKysJCQlyZXN1bHQuQXBwZW5kIChpbnB1dCwgMCwg cHRyKTsKKysKKysJCQlkbyB7CisrCQkJCWlmIChjb3VudCAhPSAtMSkKKysJCQkJCWlmIChjb3Vu dGVyLS0gPD0gMCkKKysJCQkJCQlicmVhazsKKysJCQkJaWYgKG0uSW5kZXggPCBwdHIpCisrCQkJ CQl0aHJvdyBuZXcgU3lzdGVtRXhjZXB0aW9uICgiaG93Iik7CisrCQkJCXJlc3VsdC5BcHBlbmQg KGlucHV0LCBwdHIsIG0uSW5kZXggLSBwdHIpOworKwkJCQlldmFsdWF0b3IgKG0sIHJlc3VsdCk7 CisrCisrCQkJCXB0ciA9IG0uSW5kZXggKyBtLkxlbmd0aDsKKysJCQkJbSA9IG0uTmV4dE1hdGNo ICgpOworKwkJCX0gd2hpbGUgKG0uU3VjY2Vzcyk7CisrCisrCQkJcmVzdWx0LkFwcGVuZCAoaW5w dXQsIHB0ciwgaW5wdXQuTGVuZ3RoIC0gcHRyKTsKKysKKysJCQlyZXR1cm4gcmVzdWx0LlRvU3Ry aW5nICgpOworKwkJfQorKworKwkJaW50ZXJuYWwgc3RhdGljIHN0cmluZyBSVExSZXBsYWNlIChS ZWdleCByZWdleCwgc3RyaW5nIGlucHV0LCBNYXRjaEV2YWx1YXRvciBldmFsdWF0b3IsIGludCBj b3VudCwgaW50IHN0YXJ0YXQpCisrCQl7CisrCQkJTWF0Y2ggbSA9IHJlZ2V4Lk1hdGNoIChpbnB1 dCwgc3RhcnRhdCk7CisrCQkJaWYgKCFtLlN1Y2Nlc3MpCisrCQkJCXJldHVybiBpbnB1dDsKKysK KysJCQlpbnQgcHRyID0gc3RhcnRhdDsKKysJCQlpbnQgY291bnRlciA9IGNvdW50OworKwkJCVN0 cmluZ0NvbGxlY3Rpb24gcGllY2VzID0gbmV3IFN0cmluZ0NvbGxlY3Rpb24gKCk7CisrCQkJcGll Y2VzLkFkZCAoaW5wdXQuU3Vic3RyaW5nIChwdHIpKTsKKysKKysJCQlkbyB7CisrCQkJCWlmIChj b3VudCAhPSAtMSkKKysJCQkJCWlmIChjb3VudGVyLS0gPD0gMCkKKysJCQkJCQlicmVhazsKKysJ CQkJaWYgKG0uSW5kZXggKyBtLkxlbmd0aCA+IHB0cikKKysJCQkJCXRocm93IG5ldyBTeXN0ZW1F eGNlcHRpb24gKCJob3ciKTsKKysJCQkJcGllY2VzLkFkZCAoaW5wdXQuU3Vic3RyaW5nIChtLklu ZGV4ICsgbS5MZW5ndGgsIHB0ciAtIG0uSW5kZXggLSBtLkxlbmd0aCkpOworKwkJCQlwaWVjZXMu QWRkIChldmFsdWF0b3IgKG0pKTsKKysKKysJCQkJcHRyID0gbS5JbmRleDsKKysJCQkJbSA9IG0u TmV4dE1hdGNoICgpOworKwkJCX0gd2hpbGUgKG0uU3VjY2Vzcyk7CisrCisrCQkJU3RyaW5nQnVp bGRlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVpbGRlciAoKTsKKysKKysJCQlyZXN1bHQuQXBwZW5k IChpbnB1dCwgMCwgcHRyKTsKKysJCQlmb3IgKGludCBpID0gcGllY2VzLkNvdW50OyBpID4gMDsg KQorKwkJCQlyZXN1bHQuQXBwZW5kIChwaWVjZXMgWy0taV0pOworKworKwkJCXBpZWNlcy5DbGVh ciAoKTsKKysKKysJCQlyZXR1cm4gcmVzdWx0LlRvU3RyaW5nICgpOworKwkJfQorKwl9CisrfQor ZGlmZiAtLWdpdCBhL21jcy9jbGFzcy9jb3JsaWIvU3lzdGVtLlJ1bnRpbWUuUmVtb3RpbmcuTWVz c2FnaW5nL01ldGhvZENhbGwuY3MgYi9tY3MvY2xhc3MvY29ybGliL1N5c3RlbS5SdW50aW1lLlJl bW90aW5nLk1lc3NhZ2luZy9NZXRob2RDYWxsLmNzCitpbmRleCA5NDA2OWQxNzI3ZS4uMDQyNTc0 MTc4ZmEgMTAwNjQ0CistLS0gYS9tY3MvY2xhc3MvY29ybGliL1N5c3RlbS5SdW50aW1lLlJlbW90 aW5nLk1lc3NhZ2luZy9NZXRob2RDYWxsLmNzCisrKysgYi9tY3MvY2xhc3MvY29ybGliL1N5c3Rl bS5SdW50aW1lLlJlbW90aW5nLk1lc3NhZ2luZy9NZXRob2RDYWxsLmNzCitAQCAtMjcyLDYgKzI3 MiwxMCBAQCBuYW1lc3BhY2UgU3lzdGVtLlJ1bnRpbWUuUmVtb3RpbmcuTWVzc2FnaW5nIHsKKyAJ CQlzZXQgeyBfdXJpID0gdmFsdWU7IH0KKyAJCX0KKyAKKysgICAgICAgIHN0cmluZyBJTWV0aG9k TWVzc2FnZS5VcmkgeworKwkJCWdldCB7IHJldHVybiBVcmk7IH0KKysJCX0KKysKKyAJCXN0cmlu ZyBJSW50ZXJuYWxNZXNzYWdlLlVyaSB7CisgCQkJZ2V0IHsgcmV0dXJuIFVyaTsgfQorIAkJCXNl dCB7IFVyaSA9IHZhbHVlOyB9CitkaWZmIC0tZ2l0IGEvbWNzL2NsYXNzL2NvcmxpYi9TeXN0ZW0u UnVudGltZS5SZW1vdGluZy5NZXNzYWdpbmcvTWV0aG9kUmVzcG9uc2UuY3MgYi9tY3MvY2xhc3Mv Y29ybGliL1N5c3RlbS5SdW50aW1lLlJlbW90aW5nLk1lc3NhZ2luZy9NZXRob2RSZXNwb25zZS5j cworaW5kZXggMWIxZWFiMDE0YjMuLjU3NWU3ZTM3ZGVlIDEwMDY0NAorLS0tIGEvbWNzL2NsYXNz L2NvcmxpYi9TeXN0ZW0uUnVudGltZS5SZW1vdGluZy5NZXNzYWdpbmcvTWV0aG9kUmVzcG9uc2Uu Y3MKKysrKyBiL21jcy9jbGFzcy9jb3JsaWIvU3lzdGVtLlJ1bnRpbWUuUmVtb3RpbmcuTWVzc2Fn aW5nL01ldGhvZFJlc3BvbnNlLmNzCitAQCAtMjcyLDYgKzI3MiwxMCBAQCBuYW1lc3BhY2UgU3lz dGVtLlJ1bnRpbWUuUmVtb3RpbmcuTWVzc2FnaW5nIHsKKyAJCQl9CisgCQl9CisgCisrICAgICAg ICBzdHJpbmcgSU1ldGhvZE1lc3NhZ2UuVXJpIHsKKysJCQlnZXQgeyByZXR1cm4gVXJpOyB9Cisr CQl9CisrCisgCQlzdHJpbmcgSUludGVybmFsTWVzc2FnZS5VcmkgeworIAkJCWdldCB7IHJldHVy biBVcmk7IH0KKyAJCQlzZXQgeyBVcmkgPSB2YWx1ZTsgfQorZGlmZiAtLWdpdCBhL21jcy9jbGFz cy9jb3JsaWIvU3lzdGVtLlJ1bnRpbWUuUmVtb3RpbmcuTWVzc2FnaW5nL1JldHVybk1lc3NhZ2Uu Y3MgYi9tY3MvY2xhc3MvY29ybGliL1N5c3RlbS5SdW50aW1lLlJlbW90aW5nLk1lc3NhZ2luZy9S ZXR1cm5NZXNzYWdlLmNzCitpbmRleCBhZWUzOWY1YmI4MS4uZWMwOWI3M2MxNWQgMTAwNjQ0Cist LS0gYS9tY3MvY2xhc3MvY29ybGliL1N5c3RlbS5SdW50aW1lLlJlbW90aW5nLk1lc3NhZ2luZy9S ZXR1cm5NZXNzYWdlLmNzCisrKysgYi9tY3MvY2xhc3MvY29ybGliL1N5c3RlbS5SdW50aW1lLlJl bW90aW5nLk1lc3NhZ2luZy9SZXR1cm5NZXNzYWdlLmNzCitAQCAtMTY2LDYgKzE2NiwxMCBAQCBu YW1lc3BhY2UgU3lzdGVtLlJ1bnRpbWUuUmVtb3RpbmcuTWVzc2FnaW5nCisgCQkJfQorIAkJfQor IAorKyAgICAgICAgc3RyaW5nIElNZXRob2RNZXNzYWdlLlVyaSB7CisrCQkJZ2V0IHsgcmV0dXJu IFVyaTsgfQorKwkJfQorKworIAkJc3RyaW5nIElJbnRlcm5hbE1lc3NhZ2UuVXJpIHsKKyAJCQln ZXQgeyByZXR1cm4gVXJpOyB9CisgCQkJc2V0IHsgVXJpID0gdmFsdWU7IH0KK2RpZmYgLS1naXQg YS9tY3MvY2xhc3MvY29ybGliL1N5c3RlbS9NdWx0aWNhc3REZWxlZ2F0ZS5jcyBiL21jcy9jbGFz cy9jb3JsaWIvU3lzdGVtL011bHRpY2FzdERlbGVnYXRlLmNzCitpbmRleCBiMzZhZmYzMzQ5Mi4u Y2Y5MTM0YTMzYjMgMTAwNjQ0CistLS0gYS9tY3MvY2xhc3MvY29ybGliL1N5c3RlbS9NdWx0aWNh c3REZWxlZ2F0ZS5jcworKysrIGIvbWNzL2NsYXNzL2NvcmxpYi9TeXN0ZW0vTXVsdGljYXN0RGVs ZWdhdGUuY3MKK0BAIC0yNjIsMTYgKzI2MiwxNiBAQCBuYW1lc3BhY2UgU3lzdGVtCisgCisgCQlw dWJsaWMgc3RhdGljIGJvb2wgb3BlcmF0b3IgPT0gKE11bHRpY2FzdERlbGVnYXRlIGEsIE11bHRp Y2FzdERlbGVnYXRlIGIpCisgCQl7CistCQkJaWYgKGEgPT0gbnVsbCkKKy0JCSAgICAJCXJldHVy biBiID09IG51bGw7CisrCQkJaWYgKChvYmplY3QpYSA9PSBudWxsKQorKyAgICAgICAgICAgICAg ICByZXR1cm4gKG9iamVjdCliID09IG51bGw7CisgCQkgICAgCQkKKyAJCQlyZXR1cm4gYS5FcXVh bHMgKGIpOworIAkJfQorIAkJCisgCQlwdWJsaWMgc3RhdGljIGJvb2wgb3BlcmF0b3IgIT0gKE11 bHRpY2FzdERlbGVnYXRlIGEsIE11bHRpY2FzdERlbGVnYXRlIGIpCisgCQl7CistCQkJaWYgKGEg PT0gbnVsbCkKKy0JCQkJcmV0dXJuIGIgIT0gbnVsbDsKKysJCQlpZiAoKG9iamVjdClhID09IG51 bGwpCisrCQkJCXJldHVybiAob2JqZWN0KWIgIT0gbnVsbDsKKyAJCSAgICAJCisgCQkJcmV0dXJu ICFhLkVxdWFscyAoYik7CisgCQl9CitkaWZmIC0tZ2l0IGEvbWNzL2NsYXNzL2NvcmxpYi9TeXN0 ZW0vT2JqZWN0LmNzIGIvbWNzL2NsYXNzL2NvcmxpYi9TeXN0ZW0vT2JqZWN0LmNzCitpbmRleCA2 YjBhMDNkMmEzMS4uNjk0Y2JkNDU0ZTEgMTAwNjQ0CistLS0gYS9tY3MvY2xhc3MvY29ybGliL1N5 c3RlbS9PYmplY3QuY3MKKysrKyBiL21jcy9jbGFzcy9jb3JsaWIvU3lzdGVtL09iamVjdC5jcwor QEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgU3lzdGVtLlJ1bnRpbWUuQ29uc3RyYWluZWRFeGVjdXRp b247CisgCisgbmFtZXNwYWNlIFN5c3RlbSB7CisgCistCVtTZXJpYWxpemFibGVdCisrCS8vW1Nl cmlhbGl6YWJsZV0KKyAJW0NsYXNzSW50ZXJmYWNlIChDbGFzc0ludGVyZmFjZVR5cGUuQXV0b0R1 YWwpXQorICNpZiBORVRfMl8wCisgCVtDb21WaXNpYmxlICh0cnVlKV0KK0BAIC00Nyw2ICs0Nywx MiBAQAorICNlbmRpZgorIAlwdWJsaWMgY2xhc3MgT2JqZWN0IHsKKyAKKysgICAgICAgIC8vIERl ZmF1bHQgZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IGZpbmFsaXplci4KKysgICAgICAgICNpZiBO RVRfMl8wCisrCQlbUmVsaWFiaWxpdHlDb250cmFjdEF0dHJpYnV0ZSAoQ29uc2lzdGVuY3kuV2ls bE5vdENvcnJ1cHRTdGF0ZSwgQ2VyLlN1Y2Nlc3MpXQorKyAgICAgICAgI2VuZGlmCisrICAgICAg ICBwcm90ZWN0ZWQgdmlydHVhbCB2b2lkIEZpbmFsaXplKCkge30KKysKKyAJCS8vIDxzdW1tYXJ5 PgorIAkJLy8gICBDb21wYXJlcyB0aGlzIG9iamVjdCB0byB0aGUgc3BlY2lmaWVkIG9iamVjdC4K KyAJCS8vICAgUmV0dXJucyB0cnVlIGlmIHRoZXkgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2Uu CitAQCAtODAsMTYgKzg2LDYgQEAgbmFtZXNwYWNlIFN5c3RlbSB7CisgCQl7CisgCQl9CisgCist CQkvLyA8c3VtbWFyeT4KKy0JCS8vICAgT2JqZWN0IGRlc3RydWN0b3IuIAorLQkJLy8gPC9zdW1t YXJ5PgorLSNpZiBORVRfMl8wCistCQlbUmVsaWFiaWxpdHlDb250cmFjdEF0dHJpYnV0ZSAoQ29u c2lzdGVuY3kuV2lsbE5vdENvcnJ1cHRTdGF0ZSwgQ2VyLlN1Y2Nlc3MpXQorLSNlbmRpZgorLQkJ fk9iamVjdCAoKQorLQkJeworLQkJfQorLQorIAkJLy8gPHN1bW1hcnk+CisgCQkvLyAgIFJldHVy bnMgYSBoYXNoY29kZSBmb3IgdGhpcyBvYmplY3QuICBFYWNoIGRlcml2ZWQKKyAJCS8vICAgY2xh c3Mgc2hvdWxkIHJldHVybiBhIGhhc2ggY29kZSB0aGF0IG1ha2VzIHNlbnNlCitkaWZmIC0tZ2l0 IGEvbWNzL21jcy9jb2RlZ2VuLmNzIGIvbWNzL21jcy9jb2RlZ2VuLmNzCitpbmRleCBjOTRhNjE3 NzJmNC4uODU0NmQ2NzFlYzYgMTAwNjQ0CistLS0gYS9tY3MvbWNzL2NvZGVnZW4uY3MKKysrKyBi L21jcy9tY3MvY29kZWdlbi5jcworQEAgLTQ5OCw3ICs0OTgsNyBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAgeworIAorIAkJLy8gdXRpbGl0eSBoZWxwZXIgZm9yIENoZWNrRXhwciwgVW5DaGVja0V4 cHIsIENoZWNrZWQgYW5kIFVuY2hlY2tlZCBzdGF0ZW1lbnRzCisgCQkvLyBpdCdzIHB1YmxpYyBz byB0aGF0IHdlIGNhbiB1c2UgYSBzdHJ1Y3QgYXQgdGhlIGNhbGxzaXRlCistCQlwdWJsaWMgc3Ry dWN0IEZsYWdzSGFuZGxlIDogSURpc3Bvc2FibGUKKysJCXB1YmxpYyBjbGFzcyBGbGFnc0hhbmRs ZSA6IElEaXNwb3NhYmxlCisgCQl7CisgCQkJRW1pdENvbnRleHQgZWM7CisgCQkJcmVhZG9ubHkg RmxhZ3MgaW52bWFzaywgb2xkdmFsOworZGlmZiAtLWdpdCBhL21jcy9tY3MvdHlwZW1hbmFnZXIu Y3MgYi9tY3MvbWNzL3R5cGVtYW5hZ2VyLmNzCitpbmRleCAxZTE3M2RlODlkMi4uNTg0NzdhZjQx YTMgMTAwNjQ0CistLS0gYS9tY3MvbWNzL3R5cGVtYW5hZ2VyLmNzCisrKysgYi9tY3MvbWNzL3R5 cGVtYW5hZ2VyLmNzCitAQCAtNjI5LDE4ICs2MjksNDIgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJw IHsKKyAJCXJldHVybiBDU2hhcnBOYW1lIChHZXRGdWxsTmFtZSAodCkpOworICAgICB9CisgCisr ICAgIHN0YXRpYyBib29sIFN0YXJ0c1dpdGhXb3JkKHN0cmluZyBoYXlzdGFjaywgc3RyaW5nIGNo ZWNrKQorKyAgICB7CisrICAgICAgICBpZihTdHJpbmcuQ29tcGFyZShoYXlzdGFjaywgMCwgY2hl Y2ssIDAsIGNoZWNrLkxlbmd0aCwgZmFsc2UpICE9IDApCisrICAgICAgICB7IHJldHVybiBmYWxz ZTsgfQorKyAgICAgICAgaWYoY2hlY2suTGVuZ3RoID09IGhheXN0YWNrLkxlbmd0aCkgeyByZXR1 cm4gdHJ1ZTsgfQorKyAgICAgICAgY2hhciBjID0gaGF5c3RhY2tbY2hlY2suTGVuZ3RoXTsKKysg ICAgICAgIHJldHVybiAhKENoYXIuSXNMZXR0ZXIoYykgfHwgQ2hhci5Jc0RpZ2l0KGMpKTsKKysg ICAgfQorKyAgICAgICAgCisgCXB1YmxpYyBzdGF0aWMgc3RyaW5nIENTaGFycE5hbWUgKHN0cmlu ZyBuYW1lKQorIAl7CisgCQlpZiAobmFtZS5TdGFydHNXaXRoIChBbm9ueW1vdXNUeXBlQ2xhc3Mu Q2xhc3NOYW1lUHJlZml4KSkKKyAJCQkJcmV0dXJuIEFub255bW91c1R5cGVDbGFzcy5TaWduYXR1 cmVGb3JFcnJvcjsKKy0JCQkKKy0JCXJldHVybiBSZWdleC5SZXBsYWNlIChuYW1lLAorLQkJCUAi XlN5c3RlbVwuIiArCistCQkJQCIoSW50MzJ8VUludDMyfEludDE2fFVJbnQxNnxJbnQ2NHxVSW50 NjR8IiArCistCQkJQCJTaW5nbGV8RG91YmxlfENoYXJ8RGVjaW1hbHxCeXRlfFNCeXRlfE9iamVj dHwiICsKKy0JCQlAIkJvb2xlYW58U3RyaW5nfFZvaWR8TnVsbCkiICsKKy0JCQlAIihcVyt8XGIp IiwKKy0JCQluZXcgTWF0Y2hFdmFsdWF0b3IgKENTaGFycE5hbWVNYXRjaCkpLlJlcGxhY2UgKCcr JywgJy4nKTsKKysKKysgICAgICAgIGludCBsID0gIlN5c3RlbS4iLkxlbmd0aDsKKysgICAgICAg IGlmKG5hbWUuU3RhcnRzV2l0aCgiU3lzdGVtLiIpICYmIG5hbWUuTGVuZ3RoID4gbCkKKysgICAg ICAgIHsKKysgICAgICAgICAgICBzdHJpbmcgczIgPSBuYW1lLlN1YnN0cmluZyhsKS5Ub0xvd2Vy KCk7CisrICAgICAgICAgICAgaWYoU3RhcnRzV2l0aFdvcmQoczIsICJpbnQzMiIpKQorKyAgICAg ICAgICAgICAgICByZXR1cm4gImludCI7CisrICAgICAgICAgICAgaWYoU3RhcnRzV2l0aFdvcmQo czIsICJ1aW50MzIiKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuICJ1aW50IjsKKysgICAgICAg ICAgICBpZihTdGFydHNXaXRoV29yZChzMiwgImludDE2IikpCisrICAgICAgICAgICAgICAgIHJl dHVybiAic2hvcnQiOworKyAgICAgICAgICAgIGlmKFN0YXJ0c1dpdGhXb3JkKHMyLCAidWludDE2 IikpCisrICAgICAgICAgICAgICAgIHJldHVybiAidXNob3J0IjsKKysgICAgICAgICAgICBpZihT dGFydHNXaXRoV29yZChzMiwgImludDY0IikpCisrICAgICAgICAgICAgICAgIHJldHVybiAibG9u ZyI7CisrICAgICAgICAgICAgaWYoU3RhcnRzV2l0aFdvcmQoczIsICJ1aW50NjQiKSkKKysgICAg ICAgICAgICAgICAgcmV0dXJuICJ1bG9uZyI7CisrICAgICAgICAgICAgaWYoU3RhcnRzV2l0aFdv cmQoczIsICJzaW5nbGUiKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuICJmbG9hdCI7CisrICAg ICAgICAgICAgaWYoU3RhcnRzV2l0aFdvcmQoczIsICJib29sZWFuIikpCisrICAgICAgICAgICAg ICAgIHJldHVybiAiYm9vbCI7CisrICAgICAgICB9CisrICAgICAgICByZXR1cm4gbmFtZTsKKyAJ fQorIAorIAlzdGF0aWMgcHVibGljIHN0cmluZyBDU2hhcnBOYW1lIChUeXBlW10gdHlwZXMpCitA QCAtNjU0LDIxICs2NzgsNiBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJcmV0dXJuIHNi LlRvU3RyaW5nICgpOworIAl9CisgCQorLQlzdGF0aWMgU3RyaW5nIENTaGFycE5hbWVNYXRjaCAo TWF0Y2ggbWF0Y2gpIAorLQl7CistCQlzdHJpbmcgcyA9IG1hdGNoLkdyb3VwcyBbMV0uQ2FwdHVy ZXMgWzBdLlZhbHVlOworLQkJcmV0dXJuIHMuVG9Mb3dlciAoKS4KKy0JCVJlcGxhY2UgKCJpbnQz MiIsICJpbnQiKS4KKy0JCVJlcGxhY2UgKCJ1aW50MzIiLCAidWludCIpLgorLQkJUmVwbGFjZSAo ImludDE2IiwgInNob3J0IikuCistCQlSZXBsYWNlICgidWludDE2IiwgInVzaG9ydCIpLgorLQkJ UmVwbGFjZSAoImludDY0IiwgImxvbmciKS4KKy0JCVJlcGxhY2UgKCJ1aW50NjQiLCAidWxvbmci KS4KKy0JCVJlcGxhY2UgKCJzaW5nbGUiLCAiZmxvYXQiKS4KKy0JCVJlcGxhY2UgKCJib29sZWFu IiwgImJvb2wiKQorLQkJKyBtYXRjaC5Hcm91cHMgWzJdLkNhcHR1cmVzIFswXS5WYWx1ZTsKKy0J fQorLQorIAkvLyBVc2VkIGZvciBlcnJvciByZXBvcnRpbmcgdG8gc2hvdyBzeW1ib2xpYyBuYW1l IGluc3RlYWQgb2YgdW5kZXJseWluZyB2YWx1ZQorIAlwdWJsaWMgc3RhdGljIHN0cmluZyBDU2hh cnBFbnVtVmFsdWUgKFR5cGUgdCwgb2JqZWN0IHZhbHVlKQorIAl7CitkaWZmIC0tZ2l0IGEvbW9u by9pby1sYXllci9wcm9jZXNzZXMuYyBiL21vbm8vaW8tbGF5ZXIvcHJvY2Vzc2VzLmMKK2luZGV4 IGNkNjE3NmNkZGEyLi40ODYwODdkM2ExYiAxMDA2NDQKKy0tLSBhL21vbm8vaW8tbGF5ZXIvcHJv Y2Vzc2VzLmMKKysrKyBiL21vbm8vaW8tbGF5ZXIvcHJvY2Vzc2VzLmMKK0BAIC0xNSw2ICsxNSw3 IEBACisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1 ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgI2luY2x1ZGUg PHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4K K2RpZmYgLS1naXQgYS9tb25vL21ldGFkYXRhL01ha2VmaWxlLmFtIGIvbW9uby9tZXRhZGF0YS9N YWtlZmlsZS5hbQoraW5kZXggNmZmMjM2ODg5NWIuLmI4YmE2NmU4NzU2IDEwMDY0NAorLS0tIGEv bW9uby9tZXRhZGF0YS9NYWtlZmlsZS5hbQorKysrIGIvbW9uby9tZXRhZGF0YS9NYWtlZmlsZS5h bQorQEAgLTE1NCw3ICsxNTQsNiBAQCBsaWJtb25vcnVudGltZWluY2x1ZGVfSEVBREVSUyA9IFwK KyAJb2JqZWN0LmgJXAorIAlleGNlcHRpb24uaAlcCisgCXByb2ZpbGVyLmgJXAorLQlhcHBkb21h aW4uaAlcCisgCW1vbm8tY29uZmlnLmgJXAorIAlkZWJ1Zy1oZWxwZXJzLmgJXAorIAltZW1wb29s LmgKK2RpZmYgLS1naXQgYS9tb25vL21ldGFkYXRhL2NsYXNzLmMgYi9tb25vL21ldGFkYXRhL2Ns YXNzLmMKK2luZGV4IGYxM2YzNzYzMmZlLi4xMjg3MTAzMzdmNCAxMDA2NDQKKy0tLSBhL21vbm8v bWV0YWRhdGEvY2xhc3MuYworKysrIGIvbW9uby9tZXRhZGF0YS9jbGFzcy5jCitAQCAtMjY5NSwx MCArMjY5NSwxMCBAQCBpbml0aWFsaXplX29iamVjdF9zbG90cyAoTW9ub0NsYXNzICpjbGFzcykK KyAJCQkJZmluYWxpemVfc2xvdCA9IGk7CisgCQl9CisgCistCQlnX2Fzc2VydCAoZ2hjX3Nsb3Qg PiAwKTsKKysJCWdfYXNzZXJ0IChnaGNfc2xvdCA+PSAwKTsKKyAJCWRlZmF1bHRfZ2hjID0gY2xh c3MtPnZ0YWJsZSBbZ2hjX3Nsb3RdOworIAorLQkJZ19hc3NlcnQgKGZpbmFsaXplX3Nsb3QgPiAw KTsKKysJCWdfYXNzZXJ0IChmaW5hbGl6ZV9zbG90ID49IDApOworIAkJZGVmYXVsdF9maW5hbGl6 ZSA9IGNsYXNzLT52dGFibGUgW2ZpbmFsaXplX3Nsb3RdOworIAl9CisgfQorZGlmZiAtLWdpdCBh L21vbm8vbWV0YWRhdGEvb2JqZWN0LmMgYi9tb25vL21ldGFkYXRhL29iamVjdC5jCitpbmRleCAy YjZmNDkwOWIzNC4uZWY0YzhmZDhiNDQgMTAwNjQ0CistLS0gYS9tb25vL21ldGFkYXRhL29iamVj dC5jCisrKysgYi9tb25vL21ldGFkYXRhL29iamVjdC5jCitAQCAtODYxLDcgKzg2MSw3IEBAIG1v bm9fY2xhc3NfY29tcHV0ZV9nY19kZXNjcmlwdG9yIChNb25vQ2xhc3MgKmNsYXNzKQorIAkJbW9u b19yZWdpc3Rlcl9qaXRfaWNhbGwgKEdDX2xvY2FsX2djal9mYXN0X21hbGxvYywgIkdDX2xvY2Fs X2djal9mYXN0X21hbGxvYyIsIG1vbm9fY3JlYXRlX2ljYWxsX3NpZ25hdHVyZSAoIm9iamVjdCBp bnQgcHRyIiksIEZBTFNFKTsKKyAjZW5kaWYKKyAJCW1vbm9fcmVnaXN0ZXJfaml0X2ljYWxsIChH Q19nY2pfbWFsbG9jLCAiR0NfZ2NqX21hbGxvYyIsIG1vbm9fY3JlYXRlX2ljYWxsX3NpZ25hdHVy ZSAoIm9iamVjdCBpbnQgcHRyIiksIEZBTFNFKTsKKy0JCW1vbm9fcmVnaXN0ZXJfaml0X2ljYWxs IChHQ19nY2pfZmFzdF9tYWxsb2MsICJHQ19nY2pfZmFzdF9tYWxsb2MiLCBtb25vX2NyZWF0ZV9p Y2FsbF9zaWduYXR1cmUgKCJvYmplY3QgaW50IHB0ciIpLCBGQUxTRSk7CisrCQltb25vX3JlZ2lz dGVyX2ppdF9pY2FsbCAoR0NfZ2NqX21hbGxvYywgIkdDX2djal9mYXN0X21hbGxvYyIsIG1vbm9f Y3JlYXRlX2ljYWxsX3NpZ25hdHVyZSAoIm9iamVjdCBpbnQgcHRyIiksIEZBTFNFKTsKKyAjZW5k aWYKKyAJCWdjal9pbml0ZWQgPSBUUlVFOworIAkJbW9ub19sb2FkZXJfdW5sb2NrICgpOworZGlm ZiAtLWdpdCBhL3J1bnRpbWUvTWFrZWZpbGUuYW0gYi9ydW50aW1lL01ha2VmaWxlLmFtCitpbmRl eCA3Nzk3ODdiM2NlMy4uYjY3OTU3ZGNmMTYgMTAwNjQ0CistLS0gYS9ydW50aW1lL01ha2VmaWxl LmFtCisrKysgYi9ydW50aW1lL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDMgQEAKKy0jIGhhY2sg dG8gcHJldmVudCAnY2hlY2snIGZyb20gZGVwZW5kaW5nIG9uICdhbGwnCistQVVUT01BS0VfT1BU SU9OUyA9IGN5Z251cworLQorIHRtcGluc3QgPSBfdG1waW5zdAorIAorIG5vaW5zdF9TQ1JJUFRT ID0gbW9uby13cmFwcGVyIG1vbm9kaXMtd3JhcHBlciBzZW1kZWwtd3JhcHBlcgotLSAKMi40NS4y Cgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0009-gnu-Add-mono-3.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0009-gnu-Add-mono-3.0.patch RnJvbSBmYWQ2ZmMzNWU3NmNhYWQ1YTcyOWM3ZTIxYWZkNGFmMzM3YjQ3ZDhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8ZmFkNmZjMzVlNzZjYWFkNWE3MjljN2UyMWFmZDRh ZjMzN2I0N2Q4Zi4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTM6 MTM6NDAKU3ViamVjdDogW1BBVENIIDA5LzIxXSBnbnU6IEFkZCBtb25vLTMuMC4KCiogZ251L3Bh Y2thZ2VzL2RvdG5ldC5zY20KICAobW9uby0zLjAuMTItZXh0ZXJuYWwtcmVwby1zcGVjcywgbW9u by0zLjApOiBOZXcgdmFyaWFibGVzLgoKQ2hhbmdlLUlkOiBJMWYzMDA0MTE4N2M3ZDBjZjZlNDVk NTZmNmRhOWJiNGE3MDUyMDJjZgotLS0KIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtIHwgNjMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA2 MyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20gYi9n bnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCA3YTYyMTQ3NDZmLi4zMzM1ZmM1OGIxIDEwMDY0 NAotLS0gYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQorKysgYi9nbnUvcGFja2FnZXMvZG90bmV0 LnNjbQpAQCAtNTkzLDMgKzU5Myw2NiBAQCAoZGVmaW5lLXB1YmxpYyBtb25vLTIuMTEuNAogICAg ICAgICAgICAgICBsaWNlbnNlOmJzZC00CiAgICAgICAgICAgICAgIDs7IG1jcy9jbGFzcy9TeXN0 ZW0uQ29yZS9TeXN0ZW0vVGltZVpvbmVJbmZvLkFuZHJvaWQuY3MKICAgICAgICAgICAgICAgbGlj ZW5zZTphc2wyLjApKSkpCisKKyhkZWZpbmUgbW9uby0zLjAuMTItZXh0ZXJuYWwtcmVwby1zcGVj cworICA7OyBmb3JtYXQ6ICh7cmVwb25hbWUgT1IgKHJlcG9uYW1lIGRpci1uYW1lKX0gY29tbWl0 IHNoYTI1NikgLi4uCisgIDs7IGlmIHJlcG9uYW1lIHN0YXJ0cyB3aXRoIGh0dHBzOi8vIGl0IGlz IHRyZWF0ZWQgYXMgdGhlIHJlcG9zaXRvcnkgdXJsLAorICA7OyBvdGhlcndpc2UgdGhlIG5hbWUg b2YgYSByZXBvc2l0b3J5IHVuZGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9tb25vLworICAnKCgiYXNw bmV0d2Vic3RhY2siICAgICAgICAgICAgICAgImU3N2IxMmU2Y2M1ZWQyNjBhOTg0NDdmNjA5ZTg4 NzMzN2U0NGUyOTkiCisgICAgICIwcmtzMzQ0cXI0Zm1wM2ZzMTI2NGQycWttbTM0OG04ZDFramQ3 ejRsOTRpaWlyd24xZnExIikKKyAgICAoImNlY2lsIiAgICAgICAgICAgICAgICAgICAgICAgICI1 NGUwYTUwNDY0ZWRiYzI1NGIzOWVhM2M4ODVlZTkxYWRhNzMwNzA1IgorICAgICAiMDA3c3piZjVh MTRxODM4Njk1bHdkcDdhcDZyd3p6M2t6bGxnamZuaWJ6bHFpcHczeDJ5ayIpCisgICAgKCJlbnRp dHlmcmFtZXdvcmsiICAgICAgICAgICAgICAiYTVmYWRkZWNhMmJlZTA4NjM2ZjFiN2IzYWY4Mzg5 YmQ0MTE5ZjRjZCIKKyAgICAgIjBiMDVwemY2cXdkZDkycGJ6eW0zMm5mbXc4cnEzNjgyMHZkemFr cTFreWtmbWRkanI5YTciKQorICAgICgoImlrdm0tZm9yayIgImlrdm0iKSAgICAgICAgICAgIjEw YjgzMTJjODAyNDExMTc4MGVlMzgyNjg4Y2Q0Yzg3NTRiMWYxYWMiCisgICAgICIwMjV3Zjlnamdm dnJxNDJ2Z3c5MWFoeTNjbXpjdzA5NHZ4NzgzZHNwN2dqZHlkOHEwOW5tIikKKyAgICAoIkx1Y2Vu ZS5OZXQiICAgICAgICAgICAgICAgICAgICI4OGZiNjdiMDc2MjFkZmVkMDU0ZDhkNzVmZDUwNjcy ZmIyNjM0OWRmIgorICAgICAiMXJmeHFmejdoa3A5cmc1YW52eGx2NmZuYTB4aTBibnYxeThxYmhm OHg0OGwwOHlqYjM4ayIpCisgICAgKCJOZXd0b25zb2Z0Lkpzb24iICAgICAgICAgICAgICAiNDcx YzNlMDgwM2E5ZjQwYTBhY2M4YWVjZWIzMWRlNmZmOTNhNTJjNCIKKyAgICAgIjBkZ25nZDVocWs2 eWhsZzQwa2FibjZxZG5rbm0zMnpjeDlxNmJtMnczMWNzbnNrNTk3OHMiKQorICAgICgicngiICAg ICAgICAgICAgICAgICAgICAgICAgICAgIjE3ZTg0NzdiMmNiOGRkMDE4ZDQ5YTU2NzUyNmZlOTlm ZDI4OTc4NTciCisgICAgICIwZnl5eTRqZjBtbWE2a2ZmNmZ2YnZkY3M1cmExYno0czA2M252amp2 YTl4bG52N3Nqdmg0IikpKQorCisoZGVmaW5lLXB1YmxpYyBtb25vLTMuMAorICAocGFja2FnZQor ICAgIChpbmhlcml0IG1vbm8tMi4xMS40KQorICAgICh2ZXJzaW9uICIzLjAuMTIiKQorICAgIChu YW1lICJtb25vIikKKyAgICAoc291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgKG1ldGhvZCBn aXQtZmV0Y2gpCisgICAgICAgICAgICAgICh1cmkKKyAgICAgICAgICAgICAgIChnaXQtcmVmZXJl bmNlCisgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXRsYWIud2luZWhxLm9yZy9tb25v L21vbm8uZ2l0IikKKyAgICAgICAgICAgICAgICAoY29tbWl0IChzdHJpbmctYXBwZW5kICJtb25v LSIgIjMuMC4xMiIpKSkpCisgICAgICAgICAgICAgIChmaWxlLW5hbWUgKGdpdC1maWxlLW5hbWUg bmFtZSB2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgKGJh c2UzMgorICAgICAgICAgICAgICAgICIxMTBmM2hjZmlrazZieGJyZ2phczVkcWxkY2k5ZjI0Z3Zt M3ZkZ240ajlqN3hobGN4MWxqIikpCisgICAgICAgICAgICAgIChtb2R1bGVzICcoKGd1aXggYnVp bGQgdXRpbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGljZS05IHN0cmluZy1mdW4pKSkK KyAgICAgICAgICAgICAgKHNuaXBwZXQgI34oYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICMkKGFkZC1leHRlcm5hbC1yZXBvcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bW9uby0zLjAuMTItZXh0ZXJuYWwtcmVwby1zcGVjcykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICMkcHJlcGFyZS1tb25vLXNvdXJjZSkpKSkKKyAgICAobmF0aXZlLWlucHV0cyAobW9kaWZ5 LWlucHV0cyAocGFja2FnZS1uYXRpdmUtaW5wdXRzIG1vbm8tMi4xMS40KQorICAgICAgICAgICAg ICAgICAgICAgKHJlcGxhY2UgIm1vbm8iIG1vbm8tMi4xMS40KSkpCisgICAgKGxpY2Vuc2UgKGxp c3QKKyAgICAgICAgICAgICAgOzsgbW9zdCBvZiBtY3MvdG9vbHMsIG1vbm8vbWFuLCBtb3N0IG9m IG1jcy9jbGFzcywgdGVzdHMgYnkKKyAgICAgICAgICAgICAgOzsgZGVmYXVsdCwgbW9uby9lZ2xp YiwgbW9uby9tZXRhZGF0YS9zZ2VuKiwKKyAgICAgICAgICAgICAgOzsgbW9uby9hcmNoLyovWFhY LWNvZGVnZW4uaAorICAgICAgICAgICAgICA7OyBtY3MvbWNzLCBtY3MvZ21jcyAoZHVhbC1saWNl bnNlZCBHUEwpCisgICAgICAgICAgICAgIDs7IHNhbXBsZXMKKyAgICAgICAgICAgICAgbGljZW5z ZTp4MTEKKyAgICAgICAgICAgICAgOzsgbWNzL21jcywgbWNzL2dtY3MgKGR1YWwtbGljZW5zZWQg WDExKQorICAgICAgICAgICAgICA7OyBzb21lIG9mIG1jcy90b29scworICAgICAgICAgICAgICBs aWNlbnNlOmdwbDErIDs7IG5vdGU6IC4vbWNzL0xJQ0VOU0UuR1BMIHNwZWNpZmllcyBubyB2ZXJz aW9uCisgICAgICAgICAgICAgIDs7IG1vbm8vbW9ubyAodGhlIG1vbm8gVk0sIEkgdGhpbmsgdGhl eSBtZWFudCBtb25vL21pbmkpCisgICAgICAgICAgICAgIDs7IG1vbm8vc3VwcG9ydCAobm90ZTog ZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3QsIHByb2JhYmx5IG1lYW50CisgICAgICAgICAgICAgIDs7 IC4vc3VwcG9ydCwgYnV0IHRoYXQgY29udGFpbnMgYSBjb3B5IG9mIHpsaWI/KQorICAgICAgICAg ICAgICBsaWNlbnNlOmxncGwyLjArIDs7IG5vdGU6IC4vbWNzL0xJQ0VOU0UuTEdQTCBzcGVjaWZp ZXMgbm8gdmVyc2lvbgorICAgICAgICAgICAgICA7OyBtY3MvamF5CisgICAgICAgICAgICAgIGxp Y2Vuc2U6YnNkLTQKKyAgICAgICAgICAgICAgOzsgbWNzL2NsYXNzL1N5c3RlbS5Db3JlL1N5c3Rl bS9UaW1lWm9uZUluZm8uQW5kcm9pZC5jcworICAgICAgICAgICAgICBsaWNlbnNlOmFzbDIuMAor ICAgICAgICAgICAgICA7OyAuL3N1cHBvcnQsIGNvbnRhaW5zIGEgY29weSBvZiB6bGliCisgICAg ICAgICAgICAgIGxpY2Vuc2U6emxpYikpKSkKLS0gCjIuNDUuMgoK --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0013-gnu-Add-mono-5.1.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0013-gnu-Add-mono-5.1.0.patch RnJvbSBlYjczZTM1Mjg4ZjU1ZmQ3ZTNiOTFhYTA1ZWMzOTMxZmZiZTZmMmRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8ZWI3M2UzNTI4OGY1NWZkN2UzYjkxYWEwNWVjMzkz MWZmYmU2ZjJkYy4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTM6 Mjk6MzEKU3ViamVjdDogW1BBVENIIDEzLzIxXSBnbnU6IEFkZCBtb25vLTUuMS4wLgoKKiBnbnUv cGFja2FnZXMvZG90bmV0LnNjbQogIChtb25vLTUuMS4wLWV4dGVybmFsLXJlcG8tc3BlY3MsIG1v bm8tNS4xLjApOiBOZXcgdmFyaWFibGVzLgoKQ2hhbmdlLUlkOiBJZTU4ZTIwZjc1OTIwZWUwNDky ZTk3N2M4MmEyZTMwMjMxMTc5Mzk0NgotLS0KIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtIHwgNjgg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2Vk LCA2OCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20g Yi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCAzM2I3MTdiMGVkLi5kYTI5NjFiZmY0IDEw MDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQorKysgYi9nbnUvcGFja2FnZXMvZG90 bmV0LnNjbQpAQCAtOTcwLDMgKzk3MCw3MSBAQCAoZGVmaW5lLXB1YmxpYyBtb25vLTUuMC4xCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCAiL21jcy9jbGFzcy9saWIvYnVpbGQv bWNzLmV4ZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlLWZsYWdzKSkpKSkpKSkp KSkKKworKGRlZmluZSBtb25vLTUuMS4wLWV4dGVybmFsLXJlcG8tc3BlY3MKKyAgJygoImFzcG5l dHdlYnN0YWNrIiAgICAgICAgICAgICAgImU3N2IxMmU2Y2M1ZWQyNjBhOTg0NDdmNjA5ZTg4NzMz N2U0NGUyOTkiCisgICAgICIwcmtzMzQ0cXI0Zm1wM2ZzMTI2NGQycWttbTM0OG04ZDFramQ3ejRs OTRpaWlyd24xZnExIikKKyAgICAoKCJyZWZlcmVuY2UtYXNzZW1ibGllcyIgImJpbmFyeS1yZWZl cmVuY2UtYXNzZW1ibGllcyIpCisgICAgICJmZWJjMTAwZjAzMTNmMGRjOWQ3NWRkMWJjZWE0NWU4 NzEzNGI1YjU1IgorICAgICAiMGxwajkxMW0ybHEyM3IyMmRweTRpMDJmeTR5a2YyN2R4OGZ2cXB4 c3hrbnlzajJqbDZ5NCIpCisgICAgKCJib2NrYnVpbGQiICAgICAgICAgICAgICAgICAgICJmZDFk NmM0MDRkNzYzYzk4YjZmMGU2NGU5OGFiNjVmOTJlODA4MjQ1IgorICAgICAiMGwybjk4NjNqNXky MGxwM2ZqY3BiYjBhOWpjZmswa3Ftbnpsc3cyMHFjaGQwNXJqZ3liMCIpCisgICAgKCJib3Jpbmdz c2wiICAgICAgICAgICAgICAgICAgICJjMDZhYzZiMzNkM2U3NDQyYWQ4Nzg0ODhiOWQxMTAwMTI3 ZWZmOTk4IgorICAgICAiMTg3enBpMXJ2aDlpNmpmY2N3enFxMzM3cnh4aTFyZ255Nm1qcTc5cjA4 ZGxyaDBseWR6YyIpCisgICAgKCJidWlsZHRvb2xzIiAgICAgICAgICAgICAgICAgICJiNWNjNmU2 YWI1ZjcxZjZjMGJlN2I3MzAwNThiNDI2ZTkyNTI4NDc5IgorICAgICAiMGxkajVsNHA0cThqOWRo azBuaWZyM20waTY0Y3N2YjU2d2xjMnhkNHp5ODBzZmdtam4wNiIpCisgICAgKCJjZWNpbCIgICAg ICAgICAgICAgICAgICAgICAgICI0NGJjODYyMjM1MzBhMDdmYTc0YWI4NzAwN2NmMjY0ZTUzZDYz NDAwIgorICAgICAiMHNtc2E4aTQ3MDl5MW5reTNoc2hqN2F5eGhqY2MxN3dsbmZkdmhmYXk3bHk1 ZHhtbDg0ZyIpCisgICAgKCgiY2VjaWwiICJjZWNpbC1sZWdhY3kiKSAgICAgICIzM2Q1MGI4NzRm ZDUyNzExOGJjMzYxZDgzZGUzZDQ5NGU4YmI1NWUxIgorICAgICAiMXA0aGwxNzk2aWIyNnlreWY1 c25sNmNqMGx4MHY3bWpoMHhxaGp3NnFkaDc1M25zanloYiIpCisgICAgKCJjb3JlZngiICAgICAg ICAgICAgICAgICAgICAgICI2M2M1MWU3MjYyOTIxNDliNDg2OGRiNzFiYWE4ODNlNWFkMTczNzY2 IgorICAgICAiMTQwNnJicmE4M2s2Z3cyZG5uc2ZxY2Z3aXkxaDg5eTZscTY0bWE1cmNrbWI1ZHJi MG5nOSIpCisgICAgKCJjb3JlcnQiICAgICAgICAgICAgICAgICAgICAgICIzMWVkYTI2MTk5MWY5 ZjZjMWFkZDE2ODZiNmQzNzk5ZjgzNWIyOTc4IgorICAgICAiMHMwcGQ0bTkwNzB4bHgyMzhmZGhx ZjJiM2l5ZDJ2emZmM2Ywc3hseWk4czBsaHNybDh6diIpCisgICAgKCJpa2Rhc20iICAgICAgICAg ICAgICAgICAgICAgICI4OGI2N2M0MmNhOGI3ZDU4MTQxYzE3NmI0Njc0OTgxOWJmY2VmMTY2Igor ICAgICAiMGIwYjFkaGc4MHI2NDBuODFpcWF3d2t4aTFrMjg5bjR6eGpmajBsZGQ5cmt2Znh2bHdh dyIpCisgICAgKCgiaWt2bS1mb3JrIiAiaWt2bSIpICAgICAgICAgICI3YzFlNjFiZWM4YzA2OWIy Y2M5ZTIxNGMzMDk0YjE0N2Q3NmJiZjgyIgorICAgICAiMHZtYzVyNGo3NmhrZDR6aXMxNzY5cHBk bDFoMWw3ejhjbGQweTRwMW02NG44Nmdoa3pmbiIpCisgICAgKCJsaW5rZXIiICAgICAgICAgICAg ICAgICAgICAgICIxYmRjZjZiN2JmYmUzYjAzZmRhYTc2ZjYxMjRkMGQ3Mzc0ZjA4NjE1IgorICAg ICAiMXh4NnM4ZGNnY3o4MDN5dnFnemhjZ21qMTZjOXM4dnJ2dmw4azR5MHhtYTV3NTFrbjIzayIp CisgICAgKCJMdWNlbmUuTmV0LkxpZ2h0IiAgICAgICAgICAgICI4NTk3OGI3ZWI5NDczOGY1MTY4 MjQzNDEyMTNkNWU5NDA2MGY1Mjg0IgorICAgICAiMGQxMThpNTJtM2EwdmZqaGZjaTgxYTJrYzRx dm5qMjNnczAyaHJ2ZHJmcGQxcTkyZnlpaSIpCisgICAgKCJOZXd0b25zb2Z0Lkpzb24iICAgICAg ICAgICAgICI0NzFjM2UwODAzYTlmNDBhMGFjYzhhZWNlYjMxZGU2ZmY5M2E1MmM0IgorICAgICAi MGRnbmdkNWhxazZ5aGxnNDBrYWJuNnFkbmtubTMyemN4OXE2Ym0ydzMxY3Nuc2s1OTc4cyIpCisg ICAgKCgiTnVHZXQuQnVpbGRUYXNrcyIgIm51Z2V0LWJ1aWxkdGFza3MiKQorICAgICAiMDRiZGFi NTVkOGRlOWVkY2Y2Mjg2OTRjZmQyMDAxNTYxZThmOGU2MCIKKyAgICAgIjFua2x4YXl4a2Rza2c1 d2xmbDQ0Y25kenFrbDE4djU2MXJ6MDNod3g3d2JuNXc4OXE3NzUiKQorICAgICgoIk5Vbml0TGl0 ZSIgIm51bml0LWxpdGUiKSAgICAiNjkwNjAzYmVhOThhYWU2OWZjYTlhNjUxMzBkODg1OTFiYzZj YWJlZSIKKyAgICAgIjFmODQ1eXNqenMzeWQ5Z2N5d3c2NmRua3g0ODR6NWZrbmI4bDB4ejc0c2pt eGsybW5nd2MiKQorICAgIDs7ICgicm9zbHluLWJpbmFyaWVzIiAgICAgICAgICAiMGQ0MTk4YjEy OTliY2IwMTk5NzM3NDlkYTRkNDdlOTBmMTVhMWU0NiIKKyAgICA7OyAgIiIpCisgICAgKCJyeCIg ICAgICAgICAgICAgICAgICAgICAgICAgICJiMjlhNGIwZmRhNjA5ZTBhZjMzZmY1NGVkMTM2NTJi NmNjZjBlMDVlIgorICAgICAiMW4xandobXNia2N2MmQ4MDZpbW1jcHprYjcycnowNHh5OThteXcz NTVhOHc1YWgyNXlpdiIpCisgICAgOzsgKCJ4dW5pdC1iaW5hcmllcyIgICAgICAgICAgICJiOGUy MGQyNjViMzY4ZGQ2MjUyNzAzZDVhZmQwMzhkMGIwMjhlMzg4IgorICAgIDs7ICAiIikKKyAgICAp KQorCisoZGVmaW5lLXB1YmxpYyBtb25vLTUuMS4wCisgIChwYWNrYWdlCisgICAgKGluaGVyaXQg bW9uby01LjAuMSkKKyAgICAodmVyc2lvbiAiNS4xLjAiKQorICAgIChuYW1lICJtb25vIikKKyAg ICAoc291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAg ICAgICAgICAgICh1cmkKKyAgICAgICAgICAgICAgIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAg ICAgICAgKHVybCAiaHR0cHM6Ly9naXRsYWIud2luZWhxLm9yZy9tb25vL21vbm8uZ2l0IikKKyAg ICAgICAgICAgICAgICAoY29tbWl0CisgICAgICAgICAgICAgICAgICI2ZmFmZDA4YjUwN2M1NmYx MWEyZWI2NTcwNzAzYTM5ZTViZGMwYTgxIikpKQorICAgICAgICAgICAgICAoZmlsZS1uYW1lIChn aXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lvbikpCisgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAg ICAgICAgICAgIChiYXNlMzIKKyAgICAgICAgICAgICAgICAiMXN4cTQwbmF5NWdoaG1mYmRsbjk4 aXJpMTl5MGg3cTM2cjNwcW54bXhubTk0bGl2eDJrNSIpKQorICAgICAgICAgICAgICAobW9kdWxl cyAnKChndWl4IGJ1aWxkIHV0aWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgIChpY2UtOSBz dHJpbmctZnVuKSkpCisgICAgICAgICAgICAgIChzbmlwcGV0ICN+KGJlZ2luCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAjJChhZGQtZXh0ZXJuYWwtcmVwb3MKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1vbm8tNS4xLjAtZXh0ZXJuYWwtcmVwby1zcGVjcykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICMkQHByZXBhcmUtbW9uby1zb3VyY2UtMCkpKSkKKyAgICAobmF0aXZl LWlucHV0cyAobW9kaWZ5LWlucHV0cyAocGFja2FnZS1uYXRpdmUtaW5wdXRzIG1vbm8tNS4wLjEp CisgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAibW9ubyIgbW9uby01LjAuMSkpKSkpCi0t IAoyLjQ1LjIKCg== --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0007-gnu-Add-mono-2.6.4.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0007-gnu-Add-mono-2.6.4.patch RnJvbSA4NmRmMWNiYzE4OWRmMzhiZGYwNjE3MzgxYTJjYjk5YWY5OWM5NTlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8ODZkZjFjYmMxODlkZjM4YmRmMDYxNzM4MWEyY2I5 OWFmOTljOTU5Zi4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTM6 MDQ6MTMKU3ViamVjdDogW1BBVENIIDA3LzIxXSBnbnU6IEFkZCBtb25vLTIuNi40LgoKKiBnbnUv ZG90bmV0LnNjbSAobW9uby0yLjYuNCk6IE5ldyB2YXJpYWJsZS4KKiBnbnUvcGFja2FnZXMvcGF0 Y2hlcy9tb25vLTIuNi40LWZpeGVzLnBhdGNoOiBOZXcgcGF0Y2guCiogZ251L2xvY2FsLm1rIChk aXN0X3BhdGNoX0RBVEEpOiBSZWdpc3RlciBpdC4KCkNoYW5nZS1JZDogSTY2ZTliYjJlMTJjYTZm NDdiNGNkODI3ODIyZGI1YmVlOTNiNjRkZmUKLS0tCiBnbnUvbG9jYWwubWsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDEgKwogZ251L3BhY2thZ2VzL2RvdG5ldC5zY20gICAgICAg ICAgICAgICAgICAgICB8IDIzICsrKysrKysrKysKIGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8t Mi42LjQtZml4ZXMucGF0Y2ggfCA0OSArKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hh bmdlZCwgNzMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9w YXRjaGVzL21vbm8tMi42LjQtZml4ZXMucGF0Y2gKCmRpZmYgLS1naXQgYS9nbnUvbG9jYWwubWsg Yi9nbnUvbG9jYWwubWsKaW5kZXggZDA4YzAzYTY4OS4uYTQ2MTFkMDAxNiAxMDA2NDQKLS0tIGEv Z251L2xvY2FsLm1rCisrKyBiL2dudS9sb2NhbC5tawpAQCAtMTc2NCw2ICsxNzY0LDcgQEAgZGlz dF9wYXRjaF9EQVRBID0JCQkJCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tMS45LjEt YWRkLU1PTk9fQ1JFQVRFX0lNQUdFX1ZFUlNJT04ucGF0Y2gJCVwKICAgJUQlL3BhY2thZ2VzL3Bh dGNoZXMvbW9uby0xLjkuMS1maXhlcy5wYXRjaAkJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMv bW9uby0yLjQuMi4zLWZpeGVzLnBhdGNoCQkJXAorICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25v LTIuNi40LWZpeGVzLnBhdGNoCQkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb3NhaWNhdGNo ZXItdW5idW5kbGUtaHRzbGliLnBhdGNoCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbXJyZXNj dWUtc3VwcG9ydC1sb3ZlLTExLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL210b29s cy1tZm9ybWF0LXVuaW5pdGlhbGl6ZWQucGF0Y2gJXApkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2Vz L2RvdG5ldC5zY20gYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCAyNDExNTdjZGNlLi40 YWY2NDJiOWYzIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQorKysgYi9nbnUv cGFja2FnZXMvZG90bmV0LnNjbQpAQCAtNDc1LDMgKzQ3NSwyNiBAQCAoZGVmaW5lLXB1YmxpYyBt b25vLTIuNC4yCiAgICAgICAgICAgICAgIGxpY2Vuc2U6bGdwbDIuMCsgOzsgbm90ZTogLi9tY3Mv TElDRU5TRS5MR1BMIHNwZWNpZmllcyBubyB2ZXJzaW9uCiAgICAgICAgICAgICAgIDs7IG1jcy9q YXkKICAgICAgICAgICAgICAgbGljZW5zZTpic2QtNCkpKSkKKworKGRlZmluZS1wdWJsaWMgbW9u by0yLjYuNAorICAocGFja2FnZQorICAgIChpbmhlcml0IG1vbm8tMi40LjIpCisgICAgKHZlcnNp b24gIjIuNi40IikKKyAgICAobmFtZSAibW9ubyIpCisgICAgKHNvdXJjZSAob3JpZ2luCisgICAg ICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAodXJpCisgICAgICAg ICAgICAgICAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0 bGFiLndpbmVocS5vcmcvbW9uby9tb25vLmdpdCIpCisgICAgICAgICAgICAgICAgKGNvbW1pdCAo c3RyaW5nLWFwcGVuZCAibW9uby0iICIyLjYuNCIpKSkpCisgICAgICAgICAgICAgIChmaWxlLW5h bWUgKGdpdC1maWxlLW5hbWUgbmFtZSB2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgKHNoYTI1Ngor ICAgICAgICAgICAgICAgKGJhc2UzMgorICAgICAgICAgICAgICAgICIxNzk3N3c0NXFoOGptZnNs NGJoaTgzc2k0ZnhkOHMzeDhiMHB4bndkemp2M2JxcjU0Yzg1IikpCisgICAgICAgICAgICAgICht b2R1bGVzICcoKGd1aXggYnVpbGQgdXRpbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGlj ZS05IHN0cmluZy1mdW4pKSkKKyAgICAgICAgICAgICAgKHNuaXBwZXQgcHJlcGFyZS1tb25vLXNv dXJjZSkKKyAgICAgICAgICAgICAgKHBhdGNoZXMKKyAgICAgICAgICAgICAgIChzZWFyY2gtcGF0 Y2hlcyAibW9uby0yLjYuNC1maXhlcy5wYXRjaCIpKSkpCisgICAgKG5hdGl2ZS1pbnB1dHMgKG1v ZGlmeS1pbnB1dHMgKHBhY2thZ2UtbmF0aXZlLWlucHV0cyBtb25vLTIuNC4yKQorICAgICAgICAg ICAgICAgICAgICAgKHJlcGxhY2UgIm1vbm8iIG1vbm8tMi40LjIpKSkpKQpkaWZmIC0tZ2l0IGEv Z251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby0yLjYuNC1maXhlcy5wYXRjaCBiL2dudS9wYWNrYWdl cy9wYXRjaGVzL21vbm8tMi42LjQtZml4ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uZTgwMmM4YmI3ZQotLS0gL2Rldi9udWxsCisrKyBiL2dudS9wYWNrYWdl cy9wYXRjaGVzL21vbm8tMi42LjQtZml4ZXMucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorZGlmZiAt LWdpdCBhL2RhdGEvbW9uby5wYy5pbiBiL2RhdGEvbW9uby5wYy5pbgoraW5kZXggMDFlMGE5ZTVk NDEuLmQ0M2JiMTg3MjE4IDEwMDY0NAorLS0tIGEvZGF0YS9tb25vLnBjLmluCisrKysgYi9kYXRh L21vbm8ucGMuaW4KK0BAIC03LDggKzcsNiBAQCBzeXNjb25mZGlyPUBzeXNjb25mZGlyQAorIE5h bWU6IE1vbm8KKyBEZXNjcmlwdGlvbjogTW9ubyBSdW50aW1lCisgVmVyc2lvbjogQFZFUlNJT05A CistIyMgQ29tbWVudGVkIG91dCBiZWNhdXNlIFNMRSBoaWRlcyBkZXZlbCBmaWxlcyBpbiB0aGUg U0xFIFNESywKKy0jIyB3aGljaCBub3QgYWxsIGN1c3RvbWVycyB3aWxsIGhhdmUuCistI1JlcXVp cmVzOiBnbGliLTIuMCBndGhyZWFkLTIuMAorK1JlcXVpcmVzOiBnbGliLTIuMCBndGhyZWFkLTIu MCBiZHctZ2MKKyBMaWJzOiAtTCR7bGliZGlyfSBAZXhwb3J0X2xkZmxhZ3NAIC1sbW9ubyBAbGli bW9ub19sZGZsYWdzQAorIENmbGFnczogLUkke2luY2x1ZGVkaXJ9IEBsaWJtb25vX2NmbGFnc0AK K2RpZmYgLS1naXQgYS9tb25vLXVuaW5zdGFsbGVkLnBjLmluIGIvbW9uby11bmluc3RhbGxlZC5w Yy5pbgoraW5kZXggN2ZhM2YxMmRjOTEuLjJhMDczNDM2MmZkIDEwMDY0NAorLS0tIGEvbW9uby11 bmluc3RhbGxlZC5wYy5pbgorKysrIGIvbW9uby11bmluc3RhbGxlZC5wYy5pbgorQEAgLTEsNiAr MSw2IEBACisgTmFtZTogTW9ubworIERlc2NyaXB0aW9uOiBNb25vIFJ1bnRpbWUKKyBWZXJzaW9u OiBAVkVSU0lPTkAKKy1SZXF1aXJlczogZ2xpYi0yLjAgZ3RocmVhZC0yLjAKKytSZXF1aXJlczog Z2xpYi0yLjAgZ3RocmVhZC0yLjAgYmR3LWdjCisgTGliczogLUxAbW9ub19idWlsZF9yb290QC9t b25vL21pbmkvLmxpYnMgQGV4cG9ydF9sZGZsYWdzQCAtbG1vbm8gQGxpYm1vbm9fbGRmbGFnc0AK KyBDZmxhZ3M6IC1JQGFic190b3Bfc3JjZGlyQCAtSUBhYnNfdG9wX3NyY2RpckAvbW9ubyBAbGli bW9ub19jZmxhZ3NACitkaWZmIC0tZ2l0IGEvbW9uby9taW5pL2RyaXZlci5jIGIvbW9uby9taW5p L2RyaXZlci5jCitpbmRleCBjNGU3ZjRjY2RiMy4uYmI3MDVjMGQxZmMgMTAwNjQ0CistLS0gYS9t b25vL21pbmkvZHJpdmVyLmMKKysrKyBiL21vbm8vbWluaS9kcml2ZXIuYworQEAgLTEzMDIsNiAr MTMwMiw3IEBAIG1vbm9fbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKKyAjZW5kaWYKKyAJ aWYgKCFnX3RocmVhZF9zdXBwb3J0ZWQgKCkpCisgCQlnX3RocmVhZF9pbml0IChOVUxMKTsKKysg ICAgICAgIEdDX2FsbG93X3JlZ2lzdGVyX3RocmVhZHMoKTsKKyAKKyAJaWYgKG1vbm9fcnVubmlu Z19vbl92YWxncmluZCAoKSAmJiBnZXRlbnYgKCJNT05PX1ZBTEdSSU5EX0xFQUtfQ0hFQ0siKSkg eworIAkJR01lbVZUYWJsZSBtZW1fdnRhYmxlOworZGlmZiAtLWdpdCBhL3J1bnRpbWUvTWFrZWZp bGUuYW0gYi9ydW50aW1lL01ha2VmaWxlLmFtCitpbmRleCBkYTBjMGU4NjcxZC4uOWQwZGVhZjE4 MmYgMTAwNjQ0CistLS0gYS9ydW50aW1lL01ha2VmaWxlLmFtCisrKysgYi9ydW50aW1lL01ha2Vm aWxlLmFtCitAQCAtMSw2ICsxLDMgQEAKKy0jIGhhY2sgdG8gcHJldmVudCAnY2hlY2snIGZyb20g ZGVwZW5kaW5nIG9uICdhbGwnCistQVVUT01BS0VfT1BUSU9OUyA9IGN5Z251cworLQorIHRtcGlu c3QgPSBfdG1waW5zdAorIAorIG5vaW5zdF9TQ1JJUFRTID0gbW9uby13cmFwcGVyIG1vbm9kaXMt d3JhcHBlcgotLSAKMi40NS4yCgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0011-gnu-Add-mono-4.9.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0011-gnu-Add-mono-4.9.0.patch RnJvbSAwNTBlMmFjNzRkZjU4MjViN2M5ZDUxMGViZjc1ZTI0ZTQ3ZmFlNzFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8MDUwZTJhYzc0ZGY1ODI1YjdjOWQ1MTBlYmY3NWUy NGU0N2ZhZTcxZi4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTM6 MjU6MDAKU3ViamVjdDogW1BBVENIIDExLzIxXSBnbnU6IEFkZCBtb25vLTQuOS4wLgoKKiBnbnUv cGFja2FnZXMvZG90bmV0LnNjbSAobW9uby00LjkuMCk6IE5ldyB2YXJpYWJsZS4KKiBnbnUvcGFj a2FnZXMvcGF0Y2hlcy9tb25vLTQuOS4wLWZpeC1ydW50aW1lbWV0YWRhdGF2ZXJzaW9uLnBhdGNo OiBOZXcgcGF0Y2guCiogZ251L2xvY2FsLm1rIChkaXN0X3BhdGNoX0RBVEEpOiByZWdpc3RlciBp dC4KCkNoYW5nZS1JZDogSWVhNTkyNmU3OWY3ODc3YWNhNzE4YzEzMTJjODliY2M3MTViNjRkMjEK LS0tCiBnbnUvbG9jYWwubWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg KwogZ251L3BhY2thZ2VzL2RvdG5ldC5zY20gICAgICAgICAgICAgICAgICAgICAgIHwgMTI5ICsr KysrKysrKysrKysrKysrKwogLi4ub25vLTQuOS4wLWZpeC1ydW50aW1lbWV0YWRhdGF2ZXJzaW9u LnBhdGNoIHwgIDEzICsrCiAzIGZpbGVzIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby00LjkuMC1maXgtcnVudGlt ZW1ldGFkYXRhdmVyc2lvbi5wYXRjaAoKZGlmZiAtLWdpdCBhL2dudS9sb2NhbC5tayBiL2dudS9s b2NhbC5tawppbmRleCBhOWEyNmI5YmMxLi5jYzc5ZjU1NDFkIDEwMDY0NAotLS0gYS9nbnUvbG9j YWwubWsKKysrIGIvZ251L2xvY2FsLm1rCkBAIC0xNzY2LDYgKzE3NjYsNyBAQCBkaXN0X3BhdGNo X0RBVEEgPQkJCQkJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby0yLjQuMi4zLWZpeGVz LnBhdGNoCQkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTIuNi40LWZpeGVzLnBhdGNo CQkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTIuMTEuNC1maXhlcy5wYXRjaAkJCVwK KyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby00LjkuMC1maXgtcnVudGltZW1ldGFkYXRhdmVy c2lvbi5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb3NhaWNhdGNoZXItdW5idW5k bGUtaHRzbGliLnBhdGNoCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbXJyZXNjdWUtc3VwcG9y dC1sb3ZlLTExLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL210b29scy1tZm9ybWF0 LXVuaW5pdGlhbGl6ZWQucGF0Y2gJXApkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL2RvdG5ldC5z Y20gYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCBlMWYxMjcyMDg4Li40OTVmZTkzNDIx IDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQorKysgYi9nbnUvcGFja2FnZXMv ZG90bmV0LnNjbQpAQCAtNzA4LDMgKzcwOCwxMzIgQEAgKGRlZmluZS1wdWJsaWMgbW9uby0zLjEy LjEKICAgICAgICAgICAgICAgICA7OyBmb3Igc29tZSByZWFzb24gYSBkZWZhdWx0IGlzIG9ubHkg dXNlZCBpZiB0aGlzIGlzIGVtcHR5LCBub3QKICAgICAgICAgICAgICAgICA7OyBpZiBpdCBpcyB1 bnNldC4KICAgICAgICAgICAgICAgICAoc2V0ZW52ICJUWiIgIiIpKSkpKSkpKSkKKworKGRlZmlu ZSBtb25vLTQuOS4wLWV4dGVybmFsLXJlcG8tc3BlY3MKKyAgOzsgZm9ybWF0OiAoe3JlcG9uYW1l IE9SIChyZXBvbmFtZSBkaXItbmFtZSl9IGNvbW1pdCBzaGEyNTYpIC4uLgorICAnKCgiYXNwbmV0 d2Vic3RhY2siICAgICAgICAgICAgICAgImU3N2IxMmU2Y2M1ZWQyNjBhOTg0NDdmNjA5ZTg4NzMz N2U0NGUyOTkiCisgICAgICIwcmtzMzQ0cXI0Zm1wM2ZzMTI2NGQycWttbTM0OG04ZDFramQ3ejRs OTRpaWlyd24xZnExIikKKyAgICA7OyAoKCJyZWZlcmVuY2UtYXNzZW1ibGllcyIgImJpbmFyeS1y ZWZlcmVuY2UtYXNzZW1ibGllcyIpCisgICAgOzsgICI2Yzc3MTk3MzE4ZmU4NWRmZGRmNzVhMWIz NDRiOWJmOGQwMDA3YjBiIgorICAgIDs7ICAiMTFoYnM5NTJzcmpsc2l5aW43NnkybGxtNXJmamt3 amM2N3lhMWkzcDBwdzE5M3p3MTRqayIpCisgICAgOzsgQWNjb3JkaW5nIHRvIGdpdGh1YiBkZXNj cmlwdGlvbiB0aGlzIGlzIGEgImN1c3RvbSIgZm9yayBvZiBib3Jpbmdzc2wKKyAgICAoImJvcmlu Z3NzbCIgICAgICAgICAgICAgICAgICAgICJjMDZhYzZiMzNkM2U3NDQyYWQ4Nzg0ODhiOWQxMTAw MTI3ZWZmOTk4IgorICAgICAiMTg3enBpMXJ2aDlpNmpmY2N3enFxMzM3cnh4aTFyZ255Nm1qcTc5 cjA4ZGxyaDBseWR6YyIpCisgICAgKCJidWlsZHRvb2xzIiAgICAgICAgICAgICAgICAgICAiOWI2 ZWU4Njg2YmU1NWE5ODNkODg2OTM4MTY1YjYyMDZjZGE1MDc3MiIKKyAgICAgIjBzanczc3dhdmNt aWp5bm1heGg2NDdxcGtqc2JnaWhkcjhsaGt5emY4ZHNwcmhscTRmeGQiKQorICAgICgiY2VjaWwi ICAgICAgICAgICAgICAgICAgICAgICAgIjJiMzk4NTZlODBkODUxM2Y3MGJjMzI0MWVkMDUzMjVi MGRlNjc5YWUiCisgICAgICIwdnZheDMycjZibmh2cmN2aXM4M2dkcmRxY2d5eGI3MDRoejI4Zzlx MHduYXk0a25xeGRtIikKKyAgICAoKCJjZWNpbCIgImNlY2lsLWxlZ2FjeSIpICAgICAgICIzM2Q1 MGI4NzRmZDUyNzExOGJjMzYxZDgzZGUzZDQ5NGU4YmI1NWUxIgorICAgICAiMXA0aGwxNzk2aWIy NnlreWY1c25sNmNqMGx4MHY3bWpoMHhxaGp3NnFkaDc1M25zanloYiIpCisgICAgOzsgKCJkZWJp YW4tc25hcHNob3QiICAgICAgICAgICAgICAiOTM0MmY4ZjA1MmY4MWRlYWJhNzg5ZjAzMGRiMjNh ODhiNDM2OTcyNCIKKyAgICA7OyAgIiIpCisgICAgKCJpa2Rhc20iICAgICAgICAgICAgICAgICAg ICAgICAiZTRkZWFiZjYxYzExOTk5ZjIwMGRjZWE2ZjZkNmI0MjQ3NGNjMjEzMSIKKyAgICAgIjFm cmJmNzB5N243bDcyajM5M2F2ZGl3azYxNTNjdmZ3d3BpZ2hrZjJtNDZjbHFtcTRoYW4iKQorICAg ICgoImlrdm0tZm9yayIgImlrdm0iKSAgICAgICAgICAgIjM2Nzg2NGVmODEwODU5YWUzY2U2NTI4 NjQyMzNiMzVmMmRkNWZkYmUiCisgICAgICIwaWc5OWtibWE0czBtemIxM256c2sxdm0yMDB5Z2Zy MTFxNm16Z2g2amo0NnMyZmMzNXB4IikKKyAgICAoIkx1Y2VuZS5OZXQuTGlnaHQiICAgICAgICAg ICAgICI4NTk3OGI3ZWI5NDczOGY1MTY4MjQzNDEyMTNkNWU5NDA2MGY1Mjg0IgorICAgICAiMGQx MThpNTJtM2EwdmZqaGZjaTgxYTJrYzRxdm5qMjNnczAyaHJ2ZHJmcGQxcTkyZnlpaSIpCisgICAg KCJOZXd0b25zb2Z0Lkpzb24iICAgICAgICAgICAgICAiNDcxYzNlMDgwM2E5ZjQwYTBhY2M4YWVj ZWIzMWRlNmZmOTNhNTJjNCIKKyAgICAgIjBkZ25nZDVocWs2eWhsZzQwa2FibjZxZG5rbm0zMnpj eDlxNmJtMnczMWNzbnNrNTk3OHMiKQorICAgICgibnVnZXQtYnVpbGR0YXNrcyIgICAgICAgICAg ICAgIjA0YmRhYjU1ZDhkZTllZGNmNjI4Njk0Y2ZkMjAwMTU2MWU4ZjhlNjAiCisgICAgICIxbmts eGF5eGtkc2tnNXdsZmw0NGNuZHpxa2wxOHY1NjFyejAzaHd4N3dibjV3ODlxNzc1IikKKyAgICAo Im51bml0LWxpdGUiICAgICAgICAgICAgICAgICAgICI0YmM3OWE2ZGExZjBlZTUzODU2MGI3ZTRk MGNhZmY0NmQzYzg2ZTRmIgorICAgICAiMDg1ZnBhYmp3NDdybjhoYjV6dzZ3aXpzZzJqcmdkYmo5 cm5sYXI5bHJsczQwd2lnMjcycSIpCisgICAgKCJyeCIgICAgICAgICAgICAgICAgICAgICAgICAg ICAiYjI5YTRiMGZkYTYwOWUwYWYzM2ZmNTRlZDEzNjUyYjZjY2YwZTA1ZSIKKyAgICAgIjFuMWp3 aG1zYmtjdjJkODA2aW1tY3B6a2I3MnJ6MDR4eTk4bXl3MzU1YTh3NWFoMjV5aXYiKSkpCisKKyhk ZWZpbmUtcHVibGljIG1vbm8tNC45LjAKKyAgKHBhY2thZ2UKKyAgICAoaW5oZXJpdCBtb25vLTMu MTIuMSkKKyAgICAodmVyc2lvbiAiNC45LjAiKQorICAgIChuYW1lICJtb25vIikKKyAgICAoc291 cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAg ICAgICh1cmkKKyAgICAgICAgICAgICAgIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAg KHVybCAiaHR0cHM6Ly9naXRsYWIud2luZWhxLm9yZy9tb25vL21vbm8uZ2l0IikKKyAgICAgICAg ICAgICAgICA7OyBzb21lIGNvbW1pdCBjaG9zZW4gYWZ0ZXIgY29uZmlndXJlLmFjIHdhcyB1cGRh dGVkIHRvIG1ha2UKKyAgICAgICAgICAgICAgICA7OyB0aGUgdmVyc2lvbiA+PSA0LjkuMAorICAg ICAgICAgICAgICAgIChjb21taXQgIjVhMzczNjYwNmU2MjQzZDJjODRkNGRmMmNmMzVjMjg0MjE0 YjhjYzQiKSkpCisgICAgICAgICAgICAgIChmaWxlLW5hbWUgKGdpdC1maWxlLW5hbWUgbmFtZSB2 ZXJzaW9uKSkKKyAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgKGJhc2UzMgor ICAgICAgICAgICAgICAgICIwdnFra3FrYXF3YmlpNGhkemcwdmZmeXkzMWZ6MWttbXNhNjdqeXF3 eGRzdmdwanN6aWgzIikpCisgICAgICAgICAgICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQgdXRp bHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGljZS05IHN0cmluZy1mdW4pKSkKKyAgICAg ICAgICAgICAgKHNuaXBwZXQgI34oYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICMk KGFkZC1leHRlcm5hbC1yZXBvcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uby00 LjkuMC1leHRlcm5hbC1yZXBvLXNwZWNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIyRw cmVwYXJlLW1vbm8tc291cmNlKSkKKyAgICAgICAgICAgICAgKHBhdGNoZXMgKHNlYXJjaC1wYXRj aGVzCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBTYXZlcyB1cyBhbiBleHRyYSBpbnRlcm1l ZGlhdGUgc3RlcAorICAgICAgICAgICAgICAgICAgICAgICAgIm1vbm8tNC45LjAtZml4LXJ1bnRp bWVtZXRhZGF0YXZlcnNpb24ucGF0Y2giKSkpKQorICAgIChuYXRpdmUtaW5wdXRzIChtb2RpZnkt aW5wdXRzIChwYWNrYWdlLW5hdGl2ZS1pbnB1dHMgbW9uby0zLjEyLjEpCisgICAgICAgICAgICAg ICAgICAgICAocmVwbGFjZSAibW9ubyIgbW9uby0zLjEyLjEpCisgICAgICAgICAgICAgICAgICAg ICAoYXBwZW5kIHR6ZGF0YS1mb3ItdGVzdHMpKSkKKyAgICAoYXJndW1lbnRzCisgICAgIChzdWJz dGl0dXRlLWtleXdvcmQtYXJndW1lbnRzIChwYWNrYWdlLWFyZ3VtZW50cyBtb25vLTMuMTIuMSkK KyAgICAgICAoKCM6Y29uZmlndXJlLWZsYWdzIF8gI2YpCisgICAgICAgIDs7ICJFeHRlcm5hbCBC b2VobSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIiAtIEkgVklMTCBOT1QgdXNlIHRoZQorICAgICAg ICA7OyBidW5kbGVkIHNvZnR3YXJlIQorICAgICAgICAjfihsaXN0ICItLXdpdGgtc2dlbj15ZXMi CisgICAgICAgICAgICAgICAgIi0tZGlzYWJsZS1ib2VobSIKKyAgICAgICAgICAgICAgICAiLS13 aXRoLWNzYz1tY3MiKSkKKyAgICAgICAoKCM6cGhhc2VzIHBoYXNlcyAjfiVzdGFuZGFyZC1waGFz ZXMpCisgICAgICAgICN+KG1vZGlmeS1waGFzZXMgIyRwaGFzZXMKKyAgICAgICAgICAgIChhZGQt YmVmb3JlICdjb25maWd1cmUgJ3NldC1UWkRJUgorICAgICAgICAgICAgICAobGFtYmRhKiAoIzpr ZXkgbmF0aXZlLWlucHV0cyBpbnB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQorICAgICAgICAgICAg ICAgIChzZWFyY2gtaW5wdXQtZGlyZWN0b3J5IChvciBuYXRpdmUtaW5wdXRzIGlucHV0cykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hhcmUvem9uZWluZm8iKSkp CisgICAgICAgICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ3VzZS1vbGQtbW9uby1saWJyYXJpZXMK KyAgICAgICAgICAgICAgOzsgQXQgdGhpcyBwb2ludCBpbiBoaXN0b3J5IG1vbm8gaGFkIG5vdCwg dG8gbXkga25vd2xlZGdlLAorICAgICAgICAgICAgICA7OyBkZWlnbmVkIHRvIGdyYWNlIHVzIHdp dGggdGhlIGFjdHVhbCBzb3VyY2VzIHRvIHRoZSBiaW5hcmllcworICAgICAgICAgICAgICA7OyBz aGlwcGVkIGluIGV4dGVybmFsL2JpbmFyeS1yZWZlcmVuY2UtYXNzZW1ibGllcywgc28ganVzdCBj b3B5CisgICAgICAgICAgICAgIDs7IHRoZSBsaWJyYXJpZXMgZnJvbSBhbiBvbGRlciBtb25vIGZv ciBub3cgSSBndWVzcy4KKyAgICAgICAgICAgICAgKGxhbWJkYSBfCisgICAgICAgICAgICAgICAg KHN1YnN0aXR1dGUqICIuL21jcy9jbGFzcy9yZWZlcmVuY2UtYXNzZW1ibGllcy9NYWtlZmlsZSIK KyAgICAgICAgICAgICAgICAgICgoIlxcLlxcLi9cXC5cXC4vXFwuXFwuL2V4dGVybmFsL2JpbmFy eS1yZWZlcmVuY2UtYXNzZW1ibGllcy92IikKKyAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFw cGVuZCAjJCh0aGlzLXBhY2thZ2UtbmF0aXZlLWlucHV0ICJtb25vIikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiL2xpYi9tb25vLyIpKSkpKQorICAgICAgICAgICAgKGFkZC1h ZnRlciAndW5wYWNrICdkaXNhYmxlLU1pY3Jvc29mdC5CdWlsZC5UYXNrcy10ZXN0cworICAgICAg ICAgICAgICAobGFtYmRhIF8KKyAgICAgICAgICAgICAgICA7OyBUaGVzZSBmYWlsIGZvciB1bmtu b3duIHJlYXNvbnMKKyAgICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogIm1jcy9jbGFzcy9NaWNy b3NvZnQuQnVpbGQuVGFza3MvTWFrZWZpbGUiCisgICAgICAgICAgICAgICAgICAoKCJeaW5jbHVk ZSAuLi8uLi9idWlsZC9saWJyYXJ5Lm1ha2UiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAoc3Ry aW5nLWFwcGVuZAorICAgICAgICAgICAgICAgICAgICBhbGwKKyAgICAgICAgICAgICAgICAgICAg IlxucnVuLXRlc3QtcmVjdXJzaXZlOlxuXHRAZWNobyBza2lwcGluZyB0ZXN0c1xuIikpKSkpKSkp KQorICAgIChsaWNlbnNlIChsaXN0CisgICAgICAgICAgICAgIDs7IG1vc3Qgb2YgbWNzL3Rvb2xz LCBtb25vL21hbiwgbW9zdCBvZiBtY3MvY2xhc3MsIHRlc3RzIGJ5CisgICAgICAgICAgICAgIDs7 IGRlZmF1bHQsIG1vbm8vZWdsaWIsIG1vbm8vbWV0YWRhdGEvc2dlbiosCisgICAgICAgICAgICAg IDs7IG1vbm8vYXJjaC8qL1hYWC1jb2RlZ2VuLmgKKyAgICAgICAgICAgICAgOzsgbWNzL21jcywg bWNzL2dtY3MgKGR1YWwtbGljZW5zZWQgR1BMKQorICAgICAgICAgICAgICA7OyBzYW1wbGVzCisg ICAgICAgICAgICAgIGxpY2Vuc2U6eDExCisgICAgICAgICAgICAgIDs7IG1jcy9tY3MsIG1jcy9n bWNzIChkdWFsLWxpY2Vuc2VkIFgxMSkKKyAgICAgICAgICAgICAgOzsgc29tZSBvZiBtY3MvdG9v bHMKKyAgICAgICAgICAgICAgbGljZW5zZTpncGwxKyA7OyBub3RlOiAuL21jcy9MSUNFTlNFLkdQ TCBzcGVjaWZpZXMgbm8gdmVyc2lvbgorICAgICAgICAgICAgICA7OyBtb25vL21vbm8gKHRoZSBt b25vIFZNLCBJIHRoaW5rIHRoZXkgbWVhbnQgbW9uby9taW5pKQorICAgICAgICAgICAgICA7OyBt b25vL3N1cHBvcnQgKG5vdGU6IGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0LCBwcm9iYWJseSBtZWFu dAorICAgICAgICAgICAgICA7OyAuL3N1cHBvcnQsIGJ1dCB0aGF0IGNvbnRhaW5zIGEgY29weSBv ZiB6bGliPykKKyAgICAgICAgICAgICAgbGljZW5zZTpsZ3BsMi4wKyA7OyBub3RlOiAuL21jcy9M SUNFTlNFLkxHUEwgc3BlY2lmaWVzIG5vIHZlcnNpb24KKyAgICAgICAgICAgICAgOzsgbWNzL2ph eSwgbW9uby91dGlscy9tZW1jaGVjay5oCisgICAgICAgICAgICAgIGxpY2Vuc2U6YnNkLTQKKyAg ICAgICAgICAgICAgOzsgbW9uby91dGlscy9ic2VhcmNoLmMsIG1vbm8vaW8tbGF5ZXIvd2FwaV9n bG9iLntoLGN9CisgICAgICAgICAgICAgIGxpY2Vuc2U6YnNkLTMKKyAgICAgICAgICAgICAgOzsg bW9uby91dGlscy9mcmVlYnNkLXtkd2FyZixlbGZfY29tbW9uLGVsZjY0LGVsZjMyfS5oCisgICAg ICAgICAgICAgIGxpY2Vuc2U6YnNkLTIKKyAgICAgICAgICAgICAgOzsgbWNzL2NsYXNzL1N5c3Rl bS5Db3JlL1N5c3RlbS9UaW1lWm9uZUluZm8uQW5kcm9pZC5jcworICAgICAgICAgICAgICA7OyBt Y3MvY2xhc3MvUmFiYml0TVEuQ2xpZW50IChkdWFsIGxpY2Vuc2VkIG1wbDEuMSkKKyAgICAgICAg ICAgICAgbGljZW5zZTphc2wyLjAKKyAgICAgICAgICAgICAgOzsgLi9zdXBwb3J0LCBjb250YWlu cyBhIGNvcHkgb2YgemxpYiwgaW5jbC4gLi9zdXBwb3J0L21pbml6aXAKKyAgICAgICAgICAgICAg bGljZW5zZTp6bGliCisgICAgICAgICAgICAgIDs7IG1vbm8vZG9jcy9IdG1sQWdpbGl0eVBhY2ss IG1jcy91bml0MjQKKyAgICAgICAgICAgICAgbGljZW5zZTptcy1wbAorICAgICAgICAgICAgICA7 OyBtY3MvY2xhc3MvSTE4Ti9ta2xpc3Quc2gsIG1vbm8vYmVuY2htYXJrL3t6aXBtYXJrLGxvZ2lj fS5jcworICAgICAgICAgICAgICA7OyBtY3MvY2xhc3MveyxDb21wYXQufUlDU2hhcnBDb2RlLlNo YXJwWmlwTGliCisgICAgICAgICAgICAgIGxpY2Vuc2U6Z3BsMisKKyAgICAgICAgICAgICAgOzsg bWNzL2NsYXNzL1JhYmJpdE1RLkNsaWVudCAoZHVhbCBsaWNlbnNlZCBhc2wyLjApCisgICAgICAg ICAgICAgIGxpY2Vuc2U6bXBsMS4xCisgICAgICAgICAgICAgIDs7IEFQSSBEb2N1bWVudGF0aW9u CisgICAgICAgICAgICAgIGxpY2Vuc2U6Y2MtYnk0LjApKSkpCmRpZmYgLS1naXQgYS9nbnUvcGFj a2FnZXMvcGF0Y2hlcy9tb25vLTQuOS4wLWZpeC1ydW50aW1lbWV0YWRhdGF2ZXJzaW9uLnBhdGNo IGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby00LjkuMC1maXgtcnVudGltZW1ldGFkYXRhdmVy c2lvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lYzViYWQ5 YWUxCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby00LjkuMC1m aXgtcnVudGltZW1ldGFkYXRhdmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDEzIEBACitkaWZmIC0t Z2l0IGEvbWNzL21jcy9zZXR0aW5ncy5jcyBiL21jcy9tY3Mvc2V0dGluZ3MuY3MKK2luZGV4IDEz OTNiY2Q1OGYzLi5hZjVmZWJlN2NmNiAxMDA2NDQKKy0tLSBhL21jcy9tY3Mvc2V0dGluZ3MuY3MK KysrKyBiL21jcy9tY3Mvc2V0dGluZ3MuY3MKK0BAIC0xMTk3LDcgKzExOTcsNyBAQCBuYW1lc3Bh Y2UgTW9uby5DU2hhcnAgeworIAkJCQl9CisgCQkJCXJldHVybiBQYXJzZVJlc3VsdC5TdWNjZXNz OworIAorLQkJCWNhc2UgInJ1bnRpbWVtZXRhZGF0YXZlcnNpb24iOgorKwkJCWNhc2UgIi9ydW50 aW1lbWV0YWRhdGF2ZXJzaW9uIjoKKyAJCQkJaWYgKHZhbHVlLkxlbmd0aCA9PSAwKSB7CisgCQkJ CQlFcnJvcl9SZXF1aXJlc0FyZ3VtZW50IChvcHRpb24pOworIAkJCQkJcmV0dXJuIFBhcnNlUmVz dWx0LkVycm9yOwotLSAKMi40NS4yCgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0008-gnu-Add-mono-2.11.4.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0008-gnu-Add-mono-2.11.4.patch RnJvbSAzOTlmNWU4YWUxNmQ0ZmZkYzYyYWJmZDdiZDY0Y2QwZWNhMjU1YzQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8Mzk5ZjVlOGFlMTZkNGZmZGM2MmFiZmQ3YmQ2NGNk MGVjYTI1NWM0Ni4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTM6 MTI6MTEKU3ViamVjdDogW1BBVENIIDA4LzIxXSBnbnU6IEFkZCBtb25vLTIuMTEuNC4KCiogZ251 L3BhY2thZ2VzL2RvdG5ldC5zY20KICAobW9uby0yLjExLjQtZXh0ZXJuYWwtcmVwby1zcGVjcywg bW9uby0yLjExLjQpOiBOZXcgdmFyaWFibGVzLgogIChhZGQtZXh0ZXJuYWwtcmVwb3MpOiBOZXcg cHJvY2VkdXJlLgoqIGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tMi4xMS40LWZpeGVzLnBhdGNo OiBOZXcgcGF0Y2guCiogZ251L2xvY2FsLm1rIChkaXN0X3BhdGNoX0RBVEEpOiBSZWdpc3RlciBp dC4KCkNoYW5nZS1JZDogSTdjYjk2YWY4YjA1YTYyNWNmZTljYTlhYjBmMTEzMjYwOGMwMmVkMzEK LS0tCiBnbnUvbG9jYWwubWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsK IGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtICAgICAgICAgICAgICAgICAgICAgIHwgOTUgKysrKysr KysrKysrKysrKysrKysKIGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tMi4xMS40LWZpeGVzLnBh dGNoIHwgMzYgKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTMyIGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTIuMTEuNC1maXhlcy5w YXRjaAoKZGlmZiAtLWdpdCBhL2dudS9sb2NhbC5tayBiL2dudS9sb2NhbC5tawppbmRleCBhNDYx MWQwMDE2Li5hOWEyNmI5YmMxIDEwMDY0NAotLS0gYS9nbnUvbG9jYWwubWsKKysrIGIvZ251L2xv Y2FsLm1rCkBAIC0xNzY1LDYgKzE3NjUsNyBAQCBkaXN0X3BhdGNoX0RBVEEgPQkJCQkJCVwKICAg JUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby0xLjkuMS1maXhlcy5wYXRjaAkJCVwKICAgJUQlL3Bh Y2thZ2VzL3BhdGNoZXMvbW9uby0yLjQuMi4zLWZpeGVzLnBhdGNoCQkJXAogICAlRCUvcGFja2Fn ZXMvcGF0Y2hlcy9tb25vLTIuNi40LWZpeGVzLnBhdGNoCQkJXAorICAlRCUvcGFja2FnZXMvcGF0 Y2hlcy9tb25vLTIuMTEuNC1maXhlcy5wYXRjaAkJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMv bW9zYWljYXRjaGVyLXVuYnVuZGxlLWh0c2xpYi5wYXRjaAlcCiAgICVEJS9wYWNrYWdlcy9wYXRj aGVzL21ycmVzY3VlLXN1cHBvcnQtbG92ZS0xMS5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0 Y2hlcy9tdG9vbHMtbWZvcm1hdC11bmluaXRpYWxpemVkLnBhdGNoCVwKZGlmZiAtLWdpdCBhL2du dS9wYWNrYWdlcy9kb3RuZXQuc2NtIGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KaW5kZXggNGFm NjQyYjlmMy4uN2E2MjE0NzQ2ZiAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20K KysrIGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KQEAgLTQ5OCwzICs0OTgsOTggQEAgKGRlZmlu ZS1wdWJsaWMgbW9uby0yLjYuNAogICAgICAgICAgICAgICAgKHNlYXJjaC1wYXRjaGVzICJtb25v LTIuNi40LWZpeGVzLnBhdGNoIikpKSkKICAgICAobmF0aXZlLWlucHV0cyAobW9kaWZ5LWlucHV0 cyAocGFja2FnZS1uYXRpdmUtaW5wdXRzIG1vbm8tMi40LjIpCiAgICAgICAgICAgICAgICAgICAg ICAocmVwbGFjZSAibW9ubyIgbW9uby0yLjQuMikpKSkpCisKKzs7IHN1Ym1vZHVsZSBjaGVja291 dHMgdXNlIGdpdDovLywgd2hpY2ggaXNuJ3Qgc3VwcG9ydGVkIGJ5IGdpdGh1YiBhbnltb3JlLCBz bworOzsgd2UgbmVlZCB0byBtYW51YWxseSBwcm92aWRlIHRoZW0gaW5zdGVhZCBvZiBiZWluZyBh YmxlIHRvIHVzZSAocmVjdXJzaXZlPworOzsgI3QpLiAgQWxzbyB0cnkgbm90IHRvIHRoaW5rIHRv byBoYXJkIGFib3V0IHRoZSBmYWN0IHRoYXQgc29tZSBvZiB0aGVzZQorOzsgc3VibW9kdWxlcyBp biBsYXRlciB2ZXJzaW9ucyBjb250YWluIGJpbmFyeSBjb21waWxlciBibG9icyB3aGljaCBtb25v Cis7OyBtYWludGFpbmVycyBwcmVzdW1hYmx5IHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgYm9vdHN0 cmFwIGJpbmFyaWVzIHRoZXkKKzs7IHB1Ymxpc2hlZC4gIEFsbCBmZXRjaGVkIGFuZCB1cGRhdGVk IG92ZXIgdW5hdXRoZW50aWNhdGVkIGdpdDovLy4KKworKGRlZmluZSBtb25vLTIuMTEuNC1leHRl cm5hbC1yZXBvLXNwZWNzCisgIDs7IGZvcm1hdDogKHtyZXBvbmFtZSBPUiAocmVwb25hbWUgZGly LW5hbWUpfSBjb21taXQtaGFzaCBvcmlnaW4tc2hhMjU2KSAuLi4KKyAgOzsgaWYgcmVwb25hbWUg c3RhcnRzIHdpdGggaHR0cHM6Ly8gaXQgaXMgdHJlYXRlZCBhcyB0aGUgcmVwb3NpdG9yeSB1cmws CisgIDs7IG90aGVyd2lzZSB0aGUgbmFtZSBvZiBhIHJlcG9zaXRvcnkgdW5kZXIgaHR0cHM6Ly9n aXRodWIuY29tL21vbm8vCisgICcoKCJhc3BuZXR3ZWJzdGFjayIgICAgICAgICAgICAgICAiMTgz NmRlZmY2YTI2ODNiOGE1YjdkZDc4ZjJiNTkxYTEwYjQ3NTczZSIKKyAgICAgIjB2cXE0NWk4azZq eWxsamFycjA5aHFxaXdqczh3bjBsZ2pybDZiejcydnhxcHAwajM0NGsiKQorICAgICgiY2VjaWwi ICAgICAgICAgICAgICAgICAgICAgICAgIjU0ZTBhNTA0NjRlZGJjMjU0YjM5ZWEzYzg4NWVlOTFh ZGE3MzA3MDUiCisgICAgICIwMDdzemJmNWExNHE4Mzg2OTVsd2RwN2FwNnJ3enoza3psbGdqZm5p YnpscWlwdzN4MnlrIikKKyAgICAoImVudGl0eWZyYW1ld29yayIgICAgICAgICAgICAgICI5YmFj YTU2MmVlM2E3NDdhNDE4NzBmNDVlNzQ5ZTQ0MzZiNmFjYTI2IgorICAgICAiMGw4azA0YnlrYnJi azVxMnB6OGh6aDh4eTh5NGF5ejdqOTdmdzBreWszbHJhaTg5djVkYSIpCisgICAgKCJOZXd0b25z b2Z0Lkpzb24iICAgICAgICAgICAgICAiNDcxYzNlMDgwM2E5ZjQwYTBhY2M4YWVjZWIzMWRlNmZm OTNhNTJjNCIKKyAgICAgIjBkZ25nZDVocWs2eWhsZzQwa2FibjZxZG5rbm0zMnpjeDlxNmJtMncz MWNzbnNrNTk3OHMiKSkpCisKKyhkZWZpbmUgKGFkZC1leHRlcm5hbC1yZXBvcyBzcGVjcykKKyAg KGRlZmluZSAocmVwb25hbWUtPnVybCByZXBvbmFtZSkKKyAgICAoaWYgKHN0cmluZy1wcmVmaXg/ ICJodHRwczovLyIgcmVwb25hbWUpCisgICAgICAgIHJlcG9uYW1lCisgICAgICAgIChzdHJpbmct YXBwZW5kICJodHRwczovL2dpdGh1Yi5jb20vbW9uby8iIHJlcG9uYW1lKSkpCisKKyAgKGRlZmlu ZSogKGV4dGVybmFsLXJlcG8tZ2V4cCByZXBvbmFtZSBjb21taXQgaGFzaAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICM6a2V5IHJlY3Vyc2l2ZT8gKHBhdGNoZXMgJygpKSkKKyAgICAo bGV0ICgoc2hvcnQtY29tbWl0IChzdHJpbmctdGFrZSBjb21taXQgNikpCisgICAgICAgICAgKHJl cG9uYW1lIChpZiAocGFpcj8gcmVwb25hbWUpIChjYXIgcmVwb25hbWUpCisgICAgICAgICAgICAg ICAgICAgICAgICByZXBvbmFtZSkpCisgICAgICAgICAgKGRpci1uYW1lIChpZiAocGFpcj8gcmVw b25hbWUpIChjYWRyIHJlcG9uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb25hbWUp KSkKKyAgICAgICN+KGNvcHktcmVjdXJzaXZlbHkgIysob3JpZ2luCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh1cmwgKHJlcG9uYW1lLT51cmwgcmVwb25hbWUpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAocmVjdXJzaXZlPyByZWN1cnNpdmU/KSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZmlsZS1uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdpdC1maWxlLW5hbWUgZGlyLW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaG9ydC1jb21taXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHNoYTI1NiAoYmFzZTMyIGhhc2gpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHBhdGNoZXMgKG1hcCBzZWFyY2gtcGF0Y2ggcGF0Y2hlcykpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAjJChzdHJpbmctYXBwZW5kICIuL2V4dGVybmFsLyIgZGlyLW5hbWUpKSkpCisKKyAg KGRlZmluZSAoc3BlYy0+Z2V4cCBzcGVjKQorICAgIChhcHBseSBleHRlcm5hbC1yZXBvLWdleHAg c3BlYykpCisKKyAgI34oYmVnaW4KKyAgICAgICMrQChtYXAgc3BlYy0+Z2V4cCBzcGVjcykpKQor CisoZGVmaW5lLXB1YmxpYyBtb25vLTIuMTEuNAorICAocGFja2FnZQorICAgIChpbmhlcml0IG1v bm8tMi42LjQpCisgICAgKHZlcnNpb24gIjIuMTEuNCIpCisgICAgKG5hbWUgIm1vbm8iKQorICAg IChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAg ICAgICAgICAgKHVyaQorICAgICAgICAgICAgICAgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAg ICAgICAodXJsICJodHRwczovL2dpdGxhYi53aW5laHEub3JnL21vbm8vbW9uby5naXQiKQorICAg ICAgICAgICAgICAgIChjb21taXQgKHN0cmluZy1hcHBlbmQgIm1vbm8tIiAiMi4xMS40IikpKSkK KyAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1lIHZlcnNpb24pKQor ICAgICAgICAgICAgICAoc2hhMjU2CisgICAgICAgICAgICAgICAoYmFzZTMyCisgICAgICAgICAg ICAgICAgIjB5MmJpZmkyYXZiam1mcDgwaGpnYTJkeXFpcDRiNDZ6a3Z4NnlmcjlwYTJoaG05NDBy cHgiKSkKKyAgICAgICAgICAgICAgKG1vZHVsZXMgJygoZ3VpeCBidWlsZCB1dGlscykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAoaWNlLTkgc3RyaW5nLWZ1bikpKQorICAgICAgICAgICAgICAo c25pcHBldCAjfihiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIyQoYWRkLWV4dGVy bmFsLXJlcG9zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25vLTIuMTEuNC1leHRl cm5hbC1yZXBvLXNwZWNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIyRwcmVwYXJlLW1v bm8tc291cmNlKSkKKyAgICAgICAgICAgICAgKHBhdGNoZXMKKyAgICAgICAgICAgICAgIChzZWFy Y2gtcGF0Y2hlcyAibW9uby0yLjExLjQtZml4ZXMucGF0Y2giKSkpKQorICAgIChidWlsZC1zeXN0 ZW0gZ251LWJ1aWxkLXN5c3RlbSkKKyAgICAobmF0aXZlLWlucHV0cyAobW9kaWZ5LWlucHV0cyAo cGFja2FnZS1uYXRpdmUtaW5wdXRzIG1vbm8tMi42LjQpCisgICAgICAgICAgICAgICAgICAgICAo cmVwbGFjZSAibW9ubyIgbW9uby0yLjYuNCkpKQorICAgIChsaWNlbnNlIChsaXN0CisgICAgICAg ICAgICAgIDs7IG1vc3Qgb2YgbWNzL3Rvb2xzLCBtb25vL21hbiwgbW9zdCBvZiBtY3MvY2xhc3Ms IHRlc3RzIGJ5CisgICAgICAgICAgICAgIDs7IGRlZmF1bHQsIG1vbm8vZWdsaWIsIG1vbm8vbWV0 YWRhdGEvc2dlbiosCisgICAgICAgICAgICAgIDs7IG1vbm8vYXJjaC8qL1hYWC1jb2RlZ2VuLmgK KyAgICAgICAgICAgICAgOzsgbWNzL21jcywgbWNzL2dtY3MgKGR1YWwtbGljZW5zZWQgR1BMKQor ICAgICAgICAgICAgICA7OyBzYW1wbGVzCisgICAgICAgICAgICAgIGxpY2Vuc2U6eDExCisgICAg ICAgICAgICAgIDs7IG1jcy9tY3MsIG1jcy9nbWNzIChkdWFsLWxpY2Vuc2VkIFgxMSkKKyAgICAg ICAgICAgICAgOzsgc29tZSBvZiBtY3MvdG9vbHMKKyAgICAgICAgICAgICAgbGljZW5zZTpncGwx KyA7OyBub3RlOiAuL21jcy9MSUNFTlNFLkdQTCBzcGVjaWZpZXMgbm8gdmVyc2lvbgorICAgICAg ICAgICAgICA7OyBtb25vL21vbm8gKHRoZSBtb25vIFZNLCBJIHRoaW5rIHRoZXkgbWVhbnQgbW9u by9taW5pKQorICAgICAgICAgICAgICBsaWNlbnNlOmxncGwyLjArIDs7IG5vdGU6IC4vbWNzL0xJ Q0VOU0UuTEdQTCBzcGVjaWZpZXMgbm8gdmVyc2lvbgorICAgICAgICAgICAgICA7OyBtY3MvamF5 CisgICAgICAgICAgICAgIGxpY2Vuc2U6YnNkLTQKKyAgICAgICAgICAgICAgOzsgbWNzL2NsYXNz L1N5c3RlbS5Db3JlL1N5c3RlbS9UaW1lWm9uZUluZm8uQW5kcm9pZC5jcworICAgICAgICAgICAg ICBsaWNlbnNlOmFzbDIuMCkpKSkKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL21v bm8tMi4xMS40LWZpeGVzLnBhdGNoIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby0yLjExLjQt Zml4ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDJhMDVm Nzk3NwotLS0gL2Rldi9udWxsCisrKyBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tMi4xMS40 LWZpeGVzLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4g Yi9jb25maWd1cmUuaW4KK2luZGV4IDM4Y2M2ZGMyOTI1Li40YzYwOGViMTUwZiAxMDA2NDQKKy0t LSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtNDcwLDcgKzQ3MCw3IEBA IEFDX0NIRUNLX0hFQURFUlMod2NoYXIuaCkKKyBBQ19DSEVDS19IRUFERVJTKGllZWVmcC5oKQor IEFDX01TR19DSEVDS0lORyhmb3IgaXNpbmYpCisgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxtYXRo Lmg+XSwgWworLQlpbnQgZiA9IGlzaW5mICgxKTsKKysJaW50IGYgPSBpc2luZiAoMS4wKTsKKyBd LCBbCisgCUFDX01TR19SRVNVTFQoeWVzKQorIAlBQ19ERUZJTkUoSEFWRV9JU0lORiwgMSwgW2lz aW5mIGF2YWlsYWJsZV0pCitkaWZmIC0tZ2l0IGEvbW9uby9pby1sYXllci9wcm9jZXNzZXMuYyBi L21vbm8vaW8tbGF5ZXIvcHJvY2Vzc2VzLmMKK2luZGV4IDU4NmI1NDcxNWRiLi5kMjc4NTdhYTA5 MiAxMDA2NDQKKy0tLSBhL21vbm8vaW8tbGF5ZXIvcHJvY2Vzc2VzLmMKKysrKyBiL21vbm8vaW8t bGF5ZXIvcHJvY2Vzc2VzLmMKK0BAIC0xOCw2ICsxOCw3IEBACisgI2luY2x1ZGUgPGVycm5vLmg+ CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNpbmNs dWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxz aWduYWwuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KK2RpZmYgLS1naXQgYS9ydW50aW1lL01h a2VmaWxlLmFtIGIvcnVudGltZS9NYWtlZmlsZS5hbQoraW5kZXggNjk1N2EyODdkMzguLjJkMDcx MjMwYTg0IDEwMDY0NAorLS0tIGEvcnVudGltZS9NYWtlZmlsZS5hbQorKysrIGIvcnVudGltZS9N YWtlZmlsZS5hbQorQEAgLTEsNiArMSwzIEBACistIyBoYWNrIHRvIHByZXZlbnQgJ2NoZWNrJyBm cm9tIGRlcGVuZGluZyBvbiAnYWxsJworLUFVVE9NQUtFX09QVElPTlMgPSBjeWdudXMKKy0KKyB0 bXBpbnN0ID0gX3RtcGluc3QKKyAKKyBub2luc3RfU0NSSVBUUyA9IG1vbm8td3JhcHBlciBtb25v ZGlzLXdyYXBwZXIKLS0gCjIuNDUuMgoK --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0010-gnu-Add-mono-3.12.1.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0010-gnu-Add-mono-3.12.1.patch RnJvbSA5ZGRkOTM2MjhhMTdkZjFkYjdhZjVmZWQ3YjJkOWM3ZjE4MTY5YzU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8OWRkZDkzNjI4YTE3ZGYxZGI3YWY1ZmVkN2IyZDlj N2YxODE2OWM1Ni4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTM6 MTQ6MzUKU3ViamVjdDogW1BBVENIIDEwLzIxXSBnbnU6IEFkZCBtb25vLTMuMTIuMS4KCiogZ251 L3BhY2thZ2VzL2RvdG5ldC5zY20KICAobW9uby0zLjEyLjEtZXh0ZXJuYWwtcmVwby1zcGVjcywg bW9uby0zLjEyLjEpOiBOZXcgdmFyaWFibGVzLgoKQ2hhbmdlLUlkOiBJZDVkMTM0OTIxNjNhYWJi ODQ1YzQ3NjA5ZjUyMjg3YzU1NjU0OTdhNAotLS0KIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtIHwg NTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFu Z2VkLCA1MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL2RvdG5ldC5z Y20gYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCAzMzM1ZmM1OGIxLi5lMWYxMjcyMDg4 IDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQorKysgYi9nbnUvcGFja2FnZXMv ZG90bmV0LnNjbQpAQCAtNjU2LDMgKzY1Niw1NSBAQCAoZGVmaW5lLXB1YmxpYyBtb25vLTMuMAog ICAgICAgICAgICAgICBsaWNlbnNlOmFzbDIuMAogICAgICAgICAgICAgICA7OyAuL3N1cHBvcnQs IGNvbnRhaW5zIGEgY29weSBvZiB6bGliCiAgICAgICAgICAgICAgIGxpY2Vuc2U6emxpYikpKSkK KworKGRlZmluZSBtb25vLTMuMTIuMS1leHRlcm5hbC1yZXBvLXNwZWNzCisgIDs7IGZvcm1hdDog KHtyZXBvbmFtZSBPUiAocmVwb25hbWUgZGlyLW5hbWUpfSBjb21taXQgc2hhMjU2KSAuLi4KKyAg JygoImFzcG5ldHdlYnN0YWNrIiAgICAgICAgICAgICAgICJlNzdiMTJlNmNjNWVkMjYwYTk4NDQ3 ZjYwOWU4ODczMzdlNDRlMjk5IgorICAgICAiMHJrczM0NHFyNGZtcDNmczEyNjRkMnFrbW0zNDht OGQxa2pkN3o0bDk0aWlpcnduMWZxMSIpCisgICAgKCJjZWNpbCIgICAgICAgICAgICAgICAgICAg ICAgICAiMzNkNTBiODc0ZmQ1MjcxMThiYzM2MWQ4M2RlM2Q0OTRlOGJiNTVlMSIKKyAgICAgIjFw NGhsMTc5NmliMjZ5a3lmNXNubDZjajBseDB2N21qaDB4cWhqdzZxZGg3NTNuc2p5aGIiKQorICAg ICgiZW50aXR5ZnJhbWV3b3JrIiAgICAgICAgICAgICAgImE1ZmFkZGVjYTJiZWUwODYzNmYxYjdi M2FmODM4OWJkNDExOWY0Y2QiCisgICAgICIwYjA1cHpmNnF3ZGQ5MnBienltMzJuZm13OHJxMzY4 MjB2ZHpha3Exa3lrZm1kZGpyOWE3IikKKyAgICAoImlrZGFzbSIgICAgICAgICAgICAgICAgICAg ICAgICI3ZGVkNGRlY2I5YzM5NDQ2YmU2MzRkNDJhNTc1ZmRhOWJjM2Q5NDVjIgorICAgICAiMGYz bWJmaXp4bXZyNW5qajEyM3cwd243c3o4NXY1cTJtendpampxbDh3MTA5NWkwOTE2bCIpCisgICAg KCgiaWt2bS1mb3JrIiAiaWt2bSIpICAgICAgICAgICAiMjI1MzRkZTIwOThhY2JjZjIwOGY2YjA2 ODM2ZDEyMmRhYjc5OWU0YiIKKyAgICAgIjFpdnl3eTVzYzU5NHNsM2JzOXhya25hMWRiaGtwN3Yx bXY3OW45NnlkZ3E2emNzMDY5OGwiKQorICAgICgiTHVjZW5lLk5ldCIgICAgICAgICAgICAgICAg ICAgIjg4ZmI2N2IwNzYyMWRmZWQwNTRkOGQ3NWZkNTA2NzJmYjI2MzQ5ZGYiCisgICAgICIxcmZ4 cWZ6N2hrcDlyZzVhbnZ4bHY2Zm5hMHhpMGJudjF5OHFiaGY4eDQ4bDA4eWpiMzhrIikKKyAgICAo Ik5ld3RvbnNvZnQuSnNvbiIgICAgICAgICAgICAgICI0NzFjM2UwODAzYTlmNDBhMGFjYzhhZWNl YjMxZGU2ZmY5M2E1MmM0IgorICAgICAiMGRnbmdkNWhxazZ5aGxnNDBrYWJuNnFkbmtubTMyemN4 OXE2Ym0ydzMxY3Nuc2s1OTc4cyIpCisgICAgKCJyeCIgICAgICAgICAgICAgICAgICAgICAgICAg ICAiMDBjMWFhZGYxNDkzMzRjNjk0ZDJhNTA5Njk4M2E4NGNmNDYyMjFiOCIKKyAgICAgIjBuZGFt MHFybmtiNGdqMjFsYXBxZ2N5MG1xdzdzMTh2aXN3c2p5anlhYWE0ZmdxdzhrbXEiKSkpCisKKyhk ZWZpbmUtcHVibGljIG1vbm8tMy4xMi4xCisgIChwYWNrYWdlCisgICAgKGluaGVyaXQgbW9uby0z LjApCisgICAgKHZlcnNpb24gIjMuMTIuMSIpCisgICAgKG5hbWUgIm1vbm8iKQorICAgIChzb3Vy Y2UgKG9yaWdpbgorICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAg ICAgKHVyaQorICAgICAgICAgICAgICAgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAo dXJsICJodHRwczovL2dpdGxhYi53aW5laHEub3JnL21vbm8vbW9uby5naXQiKQorICAgICAgICAg ICAgICAgIChjb21taXQgKHN0cmluZy1hcHBlbmQgIm1vbm8tIiAiMy4xMi4xIikpKSkKKyAgICAg ICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1lIHZlcnNpb24pKQorICAgICAg ICAgICAgICAoc2hhMjU2CisgICAgICAgICAgICAgICAoYmFzZTMyCisgICAgICAgICAgICAgICAg IjAxc3hybmZjaDYxazh2N2F2N2NjYm15M3YzN2t5OHlwODQ2MGo2eWNuYnlmYTMzMDV5MGYiKSkK KyAgICAgICAgICAgICAgKG1vZHVsZXMgJygoZ3VpeCBidWlsZCB1dGlscykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAoaWNlLTkgc3RyaW5nLWZ1bikpKQorICAgICAgICAgICAgICAoc25pcHBl dCAjfihiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIyQoYWRkLWV4dGVybmFsLXJl cG9zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25vLTMuMTIuMS1leHRlcm5hbC1y ZXBvLXNwZWNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIyRwcmVwYXJlLW1vbm8tc291 cmNlKSkpKQorICAgIChuYXRpdmUtaW5wdXRzIChtb2RpZnktaW5wdXRzIChwYWNrYWdlLW5hdGl2 ZS1pbnB1dHMgbW9uby0zLjApCisgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAibW9ubyIg bW9uby0zLjApKSkKKyAgICAoYXJndW1lbnRzCisgICAgIChzdWJzdGl0dXRlLWtleXdvcmQtYXJn dW1lbnRzIChwYWNrYWdlLWFyZ3VtZW50cyBtb25vLTMuMCkKKyAgICAgICAoKCM6cGhhc2VzIHBo YXNlcyAjfiVzdGFuZGFyZC1waGFzZXMpCisgICAgICAgICN+KG1vZGlmeS1waGFzZXMgIyRwaGFz ZXMKKyAgICAgICAgICAgIChhZGQtYWZ0ZXIgJ3VucGFjayAnc2V0LVRaCisgICAgICAgICAgICAg IChsYW1iZGEgXworICAgICAgICAgICAgICAgIDs7IGZvciBzb21lIHJlYXNvbiBhIGRlZmF1bHQg aXMgb25seSB1c2VkIGlmIHRoaXMgaXMgZW1wdHksIG5vdAorICAgICAgICAgICAgICAgIDs7IGlm IGl0IGlzIHVuc2V0LgorICAgICAgICAgICAgICAgIChzZXRlbnYgIlRaIiAiIikpKSkpKSkpKQot LSAKMi40NS4yCgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0006-gnu-Add-mono-2.4.2.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0006-gnu-Add-mono-2.4.2.patch RnJvbSA5OGNlN2VjN2Y0ZDBjZDY2Yzc3YjdlZGM0MzZmMDAwYWQxYjdhZjQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8OThjZTdlYzdmNGQwY2Q2NmM3N2I3ZWRjNDM2ZjAw MGFkMWI3YWY0MC4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTM6 MDI6MzEKU3ViamVjdDogW1BBVENIIDA2LzIxXSBnbnU6IEFkZCBtb25vLTIuNC4yLgoKKiBnbnUv cGFja2FnZXMvZG90bmV0LnNjbSAobW9uby0yLjQuMik6IE5ldyB2YXJpYWJsZS4KKiBnbnUvcGFj a2FnZXMvcGF0Y2hlcy9tb25vLTIuNC4yLjMtZml4ZXMucGF0Y2g6IE5ldyBwYXRjaC4KKiBnbnUv bG9jYWwubWsgKGRpc3RfcGF0Y2hfREFUQSk6IFJlZ2lzdGVyIGl0LgoKQ2hhbmdlLUlkOiBJMTRm ZjAxZDVmYjNjM2YyM2M4M2Y4NTE4OTkwYTc5MzI5NDkwZDNiOQotLS0KIGdudS9sb2NhbC5tayAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIGdudS9wYWNrYWdlcy9kb3Ru ZXQuc2NtICAgICAgICAgICAgICAgICAgICAgICB8IDUzICsrKysrKysrKysrKysrKysrCiBnbnUv cGFja2FnZXMvcGF0Y2hlcy9tb25vLTIuNC4yLjMtZml4ZXMucGF0Y2ggfCA1OSArKysrKysrKysr KysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby0yLjQuMi4zLWZpeGVzLnBhdGNoCgpk aWZmIC0tZ2l0IGEvZ251L2xvY2FsLm1rIGIvZ251L2xvY2FsLm1rCmluZGV4IDg1MmIzM2UwYWEu LmQwOGMwM2E2ODkgMTAwNjQ0Ci0tLSBhL2dudS9sb2NhbC5taworKysgYi9nbnUvbG9jYWwubWsK QEAgLTE3NjMsNiArMTc2Myw3IEBAIGRpc3RfcGF0Y2hfREFUQSA9CQkJCQkJXAogICAlRCUvcGFj a2FnZXMvcGF0Y2hlcy9tb25vLTEuMi42LWJvb3RzdHJhcC5wYXRjaAkJXAogICAlRCUvcGFja2Fn ZXMvcGF0Y2hlcy9tb25vLTEuOS4xLWFkZC1NT05PX0NSRUFURV9JTUFHRV9WRVJTSU9OLnBhdGNo CQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tMS45LjEtZml4ZXMucGF0Y2gJCQlcCisg ICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tMi40LjIuMy1maXhlcy5wYXRjaAkJCVwKICAgJUQl L3BhY2thZ2VzL3BhdGNoZXMvbW9zYWljYXRjaGVyLXVuYnVuZGxlLWh0c2xpYi5wYXRjaAlcCiAg ICVEJS9wYWNrYWdlcy9wYXRjaGVzL21ycmVzY3VlLXN1cHBvcnQtbG92ZS0xMS5wYXRjaAkJXAog ICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tdG9vbHMtbWZvcm1hdC11bmluaXRpYWxpemVkLnBhdGNo CVwKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtIGIvZ251L3BhY2thZ2VzL2Rv dG5ldC5zY20KaW5kZXggNDkzNmExMzk0Zi4uMjQxMTU3Y2RjZSAxMDA2NDQKLS0tIGEvZ251L3Bh Y2thZ2VzL2RvdG5ldC5zY20KKysrIGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KQEAgLTQyMiwz ICs0MjIsNTYgQEAgKGRlZmluZS1wdWJsaWMgbW9uby0xLjkuMQogICAgICAgICAgICAgICAgIChw YXRjaC1zaGViYW5nICJtb25vL3Rlc3RzL3Rlc3QtZHJpdmVyIikpKSkpCiAgICAgICAgKCgjOnRl c3RzPyBfICNmKSAjZikKICAgICAgICAoKCM6cGFyYWxsZWwtdGVzdHM/IF8gI2YpICNmKSkpKSkK KworKGRlZmluZS1wdWJsaWMgbW9uby0yLjQuMgorICAocGFja2FnZQorICAgIChpbmhlcml0IG1v bm8tMS45LjEpCisgICAgKHZlcnNpb24gIjIuNC4yLjMiKQorICAgIChuYW1lICJtb25vIikKKyAg ICAoc291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAg ICAgICAgICAgICh1cmkKKyAgICAgICAgICAgICAgIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAg ICAgICAgKHVybCAiaHR0cHM6Ly9naXRsYWIud2luZWhxLm9yZy9tb25vL21vbm8uZ2l0IikKKyAg ICAgICAgICAgICAgICAoY29tbWl0IChzdHJpbmctYXBwZW5kICJtb25vLSIgIjItNC0yLTMiKSkp KQorICAgICAgICAgICAgICAoZmlsZS1uYW1lIChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lvbikp CisgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgIChiYXNlMzIKKyAgICAgICAg ICAgICAgICAiMG1ucmsxN3JkOWM1cmgzMGRoODJhMzljOWFrMW5zOTk4YjQxaXZwcnZ5N20wNjhz a3BkYSIpKQorICAgICAgICAgICAgICAobW9kdWxlcyAnKChndWl4IGJ1aWxkIHV0aWxzKQorICAg ICAgICAgICAgICAgICAgICAgICAgIChpY2UtOSBzdHJpbmctZnVuKSkpCisgICAgICAgICAgICAg IChzbmlwcGV0IHByZXBhcmUtbW9uby1zb3VyY2UpCisgICAgICAgICAgICAgIChwYXRjaGVzCisg ICAgICAgICAgICAgICAoc2VhcmNoLXBhdGNoZXMgIm1vbm8tMi40LjIuMy1maXhlcy5wYXRjaCIp KSkpCisgICAgKG5hdGl2ZS1pbnB1dHMgKG1vZGlmeS1pbnB1dHMgKHBhY2thZ2UtbmF0aXZlLWlu cHV0cyBtb25vLTEuOS4xKQorICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UgIm1vbm8iIG1v bm8tMS45LjEpKSkKKyAgICAoaW5wdXRzIChtb2RpZnktaW5wdXRzIChwYWNrYWdlLWlucHV0cyBt b25vLTEuOS4xKQorICAgICAgICAgICAgICAoYXBwZW5kIGdldHRleHQtbWluaW1hbCkpKQorICAg IChhcmd1bWVudHMKKyAgICAgKHN1YnN0aXR1dGUta2V5d29yZC1hcmd1bWVudHMgKHBhY2thZ2Ut YXJndW1lbnRzIG1vbm8tMS45LjEpCisgICAgICAgKCgjOnRlc3RzPyBfICNmKQorICAgICAgICA7 OyBXaGVuIGl0IHRyaWVzIGJ1aWxkaW5nIGlsdGVzdHMuaWwgaW4gbW9uby9taW5pLCBpdCBnZXRz OiBlcnJvcgorICAgICAgICA7OyBDUzAwMDY6IGNhbm5vdCBmaW5kIG1ldGFkYXRhIGZpbGUgYFRl c3REcml2ZXIuZGxsJy4gIEl0IGJ1aWxkcyBmaW5lCisgICAgICAgIDs7IG91dHNpZGUgb2YgdGhl IGJ1aWxkIGVudmlyb25tZW50LCBidXQgbGF0ZXIgdGVzdHMgZmFpbCwgYW5kIEkgY2FuJ3QKKyAg ICAgICAgOzsgYmUgYm90aGVyZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgY2F1c2luZyBpbGFzbSB0 byBub3QgZmluZAorICAgICAgICA7OyBUZXN0RHJpdmVyLmRsbC4KKyAgICAgICAgI2YpCisgICAg ICAgKCgjOnBhcmFsbGVsLWJ1aWxkPyBfKSAjdCkKKyAgICAgICAoKCM6cGhhc2VzIHBoYXNlcyAj fiVzdGFuZGFyZC1waGFzZXMpCisgICAgICAgICN+KG1vZGlmeS1waGFzZXMgIyRwaGFzZXMKKyAg ICAgICAgICAgIChhZGQtYmVmb3JlICdib290c3RyYXAgJ3BhdGNoLXN1Yi1hdXRvZ2VuLnNoLXNo ZWJhbmcKKyAgICAgICAgICAgICAgKGxhbWJkYSBfCisgICAgICAgICAgICAgICAgKHBhdGNoLXNo ZWJhbmcgIi4vZWdsaWIvYXV0b2dlbi5zaCIpKSkpKSkpCisgICAgKGxpY2Vuc2UgKGxpc3QKKyAg ICAgICAgICAgICAgOzsgbW9zdCBvZiBtY3MvdG9vbHMsIG1vbm8vbWFuLCBtb3N0IG9mIG1jcy9j bGFzcywgdGVzdHMgYnkKKyAgICAgICAgICAgICAgOzsgZGVmYXVsdCwgbW9uby9lZ2xpYgorICAg ICAgICAgICAgICA7OyBtY3MvbWNzLCBtY3MvZ21jcyAoZHVhbC1saWNlbnNlZCBHUEwpCisgICAg ICAgICAgICAgIDs7IHNhbXBsZXMKKyAgICAgICAgICAgICAgbGljZW5zZTp4MTEKKyAgICAgICAg ICAgICAgOzsgbWNzL21jcywgbWNzL2dtY3MgKGR1YWwtbGljZW5zZWQgWDExKQorICAgICAgICAg ICAgICA7OyBzb21lIG9mIG1jcy90b29scworICAgICAgICAgICAgICBsaWNlbnNlOmdwbDErIDs7 IG5vdGU6IC4vbWNzL0xJQ0VOU0UuR1BMIHNwZWNpZmllcyBubyB2ZXJzaW9uCisgICAgICAgICAg ICAgIDs7IG1vbm8vbW9ubyAodGhlIG1vbm8gVk0sIEkgdGhpbmsgdGhleSBtZWFudCBtb25vL21p bmkpCisgICAgICAgICAgICAgIGxpY2Vuc2U6bGdwbDIuMCsgOzsgbm90ZTogLi9tY3MvTElDRU5T RS5MR1BMIHNwZWNpZmllcyBubyB2ZXJzaW9uCisgICAgICAgICAgICAgIDs7IG1jcy9qYXkKKyAg ICAgICAgICAgICAgbGljZW5zZTpic2QtNCkpKSkKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9w YXRjaGVzL21vbm8tMi40LjIuMy1maXhlcy5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL21v bm8tMi40LjIuMy1maXhlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi4xM2NmZjc3NDUwCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMv bW9uby0yLjQuMi4zLWZpeGVzLnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK2RpZmYgLS1naXQgYS9k YXRhL21vbm8ucGMuaW4gYi9kYXRhL21vbm8ucGMuaW4KK2luZGV4IDZkYTA5NjBkYjJkLi5kNDNi YjE4NzIxOCAxMDA2NDQKKy0tLSBhL2RhdGEvbW9uby5wYy5pbgorKysrIGIvZGF0YS9tb25vLnBj LmluCitAQCAtNyw2ICs3LDYgQEAgc3lzY29uZmRpcj1Ac3lzY29uZmRpckAKKyBOYW1lOiBNb25v CisgRGVzY3JpcHRpb246IE1vbm8gUnVudGltZQorIFZlcnNpb246IEBWRVJTSU9OQAorLVJlcXVp cmVzOiBnbGliLTIuMCBndGhyZWFkLTIuMAorK1JlcXVpcmVzOiBnbGliLTIuMCBndGhyZWFkLTIu MCBiZHctZ2MKKyBMaWJzOiAtTCR7bGliZGlyfSBAZXhwb3J0X2xkZmxhZ3NAIC1sbW9ubyBAbGli bW9ub19sZGZsYWdzQAorIENmbGFnczogLUkke2luY2x1ZGVkaXJ9IEBsaWJtb25vX2NmbGFnc0AK K2RpZmYgLS1naXQgYS9tb25vLXVuaW5zdGFsbGVkLnBjLmluIGIvbW9uby11bmluc3RhbGxlZC5w Yy5pbgoraW5kZXggN2ZhM2YxMmRjOTEuLjJhMDczNDM2MmZkIDEwMDY0NAorLS0tIGEvbW9uby11 bmluc3RhbGxlZC5wYy5pbgorKysrIGIvbW9uby11bmluc3RhbGxlZC5wYy5pbgorQEAgLTEsNiAr MSw2IEBACisgTmFtZTogTW9ubworIERlc2NyaXB0aW9uOiBNb25vIFJ1bnRpbWUKKyBWZXJzaW9u OiBAVkVSU0lPTkAKKy1SZXF1aXJlczogZ2xpYi0yLjAgZ3RocmVhZC0yLjAKKytSZXF1aXJlczog Z2xpYi0yLjAgZ3RocmVhZC0yLjAgYmR3LWdjCisgTGliczogLUxAbW9ub19idWlsZF9yb290QC9t b25vL21pbmkvLmxpYnMgQGV4cG9ydF9sZGZsYWdzQCAtbG1vbm8gQGxpYm1vbm9fbGRmbGFnc0AK KyBDZmxhZ3M6IC1JQGFic190b3Bfc3JjZGlyQCAtSUBhYnNfdG9wX3NyY2RpckAvbW9ubyBAbGli bW9ub19jZmxhZ3NACitkaWZmIC0tZ2l0IGEvbW9uby9tZXRhZGF0YS9NYWtlZmlsZS5hbSBiL21v bm8vbWV0YWRhdGEvTWFrZWZpbGUuYW0KK2luZGV4IDgzZjg1MzIzNjliLi4zZmNhN2ZjMTNiOSAx MDA2NDQKKy0tLSBhL21vbm8vbWV0YWRhdGEvTWFrZWZpbGUuYW0KKysrKyBiL21vbm8vbWV0YWRh dGEvTWFrZWZpbGUuYW0KK0BAIC0xNzEsNyArMTcxLDYgQEAgbGlibW9ub3J1bnRpbWVpbmNsdWRl X0hFQURFUlMgPSBcCisgCW9iamVjdC5oCVwKKyAJZXhjZXB0aW9uLmgJXAorIAlwcm9maWxlci5o CVwKKy0JYXBwZG9tYWluLmgJXAorIAltb25vLWNvbmZpZy5oCVwKKyAJZGVidWctaGVscGVycy5o CVwKKyAJbWVtcG9vbC5oCitkaWZmIC0tZ2l0IGEvbW9uby9taW5pL2RyaXZlci5jIGIvbW9uby9t aW5pL2RyaXZlci5jCitpbmRleCA0OGNhMmQ5Njg5OS4uOWZiMzUxMjIwMGIgMTAwNjQ0CistLS0g YS9tb25vL21pbmkvZHJpdmVyLmMKKysrKyBiL21vbm8vbWluaS9kcml2ZXIuYworQEAgLTEyMzYs NiArMTIzNiw3IEBAIG1vbm9fbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKKyAjZW5kaWYK KyAJaWYgKCFnX3RocmVhZF9zdXBwb3J0ZWQgKCkpCisgCQlnX3RocmVhZF9pbml0IChOVUxMKTsK KysgICAgICAgIEdDX2FsbG93X3JlZ2lzdGVyX3RocmVhZHMoKTsKKyAKKyAJaWYgKG1vbm9fcnVu bmluZ19vbl92YWxncmluZCAoKSAmJiBnZXRlbnYgKCJNT05PX1ZBTEdSSU5EX0xFQUtfQ0hFQ0si KSkgeworIAkJR01lbVZUYWJsZSBtZW1fdnRhYmxlOworZGlmZiAtLWdpdCBhL3J1bnRpbWUvTWFr ZWZpbGUuYW0gYi9ydW50aW1lL01ha2VmaWxlLmFtCitpbmRleCAwZTg3NmUyYTQ5MS4uYjljZDBh OTlkOWUgMTAwNjQ0CistLS0gYS9ydW50aW1lL01ha2VmaWxlLmFtCisrKysgYi9ydW50aW1lL01h a2VmaWxlLmFtCitAQCAtMSw2ICsxLDMgQEAKKy0jIGhhY2sgdG8gcHJldmVudCAnY2hlY2snIGZy b20gZGVwZW5kaW5nIG9uICdhbGwnCistQVVUT01BS0VfT1BUSU9OUyA9IGN5Z251cworLQorIHRt cGluc3QgPSBfdG1waW5zdAorIAorIG5vaW5zdF9TQ1JJUFRTID0gbW9uby13cmFwcGVyIG1vbm9k aXMtd3JhcHBlcgotLSAKMi40NS4yCgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0014-gnu-Add-mono-5.2.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0014-gnu-Add-mono-5.2.0.patch RnJvbSAwYTc5NWFhNjgzZjQxNjczNzU2YjQ2YWNiNWVjMjlhNTI4YzY1NDY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8MGE3OTVhYTY4M2Y0MTY3Mzc1NmI0NmFjYjVlYzI5 YTUyOGM2NTQ2OS4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTM6 MzM6MzgKU3ViamVjdDogW1BBVENIIDE0LzIxXSBnbnU6IEFkZCBtb25vLTUuMi4wLgoKKiBnbnUv cGFja2FnZXMvZG90bmV0LnNjbQogIChtb25vLTUuMi4wLWV4dGVybmFsLXJlcG8tc3BlY3MsIG1v bm8tNS4yLjApOiBOZXcgdmFyaWFibGVzLgoKQ2hhbmdlLUlkOiBJMDg5ODUwYmZkNTBmMjI5YWY1 YTIzNmJiYzM5ZWU5YWU0Nzg3ZWY5ZgotLS0KIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtIHwgNjcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2Vk LCA2NyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20g Yi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCBkYTI5NjFiZmY0Li5mYjEzNmQwOWMyIDEw MDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQorKysgYi9nbnUvcGFja2FnZXMvZG90 bmV0LnNjbQpAQCAtMTAzOCwzICsxMDM4LDcwIEBAIChkZWZpbmUtcHVibGljIG1vbm8tNS4xLjAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMkQHByZXBhcmUtbW9uby1zb3VyY2UtMCkpKSkK ICAgICAobmF0aXZlLWlucHV0cyAobW9kaWZ5LWlucHV0cyAocGFja2FnZS1uYXRpdmUtaW5wdXRz IG1vbm8tNS4wLjEpCiAgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAibW9ubyIgbW9uby01 LjAuMSkpKSkpCisKKyhkZWZpbmUgbW9uby01LjIuMC1leHRlcm5hbC1yZXBvLXNwZWNzCisgICco KCJhc3BuZXR3ZWJzdGFjayIgICAgICAgICAgICAgICJlNzdiMTJlNmNjNWVkMjYwYTk4NDQ3ZjYw OWU4ODczMzdlNDRlMjk5IgorICAgICAiMHJrczM0NHFyNGZtcDNmczEyNjRkMnFrbW0zNDhtOGQx a2pkN3o0bDk0aWlpcnduMWZxMSIpCisgICAgKCgicmVmZXJlbmNlLWFzc2VtYmxpZXMiICJiaW5h cnktcmVmZXJlbmNlLWFzc2VtYmxpZXMiKQorICAgICAiMTQyY2JlYjYyZmZhYmYxZGQ5YzE0MTRk OGRkNzZmOTNiY2JlZDBjMiIKKyAgICAgIjF3a2Q1ODloZ2IxNm01enZtcDl5YjU3YWd5eXJ5YWEx amo4dmhsNHcyMGkyaHAyMndhZDkiKQorICAgICgiYm9ja2J1aWxkIiAgICAgICAgICAgICAgICAg ICAiNDVhYTE0MmZhMzIyZjViNDEwNTFlN2Y0MDAwOGYwMzM0NmExZTExOSIKKyAgICAgIjFzamxn emgzaHEyNTFrNzI5YTFweDcwN2MxcTJnbmZheWdoZ3gxejVxeWRkbnlheG5hMjAiKQorICAgICgi Ym9yaW5nc3NsIiAgICAgICAgICAgICAgICAgICAiM2UwNzcwZTE4ODM1NzE0NzA4ODYwYmE5ZmUx YWYwNGE5MzI5NzFmZiIKKyAgICAgIjEzOWEwZ2w5MWE1MmsycjZuYTZpYWx6a3F5a2FqMXJrODh6 anJrYXozc2R4eDdubW1nNnkiKQorICAgICgiYnVpbGR0b29scyIgICAgICAgICAgICAgICAgICAi YjVjYzZlNmFiNWY3MWY2YzBiZTdiNzMwMDU4YjQyNmU5MjUyODQ3OSIKKyAgICAgIjBsZGo1bDRw NHE4ajlkaGswbmlmcjNtMGk2NGNzdmI1NndsYzJ4ZDR6eTgwc2ZnbWpuMDYiKQorICAgICgiY2Vj aWwiICAgICAgICAgICAgICAgICAgICAgICAiMzYyZTJiYjAwZmE2OTNkMDRjMmQxNDBhNGNkMzEz ZWI4MmM3OGQ5NSIKKyAgICAgIjBidmFhdmxubGRyamE4aXhiNjZiZzMza3owNTk1MHZtNXNrNHB6 MGswempnc3BmZ3BjdmQiKQorICAgICgoImNlY2lsIiAiY2VjaWwtbGVnYWN5IikgICAgICAiMzNk NTBiODc0ZmQ1MjcxMThiYzM2MWQ4M2RlM2Q0OTRlOGJiNTVlMSIKKyAgICAgIjFwNGhsMTc5Nmli MjZ5a3lmNXNubDZjajBseDB2N21qaDB4cWhqdzZxZGg3NTNuc2p5aGIiKQorICAgICgiY29yZWZ4 IiAgICAgICAgICAgICAgICAgICAgICAiNzgzNjBiMjJlNzFiNzBkZTFkOGNjOTU4OGNiNGVmMDA0 MDQ0OWMzMSIKKyAgICAgIjF3cnN6YWZ5YXI3cTFjZGZiYTY4eGQ2YjRkNTRwM2lpbTJjem14Ymxt czF5dzE5eWNxbTciKQorICAgICgiY29yZXJ0IiAgICAgICAgICAgICAgICAgICAgICAiZWQ2Mjk2 ZGZiYjg4ZDY2ZjA4NjAxYzAxM2NhZWUzMGM4OGM0MWFmYSIKKyAgICAgIjE3OXExYWlxNDRiemRj a2cxeHFtNml3eXg4MzVjcDYxNjF3NXZnc2ZyZ2J3MHAza2lkeHIiKQorICAgICgiaWtkYXNtIiAg ICAgICAgICAgICAgICAgICAgICAiODhiNjdjNDJjYThiN2Q1ODE0MWMxNzZiNDY3NDk4MTliZmNl ZjE2NiIKKyAgICAgIjBiMGIxZGhnODByNjQwbjgxaXFhd3dreGkxazI4OW40enhqZmowbGRkOXJr dmZ4dmx3YXciKQorICAgICgoImlrdm0tZm9yayIgImlrdm0iKSAgICAgICAgICAiN2MxZTYxYmVj OGMwNjliMmNjOWUyMTRjMzA5NGIxNDdkNzZiYmY4MiIKKyAgICAgIjB2bWM1cjRqNzZoa2Q0emlz MTc2OXBwZGwxaDFsN3o4Y2xkMHk0cDFtNjRuODZnaGt6Zm4iKQorICAgICgibGlua2VyIiAgICAg ICAgICAgICAgICAgICAgICAiYzc0NTBjYTI2NjliZWNkZGZmZGVhN2RjZGNjMDY2OTJlNTc5ODll MSIKKyAgICAgIjB2ZDF2dzZocW0xcDEyN202MDc5cDluNHhyY2tyZjRpYWt2ajQxaG5xZnd3czk0 dzVtdjEiKQorICAgICgiTHVjZW5lLk5ldC5MaWdodCIgICAgICAgICAgICAiODU5NzhiN2ViOTQ3 MzhmNTE2ODI0MzQxMjEzZDVlOTQwNjBmNTI4NCIKKyAgICAgIjBkMTE4aTUybTNhMHZmamhmY2k4 MWEya2M0cXZuajIzZ3MwMmhydmRyZnBkMXE5MmZ5aWkiKQorICAgICgiTmV3dG9uc29mdC5Kc29u IiAgICAgICAgICAgICAiNDcxYzNlMDgwM2E5ZjQwYTBhY2M4YWVjZWIzMWRlNmZmOTNhNTJjNCIK KyAgICAgIjBkZ25nZDVocWs2eWhsZzQwa2FibjZxZG5rbm0zMnpjeDlxNmJtMnczMWNzbnNrNTk3 OHMiKQorICAgICgoIk51R2V0LkJ1aWxkVGFza3MiICJudWdldC1idWlsZHRhc2tzIikKKyAgICAg IjhkMzA3NDcyZWEyMTRmMmI1OTYzNjQzMWY3NzE4OTRkYmNiYTcyNTgiCisgICAgICIxaDFmcm5q MHg4azdiMjlpYzRqaXNjaDB2bHBtc21naGp3NTU0cHoyNzdmMm54YWlkbGpqIikKKyAgICAoKCJO VW5pdExpdGUiICJudW5pdC1saXRlIikgICAgIjY5MDYwM2JlYTk4YWFlNjlmY2E5YTY1MTMwZDg4 NTkxYmM2Y2FiZWUiCisgICAgICIxZjg0NXlzanpzM3lkOWdjeXd3NjZkbmt4NDg0ejVma25iOGww eHo3NHNqbXhrMm1uZ3djIikKKyAgICA7OyAoInJvc2x5bi1iaW5hcmllcyIgICAgICAgICAgImRj YjBhMDUzNGQ1MTA0ZWFmOTQ1ZDNkMWYzMTlkYzMzMDQ0YjdiYmUiCisgICAgOzsgICIiKQorICAg ICgicngiICAgICAgICAgICAgICAgICAgICAgICAgICAiYjI5YTRiMGZkYTYwOWUwYWYzM2ZmNTRl ZDEzNjUyYjZjY2YwZTA1ZSIKKyAgICAgIjFuMWp3aG1zYmtjdjJkODA2aW1tY3B6a2I3MnJ6MDR4 eTk4bXl3MzU1YTh3NWFoMjV5aXYiKQorICAgIDs7ICgieHVuaXQtYmluYXJpZXMiICAgICAgICAg ICAiYjhlMjBkMjY1YjM2OGRkNjI1MjcwM2Q1YWZkMDM4ZDBiMDI4ZTM4OCIKKyAgICA7OyAgIiIp CisgICAgKSkKKworKGRlZmluZS1wdWJsaWMgbW9uby01LjIuMAorICAocGFja2FnZQorICAgIChp bmhlcml0IG1vbm8tNS4xLjApCisgICAgKHZlcnNpb24gIjUuMi4wLjIyNCIpCisgICAgKG5hbWUg Im1vbm8iKQorICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAobWV0aG9kIGdpdC1m ZXRjaCkKKyAgICAgICAgICAgICAgKHVyaQorICAgICAgICAgICAgICAgKGdpdC1yZWZlcmVuY2UK KyAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGxhYi53aW5laHEub3JnL21vbm8vbW9u by5naXQiKQorICAgICAgICAgICAgICAgIChjb21taXQgIm1vbm8tNS4yLjAuMjI0IikpKQorICAg ICAgICAgICAgICAoZmlsZS1uYW1lIChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lvbikpCisgICAg ICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgIChiYXNlMzIKKyAgICAgICAgICAgICAg ICAiMHpzZ2ZxeWprcGl4MDVndmd2aHF5eXFjd2NqcDV4bHZjeXY0NzFxMzJxZjMwN2RjY2JmYSIp KQorICAgICAgICAgICAgICAobW9kdWxlcyAnKChndWl4IGJ1aWxkIHV0aWxzKQorICAgICAgICAg ICAgICAgICAgICAgICAgIChpY2UtOSBzdHJpbmctZnVuKSkpCisgICAgICAgICAgICAgIChzbmlw cGV0ICN+KGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAjJChhZGQtZXh0ZXJuYWwt cmVwb3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbm8tNS4yLjAtZXh0ZXJuYWwt cmVwby1zcGVjcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICMkQHByZXBhcmUtbW9uby1z b3VyY2UtMCkpKSkKKyAgICAobmF0aXZlLWlucHV0cyAobW9kaWZ5LWlucHV0cyAocGFja2FnZS1u YXRpdmUtaW5wdXRzIG1vbm8tNS4xLjApCisgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAi bW9ubyIgbW9uby01LjEuMCkpKSkpCi0tIAoyLjQ1LjIKCg== --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0012-gnu-Add-mono-5.0.1.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0012-gnu-Add-mono-5.0.1.patch RnJvbSAxNDBhYmRjMmI0MTE1MjQ2ZjBmMmFmYzY5YmQ1ZWQxMzUwYTIzNzMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8MTQwYWJkYzJiNDExNTI0NmYwZjJhZmM2OWJkNWVk MTM1MGEyMzczMi4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTM6 Mjc6MTcKU3ViamVjdDogW1BBVENIIDEyLzIxXSBnbnU6IEFkZCBtb25vLTUuMC4xLgoKKiBnbnUv cGFja2FnZXMvZG90bmV0LnNjbQogIChtb25vLTUuMC4xLWV4dGVybmFsLXJlcG8tc3BlY3MsIG1v bm8tNS4wLjEpOiBOZXcgdmFyaWFibGVzLgoKQ2hhbmdlLUlkOiBJMTY1ZWY4MjM4YzRhZGRkY2Y5 MjY2N2MzNGRiYjM2NmY5OGQyODhiZAotLS0KIGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtIHwgMTMz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2Vk LCAxMzMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9kb3RuZXQuc2Nt IGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KaW5kZXggNDk1ZmU5MzQyMS4uMzNiNzE3YjBlZCAx MDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KKysrIGIvZ251L3BhY2thZ2VzL2Rv dG5ldC5zY20KQEAgLTgzNywzICs4MzcsMTM2IEBAIChkZWZpbmUtcHVibGljIG1vbm8tNC45LjAK ICAgICAgICAgICAgICAgbGljZW5zZTptcGwxLjEKICAgICAgICAgICAgICAgOzsgQVBJIERvY3Vt ZW50YXRpb24KICAgICAgICAgICAgICAgbGljZW5zZTpjYy1ieTQuMCkpKSkKKworKGRlZmluZSBt b25vLTUuMC4xLWV4dGVybmFsLXJlcG8tc3BlY3MKKyAgJygoImFzcG5ldHdlYnN0YWNrIiAgICAg ICAgICAgICAgImU3N2IxMmU2Y2M1ZWQyNjBhOTg0NDdmNjA5ZTg4NzMzN2U0NGUyOTkiCisgICAg ICIwcmtzMzQ0cXI0Zm1wM2ZzMTI2NGQycWttbTM0OG04ZDFramQ3ejRsOTRpaWlyd24xZnExIikK KyAgICA7OyBzbmlwcGV0IGluIHRoZSBhY3R1YWwgcGFja2FnZSB3aWxsIGRlbGV0ZSBhbGwgZGxs cyBhbmQgZXhlcywgc28gdGhpcworICAgIDs7IHNob3VsZCBiZSByZWJ1aWx0IGZyb20gc2NyYXRj aC4KKyAgICAoKCJyZWZlcmVuY2UtYXNzZW1ibGllcyIgImJpbmFyeS1yZWZlcmVuY2UtYXNzZW1i bGllcyIpCisgICAgICJmZWJjMTAwZjAzMTNmMGRjOWQ3NWRkMWJjZWE0NWU4NzEzNGI1YjU1Igor ICAgICAiMGxwajkxMW0ybHEyM3IyMmRweTRpMDJmeTR5a2YyN2R4OGZ2cXB4c3hrbnlzajJqbDZ5 NCIpCisgICAgKCJib2NrYnVpbGQiICAgICAgICAgICAgICAgICAgICI1MTJiYTQxYTk0YmVjMzVm ZjBjMzk1ZWI3MWExODBmZGEyM2RhOTVjIgorICAgICAiMTZtMDBsYThzdng4djA3c3h5NHp4YnBx MGNicTdkM256eTUzdzhrcW1sOGIxOGg1ZGFiZyIpCisgICAgKCJib3Jpbmdzc2wiICAgICAgICAg ICAgICAgICAgICJjMDZhYzZiMzNkM2U3NDQyYWQ4Nzg0ODhiOWQxMTAwMTI3ZWZmOTk4IgorICAg ICAiMTg3enBpMXJ2aDlpNmpmY2N3enFxMzM3cnh4aTFyZ255Nm1qcTc5cjA4ZGxyaDBseWR6YyIp CisgICAgKCJidWlsZHRvb2xzIiAgICAgICAgICAgICAgICAgICI5YjZlZTg2ODZiZTU1YTk4M2Q4 ODY5MzgxNjViNjIwNmNkYTUwNzcyIgorICAgICAiMHNqdzNzd2F2Y21panlubWF4aDY0N3Fwa2pz YmdpaGRyOGxoa3l6Zjhkc3ByaGxxNGZ4ZCIpCisgICAgKCJjZWNpbCIgICAgICAgICAgICAgICAg ICAgICAgICI3ODAxNTM0ZGUxYmZlZDk3Yzg0NDgyMWMzMjQ0ZTA1ZmM3ZmZjZmI4IgorICAgICAi MGRtZnl6a201N24zbGJnbGx4NmZmejRnODR4MXNsa2liOWhiNGNmcDNuaHo4NTJxaW03YiIpCisg ICAgKCgiY2VjaWwiICJjZWNpbC1sZWdhY3kiKSAgICAgICIzM2Q1MGI4NzRmZDUyNzExOGJjMzYx ZDgzZGUzZDQ5NGU4YmI1NWUxIgorICAgICAiMXA0aGwxNzk2aWIyNnlreWY1c25sNmNqMGx4MHY3 bWpoMHhxaGp3NnFkaDc1M25zanloYiIpCisgICAgKCJjb3JlZngiICAgICAgICAgICAgICAgICAg ICAgICJiZDk2YWU1ZjE0ODVhZTg1NDFmZTQ3NmRmZDk0NGVmZGU3NmJjZDljIgorICAgICAiMGo1 MWxjNTRkbXdhNGZ6bmEydmpmajRwY2QxbGsxczVicDVkZml4MWFxY25jeXppdmF6aSIpCisgICAg KCJjb3JlcnQiICAgICAgICAgICAgICAgICAgICAgICJkODdjOTY2ZDgwYzEyNzQzNzNkZGFmZTMz NzViZjE3MzBjZDQzMGVkIgorICAgICAiMDc4djVrczdpbm0yZzFoZjk2eDE5azQyam52MXFoaGg3 cjhqeHJmYzdqazR2NGxnbXF5ZiIpCisgICAgKCJpa2Rhc20iICAgICAgICAgICAgICAgICAgICAg ICJlNGRlYWJmNjFjMTE5OTlmMjAwZGNlYTZmNmQ2YjQyNDc0Y2MyMTMxIgorICAgICAiMWZyYmY3 MHk3bjdsNzJqMzkzYXZkaXdrNjE1M2N2Znd3cGlnaGtmMm00NmNscW1xNGhhbiIpCisgICAgKCgi aWt2bS1mb3JrIiAiaWt2bSIpICAgICAgICAgICIzNjc4NjRlZjgxMDg1OWFlM2NlNjUyODY0MjMz YjM1ZjJkZDVmZGJlIgorICAgICAiMGlnOTlrYm1hNHMwbXpiMTNuenNrMXZtMjAweWdmcjExcTZt emdoNmpqNDZzMmZjMzVweCIpCisgICAgKCJsaW5rZXIiICAgICAgICAgICAgICAgICAgICAgICJl NGQ5Nzg0YWMzN2I5ZWJmNDc1NzE3NWM5MmJjN2EzZWM5ZmQ4NjdhIgorICAgICAiMGdhN2JyOWxx ZHN5Y3oyMmRuZGtiaXdiZDBjNjBtbDZubDIyeGxzbmpyN2x3ZGNjZmp2bCIpCisgICAgKCJMdWNl bmUuTmV0LkxpZ2h0IiAgICAgICAgICAgICI4NTk3OGI3ZWI5NDczOGY1MTY4MjQzNDEyMTNkNWU5 NDA2MGY1Mjg0IgorICAgICAiMGQxMThpNTJtM2EwdmZqaGZjaTgxYTJrYzRxdm5qMjNnczAyaHJ2 ZHJmcGQxcTkyZnlpaSIpCisgICAgKCJOZXd0b25zb2Z0Lkpzb24iICAgICAgICAgICAgICI0NzFj M2UwODAzYTlmNDBhMGFjYzhhZWNlYjMxZGU2ZmY5M2E1MmM0IgorICAgICAiMGRnbmdkNWhxazZ5 aGxnNDBrYWJuNnFkbmtubTMyemN4OXE2Ym0ydzMxY3Nuc2s1OTc4cyIpCisgICAgKCgiTnVHZXQu QnVpbGRUYXNrcyIgIm51Z2V0LWJ1aWxkdGFza3MiKQorICAgICAiOGQzMDc0NzJlYTIxNGYyYjU5 NjM2NDMxZjc3MTg5NGRiY2JhNzI1OCIKKyAgICAgIjFoMWZybmoweDhrN2IyOWljNGppc2NoMHZs cG1zbWdoanc1NTRwejI3N2YybnhhaWRsamoiKQorICAgICgoIk5Vbml0TGl0ZSIgIm51bml0LWxp dGUiKSAgICAiNjkwNjAzYmVhOThhYWU2OWZjYTlhNjUxMzBkODg1OTFiYzZjYWJlZSIKKyAgICAg IjFmODQ1eXNqenMzeWQ5Z2N5d3c2NmRua3g0ODR6NWZrbmI4bDB4ejc0c2pteGsybW5nd2MiKQor ICAgIDs7ICgicm9zbHluLWJpbmFyaWVzIiAgICAgICAgICAiMGQ0MTk4YjEyOTliY2IwMTk5NzM3 NDlkYTRkNDdlOTBmMTVhMWU0NiIKKyAgICA7OyAgIiIpCisgICAgKCJyeCIgICAgICAgICAgICAg ICAgICAgICAgICAgICJiMjlhNGIwZmRhNjA5ZTBhZjMzZmY1NGVkMTM2NTJiNmNjZjBlMDVlIgor ICAgICAiMW4xandobXNia2N2MmQ4MDZpbW1jcHprYjcycnowNHh5OThteXczNTVhOHc1YWgyNXlp diIpKSkKKworKGRlZmluZS1wdWJsaWMgbW9uby01LjAuMQorICAocGFja2FnZQorICAgIChpbmhl cml0IG1vbm8tNC45LjApCisgICAgKHZlcnNpb24gIjUuMC4xIikKKyAgICAobmFtZSAibW9ubyIp CisgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQor ICAgICAgICAgICAgICAodXJpCisgICAgICAgICAgICAgICAoZ2l0LXJlZmVyZW5jZQorICAgICAg ICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0bGFiLndpbmVocS5vcmcvbW9uby9tb25vLmdpdCIp CisgICAgICAgICAgICAgICAgKGNvbW1pdCAibW9uby01LjAuMS4xIikpKQorICAgICAgICAgICAg ICAoZmlsZS1uYW1lIChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lvbikpCisgICAgICAgICAgICAg IChzaGEyNTYKKyAgICAgICAgICAgICAgIChiYXNlMzIKKyAgICAgICAgICAgICAgICAiMDV6OWJk ZGxqcDh4d3N3N3F3M2Y3YmljOGkyMDJ3cmM2MHBqYjlmbjRpZ3dmejkyNzhuNSIpKQorICAgICAg ICAgICAgICAobW9kdWxlcyAnKChndWl4IGJ1aWxkIHV0aWxzKQorICAgICAgICAgICAgICAgICAg ICAgICAgIChpY2UtOSBzdHJpbmctZnVuKSkpCisgICAgICAgICAgICAgIChzbmlwcGV0ICN+KGJl Z2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAjJChhZGQtZXh0ZXJuYWwtcmVwb3MKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbm8tNS4wLjEtZXh0ZXJuYWwtcmVwby1zcGVj cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICMkQHByZXBhcmUtbW9uby1zb3VyY2UtMCkp KSkKKyAgICAobmF0aXZlLWlucHV0cyAobW9kaWZ5LWlucHV0cyAocGFja2FnZS1uYXRpdmUtaW5w dXRzIG1vbm8tNC45LjApCisgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAibW9ubyIgbW9u by00LjkuMCkKKyAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgY21ha2UtbWluaW1hbCkpKQor ICAgIChhcmd1bWVudHMKKyAgICAgKHN1YnN0aXR1dGUta2V5d29yZC1hcmd1bWVudHMgKHBhY2th Z2UtYXJndW1lbnRzIG1vbm8tNC45LjApCisgICAgICAgKCgjOm1ha2UtZmxhZ3MgXyAjZikKKyAg ICAgICAgOzsgQnVpbGQgc3lzdGVtIGlzIGJ1Z2d5IGhlcmUsIGl0IGRvZXMgc29tZSB3ZWlyZCB3 aWxkY2FyZCBleHBhbnNpb24KKyAgICAgICAgOzsgdGhhdCBhc3N1bWVzIHRoZXJlJ3Mgb25seSBh dCBtb3N0IG9uZSBmaWxlIGluIGEgZGlyZWN0b3J5CisgICAgICAgICN+KGxpc3QgIlY9MSIgIlNL SVBfQU9UPTEiKSkKKyAgICAgICAoKCM6cGhhc2VzIHBoYXNlcyAjfiVzdGFuZGFyZC1waGFzZXMp CisgICAgICAgICN+KG1vZGlmeS1waGFzZXMgIyRwaGFzZXMKKyAgICAgICAgICAgIChhZGQtYWZ0 ZXIgJ3VucGFjayAnZGlzYWJsZS1yb3NseW4taW5zdGFsbAorICAgICAgICAgICAgICA7OyBGb3Ig c29tZSByZWFzb24gdGhlcmUgaXMgbm8gcHJlZGVmaW5lZCB3YXkgdG8gcGVyc3VhZGUgbW9ubyB0 bworICAgICAgICAgICAgICA7OyBub3QgaW5zdGFsbCB0aGUgYmluYXJ5IGJsb2JzIGl0IGFzc3Vt ZXMgYXJlIHRoZXJlLgorICAgICAgICAgICAgICAobGFtYmRhIF8KKyAgICAgICAgICAgICAgICAo c3Vic3RpdHV0ZSogIm1jcy9wYWNrYWdlcy9NYWtlZmlsZSIKKyAgICAgICAgICAgICAgICAgICgo Il5pbnN0YWxsLWxvY2FsOiIpCisgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgImlu c3RhbGwtbG9jYWw6CisJZWNobyBcIlNraXBwaW5nIGJsb2IgaW5zdGFsbFwiCisKK3VudXNlZDA6 IikpKSkpCisgICAgICAgICAgICAoZGVsZXRlICd1c2Utb2xkLW1vbm8tbGlicmFyaWVzKQorICAg ICAgICAgICAgKGFkZC1hZnRlciAnYnVpbGQgJ2J1aWxkLXJlZmVyZW5jZS1hc3NlbWJsaWVzCisg ICAgICAgICAgICAgIChsYW1iZGEqICgjOmtleSBtYWtlLWZsYWdzICM6YWxsb3ctb3RoZXIta2V5 cykKKyAgICAgICAgICAgICAgICAobGV0ICgodG9wIChnZXRjd2QpKSkKKyAgICAgICAgICAgICAg ICAgICh3aXRoLWRpcmVjdG9yeS1leGN1cnNpb24gImV4dGVybmFsL2JpbmFyeS1yZWZlcmVuY2Ut YXNzZW1ibGllcyIKKyAgICAgICAgICAgICAgICAgICAgOzsgTm8gY2x1ZSB3aHkgYWxsIHRoZXNl IHJlZmVyZW5jZXMgYXJlIG1pc3NpbmcsIGp1c3QKKyAgICAgICAgICAgICAgICAgICAgOzsgcG93 ZXIgdGhyb3VnaCBJIGd1ZXNzLgorICAgICAgICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogKGZp bmQtZmlsZXMgIi4iICJeTWFrZWZpbGUkIikKKyAgICAgICAgICAgICAgICAgICAgICAoKCJDU0Nf Q09NTU9OX0FSR1MgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBw ZW5kIGFsbCAiLWRlbGF5c2lnbisgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiSUJNXFwu RGF0YVxcLkRCMl9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5n LWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiTW9u b1xcLkRhdGFcXC5TcWxpdGVfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAg KHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAgICAg ICgoIlN5c3RlbVxcLkRhdGFcXC5EYXRhU2V0RXh0ZW5zaW9uc19SRUZTIDo9ICIgYWxsKQorICAg ICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisg ICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwuRGF0YVxcLk9yYWNsZUNsaWVudF9SRUZT IDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5 c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwuSWRlbnRpdHlN b2RlbF9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVu ZCBhbGwgIlN5c3RlbS5Db25maWd1cmF0aW9uICIpKQorICAgICAgICAgICAgICAgICAgICAgICgo IlN5c3RlbVxcLkRlc2lnbl9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAo c3RyaW5nLWFwcGVuZCBhbGwgIkFjY2Vzc2liaWxpdHkgIikpCisgICAgICAgICAgICAgICAgICAg ICAgKCgiU3lzdGVtXFwuV2ViXFwuRXh0ZW5zaW9uc1xcLkRlc2lnbl9SRUZTIDo9ICIgYWxsKQor ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5XaW5kb3dz LkZvcm1zIFN5c3RlbS5XZWIgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwu U2VydmljZU1vZGVsXFwuUm91dGluZ19SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAg ICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAg ICAgICAgKCgiU3lzdGVtXFwuV2ViXFwuQWJzdHJhY3Rpb25zX1JFRlMgOj0gIiBhbGwpCisgICAg ICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtICIpKQorICAgICAg ICAgICAgICAgICAgICAgICgoIlN5c3RlbVxcLlJlYWN0aXZlXFwuV2luZG93c1xcLkZvcm1zX1JF RlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAi U3lzdGVtICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIlN5c3RlbVxcLldpbmRvd3NcXC5G b3Jtc1xcLkRhdGFWaXN1YWxpemF0aW9uX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAg ICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiQWNjZXNzaWJpbGl0eSAiKSkKKyAgICAgICAgICAg ICAgICAgICAgICAoKCJGYWNhZGVzL1N5c3RlbVxcLlNlcnZpY2VNb2RlbFxcLlByaW1pdGl2ZXNf UkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxs ICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIkZhY2FkZXMvU3lzdGVt XFwuRHluYW1pY1xcLlJ1bnRpbWVfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAg ICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0gIikpCisgICAgICAgICAgICAgICAgICAgICAg KCgiRmFjYWRlcy9TeXN0ZW1cXC5YbWxcXC5YRG9jdW1lbnRfUkVGUyA6PSAiIGFsbCkKKyAgICAg ICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAg ICAgICAgICAgICAgICAgICAgICgoIkZhY2FkZXMvU3lzdGVtXFwuUnVudGltZVxcLlNlcmlhbGl6 YXRpb24uWG1sX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmct YXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkpCisgICAgICAgICAgICAgICAgICAgIChhcHBseSBp bnZva2UgIm1ha2UiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAi Q1NDPU1PTk9fUEFUSD0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0b3AgIi9tY3MvY2xhc3MvbGliL2J1aWxkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0b3AgIi9ydW50aW1lL21vbm8td3JhcHBlciIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdG9wICIvbWNzL2NsYXNzL2xpYi9idWlsZC9tY3MuZXhlIikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1ha2UtZmxhZ3MpKSkpKSkpKSkpKQotLSAKMi40NS4yCgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0017-gnu-Add-mono-5.8.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0017-gnu-Add-mono-5.8.0.patch RnJvbSA2MzkzZGE3M2I3NWRiYThjMzlhZmVhZjZhNmYyNTZiOWM4YmZhYjQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8NjM5M2RhNzNiNzVkYmE4YzM5YWZlYWY2YTZmMjU2 YjljOGJmYWI0OS4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFdlZCwgMjcgTm92IDIwMjQgMDA6 NDc6MDkKU3ViamVjdDogW1BBVENIIDE3LzIxXSBnbnU6IEFkZCBtb25vLTUuOC4wLgoKKiBnbnUv cGFja2FnZXMvZG90bmV0LnNjbQogIChtb25vLTUuOC4wLWV4dGVybmFsLXJlcG8tc3BlY3MsIG1v bm8tNS44LjApOiBOZXcgdmFyaWFibGVzLgoqIGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNS44 LjAtcGF0Y2hlcy5wYXRjaDogTmV3IHBhdGNoLgoqIGdudS9sb2NhbC5tayAoZGlzdF9wYXRjaF9E QVRBKTogUmVnaXN0ZXIgbmV3IHBhdGNoLgoKQ2hhbmdlLUlkOiBJZWE3MWJmNTJkNjdhMTgyZjc1 NDNhZGFiYTQ0NDA5ZGJmNmMzYzBlMgotLS0KIGdudS9sb2NhbC5tayAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBnbnUvcGFja2FnZXMvZG90bmV0LnNjbSAgICAgICAg ICAgICAgICAgICAgICAgfCAxMjMgKysrKysrKysrKysrKysrKysrCiBnbnUvcGFja2FnZXMvcGF0 Y2hlcy9tb25vLTUuOC4wLXBhdGNoZXMucGF0Y2ggfCAgNjAgKysrKysrKysrCiAzIGZpbGVzIGNo YW5nZWQsIDE4NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2Vz L3BhdGNoZXMvbW9uby01LjguMC1wYXRjaGVzLnBhdGNoCgpkaWZmIC0tZ2l0IGEvZ251L2xvY2Fs Lm1rIGIvZ251L2xvY2FsLm1rCmluZGV4IDc1NDFkYjA0ZTUuLjRhNzg3MjZjOWYgMTAwNjQ0Ci0t LSBhL2dudS9sb2NhbC5taworKysgYi9nbnUvbG9jYWwubWsKQEAgLTE3NzAsNiArMTc3MCw3IEBA IGRpc3RfcGF0Y2hfREFUQSA9CQkJCQkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTIu MTEuNC1maXhlcy5wYXRjaAkJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby00LjkuMC1m aXgtcnVudGltZW1ldGFkYXRhdmVyc2lvbi5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hl cy9tb25vLTUuNC4wLXBhdGNoZXMucGF0Y2gJCVwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9u by01LjguMC1wYXRjaGVzLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vc2FpY2F0 Y2hlci11bmJ1bmRsZS1odHNsaWIucGF0Y2gJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tcnJl c2N1ZS1zdXBwb3J0LWxvdmUtMTEucGF0Y2gJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbXRv b2xzLW1mb3JtYXQtdW5pbml0aWFsaXplZC5wYXRjaAlcCmRpZmYgLS1naXQgYS9nbnUvcGFja2Fn ZXMvZG90bmV0LnNjbSBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCmluZGV4IDkwZTFmMjBjOGUu LjE0NGY2Nzg3MmIgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCisrKyBiL2du dS9wYWNrYWdlcy9kb3RuZXQuc2NtCkBAIC0xMjc2LDMgKzEyNzYsMTI2IEBAIChkZWZpbmUtcHVi bGljIG1vbm8tcHJlLTUuOC4wCiAgICAgICAgICAoKCM6cGhhc2VzIHBoYXNlcyAjfiVzdGFuZGFy ZC1waGFzZXMpCiAgICAgICAgICAgI34obW9kaWZ5LXBoYXNlcyAjJHBoYXNlcwogICAgICAgICAg ICAgICAoZGVsZXRlICdwYXRjaC1zdWItYXV0b2dlbi5zaC1zaGViYW5nKSkpKSkpKSkKKworKGRl ZmluZSBtb25vLTUuOC4wLWV4dGVybmFsLXJlcG8tc3BlY3MKKyAgJygoImFwaS1kb2MtdG9vbHMi ICAgICAgICAgICAgICAgImQwM2U4MTk4MzhjNjI0MWY5MmY5MDY1NWNiNDQ4Y2M0N2M5ZTg3OTEi CisgICAgICIxcmlraTc5ZjNpZzNjeGlndmlzczgxZHo2MDFobjkyYTFnaWZnbG0wbXpqYnM3NnNm M2ZqIgorICAgICAjOnJlY3Vyc2l2ZT8gI3QpCisgICAgKCJhcGktc25hcHNob3QiICAgICAgICAg ICAgICAgICI2NjY4YzgwYTk0OTkyMThjMGI4Y2M0MWY0OGE5ZTI0MjU4N2RmNzU2IgorICAgICAi MHZid2J3YTFocjRqbGo3MjgzdzhiazN2NWk4czQzaDg0MTNyMnBraDRoZjM4YjJya3M3ZCIpCisg ICAgKCJhc3BuZXR3ZWJzdGFjayIgICAgICAgICAgICAgICJlNzdiMTJlNmNjNWVkMjYwYTk4NDQ3 ZjYwOWU4ODczMzdlNDRlMjk5IgorICAgICAiMHJrczM0NHFyNGZtcDNmczEyNjRkMnFrbW0zNDht OGQxa2pkN3o0bDk0aWlpcnduMWZxMSIpCisgICAgKCgicmVmZXJlbmNlLWFzc2VtYmxpZXMiICJi aW5hcnktcmVmZXJlbmNlLWFzc2VtYmxpZXMiKQorICAgICAiZTA0OGZlNGE4OGQyMzdkMTA1YWUw MmZlMDM2M2E2ODI5NjA5OTM2MiIKKyAgICAgIjBpODdpM3g2OTRmNGc4czJmbGZsdjBhaDg4Ymx4 ZHM3Z2JpeXJ3cm1zY3FkanNpZmh5NDkiKQorICAgICgiYm9ja2J1aWxkIiAgICAgICAgICAgICAg ICAgICAiY2I0NTQ1NDA5ZGFmZTE2ZGZlODZjN2Q4ZTY1NDhhNjljMzY5ZTJhMiIKKyAgICAgIjBz dmRmdjYxZDZwcHdkNHpna2kxMjlyOXByZjc1Zm5zcWlobmEyNTN6ZndmcHpwaW5neDciKQorICAg ICgiYm9yaW5nc3NsIiAgICAgICAgICAgICAgICAgICAiM2UwNzcwZTE4ODM1NzE0NzA4ODYwYmE5 ZmUxYWYwNGE5MzI5NzFmZiIKKyAgICAgIjEzOWEwZ2w5MWE1MmsycjZuYTZpYWx6a3F5a2FqMXJr ODh6anJrYXozc2R4eDdubW1nNnkiKQorICAgICgiY2VjaWwiICAgICAgICAgICAgICAgICAgICAg ICAiNzZmZmNkYWJhZTY2MGU5NTg2MjczYzliNDBkYjE4MGEwZGM4ZDRjOCIKKyAgICAgIjBmM2Jz ZnJpMjhweG1uYjBtNjA3NGJubW1qZ3NyN2NqaXh2OWZobnA2YWltaHZ5NGw1cDQiKQorICAgICgo ImNlY2lsIiAiY2VjaWwtbGVnYWN5IikgICAgICAiMzNkNTBiODc0ZmQ1MjcxMThiYzM2MWQ4M2Rl M2Q0OTRlOGJiNTVlMSIKKyAgICAgIjFwNGhsMTc5NmliMjZ5a3lmNXNubDZjajBseDB2N21qaDB4 cWhqdzZxZGg3NTNuc2p5aGIiKQorICAgICgiY29yZWZ4IiAgICAgICAgICAgICAgICAgICAgICAi Yjk2NWQxZjhiNTI4MTcxMmM0NDAwZWYyOGVkOTc2NzBmZmQ0ODgwZCIKKyAgICAgIjByOWhyMGJz M2ozYWdxaTJwcTRuMWttOWpmeWNhcXZ4ZjY3NTZ5N3I1bDN5a3FzZDZ3c3IiKQorICAgICgiY29y ZXJ0IiAgICAgICAgICAgICAgICAgICAgICAiNDhkYmE3MzgwMWU4MDRlODlmMDAzMTFkYTk5ZDg3 M2Y5YzU1MDI3OCIKKyAgICAgIjF6dzQ3amY0Y3dxbWFpeHlsaXN4aTczeGY2Y2FwNDFid2Y5dmxt cHhhbnp4YXFrbHpzdmsiKQorICAgICgiaWtkYXNtIiAgICAgICAgICAgICAgICAgICAgICAiNDY1 YzA4MTU1NThmZDQzYzAxMTBmOGQwMGZjMTg2YWMwMDQ0YWM2YSIKKyAgICAgIjB4aXI3cGNncTA0 aGI3czhnOXdzcWRyeXBiNmwyOXJhajNpejVyY3F6ZG0wMDU2azc1dzIiKQorICAgICgoImlrdm0t Zm9yayIgImlrdm0iKSAgICAgICAgICAiODQ3ZTA1ZmNlZDVjOWE0MWZmMGYyNGYxZjlkNDBkNWE4 YTU3NzJjMSIKKyAgICAgIjFmbDlibTNsbXpmOGlxdjN4NGlxa3o5ZmM1NG13ZHZyeGlzeGcybnZ3 d2NzaTRzYWZmcGkiKQorICAgICgibGlua2VyIiAgICAgICAgICAgICAgICAgICAgICAiYzYyMzM1 YzM1MGYzOTAyZmYwNDU5MTEyZjdlZmM4YjkyNmY0ZjE1ZCIKKyAgICAgIjAxNTE5MXNkdzlpN3Zu aGxzeWN2NjVwdzhubmZwa2Q2NWsxMWp3MXk5YmlrYjR4M2FqOHgiKQorICAgICgiTmV3dG9uc29m dC5Kc29uIiAgICAgICAgICAgICAiNDcxYzNlMDgwM2E5ZjQwYTBhY2M4YWVjZWIzMWRlNmZmOTNh NTJjNCIKKyAgICAgIjBkZ25nZDVocWs2eWhsZzQwa2FibjZxZG5rbm0zMnpjeDlxNmJtMnczMWNz bnNrNTk3OHMiKQorICAgICgoIk51R2V0LkJ1aWxkVGFza3MiICJudWdldC1idWlsZHRhc2tzIikK KyAgICAgImIyYzMwYmM4MWIyYTc3MzNhNGVlYjI1MmE1NWY2YjRkNTBjZmMzYTEiCisgICAgICIw MXZhanJmeDZ5MTJmNTI1eGRpd2Zibjlxem15bTJzNjVyYmlxcHk5ZDl4dzBwbnE3Z2JsIikKKyAg ICAoKCJOVW5pdExpdGUiICJudW5pdC1saXRlIikgICAgIjc2NDY1NmNkYWZkYjNhY2QyNWRmOGNi NTJhNGUwZWExNDc2MGZjY2QiCisgICAgICIwcGM3bGszcDkxNmlzOGNuNG5nYXF2amxtbHp2M3Z2 anB5a3N5NHB2YjNxYjVpaWF3MHZxIikKKyAgICA7OyAoInJvc2x5bi1iaW5hcmllcyIgICAgICAg ICAgImU0ODRjNzVlMmVkZDNjM2YxODcwYTI0NjhhNzFhNTYyMjBjZjFmN2YiCisgICAgOzsgICIi KQorICAgICgicngiICAgICAgICAgICAgICAgICAgICAgICAgICAiYjI5YTRiMGZkYTYwOWUwYWYz M2ZmNTRlZDEzNjUyYjZjY2YwZTA1ZSIKKyAgICAgIjFuMWp3aG1zYmtjdjJkODA2aW1tY3B6a2I3 MnJ6MDR4eTk4bXl3MzU1YTh3NWFoMjV5aXYiKQorICAgIDs7ICgieHVuaXQtYmluYXJpZXMiICAg ICAgICAgICAiZDQ0MzNiMDk3MmY0MGNiM2VmYWEzZmJiYTUyODY5YmRlNWRmOGZhOCIKKyAgICA7 OyAgIiIpCisgICAgKSkKKworKGRlZmluZS1wdWJsaWMgbW9uby01LjguMAorICAocGFja2FnZQor ICAgIChpbmhlcml0IG1vbm8tcHJlLTUuOC4wKQorICAgICh2ZXJzaW9uICI1LjguMC4xMjkiKQor ICAgIChuYW1lICJtb25vIikKKyAgICAoc291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgKG1l dGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICh1cmkKKyAgICAgICAgICAgICAgIChnaXQt cmVmZXJlbmNlCisgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXRsYWIud2luZWhxLm9y Zy9tb25vL21vbm8uZ2l0IikKKyAgICAgICAgICAgICAgICAoY29tbWl0ICJtb25vLTUuOC4wLjEy OSIpKSkKKyAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1lIHZlcnNp b24pKQorICAgICAgICAgICAgICAoc2hhMjU2CisgICAgICAgICAgICAgICAoYmFzZTMyCisgICAg ICAgICAgICAgICAgIjAxMzB2ZDMzeXpwNHc3NTcwcXc5eGpxMmc3YjJ4bWFjamJwa216cnBiaHk4 YXM1aHk0ejYiKSkKKyAgICAgICAgICAgICAgKG1vZHVsZXMgJygoZ3VpeCBidWlsZCB1dGlscykK KyAgICAgICAgICAgICAgICAgICAgICAgICAoaWNlLTkgc3RyaW5nLWZ1bikpKQorICAgICAgICAg ICAgICAoc25pcHBldCAjfihiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIyQoYWRk LWV4dGVybmFsLXJlcG9zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25vLTUuOC4w LWV4dGVybmFsLXJlcG8tc3BlY3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAjJEBwcmVw YXJlLW1vbm8tc291cmNlLTApKQorICAgICAgICAgICAgICAocGF0Y2hlcworICAgICAgICAgICAg ICAgKHNlYXJjaC1wYXRjaGVzICJtb25vLTUuOC4wLXBhdGNoZXMucGF0Y2giKSkpKQorICAgIChu YXRpdmUtaW5wdXRzIChtb2RpZnktaW5wdXRzIChwYWNrYWdlLW5hdGl2ZS1pbnB1dHMgbW9uby1w cmUtNS44LjApCisgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAibW9ubyIgbW9uby1wcmUt NS44LjApKSkKKyAgICAoYXJndW1lbnRzCisgICAgIChzdWJzdGl0dXRlLWtleXdvcmQtYXJndW1l bnRzIChwYWNrYWdlLWFyZ3VtZW50cyBtb25vLXByZS01LjguMCkKKyAgICAgICAoKCM6cGhhc2Vz IHBoYXNlcyAjfiVzdGFuZGFyZC1waGFzZXMpCisgICAgICAgICN+KG1vZGlmeS1waGFzZXMgIyRw aGFzZXMKKyAgICAgICAgICAgIChyZXBsYWNlICdidWlsZC1yZWZlcmVuY2UtYXNzZW1ibGllcwor ICAgICAgICAgICAgICA7OyBNb3JlIHJlZmVyZW5jZXMgbmVlZCB1cGRhdGluZyB0aGlzIHRpbWUu Li4KKyAgICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IG1ha2UtZmxhZ3MgIzphbGxvdy1vdGhl ci1rZXlzKQorICAgICAgICAgICAgICAgIChsZXQgKCh0b3AgKGdldGN3ZCkpKQorICAgICAgICAg ICAgICAgICAgKHdpdGgtZGlyZWN0b3J5LWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAg ICJleHRlcm5hbC9iaW5hcnktcmVmZXJlbmNlLWFzc2VtYmxpZXMiCisgICAgICAgICAgICAgICAg ICAgIChzdWJzdGl0dXRlKiAoZmluZC1maWxlcyAiLiIgIl5NYWtlZmlsZSQiKQorICAgICAgICAg ICAgICAgICAgICAgICgoIkNTQ19DT01NT05fQVJHUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAg ICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICItZGVsYXlzaWduKyAiKSkKKyAgICAgICAgICAg ICAgICAgICAgICAoKCJJQk1cXC5EYXRhXFwuREIyX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAg ICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAg ICAgICAgICAgICAgICAoKCJNb25vXFwuRGF0YVxcLlNxbGl0ZV9SRUZTIDo9ICIgYWxsKQorICAg ICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisg ICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwuRGF0YVxcLkRhdGFTZXRFeHRlbnNpb25z X1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFs bCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5EYXRh XFwuT3JhY2xlQ2xpZW50X1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChz dHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAo KCJTeXN0ZW1cXC5JZGVudGl0eU1vZGVsX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAg ICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLkNvbmZpZ3VyYXRpb24gIikpCisgICAg ICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwuRGVzaWduX1JFRlMgOj0gIiBhbGwpCisgICAg ICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiQWNjZXNzaWJpbGl0eSAiKSkK KyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5XZWJcXC5FeHRlbnNpb25zXFwuRGVz aWduX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5k IGFsbCAiU3lzdGVtLldpbmRvd3MuRm9ybXMgU3lzdGVtLldlYiAiKSkKKyAgICAgICAgICAgICAg ICAgICAgICAoKCJTeXN0ZW1cXC5TZXJ2aWNlTW9kZWxcXC5Sb3V0aW5nX1JFRlMgOj0gIiBhbGwp CisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAi KSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5XZWJcXC5BYnN0cmFjdGlvbnNf UkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxs ICJTeXN0ZW0gIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwuUmVhY3RpdmVc XC5XaW5kb3dzXFwuRm9ybXNfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAg KHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0gIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgi U3lzdGVtXFwuV2luZG93c1xcLkZvcm1zXFwuRGF0YVZpc3VhbGl6YXRpb25fUkVGUyA6PSAiIGFs bCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJBY2Nlc3NpYmls aXR5ICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIkZhY2FkZXMvU3lzdGVtXFwuU2Vydmlj ZU1vZGVsXFwuUHJpbWl0aXZlc19SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAg ICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAgICAg ICAgKCgiRmFjYWRlcy9TeXN0ZW1cXC5EeW5hbWljXFwuUnVudGltZV9SRUZTIDo9ICIgYWxsKQor ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbSAiKSkKKyAg ICAgICAgICAgICAgICAgICAgICAoKCJGYWNhZGVzL1N5c3RlbVxcLlhtbFxcLlhEb2N1bWVudF9S RUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwg IlN5c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiRmFjYWRlcy9TeXN0ZW1c XC5SdW50aW1lXFwuU2VyaWFsaXphdGlvbi5YbWxfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAg ICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAg ICAgICAgICAgICAgICgoIkZhY2FkZXMvU3lzdGVtXFwuRGF0YVxcLkNvbW1vbl9SRUZTIDo9ICIg YWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbSBT eXN0ZW0uWG1sICIpKSkKKyAgICAgICAgICAgICAgICAgICAgKGFwcGx5IGludm9rZSAibWFrZSIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICJDU0M9TU9OT19QQVRI PSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCAiL21jcy9j bGFzcy9saWIvYnVpbGQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCAiL3J1 bnRpbWUvbW9uby13cmFwcGVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3Ag Ii9tY3MvY2xhc3MvbGliL2J1aWxkL21jcy5leGUiKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWFrZS1mbGFncykpKSkpKSkpKSkpCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcGF0Y2hl cy9tb25vLTUuOC4wLXBhdGNoZXMucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTUu OC4wLXBhdGNoZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u ZjczYzUxZDkyZgotLS0gL2Rldi9udWxsCisrKyBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8t NS44LjAtcGF0Y2hlcy5wYXRjaApAQCAtMCwwICsxLDYwIEBACitkaWZmIC0tZ2l0IGEvbWNzL2Ns YXNzL1N5c3RlbS9Nb25vLkFwcGxlVGxzL0FwcGxlVGxzQ29udGV4dC5jcyBiL21jcy9jbGFzcy9T eXN0ZW0vTW9uby5BcHBsZVRscy9BcHBsZVRsc0NvbnRleHQuY3MKK2luZGV4IDBjYzY5ZTQ3NjQ4 Li41MWRlZDcxM2JhNiAxMDA2NDQKKy0tLSBhL21jcy9jbGFzcy9TeXN0ZW0vTW9uby5BcHBsZVRs cy9BcHBsZVRsc0NvbnRleHQuY3MKKysrKyBiL21jcy9jbGFzcy9TeXN0ZW0vTW9uby5BcHBsZVRs cy9BcHBsZVRsc0NvbnRleHQuY3MKK0BAIC03NzUsNyArNzc1LDcgQEAgbmFtZXNwYWNlIE1vbm8u QXBwbGVUbHMKKyAJCVtEbGxJbXBvcnQgKFNlY3VyaXR5TGlicmFyeSldCisgCQlleHRlcm4gdW5z YWZlIHN0YXRpYyAvKiBPU1N0YXR1cyAqLyBTc2xTdGF0dXMgU1NMUmVhZCAoLyogU1NMQ29udGV4 dFJlZiAqLyBJbnRQdHIgY29udGV4dCwgLyogY29uc3Qgdm9pZCogKi8gYnl0ZSogZGF0YSwgLyog c2l6ZV90ICovIEludFB0ciBkYXRhTGVuZ3RoLCAvKiBzaXplX3QqICovIG91dCBJbnRQdHIgcHJv Y2Vzc2VkKTsKKyAKKy0JCXB1YmxpYyBvdmVycmlkZSB1bnNhZmUgKGludCByZXQsIGJvb2wgd2Fu dE1vcmUpIFJlYWQgKGJ5dGVbXSBidWZmZXIsIGludCBvZmZzZXQsIGludCBjb3VudCkKKysJCXB1 YmxpYyBvdmVycmlkZSB1bnNhZmUgU3lzdGVtLlZhbHVlVHVwbGU8aW50LCBib29sPiBSZWFkIChi eXRlW10gYnVmZmVyLCBpbnQgb2Zmc2V0LCBpbnQgY291bnQpCisgCQl7CisgCQkJaWYgKEludGVy bG9ja2VkLkV4Y2hhbmdlIChyZWYgcGVuZGluZ0lPLCAxKSA9PSAxKQorIAkJCQl0aHJvdyBuZXcg SW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbiAoKTsKK0BAIC04MTYsNyArODE2LDcgQEAgbmFtZXNw YWNlIE1vbm8uQXBwbGVUbHMKKyAJCVtEbGxJbXBvcnQgKFNlY3VyaXR5TGlicmFyeSldCisgCQll eHRlcm4gdW5zYWZlIHN0YXRpYyAvKiBPU1N0YXR1cyAqLyBTc2xTdGF0dXMgU1NMV3JpdGUgKC8q IFNTTENvbnRleHRSZWYgKi8gSW50UHRyIGNvbnRleHQsIC8qIGNvbnN0IHZvaWQqICovIGJ5dGUq IGRhdGEsIC8qIHNpemVfdCAqLyBJbnRQdHIgZGF0YUxlbmd0aCwgLyogc2l6ZV90KiAqLyBvdXQg SW50UHRyIHByb2Nlc3NlZCk7CisgCistCQlwdWJsaWMgb3ZlcnJpZGUgdW5zYWZlIChpbnQgcmV0 LCBib29sIHdhbnRNb3JlKSBXcml0ZSAoYnl0ZVtdIGJ1ZmZlciwgaW50IG9mZnNldCwgaW50IGNv dW50KQorKwkJcHVibGljIG92ZXJyaWRlIHVuc2FmZSBTeXN0ZW0uVmFsdWVUdXBsZTxpbnQsIGJv b2w+IFdyaXRlIChieXRlW10gYnVmZmVyLCBpbnQgb2Zmc2V0LCBpbnQgY291bnQpCisgCQl7Cisg CQkJaWYgKEludGVybG9ja2VkLkV4Y2hhbmdlIChyZWYgcGVuZGluZ0lPLCAxKSA9PSAxKQorIAkJ CQl0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbiAoKTsKK2RpZmYgLS1naXQgYS9t Y3MvY2xhc3MvU3lzdGVtL01vbm8uQnRscy9Nb25vQnRsc0NvbnRleHQuY3MgYi9tY3MvY2xhc3Mv U3lzdGVtL01vbm8uQnRscy9Nb25vQnRsc0NvbnRleHQuY3MKK2luZGV4IDU1OWRiNGFjYTVkLi5i NzAyMzljNTE2MyAxMDA2NDQKKy0tLSBhL21jcy9jbGFzcy9TeXN0ZW0vTW9uby5CdGxzL01vbm9C dGxzQ29udGV4dC5jcworKysrIGIvbWNzL2NsYXNzL1N5c3RlbS9Nb25vLkJ0bHMvTW9ub0J0bHND b250ZXh0LmNzCitAQCAtMzAwLDcgKzMwMCw3IEBAIG5hbWVzcGFjZSBNb25vLkJ0bHMKKyAJCQl0 aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7CisgCQl9CisgCistCQlwdWJsaWMg b3ZlcnJpZGUgKGludCByZXQsIGJvb2wgd2FudE1vcmUpIFJlYWQgKGJ5dGVbXSBidWZmZXIsIGlu dCBvZmZzZXQsIGludCBzaXplKQorKwkJcHVibGljIG92ZXJyaWRlIFN5c3RlbS5WYWx1ZVR1cGxl PGludCwgYm9vbD4gUmVhZCAoYnl0ZVtdIGJ1ZmZlciwgaW50IG9mZnNldCwgaW50IHNpemUpCisg CQl7CisgCQkJRGVidWcgKCJSZWFkOiB7MH0gezF9IHsyfSIsIGJ1ZmZlci5MZW5ndGgsIG9mZnNl dCwgc2l6ZSk7CisgCitAQCAtMzI5LDcgKzMyOSw3IEBAIG5hbWVzcGFjZSBNb25vLkJ0bHMKKyAJ CQl9CisgCQl9CisgCistCQlwdWJsaWMgb3ZlcnJpZGUgKGludCByZXQsIGJvb2wgd2FudE1vcmUp IFdyaXRlIChieXRlW10gYnVmZmVyLCBpbnQgb2Zmc2V0LCBpbnQgc2l6ZSkKKysJCXB1YmxpYyBv dmVycmlkZSBTeXN0ZW0uVmFsdWVUdXBsZTxpbnQsIGJvb2w+IFdyaXRlIChieXRlW10gYnVmZmVy LCBpbnQgb2Zmc2V0LCBpbnQgc2l6ZSkKKyAJCXsKKyAJCQlEZWJ1ZyAoIldyaXRlOiB7MH0gezF9 IHsyfSIsIGJ1ZmZlci5MZW5ndGgsIG9mZnNldCwgc2l6ZSk7CisgCitkaWZmIC0tZ2l0IGEvbWNz L2NsYXNzL1N5c3RlbS9Nb25vLk5ldC5TZWN1cml0eS9Nb2JpbGVUbHNDb250ZXh0LmNzIGIvbWNz L2NsYXNzL1N5c3RlbS9Nb25vLk5ldC5TZWN1cml0eS9Nb2JpbGVUbHNDb250ZXh0LmNzCitpbmRl eCA3NDQxMDk3NmE4NS4uNDZmMGViNTliOWMgMTAwNjQ0CistLS0gYS9tY3MvY2xhc3MvU3lzdGVt L01vbm8uTmV0LlNlY3VyaXR5L01vYmlsZVRsc0NvbnRleHQuY3MKKysrKyBiL21jcy9jbGFzcy9T eXN0ZW0vTW9uby5OZXQuU2VjdXJpdHkvTW9iaWxlVGxzQ29udGV4dC5jcworQEAgLTE2NSw5ICsx NjUsOSBAQCBuYW1lc3BhY2UgTW9uby5OZXQuU2VjdXJpdHkKKyAKKyAJCXB1YmxpYyBhYnN0cmFj dCB2b2lkIEZsdXNoICgpOworIAorLQkJcHVibGljIGFic3RyYWN0IChpbnQgcmV0LCBib29sIHdh bnRNb3JlKSBSZWFkIChieXRlW10gYnVmZmVyLCBpbnQgb2Zmc2V0LCBpbnQgY291bnQpOworKwkJ cHVibGljIGFic3RyYWN0IFN5c3RlbS5WYWx1ZVR1cGxlPGludCwgYm9vbD4gUmVhZCAoYnl0ZVtd IGJ1ZmZlciwgaW50IG9mZnNldCwgaW50IGNvdW50KTsKKyAKKy0JCXB1YmxpYyBhYnN0cmFjdCAo aW50IHJldCwgYm9vbCB3YW50TW9yZSkgV3JpdGUgKGJ5dGVbXSBidWZmZXIsIGludCBvZmZzZXQs IGludCBjb3VudCk7CisrCQlwdWJsaWMgYWJzdHJhY3QgU3lzdGVtLlZhbHVlVHVwbGU8aW50LCBi b29sPiBXcml0ZSAoYnl0ZVtdIGJ1ZmZlciwgaW50IG9mZnNldCwgaW50IGNvdW50KTsKKyAKKyAJ CXB1YmxpYyBhYnN0cmFjdCB2b2lkIFNodXRkb3duICgpOworIAotLSAKMi40NS4yCgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0015-gnu-Add-mono-5.4.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0015-gnu-Add-mono-5.4.0.patch RnJvbSA3MWExNTI5OWEyYmJjNTQ4MmZkNGY1ZjE0NzMwNjdjM2ZmMzljZjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8NzFhMTUyOTlhMmJiYzU0ODJmZDRmNWYxNDczMDY3 YzNmZjM5Y2Y4My4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTM6 MzY6NDYKU3ViamVjdDogW1BBVENIIDE1LzIxXSBnbnU6IEFkZCBtb25vLTUuNC4wLgoKKiBnbnUv cGFja2FnZXMvZG90bmV0LnNjbQogIChtb25vLTUuNC4wLWV4dGVybmFsLXJlcG8tc3BlY3MsIG1v bm8tNS40LjApOiBOZXcgdmFyaWFibGVzLgoqIGdudS9wYWNrYWdlcy9wYXRjaGVzL2NvcmVmeC1t b25vLTUuNC4wLXBhdGNoZXMucGF0Y2g6IE5ldyBwYXRjaC4KKiBnbnUvcGFja2FnZXMvcGF0Y2hl cy9tb25vLTUuNC4wLXBhdGNoZXMucGF0Y2g6IE5ldyBwYXRjaC4KKiBnbnUvbG9jYWwubWsgKGRp c3RfcGF0Y2hfREFUQSk6IFJlZ2lzdGVyIG5ldyBwYXRjaGVzLgoKQ2hhbmdlLUlkOiBJMTUxMGM4 YWMxM2RiNjBlNWJlYWI4MDMzYmUzZWZjNDgzZTk4NGVjMAotLS0KIGdudS9sb2NhbC5tayAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBnbnUvcGFja2FnZXMvZG90bmV0 LnNjbSAgICAgICAgICAgICAgICAgICAgICAgfCAgOTIgKysKIC4uLi9wYXRjaGVzL2NvcmVmeC1t b25vLTUuNC4wLXBhdGNoZXMucGF0Y2ggICB8IDkxNSArKysrKysrKysrKysrKysrKysKIGdudS9w YWNrYWdlcy9wYXRjaGVzL21vbm8tNS40LjAtcGF0Y2hlcy5wYXRjaCB8IDEwMCArKwogNCBmaWxl cyBjaGFuZ2VkLCAxMTA5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbnUvcGFj a2FnZXMvcGF0Y2hlcy9jb3JlZngtbW9uby01LjQuMC1wYXRjaGVzLnBhdGNoCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby01LjQuMC1wYXRjaGVzLnBhdGNoCgpk aWZmIC0tZ2l0IGEvZ251L2xvY2FsLm1rIGIvZ251L2xvY2FsLm1rCmluZGV4IGNjNzlmNTU0MWQu Ljk1NDdiZWNkZWMgMTAwNjQ0Ci0tLSBhL2dudS9sb2NhbC5taworKysgYi9nbnUvbG9jYWwubWsK QEAgLTEwOTMsNiArMTA5Myw3IEBAIGRpc3RfcGF0Y2hfREFUQSA9CQkJCQkJXAogICAlRCUvcGFj a2FnZXMvcGF0Y2hlcy9jb252ZXJzZWVuLWhpZGUtbm9uLWZyZWUtcG9pbnRlcnMucGF0Y2gJXAog ICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9jb29sLXJldHJvLXRlcm0td2N0eXBlLnBhdGNoCQlcCiAg ICVEJS9wYWNrYWdlcy9wYXRjaGVzL2NvcS1hdXRvc3Vic3QtMS44LXJlbW92ZS1kZXByZWNhdGVk LWZpbGVzLnBhdGNoCQlcCisgICVEJS9wYWNrYWdlcy9wYXRjaGVzL2NvcmVmeC1tb25vLTUuNC4w LXBhdGNoZXMucGF0Y2gJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvY29yZXV0aWxzLWdudWxp Yi10ZXN0cy5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9jcHBjaGVjay1kaXNhYmxl LWNoYXItc2lnbmVkbmVzcy10ZXN0LnBhdGNoCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvY3Bw ZGFwLWFkZC1DUFBEQVBfVVNFX0VYVEVSTkFMX0dURVNUX1BBQ0tBR0UucGF0Y2hcCkBAIC0xNzY3 LDYgKzE3NjgsNyBAQCBkaXN0X3BhdGNoX0RBVEEgPQkJCQkJCVwKICAgJUQlL3BhY2thZ2VzL3Bh dGNoZXMvbW9uby0yLjYuNC1maXhlcy5wYXRjaAkJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMv bW9uby0yLjExLjQtZml4ZXMucGF0Y2gJCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbm8t NC45LjAtZml4LXJ1bnRpbWVtZXRhZGF0YXZlcnNpb24ucGF0Y2gJCVwKKyAgJUQlL3BhY2thZ2Vz L3BhdGNoZXMvbW9uby01LjQuMC1wYXRjaGVzLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRj aGVzL21vc2FpY2F0Y2hlci11bmJ1bmRsZS1odHNsaWIucGF0Y2gJXAogICAlRCUvcGFja2FnZXMv cGF0Y2hlcy9tcnJlc2N1ZS1zdXBwb3J0LWxvdmUtMTEucGF0Y2gJCVwKICAgJUQlL3BhY2thZ2Vz L3BhdGNoZXMvbXRvb2xzLW1mb3JtYXQtdW5pbml0aWFsaXplZC5wYXRjaAlcCmRpZmYgLS1naXQg YS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbSBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCmluZGV4 IGZiMTM2ZDA5YzIuLjkzNTcyYTA4MTIgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9kb3RuZXQu c2NtCisrKyBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCkBAIC0xMTA1LDMgKzExMDUsOTUgQEAg KGRlZmluZS1wdWJsaWMgbW9uby01LjIuMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyRA cHJlcGFyZS1tb25vLXNvdXJjZS0wKSkpKQogICAgIChuYXRpdmUtaW5wdXRzIChtb2RpZnktaW5w dXRzIChwYWNrYWdlLW5hdGl2ZS1pbnB1dHMgbW9uby01LjEuMCkKICAgICAgICAgICAgICAgICAg ICAgIChyZXBsYWNlICJtb25vIiBtb25vLTUuMS4wKSkpKSkKKworKGRlZmluZSBtb25vLTUuNC4w LWV4dGVybmFsLXJlcG8tc3BlY3MKKyAgJygoImFzcG5ldHdlYnN0YWNrIiAgICAgICAgICAgICAg ImU3N2IxMmU2Y2M1ZWQyNjBhOTg0NDdmNjA5ZTg4NzMzN2U0NGUyOTkiCisgICAgICIwcmtzMzQ0 cXI0Zm1wM2ZzMTI2NGQycWttbTM0OG04ZDFramQ3ejRsOTRpaWlyd24xZnExIikKKyAgICAoImFw aS1kb2MtdG9vbHMiICAgICAgICAgICAgICAgImQwM2U4MTk4MzhjNjI0MWY5MmY5MDY1NWNiNDQ4 Y2M0N2M5ZTg3OTEiCisgICAgICIxcmlraTc5ZjNpZzNjeGlndmlzczgxZHo2MDFobjkyYTFnaWZn bG0wbXpqYnM3NnNmM2ZqIgorICAgICAjOnJlY3Vyc2l2ZT8gI3QpCisgICAgKCJhcGktc25hcHNo b3QiICAgICAgICAgICAgICAgICJiMDkwMzNiZTMzYWIyNTExMzc0MzE1MWM2NDRjODMxMTU4YzU0 MDQyIgorICAgICAiMHo2N2lxZDFicmliNm5pMzZwa2xycDdybHh5aHJpNW5rM3B4MzdmbTFhYWNn cm5zazdjayIpCisgICAgKCgicmVmZXJlbmNlLWFzc2VtYmxpZXMiICJiaW5hcnktcmVmZXJlbmNl LWFzc2VtYmxpZXMiKQorICAgICAiMTQyY2JlYjYyZmZhYmYxZGQ5YzE0MTRkOGRkNzZmOTNiY2Jl ZDBjMiIKKyAgICAgIjF3a2Q1ODloZ2IxNm01enZtcDl5YjU3YWd5eXJ5YWExamo4dmhsNHcyMGky aHAyMndhZDkiKQorICAgICgiYm9ja2J1aWxkIiAgICAgICAgICAgICAgICAgICAiMGVmZGIzNzFl NmQ3OWFiYzU0YzBlM2JiMzY4OWZhMTY0NmY0Mzk0ZSIKKyAgICAgIjEwcXIxbTJ3YTN6YjJpM2ox NmkwY3E0OWhpZ2ptNDUxYmhscWhxZDRybGlzcW4wdzhucnYiKQorICAgICgiYm9yaW5nc3NsIiAg ICAgICAgICAgICAgICAgICAiM2UwNzcwZTE4ODM1NzE0NzA4ODYwYmE5ZmUxYWYwNGE5MzI5NzFm ZiIKKyAgICAgIjEzOWEwZ2w5MWE1MmsycjZuYTZpYWx6a3F5a2FqMXJrODh6anJrYXozc2R4eDdu bW1nNnkiKQorICAgICgiY2VjaWwiICAgICAgICAgICAgICAgICAgICAgICAiYzBlYjk4M2RhYzYy NTE5ZDNhZTkzYTY4OTMxMjA3NmFhY2VjYjcyMyIKKyAgICAgIjAyaTNwd3BhZjZxMDBwa2xmbXd4 aHowbGdwODM4NTRkeXFudmY0YzF5czA3Y3M4eTFwZGsiKQorICAgICgoImNlY2lsIiAiY2VjaWwt bGVnYWN5IikgICAgICAiMzNkNTBiODc0ZmQ1MjcxMThiYzM2MWQ4M2RlM2Q0OTRlOGJiNTVlMSIK KyAgICAgIjFwNGhsMTc5NmliMjZ5a3lmNXNubDZjajBseDB2N21qaDB4cWhqdzZxZGg3NTNuc2p5 aGIiKQorICAgICgiY29yZWZ4IiAgICAgICAgICAgICAgICAgICAgICAiOWFkNTNkNjc0ZTMxMzI3 YWJjYzYwZjM1YzE0Mzg3NzAwZjUwY2M2OCIKKyAgICAgIjBhcDRnMmZqOHdzYXI0eHZiYzZka2Qy bDY3cWFseGxjdzVsYXBscTNhbjVudmoybGQ2NXciCisgICAgICM6cGF0Y2hlcyAoImNvcmVmeC1t b25vLTUuNC4wLXBhdGNoZXMucGF0Y2giKSkKKyAgICAoImNvcmVydCIgICAgICAgICAgICAgICAg ICAgICAgIjQ4ZGJhNzM4MDFlODA0ZTg5ZjAwMzExZGE5OWQ4NzNmOWM1NTAyNzgiCisgICAgICIx enc0N2pmNGN3cW1haXh5bGlzeGk3M3hmNmNhcDQxYndmOXZsbXB4YW56eGFxa2x6c3ZrIikKKyAg ICAoImlrZGFzbSIgICAgICAgICAgICAgICAgICAgICAgIjFkN2Q0MzYwMzc5MWUwMjM2YjU2ZDA3 NjU3ODY1N2JlZTQ0ZmVmNmIiCisgICAgICIxa3c4eWtrYWQ1NXFoYXBnNmpidnFpbTd2YWlucWxw ejg0NjlmbG0wODNscHo3cGtzM3NnIikKKyAgICAoKCJpa3ZtLWZvcmsiICJpa3ZtIikgICAgICAg ICAgIjg0N2UwNWZjZWQ1YzlhNDFmZjBmMjRmMWY5ZDQwZDVhOGE1NzcyYzEiCisgICAgICIxZmw5 Ym0zbG16ZjhpcXYzeDRpcWt6OWZjNTRtd2R2cnhpc3hnMm52d3djc2k0c2FmZnBpIikKKyAgICAo ImxpbmtlciIgICAgICAgICAgICAgICAgICAgICAgIjk5MzU0YmY1YzEzYjgwNTUyMDljYjA4MmNk ZGM1MGM4MDQ3YWIwODgiCisgICAgICIwNXpsYWpucWY4M3hmdm4yd2hoOW5xbDZqODVzcTEyYXcy NnNxbXlxejd6Y3BtbDE3MW1qIikKKyAgICAoIk5ld3RvbnNvZnQuSnNvbiIgICAgICAgICAgICAg IjQ3MWMzZTA4MDNhOWY0MGEwYWNjOGFlY2ViMzFkZTZmZjkzYTUyYzQiCisgICAgICIwZGduZ2Q1 aHFrNnlobGc0MGthYm42cWRua25tMzJ6Y3g5cTZibTJ3MzFjc25zazU5NzhzIikKKyAgICAoKCJO dUdldC5CdWlsZFRhc2tzIiAibnVnZXQtYnVpbGR0YXNrcyIpCisgICAgICJiNThiYTQyODIzNzdi Y2VmZDQ4YWJkYzJkNjJjZTYzMzBlMDc5YWJlIgorICAgICAiMXNheTAzZm5xa2pzeDk3emFjYW55 M3NhNWo0bWhmazgyN2hrd3AyM2liMDJxMThmN2x2cCIpCisgICAgKCgiTlVuaXRMaXRlIiAibnVu aXQtbGl0ZSIpICAgICI2OTA2MDNiZWE5OGFhZTY5ZmNhOWE2NTEzMGQ4ODU5MWJjNmNhYmVlIgor ICAgICAiMWY4NDV5c2p6czN5ZDlnY3l3dzY2ZG5reDQ4NHo1ZmtuYjhsMHh6NzRzam14azJtbmd3 YyIpCisgICAgOzsgKCJyb3NseW4tYmluYXJpZXMiICAgICAgICAgICIxOTA0YzdkMDY4MmE4Nzhl MmQyNWI0ZDQ5ZjM0NzVkMTJmYmI5Y2M2IgorICAgIDs7ICAiIikKKyAgICAoInJ4IiAgICAgICAg ICAgICAgICAgICAgICAgICAgImIyOWE0YjBmZGE2MDllMGFmMzNmZjU0ZWQxMzY1MmI2Y2NmMGUw NWUiCisgICAgICIxbjFqd2htc2JrY3YyZDgwNmltbWNwemtiNzJyejA0eHk5OG15dzM1NWE4dzVh aDI1eWl2IikKKyAgICA7OyAoInh1bml0LWJpbmFyaWVzIiAgICAgICAgICAgImQ0NDMzYjA5NzJm NDBjYjNlZmFhM2ZiYmE1Mjg2OWJkZTVkZjhmYTgiCisgICAgOzsgICIiKQorICAgICkpCisKKyhk ZWZpbmUtcHVibGljIG1vbm8tNS40LjAKKyAgKHBhY2thZ2UKKyAgICAoaW5oZXJpdCBtb25vLTUu Mi4wKQorICAgICh2ZXJzaW9uICI1LjQuMC4yMTIiKQorICAgIChuYW1lICJtb25vIikKKyAgICAo c291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAg ICAgICAgICh1cmkKKyAgICAgICAgICAgICAgIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAg ICAgKHVybCAiaHR0cHM6Ly9naXRsYWIud2luZWhxLm9yZy9tb25vL21vbm8uZ2l0IikKKyAgICAg ICAgICAgICAgICAoY29tbWl0CisgICAgICAgICAgICAgICAgIDs7IDUuNC4wLjEzNSBhbmQgYmVm b3JlIGhhdmUgYSBidWcgdGhhdCBtYWtlcyBtb25vIG5vdAorICAgICAgICAgICAgICAgICA7OyBz ZWxmLWhvc3RpbmcgKGZhaWxzIHRvIGNvbXBpbGUgc2VsZiwgZXhhbXBsZSBlcnJvcjoKKyAgICAg ICAgICAgICAgICAgOzsgU3lzdGVtLkRhdGEuU3FsQ2xpZW50L1NxbFRyYW5zYWN0aW9uLmNzKDM5 LDIyKTogZXJyb3IKKyAgICAgICAgICAgICAgICAgOzsgQ1MwNzM4OiBgU3lzdGVtLkRhdGEuU3Fs Q2xpZW50LlNxbFRyYW5zYWN0aW9uJyBkb2VzIG5vdAorICAgICAgICAgICAgICAgICA7OyBpbXBs ZW1lbnQgaW50ZXJmYWNlIG1lbWJlcgorICAgICAgICAgICAgICAgICA7OyBgU3lzdGVtLkRhdGEu SURiVHJhbnNhY3Rpb24uQ29ubmVjdGlvbi5nZXQnIGFuZCB0aGUgYmVzdAorICAgICAgICAgICAg ICAgICA7OyBpbXBsZW1lbnRpbmcgY2FuZGlkYXRlCisgICAgICAgICAgICAgICAgIDs7IGBTeXN0 ZW0uRGF0YS5TcWxDbGllbnQuU3FsVHJhbnNhY3Rpb24uQ29ubmVjdGlvbi5nZXQnCisgICAgICAg ICAgICAgICAgIDs7IHJldHVybiB0eXBlIGBTeXN0ZW0uRGF0YS5TcWxDbGllbnQuU3FsQ29ubmVj dGlvbicgZG9lcyBub3QKKyAgICAgICAgICAgICAgICAgOzsgbWF0Y2ggaW50ZXJmYWNlIG1lbWJl ciByZXR1cm4gdHlwZQorICAgICAgICAgICAgICAgICA7OyBgU3lzdGVtLkRhdGEuSURiQ29ubmVj dGlvbicKKworICAgICAgICAgICAgICAgICA7OyBOb3RlOiBpbiBhYm92ZSBleGFtcGxlLCBTcWxD b25uZWN0aW9uIGltcGxlbWVudHMKKyAgICAgICAgICAgICAgICAgOzsgSURiQ29ubmVjdGlvbi4g IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBmb3IgdGhpcyB0bworICAgICAgICAgICAgICAgICA7 OyBjb21waWxlIHByb3Blcmx5LCB3ZSBuZWVkIGNvdmFyaWFudCByZXR1cm4gdHlwZXMsIHdoaWNo IGlzCisgICAgICAgICAgICAgICAgIDs7IGEgQyMgOS4wIGZlYXR1cmUsIGJ1dCBzb21laG93IHRo ZSBzYW1lIGNvZGUgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgOzsgY29tcGlsZWQganVzdCBm aW5lIGJ5IHByZXZpb3VzIHZlcnNpb25zIG9mIG1vbm8sIGFuZCBpcworICAgICAgICAgICAgICAg ICA7OyBjb21waWxlZCBmaW5lIGJ5IHRoaXMgdmVyc2lvbiwgYnV0IG5vdCBzcGVjaWZpYyA1LjQu MC5YWFgKKyAgICAgICAgICAgICAgICAgOzsgdmVyc2lvbnMuCisgICAgICAgICAgICAgICAgICJt b25vLTUuNC4wLjIxMiIpKSkKKyAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFt ZSBuYW1lIHZlcnNpb24pKQorICAgICAgICAgICAgICAoc2hhMjU2CisgICAgICAgICAgICAgICAo YmFzZTMyCisgICAgICAgICAgICAgICAgIjBneDNmeHoxd2xxNWZrajdpcGh2MzJ2ZzltNzhpYTc0 bTlwZ245cmFiNGZ5cTJrOWFuMnkiKSkKKyAgICAgICAgICAgICAgKG1vZHVsZXMgJygoZ3VpeCBi dWlsZCB1dGlscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWNlLTkgc3RyaW5nLWZ1bikp KQorICAgICAgICAgICAgICAoc25pcHBldCAjfihiZWdpbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyQoYWRkLWV4dGVybmFsLXJlcG9zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtb25vLTUuNC4wLWV4dGVybmFsLXJlcG8tc3BlY3MpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAjJEBwcmVwYXJlLW1vbm8tc291cmNlLTApKQorICAgICAgICAgICAgICAocGF0Y2hlcwor ICAgICAgICAgICAgICAgKHNlYXJjaC1wYXRjaGVzCisgICAgICAgICAgICAgICAgIm1vbm8tNS40 LjAtcGF0Y2hlcy5wYXRjaCIpKSkpCisgICAgKG5hdGl2ZS1pbnB1dHMgKG1vZGlmeS1pbnB1dHMg KHBhY2thZ2UtbmF0aXZlLWlucHV0cyBtb25vLTUuMi4wKQorICAgICAgICAgICAgICAgICAgICAg KHJlcGxhY2UgIm1vbm8iIG1vbm8tNS4yLjApKSkpKQpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2Vz L3BhdGNoZXMvY29yZWZ4LW1vbm8tNS40LjAtcGF0Y2hlcy5wYXRjaCBiL2dudS9wYWNrYWdlcy9w YXRjaGVzL2NvcmVmeC1tb25vLTUuNC4wLXBhdGNoZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uMDM0ZDc2OWViYwotLS0gL2Rldi9udWxsCisrKyBiL2dudS9w YWNrYWdlcy9wYXRjaGVzL2NvcmVmeC1tb25vLTUuNC4wLXBhdGNoZXMucGF0Y2gKQEAgLTAsMCAr MSw5MTUgQEAKK2RpZmYgLS1naXQgYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0 L0NTaGFycC9SdW50aW1lQmluZGVyL0V4cHJlc3Npb25UcmVlQ2FsbFJld3JpdGVyLmNzIGIvc3Jj L01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9FeHBy ZXNzaW9uVHJlZUNhbGxSZXdyaXRlci5jcworaW5kZXggYWE4YWZhNWExYi4uM2EyNTE4MjQ2YSAx MDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1 bnRpbWVCaW5kZXIvRXhwcmVzc2lvblRyZWVDYWxsUmV3cml0ZXIuY3MKKysrKyBiL3NyYy9NaWNy b3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvRXhwcmVzc2lv blRyZWVDYWxsUmV3cml0ZXIuY3MKK0BAIC0yNDYsOCArMjQ2LDkgQEAgbmFtZXNwYWNlIE1pY3Jv c29mdC5DU2hhcnAuUnVudGltZUJpbmRlcgorICAgICAgICAgICAgIEV4cHJBcnJheUluaXQgYXJy aW5pdDsKKyAKKyAgICAgICAgICAgICBFeHByTGlzdCBsaXN0ID0gKEV4cHJMaXN0KXBFeHByLk9w dGlvbmFsQXJndW1lbnRzOworLSAgICAgICAgICAgIGlmIChsaXN0Lk9wdGlvbmFsTmV4dExpc3RO b2RlIGlzIEV4cHJMaXN0IG5leHQpCisrICAgICAgICAgICAgaWYgKGxpc3QuT3B0aW9uYWxOZXh0 TGlzdE5vZGUgaXMgRXhwckxpc3QpCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBF eHByTGlzdCBuZXh0ID0gKEV4cHJMaXN0KWxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGU7CisgICAg ICAgICAgICAgICAgIG1ldGhpbmZvID0gKEV4cHJNZXRob2RJbmZvKW5leHQuT3B0aW9uYWxFbGVt ZW50OworICAgICAgICAgICAgICAgICBhcnJpbml0ID0gKEV4cHJBcnJheUluaXQpbmV4dC5PcHRp b25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAgICAgICB9CitAQCAtMzgyLDggKzM4Myw5IEBAIG5h bWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIKKyAgICAgICAgICAgICBFeHBy IG5leHROb2RlID0gbGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAgICAgICBFeHBy UHJvcGVydHlJbmZvIHByb3BpbmZvOworICAgICAgICAgICAgIEV4cHJBcnJheUluaXQgYXJndW1l bnRzOworLSAgICAgICAgICAgIGlmIChuZXh0Tm9kZSBpcyBFeHByTGlzdCBuZXh0TGlzdCkKKysg ICAgICAgICAgICBpZiAobmV4dE5vZGUgaXMgRXhwckxpc3QpCisgICAgICAgICAgICAgeworKyAg ICAgICAgICAgICAgICBFeHByTGlzdCBuZXh0TGlzdCA9IChFeHByTGlzdClsaXN0Lk9wdGlvbmFs TmV4dExpc3ROb2RlOworICAgICAgICAgICAgICAgICBwcm9waW5mbyA9IG5leHRMaXN0Lk9wdGlv bmFsRWxlbWVudCBhcyBFeHByUHJvcGVydHlJbmZvOworICAgICAgICAgICAgICAgICBhcmd1bWVu dHMgPSBuZXh0TGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZSBhcyBFeHByQXJyYXlJbml0OworICAg ICAgICAgICAgIH0KK0BAIC01NTMsOCArNTU1LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hh cnAuUnVudGltZUJpbmRlcgorICAgICAgICAgICAgIGxpc3QgPSAoRXhwckxpc3QpbGlzdC5PcHRp b25hbE5leHRMaXN0Tm9kZTsKKyAgICAgICAgICAgICBNZXRob2RJbmZvIG1ldGhvZEluZm87Cisg ICAgICAgICAgICAgYm9vbCBiSXNMaWZ0ZWQgPSBmYWxzZTsKKy0gICAgICAgICAgICBpZiAobGlz dC5PcHRpb25hbE5leHRMaXN0Tm9kZSBpcyBFeHByTGlzdCBuZXh0KQorKyAgICAgICAgICAgIGlm IChsaXN0Lk9wdGlvbmFsTmV4dExpc3ROb2RlIGlzIEV4cHJMaXN0KQorICAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgRXhwckxpc3QgbmV4dCA9IChFeHByTGlzdClsaXN0Lk9wdGlvbmFs TmV4dExpc3ROb2RlOworICAgICAgICAgICAgICAgICBFeHByQ29uc3RhbnQgaXNMaWZ0ZWQgPSAo RXhwckNvbnN0YW50KW5leHQuT3B0aW9uYWxFbGVtZW50OworICAgICAgICAgICAgICAgICBEZWJ1 Zy5Bc3NlcnQoaXNMaWZ0ZWQgIT0gbnVsbCk7CisgICAgICAgICAgICAgICAgIGJJc0xpZnRlZCA9 IGlzTGlmdGVkLlZhbC5JbnQzMlZhbCA9PSAxOworQEAgLTY3Nyw4ICs2ODAsOSBAQCBuYW1lc3Bh Y2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyCisgCisgICAgICAgICBwcml2YXRlIEV4 cHJlc3Npb24gR2V0RXhwcmVzc2lvbihFeHByIHBFeHByKQorICAgICAgICAgeworLSAgICAgICAg ICAgIGlmIChwRXhwciBpcyBFeHByV3JhcCB3cmFwKQorKyAgICAgICAgICAgIGlmIChwRXhwciBp cyBFeHByV3JhcCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJXcmFwIHdy YXAgPSAoRXhwcldyYXApIHBFeHByOworICAgICAgICAgICAgICAgICByZXR1cm4gX0RpY3Rpb25h cnlPZlBhcmFtZXRlcnNbKEV4cHJDYWxsKXdyYXAuT3B0aW9uYWxFeHByZXNzaW9uXTsKKyAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIgaXMgRXhwckNvbnN0YW50KQor QEAgLTg3NSwyMCArODc5LDI0IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVC aW5kZXIKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBmb3IgKDs7KQorICAgICAgICAgICAgIHsK Ky0gICAgICAgICAgICAgICAgaWYgKHBFeHByIGlzIEV4cHJDYXN0IGNhc3QpCisrICAgICAgICAg ICAgICAgIGlmIChwRXhwciBpcyBFeHByQ2FzdCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAg ICAgICAgICAgICAgICAgRXhwckNhc3QgY2FzdCA9IChFeHByQ2FzdCkgcEV4cHI7CisgICAgICAg ICAgICAgICAgICAgICBwRXhwciA9IGNhc3QuQXJndW1lbnQ7CisgICAgICAgICAgICAgICAgIH0K Ky0gICAgICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIgaXMgRXhwclR5cGVPZiB0eXBlT2YpCisr ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4cHJUeXBlT2YpCisgICAgICAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJUeXBlT2YgdHlwZU9mID0gKEV4cHJU eXBlT2YpIHBFeHByOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVPZi5Tb3VyY2VU eXBlLlR5cGUuQXNzb2NpYXRlZFN5c3RlbVR5cGU7CisgICAgICAgICAgICAgICAgIH0KKy0gICAg ICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIgaXMgRXhwck1ldGhvZEluZm8gbWV0aG9kSW5mbykK KysgICAgICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIgaXMgRXhwck1ldGhvZEluZm8pCisgICAg ICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJNZXRob2RJbmZvIG1ldGhv ZEluZm8gPSAoRXhwck1ldGhvZEluZm8pIHBFeHByOworICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIEdldE1ldGhvZEluZm9Gcm9tRXhwcihtZXRob2RJbmZvKTsKKyAgICAgICAgICAgICAgICAg fQorLSAgICAgICAgICAgICAgICBlbHNlIGlmIChwRXhwciBpcyBFeHByQ29uc3RhbnQgY29uc3Rh bnQpCisrICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4cHJDb25zdGFudCkKKyAg ICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckNvbnN0YW50IGNvbnN0 YW50ID0gKEV4cHJDb25zdGFudCkgcEV4cHI7CisgICAgICAgICAgICAgICAgICAgICBDb25zdFZh bCB2YWwgPSBjb25zdGFudC5WYWw7CisgICAgICAgICAgICAgICAgICAgICBDVHlwZSB1bmRlcmx5 aW5nVHlwZSA9IHBFeHByLlR5cGU7CisgICAgICAgICAgICAgICAgICAgICBvYmplY3Qgb2JqdmFs OworQEAgLTk1NCw4ICs5NjIsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1l QmluZGVyCisgCisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcEV4cHIuVHlwZS5pc0VudW1U eXBlKCkgPyBFbnVtLlRvT2JqZWN0KHBFeHByLlR5cGUuQXNzb2NpYXRlZFN5c3RlbVR5cGUsIG9i anZhbCkgOiBvYmp2YWw7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgZWxz ZSBpZiAocEV4cHIgaXMgRXhwclplcm9Jbml0IHplcm9Jbml0KQorKyAgICAgICAgICAgICAgICBl bHNlIGlmIChwRXhwciBpcyBFeHByWmVyb0luaXQpCisgICAgICAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgICAgIEV4cHJaZXJvSW5pdCB6ZXJvSW5pdCA9IChFeHByWmVyb0luaXQpIHBF eHByOworICAgICAgICAgICAgICAgICAgICAgaWYgKChwRXhwciA9IHplcm9Jbml0Lk9wdGlvbmFs QXJndW1lbnQpID09IG51bGwpCisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIEFjdGl2YXRvci5DcmVhdGVJbnN0YW5jZSh6ZXJvSW5pdC5UeXBl LkFzc29jaWF0ZWRTeXN0ZW1UeXBlKTsKK0BAIC05ODEsOCArOTkwLDkgQEAgbmFtZXNwYWNlIE1p Y3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlcgorICAgICAgICAgICAgICAgICBFeHByIHAgPSBs aXN0OworICAgICAgICAgICAgICAgICB3aGlsZSAobGlzdCAhPSBudWxsKQorICAgICAgICAgICAg ICAgICB7CistICAgICAgICAgICAgICAgICAgICBpZiAobGlzdCBpcyBFeHByTGlzdCBwTGlzdCkK KysgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0IGlzIEV4cHJMaXN0KQorICAgICAgICAgICAg ICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJMaXN0IHBMaXN0ID0gKEV4 cHJMaXN0KSBsaXN0OworICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBwTGlzdC5PcHRpb25h bEVsZW1lbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCA9IHBMaXN0Lk9wdGlvbmFs TmV4dExpc3ROb2RlOworICAgICAgICAgICAgICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3NyYy9N aWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvUnVudGlt ZUJpbmRlci5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1 bnRpbWVCaW5kZXIvUnVudGltZUJpbmRlci5jcworaW5kZXggNmRjODg4YzZlZi4uODlmODgxZjY2 OCAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJw L1J1bnRpbWVCaW5kZXIvUnVudGltZUJpbmRlci5jcworKysrIGIvc3JjL01pY3Jvc29mdC5DU2hh cnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9SdW50aW1lQmluZGVyLmNzCitA QCAtMTk1LDcgKzE5NSw4IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5k ZXIKKyAgICAgICAgICAgICBMb2NhbFZhcmlhYmxlU3ltYm9sW10gbG9jYWxzID0gUG9wdWxhdGVM b2NhbFNjb3BlKHBheWxvYWQsIHBTY29wZSwgYXJndW1lbnRzLCBwYXJhbWV0ZXJzKTsKKyAKKyAg ICAgICAgICAgICAvLyAoMS41KSAtIENoZWNrIHRvIHNlZSBpZiB3ZSBuZWVkIHRvIGRlZmVyLgor LSAgICAgICAgICAgIGlmIChEZWZlckJpbmRpbmcocGF5bG9hZCwgYXJndW1lbnRzLCBhcmdzLCBs b2NhbHMsIG91dCBEeW5hbWljTWV0YU9iamVjdCBvKSkKKysgICAgICAgICAgICBEeW5hbWljTWV0 YU9iamVjdCBvOworKyAgICAgICAgICAgIGlmIChEZWZlckJpbmRpbmcocGF5bG9hZCwgYXJndW1l bnRzLCBhcmdzLCBsb2NhbHMsIG91dCBvKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgIGRlZmVycmVkQmluZGluZyA9IG87CisgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwor QEAgLTEwNTMsOCArMTA1NCw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVC aW5kZXIKKyAKKyAgICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgQ2hlY2tGb3JDb25kaXRpb25h bE1ldGhvZEVycm9yKEV4cHIgcEV4cHIpCisgICAgICAgICB7CistICAgICAgICAgICAgaWYgKHBF eHByIGlzIEV4cHJDYWxsIGNhbGwpCisrICAgICAgICAgICAgaWYgKHBFeHByIGlzIEV4cHJDYWxs KQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwckNhbGwgY2FsbCA9IChFeHBy Q2FsbClwRXhwcjsKKyAgICAgICAgICAgICAgICAgLy8gVGhpcyBtaW1pY3MgdGhlIGJlaGF2aW9y IG9mIHRoZSBuYXRpdmUgQ29tcGlsZXJTeW1ib2xMb2FkZXIgaW4gR2V0Q29uZGl0aW9uYWxTeW1i b2xzLiBPdmVycmlkZQorICAgICAgICAgICAgICAgICAvLyBtZXRob2RzIGNhbm5vdCBoYXZlIHRo ZSBjb25kaXRpb25hbCBhdHRyaWJ1dGUsIGJ1dCBpbXBsaWNpdGx5IGFjcXVpcmUgaXQgZnJvbSB0 aGVpciBzbG90LgorIAorQEAgLTEwODcsOCArMTA4OSw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQu Q1NoYXJwLlJ1bnRpbWVCaW5kZXIKKyAgICAgICAgICAgICBFeHByTWVtYmVyR3JvdXAgbWVtZ3Jv dXA7CisgICAgICAgICAgICAgVHlwZUFycmF5IHR5cGVBcmdzOworIAorLSAgICAgICAgICAgIGlm IChwUmVzdWx0IGlzIEV4cHJDYWxsIGNhbGwpCisrICAgICAgICAgICAgaWYgKHBSZXN1bHQgaXMg RXhwckNhbGwpCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBFeHByQ2FsbCBjYWxs ID0gKEV4cHJDYWxsKSBwUmVzdWx0OworICAgICAgICAgICAgICAgICB0eXBlID0gY2FsbC5NZXRo V2l0aEluc3QuQXRzOworICAgICAgICAgICAgICAgICBtZXRocHJvcCA9IGNhbGwuTWV0aFdpdGhJ bnN0Lk1ldGgoKTsKKyAgICAgICAgICAgICAgICAgbWVtZ3JvdXAgPSBjYWxsLk1lbWJlckdyb3Vw OworQEAgLTExNTUsMTIgKzExNTgsMTUgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVu dGltZUJpbmRlcgorIAorICAgICAgICAgcHJpdmF0ZSBFeHByIFN0cmlwTmFtZWRBcmd1bWVudChF eHByIHBBcmcpCisgICAgICAgICB7CistICAgICAgICAgICAgaWYgKHBBcmcgaXMgRXhwck5hbWVk QXJndW1lbnRTcGVjaWZpY2F0aW9uIG5hbWVkKQorKyAgICAgICAgICAgIGlmIChwQXJnIGlzIEV4 cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbikKKyAgICAgICAgICAgICB7CisrICAgICAgICAg ICAgICAgIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCA9CisrICAgICAgICAg ICAgICAgICAgICAoRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uKSBwQXJnOworICAgICAg ICAgICAgICAgICBwQXJnID0gbmFtZWQuVmFsdWU7CisgICAgICAgICAgICAgfQorLSAgICAgICAg ICAgIGVsc2UgaWYgKHBBcmcgaXMgRXhwckFycmF5SW5pdCBpbml0KQorKyAgICAgICAgICAgIGVs c2UgaWYgKHBBcmcgaXMgRXhwckFycmF5SW5pdCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAg ICAgICAgIEV4cHJBcnJheUluaXQgaW5pdCA9IChFeHByQXJyYXlJbml0KSBwQXJnOworICAgICAg ICAgICAgICAgICBpbml0Lk9wdGlvbmFsQXJndW1lbnRzID0gU3RyaXBOYW1lZEFyZ3VtZW50cyhp bml0Lk9wdGlvbmFsQXJndW1lbnRzKTsKKyAgICAgICAgICAgICB9CisgCitAQCAtMTE2OSwxNCAr MTE3NSwxNiBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyCisgCisg ICAgICAgICBwcml2YXRlIEV4cHIgU3RyaXBOYW1lZEFyZ3VtZW50cyhFeHByIHBBcmcpCisgICAg ICAgICB7CistICAgICAgICAgICAgaWYgKHBBcmcgaXMgRXhwckxpc3QgbGlzdCkKKysgICAgICAg ICAgICBpZiAocEFyZyBpcyBFeHByTGlzdCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAg ICAgIEV4cHJMaXN0IGxpc3QgPSAoRXhwckxpc3QpIHBBcmc7CisgICAgICAgICAgICAgICAgIGZv cig7OykKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgbGlzdC5PcHRp b25hbEVsZW1lbnQgPSBTdHJpcE5hbWVkQXJndW1lbnQobGlzdC5PcHRpb25hbEVsZW1lbnQpOwor IAorLSAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGUgaXMg RXhwckxpc3QgbmV4dCkKKysgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0Lk9wdGlvbmFsTmV4 dExpc3ROb2RlIGlzIEV4cHJMaXN0KQorICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICAgICAgICAgIEV4cHJMaXN0IG5leHQgPSAoRXhwckxpc3QpbGlzdC5PcHRpb25hbE5l eHRMaXN0Tm9kZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gbmV4dDsKKyAgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGVsc2UKK2RpZmYgLS1naXQg YS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVy L1NlbWFudGljcy9CaW5kaW5nL0JldHRlci5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9N aWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0JpbmRpbmcvQmV0dGVyLmNz CitpbmRleCBjZWJmY2Q5NGUxLi4xNzlhYzIxNjIwIDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29m dC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvQmlu ZGluZy9CZXR0ZXIuY3MKKysrKyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQv Q1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0JpbmRpbmcvQmV0dGVyLmNzCitAQCAtMTU3 LDggKzE1Nyw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2Vt YW50aWNzCisgICAgICAgICAgICAgLy8gV2UgdGhlbiBnbyBvdmVyIHRoZSBzcGVjaWZpZWQgYXJn dW1lbnRzIGFuZCBwdXQgdGhlIHR5cGUgZm9yIGFueSBuYW1lZCBhcmd1bWVudCBpbiB0aGUgcmln aHQgcG9zaXRpb24gaW4gdGhlIGFycmF5LgorICAgICAgICAgICAgIGZvciAoaW50IGlQYXJhbSA9 IDA7IGlQYXJhbSA8IGFyZ3MuY2FyZzsgaVBhcmFtKyspCisgICAgICAgICAgICAgeworLSAgICAg ICAgICAgICAgICBpZiAocHJnZXhwcltpUGFyYW1dIGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lm aWNhdGlvbiBuYW1lZCkKKysgICAgICAgICAgICAgICAgaWYgKHByZ2V4cHJbaVBhcmFtXSBpcyBF eHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24pCisgICAgICAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgICAgIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCA9IChF eHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24pcHJnZXhwcltpUGFyYW1dOworICAgICAgICAg ICAgICAgICAgICAgLy8gV2UgZmluZCB0aGUgaW5kZXggb2YgdGhlIHR5cGUgb2YgdGhlIGFyZ3Vt ZW50IGluIHRoZSBtZXRob2QgcGFyYW1ldGVyIGxpc3QgYW5kIHN0b3JlIHRoYXQgaW4gYSB0ZW1w CisgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBGaW5kTmFtZShtZXRoUHJvcC5QYXJh bWV0ZXJOYW1lcywgbmFtZWQuTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICBDVHlwZSB0ZW1w VHlwZSA9IHB0YVtpbmRleF07CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3Jj L01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvQmluZGluZy9FcnJvclJl cG9ydGluZy5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1 bnRpbWVCaW5kZXIvU2VtYW50aWNzL0JpbmRpbmcvRXJyb3JSZXBvcnRpbmcuY3MKK2luZGV4IGM0 MDZhZjQzZGUuLjBlYTgxZWYyMWMgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9z cmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9CaW5kaW5nL0Vycm9y UmVwb3J0aW5nLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NT aGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9CaW5kaW5nL0Vycm9yUmVwb3J0aW5nLmNzCitA QCAtNzYsMjIgKzc2LDI1IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5k ZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBEZWJ1Zy5Bc3Nl cnQoZXhwciAhPSBudWxsKTsKKyAKKy0gICAgICAgICAgICAgICAgaWYgKGV4cHIgaXMgRXhwckxv Y2FsIGxvY2FsICYmIGxvY2FsLklzT0spCisrICAgICAgICAgICAgICAgIGlmIChleHByIGlzIEV4 cHJMb2NhbCAmJiAoKEV4cHJMb2NhbClleHByKS5Jc09LKQorICAgICAgICAgICAgICAgICB7Cisr ICAgICAgICAgICAgICAgICAgICBFeHByTG9jYWwgbG9jYWwgPSAoRXhwckxvY2FsKWV4cHI7Cisg ICAgICAgICAgICAgICAgICAgICBSZXBvcnRMb2NhbEVycm9yKGxvY2FsLkxvY2FsLCBraW5kLCBp c05lc3RlZCk7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg ICAgICAgfQorIAorICAgICAgICAgICAgICAgICBFeHByIHBPYmplY3QgPSBudWxsOworIAorLSAg ICAgICAgICAgICAgICBpZiAoZXhwciBpcyBFeHByUHJvcGVydHkgcHJvcCkKKysgICAgICAgICAg ICAgICAgaWYgKGV4cHIgaXMgRXhwclByb3BlcnR5KQorICAgICAgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgICAgICBFeHByUHJvcGVydHkgcHJvcCA9IChFeHByUHJvcGVydHkpZXhwcjsK KyAgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgcmVwb3J0ZWQgcmVhZC1vbmx5 LXByb3BlcnR5IGVycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgIERlYnVnLkFzc2VydChwcm9w Lk1ldGhXaXRoVHlwZVNldCAhPSBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgIHBPYmplY3Qg PSBwcm9wLk1lbWJlckdyb3VwLk9wdGlvbmFsT2JqZWN0OworICAgICAgICAgICAgICAgICB9Cist ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV4cHIgaXMgRXhwckZpZWxkIGZpZWxkKQorKyAgICAg ICAgICAgICAgICBlbHNlIGlmIChleHByIGlzIEV4cHJGaWVsZCkKKyAgICAgICAgICAgICAgICAg eworKyAgICAgICAgICAgICAgICAgICAgRXhwckZpZWxkIGZpZWxkID0gKEV4cHJGaWVsZClleHBy OworICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLkZpZWxkV2l0aFR5cGUuRmllbGQoKS5p c1JlYWRPbmx5KQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg ICAgIFJlcG9ydFJlYWRPbmx5RXJyb3IoZmllbGQsIGtpbmQsIGlzTmVzdGVkKTsKK0BAIC0xMDUs OCArMTA4LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1h bnRpY3MKKyAKKyAgICAgICAgICAgICAgICAgaWYgKHBPYmplY3QgIT0gbnVsbCAmJiBwT2JqZWN0 LlR5cGUuaXNTdHJ1Y3RPckVudW0oKSkKKyAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAg ICAgICAgICAgaWYgKHBPYmplY3QgaXMgSUV4cHJXaXRoQXJncyB3aXRoQXJncykKKysgICAgICAg ICAgICAgICAgICAgIGlmIChwT2JqZWN0IGlzIElFeHByV2l0aEFyZ3MpCisgICAgICAgICAgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgSUV4cHJXaXRoQXJncyB3aXRoQXJn cyA9IChJRXhwcldpdGhBcmdzKXBPYmplY3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgLy8g YXNzaWduaW5nIHRvIFJIUyBvZiBtZXRob2Qgb3IgcHJvcGVydHkgZ2V0dGVyIHJldHVybmluZyBh IHZhbHVlLXR5cGUgb24gdGhlIHN0YWNrIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgLy8g cGFzc2luZyBSSFMgb2YgbWV0aG9kIG9yIHByb3BlcnR5IGdldHRlciByZXR1cm5pbmcgYSB2YWx1 ZS10eXBlIG9uIHRoZSBzdGFjaywgYXMgcmVmIG9yIG91dAorICAgICAgICAgICAgICAgICAgICAg ICAgIEVycm9yQ29udGV4dC5FcnJvcihFcnJvckNvZGUuRVJSX1JldHVybk5vdExWYWx1ZSwgd2l0 aEFyZ3MuR2V0U3ltV2l0aFR5cGUoKSk7CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hh cnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvQ29udmVyc2lv bi5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVC aW5kZXIvU2VtYW50aWNzL0NvbnZlcnNpb24uY3MKK2luZGV4IGJiNjJhOTI2YjUuLjg3M2ZlZmY3 MmYgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFy cC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9Db252ZXJzaW9uLmNzCisrKysgYi9zcmMvTWljcm9z b2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9D b252ZXJzaW9uLmNzCitAQCAtMzkxLDkgKzM5MSwxMCBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNT aGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICBGVU5EVFlQRSBm dFNyYyA9IGV4cHIuVHlwZS5mdW5kVHlwZSgpOworICAgICAgICAgICAgICAgICBGVU5EVFlQRSBm dERlc3QgPSBkZXN0LmZ1bmRUeXBlKCk7CisgCistICAgICAgICAgICAgICAgIGlmIChleHByIGlz IEV4cHJDb25zdGFudCBjb25zdGFudCAmJiBjb25zdGFudC5Jc09LICYmCisrICAgICAgICAgICAg ICAgIGlmIChleHByIGlzIEV4cHJDb25zdGFudCAmJiAoKEV4cHJDb25zdGFudClleHByKS5Jc09L ICYmCisgICAgICAgICAgICAgICAgICAgICBleHByLlR5cGUuaXNTaW1wbGVUeXBlKCkgJiYgZGVz dC5pc1NpbXBsZVR5cGUoKSkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAg ICAgRXhwckNvbnN0YW50IGNvbnN0YW50ID0gKEV4cHJDb25zdGFudCkgZXhwcjsKKyAgICAgICAg ICAgICAgICAgICAgIGlmICgoZnRTcmMgPT0gRlVORFRZUEUuRlRfSTQgJiYgKGZ0RGVzdCA8PSBG VU5EVFlQRS5GVF9MQVNUTk9OTE9ORyB8fCBmdERlc3QgPT0gRlVORFRZUEUuRlRfVTgpKSB8fAor ICAgICAgICAgICAgICAgICAgICAgICAgIChmdFNyYyA9PSBGVU5EVFlQRS5GVF9JOCAmJiBmdERl c3QgPT0gRlVORFRZUEUuRlRfVTgpKQorICAgICAgICAgICAgICAgICAgICAgeworQEAgLTQyMSw4 ICs0MjIsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFu dGljcworICAgICAgICAgICAgICAgICAgICAgRXJyb3JDb250ZXh0LkVycm9yKGRlc3QgaXMgVHlw ZVBhcmFtZXRlclR5cGUgPyBFcnJvckNvZGUuRVJSX1R5cGVWYXJDYW50QmVOdWxsIDogRXJyb3JD b2RlLkVSUl9WYWx1ZUNhbnRCZU51bGwsIGRlc3QpOworICAgICAgICAgICAgICAgICB9CisgCist ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGV4cHIgaXMgRXhwck1lbWJlckdyb3VwIG1lbUdycCkK KysgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhwciBpcyBFeHByTWVtYmVyR3JvdXApCisgICAg ICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJNZW1iZXJHcm91cCBtZW1H cnAgPSAoRXhwck1lbWJlckdyb3VwKSBleHByOworICAgICAgICAgICAgICAgICAgICAgQmluZEdy cENvbnZlcnNpb24obWVtR3JwLCBkZXN0LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICBlbHNlIGlmICghVHlwZU1hbmFnZXIuVHlwZUNvbnRhaW5zQW5vbnltb3Vz VHlwZXMoZGVzdCkgJiYgY2FuQ2FzdChleHByLlR5cGUsIGRlc3QsIGZsYWdzKSkKK0BAIC01NTUs OCArNTU3LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1h bnRpY3MKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBF cnJvckNvbnRleHQuRXJyb3IoRXJyb3JDb2RlLkVSUl9WYWx1ZUNhbnRCZU51bGwsIGRlc3QpOwor ICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhw ciBpcyBFeHByTWVtYmVyR3JvdXAgbWVtR3JwKQorKyAgICAgICAgICAgICAgICAgICAgZWxzZSBp ZiAoZXhwciBpcyBFeHByTWVtYmVyR3JvdXApCisgICAgICAgICAgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgICAgICAgICAgRXhwck1lbWJlckdyb3VwIG1lbUdycCA9IChFeHByTWVtYmVy R3JvdXApZXhwcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICBCaW5kR3JwQ29udmVyc2lvbiht ZW1HcnAsIGRlc3QsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICAgZWxzZQorQEAgLTEzOTYsOCArMTM5OSw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQu Q1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgZm9yICg7OykKKyAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIERlYnVnLkFzc2VydChwRXhwciAhPSBudWxs KTsKKy0gICAgICAgICAgICAgICAgaWYgKHBFeHByIGlzIEV4cHJDYWxsIGNhbGwpCisrICAgICAg ICAgICAgICAgIGlmIChwRXhwciBpcyBFeHByQ2FsbCkKKyAgICAgICAgICAgICAgICAgeworKyAg ICAgICAgICAgICAgICAgICAgRXhwckNhbGwgY2FsbCA9IChFeHByQ2FsbClwRXhwcjsKKyAgICAg ICAgICAgICAgICAgICAgIHN3aXRjaCAoY2FsbC5OdWxsYWJsZUNhbGxMaWZ0S2luZCkKKyAgICAg ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE51bGxhYmxl Q2FsbExpZnRLaW5kLk5vdExpZnRlZDoKK0BAIC0xNDExLDggKzE0MTUsOSBAQCBuYW1lc3BhY2Ug TWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBlbHNlIGlmIChwRXhwciBpcyBFeHByVXNlckRl ZmluZWRDb252ZXJzaW9uIHVkYykKKysgICAgICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIgaXMg RXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbikKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICAgICAgRXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbiB1ZGMgPSAoRXhwclVzZXJEZWZp bmVkQ29udmVyc2lvbilwRXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIHBFeHByID0gdWRjLlVz ZXJEZWZpbmVkQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg ICAgICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29m dC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRVhQUkV4dGVuc2lvbnMuY3MgYi9zcmMv TWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFu dGljcy9FWFBSRXh0ZW5zaW9ucy5jcworaW5kZXggMDc1ZWQyM2ExMS4uNjQwOGRmNGMzNiAxMDA2 NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRp bWVCaW5kZXIvU2VtYW50aWNzL0VYUFJFeHRlbnNpb25zLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0 LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FWFBS RXh0ZW5zaW9ucy5jcworQEAgLTMzLDggKzMzLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hh cnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICBFeHByIGV4cHJDdXIgPSBl eHByOworICAgICAgICAgICAgIHdoaWxlIChleHByQ3VyICE9IG51bGwpCisgICAgICAgICAgICAg eworLSAgICAgICAgICAgICAgICBpZiAoZXhwckN1ciBpcyBFeHByTGlzdCBsaXN0KQorKyAgICAg ICAgICAgICAgICBpZiAoZXhwckN1ciBpcyBFeHByTGlzdCkKKyAgICAgICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICAgICAgRXhwckxpc3QgbGlzdCA9IChFeHByTGlzdClleHByQ3VyOwor ICAgICAgICAgICAgICAgICAgICAgeWllbGQgcmV0dXJuIGxpc3QuT3B0aW9uYWxFbGVtZW50Owor ICAgICAgICAgICAgICAgICAgICAgZXhwckN1ciA9IGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGU7 CisgICAgICAgICAgICAgICAgIH0KK0BAIC02MSwxMiArNjIsMTIgQEAgbmFtZXNwYWNlIE1pY3Jv c29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgIH0KKyAgICAgICAg IHB1YmxpYyBzdGF0aWMgYm9vbCBpc051bGwodGhpcyBFeHByIGV4cHIpCisgICAgICAgICB7Cist ICAgICAgICAgICAgcmV0dXJuIGV4cHIgaXMgRXhwckNvbnN0YW50IGNvbnN0YW50ICYmIGNvbnN0 YW50LklzT0sgJiYgKGV4cHIuVHlwZS5mdW5kVHlwZSgpID09IEZVTkRUWVBFLkZUX1JFRikgJiYg Y29uc3RhbnQuVmFsLklzTnVsbFJlZjsKKysgICAgICAgICAgICByZXR1cm4gZXhwciBpcyBFeHBy Q29uc3RhbnQgJiYgKChFeHByQ29uc3RhbnQpZXhwcikuSXNPSyAmJiAoZXhwci5UeXBlLmZ1bmRU eXBlKCkgPT0gRlVORFRZUEUuRlRfUkVGKSAmJiAoKEV4cHJDb25zdGFudClleHByKS5WYWwuSXNO dWxsUmVmOworICAgICAgICAgfQorIAorICAgICAgICAgcHVibGljIHN0YXRpYyBib29sIElzWmVy byh0aGlzIEV4cHIgZXhwcikKKyAgICAgICAgIHsKKy0gICAgICAgICAgICByZXR1cm4gZXhwciBp cyBFeHByQ29uc3RhbnQgY29uc3RhbnQgJiYgY29uc3RhbnQuSXNPSyAmJiBjb25zdGFudC5Jc1pl cm87CisrICAgICAgICAgICAgcmV0dXJuIGV4cHIgaXMgRXhwckNvbnN0YW50ICYmICgoRXhwckNv bnN0YW50KWV4cHIpLklzT0sgJiYgKChFeHByQ29uc3RhbnQpZXhwcikuSXNaZXJvOworICAgICAg ICAgfQorIAorICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgRXhwciBHZXRTZXFWYWwodGhpcyBFeHBy IGV4cHIpCitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9D U2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhwbGljaXRDb252ZXJzaW9uLmNzIGIvc3Jj L01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1h bnRpY3MvRXhwbGljaXRDb252ZXJzaW9uLmNzCitpbmRleCA2ZWE4ODc5YzQwLi4xMzdlOTUwZTc2 IDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAv UnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhwbGljaXRDb252ZXJzaW9uLmNzCisrKysgYi9zcmMv TWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFu dGljcy9FeHBsaWNpdENvbnZlcnNpb24uY3MKK0BAIC0yMDcsOCArMjA3LDkgQEAgbmFtZXNwYWNl IE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVlNGQUlMKCJCaW5kRXhwbGljaXRDb252ZXJzaW9uIGZhaWxlZCB1bmV4 cGVjdGVkbHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo X2V4cHJEZXN0IGlzIEV4cHJVc2VyRGVmaW5lZENvbnZlcnNpb24gdWRjKQorKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChfZXhwckRlc3QgaXMgRXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbikK KyAgICAgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg IEV4cHJVc2VyRGVmaW5lZENvbnZlcnNpb24gdWRjID0gKEV4cHJVc2VyRGVmaW5lZENvbnZlcnNp b24pX2V4cHJEZXN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZGMuQXJndW1lbnQg PSBfZXhwclNyYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9D U2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhwckZhY3RvcnkuY3MgYi9zcmMvTWljcm9z b2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9F eHByRmFjdG9yeS5jcworaW5kZXggOTllZTU3NjI2YS4uZWMwZDI5ZDZmMyAxMDA2NDQKKy0tLSBh L3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIv U2VtYW50aWNzL0V4cHJGYWN0b3J5LmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMv TWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FeHByRmFjdG9yeS5jcwor QEAgLTI2NSw4ICsyNjUsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmlu ZGVyLlNlbWFudGljcworICAgICAgICAgICAgIEV4cHJVc2VyTG9naWNhbE9wIHJ2YWwgPSBuZXcg RXhwclVzZXJMb2dpY2FsT3AocFR5cGUpOworICAgICAgICAgICAgIEV4cHIgbGVmdENoaWxkID0g KChFeHByTGlzdClwQ2FsbE9wLk9wdGlvbmFsQXJndW1lbnRzKS5PcHRpb25hbEVsZW1lbnQ7Cisg ICAgICAgICAgICAgRGVidWcuQXNzZXJ0KGxlZnRDaGlsZCAhPSBudWxsKTsKKy0gICAgICAgICAg ICBpZiAobGVmdENoaWxkIGlzIEV4cHJXcmFwIHdyYXApCisrICAgICAgICAgICAgaWYgKGxlZnRD aGlsZCBpcyBFeHByV3JhcCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJX cmFwIHdyYXAgPSAoRXhwcldyYXApbGVmdENoaWxkOworICAgICAgICAgICAgICAgICAvLyBJbiB0 aGUgRUUgY2FzZSwgd2UgZG9uJ3QgY3JlYXRlIFdSQVBFWFBScy4KKyAgICAgICAgICAgICAgICAg bGVmdENoaWxkID0gd3JhcC5PcHRpb25hbEV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgIERl YnVnLkFzc2VydChsZWZ0Q2hpbGQgIT0gbnVsbCk7CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29m dC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhw cmVzc2lvbkJpbmRlci5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1No YXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0V4cHJlc3Npb25CaW5kZXIuY3MKK2luZGV4IDYw YTE2NjFlYWMuLmRjMDRmYTE2NTcgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9z cmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FeHByZXNzaW9uQmlu ZGVyLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9S dW50aW1lQmluZGVyL1NlbWFudGljcy9FeHByZXNzaW9uQmluZGVyLmNzCitAQCAtNjAxLDEwICs2 MDEsMTEgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRp Y3MKKyAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgY29tcGlsZSB0aW1lIGNvbnN0 YW50LiBJZiB3ZSBkbywgY3JlYXRlIGEgY29uc3RhbnQgZm9yIGl0IGFuZCBzZXQgdGhlCisgICAg ICAgICAgICAgLy8gb3JpZ2luYWwgdHJlZSB0byB0aGUgY2FzdC4KKyAKKy0gICAgICAgICAgICBp ZiAoZXhwckNvbnN0IGlzIEV4cHJDb25zdGFudCBjb25zdGFudCAmJiBleHByRmxhZ3MgPT0gMCAm JgorKyAgICAgICAgICAgIGlmIChleHByQ29uc3QgaXMgRXhwckNvbnN0YW50ICYmIGV4cHJGbGFn cyA9PSAwICYmCisgICAgICAgICAgICAgICAgIGV4cHJTcmMuVHlwZS5mdW5kVHlwZSgpID09IHR5 cGVEZXN0LmZ1bmRUeXBlKCkgJiYKKy0gICAgICAgICAgICAgICAgKCFleHByU3JjLlR5cGUuaXNQ cmVkZWZUeXBlKFByZWRlZmluZWRUeXBlLlBUX1NUUklORykgfHwgY29uc3RhbnQuVmFsLklzTnVs bFJlZikpCisrICAgICAgICAgICAgICAgICghZXhwclNyYy5UeXBlLmlzUHJlZGVmVHlwZShQcmVk ZWZpbmVkVHlwZS5QVF9TVFJJTkcpIHx8ICgoRXhwckNvbnN0YW50KWV4cHJDb25zdCkuVmFsLklz TnVsbFJlZikpCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBFeHByQ29uc3RhbnQg Y29uc3RhbnQgPSAoRXhwckNvbnN0YW50KWV4cHJDb25zdDsKKyAgICAgICAgICAgICAgICAgRXhw ckNvbnN0YW50IGV4cHIgPSBHZXRFeHByRmFjdG9yeSgpLkNyZWF0ZUNvbnN0YW50KHR5cGVEZXN0 LCBjb25zdGFudC5WYWwpOworICAgICAgICAgICAgICAgICBwZXhwckRlc3QgPSBleHByOworICAg ICAgICAgICAgICAgICByZXR1cm47CitAQCAtMTE5MSw4ICsxMTkyLDkgQEAgbmFtZXNwYWNlIE1p Y3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICB3aGls ZSAobGlzdCAhPSBudWxsKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgRXhwciBh cmc7CistICAgICAgICAgICAgICAgIGlmIChsaXN0IGlzIEV4cHJMaXN0IG5leHQpCisrICAgICAg ICAgICAgICAgIGlmIChsaXN0IGlzIEV4cHJMaXN0KQorICAgICAgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgICAgICBFeHByTGlzdCBuZXh0ID0gKEV4cHJMaXN0KWxpc3Q7CisgICAgICAg ICAgICAgICAgICAgICBhcmcgPSBuZXh0Lk9wdGlvbmFsRWxlbWVudDsKKyAgICAgICAgICAgICAg ICAgICAgIGxpc3QgPSBuZXh0Lk9wdGlvbmFsTmV4dExpc3ROb2RlOworICAgICAgICAgICAgICAg ICB9CitAQCAtMTI2NSw4ICsxMjY3LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVu dGltZUJpbmRlci5TZW1hbnRpY3MKKyAKKyAgICAgICAgIHByaXZhdGUgRXhwciBVbndyYXBFeHBy ZXNzaW9uKEV4cHIgcEV4cHJlc3Npb24pCisgICAgICAgICB7CistICAgICAgICAgICAgd2hpbGUg KHBFeHByZXNzaW9uIGlzIEV4cHJXcmFwIHdyYXApCisrICAgICAgICAgICAgd2hpbGUgKHBFeHBy ZXNzaW9uIGlzIEV4cHJXcmFwKQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhw cldyYXAgd3JhcCA9IChFeHByV3JhcClwRXhwcmVzc2lvbjsKKyAgICAgICAgICAgICAgICAgRXhw ciB3cmFwcGVkID0gd3JhcC5PcHRpb25hbEV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgIGlm ICh3cmFwcGVkID09IG51bGwpCisgICAgICAgICAgICAgICAgIHsKK0BAIC0xMzQ0LDggKzEzNDcs OSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcwor ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgaWYgKGV4cHIuaXNM dmFsdWUoKSkKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGlmIChleHByIGlzIEV4 cHJQcm9wZXJ0eSBwcm9wKQorKyAgICAgICAgICAgICAgICBpZiAoZXhwciBpcyBFeHByUHJvcGVy dHkpCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJQcm9wZXJ0 eSBwcm9wID0gKEV4cHJQcm9wZXJ0eSlleHByOworICAgICAgICAgICAgICAgICAgICAgQ2hlY2tM dmFsdWVQcm9wKHByb3ApOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIG1h cmtGaWVsZEFzc2lnbmVkKGV4cHIpOworQEAgLTE1NzEsOSArMTU3NSwxMCBAQCBuYW1lc3BhY2Ug TWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworIAorICAgICAgICAgICAg ICAgICAvLyBJZiB3ZSdyZSBpbnZva2luZyBjb2RlIG9uIGEgc3RydWN0LXZhbHVlZCBmaWVsZCwg bWFyayB0aGUgc3RydWN0IGFzIGFzc2lnbmVkICh0bworICAgICAgICAgICAgICAgICAvLyBhdm9p ZCB3YXJuaW5nIENTMDY0OSkuCistICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0IGlzIEV4cHJG aWVsZCBmaWVsZCAmJiAhZmllbGQuRmllbGRXaXRoVHlwZS5GaWVsZCgpLmlzQXNzaWduZWQgJiYg IXN3dC5TeW0uSXNGaWVsZFN5bWJvbCgpICYmCisrICAgICAgICAgICAgICAgIGlmIChwT2JqZWN0 IGlzIEV4cHJGaWVsZCAmJiAhKChFeHByRmllbGQpcE9iamVjdCkuRmllbGRXaXRoVHlwZS5GaWVs ZCgpLmlzQXNzaWduZWQgJiYgIXN3dC5TeW0uSXNGaWVsZFN5bWJvbCgpICYmCisgICAgICAgICAg ICAgICAgICAgICB0eXBlT2JqLmlzU3RydWN0VHlwZSgpICYmICF0eXBlT2JqLmlzUHJlZGVmaW5l ZCgpKQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHByRmllbGQg ZmllbGQgPSAoRXhwckZpZWxkKSBwT2JqZWN0OworICAgICAgICAgICAgICAgICAgICAgZmllbGQu RmllbGRXaXRoVHlwZS5GaWVsZCgpLmlzQXNzaWduZWQgPSB0cnVlOworICAgICAgICAgICAgICAg ICB9CisgCitAQCAtMTc4Niw4ICsxNzkxLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAu UnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAKKyAgICAgICAgICAgICAgICAgICAgIEV4cHIgYXJn dW1lbnQgPSBpbmRpcjsKKyAgICAgICAgICAgICAgICAgICAgIEV4cHIgcnZhbDsKKy0gICAgICAg ICAgICAgICAgICAgIGlmIChhcmd1bWVudCBpcyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRp b24gbmFtZWQpCisrICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnQgaXMgRXhwck5hbWVk QXJndW1lbnRTcGVjaWZpY2F0aW9uKQorICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICAgICAgICAgIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCA9IChF eHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24pYXJndW1lbnQ7CisgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3 ZSdyZSBuYW1lZCwgbG9vayBmb3IgdGhlIHR5cGUgb2YgdGhlIG1hdGNoaW5nIG5hbWUuCisgICAg ICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoTmFtZSBpIGluIG1vc3REZXJpdmVkTWV0aG9k LlBhcmFtZXRlck5hbWVzKQorQEAgLTE5MjgsOCArMTkzNCw5IEBAIG5hbWVzcGFjZSBNaWNyb3Nv ZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgICAgICAgICBF eHByIGV4cHIgPSBpdC5DdXJyZW50KCk7CisgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwor IAorLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHIgaXMgRXhwck5hbWVkQXJndW1lbnRTcGVj aWZpY2F0aW9uIG5hbWVkKQorKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHIgaXMgRXhwck5h bWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uKQorICAgICAgICAgICAgICAgICAgICAgeworKyAgICAg ICAgICAgICAgICAgICAgICAgIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCA9 IChFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24pZXhwcjsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBuYW1lZC5WYWx1ZSA9IHRyeUNvbnZlcnQobmFtZWQuVmFsdWUsIGVsZW1lbnRUeXBl KTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGVsc2UKK0BA IC0xOTUxLDggKzE5NTgsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmlu ZGVyLlNlbWFudGljcworIAorICAgICAgICAgcHJpdmF0ZSB2b2lkIG1hcmtGaWVsZEFzc2lnbmVk KEV4cHIgZXhwcikKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBpZiAoMCAhPSAoZXhwci5GbGFn cyAmIEVYUFJGTEFHLkVYRl9MVkFMVUUpICYmIGV4cHIgaXMgRXhwckZpZWxkIGZpZWxkKQorKyAg ICAgICAgICAgIGlmICgwICE9IChleHByLkZsYWdzICYgRVhQUkZMQUcuRVhGX0xWQUxVRSkgJiYg ZXhwciBpcyBFeHByRmllbGQpCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBFeHBy RmllbGQgZmllbGQgPSAoRXhwckZpZWxkKSBleHByOworICAgICAgICAgICAgICAgICBGaWVsZFN5 bWJvbCBzeW1ib2w7CisgICAgICAgICAgICAgICAgIGRvCisgICAgICAgICAgICAgICAgIHsKK0BA IC0yMDE5LDggKzIwMjcsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmlu ZGVyLlNlbWFudGljcworICAgICAgICAgICAgIGZvciAoRXhwciBsaXN0ID0gYXJnczsgbGlzdCAh PSBudWxsOyBpYXJnKyspCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBFeHByIGFy ZzsKKy0gICAgICAgICAgICAgICAgaWYgKGxpc3QgaXMgRXhwckxpc3QgbmV4dCkKKysgICAgICAg ICAgICAgICAgaWYgKGxpc3QgaXMgRXhwckxpc3QpCisgICAgICAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgICAgIEV4cHJMaXN0IG5leHQgPSAoRXhwckxpc3QpbGlzdDsKKyAgICAgICAg ICAgICAgICAgICAgIGFyZyA9IG5leHQuT3B0aW9uYWxFbGVtZW50OworICAgICAgICAgICAgICAg ICAgICAgbGlzdCA9IG5leHQuT3B0aW9uYWxOZXh0TGlzdE5vZGU7CisgICAgICAgICAgICAgICAg IH0KK0BAIC0yMzc0LDggKzIzODMsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50 aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgRXhw ciBhcmc7CisgCistICAgICAgICAgICAgICAgIGlmIChsaXN0IGlzIEV4cHJMaXN0IG5leHQpCisr ICAgICAgICAgICAgICAgIGlmIChsaXN0IGlzIEV4cHJMaXN0KQorICAgICAgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAgICAgICBFeHByTGlzdCBuZXh0ID0gKEV4cHJMaXN0KWxpc3Q7Cisg ICAgICAgICAgICAgICAgICAgICBhcmcgPSBuZXh0Lk9wdGlvbmFsRWxlbWVudDsKKyAgICAgICAg ICAgICAgICAgICAgIGxpc3QgPSBuZXh0Lk9wdGlvbmFsTmV4dExpc3ROb2RlOworICAgICAgICAg ICAgICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29m dC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvR3JvdXBUb0FyZ3NCaW5kZXIuY3MgYi9z cmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1Nl bWFudGljcy9Hcm91cFRvQXJnc0JpbmRlci5jcworaW5kZXggNzcwOGYxOTdhZS4uYjc1YWMzNDBi ZSAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJw L1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0dyb3VwVG9BcmdzQmluZGVyLmNzCisrKysgYi9zcmMv TWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFu dGljcy9Hcm91cFRvQXJnc0JpbmRlci5jcworQEAgLTUxMCw3ICs1MTAsNyBAQCBuYW1lc3BhY2Ug TWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAg ICAgICAgLy8gdGhlbiBsZXQgdXMgdGhyb3VnaC4KKyAgICAgICAgICAgICAgICAgICAgIGlmICht ZXRocHJvcC5pc1BhcmFtQXJyYXkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA8 IHBBcmd1bWVudHMuY2FyZyAmJgorLSAgICAgICAgICAgICAgICAgICAgICAgIHBBcmd1bWVudHMu cHJnZXhwcltpbmRleF0gaXMgRXhwckFycmF5SW5pdCBhcnJheUluaXQgJiYgYXJyYXlJbml0Lkdl bmVyYXRlZEZvclBhcmFtQXJyYXkpCisrICAgICAgICAgICAgICAgICAgICAgICAgcEFyZ3VtZW50 cy5wcmdleHByW2luZGV4XSBpcyBFeHByQXJyYXlJbml0ICYmICgoRXhwckFycmF5SW5pdClwQXJn dW1lbnRzLnByZ2V4cHJbaW5kZXhdKS5HZW5lcmF0ZWRGb3JQYXJhbUFycmF5KQorICAgICAgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtQXJyYXlBcmd1bWVu dCA9IHBBcmd1bWVudHMucHJnZXhwcltpbmRleF07CisgICAgICAgICAgICAgICAgICAgICB9CitA QCAtNTE4LDcgKzUxOCw3IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5k ZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgICAgICAgICAvLyBQb3NpdGlvbmFsLgorICAgICAg ICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgcEFyZ3VtZW50cy5jYXJnICYmCisgICAgICAgICAg ICAgICAgICAgICAgICAgIShwQXJndW1lbnRzLnByZ2V4cHJbaW5kZXhdIGlzIEV4cHJOYW1lZEFy Z3VtZW50U3BlY2lmaWNhdGlvbikgJiYKKy0gICAgICAgICAgICAgICAgICAgICAgICAhKHBBcmd1 bWVudHMucHJnZXhwcltpbmRleF0gaXMgRXhwckFycmF5SW5pdCBhcnJheUluaXRQb3MgJiYgYXJy YXlJbml0UG9zLkdlbmVyYXRlZEZvclBhcmFtQXJyYXkpKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICEocEFyZ3VtZW50cy5wcmdleHByW2luZGV4XSBpcyBFeHByQXJyYXlJbml0ICYmICgoRXhw ckFycmF5SW5pdClwQXJndW1lbnRzLnByZ2V4cHJbaW5kZXhdKS5HZW5lcmF0ZWRGb3JQYXJhbUFy cmF5KSkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBw RXhwckFyZ3VtZW50c1tpbmRleF0gPSBwQXJndW1lbnRzLnByZ2V4cHJbaW5kZXgrK107CisgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CitAQCAtODM5LDcgKzgzOSw3IEBAIG5hbWVz cGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAg ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcEFyZ3VtZW50cy5jYXJnOyBpKyspCisgICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIEV4cHIgZXhwciA9IHByZ2V4cHJbaV07 CistICAgICAgICAgICAgICAgICAgICBpZiAoZXhwciBpcyBFeHByTmFtZWRBcmd1bWVudFNwZWNp ZmljYXRpb24gbmFtZWQgJiYgbmFtZWQuTmFtZSA9PSBwTmFtZSkKKysgICAgICAgICAgICAgICAg ICAgIGlmIChleHByIGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiAmJiAoKEV4cHJO YW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbilleHByKS5OYW1lID09IHBOYW1lKQorICAgICAgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleHByOworICAg ICAgICAgICAgICAgICAgICAgfQorQEAgLTg2MSw3ICs4NjEsOCBAQCBuYW1lc3BhY2UgTWljcm9z b2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICBIYXNo U2V0PE5hbWU+IG5hbWVzID0gbmV3IEhhc2hTZXQ8TmFtZT4oKTsKKyAgICAgICAgICAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBfcEFyZ3VtZW50cy5jYXJnOyBpKyspCisgICAgICAgICAgICAg ICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIGlmICghKF9wQXJndW1lbnRzLnByZ2V4cHJbaV0g aXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uIG5hbWVkKSkKKysgICAgICAgICAgICAg ICAgICAgIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZDsKKysgICAgICAgICAg ICAgICAgICAgIGlmICghKF9wQXJndW1lbnRzLnByZ2V4cHJbaV0gaXMgRXhwck5hbWVkQXJndW1l bnRTcGVjaWZpY2F0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAoIWN1cnJlbnRQb3NpdGlvbi5Jc0VtcHR5KCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgeworQEAgLTg2OSw2ICs4NzAsNyBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNT aGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAg IH0KKysgICAgICAgICAgICAgICAgICAgIG5hbWVkID0gKEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lm aWNhdGlvbikgX3BBcmd1bWVudHMucHJnZXhwcltpXTsKKyAKKyAgICAgICAgICAgICAgICAgICAg IE5hbWUgbmFtZSA9IG5hbWVkLk5hbWU7CisgICAgICAgICAgICAgICAgICAgICBpZiAoIW1ldGhw cm9wLlBhcmFtZXRlck5hbWVzLkNvbnRhaW5zKG5hbWUpKQorQEAgLTEwODAsOCArMTA4Miw5IEBA IG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHIgcEFyZ3VtZW50ID0gX3BBcmd1bWVudHMucHJn ZXhwcltpdmFyXTsKKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2 ZSBhIG5hbWVkIGFyZ3VtZW50LCBzdHJpcCBpdCB0byBkbyB0aGUgY29udmVyc2lvbi4KKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBBcmd1bWVudCBpcyBFeHByTmFtZWRBcmd1bWVu dFNwZWNpZmljYXRpb24gbmFtZWQpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChw QXJndW1lbnQgaXMgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBy TmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQgPSAoRXhwck5hbWVkQXJndW1lbnRTcGVj aWZpY2F0aW9uKXBBcmd1bWVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBB cmd1bWVudCA9IG5hbWVkLlZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAv UnVudGltZUJpbmRlci9TZW1hbnRpY3MvSW1wbGljaXRDb252ZXJzaW9uLmNzIGIvc3JjL01pY3Jv c29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3Mv SW1wbGljaXRDb252ZXJzaW9uLmNzCitpbmRleCBmMWEwMTU5ZTUzLi5mZGJkMWRkNDI2IDEwMDY0 NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGlt ZUJpbmRlci9TZW1hbnRpY3MvSW1wbGljaXRDb252ZXJzaW9uLmNzCisrKysgYi9zcmMvTWljcm9z b2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9J bXBsaWNpdENvbnZlcnNpb24uY3MKK0BAIC0xNzIsOCArMTcyLDkgQEAgbmFtZXNwYWNlIE1pY3Jv c29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAg ICAgICBWU0ZBSUwoIkJhZCB0eXBlIHN5bWJvbCBraW5kIik7CisgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kLlRLX01ldGhv ZEdyb3VwVHlwZToKKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2V4cHJTcmMgaXMgRXhw ck1lbWJlckdyb3VwIG1lbUdycCkKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2V4cHJT cmMgaXMgRXhwck1lbWJlckdyb3VwKQorICAgICAgICAgICAgICAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRXhwck1lbWJlckdyb3VwIG1lbUdycCA9IChFeHByTWVt YmVyR3JvdXApX2V4cHJTcmM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJDYWxs IG91dEV4cHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmV0VmFsID0gX2Jp bmRlci5CaW5kR3JwQ29udmVyc2lvbihtZW1HcnAsIF90eXBlRGVzdCwgX25lZWRzRXhwckRlc3Qs IG91dCBvdXRFeHByLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9leHBy RGVzdCA9IG91dEV4cHI7CitAQCAtNzQ0LDEwICs3NDUsMTAgQEAgbmFtZXNwYWNlIE1pY3Jvc29m dC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgLy8gKiAg IEEgY29uc3RhbnQtZXhwcmVzc2lvbiBvZiB0eXBlIGxvbmcgY2FuIGJlIGNvbnZlcnRlZCB0byB0 eXBlIHVsb25nLCBwcm92aWRlZCB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgLy8gICAg IHRoZSBjb25zdGFudC1leHByZXNzaW9uIGlzIG5vdCBuZWdhdGl2ZS4KKyAgICAgICAgICAgICAg ICAgLy8gTm90ZTogRG9uJ3QgdXNlIEdldENvbnN0IGhlcmUgc2luY2UgdGhlIGNvbnZlcnNpb24g b25seSBhcHBsaWVzIHRvIGJvbmEtZmlkZSBjb21waWxlIHRpbWUgY29uc3RhbnRzLgorLSAgICAg ICAgICAgICAgICBpZiAoX2V4cHJTcmMgaXMgRXhwckNvbnN0YW50IGNvbnN0YW50ICYmIF9leHBy U3JjLklzT0sgJiYKKysgICAgICAgICAgICAgICAgaWYgKF9leHByU3JjIGlzIEV4cHJDb25zdGFu dCAmJiBfZXhwclNyYy5Jc09LICYmCisgICAgICAgICAgICAgICAgICAgICAoKHB0U3JjID09IFBy ZWRlZmluZWRUeXBlLlBUX0lOVCAmJiBwdERlc3QgIT0gUHJlZGVmaW5lZFR5cGUuUFRfQk9PTCAm JiBwdERlc3QgIT0gUHJlZGVmaW5lZFR5cGUuUFRfQ0hBUikgfHwKKyAgICAgICAgICAgICAgICAg ICAgIChwdFNyYyA9PSBQcmVkZWZpbmVkVHlwZS5QVF9MT05HICYmIHB0RGVzdCA9PSBQcmVkZWZp bmVkVHlwZS5QVF9VTE9ORykpICYmCistICAgICAgICAgICAgICAgICAgICBpc0NvbnN0YW50SW5S YW5nZShjb25zdGFudCwgX3R5cGVEZXN0KSkKKysgICAgICAgICAgICAgICAgICAgIGlzQ29uc3Rh bnRJblJhbmdlKCgoRXhwckNvbnN0YW50KV9leHByU3JjKSwgX3R5cGVEZXN0KSkKKyAgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIChDTFIgNi4x LjYpOiBpZiBpbnRlZ3JhbCBjb25zdGFudCBpcyBpbiByYW5nZSwgdGhlIGNvbnZlcnNpb24gaXMg YSBsZWdhbCBpbXBsaWNpdCBjb252ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgY29udmVy dEtpbmQgPSBDb252S2luZC5JbXBsaWNpdDsKK2RpZmYgLS1naXQgYS9zcmMvTWljcm9zb2Z0LkNT aGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9NZXRob2RU eXBlSW5mZXJyZXIuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFy cC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9NZXRob2RUeXBlSW5mZXJyZXIuY3MKK2luZGV4IDU4 OWI5Yzk2ZDAuLjI1NTljYTVjODUgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9z cmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9NZXRob2RUeXBlSW5m ZXJyZXIuY3MKKysrKyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJw L1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL01ldGhvZFR5cGVJbmZlcnJlci5jcworQEAgLTEwNjQs MTAgKzEwNjQsMTEgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5T ZW1hbnRpY3MKKyAgICAgICAgICAgICAvLyBTUEVDOiAgIHlpZWxkcyBhIHNpbmdsZSBtZXRob2Qg d2l0aCByZXR1cm4gQ1R5cGUgVSB0aGVuIGEgbG93ZXItYm91bmQKKyAgICAgICAgICAgICAvLyBT UEVDOiAgIGluZmVyZW5jZSBpcyBtYWRlIGZyb20gVSB0byBUYi4KKyAKKy0gICAgICAgICAgICBp ZiAoIShwU291cmNlIGlzIEV4cHJNZW1iZXJHcm91cCBtZW1HcnApKQorKyAgICAgICAgICAgIGlm ICghKHBTb3VyY2UgaXMgRXhwck1lbWJlckdyb3VwKSkKKyAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICB9CisrICAgICAgICAgICAgRXhw ck1lbWJlckdyb3VwIG1lbUdycCA9IChFeHByTWVtYmVyR3JvdXApcFNvdXJjZTsKKyAgICAgICAg ICAgICBwVHlwZSA9IHBUeXBlLkdldERlbGVnYXRlVHlwZU9mUG9zc2libGVFeHByZXNzaW9uKCk7 CisgICAgICAgICAgICAgaWYgKCFwVHlwZS5pc0RlbGVnYXRlVHlwZSgpKQorICAgICAgICAgICAg IHsKK2RpZmYgLS1naXQgYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFy cC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9OdWxsYWJsZS5jcyBiL3NyYy9NaWNyb3NvZnQuQ1No YXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL051bGxhYmxl LmNzCitpbmRleCAxOWRiZWE3ZTJmLi4xZDI1OGYyZDY3IDEwMDY0NAorLS0tIGEvc3JjL01pY3Jv c29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3Mv TnVsbGFibGUuY3MKKysrKyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1No YXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL051bGxhYmxlLmNzCitAQCAtMjksOCArMjksOSBA QCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAg ICAgICAgeworICAgICAgICAgICAgIERlYnVnLkFzc2VydChleHByICE9IG51bGwpOworIAorLSAg ICAgICAgICAgIGlmIChleHByIGlzIEV4cHJDYWxsIHBDYWxsICYmIHBDYWxsLk1lbWJlckdyb3Vw Lk9wdGlvbmFsT2JqZWN0ID09IG51bGwpCisrICAgICAgICAgICAgaWYgKGV4cHIgaXMgRXhwckNh bGwgJiYgKChFeHByQ2FsbClleHByKS5NZW1iZXJHcm91cC5PcHRpb25hbE9iamVjdCA9PSBudWxs KQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwckNhbGwgcENhbGwgPSAoRXhw ckNhbGwpZXhwcjsKKyAgICAgICAgICAgICAgICAgTWV0aG9kU3ltYm9sIG1ldGggPSBwQ2FsbC5N ZXRoV2l0aEluc3QuTWV0aCgpOworICAgICAgICAgICAgICAgICBpZiAobWV0aCAhPSBudWxsICYm IG1ldGguSXNOdWxsYWJsZUNvbnN0cnVjdG9yKCkpCisgICAgICAgICAgICAgICAgIHsKK0BAIC00 NSw3ICs0Niw4IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2Vt YW50aWNzCisgCisgICAgICAgICBwdWJsaWMgc3RhdGljIEV4cHIgU3RyaXBOdWxsYWJsZUNvbnN0 cnVjdG9yKEV4cHIgcEV4cHIpCisgICAgICAgICB7CistICAgICAgICAgICAgd2hpbGUgKElzTnVs bGFibGVDb25zdHJ1Y3RvcihwRXhwciwgb3V0IEV4cHJDYWxsIGNhbGwpKQorKyAgICAgICAgICAg IEV4cHJDYWxsIGNhbGw7CisrICAgICAgICAgICAgd2hpbGUgKElzTnVsbGFibGVDb25zdHJ1Y3Rv cihwRXhwciwgb3V0IGNhbGwpKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgcEV4 cHIgPSBjYWxsLk9wdGlvbmFsQXJndW1lbnRzOworICAgICAgICAgICAgICAgICBEZWJ1Zy5Bc3Nl cnQocEV4cHIgIT0gbnVsbCAmJiAhKHBFeHByIGlzIEV4cHJMaXN0KSk7CitAQCAtNjAsNyArNjIs OCBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcwor ICAgICAgICAgICAgIERlYnVnLkFzc2VydChleHByU3JjICE9IG51bGwgJiYgZXhwclNyYy5UeXBl LklzTnVsbGFibGVUeXBlKCkpOworIAorICAgICAgICAgICAgIC8vIEZvciBuZXcgVD8oeCksIHRo ZSBhbnN3ZXIgaXMgeC4KKy0gICAgICAgICAgICBpZiAoSXNOdWxsYWJsZUNvbnN0cnVjdG9yKGV4 cHJTcmMsIG91dCBFeHByQ2FsbCBjYWxsKSkKKysgICAgICAgICAgICBFeHByQ2FsbCBjYWxsOwor KyAgICAgICAgICAgIGlmIChJc051bGxhYmxlQ29uc3RydWN0b3IoZXhwclNyYywgb3V0IGNhbGwp KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBjYWxsLk9wdGlv bmFsQXJndW1lbnRzOworICAgICAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQoYXJncyAhPSBudWxs ICYmICEoYXJncyBpcyBFeHByTGlzdCkpOworZGlmZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1No YXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvRXhw cmVzc2lvbkl0ZXJhdG9yLmNzIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9D U2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvVHJlZS9FeHByZXNzaW9uSXRlcmF0b3IuY3MK K2luZGV4IDk2ZWUwMzI0MjIuLjkzOTc1NDNkZTYgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9zb2Z0 LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9UcmVl L0V4cHJlc3Npb25JdGVyYXRvci5jcworKysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01p Y3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvVHJlZS9FeHByZXNzaW9uSXRl cmF0b3IuY3MKK0BAIC04Myw4ICs4Myw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1 bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgICAgIF9wTGlzdCA9IG51bGw7Cisg ICAgICAgICAgICAgICAgIF9wQ3VycmVudCA9IG51bGw7CisgICAgICAgICAgICAgfQorLSAgICAg ICAgICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4cHJMaXN0IHBMaXN0KQorKyAgICAgICAgICAgIGVs c2UgaWYgKHBFeHByIGlzIEV4cHJMaXN0KQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgRXhwckxpc3QgcExpc3QgPSAoRXhwckxpc3QpcEV4cHI7CisgICAgICAgICAgICAgICAgIF9w TGlzdCA9IHBMaXN0OworICAgICAgICAgICAgICAgICBfcEN1cnJlbnQgPSBwTGlzdC5PcHRpb25h bEVsZW1lbnQ7CisgICAgICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1No YXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvVmlz aXRvcnMvRXhwclZpc2l0b3JCYXNlLmNzIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jv c29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvVHJlZS9WaXNpdG9ycy9FeHByVmlz aXRvckJhc2UuY3MKK2luZGV4IGUyY2U4ZTg4ZjUuLmRlZDRkMGIyMTYgMTAwNjQ0CistLS0gYS9z cmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1Nl bWFudGljcy9UcmVlL1Zpc2l0b3JzL0V4cHJWaXNpdG9yQmFzZS5jcworKysrIGIvc3JjL01pY3Jv c29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3Mv VHJlZS9WaXNpdG9ycy9FeHByVmlzaXRvckJhc2UuY3MKK0BAIC0yMSw4ICsyMSw5IEBAIG5hbWVz cGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAg ICAgICAgIHJldHVybiBwUmVzdWx0OworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICBp ZiAocEV4cHIgaXMgRXhwclN0YXRlbWVudCBzdGF0ZW1lbnQpCisrICAgICAgICAgICAgaWYgKHBF eHByIGlzIEV4cHJTdGF0ZW1lbnQpCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBF eHByU3RhdGVtZW50IHN0YXRlbWVudCA9IChFeHByU3RhdGVtZW50KXBFeHByOworICAgICAgICAg ICAgICAgICByZXR1cm4gQ2FjaGVFeHByTWFwcGluZyhwRXhwciwgRGlzcGF0Y2hTdGF0ZW1lbnRM aXN0KHN0YXRlbWVudCkpOworICAgICAgICAgICAgIH0KKyAKK0BAIC0yNzksMTEgKzI4MCwxMyBA QCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAg ICAgfQorIAorLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG5leHROb2RlIGlzIEV4cHJM aXN0IG5leHQpKQorKyAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJMaXN0IG5leHQ7CisrICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCEobmV4dE5vZGUgaXMgRXhwckxpc3QpKQorICAgICAg ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5P cHRpb25hbE5leHRMaXN0Tm9kZSA9IFZpc2l0KG5leHROb2RlKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAg ICAgICAgICAgICAgICAgICBuZXh0ID0gKEV4cHJMaXN0KW5leHROb2RlOworIAorICAgICAgICAg ICAgICAgICAgICAgICAgIGxpc3QgPSBuZXh0OworICAgICAgICAgICAgICAgICAgICAgfQorZGlm ZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRp bWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvVmlzaXRvcnMvRXhwcmVzc2lvblRyZWVSZXdyaXRlci5j cyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5k ZXIvU2VtYW50aWNzL1RyZWUvVmlzaXRvcnMvRXhwcmVzc2lvblRyZWVSZXdyaXRlci5jcworaW5k ZXggOGE4NDFlZTVkOS4uY2I0MGE1OWY2ZCAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1No YXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvVmlz aXRvcnMvRXhwcmVzc2lvblRyZWVSZXdyaXRlci5jcworKysrIGIvc3JjL01pY3Jvc29mdC5DU2hh cnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvVHJlZS9WaXNp dG9ycy9FeHByZXNzaW9uVHJlZVJld3JpdGVyLmNzCitAQCAtNTQsOCArNTQsOSBAQCBuYW1lc3Bh Y2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAg IC8vIEZvciBhc3NpZ25tZW50cywgd2UgZWl0aGVyIGhhdmUgYSBtZW1iZXIgYXNzaWdubWVudCBv ciBhbiBpbmRleGVkIGFzc2lnbm1lbnQuCisgICAgICAgICAgICAgLy9EZWJ1Zy5Bc3NlcnQoYXNz aWdubWVudC5HZXRMSFMoKS5pc1BST1AoKSB8fCBhc3NpZ25tZW50LkdldExIUygpLmlzRklFTEQo KSB8fCBhc3NpZ25tZW50LkdldExIUygpLmlzQVJSQVlJTkRFWCgpIHx8IGFzc2lnbm1lbnQuR2V0 TEhTKCkuaXNMT0NBTCgpKTsKKyAgICAgICAgICAgICBFeHByIGxoczsKKy0gICAgICAgICAgICBp ZiAoYXNzaWdubWVudC5MSFMgaXMgRXhwclByb3BlcnR5IHByb3ApCisrICAgICAgICAgICAgaWYg KGFzc2lnbm1lbnQuTEhTIGlzIEV4cHJQcm9wZXJ0eSkKKyAgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgIEV4cHJQcm9wZXJ0eSBwcm9wID0gKEV4cHJQcm9wZXJ0eSlhc3NpZ25tZW50LkxI UzsKKyAgICAgICAgICAgICAgICAgaWYgKHByb3AuT3B0aW9uYWxBcmd1bWVudHM9PSBudWxsKQor ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAvLyBSZWd1bGFyIHByb3Bl cnR5LgorQEAgLTMxOCw4ICszMTksOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50 aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICAvLyBjYW4gaGFuZGxlIGluIHRo ZSBnZW5lcmFsIGNhc2UgYWxsIGltcGxpY2l0IGJveGluZyBjb252ZXJzaW9ucy4gUmlnaHQgbm93 IGl0IAorICAgICAgICAgICAgICAgICAvLyByZXF1aXJlcyB0aGF0IGFsbCBhcmd1bWVudHMgdG8g YSBjYWxsIHRoYXQgbmVlZCB0byBiZSBib3hlZCBiZSBleHBsaWNpdGx5IGJveGVkLgorIAorLSAg ICAgICAgICAgICAgICBpZiAocE9iamVjdCAhPSBudWxsICYmIHBPYmplY3QgaXMgRXhwckNhc3Qg Y2FzdCAmJiBjYXN0LklzQm94aW5nQ2FzdCkKKysgICAgICAgICAgICAgICAgaWYgKHBPYmplY3Qg IT0gbnVsbCAmJiBwT2JqZWN0IGlzIEV4cHJDYXN0ICYmICgoRXhwckNhc3QpcE9iamVjdCkuSXNC b3hpbmdDYXN0KQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBFeHBy Q2FzdCBjYXN0ID0gKEV4cHJDYXN0KSBwT2JqZWN0OworICAgICAgICAgICAgICAgICAgICAgcE9i amVjdCA9IGNhc3QuQXJndW1lbnQ7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgcE9iamVjdCA9IFZpc2l0KHBPYmplY3QpOworQEAgLTU5Nyw4ICs1OTksOSBAQCBuYW1lc3Bh Y2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAg IGlmICh1ZGNhbGwgIT0gbnVsbCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIERl YnVnLkFzc2VydCh1ZGNhbGwuS2luZCA9PSBFeHByZXNzaW9uS2luZC5DYWxsIHx8IHVkY2FsbC5L aW5kID09IEV4cHJlc3Npb25LaW5kLlVzZXJMb2dpY2FsT3ApOworLSAgICAgICAgICAgICAgICBp ZiAodWRjYWxsIGlzIEV4cHJDYWxsIGFzY2FsbCkKKysgICAgICAgICAgICAgICAgaWYgKHVkY2Fs bCBpcyBFeHByQ2FsbCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAg RXhwckNhbGwgYXNjYWxsID0gKEV4cHJDYWxsKXVkY2FsbDsKKyAgICAgICAgICAgICAgICAgICAg IEV4cHJMaXN0IGFyZ3MgPSAoRXhwckxpc3QpYXNjYWxsLk9wdGlvbmFsQXJndW1lbnRzOworICAg ICAgICAgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KGFyZ3MuT3B0aW9uYWxOZXh0TGlzdE5vZGUu S2luZCAhPSBFeHByZXNzaW9uS2luZC5MaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgIHAxID0g YXJncy5PcHRpb25hbEVsZW1lbnQ7CitAQCAtNzMxLDggKzczNCw5IEBAIG5hbWVzcGFjZSBNaWNy b3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgRXhwckJs b2NrIGJvZHkgPSBhbm9ubWV0aC5PcHRpb25hbEJvZHk7CisgCisgICAgICAgICAgICAgLy8gVGhl IG1vc3QgbGlrZWx5IGNhc2U6CistICAgICAgICAgICAgaWYgKGJvZHkuT3B0aW9uYWxTdGF0ZW1l bnRzIGlzIEV4cHJSZXR1cm4gcmV0KQorKyAgICAgICAgICAgIGlmIChib2R5Lk9wdGlvbmFsU3Rh dGVtZW50cyBpcyBFeHByUmV0dXJuKQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg RXhwclJldHVybiByZXQgPSAoRXhwclJldHVybilib2R5Lk9wdGlvbmFsU3RhdGVtZW50czsKKyAg ICAgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHJldC5PcHRpb25hbE9iamVjdCAhPSBudWxsKTsK KyAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0KHJldC5PcHRpb25hbE9iamVjdCk7CisgICAg ICAgICAgICAgfQorQEAgLTg1NCw4ICs4NTgsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFy cC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICBFeHByIHBVRENvbnZl cnNpb24gPSBjYWxsPy5QQ29udmVyc2lvbnM7CisgICAgICAgICAgICAgICAgIGlmIChwVURDb252 ZXJzaW9uICE9IG51bGwpCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAg IGlmIChwVURDb252ZXJzaW9uIGlzIEV4cHJDYWxsIGNvbnZDYWxsKQorKyAgICAgICAgICAgICAg ICAgICAgaWYgKHBVRENvbnZlcnNpb24gaXMgRXhwckNhbGwpCisgICAgICAgICAgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgRXhwckNhbGwgY29udkNhbGwgPSAoRXhwckNh bGwpcFVEQ29udmVyc2lvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICBFeHByIHBVRENvbnZl cnNpb25Bcmd1bWVudCA9IGNvbnZDYWxsLk9wdGlvbmFsQXJndW1lbnRzOworICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChJc051bGxhYmxlVmFsdWVBY2Nlc3MocFVEQ29udmVyc2lvbkFyZ3Vt ZW50LCBwQXJndW1lbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHsKK0BAIC0xMjM4LDIz ICsxMjQzLDI1IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2Vt YW50aWNzCisgICAgICAgICBwcml2YXRlIGJvb2wgSXNOdWxsYWJsZVZhbHVlQWNjZXNzKEV4cHIg cEV4cHIsIEV4cHIgcE9iamVjdCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBEZWJ1Zy5Bc3Nl cnQocEV4cHIgIT0gbnVsbCk7CistICAgICAgICAgICAgcmV0dXJuIHBFeHByIGlzIEV4cHJQcm9w ZXJ0eSBwcm9wICYmIHByb3AuTWVtYmVyR3JvdXAuT3B0aW9uYWxPYmplY3QgPT0gcE9iamVjdCAm JiBwT2JqZWN0LlR5cGUuSXNOdWxsYWJsZVR5cGUoKTsKKysgICAgICAgICAgICByZXR1cm4gcEV4 cHIgaXMgRXhwclByb3BlcnR5ICYmICgoRXhwclByb3BlcnR5KXBFeHByKS5NZW1iZXJHcm91cC5P cHRpb25hbE9iamVjdCA9PSBwT2JqZWN0ICYmIHBPYmplY3QuVHlwZS5Jc051bGxhYmxlVHlwZSgp OworICAgICAgICAgfQorIAorICAgICAgICAgcHJpdmF0ZSBib29sIElzRGVsZWdhdGVDb25zdHJ1 Y3RvckNhbGwoRXhwciBwRXhwcikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBEZWJ1Zy5Bc3Nl cnQocEV4cHIgIT0gbnVsbCk7CistICAgICAgICAgICAgaWYgKCEocEV4cHIgaXMgRXhwckNhbGwg cENhbGwpKQorKyAgICAgICAgICAgIEV4cHJDYWxsIHBDYWxsOworKyAgICAgICAgICAgIGlmICgh KHBFeHByIGlzIEV4cHJDYWxsKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgICAgICB9CisrICAgICAgICAgICAgcENhbGwgPSAoRXhwckNh bGwpcEV4cHI7CisgCisgICAgICAgICAgICAgcmV0dXJuIHBDYWxsLk1ldGhXaXRoSW5zdC5NZXRo KCkgIT0gbnVsbCAmJgorICAgICAgICAgICAgICAgICBwQ2FsbC5NZXRoV2l0aEluc3QuTWV0aCgp LklzQ29uc3RydWN0b3IoKSAmJgorICAgICAgICAgICAgICAgICBwQ2FsbC5UeXBlLmlzRGVsZWdh dGVUeXBlKCkgJiYKKyAgICAgICAgICAgICAgICAgcENhbGwuT3B0aW9uYWxBcmd1bWVudHMgIT0g bnVsbCAmJgorLSAgICAgICAgICAgICAgICBwQ2FsbC5PcHRpb25hbEFyZ3VtZW50cyBpcyBFeHBy TGlzdCBsaXN0ICYmCistICAgICAgICAgICAgICAgIGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGUu S2luZCA9PSBFeHByZXNzaW9uS2luZC5GdW5jdGlvblBvaW50ZXI7CisrICAgICAgICAgICAgICAg IChwQ2FsbC5PcHRpb25hbEFyZ3VtZW50cyBpcyBFeHByTGlzdCkgJiYKKysgICAgICAgICAgICAg ICAgKChFeHByTGlzdClwQ2FsbC5PcHRpb25hbEFyZ3VtZW50cykuT3B0aW9uYWxOZXh0TGlzdE5v ZGUuS2luZCA9PSBFeHByZXNzaW9uS2luZC5GdW5jdGlvblBvaW50ZXI7CisgICAgICAgICB9Cisg ICAgICAgICBwcml2YXRlIHN0YXRpYyBib29sIGlzRW51bVRvRGVjaW1hbENvbnZlcnNpb24oQ1R5 cGUgYXJndHlwZSwgQ1R5cGUgZGVzdHR5cGUpCisgICAgICAgICB7CitkaWZmIC0tZ2l0IGEvc3Jj L1N5c3RlbS5Db2xsZWN0aW9ucy9zcmMvU3lzdGVtL0NvbGxlY3Rpb25zL0dlbmVyaWMvU29ydGVk U2V0LlRyZWVTdWJTZXQuY3MgYi9zcmMvU3lzdGVtLkNvbGxlY3Rpb25zL3NyYy9TeXN0ZW0vQ29s bGVjdGlvbnMvR2VuZXJpYy9Tb3J0ZWRTZXQuVHJlZVN1YlNldC5jcworaW5kZXggNGViODE3YzBh Zi4uNjcxNjM2ZjQyOCAxMDA2NDQKKy0tLSBhL3NyYy9TeXN0ZW0uQ29sbGVjdGlvbnMvc3JjL1N5 c3RlbS9Db2xsZWN0aW9ucy9HZW5lcmljL1NvcnRlZFNldC5UcmVlU3ViU2V0LmNzCisrKysgYi9z cmMvU3lzdGVtLkNvbGxlY3Rpb25zL3NyYy9TeXN0ZW0vQ29sbGVjdGlvbnMvR2VuZXJpYy9Tb3J0 ZWRTZXQuVHJlZVN1YlNldC5jcworQEAgLTM1Miw3ICszNTIsMTAgQEAgbmFtZXNwYWNlIFN5c3Rl bS5Db2xsZWN0aW9ucy5HZW5lcmljCisgICAgICAgICAgICAgICAgIHRocm93IG5ldyBQbGF0Zm9y bU5vdFN1cHBvcnRlZEV4Y2VwdGlvbigpOworICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAg ICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBPbkRlc2VyaWFsaXphdGlvbihPYmplY3Qgc2VuZGVy KSA9PiB0aHJvdyBuZXcgUGxhdGZvcm1Ob3RTdXBwb3J0ZWRFeGNlcHRpb24oKTsKKysgICAgICAg ICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBPbkRlc2VyaWFsaXphdGlvbihPYmplY3Qgc2Vu ZGVyKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBsYXRmb3Jt Tm90U3VwcG9ydGVkRXhjZXB0aW9uKCk7CisrICAgICAgICAgICAgfQorICAgICAgICAgfQorICAg ICB9CisgfQorZGlmZiAtLWdpdCBhL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lz dGVtL0R5bmFtaWMvVXRpbHMvVHlwZUV4dGVuc2lvbnMuY3MgYi9zcmMvU3lzdGVtLkxpbnEuRXhw cmVzc2lvbnMvc3JjL1N5c3RlbS9EeW5hbWljL1V0aWxzL1R5cGVFeHRlbnNpb25zLmNzCitpbmRl eCBjNDVjYWJhMDkzLi5lZjlhMjUyMDNkIDEwMDY0NAorLS0tIGEvc3JjL1N5c3RlbS5MaW5xLkV4 cHJlc3Npb25zL3NyYy9TeXN0ZW0vRHluYW1pYy9VdGlscy9UeXBlRXh0ZW5zaW9ucy5jcworKysr IGIvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vRHluYW1pYy9VdGlscy9U eXBlRXh0ZW5zaW9ucy5jcworQEAgLTY1LDcgKzY1LDggQEAgbmFtZXNwYWNlIFN5c3RlbS5EeW5h bWljLlV0aWxzCisgICAgICAgICBpbnRlcm5hbCBzdGF0aWMgUGFyYW1ldGVySW5mb1tdIEdldFBh cmFtZXRlcnNDYWNoZWQodGhpcyBNZXRob2RCYXNlIG1ldGhvZCkKKyAgICAgICAgIHsKKyAgICAg ICAgICAgICBDYWNoZURpY3Q8TWV0aG9kQmFzZSwgUGFyYW1ldGVySW5mb1tdPiBwaWMgPSBzX3Bh cmFtSW5mb0NhY2hlOworLSAgICAgICAgICAgIGlmICghcGljLlRyeUdldFZhbHVlKG1ldGhvZCwg b3V0IFBhcmFtZXRlckluZm9bXSBwaXMpKQorKyAgICAgICAgICAgIFBhcmFtZXRlckluZm9bXSBw aXM7CisrICAgICAgICAgICAgaWYgKCFwaWMuVHJ5R2V0VmFsdWUobWV0aG9kLCBvdXQgcGlzKSkK KyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHBpcyA9IG1ldGhvZC5HZXRQYXJhbWV0 ZXJzKCk7CisgCitkaWZmIC0tZ2l0IGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9T eXN0ZW0vTGlucS9FeHByZXNzaW9ucy9Db21waWxlci9MYW1iZGFDb21waWxlci5FeHByZXNzaW9u cy5jcyBiL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0xpbnEvRXhwcmVz c2lvbnMvQ29tcGlsZXIvTGFtYmRhQ29tcGlsZXIuRXhwcmVzc2lvbnMuY3MKK2luZGV4IGQ4YjFj NjFmNzQuLjhjZWZiZDRmMTkgMTAwNjQ0CistLS0gYS9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lv bnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25zL0NvbXBpbGVyL0xhbWJkYUNvbXBpbGVyLkV4 cHJlc3Npb25zLmNzCisrKysgYi9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3Rl bS9MaW5xL0V4cHJlc3Npb25zL0NvbXBpbGVyL0xhbWJkYUNvbXBpbGVyLkV4cHJlc3Npb25zLmNz CitAQCAtOTUyLDggKzk1Miw5IEBAIG5hbWVzcGFjZSBTeXN0ZW0uTGlucS5FeHByZXNzaW9ucy5D b21waWxlcgorICAgICAgICAgcHJpdmF0ZSB2b2lkIEVtaXRNZW1iZXJBc3NpZ25tZW50KE1lbWJl ckFzc2lnbm1lbnQgYmluZGluZywgVHlwZSBvYmplY3RUeXBlKQorICAgICAgICAgeworICAgICAg ICAgICAgIEVtaXRFeHByZXNzaW9uKGJpbmRpbmcuRXhwcmVzc2lvbik7CistICAgICAgICAgICAg aWYgKGJpbmRpbmcuTWVtYmVyIGlzIEZpZWxkSW5mbyBmaSkKKysgICAgICAgICAgICBpZiAoYmlu ZGluZy5NZW1iZXIgaXMgRmllbGRJbmZvKQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgRmllbGRJbmZvIGZpID0gKEZpZWxkSW5mbyliaW5kaW5nLk1lbWJlcjsKKyAgICAgICAgICAg ICAgICAgX2lsZy5FbWl0KE9wQ29kZXMuU3RmbGQsIGZpKTsKKyAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgZWxzZQorQEAgLTEwOTcsNyArMTA5OCw3IEBAIG5hbWVzcGFjZSBTeXN0ZW0uTGlu cS5FeHByZXNzaW9ucy5Db21waWxlcgorICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgVHlwZSBHZXRN ZW1iZXJUeXBlKE1lbWJlckluZm8gbWVtYmVyKQorICAgICAgICAgeworICAgICAgICAgICAgIERl YnVnLkFzc2VydChtZW1iZXIgaXMgRmllbGRJbmZvIHx8IG1lbWJlciBpcyBQcm9wZXJ0eUluZm8p OworLSAgICAgICAgICAgIHJldHVybiBtZW1iZXIgaXMgRmllbGRJbmZvIGZpID8gZmkuRmllbGRU eXBlIDogKG1lbWJlciBhcyBQcm9wZXJ0eUluZm8pLlByb3BlcnR5VHlwZTsKKysgICAgICAgICAg ICByZXR1cm4gbWVtYmVyIGlzIEZpZWxkSW5mbyA/ICgoRmllbGRJbmZvKW1lbWJlcikuRmllbGRU eXBlIDogKG1lbWJlciBhcyBQcm9wZXJ0eUluZm8pLlByb3BlcnR5VHlwZTsKKyAgICAgICAgIH0K KyAKKyAgICAgICAgICNlbmRyZWdpb24KK2RpZmYgLS1naXQgYS9zcmMvU3lzdGVtLkxpbnEuRXhw cmVzc2lvbnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25zL01lbWJlckFzc2lnbm1lbnQuY3Mg Yi9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25z L01lbWJlckFzc2lnbm1lbnQuY3MKK2luZGV4IDQ3NWE2YzYzY2MuLjA3ODdiMTAxODYgMTAwNjQ0 CistLS0gYS9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJl c3Npb25zL01lbWJlckFzc2lnbm1lbnQuY3MKKysrKyBiL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNz aW9ucy9zcmMvU3lzdGVtL0xpbnEvRXhwcmVzc2lvbnMvTWVtYmVyQXNzaWdubWVudC5jcworQEAg LTkzLDIzICs5MywyMyBAQCBuYW1lc3BhY2UgU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMKKyAKKyAg ICAgICAgICAgICAvLyBOdWxsIHBhcmFtTmFtZSBhcyB0aGVyZSBhcmUgdHdvIHBhdGhzIGhlcmUg d2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVyIG5hbWVzIGF0IHRoZSBBUEkKKyAgICAgICAgICAgICBU eXBlVXRpbHMuVmFsaWRhdGVUeXBlKGRlY1R5cGUsIG51bGwpOworLSAgICAgICAgICAgIHN3aXRj aCAobWVtYmVyKQorKyAgICAgICAgICAgIGlmIChtZW1iZXIgaXMgUHJvcGVydHlJbmZvKQorICAg ICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgY2FzZSBQcm9wZXJ0eUluZm8gcGk6CistICAg ICAgICAgICAgICAgICAgICBpZiAoIXBpLkNhbldyaXRlKQorLSAgICAgICAgICAgICAgICAgICAg eworLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yLlByb3BlcnR5RG9lc05vdEhh dmVTZXR0ZXIocGksIG5hbWVvZihtZW1iZXIpKTsKKy0gICAgICAgICAgICAgICAgICAgIH0KKy0K Ky0gICAgICAgICAgICAgICAgICAgIG1lbWJlclR5cGUgPSBwaS5Qcm9wZXJ0eVR5cGU7CistICAg ICAgICAgICAgICAgICAgICBicmVhazsKKy0KKy0gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElu Zm8gZmk6CistICAgICAgICAgICAgICAgICAgICBtZW1iZXJUeXBlID0gZmkuRmllbGRUeXBlOwor LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CistCistICAgICAgICAgICAgICAgIGRlZmF1bHQ6 CistICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvci5Bcmd1bWVudE11c3RCZUZpZWxkSW5m b09yUHJvcGVydHlJbmZvKG5hbWVvZihtZW1iZXIpKTsKKysgICAgICAgICAgICAgICAgUHJvcGVy dHlJbmZvIHBpID0gKFByb3BlcnR5SW5mbykgbWVtYmVyOworKyAgICAgICAgICAgICAgICBpZiAo IXBpLkNhbldyaXRlKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICB0 aHJvdyBFcnJvci5Qcm9wZXJ0eURvZXNOb3RIYXZlU2V0dGVyKHBpLCBuYW1lb2YobWVtYmVyKSk7 CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgbWVtYmVyVHlwZSA9IHBpLlBy b3BlcnR5VHlwZTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSBpZiAobWVtYmVy IGlzIEZpZWxkSW5mbykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEZpZWxkSW5m byBmaSA9IChGaWVsZEluZm8pIG1lbWJlcjsKKysgICAgICAgICAgICAgICAgbWVtYmVyVHlwZSA9 IGZpLkZpZWxkVHlwZTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZQorKyAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IuQXJndW1lbnRNdXN0QmVGaWVs ZEluZm9PclByb3BlcnR5SW5mbyhuYW1lb2YobWVtYmVyKSk7CisgICAgICAgICAgICAgfQorICAg ICAgICAgfQorICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25z L3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJCaW5kaW5nLmNzIGIvc3JjL1N5c3Rl bS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJCaW5k aW5nLmNzCitpbmRleCBjMWM1ODg0NjE4Li40M2MwNjk4ZjkwIDEwMDY0NAorLS0tIGEvc3JjL1N5 c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJC aW5kaW5nLmNzCisrKysgYi9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9M aW5xL0V4cHJlc3Npb25zL01lbWJlckJpbmRpbmcuY3MKK0BAIC02MSw2ICs2MSw5IEBAIG5hbWVz cGFjZSBTeXN0ZW0uTGlucS5FeHByZXNzaW9ucworICAgICAgICAgICAgIHJldHVybiBFeHByZXNz aW9uU3RyaW5nQnVpbGRlci5NZW1iZXJCaW5kaW5nVG9TdHJpbmcodGhpcyk7CisgICAgICAgICB9 CisgCistICAgICAgICBpbnRlcm5hbCB2aXJ0dWFsIHZvaWQgVmFsaWRhdGVBc0RlZmluZWRIZXJl KGludCBpbmRleCkgPT4gdGhyb3cgRXJyb3IuVW5rbm93bkJpbmRpbmdUeXBlKGluZGV4KTsKKysg ICAgICAgIGludGVybmFsIHZpcnR1YWwgdm9pZCBWYWxpZGF0ZUFzRGVmaW5lZEhlcmUoaW50IGlu ZGV4KQorKyAgICAgICAgeworKyAgICAgICAgICAgIHRocm93IEVycm9yLlVua25vd25CaW5kaW5n VHlwZShpbmRleCk7CisrICAgICAgICB9CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvc3JjL1N5 c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJN ZW1iZXJCaW5kaW5nLmNzIGIvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0v TGlucS9FeHByZXNzaW9ucy9NZW1iZXJNZW1iZXJCaW5kaW5nLmNzCitpbmRleCBmMzk4MWEyYjFm Li43NWRkNzE0MWRhIDEwMDY0NAorLS0tIGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3Ny Yy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJNZW1iZXJCaW5kaW5nLmNzCisrKysgYi9z cmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25zL01l bWJlck1lbWJlckJpbmRpbmcuY3MKK0BAIC0xMjcsMjMgKzEyNywyNCBAQCBuYW1lc3BhY2UgU3lz dGVtLkxpbnEuRXhwcmVzc2lvbnMKKyAKKyAgICAgICAgICAgICAvLyBOdWxsIHBhcmFtTmFtZSBh cyB0aGVyZSBhcmUgc2V2ZXJhbCBwYXRocyBoZXJlIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlciBu YW1lcyBhdCB0aGUgQVBJCisgICAgICAgICAgICAgVHlwZVV0aWxzLlZhbGlkYXRlVHlwZShkZWNU eXBlLCBudWxsLCBhbGxvd0J5UmVmOiB0cnVlLCBhbGxvd1BvaW50ZXI6IHRydWUpOworLSAgICAg ICAgICAgIHN3aXRjaCAobWVtYmVyKQorKyAgICAgICAgICAgIGlmIChtZW1iZXIgaXMgUHJvcGVy dHlJbmZvKQorICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgY2FzZSBQcm9wZXJ0eUlu Zm8gcGk6CistICAgICAgICAgICAgICAgICAgICBpZiAoIXBpLkNhblJlYWQpCistICAgICAgICAg ICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IuUHJvcGVy dHlEb2VzTm90SGF2ZUdldHRlcihwaSwgbmFtZW9mKG1lbWJlcikpOworLSAgICAgICAgICAgICAg ICAgICAgfQorLQorLSAgICAgICAgICAgICAgICAgICAgbWVtYmVyVHlwZSA9IHBpLlByb3BlcnR5 VHlwZTsKKy0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworLQorLSAgICAgICAgICAgICAgICBj YXNlIEZpZWxkSW5mbyBmaToKKy0gICAgICAgICAgICAgICAgICAgIG1lbWJlclR5cGUgPSBmaS5G aWVsZFR5cGU7CistICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAg UHJvcGVydHlJbmZvIHBpID0gKFByb3BlcnR5SW5mbyltZW1iZXI7CisrICAgICAgICAgICAgICAg IGlmICghcGkuQ2FuUmVhZCkKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAg ICAgdGhyb3cgRXJyb3IuUHJvcGVydHlEb2VzTm90SGF2ZUdldHRlcihwaSwgbmFtZW9mKG1lbWJl cikpOworKyAgICAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cist ICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvci5Bcmd1bWVudE11c3RCZUZpZWxkSW5mb09y UHJvcGVydHlJbmZvKG5hbWVvZihtZW1iZXIpKTsKKysgICAgICAgICAgICAgICAgbWVtYmVyVHlw ZSA9IHBpLlByb3BlcnR5VHlwZTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSBp ZiAobWVtYmVyIGlzIEZpZWxkSW5mbykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg IEZpZWxkSW5mbyBmaSA9IChGaWVsZEluZm8pbWVtYmVyOworKyAgICAgICAgICAgICAgICBtZW1i ZXJUeXBlID0gZmkuRmllbGRUeXBlOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNl CisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICB0aHJvdyBFcnJvci5Bcmd1bWVudE11 c3RCZUZpZWxkSW5mb09yUHJvcGVydHlJbmZvKG5hbWVvZihtZW1iZXIpKTsKKyAgICAgICAgICAg ICB9CisgICAgICAgICB9CisgCitkaWZmIC0tZ2l0IGEvc3JjL1N5c3RlbS5OZXQuSHR0cExpc3Rl bmVyL3NyYy9TeXN0ZW0vTmV0L1dlYlNvY2tldHMvSHR0cExpc3RlbmVyV2ViU29ja2V0Q29udGV4 dC5jcyBiL3NyYy9TeXN0ZW0uTmV0Lkh0dHBMaXN0ZW5lci9zcmMvU3lzdGVtL05ldC9XZWJTb2Nr ZXRzL0h0dHBMaXN0ZW5lcldlYlNvY2tldENvbnRleHQuY3MKK2luZGV4IDUzMjE1Nzg5NDYuLmZm NTQ2NzcwMjcgMTAwNjQ0CistLS0gYS9zcmMvU3lzdGVtLk5ldC5IdHRwTGlzdGVuZXIvc3JjL1N5 c3RlbS9OZXQvV2ViU29ja2V0cy9IdHRwTGlzdGVuZXJXZWJTb2NrZXRDb250ZXh0LmNzCisrKysg Yi9zcmMvU3lzdGVtLk5ldC5IdHRwTGlzdGVuZXIvc3JjL1N5c3RlbS9OZXQvV2ViU29ja2V0cy9I dHRwTGlzdGVuZXJXZWJTb2NrZXRDb250ZXh0LmNzCitAQCAtOTQsOCArOTQsOSBAQCBuYW1lc3Bh Y2UgU3lzdGVtLk5ldC5XZWJTb2NrZXRzCisgICAgICAgICAgICAgICAgIGlmICghKHVzZXIgaXMg V2luZG93c1ByaW5jaXBhbCkpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgIC8vIEF1dGhlbnRpY2F0aW9uU2NoZW1lcy5CYXNpYy4KKy0gICAgICAgICAgICAgICAgICAg IGlmICh1c2VyLklkZW50aXR5IGlzIEh0dHBMaXN0ZW5lckJhc2ljSWRlbnRpdHkgYmFzaWNJZGVu dGl0eSkKKysgICAgICAgICAgICAgICAgICAgIGlmICh1c2VyLklkZW50aXR5IGlzIEh0dHBMaXN0 ZW5lckJhc2ljSWRlbnRpdHkpCisgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAg ICAgICAgICAgICAgSHR0cExpc3RlbmVyQmFzaWNJZGVudGl0eSBiYXNpY0lkZW50aXR5ID0gKEh0 dHBMaXN0ZW5lckJhc2ljSWRlbnRpdHkpdXNlci5JZGVudGl0eTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNQcmluY2lwYWwobmV3IEh0dHBMaXN0ZW5lckJhc2lj SWRlbnRpdHkoYmFzaWNJZGVudGl0eS5OYW1lLCBiYXNpY0lkZW50aXR5LlBhc3N3b3JkKSwgbnVs bCk7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdp dCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNS40LjAtcGF0Y2hlcy5wYXRjaCBiL2dudS9w YWNrYWdlcy9wYXRjaGVzL21vbm8tNS40LjAtcGF0Y2hlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMDdhNmI4NDdjCi0tLSAvZGV2L251bGwKKysrIGIvZ251 L3BhY2thZ2VzL3BhdGNoZXMvbW9uby01LjQuMC1wYXRjaGVzLnBhdGNoCkBAIC0wLDAgKzEsMTAw IEBACitkaWZmIC0tZ2l0IGEvbWNzL2NsYXNzL1N5c3RlbS9Nb25vLk5ldC5TZWN1cml0eS9Bc3lu Y1Byb3RvY29sUmVxdWVzdC5jcyBiL21jcy9jbGFzcy9TeXN0ZW0vTW9uby5OZXQuU2VjdXJpdHkv QXN5bmNQcm90b2NvbFJlcXVlc3QuY3MKK2luZGV4IDNjNTM3YTdlNDI3Li41OWJlYjE5MjU1ZiAx MDA2NDQKKy0tLSBhL21jcy9jbGFzcy9TeXN0ZW0vTW9uby5OZXQuU2VjdXJpdHkvQXN5bmNQcm90 b2NvbFJlcXVlc3QuY3MKKysrKyBiL21jcy9jbGFzcy9TeXN0ZW0vTW9uby5OZXQuU2VjdXJpdHkv QXN5bmNQcm90b2NvbFJlcXVlc3QuY3MKK0BAIC0zMTYsNyArMzE2LDkgQEAgbmFtZXNwYWNlIE1v bm8uTmV0LlNlY3VyaXR5CisgCQl7CisgCQkJRGVidWcgKCJQcm9jZXNzUmVhZCAtIHJlYWQgdXNl cjogezB9IHsxfSIsIHRoaXMsIHN0YXR1cyk7CisgCistCQkJdmFyIChyZXQsIHdhbnRNb3JlKSA9 IFBhcmVudC5Qcm9jZXNzUmVhZCAoVXNlckJ1ZmZlcik7CisrICAgICAgICAgICAgU3lzdGVtLlZh bHVlVHVwbGU8aW50LCBib29sPiB0MCA9IFBhcmVudC5Qcm9jZXNzUmVhZCAoVXNlckJ1ZmZlcik7 CisrICAgICAgICAgICAgdmFyIHJldCA9IHQwLkl0ZW0xOworKyAgICAgICAgICAgIHZhciB3YW50 TW9yZSA9IHQwLkl0ZW0yOworIAorIAkJCURlYnVnICgiUHJvY2Vzc1JlYWQgLSByZWFkIHVzZXIg ZG9uZTogezB9IC0gezF9IHsyfSIsIHRoaXMsIHJldCwgd2FudE1vcmUpOworIAorQEAgLTM1NSw3 ICszNTcsOSBAQCBuYW1lc3BhY2UgTW9uby5OZXQuU2VjdXJpdHkKKyAJCQkJcmV0dXJuIEFzeW5j T3BlcmF0aW9uU3RhdHVzLkNvbXBsZXRlOworIAkJCX0KKyAKKy0JCQl2YXIgKHJldCwgd2FudE1v cmUpID0gUGFyZW50LlByb2Nlc3NXcml0ZSAoVXNlckJ1ZmZlcik7CisrICAgICAgICAgICAgU3lz dGVtLlZhbHVlVHVwbGU8aW50LCBib29sPiB0MCA9IFBhcmVudC5Qcm9jZXNzV3JpdGUgKFVzZXJC dWZmZXIpOworKyAgICAgICAgICAgIHZhciByZXQgPSB0MC5JdGVtMTsKKysgICAgICAgICAgICB2 YXIgd2FudE1vcmUgPSB0MC5JdGVtMjsKKyAKKyAJCQlEZWJ1ZyAoIlByb2Nlc3NXcml0ZSAtIHdy aXRlIHVzZXIgZG9uZTogezB9IC0gezF9IHsyfSIsIHRoaXMsIHJldCwgd2FudE1vcmUpOworIAor ZGlmZiAtLWdpdCBhL21jcy9jbGFzcy9TeXN0ZW0vTW9uby5OZXQuU2VjdXJpdHkvTW9iaWxlQXV0 aGVudGljYXRlZFN0cmVhbS5jcyBiL21jcy9jbGFzcy9TeXN0ZW0vTW9uby5OZXQuU2VjdXJpdHkv TW9iaWxlQXV0aGVudGljYXRlZFN0cmVhbS5jcworaW5kZXggMmIzODBhMWFlNmMuLjY2ZTQ1YmMx ZjFkIDEwMDY0NAorLS0tIGEvbWNzL2NsYXNzL1N5c3RlbS9Nb25vLk5ldC5TZWN1cml0eS9Nb2Jp bGVBdXRoZW50aWNhdGVkU3RyZWFtLmNzCisrKysgYi9tY3MvY2xhc3MvU3lzdGVtL01vbm8uTmV0 LlNlY3VyaXR5L01vYmlsZUF1dGhlbnRpY2F0ZWRTdHJlYW0uY3MKK0BAIC00MDMsOCArNDAzLDEw IEBAIG5hbWVzcGFjZSBNb25vLk5ldC5TZWN1cml0eQorIAkJCQkgICAgICAgYXN5bmNSZWFkUmVx dWVzdCAhPSBudWxsID8gImFzeW5jIiA6ICIiLAorIAkJCQkgICAgICAgcmVhZEJ1ZmZlciAhPSBu dWxsID8gcmVhZEJ1ZmZlci5Ub1N0cmluZyAoKSA6ICIiKTsKKyAJCQkJdmFyIGFzeW5jUmVxdWVz dCA9IGFzeW5jSGFuZHNoYWtlUmVxdWVzdCA/PyBhc3luY1JlYWRSZXF1ZXN0OworLQkJCQl2YXIg KHJldCwgd2FudE1vcmUpID0gSW50ZXJuYWxSZWFkIChhc3luY1JlcXVlc3QsIHJlYWRCdWZmZXIs IGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKKy0JCQkJb3V0V2FudE1vcmUgPSB3YW50TW9yZTsKKysg ICAgICAgICAgICAgICAgU3lzdGVtLlZhbHVlVHVwbGU8aW50LCBib29sPiB0MCA9IEludGVybmFs UmVhZCAoYXN5bmNSZXF1ZXN0LCByZWFkQnVmZmVyLCBidWZmZXIsIG9mZnNldCwgc2l6ZSk7Cisr ICAgICAgICAgICAgICAgIHZhciByZXQgPSB0MC5JdGVtMTsKKysgICAgICAgICAgICAgICAgdmFy IHdhbnRNb3JlID0gdDAuSXRlbTI7CisrICAgICAgICAgICAgICAgIG91dFdhbnRNb3JlID0gd2Fu dE1vcmU7CisgCQkJCXJldHVybiByZXQ7CisgCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7Cisg CQkJCURlYnVnICgiSW50ZXJuYWxSZWFkIGZhaWxlZDogezB9IiwgZXgpOworQEAgLTQxNCw3ICs0 MTYsNyBAQCBuYW1lc3BhY2UgTW9uby5OZXQuU2VjdXJpdHkKKyAJCQl9CisgCQl9CisgCistCQko aW50LCBib29sKSBJbnRlcm5hbFJlYWQgKEFzeW5jUHJvdG9jb2xSZXF1ZXN0IGFzeW5jUmVxdWVz dCwgQnVmZmVyT2Zmc2V0U2l6ZSBpbnRlcm5hbEJ1ZmZlciwgYnl0ZVtdIGJ1ZmZlciwgaW50IG9m ZnNldCwgaW50IHNpemUpCisrCQlTeXN0ZW0uVmFsdWVUdXBsZTxpbnQsIGJvb2w+IEludGVybmFs UmVhZCAoQXN5bmNQcm90b2NvbFJlcXVlc3QgYXN5bmNSZXF1ZXN0LCBCdWZmZXJPZmZzZXRTaXpl IGludGVybmFsQnVmZmVyLCBieXRlW10gYnVmZmVyLCBpbnQgb2Zmc2V0LCBpbnQgc2l6ZSkKKyAJ CXsKKyAJCQlpZiAoYXN5bmNSZXF1ZXN0ID09IG51bGwpCisgCQkJCXRocm93IG5ldyBJbnZhbGlk T3BlcmF0aW9uRXhjZXB0aW9uICgpOworQEAgLTQzNiw3ICs0MzgsNyBAQCBuYW1lc3BhY2UgTW9u by5OZXQuU2VjdXJpdHkKKyAJCQkJRGVidWcgKCJJbnRlcm5hbFJlYWQgIzE6IHswfSB7MX0gezJ9 IiwgaW50ZXJuYWxCdWZmZXIuT2Zmc2V0LCBpbnRlcm5hbEJ1ZmZlci5Ub3RhbEJ5dGVzLCBzaXpl KTsKKyAJCQkJaW50ZXJuYWxCdWZmZXIuT2Zmc2V0ID0gaW50ZXJuYWxCdWZmZXIuU2l6ZSA9IDA7 CisgCQkJCWFzeW5jUmVxdWVzdC5SZXF1ZXN0UmVhZCAoc2l6ZSk7CistCQkJCXJldHVybiAoMCwg dHJ1ZSk7CisrCQkJCXJldHVybiBuZXcgVmFsdWVUdXBsZTxpbnQsIGJvb2w+KDAsIHRydWUpOwor IAkJCX0KKyAKKyAJCQkvKgorQEAgLTQ1MSw3ICs0NTMsNyBAQCBuYW1lc3BhY2UgTW9uby5OZXQu U2VjdXJpdHkKKyAJCQlCdWZmZXIuQmxvY2tDb3B5IChpbnRlcm5hbEJ1ZmZlci5CdWZmZXIsIGlu dGVybmFsQnVmZmVyLk9mZnNldCwgYnVmZmVyLCBvZmZzZXQsIGxlbik7CisgCQkJaW50ZXJuYWxC dWZmZXIuT2Zmc2V0ICs9IGxlbjsKKyAJCQlpbnRlcm5hbEJ1ZmZlci5TaXplIC09IGxlbjsKKy0J CQlyZXR1cm4gKGxlbiwgIWludGVybmFsQnVmZmVyLkNvbXBsZXRlICYmIGxlbiA8IHNpemUpOwor KwkJCXJldHVybiBuZXcgVmFsdWVUdXBsZTxpbnQsIGJvb2w+KGxlbiwgIWludGVybmFsQnVmZmVy LkNvbXBsZXRlICYmIGxlbiA8IHNpemUpOworIAkJfQorIAorIAkJLyoKK0BAIC02MjAsMjEgKzYy MiwyMyBAQCBuYW1lc3BhY2UgTW9uby5OZXQuU2VjdXJpdHkKKyAJCQl9CisgCQl9CisgCistCQlp bnRlcm5hbCAoaW50LCBib29sKSBQcm9jZXNzUmVhZCAoQnVmZmVyT2Zmc2V0U2l6ZSB1c2VyQnVm ZmVyKQorKwkJaW50ZXJuYWwgU3lzdGVtLlZhbHVlVHVwbGU8aW50LCBib29sPiBQcm9jZXNzUmVh ZCAoQnVmZmVyT2Zmc2V0U2l6ZSB1c2VyQnVmZmVyKQorIAkJeworIAkJCWxvY2sgKGlvTG9jaykg eworIAkJCQkvLyBUaGlzIG9wZXJhdGVzIG9uIHRoZSBpbnRlcm5hbCBidWZmZXIgYW5kIHdpbGwg bmV2ZXIgYmxvY2suCistCQkJCXZhciByZXQgPSB4b2JpbGVUbHNDb250ZXh0LlJlYWQgKHVzZXJC dWZmZXIuQnVmZmVyLCB1c2VyQnVmZmVyLk9mZnNldCwgdXNlckJ1ZmZlci5TaXplLCBvdXQgYm9v bCB3YW50TW9yZSk7CistCQkJCXJldHVybiAocmV0LCB3YW50TW9yZSk7CisrICAgICAgICAgICAg ICAgIGJvb2wgd2FudE1vcmU7CisrCQkJCXZhciByZXQgPSB4b2JpbGVUbHNDb250ZXh0LlJlYWQg KHVzZXJCdWZmZXIuQnVmZmVyLCB1c2VyQnVmZmVyLk9mZnNldCwgdXNlckJ1ZmZlci5TaXplLCBv dXQgd2FudE1vcmUpOworKwkJCQlyZXR1cm4gbmV3IFN5c3RlbS5WYWx1ZVR1cGxlPGludCwgYm9v bD4ocmV0LCB3YW50TW9yZSk7CisgCQkJfQorIAkJfQorIAorLQkJaW50ZXJuYWwgKGludCwgYm9v bCkgUHJvY2Vzc1dyaXRlIChCdWZmZXJPZmZzZXRTaXplIHVzZXJCdWZmZXIpCisrCQlpbnRlcm5h bCBTeXN0ZW0uVmFsdWVUdXBsZTxpbnQsIGJvb2w+IFByb2Nlc3NXcml0ZSAoQnVmZmVyT2Zmc2V0 U2l6ZSB1c2VyQnVmZmVyKQorIAkJeworIAkJCWxvY2sgKGlvTG9jaykgeworIAkJCQkvLyBUaGlz IG9wZXJhdGVzIG9uIHRoZSBpbnRlcm5hbCBidWZmZXIgYW5kIHdpbGwgbmV2ZXIgYmxvY2suCist CQkJCXZhciByZXQgPSB4b2JpbGVUbHNDb250ZXh0LldyaXRlICh1c2VyQnVmZmVyLkJ1ZmZlciwg dXNlckJ1ZmZlci5PZmZzZXQsIHVzZXJCdWZmZXIuU2l6ZSwgb3V0IGJvb2wgd2FudE1vcmUpOwor LQkJCQlyZXR1cm4gKHJldCwgd2FudE1vcmUpOworKyAgICAgICAgICAgICAgICBib29sIHdhbnRN b3JlOworKwkJCQl2YXIgcmV0ID0geG9iaWxlVGxzQ29udGV4dC5Xcml0ZSAodXNlckJ1ZmZlci5C dWZmZXIsIHVzZXJCdWZmZXIuT2Zmc2V0LCB1c2VyQnVmZmVyLlNpemUsIG91dCB3YW50TW9yZSk7 CisrCQkJCXJldHVybiBuZXcgU3lzdGVtLlZhbHVlVHVwbGU8aW50LCBib29sPihyZXQsIHdhbnRN b3JlKTsKKyAJCQl9CisgCQl9CisgCi0tIAoyLjQ1LjIKCg== --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0016-gnu-Add-mono-pre-5.8.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0016-gnu-Add-mono-pre-5.8.0.patch RnJvbSAwNDlmN2FiMjM2YmNiYWIwYjA2NzQxOGY0YjVkZTY2MmJjM2E1ODY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8MDQ5ZjdhYjIzNmJjYmFiMGIwNjc0MThmNGI1ZGU2 NjJiYzNhNTg2OS4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFR1ZSwgMjYgTm92IDIwMjQgMTM6 NDI6MzkKU3ViamVjdDogW1BBVENIIDE2LzIxXSBnbnU6IEFkZCBtb25vLXByZS01LjguMC4KCiog Z251L3BhY2thZ2VzL2RvdG5ldC5zY20KICAobW9uby1wcmUtNS44LjAtZXh0ZXJuYWwtcmVwby1z cGVjcywgbW9uby1wcmUtNS44LjApOiBOZXcgdmFyaWFibGUuCiogZ251L3BhY2thZ2VzL3BhdGNo ZXMvY29yZWZ4LW1vbm8tcHJlLTUuOC4wLXBhdGNoZXMucGF0Y2g6IE5ldyBwYXRjaC4KKiBnbnUv bG9jYWwubWsgKGRpc3RfcGF0Y2hfREFUQSk6IFJlZ2lzdGVyIG5ldyBwYXRjaC4KCkNoYW5nZS1J ZDogSWQ1NzNiMDUxZTAxOTgwODY3YTA3MDMyZjMzOWZkYjI4MjliMmE0MTMKLS0tCiBnbnUvbG9j YWwubWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGdudS9wYWNr YWdlcy9kb3RuZXQuc2NtICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzkgKwogLi4uL2NvcmVm eC1tb25vLXByZS01LjguMC1wYXRjaGVzLnBhdGNoICAgICAgIHwgMTM0OSArKysrKysrKysrKysr KysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxNDI5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9jb3JlZngtbW9uby1wcmUtNS44LjAtcGF0Y2hlcy5w YXRjaAoKZGlmZiAtLWdpdCBhL2dudS9sb2NhbC5tayBiL2dudS9sb2NhbC5tawppbmRleCA5NTQ3 YmVjZGVjLi43NTQxZGIwNGU1IDEwMDY0NAotLS0gYS9nbnUvbG9jYWwubWsKKysrIGIvZ251L2xv Y2FsLm1rCkBAIC0xMDk0LDYgKzEwOTQsNyBAQCBkaXN0X3BhdGNoX0RBVEEgPQkJCQkJCVwKICAg JUQlL3BhY2thZ2VzL3BhdGNoZXMvY29vbC1yZXRyby10ZXJtLXdjdHlwZS5wYXRjaAkJXAogICAl RCUvcGFja2FnZXMvcGF0Y2hlcy9jb3EtYXV0b3N1YnN0LTEuOC1yZW1vdmUtZGVwcmVjYXRlZC1m aWxlcy5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9jb3JlZngtbW9uby01LjQuMC1w YXRjaGVzLnBhdGNoCQlcCisgICVEJS9wYWNrYWdlcy9wYXRjaGVzL2NvcmVmeC1tb25vLXByZS01 LjguMC1wYXRjaGVzLnBhdGNoCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvY29yZXV0aWxzLWdu dWxpYi10ZXN0cy5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9jcHBjaGVjay1kaXNh YmxlLWNoYXItc2lnbmVkbmVzcy10ZXN0LnBhdGNoCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMv Y3BwZGFwLWFkZC1DUFBEQVBfVVNFX0VYVEVSTkFMX0dURVNUX1BBQ0tBR0UucGF0Y2hcCmRpZmYg LS1naXQgYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbSBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2Nt CmluZGV4IDkzNTcyYTA4MTIuLjkwZTFmMjBjOGUgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9k b3RuZXQuc2NtCisrKyBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCkBAIC0xMTk3LDMgKzExOTcs ODIgQEAgKGRlZmluZS1wdWJsaWMgbW9uby01LjQuMAogICAgICAgICAgICAgICAgICJtb25vLTUu NC4wLXBhdGNoZXMucGF0Y2giKSkpKQogICAgIChuYXRpdmUtaW5wdXRzIChtb2RpZnktaW5wdXRz IChwYWNrYWdlLW5hdGl2ZS1pbnB1dHMgbW9uby01LjIuMCkKICAgICAgICAgICAgICAgICAgICAg IChyZXBsYWNlICJtb25vIiBtb25vLTUuMi4wKSkpKSkKKworKGRlZmluZSBtb25vLXByZS01Ljgu MC1leHRlcm5hbC1yZXBvLXNwZWNzCisgICcoKCJhcGktZG9jLXRvb2xzIiAgICAgICAgICAgICAg ICJkMDNlODE5ODM4YzYyNDFmOTJmOTA2NTVjYjQ0OGNjNDdjOWU4NzkxIgorICAgICAiMXJpa2k3 OWYzaWczY3hpZ3Zpc3M4MWR6NjAxaG45MmExZ2lmZ2xtMG16amJzNzZzZjNmaiIKKyAgICAgIzpy ZWN1cnNpdmU/ICN0KQorICAgICgiYXBpLXNuYXBzaG90IiAgICAgICAgICAgICAgICAiZTc5MGE5 Yjc3MDMxZWYxZDhlYmYwOTNlZjg4ODQwZWRlYTExZWQ3MyIKKyAgICAgIjFjNG5wMmZxZDltcGMx aTF4OGJzeG55cGFjcDU4dmt2Z2R3cG5tdm1seWpkdmJqNWF4NnEiKQorICAgICgiYXNwbmV0d2Vi c3RhY2siICAgICAgICAgICAgICAiZTc3YjEyZTZjYzVlZDI2MGE5ODQ0N2Y2MDllODg3MzM3ZTQ0 ZTI5OSIKKyAgICAgIjBya3MzNDRxcjRmbXAzZnMxMjY0ZDJxa21tMzQ4bThkMWtqZDd6NGw5NGlp aXJ3bjFmcTEiKQorICAgICgoInJlZmVyZW5jZS1hc3NlbWJsaWVzIiAiYmluYXJ5LXJlZmVyZW5j ZS1hc3NlbWJsaWVzIikKKyAgICAgIjE0MmNiZWI2MmZmYWJmMWRkOWMxNDE0ZDhkZDc2ZjkzYmNi ZWQwYzIiCisgICAgICIxd2tkNTg5aGdiMTZtNXp2bXA5eWI1N2FneXlyeWFhMWpqOHZobDR3MjBp MmhwMjJ3YWQ5IikKKyAgICAoImJvY2tidWlsZCIgICAgICAgICAgICAgICAgICAgImI0NDUwMTcz MDlhYWM3NDFhMjZkOGM1MWJiMDYzNjIzNDA4NGJmMjMiCisgICAgICIxanpodmF2ZDFqMG43c3kx d2FjemdqdjBrbXJicjM1Z2t6ZDc2ZmhsbXF2c3kwc3I5Njk1IikKKyAgICAoImJvcmluZ3NzbCIg ICAgICAgICAgICAgICAgICAgIjNlMDc3MGUxODgzNTcxNDcwODg2MGJhOWZlMWFmMDRhOTMyOTcx ZmYiCisgICAgICIxMzlhMGdsOTFhNTJrMnI2bmE2aWFsemtxeWthajFyazg4empya2F6M3NkeHg3 bm1tZzZ5IikKKyAgICAoImNlY2lsIiAgICAgICAgICAgICAgICAgICAgICAgImM3NmJhN2I0MTA0 NDdmYTM3MDkzMTUwY2I3YmM3NzJjYmEyOGEwYWUiCisgICAgICIweWRpN3JuOGFqcXl2bmo5YWd5 bjc0bGxiNHFnZDlrZ2RjZzNnYWpkZnliMmtseHg2emE4IikKKyAgICAoKCJjZWNpbCIgImNlY2ls LWxlZ2FjeSIpICAgICAgIjMzZDUwYjg3NGZkNTI3MTE4YmMzNjFkODNkZTNkNDk0ZThiYjU1ZTEi CisgICAgICIxcDRobDE3OTZpYjI2eWt5ZjVzbmw2Y2owbHgwdjdtamgweHFoanc2cWRoNzUzbnNq eWhiIikKKyAgICAoImNvcmVmeCIgICAgICAgICAgICAgICAgICAgICAgIjc0Y2NkOGFhMDBkN2Qy NzExOTFjYTNiOWM0ZjgxODI2OGRjMzZjMjgiCisgICAgICIwbm00MXFkcHZqNjJyOGJ4bmY5Mm03 a2ltam0xaTU0NHlnZHF6NWE3cGdjNnpmOTlhczZqIgorICAgICAjOnBhdGNoZXMgKCJjb3JlZngt bW9uby1wcmUtNS44LjAtcGF0Y2hlcy5wYXRjaCIpKQorICAgICgiY29yZXJ0IiAgICAgICAgICAg ICAgICAgICAgICAiNDhkYmE3MzgwMWU4MDRlODlmMDAzMTFkYTk5ZDg3M2Y5YzU1MDI3OCIKKyAg ICAgIjF6dzQ3amY0Y3dxbWFpeHlsaXN4aTczeGY2Y2FwNDFid2Y5dmxtcHhhbnp4YXFrbHpzdmsi KQorICAgICgiaWtkYXNtIiAgICAgICAgICAgICAgICAgICAgICAiM2FlZjljZGQ2MDEzZmMwNjIw YTE4MTdmMGIxMWQ4ZmI5MGVkMmUwZiIKKyAgICAgIjA3OGNhaTMzeDhjNzE5Njlpd2k3aG1icWRm d3BpY3BtYW0yYWczazJia2xwdmEydm5zenYiKQorICAgICgoImlrdm0tZm9yayIgImlrdm0iKSAg ICAgICAgICAiODQ3ZTA1ZmNlZDVjOWE0MWZmMGYyNGYxZjlkNDBkNWE4YTU3NzJjMSIKKyAgICAg IjFmbDlibTNsbXpmOGlxdjN4NGlxa3o5ZmM1NG13ZHZyeGlzeGcybnZ3d2NzaTRzYWZmcGkiKQor ICAgICgibGlua2VyIiAgICAgICAgICAgICAgICAgICAgICAiMjFlNDQ1YzI2YzY5YWMzYTJlMTQ0 MWJlZmEwMmQwYmQxMDVmZjg0OSIKKyAgICAgIjFoeDNpazBzZzcweXNjMnk4amRqeG0ybGpxbDAw NjlpMDVpOGZwMWxha3g3czd6N2J5d2MiKQorICAgICgiTmV3dG9uc29mdC5Kc29uIiAgICAgICAg ICAgICAiNDcxYzNlMDgwM2E5ZjQwYTBhY2M4YWVjZWIzMWRlNmZmOTNhNTJjNCIKKyAgICAgIjBk Z25nZDVocWs2eWhsZzQwa2FibjZxZG5rbm0zMnpjeDlxNmJtMnczMWNzbnNrNTk3OHMiKQorICAg ICgoIk51R2V0LkJ1aWxkVGFza3MiICJudWdldC1idWlsZHRhc2tzIikKKyAgICAgIjhkMzA3NDcy ZWEyMTRmMmI1OTYzNjQzMWY3NzE4OTRkYmNiYTcyNTgiCisgICAgICIxaDFmcm5qMHg4azdiMjlp YzRqaXNjaDB2bHBtc21naGp3NTU0cHoyNzdmMm54YWlkbGpqIikKKyAgICAoKCJOVW5pdExpdGUi ICJudW5pdC1saXRlIikgICAgIjY5MDYwM2JlYTk4YWFlNjlmY2E5YTY1MTMwZDg4NTkxYmM2Y2Fi ZWUiCisgICAgICIxZjg0NXlzanpzM3lkOWdjeXd3NjZkbmt4NDg0ejVma25iOGwweHo3NHNqbXhr Mm1uZ3djIikKKyAgICA7OyAoInJvc2x5bi1iaW5hcmllcyIgICAgICAgICAgIjgwYjg2ZjM0MGI3 ZjZmYjdhZmU4NDQ0MzIxNGUxY2JkN2ZmNzA2MjAiCisgICAgOzsgICIiKQorICAgICgicngiICAg ICAgICAgICAgICAgICAgICAgICAgICAiYjI5YTRiMGZkYTYwOWUwYWYzM2ZmNTRlZDEzNjUyYjZj Y2YwZTA1ZSIKKyAgICAgIjFuMWp3aG1zYmtjdjJkODA2aW1tY3B6a2I3MnJ6MDR4eTk4bXl3MzU1 YTh3NWFoMjV5aXYiKQorICAgIDs7ICgieHVuaXQtYmluYXJpZXMiICAgICAgICAgICAiZDQ0MzNi MDk3MmY0MGNiM2VmYWEzZmJiYTUyODY5YmRlNWRmOGZhOCIKKyAgICA7OyAgIiIpCisgICAgKSkK KworKGRlZmluZS1wdWJsaWMgbW9uby1wcmUtNS44LjAKKyAgKGxldCAoKGNvbW1pdCAiZDBmNTFi NGU4MzQwNDJjZmE1OTM3NDhhZGE5NDIwMzNiNDU4Y2M0MCIpCisgICAgICAgICh2ZXJzaW9uICI1 LjQuMC4yMDEiKQorICAgICAgICAocmV2aXNpb24gIjAiKSkKKyAgICAocGFja2FnZQorICAgICAg KGluaGVyaXQgbW9uby01LjQuMCkKKyAgICAgICh2ZXJzaW9uIChnaXQtdmVyc2lvbiB2ZXJzaW9u IHJldmlzaW9uIGNvbW1pdCkpCisgICAgICAobmFtZSAibW9ubyIpCisgICAgICAoc291cmNlIChv cmlnaW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAg ICAodXJpCisgICAgICAgICAgICAgICAgIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAg ICAodXJsICJodHRwczovL2dpdGxhYi53aW5laHEub3JnL21vbm8vbW9uby5naXQiKQorICAgICAg ICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpKSkKKyAgICAgICAgICAgICAgICAoZmlsZS1uYW1l IChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lvbikpCisgICAgICAgICAgICAgICAgKHNoYTI1Ngor ICAgICAgICAgICAgICAgICAoYmFzZTMyCisgICAgICAgICAgICAgICAgICAiMGF6NXN5azFubjln ZDVpbWtibXBiMTNxbTlxNmlicjJkMmtzZHpwd3NhcmtmeXA0aWM1MyIpKQorICAgICAgICAgICAg ICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQgdXRpbHMpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAoaWNlLTkgc3RyaW5nLWZ1bikpKQorICAgICAgICAgICAgICAgIChzbmlwcGV0ICN+KGJl Z2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMkKGFkZC1leHRlcm5hbC1yZXBvcwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25vLXByZS01LjguMC1leHRlcm5hbC1y ZXBvLXNwZWNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjJEBwcmVwYXJlLW1vbm8t c291cmNlLTApKQorICAgICAgICAgICAgICAgIChwYXRjaGVzCisgICAgICAgICAgICAgICAgIChz ZWFyY2gtcGF0Y2hlcyAibW9uby01LjQuMC1wYXRjaGVzLnBhdGNoIikpKSkKKyAgICAgIChuYXRp dmUtaW5wdXRzIChtb2RpZnktaW5wdXRzIChwYWNrYWdlLW5hdGl2ZS1pbnB1dHMgbW9uby01LjQu MCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UgIm1vbm8iIG1vbm8tNS40LjApKSkK KyAgICAgIChhcmd1bWVudHMKKyAgICAgICAoc3Vic3RpdHV0ZS1rZXl3b3JkLWFyZ3VtZW50cyAo cGFja2FnZS1hcmd1bWVudHMgbW9uby01LjQuMCkKKyAgICAgICAgICgoIzpwaGFzZXMgcGhhc2Vz ICN+JXN0YW5kYXJkLXBoYXNlcykKKyAgICAgICAgICAjfihtb2RpZnktcGhhc2VzICMkcGhhc2Vz CisgICAgICAgICAgICAgIChkZWxldGUgJ3BhdGNoLXN1Yi1hdXRvZ2VuLnNoLXNoZWJhbmcpKSkp KSkpKQpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMvY29yZWZ4LW1vbm8tcHJlLTUu OC4wLXBhdGNoZXMucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9jb3JlZngtbW9uby1wcmUt NS44LjAtcGF0Y2hlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li4wNGRjYzZjNWE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvY29y ZWZ4LW1vbm8tcHJlLTUuOC4wLXBhdGNoZXMucGF0Y2gKQEAgLTAsMCArMSwxMzQ5IEBACitkaWZm IC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGlt ZUJpbmRlci9FeHByZXNzaW9uVHJlZUNhbGxSZXdyaXRlci5jcyBiL3NyYy9NaWNyb3NvZnQuQ1No YXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvRXhwcmVzc2lvblRyZWVDYWxs UmV3cml0ZXIuY3MKK2luZGV4IGFhOGFmYTVhMWIuLjNhMjUxODI0NmEgMTAwNjQ0CistLS0gYS9z cmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL0V4 cHJlc3Npb25UcmVlQ2FsbFJld3JpdGVyLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9z cmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL0V4cHJlc3Npb25UcmVlQ2FsbFJld3Jp dGVyLmNzCitAQCAtMjQ2LDggKzI0Niw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1 bnRpbWVCaW5kZXIKKyAgICAgICAgICAgICBFeHByQXJyYXlJbml0IGFycmluaXQ7CisgCisgICAg ICAgICAgICAgRXhwckxpc3QgbGlzdCA9IChFeHByTGlzdClwRXhwci5PcHRpb25hbEFyZ3VtZW50 czsKKy0gICAgICAgICAgICBpZiAobGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZSBpcyBFeHByTGlz dCBuZXh0KQorKyAgICAgICAgICAgIGlmIChsaXN0Lk9wdGlvbmFsTmV4dExpc3ROb2RlIGlzIEV4 cHJMaXN0KQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwckxpc3QgbmV4dCA9 IChFeHByTGlzdClsaXN0Lk9wdGlvbmFsTmV4dExpc3ROb2RlOworICAgICAgICAgICAgICAgICBt ZXRoaW5mbyA9IChFeHByTWV0aG9kSW5mbyluZXh0Lk9wdGlvbmFsRWxlbWVudDsKKyAgICAgICAg ICAgICAgICAgYXJyaW5pdCA9IChFeHByQXJyYXlJbml0KW5leHQuT3B0aW9uYWxOZXh0TGlzdE5v ZGU7CisgICAgICAgICAgICAgfQorQEAgLTM4Miw4ICszODMsOSBAQCBuYW1lc3BhY2UgTWljcm9z b2Z0LkNTaGFycC5SdW50aW1lQmluZGVyCisgICAgICAgICAgICAgRXhwciBuZXh0Tm9kZSA9IGxp c3QuT3B0aW9uYWxOZXh0TGlzdE5vZGU7CisgICAgICAgICAgICAgRXhwclByb3BlcnR5SW5mbyBw cm9waW5mbzsKKyAgICAgICAgICAgICBFeHByQXJyYXlJbml0IGFyZ3VtZW50czsKKy0gICAgICAg ICAgICBpZiAobmV4dE5vZGUgaXMgRXhwckxpc3QgbmV4dExpc3QpCisrICAgICAgICAgICAgaWYg KG5leHROb2RlIGlzIEV4cHJMaXN0KQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg RXhwckxpc3QgbmV4dExpc3QgPSAoRXhwckxpc3QpbGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZTsK KyAgICAgICAgICAgICAgICAgcHJvcGluZm8gPSBuZXh0TGlzdC5PcHRpb25hbEVsZW1lbnQgYXMg RXhwclByb3BlcnR5SW5mbzsKKyAgICAgICAgICAgICAgICAgYXJndW1lbnRzID0gbmV4dExpc3Qu T3B0aW9uYWxOZXh0TGlzdE5vZGUgYXMgRXhwckFycmF5SW5pdDsKKyAgICAgICAgICAgICB9CitA QCAtNTUzLDggKzU1NSw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5k ZXIKKyAgICAgICAgICAgICBsaXN0ID0gKEV4cHJMaXN0KWxpc3QuT3B0aW9uYWxOZXh0TGlzdE5v ZGU7CisgICAgICAgICAgICAgTWV0aG9kSW5mbyBtZXRob2RJbmZvOworICAgICAgICAgICAgIGJv b2wgYklzTGlmdGVkID0gZmFsc2U7CistICAgICAgICAgICAgaWYgKGxpc3QuT3B0aW9uYWxOZXh0 TGlzdE5vZGUgaXMgRXhwckxpc3QgbmV4dCkKKysgICAgICAgICAgICBpZiAobGlzdC5PcHRpb25h bE5leHRMaXN0Tm9kZSBpcyBFeHByTGlzdCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAg ICAgIEV4cHJMaXN0IG5leHQgPSAoRXhwckxpc3QpbGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZTsK KyAgICAgICAgICAgICAgICAgRXhwckNvbnN0YW50IGlzTGlmdGVkID0gKEV4cHJDb25zdGFudClu ZXh0Lk9wdGlvbmFsRWxlbWVudDsKKyAgICAgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KGlzTGlm dGVkICE9IG51bGwpOworICAgICAgICAgICAgICAgICBiSXNMaWZ0ZWQgPSBpc0xpZnRlZC5WYWwu SW50MzJWYWwgPT0gMTsKK0BAIC02NzcsOCArNjgwLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5D U2hhcnAuUnVudGltZUJpbmRlcgorIAorICAgICAgICAgcHJpdmF0ZSBFeHByZXNzaW9uIEdldEV4 cHJlc3Npb24oRXhwciBwRXhwcikKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBpZiAocEV4cHIg aXMgRXhwcldyYXAgd3JhcCkKKysgICAgICAgICAgICBpZiAocEV4cHIgaXMgRXhwcldyYXApCisg ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBFeHByV3JhcCB3cmFwID0gKEV4cHJXcmFw KSBwRXhwcjsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIF9EaWN0aW9uYXJ5T2ZQYXJhbWV0ZXJz WyhFeHByQ2FsbCl3cmFwLk9wdGlvbmFsRXhwcmVzc2lvbl07CisgICAgICAgICAgICAgfQorICAg ICAgICAgICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4cHJDb25zdGFudCkKK0BAIC04NzUsMjAgKzg3 OSwyNCBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyCisgICAgICAg ICB7CisgICAgICAgICAgICAgZm9yICg7OykKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAg ICAgIGlmIChwRXhwciBpcyBFeHByQ2FzdCBjYXN0KQorKyAgICAgICAgICAgICAgICBpZiAocEV4 cHIgaXMgRXhwckNhc3QpCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAg IEV4cHJDYXN0IGNhc3QgPSAoRXhwckNhc3QpIHBFeHByOworICAgICAgICAgICAgICAgICAgICAg cEV4cHIgPSBjYXN0LkFyZ3VtZW50OworICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAg ICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4cHJUeXBlT2YgdHlwZU9mKQorKyAgICAgICAgICAgICAg ICBlbHNlIGlmIChwRXhwciBpcyBFeHByVHlwZU9mKQorICAgICAgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgICAgICBFeHByVHlwZU9mIHR5cGVPZiA9IChFeHByVHlwZU9mKSBwRXhwcjsK KyAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlT2YuU291cmNlVHlwZS5UeXBlLkFzc29j aWF0ZWRTeXN0ZW1UeXBlOworICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGVs c2UgaWYgKHBFeHByIGlzIEV4cHJNZXRob2RJbmZvIG1ldGhvZEluZm8pCisrICAgICAgICAgICAg ICAgIGVsc2UgaWYgKHBFeHByIGlzIEV4cHJNZXRob2RJbmZvKQorICAgICAgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAgICAgICBFeHByTWV0aG9kSW5mbyBtZXRob2RJbmZvID0gKEV4cHJN ZXRob2RJbmZvKSBwRXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHZXRNZXRob2RJ bmZvRnJvbUV4cHIobWV0aG9kSW5mbyk7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAg ICAgICAgZWxzZSBpZiAocEV4cHIgaXMgRXhwckNvbnN0YW50IGNvbnN0YW50KQorKyAgICAgICAg ICAgICAgICBlbHNlIGlmIChwRXhwciBpcyBFeHByQ29uc3RhbnQpCisgICAgICAgICAgICAgICAg IHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJDb25zdGFudCBjb25zdGFudCA9IChFeHByQ29u c3RhbnQpIHBFeHByOworICAgICAgICAgICAgICAgICAgICAgQ29uc3RWYWwgdmFsID0gY29uc3Rh bnQuVmFsOworICAgICAgICAgICAgICAgICAgICAgQ1R5cGUgdW5kZXJseWluZ1R5cGUgPSBwRXhw ci5UeXBlOworICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IG9ianZhbDsKK0BAIC05NTQsOCAr OTYyLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlcgorIAorICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHBFeHByLlR5cGUuaXNFbnVtVHlwZSgpID8gRW51bS5U b09iamVjdChwRXhwci5UeXBlLkFzc29jaWF0ZWRTeXN0ZW1UeXBlLCBvYmp2YWwpIDogb2JqdmFs OworICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBFeHByIGlz IEV4cHJaZXJvSW5pdCB6ZXJvSW5pdCkKKysgICAgICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIg aXMgRXhwclplcm9Jbml0KQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAg ICBFeHByWmVyb0luaXQgemVyb0luaXQgPSAoRXhwclplcm9Jbml0KSBwRXhwcjsKKyAgICAgICAg ICAgICAgICAgICAgIGlmICgocEV4cHIgPSB6ZXJvSW5pdC5PcHRpb25hbEFyZ3VtZW50KSA9PSBu dWxsKQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBBY3RpdmF0b3IuQ3JlYXRlSW5zdGFuY2UoemVyb0luaXQuVHlwZS5Bc3NvY2lhdGVkU3lz dGVtVHlwZSk7CitAQCAtOTgxLDggKzk5MCw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJw LlJ1bnRpbWVCaW5kZXIKKyAgICAgICAgICAgICAgICAgRXhwciBwID0gbGlzdDsKKyAgICAgICAg ICAgICAgICAgd2hpbGUgKGxpc3QgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgeworLSAgICAg ICAgICAgICAgICAgICAgaWYgKGxpc3QgaXMgRXhwckxpc3QgcExpc3QpCisrICAgICAgICAgICAg ICAgICAgICBpZiAobGlzdCBpcyBFeHByTGlzdCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKysg ICAgICAgICAgICAgICAgICAgICAgICBFeHByTGlzdCBwTGlzdCA9IChFeHByTGlzdCkgbGlzdDsK KyAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcExpc3QuT3B0aW9uYWxFbGVtZW50OworICAg ICAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBwTGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZTsK KyAgICAgICAgICAgICAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9zcmMvTWljcm9zb2Z0LkNTaGFy cC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1J1bnRpbWVCaW5kZXIuY3MgYi9z cmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1J1 bnRpbWVCaW5kZXIuY3MKK2luZGV4IGE2MjNiZmMwYmYuLjRhNzQyMTU2YjkgMTAwNjQ0CistLS0g YS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVy L1J1bnRpbWVCaW5kZXIuY3MKKysrKyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3Nv ZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvUnVudGltZUJpbmRlci5jcworQEAgLTE4OSw3ICsxODks OCBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyCisgICAgICAgICAg ICAgTG9jYWxWYXJpYWJsZVN5bWJvbFtdIGxvY2FscyA9IFBvcHVsYXRlTG9jYWxTY29wZShwYXls b2FkLCBwU2NvcGUsIGFyZ3VtZW50cywgcGFyYW1ldGVycyk7CisgCisgICAgICAgICAgICAgLy8g KDEuNSkgLSBDaGVjayB0byBzZWUgaWYgd2UgbmVlZCB0byBkZWZlci4KKy0gICAgICAgICAgICBp ZiAoRGVmZXJCaW5kaW5nKHBheWxvYWQsIGFyZ3VtZW50cywgYXJncywgbG9jYWxzLCBvdXQgRHlu YW1pY01ldGFPYmplY3QgbykpCisrICAgICAgICAgICAgRHluYW1pY01ldGFPYmplY3QgbzsKKysg ICAgICAgICAgICBpZiAoRGVmZXJCaW5kaW5nKHBheWxvYWQsIGFyZ3VtZW50cywgYXJncywgbG9j YWxzLCBvdXQgbykpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBkZWZlcnJlZEJp bmRpbmcgPSBvOworICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKK0BAIC0xMDMwLDggKzEw MzEsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyCisgCisgICAg ICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIENoZWNrRm9yQ29uZGl0aW9uYWxNZXRob2RFcnJvcihF eHByIHBFeHByKQorICAgICAgICAgeworLSAgICAgICAgICAgIGlmIChwRXhwciBpcyBFeHByQ2Fs bCBjYWxsKQorKyAgICAgICAgICAgIGlmIChwRXhwciBpcyBFeHByQ2FsbCkKKyAgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgIEV4cHJDYWxsIGNhbGwgPSAoRXhwckNhbGwpcEV4cHI7Cisg ICAgICAgICAgICAgICAgIC8vIFRoaXMgbWltaWNzIHRoZSBiZWhhdmlvciBvZiB0aGUgbmF0aXZl IENvbXBpbGVyU3ltYm9sTG9hZGVyIGluIEdldENvbmRpdGlvbmFsU3ltYm9scy4gT3ZlcnJpZGUK KyAgICAgICAgICAgICAgICAgLy8gbWV0aG9kcyBjYW5ub3QgaGF2ZSB0aGUgY29uZGl0aW9uYWwg YXR0cmlidXRlLCBidXQgaW1wbGljaXRseSBhY3F1aXJlIGl0IGZyb20gdGhlaXIgc2xvdC4KKyAK K0BAIC0xMDY0LDggKzEwNjYsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1l QmluZGVyCisgICAgICAgICAgICAgRXhwck1lbWJlckdyb3VwIG1lbWdyb3VwOworICAgICAgICAg ICAgIFR5cGVBcnJheSB0eXBlQXJnczsKKyAKKy0gICAgICAgICAgICBpZiAocFJlc3VsdCBpcyBF eHByQ2FsbCBjYWxsKQorKyAgICAgICAgICAgIGlmIChwUmVzdWx0IGlzIEV4cHJDYWxsKQorICAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhwckNhbGwgY2FsbCA9IChFeHByQ2FsbCkg cFJlc3VsdDsKKyAgICAgICAgICAgICAgICAgdHlwZSA9IGNhbGwuTWV0aFdpdGhJbnN0LkF0czsK KyAgICAgICAgICAgICAgICAgbWV0aHByb3AgPSBjYWxsLk1ldGhXaXRoSW5zdC5NZXRoKCk7Cisg ICAgICAgICAgICAgICAgIG1lbWdyb3VwID0gY2FsbC5NZW1iZXJHcm91cDsKK0BAIC0xMTMyLDEy ICsxMTM1LDE1IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIKKyAK KyAgICAgICAgIHByaXZhdGUgRXhwciBTdHJpcE5hbWVkQXJndW1lbnQoRXhwciBwQXJnKQorICAg ICAgICAgeworLSAgICAgICAgICAgIGlmIChwQXJnIGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lm aWNhdGlvbiBuYW1lZCkKKysgICAgICAgICAgICBpZiAocEFyZyBpcyBFeHByTmFtZWRBcmd1bWVu dFNwZWNpZmljYXRpb24pCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBFeHByTmFt ZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQgPQorKyAgICAgICAgICAgICAgICAgICAgKEV4 cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbikgcEFyZzsKKyAgICAgICAgICAgICAgICAgcEFy ZyA9IG5hbWVkLlZhbHVlOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBlbHNlIGlmIChw QXJnIGlzIEV4cHJBcnJheUluaXQgaW5pdCkKKysgICAgICAgICAgICBlbHNlIGlmIChwQXJnIGlz IEV4cHJBcnJheUluaXQpCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBFeHByQXJy YXlJbml0IGluaXQgPSAoRXhwckFycmF5SW5pdCkgcEFyZzsKKyAgICAgICAgICAgICAgICAgaW5p dC5PcHRpb25hbEFyZ3VtZW50cyA9IFN0cmlwTmFtZWRBcmd1bWVudHMoaW5pdC5PcHRpb25hbEFy Z3VtZW50cyk7CisgICAgICAgICAgICAgfQorIAorQEAgLTExNDYsMTQgKzExNTIsMTYgQEAgbmFt ZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlcgorIAorICAgICAgICAgcHJpdmF0 ZSBFeHByIFN0cmlwTmFtZWRBcmd1bWVudHMoRXhwciBwQXJnKQorICAgICAgICAgeworLSAgICAg ICAgICAgIGlmIChwQXJnIGlzIEV4cHJMaXN0IGxpc3QpCisrICAgICAgICAgICAgaWYgKHBBcmcg aXMgRXhwckxpc3QpCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBFeHByTGlzdCBs aXN0ID0gKEV4cHJMaXN0KSBwQXJnOworICAgICAgICAgICAgICAgICBmb3IoOzspCisgICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGxpc3QuT3B0aW9uYWxFbGVtZW50ID0g U3RyaXBOYW1lZEFyZ3VtZW50KGxpc3QuT3B0aW9uYWxFbGVtZW50KTsKKyAKKy0gICAgICAgICAg ICAgICAgICAgIGlmIChsaXN0Lk9wdGlvbmFsTmV4dExpc3ROb2RlIGlzIEV4cHJMaXN0IG5leHQp CisrICAgICAgICAgICAgICAgICAgICBpZiAobGlzdC5PcHRpb25hbE5leHRMaXN0Tm9kZSBpcyBF eHByTGlzdCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAg ICBFeHByTGlzdCBuZXh0ID0gKEV4cHJMaXN0KWxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGU7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCA9IG5leHQ7CisgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICBlbHNlCitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29m dC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvQmlu ZGluZy9CZXR0ZXIuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFy cC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9CaW5kaW5nL0JldHRlci5jcworaW5kZXggY2ViZmNk OTRlMS4uMTc5YWMyMTYyMCAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9N aWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0JpbmRpbmcvQmV0dGVyLmNz CisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1l QmluZGVyL1NlbWFudGljcy9CaW5kaW5nL0JldHRlci5jcworQEAgLTE1Nyw4ICsxNTcsOSBAQCBu YW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAg ICAgICAgIC8vIFdlIHRoZW4gZ28gb3ZlciB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cyBhbmQgcHV0 IHRoZSB0eXBlIGZvciBhbnkgbmFtZWQgYXJndW1lbnQgaW4gdGhlIHJpZ2h0IHBvc2l0aW9uIGlu IHRoZSBhcnJheS4KKyAgICAgICAgICAgICBmb3IgKGludCBpUGFyYW0gPSAwOyBpUGFyYW0gPCBh cmdzLmNhcmc7IGlQYXJhbSsrKQorICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgaWYg KHByZ2V4cHJbaVBhcmFtXSBpcyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQp CisrICAgICAgICAgICAgICAgIGlmIChwcmdleHByW2lQYXJhbV0gaXMgRXhwck5hbWVkQXJndW1l bnRTcGVjaWZpY2F0aW9uKQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAg ICBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQgPSAoRXhwck5hbWVkQXJndW1l bnRTcGVjaWZpY2F0aW9uKXByZ2V4cHJbaVBhcmFtXTsKKyAgICAgICAgICAgICAgICAgICAgIC8v IFdlIGZpbmQgdGhlIGluZGV4IG9mIHRoZSB0eXBlIG9mIHRoZSBhcmd1bWVudCBpbiB0aGUgbWV0 aG9kIHBhcmFtZXRlciBsaXN0IGFuZCBzdG9yZSB0aGF0IGluIGEgdGVtcAorICAgICAgICAgICAg ICAgICAgICAgaW50IGluZGV4ID0gRmluZE5hbWUobWV0aFByb3AuUGFyYW1ldGVyTmFtZXMsIG5h bWVkLk5hbWUpOworICAgICAgICAgICAgICAgICAgICAgQ1R5cGUgdGVtcFR5cGUgPSBwdGFbaW5k ZXhdOworZGlmZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1No YXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0JpbmRpbmcvRXJyb3JSZXBvcnRpbmcuY3MgYi9z cmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1Nl bWFudGljcy9CaW5kaW5nL0Vycm9yUmVwb3J0aW5nLmNzCitpbmRleCBjNDA2YWY0M2RlLi4wZWE4 MWVmMjFjIDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9D U2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvQmluZGluZy9FcnJvclJlcG9ydGluZy5jcwor KysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJp bmRlci9TZW1hbnRpY3MvQmluZGluZy9FcnJvclJlcG9ydGluZy5jcworQEAgLTc2LDIyICs3Niwy NSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcwor ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KGV4cHIgIT0gbnVs bCk7CisgCistICAgICAgICAgICAgICAgIGlmIChleHByIGlzIEV4cHJMb2NhbCBsb2NhbCAmJiBs b2NhbC5Jc09LKQorKyAgICAgICAgICAgICAgICBpZiAoZXhwciBpcyBFeHByTG9jYWwgJiYgKChF eHByTG9jYWwpZXhwcikuSXNPSykKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICAgICAgRXhwckxvY2FsIGxvY2FsID0gKEV4cHJMb2NhbClleHByOworICAgICAgICAgICAgICAg ICAgICAgUmVwb3J0TG9jYWxFcnJvcihsb2NhbC5Mb2NhbCwga2luZCwgaXNOZXN0ZWQpOworICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgIH0KKyAKKyAg ICAgICAgICAgICAgICAgRXhwciBwT2JqZWN0ID0gbnVsbDsKKyAKKy0gICAgICAgICAgICAgICAg aWYgKGV4cHIgaXMgRXhwclByb3BlcnR5IHByb3ApCisrICAgICAgICAgICAgICAgIGlmIChleHBy IGlzIEV4cHJQcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAg ICAgRXhwclByb3BlcnR5IHByb3AgPSAoRXhwclByb3BlcnR5KWV4cHI7CisgICAgICAgICAgICAg ICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IHJlcG9ydGVkIHJlYWQtb25seS1wcm9wZXJ0eSBlcnJv cnMuCisgICAgICAgICAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocHJvcC5NZXRoV2l0aFR5cGVT ZXQgIT0gbnVsbCk7CisgICAgICAgICAgICAgICAgICAgICBwT2JqZWN0ID0gcHJvcC5NZW1iZXJH cm91cC5PcHRpb25hbE9iamVjdDsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAg ICBlbHNlIGlmIChleHByIGlzIEV4cHJGaWVsZCBmaWVsZCkKKysgICAgICAgICAgICAgICAgZWxz ZSBpZiAoZXhwciBpcyBFeHByRmllbGQpCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgICAgIEV4cHJGaWVsZCBmaWVsZCA9IChFeHByRmllbGQpZXhwcjsKKyAgICAgICAgICAg ICAgICAgICAgIGlmIChmaWVsZC5GaWVsZFdpdGhUeXBlLkZpZWxkKCkuaXNSZWFkT25seSkKKyAg ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBSZXBvcnRSZWFk T25seUVycm9yKGZpZWxkLCBraW5kLCBpc05lc3RlZCk7CitAQCAtMTA1LDggKzEwOCw5IEBAIG5h bWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgCisgICAg ICAgICAgICAgICAgIGlmIChwT2JqZWN0ICE9IG51bGwgJiYgcE9iamVjdC5UeXBlLmlzU3RydWN0 T3JFbnVtKCkpCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChw T2JqZWN0IGlzIElFeHByV2l0aEFyZ3Mgd2l0aEFyZ3MpCisrICAgICAgICAgICAgICAgICAgICBp ZiAocE9iamVjdCBpcyBJRXhwcldpdGhBcmdzKQorICAgICAgICAgICAgICAgICAgICAgeworKyAg ICAgICAgICAgICAgICAgICAgICAgIElFeHByV2l0aEFyZ3Mgd2l0aEFyZ3MgPSAoSUV4cHJXaXRo QXJncylwT2JqZWN0OworICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc2lnbmluZyB0byBS SFMgb2YgbWV0aG9kIG9yIHByb3BlcnR5IGdldHRlciByZXR1cm5pbmcgYSB2YWx1ZS10eXBlIG9u IHRoZSBzdGFjayBvcgorICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhc3NpbmcgUkhTIG9m IG1ldGhvZCBvciBwcm9wZXJ0eSBnZXR0ZXIgcmV0dXJuaW5nIGEgdmFsdWUtdHlwZSBvbiB0aGUg c3RhY2ssIGFzIHJlZiBvciBvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvckNvbnRl eHQuRXJyb3IoRXJyb3JDb2RlLkVSUl9SZXR1cm5Ob3RMVmFsdWUsIHdpdGhBcmdzLkdldFN5bVdp dGhUeXBlKCkpOworZGlmZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3Nv ZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0NvbnZlcnNpb24uY3MgYi9zcmMvTWlj cm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGlj cy9Db252ZXJzaW9uLmNzCitpbmRleCAyNzU2NTM4NzcwLi45OWFkZjQ4OGIzIDEwMDY0NAorLS0t IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRl ci9TZW1hbnRpY3MvQ29udmVyc2lvbi5jcworKysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3Jj L01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvQ29udmVyc2lvbi5jcwor QEAgLTM4Miw5ICszODIsMTAgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJp bmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgRlVORFRZUEUgZnRTcmMgPSBleHByLlR5 cGUuZnVuZFR5cGUoKTsKKyAgICAgICAgICAgICAgICAgRlVORFRZUEUgZnREZXN0ID0gZGVzdC5m dW5kVHlwZSgpOworIAorLSAgICAgICAgICAgICAgICBpZiAoZXhwciBpcyBFeHByQ29uc3RhbnQg Y29uc3RhbnQgJiYgY29uc3RhbnQuSXNPSyAmJgorKyAgICAgICAgICAgICAgICBpZiAoZXhwciBp cyBFeHByQ29uc3RhbnQgJiYgKChFeHByQ29uc3RhbnQpZXhwcikuSXNPSyAmJgorICAgICAgICAg ICAgICAgICAgICAgZXhwci5UeXBlLmlzU2ltcGxlVHlwZSgpICYmIGRlc3QuaXNTaW1wbGVUeXBl KCkpCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIEV4cHJDb25zdGFu dCBjb25zdGFudCA9IChFeHByQ29uc3RhbnQpIGV4cHI7CisgICAgICAgICAgICAgICAgICAgICBp ZiAoKGZ0U3JjID09IEZVTkRUWVBFLkZUX0k0ICYmIChmdERlc3QgPD0gRlVORFRZUEUuRlRfTEFT VE5PTkxPTkcgfHwgZnREZXN0ID09IEZVTkRUWVBFLkZUX1U4KSkgfHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAoZnRTcmMgPT0gRlVORFRZUEUuRlRfSTggJiYgZnREZXN0ID09IEZVTkRUWVBF LkZUX1U4KSkKKyAgICAgICAgICAgICAgICAgICAgIHsKK0BAIC00MTIsOCArNDEzLDkgQEAgbmFt ZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAg ICAgICAgICAgICAgIEVycm9yQ29udGV4dC5FcnJvcihkZXN0IGlzIFR5cGVQYXJhbWV0ZXJUeXBl ID8gRXJyb3JDb2RlLkVSUl9UeXBlVmFyQ2FudEJlTnVsbCA6IEVycm9yQ29kZS5FUlJfVmFsdWVD YW50QmVOdWxsLCBkZXN0KTsKKyAgICAgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgICAg ICBlbHNlIGlmIChleHByIGlzIEV4cHJNZW1iZXJHcm91cCBtZW1HcnApCisrICAgICAgICAgICAg ICAgIGVsc2UgaWYgKGV4cHIgaXMgRXhwck1lbWJlckdyb3VwKQorICAgICAgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAgICAgICBFeHByTWVtYmVyR3JvdXAgbWVtR3JwID0gKEV4cHJNZW1i ZXJHcm91cCkgZXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIEJpbmRHcnBDb252ZXJzaW9uKG1l bUdycCwgZGVzdCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ZWxzZSBpZiAoY2FuQ2FzdChleHByLlR5cGUsIGRlc3QsIGZsYWdzKSkKK0BAIC01NDYsOCArNTQ4 LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MK KyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvckNv bnRleHQuRXJyb3IoRXJyb3JDb2RlLkVSUl9WYWx1ZUNhbnRCZU51bGwsIGRlc3QpOworICAgICAg ICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhwciBpcyBF eHByTWVtYmVyR3JvdXAgbWVtR3JwKQorKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhw ciBpcyBFeHByTWVtYmVyR3JvdXApCisgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAg ICAgICAgICAgICAgICAgRXhwck1lbWJlckdyb3VwIG1lbUdycCA9IChFeHByTWVtYmVyR3JvdXAp ZXhwcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICBCaW5kR3JwQ29udmVyc2lvbihtZW1HcnAs IGRlc3QsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICAgZWxzZQorQEAgLTEzODcsOCArMTM5MCw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJw LlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgZm9yICg7OykKKyAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgIERlYnVnLkFzc2VydChwRXhwciAhPSBudWxsKTsKKy0g ICAgICAgICAgICAgICAgaWYgKHBFeHByIGlzIEV4cHJDYWxsIGNhbGwpCisrICAgICAgICAgICAg ICAgIGlmIChwRXhwciBpcyBFeHByQ2FsbCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICAgICAgRXhwckNhbGwgY2FsbCA9IChFeHByQ2FsbClwRXhwcjsKKyAgICAgICAgICAg ICAgICAgICAgIHN3aXRjaCAoY2FsbC5OdWxsYWJsZUNhbGxMaWZ0S2luZCkKKyAgICAgICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE51bGxhYmxlQ2FsbExp ZnRLaW5kLk5vdExpZnRlZDoKK0BAIC0xNDAyLDggKzE0MDYsOSBAQCBuYW1lc3BhY2UgTWljcm9z b2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgfQorLSAgICAgICAgICAgICAgICBlbHNlIGlmIChwRXhwciBpcyBFeHByVXNlckRlZmluZWRD b252ZXJzaW9uIHVkYykKKysgICAgICAgICAgICAgICAgZWxzZSBpZiAocEV4cHIgaXMgRXhwclVz ZXJEZWZpbmVkQ29udmVyc2lvbikKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICAgICAgRXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbiB1ZGMgPSAoRXhwclVzZXJEZWZpbmVkQ29u dmVyc2lvbilwRXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIHBFeHByID0gdWRjLlVzZXJEZWZp bmVkQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg ICB9CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hh cnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRVhQUkV4dGVuc2lvbnMuY3MgYi9zcmMvTWljcm9z b2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9F WFBSRXh0ZW5zaW9ucy5jcworaW5kZXggMDc1ZWQyM2ExMS4uNjQwOGRmNGMzNiAxMDA2NDQKKy0t LSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5k ZXIvU2VtYW50aWNzL0VYUFJFeHRlbnNpb25zLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFy cC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FWFBSRXh0ZW5z aW9ucy5jcworQEAgLTMzLDggKzMzLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVu dGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICBFeHByIGV4cHJDdXIgPSBleHByOwor ICAgICAgICAgICAgIHdoaWxlIChleHByQ3VyICE9IG51bGwpCisgICAgICAgICAgICAgeworLSAg ICAgICAgICAgICAgICBpZiAoZXhwckN1ciBpcyBFeHByTGlzdCBsaXN0KQorKyAgICAgICAgICAg ICAgICBpZiAoZXhwckN1ciBpcyBFeHByTGlzdCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAg ICAgICAgICAgICAgICAgRXhwckxpc3QgbGlzdCA9IChFeHByTGlzdClleHByQ3VyOworICAgICAg ICAgICAgICAgICAgICAgeWllbGQgcmV0dXJuIGxpc3QuT3B0aW9uYWxFbGVtZW50OworICAgICAg ICAgICAgICAgICAgICAgZXhwckN1ciA9IGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGU7CisgICAg ICAgICAgICAgICAgIH0KK0BAIC02MSwxMiArNjIsMTIgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5D U2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgIH0KKyAgICAgICAgIHB1Ymxp YyBzdGF0aWMgYm9vbCBpc051bGwodGhpcyBFeHByIGV4cHIpCisgICAgICAgICB7CistICAgICAg ICAgICAgcmV0dXJuIGV4cHIgaXMgRXhwckNvbnN0YW50IGNvbnN0YW50ICYmIGNvbnN0YW50Lklz T0sgJiYgKGV4cHIuVHlwZS5mdW5kVHlwZSgpID09IEZVTkRUWVBFLkZUX1JFRikgJiYgY29uc3Rh bnQuVmFsLklzTnVsbFJlZjsKKysgICAgICAgICAgICByZXR1cm4gZXhwciBpcyBFeHByQ29uc3Rh bnQgJiYgKChFeHByQ29uc3RhbnQpZXhwcikuSXNPSyAmJiAoZXhwci5UeXBlLmZ1bmRUeXBlKCkg PT0gRlVORFRZUEUuRlRfUkVGKSAmJiAoKEV4cHJDb25zdGFudClleHByKS5WYWwuSXNOdWxsUmVm OworICAgICAgICAgfQorIAorICAgICAgICAgcHVibGljIHN0YXRpYyBib29sIElzWmVybyh0aGlz IEV4cHIgZXhwcikKKyAgICAgICAgIHsKKy0gICAgICAgICAgICByZXR1cm4gZXhwciBpcyBFeHBy Q29uc3RhbnQgY29uc3RhbnQgJiYgY29uc3RhbnQuSXNPSyAmJiBjb25zdGFudC5Jc1plcm87Cisr ICAgICAgICAgICAgcmV0dXJuIGV4cHIgaXMgRXhwckNvbnN0YW50ICYmICgoRXhwckNvbnN0YW50 KWV4cHIpLklzT0sgJiYgKChFeHByQ29uc3RhbnQpZXhwcikuSXNaZXJvOworICAgICAgICAgfQor IAorICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgRXhwciBHZXRTZXFWYWwodGhpcyBFeHByIGV4cHIp CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAv UnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhwbGljaXRDb252ZXJzaW9uLmNzIGIvc3JjL01pY3Jv c29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3Mv RXhwbGljaXRDb252ZXJzaW9uLmNzCitpbmRleCBiNTVjZjA3MDc4Li45YWZlYWFjNjIyIDEwMDY0 NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGlt ZUJpbmRlci9TZW1hbnRpY3MvRXhwbGljaXRDb252ZXJzaW9uLmNzCisrKysgYi9zcmMvTWljcm9z b2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9F eHBsaWNpdENvbnZlcnNpb24uY3MKK0BAIC0yMDcsOCArMjA3LDkgQEAgbmFtZXNwYWNlIE1pY3Jv c29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVlNGQUlMKCJCaW5kRXhwbGljaXRDb252ZXJzaW9uIGZhaWxlZCB1bmV4cGVjdGVk bHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2V4cHJE ZXN0IGlzIEV4cHJVc2VyRGVmaW5lZENvbnZlcnNpb24gdWRjKQorKyAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChfZXhwckRlc3QgaXMgRXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbikKKyAgICAg ICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJV c2VyRGVmaW5lZENvbnZlcnNpb24gdWRjID0gKEV4cHJVc2VyRGVmaW5lZENvbnZlcnNpb24pX2V4 cHJEZXN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZGMuQXJndW1lbnQgPSBfZXhw clNyYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9 CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAv UnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhwckZhY3RvcnkuY3MgYi9zcmMvTWljcm9zb2Z0LkNT aGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FeHByRmFj dG9yeS5jcworaW5kZXggMTU5ZjE1N2Y0My4uNGEwZTNjYjQ3OSAxMDA2NDQKKy0tLSBhL3NyYy9N aWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50 aWNzL0V4cHJGYWN0b3J5LmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9z b2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FeHByRmFjdG9yeS5jcworQEAgLTE3 LDMzICsxNywzMyBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNl bWFudGljcworICAgICAgICAgICAgIERlYnVnLkFzc2VydChnbG9iYWxTeW1ib2xDb250ZXh0ICE9 IG51bGwpOworICAgICAgICAgICAgIF9nbG9iYWxTeW1ib2xDb250ZXh0ID0gZ2xvYmFsU3ltYm9s Q29udGV4dDsKKyAgICAgICAgIH0KKy0gICAgICAgIHByaXZhdGUgVHlwZU1hbmFnZXIgVHlwZXMg PT4gX2dsb2JhbFN5bWJvbENvbnRleHQuR2V0VHlwZXMoKTsKKysgICAgICAgIHByaXZhdGUgVHlw ZU1hbmFnZXIgVHlwZXMgeyBnZXQgeyByZXR1cm4gX2dsb2JhbFN5bWJvbENvbnRleHQuR2V0VHlw ZXMoKTsgfSB9CisgCistICAgICAgICBwcml2YXRlIEJTWU1NR1IgR2xvYmFsU3ltYm9scyA9PiBf Z2xvYmFsU3ltYm9sQ29udGV4dC5HZXRHbG9iYWxTeW1ib2xzKCk7CisrICAgICAgICBwcml2YXRl IEJTWU1NR1IgR2xvYmFsU3ltYm9scyB7IGdldCB7IHJldHVybiBfZ2xvYmFsU3ltYm9sQ29udGV4 dC5HZXRHbG9iYWxTeW1ib2xzKCk7IH0gfQorIAorLSAgICAgICAgcHVibGljIEV4cHJDYWxsIENy ZWF0ZUNhbGwoRVhQUkZMQUcgZmxhZ3MsIENUeXBlIHR5cGUsIEV4cHIgYXJndW1lbnRzLCBFeHBy TWVtYmVyR3JvdXAgbWVtYmVyR3JvdXAsIE1ldGhXaXRoSW5zdCBtZXRob2QpID0+IAorLSAgICAg ICAgICAgIG5ldyBFeHByQ2FsbCh0eXBlLCBmbGFncywgYXJndW1lbnRzLCBtZW1iZXJHcm91cCwg bWV0aG9kKTsKKysgICAgICAgIHB1YmxpYyBFeHByQ2FsbCBDcmVhdGVDYWxsKEVYUFJGTEFHIGZs YWdzLCBDVHlwZSB0eXBlLCBFeHByIGFyZ3VtZW50cywgRXhwck1lbWJlckdyb3VwIG1lbWJlckdy b3VwLCBNZXRoV2l0aEluc3QgbWV0aG9kKSAKKysgICAgICAgIHsgcmV0dXJuIG5ldyBFeHByQ2Fs bCh0eXBlLCBmbGFncywgYXJndW1lbnRzLCBtZW1iZXJHcm91cCwgbWV0aG9kKTsgfQorIAorLSAg ICAgICAgcHVibGljIEV4cHJGaWVsZCBDcmVhdGVGaWVsZChDVHlwZSB0eXBlLCBFeHByIG9wdGlv bmFsT2JqZWN0LCBGaWVsZFdpdGhUeXBlIGZpZWxkLCBib29sIGlzTFZhbHVlKSA9PiAKKy0gICAg ICAgICAgICBuZXcgRXhwckZpZWxkKHR5cGUsIG9wdGlvbmFsT2JqZWN0LCBmaWVsZCwgaXNMVmFs dWUpOworKyAgICAgICAgcHVibGljIEV4cHJGaWVsZCBDcmVhdGVGaWVsZChDVHlwZSB0eXBlLCBF eHByIG9wdGlvbmFsT2JqZWN0LCBGaWVsZFdpdGhUeXBlIGZpZWxkLCBib29sIGlzTFZhbHVlKSAK KysgICAgICAgIHsgcmV0dXJuIG5ldyBFeHByRmllbGQodHlwZSwgb3B0aW9uYWxPYmplY3QsIGZp ZWxkLCBpc0xWYWx1ZSk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByRnVuY1B0ciBDcmVhdGVG dW5jdGlvblBvaW50ZXIoRVhQUkZMQUcgZmxhZ3MsIENUeXBlIHR5cGUsIEV4cHIgb2JqLCBNZXRo V2l0aEluc3QgbWV0aG9kKSA9PiAKKy0gICAgICAgICAgICBuZXcgRXhwckZ1bmNQdHIodHlwZSwg ZmxhZ3MsIG9iaiwgbWV0aG9kKTsKKysgICAgICAgIHB1YmxpYyBFeHByRnVuY1B0ciBDcmVhdGVG dW5jdGlvblBvaW50ZXIoRVhQUkZMQUcgZmxhZ3MsIENUeXBlIHR5cGUsIEV4cHIgb2JqLCBNZXRo V2l0aEluc3QgbWV0aG9kKQorKyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJGdW5jUHRyKHR5cGUs IGZsYWdzLCBvYmosIG1ldGhvZCk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByQXJyYXlJbml0 IENyZWF0ZUFycmF5SW5pdChDVHlwZSB0eXBlLCBFeHByIGFyZ3VtZW50cywgRXhwciBhcmd1bWVu dERpbWVuc2lvbnMsIGludFtdIGRpbVNpemVzLCBpbnQgZGltU2l6ZSkgPT4gCistICAgICAgICAg ICAgbmV3IEV4cHJBcnJheUluaXQodHlwZSwgYXJndW1lbnRzLCBhcmd1bWVudERpbWVuc2lvbnMs IGRpbVNpemVzLCBkaW1TaXplKTsKKysgICAgICAgIHB1YmxpYyBFeHByQXJyYXlJbml0IENyZWF0 ZUFycmF5SW5pdChDVHlwZSB0eXBlLCBFeHByIGFyZ3VtZW50cywgRXhwciBhcmd1bWVudERpbWVu c2lvbnMsIGludFtdIGRpbVNpemVzLCBpbnQgZGltU2l6ZSkKKysgICAgICAgIHsgcmV0dXJuIG5l dyBFeHByQXJyYXlJbml0KHR5cGUsIGFyZ3VtZW50cywgYXJndW1lbnREaW1lbnNpb25zLCBkaW1T aXplcywgZGltU2l6ZSk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByUHJvcGVydHkgQ3JlYXRl UHJvcGVydHkoQ1R5cGUgdHlwZSwgRXhwciBvcHRpb25hbE9iamVjdCkgPT4gCistICAgICAgICAg ICAgQ3JlYXRlUHJvcGVydHkodHlwZSwgbnVsbCwgbnVsbCwgQ3JlYXRlTWVtR3JvdXAob3B0aW9u YWxPYmplY3QsIG5ldyBNZXRoUHJvcFdpdGhJbnN0KCkpLCBudWxsLCBudWxsKTsKKysgICAgICAg IHB1YmxpYyBFeHByUHJvcGVydHkgQ3JlYXRlUHJvcGVydHkoQ1R5cGUgdHlwZSwgRXhwciBvcHRp b25hbE9iamVjdCkKKysgICAgICAgIHsgcmV0dXJuIENyZWF0ZVByb3BlcnR5KHR5cGUsIG51bGws IG51bGwsIENyZWF0ZU1lbUdyb3VwKG9wdGlvbmFsT2JqZWN0LCBuZXcgTWV0aFByb3BXaXRoSW5z dCgpKSwgbnVsbCwgbnVsbCk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByUHJvcGVydHkgQ3Jl YXRlUHJvcGVydHkoQ1R5cGUgdHlwZSwgRXhwciBvcHRpb25hbE9iamVjdFRocm91Z2gsIEV4cHIg YXJndW1lbnRzLCBFeHByTWVtYmVyR3JvdXAgbWVtYmVyR3JvdXAsIFByb3BXaXRoVHlwZSBwcm9w ZXJ0eSwgTWV0aFdpdGhUeXBlIHNldE1ldGhvZCkgPT4gCistICAgICAgICAgICAgbmV3IEV4cHJQ cm9wZXJ0eSh0eXBlLCBvcHRpb25hbE9iamVjdFRocm91Z2gsIGFyZ3VtZW50cywgbWVtYmVyR3Jv dXAsIHByb3BlcnR5LCBzZXRNZXRob2QpOworKyAgICAgICAgcHVibGljIEV4cHJQcm9wZXJ0eSBD cmVhdGVQcm9wZXJ0eShDVHlwZSB0eXBlLCBFeHByIG9wdGlvbmFsT2JqZWN0VGhyb3VnaCwgRXhw ciBhcmd1bWVudHMsIEV4cHJNZW1iZXJHcm91cCBtZW1iZXJHcm91cCwgUHJvcFdpdGhUeXBlIHBy b3BlcnR5LCBNZXRoV2l0aFR5cGUgc2V0TWV0aG9kKQorKyAgICAgICAgeyByZXR1cm4gbmV3IEV4 cHJQcm9wZXJ0eSh0eXBlLCBvcHRpb25hbE9iamVjdFRocm91Z2gsIGFyZ3VtZW50cywgbWVtYmVy R3JvdXAsIHByb3BlcnR5LCBzZXRNZXRob2QpOyB9CisgCistICAgICAgICBwdWJsaWMgRXhwckV2 ZW50IENyZWF0ZUV2ZW50KENUeXBlIHR5cGUsIEV4cHIgb3B0aW9uYWxPYmplY3QsIEV2ZW50V2l0 aFR5cGUgZXZlbnRXaXRoVHlwZSkgPT4gCistICAgICAgICAgICAgbmV3IEV4cHJFdmVudCh0eXBl LCBvcHRpb25hbE9iamVjdCwgZXZlbnRXaXRoVHlwZSk7CisrICAgICAgICBwdWJsaWMgRXhwckV2 ZW50IENyZWF0ZUV2ZW50KENUeXBlIHR5cGUsIEV4cHIgb3B0aW9uYWxPYmplY3QsIEV2ZW50V2l0 aFR5cGUgZXZlbnRXaXRoVHlwZSkgIAorKyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJFdmVudCh0 eXBlLCBvcHRpb25hbE9iamVjdCwgZXZlbnRXaXRoVHlwZSk7IH0KKyAKKy0gICAgICAgIHB1Ymxp YyBFeHByTWVtYmVyR3JvdXAgQ3JlYXRlTWVtR3JvdXAoRVhQUkZMQUcgZmxhZ3MsIE5hbWUgbmFt ZSwgVHlwZUFycmF5IHR5cGVBcmdzLCBTWU1LSU5EIHN5bUtpbmQsIENUeXBlIHBhcmVudFR5cGUs IE1ldGhvZE9yUHJvcGVydHlTeW1ib2wgbWVtYmVyU3ltYm9sLCBFeHByIG9iaiwgQ01lbWJlckxv b2t1cFJlc3VsdHMgbWVtYmVyTG9va3VwUmVzdWx0cykgPT4gCistICAgICAgICAgICAgbmV3IEV4 cHJNZW1iZXJHcm91cChUeXBlcy5HZXRNZXRoR3JwVHlwZSgpLCBmbGFncywgbmFtZSwgdHlwZUFy Z3MsIHN5bUtpbmQsIHBhcmVudFR5cGUsIG1lbWJlclN5bWJvbCwgb2JqLCBtZW1iZXJMb29rdXBS ZXN1bHRzKTsKKysgICAgICAgIHB1YmxpYyBFeHByTWVtYmVyR3JvdXAgQ3JlYXRlTWVtR3JvdXAo RVhQUkZMQUcgZmxhZ3MsIE5hbWUgbmFtZSwgVHlwZUFycmF5IHR5cGVBcmdzLCBTWU1LSU5EIHN5 bUtpbmQsIENUeXBlIHBhcmVudFR5cGUsIE1ldGhvZE9yUHJvcGVydHlTeW1ib2wgbWVtYmVyU3lt Ym9sLCBFeHByIG9iaiwgQ01lbWJlckxvb2t1cFJlc3VsdHMgbWVtYmVyTG9va3VwUmVzdWx0cykK KysgICAgICAgIHsgcmV0dXJuIG5ldyBFeHByTWVtYmVyR3JvdXAoVHlwZXMuR2V0TWV0aEdycFR5 cGUoKSwgZmxhZ3MsIG5hbWUsIHR5cGVBcmdzLCBzeW1LaW5kLCBwYXJlbnRUeXBlLCBtZW1iZXJT eW1ib2wsIG9iaiwgbWVtYmVyTG9va3VwUmVzdWx0cyk7IH0KKyAKKyAgICAgICAgIHB1YmxpYyBF eHByTWVtYmVyR3JvdXAgQ3JlYXRlTWVtR3JvdXAoRXhwciBvYmosIE1ldGhQcm9wV2l0aEluc3Qg bWV0aG9kKQorICAgICAgICAgeworQEAgLTU3LDI1ICs1NywyNSBAQCBuYW1lc3BhY2UgTWljcm9z b2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICBvYmos IG5ldyBDTWVtYmVyTG9va3VwUmVzdWx0cyhHbG9iYWxTeW1ib2xzLkFsbG9jUGFyYW1zKDEsIG5l d1tdIHt0eXBlfSksIG5hbWUpKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHBy VXNlckRlZmluZWRDb252ZXJzaW9uIENyZWF0ZVVzZXJEZWZpbmVkQ29udmVyc2lvbihFeHByIGFy ZywgRXhwciBjYWxsLCBNZXRoV2l0aEluc3QgbWV0aG9kKSA9PiAKKy0gICAgICAgICAgICBuZXcg RXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbihhcmcsIGNhbGwsIG1ldGhvZCk7CisrICAgICAgICBw dWJsaWMgRXhwclVzZXJEZWZpbmVkQ29udmVyc2lvbiBDcmVhdGVVc2VyRGVmaW5lZENvbnZlcnNp b24oRXhwciBhcmcsIEV4cHIgY2FsbCwgTWV0aFdpdGhJbnN0IG1ldGhvZCkKKysgICAgICAgIHsg cmV0dXJuIG5ldyBFeHByVXNlckRlZmluZWRDb252ZXJzaW9uKGFyZywgY2FsbCwgbWV0aG9kKTsg fQorIAorICAgICAgICAgcHVibGljIEV4cHJDYXN0IENyZWF0ZUNhc3QoQ1R5cGUgdHlwZSwgRXhw ciBhcmd1bWVudCkgPT4gQ3JlYXRlQ2FzdCgwLCBDcmVhdGVDbGFzcyh0eXBlKSwgYXJndW1lbnQp OworIAorLSAgICAgICAgcHVibGljIEV4cHJDYXN0IENyZWF0ZUNhc3QoRVhQUkZMQUcgZmxhZ3Ms IEV4cHJDbGFzcyB0eXBlLCBFeHByIGFyZ3VtZW50KSA9PiBuZXcgRXhwckNhc3QoZmxhZ3MsIHR5 cGUsIGFyZ3VtZW50KTsKKysgICAgICAgIHB1YmxpYyBFeHByQ2FzdCBDcmVhdGVDYXN0KEVYUFJG TEFHIGZsYWdzLCBFeHByQ2xhc3MgdHlwZSwgRXhwciBhcmd1bWVudCkgeyByZXR1cm4gbmV3IEV4 cHJDYXN0KGZsYWdzLCB0eXBlLCBhcmd1bWVudCk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHBy UmV0dXJuIENyZWF0ZVJldHVybihFeHByIG9wdGlvbmFsT2JqZWN0KSA9PiBuZXcgRXhwclJldHVy bihvcHRpb25hbE9iamVjdCk7CisrICAgICAgICBwdWJsaWMgRXhwclJldHVybiBDcmVhdGVSZXR1 cm4oRXhwciBvcHRpb25hbE9iamVjdCkgeyByZXR1cm4gbmV3IEV4cHJSZXR1cm4ob3B0aW9uYWxP YmplY3QpOyB9CisgCistICAgICAgICBwdWJsaWMgRXhwckxvY2FsIENyZWF0ZUxvY2FsKExvY2Fs VmFyaWFibGVTeW1ib2wgbG9jYWwpID0+IG5ldyBFeHByTG9jYWwobG9jYWwpOworKyAgICAgICAg cHVibGljIEV4cHJMb2NhbCBDcmVhdGVMb2NhbChMb2NhbFZhcmlhYmxlU3ltYm9sIGxvY2FsKSB7 IHJldHVybiBuZXcgRXhwckxvY2FsKGxvY2FsKTsgfQorIAorLSAgICAgICAgcHVibGljIEV4cHJC b3VuZExhbWJkYSBDcmVhdGVBbm9ueW1vdXNNZXRob2QoQWdncmVnYXRlVHlwZSBkZWxlZ2F0ZVR5 cGUsIFNjb3BlIGFyZ3VtZW50U2NvcGUpID0+IAorLSAgICAgICAgICAgIG5ldyBFeHByQm91bmRM YW1iZGEoZGVsZWdhdGVUeXBlLCBhcmd1bWVudFNjb3BlKTsKKysgICAgICAgIHB1YmxpYyBFeHBy Qm91bmRMYW1iZGEgQ3JlYXRlQW5vbnltb3VzTWV0aG9kKEFnZ3JlZ2F0ZVR5cGUgZGVsZWdhdGVU eXBlLCBTY29wZSBhcmd1bWVudFNjb3BlKQorKyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJCb3Vu ZExhbWJkYShkZWxlZ2F0ZVR5cGUsIGFyZ3VtZW50U2NvcGUpOyB9CisgCistICAgICAgICBwdWJs aWMgRXhwckhvaXN0ZWRMb2NhbEV4cHIgQ3JlYXRlSG9pc3RlZExvY2FsSW5FeHByZXNzaW9uKCkg PT4gCistICAgICAgICAgICAgbmV3IEV4cHJIb2lzdGVkTG9jYWxFeHByKFR5cGVzLkdldE9wdFBy ZWRlZkFnZyhQcmVkZWZpbmVkVHlwZS5QVF9FWFBSRVNTSU9OKS5nZXRUaGlzVHlwZSgpKTsKKysg ICAgICAgIHB1YmxpYyBFeHBySG9pc3RlZExvY2FsRXhwciBDcmVhdGVIb2lzdGVkTG9jYWxJbkV4 cHJlc3Npb24oKQorKyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJIb2lzdGVkTG9jYWxFeHByKFR5 cGVzLkdldE9wdFByZWRlZkFnZyhQcmVkZWZpbmVkVHlwZS5QVF9FWFBSRVNTSU9OKS5nZXRUaGlz VHlwZSgpKTsgfQorIAorLSAgICAgICAgcHVibGljIEV4cHJNZXRob2RJbmZvIENyZWF0ZU1ldGhv ZEluZm8oTWV0aFByb3BXaXRoSW5zdCBtd2kpID0+IAorLSAgICAgICAgICAgIENyZWF0ZU1ldGhv ZEluZm8obXdpLk1ldGgoKSwgbXdpLkdldFR5cGUoKSwgbXdpLlR5cGVBcmdzKTsKKysgICAgICAg IHB1YmxpYyBFeHByTWV0aG9kSW5mbyBDcmVhdGVNZXRob2RJbmZvKE1ldGhQcm9wV2l0aEluc3Qg bXdpKQorKyAgICAgICAgeyByZXR1cm4gQ3JlYXRlTWV0aG9kSW5mbyhtd2kuTWV0aCgpLCBtd2ku R2V0VHlwZSgpLCBtd2kuVHlwZUFyZ3MpOyB9CisgCisgICAgICAgICBwdWJsaWMgRXhwck1ldGhv ZEluZm8gQ3JlYXRlTWV0aG9kSW5mbyhNZXRob2RTeW1ib2wgbWV0aG9kLCBBZ2dyZWdhdGVUeXBl IG1ldGhvZFR5cGUsIFR5cGVBcnJheSBtZXRob2RQYXJhbWV0ZXJzKQorICAgICAgICAgeworQEAg LTg0LDE5ICs4NCwxOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVy LlNlbWFudGljcworICAgICAgICAgICAgICAgICBtZXRob2QsIG1ldGhvZFR5cGUsIG1ldGhvZFBh cmFtZXRlcnMpOworICAgICAgICAgfQorIAorLSAgICAgICAgcHVibGljIEV4cHJQcm9wZXJ0eUlu Zm8gQ3JlYXRlUHJvcGVydHlJbmZvKFByb3BlcnR5U3ltYm9sIHByb3AsIEFnZ3JlZ2F0ZVR5cGUg cHJvcGVydHlUeXBlKSA9PiAKKy0gICAgICAgICAgICBuZXcgRXhwclByb3BlcnR5SW5mbyhUeXBl cy5HZXRPcHRQcmVkZWZBZ2coUHJlZGVmaW5lZFR5cGUuUFRfUFJPUEVSVFlJTkZPKS5nZXRUaGlz VHlwZSgpLCBwcm9wLCBwcm9wZXJ0eVR5cGUpOworKyAgICAgICAgcHVibGljIEV4cHJQcm9wZXJ0 eUluZm8gQ3JlYXRlUHJvcGVydHlJbmZvKFByb3BlcnR5U3ltYm9sIHByb3AsIEFnZ3JlZ2F0ZVR5 cGUgcHJvcGVydHlUeXBlKQorKyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJQcm9wZXJ0eUluZm8o VHlwZXMuR2V0T3B0UHJlZGVmQWdnKFByZWRlZmluZWRUeXBlLlBUX1BST1BFUlRZSU5GTykuZ2V0 VGhpc1R5cGUoKSwgcHJvcCwgcHJvcGVydHlUeXBlKTsgfQorIAorLSAgICAgICAgcHVibGljIEV4 cHJGaWVsZEluZm8gQ3JlYXRlRmllbGRJbmZvKEZpZWxkU3ltYm9sIGZpZWxkLCBBZ2dyZWdhdGVU eXBlIGZpZWxkVHlwZSkgPT4gCistICAgICAgICAgICAgbmV3IEV4cHJGaWVsZEluZm8oZmllbGQs IGZpZWxkVHlwZSwgVHlwZXMuR2V0T3B0UHJlZGVmQWdnKFByZWRlZmluZWRUeXBlLlBUX0ZJRUxE SU5GTykuZ2V0VGhpc1R5cGUoKSk7CisrICAgICAgICBwdWJsaWMgRXhwckZpZWxkSW5mbyBDcmVh dGVGaWVsZEluZm8oRmllbGRTeW1ib2wgZmllbGQsIEFnZ3JlZ2F0ZVR5cGUgZmllbGRUeXBlKQor KyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJGaWVsZEluZm8oZmllbGQsIGZpZWxkVHlwZSwgVHlw ZXMuR2V0T3B0UHJlZGVmQWdnKFByZWRlZmluZWRUeXBlLlBUX0ZJRUxESU5GTykuZ2V0VGhpc1R5 cGUoKSk7IH0KKyAKKy0gICAgICAgIHByaXZhdGUgRXhwclR5cGVPZiBDcmVhdGVUeXBlT2YoRXhw ckNsYXNzIHNvdXJjZVR5cGUpID0+IAorLSAgICAgICAgICAgIG5ldyBFeHByVHlwZU9mKFR5cGVz LkdldFJlcVByZWRlZkFnZyhQcmVkZWZpbmVkVHlwZS5QVF9UWVBFKS5nZXRUaGlzVHlwZSgpLCBz b3VyY2VUeXBlKTsKKysgICAgICAgIHByaXZhdGUgRXhwclR5cGVPZiBDcmVhdGVUeXBlT2YoRXhw ckNsYXNzIHNvdXJjZVR5cGUpCisrICAgICAgICB7IHJldHVybiBuZXcgRXhwclR5cGVPZihUeXBl cy5HZXRSZXFQcmVkZWZBZ2coUHJlZGVmaW5lZFR5cGUuUFRfVFlQRSkuZ2V0VGhpc1R5cGUoKSwg c291cmNlVHlwZSk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByVHlwZU9mIENyZWF0ZVR5cGVP ZihDVHlwZSBzb3VyY2VUeXBlKSA9PiBDcmVhdGVUeXBlT2YoQ3JlYXRlQ2xhc3Moc291cmNlVHlw ZSkpOworKyAgICAgICAgcHVibGljIEV4cHJUeXBlT2YgQ3JlYXRlVHlwZU9mKENUeXBlIHNvdXJj ZVR5cGUpIHsgcmV0dXJuIENyZWF0ZVR5cGVPZihDcmVhdGVDbGFzcyhzb3VyY2VUeXBlKSk7IH0K KyAKKy0gICAgICAgIHB1YmxpYyBFeHByVXNlckxvZ2ljYWxPcCBDcmVhdGVVc2VyTG9nT3AoQ1R5 cGUgdHlwZSwgRXhwciB0cnVlRmFsc2VDYWxsLCBFeHByQ2FsbCBvcGVyYXRvckNhbGwpID0+IAor LSAgICAgICAgICAgIG5ldyBFeHByVXNlckxvZ2ljYWxPcCh0eXBlLCB0cnVlRmFsc2VDYWxsLCBv cGVyYXRvckNhbGwpOworKyAgICAgICAgcHVibGljIEV4cHJVc2VyTG9naWNhbE9wIENyZWF0ZVVz ZXJMb2dPcChDVHlwZSB0eXBlLCBFeHByIHRydWVGYWxzZUNhbGwsIEV4cHJDYWxsIG9wZXJhdG9y Q2FsbCkKKysgICAgICAgIHsgcmV0dXJuIG5ldyBFeHByVXNlckxvZ2ljYWxPcCh0eXBlLCB0cnVl RmFsc2VDYWxsLCBvcGVyYXRvckNhbGwpOyB9CisgCisgICAgICAgICBwdWJsaWMgRXhwclVzZXJM b2dpY2FsT3AgQ3JlYXRlVXNlckxvZ09wRXJyb3IoQ1R5cGUgdHlwZSwgRXhwciB0cnVlRmFsc2VD YWxsLCBFeHByQ2FsbCBvcGVyYXRvckNhbGwpCisgICAgICAgICB7CitAQCAtMTA1LDE2ICsxMDUs MTYgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MK KyAgICAgICAgICAgICByZXR1cm4gcnZhbDsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIHB1Ymxp YyBFeHByQ29uY2F0IENyZWF0ZUNvbmNhdChFeHByIGZpcnN0LCBFeHByIHNlY29uZCkgPT4gbmV3 IEV4cHJDb25jYXQoZmlyc3QsIHNlY29uZCk7CisrICAgICAgICBwdWJsaWMgRXhwckNvbmNhdCBD cmVhdGVDb25jYXQoRXhwciBmaXJzdCwgRXhwciBzZWNvbmQpIHsgcmV0dXJuIG5ldyBFeHByQ29u Y2F0KGZpcnN0LCBzZWNvbmQpOyB9CisgCistICAgICAgICBwdWJsaWMgRXhwckNvbnN0YW50IENy ZWF0ZVN0cmluZ0NvbnN0YW50KHN0cmluZyBzdHIpID0+IAorLSAgICAgICAgICAgIENyZWF0ZUNv bnN0YW50KFR5cGVzLkdldFJlcVByZWRlZkFnZyhQcmVkZWZpbmVkVHlwZS5QVF9TVFJJTkcpLmdl dFRoaXNUeXBlKCksIENvbnN0VmFsLkdldChzdHIpKTsKKysgICAgICAgIHB1YmxpYyBFeHByQ29u c3RhbnQgQ3JlYXRlU3RyaW5nQ29uc3RhbnQoc3RyaW5nIHN0cikKKysgICAgICAgIHsgcmV0dXJu IENyZWF0ZUNvbnN0YW50KFR5cGVzLkdldFJlcVByZWRlZkFnZyhQcmVkZWZpbmVkVHlwZS5QVF9T VFJJTkcpLmdldFRoaXNUeXBlKCksIENvbnN0VmFsLkdldChzdHIpKTsgfQorIAorLSAgICAgICAg cHVibGljIEV4cHJNdWx0aUdldCBDcmVhdGVNdWx0aUdldChFWFBSRkxBRyBmbGFncywgQ1R5cGUg dHlwZSwgRXhwck11bHRpIG11bHRpKSA9PiAKKy0gICAgICAgICAgICBuZXcgRXhwck11bHRpR2V0 KHR5cGUsIGZsYWdzLCBtdWx0aSk7CisrICAgICAgICBwdWJsaWMgRXhwck11bHRpR2V0IENyZWF0 ZU11bHRpR2V0KEVYUFJGTEFHIGZsYWdzLCBDVHlwZSB0eXBlLCBFeHByTXVsdGkgbXVsdGkpCisr ICAgICAgICB7IHJldHVybiBuZXcgRXhwck11bHRpR2V0KHR5cGUsIGZsYWdzLCBtdWx0aSk7IH0K KyAKKy0gICAgICAgIHB1YmxpYyBFeHByTXVsdGkgQ3JlYXRlTXVsdGkoRVhQUkZMQUcgZmxhZ3Ms IENUeXBlIHR5cGUsIEV4cHIgbGVmdCwgRXhwciBvcCkgPT4gCistICAgICAgICAgICAgbmV3IEV4 cHJNdWx0aSh0eXBlLCBmbGFncywgbGVmdCwgb3ApOworKyAgICAgICAgcHVibGljIEV4cHJNdWx0 aSBDcmVhdGVNdWx0aShFWFBSRkxBRyBmbGFncywgQ1R5cGUgdHlwZSwgRXhwciBsZWZ0LCBFeHBy IG9wKQorKyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJNdWx0aSh0eXBlLCBmbGFncywgbGVmdCwg b3ApOyB9CisgCisgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgICAgLy8K K0BAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJp bmRlci5TZW1hbnRpY3MKKyAgICAgICAgIC8vCisgICAgICAgICAvLyBUaGlzIHJldHVybnMgYSBu dWxsIGZvciByZWZlcmVuY2UgdHlwZXMgYW5kIGFuIEVYUFJaRVJPSU5JVCBmb3IgYWxsIG90aGVy cy4KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByIENyZWF0ZVplcm9Jbml0KENUeXBlIHR5cGUpID0+ IENyZWF0ZVplcm9Jbml0KENyZWF0ZUNsYXNzKHR5cGUpLCBudWxsLCBmYWxzZSk7CisrICAgICAg ICBwdWJsaWMgRXhwciBDcmVhdGVaZXJvSW5pdChDVHlwZSB0eXBlKSB7IHJldHVybiBDcmVhdGVa ZXJvSW5pdChDcmVhdGVDbGFzcyh0eXBlKSwgbnVsbCwgZmFsc2UpOyB9CisgCisgICAgICAgICBw cml2YXRlIEV4cHIgQ3JlYXRlWmVyb0luaXQoRXhwckNsYXNzIHR5cGVFeHByLCBFeHByIG9yaWdp bmFsQ29uc3RydWN0b3JDYWxsLCBib29sIGlzQ29uc3RydWN0b3IpCisgICAgICAgICB7CitAQCAt MTg3LDE1ICsxODcsMTUgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRl ci5TZW1hbnRpY3MKKyAgICAgICAgICAgICByZXR1cm4gbmV3IEV4cHJaZXJvSW5pdCh0eXBlLCBv cmlnaW5hbENvbnN0cnVjdG9yQ2FsbCwgaXNDb25zdHJ1Y3RvciwgaXNFcnJvcik7CisgICAgICAg ICB9CisgCistICAgICAgICBwdWJsaWMgRXhwckNvbnN0YW50IENyZWF0ZUNvbnN0YW50KENUeXBl IHR5cGUsIENvbnN0VmFsIGNvbnN0VmFsKSA9PiBuZXcgRXhwckNvbnN0YW50KHR5cGUsIGNvbnN0 VmFsKTsKKysgICAgICAgIHB1YmxpYyBFeHByQ29uc3RhbnQgQ3JlYXRlQ29uc3RhbnQoQ1R5cGUg dHlwZSwgQ29uc3RWYWwgY29uc3RWYWwpIHsgcmV0dXJuIG5ldyBFeHByQ29uc3RhbnQodHlwZSwg Y29uc3RWYWwpOyB9CisgCistICAgICAgICBwdWJsaWMgRXhwckNvbnN0YW50IENyZWF0ZUludGVn ZXJDb25zdGFudChpbnQgeCkgPT4KKy0gICAgICAgICAgICBDcmVhdGVDb25zdGFudChUeXBlcy5H ZXRSZXFQcmVkZWZBZ2coUHJlZGVmaW5lZFR5cGUuUFRfSU5UKS5nZXRUaGlzVHlwZSgpLCBDb25z dFZhbC5HZXQoeCkpOworKyAgICAgICAgcHVibGljIEV4cHJDb25zdGFudCBDcmVhdGVJbnRlZ2Vy Q29uc3RhbnQoaW50IHgpCisrICAgICAgICB7IHJldHVybiBDcmVhdGVDb25zdGFudChUeXBlcy5H ZXRSZXFQcmVkZWZBZ2coUHJlZGVmaW5lZFR5cGUuUFRfSU5UKS5nZXRUaGlzVHlwZSgpLCBDb25z dFZhbC5HZXQoeCkpOyB9CisgCistICAgICAgICBwdWJsaWMgRXhwckNvbnN0YW50IENyZWF0ZUJv b2xDb25zdGFudChib29sIGIpID0+IAorLSAgICAgICAgICAgIENyZWF0ZUNvbnN0YW50KFR5cGVz LkdldFJlcVByZWRlZkFnZyhQcmVkZWZpbmVkVHlwZS5QVF9CT09MKS5nZXRUaGlzVHlwZSgpLCBD b25zdFZhbC5HZXQoYikpOworKyAgICAgICAgcHVibGljIEV4cHJDb25zdGFudCBDcmVhdGVCb29s Q29uc3RhbnQoYm9vbCBiKQorKyAgICAgICAgeyByZXR1cm4gQ3JlYXRlQ29uc3RhbnQoVHlwZXMu R2V0UmVxUHJlZGVmQWdnKFByZWRlZmluZWRUeXBlLlBUX0JPT0wpLmdldFRoaXNUeXBlKCksIENv bnN0VmFsLkdldChiKSk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByQmxvY2sgQ3JlYXRlQmxv Y2soRXhwclN0YXRlbWVudCBwT3B0aW9uYWxTdGF0ZW1lbnRzKSA9PiBuZXcgRXhwckJsb2NrKHBP cHRpb25hbFN0YXRlbWVudHMpOworKyAgICAgICAgcHVibGljIEV4cHJCbG9jayBDcmVhdGVCbG9j ayhFeHByU3RhdGVtZW50IHBPcHRpb25hbFN0YXRlbWVudHMpIHsgcmV0dXJuIG5ldyBFeHByQmxv Y2socE9wdGlvbmFsU3RhdGVtZW50cyk7IH0KKyAKKyAgICAgICAgIHB1YmxpYyBFeHByQXJyYXlJ bmRleCBDcmVhdGVBcnJheUluZGV4KEV4cHIgYXJyYXksIEV4cHIgaW5kZXgpCisgICAgICAgICB7 CitAQCAtMjEyLDExICsyMTIsMTEgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGlt ZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICByZXR1cm4gbmV3IEV4cHJBcnJheUluZGV4 KHR5cGUsIGFycmF5LCBpbmRleCk7CisgICAgICAgICB9CisgCistICAgICAgICBwdWJsaWMgRXhw ckJpbk9wIENyZWF0ZUJpbm9wKEV4cHJlc3Npb25LaW5kIGV4cHJLaW5kLCBDVHlwZSB0eXBlLCBF eHByIGxlZnQsIEV4cHIgcmlnaHQpID0+IAorLSAgICAgICAgICAgIG5ldyBFeHByQmluT3AoZXhw cktpbmQsIHR5cGUsIGxlZnQsIHJpZ2h0KTsKKysgICAgICAgIHB1YmxpYyBFeHByQmluT3AgQ3Jl YXRlQmlub3AoRXhwcmVzc2lvbktpbmQgZXhwcktpbmQsIENUeXBlIHR5cGUsIEV4cHIgbGVmdCwg RXhwciByaWdodCkgCisrICAgICAgICB7IHJldHVybiBuZXcgRXhwckJpbk9wKGV4cHJLaW5kLCB0 eXBlLCBsZWZ0LCByaWdodCk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByVW5hcnlPcCBDcmVh dGVVbmFyeU9wKEV4cHJlc3Npb25LaW5kIGV4cHJLaW5kLCBDVHlwZSB0eXBlLCBFeHByIG9wZXJh bmQpID0+IAorLSAgICAgICAgICAgIG5ldyBFeHByVW5hcnlPcChleHByS2luZCwgdHlwZSwgb3Bl cmFuZCk7CisrICAgICAgICBwdWJsaWMgRXhwclVuYXJ5T3AgQ3JlYXRlVW5hcnlPcChFeHByZXNz aW9uS2luZCBleHByS2luZCwgQ1R5cGUgdHlwZSwgRXhwciBvcGVyYW5kKQorKyAgICAgICAgeyBy ZXR1cm4gbmV3IEV4cHJVbmFyeU9wKGV4cHJLaW5kLCB0eXBlLCBvcGVyYW5kKTsgfQorIAorICAg ICAgICAgcHVibGljIEV4cHJPcGVyYXRvciBDcmVhdGVPcGVyYXRvcihFeHByZXNzaW9uS2luZCBl eHByS2luZCwgQ1R5cGUgdHlwZSwgRXhwciBhcmcxLCBFeHByIGFyZzIpCisgICAgICAgICB7CitA QCAtMjI4LDEyICsyMjgsMTIgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJp bmRlci5TZW1hbnRpY3MKKyAgICAgICAgIH0KKyAKKyAKKy0gICAgICAgIHB1YmxpYyBFeHByQmlu T3AgQ3JlYXRlVXNlckRlZmluZWRCaW5vcChFeHByZXNzaW9uS2luZCBleHByS2luZCwgQ1R5cGUg dHlwZSwgRXhwciBsZWZ0LCBFeHByIHJpZ2h0LCBFeHByIGNhbGwsIE1ldGhQcm9wV2l0aEluc3Qg dXNlck1ldGhvZCkgPT4gCistICAgICAgICAgICAgbmV3IEV4cHJCaW5PcChleHByS2luZCwgdHlw ZSwgbGVmdCwgcmlnaHQsIGNhbGwsIHVzZXJNZXRob2QpOworKyAgICAgICAgcHVibGljIEV4cHJC aW5PcCBDcmVhdGVVc2VyRGVmaW5lZEJpbm9wKEV4cHJlc3Npb25LaW5kIGV4cHJLaW5kLCBDVHlw ZSB0eXBlLCBFeHByIGxlZnQsIEV4cHIgcmlnaHQsIEV4cHIgY2FsbCwgTWV0aFByb3BXaXRoSW5z dCB1c2VyTWV0aG9kKQorKyAgICAgICAgeyByZXR1cm4gbmV3IEV4cHJCaW5PcChleHByS2luZCwg dHlwZSwgbGVmdCwgcmlnaHQsIGNhbGwsIHVzZXJNZXRob2QpOyB9CisgCisgICAgICAgICAvLyBU aGUgY2FsbCBtYXkgYmUgbGlmdGVkLCBidXQgd2UgZG8gbm90IG1hcmsgdGhlIG91dGVyIGJpbm9w IGFzIGxpZnRlZC4KKy0gICAgICAgIHB1YmxpYyBFeHByVW5hcnlPcCBDcmVhdGVVc2VyRGVmaW5l ZFVuYXJ5T3BlcmF0b3IoRXhwcmVzc2lvbktpbmQgZXhwcktpbmQsIENUeXBlIHR5cGUsIEV4cHIg b3BlcmFuZCwgRXhwckNhbGwgY2FsbCwgTWV0aFByb3BXaXRoSW5zdCB1c2VyTWV0aG9kKSA9PiAK Ky0gICAgICAgICAgICBuZXcgRXhwclVuYXJ5T3AoZXhwcktpbmQsIHR5cGUsIG9wZXJhbmQsIGNh bGwsIHVzZXJNZXRob2QpOworKyAgICAgICAgcHVibGljIEV4cHJVbmFyeU9wIENyZWF0ZVVzZXJE ZWZpbmVkVW5hcnlPcGVyYXRvcihFeHByZXNzaW9uS2luZCBleHByS2luZCwgQ1R5cGUgdHlwZSwg RXhwciBvcGVyYW5kLCBFeHByQ2FsbCBjYWxsLCBNZXRoUHJvcFdpdGhJbnN0IHVzZXJNZXRob2Qp CisrICAgICAgICB7IHJldHVybiBuZXcgRXhwclVuYXJ5T3AoZXhwcktpbmQsIHR5cGUsIG9wZXJh bmQsIGNhbGwsIHVzZXJNZXRob2QpOyB9CisgCisgICAgICAgICBwdWJsaWMgRXhwclVuYXJ5T3Ag Q3JlYXRlTmVnKEVYUFJGTEFHIGZsYWdzLCBFeHByIG9wZXJhbmQpCisgICAgICAgICB7CitAQCAt MjQ2LDIzICsyNDYsMjIgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRl ci5TZW1hbnRpY3MKKyAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgICAgICAv LyBDcmVhdGUgYSBub2RlIHRoYXQgZXZhbHVhdGVzIHRoZSBmaXJzdCwgZXZhbHVhdGVzIHRoZSBz ZWNvbmQsIHJlc3VsdHMgaW4gdGhlIHNlY29uZC4KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByQmlu T3AgQ3JlYXRlU2VxdWVuY2UoRXhwciBmaXJzdCwgRXhwciBzZWNvbmQpID0+CistICAgICAgICAg ICAgQ3JlYXRlQmlub3AoRXhwcmVzc2lvbktpbmQuU2VxdWVuY2UsIHNlY29uZC5UeXBlLCBmaXJz dCwgc2Vjb25kKTsKKysgICAgICAgIHB1YmxpYyBFeHByQmluT3AgQ3JlYXRlU2VxdWVuY2UoRXhw ciBmaXJzdCwgRXhwciBzZWNvbmQpCisrICAgICAgICB7IHJldHVybiBDcmVhdGVCaW5vcChFeHBy ZXNzaW9uS2luZC5TZXF1ZW5jZSwgc2Vjb25kLlR5cGUsIGZpcnN0LCBzZWNvbmQpOyB9CisgCisg ICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgICAgLy8gQ3JlYXRlIGEgbm9k ZSB0aGF0IGV2YWx1YXRlcyB0aGUgZmlyc3QsIGV2YWx1YXRlcyB0aGUgc2Vjb25kLCByZXN1bHRz IGluIHRoZSBmaXJzdC4KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByQmluT3AgQ3JlYXRlUmV2ZXJz ZVNlcXVlbmNlKEV4cHIgZmlyc3QsIEV4cHIgc2Vjb25kKSA9PgorLSAgICAgICAgICAgIENyZWF0 ZUJpbm9wKEV4cHJlc3Npb25LaW5kLlNlcXVlbmNlUmV2ZXJzZSwgZmlyc3QuVHlwZSwgZmlyc3Qs IHNlY29uZCk7CisrICAgICAgICBwdWJsaWMgRXhwckJpbk9wIENyZWF0ZVJldmVyc2VTZXF1ZW5j ZShFeHByIGZpcnN0LCBFeHByIHNlY29uZCkKKysgICAgICAgIHsgcmV0dXJuIENyZWF0ZUJpbm9w KEV4cHJlc3Npb25LaW5kLlNlcXVlbmNlUmV2ZXJzZSwgZmlyc3QuVHlwZSwgZmlyc3QsIHNlY29u ZCk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByQXNzaWdubWVudCBDcmVhdGVBc3NpZ25tZW50 KEV4cHIgbGVmdCwgRXhwciByaWdodCkgPT4gbmV3IEV4cHJBc3NpZ25tZW50KGxlZnQsIHJpZ2h0 KTsKKysgICAgICAgIHB1YmxpYyBFeHByQXNzaWdubWVudCBDcmVhdGVBc3NpZ25tZW50KEV4cHIg bGVmdCwgRXhwciByaWdodCkgeyByZXR1cm4gbmV3IEV4cHJBc3NpZ25tZW50KGxlZnQsIHJpZ2h0 KTsgfQorIAorICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAKKy0gICAgICAgIHB1 YmxpYyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gQ3JlYXRlTmFtZWRBcmd1bWVudFNw ZWNpZmljYXRpb24oTmFtZSBuYW1lLCBFeHByIHZhbHVlKSA9PgorLSAgICAgICAgICAgIG5ldyBF eHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24obmFtZSwgdmFsdWUpOworKyAgICAgICAgcHVi bGljIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiBDcmVhdGVOYW1lZEFyZ3VtZW50U3Bl Y2lmaWNhdGlvbihOYW1lIG5hbWUsIEV4cHIgdmFsdWUpIHsgcmV0dXJuIG5ldyBFeHByTmFtZWRB cmd1bWVudFNwZWNpZmljYXRpb24obmFtZSwgdmFsdWUpOyB9CisgCistICAgICAgICBwdWJsaWMg RXhwcldyYXAgQ3JlYXRlV3JhcChFeHByIGV4cHJlc3Npb24pID0+IG5ldyBFeHByV3JhcChleHBy ZXNzaW9uKTsKKysgICAgICAgIHB1YmxpYyBFeHByV3JhcCBDcmVhdGVXcmFwKEV4cHIgZXhwcmVz c2lvbikgeyByZXR1cm4gbmV3IEV4cHJXcmFwKGV4cHJlc3Npb24pOyB9CisgCisgICAgICAgICBw dWJsaWMgRXhwckJpbk9wIENyZWF0ZVNhdmUoRXhwcldyYXAgd3JhcCkKKyAgICAgICAgIHsKK0BA IC0yNzIsNyArMjcxLDcgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRl ci5TZW1hbnRpY3MKKyAgICAgICAgICAgICByZXR1cm4gZXhwcjsKKyAgICAgICAgIH0KKyAKKy0g ICAgICAgIHB1YmxpYyBFeHByQ29uc3RhbnQgQ3JlYXRlTnVsbCgpID0+IENyZWF0ZUNvbnN0YW50 KFR5cGVzLkdldE51bGxUeXBlKCksIGRlZmF1bHQoQ29uc3RWYWwpKTsKKysgICAgICAgIHB1Ymxp YyBFeHByQ29uc3RhbnQgQ3JlYXRlTnVsbCgpIHsgcmV0dXJuIENyZWF0ZUNvbnN0YW50KFR5cGVz LkdldE51bGxUeXBlKCksIGRlZmF1bHQoQ29uc3RWYWwpKTsgfQorIAorICAgICAgICAgcHVibGlj IHZvaWQgQXBwZW5kSXRlbVRvTGlzdCgKKyAgICAgICAgICAgICBFeHByIG5ld0l0ZW0sCitAQCAt MzA2LDE0ICszMDUsMTMgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRl ci5TZW1hbnRpY3MKKyAgICAgICAgICAgICBsYXN0ID0gbGlzdC5PcHRpb25hbE5leHRMaXN0Tm9k ZTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByTGlzdCBDcmVhdGVMaXN0KEV4 cHIgb3AxLCBFeHByIG9wMikgPT4gbmV3IEV4cHJMaXN0KG9wMSwgb3AyKTsKKysgICAgICAgIHB1 YmxpYyBFeHByTGlzdCBDcmVhdGVMaXN0KEV4cHIgb3AxLCBFeHByIG9wMikgeyByZXR1cm4gbmV3 IEV4cHJMaXN0KG9wMSwgb3AyKTsgfQorIAorLSAgICAgICAgcHVibGljIEV4cHJMaXN0IENyZWF0 ZUxpc3QoRXhwciBvcDEsIEV4cHIgb3AyLCBFeHByIG9wMykgPT4gQ3JlYXRlTGlzdChvcDEsIENy ZWF0ZUxpc3Qob3AyLCBvcDMpKTsKKysgICAgICAgIHB1YmxpYyBFeHByTGlzdCBDcmVhdGVMaXN0 KEV4cHIgb3AxLCBFeHByIG9wMiwgRXhwciBvcDMpIHsgcmV0dXJuIENyZWF0ZUxpc3Qob3AxLCBD cmVhdGVMaXN0KG9wMiwgb3AzKSk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBFeHByTGlzdCBDcmVh dGVMaXN0KEV4cHIgb3AxLCBFeHByIG9wMiwgRXhwciBvcDMsIEV4cHIgb3A0KSA9PgorLSAgICAg ICAgICAgIENyZWF0ZUxpc3Qob3AxLCBDcmVhdGVMaXN0KG9wMiwgQ3JlYXRlTGlzdChvcDMsIG9w NCkpKTsKKysgICAgICAgIHB1YmxpYyBFeHByTGlzdCBDcmVhdGVMaXN0KEV4cHIgb3AxLCBFeHBy IG9wMiwgRXhwciBvcDMsIEV4cHIgb3A0KSB7IHJldHVybiBDcmVhdGVMaXN0KG9wMSwgQ3JlYXRl TGlzdChvcDIsIENyZWF0ZUxpc3Qob3AzLCBvcDQpKSk7IH0KKyAKKy0gICAgICAgIHB1YmxpYyBF eHByQ2xhc3MgQ3JlYXRlQ2xhc3MoQ1R5cGUgdHlwZSkgPT4gbmV3IEV4cHJDbGFzcyh0eXBlKTsK KysgICAgICAgIHB1YmxpYyBFeHByQ2xhc3MgQ3JlYXRlQ2xhc3MoQ1R5cGUgdHlwZSkgeyByZXR1 cm4gbmV3IEV4cHJDbGFzcyh0eXBlKTsgfQorICAgICB9CisgfQorIAorZGlmZiAtLWdpdCBhL3Ny Yy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2Vt YW50aWNzL0V4cHJlc3Npb25CaW5kZXIuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWlj cm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9FeHByZXNzaW9uQmluZGVyLmNz CitpbmRleCBlZTc1ZTdiMzhlLi5iZDdjNTJmODdlIDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29m dC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhw cmVzc2lvbkJpbmRlci5jcworKysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29m dC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvRXhwcmVzc2lvbkJpbmRlci5jcworQEAg LTYwMSwxMCArNjAxLDExIEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5k ZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIGNvbXBpbGUg dGltZSBjb25zdGFudC4gSWYgd2UgZG8sIGNyZWF0ZSBhIGNvbnN0YW50IGZvciBpdCBhbmQgc2V0 IHRoZQorICAgICAgICAgICAgIC8vIG9yaWdpbmFsIHRyZWUgdG8gdGhlIGNhc3QuCisgCistICAg ICAgICAgICAgaWYgKGV4cHJDb25zdCBpcyBFeHByQ29uc3RhbnQgY29uc3RhbnQgJiYgZXhwckZs YWdzID09IDAgJiYKKysgICAgICAgICAgICBpZiAoZXhwckNvbnN0IGlzIEV4cHJDb25zdGFudCAm JiBleHByRmxhZ3MgPT0gMCAmJgorICAgICAgICAgICAgICAgICBleHByU3JjLlR5cGUuZnVuZFR5 cGUoKSA9PSB0eXBlRGVzdC5mdW5kVHlwZSgpICYmCistICAgICAgICAgICAgICAgICghZXhwclNy Yy5UeXBlLmlzUHJlZGVmVHlwZShQcmVkZWZpbmVkVHlwZS5QVF9TVFJJTkcpIHx8IGNvbnN0YW50 LlZhbC5Jc051bGxSZWYpKQorKyAgICAgICAgICAgICAgICAoIWV4cHJTcmMuVHlwZS5pc1ByZWRl ZlR5cGUoUHJlZGVmaW5lZFR5cGUuUFRfU1RSSU5HKSB8fCAoKEV4cHJDb25zdGFudClleHByQ29u c3QpLlZhbC5Jc051bGxSZWYpKQorICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgRXhw ckNvbnN0YW50IGNvbnN0YW50ID0gKEV4cHJDb25zdGFudClleHByQ29uc3Q7CisgICAgICAgICAg ICAgICAgIEV4cHJDb25zdGFudCBleHByID0gR2V0RXhwckZhY3RvcnkoKS5DcmVhdGVDb25zdGFu dCh0eXBlRGVzdCwgY29uc3RhbnQuVmFsKTsKKyAgICAgICAgICAgICAgICAgcGV4cHJEZXN0ID0g ZXhwcjsKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworQEAgLTExOTEsOCArMTE5Miw5IEBAIG5h bWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAg ICAgICAgd2hpbGUgKGxpc3QgIT0gbnVsbCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgIEV4cHIgYXJnOworLSAgICAgICAgICAgICAgICBpZiAobGlzdCBpcyBFeHByTGlzdCBuZXh0 KQorKyAgICAgICAgICAgICAgICBpZiAobGlzdCBpcyBFeHByTGlzdCkKKyAgICAgICAgICAgICAg ICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckxpc3QgbmV4dCA9IChFeHByTGlzdClsaXN0 OworICAgICAgICAgICAgICAgICAgICAgYXJnID0gbmV4dC5PcHRpb25hbEVsZW1lbnQ7CisgICAg ICAgICAgICAgICAgICAgICBsaXN0ID0gbmV4dC5PcHRpb25hbE5leHRMaXN0Tm9kZTsKKyAgICAg ICAgICAgICAgICAgfQorQEAgLTEyNjUsOCArMTI2Nyw5IEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQu Q1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgCisgICAgICAgICBwcml2YXRlIEV4cHIg VW53cmFwRXhwcmVzc2lvbihFeHByIHBFeHByZXNzaW9uKQorICAgICAgICAgeworLSAgICAgICAg ICAgIHdoaWxlIChwRXhwcmVzc2lvbiBpcyBFeHByV3JhcCB3cmFwKQorKyAgICAgICAgICAgIHdo aWxlIChwRXhwcmVzc2lvbiBpcyBFeHByV3JhcCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAg ICAgICAgIEV4cHJXcmFwIHdyYXAgPSAoRXhwcldyYXApcEV4cHJlc3Npb247CisgICAgICAgICAg ICAgICAgIEV4cHIgd3JhcHBlZCA9IHdyYXAuT3B0aW9uYWxFeHByZXNzaW9uOworICAgICAgICAg ICAgICAgICBpZiAod3JhcHBlZCA9PSBudWxsKQorICAgICAgICAgICAgICAgICB7CitAQCAtMTM0 NCw4ICsxMzQ3LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5T ZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgIGlm IChleHByLmlzTHZhbHVlKCkpCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBpZiAo ZXhwciBpcyBFeHByUHJvcGVydHkgcHJvcCkKKysgICAgICAgICAgICAgICAgaWYgKGV4cHIgaXMg RXhwclByb3BlcnR5KQorICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBF eHByUHJvcGVydHkgcHJvcCA9IChFeHByUHJvcGVydHkpZXhwcjsKKyAgICAgICAgICAgICAgICAg ICAgIENoZWNrTHZhbHVlUHJvcChwcm9wKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICBtYXJrRmllbGRBc3NpZ25lZChleHByKTsKK0BAIC0xNTcwLDkgKzE1NzQsMTAgQEAg bmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAKKyAg ICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgaW52b2tpbmcgY29kZSBvbiBhIHN0cnVjdC12YWx1 ZWQgZmllbGQsIG1hcmsgdGhlIHN0cnVjdCBhcyBhc3NpZ25lZCAodG8KKyAgICAgICAgICAgICAg ICAgLy8gYXZvaWQgd2FybmluZyBDUzA2NDkpLgorLSAgICAgICAgICAgICAgICBpZiAocE9iamVj dCBpcyBFeHByRmllbGQgZmllbGQgJiYgIWZpZWxkLkZpZWxkV2l0aFR5cGUuRmllbGQoKS5pc0Fz c2lnbmVkICYmICFzd3QuU3ltLklzRmllbGRTeW1ib2woKSAmJgorKyAgICAgICAgICAgICAgICBp ZiAocE9iamVjdCBpcyBFeHByRmllbGQgJiYgISgoRXhwckZpZWxkKXBPYmplY3QpLkZpZWxkV2l0 aFR5cGUuRmllbGQoKS5pc0Fzc2lnbmVkICYmICFzd3QuU3ltLklzRmllbGRTeW1ib2woKSAmJgor ICAgICAgICAgICAgICAgICAgICAgdHlwZU9iai5pc1N0cnVjdFR5cGUoKSAmJiAhdHlwZU9iai5p c1ByZWRlZmluZWQoKSkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAg RXhwckZpZWxkIGZpZWxkID0gKEV4cHJGaWVsZCkgcE9iamVjdDsKKyAgICAgICAgICAgICAgICAg ICAgIGZpZWxkLkZpZWxkV2l0aFR5cGUuRmllbGQoKS5pc0Fzc2lnbmVkID0gdHJ1ZTsKKyAgICAg ICAgICAgICAgICAgfQorIAorQEAgLTE3NzksOCArMTc4NCw5IEBAIG5hbWVzcGFjZSBNaWNyb3Nv ZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgCisgICAgICAgICAgICAgICAgICAg ICBFeHByIGFyZ3VtZW50ID0gaW5kaXI7CisgICAgICAgICAgICAgICAgICAgICBFeHByIHJ2YWw7 CistICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnQgaXMgRXhwck5hbWVkQXJndW1lbnRT cGVjaWZpY2F0aW9uIG5hbWVkKQorKyAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50IGlz IEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgICAgICAgICBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24g bmFtZWQgPSAoRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uKWFyZ3VtZW50OworICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBpbmRleCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gSWYgd2UncmUgbmFtZWQsIGxvb2sgZm9yIHRoZSB0eXBlIG9mIHRoZSBtYXRjaGluZyBu YW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKE5hbWUgaSBpbiBtb3N0RGVy aXZlZE1ldGhvZC5QYXJhbWV0ZXJOYW1lcykKK0BAIC0xOTE4LDggKzE5MjQsOSBAQCBuYW1lc3Bh Y2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAg ICAgICAgICAgRXhwciBleHByID0gaXQuQ3VycmVudCgpOworICAgICAgICAgICAgICAgICAgICAg Y291bnQrKzsKKyAKKy0gICAgICAgICAgICAgICAgICAgIGlmIChleHByIGlzIEV4cHJOYW1lZEFy Z3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCkKKysgICAgICAgICAgICAgICAgICAgIGlmIChleHBy IGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbikKKyAgICAgICAgICAgICAgICAgICAg IHsKKysgICAgICAgICAgICAgICAgICAgICAgICBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRp b24gbmFtZWQgPSAoRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uKWV4cHI7CisgICAgICAg ICAgICAgICAgICAgICAgICAgbmFtZWQuVmFsdWUgPSB0cnlDb252ZXJ0KG5hbWVkLlZhbHVlLCBl bGVtZW50VHlwZSk7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg ICBlbHNlCitAQCAtMTk0MSw4ICsxOTQ4LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAu UnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAKKyAgICAgICAgIHByaXZhdGUgdm9pZCBtYXJrRmll bGRBc3NpZ25lZChFeHByIGV4cHIpCisgICAgICAgICB7CistICAgICAgICAgICAgaWYgKDAgIT0g KGV4cHIuRmxhZ3MgJiBFWFBSRkxBRy5FWEZfTFZBTFVFKSAmJiBleHByIGlzIEV4cHJGaWVsZCBm aWVsZCkKKysgICAgICAgICAgICBpZiAoMCAhPSAoZXhwci5GbGFncyAmIEVYUFJGTEFHLkVYRl9M VkFMVUUpICYmIGV4cHIgaXMgRXhwckZpZWxkKQorICAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgRXhwckZpZWxkIGZpZWxkID0gKEV4cHJGaWVsZCkgZXhwcjsKKyAgICAgICAgICAgICAg ICAgRmllbGRTeW1ib2wgc3ltYm9sOworICAgICAgICAgICAgICAgICBkbworICAgICAgICAgICAg ICAgICB7CitAQCAtMjAwOSw4ICsyMDE3LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAu UnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICBmb3IgKEV4cHIgbGlzdCA9IGFy Z3M7IGxpc3QgIT0gbnVsbDsgaWFyZysrKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgRXhwciBhcmc7CistICAgICAgICAgICAgICAgIGlmIChsaXN0IGlzIEV4cHJMaXN0IG5leHQp CisrICAgICAgICAgICAgICAgIGlmIChsaXN0IGlzIEV4cHJMaXN0KQorICAgICAgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgICAgICBFeHByTGlzdCBuZXh0ID0gKEV4cHJMaXN0KWxpc3Q7 CisgICAgICAgICAgICAgICAgICAgICBhcmcgPSBuZXh0Lk9wdGlvbmFsRWxlbWVudDsKKyAgICAg ICAgICAgICAgICAgICAgIGxpc3QgPSBuZXh0Lk9wdGlvbmFsTmV4dExpc3ROb2RlOworICAgICAg ICAgICAgICAgICB9CitAQCAtMjM2NCw4ICsyMzczLDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5D U2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgIEV4cHIgYXJnOworIAorLSAgICAgICAgICAgICAgICBpZiAobGlzdCBpcyBFeHByTGlz dCBuZXh0KQorKyAgICAgICAgICAgICAgICBpZiAobGlzdCBpcyBFeHByTGlzdCkKKyAgICAgICAg ICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgRXhwckxpc3QgbmV4dCA9IChFeHByTGlz dClsaXN0OworICAgICAgICAgICAgICAgICAgICAgYXJnID0gbmV4dC5PcHRpb25hbEVsZW1lbnQ7 CisgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gbmV4dC5PcHRpb25hbE5leHRMaXN0Tm9kZTsK KyAgICAgICAgICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3Ny Yy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0dyb3VwVG9BcmdzQmlu ZGVyLmNzIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGlt ZUJpbmRlci9TZW1hbnRpY3MvR3JvdXBUb0FyZ3NCaW5kZXIuY3MKK2luZGV4IDI1YThkNDAzNDEu LmQxN2RlMzk3N2QgMTAwNjQ0CistLS0gYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9z b2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9Hcm91cFRvQXJnc0JpbmRlci5jcwor KysrIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJp bmRlci9TZW1hbnRpY3MvR3JvdXBUb0FyZ3NCaW5kZXIuY3MKK0BAIC01MTAsNyArNTEwLDcgQEAg bmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAg ICAgICAgICAgICAgICAgIC8vIHRoZW4gbGV0IHVzIHRocm91Z2guCisgICAgICAgICAgICAgICAg ICAgICBpZiAobWV0aHByb3AuaXNQYXJhbUFycmF5ICYmCisgICAgICAgICAgICAgICAgICAgICAg ICAgaW5kZXggPCBwQXJndW1lbnRzLmNhcmcgJiYKKy0gICAgICAgICAgICAgICAgICAgICAgICBw QXJndW1lbnRzLnByZ2V4cHJbaW5kZXhdIGlzIEV4cHJBcnJheUluaXQgYXJyYXlJbml0ICYmIGFy cmF5SW5pdC5HZW5lcmF0ZWRGb3JQYXJhbUFycmF5KQorKyAgICAgICAgICAgICAgICAgICAgICAg IHBBcmd1bWVudHMucHJnZXhwcltpbmRleF0gaXMgRXhwckFycmF5SW5pdCAmJiAoKEV4cHJBcnJh eUluaXQpcEFyZ3VtZW50cy5wcmdleHByW2luZGV4XSkuR2VuZXJhdGVkRm9yUGFyYW1BcnJheSkK KyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUFy cmF5QXJndW1lbnQgPSBwQXJndW1lbnRzLnByZ2V4cHJbaW5kZXhdOworICAgICAgICAgICAgICAg ICAgICAgfQorQEAgLTUxOCw3ICs1MTgsNyBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5S dW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICAgICAgLy8gUG9zaXRpb25h bC4KKyAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IHBBcmd1bWVudHMuY2FyZyAmJgor ICAgICAgICAgICAgICAgICAgICAgICAgICEocEFyZ3VtZW50cy5wcmdleHByW2luZGV4XSBpcyBF eHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24pICYmCistICAgICAgICAgICAgICAgICAgICAg ICAgIShwQXJndW1lbnRzLnByZ2V4cHJbaW5kZXhdIGlzIEV4cHJBcnJheUluaXQgYXJyYXlJbml0 UG9zICYmIGFycmF5SW5pdFBvcy5HZW5lcmF0ZWRGb3JQYXJhbUFycmF5KSkKKysgICAgICAgICAg ICAgICAgICAgICAgICAhKHBBcmd1bWVudHMucHJnZXhwcltpbmRleF0gaXMgRXhwckFycmF5SW5p dCAmJiAoKEV4cHJBcnJheUluaXQpcEFyZ3VtZW50cy5wcmdleHByW2luZGV4XSkuR2VuZXJhdGVk Rm9yUGFyYW1BcnJheSkpCisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgcEV4cHJBcmd1bWVudHNbaW5kZXhdID0gcEFyZ3VtZW50cy5wcmdleHByW2luZGV4 KytdOworICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworQEAgLTgzOSw3ICs4Mzks NyBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcwor ICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBBcmd1bWVudHMuY2FyZzsgaSsr KQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBFeHByIGV4cHIgPSBw cmdleHByW2ldOworLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHIgaXMgRXhwck5hbWVkQXJn dW1lbnRTcGVjaWZpY2F0aW9uIG5hbWVkICYmIG5hbWVkLk5hbWUgPT0gcE5hbWUpCisrICAgICAg ICAgICAgICAgICAgICBpZiAoZXhwciBpcyBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24g JiYgKChFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24pZXhwcikuTmFtZSA9PSBwTmFtZSkK KyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g ZXhwcjsKKyAgICAgICAgICAgICAgICAgICAgIH0KK0BAIC04NjEsNyArODYxLDggQEAgbmFtZXNw YWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAg ICAgICAgSGFzaFNldDxOYW1lPiBuYW1lcyA9IG5ldyBIYXNoU2V0PE5hbWU+KCk7CisgICAgICAg ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgX3BBcmd1bWVudHMuY2FyZzsgaSsrKQorICAg ICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBpZiAoIShfcEFyZ3VtZW50cy5w cmdleHByW2ldIGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbiBuYW1lZCkpCisrICAg ICAgICAgICAgICAgICAgICBFeHByTmFtZWRBcmd1bWVudFNwZWNpZmljYXRpb24gbmFtZWQ7Cisr ICAgICAgICAgICAgICAgICAgICBpZiAoIShfcEFyZ3VtZW50cy5wcmdleHByW2ldIGlzIEV4cHJO YW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbikpCisgICAgICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50UG9zaXRpb24uSXNFbXB0eSgpKQorICAg ICAgICAgICAgICAgICAgICAgICAgIHsKK0BAIC04NjksNiArODcwLDcgQEAgbmFtZXNwYWNlIE1p Y3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg ICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICBuYW1lZCA9IChFeHByTmFtZWRBcmd1 bWVudFNwZWNpZmljYXRpb24pIF9wQXJndW1lbnRzLnByZ2V4cHJbaV07CisgCisgICAgICAgICAg ICAgICAgICAgICBOYW1lIG5hbWUgPSBuYW1lZC5OYW1lOworICAgICAgICAgICAgICAgICAgICAg aWYgKCFtZXRocHJvcC5QYXJhbWV0ZXJOYW1lcy5Db250YWlucyhuYW1lKSkKK0BAIC0xMDgwLDgg KzEwODIsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFu dGljcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHByIHBBcmd1bWVudCA9IF9wQXJn dW1lbnRzLnByZ2V4cHJbaXZhcl07CisgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IElmIHdlIGhhdmUgYSBuYW1lZCBhcmd1bWVudCwgc3RyaXAgaXQgdG8gZG8gdGhlIGNvbnZlcnNp b24uCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwQXJndW1lbnQgaXMgRXhwck5h bWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uIG5hbWVkKQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAocEFyZ3VtZW50IGlzIEV4cHJOYW1lZEFyZ3VtZW50U3BlY2lmaWNhdGlvbikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRXhwck5hbWVkQXJndW1lbnRTcGVjaWZpY2F0aW9uIG5hbWVkID0gKEV4cHJOYW1lZEFy Z3VtZW50U3BlY2lmaWNhdGlvbilwQXJndW1lbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwQXJndW1lbnQgPSBuYW1lZC5WYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQorIAorZGlmZiAtLWdpdCBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3Nv ZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0ltcGxpY2l0Q29udmVyc2lvbi5jcyBi L3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIv U2VtYW50aWNzL0ltcGxpY2l0Q29udmVyc2lvbi5jcworaW5kZXggYzllYjVhZTIxZC4uY2RlNTMz ZDc1MCAxMDA2NDQKKy0tLSBhL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1No YXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL0ltcGxpY2l0Q29udmVyc2lvbi5jcworKysrIGIv c3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9T ZW1hbnRpY3MvSW1wbGljaXRDb252ZXJzaW9uLmNzCitAQCAtMTcyLDggKzE3Miw5IEBAIG5hbWVz cGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAg ICAgICAgICAgICAgICAgVlNGQUlMKCJCYWQgdHlwZSBzeW1ib2wga2luZCIpOworICAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgY2FzZSBUeXBlS2lu ZC5US19NZXRob2RHcm91cFR5cGU6CistICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9leHBy U3JjIGlzIEV4cHJNZW1iZXJHcm91cCBtZW1HcnApCisrICAgICAgICAgICAgICAgICAgICAgICAg aWYgKF9leHByU3JjIGlzIEV4cHJNZW1iZXJHcm91cCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJNZW1iZXJHcm91cCBtZW1HcnAg PSAoRXhwck1lbWJlckdyb3VwKV9leHByU3JjOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFeHByQ2FsbCBvdXRFeHByOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJl dFZhbCA9IF9iaW5kZXIuQmluZEdycENvbnZlcnNpb24obWVtR3JwLCBfdHlwZURlc3QsIF9uZWVk c0V4cHJEZXN0LCBvdXQgb3V0RXhwciwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfZXhwckRlc3QgPSBvdXRFeHByOworQEAgLTczNywxMCArNzM4LDEwIEBAIG5hbWVzcGFj ZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRpbWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAg ICAgIC8vICogICBBIGNvbnN0YW50LWV4cHJlc3Npb24gb2YgdHlwZSBsb25nIGNhbiBiZSBjb252 ZXJ0ZWQgdG8gdHlwZSB1bG9uZywgcHJvdmlkZWQgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAg ICAgIC8vICAgICB0aGUgY29uc3RhbnQtZXhwcmVzc2lvbiBpcyBub3QgbmVnYXRpdmUuCisgICAg ICAgICAgICAgICAgIC8vIE5vdGU6IERvbid0IHVzZSBHZXRDb25zdCBoZXJlIHNpbmNlIHRoZSBj b252ZXJzaW9uIG9ubHkgYXBwbGllcyB0byBib25hLWZpZGUgY29tcGlsZSB0aW1lIGNvbnN0YW50 cy4KKy0gICAgICAgICAgICAgICAgaWYgKF9leHByU3JjIGlzIEV4cHJDb25zdGFudCBjb25zdGFu dCAmJiBfZXhwclNyYy5Jc09LICYmCisrICAgICAgICAgICAgICAgIGlmIChfZXhwclNyYyBpcyBF eHByQ29uc3RhbnQgJiYgX2V4cHJTcmMuSXNPSyAmJgorICAgICAgICAgICAgICAgICAgICAgKChw dFNyYyA9PSBQcmVkZWZpbmVkVHlwZS5QVF9JTlQgJiYgcHREZXN0ICE9IFByZWRlZmluZWRUeXBl LlBUX0JPT0wgJiYgcHREZXN0ICE9IFByZWRlZmluZWRUeXBlLlBUX0NIQVIpIHx8CisgICAgICAg ICAgICAgICAgICAgICAocHRTcmMgPT0gUHJlZGVmaW5lZFR5cGUuUFRfTE9ORyAmJiBwdERlc3Qg PT0gUHJlZGVmaW5lZFR5cGUuUFRfVUxPTkcpKSAmJgorLSAgICAgICAgICAgICAgICAgICAgaXND b25zdGFudEluUmFuZ2UoY29uc3RhbnQsIF90eXBlRGVzdCkpCisrICAgICAgICAgICAgICAgICAg ICBpc0NvbnN0YW50SW5SYW5nZSgoKEV4cHJDb25zdGFudClfZXhwclNyYyksIF90eXBlRGVzdCkp CisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2Fz ZSAoQ0xSIDYuMS42KTogaWYgaW50ZWdyYWwgY29uc3RhbnQgaXMgaW4gcmFuZ2UsIHRoZSBjb252 ZXJzaW9uIGlzIGEgbGVnYWwgaW1wbGljaXQgY29udmVyc2lvbi4KKyAgICAgICAgICAgICAgICAg ICAgIGNvbnZlcnRLaW5kID0gQ29udktpbmQuSW1wbGljaXQ7CitkaWZmIC0tZ2l0IGEvc3JjL01p Y3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRp Y3MvTWV0aG9kVHlwZUluZmVycmVyLmNzIGIvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jv c29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvTWV0aG9kVHlwZUluZmVycmVyLmNz CitpbmRleCA1MmQzNTRhYzUzLi5mNDM2ODQ2OTBkIDEwMDY0NAorLS0tIGEvc3JjL01pY3Jvc29m dC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvTWV0 aG9kVHlwZUluZmVycmVyLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9z b2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9NZXRob2RUeXBlSW5mZXJyZXIuY3MK K0BAIC0xMDYzLDEwICsxMDYzLDExIEBAIG5hbWVzcGFjZSBNaWNyb3NvZnQuQ1NoYXJwLlJ1bnRp bWVCaW5kZXIuU2VtYW50aWNzCisgICAgICAgICAgICAgLy8gU1BFQzogICB5aWVsZHMgYSBzaW5n bGUgbWV0aG9kIHdpdGggcmV0dXJuIENUeXBlIFUgdGhlbiBhIGxvd2VyLWJvdW5kCisgICAgICAg ICAgICAgLy8gU1BFQzogICBpbmZlcmVuY2UgaXMgbWFkZSBmcm9tIFUgdG8gVGIuCisgCistICAg ICAgICAgICAgaWYgKCEocFNvdXJjZSBpcyBFeHByTWVtYmVyR3JvdXAgbWVtR3JwKSkKKysgICAg ICAgICAgICBpZiAoIShwU291cmNlIGlzIEV4cHJNZW1iZXJHcm91cCkpCisgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgfQorKyAgICAg ICAgICAgIEV4cHJNZW1iZXJHcm91cCBtZW1HcnAgPSAoRXhwck1lbWJlckdyb3VwKXBTb3VyY2U7 CisgICAgICAgICAgICAgcFR5cGUgPSBwVHlwZS5HZXREZWxlZ2F0ZVR5cGVPZlBvc3NpYmxlRXhw cmVzc2lvbigpOworICAgICAgICAgICAgIGlmICghcFR5cGUuaXNEZWxlZ2F0ZVR5cGUoKSkKKyAg ICAgICAgICAgICB7CitkaWZmIC0tZ2l0IGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jv c29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1hbnRpY3MvTnVsbGFibGUuY3MgYi9zcmMvTWlj cm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGlj cy9OdWxsYWJsZS5jcworaW5kZXggYjIzZmM0NDUwOS4uN2RiZTgyMjdjYSAxMDA2NDQKKy0tLSBh L3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIv U2VtYW50aWNzL051bGxhYmxlLmNzCisrKysgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWlj cm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9OdWxsYWJsZS5jcworQEAgLTI5 LDggKzI5LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1h bnRpY3MKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQoZXhwciAhPSBudWxs KTsKKyAKKy0gICAgICAgICAgICBpZiAoZXhwciBpcyBFeHByQ2FsbCBwQ2FsbCAmJiBwQ2FsbC5N ZW1iZXJHcm91cC5PcHRpb25hbE9iamVjdCA9PSBudWxsKQorKyAgICAgICAgICAgIGlmIChleHBy IGlzIEV4cHJDYWxsICYmICgoRXhwckNhbGwpZXhwcikuTWVtYmVyR3JvdXAuT3B0aW9uYWxPYmpl Y3QgPT0gbnVsbCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIEV4cHJDYWxsIHBD YWxsID0gKEV4cHJDYWxsKWV4cHI7CisgICAgICAgICAgICAgICAgIE1ldGhvZFN5bWJvbCBtZXRo ID0gcENhbGwuTWV0aFdpdGhJbnN0Lk1ldGgoKTsKKyAgICAgICAgICAgICAgICAgaWYgKG1ldGgg IT0gbnVsbCAmJiBtZXRoLklzTnVsbGFibGVDb25zdHJ1Y3RvcigpKQorICAgICAgICAgICAgICAg ICB7CitAQCAtNDUsNyArNDYsOCBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1l QmluZGVyLlNlbWFudGljcworIAorICAgICAgICAgcHVibGljIHN0YXRpYyBFeHByIFN0cmlwTnVs bGFibGVDb25zdHJ1Y3RvcihFeHByIHBFeHByKQorICAgICAgICAgeworLSAgICAgICAgICAgIHdo aWxlIChJc051bGxhYmxlQ29uc3RydWN0b3IocEV4cHIsIG91dCBFeHByQ2FsbCBjYWxsKSkKKysg ICAgICAgICAgICBFeHByQ2FsbCBjYWxsOworKyAgICAgICAgICAgIHdoaWxlIChJc051bGxhYmxl Q29uc3RydWN0b3IocEV4cHIsIG91dCBjYWxsKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgIHBFeHByID0gY2FsbC5PcHRpb25hbEFyZ3VtZW50czsKKyAgICAgICAgICAgICAgICAg RGVidWcuQXNzZXJ0KHBFeHByICE9IG51bGwgJiYgIShwRXhwciBpcyBFeHByTGlzdCkpOworQEAg LTYwLDcgKzYyLDggQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5T ZW1hbnRpY3MKKyAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQoZXhwclNyYyAhPSBudWxsICYmIGV4 cHJTcmMuVHlwZS5Jc051bGxhYmxlVHlwZSgpKTsKKyAKKyAgICAgICAgICAgICAvLyBGb3IgbmV3 IFQ/KHgpLCB0aGUgYW5zd2VyIGlzIHguCistICAgICAgICAgICAgaWYgKElzTnVsbGFibGVDb25z dHJ1Y3RvcihleHByU3JjLCBvdXQgRXhwckNhbGwgY2FsbCkpCisrICAgICAgICAgICAgRXhwckNh bGwgY2FsbDsKKysgICAgICAgICAgICBpZiAoSXNOdWxsYWJsZUNvbnN0cnVjdG9yKGV4cHJTcmMs IG91dCBjYWxsKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHZhciBhcmdzID0g Y2FsbC5PcHRpb25hbEFyZ3VtZW50czsKKyAgICAgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KGFy Z3MgIT0gbnVsbCAmJiAhKGFyZ3MgaXMgRXhwckxpc3QpKTsKK2RpZmYgLS1naXQgYS9zcmMvTWlj cm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGlj cy9UcmVlL0V4cHJlc3Npb25JdGVyYXRvci5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9N aWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvRXhwcmVzc2lvbkl0 ZXJhdG9yLmNzCitpbmRleCA5NmVlMDMyNDIyLi45Mzk3NTQzZGU2IDEwMDY0NAorLS0tIGEvc3Jj L01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGltZUJpbmRlci9TZW1h bnRpY3MvVHJlZS9FeHByZXNzaW9uSXRlcmF0b3IuY3MKKysrKyBiL3NyYy9NaWNyb3NvZnQuQ1No YXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvRXhw cmVzc2lvbkl0ZXJhdG9yLmNzCitAQCAtODMsOCArODMsOSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0 LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAgICAgICAgICBfcExpc3Qg PSBudWxsOworICAgICAgICAgICAgICAgICBfcEN1cnJlbnQgPSBudWxsOworICAgICAgICAgICAg IH0KKy0gICAgICAgICAgICBlbHNlIGlmIChwRXhwciBpcyBFeHByTGlzdCBwTGlzdCkKKysgICAg ICAgICAgICBlbHNlIGlmIChwRXhwciBpcyBFeHByTGlzdCkKKyAgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgIEV4cHJMaXN0IHBMaXN0ID0gKEV4cHJMaXN0KXBFeHByOworICAgICAgICAg ICAgICAgICBfcExpc3QgPSBwTGlzdDsKKyAgICAgICAgICAgICAgICAgX3BDdXJyZW50ID0gcExp c3QuT3B0aW9uYWxFbGVtZW50OworICAgICAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9zcmMvTWlj cm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGlj cy9UcmVlL1Zpc2l0b3JzL0V4cHJWaXNpdG9yQmFzZS5jcyBiL3NyYy9NaWNyb3NvZnQuQ1NoYXJw L3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNzL1RyZWUvVmlzaXRv cnMvRXhwclZpc2l0b3JCYXNlLmNzCitpbmRleCAyYWJhYzRjZWNjLi44NGJjMGUxZDRjIDEwMDY0 NAorLS0tIGEvc3JjL01pY3Jvc29mdC5DU2hhcnAvc3JjL01pY3Jvc29mdC9DU2hhcnAvUnVudGlt ZUJpbmRlci9TZW1hbnRpY3MvVHJlZS9WaXNpdG9ycy9FeHByVmlzaXRvckJhc2UuY3MKKysrKyBi L3NyYy9NaWNyb3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIv U2VtYW50aWNzL1RyZWUvVmlzaXRvcnMvRXhwclZpc2l0b3JCYXNlLmNzCitAQCAtMjEsOCArMjEs OSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcwor ICAgICAgICAgICAgICAgICByZXR1cm4gcFJlc3VsdDsKKyAgICAgICAgICAgICB9CisgCistICAg ICAgICAgICAgaWYgKHBFeHByIGlzIEV4cHJTdGF0ZW1lbnQgc3RhdGVtZW50KQorKyAgICAgICAg ICAgIGlmIChwRXhwciBpcyBFeHByU3RhdGVtZW50KQorICAgICAgICAgICAgIHsKKysgICAgICAg ICAgICAgICAgRXhwclN0YXRlbWVudCBzdGF0ZW1lbnQgPSAoRXhwclN0YXRlbWVudClwRXhwcjsK KyAgICAgICAgICAgICAgICAgcmV0dXJuIENhY2hlRXhwck1hcHBpbmcocEV4cHIsIERpc3BhdGNo U3RhdGVtZW50TGlzdChzdGF0ZW1lbnQpKTsKKyAgICAgICAgICAgICB9CisgCitAQCAtMjc1LDEx ICsyNzYsMTMgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1h bnRpY3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg ICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShuZXh0Tm9k ZSBpcyBFeHByTGlzdCBuZXh0KSkKKysgICAgICAgICAgICAgICAgICAgICAgICBFeHByTGlzdCBu ZXh0OworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKG5leHROb2RlIGlzIEV4cHJMaXN0 KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpc3QuT3B0aW9uYWxOZXh0TGlzdE5vZGUgPSBWaXNpdChuZXh0Tm9kZSk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9 CisrICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCA9IChFeHByTGlzdCluZXh0Tm9kZTsKKyAK KyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gbmV4dDsKKyAgICAgICAgICAgICAgICAg ICAgIH0KK2RpZmYgLS1naXQgYS9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NT aGFycC9SdW50aW1lQmluZGVyL1NlbWFudGljcy9UcmVlL1Zpc2l0b3JzL0V4cHJlc3Npb25UcmVl UmV3cml0ZXIuY3MgYi9zcmMvTWljcm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9S dW50aW1lQmluZGVyL1NlbWFudGljcy9UcmVlL1Zpc2l0b3JzL0V4cHJlc3Npb25UcmVlUmV3cml0 ZXIuY3MKK2luZGV4IDk2MDc1YjZkMzguLmUwNTgxZmQxNGUgMTAwNjQ0CistLS0gYS9zcmMvTWlj cm9zb2Z0LkNTaGFycC9zcmMvTWljcm9zb2Z0L0NTaGFycC9SdW50aW1lQmluZGVyL1NlbWFudGlj cy9UcmVlL1Zpc2l0b3JzL0V4cHJlc3Npb25UcmVlUmV3cml0ZXIuY3MKKysrKyBiL3NyYy9NaWNy b3NvZnQuQ1NoYXJwL3NyYy9NaWNyb3NvZnQvQ1NoYXJwL1J1bnRpbWVCaW5kZXIvU2VtYW50aWNz L1RyZWUvVmlzaXRvcnMvRXhwcmVzc2lvblRyZWVSZXdyaXRlci5jcworQEAgLTUwLDggKzUwLDkg QEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAg ICAgICAgICAgICAvLyBGb3IgYXNzaWdubWVudHMsIHdlIGVpdGhlciBoYXZlIGEgbWVtYmVyIGFz c2lnbm1lbnQgb3IgYW4gaW5kZXhlZCBhc3NpZ25tZW50LgorICAgICAgICAgICAgIC8vRGVidWcu QXNzZXJ0KGFzc2lnbm1lbnQuR2V0TEhTKCkuaXNQUk9QKCkgfHwgYXNzaWdubWVudC5HZXRMSFMo KS5pc0ZJRUxEKCkgfHwgYXNzaWdubWVudC5HZXRMSFMoKS5pc0FSUkFZSU5ERVgoKSB8fCBhc3Np Z25tZW50LkdldExIUygpLmlzTE9DQUwoKSk7CisgICAgICAgICAgICAgRXhwciBsaHM7CistICAg ICAgICAgICAgaWYgKGFzc2lnbm1lbnQuTEhTIGlzIEV4cHJQcm9wZXJ0eSBwcm9wKQorKyAgICAg ICAgICAgIGlmIChhc3NpZ25tZW50LkxIUyBpcyBFeHByUHJvcGVydHkpCisgICAgICAgICAgICAg eworKyAgICAgICAgICAgICAgICBFeHByUHJvcGVydHkgcHJvcCA9IChFeHByUHJvcGVydHkpYXNz aWdubWVudC5MSFM7CisgICAgICAgICAgICAgICAgIGlmIChwcm9wLk9wdGlvbmFsQXJndW1lbnRz PT0gbnVsbCkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgLy8gUmVn dWxhciBwcm9wZXJ0eS4KK0BAIC0zMDQsOCArMzA1LDkgQEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5D U2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgLy8gY2FuIGhh bmRsZSBpbiB0aGUgZ2VuZXJhbCBjYXNlIGFsbCBpbXBsaWNpdCBib3hpbmcgY29udmVyc2lvbnMu IFJpZ2h0IG5vdyBpdCAKKyAgICAgICAgICAgICAgICAgLy8gcmVxdWlyZXMgdGhhdCBhbGwgYXJn dW1lbnRzIHRvIGEgY2FsbCB0aGF0IG5lZWQgdG8gYmUgYm94ZWQgYmUgZXhwbGljaXRseSBib3hl ZC4KKyAKKy0gICAgICAgICAgICAgICAgaWYgKHBPYmplY3QgIT0gbnVsbCAmJiBwT2JqZWN0IGlz IEV4cHJDYXN0IGNhc3QgJiYgY2FzdC5Jc0JveGluZ0Nhc3QpCisrICAgICAgICAgICAgICAgIGlm IChwT2JqZWN0ICE9IG51bGwgJiYgcE9iamVjdCBpcyBFeHByQ2FzdCAmJiAoKEV4cHJDYXN0KXBP YmplY3QpLklzQm94aW5nQ2FzdCkKKyAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICAgICAgRXhwckNhc3QgY2FzdCA9IChFeHByQ2FzdCkgcE9iamVjdDsKKyAgICAgICAgICAgICAg ICAgICAgIHBPYmplY3QgPSBjYXN0LkFyZ3VtZW50OworICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgIHBPYmplY3QgPSBWaXNpdChwT2JqZWN0KTsKK0BAIC01NzYsOCArNTc4LDkg QEAgbmFtZXNwYWNlIE1pY3Jvc29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAg ICAgICAgICAgICBpZiAodWRjYWxsICE9IG51bGwpCisgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICBEZWJ1Zy5Bc3NlcnQodWRjYWxsLktpbmQgPT0gRXhwcmVzc2lvbktpbmQuQ2FsbCB8 fCB1ZGNhbGwuS2luZCA9PSBFeHByZXNzaW9uS2luZC5Vc2VyTG9naWNhbE9wKTsKKy0gICAgICAg ICAgICAgICAgaWYgKHVkY2FsbCBpcyBFeHByQ2FsbCBhc2NhbGwpCisrICAgICAgICAgICAgICAg IGlmICh1ZGNhbGwgaXMgRXhwckNhbGwpCisgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgICAgIEV4cHJDYWxsIGFzY2FsbCA9IChFeHByQ2FsbCl1ZGNhbGw7CisgICAgICAgICAg ICAgICAgICAgICBFeHByTGlzdCBhcmdzID0gKEV4cHJMaXN0KWFzY2FsbC5PcHRpb25hbEFyZ3Vt ZW50czsKKyAgICAgICAgICAgICAgICAgICAgIERlYnVnLkFzc2VydChhcmdzLk9wdGlvbmFsTmV4 dExpc3ROb2RlLktpbmQgIT0gRXhwcmVzc2lvbktpbmQuTGlzdCk7CisgICAgICAgICAgICAgICAg ICAgICBwMSA9IGFyZ3MuT3B0aW9uYWxFbGVtZW50OworQEAgLTcwOCw4ICs3MTEsOSBAQCBuYW1l c3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1lQmluZGVyLlNlbWFudGljcworICAgICAgICAg ICAgIEV4cHJCbG9jayBib2R5ID0gYW5vbm1ldGguT3B0aW9uYWxCb2R5OworIAorICAgICAgICAg ICAgIC8vIFRoZSBtb3N0IGxpa2VseSBjYXNlOgorLSAgICAgICAgICAgIGlmIChib2R5Lk9wdGlv bmFsU3RhdGVtZW50cyBpcyBFeHByUmV0dXJuIHJldCkKKysgICAgICAgICAgICBpZiAoYm9keS5P cHRpb25hbFN0YXRlbWVudHMgaXMgRXhwclJldHVybikKKyAgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgIEV4cHJSZXR1cm4gcmV0ID0gKEV4cHJSZXR1cm4pYm9keS5PcHRpb25hbFN0YXRl bWVudHM7CisgICAgICAgICAgICAgICAgIERlYnVnLkFzc2VydChyZXQuT3B0aW9uYWxPYmplY3Qg IT0gbnVsbCk7CisgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdChyZXQuT3B0aW9uYWxPYmpl Y3QpOworICAgICAgICAgICAgIH0KK0BAIC04MzEsOCArODM1LDkgQEAgbmFtZXNwYWNlIE1pY3Jv c29mdC5DU2hhcnAuUnVudGltZUJpbmRlci5TZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgRXhw ciBwVURDb252ZXJzaW9uID0gY2FsbD8uUENvbnZlcnNpb25zOworICAgICAgICAgICAgICAgICBp ZiAocFVEQ29udmVyc2lvbiAhPSBudWxsKQorICAgICAgICAgICAgICAgICB7CistICAgICAgICAg ICAgICAgICAgICBpZiAocFVEQ29udmVyc2lvbiBpcyBFeHByQ2FsbCBjb252Q2FsbCkKKysgICAg ICAgICAgICAgICAgICAgIGlmIChwVURDb252ZXJzaW9uIGlzIEV4cHJDYWxsKQorICAgICAgICAg ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJDYWxsIGNvbnZDYWxs ID0gKEV4cHJDYWxsKXBVRENvbnZlcnNpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgRXhw ciBwVURDb252ZXJzaW9uQXJndW1lbnQgPSBjb252Q2FsbC5PcHRpb25hbEFyZ3VtZW50czsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXNOdWxsYWJsZVZhbHVlQWNjZXNzKHBVRENvbnZl cnNpb25Bcmd1bWVudCwgcEFyZ3VtZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICB7CitA QCAtMTE3NCwyMyArMTE3OSwyNSBAQCBuYW1lc3BhY2UgTWljcm9zb2Z0LkNTaGFycC5SdW50aW1l QmluZGVyLlNlbWFudGljcworICAgICAgICAgcHJpdmF0ZSBib29sIElzTnVsbGFibGVWYWx1ZUFj Y2VzcyhFeHByIHBFeHByLCBFeHByIHBPYmplY3QpCisgICAgICAgICB7CisgICAgICAgICAgICAg RGVidWcuQXNzZXJ0KHBFeHByICE9IG51bGwpOworLSAgICAgICAgICAgIHJldHVybiBwRXhwciBp cyBFeHByUHJvcGVydHkgcHJvcCAmJiBwcm9wLk1lbWJlckdyb3VwLk9wdGlvbmFsT2JqZWN0ID09 IHBPYmplY3QgJiYgcE9iamVjdC5UeXBlLklzTnVsbGFibGVUeXBlKCk7CisrICAgICAgICAgICAg cmV0dXJuIHBFeHByIGlzIEV4cHJQcm9wZXJ0eSAmJiAoKEV4cHJQcm9wZXJ0eSlwRXhwcikuTWVt YmVyR3JvdXAuT3B0aW9uYWxPYmplY3QgPT0gcE9iamVjdCAmJiBwT2JqZWN0LlR5cGUuSXNOdWxs YWJsZVR5cGUoKTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIHByaXZhdGUgYm9vbCBJc0RlbGVn YXRlQ29uc3RydWN0b3JDYWxsKEV4cHIgcEV4cHIpCisgICAgICAgICB7CisgICAgICAgICAgICAg RGVidWcuQXNzZXJ0KHBFeHByICE9IG51bGwpOworLSAgICAgICAgICAgIGlmICghKHBFeHByIGlz IEV4cHJDYWxsIHBDYWxsKSkKKysgICAgICAgICAgICBFeHByQ2FsbCBwQ2FsbDsKKysgICAgICAg ICAgICBpZiAoIShwRXhwciBpcyBFeHByQ2FsbCkpCisgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHBDYWxs ID0gKEV4cHJDYWxsKXBFeHByOworIAorICAgICAgICAgICAgIHJldHVybiBwQ2FsbC5NZXRoV2l0 aEluc3QuTWV0aCgpICE9IG51bGwgJiYKKyAgICAgICAgICAgICAgICAgcENhbGwuTWV0aFdpdGhJ bnN0Lk1ldGgoKS5Jc0NvbnN0cnVjdG9yKCkgJiYKKyAgICAgICAgICAgICAgICAgcENhbGwuVHlw ZS5pc0RlbGVnYXRlVHlwZSgpICYmCisgICAgICAgICAgICAgICAgIHBDYWxsLk9wdGlvbmFsQXJn dW1lbnRzICE9IG51bGwgJiYKKy0gICAgICAgICAgICAgICAgcENhbGwuT3B0aW9uYWxBcmd1bWVu dHMgaXMgRXhwckxpc3QgbGlzdCAmJgorLSAgICAgICAgICAgICAgICBsaXN0Lk9wdGlvbmFsTmV4 dExpc3ROb2RlLktpbmQgPT0gRXhwcmVzc2lvbktpbmQuRnVuY3Rpb25Qb2ludGVyOworKyAgICAg ICAgICAgICAgICAocENhbGwuT3B0aW9uYWxBcmd1bWVudHMgaXMgRXhwckxpc3QpICYmCisrICAg ICAgICAgICAgICAgICgoRXhwckxpc3QpcENhbGwuT3B0aW9uYWxBcmd1bWVudHMpLk9wdGlvbmFs TmV4dExpc3ROb2RlLktpbmQgPT0gRXhwcmVzc2lvbktpbmQuRnVuY3Rpb25Qb2ludGVyOworICAg ICAgICAgfQorICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbCBpc0VudW1Ub0RlY2ltYWxDb252 ZXJzaW9uKENUeXBlIGFyZ3R5cGUsIENUeXBlIGRlc3R0eXBlKQorICAgICAgICAgeworZGlmZiAt LWdpdCBhL3NyYy9TeXN0ZW0uQ29sbGVjdGlvbnMvc3JjL1N5c3RlbS9Db2xsZWN0aW9ucy9HZW5l cmljL1NvcnRlZFNldC5UcmVlU3ViU2V0LmNzIGIvc3JjL1N5c3RlbS5Db2xsZWN0aW9ucy9zcmMv U3lzdGVtL0NvbGxlY3Rpb25zL0dlbmVyaWMvU29ydGVkU2V0LlRyZWVTdWJTZXQuY3MKK2luZGV4 IDRlYjgxN2MwYWYuLjY3MTYzNmY0MjggMTAwNjQ0CistLS0gYS9zcmMvU3lzdGVtLkNvbGxlY3Rp b25zL3NyYy9TeXN0ZW0vQ29sbGVjdGlvbnMvR2VuZXJpYy9Tb3J0ZWRTZXQuVHJlZVN1YlNldC5j cworKysrIGIvc3JjL1N5c3RlbS5Db2xsZWN0aW9ucy9zcmMvU3lzdGVtL0NvbGxlY3Rpb25zL0dl bmVyaWMvU29ydGVkU2V0LlRyZWVTdWJTZXQuY3MKK0BAIC0zNTIsNyArMzUyLDEwIEBAIG5hbWVz cGFjZSBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYworICAgICAgICAgICAgICAgICB0aHJvdyBu ZXcgUGxhdGZvcm1Ob3RTdXBwb3J0ZWRFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICB9CisgCist ICAgICAgICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgT25EZXNlcmlhbGl6YXRpb24oT2Jq ZWN0IHNlbmRlcikgPT4gdGhyb3cgbmV3IFBsYXRmb3JtTm90U3VwcG9ydGVkRXhjZXB0aW9uKCk7 CisrICAgICAgICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgT25EZXNlcmlhbGl6YXRpb24o T2JqZWN0IHNlbmRlcikKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIHRocm93IG5l dyBQbGF0Zm9ybU5vdFN1cHBvcnRlZEV4Y2VwdGlvbigpOworKyAgICAgICAgICAgIH0KKyAgICAg ICAgIH0KKyAgICAgfQorIH0KK2RpZmYgLS1naXQgYS9zcmMvU3lzdGVtLkRyYXdpbmcuQ29tbW9u L3NyYy9TeXN0ZW0vRHJhd2luZy9CcnVzaC5jcyBiL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24v c3JjL1N5c3RlbS9EcmF3aW5nL0JydXNoLmNzCitpbmRleCAwODkwNjllZDY0Li5iMjAyZWY3NzM2 IDEwMDY0NAorLS0tIGEvc3JjL1N5c3RlbS5EcmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVtL0RyYXdp bmcvQnJ1c2guY3MKKysrKyBiL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9E cmF3aW5nL0JydXNoLmNzCitAQCAtNjIsNiArNjIsNiBAQCBuYW1lc3BhY2UgU3lzdGVtLkRyYXdp bmcKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCistICAgICAgICB+QnJ1c2goKSA9PiBE aXNwb3NlKGZhbHNlKTsKKysgICAgICAgIH5CcnVzaCgpIHsgRGlzcG9zZShmYWxzZSk7IH0KKyAg ICAgfQorIH0KK2RpZmYgLS1naXQgYS9zcmMvU3lzdGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0 ZW0vRHJhd2luZy9EZXNpZ24vQ2F0ZWdvcnlOYW1lQ29sbGVjdGlvbi5jcyBiL3NyYy9TeXN0ZW0u RHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL0Rlc2lnbi9DYXRlZ29yeU5hbWVDb2xs ZWN0aW9uLmNzCitpbmRleCAwNjU0OThjM2FkLi5mY2M0ZjhiMmI2IDEwMDY0NAorLS0tIGEvc3Jj L1N5c3RlbS5EcmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVtL0RyYXdpbmcvRGVzaWduL0NhdGVnb3J5 TmFtZUNvbGxlY3Rpb24uY3MKKysrKyBiL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5 c3RlbS9EcmF3aW5nL0Rlc2lnbi9DYXRlZ29yeU5hbWVDb2xsZWN0aW9uLmNzCitAQCAtMTYsMzQg KzE2LDM0IEBAIG5hbWVzcGFjZSBTeXN0ZW0uRHJhd2luZy5EZXNpZ24KKyAgICAgICAgIC8vLyBJ bml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiA8c2VlIGNyZWY9J0NhdGVnb3J5TmFtZUNvbGxl Y3Rpb24nLz4gYmFzZWQgb24gYW5vdGhlcgorICAgICAgICAgLy8vIDxzZWUgY3JlZj0nQ2F0ZWdv cnlOYW1lQ29sbGVjdGlvbicvPi4KKyAgICAgICAgIC8vLyA8L3N1bW1hcnk+CistICAgICAgICBw dWJsaWMgQ2F0ZWdvcnlOYW1lQ29sbGVjdGlvbihDYXRlZ29yeU5hbWVDb2xsZWN0aW9uIHZhbHVl KSA9PiBJbm5lckxpc3QuQWRkUmFuZ2UodmFsdWUpOworKyAgICAgICAgcHVibGljIENhdGVnb3J5 TmFtZUNvbGxlY3Rpb24oQ2F0ZWdvcnlOYW1lQ29sbGVjdGlvbiB2YWx1ZSkgeyBJbm5lckxpc3Qu QWRkUmFuZ2UodmFsdWUpOyB9CisgCisgICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgICAv Ly8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgPHNlZSBjcmVmPSdDYXRlZ29yeU5hbWVD b2xsZWN0aW9uJy8+IGNvbnRhaW5pbmcgYW55IGFycmF5IG9mCisgICAgICAgICAvLy8gPHNlZSBj cmVmPSdzdHJpbmcnLz4gb2JqZWN0cy4KKyAgICAgICAgIC8vLyA8L3N1bW1hcnk+CistICAgICAg ICBwdWJsaWMgQ2F0ZWdvcnlOYW1lQ29sbGVjdGlvbihzdHJpbmdbXSB2YWx1ZSkgPT4gSW5uZXJM aXN0LkFkZFJhbmdlKHZhbHVlKTsKKysgICAgICAgIHB1YmxpYyBDYXRlZ29yeU5hbWVDb2xsZWN0 aW9uKHN0cmluZ1tdIHZhbHVlKSB7IElubmVyTGlzdC5BZGRSYW5nZSh2YWx1ZSk7IH0KKyAKKyAg ICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgIC8vLyBSZXByZXNlbnRzIHRoZSBlbnRyeSBh dCB0aGUgc3BlY2lmaWVkIGluZGV4IG9mIHRoZSA8c2VlIGNyZWY9J3N0cmluZycvPi4KKyAgICAg ICAgIC8vLyA8L3N1bW1hcnk+CistICAgICAgICBwdWJsaWMgc3RyaW5nIHRoaXNbaW50IGluZGV4 XSA9PiAoKHN0cmluZykoSW5uZXJMaXN0W2luZGV4XSkpOworKyAgICAgICAgcHVibGljIHN0cmlu ZyB0aGlzW2ludCBpbmRleF0geyBnZXQgeyByZXR1cm4gKChzdHJpbmcpKElubmVyTGlzdFtpbmRl eF0pKTsgfSB9CisgCisgICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAgICAgICAvLy8gR2V0cyBh IHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgIDxzZWUgY3JlZj0nQ2F0ZWdvcnlOYW1lQ29s bGVjdGlvbicvPiBjb250YWlucyB0aGUgc3BlY2lmaWVkCisgICAgICAgICAvLy8gPHNlZSBjcmVm PSdzdHJpbmcnLz4uCisgICAgICAgICAvLy8gPC9zdW1tYXJ5PgorLSAgICAgICAgcHVibGljIGJv b2wgQ29udGFpbnMoc3RyaW5nIHZhbHVlKSA9PiBJbm5lckxpc3QuQ29udGFpbnModmFsdWUpOwor KyAgICAgICAgcHVibGljIGJvb2wgQ29udGFpbnMoc3RyaW5nIHZhbHVlKSB7IHJldHVybiBJbm5l ckxpc3QuQ29udGFpbnModmFsdWUpOyB9CisgCisgICAgICAgICAvLy8gPHN1bW1hcnk+CisgICAg ICAgICAvLy8gQ29waWVzIHRoZSA8c2VlIGNyZWY9J0NhdGVnb3J5TmFtZUNvbGxlY3Rpb24nLz4g dmFsdWVzIHRvIGEgb25lLWRpbWVuc2lvbmFsIDxzZWUgY3JlZj0nQXJyYXknLz4gaW5zdGFuY2UK KyAgICAgICAgIC8vLyBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgorICAgICAgICAgLy8vIDwvc3Vt bWFyeT4KKy0gICAgICAgIHB1YmxpYyB2b2lkIENvcHlUbyhzdHJpbmdbXSBhcnJheSwgaW50IGlu ZGV4KSA9PiBJbm5lckxpc3QuQ29weVRvKGFycmF5LCBpbmRleCk7CisrICAgICAgICBwdWJsaWMg dm9pZCBDb3B5VG8oc3RyaW5nW10gYXJyYXksIGludCBpbmRleCkgeyBJbm5lckxpc3QuQ29weVRv KGFycmF5LCBpbmRleCk7IH0KKyAKKyAgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAgICAgIC8v LyBSZXR1cm5zIHRoZSBpbmRleCBvZiBhIDxzZWUgY3JlZj0nc3RyaW5nJy8+IGluICB0aGUgPHNl ZSBjcmVmPSdDYXRlZ29yeU5hbWVDb2xsZWN0aW9uJy8+IC4KKyAgICAgICAgIC8vLyA8L3N1bW1h cnk+CistICAgICAgICBwdWJsaWMgaW50IEluZGV4T2Yoc3RyaW5nIHZhbHVlKSA9PiBJbm5lckxp c3QuSW5kZXhPZih2YWx1ZSk7CisrICAgICAgICBwdWJsaWMgaW50IEluZGV4T2Yoc3RyaW5nIHZh bHVlKSB7IHJldHVybiBJbm5lckxpc3QuSW5kZXhPZih2YWx1ZSk7IH0KKyAgICAgfQorIH0KK2Rp ZmYgLS1naXQgYS9zcmMvU3lzdGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJhd2luZy9E cmF3aW5nMkQvQ3VzdG9tTGluZUNhcC5jcyBiL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3Jj L1N5c3RlbS9EcmF3aW5nL0RyYXdpbmcyRC9DdXN0b21MaW5lQ2FwLmNzCitpbmRleCAxNTI0NzQx MTdkLi5kOTc2OTc3OGM3IDEwMDY0NAorLS0tIGEvc3JjL1N5c3RlbS5EcmF3aW5nLkNvbW1vbi9z cmMvU3lzdGVtL0RyYXdpbmcvRHJhd2luZzJEL0N1c3RvbUxpbmVDYXAuY3MKKysrKyBiL3NyYy9T eXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL0RyYXdpbmcyRC9DdXN0b21M aW5lQ2FwLmNzCitAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgU3lzdGVtLkRyYXdpbmcuRHJh d2luZzJECisgICAgICAgICAgICAgU2V0TmF0aXZlTGluZUNhcChuYXRpdmVMaW5lQ2FwKTsKKyAg ICAgICAgIH0KKyAKKy0gICAgICAgIGludGVybmFsIEN1c3RvbUxpbmVDYXAoSW50UHRyIG5hdGl2 ZUxpbmVDYXApID0+IFNldE5hdGl2ZUxpbmVDYXAobmF0aXZlTGluZUNhcCk7CisrICAgICAgICBp bnRlcm5hbCBDdXN0b21MaW5lQ2FwKEludFB0ciBuYXRpdmVMaW5lQ2FwKSB7IFNldE5hdGl2ZUxp bmVDYXAobmF0aXZlTGluZUNhcCk7IH0KKyAKKyAgICAgICAgIGludGVybmFsIHZvaWQgU2V0TmF0 aXZlTGluZUNhcChJbnRQdHIgaGFuZGxlKQorICAgICAgICAgeworQEAgLTcyLDcgKzcyLDcgQEAg bmFtZXNwYWNlIFN5c3RlbS5EcmF3aW5nLkRyYXdpbmcyRAorICAgICAgICAgICAgIF9kaXNwb3Nl ZCA9IHRydWU7CisgICAgICAgICB9CisgCistICAgICAgICB+Q3VzdG9tTGluZUNhcCgpID0+IERp c3Bvc2UoZmFsc2UpOworKyAgICAgICAgfkN1c3RvbUxpbmVDYXAoKSB7IERpc3Bvc2UoZmFsc2Up OyB9CisgCisgICAgICAgICBwdWJsaWMgb2JqZWN0IENsb25lKCkKKyAgICAgICAgIHsKK2RpZmYg LS1naXQgYS9zcmMvU3lzdGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJhd2luZy9EcmF3 aW5nMkQvR3JhcGhpY3NQYXRoSXRlcmF0b3IuY3MgYi9zcmMvU3lzdGVtLkRyYXdpbmcuQ29tbW9u L3NyYy9TeXN0ZW0vRHJhd2luZy9EcmF3aW5nMkQvR3JhcGhpY3NQYXRoSXRlcmF0b3IuY3MKK2lu ZGV4IGNiOWMzNGM2MmEuLjNiNTUyZjFiYWYgMTAwNjQ0CistLS0gYS9zcmMvU3lzdGVtLkRyYXdp bmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJhd2luZy9EcmF3aW5nMkQvR3JhcGhpY3NQYXRoSXRlcmF0 b3IuY3MKKysrKyBiL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5n L0RyYXdpbmcyRC9HcmFwaGljc1BhdGhJdGVyYXRvci5jcworQEAgLTU4LDcgKzU4LDcgQEAgbmFt ZXNwYWNlIFN5c3RlbS5EcmF3aW5nLkRyYXdpbmcyRAorICAgICAgICAgICAgIH0KKyAgICAgICAg IH0KKyAKKy0gICAgICAgIH5HcmFwaGljc1BhdGhJdGVyYXRvcigpID0+IERpc3Bvc2UoZmFsc2Up OworKyAgICAgICAgfkdyYXBoaWNzUGF0aEl0ZXJhdG9yKCkgeyBEaXNwb3NlKGZhbHNlKTsgfQor IAorICAgICAgICAgcHVibGljIGludCBOZXh0U3VicGF0aChvdXQgaW50IHN0YXJ0SW5kZXgsIG91 dCBpbnQgZW5kSW5kZXgsIG91dCBib29sIGlzQ2xvc2VkKQorICAgICAgICAgeworZGlmZiAtLWdp dCBhL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL0RyYXdpbmcy RC9HcmFwaGljc1N0YXRlLmNzIGIvc3JjL1N5c3RlbS5EcmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVt L0RyYXdpbmcvRHJhd2luZzJEL0dyYXBoaWNzU3RhdGUuY3MKK2luZGV4IGM3ZDA4Njc1NmUuLjYx ZGU5NDhiMmQgMTAwNjQ0CistLS0gYS9zcmMvU3lzdGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0 ZW0vRHJhd2luZy9EcmF3aW5nMkQvR3JhcGhpY3NTdGF0ZS5jcworKysrIGIvc3JjL1N5c3RlbS5E cmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVtL0RyYXdpbmcvRHJhd2luZzJEL0dyYXBoaWNzU3RhdGUu Y3MKK0BAIC04LDcgKzgsNyBAQCBuYW1lc3BhY2UgU3lzdGVtLkRyYXdpbmcuRHJhd2luZzJECisg ICAgIHsKKyAgICAgICAgIGludGVybmFsIGludCBuYXRpdmVTdGF0ZTsKKyAKKy0gICAgICAgIGlu dGVybmFsIEdyYXBoaWNzU3RhdGUoaW50IG5hdGl2ZVN0YXRlKSA9PiB0aGlzLm5hdGl2ZVN0YXRl ID0gbmF0aXZlU3RhdGU7CisrICAgICAgICBpbnRlcm5hbCBHcmFwaGljc1N0YXRlKGludCBuYXRp dmVTdGF0ZSkgeyB0aGlzLm5hdGl2ZVN0YXRlID0gbmF0aXZlU3RhdGU7IH0KKyAgICAgfQorIH0K KyAKK2RpZmYgLS1naXQgYS9zcmMvU3lzdGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0ZW0vRHJh d2luZy9EcmF3aW5nMkQvUmVnaW9uRGF0YS5jcyBiL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24v c3JjL1N5c3RlbS9EcmF3aW5nL0RyYXdpbmcyRC9SZWdpb25EYXRhLmNzCitpbmRleCA1OTZiODYy MmViLi5kZmEyNDQ2Yzg3IDEwMDY0NAorLS0tIGEvc3JjL1N5c3RlbS5EcmF3aW5nLkNvbW1vbi9z cmMvU3lzdGVtL0RyYXdpbmcvRHJhd2luZzJEL1JlZ2lvbkRhdGEuY3MKKysrKyBiL3NyYy9TeXN0 ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL0RyYXdpbmcyRC9SZWdpb25EYXRh LmNzCitAQCAtNiw3ICs2LDcgQEAgbmFtZXNwYWNlIFN5c3RlbS5EcmF3aW5nLkRyYXdpbmcyRAor IHsKKyAgICAgcHVibGljIHNlYWxlZCBjbGFzcyBSZWdpb25EYXRhCisgICAgIHsKKy0gICAgICAg IGludGVybmFsIFJlZ2lvbkRhdGEoYnl0ZVtdIGRhdGEpID0+IERhdGEgPSBkYXRhOworKyAgICAg ICAgaW50ZXJuYWwgUmVnaW9uRGF0YShieXRlW10gZGF0YSkgeyBEYXRhID0gZGF0YTsgfQorIAor ICAgICAgICAgcHVibGljIGJ5dGVbXSBEYXRhIHsgZ2V0OyBzZXQ7IH0KKyAgICAgfQorZGlmZiAt LWdpdCBhL3NyYy9TeXN0ZW0uRHJhd2luZy5Db21tb24vc3JjL1N5c3RlbS9EcmF3aW5nL1RleHQv Rm9udENvbGxlY3Rpb24uY3MgYi9zcmMvU3lzdGVtLkRyYXdpbmcuQ29tbW9uL3NyYy9TeXN0ZW0v RHJhd2luZy9UZXh0L0ZvbnRDb2xsZWN0aW9uLmNzCitpbmRleCBkZjJhYzVjOGMyLi5hNDUxZGM2 MjFkIDEwMDY0NAorLS0tIGEvc3JjL1N5c3RlbS5EcmF3aW5nLkNvbW1vbi9zcmMvU3lzdGVtL0Ry YXdpbmcvVGV4dC9Gb250Q29sbGVjdGlvbi5jcworKysrIGIvc3JjL1N5c3RlbS5EcmF3aW5nLkNv bW1vbi9zcmMvU3lzdGVtL0RyYXdpbmcvVGV4dC9Gb250Q29sbGVjdGlvbi5jcworQEAgLTE0LDcg KzE0LDcgQEAgbmFtZXNwYWNlIFN5c3RlbS5EcmF3aW5nLlRleHQKKyAgICAgeworICAgICAgICAg aW50ZXJuYWwgSW50UHRyIF9uYXRpdmVGb250Q29sbGVjdGlvbjsKKyAKKy0gICAgICAgIGludGVy bmFsIEZvbnRDb2xsZWN0aW9uKCkgPT4gX25hdGl2ZUZvbnRDb2xsZWN0aW9uID0gSW50UHRyLlpl cm87CisrICAgICAgICBpbnRlcm5hbCBGb250Q29sbGVjdGlvbigpIHsgX25hdGl2ZUZvbnRDb2xs ZWN0aW9uID0gSW50UHRyLlplcm87IH0KKyAKKyAgICAgICAgIC8vLyA8c3VtbWFyeT4KKyAgICAg ICAgIC8vLyBEaXNwb3NlcyBvZiB0aGlzIDxzZWUgY3JlZj0nU3lzdGVtLkRyYXdpbmcuVGV4dC5G b250Q29sbGVjdGlvbicvPgorQEAgLTU4LDYgKzU4LDYgQEAgbmFtZXNwYWNlIFN5c3RlbS5EcmF3 aW5nLlRleHQKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCistICAgICAgICB+Rm9udENv bGxlY3Rpb24oKSA9PiBEaXNwb3NlKGZhbHNlKTsKKysgICAgICAgIH5Gb250Q29sbGVjdGlvbigp IHsgRGlzcG9zZShmYWxzZSk7IH0KKyAgICAgfQorIH0KK2RpZmYgLS1naXQgYS9zcmMvU3lzdGVt LkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9EeW5hbWljL1V0aWxzL1R5cGVFeHRlbnNpb25z LmNzIGIvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vRHluYW1pYy9VdGls cy9UeXBlRXh0ZW5zaW9ucy5jcworaW5kZXggYzQ1Y2FiYTA5My4uZWY5YTI1MjAzZCAxMDA2NDQK Ky0tLSBhL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0R5bmFtaWMvVXRp bHMvVHlwZUV4dGVuc2lvbnMuY3MKKysrKyBiL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9z cmMvU3lzdGVtL0R5bmFtaWMvVXRpbHMvVHlwZUV4dGVuc2lvbnMuY3MKK0BAIC02NSw3ICs2NSw4 IEBAIG5hbWVzcGFjZSBTeXN0ZW0uRHluYW1pYy5VdGlscworICAgICAgICAgaW50ZXJuYWwgc3Rh dGljIFBhcmFtZXRlckluZm9bXSBHZXRQYXJhbWV0ZXJzQ2FjaGVkKHRoaXMgTWV0aG9kQmFzZSBt ZXRob2QpCisgICAgICAgICB7CisgICAgICAgICAgICAgQ2FjaGVEaWN0PE1ldGhvZEJhc2UsIFBh cmFtZXRlckluZm9bXT4gcGljID0gc19wYXJhbUluZm9DYWNoZTsKKy0gICAgICAgICAgICBpZiAo IXBpYy5UcnlHZXRWYWx1ZShtZXRob2QsIG91dCBQYXJhbWV0ZXJJbmZvW10gcGlzKSkKKysgICAg ICAgICAgICBQYXJhbWV0ZXJJbmZvW10gcGlzOworKyAgICAgICAgICAgIGlmICghcGljLlRyeUdl dFZhbHVlKG1ldGhvZCwgb3V0IHBpcykpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICBwaXMgPSBtZXRob2QuR2V0UGFyYW1ldGVycygpOworIAorZGlmZiAtLWdpdCBhL3NyYy9TeXN0 ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0xpbnEvRXhwcmVzc2lvbnMvQ29tcGlsZXIv TGFtYmRhQ29tcGlsZXIuRXhwcmVzc2lvbnMuY3MgYi9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lv bnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25zL0NvbXBpbGVyL0xhbWJkYUNvbXBpbGVyLkV4 cHJlc3Npb25zLmNzCitpbmRleCBkOGIxYzYxZjc0Li44Y2VmYmQ0ZjE5IDEwMDY0NAorLS0tIGEv c3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9D b21waWxlci9MYW1iZGFDb21waWxlci5FeHByZXNzaW9ucy5jcworKysrIGIvc3JjL1N5c3RlbS5M aW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9Db21waWxlci9MYW1i ZGFDb21waWxlci5FeHByZXNzaW9ucy5jcworQEAgLTk1Miw4ICs5NTIsOSBAQCBuYW1lc3BhY2Ug U3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMuQ29tcGlsZXIKKyAgICAgICAgIHByaXZhdGUgdm9pZCBF bWl0TWVtYmVyQXNzaWdubWVudChNZW1iZXJBc3NpZ25tZW50IGJpbmRpbmcsIFR5cGUgb2JqZWN0 VHlwZSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBFbWl0RXhwcmVzc2lvbihiaW5kaW5nLkV4 cHJlc3Npb24pOworLSAgICAgICAgICAgIGlmIChiaW5kaW5nLk1lbWJlciBpcyBGaWVsZEluZm8g ZmkpCisrICAgICAgICAgICAgaWYgKGJpbmRpbmcuTWVtYmVyIGlzIEZpZWxkSW5mbykKKyAgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgIEZpZWxkSW5mbyBmaSA9IChGaWVsZEluZm8pYmlu ZGluZy5NZW1iZXI7CisgICAgICAgICAgICAgICAgIF9pbGcuRW1pdChPcENvZGVzLlN0ZmxkLCBm aSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGVsc2UKK0BAIC0xMDk3LDcgKzEwOTgs NyBAQCBuYW1lc3BhY2UgU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMuQ29tcGlsZXIKKyAgICAgICAg IHByaXZhdGUgc3RhdGljIFR5cGUgR2V0TWVtYmVyVHlwZShNZW1iZXJJbmZvIG1lbWJlcikKKyAg ICAgICAgIHsKKyAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQobWVtYmVyIGlzIEZpZWxkSW5mbyB8 fCBtZW1iZXIgaXMgUHJvcGVydHlJbmZvKTsKKy0gICAgICAgICAgICByZXR1cm4gbWVtYmVyIGlz IEZpZWxkSW5mbyBmaSA/IGZpLkZpZWxkVHlwZSA6IChtZW1iZXIgYXMgUHJvcGVydHlJbmZvKS5Q cm9wZXJ0eVR5cGU7CisrICAgICAgICAgICAgcmV0dXJuIG1lbWJlciBpcyBGaWVsZEluZm8gPyAo KEZpZWxkSW5mbyltZW1iZXIpLkZpZWxkVHlwZSA6IChtZW1iZXIgYXMgUHJvcGVydHlJbmZvKS5Q cm9wZXJ0eVR5cGU7CisgICAgICAgICB9CisgCisgICAgICAgICAjZW5kcmVnaW9uCitkaWZmIC0t Z2l0IGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNz aW9ucy9NZW1iZXJBc3NpZ25tZW50LmNzIGIvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3Ny Yy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJBc3NpZ25tZW50LmNzCitpbmRleCA0NzVh NmM2M2NjLi4wNzg3YjEwMTg2IDEwMDY0NAorLS0tIGEvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Np b25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJBc3NpZ25tZW50LmNzCisrKysg Yi9zcmMvU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMvc3JjL1N5c3RlbS9MaW5xL0V4cHJlc3Npb25z L01lbWJlckFzc2lnbm1lbnQuY3MKK0BAIC05MywyMyArOTMsMjMgQEAgbmFtZXNwYWNlIFN5c3Rl bS5MaW5xLkV4cHJlc3Npb25zCisgCisgICAgICAgICAgICAgLy8gTnVsbCBwYXJhbU5hbWUgYXMg dGhlcmUgYXJlIHR3byBwYXRocyBoZXJlIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlciBuYW1lcyBh dCB0aGUgQVBJCisgICAgICAgICAgICAgVHlwZVV0aWxzLlZhbGlkYXRlVHlwZShkZWNUeXBlLCBu dWxsKTsKKy0gICAgICAgICAgICBzd2l0Y2ggKG1lbWJlcikKKysgICAgICAgICAgICBpZiAobWVt YmVyIGlzIFByb3BlcnR5SW5mbykKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGNh c2UgUHJvcGVydHlJbmZvIHBpOgorLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwaS5DYW5Xcml0 ZSkKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICB0aHJv dyBFcnJvci5Qcm9wZXJ0eURvZXNOb3RIYXZlU2V0dGVyKHBpLCBuYW1lb2YobWVtYmVyKSk7Cist ICAgICAgICAgICAgICAgICAgICB9CistCistICAgICAgICAgICAgICAgICAgICBtZW1iZXJUeXBl ID0gcGkuUHJvcGVydHlUeXBlOworLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CistCistICAg ICAgICAgICAgICAgIGNhc2UgRmllbGRJbmZvIGZpOgorLSAgICAgICAgICAgICAgICAgICAgbWVt YmVyVHlwZSA9IGZpLkZpZWxkVHlwZTsKKy0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworLQor LSAgICAgICAgICAgICAgICBkZWZhdWx0OgorLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJy b3IuQXJndW1lbnRNdXN0QmVGaWVsZEluZm9PclByb3BlcnR5SW5mbyhuYW1lb2YobWVtYmVyKSk7 CisrICAgICAgICAgICAgICAgIFByb3BlcnR5SW5mbyBwaSA9IChQcm9wZXJ0eUluZm8pIG1lbWJl cjsKKysgICAgICAgICAgICAgICAgaWYgKCFwaS5DYW5Xcml0ZSkKKysgICAgICAgICAgICAgICAg eworKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IuUHJvcGVydHlEb2VzTm90SGF2ZVNl dHRlcihwaSwgbmFtZW9mKG1lbWJlcikpOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAg ICAgICAgIG1lbWJlclR5cGUgPSBwaS5Qcm9wZXJ0eVR5cGU7CisrICAgICAgICAgICAgfQorKyAg ICAgICAgICAgIGVsc2UgaWYgKG1lbWJlciBpcyBGaWVsZEluZm8pCisrICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgICBGaWVsZEluZm8gZmkgPSAoRmllbGRJbmZvKSBtZW1iZXI7CisrICAg ICAgICAgICAgICAgIG1lbWJlclR5cGUgPSBmaS5GaWVsZFR5cGU7CisrICAgICAgICAgICAgfQor KyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIHRocm93 IEVycm9yLkFyZ3VtZW50TXVzdEJlRmllbGRJbmZvT3JQcm9wZXJ0eUluZm8obmFtZW9mKG1lbWJl cikpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3Ny Yy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0xpbnEvRXhwcmVzc2lvbnMvTWVt YmVyQmluZGluZy5jcyBiL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0xp bnEvRXhwcmVzc2lvbnMvTWVtYmVyQmluZGluZy5jcworaW5kZXggYzFjNTg4NDYxOC4uNDNjMDY5 OGY5MCAxMDA2NDQKKy0tLSBhL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVt L0xpbnEvRXhwcmVzc2lvbnMvTWVtYmVyQmluZGluZy5jcworKysrIGIvc3JjL1N5c3RlbS5MaW5x LkV4cHJlc3Npb25zL3NyYy9TeXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJCaW5kaW5nLmNz CitAQCAtNjEsNiArNjEsOSBAQCBuYW1lc3BhY2UgU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMKKyAg ICAgICAgICAgICByZXR1cm4gRXhwcmVzc2lvblN0cmluZ0J1aWxkZXIuTWVtYmVyQmluZGluZ1Rv U3RyaW5nKHRoaXMpOworICAgICAgICAgfQorIAorLSAgICAgICAgaW50ZXJuYWwgdmlydHVhbCB2 b2lkIFZhbGlkYXRlQXNEZWZpbmVkSGVyZShpbnQgaW5kZXgpID0+IHRocm93IEVycm9yLlVua25v d25CaW5kaW5nVHlwZShpbmRleCk7CisrICAgICAgICBpbnRlcm5hbCB2aXJ0dWFsIHZvaWQgVmFs aWRhdGVBc0RlZmluZWRIZXJlKGludCBpbmRleCkKKysgICAgICAgIHsKKysgICAgICAgICAgICB0 aHJvdyBFcnJvci5Vbmtub3duQmluZGluZ1R5cGUoaW5kZXgpOworKyAgICAgICAgfQorICAgICB9 CisgfQorZGlmZiAtLWdpdCBhL3NyYy9TeXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVt L0xpbnEvRXhwcmVzc2lvbnMvTWVtYmVyTWVtYmVyQmluZGluZy5jcyBiL3NyYy9TeXN0ZW0uTGlu cS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0xpbnEvRXhwcmVzc2lvbnMvTWVtYmVyTWVtYmVyQmlu ZGluZy5jcworaW5kZXggZjM5ODFhMmIxZi4uNzVkZDcxNDFkYSAxMDA2NDQKKy0tLSBhL3NyYy9T eXN0ZW0uTGlucS5FeHByZXNzaW9ucy9zcmMvU3lzdGVtL0xpbnEvRXhwcmVzc2lvbnMvTWVtYmVy TWVtYmVyQmluZGluZy5jcworKysrIGIvc3JjL1N5c3RlbS5MaW5xLkV4cHJlc3Npb25zL3NyYy9T eXN0ZW0vTGlucS9FeHByZXNzaW9ucy9NZW1iZXJNZW1iZXJCaW5kaW5nLmNzCitAQCAtMTI3LDIz ICsxMjcsMjQgQEAgbmFtZXNwYWNlIFN5c3RlbS5MaW5xLkV4cHJlc3Npb25zCisgCisgICAgICAg ICAgICAgLy8gTnVsbCBwYXJhbU5hbWUgYXMgdGhlcmUgYXJlIHNldmVyYWwgcGF0aHMgaGVyZSB3 aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXIgbmFtZXMgYXQgdGhlIEFQSQorICAgICAgICAgICAgIFR5 cGVVdGlscy5WYWxpZGF0ZVR5cGUoZGVjVHlwZSwgbnVsbCwgYWxsb3dCeVJlZjogdHJ1ZSwgYWxs b3dQb2ludGVyOiB0cnVlKTsKKy0gICAgICAgICAgICBzd2l0Y2ggKG1lbWJlcikKKysgICAgICAg ICAgICBpZiAobWVtYmVyIGlzIFByb3BlcnR5SW5mbykKKyAgICAgICAgICAgICB7CistICAgICAg ICAgICAgICAgIGNhc2UgUHJvcGVydHlJbmZvIHBpOgorLSAgICAgICAgICAgICAgICAgICAgaWYg KCFwaS5DYW5SZWFkKQorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAg ICAgICAgIHRocm93IEVycm9yLlByb3BlcnR5RG9lc05vdEhhdmVHZXR0ZXIocGksIG5hbWVvZiht ZW1iZXIpKTsKKy0gICAgICAgICAgICAgICAgICAgIH0KKy0KKy0gICAgICAgICAgICAgICAgICAg IG1lbWJlclR5cGUgPSBwaS5Qcm9wZXJ0eVR5cGU7CistICAgICAgICAgICAgICAgICAgICBicmVh azsKKy0KKy0gICAgICAgICAgICAgICAgY2FzZSBGaWVsZEluZm8gZmk6CistICAgICAgICAgICAg ICAgICAgICBtZW1iZXJUeXBlID0gZmkuRmllbGRUeXBlOworLSAgICAgICAgICAgICAgICAgICAg YnJlYWs7CisrICAgICAgICAgICAgICAgIFByb3BlcnR5SW5mbyBwaSA9IChQcm9wZXJ0eUluZm8p bWVtYmVyOworKyAgICAgICAgICAgICAgICBpZiAoIXBpLkNhblJlYWQpCisrICAgICAgICAgICAg ICAgIHsKKysgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yLlByb3BlcnR5RG9lc05vdEhh dmVHZXR0ZXIocGksIG5hbWVvZihtZW1iZXIpKTsKKysgICAgICAgICAgICAgICAgfQorIAorLSAg ICAgICAgICAgICAgICBkZWZhdWx0OgorLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3Iu QXJndW1lbnRNdXN0QmVGaWVsZEluZm9PclByb3BlcnR5SW5mbyhuYW1lb2YobWVtYmVyKSk7Cisr ICAgICAgICAgICAgICAgIG1lbWJlclR5cGUgPSBwaS5Qcm9wZXJ0eVR5cGU7CisrICAgICAgICAg ICAgfQorKyAgICAgICAgICAgIGVsc2UgaWYgKG1lbWJlciBpcyBGaWVsZEluZm8pCisrICAgICAg ICAgICAgeworKyAgICAgICAgICAgICAgICBGaWVsZEluZm8gZmkgPSAoRmllbGRJbmZvKW1lbWJl cjsKKysgICAgICAgICAgICAgICAgbWVtYmVyVHlwZSA9IGZpLkZpZWxkVHlwZTsKKysgICAgICAg ICAgICB9CisrICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgdGhyb3cgRXJyb3IuQXJndW1lbnRNdXN0QmVGaWVsZEluZm9PclByb3BlcnR5SW5mbyhuYW1l b2YobWVtYmVyKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorIAorZGlmZiAtLWdpdCBh L3NyYy9TeXN0ZW0uTGlucS9zcmMvU3lzdGVtL0xpbnEvUmV2ZXJzZS5jcyBiL3NyYy9TeXN0ZW0u TGlucS9zcmMvU3lzdGVtL0xpbnEvUmV2ZXJzZS5jcworaW5kZXggZTY4YTRmNDJlZS4uYTYzNTI3 NzliMCAxMDA2NDQKKy0tLSBhL3NyYy9TeXN0ZW0uTGlucS9zcmMvU3lzdGVtL0xpbnEvUmV2ZXJz ZS5jcworKysrIGIvc3JjL1N5c3RlbS5MaW5xL3NyYy9TeXN0ZW0vTGlucS9SZXZlcnNlLmNzCitA QCAtMTAzLDE5ICsxMDMsMjQgQEAgbmFtZXNwYWNlIFN5c3RlbS5MaW5xCisgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICBpZiAob25seUlmQ2hlYXApCisgICAgICAgICAgICAgICAgIHsK Ky0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX3NvdXJjZSkKKysgICAgICAgICAgICAgICAg ICAgIGlmIChfc291cmNlIGlzIElJTGlzdFByb3ZpZGVyPFRTb3VyY2U+KQorICAgICAgICAgICAg ICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgSUlMaXN0UHJvdmlkZXI8 VFNvdXJjZT4gbGlzdFByb3Y6CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBs aXN0UHJvdi5HZXRDb3VudChvbmx5SWZDaGVhcDogdHJ1ZSk7CistCistICAgICAgICAgICAgICAg ICAgICAgICAgY2FzZSBJQ29sbGVjdGlvbjxUU291cmNlPiBjb2xUOgorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gY29sVC5Db3VudDsKKy0KKy0gICAgICAgICAgICAgICAgICAg ICAgICBjYXNlIElDb2xsZWN0aW9uIGNvbDoKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGNvbC5Db3VudDsKKy0KKy0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisrICAgICAgICAgICAgICAg ICAgICAgICAgSUlMaXN0UHJvdmlkZXI8VFNvdXJjZT4gbGlzdFByb3YgPSAoSUlMaXN0UHJvdmlk ZXI8VFNvdXJjZT4pX3NvdXJjZTsKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGlz dFByb3YuR2V0Q291bnQob25seUlmQ2hlYXA6IHRydWUpOworKyAgICAgICAgICAgICAgICAgICAg fQorKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoX3NvdXJjZSBpcyBJQ29sbGVjdGlvbjxU U291cmNlPikKKysgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAg ICBJQ29sbGVjdGlvbjxUU291cmNlPiBjb2xUID0gKElDb2xsZWN0aW9uPFRTb3VyY2U+KSBfc291 cmNlOworKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xULkNvdW50OworKyAgICAg ICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoX3NvdXJjZSBp cyBJQ29sbGVjdGlvbikKKysgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg ICAgICAgICBJQ29sbGVjdGlvbiBjb2wgPSAoSUNvbGxlY3Rpb24pIF9zb3VyY2U7CisrICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbC5Db3VudDsKKysgICAgICAgICAgICAgICAgICAg IH0KKysgICAgICAgICAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgICAgIHsKKysg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvU3lzdGVtLk5ldC5IdHRw TGlzdGVuZXIvc3JjL1N5c3RlbS9OZXQvV2ViU29ja2V0cy9IdHRwTGlzdGVuZXJXZWJTb2NrZXRD b250ZXh0LmNzIGIvc3JjL1N5c3RlbS5OZXQuSHR0cExpc3RlbmVyL3NyYy9TeXN0ZW0vTmV0L1dl YlNvY2tldHMvSHR0cExpc3RlbmVyV2ViU29ja2V0Q29udGV4dC5jcworaW5kZXggNTMyMTU3ODk0 Ni4uZmY1NDY3NzAyNyAxMDA2NDQKKy0tLSBhL3NyYy9TeXN0ZW0uTmV0Lkh0dHBMaXN0ZW5lci9z cmMvU3lzdGVtL05ldC9XZWJTb2NrZXRzL0h0dHBMaXN0ZW5lcldlYlNvY2tldENvbnRleHQuY3MK KysrKyBiL3NyYy9TeXN0ZW0uTmV0Lkh0dHBMaXN0ZW5lci9zcmMvU3lzdGVtL05ldC9XZWJTb2Nr ZXRzL0h0dHBMaXN0ZW5lcldlYlNvY2tldENvbnRleHQuY3MKK0BAIC05NCw4ICs5NCw5IEBAIG5h bWVzcGFjZSBTeXN0ZW0uTmV0LldlYlNvY2tldHMKKyAgICAgICAgICAgICAgICAgaWYgKCEodXNl ciBpcyBXaW5kb3dzUHJpbmNpcGFsKSkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICAgLy8gQXV0aGVudGljYXRpb25TY2hlbWVzLkJhc2ljLgorLSAgICAgICAgICAgICAg ICAgICAgaWYgKHVzZXIuSWRlbnRpdHkgaXMgSHR0cExpc3RlbmVyQmFzaWNJZGVudGl0eSBiYXNp Y0lkZW50aXR5KQorKyAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXIuSWRlbnRpdHkgaXMgSHR0 cExpc3RlbmVyQmFzaWNJZGVudGl0eSkKKyAgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAg ICAgICAgICAgICAgICAgICBIdHRwTGlzdGVuZXJCYXNpY0lkZW50aXR5IGJhc2ljSWRlbnRpdHkg PSAoSHR0cExpc3RlbmVyQmFzaWNJZGVudGl0eSl1c2VyLklkZW50aXR5OworICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY1ByaW5jaXBhbChuZXcgSHR0cExpc3RlbmVy QmFzaWNJZGVudGl0eShiYXNpY0lkZW50aXR5Lk5hbWUsIGJhc2ljSWRlbnRpdHkuUGFzc3dvcmQp LCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQotLSAK Mi40NS4yCgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0018-gnu-Add-mono-pre-5.10.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0018-gnu-Add-mono-pre-5.10.0.patch RnJvbSA1OGFlYmIyYWI1ZWY2ZmY4MDYyZGIwZmY2MWUyNmQxMWNhMGUzYTJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8NThhZWJiMmFiNWVmNmZmODA2MmRiMGZmNjFlMjZk MTFjYTBlM2EyYi4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFdlZCwgMjcgTm92IDIwMjQgMDA6 NTI6MDUKU3ViamVjdDogW1BBVENIIDE4LzIxXSBnbnU6IEFkZCBtb25vLXByZS01LjEwLjAuCgoq IGdudS9wYWNrYWdlcy9kb3RuZXQuc2NtCiAgKG1vbm8tcHJlLTUuMTAuMC1leHRlcm5hbC1yZXBv LXNwZWNzLCBtb25vLXByZS01LjEwLjApOiBOZXcgdmFyaWFibGVzLgoqIGdudS9wYWNrYWdlcy9w YXRjaGVzL21vbm8tbWNzLXBhdGNoZXMtZnJvbS01LjEwLjAucGF0Y2g6IE5ldyBwYXRjaC4KKiBn bnUvbG9jYWwubWsgKGRpc3RfcGF0Y2hfREFUQSk6IFJlZ2lzdGVyIG5ldyBwYXRjaC4KCkNoYW5n ZS1JZDogSWU3OGRjZTA3MTAzMmI2NzQzYjZlNGMyZWI1OGU0M2JjODllNmExZDEKLS0tCiBnbnUv bG9jYWwubWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGdudS9w YWNrYWdlcy9kb3RuZXQuc2NtICAgICAgICAgICAgICAgICAgICAgICB8ICAgNzMgKwogLi4uL21v bm8tbWNzLXBhdGNoZXMtZnJvbS01LjEwLjAucGF0Y2ggICAgICAgIHwgNDIxOCArKysrKysrKysr KysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA0MjkyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLW1jcy1wYXRjaGVzLWZyb20tNS4xMC4w LnBhdGNoCgpkaWZmIC0tZ2l0IGEvZ251L2xvY2FsLm1rIGIvZ251L2xvY2FsLm1rCmluZGV4IDRh Nzg3MjZjOWYuLjdlMjY0MTZlNzggMTAwNjQ0Ci0tLSBhL2dudS9sb2NhbC5taworKysgYi9nbnUv bG9jYWwubWsKQEAgLTE3NzEsNiArMTc3MSw3IEBAIGRpc3RfcGF0Y2hfREFUQSA9CQkJCQkJXAog ICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTQuOS4wLWZpeC1ydW50aW1lbWV0YWRhdGF2ZXJz aW9uLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNS40LjAtcGF0Y2hlcy5w YXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTUuOC4wLXBhdGNoZXMucGF0Y2gJ CVwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby1tY3MtcGF0Y2hlcy1mcm9tLTUuMTAuMC5w YXRjaAlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vc2FpY2F0Y2hlci11bmJ1bmRsZS1odHNs aWIucGF0Y2gJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tcnJlc2N1ZS1zdXBwb3J0LWxvdmUt MTEucGF0Y2gJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbXRvb2xzLW1mb3JtYXQtdW5pbml0 aWFsaXplZC5wYXRjaAlcCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbSBiL2du dS9wYWNrYWdlcy9kb3RuZXQuc2NtCmluZGV4IDE0NGY2Nzg3MmIuLjQzOWU5Nzc5YmIgMTAwNjQ0 Ci0tLSBhL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCisrKyBiL2dudS9wYWNrYWdlcy9kb3RuZXQu c2NtCkBAIC0xMzk5LDMgKzEzOTksNzYgQEAgKGRlZmluZS1wdWJsaWMgbW9uby01LjguMAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AgIi9tY3MvY2xhc3MvbGliL2J1aWxkL21j cy5leGUiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZS1mbGFncykpKSkpKSkpKSkp CisKKyhkZWZpbmUgbW9uby1wcmUtNS4xMC4wLWV4dGVybmFsLXJlcG8tc3BlY3MKKyAgJygoImFw aS1kb2MtdG9vbHMiICAgICAgICAgICAgICAgImQwM2U4MTk4MzhjNjI0MWY5MmY5MDY1NWNiNDQ4 Y2M0N2M5ZTg3OTEiCisgICAgICIxcmlraTc5ZjNpZzNjeGlndmlzczgxZHo2MDFobjkyYTFnaWZn bG0wbXpqYnM3NnNmM2ZqIgorICAgICAjOnJlY3Vyc2l2ZT8gI3QpCisgICAgKCJhcGktc25hcHNo b3QiICAgICAgICAgICAgICAgICI2MjczMzNjYWU4NGYwMmEzNmVlOWNhNjA1Yzk2ZGFjNDU1N2Q5 ZjM1IgorICAgICAiMHA5YzZicnhpd3gzOHl2YWY1NWpkMGwxbXhmajNiNWFoMHhhczJodjZmcmt6 ODB5cnFkbCIpCisgICAgKCJhc3BuZXR3ZWJzdGFjayIgICAgICAgICAgICAgICJlNzdiMTJlNmNj NWVkMjYwYTk4NDQ3ZjYwOWU4ODczMzdlNDRlMjk5IgorICAgICAiMHJrczM0NHFyNGZtcDNmczEy NjRkMnFrbW0zNDhtOGQxa2pkN3o0bDk0aWlpcnduMWZxMSIpCisgICAgKCgicmVmZXJlbmNlLWFz c2VtYmxpZXMiICJiaW5hcnktcmVmZXJlbmNlLWFzc2VtYmxpZXMiKQorICAgICAiOWM1Y2M3ZjA1 MWEwYmJhMmU0MTM0MWE1YmFlYmZjNGQyYzIxMzNlZiIKKyAgICAgIjE0YmZuMXF2bmk4Z3lmeGp3 bXZ5a3lqankzajVuZzRmbmJsamRhZGk5ZG00YjlhbDB3ZzEiKQorICAgICgiYm9ja2J1aWxkIiAg ICAgICAgICAgICAgICAgICAiMjkwMjJhZjVkOGE5NDY1MWIyZWVjZTkzZjkxMDU1OWIyNTRlYzNm MCIKKyAgICAgIjBsY2xjMXNtbXJqNnh3MzJkbGwwNzNteHc0ZGRpaXh2OWFydjAyeXczdzVoMTM1 YXk3dzQiKQorICAgICgiYm9yaW5nc3NsIiAgICAgICAgICAgICAgICAgICAiM2UwNzcwZTE4ODM1 NzE0NzA4ODYwYmE5ZmUxYWYwNGE5MzI5NzFmZiIKKyAgICAgIjEzOWEwZ2w5MWE1MmsycjZuYTZp YWx6a3F5a2FqMXJrODh6anJrYXozc2R4eDdubW1nNnkiKQorICAgICgiY2VjaWwiICAgICAgICAg ICAgICAgICAgICAgICAiYmMxMWY0NzI5NTQ2OTRlYmQ5MmFlNDk1NmYxMTBjMTAzNmE3YzJlMCIK KyAgICAgIjEyMm5ucDVwY253MThwajZhbW5xa3F4bHJtYXBkNHZ5OXhzNjVoZDBicXlxamg1NmJ3 bmQiKQorICAgICgoImNlY2lsIiAiY2VjaWwtbGVnYWN5IikgICAgICAiMzNkNTBiODc0ZmQ1Mjcx MThiYzM2MWQ4M2RlM2Q0OTRlOGJiNTVlMSIKKyAgICAgIjFwNGhsMTc5NmliMjZ5a3lmNXNubDZj ajBseDB2N21qaDB4cWhqdzZxZGg3NTNuc2p5aGIiKQorICAgICgiY29yZWZ4IiAgICAgICAgICAg ICAgICAgICAgICAiY2IxYjA0OWM5NTIyNzQ2NWMxNzkxYjg1N2NiNWJhODYzODVkOWYyOSIKKyAg ICAgIjFwcjBxamxneGY2M3pzMWc4MGdxZDZ4M3FobGdiMHdsY2M4em04ejhhbTVheXdydmdiNTMi KQorICAgICgiY29yZXJ0IiAgICAgICAgICAgICAgICAgICAgICAiNDhkYmE3MzgwMWU4MDRlODlm MDAzMTFkYTk5ZDg3M2Y5YzU1MDI3OCIKKyAgICAgIjF6dzQ3amY0Y3dxbWFpeHlsaXN4aTczeGY2 Y2FwNDFid2Y5dmxtcHhhbnp4YXFrbHpzdmsiKQorICAgICgiaWtkYXNtIiAgICAgICAgICAgICAg ICAgICAgICAiNDY1YzA4MTU1NThmZDQzYzAxMTBmOGQwMGZjMTg2YWMwMDQ0YWM2YSIKKyAgICAg IjB4aXI3cGNncTA0aGI3czhnOXdzcWRyeXBiNmwyOXJhajNpejVyY3F6ZG0wMDU2azc1dzIiKQor ICAgICgoImlrdm0tZm9yayIgImlrdm0iKSAgICAgICAgICAiODQ3ZTA1ZmNlZDVjOWE0MWZmMGYy NGYxZjlkNDBkNWE4YTU3NzJjMSIKKyAgICAgIjFmbDlibTNsbXpmOGlxdjN4NGlxa3o5ZmM1NG13 ZHZyeGlzeGcybnZ3d2NzaTRzYWZmcGkiKQorICAgICgibGlua2VyIiAgICAgICAgICAgICAgICAg ICAgICAiOTkzNTRiZjVjMTNiODA1NTIwOWNiMDgyY2RkYzUwYzgwNDdhYjA4OCIKKyAgICAgIjA1 emxham5xZjgzeGZ2bjJ3aGg5bnFsNmo4NXNxMTJhdzI2c3FteXF6N3pjcG1sMTcxbWoiKQorICAg ICgiTmV3dG9uc29mdC5Kc29uIiAgICAgICAgICAgICAiNDcxYzNlMDgwM2E5ZjQwYTBhY2M4YWVj ZWIzMWRlNmZmOTNhNTJjNCIKKyAgICAgIjBkZ25nZDVocWs2eWhsZzQwa2FibjZxZG5rbm0zMnpj eDlxNmJtMnczMWNzbnNrNTk3OHMiKQorICAgICgoIk51R2V0LkJ1aWxkVGFza3MiICJudWdldC1i dWlsZHRhc2tzIikKKyAgICAgImI1OGJhNDI4MjM3N2JjZWZkNDhhYmRjMmQ2MmNlNjMzMGUwNzlh YmUiCisgICAgICIxc2F5MDNmbnFranN4OTd6YWNhbnkzc2E1ajRtaGZrODI3aGt3cDIzaWIwMnEx OGY3bHZwIikKKyAgICAoKCJOVW5pdExpdGUiICJudW5pdC1saXRlIikgICAgIjc2NDY1NmNkYWZk YjNhY2QyNWRmOGNiNTJhNGUwZWExNDc2MGZjY2QiCisgICAgICIwcGM3bGszcDkxNmlzOGNuNG5n YXF2amxtbHp2M3Z2anB5a3N5NHB2YjNxYjVpaWF3MHZxIikKKyAgICA7OyAoInJvc2x5bi1iaW5h cmllcyIgICAgICAgICAgIjE5MDRjN2QwNjgyYTg3OGUyZDI1YjRkNDlmMzQ3NWQxMmZiYjljYzYi CisgICAgOzsgICIiKQorICAgICgicngiICAgICAgICAgICAgICAgICAgICAgICAgICAiYjI5YTRi MGZkYTYwOWUwYWYzM2ZmNTRlZDEzNjUyYjZjY2YwZTA1ZSIKKyAgICAgIjFuMWp3aG1zYmtjdjJk ODA2aW1tY3B6a2I3MnJ6MDR4eTk4bXl3MzU1YTh3NWFoMjV5aXYiKQorICAgIDs7ICgieHVuaXQt YmluYXJpZXMiICAgICAgICAgICAiZDQ0MzNiMDk3MmY0MGNiM2VmYWEzZmJiYTUyODY5YmRlNWRm OGZhOCIKKyAgICA7OyAgIiIpCisgICAgKSkKKworKGRlZmluZS1wdWJsaWMgbW9uby1wcmUtNS4x MC4wCisgIChsZXQgKChjb21taXQgIjNlOWQ3ZDZlOWNmOGRjMzNlYjI5YzQ5N2MzNTBhMWNkN2Rm M2EwNTciKQorICAgICAgICAodmVyc2lvbiAiNS44LjAuMTI5IikKKyAgICAgICAgKHJldmlzaW9u ICIwIikpCisgICAgKHBhY2thZ2UKKyAgICAgIChpbmhlcml0IG1vbm8tNS44LjApCisgICAgICAo dmVyc2lvbiAoZ2l0LXZlcnNpb24gdmVyc2lvbiByZXZpc2lvbiBjb21taXQpKQorICAgICAgKG5h bWUgIm1vbm8iKQorICAgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICAgKG1ldGhv ZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICAgKHVyaQorICAgICAgICAgICAgICAgICAoZ2l0 LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXRsYWIud2luZWhx Lm9yZy9tb25vL21vbm8uZ2l0IikKKyAgICAgICAgICAgICAgICAgIChjb21taXQgY29tbWl0KSkp CisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1lIHZlcnNpb24p KQorICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgICAgKGJhc2UzMgorICAg ICAgICAgICAgICAgICAgIjBtOGkwemd6aDBmZ2Izc3N5OTV2OWN6azFjMHJsNzZxMGpqNzgzNHM1 Zmpua2RqOGw0amIiKSkKKyAgICAgICAgICAgICAgICAobW9kdWxlcyAnKChndWl4IGJ1aWxkIHV0 aWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGljZS05IHN0cmluZy1mdW4pKSkKKyAg ICAgICAgICAgICAgICAoc25pcHBldCAjfihiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjJChhZGQtZXh0ZXJuYWwtcmVwb3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbW9uby1wcmUtNS4xMC4wLWV4dGVybmFsLXJlcG8tc3BlY3MpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMkQHByZXBhcmUtbW9uby1zb3VyY2UtMCkpCisgICAgICAgICAgICAgICAg KHBhdGNoZXMKKyAgICAgICAgICAgICAgICAgKHNlYXJjaC1wYXRjaGVzICJtb25vLW1jcy1wYXRj aGVzLWZyb20tNS4xMC4wLnBhdGNoIikpKSkKKyAgICAgIChuYXRpdmUtaW5wdXRzIChtb2RpZnkt aW5wdXRzIChwYWNrYWdlLW5hdGl2ZS1pbnB1dHMgbW9uby01LjguMCkKKyAgICAgICAgICAgICAg ICAgICAgIChyZXBsYWNlICJtb25vIiBtb25vLTUuOC4wKSkpKSkpCmRpZmYgLS1naXQgYS9nbnUv cGFja2FnZXMvcGF0Y2hlcy9tb25vLW1jcy1wYXRjaGVzLWZyb20tNS4xMC4wLnBhdGNoIGIvZ251 L3BhY2thZ2VzL3BhdGNoZXMvbW9uby1tY3MtcGF0Y2hlcy1mcm9tLTUuMTAuMC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40MWRmZWQ3ZGY3Ci0tLSAvZGV2L251 bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby1tY3MtcGF0Y2hlcy1mcm9tLTUuMTAu MC5wYXRjaApAQCAtMCwwICsxLDQyMTggQEAKK0luY2x1ZGVzIHRoZSBmb2xsb3dpbmcgY29tbWl0 czoKKzZmNWJmZTVjZjVhCiszODEyZDFjMTNmYworYTgwZjNkMGQ4N2MKK2IyZjA1MWYwYjE5Cisy YTIwMmE4NDc4YgorNGQ3ZDE2MDZkNzMKK2Q5OTcwMzA1NzMxCis5NGU4MGZjOGQ3ZgorMGI5Mjgw MDgzYTkKKzA3ZDFlNWYzNmE1Cis1ZjI3OWYxNGFhMgorODg5NDIxZjNiZWYKK2Y0YzBmZDNkYzEx Cis3MWRmNWM2M2I0NgorZDZlNWJmMTY3ODIKKzIwN2Y1YzJjZDZkCitjNTEyNzUyYTQxNgorOWFj YThkNWZlNGIKK2RpZmYgLS1naXQgYS9tY3MvY2xhc3MvTW9uby5DU2hhcnAvVGVzdC9FdmFsdWF0 b3IvVHlwZXNUZXN0LmNzIGIvbWNzL2NsYXNzL01vbm8uQ1NoYXJwL1Rlc3QvRXZhbHVhdG9yL1R5 cGVzVGVzdC5jcworaW5kZXggOTdmOWUwNDdlNmQuLmY4YmY2MzQ1NWRlIDEwMDY0NAorLS0tIGEv bWNzL2NsYXNzL01vbm8uQ1NoYXJwL1Rlc3QvRXZhbHVhdG9yL1R5cGVzVGVzdC5jcworKysrIGIv bWNzL2NsYXNzL01vbm8uQ1NoYXJwL1Rlc3QvRXZhbHVhdG9yL1R5cGVzVGVzdC5jcworQEAgLTEz MSw1ICsxMzEsMTcgQEAgbmFtZXNwYWNlIE1vbm9UZXN0cy5FdmFsdWF0b3JUZXN0CisgCQl7Cisg CQkJRXZhbHVhdG9yLlJ1biAoInB1YmxpYyBjbGFzcyBUZXN0Q2xhc3MgeyBwcml2YXRlIFRlc3RF bnVtIF90ZTsgcHVibGljIHN0cmluZyBHZXQoKSB7IHJldHVybiBfdGUuVG9TdHJpbmcoKTsgfSB9 IHB1YmxpYyBlbnVtIFRlc3RFbnVtIHsgRmlyc3QsIFNlY29uZCB9Iik7CisgCQl9CisrCisrCQlb VGVzdF0KKysJCXB1YmxpYyB2b2lkIEVudW1UeXBlV2l0aE9yZGVyRGVwZW5kZW5jeSAoKQorKwkJ eworKwkJCUV2YWx1YXRvci5SdW4gKCJwdWJsaWMgY2xhc3MgVGVzdENsYXNzIHsgcHVibGljIGVu dW0gVGVzdEVudW0geyBWYWwxLCBWYWwyLCBWYWwzIH0gcHVibGljIFRlc3RFbnVtIHRlc3Q7IHB1 YmxpYyBUZXN0Q2xhc3MoKSB7IHRlc3QgPSBUZXN0RW51bS5WYWwzOyB9IH0iKTsKKysJCQlvYmpl Y3QgcmVzID0gRXZhbHVhdG9yLkV2YWx1YXRlICgibmV3IFRlc3RDbGFzcygpIik7CisrCisrCQkJ dmFyIGZpZWxkcyA9IHJlcy5HZXRUeXBlICgpLkdldEZpZWxkcyAoKTsKKysJCQlmb3JlYWNoICh2 YXIgZmllbGQgaW4gZmllbGRzKSB7CisrCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgkIntmaWVsZC5O YW1lfSA9IHtmaWVsZC5NZW1iZXJUeXBlfSIpOworKwkJCX0KKysJCX0KKyAJfQorIH0KK1wgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwMDIzLTMw LmNzIGIvbWNzL2Vycm9ycy9jczAwMjMtMzAuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwMDAwMC4uZmMxOWNjMjRlM2UKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJv cnMvY3MwMDIzLTMwLmNzCitAQCAtMCwwICsxLDExIEBACisrLy8gQ1MwMDIzOiBUaGUgYGlzJyBv cGVyYXRvciBjYW5ub3QgYmUgYXBwbGllZCB0byBvcGVyYW5kIG9mIHR5cGUgYGRlZmF1bHQnCisr Ly8gTGluZTogOQorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjpsYXRlc3QKKysK KytjbGFzcyBDCisreworKwlzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCWJvb2wgZCA9IGRl ZmF1bHQgaXMgQzsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAt LWdpdCBhL21jcy9lcnJvcnMvY3MwMDI5LTM5LmNzIGIvbWNzL2Vycm9ycy9jczAwMjktMzkuY3MK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uMGVkMjAwMDM2ZGMKKy0t LSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MwMDI5LTM5LmNzCitAQCAtMCwwICsxLDE1 IEBACisrLy8gQ1MwMDI5OiBDYW5ub3QgaW1wbGljaXRseSBjb252ZXJ0IHR5cGUgYFMnIHRvIGBv YmplY3QnCisrLy8gTGluZTogMTMKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246 bGF0ZXN0CisrCisrcHVibGljIHJlZiBzdHJ1Y3QgUworK3sKKyt9CisrCisrY2xhc3MgVGVzdAor K3sKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJb2JqZWN0IG8gPSBuZXcg UyAoKTsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBh L21jcy9lcnJvcnMvY3MwMDI5LTQwLmNzIGIvbWNzL2Vycm9ycy9jczAwMjktNDAuY3MKK25ldyBm aWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uNmQ5MTY3YzMxZmEKKy0tLSAvZGV2 L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MwMDI5LTQwLmNzCitAQCAtMCwwICsxLDE5IEBACisr Ly8gQ1MwMDI5OiBDYW5ub3QgaW1wbGljaXRseSBjb252ZXJ0IHR5cGUgYFMnIHRvIGBTeXN0ZW0u VmFsdWVUeXBlJworKy8vIExpbmU6IDE2CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJz aW9uOmxhdGVzdAorKworK3VzaW5nIFN5c3RlbTsKKysKKytwdWJsaWMgcmVmIHN0cnVjdCBTCisr eworK30KKysKKytjbGFzcyBUZXN0CisreworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQor Kwl7CisrCQl2YXIgcyA9IGRlZmF1bHQgKFMpOworKwkJVmFsdWVUeXBlIHMyID0gczsKKysJCXZh ciByZXMgPSBkZWZhdWx0IChTKS5Ub1N0cmluZyAoKTsKKysJfQorK30KK1wgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwMDI5LTQxLmNzIGIvbWNz L2Vycm9ycy9jczAwMjktNDEuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw MDAwMC4uMWE2NWY1MmY3MzcKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MwMDI5 LTQxLmNzCitAQCAtMCwwICsxLDEyIEBACisrLy8gQ1MwMDI5OiBDYW5ub3QgaW1wbGljaXRseSBj b252ZXJ0IHR5cGUgYFN5c3RlbS5UeXBlZFJlZmVyZW5jZScgdG8gYG9iamVjdCcKKysvLyBMaW5l OiAxMAorKworK3VzaW5nIFN5c3RlbTsKKysKKytjbGFzcyBUZXN0CisreworKwlwdWJsaWMgc3Rh dGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQl2YXIgcmVzID0gZGVmYXVsdCAoVHlwZWRSZWZlcmVu Y2UpLlRvU3RyaW5nICgpOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitk aWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAwMjktNDIuY3MgYi9tY3MvZXJyb3JzL2NzMDAyOS00 Mi5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jNzY3MTAwMGM3 NgorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczAwMjktNDIuY3MKK0BAIC0wLDAg KzEsMTAgQEAKKysvLyBDUzAwMjk6IENhbm5vdCBpbXBsaWNpdGx5IGNvbnZlcnQgdHlwZSBgc3Ry aW5nJyB0byBgaW50JworKy8vIExpbmU6IDgKKysKKytjbGFzcyBDCisreworKwl2b2lkIEV4aXN0 cyAoaW50IF8pCisrCXsKKysJCV8gPSAiMiI7CisrCX0JCisrfQorXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAwMzAtMTcuY3MgYi9tY3MvZXJy b3JzL2NzMDAzMC0xNy5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAw Li5iNzJiOGJmNzFlNQorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczAwMzAtMTcu Y3MKK0BAIC0wLDAgKzEsMTUgQEAKKysvLyBDUzAwMzA6IENhbm5vdCBjb252ZXJ0IHR5cGUgYG9i amVjdCcgdG8gYFMnCisrLy8gTGluZTogMTMKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3Zl cnNpb246bGF0ZXN0CisrCisrcmVmIHN0cnVjdCBTCisreworK30KKysKKytjbGFzcyBYCisrewor KwlwdWJsaWMgc3RhdGljIHZvaWQgRm9vIChvYmplY3QgbykKKysJeworKwkJdmFyIHJlcyA9IChT KSBvOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEv bWNzL2Vycm9ycy9jczAxMDMtMTguY3MgYi9tY3MvZXJyb3JzL2NzMDEwMy0xOC5jcworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi44Y2VjNzU1ZDIzZAorLS0tIC9kZXYv bnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczAxMDMtMTguY3MKK0BAIC0wLDAgKzEsMTAgQEAKKysv LyBDUzAxMDM6IFRoZSBuYW1lIGBfJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgY3VycmVudCBjb250 ZXh0CisrLy8gTGluZTogOAorKworK2NsYXNzIEMKKyt7CisrCXZvaWQgVGVzdCAoKQorKwl7Cisr CQlfLlRvU3RyaW5nICgpOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitk aWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAxMjMtMTAuY3MgYi9tY3MvZXJyb3JzL2NzMDEyMy0x MC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi40M2Q1ZTVkNjM2 OAorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczAxMjMtMTAuY3MKK0BAIC0wLDAg KzEsMTggQEAKKysvLyBDUzAxMjM6IEEgbWV0aG9kIG9yIGRlbGVnYXRlIGBvYmplY3QuVG9TdHJp bmcoKScgcGFyYW1ldGVycyBkbyBub3QgbWF0Y2ggZGVsZWdhdGUgYFN5c3RlbS5GdW5jPHN0cmlu Zz4oKScgcGFyYW1ldGVycworKy8vIExpbmU6IDE2CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxh bmd2ZXJzaW9uOmxhdGVzdAorKworK3VzaW5nIFN5c3RlbTsKKysKKytwdWJsaWMgcmVmIHN0cnVj dCBTCisreworK30KKysKKytjbGFzcyBUZXN0CisreworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFp biAoKQorKwl7CisrCQl2YXIgcyA9IG5ldyBTICgpOworKwkJRnVuYzxzdHJpbmc+IGYgPSBzLlRv U3RyaW5nOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0 IGEvbWNzL2Vycm9ycy9jczAxMjMtMTEuY3MgYi9tY3MvZXJyb3JzL2NzMDEyMy0xMS5jcworbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi40MjdiNjI4YzE1OQorLS0tIC9k ZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczAxMjMtMTEuY3MKK0BAIC0wLDAgKzEsMTIgQEAK KysvLyBDUzAxMjM6IEEgbWV0aG9kIG9yIGRlbGVnYXRlIGBvYmplY3QuVG9TdHJpbmcoKScgcGFy YW1ldGVycyBkbyBub3QgbWF0Y2ggZGVsZWdhdGUgYFN5c3RlbS5GdW5jPHN0cmluZz4oKScgcGFy YW1ldGVycworKy8vIExpbmU6IDE2CisrCisrdXNpbmcgU3lzdGVtOworKworK2NsYXNzIFRlc3QK Kyt7CisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCUZ1bmM8c3RyaW5nPiBm ID0gZGVmYXVsdCAoVHlwZWRSZWZlcmVuY2UpLlRvU3RyaW5nOworKwl9CisrfQorXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAxMzMtMi5jcyBi L21jcy9lcnJvcnMvY3MwMTMzLTIuY3MKK2luZGV4IGI3YTM3MTgyZDczLi40ODQ4ODg3NmY3ZSAx MDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MwMTMzLTIuY3MKKysrKyBiL21jcy9lcnJvcnMvY3Mw MTMzLTIuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMDEzMzogVGhlIGV4cHJlc3Npb24gYmVp bmcgYXNzaWduZWQgdG8gYGMnIG11c3QgYmUgY29uc3RhbnQKKysvLyBDUzAxMzM6IFRoZSBleHBy ZXNzaW9uIGJlaW5nIGFzc2lnbmVkIHRvIGBjJyBtdXN0IGJlIGEgY29uc3RhbnQgb3IgZGVmYXVs dCB2YWx1ZQorIC8vIExpbmU6IDEwCisgCisgY2xhc3MgQworZGlmZiAtLWdpdCBhL21jcy9lcnJv cnMvY3MwMTMzLTMuY3MgYi9tY3MvZXJyb3JzL2NzMDEzMy0zLmNzCitpbmRleCBjYWFlM2JkZTY4 Yy4uMmY3ZGFjNjg4MGQgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2NzMDEzMy0zLmNzCisrKysg Yi9tY3MvZXJyb3JzL2NzMDEzMy0zLmNzCitAQCAtMSw1ICsxLDUgQEAKKy0vLyBDUzAxMzM6IFRo ZSBleHByZXNzaW9uIGJlaW5nIGFzc2lnbmVkIHRvIGBGb28nIG11c3QgYmUgY29uc3RhbnQKKy0v LyBMaW5lOiAxMgorKy8vIENTMDEzMzogVGhlIGV4cHJlc3Npb24gYmVpbmcgYXNzaWduZWQgdG8g YEZvbycgbXVzdCBiZSBhIGNvbnN0YW50IG9yIGRlZmF1bHQgdmFsdWUKKysvLyBMaW5lOiA4Cisg CisgY2xhc3MgVAorIHsKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMDEzMy00LmNzIGIvbWNz L2Vycm9ycy9jczAxMzMtNC5jcworaW5kZXggNDFmZTYzOWI0NDYuLjU0MTYyZDU0NGNhIDEwMDY0 NAorLS0tIGEvbWNzL2Vycm9ycy9jczAxMzMtNC5jcworKysrIGIvbWNzL2Vycm9ycy9jczAxMzMt NC5jcworQEAgLTEsNCArMSw0IEBACistLy8gQ1MwMTMzOiBUaGUgZXhwcmVzc2lvbiBiZWluZyBh c3NpZ25lZCB0byBgUy5wYXRoTmFtZScgbXVzdCBiZSBjb25zdGFudAorKy8vIENTMDEzMzogVGhl IGV4cHJlc3Npb24gYmVpbmcgYXNzaWduZWQgdG8gYFMucGF0aE5hbWUnIG11c3QgYmUgYSBjb25z dGFudCBvciBkZWZhdWx0IHZhbHVlCisgLy8gTGluZTogMTIKKyAvLyBDb21waWxlciBvcHRpb25z OiAtdW5zYWZlCisgCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAxMzMtNS5jcyBiL21jcy9l cnJvcnMvY3MwMTMzLTUuY3MKK2luZGV4IGE0OWYyNjVjNjkwLi4zMmU2YmZkZjQxNiAxMDA2NDQK Ky0tLSBhL21jcy9lcnJvcnMvY3MwMTMzLTUuY3MKKysrKyBiL21jcy9lcnJvcnMvY3MwMTMzLTUu Y3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMDEzMzogVGhlIGV4cHJlc3Npb24gYmVpbmcgYXNz aWduZWQgdG8gYGInIG11c3QgYmUgY29uc3RhbnQKKysvLyBDUzAxMzM6IFRoZSBleHByZXNzaW9u IGJlaW5nIGFzc2lnbmVkIHRvIGBiJyBtdXN0IGJlIGEgY29uc3RhbnQgb3IgZGVmYXVsdCB2YWx1 ZQorIC8vIExpbmU6IDgKKyAKKyBjbGFzcyBYCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAx MzMtNi5jcyBiL21jcy9lcnJvcnMvY3MwMTMzLTYuY3MKK2luZGV4IGE1MjMxNjljZGJkLi4yODQ0 OGRkNmRlOCAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MwMTMzLTYuY3MKKysrKyBiL21jcy9l cnJvcnMvY3MwMTMzLTYuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMDEzMzogVGhlIGV4cHJl c3Npb24gYmVpbmcgYXNzaWduZWQgdG8gYG8nIG11c3QgYmUgY29uc3RhbnQKKysvLyBDUzAxMzM6 IFRoZSBleHByZXNzaW9uIGJlaW5nIGFzc2lnbmVkIHRvIGBvJyBtdXN0IGJlIGEgY29uc3RhbnQg b3IgZGVmYXVsdCB2YWx1ZQorIC8vIExpbmU6IDgKKyAKKyBjbGFzcyBYCitkaWZmIC0tZ2l0IGEv bWNzL2Vycm9ycy9jczAxMzMtNy5jcyBiL21jcy9lcnJvcnMvY3MwMTMzLTcuY3MKK2luZGV4IDEw ZDgyZDlmZTVlLi4wMjRiYzE0ODIyOSAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MwMTMzLTcu Y3MKKysrKyBiL21jcy9lcnJvcnMvY3MwMTMzLTcuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENT MDEzMzogVGhlIGV4cHJlc3Npb24gYmVpbmcgYXNzaWduZWQgdG8gYG8nIG11c3QgYmUgY29uc3Rh bnQKKysvLyBDUzAxMzM6IFRoZSBleHByZXNzaW9uIGJlaW5nIGFzc2lnbmVkIHRvIGBvJyBtdXN0 IGJlIGEgY29uc3RhbnQgb3IgZGVmYXVsdCB2YWx1ZQorIC8vIExpbmU6IDgKKyAKKyBjbGFzcyBY CitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAxMzMuY3MgYi9tY3MvZXJyb3JzL2NzMDEzMy5j cworaW5kZXggMDk0MTk0ZGVhYmIuLmYwZGRhOWVlM2NiIDEwMDY0NAorLS0tIGEvbWNzL2Vycm9y cy9jczAxMzMuY3MKKysrKyBiL21jcy9lcnJvcnMvY3MwMTMzLmNzCitAQCAtMSw1ICsxLDYgQEAK Ky0vLyBDUzAxMzM6IFRoZSBleHByZXNzaW9uIGJlaW5nIGFzc2lnbmVkIHRvIGB4JyBtdXN0IGJl IGNvbnN0YW50CistLy8gTGluZTogNgorKy8vIENTMDEzMzogVGhlIGV4cHJlc3Npb24gYmVpbmcg YXNzaWduZWQgdG8gYHgnIG11c3QgYmUgYSBjb25zdGFudCBvciBkZWZhdWx0IHZhbHVlCisrLy8g TGluZTogNworKworIGNsYXNzIFggeworIAlYIChpbnQgYXJnKQorIAl7CitkaWZmIC0tZ2l0IGEv bWNzL2Vycm9ycy9jczAzMDYtNC5jcyBiL21jcy9lcnJvcnMvY3MwMzA2LTQuY3MKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uNDY1MzUxMmU1NWIKKy0tLSAvZGV2L251 bGwKKysrKyBiL21jcy9lcnJvcnMvY3MwMzA2LTQuY3MKK0BAIC0wLDAgKzEsMTUgQEAKKysvLyBD UzAzMDY6IFRoZSB0eXBlIGBTJyBtYXkgbm90IGJlIHVzZWQgYXMgYSB0eXBlIGFyZ3VtZW50Cisr Ly8gTGluZTogMTMKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246bGF0ZXN0Cisr CisrcHVibGljIHJlZiBzdHJ1Y3QgUworK3sKKyt9CisrCisrY2xhc3MgVGVzdDxUPgorK3sKKysJ cHVibGljIHN0YXRpYyB2b2lkIEZvbyAoKQorKwl7CisrCQlUZXN0PFM+IGxvY2FsOworKwl9Cisr fQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9j czA2MTEtMy5jcyBiL21jcy9lcnJvcnMvY3MwNjExLTMuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwMDAwMC4uNmVkYTc3M2RkMjQKKy0tLSAvZGV2L251bGwKKysrKyBiL21j cy9lcnJvcnMvY3MwNjExLTMuY3MKK0BAIC0wLDAgKzEsMTUgQEAKKysvLyBDUzA2MTE6IEFycmF5 IGVsZW1lbnRzIGNhbm5vdCBiZSBvZiB0eXBlIGBTJworKy8vIExpbmU6IDEzCisrLy8gQ29tcGls ZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorKworK3B1YmxpYyByZWYgc3RydWN0IFMK Kyt7CisrfQorKworK2NsYXNzIFRlc3QKKyt7CisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgp CisrCXsKKysJCXZhciB4ID0gbmV3IFNbMF07CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMDgxNS05LmNzIGIvbWNzL2Vycm9y cy9jczA4MTUtOS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5m NTQ3MDMzNDliZQorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczA4MTUtOS5jcwor QEAgLTAsMCArMSwxMSBAQAorKy8vIENTMDgxNTogQW4gaW1wbGljaXRseSB0eXBlZCBsb2NhbCB2 YXJpYWJsZSBkZWNsYXJhdGlvbiBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQgd2l0aCBgZGVmYXVsdCcK KysvLyBMaW5lOiA5CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAor KworK3N0YXRpYyBjbGFzcyBYCisreworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7 CisrCQl2YXIgeCA9IGRlZmF1bHQ7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTUwMi0xMS5jcyBiL21jcy9lcnJvcnMvY3Mx NTAyLTExLmNzCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDgyZGNiM2EyYzE3Li4w MDAwMDAwMDAwMAorLS0tIGEvbWNzL2Vycm9ycy9jczE1MDItMTEuY3MKKysrKyAvZGV2L251bGwK K0BAIC0xLDExICswLDAgQEAKKy0vLyBDUzE1MDI6IFRoZSBiZXN0IG92ZXJsb2FkZWQgbWV0aG9k IG1hdGNoIGZvciBgc3RyaW5nLlN0cmluZyhjaGFyKiknIGhhcyBzb21lIGludmFsaWQgYXJndW1l bnRzCistLy8gTGluZTogOAorLQorLWNsYXNzIEMKKy17CistCXN0YXRpYyBzdHJpbmcgUHJvcCB7 CistCQlnZXQgeworLQkJCXJldHVybiBuZXcgc3RyaW5nICgicyIpOworLQkJfQorLSAgICB9Cist fQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxNTk5LTIuY3MgYi9tY3MvZXJyb3JzL2NzMTU5 OS0yLmNzCitpbmRleCA5NDFmZjZiYjBkNi4uMjhhYTA1YjJlZDMgMTAwNjQ0CistLS0gYS9tY3Mv ZXJyb3JzL2NzMTU5OS0yLmNzCisrKysgYi9tY3MvZXJyb3JzL2NzMTU5OS0yLmNzCitAQCAtMSw0 ICsxLDQgQEAKKy0vLyBDUzE1OTk6IE1ldGhvZCBvciBkZWxlZ2F0ZSBjYW5ub3QgcmV0dXJuIHR5 cGUgYFN5c3RlbS5BcmdJdGVyYXRvcicKKysvLyBDUzE1OTk6IFRoZSByZXR1cm4gdHlwZSBvZiBg U3lzdGVtLkFyZ0l0ZXJhdG9yJyBpcyBub3QgYWxsb3dlZAorIC8vIExpbmU6IDgKKyAKKyB1c2lu ZyBTeXN0ZW07CitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczE1OTktMy5jcyBiL21jcy9lcnJv cnMvY3MxNTk5LTMuY3MKK2luZGV4IGU0ODY5ZGNhZjcwLi45ZDM3ODA5OWQ4MiAxMDA2NDQKKy0t LSBhL21jcy9lcnJvcnMvY3MxNTk5LTMuY3MKKysrKyBiL21jcy9lcnJvcnMvY3MxNTk5LTMuY3MK K0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMTU5OTogTWV0aG9kIG9yIGRlbGVnYXRlIGNhbm5vdCBy ZXR1cm4gdHlwZSBgU3lzdGVtLkFyZ0l0ZXJhdG9yJworKy8vIENTMTU5OTogVGhlIHJldHVybiB0 eXBlIG9mIGBTeXN0ZW0uQXJnSXRlcmF0b3InIGlzIG5vdCBhbGxvd2VkCisgLy8gTGluZTogOAor IAorIHVzaW5nIFN5c3RlbTsKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTU5OS00LmNzIGIv bWNzL2Vycm9ycy9jczE1OTktNC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAwMDAwLi4zNThlZWU1OWExMworLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczE1 OTktNC5jcworQEAgLTAsMCArMSwxMiBAQAorKy8vIENTMTU5OTogVGhlIHJldHVybiB0eXBlIG9m IGBTeXN0ZW0uVHlwZWRSZWZlcmVuY2UnIGlzIG5vdCBhbGxvd2VkCisrLy8gTGluZTogOAorKwor K3VzaW5nIFN5c3RlbTsKKysKKytwdWJsaWMgY2xhc3MgUHJvZ3JhbQorK3sKKysgICAgcHVibGlj IHN0YXRpYyBUeXBlZFJlZmVyZW5jZSBvcGVyYXRvciArIChpbnQgYSwgUHJvZ3JhbSBiKQorKyAg ICB7CisrICAgIAl0aHJvdyBuZXcgQXBwbGljYXRpb25FeGNlcHRpb24gKCk7CisrICAgIH0KKyt9 CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2Nz MTU5OS5jcyBiL21jcy9lcnJvcnMvY3MxNTk5LmNzCitpbmRleCA1Y2VmMzJkN2Y5Ny4uODcxZDlm YjNlN2EgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2NzMTU5OS5jcworKysrIGIvbWNzL2Vycm9y cy9jczE1OTkuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMTU5OTogTWV0aG9kIG9yIGRlbGVn YXRlIGNhbm5vdCByZXR1cm4gdHlwZSBgU3lzdGVtLlR5cGVkUmVmZXJlbmNlJworKy8vIENTMTU5 OTogVGhlIHJldHVybiB0eXBlIG9mIGBTeXN0ZW0uVHlwZWRSZWZlcmVuY2UnIGlzIG5vdCBhbGxv d2VkCisgLy8gTGluZTogOAorIAorIHVzaW5nIFN5c3RlbTsKK2RpZmYgLS1naXQgYS9tY3MvZXJy b3JzL2NzMTY0NC01Ny5jcyBiL21jcy9lcnJvcnMvY3MxNjQ0LTU3LmNzCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjdlZTk4MzczMDgwCistLS0gL2Rldi9udWxsCisr KysgYi9tY3MvZXJyb3JzL2NzMTY0NC01Ny5jcworQEAgLTAsMCArMSw3IEBACisrLy8gQ1MxNjQ0 OiBGZWF0dXJlIGByZWYgc3RydWN0cycgY2Fubm90IGJlIHVzZWQgYmVjYXVzZSBpdCBpcyBub3Qg cGFydCBvZiB0aGUgQyMgNy4wIGxhbmd1YWdlIHNwZWNpZmljYXRpb24KKysvLyBMaW5lOiA1Cisr Ly8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOjcKKysKKytyZWYgc3RydWN0IFMKKyt7 CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9y cy9jczE2NDQtNTguY3MgYi9tY3MvZXJyb3JzL2NzMTY0NC01OC5jcworbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5lOTk0Y2YzMzhiZAorLS0tIC9kZXYvbnVsbAorKysr IGIvbWNzL2Vycm9ycy9jczE2NDQtNTguY3MKK0BAIC0wLDAgKzEsOCBAQAorKy8vIENTMTY0NDog RmVhdHVyZSBgZGVmYXVsdCBsaXRlcmFsJyBjYW5ub3QgYmUgdXNlZCBiZWNhdXNlIGl0IGlzIG5v dCBwYXJ0IG9mIHRoZSBDIyA3LjAgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbgorKy8vIExpbmU6IDcK KysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246NworKworK2NsYXNzIFgKKyt7Cisr CWludCBpID0gZGVmYXVsdDsKKyt9CitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczE2NDQtNTku Y3MgYi9tY3MvZXJyb3JzL2NzMTY0NC01OS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAwMDAwLi4yZjhhZWQ2Yjk1OAorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9y cy9jczE2NDQtNTkuY3MKK0BAIC0wLDAgKzEsMTMgQEAKKysvLyBDUzE2NDQ6IEZlYXR1cmUgYHJl YWRvbmx5IHJlZmVyZW5jZXMnIGNhbm5vdCBiZSB1c2VkIGJlY2F1c2UgaXQgaXMgbm90IHBhcnQg b2YgdGhlIEMjIDcuMCBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uCisrLy8gTGluZTogOQorKy8vIENv bXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo3CisrCisrY2xhc3MgWAorK3sKKysJaW50IGk7 CisrCisrCXJlZiByZWFkb25seSBpbnQgVGVzdCAoKQorKwl7CisrCQlyZXR1cm4gcmVmIGk7Cisr CX0KKyt9CitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczE2NDQtNjAuY3MgYi9tY3MvZXJyb3Jz L2NzMTY0NC02MC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5j YTk1NDdiYzU2MQorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczE2NDQtNjAuY3MK K0BAIC0wLDAgKzEsMTEgQEAKKysvLyBDUzE2NDQ6IEZlYXR1cmUgYGRpc2NhcmRzJyBjYW5ub3Qg YmUgdXNlZCBiZWNhdXNlIGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSBDIyA2LjAgbGFuZ3VhZ2Ugc3Bl Y2lmaWNhdGlvbgorKy8vIExpbmU6IDkKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNp b246NgorKworK2NsYXNzIFgKKyt7CisrCWludCBUZXN0ICgpCisrCXsKKysJCV8gPSAyOworKwl9 CisrfQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxNzM4LTIuY3MgYi9tY3MvZXJyb3JzL2Nz MTczOC0yLmNzCitpbmRleCBmNTkyMjFmNGM3YS4uNDRiM2Y2ZDFiMTQgMTAwNjQ0CistLS0gYS9t Y3MvZXJyb3JzL2NzMTczOC0yLmNzCisrKysgYi9tY3MvZXJyb3JzL2NzMTczOC0yLmNzCitAQCAt MSw0ICsxLDQgQEAKKy0vLyBDUzE3Mzg6IE5hbWVkIGFyZ3VtZW50cyBtdXN0IGFwcGVhciBhZnRl ciB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMKKysvLyBDUzE3Mzg6IE5hbWVkIGFyZ3VtZW50cyBt dXN0IGFwcGVhciBhZnRlciB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgd2hlbiB1c2luZyBsYW5n dWFnZSB2ZXJzaW9uIG9sZGVyIHRoYW4gNy4yCisgLy8gTGluZTogMTMKKyAKKyB1c2luZyBTeXN0 ZW07CitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczE3MzgtMy5jcyBiL21jcy9lcnJvcnMvY3Mx NzM4LTMuY3MKK2luZGV4IDUzYzRlZmMzNTUzLi45MDFhYzBlNWQ1OSAxMDA2NDQKKy0tLSBhL21j cy9lcnJvcnMvY3MxNzM4LTMuY3MKKysrKyBiL21jcy9lcnJvcnMvY3MxNzM4LTMuY3MKK0BAIC0x LDQgKzEsNCBAQAorLS8vIENTMTczODogTmFtZWQgYXJndW1lbnRzIG11c3QgYXBwZWFyIGFmdGVy IHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cworKy8vIENTMTczODogTmFtZWQgYXJndW1lbnRzIG11 c3QgYXBwZWFyIGFmdGVyIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyB3aGVuIHVzaW5nIGxhbmd1 YWdlIHZlcnNpb24gb2xkZXIgdGhhbiA3LjIKKyAvLyBMaW5lOiAxNAorIAorIGNsYXNzIEMKK2Rp ZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTczOC5jcyBiL21jcy9lcnJvcnMvY3MxNzM4LmNzCitp bmRleCBkYWI5YTYxMTYwYi4uNTM3YmMxN2I5MTcgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2Nz MTczOC5jcworKysrIGIvbWNzL2Vycm9ycy9jczE3MzguY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8v IENTMTczODogTmFtZWQgYXJndW1lbnRzIG11c3QgYXBwZWFyIGFmdGVyIHRoZSBwb3NpdGlvbmFs IGFyZ3VtZW50cworKy8vIENTMTczODogTmFtZWQgYXJndW1lbnRzIG11c3QgYXBwZWFyIGFmdGVy IHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyB3aGVuIHVzaW5nIGxhbmd1YWdlIHZlcnNpb24gb2xk ZXIgdGhhbiA3LjIKKyAvLyBMaW5lOiAxMgorIAorIGNsYXNzIEMKK2RpZmYgLS1naXQgYS9tY3Mv ZXJyb3JzL2NzMTk4My5jcyBiL21jcy9lcnJvcnMvY3MxOTgzLmNzCitpbmRleCBhMmVmNmMxNTBk Ni4uNzZkMmRiNGU2NzcgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2NzMTk4My5jcworKysrIGIv bWNzL2Vycm9ycy9jczE5ODMuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMTk4MzogVGhlIHJl dHVybiB0eXBlIG9mIGFuIGFzeW5jIG1ldGhvZCBtdXN0IGJlIHZvaWQsIFRhc2ssIG9yIFRhc2s8 VD4KKysvLyBDUzE5ODM6IFRoZSByZXR1cm4gdHlwZSBvZiBhbiBhc3luYyBtZXRob2QgbXVzdCBi ZSB2b2lkIG9yIHRhc2sgdHlwZQorIC8vIExpbmU6IDYKKyAKKyBjbGFzcyBDCitkaWZmIC0tZ2l0 IGEvbWNzL2Vycm9ycy9jczQwMTItMy5jcyBiL21jcy9lcnJvcnMvY3M0MDEyLTMuY3MKK25ldyBm aWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uZmIzZDFkYzI3NmYKKy0tLSAvZGV2 L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3M0MDEyLTMuY3MKK0BAIC0wLDAgKzEsMTkgQEAKKysv LyBDUzQwMTI6IFBhcmFtZXRlcnMgb3IgbG9jYWwgdmFyaWFibGVzIG9mIHR5cGUgYFMnIGNhbm5v dCBiZSBkZWNsYXJlZCBpbiBhc3luYyBtZXRob2RzIG9yIGl0ZXJhdG9ycworKy8vIExpbmU6IDE2 CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorKworK3VzaW5nIFN5 c3RlbTsKKyt1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOworKworK3B1YmxpYyByZWYgc3Ry dWN0IFMKKyt7CisrfQorKworK2NsYXNzIEMKKyt7CisrCXB1YmxpYyBhc3luYyB2b2lkIFRlc3Qg KCkKKysJeworKwkJdmFyIHRyID0gbmV3IFMgKCk7CisrCQlhd2FpdCBUYXNrLkZhY3RvcnkuU3Rh cnROZXcgKCgpID0+IDYpOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitk aWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczgxNzUtMi5jcyBiL21jcy9lcnJvcnMvY3M4MTc1LTIu Y3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uMjdjNGJhYmY4YmYK Ky0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3M4MTc1LTIuY3MKK0BAIC0wLDAgKzEs MTkgQEAKKysvLyBDUzgxNzU6IENhbm5vdCB1c2UgYnktcmVmZXJlbmNlIHZhcmlhYmxlIGBzJyBp bnNpZGUgYW4gYW5vbnltb3VzIG1ldGhvZCwgbGFtYmRhIGV4cHJlc3Npb24sIG9yIHF1ZXJ5IGV4 cHJlc3Npb24KKysvLyBMaW5lOiAxNworKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lv bjpsYXRlc3QKKysKKyt1c2luZyBTeXN0ZW07CisrCisrcHVibGljIHJlZiBzdHJ1Y3QgUworK3sK Kyt9CisrCisrY2xhc3MgVGVzdAorK3sKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJ eworKwkJdmFyIHMgPSBuZXcgUyAoKTsKKysKKysJCUFjdGlvbiBhID0gKCkgPT4gQ29uc29sZS5X cml0ZUxpbmUgKHMpOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZm IC0tZ2l0IGEvbWNzL2Vycm9ycy9jczgxODMuY3MgYi9tY3MvZXJyb3JzL2NzODE4My5jcworbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5mOWU5MDA0YjczNworLS0tIC9k ZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczgxODMuY3MKK0BAIC0wLDAgKzEsMTEgQEAKKysv LyBDUzgxODM6IENhbm5vdCBpbmZlciB0aGUgdHlwZSBvZiBpbXBsaWNpdGx5LXR5cGVkIGRpc2Nh cmQKKysvLyBMaW5lOiA5CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOjcuMgor KworK2NsYXNzIFgKKyt7CisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCV8g PSBkZWZhdWx0OworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0t Z2l0IGEvbWNzL2Vycm9ycy9jczgxODQuY3MgYi9tY3MvZXJyb3JzL2NzODE4NC5jcworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4xOWE0Njg1ZDdiZAorLS0tIC9kZXYv bnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczgxODQuY3MKK0BAIC0wLDAgKzEsMTAgQEAKKysvLyBD UzgxODQ6IEEgZGVjb25zdHJ1Y3Rpb24gY2Fubm90IG1peCBkZWNsYXJhdGlvbnMgYW5kIGV4cHJl c3Npb25zIG9uIHRoZSBsZWZ0LWhhbmQtc2lkZQorKy8vIExpbmU6IDgKKysKKytjbGFzcyBYCisr eworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQkoaW50IGEsIGIpID0gKDEs IDIpOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEv bWNzL2Vycm9ycy9jczgyMDcuY3MgYi9tY3MvZXJyb3JzL2NzODIwNy5jcworbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4zMTA5MDk0OGI0NQorLS0tIC9kZXYvbnVsbAor KysrIGIvbWNzL2Vycm9ycy9jczgyMDcuY3MKK0BAIC0wLDAgKzEsMTkgQEAKKysvLyBDUzgyMDc6 IEFuIGV4cHJlc3Npb24gdHJlZSBjYW5ub3QgY29udGFpbiBhIGRpc2NhcmQKKysvLyBMaW5lOiAx MQorKworK3VzaW5nIFN5c3RlbTsKKyt1c2luZyBTeXN0ZW0uTGlucS5FeHByZXNzaW9uczsKKysK KytjbGFzcyBYCisreworKwl2b2lkIFRlc3QgKCkKKysJeworKwkJRXhwcmVzc2lvbjxGdW5jPGJv b2w+PiBlID0gKCkgPT4gVHJ5R2V0VmFsdWUgKG91dCBfKTsKKysJfQorKworKwlib29sIFRyeUdl dFZhbHVlIChvdXQgaW50IGFyZykKKysJeworKwkJYXJnID0gMzsKKysJCXJldHVybiB0cnVlOwor Kwl9CisrfQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3M4MjA5LmNzIGIvbWNzL2Vycm9ycy9j czgyMDkuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uM2E0NmEy MDZjOGUKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3M4MjA5LmNzCitAQCAtMCww ICsxLDEwIEBACisrLy8gQ1M4MjA5OiBDYW5ub3QgYXNzaWduIHZvaWQgdG8gYSBkaXNjYXJkCisr Ly8gTGluZTogOAorKworK2NsYXNzIEMKKyt7CisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgp CisrCXsKKysJCV8gPSBNYWluICgpOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczgzMTAuY3MgYi9tY3MvZXJyb3JzL2NzODMx MC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4xMzQ2MjRjMDNi NworLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczgzMTAuY3MKK0BAIC0wLDAgKzEs MTEgQEAKKysvLyBDUzgzMTA6IE9wZXJhdG9yIGArJyBjYW5ub3QgYmUgYXBwbGllZCB0byBvcGVy YW5kIGBkZWZhdWx0JworKy8vIExpbmU6IDkKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3Zl cnNpb246bGF0ZXN0CisrCisrY2xhc3MgQworK3sKKysJc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7 CisrCQlpbnQgaCA9IDEgKyBkZWZhdWx0OworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczgzMTEuY3MgYi9tY3MvZXJyb3JzL2Nz ODMxMS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi41YjM1MjI5 NDQyZAorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczgzMTEuY3MKK0BAIC0wLDAg KzEsMTIgQEAKKysvLyBDUzgzMTE6IENhbm5vdCB1c2UgYSBkZWZhdWx0IGxpdGVyYWwgYXMgYW4g YXJndW1lbnQgdG8gYSBkeW5hbWljYWxseSBkaXNwYXRjaGVkIG9wZXJhdGlvbgorKy8vIExpbmU6 IDEwCisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorKworK2NsYXNz IEMKKyt7CisrICAgIHN0YXRpYyB2b2lkIE1haW4gKCkKKysgICAgeworKyAgICAgICAgZHluYW1p YyBkID0gbnVsbDsKKysgICAgICAgIGQuTTIgKGRlZmF1bHQpOworKyAgICB9CisrfQorXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczgzMTIuY3Mg Yi9tY3MvZXJyb3JzL2NzODMxMi5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAwMDAwLi5kMmFkM2Y1MmYwMgorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczgz MTIuY3MKK0BAIC0wLDAgKzEsMTIgQEAKKysvLyBDUzgzMTI6IFVzZSBvZiBkZWZhdWx0IGxpdGVy YWwgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dAorKy8vIExpbmU6IDkKKysvLyBDb21waWxl ciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246bGF0ZXN0CisrCisrY2xhc3MgQworK3sKKysJc3RhdGlj IHZvaWQgTWFpbiAoKQorKwl7CisrCQlmb3JlYWNoICh2YXIgeCBpbiBkZWZhdWx0KSB7CisrCQl9 CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3Mv ZXJyb3JzL2NzODMxNS5jcyBiL21jcy9lcnJvcnMvY3M4MzE1LmNzCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLmM0MGJmODYxM2I0CistLS0gL2Rldi9udWxsCisrKysg Yi9tY3MvZXJyb3JzL2NzODMxNS5jcworQEAgLTAsMCArMSwxMSBAQAorKy8vIENTODMxNTogT3Bl cmF0b3IgYD09JyBpcyBhbWJpZ3VvdXMgb24gb3BlcmFuZHMgYGRlZmF1bHQnIGFuZCBgZGVmYXVs dCcKKysvLyBMaW5lOiA5CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVz dAorKworK2NsYXNzIEMKKyt7CisrCXN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJYm9vbCBk ID0gZGVmYXVsdCA9PSBkZWZhdWx0OworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczgzMjMuY3MgYi9tY3MvZXJyb3JzL2NzODMy My5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jNmM5MzA5ZWMw ZAorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczgzMjMuY3MKK0BAIC0wLDAgKzEs MTUgQEAKKysvLyBDUzgzMjM6IE5hbWVkIGFyZ3VtZW50IGBzdHInIGlzIHVzZWQgb3V0IG9mIHBv c2l0aW9uIGJ1dCBpcyBmb2xsb3dlZCBieSBwb3NpdGlvbmFsIGFyZ3VtZW50CisrLy8gTGluZTog OQorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo3LjIKKysKKytjbGFzcyBYCisr eworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQlUZXN0IChzdHI6ICIiLCAi Iik7CisrCX0KKysKKysJc3RhdGljIHZvaWQgVGVzdCAoaW50IGFyZywgc3RyaW5nIHN0cikKKysJ eworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNz L2Vycm9ycy9jczgzMjQuY3MgYi9tY3MvZXJyb3JzL2NzODMyNC5jcworbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi44YTBiZTFhZWZiOQorLS0tIC9kZXYvbnVsbAorKysr IGIvbWNzL2Vycm9ycy9jczgzMjQuY3MKK0BAIC0wLDAgKzEsMTIgQEAKKysvLyBDUzgzMjQ6IE5h bWVkIGFyZ3VtZW50IHNwZWNpZmljYXRpb25zIG11c3QgYXBwZWFyIGFmdGVyIGFsbCBmaXhlZCBh cmd1bWVudHMgaGF2ZSBiZWVuIHNwZWNpZmllZCBpbiBhIGR5bmFtaWMgaW52b2NhdGlvbgorKy8v IExpbmU6IDEwCisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOjcuMgorKworK2Ns YXNzIEMKKyt7CisrCXZvaWQgTSAoKQorKwl7CisrCQlkeW5hbWljIGQgPSBuZXcgb2JqZWN0ICgp OworKwkJZC5NIChhcmc6IDEsICIiKTsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3M4MzQzLmNzIGIvbWNzL2Vycm9ycy9jczgz NDMuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uYjZhYThlODNh MDkKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3M4MzQzLmNzCitAQCAtMCwwICsx LDEyIEBACisrLy8gQ1M4MzQzOiBgUyc6IHJlZiBzdHJ1Y3RzIGNhbm5vdCBpbXBsZW1lbnQgaW50 ZXJmYWNlcworKy8vIExpbmU6IDcKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246 bGF0ZXN0CisrCisrdXNpbmcgU3lzdGVtOworKworK3B1YmxpYyByZWYgc3RydWN0IFMgOiBJRGlz cG9zYWJsZQorK3sKKysJcHVibGljIHZvaWQgRGlzcG9zZSAoKQorKwl7CQkJCisrCX0KKyt9Citk aWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczgzNDUtMi5jcyBiL21jcy9lcnJvcnMvY3M4MzQ1LTIu Y3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uM2Y2MTM3YjFiNTYK Ky0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3M4MzQ1LTIuY3MKK0BAIC0wLDAgKzEs MTIgQEAKKysvLyBDUzgzNDU6IEZpZWxkIG9yIGF1dG8taW1wbGVtZW50ZWQgcHJvcGVydHkgY2Fu bm90IGJlIG9mIHR5cGUgYFMnIHVubGVzcyBpdCBpcyBhbiBpbnN0YW5jZSBtZW1iZXIgb2YgYSBy ZWYgc3RydWN0CisrLy8gTGluZTogMTEKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNp b246bGF0ZXN0CisrCisrcHVibGljIHJlZiBzdHJ1Y3QgUworK3sKKyt9CisrCisrcmVmIHN0cnVj dCBUZXN0CisreworKwlzdGF0aWMgUyBmaWVsZDsKKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzODM0NS5jcyBiL21jcy9lcnJvcnMvY3M4 MzQ1LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjBiNWJkMDU1 MThmCistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3JzL2NzODM0NS5jcworQEAgLTAsMCAr MSwxMiBAQAorKy8vIENTODM0NTogRmllbGQgb3IgYXV0by1pbXBsZW1lbnRlZCBwcm9wZXJ0eSBj YW5ub3QgYmUgb2YgdHlwZSBgUycgdW5sZXNzIGl0IGlzIGFuIGluc3RhbmNlIG1lbWJlciBvZiBh IHJlZiBzdHJ1Y3QKKysvLyBMaW5lOiAxMQorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVy c2lvbjpsYXRlc3QKKysKKytwdWJsaWMgcmVmIHN0cnVjdCBTCisreworK30KKysKKytzdHJ1Y3Qg VGVzdAorK3sKKysJUyBmaWVsZDsKKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2Rp ZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzODM0Ni5jcyBiL21jcy9lcnJvcnMvY3M4MzQ2LmNzCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjU4ZTIyYTJhZTdmCistLS0g L2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3JzL2NzODM0Ni5jcworQEAgLTAsMCArMSwxMyBAQAor Ky8vIENTODM0NjogQ2Fubm90IGNvbnZlcnQgYSBzdGFja2FsbG9jIGV4cHJlc3Npb24gb2YgdHlw ZSBgYnl0ZScgdG8gdHlwZSBgU3lzdGVtLlNwYW48aW50PicKKysvLyBMaW5lOiAxMQorKy8vIENv bXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo3LjIKKysKKyt1c2luZyBTeXN0ZW07CisrCisr Y2xhc3MgWAorK3sKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJU3Bhbjxp bnQ+IHN0YWNrU3BhbiA9IHN0YWNrYWxsb2MgYnl0ZVsxXTsKKysJfQorK30KK1wgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9tY3MvYXJndW1lbnQuY3MgYi9tY3Mv bWNzL2FyZ3VtZW50LmNzCitpbmRleCA4NDIxYjRkZmJmYy4uNWIxMDAzZGJhZGYgMTAwNjQ0Cist LS0gYS9tY3MvbWNzL2FyZ3VtZW50LmNzCisrKysgYi9tY3MvbWNzL2FyZ3VtZW50LmNzCitAQCAt MTA2LDExICsxMDYsNiBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAKKyAJCXB1YmxpYyB2aXJ0 dWFsIEV4cHJlc3Npb24gQ3JlYXRlRXhwcmVzc2lvblRyZWUgKFJlc29sdmVDb250ZXh0IHJjKQor IAkJeworLQkJCWlmIChUeXBlLktpbmQgPT0gTWVtYmVyS2luZC5CeVJlZikgeworLQkJCQlyYy5S ZXBvcnQuRXJyb3IgKDgxNTMsIEV4cHIuTG9jYXRpb24sICJBbiBleHByZXNzaW9uIHRyZWUgbGFt YmRhIGNhbm5vdCBjb250YWluIGEgY2FsbCB0byBhIG1ldGhvZCwgcHJvcGVydHksIG9yIGluZGV4 ZXIgdGhhdCByZXR1cm5zIGJ5IHJlZmVyZW5jZSIpOworLQkJCQlyZXR1cm4gbnVsbDsKKy0JCQl9 CistCisgCQkJaWYgKEFyZ1R5cGUgPT0gQVR5cGUuRGVmYXVsdCkKKyAJCQkJcmMuUmVwb3J0LkVy cm9yICg4NTQsIEV4cHIuTG9jYXRpb24sICJBbiBleHByZXNzaW9uIHRyZWUgY2Fubm90IGNvbnRh aW4gYW4gaW52b2NhdGlvbiB3aGljaCB1c2VzIG9wdGlvbmFsIHBhcmFtZXRlciIpOworIAorZGlm ZiAtLWdpdCBhL21jcy9tY3MvYXNzaWduLmNzIGIvbWNzL21jcy9hc3NpZ24uY3MKK2luZGV4IGEw N2M4YzBlZjM5Li41OTY2MjNmZWFlNCAxMDA2NDQKKy0tLSBhL21jcy9tY3MvYXNzaWduLmNzCisr KysgYi9tY3MvbWNzL2Fzc2lnbi5jcworQEAgLTM5MSw5ICszOTEsMjEgQEAgbmFtZXNwYWNlIE1v bm8uQ1NoYXJwIHsKKyAJCQlyZXR1cm4gU3lzdGVtLkxpbnEuRXhwcmVzc2lvbnMuRXhwcmVzc2lv bi5Bc3NpZ24gKHRhcmdldF9vYmplY3QsIHNvdXJjZV9vYmplY3QpOworIAkJfQorIAorLQkJcHJv dGVjdGVkIHZpcnR1YWwgRXhwcmVzc2lvbiBSZXNvbHZlQ29udmVyc2lvbnMgKFJlc29sdmVDb250 ZXh0IGVjKQorKwkJcHJvdGVjdGVkIHZpcnR1YWwgRXhwcmVzc2lvbiBSZXNvbHZlQ29udmVyc2lv bnMgKFJlc29sdmVDb250ZXh0IHJjKQorIAkJeworLQkJCXNvdXJjZSA9IENvbnZlcnQuSW1wbGlj aXRDb252ZXJzaW9uUmVxdWlyZWQgKGVjLCBzb3VyY2UsIHRhcmdldC5UeXBlLCBzb3VyY2UuTG9j YXRpb24pOworKwkJCXZhciB0dHlwZSA9IHRhcmdldC5UeXBlOworKwkJCXZhciBzdGFja0FsbG9j ID0gc291cmNlIGFzIFN0YWNrQWxsb2M7CisrCQkJaWYgKHN0YWNrQWxsb2MgIT0gbnVsbCAmJiB0 dHlwZS5Bcml0eSA9PSAxICYmIHR0eXBlLkdldERlZmluaXRpb24gKCkgPT0gcmMuTW9kdWxlLlBy ZWRlZmluZWRUeXBlcy5TcGFuR2VuZXJpYy5UeXBlU3BlYyAmJgorKwkJCSAgICByYy5Nb2R1bGUu Q29tcGlsZXIuU2V0dGluZ3MuVmVyc2lvbiA+PSBMYW5ndWFnZVZlcnNpb24uVl83XzIpIHsKKysK KysJCQkJdmFyIGV0eXBlID0gdHR5cGUuVHlwZUFyZ3VtZW50cyBbMF07CisrCQkJCXZhciBzdHlw ZSA9ICgoUG9pbnRlckNvbnRhaW5lcilzb3VyY2UuVHlwZSkuRWxlbWVudDsKKysJCQkJaWYgKGV0 eXBlID09IHN0eXBlICYmIHN0YWNrQWxsb2MuUmVzb2x2ZVNwYW5Db252ZXJzaW9uIChyYywgdHR5 cGUpKSB7CisrCQkJCQlyZXR1cm4gdGhpczsKKysJCQkJfQorKwkJCX0KKysKKysJCQlzb3VyY2Ug PSBDb252ZXJ0LkltcGxpY2l0Q29udmVyc2lvblJlcXVpcmVkIChyYywgc291cmNlLCB0dHlwZSwg c291cmNlLkxvY2F0aW9uKTsKKyAJCQlpZiAoc291cmNlID09IG51bGwpCisgCQkJCXJldHVybiBu dWxsOworIAorZGlmZiAtLWdpdCBhL21jcy9tY3MvYXN5bmMuY3MgYi9tY3MvbWNzL2FzeW5jLmNz CitpbmRleCBmZDY0OTkzNDZlOC4uNjQzYWVkNWU1NjggMTAwNjQ0CistLS0gYS9tY3MvbWNzL2Fz eW5jLmNzCisrKysgYi9tY3MvbWNzL2FzeW5jLmNzCitAQCAtNjI4LDU4ICs2MjgsMTEyIEBAIG5h bWVzcGFjZSBNb25vLkNTaGFycAorIAorIAkJcHJvdGVjdGVkIG92ZXJyaWRlIGJvb2wgRG9EZWZp bmVNZW1iZXJzICgpCisgCQl7CistCQkJUHJlZGVmaW5lZFR5cGUgYnVpbGRlcl90eXBlOworLQkJ CVByZWRlZmluZWRNZW1iZXI8TWV0aG9kU3BlYz4gYmY7CistCQkJUHJlZGVmaW5lZE1lbWJlcjxN ZXRob2RTcGVjPiBiczsKKy0JCQlQcmVkZWZpbmVkTWVtYmVyPE1ldGhvZFNwZWM+IHNyOworLQkJ CVByZWRlZmluZWRNZW1iZXI8TWV0aG9kU3BlYz4gc2U7CistCQkJUHJlZGVmaW5lZE1lbWJlcjxN ZXRob2RTcGVjPiBzbTsKKysJCQlUeXBlU3BlYyBidDsKKyAJCQlib29sIGhhc190YXNrX3JldHVy bl90eXBlID0gZmFsc2U7CistCQkJdmFyIHByZWRfbWVtYmVycyA9IE1vZHVsZS5QcmVkZWZpbmVk TWVtYmVyczsKKysJCQl2YXIgaXN0YXRlX21hY2hpbmUgPSBNb2R1bGUuUHJlZGVmaW5lZFR5cGVz LklBc3luY1N0YXRlTWFjaGluZTsKKysJCQlNZXRob2RTcGVjIHNldF9zdGF0ZW1hY2hpbmU7Cisg CistCQkJaWYgKHJldHVybl90eXBlLktpbmQgPT0gTWVtYmVyS2luZC5Wb2lkKSB7CistCQkJCWJ1 aWxkZXJfdHlwZSA9IE1vZHVsZS5QcmVkZWZpbmVkVHlwZXMuQXN5bmNWb2lkTWV0aG9kQnVpbGRl cjsKKy0JCQkJYmYgPSBwcmVkX21lbWJlcnMuQXN5bmNWb2lkTWV0aG9kQnVpbGRlckNyZWF0ZTsK Ky0JCQkJYnMgPSBwcmVkX21lbWJlcnMuQXN5bmNWb2lkTWV0aG9kQnVpbGRlclN0YXJ0OworLQkJ CQlzciA9IHByZWRfbWVtYmVycy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyU2V0UmVzdWx0OworLQkJ CQlzZSA9IHByZWRfbWVtYmVycy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyU2V0RXhjZXB0aW9uOwor LQkJCQlzbSA9IHByZWRfbWVtYmVycy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyU2V0U3RhdGVNYWNo aW5lOworLQkJCX0gZWxzZSBpZiAocmV0dXJuX3R5cGUgPT0gTW9kdWxlLlByZWRlZmluZWRUeXBl cy5UYXNrLlR5cGVTcGVjKSB7CistCQkJCWJ1aWxkZXJfdHlwZSA9IE1vZHVsZS5QcmVkZWZpbmVk VHlwZXMuQXN5bmNUYXNrTWV0aG9kQnVpbGRlcjsKKy0JCQkJYmYgPSBwcmVkX21lbWJlcnMuQXN5 bmNUYXNrTWV0aG9kQnVpbGRlckNyZWF0ZTsKKy0JCQkJYnMgPSBwcmVkX21lbWJlcnMuQXN5bmNU YXNrTWV0aG9kQnVpbGRlclN0YXJ0OworLQkJCQlzciA9IHByZWRfbWVtYmVycy5Bc3luY1Rhc2tN ZXRob2RCdWlsZGVyU2V0UmVzdWx0OworLQkJCQlzZSA9IHByZWRfbWVtYmVycy5Bc3luY1Rhc2tN ZXRob2RCdWlsZGVyU2V0RXhjZXB0aW9uOworLQkJCQlzbSA9IHByZWRfbWVtYmVycy5Bc3luY1Rh c2tNZXRob2RCdWlsZGVyU2V0U3RhdGVNYWNoaW5lOworLQkJCQl0YXNrID0gcHJlZF9tZW1iZXJz LkFzeW5jVGFza01ldGhvZEJ1aWxkZXJUYXNrLkdldCAoKTsKKysJCQlpZiAocmV0dXJuX3R5cGUu SXNDdXN0b21UYXNrVHlwZSAoKSkgeworKwkJCQkvLworKwkJCQkvLyBUT0RPOiBXb3VsZCBiZSBu aWNlIHRvIGNhY2hlIGFsbCB0aGlzIG9uIHBlci10eXBlIGJhc2lzCisrCQkJCS8vCisrCQkJCXZh ciBidHlwZXMgPSBDb21waWxlci5CdWlsdGluVHlwZXM7CisrCQkJCWJ0ID0gcmV0dXJuX3R5cGUu TWVtYmVyRGVmaW5pdGlvbi5HZXRBc3luY01ldGhvZEJ1aWxkZXIgKCk7CisrCQkJCVR5cGVTcGVj IGJ0X2luZmxhdGVkOworKwkJCQlpZiAocmV0dXJuX3R5cGUuSXNHZW5lcmljKSB7CisrCQkJCQli dF9pbmZsYXRlZCA9IGJ0Lk1ha2VHZW5lcmljVHlwZSAoTW9kdWxlLCBidC5NZW1iZXJEZWZpbml0 aW9uLlR5cGVQYXJhbWV0ZXJzKTsKKysJCQkJfSBlbHNlIHsKKysJCQkJCWJ0X2luZmxhdGVkID0g YnQ7CisrCQkJCX0KKysKKysJCQkJdmFyIHNldF9yZXN1bHRfc2lnbiA9IE1lbWJlckZpbHRlci5N ZXRob2QgKCJTZXRSZXN1bHQiLCAwLCBQYXJhbWV0ZXJzQ29tcGlsZWQuQ3JlYXRlRnVsbHlSZXNv bHZlZCAoYnQuTWVtYmVyRGVmaW5pdGlvbi5UeXBlUGFyYW1ldGVycyksIGJ0eXBlcy5Wb2lkKTsK KysJCQkJc2V0X3Jlc3VsdCA9IG5ldyBQcmVkZWZpbmVkTWVtYmVyPE1ldGhvZFNwZWM+IChNb2R1 bGUsIGJ0LCBzZXRfcmVzdWx0X3NpZ24pLlJlc29sdmUgKExvY2F0aW9uKTsKKysKKysJCQkJdmFy IHNldF9leGNlcHRpb25fc2lnbiA9IE1lbWJlckZpbHRlci5NZXRob2QgKCJTZXRFeGNlcHRpb24i LCAwLCBQYXJhbWV0ZXJzQ29tcGlsZWQuQ3JlYXRlRnVsbHlSZXNvbHZlZCAoYnR5cGVzLkV4Y2Vw dGlvbiksIGJ0eXBlcy5Wb2lkKTsKKysJCQkJc2V0X2V4Y2VwdGlvbiA9IG5ldyBQcmVkZWZpbmVk TWVtYmVyPE1ldGhvZFNwZWM+IChNb2R1bGUsIGJ0LCBzZXRfZXhjZXB0aW9uX3NpZ24pLlJlc29s dmUgKExvY2F0aW9uKTsKKysKKysJCQkJdmFyIGJ1aWxkZXJfZmFjdG9yeV9zaWduID0gTWVtYmVy RmlsdGVyLk1ldGhvZCAoIkNyZWF0ZSIsIDAsIFBhcmFtZXRlcnNDb21waWxlZC5FbXB0eVJlYWRP bmx5UGFyYW1ldGVycywgYnRfaW5mbGF0ZWQpOworKwkJCQlidWlsZGVyX2ZhY3RvcnkgPSBuZXcg UHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiAoTW9kdWxlLCBidCwgYnVpbGRlcl9mYWN0b3J5 X3NpZ24pLlJlc29sdmUgKExvY2F0aW9uKTsKKysJCQkJaWYgKGJ1aWxkZXJfZmFjdG9yeT8uSXNT dGF0aWMgPT0gZmFsc2UpCisrCQkJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24g KCJyZXBvcnQgYmV0dGVyIGVycm9yIG1lc3NhZ2UiKTsKKysKKysJCQkJdmFyIGJ1aWxkZXJfc3Rh cnRfc2lnbiA9IE1lbWJlckZpbHRlci5NZXRob2QgKCJTdGFydCIsIDEsIG5ldyBQYXJhbWV0ZXJz SW1wb3J0ZWQgKAorKwkJCQkJCW5ldyBbXSB7CisrCQkJCQkJCQluZXcgUGFyYW1ldGVyRGF0YSAo bnVsbCwgUGFyYW1ldGVyLk1vZGlmaWVyLlJFRiksCisrCQkJCQkJCX0sCisrCQkJCQkJbmV3IFtd IHsKKysJCQkJCQkJCW5ldyBUeXBlUGFyYW1ldGVyU3BlYyAoMCwgbnVsbCwgU3BlY2lhbENvbnN0 cmFpbnQuTm9uZSwgVmFyaWFuY2UuTm9uZSwgbnVsbCksCisrCQkJCQkJCX0sIGZhbHNlKSwKKysJ CQkJCWJ0eXBlcy5Wb2lkKTsKKysJCQkJYnVpbGRlcl9zdGFydCA9IG5ldyBQcmVkZWZpbmVkTWVt YmVyPE1ldGhvZFNwZWM+IChNb2R1bGUsIGJ0LCBidWlsZGVyX3N0YXJ0X3NpZ24pLlJlc29sdmUg KExvY2F0aW9uKTsKKysKKysJCQkJaWYgKCFpc3RhdGVfbWFjaGluZS5EZWZpbmUgKCkpCisrCQkJ CQlyZXR1cm4gZmFsc2U7CisrCisrCQkJCXZhciBzZXRfc3RhdGVtYWNoaW5lX3NpZ24gPSBNZW1i ZXJGaWx0ZXIuTWV0aG9kICgiU2V0U3RhdGVNYWNoaW5lIiwgMCwgUGFyYW1ldGVyc0NvbXBpbGVk LkNyZWF0ZUZ1bGx5UmVzb2x2ZWQgKGlzdGF0ZV9tYWNoaW5lLlR5cGVTcGVjKSwgYnR5cGVzLlZv aWQpOworKwkJCQlzZXRfc3RhdGVtYWNoaW5lID0gbmV3IFByZWRlZmluZWRNZW1iZXI8TWV0aG9k U3BlYz4gKE1vZHVsZSwgYnQsIHNldF9zdGF0ZW1hY2hpbmVfc2lnbikuUmVzb2x2ZSAoTG9jYXRp b24pOyA7CisrCisrCQkJCXZhciB0YXNrX3NpZ24gPSBNZW1iZXJGaWx0ZXIuUHJvcGVydHkgKCJU YXNrIiwgcmV0dXJuX3R5cGUuTWVtYmVyRGVmaW5pdGlvbiBhcyBUeXBlU3BlYyk7CisrCQkJCXRh c2sgPSBuZXcgUHJlZGVmaW5lZE1lbWJlcjxQcm9wZXJ0eVNwZWM+IChNb2R1bGUsIGJ0LCB0YXNr X3NpZ24pLlJlc29sdmUgKExvY2F0aW9uKTsKKysKKysJCQkJaWYgKHNldF9yZXN1bHQgPT0gbnVs bCB8fCBzZXRfZXhjZXB0aW9uID09IG51bGwgfHwgYnVpbGRlcl9mYWN0b3J5ID09IG51bGwgfHwg YnVpbGRlcl9zdGFydCA9PSBudWxsIHx8IHNldF9zdGF0ZW1hY2hpbmUgPT0gbnVsbCB8fCB0YXNr ID09IG51bGwgfHwKKysJCQkJCSFNb2R1bGUuUHJlZGVmaW5lZFR5cGVzLklOb3RpZnlDb21wbGV0 aW9uLkRlZmluZSAoKSkgeworKwkJCQkJcmV0dXJuIGZhbHNlOworKwkJCQl9CisrCisrCQkJCWhh c190YXNrX3JldHVybl90eXBlID0gcmV0dXJuX3R5cGUuSXNHZW5lcmljOworIAkJCX0gZWxzZSB7 CistCQkJCWJ1aWxkZXJfdHlwZSA9IE1vZHVsZS5QcmVkZWZpbmVkVHlwZXMuQXN5bmNUYXNrTWV0 aG9kQnVpbGRlckdlbmVyaWM7CistCQkJCWJmID0gcHJlZF9tZW1iZXJzLkFzeW5jVGFza01ldGhv ZEJ1aWxkZXJHZW5lcmljQ3JlYXRlOworLQkJCQlicyA9IHByZWRfbWVtYmVycy5Bc3luY1Rhc2tN ZXRob2RCdWlsZGVyR2VuZXJpY1N0YXJ0OworLQkJCQlzciA9IHByZWRfbWVtYmVycy5Bc3luY1Rh c2tNZXRob2RCdWlsZGVyR2VuZXJpY1NldFJlc3VsdDsKKy0JCQkJc2UgPSBwcmVkX21lbWJlcnMu QXN5bmNUYXNrTWV0aG9kQnVpbGRlckdlbmVyaWNTZXRFeGNlcHRpb247CistCQkJCXNtID0gcHJl ZF9tZW1iZXJzLkFzeW5jVGFza01ldGhvZEJ1aWxkZXJHZW5lcmljU2V0U3RhdGVNYWNoaW5lOwor LQkJCQl0YXNrID0gcHJlZF9tZW1iZXJzLkFzeW5jVGFza01ldGhvZEJ1aWxkZXJHZW5lcmljVGFz ay5HZXQgKCk7CistCQkJCWhhc190YXNrX3JldHVybl90eXBlID0gdHJ1ZTsKKy0JCQl9CisrCQkJ CVByZWRlZmluZWRUeXBlIGJ1aWxkZXJfdHlwZTsKKysJCQkJUHJlZGVmaW5lZE1lbWJlcjxNZXRo b2RTcGVjPiBiZjsKKysJCQkJUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiBiczsKKysJCQkJ UHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiBzcjsKKysJCQkJUHJlZGVmaW5lZE1lbWJlcjxN ZXRob2RTcGVjPiBzZTsKKysJCQkJUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiBzbTsKKysJ CQkJdmFyIHByZWRfbWVtYmVycyA9IE1vZHVsZS5QcmVkZWZpbmVkTWVtYmVyczsKKysKKysJCQkJ aWYgKHJldHVybl90eXBlLktpbmQgPT0gTWVtYmVyS2luZC5Wb2lkKSB7CisrCQkJCQlidWlsZGVy X3R5cGUgPSBNb2R1bGUuUHJlZGVmaW5lZFR5cGVzLkFzeW5jVm9pZE1ldGhvZEJ1aWxkZXI7Cisr CQkJCQliZiA9IHByZWRfbWVtYmVycy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyQ3JlYXRlOworKwkJ CQkJYnMgPSBwcmVkX21lbWJlcnMuQXN5bmNWb2lkTWV0aG9kQnVpbGRlclN0YXJ0OworKwkJCQkJ c3IgPSBwcmVkX21lbWJlcnMuQXN5bmNWb2lkTWV0aG9kQnVpbGRlclNldFJlc3VsdDsKKysJCQkJ CXNlID0gcHJlZF9tZW1iZXJzLkFzeW5jVm9pZE1ldGhvZEJ1aWxkZXJTZXRFeGNlcHRpb247Cisr CQkJCQlzbSA9IHByZWRfbWVtYmVycy5Bc3luY1ZvaWRNZXRob2RCdWlsZGVyU2V0U3RhdGVNYWNo aW5lOworKwkJCQl9IGVsc2UgaWYgKHJldHVybl90eXBlID09IE1vZHVsZS5QcmVkZWZpbmVkVHlw ZXMuVGFzay5UeXBlU3BlYykgeworKwkJCQkJYnVpbGRlcl90eXBlID0gTW9kdWxlLlByZWRlZmlu ZWRUeXBlcy5Bc3luY1Rhc2tNZXRob2RCdWlsZGVyOworKwkJCQkJYmYgPSBwcmVkX21lbWJlcnMu QXN5bmNUYXNrTWV0aG9kQnVpbGRlckNyZWF0ZTsKKysJCQkJCWJzID0gcHJlZF9tZW1iZXJzLkFz eW5jVGFza01ldGhvZEJ1aWxkZXJTdGFydDsKKysJCQkJCXNyID0gcHJlZF9tZW1iZXJzLkFzeW5j VGFza01ldGhvZEJ1aWxkZXJTZXRSZXN1bHQ7CisrCQkJCQlzZSA9IHByZWRfbWVtYmVycy5Bc3lu Y1Rhc2tNZXRob2RCdWlsZGVyU2V0RXhjZXB0aW9uOworKwkJCQkJc20gPSBwcmVkX21lbWJlcnMu QXN5bmNUYXNrTWV0aG9kQnVpbGRlclNldFN0YXRlTWFjaGluZTsKKysJCQkJCXRhc2sgPSBwcmVk X21lbWJlcnMuQXN5bmNUYXNrTWV0aG9kQnVpbGRlclRhc2suR2V0ICgpOworKwkJCQl9IGVsc2Ug eworKwkJCQkJYnVpbGRlcl90eXBlID0gTW9kdWxlLlByZWRlZmluZWRUeXBlcy5Bc3luY1Rhc2tN ZXRob2RCdWlsZGVyR2VuZXJpYzsKKysJCQkJCWJmID0gcHJlZF9tZW1iZXJzLkFzeW5jVGFza01l dGhvZEJ1aWxkZXJHZW5lcmljQ3JlYXRlOworKwkJCQkJYnMgPSBwcmVkX21lbWJlcnMuQXN5bmNU YXNrTWV0aG9kQnVpbGRlckdlbmVyaWNTdGFydDsKKysJCQkJCXNyID0gcHJlZF9tZW1iZXJzLkFz eW5jVGFza01ldGhvZEJ1aWxkZXJHZW5lcmljU2V0UmVzdWx0OworKwkJCQkJc2UgPSBwcmVkX21l bWJlcnMuQXN5bmNUYXNrTWV0aG9kQnVpbGRlckdlbmVyaWNTZXRFeGNlcHRpb247CisrCQkJCQlz bSA9IHByZWRfbWVtYmVycy5Bc3luY1Rhc2tNZXRob2RCdWlsZGVyR2VuZXJpY1NldFN0YXRlTWFj aGluZTsKKysJCQkJCXRhc2sgPSBwcmVkX21lbWJlcnMuQXN5bmNUYXNrTWV0aG9kQnVpbGRlckdl bmVyaWNUYXNrLkdldCAoKTsKKysJCQkJCWhhc190YXNrX3JldHVybl90eXBlID0gdHJ1ZTsKKysJ CQkJfQorIAorLQkJCXNldF9yZXN1bHQgPSBzci5HZXQgKCk7CistCQkJc2V0X2V4Y2VwdGlvbiA9 IHNlLkdldCAoKTsKKy0JCQlidWlsZGVyX2ZhY3RvcnkgPSBiZi5HZXQgKCk7CistCQkJYnVpbGRl cl9zdGFydCA9IGJzLkdldCAoKTsKKysJCQkJc2V0X3Jlc3VsdCA9IHNyLkdldCAoKTsKKysJCQkJ c2V0X2V4Y2VwdGlvbiA9IHNlLkdldCAoKTsKKysJCQkJYnVpbGRlcl9mYWN0b3J5ID0gYmYuR2V0 ICgpOworKwkJCQlidWlsZGVyX3N0YXJ0ID0gYnMuR2V0ICgpOworIAorLQkJCXZhciBpc3RhdGVf bWFjaGluZSA9IE1vZHVsZS5QcmVkZWZpbmVkVHlwZXMuSUFzeW5jU3RhdGVNYWNoaW5lOworLQkJ CXZhciBzZXRfc3RhdGVtYWNoaW5lID0gc20uR2V0ICgpOworLQorLQkJCWlmICghYnVpbGRlcl90 eXBlLkRlZmluZSAoKSB8fCAhaXN0YXRlX21hY2hpbmUuRGVmaW5lICgpIHx8IHNldF9yZXN1bHQg PT0gbnVsbCB8fCBidWlsZGVyX2ZhY3RvcnkgPT0gbnVsbCB8fAorLQkJCQlzZXRfZXhjZXB0aW9u ID09IG51bGwgfHwgc2V0X3N0YXRlbWFjaGluZSA9PSBudWxsIHx8IGJ1aWxkZXJfc3RhcnQgPT0g bnVsbCB8fAorLQkJCQkhTW9kdWxlLlByZWRlZmluZWRUeXBlcy5JTm90aWZ5Q29tcGxldGlvbi5E ZWZpbmUgKCkpIHsKKy0JCQkJUmVwb3J0LkVycm9yICgxOTkzLCBMb2NhdGlvbiwKKy0JCQkJCSJD YW5ub3QgZmluZCBjb21waWxlciByZXF1aXJlZCB0eXBlcyBmb3IgYXN5bmNocm9ub3VzIGZ1bmN0 aW9ucyBzdXBwb3J0LiBBcmUgeW91IHRhcmdldGluZyB0aGUgd3JvbmcgZnJhbWV3b3JrIHZlcnNp b24/Iik7CistCQkJCXJldHVybiBiYXNlLkRvRGVmaW5lTWVtYmVycyAoKTsKKy0JCQl9CisrCQkJ CXNldF9zdGF0ZW1hY2hpbmUgPSBzbS5HZXQgKCk7CisrCisrCQkJCWlmICghYnVpbGRlcl90eXBl LkRlZmluZSAoKSB8fCAhaXN0YXRlX21hY2hpbmUuRGVmaW5lICgpIHx8IHNldF9yZXN1bHQgPT0g bnVsbCB8fCBidWlsZGVyX2ZhY3RvcnkgPT0gbnVsbCB8fAorKwkJCQkJc2V0X2V4Y2VwdGlvbiA9 PSBudWxsIHx8IHNldF9zdGF0ZW1hY2hpbmUgPT0gbnVsbCB8fCBidWlsZGVyX3N0YXJ0ID09IG51 bGwgfHwKKysJCQkJCSFNb2R1bGUuUHJlZGVmaW5lZFR5cGVzLklOb3RpZnlDb21wbGV0aW9uLkRl ZmluZSAoKSkgeworKwkJCQkJUmVwb3J0LkVycm9yICgxOTkzLCBMb2NhdGlvbiwKKysJCQkJCQki Q2Fubm90IGZpbmQgY29tcGlsZXIgcmVxdWlyZWQgdHlwZXMgZm9yIGFzeW5jaHJvbm91cyBmdW5j dGlvbnMgc3VwcG9ydC4gQXJlIHlvdSB0YXJnZXRpbmcgdGhlIHdyb25nIGZyYW1ld29yayB2ZXJz aW9uPyIpOworKwkJCQkJcmV0dXJuIGJhc2UuRG9EZWZpbmVNZW1iZXJzICgpOworKwkJCQl9Cisg CistCQkJdmFyIGJ0ID0gYnVpbGRlcl90eXBlLlR5cGVTcGVjOworKwkJCQlidCA9IGJ1aWxkZXJf dHlwZS5UeXBlU3BlYzsKKysJCQl9CisgCisgCQkJLy8KKyAJCQkvLyBJbmZsYXRlIGdlbmVyaWMg VGFzayB0eXBlcworQEAgLTgyNSw5ICs4NzksMjYgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisg CQkJCXByZWRlZmluZWQgPSB1bnNhZmVWZXJzaW9uID8gcG0uQXN5bmNWb2lkTWV0aG9kQnVpbGRl ck9uQ29tcGxldGVkVW5zYWZlIDogcG0uQXN5bmNWb2lkTWV0aG9kQnVpbGRlck9uQ29tcGxldGVk OworIAkJCX0gZWxzZSBpZiAocmV0dXJuX3R5cGUgPT0gTW9kdWxlLlByZWRlZmluZWRUeXBlcy5U YXNrLlR5cGVTcGVjKSB7CisgCQkJCXByZWRlZmluZWQgPSB1bnNhZmVWZXJzaW9uID8gcG0uQXN5 bmNUYXNrTWV0aG9kQnVpbGRlck9uQ29tcGxldGVkVW5zYWZlIDogcG0uQXN5bmNUYXNrTWV0aG9k QnVpbGRlck9uQ29tcGxldGVkOworLQkJCX0gZWxzZSB7CisrCQkJfSBlbHNlIGlmIChyZXR1cm5f dHlwZS5Jc0dlbmVyaWNUYXNrKSB7CisgCQkJCXByZWRlZmluZWQgPSB1bnNhZmVWZXJzaW9uID8g cG0uQXN5bmNUYXNrTWV0aG9kQnVpbGRlckdlbmVyaWNPbkNvbXBsZXRlZFVuc2FmZSA6IHBtLkFz eW5jVGFza01ldGhvZEJ1aWxkZXJHZW5lcmljT25Db21wbGV0ZWQ7CisgCQkJCWhhc190YXNrX3Jl dHVybl90eXBlID0gdHJ1ZTsKKysJCQl9IGVsc2UgeworKwkJCQl2YXIgcGFyYW1ldGVycyA9IG5l dyBQYXJhbWV0ZXJzSW1wb3J0ZWQgKAorKwkJCQkJbmV3IFtdIHsKKysJCQkJCQkJCW5ldyBQYXJh bWV0ZXJEYXRhIChudWxsLCBQYXJhbWV0ZXIuTW9kaWZpZXIuUkVGKSwKKysJCQkJCQkJCW5ldyBQ YXJhbWV0ZXJEYXRhIChudWxsLCBQYXJhbWV0ZXIuTW9kaWZpZXIuUkVGKQorKwkJCQkJCX0sCisr CQkJCQluZXcgW10geworKwkJCQkJCQkJbmV3IFR5cGVQYXJhbWV0ZXJTcGVjICgwLCBudWxsLCBT cGVjaWFsQ29uc3RyYWludC5Ob25lLCBWYXJpYW5jZS5Ob25lLCBudWxsKSwKKysJCQkJCQkJCW5l dyBUeXBlUGFyYW1ldGVyU3BlYyAoMSwgbnVsbCwgU3BlY2lhbENvbnN0cmFpbnQuTm9uZSwgVmFy aWFuY2UuTm9uZSwgbnVsbCkKKysJCQkJCX0sIGZhbHNlKTsKKysKKysJCQkJdmFyIG9uX2NvbXBs ZXRlZF9zaWduID0gdW5zYWZlVmVyc2lvbiA/CisrCQkJCQlNZW1iZXJGaWx0ZXIuTWV0aG9kICgi QXdhaXRVbnNhZmVPbkNvbXBsZXRlZCIsIDIsIHBhcmFtZXRlcnMsIENvbXBpbGVyLkJ1aWx0aW5U eXBlcy5Wb2lkKSA6CisrCQkJCSAgICBNZW1iZXJGaWx0ZXIuTWV0aG9kICgiQXdhaXRPbkNvbXBs ZXRlZCIsIDIsIHBhcmFtZXRlcnMsIENvbXBpbGVyLkJ1aWx0aW5UeXBlcy5Wb2lkKTsKKysJCQkJ CisrCQkJCXByZWRlZmluZWQgPSBuZXcgUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiAoTW9k dWxlLCByZXR1cm5fdHlwZS5NZW1iZXJEZWZpbml0aW9uLkdldEFzeW5jTWV0aG9kQnVpbGRlciAo KSwgb25fY29tcGxldGVkX3NpZ24pOworKwkJCQloYXNfdGFza19yZXR1cm5fdHlwZSA9IHJldHVy bl90eXBlLklzR2VuZXJpYzsKKyAJCQl9CisgCisgCQkJdmFyIG9uX2NvbXBsZXRlZCA9IHByZWRl ZmluZWQuUmVzb2x2ZSAoTG9jYXRpb24pOworQEAgLTg4NywxMSArOTU4LDE0IEBAIG5hbWVzcGFj ZSBNb25vLkNTaGFycAorIAkJCS8vIHN0YXRlTWFjaGluZS4kYnVpbGRlci5TdGFydDx7c3RvcmV5 LXR5cGV9PihyZWYgc3RhdGVNYWNoaW5lKTsKKyAJCQkvLworIAkJCWluc3RhbmNlLkFkZHJlc3NP ZiAoZWMsIEFkZHJlc3NPcC5TdG9yZSk7CistCQkJZWMuRW1pdCAoT3BDb2Rlcy5MZGZsZGEsIGJ1 aWxkZXJfZmllbGQpOworKworKwkJCWJvb2wgc3RydWN0X2J1aWxkZXIgPSBidWlsZGVyLk1lbWJl clR5cGUuSXNTdHJ1Y3Q7CisrCisrCQkJZWMuRW1pdCAoc3RydWN0X2J1aWxkZXIgPyBPcENvZGVz LkxkZmxkYSA6IE9wQ29kZXMuTGRmbGQsIGJ1aWxkZXJfZmllbGQpOworIAkJCWlmIChUYXNrICE9 IG51bGwpCisgCQkJCWVjLkVtaXQgKE9wQ29kZXMuRHVwKTsKKyAJCQlpbnN0YW5jZS5BZGRyZXNz T2YgKGVjLCBBZGRyZXNzT3AuU3RvcmUpOworLQkJCWVjLkVtaXQgKE9wQ29kZXMuQ2FsbCwgYnVp bGRlcl9zdGFydC5NYWtlR2VuZXJpY01ldGhvZCAoTW9kdWxlLCBpbnN0YW5jZS5UeXBlKSk7Cisr CQkJZWMuRW1pdCAoc3RydWN0X2J1aWxkZXIgPyBPcENvZGVzLkNhbGwgOiBPcENvZGVzLkNhbGx2 aXJ0LCBidWlsZGVyX3N0YXJ0Lk1ha2VHZW5lcmljTWV0aG9kIChNb2R1bGUsIGluc3RhbmNlLlR5 cGUpKTsKKyAKKyAJCQkvLworIAkJCS8vIEVtaXRzIHJldHVybiBzdGF0ZU1hY2hpbmUuJGJ1aWxk ZXIuVGFzazsKK0BAIC0xMDI5LDQgKzExMDMsMjAgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisg CQkJRW1pdEFzc2lnbiAoZWMsIG5ldyBOdWxsQ29uc3RhbnQgKHR5cGUsIGxvYyksIGZhbHNlLCBm YWxzZSk7CisgCQl9CisgCX0KKysKKysJc3RhdGljIGNsYXNzIFR5cGVTcGVjQXN5bmNFeHRlbnNp b25zCisrCXsKKysJCXB1YmxpYyBzdGF0aWMgYm9vbCBJc0N1c3RvbVRhc2tUeXBlICh0aGlzIFR5 cGVTcGVjIHR5cGUpCisrCQl7CisrCQkJLy8gTEFNRVNQRUM6IEFyaXR5IGlzIG5vdCBtZW50aW9u ZWQKKysJCQlpZiAodHlwZS5Bcml0eSA+IDEpCisrCQkJCXJldHVybiBmYWxzZTsKKysJCQkKKysJ CQl2YXIgYW1iID0gdHlwZS5NZW1iZXJEZWZpbml0aW9uLkdldEFzeW5jTWV0aG9kQnVpbGRlciAo KTsKKysJCQlpZiAoYW1iID09IG51bGwpCisrCQkJCXJldHVybiBmYWxzZTsKKysKKysJCQlyZXR1 cm4gYW1iLkFyaXR5ID09IHR5cGUuQXJpdHk7CisrCQl9CisrCX0KKyB9CitkaWZmIC0tZ2l0IGEv bWNzL21jcy9hdHRyaWJ1dGUuY3MgYi9tY3MvbWNzL2F0dHJpYnV0ZS5jcworaW5kZXggM2ZmMmQ2 OGNjYjUuLjgzZDQwMzExOGFkIDEwMDY0NAorLS0tIGEvbWNzL21jcy9hdHRyaWJ1dGUuY3MKKysr KyBiL21jcy9tY3MvYXR0cmlidXRlLmNzCitAQCAtNzg5LDYgKzc4OSwxNyBAQCBuYW1lc3BhY2Ug TW9uby5DU2hhcnAgeworIAkJCXJldHVybiAoKEJvb2xDb25zdGFudCkgcG9zX2FyZ3NbMF0uRXhw cikuVmFsdWU7CisgCQl9CisgCisrCQlwdWJsaWMgVHlwZVNwZWMgR2V0QXN5bmNNZXRob2RCdWls ZGVyVmFsdWUgKCkKKysJCXsKKysJCQlpZiAoIWFyZ19yZXNvbHZlZCkKKysJCQkJUmVzb2x2ZSAo KTsKKysKKysJCQlpZiAocmVzb2x2ZV9lcnJvcikKKysJCQkJcmV0dXJuIG51bGw7CisrCisrCQkJ cmV0dXJuIEdldEFyZ3VtZW50VHlwZSAoKTsKKysJCX0KKysKKyAJCXB1YmxpYyBUeXBlU3BlYyBH ZXRDb0NsYXNzQXR0cmlidXRlVmFsdWUgKCkKKyAJCXsKKyAJCQlpZiAoIWFyZ19yZXNvbHZlZCkK K0BAIC0xNzU0LDkgKzE3NjUsMTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAKKyAJCS8v IE5ldyBpbiAuTkVUIDQuNworIAkJcHVibGljIHJlYWRvbmx5IFByZWRlZmluZWRUdXBsZUVsZW1l bnROYW1lc0F0dHJpYnV0ZSBUdXBsZUVsZW1lbnROYW1lczsKKysJCXB1YmxpYyByZWFkb25seSBQ cmVkZWZpbmVkQXR0cmlidXRlIEFzeW5jTWV0aG9kQnVpbGRlcjsKKyAKKyAJCS8vIE5ldyBpbiAu TkVUIDQuNy4xCisgCQlwdWJsaWMgcmVhZG9ubHkgUHJlZGVmaW5lZEF0dHJpYnV0ZSBJc1JlYWRP bmx5OworKwkJcHVibGljIHJlYWRvbmx5IFByZWRlZmluZWRBdHRyaWJ1dGUgSXNCeVJlZkxpa2U7 CisgCisgCQkvLworIAkJLy8gT3B0aW9uYWwgdHlwZXMgd2hpY2ggYXJlIHVzZWQgYXMgdHlwZXMg YW5kIGZvciBtZW1iZXIgbG9va3VwCitAQCAtMTgzNyw4ICsxODUwLDEwIEBAIG5hbWVzcGFjZSBN b25vLkNTaGFycCB7CisgCQkJQ2FsbGVyTGluZU51bWJlckF0dHJpYnV0ZSA9IG5ldyBQcmVkZWZp bmVkQXR0cmlidXRlIChtb2R1bGUsICJTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzIiwg IkNhbGxlckxpbmVOdW1iZXJBdHRyaWJ1dGUiKTsKKyAJCQlDYWxsZXJGaWxlUGF0aEF0dHJpYnV0 ZSA9IG5ldyBQcmVkZWZpbmVkQXR0cmlidXRlIChtb2R1bGUsICJTeXN0ZW0uUnVudGltZS5Db21w aWxlclNlcnZpY2VzIiwgIkNhbGxlckZpbGVQYXRoQXR0cmlidXRlIik7CisgCisrCQkJQXN5bmNN ZXRob2RCdWlsZGVyID0gbmV3IFByZWRlZmluZWRBdHRyaWJ1dGUgKG1vZHVsZSwgIlN5c3RlbS5S dW50aW1lLkNvbXBpbGVyU2VydmljZXMiLCAiQXN5bmNNZXRob2RCdWlsZGVyQXR0cmlidXRlIik7 CisgCQkJVHVwbGVFbGVtZW50TmFtZXMgPSBuZXcgUHJlZGVmaW5lZFR1cGxlRWxlbWVudE5hbWVz QXR0cmlidXRlIChtb2R1bGUsICJTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzIiwgIlR1 cGxlRWxlbWVudE5hbWVzQXR0cmlidXRlIik7CisgCQkJSXNSZWFkT25seSA9IG5ldyBQcmVkZWZp bmVkQXR0cmlidXRlIChtb2R1bGUsICJTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzIiwg IklzUmVhZE9ubHlBdHRyaWJ1dGUiKTsKKysJCQlJc0J5UmVmTGlrZSA9IG5ldyBQcmVkZWZpbmVk QXR0cmlidXRlIChtb2R1bGUsICJTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzIiwgIklz QnlSZWZMaWtlQXR0cmlidXRlIik7CisgCisgCQkJLy8gVE9ETzogU2hvdWxkIGRlZmluZSBvbmx5 IGF0dHJpYnV0ZXMgd2hpY2ggYXJlIHVzZWQgZm9yIGNvbXBhcmlzb24KKyAJCQljb25zdCBTeXN0 ZW0uUmVmbGVjdGlvbi5CaW5kaW5nRmxhZ3MgYWxsX2ZpZWxkcyA9IFN5c3RlbS5SZWZsZWN0aW9u LkJpbmRpbmdGbGFncy5QdWJsaWMgfAorZGlmZiAtLWdpdCBhL21jcy9tY3MvY2xhc3MuY3MgYi9t Y3MvbWNzL2NsYXNzLmNzCitpbmRleCA5YWZiMzJjNmZlNS4uNmIxYWRjMjk3YTMgMTAwNjQ0Cist LS0gYS9tY3MvbWNzL2NsYXNzLmNzCisrKysgYi9tY3MvbWNzL2NsYXNzLmNzCitAQCAtMjI0LDYg KzIyNCwyNCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQl9CisgCQl9CisgCisrCQlwdWJs aWMgdm9pZCBDbG9zZUNvbnRhaW5lckVhcmx5Rm9yUmVmbGVjdGlvbkVtaXQgKCkKKysJCXsKKysJ CQlpZiAoY29udGFpbmVycyAhPSBudWxsKSB7CisrCQkJCWZvcmVhY2ggKFR5cGVDb250YWluZXIg dGMgaW4gY29udGFpbmVycykgeworKwkJCQkJLy8KKysJCQkJCS8vIFNSRSByZXF1aXJlcyBkdWUg dG8gaW50ZXJuYWwgY2hlY2tzIHRoYXQgYW55IGZpZWxkIG9mIGVudW0gdHlwZSBpcworKwkJCQkJ Ly8gYmFrZWQuIFdlIGNsb3NlIGFsbCBlbnVtIHR5cGVzIGJlZm9yZSBjbG9zaW5nIGFueSBvdGhl ciB0eXBlcyB0bworKwkJCQkJLy8gd29ya2Fyb3VuZCB0aGlzIGxpbWl0YXRpb24KKysJCQkJCS8v CisrCQkJCQlpZiAodGMuS2luZCA9PSBNZW1iZXJLaW5kLkVudW0pIHsKKysJCQkJCQl0Yy5DbG9z ZUNvbnRhaW5lciAoKTsKKysJCQkJCX0gZWxzZSB7CisrCQkJCQkJdGMuQ2xvc2VDb250YWluZXJF YXJseUZvclJlZmxlY3Rpb25FbWl0ICgpOworKwkJCQkJfQorKwkJCQl9CisrCQkJfQorKwkJfQor KworIAkJcHVibGljIHZpcnR1YWwgdm9pZCBDcmVhdGVNZXRhZGF0YU5hbWUgKFN0cmluZ0J1aWxk ZXIgc2IpCisgCQl7CisgCQkJaWYgKFBhcmVudCAhPSBudWxsICYmIFBhcmVudC5NZW1iZXJOYW1l ICE9IG51bGwpCitAQCAtMTEwMiw2ICsxMTIwLDE4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAor IAkJCQltZW1iZXIuR2VuZXJhdGVEb2NDb21tZW50IChidWlsZGVyKTsKKyAJCX0KKyAKKysJCXB1 YmxpYyBUeXBlU3BlYyBHZXRBc3luY01ldGhvZEJ1aWxkZXIgKCkKKysJCXsKKysJCQlpZiAoT3B0 QXR0cmlidXRlcyA9PSBudWxsKQorKwkJCQlyZXR1cm4gbnVsbDsKKysKKysJCQlBdHRyaWJ1dGUg YSA9IE9wdEF0dHJpYnV0ZXMuU2VhcmNoIChNb2R1bGUuUHJlZGVmaW5lZEF0dHJpYnV0ZXMuQXN5 bmNNZXRob2RCdWlsZGVyKTsKKysJCQlpZiAoYSA9PSBudWxsKQorKwkJCQlyZXR1cm4gbnVsbDsK KysKKysJCQlyZXR1cm4gYS5HZXRBc3luY01ldGhvZEJ1aWxkZXJWYWx1ZSAoKTsKKysJCX0KKysK KyAJCXB1YmxpYyBUeXBlU3BlYyBHZXRBdHRyaWJ1dGVDb0NsYXNzICgpCisgCQl7CisgCQkJaWYg KE9wdEF0dHJpYnV0ZXMgPT0gbnVsbCkKK0BAIC0yMTcxLDcgKzIyMDEsNyBAQCBuYW1lc3BhY2Ug TW9uby5DU2hhcnAKKyAKKyAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVtaXQgKCkKKyAJCXsKKy0J CQlpZiAoSW50ZXJmYWNlcyAhPSBudWxsKSB7CisrCQkJaWYgKEludGVyZmFjZXMgIT0gbnVsbCAm JiAoTW9kRmxhZ3MgJiBNb2RpZmllcnMuUFJJVkFURSkgPT0gMCkgeworIAkJCQlmb3JlYWNoICh2 YXIgaWZhY2UgaW4gSW50ZXJmYWNlcykgeworIAkJCQkJaWYgKGlmYWNlLkhhc05hbWVkVHVwbGVF bGVtZW50KSB7CisgCQkJCQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgibmFt ZWQgdHVwbGVzIGZvciAuaW50ZXJmYWNlaW1wbCIpOworQEAgLTMwMjMsNyArMzA1Myw4IEBAIG5h bWVzcGFjZSBNb25vLkNTaGFycAorIAkJCU1vZGlmaWVycy5JTlRFUk5BTCAgfAorIAkJCU1vZGlm aWVycy5VTlNBRkUgICAgfAorIAkJCU1vZGlmaWVycy5QUklWQVRFICAgfAorLQkJCU1vZGlmaWVy cy5SRUFET05MWTsKKysJCQlNb2RpZmllcnMuUkVBRE9OTFkgIHwKKysJCQlNb2RpZmllcnMuUkVG OworIAorIAkJcHVibGljIFN0cnVjdCAoVHlwZUNvbnRhaW5lciBwYXJlbnQsIE1lbWJlck5hbWUg bmFtZSwgTW9kaWZpZXJzIG1vZCwgQXR0cmlidXRlcyBhdHRycykKKyAJCQk6IGJhc2UgKHBhcmVu dCwgbmFtZSwgYXR0cnMsIE1lbWJlcktpbmQuU3RydWN0KQorQEAgLTMxMzksNiArMzE3MCw5IEBA IG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCWlmICgoTW9kRmxhZ3MgJiBNb2RpZmllcnMuUkVB RE9OTFkpICE9IDApCisgCQkJCU1vZHVsZS5QcmVkZWZpbmVkQXR0cmlidXRlcy5Jc1JlYWRPbmx5 LkVtaXRBdHRyaWJ1dGUgKFR5cGVCdWlsZGVyKTsKKyAKKysJCQlpZiAoKE1vZEZsYWdzICYgTW9k aWZpZXJzLlJFRikgIT0gMCkKKysJCQkJTW9kdWxlLlByZWRlZmluZWRBdHRyaWJ1dGVzLklzQnlS ZWZMaWtlLkVtaXRBdHRyaWJ1dGUgKFR5cGVCdWlsZGVyKTsKKysKKyAJCQlDaGVja1N0cnVjdEN5 Y2xlcyAoKTsKKyAKKyAJCQliYXNlLkVtaXQgKCk7CitAQCAtMzIxMyw2ICszMjQ3LDEwIEBAIG5h bWVzcGFjZSBNb25vLkNTaGFycAorIAkJcHJvdGVjdGVkIG92ZXJyaWRlIFR5cGVTcGVjW10gUmVz b2x2ZUJhc2VUeXBlcyAob3V0IEZ1bGxOYW1lZEV4cHJlc3Npb24gYmFzZV9jbGFzcykKKyAJCXsK KyAJCQl2YXIgaWZhY2VzID0gYmFzZS5SZXNvbHZlQmFzZVR5cGVzIChvdXQgYmFzZV9jbGFzcyk7 CisrCQkJaWYgKGlmYWNlcyAhPSBudWxsICYmIChNb2RGbGFncyAmIE1vZGlmaWVycy5SRUYpICE9 IDApIHsKKysJCQkJUmVwb3J0LkVycm9yICg4MzQzLCBMb2NhdGlvbiwgImB7MH0nOiByZWYgc3Ry dWN0cyBjYW5ub3QgaW1wbGVtZW50IGludGVyZmFjZXMiLCBHZXRTaWduYXR1cmVGb3JFcnJvciAo KSk7CisrCQkJfQorKworIAkJCWJhc2VfdHlwZSA9IENvbXBpbGVyLkJ1aWx0aW5UeXBlcy5WYWx1 ZVR5cGU7CisgCQkJcmV0dXJuIGlmYWNlczsKKyAJCX0KK0BAIC0zOTE1LDcgKzM5NTMsNyBAQCBu YW1lc3BhY2UgTW9uby5DU2hhcnAKKyAKKyAJCXByb3RlY3RlZCB2b2lkIElzVHlwZVBlcm1pdHRl ZCAoKQorIAkJeworLQkJCWlmIChNZW1iZXJUeXBlLklzU3BlY2lhbFJ1bnRpbWVUeXBlKSB7Cisr CQkJaWYgKE1lbWJlclR5cGUuSXNTcGVjaWFsUnVudGltZVR5cGUgfHwgTWVtYmVyVHlwZS5Jc0J5 UmVmTGlrZSkgeworIAkJCQlpZiAoUGFyZW50IGlzIFN0YXRlTWFjaGluZSkgeworIAkJCQkJUmVw b3J0LkVycm9yICg0MDEyLCBMb2NhdGlvbiwKKyAJCQkJCQkiUGFyYW1ldGVycyBvciBsb2NhbCB2 YXJpYWJsZXMgb2YgdHlwZSBgezB9JyBjYW5ub3QgYmUgZGVjbGFyZWQgaW4gYXN5bmMgbWV0aG9k cyBvciBpdGVyYXRvcnMiLAorQEAgLTM5MjQsNiArMzk2MiwxOSBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAKKyAJCQkJCVJlcG9ydC5FcnJvciAoNDAxMywgTG9jYXRpb24sCisgCQkJCQkJIkxvY2Fs IHZhcmlhYmxlcyBvZiB0eXBlIGB7MH0nIGNhbm5vdCBiZSB1c2VkIGluc2lkZSBhbm9ueW1vdXMg bWV0aG9kcywgbGFtYmRhIGV4cHJlc3Npb25zIG9yIHF1ZXJ5IGV4cHJlc3Npb25zIiwKKyAJCQkJ CQlNZW1iZXJUeXBlLkdldFNpZ25hdHVyZUZvckVycm9yICgpKTsKKysJCQkJfSBlbHNlIGlmIChN ZW1iZXJUeXBlLklzQnlSZWZMaWtlKSB7CisrCQkJCQlpZiAoKE1vZEZsYWdzICYgKE1vZGlmaWVy cy5BQlNUUkFDVCB8IE1vZGlmaWVycy5FWFRFUk4pKSAhPSAwKQorKwkJCQkJCXJldHVybjsKKysK KysJCQkJCWlmICgoTW9kRmxhZ3MgJiBNb2RpZmllcnMuQXV0b1Byb3BlcnR5KSA9PSAwICYmIHRo aXMgaXMgUHJvcGVydHkpCisrCQkJCQkJcmV0dXJuOworKworKwkJCQkJaWYgKChNb2RGbGFncyAm IE1vZGlmaWVycy5TVEFUSUMpID09IDAgJiYgKFBhcmVudC5Nb2RGbGFncyAmIE1vZGlmaWVycy5S RUYpICE9IDApCisrCQkJCQkJcmV0dXJuOworKworKwkJCQkJUmVwb3J0LkVycm9yICg4MzQ1LCBM b2NhdGlvbiwKKysJCQkJCQkiRmllbGQgb3IgYXV0by1pbXBsZW1lbnRlZCBwcm9wZXJ0eSBjYW5u b3QgYmUgb2YgdHlwZSBgezB9JyB1bmxlc3MgaXQgaXMgYW4gaW5zdGFuY2UgbWVtYmVyIG9mIGEg cmVmIHN0cnVjdCIsCisrCQkJCQkJTWVtYmVyVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7 CisgCQkJCX0gZWxzZSB7CisgCQkJCQlSZXBvcnQuRXJyb3IgKDYxMCwgTG9jYXRpb24sIAorIAkJ CQkJCSJGaWVsZCBvciBwcm9wZXJ0eSBjYW5ub3QgYmUgb2YgdHlwZSBgezB9JyIsIE1lbWJlclR5 cGUuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCkpOworZGlmZiAtLWdpdCBhL21jcy9tY3MvY29uc3Qu Y3MgYi9tY3MvbWNzL2NvbnN0LmNzCitpbmRleCAwNDZhZWMyNGMxYi4uNjU4ZjE1ZWM1N2EgMTAw NjQ0CistLS0gYS9tY3MvbWNzL2NvbnN0LmNzCisrKysgYi9tY3MvbWNzL2NvbnN0LmNzCitAQCAt MjA2LDcgKzIwNiw5IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCQljID0gZmllbGQu Q29udmVydEluaXRpYWxpemVyIChyYywgYyk7CisgCisgCQkJCWlmIChjID09IG51bGwpIHsKKy0J CQkJCWlmIChUeXBlU3BlYy5Jc1JlZmVyZW5jZVR5cGUgKGZpZWxkLk1lbWJlclR5cGUpKQorKwkJ CQkJaWYgKGV4cHIgaXMgRGVmYXVsdExpdGVyYWxFeHByZXNzaW9uKSB7CisrCQkJCQkJLy8gSXQn cyBoYW5kbGVkIGJlbGxvdyBpbiBOZXcuQ29uc3RhbnRpZnkKKysJCQkJCX0gZWxzZSBpZiAoVHlw ZVNwZWMuSXNSZWZlcmVuY2VUeXBlIChmaWVsZC5NZW1iZXJUeXBlKSkKKyAJCQkJCQlFcnJvcl9D b25zdGFudENhbkJlSW5pdGlhbGl6ZWRXaXRoTnVsbE9ubHkgKHJjLCBmaWVsZC5NZW1iZXJUeXBl LCBleHByLkxvY2F0aW9uLCBHZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CisgCQkJCQllbHNlIGlm ICghKGV4cHIgaXMgQ29uc3RhbnQpKQorIAkJCQkJCUVycm9yX0V4cHJlc3Npb25NdXN0QmVDb25z dGFudCAocmMsIGV4cHIuTG9jYXRpb24sIEdldFNpZ25hdHVyZUZvckVycm9yICgpKTsKK2RpZmYg LS1naXQgYS9tY3MvbWNzL2NvbnZlcnQuY3MgYi9tY3MvbWNzL2NvbnZlcnQuY3MKK2luZGV4IGIx MTQ3N2MxMDQzLi5hZTE1M2ZjNDllOCAxMDA2NDQKKy0tLSBhL21jcy9tY3MvY29udmVydC5jcwor KysrIGIvbWNzL21jcy9jb252ZXJ0LmNzCitAQCAtMzkyLDYgKzM5Miw5IEBAIG5hbWVzcGFjZSBN b25vLkNTaGFycCB7CisgCQkJCWlmICghVHlwZVNwZWMuSXNWYWx1ZVR5cGUgKGV4cHJfdHlwZSkp CisgCQkJCQlyZXR1cm4gbnVsbDsKKyAKKysJCQkJaWYgKGV4cHJfdHlwZS5Jc0J5UmVmTGlrZSkK KysJCQkJCXJldHVybiBudWxsOworKworIAkJCQlyZXR1cm4gZXhwciA9PSBudWxsID8gRW1wdHlF eHByZXNzaW9uLk51bGwgOiBuZXcgQm94ZWRDYXN0IChleHByLCB0YXJnZXRfdHlwZSk7CisgCisg CQkJY2FzZSBCdWlsdGluVHlwZVNwZWMuVHlwZS5FbnVtOgorQEAgLTgxNiw3ICs4MTksNyBAQCBu YW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCWlmIChleHByX3R5cGUgPT0gdGFyZ2V0X3R5cGUp CisgCQkJCXJldHVybiB0cnVlOworIAorLQkJCWlmIChleHByX3R5cGUgPT0gSW50ZXJuYWxUeXBl LlRocm93RXhwcikKKysJCQlpZiAoZXhwcl90eXBlID09IEludGVybmFsVHlwZS5UaHJvd0V4cHIg fHwgZXhwcl90eXBlID09IEludGVybmFsVHlwZS5EZWZhdWx0VHlwZSkKKyAJCQkJcmV0dXJuIHRh cmdldF90eXBlLktpbmQgIT0gTWVtYmVyS2luZC5JbnRlcm5hbENvbXBpbGVyVHlwZTsKKyAKKyAJ CQlpZiAodGFyZ2V0X3R5cGUuSXNOdWxsYWJsZVR5cGUpCitAQCAtMTQ3OCw2ICsxNDgxLDEwIEBA IG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCXJldHVybiB0YXJnZXRfdHlwZS5LaW5kID09 IE1lbWJlcktpbmQuSW50ZXJuYWxDb21waWxlclR5cGUgPyBudWxsIDogRW1wdHlDYXN0LkNyZWF0 ZSAoZXhwciwgdGFyZ2V0X3R5cGUpOworIAkJCX0KKyAKKysJCQlpZiAoZXhwcl90eXBlID09IElu dGVybmFsVHlwZS5EZWZhdWx0VHlwZSkgeworKwkJCQlyZXR1cm4gbmV3IERlZmF1bHRWYWx1ZUV4 cHJlc3Npb24gKG5ldyBUeXBlRXhwcmVzc2lvbiAodGFyZ2V0X3R5cGUsIGV4cHIuTG9jYXRpb24p LCBleHByLkxvY2F0aW9uKS5SZXNvbHZlIChlYyk7CisrCQkJfQorKworIAkJCWlmICh0YXJnZXRf dHlwZS5Jc051bGxhYmxlVHlwZSkKKyAJCQkJcmV0dXJuIEltcGxpY2l0TnVsYWJsZUNvbnZlcnNp b24gKGVjLCBleHByLCB0YXJnZXRfdHlwZSk7CisgCitAQCAtMTk2Nyw3ICsxOTc0LDcgQEAgbmFt ZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQkvLyBGcm9tIG9iamVjdCBvciBkeW5hbWljIHRvIGFu eSByZWZlcmVuY2UgdHlwZSBvciB2YWx1ZSB0eXBlICh1bmJveGluZykKKyAJCQkvLworIAkJCWlm IChzb3VyY2VfdHlwZS5CdWlsdGluVHlwZSA9PSBCdWlsdGluVHlwZVNwZWMuVHlwZS5PYmplY3Qg fHwgc291cmNlX3R5cGUuQnVpbHRpblR5cGUgPT0gQnVpbHRpblR5cGVTcGVjLlR5cGUuRHluYW1p YykgeworLQkJCQlpZiAodGFyZ2V0X3R5cGUuSXNQb2ludGVyKQorKwkJCQlpZiAodGFyZ2V0X3R5 cGUuSXNQb2ludGVyIHx8IHRhcmdldF90eXBlLklzQnlSZWZMaWtlKQorIAkJCQkJcmV0dXJuIG51 bGw7CisgCisgCQkJCXJldHVybgorZGlmZiAtLWdpdCBhL21jcy9tY3MvY3MtcGFyc2VyLmpheSBi L21jcy9tY3MvY3MtcGFyc2VyLmpheQoraW5kZXggMjg2OGQyZmQ4ZjYuLjRkNmZjYjQ0YzBkIDEw MDY0NAorLS0tIGEvbWNzL21jcy9jcy1wYXJzZXIuamF5CisrKysgYi9tY3MvbWNzL2NzLXBhcnNl ci5qYXkKK0BAIC0xNjksNyArMTY5LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgJXRva2Vu IENPTlNUCQorICV0b2tlbiBDT05USU5VRQkKKyAldG9rZW4gREVDSU1BTAkKKy0ldG9rZW4gREVG QVVMVAkKKysldG9rZW4gREVGQVVMVAorKyV0b2tlbiBERUZBVUxUX1ZBTFVFCisgJXRva2VuIERF TEVHQVRFCQorICV0b2tlbiBETwkKKyAldG9rZW4gRE9VQkxFCQorQEAgLTMzNiw2ICszMzcsNyBA QCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAldG9rZW4gREVGQVVMVF9DT0xPTgorICV0b2tlbiBP UEVOX0JSQUNLRVRfRVhQUgorICV0b2tlbiBPUEVOX1BBUkVOU19ERUNPTlNUUlVDVAorKyV0b2tl biBSRUZfU1RSVUNUCisgCisgLy8gTWFrZSB0aGUgcGFyc2VyIGdvIGludG8gZXZhbCBtb2RlIHBh cnNpbmcgKHN0YXRlbWVudHMgYW5kIGNvbXBpbGF0aW9uIHVuaXRzKS4KKyAldG9rZW4gRVZBTF9T VEFURU1FTlRfUEFSU0VSCitAQCAtODYzLDcgKzg2NSw3IEBAIGF0dHJpYnV0ZV9hcmd1bWVudHMK KyAJCX0KKyAJCQorIAkJQXJndW1lbnRzIGFyZ3MgPSAoKEFyZ3VtZW50cykgbyBbMF0pOworLQkJ aWYgKGFyZ3MuQ291bnQgPiAwICYmICEoJDMgaXMgTmFtZWRBcmd1bWVudCkgJiYgYXJncyBbYXJn cy5Db3VudCAtIDFdIGlzIE5hbWVkQXJndW1lbnQpCisrCQlpZiAobGFuZ192ZXJzaW9uIDwgTGFu Z3VhZ2VWZXJzaW9uLlZfN18yICYmIGFyZ3MuQ291bnQgPiAwICYmICEoJDMgaXMgTmFtZWRBcmd1 bWVudCkgJiYgYXJncyBbYXJncy5Db3VudCAtIDFdIGlzIE5hbWVkQXJndW1lbnQpCisgCQkJRXJy b3JfTmFtZWRBcmd1bWVudEV4cGVjdGVkICgoTmFtZWRBcmd1bWVudCkgYXJncyBbYXJncy5Db3Vu dCAtIDFdKTsKKyAJCQorIAkJYXJncy5BZGQgKChBcmd1bWVudCkgJDMpOworQEAgLTEwMTUsMTcg KzEwMTcsMzQgQEAgcHJpbWFyeV9jb25zdHJ1Y3Rvcl9ib2R5CisgCSAgfQorIAk7CisgCisrc3Ry dWN0X2tleXdvcmQKKysJOiBTVFJVQ1QKKysJICB7CisrCQkkJCA9IG51bGw7CisrCSAgfQorKwl8 IFJFRl9TVFJVQ1QKKysJICB7CisrCQlpZiAobGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9u LlZfN18yKSB7CisrCQkJRmVhdHVyZUlzTm90QXZhaWxhYmxlIChHZXRMb2NhdGlvbiAoJDEpLCAi cmVmIHN0cnVjdHMiKTsKKysJCX0KKysKKysJCSQkID0gdGhpczsKKysJICB9CisrCTsKKysKKyBz dHJ1Y3RfZGVjbGFyYXRpb24KKyAJOiBvcHRfYXR0cmlidXRlcworIAkgIG9wdF9tb2RpZmllcnMK KyAJICBvcHRfcGFydGlhbAorLQkgIFNUUlVDVAorKwkgIHN0cnVjdF9rZXl3b3JkCisgCSAgdHlw ZV9kZWNsYXJhdGlvbl9uYW1lCisgCSAgeworIAkJdmFyIG1vZHMgPSAoTW9kaWZpZXJzKSAkMjsK KyAJCWlmICgobW9kcyAmIE1vZGlmaWVycy5SRUFET05MWSkgIT0gMCAmJiBsYW5nX3ZlcnNpb24g PCBMYW5ndWFnZVZlcnNpb24uVl83XzIpIHsKKyAJCQlGZWF0dXJlSXNOb3RBdmFpbGFibGUgKEdl dExvY2F0aW9uICgkNCksICJyZWFkb25seSBzdHJ1Y3RzIik7CisgCQl9CisrCQlpZiAoJDQgIT0g bnVsbCkKKysJCQltb2RzIHw9IE1vZGlmaWVycy5SRUY7CisgCisgCQlsZXhlci5Db25zdHJhaW50 c1BhcnNpbmcgPSB0cnVlOworIAkJdmFsaWRfcGFyYW1fbW9kID0gUGFyYW1ldGVyTW9kaWZpZXJU eXBlLlByaW1hcnlDb25zdHJ1Y3RvcjsKK0BAIC0xMDcxLDcgKzEwOTAsNyBAQCBzdHJ1Y3RfZGVj bGFyYXRpb24KKyAJCX0KKyAJCSQkID0gcG9wX2N1cnJlbnRfY2xhc3MgKCk7CisgCSAgfQorLQl8 IG9wdF9hdHRyaWJ1dGVzIG9wdF9tb2RpZmllcnMgb3B0X3BhcnRpYWwgU1RSVUNUIGVycm9yCisr CXwgb3B0X2F0dHJpYnV0ZXMgb3B0X21vZGlmaWVycyBvcHRfcGFydGlhbCBzdHJ1Y3Rfa2V5d29y ZCBlcnJvcgorIAkgIHsKKyAJCUVycm9yX1N5bnRheEVycm9yICh5eVRva2VuKTsKKyAJICB9CitA QCAtMTM4NCw2ICsxNDAzLDE4IEBAIHJlZl9tZW1iZXJfdHlwZQorIAorIAkJJCQgPSBuZXcgUmVm ZXJlbmNlVHlwZUV4cHIgKChGdWxsTmFtZWRFeHByZXNzaW9uKSAkMywgR2V0TG9jYXRpb24gKCQx KSk7CisgCSAgfQorKwl8IFJFRiBSRUFET05MWQorKwkgIHsKKysJCWxleGVyLnBhcnNpbmdfZ2Vu ZXJpY19kZWNsYXJhdGlvbiA9IHRydWU7CisrCSAgfQorKwkgIHR5cGUKKysJICB7CisrCQlpZiAo bGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZfN18yKSB7CisrCQkJRmVhdHVyZUlzTm90 QXZhaWxhYmxlIChHZXRMb2NhdGlvbiAoJDIpLCAicmVhZG9ubHkgcmVmZXJlbmNlcyIpOworKwkJ fQorKworKwkJJCQgPSBuZXcgUmVmZXJlbmNlVHlwZUV4cHIgKChGdWxsTmFtZWRFeHByZXNzaW9u KSAkNCwgdHJ1ZSwgR2V0TG9jYXRpb24gKCQxKSk7CisrCSAgfQorIAk7CisgCisgbWV0aG9kX2hl YWRlcgorQEAgLTM0NDgsNiArMzQ3OSw3IEBAIHByaW1hcnlfZXhwcmVzc2lvbgorIAl8IGFub255 bW91c19tZXRob2RfZXhwcmVzc2lvbgorIAl8IHVuZG9jdW1lbnRlZF9leHByZXNzaW9ucworIAl8 IGludGVycG9sYXRlZF9zdHJpbmcKKysJfCBkZWZhdWx0X2xpdGVyYWwKKyAJOworIAorIHR5cGVf bmFtZV9leHByZXNzaW9uCitAQCAtMzgyNCw3ICszODU2LDcgQEAgYXJndW1lbnRfbGlzdAorIAl8 IGFyZ3VtZW50X2xpc3QgQ09NTUEgYXJndW1lbnQKKyAJICB7CisgCQlBcmd1bWVudHMgbGlzdCA9 IChBcmd1bWVudHMpICQxOworLQkJaWYgKGxpc3QgW2xpc3QuQ291bnQgLSAxXSBpcyBOYW1lZEFy Z3VtZW50KQorKwkJaWYgKGxhbmdfdmVyc2lvbiA8IExhbmd1YWdlVmVyc2lvbi5WXzdfMiAmJiBs aXN0IFtsaXN0LkNvdW50IC0gMV0gaXMgTmFtZWRBcmd1bWVudCkKKyAJCQlFcnJvcl9OYW1lZEFy Z3VtZW50RXhwZWN0ZWQgKChOYW1lZEFyZ3VtZW50KSBsaXN0IFtsaXN0LkNvdW50IC0gMV0pOwor IAkJCisgCQlsaXN0LkFkZCAoKEFyZ3VtZW50KSAkMyk7CitAQCAtMzk2OSw3ICs0MDAxLDcgQEAg ZXhwcmVzc2lvbl9saXN0X2FyZ3VtZW50cworIAl8IGV4cHJlc3Npb25fbGlzdF9hcmd1bWVudHMg Q09NTUEgZXhwcmVzc2lvbl9saXN0X2FyZ3VtZW50CisgCSAgeworIAkJQXJndW1lbnRzIGFyZ3Mg PSAoQXJndW1lbnRzKSAkMTsKKy0JCWlmIChhcmdzIFthcmdzLkNvdW50IC0gMV0gaXMgTmFtZWRB cmd1bWVudCAmJiAhKCQzIGlzIE5hbWVkQXJndW1lbnQpKQorKwkJaWYgKGxhbmdfdmVyc2lvbiA8 IExhbmd1YWdlVmVyc2lvbi5WXzdfMiAmJiBhcmdzIFthcmdzLkNvdW50IC0gMV0gaXMgTmFtZWRB cmd1bWVudCAmJiAhKCQzIGlzIE5hbWVkQXJndW1lbnQpKQorIAkJCUVycm9yX05hbWVkQXJndW1l bnRFeHBlY3RlZCAoKE5hbWVkQXJndW1lbnQpIGFyZ3MgW2FyZ3MuQ291bnQgLSAxXSk7CisgCSAg CisgCQlhcmdzLkFkZCAoKEFyZ3VtZW50KSAkMyk7CitAQCAtNDM4Niw3ICs0NDE4LDcgQEAgYW5v bnltb3VzX21ldGhvZF9zaWduYXR1cmUKKyAJOworIAorIGRlZmF1bHRfdmFsdWVfZXhwcmVzc2lv bgorLQk6IERFRkFVTFQgb3Blbl9wYXJlbnNfYW55IHR5cGUgQ0xPU0VfUEFSRU5TCisrCTogREVG QVVMVF9WQUxVRSBvcGVuX3BhcmVuc19hbnkgdHlwZSBDTE9TRV9QQVJFTlMKKyAJICB7CisgCQlp ZiAobGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLklTT18yKQorIAkJCUZlYXR1cmVJc05v dEF2YWlsYWJsZSAoR2V0TG9jYXRpb24gKCQxKSwgImRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiIp OworQEAgLTQzOTYsNiArNDQyOCwxNiBAQCBkZWZhdWx0X3ZhbHVlX2V4cHJlc3Npb24KKyAJICB9 CisgCTsKKyAKKytkZWZhdWx0X2xpdGVyYWwKKysJOiBERUZBVUxUCisrCSAgeworKwkJaWYgKGxh bmdfdmVyc2lvbiA8IExhbmd1YWdlVmVyc2lvbi5WXzdfMSkKKysJCQlGZWF0dXJlSXNOb3RBdmFp bGFibGUgKEdldExvY2F0aW9uICgkMSksICJkZWZhdWx0IGxpdGVyYWwiKTsKKysKKysJCSQkID0g bmV3IERlZmF1bHRMaXRlcmFsRXhwcmVzc2lvbiAoR2V0TG9jYXRpb24gKCQxKSk7CisrCSAgfQor Kwk7CisrCisgdW5hcnlfZXhwcmVzc2lvbgorIAk6IHByaW1hcnlfZXhwcmVzc2lvbgorIAl8IEJB TkcgcHJlZml4ZWRfdW5hcnlfZXhwcmVzc2lvbgorQEAgLTQ3NTAsNyArNDc5Miw3IEBAIHBhdHRl cm5fbGlzdAorIAl8IHBhdHRlcm5fbGlzdCBDT01NQSBwYXR0ZXJuX2FyZ3VtZW50CisgCSAgewor IAkJQXJndW1lbnRzIGFyZ3MgPSAoQXJndW1lbnRzKSAkMTsKKy0JCWlmIChhcmdzIFthcmdzLkNv dW50IC0gMV0gaXMgTmFtZWRBcmd1bWVudCAmJiAhKCQzIGlzIE5hbWVkQXJndW1lbnQpKQorKwkJ aWYgKGxhbmdfdmVyc2lvbiA8IExhbmd1YWdlVmVyc2lvbi5WXzdfMiAmJiBhcmdzIFthcmdzLkNv dW50IC0gMV0gaXMgTmFtZWRBcmd1bWVudCAmJiAhKCQzIGlzIE5hbWVkQXJndW1lbnQpKQorIAkJ CUVycm9yX05hbWVkQXJndW1lbnRFeHBlY3RlZCAoKE5hbWVkQXJndW1lbnQpIGFyZ3MgW2FyZ3Mu Q291bnQgLSAxXSk7CisgCisgCQlhcmdzLkFkZCAoKEFyZ3VtZW50KSAkMyk7CitAQCAtNTA2Nywx NyArNTEwOSwyNSBAQCBhc3NpZ25tZW50X2V4cHJlc3Npb24KKyAJCSQkID0gbmV3IENvbXBvdW5k QXNzaWduIChCaW5hcnkuT3BlcmF0b3IuRXhjbHVzaXZlT3IsIChFeHByZXNzaW9uKSAkMSwgKEV4 cHJlc3Npb24pICQzKTsKKyAJCWxiYWcuQWRkTG9jYXRpb24gKCQkLCBHZXRMb2NhdGlvbiAoJDIp KTsKKyAJICB9CistCXwgT1BFTl9QQVJFTlNfREVDT05TVFJVQ1QgZGVjb25zdHJ1Y3RfZXhwcnMg Q0xPU0VfUEFSRU5TIEFTU0lHTiBleHByZXNzaW9uCisrCXwgT1BFTl9QQVJFTlNfREVDT05TVFJV Q1QgZGVjb25zdHJ1Y3RfYXNzaWdubWVudCBDTE9TRV9QQVJFTlMgQVNTSUdOIGV4cHJlc3Npb24K KyAJICB7CisgCQlpZiAobGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZfNykKKyAJCQlG ZWF0dXJlSXNOb3RBdmFpbGFibGUgKEdldExvY2F0aW9uICgkMSksICJ0dXBsZXMiKTsKKyAKKy0J ICAJdmFyIGV4cHJzID0gKExpc3Q8RXhwcmVzc2lvbj4pICQyOworKwkJdmFyIGV4cHJzID0gKExp c3Q8RXhwcmVzc2lvbj4pICQyOworKwkJJCQgPSBuZXcgVHVwbGVEZWNvbnN0cnVjdCAoZXhwcnMs IChFeHByZXNzaW9uKSAkNSwgR2V0TG9jYXRpb24gKCQ0KSk7CisrCSAgfQorKwl8IE9QRU5fUEFS RU5TX0RFQ09OU1RSVUNUIGRlY29uc3RydWN0X2RlY2xhcmF0aW9uIENMT1NFX1BBUkVOUyBBU1NJ R04gZXhwcmVzc2lvbgorKwkgIHsKKysJCWlmIChsYW5nX3ZlcnNpb24gPCBMYW5ndWFnZVZlcnNp b24uVl83KQorKwkJCUZlYXR1cmVJc05vdEF2YWlsYWJsZSAoR2V0TG9jYXRpb24gKCQxKSwgInR1 cGxlcyIpOworKworKwkJdmFyIGV4cHJzID0gKExpc3Q8QmxvY2tWYXJpYWJsZT4pICQyOworIAkJ JCQgPSBuZXcgVHVwbGVEZWNvbnN0cnVjdCAoZXhwcnMsIChFeHByZXNzaW9uKSAkNSwgR2V0TG9j YXRpb24gKCQ0KSk7CisgCSAgfQorIAk7CisgCistZGVjb25zdHJ1Y3RfZXhwcnMKKytkZWNvbnN0 cnVjdF9hc3NpZ25tZW50CisgCTogZXhwcmVzc2lvbiBDT01NQSBleHByZXNzaW9uCisgCSAgewor IAkJJCQgPSBuZXcgTGlzdDxFeHByZXNzaW9uPiAoKSB7CitAQCAtNTA4NSw3ICs1MTM1LDcgQEAg ZGVjb25zdHJ1Y3RfZXhwcnMKKyAJCQkoRXhwcmVzc2lvbikgJDMKKyAJICAJfTsKKyAJICB9Cist CXwgZGVjb25zdHJ1Y3RfZXhwcnMgQ09NTUEgZXhwcmVzc2lvbgorKwl8IGRlY29uc3RydWN0X2Fz c2lnbm1lbnQgQ09NTUEgZXhwcmVzc2lvbgorIAkgIHsKKyAJCXZhciBzcmMgPSAoTGlzdDxFeHBy ZXNzaW9uPikgJDE7CisgCQlzcmMuQWRkICgoRXhwcmVzc2lvbikgJDMpOworQEAgLTUwOTMsNiAr NTE0Myw0MyBAQCBkZWNvbnN0cnVjdF9leHBycworIAkgIH0KKyAJOworIAorK2RlY29uc3RydWN0 X2RlY2xhcmF0aW9uCisrCTogdmFyaWFibGVfdHlwZSBpZGVudGlmaWVyX2luc2lkZV9ib2R5Cisr CSAgeworKwkJdmFyIGx0ID0gKExvY2F0ZWRUb2tlbikgJDI7CisrCQl2YXIgbGkgPSBuZXcgTG9j YWxWYXJpYWJsZSAoY3VycmVudF9ibG9jaywgbHQuVmFsdWUsIGx0LkxvY2F0aW9uKTsKKysJCWN1 cnJlbnRfYmxvY2suQWRkTG9jYWxOYW1lIChsaSk7CisrCQkkJCA9IG5ldyBMaXN0PEJsb2NrVmFy aWFibGU+ICgyKSB7CisrCQkJbmV3IEJsb2NrVmFyaWFibGUgKChGdWxsTmFtZWRFeHByZXNzaW9u KSAkMSwgbGkpCisrCQl9OworKwkgIH0KKysJfCBkZWNvbnN0cnVjdF9kZWNsYXJhdGlvbiBDT01N QSB2YXJpYWJsZV90eXBlIGlkZW50aWZpZXJfaW5zaWRlX2JvZHkKKysJICB7CisrCQl2YXIgbHQg PSAoTG9jYXRlZFRva2VuKSAkNDsKKysJCXZhciBsaSA9IG5ldyBMb2NhbFZhcmlhYmxlIChjdXJy ZW50X2Jsb2NrLCBsdC5WYWx1ZSwgbHQuTG9jYXRpb24pOworKwkJY3VycmVudF9ibG9jay5BZGRM b2NhbE5hbWUgKGxpKTsKKysKKysJCXZhciBzcmMgPSAoTGlzdDxCbG9ja1ZhcmlhYmxlPikgJDE7 CisrCQlzcmMuQWRkIChuZXcgQmxvY2tWYXJpYWJsZSAoKEZ1bGxOYW1lZEV4cHJlc3Npb24pICQz LCBsaSkpOworKwkJJCQgPSBzcmM7CisrCSAgfQorKwl8IGRlY29uc3RydWN0X2RlY2xhcmF0aW9u IENPTU1BIGlkZW50aWZpZXJfaW5zaWRlX2JvZHkKKysJICB7CisrCQl2YXIgbHQgPSAoTG9jYXRl ZFRva2VuKSAkMzsKKysJCXZhciBsaSA9IG5ldyBMb2NhbFZhcmlhYmxlIChjdXJyZW50X2Jsb2Nr LCBsdC5WYWx1ZSwgbHQuTG9jYXRpb24pOworKworKwkJaWYgKGx0LlZhbHVlICE9ICJfIikgewor KwkJCXJlcG9ydC5FcnJvciAoODE4NCwgbHQuTG9jYXRpb24sICJBIGRlY29uc3RydWN0aW9uIGNh bm5vdCBtaXggZGVjbGFyYXRpb25zIGFuZCBleHByZXNzaW9ucyBvbiB0aGUgbGVmdC1oYW5kLXNp ZGUiKTsKKysJCX0gZWxzZSB7CisrCQkJbGkuVHlwZSA9IEludGVybmFsVHlwZS5EaXNjYXJkOwor KwkJfQorKworKwkJdmFyIHNyYyA9IChMaXN0PEJsb2NrVmFyaWFibGU+KSAkMTsKKysJCXNyYy5B ZGQgKG5ldyBCbG9ja1ZhcmlhYmxlIChuZXcgVHlwZUV4cHJlc3Npb24gKGxpLlR5cGUsIGx0Lkxv Y2F0aW9uKSwgbGkpKTsKKysJCSQkID0gc3JjOworKwkgIH0KKysJOworKworIGxhbWJkYV9wYXJh bWV0ZXJfbGlzdAorIAk6IGxhbWJkYV9wYXJhbWV0ZXIKKyAJICB7CitAQCAtNjAwOCw2ICs2MDk1 LDI4IEBAIGJsb2NrX3ZhcmlhYmxlX2RlY2xhcmF0aW9uCisgCQkJbGJhZy5BZGRMb2NhdGlvbiAo JCQsIEdldExvY2F0aW9uICgkNykpOworIAkJfQorIAkgIH0KKysJfCBSRUYgUkVBRE9OTFkgdmFy aWFibGVfdHlwZSBpZGVudGlmaWVyX2luc2lkZV9ib2R5CisrCSAgeworKwkJaWYgKGxhbmdfdmVy c2lvbiA8IExhbmd1YWdlVmVyc2lvbi5WXzdfMikgeworKwkJCUZlYXR1cmVJc05vdEF2YWlsYWJs ZSAoR2V0TG9jYXRpb24gKCQyKSwgInJlYWRvbmx5IHJlZmVyZW5jZXMiKTsKKysJCX0KKysKKysJ CXZhciBsdCA9IChMb2NhdGVkVG9rZW4pICQ0OworKwkJdmFyIGxpID0gbmV3IExvY2FsVmFyaWFi bGUgKGN1cnJlbnRfYmxvY2ssIGx0LlZhbHVlLCBMb2NhbFZhcmlhYmxlLkZsYWdzLkJ5UmVmIHwg TG9jYWxWYXJpYWJsZS5GbGFncy5SZWFkb25seU1hc2ssIGx0LkxvY2F0aW9uKTsKKysJCWN1cnJl bnRfYmxvY2suQWRkTG9jYWxOYW1lIChsaSk7CisrCQljdXJyZW50X3ZhcmlhYmxlID0gbmV3IEJs b2NrVmFyaWFibGUgKChGdWxsTmFtZWRFeHByZXNzaW9uKSAkMywgbGkpOworKwkgIH0KKysJICBv cHRfbG9jYWxfdmFyaWFibGVfaW5pdGlhbGl6ZXIgb3B0X3ZhcmlhYmxlX2RlY2xhcmF0b3JzIFNF TUlDT0xPTgorKwkgIHsKKysJCSQkID0gY3VycmVudF92YXJpYWJsZTsKKysJCWN1cnJlbnRfdmFy aWFibGUgPSBudWxsOworKwkJaWYgKCQ2ICE9IG51bGwpIHsKKysJCQlsYmFnLkFkZExvY2F0aW9u ICgkJCwgUG9wTG9jYXRpb24gKCksIEdldExvY2F0aW9uICgkOCkpOworKwkJfSBlbHNlIHsKKysJ CQlyZXBvcnQuRXJyb3IgKDgxNzQsIEdldExvY2F0aW9uICgkMyksICJBIGRlY2xhcmF0aW9uIG9m IGEgYnktcmVmZXJlbmNlIHZhcmlhYmxlIG11c3QgaGF2ZSBhbiBpbml0aWFsaXplciIpOworKwkJ CWxiYWcuQWRkTG9jYXRpb24gKCQkLCBHZXRMb2NhdGlvbiAoJDgpKTsKKysJCX0KKysJICB9Cisg CTsKKyAKKyBvcHRfbG9jYWxfdmFyaWFibGVfaW5pdGlhbGl6ZXIKK0BAIC03NzMxLDcgKzc4NDAs NyBAQCB2b2lkIFdhcm5pbmdfRW1wdHlTdGF0ZW1lbnQgKExvY2F0aW9uIGxvYykKKyAKKyB2b2lk IEVycm9yX05hbWVkQXJndW1lbnRFeHBlY3RlZCAoTmFtZWRBcmd1bWVudCBhKQorIHsKKy0JcmVw b3J0LkVycm9yICgxNzM4LCBhLkxvY2F0aW9uLCAiTmFtZWQgYXJndW1lbnRzIG11c3QgYXBwZWFy IGFmdGVyIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyIpOworKwlyZXBvcnQuRXJyb3IgKDE3Mzgs IGEuTG9jYXRpb24sICJOYW1lZCBhcmd1bWVudHMgbXVzdCBhcHBlYXIgYWZ0ZXIgdGhlIHBvc2l0 aW9uYWwgYXJndW1lbnRzIHdoZW4gdXNpbmcgbGFuZ3VhZ2UgdmVyc2lvbiBvbGRlciB0aGFuIDcu MiIpOworIH0KKyAKKyB2b2lkIEVycm9yX01pc3NpbmdJbml0aWFsaXplciAoTG9jYXRpb24gbG9j KQorQEAgLTgyNTUsNiArODM2NCw3IEBAIHN0YXRpYyBzdHJpbmcgR2V0VG9rZW5OYW1lIChpbnQg dG9rZW4pCisgCWNhc2UgVG9rZW4uQ09OVElOVUU6CisgCQlyZXR1cm4gImNvbnRpbnVlIjsKKyAJ Y2FzZSBUb2tlbi5ERUZBVUxUOgorKwljYXNlIFRva2VuLkRFRkFVTFRfVkFMVUU6CisgCQlyZXR1 cm4gImRlZmF1bHQiOworIAljYXNlIFRva2VuLkRFTEVHQVRFOgorIAkJcmV0dXJuICJkZWxlZ2F0 ZSI7CitAQCAtODMzNCw2ICs4NDQ0LDcgQEAgc3RhdGljIHN0cmluZyBHZXRUb2tlbk5hbWUgKGlu dCB0b2tlbikKKyAJY2FzZSBUb2tlbi5TVEFUSUM6CisgCQlyZXR1cm4gInN0YXRpYyI7CisgCWNh c2UgVG9rZW4uU1RSVUNUOgorKwljYXNlIFRva2VuLlJFRl9TVFJVQ1Q6CisgCQlyZXR1cm4gInN0 cnVjdCI7CisgCWNhc2UgVG9rZW4uU1dJVENIOgorIAkJcmV0dXJuICJzd2l0Y2giOworZGlmZiAt LWdpdCBhL21jcy9tY3MvY3MtdG9rZW5pemVyLmNzIGIvbWNzL21jcy9jcy10b2tlbml6ZXIuY3MK K2luZGV4IGQ2ZDAwZDMxNDAwLi4zN2VkYjVjMTIyNCAxMDA2NDQKKy0tLSBhL21jcy9tY3MvY3Mt dG9rZW5pemVyLmNzCisrKysgYi9tY3MvbWNzL2NzLXRva2VuaXplci5jcworQEAgLTcxNiw5ICs3 MTYsMTggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJCQlyZXMgPSBUb2tlbi5FWFRFUk5f QUxJQVM7CisgCQkJCWJyZWFrOworIAkJCWNhc2UgVG9rZW4uREVGQVVMVDoKKy0JCQkJaWYgKHBl ZWtfdG9rZW4gKCkgPT0gVG9rZW4uQ09MT04pIHsKKy0JCQkJCXRva2VuICgpOworLQkJCQkJcmVz ID0gVG9rZW4uREVGQVVMVF9DT0xPTjsKKysJCQkJc3dpdGNoIChwZWVrX3Rva2VuICgpKSB7Cisr CQkJCWNhc2UgVG9rZW4uQ09MT046CisrCQkJCQkvLyBTcGVjaWFsIGNhc2U6IGZvbyA9PSBudWxs ID8gZGVmYXVsdCA6IDE7CisrCQkJCQlpZiAoY3VycmVudF90b2tlbiAhPSBUb2tlbi5JTlRFUlIp IHsKKysJCQkJCQl0b2tlbiAoKTsKKysJCQkJCQlyZXMgPSBUb2tlbi5ERUZBVUxUX0NPTE9OOwor KwkJCQkJfQorKwkJCQkJYnJlYWs7CisrCQkJCWNhc2UgVG9rZW4uT1BFTl9QQVJFTlM6CisrCQkJ CWNhc2UgVG9rZW4uT1BFTl9QQVJFTlNfQ0FTVDoKKysJCQkJCXJlcyA9IFRva2VuLkRFRkFVTFRf VkFMVUU7CisrCQkJCQlicmVhazsKKyAJCQkJfQorIAkJCQlicmVhazsKKyAJCQljYXNlIFRva2Vu LldIRU46CitAQCAtODEyLDEwICs4MjEsMTIgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJ CVB1c2hQb3NpdGlvbiAoKTsKKyAKKyAJCQkJbmV4dF90b2tlbiA9IHRva2VuICgpOworLQkJCQli b29sIG9rID0gKG5leHRfdG9rZW4gPT0gVG9rZW4uQ0xBU1MpIHx8CistCQkJCQkobmV4dF90b2tl biA9PSBUb2tlbi5TVFJVQ1QpIHx8CistCQkJCQkobmV4dF90b2tlbiA9PSBUb2tlbi5JTlRFUkZB Q0UpIHx8CistCQkJCQkobmV4dF90b2tlbiA9PSBUb2tlbi5WT0lEKTsKKysJCQkJYm9vbCBvayA9 CisrCQkJCQluZXh0X3Rva2VuID09IFRva2VuLkNMQVNTIHx8CisrCQkJCQluZXh0X3Rva2VuID09 IFRva2VuLlNUUlVDVCB8fAorKwkJCQkJbmV4dF90b2tlbiA9PSBUb2tlbi5JTlRFUkZBQ0UgfHwK KysJCQkJCW5leHRfdG9rZW4gPT0gVG9rZW4uVk9JRCB8fAorKwkJCQkJbmV4dF90b2tlbiA9PSBU b2tlbi5SRUZfU1RSVUNUOworIAorIAkJCQlQb3BQb3NpdGlvbiAoKTsKKyAKK0BAIC05MDMsNiAr OTE0LDEyIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCQkJYnJlYWs7CisgCQkJCX0KKyAK KysJCQkJYnJlYWs7CisrCQkJY2FzZSBUb2tlbi5SRUY6CisrCQkJCWlmIChwZWVrX3Rva2VuICgp ID09IFRva2VuLlNUUlVDVCkgeworKwkJCQkJdG9rZW4gKCk7CisrCQkJCQlyZXMgPSBUb2tlbi5S RUZfU1RSVUNUOworKwkJCQl9CisgCQkJCWJyZWFrOworIAkJCX0KKyAKK0BAIC0xMDk0LDYgKzEx MTEsNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJCQljYXNlIFRva2VuLlVOQ0hFQ0tF RDoKKyAJCQkJCQljYXNlIFRva2VuLlVOU0FGRToKKyAJCQkJCQljYXNlIFRva2VuLkRFRkFVTFQ6 CisrCQkJCQkJY2FzZSBUb2tlbi5ERUZBVUxUX1ZBTFVFOgorIAkJCQkJCWNhc2UgVG9rZW4uQVdB SVQ6CisgCisgCQkJCQkJLy8KK0BAIC0xMjczLDE0ICsxMjkxLDIxIEBAIG5hbWVzcGFjZSBNb25v LkNTaGFycAorIAorIAkJCQlyZXR1cm4gZmFsc2U7CisgCQkJY2FzZSBUb2tlbi5PUEVOX1BBUkVO UzoKKy0JCQkJaWYgKCFwYXJzaW5nX2dlbmVyaWNfZGVjbGFyYXRpb24pCistCQkJCQlyZXR1cm4g ZmFsc2U7CistCQkJCQorKwkJCQlpbnQgcGFyZW5zX2NvdW50ID0gMTsKKyAJCQkJd2hpbGUgKHRy dWUpIHsKKyAJCQkJCXN3aXRjaCAodG9rZW4gKCkpIHsKKyAJCQkJCWNhc2UgVG9rZW4uQ09NTUE6 CisgCQkJCQkJLy8gdHVwbGUgZGVjbGFyYXRpb24gYWZ0ZXIgPAorLQkJCQkJCXJldHVybiB0cnVl OworKwkJCQkJCWlmIChwYXJlbnNfY291bnQgPT0gMSkKKysJCQkJCQkJcmV0dXJuIHRydWU7Cisr CQkJCQkJY29udGludWU7CisrCQkJCQljYXNlIFRva2VuLk9QRU5fUEFSRU5TOgorKwkJCQkJCSsr cGFyZW5zX2NvdW50OworKwkJCQkJCWNvbnRpbnVlOworKwkJCQkJY2FzZSBUb2tlbi5DTE9TRV9Q QVJFTlM6CisrCQkJCQkJaWYgKC0tcGFyZW5zX2NvdW50IDw9IDApCisrCQkJCQkJCXJldHVybiBm YWxzZTsKKysJCQkJCQljb250aW51ZTsKKyAJCQkJCWNhc2UgVG9rZW4uT1BfR0VORVJJQ1NfR1Q6 CisgCQkJCQljYXNlIFRva2VuLkVPRjoKKyAJCQkJCQlyZXR1cm4gZmFsc2U7CitAQCAtMTM4MCw2 ICsxNDA1LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJY2FzZSBUb2tlbi5ORVc6Cisg CQkJY2FzZSBUb2tlbi5JTlRFUlBPTEFURURfU1RSSU5HOgorIAkJCWNhc2UgVG9rZW4uVEhST1c6 CisrCQkJY2FzZSBUb2tlbi5ERUZBVUxUX0NPTE9OOgorIAkJCQluZXh0X3Rva2VuID0gVG9rZW4u SU5URVJSOworIAkJCQlicmVhazsKKyAJCQkJCitAQCAtMzUwMiw2ICszNTI4LDcgQEAgbmFtZXNw YWNlIE1vbm8uQ1NoYXJwCisgCQkJCQkJY2FzZSBUb2tlbi5TV0lUQ0g6CisgCQkJCQkJY2FzZSBU b2tlbi5VU0lORzoKKyAJCQkJCQljYXNlIFRva2VuLkRFRkFVTFQ6CisrCQkJCQkJY2FzZSBUb2tl bi5ERUZBVUxUX1ZBTFVFOgorIAkJCQkJCWNhc2UgVG9rZW4uREVMRUdBVEU6CisgCQkJCQkJY2Fz ZSBUb2tlbi5PUF9HRU5FUklDU19HVDoKKyAJCQkJCQljYXNlIFRva2VuLlJFRlZBTFVFOgorQEAg LTM5NjMsMjYgKzM5OTAsMjkgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQl7CisgCQkJaW50 IGQ7CisgCistCQkJLy8gU2F2ZSBjdXJyZW50IHBvc2l0aW9uIGFuZCBwYXJzZSBuZXh0IHRva2Vu LgorLQkJCVB1c2hQb3NpdGlvbiAoKTsKKy0JCQlpbnQgZ2VuZXJpY19kaW1lbnNpb24gPSAwOwor LQkJCWlmIChwYXJzZV9sZXNzX3RoYW4gKHJlZiBnZW5lcmljX2RpbWVuc2lvbikpIHsKKy0JCQkJ aWYgKHBhcnNpbmdfZ2VuZXJpY19kZWNsYXJhdGlvbiAmJiAocGFyc2luZ19nZW5lcmljX2RlY2xh cmF0aW9uX2RvYyB8fCB0b2tlbiAoKSAhPSBUb2tlbi5ET1QpKSB7CistCQkJCQlkID0gVG9rZW4u T1BfR0VORVJJQ1NfTFRfREVDTDsKKy0JCQkJfSBlbHNlIHsKKy0JCQkJCWlmIChnZW5lcmljX2Rp bWVuc2lvbiA+IDApIHsKKy0JCQkJCQl2YWwgPSBnZW5lcmljX2RpbWVuc2lvbjsKKy0JCQkJCQlE aXNjYXJkUG9zaXRpb24gKCk7CistCQkJCQkJcmV0dXJuIFRva2VuLkdFTkVSSUNfRElNRU5TSU9O OworLQkJCQkJfQorKwkJCWlmIChjdXJyZW50X3Rva2VuICE9IFRva2VuLk9QRVJBVE9SKSB7Cisr CQkJCS8vIFNhdmUgY3VycmVudCBwb3NpdGlvbiBhbmQgcGFyc2UgbmV4dCB0b2tlbi4KKysJCQkJ UHVzaFBvc2l0aW9uICgpOworKwkJCQlpbnQgZ2VuZXJpY19kaW1lbnNpb24gPSAwOworKwkJCQlp ZiAocGFyc2VfbGVzc190aGFuIChyZWYgZ2VuZXJpY19kaW1lbnNpb24pKSB7CisrCQkJCQlpZiAo cGFyc2luZ19nZW5lcmljX2RlY2xhcmF0aW9uICYmIChwYXJzaW5nX2dlbmVyaWNfZGVjbGFyYXRp b25fZG9jIHx8IHRva2VuICgpICE9IFRva2VuLkRPVCkpIHsKKysJCQkJCQlkID0gVG9rZW4uT1Bf R0VORVJJQ1NfTFRfREVDTDsKKysJCQkJCX0gZWxzZSB7CisrCQkJCQkJaWYgKGdlbmVyaWNfZGlt ZW5zaW9uID4gMCkgeworKwkJCQkJCQl2YWwgPSBnZW5lcmljX2RpbWVuc2lvbjsKKysJCQkJCQkJ RGlzY2FyZFBvc2l0aW9uICgpOworKwkJCQkJCQlyZXR1cm4gVG9rZW4uR0VORVJJQ19ESU1FTlNJ T047CisrCQkJCQkJfQorIAorLQkJCQkJZCA9IFRva2VuLk9QX0dFTkVSSUNTX0xUOworKwkJCQkJ CWQgPSBUb2tlbi5PUF9HRU5FUklDU19MVDsKKysJCQkJCX0KKysJCQkJCVBvcFBvc2l0aW9uICgp OworKwkJCQkJcmV0dXJuIGQ7CisgCQkJCX0KKysKKyAJCQkJUG9wUG9zaXRpb24gKCk7CistCQkJ CXJldHVybiBkOworIAkJCX0KKyAKKy0JCQlQb3BQb3NpdGlvbiAoKTsKKyAJCQlwYXJzaW5nX2dl bmVyaWNfbGVzc190aGFuID0gMDsKKyAKKyAJCQlkID0gcGVla19jaGFyICgpOworZGlmZiAtLWdp dCBhL21jcy9tY3MvZGVsZWdhdGUuY3MgYi9tY3MvbWNzL2RlbGVnYXRlLmNzCitpbmRleCA4MGVi N2UyNjVmMS4uNTJjZWU4ZjM0NTUgMTAwNjQ0CistLS0gYS9tY3MvbWNzL2RlbGVnYXRlLmNzCisr KysgYi9tY3MvbWNzL2RlbGVnYXRlLmNzCitAQCAtMTg4LDggKzE4OCw4IEBAIG5hbWVzcGFjZSBN b25vLkNTaGFycCB7CisgCisgCQkJQ2hlY2tQcm90ZWN0ZWRNb2RpZmllciAoKTsKKyAKKy0JCQlp ZiAoQ29tcGlsZXIuU2V0dGluZ3MuU3RkTGliICYmIHJldF90eXBlLklzU3BlY2lhbFJ1bnRpbWVU eXBlKSB7CistCQkJCU1ldGhvZC5FcnJvcjE1OTkgKExvY2F0aW9uLCByZXRfdHlwZSwgUmVwb3J0 KTsKKysJCQlpZiAocmV0X3R5cGUuSXNTcGVjaWFsUnVudGltZVR5cGUgJiYgQ29tcGlsZXIuU2V0 dGluZ3MuU3RkTGliKSB7CisrCQkJCU1ldGhvZC5FcnJvcl9SZXR1cm5UeXBlQ2FudEJlUmVmQW55 IChMb2NhdGlvbiwgcmV0X3R5cGUsIFJlcG9ydCk7CisgCQkJCXJldHVybiBmYWxzZTsKKyAJCQl9 CisgCitAQCAtMzM4LDYgKzMzOCw4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCQlN b2R1bGUuUHJlZGVmaW5lZEF0dHJpYnV0ZXMuRHluYW1pYy5FbWl0QXR0cmlidXRlIChDcmVhdGVS ZXR1cm5CdWlsZGVyICgpLkJ1aWxkZXIpOworIAkJCQl9IGVsc2UgaWYgKHJ0eXBlLkhhc0R5bmFt aWNFbGVtZW50KSB7CisgCQkJCQlNb2R1bGUuUHJlZGVmaW5lZEF0dHJpYnV0ZXMuRHluYW1pYy5F bWl0QXR0cmlidXRlIChDcmVhdGVSZXR1cm5CdWlsZGVyICgpLkJ1aWxkZXIsIHJ0eXBlLCBMb2Nh dGlvbik7CisrCQkJCX0gZWxzZSBpZiAocnR5cGUgaXMgUmVhZE9ubHlSZWZlcmVuY2VDb250YWlu ZXIpIHsKKysJCQkJCU1vZHVsZS5QcmVkZWZpbmVkQXR0cmlidXRlcy5Jc1JlYWRPbmx5LkVtaXRB dHRyaWJ1dGUgKENyZWF0ZVJldHVybkJ1aWxkZXIgKCkuQnVpbGRlcik7CisgCQkJCX0KKyAKKyAJ CQkJaWYgKHJ0eXBlLkhhc05hbWVkVHVwbGVFbGVtZW50KSB7CitAQCAtNjAzLDggKzYwNSwxNCBA QCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCX0KKyAKKyAJCQl2YXIgZXhwciA9IG1ldGhv ZF9ncm91cC5JbnN0YW5jZUV4cHJlc3Npb247CistCQkJaWYgKGV4cHIgIT0gbnVsbCAmJiAoZXhw ci5UeXBlLklzR2VuZXJpY1BhcmFtZXRlciB8fCAhVHlwZVNwZWMuSXNSZWZlcmVuY2VUeXBlIChl eHByLlR5cGUpKSkKKysJCQlpZiAoZXhwciAhPSBudWxsICYmIChleHByLlR5cGUuSXNHZW5lcmlj UGFyYW1ldGVyIHx8ICFUeXBlU3BlYy5Jc1JlZmVyZW5jZVR5cGUgKGV4cHIuVHlwZSkpKSB7Cisr CQkJCWlmIChleHByLlR5cGUuSXNCeVJlZkxpa2UgfHwgZXhwci5UeXBlLklzU3BlY2lhbFJ1bnRp bWVUeXBlKSB7CisrCQkJCQkvLyBDU0M6IFNob3VsZCBiZSBiZXR0ZXIgZXJyb3IgY29kZQorKwkJ CQkJRXJyb3JfQ29udmVyc2lvbkZhaWxlZCAoZWMsIGRlbGVnYXRlX21ldGhvZCwgbnVsbCk7Cisr CQkJCX0KKysKKyAJCQkJbWV0aG9kX2dyb3VwLkluc3RhbmNlRXhwcmVzc2lvbiA9IG5ldyBCb3hl ZENhc3QgKGV4cHIsIGVjLkJ1aWx0aW5UeXBlcy5PYmplY3QpOworKwkJCX0KKyAKKyAJCQllY2xh c3MgPSBFeHByQ2xhc3MuVmFsdWU7CisgCQkJcmV0dXJuIHRoaXM7CitkaWZmIC0tZ2l0IGEvbWNz L21jcy9keW5hbWljLmNzIGIvbWNzL21jcy9keW5hbWljLmNzCitpbmRleCBmZDQ2NjJiMmZlZC4u ZjgzMTRiMmYzY2QgMTAwNjQ0CistLS0gYS9tY3MvbWNzL2R5bmFtaWMuY3MKKysrKyBiL21jcy9t Y3MvZHluYW1pYy5jcworQEAgLTI3OSwxMSArMjc5LDE5IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFy cAorIAorIAkJcHJvdGVjdGVkIGJvb2wgRG9SZXNvbHZlQ29yZSAoUmVzb2x2ZUNvbnRleHQgcmMp CisgCQl7CisrCQkJaW50IGkgPSAwOworIAkJCWZvcmVhY2ggKHZhciBhcmcgaW4gYXJndW1lbnRz KSB7CisgCQkJCWlmIChhcmcuVHlwZSA9PSBJbnRlcm5hbFR5cGUuVmFyT3V0VHlwZSkgeworIAkJ CQkJLy8gU2hvdWxkIGJlIHNwZWNpYWwgZXJyb3IgbWVzc2FnZSBhYm91dCBkeW5hbWljIGRpc3Bh dGNoCisgCQkJCQlyYy5SZXBvcnQuRXJyb3IgKDgxOTcsIGFyZy5FeHByLkxvY2F0aW9uLCAiQ2Fu bm90IGluZmVyIHRoZSB0eXBlIG9mIGltcGxpY2l0bHktdHlwZWQgb3V0IHZhcmlhYmxlIGB7MH0n IiwgKChEZWNsYXJhdGlvbkV4cHJlc3Npb24pIGFyZy5FeHByKS5WYXJpYWJsZS5OYW1lKTsKKysJ CQkJfSBlbHNlIGlmIChhcmcuVHlwZSA9PSBJbnRlcm5hbFR5cGUuRGVmYXVsdFR5cGUpIHsKKysJ CQkJCXJjLlJlcG9ydC5FcnJvciAoODMxMSwgYXJnLkV4cHIuTG9jYXRpb24sICJDYW5ub3QgdXNl IGEgZGVmYXVsdCBsaXRlcmFsIGFzIGFuIGFyZ3VtZW50IHRvIGEgZHluYW1pY2FsbHkgZGlzcGF0 Y2hlZCBvcGVyYXRpb24iKTsKKyAJCQkJfQorKworKwkJCQkvLyBGb3JjZWQgbGltaXRhdGlvbiBi ZWNhdXNlIE1pY3Jvc29mdC5DU2hhcnAgbmVlZHMgdG8gY2F0Y2ggdXAKKysJCQkJaWYgKGkgPiAw ICYmIGFyZ3VtZW50cyBbaSAtIDFdIGlzIE5hbWVkQXJndW1lbnQgJiYgIShhcmd1bWVudHMgW2ld IGlzIE5hbWVkQXJndW1lbnQpKQorKwkJCQkJcmMuUmVwb3J0LkVycm9yICg4MzI0LCBsb2MsICJO YW1lZCBhcmd1bWVudCBzcGVjaWZpY2F0aW9ucyBtdXN0IGFwcGVhciBhZnRlciBhbGwgZml4ZWQg YXJndW1lbnRzIGhhdmUgYmVlbiBzcGVjaWZpZWQgaW4gYSBkeW5hbWljIGludm9jYXRpb24iKTsK KysJCQkJKytpOworIAkJCX0KKyAKKyAJCQlpZiAocmMuQ3VycmVudFR5cGVQYXJhbWV0ZXJzICE9 IG51bGwgJiYgcmMuQ3VycmVudFR5cGVQYXJhbWV0ZXJzWzBdLklzTWV0aG9kVHlwZVBhcmFtZXRl cikKK2RpZmYgLS1naXQgYS9tY3MvbWNzL2Vjb3JlLmNzIGIvbWNzL21jcy9lY29yZS5jcworaW5k ZXggMzRmZjlhMzBkYWIuLjIwZWU5ZTczYjE5IDEwMDY0NAorLS0tIGEvbWNzL21jcy9lY29yZS5j cworKysrIGIvbWNzL21jcy9lY29yZS5jcworQEAgLTI1NSw3ICsyNTUsNyBAQCBuYW1lc3BhY2Ug TW9uby5DU2hhcnAgeworIAorIAkJcHVibGljIHZvaWQgRXJyb3JfRXhwcmVzc2lvbk11c3RCZUNv bnN0YW50IChSZXNvbHZlQ29udGV4dCByYywgTG9jYXRpb24gbG9jLCBzdHJpbmcgZV9uYW1lKQor IAkJeworLQkJCXJjLlJlcG9ydC5FcnJvciAoMTMzLCBsb2MsICJUaGUgZXhwcmVzc2lvbiBiZWlu ZyBhc3NpZ25lZCB0byBgezB9JyBtdXN0IGJlIGNvbnN0YW50IiwgZV9uYW1lKTsKKysJCQlyYy5S ZXBvcnQuRXJyb3IgKDEzMywgbG9jLCAiVGhlIGV4cHJlc3Npb24gYmVpbmcgYXNzaWduZWQgdG8g YHswfScgbXVzdCBiZSBhIGNvbnN0YW50IG9yIGRlZmF1bHQgdmFsdWUiLCBlX25hbWUpOworIAkJ fQorIAorIAkJcHVibGljIHZvaWQgRXJyb3JfQ29uc3RhbnRDYW5CZUluaXRpYWxpemVkV2l0aE51 bGxPbmx5IChSZXNvbHZlQ29udGV4dCByYywgVHlwZVNwZWMgdHlwZSwgTG9jYXRpb24gbG9jLCBz dHJpbmcgbmFtZSkKK0BAIC0yOTU3LDYgKzI5NTcsMTMgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJw IHsKKyAJCQkJaWYgKChyZXN0cmljdGlvbnMgJiBNZW1iZXJMb29rdXBSZXN0cmljdGlvbnMuTmFt ZU9mRXhjbHVkZWQpID09IDAgJiYgTmFtZSA9PSAibmFtZW9mIikKKyAJCQkJCXJldHVybiBuZXcg TmFtZU9mICh0aGlzKTsKKyAKKysJCQkJaWYgKChyZXN0cmljdGlvbnMgJiBNZW1iZXJMb29rdXBS ZXN0cmljdGlvbnMuUmVhZEFjY2VzcykgPT0gMCAmJiBOYW1lID09ICJfIikgeworKwkJCQkJaWYg KHJjLk1vZHVsZS5Db21waWxlci5TZXR0aW5ncy5WZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZf NykKKysJCQkJCQlyYy5SZXBvcnQuRmVhdHVyZUlzTm90QXZhaWxhYmxlIChyYy5Nb2R1bGUuQ29t cGlsZXIsIGxvYywgImRpc2NhcmRzIik7CisrCisrCQkJCQlyZXR1cm4gbmV3IERpc2NhcmQgKGxv YykuUmVzb2x2ZSAocmMpOworKwkJCQl9CisrCisgCQkJCWlmIChlcnJvck1vZGUpIHsKKyAJCQkJ CWlmICh2YXJpYWJsZV9mb3VuZCkgeworIAkJCQkJCXJjLlJlcG9ydC5FcnJvciAoODQxLCBsb2Ms ICJBIGxvY2FsIHZhcmlhYmxlIGB7MH0nIGNhbm5vdCBiZSB1c2VkIGJlZm9yZSBpdCBpcyBkZWNs YXJlZCIsIE5hbWUpOworQEAgLTQwMjksNiArNDAzNiwxMyBAQCBuYW1lc3BhY2UgTW9uby5DU2hh cnAgeworIAkJCXJldHVybiBNZXRob2RzLkZpcnN0ICgpLkdldFNpZ25hdHVyZUZvckVycm9yICgp OworIAkJfQorIAorKwkJc3RhdGljIE1ldGhvZFNwZWMgQ2FuZGlkYXRlRGV2aXJ0dWFsaXphdGlv biAoVHlwZVNwZWMgdHlwZSwgTWV0aG9kU3BlYyBtZXRob2QpCisrCQl7CisrCQkJLy8gQXNzdW1l cyBubyBnZW5lcmljcyBnZXQgaW52b2x2ZWQKKysJCQl2YXIgZmlsdGVyID0gbmV3IE1lbWJlckZp bHRlciAobWV0aG9kLk5hbWUsIG1ldGhvZC5Bcml0eSwgTWVtYmVyS2luZC5NZXRob2QsIG1ldGhv ZC5QYXJhbWV0ZXJzLCBudWxsKTsKKysJCQlyZXR1cm4gTWVtYmVyQ2FjaGUuRmluZE1lbWJlciAo dHlwZSwgZmlsdGVyLCBCaW5kaW5nUmVzdHJpY3Rpb24uSW5zdGFuY2VPbmx5IHwgQmluZGluZ1Jl c3RyaWN0aW9uLk92ZXJyaWRlT25seSB8IEJpbmRpbmdSZXN0cmljdGlvbi5EZWNsYXJlZE9ubHkp IGFzIE1ldGhvZFNwZWM7CisrCQl9CisrCisgCQlwdWJsaWMgb3ZlcnJpZGUgRXhwcmVzc2lvbiBD cmVhdGVFeHByZXNzaW9uVHJlZSAoUmVzb2x2ZUNvbnRleHQgZWMpCisgCQl7CisgCQkJaWYgKGJl c3RfY2FuZGlkYXRlID09IG51bGwpIHsKK0BAIC00MTc3LDYgKzQxOTEsMjIgQEAgbmFtZXNwYWNl IE1vbm8uQ1NoYXJwIHsKKyAJCQkJCQl9CisgCisgCQkJCQkJSW5zdGFuY2VFeHByZXNzaW9uLlJl c29sdmUgKGVjLCBSZXNvbHZlRmxhZ3MuVmFyaWFibGVPclZhbHVlIHwgUmVzb2x2ZUZsYWdzLk1l dGhvZEdyb3VwIHwgUmVzb2x2ZUZsYWdzLlR5cGUpOworKworKwkJCQkJCXZhciBleHByX3R5cGUg PSBJbnN0YW5jZUV4cHJlc3Npb24uVHlwZTsKKysJCQkJCQlpZiAoKGV4cHJfdHlwZS5Jc0J5UmVm TGlrZSB8fCBleHByX3R5cGUuSXNTcGVjaWFsUnVudGltZVR5cGUpICYmIGJlc3RfY2FuZGlkYXRl LkRlY2xhcmluZ1R5cGUgIT0gZXhwcl90eXBlKSB7CisrCQkJCQkJCU1ldGhvZFNwZWMgZGV2aXJ0 ID0gbnVsbDsKKysJCQkJCQkJaWYgKChiZXN0X2NhbmRpZGF0ZS5Nb2RpZmllcnMgJiAoTW9kaWZp ZXJzLlZJUlRVQUwgfCBNb2RpZmllcnMuQUJTVFJBQ1QgfCBNb2RpZmllcnMuT1ZFUlJJREUpKSAh PSAwKSB7CisrCQkJCQkJCQlkZXZpcnQgPSBDYW5kaWRhdGVEZXZpcnR1YWxpemF0aW9uIChleHBy X3R5cGUsIGJlc3RfY2FuZGlkYXRlKTsKKysJCQkJCQkJfQorKworKwkJCQkJCQlpZiAoZGV2aXJ0 ID09IG51bGwpIHsKKysJCQkJCQkJCS8vIENTQzogU2hvdWxkIGJlIGJldHRlciBlcnJvciBtZXNz YWdlCisrCQkJCQkJCQllYy5SZXBvcnQuRXJyb3IgKDI5LCBJbnN0YW5jZUV4cHJlc3Npb24uTG9j YXRpb24sICJDYW5ub3QgaW1wbGljaXRseSBjb252ZXJ0IHR5cGUgYHswfScgdG8gYHsxfSciLAor KwkJCQkJCQkJCQkJCSBJbnN0YW5jZUV4cHJlc3Npb24uVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJv ciAoKSwgYmVzdF9jYW5kaWRhdGUuRGVjbGFyaW5nVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAo KSk7CisrCQkJCQkJCX0gZWxzZSB7CisrCQkJCQkJCQliZXN0X2NhbmRpZGF0ZSA9IGRldmlydDsK KysJCQkJCQkJfQorKwkJCQkJCX0KKyAJCQkJCX0KKyAJCQkJfQorIAorQEAgLTU0MTksNyArNTQ0 OSw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCX0KKyAKKyAJCQkJaWYgKGFyZ190 eXBlICE9IHBhcmFtZXRlcikgeworLQkJCQkJaWYgKGFyZ190eXBlID09IEludGVybmFsVHlwZS5W YXJPdXRUeXBlKQorKwkJCQkJaWYgKGFyZ190eXBlID09IEludGVybmFsVHlwZS5WYXJPdXRUeXBl IHx8IGFyZ190eXBlID09IEludGVybmFsVHlwZS5EaXNjYXJkKQorIAkJCQkJCXJldHVybiAwOwor IAorIAkJCQkJdmFyIHJlZl9hcmdfdHlwZSA9IGFyZ190eXBlIGFzIFJlZmVyZW5jZUNvbnRhaW5l cjsKK0BAIC02MDI4LDYgKzYwNTgsMTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQkJ CQljb250aW51ZTsKKyAJCQkJCX0KKyAKKysJCQkJCWlmIChhcmdfdHlwZSA9PSBJbnRlcm5hbFR5 cGUuRGlzY2FyZCkgeworKwkJCQkJCWEuRXhwci5UeXBlID0gcHQ7CisrCQkJCQkJY29udGludWU7 CisrCQkJCQl9CisrCisgCQkJCQl2YXIgcmVmX2FyZ190eXBlID0gYXJnX3R5cGUgYXMgUmVmZXJl bmNlQ29udGFpbmVyOworIAkJCQkJaWYgKHJlZl9hcmdfdHlwZSAhPSBudWxsKSB7CisgCQkJCQkJ aWYgKHJlZl9hcmdfdHlwZS5FbGVtZW50ICE9IHB0KQorQEAgLTYwNjEsOSArNjA5NiwxNSBAQCBu YW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCQkJCWVsc2UKKyAJCQkJCQkJZWMuUmVwb3J0LlN5 bWJvbFJlbGF0ZWRUb1ByZXZpb3VzRXJyb3IgKG1lbWJlcik7CisgCistCQkJCQkJZWMuUmVwb3J0 LkVycm9yICgxNzQ0LCBuYS5Mb2NhdGlvbiwKKy0JCQkJCQkJIk5hbWVkIGFyZ3VtZW50IGB7MH0n IGNhbm5vdCBiZSB1c2VkIGZvciBhIHBhcmFtZXRlciB3aGljaCBoYXMgcG9zaXRpb25hbCBhcmd1 bWVudCBzcGVjaWZpZWQiLAorLQkJCQkJCQluYS5OYW1lKTsKKysJCQkJCQlpZiAobmFtZV9pbmRl eCA+IGFfaWR4KSB7CisrCQkJCQkJCWVjLlJlcG9ydC5FcnJvciAoODMyMywgbmEuTG9jYXRpb24s CisrCQkJCQkJCQkiTmFtZWQgYXJndW1lbnQgYHswfScgaXMgdXNlZCBvdXQgb2YgcG9zaXRpb24g YnV0IGlzIGZvbGxvd2VkIGJ5IHBvc2l0aW9uYWwgYXJndW1lbnQiLAorKwkJCQkJCQkJbmEuTmFt ZSk7CisrCQkJCQkJfSBlbHNlIHsKKysJCQkJCQkJZWMuUmVwb3J0LkVycm9yICgxNzQ0LCBuYS5M b2NhdGlvbiwKKysJCQkJCQkJCSJOYW1lZCBhcmd1bWVudCBgezB9JyBjYW5ub3QgYmUgdXNlZCBm b3IgYSBwYXJhbWV0ZXIgd2hpY2ggaGFzIHBvc2l0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVkIiwK KysJCQkJCQkJCW5hLk5hbWUpOworKwkJCQkJCX0KKyAJCQkJCX0KKyAJCQkJfQorIAkJCQkKK0BA IC03MzUwLDYgKzczOTEsOSBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCWlmICghUmVz b2x2ZUdldHRlciAoZWMpKQorIAkJCQlyZXR1cm4gbnVsbDsKKyAKKysJCQlpZiAodHlwZS5LaW5k ID09IE1lbWJlcktpbmQuQnlSZWYpCisrCQkJCXJldHVybiBCeVJlZkRlcmVmZXJlbmNlLkNyZWF0 ZSAodGhpcykuUmVzb2x2ZSAoZWMpOworKworIAkJCXJldHVybiB0aGlzOworIAkJfQorIAorQEAg LTczNTksMTIgKzc0MDMsMTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQkJRXJyb3Jf TnVsbFByb3BhZ2F0aW5nTFZhbHVlIChyYyk7CisgCisgCQkJaWYgKHJpZ2h0X3NpZGUgPT0gRW1w dHlFeHByZXNzaW9uLk91dEFjY2VzcykgeworLQkJCQlpZiAoYmVzdF9jYW5kaWRhdGU/Lk1lbWJl clR5cGUuS2luZCA9PSBNZW1iZXJLaW5kLkJ5UmVmKSB7CistCQkJCQlpZiAoQXJndW1lbnRzPy5D b250YWluc0VtaXRXaXRoQXdhaXQgKCkgPT0gdHJ1ZSkgeworLQkJCQkJCXJjLlJlcG9ydC5FcnJv ciAoODE3OCwgbG9jLCAiYGF3YWl0JyBjYW5ub3QgYmUgdXNlZCBpbiBhbiBleHByZXNzaW9uIGNv bnRhaW5pbmcgYSBjYWxsIHRvIGB7MH0nIGJlY2F1c2UgaXQgcmV0dXJucyBieSByZWZlcmVuY2Ui LAorLQkJCQkJCQlHZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CistCQkJCQl9CisrCQkJCWlmIChP dmVybG9hZFJlc29sdmUgKHJjLCBudWxsKSA9PSBudWxsKQorKwkJCQkJcmV0dXJuIG51bGw7Cisg CisrCQkJCWlmIChiZXN0X2NhbmRpZGF0ZT8uTWVtYmVyVHlwZS5LaW5kID09IE1lbWJlcktpbmQu QnlSZWYpIHsKKysJCQkJCWdldHRlciA9IENhbmRpZGF0ZVRvQmFzZU92ZXJyaWRlIChyYywgYmVz dF9jYW5kaWRhdGUuR2V0KTsKKyAJCQkJCXJldHVybiB0aGlzOworIAkJCQl9CisgCitAQCAtNzM5 Niw3ICs3NDM5LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAKKyAJCQkJaWYgKGJlc3Rf Y2FuZGlkYXRlLk1lbWJlclR5cGUuS2luZCA9PSBNZW1iZXJLaW5kLkJ5UmVmKSB7CisgCQkJCQln ZXR0ZXIgPSBDYW5kaWRhdGVUb0Jhc2VPdmVycmlkZSAocmMsIGJlc3RfY2FuZGlkYXRlLkdldCk7 CistCQkJCQlyZXR1cm4gQnlSZWZEZXJlZmVyZW5jZS5DcmVhdGUodGhpcykuUmVzb2x2ZShyYyk7 CisrCQkJCQlyZXR1cm4gQnlSZWZEZXJlZmVyZW5jZS5DcmVhdGUgKHRoaXMpLlJlc29sdmUgKHJj KTsKKyAJCQkJfQorIAorIAkJCQlyYy5SZXBvcnQuRXJyb3IgKDIwMCwgbG9jLCAiUHJvcGVydHkg b3IgaW5kZXhlciBgezB9JyBjYW5ub3QgYmUgYXNzaWduZWQgdG8gKGl0IGlzIHJlYWQtb25seSki LAorZGlmZiAtLWdpdCBhL21jcy9tY3MvZXZhbC5jcyBiL21jcy9tY3MvZXZhbC5jcworaW5kZXgg NjBlMGM2ZDY0YTAuLjA3NTY5N2JiMWRmIDEwMDY0NAorLS0tIGEvbWNzL21jcy9ldmFsLmNzCisr KysgYi9tY3MvbWNzL2V2YWwuY3MKK0BAIC03ODgsNiArNzg4LDcgQEAgbmFtZXNwYWNlIE1vbm8u Q1NoYXJwCisgCQkJCXJldHVybiBudWxsOworIAkJCX0KKyAKKysJCQltb2R1bGUuQ2xvc2VDb250 YWluZXJFYXJseUZvclJlZmxlY3Rpb25FbWl0ICgpOworIAkJCW1vZHVsZS5DbG9zZUNvbnRhaW5l ciAoKTsKKyAJCQlpZiAoaG9zdCAhPSBudWxsKQorIAkJCQlob3N0LkNsb3NlQ29udGFpbmVyICgp OworZGlmZiAtLWdpdCBhL21jcy9tY3MvZXhwcmVzc2lvbi5jcyBiL21jcy9tY3MvZXhwcmVzc2lv bi5jcworaW5kZXggNzMyZWUzZWU5MzQuLjUxOGNjYzhlZjQzIDEwMDY0NAorLS0tIGEvbWNzL21j cy9leHByZXNzaW9uLmNzCisrKysgYi9tY3MvbWNzL2V4cHJlc3Npb24uY3MKK0BAIC0xMjIwLDYg KzEyMjAsNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJZXhwciA9IGV4cHIuUmVzb2x2 ZUxWYWx1ZSAoZWMsIGV4cHIpOworIAkJCX0gZWxzZSB7CisgCQkJCWVjLlJlcG9ydC5FcnJvciAo MTA1OSwgbG9jLCAiVGhlIG9wZXJhbmQgb2YgYW4gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBvcGVy YXRvciBtdXN0IGJlIGEgdmFyaWFibGUsIHByb3BlcnR5IG9yIGluZGV4ZXIiKTsKKysJCQkJcmV0 dXJuIG51bGw7CisgCQkJfQorIAorIAkJCS8vCitAQCAtMTQ3Nyw2ICsxNDc4LDExIEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycAorIAkJCQlyZXR1cm4gbnVsbDsKKyAJCQl9CisgCisrCQkJaWYgKGV4 cHIuVHlwZSA9PSBJbnRlcm5hbFR5cGUuRGVmYXVsdFR5cGUpIHsKKysJCQkJRXJyb3JfT3BlcmF0 b3JDYW5ub3RCZUFwcGxpZWQgKHJjLCBsb2MsIE9wZXJhdG9yTmFtZSwgZXhwci5UeXBlKTsKKysJ CQkJcmV0dXJuIG51bGw7CisrCQkJfQorKworIAkJCXJldHVybiB0aGlzOworIAkJfQorIAorQEAg LTQzMDQsOSArNDMxMCwzMiBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJQ2hlY2tPdXRP ZlJhbmdlQ29tcGFyaXNvbiAoZWMsIHJjLCBsZWZ0LlR5cGUpOworIAkJCX0KKyAKKy0JCQlpZiAo bGVmdC5UeXBlLkJ1aWx0aW5UeXBlID09IEJ1aWx0aW5UeXBlU3BlYy5UeXBlLkR5bmFtaWMgfHwg cmlnaHQuVHlwZS5CdWlsdGluVHlwZSA9PSBCdWlsdGluVHlwZVNwZWMuVHlwZS5EeW5hbWljKQor KwkJCXZhciBsdHlwZSA9IGxlZnQuVHlwZTsKKysJCQl2YXIgcnR5cGUgPSByaWdodC5UeXBlOwor KwkJCWlmIChsdHlwZS5CdWlsdGluVHlwZSA9PSBCdWlsdGluVHlwZVNwZWMuVHlwZS5EeW5hbWlj IHx8IHJ0eXBlLkJ1aWx0aW5UeXBlID09IEJ1aWx0aW5UeXBlU3BlYy5UeXBlLkR5bmFtaWMpCisg CQkJCXJldHVybiBEb1Jlc29sdmVEeW5hbWljIChlYyk7CisgCisrCQkJLy8KKysJCQkvLyBPbmx5 IGRlZmF1bHQgd2l0aCA9PSBhbmQgIT0gaXMgZXhwbGljaXRseSBhbGxvd2VkCisrCQkJLy8KKysJ CQlpZiAobHR5cGUgPT0gSW50ZXJuYWxUeXBlLkRlZmF1bHRUeXBlIHx8IHJ0eXBlID09IEludGVy bmFsVHlwZS5EZWZhdWx0VHlwZSkgeworKwkJCQlpZiAoKE9wZXIgJiBPcGVyYXRvci5FcXVhbGl0 eU1hc2spID09IDApIHsKKysJCQkJCWVjLlJlcG9ydC5FcnJvciAoODMxMCwgbG9jLCAiT3BlcmF0 b3IgYHswfScgY2Fubm90IGJlIGFwcGxpZWQgdG8gb3BlcmFuZCBgZGVmYXVsdCciLCBPcGVyTmFt ZSAoT3BlcikpOworKwkJCQkJcmV0dXJuIG51bGw7CisrCQkJCX0KKysKKysJCQkJaWYgKGx0eXBl ID09IHJ0eXBlKSB7CisrCQkJCQllYy5SZXBvcnQuRXJyb3IgKDgzMTUsIGxvYywgIk9wZXJhdG9y IGB7MH0nIGlzIGFtYmlndW91cyBvbiBvcGVyYW5kcyBgZGVmYXVsdCcgYW5kIGBkZWZhdWx0JyIs IE9wZXJOYW1lIChPcGVyKSk7CisrCQkJCQlyZXR1cm4gbnVsbDsKKysJCQkJfQorKworKwkJCQlp ZiAocnR5cGUgPT0gSW50ZXJuYWxUeXBlLkRlZmF1bHRUeXBlKSB7CisrCQkJCQlyaWdodCA9IG5l dyBEZWZhdWx0VmFsdWVFeHByZXNzaW9uIChuZXcgVHlwZUV4cHJlc3Npb24gKGx0eXBlLCByaWdo dC5Mb2NhdGlvbiksIHJpZ2h0LkxvY2F0aW9uKS5SZXNvbHZlIChlYyk7CisrCQkJCX0gZWxzZSB7 CisrCQkJCQlsZWZ0ID0gbmV3IERlZmF1bHRWYWx1ZUV4cHJlc3Npb24gKG5ldyBUeXBlRXhwcmVz c2lvbiAocnR5cGUsIGxlZnQuTG9jYXRpb24pLCBsZWZ0LkxvY2F0aW9uKS5SZXNvbHZlIChlYyk7 CisrCQkJCX0KKysJCQl9CisrCisgCQkJcmV0dXJuIERvUmVzb2x2ZUNvcmUgKGVjLCBsZWZ0LCBy aWdodCk7CisgCQl9CisgCitAQCAtNjc0NCwxMCArNjc3MywxNCBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAKKyAJCQkJCWVjLlJlcG9ydC5FcnJvciAoMTc2NCwgbG9jLAorIAkJCQkJCSJDYW5ub3Qg dXNlIGZpeGVkIHZhcmlhYmxlIGB7MH0nIGluc2lkZSBhbiBhbm9ueW1vdXMgbWV0aG9kLCBsYW1i ZGEgZXhwcmVzc2lvbiBvciBxdWVyeSBleHByZXNzaW9uIiwKKyAJCQkJCQlHZXRTaWduYXR1cmVG b3JFcnJvciAoKSk7CistCQkJCX0gZWxzZSBpZiAobG9jYWxfaW5mby5Jc0J5UmVmKSB7CistCQkJ CQllYy5SZXBvcnQuRXJyb3IgKDgxNzUsIGxvYywKKy0JCQkJCQkiQ2Fubm90IHVzZSBieS1yZWZl cmVuY2UgdmFyaWFibGUgYHswfScgaW5zaWRlIGFuIGFub255bW91cyBtZXRob2QsIGxhbWJkYSBl eHByZXNzaW9uLCBvciBxdWVyeSBleHByZXNzaW9uIiwKKy0JCQkJCQlHZXRTaWduYXR1cmVGb3JF cnJvciAoKSk7CisrCQkJCX0gZWxzZSBpZiAobG9jYWxfaW5mby5Jc0J5UmVmIHx8IGxvY2FsX2lu Zm8uVHlwZS5Jc0J5UmVmTGlrZSkgeworKwkJCQkJaWYgKGVjLkN1cnJlbnRBbm9ueW1vdXNNZXRo b2QgaXMgU3RhdGVNYWNoaW5lSW5pdGlhbGl6ZXIpIHsKKysJCQkJCQkvLyBJdCdzIHJlcG9ydGVk IGxhdGVyIGFzIDQwMTIvNDAxMworKwkJCQkJfSBlbHNlIHsKKysJCQkJCQllYy5SZXBvcnQuRXJy b3IgKDgxNzUsIGxvYywKKysJCQkJCQkJIkNhbm5vdCB1c2UgYnktcmVmZXJlbmNlIHZhcmlhYmxl IGB7MH0nIGluc2lkZSBhbiBhbm9ueW1vdXMgbWV0aG9kLCBsYW1iZGEgZXhwcmVzc2lvbiwgb3Ig cXVlcnkgZXhwcmVzc2lvbiIsCisrCQkJCQkJCUdldFNpZ25hdHVyZUZvckVycm9yICgpKTsKKysJ CQkJCX0KKyAJCQkJfQorIAorIAkJCQlpZiAoZWMuSXNWYXJpYWJsZUNhcHR1cmluZ1JlcXVpcmVk KSB7CitAQCAtNjc4Myw3ICs2ODE2LDkgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJCWxv Y2FsX2luZm8uU2V0SXNVc2VkICgpOworIAorIAkJCWlmIChsb2NhbF9pbmZvLklzUmVhZG9ubHkg JiYgIWVjLkhhc0FueSAoUmVzb2x2ZUNvbnRleHQuT3B0aW9ucy5GaWVsZEluaXRpYWxpemVyU2Nv cGUgfCBSZXNvbHZlQ29udGV4dC5PcHRpb25zLlVzaW5nSW5pdGlhbGl6ZXJTY29wZSkpIHsKKy0J CQkJaWYgKHJocyA9PSBFbXB0eUV4cHJlc3Npb24uTFZhbHVlTWVtYmVyQWNjZXNzKSB7CisrCQkJ CWlmIChsb2NhbF9pbmZvLklzQnlSZWYpIHsKKysJCQkJCS8vIE9LIGJlY2F1c2UgaXQgY2Fubm90 IGJlIHJlYXNzaWduZWQKKysJCQkJfSBlbHNlIGlmIChyaHMgPT0gRW1wdHlFeHByZXNzaW9uLkxW YWx1ZU1lbWJlckFjY2VzcykgeworIAkJCQkJLy8gQ1MxNjU0IGFscmVhZHkgcmVwb3J0ZWQKKyAJ CQkJfSBlbHNlIHsKKyAJCQkJCWludCBjb2RlOworQEAgLTcxNzUsOCArNzIxMCw3IEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycAorIAkJeworIAkJCXZhciBzbiA9IGV4cHIgYXMgU2ltcGxlTmFtZTsK KyAJCQlpZiAoc24gIT0gbnVsbCAmJiBzbi5OYW1lID09ICJ2YXIiICYmIHNuLkFyaXR5ID09IDAg JiYgYXJndW1lbnRzPy5Db3VudCA+IDEpIHsKKy0JCQkJdmFyIHRhcmdldHMgPSBuZXcgTGlzdDxF eHByZXNzaW9uPiAoYXJndW1lbnRzLkNvdW50KTsKKy0JCQkJdmFyIHZhcmlhYmxlcyA9IG5ldyBM aXN0PExvY2FsVmFyaWFibGU+IChhcmd1bWVudHMuQ291bnQpOworKwkJCQl2YXIgdmFyaWFibGVz ID0gbmV3IExpc3Q8QmxvY2tWYXJpYWJsZT4gKGFyZ3VtZW50cy5Db3VudCk7CisgCQkJCWZvcmVh Y2ggKHZhciBhcmcgaW4gYXJndW1lbnRzKSB7CisgCQkJCQl2YXIgYXJnX3NuID0gYXJnLkV4cHIg YXMgU2ltcGxlTmFtZTsKKyAJCQkJCWlmIChhcmdfc24gPT0gbnVsbCB8fCBhcmdfc24uQXJpdHkg IT0gMCkgeworQEAgLTcxODYsMTIgKzcyMjAsMTAgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisg CisgCQkJCQl2YXIgbHYgPSBuZXcgTG9jYWxWYXJpYWJsZSAocmMuQ3VycmVudEJsb2NrLCBhcmdf c24uTmFtZSwgYXJnLkV4cHIuTG9jYXRpb24pOworIAkJCQkJcmMuQ3VycmVudEJsb2NrLkFkZExv Y2FsTmFtZSAobHYpOworLQkJCQkJdmFyaWFibGVzLkFkZCAobHYpOworLQorLQkJCQkJdGFyZ2V0 cy5BZGQgKG5ldyBMb2NhbFZhcmlhYmxlUmVmZXJlbmNlIChsdiwgYXJnX3NuLkxvY2F0aW9uKSk7 CisrCQkJCQl2YXJpYWJsZXMuQWRkIChuZXcgQmxvY2tWYXJpYWJsZSAobmV3IFZhckV4cHIgKGx2 LkxvY2F0aW9uKSwgbHYpKTsKKyAJCQkJfQorIAorLQkJCQl2YXIgcmVzID0gbmV3IFR1cGxlRGVj b25zdHJ1Y3QgKHRhcmdldHMsIHZhcmlhYmxlcywgcmlnaHRfc2lkZSwgbG9jKTsKKysJCQkJdmFy IHJlcyA9IG5ldyBUdXBsZURlY29uc3RydWN0ICh2YXJpYWJsZXMsIHJpZ2h0X3NpZGUsIGxvYyk7 CisgCQkJCXJldHVybiByZXMuUmVzb2x2ZSAocmMpOworIAkJCX0KKyAKK0BAIC03MzA2LDE1ICs3 MzM4LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJCisgCQkJZWNsYXNzID0gRXhwckNs YXNzLlZhbHVlOworIAorLQkJCWlmICh0eXBlLktpbmQgPT0gTWVtYmVyS2luZC5CeVJlZikgewor LQkJCQlpZiAocmhzID09IG51bGwgJiYgYXJndW1lbnRzPy5Db250YWluc0VtaXRXaXRoQXdhaXQg KCkgPT0gdHJ1ZSkgeworLQkJCQkJZWMuUmVwb3J0LkVycm9yICg4MTc4LCBsb2MsICJgYXdhaXQn IGNhbm5vdCBiZSB1c2VkIGluIGFuIGV4cHJlc3Npb24gY29udGFpbmluZyBhIGNhbGwgdG8gYHsw fScgYmVjYXVzZSBpdCByZXR1cm5zIGJ5IHJlZmVyZW5jZSIsCistCQkJCQkJR2V0U2lnbmF0dXJl Rm9yRXJyb3IgKCkpOworLQkJCQl9CistCistCQkJCWlmIChyaHMgIT0gRW1wdHlFeHByZXNzaW9u Lk91dEFjY2VzcykKKy0JCQkJCXJldHVybiBCeVJlZkRlcmVmZXJlbmNlLkNyZWF0ZSAodGhpcyku UmVzb2x2ZSAoZWMpOworLQkJCX0KKysJCQlpZiAodHlwZS5LaW5kID09IE1lbWJlcktpbmQuQnlS ZWYgJiYgcmhzICE9IEVtcHR5RXhwcmVzc2lvbi5PdXRBY2Nlc3MpCisrCQkJCXJldHVybiBCeVJl ZkRlcmVmZXJlbmNlLkNyZWF0ZSAodGhpcykuUmVzb2x2ZSAoZWMpOworIAorIAkJCXJldHVybiB0 aGlzOworIAkJfQorQEAgLTkwMzQsNyArOTA1OSw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAor IAkJCWlmIChlY2xhc3MgPT0gRXhwckNsYXNzLlVucmVzb2x2ZWQpCisgCQkJCVJlc29sdmVCYXNl IChlYyk7CisgCistCQkJaWYgKHR5cGUuSXNDbGFzcyB8fCB0eXBlLklzUmVhZE9ubHkpIHsKKysJ CQlpZiAodHlwZS5Jc0NsYXNzIHx8ICh0eXBlLklzUmVhZE9ubHkgJiYgIWVjLkhhc1NldCAoUmVz b2x2ZUNvbnRleHQuT3B0aW9ucy5Db25zdHJ1Y3RvclNjb3BlKSkpIHsKKyAJCQkJaWYgKHJpZ2h0 X3NpZGUgPT0gRW1wdHlFeHByZXNzaW9uLlVuYXJ5QWRkcmVzcykKKyAJCQkJCWVjLlJlcG9ydC5F cnJvciAoNDU5LCBsb2MsICJDYW5ub3QgdGFrZSB0aGUgYWRkcmVzcyBvZiBgdGhpcycgYmVjYXVz ZSBpdCBpcyByZWFkLW9ubHkiKTsKKyAJCQkJZWxzZSBpZiAocmlnaHRfc2lkZSA9PSBFbXB0eUV4 cHJlc3Npb24uT3V0QWNjZXNzKQorQEAgLTk5MDgsNyArOTkzMyw3IEBAIG5hbWVzcGFjZSBNb25v LkNTaGFycAorIAkJcHVibGljIHN0YXRpYyBib29sIElzVmFsaWREb3RFeHByZXNzaW9uIChUeXBl U3BlYyB0eXBlKQorIAkJeworIAkJCWNvbnN0IE1lbWJlcktpbmQgZG90X2tpbmRzID0gTWVtYmVy S2luZC5DbGFzcyB8IE1lbWJlcktpbmQuU3RydWN0IHwgTWVtYmVyS2luZC5EZWxlZ2F0ZSB8IE1l bWJlcktpbmQuRW51bSB8CistCQkJCU1lbWJlcktpbmQuSW50ZXJmYWNlIHwgTWVtYmVyS2luZC5U eXBlUGFyYW1ldGVyIHwgTWVtYmVyS2luZC5BcnJheVR5cGU7CisrCQkJCU1lbWJlcktpbmQuSW50 ZXJmYWNlIHwgTWVtYmVyS2luZC5UeXBlUGFyYW1ldGVyIHwgTWVtYmVyS2luZC5BcnJheVR5cGUg IHwgTWVtYmVyS2luZC5CeVJlZjsKKyAKKyAJCQlyZXR1cm4gKHR5cGUuS2luZCAmIGRvdF9raW5k cykgIT0gMCB8fCB0eXBlLkJ1aWx0aW5UeXBlID09IEJ1aWx0aW5UeXBlU3BlYy5UeXBlLkR5bmFt aWM7CisgCQl9CitAQCAtMTE2MTQsNyArMTE2MzksNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAK KyAJCQl9CisgCisgCQkJaWYgKHNpbmdsZV9zcGVjICE9IG51bGwgJiYgc2luZ2xlX3NwZWMuRGlt ZW5zaW9uID4gMCkgeworLQkJCQlpZiAodHlwZS5Jc1NwZWNpYWxSdW50aW1lVHlwZSkgeworKwkJ CQlpZiAodHlwZS5Jc1NwZWNpYWxSdW50aW1lVHlwZSB8fCB0eXBlLklzQnlSZWZMaWtlKSB7Cisg CQkJCQllYy5Nb2R1bGUuQ29tcGlsZXIuUmVwb3J0LkVycm9yICg2MTEsIGxvYywgIkFycmF5IGVs ZW1lbnRzIGNhbm5vdCBiZSBvZiB0eXBlIGB7MH0nIiwgdHlwZS5HZXRTaWduYXR1cmVGb3JFcnJv ciAoKSk7CisgCQkJCX0gZWxzZSBpZiAodHlwZS5Jc1N0YXRpYykgeworIAkJCQkJZWMuTW9kdWxl LkNvbXBpbGVyLlJlcG9ydC5TeW1ib2xSZWxhdGVkVG9QcmV2aW91c0Vycm9yICh0eXBlKTsKK0BA IC0xMTY1MCw2ICsxMTY3NSwxMyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJY2xhc3MgUmVm ZXJlbmNlVHlwZUV4cHIgOiBUeXBlRXhwcgorIAl7CisgCQlGdWxsTmFtZWRFeHByZXNzaW9uIGVs ZW1lbnQ7CisrCQlyZWFkb25seSBib29sIHJlYWRPbmx5OworKworKwkJcHVibGljIFJlZmVyZW5j ZVR5cGVFeHByIChGdWxsTmFtZWRFeHByZXNzaW9uIGVsZW1lbnQsIGJvb2wgcmVhZE9ubHksIExv Y2F0aW9uIGxvYykKKysJCQk6IHRoaXMgKGVsZW1lbnQsIGxvYykKKysJCXsKKysJCQl0aGlzLnJl YWRPbmx5ID0gcmVhZE9ubHk7CisrCQl9CisgCisgCQlwdWJsaWMgUmVmZXJlbmNlVHlwZUV4cHIg KEZ1bGxOYW1lZEV4cHJlc3Npb24gZWxlbWVudCwgTG9jYXRpb24gbG9jKQorIAkJeworQEAgLTEx NjY0LDE0ICsxMTY5NiwxNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJcmV0dXJuIG51 bGw7CisgCisgCQkJZWNsYXNzID0gRXhwckNsYXNzLlR5cGU7CistCQkJdHlwZSA9IFJlZmVyZW5j ZUNvbnRhaW5lci5NYWtlVHlwZSAobWMuTW9kdWxlLCB0eXBlKTsKKysJCQl0eXBlID0gcmVhZE9u bHkgPworKwkJCQlSZWFkT25seVJlZmVyZW5jZUNvbnRhaW5lci5NYWtlVHlwZSAobWMuTW9kdWxl LCB0eXBlKSA6CisrCQkJCVJlZmVyZW5jZUNvbnRhaW5lci5NYWtlVHlwZSAobWMuTW9kdWxlLCB0 eXBlKTsKKyAKKyAJCQlyZXR1cm4gdHlwZTsKKyAJCX0KKyAKKyAJCXB1YmxpYyBvdmVycmlkZSBz dHJpbmcgR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCkKKyAJCXsKKy0JCQlyZXR1cm4gInJlZiAiICsg ZWxlbWVudC5HZXRTaWduYXR1cmVGb3JFcnJvciAoKTsKKysJCQl2YXIgcHJlZml4ID0gcmVhZE9u bHkgPyAicmVmICIgOiAicmVmIHJlYWRvbmx5ICI7CisrCQkJcmV0dXJuIHByZWZpeCArIGVsZW1l bnQuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCk7CisgCQl9CisgCisgCQlwdWJsaWMgb3ZlcnJpZGUg b2JqZWN0IEFjY2VwdCAoU3RydWN0dXJhbFZpc2l0b3IgdmlzaXRvcikKK0BAIC0xMTc4Myw2ICsx MTgxOCw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJVHlwZVNwZWMgb3R5cGU7CisgCQlF eHByZXNzaW9uIHRleHByOworIAkJRXhwcmVzc2lvbiBjb3VudDsKKysJCU1ldGhvZFNwZWMgY3Rv cjsKKyAJCQorIAkJcHVibGljIFN0YWNrQWxsb2MgKEV4cHJlc3Npb24gdHlwZSwgRXhwcmVzc2lv biBjb3VudCwgTG9jYXRpb24gbCkKKyAJCXsKK0BAIC0xMTg1Miw2ICsxMTg4OCwxMSBAQCBuYW1l c3BhY2UgTW9uby5DU2hhcnAKKyAJCQlpbnQgc2l6ZSA9IEJ1aWx0aW5UeXBlU3BlYy5HZXRTaXpl IChvdHlwZSk7CisgCisgCQkJY291bnQuRW1pdCAoZWMpOworKwkJCWJvb2wgY291bnRfb25fc3Rh Y2sgPSBmYWxzZTsKKysJCQlpZiAoY3RvciAhPSBudWxsICYmICFFeHByZXNzaW9uQW5hbHl6ZXIu SXNJbmV4cGVuc2l2ZUxvYWQgKGNvdW50KSkgeworKwkJCQllYy5FbWl0IChPcENvZGVzLkR1cCk7 CisrCQkJCWNvdW50X29uX3N0YWNrID0gdHJ1ZTsKKysJCQl9CisgCisgCQkJaWYgKHNpemUgPT0g MCkKKyAJCQkJZWMuRW1pdCAoT3BDb2Rlcy5TaXplb2YsIG90eXBlKTsKK0BAIC0xMTg2MCw2ICsx MTkwMSwxOSBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAKKyAJCQllYy5FbWl0IChPcENvZGVz Lk11bF9PdmZfVW4pOworIAkJCWVjLkVtaXQgKE9wQ29kZXMuTG9jYWxsb2MpOworKworKwkJCWlm IChjdG9yICE9IG51bGwpIHsKKysJCQkJaWYgKCFjb3VudF9vbl9zdGFjaykKKysJCQkJCWNvdW50 LkVtaXQgKGVjKTsKKysJCQkJZWMuRW1pdCAoT3BDb2Rlcy5OZXdvYmosIGN0b3IpOworKwkJCX0K KysJCX0KKysKKysJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVycm9yX1ZhbHVlQ2Fubm90QmVDb252 ZXJ0ZWQgKFJlc29sdmVDb250ZXh0IHJjLCBUeXBlU3BlYyB0YXJnZXQsIGJvb2wgZXhwbCkKKysJ CXsKKysJCQl2YXIgZXR5cGUgPSAoKFBvaW50ZXJDb250YWluZXIpdHlwZSkuRWxlbWVudDsKKysJ CQlyYy5SZXBvcnQuRXJyb3IgKDgzNDYsIGxvYywgIkNhbm5vdCBjb252ZXJ0IGEgc3RhY2thbGxv YyBleHByZXNzaW9uIG9mIHR5cGUgYHswfScgdG8gdHlwZSBgezF9JyIsCisrCQkJICAgICAgICAg ICAgICAgICBldHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSwgdGFyZ2V0LkdldFNpZ25hdHVy ZUZvckVycm9yICgpKTsKKyAJCX0KKyAKKyAJCXByb3RlY3RlZCBvdmVycmlkZSB2b2lkIENsb25l VG8gKENsb25lQ29udGV4dCBjbG9uZWN0eCwgRXhwcmVzc2lvbiB0KQorQEAgLTExODczLDYgKzEx OTI3LDE2IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJeworIAkJCXJldHVybiB2aXNpdG9y LlZpc2l0ICh0aGlzKTsKKyAJCX0KKysKKysJCXB1YmxpYyBib29sIFJlc29sdmVTcGFuQ29udmVy c2lvbiAoUmVzb2x2ZUNvbnRleHQgcmMsIFR5cGVTcGVjIHNwYW5UeXBlKQorKwkJeworKwkJCWN0 b3IgPSBNZW1iZXJDYWNoZS5GaW5kTWVtYmVyIChzcGFuVHlwZSwgTWVtYmVyRmlsdGVyLkNvbnN0 cnVjdG9yIChQYXJhbWV0ZXJzQ29tcGlsZWQuQ3JlYXRlRnVsbHlSZXNvbHZlZCAoUG9pbnRlckNv bnRhaW5lci5NYWtlVHlwZSAocmMuTW9kdWxlLCByYy5Nb2R1bGUuQ29tcGlsZXIuQnVpbHRpblR5 cGVzLlZvaWQpLCByYy5Nb2R1bGUuQ29tcGlsZXIuQnVpbHRpblR5cGVzLkludCkpLCBCaW5kaW5n UmVzdHJpY3Rpb24uRGVjbGFyZWRPbmx5KSBhcyBNZXRob2RTcGVjOworKwkJCWlmIChjdG9yID09 IG51bGwpCisrCQkJCXJldHVybiBmYWxzZTsKKysJCQkKKysJCQl0aGlzLnR5cGUgPSBzcGFuVHlw ZTsKKysJCQlyZXR1cm4gdHJ1ZTsKKysJCX0KKyAJfQorIAorIAkvLworQEAgLTEzMDkzLDYgKzEz MTU3LDEyIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCWV4cHIuRW1pdCAoZWMpOworIAkJ fQorIAorKwkJcHVibGljIG92ZXJyaWRlIEV4cHJlc3Npb24gQ3JlYXRlRXhwcmVzc2lvblRyZWUg KFJlc29sdmVDb250ZXh0IHJjKQorKwkJeworKwkJCXJjLlJlcG9ydC5FcnJvciAoODE1MywgTG9j YXRpb24sICJBbiBleHByZXNzaW9uIHRyZWUgbGFtYmRhIGNhbm5vdCBjb250YWluIGEgY2FsbCB0 byBhIG1ldGhvZCwgcHJvcGVydHksIG9yIGluZGV4ZXIgdGhhdCByZXR1cm5zIGJ5IHJlZmVyZW5j ZSIpOworKwkJCXJldHVybiBudWxsOworKwkJfQorKworIAkJcHVibGljIHZvaWQgRW1pdCAoRW1p dENvbnRleHQgZWMsIGJvb2wgbGVhdmVfY29weSkKKyAJCXsKKyAJCQlFbWl0IChlYyk7CitAQCAt MTMxMzMsNiArMTMyMDMsMTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCisgCQlwdWJsaWMg b3ZlcnJpZGUgRXhwcmVzc2lvbiBEb1Jlc29sdmVMVmFsdWUgKFJlc29sdmVDb250ZXh0IHJjLCBF eHByZXNzaW9uIHJpZ2h0X3NpZGUpCisgCQl7CisrCQkJaWYgKGV4cHIuQ29udGFpbnNFbWl0V2l0 aEF3YWl0ICgpKSB7CisrCQkJCXJjLlJlcG9ydC5FcnJvciAoODE3OCwgbG9jLCAiYGF3YWl0JyBj YW5ub3QgYmUgdXNlZCBpbiBhbiBleHByZXNzaW9uIGNvbnRhaW5pbmcgYSBjYWxsIHRvIGB7MH0n IGJlY2F1c2UgaXQgcmV0dXJucyBieSByZWZlcmVuY2UiLAorKwkJCQkJZXhwci5HZXRTaWduYXR1 cmVGb3JFcnJvciAoKSk7CisrCQkJfQorKworIAkJCXJldHVybiBEb1Jlc29sdmUgKHJjKTsKKyAJ CX0KKyAKK0BAIC0xMzE0OSw0ICsxMzIyNCw5OCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJ CQlyZXR1cm4gdmlzaXRvci5WaXNpdCAodGhpcyk7CisgCQl9CisgCX0KKysKKysJY2xhc3MgRGVm YXVsdExpdGVyYWxFeHByZXNzaW9uIDogRXhwcmVzc2lvbgorKwl7CisrCQlwdWJsaWMgRGVmYXVs dExpdGVyYWxFeHByZXNzaW9uIChMb2NhdGlvbiBsb2MpCisrCQl7CisrCQkJdGhpcy5sb2MgPSBs b2M7CisrCQl9CisrCisrCQlwdWJsaWMgb3ZlcnJpZGUgRXhwcmVzc2lvbiBDcmVhdGVFeHByZXNz aW9uVHJlZSAoUmVzb2x2ZUNvbnRleHQgZWMpCisrCQl7CisrCQkJdGhyb3cgbmV3IE5vdEltcGxl bWVudGVkRXhjZXB0aW9uICgpOworKwkJfQorKworKwkJcHJvdGVjdGVkIG92ZXJyaWRlIEV4cHJl c3Npb24gRG9SZXNvbHZlIChSZXNvbHZlQ29udGV4dCByYykKKysJCXsKKysJCQl0eXBlID0gSW50 ZXJuYWxUeXBlLkRlZmF1bHRUeXBlOworKwkJCWVjbGFzcyA9IEV4cHJDbGFzcy5WYWx1ZTsKKysJ CQlyZXR1cm4gdGhpczsKKysJCX0KKysKKysJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVtaXQgKEVt aXRDb250ZXh0IGVjKQorKwkJeworKwkJCXRocm93IG5ldyBOb3RTdXBwb3J0ZWRFeGNlcHRpb24g KCk7CisrCQl9CisrCX0KKysKKysJY2xhc3MgRGlzY2FyZCA6IEV4cHJlc3Npb24sIElBc3NpZ25N ZXRob2QsIElNZW1vcnlMb2NhdGlvbgorKwl7CisrCQlwdWJsaWMgRGlzY2FyZCAoTG9jYXRpb24g bG9jKQorKwkJeworKwkJCXRoaXMubG9jID0gbG9jOworKwkJfQorKworKwkJcHVibGljIG92ZXJy aWRlIEV4cHJlc3Npb24gQ3JlYXRlRXhwcmVzc2lvblRyZWUgKFJlc29sdmVDb250ZXh0IHJjKQor KwkJeworKwkJCXJjLlJlcG9ydC5FcnJvciAoODIwNywgbG9jLCAiQW4gZXhwcmVzc2lvbiB0cmVl IGNhbm5vdCBjb250YWluIGEgZGlzY2FyZCIpOworKwkJCXJldHVybiBudWxsOworKwkJfQorKwor KwkJcHJvdGVjdGVkIG92ZXJyaWRlIEV4cHJlc3Npb24gRG9SZXNvbHZlIChSZXNvbHZlQ29udGV4 dCByYykKKysJCXsKKysJCQl0eXBlID0gSW50ZXJuYWxUeXBlLkRpc2NhcmQ7CisrCQkJZWNsYXNz ID0gRXhwckNsYXNzLlZhcmlhYmxlOworKwkJCXJldHVybiB0aGlzOworKwkJfQorKworKwkJcHVi bGljIG92ZXJyaWRlIEV4cHJlc3Npb24gRG9SZXNvbHZlTFZhbHVlIChSZXNvbHZlQ29udGV4dCBy YywgRXhwcmVzc2lvbiByaWdodF9zaWRlKQorKwkJeworKwkJCWlmIChyaWdodF9zaWRlLlR5cGUg PT0gSW50ZXJuYWxUeXBlLkRlZmF1bHRUeXBlKSB7CisrCQkJCXJjLlJlcG9ydC5FcnJvciAoODE4 MywgbG9jLCAiQ2Fubm90IGluZmVyIHRoZSB0eXBlIG9mIGltcGxpY2l0bHktdHlwZWQgZGlzY2Fy ZCIpOworKwkJCQl0eXBlID0gSW50ZXJuYWxUeXBlLkVycm9yVHlwZTsKKysJCQkJcmV0dXJuIHRo aXM7CisrCQkJfQorKworKwkJCWlmIChyaWdodF9zaWRlLlR5cGUuS2luZCA9PSBNZW1iZXJLaW5k LlZvaWQpIHsKKysJCQkJcmMuUmVwb3J0LkVycm9yICg4MjA5LCBsb2MsICJDYW5ub3QgYXNzaWdu IHZvaWQgdG8gYSBkaXNjYXJkIik7CisrCQkJCXR5cGUgPSBJbnRlcm5hbFR5cGUuRXJyb3JUeXBl OworKwkJCQlyZXR1cm4gdGhpczsKKysJCQl9CisrCisrCQkJaWYgKHJpZ2h0X3NpZGUgIT0gRW1w dHlFeHByZXNzaW9uLk91dEFjY2VzcykgeworKwkJCQl0eXBlID0gcmlnaHRfc2lkZS5UeXBlOwor KwkJCX0KKysKKysJCQlyZXR1cm4gdGhpczsKKysJCX0KKysKKysJCXB1YmxpYyBvdmVycmlkZSB2 b2lkIEVtaXQgKEVtaXRDb250ZXh0IGVjKQorKwkJeworKwkJCXRocm93IG5ldyBOb3RJbXBsZW1l bnRlZEV4Y2VwdGlvbiAoKTsKKysJCX0KKysKKysJCXB1YmxpYyB2b2lkIEVtaXQgKEVtaXRDb250 ZXh0IGVjLCBib29sIGxlYXZlX2NvcHkpCisrCQl7CisrCQkJdGhyb3cgbmV3IE5vdEltcGxlbWVu dGVkRXhjZXB0aW9uICgpOworKwkJfQorKworKwkJcHVibGljIHZvaWQgRW1pdEFzc2lnbiAoRW1p dENvbnRleHQgZWMsIEV4cHJlc3Npb24gc291cmNlLCBib29sIGxlYXZlX2NvcHksIGJvb2wgaXND b21wb3VuZCkKKysJCXsKKysJCQlpZiAobGVhdmVfY29weSkKKysJCQkJc291cmNlLkVtaXQgKGVj KTsKKysJCQllbHNlCisrCQkJCXNvdXJjZS5FbWl0U2lkZUVmZmVjdCAoZWMpOworKwkJfQorKwor KwkJcHVibGljIHZvaWQgQWRkcmVzc09mIChFbWl0Q29udGV4dCBlYywgQWRkcmVzc09wIG1vZGUp CisrCQl7CisrCQkJdmFyIHRlbXAgPSBlYy5HZXRUZW1wb3JhcnlMb2NhbCAodHlwZSk7CisrCQkJ ZWMuRW1pdCAoT3BDb2Rlcy5MZGxvY2EsIHRlbXApOworKworKwkJCS8vIFRPRE86IFNob3VsZCBm cmVlIGl0IG9uIG5leHQgc3RhdGVtZW50IGJ1dCBkb24ndCBoYXZlIG1lY2hhbmlzbSBmb3IgdGhh dCB5ZXQKKysJCQkvLyBlYy5GcmVlVGVtcG9yYXJ5TG9jYWwgKHRlbXAsIHR5cGUpOworKwkJfQor Kwl9CisgfQorZGlmZiAtLWdpdCBhL21jcy9tY3MvZ2VuZXJpYy5jcyBiL21jcy9tY3MvZ2VuZXJp Yy5jcworaW5kZXggNjI1Y2QwYzc3M2YuLmVjMjk2NWRmNjNiIDEwMDY0NAorLS0tIGEvbWNzL21j cy9nZW5lcmljLmNzCisrKysgYi9tY3MvbWNzL2dlbmVyaWMuY3MKK0BAIC02OTMsNiArNjkzLDEx IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCQlHZXRTaWduYXR1cmVGb3JFcnJvciAo KSwgbWMuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCksIGlucHV0X3ZhcmlhbmNlLCBndHlwZV92YXJp YW5jZSwgcGFyYW1ldGVycyk7CisgCQl9CisgCisrCQlwdWJsaWMgVHlwZVNwZWMgR2V0QXN5bmNN ZXRob2RCdWlsZGVyICgpCisrCQl7CisrCQkJcmV0dXJuIG51bGw7CisrCQl9CisrCisgCQlwdWJs aWMgVHlwZVNwZWMgR2V0QXR0cmlidXRlQ29DbGFzcyAoKQorIAkJeworIAkJCXJldHVybiBudWxs OworQEAgLTIyOTIsNyArMjI5Nyw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCQlv ayA9IGZhbHNlOworIAkJCQl9CisgCistCQkJCWlmICh0ZS5Jc1BvaW50ZXIgfHwgdGUuSXNTcGVj aWFsUnVudGltZVR5cGUpIHsKKysJCQkJaWYgKHRlLklzUG9pbnRlciB8fCB0ZS5Jc1NwZWNpYWxS dW50aW1lVHlwZSB8fCB0ZS5Jc0J5UmVmTGlrZSkgeworIAkJCQkJZWMuTW9kdWxlLkNvbXBpbGVy LlJlcG9ydC5FcnJvciAoMzA2LCBhcmdzW2ldLkxvY2F0aW9uLAorIAkJCQkJCSJUaGUgdHlwZSBg ezB9JyBtYXkgbm90IGJlIHVzZWQgYXMgYSB0eXBlIGFyZ3VtZW50IiwKKyAJCQkJCQl0ZS5HZXRT aWduYXR1cmVGb3JFcnJvciAoKSk7CitAQCAtMzEwMiw3ICszMTA3LDcgQEAgbmFtZXNwYWNlIE1v bm8uQ1NoYXJwIHsKKyAJCQkvLworIAkJCS8vIFNvbWUgdHlwZXMgY2Fubm90IGJlIHVzZWQgYXMg dHlwZSBhcmd1bWVudHMKKyAJCQkvLworLQkJCWlmICgoYm91bmQuVHlwZS5LaW5kID09IE1lbWJl cktpbmQuVm9pZCAmJiAhdm9pZEFsbG93ZWQpIHx8IGJvdW5kLlR5cGUuSXNQb2ludGVyIHx8IGJv dW5kLlR5cGUuSXNTcGVjaWFsUnVudGltZVR5cGUgfHwKKysJCQlpZiAoKGJvdW5kLlR5cGUuS2lu ZCA9PSBNZW1iZXJLaW5kLlZvaWQgJiYgIXZvaWRBbGxvd2VkKSB8fCBib3VuZC5UeXBlLklzUG9p bnRlciB8fCBib3VuZC5UeXBlLklzU3BlY2lhbFJ1bnRpbWVUeXBlIHx8IGJvdW5kLlR5cGUuSXNC eVJlZkxpa2UgfHwKKyAJCQkgICAgYm91bmQuVHlwZSA9PSBJbnRlcm5hbFR5cGUuTWV0aG9kR3Jv dXAgfHwgYm91bmQuVHlwZSA9PSBJbnRlcm5hbFR5cGUuQW5vbnltb3VzTWV0aG9kIHx8IGJvdW5k LlR5cGUgPT0gSW50ZXJuYWxUeXBlLlZhck91dFR5cGUgfHwKKyAJCQkgICAgYm91bmQuVHlwZSA9 PSBJbnRlcm5hbFR5cGUuVGhyb3dFeHByKQorIAkJCQlyZXR1cm47CitAQCAtMzExMCw2ICszMTE1 LDkgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQlpZiAoYm91bmQuVHlwZS5Jc1R1cGxl VHlwZSAmJiBUdXBsZUxpdGVyYWwuQ29udGFpbnNOb1R5cGVFbGVtZW50IChib3VuZC5UeXBlKSkK KyAJCQkJcmV0dXJuOworIAorKwkJCWlmIChib3VuZC5UeXBlID09IEludGVybmFsVHlwZS5EZWZh dWx0VHlwZSkKKysJCQkJcmV0dXJuOworKworIAkJCXZhciBhID0gYm91bmRzIFtpbmRleF07Cisg CQkJaWYgKGEgPT0gbnVsbCkgeworIAkJCQlhID0gbmV3IExpc3Q8Qm91bmRJbmZvPiAoMik7Citk aWZmIC0tZ2l0IGEvbWNzL21jcy9pbXBvcnQuY3MgYi9tY3MvbWNzL2ltcG9ydC5jcworaW5kZXgg MWNkZGY3YzAxZjQuLmY3YzRmZDc0YjA4IDEwMDY0NAorLS0tIGEvbWNzL21jcy9pbXBvcnQuY3MK KysrKyBiL21jcy9tY3MvaW1wb3J0LmNzCitAQCAtOTc1LDYgKzk3NSwxMCBAQCBuYW1lc3BhY2Ug TW9uby5DU2hhcnAKKyAJCQkJCQltb2QgfD0gTW9kaWZpZXJzLlJFQURPTkxZOworIAkJCQkJfQor IAorKwkJCQkJaWYgKEhhc0F0dHJpYnV0ZSAoQ3VzdG9tQXR0cmlidXRlRGF0YS5HZXRDdXN0b21B dHRyaWJ1dGVzICh0eXBlKSwgIklzQnlSZWZMaWtlQXR0cmlidXRlIiwgQ29tcGlsZXJTZXJ2aWNl c05hbWVzcGFjZSkpIHsKKysJCQkJCQltb2QgfD0gTW9kaWZpZXJzLlJFRjsKKysJCQkJCX0KKysK KyAJCQkJCWJyZWFrOworIAkJCQl9CisgCQkJfQorQEAgLTE0MDEsNiArMTQwNSw3IEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycAorIAkJCXB1YmxpYyBzdHJpbmcgRGVmYXVsdEluZGV4ZXJOYW1lOwor IAkJCXB1YmxpYyBib29sPyBDTFNBdHRyaWJ1dGVWYWx1ZTsKKyAJCQlwdWJsaWMgVHlwZVNwZWMg Q29DbGFzczsKKysJCQlwdWJsaWMgVHlwZVNwZWMgQXN5bmNNZXRob2RCdWlsZGVyOworIAorIAkJ CXN0YXRpYyBib29sIEhhc01pc3NpbmdUeXBlIChDb25zdHJ1Y3RvckluZm8gY3RvcikKKyAJCQl7 CitAQCAtMTUyMiw2ICsxNTI3LDIwIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCQkJCQli YWcuQ29DbGFzcyA9IGltcG9ydGVyLkltcG9ydFR5cGUgKChNZXRhVHlwZSkgYS5Db25zdHJ1Y3Rv ckFyZ3VtZW50c1swXS5WYWx1ZSk7CisgCQkJCQkJCWNvbnRpbnVlOworIAkJCQkJCX0KKysKKysJ CQkJCQlpZiAobmFtZSA9PSAiQXN5bmNNZXRob2RCdWlsZGVyQXR0cmlidXRlIikgeworKwkJCQkJ CQlpZiAoZHQuTmFtZXNwYWNlICE9ICJTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzIikK KysJCQkJCQkJCWNvbnRpbnVlOworKworKwkJCQkJCQlpZiAoSGFzTWlzc2luZ1R5cGUgKGEuQ29u c3RydWN0b3IpKQorKwkJCQkJCQkJY29udGludWU7CisrCisrCQkJCQkJCWlmIChiYWcgPT0gbnVs bCkKKysJCQkJCQkJCWJhZyA9IG5ldyBBdHRyaWJ1dGVzQmFnICgpOworKworKwkJCQkJCQliYWcu QXN5bmNNZXRob2RCdWlsZGVyID0gaW1wb3J0ZXIuSW1wb3J0VHlwZSAoKE1ldGFUeXBlKWEuQ29u c3RydWN0b3JBcmd1bWVudHMgWzBdLlZhbHVlKTsKKysJCQkJCQkJY29udGludWU7CisrCQkJCQkJ fQorIAkJCQkJfQorIAkJCQl9CisgCitAQCAtMjEyOSw2ICsyMTQ4LDE0IEBAIG5hbWVzcGFjZSBN b25vLkNTaGFycAorIAkJCX0KKyAJCX0KKyAKKysJCXB1YmxpYyBUeXBlU3BlYyBHZXRBc3luY01l dGhvZEJ1aWxkZXIgKCkKKysJCXsKKysJCQlpZiAoY2F0dHJzID09IG51bGwpCisrCQkJCVJlYWRB dHRyaWJ1dGVzICgpOworKworKwkJCXJldHVybiBjYXR0cnMuQXN5bmNNZXRob2RCdWlsZGVyOwor KwkJfQorKworIAkJcHVibGljIFR5cGVTcGVjIEdldEF0dHJpYnV0ZUNvQ2xhc3MgKCkKKyAJCXsK KyAJCQlpZiAoY2F0dHJzID09IG51bGwpCitAQCAtMjQ0NSw2ICsyNDcyLDExIEBAIG5hbWVzcGFj ZSBNb25vLkNTaGFycAorIAorIAkJI2VuZHJlZ2lvbgorIAorKwkJcHVibGljIFR5cGVTcGVjIEdl dEFzeW5jTWV0aG9kQnVpbGRlciAoKQorKwkJeworKwkJCXJldHVybiBudWxsOworKwkJfQorKwor IAkJcHVibGljIFR5cGVTcGVjIEdldEF0dHJpYnV0ZUNvQ2xhc3MgKCkKKyAJCXsKKyAJCQlyZXR1 cm4gbnVsbDsKK2RpZmYgLS1naXQgYS9tY3MvbWNzL21lbWJlcmNhY2hlLmNzIGIvbWNzL21jcy9t ZW1iZXJjYWNoZS5jcworaW5kZXggZWViZjcxYjg0NGIuLmNhMDVkMmQ3YWZjIDEwMDY0NAorLS0t IGEvbWNzL21jcy9tZW1iZXJjYWNoZS5jcworKysrIGIvbWNzL21jcy9tZW1iZXJjYWNoZS5jcwor QEAgLTMwOSw3ICszMDksNiBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCQkvLworIAkJ CQlpZiAoIUJ1aWx0aW5UeXBlU3BlYy5Jc1ByaW1pdGl2ZVR5cGUgKGR0KSB8fCBkdC5CdWlsdGlu VHlwZSA9PSBCdWlsdGluVHlwZVNwZWMuVHlwZS5DaGFyKSB7CisgCQkJCQlzd2l0Y2ggKGR0LkJ1 aWx0aW5UeXBlKSB7CistCQkJCQljYXNlIEJ1aWx0aW5UeXBlU3BlYy5UeXBlLlN0cmluZzoKKyAJ CQkJCWNhc2UgQnVpbHRpblR5cGVTcGVjLlR5cGUuRGVsZWdhdGU6CisgCQkJCQljYXNlIEJ1aWx0 aW5UeXBlU3BlYy5UeXBlLk11bHRpY2FzdERlbGVnYXRlOgorIAkJCQkJCWJyZWFrOworQEAgLTMx Nyw2ICszMTYsOSBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCQkJCWlmIChuYW1lID09 IE9wZXJhdG9yLkdldE1ldGFkYXRhTmFtZSAoT3BlcmF0b3IuT3BUeXBlLkltcGxpY2l0KSB8fCBu YW1lID09IE9wZXJhdG9yLkdldE1ldGFkYXRhTmFtZSAoT3BlcmF0b3IuT3BUeXBlLkV4cGxpY2l0 KSkgeworIAkJCQkJCQlzdGF0ZSB8PSBTdGF0ZUZsYWdzLkhhc0NvbnZlcnNpb25PcGVyYXRvcjsK KyAJCQkJCQl9IGVsc2UgeworKwkJCQkJCQlpZiAoZHQuQnVpbHRpblR5cGUgPT0gQnVpbHRpblR5 cGVTcGVjLlR5cGUuU3RyaW5nKQorKwkJCQkJCQkJYnJlYWs7CisrCisgCQkJCQkJCXN0YXRlIHw9 IFN0YXRlRmxhZ3MuSGFzVXNlck9wZXJhdG9yOworIAkJCQkJCX0KKyAKK2RpZmYgLS1naXQgYS9t Y3MvbWNzL21ldGhvZC5jcyBiL21jcy9tY3MvbWV0aG9kLmNzCitpbmRleCBjY2Q0ODk4ZTkxYy4u MWZjYTEwZGQ2ZDAgMTAwNjQ0CistLS0gYS9tY3MvbWNzL21ldGhvZC5jcworKysrIGIvbWNzL21j cy9tZXRob2QuY3MKK0BAIC03MDEsNiArNzAxLDEwIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7 CisgCQkJaWYgKE1lbWJlclR5cGUuSXNTdGF0aWMpIHsKKyAJCQkJRXJyb3JfU3RhdGljUmV0dXJu VHlwZSAoKTsKKyAJCQl9CisrCisrCQkJaWYgKE1lbWJlclR5cGUuSXNTcGVjaWFsUnVudGltZVR5 cGUgJiYgQ29tcGlsZXIuU2V0dGluZ3MuU3RkTGliKSB7CisrCQkJCUVycm9yX1JldHVyblR5cGVD YW50QmVSZWZBbnkgKExvY2F0aW9uLCBSZXR1cm5UeXBlLCBSZXBvcnQpOworKwkJCX0KKyAJCX0K KyAKKyAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVtaXQgKCkKK0BAIC03MTYsNiArNzIwLDggQEAg bmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQkJTW9kdWxlLlByZWRlZmluZWRBdHRyaWJ1dGVz LkR5bmFtaWMuRW1pdEF0dHJpYnV0ZSAoQ3JlYXRlUmV0dXJuQnVpbGRlciAoKS5CdWlsZGVyKTsK KyAJCQl9IGVsc2UgaWYgKFJldHVyblR5cGUuSGFzRHluYW1pY0VsZW1lbnQpIHsKKyAJCQkJTW9k dWxlLlByZWRlZmluZWRBdHRyaWJ1dGVzLkR5bmFtaWMuRW1pdEF0dHJpYnV0ZSAoQ3JlYXRlUmV0 dXJuQnVpbGRlciAoKS5CdWlsZGVyLCBSZXR1cm5UeXBlLCBMb2NhdGlvbik7CisrCQkJfSBlbHNl IGlmIChSZXR1cm5UeXBlIGlzIFJlYWRPbmx5UmVmZXJlbmNlQ29udGFpbmVyKSB7CisrCQkJCU1v ZHVsZS5QcmVkZWZpbmVkQXR0cmlidXRlcy5Jc1JlYWRPbmx5LkVtaXRBdHRyaWJ1dGUgKENyZWF0 ZVJldHVybkJ1aWxkZXIgKCkuQnVpbGRlcik7CisgCQkJfQorIAorIAkJCWlmIChSZXR1cm5UeXBl Lkhhc05hbWVkVHVwbGVFbGVtZW50KSB7CitAQCAtNzY0LDYgKzc3MCwxMSBAQCBuYW1lc3BhY2Ug TW9uby5DU2hhcnAgeworIAkJCQlHZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CisgCQl9CisgCisr CQlwdWJsaWMgc3RhdGljIHZvaWQgRXJyb3JfUmV0dXJuVHlwZUNhbnRCZVJlZkFueSAoTG9jYXRp b24gbG9jLCBUeXBlU3BlYyB0LCBSZXBvcnQgUmVwb3J0KQorKwkJeworKwkJCVJlcG9ydC5FcnJv ciAoMTU5OSwgbG9jLCAiVGhlIHJldHVybiB0eXBlIG9mIGB7MH0nIGlzIG5vdCBhbGxvd2VkIiwg dC5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CisrCQl9CisrCisgCQlwdWJsaWMgYm9vbCBJc1Bh cnRpYWxEZWZpbml0aW9uIHsKKyAJCQlnZXQgeworIAkJCQlyZXR1cm4gKE1vZEZsYWdzICYgTW9k aWZpZXJzLlBBUlRJQUwpICE9IDAgJiYgQmxvY2sgPT0gbnVsbDsKK0BAIC0xMjMxLDExICsxMjQy LDYgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQkJCSJJbnRyb2R1Y2luZyBgRmluYWxp emUnIG1ldGhvZCBjYW4gaW50ZXJmZXJlIHdpdGggZGVzdHJ1Y3RvciBpbnZvY2F0aW9uLiBEaWQg eW91IGludGVuZCB0byBkZWNsYXJlIGEgZGVzdHJ1Y3Rvcj8iKTsKKyAJCQl9CisgCistCQkJaWYg KENvbXBpbGVyLlNldHRpbmdzLlN0ZExpYiAmJiBSZXR1cm5UeXBlLklzU3BlY2lhbFJ1bnRpbWVU eXBlKSB7CistCQkJCUVycm9yMTU5OSAoTG9jYXRpb24sIFJldHVyblR5cGUsIFJlcG9ydCk7Cist CQkJCXJldHVybiBmYWxzZTsKKy0JCQl9CistCisgCQkJaWYgKEN1cnJlbnRUeXBlUGFyYW1ldGVy cyA9PSBudWxsKSB7CisgCQkJCWlmIChiYXNlX21ldGhvZCAhPSBudWxsICYmICFJc0V4cGxpY2l0 SW1wbCkgeworIAkJCQkJaWYgKHBhcmFtZXRlcnMuQ291bnQgPT0gMSAmJiBQYXJhbWV0ZXJUeXBl c1swXS5CdWlsdGluVHlwZSA9PSBCdWlsdGluVHlwZVNwZWMuVHlwZS5PYmplY3QgJiYgTWVtYmVy TmFtZS5OYW1lID09ICJFcXVhbHMiKQorQEAgLTEyNjEsOCArMTI2Nyw5IEBAIG5hbWVzcGFjZSBN b25vLkNTaGFycCB7CisgCQkJCWlmICgoTW9kRmxhZ3MgJiBNb2RpZmllcnMuQVNZTkMpICE9IDAp IHsKKyAJCQkJCWlmIChSZXR1cm5UeXBlLktpbmQgIT0gTWVtYmVyS2luZC5Wb2lkICYmCisgCQkJ CQkJUmV0dXJuVHlwZSAhPSBNb2R1bGUuUHJlZGVmaW5lZFR5cGVzLlRhc2suVHlwZVNwZWMgJiYK Ky0JCQkJCQkhUmV0dXJuVHlwZS5Jc0dlbmVyaWNUYXNrKSB7CistCQkJCQkJUmVwb3J0LkVycm9y ICgxOTgzLCBMb2NhdGlvbiwgIlRoZSByZXR1cm4gdHlwZSBvZiBhbiBhc3luYyBtZXRob2QgbXVz dCBiZSB2b2lkLCBUYXNrLCBvciBUYXNrPFQ+Iik7CisrCQkJCQkJIVJldHVyblR5cGUuSXNHZW5l cmljVGFzayAmJgorKwkJCQkJICAgICFSZXR1cm5UeXBlLklzQ3VzdG9tVGFza1R5cGUgKCkpIHsK KysJCQkJCQlSZXBvcnQuRXJyb3IgKDE5ODMsIExvY2F0aW9uLCAiVGhlIHJldHVybiB0eXBlIG9m IGFuIGFzeW5jIG1ldGhvZCBtdXN0IGJlIHZvaWQgb3IgdGFzayB0eXBlIik7CisgCQkJCQl9Cisg CisgCQkJCQlibG9jayA9IChUb3BsZXZlbEJsb2NrKSBibG9jay5Db252ZXJ0VG9Bc3luY1Rhc2sg KHRoaXMsIFBhcmVudC5QYXJ0aWFsQ29udGFpbmVyLCBwYXJhbWV0ZXJzLCBSZXR1cm5UeXBlLCBu dWxsLCBMb2NhdGlvbik7CitAQCAtMTM5NiwxMSArMTQwMyw2IEBAIG5hbWVzcGFjZSBNb25vLkNT aGFycCB7CisgCQkJcmV0dXJuIGJhc2UuRW5hYmxlT3ZlcmxvYWRDaGVja3MgKG92ZXJsb2FkKTsK KyAJCX0KKyAKKy0JCXB1YmxpYyBzdGF0aWMgdm9pZCBFcnJvcjE1OTkgKExvY2F0aW9uIGxvYywg VHlwZVNwZWMgdCwgUmVwb3J0IFJlcG9ydCkKKy0JCXsKKy0JCQlSZXBvcnQuRXJyb3IgKDE1OTks IGxvYywgIk1ldGhvZCBvciBkZWxlZ2F0ZSBjYW5ub3QgcmV0dXJuIHR5cGUgYHswfSciLCB0Lkdl dFNpZ25hdHVyZUZvckVycm9yICgpKTsKKy0JCX0KKy0KKyAJCXByb3RlY3RlZCBvdmVycmlkZSBi b29sIFJlc29sdmVNZW1iZXJUeXBlICgpCisgCQl7CisgCQkJaWYgKEN1cnJlbnRUeXBlUGFyYW1l dGVycyAhPSBudWxsKSB7CitAQCAtMjQ2Nyw2ICsyNDY5LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1No YXJwIHsKKyAJCQkJTW9kdWxlLlByZWRlZmluZWRBdHRyaWJ1dGVzLkR5bmFtaWMuRW1pdEF0dHJp YnV0ZSAoQ3JlYXRlUmV0dXJuQnVpbGRlciAoKS5CdWlsZGVyKTsKKyAJCQl9IGVsc2UgaWYgKFJl dHVyblR5cGUuSGFzRHluYW1pY0VsZW1lbnQpIHsKKyAJCQkJTW9kdWxlLlByZWRlZmluZWRBdHRy aWJ1dGVzLkR5bmFtaWMuRW1pdEF0dHJpYnV0ZSAoQ3JlYXRlUmV0dXJuQnVpbGRlciAoKS5CdWls ZGVyLCBSZXR1cm5UeXBlLCBMb2NhdGlvbik7CisrCQkJfSBlbHNlIGlmIChSZXR1cm5UeXBlIGlz IFJlYWRPbmx5UmVmZXJlbmNlQ29udGFpbmVyKSB7CisrCQkJCU1vZHVsZS5QcmVkZWZpbmVkQXR0 cmlidXRlcy5Jc1JlYWRPbmx5LkVtaXRBdHRyaWJ1dGUgKENyZWF0ZVJldHVybkJ1aWxkZXIgKCku QnVpbGRlcik7CisgCQkJfQorIAorIAkJCWlmIChSZXR1cm5UeXBlLkhhc05hbWVkVHVwbGVFbGVt ZW50KSB7CitkaWZmIC0tZ2l0IGEvbWNzL21jcy9tb2RpZmllcnMuY3MgYi9tY3MvbWNzL21vZGlm aWVycy5jcworaW5kZXggYmZhZTU5ODVhMDMuLjkyNmFiNWQxODQ4IDEwMDY0NAorLS0tIGEvbWNz L21jcy9tb2RpZmllcnMuY3MKKysrKyBiL21jcy9tY3MvbW9kaWZpZXJzLmNzCitAQCAtNTMsNiAr NTMsNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCURFQlVHR0VSX0hJRERFTgkJCT0gMHg0 MDAwMDAsCisgCQlERUJVR0dFUl9TVEVQX1RIUk9VR0gJPSAweDgwMDAwMCwKKyAJCUF1dG9Qcm9w ZXJ0eQkJCT0gMHgxMDAwMDAwLAorKwkJUkVGICAgICAgICAgICAgICAgICAgICAgPSAweDIwMDAw MDAsCisgCisgCQlBY2Nlc3NpYmlsaXR5TWFzayA9IFBVQkxJQyB8IFBST1RFQ1RFRCB8IElOVEVS TkFMIHwgUFJJVkFURSwKKyAJCUFsbG93ZWRFeHBsaWNpdEltcGxGbGFncyA9IFVOU0FGRSB8IEVY VEVSTiwKK2RpZmYgLS1naXQgYS9tY3MvbWNzL21vZHVsZS5jcyBiL21jcy9tY3MvbW9kdWxlLmNz CitpbmRleCAwMGFmYWM2YzYwNC4uMjI5M2Q4MjViMzYgMTAwNjQ0CistLS0gYS9tY3MvbWNzL21v ZHVsZS5jcworKysrIGIvbWNzL21jcy9tb2R1bGUuY3MKK0BAIC0yNjUsNiArMjY1LDcgQEAgbmFt ZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQlyZWFkb25seSBEaWN0aW9uYXJ5PEFycmF5Q29udGFpbmVy LlR5cGVSYW5rUGFpciwgQXJyYXlDb250YWluZXI+IGFycmF5X3R5cGVzOworIAkJcmVhZG9ubHkg RGljdGlvbmFyeTxUeXBlU3BlYywgUG9pbnRlckNvbnRhaW5lcj4gcG9pbnRlcl90eXBlczsKKyAJ CXJlYWRvbmx5IERpY3Rpb25hcnk8VHlwZVNwZWMsIFJlZmVyZW5jZUNvbnRhaW5lcj4gcmVmZXJl bmNlX3R5cGVzOworKwkJcmVhZG9ubHkgRGljdGlvbmFyeTxUeXBlU3BlYywgUmVhZE9ubHlSZWZl cmVuY2VDb250YWluZXI+IHJlYWRvbmx5X3JlZmVyZW5jZV90eXBlczsKKyAJCXJlYWRvbmx5IERp Y3Rpb25hcnk8VHlwZVNwZWMsIE1ldGhvZFNwZWM+IGF0dHJzX2NhY2hlOworIAkJcmVhZG9ubHkg RGljdGlvbmFyeTxUeXBlU3BlYywgQXdhaXRlckRlZmluaXRpb24+IGF3YWl0ZXJzOworIAkJcmVh ZG9ubHkgRGljdGlvbmFyeTxUeXBlU3BlYywgVHlwZUluZm8+IHR5cGVfaW5mb19jYWNoZTsKK0BA IC0zMDEsNiArMzAyLDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJYXJyYXlfdHlwZXMg PSBuZXcgRGljdGlvbmFyeTxBcnJheUNvbnRhaW5lci5UeXBlUmFua1BhaXIsIEFycmF5Q29udGFp bmVyPiAoKTsKKyAJCQlwb2ludGVyX3R5cGVzID0gbmV3IERpY3Rpb25hcnk8VHlwZVNwZWMsIFBv aW50ZXJDb250YWluZXI+ICgpOworIAkJCXJlZmVyZW5jZV90eXBlcyA9IG5ldyBEaWN0aW9uYXJ5 PFR5cGVTcGVjLCBSZWZlcmVuY2VDb250YWluZXI+ICgpOworKwkJCXJlYWRvbmx5X3JlZmVyZW5j ZV90eXBlcyA9IG5ldyBEaWN0aW9uYXJ5PFR5cGVTcGVjLCBSZWFkT25seVJlZmVyZW5jZUNvbnRh aW5lcj4gKCk7CisgCQkJYXR0cnNfY2FjaGUgPSBuZXcgRGljdGlvbmFyeTxUeXBlU3BlYywgTWV0 aG9kU3BlYz4gKCk7CisgCQkJYXdhaXRlcnMgPSBuZXcgRGljdGlvbmFyeTxUeXBlU3BlYywgQXdh aXRlckRlZmluaXRpb24+ICgpOworIAkJCXR5cGVfaW5mb19jYWNoZSA9IG5ldyBEaWN0aW9uYXJ5 PFR5cGVTcGVjLCBUeXBlSW5mbz4gKCk7CitAQCAtNDI3LDYgKzQyOSwxMiBAQCBuYW1lc3BhY2Ug TW9uby5DU2hhcnAKKyAJCQl9CisgCQl9CisgCisrCQlpbnRlcm5hbCBEaWN0aW9uYXJ5PFR5cGVT cGVjLCBSZWFkT25seVJlZmVyZW5jZUNvbnRhaW5lcj4gUmVhZG9ubHlSZWZlcmVuY2VUeXBlc0Nh Y2hlIHsKKysJCQlnZXQgeworKwkJCQlyZXR1cm4gcmVhZG9ubHlfcmVmZXJlbmNlX3R5cGVzOwor KwkJCX0KKysJCX0KKysKKyAJCWludGVybmFsIERpY3Rpb25hcnk8VHlwZVNwZWMsIFR5cGVJbmZv PiBUeXBlSW5mb0NhY2hlIHsKKyAJCQlnZXQgeworIAkJCQlyZXR1cm4gdHlwZV9pbmZvX2NhY2hl OworZGlmZiAtLWdpdCBhL21jcy9tY3MvcGFyYW1ldGVyLmNzIGIvbWNzL21jcy9wYXJhbWV0ZXIu Y3MKK2luZGV4IDJiZDJhNDk4YTkxLi5jYzEwZWVlMTYyYiAxMDA2NDQKKy0tLSBhL21jcy9tY3Mv cGFyYW1ldGVyLmNzCisrKysgYi9tY3MvbWNzL3BhcmFtZXRlci5jcworQEAgLTE0NDcsNyArMTQ0 Nyw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCisgCQkJZXhwciA9IENoaWxkOworIAor LQkJCWlmICghKGV4cHIgaXMgQ29uc3RhbnQgfHwgZXhwciBpcyBEZWZhdWx0VmFsdWVFeHByZXNz aW9uIHx8IChleHByIGlzIE5ldyAmJiAoKE5ldykgZXhwcikuSXNHZW5lcmF0ZWRTdHJ1Y3RDb25z dHJ1Y3RvcikpKSB7CisrCQkJaWYgKCEoZXhwciBpcyBDb25zdGFudCB8fCBleHByIGlzIERlZmF1 bHRWYWx1ZUV4cHJlc3Npb24gfHwgZXhwciBpcyBEZWZhdWx0TGl0ZXJhbEV4cHJlc3Npb24gfHwg KGV4cHIgaXMgTmV3ICYmICgoTmV3KSBleHByKS5Jc0dlbmVyYXRlZFN0cnVjdENvbnN0cnVjdG9y KSkpIHsKKyAJCQkJaWYgKCEoZXhwciBpcyBFcnJvckV4cHJlc3Npb24pKSB7CisgCQkJCQlyYy5S ZXBvcnQuRXJyb3IgKDE3MzYsIExvY2F0aW9uLAorIAkJCQkJCSJUaGUgZXhwcmVzc2lvbiBiZWlu ZyBhc3NpZ25lZCB0byBvcHRpb25hbCBwYXJhbWV0ZXIgYHswfScgbXVzdCBiZSBhIGNvbnN0YW50 IG9yIGRlZmF1bHQgdmFsdWUiLAorZGlmZiAtLWdpdCBhL21jcy9tY3Mvc3RhdGVtZW50LmNzIGIv bWNzL21jcy9zdGF0ZW1lbnQuY3MKK2luZGV4IDU4YmEyNzk1ZTRiLi45YzUxMTI4NTQ4ZiAxMDA2 NDQKKy0tLSBhL21jcy9tY3Mvc3RhdGVtZW50LmNzCisrKysgYi9tY3MvbWNzL3N0YXRlbWVudC5j cworQEAgLTExNjAsNyArMTE2MCw4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCS8v CisgCQkJCWlmIChlYy5DdXJyZW50QW5vbnltb3VzTWV0aG9kIGlzIEFzeW5jSW5pdGlhbGl6ZXIp IHsKKyAJCQkJCXZhciBzdG9yZXkgPSAoQXN5bmNUYXNrU3RvcmV5KSBlYy5DdXJyZW50QW5vbnlt b3VzTWV0aG9kLlN0b3JleTsKKy0JCQkJCWlmIChzdG9yZXkuUmV0dXJuVHlwZSA9PSBlYy5Nb2R1 bGUuUHJlZGVmaW5lZFR5cGVzLlRhc2suVHlwZVNwZWMpIHsKKysJCQkJCXZhciBzX3JldHVybl90 eXBlID0gc3RvcmV5LlJldHVyblR5cGU7CisrCQkJCQlpZiAoc19yZXR1cm5fdHlwZSA9PSBlYy5N b2R1bGUuUHJlZGVmaW5lZFR5cGVzLlRhc2suVHlwZVNwZWMpIHsKKyAJCQkJCQkvLworIAkJCQkJ CS8vIEV4dHJhIHRyaWNrIG5vdCB0byBlbWl0IHJldC9sZWF2ZSBpbnNpZGUgYXdhaXRlciBib2R5 CisgCQkJCQkJLy8KK0BAIC0xMTY4LDggKzExNjksOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAg eworIAkJCQkJCXJldHVybiB0cnVlOworIAkJCQkJfQorIAorLQkJCQkJaWYgKHN0b3JleS5SZXR1 cm5UeXBlLklzR2VuZXJpY1Rhc2spCistCQkJCQkJYmxvY2tfcmV0dXJuX3R5cGUgPSBzdG9yZXku UmV0dXJuVHlwZS5UeXBlQXJndW1lbnRzWzBdOworKwkJCQkJaWYgKHNfcmV0dXJuX3R5cGUuSXNH ZW5lcmljVGFzayB8fCAoc19yZXR1cm5fdHlwZS5Bcml0eSA9PSAxICYmIHNfcmV0dXJuX3R5cGUu SXNDdXN0b21UYXNrVHlwZSAoKSkpCisrCQkJCQkgICAgYmxvY2tfcmV0dXJuX3R5cGUgPSBzX3Jl dHVybl90eXBlLlR5cGVBcmd1bWVudHNbMF07CisgCQkJCX0KKyAKKyAJCQkJaWYgKGVjLkN1cnJl bnRJdGVyYXRvciAhPSBudWxsKSB7CitAQCAtMTIyMCw3ICsxMjIxLDcgQEAgbmFtZXNwYWNlIE1v bm8uQ1NoYXJwIHsKKyAJCQkJCQkJcmV0dXJuIGZhbHNlOworIAkJCQkJCX0KKyAKKy0JCQkJCQlp ZiAoIWFzeW5jX3R5cGUuSXNHZW5lcmljVGFzaykgeworKwkJCQkJCWlmICghYXN5bmNfdHlwZS5J c0dlbmVyaWMpIHsKKyAJCQkJCQkJaWYgKHRoaXMgaXMgQ29udGV4dHVhbFJldHVybikKKyAJCQkJ CQkJCXJldHVybiB0cnVlOworIAorQEAgLTIzNjgsNyArMjM2OSwxMiBAQCBuYW1lc3BhY2UgTW9u by5DU2hhcnAgeworIAkJCWlmIChpbml0aWFsaXplciA9PSBudWxsKQorIAkJCQlyZXR1cm4gbnVs bDsKKyAKKy0JCQl2YXIgYyA9IGluaXRpYWxpemVyIGFzIENvbnN0YW50OworKwkJCUNvbnN0YW50 IGM7CisrCQkJaWYgKGluaXRpYWxpemVyLlR5cGUgPT0gSW50ZXJuYWxUeXBlLkRlZmF1bHRUeXBl KQorKwkJCQljID0gTmV3LkNvbnN0YW50aWZ5IChsaS5UeXBlLCBpbml0aWFsaXplci5Mb2NhdGlv bik7CisrCQkJZWxzZQorKwkJCQljID0gaW5pdGlhbGl6ZXIgYXMgQ29uc3RhbnQ7CisrCisgCQkJ aWYgKGMgPT0gbnVsbCkgeworIAkJCQlpbml0aWFsaXplci5FcnJvcl9FeHByZXNzaW9uTXVzdEJl Q29uc3RhbnQgKGJjLCBpbml0aWFsaXplci5Mb2NhdGlvbiwgbGkuTmFtZSk7CisgCQkJCXJldHVy biBudWxsOworQEAgLTI0MDcsMTQgKzI0MTMsMTQgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsK KyAJCQlBZGRyZXNzVGFrZW4gPSAxIDw8IDIsCisgCQkJQ29tcGlsZXJHZW5lcmF0ZWQgPSAxIDw8 IDMsCisgCQkJQ29uc3RhbnQgPSAxIDw8IDQsCistCQkJRm9yZWFjaFZhcmlhYmxlID0gMSA8PCA1 LAorLQkJCUZpeGVkVmFyaWFibGUgPSAxIDw8IDYsCistCQkJVXNpbmdWYXJpYWJsZSA9IDEgPDwg NywKKysJCQlGb3JlYWNoVmFyaWFibGUgPSAxIDw8IDUgfCBSZWFkb25seU1hc2ssCisrCQkJRml4 ZWRWYXJpYWJsZSA9IDEgPDwgNiB8IFJlYWRvbmx5TWFzaywKKysJCQlVc2luZ1ZhcmlhYmxlID0g MSA8PCA3IHwgUmVhZG9ubHlNYXNrLAorIAkJCUlzTG9ja2VkID0gMSA8PCA4LAorIAkJCVN5bWJv bEZpbGVIaWRkZW4gPSAxIDw8IDksCisgCQkJQnlSZWYgPSAxIDw8IDEwLAorIAorLQkJCVJlYWRv bmx5TWFzayA9IEZvcmVhY2hWYXJpYWJsZSB8IEZpeGVkVmFyaWFibGUgfCBVc2luZ1ZhcmlhYmxl CisrCQkJUmVhZG9ubHlNYXNrID0gMSA8PCAyMAorIAkJfQorIAorIAkJVHlwZVNwZWMgdHlwZTsK K0BAIC0yNTM0LDcgKzI1NDAsNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAorIAkJcHVi bGljIGJvb2wgSXNGaXhlZCB7CisgCQkJZ2V0IHsKKy0JCQkJcmV0dXJuIChmbGFncyAmIEZsYWdz LkZpeGVkVmFyaWFibGUpICE9IDA7CisrCQkJCXJldHVybiAoZmxhZ3MgJiBGbGFncy5GaXhlZFZh cmlhYmxlKSA9PSBGbGFncy5GaXhlZFZhcmlhYmxlOworIAkJCX0KKyAJCQlzZXQgeworIAkJCQlm bGFncyA9IHZhbHVlID8gZmxhZ3MgfCBGbGFncy5GaXhlZFZhcmlhYmxlIDogZmxhZ3MgJiB+Rmxh Z3MuRml4ZWRWYXJpYWJsZTsKK0BAIC0yNjcyLDcgKzI2NzgsNyBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAgeworIAorIAkJcHVibGljIHN0cmluZyBHZXRSZWFkT25seUNvbnRleHQgKCkKKyAJCXsK Ky0JCQlzd2l0Y2ggKGZsYWdzICYgRmxhZ3MuUmVhZG9ubHlNYXNrKSB7CisrCQkJc3dpdGNoIChm bGFncyAmIChGbGFncy5Gb3JlYWNoVmFyaWFibGUgfCBGbGFncy5GaXhlZFZhcmlhYmxlIHwgRmxh Z3MuVXNpbmdWYXJpYWJsZSkpIHsKKyAJCQljYXNlIEZsYWdzLkZpeGVkVmFyaWFibGU6CisgCQkJ CXJldHVybiAiZml4ZWQgdmFyaWFibGUiOworIAkJCWNhc2UgRmxhZ3MuRm9yZWFjaFZhcmlhYmxl OgorQEAgLTgxOTEsNyArODE5Nyw5IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCX0K KyAKKyAJCQkJaWYgKGlmYWNlX2NhbmRpZGF0ZSA9PSBudWxsKSB7CistCQkJCQlpZiAoZXhwci5U eXBlICE9IEludGVybmFsVHlwZS5FcnJvclR5cGUpIHsKKysJCQkJCWlmIChleHByLlR5cGUgPT0g SW50ZXJuYWxUeXBlLkRlZmF1bHRUeXBlKSB7CisrCQkJCQkJcmMuUmVwb3J0LkVycm9yICg4MzEy LCBsb2MsICJVc2Ugb2YgZGVmYXVsdCBsaXRlcmFsIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRl eHQiKTsKKysJCQkJCX0gZWxzZSBpZiAoZXhwci5UeXBlICE9IEludGVybmFsVHlwZS5FcnJvclR5 cGUpIHsKKyAJCQkJCQlyYy5SZXBvcnQuRXJyb3IgKDE1NzksIGxvYywKKyAJCQkJCQkJImZvcmVh Y2ggc3RhdGVtZW50IGNhbm5vdCBvcGVyYXRlIG9uIHZhcmlhYmxlcyBvZiB0eXBlIGB7MH0nIGJl Y2F1c2UgaXQgZG9lcyBub3QgY29udGFpbiBhIGRlZmluaXRpb24gZm9yIGB7MX0nIG9yIGlzIGlu YWNjZXNzaWJsZSIsCisgCQkJCQkJCWV4cHIuVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSwg IkdldEVudW1lcmF0b3IiKTsKK2RpZmYgLS1naXQgYS9tY3MvbWNzL3R1cGxlcy5jcyBiL21jcy9t Y3MvdHVwbGVzLmNzCitpbmRleCBiYjdmYWY3MzRkZi4uOTAxZWZkYzk1NDEgMTAwNjQ0CistLS0g YS9tY3MvbWNzL3R1cGxlcy5jcworKysrIGIvbWNzL21jcy90dXBsZXMuY3MKK0BAIC00MzIsNyAr NDMyLDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCXsKKyAJCUV4cHJlc3Npb24gc291cmNl OworIAkJTGlzdDxFeHByZXNzaW9uPiB0YXJnZXRFeHByczsKKy0JCUxpc3Q8TG9jYWxWYXJpYWJs ZT4gdmFyaWFibGVzVG9JbmZlcjsKKysJCUxpc3Q8QmxvY2tWYXJpYWJsZT4gdmFyaWFibGVzOwor IAkJRXhwcmVzc2lvbiBpbnN0YW5jZTsKKyAKKyAJCXB1YmxpYyBUdXBsZURlY29uc3RydWN0IChM aXN0PEV4cHJlc3Npb24+IHRhcmdldEV4cHJzLCBFeHByZXNzaW9uIHNvdXJjZSwgTG9jYXRpb24g bG9jKQorQEAgLTQ0MiwxMCArNDQyLDExIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCXRo aXMubG9jID0gbG9jOworIAkJfQorIAorLQkJcHVibGljIFR1cGxlRGVjb25zdHJ1Y3QgKExpc3Q8 RXhwcmVzc2lvbj4gdGFyZ2V0RXhwcnMsIExpc3Q8TG9jYWxWYXJpYWJsZT4gdmFyaWFibGVzLCBF eHByZXNzaW9uIHNvdXJjZSwgTG9jYXRpb24gbG9jKQorLQkJCTogdGhpcyAodGFyZ2V0RXhwcnMs IHNvdXJjZSwgbG9jKQorKwkJcHVibGljIFR1cGxlRGVjb25zdHJ1Y3QgKExpc3Q8QmxvY2tWYXJp YWJsZT4gdmFyaWFibGVzLCBFeHByZXNzaW9uIHNvdXJjZSwgTG9jYXRpb24gbG9jKQorIAkJewor LQkJCXRoaXMudmFyaWFibGVzVG9JbmZlciA9IHZhcmlhYmxlczsKKysJCQl0aGlzLnNvdXJjZSA9 IHNvdXJjZTsKKysJCQl0aGlzLnZhcmlhYmxlcyA9IHZhcmlhYmxlczsKKysJCQl0aGlzLmxvYyA9 IGxvYzsKKyAJCX0KKyAKKyAJCXB1YmxpYyBvdmVycmlkZSBFeHByZXNzaW9uIENyZWF0ZUV4cHJl c3Npb25UcmVlIChSZXNvbHZlQ29udGV4dCBlYykKK0BAIC00NjksOSArNDcwLDE4IEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycAorIAkJCXZhciBzcmNfdHlwZSA9IHNyYy5UeXBlOworIAorIAkJCWlm IChzcmNfdHlwZS5Jc1R1cGxlVHlwZSkgeworLQkJCQlpZiAoc3JjX3R5cGUuQXJpdHkgIT0gdGFy Z2V0RXhwcnMuQ291bnQpIHsKKysJCQkJaW50IHRhcmdldF9jb3VudDsKKysKKysJCQkJaWYgKHRh cmdldEV4cHJzID09IG51bGwpIHsKKysJCQkJCXRhcmdldF9jb3VudCA9IHZhcmlhYmxlcy5Db3Vu dDsKKysJCQkJCXRhcmdldEV4cHJzID0gbmV3IExpc3Q8RXhwcmVzc2lvbj4gKHRhcmdldF9jb3Vu dCk7CisrCQkJCX0gZWxzZSB7CisrCQkJCQl0YXJnZXRfY291bnQgPSB0YXJnZXRFeHBycy5Db3Vu dDsKKysJCQkJfQorKworKwkJCQlpZiAoc3JjX3R5cGUuQXJpdHkgIT0gdGFyZ2V0X2NvdW50KSB7 CisgCQkJCQlyYy5SZXBvcnQuRXJyb3IgKDgxMzIsIGxvYywgIkNhbm5vdCBkZWNvbnN0cnVjdCBh IHR1cGxlIG9mIGB7MH0nIGVsZW1lbnRzIGludG8gYHsxfScgdmFyaWFibGVzIiwKKy0JCQkJCQlz cmNfdHlwZS5Bcml0eS5Ub1N0cmluZyAoKSwgdGFyZ2V0RXhwcnMuQ291bnQuVG9TdHJpbmcgKCkp OworKwkJCQkJCXNyY190eXBlLkFyaXR5LlRvU3RyaW5nIChDdWx0dXJlSW5mby5JbnZhcmlhbnRD dWx0dXJlKSwgdGFyZ2V0X2NvdW50LlRvU3RyaW5nIChDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0 dXJlKSk7CisgCQkJCQlyZXR1cm4gbnVsbDsKKyAJCQkJfQorIAorQEAgLTQ4MiwyNyArNDkyLDQ0 IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCQkJaW5zdGFuY2UgPSBleHByX3ZhcmlhYmxl LkNyZWF0ZVJlZmVyZW5jZUV4cHJlc3Npb24gKHJjLCBsb2MpOworIAkJCQl9CisgCistCQkJCWZv ciAoaW50IGkgPSAwOyBpIDwgdGFyZ2V0RXhwcnMuQ291bnQ7ICsraSkgeworKwkJCQlmb3IgKGlu dCBpID0gMDsgaSA8IHRhcmdldF9jb3VudDsgKytpKSB7CisgCQkJCQl2YXIgdGxlID0gc3JjX3R5 cGUuVHlwZUFyZ3VtZW50cyBbaV07CisgCistCQkJCQl2YXIgbHYgPSB2YXJpYWJsZXNUb0luZmVy PyBbaV07CistCQkJCQlpZiAobHYgIT0gbnVsbCkgeworLQkJCQkJCWlmIChJbnRlcm5hbFR5cGUu SGFzTm9UeXBlICh0bGUpKSB7CistCQkJCQkJCXJjLlJlcG9ydC5FcnJvciAoODEzMCwgTG9jYXRp b24sICJDYW5ub3QgaW5mZXIgdGhlIHR5cGUgb2YgaW1wbGljaXRseS10eXBlZCBkZWNvbnN0cnVj dGlvbiB2YXJpYWJsZSBgezB9JyIsIGx2Lk5hbWUpOworLQkJCQkJCQlsdi5UeXBlID0gSW50ZXJu YWxUeXBlLkVycm9yVHlwZTsKKysJCQkJCWlmICh2YXJpYWJsZXMgIT0gbnVsbCkgeworKwkJCQkJ CXZhciB2YXJpYWJsZSA9IHZhcmlhYmxlcyBbaV0uVmFyaWFibGU7CisrCisrCQkJCQkJaWYgKHZh cmlhYmxlLlR5cGUgPT0gSW50ZXJuYWxUeXBlLkRpc2NhcmQpIHsKKysJCQkJCQkJdmFyaWFibGVz IFtpXSA9IG51bGw7CisrCQkJCQkJCXRhcmdldEV4cHJzLkFkZCAoRW1wdHlFeHByZXNzaW9uU3Rh dGVtZW50Lkluc3RhbmNlKTsKKyAJCQkJCQkJY29udGludWU7CisgCQkJCQkJfQorIAorLQkJCQkJ CWx2LlR5cGUgPSB0bGU7CistCQkJCQkJbHYuUHJlcGFyZUFzc2lnbm1lbnRBbmFseXNpcyAoKEJs b2NrQ29udGV4dCkgcmMpOworLQkJCQkJfQorKwkJCQkJCXZhciB2YXJpYWJsZV90eXBlID0gdmFy aWFibGVzIFtpXS5UeXBlRXhwcmVzc2lvbjsKKysKKysJCQkJCQl0YXJnZXRFeHBycy5BZGQgKG5l dyBMb2NhbFZhcmlhYmxlUmVmZXJlbmNlICh2YXJpYWJsZSwgdmFyaWFibGUuTG9jYXRpb24pKTsK KysKKysJCQkJCQlpZiAodmFyaWFibGVfdHlwZSBpcyBWYXJFeHByKSB7CisrCQkJCQkJCWlmIChJ bnRlcm5hbFR5cGUuSGFzTm9UeXBlICh0bGUpKSB7CisrCQkJCQkJCQlyYy5SZXBvcnQuRXJyb3Ig KDgxMzAsIExvY2F0aW9uLCAiQ2Fubm90IGluZmVyIHRoZSB0eXBlIG9mIGltcGxpY2l0bHktdHlw ZWQgZGVjb25zdHJ1Y3Rpb24gdmFyaWFibGUgYHswfSciLCB2YXJpYWJsZS5OYW1lKTsKKysJCQkJ CQkJCXRsZSA9IEludGVybmFsVHlwZS5FcnJvclR5cGU7CisrCQkJCQkJCX0KKyAKKysJCQkJCQkJ dmFyaWFibGUuVHlwZSA9IHRsZTsKKysJCQkJCQl9IGVsc2UgeworKwkJCQkJCQl2YXJpYWJsZS5U eXBlID0gdmFyaWFibGVfdHlwZS5SZXNvbHZlQXNUeXBlIChyYyk7CisrCQkJCQkJfQorKworKwkJ CQkJCXZhcmlhYmxlLlByZXBhcmVBc3NpZ25tZW50QW5hbHlzaXMgKChCbG9ja0NvbnRleHQpcmMp OworKwkJCQkJfQorIAorIAkJCQkJdmFyIGVsZW1lbnRfc3JjID0gdHVwbGVMaXRlcmFsID09IG51 bGwgPyBuZXcgTWVtYmVyQWNjZXNzIChpbnN0YW5jZSwgTmFtZWRUdXBsZVNwZWMuR2V0RWxlbWVu dFByb3BlcnR5TmFtZSAoaSkpIDogdHVwbGVMaXRlcmFsLkVsZW1lbnRzIFtpXS5FeHByOworIAkJ CQkJdGFyZ2V0RXhwcnMgW2ldID0gbmV3IFNpbXBsZUFzc2lnbiAodGFyZ2V0RXhwcnMgW2ldLCBl bGVtZW50X3NyYykuUmVzb2x2ZSAocmMpOworIAkJCQl9CisgCisgCQkJCWVjbGFzcyA9IEV4cHJD bGFzcy5WYWx1ZTsKKysKKysJCQkJLy8gVE9ETzogVGhlIHR5cGUgaXMgc2FtZSBvbmx5IGlmIHRo ZXJlIGlzIG5vIHRhcmdldCBlbGVtZW50IGNvbnZlcnNpb24KKysJCQkJLy8gdmFyIHJlcyA9ICgv KmJ5dGUqLyBiLCAvKnNob3J0Ki8gcykgPSAoMiwgNCk7CisgCQkJCXR5cGUgPSBzcmMuVHlwZTsK KyAJCQkJcmV0dXJuIHRoaXM7CisgCQkJfQorQEAgLTUyNywxMSArNTU0LDI0IEBAIG5hbWVzcGFj ZSBNb25vLkNTaGFycAorIAorIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgRW1pdCAoRW1pdENvbnRl eHQgZWMpCisgCQl7CistCQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOwor KwkJCWlmIChpbnN0YW5jZSAhPSBudWxsKQorKwkJCQkoKEV4cHJlc3Npb25TdGF0ZW1lbnQpc291 cmNlKS5FbWl0U3RhdGVtZW50IChlYyk7CisrCisrCQkJZm9yZWFjaCAoRXhwcmVzc2lvblN0YXRl bWVudCBleHByIGluIHRhcmdldEV4cHJzKQorKwkJCQlleHByLkVtaXQgKGVjKTsKKysKKysJCQl2 YXIgY3RvciA9IE1lbWJlckNhY2hlLkZpbmRNZW1iZXIgKHR5cGUsIE1lbWJlckZpbHRlci5Db25z dHJ1Y3RvciAobnVsbCksIEJpbmRpbmdSZXN0cmljdGlvbi5EZWNsYXJlZE9ubHkgfCBCaW5kaW5n UmVzdHJpY3Rpb24uSW5zdGFuY2VPbmx5KSBhcyBNZXRob2RTcGVjOworKwkJCWVjLkVtaXQgKE9w Q29kZXMuTmV3b2JqLCBjdG9yKTsKKyAJCX0KKyAKKyAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVt aXRTdGF0ZW1lbnQgKEVtaXRDb250ZXh0IGVjKQorIAkJeworKwkJCWlmICh2YXJpYWJsZXMgIT0g bnVsbCkgeworKwkJCQlmb3JlYWNoICh2YXIgbHYgaW4gdmFyaWFibGVzKSB7CisrCQkJCQlsdj8u VmFyaWFibGUuQ3JlYXRlQnVpbGRlciAoZWMpOworKwkJCQl9CisrCQkJfQorKwkJCQorIAkJCWlm IChpbnN0YW5jZSAhPSBudWxsKQorIAkJCQkoKEV4cHJlc3Npb25TdGF0ZW1lbnQpIHNvdXJjZSku RW1pdFN0YXRlbWVudCAoZWMpOworIAkJCQorQEAgLTU0OSw5ICs1ODksNiBAQCBuYW1lc3BhY2Ug TW9uby5DU2hhcnAKKyAJCQlpZiAobGVhdmVfY29weSkKKyAJCQkJdGhyb3cgbmV3IE5vdEltcGxl bWVudGVkRXhjZXB0aW9uICgpOworIAorLQkJCWZvcmVhY2ggKHZhciBsdiBpbiB2YXJpYWJsZXNU b0luZmVyKQorLQkJCQlsdi5DcmVhdGVCdWlsZGVyIChlYyk7CistCisgCQkJRW1pdFN0YXRlbWVu dCAoZWMpOworIAkJfQorIAorQEAgLTU2MywxMSArNjAwLDExIEBAIG5hbWVzcGFjZSBNb25vLkNT aGFycAorIAorIAkJcHVibGljIHZvaWQgU2V0R2VuZXJhdGVkRmllbGRBc3NpZ25lZCAoRmxvd0Fu YWx5c2lzQ29udGV4dCBmYykKKyAJCXsKKy0JCQlpZiAodmFyaWFibGVzVG9JbmZlciA9PSBudWxs KQorKwkJCWlmICh2YXJpYWJsZXMgPT0gbnVsbCkKKyAJCQkJcmV0dXJuOworIAorLQkJCWZvcmVh Y2ggKHZhciBsdiBpbiB2YXJpYWJsZXNUb0luZmVyKQorLQkJCQlmYy5TZXRWYXJpYWJsZUFzc2ln bmVkIChsdi5WYXJpYWJsZUluZm8pOworKwkJCWZvcmVhY2ggKHZhciBsdiBpbiB2YXJpYWJsZXMp CisrCQkJCWZjLlNldFZhcmlhYmxlQXNzaWduZWQgKGx2LlZhcmlhYmxlLlZhcmlhYmxlSW5mbyk7 CisgCQl9CisgCX0KKyB9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQg YS9tY3MvbWNzL3R5cGVtYW5hZ2VyLmNzIGIvbWNzL21jcy90eXBlbWFuYWdlci5jcworaW5kZXgg YjZhZmYxNGUxYzAuLjdhMTZjZGEyNzc0IDEwMDY0NAorLS0tIGEvbWNzL21jcy90eXBlbWFuYWdl ci5jcworKysrIGIvbWNzL21jcy90eXBlbWFuYWdlci5jcworQEAgLTI0Miw2ICsyNDIsNyBAQCBu YW1lc3BhY2UgTW9uby5DU2hhcnAKKyAKKyAJCS8vIEMjIDcuMAorIAkJcHVibGljIHJlYWRvbmx5 IFByZWRlZmluZWRUeXBlW10gVHVwbGVzOworKwkJcHVibGljIHJlYWRvbmx5IFByZWRlZmluZWRU eXBlIFNwYW5HZW5lcmljOworIAorIAkJcHVibGljIFByZWRlZmluZWRUeXBlcyAoTW9kdWxlQ29u dGFpbmVyIG1vZHVsZSkKKyAJCXsKK0BAIC0zMDEsNiArMzAyLDggQEAgbmFtZXNwYWNlIE1vbm8u Q1NoYXJwCisgCQkJRm9ybWF0dGFibGVTdHJpbmcgPSBuZXcgUHJlZGVmaW5lZFR5cGUgKG1vZHVs ZSwgTWVtYmVyS2luZC5DbGFzcywgIlN5c3RlbSIsICJGb3JtYXR0YWJsZVN0cmluZyIpOworIAkJ CUZvcm1hdHRhYmxlU3RyaW5nRmFjdG9yeSA9IG5ldyBQcmVkZWZpbmVkVHlwZSAobW9kdWxlLCBN ZW1iZXJLaW5kLkNsYXNzLCAiU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcyIsICJGb3Jt YXR0YWJsZVN0cmluZ0ZhY3RvcnkiKTsKKyAKKysJCQlTcGFuR2VuZXJpYyA9IG5ldyBQcmVkZWZp bmVkVHlwZSAobW9kdWxlLCBNZW1iZXJLaW5kLlN0cnVjdCwgIlN5c3RlbSIsICJTcGFuIiwgMSk7 CisrCisgCQkJLy8KKyAJCQkvLyBEZWZpbmUgdHlwZXMgd2hpY2ggYXJlIHVzZWQgZm9yIGNvbXBh cmlzb24uIEl0IGRvZXMgbm90IG1hdHRlcgorIAkJCS8vIGlmIHRoZXkgZG9uJ3QgZXhpc3QgYXMg bm8gZXJyb3IgcmVwb3J0IGlzIG5lZWRlZAorQEAgLTM0OCw2ICszNTEsOCBAQCBuYW1lc3BhY2Ug TW9uby5DU2hhcnAKKyAJCQkJaWYgKHB0LkRlZmluZSAoKSkKKyAJCQkJCXB0LlR5cGVTcGVjLklz VHVwbGVUeXBlID0gdHJ1ZTsKKyAJCQl9CisrCisrCQkJU3BhbkdlbmVyaWMuRGVmaW5lICgpOwor IAkJfQorIAl9CisgCitAQCAtNDMwLDYgKzQzNSw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAor IAkJCUFycmF5RW1wdHkgPSBuZXcgUHJlZGVmaW5lZE1lbWJlcjxNZXRob2RTcGVjPiAobW9kdWxl LCB0eXBlcy5BcnJheSwKKyAJCQkJTWVtYmVyRmlsdGVyLk1ldGhvZCAoIkVtcHR5IiwgMSwgUGFy YW1ldGVyc0NvbXBpbGVkLkVtcHR5UmVhZE9ubHlQYXJhbWV0ZXJzLCBudWxsKSk7CisgCisrCQkJ Ly8gVE9ETzogTXVzdCBtZSBzdGF0aWMKKyAJCQlBc3luY1Rhc2tNZXRob2RCdWlsZGVyQ3JlYXRl ID0gbmV3IFByZWRlZmluZWRNZW1iZXI8TWV0aG9kU3BlYz4gKG1vZHVsZSwgdHlwZXMuQXN5bmNU YXNrTWV0aG9kQnVpbGRlciwKKyAJCQkJTWVtYmVyRmlsdGVyLk1ldGhvZCAoIkNyZWF0ZSIsIDAs IFBhcmFtZXRlcnNDb21waWxlZC5FbXB0eVJlYWRPbmx5UGFyYW1ldGVycywgdHlwZXMuQXN5bmNU YXNrTWV0aG9kQnVpbGRlci5UeXBlU3BlYykpOworIAorQEAgLTQ4NSw2ICs0OTEsNyBAQCBuYW1l c3BhY2UgTW9uby5DU2hhcnAKKyAJCQlBc3luY1Rhc2tNZXRob2RCdWlsZGVyVGFzayA9IG5ldyBQ cmVkZWZpbmVkTWVtYmVyPFByb3BlcnR5U3BlYz4gKG1vZHVsZSwgdHlwZXMuQXN5bmNUYXNrTWV0 aG9kQnVpbGRlciwKKyAJCQkJTWVtYmVyRmlsdGVyLlByb3BlcnR5ICgiVGFzayIsIG51bGwpKTsK KyAKKysJCQkvLyBUT0RPOiBNdXN0IG1lIHN0YXRpYworIAkJCUFzeW5jVGFza01ldGhvZEJ1aWxk ZXJHZW5lcmljQ3JlYXRlID0gbmV3IFByZWRlZmluZWRNZW1iZXI8TWV0aG9kU3BlYz4gKG1vZHVs ZSwgdHlwZXMuQXN5bmNUYXNrTWV0aG9kQnVpbGRlckdlbmVyaWMsCisgCQkJCU1lbWJlckZpbHRl ci5NZXRob2QgKCJDcmVhdGUiLCAwLCBQYXJhbWV0ZXJzQ29tcGlsZWQuRW1wdHlSZWFkT25seVBh cmFtZXRlcnMsIHR5cGVzLkFzeW5jVm9pZE1ldGhvZEJ1aWxkZXIuVHlwZVNwZWMpKTsKKyAKK0BA IC01NDIsNiArNTQ5LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJQXN5bmNUYXNrTWV0 aG9kQnVpbGRlckdlbmVyaWNUYXNrID0gbmV3IFByZWRlZmluZWRNZW1iZXI8UHJvcGVydHlTcGVj PiAobW9kdWxlLCB0eXBlcy5Bc3luY1Rhc2tNZXRob2RCdWlsZGVyR2VuZXJpYywKKyAJCQkJTWVt YmVyRmlsdGVyLlByb3BlcnR5ICgiVGFzayIsIG51bGwpKTsKKyAKKysJCQkvLyBUT0RPOiBNdXN0 IG1lIHN0YXRpYworIAkJCUFzeW5jVm9pZE1ldGhvZEJ1aWxkZXJDcmVhdGUgPSBuZXcgUHJlZGVm aW5lZE1lbWJlcjxNZXRob2RTcGVjPiAobW9kdWxlLCB0eXBlcy5Bc3luY1ZvaWRNZXRob2RCdWls ZGVyLAorIAkJCQlNZW1iZXJGaWx0ZXIuTWV0aG9kICgiQ3JlYXRlIiwgMCwgUGFyYW1ldGVyc0Nv bXBpbGVkLkVtcHR5UmVhZE9ubHlQYXJhbWV0ZXJzLCB0eXBlcy5Bc3luY1ZvaWRNZXRob2RCdWls ZGVyLlR5cGVTcGVjKSk7CisgCitAQCAtMTAwNiw5ICsxMDE0LDYgQEAgbmFtZXNwYWNlIE1vbm8u Q1NoYXJwCisgCisgCQlwdWJsaWMgVCBSZXNvbHZlIChMb2NhdGlvbiBsb2MpCisgCQl7CistCQkJ aWYgKG1lbWJlciAhPSBudWxsKQorLQkJCQlyZXR1cm4gbWVtYmVyOworLQorIAkJCWlmIChHZXQg KCkgIT0gbnVsbCkKKyAJCQkJcmV0dXJuIG1lbWJlcjsKKyAKK2RpZmYgLS1naXQgYS9tY3MvbWNz L3R5cGVzcGVjLmNzIGIvbWNzL21jcy90eXBlc3BlYy5jcworaW5kZXggZDE0ZTFlYWQzZTMuLmE1 OGEwZmU1MTc4IDEwMDY0NAorLS0tIGEvbWNzL21jcy90eXBlc3BlYy5jcworKysrIGIvbWNzL21j cy90eXBlc3BlYy5jcworQEAgLTIyNSw2ICsyMjUsOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAK KyAJCQl9CisgCQl9CisgCisrCQlwdWJsaWMgYm9vbCBJc0J5UmVmTGlrZSA9PiAobW9kaWZpZXJz ICYgTW9kaWZpZXJzLlJFRikgIT0gMDsKKysKKyAJCS8vCisgCQkvLyBSZXR1cm5zIHRydWUgZm9y IGluc3RhbmNlcyBvZiBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzLlRhc2s8VD4KKyAJCS8vCitAQCAt MTQ1Miw2ICsxNDU0LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQlpbnQgVHlwZVBhcmFt ZXRlcnNDb3VudCB7IGdldDsgfQorIAkJVHlwZVBhcmFtZXRlclNwZWNbXSBUeXBlUGFyYW1ldGVy cyB7IGdldDsgfQorIAorKwkJVHlwZVNwZWMgR2V0QXN5bmNNZXRob2RCdWlsZGVyICgpOworIAkJ VHlwZVNwZWMgR2V0QXR0cmlidXRlQ29DbGFzcyAoKTsKKyAJCXN0cmluZyBHZXRBdHRyaWJ1dGVE ZWZhdWx0TWVtYmVyICgpOworIAkJQXR0cmlidXRlVXNhZ2VBdHRyaWJ1dGUgR2V0QXR0cmlidXRl VXNhZ2UgKFByZWRlZmluZWRBdHRyaWJ1dGUgcGEpOworQEAgLTE0NjEsNiArMTQ2NCwyOSBAQCBu YW1lc3BhY2UgTW9uby5DU2hhcnAKKyAKKyAJY2xhc3MgSW50ZXJuYWxUeXBlIDogVHlwZVNwZWMs IElUeXBlRGVmaW5pdGlvbgorIAl7CisrCQlzZWFsZWQgY2xhc3MgSW50ZXJuYWxUeXBlQXNzZW1i bHkgOiBJQXNzZW1ibHlEZWZpbml0aW9uCisrCQl7CisrCQkJcHVibGljIHN0YXRpYyByZWFkb25s eSBJbnRlcm5hbFR5cGVBc3NlbWJseSBJbnN0YW5jZSA9IG5ldyBJbnRlcm5hbFR5cGVBc3NlbWJs eSAoKTsKKysKKysJCQlwdWJsaWMgc3RyaW5nIEZ1bGxOYW1lID0+IHRocm93IG5ldyBOb3RJbXBs ZW1lbnRlZEV4Y2VwdGlvbiAoKTsKKysKKysJCQlwdWJsaWMgYm9vbCBJc0NMU0NvbXBsaWFudCA9 PiBmYWxzZTsKKysKKysJCQlwdWJsaWMgYm9vbCBJc01pc3NpbmcgPT4gZmFsc2U7CisrCisrCQkJ cHVibGljIHN0cmluZyBOYW1lID0+IHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiAo KTsKKysKKysJCQlwdWJsaWMgYnl0ZSBbXSBHZXRQdWJsaWNLZXlUb2tlbiAoKQorKwkJCXsKKysJ CQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOworKwkJCX0KKysKKysJCQlw dWJsaWMgYm9vbCBJc0ZyaWVuZEFzc2VtYmx5VG8gKElBc3NlbWJseURlZmluaXRpb24gYXNzZW1i bHkpCisrCQkJeworKwkJCQlyZXR1cm4gZmFsc2U7CisrCQkJfQorKwkJfQorKworIAkJcHVibGlj IHN0YXRpYyByZWFkb25seSBJbnRlcm5hbFR5cGUgQW5vbnltb3VzTWV0aG9kID0gbmV3IEludGVy bmFsVHlwZSAoImFub255bW91cyBtZXRob2QiKTsKKyAJCXB1YmxpYyBzdGF0aWMgcmVhZG9ubHkg SW50ZXJuYWxUeXBlIEFyZ2xpc3QgPSBuZXcgSW50ZXJuYWxUeXBlICgiX19hcmdsaXN0Iik7Cisg CQlwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEludGVybmFsVHlwZSBNZXRob2RHcm91cCA9IG5ldyBJ bnRlcm5hbFR5cGUgKCJtZXRob2QgZ3JvdXAiKTsKK0BAIC0xNDcwLDYgKzE0OTYsOCBAQCBuYW1l c3BhY2UgTW9uby5DU2hhcnAKKyAJCXB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSW50ZXJuYWxUeXBl IEVycm9yVHlwZSA9IG5ldyBJbnRlcm5hbFR5cGUgKCI8ZXJyb3I+Iik7CisgCQlwdWJsaWMgc3Rh dGljIHJlYWRvbmx5IEludGVybmFsVHlwZSBWYXJPdXRUeXBlID0gbmV3IEludGVybmFsVHlwZSAo InZhciBvdXQiKTsKKyAJCXB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSW50ZXJuYWxUeXBlIFRocm93 RXhwciA9IG5ldyBJbnRlcm5hbFR5cGUgKCJ0aHJvdyBleHByZXNzaW9uIik7CisrCQlwdWJsaWMg c3RhdGljIHJlYWRvbmx5IEludGVybmFsVHlwZSBEZWZhdWx0VHlwZSA9IG5ldyBJbnRlcm5hbFR5 cGUgKCJkZWZhdWx0Iik7CisrCQlwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEludGVybmFsVHlwZSBE aXNjYXJkID0gbmV3IEludGVybmFsVHlwZSAoImRpc2NhcmQiKTsKKyAKKyAJCXJlYWRvbmx5IHN0 cmluZyBuYW1lOworIAorQEAgLTE0OTQsNyArMTUyMiw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFy cAorIAorIAkJSUFzc2VtYmx5RGVmaW5pdGlvbiBJVHlwZURlZmluaXRpb24uRGVjbGFyaW5nQXNz ZW1ibHkgeworIAkJCWdldCB7CistCQkJCXRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlv biAoKTsKKysJCQkJcmV0dXJuIEludGVybmFsVHlwZUFzc2VtYmx5Lkluc3RhbmNlOworIAkJCX0K KyAJCX0KKyAKK0BAIC0xNTYxLDYgKzE1ODksMTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisg CisgCQkjcmVnaW9uIElUeXBlRGVmaW5pdGlvbiBNZW1iZXJzCisgCisrCQlUeXBlU3BlYyBJVHlw ZURlZmluaXRpb24uR2V0QXN5bmNNZXRob2RCdWlsZGVyICgpCisrCQl7CisrCQkJcmV0dXJuIG51 bGw7CisrCQl9CisrCisgCQlUeXBlU3BlYyBJVHlwZURlZmluaXRpb24uR2V0QXR0cmlidXRlQ29D bGFzcyAoKQorIAkJeworIAkJCXJldHVybiBudWxsOworQEAgLTE2MTQsNyArMTY0Nyw3IEBAIG5h bWVzcGFjZSBNb25vLkNTaGFycAorIAorIAkJcHVibGljIHN0YXRpYyBib29sIEhhc05vVHlwZSAo VHlwZVNwZWMgdHlwZSkKKyAJCXsKKy0JCQlyZXR1cm4gdHlwZSA9PSBBbm9ueW1vdXNNZXRob2Qg fHwgdHlwZSA9PSBNZXRob2RHcm91cCB8fCB0eXBlID09IE51bGxMaXRlcmFsIHx8IHR5cGUgPT0g VGhyb3dFeHByOworKwkJCXJldHVybiB0eXBlID09IEFub255bW91c01ldGhvZCB8fCB0eXBlID09 IE1ldGhvZEdyb3VwIHx8IHR5cGUgPT0gTnVsbExpdGVyYWwgfHwgdHlwZSA9PSBUaHJvd0V4cHIg fHwgdHlwZSA9PSBEZWZhdWx0VHlwZTsKKyAJCX0KKyAJfQorIAorQEAgLTE3NDksNiArMTc4Miwx MSBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQl9CisgCQl9CisgCisrCQlwdWJsaWMgVHlw ZVNwZWMgR2V0QXN5bmNNZXRob2RCdWlsZGVyICgpCisrCQl7CisrCQkJcmV0dXJuIG51bGw7Cisr CQl9CisrCisgCQlwdWJsaWMgVHlwZVNwZWMgR2V0QXR0cmlidXRlQ29DbGFzcyAoKQorIAkJewor IAkJCXJldHVybiBFbGVtZW50Lk1lbWJlckRlZmluaXRpb24uR2V0QXR0cmlidXRlQ29DbGFzcyAo KTsKK0BAIC0xOTk2LDkgKzIwMzQsMTAgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCVtTeXN0 ZW0uRGlhZ25vc3RpY3MuRGVidWdnZXJEaXNwbGF5KCJ7RGlzcGxheURlYnVnSW5mbygpfSIpXQor IAljbGFzcyBSZWZlcmVuY2VDb250YWluZXIgOiBFbGVtZW50VHlwZVNwZWMKKyAJeworLQkJUmVm ZXJlbmNlQ29udGFpbmVyIChUeXBlU3BlYyBlbGVtZW50KQorKwkJcHJvdGVjdGVkIFJlZmVyZW5j ZUNvbnRhaW5lciAoVHlwZVNwZWMgZWxlbWVudCkKKyAJCQk6IGJhc2UgKE1lbWJlcktpbmQuQnlS ZWYsIGVsZW1lbnQsIG51bGwpCisgCQl7CisrCQkJY2FjaGUgPSBudWxsOworIAkJfQorIAorIAkJ cHVibGljIG92ZXJyaWRlIElMaXN0PFR5cGVTcGVjPiBJbnRlcmZhY2VzIHsKK0BAIC0yMDM5LDYg KzIwNzgsMzkgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCisgCQkJcmV0dXJuIHBjOworIAkJ fQorKworKwkJcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgSW5pdGlhbGl6ZU1lbWJlckNhY2hlKGJv b2wgb25seVR5cGVzKQorKwkJeworKwkJCWNhY2hlID0gRWxlbWVudC5NZW1iZXJDYWNoZTsKKysJ CX0KKysJfQorKworKwlbU3lzdGVtLkRpYWdub3N0aWNzLkRlYnVnZ2VyRGlzcGxheSAoIntEaXNw bGF5RGVidWdJbmZvKCl9IildCisrCWNsYXNzIFJlYWRPbmx5UmVmZXJlbmNlQ29udGFpbmVyIDog UmVmZXJlbmNlQ29udGFpbmVyCisrCXsKKysJCXB1YmxpYyBSZWFkT25seVJlZmVyZW5jZUNvbnRh aW5lciAoVHlwZVNwZWMgZWxlbWVudCkKKysJCQk6IGJhc2UgKGVsZW1lbnQpCisrCQl7CisrCQl9 CisrCisrCQlzdHJpbmcgRGlzcGxheURlYnVnSW5mbyAoKQorKwkJeworKwkJCXJldHVybiAicmVm IHJlYWRvbmx5ICIgKyBHZXRTaWduYXR1cmVGb3JFcnJvciAoKTsKKysJCX0KKysKKysJCXB1Ymxp YyBuZXcgc3RhdGljIFJlZmVyZW5jZUNvbnRhaW5lciBNYWtlVHlwZSAoTW9kdWxlQ29udGFpbmVy IG1vZHVsZSwgVHlwZVNwZWMgZWxlbWVudCkKKysJCXsKKysJCQlpZiAoZWxlbWVudC5LaW5kID09 IE1lbWJlcktpbmQuQnlSZWYpCisrCQkJCXRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbiAoKTsK KysKKysJCQlSZWFkT25seVJlZmVyZW5jZUNvbnRhaW5lciBwYzsKKysJCQlpZiAoIW1vZHVsZS5S ZWFkb25seVJlZmVyZW5jZVR5cGVzQ2FjaGUuVHJ5R2V0VmFsdWUgKGVsZW1lbnQsIG91dCBwYykp IHsKKysJCQkJcGMgPSBuZXcgUmVhZE9ubHlSZWZlcmVuY2VDb250YWluZXIgKGVsZW1lbnQpOwor KwkJCQltb2R1bGUuUmVhZG9ubHlSZWZlcmVuY2VUeXBlc0NhY2hlLkFkZCAoZWxlbWVudCwgcGMp OworKwkJCX0KKysKKysJCQlyZXR1cm4gcGM7CisrCQl9CisgCX0KKyAKKyAJY2xhc3MgUG9pbnRl ckNvbnRhaW5lciA6IEVsZW1lbnRUeXBlU3BlYworZGlmZiAtLWdpdCBhL21jcy90ZXN0cy9ndGVz dC00MDkuY3MgYi9tY3MvdGVzdHMvZ3Rlc3QtNDA5LmNzCitpbmRleCA4ZGI1OWQ3ZTQ4ZC4uNjA2 YWUzNjg1ZDEgMTAwNjQ0CistLS0gYS9tY3MvdGVzdHMvZ3Rlc3QtNDA5LmNzCisrKysgYi9tY3Mv dGVzdHMvZ3Rlc3QtNDA5LmNzCitAQCAtMSwzICsxLDQgQEAKKysvLyBDb21waWxlciBvcHRpb25z OiAtbGFuZ3ZlcnNpb246bGF0ZXN0CisgdXNpbmcgU3lzdGVtOworIAorIC8vCitAQCAtMTc1LDYg KzE3NiwxMSBAQCBwdWJsaWMgY2xhc3MgQ29uZGl0aW9uYWxQYXJzaW5nCisgCQl2YXIgeCA9IGFy Z3MgPy4yZiA6IC0uMmY7CisgCX0KKyAKKysJdm9pZCBUZXN0XzIzIChzdHJpbmcgYXJncykKKysJ eworKwkJdmFyIHggPSBhcmdzID09IG51bGwgPyBkZWZhdWx0IDogMTsKKysJfQorKworIAlzdGF0 aWMgdm9pZCBIZWxwZXI8VD4gKFQgYXJnKQorIAl7CisgCX0KK2RpZmYgLS1naXQgYS9tY3MvdGVz dHMvdGVzdC05NDguY3MgYi9tY3MvdGVzdHMvdGVzdC05NDguY3MKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uMzRiM2FiOWEwYzQKKy0tLSAvZGV2L251bGwKKysrKyBi L21jcy90ZXN0cy90ZXN0LTk0OC5jcworQEAgLTAsMCArMSwxNiBAQAorKy8vIENvbXBpbGVyIG9w dGlvbnM6IC1sYW5ndmVyc2lvbjo3LjIgLXVuc2FmZQorKworK3VzaW5nIFN5c3RlbTsKKysKKytj bGFzcyBYCisreworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQlTcGFuPGlu dD4gc3RhY2tTcGFuID0gc3RhY2thbGxvYyBpbnRbMTAwXTsKKysJfQorKworKwl1bnNhZmUgdm9p ZCBGb28gKCkKKysJeworKworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitk aWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL3Rlc3QtYXN5bmMtOTQuY3MgYi9tY3MvdGVzdHMvdGVzdC1h c3luYy05NC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jZTlh MzA0MDliYgorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtYXN5bmMtOTQuY3MK K0BAIC0wLDAgKzEsMTI3IEBACisrdXNpbmcgU3lzdGVtOworK3VzaW5nIFN5c3RlbS5UaHJlYWRp bmcuVGFza3M7CisrdXNpbmcgU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlczsKKysKKytb QXN5bmNNZXRob2RCdWlsZGVyICh0eXBlb2YoTXlUYXNrTWV0aG9kQnVpbGRlcjw+KSldCisrY2xh c3MgTXlUYXNrPFQ+CisreworK30KKysKKytbQXN5bmNNZXRob2RCdWlsZGVyICh0eXBlb2YoTXlU YXNrTWV0aG9kQnVpbGRlcikpXQorK2NsYXNzIE15VGFzaworK3sKKyt9CisrCisrY2xhc3MgTXlU YXNrTWV0aG9kQnVpbGRlcgorK3sKKysJcHVibGljIHN0YXRpYyBNeVRhc2tNZXRob2RCdWlsZGVy IENyZWF0ZSgpCisrCXsKKysJCXJldHVybiBudWxsOworKwl9CisrCisrCXB1YmxpYyBNeVRhc2sg VGFzayB7CisrCQlnZXQgeworKwkJCXJldHVybiBudWxsOworKwkJfQorKwl9CisrCisrCXB1Ymxp YyB2b2lkIFNldEV4Y2VwdGlvbiAoRXhjZXB0aW9uIGV4Y2VwdGlvbikKKysJeworKworKwl9Cisr CisrCXB1YmxpYyB2b2lkIFNldFJlc3VsdCAoKQorKwl7CisrCisrCX0KKysKKysJcHVibGljIHZv aWQgQXdhaXRPbkNvbXBsZXRlZDxUQXdhaXRlciwgVFN0YXRlTWFjaGluZT4gKHJlZiBUQXdhaXRl ciBhd2FpdGVyLCByZWYgVFN0YXRlTWFjaGluZSBzdGF0ZU1hY2hpbmUpIHdoZXJlIFRBd2FpdGVy IDogSU5vdGlmeUNvbXBsZXRpb24gd2hlcmUgVFN0YXRlTWFjaGluZSA6IElBc3luY1N0YXRlTWFj aGluZQorKwl7CisrCisrCX0KKysKKysJcHVibGljIHZvaWQgQXdhaXRVbnNhZmVPbkNvbXBsZXRl ZDxUQXdhaXRlciwgVFN0YXRlTWFjaGluZT4gKHJlZiBUQXdhaXRlciBhd2FpdGVyLCByZWYgVFN0 YXRlTWFjaGluZSBzdGF0ZU1hY2hpbmUpIHdoZXJlIFRBd2FpdGVyIDogSUNyaXRpY2FsTm90aWZ5 Q29tcGxldGlvbiB3aGVyZSBUU3RhdGVNYWNoaW5lIDogSUFzeW5jU3RhdGVNYWNoaW5lCisrCXsK KysKKysJfQorKworKwlwdWJsaWMgdm9pZCBTdGFydDxUU3RhdGVNYWNoaW5lPiAocmVmIFRTdGF0 ZU1hY2hpbmUgc3RhdGVNYWNoaW5lKSB3aGVyZSBUU3RhdGVNYWNoaW5lIDogSUFzeW5jU3RhdGVN YWNoaW5lCisrCXsKKysKKysJfQorKworKwlwdWJsaWMgdm9pZCBTZXRTdGF0ZU1hY2hpbmUgKElB c3luY1N0YXRlTWFjaGluZSBzdGF0ZU1hY2hpbmUpCisrCXsKKysKKysJfQkKKyt9CisrCisrY2xh c3MgTXlUYXNrTWV0aG9kQnVpbGRlcjxUPgorK3sKKysJcHVibGljIHN0YXRpYyBNeVRhc2tNZXRo b2RCdWlsZGVyPFQ+IENyZWF0ZSgpCisrCXsKKysJCXJldHVybiBudWxsOworKwl9CisrCisrCXB1 YmxpYyBNeVRhc2s8VD4gVGFzayB7CisrCQlnZXQgeworKwkJCXJldHVybiBudWxsOworKwkJfQor Kwl9CisrCisrCXB1YmxpYyB2b2lkIFNldEV4Y2VwdGlvbiAoRXhjZXB0aW9uIGV4Y2VwdGlvbikK KysJeworKworKwl9CisrCisrCXB1YmxpYyB2b2lkIFNldFJlc3VsdCAoVCByZXN1bHQpCisrCXsK KysKKysJfQorKworKwlwdWJsaWMgdm9pZCBBd2FpdE9uQ29tcGxldGVkPFRBd2FpdGVyLCBUU3Rh dGVNYWNoaW5lPiAocmVmIFRBd2FpdGVyIGF3YWl0ZXIsIHJlZiBUU3RhdGVNYWNoaW5lIHN0YXRl TWFjaGluZSkgd2hlcmUgVEF3YWl0ZXIgOiBJTm90aWZ5Q29tcGxldGlvbiB3aGVyZSBUU3RhdGVN YWNoaW5lIDogSUFzeW5jU3RhdGVNYWNoaW5lCisrCXsKKysKKysJfQorKworKwlwdWJsaWMgdm9p ZCBBd2FpdFVuc2FmZU9uQ29tcGxldGVkPFRBd2FpdGVyLCBUU3RhdGVNYWNoaW5lPiAocmVmIFRB d2FpdGVyIGF3YWl0ZXIsIHJlZiBUU3RhdGVNYWNoaW5lIHN0YXRlTWFjaGluZSkgd2hlcmUgVEF3 YWl0ZXIgOiBJQ3JpdGljYWxOb3RpZnlDb21wbGV0aW9uIHdoZXJlIFRTdGF0ZU1hY2hpbmUgOiBJ QXN5bmNTdGF0ZU1hY2hpbmUKKysJeworKworKwl9CisrCisrCXB1YmxpYyB2b2lkIFN0YXJ0PFRT dGF0ZU1hY2hpbmU+IChyZWYgVFN0YXRlTWFjaGluZSBzdGF0ZU1hY2hpbmUpIHdoZXJlIFRTdGF0 ZU1hY2hpbmUgOiBJQXN5bmNTdGF0ZU1hY2hpbmUKKysJeworKworKwl9CisrCisrCXB1YmxpYyB2 b2lkIFNldFN0YXRlTWFjaGluZSAoSUFzeW5jU3RhdGVNYWNoaW5lIHN0YXRlTWFjaGluZSkKKysJ eworKworKwl9CisrfQorKworK2NsYXNzIFgKKyt7CisrCXB1YmxpYyBhc3luYyBNeVRhc2sgVGVz dCAoKQorKwl7CisrCQlhd2FpdCBUYXNrLkRlbGF5ICgxKTsKKysJfQorKworKwlwdWJsaWMgYXN5 bmMgTXlUYXNrPGludD4gVGVzdDIgKCkKKysJeworKwkJYXdhaXQgVGFzay5EZWxheSAoMSk7Cisr CQlyZXR1cm4gMjsKKysJfQorKworKwlwdWJsaWMgYXN5bmMgVmFsdWVUYXNrPHN0cmluZz4gVGVz dDMgKCkKKysJeworKwkJYXdhaXQgVGFzay5EZWxheSAoMSk7CisrCQlyZXR1cm4gImFzIjsKKysJ fQkKKysKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJdmFyIHggPSBuZXcg WCAoKTsKKysJCXZhciByMSA9IHguVGVzdDMgKCkuUmVzdWx0OworKwl9CisrfQorXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL3Rlc3QtZGVmYXVsdC0w MS5jcyBiL21jcy90ZXN0cy90ZXN0LWRlZmF1bHQtMDEuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwMDAwMC4uODIzZTMzYzQ1MWIKKy0tLSAvZGV2L251bGwKKysrKyBiL21j cy90ZXN0cy90ZXN0LWRlZmF1bHQtMDEuY3MKK0BAIC0wLDAgKzEsNTIgQEAKKysvLyBDb21waWxl ciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246bGF0ZXN0CisrCisrc3RhdGljIGNsYXNzIFgKKyt7Cisr CWNvbnN0IGludCBjMSA9IGRlZmF1bHQ7CisrCWNvbnN0IGludCBjMiA9IGRlZmF1bHQgKGludCk7 CisrCisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCWludCBhID0gZGVmYXVs dDsKKysJCXZhciBiID0gKGludCkgZGVmYXVsdDsKKysJCWNvbnN0IGludCBjID0gZGVmYXVsdDsK KysJCXZhciBkID0gbmV3W10geyAxLCBkZWZhdWx0IH07CisrCQlkeW5hbWljIGUgPSBkZWZhdWx0 OworKwkJaW50IGYgPSBjaGVja2VkIChkZWZhdWx0KTsKKysJCShpbnQgYSwgaW50IGIpIGcgPSAo MSwgZGVmYXVsdCk7CisrCQl2YXIgaCA9IDEgIT0gZGVmYXVsdDsKKysJCXZhciBpID0gZGVmYXVs dCA9PSBNNCAoKTsKKysJfQorKworKwlzdGF0aWMgaW50IE0xICgpCisrCXsKKysJCXJldHVybiBk ZWZhdWx0OworKwl9CisrCisrCXN0YXRpYyB2b2lkIE0yICgpCisrCXsKKysJCXRyeSB7CisrCQkJ dGhyb3cgbmV3IFN5c3RlbS5FeGNlcHRpb24gKCk7CisrCQl9IGNhdGNoIChTeXN0ZW0uRXhjZXB0 aW9uKSB3aGVuIChkZWZhdWx0KSB7CisrCQl9CisrCisrCQlpZiAoZGVmYXVsdCkgewkJCQorKwkJ fQorKwl9CisrCisrCXN0YXRpYyB2b2lkIE0zIChpbnQgeCA9IGRlZmF1bHQpCisrCXsKKysJfQor KworKwlzdGF0aWMgU3lzdGVtLkZ1bmM8aW50PiBNNCAoKQorKwl7CisrCQlyZXR1cm4gKCkgPT4g ZGVmYXVsdDsKKysJfSAKKyt9CisrLyoKKytlbnVtIEUKKyt7CisrCUEgPSBkZWZhdWx0LAorKwlC ID0gZGVmYXVsdCArIDEKKyt9CisrKi8KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlm ZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LWRlZmF1bHQtMDIuY3MgYi9tY3MvdGVzdHMvdGVzdC1k ZWZhdWx0LTAyLmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjAw Mzk3ODJlNWYyCistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvdGVzdHMvdGVzdC1kZWZhdWx0LTAy LmNzCitAQCAtMCwwICsxLDMzIEBACisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9u OmxhdGVzdAorKworK2NsYXNzIEMKKyt7CisrCXN0YXRpYyB2b2lkIE1haW4oKQorKwl7CisrCQlN IChkZWZhdWx0LCAxKTsKKysKKysJCU0yIChkZWZhdWx0KTsKKysJCU0yIChudWxsKTsKKysKKysJ CXZhciByZXMgPSBUZXN0IChkZWZhdWx0KTsKKysJfQorKworKworKwlzdGF0aWMgdm9pZCBNPFQ+ IChUIHgsIFQgeSkKKysJeworKwl9CisrCisrCXN0YXRpYyB2b2lkIE0yIChwYXJhbXMgb2JqZWN0 W10geCkKKysJeyAgICAgICAgCisrCX0KKysKKysJc3RhdGljIGJ5dGVbXSBUZXN0IChTPGJ5dGU+ IHgpCisrCXsKKysJCXJldHVybiBudWxsOworKwl9CisrfQorKworK3N0cnVjdCBTPFQ+Cisrewor KworK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0 cy90ZXN0LWRpc2NhcmRzLTAxLmNzIGIvbWNzL3Rlc3RzL3Rlc3QtZGlzY2FyZHMtMDEuY3MKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uNTRjZjI5Nzc5YzYKKy0tLSAv ZGV2L251bGwKKysrKyBiL21jcy90ZXN0cy90ZXN0LWRpc2NhcmRzLTAxLmNzCitAQCAtMCwwICsx LDM2IEBACisrdXNpbmcgU3lzdGVtOworKworK2NsYXNzIFgKKyt7CisrCXB1YmxpYyBzdGF0aWMg dm9pZCBNYWluICgpCisrCXsKKysJCXN0cmluZyBzID0gbnVsbDsKKysKKysJCV8gPSAxOworKwkJ eworKwkJCWNoYXIgXyA9ICc0JzsKKysJCX0KKysKKysJCV8gPSBUZXN0VmFsdWUgKCk7CisrCisr CQlfID0gXyA9IHM7CisrCisrCQlieXRlIGsxOworKwkJdmFyIHMxID0gKGsxLCBfKSA9ICgxLCBz KTsKKysKKysJCUZ1bmM8b2JqZWN0PiBsMSA9ICgpID0+IF8gPSAoXywgXykgPSAoMSwgcyk7Cisr CisrCQlUcnlHZXRWYWx1ZSAob3V0IF8pOworKwl9CisrCisrCXN0YXRpYyBib29sIFRyeUdldFZh bHVlIChvdXQgaW50IGFyZykKKysJeworKwkJYXJnID0gMzsKKysJCXJldHVybiB0cnVlOworKwl9 CisrCisrCXN0YXRpYyBpbnQgVGVzdFZhbHVlICgpCisrCXsKKysJCXJldHVybiA0OworKwl9Cisr fQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL3Rl c3QtbmFtZWQtMTEuY3MgYi9tY3MvdGVzdHMvdGVzdC1uYW1lZC0xMS5jcworbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5hMDFkMjg4M2I5YworLS0tIC9kZXYvbnVsbAor KysrIGIvbWNzL3Rlc3RzL3Rlc3QtbmFtZWQtMTEuY3MKK0BAIC0wLDAgKzEsMTMgQEAKKysvLyBD b21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246Ny4yCisrCisrY2xhc3MgWAorK3sKKysJcHVi bGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJVGVzdCAoYXJnOiAxLCAiIik7CisrCX0K KysKKysJc3RhdGljIHZvaWQgVGVzdCAoaW50IGFyZywgc3RyaW5nIHN0cikKKysJeworKwl9Cisr fQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL3Rl c3QtcmVhZG9ubHktMDIuY3MgYi9tY3MvdGVzdHMvdGVzdC1yZWFkb25seS0wMi5jcworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4yMzFiOGNkOGZkYQorLS0tIC9kZXYv bnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtcmVhZG9ubHktMDIuY3MKK0BAIC0wLDAgKzEsMjcg QEAKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNpb246bGF0ZXN0CisrdXNpbmcgU3lz dGVtOworKworK3B1YmxpYyBkZWxlZ2F0ZSByZWYgcmVhZG9ubHkgaW50IEQgKGludCB4KTsKKysK KytjbGFzcyBYCisreworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCisrCX0K KysKKysJR3VpZCBnOworKworKwlyZWYgcmVhZG9ubHkgR3VpZCBUZXN0TWV0aG9kICgpCisrCXsK KysJCXJldHVybiByZWYgZzsKKysJfQorKworKwlyZWYgcmVhZG9ubHkgR3VpZCBUZXN0UHJvcCB7 CisrCQlnZXQgeworKwkJCXJlZiByZWFkb25seSB2YXIgcmcgPSByZWYgZzsKKysJCQlyZXR1cm4g cmVmIHJnOworKwkJfQorKwl9CQorKworK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor ZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LXJlYWRvbmx5LTAzLmNzIGIvbWNzL3Rlc3RzL3Rl c3QtcmVhZG9ubHktMDMuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAw MC4uMTRjYjk1OGI0MWEKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy90ZXN0cy90ZXN0LXJlYWRv bmx5LTAzLmNzCitAQCAtMCwwICsxLDE2IEBACisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2 ZXJzaW9uOmxhdGVzdAorK3VzaW5nIFN5c3RlbTsKKysKKytyZWFkb25seSBzdHJ1Y3QgUworK3sK KysJc3RhdGljIFMgc2hhcmVkID0gbmV3IFMgKCk7CisrCisrCXB1YmxpYyBTIChpbnQgYXJnKQor Kwl7CisrCQl0aGlzID0gc2hhcmVkOworKwl9CisrCisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWlu ICgpCisrCXsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdp dCBhL21jcy90ZXN0cy90ZXN0LXJlZi0wNy5jcyBiL21jcy90ZXN0cy90ZXN0LXJlZi0wNy5jcwor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi40YWExNjU3OTc1MgorLS0t IC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtcmVmLTA3LmNzCitAQCAtMCwwICsxLDMw IEBACisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorKworK3B1Ymxp YyByZWFkb25seSBwYXJ0aWFsIHJlZiBzdHJ1Y3QgVGVzdAorK3sKKysJcHVibGljIHN0YXRpYyB2 b2lkIE1haW4gKCkKKysJeworKwkJdmFyIG0gPSBuZXcgVGVzdCAoKTsKKysJCW0uTWV0aG9kICgp OworKwl9CisrCisrCVRlc3QgTWV0aG9kICgpCisrCXsKKysJCXJldHVybiBuZXcgVGVzdCAoKTsK KysJfQorK30KKysKKytyZWYgc3RydWN0IFNlY29uZAorK3sKKysJVGVzdCBmaWVsZDsKKyt9Cisr CisrcHVibGljIGFic3RyYWN0IGNsYXNzIFAKKyt7CisrCXB1YmxpYyBhYnN0cmFjdCBUZXN0IFNw YW4geyBnZXQ7IH0KKyt9CisrCisrcHVibGljIGludGVyZmFjZSBJSQorK3sKKysJVGVzdCBTcGFu IHsgZ2V0OyB9CisrfQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LXJlZi0wOC5jcyBiL21j cy90ZXN0cy90ZXN0LXJlZi0wOC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAwMDAwLi5mNGZmNTBmNGM1YworLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3Qt cmVmLTA4LmNzCitAQCAtMCwwICsxLDEwMSBAQAorK3VzaW5nIFN5c3RlbTsKKysKKytuYW1lc3Bh Y2UgQ2xhc3NMaWJyYXJ5MQorK3sKKysJcHVibGljIGNsYXNzIEMKKysJeworKworKwkJY2xhc3Mg QgorKwkJeworKwkJCWludCB2OworKwkJCXB1YmxpYyByZWYgaW50IHRoaXNbaW50IGluZGV4XQor KwkJCXsKKysJCQkJZ2V0CisrCQkJCXsKKysJCQkJCXJldHVybiByZWYgdjsKKysJCQkJfQorKwkJ CX0KKysJCX0KKysKKysKKysJCWNsYXNzIEdlbjxUPiB3aGVyZSBUIDogc3RydWN0CisrCQl7Cisr CQkJVCB2OworKwkJCXB1YmxpYyByZWYgVCB0aGlzW2ludCBpbmRleF0KKysJCQl7CisrCQkJCWdl dAorKwkJCQl7CisrCQkJCQlyZXR1cm4gcmVmIHY7CisrCQkJCX0KKysJCQl9CisrCQl9CisrCisr CQlzdHJ1Y3QgVmFsCisrCQl7CisrCQl9CisrCisrCQljbGFzcyBCQgorKwkJeworKwkJCVZhbCB2 OworKwkJCXB1YmxpYyByZWYgVmFsIHRoaXNbaW50IGluZGV4XQorKwkJCXsKKysJCQkJZ2V0Cisr CQkJCXsKKysJCQkJCXJldHVybiByZWYgdjsKKysJCQkJfQorKwkJCX0KKysJCX0KKysKKysJCXZv aWQgTU0gKCkKKysJCXsKKysJCQl2YXIgYmJiID0gbmV3IEJCKCk7CisrCQkJVmFsIHYxID0gYmJi WzBdOworKwkJCWJiYlsxXSA9IHYxOworKworKwkJCXJlZiBWYWwgdjIgPSByZWYgYmJiWzJdOwor KwkJCWJiYlsyXSA9IHYyOworKwkJfQorKworKwkJc3RhdGljIGludFtdIGEgPSBuZXcgaW50WzFd OworKwkJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQorKwkJeworKwkJCXZhciBiYiA9IG5ldyBC KCk7CisrCQkJaW50IGIgPSAxOworKwkJCWJiWzBdID0gYjsKKysJCQlhWzBdID0gQWRkMihyZWYg YiwgMik7CisrCisrCQkJdmFyIGJiYiA9IG5ldyBCQigpOworKwkJCWJiYlswXSA9IG5ldyBWYWwo KTsKKysKKysJCQl2YXIgdiA9IG5ldyBWYWwoKTsKKysJCQliYmJbMV0gPSB2OworKworKwkJCXZh ciB2MiA9IGJiYlsyXTsKKysKKysJCQliYmJbM10gPSB2MjsKKysKKysKKysJCQliYmJbM10gPSBi YmJbMl07CisrCisrCisrCisrCQkJdmFyIGdnZyA9IG5ldyBHZW48VmFsPigpOworKwkJCWdnZ1sw XSA9IG5ldyBWYWwoKTsKKysKKysJCQl2YXIgZyA9IG5ldyBWYWwoKTsKKysJCQlnZ2dbMV0gPSB2 OworKworKwkJCXZhciBnMiA9IGdnZ1syXTsKKysKKysJCQlnZ2dbM10gPSB2MjsKKysKKysKKysJ CQlnZ2dbM10gPSBnZ2dbMl07CisrCQl9CisrCisrCQlwdWJsaWMgc3RhdGljIHJlZiBpbnQgQWRk MihyZWYgaW50IGEsIGludCBiKQorKwkJeworKwkJCXJldHVybiByZWYgYTsKKysJCX0KKysJfQor K30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90 ZXN0LXJlZi0wOS5jcyBiL21jcy90ZXN0cy90ZXN0LXJlZi0wOS5jcworbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi41ZDBlODllNWMxYQorLS0tIC9kZXYvbnVsbAorKysr IGIvbWNzL3Rlc3RzL3Rlc3QtcmVmLTA5LmNzCitAQCAtMCwwICsxLDEyIEBACisrc3RydWN0IHJp Z2lkYm9keSB7IHB1YmxpYyBmbG9hdCB4OyB9CisrCisrY2xhc3MgUHJvZ3JhbQorK3sKKysJc3Rh dGljIHJpZ2lkYm9keSBhOworKwlzdGF0aWMgcmVmIHJpZ2lkYm9keSBwcm9wZXJ0eV9yZXR1cm5p bmdfc3RydWN0X2J5X3JlZiA9PiByZWYgYTsKKysKKysJc3RhdGljIHZvaWQgTWFpbigpCisrCXsK KysJCVN5c3RlbS5Db25zb2xlLldyaXRlTGluZSAocHJvcGVydHlfcmV0dXJuaW5nX3N0cnVjdF9i eV9yZWYueCk7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1n aXQgYS9tY3MvdGVzdHMvdGVzdC1yZWYtMTAuY3MgYi9tY3MvdGVzdHMvdGVzdC1yZWYtMTAuY3MK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uODhlMjAxZDMxNzQKKy0t LSAvZGV2L251bGwKKysrKyBiL21jcy90ZXN0cy90ZXN0LXJlZi0xMC5jcworQEAgLTAsMCArMSwy NCBAQAorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjpsYXRlc3QKKysKKyt1c2lu ZyBTeXN0ZW07CisrCisrcmVmIHN0cnVjdCBWYWx1ZVN0cmluZ0J1aWxkZXIKKyt7CisrCXB1Ymxp YyBvdmVycmlkZSBzdHJpbmcgVG9TdHJpbmcgKCkKKysJeworKwkJcmV0dXJuICJhYWEiOworKwl9 CisrfQorKworKworK2NsYXNzIFgKKyt7CisrCXB1YmxpYyBzdGF0aWMgaW50IE1haW4gKCkKKysJ eworKwkJdmFyIHMgPSBuZXcgVmFsdWVTdHJpbmdCdWlsZGVyICgpOworKwkJaWYgKHMuVG9TdHJp bmcgKCkgIT0gImFhYSIpCisrCQkJcmV0dXJuIDE7CisrCisrCQlyZXR1cm4gMDsKKysJfQorK30K K1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0 LXR1cGxlLTA3LmNzIGIvbWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMDcuY3MKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uY2M3Y2U1ODM3Y2UKKy0tLSAvZGV2L251bGwKKysr KyBiL21jcy90ZXN0cy90ZXN0LXR1cGxlLTA3LmNzCitAQCAtMCwwICsxLDE2IEBACisrdXNpbmcg U3lzdGVtOworK3VzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOworKworKy8vIFBhcnNl ciB0ZXN0cworKworK2NsYXNzIFBhcnNlclRlc3QKKyt7CisrCUlFbnVtZXJhYmxlPChPYmplY3Qg dmVydGV4LCBpbnQgZGlzdGFuY2UpPiBUZXN0ICgpCisrCXsKKysJCXJldHVybiBudWxsOworKwl9 CisrCisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgpCisrCXsJCQorKwl9CisrfQorXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL3Rlc3QtdHVwbGUt MDkuY3MgYi9tY3MvdGVzdHMvdGVzdC10dXBsZS0wOS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAwMDAwLi4zZjE1Y2FlNmNmMQorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNz L3Rlc3RzL3Rlc3QtdHVwbGUtMDkuY3MKK0BAIC0wLDAgKzEsMTkgQEAKKyt1c2luZyBTeXN0ZW07 CisrCisrY2xhc3MgVHVwbGVEZWNvbnN0cnVjdGlvbkRlY2xhcmF0aW9uCisreworKwlwdWJsaWMg c3RhdGljIGludCBNYWluICgpCisrCXsKKysJCShzdHJpbmcgcywgbG9uZyBsKSA9IEdldFZhbHVl cyAoKTsKKysJCSh2YXIgdnMsIHZhciB2bCkgPSBHZXRWYWx1ZXMgKCk7CisrCQkob2JqZWN0IG8s IHZhciB2bDIpID0gR2V0VmFsdWVzICgpOworKwkJKHN0cmluZyBkcywgXykgPSBHZXRWYWx1ZXMg KCk7CisrCisrCQlyZXR1cm4gMDsKKysJfQorKworKwlzdGF0aWMgKHN0cmluZywgbG9uZykgR2V0 VmFsdWVzICgpCisrCXsKKysJCXJldHVybiAoImEiLCAzKTsKKysJfQorK30KK1wgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy92ZXItaWwtbmV0XzRfeC54 bWwgYi9tY3MvdGVzdHMvdmVyLWlsLW5ldF80X3gueG1sCitpbmRleCBjMmM5ODEyMzMwNS4uNGRi YzcwNDJhOGEgMTAwNjQ0CistLS0gYS9tY3MvdGVzdHMvdmVyLWlsLW5ldF80X3gueG1sCisrKysg Yi9tY3MvdGVzdHMvdmVyLWlsLW5ldF80X3gueG1sCitAQCAtMTQ2NTksNiArMTQ2NTksOSBAQAor ICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBUZXN0XzIyKEJvb2xlYW4pIiBhdHRycz0iMTI5Ij4K KyAgICAgICAgIDxzaXplPjI0PC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRo b2QgbmFtZT0iVm9pZCBUZXN0XzIzKFN5c3RlbS5TdHJpbmcpIiBhdHRycz0iMTI5Ij4KKysgICAg ICAgIDxzaXplPjE2PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorICAgICA8L3R5cGU+CisgICA8 L3Rlc3Q+CisgICA8dGVzdCBuYW1lPSJndGVzdC00MTAuY3MiPgorQEAgLTUyODA4LDYgKzUyODEx LDE5IEBACisgICAgICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKysgIDx0 ZXN0IG5hbWU9InRlc3QtOTQ4LmNzIj4KKysgICAgPHR5cGUgbmFtZT0iWCI+CisrICAgICAgPG1l dGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT4xNjwv c2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgRm9vKCki IGF0dHJzPSIxMjkiPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4K KysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAg ICAgPHNpemU+Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90 ZXN0PgorICAgPHRlc3QgbmFtZT0idGVzdC05NS5jcyI+CisgICAgIDx0eXBlIG5hbWU9IlgiPgor ICAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4KK0BAIC02Njg5 Myw2ICs2NjkwOSwxMTcgQEAKKyAgICAgICA8L21ldGhvZD4KKyAgICAgPC90eXBlPgorICAgPC90 ZXN0PgorKyAgPHRlc3QgbmFtZT0idGVzdC1hc3luYy05NC5jcyI+CisrICAgIDx0eXBlIG5hbWU9 Ik15VGFza2AxW1RdIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9 IjYyNzgiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAg PC90eXBlPgorKyAgICA8dHlwZSBuYW1lPSJNeVRhc2siPgorKyAgICAgIDxtZXRob2QgbmFtZT0i Vm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9zaXplPgorKyAg ICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICAgIDx0eXBlIG5hbWU9Ik15VGFza01ldGhv ZEJ1aWxkZXIiPgorKyAgICAgIDxtZXRob2QgbmFtZT0iTXlUYXNrTWV0aG9kQnVpbGRlciBDcmVh dGUoKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT4xMDwvc2l6ZT4KKysgICAgICA8L21l dGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9Ik15VGFzayBnZXRfVGFzaygpIiBhdHRycz0iMjE4 MiI+CisrICAgICAgICA8c2l6ZT4xMDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8 bWV0aG9kIG5hbWU9IlZvaWQgU2V0RXhjZXB0aW9uKFN5c3RlbS5FeGNlcHRpb24pIiBhdHRycz0i MTM0Ij4KKysgICAgICAgIDxzaXplPjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAg PG1ldGhvZCBuYW1lPSJWb2lkIFNldFJlc3VsdCgpIiBhdHRycz0iMTM0Ij4KKysgICAgICAgIDxz aXplPjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lk IEF3YWl0T25Db21wbGV0ZWRbVEF3YWl0ZXIsVFN0YXRlTWFjaGluZV0oVEF3YWl0ZXIgQnlSZWYs IFRTdGF0ZU1hY2hpbmUgQnlSZWYpIiBhdHRycz0iMTM0Ij4KKysgICAgICAgIDxzaXplPjI8L3Np emU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIEF3YWl0VW5z YWZlT25Db21wbGV0ZWRbVEF3YWl0ZXIsVFN0YXRlTWFjaGluZV0oVEF3YWl0ZXIgQnlSZWYsIFRT dGF0ZU1hY2hpbmUgQnlSZWYpIiBhdHRycz0iMTM0Ij4KKysgICAgICAgIDxzaXplPjI8L3NpemU+ CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFN0YXJ0W1RTdGF0 ZU1hY2hpbmVdKFRTdGF0ZU1hY2hpbmUgQnlSZWYpIiBhdHRycz0iMTM0Ij4KKysgICAgICAgIDxz aXplPjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lk IFNldFN0YXRlTWFjaGluZShTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzLklBc3luY1N0 YXRlTWFjaGluZSkiIGF0dHJzPSIxMzQiPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAg ICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYy NzgiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90 eXBlPgorKyAgICA8dHlwZSBuYW1lPSJNeVRhc2tNZXRob2RCdWlsZGVyYDFbVF0iPgorKyAgICAg IDxtZXRob2QgbmFtZT0iTXlUYXNrTWV0aG9kQnVpbGRlcmAxW1RdIENyZWF0ZSgpIiBhdHRycz0i MTUwIj4KKysgICAgICAgIDxzaXplPjEwPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAg IDxtZXRob2QgbmFtZT0iTXlUYXNrYDFbVF0gZ2V0X1Rhc2soKSIgYXR0cnM9IjIxODIiPgorKyAg ICAgICAgPHNpemU+MTA8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBu YW1lPSJWb2lkIFNldEV4Y2VwdGlvbihTeXN0ZW0uRXhjZXB0aW9uKSIgYXR0cnM9IjEzNCI+Cisr ICAgICAgICA8c2l6ZT4yPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2Qg bmFtZT0iVm9pZCBTZXRSZXN1bHQoVCkiIGF0dHJzPSIxMzQiPgorKyAgICAgICAgPHNpemU+Mjwv c2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgQXdhaXRP bkNvbXBsZXRlZFtUQXdhaXRlcixUU3RhdGVNYWNoaW5lXShUQXdhaXRlciBCeVJlZiwgVFN0YXRl TWFjaGluZSBCeVJlZikiIGF0dHJzPSIxMzQiPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysg ICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgQXdhaXRVbnNhZmVPbkNv bXBsZXRlZFtUQXdhaXRlcixUU3RhdGVNYWNoaW5lXShUQXdhaXRlciBCeVJlZiwgVFN0YXRlTWFj aGluZSBCeVJlZikiIGF0dHJzPSIxMzQiPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAg ICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgU3RhcnRbVFN0YXRlTWFjaGlu ZV0oVFN0YXRlTWFjaGluZSBCeVJlZikiIGF0dHJzPSIxMzQiPgorKyAgICAgICAgPHNpemU+Mjwv c2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgU2V0U3Rh dGVNYWNoaW5lKFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMuSUFzeW5jU3RhdGVNYWNo aW5lKSIgYXR0cnM9IjEzNCI+CisrICAgICAgICA8c2l6ZT4yPC9zaXplPgorKyAgICAgIDwvbWV0 aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+Cisr ICAgICAgICA8c2l6ZT43PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+Cisr ICAgIDx0eXBlIG5hbWU9IlgiPgorKyAgICAgIDxtZXRob2QgbmFtZT0iTXlUYXNrIFRlc3QoKSIg YXR0cnM9IjEzNCI+CisrICAgICAgICA8c2l6ZT4zMzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4K KysgICAgICA8bWV0aG9kIG5hbWU9Ik15VGFza2AxW1N5c3RlbS5JbnQzMl0gVGVzdDIoKSIgYXR0 cnM9IjEzNCI+CisrICAgICAgICA8c2l6ZT4zMzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysg ICAgICA8bWV0aG9kIG5hbWU9IlN5c3RlbS5UaHJlYWRpbmcuVGFza3MuVmFsdWVUYXNrYDFbU3lz dGVtLlN0cmluZ10gVGVzdDMoKSIgYXR0cnM9IjEzNCI+CisrICAgICAgICA8c2l6ZT4zMzwvc2l6 ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBh dHRycz0iMTUwIj4KKysgICAgICAgIDxzaXplPjIzPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgor KyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAg ICA8c2l6ZT43PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICAgIDx0 eXBlIG5hbWU9IlgrJmx0O1Rlc3QmZ3Q7Y19fYXN5bmMwIj4KKysgICAgICA8bWV0aG9kIG5hbWU9 IlZvaWQgTW92ZU5leHQoKSIgYXR0cnM9IjQ4NiI+CisrICAgICAgICA8c2l6ZT4xNTc8L3NpemU+ CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFNldFN0YXRlTWFj aGluZShTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzLklBc3luY1N0YXRlTWFjaGluZSki IGF0dHJzPSI0ODYiPgorKyAgICAgICAgPHNpemU+MTM8L3NpemU+CisrICAgICAgPC9tZXRob2Q+ CisrICAgIDwvdHlwZT4KKysgICAgPHR5cGUgbmFtZT0iWCsmbHQ7VGVzdDImZ3Q7Y19fYXN5bmMx Ij4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTW92ZU5leHQoKSIgYXR0cnM9IjQ4NiI+Cisr ICAgICAgICA8c2l6ZT4xNjU8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhv ZCBuYW1lPSJWb2lkIFNldFN0YXRlTWFjaGluZShTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZp Y2VzLklBc3luY1N0YXRlTWFjaGluZSkiIGF0dHJzPSI0ODYiPgorKyAgICAgICAgPHNpemU+MTM8 L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgICAgPHR5cGUgbmFtZT0i WCsmbHQ7VGVzdDMmZ3Q7Y19fYXN5bmMyIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTW92 ZU5leHQoKSIgYXR0cnM9IjQ4NiI+CisrICAgICAgICA8c2l6ZT4xNjk8L3NpemU+CisrICAgICAg PC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFNldFN0YXRlTWFjaGluZShTeXN0 ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzLklBc3luY1N0YXRlTWFjaGluZSkiIGF0dHJzPSI0 ODYiPgorKyAgICAgICAgPHNpemU+MTM8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwv dHlwZT4KKysgIDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9InRlc3QtY2xzLTAwLmNzIj4KKyAgICAg PHR5cGUgbmFtZT0iQ0xTQ0xhc3NfNiI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIGFkZF9E aXNwb3NlZChEZWxlZ2F0ZSkiIGF0dHJzPSIyMTgyIj4KK0BAIC02ODUyNyw2ICs2ODY1NCw0NyBA QAorICAgICAgIDwvbWV0aG9kPgorICAgICA8L3R5cGU+CisgICA8L3Rlc3Q+CisrICA8dGVzdCBu YW1lPSJ0ZXN0LWRlZmF1bHQtMDEuY3MiPgorKyAgICA8dHlwZSBuYW1lPSJYIj4KKysgICAgICA8 bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4KKysgICAgICAgIDxzaXplPjUz PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgTTEo KSIgYXR0cnM9IjE0NSI+CisrICAgICAgICA8c2l6ZT4xMDwvc2l6ZT4KKysgICAgICA8L21ldGhv ZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTTIoKSIgYXR0cnM9IjE0NSI+CisrICAgICAg ICA8c2l6ZT4zMTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9 IlZvaWQgTTMoSW50MzIpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxzaXplPjI8L3NpemU+Cisr ICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJTeXN0ZW0uRnVuY2AxW1N5c3Rl bS5JbnQzMl0gTTQoKSIgYXR0cnM9IjE0NSI+CisrICAgICAgICA8c2l6ZT4zODwvc2l6ZT4KKysg ICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IkludDMyICZsdDtNNCZndDttX18w KCkiIGF0dHJzPSIxNDUiPgorKyAgICAgICAgPHNpemU+OTwvc2l6ZT4KKysgICAgICA8L21ldGhv ZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0PgorKyAgPHRlc3QgbmFtZT0idGVzdC1kZWZhdWx0 LTAyLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iQyI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lk IE1haW4oKSIgYXR0cnM9IjE0NSI+CisrICAgICAgICA8c2l6ZT4zNjwvc2l6ZT4KKysgICAgICA8 L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTVtUXShULCBUKSIgYXR0cnM9IjE0 NSI+CisrICAgICAgICA8c2l6ZT4yPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxt ZXRob2QgbmFtZT0iVm9pZCBNMihTeXN0ZW0uT2JqZWN0W10pIiBhdHRycz0iMTQ1Ij4KKysgICAg ICAgIDxzaXplPjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1l PSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+Cisr ICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJCeXRlW10gVGVzdChTYDFbU3lz dGVtLkJ5dGVdKSIgYXR0cnM9IjE0NSI+CisrICAgICAgICA8c2l6ZT4xMDwvc2l6ZT4KKysgICAg ICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0PgorICAgPHRlc3QgbmFtZT0idGVz dC1kaWN0aW5pdC0wMS5jcyI+CisgICAgIDx0eXBlIG5hbWU9IlByb2dyYW0iPgorICAgICAgIDxt ZXRob2QgbmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTQ1Ij4KK0BAIC02ODYxMCw2ICs2ODc3 OCwzMCBAQAorICAgICAgIDwvbWV0aG9kPgorICAgICA8L3R5cGU+CisgICA8L3Rlc3Q+CisrICA8 dGVzdCBuYW1lPSJ0ZXN0LWRpc2NhcmRzLTAxLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iWCI+Cisr ICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8 c2l6ZT42Mzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IkJv b2xlYW4gVHJ5R2V0VmFsdWUoSW50MzIgQnlSZWYpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxz aXplPjEzPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iSW50 MzIgVGVzdFZhbHVlKCkiIGF0dHJzPSIxNDUiPgorKyAgICAgICAgPHNpemU+MTA8L3NpemU+Cisr ICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJz PSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAg IDwvdHlwZT4KKysgICAgPHR5cGUgbmFtZT0iWCsmbHQ7TWFpbiZndDtjX19Bbm9uU3RvcmV5MCI+ CisrICAgICAgPG1ldGhvZCBuYW1lPSJTeXN0ZW0uT2JqZWN0ICZsdDsmZ3Q7bV9fMCgpIiBhdHRy cz0iMTMxIj4KKysgICAgICAgIDxzaXplPjI1PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAg ICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8 c2l6ZT43PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICA8L3Rlc3Q+ CisgICA8dGVzdCBuYW1lPSJ0ZXN0LWV4LWZpbHRlci0wMS5jcyI+CisgICAgIDx0eXBlIG5hbWU9 IlgiPgorICAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4KK0BA IC03MDY4OSw2ICs3MDg4MSwxOSBAQAorICAgICAgIDwvbWV0aG9kPgorICAgICA8L3R5cGU+Cisg ICA8L3Rlc3Q+CisrICA8dGVzdCBuYW1lPSJ0ZXN0LW5hbWVkLTExLmNzIj4KKysgICAgPHR5cGUg bmFtZT0iWCI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+ CisrICAgICAgICA8c2l6ZT4xMzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0 aG9kIG5hbWU9IlZvaWQgVGVzdChJbnQzMiwgU3lzdGVtLlN0cmluZykiIGF0dHJzPSIxNDUiPgor KyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9k IG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6 ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0PgorICAgPHRlc3Qg bmFtZT0idGVzdC1uYW1lb2YtMDEuY3MiPgorICAgICA8dHlwZSBuYW1lPSJYIj4KKyAgICAgICA8 bWV0aG9kIG5hbWU9IkludDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+CitAQCAtNzI3NzgsNiArNzI5 ODMsNDkgQEAKKyAgICAgICA8L21ldGhvZD4KKyAgICAgPC90eXBlPgorICAgPC90ZXN0PgorKyAg PHRlc3QgbmFtZT0idGVzdC1yZWFkb25seS0wMi5jcyI+CisrICAgIDx0eXBlIG5hbWU9IkQiPgor KyAgICAgIDxtZXRob2QgbmFtZT0iSW50MzImYW1wOyBJbnZva2UoSW50MzIpIiBhdHRycz0iNDU0 Ij4KKysgICAgICAgIDxzaXplPjA8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1l dGhvZCBuYW1lPSJTeXN0ZW0uSUFzeW5jUmVzdWx0IEJlZ2luSW52b2tlKEludDMyLCBTeXN0ZW0u QXN5bmNDYWxsYmFjaywgU3lzdGVtLk9iamVjdCkiIGF0dHJzPSI0NTQiPgorKyAgICAgICAgPHNp emU+MDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IkludDMy JmFtcDsgRW5kSW52b2tlKFN5c3RlbS5JQXN5bmNSZXN1bHQpIiBhdHRycz0iNDU0Ij4KKysgICAg ICAgIDxzaXplPjA8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1l PSJWb2lkIC5jdG9yKE9iamVjdCwgSW50UHRyKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNp emU+MDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlwZSBu YW1lPSJYIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4K KysgICAgICAgIDxzaXplPjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhv ZCBuYW1lPSJTeXN0ZW0uR3VpZCZhbXA7IFRlc3RNZXRob2QoKSIgYXR0cnM9IjEyOSI+CisrICAg ICAgICA8c2l6ZT4xNTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5h bWU9IlN5c3RlbS5HdWlkJmFtcDsgZ2V0X1Rlc3RQcm9wKCkiIGF0dHJzPSIyMTc3Ij4KKysgICAg ICAgIDxzaXplPjE3PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFt ZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9zaXplPgor KyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICA8L3Rlc3Q+CisrICA8dGVzdCBuYW1l PSJ0ZXN0LXJlYWRvbmx5LTAzLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iUyI+CisrICAgICAgPG1l dGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT4yPC9z aXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcihJ bnQzMikiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjEzPC9zaXplPgorKyAgICAgIDwv bWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY2N0b3IoKSIgYXR0cnM9IjYyODki PgorKyAgICAgICAgPHNpemU+MTU8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlw ZT4KKysgIDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9InRlc3QtcmVmLTAxLmNzIj4KKyAgICAgPHR5 cGUgbmFtZT0iWCI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1 MCI+CitAQCAtNzI5MDYsNiArNzMxNTQsOTUgQEAKKyAgICAgICA8L21ldGhvZD4KKyAgICAgPC90 eXBlPgorICAgPC90ZXN0PgorKyAgPHRlc3QgbmFtZT0idGVzdC1yZWYtMDcuY3MiPgorKyAgICA8 dHlwZSBuYW1lPSJUZXN0Ij4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRy cz0iMTUwIj4KKysgICAgICAgIDxzaXplPjE4PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAg ICAgIDxtZXRob2QgbmFtZT0iVGVzdCBNZXRob2QoKSIgYXR0cnM9IjEyOSI+CisrICAgICAgICA8 c2l6ZT4xODwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlw ZSBuYW1lPSJQIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlRlc3QgZ2V0X1NwYW4oKSIgYXR0cnM9 IjM1MjYiPgorKyAgICAgICAgPHNpemU+MDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAg ICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzYiPgorKyAgICAgICAgPHNp emU+Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0Pgor KyAgPHRlc3QgbmFtZT0idGVzdC1yZWYtMDguY3MiPgorKyAgICA8dHlwZSBuYW1lPSJDbGFzc0xp YnJhcnkxLkMiPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBNTSgpIiBhdHRycz0iMTI5Ij4K KysgICAgICAgIDxzaXplPjYwPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRo b2QgbmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNTAiPgorKyAgICAgICAgPHNpemU+MjQ1PC9z aXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iSW50MzImYW1wOyBB ZGQyKEludDMyIEJ5UmVmLCBJbnQzMikiIGF0dHJzPSIxNTAiPgorKyAgICAgICAgPHNpemU+MTA8 L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9y KCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRo b2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jY3RvcigpIiBhdHRycz0iNjI4OSI+Cisr ICAgICAgICA8c2l6ZT4xMjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgor KyAgICA8dHlwZSBuYW1lPSJDbGFzc0xpYnJhcnkxLkMrQiI+CisrICAgICAgPG1ldGhvZCBuYW1l PSJJbnQzMiZhbXA7IGdldF9JdGVtKEludDMyKSIgYXR0cnM9IjIxODIiPgorKyAgICAgICAgPHNp emU+MTU8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lk IC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAg PC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgICAgPHR5cGUgbmFtZT0iQ2xhc3NMaWJyYXJ5MS5D K0dlbmAxW1RdIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlQmYW1wOyBnZXRfSXRlbShJbnQzMiki IGF0dHJzPSIyMTgyIj4KKysgICAgICAgIDxzaXplPjE1PC9zaXplPgorKyAgICAgIDwvbWV0aG9k PgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAg ICAgICA8c2l6ZT43PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICAg IDx0eXBlIG5hbWU9IkNsYXNzTGlicmFyeTEuQytCQiI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJW YWwmYW1wOyBnZXRfSXRlbShJbnQzMikiIGF0dHJzPSIyMTgyIj4KKysgICAgICAgIDxzaXplPjE1 PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3Rv cigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9zaXplPgorKyAgICAgIDwvbWV0 aG9kPgorKyAgICA8L3R5cGU+CisrICA8L3Rlc3Q+CisrICA8dGVzdCBuYW1lPSJ0ZXN0LXJlZi0w OS5jcyI+CisrICAgIDx0eXBlIG5hbWU9IlByb2dyYW0iPgorKyAgICAgIDxtZXRob2QgbmFtZT0i cmlnaWRib2R5JmFtcDsgZ2V0X3Byb3BlcnR5X3JldHVybmluZ19zdHJ1Y3RfYnlfcmVmKCkiIGF0 dHJzPSIyMTkzIj4KKysgICAgICAgIDxzaXplPjEzPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgor KyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNDUiPgorKyAgICAgICAg PHNpemU+MTc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJW b2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAg ICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRl c3QtcmVmLTEwLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iVmFsdWVTdHJpbmdCdWlsZGVyIj4KKysg ICAgICA8bWV0aG9kIG5hbWU9IlN5c3RlbS5TdHJpbmcgVG9TdHJpbmcoKSIgYXR0cnM9IjE5OCI+ CisrICAgICAgICA8c2l6ZT4xNDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBl PgorKyAgICA8dHlwZSBuYW1lPSJYIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IkludDMyIE1haW4o KSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT40Nzwvc2l6ZT4KKysgICAgICA8L21ldGhv ZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAg ICAgICAgPHNpemU+Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAg PC90ZXN0PgorICAgPHRlc3QgbmFtZT0idGVzdC1zdGF0aWMtdXNpbmctMDEuY3MiPgorICAgICA8 dHlwZSBuYW1lPSJBLkIuWCI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBUZXN0KCkiIGF0 dHJzPSIxNTAiPgorQEAgLTczMzc0LDYgKzczNzExLDU2IEBACisgICAgICAgPC9tZXRob2Q+Cisg ICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtdHVwbGUtMDcuY3Mi PgorKyAgICA8dHlwZSBuYW1lPSJQYXJzZXJUZXN0Ij4KKysgICAgICA8bWV0aG9kIG5hbWU9IlN5 c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLklFbnVtZXJhYmxlYDFbU3lzdGVtLlZhbHVlVHVwbGVg MltTeXN0ZW0uT2JqZWN0LFN5c3RlbS5JbnQzMl1dIFRlc3QoKSIgYXR0cnM9IjEyOSI+CisrICAg ICAgICA8c2l6ZT4xMDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5h bWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4KKysgICAgICAgIDxzaXplPjI8L3NpemU+Cisr ICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJz PSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAg IDwvdHlwZT4KKysgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtdHVwbGUtMDguY3MiPgor KyAgICA8dHlwZSBuYW1lPSJYIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBh dHRycz0iMTUwIj4KKysgICAgICAgIDxzaXplPjE5PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgor KyAgICAgIDxtZXRob2QgbmFtZT0iU3lzdGVtLlRocmVhZGluZy5UYXNrcy5UYXNrIFRlc3QoKSIg YXR0cnM9IjEyOSI+CisrICAgICAgICA8c2l6ZT40MTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4K KysgICAgICA8bWV0aG9kIG5hbWU9IlN5c3RlbS5UaHJlYWRpbmcuVGFza3MuVGFza2AxW1N5c3Rl bS5WYWx1ZVR1cGxlYDJbU3lzdGVtLkludDMyLFN5c3RlbS5JbnQzMl1dIFdhaXRpbmcoKSIgYXR0 cnM9IjEyOSI+CisrICAgICAgICA8c2l6ZT4yMTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysg ICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAg PHNpemU+Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlw ZSBuYW1lPSJYKyZsdDtUZXN0Jmd0O2NfX2FzeW5jMCI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJW b2lkIE1vdmVOZXh0KCkiIGF0dHJzPSI0ODYiPgorKyAgICAgICAgPHNpemU+MjEyPC9zaXplPgor KyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBTZXRTdGF0ZU1hY2hp bmUoU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcy5JQXN5bmNTdGF0ZU1hY2hpbmUpIiBh dHRycz0iNDg2Ij4KKysgICAgICAgIDxzaXplPjEzPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgor KyAgICA8L3R5cGU+CisrICA8L3Rlc3Q+CisrICA8dGVzdCBuYW1lPSJ0ZXN0LXR1cGxlLTA5LmNz Ij4KKysgICAgPHR5cGUgbmFtZT0iVHVwbGVEZWNvbnN0cnVjdGlvbkRlY2xhcmF0aW9uIj4KKysg ICAgICA8bWV0aG9kIG5hbWU9IkludDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8 c2l6ZT45OTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlN5 c3RlbS5WYWx1ZVR1cGxlYDJbU3lzdGVtLlN0cmluZyxTeXN0ZW0uSW50NjRdIEdldFZhbHVlcygp IiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxzaXplPjIxPC9zaXplPgorKyAgICAgIDwvbWV0aG9k PgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAg ICAgICA8c2l6ZT43PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICA8 L3Rlc3Q+CisgICA8dGVzdCBuYW1lPSJ0ZXN0LXZhci0wMS5jcyI+CisgICAgIDx0eXBlIG5hbWU9 IlRlc3QiPgorICAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4K LS0gCjIuNDUuMgoK --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0020-gnu-Add-libgdiplus.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0020-gnu-Add-libgdiplus.patch RnJvbSA0ZGJkNTljYmNlZGFmYjQwMWE5MzhhMzdjNzQ1MjIzZDY2MWE4ZDYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8NGRiZDU5Y2JjZWRhZmI0MDFhOTM4YTM3Yzc0NTIy M2Q2NjFhOGQ2My4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFdlZCwgMjcgTm92IDIwMjQgMDA6 NTY6MDAKU3ViamVjdDogW1BBVENIIDIwLzIxXSBnbnU6IEFkZCBsaWJnZGlwbHVzLgoKKiBnbnUv cGFja2FnZXMvZG90bmV0LnNjbSAobGliZ2RpcGx1cyk6IE5ldyB2YXJpYWJsZS4KCkNoYW5nZS1J ZDogSTQ5MjI1NGMwOWZkNmM5YzhiMGJjNjMzZTFmOTU2NjViZmE5ZmU5NmEKLS0tCiBnbnUvcGFj a2FnZXMvZG90bmV0LnNjbSB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2du dS9wYWNrYWdlcy9kb3RuZXQuc2NtIGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KaW5kZXggMzMw OWNlYzNmNS4uM2UyZWNhMTg3MSAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20K KysrIGIvZ251L3BhY2thZ2VzL2RvdG5ldC5zY20KQEAgLTE1OTEsMyArMTU5MSw0NyBAQCAoZGVm aW5lLXB1YmxpYyBtb25vLTUuMTAuMAogICAgICAgICAgICAgICAgICAgICAgICgoIkZhY2FkZXMv U3lzdGVtXFwuRGF0YVxcLkNvbW1vbl9SRUZTIDo9ICIgYWxsKQogICAgICAgICAgICAgICAgICAg ICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbSBTeXN0ZW0uWG1sICIpKSkKICAgICAgICAg ICAgICAgICAgICAgKGFwcGx5IGludm9rZSAibWFrZSIgIkNTQz1tY3MiIG1ha2UtZmxhZ3MpKSkp KSkpKSkpKQorCisoZGVmaW5lLXB1YmxpYyBsaWJnZGlwbHVzCisgIChwYWNrYWdlCisgICAgKG5h bWUgImxpYmdkaXBsdXMiKQorICAgICh2ZXJzaW9uICI2LjIiKQorICAgIChzb3VyY2UKKyAgICAg KG9yaWdpbgorICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICh1cmkgKGdpdC1yZWZl cmVuY2UKKwkgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9tb25vL2xpYmdkaXBsdXMuZ2l0 IikKKwkgICAgIChjb21taXQgIjk0YTQ5ODc1NDg3ZTI5NjM3NmYyMDlmZTY0YjkyMWM2MDIwZjc0 YzAiKSkpCisgICAgICAgKGZpbGUtbmFtZSAoZ2l0LWZpbGUtbmFtZSBuYW1lIHZlcnNpb24pKQor ICAgICAgIChzaGEyNTYKKwkoYmFzZTMyCisJICIxZ3dtaHJkZHI4a2RsZnByanFjZDZncWl5OHA1 djhzbDkyMTVkYmQ5NDlqMWw3NnN6bDl2IikpCisgICAgICAgKG1vZHVsZXMgJygoZ3VpeCBidWls ZCB1dGlscykpKQorICAgICAgIChzbmlwcGV0ICN+KHN1YnN0aXR1dGUqICIuL01ha2VmaWxlLmFt IgorICAgICAgICAgICAgICAgICAgICAoKCJcXC4vdXBkYXRlX3N1Ym1vZHVsZXNcXC5zaCIpCisg ICAgICAgICAgICAgICAgICAgICAiOiIpKSkpKQorICAgIChidWlsZC1zeXN0ZW0gZ251LWJ1aWxk LXN5c3RlbSkKKyAgICAobmF0aXZlLWlucHV0cworICAgICAobGlzdCBhdXRvbWFrZQorICAgICAg ICAgICBhdXRvY29uZgorICAgICAgICAgICBnb29nbGV0ZXN0LTEuOAorICAgICAgICAgICBsaWJ0 b29sCisgICAgICAgICAgIHBrZy1jb25maWcKKyAgICAgICAgICAgd2hpY2gpKQorICAgIChpbnB1 dHMgKGxpc3QgY2Fpcm8KKyAgICAgICAgICAgICAgICAgIGZyZWV0eXBlCisgICAgICAgICAgICAg ICAgICBmb250Y29uZmlnCisgICAgICAgICAgICAgICAgICBnZXR0ZXh0LW1pbmltYWwKKyAgICAg ICAgICAgICAgICAgIGdpZmxpYgorICAgICAgICAgICAgICAgICAgZ2xpYgorICAgICAgICAgICAg ICAgICAgbGliZXhpZgorICAgICAgICAgICAgICAgICAgbGlianBlZy10dXJibworICAgICAgICAg ICAgICAgICAgbGlicG5nCisgICAgICAgICAgICAgICAgICBsaWJ0aWZmCisgICAgICAgICAgICAg ICAgICBsaWJ4MTEpKQorICAgIChzeW5vcHNpcyAiT3BlbiBTb3VyY2UgaW1wbGVtZW50YXRpb24g b2YgdGhlIEdESSsgQVBJIikKKyAgICAoZGVzY3JpcHRpb24gIkxpYmdkaXBsdXMgaXMgdGhlIE1v bm8gbGlicmFyeSB0aGF0IHByb3ZpZGVzIGEKK0dESSstY29tcGF0aWJsZSBBUEkgb24gbm9uLVdp bmRvd3Mgb3BlcmF0aW5nIHN5c3RlbXMuICBJdCB1c2VzIENhaXJvIHRvIGRvCittb3N0IG9mIHRo ZSBoZWF2eSBsaWZ0aW5nLiIpCisgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL21v bm8vbGliZ2RpcGx1cyIpCisgICAgKGxpY2Vuc2UgbGljZW5zZTpleHBhdCkpKQotLSAKMi40NS4y Cgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0021-gnu-Add-mono-6.12.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0021-gnu-Add-mono-6.12.0.patch RnJvbSAyODU4N2ExYzgyYzcxNGI2ZGYxYWJkNDY0ODA1ZjU1ZWEyODYxNDk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8Mjg1ODdhMWM4MmM3MTRiNmRmMWFiZDQ2NDgwNWY1 NWVhMjg2MTQ5Ni4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFdlZCwgMjcgTm92IDIwMjQgMDE6 Mzc6NDAKU3ViamVjdDogW1BBVENIIDIxLzIxXSBnbnU6IEFkZCBtb25vLTYuMTIuMC4KClRoaXMg aW5jbHVkZXMgYSBwYXRjaCB0byBhZGQgc3VwcG9ydCBmb3IgYSA8cnVucGF0aD4gZWxlbWVudCB0 bwptb25vJ3MgKi5kbGwuY29uZmlnIGFuZCAqLmV4ZS5jb25maWcgZmlsZXMuICBTZWUgbW9uby02 LjEyLjAtYWRkLXJ1bnBhdGgucGF0Y2gKZm9yIGRldGFpbHMuCgoqIGdudS9wYWNrYWdlcy9kb3Ru ZXQuc2NtCiAgKG1vbm8tNi4xMi4wLWV4dGVybmFsLXJlcG8tc3BlY3MsIG1vbm8tNi4xMi4wKTog TmV3IHZhcmlhYmxlLgoqIGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNi4xMi4wLXthZGQtcnVu cGF0aCxmaXgtQXNzZW1ibHlSZXNvbHZlcixmaXgtQ29uZGl0aW9uUGFyc2VyfS5wYXRjaDogTmV3 IHBhdGNoZXMuCiogZ251L2xvY2FsLm1rIChkaXN0X3BhdGNoX0RBVEEpOiBSZWdpc3RlciBuZXcg cGF0Y2hlcy4KCkNoYW5nZS1JZDogSTlkNWJkNWQzNjZjMzY4ZWIyMzU0ODM0MTE4MThjOTAzNzRi ZmM0ZDQKLS0tCiBnbnUvbG9jYWwubWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDMgKwogZ251L3BhY2thZ2VzL2RvdG5ldC5zY20gICAgICAgICAgICAgICAgICAgICAgIHwg MTk0ICsrKysrKysrKysrKysrCiAuLi4vcGF0Y2hlcy9tb25vLTYuMTIuMC1hZGQtcnVucGF0aC5w YXRjaCAgICAgfCAxODUgKysrKysrKysrKysrKysKIC4uLi9tb25vLTYuMTIuMC1maXgtQXNzZW1i bHlSZXNvbHZlci5wYXRjaCAgICB8IDIzNiArKysrKysrKysrKysrKysrKysKIC4uLi9tb25vLTYu MTIuMC1maXgtQ29uZGl0aW9uUGFyc2VyLnBhdGNoICAgICB8ICA0NiArKysrCiA1IGZpbGVzIGNo YW5nZWQsIDY2NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2Vz L3BhdGNoZXMvbW9uby02LjEyLjAtYWRkLXJ1bnBhdGgucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnbnUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTYuMTIuMC1maXgtQXNzZW1ibHlSZXNvbHZlci5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNi4xMi4w LWZpeC1Db25kaXRpb25QYXJzZXIucGF0Y2gKCmRpZmYgLS1naXQgYS9nbnUvbG9jYWwubWsgYi9n bnUvbG9jYWwubWsKaW5kZXggNmIwZWJkZjJkNy4uNDk0MTRlZGYzYSAxMDA2NDQKLS0tIGEvZ251 L2xvY2FsLm1rCisrKyBiL2dudS9sb2NhbC5tawpAQCAtMTc3Miw2ICsxNzcyLDkgQEAgZGlzdF9w YXRjaF9EQVRBID0JCQkJCQlcCiAgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNS40LjAtcGF0 Y2hlcy5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTUuOC4wLXBhdGNoZXMu cGF0Y2gJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby01LjEwLjAtbGF0ZXItbWNzLWNo YW5nZXMucGF0Y2gJXAorICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTYuMTIuMC1hZGQtcnVu cGF0aC5wYXRjaAkJXAorICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25vLTYuMTIuMC1maXgtQXNz ZW1ibHlSZXNvbHZlci5wYXRjaAlcCisgICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNi4xMi4w LWZpeC1Db25kaXRpb25QYXJzZXIucGF0Y2gJXAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb25v LW1jcy1wYXRjaGVzLWZyb20tNS4xMC4wLnBhdGNoCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMv bW9zYWljYXRjaGVyLXVuYnVuZGxlLWh0c2xpYi5wYXRjaAlcCiAgICVEJS9wYWNrYWdlcy9wYXRj aGVzL21ycmVzY3VlLXN1cHBvcnQtbG92ZS0xMS5wYXRjaAkJXApkaWZmIC0tZ2l0IGEvZ251L3Bh Y2thZ2VzL2RvdG5ldC5zY20gYi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQppbmRleCAzZTJlY2Ex ODcxLi5hZjc3NjU1MmM4IDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQorKysg Yi9nbnUvcGFja2FnZXMvZG90bmV0LnNjbQpAQCAtMTYzNSwzICsxNjM1LDE5NyBAQCAoZGVmaW5l LXB1YmxpYyBsaWJnZGlwbHVzCiBtb3N0IG9mIHRoZSBoZWF2eSBsaWZ0aW5nLiIpCiAgICAgKGhv bWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbGliZ2RpcGx1cyIpCiAgICAgKGxpY2Vu c2UgbGljZW5zZTpleHBhdCkpKQorCisoZGVmaW5lIG1vbm8tNi4xMi4wLWV4dGVybmFsLXJlcG8t c3BlY3MKKyAgJygoImFwaS1kb2MtdG9vbHMiICAgICAgICAgICAgICAgIjVkYTgxMjdhZjllNjhj OWQ1OGE5MGFhOWRlMjFmNTc0OTFkODEyNjEiCisgICAgICIwcnE4ZHhteTVhdjM2bmQyOThrNjBk OHMzODZ6aHFsdzYzeW4yeXdjMDQxNnhzZmxzY2c0IgorICAgICAjOnJlY3Vyc2l2ZT8gI3QpCisg ICAgKCJhcGktc25hcHNob3QiICAgICAgICAgICAgICAgICI4MDhlOGE5ZTRiZThkMzhlMDk3ZDJi MDkxOWNhYzM3YmMxOTU4NDRhIgorICAgICAiMWk1bWlnZHc2NDlibXhxaWk5OXEyaGQ2dmthMTF3 bGNwaGZybTk4a2I3cHByejRrNDAxYSIpCisgICAgKCJhc3BuZXR3ZWJzdGFjayIgICAgICAgICAg ICAgICJlNzdiMTJlNmNjNWVkMjYwYTk4NDQ3ZjYwOWU4ODczMzdlNDRlMjk5IgorICAgICAiMHJr czM0NHFyNGZtcDNmczEyNjRkMnFrbW0zNDhtOGQxa2pkN3o0bDk0aWlpcnduMWZxMSIpCisgICAg OzsgKCgiaHR0cHM6Ly9naXRodWIuY29tL1VuaXR5LVRlY2hub2xvZ2llcy9iZHdnYyIgImJkd2dj IikKKyAgICA7OyAgImEyN2VkZGI4MzdkNjEzY2I0Y2Y0MzY0MDVjMjNjZTM5ZWQxNmE4NmQiCisg ICAgOzsgICIiKQorICAgICgoInJlZmVyZW5jZS1hc3NlbWJsaWVzIiAiYmluYXJ5LXJlZmVyZW5j ZS1hc3NlbWJsaWVzIikKKyAgICAgImU2ODA0NmQ1MTA2YWEwMzQ5YzIzZjk1ODIxNDU2OTU1ZmMx NWI5NmIiCisgICAgICIxbXFwejI3NHFkaGw4NHk2eDhiYXpyZm1hamNmNnFhZ2lrczJnMGd5ZzRx eXF3Z3JwNDkwIikKKyAgICAoImJvY2tidWlsZCIgICAgICAgICAgICAgICAgICAgIjNiZDQ0ZjY3 ODRiODViMWVjZThiMDBiMTNkMTJjZjQxNmY1YTg3ZTciCisgICAgICIwejNkOHF5bGZ3bmxrbHBj dnNtc2d5NW4yNDhnY2ZmNXZtenFqemFsZmo3ZDFoN3ZjanhzIikKKyAgICAoImJvcmluZ3NzbCIg ICAgICAgICAgICAgICAgICAgIjI5NjEzN2NmOTg5Njg4YjAzZWQ4OWY3MmNkN2JmZDg2ZDQ3MDQ0 MWUiCisgICAgICIxMWdoZGF5ZmN2eXNuaDE2MTdiajQ3OGh4cmc3YjQzanBrN3ZnYWZtNmpiN3lr cHhsOGZhIikKKyAgICAoImNlY2lsIiAgICAgICAgICAgICAgICAgICAgICAgIjgwMjFmM2ZiZTc1 NzE1YTE3NjJlNzI1NTk0ZDhjMDBjY2UzNjc5ZDgiCisgICAgICIwajE5bHdiczMweTJ4ejhteWsw ZmJ4czRoYmFsMXA4dnFqbW5rdm4zMDF2MHh4YWN5bnhtIikKKyAgICAoKCJjZWNpbCIgImNlY2ls LWxlZ2FjeSIpICAgICAgIjMzZDUwYjg3NGZkNTI3MTE4YmMzNjFkODNkZTNkNDk0ZThiYjU1ZTEi CisgICAgICIxcDRobDE3OTZpYjI2eWt5ZjVzbmw2Y2owbHgwdjdtamgweHFoanc2cWRoNzUzbnNq eWhiIikKKyAgICAoImNvcmVmeCIgICAgICAgICAgICAgICAgICAgICAgImM0ZWVhYjlmYzJmYWEw MTk1YTgxMmU1NTJjZDczZWUyOThkMzkzODYiCisgICAgICIwMzUzMHBmNmRkZHFsaWh2YjgzbTl6 MzRiYXJrOG16cmZmbnJjbHE3MjZnbmRmZzR2cXM4IikKKyAgICAoImNvcmVydCIgICAgICAgICAg ICAgICAgICAgICAgIjExMTM2YWQ1NTc2NzQ4NTA2MzIyNmJlMDhjZmJkMzJlZDU3NGNhNDMiCisg ICAgICIxZzBxODNmZmYxMzIzN253c2ZjbWs3Zm16d3gwa3Y5M3pzcXF5YmNpZ3dpcDV4NmFuaThm IikKKyAgICAoImhlbGl4LWJpbmFyaWVzIiAgICAgICAgICAgICAgIjY0YjNhNjc2MzFhYzhhMDhm ZjgyZDYxMDg3Y2ZiZmM2NjRlYjRhZjgiCisgICAgICIxZjZra3BiemozYng5cDFoYjM2a3pqcTBw cGNrazRycG1qbnI4Mmh5cTd5MThmd2lrZmQ3IikKKyAgICAoImlrZGFzbSIgICAgICAgICAgICAg ICAgICAgICAgImYwZmQ2NmVhMDYzOTI5ZWY1ZDUxYWFmZGIxMDgzMjE2NDgzNWJiMGYiCisgICAg ICIwMzEzcHZtbWpoMDFoOWIzMDZqZDZjZDZmY2JuYnhhZ2xhajgxbTBsMGFjZjR5bjd6YjEwIikK KyAgICAoKCJpa3ZtLWZvcmsiICJpa3ZtIikgICAgICAgICAgIjA4MjY2YWM4YzBiNjIwY2M5Mjlm ZmFlYjFmMjNhYzM3NjI5Y2U4MjUiCisgICAgICIxZzB2MXY4bnZ4a3dxN3c5cXlxaGY5a2dteHEz cW02cnN3NGFsOHgwdzNkbWJneGpocWp2IikKKyAgICAoImlsbGlua2VyLXRlc3QtYXNzZXRzIiAg ICAgICAiZWM5ZWI1MWFmMmViMDdkYmU1MGEyNzI0ZGI4MjZiZjNiZmI5MzBhNiIKKyAgICAgIjFi NHZxNGpiZ25sNGx6ZmZnMDJuNXcxc3BwZzJrNmJma3MwMTUwcGo0MDNzYm5tbDg1Z2wiKQorICAg ICgibGlua2VyIiAgICAgICAgICAgICAgICAgICAgICAiZWQ0YTk0MTM0ODlhYTI5YTcwZTQxZjk0 YzNkYWM1NjIxMDk5ZjczNCIKKyAgICAgIjE2cmRwY2g5YW5hcm5oY3ppNDQxYTl6bmE0cno5M2p3 cGIzMXgwZHpyYjRqMDNjeGFqZzIiKQorICAgIDs7ICgoImh0dHBzOi8vZ2l0aHViLmNvbS9kb3Ru ZXQvbGx2bS1wcm9qZWN0IiAibGx2bS1wcm9qZWN0IikKKyAgICA7OyAgIjdkZmRlYTEyNjdmMGE0 MDk1NWUwMjU2N2RjYmNkMWJjYjk4N2U4MjUiCisgICAgOzsgICIiKQorICAgICgiTmV3dG9uc29m dC5Kc29uIiAgICAgICAgICAgICAiNDcxYzNlMDgwM2E5ZjQwYTBhY2M4YWVjZWIzMWRlNmZmOTNh NTJjNCIKKyAgICAgIjBkZ25nZDVocWs2eWhsZzQwa2FibjZxZG5rbm0zMnpjeDlxNmJtMnczMWNz bnNrNTk3OHMiKQorICAgICgoIk51R2V0LkJ1aWxkVGFza3MiICJudWdldC1idWlsZHRhc2tzIikK KyAgICAgIjk5NTU4NDc5NTc4YjFkNmFmMGY0NDNiYjQxMWJjMzUyMGZjYmFlNWMiCisgICAgICIx NDM0bTZ6OXNiN2J2a2k5YmE2aWlucXBtaDRhNGl5bGQ3Nmp6MTBxejA3c3lja2xmbHEzIikKKyAg ICAoKCJOVW5pdExpdGUiICJudW5pdC1saXRlIikgICAgImE5NzdjYTU3NTcyYzU0NWUxMDhiNTZl ZjMyYWEzZjdmZjgyODc2MTEiCisgICAgICIwMnp3ZGZwdzhwYXpsbHdicDRoa3pxd2ZxbDk4ZzQ4 NTRkaXlrcWRiOXdhMHZyYjh3NHNqIikKKyAgICA7OyAoInJvc2x5bi1iaW5hcmllcyIgICAgICAg ICAgICAgIjFjNjQ4MjQ3MGNkMjE5ZGNjNzUwMzI1OWEyMGYyNmExNzIzZjIwZWMiCisgICAgOzsg ICIiKQorICAgICgicngiICAgICAgICAgICAgICAgICAgICAgICAgICAiYjI5YTRiMGZkYTYwOWUw YWYzM2ZmNTRlZDEzNjUyYjZjY2YwZTA1ZSIKKyAgICAgIjFuMWp3aG1zYmtjdjJkODA2aW1tY3B6 a2I3MnJ6MDR4eTk4bXl3MzU1YTh3NWFoMjV5aXYiKQorICAgIDs7ICgieHVuaXQtYmluYXJpZXMi ICAgICAgICAgICAgICAiOGY2ZTYyZTFjMDE2ZGZiMTU0MjA4NTJlMjIwZTA3MDkxOTIzNzM0YSIK KyAgICA7OyAgIiIpCisgICAgKSkKKworKGRlZmluZS1wdWJsaWMgbW9uby02LjEyLjAKKyAgKHBh Y2thZ2UKKyAgICAoaW5oZXJpdCBtb25vLTUuMTAuMCkKKyAgICAodmVyc2lvbiAiNi4xMi4wLjIw NiIpCisgICAgKG5hbWUgIm1vbm8iKQorICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAg ICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAgKHVyaQorICAgICAgICAgICAgICAg KGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGxhYi53aW5l aHEub3JnL21vbm8vbW9uby5naXQiKQorICAgICAgICAgICAgICAgIChjb21taXQgKHN0cmluZy1h cHBlbmQgIm1vbm8tIiAiNi4xMi4wLjIwNiIpKSkpCisgICAgICAgICAgICAgIChmaWxlLW5hbWUg KGdpdC1maWxlLW5hbWUgbmFtZSB2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgKHNoYTI1NgorICAg ICAgICAgICAgICAgKGJhc2UzMgorICAgICAgICAgICAgICAgICIxY3c5djUzYmdiYzZ2N3htcDVp ajc2eTZpbmI2c3oxZzF6eDJqazgyNXJ4c2hxOTZhbHZrIikpCisgICAgICAgICAgICAgIChtb2R1 bGVzICcoKGd1aXggYnVpbGQgdXRpbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGljZS05 IHN0cmluZy1mdW4pKSkKKyAgICAgICAgICAgICAgKHNuaXBwZXQgI34oYmVnaW4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICMkKGFkZC1leHRlcm5hbC1yZXBvcworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbW9uby02LjEyLjAtZXh0ZXJuYWwtcmVwby1zcGVjcykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICMkQHByZXBhcmUtbW9uby1zb3VyY2UtMCkpCisgICAgICAgICAg ICAgIChwYXRjaGVzCisgICAgICAgICAgICAgICAoc2VhcmNoLXBhdGNoZXMKKyAgICAgICAgICAg ICAgICAibW9uby02LjEyLjAtZml4LUNvbmRpdGlvblBhcnNlci5wYXRjaCIKKyAgICAgICAgICAg ICAgICAibW9uby02LjEyLjAtYWRkLXJ1bnBhdGgucGF0Y2giCisgICAgICAgICAgICAgICAgIm1v bm8tNi4xMi4wLWZpeC1Bc3NlbWJseVJlc29sdmVyLnBhdGNoIikpKSkKKyAgICAobmF0aXZlLWlu cHV0cyAobW9kaWZ5LWlucHV0cyAocGFja2FnZS1uYXRpdmUtaW5wdXRzIG1vbm8tNS4xMC4wKQor ICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UgIm1vbm8iIG1vbm8tNS4xMC4wKQorICAgICAg ICAgICAgICAgICAgICAgKGFwcGVuZCAoZGVmYXVsdC1weXRob24pKSkpCisgICAgKGlucHV0cyAo bW9kaWZ5LWlucHV0cyAocGFja2FnZS1pbnB1dHMgbW9uby01LjEwLjApCisgICAgICAgICAgICAg IChhcHBlbmQgbGliZ2RpcGx1cykpKQorICAgIChhcmd1bWVudHMKKyAgICAgKHN1YnN0aXR1dGUt a2V5d29yZC1hcmd1bWVudHMgKHBhY2thZ2UtYXJndW1lbnRzIG1vbm8tNS4xMC4wKQorICAgICAg ICgoIzptYWtlLWZsYWdzIG1ha2UtZmxhZ3MgI34nKCkpCisgICAgICAgICN+KGFwcGVuZCAjJG1h a2UtZmxhZ3MKKyAgICAgICAgICAgICAgICAgIChsaXN0CisgICAgICAgICAgICAgICAgICAgKHN0 cmluZy1hcHBlbmQgIlBMQVRGT1JNX0RJU0FCTEVEX1RFU1RTPSIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBzZWdmYXVsdHMgKCEpLCByZWFzb24gdW5rbm93bgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzYWZlaGFuZGxlLjIuZXhlIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHVuY2xlYXIgd2h5IHRoZXNlIGZhaWwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnVnLTEwODM0LmV4ZSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiYnVnLTYwODQ4LmV4ZSIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyB0aGVzZSBhcmUgdGVzdHMgb2YgbWljcm9zb2Z0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgdGVsZW1ldHJ5LiAgVGhleSBmYWlsIGJlY2F1 c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBtaWNyb3NvZnQgdGVsZW1l dHJ5IGlzIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBlbmFibGVk IG9uIE9TWC4gIE5vIGlkZWEgd2h5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgdGhlc2UgdGVzdHMgYXJlIHJ1biBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJtZXJwLWNyYXNoLXRlc3QuZXhlIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJtZXJwLWpzb24tdmFsaWQuZXhlIikpKSkKKyAgICAgICAoKCM6cGhhc2Vz IHBoYXNlcyAjfiVzdGFuZGFyZC1waGFzZXMpCisgICAgICAgICN+KG1vZGlmeS1waGFzZXMgIyRw aGFzZXMKKyAgICAgICAgICAgIChkZWxldGUgJ3BhdGNoLXN1Yi1hdXRvZ2VuLnNoLXNoZWJhbmcp CisgICAgICAgICAgICA7OyBPdXIgNS4xMC4wIGNvbXBpbGVyIGhhcyBiZWVuIHJhdGhlciBzb3Vw ZWQgdXAuCisgICAgICAgICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2Rpc2FibGUtcHJvZmlsZS12 ZXJzaW9uLWNoZWNrCisgICAgICAgICAgICAgIChsYW1iZGEgXworICAgICAgICAgICAgICAgIChz dWJzdGl0dXRlKiAibWNzL2J1aWxkL2NvbW1vbi9iYXNpYy1wcm9maWxlLWNoZWNrLmNzIgorICAg ICAgICAgICAgICAgICAgKCgibWluX21vbm9fdmVyc2lvbiA9IC4qIikKKyAgICAgICAgICAgICAg ICAgICAibWluX21vbm9fdmVyc2lvbiA9IG5ldyBWZXJzaW9uICgwLCAwKTtcbiIpKSkpCisgICAg ICAgICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2Rpc2FibGUtYyMtOC4wLXRlc3RzCisgICAgICAg ICAgICAgIDs7IFRoZXNlIGFyZW4ndCBjb21waWxhYmxlIGJ5IG1jcworICAgICAgICAgICAgICAo bGFtYmRhIF8KKyAgICAgICAgICAgICAgICAoc3Vic3RpdHV0ZSogIm1vbm8vbWluaS9NYWtlZmls ZS5hbS5pbiIKKyAgICAgICAgICAgICAgICAgICgoIi1sYW5ndmVyc2lvbjo4XFwuMCIpCisgICAg ICAgICAgICAgICAgICAgIiIpKQorICAgICAgICAgICAgICAgIChzdWJzdGl0dXRlKiAibW9uby90 ZXN0cy9NYWtlZmlsZS5hbSIKKyAgICAgICAgICAgICAgICAgICgoIgkoZGltLWdlbmVyaWN8ZGlt LWlzc3VlLTE4OTE3fGludGVyZmFjZS0yfGRlbGVnYXRlMTh8Z2VuZXJpYy11bm1hbmFnZWQtY29u c3RyYWludHxhc3luYy1nZW5lcmljLWVudW0pXFwuY3MuKiIpCisgICAgICAgICAgICAgICAgICAg IiIpKSkpCisgICAgICAgICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2Rpc2FibGUtdmVyaWZpY2F0 aW9uLWVycm9yCisgICAgICAgICAgICAgIChsYW1iZGEgXworICAgICAgICAgICAgICAgIDs7IEZv ciBzb21lIHJlYXNvbiB2ZXJpZmljYXRpb24gZmFpbHMgY29tcGxhaW5pbmcgYWJvdXQgYSBidW5j aAorICAgICAgICAgICAgICAgIDs7IG9mIG1pc3NpbmcgaWNhbGxzLgorICAgICAgICAgICAgICAg IChzdWJzdGl0dXRlKiAicnVudGltZS9NYWtlZmlsZS5hbSIKKyAgICAgICAgICAgICAgICAgICgo IgkgICAgZmk7IGRvbmU7IGRvbmU7IikKKyAgICAgICAgICAgICAgICAgICAiCSAgICBmaTsgZG9u ZTsgZG9uZTsgb2s9OjsiKSkpKQorICAgICAgICAgICAgOzsgVGhpcyByZXF1aXJlcyBiaW5hcnkg YmxvYnMgdG8gYmUgdXNlZCwgaXQgZG9lc24ndCBwcm92aWRlIGEKKyAgICAgICAgICAgIDs7IGNs ZWFyIHdheSB0byByZWdlbmVyYXRlIHRoZW0gYW5kIG5vIGNvcnJlc3BvbmRpbmcgc291cmNlIGlz CisgICAgICAgICAgICA7OyBsaW5rZWQsIHBsdXMgZnJvbSB3aGF0IGxpdHRsZSBJIGtub3cgb2Yg aXQgaXQgc291bmRzIGxpa2UgaXQncworICAgICAgICAgICAgOzsgbm90IHNvbWV0aGluZyB3ZSBu ZWVkIGF0IGFsbD8KKyAgICAgICAgICAgIChhZGQtYWZ0ZXIgJ3VucGFjayAnZGlzYWJsZS1oZWxp eC1jbGllbnQKKyAgICAgICAgICAgICAgKGxhbWJkYSBfCisgICAgICAgICAgICAgICAgKHN1YnN0 aXR1dGUqICJtY3MvdG9vbHMvTWFrZWZpbGUiCisgICAgICAgICAgICAgICAgICAoKCJtb25vLWhl bGl4LWNsaWVudCIpCisgICAgICAgICAgICAgICAgICAgIiIpKSkpCisgICAgICAgICAgICAocmVw bGFjZSAnYnVpbGQtcmVmZXJlbmNlLWFzc2VtYmxpZXMKKyAgICAgICAgICAgICAgKGxhbWJkYSog KCM6a2V5IG1ha2UtZmxhZ3MgIzphbGxvdy1vdGhlci1rZXlzKQorICAgICAgICAgICAgICAgIChs ZXQgKCh0b3AgKGdldGN3ZCkpKQorICAgICAgICAgICAgICAgICAgKHdpdGgtZGlyZWN0b3J5LWV4 Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICJleHRlcm5hbC9iaW5hcnktcmVmZXJlbmNl LWFzc2VtYmxpZXMiCisgICAgICAgICAgICAgICAgICAgIChzdWJzdGl0dXRlKiAoZmluZC1maWxl cyAiLiIgIl5NYWtlZmlsZSQiKQorICAgICAgICAgICAgICAgICAgICAgICgoIkNTQ19DT01NT05f QVJHUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxs ICItZGVsYXlzaWduKyAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJJQk1cXC5EYXRhXFwu REIyX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5k IGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJNb25vXFwuRGF0 YVxcLlNxbGl0ZV9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5n LWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiU3lz dGVtXFwuRGF0YVxcLkRhdGFTZXRFeHRlbnNpb25zX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAg ICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAg ICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5EYXRhXFwuT3JhY2xlQ2xpZW50X1JFRlMgOj0gIiBh bGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlht bCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5JZGVudGl0eU1vZGVsX1JF RlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAi U3lzdGVtLkNvbmZpZ3VyYXRpb24gIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVt XFwuRGVzaWduX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmct YXBwZW5kIGFsbCAiQWNjZXNzaWJpbGl0eSAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJT eXN0ZW1cXC5XZWJcXC5FeHRlbnNpb25zXFwuRGVzaWduX1JFRlMgOj0gIiBhbGwpCisgICAgICAg ICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLldpbmRvd3MuRm9ybXMg U3lzdGVtLldlYiAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5TZXJ2aWNl TW9kZWxcXC5Sb3V0aW5nX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChz dHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAo KCJTeXN0ZW1cXC5XZWJcXC5BYnN0cmFjdGlvbnNfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAg ICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0gIikpCisgICAgICAgICAgICAg ICAgICAgICAgKCgiU3lzdGVtXFwuUmVhY3RpdmVcXC5XaW5kb3dzXFwuRm9ybXNfUkVGUyA6PSAi IGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0g IikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwuV2luZG93c1xcLkZvcm1zXFwu RGF0YVZpc3VhbGl6YXRpb25fUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAg KHN0cmluZy1hcHBlbmQgYWxsICJBY2Nlc3NpYmlsaXR5ICIpKQorICAgICAgICAgICAgICAgICAg ICAgICgoIkZhY2FkZXMvU3lzdGVtXFwuU2VydmljZU1vZGVsXFwuUHJpbWl0aXZlc19SRUZTIDo9 ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3Rl bS5YbWwgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiRmFjYWRlcy9TeXN0ZW1cXC5EeW5h bWljXFwuUnVudGltZV9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3Ry aW5nLWFwcGVuZCBhbGwgIlN5c3RlbSAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJGYWNh ZGVzL1N5c3RlbVxcLlhtbFxcLlhEb2N1bWVudF9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAg ICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisgICAgICAgICAg ICAgICAgICAgICAgKCgiRmFjYWRlcy9TeXN0ZW1cXC5SdW50aW1lXFwuU2VyaWFsaXphdGlvbi5Y bWxfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQg YWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAgICAgICgoIkZhY2FkZXMvU3lz dGVtXFwuRGF0YVxcLkNvbW1vbl9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAg ICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbSBTeXN0ZW0uWG1sICIpKSkKKyAgICAgICAgICAg ICAgICAgICAgKHN1YnN0aXR1dGUqICJidWlsZC9tb25vZHJvaWQvTWFrZWZpbGUiCisgICAgICAg ICAgICAgICAgICAgICAgKCgiRUNNQV9LRVkgOj0gXFwuXFwuL1xcLlxcLi9cXC5cXC4vXFwuXFwu L1xcLlxcLi9tb25vLyIpCisgICAgICAgICAgICAgICAgICAgICAgIDs7IGl0IHNob3VsZCBvbmx5 IGJlIDQgZGlyZWN0b3JpZXMgdXAsIGFuZCBpdCdzIGluCisgICAgICAgICAgICAgICAgICAgICAg IDs7IG1jcy8sIG5vdCBtb25vL21jcy8KKyAgICAgICAgICAgICAgICAgICAgICAgIkVDTUFfS0VZ IDo9IC4uLy4uLy4uLy4uLyIpKQorICAgICAgICAgICAgICAgICAgICAoYXBwbHkgaW52b2tlICJt YWtlIiAiQ1NDPW1jcyIgbWFrZS1mbGFncykpKSkpCisgICAgICAgICAgICAocmVwbGFjZSAnY2hl Y2sKKyAgICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IHRlc3RzPyAobWFrZS1mbGFncyAnKCkp ICM6YWxsb3ctb3RoZXIta2V5cykKKyAgICAgICAgICAgICAgICAod2hlbiB0ZXN0cz8KKyAgICAg ICAgICAgICAgICAgIDs7IFRoZXJlIGFyZSBtb3JlIHRlc3RzIHRoYW4gdGhlc2UsIGJ1dCB0aGV5 IGRlcGVuZCBvbgorICAgICAgICAgICAgICAgICAgOzsgZXh0ZXJuYWwveHVuaXQtYmluYXJpZXMs IHNvIHdlIGxpbWl0IG91cnNlbHZlcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgIDs7IHRlc3Rz IHRoYXQgZGViaWFuIHJ1bnMuCisgICAgICAgICAgICAgICAgICAod2l0aC1kaXJlY3RvcnktZXhj dXJzaW9uICJtb25vL21pbmkiCisgICAgICAgICAgICAgICAgICAgIChhcHBseSBpbnZva2UgIm1h a2UiICJjaGVjayIgbWFrZS1mbGFncykpCisgICAgICAgICAgICAgICAgICAod2l0aC1kaXJlY3Rv cnktZXhjdXJzaW9uICJtb25vL3Rlc3RzIgorICAgICAgICAgICAgICAgICAgICAoYXBwbHkgaW52 b2tlICJtYWtlIiAiY2hlY2siIG1ha2UtZmxhZ3MpKSkpKSkpKSkpKQpkaWZmIC0tZ2l0IGEvZ251 L3BhY2thZ2VzL3BhdGNoZXMvbW9uby02LjEyLjAtYWRkLXJ1bnBhdGgucGF0Y2ggYi9nbnUvcGFj a2FnZXMvcGF0Y2hlcy9tb25vLTYuMTIuMC1hZGQtcnVucGF0aC5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zMDYyYmQ2YTBkCi0tLSAvZGV2L251bGwKKysrIGIv Z251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby02LjEyLjAtYWRkLXJ1bnBhdGgucGF0Y2gKQEAgLTAs MCArMSwxODUgQEAKK21vbm86IG1ldGFkYXRhOiBhZGQgPHJ1bnBhdGg+IGVsZW1lbnQgdG8gLmNv bmZpZyBmaWxlcy4KKworVGhpcyBuZXcgZWxlbWVudCBpcyBvZiB0aGUgZm9ybToKKworPHJ1bnBh dGggcGF0aD0iL3BhdGgxL3RvL2xpYnM6L3BhdGgyL3RvL2xpYnM6Li4uIi8+CisKKyh0aGUgOiB3 aWxsIGFjdHVhbGx5IGJlIHdoYXRldmVyIEdfU0VBUkNIUEFUSF9TRVBBUkFUT1JfUyBpcywgc28g bGlrZWx5IDsgb24KK3dpbmRvd3MgYW5kIDogZWxzZXdoZXJlKS4KKworKiBtb25vL21ldGFkYXRh L21ldGFkYXRhLWludGVybmFscy5oIChzdHJ1Y3QgX01vbm9JbWFnZSk6IG5ldyAncnVucGF0aCcg ZmllbGQuCisqIG1vbm8vbWV0YWRhdGEvbW9uby1jb25maWcuYyAocnVucGF0aF9pbml0LCBydW5w YXRoX3N0YXJ0LCBydW5wYXRoX2hhbmRsZXIpOgorICBuZXcgZnVuY3Rpb25zIGFuZCBwYXJzZXIg dXNpbmcgdGhlbSB0byBwb3B1bGF0ZSBydW5wYXRoIGZpZWxkIGZyb20gPHJ1bnBhdGg+CisgIGVs ZW1lbnQuCisgIChtb25vX2NvbmZpZ19pbml0KTogcmVnaXN0ZXIgcnVucGF0aF9oYW5kbGVyLgor KiBtb25vL21ldGFkYXRhL2Fzc2VtYmx5LmMgKG1vbm9fYXNzZW1ibHlfbG9hZF9mdWxsX2dhY19i YXNlX2RlZmF1bHQpOiBuZXcKKyAgJ3JlcXVlc3RpbmcnIHBhcmFtZXRlciwgdXNlIGl0IHRvIHNl YXJjaCB0aGUgcmVxdWVzdGluZyBhc3NlbWJseSdzIHJ1bnBhdGgKKyAgZmlyc3QuCisgIChtb25v X2Fzc2VtYmx5X3JlcXVlc3RfYnluYW1lX25vc2VhcmNoKTogdXNlIGl0LgorCisKK2RpZmYgLS1n aXQgYS9tb25vL21ldGFkYXRhL2Fzc2VtYmx5LmMgYi9tb25vL21ldGFkYXRhL2Fzc2VtYmx5LmMK K2luZGV4IGY5ZmVhYWNmMmMxLi44YzcxYWQwZWI5NSAxMDA2NDQKKy0tLSBhL21vbm8vbWV0YWRh dGEvYXNzZW1ibHkuYworKysrIGIvbW9uby9tZXRhZGF0YS9hc3NlbWJseS5jCitAQCAtMzc2LDcg KzM3Niw3IEBAIG1vbm9fYXNzZW1ibHlfaW52b2tlX3NlYXJjaF9ob29rX2ludGVybmFsIChNb25v QXNzZW1ibHlMb2FkQ29udGV4dCAqYWxjLCBNb25vQXNzCisgc3RhdGljIE1vbm9Bc3NlbWJseSoK KyBtb25vX2Fzc2VtYmx5X3JlcXVlc3RfYnluYW1lX25vc2VhcmNoIChNb25vQXNzZW1ibHlOYW1l ICphbmFtZSwgY29uc3QgTW9ub0Fzc2VtYmx5QnlOYW1lUmVxdWVzdCAqcmVxLCBNb25vSW1hZ2VP cGVuU3RhdHVzICpzdGF0dXMpOworIHN0YXRpYyBNb25vQXNzZW1ibHkqCistbW9ub19hc3NlbWJs eV9sb2FkX2Z1bGxfZ2FjX2Jhc2VfZGVmYXVsdCAoTW9ub0Fzc2VtYmx5TmFtZSAqYW5hbWUsIGNv bnN0IGNoYXIgKmJhc2VkaXIsIE1vbm9Bc3NlbWJseUxvYWRDb250ZXh0ICphbGMsIE1vbm9Bc3Nl bWJseUNvbnRleHRLaW5kIGFzbWN0eCwgTW9ub0ltYWdlT3BlblN0YXR1cyAqc3RhdHVzKTsKKytt b25vX2Fzc2VtYmx5X2xvYWRfZnVsbF9nYWNfYmFzZV9kZWZhdWx0IChNb25vQXNzZW1ibHlOYW1l ICphbmFtZSwgTW9ub0Fzc2VtYmx5ICpyZXF1ZXN0aW5nLCBjb25zdCBjaGFyICpiYXNlZGlyLCBN b25vQXNzZW1ibHlMb2FkQ29udGV4dCAqYWxjLCBNb25vQXNzZW1ibHlDb250ZXh0S2luZCBhc21j dHgsIE1vbm9JbWFnZU9wZW5TdGF0dXMgKnN0YXR1cyk7Cisgc3RhdGljIE1vbm9Bc3NlbWJseSoK KyBjaGFpbl9yZWRpcmVjdGlvbnNfbG9hZGZyb20gKE1vbm9Bc3NlbWJseUxvYWRDb250ZXh0ICph bGMsIE1vbm9JbWFnZSAqaW1hZ2UsIE1vbm9JbWFnZU9wZW5TdGF0dXMgKm91dF9zdGF0dXMpOwor IHN0YXRpYyBNb25vQXNzZW1ibHkqCitAQCAtNDY1NSw3ICs0NjU1LDcgQEAgbW9ub19hc3NlbWJs eV9yZXF1ZXN0X2J5bmFtZV9ub3NlYXJjaCAoTW9ub0Fzc2VtYmx5TmFtZSAqYW5hbWUsCisgCX0K KyAKKyAjaWZuZGVmIEVOQUJMRV9ORVRDT1JFCistCXJlc3VsdCA9IG1vbm9fYXNzZW1ibHlfbG9h ZF9mdWxsX2dhY19iYXNlX2RlZmF1bHQgKGFuYW1lLCByZXEtPmJhc2VkaXIsIHJlcS0+cmVxdWVz dC5hbGMsIHJlcS0+cmVxdWVzdC5hc21jdHgsIHN0YXR1cyk7CisrCXJlc3VsdCA9IG1vbm9fYXNz ZW1ibHlfbG9hZF9mdWxsX2dhY19iYXNlX2RlZmF1bHQgKGFuYW1lLCByZXEtPnJlcXVlc3Rpbmdf YXNzZW1ibHksIHJlcS0+YmFzZWRpciwgcmVxLT5yZXF1ZXN0LmFsYywgcmVxLT5yZXF1ZXN0LmFz bWN0eCwgc3RhdHVzKTsKKyAjZW5kaWYKKyAJcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtNDY2Nyw2 ICs0NjY3LDcgQEAgbW9ub19hc3NlbWJseV9yZXF1ZXN0X2J5bmFtZV9ub3NlYXJjaCAoTW9ub0Fz c2VtYmx5TmFtZSAqYW5hbWUsCisgICovCisgTW9ub0Fzc2VtYmx5KgorIG1vbm9fYXNzZW1ibHlf bG9hZF9mdWxsX2dhY19iYXNlX2RlZmF1bHQgKE1vbm9Bc3NlbWJseU5hbWUgKmFuYW1lLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vbm9Bc3NlbWJseSAqcmVx dWVzdGluZywKKyAJCQkJCSAgY29uc3QgY2hhciAqYmFzZWRpciwKKyAJCQkJCSAgTW9ub0Fzc2Vt Ymx5TG9hZENvbnRleHQgKmFsYywKKyAJCQkJCSAgTW9ub0Fzc2VtYmx5Q29udGV4dEtpbmQgYXNt Y3R4LAorQEAgLTQ3MTgsNiArNDcxOSwyMyBAQCBtb25vX2Fzc2VtYmx5X2xvYWRfZnVsbF9nYWNf YmFzZV9kZWZhdWx0IChNb25vQXNzZW1ibHlOYW1lICphbmFtZSwKKyAJCQlmaWxlbmFtZSA9IGdf c3RyY29uY2F0IChhbmFtZS0+bmFtZSwgZXh0LCAoY29uc3QgY2hhciopTlVMTCk7CisgCQl9Cisg CisrICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0aW5nCisrICAgICAgICAgICAgICAgICAgICAm JiByZXF1ZXN0aW5nLT5pbWFnZQorKyAgICAgICAgICAgICAgICAgICAgJiYgcmVxdWVzdGluZy0+ aW1hZ2UtPnJ1bnBhdGgpIHsKKysgICAgICAgICAgICAgICAgICAgIGNoYXIgKipydW5wYXRoID0g cmVxdWVzdGluZy0+aW1hZ2UtPnJ1bnBhdGg7CisrICAgICAgICAgICAgICAgICAgICBpbnQgajsK KysgICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IHJ1bnBhdGhbal07IGorKykgeworKyAg ICAgICAgICAgICAgICAgICAgICAgIGZ1bGxwYXRoID0gZ19idWlsZF9maWxlbmFtZSAocnVucGF0 aFtqXSwgZmlsZW5hbWUsIE5VTEwpOworKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9 IG1vbm9fYXNzZW1ibHlfcmVxdWVzdF9vcGVuIChmdWxscGF0aCwgJnJlcSwgc3RhdHVzKTsKKysg ICAgICAgICAgICAgICAgICAgICAgICBnX2ZyZWUgKGZ1bGxwYXRoKTsKKysgICAgICAgICAgICAg ICAgICAgICAgICBpZiAocmVzdWx0KSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c3VsdC0+aW5fZ2FjID0gRkFMU0U7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfZnJl ZSAoZmlsZW5hbWUpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0 OworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgIH0KKysg ICAgICAgICAgICAgICAgfQorKworICNpZm5kZWYgRElTQUJMRV9HQUMKKyAJCWNvbnN0IGdib29s ZWFuIHJlZm9ubHkgPSBhc21jdHggPT0gTU9OT19BU01DVFhfUkVGT05MWTsKKyAKK2RpZmYgLS1n aXQgYS9tb25vL21ldGFkYXRhL2ltYWdlLmMgYi9tb25vL21ldGFkYXRhL2ltYWdlLmMKK2luZGV4 IGUwYjg2ZGQzZDA5Li4xMmE4MDk0ZTRlMCAxMDA2NDQKKy0tLSBhL21vbm8vbWV0YWRhdGEvaW1h Z2UuYworKysrIGIvbW9uby9tZXRhZGF0YS9pbWFnZS5jCitAQCAtMjM2Myw2ICsyMzYzLDkgQEAg bW9ub19pbWFnZV9jbG9zZV9leGNlcHRfcG9vbHMgKE1vbm9JbWFnZSAqaW1hZ2UpCisgCisgCW1v bm9fbWV0YWRhdGFfY2xlYW5fZm9yX2ltYWdlIChpbWFnZSk7CisgCisrICAgICAgICBpZiAoaW1h Z2UtPnJ1bnBhdGgpCisrICAgICAgICAgICAgZ19zdHJmcmVldiAoaW1hZ2UtPnJ1bnBhdGgpOwor KworIAkvKgorIAkgKiBUaGUgY2FjaGVzIGluc2lkZSBhIE1vbm9JbWFnZSBtaWdodCByZWZlciB0 byBtZXRhZGF0YSB3aGljaCBpcyBzdG9yZWQgaW4gcmVmZXJlbmNlZCAKKyAJICogYXNzZW1ibGll cywgc28gd2UgY2FuJ3QgcmVsZWFzZSB0aGVzZSByZWZlcmVuY2VzIGluIG1vbm9fYXNzZW1ibHlf Y2xvc2UgKCkgc2luY2UgdGhlCitkaWZmIC0tZ2l0IGEvbW9uby9tZXRhZGF0YS9tZXRhZGF0YS1p bnRlcm5hbHMuaCBiL21vbm8vbWV0YWRhdGEvbWV0YWRhdGEtaW50ZXJuYWxzLmgKK2luZGV4IDkz ODhkNjliMGZkLi45M2Y0Yjg4MGM2MSAxMDA2NDQKKy0tLSBhL21vbm8vbWV0YWRhdGEvbWV0YWRh dGEtaW50ZXJuYWxzLmgKKysrKyBiL21vbm8vbWV0YWRhdGEvbWV0YWRhdGEtaW50ZXJuYWxzLmgK K0BAIC00MjMsNiArNDIzLDEyIEBAIHN0cnVjdCBfTW9ub0ltYWdlIHsKKyAJLyoqLworIAlNb25v VGFibGVJbmZvICAgICAgICB0YWJsZXMgW01PTk9fVEFCTEVfTlVNXTsKKyAKKysgICAgLyoKKysg ICAgICBTZWFyY2ggcGF0aCB0byBiZSB0cmllZCBmaXJzdCB3aGVuIGxvb2tpbmcgZm9yIGFzc2Vt YmxpZXMgcmVmZXJlbmNlZCBieQorKyAgICAgIHRoaXMgaW1hZ2UsIG9yIE5VTEwuIElzIGEgTlVM TC10ZXJtaW5hdGVkIHZlY3Rvci4KKysgICAgICovCisrICAgICAgICBjaGFyICAgICAgICAgICAg ICAgKipydW5wYXRoOworKworIAkvKgorIAkgKiByZWZlcmVuY2VzIGlzIGluaXRpYWxpemVkIG9u bHkgYnkgdXNpbmcgdGhlIG1vbm9fYXNzZW1ibHlfb3BlbgorIAkgKiBmdW5jdGlvbiwgYW5kIG5v dCBieSB1c2luZyB0aGUgbG93bGV2ZWwgbW9ub19pbWFnZV9vcGVuLgorZGlmZiAtLWdpdCBhL21v bm8vbWV0YWRhdGEvbW9uby1jb25maWcuYyBiL21vbm8vbWV0YWRhdGEvbW9uby1jb25maWcuYwor aW5kZXggZDk3M2RlNTNjOGMuLjg4ODhjN2I0ZmFjIDEwMDY0NAorLS0tIGEvbW9uby9tZXRhZGF0 YS9tb25vLWNvbmZpZy5jCisrKysgYi9tb25vL21ldGFkYXRhL21vbm8tY29uZmlnLmMKK0BAIC0y MSw2ICsyMSw3IEBACisgI2luY2x1ZGUgIm1vbm8vbWV0YWRhdGEvbWV0YWRhdGEtaW50ZXJuYWxz LmgiCisgI2luY2x1ZGUgIm1vbm8vbWV0YWRhdGEvb2JqZWN0LWludGVybmFscy5oIgorICNpbmNs dWRlICJtb25vL3V0aWxzL21vbm8tbG9nZ2VyLWludGVybmFscy5oIgorKyNpbmNsdWRlICJtb25v L3V0aWxzL21vbm8tcGF0aC5oIgorIAorICNpZiBkZWZpbmVkKFRBUkdFVF9QUzMpCisgI2RlZmlu ZSBDT05GSUdfT1MgIkNlbGxPUyIKK0BAIC00NjQsNiArNDY1LDU5IEBAIGFvdF9jYWNoZV9oYW5k bGVyID0geworIAlOVUxMLCAvKiBmaW5pc2ggKi8KKyB9OworIAorK3N0YXRpYyB2b2lkKgorK3J1 bnBhdGhfaW5pdCAoTW9ub0ltYWdlICphc3NlbWJseSkKKyt7CisrICAgIHJldHVybiBhc3NlbWJs eTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytydW5wYXRoX3N0YXJ0IChncG9pbnRlciB1c2VyX2Rh dGEsCisrICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAqZWxlbWVudF9uYW1lLAor KyAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAqKmF0dHJpYnV0ZV9uYW1lcywKKysg ICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgKiphdHRyaWJ1dGVfdmFsdWVzKQorK3sK KysgICAgTW9ub0ltYWdlICphc3NlbWJseSA9IChNb25vSW1hZ2UgKikgdXNlcl9kYXRhOworKyAg ICBpbnQgaTsKKysKKysgICAgaWYgKHN0cmNtcCAoZWxlbWVudF9uYW1lLCAicnVucGF0aCIpICE9 IDApCisrICAgICAgICByZXR1cm47CisrCisrICAgIGZvciAoaSA9IDA7IGF0dHJpYnV0ZV9uYW1l c1tpXTsgaSsrKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGlmKCFzdHJjbXAgKGF0dHJpYnV0 ZV9uYW1lcyBbaV0sICJwYXRoIikpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgICAgIGNoYXIgKipzcGxpdHRlZCwgKipkZXN0OworKworKyAgICAgICAgICAgICAgICAgICAg c3BsaXR0ZWQgPSBnX3N0cnNwbGl0IChhdHRyaWJ1dGVfdmFsdWVzW2ldLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1NFQVJDSFBBVEhfU0VQQVJBVE9SX1Ms CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDApOworKyAg ICAgICAgICAgICAgICAgICAgaWYgKGFzc2VtYmx5LT5ydW5wYXRoKQorKyAgICAgICAgICAgICAg ICAgICAgICAgIGdfc3RyZnJlZXYgKGFzc2VtYmx5LT5ydW5wYXRoKTsKKysgICAgICAgICAgICAg ICAgICAgIGFzc2VtYmx5LT5ydW5wYXRoID0gZGVzdCA9IHNwbGl0dGVkOworKyAgICAgICAgICAg ICAgICAgICAgd2hpbGUgKCpzcGxpdHRlZCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGNo YXIgKnRtcCA9ICpzcGxpdHRlZDsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnRtcCkK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRlc3QrKyA9IG1vbm9fcGF0aF9jYW5vbmlj YWxpemUgKHRtcCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgZ19mcmVlICh0bXApOworKyAg ICAgICAgICAgICAgICAgICAgICAgIHNwbGl0dGVkKys7CisrICAgICAgICAgICAgICAgICAgICB9 CisrICAgICAgICAgICAgICAgICAgICAqZGVzdCA9ICpzcGxpdHRlZDsKKysgICAgICAgICAgICAg ICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICB9CisrfQorKworK3N0 YXRpYyBjb25zdCBNb25vUGFyc2VIYW5kbGVyCisrcnVucGF0aF9oYW5kbGVyID0geworKyAgICAi cnVucGF0aCIsCisrICAgIHJ1bnBhdGhfaW5pdCwKKysgICAgcnVucGF0aF9zdGFydCwKKysgICAg TlVMTCwgLyogdGV4dCAqLworKyAgICBOVUxMLCAvKiBlbmQgKi8KKysgICAgTlVMTCwgLyogZmlu aXNoICovCisrfTsKKysKKyBzdGF0aWMgaW50IGluaXRlZCA9IDA7CisgCisgc3RhdGljIHZvaWQK K0BAIC00NzYsNiArNTMwLDcgQEAgbW9ub19jb25maWdfaW5pdCAodm9pZCkKKyAjZW5kaWYKKyAJ Z19oYXNoX3RhYmxlX2luc2VydCAoY29uZmlnX2hhbmRsZXJzLCAoZ3BvaW50ZXIpIGxlZ2FjeVVF UF9oYW5kbGVyLmVsZW1lbnRfbmFtZSwgKGdwb2ludGVyKSAmbGVnYWN5VUVQX2hhbmRsZXIpOwor IAlnX2hhc2hfdGFibGVfaW5zZXJ0IChjb25maWdfaGFuZGxlcnMsIChncG9pbnRlcikgYW90X2Nh Y2hlX2hhbmRsZXIuZWxlbWVudF9uYW1lLCAoZ3BvaW50ZXIpICZhb3RfY2FjaGVfaGFuZGxlcik7 CisrICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChjb25maWdfaGFuZGxlcnMsIChncG9pbnRl cikgcnVucGF0aF9oYW5kbGVyLmVsZW1lbnRfbmFtZSwgKGdwb2ludGVyKSAmcnVucGF0aF9oYW5k bGVyKTsKKyB9CisgCisgLyoqCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9tb25v LTYuMTIuMC1maXgtQXNzZW1ibHlSZXNvbHZlci5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVz L21vbm8tNi4xMi4wLWZpeC1Bc3NlbWJseVJlc29sdmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA1ZGI3YjljZGQKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUv cGFja2FnZXMvcGF0Y2hlcy9tb25vLTYuMTIuMC1maXgtQXNzZW1ibHlSZXNvbHZlci5wYXRjaApA QCAtMCwwICsxLDIzNiBAQAorZGlmZiAtLWdpdCBhL21jcy9jbGFzcy9NaWNyb3NvZnQuQnVpbGQu VGFza3MvTWljcm9zb2Z0LkJ1aWxkLlRhc2tzL0Fzc2VtYmx5UmVzb2x2ZXIuY3MgYi9tY3MvY2xh c3MvTWljcm9zb2Z0LkJ1aWxkLlRhc2tzL01pY3Jvc29mdC5CdWlsZC5UYXNrcy9Bc3NlbWJseVJl c29sdmVyLmNzCitpbmRleCA1ZTBlYzQ4MDk1Ni4uOWRhZjlkNjkyMGIgMTAwNjQ0CistLS0gYS9t Y3MvY2xhc3MvTWljcm9zb2Z0LkJ1aWxkLlRhc2tzL01pY3Jvc29mdC5CdWlsZC5UYXNrcy9Bc3Nl bWJseVJlc29sdmVyLmNzCisrKysgYi9tY3MvY2xhc3MvTWljcm9zb2Z0LkJ1aWxkLlRhc2tzL01p Y3Jvc29mdC5CdWlsZC5UYXNrcy9Bc3NlbWJseVJlc29sdmVyLmNzCitAQCAtNjcsNTQgKzY3LDU2 IEBAIHB1YmxpYyB2b2lkIFJlc2V0U2VhcmNoTG9nZ2VyICgpCisgCQkJCXNlYXJjaF9sb2cuQ2xl YXIgKCk7CisgCQl9CisgCistCQlzdHJpbmcgR2V0R2FjUGF0aCAoKQorKwkJc3RyaW5nW10gR2V0 R2FjUGF0aHMgKCkKKyAJCXsKKyAJCQkvLyBOT1RFOiBjb2RlIGZyb20gbWNzL3Rvb2xzL2dhY3V0 aWwvZHJpdmVyLmNzCistCQkJUHJvcGVydHlJbmZvIGdhYyA9IHR5cGVvZiAoU3lzdGVtLkVudmly b25tZW50KS5HZXRQcm9wZXJ0eSAoIkdhY1BhdGgiLCBCaW5kaW5nRmxhZ3MuU3RhdGljIHwgQmlu ZGluZ0ZsYWdzLk5vblB1YmxpYyk7CisrCQkJUHJvcGVydHlJbmZvIGdhY3MgPSB0eXBlb2YgKFN5 c3RlbS5FbnZpcm9ubWVudCkuR2V0UHJvcGVydHkgKCJHYWNQYXRocyIsIEJpbmRpbmdGbGFncy5T dGF0aWMgfCBCaW5kaW5nRmxhZ3MuTm9uUHVibGljKTsKKyAKKy0JCQlpZiAoZ2FjID09IG51bGwp CisrCQkJaWYgKGdhY3MgPT0gbnVsbCkKKyAJCQkJcmV0dXJuIG51bGw7CisgCistCQkJTWV0aG9k SW5mbyBnZXRfZ2FjID0gZ2FjLkdldEdldE1ldGhvZCAodHJ1ZSk7CistCQkJcmV0dXJuIChzdHJp bmcpIGdldF9nYWMuSW52b2tlIChudWxsLCBudWxsKTsKKysJCQlNZXRob2RJbmZvIGdldF9nYWNz ID0gZ2Fjcy5HZXRHZXRNZXRob2QgKHRydWUpOworKwkJCXJldHVybiAoc3RyaW5nW10pIGdldF9n YWNzLkludm9rZSAobnVsbCwgbnVsbCk7CisgCQl9CisgCisgCQl2b2lkIEdhdGhlckdhY0Fzc2Vt YmxpZXMgKCkKKyAJCXsKKy0JCQlzdHJpbmcgZ2FjX3BhdGggPSBHZXRHYWNQYXRoICgpOworLQkJ CWlmIChnYWNfcGF0aCA9PSBudWxsKQorLQkJCQl0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4 Y2VwdGlvbiAoIlhCdWlsZCBtdXN0IGJlIHJ1biBvbiBNb25vIHJ1bnRpbWUiKTsKKy0JCQlpZiAo IURpcmVjdG9yeS5FeGlzdHMgKGdhY19wYXRoKSkKKy0JCQkJcmV0dXJuOyAvLyBpbiBjYXNlIG1v bm8gaXNuJ3QgImluc3RhbGxlZCIuCistCistCQkJVmVyc2lvbiB2ZXJzaW9uOworLQkJCURpcmVj dG9yeUluZm8gdmVyc2lvbl9pbmZvLCBhc3NlbWJseV9pbmZvOworLQorLQkJCWZvcmVhY2ggKHN0 cmluZyBhc3NlbWJseV9uYW1lIGluIERpcmVjdG9yeS5HZXREaXJlY3RvcmllcyAoZ2FjX3BhdGgp KSB7CistCQkJCWFzc2VtYmx5X2luZm8gPSBuZXcgRGlyZWN0b3J5SW5mbyAoYXNzZW1ibHlfbmFt ZSk7CistCQkJCWZvcmVhY2ggKHN0cmluZyB2ZXJzaW9uX3Rva2VuIGluIERpcmVjdG9yeS5HZXRE aXJlY3RvcmllcyAoYXNzZW1ibHlfbmFtZSkpIHsKKy0JCQkJCWZvcmVhY2ggKHN0cmluZyBmaWxl IGluIERpcmVjdG9yeS5HZXRGaWxlcyAodmVyc2lvbl90b2tlbiwgIiouZGxsIikpIHsKKy0JCQkJ CQl2ZXJzaW9uX2luZm8gPSBuZXcgRGlyZWN0b3J5SW5mbyAodmVyc2lvbl90b2tlbik7CistCQkJ CQkJdmVyc2lvbiA9IG5ldyBWZXJzaW9uICh2ZXJzaW9uX2luZm8uTmFtZS5TcGxpdCAoCistCQkJ CQkJCW5ldyBjaGFyIFtdIHsnXyd9LCBTdHJpbmdTcGxpdE9wdGlvbnMuUmVtb3ZlRW1wdHlFbnRy aWVzKSBbMF0pOworLQorLQkJCQkJCURpY3Rpb25hcnk8VmVyc2lvbiwgc3RyaW5nPiBhc3NlbWJs aWVzQnlWZXJzaW9uID0gbmV3IERpY3Rpb25hcnkgPFZlcnNpb24sIHN0cmluZz4gKCk7CistCQkJ CQkJaWYgKCFnYWMuVHJ5R2V0VmFsdWUgKGFzc2VtYmx5X2luZm8uTmFtZSwgb3V0IGFzc2VtYmxp ZXNCeVZlcnNpb24pKSB7CistCQkJCQkJCWFzc2VtYmxpZXNCeVZlcnNpb24gPSBuZXcgRGljdGlv bmFyeSA8VmVyc2lvbiwgc3RyaW5nPiAoKTsKKy0JCQkJCQkJZ2FjLkFkZCAoYXNzZW1ibHlfaW5m by5OYW1lLCBhc3NlbWJsaWVzQnlWZXJzaW9uKTsKKy0JCQkJCQl9CistCistCQkJCQkJc3RyaW5n IGZvdW5kX2ZpbGU7CistCQkJCQkJaWYgKGFzc2VtYmxpZXNCeVZlcnNpb24uVHJ5R2V0VmFsdWUg KHZlcnNpb24sIG91dCBmb3VuZF9maWxlKSAmJgorLQkJCQkJCQlGaWxlLkdldExhc3RXcml0ZVRp bWUgKGZpbGUpIDw9IEZpbGUuR2V0TGFzdFdyaXRlVGltZSAoZm91bmRfZmlsZSkpCistCQkJCQkJ CQkvLyBEdXBsaWNhdGUgZm91bmQsIHRha2UgdGhlIG5ld2VyIGZpbGUKKy0JCQkJCQkJCWNvbnRp bnVlOworLQorLQkJCQkJCWFzc2VtYmxpZXNCeVZlcnNpb24gW3ZlcnNpb25dID0gZmlsZTsKKy0J CQkJCX0KKy0JCQkJfQorLQkJCX0KKy0JCX0KKysgICAgICAgICAgICBzdHJpbmdbXSBnYWNfcGF0 aHMgPSBHZXRHYWNQYXRocyAoKTsKKysgICAgICAgICAgICBpZiAoZ2FjX3BhdGhzID09IG51bGwp CisrICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uICgi WEJ1aWxkIG11c3QgYmUgcnVuIG9uIE1vbm8gcnVudGltZSIpOworKyAgICAgICAgICAgIGlmIChn YWNfcGF0aHMuTGVuZ3RoID09IDAgfHwgIURpcmVjdG9yeS5FeGlzdHMgKGdhY19wYXRoc1swXSkp CisrICAgICAgICAgICAgICAgIHJldHVybjsgLy8gaW4gY2FzZSBtb25vIGlzbid0ICJpbnN0YWxs ZWQiLgorKworKyAgICAgICAgICAgIFZlcnNpb24gdmVyc2lvbjsKKysgICAgICAgICAgICBEaXJl Y3RvcnlJbmZvIHZlcnNpb25faW5mbywgYXNzZW1ibHlfaW5mbzsKKysKKysgICAgICAgICAgICBm b3JlYWNoIChzdHJpbmcgZ2FjX3BhdGggaW4gZ2FjX3BhdGhzKSB7CisrICAgICAgICAgICAgICAg IGZvcmVhY2ggKHN0cmluZyBhc3NlbWJseV9uYW1lIGluIERpcmVjdG9yeS5HZXREaXJlY3Rvcmll cyAoZ2FjX3BhdGgpKSB7CisrICAgICAgICAgICAgICAgICAgICBhc3NlbWJseV9pbmZvID0gbmV3 IERpcmVjdG9yeUluZm8gKGFzc2VtYmx5X25hbWUpOworKyAgICAgICAgICAgICAgICAgICAgZm9y ZWFjaCAoc3RyaW5nIHZlcnNpb25fdG9rZW4gaW4gRGlyZWN0b3J5LkdldERpcmVjdG9yaWVzIChh c3NlbWJseV9uYW1lKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHN0cmlu ZyBmaWxlIGluIERpcmVjdG9yeS5HZXRGaWxlcyAodmVyc2lvbl90b2tlbiwgIiouZGxsIikpIHsK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9pbmZvID0gbmV3IERpcmVjdG9y eUluZm8gKHZlcnNpb25fdG9rZW4pOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJz aW9uID0gbmV3IFZlcnNpb24gKHZlcnNpb25faW5mby5OYW1lLlNwbGl0ICgKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGNoYXIgW10g eydfJ30sIFN0cmluZ1NwbGl0T3B0aW9ucy5SZW1vdmVFbXB0eUVudHJpZXMpIFswXSk7CisrCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpY3Rpb25hcnk8VmVyc2lvbiwgc3RyaW5nPiBh c3NlbWJsaWVzQnlWZXJzaW9uID0gbmV3IERpY3Rpb25hcnkgPFZlcnNpb24sIHN0cmluZz4gKCk7 CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ2FjLlRyeUdldFZhbHVlIChhc3Nl bWJseV9pbmZvLk5hbWUsIG91dCBhc3NlbWJsaWVzQnlWZXJzaW9uKSkgeworKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXNzZW1ibGllc0J5VmVyc2lvbiA9IG5ldyBEaWN0aW9uYXJ5 IDxWZXJzaW9uLCBzdHJpbmc+ICgpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2FjLkFkZCAoYXNzZW1ibHlfaW5mby5OYW1lLCBhc3NlbWJsaWVzQnlWZXJzaW9uKTsKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJpbmcgZm91bmRfZmlsZTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFz c2VtYmxpZXNCeVZlcnNpb24uVHJ5R2V0VmFsdWUgKHZlcnNpb24sIG91dCBmb3VuZF9maWxlKSAm JgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZS5HZXRMYXN0V3JpdGVUaW1l IChmaWxlKSA8PSBGaWxlLkdldExhc3RXcml0ZVRpbWUgKGZvdW5kX2ZpbGUpKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gRHVwbGljYXRlIGZvdW5kLCB0YWtlIHRoZSBuZXdl ciBmaWxlCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZW1ibGllc0J5VmVyc2lvbiBbdmVyc2lvbl0g PSBmaWxlOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAg IH0KKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKyAKKyAJ CXB1YmxpYyBSZXNvbHZlZFJlZmVyZW5jZSBGaW5kSW5UYXJnZXRGcmFtZXdvcmsgKElUYXNrSXRl bSByZWZlcmVuY2UsIHN0cmluZyBmcmFtZXdvcmtfZGlyLCBib29sIHNwZWNpZmljX3ZlcnNpb24p CisgCQl7CitkaWZmIC0tZ2l0IGEvbWNzL2NsYXNzL2NvcmxpYi9TeXN0ZW0vRW52aXJvbm1lbnQu Y3MgYi9tY3MvY2xhc3MvY29ybGliL1N5c3RlbS9FbnZpcm9ubWVudC5jcworaW5kZXggZmQ5MzZh YjIxYTQuLmI1YTVjNzdjMWEzIDEwMDY0NAorLS0tIGEvbWNzL2NsYXNzL2NvcmxpYi9TeXN0ZW0v RW52aXJvbm1lbnQuY3MKKysrKyBiL21jcy9jbGFzcy9jb3JsaWIvU3lzdGVtL0Vudmlyb25tZW50 LmNzCitAQCAtOTg0LDkgKzk4NCwxOCBAQCBwcml2YXRlIHN0YXRpYyBzdHJpbmcgR2FjUGF0aCB7 CisgCQkJCXJldHVybiBQYXRoLkNvbWJpbmUgKFBhdGguQ29tYmluZSAoaW50ZXJuYWxHZXRHYWNQ YXRoICgpLCAibW9ubyIpLCAiZ2FjIik7CisgCQkJfQorIAkJfQorKworKyAgICAgICAgcHJpdmF0 ZSBzdGF0aWMgc3RyaW5nW10gR2FjUGF0aHMgeworKyAgICAgICAgICAgIGdldCB7CisrICAgICAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbEdldEdhY1BhdGhzICgpOworKyAgICAgICAgICAgIH0K KysgICAgICAgIH0KKyAjcHJhZ21hIHdhcm5pbmcgcmVzdG9yZSAxNjkKKyAJCVtNZXRob2RJbXBs QXR0cmlidXRlIChNZXRob2RJbXBsT3B0aW9ucy5JbnRlcm5hbENhbGwpXQorIAkJaW50ZXJuYWwg ZXh0ZXJuIHN0YXRpYyBzdHJpbmcgaW50ZXJuYWxHZXRHYWNQYXRoICgpOworKworKyAgICAgICAg W01ldGhvZEltcGxBdHRyaWJ1dGUgKE1ldGhvZEltcGxPcHRpb25zLkludGVybmFsQ2FsbCldCisr CQlpbnRlcm5hbCBleHRlcm4gc3RhdGljIHN0cmluZyBbXSBpbnRlcm5hbEdldEdhY1BhdGhzICgp OworICNlbmRpZgorIAkJW01ldGhvZEltcGxBdHRyaWJ1dGUgKE1ldGhvZEltcGxPcHRpb25zLklu dGVybmFsQ2FsbCldCisgCQlpbnRlcm5hbCBleHRlcm4gc3RhdGljIHN0cmluZyBbXSBHZXRMb2dp Y2FsRHJpdmVzSW50ZXJuYWwgKCk7CitkaWZmIC0tZ2l0IGEvbW9uby9tZXRhZGF0YS9hc3NlbWJs eS5jIGIvbW9uby9tZXRhZGF0YS9hc3NlbWJseS5jCitpbmRleCA4YzcxYWQwZWI5NS4uNzU5ZDVh ZWZiY2YgMTAwNjQ0CistLS0gYS9tb25vL21ldGFkYXRhL2Fzc2VtYmx5LmMKKysrKyBiL21vbm8v bWV0YWRhdGEvYXNzZW1ibHkuYworQEAgLTg1NCw2ICs4NTQsMTEgQEAgbW9ub19hc3NlbWJseV9n ZXRyb290ZGlyICh2b2lkKQorIAlyZXR1cm4gZGVmYXVsdF9wYXRoIFswXTsKKyB9CisgCisrY2hh ciAqKm1vbm9fYXNzZW1ibHlfZ2V0X2V4dHJhX2dhY19wYXRocygpCisreworKyAgICByZXR1cm4g ZXh0cmFfZ2FjX3BhdGhzOworK30KKysKKyAvKioKKyAgKiBtb25vX25hdGl2ZV9nZXRyb290ZGly OgorICAqIAorZGlmZiAtLWdpdCBhL21vbm8vbWV0YWRhdGEvYXNzZW1ibHkuaCBiL21vbm8vbWV0 YWRhdGEvYXNzZW1ibHkuaAoraW5kZXggZTljMDJlZTI2ZjUuLmU1ZjA2MGU4MjM4IDEwMDY0NAor LS0tIGEvbW9uby9tZXRhZGF0YS9hc3NlbWJseS5oCisrKysgYi9tb25vL21ldGFkYXRhL2Fzc2Vt Ymx5LmgKK0BAIC01MCw2ICs1MCw3IEBAIE1PTk9fQVBJIE1PTk9fUlRfRVhURVJOQUxfT05MWSBN b25vSW1hZ2UqICAgIG1vbm9fYXNzZW1ibHlfbG9hZF9tb2R1bGUgKE1vbm9Bc3NlCisgTU9OT19B UEkgdm9pZCAgICAgICAgICBtb25vX2Fzc2VtYmx5X2Nsb3NlICAgICAgKE1vbm9Bc3NlbWJseSAq YXNzZW1ibHkpOworIE1PTk9fQVBJIHZvaWQgICAgICAgICAgbW9ub19hc3NlbWJseV9zZXRyb290 ZGlyIChjb25zdCBjaGFyICpyb290X2Rpcik7CisgTU9OT19BUEkgTU9OT19DT05TVF9SRVRVUk4g Y2hhciAqbW9ub19hc3NlbWJseV9nZXRyb290ZGlyICh2b2lkKTsKKytNT05PX0FQSSBjaGFyICoq bW9ub19hc3NlbWJseV9nZXRfZXh0cmFfZ2FjX3BhdGhzICh2b2lkKTsKKyBNT05PX0FQSSBjaGFy ICAgICAgICAgKm1vbm9fbmF0aXZlX2dldHJvb3RkaXIgKHZvaWQpOworIE1PTk9fQVBJIHZvaWQJ ICAgICAgIG1vbm9fYXNzZW1ibHlfZm9yZWFjaCAgICAoTW9ub0Z1bmMgZnVuYywgdm9pZCogdXNl cl9kYXRhKTsKKyBNT05PX0FQSSB2b2lkICAgICAgICAgIG1vbm9fYXNzZW1ibHlfc2V0X21haW4g ICAoTW9ub0Fzc2VtYmx5ICphc3NlbWJseSk7CitkaWZmIC0tZ2l0IGEvbW9uby9tZXRhZGF0YS9p Y2FsbC1kZWNsLmggYi9tb25vL21ldGFkYXRhL2ljYWxsLWRlY2wuaAoraW5kZXggYTc3ZmNmMzg1 OTguLjNmMGYxNzU4ZWMyIDEwMDY0NAorLS0tIGEvbW9uby9tZXRhZGF0YS9pY2FsbC1kZWNsLmgK KysrKyBiL21vbm8vbWV0YWRhdGEvaWNhbGwtZGVjbC5oCitAQCAtMTUyLDYgKzE1Miw3IEBAIElD QUxMX0VYUE9SVCBnaW50MzIgdmVzX2ljYWxsX1N5c3RlbV9FbnZpcm9ubWVudF9nZXRfVGlja0Nv dW50ICh2b2lkKTsKKyAjaWYgRU5BQkxFX05FVENPUkUKKyBJQ0FMTF9FWFBPUlQgZ2ludDY0IHZl c19pY2FsbF9TeXN0ZW1fRW52aXJvbm1lbnRfZ2V0X1RpY2tDb3VudDY0ICh2b2lkKTsKKyAjZW5k aWYKKytJQ0FMTF9FWFBPUlQgTW9ub0FycmF5ICp2ZXNfaWNhbGxfU3lzdGVtX0Vudmlyb25tZW50 X0dldEdhY1BhdGhzICh2b2lkKTsKKyBJQ0FMTF9FWFBPUlQgZ2ludDY0IHZlc19pY2FsbF9TeXN0 ZW1fRGF0ZVRpbWVfR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUgKHZvaWQpOworIElDQUxMX0VYUE9S VCBnaW50NjQgdmVzX2ljYWxsX1N5c3RlbV9EaWFnbm9zdGljc19Qcm9jZXNzX0dldFByb2Nlc3NE YXRhIChpbnQsIGdpbnQzMiwgTW9ub1Byb2Nlc3NFcnJvciopOworIElDQUxMX0VYUE9SVCBnaW50 NjQgdmVzX2ljYWxsX1N5c3RlbV9EaWFnbm9zdGljc19TdG9wd2F0Y2hfR2V0VGltZXN0YW1wICh2 b2lkKTsKK2RpZmYgLS1naXQgYS9tb25vL21ldGFkYXRhL2ljYWxsLWRlZi5oIGIvbW9uby9tZXRh ZGF0YS9pY2FsbC1kZWYuaAoraW5kZXggMGE0NDcyOTY3NGIuLjU5YzgwM2JhNDg4IDEwMDY0NAor LS0tIGEvbW9uby9tZXRhZGF0YS9pY2FsbC1kZWYuaAorKysrIGIvbW9uby9tZXRhZGF0YS9pY2Fs bC1kZWYuaAorQEAgLTMyNyw2ICszMjcsNyBAQCBIQU5ETEVTKEVOVl8xNmIsICJnZXRfYnVuZGxl ZF9tYWNoaW5lX2NvbmZpZyIsIHZlc19pY2FsbF9TeXN0ZW1fRW52aXJvbm1lbnRfZ2V0XworIEhB TkRMRVMoRU5WXzE2bSwgImludGVybmFsQnJvYWRjYXN0U2V0dGluZ0NoYW5nZSIsIHZlc19pY2Fs bF9TeXN0ZW1fRW52aXJvbm1lbnRfQnJvYWRjYXN0U2V0dGluZ0NoYW5nZSwgdm9pZCwgMCwgKCkp CisgSEFORExFUyhFTlZfMTcsICJpbnRlcm5hbEdldEVudmlyb25tZW50VmFyaWFibGVfbmF0aXZl IiwgdmVzX2ljYWxsX1N5c3RlbV9FbnZpcm9ubWVudF9HZXRFbnZpcm9ubWVudFZhcmlhYmxlX25h dGl2ZSwgTW9ub1N0cmluZywgMSwgKGNvbnN0X2NoYXJfcHRyKSkKKyBIQU5ETEVTKEVOVl8xOCwg ImludGVybmFsR2V0R2FjUGF0aCIsIHZlc19pY2FsbF9TeXN0ZW1fRW52aXJvbm1lbnRfR2V0R2Fj UGF0aCwgTW9ub1N0cmluZywgMCwgKCkpCisrTk9IQU5ETEVTKElDQUxMKEVOVl8xOF8xLCAiaW50 ZXJuYWxHZXRHYWNQYXRocyIsIHZlc19pY2FsbF9TeXN0ZW1fRW52aXJvbm1lbnRfR2V0R2FjUGF0 aHMpKQorIEhBTkRMRVMoRU5WXzE5LCAiaW50ZXJuYWxHZXRIb21lIiwgdmVzX2ljYWxsX1N5c3Rl bV9FbnZpcm9ubWVudF9JbnRlcm5hbEdldEhvbWUsIE1vbm9TdHJpbmcsIDAsICgpKQorIE5PSEFO RExFUyhJQ0FMTChFTlZfMjAsICJzZXRfRXhpdENvZGUiLCBtb25vX2Vudmlyb25tZW50X2V4aXRj b2RlX3NldCkpCisgSUNBTExfVFlQRShHQywgIlN5c3RlbS5HQyIsIEdDXzEwKQorZGlmZiAtLWdp dCBhL21vbm8vbWV0YWRhdGEvaWNhbGwuYyBiL21vbm8vbWV0YWRhdGEvaWNhbGwuYworaW5kZXgg NmQxNmI5YzM1NDAuLjFlNTkyYzMwZTI3IDEwMDY0NAorLS0tIGEvbW9uby9tZXRhZGF0YS9pY2Fs bC5jCisrKysgYi9tb25vL21ldGFkYXRhL2ljYWxsLmMKK0BAIC03NzgxLDYgKzc3ODEsNTYgQEAg dmVzX2ljYWxsX1N5c3RlbV9FbnZpcm9ubWVudF9HZXRHYWNQYXRoIChNb25vRXJyb3IgKmVycm9y KQorIH0KKyAjZW5kaWYKKyAKKytJQ0FMTF9FWFBPUlQgTW9ub0FycmF5ICoKKyt2ZXNfaWNhbGxf U3lzdGVtX0Vudmlyb25tZW50X0dldEdhY1BhdGhzICgpCisreworKyAgICBjaGFyICoqZXh0cmFf Z2FjX3BhdGhzID0gbW9ub19hc3NlbWJseV9nZXRfZXh0cmFfZ2FjX3BhdGhzKCk7CisrICAgIGNv bnN0IGNoYXIgKnJvb3RkaXIgPSBtb25vX2Fzc2VtYmx5X2dldHJvb3RkaXIgKCk7CisrICAgIGNo YXIgKiplOworKyAgICBpbnQgbjsKKysgICAgTW9ub0RvbWFpbiAqZG9tYWluOworKyAgICBNb25v QXJyYXkgKm91dDsKKysgICAgTW9ub1N0cmluZyAqc3RyOworKyAgICBnY2hhciAqdG1wOworKyAg ICBNb25vRXJyb3IgZXJyb3I7CisrICAgIG4gPSAwOworKyAgICBpZiAocm9vdGRpcikgbisrOwor KyAgICBpZiAoZXh0cmFfZ2FjX3BhdGhzKSB7CisrICAgICAgICBmb3IgKGUgPSBleHRyYV9nYWNf cGF0aHM7ICplICE9IDA7IGUrKyk7CisrICAgICAgICBuICs9IChlIC0gZXh0cmFfZ2FjX3BhdGhz KTsKKysgICAgfQorKworKyAgICBkb21haW4gPSBtb25vX2RvbWFpbl9nZXQgKCk7CisrICAgIG91 dCA9IG1vbm9fYXJyYXlfbmV3X2NoZWNrZWQgKGRvbWFpbiwgbW9ub19kZWZhdWx0cy5zdHJpbmdf Y2xhc3MsIG4sICZlcnJvcik7CisrCisrICAgIGlmIChtb25vX2Vycm9yX3NldF9wZW5kaW5nX2V4 Y2VwdGlvbiAoJmVycm9yKSkKKysgICAgICAgIHJldHVybiBOVUxMOworKworKyAgICBuID0gMDsK KysgICAgaWYgKHJvb3RkaXIpIHsKKysgICAgICAgIHRtcCA9IGdfYnVpbGRfcGF0aCAoR19ESVJf U0VQQVJBVE9SX1MsIHJvb3RkaXIsICJtb25vIiwgImdhYyIsIE5VTEwpOworKyAgICAgICAgc3Ry ID0gbW9ub19zdHJpbmdfbmV3X2NoZWNrZWQgKGRvbWFpbiwgdG1wLCAmZXJyb3IpOworKyAgICAg ICAgZ19mcmVlICh0bXApOworKyAgICAgICAgaWYgKG1vbm9fZXJyb3Jfc2V0X3BlbmRpbmdfZXhj ZXB0aW9uICgmZXJyb3IpKQorKyAgICAgICAgICAgIHJldHVybiBOVUxMOworKyAgICAgICAgbW9u b19hcnJheV9zZXRyZWZfaW50ZXJuYWwgKG91dCwgbiwgc3RyKTsKKysgICAgICAgIG4rKzsKKysg ICAgfQorKyAgICBpZiAoZXh0cmFfZ2FjX3BhdGhzKSB7CisrICAgICAgICBmb3IgKGUgPSBleHRy YV9nYWNfcGF0aHM7ICplICE9IDA7IGUrKykgeworKyAgICAgICAgICAgIHRtcCA9IGdfYnVpbGRf cGF0aCAoR19ESVJfU0VQQVJBVE9SX1MsICplLCAibGliIiwgIm1vbm8iLCAiZ2FjIiwgTlVMTCk7 CisrICAgICAgICAgICAgc3RyID0gbW9ub19zdHJpbmdfbmV3X2NoZWNrZWQgKGRvbWFpbiwgdG1w LCAmZXJyb3IpOworKyAgICAgICAgICAgIGdfZnJlZSAodG1wKTsKKysgICAgICAgICAgICBpZiAo bW9ub19lcnJvcl9zZXRfcGVuZGluZ19leGNlcHRpb24gKCZlcnJvcikpCisrICAgICAgICAgICAg ICAgIHJldHVybiBOVUxMOworKyAgICAgICAgICAgIG1vbm9fYXJyYXlfc2V0cmVmX2ludGVybmFs IChvdXQsIG4sIHN0cik7CisrICAgICAgICAgICAgbisrOworKyAgICAgICAgfQorKyAgICB9Cisr CisrICAgIHJldHVybiBvdXQ7CisrfQorKworICNpZm5kZWYgSE9TVF9XSU4zMgorIHN0YXRpYyBp bmxpbmUgTW9ub1N0cmluZ0hhbmRsZQorIG1vbm9faWNhbGxfZ2V0X3dpbmRvd3NfZm9sZGVyX3Bh dGggKGludCBmb2xkZXIsIE1vbm9FcnJvciAqZXJyb3IpCmRpZmYgLS1naXQgYS9nbnUvcGFja2Fn ZXMvcGF0Y2hlcy9tb25vLTYuMTIuMC1maXgtQ29uZGl0aW9uUGFyc2VyLnBhdGNoIGIvZ251L3Bh Y2thZ2VzL3BhdGNoZXMvbW9uby02LjEyLjAtZml4LUNvbmRpdGlvblBhcnNlci5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40ZWNkZTA3ZDQyCi0tLSAvZGV2L251 bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbW9uby02LjEyLjAtZml4LUNvbmRpdGlvblBh cnNlci5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitkaWZmIC0tZ2l0IGEvbWNzL2NsYXNzL01pY3Jv c29mdC5CdWlsZC5FbmdpbmUvTWljcm9zb2Z0LkJ1aWxkLkJ1aWxkRW5naW5lL0NvbmRpdGlvblBh cnNlci5jcyBiL21jcy9jbGFzcy9NaWNyb3NvZnQuQnVpbGQuRW5naW5lL01pY3Jvc29mdC5CdWls ZC5CdWlsZEVuZ2luZS9Db25kaXRpb25QYXJzZXIuY3MKK2luZGV4IGI1ZTJlODA5YWU0Li43NTc0 OTJkMTVlNCAxMDA2NDQKKy0tLSBhL21jcy9jbGFzcy9NaWNyb3NvZnQuQnVpbGQuRW5naW5lL01p Y3Jvc29mdC5CdWlsZC5CdWlsZEVuZ2luZS9Db25kaXRpb25QYXJzZXIuY3MKKysrKyBiL21jcy9j bGFzcy9NaWNyb3NvZnQuQnVpbGQuRW5naW5lL01pY3Jvc29mdC5CdWlsZC5CdWlsZEVuZ2luZS9D b25kaXRpb25QYXJzZXIuY3MKK0BAIC0yMDUsMTkgKzIwNSwzMCBAQCBDb25kaXRpb25FeHByZXNz aW9uIFBhcnNlRnVuY3Rpb25FeHByZXNzaW9uIChzdHJpbmcgZnVuY3Rpb25fbmFtZSkKKyAJCXsK KyAJCQlMaXN0IDxDb25kaXRpb25GYWN0b3JFeHByZXNzaW9uPiBsaXN0ID0gbmV3IExpc3QgPENv bmRpdGlvbkZhY3RvckV4cHJlc3Npb24+ICgpOworIAkJCUNvbmRpdGlvbkZhY3RvckV4cHJlc3Np b24gZTsKKy0JCQkKKysKKysgICAgICAgICAgICAvKiBzdGFydHMgbG9va2luZyBhdCB0aGUgb3Bl biBwYXJlbiwgbW92ZSBwYXN0IGl0ICovCisrICAgICAgICAgICAgdG9rZW5pemVyLkdldE5leHRU b2tlbiAoKTsKKysgICAgICAgICAgICBpZiAodG9rZW5pemVyLlRva2VuLlR5cGUgPT0gVG9rZW5U eXBlLlJpZ2h0UGFyZW4pIHsKKysgICAgICAgICAgICAgICAgLyogbGVhdmUgdXMgbG9va2luZyBw YXN0IHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50IGxpc3QgKi8KKysgICAgICAgICAgICAgICAgdG9r ZW5pemVyLkdldE5leHRUb2tlbiAoKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3Q7Cisr ICAgICAgICAgICAgfQorIAkJCXdoaWxlICh0cnVlKSB7CistCQkJCXRva2VuaXplci5HZXROZXh0 VG9rZW4gKCk7CistCQkJCWlmICh0b2tlbml6ZXIuVG9rZW4uVHlwZSA9PSBUb2tlblR5cGUuUmln aHRQYXJlbikgeworLQkJCQkJdG9rZW5pemVyLkdldE5leHRUb2tlbiAoKTsKKy0JCQkJCWJyZWFr OworLQkJCQl9CistCQkJCWlmICh0b2tlbml6ZXIuVG9rZW4uVHlwZSA9PSBUb2tlblR5cGUuQ29t bWEpCisrICAgICAgICAgICAgICAgIGUgPSAoQ29uZGl0aW9uRmFjdG9yRXhwcmVzc2lvbikgUGFy c2VGYWN0b3JFeHByZXNzaW9uICgpOworKyAgICAgICAgICAgICAgICBsaXN0LkFkZCAoZSk7Cisr ICAgICAgICAgICAgICAgIC8qIFBhcnNlRmFjdG9yRXhwcmVzc2lvbiBsZWF2ZXMgdXMgbG9va2lu ZyBhdCB3aGF0IGZvbGxvd3MgdGhlCisrICAgICAgICAgICAgICAgICAqIGV4cHJlc3Npb24gKi8K KysgICAgICAgICAgICAgICAgaWYgKHRva2VuaXplci5Ub2tlbi5UeXBlID09IFRva2VuVHlwZS5S aWdodFBhcmVuKSB7CisrICAgICAgICAgICAgICAgICAgICAvKiBsZWF2ZSB1cyBsb29raW5nIHBh c3QgdGhlIGVuZCBvZiB0aGUgYXJndW1lbnQgbGlzdCAqLworKyAgICAgICAgICAgICAgICAgICAg dG9rZW5pemVyLkdldE5leHRUb2tlbiAoKTsKKysgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor KyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGlmICh0b2tlbml6ZXIuVG9rZW4u VHlwZSA9PSBUb2tlblR5cGUuQ29tbWEpIHsKKysgICAgICAgICAgICAgICAgICAgIHRva2VuaXpl ci5HZXROZXh0VG9rZW4gKCk7CisgCQkJCQljb250aW51ZTsKKy0JCQkJCQorLQkJCQl0b2tlbml6 ZXIuUHV0YmFjayAodG9rZW5pemVyLlRva2VuKTsKKy0JCQkJZSA9IChDb25kaXRpb25GYWN0b3JF eHByZXNzaW9uKSBQYXJzZUZhY3RvckV4cHJlc3Npb24gKCk7CistCQkJCWxpc3QuQWRkIChlKTsK KysgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhwcmVz c2lvblBhcnNlRXhjZXB0aW9uIChTdHJpbmcuRm9ybWF0ICgiVW5leHBlY3RlZCB0b2tlbiB7MH0g aW4gYXJndW1lbnQgbGlzdCB3aGlsZSBwYXJzaW5nIGNvbmRpdGlvbiBcInsxfVwiIiwgdG9rZW5p emVyLlRva2VuLCBjb25kaXRpb25TdHIpKTsKKyAJCQl9CisgCQkJCisgCQkJcmV0dXJuIGxpc3Q7 Ci0tIAoyLjQ1LjIKCg== --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A Content-Type: text/x-patch; name=0019-gnu-Add-mono-5.10.0.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0019-gnu-Add-mono-5.10.0.patch RnJvbSBmMzNiYzg1ZDNlOTkyMDQzMzhhNjlhNTBhZjA0NWU3ZWI5NzdlZGE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlEOiA8ZjMzYmM4NWQzZTk5MjA0MzM4YTY5YTUwYWYwNDVl N2ViOTc3ZWRhNy4xNzMyNzA3Mjg4LmdpdC51bm11c2hAaGFzaGJhbmcuc2g+CkluLVJlcGx5LVRv OiA8M2Y4YWY2NWY3Mjg3MWQ2MWZhODVlNjkzOWY0NmNiOGRhYzE4NWM3MC4xNzMyNzA3Mjg4Lmdp dC51bm11c2hAaGFzaGJhbmcuc2g+ClJlZmVyZW5jZXM6IDwzZjhhZjY1ZjcyODcxZDYxZmE4NWU2 OTM5ZjQ2Y2I4ZGFjMTg1YzcwLjE3MzI3MDcyODguZ2l0LnVubXVzaEBoYXNoYmFuZy5zaD4KRnJv bTogdW5tdXNoIDx1bm11c2hAaGFzaGJhbmcuc2g+CkRhdGU6IFdlZCwgMjcgTm92IDIwMjQgMDA6 NTQ6MjgKU3ViamVjdDogW1BBVENIIDE5LzIxXSBnbnU6IEFkZCBtb25vLTUuMTAuMC4KCiogZ251 L3BhY2thZ2VzL2RvdG5ldC5zY20KICAobW9uby01LjEwLjAtZXh0ZXJuYWwtcmVwby1zcGVjcywg bW9uby01LjEwLjApOiBOZXcgdmFyaWFibGVzLgoqIGdudS9wYWNrYWdlcy9wYXRjaGVzL21vbm8t NS4xMC4wLWxhdGVyLW1jcy1jaGFuZ2VzLnBhdGNoOiBOZXcgcGF0Y2guCiogZ251L2xvY2FsLm1r IChkaXN0X3BhdGNoX0RBVEEpOiBSZWdpc3RlciBuZXcgcGF0Y2guCgpDaGFuZ2UtSWQ6IEljNWUx MjNjMmNkMTJmOWI3N2QwMTJjZDdkNzNmOWJlMGI1YTYwOGVjCi0tLQogZ251L2xvY2FsLm1rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBnbnUvcGFja2FnZXMvZG90 bmV0LnNjbSAgICAgICAgICAgICAgICAgICAgICAgfCAgMTE5ICsKIC4uLi9tb25vLTUuMTAuMC1s YXRlci1tY3MtY2hhbmdlcy5wYXRjaCAgICAgICB8IDQ2MDEgKysrKysrKysrKysrKysrKysKIDMg ZmlsZXMgY2hhbmdlZCwgNDcyMSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ251 L3BhY2thZ2VzL3BhdGNoZXMvbW9uby01LjEwLjAtbGF0ZXItbWNzLWNoYW5nZXMucGF0Y2gKCmRp ZmYgLS1naXQgYS9nbnUvbG9jYWwubWsgYi9nbnUvbG9jYWwubWsKaW5kZXggN2UyNjQxNmU3OC4u NmIwZWJkZjJkNyAxMDA2NDQKLS0tIGEvZ251L2xvY2FsLm1rCisrKyBiL2dudS9sb2NhbC5tawpA QCAtMTc3MSw2ICsxNzcxLDcgQEAgZGlzdF9wYXRjaF9EQVRBID0JCQkJCQlcCiAgICVEJS9wYWNr YWdlcy9wYXRjaGVzL21vbm8tNC45LjAtZml4LXJ1bnRpbWVtZXRhZGF0YXZlcnNpb24ucGF0Y2gJ CVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbW9uby01LjQuMC1wYXRjaGVzLnBhdGNoCQlcCiAg ICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tNS44LjAtcGF0Y2hlcy5wYXRjaAkJXAorICAlRCUv cGFja2FnZXMvcGF0Y2hlcy9tb25vLTUuMTAuMC1sYXRlci1tY3MtY2hhbmdlcy5wYXRjaAlcCiAg ICVEJS9wYWNrYWdlcy9wYXRjaGVzL21vbm8tbWNzLXBhdGNoZXMtZnJvbS01LjEwLjAucGF0Y2gJ XAogICAlRCUvcGFja2FnZXMvcGF0Y2hlcy9tb3NhaWNhdGNoZXItdW5idW5kbGUtaHRzbGliLnBh dGNoCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbXJyZXNjdWUtc3VwcG9ydC1sb3ZlLTExLnBh dGNoCQlcCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvZG90bmV0LnNjbSBiL2dudS9wYWNrYWdl cy9kb3RuZXQuc2NtCmluZGV4IDQzOWU5Nzc5YmIuLjMzMDljZWMzZjUgMTAwNjQ0Ci0tLSBhL2du dS9wYWNrYWdlcy9kb3RuZXQuc2NtCisrKyBiL2dudS9wYWNrYWdlcy9kb3RuZXQuc2NtCkBAIC0x NDcyLDMgKzE0NzIsMTIyIEBAIChkZWZpbmUtcHVibGljIG1vbm8tcHJlLTUuMTAuMAogICAgICAg ICAgICAgICAgICAoc2VhcmNoLXBhdGNoZXMgIm1vbm8tbWNzLXBhdGNoZXMtZnJvbS01LjEwLjAu cGF0Y2giKSkpKQogICAgICAgKG5hdGl2ZS1pbnB1dHMgKG1vZGlmeS1pbnB1dHMgKHBhY2thZ2Ut bmF0aXZlLWlucHV0cyBtb25vLTUuOC4wKQogICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2Ug Im1vbm8iIG1vbm8tNS44LjApKSkpKSkKKworKGRlZmluZSBtb25vLTUuMTAuMC1leHRlcm5hbC1y ZXBvLXNwZWNzCisgICcoKCJhcGktZG9jLXRvb2xzIiAgICAgICAgICAgICAgICJkMDNlODE5ODM4 YzYyNDFmOTJmOTA2NTVjYjQ0OGNjNDdjOWU4NzkxIgorICAgICAiMXJpa2k3OWYzaWczY3hpZ3Zp c3M4MWR6NjAxaG45MmExZ2lmZ2xtMG16amJzNzZzZjNmaiIKKyAgICAgIzpyZWN1cnNpdmU/ICN0 KQorICAgICgiYXBpLXNuYXBzaG90IiAgICAgICAgICAgICAgICAiZGE4YmI4YzdiOTcwMzgzY2Uy NmM5YjA5Y2UzNjg5ZDg0M2E2MjIyZSIKKyAgICAgIjAwa3h3MDl5aXJkaDBiemt2czB2M2g2Ymtk anY5ZDRnOWFnbjNiODY0MGF3dnB5bTN5cXciKQorICAgICgiYXNwbmV0d2Vic3RhY2siICAgICAg ICAgICAgICAiZTc3YjEyZTZjYzVlZDI2MGE5ODQ0N2Y2MDllODg3MzM3ZTQ0ZTI5OSIKKyAgICAg IjBya3MzNDRxcjRmbXAzZnMxMjY0ZDJxa21tMzQ4bThkMWtqZDd6NGw5NGlpaXJ3bjFmcTEiKQor ICAgICgoInJlZmVyZW5jZS1hc3NlbWJsaWVzIiAiYmluYXJ5LXJlZmVyZW5jZS1hc3NlbWJsaWVz IikKKyAgICAgImUwNDhmZTRhODhkMjM3ZDEwNWFlMDJmZTAzNjNhNjgyOTYwOTkzNjIiCisgICAg ICIwaTg3aTN4Njk0ZjRnOHMyZmxmbHYwYWg4OGJseGRzN2diaXlyd3Jtc2NxZGpzaWZoeTQ5IikK KyAgICAoImJvY2tidWlsZCIgICAgICAgICAgICAgICAgICAgIjE5MDhkNDNlYzYzMDU0NDE4OWJk MTE2MzBhNTllYzRlZjU3MWRiMjgiCisgICAgICIxaDEzbGdpYzJkd25iemM1OG5xaGpoYWduMGYx MDBubDVtaHpyeWpkbXlwZ3JmM2NyMWIzIikKKyAgICAoImJvcmluZ3NzbCIgICAgICAgICAgICAg ICAgICAgIjNlMDc3MGUxODgzNTcxNDcwODg2MGJhOWZlMWFmMDRhOTMyOTcxZmYiCisgICAgICIx MzlhMGdsOTFhNTJrMnI2bmE2aWFsemtxeWthajFyazg4empya2F6M3NkeHg3bm1tZzZ5IikKKyAg ICAoImNlY2lsIiAgICAgICAgICAgICAgICAgICAgICAgImRmZWUxMWU4MGQ1OWUxYTNkNmQ5Yzkx NGMzZjI3N2M3MjZiYWNlNTIiCisgICAgICIxeTJmNTl2OTg4eTJsbHFwcWkwemw5bHkwbGt5bTh6 dzBhNHZrYXY3Y3BwNm01bWtxMjA4IikKKyAgICAoKCJjZWNpbCIgImNlY2lsLWxlZ2FjeSIpICAg ICAgIjMzZDUwYjg3NGZkNTI3MTE4YmMzNjFkODNkZTNkNDk0ZThiYjU1ZTEiCisgICAgICIxcDRo bDE3OTZpYjI2eWt5ZjVzbmw2Y2owbHgwdjdtamgweHFoanc2cWRoNzUzbnNqeWhiIikKKyAgICAo ImNvcmVmeCIgICAgICAgICAgICAgICAgICAgICAgImUzMjdkMjg1NWVkNzRkYWM5NmY2ODQ3OTdl NDgyMDM0NTI5N2E2OTAiCisgICAgICIxMXBpbm5uOHp3ZjRoaTBnZmo5OGN5cWttaDd3cm1kNW1o Y2RtODRna2w5czJnMThpYXEwIikKKyAgICAoImNvcmVydCIgICAgICAgICAgICAgICAgICAgICAg ImFhNjRiMzc2YzFhMjIzOGIxYTc2OGUxNThkMWIxMWRhYzc3ZDcyMmEiCisgICAgICIxZ2c0bTQ5 czByeTV5eDk2ZHdqYXJ5N3IzOTV5cHp6ZzRzc3oxYWpsZDJ4NWc3Z2d2d2dnIikKKyAgICAoImlr ZGFzbSIgICAgICAgICAgICAgICAgICAgICAgIjQ2NWMwODE1NTU4ZmQ0M2MwMTEwZjhkMDBmYzE4 NmFjMDA0NGFjNmEiCisgICAgICIweGlyN3BjZ3EwNGhiN3M4Zzl3c3FkcnlwYjZsMjlyYWozaXo1 cmNxemRtMDA1Nms3NXcyIikKKyAgICAoKCJpa3ZtLWZvcmsiICJpa3ZtIikgICAgICAgICAgIjg0 N2UwNWZjZWQ1YzlhNDFmZjBmMjRmMWY5ZDQwZDVhOGE1NzcyYzEiCisgICAgICIxZmw5Ym0zbG16 ZjhpcXYzeDRpcWt6OWZjNTRtd2R2cnhpc3hnMm52d3djc2k0c2FmZnBpIikKKyAgICAoImxpbmtl ciIgICAgICAgICAgICAgICAgICAgICAgIjg0ZDM3NDI0Y2RlNmU2NmJiZjk5NzExMGE0ZGJkYmE3 ZTYwMDM4ZTkiCisgICAgICIwN2Zma2M5aWp6c2R2YmtyYzFmbjVzYjI1c2d4eWFiczU0a3p5Ymx3 a3pwYXJ3ajA0N3FyIikKKyAgICAoIk5ld3RvbnNvZnQuSnNvbiIgICAgICAgICAgICAgIjQ3MWMz ZTA4MDNhOWY0MGEwYWNjOGFlY2ViMzFkZTZmZjkzYTUyYzQiCisgICAgICIwZGduZ2Q1aHFrNnlo bGc0MGthYm42cWRua25tMzJ6Y3g5cTZibTJ3MzFjc25zazU5NzhzIikKKyAgICAoKCJOdUdldC5C dWlsZFRhc2tzIiAibnVnZXQtYnVpbGR0YXNrcyIpCisgICAgICJiMmMzMGJjODFiMmE3NzMzYTRl ZWIyNTJhNTVmNmI0ZDUwY2ZjM2ExIgorICAgICAiMDF2YWpyZng2eTEyZjUyNXhkaXdmYm45cXpt eW0yczY1cmJpcXB5OWQ5eHcwcG5xN2dibCIpCisgICAgKCgiTlVuaXRMaXRlIiAibnVuaXQtbGl0 ZSIpICAgICI3MGJiNzBiMGZmZDAxMDlhYWRhYTZlNGVhMTc4OTcyZDRmYjYzZWEzIgorICAgICAi MGxuN3JuMTk2MGNkd21mcWNzY3AyZDJuY3B3bmtuaHE5cmY4djUzYXk4ZzJjM2c2Z2g0cSIpCisg ICAgOzsgKCJyb3NseW4tYmluYXJpZXMiICAgICAgICAgICIwMGRhNTNjNDc0NjI1MDk4OGE5MjA1 NWVmM2FjNjUzY2NmODRmYzQwIgorICAgIDs7ICAiIikKKyAgICAoInJ4IiAgICAgICAgICAgICAg ICAgICAgICAgICAgImIyOWE0YjBmZGE2MDllMGFmMzNmZjU0ZWQxMzY1MmI2Y2NmMGUwNWUiCisg ICAgICIxbjFqd2htc2JrY3YyZDgwNmltbWNwemtiNzJyejA0eHk5OG15dzM1NWE4dzVhaDI1eWl2 IikKKyAgICA7OyAoInh1bml0LWJpbmFyaWVzIiAgICAgICAgICAgImM1YTkwN2JlMjVjMjAxY2Rh MzhiZWM5OWY2YzgyNTQ4YWIzZDliNWEiCisgICAgOzsgICIiKQorICAgICkpCisKKyhkZWZpbmUt cHVibGljIG1vbm8tNS4xMC4wCisgIChwYWNrYWdlCisgICAgKGluaGVyaXQgbW9uby1wcmUtNS4x MC4wKQorICAgICh2ZXJzaW9uICI1LjEwLjAuMTc5IikKKyAgICAobmFtZSAibW9ubyIpCisgICAg KHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAg ICAgICAgICAodXJpCisgICAgICAgICAgICAgICAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAg ICAgICh1cmwgImh0dHBzOi8vZ2l0bGFiLndpbmVocS5vcmcvbW9uby9tb25vLmdpdCIpCisgICAg ICAgICAgICAgICAgKGNvbW1pdCAibW9uby01LjEwLjAuMTc5IikpKQorICAgICAgICAgICAgICAo ZmlsZS1uYW1lIChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lvbikpCisgICAgICAgICAgICAgIChz aGEyNTYKKyAgICAgICAgICAgICAgIChiYXNlMzIKKyAgICAgICAgICAgICAgICAiMXp2aWIxNjR3 NG16cnNrMDZ5bTlteTAyMDhjY2RhbmphMmZ4Nng2bWx5aWIzNThoMzYyNiIpKQorICAgICAgICAg ICAgICAobW9kdWxlcyAnKChndWl4IGJ1aWxkIHV0aWxzKQorICAgICAgICAgICAgICAgICAgICAg ICAgIChpY2UtOSBzdHJpbmctZnVuKSkpCisgICAgICAgICAgICAgIChzbmlwcGV0ICN+KGJlZ2lu CisgICAgICAgICAgICAgICAgICAgICAgICAgICAjJChhZGQtZXh0ZXJuYWwtcmVwb3MKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1vbm8tNS4xMC4wLWV4dGVybmFsLXJlcG8tc3BlY3Mp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAjJEBwcmVwYXJlLW1vbm8tc291cmNlLTApKQor ICAgICAgICAgICAgICAocGF0Y2hlcworICAgICAgICAgICAgICAgKHNlYXJjaC1wYXRjaGVzICJt b25vLTUuMTAuMC1sYXRlci1tY3MtY2hhbmdlcy5wYXRjaCIpKSkpCisgICAgKG5hdGl2ZS1pbnB1 dHMgKG1vZGlmeS1pbnB1dHMgKHBhY2thZ2UtbmF0aXZlLWlucHV0cyBtb25vLXByZS01LjEwLjAp CisgICAgICAgICAgICAgICAgICAgICAocmVwbGFjZSAibW9ubyIgbW9uby1wcmUtNS4xMC4wKQor ICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCAoZGVmYXVsdC1weXRob24pKSkpCisgICAgKGFy Z3VtZW50cworICAgICAoc3Vic3RpdHV0ZS1rZXl3b3JkLWFyZ3VtZW50cyAocGFja2FnZS1hcmd1 bWVudHMgbW9uby1wcmUtNS4xMC4wKQorICAgICAgICgoIzpwaGFzZXMgcGhhc2VzICN+JXN0YW5k YXJkLXBoYXNlcykKKyAgICAgICAgI34obW9kaWZ5LXBoYXNlcyAjJHBoYXNlcworICAgICAgICAg ICAgOzsgQnVpbGQgbm93IHJlbGllcyBvbiB0aGVzZSBiZWluZyBidWlsdCBiZWZvcmUgYW55IG1j cyBpcyBidWlsdDsKKyAgICAgICAgICAgIDs7IGhhdmUgdG8gdXNlIHRoZSBpbnB1dCBtY3MuCisg ICAgICAgICAgICAoZGVsZXRlICdidWlsZC1yZWZlcmVuY2UtYXNzZW1ibGllcykKKyAgICAgICAg ICAgIChhZGQtYmVmb3JlICdidWlsZCAnYnVpbGQtcmVmZXJlbmNlLWFzc2VtYmxpZXMKKyAgICAg ICAgICAgICAgKGxhbWJkYSogKCM6a2V5IG1ha2UtZmxhZ3MgIzphbGxvdy1vdGhlci1rZXlzKQor ICAgICAgICAgICAgICAgIChsZXQgKCh0b3AgKGdldGN3ZCkpKQorICAgICAgICAgICAgICAgICAg KHdpdGgtZGlyZWN0b3J5LWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICJleHRlcm5h bC9iaW5hcnktcmVmZXJlbmNlLWFzc2VtYmxpZXMiCisgICAgICAgICAgICAgICAgICAgIChzdWJz dGl0dXRlKiAoZmluZC1maWxlcyAiLiIgIl5NYWtlZmlsZSQiKQorICAgICAgICAgICAgICAgICAg ICAgICgoIkNTQ19DT01NT05fQVJHUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAg KHN0cmluZy1hcHBlbmQgYWxsICItZGVsYXlzaWduKyAiKSkKKyAgICAgICAgICAgICAgICAgICAg ICAoKCJJQk1cXC5EYXRhXFwuREIyX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAg ICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAgICAgICAg ICAgICAoKCJNb25vXFwuRGF0YVxcLlNxbGl0ZV9SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAg ICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisgICAgICAgICAg ICAgICAgICAgICAgKCgiU3lzdGVtXFwuRGF0YVxcLkRhdGFTZXRFeHRlbnNpb25zX1JFRlMgOj0g IiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVt LlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5EYXRhXFwuT3JhY2xl Q2xpZW50X1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBw ZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1c XC5JZGVudGl0eU1vZGVsX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChz dHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLkNvbmZpZ3VyYXRpb24gIikpCisgICAgICAgICAgICAg ICAgICAgICAgKCgiU3lzdGVtXFwuRGVzaWduX1JFRlMgOj0gIiBhbGwpCisgICAgICAgICAgICAg ICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiQWNjZXNzaWJpbGl0eSAiKSkKKyAgICAgICAg ICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5XZWJcXC5FeHRlbnNpb25zXFwuRGVzaWduX1JFRlMg Oj0gIiBhbGwpCisgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lz dGVtLldpbmRvd3MuRm9ybXMgU3lzdGVtLldlYiAiKSkKKyAgICAgICAgICAgICAgICAgICAgICAo KCJTeXN0ZW1cXC5TZXJ2aWNlTW9kZWxcXC5Sb3V0aW5nX1JFRlMgOj0gIiBhbGwpCisgICAgICAg ICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kIGFsbCAiU3lzdGVtLlhtbCAiKSkKKyAgICAg ICAgICAgICAgICAgICAgICAoKCJTeXN0ZW1cXC5XZWJcXC5BYnN0cmFjdGlvbnNfUkVGUyA6PSAi IGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0g IikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwuUmVhY3RpdmVcXC5XaW5kb3dz XFwuRm9ybXNfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1h cHBlbmQgYWxsICJTeXN0ZW0gIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiU3lzdGVtXFwu V2luZG93c1xcLkZvcm1zXFwuRGF0YVZpc3VhbGl6YXRpb25fUkVGUyA6PSAiIGFsbCkKKyAgICAg ICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgYWxsICJBY2Nlc3NpYmlsaXR5ICIpKQor ICAgICAgICAgICAgICAgICAgICAgICgoIkZhY2FkZXMvU3lzdGVtXFwuU2VydmljZU1vZGVsXFwu UHJpbWl0aXZlc19SRUZTIDo9ICIgYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5n LWFwcGVuZCBhbGwgIlN5c3RlbS5YbWwgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiRmFj YWRlcy9TeXN0ZW1cXC5EeW5hbWljXFwuUnVudGltZV9SRUZTIDo9ICIgYWxsKQorICAgICAgICAg ICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbSAiKSkKKyAgICAgICAgICAg ICAgICAgICAgICAoKCJGYWNhZGVzL1N5c3RlbVxcLlhtbFxcLlhEb2N1bWVudF9SRUZTIDo9ICIg YWxsKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbS5Y bWwgIikpCisgICAgICAgICAgICAgICAgICAgICAgKCgiRmFjYWRlcy9TeXN0ZW1cXC5SdW50aW1l XFwuU2VyaWFsaXphdGlvbi5YbWxfUkVGUyA6PSAiIGFsbCkKKyAgICAgICAgICAgICAgICAgICAg ICAgKHN0cmluZy1hcHBlbmQgYWxsICJTeXN0ZW0uWG1sICIpKQorICAgICAgICAgICAgICAgICAg ICAgICgoIkZhY2FkZXMvU3lzdGVtXFwuRGF0YVxcLkNvbW1vbl9SRUZTIDo9ICIgYWxsKQorICAg ICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlN5c3RlbSBTeXN0ZW0uWG1s ICIpKSkKKyAgICAgICAgICAgICAgICAgICAgKGFwcGx5IGludm9rZSAibWFrZSIgIkNTQz1tY3Mi IG1ha2UtZmxhZ3MpKSkpKSkpKSkpKQpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3BhdGNoZXMv bW9uby01LjEwLjAtbGF0ZXItbWNzLWNoYW5nZXMucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hl cy9tb25vLTUuMTAuMC1sYXRlci1tY3MtY2hhbmdlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5jNGUyMTFhOGEzCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3Bh Y2thZ2VzL3BhdGNoZXMvbW9uby01LjEwLjAtbGF0ZXItbWNzLWNoYW5nZXMucGF0Y2gKQEAgLTAs MCArMSw0NjAxIEBACitUaGUgcmVzdWx0IG9mIGNoZXJyeS1waWNraW5nIGV2ZXJ5IGNvbW1pdCAo ZXhjZXB0IG9uZXMgdGhhdCBzZWVtZWQgdG8gbm90CithZmZlY3QgdGhlIGNvbXBpbGVyIGl0c2Vs ZikgZnJvbSBtb25vLTUuMTAuMC4xNzkgdG8gbW9uby02LjEyLjAuMjA2IHRoYXQKK3RvdWNoZWQg Li9tY3MvbWNzLgorCitNb25vIHNlZW1zIHRvIGNvbnNpc3RlbnRseSwgYWxtb3N0IGFzIGEgcnVs ZSwgZGVwZW5kIG9uIEMjIGZlYXR1cmVzIGJlZm9yZQordGhleSBpbXBsZW1lbnQgdGhlbS4gIFRo aXMgaXMgZXh0cmVtZWx5IGF3a3dhcmQgZm9yIGJ1aWxkaW5nIHVzaW5nIHByZXZpb3VzCit2ZXJz aW9ucywgc28gaG9wZWZ1bGx5IHRoaXMgd2lsbCBhbGxvdyB1cyB0byBqdW1wIHN0cmFpZ2h0IHRv IGEgaGlnaCB2ZXJzaW9uLgorCitJbmNsdWRlcyB0aGUgZm9sbG93aW5nIGNvbW1pdHMsIGluIG9y ZGVyIG9mIG1vc3QtcmVjZW50IHRvIGxlYXN0LXJlY2VudDoKKworYjM5MTE1ODliMzcKKzY3MDBk ZDIyMGZlCisyYTdkZmIyOGUwNworZWVhNmYxMWEzZTYKKzNmYzA0N2M2ZjNhCithYzY2NjZmNWIw YgorOTI3YjI3YmI5ZDgKKzRhYjI0ZDRjMDU5CithYTgzNmI0NmEyMworZWU3ZGNjZmIzMjAKKzIz NTEwZjI2OTE1CitkOWYyNjU0N2Q4OAorOWRjMWM4ODVhMGYKK2VmNTU4ZWFkODlhCisyY2I3OTA5 YjEzYworMDM5MGVhMmU3OGMKK2I0ZjY2NTliZGMwCitlOTJkNjA3MGVhZgorNGM1YjNmYmQ0ZjQK K2U2NTA3ZjJkYThhCis2NTZhNGIxMTIwYworOWJkMmZhNGNmMzMKK2JlMmQxYWVmZmUwCis0NTRh NzZjZmE0YQorNjBjMWVlNDU0ZDQKKzUzZjFlZjUwNmVhCitkMzQ4N2JmZWJiMworOTJmNmU1YjFh ODEKKworZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCitpbmRleCBjNmVmMTlh ODQ5Yi4uYzM3ZDRmY2UzZjAgMTAwNjQ0CistLS0gYS8uZ2l0aWdub3JlCisrKysgYi8uZ2l0aWdu b3JlCitAQCAtNDAsNiArNDAsNyBAQCBBbmtoLk5vTG9hZAorICouZ3BTdGF0ZQorIC52c2NvZGUv CisgKi5leHAKKysudnMvCisgCisgIyBUb29saW5nCisgX1JlU2hhcnBlciovCitkaWZmIC0tZ2l0 IGEvbWNzL2NsYXNzL0NvbW1vbnMuWG1sLlJlbGF4bmcvTWFrZWZpbGUgYi9tY3MvY2xhc3MvQ29t bW9ucy5YbWwuUmVsYXhuZy9NYWtlZmlsZQoraW5kZXggMWZlYmFlNGViMWUuLmY5YjU3ZmVhMjY1 IDEwMDY0NAorLS0tIGEvbWNzL2NsYXNzL0NvbW1vbnMuWG1sLlJlbGF4bmcvTWFrZWZpbGUKKysr KyBiL21jcy9jbGFzcy9Db21tb25zLlhtbC5SZWxheG5nL01ha2VmaWxlCitAQCAtMjIsNyArMjIs NyBAQCBFWFRSQV9ESVNURklMRVMgPSBcCisgCSQoUkVTT1VSQ0VfRklMRVMpCisgCisgQ29tbW9u cy5YbWwuUmVsYXhuZy5SbmMvUm5jUGFyc2VyLmNzOiBDb21tb25zLlhtbC5SZWxheG5nLlJuYy9S bmNQYXJzZXIuamF5ICQodG9wZGlyKS9qYXkvc2tlbGV0b24uY3MKKy0JJCh0b3BkaXIpL2pheS9q YXkgLWN0diA8ICQodG9wZGlyKS9qYXkvc2tlbGV0b24uY3MgJChDVVJESVIpL0NvbW1vbnMuWG1s LlJlbGF4bmcuUm5jL1JuY1BhcnNlci5qYXkgPiBDb21tb25zLlhtbC5SZWxheG5nLlJuYy9SbmNQ YXJzZXIuY3MKKysJJCh0b3BkaXIpL2pheS9qYXkgLWN0diAtbyBDb21tb25zLlhtbC5SZWxheG5n LlJuYy9SbmNQYXJzZXIuY3MgJDwgPCAkKHRvcGRpcikvamF5L3NrZWxldG9uLmNzCisgCisgQlVJ TFRfU09VUkNFUyA9IENvbW1vbnMuWG1sLlJlbGF4bmcuUm5jL1JuY1BhcnNlci5jcworIAorZGlm ZiAtLWdpdCBhL21jcy9jbGFzcy9NaWNyb3NvZnQuQnVpbGQvTWFrZWZpbGUgYi9tY3MvY2xhc3Mv TWljcm9zb2Z0LkJ1aWxkL01ha2VmaWxlCitpbmRleCAyZGNiZWZkZjdmOS4uMWE3MTEwNjliMGIg MTAwNjQ0CistLS0gYS9tY3MvY2xhc3MvTWljcm9zb2Z0LkJ1aWxkL01ha2VmaWxlCisrKysgYi9t Y3MvY2xhc3MvTWljcm9zb2Z0LkJ1aWxkL01ha2VmaWxlCitAQCAtMjYsNyArMjYsNyBAQCBFWFRS QV9ESVNURklMRVMgPSBcCisgRVhQUl9QQVJTRVIgPSBNaWNyb3NvZnQuQnVpbGQuSW50ZXJuYWwv RXhwcmVzc2lvblBhcnNlcgorIAorICQoRVhQUl9QQVJTRVIpLmNzOiAkKEVYUFJfUEFSU0VSKS5q YXkgJCh0b3BkaXIpL2pheS9za2VsZXRvbi5jcworLQkoY2QgTWljcm9zb2Z0LkJ1aWxkLkludGVy bmFsOyAkKHRvcGRpcikvLi4vamF5L2pheSAtY3R2IDwgJCh0b3BkaXIpLy4uL2pheS9za2VsZXRv bi5jcyBFeHByZXNzaW9uUGFyc2VyLmpheSA+IEV4cHJlc3Npb25QYXJzZXIuY3MpCisrCShjZCBN aWNyb3NvZnQuQnVpbGQuSW50ZXJuYWw7ICQodG9wZGlyKS8uLi9qYXkvamF5IC1jdHYgLW8gRXhw cmVzc2lvblBhcnNlci5jcyBFeHByZXNzaW9uUGFyc2VyLmpheSA8ICQodG9wZGlyKS8uLi9qYXkv c2tlbGV0b24uY3MgKQorIAorIEJVSUxUX1NPVVJDRVMgPSAkKEVYUFJfUEFSU0VSKS5jcworIAor ZGlmZiAtLWdpdCBhL21jcy9jbGFzcy9Nb25vLkNTaGFycC9NYWtlZmlsZSBiL21jcy9jbGFzcy9N b25vLkNTaGFycC9NYWtlZmlsZQoraW5kZXggN2IxOTg2Yjc4ZTUuLjM2MTU1MzI4NTNkIDEwMDY0 NAorLS0tIGEvbWNzL2NsYXNzL01vbm8uQ1NoYXJwL01ha2VmaWxlCisrKysgYi9tY3MvY2xhc3Mv TW9uby5DU2hhcnAvTWFrZWZpbGUKK0BAIC0yNCw3ICsyNCw3IEBAIExJQl9NQ1NfRkxBR1MgKz0g JChSRUZFUkVOQ0VfU09VUkNFU19GTEFHUykKKyBCVUlMVF9TT1VSQ0VTID0gJChQUk9GSUxFKS1w YXJzZXIuY3MKKyAKKyAkKFBST0ZJTEUpLXBhcnNlci5jczogJCh0b3BkaXIpL21jcy9jcy1wYXJz ZXIuamF5ICQodG9wZGlyKS9qYXkvc2tlbGV0b24uY3MKKy0JJCh0b3BkaXIpL2pheS9qYXkgLWMg PCAkKHRvcGRpcikvamF5L3NrZWxldG9uLmNzICQ8ID4gJChQUk9GSUxFKS1qYXktdG1wLm91dCAm JiBtdiAkKFBST0ZJTEUpLWpheS10bXAub3V0ICRACisrCSQodG9wZGlyKS9qYXkvamF5IC1jIC1v ICQoUFJPRklMRSktamF5LXRtcC5vdXQgJDwgPCAkKHRvcGRpcikvamF5L3NrZWxldG9uLmNzICYm IG12ICQoUFJPRklMRSktamF5LXRtcC5vdXQgJEAKKyAKKyBpbmNsdWRlIC4uLy4uL2J1aWxkL2xp YnJhcnkubWFrZQorIAorZGlmZiAtLWdpdCBhL21jcy9jbGFzcy9Nb25vLlhtbC5FeHQvTWFrZWZp bGUgYi9tY3MvY2xhc3MvTW9uby5YbWwuRXh0L01ha2VmaWxlCitpbmRleCBkYzQ5ZjgxNmZlZS4u MTY0OTgyMTVhMzggMTAwNjQ0CistLS0gYS9tY3MvY2xhc3MvTW9uby5YbWwuRXh0L01ha2VmaWxl CisrKysgYi9tY3MvY2xhc3MvTW9uby5YbWwuRXh0L01ha2VmaWxlCitAQCAtMjksMTMgKzI5LDEz IEBAIE1vbm8uWG1sLlhQYXRoMi9YUXVlcnlQYXJzZXIuamF5OiBNb25vLlhtbC5YUGF0aDIvUGFy c2VyQmFzZS5qYXkgJChTS0VMRVRPTikKKyBNb25vLlhtbC5YUGF0aDIvWFBhdGgyUGFyc2VyLmNz OiBNb25vLlhtbC5YUGF0aDIvWFBhdGgyUGFyc2VyLmpheQorIAllY2hvICIjZGVmaW5lIFhQQVRI Ml9QQVJTRVIiID4gJEAKKyAJZWNobyAiI2lmIE5FVF8yXzAiID4+ICRACistCSQodG9wZGlyKS9q YXkvamF5IC1jdCA8ICQoU0tFTEVUT04pICQoQ1VSRElSKS8kPCA+PiRACisrCSQodG9wZGlyKS9q YXkvamF5IC1jdCAkKENVUkRJUikvJDwgPCAkKFNLRUxFVE9OKSA+PiRACisgCWVjaG8gIiNlbmRp ZiIgPj4gJEAKKyAKKyBNb25vLlhtbC5YUGF0aDIvWFF1ZXJ5UGFyc2VyLmNzOiBNb25vLlhtbC5Y UGF0aDIvWFF1ZXJ5UGFyc2VyLmpheSAkKFNLRUxFVE9OKQorIAllY2hvICIjZGVmaW5lIFhRVUVS WV9QQVJTRVIiID4gJEAKKyAJZWNobyAiI2lmIE5FVF8yXzAiID4+ICRACistCSQodG9wZGlyKS9q YXkvamF5IC1jdCA8ICQoU0tFTEVUT04pICQoQ1VSRElSKS8kPCA+PiRACisrCSQodG9wZGlyKS9q YXkvamF5IC1jdCAkKENVUkRJUikvJDwgPCAkKFNLRUxFVE9OKSA+PiRACisgCWVjaG8gIiNlbmRp ZiIgPj4gJEAKKyAKKyBNb25vLlhtbC5YUGF0aDIvWFBhdGgyVG9rZW5pemVyLmNzOiBNb25vLlht bC5YUGF0aDIvVG9rZW5pemVyQmFzZS5jcworZGlmZiAtLWdpdCBhL21jcy9jbGFzcy9jb3JsaWIv U3lzdGVtL1J1bnRpbWVBcmd1bWVudEhhbmRsZS5jcyBiL21jcy9jbGFzcy9jb3JsaWIvU3lzdGVt L1J1bnRpbWVBcmd1bWVudEhhbmRsZS5jcworaW5kZXggMjE2YzRlYTM5MjQuLmMxMGQzZjE3NGQx IDEwMDY0NAorLS0tIGEvbWNzL2NsYXNzL2NvcmxpYi9TeXN0ZW0vUnVudGltZUFyZ3VtZW50SGFu ZGxlLmNzCisrKysgYi9tY3MvY2xhc3MvY29ybGliL1N5c3RlbS9SdW50aW1lQXJndW1lbnRIYW5k bGUuY3MKK0BAIC0zMSwxMyArMzEsOSBAQAorIC8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorIC8vCisgCistdXNpbmcgU3lz dGVtOworLXVzaW5nIFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlczsKKy0KKyBuYW1lc3Bh Y2UgU3lzdGVtCisgeworLQlbQ29tVmlzaWJsZSAodHJ1ZSldCistCXB1YmxpYyBzdHJ1Y3QgUnVu dGltZUFyZ3VtZW50SGFuZGxlCisrCXB1YmxpYyByZWYgc3RydWN0IFJ1bnRpbWVBcmd1bWVudEhh bmRsZQorIAl7CisgI3ByYWdtYSB3YXJuaW5nIGRpc2FibGUgNjQ5CisgCQlpbnRlcm5hbCBJbnRQ dHIgYXJnczsKK2RpZmYgLS1naXQgYS9tY3MvY2xhc3MvcmVmZXJlbmNlc291cmNlL21zY29ybGli L3N5c3RlbS90eXBlZHJlZmVyZW5jZS5jcyBiL21jcy9jbGFzcy9yZWZlcmVuY2Vzb3VyY2UvbXNj b3JsaWIvc3lzdGVtL3R5cGVkcmVmZXJlbmNlLmNzCitpbmRleCA4MGJlZjVhYjg1Mi4uYTMwNTQx ZjQzOTkgMTAwNjQ0CistLS0gYS9tY3MvY2xhc3MvcmVmZXJlbmNlc291cmNlL21zY29ybGliL3N5 c3RlbS90eXBlZHJlZmVyZW5jZS5jcworKysrIGIvbWNzL2NsYXNzL3JlZmVyZW5jZXNvdXJjZS9t c2NvcmxpYi9zeXN0ZW0vdHlwZWRyZWZlcmVuY2UuY3MKK0BAIC0xOSw3ICsxOSwxMSBAQCBuYW1l c3BhY2UgU3lzdGVtIHsKKyAgICAgW0NMU0NvbXBsaWFudChmYWxzZSldIAorICAgICBbU3lzdGVt LlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzLkNvbVZpc2libGUodHJ1ZSldCisgICAgIFtTeXN0ZW0u UnVudGltZS5WZXJzaW9uaW5nLk5vblZlcnNpb25hYmxlXSAvLyBUaGlzIG9ubHkgYXBwbGllcyB0 byBmaWVsZCBsYXlvdXQKKy0gICAgcHVibGljIHN0cnVjdCBUeXBlZFJlZmVyZW5jZQorKyAgICBw dWJsaWMKKysjaWYgTU9OTworKyAgICByZWYKKysjZW5kaWYKKysgICAgc3RydWN0IFR5cGVkUmVm ZXJlbmNlCisgICAgIHsKKyAjaWYgTU9OTworICNwcmFnbWEgd2FybmluZyBkaXNhYmxlIDE2OQor ZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwMTUxLTQuY3MgYi9tY3MvZXJyb3JzL2NzMDE1MS00 LmNzCitpbmRleCAwZTQ1YjFhOTA0OS4uYzllMDU1ODllNGQgMTAwNjQ0CistLS0gYS9tY3MvZXJy b3JzL2NzMDE1MS00LmNzCisrKysgYi9tY3MvZXJyb3JzL2NzMDE1MS00LmNzCitAQCAtMSw1ICsx LDYgQEAKKyAvLyBDUzAxNTE6IEEgc3dpdGNoIGV4cHJlc3Npb24gb2YgdHlwZSBgUzE/JyBjYW5u b3QgYmUgY29udmVydGVkIHRvIGFuIGludGVncmFsIHR5cGUsIGJvb2wsIGNoYXIsIHN0cmluZywg ZW51bSBvciBudWxsYWJsZSB0eXBlCistLy8gTGluZTogMjQKKysvLyBMaW5lOiAyNQorKy8vIENv bXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo1CisgCisgdXNpbmcgU3lzdGVtOworIAorZGlm ZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwMjczLTIuY3MgYi9tY3MvZXJyb3JzL2NzMDI3My0yLmNz CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLmIwYmRiZWY5ZTc1Cist LS0gL2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3JzL2NzMDI3My0yLmNzCitAQCAtMCwwICsxLDkg QEAKKysvLyBDUzAyNzM6IFRoZSBhY2Nlc3NpYmlsaXR5IG1vZGlmaWVyIG9mIHRoZSBgQy5TMi5z ZXQnIGFjY2Vzc29yIG11c3QgYmUgbW9yZSByZXN0cmljdGl2ZSB0aGFuIHRoZSBtb2RpZmllciBv ZiB0aGUgcHJvcGVydHkgb3IgaW5kZXhlciBgQy5TMicKKysvLyBMaW5lOiA3CisrLy8gQ29tcGls ZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOjcuMgorKworKyBjbGFzcyBDCisrIHsKKysJcHJpdmF0 ZSBzdHJpbmcgUzIgeyBnZXQ7IHByaXZhdGUgcHJvdGVjdGVkIHNldDsgfQorKyB9CisrCitkaWZm IC0tZ2l0IGEvbWNzL2Vycm9ycy9jczAyODAuY3MgYi9tY3MvZXJyb3JzL2NzMDI4MC5jcworbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi42MmJlOGUzOTU4NQorLS0tIC9k ZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczAyODAuY3MKK0BAIC0wLDAgKzEsMjIgQEAKKysv LyBDUzAyODA6IGBDLkZpeGFibGUuR2V0UGlubmFibGVSZWZlcmVuY2UoaW50KScgaGFzIHRoZSB3 cm9uZyBzaWduYXR1cmUgdG8gYmUgdXNlZCBpbiBleHRlbnNpYmxlIGZpeGVkIHN0YXRlbWVudAor Ky8vIExpbmU6IDExCisrLy8gQ29tcGlsZXIgb3B0aW9uczogLXVuc2FmZSAtbGFuZ3ZlcnNpb246 bGF0ZXN0IC13YXJuYXNlcnJvcgorKworK3VzaW5nIFN5c3RlbTsKKysKKyt1bnNhZmUgY2xhc3Mg QworK3sKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJZml4ZWQgKGludCog cCA9IG5ldyBGaXhhYmxlICgpKSB7CisrCQl9CisrCX0KKysKKysJc3RydWN0IEZpeGFibGUKKysJ eworKwkJcHVibGljIHJlZiBpbnQgR2V0UGlubmFibGVSZWZlcmVuY2UgKGludCBpID0gMSkKKysJ CXsKKysJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7CisrCQl9CisrCX0K Kyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3Jz L2NzMDgyNi05LmNzIGIvbWNzL2Vycm9ycy9jczA4MjYtOS5jcworZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCA0ZTA5ODk2OWI4Yy4uMDAwMDAwMDAwMDAKKy0tLSBhL21jcy9lcnJvcnMv Y3MwODI2LTkuY3MKKysrKyAvZGV2L251bGwKK0BAIC0xLDE2ICswLDAgQEAKKy0vLyBDUzA4MjY6 IFRoZSB0eXBlIG9mIGFuIGltcGxpY2l0bHkgdHlwZWQgYXJyYXkgY2Fubm90IGJlIGluZmVycmVk IGZyb20gdGhlIGluaXRpYWxpemVyLiBUcnkgc3BlY2lmeWluZyBhcnJheSB0eXBlIGV4cGxpY2l0 bHkKKy0vLyBMaW5lOiA4CistCistY2xhc3MgQworLXsKKy0Jc3RhdGljIHZvaWQgTWFpbigpCist CXsKKy0JCW9iamVjdCBvID0gMTsKKy0JCWR5bmFtaWMgZCA9IDE7CistCQkKKy0JCXZhciBhID0g bmV3W10geworLQkJCW5ldyB7IFggPSBvIH0sCistCQkJbmV3IHsgWCA9IGQgfQorLQkJfTsKKy0J fQorLX0KK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTAxMy0xLmNzIGIvbWNzL2Vycm9ycy9j czEwMTMtMS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4wMTgy N2RmNDk5NQorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczEwMTMtMS5jcworQEAg LTAsMCArMSw4IEBACisrLy8gQ1MxMDEzOiBJbnZhbGlkIG51bWJlcgorKy8vIExpbmUgOiA2Cisr CisrY2xhc3MgWAorK3sKKysgICAgc3RhdGljIGludCBpID0gMGI7CisrICAgIHN0YXRpYyB2b2lk IE1haW4gKCkge30KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQg YS9tY3MvZXJyb3JzL2NzMTAxMy0yLmNzIGIvbWNzL2Vycm9ycy9jczEwMTMtMi5jcworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jODY4Y2IyYTc2OQorLS0tIC9kZXYv bnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczEwMTMtMi5jcworQEAgLTAsMCArMSw3IEBACisrLy8g Q1MxMDEzOiBJbnZhbGlkIG51bWJlcgorKy8vIExpbmUgOiA2CisrCisrY2xhc3MgWAorK3sKKysg ICAgc3RhdGljIGludCBpID0gMHgwXzsKKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK K2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTAxMy0zLmNzIGIvbWNzL2Vycm9ycy9jczEwMTMt My5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4zMTQ1YjFiYTU5 NgorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczEwMTMtMy5jcworQEAgLTAsMCAr MSw3IEBACisrLy8gQ1MxMDEzOiBJbnZhbGlkIG51bWJlcgorKy8vIExpbmUgOiA2CisrCisrY2xh c3MgWAorK3sKKysgICAgc3RhdGljIGludCBpID0gMV87CisrfQorXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczEwMTMtNC5jcyBiL21jcy9lcnJv cnMvY3MxMDEzLTQuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4u M2E1ZTc0NGZmNGYKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MxMDEzLTQuY3MK K0BAIC0wLDAgKzEsNyBAQAorKy8vIENTMTAxMzogSW52YWxpZCBudW1iZXIKKysvLyBMaW5lIDog NgorKworK2NsYXNzIFgKKyt7CisrICAgIHN0YXRpYyBkb3VibGUgaSA9IDFfLjI7CisrfQorXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczEwMTMt NS5jcyBiL21jcy9lcnJvcnMvY3MxMDEzLTUuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwMDAwMC4uODA4Mjc0M2MwYjUKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJv cnMvY3MxMDEzLTUuY3MKK0BAIC0wLDAgKzEsNyBAQAorKy8vIENTMTAxMzogSW52YWxpZCBudW1i ZXIKKysvLyBMaW5lIDogNgorKworK2NsYXNzIFgKKyt7CisrICAgIHN0YXRpYyBpbnQgaSA9IDFf ZTE7CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vy cm9ycy9jczEwMTMtNi5jcyBiL21jcy9lcnJvcnMvY3MxMDEzLTYuY3MKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uZDJjZWEyYzcyZGQKKy0tLSAvZGV2L251bGwKKysr KyBiL21jcy9lcnJvcnMvY3MxMDEzLTYuY3MKK0BAIC0wLDAgKzEsNyBAQAorKy8vIENTMTAxMzog SW52YWxpZCBudW1iZXIKKysvLyBMaW5lIDogNgorKworK2NsYXNzIFgKKyt7CisrICAgIHN0YXRp YyBmbG9hdCBpID0gMV9mOworK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAt LWdpdCBhL21jcy9lcnJvcnMvY3MxMDEzLTcuY3MgYi9tY3MvZXJyb3JzL2NzMTAxMy03LmNzCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjgwMzBkNmVkMDk1CistLS0g L2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3JzL2NzMTAxMy03LmNzCitAQCAtMCwwICsxLDcgQEAK KysvLyBDUzEwMTM6IEludmFsaWQgbnVtYmVyCisrLy8gTGluZSA6IDYKKysKKytjbGFzcyBYCisr eworKyAgICBzdGF0aWMgaW50IGkgPSAweF8xOworK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxMDEzLTguY3MgYi9tY3MvZXJyb3JzL2Nz MTAxMy04LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLmQyNmM3 YWNhY2I3CistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3JzL2NzMTAxMy04LmNzCitAQCAt MCwwICsxLDcgQEAKKysvLyBDUzEwMTM6IEludmFsaWQgbnVtYmVyCisrLy8gTGluZSA6IDYKKysK KytjbGFzcyBYCisreworKyAgICBzdGF0aWMgaW50IGkgPSAwYl8xOworK30KK1wgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxMDIxLTQuY3MgYi9t Y3MvZXJyb3JzL2NzMTAyMS00LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MDAwMDAuLjc1YzJmZjcwMzYwCistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvZXJyb3JzL2NzMTAy MS00LmNzCitAQCAtMCwwICsxLDggQEAKKysvLyBDUzEwMjE6IEludGVncmFsIGNvbnN0YW50IGlz IHRvbyBsYXJnZQorKy8vIExpbmU6IDYKKysKKytjbGFzcyBYIHsKKysJcHVibGljIHN0YXRpYyB2 b2lkIE1haW4oKSB7CisrCQlpbnQgaCA9IDBiMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTE7CisrCX0KKyt9CitkaWZmIC0tZ2l0 IGEvbWNzL2Vycm9ycy9jczEwNjEtMTguY3MgYi9tY3MvZXJyb3JzL2NzMTA2MS0xOC5jcworbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi4zYWM4MmI3ZjJkMworLS0tIC9k ZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczEwNjEtMTguY3MKK0BAIC0wLDAgKzEsMTAgQEAK KysvLyBDUzEwNjE6IFR5cGUgYGludCcgZG9lcyBub3QgY29udGFpbiBhIGRlZmluaXRpb24gZm9y IGBfXzAnIGFuZCBubyBleHRlbnNpb24gbWV0aG9kIGBfXzAnIG9mIHR5cGUgYGludCcgY291bGQg YmUgZm91bmQuIEFyZSB5b3UgbWlzc2luZyBhbiBhc3NlbWJseSByZWZlcmVuY2U/CisrLy8gTGlu ZTogOAorKworK3N0YXRpYyBjbGFzcyBDCisreworKwlzdGF0aWMgdm9pZCBNYWluICgpCisrCXsK KysJCWludCBjID0gMC5fXzA7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK K2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTUyNS0yNy5jcyBiL21jcy9lcnJvcnMvY3MxNTI1 LTI3LmNzCitpbmRleCBkYzE4NDkzMTY2Ny4uZDRjMWYzMjZiZTIgMTAwNjQ0CistLS0gYS9tY3Mv ZXJyb3JzL2NzMTUyNS0yNy5jcworKysrIGIvbWNzL2Vycm9ycy9jczE1MjUtMjcuY3MKK0BAIC0x LDQgKzEsNCBAQAorLS8vIENTMTUyNTogVW5leHBlY3RlZCBzeW1ib2wgYGZlJywgZXhwZWN0aW5n IGBjbGFzcycsIGBkZWxlZ2F0ZScsIGBlbnVtJywgYGludGVyZmFjZScsIGBwYXJ0aWFsJywgb3Ig YHN0cnVjdCcKKysvLyBDUzE1MjU6IFVuZXhwZWN0ZWQgc3ltYm9sIGBmZScsIGV4cGVjdGluZyBg Y2xhc3MnLCBgZGVsZWdhdGUnLCBgZW51bScsIGBpbnRlcmZhY2UnLCBgcGFydGlhbCcsIGByZWYn LCBvciBgc3RydWN0JworIC8vIExpbmU6IDYKKyAKKyBuYW1lc3BhY2UgWAorZGlmZiAtLWdpdCBh L21jcy9lcnJvcnMvY3MxNTI1LTQzLmNzIGIvbWNzL2Vycm9ycy9jczE1MjUtNDMuY3MKK2luZGV4 IGQ4M2Q0ZDg0N2ZhLi4yNmY0NjZhMjUyOCAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MxNTI1 LTQzLmNzCisrKysgYi9tY3MvZXJyb3JzL2NzMTUyNS00My5jcworQEAgLTEsNCArMSw0IEBACist Ly8gQ1MxNTI1OiBVbmV4cGVjdGVkIHN5bWJvbCBgKScsIGV4cGVjdGluZyBgKCcsIGBbJywgYG91 dCcsIGBwYXJhbXMnLCBgcmVmJywgYHRoaXMnLCBvciBgdHlwZScKKysvLyBDUzE1MjU6IFVuZXhw ZWN0ZWQgc3ltYm9sIGApJworIC8vIExpbmU6IDYKKyAKKyBjbGFzcyBUZXN0Q2xhc3MKK2RpZmYg LS1naXQgYS9tY3MvZXJyb3JzL2NzMTUyNy0yLmNzIGIvbWNzL2Vycm9ycy9jczE1MjctMi5jcwor aW5kZXggZDM4OTQ1ZjNjODkuLjAyNTZlZTJiMzU0IDEwMDY0NAorLS0tIGEvbWNzL2Vycm9ycy9j czE1MjctMi5jcworKysrIGIvbWNzL2Vycm9ycy9jczE1MjctMi5jcworQEAgLTEsNCArMSw0IEBA CistLy8gQ1MxNTI3OiBOYW1lc3BhY2UgZWxlbWVudHMgY2Fubm90IGJlIGV4cGxpY2l0bHkgZGVj bGFyZWQgYXMgcHJpdmF0ZSwgcHJvdGVjdGVkIG9yIHByb3RlY3RlZCBpbnRlcm5hbAorKy8vIENT MTUyNzogTmFtZXNwYWNlIGVsZW1lbnRzIGNhbm5vdCBiZSBleHBsaWNpdGx5IGRlY2xhcmVkIGFz IHByaXZhdGUsIHByb3RlY3RlZCwgcHJvdGVjdGVkIGludGVybmFsLCBvciBwcml2YXRlIHByb3Rl Y3RlZAorIC8vIExpbmU6IDQKKyAKKyBwcm90ZWN0ZWQgaW50ZXJmYWNlIElGb28geworZGlmZiAt LWdpdCBhL21jcy9lcnJvcnMvY3MxNTI3LTMuY3MgYi9tY3MvZXJyb3JzL2NzMTUyNy0zLmNzCitp bmRleCA3NjNjNzU5NThlZS4uNDY5ZDc0Y2JiOTkgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3JzL2Nz MTUyNy0zLmNzCisrKysgYi9tY3MvZXJyb3JzL2NzMTUyNy0zLmNzCitAQCAtMSw0ICsxLDQgQEAK Ky0vLyBDUzE1Mjc6IE5hbWVzcGFjZSBlbGVtZW50cyBjYW5ub3QgYmUgZXhwbGljaXRseSBkZWNs YXJlZCBhcyBwcml2YXRlLCBwcm90ZWN0ZWQgb3IgcHJvdGVjdGVkIGludGVybmFsCisrLy8gQ1Mx NTI3OiBOYW1lc3BhY2UgZWxlbWVudHMgY2Fubm90IGJlIGV4cGxpY2l0bHkgZGVjbGFyZWQgYXMg cHJpdmF0ZSwgcHJvdGVjdGVkLCBwcm90ZWN0ZWQgaW50ZXJuYWwsIG9yIHByaXZhdGUgcHJvdGVj dGVkCisgLy8gTGluZTogNAorIAorIHByb3RlY3RlZCBpbnRlcm5hbCBlbnVtIEUgeworZGlmZiAt LWdpdCBhL21jcy9lcnJvcnMvY3MxNTI3LmNzIGIvbWNzL2Vycm9ycy9jczE1MjcuY3MKK2luZGV4 IDE4OWNjNDcyZjRjLi5lODQ3ZmQxNGUxMSAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MxNTI3 LmNzCisrKysgYi9tY3MvZXJyb3JzL2NzMTUyNy5jcworQEAgLTEsNCArMSw1IEBACistLy8gQ1Mx NTI3OiBOYW1lc3BhY2UgZWxlbWVudHMgY2Fubm90IGJlIGV4cGxpY2l0bHkgZGVjbGFyZWQgYXMg cHJpdmF0ZSwgcHJvdGVjdGVkIG9yIHByb3RlY3RlZCBpbnRlcm5hbAorLS8vIExpbmU6CisrLy8g Q1MxNTI3OiBOYW1lc3BhY2UgZWxlbWVudHMgY2Fubm90IGJlIGV4cGxpY2l0bHkgZGVjbGFyZWQg YXMgcHJpdmF0ZSwgcHJvdGVjdGVkLCBwcm90ZWN0ZWQgaW50ZXJuYWwsIG9yIHByaXZhdGUgcHJv dGVjdGVkCisrLy8gTGluZTogNAorKworIHByaXZhdGUgY2xhc3MgWCB7CisgfQorZGlmZiAtLWdp dCBhL21jcy9lcnJvcnMvY3MxNjExLTIuY3MgYi9tY3MvZXJyb3JzL2NzMTYxMS0yLmNzCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjg4MjIzMTM3OGYwCistLS0gL2Rl di9udWxsCisrKysgYi9tY3MvZXJyb3JzL2NzMTYxMS0yLmNzCitAQCAtMCwwICsxLDggQEAKKysv LyBDUzE2MTE6IFRoZSBwYXJhbXMgcGFyYW1ldGVyIGNhbm5vdCBiZSBkZWNsYXJlZCBhcyByZWYs IG91dCBvciBpbgorKy8vIExpbmU6IDYKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNp b246bGF0ZXN0CisrCisrY2xhc3MgVGVzdAorK3sKKysgICAgcHVibGljIHN0YXRpYyB2b2lkIEVy cm9yIChwYXJhbXMgaW4gaW50IGFyZ3MpIHt9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCitkaWZmIC0tZ2l0IGEvbWNzL2Vycm9ycy9jczE2MTEuY3MgYi9tY3MvZXJyb3JzL2NzMTYx MS5jcworaW5kZXggOGRmMTBmYWMwY2UuLjQ2OWUwODNlYzNjIDEwMDY0NAorLS0tIGEvbWNzL2Vy cm9ycy9jczE2MTEuY3MKKysrKyBiL21jcy9lcnJvcnMvY3MxNjExLmNzCitAQCAtMSw0ICsxLDQg QEAKKy0vLyBDUzE2MTE6IFRoZSBwYXJhbXMgcGFyYW1ldGVyIGNhbm5vdCBiZSBkZWNsYXJlZCBh cyByZWYgb3Igb3V0CisrLy8gQ1MxNjExOiBUaGUgcGFyYW1zIHBhcmFtZXRlciBjYW5ub3QgYmUg ZGVjbGFyZWQgYXMgcmVmLCBvdXQgb3IgaW4KKyAvLyBMaW5lOiA2CisgCisgY2xhc3MgVGVzdAor ZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxNjQ0LTYxLmNzIGIvbWNzL2Vycm9ycy9jczE2NDQt NjEuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uZDU4YmE2NGM3 ZWMKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MxNjQ0LTYxLmNzCitAQCAtMCww ICsxLDExIEBACisrLy8gQ1MxNjQ0OiBGZWF0dXJlIGBkaWdpdCBzZXBhcmF0b3JzJyBjYW5ub3Qg YmUgdXNlZCBiZWNhdXNlIGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSBDIyA2LjAgbGFuZ3VhZ2Ugc3Bl Y2lmaWNhdGlvbgorKy8vIExpbmU6IDkKKysvLyBDb21waWxlciBvcHRpb25zOiAtbGFuZ3ZlcnNp b246NgorKworK2NsYXNzIFgKKyt7CisrCWludCBUZXN0ICgpCisrCXsKKysJCXZhciBpID0gMV8w OworKwl9CisrfQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxNjQ0LTYyLmNzIGIvbWNzL2Vy cm9ycy9jczE2NDQtNjIuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAw MC4uNWEyOTgzOTYxMGQKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MxNjQ0LTYy LmNzCitAQCAtMCwwICsxLDEwIEBACisrLy8gQ1MxNjQ0OiBGZWF0dXJlIGBwcml2YXRlIHByb3Rl Y3RlZCcgY2Fubm90IGJlIHVzZWQgYmVjYXVzZSBpdCBpcyBub3QgcGFydCBvZiB0aGUgQyMgNi4w IGxhbmd1YWdlIHNwZWNpZmljYXRpb24KKysvLyBMaW5lOiA3CisrLy8gQ29tcGlsZXIgb3B0aW9u czogLWxhbmd2ZXJzaW9uOjYKKysKKytjbGFzcyBDCisreworKwlwcml2YXRlIHByb3RlY3RlZCBl bnVtIEUKKysJeworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0t Z2l0IGEvbWNzL2Vycm9ycy9jczE2NDQtNjMuY3MgYi9tY3MvZXJyb3JzL2NzMTY0NC02My5jcwor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5jZTYxZDVjZTA0NgorLS0t IC9kZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczE2NDQtNjMuY3MKK0BAIC0wLDAgKzEsMjIg QEAKKysvLyBDUzE2NDQ6IEZlYXR1cmUgYGV4dGVuc2libGUgZml4ZWQgc3RhdGVtZW50JyBjYW5u b3QgYmUgdXNlZCBiZWNhdXNlIGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSBDIyA3LjIgbGFuZ3VhZ2Ug c3BlY2lmaWNhdGlvbiAKKysvLyBMaW5lOiAxMQorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC11bnNh ZmUgLWxhbmd2ZXJzaW9uOjcuMgorKworK3VzaW5nIFN5c3RlbTsKKysKKyt1bnNhZmUgY2xhc3Mg QworK3sKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJeworKwkJZml4ZWQgKGludCog cCA9IG5ldyBGaXhhYmxlICgpKSB7CisrCQl9CisrCX0KKysKKysJc3RydWN0IEZpeGFibGUKKysJ eworKwkJcHVibGljIHJlZiBpbnQgR2V0UGlubmFibGVSZWZlcmVuY2UgKCkKKysJCXsKKysJCQl0 aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7CisrCQl9CisrCX0KKyt9CitcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvZXJyb3JzL2NzMTY0NC02 NC5jcyBiL21jcy9lcnJvcnMvY3MxNjQ0LTY0LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMDAwMDAuLjg4OTE3YTBhNWQ1CistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvZXJy b3JzL2NzMTY0NC02NC5jcworQEAgLTAsMCArMSwxMyBAQAorKy8vIENTMTY0NDogRmVhdHVyZSBg ZXhwcmVzc2lvbiBib2R5IHByb3BlcnR5IGFjY2Vzc29yJyBjYW5ub3QgYmUgdXNlZCBiZWNhdXNl IGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSBDIyA2LjAgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiAKKysv LyBMaW5lOiAxMQorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo2CisrCisrdXNp bmcgU3lzdGVtOworKworK2NsYXNzIEMKKyt7CisrCXB1YmxpYyBpbnQgSW50ZWdlcgorKwl7Cisr CQlnZXQgPT4gMDsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAt LWdpdCBhL21jcy9lcnJvcnMvY3MxNjQ0LTY1LmNzIGIvbWNzL2Vycm9ycy9jczE2NDQtNjUuY3MK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uZGVhNjQ4Yjc4NDYKKy0t LSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3MxNjQ0LTY1LmNzCitAQCAtMCwwICsxLDEz IEBACisrLy8gQ1MxNjQ0OiBGZWF0dXJlIGBleHByZXNzaW9uIGJvZHkgcHJvcGVydHkgYWNjZXNz b3InIGNhbm5vdCBiZSB1c2VkIGJlY2F1c2UgaXQgaXMgbm90IHBhcnQgb2YgdGhlIEMjIDYuMCBs YW5ndWFnZSBzcGVjaWZpY2F0aW9uIAorKy8vIExpbmU6IDExCisrLy8gQ29tcGlsZXIgb3B0aW9u czogLWxhbmd2ZXJzaW9uOjYKKysKKyt1c2luZyBTeXN0ZW07CisrCisrY2xhc3MgQworK3sKKysJ cHVibGljIGludCB0aGlzW2ludCBpXQorKwl7CisrCQlnZXQgPT4gaTsKKysJfQorK30KK1wgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MxNjQ0LTY2 LmNzIGIvbWNzL2Vycm9ycy9jczE2NDQtNjYuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwMDAwMC4uM2YzOTNiNTBkMzAKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJv cnMvY3MxNjQ0LTY2LmNzCitAQCAtMCwwICsxLDE3IEBACisrLy8gQ1MxNjQ0OiBGZWF0dXJlIGBl eHByZXNzaW9uIGJvZHkgZXZlbnQgYWNjZXNzb3InIGNhbm5vdCBiZSB1c2VkIGJlY2F1c2UgaXQg aXMgbm90IHBhcnQgb2YgdGhlIEMjIDYuMCBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uIAorKy8vIExp bmU6IDExCisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOjYKKysKKyt1c2luZyBT eXN0ZW07CisrCisrY2xhc3MgQworK3sKKysJcHVibGljIGV2ZW50IEV2ZW50SGFuZGxlciBFdmVu dAorKwl7CisrCQlhZGQgPT4gSWdub3JlICgpOworKwl9CisrCisrCXN0YXRpYyB2b2lkIElnbm9y ZSAoKQorKwl7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1n aXQgYS9tY3MvZXJyb3JzL2NzMTc2My0yLmNzIGIvbWNzL2Vycm9ycy9jczE3NjMtMi5jcworaW5k ZXggNzJmNTM3MDk0OWEuLjdlNGQwOTFmYzcyIDEwMDY0NAorLS0tIGEvbWNzL2Vycm9ycy9jczE3 NjMtMi5jcworKysrIGIvbWNzL2Vycm9ycy9jczE3NjMtMi5jcworQEAgLTEsNCArMSw0IEBACist Ly8gQ1MxNzYzOiBPcHRpb25hbCBwYXJhbWV0ZXIgYG8nIG9mIHR5cGUgYG9iamVjdCcgY2FuIG9u bHkgYmUgaW5pdGlhbGl6ZWQgd2l0aCBgbnVsbCcKKysvLyBDUzE3NjM6IE9wdGlvbmFsIHBhcmFt ZXRlciBgbycgb2YgdHlwZSBgb2JqZWN0JyBjYW4gb25seSBiZSBpbml0aWFsaXplZCB3aXRoIGRl ZmF1bHQgdmFsdWUKKyAvLyBMaW5lOiA2CisgCisgY2xhc3MgQworZGlmZiAtLWdpdCBhL21jcy9l cnJvcnMvY3MxNzYzLmNzIGIvbWNzL2Vycm9ycy9jczE3NjMuY3MKK2luZGV4IGQxMGE3YmYyYzIw Li4wM2I1ZjI4YTE5ZCAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MxNzYzLmNzCisrKysgYi9t Y3MvZXJyb3JzL2NzMTc2My5jcworQEAgLTEsNCArMSw0IEBACistLy8gQ1MxNzYzOiBPcHRpb25h bCBwYXJhbWV0ZXIgYG8nIG9mIHR5cGUgYG9iamVjdCcgY2FuIG9ubHkgYmUgaW5pdGlhbGl6ZWQg d2l0aCBgbnVsbCcKKysvLyBDUzE3NjM6IE9wdGlvbmFsIHBhcmFtZXRlciBgbycgb2YgdHlwZSBg b2JqZWN0JyBjYW4gb25seSBiZSBpbml0aWFsaXplZCB3aXRoIGRlZmF1bHQgdmFsdWUKKyAvLyBM aW5lOiA2CisgCisgY2xhc3MgQworZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3M4MzI2LmNzIGIv bWNzL2Vycm9ycy9jczgzMjYuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw MDAwMC4uZWZkM2E4NGZlYTcKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy9lcnJvcnMvY3M4MzI2 LmNzCitAQCAtMCwwICsxLDEzIEBACisrLy8gQ1M4MzI2OiBCb3RoIHJlZiBjb25kaXRpb25hbCBv cGVyYXRvcnMgbXVzdCBiZSByZWYgdmFsdWVzCisrLy8gTGluZTogMTEKKysKKytjbGFzcyBQcm9n cmFtCisreworKwlzdGF0aWMgaW50IHgsIHk7CisrCisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWlu ICgpCisrCXsKKysJCWJvb2wgYiA9IGZhbHNlOworKwkJcmVmIGludCB0YXJnZXRCdWNrZXQgPSBy ZWYgYiA/IHggOiB5OworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZm IC0tZ2l0IGEvbWNzL2Vycm9ycy9jczgzMjcuY3MgYi9tY3MvZXJyb3JzL2NzODMyNy5jcworbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi44ZDBjY2Q4NmE3MAorLS0tIC9k ZXYvbnVsbAorKysrIGIvbWNzL2Vycm9ycy9jczgzMjcuY3MKK0BAIC0wLDAgKzEsMTQgQEAKKysv LyBDUzgzMjc6IFRoZSByZWYgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiB0eXBlcyBgaW50JyBhbmQg YGJ5dGUnIGhhdmUgdG8gbWF0Y2gKKysvLyBMaW5lOiAxMgorKworK2NsYXNzIFByb2dyYW0KKyt7 CisrCXN0YXRpYyBpbnQgeDsKKysJc3RhdGljIGJ5dGUgeTsKKysKKysJcHVibGljIHN0YXRpYyB2 b2lkIE1haW4gKCkKKysJeworKwkJYm9vbCBiID0gZmFsc2U7CisrCQlyZWYgaW50IHRhcmdldEJ1 Y2tldCA9IHJlZiBiID8gcmVmIHggOiByZWYgeTsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwNDI4LTIuY3MgYi9tY3MvZXJy b3JzL2NzODM4NS0yLmNzCitzaW1pbGFyaXR5IGluZGV4IDUwJQorcmVuYW1lIGZyb20gbWNzL2Vy cm9ycy9jczA0MjgtMi5jcworcmVuYW1lIHRvIG1jcy9lcnJvcnMvY3M4Mzg1LTIuY3MKK2luZGV4 IDVmNDY4ZmQ1MTlhLi5jYzc4NjBmYWE2MiAxMDA2NDQKKy0tLSBhL21jcy9lcnJvcnMvY3MwNDI4 LTIuY3MKKysrKyBiL21jcy9lcnJvcnMvY3M4Mzg1LTIuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8v IENTMDQyODogQ2Fubm90IGNvbnZlcnQgbWV0aG9kIGdyb3VwIGBNYWluJyB0byBub24tZGVsZWdh dGUgdHlwZSBgdm9pZConLiBDb25zaWRlciB1c2luZyBwYXJlbnRoZXNlcyB0byBpbnZva2UgdGhl IG1ldGhvZAorKy8vIENTODM4NTogVGhlIGdpdmVuIGV4cHJlc3Npb24gY2Fubm90IGJlIHVzZWQg aW4gYSBmaXhlZCBzdGF0ZW1lbnQKKyAvLyBMaW5lOiA5CisgLy8gQ29tcGlsZXIgb3B0aW9uczog LXVuc2FmZQorIAorZGlmZiAtLWdpdCBhL21jcy9lcnJvcnMvY3MwMjEzLTIuY3MgYi9tY3MvZXJy b3JzL2NzODM4NS5jcworc2ltaWxhcml0eSBpbmRleCA1NCUKK3JlbmFtZSBmcm9tIG1jcy9lcnJv cnMvY3MwMjEzLTIuY3MKK3JlbmFtZSB0byBtY3MvZXJyb3JzL2NzODM4NS5jcworaW5kZXggYWU3 MmU0Y2Q5YWEuLjVmYTlmNzk0Y2NmIDEwMDY0NAorLS0tIGEvbWNzL2Vycm9ycy9jczAyMTMtMi5j cworKysrIGIvbWNzL2Vycm9ycy9jczgzODUuY3MKK0BAIC0xLDQgKzEsNCBAQAorLS8vIENTMDIx MzogWW91IGNhbm5vdCB1c2UgdGhlIGZpeGVkIHN0YXRlbWVudCB0byB0YWtlIHRoZSBhZGRyZXNz IG9mIGFuIGFscmVhZHkgZml4ZWQgZXhwcmVzc2lvbgorKy8vIENTODM4NTogVGhlIGdpdmVuIGV4 cHJlc3Npb24gY2Fubm90IGJlIHVzZWQgaW4gYSBmaXhlZCBzdGF0ZW1lbnQKKyAvLyBMaW5lOiA5 CisgLy8gQ29tcGlsZXIgb3B0aW9uczogLXVuc2FmZQorIAorZGlmZiAtLWdpdCBhL21jcy9lcnJv cnMva25vd24taXNzdWVzLW5ldF80X3ggYi9tY3MvZXJyb3JzL2tub3duLWlzc3Vlcy1uZXRfNF94 CitpbmRleCBjOWVkOTMxNzM1MC4uNTQ5MDJlMDNlN2IgMTAwNjQ0CistLS0gYS9tY3MvZXJyb3Jz L2tub3duLWlzc3Vlcy1uZXRfNF94CisrKysgYi9tY3MvZXJyb3JzL2tub3duLWlzc3Vlcy1uZXRf NF94CitAQCAtMTQsNiArMTQsOSBAQAorICMgUGFyc2VyIHByb2JsZW1zCisgY3MwMDgwLmNzIAor IAorKyMgVW5kb2N1bWVudGVkIHN3aXRjaCBnb3Zlcm5pbmcgcnVsZXMKKytjczAxNTEtNC5jcyBO TyBFUlJPUgorKworICMgT3BlcmF0b3JzCisgY3MwNDU3LTIuY3MKKyBjczA0NTcuY3MKK2RpZmYg LS1naXQgYS9tY3MvaWxhc20vTWFrZWZpbGUgYi9tY3MvaWxhc20vTWFrZWZpbGUKK2luZGV4IDA5 MGQxY2MzMjMxLi40Y2ExMTU0NTc4MSAxMDA2NDQKKy0tLSBhL21jcy9pbGFzbS9NYWtlZmlsZQor KysrIGIvbWNzL2lsYXNtL01ha2VmaWxlCitAQCAtMTMsNyArMTMsNyBAQCBFWFRSQV9ESVNURklM RVMgPSBcCisgCSQod2lsZGNhcmQgdGVzdHMvKi5pbCkKKyAKKyBJTFBhcnNlci5jczogcGFyc2Vy L0lMUGFyc2VyLmpheSAkKHRvcGRpcikvamF5L3NrZWxldG9uLmNzCistCSQodG9wZGlyKS9qYXkv amF5IC1jdCA8ICQodG9wZGlyKS9qYXkvc2tlbGV0b24uY3MgJChDVVJESVIpLyQ8ID4kQAorKwkk KHRvcGRpcikvamF5L2pheSAtY3QgLW8gJEAgJChDVVJESVIpLyQ8IDwgJCh0b3BkaXIpL2pheS9z a2VsZXRvbi5jcworIAorIGluY2x1ZGUgLi4vYnVpbGQvZXhlY3V0YWJsZS5tYWtlCisgCitkaWZm IC0tZ2l0IGEvbWNzL2pheS9kZWZzLmggYi9tY3MvamF5L2RlZnMuaAoraW5kZXggMmFhZGU0OGRh YzIuLjNiZDNjNTg1OWNlIDEwMDY0NAorLS0tIGEvbWNzL2pheS9kZWZzLmgKKysrKyBiL21jcy9q YXkvZGVmcy5oCitAQCAtMjM2LDEyICsyMzYsMTQgQEAgZXh0ZXJuIGNoYXIgKmlucHV0X2ZpbGVf bmFtZTsKKyBleHRlcm4gY2hhciAqcHJvbG9nX2ZpbGVfbmFtZTsKKyBleHRlcm4gY2hhciAqbG9j YWxfZmlsZV9uYW1lOworIGV4dGVybiBjaGFyICp2ZXJib3NlX2ZpbGVfbmFtZTsKKytleHRlcm4g Y2hhciAqb3V0cHV0X2ZpbGVfbmFtZTsKKyAKKyBleHRlcm4gRklMRSAqYWN0aW9uX2ZpbGU7Cisg ZXh0ZXJuIEZJTEUgKmlucHV0X2ZpbGU7CisgZXh0ZXJuIEZJTEUgKnByb2xvZ19maWxlOworIGV4 dGVybiBGSUxFICpsb2NhbF9maWxlOworIGV4dGVybiBGSUxFICp2ZXJib3NlX2ZpbGU7CisrZXh0 ZXJuIEZJTEUgKm91dHB1dF9maWxlOworIAorIGV4dGVybiBpbnQgbml0ZW1zOworIGV4dGVybiBp bnQgbnJ1bGVzOworZGlmZiAtLWdpdCBhL21jcy9qYXkvbWFpbi5jIGIvbWNzL2pheS9tYWluLmMK K2luZGV4IGZjYWMyMThiMWRmLi43ZmI1ZTZjOGNjYiAxMDA2NDQKKy0tLSBhL21jcy9qYXkvbWFp bi5jCisrKysgYi9tY3MvamF5L21haW4uYworQEAgLTYzLDYgKzYzLDcgQEAgY2hhciAqaW5wdXRf ZmlsZV9uYW1lID0gIiI7CisgY2hhciAqcHJvbG9nX2ZpbGVfbmFtZTsKKyBjaGFyICpsb2NhbF9m aWxlX25hbWU7CisgY2hhciAqdmVyYm9zZV9maWxlX25hbWU7CisrY2hhciAqb3V0cHV0X2ZpbGVf bmFtZSA9IDA7CisgCisgRklMRSAqYWN0aW9uX2ZpbGU7CS8qICBhIHRlbXAgZmlsZSwgdXNlZCB0 byBzYXZlIGFjdGlvbnMgYXNzb2NpYXRlZCAgICAqLworIAkJCS8qICB3aXRoIHJ1bGVzIHVudGls IHRoZSBwYXJzZXIgaXMgd3JpdHRlbgkgICAgKi8KK0BAIC03MCw2ICs3MSw3IEBAIEZJTEUgKmlu cHV0X2ZpbGU7CS8qICB0aGUgaW5wdXQgZmlsZQkJCQkgICAgKi8KKyBGSUxFICpwcm9sb2dfZmls ZTsJLyogIHRlbXAgZmlsZXMsIHVzZWQgdG8gc2F2ZSB0ZXh0IHVudGlsIGFsbAkgICAgKi8KKyBG SUxFICpsb2NhbF9maWxlOwkvKiAgc3ltYm9scyBoYXZlIGJlZW4gZGVmaW5lZAkJCSAgICAqLwor IEZJTEUgKnZlcmJvc2VfZmlsZTsJLyogIHkub3V0cHV0CQkJCQkgICAgKi8KKytGSUxFICpvdXRw dXRfZmlsZTsgLyogZGVmYXVsdHMgdG8gc3Rkb3V0ICovCisgCisgaW50IG5pdGVtczsKKyBpbnQg bnJ1bGVzOworQEAgLTEwNiw2ICsxMDgsNyBAQCBpbnQgazsKKyAgICAgaWYgKGFjdGlvbl9maWxl KSB7IGZjbG9zZShhY3Rpb25fZmlsZSk7IHVubGluayhhY3Rpb25fZmlsZV9uYW1lKTsgfQorICAg ICBpZiAocHJvbG9nX2ZpbGUpIHsgZmNsb3NlKHByb2xvZ19maWxlKTsgdW5saW5rKHByb2xvZ19m aWxlX25hbWUpOyB9CisgICAgIGlmIChsb2NhbF9maWxlKSB7IGZjbG9zZShsb2NhbF9maWxlKTsg dW5saW5rKGxvY2FsX2ZpbGVfbmFtZSk7IH0KKysgICAgaWYgKG91dHB1dF9maWxlICYmIChvdXRw dXRfZmlsZSAhPSBzdGRvdXQpKSB7IGZjbG9zZShvdXRwdXRfZmlsZSk7IGlmIChrICE9IDApIHVu bGluayhvdXRwdXRfZmlsZV9uYW1lKTsgfQorICAgICBleGl0KGspOworIH0KKyAKK0BAIC0xMzcs NyArMTQwLDcgQEAgc2V0X3NpZ25hbHMoKQorIAorIHVzYWdlKCkKKyB7CistICAgIGZwcmludGYo c3RkZXJyLCAidXNhZ2U6ICVzIFstdHZjcF0gWy1iIGZpbGVfcHJlZml4XSBmaWxlbmFtZVxuIiwg bXluYW1lKTsKKysgICAgZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgWy10dmNwXSBbLWIgZmls ZV9wcmVmaXhdIFstbyBvdXRwdXRfZmlsZW5hbWVdIGlucHV0X2ZpbGVuYW1lXG4iLCBteW5hbWUp OworICAgICBleGl0KDEpOworIH0KKyAKK0BAIC0xNjcsOSArMTcwLDkgQEAgY2hhciAqYXJndltd OworIAkgICAgaWYgKGkgKyAxIDwgYXJnYykgdXNhZ2UoKTsKKyAJICAgIHJldHVybjsKKyAKKy0g ICAgICAgIGNhc2UgJy0nOgorLSAgICAgICAgICAgICsraTsKKy0gICAgICAgICAgICBnb3RvIG5v X21vcmVfb3B0aW9uczsKKysgICAgY2FzZSAnLSc6CisrICAgICAgICArK2k7CisrICAgICAgICBn b3RvIG5vX21vcmVfb3B0aW9uczsKKyAKKyAJY2FzZSAnYic6CisgCSAgICBpZiAoKisrcykKK0BA IC0xODAsMTMgKzE4MywyMiBAQCBjaGFyICphcmd2W107CisgCQl1c2FnZSgpOworIAkgICAgY29u dGludWU7CisgCistICAgICAgICBjYXNlICd0JzoKKy0gICAgICAgICAgICB0ZmxhZyA9IDE7Cist ICAgICAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgJ28nOgorKyAgICAgICAgaWYgKCorK3MpCisr ICAgICAgICAgICAgb3V0cHV0X2ZpbGVfbmFtZSA9IHM7CisrICAgICAgICBlbHNlIGlmICgrK2kg PCBhcmdjKQorKyAgICAgICAgICAgIG91dHB1dF9maWxlX25hbWUgPSBhcmd2W2ldOworKyAgICAg ICAgZWxzZQorKyAgICAgICAgICAgIHVzYWdlKCk7CisrICAgICAgICBjb250aW51ZTsKKysKKysg ICAgY2FzZSAndCc6CisrICAgICAgICB0ZmxhZyA9IDE7CisrICAgICAgICBicmVhazsKKyAKKyAJ Y2FzZSAncCc6CistICAgICAgICAgICAgcHJpbnRfc2tlbF9kaXIgKCk7CistICAgICAgICAgICAg YnJlYWs7CisrICAgICAgICBwcmludF9za2VsX2RpciAoKTsKKysgICAgICAgIGJyZWFrOworIAor IAljYXNlICdjJzoKKyAJICAgIGNzaGFycCA9IDE7CitAQCAtMjE3LDEyICsyMjksMTIgQEAgY2hh ciAqYXJndltdOworIAkJdmZsYWcgPSAxOworIAkJYnJlYWs7CisgCistICAgICAgICAgICAgY2Fz ZSAncCc6CistICAgICAgICAgICAgICAgIHByaW50X3NrZWxfZGlyICgpOworLSAgICAgICAgICAg ICAgICBicmVhazsKKysgICAgICAgIGNhc2UgJ3AnOgorKyAgICAgICAgICAgIHByaW50X3NrZWxf ZGlyICgpOworKyAgICAgICAgICAgIGJyZWFrOworIAorLSAgICAgICAgICAgIGNhc2UgJ2MnOgor LQkJY3NoYXJwID0gMTsKKysgICAgICAgIGNhc2UgJ2MnOgorKwkJICAgIGNzaGFycCA9IDE7Cisg CSAgICAgICAgbGluZV9mb3JtYXQgPSAiI2xpbmUgJWQgXCIlc1wiXG4iOworICAgICAgICAgCWRl ZmF1bHRfbGluZV9mb3JtYXQgPSAiI2xpbmUgZGVmYXVsdFxuIjsKKyAKK0BAIC0zNTUsNiArMzY3 LDE3IEBAIG9wZW5fZmlsZXMoKQorIAlpZiAodmVyYm9zZV9maWxlID09IDApCisgCSAgICBvcGVu X2Vycm9yKHZlcmJvc2VfZmlsZV9uYW1lKTsKKyAgICAgfQorKworKyAgICBpZiAob3V0cHV0X2Zp bGUgPT0gMCkKKysgICAgeworKyAgICAgICAgaWYgKG91dHB1dF9maWxlX25hbWUgIT0gMCkgewor KyAgICAgICAgICAgIG91dHB1dF9maWxlID0gZm9wZW4ob3V0cHV0X2ZpbGVfbmFtZSwgInciKTsK KysgICAgICAgICAgICBpZiAob3V0cHV0X2ZpbGUgPT0gMCkKKysgICAgICAgICAgICAgICAgb3Bl bl9lcnJvcihvdXRwdXRfZmlsZV9uYW1lKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAg ICAgb3V0cHV0X2ZpbGUgPSBzdGRvdXQ7CisrICAgICAgICB9CisrICAgIH0KKyB9CisgCisgCitk aWZmIC0tZ2l0IGEvbWNzL2pheS9vdXRwdXQuYyBiL21jcy9qYXkvb3V0cHV0LmMKK2luZGV4IGQx ZTJjMTRhMWIyLi5hYjliMjA0M2JlOSAxMDA2NDQKKy0tLSBhL21jcy9qYXkvb3V0cHV0LmMKKysr KyBiL21jcy9qYXkvb3V0cHV0LmMKK0BAIC03Myw3ICs3Myw3IEBAIG91dHB1dCAoKSB7CisgICAg ICAgZnByaW50ZihzdGRlcnIsICJqYXk6IGxpbmUgJWQgaXMgdG9vIGxvbmdcbiIsIGxubyksIGRv bmUoMSk7CisgICAgIHN3aXRjaCAoYnVmWzBdKSB7CisgICAgIGNhc2UgJyMnOgljb250aW51ZTsK Ky0gICAgY2FzZSAndCc6CWlmICghdGZsYWcpIGZwdXRzKCIvL3QiLCBzdGRvdXQpOworKyAgICBj YXNlICd0JzoJaWYgKCF0ZmxhZykgZnB1dHMoIi8vdCIsIG91dHB1dF9maWxlKTsKKyAgICAgY2Fz ZSAnLic6CWJyZWFrOworICAgICBkZWZhdWx0OgorICAgICAgIGNwID0gc3RydG9rKGJ1ZiwgIiBc dFxyXG4iKTsKK0BAIC05Myw3ICs5Myw3IEBAIG91dHB1dCAoKSB7CisgICAgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiamF5OiB1bmtub3duIGNhbGwgKCVzKSBpbiBsaW5lICVkXG4iLCBjcCwgbG5v KTsKKyAgICAgICBjb250aW51ZTsKKyAgICAgfQorLSAgICBmcHV0cyhidWYrMSwgc3Rkb3V0KSwg Kysgb3V0bGluZTsKKysgICAgZnB1dHMoYnVmKzEsIG91dHB1dF9maWxlKSwgKysgb3V0bGluZTsK KyAgIH0KKyAgIGZyZWVfcGFyc2VyKCk7CisgfQorQEAgLTEwMywxOSArMTAzLDE5IEBAIG91dHB1 dF9ydWxlX2RhdGEoKQorICAgICByZWdpc3RlciBpbnQgaTsKKyAgICAgcmVnaXN0ZXIgaW50IGo7 CisgCistCXByaW50ZigiLypcbiBBbGwgbW9yZSB0aGFuIDMgbGluZXMgbG9uZyBydWxlcyBhcmUg d3JhcHBlZCBpbnRvIGEgbWV0aG9kXG4qL1xuIik7CisrCWZwcmludGYob3V0cHV0X2ZpbGUsICIv KlxuIEFsbCBtb3JlIHRoYW4gMyBsaW5lcyBsb25nIHJ1bGVzIGFyZSB3cmFwcGVkIGludG8gYSBt ZXRob2RcbiovXG4iKTsKKyAKKyAgICAgZm9yIChpID0gMDsgaSA8IG5tZXRob2RzOyArK2kpCisg CXsKKy0JCXByaW50ZigiJXMiLCBtZXRob2RzW2ldKTsKKysJCWZwcmludGYob3V0cHV0X2ZpbGUs ICIlcyIsIG1ldGhvZHNbaV0pOworIAkJRlJFRShtZXRob2RzW2ldKTsKKy0JCXByaW50ZigiXG5c biIpOworKwkJZnByaW50ZihvdXRwdXRfZmlsZSwgIlxuXG4iKTsKKyAJfQorIAlGUkVFKG1ldGhv ZHMpOworIAorLQlwcmludGYoZGVmYXVsdF9saW5lX2Zvcm1hdCwgKytvdXRsaW5lICsgMSk7Cisr CWZwcmludGYob3V0cHV0X2ZpbGUsIGRlZmF1bHRfbGluZV9mb3JtYXQsICsrb3V0bGluZSArIDEp OworIAorLSAgICBwcmludGYoIiAgJXMgc3RhdGljICVzIHNob3J0IFtdIHl5TGhzICA9IHslMTZk LCIsCisrICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICIgICVzIHN0YXRpYyAlcyBzaG9ydCBbXSB5 eUxocyAgPSB7JTE2ZCwiLAorIAkgICBjc2hhcnAgPyAiIiA6ICIgcHJvdGVjdGVkIiwKKyAJICAg Y3NoYXJwID8gInJlYWRvbmx5IiA6ICJmaW5hbCIsCisgCSAgICBzeW1ib2xfdmFsdWVbc3RhcnRf c3ltYm9sXSk7CitAQCAtMTI2LDE4ICsxMjYsMTggQEAgb3V0cHV0X3J1bGVfZGF0YSgpCisgCWlm IChqID49IDEwKQorIAl7CisgCSAgICArK291dGxpbmU7CistCSAgICBwdXRjaGFyKCdcbicpOwor KwkgICAgcHV0YygnXG4nLCBvdXRwdXRfZmlsZSk7CisgCSAgICBqID0gMTsKKyAJfQorICAgICAg ICAgZWxzZQorIAkgICAgKytqOworIAorLSAgICAgICAgcHJpbnRmKCIlNWQsIiwgc3ltYm9sX3Zh bHVlW3JsaHNbaV1dKTsKKysgICAgICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICIlNWQsIiwgc3lt Ym9sX3ZhbHVlW3JsaHNbaV1dKTsKKyAgICAgfQorICAgICBvdXRsaW5lICs9IDI7CistICAgIHBy aW50ZigiXG4gIH07XG4iKTsKKysgICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxuICB9O1xuIik7 CisgCistICAgIHByaW50ZigiICAlcyBzdGF0aWMgJXMgc2hvcnQgW10geXlMZW4gPSB7JTEyZCwi LAorKyAgICBmcHJpbnRmKG91dHB1dF9maWxlLCAiICAlcyBzdGF0aWMgJXMgc2hvcnQgW10geXlM ZW4gPSB7JTEyZCwiLAorIAkgICBjc2hhcnAgPyAiIiA6ICJwcm90ZWN0ZWQiLAorIAkgICBjc2hh cnAgPyAicmVhZG9ubHkiIDogImZpbmFsIiwKKyAJICAgMik7CitAQCAtMTQ4LDE2ICsxNDgsMTYg QEAgb3V0cHV0X3J1bGVfZGF0YSgpCisgCWlmIChqID49IDEwKQorIAl7CisgCSAgICArK291dGxp bmU7CistCSAgICBwdXRjaGFyKCdcbicpOworKwkgICAgcHV0YygnXG4nLCBvdXRwdXRfZmlsZSk7 CisgCSAgICBqID0gMTsKKyAJfQorIAllbHNlCisgCSAgaisrOworIAorLSAgICAgICAgcHJpbnRm KCIlNWQsIiwgcnJoc1tpICsgMV0gLSBycmhzW2ldIC0gMSk7CisrICAgICAgICBmcHJpbnRmKG91 dHB1dF9maWxlLCAiJTVkLCIsIHJyaHNbaSArIDFdIC0gcnJoc1tpXSAtIDEpOworICAgICB9Cisg ICAgIG91dGxpbmUgKz0gMjsKKy0gICAgcHJpbnRmKCJcbiAgfTtcbiIpOworKyAgICBmcHJpbnRm KG91dHB1dF9maWxlLCAiXG4gIH07XG4iKTsKKyB9CisgCisgCitAQCAtMTY1LDcgKzE2NSw3IEBA IG91dHB1dF95eWRlZnJlZCgpCisgeworICAgICByZWdpc3RlciBpbnQgaSwgajsKKyAKKy0gICAg cHJpbnRmKCIgICVzIHN0YXRpYyAlcyBzaG9ydCBbXSB5eURlZlJlZCA9IHslMTNkLCIsCisrICAg IGZwcmludGYob3V0cHV0X2ZpbGUsICIgICVzIHN0YXRpYyAlcyBzaG9ydCBbXSB5eURlZlJlZCA9 IHslMTNkLCIsCisgCSAgIGNzaGFycCA/ICIiIDogInByb3RlY3RlZCIsCisgCSAgIGNzaGFycCA/ ICJyZWFkb25seSIgOiAiZmluYWwiLAkgICAKKyAJICAgIChkZWZyZWRbMF0gPyBkZWZyZWRbMF0g LSAyIDogMCkpOworQEAgLTE3OCwxNSArMTc4LDE1IEBAIG91dHB1dF95eWRlZnJlZCgpCisgCWVs c2UKKyAJeworIAkgICAgKytvdXRsaW5lOworLQkgICAgcHV0Y2hhcignXG4nKTsKKysJICAgIHB1 dGMoJ1xuJywgb3V0cHV0X2ZpbGUpOworIAkgICAgaiA9IDE7CisgCX0KKyAKKy0JcHJpbnRmKCIl NWQsIiwgKGRlZnJlZFtpXSA/IGRlZnJlZFtpXSAtIDIgOiAwKSk7CisrCWZwcmludGYob3V0cHV0 X2ZpbGUsICIlNWQsIiwgKGRlZnJlZFtpXSA/IGRlZnJlZFtpXSAtIDIgOiAwKSk7CisgICAgIH0K KyAKKyAgICAgb3V0bGluZSArPSAyOworLSAgICBwcmludGYoIlxuICB9O1xuIik7CisrICAgIGZw cmludGYob3V0cHV0X2ZpbGUsICJcbiAgfTtcbiIpOworIH0KKyAKKyAKK0BAIC0zMDksNyArMzA5 LDcgQEAgZ290b19hY3Rpb25zKCkKKyAgICAgc3RhdGVfY291bnQgPSBORVcyKG5zdGF0ZXMsIHNo b3J0KTsKKyAKKyAgICAgayA9IGRlZmF1bHRfZ290byhzdGFydF9zeW1ib2wgKyAxKTsKKy0gICAg cHJpbnRmKCIgIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlEZ290byAgPSB7JTE0ZCwi LCBjc2hhcnAgPyAicmVhZG9ubHkiIDogImZpbmFsIiwgayk7CisrICAgIGZwcmludGYob3V0cHV0 X2ZpbGUsICIgIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlEZ290byAgPSB7JTE0ZCwi LCBjc2hhcnAgPyAicmVhZG9ubHkiIDogImZpbmFsIiwgayk7CisgICAgIHNhdmVfY29sdW1uKHN0 YXJ0X3N5bWJvbCArIDEsIGspOworIAorICAgICBqID0gMTA7CitAQCAtMzE4LDE5ICszMTgsMTkg QEAgZ290b19hY3Rpb25zKCkKKyAJaWYgKGogPj0gMTApCisgCXsKKyAJICAgICsrb3V0bGluZTsK Ky0JICAgIHB1dGNoYXIoJ1xuJyk7CisrCSAgICBwdXRjKCdcbicsIG91dHB1dF9maWxlKTsKKyAJ ICAgIGogPSAxOworIAl9CisgCWVsc2UKKyAJICAgICsrajsKKyAKKyAJayA9IGRlZmF1bHRfZ290 byhpKTsKKy0JcHJpbnRmKCIlNWQsIiwgayk7CisrCWZwcmludGYob3V0cHV0X2ZpbGUsICIlNWQs Iiwgayk7CisgCXNhdmVfY29sdW1uKGksIGspOworICAgICB9CisgCisgICAgIG91dGxpbmUgKz0g MjsKKy0gICAgcHJpbnRmKCJcbiAgfTtcbiIpOworKyAgICBmcHJpbnRmKG91dHB1dF9maWxlLCAi XG4gIH07XG4iKTsKKyAgICAgRlJFRShzdGF0ZV9jb3VudCk7CisgfQorIAorQEAgLTYzMyw3ICs2 MzMsNyBAQCBvdXRwdXRfYmFzZSgpCisgeworICAgICByZWdpc3RlciBpbnQgaSwgajsKKyAKKy0g ICAgcHJpbnRmKCIgIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlTaW5kZXggPSB7JTEz ZCwiLCBjc2hhcnA/ICJyZWFkb25seSI6ImZpbmFsIiwgYmFzZVswXSk7CisrICAgIGZwcmludGYo b3V0cHV0X2ZpbGUsICIgIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlTaW5kZXggPSB7 JTEzZCwiLCBjc2hhcnA/ICJyZWFkb25seSI6ImZpbmFsIiwgYmFzZVswXSk7CisgCisgICAgIGog PSAxMDsKKyAgICAgZm9yIChpID0gMTsgaSA8IG5zdGF0ZXM7IGkrKykKK0BAIC02NDEsMTcgKzY0 MSwxNyBAQCBvdXRwdXRfYmFzZSgpCisgCWlmIChqID49IDEwKQorIAl7CisgCSAgICArK291dGxp bmU7CistCSAgICBwdXRjaGFyKCdcbicpOworKwkgICAgcHV0YygnXG4nLCBvdXRwdXRfZmlsZSk7 CisgCSAgICBqID0gMTsKKyAJfQorIAllbHNlCisgCSAgICArK2o7CisgCistCXByaW50ZigiJTVk LCIsIGJhc2VbaV0pOworKwlmcHJpbnRmKG91dHB1dF9maWxlLCAiJTVkLCIsIGJhc2VbaV0pOwor ICAgICB9CisgCisgICAgIG91dGxpbmUgKz0gMjsKKy0gICAgcHJpbnRmKCJcbiAgfTtcbiAgcHJv dGVjdGVkIHN0YXRpYyAlcyBzaG9ydCBbXSB5eVJpbmRleCA9IHslMTNkLCIsCisrICAgIGZwcmlu dGYob3V0cHV0X2ZpbGUsICJcbiAgfTtcbiAgcHJvdGVjdGVkIHN0YXRpYyAlcyBzaG9ydCBbXSB5 eVJpbmRleCA9IHslMTNkLCIsCisgCSAgIGNzaGFycCA/ICJyZWFkb25seSIgOiAiZmluYWwiLAor IAkgICAgYmFzZVtuc3RhdGVzXSk7CisgCitAQCAtNjYxLDE3ICs2NjEsMTcgQEAgb3V0cHV0X2Jh c2UoKQorIAlpZiAoaiA+PSAxMCkKKyAJeworIAkgICAgKytvdXRsaW5lOworLQkgICAgcHV0Y2hh cignXG4nKTsKKysJICAgIHB1dGMoJ1xuJywgb3V0cHV0X2ZpbGUpOworIAkgICAgaiA9IDE7Cisg CX0KKyAJZWxzZQorIAkgICAgKytqOworIAorLQlwcmludGYoIiU1ZCwiLCBiYXNlW2ldKTsKKysJ ZnByaW50ZihvdXRwdXRfZmlsZSwgIiU1ZCwiLCBiYXNlW2ldKTsKKyAgICAgfQorIAorICAgICBv dXRsaW5lICs9IDI7CistICAgIHByaW50ZigiXG4gIH07XG4gIHByb3RlY3RlZCBzdGF0aWMgJXMg c2hvcnQgW10geXlHaW5kZXggPSB7JTEzZCwiLAorKyAgICBmcHJpbnRmKG91dHB1dF9maWxlLCAi XG4gIH07XG4gIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlHaW5kZXggPSB7JTEzZCwi LAorIAkgICBjc2hhcnAgPyAicmVhZG9ubHkiIDogImZpbmFsIiwKKyAJICAgIGJhc2VbMipuc3Rh dGVzXSk7CisgCitAQCAtNjgxLDE3ICs2ODEsMTcgQEAgb3V0cHV0X2Jhc2UoKQorIAlpZiAoaiA+ PSAxMCkKKyAJeworIAkgICAgKytvdXRsaW5lOworLQkgICAgcHV0Y2hhcignXG4nKTsKKysJICAg IHB1dGMoJ1xuJywgb3V0cHV0X2ZpbGUpOworIAkgICAgaiA9IDE7CisgCX0KKyAJZWxzZQorIAkg ICAgKytqOworIAorLQlwcmludGYoIiU1ZCwiLCBiYXNlW2ldKTsKKysJZnByaW50ZihvdXRwdXRf ZmlsZSwgIiU1ZCwiLCBiYXNlW2ldKTsKKyAgICAgfQorIAorICAgICBvdXRsaW5lICs9IDI7Cist ICAgIHByaW50ZigiXG4gIH07XG4iKTsKKysgICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxuICB9 O1xuIik7CisgICAgIEZSRUUoYmFzZSk7CisgfQorIAorQEAgLTcwMiw3ICs3MDIsNyBAQCBvdXRw dXRfdGFibGUoKQorICAgICByZWdpc3RlciBpbnQgaTsKKyAgICAgcmVnaXN0ZXIgaW50IGo7Cisg CistICAgIHByaW50ZigiICBwcm90ZWN0ZWQgc3RhdGljICVzIHNob3J0IFtdIHl5VGFibGUgPSB7 JTE0ZCwiLCBjc2hhcnAgPyAicmVhZG9ubHkiIDogImZpbmFsIiwgdGFibGVbMF0pOworKyAgICBm cHJpbnRmKG91dHB1dF9maWxlLCAiICBwcm90ZWN0ZWQgc3RhdGljICVzIHNob3J0IFtdIHl5VGFi bGUgPSB7JTE0ZCwiLCBjc2hhcnAgPyAicmVhZG9ubHkiIDogImZpbmFsIiwgdGFibGVbMF0pOwor IAorICAgICBqID0gMTA7CisgICAgIGZvciAoaSA9IDE7IGkgPD0gaGlnaDsgaSsrKQorQEAgLTcx MCwxNyArNzEwLDE3IEBAIG91dHB1dF90YWJsZSgpCisgCWlmIChqID49IDEwKQorIAl7CisgCSAg ICArK291dGxpbmU7CistCSAgICBwdXRjaGFyKCdcbicpOworKwkgICAgcHV0YygnXG4nLCBvdXRw dXRfZmlsZSk7CisgCSAgICBqID0gMTsKKyAJfQorIAllbHNlCisgCSAgICArK2o7CisgCistCXBy aW50ZigiJTVkLCIsIHRhYmxlW2ldKTsKKysJZnByaW50ZihvdXRwdXRfZmlsZSwgIiU1ZCwiLCB0 YWJsZVtpXSk7CisgICAgIH0KKyAKKyAgICAgb3V0bGluZSArPSAyOworLSAgICBwcmludGYoIlxu ICB9O1xuIik7CisrICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICJcbiAgfTtcbiIpOworICAgICBG UkVFKHRhYmxlKTsKKyB9CisgCitAQCAtNzMxLDcgKzczMSw3IEBAIG91dHB1dF9jaGVjaygpCisg ICAgIHJlZ2lzdGVyIGludCBpOworICAgICByZWdpc3RlciBpbnQgajsKKyAKKy0gICAgcHJpbnRm KCIgIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlDaGVjayA9IHslMTRkLCIsCisrICAg IGZwcmludGYob3V0cHV0X2ZpbGUsICIgIHByb3RlY3RlZCBzdGF0aWMgJXMgc2hvcnQgW10geXlD aGVjayA9IHslMTRkLCIsCisgCSAgIGNzaGFycCA/ICJyZWFkb25seSIgOiAiZmluYWwiLAorIAkg ICAgY2hlY2tbMF0pOworIAorQEAgLTc0MSwxNyArNzQxLDE3IEBAIG91dHB1dF9jaGVjaygpCisg CWlmIChqID49IDEwKQorIAl7CisgCSAgICArK291dGxpbmU7CistCSAgICBwdXRjaGFyKCdcbicp OworKwkgICAgcHV0YygnXG4nLCBvdXRwdXRfZmlsZSk7CisgCSAgICBqID0gMTsKKyAJfQorIAll bHNlCisgCSAgICArK2o7CisgCistCXByaW50ZigiJTVkLCIsIGNoZWNrW2ldKTsKKysJZnByaW50 ZihvdXRwdXRfZmlsZSwgIiU1ZCwiLCBjaGVja1tpXSk7CisgICAgIH0KKyAKKyAgICAgb3V0bGlu ZSArPSAyOworLSAgICBwcmludGYoIlxuICB9O1xuIik7CisrICAgIGZwcmludGYob3V0cHV0X2Zp bGUsICJcbiAgfTtcbiIpOworICAgICBGUkVFKGNoZWNrKTsKKyB9CisgCitAQCAtODAxLDMwICs4 MDEsMzAgQEAgY2hhciAqcHJlZml4OworIAlpZiAoaXNfQ19pZGVudGlmaWVyKHMpKQorIAl7Cisg CSAgICBpZiAocHJlZml4KQorLQkgICAgICAgIHByaW50ZigiICAlcyAiLCBwcmVmaXgpOworKwkg ICAgICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICIgICVzICIsIHByZWZpeCk7CisgCSAgICBjID0g KnM7CisgCSAgICBpZiAoYyA9PSAnIicpCisgCSAgICB7CisgCQl3aGlsZSAoKGMgPSAqKytzKSAh PSAnIicpCisgCQl7CistCQkgICAgcHV0Y2hhcihjKTsKKysJCSAgICBwdXRjKGMsIG91dHB1dF9m aWxlKTsKKyAJCX0KKyAJICAgIH0KKyAJICAgIGVsc2UKKyAJICAgIHsKKyAJCWRvCisgCQl7Cist CQkgICAgcHV0Y2hhcihjKTsKKysJCSAgICBwdXRjKGMsIG91dHB1dF9maWxlKTsKKyAJCX0KKyAJ CXdoaWxlIChjID0gKisrcyk7CisgCSAgICB9CisgCSAgICArK291dGxpbmU7CistCSAgICBwcmlu dGYoIiA9ICVkJXNcbiIsIHN5bWJvbF92YWx1ZVtpXSwgY3NoYXJwID8gIjsiIDogIjsiKTsKKysJ ICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICIgPSAlZCVzXG4iLCBzeW1ib2xfdmFsdWVbaV0sIGNz aGFycCA/ICI7IiA6ICI7Iik7CisgCX0KKyAgICAgfQorIAorICAgICArK291dGxpbmU7CistICAg IHByaW50ZigiICAlcyB5eUVycm9yQ29kZSA9ICVkJXNcbiIsIHByZWZpeCA/IHByZWZpeCA6ICIi LCBzeW1ib2xfdmFsdWVbMV0sIGNzaGFycCA/ICI7IiA6ICI7Iik7CisrICAgIGZwcmludGYob3V0 cHV0X2ZpbGUsICIgICVzIHl5RXJyb3JDb2RlID0gJWQlc1xuIiwgcHJlZml4ID8gcHJlZml4IDog IiIsIHN5bWJvbF92YWx1ZVsxXSwgY3NoYXJwID8gIjsiIDogIjsiKTsKKyB9CisgCisgCitAQCAt ODQyLDE0ICs4NDIsMTQgQEAgY2hhciAqbmFtZTsKKyAgICAgaWYgKChjID0gZ2V0YyhpbikpICE9 IEVPRikgeworICAgICAgIGlmIChjID09ICAnXG4nKQorIAkrK291dGxpbmU7CistICAgICAgcHV0 Y2hhcihjKTsKKysgICAgICBwdXRjKGMsIG91dHB1dF9maWxlKTsKKyAgICAgICB3aGlsZSAoKGMg PSBnZXRjKGluKSkgIT0gRU9GKQorICAgICAgIHsKKyAJaWYgKGMgPT0gJ1xuJykKKyAJICAgICsr b3V0bGluZTsKKy0gICAgCXB1dGNoYXIoYyk7CisrICAgIAlwdXRjKGMsIG91dHB1dF9maWxlKTsK KyAgICAgICB9CistICAgICAgcHJpbnRmKGRlZmF1bHRfbGluZV9mb3JtYXQsICsrb3V0bGluZSAr IDEpOworKyAgICAgIGZwcmludGYob3V0cHV0X2ZpbGUsIGRlZmF1bHRfbGluZV9mb3JtYXQsICsr b3V0bGluZSArIDEpOworICAgICB9CisgICAgIGZjbG9zZShpbik7CisgfQorQEAgLTg2Miw2NyAr ODYyLDY3IEBAIG91dHB1dF9kZWJ1ZygpCisgICAgIGNoYXIgKiBwcmVmaXggPSB0ZmxhZyA/ICIi IDogIi8vdCI7CisgCisgICAgICsrb3V0bGluZTsKKy0gICAgcHJpbnRmKCIgIHByb3RlY3RlZCAl cyBpbnQgeXlGaW5hbCA9ICVkO1xuIiwgY3NoYXJwID8gImNvbnN0IiA6ICJzdGF0aWMgZmluYWwi LCBmaW5hbF9zdGF0ZSk7CisrICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICIgIHByb3RlY3RlZCAl cyBpbnQgeXlGaW5hbCA9ICVkO1xuIiwgY3NoYXJwID8gImNvbnN0IiA6ICJzdGF0aWMgZmluYWwi LCBmaW5hbF9zdGF0ZSk7CisgCisgICAgICAgKytvdXRsaW5lOworLQkgIHByaW50ZiAoIiVzIC8v IFB1dCB0aGlzIGFycmF5IGludG8gYSBzZXBhcmF0ZSBjbGFzcyBzbyBpdCBpcyBvbmx5IGluaXRp YWxpemVkIGlmIGRlYnVnZ2luZyBpcyBhY3R1YWxseSB1c2VkXG4iLCBwcmVmaXgpOworLQkgIHBy aW50ZiAoIiVzIC8vIFVzZSBNYXJzaGFsQnlSZWZPYmplY3QgdG8gZGlzYWJsZSBpbmxpbmluZ1xu IiwgcHJlZml4KTsKKy0JICBwcmludGYoIiVzIGNsYXNzIFlZUnVsZXMgJXMge1xuIiwgcHJlZml4 LCBjc2hhcnAgPyAiOiBNYXJzaGFsQnlSZWZPYmplY3QiIDogIiIpOworLSAgICAgIHByaW50Zigi JXMgIHB1YmxpYyBzdGF0aWMgJXMgc3RyaW5nIFtdIHl5UnVsZSA9IHtcbiIsIHByZWZpeCwgY3No YXJwID8gInJlYWRvbmx5IiA6ICJmaW5hbCIpOworKwkgIGZwcmludGYob3V0cHV0X2ZpbGUsICIl cyAvLyBQdXQgdGhpcyBhcnJheSBpbnRvIGEgc2VwYXJhdGUgY2xhc3Mgc28gaXQgaXMgb25seSBp bml0aWFsaXplZCBpZiBkZWJ1Z2dpbmcgaXMgYWN0dWFsbHkgdXNlZFxuIiwgcHJlZml4KTsKKysJ ICBmcHJpbnRmKG91dHB1dF9maWxlLCAiJXMgLy8gVXNlIE1hcnNoYWxCeVJlZk9iamVjdCB0byBk aXNhYmxlIGlubGluaW5nXG4iLCBwcmVmaXgpOworKwkgIGZwcmludGYob3V0cHV0X2ZpbGUsICIl cyBjbGFzcyBZWVJ1bGVzICVzIHtcbiIsIHByZWZpeCwgY3NoYXJwID8gIjogTWFyc2hhbEJ5UmVm T2JqZWN0IiA6ICIiKTsKKysgICAgICBmcHJpbnRmKG91dHB1dF9maWxlLCAiJXMgIHB1YmxpYyBz dGF0aWMgJXMgc3RyaW5nIFtdIHl5UnVsZSA9IHtcbiIsIHByZWZpeCwgY3NoYXJwID8gInJlYWRv bmx5IiA6ICJmaW5hbCIpOworICAgICAgIGZvciAoaSA9IDI7IGkgPCBucnVsZXM7ICsraSkKKyAg ICAgICB7CistCSAgcHJpbnRmKCIlcyAgICBcIiVzIDoiLCBwcmVmaXgsIHN5bWJvbF9uYW1lW3Js aHNbaV1dKTsKKysJICBmcHJpbnRmKG91dHB1dF9maWxlLCAiJXMgICAgXCIlcyA6IiwgcHJlZml4 LCBzeW1ib2xfbmFtZVtybGhzW2ldXSk7CisgCSAgZm9yIChqID0gcnJoc1tpXTsgcml0ZW1bal0g PiAwOyArK2opCisgCSAgeworIAkgICAgICBzID0gc3ltYm9sX25hbWVbcml0ZW1bal1dOworIAkg ICAgICBpZiAoc1swXSA9PSAnIicpCisgCSAgICAgIHsKKy0JCSAgcHJpbnRmKCIgXFxcIiIpOwor KwkJICBmcHJpbnRmKG91dHB1dF9maWxlLCAiIFxcXCIiKTsKKyAJCSAgd2hpbGUgKCorK3MgIT0g JyInKQorIAkJICB7CisgCQkgICAgICBpZiAoKnMgPT0gJ1xcJykKKyAJCSAgICAgIHsKKyAJCQkg IGlmIChzWzFdID09ICdcXCcpCistCQkJICAgICAgcHJpbnRmKCJcXFxcXFxcXCIpOworKwkJCSAg ICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICJcXFxcXFxcXCIpOworIAkJCSAgZWxzZQorLQkJCSAg ICAgIHByaW50ZigiXFxcXCVjIiwgc1sxXSk7CisrCQkJICAgICAgZnByaW50ZihvdXRwdXRfZmls ZSwgIlxcXFwlYyIsIHNbMV0pOworIAkJCSAgKytzOworIAkJICAgICAgfQorIAkJICAgICAgZWxz ZQorLQkJCSAgcHV0Y2hhcigqcyk7CisrCQkJICBwdXRjKCpzLCBvdXRwdXRfZmlsZSk7CisgCQkg IH0KKy0JCSAgcHJpbnRmKCJcXFwiIik7CisrCQkgIGZwcmludGYob3V0cHV0X2ZpbGUsICJcXFwi Iik7CisgCSAgICAgIH0KKyAJICAgICAgZWxzZSBpZiAoc1swXSA9PSAnXCcnKQorIAkgICAgICB7 CisgCQkgIGlmIChzWzFdID09ICciJykKKy0JCSAgICAgIHByaW50ZigiICdcXFwiJyIpOworKwkJ ICAgICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIiAnXFxcIiciKTsKKyAJCSAgZWxzZSBpZiAoc1sx XSA9PSAnXFwnKQorIAkJICB7CisgCQkgICAgICBpZiAoc1syXSA9PSAnXFwnKQorLQkJCSAgcHJp bnRmKCIgJ1xcXFxcXFxcIik7CisrCQkJICBmcHJpbnRmKG91dHB1dF9maWxlLCAiICdcXFxcXFxc XCIpOworIAkJICAgICAgZWxzZQorLQkJCSAgcHJpbnRmKCIgJ1xcXFwlYyIsIHNbMl0pOworKwkJ CSAgZnByaW50ZihvdXRwdXRfZmlsZSwgIiAnXFxcXCVjIiwgc1syXSk7CisgCQkgICAgICBzICs9 IDI7CisgCQkgICAgICB3aGlsZSAoKisrcyAhPSAnXCcnKQorLQkJCSAgcHV0Y2hhcigqcyk7Cist CQkgICAgICBwdXRjaGFyKCdcJycpOworKwkJCSAgcHV0Yygqcywgb3V0cHV0X2ZpbGUpOworKwkJ ICAgICAgcHV0YygnXCcnLCBvdXRwdXRfZmlsZSk7CisgCQkgIH0KKyAJCSAgZWxzZQorLQkJICAg ICAgcHJpbnRmKCIgJyVjJyIsIHNbMV0pOworKwkJICAgICAgZnByaW50ZihvdXRwdXRfZmlsZSwg IiAnJWMnIiwgc1sxXSk7CisgCSAgICAgIH0KKyAJICAgICAgZWxzZQorLQkJICBwcmludGYoIiAl cyIsIHMpOworKwkJICBmcHJpbnRmKG91dHB1dF9maWxlLCAiICVzIiwgcyk7CisgCSAgfQorIAkg ICsrb3V0bGluZTsKKy0JICBwcmludGYoIlwiLFxuIik7CisrCSAgZnByaW50ZihvdXRwdXRfZmls ZSwgIlwiLFxuIik7CisgICAgICAgfQorICAgICAgICsrIG91dGxpbmU7CistICAgICAgcHJpbnRm KCIlcyAgfTtcbiIsIHByZWZpeCk7CistCSAgcHJpbnRmICgiJXMgcHVibGljIHN0YXRpYyBzdHJp bmcgZ2V0UnVsZSAoaW50IGluZGV4KSB7XG4iLCBwcmVmaXgpOworLQkgIHByaW50ZiAoIiVzICAg IHJldHVybiB5eVJ1bGUgW2luZGV4XTtcbiIsIHByZWZpeCk7CistCSAgcHJpbnRmICgiJXMgfVxu IiwgcHJlZml4KTsKKy0JICBwcmludGYgKCIlc31cbiIsIHByZWZpeCk7CisrICAgICAgZnByaW50 ZihvdXRwdXRfZmlsZSwgIiVzICB9O1xuIiwgcHJlZml4KTsKKysJICBmcHJpbnRmKG91dHB1dF9m aWxlLCAiJXMgcHVibGljIHN0YXRpYyBzdHJpbmcgZ2V0UnVsZSAoaW50IGluZGV4KSB7XG4iLCBw cmVmaXgpOworKwkgIGZwcmludGYob3V0cHV0X2ZpbGUsICIlcyAgICByZXR1cm4geXlSdWxlIFtp bmRleF07XG4iLCBwcmVmaXgpOworKwkgIGZwcmludGYob3V0cHV0X2ZpbGUsICIlcyB9XG4iLCBw cmVmaXgpOworKwkgIGZwcmludGYob3V0cHV0X2ZpbGUsICIlc31cbiIsIHByZWZpeCk7CisgCisg ICAgIG1heCA9IDA7CisgICAgIGZvciAoaSA9IDI7IGkgPCBudG9rZW5zOyArK2kpCitAQCAtOTMx LDcgKzkzMSw3IEBAIG91dHB1dF9kZWJ1ZygpCisgCisgCS8qIG5lZWQgeXlOYW1lcyBmb3IgeXlF eHBlY3RpbmcoKSAqLworIAorLSAgICAgIHByaW50ZigiICBwcm90ZWN0ZWQgc3RhdGljICVzIHN0 cmluZyBbXSB5eU5hbWVzID0geyIsIGNzaGFycCA/ICJyZWFkb25seSIgOiAiZmluYWwiKTsKKysg ICAgICBmcHJpbnRmKG91dHB1dF9maWxlLCAiICBwcm90ZWN0ZWQgc3RhdGljICVzIHN0cmluZyBb XSB5eU5hbWVzID0geyIsIGNzaGFycCA/ICJyZWFkb25seSIgOiAiZmluYWwiKTsKKyAgICAgICBz eW1uYW0gPSAoY2hhciAqKikgTUFMTE9DKChtYXgrMSkqc2l6ZW9mKGNoYXIgKikpOworICAgICAg IGlmIChzeW1uYW0gPT0gMCkgbm9fc3BhY2UoKTsKKyAgIAorQEAgLTk0Myw3ICs5NDMsNyBAQCBv dXRwdXRfZGVidWcoKQorIAkgIHN5bW5hbVtzeW1ib2xfdmFsdWVbaV1dID0gc3ltYm9sX25hbWVb aV07CisgICAgICAgc3ltbmFtWzBdID0gImVuZC1vZi1maWxlIjsKKyAgIAorLSAgICAgIGogPSA3 MDsgZnB1dHMoIiAgICAiLCBzdGRvdXQpOworKyAgICAgIGogPSA3MDsgZnB1dHMoIiAgICAiLCBv dXRwdXRfZmlsZSk7CisgICAgICAgZm9yIChpID0gMDsgaSA8PSBtYXg7ICsraSkKKyAgICAgICB7 CisgCSAgaWYgKHMgPSBzeW1uYW1baV0pCitAQCAtOTY1LDI1ICs5NjUsMjUgQEAgb3V0cHV0X2Rl YnVnKCkKKyAJCSAgaWYgKGogPiA3MCkKKyAJCSAgeworIAkJICAgICAgKytvdXRsaW5lOworLQkJ ICAgICAgcHJpbnRmKCJcbiAgICAiKTsKKysJCSAgICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICJc biAgICAiKTsKKyAJCSAgICAgIGogPSBrOworIAkJICB9CistCQkgIHByaW50ZigiXCJcXFwiIik7 CisrCQkgIGZwcmludGYob3V0cHV0X2ZpbGUsICJcIlxcXCIiKTsKKyAJCSAgcyA9IHN5bW5hbVtp XTsKKyAJCSAgd2hpbGUgKCorK3MgIT0gJyInKQorIAkJICB7CisgCQkgICAgICBpZiAoKnMgPT0g J1xcJykKKyAJCSAgICAgIHsKKy0JCQkgIHByaW50ZigiXFxcXCIpOworKwkJCSAgZnByaW50Zihv dXRwdXRfZmlsZSwgIlxcXFwiKTsKKyAJCQkgIGlmICgqKytzID09ICdcXCcpCistCQkJICAgICAg cHJpbnRmKCJcXFxcIik7CisrCQkJICAgICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxcXFwiKTsK KyAJCQkgIGVsc2UKKy0JCQkgICAgICBwdXRjaGFyKCpzKTsKKysJCQkgICAgICBwdXRjKCpzLCBv dXRwdXRfZmlsZSk7CisgCQkgICAgICB9CisgCQkgICAgICBlbHNlCistCQkJICBwdXRjaGFyKCpz KTsKKysJCQkgIHB1dGMoKnMsIG91dHB1dF9maWxlKTsKKyAJCSAgfQorLQkJICBwcmludGYoIlxc XCJcIiwiKTsKKysJCSAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxcXCJcIiwiKTsKKyAJICAgICAg fQorIAkgICAgICBlbHNlIGlmIChzWzBdID09ICdcJycpCisgCSAgICAgIHsKK0BAIC05OTMsMTAg Kzk5MywxMCBAQCBvdXRwdXRfZGVidWcoKQorIAkJICAgICAgaWYgKGogPiA3MCkKKyAJCSAgICAg IHsKKyAJCQkgICsrb3V0bGluZTsKKy0JCSAgICAgIAkgIHByaW50ZigiXG4gICAgIik7CisrCQkg ICAgICAJICBmcHJpbnRmKG91dHB1dF9maWxlLCAiXG4gICAgIik7CisgCQkJICBqID0gNzsKKyAJ CSAgICAgIH0KKy0JCSAgICAgIHByaW50ZigiXCInXFxcIidcIiwiKTsKKysJCSAgICAgIGZwcmlu dGYob3V0cHV0X2ZpbGUsICJcIidcXFwiJ1wiLCIpOworIAkJICB9CisgCQkgIGVsc2UKKyAJCSAg eworQEAgLTEwMTUsMjUgKzEwMTUsMjUgQEAgb3V0cHV0X2RlYnVnKCkKKyAJCSAgICAgIGlmIChq ID4gNzApCisgCQkgICAgICB7CisgCQkJICArK291dGxpbmU7CistCQkgICAgICAJICBwcmludGYo IlxuICAgICIpOworKwkJICAgICAgCSAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxuICAgICIpOwor IAkJCSAgaiA9IGs7CisgCQkgICAgICB9CistCQkgICAgICBwcmludGYoIlwiJyIpOworKwkJICAg ICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlwiJyIpOworIAkJICAgICAgcyA9IHN5bW5hbVtpXTsK KyAJCSAgICAgIHdoaWxlICgqKytzICE9ICdcJycpCisgCQkgICAgICB7CisgCQkJICBpZiAoKnMg PT0gJ1xcJykKKyAJCQkgIHsKKy0JCQkgICAgICBwcmludGYoIlxcXFwiKTsKKysJCQkgICAgICBm cHJpbnRmKG91dHB1dF9maWxlLCAiXFxcXCIpOworIAkJCSAgICAgIGlmICgqKytzID09ICdcXCcp CistCQkJCSAgcHJpbnRmKCJcXFxcIik7CisrCQkJCSAgZnByaW50ZihvdXRwdXRfZmlsZSwgIlxc XFwiKTsKKyAJCQkgICAgICBlbHNlCistCQkJCSAgcHV0Y2hhcigqcyk7CisrCQkJCSAgcHV0Yygq cywgb3V0cHV0X2ZpbGUpOworIAkJCSAgfQorIAkJCSAgZWxzZQorLQkJCSAgICAgIHB1dGNoYXIo KnMpOworKwkJCSAgICAgIHB1dGMoKnMsIG91dHB1dF9maWxlKTsKKyAJCSAgICAgIH0KKy0JCSAg ICAgIHByaW50ZigiJ1wiLCIpOworKwkJICAgICAgZnByaW50ZihvdXRwdXRfZmlsZSwgIidcIiwi KTsKKyAJCSAgfQorIAkgICAgICB9CisgCSAgICAgIGVsc2UKK0BAIC0xMDQzLDEyICsxMDQzLDEy IEBAIG91dHB1dF9kZWJ1ZygpCisgCQkgIGlmIChqID4gNzApCisgCQkgIHsKKyAJCSAgICAgICsr b3V0bGluZTsKKy0JCSAgICAgIHByaW50ZigiXG4gICAgIik7CisrCQkgICAgICBmcHJpbnRmKG91 dHB1dF9maWxlLCAiXG4gICAgIik7CisgCQkgICAgICBqID0gazsKKyAJCSAgfQorLQkJICBwdXRj aGFyKCciJyk7CistCQkgIGRvIHsgcHV0Y2hhcigqcyk7IH0gd2hpbGUgKCorK3MpOworLQkJICBw cmludGYoIlwiLCIpOworKwkJICBwdXRjKCciJywgb3V0cHV0X2ZpbGUpOworKwkJICBkbyB7IHB1 dGMoKnMsIG91dHB1dF9maWxlKTsgfSB3aGlsZSAoKisrcyk7CisrCQkgIGZwcmludGYob3V0cHV0 X2ZpbGUsICJcIiwiKTsKKyAJICAgICAgfQorIAkgIH0KKyAJICBlbHNlCitAQCAtMTA1NywxNCAr MTA1NywxNCBAQCBvdXRwdXRfZGVidWcoKQorIAkgICAgICBpZiAoaiA+IDcwKQorIAkgICAgICB7 CisgCQkgICsrb3V0bGluZTsKKy0JCSAgcHJpbnRmKCJcbiAgICAiKTsKKysJCSAgZnByaW50Zihv dXRwdXRfZmlsZSwgIlxuICAgICIpOworIAkJICBqID0gNTsKKyAJICAgICAgfQorLQkgICAgICBw cmludGYoIm51bGwsIik7CisrCSAgICAgIGZwcmludGYob3V0cHV0X2ZpbGUsICJudWxsLCIpOwor IAkgIH0KKyAgICAgICB9CisgICAgICAgb3V0bGluZSArPSAyOworLSAgICAgIHByaW50ZigiXG4g IH07XG4iKTsKKysgICAgICBmcHJpbnRmKG91dHB1dF9maWxlLCAiXG4gIH07XG4iKTsKKyAgICAg ICBGUkVFKHN5bW5hbSk7CisgfQorIAorQEAgLTEwODQsMTkgKzEwODQsMTkgQEAgb3V0cHV0X3Ry YWlsaW5nX3RleHQoKQorIAlpZiAoKGMgPSBnZXRjKGluKSkgPT0gRU9GKQorIAkgICAgcmV0dXJu OworICAgICAgICAgKytvdXRsaW5lOworLQlwcmludGYobGluZV9mb3JtYXQsIGxpbmVubywgaW5w dXRfZmlsZV9uYW1lKTsKKysJZnByaW50ZihvdXRwdXRfZmlsZSwgbGluZV9mb3JtYXQsIGxpbmVu bywgaW5wdXRfZmlsZV9uYW1lKTsKKyAJaWYgKGMgPT0gJ1xuJykKKyAJICAgICsrb3V0bGluZTsK Ky0JcHV0Y2hhcihjKTsKKysJcHV0YyhjLCBvdXRwdXRfZmlsZSk7CisgCWxhc3QgPSBjOworICAg ICB9CisgICAgIGVsc2UKKyAgICAgeworIAkrK291dGxpbmU7CistCXByaW50ZihsaW5lX2Zvcm1h dCwgbGluZW5vLCBpbnB1dF9maWxlX25hbWUpOworLQlkbyB7IHB1dGNoYXIoYyk7IH0gd2hpbGUg KChjID0gKisrY3B0cikgIT0gJ1xuJyk7CisrCWZwcmludGYob3V0cHV0X2ZpbGUsIGxpbmVfZm9y bWF0LCBsaW5lbm8sIGlucHV0X2ZpbGVfbmFtZSk7CisrCWRvIHsgcHV0YyhjLCBvdXRwdXRfZmls ZSk7IH0gd2hpbGUgKChjID0gKisrY3B0cikgIT0gJ1xuJyk7CisgCSsrb3V0bGluZTsKKy0JcHV0 Y2hhcignXG4nKTsKKysJcHV0YygnXG4nLCBvdXRwdXRfZmlsZSk7CisgCWxhc3QgPSAnXG4nOwor ICAgICB9CisgCitAQCAtMTEwNCwxNiArMTEwNCwxNiBAQCBvdXRwdXRfdHJhaWxpbmdfdGV4dCgp CisgICAgIHsKKyAJaWYgKGMgPT0gJ1xuJykKKyAJICAgICsrb3V0bGluZTsKKy0JcHV0Y2hhcihj KTsKKysJcHV0YyhjLCBvdXRwdXRfZmlsZSk7CisgCWxhc3QgPSBjOworICAgICB9CisgCisgICAg IGlmIChsYXN0ICE9ICdcbicpCisgICAgIHsKKyAJKytvdXRsaW5lOworLQlwdXRjaGFyKCdcbicp OworKwlwdXRjKCdcbicsIG91dHB1dF9maWxlKTsKKyAgICAgfQorLSAgICBwcmludGYoZGVmYXVs dF9saW5lX2Zvcm1hdCwgKytvdXRsaW5lICsgMSk7CisrICAgIGZwcmludGYob3V0cHV0X2ZpbGUs IGRlZmF1bHRfbGluZV9mb3JtYXQsICsrb3V0bGluZSArIDEpOworIH0KKyAKKyAKK0BAIC0xMTMy LDIyICsxMTMyLDIyIEBAIG91dHB1dF9zZW1hbnRpY19hY3Rpb25zKCkKKyAgICAgbGFzdCA9IGM7 CisgICAgIGlmIChjID09ICdcbicpCisgCSsrb3V0bGluZTsKKy0gICAgcHV0Y2hhcihjKTsKKysg ICAgcHV0YyhjLCBvdXRwdXRfZmlsZSk7CisgICAgIHdoaWxlICgoYyA9IGdldGMoYWN0aW9uX2Zp bGUpKSAhPSBFT0YpCisgICAgIHsKKyAJaWYgKGMgPT0gJ1xuJykKKyAJICAgICsrb3V0bGluZTsK Ky0JcHV0Y2hhcihjKTsKKysJcHV0YyhjLCBvdXRwdXRfZmlsZSk7CisgCWxhc3QgPSBjOworICAg ICB9CisgCisgICAgIGlmIChsYXN0ICE9ICdcbicpCisgICAgIHsKKyAJKytvdXRsaW5lOworLQlw dXRjaGFyKCdcbicpOworKwlwdXRjKCdcbicsIG91dHB1dF9maWxlKTsKKyAgICAgfQorIAorLSAg ICBwcmludGYoZGVmYXVsdF9saW5lX2Zvcm1hdCwgKytvdXRsaW5lICsgMSk7CisrICAgIGZwcmlu dGYob3V0cHV0X2ZpbGUsIGRlZmF1bHRfbGluZV9mb3JtYXQsICsrb3V0bGluZSArIDEpOworIH0K KyAKKyAKK2RpZmYgLS1naXQgYS9tY3MvbWNzL01ha2VmaWxlIGIvbWNzL21jcy9NYWtlZmlsZQor aW5kZXggZGJkNzFhM2Q1ODEuLmRiZjA0MGFmZGQ2IDEwMDY0NAorLS0tIGEvbWNzL21jcy9NYWtl ZmlsZQorKysrIGIvbWNzL21jcy9NYWtlZmlsZQorQEAgLTMyLDcgKzMyLDcgQEAgQlVJTFRfU09V UkNFUyA9IGNzLXBhcnNlci5jcworIENMRUFOX0ZJTEVTICs9IHkub3V0cHV0CisgCisgJS1wYXJz ZXIuY3M6ICUtcGFyc2VyLmpheSAkKHRvcGRpcikvamF5L3NrZWxldG9uLmNzCistCSQodG9wZGly KS9qYXkvamF5ICQoSkFZX0ZMQUdTKSA8ICQodG9wZGlyKS9qYXkvc2tlbGV0b24uY3MgJDwgPiBq YXktdG1wLm91dCAmJiBtdiBqYXktdG1wLm91dCAkQAorKwkkKHRvcGRpcikvamF5L2pheSAkKEpB WV9GTEFHUykgLW8gamF5LXRtcC5vdXQgJDwgPCAkKHRvcGRpcikvamF5L3NrZWxldG9uLmNzICYm IG12IGpheS10bXAub3V0ICRACisgCisgS0VFUF9PVVRQVVRfRklMRV9DT1BZID0geWVzCisgCitk aWZmIC0tZ2l0IGEvbWNzL21jcy9hcmd1bWVudC5jcyBiL21jcy9tY3MvYXJndW1lbnQuY3MKK2lu ZGV4IDViMTAwM2RiYWRmLi40Yzc1ZTQxYTllNSAxMDA2NDQKKy0tLSBhL21jcy9tY3MvYXJndW1l bnQuY3MKKysrKyBiL21jcy9tY3MvYXJndW1lbnQuY3MKK0BAIC0zOCw2ICszOCw4IEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycAorIAkJCS8vIENvbmRpdGlvbmFsIGluc3RhbmNlIGV4cHJlc3Npb24g aW5zZXJ0ZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CisgCQkJRXh0ZW5zaW9uVHlwZUNvbmRpdGlv bmFsQWNjZXNzID0gNSB8IENvbmRpdGlvbmFsQWNjZXNzRmxhZywKKyAKKysJCQlSZWFkb25seSA9 IDYsCisrCisgCQkJQ29uZGl0aW9uYWxBY2Nlc3NGbGFnID0gMSA8PCA3CisgCQl9CisgCitkaWZm IC0tZ2l0IGEvbWNzL21jcy9hc3NlbWJseS5jcyBiL21jcy9tY3MvYXNzZW1ibHkuY3MKK2luZGV4 IGFhNGM1NDMxN2EyLi45NmU0M2U3MGQ5OSAxMDA2NDQKKy0tLSBhL21jcy9tY3MvYXNzZW1ibHku Y3MKKysrKyBiL21jcy9tY3MvYXNzZW1ibHkuY3MKK0BAIC01NTQsNyArNTU0LDggQEAgbmFtZXNw YWNlIE1vbm8uQ1NoYXJwCisgCQkJCQkJaWYgKHByb3AgIT0gbnVsbCkgeworIAkJCQkJCQlBdHRy aWJ1dGVFbmNvZGVyIGVuY29kZXIgPSBuZXcgQXR0cmlidXRlRW5jb2RlciAoKTsKKyAJCQkJCQkJ ZW5jb2Rlci5FbmNvZGVOYW1lZFByb3BlcnR5QXJndW1lbnQgKHByb3AsIG5ldyBCb29sTGl0ZXJh bCAoQ29tcGlsZXIuQnVpbHRpblR5cGVzLCB0cnVlLCBMb2NhdGlvbi5OdWxsKSk7CistCQkJCQkJ CVNldEN1c3RvbUF0dHJpYnV0ZSAocGEuQ29uc3RydWN0b3IsIGVuY29kZXIuVG9BcnJheSAoKSk7 CisrCQkJCQkJCVNldEN1c3RvbUF0dHJpYnV0ZSAocGEuQ29uc3RydWN0b3IsIGVuY29kZXIuVG9B cnJheSAob3V0IHZhciByZWZlcmVuY2VzKSk7CisrCQkJCQkJCW1vZHVsZS5BZGRBc3NlbWJseVJl ZmVyZW5jZXMgKHJlZmVyZW5jZXMpOworIAkJCQkJCX0KKyAJCQkJCX0KKyAJCQkJfQorZGlmZiAt LWdpdCBhL21jcy9tY3MvYXR0cmlidXRlLmNzIGIvbWNzL21jcy9hdHRyaWJ1dGUuY3MKK2luZGV4 IDgzZDQwMzExOGFkLi5mYWYyY2ZhYTFkOCAxMDA2NDQKKy0tLSBhL21jcy9tY3MvYXR0cmlidXRl LmNzCisrKysgYi9tY3MvbWNzL2F0dHJpYnV0ZS5jcworQEAgLTEwNjQsOCArMTA2NCwxMCBAQCBu YW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCX0KKyAKKyAJCQlieXRlW10gY2RhdGE7CisrCQkJ TGlzdDxBc3NlbWJseT4gcmVmZXJlbmNlczsKKyAJCQlpZiAocG9zX2FyZ3MgPT0gbnVsbCAmJiBu YW1lZF92YWx1ZXMgPT0gbnVsbCkgeworIAkJCQljZGF0YSA9IEF0dHJpYnV0ZUVuY29kZXIuRW1w dHk7CisrCQkJCXJlZmVyZW5jZXMgPSBudWxsOworIAkJCX0gZWxzZSB7CisgCQkJCUF0dHJpYnV0 ZUVuY29kZXIgZW5jb2RlciA9IG5ldyBBdHRyaWJ1dGVFbmNvZGVyICgpOworIAorQEAgLTExMzgs NyArMTE0MCw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJCQllbmNvZGVyLkVuY29k ZUVtcHR5TmFtZWRBcmd1bWVudHMgKCk7CisgCQkJCX0KKyAKKy0JCQkJY2RhdGEgPSBlbmNvZGVy LlRvQXJyYXkgKCk7CisrCQkJCWNkYXRhID0gZW5jb2Rlci5Ub0FycmF5IChvdXQgcmVmZXJlbmNl cyk7CisgCQkJfQorIAorIAkJCWlmICghSXNDb25kaXRpb25hbGx5RXhjbHVkZWQgKGN0b3IuRGVj bGFyaW5nVHlwZSkpIHsKK0BAIC0xMTU3LDYgKzExNTksOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hh cnAgeworIAkJCQkJRXJyb3JfQXR0cmlidXRlRW1pdEVycm9yIChlLk1lc3NhZ2UpOworIAkJCQkJ cmV0dXJuOworIAkJCQl9CisrCisrCQkJCWNvbnRleHQuTW9kdWxlLkFkZEFzc2VtYmx5UmVmZXJl bmNlcyAocmVmZXJlbmNlcyk7CisgCQkJfQorIAorIAkJCWlmICghdXNhZ2VfYXR0ci5BbGxvd011 bHRpcGxlICYmIGFsbEVtaXR0ZWQgIT0gbnVsbCkgeworQEAgLTE0MTUsNiArMTQxOSw3IEBAIG5h bWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQlieXRlW10gYnVmZmVyOworIAkJaW50IHBvczsKKyAJ CWNvbnN0IHVzaG9ydCBWZXJzaW9uID0gMTsKKysJCUxpc3Q8QXNzZW1ibHk+IGltcG9ydHM7Cisg CisgCQlzdGF0aWMgQXR0cmlidXRlRW5jb2RlciAoKQorIAkJeworQEAgLTE1OTQsNyArMTU5OSwx NSBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJcHVibGljIHZvaWQgRW5jb2RlVHlwZU5h bWUgKFR5cGVTcGVjIHR5cGUpCisgCQl7CisgCQkJdmFyIG9sZF90eXBlID0gdHlwZS5HZXRNZXRh SW5mbyAoKTsKKy0JCQlFbmNvZGUgKHR5cGUuTWVtYmVyRGVmaW5pdGlvbi5Jc0ltcG9ydGVkID8g b2xkX3R5cGUuQXNzZW1ibHlRdWFsaWZpZWROYW1lIDogb2xkX3R5cGUuRnVsbE5hbWUpOworKwkJ CWlmICh0eXBlLk1lbWJlckRlZmluaXRpb24uSXNJbXBvcnRlZCkgeworKwkJCQlpZiAoaW1wb3J0 cyA9PSBudWxsKQorKwkJCQkJaW1wb3J0cyA9IG5ldyBMaXN0PEFzc2VtYmx5PiAoKTsKKysKKysJ CQkJaW1wb3J0cy5BZGQgKG9sZF90eXBlLkFzc2VtYmx5KTsKKysJCQkJRW5jb2RlIChvbGRfdHlw ZS5Bc3NlbWJseVF1YWxpZmllZE5hbWUpOworKwkJCX0gZWxzZSB7CisrCQkJCUVuY29kZSAob2xk X3R5cGUuRnVsbE5hbWUpOworKwkJCX0KKyAJCX0KKyAKKyAJCXB1YmxpYyB2b2lkIEVuY29kZVR5 cGVOYW1lIChUeXBlQ29udGFpbmVyIHR5cGUpCitAQCAtMTY3NSw4ICsxNjg4LDEwIEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycCB7CisgCQkJRW5jb2RlICh2YWx1ZSk7CisgCQl9CisgCistCQlwdWJs aWMgYnl0ZVtdIFRvQXJyYXkgKCkKKysJCXB1YmxpYyBieXRlW10gVG9BcnJheSAob3V0IExpc3Q8 QXNzZW1ibHk+IGFzc2VtYmx5UmVmZXJlbmNlcykKKyAJCXsKKysJCQlhc3NlbWJseVJlZmVyZW5j ZXMgPSBpbXBvcnRzOworKworIAkJCWJ5dGVbXSBidWYgPSBuZXcgYnl0ZVtwb3NdOworIAkJCUFy cmF5LkNvcHkgKGJ1ZmZlciwgYnVmLCBwb3MpOworIAkJCXJldHVybiBidWY7CitAQCAtMTk5MCw3 ICsyMDA1LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQllbmNvZGVyLkVuY29kZSAo KGludCkgc3RhdGUpOworIAkJCWVuY29kZXIuRW5jb2RlRW1wdHlOYW1lZEFyZ3VtZW50cyAoKTsK KyAKKy0JCQlidWlsZGVyLlNldEN1c3RvbUF0dHJpYnV0ZSAoKENvbnN0cnVjdG9ySW5mbykgY3Rv ci5HZXRNZXRhSW5mbyAoKSwgZW5jb2Rlci5Ub0FycmF5ICgpKTsKKysJCQlidWlsZGVyLlNldEN1 c3RvbUF0dHJpYnV0ZSAoKENvbnN0cnVjdG9ySW5mbykgY3Rvci5HZXRNZXRhSW5mbyAoKSwgZW5j b2Rlci5Ub0FycmF5IChvdXQgdmFyIHJlZmVyZW5jZXMpKTsKKysJCQltb2R1bGUuQWRkQXNzZW1i bHlSZWZlcmVuY2VzIChyZWZlcmVuY2VzKTsKKyAJCX0KKyAJfQorIAorQEAgLTIwMjQsNyArMjA0 MCw4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJZW5jb2Rlci5FbmNvZGUgKChpbnQp IG1vZGVzKTsKKyAJCQllbmNvZGVyLkVuY29kZUVtcHR5TmFtZWRBcmd1bWVudHMgKCk7CisgCist CQkJYnVpbGRlci5TZXRDdXN0b21BdHRyaWJ1dGUgKChDb25zdHJ1Y3RvckluZm8pIGN0b3IuR2V0 TWV0YUluZm8gKCksIGVuY29kZXIuVG9BcnJheSAoKSk7CisrCQkJYnVpbGRlci5TZXRDdXN0b21B dHRyaWJ1dGUgKChDb25zdHJ1Y3RvckluZm8pIGN0b3IuR2V0TWV0YUluZm8gKCksIGVuY29kZXIu VG9BcnJheSAob3V0IHZhciByZWZlcmVuY2VzKSk7CisrCQkJbW9kdWxlLkFkZEFzc2VtYmx5UmVm ZXJlbmNlcyAocmVmZXJlbmNlcyk7CisgCQl9CisgCX0KKyAKK0BAIC0yMDUwLDcgKzIwNjcsOCBA QCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCWVuY29kZXIuRW5jb2RlICgodWludCkgYml0 c1swXSk7CisgCQkJZW5jb2Rlci5FbmNvZGVFbXB0eU5hbWVkQXJndW1lbnRzICgpOworIAorLQkJ CWJ1aWxkZXIuU2V0Q3VzdG9tQXR0cmlidXRlICgoQ29uc3RydWN0b3JJbmZvKSBjdG9yLkdldE1l dGFJbmZvICgpLCBlbmNvZGVyLlRvQXJyYXkgKCkpOworKwkJCWJ1aWxkZXIuU2V0Q3VzdG9tQXR0 cmlidXRlICgoQ29uc3RydWN0b3JJbmZvKSBjdG9yLkdldE1ldGFJbmZvICgpLCBlbmNvZGVyLlRv QXJyYXkgKG91dCB2YXIgcmVmZXJlbmNlcykpOworKwkJCW1vZHVsZS5BZGRBc3NlbWJseVJlZmVy ZW5jZXMgKHJlZmVyZW5jZXMpOworIAkJfQorIAorIAkJcHVibGljIHZvaWQgRW1pdEF0dHJpYnV0 ZSAoRmllbGRCdWlsZGVyIGJ1aWxkZXIsIGRlY2ltYWwgdmFsdWUsIExvY2F0aW9uIGxvYykKK0BA IC0yMDY4LDcgKzIwODYsOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCWVuY29kZXIu RW5jb2RlICgodWludCkgYml0c1swXSk7CisgCQkJZW5jb2Rlci5FbmNvZGVFbXB0eU5hbWVkQXJn dW1lbnRzICgpOworIAorLQkJCWJ1aWxkZXIuU2V0Q3VzdG9tQXR0cmlidXRlICgoQ29uc3RydWN0 b3JJbmZvKSBjdG9yLkdldE1ldGFJbmZvICgpLCBlbmNvZGVyLlRvQXJyYXkgKCkpOworKwkJCWJ1 aWxkZXIuU2V0Q3VzdG9tQXR0cmlidXRlICgoQ29uc3RydWN0b3JJbmZvKSBjdG9yLkdldE1ldGFJ bmZvICgpLCBlbmNvZGVyLlRvQXJyYXkgKG91dCB2YXIgcmVmZXJlbmNlcykpOworKwkJCW1vZHVs ZS5BZGRBc3NlbWJseVJlZmVyZW5jZXMgKHJlZmVyZW5jZXMpOworIAkJfQorIAl9CisgCitAQCAt MjA5Miw3ICsyMTExLDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQllbmNvZGVyLkVu Y29kZVR5cGVOYW1lICh0eXBlKTsKKyAJCQllbmNvZGVyLkVuY29kZUVtcHR5TmFtZWRBcmd1bWVu dHMgKCk7CisgCistCQkJYnVpbGRlci5TZXRDdXN0b21BdHRyaWJ1dGUgKChDb25zdHJ1Y3Rvcklu Zm8pIGN0b3IuR2V0TWV0YUluZm8gKCksIGVuY29kZXIuVG9BcnJheSAoKSk7CisrCQkJYnVpbGRl ci5TZXRDdXN0b21BdHRyaWJ1dGUgKChDb25zdHJ1Y3RvckluZm8pIGN0b3IuR2V0TWV0YUluZm8g KCksIGVuY29kZXIuVG9BcnJheSAob3V0IHZhciByZWZlcmVuY2VzKSk7CisrCQkJbW9kdWxlLkFk ZEFzc2VtYmx5UmVmZXJlbmNlcyAocmVmZXJlbmNlcyk7CisgCQl9CisgCX0KKyAKK2RpZmYgLS1n aXQgYS9tY3MvbWNzL2NsYXNzLmNzIGIvbWNzL21jcy9jbGFzcy5jcworaW5kZXggNmIxYWRjMjk3 YTMuLmRjNjFmNmRjNjI3IDEwMDY0NAorLS0tIGEvbWNzL21jcy9jbGFzcy5jcworKysrIGIvbWNz L21jcy9jbGFzcy5jcworQEAgLTIxMTcsNyArMjExNyw4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFy cAorIAkJCWVuY29kZXIuRW5jb2RlIChHZXRBdHRyaWJ1dGVEZWZhdWx0TWVtYmVyICgpKTsKKyAJ CQllbmNvZGVyLkVuY29kZUVtcHR5TmFtZWRBcmd1bWVudHMgKCk7CisgCistCQkJVHlwZUJ1aWxk ZXIuU2V0Q3VzdG9tQXR0cmlidXRlICgoQ29uc3RydWN0b3JJbmZvKSBjdG9yLkdldE1ldGFJbmZv ICgpLCBlbmNvZGVyLlRvQXJyYXkgKCkpOworKwkJCVR5cGVCdWlsZGVyLlNldEN1c3RvbUF0dHJp YnV0ZSAoKENvbnN0cnVjdG9ySW5mbykgY3Rvci5HZXRNZXRhSW5mbyAoKSwgZW5jb2Rlci5Ub0Fy cmF5IChvdXQgdmFyIHJlZmVyZW5jZXMpKTsKKysJCQlNb2R1bGUuQWRkQXNzZW1ibHlSZWZlcmVu Y2VzIChyZWZlcmVuY2VzKTsKKyAJCX0KKyAKKyAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIFZlcmlm eU1lbWJlcnMgKCkKK0BAIC0zOTYyLDcgKzM5NjMsMTAgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJw CisgCQkJCQlSZXBvcnQuRXJyb3IgKDQwMTMsIExvY2F0aW9uLAorIAkJCQkJCSJMb2NhbCB2YXJp YWJsZXMgb2YgdHlwZSBgezB9JyBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgYW5vbnltb3VzIG1ldGhv ZHMsIGxhbWJkYSBleHByZXNzaW9ucyBvciBxdWVyeSBleHByZXNzaW9ucyIsCisgCQkJCQkJTWVt YmVyVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CistCQkJCX0gZWxzZSBpZiAoTWVtYmVy VHlwZS5Jc0J5UmVmTGlrZSkgeworKwkJCQl9IGVsc2UgaWYgKE1lbWJlclR5cGUuSXNTcGVjaWFs UnVudGltZVR5cGUpIHsKKysJCQkJCVJlcG9ydC5FcnJvciAoNjEwLCBMb2NhdGlvbiwKKysJCQkJ CQkiRmllbGQgb3IgcHJvcGVydHkgY2Fubm90IGJlIG9mIHR5cGUgYHswfSciLCBNZW1iZXJUeXBl LkdldFNpZ25hdHVyZUZvckVycm9yICgpKTsKKysJCQkJfSBlbHNlIHsKKyAJCQkJCWlmICgoTW9k RmxhZ3MgJiAoTW9kaWZpZXJzLkFCU1RSQUNUIHwgTW9kaWZpZXJzLkVYVEVSTikpICE9IDApCisg CQkJCQkJcmV0dXJuOworIAorQEAgLTM5NzUsOSArMzk3OSw2IEBAIG5hbWVzcGFjZSBNb25vLkNT aGFycAorIAkJCQkJUmVwb3J0LkVycm9yICg4MzQ1LCBMb2NhdGlvbiwKKyAJCQkJCQkiRmllbGQg b3IgYXV0by1pbXBsZW1lbnRlZCBwcm9wZXJ0eSBjYW5ub3QgYmUgb2YgdHlwZSBgezB9JyB1bmxl c3MgaXQgaXMgYW4gaW5zdGFuY2UgbWVtYmVyIG9mIGEgcmVmIHN0cnVjdCIsCisgCQkJCQkJTWVt YmVyVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7CistCQkJCX0gZWxzZSB7CistCQkJCQlS ZXBvcnQuRXJyb3IgKDYxMCwgTG9jYXRpb24sIAorLQkJCQkJCSJGaWVsZCBvciBwcm9wZXJ0eSBj YW5ub3QgYmUgb2YgdHlwZSBgezB9JyIsIE1lbWJlclR5cGUuR2V0U2lnbmF0dXJlRm9yRXJyb3Ig KCkpOworIAkJCQl9CisgCQkJfQorIAkJfQorZGlmZiAtLWdpdCBhL21jcy9tY3MvY29udmVydC5j cyBiL21jcy9tY3MvY29udmVydC5jcworaW5kZXggYWUxNTNmYzQ5ZTguLjJjOGQyYTAyMDRjIDEw MDY0NAorLS0tIGEvbWNzL21jcy9jb252ZXJ0LmNzCisrKysgYi9tY3MvbWNzL2NvbnZlcnQuY3MK K0BAIC0xMjMyLDYgKzEyMzIsMTMgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQkJCUZp bmRBcHBsaWNhYmxlVXNlckRlZmluZWRDb252ZXJzaW9uT3BlcmF0b3JzIChyYywgb3BlcmF0b3Jz LCBzb3VyY2VfdHlwZV9leHByLCB0YXJnZXRfdHlwZSwgcmVzdHIsIHJlZiBjYW5kaWRhdGVzKTsK KyAJCQkJfQorIAorKwkJCQlpZiAoc291cmNlX3R5cGVfZXhwciA9PSBzb3VyY2UgJiYgc291cmNl X3R5cGUuSXNOdWxsYWJsZVR5cGUpIHsKKysJCQkJCW9wZXJhdG9ycyA9IE1lbWJlckNhY2hlLkdl dFVzZXJPcGVyYXRvciAoc291cmNlX3R5cGUuVHlwZUFyZ3VtZW50cyBbMF0sIE9wZXJhdG9yLk9w VHlwZS5JbXBsaWNpdCwgZGVjbGFyZWRfb25seSk7CisrCQkJCQlpZiAob3BlcmF0b3JzICE9IG51 bGwpIHsKKysJCQkJCQlGaW5kQXBwbGljYWJsZVVzZXJEZWZpbmVkQ29udmVyc2lvbk9wZXJhdG9y cyAocmMsIG9wZXJhdG9ycywgc291cmNlX3R5cGVfZXhwciwgdGFyZ2V0X3R5cGUsIHJlc3RyLCBy ZWYgY2FuZGlkYXRlcyk7CisrCQkJCQl9CisrCQkJCX0KKysKKyAJCQkJaWYgKCFpbXBsaWNpdE9u bHkpIHsKKyAJCQkJCW9wZXJhdG9ycyA9IE1lbWJlckNhY2hlLkdldFVzZXJPcGVyYXRvciAoc291 cmNlX3R5cGUsIE9wZXJhdG9yLk9wVHlwZS5FeHBsaWNpdCwgZGVjbGFyZWRfb25seSk7CisgCQkJ CQlpZiAob3BlcmF0b3JzICE9IG51bGwpIHsKK2RpZmYgLS1naXQgYS9tY3MvbWNzL2NzLXBhcnNl ci5qYXkgYi9tY3MvbWNzL2NzLXBhcnNlci5qYXkKK2luZGV4IDRkNmZjYjQ0YzBkLi40Y2EzYmY3 NGYzZCAxMDA2NDQKKy0tLSBhL21jcy9tY3MvY3MtcGFyc2VyLmpheQorKysrIGIvbWNzL21jcy9j cy1wYXJzZXIuamF5CitAQCAtMzQsMTMgKzM0LDE2IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAor IAkJCVBhcmFtcwk9IDEgPDwgNCwKKyAJCQlBcmdsaXN0CT0gMSA8PCA1LAorIAkJCURlZmF1bHRW YWx1ZSA9IDEgPDwgNiwKKysJCQlSZWFkT25seSA9IDEgPDwgNywKKyAJCQkKKy0JCQlBbGwgPSBS ZWYgfCBPdXQgfCBUaGlzIHwgUGFyYW1zIHwgQXJnbGlzdCB8IERlZmF1bHRWYWx1ZSwKKysJCQlB bGwgPSBSZWYgfCBPdXQgfCBUaGlzIHwgUGFyYW1zIHwgQXJnbGlzdCB8IERlZmF1bHRWYWx1ZSB8 IFJlYWRPbmx5LAorIAkJCVByaW1hcnlDb25zdHJ1Y3RvciA9IFJlZiB8IE91dCB8IFBhcmFtcyB8 IERlZmF1bHRWYWx1ZQorIAkJfQorIAkJCisgCQlzdGF0aWMgcmVhZG9ubHkgb2JqZWN0IE1vZGlm aWVyTm9uZSA9IDA7CistCQorKwkJc3RhdGljIHJlYWRvbmx5IG9iamVjdCBSZWZTdHJ1Y3RUb2tl biA9IG5ldyBvYmplY3QgKCk7CisrCQlzdGF0aWMgcmVhZG9ubHkgb2JqZWN0IFJlZlBhcnRpYWxT dHJ1Y3RUb2tlbiA9IG5ldyBvYmplY3QgKCk7CisrCisgCQlOYW1lc3BhY2VDb250YWluZXIgY3Vy cmVudF9uYW1lc3BhY2U7CisgCQlUeXBlQ29udGFpbmVyIGN1cnJlbnRfY29udGFpbmVyOworIAkJ VHlwZURlZmluaXRpb24gY3VycmVudF90eXBlOworQEAgLTMzOCw2ICszNDEsNyBAQCBuYW1lc3Bh Y2UgTW9uby5DU2hhcnAKKyAldG9rZW4gT1BFTl9CUkFDS0VUX0VYUFIKKyAldG9rZW4gT1BFTl9Q QVJFTlNfREVDT05TVFJVQ1QKKyAldG9rZW4gUkVGX1NUUlVDVAorKyV0b2tlbiBSRUZfUEFSVElB TAorIAorIC8vIE1ha2UgdGhlIHBhcnNlciBnbyBpbnRvIGV2YWwgbW9kZSBwYXJzaW5nIChzdGF0 ZW1lbnRzIGFuZCBjb21waWxhdGlvbiB1bml0cykuCisgJXRva2VuIEVWQUxfU1RBVEVNRU5UX1BB UlNFUgorQEAgLTY0OCw4ICs2NTIsOCBAQCBuYW1lc3BhY2Vfb3JfdHlwZV9kZWNsYXJhdGlvbgor IAkJCVR5cGVDb250YWluZXIgZHMgPSAoVHlwZUNvbnRhaW5lcikkMTsKKyAKKyAJCQlpZiAoKGRz Lk1vZEZsYWdzICYgKE1vZGlmaWVycy5QUklWQVRFIHwgTW9kaWZpZXJzLlBST1RFQ1RFRCkpICE9 IDApeworLQkJCQlyZXBvcnQuRXJyb3IgKDE1MjcsIGRzLkxvY2F0aW9uLCAKKy0JCQkJIk5hbWVz cGFjZSBlbGVtZW50cyBjYW5ub3QgYmUgZXhwbGljaXRseSBkZWNsYXJlZCBhcyBwcml2YXRlLCBw cm90ZWN0ZWQgb3IgcHJvdGVjdGVkIGludGVybmFsIik7CisrCQkJCXJlcG9ydC5FcnJvciAoMTUy NywgZHMuTG9jYXRpb24sCisrCQkJCSJOYW1lc3BhY2UgZWxlbWVudHMgY2Fubm90IGJlIGV4cGxp Y2l0bHkgZGVjbGFyZWQgYXMgcHJpdmF0ZSwgcHJvdGVjdGVkLCBwcm90ZWN0ZWQgaW50ZXJuYWws IG9yIHByaXZhdGUgcHJvdGVjdGVkIik7CisgCQkJfQorIAorIAkJCS8vIEhlcmUgaXMgYSB0cmlj aywgZm9yIGV4cGxpY2l0IGF0dHJpYnV0ZXMgd2UgZG9uJ3Qga25vdyB3aGVyZSB0aGV5IGJlbG9u ZyB0byB1bnRpbAorQEAgLTEwMjgsNyArMTAzMiwxNSBAQCBzdHJ1Y3Rfa2V5d29yZAorIAkJCUZl YXR1cmVJc05vdEF2YWlsYWJsZSAoR2V0TG9jYXRpb24gKCQxKSwgInJlZiBzdHJ1Y3RzIik7Cisg CQl9CisgCistCQkkJCA9IHRoaXM7CisrCQkkJCA9IFJlZlN0cnVjdFRva2VuOworKwkgIH0KKysJ fCBSRUZfUEFSVElBTCBTVFJVQ1QKKysJICB7CisrCQlpZiAobGFuZ192ZXJzaW9uIDwgTGFuZ3Vh Z2VWZXJzaW9uLlZfN18yKSB7CisrCQkJRmVhdHVyZUlzTm90QXZhaWxhYmxlIChHZXRMb2NhdGlv biAoJDEpLCAicmVmIHN0cnVjdHMiKTsKKysJCX0KKysKKysJCSQkID0gUmVmUGFydGlhbFN0cnVj dFRva2VuOworIAkgIH0KKyAJOworIAorQEAgLTEwNDMsOCArMTA1NSwxMyBAQCBzdHJ1Y3RfZGVj bGFyYXRpb24KKyAJCWlmICgobW9kcyAmIE1vZGlmaWVycy5SRUFET05MWSkgIT0gMCAmJiBsYW5n X3ZlcnNpb24gPCBMYW5ndWFnZVZlcnNpb24uVl83XzIpIHsKKyAJCQlGZWF0dXJlSXNOb3RBdmFp bGFibGUgKEdldExvY2F0aW9uICgkNCksICJyZWFkb25seSBzdHJ1Y3RzIik7CisgCQl9CistCQlp ZiAoJDQgIT0gbnVsbCkKKysJCWlmICgkNCAhPSBudWxsKSB7CisgCQkJbW9kcyB8PSBNb2RpZmll cnMuUkVGOworKwkJCWlmICgkNCA9PSBSZWZQYXJ0aWFsU3RydWN0VG9rZW4pIHsKKysJCQkJbW9k cyB8PSBNb2RpZmllcnMuUEFSVElBTDsKKysJCQkJJDMgPSAkNDsKKysJCQl9CisrCQl9CisgCisg CQlsZXhlci5Db25zdHJhaW50c1BhcnNpbmcgPSB0cnVlOworIAkJdmFsaWRfcGFyYW1fbW9kID0g UGFyYW1ldGVyTW9kaWZpZXJUeXBlLlByaW1hcnlDb25zdHJ1Y3RvcjsKK0BAIC0xNDY5LDcgKzE0 ODYsNyBAQCBtZXRob2RfaGVhZGVyCisgCSAgT1BFTl9QQVJFTlMKKyAJICB7CisgCQlsZXhlci5w YXJzaW5nX2dlbmVyaWNfZGVjbGFyYXRpb24gPSBmYWxzZTsKKy0JICAJdmFsaWRfcGFyYW1fbW9k ID0gUGFyYW1ldGVyTW9kaWZpZXJUeXBlLkFsbDsKKysJCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFt ZXRlck1vZGlmaWVyVHlwZS5BbGw7CisgCSAgfQorIAkgIG9wdF9mb3JtYWxfcGFyYW1ldGVyX2xp c3QgQ0xPU0VfUEFSRU5TIAorIAkgIHsKK0BAIC0xNTY5LDcgKzE1ODYsNyBAQCBjb25zdHJ1Y3Rv cl9ib2R5CisgCSBleHByZXNzaW9uIFNFTUlDT0xPTgorIAkgeworIAkJbGV4ZXIucGFyc2luZ19i bG9jayA9IDA7CistCQljdXJyZW50X2Jsb2NrLkFkZFN0YXRlbWVudCAobmV3IENvbnRleHR1YWxS ZXR1cm4gKChFeHByZXNzaW9uKSAkMykpOworKwkJY3VycmVudF9ibG9jay5BZGRTdGF0ZW1lbnQg KENyZWF0ZUV4cHJlc3Npb25Cb2RpZWRTdGF0ZW1lbnQgKChFeHByZXNzaW9uKSAkMykpOworIAkJ dmFyIGIgPSBlbmRfYmxvY2sgKEdldExvY2F0aW9uICgkNCkpOworIAkJYi5Jc0NvbXBpbGVyR2Vu ZXJhdGVkID0gdHJ1ZTsKKyAJCSQkID0gYjsKK0BAIC0xNTkwLDcgKzE2MDcsNyBAQCBleHByZXNz aW9uX2Jsb2NrCisgCSBsYW1iZGFfYXJyb3dfZXhwcmVzc2lvbiBTRU1JQ09MT04KKyAJIHsKKyAJ CWxleGVyLnBhcnNpbmdfYmxvY2sgPSAwOworLQkJY3VycmVudF9ibG9jay5BZGRTdGF0ZW1lbnQg KG5ldyBDb250ZXh0dWFsUmV0dXJuICgoRXhwcmVzc2lvbikgJDMpKTsKKysJCWN1cnJlbnRfYmxv Y2suQWRkU3RhdGVtZW50IChDcmVhdGVFeHByZXNzaW9uQm9kaWVkU3RhdGVtZW50ICgoRXhwcmVz c2lvbikgJDMpKTsKKyAJCXZhciBiID0gZW5kX2Jsb2NrIChHZXRMb2NhdGlvbiAoJDQpKTsKKyAJ CWIuSXNDb21waWxlckdlbmVyYXRlZCA9IHRydWU7CisgCQkkJCA9IGI7CitAQCAtMTc5NCw3ICsx ODExLDkgQEAgcGFyYW1ldGVyX21vZGlmaWVycworICAgCQlQYXJhbWV0ZXIuTW9kaWZpZXIgbW9k ID0gKFBhcmFtZXRlci5Nb2RpZmllcikkMSB8IHAyOworICAgCQlpZiAoKChQYXJhbWV0ZXIuTW9k aWZpZXIpJDEgJiBwMikgPT0gcDIpIHsKKyAgIAkJCUVycm9yX0R1cGxpY2F0ZVBhcmFtZXRlck1v ZGlmaWVyIChsZXhlci5Mb2NhdGlvbiwgcDIpOworLSAgCQl9IGVsc2UgeworKwkJfSBlbHNlIGlm ICgobW9kICYgfihQYXJhbWV0ZXIuTW9kaWZpZXIuVGhpcyB8IFBhcmFtZXRlci5Nb2RpZmllci5S ZWFkT25seSkpID09IDApIHsKKysJCQkvLyBvaworKwkJfSBlbHNlIHsKKyAJICAJCXN3aXRjaCAo bW9kICYgflBhcmFtZXRlci5Nb2RpZmllci5UaGlzKSB7CisgICAJCQkJY2FzZSBQYXJhbWV0ZXIu TW9kaWZpZXIuUkVGOgorIAkJCQkJcmVwb3J0LkVycm9yICgxMTAxLCBsZXhlci5Mb2NhdGlvbiwg IlRoZSBwYXJhbWV0ZXIgbW9kaWZpZXJzIGB0aGlzJyBhbmQgYHJlZicgY2Fubm90IGJlIHVzZWQg YWx0b2dldGhlciIpOworQEAgLTE4MzYsNiArMTg1NSwxMyBAQCBwYXJhbWV0ZXJfbW9kaWZpZXIK KyAJICAJCQkKKyAJCSQkID0gUGFyYW1ldGVyLk1vZGlmaWVyLlRoaXM7CisgCSAgfQorKwl8IElO CisrCSAgeworKwkJaWYgKGxhbmdfdmVyc2lvbiA8IExhbmd1YWdlVmVyc2lvbi5WXzdfMikKKysJ CQlGZWF0dXJlSXNOb3RBdmFpbGFibGUgKEdldExvY2F0aW9uICgkMSksICJyZWFkb25seSByZWZl cmVuY2VzIik7CisrCisrCQkkJCA9IFBhcmFtZXRlci5Nb2RpZmllci5SZWFkT25seTsKKysJICB9 CisgCTsKKyAKKyBwYXJhbWV0ZXJfYXJyYXkKK0BAIC0xODcxLDcgKzE4OTcsNyBAQCBwYXJhbXNf bW9kaWZpZXIKKyAJCWlmICgobW9kICYgUGFyYW1ldGVyLk1vZGlmaWVyLlRoaXMpICE9IDApIHsK KyAJCQlyZXBvcnQuRXJyb3IgKDExMDQsIEdldExvY2F0aW9uICgkMSksICJUaGUgcGFyYW1ldGVy IG1vZGlmaWVycyBgdGhpcycgYW5kIGBwYXJhbXMnIGNhbm5vdCBiZSB1c2VkIGFsdG9nZXRoZXIi KTsKKyAJCX0gZWxzZSB7CistCQkJcmVwb3J0LkVycm9yICgxNjExLCBHZXRMb2NhdGlvbiAoJDEp LCAiVGhlIHBhcmFtcyBwYXJhbWV0ZXIgY2Fubm90IGJlIGRlY2xhcmVkIGFzIHJlZiBvciBvdXQi KTsKKysJCQlyZXBvcnQuRXJyb3IgKDE2MTEsIEdldExvY2F0aW9uICgkMSksICJUaGUgcGFyYW1z IHBhcmFtZXRlciBjYW5ub3QgYmUgZGVjbGFyZWQgYXMgcmVmLCBvdXQgb3IgaW4iKTsKKyAJCX0J ICAKKyAJICB9CisgCXwgUEFSQU1TIHBhcmFtc19tb2RpZmllcgorQEAgLTIwMDQsNyArMjAzMCw3 IEBAIGluZGV4ZXJfZGVjbGFyYXRpb24KKyAJOiBvcHRfYXR0cmlidXRlcyBvcHRfbW9kaWZpZXJz CisgCSAgcmVmX21lbWJlcl90eXBlIGluZGV4ZXJfZGVjbGFyYXRpb25fbmFtZSBPUEVOX0JSQUNL RVQKKyAJICB7CistCSAgCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5Q YXJhbXMgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuRGVmYXVsdFZhbHVlOworKwkJdmFsaWRfcGFy YW1fbW9kID0gUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlBhcmFtcyB8IFBhcmFtZXRlck1vZGlmaWVy VHlwZS5EZWZhdWx0VmFsdWUgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUmVhZE9ubHk7CisgCSAg fQorIAkgIG9wdF9mb3JtYWxfcGFyYW1ldGVyX2xpc3QgQ0xPU0VfQlJBQ0tFVCAKKyAJICB7CitA QCAtMjE4MSw2ICsyMjA3LDExIEBAIHNldF9hY2Nlc3Nvcl9kZWNsYXJhdGlvbgorIGFjY2Vzc29y X2JvZHkKKyAJOiBibG9jaworIAl8IGV4cHJlc3Npb25fYmxvY2sKKysJICB7CisrCQlpZiAobGFu Z192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZfNykgeworKwkJCUZlYXR1cmVJc05vdEF2YWls YWJsZSAoR2V0TG9jYXRpb24gKCQxKSwgImV4cHJlc3Npb24gYm9keSBwcm9wZXJ0eSBhY2Nlc3Nv ciIpOworKwkJfQorKwkgIH0KKyAJfCBTRU1JQ09MT04KKyAJICB7CisgCQkvLyBUT0RPOiBsYmFn CitAQCAtMjMzMSw3ICsyMzYyLDcgQEAgb3BlcmF0b3JfdHlwZQorIG9wZXJhdG9yX2RlY2xhcmF0 b3IKKyAJOiBvcGVyYXRvcl90eXBlIE9QRVJBVE9SIG92ZXJsb2FkYWJsZV9vcGVyYXRvciBPUEVO X1BBUkVOUworIAkgIHsKKy0JCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlw ZS5EZWZhdWx0VmFsdWU7CisrCQl2YWxpZF9wYXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmllclR5 cGUuRGVmYXVsdFZhbHVlIHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJlYWRPbmx5OworIAkJaWYg KChPcGVyYXRvci5PcFR5cGUpICQzID09IE9wZXJhdG9yLk9wVHlwZS5JcykKKyAJCQl2YWxpZF9w YXJhbV9tb2QgfD0gUGFyYW1ldGVyTW9kaWZpZXJUeXBlLk91dDsKKyAJICB9CitAQCAtMjQxOCw3 ICsyNDQ5LDcgQEAgb3ZlcmxvYWRhYmxlX29wZXJhdG9yCisgY29udmVyc2lvbl9vcGVyYXRvcl9k ZWNsYXJhdG9yCisgCTogSU1QTElDSVQgT1BFUkFUT1IgdHlwZSBPUEVOX1BBUkVOUworIAkgIHsK Ky0JCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5EZWZhdWx0VmFsdWU7 CisrCQl2YWxpZF9wYXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmllclR5cGUuRGVmYXVsdFZhbHVl IHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJlYWRPbmx5OworIAkgIH0KKyAJICBvcHRfZm9ybWFs X3BhcmFtZXRlcl9saXN0IENMT1NFX1BBUkVOUworIAkgIHsKK0BAIC0yNDQxLDcgKzI0NzIsNyBA QCBjb252ZXJzaW9uX29wZXJhdG9yX2RlY2xhcmF0b3IKKyAJICB9CisgCXwgRVhQTElDSVQgT1BF UkFUT1IgdHlwZSBPUEVOX1BBUkVOUworIAkgIHsKKy0JCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFt ZXRlck1vZGlmaWVyVHlwZS5EZWZhdWx0VmFsdWU7CisrCQl2YWxpZF9wYXJhbV9tb2QgPSBQYXJh bWV0ZXJNb2RpZmllclR5cGUuRGVmYXVsdFZhbHVlIHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJl YWRPbmx5OworIAkgIH0KKyAJICBvcHRfZm9ybWFsX3BhcmFtZXRlcl9saXN0IENMT1NFX1BBUkVO UworIAkgIHsKK0BAIC0yODUwLDYgKzI4ODEsMTEgQEAgZXZlbnRfYWNjZXNzb3JfYmxvY2sKKyAJ ICB9CisgCXwgYmxvY2sKKyAJfCBleHByZXNzaW9uX2Jsb2NrCisrCSAgeworKwkJaWYgKGxhbmdf dmVyc2lvbiA8IExhbmd1YWdlVmVyc2lvbi5WXzcpIHsKKysJCQlGZWF0dXJlSXNOb3RBdmFpbGFi bGUgKEdldExvY2F0aW9uICgkMSksICJleHByZXNzaW9uIGJvZHkgZXZlbnQgYWNjZXNzb3IiKTsK KysJCX0KKysJICB9CisgCTsKKyAKKyBhdHRyaWJ1dGVzX3dpdGhvdXRfbWVtYmVycworQEAgLTMw MTQsNyArMzA1MCw3IEBAIGRlbGVnYXRlX2RlY2xhcmF0aW9uCisgCSAgcmVmX21lbWJlcl90eXBl IHR5cGVfZGVjbGFyYXRpb25fbmFtZQorIAkgIE9QRU5fUEFSRU5TCisgCSAgeworLQkJdmFsaWRf cGFyYW1fbW9kID0gUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJlZiB8IFBhcmFtZXRlck1vZGlmaWVy VHlwZS5PdXQgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUGFyYW1zIHwgUGFyYW1ldGVyTW9kaWZp ZXJUeXBlLkRlZmF1bHRWYWx1ZTsKKysJCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlm aWVyVHlwZS5SZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0IHwgUGFyYW1ldGVyTW9kaWZp ZXJUeXBlLlBhcmFtcyB8IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5EZWZhdWx0VmFsdWUgfCBQYXJh bWV0ZXJNb2RpZmllclR5cGUuUmVhZE9ubHk7CisgCSAgfQorIAkgIG9wdF9mb3JtYWxfcGFyYW1l dGVyX2xpc3QgQ0xPU0VfUEFSRU5TCisgCSAgeworQEAgLTM5MjcsNyArMzk2MywxNSBAQCBub25f c2ltcGxlX2FyZ3VtZW50CisgCSAgeworIAkJJCQgPSBuZXcgQXJndW1lbnQgKG5ldyBBcmdsaXN0 IChHZXRMb2NhdGlvbiAoJDEpKSk7CisgCQlsYmFnLkFkZExvY2F0aW9uICgkJCwgR2V0TG9jYXRp b24gKCQyKSwgR2V0TG9jYXRpb24gKCQzKSk7CistCSAgfQkgIAorKwkgIH0KKysJfCBJTiB2YXJp YWJsZV9yZWZlcmVuY2UKKysJICB7CisrCQlpZiAobGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJz aW9uLlZfN18yKQorKwkJCUZlYXR1cmVJc05vdEF2YWlsYWJsZSAoR2V0TG9jYXRpb24gKCQxKSwg InJlYWRvbmx5IHJlZmVyZW5jZXMiKTsKKysKKysJCSQkID0gbmV3IEFyZ3VtZW50ICgoRXhwcmVz c2lvbikgJDIsIEFyZ3VtZW50LkFUeXBlLlJlYWRvbmx5KTsKKysJCWxiYWcuQWRkTG9jYXRpb24g KCQkLCBHZXRMb2NhdGlvbiAoJDEpKTsKKysJICB9CisgCTsKKyAKKyBvdXRfdmFyaWFibGVfZGVj bGFyYXRpb24KK0BAIC00NDA4LDcgKzQ0NTIsNyBAQCBvcHRfYW5vbnltb3VzX21ldGhvZF9zaWdu YXR1cmUKKyBhbm9ueW1vdXNfbWV0aG9kX3NpZ25hdHVyZQorIAk6IE9QRU5fUEFSRU5TCisgCSAg eworLQkgIAl2YWxpZF9wYXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUmVmIHwgUGFy YW1ldGVyTW9kaWZpZXJUeXBlLk91dDsKKysJCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1v ZGlmaWVyVHlwZS5SZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0IHwgUGFyYW1ldGVyTW9k aWZpZXJUeXBlLlJlYWRPbmx5OworIAkgIH0KKyAJICBvcHRfZm9ybWFsX3BhcmFtZXRlcl9saXN0 IENMT1NFX1BBUkVOUworIAkgIHsKK0BAIC01MDE0LDM2ICs1MDU4LDQ3IEBAIG51bGxfY29hbGVz Y2luZ19leHByZXNzaW9uCisgCSAgfQorIAk7CisgCisrCisrY29uZGl0aW9uYWxfb3Blcl9leHBy CisrCTogZXhwcmVzc2lvbgorKwl8IHN0YWNrYWxsb2NfZXhwcmVzc2lvbgorKwk7CisrCisgY29u ZGl0aW9uYWxfZXhwcmVzc2lvbgorIAk6IG51bGxfY29hbGVzY2luZ19leHByZXNzaW9uCistCXwg bnVsbF9jb2FsZXNjaW5nX2V4cHJlc3Npb24gSU5URVJSIGV4cHJlc3Npb24gQ09MT04gZXhwcmVz c2lvbgorKwl8IG51bGxfY29hbGVzY2luZ19leHByZXNzaW9uIElOVEVSUiBjb25kaXRpb25hbF9v cGVyX2V4cHIgQ09MT04gY29uZGl0aW9uYWxfb3Blcl9leHByCisgCSAgeworIAkJJCQgPSBuZXcg Q29uZGl0aW9uYWwgKG5ldyBCb29sZWFuRXhwcmVzc2lvbiAoKEV4cHJlc3Npb24pICQxKSwgKEV4 cHJlc3Npb24pICQzLCAoRXhwcmVzc2lvbikgJDUsIEdldExvY2F0aW9uICgkMikpOworIAkJbGJh Zy5BZGRMb2NhdGlvbiAoJCQsIEdldExvY2F0aW9uICgkNCkpOworIAkgIH0KKy0JfCBudWxsX2Nv YWxlc2NpbmdfZXhwcmVzc2lvbiBJTlRFUlIgZXhwcmVzc2lvbiBDT0xPTiBUSFJPVyBwcmVmaXhl ZF91bmFyeV9leHByZXNzaW9uCisrCXwgbnVsbF9jb2FsZXNjaW5nX2V4cHJlc3Npb24gSU5URVJS IGNvbmRpdGlvbmFsX29wZXJfZXhwciBDT0xPTiBUSFJPVyBwcmVmaXhlZF91bmFyeV9leHByZXNz aW9uCisgCSAgeworIAkJaWYgKGxhbmdfdmVyc2lvbiA8IExhbmd1YWdlVmVyc2lvbi5WXzcpCist CQkJRmVhdHVyZUlzTm90QXZhaWxhYmxlIChsZXhlci5Mb2NhdGlvbiwgInRocm93IGV4cHJlc3Np b24iKTsKKysJCQlGZWF0dXJlSXNOb3RBdmFpbGFibGUgKEdldExvY2F0aW9uICgkNSksICJ0aHJv dyBleHByZXNzaW9uIik7CisgCisgCQl2YXIgZXhwciA9IG5ldyBUaHJvd0V4cHJlc3Npb24gKChF eHByZXNzaW9uKSAkNiwgR2V0TG9jYXRpb24gKCQ1KSk7CisgCQkkJCA9IG5ldyBDb25kaXRpb25h bCAobmV3IEJvb2xlYW5FeHByZXNzaW9uICgoRXhwcmVzc2lvbikgJDEpLCAoRXhwcmVzc2lvbikg JDMsIGV4cHIsIEdldExvY2F0aW9uICgkMikpOworIAkJbGJhZy5BZGRMb2NhdGlvbiAoJCQsIEdl dExvY2F0aW9uICgkNCkpOworIAkgIH0KKy0JfCBudWxsX2NvYWxlc2NpbmdfZXhwcmVzc2lvbiBJ TlRFUlIgZXhwcmVzc2lvbiBlcnJvcgorKwl8IG51bGxfY29hbGVzY2luZ19leHByZXNzaW9uIElO VEVSUiByZWZlcmVuY2VfZXhwcmVzc2lvbiBDT0xPTiByZWZlcmVuY2VfZXhwcmVzc2lvbgorKwkg IHsKKysJCSQkID0gbmV3IENvbmRpdGlvbmFsIChuZXcgQm9vbGVhbkV4cHJlc3Npb24gKChFeHBy ZXNzaW9uKSAkMSksIChFeHByZXNzaW9uKSAkMywgKEV4cHJlc3Npb24pICQ1LCBHZXRMb2NhdGlv biAoJDIpKTsKKysJCWxiYWcuQWRkTG9jYXRpb24gKCQkLCBHZXRMb2NhdGlvbiAoJDQpKTsKKysJ ICB9CisrCXwgbnVsbF9jb2FsZXNjaW5nX2V4cHJlc3Npb24gSU5URVJSIGNvbmRpdGlvbmFsX29w ZXJfZXhwciBlcnJvcgorIAkgIHsKKyAJCUVycm9yX1N5bnRheEVycm9yICh5eVRva2VuKTsKKyAK KyAJCSQkID0gbmV3IENvbmRpdGlvbmFsIChuZXcgQm9vbGVhbkV4cHJlc3Npb24gKChFeHByZXNz aW9uKSAkMSksIChFeHByZXNzaW9uKSAkMywgbnVsbCwgR2V0TG9jYXRpb24gKCQyKSk7CisgCSAg fQorLQl8IG51bGxfY29hbGVzY2luZ19leHByZXNzaW9uIElOVEVSUiBleHByZXNzaW9uIENPTE9O IGVycm9yCisrCXwgbnVsbF9jb2FsZXNjaW5nX2V4cHJlc3Npb24gSU5URVJSIGNvbmRpdGlvbmFs X29wZXJfZXhwciBDT0xPTiBlcnJvcgorIAkgIHsKKyAJCUVycm9yX1N5bnRheEVycm9yICh5eVRv a2VuKTsKKyAKKyAJCSQkID0gbmV3IENvbmRpdGlvbmFsIChuZXcgQm9vbGVhbkV4cHJlc3Npb24g KChFeHByZXNzaW9uKSAkMSksIChFeHByZXNzaW9uKSAkMywgbnVsbCwgR2V0TG9jYXRpb24gKCQy KSk7CisgCQlsYmFnLkFkZExvY2F0aW9uICgkJCwgR2V0TG9jYXRpb24gKCQ0KSk7CisgCSAgfQor LQl8IG51bGxfY29hbGVzY2luZ19leHByZXNzaW9uIElOVEVSUiBleHByZXNzaW9uIENPTE9OIENM T1NFX0JSQUNFCisrCXwgbnVsbF9jb2FsZXNjaW5nX2V4cHJlc3Npb24gSU5URVJSIGNvbmRpdGlv bmFsX29wZXJfZXhwciBDT0xPTiBDTE9TRV9CUkFDRQorIAkgIHsKKyAJCUVycm9yX1N5bnRheEVy cm9yIChUb2tlbi5DTE9TRV9CUkFDRSk7CisgCitAQCAtNTMwOCw3ICs1MzYzLDcgQEAgbGFtYmRh X2V4cHJlc3Npb24KKyAJICB9CisgCXwgT1BFTl9QQVJFTlNfTEFNQkRBCisgCSAgeworLQkgIAl2 YWxpZF9wYXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUmVmIHwgUGFyYW1ldGVyTW9k aWZpZXJUeXBlLk91dDsKKysJCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlw ZS5SZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0IHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBl LlJlYWRPbmx5OworIAkgIH0KKyAJICBvcHRfbGFtYmRhX3BhcmFtZXRlcl9saXN0IENMT1NFX1BB UkVOUyBBUlJPVyAKKyAJICB7CitAQCAtNTMyMiw3ICs1Mzc3LDcgQEAgbGFtYmRhX2V4cHJlc3Np b24KKyAJICB9CisgCXwgQVNZTkMgT1BFTl9QQVJFTlNfTEFNQkRBCisgCSAgeworLQkgIAl2YWxp ZF9wYXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUmVmIHwgUGFyYW1ldGVyTW9kaWZp ZXJUeXBlLk91dDsJICAKKysJCXZhbGlkX3BhcmFtX21vZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlw ZS5SZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0IHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBl LlJlYWRPbmx5OworIAkgIH0KKyAJICBvcHRfbGFtYmRhX3BhcmFtZXRlcl9saXN0IENMT1NFX1BB UkVOUyBBUlJPVyAKKyAJICB7CitAQCAtNTUyMiwxMCArNTU3NywxNyBAQCBtb2RpZmllcnMKKyAJ CWlmICgobTEgJiBtMikgIT0gMCkgeworIAkJCXJlcG9ydC5FcnJvciAoMTAwNCwgbGV4ZXIuTG9j YXRpb24gLSBNb2RpZmllcnNFeHRlbnNpb25zLk5hbWUgKG0yKS5MZW5ndGgsCisgCQkJCSJEdXBs aWNhdGUgYHswfScgbW9kaWZpZXIiLCBNb2RpZmllcnNFeHRlbnNpb25zLk5hbWUgKG0yKSk7Cist CQl9IGVsc2UgaWYgKChtMiAmIE1vZGlmaWVycy5BY2Nlc3NpYmlsaXR5TWFzaykgIT0gMCAmJiAo bTEgJiBNb2RpZmllcnMuQWNjZXNzaWJpbGl0eU1hc2spICE9IDAgJiYKKy0JCQkoKG0yIHwgbTEg JiBNb2RpZmllcnMuQWNjZXNzaWJpbGl0eU1hc2spICE9IChNb2RpZmllcnMuUFJPVEVDVEVEIHwg TW9kaWZpZXJzLklOVEVSTkFMKSkpIHsKKy0JCQlyZXBvcnQuRXJyb3IgKDEwNywgbGV4ZXIuTG9j YXRpb24gLSBNb2RpZmllcnNFeHRlbnNpb25zLk5hbWUgKG0yKS5MZW5ndGgsCistCQkJCSJNb3Jl IHRoYW4gb25lIHByb3RlY3Rpb24gbW9kaWZpZXIgc3BlY2lmaWVkIik7CisrCQl9IGVsc2UgaWYg KChtMiAmIE1vZGlmaWVycy5BY2Nlc3NpYmlsaXR5TWFzaykgIT0gMCAmJiAobTEgJiBNb2RpZmll cnMuQWNjZXNzaWJpbGl0eU1hc2spICE9IDApIHsKKysJCQl2YXIgYWNjZXNzaWJpbGl0eSA9ICht MiB8IG0xICYgTW9kaWZpZXJzLkFjY2Vzc2liaWxpdHlNYXNrKTsKKysKKysJCQlpZiAoYWNjZXNz aWJpbGl0eSA9PSAoTW9kaWZpZXJzLlBSSVZBVEUgfCBNb2RpZmllcnMuUFJPVEVDVEVEKSkgewor KwkJCQlpZiAobGFuZ192ZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZfN18yKSB7CisrCQkJCQlG ZWF0dXJlSXNOb3RBdmFpbGFibGUgKGxleGVyLkxvY2F0aW9uLCAicHJpdmF0ZSBwcm90ZWN0ZWQi KTsKKysJCQkJfQorKwkJCX0gZWxzZSBpZiAoYWNjZXNzaWJpbGl0eSAhPSAoTW9kaWZpZXJzLlBS T1RFQ1RFRCB8IE1vZGlmaWVycy5JTlRFUk5BTCkpIHsKKysJCQkJcmVwb3J0LkVycm9yICgxMDcs IGxleGVyLkxvY2F0aW9uIC0gTW9kaWZpZXJzRXh0ZW5zaW9ucy5OYW1lIChtMikuTGVuZ3RoLAor KwkJCQkJIk1vcmUgdGhhbiBvbmUgcHJvdGVjdGlvbiBtb2RpZmllciBzcGVjaWZpZWQiKTsKKysJ CQl9CisgCQl9CisgCQkKKyAJCSQkID0gbTEgfCBtMjsKK0BAIC02MjIzLDExICs2Mjg1LDI4IEBA IGJsb2NrX3ZhcmlhYmxlX2luaXRpYWxpemVyCisgCXwgU1RBQ0tBTExPQyBzaW1wbGVfdHlwZQor IAkgIHsKKyAJCXJlcG9ydC5FcnJvciAoMTU3NSwgR2V0TG9jYXRpb24gKCQxKSwgIkEgc3RhY2th bGxvYyBleHByZXNzaW9uIHJlcXVpcmVzIFtdIGFmdGVyIHR5cGUiKTsKKy0JCSQkID0gbmV3IFN0 YWNrQWxsb2MgKChFeHByZXNzaW9uKSAkMiwgbnVsbCwgR2V0TG9jYXRpb24gKCQxKSk7CQkKKysJ CSQkID0gbmV3IFN0YWNrQWxsb2MgKChFeHByZXNzaW9uKSAkMiwgbnVsbCwgR2V0TG9jYXRpb24g KCQxKSk7CisgCSAgfQorIAl8IHJlZmVyZW5jZV9leHByZXNzaW9uCisgCTsKKyAKKytzdGFja2Fs bG9jX2V4cHJlc3Npb24KKysJOiBTVEFDS0FMTE9DIHNpbXBsZV90eXBlIE9QRU5fQlJBQ0tFVF9F WFBSIGV4cHJlc3Npb24gQ0xPU0VfQlJBQ0tFVAorKwkgIHsKKysJCWlmIChsYW5nX3ZlcnNpb24g PCBMYW5ndWFnZVZlcnNpb24uVl83XzIpIHsKKysJCQlGZWF0dXJlSXNOb3RBdmFpbGFibGUgKEdl dExvY2F0aW9uICgkMSksICJyZWYgc3RydWN0cyIpOworKwkJfQorKworKwkJJCQgPSBuZXcgU3Bh blN0YWNrQWxsb2MgKChFeHByZXNzaW9uKSAkMiwgKEV4cHJlc3Npb24pICQ0LCBHZXRMb2NhdGlv biAoJDEpKTsKKysJCWxiYWcuQWRkTG9jYXRpb24gKCQkLCBHZXRMb2NhdGlvbiAoJDMpLCBHZXRM b2NhdGlvbiAoJDUpKTsKKysJICB9CisrCXwgU1RBQ0tBTExPQyBzaW1wbGVfdHlwZQorKwkgIHsK KysJCXJlcG9ydC5FcnJvciAoMTU3NSwgR2V0TG9jYXRpb24gKCQxKSwgIkEgc3RhY2thbGxvYyBl eHByZXNzaW9uIHJlcXVpcmVzIFtdIGFmdGVyIHR5cGUiKTsKKysJCSQkID0gbmV3IFN0YWNrQWxs b2MgKChFeHByZXNzaW9uKSAkMiwgbnVsbCwgR2V0TG9jYXRpb24gKCQxKSk7CisrCSAgfQorKwk7 CisrCisgcmVmZXJlbmNlX2V4cHJlc3Npb24KKyAJOiBSRUYgZXhwcmVzc2lvbgorIAkgIHsKK0BA IC03Njk5LDcgKzc3NzgsNyBAQCBkb2NfY3JlZgorIAkgIH0KKyAJfCBkb2NfdHlwZV9kZWNsYXJh dGlvbl9uYW1lIERPVCBUSElTIE9QRU5fQlJBQ0tFVAorIAkgIHsKKy0JCXZhbGlkX3BhcmFtX21v ZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5SZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0 OworKwkJdmFsaWRfcGFyYW1fbW9kID0gUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJlZiB8IFBhcmFt ZXRlck1vZGlmaWVyVHlwZS5PdXQgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuUmVhZE9ubHk7Cisg CSAgfQorIAkgIG9wdF9kb2NfcGFyYW1ldGVycyBDTE9TRV9CUkFDS0VUCisgCSAgeworQEAgLTc3 NDMsNyArNzgyMiw3IEBAIG9wdF9kb2NfbWV0aG9kX3NpZworIAk6IC8qIGVtcHR5ICovCisgCXwg T1BFTl9QQVJFTlMKKyAJICB7CistCQl2YWxpZF9wYXJhbV9tb2QgPSBQYXJhbWV0ZXJNb2RpZmll clR5cGUuUmVmIHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBlLk91dDsKKysJCXZhbGlkX3BhcmFtX21v ZCA9IFBhcmFtZXRlck1vZGlmaWVyVHlwZS5SZWYgfCBQYXJhbWV0ZXJNb2RpZmllclR5cGUuT3V0 IHwgUGFyYW1ldGVyTW9kaWZpZXJUeXBlLlJlYWRPbmx5OworIAkgIH0KKyAJICBvcHRfZG9jX3Bh cmFtZXRlcnMgQ0xPU0VfUEFSRU5TCisgCSAgeworQEAgLTc5NTEsNiArODAzMCwxNCBAQCBzdGF0 aWMgYm9vbCBJc1VuYXJ5T3BlcmF0b3IgKE9wZXJhdG9yLk9wVHlwZSBvcCkKKyAJcmV0dXJuIGZh bHNlOworIH0KKyAKKytzdGF0aWMgU3RhdGVtZW50IENyZWF0ZUV4cHJlc3Npb25Cb2RpZWRTdGF0 ZW1lbnQgKEV4cHJlc3Npb24gZXhwcikKKyt7CisrCWlmIChleHByIGlzIFRocm93RXhwcmVzc2lv biB0ZSkKKysJCXJldHVybiBuZXcgU3RhdGVtZW50RXhwcmVzc2lvbiAodGUpOworKworKwlyZXR1 cm4gbmV3IENvbnRleHR1YWxSZXR1cm4gKGV4cHIpOworK30KKysKKyB2b2lkIHN5bnRheF9lcnJv ciAoTG9jYXRpb24gbCwgc3RyaW5nIG1zZykKKyB7CisgCXJlcG9ydC5FcnJvciAoMTAwMywgbCwg IlN5bnRheCBlcnJvciwgIiArIG1zZyk7CitAQCAtODQzMCw2ICs4NTE3LDggQEAgc3RhdGljIHN0 cmluZyBHZXRUb2tlbk5hbWUgKGludCB0b2tlbikKKyAJY2FzZSBUb2tlbi5SRUFET05MWToKKyAJ CXJldHVybiAicmVhZG9ubHkiOworIAljYXNlIFRva2VuLlJFRjoKKysJY2FzZSBUb2tlbi5SRUZf U1RSVUNUOgorKwljYXNlIFRva2VuLlJFRl9QQVJUSUFMOgorIAkJcmV0dXJuICJyZWYiOworIAlj YXNlIFRva2VuLlJFVFVSTjoKKyAJCXJldHVybiAicmV0dXJuIjsKK0BAIC04NDQ0LDcgKzg1MzMs NiBAQCBzdGF0aWMgc3RyaW5nIEdldFRva2VuTmFtZSAoaW50IHRva2VuKQorIAljYXNlIFRva2Vu LlNUQVRJQzoKKyAJCXJldHVybiAic3RhdGljIjsKKyAJY2FzZSBUb2tlbi5TVFJVQ1Q6CistCWNh c2UgVG9rZW4uUkVGX1NUUlVDVDoKKyAJCXJldHVybiAic3RydWN0IjsKKyAJY2FzZSBUb2tlbi5T V0lUQ0g6CisgCQlyZXR1cm4gInN3aXRjaCI7CitkaWZmIC0tZ2l0IGEvbWNzL21jcy9jcy10b2tl bml6ZXIuY3MgYi9tY3MvbWNzL2NzLXRva2VuaXplci5jcworaW5kZXggMzdlZGI1YzEyMjQuLmRi NWJhMWYxZjFiIDEwMDY0NAorLS0tIGEvbWNzL21jcy9jcy10b2tlbml6ZXIuY3MKKysrKyBiL21j cy9tY3MvY3MtdG9rZW5pemVyLmNzCitAQCAtODI1LDggKzgyNSw3IEBAIG5hbWVzcGFjZSBNb25v LkNTaGFycAorIAkJCQkJbmV4dF90b2tlbiA9PSBUb2tlbi5DTEFTUyB8fAorIAkJCQkJbmV4dF90 b2tlbiA9PSBUb2tlbi5TVFJVQ1QgfHwKKyAJCQkJCW5leHRfdG9rZW4gPT0gVG9rZW4uSU5URVJG QUNFIHx8CistCQkJCQluZXh0X3Rva2VuID09IFRva2VuLlZPSUQgfHwKKy0JCQkJCW5leHRfdG9r ZW4gPT0gVG9rZW4uUkVGX1NUUlVDVDsKKysJCQkJCW5leHRfdG9rZW4gPT0gVG9rZW4uVk9JRDsK KyAKKyAJCQkJUG9wUG9zaXRpb24gKCk7CisgCitAQCAtOTE2LDE0ICs5MTUsMjAgQEAgbmFtZXNw YWNlIE1vbm8uQ1NoYXJwCisgCisgCQkJCWJyZWFrOworIAkJCWNhc2UgVG9rZW4uUkVGOgorLQkJ CQlpZiAocGVla190b2tlbiAoKSA9PSBUb2tlbi5TVFJVQ1QpIHsKKysJCQkJdmFyIHBwID0gcGVl a190b2tlbiAoKTsKKysJCQkJc3dpdGNoIChwcCkgeworKwkJCQljYXNlIFRva2VuLlNUUlVDVDoK KyAJCQkJCXRva2VuICgpOworIAkJCQkJcmVzID0gVG9rZW4uUkVGX1NUUlVDVDsKKysJCQkJCWJy ZWFrOworKwkJCQljYXNlIFRva2VuLlBBUlRJQUw6CisrCQkJCQl0b2tlbiAoKTsKKysJCQkJCXJl cyA9IFRva2VuLlJFRl9QQVJUSUFMOworKwkJCQkJYnJlYWs7CisgCQkJCX0KKyAJCQkJYnJlYWs7 CisgCQkJfQorIAorLQorIAkJCXJldHVybiByZXM7CisgCQl9CisgCitAQCAtMTIxMiw2ICsxMjE3 LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCisgCQkJCWNhc2UgVG9rZW4uUkVGOgorIAkJ CQljYXNlIFRva2VuLk9VVDoKKysJCQkJY2FzZSBUb2tlbi5JTjoKKyAJCQkJCWNhbl9iZV90eXBl ID0gaXNfdHlwZSA9IGZhbHNlOworIAkJCQkJY29udGludWU7CisgCitAQCAtMTQwNiw2ICsxNDEy LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJY2FzZSBUb2tlbi5JTlRFUlBPTEFURURf U1RSSU5HOgorIAkJCWNhc2UgVG9rZW4uVEhST1c6CisgCQkJY2FzZSBUb2tlbi5ERUZBVUxUX0NP TE9OOgorKwkJCWNhc2UgVG9rZW4uUkVGOgorKwkJCWNhc2UgVG9rZW4uU1RBQ0tBTExPQzoKKyAJ CQkJbmV4dF90b2tlbiA9IFRva2VuLklOVEVSUjsKKyAJCQkJYnJlYWs7CisgCQkJCQorQEAgLTE1 NjcsMjggKzE1NzUsNTMgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQl7CisgCQkJaW50IGQ7 CisgCQkJYm9vbCBzZWVuX2RpZ2l0cyA9IGZhbHNlOworLQkJCQorLQkJCWlmIChjICE9IC0xKXsK KysJCQlib29sIGRpZ2l0X3NlcGFyYXRvciA9IGZhbHNlOworKwkJCWludCBwcmV2ID0gYzsKKysJ CQl2YXIgbG9jID0gTG9jYXRpb247CisrCisrCQkJaWYgKHByZXYgIT0gLTEpeworIAkJCQlpZiAo bnVtYmVyX3BvcyA9PSBNYXhOdW1iZXJMZW5ndGgpCisgCQkJCQlFcnJvcl9OdW1lcmljQ29uc3Rh bnRUb29Mb25nICgpOworLQkJCQludW1iZXJfYnVpbGRlciBbbnVtYmVyX3BvcysrXSA9IChjaGFy KSBjOworKwkJCQludW1iZXJfYnVpbGRlciBbbnVtYmVyX3BvcysrXSA9IChjaGFyKSBwcmV2Owor IAkJCX0KKy0JCQkKKysKKyAJCQkvLworIAkJCS8vIFdlIHVzZSBwZWVrX2NoYXIyLCBiZWNhdXNl IGRlY2ltYWxfZGlnaXRzIG5lZWRzIHRvIGRvIGEgCisgCQkJLy8gMi1jaGFyYWN0ZXIgbG9vay1h aGVhZCAoNS5Ub1N0cmluZyBmb3IgZXhhbXBsZSkuCisgCQkJLy8KKyAJCQl3aGlsZSAoKGQgPSBw ZWVrX2NoYXIyICgpKSAhPSAtMSl7CistCQkJCWlmIChkID49ICcwJyAmJiBkIDw9ICc5Jyl7Cisr CQkJCWlmIChkID49ICcwJyAmJiBkIDw9ICc5JykgeworIAkJCQkJaWYgKG51bWJlcl9wb3MgPT0g TWF4TnVtYmVyTGVuZ3RoKQorIAkJCQkJCUVycm9yX051bWVyaWNDb25zdGFudFRvb0xvbmcgKCk7 CistCQkJCQludW1iZXJfYnVpbGRlciBbbnVtYmVyX3BvcysrXSA9IChjaGFyKSBkOworLQkJCQkJ Z2V0X2NoYXIgKCk7CisrCQkJCQludW1iZXJfYnVpbGRlciBbbnVtYmVyX3BvcysrXSA9IChjaGFy KWQ7CisrCQkJCQlwcmV2ID0gZ2V0X2NoYXIgKCk7CisgCQkJCQlzZWVuX2RpZ2l0cyA9IHRydWU7 CistCQkJCX0gZWxzZQorLQkJCQkJYnJlYWs7CisrCQkJCQljb250aW51ZTsKKysJCQkJfSBlbHNl IGlmIChkID09ICdfJykgeworKwkJCQkJaWYgKCFkaWdpdF9zZXBhcmF0b3IpIHsKKysJCQkJCQlp ZiAoY29udGV4dC5TZXR0aW5ncy5WZXJzaW9uIDwgTGFuZ3VhZ2VWZXJzaW9uLlZfNykKKysJCQkJ CQkJUmVwb3J0LkZlYXR1cmVJc05vdEF2YWlsYWJsZSAoY29udGV4dCwgTG9jYXRpb24sICJkaWdp dCBzZXBhcmF0b3JzIik7CisrCisrCQkJCQkJZGlnaXRfc2VwYXJhdG9yID0gdHJ1ZTsKKysJCQkJ CX0KKysKKysJCQkJCWlmIChwcmV2ID09ICcuJykKKysJCQkJCQlicmVhazsKKysKKysJCQkJCWlm IChwcmV2ID09ICdlJyB8fCBwcmV2ID09ICdFJykKKysJCQkJCQlFcnJvcl9JbnZhbGlkTnVtYmVy ICgpOworKworKwkJCQkJcHJldiA9IGdldF9jaGFyKCk7CisrCQkJCQljb250aW51ZTsKKysJCQkJ fQorKworKwkJCQlicmVhazsKKyAJCQl9CisgCQkJCisrCQkJaWYgKHByZXYgPT0gJ18nKSB7Cisr CQkJCUVycm9yX0ludmFsaWROdW1iZXIgKCk7CisrCQkJfQorKworIAkJCXJldHVybiBzZWVuX2Rp Z2l0czsKKyAJCX0KKyAKK0BAIC0xNzE2LDkgKzE3NDksOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hh cnAKKyAJCQl9IGNhdGNoIChPdmVyZmxvd0V4Y2VwdGlvbikgeworIAkJCQlFcnJvcl9OdW1lcmlj Q29uc3RhbnRUb29Mb25nICgpOworIAkJCQlyZXR1cm4gbmV3IEludExpdGVyYWwgKGNvbnRleHQu QnVpbHRpblR5cGVzLCAwLCBsb2MpOworLQkJCX0KKy0JCQljYXRjaCAoRm9ybWF0RXhjZXB0aW9u KSB7CistCQkJCVJlcG9ydC5FcnJvciAoMTAxMywgTG9jYXRpb24sICJJbnZhbGlkIG51bWJlciIp OworKwkJCX0gY2F0Y2ggKEZvcm1hdEV4Y2VwdGlvbikgeworKwkJCQlFcnJvcl9JbnZhbGlkTnVt YmVyICgpOworIAkJCQlyZXR1cm4gbmV3IEludExpdGVyYWwgKGNvbnRleHQuQnVpbHRpblR5cGVz LCAwLCBsb2MpOworIAkJCX0KKyAJCX0KK0BAIC0xNzU3LDE0ICsxNzg5LDQxIEBAIG5hbWVzcGFj ZSBNb25vLkNTaGFycAorIAkJeworIAkJCWludCBkOworIAkJCXVsb25nIHVsOworLQkJCQorLQkJ CWdldF9jaGFyICgpOworKwkJCWJvb2wgZGlnaXRfc2VwYXJhdG9yID0gZmFsc2U7CisrCQkJaW50 IHByZXYgPSBnZXRfY2hhciAoKTsKKysKKyAJCQl3aGlsZSAoKGQgPSBwZWVrX2NoYXIgKCkpICE9 IC0xKXsKKyAJCQkJaWYgKGlzX2hleCAoZCkpeworIAkJCQkJbnVtYmVyX2J1aWxkZXIgW251bWJl cl9wb3MrK10gPSAoY2hhcikgZDsKKyAJCQkJCWdldF9jaGFyICgpOworLQkJCQl9IGVsc2UKKy0J CQkJCWJyZWFrOworKworKwkJCQkJcHJldiA9IGQ7CisrCQkJCQljb250aW51ZTsKKysJCQkJfQor KworKwkJCQlpZiAoZCA9PSAnXycpIHsKKysJCQkJCWlmIChwcmV2ID09ICd4JyB8fCBwcmV2ID09 ICdYJykKKysJCQkJCQlFcnJvcl9JbnZhbGlkTnVtYmVyICgpOworKworKwkJCQkJZ2V0X2NoYXIg KCk7CisrCisrCQkJCQlpZiAoIWRpZ2l0X3NlcGFyYXRvcikgeworKwkJCQkJCWlmIChjb250ZXh0 LlNldHRpbmdzLlZlcnNpb24gPCBMYW5ndWFnZVZlcnNpb24uVl83KQorKwkJCQkJCQlSZXBvcnQu RmVhdHVyZUlzTm90QXZhaWxhYmxlIChjb250ZXh0LCBMb2NhdGlvbiwgImRpZ2l0IHNlcGFyYXRv cnMiKTsKKysKKysJCQkJCQlkaWdpdF9zZXBhcmF0b3IgPSB0cnVlOworKwkJCQkJfQorKworKwkJ CQkJcHJldiA9IGQ7CisrCQkJCQljb250aW51ZTsKKysJCQkJfQorKworKwkJCQlicmVhazsKKysJ CQl9CisrCisrCQkJaWYgKG51bWJlcl9wb3MgPT0gMCB8fCBwcmV2ID09ICdfJykgeworKwkJCQlF cnJvcl9JbnZhbGlkTnVtYmVyICgpOworKwkJCQlyZXR1cm4gbmV3IEludExpdGVyYWwgKGNvbnRl eHQuQnVpbHRpblR5cGVzLCAwLCBsb2MpOworIAkJCX0KKyAJCQkKKyAJCQlzdHJpbmcgcyA9IG5l dyBTdHJpbmcgKG51bWJlcl9idWlsZGVyLCAwLCBudW1iZXJfcG9zKTsKK0BAIC0xNzc5LDEzICsx ODM4LDY1IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCX0gY2F0Y2ggKE92ZXJmbG93RXhj ZXB0aW9uKXsKKyAJCQkJRXJyb3JfTnVtZXJpY0NvbnN0YW50VG9vTG9uZyAoKTsKKyAJCQkJcmV0 dXJuIG5ldyBJbnRMaXRlcmFsIChjb250ZXh0LkJ1aWx0aW5UeXBlcywgMCwgbG9jKTsKKy0JCQl9 CistCQkJY2F0Y2ggKEZvcm1hdEV4Y2VwdGlvbikgeworLQkJCQlSZXBvcnQuRXJyb3IgKDEwMTMs IExvY2F0aW9uLCAiSW52YWxpZCBudW1iZXIiKTsKKysJCQl9IGNhdGNoIChGb3JtYXRFeGNlcHRp b24pIHsKKysJCQkJRXJyb3JfSW52YWxpZE51bWJlciAoKTsKKyAJCQkJcmV0dXJuIG5ldyBJbnRM aXRlcmFsIChjb250ZXh0LkJ1aWx0aW5UeXBlcywgMCwgbG9jKTsKKyAJCQl9CisgCQl9CisgCisr CQlJTGl0ZXJhbENvbnN0YW50IGhhbmRsZV9iaW5hcnkgKExvY2F0aW9uIGxvYykKKysJCXsKKysJ CQlpbnQgZDsKKysJCQl1bG9uZyB1bCA9IDA7CisrCQkJYm9vbCBkaWdpdF9zZXBhcmF0b3IgPSBm YWxzZTsKKysJCQlpbnQgZGlnaXRzID0gMDsKKysJCQlpbnQgcHJldiA9IGdldF9jaGFyICgpOwor KworKwkJCXdoaWxlICgoZCA9IHBlZWtfY2hhciAoKSkgIT0gLTEpeworKworKwkJCQlpZiAoZCA9 PSAnMCcgfHwgZCA9PSAnMScpIHsKKysJCQkJCXVsID0gKHVsIDw8IDEpOworKwkJCQkJZGlnaXRz Kys7CisrCQkJCQlpZiAoZCA9PSAnMScpCisrCQkJCQkJdWwgfD0gMTsKKysJCQkJCWdldF9jaGFy ICgpOworKwkJCQkJaWYgKGRpZ2l0cyA+IDY0KSB7CisrCQkJCQkJRXJyb3JfTnVtZXJpY0NvbnN0 YW50VG9vTG9uZyAoKTsKKysJCQkJCQlyZXR1cm4gbmV3IEludExpdGVyYWwgKGNvbnRleHQuQnVp bHRpblR5cGVzLCAwLCBsb2MpOworKwkJCQkJfQorKworKwkJCQkJcHJldiA9IGQ7CisrCQkJCQlj b250aW51ZTsKKysJCQkJfQorKworKwkJCQlpZiAoZCA9PSAnXycpIHsKKysJCQkJCWlmIChwcmV2 ID09ICdiJyB8fCBwcmV2ID09ICdCJykKKysJCQkJCQlFcnJvcl9JbnZhbGlkTnVtYmVyICgpOwor KworKwkJCQkJZ2V0X2NoYXIgKCk7CisrCisrCQkJCQlpZiAoIWRpZ2l0X3NlcGFyYXRvcikgewor KwkJCQkJCWlmIChjb250ZXh0LlNldHRpbmdzLlZlcnNpb24gPCBMYW5ndWFnZVZlcnNpb24uVl83 KQorKwkJCQkJCQlSZXBvcnQuRmVhdHVyZUlzTm90QXZhaWxhYmxlIChjb250ZXh0LCBMb2NhdGlv biwgImRpZ2l0IHNlcGFyYXRvcnMiKTsKKysJCQkJCQkKKysJCQkJCQlkaWdpdF9zZXBhcmF0b3Ig PSB0cnVlOworKwkJCQkJfQorKworKwkJCQkJcHJldiA9IGQ7CisrCQkJCQljb250aW51ZTsKKysJ CQkJfQorKwkJCQkgCisrCQkJCWJyZWFrOworKwkJCX0KKysKKysJCQlpZiAoZGlnaXRzID09IDAg fHwgcHJldiA9PSAnXycpIHsKKysJCQkJRXJyb3JfSW52YWxpZE51bWJlciAoKTsKKysJCQkJcmV0 dXJuIG5ldyBJbnRMaXRlcmFsIChjb250ZXh0LkJ1aWx0aW5UeXBlcywgMCwgbG9jKTsKKysJCQl9 CisrCisrCQkJcmV0dXJuIGludGVnZXJfdHlwZV9zdWZmaXggKHVsLCBwZWVrX2NoYXIgKCksIGxv Yyk7CisrCQl9CisrCQkKKyAJCS8vCisgCQkvLyBJbnZva2VkIGlmIHdlIGtub3cgd2UgaGF2ZSAu ZGlnaXRzIG9yIGRpZ2l0cworIAkJLy8KK0BAIC0xODE3LDcgKzE5MjgsMjAgQEAgbmFtZXNwYWNl IE1vbm8uQ1NoYXJwCisgCisgCQkJCQkJcmV0dXJuIFRva2VuLkxJVEVSQUw7CisgCQkJCQl9Cisr CisrCQkJCQlpZiAocGVlayA9PSAnYicgfHwgcGVlayA9PSAnQicpeworKwkJCQkJCWlmIChjb250 ZXh0LlNldHRpbmdzLlZlcnNpb24gPCBMYW5ndWFnZVZlcnNpb24uVl83KQorKwkJCQkJCQlSZXBv cnQuRmVhdHVyZUlzTm90QXZhaWxhYmxlIChjb250ZXh0LCBMb2NhdGlvbiwgImJpbmFyeSBsaXRl cmFscyIpOworKworKwkJCQkJCXZhbCA9IHJlcyA9IGhhbmRsZV9iaW5hcnkgKGxvYyk7CisrI2lm IEZVTExfQVNUCisrCQkJCQkJcmVzLlBhcnNlZFZhbHVlID0gcmVhZGVyLlJlYWRDaGFycyAocmVh ZF9zdGFydCwgcmVhZGVyLlBvc2l0aW9uIC0gMSk7CisrI2VuZGlmCisrCisrCQkJCQkJcmV0dXJu IFRva2VuLkxJVEVSQUw7CisrCQkJCQl9CisgCQkJCX0KKysKKyAJCQkJZGVjaW1hbF9kaWdpdHMg KGMpOworIAkJCQljID0gcGVla19jaGFyICgpOworIAkJCX0KK0BAIC0xODY5LDcgKzE5OTMsNyBA QCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJCQlFcnJvcl9OdW1lcmljQ29uc3RhbnRUb29M b25nICgpOworIAkJCQkJbnVtYmVyX2J1aWxkZXIgW251bWJlcl9wb3MrK10gPSAnKyc7CisgCQkJ CX0KKy0JCQkJCQorKworIAkJCQlkZWNpbWFsX2RpZ2l0cyAoYyk7CisgCQkJCWMgPSBwZWVrX2No YXIgKCk7CisgCQkJfQorQEAgLTI5NDQsNiArMzA2OCwxMSBAQCBuYW1lc3BhY2UgTW9uby5DU2hh cnAKKyAJCXsKKyAJCQlSZXBvcnQuRXJyb3IgKDEwMjEsIExvY2F0aW9uLCAiSW50ZWdyYWwgY29u c3RhbnQgaXMgdG9vIGxhcmdlIik7CQkJCisgCQl9CisrCisrCQl2b2lkIEVycm9yX0ludmFsaWRO dW1iZXIgKCkKKysJCXsKKysJCQlSZXBvcnQuRXJyb3IgKDEwMTMsIExvY2F0aW9uLCAiSW52YWxp ZCBudW1iZXIiKTsKKysJCX0KKyAJCQorIAkJdm9pZCBFcnJvcl9JbnZhbGlkRGlyZWN0aXZlICgp CisgCQl7CitkaWZmIC0tZ2l0IGEvbWNzL21jcy9lY29yZS5jcyBiL21jcy9tY3MvZWNvcmUuY3MK K2luZGV4IDIwZWU5ZTczYjE5Li5kNTkyNmJmNGQxZiAxMDA2NDQKKy0tLSBhL21jcy9tY3MvZWNv cmUuY3MKKysrKyBiL21jcy9tY3MvZWNvcmUuY3MKK0BAIC0yNDEsNyArMjQxLDcgQEAgbmFtZXNw YWNlIE1vbm8uQ1NoYXJwIHsKKyAKKyAJCXByb3RlY3RlZCB2b2lkIENoZWNrRXhwcmVzc2lvblZh cmlhYmxlIChSZXNvbHZlQ29udGV4dCByYykKKyAJCXsKKy0JCQlpZiAocmMuSGFzQW55IChSZXNv bHZlQ29udGV4dC5PcHRpb25zLkJhc2VJbml0aWFsaXplciB8IFJlc29sdmVDb250ZXh0Lk9wdGlv bnMuRmllbGRJbml0aWFsaXplclNjb3BlKSkgeworKwkJCWlmIChyYy5IYXNBbnkgKFJlc29sdmVD b250ZXh0Lk9wdGlvbnMuQmFzZUluaXRpYWxpemVyIHwgUmVzb2x2ZUNvbnRleHQuT3B0aW9ucy5G aWVsZEluaXRpYWxpemVyU2NvcGUpICYmIHJjLkN1cnJlbnRBbm9ueW1vdXNNZXRob2QgPT0gbnVs bCkgeworIAkJCQlyYy5SZXBvcnQuRXJyb3IgKDgyMDAsIGxvYywgIk91dCB2YXJpYWJsZSBhbmQg cGF0dGVybiB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIHdpdGhpbiBjb25z dHJ1Y3RvciBpbml0aWFsaXplcnMsIGZpZWxkIGluaXRpYWxpemVycywgb3IgcHJvcGVydHkgaW5p dGlhbGl6ZXJzIik7CisgCQkJfSBlbHNlIGlmIChyYy5IYXNTZXQgKFJlc29sdmVDb250ZXh0Lk9w dGlvbnMuUXVlcnlDbGF1c2VTY29wZSkpIHsKKyAJCQkJcmMuUmVwb3J0LkVycm9yICg4MjAxLCBs b2MsICJPdXQgdmFyaWFibGUgYW5kIHBhdHRlcm4gdmFyaWFibGUgZGVjbGFyYXRpb25zIGFyZSBu b3QgYWxsb3dlZCB3aXRoaW4gYSBxdWVyeSBjbGF1c2UiKTsKK2RpZmYgLS1naXQgYS9tY3MvbWNz L2V4cHJlc3Npb24uY3MgYi9tY3MvbWNzL2V4cHJlc3Npb24uY3MKK2luZGV4IDUxOGNjYzhlZjQz Li44N2RiMTRhMGNlNyAxMDA2NDQKKy0tLSBhL21jcy9tY3MvZXhwcmVzc2lvbi5jcworKysrIGIv bWNzL21jcy9leHByZXNzaW9uLmNzCitAQCAtOTIwLDcgKzkyMCw3IEBAIG5hbWVzcGFjZSBNb25v LkNTaGFycAorIAorIAkJcHVibGljIG92ZXJyaWRlIGJvb2wgQ29udGFpbnNFbWl0V2l0aEF3YWl0 ICgpCisgCQl7CistCQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uICgpOworKwkJ CXJldHVybiBmYWxzZTsKKyAJCX0KKyAKKyAJCXB1YmxpYyBvdmVycmlkZSBFeHByZXNzaW9uIENy ZWF0ZUV4cHJlc3Npb25UcmVlIChSZXNvbHZlQ29udGV4dCBlYykKK0BAIC0yMDUxLDcgKzIwNTEs MTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCisgCQkJCQkJaWYgKGQuQnVpbHRpblR5cGUg PT0gQnVpbHRpblR5cGVTcGVjLlR5cGUuRHluYW1pYykKKyAJCQkJCQkJcmV0dXJuIHRoaXM7Cist CQkJCQkJCisrCisrCQkJCQkJLy8gVE9ETzogUmVxdWlyZXMgY3VzdG9tIG9wdGltaXplZCB2ZXJz aW9uIHdpdGggdmFyaWFibGUgc3RvcmUKKysJCQkJCQlpZiAoVmFyaWFibGUgIT0gbnVsbCkKKysJ CQkJCQkJcmV0dXJuIHRoaXM7CisrCisgCQkJCQkJLy8KKyAJCQkJCQkvLyBUdXJuIGlzIGNoZWNr IGludG8gc2ltcGxlIG51bGwgY2hlY2sgZm9yIGltcGxpY2l0bHkgY29udmVydGlibGUgcmVmZXJl bmNlIHR5cGVzCisgCQkJCQkJLy8KK0BAIC0yNzU3LDYgKzI3NjEsMTIgQEAgbmFtZXNwYWNlIE1v bm8uQ1NoYXJwCisgCQkJfQorIAkJfQorIAorKwkJcHVibGljIG92ZXJyaWRlIGJvb2wgSXNOdWxs IHsKKysJCQlnZXQgeworKwkJCQlyZXR1cm4gVHlwZVNwZWMuSXNSZWZlcmVuY2VUeXBlICh0eXBl KTsKKysJCQl9CisrCQl9CisrCisgCQlwdWJsaWMgb3ZlcnJpZGUgYm9vbCBDb250YWluc0VtaXRX aXRoQXdhaXQgKCkKKyAJCXsKKyAJCQlyZXR1cm4gZmFsc2U7CitAQCAtNTY2OSw2ICs1Njc5LDEy IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCQlDb252Q2FzdC5FbWl0IChlYywgZW51bV9j b252ZXJzaW9uKTsKKyAJCX0KKyAKKysJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEVtaXRQcmVwYXJl IChFbWl0Q29udGV4dCBlYykKKysJCXsKKysJCQlMZWZ0LkVtaXRQcmVwYXJlIChlYyk7CisrCQkJ UmlnaHQuRW1pdFByZXBhcmUgKGVjKTsKKysJCX0KKysKKyAJCXB1YmxpYyBvdmVycmlkZSB2b2lk IEVtaXRTaWRlRWZmZWN0IChFbWl0Q29udGV4dCBlYykKKyAJCXsKKyAJCQlpZiAoKG9wZXIgJiBP cGVyYXRvci5Mb2dpY2FsTWFzaykgIT0gMCB8fAorQEAgLTYzODUsNyArNjQwMSw3IEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycAorIAkJCQkJCQl9CisgCQkJCQkJfQorIAorLQkJCQkJCWlmIChjb252 X2ZhbHNlX2V4cHIgIT0gbnVsbCkgeworKwkJCQkJCWlmIChjb252X2ZhbHNlX2V4cHIgIT0gbnVs bCAmJiBmYWxzZV90eXBlICE9IEludGVybmFsVHlwZS5FcnJvclR5cGUgJiYgdHJ1ZV90eXBlICE9 IEludGVybmFsVHlwZS5FcnJvclR5cGUpIHsKKyAJCQkJCQkJZWMuUmVwb3J0LkVycm9yICgxNzIs IHRydWVfZXhwci5Mb2NhdGlvbiwKKyAJCQkJCQkJCSJUeXBlIG9mIGNvbmRpdGlvbmFsIGV4cHJl c3Npb24gY2Fubm90IGJlIGRldGVybWluZWQgYXMgYHswfScgYW5kIGB7MX0nIGNvbnZlcnQgaW1w bGljaXRseSB0byBlYWNoIG90aGVyIiwKKyAJCQkJCQkJCQl0cnVlX3R5cGUuR2V0U2lnbmF0dXJl Rm9yRXJyb3IgKCksIGZhbHNlX3R5cGUuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCkpOworQEAgLTYz OTgsNyArNjQxNCw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCQl9IGVsc2UgaWYgKChj b252ID0gQ29udmVydC5JbXBsaWNpdENvbnZlcnNpb24gKGVjLCBmYWxzZV9leHByLCB0cnVlX3R5 cGUsIGxvYykpICE9IG51bGwpIHsKKyAJCQkJCWZhbHNlX2V4cHIgPSBjb252OworIAkJCQl9IGVs c2UgeworLQkJCQkJaWYgKGZhbHNlX3R5cGUgIT0gSW50ZXJuYWxUeXBlLkVycm9yVHlwZSkgewor KwkJCQkJaWYgKGZhbHNlX3R5cGUgIT0gSW50ZXJuYWxUeXBlLkVycm9yVHlwZSAmJiB0cnVlX3R5 cGUgIT0gSW50ZXJuYWxUeXBlLkVycm9yVHlwZSkgeworIAkJCQkJCWVjLlJlcG9ydC5FcnJvciAo MTczLCB0cnVlX2V4cHIuTG9jYXRpb24sCisgCQkJCQkJCSJUeXBlIG9mIGNvbmRpdGlvbmFsIGV4 cHJlc3Npb24gY2Fubm90IGJlIGRldGVybWluZWQgYmVjYXVzZSB0aGVyZSBpcyBubyBpbXBsaWNp dCBjb252ZXJzaW9uIGJldHdlZW4gYHswfScgYW5kIGB7MX0nIiwKKyAJCQkJCQkJdHJ1ZV90eXBl LkdldFNpZ25hdHVyZUZvckVycm9yICgpLCBmYWxzZV90eXBlLkdldFNpZ25hdHVyZUZvckVycm9y ICgpKTsKK0BAIC02NDI3LDYgKzY0NDMsMzAgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJ cmV0dXJuIHRoaXM7CisgCQl9CisgCisrCQlwdWJsaWMgb3ZlcnJpZGUgRXhwcmVzc2lvbiBEb1Jl c29sdmVMVmFsdWUgKFJlc29sdmVDb250ZXh0IHJjLCBFeHByZXNzaW9uIHJpZ2h0X3NpZGUpCisr CQl7CisrCQkJZXhwciA9IGV4cHIuUmVzb2x2ZSAocmMpOworKwkJCXRydWVfZXhwciA9IHRydWVf ZXhwci5SZXNvbHZlIChyYyk7CisrCQkJZmFsc2VfZXhwciA9IGZhbHNlX2V4cHIuUmVzb2x2ZSAo cmMpOworKworKwkJCWlmICh0cnVlX2V4cHIgPT0gbnVsbCB8fCBmYWxzZV9leHByID09IG51bGwg fHwgZXhwciA9PSBudWxsKQorKwkJCQlyZXR1cm4gbnVsbDsKKysJCQkKKysJCQlpZiAoISh0cnVl X2V4cHIgaXMgUmVmZXJlbmNlRXhwcmVzc2lvbiAmJiBmYWxzZV9leHByIGlzIFJlZmVyZW5jZUV4 cHJlc3Npb24pKSB7CisrCQkJCXJjLlJlcG9ydC5FcnJvciAoODMyNiwgZXhwci5Mb2NhdGlvbiwg IkJvdGggcmVmIGNvbmRpdGlvbmFsIG9wZXJhdG9ycyBtdXN0IGJlIHJlZiB2YWx1ZXMiKTsKKysJ CQkJcmV0dXJuIG51bGw7CisrCQkJfQorKworKwkJCWlmICghVHlwZVNwZWNDb21wYXJlci5Jc0Vx dWFsICh0cnVlX2V4cHIuVHlwZSwgZmFsc2VfZXhwci5UeXBlKSkgeworKwkJCQlyYy5SZXBvcnQu RXJyb3IgKDgzMjcsIHRydWVfZXhwci5Mb2NhdGlvbiwgIlRoZSByZWYgY29uZGl0aW9uYWwgZXhw cmVzc2lvbiB0eXBlcyBgezB9JyBhbmQgYHsxfScgaGF2ZSB0byBtYXRjaCIsCisrCQkJCSAgICAg ICAgICAgICAgICAgdHJ1ZV9leHByLlR5cGUuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCksIGZhbHNl X2V4cHIuVHlwZS5HZXRTaWduYXR1cmVGb3JFcnJvciAoKSk7IAorKwkJCX0KKysKKysJCQllY2xh c3MgPSBFeHByQ2xhc3MuVmFsdWU7CisrCQkJdHlwZSA9IHRydWVfZXhwci5UeXBlOworKwkJCXJl dHVybiB0aGlzOworKwkJfQorKworIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgRW1pdCAoRW1pdENv bnRleHQgZWMpCisgCQl7CisgCQkJTGFiZWwgZmFsc2VfdGFyZ2V0ID0gZWMuRGVmaW5lTGFiZWwg KCk7CitAQCAtNjc3NCw3ICs2ODE0LDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJCQkJ IkNhbm5vdCB1c2UgZml4ZWQgdmFyaWFibGUgYHswfScgaW5zaWRlIGFuIGFub255bW91cyBtZXRo b2QsIGxhbWJkYSBleHByZXNzaW9uIG9yIHF1ZXJ5IGV4cHJlc3Npb24iLAorIAkJCQkJCUdldFNp Z25hdHVyZUZvckVycm9yICgpKTsKKyAJCQkJfSBlbHNlIGlmIChsb2NhbF9pbmZvLklzQnlSZWYg fHwgbG9jYWxfaW5mby5UeXBlLklzQnlSZWZMaWtlKSB7CistCQkJCQlpZiAoZWMuQ3VycmVudEFu b255bW91c01ldGhvZCBpcyBTdGF0ZU1hY2hpbmVJbml0aWFsaXplcikgeworKwkJCQkJaWYgKGxv Y2FsX2luZm8uVHlwZS5Jc1NwZWNpYWxSdW50aW1lVHlwZSB8fCBlYy5DdXJyZW50QW5vbnltb3Vz TWV0aG9kIGlzIFN0YXRlTWFjaGluZUluaXRpYWxpemVyKSB7CisgCQkJCQkJLy8gSXQncyByZXBv cnRlZCBsYXRlciBhcyA0MDEyLzQwMTMKKyAJCQkJCX0gZWxzZSB7CisgCQkJCQkJZWMuUmVwb3J0 LkVycm9yICg4MTc1LCBsb2MsCitAQCAtMTE4NzcsMTIgKzExOTE3LDE3IEBAIG5hbWVzcGFjZSBN b25vLkNTaGFycAorIAkJCWlmICghVHlwZU1hbmFnZXIuVmVyaWZ5VW5tYW5hZ2VkIChlYy5Nb2R1 bGUsIG90eXBlLCBsb2MpKQorIAkJCQlyZXR1cm4gbnVsbDsKKyAKKy0JCQl0eXBlID0gUG9pbnRl ckNvbnRhaW5lci5NYWtlVHlwZSAoZWMuTW9kdWxlLCBvdHlwZSk7CisrCQkJUmVzb2x2ZUV4cHJl c3Npb25UeXBlIChlYywgb3R5cGUpOworIAkJCWVjbGFzcyA9IEV4cHJDbGFzcy5WYWx1ZTsKKyAK KyAJCQlyZXR1cm4gdGhpczsKKyAJCX0KKyAKKysJCXByb3RlY3RlZCB2aXJ0dWFsIHZvaWQgUmVz b2x2ZUV4cHJlc3Npb25UeXBlIChSZXNvbHZlQ29udGV4dCByYywgVHlwZVNwZWMgZWxlbWVudFR5 cGUpCisrCQl7CisrCQkJdHlwZSA9IFBvaW50ZXJDb250YWluZXIuTWFrZVR5cGUgKHJjLk1vZHVs ZSwgZWxlbWVudFR5cGUpOworKwkJfQorKworIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgRW1pdCAo RW1pdENvbnRleHQgZWMpCisgCQl7CisgCQkJaW50IHNpemUgPSBCdWlsdGluVHlwZVNwZWMuR2V0 U2l6ZSAob3R5cGUpOworQEAgLTExOTMxLDE0ICsxMTk3NiwzNiBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAKKyAJCXB1YmxpYyBib29sIFJlc29sdmVTcGFuQ29udmVyc2lvbiAoUmVzb2x2ZUNvbnRl eHQgcmMsIFR5cGVTcGVjIHNwYW5UeXBlKQorIAkJeworIAkJCWN0b3IgPSBNZW1iZXJDYWNoZS5G aW5kTWVtYmVyIChzcGFuVHlwZSwgTWVtYmVyRmlsdGVyLkNvbnN0cnVjdG9yIChQYXJhbWV0ZXJz Q29tcGlsZWQuQ3JlYXRlRnVsbHlSZXNvbHZlZCAoUG9pbnRlckNvbnRhaW5lci5NYWtlVHlwZSAo cmMuTW9kdWxlLCByYy5Nb2R1bGUuQ29tcGlsZXIuQnVpbHRpblR5cGVzLlZvaWQpLCByYy5Nb2R1 bGUuQ29tcGlsZXIuQnVpbHRpblR5cGVzLkludCkpLCBCaW5kaW5nUmVzdHJpY3Rpb24uRGVjbGFy ZWRPbmx5KSBhcyBNZXRob2RTcGVjOworLQkJCWlmIChjdG9yID09IG51bGwpCisrCQkJaWYgKGN0 b3IgPT0gbnVsbCkgeworKwkJCQl0aGlzLnR5cGUgPSBJbnRlcm5hbFR5cGUuRXJyb3JUeXBlOwor IAkJCQlyZXR1cm4gZmFsc2U7CisrCQkJfQorIAkJCQorIAkJCXRoaXMudHlwZSA9IHNwYW5UeXBl OworIAkJCXJldHVybiB0cnVlOworIAkJfQorIAl9CisgCisrCWNsYXNzIFNwYW5TdGFja0FsbG9j IDogU3RhY2tBbGxvYworKwl7CisrCQlwdWJsaWMgU3BhblN0YWNrQWxsb2MgKEV4cHJlc3Npb24g dHlwZSwgRXhwcmVzc2lvbiBjb3VudCwgTG9jYXRpb24gbCkKKysJCQk6IGJhc2UgKHR5cGUsIGNv dW50LCBsKQorKwkJeworKwkJfQorKworKwkJcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgUmVzb2x2 ZUV4cHJlc3Npb25UeXBlIChSZXNvbHZlQ29udGV4dCByYywgVHlwZVNwZWMgZWxlbWVudFR5cGUp CisrCQl7CisrCQkJdmFyIHNwYW4gPSByYy5Nb2R1bGUuUHJlZGVmaW5lZFR5cGVzLlNwYW5HZW5l cmljLlJlc29sdmUgKCk7CisrCQkJaWYgKHNwYW4gPT0gbnVsbCkgeworKwkJCQl0eXBlID0gSW50 ZXJuYWxUeXBlLkVycm9yVHlwZTsKKysJCQkJcmV0dXJuOworKwkJCX0KKysKKysJCQl0eXBlID0g c3Bhbi5NYWtlR2VuZXJpY1R5cGUgKHJjLCBuZXcgW10geyBlbGVtZW50VHlwZSB9KTsKKysJCQlS ZXNvbHZlU3BhbkNvbnZlcnNpb24gKHJjLCB0eXBlKTsKKysJCX0KKysJfQorKworIAkvLworIAkv LyBBbiBvYmplY3QgaW5pdGlhbGl6ZXIgZXhwcmVzc2lvbgorIAkvLworQEAgLTEzMDg1LDYgKzEz MTUyLDkgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJaWYgKGV4cHIgaXMgSUFzc2lnbk1l dGhvZCkKKyAJCQkJcmV0dXJuIHRydWU7CisgCisrCQkJaWYgKGV4cHIgaXMgQ29uZGl0aW9uYWwp CisrCQkJCXJldHVybiB0cnVlOworKworIAkJCXZhciBpbnZvY2F0aW9uID0gZXhwciBhcyBJbnZv Y2F0aW9uOworIAkJCWlmIChpbnZvY2F0aW9uPy5UeXBlLktpbmQgPT0gTWVtYmVyS2luZC5CeVJl ZikKKyAJCQkJcmV0dXJuIHRydWU7CitAQCAtMTMyMzIsNiArMTMzMDIsMTAgQEAgbmFtZXNwYWNl IE1vbm8uQ1NoYXJwCisgCQkJdGhpcy5sb2MgPSBsb2M7CisgCQl9CisgCisrCQlwcm90ZWN0ZWQg b3ZlcnJpZGUgdm9pZCBDbG9uZVRvIChDbG9uZUNvbnRleHQgY2xvbmVjdHgsIEV4cHJlc3Npb24g dCkKKysJCXsKKysJCX0KKysKKyAJCXB1YmxpYyBvdmVycmlkZSBFeHByZXNzaW9uIENyZWF0ZUV4 cHJlc3Npb25UcmVlIChSZXNvbHZlQ29udGV4dCBlYykKKyAJCXsKKyAJCQl0aHJvdyBuZXcgTm90 SW1wbGVtZW50ZWRFeGNlcHRpb24gKCk7CitkaWZmIC0tZ2l0IGEvbWNzL21jcy9maWVsZC5jcyBi L21jcy9tY3MvZmllbGQuY3MKK2luZGV4IDg2YmIwMjhkZWZjLi44YzY2NzMyODE0MyAxMDA2NDQK Ky0tLSBhL21jcy9tY3MvZmllbGQuY3MKKysrKyBiL21jcy9tY3MvZmllbGQuY3MKK0BAIC01NDIs NyArNTQyLDcgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJCX0KKyAJCQkpOworIAorLQkJ CWZpeGVkX2J1ZmZlcl90eXBlLlNldEN1c3RvbUF0dHJpYnV0ZSAoKENvbnN0cnVjdG9ySW5mbykg Y3Rvci5HZXRNZXRhSW5mbyAoKSwgZW5jb2Rlci5Ub0FycmF5ICgpKTsKKysJCQlmaXhlZF9idWZm ZXJfdHlwZS5TZXRDdXN0b21BdHRyaWJ1dGUgKChDb25zdHJ1Y3RvckluZm8pIGN0b3IuR2V0TWV0 YUluZm8gKCksIGVuY29kZXIuVG9BcnJheSAob3V0IF8pKTsKKyAjZW5kaWYKKyAJCQkvLworIAkJ CS8vIERvbid0IGVtaXQgRml4ZWRCdWZmZXJBdHRyaWJ1dGUgYXR0cmlidXRlIGZvciBwcml2YXRl IHR5cGVzCitAQCAtNTU5LDcgKzU1OSw4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCWVu Y29kZXIuRW5jb2RlIChidWZmZXJfc2l6ZSk7CisgCQkJZW5jb2Rlci5FbmNvZGVFbXB0eU5hbWVk QXJndW1lbnRzICgpOworIAorLQkJCUZpZWxkQnVpbGRlci5TZXRDdXN0b21BdHRyaWJ1dGUgKChD b25zdHJ1Y3RvckluZm8pIGN0b3IuR2V0TWV0YUluZm8gKCksIGVuY29kZXIuVG9BcnJheSAoKSk7 CisrCQkJRmllbGRCdWlsZGVyLlNldEN1c3RvbUF0dHJpYnV0ZSAoKENvbnN0cnVjdG9ySW5mbykg Y3Rvci5HZXRNZXRhSW5mbyAoKSwgZW5jb2Rlci5Ub0FycmF5IChvdXQgdmFyIHJlZmVyZW5jZXMp KTsKKysJCQlNb2R1bGUuQWRkQXNzZW1ibHlSZWZlcmVuY2VzIChyZWZlcmVuY2VzKTsKKyAJCX0K KyAJfQorIAorZGlmZiAtLWdpdCBhL21jcy9tY3MvZ2VuZXJpYy5jcyBiL21jcy9tY3MvZ2VuZXJp Yy5jcworaW5kZXggZWMyOTY1ZGY2M2IuLjBjNzAzMmIyMDg4IDEwMDY0NAorLS0tIGEvbWNzL21j cy9nZW5lcmljLmNzCisrKysgYi9tY3MvbWNzL2dlbmVyaWMuY3MKK0BAIC0zMzgxLDcgKzMzODEs NyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCQkJY29udGludWU7CisgCisgCQkJCXZh ciBib3VuZCA9IGNhbmRpZGF0ZXMgW2NpXTsKKy0JCQkJaWYgKGJvdW5kLlR5cGUgPT0gYmVzdF9j YW5kaWRhdGUpCisrCQkJCWlmIChUeXBlU3BlY0NvbXBhcmVyLklzRXF1YWwgKGJvdW5kLlR5cGUs IGJlc3RfY2FuZGlkYXRlKSkKKyAJCQkJCWNvbnRpbnVlOworIAorIAkJCQlpbnQgY2lpID0gMDsK K2RpZmYgLS1naXQgYS9tY3MvbWNzL21vZGlmaWVycy5jcyBiL21jcy9tY3MvbW9kaWZpZXJzLmNz CitpbmRleCA5MjZhYjVkMTg0OC4uMjFkZDUyYjNiMTQgMTAwNjQ0CistLS0gYS9tY3MvbWNzL21v ZGlmaWVycy5jcworKysrIGIvbWNzL21jcy9tb2RpZmllcnMuY3MKK0BAIC03NCw2ICs3NCw4IEBA IG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCQlyZXR1cm4gImludGVybmFsIjsKKyAJCQljYXNl IE1vZGlmaWVycy5QUklWQVRFOgorIAkJCQlyZXR1cm4gInByaXZhdGUiOworKwkJCWNhc2UgTW9k aWZpZXJzLlBSSVZBVEUgfCBNb2RpZmllcnMuUFJPVEVDVEVEOgorKwkJCQlyZXR1cm4gInByaXZh dGUgcHJvdGVjdGVkIjsKKyAJCQlkZWZhdWx0OgorIAkJCQl0aHJvdyBuZXcgTm90SW1wbGVtZW50 ZWRFeGNlcHRpb24gKG1vZC5Ub1N0cmluZyAoKSk7CisgCQkJfQorQEAgLTEyOSwxMiArMTMxLDE2 IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCWlmICgobW9kQiAmIE1vZGlmaWVycy5QVUJM SUMpICE9IDApIHsKKyAJCQkJZmxhZ3MgPSBNb2RpZmllcnMuUFJPVEVDVEVEIHwgTW9kaWZpZXJz LklOVEVSTkFMIHwgTW9kaWZpZXJzLlBSSVZBVEU7CisgCQkJfSBlbHNlIGlmICgobW9kQiAmIE1v ZGlmaWVycy5QUk9URUNURUQpICE9IDApIHsKKy0JCQkJaWYgKChtb2RCICYgTW9kaWZpZXJzLklO VEVSTkFMKSAhPSAwKQorLQkJCQkJZmxhZ3MgPSBNb2RpZmllcnMuUFJPVEVDVEVEIHwgTW9kaWZp ZXJzLklOVEVSTkFMOworLQorLQkJCQlmbGFncyB8PSBNb2RpZmllcnMuUFJJVkFURTsKKy0JCQl9 IGVsc2UgaWYgKChtb2RCICYgTW9kaWZpZXJzLklOVEVSTkFMKSAhPSAwKQorKwkJCQlpZiAoKG1v ZEIgJiBNb2RpZmllcnMuSU5URVJOQUwpICE9IDApIHsKKysJCQkJCWZsYWdzID0gTW9kaWZpZXJz LlBST1RFQ1RFRCB8IE1vZGlmaWVycy5JTlRFUk5BTCB8IE1vZGlmaWVycy5QUklWQVRFOworKwkJ CQl9IGVsc2UgeworKwkJCQkJbW9kQSAmPSB+TW9kaWZpZXJzLlBST1RFQ1RFRDsKKysJCQkJCWZs YWdzID0gTW9kaWZpZXJzLlBSSVZBVEU7CisrCQkJCX0KKysJCQl9IGVsc2UgaWYgKChtb2RCICYg TW9kaWZpZXJzLklOVEVSTkFMKSAhPSAwKSB7CisrCQkJCW1vZEEgJj0gfk1vZGlmaWVycy5QUk9U RUNURUQ7CisgCQkJCWZsYWdzID0gTW9kaWZpZXJzLlBSSVZBVEU7CisrCQkJfQorIAorIAkJCXJl dHVybiBtb2RCICE9IG1vZEEgJiYgKG1vZEEgJiAofmZsYWdzKSkgPT0gMDsKKyAJCX0KK0BAIC0x NTEsNiArMTU3LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJfSBlbHNlIHsKKyAJCQkJ aWYgKChtb2RfZmxhZ3MgJiBNb2RpZmllcnMuUFVCTElDKSAhPSAwKQorIAkJCQkJdCA9IFR5cGVB dHRyaWJ1dGVzLk5lc3RlZFB1YmxpYzsKKysJCQkJZWxzZSBpZiAoKG1vZF9mbGFncyAmIChNb2Rp ZmllcnMuUFJPVEVDVEVEIHwgTW9kaWZpZXJzLlBSSVZBVEUpKSA9PSAoTW9kaWZpZXJzLlBST1RF Q1RFRCB8IE1vZGlmaWVycy5QUklWQVRFKSkKKysJCQkJCXQgPSBUeXBlQXR0cmlidXRlcy5OZXN0 ZWRGYW1BTkRBc3NlbTsKKyAJCQkJZWxzZSBpZiAoKG1vZF9mbGFncyAmIE1vZGlmaWVycy5QUklW QVRFKSAhPSAwKQorIAkJCQkJdCA9IFR5cGVBdHRyaWJ1dGVzLk5lc3RlZFByaXZhdGU7CisgCQkJ CWVsc2UgaWYgKChtb2RfZmxhZ3MgJiAoTW9kaWZpZXJzLlBST1RFQ1RFRCB8IE1vZGlmaWVycy5J TlRFUk5BTCkpID09IChNb2RpZmllcnMuUFJPVEVDVEVEIHwgTW9kaWZpZXJzLklOVEVSTkFMKSkK K0BAIC0xNzMsMTggKzE4MSwyNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCXsKKyAJCQlG aWVsZEF0dHJpYnV0ZXMgZmEgPSAwOworIAorLQkJCWlmICgobW9kX2ZsYWdzICYgTW9kaWZpZXJz LlBVQkxJQykgIT0gMCkKKysJCQlzd2l0Y2ggKG1vZF9mbGFncyAmIE1vZGlmaWVycy5BY2Nlc3Np YmlsaXR5TWFzaykgeworKwkJCWNhc2UgTW9kaWZpZXJzLlBVQkxJQzoKKyAJCQkJZmEgfD0gRmll bGRBdHRyaWJ1dGVzLlB1YmxpYzsKKy0JCQlpZiAoKG1vZF9mbGFncyAmIE1vZGlmaWVycy5QUklW QVRFKSAhPSAwKQorKwkJCQlicmVhazsKKysJCQljYXNlIE1vZGlmaWVycy5QUklWQVRFOgorIAkJ CQlmYSB8PSBGaWVsZEF0dHJpYnV0ZXMuUHJpdmF0ZTsKKy0JCQlpZiAoKG1vZF9mbGFncyAmIE1v ZGlmaWVycy5QUk9URUNURUQpICE9IDApIHsKKy0JCQkJaWYgKChtb2RfZmxhZ3MgJiBNb2RpZmll cnMuSU5URVJOQUwpICE9IDApCistCQkJCQlmYSB8PSBGaWVsZEF0dHJpYnV0ZXMuRmFtT1JBc3Nl bTsKKy0JCQkJZWxzZSAKKy0JCQkJCWZhIHw9IEZpZWxkQXR0cmlidXRlcy5GYW1pbHk7CistCQkJ fSBlbHNlIHsKKy0JCQkJaWYgKChtb2RfZmxhZ3MgJiBNb2RpZmllcnMuSU5URVJOQUwpICE9IDAp CistCQkJCQlmYSB8PSBGaWVsZEF0dHJpYnV0ZXMuQXNzZW1ibHk7CisrCQkJCWJyZWFrOworKwkJ CWNhc2UgTW9kaWZpZXJzLlBST1RFQ1RFRCB8IE1vZGlmaWVycy5JTlRFUk5BTDoKKysJCQkJZmEg fD0gRmllbGRBdHRyaWJ1dGVzLkZhbU9SQXNzZW07CisrCQkJCWJyZWFrOworKwkJCWNhc2UgTW9k aWZpZXJzLlBST1RFQ1RFRDoKKysJCQkJZmEgfD0gRmllbGRBdHRyaWJ1dGVzLkZhbWlseTsKKysJ CQkJYnJlYWs7CisrCQkJY2FzZSBNb2RpZmllcnMuSU5URVJOQUw6CisrCQkJCWZhIHw9IEZpZWxk QXR0cmlidXRlcy5Bc3NlbWJseTsKKysJCQkJYnJlYWs7CisrCQkJY2FzZSBNb2RpZmllcnMuUFJJ VkFURSB8IE1vZGlmaWVycy5QUk9URUNURUQ6CisrCQkJCWZhIHw9IEZpZWxkQXR0cmlidXRlcy5G YW1BTkRBc3NlbTsKKysJCQkJYnJlYWs7CisrCQkJZGVmYXVsdDoKKysJCQkJdGhyb3cgbmV3IE5v dEltcGxlbWVudGVkRXhjZXB0aW9uIChtb2RfZmxhZ3MuVG9TdHJpbmcgKCkpOworIAkJCX0KKyAK KyAJCQlpZiAoKG1vZF9mbGFncyAmIE1vZGlmaWVycy5TVEFUSUMpICE9IDApCitAQCAtMjE1LDYg KzIzMiw5IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCWNhc2UgTW9kaWZpZXJzLklOVEVS TkFMOgorIAkJCQltYSB8PSBNZXRob2RBdHRyaWJ1dGVzLkFzc2VtYmx5OworIAkJCQlicmVhazsK KysJCQljYXNlIE1vZGlmaWVycy5QUklWQVRFIHwgTW9kaWZpZXJzLlBST1RFQ1RFRDoKKysJCQkJ bWEgfD0gTWV0aG9kQXR0cmlidXRlcy5GYW1BTkRBc3NlbTsKKysJCQkJYnJlYWs7CisgCQkJZGVm YXVsdDoKKyAJCQkJdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uIChtb2RfZmxhZ3Mu VG9TdHJpbmcgKCkpOworIAkJCX0KK2RpZmYgLS1naXQgYS9tY3MvbWNzL21vZHVsZS5jcyBiL21j cy9tY3MvbW9kdWxlLmNzCitpbmRleCAyMjkzZDgyNWIzNi4uNDY4MDQzM2JiMDEgMTAwNjQ0Cist LS0gYS9tY3MvbWNzL21vZHVsZS5jcworKysrIGIvbWNzL21jcy9tb2R1bGUuY3MKK0BAIC00ODAs NiArNDgwLDE4IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCWF0dHJpYnV0ZXMuQWRkQXR0 cmlidXRlIChhdHRyKTsKKyAJCX0KKyAKKysJCXB1YmxpYyB2b2lkIEFkZEFzc2VtYmx5UmVmZXJl bmNlcyAoTGlzdDxBc3NlbWJseT4gbmFtZXMpCisrCQl7CisrCQkJaWYgKG5hbWVzID09IG51bGwp CisrCQkJCXJldHVybjsKKysKKysjaWYgU1RBVElDCisrCQkJZm9yZWFjaCAodmFyIG5hbWUgaW4g bmFtZXMpIHsKKysJCQkJQnVpbGRlci5fX0dldEFzc2VtYmx5VG9rZW4gKG5hbWUpOworKwkJCX0K KysjZW5kaWYKKysJCX0KKysKKyAJCXB1YmxpYyBvdmVycmlkZSB2b2lkIEFkZFR5cGVDb250YWlu ZXIgKFR5cGVDb250YWluZXIgdGMpCisgCQl7CisgCQkJQWRkVHlwZUNvbnRhaW5lck1lbWJlciAo dGMpOworZGlmZiAtLWdpdCBhL21jcy9tY3MvcGFyYW1ldGVyLmNzIGIvbWNzL21jcy9wYXJhbWV0 ZXIuY3MKK2luZGV4IGNjMTBlZWUxNjJiLi45NTg1MTQ3ODAxMCAxMDA2NDQKKy0tLSBhL21jcy9t Y3MvcGFyYW1ldGVyLmNzCisrKysgYi9tY3MvbWNzL3BhcmFtZXRlci5jcworQEAgLTIyMSwxMiAr MjIxLDEzIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQkJUkVGID0gMSA8PCAxLAorIAkJ CU9VVCA9IDEgPDwgMiwKKyAJCQlUaGlzID0gMSA8PCAzLAorLQkJCUNhbGxlck1lbWJlck5hbWUg PSAxIDw8IDQsCistCQkJQ2FsbGVyTGluZU51bWJlciA9IDEgPDwgNSwKKy0JCQlDYWxsZXJGaWxl UGF0aCA9IDEgPDwgNiwKKysJCQlSZWFkT25seSA9IDEgPDwgNCwKKysJCQlDYWxsZXJNZW1iZXJO YW1lID0gMSA8PCA1LAorKwkJCUNhbGxlckxpbmVOdW1iZXIgPSAxIDw8IDYsCisrCQkJQ2FsbGVy RmlsZVBhdGggPSAxIDw8IDcsCisgCisgCQkJUmVmT3V0TWFzayA9IFJFRiB8IE9VVCwKKy0JCQlN b2RpZmllck1hc2sgPSBQQVJBTVMgfCBSRUYgfCBPVVQgfCBUaGlzLAorKwkJCU1vZGlmaWVyTWFz ayA9IFBBUkFNUyB8IFJFRiB8IE9VVCB8IFRoaXMgfCBSZWFkT25seSwKKyAJCQlDYWxsZXJNYXNr ID0gQ2FsbGVyTWVtYmVyTmFtZSB8IENhbGxlckxpbmVOdW1iZXIgfCBDYWxsZXJGaWxlUGF0aAor IAkJfQorIAorQEAgLTE0NzQsOSArMTQ3NSw5IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7Cisg CQkJCQl9CisgCQkJCX0KKyAKKy0JCQkJaWYgKCFleHByLklzTnVsbCAmJiBUeXBlU3BlYy5Jc1Jl ZmVyZW5jZVR5cGUgKHBhcmFtZXRlcl90eXBlKSAmJiBwYXJhbWV0ZXJfdHlwZS5CdWlsdGluVHlw ZSAhPSBCdWlsdGluVHlwZVNwZWMuVHlwZS5TdHJpbmcpIHsKKysJCQkJaWYgKCFyZXMuSXNOdWxs ICYmIFR5cGVTcGVjLklzUmVmZXJlbmNlVHlwZSAocGFyYW1ldGVyX3R5cGUpICYmIHBhcmFtZXRl cl90eXBlLkJ1aWx0aW5UeXBlICE9IEJ1aWx0aW5UeXBlU3BlYy5UeXBlLlN0cmluZykgeworIAkJ CQkJcmMuUmVwb3J0LkVycm9yICgxNzYzLCBMb2NhdGlvbiwKKy0JCQkJCQkiT3B0aW9uYWwgcGFy YW1ldGVyIGB7MH0nIG9mIHR5cGUgYHsxfScgY2FuIG9ubHkgYmUgaW5pdGlhbGl6ZWQgd2l0aCBg bnVsbCciLAorKwkJCQkJCSJPcHRpb25hbCBwYXJhbWV0ZXIgYHswfScgb2YgdHlwZSBgezF9JyBj YW4gb25seSBiZSBpbml0aWFsaXplZCB3aXRoIGRlZmF1bHQgdmFsdWUiLAorIAkJCQkJCXAuTmFt ZSwgcGFyYW1ldGVyX3R5cGUuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCkpOworIAorIAkJCQkJcmV0 dXJuOworZGlmZiAtLWdpdCBhL21jcy9tY3MvcmVwb3J0LmNzIGIvbWNzL21jcy9yZXBvcnQuY3MK K2luZGV4IGNjM2Q4MmIyNmUwLi41ZDY0YzhlNzY2ZSAxMDA2NDQKKy0tLSBhL21jcy9tY3MvcmVw b3J0LmNzCisrKysgYi9tY3MvbWNzL3JlcG9ydC5jcworQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNw YWNlIE1vbm8uQ1NoYXJwIHsKKyAJCXB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgaW50W10gQWxsV2Fy bmluZ3MgPSBuZXcgaW50W10geworIAkJCTI4LCA2NywgNzgsCisgCQkJMTA1LCAxMDgsIDEwOSwg MTE0LCAxNjIsIDE2NCwgMTY4LCAxNjksIDE4MywgMTg0LCAxOTcsCistCQkJMjE5LCAyNTEsIDI1 MiwgMjUzLCAyNzgsIDI4MiwKKysJCQkyMTksIDI1MSwgMjUyLCAyNTMsIDI3OCwgMjgwLCAyODIs CisgCQkJNDAyLCA0MTQsIDQxOSwgNDIwLCA0MjksIDQzNiwgNDM3LCA0NDAsIDQ1OCwgNDY0LCA0 NjUsIDQ2NywgNDY5LCA0NzIsIDQ3MywKKyAJCQk2MTIsIDYxOCwgNjI2LCA2MjgsIDY0MiwgNjQ5 LCA2NTIsIDY1NywgNjU4LCA2NTksIDY2MCwgNjYxLCA2NjUsIDY3MiwgNjc1LCA2OTMsCisgCQkJ NzI4LAorQEAgLTEwNyw2ICsxMDcsMTUgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJCQlj YXNlIExhbmd1YWdlVmVyc2lvbi5WXzc6CisgCQkJCXZlcnNpb24gPSAiNy4wIjsKKyAJCQkJYnJl YWs7CisrCQkJY2FzZSBMYW5ndWFnZVZlcnNpb24uVl83XzE6CisrCQkJCXZlcnNpb24gPSAiNy4x IjsKKysJCQkJYnJlYWs7CisrCQkJY2FzZSBMYW5ndWFnZVZlcnNpb24uVl83XzI6CisrCQkJCXZl cnNpb24gPSAiNy4yIjsKKysJCQkJYnJlYWs7CisrCQkJY2FzZSBMYW5ndWFnZVZlcnNpb24uVl83 XzM6CisrCQkJCXZlcnNpb24gPSAiNy4zIjsKKysJCQkJYnJlYWs7CisgCQkJZGVmYXVsdDoKKyAJ CQkJdGhyb3cgbmV3IEludGVybmFsRXJyb3JFeGNlcHRpb24gKCJJbnZhbGlkIGZlYXR1cmUgdmVy c2lvbiIsIGNvbXBpbGVyLlNldHRpbmdzLlZlcnNpb24pOworIAkJCX0KK2RpZmYgLS1naXQgYS9t Y3MvbWNzL3NldHRpbmdzLmNzIGIvbWNzL21jcy9zZXR0aW5ncy5jcworaW5kZXggMzc2NjQxODdj NzEuLjk3NmM5YjY4MTI4IDEwMDY0NAorLS0tIGEvbWNzL21jcy9zZXR0aW5ncy5jcworKysrIGIv bWNzL21jcy9zZXR0aW5ncy5jcworQEAgLTMyLDEwICszMiwxMSBAQCBuYW1lc3BhY2UgTW9uby5D U2hhcnAgeworIAkJVl83ID0gNywKKyAJCVZfN18xID0gNzEsCisgCQlWXzdfMiA9IDcyLAorKwkJ Vl83XzMgPSA3MywKKyAJCUV4cGVyaW1lbnRhbCA9IDEwMCwKKyAKKyAJCURlZmF1bHQgPSBWXzcs CistCQlMYXRlc3QgPSBWXzdfMgorKwkJTGF0ZXN0ID0gVl83XzMKKyAJfQorIAorIAlwdWJsaWMg ZW51bSBSdW50aW1lVmVyc2lvbgorQEAgLTEyNzAsNiArMTI3MSw3IEBAIG5hbWVzcGFjZSBNb25v LkNTaGFycCB7CisgCQkJY2FzZSAiL2hpZ2hlbnRyb3B5dmErIjoKKyAJCQljYXNlICIvaGlnaGVu dHJvcHl2YS0iOgorIAkJCWNhc2UgIi9saW5rIjoKKysJCQljYXNlICIvc291cmNlbGluayI6Cisg CQkJY2FzZSAiL21vZHVsZWFzc2VtYmx5bmFtZSI6CisgCQkJY2FzZSAiL25vd2luMzJtYW5pZmVz dCI6CisgCQkJY2FzZSAiL3BkYiI6CitkaWZmIC0tZ2l0IGEvbWNzL21jcy9zdGF0ZW1lbnQuY3Mg Yi9tY3MvbWNzL3N0YXRlbWVudC5jcworaW5kZXggOWM1MTEyODU0OGYuLmM4Yjc3YzFhZGMxIDEw MDY0NAorLS0tIGEvbWNzL21jcy9zdGF0ZW1lbnQuY3MKKysrKyBiL21jcy9tY3Mvc3RhdGVtZW50 LmNzCitAQCAtOTI4LDggKzkyOCw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7CisgCQlwdWJs aWMgb3ZlcnJpZGUgUmVhY2hhYmlsaXR5IE1hcmtSZWFjaGFibGUgKFJlYWNoYWJpbGl0eSByYykK KyAJCXsKKyAJCQliYXNlLk1hcmtSZWFjaGFibGUgKHJjKTsKKy0JCQlleHByLk1hcmtSZWFjaGFi bGUgKHJjKTsKKy0JCQlyZXR1cm4gcmM7CisrCQkJcmV0dXJuIGV4cHIuTWFya1JlYWNoYWJsZSAo cmMpOworIAkJfQorIAorIAkJcHVibGljIG92ZXJyaWRlIGJvb2wgUmVzb2x2ZSAoQmxvY2tDb250 ZXh0IGVjKQorQEAgLTI0MTksNiArMjQxOCw3IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycCB7Cisg CQkJSXNMb2NrZWQgPSAxIDw8IDgsCisgCQkJU3ltYm9sRmlsZUhpZGRlbiA9IDEgPDwgOSwKKyAJ CQlCeVJlZiA9IDEgPDwgMTAsCisrCQkJUG9pbnRlckJ5UmVmID0gMSA8PCAxMSwKKyAKKyAJCQlS ZWFkb25seU1hc2sgPSAxIDw8IDIwCisgCQl9CitAQCAtMjYwOSwyMCArMjYwOSwyMiBAQCBuYW1l c3BhY2UgTW9uby5DU2hhcnAgeworIAorIAkJCWlmIChJc0J5UmVmKSB7CisgCQkJCWJ1aWxkZXIg PSBlYy5EZWNsYXJlTG9jYWwgKFJlZmVyZW5jZUNvbnRhaW5lci5NYWtlVHlwZSAoZWMuTW9kdWxl LCBUeXBlKSwgSXNGaXhlZCk7CisrCQkJfSBlbHNlIGlmICgoZmxhZ3MgJiBGbGFncy5Qb2ludGVy QnlSZWYpICE9IDApIHsKKysJCQkJYnVpbGRlciA9IGVjLkRlY2xhcmVMb2NhbCAoUmVmZXJlbmNl Q29udGFpbmVyLk1ha2VUeXBlIChlYy5Nb2R1bGUsICgoUG9pbnRlckNvbnRhaW5lcikgVHlwZSku RWxlbWVudCksIElzRml4ZWQpOworIAkJCX0gZWxzZSB7CisgCQkJCS8vCisgCQkJCS8vIEFsbCBm aXhlZCB2YXJpYWJsZWQgYXJlIHBpbm5lZCwgYSBzbG90IGhhcyB0byBiZSBhbG9jYXRlZAorIAkJ CQkvLworLQkJCQlidWlsZGVyID0gZWMuRGVjbGFyZUxvY2FsKFR5cGUsIElzRml4ZWQpOworKwkJ CQlidWlsZGVyID0gZWMuRGVjbGFyZUxvY2FsIChUeXBlLCBJc0ZpeGVkKTsKKyAJCQl9CisgCisg CQkJaWYgKChmbGFncyAmIEZsYWdzLlN5bWJvbEZpbGVIaWRkZW4pID09IDApCisgCQkJCWVjLkRl ZmluZUxvY2FsVmFyaWFibGUgKG5hbWUsIGJ1aWxkZXIpOworIAkJfQorIAorLQkJcHVibGljIHN0 YXRpYyBMb2NhbFZhcmlhYmxlIENyZWF0ZUNvbXBpbGVyR2VuZXJhdGVkIChUeXBlU3BlYyB0eXBl LCBCbG9jayBibG9jaywgTG9jYXRpb24gbG9jLCBib29sIHdyaXRlVG9TeW1ib2xGaWxlID0gZmFs c2UpCisrCQlwdWJsaWMgc3RhdGljIExvY2FsVmFyaWFibGUgQ3JlYXRlQ29tcGlsZXJHZW5lcmF0 ZWQgKFR5cGVTcGVjIHR5cGUsIEJsb2NrIGJsb2NrLCBMb2NhdGlvbiBsb2MsIGJvb2wgd3JpdGVU b1N5bWJvbEZpbGUgPSBmYWxzZSwgRmxhZ3MgYWRkaXRpb25hbEZsYWdzID0gMCkKKyAJCXsKKy0J CQlMb2NhbFZhcmlhYmxlIGxpID0gbmV3IExvY2FsVmFyaWFibGUgKGJsb2NrLCBHZXRDb21waWxl ckdlbmVyYXRlZE5hbWUgKGJsb2NrKSwgRmxhZ3MuQ29tcGlsZXJHZW5lcmF0ZWQgfCBGbGFncy5V c2VkLCBsb2MpOworKwkJCUxvY2FsVmFyaWFibGUgbGkgPSBuZXcgTG9jYWxWYXJpYWJsZSAoYmxv Y2ssIEdldENvbXBpbGVyR2VuZXJhdGVkTmFtZSAoYmxvY2spLCBGbGFncy5Db21waWxlckdlbmVy YXRlZCB8IEZsYWdzLlVzZWQgfCBhZGRpdGlvbmFsRmxhZ3MsIGxvYyk7CisgCQkJaWYgKCF3cml0 ZVRvU3ltYm9sRmlsZSkKKyAJCQkJbGkuZmxhZ3MgfD0gRmxhZ3MuU3ltYm9sRmlsZUhpZGRlbjsK KyAJCQkKK0BAIC0yNzI1LDYgKzI3MjcsMTEgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwIHsKKyAJ CQlmbGFncyB8PSBGbGFncy5Vc2VkOworIAkJfQorIAorKwkJcHVibGljIHZvaWQgU2V0SXNQb2lu dGVyQnlSZWYgKCkKKysJCXsKKysJCQlmbGFncyB8PSBGbGFncy5Qb2ludGVyQnlSZWY7CisrCQl9 CisrCisgCQlwdWJsaWMgdm9pZCBTZXRIYXNBZGRyZXNzVGFrZW4gKCkKKyAJCXsKKyAJCQlmbGFn cyB8PSAoRmxhZ3MuQWRkcmVzc1Rha2VuIHwgRmxhZ3MuVXNlZCk7CitAQCAtNjU2MiwxOCArNjU2 OSwyNiBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAorIAkJCQkvLyBUT0RPOiBTaG91bGQg dXNlIEJpbmFyeTo6QWRkCisgCQkJCXBpbm5lZF9zdHJpbmcuRW1pdCAoZWMpOworLQkJCQllYy5F bWl0IChPcENvZGVzLkNvbnZfSSk7CisrCQkJCWVjLkVtaXQgKE9wQ29kZXMuQ29udl9VKTsKKyAK KyAJCQkJdmFyIG0gPSBlYy5Nb2R1bGUuUHJlZGVmaW5lZE1lbWJlcnMuUnVudGltZUhlbHBlcnNP ZmZzZXRUb1N0cmluZ0RhdGEuUmVzb2x2ZSAobG9jKTsKKyAJCQkJaWYgKG0gPT0gbnVsbCkKKyAJ CQkJCXJldHVybjsKKyAKKysJCQkJdmFyIG51bGxfdmFsdWUgPSBlYy5EZWZpbmVMYWJlbCAoKTsK KysJCQkJdmkuRW1pdEFzc2lnbiAoZWMpOworKwkJCQl2aS5FbWl0IChlYyk7CisrCQkJCWVjLkVt aXQgKE9wQ29kZXMuQnJmYWxzZV9TLCBudWxsX3ZhbHVlKTsKKysKKysJCQkJdmkuRW1pdCAoZWMp OworIAkJCQlQcm9wZXJ0eUV4cHIgcGUgPSBuZXcgUHJvcGVydHlFeHByIChtLCBwaW5uZWRfc3Ry aW5nLkxvY2F0aW9uKTsKKyAJCQkJLy9wZS5JbnN0YW5jZUV4cHJlc3Npb24gPSBwaW5uZWRfc3Ry aW5nOworIAkJCQlwZS5SZXNvbHZlIChuZXcgUmVzb2x2ZUNvbnRleHQgKGVjLk1lbWJlckNvbnRl eHQpKS5FbWl0IChlYyk7CisgCisgCQkJCWVjLkVtaXQgKE9wQ29kZXMuQWRkKTsKKyAJCQkJdmku RW1pdEFzc2lnbiAoZWMpOworKworKwkJCQllYy5NYXJrTGFiZWwgKG51bGxfdmFsdWUpOworIAkJ CX0KKyAKKyAJCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBFbWl0RXhpdCAoRW1pdENvbnRleHQgZWMp CitAQCAtNjY2MCwzMSArNjY3NSw5NCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAgeworIAkJCQkJ cmV0dXJuIG5ldyBFeHByZXNzaW9uRW1pdHRlciAocmVzLCBsaSk7CisgCQkJCX0KKyAKKy0JCQkJ Ym9vbCBhbHJlYWR5X2ZpeGVkID0gdHJ1ZTsKKy0KKyAJCQkJLy8KKyAJCQkJLy8gQ2FzZSA0OiAm IG9iamVjdC4KKyAJCQkJLy8KKyAJCQkJVW5hcnkgdSA9IHJlcyBhcyBVbmFyeTsKKyAJCQkJaWYg KHUgIT0gbnVsbCkgeworKwkJCQkJYm9vbCBhbHJlYWR5X2ZpeGVkID0gdHJ1ZTsKKysKKyAJCQkJ CWlmICh1Lk9wZXIgPT0gVW5hcnkuT3BlcmF0b3IuQWRkcmVzc09mKSB7CisgCQkJCQkJSVZhcmlh YmxlUmVmZXJlbmNlIHZyID0gdS5FeHByIGFzIElWYXJpYWJsZVJlZmVyZW5jZTsKKyAJCQkJCQlp ZiAodnIgPT0gbnVsbCB8fCAhdnIuSXNGaXhlZCkgeworIAkJCQkJCQlhbHJlYWR5X2ZpeGVkID0g ZmFsc2U7CisgCQkJCQkJfQorIAkJCQkJfQorLQkJCQl9IGVsc2UgaWYgKGluaXRpYWxpemVyIGlz IENhc3QpIHsKKysKKysJCQkJCWlmIChhbHJlYWR5X2ZpeGVkKSB7CisrCQkJCQkJYmMuUmVwb3J0 LkVycm9yICgyMTMsIGxvYywgIllvdSBjYW5ub3QgdXNlIHRoZSBmaXhlZCBzdGF0ZW1lbnQgdG8g dGFrZSB0aGUgYWRkcmVzcyBvZiBhbiBhbHJlYWR5IGZpeGVkIGV4cHJlc3Npb24iKTsKKysJCQkJ CQlyZXR1cm4gbnVsbDsKKysJCQkJCX0KKysKKysJCQkJCXJlcyA9IENvbnZlcnQuSW1wbGljaXRD b252ZXJzaW9uUmVxdWlyZWQgKGJjLCByZXMsIGxpLlR5cGUsIGxvYyk7CisrCQkJCQlyZXR1cm4g bmV3IEV4cHJlc3Npb25FbWl0dGVyIChyZXMsIGxpKTsKKysJCQkJfQorKworKwkJCQlpZiAoaW5p dGlhbGl6ZXIgaXMgQ2FzdCkgeworIAkJCQkJYmMuUmVwb3J0LkVycm9yICgyNTQsIGluaXRpYWxp emVyLkxvY2F0aW9uLCAiVGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBhIGZpeGVkIHN0YXRlbWVudCBh c3NpZ25tZW50IG1heSBub3QgYmUgYSBjYXN0IGV4cHJlc3Npb24iKTsKKyAJCQkJCXJldHVybiBu dWxsOworIAkJCQl9CisgCistCQkJCWlmIChhbHJlYWR5X2ZpeGVkKSB7CistCQkJCQliYy5SZXBv cnQuRXJyb3IgKDIxMywgbG9jLCAiWW91IGNhbm5vdCB1c2UgdGhlIGZpeGVkIHN0YXRlbWVudCB0 byB0YWtlIHRoZSBhZGRyZXNzIG9mIGFuIGFscmVhZHkgZml4ZWQgZXhwcmVzc2lvbiIpOworKwkJ CQkvLworKwkJCQkvLyBDYXNlIDU6IGJ5LXJlZiBHZXRQaW5uYWJsZVJlZmVyZW5jZSBtZXRob2Qg b24gdGhlIHJocyBleHByZXNzaW9uCisrCQkJCS8vCisrCQkJCXZhciBtZXRob2QgPSBHZXRQaW5u YWJsZVJlZmVyZW5jZSAoYmMsIHJlcyk7CisrCQkJCWlmIChtZXRob2QgPT0gbnVsbCkgeworKwkJ CQkJYmMuUmVwb3J0LkVycm9yICg4Mzg1LCBpbml0aWFsaXplci5Mb2NhdGlvbiwgIlRoZSBnaXZl biBleHByZXNzaW9uIGNhbm5vdCBiZSB1c2VkIGluIGEgZml4ZWQgc3RhdGVtZW50Iik7CisrCQkJ CQlyZXR1cm4gbnVsbDsKKysJCQkJfQorKworKwkJCQl2YXIgY29tcGlsZXIgPSBiYy5Nb2R1bGUu Q29tcGlsZXI7CisrCQkJCWlmIChjb21waWxlci5TZXR0aW5ncy5WZXJzaW9uIDwgTGFuZ3VhZ2VW ZXJzaW9uLlZfN18zKSB7CisrCQkJCQliYy5SZXBvcnQuRmVhdHVyZUlzTm90QXZhaWxhYmxlIChj b21waWxlciwgaW5pdGlhbGl6ZXIuTG9jYXRpb24sICJleHRlbnNpYmxlIGZpeGVkIHN0YXRlbWVu dCIpOworKwkJCQl9CisrCisrCQkJCW1ldGhvZC5JbnN0YW5jZUV4cHJlc3Npb24gPSByZXM7Cisr CQkJCXJlcyA9IG5ldyBJbnZvY2F0aW9uLlByZWRlZmluZWQgKG1ldGhvZCwgbnVsbCkuUmVzb2x2 ZUxWYWx1ZSAoYmMsIEVtcHR5RXhwcmVzc2lvbi5PdXRBY2Nlc3MpOworKwkJCQlpZiAocmVzID09 IG51bGwpCisrCQkJCQlyZXR1cm4gbnVsbDsKKysKKysJCQkJUmVmZXJlbmNlQ29udGFpbmVyIHJU eXBlID0gKFJlZmVyZW5jZUNvbnRhaW5lciltZXRob2QuQmVzdENhbmRpZGF0ZVJldHVyblR5cGU7 CisrCQkJCVBvaW50ZXJDb250YWluZXIgbFR5cGUgPSBsaS5UeXBlIGFzIFBvaW50ZXJDb250YWlu ZXI7CisrCQkJCWlmIChyVHlwZS5FbGVtZW50ICE9IGxUeXBlPy5FbGVtZW50KSB7CisrCQkJCQkv LyBDU0M6IFNob3VsZCBiZSBiZXR0ZXIgZXJyb3IgY29kZQorKwkJCQkJcmVzLkVycm9yX1ZhbHVl Q2Fubm90QmVDb252ZXJ0ZWQgKGJjLCBsVHlwZSwgZmFsc2UpOworKwkJCQkJcmV0dXJuIG51bGw7 CisgCQkJCX0KKyAKKy0JCQkJcmVzID0gQ29udmVydC5JbXBsaWNpdENvbnZlcnNpb25SZXF1aXJl ZCAoYmMsIHJlcywgbGkuVHlwZSwgbG9jKTsKKysJCQkJbGkuU2V0SXNQb2ludGVyQnlSZWYgKCk7 CisgCQkJCXJldHVybiBuZXcgRXhwcmVzc2lvbkVtaXR0ZXIgKHJlcywgbGkpOworIAkJCX0KKysK KysJCQlNZXRob2RHcm91cEV4cHIgR2V0UGlubmFibGVSZWZlcmVuY2UgKEJsb2NrQ29udGV4dCBi YywgRXhwcmVzc2lvbiBleHByKQorKwkJCXsKKysJCQkJVHlwZVNwZWMgdHlwZSA9IGV4cHIuVHlw ZTsKKysJCQkJdmFyIG1leHByID0gRXhwcmVzc2lvbi5NZW1iZXJMb29rdXAgKGJjLCBmYWxzZSwg dHlwZSwKKysJCQkJCSJHZXRQaW5uYWJsZVJlZmVyZW5jZSIsIDAsIEV4cHJlc3Npb24uTWVtYmVy TG9va3VwUmVzdHJpY3Rpb25zLkV4YWN0QXJpdHksIGxvYyk7CisrCisrCQkJCWlmIChtZXhwciA9 PSBudWxsKQorKwkJCQkJcmV0dXJuIG51bGw7CisrCisrCQkJCXZhciBtZyA9IG1leHByIGFzIE1l dGhvZEdyb3VwRXhwcjsKKysJCQkJaWYgKG1nID09IG51bGwpCisrCQkJCQlyZXR1cm4gbnVsbDsK KysKKysJCQkJbWcuSW5zdGFuY2VFeHByZXNzaW9uID0gZXhwcjsKKysKKysJCQkJLy8gVE9ETzog aGFuZGxlIGV4dGVuc2lvbiBtZXRob2RzCisrCQkJCUFyZ3VtZW50cyBhcmdzID0gbmV3IEFyZ3Vt ZW50cyAoMCk7CisrCQkJCW1nID0gbWcuT3ZlcmxvYWRSZXNvbHZlIChiYywgcmVmIGFyZ3MsIG51 bGwsIE92ZXJsb2FkUmVzb2x2ZXIuUmVzdHJpY3Rpb25zLk5vbmUpOworKworKwkJCQlpZiAobWcg PT0gbnVsbCB8fCBtZy5CZXN0Q2FuZGlkYXRlLklzU3RhdGljIHx8ICFtZy5CZXN0Q2FuZGlkYXRl LklzUHVibGljIHx8IG1nLkJlc3RDYW5kaWRhdGVSZXR1cm5UeXBlLktpbmQgIT0gTWVtYmVyS2lu ZC5CeVJlZiB8fCAhbWcuQmVzdENhbmRpZGF0ZS5QYXJhbWV0ZXJzLklzRW1wdHkpIHsKKysJCQkJ CWlmIChiYy5Nb2R1bGUuQ29tcGlsZXIuU2V0dGluZ3MuVmVyc2lvbiA+IExhbmd1YWdlVmVyc2lv bi5WXzdfMikgeworKwkJCQkJCWJjLlJlcG9ydC5XYXJuaW5nICgyODAsIDIsIGV4cHIuTG9jYXRp b24sICJgezB9JyBoYXMgdGhlIHdyb25nIHNpZ25hdHVyZSB0byBiZSB1c2VkIGluIGV4dGVuc2li bGUgZml4ZWQgc3RhdGVtZW50IiwgbWcuR2V0U2lnbmF0dXJlRm9yRXJyb3IgKCkpOworKwkJCQkJ fQorKworKwkJCQkJcmV0dXJuIG51bGw7CisrCQkJCX0KKysKKysJCQkJcmV0dXJuIG1nOworKwkJ CX0KKyAJCX0KKyAKKyAKK2RpZmYgLS1naXQgYS9tY3MvbWNzL3R1cGxlcy5jcyBiL21jcy9tY3Mv dHVwbGVzLmNzCitpbmRleCA5MDFlZmRjOTU0MS4uMGI1Njg1OTYxNWYgMTAwNjQ0CistLS0gYS9t Y3MvbWNzL3R1cGxlcy5jcworKysrIGIvbWNzL21jcy90dXBsZXMuY3MKK0BAIC0yNjcsNiArMjY3 LDExIEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAkJCXRoaXMuTG9jYXRpb24gPSBleHByLkxv Y2F0aW9uOworIAkJfQorIAorKwkJcHVibGljIFR1cGxlTGl0ZXJhbEVsZW1lbnQgQ2xvbmUgKENs b25lQ29udGV4dCBjbG9uZWN0eCkKKysJCXsKKysJCQlyZXR1cm4gbmV3IFR1cGxlTGl0ZXJhbEVs ZW1lbnQgKE5hbWUsIEV4cHIuQ2xvbmUgKGNsb25lY3R4KSwgTG9jYXRpb24pOworKwkJfQorKwor IAkJcHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBwcml2YXRlIHNldDsgfQorIAkJcHVibGljIEV4 cHJlc3Npb24gRXhwciB7IGdldDsgc2V0OyB9CisgCQlwdWJsaWMgTG9jYXRpb24gTG9jYXRpb24g eyBnZXQ7IHByaXZhdGUgc2V0OyB9CitAQCAtMjg4LDYgKzI5MywxNiBAQCBuYW1lc3BhY2UgTW9u by5DU2hhcnAKKyAJCQl9CisgCQl9CisgCisrCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBDbG9u ZVRvIChDbG9uZUNvbnRleHQgY2xvbmVjdHgsIEV4cHJlc3Npb24gdCkKKysJCXsKKysJCQl2YXIg Y2xvbmUgPSBuZXcgTGlzdDxUdXBsZUxpdGVyYWxFbGVtZW50PiAoZWxlbWVudHMuQ291bnQpOwor KwkJCWZvcmVhY2ggKHZhciB0ZSBpbiBlbGVtZW50cykKKysJCQkJY2xvbmUuQWRkICh0ZS5DbG9u ZSAoY2xvbmVjdHgpKTsKKysKKysJCQlUdXBsZUxpdGVyYWwgdGFyZ2V0ID0gKFR1cGxlTGl0ZXJh bCl0OworKwkJCXRhcmdldC5lbGVtZW50cyA9IGNsb25lOworKwkJfQorKworIAkJcHVibGljIHN0 YXRpYyBib29sIENvbnRhaW5zTm9UeXBlRWxlbWVudCAoVHlwZVNwZWMgdHlwZSkKKyAJCXsKKyAJ CQl2YXIgdGEgPSB0eXBlLlR5cGVBcmd1bWVudHM7CitAQCAtNDMyLDYgKzQ0Nyw3IEBAIG5hbWVz cGFjZSBNb25vLkNTaGFycAorIAl7CisgCQlFeHByZXNzaW9uIHNvdXJjZTsKKyAJCUxpc3Q8RXhw cmVzc2lvbj4gdGFyZ2V0RXhwcnM7CisrCQlMaXN0PEV4cHJlc3Npb24+IHRlbXBFeHByczsKKyAJ CUxpc3Q8QmxvY2tWYXJpYWJsZT4gdmFyaWFibGVzOworIAkJRXhwcmVzc2lvbiBpbnN0YW5jZTsK KyAKK0BAIC00NDAsNiArNDU2LDggQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJdGhpcy5z b3VyY2UgPSBzb3VyY2U7CisgCQkJdGhpcy50YXJnZXRFeHBycyA9IHRhcmdldEV4cHJzOworIAkJ CXRoaXMubG9jID0gbG9jOworKworKwkJCXRlbXBFeHBycyA9IG5ldyBMaXN0PEV4cHJlc3Npb24+ ICgpOworIAkJfQorIAorIAkJcHVibGljIFR1cGxlRGVjb25zdHJ1Y3QgKExpc3Q8QmxvY2tWYXJp YWJsZT4gdmFyaWFibGVzLCBFeHByZXNzaW9uIHNvdXJjZSwgTG9jYXRpb24gbG9jKQorQEAgLTQ0 Nyw2ICs0NjUsOCBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQl0aGlzLnNvdXJjZSA9IHNv dXJjZTsKKyAJCQl0aGlzLnZhcmlhYmxlcyA9IHZhcmlhYmxlczsKKyAJCQl0aGlzLmxvYyA9IGxv YzsKKysKKysJCQl0ZW1wRXhwcnMgPSBuZXcgTGlzdDxFeHByZXNzaW9uPiAoKTsKKyAJCX0KKyAK KyAJCXB1YmxpYyBvdmVycmlkZSBFeHByZXNzaW9uIENyZWF0ZUV4cHJlc3Npb25UcmVlIChSZXNv bHZlQ29udGV4dCBlYykKK0BAIC00OTIsNiArNTEyLDE1IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFy cAorIAkJCQkJaW5zdGFuY2UgPSBleHByX3ZhcmlhYmxlLkNyZWF0ZVJlZmVyZW5jZUV4cHJlc3Np b24gKHJjLCBsb2MpOworIAkJCQl9CisgCisrCQkJCXZhciBlbGVtZW50X3NyY3MgPSBuZXcgTGlz dDxFeHByZXNzaW9uPiAoKTsKKysJCQkJdmFyIHNyY19uYW1lcyA9IG5ldyBMaXN0PHN0cmluZz4g KCk7CisrCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgdGFyZ2V0X2NvdW50OyArK2kpIHsKKysJCQkJ CXZhciBlbGVtZW50X3NyYyA9IHR1cGxlTGl0ZXJhbCA9PSBudWxsID8gbmV3IE1lbWJlckFjY2Vz cyAoaW5zdGFuY2UsIE5hbWVkVHVwbGVTcGVjLkdldEVsZW1lbnRQcm9wZXJ0eU5hbWUgKGkpKSA6 IHR1cGxlTGl0ZXJhbC5FbGVtZW50cyBbaV0uRXhwcjsKKysJCQkJCWVsZW1lbnRfc3Jjcy5BZGQg KGVsZW1lbnRfc3JjKTsKKysJCQkJCWlmIChlbGVtZW50X3NyYyBpcyBWYXJpYWJsZVJlZmVyZW5j ZSkKKysJCQkJCQlzcmNfbmFtZXMuQWRkICgoZWxlbWVudF9zcmMgYXMgVmFyaWFibGVSZWZlcmVu Y2UpPy5OYW1lKTsKKysJCQkJfQorKworIAkJCQlmb3IgKGludCBpID0gMDsgaSA8IHRhcmdldF9j b3VudDsgKytpKSB7CisgCQkJCQl2YXIgdGxlID0gc3JjX3R5cGUuVHlwZUFyZ3VtZW50cyBbaV07 CisgCitAQCAtNTIyLDggKzU1MSwxNyBAQCBuYW1lc3BhY2UgTW9uby5DU2hhcnAKKyAJCQkJCQl2 YXJpYWJsZS5QcmVwYXJlQXNzaWdubWVudEFuYWx5c2lzICgoQmxvY2tDb250ZXh0KXJjKTsKKyAJ CQkJCX0KKyAKKy0JCQkJCXZhciBlbGVtZW50X3NyYyA9IHR1cGxlTGl0ZXJhbCA9PSBudWxsID8g bmV3IE1lbWJlckFjY2VzcyAoaW5zdGFuY2UsIE5hbWVkVHVwbGVTcGVjLkdldEVsZW1lbnRQcm9w ZXJ0eU5hbWUgKGkpKSA6IHR1cGxlTGl0ZXJhbC5FbGVtZW50cyBbaV0uRXhwcjsKKy0JCQkJCXRh cmdldEV4cHJzIFtpXSA9IG5ldyBTaW1wbGVBc3NpZ24gKHRhcmdldEV4cHJzIFtpXSwgZWxlbWVu dF9zcmMpLlJlc29sdmUgKHJjKTsKKysJCQkJCXZhciBlbGVtZW50X3RhcmdldCA9ICh0YXJnZXRF eHBycyBbaV0gYXMgU2ltcGxlTmFtZSk/Lkxvb2t1cE5hbWVFeHByZXNzaW9uIChyYywgTWVtYmVy TG9va3VwUmVzdHJpY3Rpb25zLk5vbmUpOworKworKwkJCQkJaWYgKGVsZW1lbnRfdGFyZ2V0ICE9 IG51bGwgJiYgc3JjX25hbWVzLkNvbnRhaW5zICgoZWxlbWVudF90YXJnZXQgYXMgVmFyaWFibGVS ZWZlcmVuY2UpPy5OYW1lKSkgeworKwkJCQkJCXZhciB0ZW1wVHlwZSA9IGVsZW1lbnRfdGFyZ2V0 LlJlc29sdmUgKHJjKS5UeXBlOworKworKwkJCQkJCXZhciB0ZW1wID0gbmV3IExvY2FsVGVtcG9y YXJ5ICh0ZW1wVHlwZSk7CisrCQkJCQkJdGVtcEV4cHJzLkFkZCAobmV3IFNpbXBsZUFzc2lnbiAo dGVtcCwgZWxlbWVudF9zcmNzIFtpXSkuUmVzb2x2ZSAocmMpKTsKKysJCQkJCQl0YXJnZXRFeHBy cyBbaV0gPSBuZXcgU2ltcGxlQXNzaWduICh0YXJnZXRFeHBycyBbaV0sIHRlbXApLlJlc29sdmUg KHJjKTsKKysJCQkJCX0gZWxzZSB7CisrCQkJCQkJdGFyZ2V0RXhwcnMgW2ldID0gbmV3IFNpbXBs ZUFzc2lnbiAodGFyZ2V0RXhwcnMgW2ldLCBlbGVtZW50X3NyY3MgW2ldKS5SZXNvbHZlIChyYyk7 CisrCQkJCQl9CisgCQkJCX0KKyAKKyAJCQkJZWNsYXNzID0gRXhwckNsYXNzLlZhbHVlOworQEAg LTU1Nyw5ICs1OTUsMjQgQEAgbmFtZXNwYWNlIE1vbm8uQ1NoYXJwCisgCQkJaWYgKGluc3RhbmNl ICE9IG51bGwpCisgCQkJCSgoRXhwcmVzc2lvblN0YXRlbWVudClzb3VyY2UpLkVtaXRTdGF0ZW1l bnQgKGVjKTsKKyAKKy0JCQlmb3JlYWNoIChFeHByZXNzaW9uU3RhdGVtZW50IGV4cHIgaW4gdGFy Z2V0RXhwcnMpCisrCQkJZm9yZWFjaCAoRXhwcmVzc2lvblN0YXRlbWVudCBleHByIGluIHRlbXBF eHBycykgeworKwkJCQl2YXIgdGVtcCA9IChleHByIGFzIEFzc2lnbik/LlRhcmdldCBhcyBMb2Nh bFRlbXBvcmFyeTsKKysJCQkJaWYgKHRlbXAgPT0gbnVsbCkKKysJCQkJCWNvbnRpbnVlOworKwor KwkJCQl0ZW1wLkFkZHJlc3NPZiAoZWMsIEFkZHJlc3NPcC5Mb2FkU3RvcmUpOworKwkJCQllYy5F bWl0IChPcENvZGVzLkluaXRvYmosIHRlbXAuVHlwZSk7CisrCQkJCWV4cHIuRW1pdCAoZWMpOwor KwkJCX0KKysKKysJCQlmb3JlYWNoIChFeHByZXNzaW9uU3RhdGVtZW50IGV4cHIgaW4gdGFyZ2V0 RXhwcnMpIHsKKyAJCQkJZXhwci5FbWl0IChlYyk7CisgCisrCQkJCXZhciB0ZW1wID0gKGV4cHIg YXMgQXNzaWduKT8uU291cmNlIGFzIExvY2FsVGVtcG9yYXJ5OworKwkJCQlpZiAodGVtcCAhPSBu dWxsKQorKwkJCQkJdGVtcC5SZWxlYXNlIChlYyk7CisrCQkJfQorKworIAkJCXZhciBjdG9yID0g TWVtYmVyQ2FjaGUuRmluZE1lbWJlciAodHlwZSwgTWVtYmVyRmlsdGVyLkNvbnN0cnVjdG9yIChu dWxsKSwgQmluZGluZ1Jlc3RyaWN0aW9uLkRlY2xhcmVkT25seSB8IEJpbmRpbmdSZXN0cmljdGlv bi5JbnN0YW5jZU9ubHkpIGFzIE1ldGhvZFNwZWM7CisgCQkJZWMuRW1pdCAoT3BDb2Rlcy5OZXdv YmosIGN0b3IpOworIAkJfQorQEAgLTU3NCw5ICs2MjcsMjQgQEAgbmFtZXNwYWNlIE1vbm8uQ1No YXJwCisgCQkJCisgCQkJaWYgKGluc3RhbmNlICE9IG51bGwpCisgCQkJCSgoRXhwcmVzc2lvblN0 YXRlbWVudCkgc291cmNlKS5FbWl0U3RhdGVtZW50IChlYyk7CistCQkJCistCQkJZm9yZWFjaCAo RXhwcmVzc2lvblN0YXRlbWVudCBleHByIGluIHRhcmdldEV4cHJzKQorKworKwkJCWZvcmVhY2gg KEV4cHJlc3Npb25TdGF0ZW1lbnQgZXhwciBpbiB0ZW1wRXhwcnMpIHsKKysJCQkJdmFyIHRlbXAg PSAoZXhwciBhcyBBc3NpZ24pPy5UYXJnZXQgYXMgTG9jYWxUZW1wb3Jhcnk7CisrCQkJCWlmICh0 ZW1wID09IG51bGwpCisrCQkJCQljb250aW51ZTsKKysKKysJCQkJdGVtcC5BZGRyZXNzT2YgKGVj LCBBZGRyZXNzT3AuTG9hZFN0b3JlKTsKKysJCQkJZWMuRW1pdCAoT3BDb2Rlcy5Jbml0b2JqLCB0 ZW1wLlR5cGUpOworKwkJCQlleHByLkVtaXRTdGF0ZW1lbnQgKGVjKTsKKysJCQl9CisrCisrCQkJ Zm9yZWFjaCAoRXhwcmVzc2lvblN0YXRlbWVudCBleHByIGluIHRhcmdldEV4cHJzKSB7CisgCQkJ CWV4cHIuRW1pdFN0YXRlbWVudCAoZWMpOworKworKwkJCQl2YXIgdGVtcCA9IChleHByIGFzIEFz c2lnbik/LlNvdXJjZSBhcyBMb2NhbFRlbXBvcmFyeTsKKysJCQkJaWYgKHRlbXAgIT0gbnVsbCkK KysJCQkJCXRlbXAuUmVsZWFzZSAoZWMpOworKwkJCX0KKyAJCX0KKyAKKyAJCXB1YmxpYyB2b2lk IEVtaXQgKEVtaXRDb250ZXh0IGVjLCBib29sIGxlYXZlX2NvcHkpCitAQCAtNTk0LDYgKzY2Miw3 IEBAIG5hbWVzcGFjZSBNb25vLkNTaGFycAorIAorIAkJcHVibGljIG92ZXJyaWRlIHZvaWQgRmxv d0FuYWx5c2lzIChGbG93QW5hbHlzaXNDb250ZXh0IGZjKQorIAkJeworKwkJCXNvdXJjZS5GbG93 QW5hbHlzaXMgKGZjKTsKKyAJCQlmb3JlYWNoICh2YXIgZXhwciBpbiB0YXJnZXRFeHBycykKKyAJ CQkJZXhwci5GbG93QW5hbHlzaXMgKGZjKTsKKyAJCX0KK2RpZmYgLS1naXQgYS9tY3MvbnVuaXQy NC9DbGllbnRVdGlsaXRpZXMvdXRpbC9Bc3NlbWJseUluZm8uY3MgYi9tY3MvbnVuaXQyNC9DbGll bnRVdGlsaXRpZXMvdXRpbC9Bc3NlbWJseUluZm8uY3MKK2luZGV4IDkxOWNhMDdhY2UzLi42NDg5 YzFiMmE1OCAxMDA2NDQKKy0tLSBhL21jcy9udW5pdDI0L0NsaWVudFV0aWxpdGllcy91dGlsL0Fz c2VtYmx5SW5mby5jcworKysrIGIvbWNzL251bml0MjQvQ2xpZW50VXRpbGl0aWVzL3V0aWwvQXNz ZW1ibHlJbmZvLmNzCitAQCAtNSw3ICs1LDMgQEAKKyAvLyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorIA0KKyB1c2luZyBT eXN0ZW0uUmVmbGVjdGlvbjsNCistDQorLVthc3NlbWJseTogQXNzZW1ibHlEZWxheVNpZ24oZmFs c2UpXQ0KKy1bYXNzZW1ibHk6IEFzc2VtYmx5S2V5RmlsZSgiLi4vLi4vbnVuaXQuc25rIildDQor LVthc3NlbWJseTogQXNzZW1ibHlLZXlOYW1lKCIiKV0NCitkaWZmIC0tZ2l0IGEvbWNzL251bml0 MjQvQ29uc29sZVJ1bm5lci9udW5pdC1jb25zb2xlL0Fzc2VtYmx5SW5mby5jcyBiL21jcy9udW5p dDI0L0NvbnNvbGVSdW5uZXIvbnVuaXQtY29uc29sZS9Bc3NlbWJseUluZm8uY3MKK2luZGV4IDkx OWNhMDdhY2UzLi42NDg5YzFiMmE1OCAxMDA2NDQKKy0tLSBhL21jcy9udW5pdDI0L0NvbnNvbGVS dW5uZXIvbnVuaXQtY29uc29sZS9Bc3NlbWJseUluZm8uY3MKKysrKyBiL21jcy9udW5pdDI0L0Nv bnNvbGVSdW5uZXIvbnVuaXQtY29uc29sZS9Bc3NlbWJseUluZm8uY3MKK0BAIC01LDcgKzUsMyBA QAorIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioNCisgDQorIHVzaW5nIFN5c3RlbS5SZWZsZWN0aW9uOw0KKy0NCistW2Fz c2VtYmx5OiBBc3NlbWJseURlbGF5U2lnbihmYWxzZSldDQorLVthc3NlbWJseTogQXNzZW1ibHlL ZXlGaWxlKCIuLi8uLi9udW5pdC5zbmsiKV0NCistW2Fzc2VtYmx5OiBBc3NlbWJseUtleU5hbWUo IiIpXQ0KK2RpZmYgLS1naXQgYS9tY3MvbnVuaXQyNC9OVW5pdENvcmUvY29yZS9Bc3NlbWJseUlu Zm8uY3MgYi9tY3MvbnVuaXQyNC9OVW5pdENvcmUvY29yZS9Bc3NlbWJseUluZm8uY3MKK2luZGV4 IDc0NzAzMmM3ZTYzLi4yZjY2ZDgwMjIyYyAxMDA2NDQKKy0tLSBhL21jcy9udW5pdDI0L05Vbml0 Q29yZS9jb3JlL0Fzc2VtYmx5SW5mby5jcworKysrIGIvbWNzL251bml0MjQvTlVuaXRDb3JlL2Nv cmUvQXNzZW1ibHlJbmZvLmNzCitAQCAtNyw3ICs3LDMgQEAgdXNpbmcgU3lzdGVtOworIHVzaW5n IFN5c3RlbS5SZWZsZWN0aW9uOw0KKyANCisgW2Fzc2VtYmx5OiBDTFNDb21wbGlhbnQodHJ1ZSld DQorLQ0KKy1bYXNzZW1ibHk6IEFzc2VtYmx5RGVsYXlTaWduKGZhbHNlKV0NCistW2Fzc2VtYmx5 OiBBc3NlbWJseUtleUZpbGUoIi4uLy4uL251bml0LnNuayIpXQ0KKy1bYXNzZW1ibHk6IEFzc2Vt Ymx5S2V5TmFtZSgiIildDQorZGlmZiAtLWdpdCBhL21jcy9udW5pdDI0L05Vbml0Q29yZS9pbnRl cmZhY2VzL0Fzc2VtYmx5SW5mby5jcyBiL21jcy9udW5pdDI0L05Vbml0Q29yZS9pbnRlcmZhY2Vz L0Fzc2VtYmx5SW5mby5jcworaW5kZXggZmE4NjczMmIzZDMuLmVmZWFlY2YxOTg2IDEwMDY0NAor LS0tIGEvbWNzL251bml0MjQvTlVuaXRDb3JlL2ludGVyZmFjZXMvQXNzZW1ibHlJbmZvLmNzCisr KysgYi9tY3MvbnVuaXQyNC9OVW5pdENvcmUvaW50ZXJmYWNlcy9Bc3NlbWJseUluZm8uY3MKK0BA IC04LDcgKzgsMyBAQCB1c2luZyBTeXN0ZW07CisgdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247DQor IA0KKyBbYXNzZW1ibHk6IENMU0NvbXBsaWFudCh0cnVlKV0NCistDQorLVthc3NlbWJseTogQXNz ZW1ibHlEZWxheVNpZ24oZmFsc2UpXQ0KKy1bYXNzZW1ibHk6IEFzc2VtYmx5S2V5RmlsZSgiLi4v Li4vbnVuaXQuc25rIildDQorLVthc3NlbWJseTogQXNzZW1ibHlLZXlOYW1lKCIiKV0NCitkaWZm IC0tZ2l0IGEvbWNzL251bml0MjQvTlVuaXRFeHRlbnNpb25zL2NvcmUvQXNzZW1ibHlJbmZvLmNz IGIvbWNzL251bml0MjQvTlVuaXRFeHRlbnNpb25zL2NvcmUvQXNzZW1ibHlJbmZvLmNzCitpbmRl eCBmYTg2NzMyYjNkMy4uZWZlYWVjZjE5ODYgMTAwNjQ0CistLS0gYS9tY3MvbnVuaXQyNC9OVW5p dEV4dGVuc2lvbnMvY29yZS9Bc3NlbWJseUluZm8uY3MKKysrKyBiL21jcy9udW5pdDI0L05Vbml0 RXh0ZW5zaW9ucy9jb3JlL0Fzc2VtYmx5SW5mby5jcworQEAgLTgsNyArOCwzIEBAIHVzaW5nIFN5 c3RlbTsKKyB1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsNCisgDQorIFthc3NlbWJseTogQ0xTQ29t cGxpYW50KHRydWUpXQ0KKy0NCistW2Fzc2VtYmx5OiBBc3NlbWJseURlbGF5U2lnbihmYWxzZSld DQorLVthc3NlbWJseTogQXNzZW1ibHlLZXlGaWxlKCIuLi8uLi9udW5pdC5zbmsiKV0NCistW2Fz c2VtYmx5OiBBc3NlbWJseUtleU5hbWUoIiIpXQ0KK2RpZmYgLS1naXQgYS9tY3MvbnVuaXQyNC9O VW5pdEV4dGVuc2lvbnMvZnJhbWV3b3JrL0Fzc2VtYmx5SW5mby5jcyBiL21jcy9udW5pdDI0L05V bml0RXh0ZW5zaW9ucy9mcmFtZXdvcmsvQXNzZW1ibHlJbmZvLmNzCitpbmRleCBhOTU1M2Y2OTFj ZC4uMmI0YjViZmIzNDAgMTAwNjQ0CistLS0gYS9tY3MvbnVuaXQyNC9OVW5pdEV4dGVuc2lvbnMv ZnJhbWV3b3JrL0Fzc2VtYmx5SW5mby5jcworKysrIGIvbWNzL251bml0MjQvTlVuaXRFeHRlbnNp b25zL2ZyYW1ld29yay9Bc3NlbWJseUluZm8uY3MKK0BAIC04LDcgKzgsMyBAQCB1c2luZyBTeXN0 ZW07CisgdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247DQorIA0KKyBbYXNzZW1ibHk6IENMU0NvbXBs aWFudCh0cnVlKV0NCistDQorLVthc3NlbWJseTogQXNzZW1ibHlEZWxheVNpZ24oZmFsc2UpXQ0K Ky1bYXNzZW1ibHk6IEFzc2VtYmx5S2V5RmlsZSgiLi4vLi4vbnVuaXQuc25rIildDQorLVthc3Nl bWJseTogQXNzZW1ibHlLZXlOYW1lKCIiKV0NCitkaWZmIC0tZ2l0IGEvbWNzL251bml0MjQvTlVu aXRGcmFtZXdvcmsvZnJhbWV3b3JrL0Fzc2VtYmx5SW5mby5jcyBiL21jcy9udW5pdDI0L05Vbml0 RnJhbWV3b3JrL2ZyYW1ld29yay9Bc3NlbWJseUluZm8uY3MKK2luZGV4IGZhODY3MzJiM2QzLi5l ZmVhZWNmMTk4NiAxMDA2NDQKKy0tLSBhL21jcy9udW5pdDI0L05Vbml0RnJhbWV3b3JrL2ZyYW1l d29yay9Bc3NlbWJseUluZm8uY3MKKysrKyBiL21jcy9udW5pdDI0L05Vbml0RnJhbWV3b3JrL2Zy YW1ld29yay9Bc3NlbWJseUluZm8uY3MKK0BAIC04LDcgKzgsMyBAQCB1c2luZyBTeXN0ZW07Cisg dXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247DQorIA0KKyBbYXNzZW1ibHk6IENMU0NvbXBsaWFudCh0 cnVlKV0NCistDQorLVthc3NlbWJseTogQXNzZW1ibHlEZWxheVNpZ24oZmFsc2UpXQ0KKy1bYXNz ZW1ibHk6IEFzc2VtYmx5S2V5RmlsZSgiLi4vLi4vbnVuaXQuc25rIildDQorLVthc3NlbWJseTog QXNzZW1ibHlLZXlOYW1lKCIiKV0NCitkaWZmIC0tZ2l0IGEvbWNzL251bml0MjQvTlVuaXRNb2Nr cy9tb2Nrcy9Bc3NlbWJseUluZm8uY3MgYi9tY3MvbnVuaXQyNC9OVW5pdE1vY2tzL21vY2tzL0Fz c2VtYmx5SW5mby5jcworaW5kZXggNTk5YjA0Y2U0NTMuLmY4N2FlNjAyODEwIDEwMDY0NAorLS0t IGEvbWNzL251bml0MjQvTlVuaXRNb2Nrcy9tb2Nrcy9Bc3NlbWJseUluZm8uY3MKKysrKyBiL21j cy9udW5pdDI0L05Vbml0TW9ja3MvbW9ja3MvQXNzZW1ibHlJbmZvLmNzCitAQCAtNiw3ICs2LDMg QEAKKyANCisgdXNpbmcgU3lzdGVtOw0KKyB1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsNCistDQor LVthc3NlbWJseTogQXNzZW1ibHlEZWxheVNpZ24oZmFsc2UpXQ0KKy1bYXNzZW1ibHk6IEFzc2Vt Ymx5S2V5RmlsZSgiLi4vLi4vbnVuaXQuc25rIildDQorLVthc3NlbWJseTogQXNzZW1ibHlLZXlO YW1lKCIiKV0NCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3RzL2R0ZXN0LTA2Ni5jcyBiL21jcy90ZXN0 cy9kdGVzdC0wNjYuY3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4u ODkzZmI0MGRmZmEKKy0tLSAvZGV2L251bGwKKysrKyBiL21jcy90ZXN0cy9kdGVzdC0wNjYuY3MK K0BAIC0wLDAgKzEsMTMgQEAKKytjbGFzcyBDCisreworKwlzdGF0aWMgdm9pZCBNYWluKCkKKysJ eworKwkJb2JqZWN0IG8gPSAxOworKwkJZHluYW1pYyBkID0gMTsKKysJCQorKwkJdmFyIGEgPSBu ZXdbXSB7CisrCQkJbmV3IHsgWCA9IG8gfSwKKysJCQluZXcgeyBYID0gZCB9CisrCQl9OworKwl9 CisrfQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy9ndGVzdC02NDcuY3MgYi9tY3MvdGVzdHMvZ3Rl c3QtNjQ3LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjRhYWU2 NDFmODVmCistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvdGVzdHMvZ3Rlc3QtNjQ3LmNzCitAQCAt MCwwICsxLDM0IEBACisrdXNpbmcgU3lzdGVtOworKworK3B1YmxpYyBjbGFzcyBQcm9ncmFtCisr eworKwlwdWJsaWMgc3RhdGljIGludCBNYWluICgpCisrCXsKKysJCWludCBCID0gZGVmYXVsdCAo TXlTdHJ1Y3Q/KTsgCisrCQlpZiAoTXlTdHJ1Y3QuY291bnRlciAhPSAxKQorKwkJCXJldHVybiAx OworKworKwkJc3dpdGNoIChkZWZhdWx0IChNeVN0cnVjdD8pKSB7CisrCQkJY2FzZSAwOgorKwkJ CQlicmVhazsKKysJCQlkZWZhdWx0OgorKwkJCQlyZXR1cm4gMjsKKysJCX0KKysKKysJCWlmIChN eVN0cnVjdC5jb3VudGVyICE9IDIpCisrCQkJcmV0dXJuIDQ7CisrCisrCQlyZXR1cm4gMDsKKysJ fQorKworKwlwdWJsaWMgc3RydWN0IE15U3RydWN0CisrCXsKKysJCXB1YmxpYyBzdGF0aWMgaW50 IGNvdW50ZXI7CisrCisrCQlwdWJsaWMgc3RhdGljIGltcGxpY2l0IG9wZXJhdG9yIGludCAoTXlT dHJ1Y3Q/IHMpCisrCQl7CisrCQkJKytjb3VudGVyOworKwkJCXJldHVybiAwOworKwkJfQorKwl9 CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3Rz L3Rlc3QtOTI4LmNzIGIvbWNzL3Rlc3RzL3Rlc3QtOTI4LmNzCitpbmRleCA5MDE4MDEzNzk1Ny4u MjkwZWU0ZDFmYjMgMTAwNjQ0CistLS0gYS9tY3MvdGVzdHMvdGVzdC05MjguY3MKKysrKyBiL21j cy90ZXN0cy90ZXN0LTkyOC5jcworQEAgLTE1LDYgKzE1LDI0IEBAIHVuc2FmZSBjbGFzcyBQcm9n cmFtCisgCQl9CisgCX0KKyAKKysJcHVibGljIHN0YXRpYyBib29sIFN0cmluZ051bGwgKHN0cmlu ZyBzKQorKwl7CisrCQl1bnNhZmUgeworKwkJCWZpeGVkIChjaGFyICphID0gcykgeworKwkJCQly ZXR1cm4gYSA9PSBudWxsOworKwkJCX0KKysJCX0KKysJfQorKworKwlwdWJsaWMgc3RhdGljIGJv b2wgQXJyYXlOdWxsIChpbnRbXSBhKQorKwl7CisrCQl1bnNhZmUgeworKwkJCWZpeGVkIChpbnQg KmUgPSBhKSB7CisrCQkJCXJldHVybiBlID09IG51bGw7CisrCQkJfQorKwkJfQorKwl9CisrCisg CXB1YmxpYyBzdGF0aWMgaW50IE1haW4gKCkKKyAJeworIAkJVGVzdCAoKTsKK0BAIC0yNCw2ICs0 MiwxMiBAQCB1bnNhZmUgY2xhc3MgUHJvZ3JhbQorIAkJaWYgKGx2LklzUGlubmVkKQorIAkJCXJl dHVybiAxOworIAorKwkJaWYgKCFTdHJpbmdOdWxsIChudWxsKSkKKysJCQlyZXR1cm4gMTsKKysK KysJCWlmICghQXJyYXlOdWxsIChudWxsKSkKKysJCQlyZXR1cm4gMjsKKysKKyAJCXJldHVybiAw OworIAl9CisgfQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LTk0OC5jcyBiL21jcy90ZXN0 cy90ZXN0LTk0OC5jcworaW5kZXggMzRiM2FiOWEwYzQuLjU2M2UzN2RjN2Q1IDEwMDY0NAorLS0t IGEvbWNzL3Rlc3RzL3Rlc3QtOTQ4LmNzCisrKysgYi9tY3MvdGVzdHMvdGVzdC05NDguY3MKK0BA IC0xLDQgKzEsNCBAQAorLS8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo3LjIgLXVu c2FmZQorKy8vIENvbXBpbGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjo3LjIgL3Vuc2FmZQorIAor IHVzaW5nIFN5c3RlbTsKKyAKK0BAIC03LDEwICs3LDE2IEBAIGNsYXNzIFgKKyAJcHVibGljIHN0 YXRpYyB2b2lkIE1haW4gKCkKKyAJeworIAkJU3BhbjxpbnQ+IHN0YWNrU3BhbiA9IHN0YWNrYWxs b2MgaW50WzEwMF07CisrCisrCQlib29sIGIgPSBmYWxzZTsKKysKKysJCXZhciByMSA9ICFiID8g c3RhY2thbGxvYyBjaGFyWzFdIDogdGhyb3cgbnVsbDsKKysJCXZhciByMiA9IGIgPyB0aHJvdyBu dWxsIDogc3RhY2thbGxvYyBjaGFyWzFdOworKwkJdmFyIHIzID0gYiA/IHN0YWNrYWxsb2MgY2hh clsxXSA6IHN0YWNrYWxsb2MgY2hhclsyXTsKKyAJfQorIAorKwkvLyBEaXNhYmxlcyB2ZXJpZmll cgorIAl1bnNhZmUgdm9pZCBGb28gKCkKKyAJeworLQorIAl9CistfQorXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCisrfQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LTk1MC5jcyBiL21j cy90ZXN0cy90ZXN0LTk1MC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAw MDAwLi5mZWY3NjRjODVjYworLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtOTUw LmNzCitAQCAtMCwwICsxLDEyIEBACisrdXNpbmcgU3lzdGVtOworKworK3B1YmxpYyBjbGFzcyBC CisreworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQlpbnQgYSA9IDFfMF8z OworKwkJZG91YmxlIGIgPSAwX18wZSsxXzE7CisrCQlpbnQgYyA9IDBiMF9fMV8wOworKwkJaW50 IGQgPSAweDBfX0ZfMDsKKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlm ZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LTk2MC5jcyBiL21jcy90ZXN0cy90ZXN0LTk2MC5jcwor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5hYzJhMWNhNzQzNQorLS0t IC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtOTYwLmNzCitAQCAtMCwwICsxLDIwIEBA CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOjcuMgorKworK3B1YmxpYyBjbGFz cyBCCisreworKwlwcml2YXRlIHByb3RlY3RlZCBlbnVtIEUKKysJeworKwl9CisrCisrCXB1Ymxp YyBpbnQgSW5kZXggeyBnZXQ7IHByb3RlY3RlZCBwcml2YXRlIHNldDsgfQorKworKwlpbnRlcm5h bCBzdHJpbmcgUzEgeyBnZXQ7IHByaXZhdGUgcHJvdGVjdGVkIHNldDsgfQorKworKwlwcm90ZWN0 ZWQgc3RyaW5nIFMyIHsgZ2V0OyBwcml2YXRlIHByb3RlY3RlZCBzZXQ7IH0KKysKKysJcHJpdmF0 ZSBwcm90ZWN0ZWQgaW50IGZpZWxkOworKworKwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQor Kwl7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9t Y3MvdGVzdHMvdGVzdC05NjEuY3MgYi9tY3MvdGVzdHMvdGVzdC05NjEuY3MKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uZWZlMTk2NzM4NzUKKy0tLSAvZGV2L251bGwK KysrKyBiL21jcy90ZXN0cy90ZXN0LTk2MS5jcworQEAgLTAsMCArMSwzNCBAQAorKy8vIENvbXBp bGVyIG9wdGlvbnM6IC1sYW5ndmVyc2lvbjpsYXRlc3QKKysKKyt1c2luZyBTeXN0ZW07CisrCisr cHVibGljIHN0YXRpYyBjbGFzcyBCIHsKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJ eworKwkJaW50IGxvID0gMTsKKysJCUJhciAoaW4gbG8pOwkJCisrCX0KKysKKysJcHVibGljIHN0 YXRpYyB2b2lkIEJhciAoaW4gaW50IGFyZykKKysJeworKwl9CisrCisrCXN0YXRpYyB2b2lkIEZv byAodGhpcyBpbiBpbnQgc3JjKQorKwl7CisrCQlEIHAgPSAoaW4gaW50IGEpID0+IHt9OworKwl9 CisrCisrfQorKworK2RlbGVnYXRlIHZvaWQgRCAoaW4gaW50IGFyZyk7CisrCisrY2xhc3MgTQor K3sKKysJaW50IHRoaXNbaW4gaW50IGFdIHsgc2V0IHsgfSB9CisrCXB1YmxpYyBzdGF0aWMgaW1w bGljaXQgb3BlcmF0b3Igc3RyaW5nIChpbiBNIG0pID0+IG51bGw7CisrCXB1YmxpYyBNIChpbiBp bnQgYXJnKSB7IH0KKysKKysJcHVibGljIHZvaWQgVGVzdDIgKGluIGludCBhcmcpCisrCXsKKysJ fQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0 cy90ZXN0LWFub24tMTIzLmNzIGIvbWNzL3Rlc3RzL3Rlc3QtYW5vbi0xMjMuY3MKK2luZGV4IDkx YzcyYjQ1YWZlLi40NWFhYjI3YzBhNSAxMDA2NDQKKy0tLSBhL21jcy90ZXN0cy90ZXN0LWFub24t MTIzLmNzCisrKysgYi9tY3MvdGVzdHMvdGVzdC1hbm9uLTEyMy5jcworQEAgLTEsMyArMSw0IEBA CisrLy8gQ29tcGlsZXIgb3B0aW9uczogLWxhbmd2ZXJzaW9uOmxhdGVzdAorIC8vIENsb25pbmcg dGVzdHMKKyAKKyB1c2luZyBTeXN0ZW07CitAQCAtMTAzLDcgKzEwNCwxMSBAQCBwdWJsaWMgY2xh c3MgQyA6IEIKKyAJCQlkZWZhdWx0OgorIAkJCQlicmVhazsKKyAJCQl9CistCQl9KTsJCQorKwkJ fSk7CisrCisrCQlUZXN0ICgoKSA9PiB7CisrCQkJY2hhciBjaCA9IGRlZmF1bHQ7CisrCQl9KTsK KyAJCQorIAkJdmFyIGMgPSBuZXcgQyAoKTsKKyAJCWMuSW5zdGFuY2VUZXN0cyAoKTsKK2RpZmYg LS1naXQgYS9tY3MvdGVzdHMvdGVzdC1iaW5hcnlsaXRlcmFsLmNzIGIvbWNzL3Rlc3RzL3Rlc3Qt YmluYXJ5bGl0ZXJhbC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAw Li4zZDljYzg5YmNiZAorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtYmluYXJ5 bGl0ZXJhbC5jcworQEAgLTAsMCArMSw1NyBAQAorKworK2NsYXNzIERlbW8geworKwlzdGF0aWMg aW50IE1haW4gKCkKKysJeworKwkJaWYgKDBiMSAhPSAxKQorKwkJCXJldHVybiAxOworKwkJdmFy IGhleDEgPSAweDEyM3VsOworKwkJdmFyIGJpbjEgID0gMGIxMDAxMDAwMTF1bDsKKysJCXZhciBi aW4xMSA9IDBiMTAwMTAwMDExbHU7CisrCQlpZiAoaGV4MSAhPSBiaW4xKQorKwkJCXJldHVybiAy OworKwkJaWYgKGhleDEgIT0gYmluMTEpCisrCQkJcmV0dXJuIDM7CisrCQlpZiAoaGV4MS5HZXRU eXBlICgpICE9IGJpbjEuR2V0VHlwZSAoKSkKKysJCQlyZXR1cm4gNDsKKysJCWlmIChoZXgxLkdl dFR5cGUgKCkgIT0gYmluMTEuR2V0VHlwZSAoKSkKKysJCQlyZXR1cm4gNTsKKysKKysJCXZhciBo ZXgyID0gMHg3RkZGRkZGRjsKKysJCXZhciBiaW4yID0gMGIxMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExOworKworKwkJaWYgKGhleDIgIT0gYmluMikKKysJCQlyZXR1cm4gNjsKKysJCWlm IChoZXgyLkdldFR5cGUgKCkgIT0gYmluMi5HZXRUeXBlICgpKQorKwkJCXJldHVybiA3OworKwor KwkJdmFyIGhleDMgPSAweEZGRkZGRkZGOworKwkJdmFyIGJpbjMgPSAwYjExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExOworKwkJaWYgKGhleDMgIT0gYmluMykKKysJCQlyZXR1cm4gODsK KysJCWlmIChoZXgzLkdldFR5cGUgKCkgIT0gYmluMy5HZXRUeXBlICgpKQorKwkJCXJldHVybiA5 OworKworKwkJdmFyIGhleDQgPSAweEZGRkZGRkZGdTsKKysJCXZhciBiaW40ID0gMGIxMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMXU7CisrCQlpZiAoaGV4NCAhPSBiaW40KQorKwkJCXJl dHVybiAxMDsKKysJCWlmIChoZXg0LkdldFR5cGUgKCkgIT0gYmluNC5HZXRUeXBlICgpKQorKwkJ CXJldHVybiAxMTsKKysKKysJCXZhciBoZXg1ID0gMHg3RkZGRkZGRkZGRkZGRkZGOworKwkJdmFy IGJpbjUgPSAwYjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTsKKysJCWlmIChoZXg1ICE9IGJpbjUpCisrCQkJcmV0dXJuIDEyOwor KwkJaWYgKGhleDUuR2V0VHlwZSAoKSAhPSBiaW41LkdldFR5cGUgKCkpCisrCQkJcmV0dXJuIDEz OworKworKwkJdmFyIGhleDYgPSAweEZGRkZGRkZGRkZGRkZGRkY7CisrCQl2YXIgYmluNiA9IDBi MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTsKKysJCWlmIChoZXg2ICE9IGJpbjYpCisrCQkJcmV0dXJuIDE0OworKwkJaWYgKGhl eDYuR2V0VHlwZSAoKSAhPSBiaW42LkdldFR5cGUgKCkpCisrCQkJcmV0dXJuIDE1OworKworKwkJ cmV0dXJuIDA7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1n aXQgYS9tY3MvdGVzdHMvdGVzdC1kZWNsLWV4cHItMDUuY3MgYi9tY3MvdGVzdHMvdGVzdC1kZWNs LWV4cHItMDUuY3MKK2luZGV4IDczMGZkNDI3OGNhLi45MDdjZGUwYjhkNyAxMDA2NDQKKy0tLSBh L21jcy90ZXN0cy90ZXN0LWRlY2wtZXhwci0wNS5jcworKysrIGIvbWNzL3Rlc3RzL3Rlc3QtZGVj bC1leHByLTA1LmNzCitAQCAtNiw2ICs2LDExIEBAIGNsYXNzIFgKKyAJCXsKKyAJCQlhcmcgPSBz LlRvU3RyaW5nICgpOworIAkJfQorKworKwkJd2hpbGUgKHRydWUgJiYgQ2FsbCAob3V0IHN0cmlu ZyBzMikpCisrCQl7CisrCQkJYXJnID0gczIuVG9TdHJpbmcgKCk7CisrCQl9CisgCX0KKyAKKyAJ c3RhdGljIGJvb2wgQ2FsbCAob3V0IHN0cmluZyBzKQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90 ZXN0LWRlY2wtZXhwci0wNi5jcyBiL21jcy90ZXN0cy90ZXN0LWRlY2wtZXhwci0wNi5jcworbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi45NzM0ZjJlYzJhNworLS0tIC9k ZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtZGVjbC1leHByLTA2LmNzCitAQCAtMCwwICsx LDE3IEBACisrdXNpbmcgU3lzdGVtOworKworK3B1YmxpYyBjbGFzcyBDCisreworKwlGdW5jPGJv b2w+IGYgPSAoKSA9PiBGb28gKG91dCBpbnQgYXJnKTsKKysKKysJc3RhdGljIGJvb2wgRm9vIChv dXQgaW50IGFyZykKKysJeworKwkJYXJnID0gMjsKKysJCXJldHVybiBmYWxzZTsKKysJfQorKwor KwlwdWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQluZXcgQyAoKTsKKysJfQorK30K K1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0 LWRlZmF1bHQtMDEuY3MgYi9tY3MvdGVzdHMvdGVzdC1kZWZhdWx0LTAxLmNzCitpbmRleCA4MjNl MzNjNDUxYi4uMjhhZmY4MzBjZDkgMTAwNjQ0CistLS0gYS9tY3MvdGVzdHMvdGVzdC1kZWZhdWx0 LTAxLmNzCisrKysgYi9tY3MvdGVzdHMvdGVzdC1kZWZhdWx0LTAxLmNzCitAQCAtNDEsNyArNDEs MTEgQEAgc3RhdGljIGNsYXNzIFgKKyAJc3RhdGljIFN5c3RlbS5GdW5jPGludD4gTTQgKCkKKyAJ eworIAkJcmV0dXJuICgpID0+IGRlZmF1bHQ7CistCX0gCisrCX0KKysKKysJc3RhdGljIHZvaWQg Rm9vIChJSSBhID0gZGVmYXVsdCAoSUkpLCBJSSBiID0gZGVmYXVsdCwgSUkgYyA9IChJSSkgbnVs bCkKKysJeworKwl9CisgfQorIC8qCisgZW51bSBFCitAQCAtNDksNCArNTMsMTAgQEAgZW51bSBF CisgCUEgPSBkZWZhdWx0LAorIAlCID0gZGVmYXVsdCArIDEKKyB9CistKi8KK1wgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQorKyovCisrCisrCisraW50ZXJmYWNlIElJCisreworKworK30KK1wg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LWZp eGVkLTAxLmNzIGIvbWNzL3Rlc3RzL3Rlc3QtZml4ZWQtMDEuY3MKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uNDY4NGIwYzVhMDYKKy0tLSAvZGV2L251bGwKKysrKyBi L21jcy90ZXN0cy90ZXN0LWZpeGVkLTAxLmNzCitAQCAtMCwwICsxLDIwIEBACisrLy8gQ29tcGls ZXIgb3B0aW9uczogLXVuc2FmZSAtbGFuZ3ZlcnNpb246bGF0ZXN0CisrCisrdW5zYWZlIGNsYXNz IEMKKyt7CisrCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCWZpeGVkIChpbnQq IHAgPSBuZXcgRml4YWJsZSAoKSkgeworKwkJCVN5c3RlbS5Db25zb2xlLldyaXRlTGluZSAoKnAp OworKwkJCVN5c3RlbS5Db25zb2xlLldyaXRlTGluZSAocCBbMl0pOworKwkJfQorKwl9CisrCisr CXN0cnVjdCBGaXhhYmxlCisrCXsKKysJCXB1YmxpYyByZWYgaW50IEdldFBpbm5hYmxlUmVmZXJl bmNlICgpCisrCQl7CisrCQkJcmV0dXJuIHJlZiAobmV3IGludFtdIHsgMSwgMiwgMyB9KVswXTsK KysJCX0KKysJfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGlmZiAtLWdpdCBh L21jcy90ZXN0cy90ZXN0LXBhdHRlcm4tMTMuY3MgYi9tY3MvdGVzdHMvdGVzdC1wYXR0ZXJuLTEz LmNzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjMxNWM3YTllNGJl CistLS0gL2Rldi9udWxsCisrKysgYi9tY3MvdGVzdHMvdGVzdC1wYXR0ZXJuLTEzLmNzCitAQCAt MCwwICsxLDE5IEBACisrdXNpbmcgU3lzdGVtOworKworK2NsYXNzIEMgOiBCCisreworKworK30K KysKKytwdWJsaWMgY2xhc3MgQgorK3sKKysJcHVibGljIHN0YXRpYyB2b2lkIE1haW4gKCkKKysJ eworKwkJQyBjID0gbmV3IEMgKCk7CisrCisrCQlpZiAoYyBpcyBCIGIpCisrCQl7CisrCQkJQ29u c29sZS5Xcml0ZUxpbmUgKGIgPT0gbnVsbCk7CisrCQl9CisrCX0KKyt9CitcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvdGVzdHMvdGVzdC1yZWYtMDcuY3MgYi9t Y3MvdGVzdHMvdGVzdC1yZWYtMDcuY3MKK2luZGV4IDRhYTE2NTc5NzUyLi5mMTdjZmI0NDNiNSAx MDA2NDQKKy0tLSBhL21jcy90ZXN0cy90ZXN0LXJlZi0wNy5jcworKysrIGIvbWNzL3Rlc3RzL3Rl c3QtcmVmLTA3LmNzCitAQCAtMSw2ICsxLDYgQEAKKyAvLyBDb21waWxlciBvcHRpb25zOiAtbGFu Z3ZlcnNpb246bGF0ZXN0CisgCistcHVibGljIHJlYWRvbmx5IHBhcnRpYWwgcmVmIHN0cnVjdCBU ZXN0CisrcHVibGljIHJlYWRvbmx5IHJlZiBwYXJ0aWFsIHN0cnVjdCBUZXN0CisgeworIAlwdWJs aWMgc3RhdGljIHZvaWQgTWFpbiAoKQorIAl7CitAQCAtMTQsNiArMTQsMTEgQEAgcHVibGljIHJl YWRvbmx5IHBhcnRpYWwgcmVmIHN0cnVjdCBUZXN0CisgCX0KKyB9CisgCisrcmVmIHBhcnRpYWwg c3RydWN0IFRlc3QKKyt7CisrCisrfQorKworIHJlZiBzdHJ1Y3QgU2Vjb25kCisgeworIAlUZXN0 IGZpZWxkOworZGlmZiAtLWdpdCBhL21jcy90ZXN0cy90ZXN0LXJlZi0xMS5jcyBiL21jcy90ZXN0 cy90ZXN0LXJlZi0xMS5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAw Li44ZDM5MmE3N2QwNworLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtcmVmLTEx LmNzCitAQCAtMCwwICsxLDEzIEBACisrY2xhc3MgUHJvZ3JhbQorK3sKKysJc3RhdGljIGludCB4 OworKwlzdGF0aWMgaW50IHk7CisrCisrICAgIHB1YmxpYyBzdGF0aWMgaW50IE1haW4gKCkKKysg ICAgeworKyAgICAJYm9vbCBiID0gZmFsc2U7CisrICAgICAgICByZWYgaW50IHRhcmdldEJ1Y2tl dCA9IHJlZiBiID8gcmVmIHggOiByZWYgeTsKKysKKysgICAgICAgIHJldHVybiAwOworKyAgICB9 CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvbWNzL3Rlc3Rz L3Rlc3QtcmVmLTEyLmNzIGIvbWNzL3Rlc3RzL3Rlc3QtcmVmLTEyLmNzCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLjc4NmE0MTYyZjRmCistLS0gL2Rldi9udWxsCisr KysgYi9tY3MvdGVzdHMvdGVzdC1yZWYtMTIuY3MKK0BAIC0wLDAgKzEsMjIgQEAKKysvLyBDb21w aWxlciBvcHRpb25zOiAtdW5zYWZlCisrCisrdW5zYWZlIGNsYXNzIFgKKyt7CisrCXB1YmxpYyBz dGF0aWMgdm9pZCBNYWluICgpCisrCXsKKysJCXZvaWQqIHBvaW50ZXIgPSBudWxsOworKyAJCUJh ciAocmVmIEZvbyAocmVmICooYnl0ZSopcG9pbnRlcikpOworKwl9CisrCisrCXN0YXRpYyBpbnQg ZmllbGQ7CisrCisrCXN0YXRpYyByZWYgaW50IEZvbyAocmVmIGJ5dGUgYikKKysJeworKwkJcmV0 dXJuIHJlZiBmaWVsZDsKKysJfQorKworKwlzdGF0aWMgdm9pZCBCYXIgKHJlZiBpbnQgaSkKKysJ eworKworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEv bWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMDIuY3MgYi9tY3MvdGVzdHMvdGVzdC10dXBsZS0wMi5jcwor aW5kZXggYzA0OTI3NTk0NTIuLmFiNzIyNjQyYWViIDEwMDY0NAorLS0tIGEvbWNzL3Rlc3RzL3Rl c3QtdHVwbGUtMDIuY3MKKysrKyBiL21jcy90ZXN0cy90ZXN0LXR1cGxlLTAyLmNzCitAQCAtMjYs NiArMjYsMTEgQEAgY2xhc3MgVHVwbGVDb252ZXJzaW9ucworIAkJKHN0cmluZyB2MSwgb2JqZWN0 IHYyKSBiID0gKCJhIiwgImIiKTsKKyAKKyAJCShpbnQgdjEsIGxvbmcgdjIpPyB4ID0gbnVsbDsK KysKKysgICAgICAgIHZhciBhcnJheSA9IG5ldyBbXSB7CisrICAgICAgICAgICAgKG5hbWU6ICJB Iiwgb2Zmc2V0OiAwKSwKKysgICAgICAgICAgICAobmFtZTogIkIiLCBzaXplOiA0KQorKyAgICAg ICAgfTsJCQorIAl9CisgCisgCXN0YXRpYyB2b2lkIEZvbzxUPiAoVCBhcmcpCitkaWZmIC0tZ2l0 IGEvbWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMDguY3MgYi9tY3MvdGVzdHMvdGVzdC10dXBsZS0wOC5j cworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi5mZDMzNzViNGRmNgor LS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMDguY3MKK0BAIC0wLDAg KzEsMjQgQEAKKyt1c2luZyBTeXN0ZW07CisrdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVy aWM7CisrdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKKysKKytjbGFzcyBYCisreworKwlw dWJsaWMgc3RhdGljIHZvaWQgTWFpbiAoKQorKwl7CisrCQl2YXIgeCA9IG5ldyBYICgpOworKwkJ eC5UZXN0ICgpLldhaXQgKCk7CisrCX0KKysKKysJaW50IGEsIGI7CisrCisrCWFzeW5jIFRhc2sg VGVzdCAoKQorKwl7CisrCQkoYSwgYikgPSBhd2FpdCBXYWl0aW5nICgpOworKwl9CisrCisrCVRh c2s8KGludCwgaW50KT4gV2FpdGluZyAoKQorKwl7CisrCQlyZXR1cm4gVGFzay5Gcm9tUmVzdWx0 ICgoMSwgMykpOworKwl9CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0t Z2l0IGEvbWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMTAuY3MgYi9tY3MvdGVzdHMvdGVzdC10dXBsZS0x MC5jcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi44MmY0ZTAxZWMx ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvbWNzL3Rlc3RzL3Rlc3QtdHVwbGUtMTAuY3MKK0BAIC0w LDAgKzEsOSBAQAorK3VzaW5nIFN5c3RlbS5MaW5xOworKworK2NsYXNzIFByb2dyYW0geworKyAg ICBwdWJsaWMgc3RhdGljIGludCBNYWluICgpCisrICAgIHsKKysgICAgICAgIHZhciBsID0gKGZy b20gZiBpbiAodHlwZW9mIChQcm9ncmFtKSkuR2V0RmllbGRzKCkgc2VsZWN0IChuYW1lOiBmLk5h bWUsIG9mZnNldDogMCkpLlRvTGlzdCgpOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyt9 CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9tY3MvdGVzdHMvdGVz dC10dXBsZS0xMS5jcyBiL21jcy90ZXN0cy90ZXN0LXR1cGxlLTExLmNzCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAuLmIyYWViMjQwMjZjCistLS0gL2Rldi9udWxsCisr KysgYi9tY3MvdGVzdHMvdGVzdC10dXBsZS0xMS5jcworQEAgLTAsMCArMSwyMCBAQAorK3VzaW5n IFN5c3RlbTsKKysKKytjbGFzcyBQcm9ncmFtCisreworKwlwdWJsaWMgc3RhdGljIGludCBNYWlu ICgpCisrCXsKKysJCWludCB4ID0gMTsKKysJCWludCB5ID0gMjsKKysKKysJCSh4LCB5KSA9ICh5 LCB4KTsKKysKKysJCWlmICh4ICE9IDIpCisrCQkJcmV0dXJuIDE7CisrCisrCQlpZiAoeSAhPSAx KQorKwkJCXJldHVybiAyOworKworKwkJcmV0dXJuIDA7CisrCX0KKyt9CitkaWZmIC0tZ2l0IGEv bWNzL3Rlc3RzL3Zlci1pbC1uZXRfNF94LnhtbCBiL21jcy90ZXN0cy92ZXItaWwtbmV0XzRfeC54 bWwKK2luZGV4IDRkYmM3MDQyYThhLi4yYmRlODI3MDMzOCAxMDA2NDQKKy0tLSBhL21jcy90ZXN0 cy92ZXItaWwtbmV0XzRfeC54bWwKKysrKyBiL21jcy90ZXN0cy92ZXItaWwtbmV0XzRfeC54bWwK K0BAIC0zMTY4LDYgKzMxNjgsMzMgQEAKKyAgICAgICA8L21ldGhvZD4KKyAgICAgPC90eXBlPgor ICAgPC90ZXN0PgorKyAgPHRlc3QgbmFtZT0iZHRlc3QtMDY2LmNzIj4KKysgICAgPHR5cGUgbmFt ZT0iQyI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE0NSI+Cisr ICAgICAgICA8c2l6ZT40MTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9k IG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6 ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlwZSBuYW1lPSImbHQ7 Jmd0O19fQW5vblR5cGUwYDFbJmx0O1gmZ3Q7X19UXSI+CisrICAgICAgPG1ldGhvZCBuYW1lPSIm bHQ7WCZndDtfX1QgZ2V0X1goKSIgYXR0cnM9IjIxODIiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6 ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IkJvb2xlYW4gRXF1YWxz KFN5c3RlbS5PYmplY3QpIiBhdHRycz0iMTk4Ij4KKysgICAgICAgIDxzaXplPjM5PC9zaXplPgor KyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgR2V0SGFzaENvZGUo KSIgYXR0cnM9IjE5OCI+CisrICAgICAgICA8c2l6ZT42Mzwvc2l6ZT4KKysgICAgICA8L21ldGhv ZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlN5c3RlbS5TdHJpbmcgVG9TdHJpbmcoKSIgYXR0cnM9 IjE5OCI+CisrICAgICAgICA8c2l6ZT42Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAg ICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoJmx0O1gmZ3Q7X19UKSIgYXR0cnM9IjYyNzgiPgor KyAgICAgICAgPHNpemU+MTQ8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4K KysgIDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9ImR0ZXN0LWFub250eXBlLTAxLmNzIj4KKyAgICAg PHR5cGUgbmFtZT0iQyI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9 IjE1MCI+CitAQCAtMTEwNjQsNyArMTEwOTEsNyBAQAorICAgICA8L3R5cGU+CisgICAgIDx0eXBl IG5hbWU9IlgiPgorICAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgQmVlcihTeXN0ZW0uTnVsbGFi bGVgMVtJcmlzaFB1Yl0pIiBhdHRycz0iMTQ1Ij4KKy0gICAgICAgIDxzaXplPjcyPC9zaXplPgor KyAgICAgICAgPHNpemU+NjA8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhv ZCBuYW1lPSJJbnQzMiBUZXN0KFN5c3RlbS5OdWxsYWJsZWAxW1N5c3RlbS5JbnQzMl0pIiBhdHRy cz0iMTQ1Ij4KKyAgICAgICAgIDxzaXplPjYyPC9zaXplPgorQEAgLTE5NTA4LDcgKzE5NTM1LDcg QEAKKyAgICAgPC90eXBlPgorICAgICA8dHlwZSBuYW1lPSJDIj4KKyAgICAgICA8bWV0aG9kIG5h bWU9IkludDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+CistICAgICAgICA8c2l6ZT4yNjc8L3NpemU+ CisrICAgICAgICA8c2l6ZT4yNTU8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1l dGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKyAgICAgICAgIDxzaXplPjc8 L3NpemU+CitAQCAtMTk3NDIsNyArMTk3NjksNyBAQAorICAgPHRlc3QgbmFtZT0iZ3Rlc3QtNjI5 LmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iUHJvZ3JhbSI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJW b2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+CistICAgICAgICA8c2l6ZT4xMTY8L3NpemU+CisrICAg ICAgICA8c2l6ZT4xMjE8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBu YW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKyAgICAgICAgIDxzaXplPjc8L3NpemU+ CitAQCAtMjAxNDcsNiArMjAxNzQsMjEgQEAKKyAgICAgICA8L21ldGhvZD4KKyAgICAgPC90eXBl PgorICAgPC90ZXN0PgorKyAgPHRlc3QgbmFtZT0iZ3Rlc3QtNjQ3LmNzIj4KKysgICAgPHR5cGUg bmFtZT0iUHJvZ3JhbSI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBNYWluKCkiIGF0dHJz PSIxNTAiPgorKyAgICAgICAgPHNpemU+OTk8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAg ICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxz aXplPjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgICAgPHR5cGUg bmFtZT0iUHJvZ3JhbStNeVN0cnVjdCI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBvcF9J bXBsaWNpdChTeXN0ZW0uTnVsbGFibGVgMVtQcm9ncmFtK015U3RydWN0XSkiIGF0dHJzPSIyMTk4 Ij4KKysgICAgICAgIDxzaXplPjIyPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5 cGU+CisrICA8L3Rlc3Q+CisgICA8dGVzdCBuYW1lPSJndGVzdC1hbm9udHlwZS0wMS5jcyI+Cisg ICAgIDx0eXBlIG5hbWU9IlRlc3QiPgorICAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgTWFpbigp IiBhdHRycz0iMTUwIj4KK0BAIC00NzYwOSw3ICs0NzY1MSw3IEBACisgICAgICAgICA8c2l6ZT43 PC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBDb3B5 VG8oSW50MzIsIENoYXJbXSwgSW50MzIsIEludDMyKSIgYXR0cnM9IjE0NSI+CistICAgICAgICA8 c2l6ZT43Mzwvc2l6ZT4KKysgICAgICAgIDxzaXplPjc4PC9zaXplPgorICAgICAgIDwvbWV0aG9k PgorICAgICA8L3R5cGU+CisgICA8L3Rlc3Q+CitAQCAtNTE0NjgsMTAgKzUxNTEwLDEwIEBACisg ICA8dGVzdCBuYW1lPSJ0ZXN0LTg4LmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iWCI+CisgICAgICAg PG1ldGhvZCBuYW1lPSJWb2lkIGYoU3lzdGVtLlN0cmluZykiIGF0dHJzPSIxNDUiPgorLSAgICAg ICAgPHNpemU+MjA8L3NpemU+CisrICAgICAgICA8c2l6ZT4xMjwvc2l6ZT4KKyAgICAgICA8L21l dGhvZD4KKyAgICAgICA8bWV0aG9kIG5hbWU9IkludDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+Cist ICAgICAgICA8c2l6ZT43MDwvc2l6ZT4KKysgICAgICAgIDxzaXplPjYyPC9zaXplPgorICAgICAg IDwvbWV0aG9kPgorICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3 OCI+CisgICAgICAgICA8c2l6ZT43PC9zaXplPgorQEAgLTUyMTQ4LDcgKzUyMTkwLDcgQEAKKyAg ICAgICAgIDxzaXplPjE0PC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorICAgICAgIDxtZXRob2Qg bmFtZT0iVm9pZCBPdXRlcihTeXN0ZW0uU3RyaW5nKSIgYXR0cnM9IjE0NSI+CistICAgICAgICA8 c2l6ZT4yOTwvc2l6ZT4KKysgICAgICAgIDxzaXplPjM0PC9zaXplPgorICAgICAgIDwvbWV0aG9k PgorICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBJbm5lcihDaGFyKiBCeVJlZiwgQ2hhciopIiBh dHRycz0iMTQ1Ij4KKyAgICAgICAgIDxzaXplPjEwPC9zaXplPgorQEAgLTUyMzU5LDEwICs1MjQw MSwxMCBAQAorICAgPHRlc3QgbmFtZT0idGVzdC05MjguY3MiPgorICAgICA8dHlwZSBuYW1lPSJQ cm9ncmFtIj4KKyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgVGVzdCgpIiBhdHRycz0iMTUwIj4K Ky0gICAgICAgIDxzaXplPjI1PC9zaXplPgorKyAgICAgICAgPHNpemU+MzA8L3NpemU+CisgICAg ICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBNYWluKCkiIGF0dHJzPSIx NTAiPgorLSAgICAgICAgPHNpemU+MTA1PC9zaXplPgorKyAgICAgICAgPHNpemU+MTQxPC9zaXpl PgorICAgICAgIDwvbWV0aG9kPgorICAgICAgIDxtZXRob2QgbmFtZT0iQm9vbGVhbiAmbHQ7TWFp biZndDttX18wKFN5c3RlbS5SZWZsZWN0aW9uLkxvY2FsVmFyaWFibGVJbmZvKSIgYXR0cnM9IjE0 NSI+CisgICAgICAgICA8c2l6ZT4yOTwvc2l6ZT4KK0BAIC01MjM3MCw2ICs1MjQxMiwxMiBAQAor ICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisgICAgICAg ICA8c2l6ZT43PC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0i Qm9vbGVhbiBTdHJpbmdOdWxsKFN5c3RlbS5TdHJpbmcpIiBhdHRycz0iMTUwIj4KKysgICAgICAg IDxzaXplPjMyPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0i Qm9vbGVhbiBBcnJheU51bGwoSW50MzJbXSkiIGF0dHJzPSIxNTAiPgorKyAgICAgICAgPHNpemU+ NDU8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKyAg IDx0ZXN0IG5hbWU9InRlc3QtOTI5LmNzIj4KK0BAIC01MjgxNCw3ICs1Mjg2Miw3IEBACisgICA8 dGVzdCBuYW1lPSJ0ZXN0LTk0OC5jcyI+CisgICAgIDx0eXBlIG5hbWU9IlgiPgorICAgICAgIDxt ZXRob2QgbmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNTAiPgorLSAgICAgICAgPHNpemU+MTY8 L3NpemU+CisrICAgICAgICA8c2l6ZT4xMDM8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAg ICAgPG1ldGhvZCBuYW1lPSJWb2lkIEZvbygpIiBhdHRycz0iMTI5Ij4KKyAgICAgICAgIDxzaXpl PjI8L3NpemU+CitAQCAtNTI4MzQsNiArNTI4ODIsMTYgQEAKKyAgICAgICA8L21ldGhvZD4KKyAg ICAgPC90eXBlPgorICAgPC90ZXN0PgorKyAgPHRlc3QgbmFtZT0idGVzdC05NTAuY3MiPgorKyAg ICA8dHlwZSBuYW1lPSJCIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRy cz0iMTUwIj4KKysgICAgICAgIDxzaXplPjIzPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAg ICAgIDxtZXRob2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8 c2l6ZT43PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICA8L3Rlc3Q+ CisgICA8dGVzdCBuYW1lPSJ0ZXN0LTk2LmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iTjEuQSI+Cisg ICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBNYWluKCkiIGF0dHJzPSIxNTAiPgorQEAgLTUyODU4 LDYgKzUyOTE2LDgwIEBACisgICAgICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVz dD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtOTYwLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iQiI+Cisr ICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBnZXRfSW5kZXgoKSIgYXR0cnM9IjIxODIiPgorKyAg ICAgICAgPHNpemU+MTQ8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBu YW1lPSJWb2lkIHNldF9JbmRleChJbnQzMikiIGF0dHJzPSIyMTc4Ij4KKysgICAgICAgIDxzaXpl Pjg8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJTeXN0ZW0u U3RyaW5nIGdldF9TMSgpIiBhdHRycz0iMjE3OSI+CisrICAgICAgICA8c2l6ZT4xNDwvc2l6ZT4K KysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgc2V0X1MxKFN5c3Rl bS5TdHJpbmcpIiBhdHRycz0iMjE3OCI+CisrICAgICAgICA8c2l6ZT44PC9zaXplPgorKyAgICAg IDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iU3lzdGVtLlN0cmluZyBnZXRfUzIoKSIg YXR0cnM9IjIxODAiPgorKyAgICAgICAgPHNpemU+MTQ8L3NpemU+CisrICAgICAgPC9tZXRob2Q+ CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIHNldF9TMihTeXN0ZW0uU3RyaW5nKSIgYXR0cnM9 IjIxNzgiPgorKyAgICAgICAgPHNpemU+ODwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAg ICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4KKysgICAgICAgIDxzaXpl PjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5j dG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9t ZXRob2Q+CisrICAgIDwvdHlwZT4KKysgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtOTYx LmNzIj4KKysgICAgPHR5cGUgbmFtZT0iQiI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1h aW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT4xMDwvc2l6ZT4KKysgICAgICA8L21l dGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgRm9vKEludDMyKSIgYXR0cnM9IjE0NSI+ CisrICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0 aG9kIG5hbWU9IlZvaWQgJmx0O0ZvbyZndDttX18wKEludDMyKSIgYXR0cnM9IjE0NSI+CisrICAg ICAgICA8c2l6ZT4yPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICAg IDx0eXBlIG5hbWU9IkQiPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBJbnZva2UoSW50MzIp IiBhdHRycz0iNDU0Ij4KKysgICAgICAgIDxzaXplPjA8L3NpemU+CisrICAgICAgPC9tZXRob2Q+ CisrICAgICAgPG1ldGhvZCBuYW1lPSJTeXN0ZW0uSUFzeW5jUmVzdWx0IEJlZ2luSW52b2tlKElu dDMyLCBTeXN0ZW0uQXN5bmNDYWxsYmFjaywgU3lzdGVtLk9iamVjdCkiIGF0dHJzPSI0NTQiPgor KyAgICAgICAgPHNpemU+MDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9k IG5hbWU9IlZvaWQgRW5kSW52b2tlKFN5c3RlbS5JQXN5bmNSZXN1bHQpIiBhdHRycz0iNDU0Ij4K KysgICAgICAgIDxzaXplPjA8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhv ZCBuYW1lPSJWb2lkIC5jdG9yKE9iamVjdCwgSW50UHRyKSIgYXR0cnM9IjYyNzgiPgorKyAgICAg ICAgPHNpemU+MDwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8 dHlwZSBuYW1lPSJNIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgc2V0X0l0ZW0oSW50MzIs IEludDMyKSIgYXR0cnM9IjIxNzciPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8 L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlN5c3RlbS5TdHJpbmcgb3BfSW1wbGljaXQo TSkiIGF0dHJzPSIyMTk4Ij4KKysgICAgICAgIDxzaXplPjk8L3NpemU+CisrICAgICAgPC9tZXRo b2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFRlc3QyKEludDMyKSIgYXR0cnM9IjEzNCI+ CisrICAgICAgICA8c2l6ZT4yPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRo b2QgbmFtZT0iVm9pZCAuY3RvcihJbnQzMikiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXpl Pjg8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgICAgPHR5cGUgbmFt ZT0iQiI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIEJhcihJbnQzMikiIGF0dHJzPSIxNTAi PgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBl PgorKyAgPC90ZXN0PgorICAgPHRlc3QgbmFtZT0idGVzdC05Ny5jcyI+CisgICAgIDx0eXBlIG5h bWU9IlgiPgorICAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4K K0BAIC01NDQ0OCw3ICs1NDU4MCw3IEBACisgICAgICAgICA8c2l6ZT4xOTwvc2l6ZT4KKyAgICAg ICA8L21ldGhvZD4KKyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUw Ij4KKy0gICAgICAgIDxzaXplPjI0Nzwvc2l6ZT4KKysgICAgICAgIDxzaXplPjI4MTwvc2l6ZT4K KyAgICAgICA8L21ldGhvZD4KKyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgJmx0O0Jhc2VNJmd0 O19fQmFzZUNhbGxQcm94eTAoKSIgYXR0cnM9IjEyOSI+CisgICAgICAgICA8c2l6ZT43PC9zaXpl PgorQEAgLTU0NTE4LDYgKzU0NjUwLDkgQEAKKyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgJmx0 O01haW4mZ3Q7bV9fNShFKSIgYXR0cnM9IjE0NSI+CisgICAgICAgICA8c2l6ZT4zNTwvc2l6ZT4K KyAgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgJmx0O01haW4mZ3Q7 bV9fNigpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxzaXplPjQ8L3NpemU+CisrICAgICAgPC9t ZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9InRlc3QtYW5v bi0xMjQuY3MiPgorQEAgLTY3MDIwLDYgKzY3MTU1LDE2IEBACisgICAgICAgPC9tZXRob2Q+Cisg ICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtYmluYXJ5bGl0ZXJh bC5jcyI+CisrICAgIDx0eXBlIG5hbWU9IkRlbW8iPgorKyAgICAgIDxtZXRob2QgbmFtZT0iSW50 MzIgTWFpbigpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxzaXplPjUwMzwvc2l6ZT4KKysgICAg ICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYy NzgiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90 eXBlPgorKyAgPC90ZXN0PgorICAgPHRlc3QgbmFtZT0idGVzdC1jbHMtMDAuY3MiPgorICAgICA8 dHlwZSBuYW1lPSJDTFNDTGFzc182Ij4KKyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgYWRkX0Rp c3Bvc2VkKERlbGVnYXRlKSIgYXR0cnM9IjIxODIiPgorQEAgLTY4NjQxLDcgKzY4Nzg2LDcgQEAK KyAgIDx0ZXN0IG5hbWU9InRlc3QtZGVjbC1leHByLTA1LmNzIj4KKyAgICAgPHR5cGUgbmFtZT0i WCI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIFRlc3QoU3lzdGVtLlN0cmluZykiIGF0dHJz PSIxMjkiPgorLSAgICAgICAgPHNpemU+Mjk8L3NpemU+CisrICAgICAgICA8c2l6ZT42Mjwvc2l6 ZT4KKyAgICAgICA8L21ldGhvZD4KKyAgICAgICA8bWV0aG9kIG5hbWU9IkJvb2xlYW4gQ2FsbChT eXN0ZW0uU3RyaW5nIEJ5UmVmKSIgYXR0cnM9IjE0NSI+CisgICAgICAgICA8c2l6ZT4xNzwvc2l6 ZT4KK0BAIC02ODY1NCw2ICs2ODc5OSwyMiBAQAorICAgICAgIDwvbWV0aG9kPgorICAgICA8L3R5 cGU+CisgICA8L3Rlc3Q+CisrICA8dGVzdCBuYW1lPSJ0ZXN0LWRlY2wtZXhwci0wNi5jcyI+Cisr ICAgIDx0eXBlIG5hbWU9IkMiPgorKyAgICAgIDxtZXRob2QgbmFtZT0iQm9vbGVhbiBGb28oSW50 MzIgQnlSZWYpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAgIDxzaXplPjEzPC9zaXplPgorKyAgICAg IDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNTAi PgorKyAgICAgICAgPHNpemU+ODwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0 aG9kIG5hbWU9IkJvb2xlYW4gJmx0O2YmZ3Q7bV9fMCgpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAg IDxzaXplPjE1PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFtZT0i Vm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT40Mjwvc2l6ZT4KKysg ICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0PgorICAgPHRlc3QgbmFtZT0i dGVzdC1kZWZhdWx0LTAxLmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iWCI+CisgICAgICAgPG1ldGhv ZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+CitAQCAtNjg2NzQsNiArNjg4MzUsOSBA QAorICAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgJmx0O000Jmd0O21fXzAoKSIgYXR0cnM9IjE0 NSI+CisgICAgICAgICA8c2l6ZT45PC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxt ZXRob2QgbmFtZT0iVm9pZCBGb28oSUksIElJLCBJSSkiIGF0dHJzPSIxNDUiPgorKyAgICAgICAg PHNpemU+Mjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKyAgICAgPC90eXBlPgorICAgPC90ZXN0 PgorICAgPHRlc3QgbmFtZT0idGVzdC1kZWZhdWx0LTAyLmNzIj4KK0BAIC02OTE1OCw2ICs2OTMy MiwyMSBAQAorICAgICAgIDwvbWV0aG9kPgorICAgICA8L3R5cGU+CisgICA8L3Rlc3Q+CisrICA8 dGVzdCBuYW1lPSJ0ZXN0LWZpeGVkLTAxLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iQyI+CisrICAg ICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0cnM9IjE1MCI+CisrICAgICAgICA8c2l6 ZT4zOTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQg LmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+Nzwvc2l6ZT4KKysgICAgICA8 L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgICA8dHlwZSBuYW1lPSJDK0ZpeGFibGUiPgorKyAg ICAgIDxtZXRob2QgbmFtZT0iSW50MzImYW1wOyBHZXRQaW5uYWJsZVJlZmVyZW5jZSgpIiBhdHRy cz0iMTM0Ij4KKysgICAgICAgIDxzaXplPjMyPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAg ICA8L3R5cGU+CisrICA8L3Rlc3Q+CisgICA8dGVzdCBuYW1lPSJ0ZXN0LWludGVycG9sYXRpb24t MDEuY3MiPgorICAgICA8dHlwZSBuYW1lPSJUZXN0Ij4KKyAgICAgICA8bWV0aG9kIG5hbWU9Iklu dDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+CitAQCAtNzI1NjQsNyArNzI3NDMsNyBAQAorICAgICA8 L3R5cGU+CisgICAgIDx0eXBlIG5hbWU9IlgrJmx0O1Rlc3QmZ3Q7Y19fSXRlcmF0b3IwIj4KKyAg ICAgICA8bWV0aG9kIG5hbWU9IkJvb2xlYW4gTW92ZU5leHQoKSIgYXR0cnM9IjQ4NiI+CistICAg ICAgICA8c2l6ZT4xODQ8L3NpemU+CisrICAgICAgICA8c2l6ZT4yMDY8L3NpemU+CisgICAgICAg PC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBTeXN0ZW0uQ29sbGVjdGlvbnMu R2VuZXJpYy5JRW51bWVyYXRvciZsdDtpbnQmZ3Q7LmdldF9DdXJyZW50KCkiIGF0dHJzPSIyNTI5 Ij4KKyAgICAgICAgIDxzaXplPjE0PC9zaXplPgorQEAgLTcyNzUwLDYgKzcyOTI5LDIxIEBACisg ICAgICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9 InRlc3QtcGF0dGVybi0xMy5jcyI+CisrICAgIDx0eXBlIG5hbWU9IkMiPgorKyAgICAgIDxtZXRo b2QgbmFtZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9z aXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICAgIDx0eXBlIG5hbWU9IkIi PgorKyAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNTAiPgorKyAgICAg ICAgPHNpemU+MzU8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1l PSJWb2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+Cisr ICAgICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgIDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9 InRlc3QtcHJhZ21hLXVucmVjb2duaXplZC5jcyI+CisgICAgIDx0eXBlIG5hbWU9IkMiPgorICAg ICAgIDxtZXRob2QgbmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNTAiPgorQEAgLTczMTU1LDYg KzczMzQ5LDExIEBACisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9InRl c3QtcmVmLTA3LmNzIj4KKysgICAgPHR5cGUgbmFtZT0iVGVzdE1haW4iPgorKyAgICAgIDxtZXRo b2QgbmFtZT0iVm9pZCBNYWluKCkiIGF0dHJzPSIxNTAiPgorKyAgICAgICAgPHNpemU+Njwvc2l6 ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorICAgICA8dHlwZSBuYW1lPSJUZXN0 Ij4KKyAgICAgICA8bWV0aG9kIG5hbWU9IlZvaWQgTWFpbigpIiBhdHRycz0iMTUwIj4KKyAgICAg ICAgIDxzaXplPjE4PC9zaXplPgorQEAgLTczMjQzLDYgKzczNDQyLDMyIEBACisgICAgICAgPC9t ZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtcmVm LTExLmNzIj4KKysgICAgPHR5cGUgbmFtZT0iUHJvZ3JhbSI+CisrICAgICAgPG1ldGhvZCBuYW1l PSJJbnQzMiBNYWluKCkiIGF0dHJzPSIxNTAiPgorKyAgICAgICAgPHNpemU+MzQ8L3NpemU+Cisr ICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIC5jdG9yKCkiIGF0dHJz PSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAg IDwvdHlwZT4KKysgIDwvdGVzdD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtcmVmLTEyLmNzIj4KKysg ICAgPHR5cGUgbmFtZT0iWCI+CisrICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIgYXR0 cnM9IjE1MCI+CisrICAgICAgICA8c2l6ZT4xNjwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysg ICAgICA8bWV0aG9kIG5hbWU9IkludDMyJmFtcDsgRm9vKEJ5dGUgQnlSZWYpIiBhdHRycz0iMTQ1 Ij4KKysgICAgICAgIDxzaXplPjE0PC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxt ZXRob2QgbmFtZT0iVm9pZCBCYXIoSW50MzIgQnlSZWYpIiBhdHRycz0iMTQ1Ij4KKysgICAgICAg IDxzaXplPjI8L3NpemU+CisrICAgICAgPC9tZXRob2Q+CisrICAgICAgPG1ldGhvZCBuYW1lPSJW b2lkIC5jdG9yKCkiIGF0dHJzPSI2Mjc4Ij4KKysgICAgICAgIDxzaXplPjc8L3NpemU+CisrICAg ICAgPC9tZXRob2Q+CisrICAgIDwvdHlwZT4KKysgIDwvdGVzdD4KKyAgIDx0ZXN0IG5hbWU9InRl c3Qtc3RhdGljLXVzaW5nLTAxLmNzIj4KKyAgICAgPHR5cGUgbmFtZT0iQS5CLlgiPgorICAgICAg IDxtZXRob2QgbmFtZT0iSW50MzIgVGVzdCgpIiBhdHRycz0iMTUwIj4KK0BAIC03MzQ4Miw3ICs3 MzcwNyw3IEBACisgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4KKyAgICAgICA8L21ldGhvZD4KKyAg ICAgICA8bWV0aG9kIG5hbWU9IkludDMyIFRlc3QoKSIgYXR0cnM9IjEzNCI+CistICAgICAgICA8 c2l6ZT4xMDwvc2l6ZT4KKysgICAgICAgIDxzaXplPjI8L3NpemU+CisgICAgICAgPC9tZXRob2Q+ CisgICAgICAgPG1ldGhvZCBuYW1lPSJTeXN0ZW0uT2JqZWN0IEZvbygpIiBhdHRycz0iMTI5Ij4K KyAgICAgICAgIDxzaXplPjEwPC9zaXplPgorQEAgLTczNDkxLDE2ICs3MzcxNiwxNiBAQAorICAg ICAgICAgPHNpemU+MjM8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBu YW1lPSJWb2lkIFRlc3QzKEludDMyIEJ5UmVmKSIgYXR0cnM9IjE0NSI+CistICAgICAgICA8c2l6 ZT4zPC9zaXplPgorKyAgICAgICAgPHNpemU+Mjwvc2l6ZT4KKyAgICAgICA8L21ldGhvZD4KKyAg ICAgICA8bWV0aG9kIG5hbWU9IkludDMyIGdldF9JdGVtKEludDMyKSIgYXR0cnM9IjIxNzciPgor LSAgICAgICAgPHNpemU+MTA8L3NpemU+CisrICAgICAgICA8c2l6ZT4yPC9zaXplPgorICAgICAg IDwvbWV0aG9kPgorICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBhZGRfRXZlbnQoU3lzdGVtLkFj dGlvbikiIGF0dHJzPSIyMTgyIj4KKy0gICAgICAgIDxzaXplPjM8L3NpemU+CisrICAgICAgICA8 c2l6ZT4yPC9zaXplPgorICAgICAgIDwvbWV0aG9kPgorICAgICAgIDxtZXRob2QgbmFtZT0iVm9p ZCByZW1vdmVfRXZlbnQoU3lzdGVtLkFjdGlvbikiIGF0dHJzPSIyMTgyIj4KKy0gICAgICAgIDxz aXplPjM8L3NpemU+CisrICAgICAgICA8c2l6ZT4yPC9zaXplPgorICAgICAgIDwvbWV0aG9kPgor ICAgICAgIDxtZXRob2QgbmFtZT0iVm9pZCBUZXN0RXhwcl8xKEJvb2xlYW4pIiBhdHRycz0iMTI5 Ij4KKyAgICAgICAgIDxzaXplPjIxPC9zaXplPgorQEAgLTczNTI3LDcgKzczNzUyLDcgQEAKKyAg ICAgICAgIDxzaXplPjc8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBu YW1lPSJJbnQzMiBUZXN0RXhwcl82KEludDMyIEJ5UmVmKSIgYXR0cnM9IjE0NSI+CistICAgICAg ICA8c2l6ZT4xMDwvc2l6ZT4KKysgICAgICAgIDxzaXplPjI8L3NpemU+CisgICAgICAgPC9tZXRo b2Q+CisgICAgICAgPG1ldGhvZCBuYW1lPSJJbnQzMiBUZXN0RXhwcl83KEludDMyIEJ5UmVmKSIg YXR0cnM9IjEyOSI+CisgICAgICAgICA8c2l6ZT4xNTwvc2l6ZT4KK0BAIC03MzU2OSw3ICs3Mzc5 NCw3IEBACisgICA8dGVzdCBuYW1lPSJ0ZXN0LXR1cGxlLTAyLmNzIj4KKyAgICAgPHR5cGUgbmFt ZT0iVHVwbGVDb252ZXJzaW9ucyI+CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIE1haW4oKSIg YXR0cnM9IjE1MCI+CistICAgICAgICA8c2l6ZT4zMTQ8L3NpemU+CisrICAgICAgICA8c2l6ZT4z Njg8L3NpemU+CisgICAgICAgPC9tZXRob2Q+CisgICAgICAgPG1ldGhvZCBuYW1lPSJWb2lkIEZv b1tUXShUKSIgYXR0cnM9IjE0NSI+CisgICAgICAgICA8c2l6ZT4yPC9zaXplPgorQEAgLTczNzYx LDYgKzczOTg2LDI5IEBACisgICAgICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVz dD4KKysgIDx0ZXN0IG5hbWU9InRlc3QtdHVwbGUtMTAuY3MiPgorKyAgICA8dHlwZSBuYW1lPSJQ cm9ncmFtIj4KKysgICAgICA8bWV0aG9kIG5hbWU9IkludDMyIE1haW4oKSIgYXR0cnM9IjE1MCI+ CisrICAgICAgICA8c2l6ZT42NTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8bWV0 aG9kIG5hbWU9IlN5c3RlbS5WYWx1ZVR1cGxlYDJbU3lzdGVtLlN0cmluZyxTeXN0ZW0uSW50MzJd ICZsdDtNYWluJmd0O21fXzAoU3lzdGVtLlJlZmxlY3Rpb24uRmllbGRJbmZvKSIgYXR0cnM9IjE0 NSI+CisrICAgICAgICA8c2l6ZT4yMTwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgICA8 bWV0aG9kIG5hbWU9IlZvaWQgLmN0b3IoKSIgYXR0cnM9IjYyNzgiPgorKyAgICAgICAgPHNpemU+ Nzwvc2l6ZT4KKysgICAgICA8L21ldGhvZD4KKysgICAgPC90eXBlPgorKyAgPC90ZXN0PgorKyAg PHRlc3QgbmFtZT0idGVzdC10dXBsZS0xMS5jcyI+CisrICAgIDx0eXBlIG5hbWU9IlByb2dyYW0i PgorKyAgICAgIDxtZXRob2QgbmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4KKysgICAg ICAgIDxzaXplPjcwPC9zaXplPgorKyAgICAgIDwvbWV0aG9kPgorKyAgICAgIDxtZXRob2QgbmFt ZT0iVm9pZCAuY3RvcigpIiBhdHRycz0iNjI3OCI+CisrICAgICAgICA8c2l6ZT43PC9zaXplPgor KyAgICAgIDwvbWV0aG9kPgorKyAgICA8L3R5cGU+CisrICA8L3Rlc3Q+CisgICA8dGVzdCBuYW1l PSJ0ZXN0LXZhci0wMS5jcyI+CisgICAgIDx0eXBlIG5hbWU9IlRlc3QiPgorICAgICAgIDxtZXRo b2QgbmFtZT0iSW50MzIgTWFpbigpIiBhdHRycz0iMTUwIj4KK0BAIC03Mzg5Niw0ICs3NDE0NCw0 IEBACisgICAgICAgPC9tZXRob2Q+CisgICAgIDwvdHlwZT4KKyAgIDwvdGVzdD4KKy08L3Rlc3Rz PgorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrPC90ZXN0cz4KK2RpZmYgLS1naXQgYS9t c3ZjL3NjcmlwdHMvU3lzdGVtLldlYi5wcmUgYi9tc3ZjL3NjcmlwdHMvU3lzdGVtLldlYi5wcmUK K2luZGV4IGMwNzFiZjQ1YmZkLi44ZjhkMjYyNTk3ZiAxMDA2NDQKKy0tLSBhL21zdmMvc2NyaXB0 cy9TeXN0ZW0uV2ViLnByZQorKysrIGIvbXN2Yy9zY3JpcHRzL1N5c3RlbS5XZWIucHJlCitAQCAt MSArMSBAQAorLUBNT05PQCAkKFByb2plY3REaXIpXC4uXGxpYlxuZXRfNF94XGN1bGV2ZWwuZXhl IC1vICQoUHJvamVjdERpcilcU3lzdGVtLldlYlxVcGxldmVsSGVscGVyLmNzICQoUHJvamVjdERp cilcVXBsZXZlbEhlbHBlckRlZmluaXRpb25zLnhtbAorK0BNT05PQCAkKFtNU0J1aWxkXTo6R2V0 RGlyZWN0b3J5TmFtZU9mRmlsZUFib3ZlKCQoVGFyZ2V0RGlyKSwgY3VsZXZlbC5leGUpKVxjdWxl dmVsLmV4ZSAtbyAkKFByb2plY3REaXIpXFN5c3RlbS5XZWJcVXBsZXZlbEhlbHBlci5jcyAkKFBy b2plY3REaXIpXFVwbGV2ZWxIZWxwZXJEZWZpbml0aW9ucy54bWwKK2RpZmYgLS1naXQgYS9tc3Zj L3NjcmlwdHMvY3Nwcm9qLnRtcGwgYi9tc3ZjL3NjcmlwdHMvY3Nwcm9qLnRtcGwKK2luZGV4IDY0 MmM5NTM3MzIxLi5jMThiNTFkMzM0ZSAxMDA2NDQKKy0tLSBhL21zdmMvc2NyaXB0cy9jc3Byb2ou dG1wbAorKysrIGIvbXN2Yy9zY3JpcHRzL2NzcHJvai50bXBsCitAQCAtMTcsNiArMTcsNyBAQAor ICAgICA8SW50ZXJtZWRpYXRlT3V0cHV0UGF0aD5vYmotQE9VVFBVVFNVRkZJWEA8L0ludGVybWVk aWF0ZU91dHB1dFBhdGg+DQorICAgICA8R2VuZXJhdGVUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGU+ ZmFsc2U8L0dlbmVyYXRlVGFyZ2V0RnJhbWV3b3JrQXR0cmlidXRlPg0KKyAgICAgQE5PU1RETElC QA0KKysgICAgQE1FVEFEQVRBVkVSU0lPTkANCisgICAgIEBTVEFSVFVQT0JKRUNUQA0KKyAgICAg QE5PQ09ORklHQA0KKyAgICAgQEFMTE9XVU5TQUZFQA0KK2RpZmYgLS1naXQgYS9tc3ZjL3Njcmlw dHMvZ2VucHJvai5jcyBiL21zdmMvc2NyaXB0cy9nZW5wcm9qLmNzCitpbmRleCAzOTg3YWJiMjEy Yi4uMTQ0MDgwMGIyYjMgMTAwNjQ0CistLS0gYS9tc3ZjL3NjcmlwdHMvZ2VucHJvai5jcworKysr IGIvbXN2Yy9zY3JpcHRzL2dlbnByb2ouY3MKK0BAIC0yNywyNyArMjcsNDMgQEAgcHVibGljIGVu dW0gVGFyZ2V0IHsKKyAKKyBjbGFzcyBTbG5HZW5lcmF0b3IgeworIAlwdWJsaWMgc3RhdGljIHJl YWRvbmx5IHN0cmluZyBOZXdMaW5lID0gIlxyXG4iOyAvL0Vudmlyb25tZW50Lk5ld0xpbmU7IC8v ICJcbiI7IAorLQlwdWJsaWMgU2xuR2VuZXJhdG9yIChzdHJpbmcgZm9ybWF0VmVyc2lvbiA9ICIy MDEyIikKKysJcHVibGljIFNsbkdlbmVyYXRvciAoc3RyaW5nIHNsblZlcnNpb24pCisgCXsKKy0J CXN3aXRjaCAoZm9ybWF0VmVyc2lvbikgeworLQkJY2FzZSAiMjAwOCI6CistCQkJdGhpcy5oZWFk ZXIgPSBNYWtlSGVhZGVyICgiMTAuMDAiLCAiMjAwOCIpOworLQkJCWJyZWFrOworLQkJZGVmYXVs dDoKKy0JCQl0aGlzLmhlYWRlciA9IE1ha2VIZWFkZXIgKCIxMi4wMCIsICIyMDEyIik7CistCQkJ YnJlYWs7CistCQl9CisrCQlDb25zb2xlLldyaXRlTGluZSgiUmVxdWVzdGVkIHNsbiB2ZXJzaW9u IGlzIHswfSIsIHNsblZlcnNpb24pOworKwkJdGhpcy5oZWFkZXIgPSBNYWtlSGVhZGVyICgiMTIu MDAiLCAiMTUiLCAiMTUuMC4wLjAiKTsKKyAJfQorIAorLQljb25zdCBzdHJpbmcgcHJvamVjdF9z dGFydCA9ICJQcm9qZWN0KFwie3tGQUUwNEVDMC0zMDFGLTExRDMtQkY0Qi0wMEMwNEY3OUVGQkN9 fVwiKSA9IFwiezB9XCIsIFwiezF9XCIsIFwiezJ9XCIiOyAvLyBOb3RlOiBObyBuZWVkIHRvIGRv dWJsZSB1cCBvbiB7fSBhcm91bmQgezJ9CisrCWNvbnN0IHN0cmluZyBwcm9qZWN0X3N0YXJ0ID0g IlByb2plY3QoXCJ7MH1cIikgPSBcInsxfVwiLCBcInsyfVwiLCBcInszfVwiIjsgLy8gTm90ZTog Tm8gbmVlZCB0byBkb3VibGUgdXAgb24ge30gYXJvdW5kIHsyfQorIAljb25zdCBzdHJpbmcgcHJv amVjdF9lbmQgPSAiRW5kUHJvamVjdCI7CisgCisrCXB1YmxpYyBMaXN0PHN0cmluZz4gcHJvZmls ZXMgPSBuZXcgTGlzdDxzdHJpbmc+IHsKKysJCSJuZXRfNF94IiwKKysJCSJtb25vZHJvaWQiLAor KwkJIm1vbm90b3VjaCIsCisrCQkibW9ub3RvdWNoX3R2IiwKKysJCSJtb25vdG91Y2hfd2F0Y2gi LAorKwkJIm9yYmlzIiwKKysJCSJ1bnJlYWwiLAorKwkJIndhc20iLAorKwkJIndpbmFvdCIsCisr CQkieGFtbWFjIiwKKysJfTsKKysKKysJY29uc3Qgc3RyaW5nIGpheV92Y3hwcm9qX2d1aWQgPSAi ezVENDg1RDMyLTNCOUYtNDI4Ny1BQjI0LUM4REE1Qjg5RjUzN30iOworKwljb25zdCBzdHJpbmcg amF5X3Nsbl9ndWlkID0gIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IjsK KysKKyAJcHVibGljIExpc3Q8TXNidWlsZEdlbmVyYXRvci5Wc0NzcHJvaj4gbGlicmFyaWVzID0g bmV3IExpc3Q8TXNidWlsZEdlbmVyYXRvci5Wc0NzcHJvaj4gKCk7CisgCXN0cmluZyBoZWFkZXI7 CisgCistCXN0cmluZyBNYWtlSGVhZGVyIChzdHJpbmcgZm9ybWF0VmVyc2lvbiwgc3RyaW5nIHll YXJUYWcpCisrCXN0cmluZyBNYWtlSGVhZGVyIChzdHJpbmcgZm9ybWF0VmVyc2lvbiwgc3RyaW5n IHllYXJUYWcsIHN0cmluZyBtaW5pbXVtVmVyc2lvbikKKyAJeworLQkJcmV0dXJuIHN0cmluZy5G b3JtYXQgKCJNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVy c2lvbiB7MH0iICsgTmV3TGluZSArICIjIFZpc3VhbCBTdHVkaW8gezF9IiwgZm9ybWF0VmVyc2lv biwgeWVhclRhZyk7CisrCQlyZXR1cm4gc3RyaW5nLkZvcm1hdCAoCisrCQkJIk1pY3Jvc29mdCBW aXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIHswfSIgKyBOZXdMaW5l ICsgCisrCQkJIiMgVmlzdWFsIFN0dWRpbyB7MX0iICsgTmV3TGluZSArIAorKwkJCSJNaW5pbXVt VmlzdWFsU3R1ZGlvVmVyc2lvbiA9IHsyfSIsIAorKwkJCWZvcm1hdFZlcnNpb24sIHllYXJUYWcs CisrCQkJbWluaW11bVZlcnNpb24KKysJCSk7CisgCX0KKyAKKyAJcHVibGljIHZvaWQgQWRkIChN c2J1aWxkR2VuZXJhdG9yLlZzQ3Nwcm9qIHZzcHJvaikKK0BAIC01OSw2ICs3NSw0MCBAQCBjbGFz cyBTbG5HZW5lcmF0b3IgeworIAkJfQorIAl9CisgCisrCXByaXZhdGUgdm9pZCBXcml0ZVByb2pl Y3RSZWZlcmVuY2UgKFN0cmVhbVdyaXRlciBzbG4sIHN0cmluZyBwcmVmaXhHdWlkLCBzdHJpbmcg bGlicmFyeSwgc3RyaW5nIHJlbGF0aXZlUGF0aCwgc3RyaW5nIHByb2plY3RHdWlkLCBwYXJhbXMg c3RyaW5nW10gZGVwZW5kZW5jeUd1aWRzKQorKwl7CisrCQlzbG4uV3JpdGVMaW5lIChwcm9qZWN0 X3N0YXJ0LCBwcmVmaXhHdWlkLCBsaWJyYXJ5LCByZWxhdGl2ZVBhdGgsIHByb2plY3RHdWlkKTsK KysKKysJCWZvcmVhY2ggKHZhciBndWlkIGluIGRlcGVuZGVuY3lHdWlkcykgeworKyAgICAJCXNs bi5Xcml0ZUxpbmUgKCIgICAgUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBw b3N0UHJvamVjdCIpOworKyAgICAJCXNsbi5Xcml0ZUxpbmUgKCIgICAgICAgIHswfSA9IHswfSIs IGd1aWQpOworKyAgICAJCXNsbi5Xcml0ZUxpbmUgKCIgICAgRW5kUHJvamVjdFNlY3Rpb24iKTsK KysJCX0KKysKKysJCXNsbi5Xcml0ZUxpbmUgKHByb2plY3RfZW5kKTsKKysJfQorKworKwlwcml2 YXRlIHZvaWQgV3JpdGVQcm9qZWN0UmVmZXJlbmNlIChTdHJlYW1Xcml0ZXIgc2xuLCBzdHJpbmcg c2xuRnVsbFBhdGgsIE1zYnVpbGRHZW5lcmF0b3IuVnNDc3Byb2ogcHJvaikKKysJeworKwkJdmFy IHVuaXhQcm9qRmlsZSA9IHByb2ouY3NQcm9qRmlsZW5hbWUuUmVwbGFjZSAoIlxcIiwgIi8iKTsK KysJCXZhciBmdWxsUHJvalBhdGggPSBQYXRoLkdldEZ1bGxQYXRoICh1bml4UHJvakZpbGUpOwor KwkJdmFyIHJlbGF0aXZlUGF0aCA9IE1zYnVpbGRHZW5lcmF0b3IuR2V0UmVsYXRpdmVQYXRoIChz bG5GdWxsUGF0aCwgZnVsbFByb2pQYXRoKTsKKysJCXZhciBkZXBlbmRlbmN5R3VpZHMgPSBuZXcg c3RyaW5nWzBdOworKwkJaWYgKHByb2oucHJlQnVpbGRFdmVudC5Db250YWlucyAoImpheSIpKQor KwkJCWRlcGVuZGVuY3lHdWlkcyA9IG5ldyBbXSB7IGpheV92Y3hwcm9qX2d1aWQgfTsKKysJCVdy aXRlUHJvamVjdFJlZmVyZW5jZShzbG4sICJ7RkFFMDRFQzAtMzAxRi0xMUQzLUJGNEItMDBDMDRG NzlFRkJDfSIsIHByb2oubGlicmFyeSwgcmVsYXRpdmVQYXRoLCBwcm9qLnByb2plY3RHdWlkLCBk ZXBlbmRlbmN5R3VpZHMpOworKwl9CisrCisrCXByaXZhdGUgdm9pZCBXcml0ZVByb2plY3RDb25m aWd1cmF0aW9uUGxhdGZvcm1zIChTdHJlYW1Xcml0ZXIgc2xuLCBzdHJpbmcgZ3VpZCwgc3RyaW5n IHBsYXRmb3JtVG9CdWlsZCkKKysJeworKwkJZm9yZWFjaCAodmFyIHByb2ZpbGUgaW4gcHJvZmls ZXMpIHsKKysJCQlzbG4uV3JpdGVMaW5lICgiXHRcdHswfS5EZWJ1Z3x7MX0uQWN0aXZlQ2ZnID0g RGVidWd8ezJ9IiwgZ3VpZCwgcHJvZmlsZSwgcGxhdGZvcm1Ub0J1aWxkKTsKKysJCQlzbG4uV3Jp dGVMaW5lICgiXHRcdHswfS5EZWJ1Z3x7MX0uQnVpbGQuMCA9IERlYnVnfHsyfSIsIGd1aWQsIHBy b2ZpbGUsIHBsYXRmb3JtVG9CdWlsZCk7CisrCQkJc2xuLldyaXRlTGluZSAoIlx0XHR7MH0uUmVs ZWFzZXx7MX0uQWN0aXZlQ2ZnID0gUmVsZWFzZXx7Mn0iLCBndWlkLCBwcm9maWxlLCBwbGF0Zm9y bVRvQnVpbGQpOworKwkJCXNsbi5Xcml0ZUxpbmUgKCJcdFx0ezB9LlJlbGVhc2V8ezF9LkJ1aWxk LjAgPSBSZWxlYXNlfHsyfSIsIGd1aWQsIHByb2ZpbGUsIHBsYXRmb3JtVG9CdWlsZCk7CisrCQl9 CisrCX0KKysKKyAJcHVibGljIHZvaWQgV3JpdGUgKHN0cmluZyBmaWxlbmFtZSkKKyAJeworIAkJ dmFyIGZ1bGxQYXRoID0gUGF0aC5HZXREaXJlY3RvcnlOYW1lIChmaWxlbmFtZSkgKyAiLyI7CitA QCAtNjYsMjcgKzExNiwzMiBAQCBjbGFzcyBTbG5HZW5lcmF0b3IgeworIAkJdXNpbmcgKHZhciBz bG4gPSBuZXcgU3RyZWFtV3JpdGVyIChmaWxlbmFtZSkpIHsKKyAJCQlzbG4uV3JpdGVMaW5lICgp OworIAkJCXNsbi5Xcml0ZUxpbmUgKGhlYWRlcik7CisrCisrCQkJLy8gTWFudWFsbHkgaW5zZXJ0 IGpheSdzIHZjeHByb2ouIFdlIGRlcGVuZCBvbiBqYXkuZXhlIHRvIHBlcmZvcm0gYnVpbGQgc3Rl cHMgbGF0ZXIuCisrCQkJV3JpdGVQcm9qZWN0UmVmZXJlbmNlIChzbG4sIGpheV9zbG5fZ3VpZCwg ImpheSIsICJtY3NcXGpheVxcamF5LnZjeHByb2oiLCBqYXlfdmN4cHJval9ndWlkKTsKKysKKyAJ CQlmb3JlYWNoICh2YXIgcHJvaiBpbiBsaWJyYXJpZXMpIHsKKy0JCQkJdmFyIHVuaXhQcm9qRmls ZSA9IHByb2ouY3NQcm9qRmlsZW5hbWUuUmVwbGFjZSAoIlxcIiwgIi8iKTsKKy0JCQkJdmFyIGZ1 bGxQcm9qUGF0aCA9IFBhdGguR2V0RnVsbFBhdGggKHVuaXhQcm9qRmlsZSk7CistCQkJCXNsbi5X cml0ZUxpbmUgKHByb2plY3Rfc3RhcnQsIHByb2oubGlicmFyeSwgTXNidWlsZEdlbmVyYXRvci5H ZXRSZWxhdGl2ZVBhdGggKGZ1bGxQYXRoLCBmdWxsUHJvalBhdGgpLCBwcm9qLnByb2plY3RHdWlk KTsKKy0JCQkJc2xuLldyaXRlTGluZSAocHJvamVjdF9lbmQpOworKwkJCQlXcml0ZVByb2plY3RS ZWZlcmVuY2UgKHNsbiwgZnVsbFBhdGgsIHByb2opOworIAkJCX0KKysKKyAJCQlzbG4uV3JpdGVM aW5lICgiR2xvYmFsIik7CisgCisgCQkJc2xuLldyaXRlTGluZSAoIlx0R2xvYmFsU2VjdGlvbihT b2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24iKTsKKy0JCQlzbG4u V3JpdGVMaW5lICgiXHRcdERlYnVnfEFueSBDUFUgPSBEZWJ1Z3xBbnkgQ1BVIik7CistCQkJc2xu LldyaXRlTGluZSAoIlx0XHRSZWxlYXNlfEFueSBDUFUgPSBSZWxlYXNlfEFueSBDUFUiKTsKKysJ CQlmb3JlYWNoICh2YXIgcHJvZmlsZSBpbiBwcm9maWxlcykgeworKwkJCQlzbG4uV3JpdGVMaW5l ICgiXHRcdERlYnVnfHswfSA9IERlYnVnfHswfSIsIHByb2ZpbGUpOworKwkJCQlzbG4uV3JpdGVM aW5lICgiXHRcdFJlbGVhc2V8ezB9ID0gUmVsZWFzZXx7MH0iLCBwcm9maWxlKTsKKysJCQl9Cisg CQkJc2xuLldyaXRlTGluZSAoIlx0RW5kR2xvYmFsU2VjdGlvbiIpOworIAorIAkJCXNsbi5Xcml0 ZUxpbmUgKCJcdEdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0g cG9zdFNvbHV0aW9uIik7CisrCisrCQkJLy8gTWFudWFsbHkgaW5zZXJ0IGpheSdzIGNvbmZpZ3Vy YXRpb25zIGJlY2F1c2UgdGhleSBhcmUgZGlmZmVyZW50CisrCQkJV3JpdGVQcm9qZWN0Q29uZmln dXJhdGlvblBsYXRmb3JtcyAoc2xuLCBqYXlfdmN4cHJval9ndWlkLCAiV2luMzIiKTsKKysKKyAJ CQlmb3JlYWNoICh2YXIgcHJvaiBpbiBsaWJyYXJpZXMpIHsKKy0JCQkJdmFyIGd1aWQgPSBwcm9q LnByb2plY3RHdWlkOworLQkJCQlzbG4uV3JpdGVMaW5lICgiXHRcdHswfS5EZWJ1Z3xBbnkgQ1BV LkFjdGl2ZUNmZyA9IERlYnVnfEFueSBDUFUiLCBndWlkKTsKKy0JCQkJc2xuLldyaXRlTGluZSAo Ilx0XHR7MH0uRGVidWd8QW55IENQVS5CdWlsZC4wID0gRGVidWd8QW55IENQVSIsIGd1aWQpOwor LQkJCQlzbG4uV3JpdGVMaW5lICgiXHRcdHswfS5SZWxlYXNlfEFueSBDUFUuQWN0aXZlQ2ZnID0g UmVsZWFzZXxBbnkgQ1BVIiwgZ3VpZCk7CistCQkJCXNsbi5Xcml0ZUxpbmUgKCJcdFx0ezB9LlJl bGVhc2V8QW55IENQVS5CdWlsZC4wID0gUmVsZWFzZXxBbnkgQ1BVIiwgZ3VpZCk7CisrCQkJCVdy aXRlUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMgKHNsbiwgcHJvai5wcm9qZWN0R3VpZCwg IkFueSBDUFUiKTsKKyAJCQl9CisrCisgCQkJc2xuLldyaXRlTGluZSAoIlx0RW5kR2xvYmFsU2Vj dGlvbiIpOworIAorIAkJCXNsbi5Xcml0ZUxpbmUgKCJcdEdsb2JhbFNlY3Rpb24oU29sdXRpb25Q cm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uIik7CitAQCAtNjM0LDYgKzY4OSw3IEBAIGNsYXNzIE1z YnVpbGRHZW5lcmF0b3IgeworIAkJcHVibGljIExpc3Q8VnNDc3Byb2o+IHByb2pSZWZlcmVuY2Vz ID0gbmV3IExpc3Q8VnNDc3Byb2o+ICgpOworIAkJcHVibGljIHN0cmluZyBsaWJyYXJ5OworIAkJ cHVibGljIE1zYnVpbGRHZW5lcmF0b3IgTXNidWlsZEdlbmVyYXRvcjsKKysJCXB1YmxpYyBzdHJp bmcgcHJlQnVpbGRFdmVudCwgcG9zdEJ1aWxkRXZlbnQ7CisgCX0KKyAKKyAJcHVibGljIFZzQ3Nw cm9qIENzcHJvajsKK0BAIC02ODIsNyArNzM4LDcgQEAgY2xhc3MgTXNidWlsZEdlbmVyYXRvciB7 CisgCQkJCWZ4X3ZlcnNpb24gPSAiNC4wIjsKKyAJCQkJcHJvZmlsZSA9ICJuZXRfNF8wIjsKKyAJ CQl9IGVsc2UgaWYgKHJlc3BvbnNlLkNvbnRhaW5zIChwcm9maWxlXzRfeCkpIHsKKy0JCQkJZnhf dmVyc2lvbiA9ICI0LjUiOworKwkJCQlmeF92ZXJzaW9uID0gIjQuNi4yIjsKKyAJCQkJcHJvZmls ZSA9ICJuZXRfNF94IjsKKyAJCQl9CisgCQl9CitAQCAtODgyLDYgKzkzOCwyNiBAQCBjbGFzcyBN c2J1aWxkR2VuZXJhdG9yIHsKKyAKKyAJCWJvb2wgYmFzaWNfb3JfYnVpbGQgPSAobGlicmFyeS5D b250YWlucyAoIi1iYXNpYyIpIHx8IGxpYnJhcnkuQ29udGFpbnMgKCItYnVpbGQiKSk7CisgCisr CQkvLyBJZiBhbiBFWEUgaXMgYnVpbHQgd2l0aCBub3N0ZGxpYiwgaXQgd29uJ3Qgd29yayB1bmxl c3MgcnVuIHdpdGggbW9uby5leGUuIFRoaXMgc3RvcHMgb3VyIGJ1aWxkIHN0ZXBzCisrCQkvLyAg ZnJvbSB3b3JraW5nIGluIHZpc3VhbCBzdHVkaW8gKGJlY2F1c2Ugd2UgYWxyZWFkeSByZXBsYWNl IEBNT05PQCB3aXRoICcnIG9uIFdpbmRvd3MuKQorKworKwkJaWYgKFRhcmdldCAhPSBUYXJnZXQu TGlicmFyeSkKKysJCQlTdGRMaWIgPSB0cnVlOworKworKwkJLy8gV2UgaGF2ZSBvdXIgdGFyZ2V0 IGZyYW1ld29yayBzZXQgdG8gNC41IGluIG1hbnkgcGxhY2VzIGJlY2F1c2UgYnJva2VuIHNjcmlw dHMgY2hlY2sgZm9yIGZpbGVzIHdpdGggNC41CisrCQkvLyAgaW4gdGhlIHBhdGgsIGV2ZW4gdGhv dWdoIHdlIGNvbXBpbGUgY29kZSB0aGF0IHVzZXMgNC42IGZlYXR1cmVzLiBTbyB3ZSBuZWVkIHRv IG1hbnVhbGx5IGZpeCB0aGF0IGhlcmUuCisrCisrCQlpZiAoZnhfdmVyc2lvbiA9PSAiNC41IikK KysJCQlmeF92ZXJzaW9uID0gIjQuNi4yIjsKKysKKysJCS8vIFRoZSBWUzIwMTcgc2lnbmluZyBz eXN0ZW0gZmFpbHMgdG8gc2lnbiB1c2luZyB0aGlzIGtleSBmb3Igc29tZSByZWFzb24sIHNvIGZv ciBub3csCisrCQkvLyAganVzdCBkaXNhYmxlIGNvZGUgc2lnbmluZyBmb3IgdGhlIG51bml0IGFz c2VtYmxpZXMuIEl0J3Mgbm90IGltcG9ydGFudC4KKysJCS8vIEknZCByYXRoZXIgZml4IHRoaXMg YnkgdXBkYXRpbmcgdGhlIG1ha2VmaWxlcyBidXQgaXQgc2VlbXMgdG8gYmUgaW1wb3NzaWJsZSB0 byBkaXNhYmxlCisrCQkvLyAgY29kZSBzaWduaW5nIGluIG91ciBtYWtlIHN5c3RlbS4uLgorKwor KwkJaWYgKFN0cm9uZ05hbWVLZXlGaWxlPy5Db250YWlucygibnVuaXQuc25rIikgPz8gZmFsc2Up CisrCQkJU3Ryb25nTmFtZUtleUZpbGUgPSBudWxsOworKworIAkJLy8KKyAJCS8vIFJlcGxhY2Ug dGhlIHRlbXBsYXRlIHZhbHVlcworIAkJLy8KK0BAIC04OTQsNiArOTcwLDkgQEAgY2xhc3MgTXNi dWlsZEdlbmVyYXRvciB7CisgCQkJCSIgICAgPEFzc2VtYmx5T3JpZ2luYXRvcktleUZpbGU+ezB9 PC9Bc3NlbWJseU9yaWdpbmF0b3JLZXlGaWxlPiIsCisgCQkJCVN0cm9uZ05hbWVLZXlGaWxlLCBT dHJvbmdOYW1lRGVsYXlTaWduID8gIiAgICA8RGVsYXlTaWduPnRydWU8L0RlbGF5U2lnbj4iICsg TmV3TGluZSA6ICIiKTsKKyAJCX0KKysKKysJCXN0cmluZyBhc3NlbWJseU5hbWUgPSBQYXRoLkdl dEZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbiAob3V0cHV0X25hbWUpOworKworIAkJQ3Nwcm9qLm91 dHB1dCA9IHRlbXBsYXRlLgorIAkJCVJlcGxhY2UgKCJAT1VUUFVUVFlQRUAiLCBUYXJnZXQgPT0g VGFyZ2V0LkxpYnJhcnkgPyAiTGlicmFyeSIgOiAiRXhlIikuCisgCQkJUmVwbGFjZSAoIkBTSUdO QVRVUkVAIiwgc3Ryb25nTmFtZVNlY3Rpb24pLgorQEAgLTkwNiw3ICs5ODUsNyBAQCBjbGFzcyBN c2J1aWxkR2VuZXJhdG9yIHsKKyAJCQlSZXBsYWNlICgiQE5PQ09ORklHQCIsICI8Tm9Db25maWc+ IiArICghbG9hZF9kZWZhdWx0X2NvbmZpZykuVG9TdHJpbmcgKCkgKyAiPC9Ob0NvbmZpZz4iKS4K KyAJCQlSZXBsYWNlICgiQEFMTE9XVU5TQUZFQCIsIFVuc2FmZSA/ICI8QWxsb3dVbnNhZmVCbG9j a3M+dHJ1ZTwvQWxsb3dVbnNhZmVCbG9ja3M+IiA6ICIiKS4KKyAJCQlSZXBsYWNlICgiQEZYX1ZF UlNJT04iLCBmeF92ZXJzaW9uKS4KKy0JCQlSZXBsYWNlICgiQEFTU0VNQkxZTkFNRUAiLCBQYXRo LkdldEZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbiAob3V0cHV0X25hbWUpKS4KKysJCQlSZXBsYWNl ICgiQEFTU0VNQkxZTkFNRUAiLCBhc3NlbWJseU5hbWUpLgorIAkJCVJlcGxhY2UgKCJAT1VUUFVU RElSQCIsIGJ1aWxkX291dHB1dF9kaXIpLgorIAkJCVJlcGxhY2UgKCJAT1VUUFVUU1VGRklYQCIs IFBhdGguR2V0RmlsZU5hbWUgKGJ1aWxkX291dHB1dF9kaXIpKS4KKyAJCQlSZXBsYWNlICgiQERF RklORUNPTlNUQU5UU0AiLCBkZWZpbmVzLlRvU3RyaW5nICgpKS4KK0BAIC05MjAsNyArOTk5LDEx IEBAIGNsYXNzIE1zYnVpbGRHZW5lcmF0b3IgeworIAkJCVJlcGxhY2UgKCJAQURESVRJT05BTExJ QlBBVEhTQCIsIFN0cmluZy5FbXB0eSkuCisgCQkJUmVwbGFjZSAoIkBSRVNPVVJDRVNAIiwgcmVz b3VyY2VzLlRvU3RyaW5nICgpKS4KKyAJCQlSZXBsYWNlICgiQE9QVElNSVpFQCIsIE9wdGltaXpl ID8gInRydWUiIDogImZhbHNlIikuCistCQkJUmVwbGFjZSAoIkBTT1VSQ0VTQCIsIHNvdXJjZXMu VG9TdHJpbmcgKCkpOworKwkJCVJlcGxhY2UgKCJAU09VUkNFU0AiLCBzb3VyY2VzLlRvU3RyaW5n ICgpKS4KKysJCQlSZXBsYWNlICgiQE1FVEFEQVRBVkVSU0lPTkAiLCBhc3NlbWJseU5hbWUgPT0g Im1zY29ybGliIiA/ICI8UnVudGltZU1ldGFkYXRhVmVyc2lvbj5Nb25vPC9SdW50aW1lTWV0YWRh dGFWZXJzaW9uPiIgOiAiIik7CisrCisrCQlDc3Byb2oucHJlQnVpbGRFdmVudCA9IHByZWJ1aWxk OworKwkJQ3Nwcm9qLnBvc3RCdWlsZEV2ZW50ID0gcG9zdGJ1aWxkOworIAorIAkJLy9Db25zb2xl LldyaXRlTGluZSAoIkdlbmVyYXRlZCB7MH0iLCBvZmlsZS5SZXBsYWNlICgiXFwiLCAiLyIpKTsK KyAJCXVzaW5nICh2YXIgbyA9IG5ldyBTdHJlYW1Xcml0ZXIgKGdlbmVyYXRlZFByb2pGaWxlKSkg eworQEAgLTkzOSwxNSArMTAyMiwxMyBAQCBjbGFzcyBNc2J1aWxkR2VuZXJhdG9yIHsKKyAJCWlm IChxICE9IC0xKQorIAkJCXRhcmdldCA9IHRhcmdldCArIExvYWQgKGxpYnJhcnkuU3Vic3RyaW5n ICgwLCBxKSArIHN1ZmZpeCk7CisgCistCQlpZiAodGFyZ2V0LkluZGV4T2YgKCJATU9OT0AiKSAh PSAtMSl7CistCQkJdGFyZ2V0X3VuaXggPSB0YXJnZXQuUmVwbGFjZSAoIkBNT05PQCIsICJtb25v IikuUmVwbGFjZSAoIkBDQVRAIiwgImNhdCIpOworLQkJCXRhcmdldF93aW5kb3dzID0gdGFyZ2V0 LlJlcGxhY2UgKCJATU9OT0AiLCAiIikuUmVwbGFjZSAoIkBDQVRAIiwgInR5cGUiKTsKKy0JCX0g ZWxzZSB7CistCQkJdGFyZ2V0X3VuaXggPSB0YXJnZXQuUmVwbGFjZSAoImpheS5leGUiLCAiamF5 Iik7CistCQkJdGFyZ2V0X3dpbmRvd3MgPSB0YXJnZXQ7CistCQl9CisrCQl0YXJnZXRfdW5peCA9 IHRhcmdldC5SZXBsYWNlICgiQE1PTk9AIiwgIm1vbm8iKS5SZXBsYWNlICgiQENBVEAiLCAiY2F0 Iik7CisrCQl0YXJnZXRfd2luZG93cyA9IHRhcmdldC5SZXBsYWNlICgiQE1PTk9AIiwgIiIpLlJl cGxhY2UgKCJAQ0FUQCIsICJ0eXBlIik7CisrCisrCQl0YXJnZXRfdW5peCA9IHRhcmdldF91bml4 LlJlcGxhY2UgKCJcXGpheVxcamF5LmV4ZSIsICJcXGpheVxcamF5XFxqYXkiKTsKKysKKyAJCXRh cmdldF91bml4ID0gdGFyZ2V0X3VuaXguUmVwbGFjZSAoIkBDT1BZQCIsICJjcCIpOworLQkJdGFy Z2V0X3dpbmRvd3MgPSB0YXJnZXRfdW5peC5SZXBsYWNlICgiQENPUFlAIiwgImNvcHkiKTsKKysJ CXRhcmdldF93aW5kb3dzID0gdGFyZ2V0X3dpbmRvd3MuUmVwbGFjZSAoIkBDT1BZQCIsICJjb3B5 Iik7CisgCisgCQl0YXJnZXRfdW5peCA9IHRhcmdldF91bml4LlJlcGxhY2UgKCJcciIsICIiKTsK KyAJCWNvbnN0IHN0cmluZyBjb25kaXRpb25fdW5peCAgICA9ICJDb25kaXRpb249XCIgJyQoT1Mp JyAhPSAnV2luZG93c19OVCcgXCIiOwotLSAKMi40NS4yCgo= --b1=_an9yUQc81YewVJ071Mjh6ZcI5zllr0hgLHfHss8ka8A--