Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r5OyO-00DMMo-2X for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Nov 2023 11:31:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1r5OyM-00G9S1-1J for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Nov 2023 11:31:18 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r5OyL-00G9Rt-Fl for pgsql-hackers@lists.postgresql.org; Tue, 21 Nov 2023 11:31:17 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r5OyH-007awo-VG for pgsql-hackers@postgresql.org; Tue, 21 Nov 2023 11:31:16 +0000 Received: from [10.4.15.19] (unknown [93.174.131.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.rybakina@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 05722E20E71; Tue, 21 Nov 2023 14:31:12 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1700566272; bh=UDFEfy/yDjDKVot1O8Je0l2yZBdhhSxBgN75T9mHTDE=; h=Message-ID:Date:User-Agent:Subject:From:To:Cc:References: In-Reply-To:From; b=0VyNzZloRQTw9maLHHWAkiI74+kPkPAWetxNWY5Y0UDK8OV9lq1b/MuDX4U6tLtNb hU5/hQ3Pn5zGcM5LSSjYqeDbrSyIwetyrmbjhY1cV7MjLvuYzh6hnivv1UCumk46HQ b91y77Dnw1i0sCdy5aTx4bcQJBv6k/1uGkUChU3aLzcsDA8pBHblCJWa8jPknmsTpy Vf19mtIH9779csUwWxK1ZIqM2O8n0p7sGON2o/eUlULWr6Cr6FVh8tqdFSUm53+KF1 dMioxYuGvIRU+mvREgwE0jkbtJ99nlveTEtAyYlHhEgyZLuPb8Ml6vRB9WoPpWiZJx FgEVNG7hHLsKw== Content-Type: multipart/mixed; boundary="------------frATmkILHQbyv0cafvOwqTUX" Message-ID: <52f0d302-7963-452f-8c5a-f66d261514eb@postgrespro.ru> Date: Tue, 21 Nov 2023 14:31:11 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC, WIP: OR-clause support for indexes Content-Language: en-US From: Alena Rybakina To: Andrei Lepikhov , pgsql-hackers@postgresql.org Cc: Peter Geoghegan , Robert Haas , "Finnerty, Jim" , Marcos Pegoraro , teodor@sigaev.ru, Ranier Vilela , Tomas Vondra , Peter Eisentraut , Alexander Korotkov References: <567ED6CA.2040504@sigaev.ru> <89fb769c-7d45-f0c5-a9b3-b706c9661c57@postgrespro.ru> <668892c1-fb11-3a79-ce5e-1c194b7b3263@postgrespro.ru> <16a7e3aa-24c0-4986-8820-ea2857bd7b6b@postgrespro.ru> <421656a9-5df7-41bb-9d58-1c1edbd5dc3e@postgrespro.ru> <28c727ba-5260-42a8-88b0-4ecdeeca6ef8@postgrespro.ru> <4c1c2c0b-802f-45ae-a7cd-007bfd8957cf@postgrespro.ru> In-Reply-To: <4c1c2c0b-802f-45ae-a7cd-007bfd8957cf@postgrespro.ru> 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. --------------frATmkILHQbyv0cafvOwqTUX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 21.11.2023 03:50, Alena Rybakina wrote: > On 20.11.2023 11:52, Andrei Lepikhov wrote: >> Looking into the patch, I found some trivial improvements (see >> attachment). >> Also, it is not obvious that using a string representation of the >> clause as a hash table key is needed here. Also, by making a copy of >> the node in the get_key_nconst_node(), you replace the location >> field, but in the case of complex expression, you don't do the same >> with other nodes. >> I propose to generate expression hash instead + prove the equality of >> two expressions by calling equal(). >> > I was thinking about your last email and a possible error where the > location field may not be cleared in complex expressions. > Unfortunately, I didn't come up with any examples either, but I think > I was able to handle this with a special function that removes > location-related patterns. The alternative to this is to bypass this > expression, but I think it will be more invasive. In addition, I have > added changes related to the hash table: now the key is of type int. > > All changes are displayed in the attached > v9-0001-Replace-OR-clause-to_ANY.diff.txt file. > > I haven't measured it yet. But what do you think about these changes? > > Sorry, I lost your changesĀ  during the revision process. I returned them. I raised the patch version just in case to run ci successfully. -- Regards, Alena Rybakina Postgres Professional --------------frATmkILHQbyv0cafvOwqTUX Content-Type: text/x-patch; charset=UTF-8; name="v10-0001-PATCH-Replace-OR-clause-to-ANY-expressions.-Replace-.patch" Content-Disposition: attachment; filename*0="v10-0001-PATCH-Replace-OR-clause-to-ANY-expressions.-Replace"; filename*1="-.patch" Content-Transfer-Encoding: base64 RnJvbSA2NmQxYzQ3OTM0N2Q4MGVhNDVmYzdhZWJhZWQ4NzNkNDVmOWM0MzUxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogVHVlLCAyMSBOb3YgMjAyMyAxNDoyMDo1NiArMDMwMApTdWJq ZWN0OiBbUEFUQ0hdIFtQQVRDSF0gUmVwbGFjZSBPUiBjbGF1c2UgdG8gQU5ZIGV4cHJlc3Np b25zLiBSZXBsYWNlIChYPU4xKQogT1IgKFg9TjIpIC4uLiB3aXRoIFggPSBBTlkoTjEsIE4y KSBvbiB0aGUgc3RhZ2Ugb2YgdGhlIG9wdGltaXNlciB3aGVuIHdlIGFyZQogc3RpbGwgd29y a2luZyB3aXRoIGEgdHJlZSBleHByZXNzaW9uLiBGaXJzdGx5LCB3ZSBkbyBub3QgdHJ5IHRv IG1ha2UgYQogdHJhbnNmb3JtYXRpb24gZm9yICJub24tb3IiIGV4cHJlc3Npb25zIG9yIGlu ZXF1YWxpdGllcyBhbmQgdGhlIGNyZWF0aW9uIG9mIGEKIHJlbGF0aW9uIHdpdGggIm9yIiBl eHByZXNzaW9ucyBvY2N1cnMgYWNjb3JkaW5nIHRvIHRoZSBzYW1lIHNjZW5hcmlvLgogU2Vj b25kbHksIHdlIGRvIG5vdCBtYWtlIHRyYW5zZm9ybWF0aW9ucyBpZiB0aGVyZSBhcmUgbGVz cyB0aGFuIHNldAogb3JfdHJhbnNmb3JtX2xpbWl0LiBUaGlyZGx5LCBpdCBpcyB3b3J0aCBj b25zaWRlcmluZyB0aGF0IHdlIGNvbnNpZGVyICJvciIKIGV4cHJlc3Npb25zIG9ubHkgYXQg dGhlIGN1cnJlbnQgbGV2ZWwuCgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHBy LmMgICAgICAgICAgICAgICB8IDI4MCArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAxMCArCiBzcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2VfZXhwci5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0ICAgIHwgMTE1ICsrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dCAgICAgICAgICAgICB8ICAgMyArLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dCAgICAgICAgICAgIHwgIDUwICsr KysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCB8IDE1 NiArKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCAg ICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQg ICAgICAgICB8ICAxNyArKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNx bCAgICAgICAgIHwgIDMyICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbCAgICAg ICAgICAgICAgICAgfCAgMTAgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3By dW5lLnNxbCAgICAgIHwgIDIyICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC90aWRzY2FuLnNx bCAgICAgICAgICAgICAgfCAgIDYgKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgICAgICAgICAgICAgIHwgICAxICsKIDE0IGZpbGVzIGNoYW5nZWQsIDcwMyBpbnNlcnRp b25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4 IDY0YzU4MmMzNDRjLi43Yjc2YzlmMjlhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j CkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKKyNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv ZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVz L21ha2VmdW5jcy5oIgpAQCAtNDMsNiArNDQsNyBAQAogCiAvKiBHVUMgcGFyYW1ldGVycyAq LwogYm9vbAkJVHJhbnNmb3JtX251bGxfZXF1YWxzID0gZmFsc2U7Citib29sCQllbmFibGVf b3JfdHJhbnNmb3JtYXRpb24gPSBmYWxzZTsKIAogCiBzdGF0aWMgTm9kZSAqdHJhbnNmb3Jt RXhwclJlY3Vyc2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKTsKQEAgLTk4LDcg KzEwMCwyODMgQEAgc3RhdGljIEV4cHIgKm1ha2VfZGlzdGluY3Rfb3AoUGFyc2VTdGF0ZSAq cHN0YXRlLCBMaXN0ICpvcG5hbWUsCiAJCQkJCQkJICBOb2RlICpsdHJlZSwgTm9kZSAqcnRy ZWUsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZV9udWxsdGVzdF9mcm9tX2Rp c3RpbmN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgQV9FeHByICpkaXN0aW5j dGEsIE5vZGUgKmFyZyk7Cit0eXBlZGVmIHN0cnVjdCBPckNsYXVzZUdyb3VwRW50cnkKK3sK KwlpbnQzMgkJCWhhc2hfbGVmdHZhcl9rZXk7CisKKwlOb2RlCQkgICAqbm9kZTsKKwlMaXN0 CQkgICAqY29uc3RzOworCU9pZAkJCQlzY2FsYXJfdHlwZTsKKwlPaWQJCQkJb3BubzsKKwlO b2RlIAkJICAgKmV4cHI7Cit9IE9yQ2xhdXNlR3JvdXBFbnRyeTsKKworLyoKKyAqIFRPRE86 IGNvbnNpZGVyIGRpZmZlcmVudCBhbGdvcml0aG0gdG8gbWFuYWdlIGNvbXBsZXhpdHkKKyAq IGluIHRoZSBjYXNlIG9mIG1hbnkgZGlmZmVyZW50IGNsYXVzZXMsCisgKiBsaWtlIFJhYmlu LUthcnAgb3IgQm95ZXLigJNNb29yZSBhbGdvcml0aG1zLgorICovCitzdGF0aWMgY2hhciAq CitjbGVhcl9wYXR0ZXJucyhjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnN0YXJ0X3Bh dHRlcm4pCit7CisJaW50CQkJaSA9IDA7CisJaW50CQkJaiA9IDA7CisJaW50CQkJc3RhcnRf cGF0dGVybl9sZW4gPSBzdHJsZW4oc3RhcnRfcGF0dGVybik7CisJY2hhcgkgICAqcmVzID0g cGFsbG9jMChzaXplb2YoKnJlcykgKiAoc3RybGVuKHN0cikgKyAxKSk7CisKKwlmb3IgKGkg PSAwOyBzdHJbaV07KQorCXsKKwkJaWYgKGkgPj0gc3RhcnRfcGF0dGVybl9sZW4gJiYgc3Ry bmNtcCgmc3RyW2kgLSBzdGFydF9wYXR0ZXJuX2xlbl0sCisJCQkJCQkJCQkJCSAgc3RhcnRf cGF0dGVybiwKKwkJCQkJCQkJCQkJICBzdGFydF9wYXR0ZXJuX2xlbikgPT0gMCkKKwkJewor CQkJd2hpbGUgKHN0cltpXSAmJiAhKHN0cltpXSA9PSAneycgfHwgc3RyW2ldID09ICd9Jykp CisJCQkJaSsrOworCQl9CisJCWlmIChzdHJbaV0pCisJCQlyZXNbaisrXSA9IHN0cltpKytd OworCX0KKworCXJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbnQzMgorZ2V0X2tleV9uY29u c3Rfbm9kZShOb2RlICpuY29uc3Rfbm9kZSkKK3sKKwljaGFyICpzdHIgPSBub2RlVG9TdHJp bmcobmNvbnN0X25vZGUpOworCisJc3RyID0gY2xlYXJfcGF0dGVybnMoc3RyLCAiIDpsb2Nh dGlvbiIpOworCisJaWYgKHN0ciA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBE YXR1bUdldEludDMyKGhhc2hfYW55KCh1bnNpZ25lZCBjaGFyICopc3RyLCBzdHJsZW4oc3Ry KSkpOworfQorCitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1Cb29sRXhwck9yKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQm9vbEV4cHIgKmV4cHJfb3JpZykKK3sKKwlMaXN0CQkgICAqb3JfbGlz dCA9IE5JTDsKKwlMaXN0Q2VsbAkgICAqbGM7CisJSEFTSENUTAkJCWluZm87CisJSFRBQiAJ CSAgICpvcl9ncm91cF9odGFiID0gTlVMTDsKKwlpbnQgCQkJbGVuX29ycyA9IGxpc3RfbGVu Z3RoKGV4cHJfb3JpZy0+YXJncyk7CisKKwkvKiBJZiB0aGlzIGlzIG5vdCBhbiAnT1InIGV4 cHJlc3Npb24sIHNraXAgdGhlIHRyYW5zZm9ybWF0aW9uICovCisJaWYgKGV4cHJfb3JpZy0+ Ym9vbG9wICE9IE9SX0VYUFIgfHwgIWVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiB8fCBsZW5f b3JzID09IDEgfHwgIW9yX2dyb3VwX2h0YWIpCisJCXJldHVybiB0cmFuc2Zvcm1Cb29sRXhw cihwc3RhdGUsIChCb29sRXhwciAqKSBleHByX29yaWcpOworCisJTWVtU2V0KCZpbmZvLCAw LCBzaXplb2YoaW5mbykpOworCWluZm8ua2V5c2l6ZSA9IHNpemVvZihpbnQpOworCWluZm8u ZW50cnlzaXplID0gc2l6ZW9mKE9yQ2xhdXNlR3JvdXBFbnRyeSk7CisJb3JfZ3JvdXBfaHRh YiA9IGhhc2hfY3JlYXRlKCJPUiBHcm91cHMiLAorCQkJCQkJCQkJICBsZW5fb3JzLAorCQkJ CQkJCQkJICAmaW5mbywKKwkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhB U0hfQ09OVEVYVCk7CisKKwlmb3JlYWNoKGxjLCBleHByX29yaWctPmFyZ3MpCisJeworCQlO b2RlCQkJICAgKmFyZyA9IGxmaXJzdChsYyk7CisJCU5vZGUJCQkgICAqb3JxdWFsID0gTlVM TDsKKwkJTm9kZQkJCSAgICpjb25zdF9leHByID0gTlVMTDsKKwkJTm9kZQkJCSAgICpuY29u c3RfZXhwciA9IE5VTEw7CisJCU9yQ2xhdXNlR3JvdXBFbnRyeSAqZ2VudHJ5ID0gTlVMTDsK KwkJYm9vbAkJCQlmb3VuZDsKKwkJaW50MzIJCQkJaGFzaDsKKworCQkvKiBBdCBmaXJzdCwg dHJhbnNmb3JtIHRoZSBhcmcgYW5kIGV2YWx1YXRlIGNvbnN0YW50IGV4cHJlc3Npb25zLiAq LworCQlvcnF1YWwgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIChOb2RlICopIGFy Zyk7CisJCW9ycXVhbCA9IGNvZXJjZV90b19ib29sZWFuKHBzdGF0ZSwgb3JxdWFsLCAiT1Ii KTsKKwkJb3JxdWFsID0gZXZhbF9jb25zdF9leHByZXNzaW9ucyhOVUxMLCBvcnF1YWwpOwor CisJCWlmICghSXNBKG9ycXVhbCwgT3BFeHByKSkKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBl bmQob3JfbGlzdCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CiAKKwkJLyoKKwkJICog RGV0ZWN0IHRoZSBjb25zdGFudCBzaWRlIG9mIHRoZSBjbGF1c2UuIFJlY2FsbCBub24tY29u c3RhbnQKKwkJICogZXhwcmVzc2lvbiBjYW4gYmUgbWFkZSBub3Qgb25seSB3aXRoIFZhcnMs IGJ1dCBhbHNvIHdpdGggUGFyYW1zLAorCQkgKiB3aGljaCBpcyBub3QgYm9uZGVkIHdpdGgg YW55IHJlbGF0aW9uLiBUaHVzLCB3ZSBkZXRlY3QgdGhlIGNvbnN0CisJCSAqIHNpZGUgLSBp ZiBhbm90aGVyIHNpZGUgaXMgY29uc3RhbnQgdG9vLCB0aGUgb3JxdWFsIGNvdWxkbid0IGJl CisJCSAqIGFuIE9wRXhwci4KKwkJICogR2V0IHBvaW50ZXJzIHRvIGNvbnN0YW50IGFuZCBl eHByZXNzaW9uIHNpZGVzIG9mIHRoZSBxdWFsLgorCQkgKi8KKwkJaWYgKElzQShnZXRfbGVm dG9wKG9ycXVhbCksIENvbnN0KSkKKwkJeworCQkJbmNvbnN0X2V4cHIgPSBnZXRfcmlnaHRv cChvcnF1YWwpOworCQkJY29uc3RfZXhwciA9IGdldF9sZWZ0b3Aob3JxdWFsKTsKKwkJfQor CQllbHNlIGlmIChJc0EoZ2V0X3JpZ2h0b3Aob3JxdWFsKSwgQ29uc3QpKQorCQl7CisJCQlj b25zdF9leHByID0gZ2V0X3JpZ2h0b3Aob3JxdWFsKTsKKwkJCW5jb25zdF9leHByID0gZ2V0 X2xlZnRvcChvcnF1YWwpOworCQl9CisJCWVsc2UKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBl bmQob3JfbGlzdCwgb3JxdWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaGFzaCA9IGdl dF9rZXlfbmNvbnN0X25vZGUobmNvbnN0X2V4cHIpOworCisJCWlmICghb3BfbWVyZ2Vqb2lu YWJsZSgoKE9wRXhwciAqKSBvcnF1YWwpLT5vcG5vLCBleHByVHlwZShuY29uc3RfZXhwcikp IHx8IGhhc2ggPT0gMCkKKwkJeworCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwgb3Jx dWFsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJKiBBdCB0aGlzIHBvaW50IHdl IGRlZmluaXRlbHkgaGF2ZSBhIHRyYW5zZm9ybWFibGUgY2xhdXNlLgorCQkqIENsYXNzaWZ5 IGl0IGFuZCBhZGQgaW50byBzcGVjaWZpYyBncm91cCBvZiBjbGF1c2VzLCBvciBjcmVhdGUg bmV3CisJCSogZ3JvdXAuCisJCSogVE9ETzogdG8gbWFuYWdlIGNvbXBsZXhpdHkgaW4gdGhl IGNhc2Ugb2YgbWFueSBkaWZmZXJlbnQgY2xhdXNlcworCQkqIChYMT1DMSkgT1IgKFgyPUMy IE9SKSAuLi4gKFhOID0gQ04pIHdlIGNvdWxkIGludmVudCBzb21ldGhpbmcKKwkJKiBsaWtl IGEgaGFzaCB0YWJsZS4gQnV0IGFsc28gd2UgYmVsaWV2ZSwgdGhhdCB0aGUgY2FzZSBvZiBt YW55CisJCSogZGlmZmVyZW50IHZhcmlhYmxlIHNpZGVzIGlzIHZlcnkgcmFyZS4KKwkJKi8K KwkJZ2VudHJ5ID0gaGFzaF9zZWFyY2gob3JfZ3JvdXBfaHRhYiwgJmhhc2gsIEhBU0hfRklO RCwgJmZvdW5kKTsKKworCQlpZiAoZm91bmQpCisJCXsKKwkJCWdlbnRyeS0+Y29uc3RzID0g bGFwcGVuZChnZW50cnktPmNvbnN0cywgY29uc3RfZXhwcik7CisJCQkvKgorCQkJCSogVGhl IGNsYXVzZSBjbGFzc2lmaWVkIHN1Y2Nlc3NmdWxseSBhbmQgYWRkZWQgaW50byBleGlzdGVk CisJCQkJKiBjbGF1c2UgZ3JvdXAuCisJCQkJKi8KKwkJCWNvbnRpbnVlOworCQl9CisKKwkJ LyogTmV3IGNsYXVzZSBncm91cCBuZWVkZWQgKi8KKwkJZ2VudHJ5ID0gaGFzaF9zZWFyY2go b3JfZ3JvdXBfaHRhYiwgJmhhc2gsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJCWdlbnRyeS0+ bm9kZSA9IG5jb25zdF9leHByOworCQlnZW50cnktPmNvbnN0cyA9IGxpc3RfbWFrZTEoY29u c3RfZXhwcik7CisJCWdlbnRyeS0+ZXhwciA9IG9ycXVhbDsKKwkJZ2VudHJ5LT5oYXNoX2xl ZnR2YXJfa2V5ID0gaGFzaDsKKwl9CisKKwlpZiAob3JfZ3JvdXBfaHRhYiAmJiAoaGFzaF9n ZXRfbnVtX2VudHJpZXMob3JfZ3JvdXBfaHRhYikgPCAxIHx8CisJICAgICAgICAgICAgICAg ICAgICAgICAgIGhhc2hfZ2V0X251bV9lbnRyaWVzKG9yX2dyb3VwX2h0YWIpID09IGxlbl9v cnMpKQorCXsKKwkJLyoKKwkJKiBObyBhbnkgdHJhbnNmb3JtYXRpb25zIHBvc3NpYmxlIHdp dGggdGhpcyBsaXN0IG9mIGFyZ3VtZW50cy4gSGVyZSB3ZQorCQkqIGFscmVhZHkgbWFkZSBh bGwgdW5kZXJseWluZyB0cmFuc2Zvcm1hdGlvbnMuIFRodXMsIGp1c3QgcmV0dXJuIHRoZQor CQkqIHRyYW5zZm9ybWVkIGJvb2wgZXhwcmVzc2lvbi4KKwkJKi8KKwkJaGFzaF9kZXN0cm95 KG9yX2dyb3VwX2h0YWIpOworCQlyZXR1cm4gKE5vZGUgKikgbWFrZUJvb2xFeHByKE9SX0VY UFIsIG9yX2xpc3QsIGV4cHJfb3JpZy0+bG9jYXRpb24pOworCX0KKwllbHNlCisJeworCQlI QVNIX1NFUV9TVEFUVVMJCWhhc2hfc2VxOworCQlPckNsYXVzZUdyb3VwRW50cnkgKmdlbnRy eTsKKworCQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgb3JfZ3JvdXBfaHRhYik7CisKKwkJ LyogTGV0J3MgY29udmVydCBlYWNoIGdyb3VwIG9mIGNsYXVzZXMgdG8gYW4gSU4gb3BlcmF0 aW9uLiAqLworCisJCS8qCisJCSogR28gdGhyb3VnaCB0aGUgbGlzdCBvZiBncm91cHMgYW5k IGNvbnZlcnQgZWFjaCwgd2hlcmUgbnVtYmVyIG9mCisJCSogY29uc3RzIG1vcmUgdGhhbiAx LiB0cml2aWFsIGdyb3VwcyBtb3ZlIHRvIE9SLWxpc3QgYWdhaW4KKwkJKi8KKworCQl3aGls ZSAoKGdlbnRyeSA9IChPckNsYXVzZUdyb3VwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZo YXNoX3NlcSkpICE9IE5VTEwpCisJCXsKKwkJCUxpc3QJCQkgICAqYWxsZXhwcnM7CisJCQlP aWQJCQkJICAgIHNjYWxhcl90eXBlOworCQkJT2lkCQkJCQlhcnJheV90eXBlOworCisJCQlB c3NlcnQobGlzdF9sZW5ndGgoZ2VudHJ5LT5jb25zdHMpID4gMCk7CisKKwkJCWlmIChsaXN0 X2xlbmd0aChnZW50cnktPmNvbnN0cykgPT0gMSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE9u bHkgb25lIGVsZW1lbnQgaW4gdGhlIGNsYXNzLiBSZXR1cm4gcmluZm8gaW50byB0aGUgQm9v bEV4cHIKKwkJCQkgKiBhcmdzIGxpc3QgdW5jaGFuZ2VkLgorCQkJCSAqLworCQkJCWxpc3Rf ZnJlZShnZW50cnktPmNvbnN0cyk7CisJCQkJb3JfbGlzdCA9IGxhcHBlbmQob3JfbGlzdCwg Z2VudHJ5LT5leHByKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIERv IHRoZSB0cmFuc2Zvcm1hdGlvbi4KKwkJCSAqCisJCQkgKiBGaXJzdCBvZiBhbGwsIHRyeSB0 byBzZWxlY3QgYSBjb21tb24gdHlwZSBmb3IgdGhlIGFycmF5IGVsZW1lbnRzLgorCQkJICog Tm90ZSB0aGF0IHNpbmNlIHRoZSBMSFMnIHR5cGUgaXMgZmlyc3QgaW4gdGhlIGxpc3QsIGl0 IHdpbGwgYmUKKwkJCSAqIHByZWZlcnJlZCB3aGVuIHRoZXJlIGlzIGRvdWJ0IChlZywgd2hl biBhbGwgdGhlIFJIUyBpdGVtcyBhcmUKKwkJCSAqIHVua25vd24gbGl0ZXJhbHMpLgorCQkJ ICoKKwkJCSAqIE5vdGU6IHVzZSBsaXN0X2NvbmNhdCBoZXJlIG5vdCBsY29ucywgdG8gYXZv aWQgZGFtYWdpbmcgcm5vbnZhcnMuCisJCQkgKgorCQkJICogQXMgYSBzb3VyY2Ugb2YgaW5z aWRlcywgdXNlIG1ha2Vfc2NhbGFyX2FycmF5X29wKCkKKwkJCSAqLworCQkJYWxsZXhwcnMg PSBsaXN0X2NvbmNhdChsaXN0X21ha2UxKGdlbnRyeS0+bm9kZSksIGdlbnRyeS0+Y29uc3Rz KTsKKwkJCXNjYWxhcl90eXBlID0gc2VsZWN0X2NvbW1vbl90eXBlKE5VTEwsIGFsbGV4cHJz LCBOVUxMLCBOVUxMKTsKKworCQkJaWYgKHNjYWxhcl90eXBlICE9IFJFQ09SRE9JRCAmJiBP aWRJc1ZhbGlkKHNjYWxhcl90eXBlKSkKKwkJCQlhcnJheV90eXBlID0gZ2V0X2FycmF5X3R5 cGUoc2NhbGFyX3R5cGUpOworCQkJZWxzZQorCQkJCWFycmF5X3R5cGUgPSBJbnZhbGlkT2lk OworCisJCQlpZiAoYXJyYXlfdHlwZSAhPSBJbnZhbGlkT2lkKQorCQkJeworCQkJCS8qCisJ CQkJICogT0s6IGNvZXJjZSBhbGwgdGhlIHJpZ2h0LWhhbmQgbm9uLVZhciBpbnB1dHMgdG8g dGhlIGNvbW1vbgorCQkJCSAqIHR5cGUgYW5kIGJ1aWxkIGFuIEFycmF5RXhwciBmb3IgdGhl bS4KKwkJCQkgKi8KKwkJCQlMaXN0CSAgICphZXhwcnMgPSBOSUw7CisJCQkJQXJyYXlFeHBy ICAqbmV3YSA9IE5VTEw7CisJCQkJU2NhbGFyQXJyYXlPcEV4cHIgKnNhb3BleHByID0gTlVM TDsKKwkJCQlMaXN0Q2VsbCAqbDsKKworCQkJCWFleHBycyA9IE5JTDsKKworCQkJCWZvcmVh Y2gobCwgZ2VudHJ5LT5jb25zdHMpCisJCQkJeworCQkJCQlOb2RlCSAgICpyZXhwciA9IChO b2RlICopIGxmaXJzdChsKTsKKworCQkJCQlyZXhwciA9IGNvZXJjZV90b19jb21tb25fdHlw ZShwc3RhdGUsIHJleHByLAorCQkJCQkJCQkJCQkJc2NhbGFyX3R5cGUsCisJCQkJCQkJCQkJ CQkiSU4iKTsKKwkJCQkJYWV4cHJzID0gbGFwcGVuZChhZXhwcnMsIHJleHByKTsKKwkJCQl9 CisKKwkJCQluZXdhID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKKwkJCQkvKiBhcnJheV9jb2xs aWQgd2lsbCBiZSBzZXQgYnkgcGFyc2VfY29sbGF0ZS5jICovCisJCQkJbmV3YS0+ZWxlbWVu dF90eXBlaWQgPSBzY2FsYXJfdHlwZTsKKwkJCQluZXdhLT5hcnJheV90eXBlaWQgPSBhcnJh eV90eXBlOworCQkJCW5ld2EtPm11bHRpZGltcyA9IGZhbHNlOworCQkJCW5ld2EtPmVsZW1l bnRzID0gYWV4cHJzOworCQkJCW5ld2EtPmxvY2F0aW9uID0gLTE7CisKKwkJCQlzYW9wZXhw ciA9CisJCQkJCShTY2FsYXJBcnJheU9wRXhwciAqKQorCQkJCQkJbWFrZV9zY2FsYXJfYXJy YXlfb3AocHN0YXRlLAorCQkJCQkJCQkJCQkgbGlzdF9tYWtlMShtYWtlU3RyaW5nKChjaGFy ICopICI9IikpLAorCQkJCQkJCQkJCQkgdHJ1ZSwKKwkJCQkJCQkJCQkJIGdlbnRyeS0+bm9k ZSwKKwkJCQkJCQkJCQkJIChOb2RlICopIG5ld2EsCisJCQkJCQkJCQkJCSAtMSk7CisKKwkJ CQlvcl9saXN0ID0gbGFwcGVuZChvcl9saXN0LCAodm9pZCAqKSBzYW9wZXhwcik7CisJCQl9 CisJCQllbHNlCisJCQl7CisJCQkJbGlzdF9mcmVlKGdlbnRyeS0+Y29uc3RzKTsKKwkJCQlv cl9saXN0ID0gbGFwcGVuZChvcl9saXN0LCBnZW50cnktPmV4cHIpOworCQkJfQorCQkJaGFz aF9zZWFyY2gob3JfZ3JvdXBfaHRhYiwgJmdlbnRyeS0+aGFzaF9sZWZ0dmFyX2tleSwgSEFT SF9SRU1PVkUsIE5VTEwpOworCQl9CisJCWhhc2hfZGVzdHJveShvcl9ncm91cF9odGFiKTsK Kwl9CisKKwkvKiBPbmUgbW9yZSB0cmljazogYXNzZW1ibGUgY29ycmVjdCBjbGF1c2UgKi8K KwlyZXR1cm4gKE5vZGUgKikgKChsaXN0X2xlbmd0aChvcl9saXN0KSA+IDEpID8KKwkJCQkJ CW1ha2VCb29sRXhwcihPUl9FWFBSLCBvcl9saXN0LCBleHByX29yaWctPmxvY2F0aW9uKSA6 CisJCQkJCQlsaW5pdGlhbChvcl9saXN0KSk7Cit9CiAKIC8qCiAgKiB0cmFuc2Zvcm1FeHBy IC0KQEAgLTIxMiw3ICs0OTAsNyBAQCB0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRl ICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQl9CiAKIAkJY2FzZSBUX0Jvb2xFeHByOgotCQkJ cmVzdWx0ID0gdHJhbnNmb3JtQm9vbEV4cHIocHN0YXRlLCAoQm9vbEV4cHIgKikgZXhwcik7 CisJCQlyZXN1bHQgPSAoTm9kZSAqKXRyYW5zZm9ybUJvb2xFeHByT3IocHN0YXRlLCAoQm9v bEV4cHIgKikgZXhwcik7CiAJCQlicmVhazsKIAogCQljYXNlIFRfRnVuY0NhbGw6CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IGI3NjRlZjY5OTgwLi5lMjQ5NTUy OWQyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTEwNDgsNiAr MTA0OCwxNiBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQog CQl0cnVlLAogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKKwl7CisJCXsiZW5hYmxlX29yX3Ry YW5zZm9ybWF0aW9uIiwgUEdDX1VTRVJTRVQsIFFVRVJZX1RVTklOR19PVEhFUiwKKwkJCWdl dHRleHRfbm9vcCgiVHJhbnNmb3JtIGEgc2VxdWVuY2Ugb2YgT1IgY2xhdXNlcyB0byBhbiBJ TiBleHByZXNzaW9uLiIpLAorCQkJZ2V0dGV4dF9ub29wKCJUaGUgcGxhbm5lciB3aWxsIHJl cGxhY2UgY2xhdXNlcyBsaWtlICd4PWMxIE9SIHg9YzIgLi4iCisJCQkJCQkgInRvIHRoZSBj bGF1c2UgJ3ggSU4gKGMxLGMyLC4uLiknIikKKwkJfSwKKwkJJmVuYWJsZV9vcl90cmFuc2Zv cm1hdGlvbiwKKwkJZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCXsKIAkJLyoK IAkJICogTm90IGZvciBnZW5lcmFsIHVzZSAtLS0gdXNlZCBieSBTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIGFuZCBTRVQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV9leHByLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oCmluZGV4IDdkMzhj YTc1ZjdiLi4zYTg3ZGUwMjg1OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX2V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oCkBAIC0x Nyw2ICsxNyw3IEBACiAKIC8qIEdVQyBwYXJhbWV0ZXJzICovCiBleHRlcm4gUEdETExJTVBP UlQgYm9vbCBUcmFuc2Zvcm1fbnVsbF9lcXVhbHM7CitleHRlcm4gUEdETExJTVBPUlQgYm9v bCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAKIGV4dGVybiBOb2RlICp0cmFuc2Zvcm1F eHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwciwgUGFyc2VFeHByS2luZCBleHBy S2luZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRl X2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91 dAppbmRleCBhY2ZkOWQxZjRmNy4uZGJjOGJjM2JlZDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTE4ODMsNiArMTg4MywxMjEgQEAg U0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgICAxMAogKDEgcm93KQogCitTRVQgZW5h YmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgKiBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9 IDEgT1IgdGVudGhvdXMgPSAzIE9SIHRlbnRob3VzID0gNDIpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5n IHRlbmsxX3Rob3VzX3RlbnRob3VzIG9uIHRlbmsxCisgICBJbmRleCBDb25kOiAoKHRob3Vz YW5kID0gNDIpIEFORCAodGVudGhvdXMgPSBBTlkgKCd7MSwzLDQyfSc6OmludGVnZXJbXSkp KQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9 IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQy KTsKKyB1bmlxdWUxIHwgdW5pcXVlMiB8IHR3byB8IGZvdXIgfCB0ZW4gfCB0d2VudHkgfCBo dW5kcmVkIHwgdGhvdXNhbmQgfCB0d290aG91c2FuZCB8IGZpdmV0aG91cyB8IHRlbnRob3Vz IHwgb2RkIHwgZXZlbiB8IHN0cmluZ3UxIHwgc3RyaW5ndTIgfCBzdHJpbmc0IAorLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgICAgICA0MiB8ICAgIDU1 MzAgfCAgIDAgfCAgICAyIHwgICAyIHwgICAgICAyIHwgICAgICA0MiB8ICAgICAgIDQyIHwg ICAgICAgICAgNDIgfCAgICAgICAgNDIgfCAgICAgICA0MiB8ICA4NCB8ICAgODUgfCBRQkFB QUEgICB8IFNFSUFBQSAgIHwgT09PT3h4CisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBB TkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hl Y2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFORCAodGhvdXNhbmQgPSBBTlkgKCd7NDIsOTl9 Jzo6aW50ZWdlcltdKSkpCisgICAgICAgICAtPiAgQml0bWFwQW5kCisgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJlZAorICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6Omlu dGVnZXJbXSkpCisoOCByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBX SEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkp OworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIHRob3VzYW5kID0g NDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhvdXMgPSAzKSBPUiB0aG91c2FuZCA9IDQx OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0ZW5rMQorICAgICAgICAg UmVjaGVjayBDb25kOiAoKCh0aG91c2FuZCA9IDQyKSBBTkQgKHRlbnRob3VzID0gQU5ZICgn ezEsM30nOjppbnRlZ2VyW10pKSkgT1IgKHRob3VzYW5kID0gNDEpKQorICAgICAgICAgLT4g IEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVu azFfdGhvdXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgo dGhvdXNhbmQgPSA0MikgQU5EICh0ZW50aG91cyA9IEFOWSAoJ3sxLDN9Jzo6aW50ZWdlcltd KSkpCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhv dXNfdGVudGhvdXMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2Fu ZCA9IDQxKQorKDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hF UkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50aG91cyA9IDMpIE9S IHRob3VzYW5kID0gNDE7CisgY291bnQgCistLS0tLS0tCisgICAgMTAKKygxIHJvdykKKwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hF UkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9S IHRlbnRob3VzIDwgMikgT1IgdGhvdXNhbmQgPSA0MTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4g b24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCgoaHVuZHJlZCA9IDQyKSBBTkQg KCh0ZW50aG91cyA8IDIpIE9SICh0aG91c2FuZCA9IEFOWSAoJ3s0Miw5OX0nOjppbnRlZ2Vy W10pKSkpIE9SICh0aG91c2FuZCA9IDQxKSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAg ICAgICAgICAgICAgLT4gIEJpdG1hcEFuZAorICAgICAgICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX2h1bmRyZWQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6IChodW5kcmVkID0gNDIpCisgICAgICAgICAgICAgICAgICAg ICAtPiAgQml0bWFwT3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHRlbnRob3VzIDwgMikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190 ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHRob3VzYW5kID0gQU5ZICgnezQyLDk5fSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdGhvdXNfdGVudGhvdXMKKyAgICAg ICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh0aG91c2FuZCA9IDQxKQorKDE0IHJvd3Mp CisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBB TkQgKHRob3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSBPUiB0ZW50aG91cyA8IDIpIE9S IHRob3VzYW5kID0gNDE7CisgY291bnQgCistLS0tLS0tCisgICAgMjAKKygxIHJvdykKKwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hF UkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9S IHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0gMik7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gdGVuazEKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChodW5kcmVkID0gNDIpIEFO RCAoKCh0aG91c2FuZCA9IDk5KSBBTkQgKHRlbnRob3VzID0gMikpIE9SICh0aG91c2FuZCA9 IEFOWSAoJ3s0Miw0MX0nOjppbnRlZ2VyW10pKSkpCisgICAgICAgICAtPiAgQml0bWFwQW5k CisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfaHVuZHJl ZAorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGh1bmRyZWQgPSA0MikKKyAg ICAgICAgICAgICAgIC0+ICBCaXRtYXBPcgorICAgICAgICAgICAgICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAoKHRob3VzYW5kID0gOTkpIEFORCAodGVudGhv dXMgPSAyKSkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biB0ZW5rMV90aG91c190ZW50aG91cworICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHRob3VzYW5kID0gQU5ZICgnezQyLDQxfSc6OmludGVnZXJbXSkpCisoMTEg cm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9 IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRob3VzYW5kID0g OTkgQU5EIHRlbnRob3VzID0gMik7CisgY291bnQgCistLS0tLS0tCisgICAgMTAKKygxIHJv dykKKworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogLS0KIC0tIENoZWNrIGJl aGF2aW9yIHdpdGggZHVwbGljYXRlIGluZGV4IGNvbHVtbiBjb250ZW50cwogLS0KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dAppbmRleCAxMjdjOTUzMjk3Ni4uMGYyYjFiMTYyMDAg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3VjLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2d1Yy5vdXQKQEAgLTg2MSw3ICs4NjEsOCBAQCBT RUxFQ1QgbmFtZSBGUk9NIHRhYl9zZXR0aW5nc19mbGFncwogICAgICAgICAgICBuYW1lICAg ICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBkZWZhdWx0X3N0YXRp c3RpY3NfdGFyZ2V0Ci0oMSByb3cpCisgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uCisoMiBy b3dzKQogCiAtLSBSdW50aW1lLWNvbXB1dGVkIEdVQ3Mgc2hvdWxkIGJlIHBhcnQgb2YgdGhl IHByZXNldCBjYXRlZ29yeS4KIFNFTEVDVCBuYW1lIEZST00gdGFiX3NldHRpbmdzX2ZsYWdz CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dAppbmRleCAyYzczMjcwMTQzYi4uNWFm MmNmMDkxMDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dApAQCAtNDIzMyw2 ICs0MjMzLDU2IEBAIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gNykKICgx OSByb3dzKQogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWlu IChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisg IChhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9 IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgSm9pbiBGaWx0ZXI6ICgoKGEudW5p cXVlMSA9IDEpIEFORCAoYi51bmlxdWUxID0gMikpIE9SICgoYS51bmlxdWUyID0gQU5ZICgn ezMsN30nOjppbnRlZ2VyW10pKSBBTkQgKGIuaHVuZHJlZCA9IDQpKSkKKyAgIC0+ICBCaXRt YXAgSGVhcCBTY2FuIG9uIHRlbmsxIGIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlx dWUxID0gMikgT1IgKGh1bmRyZWQgPSA0KSkKKyAgICAgICAgIC0+ICBCaXRtYXBPcgorICAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKKyAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKKyAgICAgICAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCisgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCisgICAtPiAgTWF0ZXJp YWxpemUKKyAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKKyAgICAg ICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSBB TlkgKCd7Myw3fSc6OmludGVnZXJbXSkpKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcE9y CisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFf dW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1 ZTEgPSAxKQorICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IHRlbmsxX3VuaXF1ZTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICh1bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKQorKDE3IHJvd3MpCisKK2V4 cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIg b24KKyAgKGEudW5pcXVlMSA8IDIwIG9yIGEudW5pcXVlMSA9IDMgb3IgYS51bmlxdWUxID0g MSBhbmQgYi51bmlxdWUxID0gMikgb3IKKyAgKChhLnVuaXF1ZTIgPSAzIG9yIGEudW5pcXVl MiA9IDcpIGFuZCBiLmh1bmRyZWQgPSA0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTmVzdGVkIExvb3AKKyAgIEpvaW4gRmlsdGVy OiAoKGEudW5pcXVlMSA8IDIwKSBPUiAoKGEudW5pcXVlMSA9IDEpIEFORCAoYi51bmlxdWUx ID0gMikpIE9SICgoYS51bmlxdWUyID0gQU5ZICgnezMsN30nOjppbnRlZ2VyW10pKSBBTkQg KGIuaHVuZHJlZCA9IDQpKSBPUiAoYS51bmlxdWUxID0gMykpCisgICAtPiAgU2VxIFNjYW4g b24gdGVuazEgYgorICAgLT4gIE1hdGVyaWFsaXplCisgICAgICAgICAtPiAgQml0bWFwIEhl YXAgU2NhbiBvbiB0ZW5rMSBhCisgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgodW5p cXVlMSA8IDIwKSBPUiAodW5pcXVlMSA9IDEpIE9SICh1bmlxdWUyID0gQU5ZICgnezMsN30n OjppbnRlZ2VyW10pKSBPUiAodW5pcXVlMSA9IDMpKQorICAgICAgICAgICAgICAgLT4gIEJp dG1hcE9yCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KHVuaXF1ZTEgPCAyMCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0ZW5rMV91bmlxdWUxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAodW5pcXVlMSA9IDEpCisgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHVuaXF1ZTIgPSBBTlkgKCd7Myw3fSc6OmludGVnZXJbXSkpCisg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5p cXVlMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1ZTEg PSAzKQorKDE1IHJvd3MpCisKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKIC0t CiAtLSB0ZXN0IHBsYWNlbWVudCBvZiBtb3ZhYmxlIHF1YWxzIGluIGEgcGFyYW1ldGVyaXpl ZCBqb2luIHRyZWUKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9wcnVuZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9wcnVuZS5vdXQKaW5kZXggOWE0YzQ4YzA1NTYuLjgwNGZlYTlmMzRjIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CkBAIC0x MDEsNiArMTAxLDI4IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3 aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnCiAgICAgICAgICBG aWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5EICgoYSA9ICdhJzo6YnBjaGFyKSBPUiAoYSA9 ICdjJzo6YnBjaGFyKSkpCiAoNSByb3dzKQogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0 aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gbHAgd2hlcmUg YSA9ICdhJyBvciBhID0gJ2MnOworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gbHBfYWQgbHBfMQorICAg ICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKQorICAgLT4gIFNl cSBTY2FuIG9uIGxwX2JjIGxwXzIKKyAgICAgICAgIEZpbHRlcjogKGEgPSBBTlkgKCd7YSxj fSc6OmJwY2hhcltdKSkKKyg1IHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2Mn KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAg U2VxIFNjYW4gb24gbHBfYWQgbHBfMQorICAgICAgICAgRmlsdGVyOiAoKGEgSVMgTk9UIE5V TEwpIEFORCAoYSA9IEFOWSAoJ3thLGN9Jzo6YnBjaGFyW10pKSkKKyAgIC0+ICBTZXEgU2Nh biBvbiBscF9iYyBscF8yCisgICAgICAgICBGaWx0ZXI6ICgoYSBJUyBOT1QgTlVMTCkgQU5E IChhID0gQU5ZICgne2EsY30nOjpicGNoYXJbXSkpKQorKDUgcm93cykKKworUkVTRVQgZW5h YmxlX29yX3RyYW5zZm9ybWF0aW9uOwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBm cm9tIGxwIHdoZXJlIGEgPD4gJ2cnOwogICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTY3MSw2 ICs2OTMsMTQwIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hl cmUgKGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0KICAgICAgICAgIEZpbHRl cjogKCgoYSA9IDEpIEFORCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQog KDExIHJvd3MpCiAKK1NFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxh aW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9IDc7 CisgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJscDIg cmxwCisgICBGaWx0ZXI6IChhID0gQU5ZICgnezEsN30nOjppbnRlZ2VyW10pKQorKDIgcm93 cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0g MSBvciBiID0gJ2FiJzsKKyAgICAgICAgUVVFUlkgUExBTiAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT25lLVRpbWUgRmlsdGVyOiBmYWxzZQor KDIgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVy ZSBhID4gMjAgYW5kIGEgPCAyNzsKKyAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRfMSBybHBfMQorICAgICAgICAgRmls dGVyOiAoKGEgPiAyMCkgQU5EIChhIDwgMjcpKQorICAgLT4gIFNlcSBTY2FuIG9uIHJscDRf MiBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgPiAyMCkgQU5EIChhIDwgMjcpKQorKDUg cm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBh ID0gMjk7CisgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHJscDRfZGVmYXVsdCBybHAKKyAgIEZp bHRlcjogKGEgPSAyOSkKKygyIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBybHAgd2hlcmUgYSA+PSAyOTsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF9kZWZhdWx0 IHJscF8xCisgICAgICAgICBGaWx0ZXI6IChhID49IDI5KQorICAgLT4gIFNlcSBTY2FuIG9u IHJscDVfMSBybHBfMgorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKyAgIC0+ICBTZXEg U2NhbiBvbiBybHA1X2RlZmF1bHQgcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKGEgPj0gMjkp CisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfMzAgcmxwXzQKKyAgICAgICAgIEZp bHRlcjogKGEgPj0gMjkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwX2RlZmF1bHRfZGVmYXVs dCBybHBfNQorICAgICAgICAgRmlsdGVyOiAoYSA+PSAyOSkKKygxMSByb3dzKQorCitleHBs YWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPCAxIG9yIChhID4g MjAgYW5kIGEgPCAyNSk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIFNlcSBTY2FuIG9uIHJscDEg cmxwXzEKKyAgICAgICAgIEZpbHRlcjogKChhIDwgMSkgT1IgKChhID4gMjApIEFORCAoYSA8 IDI1KSkpCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF8yCisgICAgICAgICBGaWx0 ZXI6ICgoYSA8IDEpIE9SICgoYSA+IDIwKSBBTkQgKGEgPCAyNSkpKQorKDUgcm93cykKKwor ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID0gMjAgb3Ig YSA9IDQwOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgQXBwZW5kCisgICAtPiAgU2VxIFNjYW4gb24gcmxwNF8xIHJscF8xCisgICAgICAg ICBGaWx0ZXI6IChhID0gQU5ZICgnezIwLDQwfSc6OmludGVnZXJbXSkpCisgICAtPiAgU2Vx IFNjYW4gb24gcmxwNV9kZWZhdWx0IHJscF8yCisgICAgICAgICBGaWx0ZXI6IChhID0gQU5Z ICgnezIwLDQwfSc6OmludGVnZXJbXSkpCisoNSByb3dzKQorCitleHBsYWluIChjb3N0cyBv ZmYpIHNlbGVjdCAqIGZyb20gcmxwMyB3aGVyZSBhID0gMjA7ICAgLyogZW1wdHkgKi8KKyAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFJlc3VsdAorICAgT25lLVRpbWUgRmlsdGVyOiBmYWxzZQorKDIgcm93cykKKworZXhwbGFp biAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMSBhbmQgYSA9IDEw OwkvKiBvbmx5IGRlZmF1bHQgKi8KKyAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBy bHBfZGVmYXVsdF8xMCBybHAKKyAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID0gMTApKQor KDIgcm93cykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVy ZSBhID4gMSBhbmQgYSA+PTE1OwkvKiBybHAzIG9ud2FyZHMsIGluY2x1ZGluZyBkZWZhdWx0 ICovCisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5k CisgICAtPiAgU2VxIFNjYW4gb24gcmxwM2FiY2QgcmxwXzEKKyAgICAgICAgIEZpbHRlcjog KChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzZWZnaCBy bHBfMgorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQgKGEgPj0gMTUpKQorICAgLT4g IFNlcSBTY2FuIG9uIHJscDNudWxseHkgcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKChhID4g MSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAzX2RlZmF1bHQgcmxw XzQKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBybHA0XzEgcmxwXzUKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5E IChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA0XzIgcmxwXzYKKyAgICAgICAg IEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBy bHA0X2RlZmF1bHQgcmxwXzcKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49 IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1XzEgcmxwXzgKKyAgICAgICAgIEZpbHRl cjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHA1X2Rl ZmF1bHQgcmxwXzkKKyAgICAgICAgIEZpbHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkK KyAgIC0+ICBTZXEgU2NhbiBvbiBybHBfZGVmYXVsdF8zMCBybHBfMTAKKyAgICAgICAgIEZp bHRlcjogKChhID4gMSkgQU5EIChhID49IDE1KSkKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHBf ZGVmYXVsdF9kZWZhdWx0IHJscF8xMQorICAgICAgICAgRmlsdGVyOiAoKGEgPiAxKSBBTkQg KGEgPj0gMTUpKQorKDIzIHJvd3MpCisKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICog ZnJvbSBybHAgd2hlcmUgYSA9IDEgYW5kIGEgPSAzOwkvKiBlbXB0eSAqLworICAgICAgICBR VUVSWSBQTEFOICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0 CisgICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCisoMiByb3dzKQorCitleHBsYWluIChjb3N0 cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIChhID0gMSBhbmQgYSA9IDMpIG9yIChh ID4gMSBhbmQgYSA9IDE1KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBl bmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBybHAyIHJscF8xCisgICAgICAgICBGaWx0ZXI6ICgo KGEgPSAxKSBBTkQgKGEgPSAzKSkgT1IgKChhID4gMSkgQU5EIChhID0gMTUpKSkKKyAgIC0+ ICBTZXEgU2NhbiBvbiBybHAzYWJjZCBybHBfMgorICAgICAgICAgRmlsdGVyOiAoKChhID0g MSkgQU5EIChhID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisgICAtPiAgU2Vx IFNjYW4gb24gcmxwM2VmZ2ggcmxwXzMKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFO RCAoYSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2Fu IG9uIHJscDNudWxseHkgcmxwXzQKKyAgICAgICAgIEZpbHRlcjogKCgoYSA9IDEpIEFORCAo YSA9IDMpKSBPUiAoKGEgPiAxKSBBTkQgKGEgPSAxNSkpKQorICAgLT4gIFNlcSBTY2FuIG9u IHJscDNfZGVmYXVsdCBybHBfNQorICAgICAgICAgRmlsdGVyOiAoKChhID0gMSkgQU5EIChh ID0gMykpIE9SICgoYSA+IDEpIEFORCAoYSA9IDE1KSkpCisoMTEgcm93cykKKworUkVTRVQg ZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogLS0gbXVsdGktY29sdW1uIGtleXMKIGNyZWF0 ZSB0YWJsZSBtYzNwIChhIGludCwgYiBpbnQsIGMgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2Ug KGEsIGFicyhiKSwgYyk7CiBjcmVhdGUgdGFibGUgbWMzcF9kZWZhdWx0IHBhcnRpdGlvbiBv ZiBtYzNwIGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0 CmluZGV4IDI3MTMxM2ViZjg2Li41NjZmNTFkZjQyOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAgLTEyMyw2ICsxMjMsNyBAQCBzZWxlY3QgbmFtZSwg c2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAg ZW5hYmxlX21lbW9pemUgICAgICAgICAgICAgICAgIHwgb24KICBlbmFibGVfbWVyZ2Vqb2lu ICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9uZXN0bG9vcCAgICAgICAgICAgICAgICB8 IG9uCisgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uICAgICAgIHwgb2ZmCiAgZW5hYmxlX3Bh cmFsbGVsX2FwcGVuZCAgICAgICAgIHwgb24KICBlbmFibGVfcGFyYWxsZWxfaGFzaCAgICAg ICAgICAgfCBvbgogIGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAgICAgICB8IG9uCkBAIC0x MzMsNyArMTM0LDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3 aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9zZXFzY2FuICAgICAgICAgICAg ICAgICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAgICAgICAgIHwgb24KICBlbmFi bGVfdGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDIyIHJvd3MpCisoMjMgcm93cykK IAogLS0gVGhlcmUgYXJlIGFsd2F5cyB3YWl0IGV2ZW50IGRlc2NyaXB0aW9ucyBmb3IgdmFy aW91cyB0eXBlcy4KIHNlbGVjdCB0eXBlLCBjb3VudCgqKSA+IDAgYXMgb2sgRlJPTSBwZ193 YWl0X2V2ZW50cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90aWRz Y2FuLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGlkc2Nhbi5vdXQKaW5kZXgg ZjEzM2I1YTRhYzcuLmJlNGQ4ODIwMGI2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3RpZHNjYW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv dGlkc2Nhbi5vdXQKQEAgLTU2LDYgKzU2LDIzIEBAIFNFTEVDVCBjdGlkLCAqIEZST00gdGlk c2NhbiBXSEVSRSBjdGlkID0gJygwLDIpJyBPUiAnKDAsMSknID0gY3RpZDsKICAoMCwyKSB8 ICAyCiAoMiByb3dzKQogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUg Y3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CisgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVGlkIFNjYW4gb24g dGlkc2NhbgorICAgVElEIENvbmQ6IChjdGlkID0gQU5ZICgneyIoMCwyKSIsIigwLDEpIn0n Ojp0aWRbXSkpCisoMiByb3dzKQorCitTRUxFQ1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hF UkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CisgY3RpZCAgfCBpZCAKKy0t LS0tLS0rLS0tLQorICgwLDEpIHwgIDEKKyAoMCwyKSB8ICAyCisoMiByb3dzKQorCitSRVNF VCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CiAtLSBjdGlkID0gU2NhbGFyQXJyYXlPcCAt IGltcGxlbWVudGVkIGFzIHRpZHNjYW4KIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBj dGlkLCAqIEZST00gdGlkc2NhbiBXSEVSRSBjdGlkID0gQU5ZKEFSUkFZWycoMCwxKScsICco MCwyKSddOjp0aWRbXSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVh dGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApp bmRleCBkNDljZTlmMzAwNy4uNDhiYjFiYzBhMGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y3JlYXRlX2luZGV4LnNxbApAQCAtNzM3LDYgKzczNywzOCBAQCBTRUxFQ1QgY291bnQoKikg RlJPTSB0ZW5rMQogU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKICAgV0hFUkUgaHVuZHJl ZCA9IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5KTsKIAorU0VUIGVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9IG9uOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUICogRlJPTSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMg PSAxIE9SIHRlbnRob3VzID0gMyBPUiB0ZW50aG91cyA9IDQyKTsKK1NFTEVDVCAqIEZST00g dGVuazEKKyAgV0hFUkUgdGhvdXNhbmQgPSA0MiBBTkQgKHRlbnRob3VzID0gMSBPUiB0ZW50 aG91cyA9IDMgT1IgdGVudGhvdXMgPSA0Mik7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxCisgIFdIRVJFIGh1bmRyZWQgPSA0MiBBTkQgKHRo b3VzYW5kID0gNDIgT1IgdGhvdXNhbmQgPSA5OSk7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3Vz YW5kID0gOTkpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJP TSB0ZW5rMQorICBXSEVSRSB0aG91c2FuZCA9IDQyIEFORCAodGVudGhvdXMgPSAxIE9SIHRl bnRob3VzID0gMykgT1IgdGhvdXNhbmQgPSA0MTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRl bmsxCisgIFdIRVJFIHRob3VzYW5kID0gNDIgQU5EICh0ZW50aG91cyA9IDEgT1IgdGVudGhv dXMgPSAzKSBPUiB0aG91c2FuZCA9IDQxOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIgQU5EICh0aG91 c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gOTkgT1IgdGVudGhvdXMgPCAyKSBPUiB0aG91c2Fu ZCA9IDQxOworU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9 IDQyIEFORCAodGhvdXNhbmQgPSA0MiBPUiB0aG91c2FuZCA9IDk5IE9SIHRlbnRob3VzIDwg MikgT1IgdGhvdXNhbmQgPSA0MTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNv dW50KCopIEZST00gdGVuazEKKyAgV0hFUkUgaHVuZHJlZCA9IDQyIEFORCAodGhvdXNhbmQg PSA0MiBPUiB0aG91c2FuZCA9IDQxIE9SIHRob3VzYW5kID0gOTkgQU5EIHRlbnRob3VzID0g Mik7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZW5rMQorICBXSEVSRSBodW5kcmVkID0gNDIg QU5EICh0aG91c2FuZCA9IDQyIE9SIHRob3VzYW5kID0gNDEgT1IgdGhvdXNhbmQgPSA5OSBB TkQgdGVudGhvdXMgPSAyKTsKK1JFU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwog LS0KIC0tIENoZWNrIGJlaGF2aW9yIHdpdGggZHVwbGljYXRlIGluZGV4IGNvbHVtbiBjb250 ZW50cwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pvaW4uc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwKaW5kZXggOGE4YTYzYmQyZjEuLjU1ZDdl MmFlN2Q2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qb2luLnNxbApAQCAtMTQwOCw2ICsxNDA4LDE2IEBA IGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsx IGIgb24KICAgKGEudW5pcXVlMSA9IDEgYW5kIGIudW5pcXVlMSA9IDIpIG9yCiAgICgoYS51 bmlxdWUyID0gMyBvciBhLnVuaXF1ZTIgPSA3KSBhbmQgYi5odW5kcmVkID0gNCk7CitTRVQg ZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uID0gb247CitleHBsYWluIChjb3N0cyBvZmYpCitz ZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCisgIChhLnVuaXF1ZTEgPSAx IGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgorICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUy ID0gNykgYW5kIGIuaHVuZHJlZCA9IDQpOworZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0 ICogZnJvbSB0ZW5rMSBhIGpvaW4gdGVuazEgYiBvbgorICAoYS51bmlxdWUxIDwgMjAgb3Ig YS51bmlxdWUxID0gMyBvciBhLnVuaXF1ZTEgPSAxIGFuZCBiLnVuaXF1ZTEgPSAyKSBvcgor ICAoKGEudW5pcXVlMiA9IDMgb3IgYS51bmlxdWUyID0gNykgYW5kIGIuaHVuZHJlZCA9IDQp OworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOwogCiAtLQogLS0gdGVzdCBwbGFj ZW1lbnQgb2YgbW92YWJsZSBxdWFscyBpbiBhIHBhcmFtZXRlcml6ZWQgam9pbiB0cmVlCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAppbmRleCA3YmYzOTIw ODI3Zi4uMWUyNzBhZTljMDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Bh cnRpdGlvbl9wcnVuZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9u X3BydW5lLnNxbApAQCAtMjEsNiArMjEsMTIgQEAgZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxl Y3QgKiBmcm9tIGxwIHdoZXJlIGEgaXMgbm90IG51bGw7CiBleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gbHAgd2hlcmUgYSBpcyBudWxsOwogZXhwbGFpbiAoY29zdHMgb2Zm KSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAnYScgb3IgYSA9ICdjJzsKIGV4cGxhaW4g KGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAo YSA9ICdhJyBvciBhID0gJ2MnKTsKKworU0VUIGVuYWJsZV9vcl90cmFuc2Zvcm1hdGlvbiA9 IG9uOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIGxwIHdoZXJlIGEgPSAn YScgb3IgYSA9ICdjJzsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBscCB3 aGVyZSBhIGlzIG5vdCBudWxsIGFuZCAoYSA9ICdhJyBvciBhID0gJ2MnKTsKK1JFU0VUIGVu YWJsZV9vcl90cmFuc2Zvcm1hdGlvbjsKKwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIGxwIHdoZXJlIGEgPD4gJ2cnOwogZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3Qg KiBmcm9tIGxwIHdoZXJlIGEgPD4gJ2EnIGFuZCBhIDw+ICdkJzsKIGV4cGxhaW4gKGNvc3Rz IG9mZikgc2VsZWN0ICogZnJvbSBscCB3aGVyZSBhIG5vdCBpbiAoJ2EnLCAnZCcpOwpAQCAt OTksNiArMTA1LDIyIEBAIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAg d2hlcmUgYSA+IDEgYW5kIGEgPj0xNTsJLyogcmxwMyBvbndhcmRzLCBpCiBleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIGFuZCBhID0gMzsJLyog ZW1wdHkgKi8KIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUg KGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBhID0gMTUpOwogCisKK1NFVCBlbmFi bGVfb3JfdHJhbnNmb3JtYXRpb24gPSBvbjsKK2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0 ICogZnJvbSBybHAgd2hlcmUgYSA9IDEgb3IgYSA9IDc7CitleHBsYWluIChjb3N0cyBvZmYp IHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPSAxIG9yIGIgPSAnYWInOworZXhwbGFpbiAo Y29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID4gMjAgYW5kIGEgPCAyNzsK K2V4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBybHAgd2hlcmUgYSA9IDI5Owor ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhID49IDI5Owor ZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJscCB3aGVyZSBhIDwgMSBvciAo YSA+IDIwIGFuZCBhIDwgMjUpOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9t IHJscCB3aGVyZSBhID0gMjAgb3IgYSA9IDQwOworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxl Y3QgKiBmcm9tIHJscDMgd2hlcmUgYSA9IDIwOyAgIC8qIGVtcHR5ICovCitleHBsYWluIChj b3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJlIGEgPiAxIGFuZCBhID0gMTA7CS8q IG9ubHkgZGVmYXVsdCAqLworZXhwbGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgKiBmcm9tIHJs cCB3aGVyZSBhID4gMSBhbmQgYSA+PTE1OwkvKiBybHAzIG9ud2FyZHMsIGluY2x1ZGluZyBk ZWZhdWx0ICovCitleHBsYWluIChjb3N0cyBvZmYpIHNlbGVjdCAqIGZyb20gcmxwIHdoZXJl IGEgPSAxIGFuZCBhID0gMzsJLyogZW1wdHkgKi8KK2V4cGxhaW4gKGNvc3RzIG9mZikgc2Vs ZWN0ICogZnJvbSBybHAgd2hlcmUgKGEgPSAxIGFuZCBhID0gMykgb3IgKGEgPiAxIGFuZCBh ID0gMTUpOworUkVTRVQgZW5hYmxlX29yX3RyYW5zZm9ybWF0aW9uOworCiAtLSBtdWx0aS1j b2x1bW4ga2V5cwogY3JlYXRlIHRhYmxlIG1jM3AgKGEgaW50LCBiIGludCwgYyBpbnQpIHBh cnRpdGlvbiBieSByYW5nZSAoYSwgYWJzKGIpLCBjKTsKIGNyZWF0ZSB0YWJsZSBtYzNwX2Rl ZmF1bHQgcGFydGl0aW9uIG9mIG1jM3AgZGVmYXVsdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3RpZHNjYW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGlkc2Nh bi5zcWwKaW5kZXggMzEzZTBmYjliNjcuLjA0OTliZWRiOWViIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC90aWRzY2FuLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC90aWRzY2FuLnNxbApAQCAtMjIsNiArMjIsMTIgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGKQog U0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSAnKDAsMiknIE9SICco MCwxKScgPSBjdGlkOwogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQg PSAnKDAsMiknIE9SICcoMCwxKScgPSBjdGlkOwogCitTRVQgZW5hYmxlX29yX3RyYW5zZm9y bWF0aW9uID0gb247CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY3RpZCwgKiBGUk9N IHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEpJyA9IGN0aWQ7CitTRUxF Q1QgY3RpZCwgKiBGUk9NIHRpZHNjYW4gV0hFUkUgY3RpZCA9ICcoMCwyKScgT1IgJygwLDEp JyA9IGN0aWQ7CitSRVNFVCBlbmFibGVfb3JfdHJhbnNmb3JtYXRpb247CisKIC0tIGN0aWQg PSBTY2FsYXJBcnJheU9wIC0gaW1wbGVtZW50ZWQgYXMgdGlkc2NhbgogRVhQTEFJTiAoQ09T VFMgT0ZGKQogU0VMRUNUIGN0aWQsICogRlJPTSB0aWRzY2FuIFdIRVJFIGN0aWQgPSBBTlko QVJSQVlbJygwLDEpJywgJygwLDIpJ106OnRpZFtdKTsKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKaW5kZXggZGJhMzQ5OGExM2UuLmM5MDA0MjUwYTVmIDEwMDY0NAotLS0gYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdApAQCAtMTY0MSw2ICsxNjQxLDcgQEAgTnVtZXJpY1ZhcgogT01fdWlu dDMyCiBPUAogT1NBUGVyR3JvdXBTdGF0ZQorT3JDbGF1c2VHcm91cEVudHJ5CiBPU0FQZXJR dWVyeVN0YXRlCiBPU0luZm8KIE9TU0xDaXBoZXIKLS0gCjIuMzQuMQoK --------------frATmkILHQbyv0cafvOwqTUX Content-Type: text/plain; charset=UTF-8; name="21.11_origin_diff2.diff.txt" Content-Disposition: attachment; filename="21.11_origin_diff2.diff.txt" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDI5MDQyMjAwNWEzLi43Yjc2YzlmMjlh MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xNjIsNiArMTYyLDEwIEBAIHRy YW5zZm9ybUJvb2xFeHByT3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBCb29sRXhwciAqZXhwcl9v cmlnKQogCUhUQUIgCQkgICAqb3JfZ3JvdXBfaHRhYiA9IE5VTEw7CiAJaW50IAkJCWxlbl9v cnMgPSBsaXN0X2xlbmd0aChleHByX29yaWctPmFyZ3MpOwogCisJLyogSWYgdGhpcyBpcyBu b3QgYW4gJ09SJyBleHByZXNzaW9uLCBza2lwIHRoZSB0cmFuc2Zvcm1hdGlvbiAqLworCWlm IChleHByX29yaWctPmJvb2xvcCAhPSBPUl9FWFBSIHx8ICFlbmFibGVfb3JfdHJhbnNmb3Jt YXRpb24gfHwgbGVuX29ycyA9PSAxIHx8ICFvcl9ncm91cF9odGFiKQorCQlyZXR1cm4gdHJh bnNmb3JtQm9vbEV4cHIocHN0YXRlLCAoQm9vbEV4cHIgKikgZXhwcl9vcmlnKTsKKwogCU1l bVNldCgmaW5mbywgMCwgc2l6ZW9mKGluZm8pKTsKIAlpbmZvLmtleXNpemUgPSBzaXplb2Yo aW50KTsKIAlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihPckNsYXVzZUdyb3VwRW50cnkpOwpA QCAtMTcwLDEwICsxNzQsNiBAQCB0cmFuc2Zvcm1Cb29sRXhwck9yKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQm9vbEV4cHIgKmV4cHJfb3JpZykKIAkJCQkJCQkJCSAgJmluZm8sCiAJCQkJCQkJ CQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOwogCi0JLyogSWYg dGhpcyBpcyBub3QgYW4gJ09SJyBleHByZXNzaW9uLCBza2lwIHRoZSB0cmFuc2Zvcm1hdGlv biAqLwotCWlmIChleHByX29yaWctPmJvb2xvcCAhPSBPUl9FWFBSIHx8ICFlbmFibGVfb3Jf dHJhbnNmb3JtYXRpb24gfHwgbGVuX29ycyA9PSAxIHx8ICFvcl9ncm91cF9odGFiKQotCQly ZXR1cm4gdHJhbnNmb3JtQm9vbEV4cHIocHN0YXRlLCAoQm9vbEV4cHIgKikgZXhwcl9vcmln KTsKLQogCWZvcmVhY2gobGMsIGV4cHJfb3JpZy0+YXJncykKIAl7CiAJCU5vZGUJCQkgICAq YXJnID0gbGZpcnN0KGxjKTsK --------------frATmkILHQbyv0cafvOwqTUX--