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 1rTPgi-002ke5-TI for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Jan 2024 17:08:22 +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 1rTPgi-000WfR-2z for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Jan 2024 17:08:20 +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 1rTPgh-000WfJ-8L for pgsql-hackers@lists.postgresql.org; Fri, 26 Jan 2024 17:08:19 +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 1rTPgZ-003rAe-Rv for pgsql-hackers@lists.postgresql.org; Fri, 26 Jan 2024 17:08:18 +0000 Received: from [172.30.2.66] (unknown [172.30.2.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: d.koval@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id CF3B9E20E86; Fri, 26 Jan 2024 20:08:09 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1706288890; bh=164VdMjIXftA7JcVLrs6cV6QUpZsVC6oejayItZr8qk=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=h2TmKS/gCAIhwxwXuqsFCMME11t0P3ub542J18jOMXtG9PU113V3Lyp1HwXTcv8rc Kq6wF/QPzJD4MJHiyiE2iM46TOKDIQt9xSobm7XMKKXHtoaDVnaNk6I1IF0PwB1l6O OPGzq/hpkbL4wUjPrKWedg27XT/jZ0E/v4ztj7gqPVCT48B7Tu9wJuzIKAEyIPPw/M HOfLEOHNhXGebG8Q06o6gNvaxIMAOPlswFZosquvzduH6l/1Eb3YZu+y4z16Jo0GLe 1W+g+iXB+q27IOB+k2y3hCfcQFDpihVbcCT//u7pEAyTOHZUhL3WfAk3UJXhYjCWoA bk8Irh66vo02Q== Content-Type: multipart/mixed; boundary="------------qPCFY1O0qWf5I3CUtLJ0EaAv" Message-ID: <4b9db14c-5367-4357-b2fc-fbd9a08e4c98@postgrespro.ru> Date: Fri, 26 Jan 2024 20:08:08 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Alvaro Herrera , vignesh C Cc: pgsql-hackers@lists.postgresql.org References: <202401261636.pwqfhwf3hrns@alvherre.pgsql> Content-Language: en-US From: Dmitry Koval In-Reply-To: <202401261636.pwqfhwf3hrns@alvherre.pgsql> 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. --------------qPCFY1O0qWf5I3CUtLJ0EaAv Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit git format-patch -4 HEAD -v 23 ============================= Thanks! I excluded regression test "Test: split partition witch identity column" from script src/test/regress/sql/partition_split.sql because after commit [1] partitions cannot contain identity columns and queries CREATE TABLE salesmans2_5(salesman_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, salesman_name VARCHAR(30)); ALTER TABLE salesmans ATTACH PARTITION salesmans2_5 FOR VALUES FROM (2) TO (5); returns ERROR: table "salesmans2_5" being attached contains an identity column "salesman_id" DETAIL: The new partition may not contain an identity column. [1] https://github.com/postgres/postgres/commit/699586315704a8268808e3bdba4cb5924a038c49 -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------qPCFY1O0qWf5I3CUtLJ0EaAv Content-Type: text/plain; charset=UTF-8; name="v23-0001-ALTER-TABLE-MERGE-PARTITIONS-command.patch" Content-Disposition: attachment; filename="v23-0001-ALTER-TABLE-MERGE-PARTITIONS-command.patch" Content-Transfer-Encoding: base64 RnJvbSAzMDQxZGVlMWZhODYzNjNkYmFlZDEyY2RlMWQzOGYwNjFmNWZkYTFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb3ZhbCBEbWl0cnkgPGQua292YWxAcG9zdGdyZXNw cm8ucnU+CkRhdGU6IE1vbiwgMTkgU2VwIDIwMjIgMTY6MDY6MDMgKzAzMDAKU3ViamVjdDog W1BBVENIIHYyMyAxLzRdIEFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZAoK LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAz NTEgKysrKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAg ICAgICAgfCAgMjIgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAg ICAgICAgICB8ICA4OSArKysKIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmMgICAgICAgICB8IDIwNyArKysrKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o ICAgICAgICAgICAgICAgIHwgIDEzICsKIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFy dGJvdW5kcy5oICAgICAgICAgfCAgIDYgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0 aXRpb24tbWVyZ2Uub3V0ICAgIHwgMTk5ICsrKysrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNv bGF0aW9uX3NjaGVkdWxlICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3Nw ZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjIHwgIDU0ICsrCiAuLi4vdGVzdF9kZGxfZGVwYXJz ZS90ZXN0X2RkbF9kZXBhcnNlLmMgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0IHwgNzM2ICsrKysrKysrKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICst CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsICAgICAgfCA0MzQg KysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAg ICAgICB8ICAgMSArCiAxNSBmaWxlcyBjaGFuZ2VkLCAyMTAwIGluc2VydGlvbnMoKyksIDE5 IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9l eHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1tZXJnZS5zcGVjCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0CiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdl LnNxbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNjhmNjU4ZTgzNC4uYTQ0 YTgxNTZjZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTY2Miw2ICs2NjIs OCBAQCBzdGF0aWMgdm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5UmVmcyhSZWxhdGlv biBwYXJ0aXRpb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lk IGF0dHR5cGlkLCBjb25zdCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0aWMgY2hhciBHZXRB dHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUp OwogCitzdGF0aWMgdm9pZCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwg QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCQkJCSAgUGFydGl0 aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlEZWZpbmVSZWxhdGlvbgpAQCAtNDczMyw2ICs0NzM1LDEwIEBA IEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykKIAkJCQljbWRfbG9ja21vZGUg PSBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRf TWVyZ2VQYXJ0aXRpb25zOgorCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxv Y2s7CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CQkJLyogb29wcyAqLwogCQkJCWVsb2co RVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCQkgKGlu dCkgY21kLT5zdWJ0eXBlKTsKQEAgLTUxNTgsNiArNTE2NCwxMSBAQCBBVFByZXBDbWQoTGlz dCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBO byBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJCQlwYXNzID0gQVRfUEFTU19N SVNDOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJQVRTaW1w bGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFKTsKKwkJCS8qIE5v IGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8KKwkJCXBhc3MgPSBBVF9QQVNTX01J U0M7CisJCQlicmVhazsKIAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJP UiwgInVucmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNt ZC0+c3VidHlwZSk7CkBAIC01NTQ4LDYgKzU1NTksMTQgQEAgQVRFeGVjQ21kKExpc3QgKip3 cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRp b25GaW5hbGl6ZToKIAkJCWFkZHJlc3MgPSBBVEV4ZWNEZXRhY2hQYXJ0aXRpb25GaW5hbGl6 ZShyZWwsICgoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmKS0+bmFtZSk7CiAJCQlicmVhazsK KwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3Jt Q21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAorCQkJCQkJCQkJ ICBjdXJfcGFzcywgY29udGV4dCk7CisJCQlBc3NlcnQoY21kICE9IE5VTEwpOworCQkJQXNz ZXJ0KHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUp OworCQkJQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKHdxdWV1ZSwgdGFiLCByZWwsIChQYXJ0aXRp b25DbWQgKikgY21kLT5kZWYsCisJCQkJCQkJCSAgY29udGV4dCk7CisJCQlicmVhazsKIAkJ ZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBh bHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC02 NTM2LDYgKzY1NTUsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxl VHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIjsKIAkJY2FzZSBB VF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCXJldHVybiAiREVUQUNIIFBBUlRJVElP TiAuLi4gRklOQUxJWkUiOworCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCXJldHVy biAiTUVSR0UgUEFSVElUSU9OUyI7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQlyZXR1 cm4gIkFMVEVSIENPTFVNTiAuLi4gQUREIElERU5USVRZIjsKIAkJY2FzZSBBVF9TZXRJZGVu dGl0eToKQEAgLTE4ODEyLDYgKzE4ODMzLDM3IEBAIFF1ZXVlUGFydGl0aW9uQ29uc3RyYWlu dFZhbGlkYXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gc2NhbnJlbCwKIAl9CiB9CiAK Ky8qCisgKiBhdHRhY2hQYXJ0aXRpb25UYWJsZTogYXR0YWNoIG5ldyBwYXJ0aXRpb24gdG8g cGFydGl0aW9uZWQgdGFibGUKKyAqCisgKiB3cXVldWU6IHRoZSBBTFRFUiBUQUJMRSB3b3Jr IHF1ZXVlOyBjYW4gYmUgTlVMTCB3aGVuIG5vdCBydW5uaW5nIGFzIHBhcnQKKyAqICAgb2Yg YW4gQUxURVIgVEFCTEUgc2VxdWVuY2UuCisgKiByZWw6IHBhcnRpdGlvbmVkIHJlbGF0aW9u OworICogYXR0YWNocmVsOiByZWxhdGlvbiBvZiBhdHRhY2hlZCBwYXJ0aXRpb247CisgKiBi b3VuZDogYm91bmRzIG9mIGF0dGFjaGVkIHJlbGF0aW9uLgorICovCitzdGF0aWMgdm9pZAor YXR0YWNoUGFydGl0aW9uVGFibGUoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBhdHRhY2hyZWwsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpCit7CisJLyogT0sg dG8gY3JlYXRlIGluaGVyaXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1lZCB0 aGVyZSAqLworCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0cnVlKTsKKwor CS8qIFVwZGF0ZSB0aGUgcGdfY2xhc3MgZW50cnkuICovCisJU3RvcmVQYXJ0aXRpb25Cb3Vu ZChhdHRhY2hyZWwsIHJlbCwgYm91bmQpOworCisJLyogRW5zdXJlIHRoZXJlIGV4aXN0cyBh IGNvcnJlY3Qgc2V0IG9mIGluZGV4ZXMgaW4gdGhlIHBhcnRpdGlvbi4gKi8KKwlBdHRhY2hQ YXJ0aXRpb25FbnN1cmVJbmRleGVzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOworCisJLyog YW5kIHRyaWdnZXJzICovCisJQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKHJlbCwgYXR0 YWNocmVsKTsKKworCS8qCisJICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMuICBD YWxsZWUgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAKKwkgKiBmb3IgcGhhc2UgMyBj b25zdHJhaW50IHZlcmlmaWNhdGlvbi4KKwkgKi8KKwlDbG9uZUZvcmVpZ25LZXlDb25zdHJh aW50cyh3cXVldWUsIHJlbCwgYXR0YWNocmVsKTsKK30KKwogLyoKICAqIEFMVEVSIFRBQkxF IDxuYW1lPiBBVFRBQ0ggUEFSVElUSU9OIDxwYXJ0aXRpb24tbmFtZT4gRk9SIFZBTFVFUwog ICoKQEAgLTE5MDE0LDIzICsxOTA2Niw4IEBAIEFURXhlY0F0dGFjaFBhcnRpdGlvbihMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAogCWNoZWNrX25l d19wYXJ0aXRpb25fYm91bmQoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXR0YWNocmVsKSwg cmVsLAogCQkJCQkJCSAgY21kLT5ib3VuZCwgcHN0YXRlKTsKIAotCS8qIE9LIHRvIGNyZWF0 ZSBpbmhlcml0YW5jZS4gIFJlc3Qgb2YgdGhlIGNoZWNrcyBwZXJmb3JtZWQgdGhlcmUgKi8K LQlDcmVhdGVJbmhlcml0YW5jZShhdHRhY2hyZWwsIHJlbCwgdHJ1ZSk7Ci0KLQkvKiBVcGRh dGUgdGhlIHBnX2NsYXNzIGVudHJ5LiAqLwotCVN0b3JlUGFydGl0aW9uQm91bmQoYXR0YWNo cmVsLCByZWwsIGNtZC0+Ym91bmQpOwotCi0JLyogRW5zdXJlIHRoZXJlIGV4aXN0cyBhIGNv cnJlY3Qgc2V0IG9mIGluZGV4ZXMgaW4gdGhlIHBhcnRpdGlvbi4gKi8KLQlBdHRhY2hQYXJ0 aXRpb25FbnN1cmVJbmRleGVzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOwotCi0JLyogYW5k IHRyaWdnZXJzICovCi0JQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKHJlbCwgYXR0YWNo cmVsKTsKLQotCS8qCi0JICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMuICBDYWxs ZWUgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAKLQkgKiBmb3IgcGhhc2UgMyBjb25z dHJhaW50IHZlcmlmaWNhdGlvbi4KLQkgKi8KLQlDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50 cyh3cXVldWUsIHJlbCwgYXR0YWNocmVsKTsKKwkvKiBBdHRhY2ggcGFydGl0aW9uIHRvIHBh cnRpdGlvbmVkIHRhYmxlLiAqLworCWF0dGFjaFBhcnRpdGlvblRhYmxlKHdxdWV1ZSwgcmVs LCBhdHRhY2hyZWwsIGNtZC0+Ym91bmQpOwogCiAJLyoKIAkgKiBHZW5lcmF0ZSBwYXJ0aXRp b24gY29uc3RyYWludCBmcm9tIHRoZSBwYXJ0aXRpb24gYm91bmQgc3BlY2lmaWNhdGlvbi4K QEAgLTIwNTg0LDMgKzIwNjIxLDI4MyBAQCBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0 eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpCiAKIAlyZXR1cm4gY3N0b3JhZ2U7CiB9 CisKKy8qCisgKiBjcmVhdGVQYXJ0aXRpb25UYWJsZTogY3JlYXRlIHRhYmxlIGZvciBuZXcg cGFydGl0aW9uIHdpdGggZ2l2ZW4gbmFtZQorICogKG5ld1BhcnROYW1lKSBsaWtlIHRhYmxl IChtb2RlbFJlbE5hbWUpCisgKgorICogRW11bGF0ZXMgY29tbWFuZDogQ1JFQVRFIFRBQkxF IDxuZXdQYXJ0TmFtZT4gKExJS0UgPG1vZGVsUmVsTmFtZT4KKyAqIElOQ0xVRElORyBBTEwg RVhDTFVESU5HIElOREVYRVMpCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVQYXJ0aXRpb25U YWJsZShSYW5nZVZhciAqbmV3UGFydE5hbWUsIFJhbmdlVmFyICptb2RlbFJlbE5hbWUsCisJ CQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJQ3JlYXRlU3Rt dCAqY3JlYXRlU3RtdDsKKwlUYWJsZUxpa2VDbGF1c2UgKnRsYzsKKwlQbGFubmVkU3RtdCAq d3JhcHBlcjsKKworCWNyZWF0ZVN0bXQgPSBtYWtlTm9kZShDcmVhdGVTdG10KTsKKwljcmVh dGVTdG10LT5yZWxhdGlvbiA9IG5ld1BhcnROYW1lOworCWNyZWF0ZVN0bXQtPnRhYmxlRWx0 cyA9IE5JTDsKKwljcmVhdGVTdG10LT5pbmhSZWxhdGlvbnMgPSBOSUw7CisJY3JlYXRlU3Rt dC0+Y29uc3RyYWludHMgPSBOSUw7CisJY3JlYXRlU3RtdC0+b3B0aW9ucyA9IE5JTDsKKwlj cmVhdGVTdG10LT5vbmNvbW1pdCA9IE9OQ09NTUlUX05PT1A7CisJY3JlYXRlU3RtdC0+dGFi bGVzcGFjZW5hbWUgPSBOVUxMOworCWNyZWF0ZVN0bXQtPmlmX25vdF9leGlzdHMgPSBmYWxz ZTsKKworCXRsYyA9IG1ha2VOb2RlKFRhYmxlTGlrZUNsYXVzZSk7CisJdGxjLT5yZWxhdGlv biA9IG1vZGVsUmVsTmFtZTsKKworCS8qCisJICogSW5kZXhlcyB3aWxsIGJlIGluaGVyaXRl ZCBvbiAiYXR0YWNoIG5ldyBwYXJ0aXRpb25zIiBzdGFnZSwgYWZ0ZXIgZGF0YQorCSAqIG1v dmluZy4KKwkgKi8KKwl0bGMtPm9wdGlvbnMgPSBDUkVBVEVfVEFCTEVfTElLRV9BTEwgJiB+ Q1JFQVRFX1RBQkxFX0xJS0VfSU5ERVhFUzsKKwl0bGMtPnJlbGF0aW9uT2lkID0gSW52YWxp ZE9pZDsKKwljcmVhdGVTdG10LT50YWJsZUVsdHMgPSBsYXBwZW5kKGNyZWF0ZVN0bXQtPnRh YmxlRWx0cywgdGxjKTsKKworCS8qIE5lZWQgdG8gbWFrZSBhIHdyYXBwZXIgUGxhbm5lZFN0 bXQuICovCisJd3JhcHBlciA9IG1ha2VOb2RlKFBsYW5uZWRTdG10KTsKKwl3cmFwcGVyLT5j b21tYW5kVHlwZSA9IENNRF9VVElMSVRZOworCXdyYXBwZXItPmNhblNldFRhZyA9IGZhbHNl OworCXdyYXBwZXItPnV0aWxpdHlTdG10ID0gKE5vZGUgKikgY3JlYXRlU3RtdDsKKwl3cmFw cGVyLT5zdG10X2xvY2F0aW9uID0gY29udGV4dC0+cHN0bXQtPnN0bXRfbG9jYXRpb247CisJ d3JhcHBlci0+c3RtdF9sZW4gPSBjb250ZXh0LT5wc3RtdC0+c3RtdF9sZW47CisKKwlQcm9j ZXNzVXRpbGl0eSh3cmFwcGVyLAorCQkJCSAgIGNvbnRleHQtPnF1ZXJ5U3RyaW5nLAorCQkJ CSAgIGZhbHNlLAorCQkJCSAgIFBST0NFU1NfVVRJTElUWV9TVUJDT01NQU5ELAorCQkJCSAg IE5VTEwsCisJCQkJICAgTlVMTCwKKwkJCQkgICBOb25lX1JlY2VpdmVyLAorCQkJCSAgIE5V TEwpOworfQorCisvKgorICogU3RydWN0IHdpdGggY29udGV4dCBvZiBtZXJnZWQgcGFydGl0 aW9uCisgKi8KK3R5cGVkZWYgc3RydWN0IE1lcmdlZFBhcnRDb250ZXh0Cit7CisJUmVsYXRp b24JcGFydFJlbDsJCS8qIHJlbGF0aW9uIGZvciBwYXJ0aXRpb24gKi8KK30JCQlNZXJnZWRQ YXJ0Q29udGV4dDsKKworLyoKKyAqIG1vdmVNZXJnZWRUYWJsZXNSb3dzOiBzY2FuIG1lcmdl ZCBwYXJ0aXRpb25zIChwYXJ0Q29udGV4dCkgb2YgcGFydGl0aW9uZWQKKyAqIHRhYmxlIChy ZWwpIGFuZCBtb3ZlIHJvd3MgaW50byBuZXcgcGFydGl0aW9uIChuZXdQYXJ0UmVsKS4KKyAq Lworc3RhdGljIHZvaWQKK21vdmVNZXJnZWRUYWJsZXNSb3dzKFJlbGF0aW9uIHJlbCwgTGlz dCAqcGFydENvbnRleHQsIFJlbGF0aW9uIG5ld1BhcnRSZWwpCit7CisJQ29tbWFuZElkCW15 Y2lkOworCisJLyogVGhlIEZTTSBpcyBlbXB0eSwgc28gZG9uJ3QgYm90aGVyIHVzaW5nIGl0 LiAqLworCWludAkJCXRpX29wdGlvbnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9GU007CisJTGlz dENlbGwgICAqbGlzdHB0cjsKKwlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUg b2YgYnVsayBpbnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZHN0 c2xvdDsKKworCW15Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKworCS8qIFBy ZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gKi8KKwli aXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5 IHR1cGxlIHNsb3QuICovCisJZHN0c2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChS ZWxhdGlvbkdldERlc2NyKG5ld1BhcnRSZWwpLAorCQkJCQkJCQkJICAgdGFibGVfc2xvdF9j YWxsYmFja3MobmV3UGFydFJlbCkpOworCUV4ZWNTdG9yZUFsbE51bGxUdXBsZShkc3RzbG90 KTsKKworCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRleHQpCisJeworCQlNZXJnZWRQYXJ0 Q29udGV4dCAqcGMgPSAoTWVyZ2VkUGFydENvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOwor CQlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwkJVHVwbGVDb252ZXJzaW9uTWFwICp0dXBs ZV9tYXA7CisJCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwkJU25hcHNob3QJc25hcHNob3Q7CisK KwkJLyogQ3JlYXRlIHR1cGxlIHNsb3QgZm9yIG5ldyBwYXJ0aXRpb24uICovCisJCXNyY3Ns b3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihwYy0+cGFy dFJlbCksCisJCQkJCQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3MocGMtPnBhcnRSZWwp KTsKKworCQkvKgorCQkgKiBNYXAgY29tcHV0aW5nIGZvciBtb3ZpbmcgYXR0cmlidXRlcyBv ZiBtZXJnZWQgcGFydGl0aW9uIHRvIG5ldworCQkgKiBwYXJ0aXRpb24uCisJCSAqLworCQl0 dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IocGMt PnBhcnRSZWwpLAorCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0RGVzY3IobmV3UGFydFJlbCkp OworCisJCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93cy4gKi8KKwkJc25hcHNob3QgPSBSZWdp c3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCQlzY2FuID0gdGFibGVfYmVn aW5zY2FuKHBjLT5wYXJ0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkJd2hpbGUgKHRh YmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNyY3Ns b3QpKQorCQl7CisJCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQkJLyogRXh0 cmFjdCBkYXRhIGZyb20gb2xkIHR1cGxlLiAqLworCQkJc2xvdF9nZXRhbGxhdHRycyhzcmNz bG90KTsKKworCQkJaWYgKHR1cGxlX21hcCkKKwkJCXsKKwkJCQkvKiBOZWVkIHRvIHVzZSBt YXAgZm9yIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJCQlpbnNlcnRzbG90ID0gZXhlY3V0ZV9h dHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1hcCwgc3Jjc2xvdCwgZHN0c2xvdCk7CisJ CQl9CisJCQllbHNlCisJCQl7CisJCQkJLyogQ29weSBhdHRyaWJ1dGVzIGRpcmVjdGx5LiAq LworCQkJCWluc2VydHNsb3QgPSBkc3RzbG90OworCisJCQkJRXhlY0NsZWFyVHVwbGUoaW5z ZXJ0c2xvdCk7CisKKwkJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX3ZhbHVlcywgc3Jjc2xv dC0+dHRzX3ZhbHVlcywKKwkJCQkJICAgc2l6ZW9mKERhdHVtKSAqIHNyY3Nsb3QtPnR0c19u dmFsaWQpOworCQkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfaXNudWxsLCBzcmNzbG90LT50 dHNfaXNudWxsLAorCQkJCQkgICBzaXplb2YoYm9vbCkgKiBzcmNzbG90LT50dHNfbnZhbGlk KTsKKworCQkJCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShpbnNlcnRzbG90KTsKKwkJCX0KKwor CQkJLyogV3JpdGUgdGhlIHR1cGxlIG91dCB0byB0aGUgbmV3IHJlbGF0aW9uLiAqLworCQkJ dGFibGVfdHVwbGVfaW5zZXJ0KG5ld1BhcnRSZWwsIGluc2VydHNsb3QsIG15Y2lkLCB0aV9v cHRpb25zLCBiaXN0YXRlKTsKKworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJfQor CisJCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CisKKwkJaWYgKHR1cGxlX21hcCkKKwkJCWZyZWVfY29udmVyc2lvbl9tYXAodHVwbGVf bWFwKTsKKworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3QpOworCX0K KworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QoZHN0c2xvdCk7CisJRnJlZUJ1bGtJ bnNlcnRTdGF0ZShiaXN0YXRlKTsKKworCXRhYmxlX2ZpbmlzaF9idWxrX2luc2VydChuZXdQ YXJ0UmVsLCB0aV9vcHRpb25zKTsKK30KKworLyoKKyAqIEFMVEVSIFRBQkxFIDxuYW1lPiBN RVJHRSBQQVJUSVRJT05TIDxwYXJ0aXRpb24tbGlzdD4gSU5UTyA8cGFydGl0aW9uLW5hbWU+ CisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1 ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCSAgUGFydGl0 aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlS ZWxhdGlvbgluZXdQYXJ0UmVsOworCUxpc3RDZWxsICAgKmxpc3RwdHI7CisJTGlzdAkgICAq cGFydENvbnRleHRzID0gTklMOworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCWNoYXIJCXRt cFJlbE5hbWVbTkFNRURBVEFMRU5dOworCVJhbmdlVmFyICAgKm1lcmdlUGFydE5hbWUgPSBj bWQtPm5hbWU7CisJYm9vbAkJaXNTYW1lTmFtZSA9IGZhbHNlOworCisJLyoKKwkgKiBMb2Nr IGFsbCBtZXJnZWQgcGFydGl0aW9ucywgY2hlY2sgdGhlbSBhbmQgY3JlYXRlIGxpc3Qgd2l0 aCBwYXJ0aXRpb25zCisJICogY29udGV4dHMuCisJICovCisJZm9yZWFjaChsaXN0cHRyLCBj bWQtPnBhcnRsaXN0KQorCXsKKwkJUmFuZ2VWYXIgICAqbmFtZSA9IChSYW5nZVZhciAqKSBs Zmlyc3QobGlzdHB0cik7CisJCU1lcmdlZFBhcnRDb250ZXh0ICpwYzsKKworCQlwYyA9IChN ZXJnZWRQYXJ0Q29udGV4dCAqKSBwYWxsb2MwKHNpemVvZihNZXJnZWRQYXJ0Q29udGV4dCkp OworCisJCS8qCisJCSAqIFdlIGFyZSBnb2luZyB0byBkZXRhY2ggYW5kIHJlbW92ZSB0aGlz IHBhcnRpdGlvbjogbmVlZCB0byB1c2UKKwkJICogZXhjbHVzaXZlIGxvY2sgZm9yIHByZXZl bnQgRE1MLXF1ZXJpZXMgdG8gdGhlIHBhcnRpdGlvbi4KKwkJICovCisJCXBjLT5wYXJ0UmVs ID0gdGFibGVfb3BlbnJ2KG5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCWlmIChw Yy0+cGFydFJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04pCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKKwkJCQkJIGVycm1zZygiY2Fubm90IG1lcmdlIG5vbi10YWJsZSBwYXJ0aXRpb24gXCIl c1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYy0+cGFydFJlbCkpKSk7 CisKKwkJLyoKKwkJICogQ2hlY2tpbmcgdGhhdCB0d28gcGFydGl0aW9ucyBoYXZlIHRoZSBz YW1lIG5hbWUgd2FzIGJlZm9yZSwKKwkJICogaW4gZnVuY3Rpb24gdHJhbnNmb3JtUGFydGl0 aW9uQ21kRm9yTWVyZ2UoKS4KKwkJICovCisJCWlmIChlcXVhbChuYW1lLCBjbWQtPm5hbWUp KQorCQkJLyogT25lIG5ldyBwYXJ0aXRpb24gY2FuIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyBt ZXJnZWQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRydWU7CisKKwkJLyogU3Rv cmUgcGFydGl0aW9uIGNvbnRleHQgaW50byBwYXJ0aXRpb25zIGxpc3QuICovCisJCXBhcnRD b250ZXh0cyA9IGxhcHBlbmQocGFydENvbnRleHRzLCBwYyk7CisJfQorCisJLyogRGV0YWNo IGFsbCBtZXJnZWQgcGFydGl0aW9ucy4gKi8KKwlkZWZhdWx0UGFydE9pZCA9CisJCWdldF9k ZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWws IHRydWUpKTsKKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwl7CisJCU1lcmdl ZFBhcnRDb250ZXh0ICpwYyA9IChNZXJnZWRQYXJ0Q29udGV4dCAqKSBsZmlyc3QobGlzdHB0 cik7CisKKwkJUmVtb3ZlSW5oZXJpdGFuY2UocGMtPnBhcnRSZWwsIHJlbCwgZmFsc2UpOwor CQkvKiBEbyB0aGUgZmluYWwgcGFydCBvZiBkZXRhY2hpbmcuICovCisJCURldGFjaFBhcnRp dGlvbkZpbmFsaXplKHJlbCwgcGMtPnBhcnRSZWwsIGZhbHNlLCBkZWZhdWx0UGFydE9pZCk7 CisJfQorCisJLyogQ3JlYXRlIHRhYmxlIGZvciBuZXcgcGFydGl0aW9uLCB1c2UgcGFydGl0 aW9uZWQgdGFibGUgYXMgbW9kZWwuICovCisJaWYgKGlzU2FtZU5hbWUpCisJeworCQkvKiBD cmVhdGUgcGFydGl0aW9uIHRhYmxlIHdpdGggZ2VuZXJhdGVkIHRlbXBhcmFyeSBuYW1lLiAq LworCQlzcHJpbnRmKHRtcFJlbE5hbWUsICJtZXJnZS0ldS0lWC10bXAiLCBSZWxhdGlvbkdl dFJlbGlkKHJlbCksIE15UHJvY1BpZCk7CisJCW1lcmdlUGFydE5hbWUgPSBtYWtlUmFuZ2VW YXIoZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkpLAorCQkJ CQkJCQkJIHRtcFJlbE5hbWUsIC0xKTsKKwl9CisJY3JlYXRlUGFydGl0aW9uVGFibGUobWVy Z2VQYXJ0TmFtZSwKKwkJCQkJCSBtYWtlUmFuZ2VWYXIoZ2V0X25hbWVzcGFjZV9uYW1lKFJl bGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkpLAorCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpLCAtMSksCisJCQkJCQkgY29udGV4dCk7CisKKwkvKiBPcGVuIHRoZSBu ZXcgcGFydGl0aW9uIGFuZCBhY3F1aXJlIGV4Y2x1c2l2ZSBsb2NrIG9uIGl0LiAqLworCW5l d1BhcnRSZWwgPSB0YWJsZV9vcGVucnYobWVyZ2VQYXJ0TmFtZSwgQWNjZXNzRXhjbHVzaXZl TG9jayk7CisKKwkvKiBDb3B5IGRhdGEgZnJvbSBtZXJnZWQgcGFydGl0aW9ucyB0byBuZXcg cGFydGl0aW9uLiAqLworCW1vdmVNZXJnZWRUYWJsZXNSb3dzKHJlbCwgcGFydENvbnRleHRz LCBuZXdQYXJ0UmVsKTsKKworCS8qCisJICogQXR0YWNoIG5ldyBwYXJ0aXRpb24gdG8gcGFy dGl0aW9uZWQgdGFibGUuIHdxdWV1ZSA9IE5VTEw6IHZlcmlmaWNhdGlvbgorCSAqIGZvciBl YWNoIGNsb25lZCBjb25zdHJhaW50IGlzIG5vdCBuZWVkLgorCSAqLworCWF0dGFjaFBhcnRp dGlvblRhYmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwgY21kLT5ib3VuZCk7CisKKwkvKiBV bmxvY2sgYW5kIGRyb3AgbWVyZ2VkIHBhcnRpdGlvbnMuICovCisJZm9yZWFjaChsaXN0cHRy LCBwYXJ0Q29udGV4dHMpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJTWVyZ2Vk UGFydENvbnRleHQgKnBjID0gKE1lcmdlZFBhcnRDb250ZXh0ICopIGxmaXJzdChsaXN0cHRy KTsKKworCQkvKiBHZXQgcmVsYXRpb24gaWQgYmVmb3JlIHRhYmxlX2Nsb3NlKCkgY2FsbC4g Ki8KKwkJb2JqZWN0Lm9iamVjdElkID0gUmVsYXRpb25HZXRSZWxpZChwYy0+cGFydFJlbCk7 CisJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQlvYmplY3Qub2Jq ZWN0U3ViSWQgPSAwOworCisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLwor CQl0YWJsZV9jbG9zZShwYy0+cGFydFJlbCwgTm9Mb2NrKTsKKworCQlwZXJmb3JtRGVsZXRp b24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgMCk7CisKKwkJcGZyZWUocGMpOworCX0KKwor CS8qIFJlbmFtZSBuZXcgcGFydGl0aW9uIGlmIGl0IGlzIG5lZWRlZC4gKi8KKwlpZiAoaXNT YW1lTmFtZSkKKwl7CisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3Vu dGVyIHRvIG1ha2UgdGhlIG5ldyBwYXJ0aXRpb24gdHVwbGUKKwkJICogdmlzaWJsZSBmb3Ig cmVuYW1lLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwkJLyogUmVu YW1lIHBhcnRpdGlvbi4gKi8KKwkJUmVuYW1lUmVsYXRpb25JbnRlcm5hbChSZWxhdGlvbkdl dFJlbGlkKG5ld1BhcnRSZWwpLAorCQkJCQkJCSAgIGNtZC0+bmFtZS0+cmVsbmFtZSwgZmFs c2UsIGZhbHNlKTsKKwl9CisJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJ dGFibGVfY2xvc2UobmV3UGFydFJlbCwgTm9Mb2NrKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4 IDEzMGY3ZmM3YzMuLjRhNWIxM2MzMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNzQ0LDcgKzc0 NCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBP VEhFUlMgT1VUX1AgT1VURVJfUAogCU9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5H IE9XTkVEIE9XTkVSCiAKLQlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFS VElUSU9OIFBBU1NJTkcgUEFTU1dPUkQKKwlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBB UlRJQUwgUEFSVElUSU9OIFBBUlRJVElPTlMgUEFTU0lORyBQQVNTV09SRAogCVBMQUNJTkcg UExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQ UkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwg UFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElPTgpAQCAtMjI5OSw2ICsy Mjk5LDcgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJbi0+c3VidHlwZSA9IEFUX0F0dGFjaFBh cnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0gJDM7CiAJCQkJCWNtZC0+Ym91bmQgPSAkNDsK KwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZh bHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTIzMTMsNiArMjMxNCw3 IEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9EZXRhY2hQYXJ0aXRp b247CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJ CQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9ICQ0Owog CQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTIzMjYsNiArMjMyOCwyMSBAQCBw YXJ0aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfRGV0YWNoUGFydGl0aW9uRmlu YWxpemU7CiAJCQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsK KwkJCQkJY21kLT5wYXJ0bGlzdCA9IE5VTEw7CisJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZh bHNlOworCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQkID0gKE5vZGUgKikg bjsKKwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAo KSBJTlRPIDxwYXJ0aXRpb25fbmFtZT4gKi8KKwkJCXwgTUVSR0UgUEFSVElUSU9OUyAnKCcg cXVhbGlmaWVkX25hbWVfbGlzdCAnKScgSU5UTyBxdWFsaWZpZWRfbmFtZQorCQkJCXsKKwkJ CQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQlQ YXJ0aXRpb25DbWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7CisKKwkJCQkJbi0+ c3VidHlwZSA9IEFUX01lcmdlUGFydGl0aW9uczsKKwkJCQkJY21kLT5uYW1lID0gJDc7CisJ CQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gJDQ7CiAJCQkJ CWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7 CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTIzNDIsNiArMjM1OSw3IEBAIGluZGV4X3Bh cnRpdGlvbl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJ CQkJCWNtZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21k LT5wYXJ0bGlzdCA9IE5VTEw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJ CQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTE3MzI0LDYgKzE3MzQyLDcgQEAgdW5y ZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVJTRVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJU SVRJT04KKwkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJ CQl8IFBMQU5TCkBAIC0xNzkyNSw2ICsxNzk0NCw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoK IAkJCXwgUEFSU0VSCiAJCQl8IFBBUlRJQUwKIAkJCXwgUEFSVElUSU9OCisJCQl8IFBBUlRJ VElPTlMKIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAogCQkJfCBQTEFDSU5HCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCA1NmFjNGY1MTZlLi44ODRhMjgwODY5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTU4LDYgKzU4LDggQEAK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJz ZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgorI2luY2x1ZGUgInBh cnRpdGlvbmluZy9wYXJ0ZGVzYy5oIgorI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1 dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtMzQwNCw2ICsz NDA2LDgwIEBAIHRyYW5zZm9ybVJ1bGVTdG10KFJ1bGVTdG10ICpzdG10LCBjb25zdCBjaGFy ICpxdWVyeVN0cmluZywKIH0KIAogCisvKgorICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9y TWVyZ2UKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgY29tbWFuZAorICoKKyAqIERvZXMgc2ltcGxlIGNoZWNrcyBmb3IgbWVyZ2VkIHBhcnRp dGlvbnMuIENhbGN1bGF0ZXMgYm91bmQgb2YgcmVzdWx0CisgKiBwYXJ0aXRpb24uCisgKi8K K3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZShDcmVhdGVTdG10 Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJT2lkCQkJZGVmYXVs dFBhcnRPaWQ7CisJT2lkCQkJcGFydE9pZDsKKwlSZWxhdGlvbglwYXJlbnQgPSBjeHQtPnJl bDsKKwlQYXJ0aXRpb25LZXkga2V5OworCWNoYXIJCXN0cmF0ZWd5OworCUxpc3RDZWxsICAg Kmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJYm9vbAkJaXNEZWZhdWx0UGFydCA9IGZh bHNlOworCUxpc3QJICAgKnBhcnRPaWRzID0gTklMOworCisJaWYgKHBhcmVudC0+cmRfcmVs LT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK KwkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUiLCBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnQpKSkpOworCisJa2V5ID0gUmVsYXRpb25HZXRQ YXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJhdGVneSA9IGdldF9wYXJ0aXRpb25fc3RyYXRl Z3koa2V5KTsKKworCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfSEFTSCkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJIGVycm1zZygicGFydGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQg dGFibGUgY2Fubm90IGJlIG1lcmdlZCIpKSk7CisKKwkvKiBJcyBjdXJyZW50IHBhcnRpdGlv biBhIERFRkFVTFQgcGFydGl0aW9uPyAqLworCWRlZmF1bHRQYXJ0T2lkID0gZ2V0X2RlZmF1 bHRfb2lkX2Zyb21fcGFydGRlc2MoCisJCQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFBhcnRp dGlvbkRlc2MocGFyZW50LCB0cnVlKSk7CisKKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRjbWQt PnBhcnRsaXN0KQorCXsKKwkJUmFuZ2VWYXIgICAqbmFtZSA9IChSYW5nZVZhciAqKSBsZmly c3QobGlzdHB0cik7CisKKwkJLyogUGFydGl0aW9ucyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2 ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJCWZvcl9lYWNoX2NlbGwobGlzdHB0cjIsIHBhcnRj bWQtPnBhcnRsaXN0LCBsbmV4dChwYXJ0Y21kLT5wYXJ0bGlzdCwgbGlzdHB0cikpCisJCXsK KwkJCVJhbmdlVmFyICAgKm5hbWUyID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRyMik7 CisKKwkJCWlmIChlcXVhbChuYW1lLCBuYW1lMikpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCSBlcnJtc2co InBhcnRpdGlvbiB3aXRoIG5hbWUgXCIlc1wiIGFscmVhZHkgdXNlZCIsIG5hbWUtPnJlbG5h bWUpKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbmFtZTItPmxv Y2F0aW9uKSk7CisJCX0KKworCQkvKiBTZWFyY2ggREVGQVVMVCBwYXJ0aXRpb24gaW4gdGhl IGxpc3QuICovCisJCXBhcnRPaWQgPSBSYW5nZVZhckdldFJlbGlkKG5hbWUsIE5vTG9jaywg ZmFsc2UpOworCQlpZiAocGFydE9pZCA9PSBkZWZhdWx0UGFydE9pZCkKKwkJCWlzRGVmYXVs dFBhcnQgPSB0cnVlOworCQlwYXJ0T2lkcyA9IGxhcHBlbmRfb2lkKHBhcnRPaWRzLCBwYXJ0 T2lkKTsKKwl9CisKKwkvKiBBbGxvY2F0ZSBib3VuZCBvZiByZXN1bHQgcGFydGl0aW9uLiAq LworCUFzc2VydChwYXJ0Y21kLT5ib3VuZCA9PSBOVUxMKTsKKwlwYXJ0Y21kLT5ib3VuZCA9 IG1ha2VOb2RlKFBhcnRpdGlvbkJvdW5kU3BlYyk7CisKKwkvKiBGaWxsIHBhcnRpdGlvbiBi b3VuZC4gKi8KKwlwYXJ0Y21kLT5ib3VuZC0+c3RyYXRlZ3kgPSBzdHJhdGVneTsKKwlwYXJ0 Y21kLT5ib3VuZC0+bG9jYXRpb24gPSAtMTsKKwlwYXJ0Y21kLT5ib3VuZC0+aXNfZGVmYXVs dCA9IGlzRGVmYXVsdFBhcnQ7CisJaWYgKCFpc0RlZmF1bHRQYXJ0KQorCQljYWxjdWxhdGVf cGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShwYXJlbnQsIHBhcnRjbWQtPnBhcnRsaXN0LAor CQkJCQkJCQkJCQlwYXJ0T2lkcywgcGFydGNtZC0+Ym91bmQsCisJCQkJCQkJCQkJCWN4dC0+ cHN0YXRlKTsKK30KKwogLyoKICAqIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10IC0KICAqCQlw YXJzZSBhbmFseXNpcyBmb3IgQUxURVIgVEFCTEUKQEAgLTM2NzQsNiArMzc1MCwxOSBAQCB0 cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10 LAogCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CiAJCQkJYnJlYWs7CiAK KwkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJCXsKKwkJCQkJUGFydGl0aW9uQ21k ICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKKworCQkJCQlpZiAobGlz dF9sZW5ndGgocGFydGNtZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiks CisJCQkJCQkJCSBlcnJtc2coImxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRh aW5zIGF0IGxlYXN0IHR3byBpdGVtcyIpKSk7CisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNt ZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQpOworCQkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdj bWRzLCBjbWQpOworCQkJCQlicmVhazsKKwkJCQl9CisKIAkJCWRlZmF1bHQ6CiAKIAkJCQkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBi L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggOGExYTVhNzI1 NS4uYjNiM2FhYzAyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5j CkBAIC00OTc4LDMgKzQ5NzgsMjEwIEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19G VU5DVElPTl9BUkdTKQogCiAJUEdfUkVUVVJOX0JPT0wocm93SGFzaCAlIG1vZHVsdXMgPT0g cmVtYWluZGVyKTsKIH0KKworLyoKKyAqIGNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19y YW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9uaW5nKQorICoK KyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNrX3BhcnRpdGlvbnNfZm9y X3NwbGl0KCkgYW5kCisgKiBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZSgp LgorICogVGhpcyBmdW5jdGlvbiBjb21wYXJlcyB1cHBlciBib3VuZCBvZiBmaXJzdF9ib3Vu ZCBhbmQgbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9ib3VuZC4gVGhlc2UgYm91bmRzIHNo b3VsZCBiZSBlcXVhbHMgZXhjZXB0IGNhc2UKKyAqICJkZWZhdWx0UGFydCA9PSB0cnVlIiAo dGhpcyBtZWFucyB0aGF0IG9uZSBvZiBzcGxpdCBwYXJ0aXRpb25zIGlzIERFRkFVTFQpLgor ICogSW4gdGhpcyBjYXNlIHVwcGVyIGJvdW5kIG9mIGZpcnN0X2JvdW5kIGNhbiBiZSBsZXNz IHRoYW4gbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9ib3VuZCBiZWNhdXNlIHNwYWNlIGJl dHdlZW4gb2YgdGhlc2UgYm91bmRzIHdpbGwgYmUgaW5jbHVkZWQgaW4KKyAqIERFRkFVTFQg cGFydGl0aW9uLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQorICogZmly c3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFydGl0aW9uCisgKiBmaXJzdF9ib3VuZDoJCWJv dW5kIG9mIGZpcnN0IHBhcnRpdGlvbgorICogc2Vjb25kX25hbWU6CQluYW1lIG9mIHNlY29u ZCBwYXJ0aXRpb24KKyAqIHNlY29uZF9ib3VuZDoJYm91bmQgb2Ygc2Vjb25kIHBhcnRpdGlv bgorICogZGVmYXVsdFBhcnQ6CQl0cnVlIGlmIG9uZSBvZiBzcGxpdCBwYXJ0aXRpb25zIGlz IERFRkFVTFQKKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZv ciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3R3 b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJCSAg UmFuZ2VWYXIgKmZpcnN0X25hbWUsCisJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpm aXJzdF9ib3VuZCwKKwkJCQkJCQkJICBSYW5nZVZhciAqc2Vjb25kX25hbWUsCisJCQkJCQkJ CSAgUGFydGl0aW9uQm91bmRTcGVjICpzZWNvbmRfYm91bmQsCisJCQkJCQkJCSAgYm9vbCBk ZWZhdWx0UGFydCwKKwkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0 aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0 aW9uUmFuZ2VCb3VuZCAqZmlyc3RfdXBwZXI7CisJUGFydGl0aW9uUmFuZ2VCb3VuZCAqc2Vj b25kX2xvd2VyOworCWludAkJCWNtcHZhbDsKKworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09 IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSk7CisKKwlmaXJzdF91cHBlciA9IG1ha2Vfb25l X3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgZmlyc3RfYm91bmQtPnVwcGVyZGF0dW1zLCBm YWxzZSk7CisJc2Vjb25kX2xvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXks IC0xLCBzZWNvbmRfYm91bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKworCS8qCisJICogbG93 ZXIxPWZhbHNlICh0aGUgc2Vjb25kIHRvIGxhc3QgYXJndW1lbnQpIGZvciBjb3JyZWN0IGNv bXBhcmlzb24gbG93ZXIKKwkgKiBhbmQgdXBwZXIgYm91bmRzLgorCSAqLworCWNtcHZhbCA9 IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkgIGtleS0+ cGFydHN1cGZ1bmMsCisJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkg IHNlY29uZF9sb3dlci0+ZGF0dW1zLCBzZWNvbmRfbG93ZXItPmtpbmQsCisJCQkJCQkJCSAg ZmFsc2UsIGZpcnN0X3VwcGVyKTsKKwlpZiAoKCFkZWZhdWx0UGFydCAmJiBjbXB2YWwpIHx8 IChkZWZhdWx0UGFydCAmJiBjbXB2YWwgPCAwKSkKKwl7CisJCVBhcnRpdGlvblJhbmdlRGF0 dW0gKmRhdHVtID0gbGluaXRpYWwoc2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVtcyk7CisKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RF RklOSVRJT04pLAorCQkJCSBlcnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVz XCIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uIFwi JXNcIiIsCisJCQkJCQlzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFtZS0+cmVsbmFt ZSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikp KTsKKwl9Cit9CisKKy8qCisgKiBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMKKyAqCisgKiBS ZXR1cm5zIGRlc2NyaXB0aW9uIG9mIHBhcnRpdGlvbiB3aXRoIE9pZCAicGFydE9pZCIgYW5k IG5hbWUgIm5hbWUiLgorICovCitzdGF0aWMgUGFydGl0aW9uQm91bmRTcGVjICoKK2dldF9w YXJ0aXRpb25fYm91bmRfc3BlYyhPaWQgcGFydE9pZCwgUmFuZ2VWYXIgKm5hbWUpCit7CisJ SGVhcFR1cGxlCXR1cGxlOworCURhdHVtCQlkYXR1bTsKKwlib29sCQlpc251bGw7CisJUGFy dGl0aW9uQm91bmRTcGVjICpib3VuZHNwZWMgPSBOVUxMOworCisJLyogVHJ5IGZldGNoaW5n IHRoZSB0dXBsZSBmcm9tIHRoZSBjYXRjYWNoZSwgZm9yIHNwZWVkLiAqLworCXR1cGxlID0g U2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgcGFydE9pZCk7CisJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJl bGF0aW9uIFwiJXNcIiIsCisJCQkgbmFtZS0+cmVsbmFtZSk7CisKKwlkYXR1bSA9IFN5c0Nh Y2hlR2V0QXR0cihSRUxPSUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdfY2xhc3NfcmVscGFy dGJvdW5kLAorCQkJCQkJCSZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1Is ICJwYXJ0aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uIFwiJXNcIiBpcyBudWxsIiwKKwkJCSBu YW1lLT5yZWxuYW1lKTsKKworCWJvdW5kc3BlYyA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1H ZXRDU3RyaW5nKGRhdHVtKSk7CisKKwlpZiAoIUlzQShib3VuZHNwZWMsIFBhcnRpdGlvbkJv dW5kU3BlYykpCisJCWVsb2coRVJST1IsICJleHBlY3RlZCBQYXJ0aXRpb25Cb3VuZFNwZWMg Zm9yIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkgbmFtZS0+cmVsbmFtZSk7CisKKwlSZWxlYXNl U3lzQ2FjaGUodHVwbGUpOworCXJldHVybiBib3VuZHNwZWM7Cit9CisKKy8qCisgKiBjYWxj dWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZQorICoKKyAqIENhbGN1bGF0ZXMgdGhl IGJvdW5kIG9mIG1lcmdlZCBwYXJ0aXRpb24gInNwZWMiIGJ5IHVzaW5nIHRoZSBib3VuZHMg b2YKKyAqIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0 aXRpb25lZCB0YWJsZQorICogcGFydE5hbWVzOgkJbmFtZXMgb2YgcGFydGl0aW9ucyB0byBi ZSBtZXJnZWQKKyAqIHBhcnRPaWRzOgkJT2lkcyBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdl ZAorICogc3BlYyAob3V0KToJCWJvdW5kcyBzcGVjaWZpY2F0aW9uIG9mIHRoZSBtZXJnZWQg cGFydGl0aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBm b3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3ZvaWQKK2NhbGN1bGF0ZV9wYXJ0 aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCUxpc3Qg KnBhcnROYW1lcywKKwkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJUGFydGl0 aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRlKQorewor CVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOwor CVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CisKKwlBc3NlcnQoIXNwZWMtPmlzX2RlZmF1 bHQpOworCisJc3dpdGNoIChrZXktPnN0cmF0ZWd5KQorCXsKKwkJY2FzZSBQQVJUSVRJT05f U1RSQVRFR1lfUkFOR0U6CisJCQl7CisJCQkJaW50CQkJaTsKKwkJCQlQYXJ0aXRpb25SYW5n ZUJvdW5kICoqbG93ZXJfYm91bmRzOworCQkJCWludAkJCW5wYXJ0cyA9IGxpc3RfbGVuZ3Ro KHBhcnRPaWRzKTsKKwkJCQlMaXN0CSAgICpib3VuZHMgPSBOSUw7CisKKwkJCQlsb3dlcl9i b3VuZHMgPSAoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKikKKwkJCQkJcGFsbG9jMChucGFydHMg KiBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSk7CisKKwkJCQkvKgorCQkJCSAqIENy ZWF0ZSBhcnJheSBvZiBsb3dlciBib3VuZHMgYW5kIGxpc3Qgb2YKKwkJCQkgKiBQYXJ0aXRp b25Cb3VuZFNwZWMuCisJCQkJICovCisJCQkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsr KQorCQkJCXsKKwkJCQkJYm91bmQgPSBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMobGlzdF9u dGhfb2lkKHBhcnRPaWRzLCBpKSwKKwkJCQkJCQkJCQkJCQkgKFJhbmdlVmFyICopIGxpc3Rf bnRoKHBhcnROYW1lcywgaSkpOworCisJCQkJCWxvd2VyX2JvdW5kc1tpXSA9IG1ha2Vfb25l X3BhcnRpdGlvbl9yYm91bmQoa2V5LCBpLCBib3VuZC0+bG93ZXJkYXR1bXMsIHRydWUpOwor CQkJCQlib3VuZHMgPSBsYXBwZW5kKGJvdW5kcywgYm91bmQpOworCQkJCX0KKworCQkJCS8q IFNvcnQgYXJyYXkgb2YgbG93ZXIgYm91bmRzLiAqLworCQkJCXFzb3J0X2FyZyhsb3dlcl9i b3VuZHMsIG5wYXJ0cywgc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKiksCisJCQkJCQkg IHFzb3J0X3BhcnRpdGlvbl9yYm91bmRfY21wLCAodm9pZCAqKSBrZXkpOworCisJCQkJLyog UmFuZ2VzIG9mIHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQkJCWZvciAo aSA9IDE7IGkgPCBucGFydHM7IGkrKykKKwkJCQl7CisJCQkJCWludAkJCWluZGV4ID0gbG93 ZXJfYm91bmRzW2ldLT5pbmRleDsKKwkJCQkJaW50CQkJcHJldl9pbmRleCA9IGxvd2VyX2Jv dW5kc1tpIC0gMV0tPmluZGV4OworCisJCQkJCWNoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5k c19yYW5nZShwYXJlbnQsCisJCQkJCQkJCQkJCQkJICAoUmFuZ2VWYXIgKikgbGlzdF9udGgo cGFydE5hbWVzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkgIChQYXJ0aXRpb25Cb3Vu ZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBwcmV2X2luZGV4KSwKKwkJCQkJCQkJCQkJCQkg IChSYW5nZVZhciAqKSBsaXN0X250aChwYXJ0TmFtZXMsIGluZGV4KSwKKwkJCQkJCQkJCQkJ CQkgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBpbmRleCksCisJ CQkJCQkJCQkJCQkJICBmYWxzZSwgcHN0YXRlKTsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAq IExvd2VyIGJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbiBpcyBhIGxvd2VyIGJvdW5kIG9mIG1l cmdlZAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQlzcGVjLT5sb3dlcmRhdHVt cyA9CisJCQkJCSgoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93 ZXJfYm91bmRzWzBdLT5pbmRleCkpLT5sb3dlcmRhdHVtczsKKworCQkJCS8qCisJCQkJICog VXBwZXIgYm91bmQgb2YgbGFzdCBwYXJ0aXRpb24gaXMgYSB1cHBlciBib3VuZCBvZiBtZXJn ZWQKKwkJCQkgKiBwYXJ0aXRpb24uCisJCQkJICovCisJCQkJc3BlYy0+dXBwZXJkYXR1bXMg PQorCQkJCQkoKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIGxvd2Vy X2JvdW5kc1tucGFydHMgLSAxXS0+aW5kZXgpKS0+dXBwZXJkYXR1bXM7CisKKwkJCQlwZnJl ZShsb3dlcl9ib3VuZHMpOworCQkJCWxpc3RfZnJlZShib3VuZHMpOworCQkJCWJyZWFrOwor CQkJfQorCisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX0xJU1Q6CisJCQl7CisJCQkJTGlz dENlbGwgICAqbGlzdHB0ciwKKwkJCQkJCSAgICpsaXN0cHRyMjsKKworCQkJCS8qIENvbnNv bGlkYXRlIGJvdW5kcyBmb3IgYWxsIHBhcnRpdGlvbnMgaW4gdGhlIGxpc3QuICovCisJCQkJ Zm9yYm90aChsaXN0cHRyLCBwYXJ0T2lkcywgbGlzdHB0cjIsIHBhcnROYW1lcykKKwkJCQl7 CisJCQkJCVJhbmdlVmFyICAgKm5hbWUgPSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxpc3RwdHIy KTsKKwkJCQkJT2lkCQkJY3VyT2lkID0gbGZpcnN0X29pZChsaXN0cHRyKTsKKworCQkJCQli b3VuZCA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhjdXJPaWQsIG5hbWUpOworCQkJCQlz cGVjLT5saXN0ZGF0dW1zID0gbGlzdF9jb25jYXQoc3BlYy0+bGlzdGRhdHVtcywgYm91bmQt Pmxpc3RkYXR1bXMpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKworCQlkZWZhdWx0Ogor CQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgcGFydGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJ CQkJIChpbnQpIGtleS0+c3RyYXRlZ3kpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAppbmRleCA0NzZkNTVkZDI0Li5lZGZlMzZiZjQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCkBAIC05MjQsNiArOTI0LDE3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblJhbmdl RGF0dW0KIAlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1 bmtub3duICovCiB9IFBhcnRpdGlvblJhbmdlRGF0dW07CiAKKy8qCisgKiBQYXJ0aXRpb25E ZXNjIC0gaW5mbyBhYm91dCBzaW5nbGUgcGFydGl0aW9uIGZvciBBTFRFUiBUQUJMRSBTUExJ VCBQQVJUSVRJT04gY29tbWFuZAorICovCit0eXBlZGVmIHN0cnVjdCBTaW5nbGVQYXJ0aXRp b25TcGVjCit7CisJTm9kZVRhZwkJdHlwZTsKKworCVJhbmdlVmFyICAgKm5hbWU7CQkJLyog bmFtZSBvZiBwYXJ0aXRpb24gKi8KKwlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOwkvKiBG T1IgVkFMVUVTLCBpZiBhdHRhY2hpbmcgKi8KK30gU2luZ2xlUGFydGl0aW9uU3BlYzsKKwog LyoKICAqIFBhcnRpdGlvbkNtZCAtIGluZm8gZm9yIEFMVEVSIFRBQkxFL0lOREVYIEFUVEFD SC9ERVRBQ0ggUEFSVElUSU9OIGNvbW1hbmRzCiAgKi8KQEAgLTkzMiw2ICs5NDMsNyBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25DbWQKIAlOb2RlVGFnCQl0eXBlOwogCVJhbmdlVmFy ICAgKm5hbWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaCAqLwog CVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGlu ZyAqLworCUxpc3QJICAgKnBhcnRsaXN0OwkJLyogbGlzdCBvZiBwYXJ0aXRpb25zLCBmb3Ig U1BMSVQgUEFSVElUSU9OIGNvbW1hbmQgKi8KIAlib29sCQljb25jdXJyZW50OwogfSBQYXJ0 aXRpb25DbWQ7CiAKQEAgLTIyNDgsNiArMjI2MCw3IEBAIHR5cGVkZWYgZW51bSBBbHRlclRh YmxlVHlwZQogCUFUX0F0dGFjaFBhcnRpdGlvbiwJCQkvKiBBVFRBQ0ggUEFSVElUSU9OICov CiAJQVRfRGV0YWNoUGFydGl0aW9uLAkJCS8qIERFVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9E ZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZSwgLyogREVUQUNIIFBBUlRJVElPTiBGSU5BTElaRSAq LworCUFUX01lcmdlUGFydGl0aW9ucywJCQkvKiBNRVJHRSBQQVJUSVRJT05TICovCiAJQVRf QWRkSWRlbnRpdHksCQkJCS8qIEFERCBJREVOVElUWSAqLwogCUFUX1NldElkZW50aXR5LAkJ CQkvKiBTRVQgaWRlbnRpdHkgY29sdW1uIG9wdGlvbnMgKi8KIAlBVF9Ecm9wSWRlbnRpdHks CQkJLyogRFJPUCBJREVOVElUWSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2Vy L2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDIzMzFhY2Fj MDkuLjk4NTQ3NGRmODkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTMyNCw2ICszMjQsNyBA QCBQR19LRVlXT1JEKCJwYXJhbWV0ZXIiLCBQQVJBTUVURVIsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnNlciIsIFBBUlNFUiwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFydGlhbCIsIFBBUlRJQUws IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpdGlv biIsIFBBUlRJVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZ V09SRCgicGFydGl0aW9ucyIsIFBBUlRJVElPTlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3NpbmciLCBQQVNTSU5HLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzd29yZCIsIFBBU1NXT1JELCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFjaW5nIiwg UExBQ0lORywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0 aXRpb25pbmcvcGFydGJvdW5kcy5oCmluZGV4IDNkOWNjMTAzMWYuLjAzMjlkN2JkODQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIv c3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDQgKzE0Mywx MCBAQCBleHRlcm4gaW50CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZv ICpwYXJ0c3VwZnVuYywKIGV4dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0 aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50 IHJlbWFpbmRlcik7CiAKK2V4dGVybiB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRf Zm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnROYW1l cywKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJCQkJUGFydGl0aW9u Qm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRlKTsKKwog I2VuZGlmCQkJCQkJCS8qIFBBUlRCT1VORFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQgYi9zcmMvdGVzdC9pc29s YXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1lcmdlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi45ODQ0NmFhYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKQEAgLTAsMCAr MSwxOTkgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBz MnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxV RVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47 CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBh cnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJF R0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hl cmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTog PC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAq IEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQw NSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAg CiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjog czJiIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0 MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04g TEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0 IE1FUkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFy dF8wMF8yMDsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VU IHQgPSAndGV4dDAxbW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMx YzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1J VDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0t Ky0tLS0tLS0tLS0tCisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQw MW1vZGlmCisyNXx0ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKwor c3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUg czFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMx YnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzog QUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0 XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6 IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0 aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+ CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7Cisg aXx0ICAgICAgICAgIAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0 MTUgICAgIAorIDF8dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAg IAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicnIgczJpIHMyYyBz MWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xB VElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBh cnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWI6 IEJFR0lOOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElP TlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAg czJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9k aWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3Rl cCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBT RUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0tCisg NXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0ZXh0 MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IHMyYnJyIHMyaSBzMmMgczFicnIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMK K3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7Citz dGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVB VEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJU SVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7Citz dGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQw MW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsK K3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMy czogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSstLS0tLS0tLS0t LQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFtb2RpZgorMjV8 dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMmJyciBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBz MnMKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7 CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7Citz dGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VS SUFMSVpBQkxFOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJ VElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0 ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAx bW9kaWYnIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOwor c3RlcCBzMnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJz OiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgICAgICAKKy0tKy0tLS0tLS0tLS0t CisgNXx0ZXh0MDUgICAgIAorMTV8dGV4dDE1ICAgICAKKyAxfHRleHQwMW1vZGlmCisyNXx0 ZXh0MjUgICAgIAorMzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMyYnMgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMK K3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAg czJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJj OiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUg dHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRP IHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFy dCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0 ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzog Q09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAgICAg IAorLS0rLS0tLS0tLS0tLS0KKyA1fHRleHQwNSAgICAgCisxNXx0ZXh0MTUgICAgIAorIDF8 dGV4dDAxbW9kaWYKKzI1fHRleHQyNSAgICAgCiszNXx0ZXh0MzUgICAgIAorKDUgcm93cykK KworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJicyBzMmkgczJjIHMxYnJyIHMxbWVyZyBz MmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBT RVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAn dGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFU SU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0 cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8g dHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0 IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3Rl cCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAg CistLSstLS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0 ZXh0MDFtb2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQor CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFicyBzMW1lcmcgczJi IHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VS SUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3Rl eHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9O IExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBN RVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRf MDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0 ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6 IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7 CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgICAgICAgCistLSst LS0tLS0tLS0tLQorIDV8dGV4dDA1ICAgICAKKzE1fHRleHQxNSAgICAgCisgMXx0ZXh0MDFt b2RpZgorMjV8dGV4dDI1ICAgICAKKzM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCBiMmJlODhlYWQxLi4xMDcx MjU2MTgyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVk dWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEw Myw2ICsxMDMsNyBAQCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0xCiB0ZXN0OiBwYXJ0 aXRpb24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0zCiB0ZXN0 OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS00Cit0ZXN0OiBwYXJ0aXRpb24tbWVyZ2UKIHRlc3Q6 IHBscGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QKIHRlc3Q6IGNsdXN0ZXIt Y29uZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFy dGl0aW9uLW1lcmdlLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uZWM0ODczMmM1OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9z cGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwpAQCAtMCwwICsxLDU0IEBACisjIFZlcmlmeSB0 aGF0IE1FUkdFIG9wZXJhdGlvbiBsb2NrcyBETUwgb3BlcmF0aW9ucyB3aXRoIHBhcnRpdGlv bmVkIHRhYmxlCisKK3NldHVwCit7CisgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRwYXJ0Owor ICBDUkVBVEUgVEFCTEUgdHBhcnQoaSBpbnQsIHQgdGV4dCkgcGFydGl0aW9uIGJ5IHJhbmdl KGkpOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMDBfMTAgUEFSVElUSU9OIE9GIHRwYXJ0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzEwXzIw IFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworICBD UkVBVEUgVEFCTEUgdHBhcnRfMjBfMzAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMg RlJPTSAoMjApIFRPICgzMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF9kZWZhdWx0IFBBUlRJ VElPTiBPRiB0cGFydCBERUZBVUxUOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDUs ICd0ZXh0MDUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxNSwgJ3RleHQxNScp OworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDI1LCAndGV4dDI1Jyk7CisgIElOU0VS VCBJTlRPIHRwYXJ0IFZBTFVFUyAoMzUsICd0ZXh0MzUnKTsKK30KKwordGVhcmRvd24KK3sK KyAgRFJPUCBUQUJMRSB0cGFydDsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBzMWIJeyBCRUdJ TjsgfQorc3RlcCBzMWJycgl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJF QUQ7IH0KK3N0ZXAgczFicwl7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7 IH0KK3N0ZXAgczFtZXJnCXsgQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAo dHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOyB9CitzdGVwIHMx Ywl7IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0 ZXAgczJicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9Citz dGVwIHMyYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVw IHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9CitzdGVw IHMydQl7IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7 IH0KK3N0ZXAgczJjCXsgQ09NTUlUOyB9CitzdGVwIHMycwl7IFNFTEVDVCAqIEZST00gdHBh cnQ7IH0KKworCisjIHMyIGluc2VydHMgcm93IGludG8gdGFibGUuIHMxIHN0YXJ0cyBNRVJH RSBQQVJUSVRJT05TIHRoZW4KKyMgczIgdHJ5aW5nIHRvIHVwZGF0ZSBpbnNlcnRlZCByb3cg YW5kIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVkCisjIE1FUkdFIG9wZXJhdGlvbi4KKworcGVy bXV0YXRpb24gczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitw ZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMy cworcGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMydSBzMWMgczJj IHMycworCitwZXJtdXRhdGlvbiBzMmJyciBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBz MWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJyciBzMW1lcmcgczJi IHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicnIgczJpIHMyYyBzMWJzIHMxbWVy ZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBzMWIg czFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYnMgczJpIHMyYyBz MWJyciBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczJicyBzMmkg czJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4 IDQ4NTYzYjJjZjAuLjY5OTIwNzU3YjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAtMzAwLDYgKzMw MCw5IEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJ CWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQkJc3RydHlwZSA9ICJERVRB Q0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX01l cmdlUGFydGl0aW9uczoKKwkJCQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElPTlMiOworCQkJ CWJyZWFrOwogCQkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCQlzdHJ0eXBlID0gIkFERCBJ REVOVElUWSI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9tZXJnZS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uMDEzYWI2NTk2MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdlLm91dApAQCAtMCwwICsxLDczNiBAQAorLS0KKy0t IFBBUlRJVElPTlNfTUVSR0UKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgLi4uIiBjb21tYW5kCistLQorQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2No ZW1hLCBwdWJsaWM7CistLQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0KKy0t IFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfYXByMjAyMiAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9G IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworLS0gRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIy MDIyIiBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElO VE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1l ICJzYWxlc19mZWIyMDIyIiBhbHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJU SVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gRVJST1I6ICBjYW5ub3QgbWVyZ2Ugbm9uLXRhYmxlIHBhcnRpdGlvbiAi c2FsZXNfYXByMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8g c2FsZXNfZmViX21hcl9hcHIyMDIyOworRVJST1I6ICBjYW5ub3QgbWVyZ2Ugbm9uLXRhYmxl IHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIKKy0tIEVSUk9SOiAgaW52YWxpZCBwYXJ0aXRp b25zIG9yZGVyLCBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGNhbiBub3QgYmUgbWVyZ2Vk CistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxlc19qYW4yMDIyIGFuZCBzYWxlc19t YXIyMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMikgSU5UTyBzYWxlc19qYW5fbWFyMjAyMjsKK0VS Uk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBjb25mbGlj dHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2phbjIw MjIiCistLSBFUlJPUjogIGludmFsaWQgcGFydGl0aW9ucyBvcmRlciwgcGFydGl0aW9uICJz YWxlc19qYW4yMDIyIiBjYW4gbm90IGJlIG1lcmdlZAorLS0gKHNwYWNlIGJldHdlZW4gc2Vj dGlvbnMgc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIw MjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGNvbmZsaWN0cyB3 aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIK Ky0tIE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20gcGFydGl0aW9ucyBvcmRlcgorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2Fs ZXNfbWFyMjAyMiwgc2FsZXNfamFuMjAyMikgSU5UTyBzYWxlc19qYW5fZmViX21hcjIwMjI7 CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0 YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5v aWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVy aXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdz YWxlc19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKyAgICAgICAgICBvaWQgICAgICAgICAg fCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dl dF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyICAgICAgICAgfCBwICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjIn KSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2RlYzIwMjEgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMTItMDEtMjAyMScpIFRP ICgnMTItMzEtMjAyMScpCisgc2FsZXNfamFuX2ZlYl9tYXIyMDIyIHwgciAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcw NC0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IERFRkFVTFQKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFu Z2U7CistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIG1lcmdl IHBhcnRpdGlvbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lk IElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fw cjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNf cmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVz X2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAg ICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUw LCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwg ICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIw MjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmlj c3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEt MjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAg IDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwg ICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFydGtleWRlZign c2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CisgcGdfZ2V0X3BhcnRrZXlkZWYgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBSQU5HRSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworLS0gc2hv dyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxv Zy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBn X2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGku aW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAg T1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQp ID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50 ZXh0OworICAgICAgb2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAg ICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEt MjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAyMiB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgn MDMtMDEtMjAyMicpCisgc2FsZXNfamFuMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicp Cisgc2FsZXNfbWFyMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZB TFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpCisgc2FsZXNfb3Ro ZXJzICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykK KworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmVi MjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikgSU5UTyBzYWxlc19mZWJfbWFy X2FwcjIwMjI7CistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNU IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRp bmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBG Uk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisg IFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFu Z2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVs cGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICAgICAgb2lkICAgICAgICAgIHwgcmVsa2lu ZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgciAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcw NS0wMS0yMDIyJykKKyBzYWxlc19qYW4yMDIyICAgICAgICAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAx LTIwMjInKQorIHNhbGVzX290aGVycyAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVz IFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInIGFuZCBzY2hlbWFu YW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFuYW1lICAg ICAgICB8ICAgICAgIHRhYmxlbmFtZSAgICAgICB8ICAgICAgICAgICAgICBpbmRleG5hbWUg ICAgICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgc2FsZXNfZmViX21hcl9hcHIyMDIy IHwgc2FsZXNfZmViX21hcl9hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8 IENSRUFURSBJTkRFWCBzYWxlc19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04g cGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfZmViX21hcl9hcHIyMDIyIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3Jhbmdl OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEw MDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAg ICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAg ICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAg fCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nz b24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgNyB8IExp ICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkg fCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAg IDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAy MgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3 LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAw NC0wNi0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEw IHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAy MjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAx MDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAg ICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2ZlYl9tYXJfYXByMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9m ZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9p cm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8 IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAg IDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAg ICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAg ICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy CisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0 LTEzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAg fCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAg MzgwIHwgMDQtMDYtMjAyMgorKDEwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3Ro ZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAg ICA1MTAgfCAwNS0wNC0yMDIyCisoMSByb3cpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRl c3QgaW5kZXhlcworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IE9GRjsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJl IHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwg U21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAg NiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAg ICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAg ICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIK KyAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0y MDIyCisgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMt MTktMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8 IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAg ICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKygxMCByb3dzKQorCitTRVQgZW5hYmxlX2luZGV4 c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworLS0KKy0tIE1lcmdlIHNvbWUgcGFydGl0aW9ucyBpbnRvIERFRkFVTFQgcGFy dGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQs IHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21h cjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jhbmdl X3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEw MDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIs ICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcy MDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVl dicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAz LTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24n LCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAs ICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwg J1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAy Mi0wNS0wNCcpOworLS0gTWVyZ2UgcGFydGl0aW9ucyAoaW5jbHVkZSBERUZBVUxUIHBhcnRp dGlvbikgaW50byBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZQorLS0gbmFtZQorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNf bWFyMjAyMiwgc2FsZXNfb3RoZXJzKSBJTlRPIHNhbGVzX290aGVyczsKK3NlbGVjdCAqIGZy b20gc2FsZXNfb3RoZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAg ICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIg ICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2Fu ZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgNyB8 IExpICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAg IDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAg ICAgIDEyIHwgUGxhdG8gICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAg ICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIy CisoNyByb3dzKQorCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VM RUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBl bmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQor ICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBp CisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNf cmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMu cmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICBvaWQgICAgICB8IHJlbGtpbmQgfCBp bmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBzYWxlc19hcHIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1Ig VkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxlc19m ZWIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00g KCcwMi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgIHwgciAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxUCisoMyByb3dzKQorCitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBw YXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1u IHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2Fs ZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElO VCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQg QUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicg fHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxl c19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJD SEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KTsKK0NSRUFURSBUQUJM RSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJP TSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19q YW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwg MSwgMSkgVE8gKDIwMjIsIDIsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAo MjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNh bGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1B WFZBTFVFLCBNQVhWQUxVRSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25h bWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFn ZXIxJywgMjAyMSwgMTIsIDcpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9u YW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5h Z2VyMicsIDIwMjEsIDEyLCA4KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjMnLCAyMDIyLCAxLCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjEnLCAyMDIyLCAyLCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjInLCAyMDIyLCAxLCAyKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjMnLCAyMDIyLCAyLCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjEnLCAyMDIyLCAzLCAzKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjInLCAyMDIyLCAzLCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjMnLCAyMDIyLCA1LCAxKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKKyBzYWxl c21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2Fs ZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAg ICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAg ICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4 IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIg fCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIg fCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIx ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAz LjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVu dAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAg IDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDkgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVu dCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8 ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAg ICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8 IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBz YWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBN YW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAxIHwg MjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRl cGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKKyBz YWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwg c2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIg fCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIz ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAy LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxl c19vdGhlcjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwg c2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVu dAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAg IDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2Fs ZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBNRVJH RSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVz X2phbl9mZWIyMDIyOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScs IDIwMjIsIDEsIDEwKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjIn LCAyMDIyLCAyLCAxMCk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7Cisgc2FsZXNtYW5f bmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2Rh dGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAg ICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwg ICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNh bGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAy Mi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFy dG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAg ICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAg IHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8 IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAg ICAgICAyIHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBN YW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwg MjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAg MjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRl cGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwg ICAgICAgICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygxMSByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RlYzIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVz X3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19k ZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2Vy MSAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4x Mi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMSB8 ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1l bnQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7Cisgc2Fs ZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNh bGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwg ICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAg ICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4w MiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAg ICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQK KyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAx IHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVz IGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAy IHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyg2IHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVz X3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19k ZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2Vy MSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4w My4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAg ICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygzIHJvd3MpCisKK0RST1Ag VEFCTEUgc2FsZXNfZGF0ZTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIG9mIHBh cnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNt YW5zKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFS KDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc21hbl9pZCk7CitDUkVBVEUgVEFCTEUg c2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfMjAgUEFSVElUSU9OIE9G IHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQ1JFQVRFIFRBQkxF IHNhbGVzbWFuczIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9N ICgyMCkgVE8gKDMwKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMzMF80MCBQQVJUSVRJT04g T0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5U TyBzYWxlc21hbnMgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIE9SIFJFUExBQ0Ug RlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExB TkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisJUkFJU0UgTk9USUNFICd0cmln Z2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FS R1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VO RDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHNhbGVzbWFuc19hZnRlcl9pbnNlcnRfc3Rh dGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc21hbnMKKyAg ICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNl cnRfcm93X3RyaWdnZXIoJ3NhbGVzbWFucycpOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNtYW5z X2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNh bGVzbWFucworICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVy X2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNtYW5zJyk7CistLSAyIHRyaWdnZXJzIHNob3Vs ZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMg VkFMVUVTICgxMCwgJ01heScpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxl ZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6 ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBB RlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJl IChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfMjAgVkFMVUVTICgxOSwgJ0l2YW5v dicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5T RVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitBTFRFUiBUQUJMRSBzYWxlc21hbnMg TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNtYW5zMTBfMjAsIHNhbGVzbWFuczIwXzMwLCBzYWxl c21hbnMzMF80MCkgSU5UTyBzYWxlc21hbnMxMF80MDsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxk IGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBW QUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBj YWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9U SUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVu ID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUg aGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzQwIFZBTFVFUyAoMzAsICdG b3JkJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJ TlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVDVCAqIEZST00gc2FsZXNt YW5zMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzbWFuczEwXzQwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5f bmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTAgfCBN YXkKKyAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAg ICAgICAgICAzMCB8IEZvcmQKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNtYW5zOwor RFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKy0tCistLSBUZXN0 OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25h bWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworQ1JF QVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIHBhcnRpdGlvbnMgd2l0aCBzb21l IGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMxMF8yMChkMSBWQVJD SEFSKDMwKSwgc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZB UkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMyMF8zMChzYWxlc21hbl9pZCBJ TlQgUFJJTUFSWSBLRVksIGQyIElOVCwgIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpOwor Q1JFQVRFIFRBQkxFIHNhbGVzbWFuczMwXzQwKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtF WSwgZDMgREFURSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBz YWxlc21hbnMxMF8yMCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAxJywgMTksICdJdmFub3YnKTsK K0lOU0VSVCBJTlRPIHNhbGVzbWFuczIwXzMwIFZBTFVFUyAoMjAsIDEwMSwgJ1NtaXJub2Zm Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMzMF80MCBWQUxVRVMgKDMxLCBub3coKSwgJ1Bv cG92Jyk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMxMF8yMCBEUk9QIENPTFVNTiBkMTsKK0FM VEVSIFRBQkxFIHNhbGVzbWFuczIwXzMwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUg c2FsZXNtYW5zMzBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMg QVRUQUNIIFBBUlRJVElPTiBzYWxlc21hbnMxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMjApOworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNt YW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKK0FMVEVSIFRBQkxFIHNh bGVzbWFucyBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJP TSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAnUG9p cm90Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxMCwgJ01heScpOworSU5T RVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMzAsICdGb3JkJyk7CitBTFRFUiBUQUJMRSBz YWxlc21hbnMgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNtYW5zMTBfMjAsIHNhbGVzbWFuczIw XzMwLCBzYWxlc21hbnMzMF80MCkgSU5UTyBzYWxlc21hbnMxMF80MDsKK3NlbGVjdCAqIGZy b20gc2FsZXNtYW5zOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKyAgICAgICAg ICAxOSB8IEl2YW5vdgorICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgMjAgfCBTbWly bm9mZgorICAgICAgICAgIDMxIHwgUG9wb3YKKyAgICAgICAgICAzMCB8IEZvcmQKKyg2IHJv d3MpCisKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBz YWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczEwXzQw OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAxMCB8IE1heQor ICAgICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAzMSB8IFBvcG92CisgICAgICAg ICAgMzAgfCBGb3JkCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzbWFuczsKKy0tCist LSBUZXN0OiBtZXJnZSBzdWItcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxl c19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAy Ml8wMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXBy MjAyMl8xMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTEwJykgVE8gKCcyMDIyLTA0LTIwJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YXByMjAyMl8yMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTA0LTIwJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJMRSBzYWxl c19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRF WCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJl ZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAn TWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIy LTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92 JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTEx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAx NzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4 LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAn MjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0w MS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywg ICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisg c2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8 IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAg ICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAg ICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAg fCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAg ICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICA3IHwgTGkgICAg ICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11 bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIg fCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAg ICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAy MgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMw LTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAw NS0wNC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAg fCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAg MzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAg ICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAg ICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2FwcjIwMjJfMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA1IHwgRGVldiAgICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1w ICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMiByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBfMjA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21h bl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKygxIHJvdykK KworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzIwXzMwOworIHNhbGVzbWFuX2lkIHwg c2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCiso MSByb3cpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgTUVSR0UgUEFSVElUSU9OUyAo c2FsZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNfYXByMjAyMl8xMF8yMCwgc2FsZXNfYXByMjAy Ml8yMF8zMCkgSU5UTyBzYWxlc19hcHJfYWxsOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5n ZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAx MDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAg ICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAg IHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAg ICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNz c29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBM aSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5 IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAg ICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAg ICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgor ICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIw MjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0x My0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwg MDQtMzAtMjAyMgorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUx MCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIw MjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAg IDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAg ICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwg ICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAg ICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfYXByX2FsbDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAg ICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNCB8IEl2 YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMg fCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykK KworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmlu ZworLS0KKy0tCistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0 aW9uaW5nCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQg R0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc21hbl9uYW1lIFZBUkNIQVIo MzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisg c2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxV RVMgSU4gKCdNdXJtYW5zaycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0YScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJ TiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKTsKK0NSRUFURSBUQUJMRSBz YWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdh ZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxl c19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Nj b3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitDUkVBVEUgVEFCTEUgc2FsZXNf bGlzdDIgKExJS0Ugc2FsZXNfbGlzdCkgUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIg Rk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIg REVGQVVMVDsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbCAoTElLRSBzYWxlc19saXN0 KTsKK0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUpKTsKKy0t IEVSUk9SOiAgcGFydGl0aW9uIGJvdW5kIGZvciByZWxhdGlvbiAic2FsZXNfZXh0ZXJuYWwi IGlzIG51bGwKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOwor RVJST1I6ICBwYXJ0aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uICJzYWxlc19leHRlcm5hbCIg aXMgbnVsbAorLS0gRVJST1I6ICBwYXJ0aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uICJzYWxl c19leHRlcm5hbDIiIGlzIG51bGwKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFS VElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwyKSBJTlRP IHNhbGVzX2FsbDsKK0VSUk9SOiAgcGFydGl0aW9uIGJvdW5kIGZvciByZWxhdGlvbiAic2Fs ZXNfZXh0ZXJuYWwyIiBpcyBudWxsCistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3Jk MiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0IgorQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19u b3JkMiwgc2FsZXNfZWFzdCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjogIHJlbGF0aW9uICJz YWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0 IgorRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4dGVy bmFsOworRFJPUCBUQUJMRSBzYWxlc19saXN0MjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsK Ky0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmluZywgTUVSR0UgUEFSVElUSU9OUyB3 aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzbWFuX2lkIElO VCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwK KyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOwor Q1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNtYW5fbmFtZV9pZHggT04gc2FsZXNfbGlz dCBVU0lORyBidHJlZSAoc2FsZXNtYW5fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlz dF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qg Rk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJ TiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2NlbnRyYWwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJ TiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVMVDsKK0lOU0VSVCBJTlRP IHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1RydW1wJywgICAgJ01hZ2FkYW4nLCAgICAgICAgMTAw MCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1Nt aXJub2ZmJywgJ1Ntb2xlbnNrJywgICAgICAgNTAwLCAgJzIwMjItMDMtMDMnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19h bW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJn JywgMjAwMCwgJzIwMjItMDMtMDUnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz bWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVF UyAoJ0l2YW5vdicsICAgJ01vc2NvdycsICAgICAgICAgNzUwLCAgJzIwMjItMDMtMDQnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBz YWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0RlZXYnLCAgICAgJ1Zvcm9uZXpo JywgICAgICAgMjUwLCAgJzIwMjItMDMtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3Qg KHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUp IFZBTFVFUyAoJ1BvaXJvdCcsICAgJ0themFuJywgICAgICAgICAgMTAwMCwgJzIwMjItMDMt MDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0 YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ01heScsICAgICAgJ1Vr aHRhJywgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVz X2RhdGUpIFZBTFVFUyAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIw MjItMDMtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNh bGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ01heScsICAg ICAgJ1VraHRhJywgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0hhbGRlcicsICAgJ011cm1hbnNrJywgICAgICAgODAw LCAgJzIwMjItMDMtMDInKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ011 bGxlcicsICAgJ0JyeWFuc2snLCAgICAgICAgNjUwLCAgJzIwMjItMDMtMDUnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19h bW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1NtaXRoJywgICAgJ1ZvbGdvZ3JhZCcsICAg ICAgMzUwLCAgJzIwMjItMDMtMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz bWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVF UyAoJ0dhbmRpJywgICAgJ01vc2NvdycsICAgICAgICAgMTUwLCAgJzIwMjItMDMtMDgnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBz YWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1BsYXRvJywgICAgJ1Zvcm9uZXpo JywgICAgICAgOTUwLCAgJzIwMjItMDMtMDUnKTsKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRo IGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVs a2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBh cnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRh bG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmlu aHBhcmVudCA9ICdzYWxlc19saXN0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICAgb2lkICAg ICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF9leHByICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfY2VudHJhbCB8IHIgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXph bicsICdWb2xnb2dyYWQnKQorIHNhbGVzX2Vhc3QgICAgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxh ZGl2b3N0b2snKQorIHNhbGVzX25vcmQgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IEZPUiBWQUxVRVMgSU4gKCdNdXJtYW5zaycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0 YScpCisgc2FsZXNfd2VzdCAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9S IFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKQorIHNhbGVz X290aGVycyAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKyg1IHJv d3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf d2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfY2VudHJhbCkgSU5UTyBzYWxlc19hbGw7CistLSBz aG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRh bG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cu cGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cu cGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0g aS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNzCisg IE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lk KSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cu dGV4dDsKKyAgICAgb2lkICAgICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Z19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FsbCAgICB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0Jy eWFuc2snLCAnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJywgJ01vc2Nv dycsICdLYXphbicsICdWb2xnb2dyYWQnKQorIHNhbGVzX25vcmQgICB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRl cnNidXJnJywgJ1VraHRhJykKKyBzYWxlc19vdGhlcnMgfCByICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IERFRkFVTFQKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlz dDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAg ICAgICAyIHwgU21pcm5vZmYgICAgICB8IFNtb2xlbnNrICAgICAgIHwgICAgICAgICAgNTAw IHwgMDMtMDMtMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8IFZvcm9uZXpo ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMDctMjAyMgorICAgICAgICAgIDExIHwgTXVs bGVyICAgICAgICB8IEJyeWFuc2sgICAgICAgIHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAy MgorICAgICAgICAgIDE0IHwgUGxhdG8gICAgICAgICB8IFZvcm9uZXpoICAgICAgIHwgICAg ICAgICAgOTUwIHwgMDMtMDUtMjAyMgorICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAgICB8 IE1hZ2FkYW4gICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAg ICA4IHwgTGkgICAgICAgICAgICB8IFZsYWRpdm9zdG9rICAgIHwgICAgICAgICAxMTUwIHwg MDMtMDktMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2NvdyAgICAg ICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90 ICAgICAgICB8IEthemFuICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgor ICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICB8IFZvbGdvZ3JhZCAgICAgIHwgICAgICAg ICAgMzUwIHwgMDMtMTAtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8IE1v c2NvdyAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwgMDMt MDUtMjAyMgorICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICB8IFVraHRhICAgICAgICAg IHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorICAgICAgICAgICA5IHwgTWF5ICAgICAg ICAgICB8IFVraHRhICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorICAg ICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8IE11cm1hbnNrICAgICAgIHwgICAgICAgICAg ODAwIHwgMDMtMDItMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbm9y ZDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAw IHwgMDMtMDUtMjAyMgorICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICB8IFVraHRhICAg ICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorICAgICAgICAgICA5IHwgTWF5 ICAgICAgICAgICB8IFVraHRhICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAy MgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8IE11cm1hbnNrICAgICAgIHwgICAg ICAgICAgODAwIHwgMDMtMDItMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxl c19hbGw7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgMiB8IFNtaXJub2ZmICAgICAgfCBTbW9sZW5zayAgICB8ICAgICAgICAgIDUwMCB8IDAz LTAzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCBWb3JvbmV6aCAgICB8 ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAxMSB8IE11bGxlciAgICAg ICAgfCBCcnlhbnNrICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAg ICAxNCB8IFBsYXRvICAgICAgICAgfCBWb3JvbmV6aCAgICB8ICAgICAgICAgIDk1MCB8IDAz LTA1LTIwMjIKKyAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgfCBNYWdhZGFuICAgICB8 ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgOCB8IExpICAgICAgICAg ICAgfCBWbGFkaXZvc3RvayB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDc1MCB8IDAz LTA0LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCBLYXphbiAgICAgICB8 ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAxMiB8IFNtaXRoICAgICAg ICAgfCBWb2xnb2dyYWQgICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAg ICAxMyB8IEdhbmRpICAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDE1MCB8IDAz LTA4LTIwMjIKKygxMCByb3dzKQorCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4 ZXMgYWZ0ZXIgbWVyZ2UgcGFydGl0aW9ucworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsK K1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYWxsIFdI RVJFIHNhbGVzX3N0YXRlID0gJ01vc2Nvdyc7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9u YW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCBNb3Njb3cgICAg ICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAg ICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdN b3Njb3cnOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRlIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICA3NTAgfCAw My0wNC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgTW9zY293ICAgICAg fCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNtYW5fbmFtZSA9ICdJdmFub3YnOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisoMSByb3cp CisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBP TjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCitEUk9QIFNDSEVNQSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDFk OGE0MTRlZWEuLjZmMDIzNmQyMDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZQpAQCAtMTE5LDcgKzExOSw3IEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNv cHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAjIFRo ZSBzdGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90aGluZyBlbHNlIG5lZWRpbmcgc3Rh dHMgYWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdyb3VwLgogIyAtLS0tLS0tLS0tCi10ZXN0 OiBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQg aW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQg ZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1vaXplIHN0YXRzIHByZWRpY2F0ZQordGVzdDogcGFy dGl0aW9uX21lcmdlIHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25z IGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZv IHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIG1lbW9pemUgc3RhdHMgcHJlZGljYXRl CiAKICMgZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9hbSBhbmQgY2Fubm90IHJ1 biBjb25jdXJyZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMgRERMCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi44YmY5MGZkNjIxCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbApAQCAtMCwwICsxLDQzNCBA QAorLS0KKy0tIFBBUlRJVElPTlNfTUVSR0UKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUg Li4uIE1FUkdFIFBBUlRJVElPTlMgLi4uIiBjb21tYW5kCistLQorCitDUkVBVEUgU0NIRU1B IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmlu ZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykgVE8gKCcy MDIxLTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisK K0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFu X25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h cHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByXzIg UEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0x NScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNI IFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gRVJST1I6ICBwYXJ0aXRpb24g d2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIw MjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworLS0gRVJS T1I6ICBjYW5ub3QgbWVyZ2Ugbm9uLXRhYmxlIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIw MjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9h cHIyMDIyOworLS0gRVJST1I6ICBpbnZhbGlkIHBhcnRpdGlvbnMgb3JkZXIsIHBhcnRpdGlv biAic2FsZXNfbWFyMjAyMiIgY2FuIG5vdCBiZSBtZXJnZWQKKy0tIChzcGFjZSBiZXR3ZWVu IHNlY3Rpb25zIHNhbGVzX2phbjIwMjIgYW5kIHNhbGVzX21hcjIwMjIpCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19t YXIyMDIyKSBJTlRPIHNhbGVzX2phbl9tYXIyMDIyOworLS0gRVJST1I6ICBpbnZhbGlkIHBh cnRpdGlvbnMgb3JkZXIsIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgY2FuIG5vdCBiZSBt ZXJnZWQKKy0tIChzcGFjZSBiZXR3ZWVuIHNlY3Rpb25zIHNhbGVzX2RlYzIwMjEgYW5kIHNh bGVzX2phbjIwMjIpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05T IChzYWxlc19kZWMyMDIxLCBzYWxlc19qYW4yMDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNh bGVzX2RlY19qYW5fZmViMjAyMjsKKworLS0gTk8gRVJST1I6IHRlc3QgZm9yIGN1c3RvbSBw YXJ0aXRpb25zIG9yZGVyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19qYW4yMDIyKSBJTlRP IHNhbGVzX2phbl9mZWJfbWFyMjAyMjsKKworU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJl Z2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0 X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xh c3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhy ZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRF UiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAn REVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7 CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBBZGQgcm93cyBpbnRvIHBh cnRpdGlvbmVkIHRhYmxlIHRoZW4gbWVyZ2UgcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxl c19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAn MjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0Zv cmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcs ICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUw LCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAs ICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIw MjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5k aScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1Qg cGdfY2F0YWxvZy5wZ19nZXRfcGFydGtleWRlZignc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7 CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdf Y2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUg Yy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJl Z2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91 bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBn X2NhdGFsb2cudGV4dDsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfYXByMjAyMikgSU5U TyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNv bmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2lu ZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRi b3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9n LnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBh cmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cu cGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6 OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dDsKKworU0VMRUNUICogRlJP TSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjIn IGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJzsKKworU0VMRUNU ICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NF TEVDVCAqIEZST00gc2FsZXNfZmViX21hcl9hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxl c19vdGhlcnM7CisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhlcworU0VUIGVu YWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VM RUNUICogRlJPTSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcy MDIyLTAxLTAxJzsKKworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVf c2Vxc2NhbiA9IE9OOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gTWVy Z2Ugc29tZSBwYXJ0aXRpb25zIGludG8gREVGQVVMVCBwYXJ0aXRpb24KKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBU TyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0w NC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04g c2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAn R2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworLS0g TWVyZ2UgcGFydGl0aW9ucyAoaW5jbHVkZSBERUZBVUxUIHBhcnRpdGlvbikgaW50byBwYXJ0 aXRpb24gd2l0aCB0aGUgc2FtZQorLS0gbmFtZQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNf b3RoZXJzKSBJTlRPIHNhbGVzX290aGVyczsKKworc2VsZWN0ICogZnJvbSBzYWxlc19vdGhl cnM7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5v aWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywg cGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00g cGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hF UkUgYy5vaWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6 OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6 OnBnX2NhdGFsb2cudGV4dDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0t IFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdF TkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2Fs ZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2Fs ZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4 dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNU T1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBk ZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIw MjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBG T1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZS T00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZBTFVFKTsKKwor SU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxl c19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjEsIDEyLCA3KTsK K0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2Fs ZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIxLCAxMiwgOCk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgMSwgMSk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMiwgNCk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMSwgMik7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMiwgMywgNCk7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7 CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVj MjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7CisKK0FMVEVSIFRBQkxF IHNhbGVzX2RhdGUgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfZmVi MjAyMikgSU5UTyBzYWxlc19qYW5fZmViMjAyMjsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0 ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBW QUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIsIDEsIDEwKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2Rh dGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkg VkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfZGF0ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKK1NFTEVDVCAqIEZST00g c2FsZXNfamFuX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworCitEUk9Q IFRBQkxFIHNhbGVzX2RhdGU7CisKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIG9m IHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNtYW5zKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJD SEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc21hbl9pZCk7CisKK0NSRUFURSBU QUJMRSBzYWxlc21hbnMwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMxMF8yMCBQQVJUSVRJ T04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUg VEFCTEUgc2FsZXNtYW5zMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVT IEZST00gKDIwKSBUTyAoMzApOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczMwXzQwIFBBUlRJ VElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsKKworSU5T RVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0 cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisJUkFJU0UgTk9U SUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0g JScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4g TlVMTDsKK0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNtYW5zX2FmdGVy X2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNh bGVzbWFucworICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJF IGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNtYW5zJyk7CisKK0NSRUFURSBUUklH R0VSIHNhbGVzbWFuc19hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNF UlQKKyAgICBPTiBzYWxlc21hbnMKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBS T0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzbWFucycpOworCistLSAy IHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQg SU5UTyBzYWxlc21hbnMgVkFMVUVTICgxMCwgJ01heScpOworLS0gMSB0cmlnZ2VyIHNob3Vs ZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMxMF8yMCBWQUxVRVMg KDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc21hbnMxMF8yMCwgc2FsZXNtYW5zMjBfMzAsIHNhbGVzbWFuczMwXzQwKSBJ TlRPIHNhbGVzbWFuczEwXzQwOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUg KHJvdyArIHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgyMCwg J1NtaXJub2ZmJyk7CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lO U0VSVCBJTlRPIHNhbGVzbWFuczEwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CisKK1NFTEVD VCAqIEZST00gc2FsZXNtYW5zMDFfMTA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczEwXzQw OworCitEUk9QIFRBQkxFIHNhbGVzbWFuczsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyKCk7CisKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGgg ZGVsZXRlZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9p ZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMDFf MTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7 CistLSBDcmVhdGUgcGFydGl0aW9ucyB3aXRoIHNvbWUgZGVsZXRlZCBjb2x1bW5zOgorQ1JF QVRFIFRBQkxFIHNhbGVzbWFuczEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxlc21hbl9pZCBJ TlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRB QkxFIHNhbGVzbWFuczIwXzMwKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgZDIgSU5U LCAgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5z MzBfNDAoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBkMyBEQVRFLCBzYWxlc21hbl9u YW1lIFZBUkNIQVIoMzApKTsKKworSU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfMjAgVkFMVUVT ICgnZHVtbXkgdmFsdWUgMScsIDE5LCAnSXZhbm92Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21h bnMyMF8zMCBWQUxVRVMgKDIwLCAxMDEsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2Fs ZXNtYW5zMzBfNDAgVkFMVUVTICgzMSwgbm93KCksICdQb3BvdicpOworCitBTFRFUiBUQUJM RSBzYWxlc21hbnMxMF8yMCBEUk9QIENPTFVNTiBkMTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFu czIwXzMwIERST1AgQ09MVU1OIGQyOworQUxURVIgVEFCTEUgc2FsZXNtYW5zMzBfNDAgRFJP UCBDT0xVTU4gZDM7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFSVElUSU9O IHNhbGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitBTFRFUiBU QUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBzYWxlc21hbnMyMF8zMCBGT1IgVkFM VUVTIEZST00gKDIwKSBUTyAoMzApOworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQ QVJUSVRJT04gc2FsZXNtYW5zMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsK KworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgJ1BvaXJvdCcpOworSU5TRVJU IElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMTAsICdNYXknKTsKK0lOU0VSVCBJTlRPIHNhbGVz bWFucyBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgTUVS R0UgUEFSVElUSU9OUyAoc2FsZXNtYW5zMTBfMjAsIHNhbGVzbWFuczIwXzMwLCBzYWxlc21h bnMzMF80MCkgSU5UTyBzYWxlc21hbnMxMF80MDsKKworc2VsZWN0ICogZnJvbSBzYWxlc21h bnM7CitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczAxXzEwOworc2VsZWN0ICogZnJvbSBzYWxl c21hbnMxMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc21hbnM7CisKKy0tCistLSBUZXN0OiBt ZXJnZSBzdWItcGFydGl0aW9ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2Fs ZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyk7CisKK0NSRUFURSBUQUJM RSBzYWxlc19hcHIyMDIyIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEw IFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDQtMTAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEw XzIwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMTAnKSBUTyAoJzIwMjItMDQtMjAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIy XzIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0NSRUFURSBJTkRFWCBz YWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAo c2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdN YXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjIt MDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3Yn LCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcy MDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1 bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAx LTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAg ICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOwor U0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyXzAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzEwXzIwOworU0VMRUNU ICogRlJPTSBzYWxlc19hcHIyMDIyXzIwXzMwOworCitBTFRFUiBUQUJMRSBzYWxlc19hcHIy MDIyIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2FwcjIwMjJfMDFfMTAsIHNhbGVzX2FwcjIw MjJfMTBfMjAsIHNhbGVzX2FwcjIwMjJfMjBfMzApIElOVE8gc2FsZXNfYXByX2FsbDsKKwor U0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAy MjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByX2FsbDsKKworRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKKworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorCistLQorLS0gVGVz dDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFU RSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMg QVMgSURFTlRJVFksCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0 ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkK K1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf bm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2sn LCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0 IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdT bW9sZW5zaycsICdCcnlhbnNrJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNr JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1Zv bGdvZ3JhZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2Fs ZXNfbGlzdCBERUZBVUxUOworCisKK0NSRUFURSBUQUJMRSBzYWxlc19saXN0MiAoTElLRSBz YWxlc19saXN0KSBQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX25vcmQyIFBBUlRJVElPTiBPRiBzYWxlc19saXN0MiBGT1IgVkFMVUVTIElO ICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMyIFBBUlRJVElPTiBPRiBzYWxlc19saXN0MiBERUZBVUxUOworCisK K0NSRUFURSBUQUJMRSBzYWxlc19leHRlcm5hbCAoTElLRSBzYWxlc19saXN0KTsKK0NSRUFU RSBUQUJMRSBzYWxlc19leHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUpKTsKKworLS0gRVJST1I6 ICBwYXJ0aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uICJzYWxlc19leHRlcm5hbCIgaXMgbnVs bAorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0 LCBzYWxlc19lYXN0LCBzYWxlc19leHRlcm5hbCkgSU5UTyBzYWxlc19hbGw7CistLSBFUlJP UjogIHBhcnRpdGlvbiBib3VuZCBmb3IgcmVsYXRpb24gInNhbGVzX2V4dGVybmFsMiIgaXMg bnVsbAorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193 ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8gc2FsZXNfYWxsOworLS0g RVJST1I6ICByZWxhdGlvbiAic2FsZXNfbm9yZDIiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBy ZWxhdGlvbiAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFS VElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfbm9yZDIsIHNhbGVzX2Vhc3QpIElOVE8gc2Fs ZXNfYWxsOworCitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsMjsKK0RST1AgVEFCTEUgc2Fs ZXNfZXh0ZXJuYWw7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3QyOworRFJPUCBUQUJMRSBzYWxl c19saXN0OworCistLQorLS0gVGVzdDogQlkgTElTVCBwYXJ0aXRpb25pbmcsIE1FUkdFIFBB UlRJVElPTlMgd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxl c21hbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSwKKyBzYWxlc21hbl9u YW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ft b3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVz X3N0YXRlKTsKKworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNtYW5fbmFtZV9pZHgg T04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNtYW5fbmFtZSk7CitDUkVBVEUgSU5E RVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJl ZSAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1 cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlh bnNrJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9r Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1ZvbGdvZ3JhZCcpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxU OworCitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdUcnVtcCcsICAgICdNYWdh ZGFuJywgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19s aXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMgKCdTbWlybm9mZicsICdTbW9sZW5zaycsICAgICAgIDUwMCwgICcyMDIy LTAzLTAzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxl c19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdGb3JkJywgICAg ICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdJdmFub3YnLCAgICdNb3Njb3cnLCAgICAgICAgIDc1MCwg ICcyMDIyLTAzLTA0Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1l LCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdEZWV2 JywgICAgICdWb3JvbmV6aCcsICAgICAgIDI1MCwgICcyMDIyLTAzLTA3Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1v dW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdQb2lyb3QnLCAgICdLYXphbicsICAgICAgICAg IDEwMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21h bl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMg KCdNYXknLCAgICAgICdVa2h0YScsICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTA2Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2Fs ZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdMaScsICAgICAgICdWbGFkaXZvc3Rv aycsICAgIDExNTAsICcyMDIyLTAzLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChz YWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBW QUxVRVMgKCdNYXknLCAgICAgICdVa2h0YScsICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTEx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdIYWxkZXInLCAgICdNdXJt YW5zaycsICAgICAgIDgwMCwgICcyMDIyLTAzLTAyJyk7CitJTlNFUlQgSU5UTyBzYWxlc19s aXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMgKCdNdWxsZXInLCAgICdCcnlhbnNrJywgICAgICAgIDY1MCwgICcyMDIy LTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxl c19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdTbWl0aCcsICAg ICdWb2xnb2dyYWQnLCAgICAgIDM1MCwgICcyMDIyLTAzLTEwJyk7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdHYW5kaScsICAgICdNb3Njb3cnLCAgICAgICAgIDE1MCwg ICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1l LCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdQbGF0 bycsICAgICdWb3JvbmV6aCcsICAgICAgIDk1MCwgICcyMDIyLTAzLTA1Jyk7CisKKy0tIHNo b3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5w Z19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5w Z19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBp LmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19saXN0Jzo6cmVnY2xhc3MKKyAg T1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQp ID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50 ZXh0OworCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2NlbnRyYWwpIElOVE8gc2FsZXNfYWxsOworCist LSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19j YXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFs b2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lk ID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfbGlzdCc6OnJlZ2NsYXNz CisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMu b2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFs b2cudGV4dDsKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0OworU0VMRUNUICogRlJPTSBz YWxlc19ub3JkOworU0VMRUNUICogRlJPTSBzYWxlc19hbGw7CisKKy0tIFVzZSBpbmRleHNj YW4gZm9yIHRlc3QgaW5kZXhlcyBhZnRlciBtZXJnZSBwYXJ0aXRpb25zCitTRVQgZW5hYmxl X2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdNb3Njb3cnOworU0VMRUNU ICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ01vc2Nvdyc7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNtYW5fbmFtZSA9ICdJdmFub3YnOwor CitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047 CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA3ZTg2 NmUzYzNkLi5lODI3ZWQwMjE0IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAt MjU3OCw2ICsyNTc4LDcgQEAgU2ltcGxlU3RhdHMKIFNpbXBsZVN0cmluZ0xpc3QKIFNpbXBs ZVN0cmluZ0xpc3RDZWxsCiBTaW5nbGVCb3VuZFNvcnRJdGVtCitTaW5nbGVQYXJ0aXRpb25T cGVjCiBTaXplCiBTa2lwUGFnZXMKIFNsYWJCbG9jawotLSAKMi40MC4xLndpbmRvd3MuMQoK --------------qPCFY1O0qWf5I3CUtLJ0EaAv Content-Type: text/plain; charset=UTF-8; name="v23-0002-ALTER-TABLE-SPLIT-PARTITION-command.patch" Content-Disposition: attachment; filename="v23-0002-ALTER-TABLE-SPLIT-PARTITION-command.patch" Content-Transfer-Encoding: base64 RnJvbSAyNDM5NzI0NzUzYzhhYzYyMDE2ODVhM2QzNDk2NGY5YWYyNTZhYWJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb3ZhbCBEbWl0cnkgPGQua292YWxAcG9zdGdyZXNw cm8ucnU+CkRhdGU6IE1vbiwgMTkgU2VwIDIwMjIgMTc6NTg6NTIgKzAzMDAKU3ViamVjdDog W1BBVENIIHYyMyAyLzRdIEFMVEVSIFRBQkxFIFNQTElUIFBBUlRJVElPTiBjb21tYW5kCgot LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0 MDcgKysrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAg ICB8ICAgMzggKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAg ICAgICB8ICAgNjIgKy0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMg ICAgICAgICB8ICA2NTUgKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyAgICAgICAgICAgICB8ICAgMTggKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmggICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmggICAgICAgICB8ICAgIDUgKwogc3JjL2luY2x1ZGUvdXRpbHMvcnVs ZXV0aWxzLmggICAgICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vaXNvbGF0aW9uL2V4cGVj dGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQgICAgfCAgMTkwICsrKwogc3JjL3Rlc3QvaXNvbGF0 aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9pc29s YXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0LnNwZWMgfCAgIDU0ICsKIC4uLi90ZXN0X2Rk bF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgIDMgKwogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0IHwgMTMxNyArKysrKysrKysr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAg IHwgICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbCAg ICAgIHwgIDc5MiArKysrKysrKysrCiAxNiBmaWxlcyBjaGFuZ2VkLCAzNTM2IGluc2VydGlv bnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0CiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3Bs aXQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX3NwbGl0LnNxbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggYTQ0YTgx NTZjZi4uYjBkMmU0YWY5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTY2 Miw2ICs2NjIsOSBAQCBzdGF0aWMgdm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5UmVm cyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29tcHJl c3Npb24oT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0aWMg Y2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3Rv cmFnZW1vZGUpOwogCitzdGF0aWMgdm9pZCBBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJCQkJCQkJCSBSZWxhdGlvbiByZWws IFBhcnRpdGlvbkNtZCAqY21kLAorCQkJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0 ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJ ICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0 KTsKIApAQCAtNDczNSw2ICs0NzM4LDEwIEBAIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlz dCAqY21kcykKIAkJCQljbWRfbG9ja21vZGUgPSBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2s7 CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQkJY21kX2xv Y2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBB VF9NZXJnZVBhcnRpdGlvbnM6CiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZl TG9jazsKIAkJCQlicmVhazsKQEAgLTUxNjQsNiArNTE3MSwxMSBAQCBBVFByZXBDbWQoTGlz dCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBO byBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJCQlwYXNzID0gQVRfUEFTU19N SVNDOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQlBVFNpbXBs ZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJLyogTm8g Y29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlT QzsKKwkJCWJyZWFrOwogCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCUFUU2ltcGxl UGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSk7CiAJCQkvKiBObyBj b21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCkBAIC01NTU5LDYgKzU1NzEsMTQgQEAg QVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2Fz ZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCWFkZHJlc3MgPSBBVEV4ZWNEZXRh Y2hQYXJ0aXRpb25GaW5hbGl6ZShyZWwsICgoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmKS0+ bmFtZSk7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCWNtZCA9 IEFUUGFyc2VUcmFuc2Zvcm1DbWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9j a21vZGUsCisJCQkJCQkJCQkgIGN1cl9wYXNzLCBjb250ZXh0KTsKKwkJCUFzc2VydChjbWQg IT0gTlVMTCk7CisJCQlBc3NlcnQocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSk7CisJCQlBVEV4ZWNTcGxpdFBhcnRpdGlvbih3cXVldWUsIHRh YiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAorCQkJCQkJCQkgY29udGV4dCk7 CisJCQlicmVhazsKIAkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CiAJCQljbWQgPSBBVFBh cnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2Rl LAogCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CkBAIC02NTU1LDYgKzY1NzUsOCBA QCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQog CQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIjsKIAkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRp b25GaW5hbGl6ZToKIAkJCXJldHVybiAiREVUQUNIIFBBUlRJVElPTiAuLi4gRklOQUxJWkUi OworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJcmV0dXJuICJTUExJVCBQQVJUSVRJ T04iOwogCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCXJldHVybiAiTUVSR0UgUEFS VElUSU9OUyI7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CkBAIC0yMDYyMiw2ICsyMDY0NCwy NTUgQEAgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0 b3JhZ2Vtb2RlKQogCXJldHVybiBjc3RvcmFnZTsKIH0KIAorLyoKKyAqIFN0cnVjdCB3aXRo IGNvbnRleHQgb2YgbmV3IHBhcnRpdGlvbiBmb3IgaW5zZXJ0IHJvd3MgZnJvbSBzcGxpdGVk IHBhcnRpdGlvbgorICovCit0eXBlZGVmIHN0cnVjdCBTcGxpdFBhcnRpdGlvbkNvbnRleHQK K3sKKwlFeHByU3RhdGUgICpwYXJ0cXVhbHN0YXRlOwkvKiBleHByZXNzaW9uIGZvciBjaGVj ayBzbG90IGZvciBwYXJ0aXRpb24KKwkJCQkJCQkJICogKE5VTEwgZm9yIERFRkFVTFQgcGFy dGl0aW9uKSAqLworCUJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwkvKiBzdGF0ZSBvZiBidWxr IGluc2VydHMgZm9yIHBhcnRpdGlvbiAqLworCVR1cGxlVGFibGVTbG90ICpkc3RzbG90Owkv KiBzbG90IGZvciBpbnNlcnQgcm93IGludG8gcGFydGl0aW9uICovCisJUmVsYXRpb24JcGFy dFJlbDsJCS8qIHJlbGF0aW9uIGZvciBwYXJ0aXRpb24gKi8KK30JCQlTcGxpdFBhcnRpdGlv bkNvbnRleHQ7CisKKworLyoKKyAqIGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dDogY3Jl YXRlIGNvbnRleHQgZm9yIHBhcnRpdGlvbiBhbmQgZmlsbCBpdAorICovCitzdGF0aWMgU3Bs aXRQYXJ0aXRpb25Db250ZXh0ICoKK2NyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChSZWxh dGlvbiBwYXJ0UmVsKQoreworCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGM7CisKKwlwYyA9 IChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgcGFsbG9jMChzaXplb2YoU3BsaXRQYXJ0aXRp b25Db250ZXh0KSk7CisJcGMtPnBhcnRSZWwgPSBwYXJ0UmVsOworCisJLyoKKwkgKiBQcmVw YXJlIGEgQnVsa0luc2VydFN0YXRlIGZvciB0YWJsZV90dXBsZV9pbnNlcnQuIFRoZSBGU00g aXMgZW1wdHksIHNvCisJICogZG9uJ3QgYm90aGVyIHVzaW5nIGl0LgorCSAqLworCXBjLT5i aXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRlKCk7CisKKwkvKiBDcmVhdGUgdHVwbGUgc2xv dCBmb3IgbmV3IHBhcnRpdGlvbi4gKi8KKwlwYy0+ZHN0c2xvdCA9IE1ha2VTaW5nbGVUdXBs ZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKHBjLT5wYXJ0UmVsKSwKKwkJCQkJCQkJCQkg ICB0YWJsZV9zbG90X2NhbGxiYWNrcyhwYy0+cGFydFJlbCkpOworCUV4ZWNTdG9yZUFsbE51 bGxUdXBsZShwYy0+ZHN0c2xvdCk7CisKKwlyZXR1cm4gcGM7Cit9CisKKy8qCisgKiBkZWxl dGVTcGxpdFBhcnRpdGlvbkNvbnRleHQ6IGRlbGV0ZSBjb250ZXh0IGZvciBwYXJ0aXRpb24K KyAqLworc3RhdGljIHZvaWQKK2RlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChTcGxpdFBh cnRpdGlvbkNvbnRleHQgKiBwYywgaW50IHRpX29wdGlvbnMpCit7CisJRXhlY0Ryb3BTaW5n bGVUdXBsZVRhYmxlU2xvdChwYy0+ZHN0c2xvdCk7CisJRnJlZUJ1bGtJbnNlcnRTdGF0ZShw Yy0+YmlzdGF0ZSk7CisKKwl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQocGMtPnBhcnRSZWws IHRpX29wdGlvbnMpOworCisJcGZyZWUocGMpOworfQorCisvKgorICogbW92ZVNwbGl0VGFi bGVSb3dzOiBzY2FuIHNwbGl0IHBhcnRpdGlvbiAoc3BsaXRSZWwpIG9mIHBhcnRpdGlvbmVk IHRhYmxlCisgKiAocmVsKSBhbmQgbW92ZSByb3dzIGludG8gbmV3IHBhcnRpdGlvbnMuCisg KgorICogTmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb246CisgKiBwYXJ0bGlzdDogbGlzdCBv ZiBwb2ludGVycyB0byBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0cnVjdHVyZXMuCisgKiBuZXdQ YXJ0UmVsczogbGlzdCBvZiBSZWxhdGlvbidzLgorICogZGVmYXVsdFBhcnRPaWQ6IG9pZCBv ZiBERUZBVUxUIHBhcnRpdGlvbiwgZm9yIHRhYmxlIHJlbC4KKyAqLworc3RhdGljIHZvaWQK K21vdmVTcGxpdFRhYmxlUm93cyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLCBM aXN0ICpwYXJ0bGlzdCwgTGlzdCAqbmV3UGFydFJlbHMsIE9pZCBkZWZhdWx0UGFydE9pZCkK K3sKKwkvKiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICov CisJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlDb21tYW5k SWQJbXljaWQ7CisJRVN0YXRlCSAgICplc3RhdGU7CisJTGlzdENlbGwgICAqbGlzdHB0ciwK KwkJCSAgICpsaXN0cHRyMjsKKwlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwlFeHByQ29u dGV4dCAqZWNvbnRleHQ7CisJVGFibGVTY2FuRGVzYyBzY2FuOworCVNuYXBzaG90CXNuYXBz aG90OworCU1lbW9yeUNvbnRleHQgb2xkQ3h0OworCUxpc3QJICAgKnBhcnRDb250ZXh0cyA9 IE5JTDsKKwlUdXBsZUNvbnZlcnNpb25NYXAgKnR1cGxlX21hcDsKKwlTcGxpdFBhcnRpdGlv bkNvbnRleHQgKmRlZmF1bHRQYXJ0Q3R4ID0gTlVMTCwKKwkJCSAgICpwYzsKKwlib29sCQlp c09sZERlZmF1bHRQYXJ0ID0gZmFsc2U7CisKKwlteWNpZCA9IEdldEN1cnJlbnRDb21tYW5k SWQodHJ1ZSk7CisKKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisKKwlmb3Ji b3RoKGxpc3RwdHIsIHBhcnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJeworCQlT aW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmly c3QobGlzdHB0cik7CisKKwkJcGMgPSBjcmVhdGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoKFJl bGF0aW9uKSBsZmlyc3QobGlzdHB0cjIpKTsKKworCQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVm YXVsdCkKKwkJeworCQkJLyogV2Ugc2hvdWxkIG5vdCBjcmVhdGUgY29uc3RyYWludCBmb3Ig ZGV0YWNoZWQgREVGQVVMVCBwYXJ0aXRpb24uICovCisJCQlkZWZhdWx0UGFydEN0eCA9IHBj OworCQl9CisJCWVsc2UKKwkJeworCQkJTGlzdAkgICAqcGFydENvbnN0cmFpbnQ7CisKKwkJ CS8qIEJ1aWxkIGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFydGl0aW9uIGNo ZWNrIHF1YWxzLiAqLworCQkJcGFydENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9tX3BhcnRi b3VuZChyZWwsIHNwcy0+Ym91bmQpOworCQkJcGFydENvbnN0cmFpbnQgPQorCQkJCShMaXN0 ICopIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoTlVMTCwKKwkJCQkJCQkJCQkJCShOb2RlICop IHBhcnRDb25zdHJhaW50KTsKKwkJCS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBF eGVjQ2hlY2soKS4gKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2Fu ZHNfZXhwbGljaXQocGFydENvbnN0cmFpbnQpKTsKKworCQkJLyoKKwkJCSAqIE1hcCB0aGUg dmFycyBpbiB0aGUgY29uc3RyYWludCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0bm9zIHRv CisJCQkgKiBzcGxpdFJlbCdzLgorCQkJICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9w YXJ0aXRpb25fdmFyYXR0bm9zKHBhcnRDb25zdHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBz cGxpdFJlbCwgcmVsKTsKKworCQkJcGMtPnBhcnRxdWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVw YXJlRXhwcigoRXhwciAqKSBsaW5pdGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJ CQlBc3NlcnQocGMtPnBhcnRxdWFsc3RhdGUgIT0gTlVMTCk7CisJCX0KKworCQkvKiBTdG9y ZSBwYXJ0aXRpb24gY29udGV4dCBpbnRvIGxpc3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxh cHBlbmQocGFydENvbnRleHRzLCBwYyk7CisJfQorCisJLyoKKwkgKiBDcmVhdGUgcGFydGl0 aW9uIGNvbnRleHQgZm9yIERFRkFVTFQgcGFydGl0aW9uLiBXZSBjYW4gaW5zZXJ0IHZhbHVl cworCSAqIGludG8gdGhpcyBwYXJ0aXRpb24gaW4gY2FzZSBzcGFjZXMgd2l0aCB2YWx1ZXMg YmV0d2VlbiBuZXcgcGFydGl0aW9ucy4KKwkgKi8KKwlpZiAoIWRlZmF1bHRQYXJ0Q3R4ICYm IE9pZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJLyogSW5kaWNhdGUgdGhhdCB3 ZSBhbGxvY2F0ZSBjb250ZXh0IGZvciBvbGQgREVGQVVMVCBwYXJ0aXRpb24gKi8KKwkJaXNP bGREZWZhdWx0UGFydCA9IHRydWU7CisJCWRlZmF1bHRQYXJ0Q3R4ID0gY3JlYXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0KHRhYmxlX29wZW4oZGVmYXVsdFBhcnRPaWQsIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2spKTsKKwl9CisKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQo ZXN0YXRlKTsKKworCS8qIENyZWF0ZSBuZWNlc3NhcnkgdHVwbGUgc2xvdC4gKi8KKwlzcmNz bG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3Ioc3BsaXRS ZWwpLAorCQkJCQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3Moc3BsaXRSZWwpKTsKKwor CS8qCisJICogTWFwIGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Ygc3BsaXQg cGFydGl0aW9uIHRvIG5ldyBwYXJ0aXRpb24KKwkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0aXRp b24gYnV0IG90aGVyIG5ldyBwYXJ0aXRpb25zIGNhbiB1c2UgdGhlIHNhbWUKKwkgKiBtYXAp LgorCSAqLworCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdF9o ZWFkKHBhcnRDb250ZXh0cykpOworCXR1cGxlX21hcCA9IGNvbnZlcnRfdHVwbGVzX2J5X25h bWUoUmVsYXRpb25HZXREZXNjcihzcGxpdFJlbCksCisJCQkJCQkJCQkgICBSZWxhdGlvbkdl dERlc2NyKHBjLT5wYXJ0UmVsKSk7CisKKwkvKiBTY2FuIHRocm91Z2ggdGhlIHJvd3MuICov CisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwor CXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4oc3BsaXRSZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsK KworCS8qCisJICogU3dpdGNoIHRvIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVz ZXQgaXQgZm9yIGVhY2ggdHVwbGUKKwkgKiBwcm9kdWNlZCwgc28gd2UgZG9uJ3QgbGVhayBt ZW1vcnkuCisJICovCisJb2xkQ3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEdldFBlclR1 cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKKworCXdoaWxlICh0YWJsZV9zY2FuX2dldG5l eHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzcmNzbG90KSkKKwl7CisJCWJv b2wJCWZvdW5kID0gZmFsc2U7CisJCVR1cGxlVGFibGVTbG90ICppbnNlcnRzbG90OworCisJ CS8qIEV4dHJhY3QgZGF0YSBmcm9tIG9sZCB0dXBsZS4gKi8KKwkJc2xvdF9nZXRhbGxhdHRy cyhzcmNzbG90KTsKKworCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzcmNzbG90Owor CisJCS8qIFNlYXJjaCBwYXJ0aXRpb24gZm9yIGN1cnJlbnQgc2xvdCBzcmNzbG90LiAqLwor CQlmb3JlYWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwkJeworCQkJcGMgPSAoU3BsaXRQ YXJ0aXRpb25Db250ZXh0ICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkJaWYgKHBjLT5wYXJ0 cXVhbHN0YXRlIC8qIHNraXAgREVGQVVMVCBwYXJ0aXRpb24gKi8gJiYKKwkJCQlFeGVjQ2hl Y2socGMtPnBhcnRxdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCXsKKwkJCQlmb3VuZCA9IHRy dWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsK KwkJfQorCQlpZiAoIWZvdW5kKQorCQl7CisJCQkvKiBVc2UgREVGQVVMVCBwYXJ0aXRpb24g aWYgaXQgZXhpc3RzLiAqLworCQkJaWYgKGRlZmF1bHRQYXJ0Q3R4KQorCQkJCXBjID0gZGVm YXVsdFBhcnRDdHg7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKKwkJCQkJCSBlcnJtc2coImNhbiBub3Qg ZmluZCBwYXJ0aXRpb24gZm9yIHNwbGl0IHBhcnRpdGlvbiByb3ciKSwKKwkJCQkJCSBlcnJ0 YWJsZShzcGxpdFJlbCkpKTsKKwkJfQorCisJCWlmICh0dXBsZV9tYXApCisJCXsKKwkJCS8q IE5lZWQgdG8gdXNlIG1hcCBmb3IgY29weSBhdHRyaWJ1dGVzLiAqLworCQkJaW5zZXJ0c2xv dCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCh0dXBsZV9tYXAtPmF0dHJNYXAsIHNyY3Nsb3Qs IHBjLT5kc3RzbG90KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIENvcHkgYXR0cmlidXRl cyBkaXJlY3RseS4gKi8KKwkJCWluc2VydHNsb3QgPSBwYy0+ZHN0c2xvdDsKKworCQkJRXhl Y0NsZWFyVHVwbGUoaW5zZXJ0c2xvdCk7CisKKwkJCW1lbWNweShpbnNlcnRzbG90LT50dHNf dmFsdWVzLCBzcmNzbG90LT50dHNfdmFsdWVzLAorCQkJCSAgIHNpemVvZihEYXR1bSkgKiBz cmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfaXNudWxs LCBzcmNzbG90LT50dHNfaXNudWxsLAorCQkJCSAgIHNpemVvZihib29sKSAqIHNyY3Nsb3Qt PnR0c19udmFsaWQpOworCisJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xvdCk7 CisJCX0KKworCQkvKiBXcml0ZSB0aGUgdHVwbGUgb3V0IHRvIHRoZSBuZXcgcmVsYXRpb24u ICovCisJCXRhYmxlX3R1cGxlX2luc2VydChwYy0+cGFydFJlbCwgaW5zZXJ0c2xvdCwgbXlj aWQsIHRpX29wdGlvbnMsIHBjLT5iaXN0YXRlKTsKKworCQlSZXNldEV4cHJDb250ZXh0KGVj b250ZXh0KTsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCX0KKworCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRDeHQpOworCisJdGFibGVfZW5kc2NhbihzY2FuKTsKKwlVbnJl Z2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCisJaWYgKHR1cGxlX21hcCkKKwkJZnJlZV9j b252ZXJzaW9uX21hcCh0dXBsZV9tYXApOworCisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxl U2xvdChzcmNzbG90KTsKKworCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisKKwlmb3Jl YWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwkJZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250 ZXh0KChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpLCB0aV9vcHRp b25zKTsKKworCS8qIE5lZWQgdG8gY2xvc2UgdGFibGUgYW5kIGZyZWUgYnVmZmVycyBmb3Ig REVGQVVMVCBwYXJ0aXRpb24uICovCisJaWYgKGlzT2xkRGVmYXVsdFBhcnQpCisJeworCQlS ZWxhdGlvbiBkZWZhdWx0UGFydFJlbCA9IGRlZmF1bHRQYXJ0Q3R4LT5wYXJ0UmVsOworCisJ CWRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChkZWZhdWx0UGFydEN0eCwgdGlfb3B0aW9u cyk7CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9z ZShkZWZhdWx0UGFydFJlbCwgTm9Mb2NrKTsKKwl9Cit9CisKIC8qCiAgKiBjcmVhdGVQYXJ0 aXRpb25UYWJsZTogY3JlYXRlIHRhYmxlIGZvciBuZXcgcGFydGl0aW9uIHdpdGggZ2l2ZW4g bmFtZQogICogKG5ld1BhcnROYW1lKSBsaWtlIHRhYmxlIChtb2RlbFJlbE5hbWUpCkBAIC0y MDY3Niw2ICsyMDk0NywxNDIgQEAgY3JlYXRlUGFydGl0aW9uVGFibGUoUmFuZ2VWYXIgKm5l d1BhcnROYW1lLCBSYW5nZVZhciAqbW9kZWxSZWxOYW1lLAogCQkJCSAgIE5VTEwpOwogfQog CisvKgorICogQUxURVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9u LW5hbWU+IElOVE8gPHBhcnRpdGlvbi1saXN0PgorICovCitzdGF0aWMgdm9pZAorQVRFeGVj U3BsaXRQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBS ZWxhdGlvbiByZWwsCisJCQkJCSBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJsZVV0aWxp dHlDb250ZXh0ICpjb250ZXh0KQoreworCVJlbGF0aW9uCXNwbGl0UmVsOworCU9pZAkJCXNw bGl0UmVsT2lkOworCWNoYXIJCXJlbG5hbWVbTkFNRURBVEFMRU5dOworCU9pZAkJCW5hbWVz cGFjZUlkOworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7CisJYm9v bAkJaXNTYW1lTmFtZSA9IGZhbHNlOworCWNoYXIJCXRtcFJlbE5hbWVbTkFNRURBVEFMRU5d OworCUxpc3QJICAgKm5ld1BhcnRSZWxzID0gTklMOworCU9iamVjdEFkZHJlc3Mgb2JqZWN0 OworCVJhbmdlVmFyICAgKnNwbGl0UGFydE5hbWUgPSBjbWQtPm5hbWU7CisJT2lkCQkJZGVm YXVsdFBhcnRPaWQ7CisKKwlkZWZhdWx0UGFydE9pZCA9IGdldF9kZWZhdWx0X29pZF9mcm9t X3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUpKTsKKworCS8q CisJICogV2UgYXJlIGdvaW5nIHRvIGRldGFjaCBhbmQgcmVtb3ZlIHRoaXMgcGFydGl0aW9u OiBuZWVkIHRvIHVzZSBleGNsdXNpdmUKKwkgKiBsb2NrIGZvciBwcmV2ZW50IERNTC1xdWVy aWVzIHRvIHRoZSBwYXJ0aXRpb24uCisJICovCisJc3BsaXRSZWwgPSB0YWJsZV9vcGVucnYo c3BsaXRQYXJ0TmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwlpZiAoc3BsaXRSZWwt PnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJt c2coImNhbm5vdCBzcGxpdCBub24tdGFibGUgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzcGxpdFJlbCkpKSk7CisKKwlzcGxpdFJlbE9pZCA9 IFJlbGF0aW9uR2V0UmVsaWQoc3BsaXRSZWwpOworCisJLyogQ2hlY2sgZGVzY3JpcHRpb25z IG9mIG5ldyBwYXJ0aXRpb25zLiAqLworCWZvcmVhY2gobGlzdHB0ciwgY21kLT5wYXJ0bGlz dCkKKwl7CisJCU9pZAkJCWV4aXN0aW5nX3JlbGlkOworCQlTaW5nbGVQYXJ0aXRpb25TcGVj ICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJ c3RybGNweShyZWxuYW1lLCBzcHMtPm5hbWUtPnJlbG5hbWUsIE5BTUVEQVRBTEVOKTsKKwor CQkvKgorCQkgKiBMb29rIHVwIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggd2UgYXJlIHN1cHBv c2VkIHRvIGNyZWF0ZSB0aGUKKwkJICogcGFydGl0aW9uLCBjaGVjayB3ZSBoYXZlIHBlcm1p c3Npb24gdG8gY3JlYXRlIHRoZXJlLCBsb2NrIGl0CisJCSAqIGFnYWluc3QgY29uY3VycmVu dCBkcm9wLCBhbmQgbWFyayBzdG10LT5yZWxhdGlvbiBhcworCQkgKiBSRUxQRVJTSVNURU5D RV9URU1QIGlmIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBpcyBzZWxlY3RlZC4KKwkJICovCisJ CW5hbWVzcGFjZUlkID0KKwkJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFj ZShzcHMtPm5hbWUsIE5vTG9jaywgTlVMTCk7CisKKwkJLyoKKwkJICogVGhpcyB3b3VsZCBm YWlsIGxhdGVyIG9uIGFueXdheSwgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkgZXhpc3RzLgor CQkgKiBCdXQgYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1pdCBhIG5pY2VyIGVycm9y IG1lc3NhZ2UuCisJCSAqLworCQlleGlzdGluZ19yZWxpZCA9IGdldF9yZWxuYW1lX3JlbGlk KHJlbG5hbWUsIG5hbWVzcGFjZUlkKTsKKwkJaWYgKGV4aXN0aW5nX3JlbGlkID09IHNwbGl0 UmVsT2lkICYmICFpc1NhbWVOYW1lKQorCQkJLyogT25lIG5ldyBwYXJ0aXRpb24gY2FuIGhh dmUgdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24uICovCisJCQlpc1NhbWVOYW1l ID0gdHJ1ZTsKKwkJZWxzZSBpZiAoZXhpc3RpbmdfcmVsaWQgIT0gSW52YWxpZE9pZCkKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxF KSwKKwkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgcmVs bmFtZSkpKTsKKwl9CisKKwkvKiBEZXRhY2ggc3BsaXQgcGFydGl0aW9uLiAqLworCVJlbW92 ZUluaGVyaXRhbmNlKHNwbGl0UmVsLCByZWwsIGZhbHNlKTsKKwkvKiBEbyB0aGUgZmluYWwg cGFydCBvZiBkZXRhY2hpbmcuICovCisJRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCBz cGxpdFJlbCwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lkKTsKKworCS8qCisJICogSWYgbmV3IHBh cnRpdGlvbiBoYXMgdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24gdGhlbiB3ZSBz aG91bGQKKwkgKiByZW5hbWUgc3BsaXQgcGFydGl0aW9uIGZvciByZXVzZSBuYW1lLgorCSAq LworCWlmIChpc1NhbWVOYW1lKQorCXsKKwkJLyoKKwkJICogV2UgbXVzdCBidW1wIHRoZSBj b21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1cGxlCisJCSAq IHZpc2libGUgZm9yIHJlbmFtZS4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50 KCk7CisJCS8qIFJlbmFtZSBwYXJ0aXRpb24uICovCisJCXNwcmludGYodG1wUmVsTmFtZSwg InNwbGl0LSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9jUGlkKTsK KwkJUmVuYW1lUmVsYXRpb25JbnRlcm5hbChzcGxpdFJlbE9pZCwgdG1wUmVsTmFtZSwgZmFs c2UsIGZhbHNlKTsKKwkJc3BsaXRQYXJ0TmFtZSA9IG1ha2VSYW5nZVZhcigKKwkJCQkJCQkJ CSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2Uoc3BsaXRSZWwpKSwK KwkJCQkJCQkJCSB0bXBSZWxOYW1lLCAtMSk7CisKKwkJLyoKKwkJICogV2UgbXVzdCBidW1w IHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgc3BsaXQgcGFydGl0aW9uIHR1cGxl CisJCSAqIHZpc2libGUgYWZ0ZXIgcmVuYW1lLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKwl9CisKKwkvKiBDcmVhdGUgbmV3IHBhcnRpdGlvbnMgKGxpa2Ugc3Bs aXQgcGFydGl0aW9uKSwgd2l0aG91dCBpbmRleGVzLiAqLworCWZvcmVhY2gobGlzdHB0ciwg Y21kLT5wYXJ0bGlzdCkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5n bGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKwkJUmVsYXRpb24JbmV3UGFy dFJlbDsKKworCQljcmVhdGVQYXJ0aXRpb25UYWJsZShzcHMtPm5hbWUsIHNwbGl0UGFydE5h bWUsIGNvbnRleHQpOworCisJCS8qIE9wZW4gdGhlIG5ldyBwYXJ0aXRpb24gYW5kIGFjcXVp cmUgZXhjbHVzaXZlIGxvY2sgb24gaXQuICovCisJCW5ld1BhcnRSZWwgPSB0YWJsZV9vcGVu cnYoc3BzLT5uYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQluZXdQYXJ0UmVscyA9 IGxhcHBlbmQobmV3UGFydFJlbHMsIG5ld1BhcnRSZWwpOworCX0KKworCS8qIENvcHkgZGF0 YSBmcm9tIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9ucy4gKi8KKwltb3ZlU3Bs aXRUYWJsZVJvd3MocmVsLCBzcGxpdFJlbCwgY21kLT5wYXJ0bGlzdCwgbmV3UGFydFJlbHMs IGRlZmF1bHRQYXJ0T2lkKTsKKwkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNvbW1pdC4gKi8K Kwl0YWJsZV9jbG9zZShzcGxpdFJlbCwgTm9Mb2NrKTsKKworCS8qIEF0dGFjaCBuZXcgcGFy dGl0aW9ucyB0byBwYXJ0aXRpb25lZCB0YWJsZS4gKi8KKwlmb3Jib3RoKGxpc3RwdHIsIGNt ZC0+cGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwl7CisJCVNpbmdsZVBhcnRp dGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRy KTsKKwkJUmVsYXRpb24JbmV3UGFydFJlbCA9IChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIy KTsKKworCQkvKiB3cXVldWUgPSBOVUxMOiB2ZXJpZmljYXRpb24gZm9yIGVhY2ggY2xvbmVk IGNvbnN0cmFpbnQgaXMgbm90IG5lZWQuICovCisJCWF0dGFjaFBhcnRpdGlvblRhYmxlKE5V TEwsIHJlbCwgbmV3UGFydFJlbCwgc3BzLT5ib3VuZCk7CisJCS8qIEtlZXAgdGhlIGxvY2sg dW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9zZShuZXdQYXJ0UmVsLCBOb0xvY2spOwor CX0KKworCS8qIERyb3Agc3BsaXQgcGFydGl0aW9uLiAqLworCW9iamVjdC5jbGFzc0lkID0g UmVsYXRpb25SZWxhdGlvbklkOworCW9iamVjdC5vYmplY3RJZCA9IHNwbGl0UmVsT2lkOwor CW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisJLyogUHJvYmFibHkgRFJPUF9DQVNDQURFIGlz IG5vdCBuZWVkZWQuICovCisJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJ Q1QsIDApOworfQorCiAvKgogICogU3RydWN0IHdpdGggY29udGV4dCBvZiBtZXJnZWQgcGFy dGl0aW9uCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDRhNWIxM2MzMDAuLjZkYTFmOWEwNzYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQpAQCAtMjcwLDYgKzI3MCw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAJUGFydGl0aW9uRWxlbSAqcGFydGVsZW07CiAJUGFydGl0aW9uU3BlYyAq cGFydHNwZWM7CiAJUGFydGl0aW9uQm91bmRTcGVjICpwYXJ0Ym91bmRzcGVjOworCVNpbmds ZVBhcnRpdGlvblNwZWMgKnNpbmdsZXBhcnRzcGVjOwogCVJvbGVTcGVjICAgKnJvbGVzcGVj OwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVibGljYXRpb25vYmplY3RzcGVjOwogCXN0cnVj dCBTZWxlY3RMaW1pdCAqc2VsZWN0bGltaXQ7CkBAIC02NDMsNiArNjQ0LDggQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxwYXJ0ZWxlbT4JcGFydF9lbGVtCiAldHlw ZSA8bGlzdD4JCXBhcnRfcGFyYW1zCiAldHlwZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9u Qm91bmRTcGVjCisldHlwZSA8c2luZ2xlcGFydHNwZWM+CVNpbmdsZVBhcnRpdGlvblNwZWMK KyV0eXBlIDxsaXN0PgkJcGFydGl0aW9uc19saXN0CiAldHlwZSA8bGlzdD4JCWhhc2hfcGFy dGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQogCkBAIC03NTks NyArNzYyLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlTQVZFUE9JTlQgU0NB TEFSIFNDSEVNQSBTQ0hFTUFTIFNDUk9MTCBTRUFSQ0ggU0VDT05EX1AgU0VDVVJJVFkgU0VM RUNUCiAJU0VRVUVOQ0UgU0VRVUVOQ0VTCiAJU0VSSUFMSVpBQkxFIFNFUlZFUiBTRVNTSU9O IFNFU1NJT05fVVNFUiBTRVQgU0VUUyBTRVRPRiBTSEFSRSBTSE9XCi0JU0lNSUxBUiBTSU1Q TEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBTT01FIFNRTF9QIFNUQUJMRSBTVEFOREFMT05F X1AKKwlTSU1JTEFSIFNJTVBMRSBTS0lQIFNNQUxMSU5UIFNOQVBTSE9UIFNPTUUgU1BMSVQg U1FMX1AgU1RBQkxFIFNUQU5EQUxPTkVfUAogCVNUQVJUIFNUQVRFTUVOVCBTVEFUSVNUSUNT IFNURElOIFNURE9VVCBTVE9SQUdFIFNUT1JFRCBTVFJJQ1RfUCBTVFJJUF9QCiAJU1VCU0NS SVBUSU9OIFNVQlNUUklORyBTVVBQT1JUIFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUCBTWVNU RU1fVVNFUgogCkBAIC0yMjg5LDYgKzIyOTIsMjMgQEAgYWx0ZXJfdGFibGVfY21kczoKIAkJ CXwgYWx0ZXJfdGFibGVfY21kcyAnLCcgYWx0ZXJfdGFibGVfY21kCXsgJCQgPSBsYXBwZW5k KCQxLCAkMyk7IH0KIAkJOwogCitwYXJ0aXRpb25zX2xpc3Q6CisJCQlTaW5nbGVQYXJ0aXRp b25TcGVjCQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwYXJ0aXRpb25z X2xpc3QgJywnIFNpbmdsZVBhcnRpdGlvblNwZWMJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsg fQorCQk7CisKK1NpbmdsZVBhcnRpdGlvblNwZWM6CisJCQlQQVJUSVRJT04gcXVhbGlmaWVk X25hbWUgUGFydGl0aW9uQm91bmRTcGVjCisJCQkJeworCQkJCQlTaW5nbGVQYXJ0aXRpb25T cGVjICpuID0gbWFrZU5vZGUoU2luZ2xlUGFydGl0aW9uU3BlYyk7CisKKwkJCQkJbi0+bmFt ZSA9ICQyOworCQkJCQluLT5ib3VuZCA9ICQzOworCisJCQkJCSQkID0gbjsKKwkJCQl9CisJ CTsKKwogcGFydGl0aW9uX2NtZDoKIAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBVFRBQ0gg UEFSVElUSU9OIDx0YWJsZV9uYW1lPiBGT1IgVkFMVUVTICovCiAJCQlBVFRBQ0ggUEFSVElU SU9OIHF1YWxpZmllZF9uYW1lIFBhcnRpdGlvbkJvdW5kU3BlYwpAQCAtMjMzMyw2ICsyMzUz LDIwIEBAIHBhcnRpdGlvbl9jbWQ6CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJ CQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBT UExJVCBQQVJUSVRJT04gPHBhcnRpdGlvbl9uYW1lPiBJTlRPICgpICovCisJCQl8IFNQTElU IFBBUlRJVElPTiBxdWFsaWZpZWRfbmFtZSBJTlRPICcoJyBwYXJ0aXRpb25zX2xpc3QgJykn CisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNt ZCk7CisJCQkJCVBhcnRpdGlvbkNtZCAqY21kID0gbWFrZU5vZGUoUGFydGl0aW9uQ21kKTsK KworCQkJCQluLT5zdWJ0eXBlID0gQVRfU3BsaXRQYXJ0aXRpb247CisJCQkJCWNtZC0+bmFt ZSA9ICQzOworCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0bGlzdCA9 ICQ2OworCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0gKE5v ZGUgKikgY21kOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQkJLyogQUxURVIg VEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJVElPTlMgKCkgSU5UTyA8cGFydGl0aW9uX25hbWU+ ICovCiAJCQl8IE1FUkdFIFBBUlRJVElPTlMgJygnIHF1YWxpZmllZF9uYW1lX2xpc3QgJykn IElOVE8gcXVhbGlmaWVkX25hbWUKIAkJCQl7CkBAIC0xNzQwNyw2ICsxNzQ0MSw3IEBAIHVu cmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgU0lNUExFCiAJCQl8IFNLSVAKIAkJCXwgU05BUFNI T1QKKwkJCXwgU1BMSVQKIAkJCXwgU1FMX1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxP TkVfUApAQCAtMTgwMjEsNiArMTgwNTYsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8 IFNNQUxMSU5UCiAJCQl8IFNOQVBTSE9UCiAJCQl8IFNPTUUKKwkJCXwgU1BMSVQKIAkJCXwg U1FMX1AKIAkJCXwgU1RBQkxFCiAJCQl8IFNUQU5EQUxPTkVfUApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMKaW5kZXggODg0YTI4MDg2OS4uYzVhNzk0ZTIzNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljIHZv aWQgdHJhbnNmb3JtQ29uc3RyYWludEF0dHJzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJ CQkJCQkJCQkgTGlzdCAqY29uc3RyYWludExpc3QpOwogc3RhdGljIHZvaWQgdHJhbnNmb3Jt Q29sdW1uVHlwZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbik7 CiBzdGF0aWMgdm9pZCBzZXRTY2hlbWFOYW1lKGNvbnN0IGNoYXIgKmNvbnRleHRfc2NoZW1h LCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSk7Ci1zdGF0aWMgdm9pZCB0cmFuc2Zvcm1QYXJ0 aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpOwor c3RhdGljIHZvaWQgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpj eHQsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpOwogc3RhdGljIExpc3QgKnRyYW5zZm9y bVBhcnRpdGlvblJhbmdlQm91bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3Qs CiAJCQkJCQkJCQkJICAgUmVsYXRpb24gcGFyZW50KTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRl SW5maW5pdGVCb3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCk7CkBAIC0z NDA2LDYgKzM0MDYsNDMgQEAgdHJhbnNmb3JtUnVsZVN0bXQoUnVsZVN0bXQgKnN0bXQsIGNv bnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogfQogCiAKKy8qCisgKiB0cmFuc2Zvcm1QYXJ0aXRp b25DbWRGb3JTcGxpdAorICoJCUFuYWx5emUgdGhlIEFMVEVSIFRBQkxMRSAuLi4gU1BMSVQg UEFSVElUSU9OIGNvbW1hbmQKKyAqCisgKiBGb3IgZWFjaCBuZXcgcGFydGl0aW9uIHNwcy0+ Ym91bmQgaXMgc2V0IHRvIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KKyAqIERv ZXMgY2hlY2tzIGZvciBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMuCisgKi8KK3N0YXRpYyB2 b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdChDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJUmVsYXRpb24JcGFyZW50ID0gY3h0 LT5yZWw7CisJT2lkCQkJc3BsaXRQYXJ0T2lkOworCUxpc3RDZWxsICAgKmxpc3RwdHI7CisK KwlpZiAocGFyZW50LT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9U QUJMRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0 aXRpb25lZCB0YWJsZSIsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudCkpKSk7CisK KwkvKiBUcmFuc2Zvcm0gcGFydGl0aW9uIGJvdW5kcyBmb3IgYWxsIHBhcnRpdGlvbnMgaW4g dGhlIGxpc3Q6ICovCisJZm9yZWFjaChsaXN0cHRyLCBwYXJ0Y21kLT5wYXJ0bGlzdCkKKwl7 CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICop IGxmaXJzdChsaXN0cHRyKTsKKworCQljeHQtPnBhcnRib3VuZCA9IE5VTEw7CisJCXRyYW5z Zm9ybVBhcnRpdGlvbkNtZChjeHQsIHNwcy0+Ym91bmQpOworCQkvKiBBc3NpZ24gdHJhbnNm b3JtZWQgdmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBib3VuZC4gKi8KKwkJc3BzLT5ib3VuZCA9 IGN4dC0+cGFydGJvdW5kOworCX0KKworCXNwbGl0UGFydE9pZCA9IFJhbmdlVmFyR2V0UmVs aWQocGFydGNtZC0+bmFtZSwgTm9Mb2NrLCBmYWxzZSk7CisKKwkvKiBUaGVuIHdlIHNob3Vs ZCBjaGVjayBwYXJ0aXRpb25zIHdpdGggdHJhbnNmb3JtZWQgYm91bmRzLiAqLworCWNoZWNr X3BhcnRpdGlvbnNfZm9yX3NwbGl0KHBhcmVudCwgc3BsaXRQYXJ0T2lkLCBwYXJ0Y21kLT5u YW1lLCBwYXJ0Y21kLT5wYXJ0bGlzdCwgY3h0LT5wc3RhdGUpOworfQorCisKIC8qCiAgKiB0 cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZQogICoJCUFuYWx5emUgdGhlIEFMVEVSIFRB QkxMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjb21tYW5kCkBAIC0zNzQyLDcgKzM3NzksNyBA QCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpz dG10LAogCQkJCXsKIAkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0gKFBhcnRpdGlvbkNt ZCAqKSBjbWQtPmRlZjsKIAotCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4dCwgcGFy dGNtZCk7CisJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21kLT5ib3Vu ZCk7CiAJCQkJCS8qIGFzc2lnbiB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiB0aGUgcGFydGl0aW9u IGJvdW5kICovCiAJCQkJCXBhcnRjbWQtPmJvdW5kID0gY3h0LnBhcnRib3VuZDsKIAkJCQl9 CkBAIC0zNzUwLDYgKzM3ODcsNyBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVs aWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2Nt ZHMsIGNtZCk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CiAJ CQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCQl7CiAJCQkJCVBhcnRpdGlvbkNtZCAq cGFydGNtZCA9IChQYXJ0aXRpb25DbWQgKikgY21kLT5kZWY7CkBAIC0zNzU4LDcgKzM3OTYs MTEgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3Rt dCAqc3RtdCwKIAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCiAJCQkJCQkJCSBlcnJtc2coImxpc3Qg b2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW5zIGF0IGxlYXN0IHR3byBpdGVtcyIp KSk7Ci0JCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvck1lcmdlKCZjeHQsIHBhcnRjbWQp OworCisJCQkJCWlmIChjbWQtPnN1YnR5cGUgPT0gQVRfU3BsaXRQYXJ0aXRpb24pCisJCQkJ CQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdCgmY3h0LCBwYXJ0Y21kKTsKKwkJCQkJ ZWxzZQorCQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoJmN4dCwgcGFydGNt ZCk7CiAJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CiAJCQkJCWJyZWFr OwogCQkJCX0KQEAgLTQxNjMsMTMgKzQyMDUsMTMgQEAgc2V0U2NoZW1hTmFtZShjb25zdCBj aGFyICpjb250ZXh0X3NjaGVtYSwgY2hhciAqKnN0bXRfc2NoZW1hX25hbWUpCiAKIC8qCiAg KiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQKLSAqCQlBbmFseXplIHRoZSBBVFRBQ0gvREVUQUNI IFBBUlRJVElPTiBjb21tYW5kCisgKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSC9TUExJ VCBQQVJUSVRJT04gY29tbWFuZAogICoKLSAqIEluIGNhc2Ugb2YgdGhlIEFUVEFDSCBQQVJU SVRJT04gY29tbWFuZCwgY3h0LT5wYXJ0Ym91bmQgaXMgc2V0IHRvIHRoZQotICogdHJhbnNm b3JtZWQgdmFsdWUgb2YgY21kLT5ib3VuZC4KKyAqIEluIGNhc2Ugb2YgdGhlIEFUVEFDSC9T UExJVCBQQVJUSVRJT04gY29tbWFuZCwgY3h0LT5wYXJ0Ym91bmQgaXMgc2V0IHRvIHRoZQor ICogdHJhbnNmb3JtZWQgdmFsdWUgb2YgYm91bmQuCiAgKi8KIHN0YXRpYyB2b2lkCi10cmFu c2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21k ICpjbWQpCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwg UGFydGl0aW9uQm91bmRTcGVjICpib3VuZCkKIHsKIAlSZWxhdGlvbglwYXJlbnRSZWwgPSBj eHQtPnJlbDsKIApAQCAtNDE3OCw5ICs0MjIwLDkgQEAgdHJhbnNmb3JtUGFydGl0aW9uQ21k KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQogCQljYXNlIFJF TEtJTkRfUEFSVElUSU9ORURfVEFCTEU6CiAJCQkvKiB0cmFuc2Zvcm0gdGhlIHBhcnRpdGlv biBib3VuZCwgaWYgYW55ICovCiAJCQlBc3NlcnQoUmVsYXRpb25HZXRQYXJ0aXRpb25LZXko cGFyZW50UmVsKSAhPSBOVUxMKTsKLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwpCisJCQlp ZiAoYm91bmQgIT0gTlVMTCkKIAkJCQljeHQtPnBhcnRib3VuZCA9IHRyYW5zZm9ybVBhcnRp dGlvbkJvdW5kKGN4dC0+cHN0YXRlLCBwYXJlbnRSZWwsCi0JCQkJCQkJCQkJCQkJCSBjbWQt PmJvdW5kKTsKKwkJCQkJCQkJCQkJCQkJIGJvdW5kKTsKIAkJCWJyZWFrOwogCQljYXNlIFJF TEtJTkRfUEFSVElUSU9ORURfSU5ERVg6CiAKQEAgLTQxODgsNyArNDIzMCw3IEBAIHRyYW5z Zm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQg KmNtZCkKIAkJCSAqIEEgcGFydGl0aW9uZWQgaW5kZXggY2Fubm90IGhhdmUgYSBwYXJ0aXRp b24gYm91bmQgc2V0LiAgQUxURVIKIAkJCSAqIElOREVYIHByZXZlbnRzIHRoYXQgd2l0aCBp dHMgZ3JhbW1hciwgYnV0IG5vdCBBTFRFUiBUQUJMRS4KIAkJCSAqLwotCQkJaWYgKGNtZC0+ Ym91bmQgIT0gTlVMTCkKKwkJCWlmIChib3VuZCAhPSBOVUxMKQogCQkJCWVyZXBvcnQoRVJS T1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04p LAogCQkJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlIiwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCmluZGV4IGIzYjNhYWMwMmEu LmUzNTA0YmZlMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0 Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwpA QCAtNTA0MSwxMCArNTA0MSw2OSBAQCBjaGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFu Z2UoUmVsYXRpb24gcGFyZW50LAogCX0KIH0KIAorLyoKKyAqIGNoZWNrX3BhcnRpdGlvbnNf bm90X292ZXJsYXBfbGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRp b25pbmcpCisgKgorICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tfcGFy dGl0aW9uc19mb3Jfc3BsaXQoKS4KKyAqIENoZWNrcyB0aGF0IHRoZSB2YWx1ZXMgb2YgdGhl IG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBvdmVybGFwLgorICoKKyAqIHBhcmVudDoJcGFydGl0 aW9uZWQgdGFibGUKKyAqIHBhcnRzOglhcnJheSBvZiBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0 cnVjdHMgd2l0aCBpbmZvIGFib3V0IHNwbGl0IHBhcnRpdGlvbnMKKyAqIG5wYXJ0czoJc2l6 ZSBvZiBhcnJheSAicGFydHMiCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25z X25vdF9vdmVybGFwX2xpc3QoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkgIFNpbmdsZVBh cnRpdGlvblNwZWMgKiAqcGFydHMsCisJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJ ICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSBQR19VU0VEX0ZP Ul9BU1NFUlRTX09OTFkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCWlu dAkJCW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKwlpbnQJCQlpLAorCQkJCWo7CisJU2luZ2xl UGFydGl0aW9uU3BlYyAqc3BzMSwKKwkJCSAgICpzcHMyOworCUxpc3QJICAgKm92ZXJsYXA7 CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJeworCQlzcHMxID0gcGFydHNb aV07CisKKwkJZm9yIChqID0gaSArIDE7IGogPCBucGFydHM7IGorKykKKwkJeworCQkJc3Bz MiA9IHBhcnRzW2pdOworCisJCQkvKgorCQkJICogQ2FsY3VsYXRlIGludGVyc2VjdGlvbiBi ZXR3ZWVuIHZhbHVlcyBvZiB0d28gcGFydGl0aW9ucy4KKwkJCSAqLworCQkJb3ZlcmxhcCA9 IGxpc3RfaW50ZXJzZWN0aW9uKHNwczEtPmJvdW5kLT5saXN0ZGF0dW1zLAorCQkJCQkJCQkJ CXNwczItPmJvdW5kLT5saXN0ZGF0dW1zKTsKKwkJCWlmIChsaXN0X2xlbmd0aChvdmVybGFw KSA+IDApCisJCQl7CisJCQkJQ29uc3QJICAgKnZhbCA9IChDb25zdCAqKSBsZmlyc3QobGlz dF9oZWFkKG92ZXJsYXApKTsKKworCQkJCW92ZXJsYXBfbG9jYXRpb24gPSB2YWwtPmxvY2F0 aW9uOworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJIGVycm1zZygibmV3IHBhcnRpdGlvbiBc IiVzXCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiBcIiVzXCIi LAorCQkJCQkJCQlzcHMxLT5uYW1lLT5yZWxuYW1lLCBzcHMyLT5uYW1lLT5yZWxuYW1lKSwK KwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSkp OworCQkJfQorCQl9CisJfQorfQorCiAvKgogICogZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVj CiAgKgogICogUmV0dXJucyBkZXNjcmlwdGlvbiBvZiBwYXJ0aXRpb24gd2l0aCBPaWQgInBh cnRPaWQiIGFuZCBuYW1lICJuYW1lIi4KKyAqCisgKiBwYXJ0T2lkOglwYXJ0aXRpb24gT2lk CisgKiBuYW1lOglwYXJ0aXRpb24gbmFtZQogICovCiBzdGF0aWMgUGFydGl0aW9uQm91bmRT cGVjICoKIGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhPaWQgcGFydE9pZCwgUmFuZ2VWYXIg Km5hbWUpCkBAIC01MDc3LDYgKzUxMzYsNjAyIEBAIGdldF9wYXJ0aXRpb25fYm91bmRfc3Bl YyhPaWQgcGFydE9pZCwgUmFuZ2VWYXIgKm5hbWUpCiAJcmV0dXJuIGJvdW5kc3BlYzsKIH0K IAorLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlCisgKgor ICogKGZ1bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tz IHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24gInNwZWMiIGlzIGluc2lkZSBib3VuZHMg b2Ygc3BsaXQKKyAqIHBhcnRpdGlvbiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4gSWYgZmly c3Q9dHJ1ZSAodGhpcyBtZWFucyB0aGF0ICJzcGVjIiBpcworICogdGhlIGZpcnN0IG9mIG5l dyBwYXJ0aXRpb25zKSB0aGVuIGxvd2VyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1 YWwgKG9yCisgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgaW4gY2FzZSBkZWZhdWx0UGFydD10 cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxpdAorICogcGFydGl0aW9uLiBJZiBsYXN0PXRy dWUgKHRoaXMgbWVhbnMgdGhhdCAic3BlYyIgaXMgdGhlIGxhc3Qgb2YgbmV3CisgKiBwYXJ0 aXRpb25zKSB0aGVuIHVwcGVyIGJvdW5kIG9mIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwg KG9yIGxlc3MgdGhhbiBvcgorICogZXF1YWwgaW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0 byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisgKgorICogcGFyZW50OgkJCXBh cnRpdGlvbmVkIHRhYmxlCisgKiByZWxuYW1lOgkJCW5hbWUgb2YgdGhlIG5ldyBwYXJ0aXRp b24KKyAqIHNwZWM6CQkJYm91bmRzIHNwZWNpZmljYXRpb24gb2YgdGhlIG5ldyBwYXJ0aXRp b24KKyAqIHNwbGl0UGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogc3BsaXRQYXJ0 TmFtZToJc3BsaXQgcGFydGl0aW9uIG5hbWUKKyAqIGZpcnN0OgkJCXRydWUgaW4gY2FzZSBu ZXcgcGFydGl0aW9uICJzcGVjIiBpcyBmaXJzdCBvZiBuZXcgcGFydGl0aW9ucworICogbGFz dDoJCQl0cnVlIGluIGNhc2UgbmV3IHBhcnRpdGlvbiAic3BlYyIgaXMgbGFzdCBvZiBuZXcg cGFydGl0aW9ucworICogZGVmYXVsdFBhcnQ6CQl0cnVlIGluIGNhc2UgcGFydGl0aW9uZWQg dGFibGUgaGFzIERFRkFVTFQgcGFydGl0aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQ YXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0 YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShSZWxh dGlvbiBwYXJlbnQsCisJCQkJCQkJCQkgICBjaGFyICpyZWxuYW1lLAorCQkJCQkJCQkJICAg UGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJICAgT2lkIHNwbGl0UGFydE9p ZCwKKwkJCQkJCQkJCSAgIFJhbmdlVmFyICpzcGxpdFBhcnROYW1lLAorCQkJCQkJCQkJICAg Ym9vbCBmaXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJvb2wg ZGVmYXVsdFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFy dGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFy dGl0aW9uUmFuZ2VCb3VuZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7CisJaW50CQkJY21wdmFs OworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF KTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF KTsKKworCWxvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGVj LT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJv dW5kKGtleSwgLTEsIHNwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkvKgorCSAqIEZp cnN0IGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgcmFuZ2Ugd291bGQgYmUgZW1wdHkgd2l0aCBz cGVjaWZpZWQgbG93ZXIKKwkgKiBhbmQgdXBwZXIgYm91bmRzLiAgcGFydGl0aW9uX3Jib3Vu ZF9jbXAgY2Fubm90IHJldHVybiB6ZXJvIGhlcmUsIHNpbmNlCisJICogdGhlIGxvd2VyLWJv dW5kIGZsYWdzIGFyZSBkaWZmZXJlbnQuCisJICovCisJY21wdmFsID0gcGFydGl0aW9uX3Ji b3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVuYywK KwkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgbG93ZXItPmRhdHVt cywgbG93ZXItPmtpbmQsCisJCQkJCQkJCSAgdHJ1ZSwgdXBwZXIpOworCUFzc2VydChjbXB2 YWwgIT0gMCk7CisJaWYgKGNtcHZhbCA+IDApCisJeworCQkvKiBQb2ludCB0byBwcm9ibGVt YXRpYyBrZXkgaW4gdGhlIGxvd2VyIGRhdHVtcyBsaXN0LiAqLworCQlQYXJ0aXRpb25SYW5n ZURhdHVtICpkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBjbXB2YWwgLSAx KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiZW1wdHkgcmFuZ2UgYm91bmQgc3Bl Y2lmaWVkIGZvciBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCXJlbG5hbWUpLAorCQkJCSBl cnJkZXRhaWwoIlNwZWNpZmllZCBsb3dlciBib3VuZCAlcyBpcyBncmVhdGVyIHRoYW4gb3Ig ZXF1YWwgdG8gdXBwZXIgYm91bmQgJXMuIiwKKwkJCQkJCSAgIGdldF9yYW5nZV9wYXJ0Ym91 bmRfc3RyaW5nKHNwZWMtPmxvd2VyZGF0dW1zKSwKKwkJCQkJCSAgIGdldF9yYW5nZV9wYXJ0 Ym91bmRfc3RyaW5nKHNwZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpKTsKKwl9CisKKwkvKiBOZWVkIHRvIGNo ZWNrIGZpcnN0IGFuZCBsYXN0IHBhcnRpdGlvbnMgKGZyb20gc2V0IG9mIG5ldyBwYXJ0aXRp b25zKSAqLworCWlmIChmaXJzdCB8fCBsYXN0KQorCXsKKwkJUGFydGl0aW9uQm91bmRTcGVj ICpzcGxpdF9zcGVjID0gZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjKHNwbGl0UGFydE9pZCwg c3BsaXRQYXJ0TmFtZSk7CisJCWJvb2wJCW92ZXJsYXAgPSBmYWxzZTsKKworCQlpZiAoZmly c3QpCisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91bmQgKnNwbGl0X2xvd2VyOworCisJCQlz cGxpdF9sb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRf c3BlYy0+bG93ZXJkYXR1bXMsIHRydWUpOworCisJCQljbXB2YWwgPSBwYXJ0aXRpb25fcmJv dW5kX2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMs CisJCQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJICBsb3dlci0+ ZGF0dW1zLCBsb3dlci0+a2luZCwKKwkJCQkJCQkJCQkgIHRydWUsIHNwbGl0X2xvd2VyKTsK KworCQkJLyoKKwkJCSAqIExvd2VyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwg KG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbAorCQkJICogaW4gY2FzZSBkZWZhdWx0UGFydD10 cnVlKSB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlm ICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCkgfHwgKGRlZmF1bHRQYXJ0ICYmIGNtcHZhbCA8 IDApKQorCQkJCW92ZXJsYXAgPSB0cnVlOworCQl9CisJCWVsc2UKKwkJeworCQkJUGFydGl0 aW9uUmFuZ2VCb3VuZCAqc3BsaXRfdXBwZXI7CisKKwkJCXNwbGl0X3VwcGVyID0gbWFrZV9v bmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBzcGxpdF9zcGVjLT51cHBlcmRhdHVtcywg ZmFsc2UpOworCisJCQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXktPnBhcnRu YXR0cywKKwkJCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJICBrZXkt PnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJICB1cHBlci0+ZGF0dW1zLCB1cHBlci0+a2lu ZCwKKwkJCQkJCQkJCQkgIGZhbHNlLCBzcGxpdF91cHBlcik7CisKKwkJCS8qCisJCQkgKiBV cHBlciBib3VuZCBvZiBvZiAic3BlYyIgc2hvdWxkIGJlIGVxdWFsIChvciBsZXNzIHRoYW4g b3IgZXF1YWwKKwkJCSAqIGluIGNhc2UgZGVmYXVsdFBhcnQ9dHJ1ZSkgdG8gdXBwZXIgYm91 bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgorCQkJICovCisJCQlpZiAoKCFkZWZhdWx0UGFydCAm JiBjbXB2YWwpIHx8IChkZWZhdWx0UGFydCAmJiBjbXB2YWwgPiAwKSkKKwkJCQlvdmVybGFw ID0gdHJ1ZTsKKwkJfQorCisJCWlmIChvdmVybGFwKQorCQl7CisJCQlQYXJ0aXRpb25SYW5n ZURhdHVtICpkYXR1bTsKKworCQkJZGF0dW0gPSBsaXN0X250aChmaXJzdCA/IHNwZWMtPmxv d2VyZGF0dW1zIDogc3BlYy0+dXBwZXJkYXR1bXMsIGFicyhjbXB2YWwpIC0gMSk7CisKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCisJCQkJCSBlcnJtc2coIiVzIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVz XCIgaXMgJXMgJXMgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQlmaXJzdCA/ ICJsb3dlciIgOiAidXBwZXIiLAorCQkJCQkJCXJlbG5hbWUsCisJCQkJCQkJZGVmYXVsdFBh cnQgPyAoZmlyc3QgPyAibGVzcyB0aGFuIiA6ICJncmVhdGVyIHRoYW4iKSA6ICJub3QgZXF1 YWxzIHRvIiwKKwkJCQkJCQlmaXJzdCA/ICJsb3dlciIgOiAidXBwZXIiKSwKKwkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpKTsKKwkJfQorCX0K K30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X2xpc3QKKyAq CisgKiAoZnVuY3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNr cyB0aGF0IGJvdW5kcyBvZiBuZXcgcGFydGl0aW9uIGlzIGluc2lkZSBib3VuZHMgb2Ygc3Bs aXQgcGFydGl0aW9uCisgKiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKyAqCisgKiBwYXJl bnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6CQkJbmFtZSBvZiB0aGUgbmV3 IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbmV3 IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBw c3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0ZXJtaW5lIGVy cm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25fYm91bmRz X2Zvcl9zcGxpdF9saXN0KFJlbGF0aW9uIHBhcmVudCwgY2hhciAqcmVsbmFtZSwKKwkJCQkJ CQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJICBPaWQgc3BsaXRQ YXJ0T2lkLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9u S2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9u RGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNl KTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5m bzsKKwlpbnQJCQl3aXRoID0gLTE7CisJYm9vbAkJb3ZlcmxhcCA9IGZhbHNlOworCWludAkJ CW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJQXNzZXJ0 KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCUFzc2VydChz cGVjLT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisJQXNzZXJ0KGJv dW5kaW5mbyAmJiBib3VuZGluZm8tPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9M SVNUKTsKKworCS8qCisJICogU2VhcmNoIGVhY2ggdmFsdWUgb2YgbmV3IHBhcnRpdGlvbiAi c3BlYyIgaW4gZXhpc3RpbmcgcGFydGl0aW9ucy4gQWxsCisJICogb2YgdGhlbSBzaG91bGQg YmUgaW4gc3BsaXQgcGFydGl0aW9uICh3aXRoIE9pZCBzcGxpdFBhcnRPaWQpLgorCSAqLwor CWZvcmVhY2goY2VsbCwgc3BlYy0+bGlzdGRhdHVtcykKKwl7CisJCUNvbnN0CSAgICp2YWwg PSBsZmlyc3Rfbm9kZShDb25zdCwgY2VsbCk7CisKKwkJb3ZlcmxhcF9sb2NhdGlvbiA9IHZh bC0+bG9jYXRpb247CisJCWlmICghdmFsLT5jb25zdGlzbnVsbCkKKwkJeworCQkJaW50CQkJ b2Zmc2V0OworCQkJYm9vbAkJZXF1YWw7CisKKwkJCW9mZnNldCA9IHBhcnRpdGlvbl9saXN0 X2JzZWFyY2goJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCWtleS0+cGFydGNv bGxhdGlvbiwKKwkJCQkJCQkJCQkJYm91bmRpbmZvLAorCQkJCQkJCQkJCQl2YWwtPmNvbnN0 dmFsdWUsCisJCQkJCQkJCQkJCSZlcXVhbCk7CisJCQlpZiAob2Zmc2V0ID49IDAgJiYgZXF1 YWwpCisJCQl7CisJCQkJd2l0aCA9IGJvdW5kaW5mby0+aW5kZXhlc1tvZmZzZXRdOworCQkJ CWlmIChwYXJ0ZGVzYy0+b2lkc1t3aXRoXSAhPSBzcGxpdFBhcnRPaWQpCisJCQkJeworCQkJ CQlvdmVybGFwID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJZWxzZQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JK RUNUX0RFRklOSVRJT04pLAorCQkJCQkJIGVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIg Y2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5v dCBoYXZlIiwKKwkJCQkJCQkJcmVsbmFtZSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpKTsKKwkJfQorCQllbHNlIGlmIChwYXJ0aXRp b25fYm91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8pKQorCQl7CisJCQl3aXRoID0gYm91 bmRpbmZvLT5udWxsX2luZGV4OworCQkJaWYgKHBhcnRkZXNjLT5vaWRzW3dpdGhdICE9IHNw bGl0UGFydE9pZCkKKwkJCXsKKwkJCQlvdmVybGFwID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJ CX0KKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkgZXJybXNnKCJuZXcgcGFy dGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFy dGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJCXJlbG5hbWUpLAorCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpKTsKKwl9CisKKwlpZiAo b3ZlcmxhcCkKKwl7CisJCUFzc2VydCh3aXRoID49IDApOworCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJ IGVycm1zZygibmV3IHBhcnRpdGlvbiBcIiVzXCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3Ro ZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCQlyZWxuYW1lLCBnZXRf cmVsX25hbWUocGFydGRlc2MtPm9pZHNbd2l0aF0pKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpKTsKKwl9Cit9CisKKy8qCisgKiBmaW5k X3ZhbHVlX2luX25ld19wYXJ0aXRpb25zCisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBMSVNU IHBhcnRpdGlvbmluZykKKyAqCisgKiBGdW5jdGlvbiByZXR1cm5zIHRydWUgaW4gY2FzZSBh bnkgb2YgbmV3IHBhcnRpdGlvbnMgY29udGFpbnMgdmFsdWUgInZhbHVlIi4KKyAqCisgKiBw YXJ0c3VwZnVuYzoJCWluZm9ybWF0aW9uIGFib3V0IGNvbXBhcmlzb24gZnVuY3Rpb24gYXNz b2NpYXRlZCB3aXRoIHRoZSBwYXJ0aXRpb24ga2V5CisgKiBwYXJ0Y29sbGF0aW9uOglwYXJ0 aXRpb25pbmcgY29sbGF0aW9uCisgKiBwYXJ0czoJCQlwb2ludGVyIHRvIGFycmF5IHdpdGgg bmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb25zCisgKiBucGFydHM6CQkJbnVtYmVyIG9mIG5l dyBwYXJ0aXRpb25zCisgKiB2YWx1ZToJCQl0aGUgdmFsdWUgdGhhdCB3ZSBhcmUgbG9va2lu ZyBmb3IKKyAqIGlzbnVsbDoJCQl0cnVlIGlmIHRoZSB2YWx1ZSB0aGF0IHdlIGFyZSBsb29r aW5nIGZvciBpcyBOVUxMCisgKi8KK3N0YXRpYyBib29sCitmaW5kX3ZhbHVlX2luX25ld19w YXJ0aXRpb25zX2xpc3QoRm1nckluZm8gKnBhcnRzdXBmdW5jLAorCQkJCQkJCQkgIE9pZCAq cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICogKnBhcnRz LAorCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCSAgRGF0dW0gdmFsdWUsCisJCQkJ CQkJCSAgYm9vbCBpc251bGwpCit7CisJTGlzdENlbGwgICAqdmFscHRyOworCWludAkJCWk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJeworCQlTaW5nbGVQYXJ0aXRp b25TcGVjICpzcHMgPSBwYXJ0c1tpXTsKKworCQlmb3JlYWNoKHZhbHB0ciwgc3BzLT5ib3Vu ZC0+bGlzdGRhdHVtcykKKwkJeworCQkJQ29uc3QJICAgKnZhbCA9IGxmaXJzdF9ub2RlKENv bnN0LCB2YWxwdHIpOworCisJCQlpZiAoaXNudWxsICYmIHZhbC0+Y29uc3Rpc251bGwpCisJ CQkJcmV0dXJuIHRydWU7CisKKwkJCWlmICghaXNudWxsICYmICF2YWwtPmNvbnN0aXNudWxs KQorCQkJeworCQkJCWlmIChEYXR1bUdldEludDMyKEZ1bmN0aW9uQ2FsbDJDb2xsKCZwYXJ0 c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkJCQlwYXJ0Y29sbGF0aW9uWzBdLAorCQkJCQkJCQkJ CQkJCXZhbC0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJCQkJCQl2YWx1ZSkpID09IDApCisJCQkJ CXJldHVybiB0cnVlOworCQkJfQorCQl9CisJfQorCXJldHVybiBmYWxzZTsKK30KKworLyoK KyAqIGNoZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMKKyAqCisgKiAoZnVu Y3Rpb24gZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGFs bCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uICh3aXRoIE9pZCBwYXJ0T2lkKSBjb250YWlu cyBpbiBuZXcKKyAqIHBhcnRpdGlvbnMuCisgKgorICogcGFyZW50OglwYXJ0aXRpb25lZCB0 YWJsZQorICogcGFydE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogcGFydHM6CXBvaW50 ZXIgdG8gYXJyYXkgd2l0aCBuZXcgcGFydGl0aW9ucyBkZXNjcmlwdGlvbnMKKyAqIG5wYXJ0 czoJbnVtYmVyIG9mIG5ldyBwYXJ0aXRpb25zCisgKiBwc3RhdGU6CXBvaW50ZXIgdG8gUGFy c2VTdGF0ZSBzdHJ1Y3QgZm9yIGRldGVybWluZSBlcnJvciBwb3NpdGlvbgorICovCitzdGF0 aWMgdm9pZAorY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucyhSZWxhdGlv biBwYXJlbnQsCisJCQkJCQkJCQkgIE9pZCBwYXJ0T2lkLAorCQkJCQkJCQkJICBTaW5nbGVQ YXJ0aXRpb25TcGVjICogKnBhcnRzLAorCQkJCQkJCQkJICBpbnQgbnBhcnRzLAorCQkJCQkJ CQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0 aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYyA9 IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQYXJ0aXRpb25C b3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5mbzsKKwlpbnQJCQlpOwor CWJvb2wJCWZvdW5kID0gdHJ1ZTsKKwlib29sCQlzZWFyY2hOdWxsID0gZmFsc2U7CisJRGF0 dW0JCWRhdHVtID0gUG9pbnRlckdldERhdHVtKE5VTEwpOworCisJQXNzZXJ0KGtleS0+c3Ry YXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJLyoKKwkgKiBTcGVjaWFs IHByb2Nlc3NpbmcgZm9yIE5VTEwgdmFsdWUuIFNlYXJjaCBOVUxMLXZhbHVlIGlmIGl0IGNv bnRhaW5zCisJICogc3BsaXQgcGFydGl0aW9uIChwYXJ0T2lkKS4KKwkgKi8KKwlpZiAocGFy dGl0aW9uX2JvdW5kX2FjY2VwdHNfbnVsbHMoYm91bmRpbmZvKSAmJgorCQlwYXJ0ZGVzYy0+ b2lkc1tib3VuZGluZm8tPm51bGxfaW5kZXhdID09IHBhcnRPaWQpCisJeworCQlpZiAoIWZp bmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlvbnNfbGlzdCgma2V5LT5wYXJ0c3VwZnVuY1swXSwK KwkJCQkJCQkJCQkJICAga2V5LT5wYXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBhcnRzLCBkYXR1 bSwgdHJ1ZSkpCisJCXsKKwkJCWZvdW5kID0gZmFsc2U7CisJCQlzZWFyY2hOdWxsID0gdHJ1 ZTsKKwkJfQorCX0KKworCS8qCisJICogU2VhcmNoIGFsbCB2YWx1ZXMgb2Ygc3BsaXQgcGFy dGl0aW9uIHdpdGggcGFydE9pZCBpbiBQYXJ0aXRpb25EZXNjIG9mCisJICogcGFydGl0aW9u ZGUgdGFibGUuCisJICovCisJZm9yIChpID0gMDsgaSA8IGJvdW5kaW5mby0+bmRhdHVtczsg aSsrKQorCXsKKwkJaWYgKHBhcnRkZXNjLT5vaWRzW2JvdW5kaW5mby0+aW5kZXhlc1tpXV0g PT0gcGFydE9pZCkKKwkJeworCQkJLyogV2UgZm91bmQgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0 aXRpb24gY29udGFpbnMuICovCisJCQlkYXR1bSA9IGJvdW5kaW5mby0+ZGF0dW1zW2ldWzBd OworCQkJaWYgKCFmaW5kX3ZhbHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3QoJmtleS0+cGFy dHN1cGZ1bmNbMF0sCisJCQkJCQkJCQkJCQkgICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRz LCBucGFydHMsIGRhdHVtLCBmYWxzZSkpCisJCQl7CisJCQkJZm91bmQgPSBmYWxzZTsKKwkJ CQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCWlmICghZm91bmQpCisJeworCQlDb25zdAkg ICAqbm90Rm91bmRWYWw7CisKKwkJaWYgKCFzZWFyY2hOdWxsKQorCQkJLyogTWFrZSBDb25z dCBmb3IgZ2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBub3QgZm91bmQgdmFsdWUuICov CisJCQlub3RGb3VuZFZhbCA9IG1ha2VDb25zdChrZXktPnBhcnR0eXBpZFswXSwKKwkJCQkJ CQkJCWtleS0+cGFydHR5cG1vZFswXSwKKwkJCQkJCQkJCWtleS0+cGFydHR5cGNvbGxbMF0s CisJCQkJCQkJCQlrZXktPnBhcnR0eXBsZW5bMF0sCisJCQkJCQkJCQlkYXR1bSwKKwkJCQkJ CQkJCWZhbHNlLAkvKiBpc251bGwgKi8KKwkJCQkJCQkJCWtleS0+cGFydHR5cGJ5dmFsWzBd KTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygibmV3IHBhcnRpdGlvbnMgbm90IGhh dmUgdmFsdWUgJXMgYnV0IHNwbGl0IHBhcnRpdGlvbiBoYXMiLAorCQkJCQkJc2VhcmNoTnVs bCA/ICJOVUxMIiA6IGdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcobm90Rm91bmRWYWwpKSkp OworCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0CisgKgorICog Q2hlY2tzIG5ldyBwYXJ0aXRpb25zIGZvciBTUExJVCBQQVJUSVRJT05TIGNvbW1hbmQ6Cisg KiAxLiBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lLgorICogMi4gTmV3IHBhcnRp dGlvbnMgc2hvdWxkIGhhdmUgZGlmZmVyZW50IG5hbWVzCisgKiAgICAod2l0aCBleGlzdGlu ZyBwYXJ0aXRpb25zIHRvbykuCisgKiAzLiBCb3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgc2hv dWxkIG5vdCBvdmVybGFwIHdpdGggbmV3IGFuZCBleGlzdGluZworICogICAgcGFydGl0aW9u cy4KKyAqIDQuIEluIGNhc2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9u LCBvbmUgb2YgbmV3IHBhcnRpdGlvbnMKKyAqICAgIHNob3VsZCBiZSBERUZBVUxULgorICog NS4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBvciBleGlzdGluZyBwYXJ0aXRpb25zIGNvbnRh aW5zIERFRkFVTFQKKyAqICAgIHBhcnRpdGlvbiwgbmV3IHBhcnRpdGlvbnMgY2FuIGhhdmUg YW55IGJvdW5kcyBpbnNpZGUgc3BsaXQKKyAqICAgIHBhcnRpdGlvbiBib3VuZCAoY2FuIGJl IHNwYWNlcyBiZXR3ZWVuIHBhcnRpdGlvbnMgYm91bmRzKS4KKyAqIDYuIEluIGNhc2UgcGFy dGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBERUZBVUxUIHBhcnRpdGlvbiwgREVGQVVM VAorICogICAgcGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9uZSBvZiBuZXcgcGFydGl0 aW9uLgorICogNy4gSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBub3QgY29udGFpbnMgREVGQVVM VCBwYXJ0aXRpb24gYW5kCisgKiAgICBwYXJ0aXRpb25lZCB0YWJsZSBkb2VzIG5vdCBoYXZl IERFRkFVTFQgcGFydGl0aW9uIHRoZSBmb2xsb3dpbmcKKyAqICAgIHNob3VsZCBiZSB0cnVl OiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBlcXVhbAorICogICAg dG8gYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgorICoKKyAqIHBhcmVudDoJCQlwYXJ0aXRp b25lZCB0YWJsZQorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24gT2lkCisgKiBz cGxpdFBhcnROYW1lOglzcGxpdCBwYXJ0aXRpb24gbmFtZQorICogbGlzdDoJCQlsaXN0IG9m IG5ldyBwYXJ0aXRpb25zCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0 cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3ZvaWQKK2NoZWNrX3Bh cnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCSAgIE9pZCBzcGxp dFBhcnRPaWQsCisJCQkJCQkgICBSYW5nZVZhciAqc3BsaXRQYXJ0TmFtZSwKKwkJCQkJCSAg IExpc3QgKnBhcnRsaXN0LAorCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBh cnRpdGlvbktleSBrZXk7CisJY2hhcgkJc3RyYXRlZ3k7CisJT2lkCQkJZGVmYXVsdFBhcnRP aWQ7CisJYm9vbAkJaXNTcGxpdFBhcnREZWZhdWx0OworCWJvb2wJCWV4aXN0c0RlZmF1bHRQ YXJ0OworCUxpc3RDZWxsICAgKmxpc3RwdHI7CisJaW50CQkJZGVmYXVsdF9pbmRleCA9IC0x OworCWludAkJCWksCisJCQkJajsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICoqbmV3X3BhcnRz OworCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwc1ByZXYgPSBOVUxMOworCWludAkJCW5wYXJ0 cyA9IDA7CisKKwlrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0 cmF0ZWd5ID0gZ2V0X3BhcnRpdGlvbl9zdHJhdGVneShrZXkpOworCisJc3dpdGNoIChzdHJh dGVneSkKKwl7CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX0xJU1Q6CisJCWNhc2UgUEFS VElUSU9OX1NUUkFURUdZX1JBTkdFOgorCQkJeworCQkJCS8qCisJCQkJICogTWFrZSBhcnJh eSBuZXdfcGFydHMgd2l0aCBuZXcgcGFydGl0aW9ucyBleGNlcHQgREVGQVVMVAorCQkJCSAq IHBhcnRpdGlvbi4KKwkJCQkgKi8KKwkJCQluZXdfcGFydHMgPSAoU2luZ2xlUGFydGl0aW9u U3BlYyAqICopCisJCQkJCXBhbGxvYzAobGlzdF9sZW5ndGgocGFydGxpc3QpICogc2l6ZW9m KFNpbmdsZVBhcnRpdGlvblNwZWMgKikpOworCQkJCWkgPSAtMTsKKwkJCQlmb3JlYWNoKGxp c3RwdHIsIHBhcnRsaXN0KQorCQkJCXsKKwkJCQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3Bz ID0KKwkJCQkJKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCisJ CQkJCWkrKzsKKwkJCQkJaWYgKHNwcy0+Ym91bmQtPmlzX2RlZmF1bHQpCisJCQkJCXsKKwkJ CQkJCWlmIChkZWZhdWx0X2luZGV4ID49IDApCisJCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJ CQkJCQkJCQkgZXJybXNnKCJERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lIikpLAor CQkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3BzLT5uYW1lLT5sb2NhdGlv bikpOworCQkJCQkJZGVmYXVsdF9pbmRleCA9IGk7CisJCQkJCQljb250aW51ZTsKKwkJCQkJ fQorCQkJCQluZXdfcGFydHNbbnBhcnRzKytdID0gc3BzOworCQkJCX0KKwkJCX0KKwkJCWJy ZWFrOworCisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX0hBU0g6CisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJCSBlcnJtc2coInBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5v dCBiZSBzcGxpdCIpKSk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJP UiwgInVuZXhwZWN0ZWQgcGFydGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChpbnQpIGtl eS0+c3RyYXRlZ3kpOworCQkJYnJlYWs7CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJ VElPTl9TVFJBVEVHWV9SQU5HRSkKKwl7CisJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dl cl9ib3VuZHM7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKip0bXBfbmV3X3BhcnRzOworCisJ CS8qCisJCSAqIEZvciBzaW1wbGlmeSBjaGVjayBmb3IgcmFuZ2VzIG9mIG5ldyBwYXJ0aXRp b25zIG5lZWQgdG8gc29ydCBhbGwKKwkJICogcGFydGl0aW9ucyBpbiBhc2NlbmRpbmcgb3Jk ZXIgb2YgdGhlbSBib3VuZHMgKHdlIGNvbXBhcmUgdXBwZXIKKwkJICogYm91bmQgb25seSku CisJCSAqLworCQlsb3dlcl9ib3VuZHMgPSAoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKikKKwkJ CXBhbGxvYzAobnBhcnRzICogc2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOworCisJ CS8qIENyZWF0ZSBhcnJheSBvZiBsb3dlciBib3VuZHMuICovCisJCWZvciAoaSA9IDA7IGkg PCBucGFydHM7IGkrKykKKwkJeworCQkJbG93ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFy dGl0aW9uX3Jib3VuZChrZXksIGksCisJCQkJCQkJCQkJCQkJCW5ld19wYXJ0c1tpXS0+Ym91 bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKwkJfQorCisJCS8qIFNvcnQgYXJyYXkgb2YgbG93 ZXIgYm91bmRzLiAqLworCQlxc29ydF9hcmcobG93ZXJfYm91bmRzLCBucGFydHMsIHNpemVv ZihQYXJ0aXRpb25SYW5nZUJvdW5kICopLAorCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3Vu ZF9jbXAsICh2b2lkICopIGtleSk7CisKKwkJLyogUmVvcmRlciBhcnJheSBvZiBwYXJ0aXRp b25zLiAqLworCQl0bXBfbmV3X3BhcnRzID0gbmV3X3BhcnRzOworCQluZXdfcGFydHMgPSAo U2luZ2xlUGFydGl0aW9uU3BlYyAqICopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihT aW5nbGVQYXJ0aXRpb25TcGVjICopKTsKKwkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsr KQorCQkJbmV3X3BhcnRzW2ldID0gdG1wX25ld19wYXJ0c1tsb3dlcl9ib3VuZHNbaV0tPmlu ZGV4XTsKKworCQlwZnJlZSh0bXBfbmV3X3BhcnRzKTsKKwkJcGZyZWUobG93ZXJfYm91bmRz KTsKKwl9CisKKwlkZWZhdWx0UGFydE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9mcm9tX3Bh cnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCS8q IGlzU3BsaXRQYXJ0RGVmYXVsdCBmbGFnOiBpcyBzcGxpdCBwYXJ0aXRpb24gYSBERUZBVUxU IHBhcnRpdGlvbj8gKi8KKwlpc1NwbGl0UGFydERlZmF1bHQgPSAoZGVmYXVsdFBhcnRPaWQg PT0gc3BsaXRQYXJ0T2lkKTsKKworCWlmIChpc1NwbGl0UGFydERlZmF1bHQgJiYgZGVmYXVs dF9pbmRleCA8IDApCisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiYW55IHBhcnRp dGlvbiBpbiB0aGUgbGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRp dGlvbiBpcyBERUZBVUxUIikpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsICgo U2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsaW5pdGlhbChwYXJ0bGlzdCkpLT5uYW1lLT5sb2Nh dGlvbikpOworCX0KKwllbHNlIGlmICghaXNTcGxpdFBhcnREZWZhdWx0ICYmIChkZWZhdWx0 X2luZGV4ID49IDApICYmIE9pZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJU2lu Z2xlUGFydGl0aW9uU3BlYyAqc3BzRGVmID0KKwkJKFNpbmdsZVBhcnRpdGlvblNwZWMgKikg bGlzdF9udGgocGFydGxpc3QsIGRlZmF1bHRfaW5kZXgpOworCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQkgZXJybXNnKCJuZXcgcGFydGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVG QVVMVCBwYXJ0aXRpb24gYWxyZWFkeSBleGlzdHMiKSksCisJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgc3BzRGVmLT5uYW1lLT5sb2NhdGlvbikpOworCX0KKworCS8qIEluZGlj YXRvciB0aGF0IHBhcnRpdGlvbmVkIHRhYmxlIGhhcyAob3Igd2lsbCBoYXZlKSBERUZBVUxU IHBhcnRpdGlvbiAqLworCWV4aXN0c0RlZmF1bHRQYXJ0ID0gT2lkSXNWYWxpZChkZWZhdWx0 UGFydE9pZCkgfHwgKGRlZmF1bHRfaW5kZXggPj0gMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwg bnBhcnRzOyBpKyspCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSBuZXdfcGFy dHNbaV07CisKKwkJaWYgKGlzU3BsaXRQYXJ0RGVmYXVsdCkKKwkJeworCQkJLyoKKwkJCSAq IEluIGNhc2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uIHdlIGNhbiB1 c2UgYW55CisJCQkgKiBmcmVlIHJhbmdlcyAtIGFzIHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFy dGl0aW9uLgorCQkJICovCisJCQljaGVja19uZXdfcGFydGl0aW9uX2JvdW5kKHNwcy0+bmFt ZS0+cmVsbmFtZSwgcGFyZW50LCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJICBwc3RhdGUpOwor CQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIENoZWNrcyB0aGF0IGJvdW5kIG9mIGN1 cnJlbnQgcGFydGl0aW9uIGlzIGluc2lkZSBib3VuZCBvZiBzcGxpdAorCQkJICogcGFydGl0 aW9uLiBGb3IgcmFuZ2UgcGFydGl0aW9uaW5nOiBjaGVja3MgdGhhdCB1cHBlciBib3VuZCBv ZgorCQkJICogcHJldmlvdXMgcGFydGl0aW9uIGlzIGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9m IGN1cnJlbnQKKwkJCSAqIHBhcnRpdGlvbi4gRm9yIGxpc3QgcGFydGl0aW9uaW5nOiBjaGVj a3MgdGhhdCBzcGxpdCBwYXJ0aXRpb24KKwkJCSAqIGNvbnRhaW5zIGFsbCB2YWx1ZXMgb2Yg Y3VycmVudCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJ T05fU1RSQVRFR1lfUkFOR0UpCisJCQl7CisJCQkJYm9vbAkJZmlyc3QgPSAoaSA9PSAwKTsK KwkJCQlib29sCQlsYXN0ID0gKGkgPT0gKG5wYXJ0cyAtIDEpKTsKKworCQkJCWNoZWNrX3Bh cnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlKHBhcmVudCwgc3BzLT5uYW1lLT5yZWxu YW1lLCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJCQkJCSAgIHNwbGl0UGFydE9pZCwgc3BsaXRQ YXJ0TmFtZSwKKwkJCQkJCQkJCQkJCQkgICBmaXJzdCwgbGFzdCwKKwkJCQkJCQkJCQkJCQkg ICBleGlzdHNEZWZhdWx0UGFydCwgcHN0YXRlKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQljaGVj a19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9saXN0KHBhcmVudCwgc3BzLT5uYW1lLT5y ZWxuYW1lLAorCQkJCQkJCQkJCQkJCSAgc3BzLT5ib3VuZCwgc3BsaXRQYXJ0T2lkLCBwc3Rh dGUpOworCQl9CisKKwkJLyogUmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qg b3ZlcmxhcC4gKi8KKwkJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5H RSAmJiBzcHNQcmV2KQorCQkJY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlKHBh cmVudCwgc3BzUHJldi0+bmFtZSwgc3BzUHJldi0+Ym91bmQsCisJCQkJCQkJCQkJCSAgc3Bz LT5uYW1lLCBzcHMtPmJvdW5kLCBleGlzdHNEZWZhdWx0UGFydCwgcHN0YXRlKTsKKworCQlz cHNQcmV2ID0gc3BzOworCisJCS8qIENoZWNrOiBuZXcgcGFydGl0aW9ucyBzaG91bGQgaGF2 ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRzOyBq KyspCisJCXsKKwkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczIgPSBuZXdfcGFydHNbal07 CisKKwkJCWlmIChlcXVhbChzcHMtPm5hbWUsIHNwczItPm5hbWUpKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJCQkJ CQkgZXJybXNnKCJuYW1lIFwiJXNcIiBhbHJlYWR5IHVzZWQiLCBzcHMyLT5uYW1lLT5yZWxu YW1lKSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHMyLT5uYW1lLT5s b2NhdGlvbikpOworCQl9CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJB VEVHWV9MSVNUKQorCXsKKwkJLyogVmFsdWVzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBu b3Qgb3ZlcmxhcC4gKi8KKwkJY2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0KHBh cmVudCwgbmV3X3BhcnRzLCBucGFydHMsCisJCQkJCQkJCQkJICBwc3RhdGUpOworCisJCS8q CisJCSAqIE5lZWQgdG8gY2hlY2sgdGhhdCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlv biBjb250YWlucyBpbiBuZXcKKwkJICogcGFydGl0aW9ucy4gU2tpcCB0aGlzIGNoZWNrIGlm IERFRkFVTFQgcGFydGl0aW9uIGV4aXN0cy4KKwkJICovCisJCWlmICghZXhpc3RzRGVmYXVs dFBhcnQpCisJCQljaGVja19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zKHBhcmVu dCwgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJCQkJICBuZXdfcGFydHMsIG5wYXJ0cywgcHN0 YXRlKTsKKwl9CisKKwlwZnJlZShuZXdfcGFydHMpOworfQorCiAvKgogICogY2FsY3VsYXRl X3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKaW5kZXggYjYyNWY0NzFhOC4uMTEwYzI2NzgyMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYwpAQCAtMTI2NTMsMyArMTI2NTMsMjEgQEAgZ2V0X3JhbmdlX3BhcnRi b3VuZF9zdHJpbmcoTGlzdCAqYm91bmRfZGF0dW1zKQogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsK IH0KKworLyoKKyAqIGdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcKKyAqCQlBIEMgc3RyaW5n IHJlcHJlc2VudGF0aW9uIG9mIG9uZSBsaXN0IHBhcnRpdGlvbiB2YWx1ZQorICovCitjaGFy ICoKK2dldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcoQ29uc3QgKnZhbCkKK3sKKwlkZXBhcnNl X2NvbnRleHQgY29udGV4dDsKKwlTdHJpbmdJbmZvCWJ1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7 CisKKwltZW1zZXQoJmNvbnRleHQsIDAsIHNpemVvZihkZXBhcnNlX2NvbnRleHQpKTsKKwlj b250ZXh0LmJ1ZiA9IGJ1ZjsKKworCWdldF9jb25zdF9leHByKHZhbCwgJmNvbnRleHQsIC0x KTsKKworCXJldHVybiBidWYtPmRhdGE7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5k ZXggZWRmZTM2YmY0Mi4uZDBmZmEzZTlkZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApA QCAtMjI2MCw2ICsyMjYwLDcgQEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBlCiAJQVRf QXR0YWNoUGFydGl0aW9uLAkJCS8qIEFUVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQ YXJ0aXRpb24sCQkJLyogREVUQUNIIFBBUlRJVElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlv bkZpbmFsaXplLCAvKiBERVRBQ0ggUEFSVElUSU9OIEZJTkFMSVpFICovCisJQVRfU3BsaXRQ YXJ0aXRpb24sCQkJLyogU1BMSVQgUEFSVElUSU9OICovCiAJQVRfTWVyZ2VQYXJ0aXRpb25z LAkJCS8qIE1FUkdFIFBBUlRJVElPTlMgKi8KIAlBVF9BZGRJZGVudGl0eSwJCQkJLyogQURE IElERU5USVRZICovCiAJQVRfU2V0SWRlbnRpdHksCQkJCS8qIFNFVCBpZGVudGl0eSBjb2x1 bW4gb3B0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o IGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDk4NTQ3NGRmODkuLjg5ZTBh NWM1MDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9z cmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTQwNCw2ICs0MDQsNyBAQCBQR19LRVlX T1JEKCJza2lwIiwgU0tJUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgic21hbGxpbnQiLCBTTUFMTElOVCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInNuYXBzaG90IiwgU05BUFNIT1QsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNvbWUiLCBTT01FLCBSRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgic3BsaXQiLCBTUExJVCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3FsIiwgU1FMX1AsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0YWJsZSIsIFNU QUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic3Rh bmRhbG9uZSIsIFNUQU5EQUxPTkVfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCBi L3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKaW5kZXggMDMyOWQ3YmQ4 NC4uOWQyYTI2NzA1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5o CkBAIC0xNDMsNiArMTQzLDExIEBAIGV4dGVybiBpbnQJcGFydGl0aW9uX3JhbmdlX2RhdHVt X2JzZWFyY2goRm1nckluZm8gKnBhcnRzdXBmdW5jLAogZXh0ZXJuIGludAlwYXJ0aXRpb25f aGFzaF9ic2VhcmNoKFBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8sCiAJCQkJCQkJCSAg IGludCBtb2R1bHVzLCBpbnQgcmVtYWluZGVyKTsKIAorZXh0ZXJuIHZvaWQgY2hlY2tfcGFy dGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJICAgT2lkIHNw bGl0UGFydE9pZCwKKwkJCQkJCQkJCSAgIFJhbmdlVmFyICpzcGxpdFBhcnROYW1lLAorCQkJ CQkJCQkJICAgTGlzdCAqcGFydGxpc3QsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3Rh dGUpOwogZXh0ZXJuIHZvaWQgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2Uo UmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAogCQkJCQkJ CQkJCQkJTGlzdCAqcGFydE9pZHMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9y dWxldXRpbHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCmluZGV4IDE2MWZi NWVmMDIuLjZkODYwODA2MjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1 dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCkBAIC00OSw0ICs0 OSw2IEBAIGV4dGVybiBjaGFyICpnZXRfcmFuZ2VfcGFydGJvdW5kX3N0cmluZyhMaXN0ICpi b3VuZF9kYXR1bXMpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X3N0YXRpc3RpY3NvYmpkZWZf c3RyaW5nKE9pZCBzdGF0ZXh0aWQpOwogCitleHRlcm4gY2hhciAqZ2V0X2xpc3RfcGFydHZh bHVlX3N0cmluZyhDb25zdCAqdmFsKTsKKwogI2VuZGlmCQkJCQkJCS8qIFJVTEVVVElMU19I ICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9u LXNwbGl0Lm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3Bs aXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVkOWU4YjA5 MjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFy dGl0aW9uLXNwbGl0Lm91dApAQCAtMCwwICsxLDE5MCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3 aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYiBzMXNwbHQgczJi IHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVS IFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAo UEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJ CQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgy MCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZB TFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOwor c3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJz OiBTRUxFQ1QgKiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQw NQorIDF8dGV4dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dz KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYnJyIHMyaSBzMWMg czJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRw YXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9O IHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFS VElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3Rl cCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAg czJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcg Li4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQg ICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0 ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjog czFiIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOworc3Rl cCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8y MCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMg RlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwg U0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwg J3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6 IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1Qg KiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4 dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJyciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycwor c3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0 ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBf MjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVT IEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNF UlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3Rl cCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQgICAgIAorLS0r LS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0ZXh0MjUKKzM1 fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicnIgczFz cGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9O IExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFy dCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0 cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJ VElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAg czJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMy aTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAqIEZST00gdHBhcnQ7CisgaXx0ICAg ICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4 dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMx YnJyIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJycjogQkVHSU4gSVNP TEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJM RSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJ VElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAg IFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsK K3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAg czJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgPHdhaXRpbmcg Li4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8Li4uIGNvbXBsZXRlZD4KK3N0 ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUICogRlJPTSB0cGFydDsKKyBpfHQg ICAgIAorLS0rLS0tLS0tCisgNXx0ZXh0MDUKKyAxfHRleHQwMQorMTV8dGV4dDE1CisyNXx0 ZXh0MjUKKzM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjog czFicyBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWJzOiBCRUdJTiBJU09M QVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRw YXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9O IHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFS VElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3Rl cCBzMmI6IEJFR0lOOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwg J3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6 IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1Qg KiBGUk9NIHRwYXJ0OworIGl8dCAgICAgCistLSstLS0tLS0KKyA1fHRleHQwNQorIDF8dGV4 dDAxCisxNXx0ZXh0MTUKKzI1fHRleHQyNQorMzV8dGV4dDM1CisoNSByb3dzKQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJzIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMK K3N0ZXAgczFiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAg czFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAg SU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZS T00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBS RVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgx LCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy aTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVD VCAqIEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0 ZXh0MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKKwor c3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnMgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJz CitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVw IHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIw IElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgx MCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBG Uk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBT RVJJQUxJWkFCTEU7CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAn dGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTog PC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCAq IEZST00gdHBhcnQ7CisgaXx0ICAgICAKKy0tKy0tLS0tLQorIDV8dGV4dDA1CisgMXx0ZXh0 MDEKKzE1fHRleHQxNQorMjV8dGV4dDI1CiszNXx0ZXh0MzUKKyg1IHJvd3MpCisKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVz dC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCmluZGV4IDEwNzEyNTYxODIuLjc5Yjcz MGZiODYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1 bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAtMTA0 LDYgKzEwNCw3IEBAIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTIKIHRlc3Q6IHBhcnRp dGlvbi1rZXktdXBkYXRlLTMKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTQKIHRlc3Q6 IHBhcnRpdGlvbi1tZXJnZQordGVzdDogcGFydGl0aW9uLXNwbGl0CiB0ZXN0OiBwbHBnc3Fs LXRvYXN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0CiB0ZXN0OiBjbHVzdGVyLWNvbmZsaWN0 LXBhcnRpdGlvbgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRp dGlvbi1zcGxpdC5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1z cGxpdC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA4NzIz OWE0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFy dGl0aW9uLXNwbGl0LnNwZWMKQEAgLTAsMCArMSw1NCBAQAorIyBWZXJpZnkgdGhhdCBTUExJ VCBvcGVyYXRpb24gbG9ja3MgRE1MIG9wZXJhdGlvbnMgd2l0aCBwYXJ0aXRpb25lZCB0YWJs ZQorCitzZXR1cAoreworICBEUk9QIFRBQkxFIElGIEVYSVNUUyB0cGFydDsKKyAgQ1JFQVRF IFRBQkxFIHRwYXJ0KGkgaW50LCB0IHRleHQpIHBhcnRpdGlvbiBieSByYW5nZShpKTsKKyAg Q1JFQVRFIFRBQkxFIHRwYXJ0XzAwXzEwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVT IEZST00gKDApIFRPICgxMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8xMF8yMCBQQVJUSVRJ T04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKKyAgQ1JFQVRFIFRB QkxFIHRwYXJ0XzIwXzMwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDIw KSBUTyAoMzApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfZGVmYXVsdCBQQVJUSVRJT04gT0Yg dHBhcnQgREVGQVVMVDsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICg1LCAndGV4dDA1 Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMTUsICd0ZXh0MTUnKTsKKyAgSU5T RVJUIElOVE8gdHBhcnQgVkFMVUVTICgyNSwgJ3RleHQyNScpOworICBJTlNFUlQgSU5UTyB0 cGFydCBWQUxVRVMgKDM1LCAndGV4dDM1Jyk7Cit9CisKK3RlYXJkb3duCit7CisgIERST1Ag VEFCTEUgdHBhcnQ7Cit9CisKK3Nlc3Npb24gczEKK3N0ZXAgczFiCXsgQkVHSU47IH0KK3N0 ZXAgczFicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9Citz dGVwIHMxYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVw IHMxc3BsdAl7IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8y MCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAo MTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMg RlJPTSAoMTUpIFRPICgyMCkpOyB9CitzdGVwIHMxYwl7IENPTU1JVDsgfQorCisKK3Nlc3Np b24gczIKK3N0ZXAgczJiCXsgQkVHSU47IH0KK3N0ZXAgczJicnIJeyBCRUdJTiBJU09MQVRJ T04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMyYnMJeyBCRUdJTiBJU09MQVRJ T04gTEVWRUwgU0VSSUFMSVpBQkxFOyB9CitzdGVwIHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0 IFZBTFVFUyAoMSwgJ3RleHQwMScpOyB9CitzdGVwIHMyYwl7IENPTU1JVDsgfQorc3RlcCBz MnMJeyBTRUxFQ1QgKiBGUk9NIHRwYXJ0OyB9CisKKworIyBzMSBzdGFydHMgU1BMSVQgUEFS VElUSU9OIHRoZW4gczIgdHJ5aW5nIHRvIGluc2VydCByb3cgYW5kCisjIHdhaXRzIHVudGls IHMxIGZpbmlzaGVkIFNQTElUIG9wZXJhdGlvbi4KKworcGVybXV0YXRpb24gczFiIHMxc3Bs dCBzMmIgczJpIHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYnJyIHMy aSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJj IHMycworCitwZXJtdXRhdGlvbiBzMWJyciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycwor cGVybXV0YXRpb24gczFicnIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0 YXRpb24gczFicnIgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9u IHMxYnMgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnMgczFz cGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicyBzMXNwbHQgczJi cyBzMmkgczFjIHMyYyBzMnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9k ZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDY5OTIwNzU3YjIuLjI2NWVm MmE1NDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90 ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBh cnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAtMzAwLDYgKzMwMCw5IEBAIGdldF9hbHRlcnRh YmxlX3N1YmNtZGluZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRGV0YWNoUGFy dGl0aW9uRmluYWxpemU6CiAJCQkJc3RydHlwZSA9ICJERVRBQ0ggUEFSVElUSU9OIC4uLiBG SU5BTElaRSI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJ CXN0cnR5cGUgPSAiU1BMSVQgUEFSVElUSU9OIjsKKwkJCQlicmVhazsKIAkJCWNhc2UgQVRf TWVyZ2VQYXJ0aXRpb25zOgogCQkJCXN0cnR5cGUgPSAiTUVSR0UgUEFSVElUSU9OUyI7CiAJ CQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9zcGxpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9z cGxpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMzg3MzZk M2U2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFy dGl0aW9uX3NwbGl0Lm91dApAQCAtMCwwICsxLDEzMTcgQEAKKy0tCistLSBQQVJUSVRJT05f U1BMSVQKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiAu Li4iIGNvbW1hbmQKKy0tCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7 CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7Cist LQorLS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3QgZm9yIGVycm9y IGNvZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBpbnQs IHNhbGVzbWFuX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2Rh dGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJS T1I6ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX3h4eCBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1 LTAxJykpOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAor LS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAyMiIgYWxyZWFkeSBleGlzdHMKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVz X2phbjIwMjIiIGFscmVhZHkgZXhpc3RzCistLSBFUlJPUjogIGludmFsaWQgYm91bmQgc3Bl Y2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAy Mi0wNi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpKTsKK0VSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdl IHBhcnRpdGlvbgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFM VUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5k IHNwZWNpZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZp ZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0xJTkUgMzogICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor REVUQUlMOiAgU3BlY2lmaWVkIGxvd2VyIGJvdW5kICgnMDMtMDEtMjAyMicpIGlzIGdyZWF0 ZXIgdGhhbiBvciBlcXVhbCB0byB1cHBlciBib3VuZCAoJzAyLTAxLTIwMjInKS4KKy0tRVJS T1I6ICBsaXN0IG9mIHNwbGl0IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW5zIGF0IGxlYXN0 IHR3byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTEwLTAxJykpOworRVJS T1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWlucyBhdCBsZWFzdCB0 d28gaXRlbXMKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19m ZWIyMDIyIiBpcyBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbGVzcyB0aGFuIGxvd2VyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5hbWUg InNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgYWxyZWFkeSB1c2VkCistLSAoV2UgY2FuIGNyZWF0 ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiwgYnV0 IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUpCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIy MDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBu YW1lICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGFscmVhZHkgdXNlZAorTElORSAzOiAgICBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMuLi4KKyAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNf ZmViMjAyMiIgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CitFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGFscmVhZHkgdXNlZAorTElORSAzOiAg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgInNhbGVzX2Zl Yl9tYXJfYXByMjAyMiIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUKK0FMVEVSIFRBQkxF IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogICJzYWxlc19mZWJfbWFy X2FwcjIwMjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlCistLSBFUlJPUjogIHVwcGVy IGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgZ3JlYXRlciB0aGFuIHVw cGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug U1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2 LTAxJykpOworRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIw MjIiIGlzIGdyZWF0ZXIgdGhhbiB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJ TkUgNDogLi4uIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNi0wLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBsb3dlciBib3VuZCBv ZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVhbHMgdG8gdXBwZXIgYm91 bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEn KSk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIg Y29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxl c19mZWIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBUZXN0cyBmb3Igc3BhY2VzIGJl dHdlZW4gcGFydGl0aW9ucywgdGhlbSBzaG91bGQgYmUgZXhlY3V0ZWQgd2l0aG91dCBERUZB VUxUIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElP TiBzYWxlc19vdGhlcnM7CistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFscyB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBw YXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93 ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWxzIHRv IGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElORSAyOiAgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAyJykgVE8uLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CistLQor LS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIHNwbGl0IHBhcnRpdGlv bgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxl c21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERB VEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Zl Yl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1 MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgz LCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAn MjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1Bv aXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcics ICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUw LCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMs ICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5n ZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAx MDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAg ICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAg IHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAg ICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNz c29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBM aSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5 IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAg ICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAg ICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgor ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIw MjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0w Ny0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwg MDQtMDYtMjAyMgorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUx MCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIw MjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAg MTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwg ICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBz YWxlc19mZWIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAg fCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nz b24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfbWFyMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDcgfCBMaSAg ICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwg TXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAx MiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoMyByb3dz KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisg ICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAy MgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2 LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVz bWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0w NC0yMDIyCisoMSByb3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0t CistLSBBZGQgc3BsaXQgcGFydGl0aW9uIHRoZW4gYWRkIHJvd3MgaW50byBwYXJ0aXRpb25l ZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5U LCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19k YXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0x MCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAg MjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo NCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAg JzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdM aScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjIt MDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXIn LCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTkn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3 NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0 LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxl c19yYW5nZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAg ICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8 ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAg ICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgIDIgfCBTbWlybm9m ZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9p cm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8 IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAg IDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAg ICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAg ICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIy CisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0 LTEzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAg fCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAg MzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAg ICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAg ICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAg ICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDMgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2Zm ICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2ly b3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwg RXJpY3Nzb24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisK K1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDcg fCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAg ICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCiso MyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNtYW5faWQg fCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK KyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0y MDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQt MDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8 IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOwor IHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2Rh dGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAg fCAwNS0wNC0yMDIyCisoMSByb3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FE RTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsK Ky0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQg dmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzbWFuX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJ TlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAg IChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNf bW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAy LCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVM VCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAx KSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAo MjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNh bGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1B WFZBTFVFLCBNQVhWQUxVRSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25h bWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFn ZXIxJywgMjAyMSwgMTIsIDcpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9u YW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5h Z2VyMicsIDIwMjEsIDEyLCA4KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjMnLCAyMDIyLCAxLCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjEnLCAyMDIyLCAyLCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjInLCAyMDIyLCAxLCAyKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjMnLCAyMDIyLCAyLCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjEnLCAyMDIyLCAzLCAzKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjInLCAyMDIyLCAzLCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjMnLCAyMDIyLCA1LCAxKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKKyBzYWxl c21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2Fs ZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAg ICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAg ICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4 IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQg fCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIg fCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIx ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAz LjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwg ICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVu dAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAg IDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDkgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwg c2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVu dCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8 ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAg ICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisoMiBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworIHNhbGVzbWFuX25h bWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRl IHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAg MSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAg ICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxl cyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIu MDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNh bGVzX290aGVyOworIHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGgg fCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAg ICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBT YWxlcyBkZXBhcnRtZW50CisoMyByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwg MiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNt YW5fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgn TWFuYWdlcjEnLCAyMDIyLCAxLCAxMCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVz bWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAo J01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOwor IHNhbGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkg fCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAx MiB8ICAgICAgICAgNyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdl cjIgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEu MTIuMDggfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIg fCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRt ZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAg ICAgMiB8IDIwMjIuMDEuMDIgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8 ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBT YWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAg ICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFu YWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIw MjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIw MjIgfCAgICAgICAgICAgMiB8ICAgICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAg ICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMuMDQg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50Ciso MTEgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworIHNhbGVzbWFuX25h bWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRl IHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAg NyB8IDIwMjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAg ICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxl cyBkZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7 Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2Rh eSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAxIHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAy Mi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAy MiB8ICAgICAgICAgICAxIHwgICAgICAgIDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFy dG1lbnQKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKKyBzYWxl c21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2Fs ZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAg ICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAx IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDIgfCAgICAgICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAor KDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKyBzYWxlc21hbl9uYW1l IHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8 IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMg fCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUg fCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykK KworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhp c3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CitFUlJPUjogIHJlbGF0aW9u ICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUICog RlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKyAgICAgICAgICAgICAgICAgICAgICBeCitEUk9Q IFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxU IHBhcnRpdGlvbjsgdXNpbmcgYSBpbmRleCBvbiBwYXJ0aXRpb24ga2V5OyBjaGVjayBpbmRl eCBhZnRlciBzcGxpdAorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5f aWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBz YWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0NS RUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lkeCBPTiBzYWxlc19yYW5nZSBV U0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIw MDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQs ICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcy MDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGkn LCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAz LTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywg ICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcs ICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwg J1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNf b3RoZXJzOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAg ICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwg ICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAg ICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgIDYgfCBQb2ly b3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA3IHwg TGkgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAg OCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAg ICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAg ICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIK KyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0y MDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUt MDQtMjAyMgorKDExIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0 YWJsZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25f c3BsaXRfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgIHRhYmxlbmFtZSAg IHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX290 aGVycyB8IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVB VEUgSU5ERVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEuc2FsZXNfb3RoZXJzIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93 KQorCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19t YXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg REVGQVVMVCk7CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4ZXMKK1NFVCBlbmFi bGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitTRUxFQ1Qg KiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsK KyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAw IHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAg IDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAg ICAgICAxODUgfCAwMi0yMy0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X21hcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc21hbl9p ZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAy MgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTEx LTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAw My0xOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hl cmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTEg fCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAg ICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisg ICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAy MgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNf ZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTQgfCBTbWl0aCAg ICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDEgcm93KQorCitTRVQgZW5h YmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CitTRUxFQ1Qg KiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2ZlYjIwMjInIGFu ZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnOworICAgICAgIHNjaGVt YW5hbWUgICAgICAgfCAgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAg ICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19mZWIyMDIyIHwgc2FsZXNfZmViMjAy Ml9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfZmVi MjAyMl9zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX2Zl YjIwMjIgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCAqIEZS T00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfbWFyMjAyMicgYW5kIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CisgICAgICAgc2NoZW1hbmFt ZSAgICAgICB8ICAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAg IHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFy dGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX21hcjIwMjIgfCBzYWxlc19tYXIyMDIyX3Nh bGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19tYXIyMDIy X3NhbGVzX2RhdGVfaWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfbWFyMjAy MiBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBw Z19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2NoZW1h bmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFuYW1lICAg ICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0 YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfYXByMjAyMiB8IHNhbGVzX2FwcjIwMjJfc2FsZXNf ZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2FwcjIwMjJfc2Fs ZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19hcHIyMDIyIFVT SU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2lu ZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUg PSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8 ICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNw YWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hIHwgc2FsZXNfb3RoZXJzIHwgc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4MSB8 ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfb3RoZXJzX3NhbGVzX2RhdGVfaWR4 MSBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX290aGVycyBVU0lORyBidHJlZSAo c2FsZXNfZGF0ZSkKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURF OworLS0KKy0tIFRlc3Q6IHNvbWUgY2FzZXMgZm9yIHNwbGl0IERFRkFVTFQgcGFydGl0aW9u IChkaWZmZXJlbnQgYm91bmRzKQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2Fs ZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQg SU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERF RkFVTFQ7CistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAo bG93ZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRp dGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBUTyAoMjAyMjAyMDEp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIw MSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7 CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIGNvbmZs aWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVj MjAyMiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJP TSAoMjAyMTEyMzApIFRPICgyMDIyLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0 aCBzYWxlc19mZWIyMDIyICh1cHBlciBib3VuZCkKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3Vu ZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAx MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAx MDEpIFRPICgyMDIyMDIwMiksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJz YWxlc19mZWIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBw YXJ0aXRpb24gInNhbGVzX2Vycm9yIgorTElORSA0OiAgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBzYWxlc19l cnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAoaW5zaWRlIGJvdW5kKQorLS0g RVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGlj dHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIw MjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9S IFZBTFVFUyBGUk9NICgyMDIxMTIxMCkgVE8gKDIwMjExMjIwKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSks CisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6ICBsb3dlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBi b3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitMSU5FIDM6ICAg IFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAo MjAyMS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZGVjMjAyMiAo ZXhhY3QgdGhlIHNhbWUgYm91bmRzKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2 aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8g KDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IERFRkFVTFQpOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vy cm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24g InNhbGVzX2RlYzIwMjIiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMi4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGFueSBwYXJ0 aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJlIERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0 aXRpb24gaXMgREVGQVVMVAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDEwMSkgVE8gKDIwMjIwMjAxKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEp IFRPICgyMDIyMDMwMSkpOworRVJST1I6ICBhbnkgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNo b3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQKK0xJ TkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIx MTIwMSkgVE8gKDIwLi4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBubyBlcnJvcjog Ym91bmRzIG9mIHNhbGVzX25vZXJyb3IgYmV0d2VlbiBzYWxlc19kZWMyMDIyIGFuZCBzYWxl c19mZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9l cnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTEwKSBUTyAoMjAyMjAxMjApLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIw MjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRB QkxFIHNhbGVzX3JhbmdlOworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9p ZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsK Ky0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBlcXVhbHMgdG8gbG93ZXIg YW5kIHVwcGVyIGJvdW5kcyBvZiBzYWxlc19kZWMyMDIyIGFuZCBzYWxlc19mZWIyMDIyCitB TFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEy MDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBGT1IgVkFM VUVTIEZST00gKDIwMjEwMTAxKSBUTyAoMjAyMTAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRBQkxFIHNhbGVzX3Jh bmdlOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENIRUNLIGFuZCBGT1JF SUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NSRUFURSBU QUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9u YW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEsICAn UG9pcm90Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKAorc2FsZXNtYW5faWQgSU5U IFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lkKSwKK3NhbGVzX2Ftb3VudCBJTlQg Q0hFQ0sgKHNhbGVzX2Ftb3VudCA+IDEpLAorc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBU TyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEn KSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRk ZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25y ZWxpZCA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkOworICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2Fs ZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2Fs ZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVz bWFuX2lkKSBSRUZFUkVOQ0VTIHNhbGVzbWFucyhzYWxlc21hbl9pZCkgfCBzYWxlc19yYW5n ZV9zYWxlc21hbl9pZF9ma2V5ICAgfCB7MX0KKygyIHJvd3MpCisKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpKTsKKy0tIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgQ09OU1RSQUlO VHMgYXMgb24gc2FsZXNfZmViX21hcl9hcHIyMDIyIHBhcnRpdGlvbgorU0VMRUNUIHBnX2dl dF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFp bnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfZmViMjAyMic6OnJlZ2NsYXNzOjpvaWQ7Cisg ICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sg KChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgfCB7Mn0KKyBGT1JFSUdOIEtFWSAo c2FsZXNtYW5faWQpIFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lkKSB8IHNhbGVz X3JhbmdlX3NhbGVzbWFuX2lkX2ZrZXkgICB8IHsxfQorKDIgcm93cykKKworU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0 cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2NsYXNzOjpvaWQ7 CisgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hF Q0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgfCB7Mn0KKyBGT1JFSUdOIEtF WSAoc2FsZXNtYW5faWQpIFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lkKSB8IHNh bGVzX3JhbmdlX3NhbGVzbWFuX2lkX2ZrZXkgICB8IHsxfQorKDIgcm93cykKKworU0VMRUNU IHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2Nv bnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfYXByMjAyMic6OnJlZ2NsYXNzOjpv aWQ7CisgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisg Q0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2sgfCB7Mn0KKyBGT1JFSUdO IEtFWSAoc2FsZXNtYW5faWQpIFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFuX2lkKSB8 IHNhbGVzX3JhbmdlX3NhbGVzbWFuX2lkX2ZrZXkgICB8IHsxfQorKDIgcm93cykKKworLS0g RVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMg Y2hlY2sgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNtYW5faWRfY2hlY2siCitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDAsICcyMDIyLTAzLTExJyk7CitFUlJP UjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBjaGVj ayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc19hbW91bnRfY2hlY2siCitERVRBSUw6 ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMSwgMCwgMDMtMTEtMjAyMikuCistLSBFUlJPUjog IGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzbWFuX2lkX2ZrZXkiCitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKC0xLCAxMCwgJzIwMjItMDMtMTEnKTsK K0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIgdmlv bGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNtYW5faWRf ZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNtYW5faWQpPSgtMSkgaXMgbm90IHByZXNlbnQg aW4gdGFibGUgInNhbGVzbWFucyIuCistLSBvaworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxLCAxMCwgJzIwMjItMDMtMTEnKTsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2Ug Q0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CistLQorLS0gVGVzdDog c3BsaXQgcGFydGl0aW9uIG9uIHBhcnRpdGlvbmVkIHRhYmxlIGluIGNhc2UgZXhpc3RzIEZP UkVJR04gS0VZIHJlZmVyZW5jZSBmcm9tIGFub3RoZXIgdGFibGUKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNtYW5zKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFt ZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc21hbl9pZCk7CitDUkVB VEUgVEFCTEUgc2FsZXMgKHNhbGVzbWFuX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzbWFucyhz YWxlc21hbl9pZCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSk7CitDUkVB VEUgVEFCTEUgc2FsZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfNDAgUEFS VElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDApOworSU5T RVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRP IHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMg VkFMVUVTICgxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAo MjAsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMzAsICdG b3JkJyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEsICAxMDAsICcyMDIyLTAzLTAx Jyk7CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEsICAxMTAsICcyMDIyLTAzLTAyJyk7 CitJTlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEwLCAxNTAsICcyMDIyLTAzLTAxJyk7CitJ TlNFUlQgSU5UTyBzYWxlcyBWQUxVRVMgKDEwLCA5MCwgICcyMDIyLTAzLTAzJyk7CitJTlNF UlQgSU5UTyBzYWxlcyBWQUxVRVMgKDE5LCAyMDAsICcyMDIyLTAzLTA0Jyk7CitJTlNFUlQg SU5UTyBzYWxlcyBWQUxVRVMgKDIwLCA1MCwgICcyMDIyLTAzLTEyJyk7CitJTlNFUlQgSU5U TyBzYWxlcyBWQUxVRVMgKDIwLCAxNzAsICcyMDIyLTAzLTAyJyk7CitJTlNFUlQgSU5UTyBz YWxlcyBWQUxVRVMgKDMwLCAzMCwgICcyMDIyLTAzLTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNh bGVzbWFuczAxXzEwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykK KworU0VMRUNUICogRlJPTSBzYWxlc21hbnMxMF80MDsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDEw IHwgTWF5CisgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAyMCB8IFNtaXJub2Zm CisgICAgICAgICAgMzAgfCBGb3JkCisoNCByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc21h bnMgU1BMSVQgUEFSVElUSU9OIHNhbGVzbWFuczEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc21hbnMxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElU SU9OIHNhbGVzbWFuczIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQ QVJUSVRJT04gc2FsZXNtYW5zMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAxXzEwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNt YW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEg fCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMxMF8yMDsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgMTkgfCBJdmFub3YKKygyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMjBfMzA7Cisgc2FsZXNtYW5faWQgfCBz YWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAyMCB8IFNtaXJub2ZmCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMzBf NDA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAzMCB8IEZvcmQKKygxIHJvdykKKworLS0gRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAic2FsZXNfc2FsZXNtYW5faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNh bGVzIFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsKK0VSUk9SOiAgaW5zZXJ0IG9y IHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInNhbGVzX3NhbGVzbWFuX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKHNhbGVzbWFuX2lk KT0oNDApIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJzYWxlc21hbnMiLgorLS0gb2sKK0lO U0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMzAsIDUwLCAgJzIwMjItMDMtMDQnKTsKK0RST1Ag VEFCTEUgc2FsZXMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7Cist LQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGgg dHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVzbWFuX2lkIElOVCBQ UklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc21hbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMDFfMTAgUEFSVElU SU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUg VEFCTEUgc2FsZXNtYW5zMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVT IEZST00gKDEwKSBUTyAoNDApOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwg ICdQb2lyb3QnKTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGFmdGVyX2luc2VydF9y b3dfdHJpZ2dlcigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMgJEJP RFkkCitCRUdJTgorCVJBSVNFIE5PVElDRSAndHJpZ2dlciglKSBjYWxsZWQ6IGFjdGlvbiA9 ICUsIHdoZW4gPSAlLCBsZXZlbCA9ICUnLCBUR19BUkdWWzBdLCBUR19PUCwgVEdfV0hFTiwg VEdfTEVWRUw7CisgICAgUkVUVVJOIE5VTEw7CitFTkQ7CiskQk9EWSQ7CitDUkVBVEUgVFJJ R0dFUiBzYWxlc21hbnNfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZU RVIgSU5TRVJUCisgICAgT04gc2FsZXNtYW5zCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisg ICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc21h bnMnKTsKK0NSRUFURSBUUklHR0VSIHNhbGVzbWFuc19hZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc21hbnMKKyAgICBGT1IgRUFDSCBS T1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3Nh bGVzbWFucycpOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0 ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMTAsICdNYXknKTsKK05P VElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hl biA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNh bGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gU1RBVEVNRU5U CistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNh bGVzbWFuczEwXzQwIFZBTFVFUyAoMTksICdJdmFub3YnKTsKK05PVElDRTogIHRyaWdnZXIo c2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZl bCA9IFJPVworQUxURVIgVEFCTEUgc2FsZXNtYW5zIFNQTElUIFBBUlRJVElPTiBzYWxlc21h bnMxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNtYW5zMTBfMjAgRk9SIFZBTFVFUyBG Uk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMyMF8zMCBGT1IgVkFM VUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczMwXzQwIEZP UiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmly ZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVF UyAoMjAsICdTbWlybm9mZicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxl ZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6 ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBB RlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJl IChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zMzBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQn KTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VS VCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworU0VMRUNUICogRlJPTSBzYWxlc21hbnMw MV8xMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVD VCAqIEZST00gc2FsZXNtYW5zMTBfMjA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAxMCB8IE1heQor ICAgICAgICAgIDE5IHwgSXZhbm92CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz bWFuczIwXzMwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMjAgfCBTbWlybm9mZgorKDEgcm93KQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczMwXzQwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNt YW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMzAg fCBGb3JkCisoMSByb3cpCisKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CitEUk9Q IEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworLS0KKy0tIFRlc3Q6IHNw bGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBz YWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZB UkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKK0NSRUFURSBU QUJMRSBzYWxlc21hbnMwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0ZSBuZXcgcGFydGl0aW9uIHdpdGggc29tZSBk ZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfNDAoZDEgVkFSQ0hB UigzMCksIHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgZDIgSU5ULCBkMyBEQVRFLCBz YWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzQw IFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicpOwor SU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMicsIDIw LCAxMDEsIG5vdygpLCAnU21pcm5vZmYnKTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczEwXzQw IERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNtYW5zMTBfNDAgRFJPUCBDT0xV TU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMxMF80MCBEUk9QIENPTFVNTiBkMzsKK0FM VEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzbWFuczEwXzQwIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFM VUVTICgxLCAnUG9pcm90Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxMCwg J01heScpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMzAsICdGb3JkJyk7CitB TFRFUiBUQUJMRSBzYWxlc21hbnMgU1BMSVQgUEFSVElUSU9OIHNhbGVzbWFuczEwXzQwIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc21hbnMxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczIwXzMwIEZPUiBWQUxVRVMgRlJPTSAo MjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMzBfNDAgRk9SIFZBTFVFUyBG Uk9NICgzMCkgVE8gKDQwKSk7CitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczAxXzEwOworIHNh bGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworc2VsZWN0ICogZnJvbSBz YWxlc21hbnMxMF8yMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDE5IHwgSXZhbm92CisgICAgICAg ICAgMTAgfCBNYXkKKygyIHJvd3MpCisKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMjBfMzA7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAyMCB8IFNtaXJub2ZmCisoMSByb3cpCisKK3NlbGVjdCAq IGZyb20gc2FsZXNtYW5zMzBfNDA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAzMCB8IEZvcmQKKygx IHJvdykKKworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBz cGxpdCBzdWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxl c21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hcHIyMDIyIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfYWxsIFBBUlRJVElP TiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2Rh dGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIy LTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5v ZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEz Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2 LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAn MjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011 bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0w NC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywg ICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcp OworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEg fCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAg IDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAg ICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAy MgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTEx LTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUgfCAw Mi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1 IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAg IDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwg ICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAg ICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVt cCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgIDE0IHwg U21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21h bl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAg ICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgor ICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIw MjIKKyg0IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2Fwcl9hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMDFf MTAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjJfMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0w MScpKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyAgICAg ICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisg ICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAy MgorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEw LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAw Mi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAgICAgMTg1 IHwgMDItMjMtMjAyMgorICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAg IDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAg ICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgIHwg ICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICA1IHwgRGVldiAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAg ICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAgICAgIDQgfCBJdmFu b3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICAzIHwg Rm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAx NCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93 cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIw MjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0z MC0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMDFfMTA7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAg ICAzODAgfCAwNC0wNi0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fw cjIwMjJfMTBfMjA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8 ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBz YWxlc19hcHIyMDIyXzIwXzMwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoMSByb3cpCisKK0RST1AgVEFC TEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCistLQor LS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0K K0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5faWQgSU5ULAorIHNhbGVzbWFu X25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNf YW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2Fs ZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVz X2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1Vr aHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0 IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5 YW5zaycsICdNYWdhZGFuJywgJ0themFuJywgJ0toYWJhcm92c2snLCAnVm9sZ29ncmFkJywg J1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IERFRkFVTFQ7CistLSBFUlJPUjogIHBhcnRpdGlvbiAic2FsZXNfZWFz dCIgd291bGQgb3ZlcmxhcCBwYXJ0aXRpb24gInNhbGVzX25vcmQiCitBTFRFUiBUQUJMRSBz YWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0Jy eWFuc2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdh ZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snLCAnTXVybWFuc2snKSwKKyAgIFBB UlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4n LCAnVm9sZ29ncmFkJykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc19lYXN0IiB3 b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gInNhbGVz X25vcmQiCitMSU5FIDM6IC4uLkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywg J1ZsYWRpdm9zdG9rJywgJ011cm1hbnNrJy4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3 IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3 IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBG T1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFy b3ZzaycsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9S IFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb3JvbmV6aCcsICdWb2xnb2dyYWQn KSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAg d2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVzX2NlbnRyYWwiCitMSU5FIDI6ICAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9s ZW5zay4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5vdCBoYXZl IE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZQorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9s ZW5zaycsICdCcnlhbnNrJywgTlVMTCksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1Ig VkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisg ICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0th emFuJywgJ1ZvbGdvZ3JhZCcpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2Vz dCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2Vz IG5vdCBoYXZlCitMSU5FIDI6IC4uLmVzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAn U21vbGVuc2snLCAnQnJ5YW5zaycsIE5VTEwpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxF IHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogdHdvIHNwZWNpZmljIGVycm9ycyBmb3IgQlkg TElTVCBwYXJ0aXRpb25pbmc6CistLSAgICogbmV3IHBhcnRpdGlvbnMgbm90IGhhcyBOVUxM IHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0tICAgKiBuZXcgcGFydGl0aW9u cyBub3QgaGFzIGEgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRpb24gaGFzLgorLS0KK0NSRUFU RSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5faWQgSU5ULAorIHNhbGVzbWFuX25hbWUg VkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50 IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qg Rk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdNb3Njb3cnLCAnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycs ICdNYWdhZGFuJywgJ0themFuJywgJ0toYWJhcm92c2snLCAnVm9sZ29ncmFkJywgJ1ZsYWRp dm9zdG9rJywgTlVMTCk7CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIG5vdCBoYXZlIHZh bHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBoYXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf d2VzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycp LAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAn S2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRy YWwgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKSk7CitF UlJPUjogIG5ldyBwYXJ0aXRpb25zIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBh cnRpdGlvbiBoYXMKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUg J1ZvbGdvZ3JhZCcgYnV0IHNwbGl0IHBhcnRpdGlvbiBoYXMKK0FMVEVSIFRBQkxFIHNhbGVz X2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5z aycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4n LCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Nl bnRyYWwgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsIE5VTEwpKTsKK0VSUk9S OiAgbmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUgJ1ZvbGdvZ3JhZCcgYnV0IHNwbGl0 IHBhcnRpdGlvbiBoYXMKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0OiBC WSBMSVNUIHBhcnRpdGlvbmluZywgU1BMSVQgUEFSVElUSU9OIHdpdGggZGF0YQorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5faWQgU0VSSUFMLAorIHNhbGVzbWFu X25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNf YW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2Fs ZXNfc3RhdGUpOworQ1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNtYW5fbmFtZV9pZHgg T04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNtYW5fbmFtZSk7CitDUkVBVEUgSU5E RVggc2FsZXNfbGlzdF9zYWxlc19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJl ZSAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJn JywgJ1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxl c19saXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnVm9yb25lemgnLCAnU21vbGVuc2sn LCAnQnJ5YW5zaycsICdNYWdhZGFuJywgJ0themFuJywgJ0toYWJhcm92c2snLCAnVm9sZ29n cmFkJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChz YWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBW QUxVRVMgKCdUcnVtcCcsICAgICdNYWdhZGFuJywgICAgICAgIDEwMDAsICcyMDIyLTAzLTAx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdTbWlybm9mZicsICdTbW9s ZW5zaycsICAgICAgIDUwMCwgICcyMDIyLTAzLTAzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19s aXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIy LTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxl c19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdJdmFub3YnLCAg ICdNb3Njb3cnLCAgICAgICAgIDc1MCwgICcyMDIyLTAzLTA0Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdEZWV2JywgICAgICdWb3JvbmV6aCcsICAgICAgIDI1MCwg ICcyMDIyLTAzLTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1l LCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdQb2ly b3QnLCAgICdLYXphbicsICAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQg SU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1v dW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNYXknLCAgICAgICdVa2h0YScsICAgICAgICAg IDEyMDAsICcyMDIyLTAzLTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21h bl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMg KCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2Fs ZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNYXknLCAgICAgICdVa2h0YScsICAg ICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChz YWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBW QUxVRVMgKCdIYWxkZXInLCAgICdNdXJtYW5zaycsICAgICAgIDgwMCwgICcyMDIyLTAzLTAy Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNdWxsZXInLCAgICdCcnlh bnNrJywgICAgICAgIDY1MCwgICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19s aXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMgKCdTbWl0aCcsICAgICdWb2xnb2dyYWQnLCAgICAgIDM1MCwgICcyMDIy LTAzLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxl c19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdHYW5kaScsICAg ICdNb3Njb3cnLCAgICAgICAgIDE1MCwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdQbGF0bycsICAgICdWb3JvbmV6aCcsICAgICAgIDk1MCwg ICcyMDIyLTAzLTA1Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElP TiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJ TiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKSwKKyAgIFBBUlRJVElPTiBz YWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxh ZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4g KCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykpOworU0VMRUNUICogRlJPTSBzYWxl c19saXN0OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8ICBzYWxlc19zdGF0ZSAg IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgU21vbGVuc2sgICAgICAgfCAgICAgICAg ICA1MDAgfCAwMy0wMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgVm9y b25lemggICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgICAgICAgICAgMTEg fCBNdWxsZXIgICAgICAgIHwgQnJ5YW5zayAgICAgICAgfCAgICAgICAgICA2NTAgfCAwMy0w NS0yMDIyCisgICAgICAgICAgMTQgfCBQbGF0byAgICAgICAgIHwgVm9yb25lemggICAgICAg fCAgICAgICAgICA5NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgIHwgTW9zY293ICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAg ICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgS2F6YW4gICAgICAgICAgfCAgICAgICAgIDEw MDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgMTIgfCBTbWl0aCAgICAgICAgIHwgVm9sZ29n cmFkICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIyCisgICAgICAgICAgMTMgfCBH YW5kaSAgICAgICAgIHwgTW9zY293ICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0y MDIyCisgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAgIHwgTWFnYWRhbiAgICAgICAgfCAg ICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgIDggfCBMaSAgICAgICAgICAg IHwgVmxhZGl2b3N0b2sgICAgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisgICAgICAg ICAgIDMgfCBGb3JkICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAg fCAwMy0wNS0yMDIyCisgICAgICAgICAgIDcgfCBNYXkgICAgICAgICAgIHwgVWtodGEgICAg ICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0wNi0yMDIyCisgICAgICAgICAgIDkgfCBNYXkg ICAgICAgICAgIHwgVWtodGEgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0yMDIy CisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgTXVybWFuc2sgICAgICAgfCAgICAg ICAgICA4MDAgfCAwMy0wMi0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxl c193ZXN0OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRlIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgIDIgfCBTbWlybm9mZiAgICAgIHwgU21vbGVuc2sgICAgfCAgICAgICAgICA1MDAgfCAw My0wMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgVm9yb25lemggICAg fCAgICAgICAgICAyNTAgfCAwMy0wNy0yMDIyCisgICAgICAgICAgMTEgfCBNdWxsZXIgICAg ICAgIHwgQnJ5YW5zayAgICAgfCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgICAgICAg ICAgMTQgfCBQbGF0byAgICAgICAgIHwgVm9yb25lemggICAgfCAgICAgICAgICA5NTAgfCAw My0wNS0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Vhc3Q7Cisgc2Fs ZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IFRydW1w ICAgICAgICAgfCBNYWdhZGFuICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAg ICAgICAgICAgOCB8IExpICAgICAgICAgICAgfCBWbGFkaXZvc3RvayB8ICAgICAgICAgMTE1 MCB8IDAzLTA5LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbm9yZDsK KyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCAgc2FsZXNfc3RhdGUgICB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwg MDMtMDUtMjAyMgorICAgICAgICAgICA3IHwgTWF5ICAgICAgICAgICB8IFVraHRhICAgICAg ICAgIHwgICAgICAgICAxMjAwIHwgMDMtMDYtMjAyMgorICAgICAgICAgICA5IHwgTWF5ICAg ICAgICAgICB8IFVraHRhICAgICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgor ICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8IE11cm1hbnNrICAgICAgIHwgICAgICAg ICAgODAwIHwgMDMtMDItMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19j ZW50cmFsOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRlIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICA3NTAgfCAw My0wNC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgS2F6YW4gICAgICAg fCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgMTIgfCBTbWl0aCAgICAg ICAgIHwgVm9sZ29ncmFkICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIyCisgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICAxNTAgfCAw My0wOC0yMDIyCisoNCByb3dzKQorCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4 ZXMgYWZ0ZXIgc3BsaXQgcGFydGl0aW9uCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOwor U0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFs IFdIRVJFIHNhbGVzX3N0YXRlID0gJ01vc2Nvdyc7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21h bl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCBNb3Njb3cg ICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRp ICAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygy IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9 ICdNb3Njb3cnOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRl IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICA3NTAg fCAwMy0wNC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgTW9zY293ICAg ICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNtYW5fbmFtZSA9ICdJdmFub3YnOworIHNhbGVz bWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgIHwgTW9zY293ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisoMSBy b3cpCisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4g PSBPTjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAg KiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJl dHdlZW4gYm91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQ TElUIFBBUlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo c2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91 bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0z MCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAg NzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo NSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAg JzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdF cmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjIt MDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcs ICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDkn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUx MCwgICcyMDIyLTA1LTA0Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVG QVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNh bGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8g KCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNC0xMCcpKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAy Ml8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3Vu dCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAg ICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfZmViMjAyMl8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNh bGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2Zm ICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0wOS0yMDIyCisgICAgICAgICAgIDYgfCBQb2ly b3QgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMDctMjAyMgorKDIgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19tYXIyMDIyXzFkZWNhZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKygxIHJv dykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzFkZWNhZGU7Cisgc2FsZXNtYW5f aWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIw MjIKKyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0w Ni0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxl c21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEt MzEtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8 IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3 NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAg ICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAg ICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0byAgICAg ICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgIDE0IHwgU21pdGgg ICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKyg4IHJvd3MpCisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9u LURFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBi b3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFS VElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21h bl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAy Mi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJu b2ZmJywgNTAwLCAgJzIwMjItMDItMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0x MycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAg MjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo NiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAg JzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdN dWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjIt MDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycs ICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQn KTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIy XzFkZWNhZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAg ICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxl c19mZWIyMDIyXzFkZWNhZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYg ICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTA5LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJv dCAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0wNy0yMDIyCisoMiByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX21hcjIwMjJfMWRlY2FkZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVz bWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAg IDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorKDEgcm93 KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMWRlY2FkZTsKKyBzYWxlc21hbl9p ZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg ICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAy MgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2 LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVz bWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0w NC0yMDIyCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwg MDEtMzEtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAw MCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAg ICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAg ICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0byAg ICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorKDggcm93cykKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVGQVVMVCBw YXJ0aXRpb24gdG8gREVGQVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3aXRoIHNw YWNlcyBiZXR3ZWVuIGJvdW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1 MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgz LCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAn MjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1Bv aXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcics ICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUw LCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMs ICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgREVGQVVMVCk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21p dGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5n ZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAx MDAwIHwgMDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAg ICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAg IHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAg ICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNz c29uICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor ICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIw MjIKKyAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0x MS0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDMtMTktMjAyMgorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUx MCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIw MjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAg MTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwg ICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBz YWxlc19mZWIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAg fCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAg ICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nz b24gICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUg fCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAg NSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAg ICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorKDQg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNtYW5faWQgfCBz YWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAg ICAgICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAg ICAgICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIy CisgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTkt MjAyMgorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1 LTA0LTIwMjIKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorRFJP UCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVs X3NjaGVkdWxlCmluZGV4IDZmMDIzNmQyMDcuLjExN2Q3OGNiMWIgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTE5LDcgKzExOSw3IEBAIHRlc3Q6IHBsYW5jYWNo ZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBj b252ZXJzaW9uIHRyCiAjIFRoZSBzdGF0cyB0ZXN0IHJlc2V0cyBzdGF0cywgc28gbm90aGlu ZyBlbHNlIG5lZWRpbmcgc3RhdHMgYWNjZXNzIGNhbiBiZSBpbgogIyB0aGlzIGdyb3VwLgog IyAtLS0tLS0tLS0tCi10ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0aW9uX2pvaW4gcGFy dGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9h Z2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24g bWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUKK3Rlc3Q6IHBhcnRpdGlvbl9tZXJnZSBwYXJ0aXRp b25fc3BsaXQgcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFz aF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVw bGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUKIAog IyBldmVudF90cmlnZ2VyIGRlcGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNv bmN1cnJlbnRseSB3aXRoCiAjIGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLmUzM2U2MTYyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCkBAIC0wLDAgKzEsNzkyIEBACist LQorLS0gUEFSVElUSU9OX1NQTElUCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBT UExJVCBQQVJUSVRJT04gLi4uIiBjb21tYW5kCistLQorCitDUkVBVEUgU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWE7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hLCBwdWJsaWM7CisKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisK Ky0tCistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoc2FsZXNtYW5faWQgaW50LCBzYWxlc21hbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxl c19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w NS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgREVGQVVMVDsKKworLS0gRVJST1I6ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2Vz IG5vdCBleGlzdAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX3h4eCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0 LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIHJlbGF0aW9u ICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJykpOworCistLSBFUlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBm b3IgYSByYW5nZSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2phbjIwMjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyMi0wNi0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0g RVJST1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2Fs ZXNfbWFyMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS1FUlJP UjogIGxpc3Qgb2Ygc3BsaXQgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbnMgYXQgbGVhc3Qg dHdvIGl0ZW1zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMTAtMDEnKSk7CisKKy0t IEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBs ZXNzIHRoYW4gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNfZmViX21hcl9h cHIyMDIyIiBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3JlYXRlIHBhcnRpdGlvbiB3aXRo IHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBidXQgY2FuJ3QgY3JlYXRlIHR3 byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9h cHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgbmFtZSAic2FsZXNf ZmViMjAyMiIgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKKy0tIEVSUk9SOiAgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgbm90IGEgcGFydGl0 aW9uZWQgdGFibGUKK0FMVEVSIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKKy0tIEVSUk9SOiAgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIy IiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIy MDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19t YXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CisKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWxzIHRvIHVwcGVyIGJv dW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworCistLSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywgdGhlbSBz aG91bGQgYmUgZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CisKKy0tIEVS Uk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3Qg ZXF1YWxzIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAyJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJykpOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBU QUJMRSBzYWxlc19vdGhlcnM7CisKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVk IHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1 LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAn TWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIy LTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92 JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTEx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAx NzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4 LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAn MjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1Ry dW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0w MS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywg ICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxl c19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJP TSBzYWxlc19tYXIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNU ICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FE RTsKKworLS0KKy0tIEFkZCBzcGxpdCBwYXJ0aXRpb24gdGhlbiBhZGQgcm93cyBpbnRvIHBh cnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21h bl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIw MjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAs ICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAg J0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAy Mi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJv dCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0y MycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAg MjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAg JzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdH YW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxF Q1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOwor U0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19tYXIy MDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJPTSBzYWxl c19vdGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0t IFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdF TkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2Fs ZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2Fs ZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4 dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNU T1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBk ZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19t b250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIw MjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMs IDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwg TUFYVkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywg MjAyMSwgMTIsIDcpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMics IDIwMjEsIDEyLCA4KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMn LCAyMDIyLCAxLCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEn LCAyMDIyLCAyLCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjIn LCAyMDIyLCAxLCAyKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMn LCAyMDIyLCAyLCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEn LCAyMDIyLCAzLCAzKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjIn LCAyMDIyLCAzLCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwg c2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMn LCAyMDIyLCA1LCAxKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworU0VMRUNUICog RlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsK K1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2phbl9mZWIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIs IDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIy LCAyLCAxKSBUTyAoMjAyMiwgMywgMSkpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNh bGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVF UyAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShz YWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxV RVMgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19k YXRlOworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJPTSBzYWxl c19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJP TSBzYWxlc19vdGhlcjsKKworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmViMjAy MiIgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIwMjI7CisK K0RST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworCistLQorLS0gVGVzdDogc3BsaXQg REVGQVVMVCBwYXJ0aXRpb247IHVzaW5nIGEgaW5kZXggb24gcGFydGl0aW9uIGtleTsgY2hl Y2sgaW5kZXggYWZ0ZXIgc3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFV TFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNf cmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIw MjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3Jk JywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAg IDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwg ICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAn SGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGkn LCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNUICog RlJPTSBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFi bGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3Nw bGl0X3NjaGVtYSc7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX290aGVycyBERUZBVUxUKTsKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdCBpbmRl eGVzCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0g T0ZGOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMiB3aGVyZSBzYWxl c19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyIHdo ZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290 aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworCitTRVQgZW5hYmxlX2lu ZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CisKK1NFTEVDVCAqIEZS T00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViMjAyMicgYW5kIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CitTRUxFQ1QgKiBGUk9NIHBn X2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX21hcjIwMjInIGFuZCBzY2hlbWFu YW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnOworU0VMRUNUICogRlJPTSBwZ19pbmRl eGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9 ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBX SEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hJzsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURF OworCistLQorLS0gVGVzdDogc29tZSBjYXNlcyBmb3Igc3BsaXQgREVGQVVMVCBwYXJ0aXRp b24gKGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIw MjIgKGxvd2VyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBw YXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMy MDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJU SVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIw MjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAy MjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFV TFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZmViMjAyMiAo dXBwZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2Fs ZXNfZmViMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFy dGl0aW9uICJzYWxlc19lcnJvciIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDIp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIw MSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7 CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChpbnNp ZGUgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf ZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlv biAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBz YWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMTEyMjApLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkg VE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CisK Ky0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChleGFjdCB0 aGUgc2FtZSBib3VuZHMpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBh cnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAx MDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIy MDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVM VCk7CisKKy0tIEVSUk9SOiAgYW55IHBhcnRpdGlvbiBpbiB0aGUgbGlzdCBzaG91bGQgYmUg REVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgy MDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00g KDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSk7CisKKy0tIG5vIGVy cm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBiZXR3ZWVuIHNhbGVzX2RlYzIwMjIgYW5k IHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZB TFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMTApIFRPICgyMDIyMDEyMCksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKKworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGVxdWFs cyB0byBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVzX2RlYzIwMjIgYW5kIHNhbGVz X2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vy cm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAy MjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBU QUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRo IENIRUNLIGFuZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJs ZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkg S0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFu cyBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAo CitzYWxlc21hbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5faWQpLAor c2FsZXNfYW1vdW50IElOVCBDSEVDSyAoc2FsZXNfYW1vdW50ID4gMSksCitzYWxlc19kYXRl IERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CisKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitTRUxF Q1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInOjpy ZWdjbGFzczo6b2lkOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0t IFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNfZmViX21h cl9hcHIyMDIyIHBhcnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCks IGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAn c2FsZXNfZmViMjAyMic6OnJlZ2NsYXNzOjpvaWQ7CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFp bnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBj b25yZWxpZCA9ICdzYWxlc19tYXIyMDIyJzo6cmVnY2xhc3M6Om9pZDsKK1NFTEVDVCBwZ19n ZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJh aW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkOwor CistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIyMDIyIiB2aW9s YXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc21hbl9pZF9jaGVjayIK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMCwgJzIwMjItMDMtMTEnKTsK Ky0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFyMjAyMiIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2FsZXNtYW5f aWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoLTEsIDEwLCAnMjAy Mi0wMy0xMScpOworLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwg MTAsICcyMDIyLTAzLTExJyk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsK K0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBw YXJ0aXRpb24gb24gcGFydGl0aW9uZWQgdGFibGUgaW4gY2FzZSBleGlzdHMgRk9SRUlHTiBL RVkgcmVmZXJlbmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxl c21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNI QVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKK0NSRUFURSBUQUJM RSBzYWxlcyAoc2FsZXNtYW5faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNhbGVzbWFu X2lkKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKKworQ1JFQVRFIFRB QkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczEwXzQwIFBBUlRJVElP TiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJU IElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0lOU0VSVCBJTlRPIHNh bGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFM VUVTICgxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMjAs ICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMzAsICdGb3Jk Jyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMSwgIDEwMCwgJzIwMjItMDMtMDEn KTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMSwgIDExMCwgJzIwMjItMDMtMDInKTsK K0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMTAsIDE1MCwgJzIwMjItMDMtMDEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMTAsIDkwLCAgJzIwMjItMDMtMDMnKTsKK0lOU0VS VCBJTlRPIHNhbGVzIFZBTFVFUyAoMTksIDIwMCwgJzIwMjItMDMtMDQnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzIFZBTFVFUyAoMjAsIDUwLCAgJzIwMjItMDMtMTInKTsKK0lOU0VSVCBJTlRP IHNhbGVzIFZBTFVFUyAoMjAsIDE3MCwgJzIwMjItMDMtMDInKTsKK0lOU0VSVCBJTlRPIHNh bGVzIFZBTFVFUyAoMzAsIDMwLCAgJzIwMjItMDMtMDQnKTsKKworU0VMRUNUICogRlJPTSBz YWxlc21hbnMwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMTBfNDA7CisKK0FMVEVS IFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgy MCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkg VE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVTIEZST00g KDMwKSBUTyAoNDApKTsKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMwMV8xMDsKK1NFTEVD VCAqIEZST00gc2FsZXNtYW5zMTBfMjA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczIwXzMw OworU0VMRUNUICogRlJPTSBzYWxlc21hbnMzMF80MDsKKworLS0gRVJST1I6ICBpbnNlcnQg b3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAic2FsZXNfc2FsZXNtYW5faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVF UyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsKKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxlcyBW QUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CisKK0RST1AgVEFCTEUgc2FsZXMgQ0FT Q0FERTsKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBz cGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0K K0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBz YWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFu X2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxl c21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVz bWFuczEwXzQwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxMCkg VE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2lyb3Qn KTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmln Z2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JF R0lOCisJUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hl biA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZF TDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRSSUdHRVIg c2FsZXNtYW5zX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElO U0VSVAorICAgIE9OIHNhbGVzbWFucworICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVY RUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNtYW5zJyk7 CisKK0NSRUFURSBUUklHR0VSIHNhbGVzbWFuc19hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIK KyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc21hbnMKKyAgICBGT1IgRUFDSCBST1cK KyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVz bWFucycpOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRl bWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxMCwgJ01heScpOworLS0g MSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc21h bnMxMF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFu cyBTUExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgSU5UTworICAoUEFSVElUSU9OIHNh bGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJ T04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBB UlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApKTsK KworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1lbnQpOgor SU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworLS0gMSB0 cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMz MF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczAx XzEwOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMxMF8yMDsKK1NFTEVDVCAqIEZST00gc2Fs ZXNtYW5zMjBfMzA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczMwXzQwOworCitEUk9QIFRB QkxFIHNhbGVzbWFucyBDQVNDQURFOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93 X3RyaWdnZXIoKTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0 ZWQgY29sdW1ucworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5U IFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzbWFuX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBB UlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0g Q3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFU RSBUQUJMRSBzYWxlc21hbnMxMF80MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNtYW5faWQgSU5U IFBSSU1BUlkgS0VZLCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigz MCkpOworCitJTlNFUlQgSU5UTyBzYWxlc21hbnMxMF80MCBWQUxVRVMgKCdkdW1teSB2YWx1 ZSAxJywgMTksIDEwMCwgbm93KCksICdJdmFub3YnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFu czEwXzQwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDInLCAyMCwgMTAxLCBub3coKSwgJ1NtaXJu b2ZmJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFuczEwXzQwIERST1AgQ09MVU1OIGQxOwor QUxURVIgVEFCTEUgc2FsZXNtYW5zMTBfNDAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJM RSBzYWxlc21hbnMxMF80MCBEUk9QIENPTFVNTiBkMzsKKworQUxURVIgVEFCTEUgc2FsZXNt YW5zIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgx MCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgJ1BvaXJv dCcpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMTAsICdNYXknKTsKK0lOU0VS VCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitBTFRFUiBUQUJMRSBz YWxlc21hbnMgU1BMSVQgUEFSVElUSU9OIHNhbGVzbWFuczEwXzQwIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc21hbnMxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAg UEFSVElUSU9OIHNhbGVzbWFuczIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCks CisgICBQQVJUSVRJT04gc2FsZXNtYW5zMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8g KDQwKSk7CisKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMDFfMTA7CitzZWxlY3QgKiBmcm9t IHNhbGVzbWFuczEwXzIwOworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMyMF8zMDsKK3NlbGVj dCAqIGZyb20gc2FsZXNtYW5zMzBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NB REU7CisKKy0tCistLSBUZXN0OiBzcGxpdCBzdWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8g KCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzbWFuX2lkIElOVCwg c2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0 ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2Fwcl9hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRF IElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5H IGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAw LCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAg J0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAy Mi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywg ICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0x MScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAg MzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAg JzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdT bWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNf cmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CisKK0FMVEVSIFRBQkxFIHNh bGVzX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fwcl9hbGwgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2FwcjIwMjJfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNC0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMTBf MjAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19y YW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfYXByMjAyMl8wMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8xMF8yMDsK K1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8yMF8zMDsKKworRFJPUCBUQUJMRSBzYWxl c19yYW5nZTsKKworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorCistLQorLS0g VGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NS RUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5faWQgSU5ULAorIHNhbGVzbWFuX25h bWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1v dW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNf c3RhdGUpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWto dGEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qg Rk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlh bnNrJywgJ01hZ2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xnb2dyYWQnLCAn VmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgREVGQVVMVDsKKworLS0gRVJST1I6ICBwYXJ0aXRpb24gInNhbGVzX2Vh c3QiIHdvdWxkIG92ZXJsYXAgcGFydGl0aW9uICJzYWxlc19ub3JkIgorQUxURVIgVEFCTEUg c2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdC cnlhbnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFn YWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJywgJ011cm1hbnNrJyksCisgICBQ QVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFu JywgJ1ZvbGdvZ3JhZCcpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193 ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19j ZW50cmFsIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNf YWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3Jv bmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFz dCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9r JyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293 JywgJ0themFuJywgJ1Zvcm9uZXpoJywgJ1ZvbGdvZ3JhZCcpKTsKKworLS0gRVJST1I6ICBu ZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1 c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xp c3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf d2VzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycs IE5VTEwpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2Fk YW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVz X2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQn KSk7CisKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6IHR3byBzcGVj aWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nOgorLS0gICAqIG5ldyBwYXJ0 aXRpb25zIG5vdCBoYXMgTlVMTCB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBoYXMuCist LSAgICogbmV3IHBhcnRpdGlvbnMgbm90IGhhcyBhIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0 aW9uIGhhcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzbWFuX2lkIElO VCwKKyBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIo MjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9O IEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQ ZXRlcnNidXJnJywgJ1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnVm9yb25lemgnLCAn U21vbGVuc2snLCAnQnJ5YW5zaycsICdNYWdhZGFuJywgJ0themFuJywgJ0toYWJhcm92c2sn LCAnVm9sZ29ncmFkJywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CisKKy0tIEVSUk9SOiAgbmV3 IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0aW9uIGhh cworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcs ICdTbW9sZW5zaycsICdCcnlhbnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1Ig VkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisg ICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0th emFuJywgJ1ZvbGdvZ3JhZCcpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBub3Qg aGF2ZSB2YWx1ZSAnVm9sZ29ncmFkJyBidXQgc3BsaXQgcGFydGl0aW9uIGhhcworQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5z aycsICdCcnlhbnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElO ICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJ T04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgTlVM TCkpOworCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBCWSBMSVNU IHBhcnRpdGlvbmluZywgU1BMSVQgUEFSVElUSU9OIHdpdGggZGF0YQorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5faWQgU0VSSUFMLAorIHNhbGVzbWFuX25hbWUg VkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50 IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3Rh dGUpOworCitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc21hbl9uYW1lX2lkeCBPTiBz YWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc21hbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBz YWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChz YWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNdXJtYW5zaycsICdTdC4gUGV0ZXJzYnVyZycs ICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywg J0JyeWFuc2snLCAnTWFnYWRhbicsICdLYXphbicsICdLaGFiYXJvdnNrJywgJ1ZvbGdvZ3Jh ZCcsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChz YWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBW QUxVRVMgKCdUcnVtcCcsICAgICdNYWdhZGFuJywgICAgICAgIDEwMDAsICcyMDIyLTAzLTAx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdTbWlybm9mZicsICdTbW9s ZW5zaycsICAgICAgIDUwMCwgICcyMDIyLTAzLTAzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19s aXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMgKCdGb3JkJywgICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIy LTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxl c19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdJdmFub3YnLCAg ICdNb3Njb3cnLCAgICAgICAgIDc1MCwgICcyMDIyLTAzLTA0Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdEZWV2JywgICAgICdWb3JvbmV6aCcsICAgICAgIDI1MCwg ICcyMDIyLTAzLTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1l LCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdQb2ly b3QnLCAgICdLYXphbicsICAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyk7CitJTlNFUlQg SU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1v dW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNYXknLCAgICAgICdVa2h0YScsICAgICAgICAg IDEyMDAsICcyMDIyLTAzLTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21h bl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMg KCdMaScsICAgICAgICdWbGFkaXZvc3RvaycsICAgIDExNTAsICcyMDIyLTAzLTA5Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2Fs ZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNYXknLCAgICAgICdVa2h0YScsICAg ICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChz YWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBW QUxVRVMgKCdIYWxkZXInLCAgICdNdXJtYW5zaycsICAgICAgIDgwMCwgICcyMDIyLTAzLTAy Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0 ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdNdWxsZXInLCAgICdCcnlh bnNrJywgICAgICAgIDY1MCwgICcyMDIyLTAzLTA1Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19s aXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19k YXRlKSBWQUxVRVMgKCdTbWl0aCcsICAgICdWb2xnb2dyYWQnLCAgICAgIDM1MCwgICcyMDIy LTAzLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxl c19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMgKCdHYW5kaScsICAg ICdNb3Njb3cnLCAgICAgICAgIDE1MCwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19saXN0IChzYWxlc21hbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBz YWxlc19kYXRlKSBWQUxVRVMgKCdQbGF0bycsICAgICdWb3JvbmV6aCcsICAgICAgIDk1MCwg ICcyMDIyLTAzLTA1Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVT IElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpLAorICAgUEFSVElUSU9O IHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdW bGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJ TiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKSk7CisKK1NFTEVDVCAqIEZST00g c2FsZXNfbGlzdDsKK1NFTEVDVCAqIEZST00gc2FsZXNfd2VzdDsKK1NFTEVDVCAqIEZST00g c2FsZXNfZWFzdDsKK1NFTEVDVCAqIEZST00gc2FsZXNfbm9yZDsKK1NFTEVDVCAqIEZST00g c2FsZXNfY2VudHJhbDsKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdCBpbmRleGVzIGFm dGVyIHNwbGl0IHBhcnRpdGlvbgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IE9GRjsKKworU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsIFdI RVJFIHNhbGVzX3N0YXRlID0gJ01vc2Nvdyc7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Qg V0hFUkUgc2FsZXNfc3RhdGUgPSAnTW9zY293JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlz dCBXSEVSRSBzYWxlc21hbl9uYW1lID0gJ0l2YW5vdic7CisKK1NFVCBlbmFibGVfaW5kZXhz Y2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPTjsKKworRFJPUCBUQUJMRSBzYWxl c19saXN0OworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVMVCBwYXJ0 aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0tICAg KiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29tbWFu ZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2Fs ZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBE QVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjIt MDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9m ZicsIDUwMCwgICcyMDIyLTAyLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1 MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYs ICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcy MDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVs bGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0 LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAg ICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7 CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxULAorICAgUEFSVElU SU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMl8xZGVj YWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDEtMTAnKSwK KyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA0LTEwJykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjJfMWRlY2FkZTsKK1NF TEVDVCAqIEZST00gc2FsZXNfZmViMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxl c19tYXIyMDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMWRlY2Fk ZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworCitEUk9QIFRBQkxFIHNhbGVzX3Jh bmdlOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgbm9uLURFRkFVTFQgcGFy dGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHM7CistLSAg ICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFSVElUSU9OIGNvbW1h bmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNh bGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAs ICAnMjAyMi0wMi0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAg J0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAy Mi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJv dCcsICAgMTUwLCAgJzIwMjItMDItMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0y MycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAg MjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAg JzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdH YW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIw MjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAx LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNC0xMCcpKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyXzFkZWNh ZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZS T00gc2FsZXNfbWFyMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIy XzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3QgZm9yIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRp dGlvbiB0byBERUZBVUxUIHBhcnRpdGlvbiArIHBhcnRpdGlvbnMKKy0tIHdpdGggc3BhY2Vz IGJldHdlZW4gYm91bmRzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNt YW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworCitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAn R2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgREVGQVVMVCk7CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdT bWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNf cmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX2ZlYjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBG Uk9NIHNhbGVzX290aGVyczsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KK0RS T1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7Ci0tIAoyLjQwLjEud2luZG93cy4x Cgo= --------------qPCFY1O0qWf5I3CUtLJ0EaAv Content-Type: text/plain; charset=UTF-8; name="v23-0003-Documentation-for-ALTER-TABLE-SPLIT-PARTITION-ME.patch" Content-Disposition: attachment; filename*0="v23-0003-Documentation-for-ALTER-TABLE-SPLIT-PARTITION-ME.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzODNmZGY4ODU3YTlkMzZiZDUzNTBjMDZkMGRmYmJlMDI0OTk1MDRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb3ZhbCBEbWl0cnkgPGQua292YWxAcG9zdGdyZXNw cm8ucnU+CkRhdGU6IFR1ZSwgMjggTWFyIDIwMjMgMTA6NTA6MTkgKzAzMDAKU3ViamVjdDog W1BBVENIIHYyMyAzLzRdIERvY3VtZW50YXRpb24gZm9yIEFMVEVSIFRBQkxFIFNQTElUIFBB UlRJVElPTi9NRVJHRQogUEFSVElUSU9OUyBjb21tYW5kcwoKLS0tCiBkb2Mvc3JjL3NnbWwv cmVmL2FsdGVyX3RhYmxlLnNnbWwgfCAxMjQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCiAxIGZpbGUgY2hhbmdlZCwgMTIxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IDk2NzA2NzExMDcuLjlmYjMx ZGYyNTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAgLTM3LDYgKzM3LDEz IEBAIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIEFUVEFDSCBQQVJUSVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4g eyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f Ym91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9CiBBTFRFUiBUQUJMRSBbIElG IEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4KICAgICBERVRBQ0ggUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IFsgQ09OQ1VSUkVOVExZIHwgRklO QUxJWkUgXQorQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CisgICAgU1BMSVQgUEFSVElUSU9OIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+IElOVE8KKyAgICAgICAgKFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFj ZWFibGU+IHwgREVGQVVMVCB9LAorICAgICAgICAgUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiB7IEZPUiBW QUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9z cGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSkKK0FMVEVSIFRBQkxFIFsg SUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPgorICAgIE1FUkdFIFBBUlRJVElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0p CisgICAgICAgIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9uYW1lPC9yZXBsYWNlYWJsZT4KIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+YWN0aW9uPC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNl PgogCkBAIC0xMTA2LDE0ICsxMTEzLDk5IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVN CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVu dHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1zcGxpdC1wYXJ0aXRpb24iPgorICAgIDx0ZXJtPjxs aXRlcmFsPlNQTElUIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBJTlRPIChQQVJUSVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+IHsg Rk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2Jv dW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSwgUEFSVElUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiB7 IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9i b3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSk8L2xpdGVyYWw+ PC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9y bSBzcGxpdCBhIHNpbmdsZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZS4gSGFzaC1w YXJ0aXRpb25pbmcKKyAgICAgIGlzIG5vdCBzdXBwb3J0ZWQuIEJvdW5kcyBvZiBuZXcgcGFy dGl0aW9ucyBzaG91bGQgbm90IG92ZXJsYXAgd2l0aCBuZXcgYW5kCisgICAgICBleGlzdGlu ZyBwYXJ0aXRpb25zIChleGNlcHQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4pLgorICAgICAgSWYgdGhlIHNwbGl0IHBhcnRp dGlvbiBpcyBERUZBVUxUIHBhcnRpdGlvbiwgb25lIG9mIG5ldyBwYXJ0aXRpb25zIG11c3Qg YmUgREVGQVVMVC4KKyAgICAgIEluIGNhc2Ugb25lIG9mIG5ldyBwYXJ0aXRpb25zIG9yIG9u ZSBvZiBleGlzdGluZyBwYXJ0aXRpb25zIGlzIERFRkFVTFQsCisgICAgICBuZXcgcGFydGl0 aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9y ZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBjYW4gaGF2ZSBzcGFjZXMKKyAgICAg IGJldHdlZW4gcGFydGl0aW9ucyBib3VuZHMuICBJZiB0aGUgcGFydGl0aW9uZWQgdGFibGUg ZG9lcyBub3QgaGF2ZSBhIERFRkFVTFQKKyAgICAgIHBhcnRpdGlvbiwgdGhlIERFRkFVTFQg cGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIGFzIG9uZSBvZiB0aGUgbmV3IHBhcnRpdGlvbnMu CisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBJbiBjYXNlIG5ldyBwYXJ0aXRp b25zIGRvIG5vdCBjb250YWlucyBERUZBVUxUIHBhcnRpdGlvbiBhbmQgdGhlIHBhcnRpdGlv bmVkIHRhYmxlCisgICAgICBkb2VzIG5vdCBoYXZlIGEgREVGQVVMVCBwYXJ0aXRpb24sIHRo ZSBmb2xsb3dpbmcgbXVzdCBiZSB0cnVlOiBzdW0gYm91bmRzIG9mCisgICAgICBuZXcgcGFy dGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUx PC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBzaG91bGQgYmUKKyAgICAgIGVx dWFsIHRvIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgIE9uZSBvZiB0 aGUgbmV3IHBhcnRpdGlvbnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gY2FuIGhhdmUK KyAgICAgIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAo dGhpcyBpcyBzdWl0YWJsZSBpbiBjYXNlIG9mIHNwbGl0dGluZyBhIERFRkFVTFQgcGFydGl0 aW9uOiB3ZSBzcGxpdCBpdCwgYnV0IGFmdGVyCisgICAgICBzcGxpdHRpbmcgd2UgaGF2ZSBh IHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUpLgorICAgICAgT25seSBzaW1wbGUsIG5v bi1wYXJ0aXRpb25lZCBwYXJ0aXRpb24gY2FuIGJlIHNwbGl0LgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5 IGlkPSJzcWwtYWx0ZXJ0YWJsZS1tZXJnZS1wYXJ0aXRpb25zIj4KKyAgICA8dGVybT48bGl0 ZXJhbD5NRVJHRSBQQVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJTlRPIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+PC9saXRlcmFsPjwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+Cisg ICAgICBUaGlzIGZvcm0gbWVyZ2Ugc2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gb25lIHBhcnRp dGlvbiBvZiB0aGUgdGFyZ2V0IHRhYmxlLgorICAgICAgSGFzaC1wYXJ0aXRpb25pbmcgaXMg bm90IHN1cHBvcnRlZC4gIElmIERFRkFVTFQgcGFydGl0aW9uIGlzIG5vdCBpbiB0aGUKKyAg ICAgIGxpc3Qgb2YgcGFydGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXToK KyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFy YT4KKyAgICAgICAgIEZvciByYW5nZS1wYXJ0aXRpb25lZCB0YWJsZXMgaXMgbmVjZXNzYXJ5 IHRoYXQgdGhlIHJhbmdlcworICAgICAgICAgb2YgdGhlIHBhcnRpdGlvbnMgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAor ICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l MjwvcmVwbGFjZWFibGU+IFssIC4uLl0gY2FuCisgICAgICAgICBiZSBtZXJnZWQgaW50byBv bmUgcmFuZ2Ugd2l0aG91dCBzcGFjZXMgYW5kIG92ZXJsYXBzIChvdGhlcndpc2UgYW4gZXJy b3IKKyAgICAgICAgIHdpbGwgYmUgZ2VuZXJhdGVkKS4gIFRoZSBjb21iaW5lZCByYW5nZSB3 aWxsIGJlIHRoZSByYW5nZSBmb3IgdGhlIHBhcnRpdGlvbgorICAgICAgICAgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisg ICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgbGlzdC1wYXJ0aXRpb25lZCB0YWJsZXMg dGhlIHZhbHVlcyBsaXN0cyBvZiBhbGwgcGFydGl0aW9ucworICAgICAgICAgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFibGU+LAor ICAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l MjwvcmVwbGFjZWFibGU+IFssIC4uLl0gYXJlCisgICAgICAgICBjb21iaW5lZCBhbmQgZm9y bSBhIGxpc3Qgb2YgdmFsdWVzIG9mIHBhcnRpdGlvbgorICAgICAgICAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAg ICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+ CisgICAgICBJZiBERUZBVUxUIHBhcnRpdGlvbiBpcyBpbiB0aGUgbGlzdCBvZiBwYXJ0aXRp b25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3Jl cGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0 aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dOgorICAgICAgPGl0ZW1pemVkbGlz dD4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHBh cnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPgorICAgICAgICAgd2lsbCBiZSB0aGUgREVGQVVMVCBwYXJ0aXRpb24u CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgcmFuZ2UtIGFuZCBsaXN0LXBhcnRp dGlvbmVkIHRhYmxlcyB0aGUgcmFuZ2VzIGFuZCBsaXN0cyBvZiB2YWx1ZXMKKyAgICAgICAg IG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucyBjYW4gYmUgYW55LgorICAgICAgICA8L3BhcmE+ CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgVGhl IG5ldyBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgIGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMg b25lIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4gIE9ubHkgc2ltcGxlLAorICAgICAgbm9u LXBhcnRpdGlvbmVkIHBhcnRpdGlvbnMgY2FuIGJlIG1lcmdlZC4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICA8L3ZhcmlhYmxlbGlz dD4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgogICAgQWxsIHRoZSBmb3JtcyBvZiBBTFRFUiBU QUJMRSB0aGF0IGFjdCBvbiBhIHNpbmdsZSB0YWJsZSwgZXhjZXB0CiAgICA8bGl0ZXJhbD5S RU5BTUU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5TRVQgU0NIRU1BPC9saXRlcmFsPiwKLSAgIDxs aXRlcmFsPkFUVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+LCBhbmQKLSAgIDxsaXRlcmFsPkRF VEFDSCBQQVJUSVRJT048L2xpdGVyYWw+IGNhbiBiZSBjb21iaW5lZCBpbnRvCisgICA8bGl0 ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwgPGxpdGVyYWw+REVUQUNIIFBBUlRJ VElPTjwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5TUExJVCBQQVJUSVRJT048L2xpdGVyYWw+ LCBhbmQgPGxpdGVyYWw+TUVSR0UgUEFSVElUSU9OUzwvbGl0ZXJhbD4KKyAgIGNhbiBiZSBj b21iaW5lZCBpbnRvCiAgICBhIGxpc3Qgb2YgbXVsdGlwbGUgYWx0ZXJhdGlvbnMgdG8gYmUg YXBwbGllZCB0b2dldGhlci4gIEZvciBleGFtcGxlLCBpdAogICAgaXMgcG9zc2libGUgdG8g YWRkIHNldmVyYWwgY29sdW1ucyBhbmQvb3IgYWx0ZXIgdGhlIHR5cGUgb2Ygc2V2ZXJhbAog ICAgY29sdW1ucyBpbiBhIHNpbmdsZSBjb21tYW5kLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkg dXNlZnVsIHdpdGggbGFyZ2UKQEAgLTEzNTYsNyArMTQ0OCw4IEBAIFdJVEggKCBNT0RVTFVT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxh Y2VhYmxlPiwgUkVNCiAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0aXRl bT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0 dGFjaCBhcyBhIG5ldyBwYXJ0aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZS4K KyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5ldyBwYXJ0 aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZSwKKyAgICAgICAgb3IgdGhlIG5h bWUgb2Ygc3BsaXQgcGFydGl0aW9uLCBvciB0aGUgbmFtZSBvZiB0aGUgbmV3IG1lcmdlZCBw YXJ0aXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92 YXJsaXN0ZW50cnk+CkBAIC0xNzcyLDYgKzE4NjUsMzEgQEAgQUxURVIgVEFCTEUgbWVhc3Vy ZW1lbnQKICAgICBERVRBQ0ggUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDE1bTEyOwogPC9w cm9ncmFtbGlzdGluZz48L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmds ZSBwYXJ0aXRpb24gb2YgdGhlIHJhbmdlLXBhcnRpdGlvbmVkIHRhYmxlOgorPHByb2dyYW1s aXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMyBJTlRPCisgICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjMgRk9S IFZBTFVFUyBGUk9NICgnMjAyMy0wMi0wMScpIFRPICgnMjAyMy0wMy0wMScpLAorICAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDMtMDEnKSBU TyAoJzIwMjMtMDQtMDEnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMyBGT1IgVkFM VUVTIEZST00gKCcyMDIzLTA0LTAxJykgVE8gKCcyMDIzLTA1LTAxJykpOworPC9wcm9ncmFt bGlzdGluZz48L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBzcGxpdCBhIHNpbmdsZSBwYXJ0 aXRpb24gb2YgdGhlIGxpc3QtcGFydGl0aW9uZWQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+ CitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5U TworICAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcs ICdTbW9sZW5zaycsICdCcnlhbnNrJyksCisgICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9S IFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpLAor ICAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAn S2F6YW4nLCAnVm9sZ29ncmFkJykpOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAg PHBhcmE+CisgICBUbyBtZXJnZSBzZXZlcmFsIHBhcnRpdGlvbnMgaW50byBvbmUgcGFydGl0 aW9uIG9mIHRoZSB0YXJnZXQgdGFibGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJM RSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3Qs IHNhbGVzX2NlbnRyYWwpCisgICAgSU5UTyBzYWxlc19hbGw7Cis8L3Byb2dyYW1saXN0aW5n PjwvcGFyYT4KKwogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+Ci0tIAoyLjQwLjEud2lu ZG93cy4xCgo= --------------qPCFY1O0qWf5I3CUtLJ0EaAv Content-Type: text/plain; charset=UTF-8; name="v23-0004-SPLIT-PARTITION-optimization.patch" Content-Disposition: attachment; filename="v23-0004-SPLIT-PARTITION-optimization.patch" Content-Transfer-Encoding: base64 RnJvbSBkMWRkMzYyOWUyODE3ZWU0ZDYwY2UxMmEwZmRlNWVhOWJkYWVjZWUwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb3ZhbCBEbWl0cnkgPGQua292YWxAcG9zdGdyZXNw cm8ucnU+CkRhdGU6IFRodSwgMjYgT2N0IDIwMjMgMDM6MzU6MjQgKzAzMDAKU3ViamVjdDog W1BBVENIIHYyMyA0LzRdIFNQTElUIFBBUlRJVElPTiBvcHRpbWl6YXRpb24KCi0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgNjg2ICsrKysr KysrKysrKystLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3Bs aXQub3V0IHwgMzA3ICsrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f c3BsaXQuc3FsICAgICAgfCAxNTIgKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA5NzggaW5zZXJ0 aW9ucygrKSwgMTY3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK aW5kZXggYjBkMmU0YWY5MS4uNTJlOGFkMmIzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKQEAgLTIwNjU0LDIwICsyMDY1NCw0NyBAQCB0eXBlZGVmIHN0cnVjdCBTcGxpdFBh cnRpdGlvbkNvbnRleHQKIAlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogc3RhdGUgb2Yg YnVsayBpbnNlcnRzIGZvciBwYXJ0aXRpb24gKi8KIAlUdXBsZVRhYmxlU2xvdCAqZHN0c2xv dDsJLyogc2xvdCBmb3IgaW5zZXJ0IHJvdyBpbnRvIHBhcnRpdGlvbiAqLwogCVJlbGF0aW9u CXBhcnRSZWw7CQkvKiByZWxhdGlvbiBmb3IgcGFydGl0aW9uICovCisJU2luZ2xlUGFydGl0 aW9uU3BlYyAqc3BzOwkvKiBpbmZvIGFib3V0IHNpbmdsZSBwYXJ0aXRpb24gKGZyb20gU1FM CisJCQkJCQkJCSAqIGNvbW1hbmQpICovCiB9CQkJU3BsaXRQYXJ0aXRpb25Db250ZXh0Owog CisvKgorICogU3RydWN0IHdpdGggY29udGV4dCBvZiBTUExJVCBQQVJUSVRJT04gb3BlcmF0 aW9uCisgKi8KK3R5cGVkZWYgc3RydWN0IFNwbGl0SW5mbworeworCVBhcnRpdGlvbkNtZCAq Y21kOwkJCS8qIFNQTElUIFBBUlRJVElPTiBjb21tYW5kIGluZm8gKi8KKworCVJlbGF0aW9u CXJlbDsJCQkvKiBwYXJ0aXRpb25lZCB0YWJsZSAqLworCVJlbGF0aW9uCXNwbGl0UmVsOwkJ Lyogc3BsaXQgcGFydGl0aW9uICovCisKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsgLyogaWRl bnRpZmllciBvZiBERUZBVUxULXBhcnRpdGlvbiBpbiByZWwgKGlmCisJCQkJCQkJCSAqIGV4 aXN0cykgKi8KKwlMaXN0CSAgICpwYXJ0Q29udGV4dHM7CS8qIGxpc3Qgb2Ygc3RydWN0cyBT cGxpdFBhcnRpdGlvbkNvbnRleHQgKGVhY2gKKwkJCQkJCQkJICogc3RydWN0IGZvciBlYWNo IG5ldyBwYXJ0aXRpb24pICovCisJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpkZWZhdWx0UGFy dEN0eDsJLyogcG9pbnRlciB0byBERUZBVUxULXBhcnRpdGlvbiBpbgorCQkJCQkJCQkJCQkg KiBwYXJ0Q29udGV4dHMgbGlzdCAoaWYgZXhpc3RzKSAqLworCUVTdGF0ZQkgICAqZXN0YXRl OwkJCS8qIHdvcmtpbmcgc3RhdGUgKi8KK30JCQlTcGxpdEluZm87CiAKIC8qCi0gKiBjcmVh dGVTcGxpdFBhcnRpdGlvbkNvbnRleHQ6IGNyZWF0ZSBjb250ZXh0IGZvciBwYXJ0aXRpb24g YW5kIGZpbGwgaXQKKyAqIGNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dDogY3JlYXRlIGNv bnRleHQgZm9yIHBhcnRpdGlvbgogICovCiBzdGF0aWMgU3BsaXRQYXJ0aXRpb25Db250ZXh0 ICoKLWNyZWF0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChSZWxhdGlvbiBwYXJ0UmVsKQorY3Jl YXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KFNpbmdsZVBhcnRpdGlvblNwZWMgKiBzcHMpCiB7 Ci0JU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYzsKKwlTcGxpdFBhcnRpdGlvbkNvbnRleHQg KnBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBwYWxsb2MwKHNpemVvZihTcGxpdFBh cnRpdGlvbkNvbnRleHQpKTsKIAotCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBw YWxsb2MwKHNpemVvZihTcGxpdFBhcnRpdGlvbkNvbnRleHQpKTsKLQlwYy0+cGFydFJlbCA9 IHBhcnRSZWw7CisJcGMtPnNwcyA9IHNwczsKKwlyZXR1cm4gcGM7Cit9CiAKKy8qCisgKiBm aWxsU3BsaXRQYXJ0aXRpb25Db250ZXh0OiBmaWxsIHBhcnRpdGlvbiBjb250ZXh0CisgKi8K K3N0YXRpYyB2b2lkCitmaWxsU3BsaXRQYXJ0aXRpb25Db250ZXh0KFNwbGl0UGFydGl0aW9u Q29udGV4dCAqIHBjKQorewogCS8qCiAJICogUHJlcGFyZSBhIEJ1bGtJbnNlcnRTdGF0ZSBm b3IgdGFibGVfdHVwbGVfaW5zZXJ0LiBUaGUgRlNNIGlzIGVtcHR5LCBzbwogCSAqIGRvbid0 IGJvdGhlciB1c2luZyBpdC4KQEAgLTIwNjc4LDY3ICsyMDcwNSw2NiBAQCBjcmVhdGVTcGxp dFBhcnRpdGlvbkNvbnRleHQoUmVsYXRpb24gcGFydFJlbCkKIAlwYy0+ZHN0c2xvdCA9IE1h a2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKHBjLT5wYXJ0UmVsKSwK IAkJCQkJCQkJCQkgICB0YWJsZV9zbG90X2NhbGxiYWNrcyhwYy0+cGFydFJlbCkpOwogCUV4 ZWNTdG9yZUFsbE51bGxUdXBsZShwYy0+ZHN0c2xvdCk7Ci0KLQlyZXR1cm4gcGM7CiB9CiAK IC8qCiAgKiBkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQ6IGRlbGV0ZSBjb250ZXh0IGZv ciBwYXJ0aXRpb24KICAqLwogc3RhdGljIHZvaWQKLWRlbGV0ZVNwbGl0UGFydGl0aW9uQ29u dGV4dChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKiBwYywgaW50IHRpX29wdGlvbnMpCitkZWxl dGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICogcGMpCiB7 Ci0JRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChwYy0+ZHN0c2xvdCk7Ci0JRnJlZUJ1 bGtJbnNlcnRTdGF0ZShwYy0+YmlzdGF0ZSk7CisJaWYgKHBjLT5kc3RzbG90KQorCQlFeGVj RHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHBjLT5kc3RzbG90KTsKKworCWlmIChwYy0+Ymlz dGF0ZSkKKwl7CisJCS8qIFRoZSBGU00gaXMgZW1wdHksIHNvIGRvbid0IGJvdGhlciB1c2lu ZyBpdC4gKi8KKwkJaW50CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsK IAotCXRhYmxlX2ZpbmlzaF9idWxrX2luc2VydChwYy0+cGFydFJlbCwgdGlfb3B0aW9ucyk7 CisJCUZyZWVCdWxrSW5zZXJ0U3RhdGUocGMtPmJpc3RhdGUpOworCQl0YWJsZV9maW5pc2hf YnVsa19pbnNlcnQocGMtPnBhcnRSZWwsIHRpX29wdGlvbnMpOworCX0KIAogCXBmcmVlKHBj KTsKIH0KIAogLyoKLSAqIG1vdmVTcGxpdFRhYmxlUm93czogc2NhbiBzcGxpdCBwYXJ0aXRp b24gKHNwbGl0UmVsKSBvZiBwYXJ0aXRpb25lZCB0YWJsZQotICogKHJlbCkgYW5kIG1vdmUg cm93cyBpbnRvIG5ldyBwYXJ0aXRpb25zLgorICogY3JlYXRlU3BsaXRJbmZvOiBjcmVhdGUg U1BMSVQgUEFSVElUSU9OIGNvbW1hbmQgY29udGV4dCwgY29udGV4dHMgZm9yIG5ldworICoJ CQkJCXBhcnRpdGlvbnMgYW5kIGdlbmVyYXRlIGNvbnN0cmFpbnRzIGZvciB0aGVtLgorICoJ CQkJCVdlIG5lZWQgdG8gdXNlIGNvbnN0cmFpbnRzIGZvciBvcHRpbWl6YXRpb24uCiAgKgot ICogTmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb246Ci0gKiBwYXJ0bGlzdDogbGlzdCBvZiBw b2ludGVycyB0byBTaW5nbGVQYXJ0aXRpb25TcGVjIHN0cnVjdHVyZXMuCi0gKiBuZXdQYXJ0 UmVsczogbGlzdCBvZiBSZWxhdGlvbidzLgorICogY21kOiBTUExJVCBQQVJUSVRJT04gY29t bWFuZCBpbmZvLgorICogcmVsOiBwYXJ0aXRpb25lZCB0YWJsZS4KKyAqIHNwbGl0UmVsOiBz cGxpdCBwYXJ0aXRpb24uCiAgKiBkZWZhdWx0UGFydE9pZDogb2lkIG9mIERFRkFVTFQgcGFy dGl0aW9uLCBmb3IgdGFibGUgcmVsLgogICovCi1zdGF0aWMgdm9pZAotbW92ZVNwbGl0VGFi bGVSb3dzKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsIExpc3QgKnBhcnRsaXN0 LCBMaXN0ICpuZXdQYXJ0UmVscywgT2lkIGRlZmF1bHRQYXJ0T2lkKQorc3RhdGljIFNwbGl0 SW5mbyAqCitjcmVhdGVTcGxpdEluZm8oUGFydGl0aW9uQ21kICpjbWQsIFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gc3BsaXRSZWwsCisJCQkJT2lkIGRlZmF1bHRQYXJ0T2lkKQogewotCS8q IFRoZSBGU00gaXMgZW1wdHksIHNvIGRvbid0IGJvdGhlciB1c2luZyBpdC4gKi8KLQlpbnQJ CQl0aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NLSVBfRlNNOwotCUNvbW1hbmRJZAlteWNp ZDsKLQlFU3RhdGUJICAgKmVzdGF0ZTsKLQlMaXN0Q2VsbCAgICpsaXN0cHRyLAotCQkJICAg Kmxpc3RwdHIyOwotCVR1cGxlVGFibGVTbG90ICpzcmNzbG90OwotCUV4cHJDb250ZXh0ICpl Y29udGV4dDsKLQlUYWJsZVNjYW5EZXNjIHNjYW47Ci0JU25hcHNob3QJc25hcHNob3Q7Ci0J TWVtb3J5Q29udGV4dCBvbGRDeHQ7CiAJTGlzdAkgICAqcGFydENvbnRleHRzID0gTklMOwot CVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOwotCVNwbGl0UGFydGl0aW9uQ29udGV4 dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxMLAotCQkJICAgKnBjOwotCWJvb2wJCWlzT2xkRGVm YXVsdFBhcnQgPSBmYWxzZTsKKwlTcGxpdEluZm8gICpzaTsKKwlMaXN0Q2VsbCAgICpsaXN0 cHRyOwogCi0JbXljaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOworCXNpID0gKFNw bGl0SW5mbyAqKSBwYWxsb2MwKHNpemVvZihTcGxpdEluZm8pKTsKIAotCWVzdGF0ZSA9IENy ZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKwlzaS0+Y21kID0gY21kOworCXNpLT5yZWwgPSByZWw7 CisJc2ktPnNwbGl0UmVsID0gc3BsaXRSZWw7CiAKLQlmb3Jib3RoKGxpc3RwdHIsIHBhcnRs aXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJc2ktPmRlZmF1bHRQYXJ0T2lkID0gZGVm YXVsdFBhcnRPaWQ7CisJc2ktPmVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKwor CS8qIENyZWF0ZSBjb250ZXh0IGZvciBlYWNoIG5ldyBwYXJ0aXRpb24gYW5kIGZpbGwgaXQu ICovCisJZm9yZWFjaChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0KQogCXsKIAkJU2luZ2xlUGFy dGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3Rw dHIpOwotCi0JCXBjID0gY3JlYXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0KChSZWxhdGlvbikg bGZpcnN0KGxpc3RwdHIyKSk7CisJCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGMgPSBjcmVh dGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoc3BzKTsKIAogCQlpZiAoc3BzLT5ib3VuZC0+aXNf ZGVmYXVsdCkKIAkJewogCQkJLyogV2Ugc2hvdWxkIG5vdCBjcmVhdGUgY29uc3RyYWludCBm b3IgZGV0YWNoZWQgREVGQVVMVCBwYXJ0aXRpb24uICovCi0JCQlkZWZhdWx0UGFydEN0eCA9 IHBjOworCQkJc2ktPmRlZmF1bHRQYXJ0Q3R4ID0gcGM7CiAJCX0KIAkJZWxzZQogCQl7CkBA IC0yMDc0Niw5ICsyMDc3Miw4IEBAIG1vdmVTcGxpdFRhYmxlUm93cyhSZWxhdGlvbiByZWws IFJlbGF0aW9uIHNwbGl0UmVsLCBMaXN0ICpwYXJ0bGlzdCwgTGlzdCAqbmV3UGFyCiAKIAkJ CS8qIEJ1aWxkIGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFydGl0aW9uIGNo ZWNrIHF1YWxzLiAqLwogCQkJcGFydENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9tX3BhcnRi b3VuZChyZWwsIHNwcy0+Ym91bmQpOwotCQkJcGFydENvbnN0cmFpbnQgPQotCQkJCShMaXN0 ICopIGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoTlVMTCwKLQkJCQkJCQkJCQkJCShOb2RlICop IHBhcnRDb25zdHJhaW50KTsKKwkJCXBhcnRDb25zdHJhaW50ID0gKExpc3QgKikgZXZhbF9j b25zdF9leHByZXNzaW9ucyhOVUxMLCAoTm9kZSAqKSBwYXJ0Q29uc3RyYWludCk7CisKIAkJ CS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVjQ2hlY2soKS4gKi8KIAkJCXBh cnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNfZXhwbGljaXQocGFydENvbnN0 cmFpbnQpKTsKIApAQCAtMjA3NTYsMTEgKzIwNzgxLDEwIEBAIG1vdmVTcGxpdFRhYmxlUm93 cyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLCBMaXN0ICpwYXJ0bGlzdCwgTGlz dCAqbmV3UGFyCiAJCQkgKiBNYXAgdGhlIHZhcnMgaW4gdGhlIGNvbnN0cmFpbnQgZXhwcmVz c2lvbiBmcm9tIHJlbCdzIGF0dG5vcyB0bwogCQkJICogc3BsaXRSZWwncy4KIAkJCSAqLwot CQkJcGFydENvbnN0cmFpbnQgPSBtYXBfcGFydGl0aW9uX3ZhcmF0dG5vcyhwYXJ0Q29uc3Ry YWludCwKLQkJCQkJCQkJCQkJCQkgMSwgc3BsaXRSZWwsIHJlbCk7CisJCQlwYXJ0Q29uc3Ry YWludCA9IG1hcF9wYXJ0aXRpb25fdmFyYXR0bm9zKHBhcnRDb25zdHJhaW50LCAxLCBzcGxp dFJlbCwgcmVsKTsKIAogCQkJcGMtPnBhcnRxdWFsc3RhdGUgPQotCQkJCUV4ZWNQcmVwYXJl RXhwcigoRXhwciAqKSBsaW5pdGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQkJ RXhlY1ByZXBhcmVFeHByKChFeHByICopIGxpbml0aWFsKHBhcnRDb25zdHJhaW50KSwgc2kt PmVzdGF0ZSk7CiAJCQlBc3NlcnQocGMtPnBhcnRxdWFsc3RhdGUgIT0gTlVMTCk7CiAJCX0K IApAQCAtMjA3NjgsNDEgKzIwNzkyLDI2MSBAQCBtb3ZlU3BsaXRUYWJsZVJvd3MoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBzcGxpdFJlbCwgTGlzdCAqcGFydGxpc3QsIExpc3QgKm5ld1Bh cgogCQlwYXJ0Q29udGV4dHMgPSBsYXBwZW5kKHBhcnRDb250ZXh0cywgcGMpOwogCX0KIAor CXNpLT5wYXJ0Q29udGV4dHMgPSBwYXJ0Q29udGV4dHM7CisKKwlyZXR1cm4gc2k7Cit9CisK Ky8qCisgKiBkZWxldGVTcGxpdEluZm86IGRlbGV0ZSBTUExJVCBQQVJUSVRJT04gY29tbWFu ZCBjb250ZXh0CisgKi8KK3N0YXRpYyB2b2lkCitkZWxldGVTcGxpdEluZm8oU3BsaXRJbmZv ICogc2kpCit7CisJTGlzdENlbGwgICAqbGlzdHB0cjsKKworCUZyZWVFeGVjdXRvclN0YXRl KHNpLT5lc3RhdGUpOworCisJZm9yZWFjaChsaXN0cHRyLCBzaS0+cGFydENvbnRleHRzKQor CQlkZWxldGVTcGxpdFBhcnRpdGlvbkNvbnRleHQoKFNwbGl0UGFydGl0aW9uQ29udGV4dCAq KSBsZmlyc3QobGlzdHB0cikpOworCisJcGZyZWUoc2kpOworfQorCisvKgorICogY2hlY2tO ZXdQYXJ0aXRpb25zOiBzaW1wbGUgY2hlY2sgb2YgdGhlIG5ldyBwYXJ0aXRpb25zLgorICoK KyAqIGNtZDogU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQgaW5mby4KKyAqIHNwbGl0UmVsT2lk OiBzcGxpdCBwYXJ0aXRpb24gT2lkLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgb2Yg dGhlIG5ldyBwYXJ0aXRpb25zIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBzcGxpdAorICog cGFydGl0aW9uLgorICovCitzdGF0aWMgYm9vbAorY2hlY2tOZXdQYXJ0aXRpb25zKFBhcnRp dGlvbkNtZCAqY21kLCBPaWQgc3BsaXRSZWxPaWQpCit7CisJT2lkCQkJbmFtZXNwYWNlSWQ7 CisJTGlzdENlbGwgICAqbGlzdHB0cjsKKwlib29sCQlpc1NhbWVOYW1lID0gZmFsc2U7CisJ Y2hhcgkJcmVsbmFtZVtOQU1FREFUQUxFTl07CisKKwlmb3JlYWNoKGxpc3RwdHIsIGNtZC0+ cGFydGxpc3QpCisJeworCQlPaWQJCQlleGlzdGluZ19yZWxpZDsKKwkJU2luZ2xlUGFydGl0 aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIp OworCisJCXN0cmxjcHkocmVsbmFtZSwgc3BzLT5uYW1lLT5yZWxuYW1lLCBOQU1FREFUQUxF Tik7CisKKwkJLyoKKwkJICogTG9vayB1cCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHdlIGFy ZSBzdXBwb3NlZCB0byBjcmVhdGUgdGhlCisJCSAqIHBhcnRpdGlvbiwgY2hlY2sgd2UgaGF2 ZSBwZXJtaXNzaW9uIHRvIGNyZWF0ZSB0aGVyZSwgbG9jayBpdAorCQkgKiBhZ2FpbnN0IGNv bmN1cnJlbnQgZHJvcCwgYW5kIG1hcmsgc3RtdC0+cmVsYXRpb24gYXMKKwkJICogUkVMUEVS U0lTVEVOQ0VfVEVNUCBpZiBhIHRlbXBvcmFyeSBuYW1lc3BhY2UgaXMgc2VsZWN0ZWQuCisJ CSAqLworCQluYW1lc3BhY2VJZCA9CisJCQlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25O YW1lc3BhY2Uoc3BzLT5uYW1lLCBOb0xvY2ssIE5VTEwpOworCisJCS8qCisJCSAqIFRoaXMg d291bGQgZmFpbCBsYXRlciBvbiBhbnl3YXksIGlmIHRoZSByZWxhdGlvbiBhbHJlYWR5IGV4 aXN0cy4KKwkJICogQnV0IGJ5IGNhdGNoaW5nIGl0IGhlcmUgd2UgY2FuIGVtaXQgYSBuaWNl ciBlcnJvciBtZXNzYWdlLgorCQkgKi8KKwkJZXhpc3RpbmdfcmVsaWQgPSBnZXRfcmVsbmFt ZV9yZWxpZChyZWxuYW1lLCBuYW1lc3BhY2VJZCk7CisJCWlmIChleGlzdGluZ19yZWxpZCA9 PSBzcGxpdFJlbE9pZCAmJiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9u IGNhbiBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNT YW1lTmFtZSA9IHRydWU7CisJCWVsc2UgaWYgKGV4aXN0aW5nX3JlbGlkICE9IEludmFsaWRP aWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FU RV9UQUJMRSksCisJCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0 cyIsIHJlbG5hbWUpKSk7CisJfQorCisJcmV0dXJuIGlzU2FtZU5hbWU7Cit9CisKKy8qCisg KiBjcmVhdGVQYXJ0aXRpb25UYWJsZTogY3JlYXRlIHRhYmxlIGZvciBuZXcgcGFydGl0aW9u IHdpdGggZ2l2ZW4gbmFtZQorICogKG5ld1BhcnROYW1lKSBsaWtlIHRhYmxlIChtb2RlbFJl bE5hbWUpCisgKgorICogRW11bGF0ZXMgY29tbWFuZDogQ1JFQVRFIFRBQkxFIDxuZXdQYXJ0 TmFtZT4gKExJS0UgPG1vZGVsUmVsTmFtZT4KKyAqIElOQ0xVRElORyBBTEwgRVhDTFVESU5H IElOREVYRVMpCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVQYXJ0aXRpb25UYWJsZShSYW5n ZVZhciAqbmV3UGFydE5hbWUsIFJhbmdlVmFyICptb2RlbFJlbE5hbWUsCisJCQkJCSBBbHRl clRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJQ3JlYXRlU3RtdCAqY3JlYXRl U3RtdDsKKwlUYWJsZUxpa2VDbGF1c2UgKnRsYzsKKwlQbGFubmVkU3RtdCAqd3JhcHBlcjsK KworCWNyZWF0ZVN0bXQgPSBtYWtlTm9kZShDcmVhdGVTdG10KTsKKwljcmVhdGVTdG10LT5y ZWxhdGlvbiA9IG5ld1BhcnROYW1lOworCWNyZWF0ZVN0bXQtPnRhYmxlRWx0cyA9IE5JTDsK KwljcmVhdGVTdG10LT5pbmhSZWxhdGlvbnMgPSBOSUw7CisJY3JlYXRlU3RtdC0+Y29uc3Ry YWludHMgPSBOSUw7CisJY3JlYXRlU3RtdC0+b3B0aW9ucyA9IE5JTDsKKwljcmVhdGVTdG10 LT5vbmNvbW1pdCA9IE9OQ09NTUlUX05PT1A7CisJY3JlYXRlU3RtdC0+dGFibGVzcGFjZW5h bWUgPSBOVUxMOworCWNyZWF0ZVN0bXQtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKworCXRs YyA9IG1ha2VOb2RlKFRhYmxlTGlrZUNsYXVzZSk7CisJdGxjLT5yZWxhdGlvbiA9IG1vZGVs UmVsTmFtZTsKKworCS8qCisJICogSW5kZXhlcyB3aWxsIGJlIGluaGVyaXRlZCBvbiAiYXR0 YWNoIG5ldyBwYXJ0aXRpb25zIiBzdGFnZSwgYWZ0ZXIgZGF0YQorCSAqIG1vdmluZy4KKwkg Ki8KKwl0bGMtPm9wdGlvbnMgPSBDUkVBVEVfVEFCTEVfTElLRV9BTEwgJiB+Q1JFQVRFX1RB QkxFX0xJS0VfSU5ERVhFUzsKKwl0bGMtPnJlbGF0aW9uT2lkID0gSW52YWxpZE9pZDsKKwlj cmVhdGVTdG10LT50YWJsZUVsdHMgPSBsYXBwZW5kKGNyZWF0ZVN0bXQtPnRhYmxlRWx0cywg dGxjKTsKKworCS8qIE5lZWQgdG8gbWFrZSBhIHdyYXBwZXIgUGxhbm5lZFN0bXQuICovCisJ d3JhcHBlciA9IG1ha2VOb2RlKFBsYW5uZWRTdG10KTsKKwl3cmFwcGVyLT5jb21tYW5kVHlw ZSA9IENNRF9VVElMSVRZOworCXdyYXBwZXItPmNhblNldFRhZyA9IGZhbHNlOworCXdyYXBw ZXItPnV0aWxpdHlTdG10ID0gKE5vZGUgKikgY3JlYXRlU3RtdDsKKwl3cmFwcGVyLT5zdG10 X2xvY2F0aW9uID0gY29udGV4dC0+cHN0bXQtPnN0bXRfbG9jYXRpb247CisJd3JhcHBlci0+ c3RtdF9sZW4gPSBjb250ZXh0LT5wc3RtdC0+c3RtdF9sZW47CisKKwlQcm9jZXNzVXRpbGl0 eSh3cmFwcGVyLAorCQkJCSAgIGNvbnRleHQtPnF1ZXJ5U3RyaW5nLAorCQkJCSAgIGZhbHNl LAorCQkJCSAgIFBST0NFU1NfVVRJTElUWV9TVUJDT01NQU5ELAorCQkJCSAgIE5VTEwsCisJ CQkJICAgTlVMTCwKKwkJCQkgICBOb25lX1JlY2VpdmVyLAorCQkJCSAgIE5VTEwpOworfQor CisvKgorICogY3JlYXRlTmV3UGFydGl0aW9uczogc2ltcGxlIGNoZWNrIG9mIHRoZSBuZXcg cGFydGl0aW9ucy4KKyAqCisgKiBzaTogU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQgY29udGV4 dC4KKyAqIHNwbGl0TmFtZTogc3BsaXQgcGFydGl0aW9uIG5hbWUuCisgKiBwY1dpdGhBbGxS b3dzOiBjb250ZXh0IG9mIHBhcnRpdGlvbiB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgcm93cyBv ZiB0aGUgc3BsaXQKKyAqIAkJCQkgIHBhcnRpdGlvbiBvciBOVUxMIGlmIG5vIHN1Y2ggcGFy dGl0aW9uIGV4aXN0cy4KKyAqCisgKiBGdW5jdGlvbiByZXR1cm5zIG5hbWUgb2Ygc3BsaXQg cGFydGl0aW9uIChhbmQgY2FuIGNoYW5nZSBpdCBpbiBjYXNlIG9mCisgKiBvcHRpbWl6YXRp b24gd2l0aCBzcGxpdCBwYXJ0aXRpb24gcmVuYW1pbmcpLgorICovCitzdGF0aWMgUmFuZ2VW YXIgKgorY3JlYXRlTmV3UGFydGl0aW9ucyhTcGxpdEluZm8gKiBzaSwgUmFuZ2VWYXIgKnNw bGl0TmFtZSwKKwkJCQkJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICogcGNXaXRoQWxsUm93cywK KwkJCQkJQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCUxpc3RDZWxs ICAgKmxpc3RwdHI7CisJT2lkCQkJc3BsaXRSZWxPaWQ7CisJUmFuZ2VWYXIgICAqc3BsaXRQ YXJ0TmFtZSA9IHNwbGl0TmFtZTsKKworCXNwbGl0UmVsT2lkID0gUmVsYXRpb25HZXRSZWxp ZChzaS0+c3BsaXRSZWwpOworCisJZm9yZWFjaChsaXN0cHRyLCBzaS0+cGFydENvbnRleHRz KQorCXsKKwkJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYyA9IChTcGxpdFBhcnRpdGlvbkNv bnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCWlmIChwYyA9PSBwY1dpdGhBbGxSb3dz KQorCQl7CisJCQkvKiBOZWVkIHRvIHJldXNlIHNwbGl0UmVsIGZvciBwYXJ0aXRpb24gaW5z dGVhZCBvZiBjcmVhdGlvbi4gKi8KKworCQkJLyoKKwkJCSAqIFdlIG11c3QgYnVtcCB0aGUg Y29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbgorCQkJICogdHVw bGUgdmlzaWJsZSBmb3IgcmVuYW1lLgorCQkJICovCisJCQlDb21tYW5kQ291bnRlckluY3Jl bWVudCgpOworCisJCQkvKgorCQkJICogUmVuYW1lIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcg cGFydGl0aW9uLgorCQkJICovCisJCQlSZW5hbWVSZWxhdGlvbkludGVybmFsKHNwbGl0UmVs T2lkLCBwYy0+c3BzLT5uYW1lLT5yZWxuYW1lLCBmYWxzZSwgZmFsc2UpOworCQkJc3BsaXRQ YXJ0TmFtZSA9IG1ha2VSYW5nZVZhcihnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXRO YW1lc3BhY2Uoc2ktPnNwbGl0UmVsKSksCisJCQkJCQkJCQkJIHBjLT5zcHMtPm5hbWUtPnJl bG5hbWUsIC0xKTsKKworCQkJLyoKKwkJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBj b3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbgorCQkJICogdHVwbGUgdmlzaWJs ZSBhZnRlciByZW5hbWUuCisJCQkgKi8KKwkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7 CisKKwkJCXBjLT5wYXJ0UmVsID0gc2ktPnNwbGl0UmVsOworCQkJLyogTm8gbmVlZCB0byBv cGVuIHJlbGF0aW9uIDogc3BsaXRSZWwgaXMgYWxyZWFkeSBvcGVuZWQuICovCisJCX0KKwkJ ZWxzZQorCQl7CisJCQljcmVhdGVQYXJ0aXRpb25UYWJsZShwYy0+c3BzLT5uYW1lLCBzcGxp dFBhcnROYW1lLCBjb250ZXh0KTsKKworCQkJLyogT3BlbiB0aGUgbmV3IHBhcnRpdGlvbiBh bmQgYWNxdWlyZSBleGNsdXNpdmUgbG9jayBvbiBpdC4gKi8KKwkJCXBjLT5wYXJ0UmVsID0g dGFibGVfb3BlbnJ2KHBjLT5zcHMtPm5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQl9 CisJfQorCisJcmV0dXJuIHNwbGl0UGFydE5hbWU7Cit9CisKKy8qCisgKiBtb3ZlU3BsaXRU YWJsZVJvd3M6IHNjYW4gc3BsaXQgcGFydGl0aW9uIChzcGxpdFJlbCkgb2YgcGFydGl0aW9u ZWQgdGFibGUKKyAqIChyZWwpIGFuZCBtb3ZlIHJvd3MgaW50byBuZXcgcGFydGl0aW9ucy4K KyAqCisgKiBzaTogU1BMSVQgUEFSVElUSU9OIGNvbW1hbmQgY29udGV4dC4KKyAqLworc3Rh dGljIHZvaWQKK21vdmVTcGxpdFRhYmxlUm93cyhTcGxpdEluZm8gKiBzaSkKK3sKKwkvKiBU aGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICovCisJaW50CQkJ dGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlDb21tYW5kSWQJbXljaWQ7 CisJTGlzdENlbGwgICAqbGlzdHB0cjsKKwlUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdDsKKwlF eHByQ29udGV4dCAqZWNvbnRleHQ7CisJVGFibGVTY2FuRGVzYyBzY2FuOworCVNuYXBzaG90 CXNuYXBzaG90OworCU1lbW9yeUNvbnRleHQgb2xkQ3h0OworCVR1cGxlQ29udmVyc2lvbk1h cCAqdHVwbGVfbWFwOworCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGMgPSBOVUxMOworCWJv b2wJCWlzT2xkRGVmYXVsdFBhcnQgPSBmYWxzZTsKKwlTcGxpdFBhcnRpdGlvbkNvbnRleHQg KmRlZmF1bHRQYXJ0Q3R4ID0gc2ktPmRlZmF1bHRQYXJ0Q3R4OworCisJbXljaWQgPSBHZXRD dXJyZW50Q29tbWFuZElkKHRydWUpOworCisJLyogUHJlcGFyZSBuZXcgcGFydGl0aW9ucyBj b250ZXh0cyBmb3IgaW5zZXJ0IHJvd3MuICovCisJZm9yZWFjaChsaXN0cHRyLCBzaS0+cGFy dENvbnRleHRzKQorCQlmaWxsU3BsaXRQYXJ0aXRpb25Db250ZXh0KChTcGxpdFBhcnRpdGlv bkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpKTsKKwogCS8qCiAJICogQ3JlYXRlIHBhcnRp dGlvbiBjb250ZXh0IGZvciBERUZBVUxUIHBhcnRpdGlvbi4gV2UgY2FuIGluc2VydCB2YWx1 ZXMKIAkgKiBpbnRvIHRoaXMgcGFydGl0aW9uIGluIGNhc2Ugc3BhY2VzIHdpdGggdmFsdWVz IGJldHdlZW4gbmV3IHBhcnRpdGlvbnMuCiAJICovCi0JaWYgKCFkZWZhdWx0UGFydEN0eCAm JiBPaWRJc1ZhbGlkKGRlZmF1bHRQYXJ0T2lkKSkKKwlpZiAoIWRlZmF1bHRQYXJ0Q3R4ICYm IE9pZElzVmFsaWQoc2ktPmRlZmF1bHRQYXJ0T2lkKSkKIAl7CiAJCS8qIEluZGljYXRlIHRo YXQgd2UgYWxsb2NhdGUgY29udGV4dCBmb3Igb2xkIERFRkFVTFQgcGFydGl0aW9uICovCiAJ CWlzT2xkRGVmYXVsdFBhcnQgPSB0cnVlOwotCQlkZWZhdWx0UGFydEN0eCA9IGNyZWF0ZVNw bGl0UGFydGl0aW9uQ29udGV4dCh0YWJsZV9vcGVuKGRlZmF1bHRQYXJ0T2lkLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKSk7CisJCWRlZmF1bHRQYXJ0Q3R4ID0gY3JlYXRlU3BsaXRQYXJ0aXRp b25Db250ZXh0KE5VTEwpOworCQlkZWZhdWx0UGFydEN0eC0+cGFydFJlbCA9IHRhYmxlX29w ZW4oc2ktPmRlZmF1bHRQYXJ0T2lkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJZmlsbFNw bGl0UGFydGl0aW9uQ29udGV4dChkZWZhdWx0UGFydEN0eCk7CiAJfQogCi0JZWNvbnRleHQg PSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisJZWNvbnRleHQgPSBHZXRQZXJU dXBsZUV4cHJDb250ZXh0KHNpLT5lc3RhdGUpOwogCiAJLyogQ3JlYXRlIG5lY2Vzc2FyeSB0 dXBsZSBzbG90LiAqLwotCXNyY3Nsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVs YXRpb25HZXREZXNjcihzcGxpdFJlbCksCi0JCQkJCQkJCQkgICB0YWJsZV9zbG90X2NhbGxi YWNrcyhzcGxpdFJlbCkpOworCXNyY3Nsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3Qo UmVsYXRpb25HZXREZXNjcihzaS0+c3BsaXRSZWwpLAorCQkJCQkJCQkJICAgdGFibGVfc2xv dF9jYWxsYmFja3Moc2ktPnNwbGl0UmVsKSk7CiAKIAkvKgogCSAqIE1hcCBjb21wdXRpbmcg Zm9yIG1vdmluZyBhdHRyaWJ1dGVzIG9mIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0 aW9uCiAJICogKGZvciBmaXJzdCBuZXcgcGFydGl0aW9uIGJ1dCBvdGhlciBuZXcgcGFydGl0 aW9ucyBjYW4gdXNlIHRoZSBzYW1lCiAJICogbWFwKS4KIAkgKi8KLQlwYyA9IChTcGxpdFBh cnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RfaGVhZChwYXJ0Q29udGV4dHMpKTsKLQl0 dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3Ioc3Bs aXRSZWwpLAorCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBsZmlyc3QobGlzdF9o ZWFkKHNpLT5wYXJ0Q29udGV4dHMpKTsKKwl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19i eV9uYW1lKFJlbGF0aW9uR2V0RGVzY3Ioc2ktPnNwbGl0UmVsKSwKIAkJCQkJCQkJCSAgIFJl bGF0aW9uR2V0RGVzY3IocGMtPnBhcnRSZWwpKTsKIAogCS8qIFNjYW4gdGhyb3VnaCB0aGUg cm93cy4gKi8KIAlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNo b3QoKSk7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihzcGxpdFJlbCwgc25hcHNob3QsIDAs IE5VTEwpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4oc2ktPnNwbGl0UmVsLCBzbmFwc2hv dCwgMCwgTlVMTCk7CiAKIAkvKgogCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNv bnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCiAJICogcHJvZHVjZWQsIHNvIHdl IGRvbid0IGxlYWsgbWVtb3J5LgogCSAqLwotCW9sZEN4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7CisJb2xkQ3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChzaS0+ZXN0YXRl KSk7CiAKIAl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2Nh bkRpcmVjdGlvbiwgc3Jjc2xvdCkpCiAJewpAQCAtMjA4MTUsNyArMjEwNTksNyBAQCBtb3Zl U3BsaXRUYWJsZVJvd3MoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBzcGxpdFJlbCwgTGlzdCAq cGFydGxpc3QsIExpc3QgKm5ld1BhcgogCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBz cmNzbG90OwogCiAJCS8qIFNlYXJjaCBwYXJ0aXRpb24gZm9yIGN1cnJlbnQgc2xvdCBzcmNz bG90LiAqLwotCQlmb3JlYWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwkJZm9yZWFjaChs aXN0cHRyLCBzaS0+cGFydENvbnRleHRzKQogCQl7CiAJCQlwYyA9IChTcGxpdFBhcnRpdGlv bkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOwogCkBAIC0yMDgzNiw3ICsyMTA4MCw3IEBA IG1vdmVTcGxpdFRhYmxlUm93cyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLCBM aXN0ICpwYXJ0bGlzdCwgTGlzdCAqbmV3UGFyCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ CShlcnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKIAkJCQkJCSBlcnJtc2coImNh biBub3QgZmluZCBwYXJ0aXRpb24gZm9yIHNwbGl0IHBhcnRpdGlvbiByb3ciKSwKLQkJCQkJ CSBlcnJ0YWJsZShzcGxpdFJlbCkpKTsKKwkJCQkJCSBlcnJ0YWJsZShzaS0+c3BsaXRSZWwp KSk7CiAJCX0KIAogCQlpZiAodHVwbGVfbWFwKQpAQCAtMjA4NzcsNzQgKzIxMTIxLDIwOCBA QCBtb3ZlU3BsaXRUYWJsZVJvd3MoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBzcGxpdFJlbCwg TGlzdCAqcGFydGxpc3QsIExpc3QgKm5ld1BhcgogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRh YmxlU2xvdChzcmNzbG90KTsKIAotCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7Ci0KLQlm b3JlYWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKLQkJZGVsZXRlU3BsaXRQYXJ0aXRpb25D b250ZXh0KChTcGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpLCB0aV9v cHRpb25zKTsKLQogCS8qIE5lZWQgdG8gY2xvc2UgdGFibGUgYW5kIGZyZWUgYnVmZmVycyBm b3IgREVGQVVMVCBwYXJ0aXRpb24uICovCiAJaWYgKGlzT2xkRGVmYXVsdFBhcnQpCiAJewot CQlSZWxhdGlvbiBkZWZhdWx0UGFydFJlbCA9IGRlZmF1bHRQYXJ0Q3R4LT5wYXJ0UmVsOwor CQlSZWxhdGlvbglkZWZhdWx0UGFydFJlbCA9IGRlZmF1bHRQYXJ0Q3R4LT5wYXJ0UmVsOwog Ci0JCWRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChkZWZhdWx0UGFydEN0eCwgdGlfb3B0 aW9ucyk7CisJCWRlbGV0ZVNwbGl0UGFydGl0aW9uQ29udGV4dChkZWZhdWx0UGFydEN0eCk7 CiAJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLwogCQl0YWJsZV9jbG9zZShk ZWZhdWx0UGFydFJlbCwgTm9Mb2NrKTsKIAl9CiB9CiAKIC8qCi0gKiBjcmVhdGVQYXJ0aXRp b25UYWJsZTogY3JlYXRlIHRhYmxlIGZvciBuZXcgcGFydGl0aW9uIHdpdGggZ2l2ZW4gbmFt ZQotICogKG5ld1BhcnROYW1lKSBsaWtlIHRhYmxlIChtb2RlbFJlbE5hbWUpCisgKiBmaW5k TmV3UGFydEZvclNsb3Q6IGZpbmQgcGFydGl0aW9uIHRoYXQgY29udGFpbnMgc2xvdCB2YWx1 ZS4KICAqCi0gKiBFbXVsYXRlcyBjb21tYW5kOiBDUkVBVEUgVEFCTEUgPG5ld1BhcnROYW1l PiAoTElLRSA8bW9kZWxSZWxOYW1lPgotICogSU5DTFVESU5HIEFMTCBFWENMVURJTkcgSU5E RVhFUykKKyAqIHNpOiBTUExJVCBQQVJUSVRJT04gY29udGV4dC4KKyAqIGNoZWNrUGM6IHBh cnRpdGlvbiBjb250ZXh0IGZvciBjaGVjayBzbG90IHZhbHVlIChjYW4gYmUgTlVMTCkuCisg KiBzbG90OiB2YWx1ZSB0byBjaGVjay4KICAqLwotc3RhdGljIHZvaWQKLWNyZWF0ZVBhcnRp dGlvblRhYmxlKFJhbmdlVmFyICpuZXdQYXJ0TmFtZSwgUmFuZ2VWYXIgKm1vZGVsUmVsTmFt ZSwKLQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3N0YXRpYyBT cGxpdFBhcnRpdGlvbkNvbnRleHQgKgorZmluZE5ld1BhcnRGb3JTbG90KFNwbGl0SW5mbyAq IHNpLCBTcGxpdFBhcnRpdGlvbkNvbnRleHQgKiBjaGVja1BjLCBUdXBsZVRhYmxlU2xvdCAq c2xvdCkKIHsKLQlDcmVhdGVTdG10ICpjcmVhdGVTdG10OwotCVRhYmxlTGlrZUNsYXVzZSAq dGxjOwotCVBsYW5uZWRTdG10ICp3cmFwcGVyOworCUxpc3RDZWxsICAgKmxpc3RwdHI7CisJ RXhwckNvbnRleHQgKmVjb250ZXh0OworCU1lbW9yeUNvbnRleHQgb2xkQ3h0OworCVNwbGl0 UGFydGl0aW9uQ29udGV4dCAqcmVzdWx0ID0gTlVMTDsKIAotCWNyZWF0ZVN0bXQgPSBtYWtl Tm9kZShDcmVhdGVTdG10KTsKLQljcmVhdGVTdG10LT5yZWxhdGlvbiA9IG5ld1BhcnROYW1l OwotCWNyZWF0ZVN0bXQtPnRhYmxlRWx0cyA9IE5JTDsKLQljcmVhdGVTdG10LT5pbmhSZWxh dGlvbnMgPSBOSUw7Ci0JY3JlYXRlU3RtdC0+Y29uc3RyYWludHMgPSBOSUw7Ci0JY3JlYXRl U3RtdC0+b3B0aW9ucyA9IE5JTDsKLQljcmVhdGVTdG10LT5vbmNvbW1pdCA9IE9OQ09NTUlU X05PT1A7Ci0JY3JlYXRlU3RtdC0+dGFibGVzcGFjZW5hbWUgPSBOVUxMOwotCWNyZWF0ZVN0 bXQtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhw ckNvbnRleHQoc2ktPmVzdGF0ZSk7CiAKLQl0bGMgPSBtYWtlTm9kZShUYWJsZUxpa2VDbGF1 c2UpOwotCXRsYy0+cmVsYXRpb24gPSBtb2RlbFJlbE5hbWU7CisJLyogTWFrZSBzdXJlIHRo ZSB0dXBsZSBpcyBmdWxseSBkZWNvbnN0cnVjdGVkLiAqLworCXNsb3RfZ2V0YWxsYXR0cnMo c2xvdCk7CisKKwllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OwogCiAJLyoKLQkg KiBJbmRleGVzIHdpbGwgYmUgaW5oZXJpdGVkIG9uICJhdHRhY2ggbmV3IHBhcnRpdGlvbnMi IHN0YWdlLCBhZnRlciBkYXRhCi0JICogbW92aW5nLgorCSAqIFN3aXRjaCB0byBwZXItdHVw bGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGFmdGVyIGVhY2ggY2hlY2ssIHNvIHdl CisJICogZG9uJ3QgbGVhayBtZW1vcnkuCiAJICovCi0JdGxjLT5vcHRpb25zID0gQ1JFQVRF X1RBQkxFX0xJS0VfQUxMICYgfkNSRUFURV9UQUJMRV9MSUtFX0lOREVYRVM7Ci0JdGxjLT5y ZWxhdGlvbk9pZCA9IEludmFsaWRPaWQ7Ci0JY3JlYXRlU3RtdC0+dGFibGVFbHRzID0gbGFw cGVuZChjcmVhdGVTdG10LT50YWJsZUVsdHMsIHRsYyk7CisJb2xkQ3h0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChzaS0+ZXN0YXRlKSk7CiAK LQkvKiBOZWVkIHRvIG1ha2UgYSB3cmFwcGVyIFBsYW5uZWRTdG10LiAqLwotCXdyYXBwZXIg PSBtYWtlTm9kZShQbGFubmVkU3RtdCk7Ci0Jd3JhcHBlci0+Y29tbWFuZFR5cGUgPSBDTURf VVRJTElUWTsKLQl3cmFwcGVyLT5jYW5TZXRUYWcgPSBmYWxzZTsKLQl3cmFwcGVyLT51dGls aXR5U3RtdCA9IChOb2RlICopIGNyZWF0ZVN0bXQ7Ci0Jd3JhcHBlci0+c3RtdF9sb2NhdGlv biA9IGNvbnRleHQtPnBzdG10LT5zdG10X2xvY2F0aW9uOwotCXdyYXBwZXItPnN0bXRfbGVu ID0gY29udGV4dC0+cHN0bXQtPnN0bXRfbGVuOworCWlmIChjaGVja1BjKQorCXsKKwkJaWYg KEV4ZWNDaGVjayhjaGVja1BjLT5wYXJ0cXVhbHN0YXRlLCBlY29udGV4dCkpCisJCXsKKwkJ CVJlc2V0RXhwckNvbnRleHQoZWNvbnRleHQpOworCQkJcmVzdWx0ID0gY2hlY2tQYzsKKwkJ fQorCX0KKwllbHNlCisJeworCQkvKiBTZWFyY2ggcGFydGl0aW9uIGZvciBjdXJyZW50IHNs b3Qgc3Jjc2xvdC4gKi8KKwkJZm9yZWFjaChsaXN0cHRyLCBzaS0+cGFydENvbnRleHRzKQor CQl7CisJCQlTcGxpdFBhcnRpdGlvbkNvbnRleHQgKnBjID0gKFNwbGl0UGFydGl0aW9uQ29u dGV4dCAqKSBsZmlyc3QobGlzdHB0cik7CiAKLQlQcm9jZXNzVXRpbGl0eSh3cmFwcGVyLAot CQkJCSAgIGNvbnRleHQtPnF1ZXJ5U3RyaW5nLAotCQkJCSAgIGZhbHNlLAotCQkJCSAgIFBS T0NFU1NfVVRJTElUWV9TVUJDT01NQU5ELAotCQkJCSAgIE5VTEwsCi0JCQkJICAgTlVMTCwK LQkJCQkgICBOb25lX1JlY2VpdmVyLAotCQkJCSAgIE5VTEwpOworCQkJaWYgKHBjLT5wYXJ0 cXVhbHN0YXRlIC8qIHNraXAgREVGQVVMVCBwYXJ0aXRpb24gKi8gJiYKKwkJCQlFeGVjQ2hl Y2socGMtPnBhcnRxdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCXsKKwkJCQlSZXNldEV4cHJD b250ZXh0KGVjb250ZXh0KTsKKwkJCQlyZXN1bHQgPSBwYzsKKwkJCQlicmVhazsKKwkJCX0K KwkJCVJlc2V0RXhwckNvbnRleHQoZWNvbnRleHQpOworCQl9CisKKwkJLyogV2Ugbm90IGZv dW5kIHBhcnRpdGlvbiB3aXRoIGJvcmRlcnMgYnV0IGV4aXN0cyBERUZBVUxUIHBhcnRpdGlv bi4gKi8KKwkJaWYgKCFyZXN1bHQgJiYgc2ktPmRlZmF1bHRQYXJ0Q3R4KQorCQkJcmVzdWx0 ID0gc2ktPmRlZmF1bHRQYXJ0Q3R4OworCisJCS8qCisJCSAqICJyZXN1bHQiIGNhbiBiZSBO VUxMIGhlcmUgYmVjYXVzZSBjYW4gYmUgc3BhY2VzIGJldHdlZW4gb2YgdGhlIG5ldworCQkg KiBwYXJ0aXRpb25zIGFuZCByb3dzIGZyb20gdGhlIHNwYWNlcyBjYW4gYmUgbW92ZWQgdG8g dGhlIERFRkFVTFQKKwkJICogcGFydGl0aW9uIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4K KwkJICovCisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN4dCk7CisKKwlyZXR1 cm4gcmVzdWx0OworfQorCisvKgorICogZmluZE5ld1BhcnRXaXRoQWxsUm93czogZmluZCBw YXJ0aXRpb24gdGhhdCBjb250YWlucyBhbGwgdGhlIHJvd3Mgb2YgdGhlCisgKiBzcGxpdCBw YXJ0aXRpb247IHJldHVybnMgcGFydGl0aW9uIGNvbnRleHQgaWYgcGFydGl0aW9uIHdhcyBm b3VuZC4KKyAqCisgKiBzaTogU1BMSVQgUEFSVElUSU9OIGNvbnRleHQuCisgKi8KK3N0YXRp YyBTcGxpdFBhcnRpdGlvbkNvbnRleHQgKgorZmluZE5ld1BhcnRXaXRoQWxsUm93cyhTcGxp dEluZm8gKiBzaSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRp b25LZXkoc2ktPnJlbCk7CisJTGlzdENlbGwgICAqaW5kZXg7CisJaW50CQkJcGFydG5hdHRz OworCVNwbGl0UGFydGl0aW9uQ29udGV4dCAqcmVzdWx0ID0gTlVMTDsKKwlBdHRyTWFwICAg ICptYXA7CisJQXR0ck51bWJlciAqcGFydGF0dHJzOworCWludAkJCWk7CisKKwkvKiBXZSBj YW4gdXNlIG9wdGltaXphdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9uaW5nIG9ubHkuICov CisJaWYgKGtleS0+c3RyYXRlZ3kgIT0gUEFSVElUSU9OX1NUUkFURUdZX1JBTkdFKQorCQly ZXR1cm4gTlVMTDsKKworCXBhcnRuYXR0cyA9IGdldF9wYXJ0aXRpb25fbmF0dHMoa2V5KTsK KworCS8qCisJICogUGFydGl0aW9uIGtleSBjb250YWlucyBjb2x1bW5zIG9mIHBhcnRpdGlv bmVkIHRhYmxlcyBzaS0+cmVsIGJ1dCBpbmRleAorCSAqIGNvbnRhaW5zIGNvbHVtbnMgb2Yg c2ktPnNwbGl0UmVsLiBTbyB3ZSBuZWVkIGEgbWFwIGZvciBjb252ZXJ0CisJICogYXR0cmli dXRlcyBudW1iZXJzIChzaS0+cmVsKSAtPiAoc2ktPnNwbGl0UmVsKS4KKwkgKi8KKwltYXAg PSBidWlsZF9hdHRybWFwX2J5X25hbWVfaWZfcmVxKFJlbGF0aW9uR2V0RGVzY3Ioc2ktPnNw bGl0UmVsKSwKKwkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0RGVzY3Ioc2ktPnJlbCksCisJCQkJ CQkJCQkgICBmYWxzZSk7CisJaWYgKG1hcCkKKwl7CisJCS8qCisJCSAqIENvbHVtbnMgb3Jk ZXIgaW4gYSBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgc3BsaXQgcGFydGl0aW9uIGlzCisJCSAq IGRpZmZlcmVudC4gU28gbmVlZCB0byBjcmVhdGUgYSBuZXcgYXJyYXkgd2l0aCBhdHRyaWJ1 dGUgbnVtYmVycy4KKwkJICovCisJCXBhcnRhdHRycyA9IHBhbGxvYyhzaXplb2YoQXR0ck51 bWJlcikgKiBwYXJ0bmF0dHMpOworCQlmb3IgKGkgPSAwOyBpIDwgcGFydG5hdHRzOyBpKysp CisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0cl9udW0gPSBnZXRfcGFydGl0aW9uX2NvbF9hdHRu dW0oa2V5LCBpKTsKKworCQkJcGFydGF0dHJzW2ldID0gbWFwLT5hdHRudW1zW2F0dHJfbnVt IC0gMV07CisJCX0KKwl9CisJZWxzZQorCXsKKwkJLyogV2UgY2FuIHVzZSBhcnJheSBvZiBw YXJ0aXRpb24ga2V5LiAqLworCQlwYXJ0YXR0cnMgPSBrZXktPnBhcnRhdHRyczsKKwl9CisK KwkvKiBTY2FuIGFsbCBpbmRleGVzIG9mIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlmb3JlYWNo KGluZGV4LCBSZWxhdGlvbkdldEluZGV4TGlzdChzaS0+c3BsaXRSZWwpKQorCXsKKwkJT2lk CQkJdGhpc0luZGV4T2lkID0gbGZpcnN0X29pZChpbmRleCk7CisJCVJlbGF0aW9uCWluZGV4 UmVsID0gaW5kZXhfb3Blbih0aGlzSW5kZXhPaWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJ LyoKKwkJICogSW5kZXggc2hvdWxkIGJlIHZhbGlkLCBidHJlZSAoZm9yIHNlYXJjaGluZyBt aW4vbWF4KSBhbmQgY29udGFpbgorCQkgKiB0aGUgc2FtZSBjb2x1bW5zIGFzIHBhcnRpdGlv biBrZXkuCisJCSAqLworCQlpZiAoaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRpc3ZhbGlkICYm CisJCQlpbmRleFJlbC0+cmRfcmVsLT5yZWxhbSA9PSBCVFJFRV9BTV9PSUQgJiYKKwkJCWlu ZGV4UmVsLT5yZF9pbmRleC0+aW5kbmF0dHMgPT0gcGFydG5hdHRzKQorCQl7CisJCQlmb3Ig KGkgPSAwOyBpIDwgaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRuYXR0czsgaSsrKQorCQkJewor CQkJCWlmIChpbmRleFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV0gIT0gcGFydGF0 dHJzW2ldKQorCQkJCQlicmVhazsKKwkJCX0KKworCQkJLyogSW5kZXggZm91bmQ/ICovCisJ CQlpZiAoaSA9PSBpbmRleFJlbC0+cmRfaW5kZXgtPmluZG5hdHRzKQorCQkJeworCQkJCUlu ZGV4U2NhbkRlc2MgaW5kZXhTY2FuOworCQkJCVR1cGxlVGFibGVTbG90ICpzbG90OworCisJ CQkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2FuKHNpLT5zcGxpdFJlbCwgaW5kZXhSZWws IFNuYXBzaG90QW55LCAwLCAwKTsKKwkJCQlkbworCQkJCXsKKwkJCQkJU3BsaXRQYXJ0aXRp b25Db250ZXh0ICpwYzsKKworCQkJCQkvKiBTZWFyY2ggYSBtaW5pbXVtIGluZGV4IHZhbHVl LiAqLworCQkJCQlpbmRleF9yZXNjYW4oaW5kZXhTY2FuLCBOVUxMLCAwLCBOVUxMLCAwKTsK KwkJCQkJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHNpLT5zcGxpdFJlbCwgTlVMTCk7CisJ CQkJCWlmICghaW5kZXhfZ2V0bmV4dF9zbG90KGluZGV4U2NhbiwgRm9yd2FyZFNjYW5EaXJl Y3Rpb24sIHNsb3QpKQorCQkJCQl7CisJCQkJCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVT bG90KHNsb3QpOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQkJLyogRmluZCBwYXJ0aXRp b24gY29udGV4dCBmb3IgbWluaW11bSBpbmRleCB2YWx1ZS4gKi8KKwkJCQkJcGMgPSBmaW5k TmV3UGFydEZvclNsb3Qoc2ksIE5VTEwsIHNsb3QpOworCQkJCQlFeGVjRHJvcFNpbmdsZVR1 cGxlVGFibGVTbG90KHNsb3QpOworCisJCQkJCS8qIFNlYXJjaCBhIG1heGltdW0gaW5kZXgg dmFsdWUuICovCisJCQkJCWluZGV4X3Jlc2NhbihpbmRleFNjYW4sIE5VTEwsIDAsIE5VTEws IDApOworCQkJCQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUoc2ktPnNwbGl0UmVsLCBOVUxM KTsKKwkJCQkJaWYgKCFpbmRleF9nZXRuZXh0X3Nsb3QoaW5kZXhTY2FuLCBCYWNrd2FyZFNj YW5EaXJlY3Rpb24sIHNsb3QpKQorCQkJCQl7CisJCQkJCQlFeGVjRHJvcFNpbmdsZVR1cGxl VGFibGVTbG90KHNsb3QpOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQkJLyogQ2hlY2sg cGFydGl0aW9uIGNvbnRleHQgInBjIiBmb3IgbWF4aW11bSBpbmRleCB2YWx1ZS4gKi8KKwkJ CQkJcmVzdWx0ID0gZmluZE5ld1BhcnRGb3JTbG90KHNpLCBwYywgc2xvdCk7CisJCQkJCUV4 ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJCQkJfSB3aGlsZSAoMCk7CisK KwkJCQlpbmRleF9lbmRzY2FuKGluZGV4U2Nhbik7CisJCQkJaW5kZXhfY2xvc2UoaW5kZXhS ZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJZ290byBkb25lOworCQkJfQorCQl9CisJCWlu ZGV4X2Nsb3NlKGluZGV4UmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCX0KKworZG9uZToKKwlp ZiAobWFwKQorCXsKKwkJcGZyZWUocGFydGF0dHJzKTsKKwkJZnJlZV9hdHRybWFwKG1hcCk7 CisJfQorCXJldHVybiByZXN1bHQ7CiB9CiAKIC8qCkBAIC0yMDk1NiwxNiArMjEzMzQsMTQg QEAgQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5m byAqdGFiLCBSZWxhdGlvbiByZWwsCiB7CiAJUmVsYXRpb24Jc3BsaXRSZWw7CiAJT2lkCQkJ c3BsaXRSZWxPaWQ7Ci0JY2hhcgkJcmVsbmFtZVtOQU1FREFUQUxFTl07Ci0JT2lkCQkJbmFt ZXNwYWNlSWQ7Ci0JTGlzdENlbGwgICAqbGlzdHB0ciwKLQkJCSAgICpsaXN0cHRyMjsKKwlM aXN0Q2VsbCAgICpsaXN0cHRyOwogCWJvb2wJCWlzU2FtZU5hbWUgPSBmYWxzZTsKIAljaGFy CQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKLQlMaXN0CSAgICpuZXdQYXJ0UmVscyA9IE5J TDsKIAlPYmplY3RBZGRyZXNzIG9iamVjdDsKIAlSYW5nZVZhciAgICpzcGxpdFBhcnROYW1l ID0gY21kLT5uYW1lOwogCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOworCVNwbGl0UGFydGl0aW9u Q29udGV4dCAqcGNXaXRoQWxsUm93czsKKwlTcGxpdEluZm8gICpzaTsKIAogCWRlZmF1bHRQ YXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoUmVsYXRpb25HZXRQYXJ0 aXRpb25EZXNjKHJlbCwgdHJ1ZSkpOwogCkBAIC0yMDk4NCwzNSArMjEzNjAsNyBAQCBBVEV4 ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIAlzcGxpdFJlbE9pZCA9IFJlbGF0aW9uR2V0UmVsaWQoc3BsaXRS ZWwpOwogCiAJLyogQ2hlY2sgZGVzY3JpcHRpb25zIG9mIG5ldyBwYXJ0aXRpb25zLiAqLwot CWZvcmVhY2gobGlzdHB0ciwgY21kLT5wYXJ0bGlzdCkKLQl7Ci0JCU9pZAkJCWV4aXN0aW5n X3JlbGlkOwotCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9u U3BlYyAqKSBsZmlyc3QobGlzdHB0cik7Ci0KLQkJc3RybGNweShyZWxuYW1lLCBzcHMtPm5h bWUtPnJlbG5hbWUsIE5BTUVEQVRBTEVOKTsKLQotCQkvKgotCQkgKiBMb29rIHVwIHRoZSBu YW1lc3BhY2UgaW4gd2hpY2ggd2UgYXJlIHN1cHBvc2VkIHRvIGNyZWF0ZSB0aGUKLQkJICog cGFydGl0aW9uLCBjaGVjayB3ZSBoYXZlIHBlcm1pc3Npb24gdG8gY3JlYXRlIHRoZXJlLCBs b2NrIGl0Ci0JCSAqIGFnYWluc3QgY29uY3VycmVudCBkcm9wLCBhbmQgbWFyayBzdG10LT5y ZWxhdGlvbiBhcwotCQkgKiBSRUxQRVJTSVNURU5DRV9URU1QIGlmIGEgdGVtcG9yYXJ5IG5h bWVzcGFjZSBpcyBzZWxlY3RlZC4KLQkJICovCi0JCW5hbWVzcGFjZUlkID0KLQkJCVJhbmdl VmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShzcHMtPm5hbWUsIE5vTG9jaywgTlVM TCk7Ci0KLQkJLyoKLQkJICogVGhpcyB3b3VsZCBmYWlsIGxhdGVyIG9uIGFueXdheSwgaWYg dGhlIHJlbGF0aW9uIGFscmVhZHkgZXhpc3RzLgotCQkgKiBCdXQgYnkgY2F0Y2hpbmcgaXQg aGVyZSB3ZSBjYW4gZW1pdCBhIG5pY2VyIGVycm9yIG1lc3NhZ2UuCi0JCSAqLwotCQlleGlz dGluZ19yZWxpZCA9IGdldF9yZWxuYW1lX3JlbGlkKHJlbG5hbWUsIG5hbWVzcGFjZUlkKTsK LQkJaWYgKGV4aXN0aW5nX3JlbGlkID09IHNwbGl0UmVsT2lkICYmICFpc1NhbWVOYW1lKQot CQkJLyogT25lIG5ldyBwYXJ0aXRpb24gY2FuIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyBzcGxp dCBwYXJ0aXRpb24uICovCi0JCQlpc1NhbWVOYW1lID0gdHJ1ZTsKLQkJZWxzZSBpZiAoZXhp c3RpbmdfcmVsaWQgIT0gSW52YWxpZE9pZCkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShl cnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKLQkJCQkJIGVycm1zZygicmVsYXRp b24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgcmVsbmFtZSkpKTsKLQl9CisJaXNTYW1lTmFt ZSA9IGNoZWNrTmV3UGFydGl0aW9ucyhjbWQsIHNwbGl0UmVsT2lkKTsKIAogCS8qIERldGFj aCBzcGxpdCBwYXJ0aXRpb24uICovCiAJUmVtb3ZlSW5oZXJpdGFuY2Uoc3BsaXRSZWwsIHJl bCwgZmFsc2UpOwpAQCAtMjEwMzMsOCArMjEzODEsNyBAQCBBVEV4ZWNTcGxpdFBhcnRpdGlv bihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwK IAkJLyogUmVuYW1lIHBhcnRpdGlvbi4gKi8KIAkJc3ByaW50Zih0bXBSZWxOYW1lLCAic3Bs aXQtJXUtJVgtdG1wIiwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBNeVByb2NQaWQpOwogCQlS ZW5hbWVSZWxhdGlvbkludGVybmFsKHNwbGl0UmVsT2lkLCB0bXBSZWxOYW1lLCBmYWxzZSwg ZmFsc2UpOwotCQlzcGxpdFBhcnROYW1lID0gbWFrZVJhbmdlVmFyKAotCQkJCQkJCQkJIGdl dF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShzcGxpdFJlbCkpLAorCQlz cGxpdFBhcnROYW1lID0gbWFrZVJhbmdlVmFyKGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlv bkdldE5hbWVzcGFjZShzcGxpdFJlbCkpLAogCQkJCQkJCQkJIHRtcFJlbE5hbWUsIC0xKTsK IAogCQkvKgpAQCAtMjEwNDQsNDMgKzIxMzkxLDQ4IEBAIEFURXhlY1NwbGl0UGFydGl0aW9u KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAog CQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCX0KIAotCS8qIENyZWF0ZSBuZXcgcGFy dGl0aW9ucyAobGlrZSBzcGxpdCBwYXJ0aXRpb24pLCB3aXRob3V0IGluZGV4ZXMuICovCi0J Zm9yZWFjaChsaXN0cHRyLCBjbWQtPnBhcnRsaXN0KQotCXsKLQkJU2luZ2xlUGFydGl0aW9u U3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOwot CQlSZWxhdGlvbgluZXdQYXJ0UmVsOworCS8qIENyZWF0ZSBTUExJVCBQQVJUSVRJT04gY29u dGV4dC4gKi8KKwlzaSA9IGNyZWF0ZVNwbGl0SW5mbyhjbWQsIHJlbCwgc3BsaXRSZWwsIGRl ZmF1bHRQYXJ0T2lkKTsKIAotCQljcmVhdGVQYXJ0aXRpb25UYWJsZShzcHMtPm5hbWUsIHNw bGl0UGFydE5hbWUsIGNvbnRleHQpOworCS8qCisJICogT3B0aW1pemF0aW9uOiBpZiBleGlz dCBhIG5ldyBwYXJ0aXRpb24gdGhhdCBjb250YWlucyBhbGwgdGhlIHJvd3Mgb2YKKwkgKiB0 aGUgc3BsaXQgcGFydGl0aW9uIHRoZW4gZG8gbm90IGNvcHkgcm93cywgcmVuYW1lIHRoZSBz cGxpdCBwYXJ0aXRpb24uCisJICovCisJcGNXaXRoQWxsUm93cyA9IGZpbmROZXdQYXJ0V2l0 aEFsbFJvd3Moc2kpOwogCi0JCS8qIE9wZW4gdGhlIG5ldyBwYXJ0aXRpb24gYW5kIGFjcXVp cmUgZXhjbHVzaXZlIGxvY2sgb24gaXQuICovCi0JCW5ld1BhcnRSZWwgPSB0YWJsZV9vcGVu cnYoc3BzLT5uYW1lLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkvKiBDcmVhdGUgbmV3IHBh cnRpdGlvbnMgKGxpa2Ugc3BsaXQgcGFydGl0aW9uKSwgd2l0aG91dCBpbmRleGVzLiAqLwor CXNwbGl0UGFydE5hbWUgPSBjcmVhdGVOZXdQYXJ0aXRpb25zKHNpLCBzcGxpdFBhcnROYW1l LCBwY1dpdGhBbGxSb3dzLCBjb250ZXh0KTsKIAotCQluZXdQYXJ0UmVscyA9IGxhcHBlbmQo bmV3UGFydFJlbHMsIG5ld1BhcnRSZWwpOworCWlmICghcGNXaXRoQWxsUm93cykKKwl7CisJ CS8qIENvcHkgZGF0YSBmcm9tIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9ucy4g Ki8KKwkJbW92ZVNwbGl0VGFibGVSb3dzKHNpKTsKKwkJLyogS2VlcCB0aGUgbG9jayB1bnRp bCBjb21taXQuICovCisJCXRhYmxlX2Nsb3NlKHNwbGl0UmVsLCBOb0xvY2spOwogCX0KIAot CS8qIENvcHkgZGF0YSBmcm9tIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9ucy4g Ki8KLQltb3ZlU3BsaXRUYWJsZVJvd3MocmVsLCBzcGxpdFJlbCwgY21kLT5wYXJ0bGlzdCwg bmV3UGFydFJlbHMsIGRlZmF1bHRQYXJ0T2lkKTsKLQkvKiBLZWVwIHRoZSBsb2NrIHVudGls IGNvbW1pdC4gKi8KLQl0YWJsZV9jbG9zZShzcGxpdFJlbCwgTm9Mb2NrKTsKLQogCS8qIEF0 dGFjaCBuZXcgcGFydGl0aW9ucyB0byBwYXJ0aXRpb25lZCB0YWJsZS4gKi8KLQlmb3Jib3Ro KGxpc3RwdHIsIGNtZC0+cGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwlmb3Jl YWNoKGxpc3RwdHIsIHNpLT5wYXJ0Q29udGV4dHMpCiAJewotCQlTaW5nbGVQYXJ0aXRpb25T cGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7Ci0J CVJlbGF0aW9uCW5ld1BhcnRSZWwgPSAoUmVsYXRpb24pIGxmaXJzdChsaXN0cHRyMik7CisJ CVNwbGl0UGFydGl0aW9uQ29udGV4dCAqcGMgPSAoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICop IGxmaXJzdChsaXN0cHRyKTsKIAogCQkvKiB3cXVldWUgPSBOVUxMOiB2ZXJpZmljYXRpb24g Zm9yIGVhY2ggY2xvbmVkIGNvbnN0cmFpbnQgaXMgbm90IG5lZWQuICovCi0JCWF0dGFjaFBh cnRpdGlvblRhYmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwgc3BzLT5ib3VuZCk7CisJCWF0 dGFjaFBhcnRpdGlvblRhYmxlKE5VTEwsIHJlbCwgcGMtPnBhcnRSZWwsIHBjLT5zcHMtPmJv dW5kKTsKIAkJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCi0JCXRhYmxlX2Ns b3NlKG5ld1BhcnRSZWwsIE5vTG9jayk7CisJCXRhYmxlX2Nsb3NlKHBjLT5wYXJ0UmVsLCBO b0xvY2spOwogCX0KIAotCS8qIERyb3Agc3BsaXQgcGFydGl0aW9uLiAqLwotCW9iamVjdC5j bGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOwotCW9iamVjdC5vYmplY3RJZCA9IHNwbGl0 UmVsT2lkOwotCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7Ci0JLyogUHJvYmFibHkgRFJPUF9D QVNDQURFIGlzIG5vdCBuZWVkZWQuICovCi0JcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERS T1BfUkVTVFJJQ1QsIDApOworCWlmICghcGNXaXRoQWxsUm93cykKKwl7CisJCS8qIERyb3Ag c3BsaXQgcGFydGl0aW9uLiAqLworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRp b25JZDsKKwkJb2JqZWN0Lm9iamVjdElkID0gc3BsaXRSZWxPaWQ7CisJCW9iamVjdC5vYmpl Y3RTdWJJZCA9IDA7CisJCS8qIFByb2JhYmx5IERST1BfQ0FTQ0FERSBpcyBub3QgbmVlZGVk LiAqLworCQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgMCk7CisJ fQorCisJZGVsZXRlU3BsaXRJbmZvKHNpKTsKIH0KIAogLyoKQEAgLTIxMjI2LDggKzIxNTc4 LDggQEAgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHBjLT5wYXJ0UmVsKSkpKTsKIAogCQkvKgotCQkgKiBDaGVja2luZyB0aGF0IHR3byBw YXJ0aXRpb25zIGhhdmUgdGhlIHNhbWUgbmFtZSB3YXMgYmVmb3JlLAotCQkgKiBpbiBmdW5j dGlvbiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSgpLgorCQkgKiBDaGVja2luZyB0 aGF0IHR3byBwYXJ0aXRpb25zIGhhdmUgdGhlIHNhbWUgbmFtZSB3YXMgYmVmb3JlLCBpbgor CQkgKiBmdW5jdGlvbiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZSgpLgogCQkgKi8K IAkJaWYgKGVxdWFsKG5hbWUsIGNtZC0+bmFtZSkpCiAJCQkvKiBPbmUgbmV3IHBhcnRpdGlv biBjYW4gaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIG1lcmdlZCBwYXJ0aXRpb24uICovCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKaW5kZXgg Mzg3MzZkM2U2Ny4uNDYyN2E5MWU1NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dApAQCAtMTMxNCw0ICsxMzE0LDMxMSBAQCBTRUxF Q1QgKiBGUk9NIHNhbGVzX290aGVyczsKIAogRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKIC0t CistLQorLS0gVGVzdHMgZm9yIFNQTElUIG9wdGltaXphdGlvbiAoQlkgUkFOR0UgcGFydGl0 aW9uaW5nKTogaWYgb25lIG9mIHRoZSBuZXcKKy0tIHBhcnRpdGlvbnMgY29udGFpbnMgYWxs IHRoZSByb3dzIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24sIHRoZW4gd2UgY2FuIHJlbmFtZQor LS0gdGhlIHNwbGl0IHBhcnRpdGlvbiBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IHBhcnRp dGlvbiBhbmQgbW92aW5nIHRoZSByb3dzLgorLS0KKy0tIDEuIE9wdGltaXphdGlvbiBzaG91 bGQgYmUgdXNlZC4KKy0tCitDUkVBVEUgVEFCTEUgdGVzdChuYW1lIHRleHQsIGkgaW50KSBQ QVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRlc3RfMSBQQVJUSVRJT04g T0YgdGVzdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgdGVz dF9kZWYgUEFSVElUSU9OIE9GIHRlc3QgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBpZHhfdGVz dF9pIE9OIHRlc3QoaSk7CitJTlNFUlQgSU5UTyB0ZXN0KG5hbWUsIGkpIFZBTFVFUworICAo J2ExJywgMSksICgnYTUnLCA1KSwgKCdhMTUnLCAxNSksICgnYTEyJywgMTIpLCAoJ2ExNycs IDE3KSwgKCdhMTEnLCAxMSk7CistLSBzaG91bGQgYmUgcm93cyAxNSwgMTIsIDE3LCAxMToK K1NFTEVDVCBpIEZST00gdGVzdF9kZWY7CisgaSAgCistLS0tCisgMTUKKyAxMgorIDE3Cisg MTEKKyg0IHJvd3MpCisKK1NFTEVDVCAndGVzdF9kZWYnOjpyZWdjbGFzczo6b2lkIEFTIHBy ZXZfb2lkIFxnc2V0CitBTFRFUiBUQUJMRSB0ZXN0IFNQTElUIFBBUlRJVElPTiB0ZXN0X2Rl ZiBJTlRPIAorICAoUEFSVElUSU9OIHRlc3RfZGVmIERFRkFVTFQsIFBBUlRJVElPTiB0ZXN0 XzIgRk9SIFZBTFVFUyBGUk9NICgxMSkgVE8gKDE5KSk7CistLSBzaG91bGQgYmUgJ3QnICh0 YWJsZSAidGVzdF8yIiBhZnRlciBTUExJVCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGFibGUK Ky0tICJ0ZXN0X2RlZiIgYmVmb3JlIFNQTElUKToKK1NFTEVDVCAndGVzdF8yJzo6cmVnY2xh c3M6Om9pZD06cHJldl9vaWQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93 KQorCistLSBzaG91bGQgYmUgcm93cyAxNSwgMTIsIDE3LCAxMToKK1NFTEVDVCBpIEZST00g dGVzdF8yOworIGkgIAorLS0tLQorIDE1CisgMTIKKyAxNworIDExCisoNCByb3dzKQorCist LSBzaG91bGQgYmUgMCByb3dzOgorU0VMRUNUIGkgRlJPTSB0ZXN0X2RlZjsKKyBpIAorLS0t CisoMCByb3dzKQorCistLSBzaG91bGQgYmUgNiByb3dzOgorU0VMRUNUICogRlJPTSB0ZXN0 OworIG5hbWUgfCBpICAKKy0tLS0tLSstLS0tCisgYTEgICB8ICAxCisgYTUgICB8ICA1Cisg YTE1ICB8IDE1CisgYTEyICB8IDEyCisgYTE3ICB8IDE3CisgYTExICB8IDExCisoNiByb3dz KQorCitEUk9QIFRBQkxFIHRlc3QgQ0FTQ0FERTsKKy0tCistLSAyLiBPcHRpbWl6YXRpb24g Y2Fubm90IGJlIHVzZWQgYmVjYXVzZSBub3QgZXhpc3RzIGJ0cmVlLWluZGV4IG9uIHRoZQor LS0gcGFydGl0aW9uIGtleSAoaXQgaXMgdXNlZCB0byBjaGVjayB0aGUgcGxhY2VtZW50IG9m IHJvd3MgaW4gdGhlIHBhcnRpdGlvbnMpLgorLS0KK0NSRUFURSBUQUJMRSB0ZXN0KG5hbWUg dGV4dCwgaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdGVz dF8xIFBBUlRJVElPTiBPRiB0ZXN0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NS RUFURSBUQUJMRSB0ZXN0X2RlZiBQQVJUSVRJT04gT0YgdGVzdCBERUZBVUxUOworSU5TRVJU IElOVE8gdGVzdChuYW1lLCBpKSBWQUxVRVMKKyAgKCdhMScsIDEpLCAoJ2E1JywgNSksICgn YTE1JywgMTUpLCAoJ2ExMicsIDEyKSwgKCdhMTcnLCAxNyksICgnYTExJywgMTEpOworU0VM RUNUICd0ZXN0X2RlZic6OnJlZ2NsYXNzOjpvaWQgQVMgcHJldl9vaWQgXGdzZXQKK0FMVEVS IFRBQkxFIHRlc3QgU1BMSVQgUEFSVElUSU9OIHRlc3RfZGVmIElOVE8gCisgIChQQVJUSVRJ T04gdGVzdF9kZWYgREVGQVVMVCwgUEFSVElUSU9OIHRlc3RfMiBGT1IgVkFMVUVTIEZST00g KDExKSBUTyAoMTkpKTsKKy0tIHNob3VsZCBiZSAnZicgKHRhYmxlcyAidGVzdF8yIiBhbmQg InRlc3RfZGVmIiBzaG91bGQgYmUgZGlmZmVyZW50KToKK1NFTEVDVCAndGVzdF8yJzo6cmVn Y2xhc3M6Om9pZD06cHJldl9vaWQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZgorKDEg cm93KQorCistLSBzaG91bGQgYmUgcm93cyAxNSwgMTIsIDE3LCAxMToKK1NFTEVDVCBpIEZS T00gdGVzdF8yOworIGkgIAorLS0tLQorIDE1CisgMTIKKyAxNworIDExCisoNCByb3dzKQor CistLSBzaG91bGQgYmUgNiByb3dzOgorU0VMRUNUICogRlJPTSB0ZXN0OworIG5hbWUgfCBp ICAKKy0tLS0tLSstLS0tCisgYTEgICB8ICAxCisgYTUgICB8ICA1CisgYTE1ICB8IDE1Cisg YTEyICB8IDEyCisgYTE3ICB8IDE3CisgYTExICB8IDExCisoNiByb3dzKQorCitEUk9QIFRB QkxFIHRlc3QgQ0FTQ0FERTsKKy0tCistLSAzLiBPcHRpbWl6YXRpb24gY2Fubm90IGJlIHVz ZWQgYmVjYXVzZSByb3dzIHNob3VsZCBiZSBtb3ZlZCBpbnRvIGRpZmZlcmVudAorLS0gcGFy dGl0aW9ucy4KKy0tCitDUkVBVEUgVEFCTEUgdGVzdChuYW1lIHRleHQsIGkgaW50KSBQQVJU SVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRlc3RfMSBQQVJUSVRJT04gT0Yg dGVzdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgdGVzdF9k ZWYgUEFSVElUSU9OIE9GIHRlc3QgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBpZHhfdGVzdF9p IE9OIHRlc3QoaSk7CitJTlNFUlQgSU5UTyB0ZXN0KG5hbWUsIGkpIFZBTFVFUworICAoJ2Ex JywgMSksICgnYTUnLCA1KSwgKCdhMTUnLCAxNSksICgnYTEyJywgMTIpLCAoJ2EyNycsIDI3 KSwgKCdhMTEnLCAxMSk7CitTRUxFQ1QgJ3Rlc3RfZGVmJzo6cmVnY2xhc3M6Om9pZCBBUyBw cmV2X29pZCBcZ3NldAorQUxURVIgVEFCTEUgdGVzdCBTUExJVCBQQVJUSVRJT04gdGVzdF9k ZWYgSU5UTyAKKyAgKFBBUlRJVElPTiB0ZXN0X2RlZiBERUZBVUxULCBQQVJUSVRJT04gdGVz dF8yIEZPUiBWQUxVRVMgRlJPTSAoMTEpIFRPICgxOSkpOworLS0gc2hvdWxkIGJlICdmJyAo dGFibGVzICJ0ZXN0XzIiIGFuZCAidGVzdF9kZWYiIHNob3VsZCBiZSBkaWZmZXJlbnQpOgor U0VMRUNUICd0ZXN0XzInOjpyZWdjbGFzczo6b2lkPTpwcmV2X29pZDsKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIHNob3VsZCBiZSByb3dzIDE1LCAxMiwg MTE6CitTRUxFQ1QgaSBGUk9NIHRlc3RfMjsKKyBpICAKKy0tLS0KKyAxNQorIDEyCisgMTEK KygzIHJvd3MpCisKKy0tIHNob3VsZCBiZSA2IHJvd3M6CitTRUxFQ1QgKiBGUk9NIHRlc3Q7 CisgbmFtZSB8IGkgIAorLS0tLS0tKy0tLS0KKyBhMSAgIHwgIDEKKyBhNSAgIHwgIDUKKyBh MTUgIHwgMTUKKyBhMTIgIHwgMTIKKyBhMTEgIHwgMTEKKyBhMjcgIHwgMjcKKyg2IHJvd3Mp CisKK0RST1AgVEFCTEUgdGVzdCBDQVNDQURFOworLS0KKy0tIDQuIE9wdGltaXphdGlvbiBz aG91bGQgYmUgdXNlZCwgREVGQVVUIHBhcnRpdGlvbiByZW5hbWVzIHRvIERFRkFVTFQKKy0t IHBhcnRpdGlvbi4KKy0tCitDUkVBVEUgVEFCTEUgdGVzdChuYW1lIHRleHQsIGkgaW50KSBQ QVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRlc3RfMSBQQVJUSVRJT04g T0YgdGVzdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgdGVz dF9kZWYgUEFSVElUSU9OIE9GIHRlc3QgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBpZHhfdGVz dF9pIE9OIHRlc3QoaSk7CitJTlNFUlQgSU5UTyB0ZXN0KG5hbWUsIGkpIFZBTFVFUworICAo J2ExJywgMSksICgnYTUnLCA1KSwgKCdhMjUnLCAyNSksICgnYTIyJywgMjIpLCAoJ2EyNycs IDI3KSwgKCdhMjEnLCAyMSk7CistLSBzaG91bGQgYmUgcm93cyAyNSwgMjIsIDI3LCAyMToK K1NFTEVDVCBpIEZST00gdGVzdF9kZWY7CisgaSAgCistLS0tCisgMjUKKyAyMgorIDI3Cisg MjEKKyg0IHJvd3MpCisKK1NFTEVDVCAndGVzdF9kZWYnOjpyZWdjbGFzczo6b2lkIEFTIHBy ZXZfb2lkIFxnc2V0CitBTFRFUiBUQUJMRSB0ZXN0IFNQTElUIFBBUlRJVElPTiB0ZXN0X2Rl ZiBJTlRPIAorICAoUEFSVElUSU9OIHRlc3RfZGVmIERFRkFVTFQsIFBBUlRJVElPTiB0ZXN0 XzIgRk9SIFZBTFVFUyBGUk9NICgxMSkgVE8gKDE5KSk7CistLSBzaG91bGQgYmUgJ3QnICh0 YWJsZSAidGVzdF9kZWYiIGFmdGVyIFNQTElUIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0YWJs ZQorLS0gInRlc3RfZGVmIiBiZWZvcmUgU1BMSVQpOgorU0VMRUNUICd0ZXN0X2RlZic6OnJl Z2NsYXNzOjpvaWQ9OnByZXZfb2lkOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygx IHJvdykKKworLS0gc2hvdWxkIGJlIDAgcm93czoKK1NFTEVDVCBpIEZST00gdGVzdF8yOwor IGkgCistLS0KKygwIHJvd3MpCisKKy0tIHNob3VsZCBiZSByb3dzIDI1LCAyMiwgMjcsIDIx OgorU0VMRUNUIGkgRlJPTSB0ZXN0X2RlZjsKKyBpICAKKy0tLS0KKyAyNQorIDIyCisgMjcK KyAyMQorKDQgcm93cykKKworLS0gc2hvdWxkIGJlIDYgcm93czoKK1NFTEVDVCAqIEZST00g dGVzdDsKKyBuYW1lIHwgaSAgCistLS0tLS0rLS0tLQorIGExICAgfCAgMQorIGE1ICAgfCAg NQorIGEyNSAgfCAyNQorIGEyMiAgfCAyMgorIGEyNyAgfCAyNworIGEyMSAgfCAyMQorKDYg cm93cykKKworRFJPUCBUQUJMRSB0ZXN0IENBU0NBREU7CistLQorLS0gNS4gT3B0aW1pemF0 aW9uIHNob3VsZCBiZSB1c2VkLCAyLWNvbHVtbiBwYXJ0aXRpb24ga2V5ICsgZGlmZmVyZW50 IGNvbHVtbnMKKy0tIG9yZGVyIGluIHBhcnRpdGlvbnMuCistLQorQ1JFQVRFIFRBQkxFIHRl c3RfMmNvbGtleShzIHNtYWxsaW50LCBiIGJpZ2ludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkg UkFOR0UgKGIsIHMpOworQ1JFQVRFIFRBQkxFIHRlc3RfMmNvbGtleV8xIFBBUlRJVElPTiBP RiB0ZXN0XzJjb2xrZXkgRk9SIFZBTFVFUyBGUk9NICgxMDAwMDAwMDAxLCAxKSBUTyAoMTAw MDAwMDEwMCwgMTAwKTsKK0NSRUFURSBUQUJMRSB0ZXN0XzJjb2xrZXlfZGVmKGkgaW50LCBi IGJpZ2ludCwgcyBzbWFsbGludCwgdCB0ZXh0KTsKK0FMVEVSIFRBQkxFIHRlc3RfMmNvbGtl eV9kZWYgRFJPUCBDT0xVTU4gaTsKK0FMVEVSIFRBQkxFIHRlc3RfMmNvbGtleSBBVFRBQ0gg UEFSVElUSU9OIHRlc3RfMmNvbGtleV9kZWYgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBpZHhf dGVzdF8yY29sa2V5X3NfYiBPTiB0ZXN0XzJjb2xrZXkoYiwgcyk7CitJTlNFUlQgSU5UTyB0 ZXN0XzJjb2xrZXkgKGIsIHMsIHQpIFZBTFVFUyAoMTAwMDAwMDAxMCwgMywgJ3ZhbHVlXzEw XzMnKTsKK0lOU0VSVCBJTlRPIHRlc3RfMmNvbGtleSAoYiwgcywgdCkgVkFMVUVTICgxMDAw MDAwMTIwLCA0LCAndmFsdWVfMTIwXzQnKTsKK0lOU0VSVCBJTlRPIHRlc3RfMmNvbGtleSAo YiwgcywgdCkgVkFMVUVTICgxMDAwMDAwMDAzLCA1LCAndmFsdWVfM181Jyk7CitJTlNFUlQg SU5UTyB0ZXN0XzJjb2xrZXkgKGIsIHMsIHQpIFZBTFVFUyAoMTAwMDAwMDEyNCwgMiwgJ3Zh bHVlXzEyNF8yJyk7CistLSBzaG91bGQgYmUgNCByb3dzOgorU0VMRUNUIGIsIHMgRlJPTSB0 ZXN0XzJjb2xrZXk7CisgICAgIGIgICAgICB8IHMgCistLS0tLS0tLS0tLS0rLS0tCisgMTAw MDAwMDAxMCB8IDMKKyAxMDAwMDAwMDAzIHwgNQorIDEwMDAwMDAxMjAgfCA0CisgMTAwMDAw MDEyNCB8IDIKKyg0IHJvd3MpCisKKy0tIHNob3VsZCBiZSAyIHJvd3M6CitTRUxFQ1QgYiwg cyBGUk9NIHRlc3RfMmNvbGtleV9kZWY7CisgICAgIGIgICAgICB8IHMgCistLS0tLS0tLS0t LS0rLS0tCisgMTAwMDAwMDEyMCB8IDQKKyAxMDAwMDAwMTI0IHwgMgorKDIgcm93cykKKwor U0VMRUNUICd0ZXN0XzJjb2xrZXlfZGVmJzo6cmVnY2xhc3M6Om9pZCBBUyBwcmV2X29pZCBc Z3NldAorQUxURVIgVEFCTEUgdGVzdF8yY29sa2V5IFNQTElUIFBBUlRJVElPTiB0ZXN0XzJj b2xrZXlfZGVmIElOVE8KKyAgKFBBUlRJVElPTiB0ZXN0XzJjb2xrZXlfMiBGT1IgVkFMVUVT IEZST00gKDEwMDAwMDAxMDEsIDEpIFRPICgxMDAwMDAwMjAwLCAxMDApLAorICAgUEFSVElU SU9OIHRlc3RfMmNvbGtleV9kZWYgREVGQVVMVCk7CistLSBzaG91bGQgYmUgJ3QnICh0YWJs ZSAidGVzdF8yY29sa2V5XzIiIGFmdGVyIFNQTElUIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0 YWJsZQorLS0gInRlc3RfMmNvbGtleV9kZWYiIGJlZm9yZSBTUExJVCk6CitTRUxFQ1QgJ3Rl c3RfMmNvbGtleV8yJzo6cmVnY2xhc3M6Om9pZD06cHJldl9vaWQ7CisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBzaG91bGQgYmUgMiByb3dzOgorU0VMRUNU IGIsIHMgRlJPTSB0ZXN0XzJjb2xrZXlfMjsKKyAgICAgYiAgICAgIHwgcyAKKy0tLS0tLS0t LS0tLSstLS0KKyAxMDAwMDAwMTIwIHwgNAorIDEwMDAwMDAxMjQgfCAyCisoMiByb3dzKQor CistLSBzaG91bGQgYmUgMCByb3dzOgorU0VMRUNUIGIsIHMgRlJPTSB0ZXN0XzJjb2xrZXlf ZGVmOworIGIgfCBzIAorLS0tKy0tLQorKDAgcm93cykKKworLS0gc2hvdWxkIGJlIDYgcm93 czoKK1NFTEVDVCBiLCBzIEZST00gdGVzdF8yY29sa2V5OworICAgICBiICAgICAgfCBzIAor LS0tLS0tLS0tLS0tKy0tLQorIDEwMDAwMDAwMTAgfCAzCisgMTAwMDAwMDAwMyB8IDUKKyAx MDAwMDAwMTIwIHwgNAorIDEwMDAwMDAxMjQgfCAyCisoNCByb3dzKQorCistLQorLS0gNS4x LiBPcHRpbWl6YXRpb24gY2Fubm90IGJlIHVzZWQuCistLQorSU5TRVJUIElOVE8gdGVzdF8y Y29sa2V5IChiLCBzLCB0KSBWQUxVRVMgKDEwMDAwMDAyMDAsIDEsICd2YWx1ZV8yMDBfMScp OworU0VMRUNUICd0ZXN0XzJjb2xrZXlfMic6OnJlZ2NsYXNzOjpvaWQgQVMgcHJldl9vaWQg XGdzZXQKK0FMVEVSIFRBQkxFIHRlc3RfMmNvbGtleSBTUExJVCBQQVJUSVRJT04gdGVzdF8y Y29sa2V5XzIgSU5UTworICAoUEFSVElUSU9OIHRlc3RfMmNvbGtleV8yIEZPUiBWQUxVRVMg RlJPTSAoMTAwMDAwMDEwMSwgMSkgVE8gKDEwMDAwMDAxNTAsIDEwMCksCisgICBQQVJUSVRJ T04gdGVzdF8yY29sa2V5XzMgRk9SIFZBTFVFUyBGUk9NICgxMDAwMDAwMTUxLCAxKSBUTyAo MTAwMDAwMDIwMCwgMTAwKSk7CistLSBzaG91bGQgYmUgJ2YnIChvcHRpbWl6YXRpb24gaXMg bm90IHVzZWQpOgorU0VMRUNUICd0ZXN0XzJjb2xrZXlfMic6OnJlZ2NsYXNzOjpvaWQ9OnBy ZXZfb2lkOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworLS0gc2hv dWxkIGJlIDIgcm93czoKK1NFTEVDVCBiLCBzIEZST00gdGVzdF8yY29sa2V5XzI7CisgICAg IGIgICAgICB8IHMgCistLS0tLS0tLS0tLS0rLS0tCisgMTAwMDAwMDEyMCB8IDQKKyAxMDAw MDAwMTI0IHwgMgorKDIgcm93cykKKworLS0gc2hvdWxkIGJlIDEgcm93OgorU0VMRUNUIGIs IHMgRlJPTSB0ZXN0XzJjb2xrZXlfMzsKKyAgICAgYiAgICAgIHwgcyAKKy0tLS0tLS0tLS0t LSstLS0KKyAxMDAwMDAwMjAwIHwgMQorKDEgcm93KQorCitEUk9QIFRBQkxFIHRlc3RfMmNv bGtleSBDQVNDQURFOworLS0KIERST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbAppbmRleCBlMzNl NjE2MjMwLi4wMjA4YzAxNThjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fc3BsaXQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlv bl9zcGxpdC5zcWwKQEAgLTc4OCw1ICs3ODgsMTU3IEBAIFNFTEVDVCAqIEZST00gc2FsZXNf b3RoZXJzOwogCiBEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwogCistLQorLS0KKy0tIFRlc3Rz IGZvciBTUExJVCBvcHRpbWl6YXRpb24gKEJZIFJBTkdFIHBhcnRpdGlvbmluZyk6IGlmIG9u ZSBvZiB0aGUgbmV3CistLSBwYXJ0aXRpb25zIGNvbnRhaW5zIGFsbCB0aGUgcm93cyBvZiB0 aGUgc3BsaXQgcGFydGl0aW9uLCB0aGVuIHdlIGNhbiByZW5hbWUKKy0tIHRoZSBzcGxpdCBw YXJ0aXRpb24gaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBwYXJ0aXRpb24gYW5kIG1vdmlu ZyB0aGUgcm93cy4KKy0tCistLSAxLiBPcHRpbWl6YXRpb24gc2hvdWxkIGJlIHVzZWQuCist LQorQ1JFQVRFIFRBQkxFIHRlc3QobmFtZSB0ZXh0LCBpIGludCkgUEFSVElUSU9OIEJZIFJB TkdFIChpKTsKK0NSRUFURSBUQUJMRSB0ZXN0XzEgUEFSVElUSU9OIE9GIHRlc3QgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHRlc3RfZGVmIFBBUlRJVElP TiBPRiB0ZXN0IERFRkFVTFQ7CitDUkVBVEUgSU5ERVggaWR4X3Rlc3RfaSBPTiB0ZXN0KGkp OworSU5TRVJUIElOVE8gdGVzdChuYW1lLCBpKSBWQUxVRVMKKyAgKCdhMScsIDEpLCAoJ2E1 JywgNSksICgnYTE1JywgMTUpLCAoJ2ExMicsIDEyKSwgKCdhMTcnLCAxNyksICgnYTExJywg MTEpOworLS0gc2hvdWxkIGJlIHJvd3MgMTUsIDEyLCAxNywgMTE6CitTRUxFQ1QgaSBGUk9N IHRlc3RfZGVmOworU0VMRUNUICd0ZXN0X2RlZic6OnJlZ2NsYXNzOjpvaWQgQVMgcHJldl9v aWQgXGdzZXQKK0FMVEVSIFRBQkxFIHRlc3QgU1BMSVQgUEFSVElUSU9OIHRlc3RfZGVmIElO VE8gCisgIChQQVJUSVRJT04gdGVzdF9kZWYgREVGQVVMVCwgUEFSVElUSU9OIHRlc3RfMiBG T1IgVkFMVUVTIEZST00gKDExKSBUTyAoMTkpKTsKKy0tIHNob3VsZCBiZSAndCcgKHRhYmxl ICJ0ZXN0XzIiIGFmdGVyIFNQTElUIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0YWJsZQorLS0g InRlc3RfZGVmIiBiZWZvcmUgU1BMSVQpOgorU0VMRUNUICd0ZXN0XzInOjpyZWdjbGFzczo6 b2lkPTpwcmV2X29pZDsKKy0tIHNob3VsZCBiZSByb3dzIDE1LCAxMiwgMTcsIDExOgorU0VM RUNUIGkgRlJPTSB0ZXN0XzI7CistLSBzaG91bGQgYmUgMCByb3dzOgorU0VMRUNUIGkgRlJP TSB0ZXN0X2RlZjsKKy0tIHNob3VsZCBiZSA2IHJvd3M6CitTRUxFQ1QgKiBGUk9NIHRlc3Q7 CitEUk9QIFRBQkxFIHRlc3QgQ0FTQ0FERTsKKy0tCistLSAyLiBPcHRpbWl6YXRpb24gY2Fu bm90IGJlIHVzZWQgYmVjYXVzZSBub3QgZXhpc3RzIGJ0cmVlLWluZGV4IG9uIHRoZQorLS0g cGFydGl0aW9uIGtleSAoaXQgaXMgdXNlZCB0byBjaGVjayB0aGUgcGxhY2VtZW50IG9mIHJv d3MgaW4gdGhlIHBhcnRpdGlvbnMpLgorLS0KK0NSRUFURSBUQUJMRSB0ZXN0KG5hbWUgdGV4 dCwgaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdGVzdF8x IFBBUlRJVElPTiBPRiB0ZXN0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFU RSBUQUJMRSB0ZXN0X2RlZiBQQVJUSVRJT04gT0YgdGVzdCBERUZBVUxUOworSU5TRVJUIElO VE8gdGVzdChuYW1lLCBpKSBWQUxVRVMKKyAgKCdhMScsIDEpLCAoJ2E1JywgNSksICgnYTE1 JywgMTUpLCAoJ2ExMicsIDEyKSwgKCdhMTcnLCAxNyksICgnYTExJywgMTEpOworU0VMRUNU ICd0ZXN0X2RlZic6OnJlZ2NsYXNzOjpvaWQgQVMgcHJldl9vaWQgXGdzZXQKK0FMVEVSIFRB QkxFIHRlc3QgU1BMSVQgUEFSVElUSU9OIHRlc3RfZGVmIElOVE8gCisgIChQQVJUSVRJT04g dGVzdF9kZWYgREVGQVVMVCwgUEFSVElUSU9OIHRlc3RfMiBGT1IgVkFMVUVTIEZST00gKDEx KSBUTyAoMTkpKTsKKy0tIHNob3VsZCBiZSAnZicgKHRhYmxlcyAidGVzdF8yIiBhbmQgInRl c3RfZGVmIiBzaG91bGQgYmUgZGlmZmVyZW50KToKK1NFTEVDVCAndGVzdF8yJzo6cmVnY2xh c3M6Om9pZD06cHJldl9vaWQ7CistLSBzaG91bGQgYmUgcm93cyAxNSwgMTIsIDE3LCAxMToK K1NFTEVDVCBpIEZST00gdGVzdF8yOworLS0gc2hvdWxkIGJlIDYgcm93czoKK1NFTEVDVCAq IEZST00gdGVzdDsKK0RST1AgVEFCTEUgdGVzdCBDQVNDQURFOworLS0KKy0tIDMuIE9wdGlt aXphdGlvbiBjYW5ub3QgYmUgdXNlZCBiZWNhdXNlIHJvd3Mgc2hvdWxkIGJlIG1vdmVkIGlu dG8gZGlmZmVyZW50CistLSBwYXJ0aXRpb25zLgorLS0KK0NSRUFURSBUQUJMRSB0ZXN0KG5h bWUgdGV4dCwgaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUg dGVzdF8xIFBBUlRJVElPTiBPRiB0ZXN0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsK K0NSRUFURSBUQUJMRSB0ZXN0X2RlZiBQQVJUSVRJT04gT0YgdGVzdCBERUZBVUxUOworQ1JF QVRFIElOREVYIGlkeF90ZXN0X2kgT04gdGVzdChpKTsKK0lOU0VSVCBJTlRPIHRlc3QobmFt ZSwgaSkgVkFMVUVTCisgICgnYTEnLCAxKSwgKCdhNScsIDUpLCAoJ2ExNScsIDE1KSwgKCdh MTInLCAxMiksICgnYTI3JywgMjcpLCAoJ2ExMScsIDExKTsKK1NFTEVDVCAndGVzdF9kZWYn OjpyZWdjbGFzczo6b2lkIEFTIHByZXZfb2lkIFxnc2V0CitBTFRFUiBUQUJMRSB0ZXN0IFNQ TElUIFBBUlRJVElPTiB0ZXN0X2RlZiBJTlRPIAorICAoUEFSVElUSU9OIHRlc3RfZGVmIERF RkFVTFQsIFBBUlRJVElPTiB0ZXN0XzIgRk9SIFZBTFVFUyBGUk9NICgxMSkgVE8gKDE5KSk7 CistLSBzaG91bGQgYmUgJ2YnICh0YWJsZXMgInRlc3RfMiIgYW5kICJ0ZXN0X2RlZiIgc2hv dWxkIGJlIGRpZmZlcmVudCk6CitTRUxFQ1QgJ3Rlc3RfMic6OnJlZ2NsYXNzOjpvaWQ9OnBy ZXZfb2lkOworLS0gc2hvdWxkIGJlIHJvd3MgMTUsIDEyLCAxMToKK1NFTEVDVCBpIEZST00g dGVzdF8yOworLS0gc2hvdWxkIGJlIDYgcm93czoKK1NFTEVDVCAqIEZST00gdGVzdDsKK0RS T1AgVEFCTEUgdGVzdCBDQVNDQURFOworLS0KKy0tIDQuIE9wdGltaXphdGlvbiBzaG91bGQg YmUgdXNlZCwgREVGQVVUIHBhcnRpdGlvbiByZW5hbWVzIHRvIERFRkFVTFQKKy0tIHBhcnRp dGlvbi4KKy0tCitDUkVBVEUgVEFCTEUgdGVzdChuYW1lIHRleHQsIGkgaW50KSBQQVJUSVRJ T04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRlc3RfMSBQQVJUSVRJT04gT0YgdGVz dCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgdGVzdF9kZWYg UEFSVElUSU9OIE9GIHRlc3QgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBpZHhfdGVzdF9pIE9O IHRlc3QoaSk7CitJTlNFUlQgSU5UTyB0ZXN0KG5hbWUsIGkpIFZBTFVFUworICAoJ2ExJywg MSksICgnYTUnLCA1KSwgKCdhMjUnLCAyNSksICgnYTIyJywgMjIpLCAoJ2EyNycsIDI3KSwg KCdhMjEnLCAyMSk7CistLSBzaG91bGQgYmUgcm93cyAyNSwgMjIsIDI3LCAyMToKK1NFTEVD VCBpIEZST00gdGVzdF9kZWY7CitTRUxFQ1QgJ3Rlc3RfZGVmJzo6cmVnY2xhc3M6Om9pZCBB UyBwcmV2X29pZCBcZ3NldAorQUxURVIgVEFCTEUgdGVzdCBTUExJVCBQQVJUSVRJT04gdGVz dF9kZWYgSU5UTyAKKyAgKFBBUlRJVElPTiB0ZXN0X2RlZiBERUZBVUxULCBQQVJUSVRJT04g dGVzdF8yIEZPUiBWQUxVRVMgRlJPTSAoMTEpIFRPICgxOSkpOworLS0gc2hvdWxkIGJlICd0 JyAodGFibGUgInRlc3RfZGVmIiBhZnRlciBTUExJVCBzaG91bGQgYmUgdGhlIHNhbWUgYXMg dGFibGUKKy0tICJ0ZXN0X2RlZiIgYmVmb3JlIFNQTElUKToKK1NFTEVDVCAndGVzdF9kZWYn OjpyZWdjbGFzczo6b2lkPTpwcmV2X29pZDsKKy0tIHNob3VsZCBiZSAwIHJvd3M6CitTRUxF Q1QgaSBGUk9NIHRlc3RfMjsKKy0tIHNob3VsZCBiZSByb3dzIDI1LCAyMiwgMjcsIDIxOgor U0VMRUNUIGkgRlJPTSB0ZXN0X2RlZjsKKy0tIHNob3VsZCBiZSA2IHJvd3M6CitTRUxFQ1Qg KiBGUk9NIHRlc3Q7CitEUk9QIFRBQkxFIHRlc3QgQ0FTQ0FERTsKKy0tCistLSA1LiBPcHRp bWl6YXRpb24gc2hvdWxkIGJlIHVzZWQsIDItY29sdW1uIHBhcnRpdGlvbiBrZXkgKyBkaWZm ZXJlbnQgY29sdW1ucworLS0gb3JkZXIgaW4gcGFydGl0aW9ucy4KKy0tCitDUkVBVEUgVEFC TEUgdGVzdF8yY29sa2V5KHMgc21hbGxpbnQsIGIgYmlnaW50LCB0IHRleHQpIFBBUlRJVElP TiBCWSBSQU5HRSAoYiwgcyk7CitDUkVBVEUgVEFCTEUgdGVzdF8yY29sa2V5XzEgUEFSVElU SU9OIE9GIHRlc3RfMmNvbGtleSBGT1IgVkFMVUVTIEZST00gKDEwMDAwMDAwMDEsIDEpIFRP ICgxMDAwMDAwMTAwLCAxMDApOworQ1JFQVRFIFRBQkxFIHRlc3RfMmNvbGtleV9kZWYoaSBp bnQsIGIgYmlnaW50LCBzIHNtYWxsaW50LCB0IHRleHQpOworQUxURVIgVEFCTEUgdGVzdF8y Y29sa2V5X2RlZiBEUk9QIENPTFVNTiBpOworQUxURVIgVEFCTEUgdGVzdF8yY29sa2V5IEFU VEFDSCBQQVJUSVRJT04gdGVzdF8yY29sa2V5X2RlZiBERUZBVUxUOworQ1JFQVRFIElOREVY IGlkeF90ZXN0XzJjb2xrZXlfc19iIE9OIHRlc3RfMmNvbGtleShiLCBzKTsKKworSU5TRVJU IElOVE8gdGVzdF8yY29sa2V5IChiLCBzLCB0KSBWQUxVRVMgKDEwMDAwMDAwMTAsIDMsICd2 YWx1ZV8xMF8zJyk7CitJTlNFUlQgSU5UTyB0ZXN0XzJjb2xrZXkgKGIsIHMsIHQpIFZBTFVF UyAoMTAwMDAwMDEyMCwgNCwgJ3ZhbHVlXzEyMF80Jyk7CitJTlNFUlQgSU5UTyB0ZXN0XzJj b2xrZXkgKGIsIHMsIHQpIFZBTFVFUyAoMTAwMDAwMDAwMywgNSwgJ3ZhbHVlXzNfNScpOwor SU5TRVJUIElOVE8gdGVzdF8yY29sa2V5IChiLCBzLCB0KSBWQUxVRVMgKDEwMDAwMDAxMjQs IDIsICd2YWx1ZV8xMjRfMicpOworCistLSBzaG91bGQgYmUgNCByb3dzOgorU0VMRUNUIGIs IHMgRlJPTSB0ZXN0XzJjb2xrZXk7CistLSBzaG91bGQgYmUgMiByb3dzOgorU0VMRUNUIGIs IHMgRlJPTSB0ZXN0XzJjb2xrZXlfZGVmOworCitTRUxFQ1QgJ3Rlc3RfMmNvbGtleV9kZWYn OjpyZWdjbGFzczo6b2lkIEFTIHByZXZfb2lkIFxnc2V0CisKK0FMVEVSIFRBQkxFIHRlc3Rf MmNvbGtleSBTUExJVCBQQVJUSVRJT04gdGVzdF8yY29sa2V5X2RlZiBJTlRPCisgIChQQVJU SVRJT04gdGVzdF8yY29sa2V5XzIgRk9SIFZBTFVFUyBGUk9NICgxMDAwMDAwMTAxLCAxKSBU TyAoMTAwMDAwMDIwMCwgMTAwKSwKKyAgIFBBUlRJVElPTiB0ZXN0XzJjb2xrZXlfZGVmIERF RkFVTFQpOworCistLSBzaG91bGQgYmUgJ3QnICh0YWJsZSAidGVzdF8yY29sa2V5XzIiIGFm dGVyIFNQTElUIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0YWJsZQorLS0gInRlc3RfMmNvbGtl eV9kZWYiIGJlZm9yZSBTUExJVCk6CitTRUxFQ1QgJ3Rlc3RfMmNvbGtleV8yJzo6cmVnY2xh c3M6Om9pZD06cHJldl9vaWQ7CisKKy0tIHNob3VsZCBiZSAyIHJvd3M6CitTRUxFQ1QgYiwg cyBGUk9NIHRlc3RfMmNvbGtleV8yOworLS0gc2hvdWxkIGJlIDAgcm93czoKK1NFTEVDVCBi LCBzIEZST00gdGVzdF8yY29sa2V5X2RlZjsKKy0tIHNob3VsZCBiZSA2IHJvd3M6CitTRUxF Q1QgYiwgcyBGUk9NIHRlc3RfMmNvbGtleTsKKworLS0KKy0tIDUuMS4gT3B0aW1pemF0aW9u IGNhbm5vdCBiZSB1c2VkLgorLS0KK0lOU0VSVCBJTlRPIHRlc3RfMmNvbGtleSAoYiwgcywg dCkgVkFMVUVTICgxMDAwMDAwMjAwLCAxLCAndmFsdWVfMjAwXzEnKTsKKworU0VMRUNUICd0 ZXN0XzJjb2xrZXlfMic6OnJlZ2NsYXNzOjpvaWQgQVMgcHJldl9vaWQgXGdzZXQKKworQUxU RVIgVEFCTEUgdGVzdF8yY29sa2V5IFNQTElUIFBBUlRJVElPTiB0ZXN0XzJjb2xrZXlfMiBJ TlRPCisgIChQQVJUSVRJT04gdGVzdF8yY29sa2V5XzIgRk9SIFZBTFVFUyBGUk9NICgxMDAw MDAwMTAxLCAxKSBUTyAoMTAwMDAwMDE1MCwgMTAwKSwKKyAgIFBBUlRJVElPTiB0ZXN0XzJj b2xrZXlfMyBGT1IgVkFMVUVTIEZST00gKDEwMDAwMDAxNTEsIDEpIFRPICgxMDAwMDAwMjAw LCAxMDApKTsKKworLS0gc2hvdWxkIGJlICdmJyAob3B0aW1pemF0aW9uIGlzIG5vdCB1c2Vk KToKK1NFTEVDVCAndGVzdF8yY29sa2V5XzInOjpyZWdjbGFzczo6b2lkPTpwcmV2X29pZDsK KworLS0gc2hvdWxkIGJlIDIgcm93czoKK1NFTEVDVCBiLCBzIEZST00gdGVzdF8yY29sa2V5 XzI7CistLSBzaG91bGQgYmUgMSByb3c6CitTRUxFQ1QgYiwgcyBGUk9NIHRlc3RfMmNvbGtl eV8zOworCitEUk9QIFRBQkxFIHRlc3RfMmNvbGtleSBDQVNDQURFOworCiAtLQogRFJPUCBT Q0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKLS0gCjIuNDAuMS53aW5kb3dzLjEKCg== --------------qPCFY1O0qWf5I3CUtLJ0EaAv--