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 1pA63I-0005HH-MG for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Dec 2022 09:15:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pA63G-000626-Rk for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Dec 2022 09:15:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pA63G-00061H-Dv for pgsql-hackers@lists.postgresql.org; Tue, 27 Dec 2022 09:15:14 +0000 Received: from wnew2-smtp.messagingengine.com ([64.147.123.27]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pA638-0004XL-Cg for pgsql-hackers@postgresql.org; Tue, 27 Dec 2022 09:15:13 +0000 Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailnew.west.internal (Postfix) with ESMTP id 79B2B2B0670E for ; Tue, 27 Dec 2022 04:15:02 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Tue, 27 Dec 2022 04:15:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:message-id:mime-version :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1672132502; x= 1672139702; bh=byVKgX+ThMhi0RnNh9ujXliVGWqO9RPzdJ5SPjsGQTQ=; b=h RpOEGjs5YsVj8kFjOX01fyAC0x/2lTvKHcS5eZODbZZ9lTu3+NYJAmbk3cNs0DcO 1wNFE/AKTk0NB0zvAZGOwcSZSYC7d1KhwxK5Ynoh0jedIDRfs8RiN0KFTMjBf1Tq +Ha0wVh9ThGJNN4WDwACwnw16C6rLVjp2cJh7kvCDlk7jVWSUOcbctwTfS9ii73c 40xhKnLEM1Hl53P59QKR5OCV+7XBQZ56+nmqDmEgJZ9Plc+nT6qYj8cty8RgI1OM Yl1DDWEQ8xGIn0mRA6rBczr3xUfCfXJxMivKWYUGrF6JzxdTnH5GOHvmNa1v/2z1 zEeqEDeldqFcTkCb1fYCQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedriedtgddtudcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurheptgfkffggfgfhuffvsehmtderredtfe ejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhs vghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrghtthgvrh hnpeeijeevieduueehudehuddtffeijeejteeijeehhfevueeftdffjeeilefhleekffen ucffohhmrghinhepphhoshhtghhrvghsqhhlrdhorhhgnecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhht segvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Tue, 27 Dec 2022 04:15:01 -0500 (EST) Content-Type: multipart/mixed; boundary="------------sP5ji7X0EEQM66LJQrCSDPeu" Message-ID: <84aae844-dc55-a4be-86d9-4f0fa405cc97@enterprisedb.com> Date: Tue, 27 Dec 2022 10:15:00 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Content-Language: en-US From: Peter Eisentraut Subject: Underscores in numeric literals To: pgsql-hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------sP5ji7X0EEQM66LJQrCSDPeu Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Here is a patch to add support for underscores in numeric literals, for visual grouping, like 1_500_000_000 0b10001000_00000000 0o_1_755 0xFFFF_FFFF 1.618_034 per SQL:202x draft. This adds support in the lexer as well as in the integer type input functions. TODO: float/numeric type input support I did some performance tests similar to what was done in [0] and didn't find any problematic deviations. Other tests would be welcome. [0]: https://www.postgresql.org/message-id/flat/b239564c-cad0-b23e-c57e-166d883cb97d@enterprisedb.com --------------sP5ji7X0EEQM66LJQrCSDPeu Content-Type: text/plain; charset=UTF-8; name="v1-0001-Underscores-in-numeric-literals.patch" Content-Disposition: attachment; filename="v1-0001-Underscores-in-numeric-literals.patch" Content-Transfer-Encoding: base64 RnJvbSAzNmFlZjc4NDIzZTlhZGM2ZWJlNzJmYjJhM2NmNDNlMzg1YTJjYWNhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAyNyBEZWMgMjAyMiAxMDoxMDoxOCArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjFdIFVuZGVyc2NvcmVzIGluIG51bWVyaWMgbGl0ZXJhbHMKCkFkZCBzdXBw b3J0IGZvciB1bmRlcnNjb3JlcyBpbiBudW1lcmljIGxpdGVyYWxzLCBmb3IgdmlzdWFsIGdy b3VwaW5nLApsaWtlCgogICAgMV81MDBfMDAwXzAwMAogICAgMGIxMDAwMTAwMF8wMDAwMDAw MAogICAgMG9fMV83NTUKICAgIDB4RkZGRl9GRkZGCiAgICAxLjYxOF8wMzQKCnBlciBTUUw6 MjAyeCBkcmFmdC4KClRoaXMgYWRkcyBzdXBwb3J0IGluIHRoZSBsZXhlciBhcyB3ZWxsIGFz IGluIHRoZSBpbnRlZ2VyIHR5cGUgaW5wdXQKZnVuY3Rpb25zLgoKVE9ETzogZmxvYXQvbnVt ZXJpYyB0eXBlIGlucHV0IHN1cHBvcnQKCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9iMjM5NTY0Yy1jYWQwLWIyM2UtYzU3ZS0xNjZk ODgzY2I5N2RAZW50ZXJwcmlzZWRiLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9zeW50YXguc2dt bCAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9z cWxfZmVhdHVyZXMudHh0ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9z Y2FuLmwgICAgICAgICAgICAgICAgICAgICB8ICA2MyArKysrKystLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L251bXV0aWxzLmMgICAgICAgICAgICAgIHwgMTQ0ICsrKysrKysrKysrKysr KystLQogc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwgICAgICAgICAgICAgICAgICAgICAgIHwg IDE2ICstCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGdjLmwgICAgICAgICAgICAg fCAgMTYgKy0KIHNyYy9wbC9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX3RyYXAub3V0 ICB8ICAgMiArLQogc3JjL3BsL3BscGdzcWwvc3JjL3NxbC9wbHBnc3FsX3RyYXAuc3FsICAg ICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludDIub3V0ICAgICAg ICAgICAgfCAgNDQgKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludDQub3V0 ICAgICAgICAgICAgfCAgNDQgKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu dDgub3V0ICAgICAgICAgICAgfCAgNDQgKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL251bWVyb2xvZ3kub3V0ICAgICAgfCAgOTIgKysrKysrKysrKy0KIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCB8ICAgNiArLQogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvaW50Mi5zcWwgICAgICAgICAgICAgICAgIHwgIDE0ICsrCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9pbnQ0LnNxbCAgICAgICAgICAgICAgICAgfCAgMTQgKysKIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2ludDguc3FsICAgICAgICAgICAgICAgICB8ICAxNCArKwogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvbnVtZXJvbG9neS5zcWwgICAgICAgICAgIHwgIDI0ICsrLQog c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCAgICAgIHwgICA2ICst CiAxOCBmaWxlcyBjaGFuZ2VkLCA1MDkgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sIGIvZG9jL3NyYy9zZ21s L3N5bnRheC5zZ21sCmluZGV4IDk1NjE4MmU3YzYuLjI3ZTUzYjRiNDYgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3ludGF4LnNn bWwKQEAgLTcyOCw2ICs3MjgsMjAgQEAgPHRpdGxlPk51bWVyaWMgQ29uc3RhbnRzPC90aXRs ZT4KICAgICAgPC9wYXJhPgogICAgIDwvbm90ZT4KIAorICAgIDxwYXJhPgorICAgICBGb3Ig dmlzdWFsIGdyb3VwaW5nLCB1bmRlcnNjb3JlcyBjYW4gYmUgaW5zZXJ0ZWQgYmV0d2VlbiBk aWdpdHMuICBUaGVzZQorICAgICBoYXZlIG5vIGZ1cnRoZXIgZWZmZWN0IG9uIHRoZSB2YWx1 ZSBvZiB0aGUgbGl0ZXJhbC4gIEZvciBleGFtcGxlOgorPGxpdGVyYWxsYXlvdXQ+MV81MDBf MDAwXzAwMAorMGIxMDAwMTAwMF8wMDAwMDAwMAorMG9fMV83NTUKKzB4RkZGRl9GRkZGCisx LjYxOF8wMzQKKzwvbGl0ZXJhbGxheW91dD4KKyAgICAgVW5kZXJzY29yZXMgYXJlIG5vdCBh bGxvd2VkIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgYSBudW1lcmljIGNvbnN0YW50IG9yCisg ICAgIGEgZ3JvdXAgb2YgZGlnaXRzICh0aGF0IGlzLCBpbW1lZGlhdGVseSBiZWZvcmUgb3Ig YWZ0ZXIgYSBwZXJpb2Qgb3IgdGhlCisgICAgIDxxdW90ZT5lPC9xdW90ZT4pLCBhbmQgbW9y ZSB0aGFuIG9uZSB1bmRlcnNjb3JlIGluIGEgcm93IGlzIG5vdCBhbGxvd2VkLgorICAgIDwv cGFyYT4KKwogICAgIDxwYXJhPgogICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PmludGVnZXI8 L3ByaW1hcnk+PC9pbmRleHRlcm0+CiAgICAgIDxpbmRleHRlcm0+PHByaW1hcnk+YmlnaW50 PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMu dHh0CmluZGV4IGFiYWQyMTZiN2UuLjM3NjY3NjJhZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3NxbF9mZWF0dXJlcy50eHQKQEAgLTUyOCw2ICs1MjgsNyBAQCBUNjUzCVNRTC1zY2hlbWEg c3RhdGVtZW50cyBpbiBleHRlcm5hbCByb3V0aW5lcwkJCVlFUwogVDY1NAlTUUwtZHluYW1p YyBzdGF0ZW1lbnRzIGluIGV4dGVybmFsIHJvdXRpbmVzCQkJTk8JCiBUNjU1CUN5Y2xpY2Fs bHkgZGVwZW5kZW50IHJvdXRpbmVzCQkJWUVTCQogVDY2MQlOb24tZGVjaW1hbCBpbnRlZ2Vy IGxpdGVyYWxzCQkJWUVTCVNRTDoyMDJ4IGRyYWZ0CitUNjYyCVVuZGVyc2NvcmVzIGluIGlu dGVnZXIgbGl0ZXJhbHMJCQlZRVMJU1FMOjIwMnggZHJhZnQKIFQ4MTEJQmFzaWMgU1FML0pT T04gY29uc3RydWN0b3IgZnVuY3Rpb25zCQkJTk8JCiBUODEyCVNRTC9KU09OOiBKU09OX09C SkVDVEFHRwkJCU5PCQogVDgxMwlTUUwvSlNPTjogSlNPTl9BUlJBWUFHRyB3aXRoIE9SREVS IEJZCQkJTk8JCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3NjYW4ubAppbmRleCA5YWQ5ZTBjOGJhLi5hMWVhOTRlZjA2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sCisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9zY2FuLmwKQEAgLTEyNCw2ICsxMjQsNyBAQCBzdGF0aWMgdm9pZCBhZGRsaXQo Y2hhciAqeXRleHQsIGludCB5bGVuZywgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3Rh dGljIHZvaWQgYWRkbGl0Y2hhcih1bnNpZ25lZCBjaGFyIHljaGFyLCBjb3JlX3l5c2Nhbl90 IHl5c2Nhbm5lcik7CiBzdGF0aWMgY2hhciAqbGl0YnVmZHVwKGNvcmVfeXlzY2FuX3QgeXlz Y2FubmVyKTsKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHVuZXNjYXBlX3NpbmdsZV9jaGFyKHVu c2lnbmVkIGNoYXIgYywgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOworc3RhdGljIGNoYXIg KnN0cmlwX3VuZGVyc2NvcmVzKGNvbnN0IGNoYXIgKmluKTsKIHN0YXRpYyBpbnQJcHJvY2Vz c19pbnRlZ2VyX2xpdGVyYWwoY29uc3QgY2hhciAqdG9rZW4sIFlZU1RZUEUgKmx2YWwsIGlu dCBiYXNlKTsKIHN0YXRpYyB2b2lkIGFkZHVuaWNvZGUocGdfd2NoYXIgYywgeXlzY2FuX3Qg eXlzY2FubmVyKTsKIApAQCAtMzk1LDE5ICszOTYsMTkgQEAgaGV4ZGlnaXQJCVswLTlBLUZh LWZdCiBvY3RkaWdpdAkJWzAtN10KIGJpbmRpZ2l0CQlbMC0xXQogCi1kZWNpbnRlZ2VyCQl7 ZGVjZGlnaXR9KwotaGV4aW50ZWdlcgkJMFt4WF17aGV4ZGlnaXR9Kwotb2N0aW50ZWdlcgkJ MFtvT117b2N0ZGlnaXR9KwotYmluaW50ZWdlcgkJMFtiQl17YmluZGlnaXR9KworZGVjaW50 ZWdlcgkJe2RlY2RpZ2l0fShfP3tkZWNkaWdpdH0pKgoraGV4aW50ZWdlcgkJMFt4WF0oXz97 aGV4ZGlnaXR9KSsKK29jdGludGVnZXIJCTBbb09dKF8/e29jdGRpZ2l0fSkrCitiaW5pbnRl Z2VyCQkwW2JCXShfP3tiaW5kaWdpdH0pKwogCi1oZXhmYWlsCQkJMFt4WF0KLW9jdGZhaWwJ CQkwW29PXQotYmluZmFpbAkJCTBbYkJdCitoZXhmYWlsCQkJMFt4WF1fPworb2N0ZmFpbAkJ CTBbb09dXz8KK2JpbmZhaWwJCQkwW2JCXV8/CiAKIG51bWVyaWMJCQkoKHtkZWNpbnRlZ2Vy fVwue2RlY2ludGVnZXJ9Pyl8KFwue2RlY2ludGVnZXJ9KSkKIG51bWVyaWNmYWlsCQl7ZGVj ZGlnaXR9K1wuXC4KIAotcmVhbAkJCSh7ZGVjaW50ZWdlcn18e251bWVyaWN9KVtFZV1bLStd P3tkZWNkaWdpdH0rCityZWFsCQkJKHtkZWNpbnRlZ2VyfXx7bnVtZXJpY30pW0VlXVstK10/ e2RlY2ludGVnZXJ9KwogcmVhbGZhaWwJCSh7ZGVjaW50ZWdlcn18e251bWVyaWN9KVtFZV1b LStdCiAKIGRlY2ludGVnZXJfanVuawl7ZGVjaW50ZWdlcn17aWRlbnRfc3RhcnR9CkBAIC0x MDI4LDcgKzEwMjksNyBAQCBvdGhlcgkJCS4KIAkJCQl9CiB7bnVtZXJpY30JCXsKIAkJCQkJ U0VUX1lZTExPQygpOwotCQkJCQl5eWx2YWwtPnN0ciA9IHBzdHJkdXAoeXl0ZXh0KTsKKwkJ CQkJeXlsdmFsLT5zdHIgPSBzdHJpcF91bmRlcnNjb3Jlcyh5eXRleHQpOwogCQkJCQlyZXR1 cm4gRkNPTlNUOwogCQkJCX0KIHtudW1lcmljZmFpbH0JewpAQCAtMTAzOSw3ICsxMDQwLDcg QEAgb3RoZXIJCQkuCiAJCQkJfQoge3JlYWx9CQkJewogCQkJCQlTRVRfWVlMTE9DKCk7Ci0J CQkJCXl5bHZhbC0+c3RyID0gcHN0cmR1cCh5eXRleHQpOworCQkJCQl5eWx2YWwtPnN0ciA9 IHN0cmlwX3VuZGVyc2NvcmVzKHl5dGV4dCk7CiAJCQkJCXJldHVybiBGQ09OU1Q7CiAJCQkJ fQoge3JlYWxmYWlsfQkJewpAQCAtMTM1Nyw2ICsxMzU4LDMwIEBAIGxpdGJ1ZmR1cChjb3Jl X3l5c2Nhbl90IHl5c2Nhbm5lcikKIAlyZXR1cm4gbmV3OwogfQogCitzdGF0aWMgY2hhciAq CitzdHJpcF91bmRlcnNjb3Jlcyhjb25zdCBjaGFyICppbikKK3sKKwlpZiAoc3RyY2hyKGlu LCAnXycpKQorCXsKKwkJY2hhcgkgICAqb3V0ID0gcGFsbG9jKHN0cmxlbihpbikpOworCQlj b25zdCBjaGFyICpwMTsKKwkJY2hhcgkgICAqcDI7CisKKwkJcDEgPSBpbjsKKwkJcDIgPSBv dXQ7CisJCXdoaWxlICgqcDEpCisJCXsKKwkJCWlmICgqcDEgIT0gJ18nKQorCQkJCSpwMisr ID0gKnAxOworCQkJcDErKzsKKwkJfQorCQkqcDIgPSAnXDAnOworCQlyZXR1cm4gb3V0Owor CX0KKwllbHNlCisJCXJldHVybiBwc3RyZHVwKGluKTsKK30KKwogLyoKICAqIFByb2Nlc3Mg e2RlY2ludGVnZXJ9LCB7aGV4aW50ZWdlcn0sIGV0Yy4gIE5vdGUgdGhpcyB3aWxsIGFsc28g ZG8gdGhlIHJpZ2h0CiAgKiB0aGluZyB3aXRoIHtudW1lcmljfSwgaWUgZGlnaXRzIGFuZCBh IGRlY2ltYWwgcG9pbnQuCkBAIC0xMzY3LDYgKzEzOTIsMjQgQEAgcHJvY2Vzc19pbnRlZ2Vy X2xpdGVyYWwoY29uc3QgY2hhciAqdG9rZW4sIFlZU1RZUEUgKmx2YWwsIGludCBiYXNlKQog CWludAkJCXZhbDsKIAljaGFyCSAgICplbmRwdHI7CiAKKwlpZiAoc3RyY2hyKHRva2VuLCAn XycpKQorCXsKKwkJY2hhcgkgICAqbmV3dG9rZW4gPSBwYWxsb2Moc3RybGVuKHRva2VuKSk7 CisJCWNvbnN0IGNoYXIgKnAxOworCQljaGFyCSAgICpwMjsKKworCQlwMSA9IHRva2VuOwor CQlwMiA9IG5ld3Rva2VuOworCQl3aGlsZSAoKnAxKQorCQl7CisJCQlpZiAoKnAxICE9ICdf JykKKwkJCQkqcDIrKyA9ICpwMTsKKwkJCXAxKys7CisJCX0KKwkJKnAyID0gJ1wwJzsKKwkJ dG9rZW4gPSBuZXd0b2tlbjsKKwl9CisKIAllcnJubyA9IDA7CiAJdmFsID0gc3RydG9pbnQo YmFzZSA9PSAxMCA/IHRva2VuIDogdG9rZW4gKyAyLCAmZW5kcHRyLCBiYXNlKTsKIAlpZiAo KmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vID09IEVSQU5HRSkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9udW11dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251 bXV0aWxzLmMKaW5kZXggN2NkZWQ3M2U2ZS4uMDdmMDRkMDdjYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L251bXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L251bXV0aWxzLmMKQEAgLTE0MSw4ICsxNDEsMTYgQEAgcGdfc3RydG9pbnQxNl9zYWZl KGNvbnN0IGNoYXIgKnMsIE5vZGUgKmVzY29udGV4dCkKIAl7CiAJCWZpcnN0ZGlnaXQgPSBw dHIgKz0gMjsKIAotCQl3aGlsZSAoKnB0ciAmJiBpc3hkaWdpdCgodW5zaWduZWQgY2hhcikg KnB0cikpCisJCXdoaWxlICgqcHRyICYmIChpc3hkaWdpdCgodW5zaWduZWQgY2hhcikgKnB0 cikgfHwgKnB0ciA9PSAnXycpKQogCQl7CisJCQlpZiAoKnB0ciA9PSAnXycpCisJCQl7CisJ CQkJaWYgKHVubGlrZWx5KCoocHRyIC0gMSkgPT0gJ18nKSkKKwkJCQkJZ290byBpbnZhbGlk X3N5bnRheDsKKwkJCQlwdHIrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwogCQkJaWYgKHVu bGlrZWx5KHRtcCA+IC0oUEdfSU5UMTZfTUlOIC8gMTYpKSkKIAkJCQlnb3RvIG91dF9vZl9y YW5nZTsKIApAQCAtMTUzLDggKzE2MSwxNiBAQCBwZ19zdHJ0b2ludDE2X3NhZmUoY29uc3Qg Y2hhciAqcywgTm9kZSAqZXNjb250ZXh0KQogCXsKIAkJZmlyc3RkaWdpdCA9IHB0ciArPSAy OwogCi0JCXdoaWxlICgqcHRyICYmICgqcHRyID49ICcwJyAmJiAqcHRyIDw9ICc3JykpCisJ CXdoaWxlICgqcHRyICYmICgoKnB0ciA+PSAnMCcgJiYgKnB0ciA8PSAnNycpIHx8ICpwdHIg PT0gJ18nKSkKIAkJeworCQkJaWYgKCpwdHIgPT0gJ18nKQorCQkJeworCQkJCWlmICh1bmxp a2VseSgqKHB0ciAtIDEpID09ICdfJykpCisJCQkJCWdvdG8gaW52YWxpZF9zeW50YXg7CisJ CQkJcHRyKys7CisJCQkJY29udGludWU7CisJCQl9CisKIAkJCWlmICh1bmxpa2VseSh0bXAg PiAtKFBHX0lOVDE2X01JTiAvIDgpKSkKIAkJCQlnb3RvIG91dF9vZl9yYW5nZTsKIApAQCAt MTY1LDggKzE4MSwxNiBAQCBwZ19zdHJ0b2ludDE2X3NhZmUoY29uc3QgY2hhciAqcywgTm9k ZSAqZXNjb250ZXh0KQogCXsKIAkJZmlyc3RkaWdpdCA9IHB0ciArPSAyOwogCi0JCXdoaWxl ICgqcHRyICYmICgqcHRyID49ICcwJyAmJiAqcHRyIDw9ICcxJykpCisJCXdoaWxlICgqcHRy ICYmICgoKnB0ciA+PSAnMCcgJiYgKnB0ciA8PSAnMScpIHx8ICpwdHIgPT0gJ18nKSkKIAkJ eworCQkJaWYgKCpwdHIgPT0gJ18nKQorCQkJeworCQkJCWlmICh1bmxpa2VseSgqKHB0ciAt IDEpID09ICdfJykpCisJCQkJCWdvdG8gaW52YWxpZF9zeW50YXg7CisJCQkJcHRyKys7CisJ CQkJY29udGludWU7CisJCQl9CisKIAkJCWlmICh1bmxpa2VseSh0bXAgPiAtKFBHX0lOVDE2 X01JTiAvIDIpKSkKIAkJCQlnb3RvIG91dF9vZl9yYW5nZTsKIApAQCAtMTc3LDggKzIwMSwy MCBAQCBwZ19zdHJ0b2ludDE2X3NhZmUoY29uc3QgY2hhciAqcywgTm9kZSAqZXNjb250ZXh0 KQogCXsKIAkJZmlyc3RkaWdpdCA9IHB0cjsKIAotCQl3aGlsZSAoKnB0ciAmJiBpc2RpZ2l0 KCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkKKwkJd2hpbGUgKCpwdHIgJiYgKGlzZGlnaXQoKHVu c2lnbmVkIGNoYXIpICpwdHIpIHx8ICpwdHIgPT0gJ18nKSkKIAkJeworCQkJaWYgKCpwdHIg PT0gJ18nKQorCQkJeworCQkJCS8qIHVuZGVyc2NvcmUgbWF5IG5vdCBiZSBmaXJzdCAqLwor CQkJCWlmICh1bmxpa2VseShwdHIgPT0gZmlyc3RkaWdpdCkpCisJCQkJCWdvdG8gaW52YWxp ZF9zeW50YXg7CisJCQkJLyogbm90IHR3byBpbiBhIHJvdyAqLworCQkJCWlmICh1bmxpa2Vs eSgqKHB0ciAtIDEpID09ICdfJykpCisJCQkJCWdvdG8gaW52YWxpZF9zeW50YXg7CisJCQkJ cHRyKys7CisJCQkJY29udGludWU7CisJCQl9CisKIAkJCWlmICh1bmxpa2VseSh0bXAgPiAt KFBHX0lOVDE2X01JTiAvIDEwKSkpCiAJCQkJZ290byBvdXRfb2ZfcmFuZ2U7CiAKQEAgLTE5 MCw2ICsyMjYsMTAgQEAgcGdfc3RydG9pbnQxNl9zYWZlKGNvbnN0IGNoYXIgKnMsIE5vZGUg KmVzY29udGV4dCkKIAlpZiAodW5saWtlbHkocHRyID09IGZpcnN0ZGlnaXQpKQogCQlnb3Rv IGludmFsaWRfc3ludGF4OwogCisJLyogdW5kZXJzY29yZSBtYXkgbm90IGJlIGxhc3QgKi8K KwlpZiAodW5saWtlbHkoKihwdHIgLSAxKSA9PSAnXycpKQorCQlnb3RvIGludmFsaWRfc3lu dGF4OworCiAJLyogYWxsb3cgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYnV0IG5vdCBvdGhlciB0 cmFpbGluZyBjaGFycyAqLwogCXdoaWxlICgqcHRyICE9ICdcMCcgJiYgaXNzcGFjZSgodW5z aWduZWQgY2hhcikgKnB0cikpCiAJCXB0cisrOwpAQCAtMjY4LDggKzMwOCwxNiBAQCBwZ19z dHJ0b2ludDMyX3NhZmUoY29uc3QgY2hhciAqcywgTm9kZSAqZXNjb250ZXh0KQogCXsKIAkJ Zmlyc3RkaWdpdCA9IHB0ciArPSAyOwogCi0JCXdoaWxlICgqcHRyICYmIGlzeGRpZ2l0KCh1 bnNpZ25lZCBjaGFyKSAqcHRyKSkKKwkJd2hpbGUgKCpwdHIgJiYgKGlzeGRpZ2l0KCh1bnNp Z25lZCBjaGFyKSAqcHRyKSB8fCAqcHRyID09ICdfJykpCiAJCXsKKwkJCWlmICgqcHRyID09 ICdfJykKKwkJCXsKKwkJCQlpZiAodW5saWtlbHkoKihwdHIgLSAxKSA9PSAnXycpKQorCQkJ CQlnb3RvIGludmFsaWRfc3ludGF4OworCQkJCXB0cisrOworCQkJCWNvbnRpbnVlOworCQkJ fQorCiAJCQlpZiAodW5saWtlbHkodG1wID4gLShQR19JTlQzMl9NSU4gLyAxNikpKQogCQkJ CWdvdG8gb3V0X29mX3JhbmdlOwogCkBAIC0yODAsOCArMzI4LDE2IEBAIHBnX3N0cnRvaW50 MzJfc2FmZShjb25zdCBjaGFyICpzLCBOb2RlICplc2NvbnRleHQpCiAJewogCQlmaXJzdGRp Z2l0ID0gcHRyICs9IDI7CiAKLQkJd2hpbGUgKCpwdHIgJiYgKCpwdHIgPj0gJzAnICYmICpw dHIgPD0gJzcnKSkKKwkJd2hpbGUgKCpwdHIgJiYgKCgqcHRyID49ICcwJyAmJiAqcHRyIDw9 ICc3JykgfHwgKnB0ciA9PSAnXycpKQogCQl7CisJCQlpZiAoKnB0ciA9PSAnXycpCisJCQl7 CisJCQkJaWYgKHVubGlrZWx5KCoocHRyIC0gMSkgPT0gJ18nKSkKKwkJCQkJZ290byBpbnZh bGlkX3N5bnRheDsKKwkJCQlwdHIrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwogCQkJaWYg KHVubGlrZWx5KHRtcCA+IC0oUEdfSU5UMzJfTUlOIC8gOCkpKQogCQkJCWdvdG8gb3V0X29m X3JhbmdlOwogCkBAIC0yOTIsOCArMzQ4LDE2IEBAIHBnX3N0cnRvaW50MzJfc2FmZShjb25z dCBjaGFyICpzLCBOb2RlICplc2NvbnRleHQpCiAJewogCQlmaXJzdGRpZ2l0ID0gcHRyICs9 IDI7CiAKLQkJd2hpbGUgKCpwdHIgJiYgKCpwdHIgPj0gJzAnICYmICpwdHIgPD0gJzEnKSkK KwkJd2hpbGUgKCpwdHIgJiYgKCgqcHRyID49ICcwJyAmJiAqcHRyIDw9ICcxJykgfHwgKnB0 ciA9PSAnXycpKQogCQl7CisJCQlpZiAoKnB0ciA9PSAnXycpCisJCQl7CisJCQkJaWYgKHVu bGlrZWx5KCoocHRyIC0gMSkgPT0gJ18nKSkKKwkJCQkJZ290byBpbnZhbGlkX3N5bnRheDsK KwkJCQlwdHIrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwogCQkJaWYgKHVubGlrZWx5KHRt cCA+IC0oUEdfSU5UMzJfTUlOIC8gMikpKQogCQkJCWdvdG8gb3V0X29mX3JhbmdlOwogCkBA IC0zMDQsOCArMzY4LDIwIEBAIHBnX3N0cnRvaW50MzJfc2FmZShjb25zdCBjaGFyICpzLCBO b2RlICplc2NvbnRleHQpCiAJewogCQlmaXJzdGRpZ2l0ID0gcHRyOwogCi0JCXdoaWxlICgq cHRyICYmIGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpICpwdHIpKQorCQl3aGlsZSAoKnB0ciAm JiAoaXNkaWdpdCgodW5zaWduZWQgY2hhcikgKnB0cikgfHwgKnB0ciA9PSAnXycpKQogCQl7 CisJCQlpZiAoKnB0ciA9PSAnXycpCisJCQl7CisJCQkJLyogdW5kZXJzY29yZSBtYXkgbm90 IGJlIGZpcnN0ICovCisJCQkJaWYgKHVubGlrZWx5KHB0ciA9PSBmaXJzdGRpZ2l0KSkKKwkJ CQkJZ290byBpbnZhbGlkX3N5bnRheDsKKwkJCQkvKiBub3QgdHdvIGluIGEgcm93ICovCisJ CQkJaWYgKHVubGlrZWx5KCoocHRyIC0gMSkgPT0gJ18nKSkKKwkJCQkJZ290byBpbnZhbGlk X3N5bnRheDsKKwkJCQlwdHIrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwogCQkJaWYgKHVu bGlrZWx5KHRtcCA+IC0oUEdfSU5UMzJfTUlOIC8gMTApKSkKIAkJCQlnb3RvIG91dF9vZl9y YW5nZTsKIApAQCAtMzE3LDYgKzM5MywxMCBAQCBwZ19zdHJ0b2ludDMyX3NhZmUoY29uc3Qg Y2hhciAqcywgTm9kZSAqZXNjb250ZXh0KQogCWlmICh1bmxpa2VseShwdHIgPT0gZmlyc3Rk aWdpdCkpCiAJCWdvdG8gaW52YWxpZF9zeW50YXg7CiAKKwkvKiB1bmRlcnNjb3JlIG1heSBu b3QgYmUgbGFzdCAqLworCWlmICh1bmxpa2VseSgqKHB0ciAtIDEpID09ICdfJykpCisJCWdv dG8gaW52YWxpZF9zeW50YXg7CisKIAkvKiBhbGxvdyB0cmFpbGluZyB3aGl0ZXNwYWNlLCBi dXQgbm90IG90aGVyIHRyYWlsaW5nIGNoYXJzICovCiAJd2hpbGUgKCpwdHIgIT0gJ1wwJyAm JiBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkKIAkJcHRyKys7CkBAIC0zOTUsOCAr NDc1LDE2IEBAIHBnX3N0cnRvaW50NjRfc2FmZShjb25zdCBjaGFyICpzLCBOb2RlICplc2Nv bnRleHQpCiAJewogCQlmaXJzdGRpZ2l0ID0gcHRyICs9IDI7CiAKLQkJd2hpbGUgKCpwdHIg JiYgaXN4ZGlnaXQoKHVuc2lnbmVkIGNoYXIpICpwdHIpKQorCQl3aGlsZSAoKnB0ciAmJiAo aXN4ZGlnaXQoKHVuc2lnbmVkIGNoYXIpICpwdHIpIHx8ICpwdHIgPT0gJ18nKSkKIAkJewor CQkJaWYgKCpwdHIgPT0gJ18nKQorCQkJeworCQkJCWlmICh1bmxpa2VseSgqKHB0ciAtIDEp ID09ICdfJykpCisJCQkJCWdvdG8gaW52YWxpZF9zeW50YXg7CisJCQkJcHRyKys7CisJCQkJ Y29udGludWU7CisJCQl9CisKIAkJCWlmICh1bmxpa2VseSh0bXAgPiAtKFBHX0lOVDY0X01J TiAvIDE2KSkpCiAJCQkJZ290byBvdXRfb2ZfcmFuZ2U7CiAKQEAgLTQwNyw4ICs0OTUsMTYg QEAgcGdfc3RydG9pbnQ2NF9zYWZlKGNvbnN0IGNoYXIgKnMsIE5vZGUgKmVzY29udGV4dCkK IAl7CiAJCWZpcnN0ZGlnaXQgPSBwdHIgKz0gMjsKIAotCQl3aGlsZSAoKnB0ciAmJiAoKnB0 ciA+PSAnMCcgJiYgKnB0ciA8PSAnNycpKQorCQl3aGlsZSAoKnB0ciAmJiAoKCpwdHIgPj0g JzAnICYmICpwdHIgPD0gJzcnKSB8fCAqcHRyID09ICdfJykpCiAJCXsKKwkJCWlmICgqcHRy ID09ICdfJykKKwkJCXsKKwkJCQlpZiAodW5saWtlbHkoKihwdHIgLSAxKSA9PSAnXycpKQor CQkJCQlnb3RvIGludmFsaWRfc3ludGF4OworCQkJCXB0cisrOworCQkJCWNvbnRpbnVlOwor CQkJfQorCiAJCQlpZiAodW5saWtlbHkodG1wID4gLShQR19JTlQ2NF9NSU4gLyA4KSkpCiAJ CQkJZ290byBvdXRfb2ZfcmFuZ2U7CiAKQEAgLTQxOSw4ICs1MTUsMTYgQEAgcGdfc3RydG9p bnQ2NF9zYWZlKGNvbnN0IGNoYXIgKnMsIE5vZGUgKmVzY29udGV4dCkKIAl7CiAJCWZpcnN0 ZGlnaXQgPSBwdHIgKz0gMjsKIAotCQl3aGlsZSAoKnB0ciAmJiAoKnB0ciA+PSAnMCcgJiYg KnB0ciA8PSAnMScpKQorCQl3aGlsZSAoKnB0ciAmJiAoKCpwdHIgPj0gJzAnICYmICpwdHIg PD0gJzEnKSB8fCAqcHRyID09ICdfJykpCiAJCXsKKwkJCWlmICgqcHRyID09ICdfJykKKwkJ CXsKKwkJCQlpZiAodW5saWtlbHkoKihwdHIgLSAxKSA9PSAnXycpKQorCQkJCQlnb3RvIGlu dmFsaWRfc3ludGF4OworCQkJCXB0cisrOworCQkJCWNvbnRpbnVlOworCQkJfQorCiAJCQlp ZiAodW5saWtlbHkodG1wID4gLShQR19JTlQ2NF9NSU4gLyAyKSkpCiAJCQkJZ290byBvdXRf b2ZfcmFuZ2U7CiAKQEAgLTQzMSw4ICs1MzUsMjAgQEAgcGdfc3RydG9pbnQ2NF9zYWZlKGNv bnN0IGNoYXIgKnMsIE5vZGUgKmVzY29udGV4dCkKIAl7CiAJCWZpcnN0ZGlnaXQgPSBwdHI7 CiAKLQkJd2hpbGUgKCpwdHIgJiYgaXNkaWdpdCgodW5zaWduZWQgY2hhcikgKnB0cikpCisJ CXdoaWxlICgqcHRyICYmIChpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSAqcHRyKSB8fCAqcHRy ID09ICdfJykpCiAJCXsKKwkJCWlmICgqcHRyID09ICdfJykKKwkJCXsKKwkJCQkvKiB1bmRl cnNjb3JlIG1heSBub3QgYmUgZmlyc3QgKi8KKwkJCQlpZiAodW5saWtlbHkocHRyID09IGZp cnN0ZGlnaXQpKQorCQkJCQlnb3RvIGludmFsaWRfc3ludGF4OworCQkJCS8qIG5vdCB0d28g aW4gYSByb3cgKi8KKwkJCQlpZiAodW5saWtlbHkoKihwdHIgLSAxKSA9PSAnXycpKQorCQkJ CQlnb3RvIGludmFsaWRfc3ludGF4OworCQkJCXB0cisrOworCQkJCWNvbnRpbnVlOworCQkJ fQorCiAJCQlpZiAodW5saWtlbHkodG1wID4gLShQR19JTlQ2NF9NSU4gLyAxMCkpKQogCQkJ CWdvdG8gb3V0X29mX3JhbmdlOwogCkBAIC00NDQsNiArNTYwLDEwIEBAIHBnX3N0cnRvaW50 NjRfc2FmZShjb25zdCBjaGFyICpzLCBOb2RlICplc2NvbnRleHQpCiAJaWYgKHVubGlrZWx5 KHB0ciA9PSBmaXJzdGRpZ2l0KSkKIAkJZ290byBpbnZhbGlkX3N5bnRheDsKIAorCS8qIHVu ZGVyc2NvcmUgbWF5IG5vdCBiZSBsYXN0ICovCisJaWYgKHVubGlrZWx5KCoocHRyIC0gMSkg PT0gJ18nKSkKKwkJZ290byBpbnZhbGlkX3N5bnRheDsKKwogCS8qIGFsbG93IHRyYWlsaW5n IHdoaXRlc3BhY2UsIGJ1dCBub3Qgb3RoZXIgdHJhaWxpbmcgY2hhcnMgKi8KIAl3aGlsZSAo KnB0ciAhPSAnXDAnICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpICpwdHIpKQogCQlwdHIr KzsKZGlmZiAtLWdpdCBhL3NyYy9mZV91dGlscy9wc3Fsc2Nhbi5sIGIvc3JjL2ZlX3V0aWxz L3BzcWxzY2FuLmwKaW5kZXggY2IxZmM1MjEzOC4uNDRmODBlNGRiNCAxMDA2NDQKLS0tIGEv c3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwKKysrIGIvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwK QEAgLTMzMywxOSArMzMzLDE5IEBAIGhleGRpZ2l0CQlbMC05QS1GYS1mXQogb2N0ZGlnaXQJ CVswLTddCiBiaW5kaWdpdAkJWzAtMV0KIAotZGVjaW50ZWdlcgkJe2RlY2RpZ2l0fSsKLWhl eGludGVnZXIJCTBbeFhde2hleGRpZ2l0fSsKLW9jdGludGVnZXIJCTBbb09de29jdGRpZ2l0 fSsKLWJpbmludGVnZXIJCTBbYkJde2JpbmRpZ2l0fSsKK2RlY2ludGVnZXIJCXtkZWNkaWdp dH0oXz97ZGVjZGlnaXR9KSoKK2hleGludGVnZXIJCTBbeFhdKF8/e2hleGRpZ2l0fSkrCitv Y3RpbnRlZ2VyCQkwW29PXShfP3tvY3RkaWdpdH0pKworYmluaW50ZWdlcgkJMFtiQl0oXz97 YmluZGlnaXR9KSsKIAotaGV4ZmFpbAkJCTBbeFhdCi1vY3RmYWlsCQkJMFtvT10KLWJpbmZh aWwJCQkwW2JCXQoraGV4ZmFpbAkJCTBbeFhdXz8KK29jdGZhaWwJCQkwW29PXV8/CitiaW5m YWlsCQkJMFtiQl1fPwogCiBudW1lcmljCQkJKCh7ZGVjaW50ZWdlcn1cLntkZWNpbnRlZ2Vy fT8pfChcLntkZWNpbnRlZ2VyfSkpCiBudW1lcmljZmFpbAkJe2RlY2RpZ2l0fStcLlwuCiAK LXJlYWwJCQkoe2RlY2ludGVnZXJ9fHtudW1lcmljfSlbRWVdWy0rXT97ZGVjZGlnaXR9Kwor cmVhbAkJCSh7ZGVjaW50ZWdlcn18e251bWVyaWN9KVtFZV1bLStdP3tkZWNpbnRlZ2VyfQog cmVhbGZhaWwJCSh7ZGVjaW50ZWdlcn18e251bWVyaWN9KVtFZV1bLStdCiAKIGRlY2ludGVn ZXJfanVuawl7ZGVjaW50ZWdlcn17aWRlbnRfc3RhcnR9CmRpZmYgLS1naXQgYS9zcmMvaW50 ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGdjLmwgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXBy b2MvcGdjLmwKaW5kZXggMmMwOWM2Y2I0Zi4uMjc2MWFlMzRiOCAxMDA2NDQKLS0tIGEvc3Jj L2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BnYy5sCisrKyBiL3NyYy9pbnRlcmZhY2VzL2Vj cGcvcHJlcHJvYy9wZ2MubApAQCAtMzYxLDE5ICszNjEsMTkgQEAgaGV4ZGlnaXQJCVswLTlB LUZhLWZdCiBvY3RkaWdpdAkJWzAtN10KIGJpbmRpZ2l0CQlbMC0xXQogCi1kZWNpbnRlZ2Vy CQl7ZGVjZGlnaXR9KwotaGV4aW50ZWdlcgkJMFt4WF17aGV4ZGlnaXR9Kwotb2N0aW50ZWdl cgkJMFtvT117b2N0ZGlnaXR9KwotYmluaW50ZWdlcgkJMFtiQl17YmluZGlnaXR9KworZGVj aW50ZWdlcgkJe2RlY2RpZ2l0fShfP3tkZWNkaWdpdH0pKgoraGV4aW50ZWdlcgkJMFt4WF0o Xz97aGV4ZGlnaXR9KSsKK29jdGludGVnZXIJCTBbb09dKF8/e29jdGRpZ2l0fSkrCitiaW5p bnRlZ2VyCQkwW2JCXShfP3tiaW5kaWdpdH0pKwogCi1oZXhmYWlsCQkJMFt4WF0KLW9jdGZh aWwJCQkwW29PXQotYmluZmFpbAkJCTBbYkJdCitoZXhmYWlsCQkJMFt4WF1fPworb2N0ZmFp bAkJCTBbb09dXz8KK2JpbmZhaWwJCQkwW2JCXV8/CiAKIG51bWVyaWMJCQkoKHtkZWNpbnRl Z2VyfVwue2RlY2ludGVnZXJ9Pyl8KFwue2RlY2ludGVnZXJ9KSkKIG51bWVyaWNmYWlsCQl7 ZGVjZGlnaXR9K1wuXC4KIAotcmVhbAkJCSh7ZGVjaW50ZWdlcn18e251bWVyaWN9KVtFZV1b LStdP3tkZWNkaWdpdH0rCityZWFsCQkJKHtkZWNpbnRlZ2VyfXx7bnVtZXJpY30pW0VlXVst K10/e2RlY2ludGVnZXJ9CiByZWFsZmFpbAkJKHtkZWNpbnRlZ2VyfXx7bnVtZXJpY30pW0Vl XVstK10KIAogZGVjaW50ZWdlcl9qdW5rCXtkZWNpbnRlZ2VyfXtpZGVudF9zdGFydH0KZGlm ZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9leHBlY3RlZC9wbHBnc3FsX3RyYXAub3V0 IGIvc3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfdHJhcC5vdXQKaW5kZXgg OTBjZjZjMjg5NS4uNjJkMTY3OWMyOCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3Jj L2V4cGVjdGVkL3BscGdzcWxfdHJhcC5vdXQKKysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL2V4 cGVjdGVkL3BscGdzcWxfdHJhcC5vdXQKQEAgLTE0MSw3ICsxNDEsNyBAQCBiZWdpbgogICBk ZWNsYXJlIHggaW50OwogICBiZWdpbgogICAgIC0tIHdlIGFzc3VtZSB0aGlzIHdpbGwgdGFr ZSBsb25nZXIgdGhhbiAxIHNlY29uZDoKLSAgICBzZWxlY3QgY291bnQoKikgaW50byB4IGZy b20gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwMDAwMDAwMDApOworICAgIHNlbGVjdCBjb3Vu dCgqKSBpbnRvIHggZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgMV8wMDBfMDAwXzAwMF8wMDAp OwogICBleGNlcHRpb24KICAgICB3aGVuIG90aGVycyB0aGVuCiAgICAgICByYWlzZSBub3Rp Y2UgJ2NhdWdodCBvdGhlcnM/JzsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9z cWwvcGxwZ3NxbF90cmFwLnNxbCBiL3NyYy9wbC9wbHBnc3FsL3NyYy9zcWwvcGxwZ3NxbF90 cmFwLnNxbAppbmRleCBjNmMxYWQ4OTRiLi41NDU5YjM0N2U3IDEwMDY0NAotLS0gYS9zcmMv cGwvcGxwZ3NxbC9zcmMvc3FsL3BscGdzcWxfdHJhcC5zcWwKKysrIGIvc3JjL3BsL3BscGdz cWwvc3JjL3NxbC9wbHBnc3FsX3RyYXAuc3FsCkBAIC04OCw3ICs4OCw3IEBACiAgIGRlY2xh cmUgeCBpbnQ7CiAgIGJlZ2luCiAgICAgLS0gd2UgYXNzdW1lIHRoaXMgd2lsbCB0YWtlIGxv bmdlciB0aGFuIDEgc2Vjb25kOgotICAgIHNlbGVjdCBjb3VudCgqKSBpbnRvIHggZnJvbSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDAwMDAwMDAwMCk7CisgICAgc2VsZWN0IGNvdW50KCop IGludG8geCBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAxXzAwMF8wMDBfMDAwXzAwMCk7CiAg IGV4Y2VwdGlvbgogICAgIHdoZW4gb3RoZXJzIHRoZW4KICAgICAgIHJhaXNlIG5vdGljZSAn Y2F1Z2h0IG90aGVycz8nOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9pbnQyLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50Mi5vdXQKaW5kZXgg MDhjMzMzYjc1YS4uNzNiNGVlMDIzYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9pbnQyLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludDIu b3V0CkBAIC00NDAsMyArNDQwLDQ3IEBAIFNFTEVDVCBpbnQyICctMHg4MDAxJzsKIEVSUk9S OiAgdmFsdWUgIi0weDgwMDEiIGlzIG91dCBvZiByYW5nZSBmb3IgdHlwZSBzbWFsbGludAog TElORSAxOiBTRUxFQ1QgaW50MiAnLTB4ODAwMSc7CiAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIHVuZGVyc2NvcmVzCitTRUxFQ1QgaW50MiAnMV8wMDAnOworIGludDIgCistLS0tLS0K KyAxMDAwCisoMSByb3cpCisKK1NFTEVDVCBpbnQyICcxXzJfMyc7CisgaW50MiAKKy0tLS0t LQorICAxMjMKKygxIHJvdykKKworU0VMRUNUIGludDIgJzB4RV9GRic7CisgaW50MiAKKy0t LS0tLQorIDM4MzkKKygxIHJvdykKKworU0VMRUNUIGludDIgJzBvMl83Myc7CisgaW50MiAK Ky0tLS0tLQorICAxODcKKygxIHJvdykKKworU0VMRUNUIGludDIgJzBiXzEwXzAxMDEnOwor IGludDIgCistLS0tLS0KKyAgIDM3CisoMSByb3cpCisKKy0tIGVycm9yIGNhc2VzCitTRUxF Q1QgaW50MiAnXzEwMCc7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBl IHNtYWxsaW50OiAiXzEwMCIKK0xJTkUgMTogU0VMRUNUIGludDIgJ18xMDAnOworICAgICAg ICAgICAgICAgICAgICBeCitTRUxFQ1QgaW50MiAnMTAwXyc7CitFUlJPUjogIGludmFsaWQg aW5wdXQgc3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAiMTAwXyIKK0xJTkUgMTogU0VMRUNU IGludDIgJzEwMF8nOworICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgaW50MiAnMTBf XzAwMCc7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIHNtYWxsaW50 OiAiMTBfXzAwMCIKK0xJTkUgMTogU0VMRUNUIGludDIgJzEwX18wMDAnOworICAgICAgICAg ICAgICAgICAgICBeCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu dDQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQ0Lm91dAppbmRleCA4Mzg2 YzdjZGZmLi45YzIwNTc0Y2E1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2ludDQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50NC5vdXQK QEAgLTU0OCwzICs1NDgsNDcgQEAgU0VMRUNUIGludDQgJy0weDgwMDAwMDAxJzsKIEVSUk9S OiAgdmFsdWUgIi0weDgwMDAwMDAxIiBpcyBvdXQgb2YgcmFuZ2UgZm9yIHR5cGUgaW50ZWdl cgogTElORSAxOiBTRUxFQ1QgaW50NCAnLTB4ODAwMDAwMDEnOwogICAgICAgICAgICAgICAg ICAgICBeCistLSB1bmRlcnNjb3JlcworU0VMRUNUIGludDQgJzFfMDAwXzAwMCc7CisgIGlu dDQgICAKKy0tLS0tLS0tLQorIDEwMDAwMDAKKygxIHJvdykKKworU0VMRUNUIGludDQgJzFf Ml8zJzsKKyBpbnQ0IAorLS0tLS0tCisgIDEyMworKDEgcm93KQorCitTRUxFQ1QgaW50NCAn MHgxRUVFX0ZGRkYnOworICAgaW50NCAgICAKKy0tLS0tLS0tLS0tCisgNTE4OTc5NTgzCiso MSByb3cpCisKK1NFTEVDVCBpbnQ0ICcwbzJfNzMnOworIGludDQgCistLS0tLS0KKyAgMTg3 CisoMSByb3cpCisKK1NFTEVDVCBpbnQ0ICcwYl8xMF8wMTAxJzsKKyBpbnQ0IAorLS0tLS0t CisgICAzNworKDEgcm93KQorCistLSBlcnJvciBjYXNlcworU0VMRUNUIGludDQgJ18xMDAn OworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiXzEw MCIKK0xJTkUgMTogU0VMRUNUIGludDQgJ18xMDAnOworICAgICAgICAgICAgICAgICAgICBe CitTRUxFQ1QgaW50NCAnMTAwXyc7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZv ciB0eXBlIGludGVnZXI6ICIxMDBfIgorTElORSAxOiBTRUxFQ1QgaW50NCAnMTAwXyc7Cisg ICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBpbnQ0ICcxMDBfXzAwMCc7CitFUlJPUjog IGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICIxMDBfXzAwMCIKK0xJ TkUgMTogU0VMRUNUIGludDQgJzEwMF9fMDAwJzsKKyAgICAgICAgICAgICAgICAgICAgXgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQ4Lm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50OC5vdXQKaW5kZXggNWI2MmI1MWJlOS4uZDlkY2E2 NGU4OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQ4Lm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludDgub3V0CkBAIC0xMDQ0LDMgKzEw NDQsNDcgQEAgU0VMRUNUIGludDggJy0weDgwMDAwMDAwMDAwMDAwMDEnOwogRVJST1I6ICB2 YWx1ZSAiLTB4ODAwMDAwMDAwMDAwMDAwMSIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlIGJp Z2ludAogTElORSAxOiBTRUxFQ1QgaW50OCAnLTB4ODAwMDAwMDAwMDAwMDAwMSc7CiAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIHVuZGVyc2NvcmVzCitTRUxFQ1QgaW50OCAnMV8wMDBf MDAwJzsKKyAgaW50OCAgIAorLS0tLS0tLS0tCisgMTAwMDAwMAorKDEgcm93KQorCitTRUxF Q1QgaW50OCAnMV8yXzMnOworIGludDggCistLS0tLS0KKyAgMTIzCisoMSByb3cpCisKK1NF TEVDVCBpbnQ4ICcweDFFRUVfRkZGRic7CisgICBpbnQ4ICAgIAorLS0tLS0tLS0tLS0KKyA1 MTg5Nzk1ODMKKygxIHJvdykKKworU0VMRUNUIGludDggJzBvMl83Myc7CisgaW50OCAKKy0t LS0tLQorICAxODcKKygxIHJvdykKKworU0VMRUNUIGludDggJzBiXzEwXzAxMDEnOworIGlu dDggCistLS0tLS0KKyAgIDM3CisoMSByb3cpCisKKy0tIGVycm9yIGNhc2VzCitTRUxFQ1Qg aW50OCAnXzEwMCc7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGJp Z2ludDogIl8xMDAiCitMSU5FIDE6IFNFTEVDVCBpbnQ4ICdfMTAwJzsKKyAgICAgICAgICAg ICAgICAgICAgXgorU0VMRUNUIGludDggJzEwMF8nOworRVJST1I6ICBpbnZhbGlkIGlucHV0 IHN5bnRheCBmb3IgdHlwZSBiaWdpbnQ6ICIxMDBfIgorTElORSAxOiBTRUxFQ1QgaW50OCAn MTAwXyc7CisgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBpbnQ4ICcxMDBfXzAwMCc7 CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGJpZ2ludDogIjEwMF9f MDAwIgorTElORSAxOiBTRUxFQ1QgaW50OCAnMTAwX18wMDAnOworICAgICAgICAgICAgICAg ICAgICBeCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL251bWVyb2xv Z3kub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9udW1lcm9sb2d5Lm91dAppbmRl eCAxNWNkNmIxNjcyLi42YjliMDg5Y2I1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL251bWVyb2xvZ3kub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvbnVtZXJvbG9neS5vdXQKQEAgLTE2NiwxMCArMTY2LDYgQEAgU0VMRUNUIDB4MG87CiBF UlJPUjogIHRyYWlsaW5nIGp1bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIGF0IG9yIG5lYXIg IjB4MG8iCiBMSU5FIDE6IFNFTEVDVCAweDBvOwogICAgICAgICAgICAgICAgXgotU0VMRUNU IDFfMl8zOwotRVJST1I6ICB0cmFpbGluZyBqdW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJhbCBh dCBvciBuZWFyICIxXyIKLUxJTkUgMTogU0VMRUNUIDFfMl8zOwotICAgICAgICAgICAgICAg XgogU0VMRUNUIDAuYTsKIEVSUk9SOiAgdHJhaWxpbmcganVuayBhZnRlciBudW1lcmljIGxp dGVyYWwgYXQgb3IgbmVhciAiMC5hIgogTElORSAxOiBTRUxFQ1QgMC5hOwpAQCAtMjM0LDYg KzIzMCw5NCBAQCBTRUxFQ1QgMHgweTsKIEVSUk9SOiAgdHJhaWxpbmcganVuayBhZnRlciBu dW1lcmljIGxpdGVyYWwgYXQgb3IgbmVhciAiMHgweSIKIExJTkUgMTogU0VMRUNUIDB4MHk7 CiAgICAgICAgICAgICAgICBeCistLSB1bmRlcnNjb3JlcworU0VMRUNUIDFfMDAwXzAwMDsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgMTAwMDAwMAorKDEgcm93KQorCitTRUxFQ1Qg MV8yXzM7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgICAxMjMKKygxIHJvdykKKwor U0VMRUNUIDB4MUVFRV9GRkZGOworID9jb2x1bW4/ICAKKy0tLS0tLS0tLS0tCisgNTE4OTc5 NTgzCisoMSByb3cpCisKK1NFTEVDVCAwbzJfNzM7CisgP2NvbHVtbj8gCistLS0tLS0tLS0t CisgICAgICAxODcKKygxIHJvdykKKworU0VMRUNUIDBiXzEwXzAxMDE7CisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgICAgICAgMzcKKygxIHJvdykKKworU0VMRUNUIDFfMDAwLjAwMF8w MDU7CisgID9jb2x1bW4/ICAgCistLS0tLS0tLS0tLS0tCisgMTAwMC4wMDAwMDUKKygxIHJv dykKKworU0VMRUNUIDFfMDAwLjsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgMTAw MAorKDEgcm93KQorCitTRUxFQ1QgLjAwMF8wMDU7CisgP2NvbHVtbj8gCistLS0tLS0tLS0t CisgMC4wMDAwMDUKKygxIHJvdykKKworU0VMRUNUIDFfMDAwLjVlMF8xOworID9jb2x1bW4/ IAorLS0tLS0tLS0tLQorICAgIDEwMDA1CisoMSByb3cpCisKKy0tIGVycm9yIGNhc2VzCitT RUxFQ1QgXzEwMDsKK0VSUk9SOiAgY29sdW1uICJfMTAwIiBkb2VzIG5vdCBleGlzdAorTElO RSAxOiBTRUxFQ1QgXzEwMDsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCAxMDBfOworRVJS T1I6ICB0cmFpbGluZyBqdW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJhbCBhdCBvciBuZWFyICIx MDBfIgorTElORSAxOiBTRUxFQ1QgMTAwXzsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCAx MDBfXzAwMDsKK0VSUk9SOiAgdHJhaWxpbmcganVuayBhZnRlciBudW1lcmljIGxpdGVyYWwg YXQgb3IgbmVhciAiMTAwXyIKK0xJTkUgMTogU0VMRUNUIDEwMF9fMDAwOworICAgICAgICAg ICAgICAgXgorU0VMRUNUIF8xXzAwMC41OworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3Ig bmVhciAiLjUiCitMSU5FIDE6IFNFTEVDVCBfMV8wMDAuNTsKKyAgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCAxXzAwMF8uNTsKK0VSUk9SOiAgdHJhaWxpbmcganVuayBhZnRlciBu dW1lcmljIGxpdGVyYWwgYXQgb3IgbmVhciAiMV8wMDBfIgorTElORSAxOiBTRUxFQ1QgMV8w MDBfLjU7CisgICAgICAgICAgICAgICBeCitTRUxFQ1QgMV8wMDAuXzU7CitFUlJPUjogIHRy YWlsaW5nIGp1bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIGF0IG9yIG5lYXIgIjFfMDAwLl8i CitMSU5FIDE6IFNFTEVDVCAxXzAwMC5fNTsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCAx XzAwMC41XzsKK0VSUk9SOiAgdHJhaWxpbmcganVuayBhZnRlciBudW1lcmljIGxpdGVyYWwg YXQgb3IgbmVhciAiMV8wMDAuNV8iCitMSU5FIDE6IFNFTEVDVCAxXzAwMC41XzsKKyAgICAg ICAgICAgICAgIF4KK1NFTEVDVCAxXzAwMC41ZV8xOworRVJST1I6ICB0cmFpbGluZyBqdW5r IGFmdGVyIG51bWVyaWMgbGl0ZXJhbCBhdCBvciBuZWFyICIxXzAwMC41ZSIKK0xJTkUgMTog U0VMRUNUIDFfMDAwLjVlXzE7CisgICAgICAgICAgICAgICBeCiAtLQogLS0gVGVzdCBpbXBs aWNpdCB0eXBlIGNvbnZlcnNpb25zCiAtLSBUaGlzIGZhaWxzIGZvciBQb3N0Z3JlcyB2Ni4x IChhbmQgZWFybGllcj8pCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9wcnVuZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9wcnVuZS5vdXQKaW5kZXggNzU1NTc2NGM3Ny4uZDcwMGMwMDYyOSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dApAQCAtMTUw Myw3ICsxNTAzLDcgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxpa2Vf b3Bfbm9wcnVuZSB3aGVyZSBhIGxpa2UgJyVCQyc7CiBjcmVhdGUgdGFibGUgbHBhcnRlZF9i eV9pbnQyIChhIHNtYWxsaW50KSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CiBjcmVhdGUgdGFi bGUgbHBhcnRlZF9ieV9pbnQyXzEgcGFydGl0aW9uIG9mIGxwYXJ0ZWRfYnlfaW50MiBmb3Ig dmFsdWVzIGluICgxKTsKIGNyZWF0ZSB0YWJsZSBscGFydGVkX2J5X2ludDJfMTYzODQgcGFy dGl0aW9uIG9mIGxwYXJ0ZWRfYnlfaW50MiBmb3IgdmFsdWVzIGluICgxNjM4NCk7Ci1leHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHBhcnRlZF9ieV9pbnQyIHdoZXJlIGEg PSAxMDAwMDAwMDAwMDAwMDA7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20g bHBhcnRlZF9ieV9pbnQyIHdoZXJlIGEgPSAxMDBfMDAwXzAwMF8wMDBfMDAwOwogICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgUmVz dWx0CkBAIC0xNTE0LDcgKzE1MTQsNyBAQCBjcmVhdGUgdGFibGUgcnBhcnRlZF9ieV9pbnQy IChhIHNtYWxsaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEpOwogY3JlYXRlIHRhYmxlIHJw YXJ0ZWRfYnlfaW50Ml8xIHBhcnRpdGlvbiBvZiBycGFydGVkX2J5X2ludDIgZm9yIHZhbHVl cyBmcm9tICgxKSB0byAoMTApOwogY3JlYXRlIHRhYmxlIHJwYXJ0ZWRfYnlfaW50Ml8xNjM4 NCBwYXJ0aXRpb24gb2YgcnBhcnRlZF9ieV9pbnQyIGZvciB2YWx1ZXMgZnJvbSAoMTApIHRv ICgxNjM4NCk7CiAtLSBhbGwgcGFydGl0aW9ucyBwcnVuZWQKLWV4cGxhaW4gKGNvc3RzIG9m Zikgc2VsZWN0ICogZnJvbSBycGFydGVkX2J5X2ludDIgd2hlcmUgYSA+IDEwMDAwMDAwMDAw MDAwMDsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBycGFydGVkX2J5X2lu dDIgd2hlcmUgYSA+IDEwMF8wMDBfMDAwXzAwMF8wMDA7CiAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBSZXN1bHQKQEAgLTE1MjMs NyArMTUyMyw3IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBycGFydGVk X2J5X2ludDIgd2hlcmUgYSA+IDEwMDAwMDAwMDAwMDAwMDsKIAogY3JlYXRlIHRhYmxlIHJw YXJ0ZWRfYnlfaW50Ml9tYXh2YWx1ZSBwYXJ0aXRpb24gb2YgcnBhcnRlZF9ieV9pbnQyIGZv ciB2YWx1ZXMgZnJvbSAoMTYzODQpIHRvIChtYXh2YWx1ZSk7CiAtLSBhbGwgcGFydGl0aW9u cyBidXQgcnBhcnRlZF9ieV9pbnQyX21heHZhbHVlIHBydW5lZAotZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIHJwYXJ0ZWRfYnlfaW50MiB3aGVyZSBhID4gMTAwMDAwMDAw MDAwMDAwOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJwYXJ0ZWRfYnlf aW50MiB3aGVyZSBhID4gMTAwXzAwMF8wMDBfMDAwXzAwMDsKICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24g cnBhcnRlZF9ieV9pbnQyX21heHZhbHVlIHJwYXJ0ZWRfYnlfaW50MgpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvaW50Mi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9p bnQyLnNxbAppbmRleCBhODEyMjM1ZWU1Li5jZThhYzk3OTYzIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9pbnQyLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9p bnQyLnNxbApAQCAtMTQxLDMgKzE0MSwxNyBAQAogU0VMRUNUIGludDIgJy0wbzEwMDAwMSc7 CiBTRUxFQ1QgaW50MiAnLTB4ODAwMCc7CiBTRUxFQ1QgaW50MiAnLTB4ODAwMSc7CisKKwor LS0gdW5kZXJzY29yZXMKKworU0VMRUNUIGludDIgJzFfMDAwJzsKK1NFTEVDVCBpbnQyICcx XzJfMyc7CitTRUxFQ1QgaW50MiAnMHhFX0ZGJzsKK1NFTEVDVCBpbnQyICcwbzJfNzMnOwor U0VMRUNUIGludDIgJzBiXzEwXzAxMDEnOworCistLSBlcnJvciBjYXNlcworU0VMRUNUIGlu dDIgJ18xMDAnOworU0VMRUNUIGludDIgJzEwMF8nOworU0VMRUNUIGludDIgJzEwX18wMDAn OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW50NC5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9pbnQ0LnNxbAppbmRleCA5ZTZhNDA0MDhhLi4xNDY5NjNlZGZiIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnQ0LnNxbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9pbnQ0LnNxbApAQCAtMTk2LDMgKzE5NiwxNyBAQAogU0VMRUNUIGlu dDQgJy0wbzIwMDAwMDAwMDAxJzsKIFNFTEVDVCBpbnQ0ICctMHg4MDAwMDAwMCc7CiBTRUxF Q1QgaW50NCAnLTB4ODAwMDAwMDEnOworCisKKy0tIHVuZGVyc2NvcmVzCisKK1NFTEVDVCBp bnQ0ICcxXzAwMF8wMDAnOworU0VMRUNUIGludDQgJzFfMl8zJzsKK1NFTEVDVCBpbnQ0ICcw eDFFRUVfRkZGRic7CitTRUxFQ1QgaW50NCAnMG8yXzczJzsKK1NFTEVDVCBpbnQ0ICcwYl8x MF8wMTAxJzsKKworLS0gZXJyb3IgY2FzZXMKK1NFTEVDVCBpbnQ0ICdfMTAwJzsKK1NFTEVD VCBpbnQ0ICcxMDBfJzsKK1NFTEVDVCBpbnQ0ICcxMDBfXzAwMCc7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9pbnQ4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2lu dDguc3FsCmluZGV4IDA2ZjI3M2VkNTguLmM4NTcxN2MwNzIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2ludDguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2lu dDguc3FsCkBAIC0yNzcsMyArMjc3LDE3IEBACiBTRUxFQ1QgaW50OCAnLTBvMTAwMDAwMDAw MDAwMDAwMDAwMDAwMSc7CiBTRUxFQ1QgaW50OCAnLTB4ODAwMDAwMDAwMDAwMDAwMCc7CiBT RUxFQ1QgaW50OCAnLTB4ODAwMDAwMDAwMDAwMDAwMSc7CisKKworLS0gdW5kZXJzY29yZXMK KworU0VMRUNUIGludDggJzFfMDAwXzAwMCc7CitTRUxFQ1QgaW50OCAnMV8yXzMnOworU0VM RUNUIGludDggJzB4MUVFRV9GRkZGJzsKK1NFTEVDVCBpbnQ4ICcwbzJfNzMnOworU0VMRUNU IGludDggJzBiXzEwXzAxMDEnOworCistLSBlcnJvciBjYXNlcworU0VMRUNUIGludDggJ18x MDAnOworU0VMRUNUIGludDggJzEwMF8nOworU0VMRUNUIGludDggJzEwMF9fMDAwJzsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL251bWVyb2xvZ3kuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvbnVtZXJvbG9neS5zcWwKaW5kZXggMzEwZDllNTc2Ni4uMTk0MWM1 OGU2OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbnVtZXJvbG9neS5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbnVtZXJvbG9neS5zcWwKQEAgLTQ1LDcgKzQ1 LDYgQEAKIC0tIGVycm9yIGNhc2VzCiBTRUxFQ1QgMTIzYWJjOwogU0VMRUNUIDB4MG87Ci1T RUxFQ1QgMV8yXzM7CiBTRUxFQ1QgMC5hOwogU0VMRUNUIDAuMGE7CiBTRUxFQ1QgLjBhOwpA QCAtNjYsNiArNjUsMjkgQEAKIFNFTEVDVCAxeDsKIFNFTEVDVCAweDB5OwogCistLSB1bmRl cnNjb3JlcworU0VMRUNUIDFfMDAwXzAwMDsKK1NFTEVDVCAxXzJfMzsKK1NFTEVDVCAweDFF RUVfRkZGRjsKK1NFTEVDVCAwbzJfNzM7CitTRUxFQ1QgMGJfMTBfMDEwMTsKKworU0VMRUNU IDFfMDAwLjAwMF8wMDU7CitTRUxFQ1QgMV8wMDAuOworU0VMRUNUIC4wMDBfMDA1OworU0VM RUNUIDFfMDAwLjVlMF8xOworCistLSBlcnJvciBjYXNlcworU0VMRUNUIF8xMDA7CitTRUxF Q1QgMTAwXzsKK1NFTEVDVCAxMDBfXzAwMDsKKworU0VMRUNUIF8xXzAwMC41OworU0VMRUNU IDFfMDAwXy41OworU0VMRUNUIDFfMDAwLl81OworU0VMRUNUIDFfMDAwLjVfOworU0VMRUNU IDFfMDAwLjVlXzE7CisKIAogLS0KIC0tIFRlc3QgaW1wbGljaXQgdHlwZSBjb252ZXJzaW9u cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKaW5kZXggZDcw YmQ4NjEwYy4uZmIwNTgzZjkyNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cGFydGl0aW9uX3BydW5lLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fcHJ1bmUuc3FsCkBAIC0yODMsMTYgKzI4MywxNiBAQCBDUkVBVEUgVEFCTEUgcGFydF9y ZXYgKGIgSU5ULCBjIElOVCwgYSBJTlQpOwogY3JlYXRlIHRhYmxlIGxwYXJ0ZWRfYnlfaW50 MiAoYSBzbWFsbGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOwogY3JlYXRlIHRhYmxlIGxw YXJ0ZWRfYnlfaW50Ml8xIHBhcnRpdGlvbiBvZiBscGFydGVkX2J5X2ludDIgZm9yIHZhbHVl cyBpbiAoMSk7CiBjcmVhdGUgdGFibGUgbHBhcnRlZF9ieV9pbnQyXzE2Mzg0IHBhcnRpdGlv biBvZiBscGFydGVkX2J5X2ludDIgZm9yIHZhbHVlcyBpbiAoMTYzODQpOwotZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwYXJ0ZWRfYnlfaW50MiB3aGVyZSBhID0gMTAw MDAwMDAwMDAwMDAwOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwYXJ0 ZWRfYnlfaW50MiB3aGVyZSBhID0gMTAwXzAwMF8wMDBfMDAwXzAwMDsKIAogY3JlYXRlIHRh YmxlIHJwYXJ0ZWRfYnlfaW50MiAoYSBzbWFsbGludCkgcGFydGl0aW9uIGJ5IHJhbmdlIChh KTsKIGNyZWF0ZSB0YWJsZSBycGFydGVkX2J5X2ludDJfMSBwYXJ0aXRpb24gb2YgcnBhcnRl ZF9ieV9pbnQyIGZvciB2YWx1ZXMgZnJvbSAoMSkgdG8gKDEwKTsKIGNyZWF0ZSB0YWJsZSBy cGFydGVkX2J5X2ludDJfMTYzODQgcGFydGl0aW9uIG9mIHJwYXJ0ZWRfYnlfaW50MiBmb3Ig dmFsdWVzIGZyb20gKDEwKSB0byAoMTYzODQpOwogLS0gYWxsIHBhcnRpdGlvbnMgcHJ1bmVk Ci1leHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcnBhcnRlZF9ieV9pbnQyIHdo ZXJlIGEgPiAxMDAwMDAwMDAwMDAwMDA7CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAq IGZyb20gcnBhcnRlZF9ieV9pbnQyIHdoZXJlIGEgPiAxMDBfMDAwXzAwMF8wMDBfMDAwOwog Y3JlYXRlIHRhYmxlIHJwYXJ0ZWRfYnlfaW50Ml9tYXh2YWx1ZSBwYXJ0aXRpb24gb2YgcnBh cnRlZF9ieV9pbnQyIGZvciB2YWx1ZXMgZnJvbSAoMTYzODQpIHRvIChtYXh2YWx1ZSk7CiAt LSBhbGwgcGFydGl0aW9ucyBidXQgcnBhcnRlZF9ieV9pbnQyX21heHZhbHVlIHBydW5lZAot ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJwYXJ0ZWRfYnlfaW50MiB3aGVy ZSBhID4gMTAwMDAwMDAwMDAwMDAwOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIHJwYXJ0ZWRfYnlfaW50MiB3aGVyZSBhID4gMTAwXzAwMF8wMDBfMDAwXzAwMDsKIAog ZHJvcCB0YWJsZSBscCwgY29sbF9wcnVuaW5nLCBybHAsIG1jM3AsIG1jMnAsIGJvb2xwYXJ0 LCBib29scmFuZ2VwLCBycCwgY29sbF9wcnVuaW5nX211bHRpLCBsaWtlX29wX25vcHJ1bmUs IGxwYXJ0ZWRfYnlfaW50MiwgcnBhcnRlZF9ieV9pbnQyOwogCgpiYXNlLWNvbW1pdDogNjNj ODQ0YTBhNWQ3MGNkYmQ2YWUwNDcwZDU4MmQzOWU3NWFkOGQ2NgotLSAKMi4zOS4wCgo= --------------sP5ji7X0EEQM66LJQrCSDPeu--