Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1puRe7-00009t-DE for pgsql-hackers@arkaria.postgresql.org; Thu, 04 May 2023 05:36:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1puRd6-0006rI-3U for pgsql-hackers@arkaria.postgresql.org; Thu, 04 May 2023 05:35:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1puRd5-0006r9-9R for pgsql-hackers@lists.postgresql.org; Thu, 04 May 2023 05:35:47 +0000 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1puRd0-000Qjl-1S for pgsql-hackers@lists.postgresql.org; Thu, 04 May 2023 05:35:45 +0000 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-64389a44895so103552b3a.1 for ; Wed, 03 May 2023 22:35:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20221208.gappssmtp.com; s=20221208; t=1683178541; x=1685770541; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=+KP4V3W3T1OGlyB1Ham1AXTglLVY6C+a7gEIkJM+hrA=; b=3ZZBgZZC7NBmdZynwyx9WYhKNA9jx/CeL+vcP1yoZi3gPWv0a4OKQoxEHeVfTv9Ntj wyPsKeO9GczIHPd2Y1PlLzIMOtzFn/ogVe/Di60G/iwfge1P8SfT8EA5nmP308TFn75N oWIeT32ZYHqH+0M3ib9qTT4b0JZO/X1V6rg1kFm84tVg5veQdwMI1huzMpCrZSFUO1o7 8Qvv4b0prwXHKIPwR5HpwHUW1dc5w+/s5tMJTiZ5EjAt/axJuazvGf7nzIaO9EwsS/Js Eqi8Fh/HAdhjX0SCNc02dclHMIf/jbv7pOT5i9tt6JyQdUpG6wcesbMORXkZGbg81/7s nEBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683178541; x=1685770541; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=+KP4V3W3T1OGlyB1Ham1AXTglLVY6C+a7gEIkJM+hrA=; b=SrSPExm1ejy7BQFSvc2RnH6/+CP8pZwN1gTfFeSPKHL8ahkKedRwKSfLX2nYM1jkx6 t0Uv9i6Qb1UcM19vA02ZkbI0ocdDYqWKtIrzldNRHsuJPIji3n2BaTmPoxBJhHYMNh6e uW5QYJXH7QtNzLYl2wwkBotLdlaGsOGSWsPjnOve87RlgqxPyZKss2YUGvDu9VdZC93Y 71rxtewzmNAdCGvqTclLipAJB1nedwQHVgV+zktf+3LFxtz/l6K5tmnYPd1/KxirdLJY jjSGi85fb/fYdIyNLVT32m19m1o3bdOB57RTwjxYx4mPz9umnI8mY2XPk4q33pOC/gSm 189A== X-Gm-Message-State: AC+VfDzDgCoMNnQOoZQcwLvA5pLRTPTT1A2TuoQ0nwpJq3x4m7wIjUjn 2OO34qSEunZymVNKQArTYOJkDA== X-Google-Smtp-Source: ACHHUZ7B5hoVQgTP8slmaqoDnZ7mS467XTwmzgnIK3kYi3AO4Yd4ZQgSsrEUIi4z9sLTNK2tSZJTvQ== X-Received: by 2002:aa7:888d:0:b0:63d:6984:7a93 with SMTP id z13-20020aa7888d000000b0063d69847a93mr1502796pfe.30.1683178540818; Wed, 03 May 2023 22:35:40 -0700 (PDT) Received: from jeff-laptop.lan (c-73-170-46-202.hsd1.ca.comcast.net. [73.170.46.202]) by smtp.gmail.com with ESMTPSA id j16-20020aa783d0000000b0064358d032a4sm1454553pfn.145.2023.05.03.22.35.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 May 2023 22:35:40 -0700 (PDT) Message-ID: <37520ec1ae9591f83132f82dbd625f3fc2d69c16.camel@j-davis.com> Subject: Re: Order changes in PG16 since ICU introduction From: Jeff Davis To: Daniel Verite Cc: Andrew Gierth , Peter Eisentraut , Sandro Santilli , Tom Lane , Regina Obe , pgsql-hackers@lists.postgresql.org Date: Wed, 03 May 2023 22:35:41 -0700 In-Reply-To: <654a49f7ff7461bcf47be4181430678d45f93858.camel@j-davis.com> References: <543e4ce6-8205-4aea-b54b-12b9ef747bf6@manitou-mail.org> <654a49f7ff7461bcf47be4181430678d45f93858.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-x2ICV1s1QTxvoAek1xDb" User-Agent: Evolution 3.44.4-0ubuntu1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-x2ICV1s1QTxvoAek1xDb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 2023-04-28 at 14:35 -0700, Jeff Davis wrote: > On Thu, 2023-04-27 at 14:23 +0200, Daniel Verite wrote: > > This should be pg_strcasecmp(...) =3D=3D 0 >=20 > Good catch, thank you! Fixed in updated patches. Rebased patches. =3D=3D=3D 0001: do not convert C to en-US-u-va-posix I plan to commit this soon. If someone specifies "C", they are probably expecting memcmp()-like behavior, or some kind of error/warning that it can't be provided. Removing this transformation means that if you specify iculocale=3DC, you'll get an error or warning (depending on icu_validation_level), because C is not a recognized icu locale. Depending on how some of the other issues in this thread are sorted out, we may want to relax the validation. =3D=3D=3D 0002: fix @euro, etc. in ICU >=3D 64 I'd like to commit this soon too, but I'll wait for someone to take a look. It makes it more reliable to map libc names to icu locale names regardless of the ICU version. It doesn't solve the problem for locales like "de__PHONEBOOK", but those don't seem to be a libc format (I think just an old ICU format), so I don't see a big reason to carry it forward. It might be another reason to turn down the validation level to WARNING, though. =3D=3D=3D 0003: support C memcmp() behavior with ICU provider The current patch 0003 has a problem, because in previous postgres versions (going all the way back), we allowed "C" as a valid ICU locale, that would actually be passed to ICU as a locale name. But ICU didn't recognize it, and it would end up opening the root locale. So we can't simply redefine "C" to mean "memcmp", because that would potentially break indexes. I see the following potential solutions: 1. Represent the memcmp behavior with iculocale=3DNULL, or some other catalog hack, so that we can distinguish between a locale "C" upgraded from a previous version (which should pass "C" to ICU and get the root locale), and a new collation defined with locale "C" (which should have memcmp behavior). The catalog representation for locale information is already complex, so I'm not excited about this option, but it will work. 2. When provider=3Dicu and locale=3DC, magically transform that into provider=3Dlibc to get memcmp-like behavior for new collations but preserve the existing behavior for upgraded collations. Not especially clean, but if we issue a NOTICE perhaps that would avoid confusion. 3. Like #2, except create a new provider type "none" which may be slightly less confusing. =3D=3D=3D 0004: make LOCALE apply to ICU for CREATE DATABASE To understand this patch it helps to understand the confusing situation with CREATE DATABASE in version 15: The keywords LC_CTYPE and LC_COLLATE set the server environment LC_CTYPE/LC_COLLATE for that database and can be specified regardless of the provider. LOCALE can be specified along with (or instead of) LC_CTYPE and LC_COLLATE,=C2=A0in which case whichever of LC_CTYPE or LC_COLLATE is unspecified defaults to the setting of LOCALE. Iff the provider is libc, LC_CTYPE and LC_COLLATE also act as the database default collation's locale. If the provider is icu, then none of LOCALE, LC_CTYPE, or LC_COLLATE affect the database default collation's locale at all; that's controlled by ICU_LOCALE (which may be omitted if the template's daticulocale is non-NULL). The idea of patch 0004 is to address the last part, which is probably the most confusing aspect. But for that to work smoothly, we need something like 0003 so that LOCALE=3DC gives the same semantics regardless of the provider. Regards, Jeff Davis --=-x2ICV1s1QTxvoAek1xDb Content-Disposition: attachment; filename="v4-0001-ICU-do-not-convert-locale-C-to-en-US-u-va-posix.patch" Content-Type: text/x-patch; name="v4-0001-ICU-do-not-convert-locale-C-to-en-US-u-va-posix.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBkZGRhNjgzOTYzOTU5YTE3NWRmZjE3YWIwZTNkODUxOTY0MTQ5OGI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDIxIEFwciAyMDIzIDE0OjAzOjU3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2NCAxLzRdIElD VTogZG8gbm90IGNvbnZlcnQgbG9jYWxlICdDJyB0byAnZW4tVVMtdS12YS1wb3NpeCcuCgpUaGUg Y29udmVyc2lvbiB3YXMgaW50ZW5kZWQgdG8gYmUgZm9yIGNvbnZlbmllbmNlLCBidXQgaXQncyBt b3JlCmxpa2VseSB0byBiZSBjb25mdXNpbmcgdGhhbiB1c2VmdWwuCgpUaGUgdXNlciBjYW4gc3Rp bGwgZGlyZWN0bHkgc3BlY2lmeSAnZW4tVVMtdS12YS1wb3NpeCcgaWYgZGVzaXJlZC4KCkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZjgzZjA4OWVlMWU5YWNkNWRiYmJmMzM1MzI5NGQy NGUxZjE5NmU5NS5jYW1lbEBqLWRhdmlzLmNvbQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGUuYyAgICAgICAgICAgICB8IDE5ICstLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iaW4v aW5pdGRiL2luaXRkYi5jICAgICAgICAgICAgICAgICAgICAgICB8IDE3ICstLS0tLS0tLS0tLS0t LS0tCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCAgICAgfCAgOCAr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwgICAgIHwg IDQgKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggZjBiNjU2N2RhMS4uNTFiNDIyMWEz OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwpAQCAtMjc4MiwyNiArMjc4MiwxMCBAQCBp Y3VfbGFuZ3VhZ2VfdGFnKGNvbnN0IGNoYXIgKmxvY19zdHIsIGludCBlbGV2ZWwpCiB7CiAjaWZk ZWYgVVNFX0lDVQogCVVFcnJvckNvZGUJIHN0YXR1czsKLQljaGFyCQkgbGFuZ1tVTE9DX0xBTkdf Q0FQQUNJVFldOwogCWNoYXIJCSpsYW5ndGFnOwogCXNpemVfdAkJIGJ1ZmxlbiA9IDMyOwkvKiBh cmJpdHJhcnkgc3RhcnRpbmcgYnVmZmVyIHNpemUgKi8KIAljb25zdCBib29sCSBzdHJpY3QgPSB0 cnVlOwogCi0Jc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotCXVsb2NfZ2V0TGFuZ3VhZ2UobG9jX3N0 ciwgbGFuZywgVUxPQ19MQU5HX0NBUEFDSVRZLCAmc3RhdHVzKTsKLQlpZiAoVV9GQUlMVVJFKHN0 YXR1cykpCi0JewotCQlpZiAoZWxldmVsID4gMCkKLQkJCWVyZXBvcnQoZWxldmVsLAotCQkJCQko ZXJybXNnKCJjb3VsZCBub3QgZ2V0IGxhbmd1YWdlIGZyb20gbG9jYWxlIFwiJXNcIjogJXMiLAot CQkJCQkJCWxvY19zdHIsIHVfZXJyb3JOYW1lKHN0YXR1cykpKSk7Ci0JCXJldHVybiBOVUxMOwot CX0KLQotCS8qIEMvUE9TSVggbG9jYWxlcyBhcmVuJ3QgaGFuZGxlZCBieSB1bG9jX2dldExhbmd1 YWdlVGFnKCkgKi8KLQlpZiAoc3RyY21wKGxhbmcsICJjIikgPT0gMCB8fCBzdHJjbXAobGFuZywg InBvc2l4IikgPT0gMCkKLQkJcmV0dXJuIHBzdHJkdXAoImVuLVVTLXUtdmEtcG9zaXgiKTsKLQog CS8qCiAJICogQSBCQ1A0NyBsYW5ndWFnZSB0YWcgZG9lc24ndCBoYXZlIGEgY2xlYXJseS1kZWZp bmVkIHVwcGVyIGxpbWl0CiAJICogKGNmLiBSRkM1NjQ2IHNlY3Rpb24gNC40KS4gQWRkaXRpb25h bGx5LCBpbiBvbGRlciBJQ1UgdmVyc2lvbnMsCkBAIC0yODg5LDggKzI4NzMsNyBAQCBpY3VfdmFs aWRhdGVfbG9jYWxlKGNvbnN0IGNoYXIgKmxvY19zdHIpCiAKIAkvKiBjaGVjayBmb3Igc3BlY2lh bCBsYW5ndWFnZSBuYW1lICovCiAJaWYgKHN0cmNtcChsYW5nLCAiIikgPT0gMCB8fAotCQlzdHJj bXAobGFuZywgInJvb3QiKSA9PSAwIHx8IHN0cmNtcChsYW5nLCAidW5kIikgPT0gMCB8fAotCQlz dHJjbXAobGFuZywgImMiKSA9PSAwIHx8IHN0cmNtcChsYW5nLCAicG9zaXgiKSA9PSAwKQorCQlz dHJjbXAobGFuZywgInJvb3QiKSA9PSAwIHx8IHN0cmNtcChsYW5nLCAidW5kIikgPT0gMCkKIAkJ Zm91bmQgPSB0cnVlOwogCiAJLyogc2VhcmNoIGZvciBtYXRjaGluZyBsYW5ndWFnZSB3aXRoaW4g SUNVICovCmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYyBiL3NyYy9iaW4vaW5p dGRiL2luaXRkYi5jCmluZGV4IDJjMjA4ZWFkMDEuLjQwODY4MzQ0NTggMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vaW5pdGRiL2luaXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0y MjM4LDI0ICsyMjM4LDEwIEBAIGljdV9sYW5ndWFnZV90YWcoY29uc3QgY2hhciAqbG9jX3N0cikK IHsKICNpZmRlZiBVU0VfSUNVCiAJVUVycm9yQ29kZQkgc3RhdHVzOwotCWNoYXIJCSBsYW5nW1VM T0NfTEFOR19DQVBBQ0lUWV07CiAJY2hhcgkJKmxhbmd0YWc7CiAJc2l6ZV90CQkgYnVmbGVuID0g MzI7CS8qIGFyYml0cmFyeSBzdGFydGluZyBidWZmZXIgc2l6ZSAqLwogCWNvbnN0IGJvb2wJIHN0 cmljdCA9IHRydWU7CiAKLQlzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0JdWxvY19nZXRMYW5ndWFn ZShsb2Nfc3RyLCBsYW5nLCBVTE9DX0xBTkdfQ0FQQUNJVFksICZzdGF0dXMpOwotCWlmIChVX0ZB SUxVUkUoc3RhdHVzKSkKLQl7Ci0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgZ2V0IGxhbmd1YWdlIGZy b20gbG9jYWxlIFwiJXNcIjogJXMiLAotCQkJCSBsb2Nfc3RyLCB1X2Vycm9yTmFtZShzdGF0dXMp KTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCi0JLyogQy9QT1NJWCBsb2NhbGVzIGFyZW4ndCBoYW5k bGVkIGJ5IHVsb2NfZ2V0TGFuZ3VhZ2VUYWcoKSAqLwotCWlmIChzdHJjbXAobGFuZywgImMiKSA9 PSAwIHx8IHN0cmNtcChsYW5nLCAicG9zaXgiKSA9PSAwKQotCQlyZXR1cm4gcHN0cmR1cCgiZW4t VVMtdS12YS1wb3NpeCIpOwotCiAJLyoKIAkgKiBBIEJDUDQ3IGxhbmd1YWdlIHRhZyBkb2Vzbid0 IGhhdmUgYSBjbGVhcmx5LWRlZmluZWQgdXBwZXIgbGltaXQKIAkgKiAoY2YuIFJGQzU2NDYgc2Vj dGlvbiA0LjQpLiBBZGRpdGlvbmFsbHksIGluIG9sZGVyIElDVSB2ZXJzaW9ucywKQEAgLTIzMjcs OCArMjMxMyw3IEBAIGljdV92YWxpZGF0ZV9sb2NhbGUoY29uc3QgY2hhciAqbG9jX3N0cikKIAog CS8qIGNoZWNrIGZvciBzcGVjaWFsIGxhbmd1YWdlIG5hbWUgKi8KIAlpZiAoc3RyY21wKGxhbmcs ICIiKSA9PSAwIHx8Ci0JCXN0cmNtcChsYW5nLCAicm9vdCIpID09IDAgfHwgc3RyY21wKGxhbmcs ICJ1bmQiKSA9PSAwIHx8Ci0JCXN0cmNtcChsYW5nLCAiYyIpID09IDAgfHwgc3RyY21wKGxhbmcs ICJwb3NpeCIpID09IDApCisJCXN0cmNtcChsYW5nLCAicm9vdCIpID09IDAgfHwgc3RyY21wKGxh bmcsICJ1bmQiKSA9PSAwKQogCQlmb3VuZCA9IHRydWU7CiAKIAkvKiBzZWFyY2ggZm9yIG1hdGNo aW5nIGxhbmd1YWdlIHdpdGhpbiBJQ1UgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NvbGxhdGUuaWN1LnV0Zjgub3V0CmluZGV4IGI1YTIyMWIwMzAuLjk5ZjEyZDJlNzMgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApAQCAtMTAy MCw2ICsxMDIwLDcgQEAgQ1JFQVRFIFJPTEUgcmVncmVzc190ZXN0X3JvbGU7CiBDUkVBVEUgU0NI RU1BIHRlc3Rfc2NoZW1hOwogLS0gV2UgbmVlZCB0byBkbyB0aGlzIHRoaXMgd2F5IHRvIGNvcGUg d2l0aCB2YXJ5aW5nIG5hbWVzIGZvciBlbmNvZGluZ3M6CiBTRVQgY2xpZW50X21pbl9tZXNzYWdl cyBUTyBXQVJOSU5HOworU0VUIGljdV92YWxpZGF0aW9uX2xldmVsID0gZGlzYWJsZWQ7CiBkbyAk JAogQkVHSU4KICAgRVhFQ1VURSAnQ1JFQVRFIENPTExBVElPTiB0ZXN0MCAocHJvdmlkZXIgPSBp Y3UsIGxvY2FsZSA9ICcgfHwKQEAgLTEwMzQsMTcgKzEwMzUsMjQgQEAgQkVHSU4KICAgICAgICAg ICBxdW90ZV9saXRlcmFsKGN1cnJlbnRfc2V0dGluZygnbGNfY29sbGF0ZScpKSB8fCAnKTsnOwog RU5ECiAkJDsKK1JFU0VUIGljdV92YWxpZGF0aW9uX2xldmVsOwogUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKIENSRUFURSBDT0xMQVRJT04gdGVzdDMgKHByb3ZpZGVyID0gaWN1LCBsY19jb2xs YXRlID0gJ2VuX1VTLnV0ZjgnKTsgLS0gZmFpbCwgbmVlZHMgImxvY2FsZSIKIEVSUk9SOiAgcGFy YW1ldGVyICJsb2NhbGUiIG11c3QgYmUgc3BlY2lmaWVkCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4 IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNlbnNlLW5vd2hlcmUnKTsgLS0gZmFpbHMK IEVSUk9SOiAgSUNVIGxvY2FsZSAibm9uc2Vuc2Utbm93aGVyZSIgaGFzIHVua25vd24gbGFuZ3Vh Z2UgIm5vbnNlbnNlIgogSElOVDogIFRvIGRpc2FibGUgSUNVIGxvY2FsZSB2YWxpZGF0aW9uLCBz ZXQgcGFyYW1ldGVyIGljdV92YWxpZGF0aW9uX2xldmVsIHRvIERJU0FCTEVELgorQ1JFQVRFIENP TExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdjJyk7IC0tIGZhaWxzCitF UlJPUjogIGNvdWxkIG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJjIiB0byBsYW5ndWFnZSB0YWc6 IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUgogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlk ZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMnKTsg LS0gZmFpbHMKIEVSUk9SOiAgY291bGQgbm90IGNvbnZlcnQgbG9jYWxlIG5hbWUgIkBjb2xTdHJl bmd0aD1wcmltYXJ5O25vbnNlbnNlPXllcyIgdG8gbGFuZ3VhZ2UgdGFnOiBVX0lMTEVHQUxfQVJH VU1FTlRfRVJST1IKIFNFVCBpY3VfdmFsaWRhdGlvbl9sZXZlbCA9IFdBUk5JTkc7CiBDUkVBVEUg Q09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xTdHJlbmd0aD1w cmltYXJ5O25vbnNlbnNlPXllcycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKIFdBUk5JTkc6ICBj b3VsZCBub3QgY29udmVydCBsb2NhbGUgbmFtZSAiQGNvbFN0cmVuZ3RoPXByaW1hcnk7bm9uc2Vu c2U9eWVzIiB0byBsYW5ndWFnZSB0YWc6IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUgorQ1JFQVRF IENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdjJyk7IERST1AgQ09M TEFUSU9OIHRlc3R4OworV0FSTklORzogIGNvdWxkIG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJj IiB0byBsYW5ndWFnZSB0YWc6IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUgorV0FSTklORzogIElD VSBsb2NhbGUgImMiIGhhcyB1bmtub3duIGxhbmd1YWdlICJjIgorSElOVDogIFRvIGRpc2FibGUg SUNVIGxvY2FsZSB2YWxpZGF0aW9uLCBzZXQgcGFyYW1ldGVyIGljdV92YWxpZGF0aW9uX2xldmVs IHRvIERJU0FCTEVELgogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxv Y2FsZSA9ICdub25zZW5zZS1ub3doZXJlJyk7IERST1AgQ09MTEFUSU9OIHRlc3R4OwogV0FSTklO RzogIElDVSBsb2NhbGUgIm5vbnNlbnNlLW5vd2hlcmUiIGhhcyB1bmtub3duIGxhbmd1YWdlICJu b25zZW5zZSIKIEhJTlQ6ICBUbyBkaXNhYmxlIElDVSBsb2NhbGUgdmFsaWRhdGlvbiwgc2V0IHBh cmFtZXRlciBpY3VfdmFsaWRhdGlvbl9sZXZlbCB0byBESVNBQkxFRC4KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKaW5kZXggODVlMjY5NTFiNi4uZDk3NzhmYWFjYyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKQEAgLTM1OCw2ICsz NTgsNyBAQCBDUkVBVEUgU0NIRU1BIHRlc3Rfc2NoZW1hOwogCiAtLSBXZSBuZWVkIHRvIGRvIHRo aXMgdGhpcyB3YXkgdG8gY29wZSB3aXRoIHZhcnlpbmcgbmFtZXMgZm9yIGVuY29kaW5nczoKIFNF VCBjbGllbnRfbWluX21lc3NhZ2VzIFRPIFdBUk5JTkc7CitTRVQgaWN1X3ZhbGlkYXRpb25fbGV2 ZWwgPSBkaXNhYmxlZDsKIAogZG8gJCQKIEJFR0lOCkBAIC0zNzMsMTMgKzM3NCwxNiBAQCBCRUdJ TgogRU5ECiAkJDsKIAorUkVTRVQgaWN1X3ZhbGlkYXRpb25fbGV2ZWw7CiBSRVNFVCBjbGllbnRf bWluX21lc3NhZ2VzOwogCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3QzIChwcm92aWRlciA9IGljdSwg bGNfY29sbGF0ZSA9ICdlbl9VUy51dGY4Jyk7IC0tIGZhaWwsIG5lZWRzICJsb2NhbGUiCiBDUkVB VEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNlbnNlLW5v d2hlcmUnKTsgLS0gZmFpbHMKK0NSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1 LCBsb2NhbGUgPSAnYycpOyAtLSBmYWlscwogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlk ZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMnKTsg LS0gZmFpbHMKIFNFVCBpY3VfdmFsaWRhdGlvbl9sZXZlbCA9IFdBUk5JTkc7CiBDUkVBVEUgQ09M TEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xTdHJlbmd0aD1wcmlt YXJ5O25vbnNlbnNlPXllcycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKK0NSRUFURSBDT0xMQVRJ T04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycpOyBEUk9QIENPTExBVElPTiB0 ZXN0eDsKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAn bm9uc2Vuc2Utbm93aGVyZScpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKIFJFU0VUIGljdV92YWxp ZGF0aW9uX2xldmVsOwogCi0tIAoyLjM0LjEKCg== --=-x2ICV1s1QTxvoAek1xDb Content-Disposition: attachment; filename="v4-0002-ICU-fix-up-old-libc-style-locale-strings.patch" Content-Type: text/x-patch; name="v4-0002-ICU-fix-up-old-libc-style-locale-strings.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAzZGI2YWJkMGZlNTZlOWM0YjY2NTNlMDRlMjhmNmY3NzM4MWMyZmM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDI4IEFwciAyMDIzIDEyOjIyOjQxIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2NCAyLzRdIElD VTogZml4IHVwIG9sZCBsaWJjLXN0eWxlIGxvY2FsZSBzdHJpbmdzLgoKQmVmb3JlIHRyYW5zZm9y bWluZyBhIGxvY2FsZSBzdHJpbmcgaW50byBhIGxhbmd1YWdlIHRhZywgZml4IHVwIG9sZApsaWJj LXN0eWxlIGxvY2FsZSBzdHJpbmdzIHN1Y2ggYXMgJ2ZyX0ZSQGV1cm8nLiBPbGRlciBJQ1UgdmVy c2lvbnMgZGlkCnRoaXMgYXV0b21hdGljYWxseSwgYnV0IElDVSB2ZXJzaW9uIDY0IHJlbW92ZWQg dGhhdCBzdXBwb3J0LgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS82NTRhNDlmN2Zm NzQ2MWJjZjQ3YmU0MTgxNDMwNjc4ZDQ1ZjkzODU4LmNhbWVsJTQwai1kYXZpcy5jb20KLS0tCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgICAgICAgICAgICAgfCA1OSArKysrKysr KysrKysrKysrLQogc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgICAgICAgICAgICAgICAgICAgICAg IHwgNjMgKysrKysrKysrKysrKysrKysrLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5p Y3UudXRmOC5vdXQgICAgIHwgMTEgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5p Y3UudXRmOC5zcWwgICAgIHwgIDcgKysrCiA0IGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwppbmRleCA1MWI0 MjIxYTM5Li4wZTczNDNiMjhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdf bG9jYWxlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCkBAIC0yNzY2 LDYgKzI3NjYsNjAgQEAgaWN1X3NldF9jb2xsYXRpb25fYXR0cmlidXRlcyhVQ29sbGF0b3IgKmNv bGxhdG9yLCBjb25zdCBjaGFyICpsb2MsCiAJcGZyZWUobG93ZXJfc3RyKTsKIH0KIAorc3RhdGlj IGNvbnN0IGNoYXIgKmljdV92YXJpYW50X21hcFtdWzJdID0geworCXsgIkBFVVJPIiwgICAiQGN1 cnJlbmN5PUVVUiIgfSwKKwl7ICJAUElOWUlOIiwgIkBjb2xsYXRpb249cGlueWluIiB9LAorCXsg IkBTVFJPS0UiLCAiQGNvbGxhdGlvbj1zdHJva2UiIH0sCit9OworCisjZGVmaW5lIElDVV9WQVJJ QU5UX01BUF9TSVpFIFwKKwkoc2l6ZW9mKGljdV92YXJpYW50X21hcCkvc2l6ZW9mKGljdV92YXJp YW50X21hcFswXSkpCisKKy8qCisgKiBJQ1UgdmVyc2lvbiA2NCByZW1vdmVkIHRoZSBhYmlsaXR5 IHRvIHRyYW5zZm9ybSBsb2NhbGUgc3RyaW5ncyBvZiB0aGUgZm9ybQorICogJy4uLkBWQVJJQU5U JyBpbnRvIHByb3BlciBsYW5ndWFnZSB0YWdzLiBQZXJmb3JtIHRoZSB0cmFuc2Zvcm1hdGlvbiBm cm9tCisgKiB3aXRoaW4gUG9zdGdyZXMgc28gdGhhdCBJQ1Ugc3VwcG9ydHMgYW55IGxpYmMgbG9j YWxlIG5hbWUgY29uc2lzdGVudGx5LAorICogcmVnYXJkbGVzcyBvZiB0aGUgSUNVIHZlcnNpb24u CisgKi8KK3N0YXRpYyBjaGFyICoKK2ljdV9maXhfdmFyaWFudHMoY29uc3QgY2hhciAqbG9jX3N0 cikKK3sKKwljb25zdCBjaGFyICpvbGRfdmFyaWFudCA9IHN0cnJjaHIobG9jX3N0ciwgJ0AnKTsK KworCS8qCisJICogRXh0cmFjdCBhIHZhcmlhbnQgb2YgdGhlIGZvcm0gJy4uLkBWQVJJQU5UJywg YW5kIHJlcGxhY2Ugd2l0aAorCSAqIHRoZSBhcHByb3ByaWF0ZSAnLi4uQGtleXdvcmQ9dmFsdWUn IGlmIGZvdW5kIGluIHRoZSBtYXAuCisJICovCisJaWYgKG9sZF92YXJpYW50KQorCXsKKwkJc2l6 ZV90IHByZWZpeF9sZW4gPSBvbGRfdmFyaWFudCAtIGxvY19zdHI7IC8qIGJ5dGVzIGJlZm9yZSB0 aGUgJ0AnICovCisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBJQ1VfVkFSSUFOVF9NQVBfU0laRTsg aSsrKQorCQl7CisJCQljb25zdCBjaGFyICptYXBfdmFyaWFudCA9IGljdV92YXJpYW50X21hcFtp XVswXTsKKwkJCWNvbnN0IGNoYXIgKm1hcF9yZXBsYWNlbWVudCA9IGljdV92YXJpYW50X21hcFtp XVsxXTsKKworCQkJaWYgKHBnX3N0cmNhc2VjbXAob2xkX3ZhcmlhbnQsIG1hcF92YXJpYW50KSA9 PSAwKQorCQkJeworCQkJCXNpemVfdAkgcmVwbGFjZW1lbnRfbGVuID0gc3RybGVuKG1hcF9yZXBs YWNlbWVudCk7CisJCQkJc2l6ZV90CSByZXN1bHRfbGVuOworCQkJCWNoYXIJKnJlc3VsdDsKKwor CQkJCXJlc3VsdF9sZW4gPSBwcmVmaXhfbGVuICsgcmVwbGFjZW1lbnRfbGVuICsgMTsKKwkJCQly ZXN1bHQgPSBwYWxsb2MocmVzdWx0X2xlbik7CisKKwkJCQltZW1jcHkocmVzdWx0LCBsb2Nfc3Ry LCBwcmVmaXhfbGVuKTsKKwkJCQltZW1jcHkocmVzdWx0ICsgcHJlZml4X2xlbiwgbWFwX3JlcGxh Y2VtZW50LCByZXBsYWNlbWVudF9sZW4pOworCQkJCXJlc3VsdFtwcmVmaXhfbGVuICsgcmVwbGFj ZW1lbnRfbGVuXSA9ICdcMCc7CisKKwkJCQlyZXR1cm4gcmVzdWx0OworCQkJfQorCQl9CisJfQor CisJcmV0dXJuIHBzdHJkdXAobG9jX3N0cik7Cit9CisKICNlbmRpZgogCiAvKgpAQCAtMjc4Miw2 ICsyODM2LDcgQEAgaWN1X2xhbmd1YWdlX3RhZyhjb25zdCBjaGFyICpsb2Nfc3RyLCBpbnQgZWxl dmVsKQogewogI2lmZGVmIFVTRV9JQ1UKIAlVRXJyb3JDb2RlCSBzdGF0dXM7CisJY2hhcgkJKmZp eGVkX2xvY19zdHIgPSBpY3VfZml4X3ZhcmlhbnRzKGxvY19zdHIpOwogCWNoYXIJCSpsYW5ndGFn OwogCXNpemVfdAkJIGJ1ZmxlbiA9IDMyOwkvKiBhcmJpdHJhcnkgc3RhcnRpbmcgYnVmZmVyIHNp emUgKi8KIAljb25zdCBib29sCSBzdHJpY3QgPSB0cnVlOwpAQCAtMjc5OCw3ICsyODUzLDcgQEAg aWN1X2xhbmd1YWdlX3RhZyhjb25zdCBjaGFyICpsb2Nfc3RyLCBpbnQgZWxldmVsKQogCQlpbnQz Ml90CQlsZW47CiAKIAkJc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotCQlsZW4gPSB1bG9jX3RvTGFu Z3VhZ2VUYWcobG9jX3N0ciwgbGFuZ3RhZywgYnVmbGVuLCBzdHJpY3QsICZzdGF0dXMpOworCQls ZW4gPSB1bG9jX3RvTGFuZ3VhZ2VUYWcoZml4ZWRfbG9jX3N0ciwgbGFuZ3RhZywgYnVmbGVuLCBz dHJpY3QsICZzdGF0dXMpOwogCiAJCS8qCiAJCSAqIElmIHRoZSByZXN1bHQgZml0cyBpbiB0aGUg YnVmZmVyIGV4YWN0bHkgKGxlbiA9PSBidWZsZW4pLApAQCAtMjgxOCw2ICsyODczLDggQEAgaWN1 X2xhbmd1YWdlX3RhZyhjb25zdCBjaGFyICpsb2Nfc3RyLCBpbnQgZWxldmVsKQogCQlicmVhazsK IAl9CiAKKwlwZnJlZShmaXhlZF9sb2Nfc3RyKTsKKwogCWlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK IAl7CiAJCXBmcmVlKGxhbmd0YWcpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9pbml0ZGIvaW5pdGRi LmMgYi9zcmMvYmluL2luaXRkYi9pbml0ZGIuYwppbmRleCA0MDg2ODM0NDU4Li42MDBjOGQ5M2Yz IDEwMDY0NAotLS0gYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYworKysgYi9zcmMvYmluL2luaXRk Yi9pbml0ZGIuYwpAQCAtMjIyOSw2ICsyMjI5LDY0IEBAIGNoZWNrX2ljdV9sb2NhbGVfZW5jb2Rp bmcoaW50IHVzZXJfZW5jKQogCXJldHVybiB0cnVlOwogfQogCisjaWZkZWYgVVNFX0lDVQorCitz dGF0aWMgY29uc3QgY2hhciAqaWN1X3ZhcmlhbnRfbWFwW11bMl0gPSB7CisJeyAiQEVVUk8iLCAg ICJAY3VycmVuY3k9RVVSIiB9LAorCXsgIkBQSU5ZSU4iLCAiQGNvbGxhdGlvbj1waW55aW4iIH0s CisJeyAiQFNUUk9LRSIsICJAY29sbGF0aW9uPXN0cm9rZSIgfSwKK307CisKKyNkZWZpbmUgSUNV X1ZBUklBTlRfTUFQX1NJWkUgXAorCShzaXplb2YoaWN1X3ZhcmlhbnRfbWFwKS9zaXplb2YoaWN1 X3ZhcmlhbnRfbWFwWzBdKSkKKworLyoKKyAqIElDVSB2ZXJzaW9uIDY0IHJlbW92ZWQgdGhlIGFi aWxpdHkgdG8gdHJhbnNmb3JtIGxvY2FsZSBzdHJpbmdzIG9mIHRoZSBmb3JtCisgKiAnLi4uQFZB UklBTlQnIGludG8gcHJvcGVyIGxhbmd1YWdlIHRhZ3MuIFBlcmZvcm0gdGhlIHRyYW5zZm9ybWF0 aW9uIGZyb20KKyAqIHdpdGhpbiBQb3N0Z3JlcyBzbyB0aGF0IElDVSBzdXBwb3J0cyBhbnkgbGli YyBsb2NhbGUgbmFtZSBjb25zaXN0ZW50bHksCisgKiByZWdhcmRsZXNzIG9mIHRoZSBJQ1UgdmVy c2lvbi4KKyAqLworc3RhdGljIGNoYXIgKgoraWN1X2ZpeF92YXJpYW50cyhjb25zdCBjaGFyICps b2Nfc3RyKQoreworCWNvbnN0IGNoYXIgKm9sZF92YXJpYW50ID0gc3RycmNocihsb2Nfc3RyLCAn QCcpOworCisJLyoKKwkgKiBFeHRyYWN0IGEgdmFyaWFudCBvZiB0aGUgZm9ybSAnLi4uQFZBUklB TlQnLCBhbmQgcmVwbGFjZSB3aXRoCisJICogdGhlIGFwcHJvcHJpYXRlICcuLi5Aa2V5d29yZD12 YWx1ZScgaWYgZm91bmQgaW4gdGhlIG1hcC4KKwkgKi8KKwlpZiAob2xkX3ZhcmlhbnQpCisJewor CQlzaXplX3QgcHJlZml4X2xlbiA9IG9sZF92YXJpYW50IC0gbG9jX3N0cjsgLyogYnl0ZXMgYmVm b3JlIHRoZSAnQCcgKi8KKworCQlmb3IgKGludCBpID0gMDsgaSA8IElDVV9WQVJJQU5UX01BUF9T SVpFOyBpKyspCisJCXsKKwkJCWNvbnN0IGNoYXIgKm1hcF92YXJpYW50ID0gaWN1X3ZhcmlhbnRf bWFwW2ldWzBdOworCQkJY29uc3QgY2hhciAqbWFwX3JlcGxhY2VtZW50ID0gaWN1X3ZhcmlhbnRf bWFwW2ldWzFdOworCisJCQlpZiAocGdfc3RyY2FzZWNtcChvbGRfdmFyaWFudCwgbWFwX3Zhcmlh bnQpID09IDApCisJCQl7CisJCQkJc2l6ZV90CSByZXBsYWNlbWVudF9sZW4gPSBzdHJsZW4obWFw X3JlcGxhY2VtZW50KTsKKwkJCQlzaXplX3QJIHJlc3VsdF9sZW47CisJCQkJY2hhcgkqcmVzdWx0 OworCisJCQkJcmVzdWx0X2xlbiA9IHByZWZpeF9sZW4gKyByZXBsYWNlbWVudF9sZW4gKyAxOwor CQkJCXJlc3VsdCA9IHBnX21hbGxvYyhyZXN1bHRfbGVuKTsKKworCQkJCW1lbWNweShyZXN1bHQs IGxvY19zdHIsIHByZWZpeF9sZW4pOworCQkJCW1lbWNweShyZXN1bHQgKyBwcmVmaXhfbGVuLCBt YXBfcmVwbGFjZW1lbnQsIHJlcGxhY2VtZW50X2xlbik7CisJCQkJcmVzdWx0W3ByZWZpeF9sZW4g KyByZXBsYWNlbWVudF9sZW5dID0gJ1wwJzsKKworCQkJCXJldHVybiByZXN1bHQ7CisJCQl9CisJ CX0KKwl9CisKKwlyZXR1cm4gcGdfc3RyZHVwKGxvY19zdHIpOworfQorCisjZW5kaWYKKwogLyoK ICAqIENvbnZlcnQgdG8gY2Fub25pY2FsIEJDUDQ3IGxhbmd1YWdlIHRhZy4gTXVzdCBiZSBjb25z aXN0ZW50IHdpdGgKICAqIGljdV9sYW5ndWFnZV90YWcoKS4KQEAgLTIyMzgsNiArMjI5Niw3IEBA IGljdV9sYW5ndWFnZV90YWcoY29uc3QgY2hhciAqbG9jX3N0cikKIHsKICNpZmRlZiBVU0VfSUNV CiAJVUVycm9yQ29kZQkgc3RhdHVzOworCWNoYXIJCSpmaXhlZF9sb2Nfc3RyID0gaWN1X2ZpeF92 YXJpYW50cyhsb2Nfc3RyKTsKIAljaGFyCQkqbGFuZ3RhZzsKIAlzaXplX3QJCSBidWZsZW4gPSAz MjsJLyogYXJiaXRyYXJ5IHN0YXJ0aW5nIGJ1ZmZlciBzaXplICovCiAJY29uc3QgYm9vbAkgc3Ry aWN0ID0gdHJ1ZTsKQEAgLTIyNTQsNyArMjMxMyw3IEBAIGljdV9sYW5ndWFnZV90YWcoY29uc3Qg Y2hhciAqbG9jX3N0cikKIAkJaW50MzJfdAkJbGVuOwogCiAJCXN0YXR1cyA9IFVfWkVST19FUlJP UjsKLQkJbGVuID0gdWxvY190b0xhbmd1YWdlVGFnKGxvY19zdHIsIGxhbmd0YWcsIGJ1Zmxlbiwg c3RyaWN0LCAmc3RhdHVzKTsKKwkJbGVuID0gdWxvY190b0xhbmd1YWdlVGFnKGZpeGVkX2xvY19z dHIsIGxhbmd0YWcsIGJ1Zmxlbiwgc3RyaWN0LCAmc3RhdHVzKTsKIAogCQkvKgogCQkgKiBJZiB0 aGUgcmVzdWx0IGZpdHMgaW4gdGhlIGJ1ZmZlciBleGFjdGx5IChsZW4gPT0gYnVmbGVuKSwKQEAg LTIyNzMsNiArMjMzMiw4IEBAIGljdV9sYW5ndWFnZV90YWcoY29uc3QgY2hhciAqbG9jX3N0cikK IAkJYnJlYWs7CiAJfQogCisJcGdfZnJlZShmaXhlZF9sb2Nfc3RyKTsKKwogCWlmIChVX0ZBSUxV UkUoc3RhdHVzKSkKIAl7CiAJCXBnX2ZyZWUobGFuZ3RhZyk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dAppbmRleCA5OWYxMmQyZTczLi5kNTIwNjc0 ZWRmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0 Zjgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5v dXQKQEAgLTEwNDYsNiArMTA0Niw4IEBAIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVy ID0gaWN1LCBsb2NhbGUgPSAnYycpOyAtLSBmYWlscwogRVJST1I6ICBjb3VsZCBub3QgY29udmVy dCBsb2NhbGUgbmFtZSAiYyIgdG8gbGFuZ3VhZ2UgdGFnOiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJS T1IKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQGNv bFN0cmVuZ3RoPXByaW1hcnk7bm9uc2Vuc2U9eWVzJyk7IC0tIGZhaWxzCiBFUlJPUjogIGNvdWxk IG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJAY29sU3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15 ZXMiIHRvIGxhbmd1YWdlIHRhZzogVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SCitDUkVBVEUgQ09M TEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0BBU0RGJyk7IC0tIGZhaWxz CitFUlJPUjogIGNvdWxkIG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJAQVNERiIgdG8gbGFuZ3Vh Z2UgdGFnOiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IKIFNFVCBpY3VfdmFsaWRhdGlvbl9sZXZl bCA9IFdBUk5JTkc7CiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9j YWxlID0gJ0Bjb2xTdHJlbmd0aD1wcmltYXJ5O25vbnNlbnNlPXllcycpOyBEUk9QIENPTExBVElP TiB0ZXN0eDsKIFdBUk5JTkc6ICBjb3VsZCBub3QgY29udmVydCBsb2NhbGUgbmFtZSAiQGNvbFN0 cmVuZ3RoPXByaW1hcnk7bm9uc2Vuc2U9eWVzIiB0byBsYW5ndWFnZSB0YWc6IFVfSUxMRUdBTF9B UkdVTUVOVF9FUlJPUgpAQCAtMTA1Niw3ICsxMDU4LDE2IEBAIEhJTlQ6ICBUbyBkaXNhYmxlIElD VSBsb2NhbGUgdmFsaWRhdGlvbiwgc2V0IHBhcmFtZXRlciBpY3VfdmFsaWRhdGlvbl9sZXZlbCB0 byBECiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25v bnNlbnNlLW5vd2hlcmUnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CiBXQVJOSU5HOiAgSUNVIGxv Y2FsZSAibm9uc2Vuc2Utbm93aGVyZSIgaGFzIHVua25vd24gbGFuZ3VhZ2UgIm5vbnNlbnNlIgog SElOVDogIFRvIGRpc2FibGUgSUNVIGxvY2FsZSB2YWxpZGF0aW9uLCBzZXQgcGFyYW1ldGVyIGlj dV92YWxpZGF0aW9uX2xldmVsIHRvIERJU0FCTEVELgorQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAo cHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAQVNERicpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsK K1dBUk5JTkc6ICBjb3VsZCBub3QgY29udmVydCBsb2NhbGUgbmFtZSAiQEFTREYiIHRvIGxhbmd1 YWdlIHRhZzogVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SCiBSRVNFVCBpY3VfdmFsaWRhdGlvbl9s ZXZlbDsKKy0tIHRlc3Qgc3BlY2lhbCB2YXJpYW50cworQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAo cHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdARVVSTycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsK K05PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZC11LWN1LWV1ciIgZm9yIGxvY2FsZSAi QEVVUk8iCitDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0g J0BwaW55aW4nKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CitOT1RJQ0U6ICB1c2luZyBzdGFuZGFy ZCBmb3JtICJ1bmQtdS1jby1waW55aW4iIGZvciBsb2NhbGUgIkBwaW55aW4iCitDUkVBVEUgQ09M TEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0BzdHJva2UnKTsgRFJPUCBD T0xMQVRJT04gdGVzdHg7CitOT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1jby1z dHJva2UiIGZvciBsb2NhbGUgIkBzdHJva2UiCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3Q0IEZST00g bm9uc2Vuc2U7CiBFUlJPUjogIGNvbGxhdGlvbiAibm9uc2Vuc2UiIGZvciBlbmNvZGluZyAiVVRG OCIgZG9lcyBub3QgZXhpc3QKIENSRUFURSBDT0xMQVRJT04gdGVzdDUgRlJPTSB0ZXN0MDsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwKaW5kZXggZDk3NzhmYWFjYy4u YWI5YTg0ODRiOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3Uu dXRmOC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwK QEAgLTM4MSwxMiArMzgxLDE5IEBAIENSRUFURSBDT0xMQVRJT04gdGVzdDMgKHByb3ZpZGVyID0g aWN1LCBsY19jb2xsYXRlID0gJ2VuX1VTLnV0ZjgnKTsgLS0gZmFpbCwgbmVlCiBDUkVBVEUgQ09M TEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNlbnNlLW5vd2hlcmUn KTsgLS0gZmFpbHMKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2Nh bGUgPSAnYycpOyAtLSBmYWlscwogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBp Y3UsIGxvY2FsZSA9ICdAY29sU3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMnKTsgLS0gZmFp bHMKK0NSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQEFT REYnKTsgLS0gZmFpbHMKIFNFVCBpY3VfdmFsaWRhdGlvbl9sZXZlbCA9IFdBUk5JTkc7CiBDUkVB VEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xTdHJlbmd0 aD1wcmltYXJ5O25vbnNlbnNlPXllcycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKIENSRUFURSBD T0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycpOyBEUk9QIENPTExB VElPTiB0ZXN0eDsKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2Nh bGUgPSAnbm9uc2Vuc2Utbm93aGVyZScpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKK0NSRUFURSBD T0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQEFTREYnKTsgRFJPUCBD T0xMQVRJT04gdGVzdHg7CiBSRVNFVCBpY3VfdmFsaWRhdGlvbl9sZXZlbDsKIAorLS0gdGVzdCBz cGVjaWFsIHZhcmlhbnRzCitDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwg bG9jYWxlID0gJ0BFVVJPJyk7IERST1AgQ09MTEFUSU9OIHRlc3R4OworQ1JFQVRFIENPTExBVElP TiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAcGlueWluJyk7IERST1AgQ09MTEFU SU9OIHRlc3R4OworQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2Fs ZSA9ICdAc3Ryb2tlJyk7IERST1AgQ09MTEFUSU9OIHRlc3R4OworCiBDUkVBVEUgQ09MTEFUSU9O IHRlc3Q0IEZST00gbm9uc2Vuc2U7CiBDUkVBVEUgQ09MTEFUSU9OIHRlc3Q1IEZST00gdGVzdDA7 CiAKLS0gCjIuMzQuMQoK --=-x2ICV1s1QTxvoAek1xDb Content-Disposition: attachment; filename*0=v4-0003-ICU-support-locale-C-with-the-same-behavior-as-li.pat; filename*1=ch Content-Type: text/x-patch; name="v4-0003-ICU-support-locale-C-with-the-same-behavior-as-li.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAwNTU5N2JlYTJmNDhjYjFlZjc4YTc0NTQwMWJjYWJkZDI5MjQ1Yjg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDI0IEFwciAyMDIzIDE1OjQ2OjE3IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2NCAzLzRdIElD VTogc3VwcG9ydCBsb2NhbGUgIkMiIHdpdGggdGhlIHNhbWUgYmVoYXZpb3IgYXMKIGxpYmMuCgpU aGUgIkMiIGxvY2FsZSBkb2Vzbid0IGFjdHVhbGx5IHVzZSBhIHByb3ZpZGVyIGF0IGFsbCwgaXQn cyBhIHNwZWNpYWwKbG9jYWxlIHRoYXQgdXNlcyBtZW1jbXAoKSBhbmQgYnVpbHQtaW4gY2hhcmFj dGVyIGNsYXNzaWZpY2F0aW9uLiBNYWtlCml0IGJlaGF2ZSB0aGUgc2FtZSBpbiBJQ1UgYXMgbGli YyAoZXZlbiB0aG91Z2ggaXQgZG9lc24ndCBhY3R1YWxseQptYWtlIHVzZSBvZiBlaXRoZXIgcHJv dmlkZXIpLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS84N3Y4aG9leGR2LmZzZkBu ZXdzLXNwdXIucmlkZGxlcy5vcmcudWsKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRp b25jbWRzLmMgICAgICAgICAgfCA0MyArKysrKystLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9k YmNvbW1hbmRzLmMgICAgICAgICAgICAgfCA0MiArKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ19sb2NhbGUuYyAgICAgICAgICAgICB8IDg2ICsrKysrKysrKysrKysrLS0tLS0KIC4u Li9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0ICAgICB8IDEyICstLQogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRmOC5zcWwgICAgIHwgIDcgKy0KIDUgZmls ZXMgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbGxhdGlvbmNtZHMuYwppbmRleCBjOTFmZTY2ZDliLi43ZTY5YTg4OWZiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCkBAIC0yNjQsMjYgKzI2NCwzOSBAQCBEZWZp bmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1l dGVycywgYm9vbCBpZl9ub3RfZQogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKIAkJCQkJCSBlcnJtc2coInBhcmFtZXRlciBcImxvY2FsZVwiIG11c3Qg YmUgc3BlY2lmaWVkIikpKTsKIAotCQkJLyoKLQkJCSAqIER1cmluZyBiaW5hcnkgdXBncmFkZSwg cHJlc2VydmUgdGhlIGxvY2FsZSBzdHJpbmcuIE90aGVyd2lzZSwKLQkJCSAqIGNhbm9uaWNhbGl6 ZSB0byBhIGxhbmd1YWdlIHRhZy4KLQkJCSAqLwotCQkJaWYgKCFJc0JpbmFyeVVwZ3JhZGUpCisJ CQlpZiAocGdfc3RyY2FzZWNtcChjb2xsaWN1bG9jYWxlLCAiQyIpID09IDAgfHwKKwkJCQlwZ19z dHJjYXNlY21wKGNvbGxpY3Vsb2NhbGUsICJQT1NJWCIpID09IDApCiAJCQl7Ci0JCQkJY2hhciAq bGFuZ3RhZyA9IGljdV9sYW5ndWFnZV90YWcoY29sbGljdWxvY2FsZSwKLQkJCQkJCQkJCQkJCSBp Y3VfdmFsaWRhdGlvbl9sZXZlbCk7Ci0KLQkJCQlpZiAobGFuZ3RhZyAmJiBzdHJjbXAoY29sbGlj dWxvY2FsZSwgbGFuZ3RhZykgIT0gMCkKKwkJCQlpZiAoIWNvbGxpc2RldGVybWluaXN0aWMpCisJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycm1zZygibm9uZGV0ZXJtaW5pc3RpYyBjb2xs YXRpb25zIG5vdCBzdXBwb3J0ZWQgZm9yIEMgb3IgUE9TSVggbG9jYWxlIikpKTsKKwkJCQlpZiAo Y29sbGljdXJ1bGVzICE9IE5VTEwpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycm1z ZygiUlVMRVMgbm90IHN1cHBvcnRlZCBmb3IgQyBvciBQT1NJWCBsb2NhbGUiKSkpOworCQkJfQor CQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogRHVyaW5nIGJpbmFyeSB1cGdyYWRlLCBwcmVz ZXJ2ZSB0aGUgbG9jYWxlCisJCQkJICogc3RyaW5nLiBPdGhlcndpc2UsIGNhbm9uaWNhbGl6ZSB0 byBhIGxhbmd1YWdlIHRhZy4KKwkJCQkgKi8KKwkJCQlpZiAoIUlzQmluYXJ5VXBncmFkZSkKIAkJ CQl7Ci0JCQkJCWVyZXBvcnQoTk9USUNFLAotCQkJCQkJCShlcnJtc2coInVzaW5nIHN0YW5kYXJk IGZvcm0gXCIlc1wiIGZvciBsb2NhbGUgXCIlc1wiIiwKLQkJCQkJCQkJCWxhbmd0YWcsIGNvbGxp Y3Vsb2NhbGUpKSk7CisJCQkJCWNoYXIgKmxhbmd0YWcgPSBpY3VfbGFuZ3VhZ2VfdGFnKGNvbGxp Y3Vsb2NhbGUsCisJCQkJCQkJCQkJCQkJIGljdV92YWxpZGF0aW9uX2xldmVsKTsKKworCQkJCQlp ZiAobGFuZ3RhZyAmJiBzdHJjbXAoY29sbGljdWxvY2FsZSwgbGFuZ3RhZykgIT0gMCkKKwkJCQkJ eworCQkJCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCQkJCShlcnJtc2coInVzaW5nIHN0YW5kYXJk IGZvcm0gXCIlc1wiIGZvciBsb2NhbGUgXCIlc1wiIiwKKwkJCQkJCQkJCQlsYW5ndGFnLCBjb2xs aWN1bG9jYWxlKSkpOwogCi0JCQkJCWNvbGxpY3Vsb2NhbGUgPSBsYW5ndGFnOworCQkJCQkJY29s bGljdWxvY2FsZSA9IGxhbmd0YWc7CisJCQkJCX0KIAkJCQl9Ci0JCQl9CiAKLQkJCWljdV92YWxp ZGF0ZV9sb2NhbGUoY29sbGljdWxvY2FsZSk7CisJCQkJaWN1X3ZhbGlkYXRlX2xvY2FsZShjb2xs aWN1bG9jYWxlKTsKKwkJCX0KIAkJfQogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9kYmNvbW1hbmRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMK aW5kZXggMmUyNDJlZWZmMi4uOGVmMzM4NzFmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGJjb21tYW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMu YwpAQCAtMTA1OCwyNyArMTA1OCwzNyBAQCBjcmVhdGVkYihQYXJzZVN0YXRlICpwc3RhdGUsIGNv bnN0IENyZWF0ZWRiU3RtdCAqc3RtdCkKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCiAJCQkJCSBlcnJtc2coIklDVSBsb2NhbGUgbXVzdCBiZSBzcGVjaWZp ZWQiKSkpOwogCi0JCS8qCi0JCSAqIER1cmluZyBiaW5hcnkgdXBncmFkZSwgb3Igd2hlbiB0aGUg bG9jYWxlIGNhbWUgZnJvbSB0aGUgdGVtcGxhdGUKLQkJICogZGF0YWJhc2UsIHByZXNlcnZlIGxv Y2FsZSBzdHJpbmcuIE90aGVyd2lzZSwgY2Fub25pY2FsaXplIHRvIGEKLQkJICogbGFuZ3VhZ2Ug dGFnLgotCQkgKi8KLQkJaWYgKCFJc0JpbmFyeVVwZ3JhZGUgJiYgZGJpY3Vsb2NhbGUgIT0gc3Jj X2ljdWxvY2FsZSkKKwkJaWYgKHBnX3N0cmNhc2VjbXAoZGJpY3Vsb2NhbGUsICJDIikgPT0gMCB8 fAorCQkJcGdfc3RyY2FzZWNtcChkYmljdWxvY2FsZSwgIlBPU0lYIikgPT0gMCkKIAkJewotCQkJ Y2hhciAqbGFuZ3RhZyA9IGljdV9sYW5ndWFnZV90YWcoZGJpY3Vsb2NhbGUsCi0JCQkJCQkJCQkJ CSBpY3VfdmFsaWRhdGlvbl9sZXZlbCk7Ci0KLQkJCWlmIChsYW5ndGFnICYmIHN0cmNtcChkYmlj dWxvY2FsZSwgbGFuZ3RhZykgIT0gMCkKKwkJCWlmIChkYmljdXJ1bGVzICE9IE5VTEwpCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJtc2coIklDVV9SVUxFUyBub3Qgc3VwcG9ydGVkIGZv ciBDIG9yIFBPU0lYIGxvY2FsZSIpKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICog RHVyaW5nIGJpbmFyeSB1cGdyYWRlLCBvciB3aGVuIHRoZSBsb2NhbGUgY2FtZSBmcm9tIHRoZQor CQkJICogdGVtcGxhdGUgZGF0YWJhc2UsIHByZXNlcnZlIGxvY2FsZSBzdHJpbmcuIE90aGVyd2lz ZSwKKwkJCSAqIGNhbm9uaWNhbGl6ZSB0byBhIGxhbmd1YWdlIHRhZy4KKwkJCSAqLworCQkJaWYg KCFJc0JpbmFyeVVwZ3JhZGUgJiYgZGJpY3Vsb2NhbGUgIT0gc3JjX2ljdWxvY2FsZSkKIAkJCXsK LQkJCQllcmVwb3J0KE5PVElDRSwKLQkJCQkJCShlcnJtc2coInVzaW5nIHN0YW5kYXJkIGZvcm0g XCIlc1wiIGZvciBsb2NhbGUgXCIlc1wiIiwKLQkJCQkJCQkJbGFuZ3RhZywgZGJpY3Vsb2NhbGUp KSk7CisJCQkJY2hhciAqbGFuZ3RhZyA9IGljdV9sYW5ndWFnZV90YWcoZGJpY3Vsb2NhbGUsCisJ CQkJCQkJCQkJCQkgaWN1X3ZhbGlkYXRpb25fbGV2ZWwpOworCisJCQkJaWYgKGxhbmd0YWcgJiYg c3RyY21wKGRiaWN1bG9jYWxlLCBsYW5ndGFnKSAhPSAwKQorCQkJCXsKKwkJCQkJZXJlcG9ydChO T1RJQ0UsCisJCQkJCQkJKGVycm1zZygidXNpbmcgc3RhbmRhcmQgZm9ybSBcIiVzXCIgZm9yIGxv Y2FsZSBcIiVzXCIiLAorCQkJCQkJCQkJbGFuZ3RhZywgZGJpY3Vsb2NhbGUpKSk7CiAKLQkJCQlk YmljdWxvY2FsZSA9IGxhbmd0YWc7CisJCQkJCWRiaWN1bG9jYWxlID0gbGFuZ3RhZzsKKwkJCQl9 CiAJCQl9Ci0JCX0KIAotCQlpY3VfdmFsaWRhdGVfbG9jYWxlKGRiaWN1bG9jYWxlKTsKKwkJCWlj dV92YWxpZGF0ZV9sb2NhbGUoZGJpY3Vsb2NhbGUpOworCQl9CiAJfQogCWVsc2UKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggMGU3MzQzYjI4Yi4uNzZjYTQyNDQxZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGUuYwpAQCAtMTI0Niw4ICsxMjQ2LDE1IEBAIGxvb2t1cF9jb2xs YXRpb25fY2FjaGUoT2lkIGNvbGxhdGlvbiwgYm9vbCBzZXRfZmxhZ3MpCiAJCX0KIAkJZWxzZQog CQl7Ci0JCQljYWNoZV9lbnRyeS0+Y29sbGF0ZV9pc19jID0gZmFsc2U7Ci0JCQljYWNoZV9lbnRy eS0+Y3R5cGVfaXNfYyA9IGZhbHNlOworCQkJRGF0dW0JCWRhdHVtOworCQkJY29uc3QgY2hhciAq Y29sbGljdWxvY2FsZTsKKworCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTExP SUQsIHRwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsaWN1bG9jYWxlKTsKKwkJCWNvbGxpY3Vsb2Nh bGUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKworCQkJY2FjaGVfZW50cnktPmNvbGxh dGVfaXNfYyA9ICgoc3RyY21wKGNvbGxpY3Vsb2NhbGUsICJDIikgPT0gMCkgfHwKKwkJCQkJCQkJ CQkgKHN0cmNtcChjb2xsaWN1bG9jYWxlLCAiUE9TSVgiKSA9PSAwKSk7CisJCQljYWNoZV9lbnRy eS0+Y3R5cGVfaXNfYyA9IGNhY2hlX2VudHJ5LT5jb2xsYXRlX2lzX2M7CiAJCX0KIAogCQljYWNo ZV9lbnRyeS0+ZmxhZ3NfdmFsaWQgPSB0cnVlOwpAQCAtMTI3OSwxNiArMTI4NiwyNyBAQCBsY19j b2xsYXRlX2lzX2MoT2lkIGNvbGxhdGlvbikKIAlpZiAoY29sbGF0aW9uID09IERFRkFVTFRfQ09M TEFUSU9OX09JRCkKIAl7CiAJCXN0YXRpYyBpbnQJcmVzdWx0ID0gLTE7Ci0JCWNoYXIJICAgKmxv Y2FsZXB0cjsKLQotCQlpZiAoZGVmYXVsdF9sb2NhbGUucHJvdmlkZXIgPT0gQ09MTFBST1ZJREVS X0lDVSkKLQkJCXJldHVybiBmYWxzZTsKKwkJY29uc3QgY2hhciAqbG9jYWxlcHRyOwogCiAJCWlm IChyZXN1bHQgPj0gMCkKIAkJCXJldHVybiAoYm9vbCkgcmVzdWx0OwotCQlsb2NhbGVwdHIgPSBz ZXRsb2NhbGUoTENfQ09MTEFURSwgTlVMTCk7Ci0JCWlmICghbG9jYWxlcHRyKQotCQkJZWxvZyhF UlJPUiwgImludmFsaWQgTENfQ09MTEFURSBzZXR0aW5nIik7CisKKwkJaWYgKGRlZmF1bHRfbG9j YWxlLnByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1UpCisJCXsKKyNpZmRlZiBVU0VfSUNVCisJ CQlsb2NhbGVwdHIgPSBkZWZhdWx0X2xvY2FsZS5pbmZvLmljdS5sb2NhbGU7CisjZWxzZQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQkgZXJybXNnKCJJQ1UgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIikp KTsKKyNlbmRpZgorCQl9CisJCWVsc2UKKwkJeworCQkJbG9jYWxlcHRyID0gc2V0bG9jYWxlKExD X0NPTExBVEUsIE5VTEwpOworCQkJaWYgKCFsb2NhbGVwdHIpCisJCQkJZWxvZyhFUlJPUiwgImlu dmFsaWQgTENfQ09MTEFURSBzZXR0aW5nIik7CisJCX0KIAogCQlpZiAoc3RyY21wKGxvY2FsZXB0 ciwgIkMiKSA9PSAwKQogCQkJcmVzdWx0ID0gdHJ1ZTsKQEAgLTEzMzIsMTYgKzEzNTAsMjcgQEAg bGNfY3R5cGVfaXNfYyhPaWQgY29sbGF0aW9uKQogCWlmIChjb2xsYXRpb24gPT0gREVGQVVMVF9D T0xMQVRJT05fT0lEKQogCXsKIAkJc3RhdGljIGludAlyZXN1bHQgPSAtMTsKLQkJY2hhcgkgICAq bG9jYWxlcHRyOwotCi0JCWlmIChkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9PSBDT0xMUFJPVklE RVJfSUNVKQotCQkJcmV0dXJuIGZhbHNlOworCQljb25zdCBjaGFyICpsb2NhbGVwdHI7CiAKIAkJ aWYgKHJlc3VsdCA+PSAwKQogCQkJcmV0dXJuIChib29sKSByZXN1bHQ7Ci0JCWxvY2FsZXB0ciA9 IHNldGxvY2FsZShMQ19DVFlQRSwgTlVMTCk7Ci0JCWlmICghbG9jYWxlcHRyKQotCQkJZWxvZyhF UlJPUiwgImludmFsaWQgTENfQ1RZUEUgc2V0dGluZyIpOworCisJCWlmIChkZWZhdWx0X2xvY2Fs ZS5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQl7CisjaWZkZWYgVVNFX0lDVQorCQkJ bG9jYWxlcHRyID0gZGVmYXVsdF9sb2NhbGUuaW5mby5pY3UubG9jYWxlOworI2Vsc2UKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkJIGVycm1zZygiSUNVIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCIpKSk7 CisjZW5kaWYKKwkJfQorCQllbHNlCisJCXsKKwkJCWxvY2FsZXB0ciA9IHNldGxvY2FsZShMQ19D VFlQRSwgTlVMTCk7CisJCQlpZiAoIWxvY2FsZXB0cikKKwkJCQllbG9nKEVSUk9SLCAiaW52YWxp ZCBMQ19DVFlQRSBzZXR0aW5nIik7CisJCX0KIAogCQlpZiAoc3RyY21wKGxvY2FsZXB0ciwgIkMi KSA9PSAwKQogCQkJcmVzdWx0ID0gdHJ1ZTsKQEAgLTEzNzUsNyArMTQwNCwxNCBAQCBtYWtlX2lj dV9jb2xsYXRvcihjb25zdCBjaGFyICppY3Vsb2NzdHIsCiAjaWZkZWYgVVNFX0lDVQogCVVDb2xs YXRvciAgKmNvbGxhdG9yOwogCi0JY29sbGF0b3IgPSBwZ191Y29sX29wZW4oaWN1bG9jc3RyKTsK KwlpZiAocGdfc3RyY2FzZWNtcChpY3Vsb2NzdHIsICJDIikgPT0gMCB8fAorCQlwZ19zdHJjYXNl Y21wKGljdWxvY3N0ciwgIlBPU0lYIikgPT0gMCkKKwl7CisJCUFzc2VydChpY3VydWxlcyA9PSBO VUxMKTsKKwkJY29sbGF0b3IgPSBOVUxMOworCX0KKwllbHNlCisJCWNvbGxhdG9yID0gcGdfdWNv bF9vcGVuKGljdWxvY3N0cik7CiAKIAkvKgogCSAqIElmIHJ1bGVzIGFyZSBzcGVjaWZpZWQsIHdl IGV4dHJhY3QgdGhlIHJ1bGVzIG9mIHRoZSBzdGFuZGFyZCBjb2xsYXRpb24sCkBAIC0xNjUwLDYg KzE2ODYsMTAgQEAgZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjaGFyIGNvbGxwcm92aWRl ciwgY29uc3QgY2hhciAqY29sbGNvbGxhdGUpCiB7CiAJY2hhcgkgICAqY29sbHZlcnNpb24gPSBO VUxMOwogCisJaWYgKHBnX3N0cmNhc2VjbXAoIkMiLCBjb2xsY29sbGF0ZSkgPT0gMCB8fAorCQlw Z19zdHJjYXNlY21wKCJQT1NJWCIsIGNvbGxjb2xsYXRlKSA9PSAwKQorCQlyZXR1cm4gTlVMTDsK KwogI2lmZGVmIFVTRV9JQ1UKIAlpZiAoY29sbHByb3ZpZGVyID09IENPTExQUk9WSURFUl9JQ1Up CiAJewpAQCAtMTY2OCw5ICsxNzA4LDcgQEAgZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihj aGFyIGNvbGxwcm92aWRlciwgY29uc3QgY2hhciAqY29sbGNvbGxhdGUpCiAJZWxzZQogI2VuZGlm CiAJCWlmIChjb2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMgJiYKLQkJCXBnX3N0cmNh c2VjbXAoIkMiLCBjb2xsY29sbGF0ZSkgIT0gMCAmJgotCQkJcGdfc3RybmNhc2VjbXAoIkMuIiwg Y29sbGNvbGxhdGUsIDIpICE9IDAgJiYKLQkJCXBnX3N0cmNhc2VjbXAoIlBPU0lYIiwgY29sbGNv bGxhdGUpICE9IDApCisJCQlwZ19zdHJuY2FzZWNtcCgiQy4iLCBjb2xsY29sbGF0ZSwgMikgIT0g MCkKIAl7CiAjaWYgZGVmaW5lZChfX0dMSUJDX18pCiAJCS8qIFVzZSB0aGUgZ2xpYmMgdmVyc2lv biBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYW55dGhpbmcgYmV0dGVyLiAqLwpAQCAtMjQ1Nyw2ICsy NDk1LDE0IEBAIHBnX3Vjb2xfb3Blbihjb25zdCBjaGFyICpsb2Nfc3RyKQogCWlmIChsb2Nfc3Ry ID09IE5VTEwpCiAJCWVsb2coRVJST1IsICJvcGVuaW5nIGRlZmF1bHQgY29sbGF0b3IgaXMgbm90 IHN1cHBvcnRlZCIpOwogCisJLyoKKwkgKiBNdXN0IG5ldmVyIG9wZW4gc3BlY2lhbCB2YWx1ZXMg QyBvciBQT1NJWCwgd2hpY2ggYXJlIHRyZWF0ZWQgc3BlY2lhbGx5CisJICogYW5kIG5vdCBwYXNz ZWQgdG8gdGhlIHByb3ZpZGVyLgorCSAqLworCWlmIChwZ19zdHJjYXNlY21wKGxvY19zdHIsICJD IikgPT0gMCB8fAorCQlwZ19zdHJjYXNlY21wKGxvY19zdHIsICJQT1NJWCIpID09IDApCisJCWVs b2coRVJST1IsICJ1bmV4cGVjdGVkIElDVSBsb2NhbGUgc3RyaW5nOiAlcyIsIGxvY19zdHIpOwor CiAJLyoKIAkgKiBJbiBJQ1UgdmVyc2lvbnMgNTQgYW5kIGVhcmxpZXIsICJ1bmQiIGlzIG5vdCBh IHJlY29nbml6ZWQgc3BlbGxpbmcgb2YKIAkgKiB0aGUgcm9vdCBsb2NhbGUuIElmIHRoZSBmaXJz dCBjb21wb25lbnQgb2YgdGhlIGxvY2FsZSBpcyAidW5kIiwgcmVwbGFjZQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKaW5kZXggZDUyMDY3NGVkZi4u ZjIxNzY1ODE1MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRl LmljdS51dGY4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1 LnV0Zjgub3V0CkBAIC0xMDQyLDggKzEwNDIsMTAgQEAgRVJST1I6ICBwYXJhbWV0ZXIgImxvY2Fs ZSIgbXVzdCBiZSBzcGVjaWZpZWQKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0g aWN1LCBsb2NhbGUgPSAnbm9uc2Vuc2Utbm93aGVyZScpOyAtLSBmYWlscwogRVJST1I6ICBJQ1Ug bG9jYWxlICJub25zZW5zZS1ub3doZXJlIiBoYXMgdW5rbm93biBsYW5ndWFnZSAibm9uc2Vuc2Ui CiBISU5UOiAgVG8gZGlzYWJsZSBJQ1UgbG9jYWxlIHZhbGlkYXRpb24sIHNldCBwYXJhbWV0ZXIg aWN1X3ZhbGlkYXRpb25fbGV2ZWwgdG8gRElTQUJMRUQuCi1DUkVBVEUgQ09MTEFUSU9OIHRlc3R4 IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ2MnKTsgLS0gZmFpbHMKLUVSUk9SOiAgY291bGQg bm90IGNvbnZlcnQgbG9jYWxlIG5hbWUgImMiIHRvIGxhbmd1YWdlIHRhZzogVV9JTExFR0FMX0FS R1VNRU5UX0VSUk9SCitDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9j YWxlID0gJ2MnLCBkZXRlcm1pbmlzdGljID0gZmFsc2UpOyAtLSBmYWlscworRVJST1I6ICBub25k ZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMgbm90IHN1cHBvcnRlZCBmb3IgQyBvciBQT1NJWCBsb2Nh bGUKK0NSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycs IHJ1bGVzID0gJyZWIDw8IHcgPDw8IFcnKTsgLS0gZmFpbHMKK0VSUk9SOiAgUlVMRVMgbm90IHN1 cHBvcnRlZCBmb3IgQyBvciBQT1NJWCBsb2NhbGUKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHBy b3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQGNvbFN0cmVuZ3RoPXByaW1hcnk7bm9uc2Vuc2U9eWVz Jyk7IC0tIGZhaWxzCiBFUlJPUjogIGNvdWxkIG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1lICJAY29s U3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMiIHRvIGxhbmd1YWdlIHRhZzogVV9JTExFR0FM X0FSR1VNRU5UX0VSUk9SCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwg bG9jYWxlID0gJ0BBU0RGJyk7IC0tIGZhaWxzCkBAIC0xMDUxLDE2ICsxMDUzLDE0IEBAIEVSUk9S OiAgY291bGQgbm90IGNvbnZlcnQgbG9jYWxlIG5hbWUgIkBBU0RGIiB0byBsYW5ndWFnZSB0YWc6 IFVfSUxMRUdBTF9BUkdVTUVOCiBTRVQgaWN1X3ZhbGlkYXRpb25fbGV2ZWwgPSBXQVJOSU5HOwog Q1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3Ry ZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CiBXQVJO SU5HOiAgY291bGQgbm90IGNvbnZlcnQgbG9jYWxlIG5hbWUgIkBjb2xTdHJlbmd0aD1wcmltYXJ5 O25vbnNlbnNlPXllcyIgdG8gbGFuZ3VhZ2UgdGFnOiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IK LUNSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycpOyBE Uk9QIENPTExBVElPTiB0ZXN0eDsKLVdBUk5JTkc6ICBjb3VsZCBub3QgY29udmVydCBsb2NhbGUg bmFtZSAiYyIgdG8gbGFuZ3VhZ2UgdGFnOiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IKLVdBUk5J Tkc6ICBJQ1UgbG9jYWxlICJjIiBoYXMgdW5rbm93biBsYW5ndWFnZSAiYyIKLUhJTlQ6ICBUbyBk aXNhYmxlIElDVSBsb2NhbGUgdmFsaWRhdGlvbiwgc2V0IHBhcmFtZXRlciBpY3VfdmFsaWRhdGlv bl9sZXZlbCB0byBESVNBQkxFRC4KIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0g aWN1LCBsb2NhbGUgPSAnbm9uc2Vuc2Utbm93aGVyZScpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsK IFdBUk5JTkc6ICBJQ1UgbG9jYWxlICJub25zZW5zZS1ub3doZXJlIiBoYXMgdW5rbm93biBsYW5n dWFnZSAibm9uc2Vuc2UiCiBISU5UOiAgVG8gZGlzYWJsZSBJQ1UgbG9jYWxlIHZhbGlkYXRpb24s IHNldCBwYXJhbWV0ZXIgaWN1X3ZhbGlkYXRpb25fbGV2ZWwgdG8gRElTQUJMRUQuCiBDUkVBVEUg Q09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0BBU0RGJyk7IERST1Ag Q09MTEFUSU9OIHRlc3R4OwogV0FSTklORzogIGNvdWxkIG5vdCBjb252ZXJ0IGxvY2FsZSBuYW1l ICJAQVNERiIgdG8gbGFuZ3VhZ2UgdGFnOiBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IKIFJFU0VU IGljdV92YWxpZGF0aW9uX2xldmVsOworQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIg PSBpY3UsIGxvY2FsZSA9ICdjJyk7IERST1AgQ09MTEFUSU9OIHRlc3R4OworQ1JFQVRFIENPTExB VElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdwb3NpeCcpOyBEUk9QIENPTExB VElPTiB0ZXN0eDsKIC0tIHRlc3Qgc3BlY2lhbCB2YXJpYW50cwogQ1JFQVRFIENPTExBVElPTiB0 ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdARVVSTycpOyBEUk9QIENPTExBVElPTiB0 ZXN0eDsKIE5PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZC11LWN1LWV1ciIgZm9yIGxv Y2FsZSAiQEVVUk8iCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmlj dS51dGY4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCmlu ZGV4IGFiOWE4NDg0YjkuLmU0YmJkMmMwMDkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbGxh dGUuaWN1LnV0Zjguc3FsCkBAIC0zNzksMTYgKzM3OSwxOSBAQCBSRVNFVCBjbGllbnRfbWluX21l c3NhZ2VzOwogCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3QzIChwcm92aWRlciA9IGljdSwgbGNfY29s bGF0ZSA9ICdlbl9VUy51dGY4Jyk7IC0tIGZhaWwsIG5lZWRzICJsb2NhbGUiCiBDUkVBVEUgQ09M TEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ25vbnNlbnNlLW5vd2hlcmUn KTsgLS0gZmFpbHMKLUNSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2Nh bGUgPSAnYycpOyAtLSBmYWlscworQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBp Y3UsIGxvY2FsZSA9ICdjJywgZGV0ZXJtaW5pc3RpYyA9IGZhbHNlKTsgLS0gZmFpbHMKK0NSRUFU RSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycsIHJ1bGVzID0g JyZWIDw8IHcgPDw8IFcnKTsgLS0gZmFpbHMKIENSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3Zp ZGVyID0gaWN1LCBsb2NhbGUgPSAnQGNvbFN0cmVuZ3RoPXByaW1hcnk7bm9uc2Vuc2U9eWVzJyk7 IC0tIGZhaWxzCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxl ID0gJ0BBU0RGJyk7IC0tIGZhaWxzCiBTRVQgaWN1X3ZhbGlkYXRpb25fbGV2ZWwgPSBXQVJOSU5H OwogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29s U3RyZW5ndGg9cHJpbWFyeTtub25zZW5zZT15ZXMnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7Ci1D UkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ2MnKTsgRFJP UCBDT0xMQVRJT04gdGVzdHg7CiBDUkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGlj dSwgbG9jYWxlID0gJ25vbnNlbnNlLW5vd2hlcmUnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CiBD UkVBVEUgQ09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0BBU0RGJyk7 IERST1AgQ09MTEFUSU9OIHRlc3R4OwogUkVTRVQgaWN1X3ZhbGlkYXRpb25fbGV2ZWw7CiAKK0NS RUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnYycpOyBEUk9Q IENPTExBVElPTiB0ZXN0eDsKK0NSRUFURSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1 LCBsb2NhbGUgPSAncG9zaXgnKTsgRFJPUCBDT0xMQVRJT04gdGVzdHg7CisKIC0tIHRlc3Qgc3Bl Y2lhbCB2YXJpYW50cwogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxv Y2FsZSA9ICdARVVSTycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKIENSRUFURSBDT0xMQVRJT04g dGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQHBpbnlpbicpOyBEUk9QIENPTExBVElP TiB0ZXN0eDsKLS0gCjIuMzQuMQoK --=-x2ICV1s1QTxvoAek1xDb Content-Disposition: attachment; filename*0=v4-0004-Make-LOCALE-apply-to-ICU_LOCALE-for-CREATE-DATABA.pat; filename*1=ch Content-Type: text/x-patch; name="v4-0004-Make-LOCALE-apply-to-ICU_LOCALE-for-CREATE-DATABA.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAzMTBiZGNkMTM2ZTQ0YmZjYTFlZWE0ZGE1MTgxODg2ZWFjMDJkNTJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDI1IEFwciAyMDIzIDE1OjAxOjU1IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2NCA0LzRdIE1h a2UgTE9DQUxFIGFwcGx5IHRvIElDVV9MT0NBTEUgZm9yIENSRUFURSBEQVRBQkFTRS4KCkxPQ0FM RSBpcyBub3cgYW4gYWxpYXMgZm9yIExDX0NPTExBVEUsIExDX0NUWVBFLCBhbmQgKGlmIHRoZSBw cm92aWRlcgppcyBJQ1UpIElDVV9MT0NBTEUuIFRoZSBJQ1UgcHJvdmlkZXIgYWNjZXB0cyBtb3Jl IGxvY2FsZSBuYW1lcyB0aGFuCmxpYmMgKGUuZy4gbGFuZ3VhZ2UgdGFncyBhbmQgbG9jYWxlIG5h bWVzIGNvbnRhaW5pbmcgY29sbGF0aW9uCmF0dHJpYnV0ZXMpLCBzbyBpbiBzb21lIGNhc2VzIExD X0NPTExBVEUsIExDX0NUWVBFLCBhbmQgSUNVX0xPQ0FMRQp3aWxsIHN0aWxsIG5lZWQgdG8gYmUg c3BlY2lmaWVkIHNlcGFyYXRlbHkuCgpQcmV2aW91c2x5LCBMT0NBTEUgYXBwbGllZCBvbmx5IHRv IExDX0NPTExBVEUgYW5kIExDX0NUWVBFIChhbmQKc2ltaWxhcmx5IGZvciAtLWxvY2FsZSBpbiBp bml0ZGIgYW5kIGNyZWF0ZWRiKS4gVGhhdCBjb3VsZCBsZWFkIHRvCmNvbmZ1c2lvbiB3aGVuIHRo ZSBwcm92aWRlciBpcyBpbXBsaWNpdCwgc3VjaCBhcyB3aGVuIGl0IGlzIGluaGVyaXRlZApmcm9t IHRoZSB0ZW1wbGF0ZSBkYXRhYmFzZSwgb3Igd2hlbiBJQ1Ugd2FzIG1hZGUgZGVmYXVsdCBhdCBp bml0ZGIKdGltZSBpbiBjb21taXQgMjdiNjIzNzdiNC4KClJldmVydHMgaW5jb21wbGV0ZSBmaXgg NWNkMWE1YWY0ZC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMzM5MTkzMi4xNjgy MTA3MjA5QHNzcy5wZ2gucGEudXMKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9kYXRhYmFz ZS5zZ21sICAgICAgICAgfCAgNiArKy0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZWRiLnNnbWwg ICAgICAgICAgICAgICAgfCAgNSArKy0KIGRvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwgICAg ICAgICAgICAgICAgICB8ICA3ICsrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25j bWRzLmMgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5j ICAgICAgICAgICAgIHwgMTUgKysrKysrLS0tCiBzcmMvYmluL2luaXRkYi9pbml0ZGIuYyAgICAg ICAgICAgICAgICAgICAgICAgfCAzMSArKysrKysrKysrKystLS0tLS0tCiBzcmMvYmluL3Njcmlw dHMvY3JlYXRlZGIuYyAgICAgICAgICAgICAgICAgICAgfCAxMyArKystLS0tLQogc3JjL2Jpbi9z Y3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsICAgICAgICAgICAgIHwgIDQgKy0tCiBzcmMvdGVzdC9p Y3UvdC8wMTBfZGF0YWJhc2UucGwgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKystLS0tLQog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQgICAgIHwgMjggKysrKysr KystLS0tLS0tLS0KIDEwIGZpbGVzIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKyksIDU0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2RhdGFiYXNlLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9kYXRhYmFzZS5zZ21sCmluZGV4IDEzNzkzYmI2 YjcuLjg0NDc3M2ZmNDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2RhdGFi YXNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZGF0YWJhc2Uuc2dtbApAQCAt MTQ1LDggKzE0NSwxMCBAQCBDUkVBVEUgREFUQUJBU0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmxvY2FsZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgICAgPGxpc3RpdGVt PgogICAgICAgIDxwYXJhPgotICAgICAgICBUaGlzIGlzIGEgc2hvcnRjdXQgZm9yIHNldHRpbmcg PHN5bWJvbD5MQ19DT0xMQVRFPC9zeW1ib2w+Ci0gICAgICAgIGFuZCA8c3ltYm9sPkxDX0NUWVBF PC9zeW1ib2w+IGF0IG9uY2UuCisgICAgICAgIFRoaXMgaXMgYSBzaG9ydGN1dCBmb3Igc2V0dGlu ZyA8c3ltYm9sPkxDX0NPTExBVEU8L3N5bWJvbD4sCisgICAgICAgIDxzeW1ib2w+TENfQ1RZUEU8 L3N5bWJvbD4gYW5kIDxzeW1ib2w+SUNVX0xPQ0FMRTwvc3ltYm9sPiBhdAorICAgICAgICBvbmNl LiBTb21lIGxvY2FsZXMgYXJlIG9ubHkgdmFsaWQgZm9yIElDVSwgYW5kIG11c3QgYmUgc2V0IHNl cGFyYXRlbHkKKyAgICAgICAgd2l0aCA8c3ltYm9sPklDVV9MT0NBTEU8L3N5bWJvbD4uCiAgICAg ICAgPC9wYXJhPgogICAgICAgIDx0aXA+CiAgICAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVkYi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVkYi5z Z21sCmluZGV4IGUyMzQxOWJhNmMuLmU0NjQ3ZDVjZTcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlZGIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZWRiLnNnbWwK QEAgLTEyNCw3ICsxMjQsMTAgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICA8bGlz dGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFNwZWNpZmllcyB0aGUgbG9jYWxlIHRvIGJl IHVzZWQgaW4gdGhpcyBkYXRhYmFzZS4gIFRoaXMgaXMgZXF1aXZhbGVudAotICAgICAgICB0byBz cGVjaWZ5aW5nIGJvdGggPG9wdGlvbj4tLWxjLWNvbGxhdGU8L29wdGlvbj4gYW5kIDxvcHRpb24+ LS1sYy1jdHlwZTwvb3B0aW9uPi4KKyAgICAgICAgdG8gc3BlY2lmeWluZyA8b3B0aW9uPi0tbGMt Y29sbGF0ZTwvb3B0aW9uPiwKKyAgICAgICAgPG9wdGlvbj4tLWxjLWN0eXBlPC9vcHRpb24+LCBh bmQgPG9wdGlvbj4tLWljdS1sb2NhbGU8L29wdGlvbj4gdG8gdGhlCisgICAgICAgIHNhbWUgdmFs dWUuIFNvbWUgbG9jYWxlcyBhcmUgb25seSB2YWxpZCBmb3IgSUNVIGFuZCBtdXN0IGJlIHNldCB3 aXRoCisgICAgICAgIDxvcHRpb24+LS1pY3UtbG9jYWxlPC9vcHRpb24+LgogICAgICAgIDwvcGFy YT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNn bWwKaW5kZXggODc5NDViNGI2Mi4uZjg1MGRjNDA0ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9pbml0ZGIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2luaXRkYi5zZ21sCkBAIC0x MTYsOSArMTE2LDEwIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICA8cGFyYT4KICAgIFRv IGNob29zZSBhIGRpZmZlcmVudCBsb2NhbGUgZm9yIHRoZSBjbHVzdGVyLCB1c2UgdGhlIG9wdGlv bgogICAgPG9wdGlvbj4tLWxvY2FsZTwvb3B0aW9uPi4gIFRoZXJlIGFyZSBhbHNvIGluZGl2aWR1 YWwgb3B0aW9ucwotICAgPG9wdGlvbj4tLWxjLSo8L29wdGlvbj4gKHNlZSBiZWxvdykgdG8gc2V0 IHZhbHVlcyBmb3IgdGhlIGluZGl2aWR1YWwgbG9jYWxlCi0gICBjYXRlZ29yaWVzLiAgTm90ZSB0 aGF0IGluY29uc2lzdGVudCBzZXR0aW5ncyBmb3IgZGlmZmVyZW50IGxvY2FsZQotICAgY2F0ZWdv cmllcyBjYW4gZ2l2ZSBub25zZW5zaWNhbCByZXN1bHRzLCBzbyB0aGlzIHNob3VsZCBiZSB1c2Vk IHdpdGggY2FyZS4KKyAgIDxvcHRpb24+LS1sYy0qPC9vcHRpb24+IGFuZCA8b3B0aW9uPi0taWN1 LWxvY2FsZTwvb3B0aW9uPiAoc2VlIGJlbG93KSB0bworICAgc2V0IHZhbHVlcyBmb3IgdGhlIGlu ZGl2aWR1YWwgbG9jYWxlIGNhdGVnb3JpZXMuICBOb3RlIHRoYXQgaW5jb25zaXN0ZW50CisgICBz ZXR0aW5ncyBmb3IgZGlmZmVyZW50IGxvY2FsZSBjYXRlZ29yaWVzIGNhbiBnaXZlIG5vbnNlbnNp Y2FsIHJlc3VsdHMsIHNvCisgICB0aGlzIHNob3VsZCBiZSB1c2VkIHdpdGggY2FyZS4KICAgPC9w YXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0 aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCmluZGV4IDdl NjlhODg5ZmIuLmU0ODFmMjBkYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv bGxhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMK QEAgLTI4OCw3ICsyODgsNyBAQCBEZWZpbmVDb2xsYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBM aXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywgYm9vbCBpZl9ub3RfZQogCQkJCQlpZiAobGFu Z3RhZyAmJiBzdHJjbXAoY29sbGljdWxvY2FsZSwgbGFuZ3RhZykgIT0gMCkKIAkJCQkJewogCQkJ CQkJZXJlcG9ydChOT1RJQ0UsCi0JCQkJCQkJCShlcnJtc2coInVzaW5nIHN0YW5kYXJkIGZvcm0g XCIlc1wiIGZvciBsb2NhbGUgXCIlc1wiIiwKKwkJCQkJCQkJKGVycm1zZygidXNpbmcgc3RhbmRh cmQgZm9ybSBcIiVzXCIgZm9yIElDVSBsb2NhbGUgXCIlc1wiIiwKIAkJCQkJCQkJCQlsYW5ndGFn LCBjb2xsaWN1bG9jYWxlKSkpOwogCiAJCQkJCQljb2xsaWN1bG9jYWxlID0gbGFuZ3RhZzsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2RiY29tbWFuZHMuYwppbmRleCA4ZWYzMzg3MWYwLi5iNDQ3ZGM1NWYzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZGJjb21tYW5kcy5jCkBAIC0xMDE3LDcgKzEwMTcsMTIgQEAgY3JlYXRlZGIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0bXQpCiAJaWYgKGRibG9j cHJvdmlkZXIgPT0gJ1wwJykKIAkJZGJsb2Nwcm92aWRlciA9IHNyY19sb2Nwcm92aWRlcjsKIAlp ZiAoZGJpY3Vsb2NhbGUgPT0gTlVMTCAmJiBkYmxvY3Byb3ZpZGVyID09IENPTExQUk9WSURFUl9J Q1UpCi0JCWRiaWN1bG9jYWxlID0gc3JjX2ljdWxvY2FsZTsKKwl7CisJCWlmIChkbG9jYWxlICYm IGRsb2NhbGUtPmFyZykKKwkJCWRiaWN1bG9jYWxlID0gZGVmR2V0U3RyaW5nKGRsb2NhbGUpOwor CQllbHNlCisJCQlkYmljdWxvY2FsZSA9IHNyY19pY3Vsb2NhbGU7CisJfQogCWlmIChkYmljdXJ1 bGVzID09IE5VTEwgJiYgZGJsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQogCQlkYmlj dXJ1bGVzID0gc3JjX2ljdXJ1bGVzOwogCkBAIC0xMDMxLDEyICsxMDM2LDE0IEBAIGNyZWF0ZWRi KFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgQ3JlYXRlZGJTdG10ICpzdG10KQogCWlmICghY2hl Y2tfbG9jYWxlKExDX0NPTExBVEUsIGRiY29sbGF0ZSwgJmNhbm9ubmFtZSkpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCi0JCQkJIGVy cm1zZygiaW52YWxpZCBsb2NhbGUgbmFtZTogXCIlc1wiIiwgZGJjb2xsYXRlKSkpOworCQkJCSBl cnJtc2coImludmFsaWQgTENfQ09MTEFURSBsb2NhbGUgbmFtZTogXCIlc1wiIiwgZGJjb2xsYXRl KSwKKwkJCQkgZXJyaGludCgiSWYgdGhlIGxvY2FsZSBuYW1lIGlzIHNwZWNpZmljIHRvIElDVSwg dXNlIElDVV9MT0NBTEUuIikpKTsKIAlkYmNvbGxhdGUgPSBjYW5vbm5hbWU7CiAJaWYgKCFjaGVj a19sb2NhbGUoTENfQ1RZUEUsIGRiY3R5cGUsICZjYW5vbm5hbWUpKQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAotCQkJCSBlcnJtc2co ImludmFsaWQgbG9jYWxlIG5hbWU6IFwiJXNcIiIsIGRiY3R5cGUpKSk7CisJCQkJIGVycm1zZygi aW52YWxpZCBMQ19DVFlQRSBsb2NhbGUgbmFtZTogXCIlc1wiIiwgZGJjdHlwZSksCisJCQkJIGVy cmhpbnQoIklmIHRoZSBsb2NhbGUgbmFtZSBpcyBzcGVjaWZpYyB0byBJQ1UsIHVzZSBJQ1VfTE9D QUxFLiIpKSk7CiAJZGJjdHlwZSA9IGNhbm9ubmFtZTsKIAogCWNoZWNrX2VuY29kaW5nX2xvY2Fs ZV9tYXRjaGVzKGVuY29kaW5nLCBkYmNvbGxhdGUsIGRiY3R5cGUpOwpAQCAtMTA4MCw3ICsxMDg3 LDcgQEAgY3JlYXRlZGIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVkYlN0bXQgKnN0 bXQpCiAJCQkJaWYgKGxhbmd0YWcgJiYgc3RyY21wKGRiaWN1bG9jYWxlLCBsYW5ndGFnKSAhPSAw KQogCQkJCXsKIAkJCQkJZXJlcG9ydChOT1RJQ0UsCi0JCQkJCQkJKGVycm1zZygidXNpbmcgc3Rh bmRhcmQgZm9ybSBcIiVzXCIgZm9yIGxvY2FsZSBcIiVzXCIiLAorCQkJCQkJCShlcnJtc2coInVz aW5nIHN0YW5kYXJkIGZvcm0gXCIlc1wiIGZvciBJQ1UgbG9jYWxlIFwiJXNcIiIsCiAJCQkJCQkJ CQlsYW5ndGFnLCBkYmljdWxvY2FsZSkpKTsKIAogCQkJCQlkYmljdWxvY2FsZSA9IGxhbmd0YWc7 CmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYyBiL3NyYy9iaW4vaW5pdGRiL2lu aXRkYi5jCmluZGV4IDYwMGM4ZDkzZjMuLjdlMzE2YzhiYTkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v aW5pdGRiL2luaXRkYi5jCisrKyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCkBAIC0yMTU3LDcg KzIxNTcsMTEgQEAgY2hlY2tfbG9jYWxlX25hbWUoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICps b2NhbGUsIGNoYXIgKipjYW5vbm5hbWUpCiAJaWYgKHJlcyA9PSBOVUxMKQogCXsKIAkJaWYgKCps b2NhbGUpCi0JCQlwZ19mYXRhbCgiaW52YWxpZCBsb2NhbGUgbmFtZSBcIiVzXCIiLCBsb2NhbGUp OworCQl7CisJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgbG9jYWxlIG5hbWUgXCIlc1wiIiwgbG9j YWxlKTsKKwkJCXBnX2xvZ19lcnJvcl9oaW50KCJJZiB0aGUgbG9jYWxlIG5hbWUgaXMgc3BlY2lm aWMgdG8gSUNVLCB1c2UgLS1pY3UtbG9jYWxlLiIpOworCQkJZXhpdCgxKTsKKwkJfQogCQllbHNl CiAJCXsKIAkJCS8qCkBAIC0yNDUyLDcgKzI0NTYsNyBAQCBzZXRsb2NhbGVzKHZvaWQpCiB7CiAJ Y2hhcgkgICAqY2Fub25uYW1lOwogCi0JLyogc2V0IGVtcHR5IGxjXyogdmFsdWVzIHRvIGxvY2Fs ZSBjb25maWcgaWYgc2V0ICovCisJLyogc2V0IGVtcHR5IGxjXyogYW5kIGljdWxvY2FsZSB2YWx1 ZXMgdG8gbG9jYWxlIGNvbmZpZyBpZiBzZXQgKi8KIAogCWlmIChsb2NhbGUpCiAJewpAQCAtMjQ2 OCw2ICsyNDcyLDggQEAgc2V0bG9jYWxlcyh2b2lkKQogCQkJbGNfbW9uZXRhcnkgPSBsb2NhbGU7 CiAJCWlmICghbGNfbWVzc2FnZXMpCiAJCQlsY19tZXNzYWdlcyA9IGxvY2FsZTsKKwkJaWYgKCFp Y3VfbG9jYWxlICYmIGxvY2FsZV9wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQkJaWN1 X2xvY2FsZSA9IGxvY2FsZTsKIAl9CiAKIAkvKgpAQCAtMjUwNCwxNCArMjUxMCwxOCBAQCBzZXRs b2NhbGVzKHZvaWQpCiAJCQlwcmludGYoXygiVXNpbmcgZGVmYXVsdCBJQ1UgbG9jYWxlIFwiJXNc Ii5cbiIpLCBpY3VfbG9jYWxlKTsKIAkJfQogCi0JCS8qIGNhbm9uaWNhbGl6ZSB0byBhIGxhbmd1 YWdlIHRhZyAqLwotCQlsYW5ndGFnID0gaWN1X2xhbmd1YWdlX3RhZyhpY3VfbG9jYWxlKTsKLQkJ cHJpbnRmKF8oIlVzaW5nIGxhbmd1YWdlIHRhZyBcIiVzXCIgZm9yIElDVSBsb2NhbGUgXCIlc1wi LlxuIiksCi0JCQkgICBsYW5ndGFnLCBpY3VfbG9jYWxlKTsKLQkJcGdfZnJlZShpY3VfbG9jYWxl KTsKLQkJaWN1X2xvY2FsZSA9IGxhbmd0YWc7Ci0KLQkJaWN1X3ZhbGlkYXRlX2xvY2FsZShpY3Vf bG9jYWxlKTsKKwkJaWYgKHBnX3N0cmNhc2VjbXAoaWN1X2xvY2FsZSwgIkMiKSAhPSAwICYmCisJ CQlwZ19zdHJjYXNlY21wKGljdV9sb2NhbGUsICJQT1NJWCIpICE9IDApCisJCXsKKwkJCS8qIGNh bm9uaWNhbGl6ZSB0byBhIGxhbmd1YWdlIHRhZyAqLworCQkJbGFuZ3RhZyA9IGljdV9sYW5ndWFn ZV90YWcoaWN1X2xvY2FsZSk7CisJCQlwcmludGYoXygiVXNpbmcgbGFuZ3VhZ2UgdGFnIFwiJXNc IiBmb3IgSUNVIGxvY2FsZSBcIiVzXCIuXG4iKSwKKwkJCQkgICBsYW5ndGFnLCBpY3VfbG9jYWxl KTsKKwkJCXBnX2ZyZWUoaWN1X2xvY2FsZSk7CisJCQlpY3VfbG9jYWxlID0gbGFuZ3RhZzsKKwor CQkJaWN1X3ZhbGlkYXRlX2xvY2FsZShpY3VfbG9jYWxlKTsKKwkJfQogCiAJCS8qCiAJCSAqIElu IHN1cHBvcnRlZCBidWlsZHMsIHRoZSBJQ1UgbG9jYWxlIElEIHdpbGwgYmUgb3BlbmVkIGR1cmlu ZwpAQCAtMzM0Myw3ICszMzUzLDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJ CWJyZWFrOwogCQkJY2FzZSA4OgogCQkJCWxvY2FsZSA9ICJDIjsKLQkJCQlsb2NhbGVfcHJvdmlk ZXIgPSBDT0xMUFJPVklERVJfTElCQzsKIAkJCQlicmVhazsKIAkJCWNhc2UgOToKIAkJCQlwd2Zp bGVuYW1lID0gcGdfc3RyZHVwKG9wdGFyZyk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMv Y3JlYXRlZGIuYyBiL3NyYy9iaW4vc2NyaXB0cy9jcmVhdGVkYi5jCmluZGV4IGI0MjA1YzRmYTUu LjljYTg2YTNlNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0cy9jcmVhdGVkYi5jCisrKyBi L3NyYy9iaW4vc2NyaXB0cy9jcmVhdGVkYi5jCkBAIC0xNjQsMTQgKzE2NCw2IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCWV4aXQoMSk7CiAJfQogCi0JaWYgKGxvY2FsZSkKLQl7 Ci0JCWlmICghbGNfY3R5cGUpCi0JCQlsY19jdHlwZSA9IGxvY2FsZTsKLQkJaWYgKCFsY19jb2xs YXRlKQotCQkJbGNfY29sbGF0ZSA9IGxvY2FsZTsKLQl9Ci0KIAlpZiAoZW5jb2RpbmcpCiAJewog CQlpZiAocGdfY2hhcl90b19lbmNvZGluZyhlbmNvZGluZykgPCAwKQpAQCAtMjE5LDYgKzIxMSwx MSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZz cWwsICIgU1RSQVRFR1kgJXMiLCBmbXRJZChzdHJhdGVneSkpOwogCWlmICh0ZW1wbGF0ZSkKIAkJ YXBwZW5kUFFFeHBCdWZmZXIoJnNxbCwgIiBURU1QTEFURSAlcyIsIGZtdElkKHRlbXBsYXRlKSk7 CisJaWYgKGxvY2FsZSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZzcWwsICIgTE9DQUxF ICIpOworCQlhcHBlbmRTdHJpbmdMaXRlcmFsQ29ubigmc3FsLCBsb2NhbGUsIGNvbm4pOworCX0K IAlpZiAobGNfY29sbGF0ZSkKIAl7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZzcWwsICIgTENf Q09MTEFURSAiKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy90LzAyMF9jcmVhdGVkYi5w bCBiL3NyYy9iaW4vc2NyaXB0cy90LzAyMF9jcmVhdGVkYi5wbAppbmRleCBhZjNiMTQ5MmUzLi4z ZGI5ZmU5MzFmIDEwMDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvdC8wMjBfY3JlYXRlZGIucGwK KysrIGIvc3JjL2Jpbi9zY3JpcHRzL3QvMDIwX2NyZWF0ZWRiLnBsCkBAIC0xMjYsNyArMTI2LDcg QEAgJG5vZGUtPmNvbW1hbmRfY2hlY2tzX2FsbCgKIAkxLAogCVtxci9eJC9dLAogCVsKLQkJcXIv XmNyZWF0ZWRiOiBlcnJvcjogZGF0YWJhc2UgY3JlYXRpb24gZmFpbGVkOiBFUlJPUjogIGludmFs aWQgbG9jYWxlIG5hbWV8XmNyZWF0ZWRiOiBlcnJvcjogZGF0YWJhc2UgY3JlYXRpb24gZmFpbGVk OiBFUlJPUjogIG5ldyBjb2xsYXRpb24gXChmb28nOyBTRUxFQ1QgJzFcKSBpcyBpbmNvbXBhdGli bGUgd2l0aCB0aGUgY29sbGF0aW9uIG9mIHRoZSB0ZW1wbGF0ZSBkYXRhYmFzZS9zCisJCXFyL15j cmVhdGVkYjogZXJyb3I6IGRhdGFiYXNlIGNyZWF0aW9uIGZhaWxlZDogRVJST1I6ICBpbnZhbGlk IExDX0NPTExBVEUgbG9jYWxlIG5hbWV8XmNyZWF0ZWRiOiBlcnJvcjogZGF0YWJhc2UgY3JlYXRp b24gZmFpbGVkOiBFUlJPUjogIG5ldyBjb2xsYXRpb24gXChmb28nOyBTRUxFQ1QgJzFcKSBpcyBp bmNvbXBhdGlibGUgd2l0aCB0aGUgY29sbGF0aW9uIG9mIHRoZSB0ZW1wbGF0ZSBkYXRhYmFzZS9z CiAJXSwKIAknY3JlYXRlZGIgd2l0aCBpbmNvcnJlY3QgLS1sYy1jb2xsYXRlJyk7CiAkbm9kZS0+ Y29tbWFuZF9jaGVja3NfYWxsKApAQCAtMTM0LDcgKzEzNCw3IEBAICRub2RlLT5jb21tYW5kX2No ZWNrc19hbGwoCiAJMSwKIAlbcXIvXiQvXSwKIAlbCi0JCXFyL15jcmVhdGVkYjogZXJyb3I6IGRh dGFiYXNlIGNyZWF0aW9uIGZhaWxlZDogRVJST1I6ICBpbnZhbGlkIGxvY2FsZSBuYW1lfF5jcmVh dGVkYjogZXJyb3I6IGRhdGFiYXNlIGNyZWF0aW9uIGZhaWxlZDogRVJST1I6ICBuZXcgTENfQ1RZ UEUgXChmb28nOyBTRUxFQ1QgJzFcKSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgTENfQ1RZUEUg b2YgdGhlIHRlbXBsYXRlIGRhdGFiYXNlL3MKKwkJcXIvXmNyZWF0ZWRiOiBlcnJvcjogZGF0YWJh c2UgY3JlYXRpb24gZmFpbGVkOiBFUlJPUjogIGludmFsaWQgTENfQ1RZUEUgbG9jYWxlIG5hbWV8 XmNyZWF0ZWRiOiBlcnJvcjogZGF0YWJhc2UgY3JlYXRpb24gZmFpbGVkOiBFUlJPUjogIG5ldyBM Q19DVFlQRSBcKGZvbyc7IFNFTEVDVCAnMVwpIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBMQ19D VFlQRSBvZiB0aGUgdGVtcGxhdGUgZGF0YWJhc2UvcwogCV0sCiAJJ2NyZWF0ZWRiIHdpdGggaW5j b3JyZWN0IC0tbGMtY3R5cGUnKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaWN1L3QvMDEwX2Rh dGFiYXNlLnBsIGIvc3JjL3Rlc3QvaWN1L3QvMDEwX2RhdGFiYXNlLnBsCmluZGV4IDcxNWIxYmZm ZDYuLmRmNGFmMDBhZmUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2ljdS90LzAxMF9kYXRhYmFzZS5w bAorKysgYi9zcmMvdGVzdC9pY3UvdC8wMTBfZGF0YWJhc2UucGwKQEAgLTUxLDE2ICs1MSwyMyBA QCBiKSwKIAknc29ydCBieSBleHBsaWNpdCBjb2xsYXRpb24gdXBwZXIgZmlyc3QnKTsKIAogCi0j IFRlc3QgZXJyb3IgY2FzZXMgaW4gQ1JFQVRFIERBVEFCQVNFIGludm9sdmluZyBsb2NhbGUtcmVs YXRlZCBvcHRpb25zCisjIFRlc3QgdGhhdCBMT0NBTEU9J0MnIHdvcmtzIGZvciBJQ1UKIAotbXkg KCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGUxLT5wc3FsKCdwb3N0Z3JlcycsCi0JcXtD UkVBVEUgREFUQUJBU0UgZGJpY3UgTE9DQUxFX1BST1ZJREVSIGljdSBMT0NBTEUgJ0MnIFRFTVBM QVRFIHRlbXBsYXRlMCBFTkNPRElORyBVVEY4fSk7Ci1pc250KCRyZXQsIDAsCi0JIklDVSBsb2Nh bGUgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIElDVSBwcm92aWRlcjogZXhpdCBjb2RlIG5vdCAwIik7 CitteSAkcmV0MSA9ICRub2RlMS0+cHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIERBVEFCQVNF IGRiaWN1MiBMT0NBTEVfUFJPVklERVIgaWN1IExPQ0FMRSAnQycgVEVNUExBVEUgdGVtcGxhdGUw IEVOQ09ESU5HIFVURjh9KTsKK2lzKCRyZXQxLCAwLAorCSJDIGxvY2FsZSB3b3JrcyBmb3IgSUNV Iik7CisKKyMgVGVzdCB0aGF0IElDVS1zcGVjaWZpYyBsb2NhbGUgc3RyaW5nIG11c3QgYmUgc3Bl Y2lmaWVkIHdpdGggSUNVX0xPQ0FMRSwKKyMgbm90IExPQ0FMRQorCitteSAoJHJldDIsICRzdGRv dXQsICRzdGRlcnIpID0gJG5vZGUxLT5wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgREFUQUJB U0UgZGJpY3UzIExPQ0FMRV9QUk9WSURFUiBpY3UgTE9DQUxFICdAY29sU3RyZW5ndGg9cHJpbWFy eScgVEVNUExBVEUgdGVtcGxhdGUwIEVOQ09ESU5HIFVURjh9KTsKK2lzbnQoJHJldDIsIDAsCisJ IklDVS1zcGVjaWZpYyBsb2NhbGUgbXVzdCBiZSBzcGVjaWZpZWQgd2l0aCBJQ1VfTE9DQUxFOiBl eGl0IGNvZGUgbm90IDAiKTsKIGxpa2UoCiAJJHN0ZGVyciwKLQlxci9FUlJPUjogIElDVSBsb2Nh bGUgbXVzdCBiZSBzcGVjaWZpZWQvLAotCSJJQ1UgbG9jYWxlIG11c3QgYmUgc3BlY2lmaWVkIGZv ciBJQ1UgcHJvdmlkZXI6IGVycm9yIG1lc3NhZ2UiKTsKLQorCXFyL0VSUk9SOiAgaW52YWxpZCBM Q19DT0xMQVRFIGxvY2FsZSBuYW1lLywKKwkiSUNVLXNwZWNpZmljIGxvY2FsZSBtdXN0IGJlIHNw ZWNpZmllZCB3aXRoIElDVV9MT0NBTEU6IGVycm9yIG1lc3NhZ2UiKTsKIAogZG9uZV90ZXN0aW5n KCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0 Zjgub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dApp bmRleCBmMjE3NjU4MTUxLi41NjZlOTFkMmQ5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKQEAgLTEwNjMsMTEgKzEwNjMsMTEgQEAgQ1JFQVRF IENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdjJyk7IERST1AgQ09M TEFUSU9OIHRlc3R4OwogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxv Y2FsZSA9ICdwb3NpeCcpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKIC0tIHRlc3Qgc3BlY2lhbCB2 YXJpYW50cwogQ1JFQVRFIENPTExBVElPTiB0ZXN0eCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9 ICdARVVSTycpOyBEUk9QIENPTExBVElPTiB0ZXN0eDsKLU5PVElDRTogIHVzaW5nIHN0YW5kYXJk IGZvcm0gInVuZC11LWN1LWV1ciIgZm9yIGxvY2FsZSAiQEVVUk8iCitOT1RJQ0U6ICB1c2luZyBz dGFuZGFyZCBmb3JtICJ1bmQtdS1jdS1ldXIiIGZvciBJQ1UgbG9jYWxlICJARVVSTyIKIENSRUFU RSBDT0xMQVRJT04gdGVzdHggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQHBpbnlpbicpOyBE Uk9QIENPTExBVElPTiB0ZXN0eDsKLU5PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZC11 LWNvLXBpbnlpbiIgZm9yIGxvY2FsZSAiQHBpbnlpbiIKK05PVElDRTogIHVzaW5nIHN0YW5kYXJk IGZvcm0gInVuZC11LWNvLXBpbnlpbiIgZm9yIElDVSBsb2NhbGUgIkBwaW55aW4iCiBDUkVBVEUg Q09MTEFUSU9OIHRlc3R4IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0BzdHJva2UnKTsgRFJP UCBDT0xMQVRJT04gdGVzdHg7Ci1OT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1j by1zdHJva2UiIGZvciBsb2NhbGUgIkBzdHJva2UiCitOT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBm b3JtICJ1bmQtdS1jby1zdHJva2UiIGZvciBJQ1UgbG9jYWxlICJAc3Ryb2tlIgogQ1JFQVRFIENP TExBVElPTiB0ZXN0NCBGUk9NIG5vbnNlbnNlOwogRVJST1I6ICBjb2xsYXRpb24gIm5vbnNlbnNl IiBmb3IgZW5jb2RpbmcgIlVURjgiIGRvZXMgbm90IGV4aXN0CiBDUkVBVEUgQ09MTEFUSU9OIHRl c3Q1IEZST00gdGVzdDA7CkBAIC0xMjEzLDkgKzEyMTMsOSBAQCBTRUxFQ1QgJ2NvdMOpJyA8ICdj w7R0ZScgQ09MTEFURSAidW5kLXgtaWN1IiwgJ2NvdMOpJyA+ICdjw7R0ZScgQ09MTEFURSB0ZXN0 Y29sbAogKDEgcm93KQogCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3Rjb2xsX2xvd2VyX2ZpcnN0IChw cm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xDYXNlRmlyc3Q9bG93ZXInKTsKLU5PVElDRTog IHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZC11LWtmLWxvd2VyIiBmb3IgbG9jYWxlICJAY29sQ2Fz ZUZpcnN0PWxvd2VyIgorTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kLXUta2YtbG93 ZXIiIGZvciBJQ1UgbG9jYWxlICJAY29sQ2FzZUZpcnN0PWxvd2VyIgogQ1JFQVRFIENPTExBVElP TiB0ZXN0Y29sbF91cHBlcl9maXJzdCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sQ2Fz ZUZpcnN0PXVwcGVyJyk7Ci1OT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1rZi11 cHBlciIgZm9yIGxvY2FsZSAiQGNvbENhc2VGaXJzdD11cHBlciIKK05PVElDRTogIHVzaW5nIHN0 YW5kYXJkIGZvcm0gInVuZC11LWtmLXVwcGVyIiBmb3IgSUNVIGxvY2FsZSAiQGNvbENhc2VGaXJz dD11cHBlciIKIFNFTEVDVCAnYWFhJyA8ICdBQUEnIENPTExBVEUgdGVzdGNvbGxfbG93ZXJfZmly c3QsICdhYWEnID4gJ0FBQScgQ09MTEFURSB0ZXN0Y29sbF91cHBlcl9maXJzdDsKICA/Y29sdW1u PyB8ID9jb2x1bW4/IAogLS0tLS0tLS0tLSstLS0tLS0tLS0tCkBAIC0xMjIzLDcgKzEyMjMsNyBA QCBTRUxFQ1QgJ2FhYScgPCAnQUFBJyBDT0xMQVRFIHRlc3Rjb2xsX2xvd2VyX2ZpcnN0LCAnYWFh JyA+ICdBQUEnIENPTExBVEUgdGVzdGNvbAogKDEgcm93KQogCiBDUkVBVEUgQ09MTEFUSU9OIHRl c3Rjb2xsX3NoaWZ0ZWQgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnQGNvbEFsdGVybmF0ZT1z aGlmdGVkJyk7Ci1OT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1rYS1zaGlmdGVk IiBmb3IgbG9jYWxlICJAY29sQWx0ZXJuYXRlPXNoaWZ0ZWQiCitOT1RJQ0U6ICB1c2luZyBzdGFu ZGFyZCBmb3JtICJ1bmQtdS1rYS1zaGlmdGVkIiBmb3IgSUNVIGxvY2FsZSAiQGNvbEFsdGVybmF0 ZT1zaGlmdGVkIgogU0VMRUNUICdkZS1sdWdlJyA8ICdkZWFuemEnIENPTExBVEUgInVuZC14LWlj dSIsICdkZS1sdWdlJyA+ICdkZWFuemEnIENPTExBVEUgdGVzdGNvbGxfc2hpZnRlZDsKICA/Y29s dW1uPyB8ID9jb2x1bW4/IAogLS0tLS0tLS0tLSstLS0tLS0tLS0tCkBAIC0xMjQwLDEyICsxMjQw LDEyIEBAIFNFTEVDVCAnQS0yMScgPiAnQS0xMjMnIENPTExBVEUgInVuZC14LWljdSIsICdBLTIx JyA8ICdBLTEyMycgQ09MTEFURSB0ZXN0Y29sbF9uCiAoMSByb3cpCiAKIENSRUFURSBDT0xMQVRJ T04gdGVzdGNvbGxfZXJyb3IxIChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJ0Bjb2xOdW1lcmlj PWxvd2VyJyk7Ci1OT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQtdS1rbi1sb3dlciIg Zm9yIGxvY2FsZSAiQGNvbE51bWVyaWM9bG93ZXIiCitOT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBm b3JtICJ1bmQtdS1rbi1sb3dlciIgZm9yIElDVSBsb2NhbGUgIkBjb2xOdW1lcmljPWxvd2VyIgog RVJST1I6ICBjb3VsZCBub3Qgb3BlbiBjb2xsYXRvciBmb3IgbG9jYWxlICJ1bmQtdS1rbi1sb3dl ciI6IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUgogLS0gdGVzdCB0aGF0IGF0dHJpYnV0ZXMgbm90 IGhhbmRsZWQgYnkgaWN1X3NldF9jb2xsYXRpb25fYXR0cmlidXRlcygpCiAtLSAoaGFuZGxlZCBi eSB1Y29sX29wZW4oKSBkaXJlY3RseSkgYWxzbyB3b3JrCiBDUkVBVEUgQ09MTEFUSU9OIHRlc3Rj b2xsX2RlX3Bob25lYm9vayAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdkZUBjb2xsYXRpb249 cGhvbmVib29rJyk7Ci1OT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJkZS11LWNvLXBob25l YmsiIGZvciBsb2NhbGUgImRlQGNvbGxhdGlvbj1waG9uZWJvb2siCitOT1RJQ0U6ICB1c2luZyBz dGFuZGFyZCBmb3JtICJkZS11LWNvLXBob25lYmsiIGZvciBJQ1UgbG9jYWxlICJkZUBjb2xsYXRp b249cGhvbmVib29rIgogU0VMRUNUICdHb2xkbWFubicgPCAnR8O2dHonIENPTExBVEUgImRlLXgt aWN1IiwgJ0dvbGRtYW5uJyA+ICdHw7Z0eicgQ09MTEFURSB0ZXN0Y29sbF9kZV9waG9uZWJvb2s7 CiAgP2NvbHVtbj8gfCA/Y29sdW1uPyAKIC0tLS0tLS0tLS0rLS0tLS0tLS0tLQpAQCAtMTI1NCw3 ICsxMjU0LDcgQEAgU0VMRUNUICdHb2xkbWFubicgPCAnR8O2dHonIENPTExBVEUgImRlLXgtaWN1 IiwgJ0dvbGRtYW5uJyA+ICdHw7Z0eicgQ09MTEFURSB0ZXMKIAogLS0gcnVsZXMKIENSRUFURSBD T0xMQVRJT04gdGVzdGNvbGxfcnVsZXMxIChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJycsIHJ1 bGVzID0gJyZhIDwgZycpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3Ig bG9jYWxlICIiCitOT1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQiIGZvciBJQ1UgbG9j YWxlICIiCiBDUkVBVEUgVEFCTEUgdGVzdDcgKGEgdGV4dCk7CiAtLSBleGFtcGxlIGZyb20gaHR0 cHM6Ly91bmljb2RlLW9yZy5naXRodWIuaW8vaWN1L3VzZXJndWlkZS9jb2xsYXRpb24vY3VzdG9t aXphdGlvbi8jc3ludGF4CiBJTlNFUlQgSU5UTyB0ZXN0NyBWQUxVRVMgKCdBYmVybmF0aHknKSwg KCdhcHBsZScpLCAoJ2JpcmQnKSwgKCdCb3N0b24nKSwgKCdHcmFoYW0nKSwgKCdncmVlbicpOwpA QCAtMTI4MiwxMyArMTI4MiwxMyBAQCBTRUxFQ1QgKiBGUk9NIHRlc3Q3IE9SREVSIEJZIGEgQ09M TEFURSB0ZXN0Y29sbF9ydWxlczE7CiAKIERST1AgVEFCTEUgdGVzdDc7CiBDUkVBVEUgQ09MTEFU SU9OIHRlc3Rjb2xsX3J1bGVzeCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICcnLCBydWxlcyA9 ICchIXdyb25nISEnKTsKLU5PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZCIgZm9yIGxv Y2FsZSAiIgorTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3IgSUNVIGxvY2Fs ZSAiIgogRVJST1I6ICBjb3VsZCBub3Qgb3BlbiBjb2xsYXRvciBmb3IgbG9jYWxlICJ1bmQiIHdp dGggcnVsZXMgIiEhd3JvbmchISI6IFVfSU5WQUxJRF9GT1JNQVRfRVJST1IKIC0tIG5vbmRldGVy bWluaXN0aWMgY29sbGF0aW9ucwogQ1JFQVRFIENPTExBVElPTiBjdGVzdF9kZXQgKHByb3ZpZGVy ID0gaWN1LCBsb2NhbGUgPSAnJywgZGV0ZXJtaW5pc3RpYyA9IHRydWUpOwotTk9USUNFOiAgdXNp bmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3IgbG9jYWxlICIiCitOT1RJQ0U6ICB1c2luZyBzdGFu ZGFyZCBmb3JtICJ1bmQiIGZvciBJQ1UgbG9jYWxlICIiCiBDUkVBVEUgQ09MTEFUSU9OIGN0ZXN0 X25vbmRldCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICcnLCBkZXRlcm1pbmlzdGljID0gZmFs c2UpOwotTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3IgbG9jYWxlICIiCitO T1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQiIGZvciBJQ1UgbG9jYWxlICIiCiBDUkVB VEUgVEFCTEUgdGVzdDYgKGEgaW50LCBiIHRleHQpOwogLS0gc2FtZSBzdHJpbmcgaW4gZGlmZmVy ZW50IG5vcm1hbCBmb3JtcwogSU5TRVJUIElOVE8gdGVzdDYgVkFMVUVTICgxLCBVJidcMDBFNGJj Jyk7CkBAIC0xMzM4LDkgKzEzMzgsOSBAQCBTRUxFQ1QgKiBGUk9NIHRlc3Q2YSBXSEVSRSBiID0g QVJSQVlbJ8OkYmMnXSBDT0xMQVRFIGN0ZXN0X25vbmRldDsKICgyIHJvd3MpCiAKIENSRUFURSBD T0xMQVRJT04gY2FzZV9zZW5zaXRpdmUgKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnJyk7Ci1O T1RJQ0U6ICB1c2luZyBzdGFuZGFyZCBmb3JtICJ1bmQiIGZvciBsb2NhbGUgIiIKK05PVElDRTog IHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZCIgZm9yIElDVSBsb2NhbGUgIiIKIENSRUFURSBDT0xM QVRJT04gY2FzZV9pbnNlbnNpdGl2ZSAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICdAY29sU3Ry ZW5ndGg9c2Vjb25kYXJ5JywgZGV0ZXJtaW5pc3RpYyA9IGZhbHNlKTsKLU5PVElDRTogIHVzaW5n IHN0YW5kYXJkIGZvcm0gInVuZC11LWtzLWxldmVsMiIgZm9yIGxvY2FsZSAiQGNvbFN0cmVuZ3Ro PXNlY29uZGFyeSIKK05PVElDRTogIHVzaW5nIHN0YW5kYXJkIGZvcm0gInVuZC11LWtzLWxldmVs MiIgZm9yIElDVSBsb2NhbGUgIkBjb2xTdHJlbmd0aD1zZWNvbmRhcnkiCiBTRUxFQ1QgJ2FiYycg PD0gJ0FCQycgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSwgJ2FiYycgPj0gJ0FCQycgQ09MTEFURSBj YXNlX3NlbnNpdGl2ZTsKICA/Y29sdW1uPyB8ID9jb2x1bW4/IAogLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0tIAoyLjM0LjEKCg== --=-x2ICV1s1QTxvoAek1xDb--