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.98.2) (envelope-from ) id 1x91xp-00000001hi2-2rNi for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Sep 2026 14:59:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1x91xo-0000000GfVV-3ivn for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Sep 2026 14:59:20 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1x91xo-0000000GfVL-0646 for pgsql-hackers@lists.postgresql.org; Tue, 22 Sep 2026 14:59:20 +0000 Received: from mail-ej2-x10.google.com ([2a00:1450:4864:34::10]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1x91xh-00000000gc7-3mT0 for pgsql-hackers@lists.postgresql.org; Tue, 22 Sep 2026 14:59:19 +0000 Received: by mail-ej2-x10.google.com with SMTP id a640c23a62f3a-c254f55efebso632852566b.1 for ; Tue, 22 Sep 2026 07:59:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=planetscale.com; s=google; t=1790089152; x=1790693952; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:content-type:from:to:cc :subject:date:message-id:reply-to:content-type; bh=eK7C9GNWoFkLFwV/zmxZMW22zzd1WI5O6fzk3NjOreA=; b=ekNmeRoQ3N4GlSGgffXwjCyRfbBHcjaOBUHsvhNttWbxjD/YJorIkT3zZJiiOXLD9D bmTdbSEV5fPqpGC6gOE/eVGBS0n4gCziWHxC3s92iCUv81WNwQoh8yNDlp7GMjrYH5Q0 scgFDa4mkZO0+nlz9QQ5G72LJmTAxy7tGVDw9/CNq/E9fd/FP4uTqzjsJyWT+SDbWZn8 vkmwqiruMH/dH3raBLL5/qkGUxHGgj/+CZQcc9VT9NAUcvaYA6Yy6Zms8wwbzUhRPq3q /YiLC+mVAbUy8NRMSqPyG0gwGjuS1WYNVifKDnoRdJwOV9dfyPxuZD98RLVZHxLvtr50 h4og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790089152; x=1790693952; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:content-type:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=eK7C9GNWoFkLFwV/zmxZMW22zzd1WI5O6fzk3NjOreA=; b=FxHAXQhnHcJEC37fNagu9KWDTyI4YZrh/DMrStyEyJVetI9Jpf2JT3ZlSAQTDQDVKO OKA+D2JaW/xQmO9+5F/Dgt/sceVPndl/Ar7ThrdqMPFpCSZuJztkJ+eYz8SwhEHtubNI 8r7VK7pkTriD7+amdRe3FWb+cOG4rcebmd/qDHg0zWqAH5YUPbDTKaNiIZVAY1pzkRyA Fk1T8OIdRBnOm+lBuB0pugCq2LKyOohRu76uGbBr8a2CdIMR2+VEsqt38AoRd7NMpa+Q qOzRHPAZVr0Y6fxo5bn68LEyh8r2AXMvna9oNkbN0ldw05NNzjpDhvLUAriUJBxrtjC2 uj3A== X-Gm-Message-State: AFuF++mnxShRkKXt4ik4rd2a3YGn5ChRNlITdUGF2LBH4PJ/k4sVG4EJ ycdUtAh+ApBtJGLH1R/MFRtWUOOuezNdQPxlOVggmacLLoIQWgiu2ZoGy+qdxJ9CfvE= X-Gm-Gg: AYBFou1BylUKWoCP7AbeSogRziqXbAQn+tJNfVvOMslpLXirwNgHVBQRS423BNjfnm/ zoBWSgjhBM4uBAPqFDqPo+m3uCRiSKwMFEXGRI3FrCOFUoEI+xyUZ9FbIEYlX/OlUwFTRJMjVd+ s/SXUP2KPHJ1dcSwMfcXwqjA7Jcw8SEq77wH0yyV7QJfy2zNzablR7n+C68N1RQ8eu+EwJWsurk DTGLaCgUxe+tZKBxRI8MzVhWDM2LtNg4nzdJA1xCgRCzqw6S450NXZ9hZqSpFrY8W9/L3VOiMIH 5XxVFpfHu3WNNV3PstuEyMq4FsEh2RR0MHpYbC2Gplw34XtT00VUn66CZGWM5Rr8MPKHJR4HDRs /w+fukWdoXS+qRDoBTFyAMroUrZbb2qxt2Oa6xvGU27Ds2hxv/VuMIfEhYsU+A2JcZTHlR2cP5S DhA9eww5rY7vYBHcjrXB4uX1f6FGubzLuo8r7EPXbFrhtzZd1mWVVh4iiJ1S6GOJyaWVi34Y5sE nbBgWdEydqXHYR7z5VKzMlf06ZlPhNtgShgCzozYMoXXvZ4jK5c10vXa0nP8S1i1pmVmiE= X-Received: by 2002:a17:907:960d:b0:c26:1691:b36d with SMTP id a640c23a62f3a-c2a157fc6demr1245327766b.38.1790089151672; Tue, 22 Sep 2026 07:59:11 -0700 (PDT) Received: from ?IPV6:2a04:4540:6532:f800:e0df:c56a:6b7a:17fd? ([2a04:4540:6532:f800:e0df:c56a:6b7a:17fd]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2a9c42f6adsm114342566b.8.2026.09.22.07.59.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 22 Sep 2026 07:59:10 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------l30iKBcwkMIG01LOSXWL06wF" Message-ID: <3f6db46e-3175-40de-9001-ccde3a8b05f2@planetscale.com> Date: Tue, 22 Sep 2026 16:59:10 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Prevent object capture in CREATE/ALTER EXTENSION scripts To: solai v , Osama Abdul Qader Cc: PostgreSQL Hackers References: <28f66580-5d6b-4997-95f6-7d9e7917c585@planetscale.com> <540de298-2daa-4c24-b957-a834c3d17a9c@planetscale.com> Content-Language: en-GB From: Jan Nidzwetzki In-Reply-To: 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. --------------l30iKBcwkMIG01LOSXWL06wF Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi solai, On 22.09.26 06:13, solai v wrote: [...] > Overall, the patch worked as expected in my testing. The extension > script now selects the trusted candidate instead of the attacker-owned > candidate when both overloads are present. Thank you so much for the review. While testing the patch further, I found a gap with schema-qualified names. In v1, the trust check for relations and types was applied only when the script used an unqualified name and the lookup went through RelnameGetRelid() or TypenameGetTypidExtended(). A reference such as @extschema@.foo took the qualified branch of RangeVarGetRelidExtended() or LookupTypeNameExtended() and was not checked at all. Functions and operators were not affected, since their candidate lookup handles both versions in one place. v2 adds the check to those two branches, so an untrusted match is treated as nonexistent there too. I also added tests for this case; I slightly adjusted the commit message and rebased the patch set against master. Best regards Jan -- Jan Nidzwetzki PlanetScale Postgres Core Team --------------l30iKBcwkMIG01LOSXWL06wF Content-Type: text/plain; charset=UTF-8; name="v2-0001-Propagate-extension-script-state-to-parallel-work.patch" Content-Disposition: attachment; filename*0="v2-0001-Propagate-extension-script-state-to-parallel-work.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlMzcwOWRmNTA2ZWMwYTJkMThjNjM5MGM0ZmJhMjcyMzYzMTM3NGQwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKYW4gTmlkendldHpraSA8amFuQHBsYW5ldHNjYWxl LmNvbT4KRGF0ZTogV2VkLCA1IEF1ZyAyMDI2IDE1OjIxOjA5ICswMjAwClN1YmplY3Q6IFtQ QVRDSCB2MiAxLzJdIFByb3BhZ2F0ZSBleHRlbnNpb24tc2NyaXB0IHN0YXRlIHRvIHBhcmFs bGVsIHdvcmtlcnMKCmNyZWF0aW5nX2V4dGVuc2lvbiBhbmQgQ3VycmVudEV4dGVuc2lvbk9i amVjdCBhcmUgYmFja2VuZC1sb2NhbCwgc28gYQpwYXJhbGxlbCB3b3JrZXIgZG9pbmcgd29y ayBmb3IgYSBDUkVBVEUvQUxURVIgRVhURU5TSU9OIHNjcmlwdCAoZm9yCmV4YW1wbGUsIGV4 ZWN1dGluZyBhIHBhcmFsbGVsLXNhZmUgZnVuY3Rpb24ncyBib2R5KSBiZWhhdmVkIGFzIHRo b3VnaCBubwpzY3JpcHQgd2VyZSBpbiBwcm9ncmVzcy4KCk5vIHZpc2libGUgZWZmZWN0IG9u IGl0cyBvd247IHByZXBhcmF0aW9uIGZvciB0aGUgZm9sbG93aW5nIGNvbW1pdC4KCkF1dGhv cjogSmFuIE5pZHp3ZXR6a2kgPGphbkBwbGFuZXRzY2FsZS5jb20+ClJldmlld2VkLWJ5OiBP c2FtYSBBYmR1bCBRYWRlciA8b3NhbWFhYmR1bHFhZGVyLmNzQGdtYWlsLmNvbT4KUmV2aWV3 ZWQtYnk6IHNvbGFpIHYgPHNvbGFpLmNkYWNAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tLzI4ZjY2NTgwLTVkNmItNDk5Ny05NWY2LTdkOWU3OTE3YzU4NUBw bGFuZXRzY2FsZS5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxl bC5jIHwgIDkgKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAg ICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9jb21tYW5k cy9leHRlbnNpb24uaCAgICAgIHwgIDMgKysrCiAzIGZpbGVzIGNoYW5nZWQsIDM2IGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJh bGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCBl MTgwNmE5YTI4YS4uNmVmYTY1NmQzOTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v cGFyYWxsZWwuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfZW51 bS5oIgogI2luY2x1ZGUgImNhdGFsb2cvc3RvcmFnZS5oIgogI2luY2x1ZGUgImNvbW1hbmRz L2FzeW5jLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmgi CiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKQEAgLTkwLDkgKzkxLDExIEBAIHR5cGVkZWYg c3RydWN0IEZpeGVkUGFyYWxsZWxTdGF0ZQogCU9pZAkJCWN1cnJlbnRfdXNlcl9pZDsKIAlP aWQJCQl0ZW1wX25hbWVzcGFjZV9pZDsKIAlPaWQJCQl0ZW1wX3RvYXN0X25hbWVzcGFjZV9p ZDsKKwlPaWQJCQljdXJyZW50X2V4dGVuc2lvbl9vYmplY3Q7CiAJaW50CQkJc2VjX2NvbnRl eHQ7CiAJYm9vbAkJc2Vzc2lvbl91c2VyX2lzX3N1cGVydXNlcjsKIAlib29sCQlyb2xlX2lz X3N1cGVydXNlcjsKKwlib29sCQljcmVhdGluZ19leHRlbnNpb247CiAJUEdQUk9DCSAgICpw YXJhbGxlbF9sZWFkZXJfcGdwcm9jOwogCXBpZF90CQlwYXJhbGxlbF9sZWFkZXJfcGlkOwog CVByb2NOdW1iZXIJcGFyYWxsZWxfbGVhZGVyX3Byb2NfbnVtYmVyOwpAQCAtMzQ4LDYgKzM1 MSw4IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJ ZnBzLT5yb2xlX2lzX3N1cGVydXNlciA9IGN1cnJlbnRfcm9sZV9pc19zdXBlcnVzZXI7CiAJ R2V0VGVtcE5hbWVzcGFjZVN0YXRlKCZmcHMtPnRlbXBfbmFtZXNwYWNlX2lkLAogCQkJCQkJ ICAmZnBzLT50ZW1wX3RvYXN0X25hbWVzcGFjZV9pZCk7CisJR2V0RXh0ZW5zaW9uQ3JlYXRp b25TdGF0ZSgmZnBzLT5jcmVhdGluZ19leHRlbnNpb24sCisJCQkJCQkJICAmZnBzLT5jdXJy ZW50X2V4dGVuc2lvbl9vYmplY3QpOwogCWZwcy0+cGFyYWxsZWxfbGVhZGVyX3BncHJvYyA9 IE15UHJvYzsKIAlmcHMtPnBhcmFsbGVsX2xlYWRlcl9waWQgPSBNeVByb2NQaWQ7CiAJZnBz LT5wYXJhbGxlbF9sZWFkZXJfcHJvY19udW1iZXIgPSBNeVByb2NOdW1iZXI7CkBAIC0xNTM0 LDYgKzE1MzksMTAgQEAgUGFyYWxsZWxXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCVNl dFRlbXBOYW1lc3BhY2VTdGF0ZShmcHMtPnRlbXBfbmFtZXNwYWNlX2lkLAogCQkJCQkJICBm cHMtPnRlbXBfdG9hc3RfbmFtZXNwYWNlX2lkKTsKIAorCS8qIFJlc3RvcmUgZXh0ZW5zaW9u LXNjcmlwdCBzdGF0ZSwgc28gdGhlIHdvcmtlciBtYXRjaGVzIHRoZSBsZWFkZXIuICovCisJ U2V0RXh0ZW5zaW9uQ3JlYXRpb25TdGF0ZShmcHMtPmNyZWF0aW5nX2V4dGVuc2lvbiwKKwkJ CQkJCQkgIGZwcy0+Y3VycmVudF9leHRlbnNpb25fb2JqZWN0KTsKKwogCS8qIFJlc3RvcmUg dW5jb21taXR0ZWQgZW51bXMuICovCiAJdW5jb21taXR0ZWRlbnVtc3NwYWNlID0gc2htX3Rv Y19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfVU5DT01NSVRURURFTlVNUywKIAkJCQkJCQkJ CQkgICBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNp b24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IDU4NTU2Njhj NWNhLi5mOGY2YjE3OTYzMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTE1 MDksNiArMTUwOSwzMCBAQCBleGVjdXRlX2V4dGVuc2lvbl9zY3JpcHQoT2lkIGV4dGVuc2lv bk9pZCwgRXh0ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wsCiAJCVNldFVzZXJJZEFuZFNl Y0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOwogfQogCisvKgorICog R2V0RXh0ZW5zaW9uQ3JlYXRpb25TdGF0ZSAtIHJlcG9ydCB0aGUgY3VycmVudCBleHRlbnNp b24tc2NyaXB0IHN0YXRlCisgKgorICogVXNlZCBieSB0aGUgcGFyYWxsZWwtcXVlcnkgbWFj aGluZXJ5IHRvIGNhcnJ5IGNyZWF0aW5nX2V4dGVuc2lvbiBhbmQKKyAqIEN1cnJlbnRFeHRl bnNpb25PYmplY3QgdG8gd29ya2Vycywgc28gYSB3b3JrZXIgc2VlcyB0aGUgc2FtZQorICog ZXh0ZW5zaW9uLXNjcmlwdCBzdGF0ZSBhcyB0aGUgbGVhZGVyLgorICovCit2b2lkCitHZXRF eHRlbnNpb25DcmVhdGlvblN0YXRlKGJvb2wgKmNyZWF0aW5nLCBPaWQgKmV4dGVuc2lvbk9i amVjdCkKK3sKKwkqY3JlYXRpbmcgPSBjcmVhdGluZ19leHRlbnNpb247CisJKmV4dGVuc2lv bk9iamVjdCA9IEN1cnJlbnRFeHRlbnNpb25PYmplY3Q7Cit9CisKKy8qCisgKiBTZXRFeHRl bnNpb25DcmVhdGlvblN0YXRlIC0gcmVzdG9yZSBleHRlbnNpb24tc2NyaXB0IHN0YXRlIGlu IGEgd29ya2VyCisgKi8KK3ZvaWQKK1NldEV4dGVuc2lvbkNyZWF0aW9uU3RhdGUoYm9vbCBj cmVhdGluZywgT2lkIGV4dGVuc2lvbk9iamVjdCkKK3sKKwljcmVhdGluZ19leHRlbnNpb24g PSBjcmVhdGluZzsKKwlDdXJyZW50RXh0ZW5zaW9uT2JqZWN0ID0gZXh0ZW5zaW9uT2JqZWN0 OworfQorCiAvKgogICogRmluZCBvciBjcmVhdGUgYW4gRXh0ZW5zaW9uVmVyc2lvbkluZm8g Zm9yIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBuYW1lCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHRl bnNpb24uaAppbmRleCA3YTc2YmRlYmNmYS4uOGVhZWMyZDRmNjggMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2V4dGVuc2lvbi5oCkBAIC0zMiw2ICszMiw5IEBAIGV4dGVybiBQR0RMTElNUE9SVCBj aGFyICpFeHRlbnNpb25fY29udHJvbF9wYXRoOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wg Y3JlYXRpbmdfZXh0ZW5zaW9uOwogZXh0ZXJuIFBHRExMSU1QT1JUIE9pZCBDdXJyZW50RXh0 ZW5zaW9uT2JqZWN0OwogCitleHRlcm4gdm9pZCBHZXRFeHRlbnNpb25DcmVhdGlvblN0YXRl KGJvb2wgKmNyZWF0aW5nLCBPaWQgKmV4dGVuc2lvbk9iamVjdCk7CitleHRlcm4gdm9pZCBT ZXRFeHRlbnNpb25DcmVhdGlvblN0YXRlKGJvb2wgY3JlYXRpbmcsIE9pZCBleHRlbnNpb25P YmplY3QpOworCiAKIGV4dGVybiBPYmplY3RBZGRyZXNzIENyZWF0ZUV4dGVuc2lvbihQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZUV4dGVuc2lvblN0bXQgKnN0bXQpOwogCi0tIAoyLjQ3 LjMKCg== --------------l30iKBcwkMIG01LOSXWL06wF Content-Type: text/plain; charset=UTF-8; name="v2-0002-Prefer-trusted-candidates-when-resolving-names-in.patch" Content-Disposition: attachment; filename*0="v2-0002-Prefer-trusted-candidates-when-resolving-names-in.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzYmZjMjZkZGYyNWE2ZWJhNmZkOWVmM2Y2ZDZjYWY2ZWVhZTI4ODRlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKYW4gTmlkendldHpraSA8amFuQHBsYW5ldHNjYWxl LmNvbT4KRGF0ZTogV2VkLCA1IEF1ZyAyMDI2IDE1OjIxOjA5ICswMjAwClN1YmplY3Q6IFtQ QVRDSCB2MiAyLzJdIFByZWZlciB0cnVzdGVkIGNhbmRpZGF0ZXMgd2hlbiByZXNvbHZpbmcg bmFtZXMgaW4KIGV4dGVuc2lvbiBzY3JpcHRzCgpBbiBleHRlbnNpb24gc2NyaXB0IHJ1bnMg d2l0aCBzdXBlcnVzZXIgcHJpdmlsZWdlcywgc28gYSB1c2VyIHdobyBjYW4KY3JlYXRlIG9i amVjdHMgaW4gdGhlIGV4dGVuc2lvbidzIHNjaGVtYSBjYW4gcGxhbnQgb25lIHRoYXQgY2Fw dHVyZXMgYQpyZWZlcmVuY2UgdGhlIHNjcmlwdCBtYWtlcywgZih0ZXh0KSBiZXNpZGUgdGhl IGV4dGVuc2lvbidzIGYodmFyY2hhcikKb3IgYSBkb21haW4gc2hhZG93aW5nIGEgcmVxdWly ZWQgZXh0ZW5zaW9uJ3MsIGFuZCBydW4gY29kZSB3aXRoIHRob3NlCnByaXZpbGVnZXMuICBO ZWl0aGVyIHBpbm5pbmcgc2VhcmNoX3BhdGggbm9yIHdyaXRpbmcgQGV4dHNjaGVtYUAuZgpo ZWxwczogdGhlIHBsYW50IGlzIGluIHRoZSBzY3JpcHQncyBvd24gc2NoZW1hLCBzbyBhIHF1 YWxpZmllZCBuYW1lCnJlYWNoZXMgaXQganVzdCBhcyBhIHNlYXJjaF9wYXRoIGxvb2t1cCBk b2VzLgoKSWdub3JlIHVudHJ1c3RlZCBvYmplY3RzIHdoaWxlIGEgc2NyaXB0IHJ1bnMuICBU cnVzdGVkIG1lYW5zIGluCnBnX2NhdGFsb2csIG93bmVkIGJ5IGEgc3VwZXJ1c2VyLCBvd25l ZCBieSB0aGUgcm9sZSBydW5uaW5nIHRoZSBzY3JpcHQsCm9yIGEgbWVtYmVyIG9mIHRoZSBl eHRlbnNpb24gYmVpbmcgaW5zdGFsbGVkIG9yIG9mIG9uZSBpdCByZXF1aXJlcy4gIFRoZQpy ZWxhdGlvbiwgdHlwZSwgZnVuY3Rpb24gYW5kIG9wZXJhdG9yIGxvb2t1cHMgYWxsIGFwcGx5 IHRoZSB0ZXN0LCBmb3IKc2NoZW1hLXF1YWxpZmllZCBuYW1lcyBhcyB3ZWxsIGFzIG5hbWVz IHJlc29sdmVkIHRocm91Z2ggc2VhcmNoX3BhdGg7CnRoZSBsYXN0IHR3byBhcHBseSBpdCBh cyB0aGV5IGdhdGhlciBjYW5kaWRhdGVzIHNvIGEgcGxhbnQgY2Fubm90CmRpc3BsYWNlIGEg dHJ1c3RlZCBtYXRjaCBieSBzZWFyY2gtcGF0aCBwb3NpdGlvbi4gIFJlc29sdXRpb24gb3Ro ZXJ3aXNlCmZhaWxzIGFzIGlmIHRoZSBvYmplY3QgZGlkIG5vdCBleGlzdCwgd2l0aCBhIGRl dGFpbCBzYXlpbmcgd2h5LiAgQ2FjaGVkCnBsYW5zIHJlY29yZCB3aGV0aGVyIHRoZXkgd2Vy ZSBhbmFseXplZCBpbnNpZGUgYSBzY3JpcHQsIHNpbmNlIGEKc2NyaXB0J3Mgc2VhcmNoX3Bh dGggY2FuIG1hdGNoIG9uZSB0aGUgc2Vzc2lvbiBhbHJlYWR5IGhhZC4KClJlcG9ydGVkLWJ5 OiBNZWhtZXQgSW5jZSAoQG1kaXNlYykKQXV0aG9yOiBKYW4gTmlkendldHpraSA8amFuQHBs YW5ldHNjYWxlLmNvbT4KUmV2aWV3ZWQtYnk6IE9zYW1hIEFiZHVsIFFhZGVyIDxvc2FtYWFi ZHVscWFkZXIuY3NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogc29sYWkgdiA8c29sYWkuY2Rh Y0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMjhmNjY1ODAt NWQ2Yi00OTk3LTk1ZjYtN2Q5ZTc5MTdjNTg1QHBsYW5ldHNjYWxlLmNvbQotLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgICAgICAgICAgICAgICB8IDMwOCArKysrKysr KysrKysrLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX29wZXJhdG9yLmMgICAgICAgICAg ICAgfCAgMTggKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAgICAgICAg ICAgIHwgIDUxICsrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25jbWRzLmMgICAg ICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAgICAg ICAgICAgICAgfCAgMjEgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMgICAg ICAgICAgICAgICB8ICAzMyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9u LmMgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5j ICAgICAgICAgICAgICAgfCAgMzIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jICAgICAgICAgICB8ICAyOSArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3Bh Y2UuaCAgICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVu c2lvbi5oICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf dHlwZS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNh Y2hlLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpb25zL01ha2VmaWxlICAgICB8ICAyMCArCiAuLi4vZXhwZWN0ZWQvdGVzdF9leHRl bnNpb25zLm91dCAgICAgICAgICAgICAgfCAzNDggKysrKysrKysrKysrKysrKysrCiBzcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZCAgfCAgMjIgKysKIC4u Li90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZW5zaW9ucy5zcWwgICB8IDE5NCArKysr KysrKysrCiAuLi4vdGVzdF9leHRfb3ZlcmxvYWQtLTEuMC5zcWwgICAgICAgICAgICAgICAg fCAgMTkgKwogLi4uL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZC5jb250cm9s IHwgICAzICsKIC4uLi90ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyLS0xLjAtLTIuMC5zcWwg ICB8ICAgOSArCiAuLi4vdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLnNxbCAgICAg ICAgfCAgMTIgKwogLi4uL3Rlc3RfZXh0X292ZXJsb2FkX25vc3VwZXIuY29udHJvbCAgICAg ICAgIHwgICA0ICsKIC4uLi90ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxlbC0tMS4wLnNxbCAg ICAgICB8ICAxNSArCiAuLi4vdGVzdF9leHRfb3ZlcmxvYWRfcGFyYWxsZWwuY29udHJvbCAg ICAgICAgfCAgIDMgKwogLi4uL3Rlc3RfZXh0X292ZXJsb2FkX3JlcS0tMS4wLnNxbCAgICAg ICAgICAgIHwgIDIwICsKIC4uLi90ZXN0X2V4dF9vdmVybG9hZF9yZXEuY29udHJvbCAgICAg ICAgICAgICB8ICAgNCArCiAuLi4vdGVzdF9leHRfb3ZlcmxvYWRfcmVxX2RlcC0tMS4wLnNx bCAgICAgICAgfCAgMjMgKysKIC4uLi90ZXN0X2V4dF9vdmVybG9hZF9yZXFfZGVwLmNvbnRy b2wgICAgICAgICB8ICAgNCArCiAuLi4vdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0xLjAu c3FsICAgICAgICAgfCAgIDkgKwogLi4uL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tMTAu MC5zcWwgICAgICAgIHwgICA5ICsKIC4uLi90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTIu MC5zcWwgICAgICAgICB8ICAgOSArCiAuLi4vdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0z LjAuc3FsICAgICAgICAgfCAgMTAgKwogLi4uL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0t NC4wLnNxbCAgICAgICAgIHwgICA5ICsKIC4uLi90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3Qt LTUuMC5zcWwgICAgICAgICB8ICAgOCArCiAuLi4vdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0 LS02LjAuc3FsICAgICAgICAgfCAgIDggKwogLi4uL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmlj dC0tNy4wLnNxbCAgICAgICAgIHwgIDEyICsKIC4uLi90ZXN0X2V4dF9vdmVybG9hZF9zdHJp Y3QtLTguMC5zcWwgICAgICAgICB8ICAgOCArCiAuLi4vdGVzdF9leHRfb3ZlcmxvYWRfc3Ry aWN0LS05LjAuc3FsICAgICAgICAgfCAgIDcgKwogLi4uL3Rlc3RfZXh0X292ZXJsb2FkX3N0 cmljdC5jb250cm9sICAgICAgICAgIHwgICAzICsKIDM5IGZpbGVzIGNoYW5nZWQsIDEyNTAg aW5zZXJ0aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWQtLTEuMC5z cWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9u cy90ZXN0X2V4dF9vdmVybG9hZC5jb250cm9sCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlci0t MS4wLS0yLjAuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLnNxbAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0 X292ZXJsb2FkX25vc3VwZXIuY29udHJvbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3BhcmFsbGVsLS0x LjAuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVu c2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfcGFyYWxsZWwuY29udHJvbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJs b2FkX3JlcS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMv dGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3JlcS5jb250cm9sCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRf b3ZlcmxvYWRfcmVxX2RlcC0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3JlcV9kZXAuY29u dHJvbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2Fk X3N0cmljdC0tMTAuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTIuMC5zcWwKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0 X2V4dF9vdmVybG9hZF9zdHJpY3QtLTMuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3Qt LTQuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTUuMC5zcWwKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVy bG9hZF9zdHJpY3QtLTYuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTcuMC5zcWwK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90 ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTguMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJp Y3QtLTkuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QuY29udHJvbAoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL25hbWVzcGFjZS5jCmluZGV4IDA2NDdhMTk4ZGVhLi5lMDU2OTQzOGU0MyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL25hbWVzcGFjZS5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMv ZXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiY29tbW9uL2hhc2hmbl91bnN0YWJsZS5oIgogI2lu Y2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtMjI1LDYg KzIyNiw3IEBAIHN0YXRpYyBib29sIFRTUGFyc2VySXNWaXNpYmxlRXh0KE9pZCBwcnNJZCwg Ym9vbCAqaXNfbWlzc2luZyk7CiBzdGF0aWMgYm9vbCBUU0RpY3Rpb25hcnlJc1Zpc2libGVF eHQoT2lkIGRpY3RJZCwgYm9vbCAqaXNfbWlzc2luZyk7CiBzdGF0aWMgYm9vbCBUU1RlbXBs YXRlSXNWaXNpYmxlRXh0KE9pZCB0bXBsSWQsIGJvb2wgKmlzX21pc3NpbmcpOwogc3RhdGlj IGJvb2wgVFNDb25maWdJc1Zpc2libGVFeHQoT2lkIGNmZ2lkLCBib29sICppc19taXNzaW5n KTsKK3N0YXRpYyBib29sIFJlbGF0aW9uSXNUcnVzdGVkSW5FeHRlbnNpb25TY3JpcHQoT2lk IHJlbGlkKTsKIHN0YXRpYyB2b2lkIHJlY29tcHV0ZU5hbWVzcGFjZVBhdGgodm9pZCk7CiBz dGF0aWMgdm9pZCBBY2Nlc3NUZW1wVGFibGVOYW1lc3BhY2UoYm9vbCBmb3JjZSk7CiBzdGF0 aWMgdm9pZCBJbml0VGVtcFRhYmxlTmFtZXNwYWNlKHZvaWQpOwpAQCAtNTMzLDYgKzUzNSwx NCBAQCBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQoY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9u LCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCQlyZWxJZCA9IEludmFsaWRPaWQ7CiAJCQllbHNl CiAJCQkJcmVsSWQgPSBnZXRfcmVsbmFtZV9yZWxpZChyZWxhdGlvbi0+cmVsbmFtZSwgbmFt ZXNwYWNlSWQpOworCisJCQkvKgorCQkJICogVHJlYXQgYW4gdW50cnVzdGVkIG1hdGNoIGFz IG5vbmV4aXN0ZW50IHdoaWxlIGFuIGV4dGVuc2lvbgorCQkJICogc2NyaXB0IHJ1bnMsIGFz IFJlbG5hbWVHZXRSZWxpZCBkb2VzIGZvciB1bnF1YWxpZmllZCBuYW1lcy4KKwkJCSAqLwor CQkJaWYgKE9pZElzVmFsaWQocmVsSWQpICYmIGNyZWF0aW5nX2V4dGVuc2lvbiAmJgorCQkJ CSFSZWxhdGlvbklzVHJ1c3RlZEluRXh0ZW5zaW9uU2NyaXB0KHJlbElkKSkKKwkJCQlyZWxJ ZCA9IEludmFsaWRPaWQ7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC02MzIsMTIgKzY0MiwxNCBA QCBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQoY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBM T0NLTU9ERSBsb2NrbW9kZSwKIAkJCWVyZXBvcnQoZWxldmVsLAogCQkJCQkoZXJyY29kZShF UlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCiAJCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXMu JXNcIiBkb2VzIG5vdCBleGlzdCIsCi0JCQkJCQkJcmVsYXRpb24tPnNjaGVtYW5hbWUsIHJl bGF0aW9uLT5yZWxuYW1lKSkpOworCQkJCQkJCXJlbGF0aW9uLT5zY2hlbWFuYW1lLCByZWxh dGlvbi0+cmVsbmFtZSksCisJCQkJCSBlcnJkZXRhaWxfdW50cnVzdGVkX3JlbGF0aW9uKHJl bGF0aW9uKSkpOwogCQllbHNlCiAJCQllcmVwb3J0KGVsZXZlbCwKIAkJCQkJKGVycmNvZGUo RVJSQ09ERV9VTkRFRklORURfVEFCTEUpLAogCQkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVz XCIgZG9lcyBub3QgZXhpc3QiLAotCQkJCQkJCXJlbGF0aW9uLT5yZWxuYW1lKSkpOworCQkJ CQkJCXJlbGF0aW9uLT5yZWxuYW1lKSwKKwkJCQkJIGVycmRldGFpbF91bnRydXN0ZWRfcmVs YXRpb24ocmVsYXRpb24pKSk7CiAJfQogCXJldHVybiByZWxJZDsKIH0KQEAgLTg5NiwxMyAr OTA4LDQxIEBAIFJlbG5hbWVHZXRSZWxpZChjb25zdCBjaGFyICpyZWxuYW1lKQogCiAJCXJl bGlkID0gZ2V0X3JlbG5hbWVfcmVsaWQocmVsbmFtZSwgbmFtZXNwYWNlSWQpOwogCQlpZiAo T2lkSXNWYWxpZChyZWxpZCkpCisJCXsKKwkJCS8qIFNraXAgdW50cnVzdGVkIG1hdGNoZXMg d2hpbGUgYW4gZXh0ZW5zaW9uIHNjcmlwdCBydW5zICovCisJCQlpZiAoY3JlYXRpbmdfZXh0 ZW5zaW9uICYmCisJCQkJIVJlbGF0aW9uSXNUcnVzdGVkSW5FeHRlbnNpb25TY3JpcHQocmVs aWQpKQorCQkJCWNvbnRpbnVlOwogCQkJcmV0dXJuIHJlbGlkOworCQl9CiAJfQogCiAJLyog Tm90IGZvdW5kIGluIHBhdGggKi8KIAlyZXR1cm4gSW52YWxpZE9pZDsKIH0KIAorLyoKKyAq IFJlbGF0aW9uSXNUcnVzdGVkSW5FeHRlbnNpb25TY3JpcHQKKyAqCQlPYmplY3RJc1RydXN0 ZWRJbkV4dGVuc2lvblNjcmlwdCBmb3IgYSByZWxhdGlvbiwgYnkgT0lELgorICovCitzdGF0 aWMgYm9vbAorUmVsYXRpb25Jc1RydXN0ZWRJbkV4dGVuc2lvblNjcmlwdChPaWQgcmVsaWQp Cit7CisJSGVhcFR1cGxlCXRwOworCUZvcm1fcGdfY2xhc3MgZm9ybTsKKwlib29sCQlyZXN1 bHQ7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0o cmVsaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQlyZXR1cm4gdHJ1ZTsK Kwlmb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0cCk7CisJcmVzdWx0ID0gT2Jq ZWN0SXNUcnVzdGVkSW5FeHRlbnNpb25TY3JpcHQoUmVsYXRpb25SZWxhdGlvbklkLCByZWxp ZCwKKwkJCQkJCQkJCQkJICBmb3JtLT5yZWxuYW1lc3BhY2UsCisJCQkJCQkJCQkJCSAgZm9y bS0+cmVsb3duZXIpOworCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJcmV0dXJuIHJlc3VsdDsK K30KKwogCiAvKgogICogUmVsYXRpb25Jc1Zpc2libGUKQEAgLTEwMjQsMTMgKzEwNjQsNDIg QEAgVHlwZW5hbWVHZXRUeXBpZEV4dGVuZGVkKGNvbnN0IGNoYXIgKnR5cG5hbWUsIGJvb2wg dGVtcF9vaykKIAkJCQkJCQkJUG9pbnRlckdldERhdHVtKHR5cG5hbWUpLAogCQkJCQkJCQlP YmplY3RJZEdldERhdHVtKG5hbWVzcGFjZUlkKSk7CiAJCWlmIChPaWRJc1ZhbGlkKHR5cGlk KSkKKwkJeworCQkJLyogU2tpcCB1bnRydXN0ZWQgbWF0Y2hlcyB3aGlsZSBhbiBleHRlbnNp b24gc2NyaXB0IHJ1bnMgKi8KKwkJCWlmIChjcmVhdGluZ19leHRlbnNpb24gJiYgIVR5cGVJ c1RydXN0ZWRJbkV4dGVuc2lvblNjcmlwdCh0eXBpZCkpCisJCQkJY29udGludWU7CiAJCQly ZXR1cm4gdHlwaWQ7CisJCX0KIAl9CiAKIAkvKiBOb3QgZm91bmQgaW4gcGF0aCAqLwogCXJl dHVybiBJbnZhbGlkT2lkOwogfQogCisvKgorICogVHlwZUlzVHJ1c3RlZEluRXh0ZW5zaW9u U2NyaXB0CisgKgkJT2JqZWN0SXNUcnVzdGVkSW5FeHRlbnNpb25TY3JpcHQgZm9yIGEgdHlw ZSwgYnkgT0lELgorICoKKyAqIEFsc28gdXNlZCBieSBMb29rdXBUeXBlTmFtZSwgd2hpY2gg cmVzb2x2ZXMgcXVhbGlmaWVkIG5hbWVzIGl0c2VsZi4KKyAqLworYm9vbAorVHlwZUlzVHJ1 c3RlZEluRXh0ZW5zaW9uU2NyaXB0KE9pZCB0eXBpZCkKK3sKKwlIZWFwVHVwbGUJdHA7CisJ Rm9ybV9wZ190eXBlIGZvcm07CisJYm9vbAkJcmVzdWx0OworCisJdHAgPSBTZWFyY2hTeXND YWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0eXBpZCkpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0cCkpCisJCXJldHVybiB0cnVlOworCWZvcm0gPSAoRm9ybV9wZ190eXBl KSBHRVRTVFJVQ1QodHApOworCXJlc3VsdCA9IE9iamVjdElzVHJ1c3RlZEluRXh0ZW5zaW9u U2NyaXB0KFR5cGVSZWxhdGlvbklkLCB0eXBpZCwKKwkJCQkJCQkJCQkJICBmb3JtLT50eXBu YW1lc3BhY2UsCisJCQkJCQkJCQkJCSAgZm9ybS0+dHlwb3duZXIpOworCVJlbGVhc2VTeXND YWNoZSh0cCk7CisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIFR5cGVJc1Zpc2libGUK ICAqCQlEZXRlcm1pbmUgd2hldGhlciBhIHR5cGUgKGlkZW50aWZpZWQgYnkgT0lEKSBpcyB2 aXNpYmxlIGluIHRoZQpAQCAtMTI3OCw2ICsxMzQ3LDIxIEBAIEZ1bmNuYW1lR2V0Q2FuZGlk YXRlcyhMaXN0ICpuYW1lcywgaW50IG5hcmdzLCBMaXN0ICphcmduYW1lcywKIAkJCQljb250 aW51ZTsJCS8qIHByb2MgaXMgbm90IGluIHNlYXJjaCBwYXRoICovCiAJCX0KIAorCQkvKgor CQkgKiBEdXJpbmcgYW4gZXh0ZW5zaW9uIHNjcmlwdCwgc2tpcCB1bnRydXN0ZWQgY2FuZGlk YXRlcyBiZWZvcmUgYW55CisJCSAqIGZ1cnRoZXIgZmxhZ3MgYXJlIHNldCwgc28gdGhlIHJl bWFpbmluZyBmbGFncyBkZXNjcmliZSB0cnVzdGVkCisJCSAqIGNhbmRpZGF0ZXMgb25seSAo c2VlIE9iamVjdElzVHJ1c3RlZEluRXh0ZW5zaW9uU2NyaXB0KS4KKwkJICovCisJCWlmIChj cmVhdGluZ19leHRlbnNpb24gJiYKKwkJCSFPYmplY3RJc1RydXN0ZWRJbkV4dGVuc2lvblNj cmlwdChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkgIHByb2Nmb3JtLT5vaWQs CisJCQkJCQkJCQkJCSAgcHJvY2Zvcm0tPnByb25hbWVzcGFjZSwKKwkJCQkJCQkJCQkJICBw cm9jZm9ybS0+cHJvb3duZXIpKQorCQl7CisJCQkqZmdjX2ZsYWdzIHw9IEZHQ19VTlRSVVNU RURfU0tJUDsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJKmZnY19mbGFncyB8PSBGR0NfTkFN RV9WSVNJQkxFOyAvKiByb3V0aW5lIGlzIGluIHRoZSByaWdodCBzY2hlbWEgKi8KIAogCQkv KgpAQCAtMTU5MSw2ICsxNjc1LDExOCBAQCBGdW5jbmFtZUdldENhbmRpZGF0ZXMoTGlzdCAq bmFtZXMsIGludCBuYXJncywgTGlzdCAqYXJnbmFtZXMsCiAJcmV0dXJuIHJlc3VsdExpc3Q7 CiB9CiAKKy8qCisgKiBPYmplY3RJc1RydXN0ZWRJbkV4dGVuc2lvblNjcmlwdAorICoJCU1h eSBhbiBleHRlbnNpb24gc2NyaXB0IHNhZmVseSByZXNvbHZlIGEgbmFtZSB0byB0aGlzIG9i amVjdD8KKyAqCisgKiBUcnVzdGVkIG1lYW5zIGluIHBnX2NhdGFsb2csIG93bmVkIGJ5IGEg c3VwZXJ1c2VyLCBvd25lZCBieSB0aGUgcm9sZSBydW5uaW5nCisgKiB0aGUgc2NyaXB0LCBv ciBhIG1lbWJlciBvZiB0aGUgZXh0ZW5zaW9uIGJlaW5nIGluc3RhbGxlZCBvciBvZiBvbmUg aXQKKyAqIHJlcXVpcmVzLiAgVGhlIG1lbWJlcnNoaXAgcnVsZSBsZXRzIGEgc2NyaXB0IHJl YWNoIG9iamVjdHMgdGhhdCBhbiBlYXJsaWVyCisgKiB2ZXJzaW9uIG9mIGl0c2VsZiwgb3Ig YSAic3VwZXJ1c2VyID0gZmFsc2UiIHJlcXVpcmVkIGV4dGVuc2lvbiwgY3JlYXRlZAorICog dW5kZXIgc29tZSBvdGhlciByb2xlLgorICovCitib29sCitPYmplY3RJc1RydXN0ZWRJbkV4 dGVuc2lvblNjcmlwdChPaWQgY2xhc3NJZCwgT2lkIG9iamVjdElkLAorCQkJCQkJCQkgT2lk IG5hbWVzcGFjZUlkLCBPaWQgb3duZXJJZCkKK3sKKwlPaWQJCQlleHRlbnNpb25JZDsKKwor CWlmIChuYW1lc3BhY2VJZCA9PSBQR19DQVRBTE9HX05BTUVTUEFDRSB8fAorCQlzdXBlcnVz ZXJfYXJnKG93bmVySWQpIHx8CisJCW93bmVySWQgPT0gR2V0VXNlcklkKCkpCisJCXJldHVy biB0cnVlOworCisJZXh0ZW5zaW9uSWQgPSBnZXRFeHRlbnNpb25PZk9iamVjdChjbGFzc0lk LCBvYmplY3RJZCk7CisJaWYgKCFPaWRJc1ZhbGlkKGV4dGVuc2lvbklkKSkKKwkJcmV0dXJu IGZhbHNlOworCisJcmV0dXJuIGV4dGVuc2lvbklkID09IEN1cnJlbnRFeHRlbnNpb25PYmpl Y3QgfHwKKwkJQ3VycmVudEV4dGVuc2lvblJlcXVpcmVzKGV4dGVuc2lvbklkKTsKK30KKwor LyoKKyAqIGVycmRldGFpbF91bnRydXN0ZWRfcmVsYXRpb24KKyAqCQlFeHBsYWluIGEgZmFp bGVkIHJlbGF0aW9uIGxvb2t1cCBkdXJpbmcgYW4gZXh0ZW5zaW9uIHNjcmlwdCwgaWYgYQor ICoJCXJlbGF0aW9uIG9mIHRoYXQgbmFtZSBleGlzdHMgYnV0IGlzIG5vdCB0cnVzdGVkLgor ICovCitpbnQKK2VycmRldGFpbF91bnRydXN0ZWRfcmVsYXRpb24oY29uc3QgUmFuZ2VWYXIg KnJlbGF0aW9uKQoreworCU9pZAkJCXJlbGlkID0gSW52YWxpZE9pZDsKKworCWlmICghY3Jl YXRpbmdfZXh0ZW5zaW9uKQorCQlyZXR1cm4gMDsKKworCWlmIChyZWxhdGlvbi0+c2NoZW1h bmFtZSkKKwl7CisJCU9pZAkJCW5hbWVzcGFjZUlkID0gZ2V0X25hbWVzcGFjZV9vaWQocmVs YXRpb24tPnNjaGVtYW5hbWUsIHRydWUpOworCisJCWlmIChPaWRJc1ZhbGlkKG5hbWVzcGFj ZUlkKSkKKwkJCXJlbGlkID0gZ2V0X3JlbG5hbWVfcmVsaWQocmVsYXRpb24tPnJlbG5hbWUs IG5hbWVzcGFjZUlkKTsKKwl9CisJZWxzZQorCXsKKwkJTGlzdENlbGwgICAqbDsKKworCQly ZWNvbXB1dGVOYW1lc3BhY2VQYXRoKCk7CisJCWZvcmVhY2gobCwgYWN0aXZlU2VhcmNoUGF0 aCkKKwkJeworCQkJcmVsaWQgPSBnZXRfcmVsbmFtZV9yZWxpZChyZWxhdGlvbi0+cmVsbmFt ZSwgbGZpcnN0X29pZChsKSk7CisJCQlpZiAoT2lkSXNWYWxpZChyZWxpZCkpCisJCQkJYnJl YWs7CisJCX0KKwl9CisKKwlpZiAoIU9pZElzVmFsaWQocmVsaWQpIHx8IFJlbGF0aW9uSXNU cnVzdGVkSW5FeHRlbnNpb25TY3JpcHQocmVsaWQpKQorCQlyZXR1cm4gMDsKKworCWVycmRl dGFpbCgiQSByZWxhdGlvbiBvZiB0aGF0IG5hbWUgZXhpc3RzLCBidXQgaXQgaXMgbm90IHRy dXN0ZWQgd2hpbGUgYW4gZXh0ZW5zaW9uIHNjcmlwdCBydW5zLiIpOworCXJldHVybiBlcnJo aW50KCJPbmx5IG9iamVjdHMgaW4gcGdfY2F0YWxvZywgb3duZWQgYnkgYSBzdXBlcnVzZXIs IG9yIGJlbG9uZ2luZyB0byB0aGUgZXh0ZW5zaW9uIG9yIG9uZSBpdCByZXF1aXJlcyBhcmUg dHJ1c3RlZC4iKTsKK30KKworLyoKKyAqIGVycmRldGFpbF91bnRydXN0ZWRfdHlwZQorICoJ CUxpa2V3aXNlIGZvciBhIHR5cGUsIGdpdmVuIGl0cyBzY2hlbWEgKG9yIE5VTEwpIGFuZCBu YW1lLgorICovCitpbnQKK2VycmRldGFpbF91bnRydXN0ZWRfdHlwZShjb25zdCBjaGFyICpz Y2hlbWFuYW1lLCBjb25zdCBjaGFyICp0eXBuYW1lKQoreworCU9pZAkJCXR5cGlkID0gSW52 YWxpZE9pZDsKKworCWlmICghY3JlYXRpbmdfZXh0ZW5zaW9uKQorCQlyZXR1cm4gMDsKKwor CWlmIChzY2hlbWFuYW1lKQorCXsKKwkJT2lkCQkJbmFtZXNwYWNlSWQgPSBnZXRfbmFtZXNw YWNlX29pZChzY2hlbWFuYW1lLCB0cnVlKTsKKworCQlpZiAoT2lkSXNWYWxpZChuYW1lc3Bh Y2VJZCkpCisJCQl0eXBpZCA9IEdldFN5c0NhY2hlT2lkMihUWVBFTkFNRU5TUCwgQW51bV9w Z190eXBlX29pZCwKKwkJCQkJCQkJCVBvaW50ZXJHZXREYXR1bSh0eXBuYW1lKSwKKwkJCQkJ CQkJCU9iamVjdElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKwl9CisJZWxzZQorCXsKKwkJ TGlzdENlbGwgICAqbDsKKworCQlyZWNvbXB1dGVOYW1lc3BhY2VQYXRoKCk7CisJCWZvcmVh Y2gobCwgYWN0aXZlU2VhcmNoUGF0aCkKKwkJeworCQkJdHlwaWQgPSBHZXRTeXNDYWNoZU9p ZDIoVFlQRU5BTUVOU1AsIEFudW1fcGdfdHlwZV9vaWQsCisJCQkJCQkJCQlQb2ludGVyR2V0 RGF0dW0odHlwbmFtZSksCisJCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKGxmaXJzdF9vaWQo bCkpKTsKKwkJCWlmIChPaWRJc1ZhbGlkKHR5cGlkKSkKKwkJCQlicmVhazsKKwkJfQorCX0K KworCWlmICghT2lkSXNWYWxpZCh0eXBpZCkgfHwgVHlwZUlzVHJ1c3RlZEluRXh0ZW5zaW9u U2NyaXB0KHR5cGlkKSkKKwkJcmV0dXJuIDA7CisKKwllcnJkZXRhaWwoIkEgdHlwZSBvZiB0 aGF0IG5hbWUgZXhpc3RzLCBidXQgaXQgaXMgbm90IHRydXN0ZWQgd2hpbGUgYW4gZXh0ZW5z aW9uIHNjcmlwdCBydW5zLiIpOworCXJldHVybiBlcnJoaW50KCJPbmx5IG9iamVjdHMgaW4g cGdfY2F0YWxvZywgb3duZWQgYnkgYSBzdXBlcnVzZXIsIG9yIGJlbG9uZ2luZyB0byB0aGUg ZXh0ZW5zaW9uIG9yIG9uZSBpdCByZXF1aXJlcyBhcmUgdHJ1c3RlZC4iKTsKK30KKwogLyoK ICAqIE1hdGNoTmFtZWRDYWxsCiAgKgkJR2l2ZW4gYSBwZ19wcm9jIGhlYXAgdHVwbGUgYW5k IGEgY2FsbCdzIGxpc3Qgb2YgYXJndW1lbnQgbmFtZXMsCkBAIC0xODYxLDYgKzIwNTcsMTQg QEAgT3Blcm5hbWVHZXRPcHJpZChMaXN0ICpuYW1lcywgT2lkIG9wcmxlZnQsIE9pZCBvcHJy aWdodCkKIAkJCQlGb3JtX3BnX29wZXJhdG9yIG9wZXJjbGFzcyA9IChGb3JtX3BnX29wZXJh dG9yKSBHRVRTVFJVQ1Qob3BlcnR1cCk7CiAJCQkJT2lkCQkJcmVzdWx0ID0gb3BlcmNsYXNz LT5vaWQ7CiAKKwkJCQkvKiBSZWplY3QgYW4gdW50cnVzdGVkIG1hdGNoIHdoaWxlIGFuIGV4 dGVuc2lvbiBzY3JpcHQgcnVucyAqLworCQkJCWlmIChjcmVhdGluZ19leHRlbnNpb24gJiYK KwkJCQkJIU9iamVjdElzVHJ1c3RlZEluRXh0ZW5zaW9uU2NyaXB0KE9wZXJhdG9yUmVsYXRp b25JZCwKKwkJCQkJCQkJCQkJCQkgIHJlc3VsdCwKKwkJCQkJCQkJCQkJCQkgIG9wZXJjbGFz cy0+b3BybmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJCSAgb3BlcmNsYXNzLT5vcHJvd25lcikp CisJCQkJCXJlc3VsdCA9IEludmFsaWRPaWQ7CisKIAkJCQlSZWxlYXNlU3lzQ2FjaGUob3Bl cnR1cCk7CiAJCQkJcmV0dXJuIHJlc3VsdDsKIAkJCX0KQEAgLTE5MDYsNiArMjExMCwxNCBA QCBPcGVybmFtZUdldE9wcmlkKExpc3QgKm5hbWVzLCBPaWQgb3BybGVmdCwgT2lkIG9wcnJp Z2h0KQogCQkJewogCQkJCU9pZAkJCXJlc3VsdCA9IG9wZXJmb3JtLT5vaWQ7CiAKKwkJCQkv KiBTa2lwIHVudHJ1c3RlZCBtYXRjaGVzIHdoaWxlIGFuIGV4dGVuc2lvbiBzY3JpcHQgcnVu cyAqLworCQkJCWlmIChjcmVhdGluZ19leHRlbnNpb24gJiYKKwkJCQkJIU9iamVjdElzVHJ1 c3RlZEluRXh0ZW5zaW9uU2NyaXB0KE9wZXJhdG9yUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJ CQkgIHJlc3VsdCwKKwkJCQkJCQkJCQkJCQkgIG9wZXJmb3JtLT5vcHJuYW1lc3BhY2UsCisJ CQkJCQkJCQkJCQkJICBvcGVyZm9ybS0+b3Byb3duZXIpKQorCQkJCQljb250aW51ZTsKKwog CQkJCVJlbGVhc2VTeXNDYWNoZUxpc3QoY2F0bGlzdCk7CiAJCQkJcmV0dXJuIHJlc3VsdDsK IAkJCX0KQEAgLTIwMzMsNTMgKzIyNDUsNjMgQEAgT3Blcm5hbWVHZXRDYW5kaWRhdGVzKExp c3QgKm5hbWVzLCBjaGFyIG9wcmtpbmQsIGJvb2wgbWlzc2luZ19zY2hlbWFfb2ssCiAJCQl9 CiAJCQlpZiAobnNwID09IE5VTEwpCiAJCQkJY29udGludWU7CQkvKiBvcGVyIGlzIG5vdCBp biBzZWFyY2ggcGF0aCAqLworCQl9CiAKLQkJCS8qCi0JCQkgKiBPa2F5LCBpdCdzIGluIHRo ZSBzZWFyY2ggcGF0aCwgYnV0IGRvZXMgaXQgaGF2ZSB0aGUgc2FtZQotCQkJICogYXJndW1l bnRzIGFzIHNvbWV0aGluZyB3ZSBhbHJlYWR5IGFjY2VwdGVkPwlJZiBzbywga2VlcCBvbmx5 Ci0JCQkgKiB0aGUgb25lIHRoYXQgYXBwZWFycyBlYXJsaWVyIGluIHRoZSBzZWFyY2ggcGF0 aC4KLQkJCSAqCi0JCQkgKiBJZiB3ZSBoYXZlIGFuIG9yZGVyZWQgbGlzdCBmcm9tIFNlYXJj aFN5c0NhY2hlTGlzdCAodGhlIG5vcm1hbAotCQkJICogY2FzZSksIHRoZW4gYW55IGNvbmZs aWN0aW5nIG9wZXIgbXVzdCBpbW1lZGlhdGVseSBhZGpvaW4gdGhpcwotCQkJICogb25lIGlu IHRoZSBsaXN0LCBzbyB3ZSBvbmx5IG5lZWQgdG8gbG9vayBhdCB0aGUgbmV3ZXN0IHJlc3Vs dAotCQkJICogaXRlbS4gIElmIHdlIGhhdmUgYW4gdW5vcmRlcmVkIGxpc3QsIHdlIGhhdmUg dG8gc2NhbiB0aGUgd2hvbGUKLQkJCSAqIHJlc3VsdCBsaXN0LgotCQkJICovCi0JCQlpZiAo cmVzdWx0TGlzdCkKLQkJCXsKLQkJCQlGdW5jQ2FuZGlkYXRlTGlzdCBwcmV2UmVzdWx0Owor CQkvKiBMaWtld2lzZSBza2lwIHVudHJ1c3RlZCBjYW5kaWRhdGVzLCBhcyBpbiBGdW5jbmFt ZUdldENhbmRpZGF0ZXMgKi8KKwkJaWYgKGNyZWF0aW5nX2V4dGVuc2lvbiAmJgorCQkJIU9i amVjdElzVHJ1c3RlZEluRXh0ZW5zaW9uU2NyaXB0KE9wZXJhdG9yUmVsYXRpb25JZCwKKwkJ CQkJCQkJCQkJICBvcGVyZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkgIG9wZXJmb3JtLT5vcHJu YW1lc3BhY2UsCisJCQkJCQkJCQkJCSAgb3BlcmZvcm0tPm9wcm93bmVyKSkKKwkJeworCQkJ KmZnY19mbGFncyB8PSBGR0NfVU5UUlVTVEVEX1NLSVA7CisJCQljb250aW51ZTsKKwkJfQog Ci0JCQkJaWYgKGNhdGxpc3QtPm9yZGVyZWQpCi0JCQkJewotCQkJCQlpZiAob3BlcmZvcm0t Pm9wcmxlZnQgPT0gcmVzdWx0TGlzdC0+YXJnc1swXSAmJgotCQkJCQkJb3BlcmZvcm0tPm9w cnJpZ2h0ID09IHJlc3VsdExpc3QtPmFyZ3NbMV0pCi0JCQkJCQlwcmV2UmVzdWx0ID0gcmVz dWx0TGlzdDsKLQkJCQkJZWxzZQotCQkJCQkJcHJldlJlc3VsdCA9IE5VTEw7Ci0JCQkJfQor CQkvKgorCQkgKiBPa2F5LCBpdCdzIGluIHRoZSBzZWFyY2ggcGF0aCwgYnV0IGRvZXMgaXQg aGF2ZSB0aGUgc2FtZSBhcmd1bWVudHMKKwkJICogYXMgc29tZXRoaW5nIHdlIGFscmVhZHkg YWNjZXB0ZWQ/ICBJZiBzbywga2VlcCBvbmx5IHRoZSBvbmUgdGhhdAorCQkgKiBhcHBlYXJz IGVhcmxpZXIgaW4gdGhlIHNlYXJjaCBwYXRoLgorCQkgKgorCQkgKiBJZiB3ZSBoYXZlIGFu IG9yZGVyZWQgbGlzdCBmcm9tIFNlYXJjaFN5c0NhY2hlTGlzdCAodGhlIG5vcm1hbAorCQkg KiBjYXNlKSwgdGhlbiBhbnkgY29uZmxpY3Rpbmcgb3BlciBtdXN0IGltbWVkaWF0ZWx5IGFk am9pbiB0aGlzIG9uZQorCQkgKiBpbiB0aGUgbGlzdCwgc28gd2Ugb25seSBuZWVkIHRvIGxv b2sgYXQgdGhlIG5ld2VzdCByZXN1bHQgaXRlbS4gIElmCisJCSAqIHdlIGhhdmUgYW4gdW5v cmRlcmVkIGxpc3QsIHdlIGhhdmUgdG8gc2NhbiB0aGUgd2hvbGUgcmVzdWx0IGxpc3QuCisJ CSAqLworCQlpZiAoIU9pZElzVmFsaWQobmFtZXNwYWNlSWQpICYmIHJlc3VsdExpc3QpCisJ CXsKKwkJCUZ1bmNDYW5kaWRhdGVMaXN0IHByZXZSZXN1bHQ7CisKKwkJCWlmIChjYXRsaXN0 LT5vcmRlcmVkKQorCQkJeworCQkJCWlmIChvcGVyZm9ybS0+b3BybGVmdCA9PSByZXN1bHRM aXN0LT5hcmdzWzBdICYmCisJCQkJCW9wZXJmb3JtLT5vcHJyaWdodCA9PSByZXN1bHRMaXN0 LT5hcmdzWzFdKQorCQkJCQlwcmV2UmVzdWx0ID0gcmVzdWx0TGlzdDsKIAkJCQllbHNlCisJ CQkJCXByZXZSZXN1bHQgPSBOVUxMOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWZvciAo cHJldlJlc3VsdCA9IHJlc3VsdExpc3Q7CisJCQkJCSBwcmV2UmVzdWx0OworCQkJCQkgcHJl dlJlc3VsdCA9IHByZXZSZXN1bHQtPm5leHQpCiAJCQkJewotCQkJCQlmb3IgKHByZXZSZXN1 bHQgPSByZXN1bHRMaXN0OwotCQkJCQkJIHByZXZSZXN1bHQ7Ci0JCQkJCQkgcHJldlJlc3Vs dCA9IHByZXZSZXN1bHQtPm5leHQpCi0JCQkJCXsKLQkJCQkJCWlmIChvcGVyZm9ybS0+b3By bGVmdCA9PSBwcmV2UmVzdWx0LT5hcmdzWzBdICYmCi0JCQkJCQkJb3BlcmZvcm0tPm9wcnJp Z2h0ID09IHByZXZSZXN1bHQtPmFyZ3NbMV0pCi0JCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJ CQl9Ci0JCQkJaWYgKHByZXZSZXN1bHQpCi0JCQkJewotCQkJCQkvKiBXZSBoYXZlIGEgbWF0 Y2ggd2l0aCBhIHByZXZpb3VzIHJlc3VsdCAqLwotCQkJCQlBc3NlcnQocGF0aHBvcyAhPSBw cmV2UmVzdWx0LT5wYXRocG9zKTsKLQkJCQkJaWYgKHBhdGhwb3MgPiBwcmV2UmVzdWx0LT5w YXRocG9zKQotCQkJCQkJY29udGludWU7CS8qIGtlZXAgcHJldmlvdXMgcmVzdWx0ICovCi0J CQkJCS8qIHJlcGxhY2UgcHJldmlvdXMgcmVzdWx0ICovCi0JCQkJCXByZXZSZXN1bHQtPnBh dGhwb3MgPSBwYXRocG9zOwotCQkJCQlwcmV2UmVzdWx0LT5vaWQgPSBvcGVyZm9ybS0+b2lk OwotCQkJCQljb250aW51ZTsJLyogYXJncyBhcmUgc2FtZSwgb2YgY291cnNlICovCisJCQkJ CWlmIChvcGVyZm9ybS0+b3BybGVmdCA9PSBwcmV2UmVzdWx0LT5hcmdzWzBdICYmCisJCQkJ CQlvcGVyZm9ybS0+b3BycmlnaHQgPT0gcHJldlJlc3VsdC0+YXJnc1sxXSkKKwkJCQkJCWJy ZWFrOwogCQkJCX0KIAkJCX0KKwkJCWlmIChwcmV2UmVzdWx0KQorCQkJeworCQkJCS8qIFdl IGhhdmUgYSBtYXRjaCB3aXRoIGEgcHJldmlvdXMgcmVzdWx0ICovCisJCQkJQXNzZXJ0KHBh dGhwb3MgIT0gcHJldlJlc3VsdC0+cGF0aHBvcyk7CisJCQkJaWYgKHBhdGhwb3MgPiBwcmV2 UmVzdWx0LT5wYXRocG9zKQorCQkJCQljb250aW51ZTsJLyoga2VlcCBwcmV2aW91cyByZXN1 bHQgKi8KKwkJCQkvKiByZXBsYWNlIHByZXZpb3VzIHJlc3VsdCAqLworCQkJCXByZXZSZXN1 bHQtPnBhdGhwb3MgPSBwYXRocG9zOworCQkJCXByZXZSZXN1bHQtPm9pZCA9IG9wZXJmb3Jt LT5vaWQ7CisJCQkJY29udGludWU7CQkvKiBhcmdzIGFyZSBzYW1lLCBvZiBjb3Vyc2UgKi8K KwkJCX0KIAkJfQogCiAJCSpmZ2NfZmxhZ3MgfD0gRkdDX05BTUVfVklTSUJMRTsgLyogb3Bl cmF0b3IgaXMgaW4gdGhlIHJpZ2h0IHNjaGVtYSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19vcGVyYXRvci5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19vcGVy YXRvci5jCmluZGV4IDZiOTBjNzc0YzE4Li4zN2M3ZDJlNmM1YyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19vcGVyYXRvci5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfb3BlcmF0b3IuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9leHRlbnNpb24uaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfb3Blci5o IgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgpAQCAtNjQzLDYgKzY0NCwyMyBAQCBnZXRfb3Ro ZXJfb3BlcmF0b3IoTGlzdCAqb3RoZXJPcCwgT2lkIG90aGVyTGVmdFR5cGVJZCwgT2lkIG90 aGVyUmlnaHRUeXBlSWQsCiAJb3RoZXJOYW1lc3BhY2UgPSBRdWFsaWZpZWROYW1lR2V0Q3Jl YXRpb25OYW1lc3BhY2Uob3RoZXJPcCwKIAkJCQkJCQkJCQkJCQkgICAmb3RoZXJOYW1lKTsK IAorCS8qCisJICogSWYgdGhlIGxvb2t1cCBmYWlsZWQgb25seSBiZWNhdXNlIHRoZSBvcGVy YXRvciBpcyB1bnRydXN0ZWQgZHVyaW5nIGFuCisJICogZXh0ZW5zaW9uIHNjcmlwdCwgc2F5 IHNvIHJhdGhlciB0aGFuIGNvbGxpZGluZyB3aXRoIGl0IGJlbG93LgorCSAqLworCWlmIChj cmVhdGluZ19leHRlbnNpb24gJiYKKwkJT2lkSXNWYWxpZChPcGVyYXRvckdldChvdGhlck5h bWUsIG90aGVyTmFtZXNwYWNlLAorCQkJCQkJCSAgIG90aGVyTGVmdFR5cGVJZCwgb3RoZXJS aWdodFR5cGVJZCwKKwkJCQkJCQkgICAmb3RoZXJEZWZpbmVkKSkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfRlVOQ1RJT04pLAorCQkJCSBl cnJtc2coIm9wZXJhdG9yIGRvZXMgbm90IGV4aXN0OiAlcyIsCisJCQkJCQlvcF9zaWduYXR1 cmVfc3RyaW5nKG90aGVyT3AsCisJCQkJCQkJCQkJCW90aGVyTGVmdFR5cGVJZCwKKwkJCQkJ CQkJCQkJb3RoZXJSaWdodFR5cGVJZCkpLAorCQkJCSBlcnJkZXRhaWwoIkFuIG9wZXJhdG9y IG9mIHRoYXQgbmFtZSBleGlzdHMsIGJ1dCBpdCBpcyBub3QgdHJ1c3RlZCB3aGlsZSBhbiBl eHRlbnNpb24gc2NyaXB0IHJ1bnMuIiksCisJCQkJIGVycmhpbnQoIk9ubHkgb2JqZWN0cyBp biBwZ19jYXRhbG9nLCBvd25lZCBieSBhIHN1cGVydXNlciwgb3IgYmVsb25naW5nIHRvIHRo ZSBleHRlbnNpb24gb3Igb25lIGl0IHJlcXVpcmVzIGFyZSB0cnVzdGVkLiIpKSk7CisKIAlp ZiAoc3RyY21wKG90aGVyTmFtZSwgb3BlcmF0b3JOYW1lKSA9PSAwICYmCiAJCW90aGVyTmFt ZXNwYWNlID09IG9wZXJhdG9yTmFtZXNwYWNlICYmCiAJCW90aGVyTGVmdFR5cGVJZCA9PSBs ZWZ0VHlwZUlkICYmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNp b24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IGY4ZjZiMTc5 NjMxLi40ODc0YmY1OTZiNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTE1 MzMsNiArMTUzMyw1NyBAQCBTZXRFeHRlbnNpb25DcmVhdGlvblN0YXRlKGJvb2wgY3JlYXRp bmcsIE9pZCBleHRlbnNpb25PYmplY3QpCiAJQ3VycmVudEV4dGVuc2lvbk9iamVjdCA9IGV4 dGVuc2lvbk9iamVjdDsKIH0KIAorLyoKKyAqIEN1cnJlbnRFeHRlbnNpb25SZXF1aXJlcyAt IGRvZXMgdGhlIHJ1bm5pbmcgc2NyaXB0J3MgZXh0ZW5zaW9uIHJlcXVpcmUgdGhpcworICog ZXh0ZW5zaW9uPworICoKKyAqIE9ubHkgZGlyZWN0IHJlcXVpcmVtZW50cyBjb3VudDsgdGhv c2UgYXJlIHRoZSBvbmVzIHdob3NlIHNjaGVtYXMKKyAqIGV4ZWN1dGVfZXh0ZW5zaW9uX3Nj cmlwdCBwdXRzIGludG8gdGhlIHNjcmlwdCdzIHNlYXJjaCBwYXRoLgorICovCitib29sCitD dXJyZW50RXh0ZW5zaW9uUmVxdWlyZXMoT2lkIGV4dGVuc2lvbklkKQoreworCVJlbGF0aW9u CWRlcFJlbDsKKwlTY2FuS2V5RGF0YSBrZXlbMl07CisJU3lzU2NhbkRlc2MgZGVwU2NhbjsK KwlIZWFwVHVwbGUJZGVwVHVwOworCWJvb2wJCXJlc3VsdCA9IGZhbHNlOworCisJaWYgKCFP aWRJc1ZhbGlkKEN1cnJlbnRFeHRlbnNpb25PYmplY3QpKQorCQlyZXR1cm4gZmFsc2U7CisK KwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9j ayk7CisKKwlTY2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1fcGdfZGVwZW5kX2NsYXNz aWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElk R2V0RGF0dW0oRXh0ZW5zaW9uUmVsYXRpb25JZCkpOworCVNjYW5LZXlJbml0KCZrZXlbMV0s CisJCQkJQW51bV9wZ19kZXBlbmRfb2JqaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVy LCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0oQ3VycmVudEV4dGVuc2lvbk9iamVj dCkpOworCisJZGVwU2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihkZXBSZWwsIERlcGVuZERl cGVuZGVySW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkJIE5VTEwsIDIsIGtleSk7CisKKwl3aGls ZSAoSGVhcFR1cGxlSXNWYWxpZChkZXBUdXAgPSBzeXN0YWJsZV9nZXRuZXh0KGRlcFNjYW4p KSkKKwl7CisJCUZvcm1fcGdfZGVwZW5kIHBnX2RlcGVuZCA9IChGb3JtX3BnX2RlcGVuZCkg R0VUU1RSVUNUKGRlcFR1cCk7CisKKwkJaWYgKHBnX2RlcGVuZC0+cmVmY2xhc3NpZCA9PSBF eHRlbnNpb25SZWxhdGlvbklkICYmCisJCQlwZ19kZXBlbmQtPnJlZm9iamlkID09IGV4dGVu c2lvbklkKQorCQl7CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisK KwlzeXN0YWJsZV9lbmRzY2FuKGRlcFNjYW4pOworCXRhYmxlX2Nsb3NlKGRlcFJlbCwgQWNj ZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBGaW5kIG9y IGNyZWF0ZSBhbiBFeHRlbnNpb25WZXJzaW9uSW5mbyBmb3IgdGhlIHNwZWNpZmllZCB2ZXJz aW9uIG5hbWUKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9mdW5jdGlv bmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Z1bmN0aW9uY21kcy5jCmluZGV4IDRk NDYwMTNkN2RlLi5iMTNmMWUzN2JjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZnVuY3Rpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZnVuY3Rpb25j bWRzLmMKQEAgLTE0MCw3ICsxNDAsOCBAQCBjb21wdXRlX3JldHVybl90eXBlKFR5cGVOYW1l ICpyZXR1cm5UeXBlLCBPaWQgbGFuZ3VhZ2VPaWQsCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJ KGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKIAkJCQkgZXJybXNnKCJ0eXBl IFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCi0JCQkJCQlUeXBlTmFtZVRvU3RyaW5nKHJldHVy blR5cGUpKSkpOworCQkJCQkJVHlwZU5hbWVUb1N0cmluZyhyZXR1cm5UeXBlKSksCisJCQkJ IGVycmRldGFpbF91bnRydXN0ZWRfdHlwZW5hbWUocmV0dXJuVHlwZSkpKTsKIAl9CiAJZWxz ZQogCXsKQEAgLTI4Miw2ICsyODMsNyBAQCBpbnRlcnByZXRfZnVuY3Rpb25fcGFyYW1ldGVy X2xpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVG SU5FRF9PQkpFQ1QpLAogCQkJCQkgZXJybXNnKCJ0eXBlICVzIGRvZXMgbm90IGV4aXN0IiwK IAkJCQkJCQlUeXBlTmFtZVRvU3RyaW5nKHQpKSwKKwkJCQkJIGVycmRldGFpbF91bnRydXN0 ZWRfdHlwZW5hbWUodCksCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCB0LT5s b2NhdGlvbikpKTsKIAkJCXRvaWQgPSBJbnZhbGlkT2lkOwkvKiBrZWVwIGNvbXBpbGVyIHF1 aWV0ICovCiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5j LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IGY3NWY1ZjJmYmJh Li5kZjE4MWEzZTlhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1 bmMuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0xMDAzLDcg KzEwMDMsMTUgQEAgZnVuY19sb29rdXBfZmFpbHVyZV9kZXRhaWxzKGludCBmZ2NfZmxhZ3Ms IExpc3QgKmFyZ25hbWVzLCBib29sIHByb2NfY2FsbCkKIAkgKi8KIAlpZiAoIShmZ2NfZmxh Z3MgJiBGR0NfTkFNRV9WSVNJQkxFKSkKIAl7Ci0JCWlmIChmZ2NfZmxhZ3MgJiBGR0NfU0NI RU1BX0dJVkVOKQorCQlpZiAoZmdjX2ZsYWdzICYgRkdDX1VOVFJVU1RFRF9TS0lQKQorCQl7 CisJCQlpZiAocHJvY19jYWxsKQorCQkJCSh2b2lkKSBlcnJkZXRhaWwoIkEgcHJvY2VkdXJl IG9mIHRoYXQgbmFtZSBleGlzdHMsIGJ1dCBpdCBpcyBub3QgdHJ1c3RlZCB3aGlsZSBhbiBl eHRlbnNpb24gc2NyaXB0IHJ1bnMuIik7CisJCQllbHNlCisJCQkJKHZvaWQpIGVycmRldGFp bCgiQSBmdW5jdGlvbiBvZiB0aGF0IG5hbWUgZXhpc3RzLCBidXQgaXQgaXMgbm90IHRydXN0 ZWQgd2hpbGUgYW4gZXh0ZW5zaW9uIHNjcmlwdCBydW5zLiIpOworCQkJcmV0dXJuIGVycmhp bnQoIk9ubHkgb2JqZWN0cyBpbiBwZ19jYXRhbG9nLCBvd25lZCBieSBhIHN1cGVydXNlciwg b3IgYmVsb25naW5nIHRvIHRoZSBleHRlbnNpb24gb3Igb25lIGl0IHJlcXVpcmVzIGFyZSB0 cnVzdGVkLiIpOworCQl9CisJCWVsc2UgaWYgKGZnY19mbGFncyAmIEZHQ19TQ0hFTUFfR0lW RU4pCiAJCQlyZXR1cm4gMDsJCQkvKiBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgKi8KIAkJZWxz ZSBpZiAoIShmZ2NfZmxhZ3MgJiBGR0NfTkFNRV9FWElTVFMpKQogCQl7CkBAIC0xMDIxLDYg KzEwMjksMTUgQEAgZnVuY19sb29rdXBfZmFpbHVyZV9kZXRhaWxzKGludCBmZ2NfZmxhZ3Ms IExpc3QgKmFyZ25hbWVzLCBib29sIHByb2NfY2FsbCkKIAkJfQogCX0KIAorCS8qIEEgdHJ1 c3RlZCBjYW5kaWRhdGUgd2FzIHZpc2libGU7IG1lbnRpb24gYW55IHNraXBwZWQgb25lIGFz IGEgaGludCAqLworCWlmIChmZ2NfZmxhZ3MgJiBGR0NfVU5UUlVTVEVEX1NLSVApCisJewor CQlpZiAocHJvY19jYWxsKQorCQkJKHZvaWQpIGVycmhpbnQoIkEgcHJvY2VkdXJlIG9mIHRo YXQgbmFtZSB3YXMgaWdub3JlZCBiZWNhdXNlIGl0IGlzIG5vdCB0cnVzdGVkIHdoaWxlIGFu IGV4dGVuc2lvbiBzY3JpcHQgcnVucy4iKTsKKwkJZWxzZQorCQkJKHZvaWQpIGVycmhpbnQo IkEgZnVuY3Rpb24gb2YgdGhhdCBuYW1lIHdhcyBpZ25vcmVkIGJlY2F1c2UgaXQgaXMgbm90 IHRydXN0ZWQgd2hpbGUgYW4gZXh0ZW5zaW9uIHNjcmlwdCBydW5zLiIpOworCX0KKwogCS8q CiAJICogTmV4dCwgY29tcGxhaW4gaWYgbm90aGluZyBoYWQgdGhlIHJpZ2h0IG51bWJlciBv ZiBhcmd1bWVudHMuICAoVGhpcwogCSAqIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB3cm9uZy1h cmduYW1lcyBjYXNlcyBiZWNhdXNlIHdlIHdvbid0IGV2ZW4gbG9vawpAQCAtMTA3Niw2ICsx MDkzLDggQEAgZnVuY19sb29rdXBfZmFpbHVyZV9kZXRhaWxzKGludCBmZ2NfZmxhZ3MsIExp c3QgKmFyZ25hbWVzLCBib29sIHByb2NfY2FsbCkKIAkJKHZvaWQpIGVycmRldGFpbCgiTm8g cHJvY2VkdXJlIG9mIHRoYXQgbmFtZSBhY2NlcHRzIHRoZSBnaXZlbiBhcmd1bWVudCB0eXBl cy4iKTsKIAllbHNlCiAJCSh2b2lkKSBlcnJkZXRhaWwoIk5vIGZ1bmN0aW9uIG9mIHRoYXQg bmFtZSBhY2NlcHRzIHRoZSBnaXZlbiBhcmd1bWVudCB0eXBlcy4iKTsKKwlpZiAoZmdjX2Zs YWdzICYgRkdDX1VOVFJVU1RFRF9TS0lQKQorCQlyZXR1cm4gMDsJCQkJLyoga2VlcCB0aGUg aGludCBzZXQgYWJvdmUgKi8KIAlyZXR1cm4gZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8g YWRkIGV4cGxpY2l0IHR5cGUgY2FzdHMuIik7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Bl ci5jCmluZGV4IGRjMGYwNDdjYTI1Li5hOTc0MjI3ODZkMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2Vfb3Blci5jCkBAIC0xNiw4ICsxNiwxMCBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAK ICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9u YW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXh0ZW5zaW9uLmgi CiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVu Y3MuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgiCkBAIC0zODgsNiArMzkw LDEzIEBAIG9wZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsIE9pZCBsdHlw ZUlkLCBPaWQgcnR5cGVJZCwKIAkgKi8KIAlrZXlfb2sgPSBtYWtlX29wZXJfY2FjaGVfa2V5 KHBzdGF0ZSwgJmtleSwgb3BuYW1lLCBsdHlwZUlkLCBydHlwZUlkLCBsb2NhdGlvbik7CiAK KwkvKgorCSAqIFNraXAgdGhlIGxvb2thc2lkZSBjYWNoZSBkdXJpbmcgYW4gZXh0ZW5zaW9u IHNjcmlwdCwgc28gdGhlIHRydXN0CisJICogY2hlY2tzIGJlbG93IHNlZSB0aGUgY2F0YWxv ZyBzdGF0ZS4KKwkgKi8KKwlpZiAoY3JlYXRpbmdfZXh0ZW5zaW9uKQorCQlrZXlfb2sgPSBm YWxzZTsKKwogCWlmIChrZXlfb2spCiAJewogCQlvcGVyT2lkID0gZmluZF9vcGVyX2NhY2hl X2VudHJ5KCZrZXkpOwpAQCAtNTQwLDYgKzU0OSwxMCBAQCBsZWZ0X29wZXIoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBMaXN0ICpvcCwgT2lkIGFyZywgYm9vbCBub0Vycm9yLCBpbnQgbG9jYXRp b24pCiAJICovCiAJa2V5X29rID0gbWFrZV9vcGVyX2NhY2hlX2tleShwc3RhdGUsICZrZXks IG9wLCBJbnZhbGlkT2lkLCBhcmcsIGxvY2F0aW9uKTsKIAorCS8qIFNraXAgdGhlIGxvb2th c2lkZSBjYWNoZSBkdXJpbmcgYW4gZXh0ZW5zaW9uIHNjcmlwdDsgc2VlIG9wZXIoKSAqLwor CWlmIChjcmVhdGluZ19leHRlbnNpb24pCisJCWtleV9vayA9IGZhbHNlOworCiAJaWYgKGtl eV9vaykKIAl7CiAJCW9wZXJPaWQgPSBmaW5kX29wZXJfY2FjaGVfZW50cnkoJmtleSk7CkBA IC02NzIsNyArNjg1LDEyIEBAIG9wZXJfbG9va3VwX2ZhaWx1cmVfZGV0YWlscyhpbnQgZmdj X2ZsYWdzLCBib29sIGlzX3VuYXJ5X29wKQogCSAqLwogCWlmICghKGZnY19mbGFncyAmIEZH Q19OQU1FX1ZJU0lCTEUpKQogCXsKLQkJaWYgKGZnY19mbGFncyAmIEZHQ19TQ0hFTUFfR0lW RU4pCisJCWlmIChmZ2NfZmxhZ3MgJiBGR0NfVU5UUlVTVEVEX1NLSVApCisJCXsKKwkJCSh2 b2lkKSBlcnJkZXRhaWwoIkFuIG9wZXJhdG9yIG9mIHRoYXQgbmFtZSBleGlzdHMsIGJ1dCBp dCBpcyBub3QgdHJ1c3RlZCB3aGlsZSBhbiBleHRlbnNpb24gc2NyaXB0IHJ1bnMuIik7CisJ CQlyZXR1cm4gZXJyaGludCgiT25seSBvYmplY3RzIGluIHBnX2NhdGFsb2csIG93bmVkIGJ5 IGEgc3VwZXJ1c2VyLCBvciBiZWxvbmdpbmcgdG8gdGhlIGV4dGVuc2lvbiBvciBvbmUgaXQg cmVxdWlyZXMgYXJlIHRydXN0ZWQuIik7CisJCX0KKwkJZWxzZSBpZiAoZmdjX2ZsYWdzICYg RkdDX1NDSEVNQV9HSVZFTikKIAkJCXJldHVybiAwOwkJCS8qIHNjaGVtYS1xdWFsaWZpZWQg bmFtZSAqLwogCQllbHNlIGlmICghKGZnY19mbGFncyAmIEZHQ19OQU1FX0VYSVNUUykpCiAJ CQlyZXR1cm4gZXJyZGV0YWlsKCJUaGVyZSBpcyBubyBvcGVyYXRvciBvZiB0aGF0IG5hbWUu Iik7CkBAIC02ODEsMTggKzY5OSwxOSBAQCBvcGVyX2xvb2t1cF9mYWlsdXJlX2RldGFpbHMo aW50IGZnY19mbGFncywgYm9vbCBpc191bmFyeV9vcCkKIAl9CiAKIAkvKgotCSAqIE90aGVy d2lzZSwgdGhlIHByb2JsZW0gbXVzdCBiZSBpbmNvcnJlY3QgYXJndW1lbnQgdHlwZShzKS4K KwkgKiBPdGhlcndpc2UsIHRoZSBwcm9ibGVtIG11c3QgYmUgaW5jb3JyZWN0IGFyZ3VtZW50 IHR5cGUocyk7IG1lbnRpb24gYW55CisJICogc2tpcHBlZCB1bnRydXN0ZWQgY2FuZGlkYXRl IGluIHBsYWNlIG9mIHRoZSB1c3VhbCBoaW50LgogCSAqLwogCWlmIChpc191bmFyeV9vcCkK LQl7CiAJCSh2b2lkKSBlcnJkZXRhaWwoIk5vIG9wZXJhdG9yIG9mIHRoYXQgbmFtZSBhY2Nl cHRzIHRoZSBnaXZlbiBhcmd1bWVudCB0eXBlLiIpOwotCQlyZXR1cm4gZXJyaGludCgiWW91 IG1pZ2h0IG5lZWQgdG8gYWRkIGFuIGV4cGxpY2l0IHR5cGUgY2FzdC4iKTsKLQl9CiAJZWxz ZQotCXsKIAkJKHZvaWQpIGVycmRldGFpbCgiTm8gb3BlcmF0b3Igb2YgdGhhdCBuYW1lIGFj Y2VwdHMgdGhlIGdpdmVuIGFyZ3VtZW50IHR5cGVzLiIpOworCWlmIChmZ2NfZmxhZ3MgJiBG R0NfVU5UUlVTVEVEX1NLSVApCisJCXJldHVybiBlcnJoaW50KCJBbiBvcGVyYXRvciBvZiB0 aGF0IG5hbWUgd2FzIGlnbm9yZWQgYmVjYXVzZSBpdCBpcyBub3QgdHJ1c3RlZCB3aGlsZSBh biBleHRlbnNpb24gc2NyaXB0IHJ1bnMuIik7CisJZWxzZSBpZiAoaXNfdW5hcnlfb3ApCisJ CXJldHVybiBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBhZGQgYW4gZXhwbGljaXQgdHlw ZSBjYXN0LiIpOworCWVsc2UKIAkJcmV0dXJuIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRv IGFkZCBleHBsaWNpdCB0eXBlIGNhc3RzLiIpOwotCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3JlbGF0aW9uLmMKaW5kZXggOGFlYjNlMjE5YWMuLjg1NzY1MjQ4OGY4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwpAQCAtMTQ2Nyw3ICsxNDY3LDgg QEAgcGFyc2VyT3BlblRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgUmFuZ2VWYXIg KnJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKIAkJCQkJIGVycm1zZygicmVs YXRpb24gXCIlcy4lc1wiIGRvZXMgbm90IGV4aXN0IiwKLQkJCQkJCQlyZWxhdGlvbi0+c2No ZW1hbmFtZSwgcmVsYXRpb24tPnJlbG5hbWUpKSk7CisJCQkJCQkJcmVsYXRpb24tPnNjaGVt YW5hbWUsIHJlbGF0aW9uLT5yZWxuYW1lKSwKKwkJCQkJIGVycmRldGFpbF91bnRydXN0ZWRf cmVsYXRpb24ocmVsYXRpb24pKSk7CiAJCWVsc2UKIAkJewogCQkJLyoKQEAgLTE0ODgsNyAr MTQ4OSw4IEBAIHBhcnNlck9wZW5UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IFJh bmdlVmFyICpyZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUpCiAJCQkJZXJlcG9ydChFUlJP UiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKIAkJCQkJCSBl cnJtc2coInJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCi0JCQkJCQkJCXJlbGF0 aW9uLT5yZWxuYW1lKSkpOworCQkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSksCisJCQkJCQkg ZXJyZGV0YWlsX3VudHJ1c3RlZF9yZWxhdGlvbihyZWxhdGlvbikpKTsKIAkJfQogCX0KIAlj YW5jZWxfcGFyc2VyX2VycnBvc2l0aW9uX2NhbGxiYWNrKCZwY2JzdGF0ZSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3R5cGUuYwppbmRleCAyNjJmMjc0MmIwMi4uYWIzNDYxN2VjNGUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBlLmMKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3R5cGUuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4dGVu c2lvbi5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAibm9kZXMv bWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKQEAgLTE3OCw5 ICsxNzksMTkgQEAgTG9va3VwVHlwZU5hbWVFeHRlbmRlZChQYXJzZVN0YXRlICpwc3RhdGUs CiAKIAkJCW5hbWVzcGFjZUlkID0gTG9va3VwRXhwbGljaXROYW1lc3BhY2Uoc2NoZW1hbmFt ZSwgbWlzc2luZ19vayk7CiAJCQlpZiAoT2lkSXNWYWxpZChuYW1lc3BhY2VJZCkpCisJCQl7 CiAJCQkJdHlwb2lkID0gR2V0U3lzQ2FjaGVPaWQyKFRZUEVOQU1FTlNQLCBBbnVtX3BnX3R5 cGVfb2lkLAogCQkJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0odHlwbmFtZSksCiAJCQkJCQkJ CQkJIE9iamVjdElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKworCQkJCS8qCisJCQkJICog VHJlYXQgYW4gdW50cnVzdGVkIG1hdGNoIGFzIG5vbmV4aXN0ZW50LCBhcworCQkJCSAqIFR5 cGVuYW1lR2V0VHlwaWRFeHRlbmRlZCBkb2VzIGZvciB1bnF1YWxpZmllZCBuYW1lcy4KKwkJ CQkgKi8KKwkJCQlpZiAoT2lkSXNWYWxpZCh0eXBvaWQpICYmIGNyZWF0aW5nX2V4dGVuc2lv biAmJgorCQkJCQkhVHlwZUlzVHJ1c3RlZEluRXh0ZW5zaW9uU2NyaXB0KHR5cG9pZCkpCisJ CQkJCXR5cG9pZCA9IEludmFsaWRPaWQ7CisJCQl9CiAJCQllbHNlCiAJCQkJdHlwb2lkID0g SW52YWxpZE9pZDsKIApAQCAtMjE2LDYgKzIyNywyMiBAQCBMb29rdXBUeXBlTmFtZUV4dGVu ZGVkKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlyZXR1cm4gKFR5cGUpIHR1cDsKIH0KIAorLyoK KyAqIGVycmRldGFpbF91bnRydXN0ZWRfdHlwZSBmb3IgYSBUeXBlTmFtZTsgJVRZUEUgcmVm ZXJlbmNlcyBuYW1lIGEgY29sdW1uLAorICogbm90IGEgdHlwZSwgc28gdGhleSBnZXQgbm8g ZGV0YWlsLgorICovCitpbnQKK2VycmRldGFpbF91bnRydXN0ZWRfdHlwZW5hbWUoY29uc3Qg VHlwZU5hbWUgKnR5cGVOYW1lKQoreworCWNoYXIJICAgKnNjaGVtYW5hbWU7CisJY2hhcgkg ICAqdHlwbmFtZTsKKworCWlmICh0eXBlTmFtZS0+cGN0X3R5cGUgfHwgIWNyZWF0aW5nX2V4 dGVuc2lvbikKKwkJcmV0dXJuIDA7CisJRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lKHR5cGVO YW1lLT5uYW1lcywgJnNjaGVtYW5hbWUsICZ0eXBuYW1lKTsKKwlyZXR1cm4gZXJyZGV0YWls X3VudHJ1c3RlZF90eXBlKHNjaGVtYW5hbWUsIHR5cG5hbWUpOworfQorCiAvKgogICogTG9v a3VwVHlwZU5hbWVPaWQKICAqCQlHaXZlbiBhIFR5cGVOYW1lIG9iamVjdCwgbG9va3VwIHRo ZSBwZ190eXBlIHN5c2NhY2hlIGVudHJ5IG9mIHRoZSB0eXBlLgpAQCAtMjQyLDYgKzI2OSw3 IEBAIExvb2t1cFR5cGVOYW1lT2lkKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgVHlwZU5h bWUgKnR5cGVOYW1lLCBib29sIG1pc3Npbmdfb2spCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX09CSkVDVCksCiAJCQkJCSBlcnJtc2coInR5cGUgXCIlc1wiIGRvZXMgbm90 IGV4aXN0IiwKIAkJCQkJCQlUeXBlTmFtZVRvU3RyaW5nKHR5cGVOYW1lKSksCisJCQkJCSBl cnJkZXRhaWxfdW50cnVzdGVkX3R5cGVuYW1lKHR5cGVOYW1lKSwKIAkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIHR5cGVOYW1lLT5sb2NhdGlvbikpKTsKIAogCQlyZXR1cm4g SW52YWxpZE9pZDsKQEAgLTI3MSw2ICsyOTksNyBAQCB0eXBlbmFtZVR5cGUoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBjb25zdCBUeXBlTmFtZSAqdHlwZU5hbWUsIGludDMyICp0eXBtb2RfcCkK IAkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAogCQkJCSBlcnJtc2co InR5cGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKIAkJCQkJCVR5cGVOYW1lVG9TdHJpbmco dHlwZU5hbWUpKSwKKwkJCQkgZXJyZGV0YWlsX3VudHJ1c3RlZF90eXBlbmFtZSh0eXBlTmFt ZSksCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHR5cGVOYW1lLT5sb2NhdGlv bikpKTsKIAlpZiAoISgoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHVwKSktPnR5cGlzZGVm aW5lZCkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTc5OSw3ICs4MjgsOCBAQCBwYXJzZVR5cGVT dHJpbmcoY29uc3QgY2hhciAqc3RyLCBPaWQgKnR5cGVpZF9wLCBpbnQzMiAqdHlwbW9kX3As CiAJCWVyZXR1cm4oZXNjb250ZXh0LCBmYWxzZSwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1VO REVGSU5FRF9PQkpFQ1QpLAogCQkJCSBlcnJtc2coInR5cGUgXCIlc1wiIGRvZXMgbm90IGV4 aXN0IiwKLQkJCQkJCVR5cGVOYW1lVG9TdHJpbmcodHlwZU5hbWUpKSkpOworCQkJCQkJVHlw ZU5hbWVUb1N0cmluZyh0eXBlTmFtZSkpLAorCQkJCSBlcnJkZXRhaWxfdW50cnVzdGVkX3R5 cGVuYW1lKHR5cGVOYW1lKSkpOwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9wbGFuY2FjaGUuYwppbmRleCBhMWI0MDZjZWUyOS4uYTczMjJkYjJkYzkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC02MSw2ICs2MSw3IEBACiAKICNpbmNs dWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgi CisjaW5jbHVkZSAiY29tbWFuZHMvZXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY3V0b3IuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9u b2RlRnVuY3MuaCIKQEAgLTI0Myw2ICsyNDQsNyBAQCBDcmVhdGVDYWNoZWRQbGFuKGNvbnN0 IFJhd1N0bXQgKnJhd19wYXJzZV90cmVlLAogCXBsYW5zb3VyY2UtPnJld3JpdGVSb2xlSWQg PSBJbnZhbGlkT2lkOwogCXBsYW5zb3VyY2UtPnJld3JpdGVSb3dTZWN1cml0eSA9IGZhbHNl OwogCXBsYW5zb3VyY2UtPmRlcGVuZHNPblJMUyA9IGZhbHNlOworCXBsYW5zb3VyY2UtPnBh cnNlZEluRXh0ZW5zaW9uU2NyaXB0ID0gZmFsc2U7CiAJcGxhbnNvdXJjZS0+Z3BsYW4gPSBO VUxMOwogCXBsYW5zb3VyY2UtPmlzX29uZXNob3QgPSBmYWxzZTsKIAlwbGFuc291cmNlLT5p c19jb21wbGV0ZSA9IGZhbHNlOwpAQCAtMzQyLDYgKzM0NCw3IEBAIENyZWF0ZU9uZVNob3RD YWNoZWRQbGFuKFJhd1N0bXQgKnJhd19wYXJzZV90cmVlLAogCXBsYW5zb3VyY2UtPnJld3Jp dGVSb2xlSWQgPSBJbnZhbGlkT2lkOwogCXBsYW5zb3VyY2UtPnJld3JpdGVSb3dTZWN1cml0 eSA9IGZhbHNlOwogCXBsYW5zb3VyY2UtPmRlcGVuZHNPblJMUyA9IGZhbHNlOworCXBsYW5z b3VyY2UtPnBhcnNlZEluRXh0ZW5zaW9uU2NyaXB0ID0gZmFsc2U7CiAJcGxhbnNvdXJjZS0+ Z3BsYW4gPSBOVUxMOwogCXBsYW5zb3VyY2UtPmlzX29uZXNob3QgPSB0cnVlOwogCXBsYW5z b3VyY2UtPmlzX2NvbXBsZXRlID0gZmFsc2U7CkBAIC00NjIsNiArNDY1LDkgQEAgQ29tcGxl dGVDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCXBsYW5zb3Vy Y2UtPnJld3JpdGVSb2xlSWQgPSBHZXRVc2VySWQoKTsKIAkJcGxhbnNvdXJjZS0+cmV3cml0 ZVJvd1NlY3VyaXR5ID0gcm93X3NlY3VyaXR5OwogCisJCS8qIFJlbWVtYmVyIHdoZXRoZXIg YW4gZXh0ZW5zaW9uIHNjcmlwdCB3YXMgcnVubmluZy4gKi8KKwkJcGxhbnNvdXJjZS0+cGFy c2VkSW5FeHRlbnNpb25TY3JpcHQgPSBjcmVhdGluZ19leHRlbnNpb247CisKIAkJLyoKIAkJ ICogQWxzbyBzYXZlIHRoZSBjdXJyZW50IHNlYXJjaF9wYXRoIGluIHRoZSBxdWVyeV9jb250 ZXh0LiAgKFRoaXMKIAkJICogc2hvdWxkIG5vdCBnZW5lcmF0ZSBtdWNoIGV4dHJhIGNydWZ0 IGVpdGhlciwgc2luY2UgYWxtb3N0IGNlcnRhaW5seQpAQCAtNzMzLDYgKzczOSwyMCBAQCBS ZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJ fQogCX0KIAorCS8qCisJICogTmFtZSByZXNvbHV0aW9uIGFwcGxpZXMgZXh0cmEgdHJ1c3Qg Y2hlY2tzIHdoaWxlIGFuIGV4dGVuc2lvbiBzY3JpcHQKKwkgKiBydW5zLCBzbyBhIHRyZWUg YW5hbHl6ZWQgb3V0c2lkZSBvbmUgbXVzdCBub3QgYmUgcmV1c2VkIGluc2lkZSBpdCBvcgor CSAqIHZpY2UgdmVyc2EuICBUaGUgc2VhcmNoX3BhdGggY2hlY2sgYWJvdmUgbmVlZCBub3Qg aGF2ZSBjYXVnaHQgdGhpcy4KKwkgKi8KKwlpZiAocGxhbnNvdXJjZS0+aXNfdmFsaWQgJiYK KwkJcGxhbnNvdXJjZS0+cGFyc2VkSW5FeHRlbnNpb25TY3JpcHQgIT0gY3JlYXRpbmdfZXh0 ZW5zaW9uKQorCXsKKwkJLyogSW52YWxpZGF0ZSB0aGUgcXVlcnl0cmVlIGFuZCBnZW5lcmlj IHBsYW4gKi8KKwkJcGxhbnNvdXJjZS0+aXNfdmFsaWQgPSBmYWxzZTsKKwkJaWYgKHBsYW5z b3VyY2UtPmdwbGFuKQorCQkJcGxhbnNvdXJjZS0+Z3BsYW4tPmlzX3ZhbGlkID0gZmFsc2U7 CisJfQorCiAJLyoKIAkgKiBJZiB0aGUgcXVlcnkgcmV3cml0ZSBwaGFzZSBoYWQgYSBwb3Nz aWJsZSBSTFMgZGVwZW5kZW5jeSwgd2UgbXVzdCByZWRvCiAJICogaXQgaWYgZWl0aGVyIHRo ZSByb2xlIG9yIHRoZSByb3dfc2VjdXJpdHkgc2V0dGluZyBoYXMgY2hhbmdlZC4KQEAgLTkx OCw2ICs5MzgsOSBAQCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwKIAlwbGFuc291cmNlLT5yZXdyaXRlUm9sZUlkID0gR2V0VXNlcklkKCk7 CiAJcGxhbnNvdXJjZS0+cmV3cml0ZVJvd1NlY3VyaXR5ID0gcm93X3NlY3VyaXR5OwogCisJ LyogUmVtZW1iZXIgd2hldGhlciBhbiBleHRlbnNpb24gc2NyaXB0IHdhcyBydW5uaW5nLiAq LworCXBsYW5zb3VyY2UtPnBhcnNlZEluRXh0ZW5zaW9uU2NyaXB0ID0gY3JlYXRpbmdfZXh0 ZW5zaW9uOworCiAJLyoKIAkgKiBBbHNvIHNhdmUgdGhlIGN1cnJlbnQgc2VhcmNoX3BhdGgg aW4gdGhlIHF1ZXJ5X2NvbnRleHQuICAoVGhpcyBzaG91bGQKIAkgKiBub3QgZ2VuZXJhdGUg bXVjaCBleHRyYSBjcnVmdCBlaXRoZXIsIHNpbmNlIGFsbW9zdCBjZXJ0YWlubHkgdGhlIHBh dGgKQEAgLTE0OTgsNiArMTUyMSw3IEBAIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVWYWxpZGl0 eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJQXNzZXJ0KHBsYW4gPT0g cGxhbnNvdXJjZS0+Z3BsYW4pOwogCUFzc2VydChwbGFuc291cmNlLT5zZWFyY2hfcGF0aCAh PSBOVUxMKTsKIAlBc3NlcnQoU2VhcmNoUGF0aE1hdGNoZXNDdXJyZW50RW52aXJvbm1lbnQo cGxhbnNvdXJjZS0+c2VhcmNoX3BhdGgpKTsKKwlBc3NlcnQocGxhbnNvdXJjZS0+cGFyc2Vk SW5FeHRlbnNpb25TY3JpcHQgPT0gY3JlYXRpbmdfZXh0ZW5zaW9uKTsKIAogCS8qIFdlIGRv bid0IHN1cHBvcnQgb25lc2hvdCBwbGFucyBoZXJlLiAqLwogCWlmIChwbGFuc291cmNlLT5p c19vbmVzaG90KQpAQCAtMTYyMyw2ICsxNjQ3LDEwIEBAIENhY2hlZFBsYW5Jc1NpbXBseVZh bGlkKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIENhY2hlZFBsYW4gKnBsYW4sCiAJ aWYgKCFTZWFyY2hQYXRoTWF0Y2hlc0N1cnJlbnRFbnZpcm9ubWVudChwbGFuc291cmNlLT5z ZWFyY2hfcGF0aCkpCiAJCXJldHVybiBmYWxzZTsKIAorCS8qIEFyZSB3ZSBpbiB0aGUgc2Ft ZSBleHRlbnNpb24tc2NyaXB0IGNvbnRleHQgYXMgd2hlbiB3ZSBtYWRlIGl0PyAqLworCWlm IChwbGFuc291cmNlLT5wYXJzZWRJbkV4dGVuc2lvblNjcmlwdCAhPSBjcmVhdGluZ19leHRl bnNpb24pCisJCXJldHVybiBmYWxzZTsKKwogCS8qIEl0J3Mgc3RpbGwgZ29vZC4gIEJ1bXAg cmVmY291bnQgaWYgcmVxdWVzdGVkLiAqLwogCWlmIChvd25lcikKIAl7CkBAIC0xNzQzLDYg KzE3NzEsNyBAQCBDb3B5Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl KQogCW5ld3NvdXJjZS0+cmV3cml0ZVJvbGVJZCA9IHBsYW5zb3VyY2UtPnJld3JpdGVSb2xl SWQ7CiAJbmV3c291cmNlLT5yZXdyaXRlUm93U2VjdXJpdHkgPSBwbGFuc291cmNlLT5yZXdy aXRlUm93U2VjdXJpdHk7CiAJbmV3c291cmNlLT5kZXBlbmRzT25STFMgPSBwbGFuc291cmNl LT5kZXBlbmRzT25STFM7CisJbmV3c291cmNlLT5wYXJzZWRJbkV4dGVuc2lvblNjcmlwdCA9 IHBsYW5zb3VyY2UtPnBhcnNlZEluRXh0ZW5zaW9uU2NyaXB0OwogCiAJbmV3c291cmNlLT5n cGxhbiA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNw YWNlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oCmluZGV4IDk0NTNhM2U0 OTMyLi5kOWU1ZjUzYzllYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1l c3BhY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oCkBAIC01Niw2 ICs1Niw4IEBAIHR5cGVkZWYgc3RydWN0IF9GdW5jQ2FuZGlkYXRlTGlzdAogI2RlZmluZSBG R0NfQVJHTkFNRVNfVkFMSUQJMHgwMTAwCS8qIEZvdW5kIGEgZnVsbHktdmFsaWQgdXNlIG9m IGFyZ25hbWVzICovCiAvKiBUaGVzZSBiaXRzIGFyZSBhY3R1YWxseSBmaWxsZWQgYnkgZnVu Y19nZXRfZGV0YWlsOiAqLwogI2RlZmluZSBGR0NfVkFSSUFESUNfRkFJTAkweDAyMDAJLyog RGlzYWxsb3dlZCBWQVJJQURJQyB3aXRoIG5hbWVkIGFyZ3MgKi8KKy8qIFRoaXMgYml0IGlz IHNldCBvbmx5IHdoaWxlIGFuIGV4dGVuc2lvbiBzY3JpcHQgaXMgcnVubmluZzogKi8KKyNk ZWZpbmUgRkdDX1VOVFJVU1RFRF9TS0lQCTB4MDQwMAkvKiBJZ25vcmVkIGFuIHVudHJ1c3Rl ZCBjYW5kaWRhdGUgKi8KIAogLyoKICAqIFJlc3VsdCBvZiBjaGVja1RlbXBOYW1lc3BhY2VT dGF0dXMKQEAgLTEyMiw2ICsxMjQsMTIgQEAgZXh0ZXJuIEZ1bmNDYW5kaWRhdGVMaXN0IEZ1 bmNuYW1lR2V0Q2FuZGlkYXRlcyhMaXN0ICpuYW1lcywKIAkJCQkJCQkJCQkJICAgYm9vbCBp bmNsdWRlX291dF9hcmd1bWVudHMsCiAJCQkJCQkJCQkJCSAgIGJvb2wgbWlzc2luZ19vaywK IAkJCQkJCQkJCQkJICAgaW50ICpmZ2NfZmxhZ3MpOworZXh0ZXJuIGJvb2wgT2JqZWN0SXNU cnVzdGVkSW5FeHRlbnNpb25TY3JpcHQoT2lkIGNsYXNzSWQsIE9pZCBvYmplY3RJZCwKKwkJ CQkJCQkJCQkJIE9pZCBuYW1lc3BhY2VJZCwgT2lkIG93bmVySWQpOworZXh0ZXJuIGJvb2wg VHlwZUlzVHJ1c3RlZEluRXh0ZW5zaW9uU2NyaXB0KE9pZCB0eXBpZCk7CitleHRlcm4gaW50 CWVycmRldGFpbF91bnRydXN0ZWRfcmVsYXRpb24oY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9u KTsKK2V4dGVybiBpbnQJZXJyZGV0YWlsX3VudHJ1c3RlZF90eXBlKGNvbnN0IGNoYXIgKnNj aGVtYW5hbWUsCisJCQkJCQkJCQkgY29uc3QgY2hhciAqdHlwbmFtZSk7CiBleHRlcm4gYm9v bCBGdW5jdGlvbklzVmlzaWJsZShPaWQgZnVuY2lkKTsKIAogZXh0ZXJuIE9pZAlPcGVybmFt ZUdldE9wcmlkKExpc3QgKm5hbWVzLCBPaWQgb3BybGVmdCwgT2lkIG9wcnJpZ2h0KTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmgKaW5kZXggOGVhZWMyZDRmNjguLjMyNzUwMmY5MzEx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaApAQCAtMzQsNiArMzQsNyBAQCBleHRl cm4gUEdETExJTVBPUlQgT2lkIEN1cnJlbnRFeHRlbnNpb25PYmplY3Q7CiAKIGV4dGVybiB2 b2lkIEdldEV4dGVuc2lvbkNyZWF0aW9uU3RhdGUoYm9vbCAqY3JlYXRpbmcsIE9pZCAqZXh0 ZW5zaW9uT2JqZWN0KTsKIGV4dGVybiB2b2lkIFNldEV4dGVuc2lvbkNyZWF0aW9uU3RhdGUo Ym9vbCBjcmVhdGluZywgT2lkIGV4dGVuc2lvbk9iamVjdCk7CitleHRlcm4gYm9vbCBDdXJy ZW50RXh0ZW5zaW9uUmVxdWlyZXMoT2lkIGV4dGVuc2lvbklkKTsKIAogCiBleHRlcm4gT2Jq ZWN0QWRkcmVzcyBDcmVhdGVFeHRlbnNpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVF eHRlbnNpb25TdG10ICpzdG10KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV90eXBlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCmluZGV4IDc5 ZjEwYjViNWIyLi5mODFhODFlYzZiYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX3R5cGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCkBA IC0yOSw2ICsyOSw3IEBAIGV4dGVybiBPaWQJTG9va3VwVHlwZU5hbWVPaWQoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBjb25zdCBUeXBlTmFtZSAqdHlwZU5hbWUsCiBleHRlcm4gVHlwZSB0eXBl bmFtZVR5cGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBUeXBlTmFtZSAqdHlwZU5hbWUs CiAJCQkJCQkgaW50MzIgKnR5cG1vZF9wKTsKIGV4dGVybiBPaWQJdHlwZW5hbWVUeXBlSWQo UGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBUeXBlTmFtZSAqdHlwZU5hbWUpOworZXh0ZXJu IGludAllcnJkZXRhaWxfdW50cnVzdGVkX3R5cGVuYW1lKGNvbnN0IFR5cGVOYW1lICp0eXBl TmFtZSk7CiBleHRlcm4gdm9pZCB0eXBlbmFtZVR5cGVJZEFuZE1vZChQYXJzZVN0YXRlICpw c3RhdGUsIGNvbnN0IFR5cGVOYW1lICp0eXBlTmFtZSwKIAkJCQkJCQkJIE9pZCAqdHlwZWlk X3AsIGludDMyICp0eXBtb2RfcCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKaW5kZXggYTAz NTVlNzljMjguLjA0MmVhMTI4ODY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9w bGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAtMTI5 LDYgKzEyOSw3IEBAIHR5cGVkZWYgc3RydWN0IENhY2hlZFBsYW5Tb3VyY2UKIAlPaWQJCQly ZXdyaXRlUm9sZUlkOwkvKiBSb2xlIElEIHdlIGRpZCByZXdyaXRpbmcgZm9yICovCiAJYm9v bAkJcmV3cml0ZVJvd1NlY3VyaXR5OyAvKiByb3dfc2VjdXJpdHkgdXNlZCBkdXJpbmcgcmV3 cml0ZSAqLwogCWJvb2wJCWRlcGVuZHNPblJMUzsJLyogaXMgcmV3cml0dGVuIHF1ZXJ5IHNw ZWNpZmljIHRvIHRoZSBhYm92ZT8gKi8KKwlib29sCQlwYXJzZWRJbkV4dGVuc2lvblNjcmlw dDsJLyogY3JlYXRpbmdfZXh0ZW5zaW9uIGF0IHBhcnNlICovCiAJLyogSWYgd2UgaGF2ZSBh IGdlbmVyaWMgcGxhbiwgdGhpcyBpcyBhIHJlZmVyZW5jZS1jb3VudGVkIGxpbmsgdG8gaXQ6 ICovCiAJc3RydWN0IENhY2hlZFBsYW4gKmdwbGFuOwkvKiBnZW5lcmljIHBsYW4sIG9yIE5V TEwgaWYgbm90IHZhbGlkICovCiAJLyogU29tZSBzdGF0ZSBmbGFnczogKi8KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01ha2VmaWxlIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUKaW5kZXggZDFiMGI4MWU1ZmQu LjVmZTY3OGY0YmUwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aW9ucy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9N YWtlZmlsZQpAQCAtOSw2ICs5LDEwIEBAIEVYVEVOU0lPTiA9IHRlc3RfZXh0MSB0ZXN0X2V4 dDIgdGVzdF9leHQzIHRlc3RfZXh0NCB0ZXN0X2V4dDUgdGVzdF9leHQ2IFwKICAgICAgICAg ICAgIHRlc3RfZXh0X2N5Y2xpYzEgdGVzdF9leHRfY3ljbGljMiBcCiAgICAgICAgICAgICB0 ZXN0X2V4dF9leHRzY2hlbWEgXAogICAgICAgICAgICAgdGVzdF9leHRfZXZ0dHJpZyBcCisg ICAgICAgICAgICB0ZXN0X2V4dF9vdmVybG9hZCB0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3Qg XAorICAgICAgICAgICAgdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlciBcCisgICAgICAgICAg ICB0ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxlbCBcCisgICAgICAgICAgICB0ZXN0X2V4dF9v dmVybG9hZF9yZXEgdGVzdF9leHRfb3ZlcmxvYWRfcmVxX2RlcCBcCiAgICAgICAgICAgICB0 ZXN0X2V4dF9zZXRfc2NoZW1hIFwKICAgICAgICAgICAgIHRlc3RfZXh0X3JlcV9zY2hlbWEx IHRlc3RfZXh0X3JlcV9zY2hlbWEyIHRlc3RfZXh0X3JlcV9zY2hlbWEzCiAKQEAgLTI1LDYg KzI5LDIyIEBAIERBVEEgPSB0ZXN0X2V4dDEtLTEuMC5zcWwgdGVzdF9leHQyLS0xLjAuc3Fs IHRlc3RfZXh0My0tMS4wLnNxbCBcCiAgICAgICAgdGVzdF9leHRfY3ljbGljMS0tMS4wLnNx bCB0ZXN0X2V4dF9jeWNsaWMyLS0xLjAuc3FsIFwKICAgICAgICB0ZXN0X2V4dF9leHRzY2hl bWEtLTEuMC5zcWwgXAogICAgICAgIHRlc3RfZXh0X2V2dHRyaWctLTEuMC5zcWwgdGVzdF9l eHRfZXZ0dHJpZy0tMS4wLS0yLjAuc3FsIFwKKyAgICAgICB0ZXN0X2V4dF9vdmVybG9hZC0t MS4wLnNxbCBcCisgICAgICAgdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0xLjAuc3FsIFwK KyAgICAgICB0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTIuMC5zcWwgXAorICAgICAgIHRl c3RfZXh0X292ZXJsb2FkX3N0cmljdC0tMy4wLnNxbCBcCisgICAgICAgdGVzdF9leHRfb3Zl cmxvYWRfc3RyaWN0LS00LjAuc3FsIFwKKyAgICAgICB0ZXN0X2V4dF9vdmVybG9hZF9zdHJp Y3QtLTUuMC5zcWwgXAorICAgICAgIHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNi4wLnNx bCBcCisgICAgICAgdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS03LjAuc3FsIFwKKyAgICAg ICB0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTguMC5zcWwgXAorICAgICAgIHRlc3RfZXh0 X292ZXJsb2FkX3N0cmljdC0tOS4wLnNxbCBcCisgICAgICAgdGVzdF9leHRfb3ZlcmxvYWRf c3RyaWN0LS0xMC4wLnNxbCBcCisgICAgICAgdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlci0t MS4wLnNxbCBcCisgICAgICAgdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLS0yLjAu c3FsIFwKKyAgICAgICB0ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxlbC0tMS4wLnNxbCBcCisg ICAgICAgdGVzdF9leHRfb3ZlcmxvYWRfcmVxLS0xLjAuc3FsIFwKKyAgICAgICB0ZXN0X2V4 dF9vdmVybG9hZF9yZXFfZGVwLS0xLjAuc3FsIFwKICAgICAgICB0ZXN0X2V4dF9zZXRfc2No ZW1hLS0xLjAuc3FsIFwKICAgICAgICB0ZXN0X2V4dF9yZXFfc2NoZW1hMS0tMS4wLnNxbCBc CiAgICAgICAgdGVzdF9leHRfcmVxX3NjaGVtYTItLTEuMC5zcWwgXApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNp b25zLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL2V4cGVjdGVkL3Rl c3RfZXh0ZW5zaW9ucy5vdXQKaW5kZXggMWI1ZGViZGVlYjEuLjM5MmRlMzU5OGI3IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0 X2V4dGVuc2lvbnMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25z L2V4cGVjdGVkL3Rlc3RfZXh0ZW5zaW9ucy5vdXQKQEAgLTY2NywzICs2NjcsMzUxIEBAIFNF TEVDVCB0ZXN0X3NfZGVwLmRlcF9yZXEyKCk7CiAKIERST1AgRVhURU5TSU9OIHRlc3RfZXh0 X3JlcV9zY2hlbWExIENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIGV4dGVu c2lvbiB0ZXN0X2V4dF9yZXFfc2NoZW1hMgorLS0gVmVyaWZ5IHRoYXQgbmFtZSByZXNvbHV0 aW9uIGR1cmluZyBhbiBleHRlbnNpb24gc2NyaXB0IGNhbm5vdCBiZSBjYXB0dXJlZAorLS0g Ynkgb2JqZWN0cyBhbiB1bnByaXZpbGVnZWQgdXNlciBwbGFudGVkIGluIHRoZSBleHRlbnNp b24ncyBzY2hlbWEuCitDUkVBVEUgUk9MRSByZWdyZXNzX2V4dF91c2VyOworQ1JFQVRFIFND SEVNQSB0ZXN0X292ZXJsb2FkOworR1JBTlQgQ1JFQVRFLCBVU0FHRSBPTiBTQ0hFTUEgdGVz dF9vdmVybG9hZCBUTyByZWdyZXNzX2V4dF91c2VyOworLS0gQXMgdGhlIHVucHJpdmlsZWdl ZCB1c2VyLCBwbGFudCBkaWZmZXJlbnRseS10eXBlZCBzaWJsaW5ncyBhbmQgdGhlIHNvbGUK Ky0tIGRlZmluaXRpb24gb2YgaGVscGVyX29ubHkoKS4KK1NFVCBST0xFIHJlZ3Jlc3NfZXh0 X3VzZXI7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9vdmVybG9hZC5mKHRleHQpIFJFVFVSTlMg dGV4dAorICAgIEFTICQkIFNFTEVDVCAnYXR0YWNrZXInOjp0ZXh0ICQkIExBTkdVQUdFIHNx bCBJTU1VVEFCTEU7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9vdmVybG9hZC5vcGltcGxfYmFk KHRleHQsIHRleHQpIFJFVFVSTlMgdGV4dAorICAgIEFTICQkIFNFTEVDVCAnYXR0YWNrZXIn Ojp0ZXh0ICQkIExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CitDUkVBVEUgT1BFUkFUT1IgdGVz dF9vdmVybG9hZC4jIyMgKGxlZnRhcmcgPSB0ZXh0LCByaWdodGFyZyA9IHRleHQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gdGVzdF9vdmVybG9h ZC5vcGltcGxfYmFkKTsKK0NSRUFURSBGVU5DVElPTiB0ZXN0X292ZXJsb2FkLmhlbHBlcl9v bmx5KHRleHQpIFJFVFVSTlMgdGV4dAorICAgIEFTICQkIFNFTEVDVCAnYXR0YWNrZXInOjp0 ZXh0ICQkIExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9v dmVybG9hZC5vcGltcGxfb25seSh0ZXh0LCB0ZXh0KSBSRVRVUk5TIHRleHQKKyAgICBBUyAk JCBTRUxFQ1QgJ2F0dGFja2VyJzo6dGV4dCAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFOwor Q1JFQVRFIE9QRVJBVE9SIHRlc3Rfb3ZlcmxvYWQuQEBAIChsZWZ0YXJnID0gdGV4dCwgcmln aHRhcmcgPSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5j dGlvbiA9IHRlc3Rfb3ZlcmxvYWQub3BpbXBsX29ubHkpOworQ1JFQVRFIEZVTkNUSU9OIHRl c3Rfb3ZlcmxvYWQub3BpbXBsX3ZjKHZhcmNoYXIsIHZhcmNoYXIpIFJFVFVSTlMgdGV4dAor ICAgIEFTICQkIFNFTEVDVCAnYXR0YWNrZXInOjp0ZXh0ICQkIExBTkdVQUdFIHNxbCBJTU1V VEFCTEU7CitDUkVBVEUgT1BFUkFUT1IgdGVzdF9vdmVybG9hZC48PDwgKGxlZnRhcmcgPSB2 YXJjaGFyLCByaWdodGFyZyA9IHZhcmNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZ1bmN0aW9uID0gdGVzdF9vdmVybG9hZC5vcGltcGxfdmMpOworLS0gQSBw bGFudGVkIHRhYmxlIGFuZCBkb21haW4sIGZvciB0aGUgcmVsYXRpb24gYW5kIHR5cGUgbG9v a3Vwcy4KK0NSRUFURSBUQUJMRSB0ZXN0X292ZXJsb2FkLmNmZyAod2hvIHRleHQpOworQ1JF QVRFIERPTUFJTiB0ZXN0X292ZXJsb2FkLnBsYW50ZWRfZG9tIEFTIHRleHQ7CitSRVNFVCBS T0xFOworLS0gQSBzY2hlbWEgb3V0c2lkZSB0aGUgc2NyaXB0J3Mgc2VhcmNoIHBhdGgsIGhv bGRpbmcgYSBwbGFudGVkIG9wZXJhdG9yLgorQ1JFQVRFIFNDSEVNQSB0ZXN0X292ZXJsb2Fk X290aGVyOworR1JBTlQgQ1JFQVRFLCBVU0FHRSBPTiBTQ0hFTUEgdGVzdF9vdmVybG9hZF9v dGhlciBUTyByZWdyZXNzX2V4dF91c2VyOworU0VUIFJPTEUgcmVncmVzc19leHRfdXNlcjsK K0NSRUFURSBPUEVSQVRPUiB0ZXN0X292ZXJsb2FkX290aGVyLiYmJiAobGVmdGFyZyA9IHRl eHQsIHJpZ2h0YXJnID0gdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZnVuY3Rpb24gPSB0ZXN0X292ZXJsb2FkLm9waW1wbF9vbmx5KTsKK1JFU0VU IFJPTEU7CistLSBJbnN0YWxsaW5nIHRoZSBleHRlbnNpb24gcmVzb2x2ZXMgZignYWJjJykg YW5kIHRoZSAjIyMgb3BlcmF0b3IgdG8gdGhlCistLSBleHRlbnNpb24ncyBvd24gKHRydXN0 ZWQpIG9iamVjdHMsIG5vdCB0aGUgcGxhbnRlZCBvbmVzLgorQ1JFQVRFIEVYVEVOU0lPTiB0 ZXN0X2V4dF9vdmVybG9hZCBTQ0hFTUEgdGVzdF9vdmVybG9hZDsKK1NFTEVDVCBmbiwgb3Ag RlJPTSB0ZXN0X292ZXJsb2FkLmNhcHR1cmVkOworICAgIGZuICAgICB8ICAgIG9wICAgICAK Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgZXh0ZW5zaW9uIHwgZXh0ZW5zaW9uCisoMSBy b3cpCisKKy0tIE91dHNpZGUgb2YgZXh0ZW5zaW9uIHNjcmlwdHMsIG9yZGluYXJ5IHJlc29s dXRpb24gcnVsZXMgYXJlIHVuY2hhbmdlZDogdGhlCistLSBzYW1lIGNhbGxzIHJlYWNoIHRo ZSBwbGFudGVkIG9iamVjdHMuCitTRUxFQ1QgdGVzdF9vdmVybG9hZC5mKCdhYmMnKSBBUyBm biwKKyAgICAgICAoJ2EnIE9QRVJBVE9SKHRlc3Rfb3ZlcmxvYWQuIyMjKSAnYicpIEFTIG9w OworICAgIGZuICAgIHwgICAgb3AgICAgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBhdHRh Y2tlciB8IGF0dGFja2VyCisoMSByb3cpCisKKy0tIFdoZW4gb25seSBhbiB1bnRydXN0ZWQg Y2FuZGlkYXRlIGV4aXN0cywgdGhlIHNjcmlwdCByZWZ1c2VzIHRvIGNhbGwgaXQuCitDUkVB VEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdCBTQ0hFTUEgdGVzdF9vdmVy bG9hZDsgIC0tIGZhaWxzCitFUlJPUjogIGZ1bmN0aW9uIHRlc3Rfb3ZlcmxvYWQuaGVscGVy X29ubHkodW5rbm93bikgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogICAgIFNFTEVDVCB0ZXN0 X292ZXJsb2FkLmhlbHBlcl9vbmx5KCdhYmMnKSBBUyByCisgICAgICAgICAgICAgICAgICAg XgorREVUQUlMOiAgQSBmdW5jdGlvbiBvZiB0aGF0IG5hbWUgZXhpc3RzLCBidXQgaXQgaXMg bm90IHRydXN0ZWQgd2hpbGUgYW4gZXh0ZW5zaW9uIHNjcmlwdCBydW5zLgorSElOVDogIE9u bHkgb2JqZWN0cyBpbiBwZ19jYXRhbG9nLCBvd25lZCBieSBhIHN1cGVydXNlciwgb3IgYmVs b25naW5nIHRvIHRoZSBleHRlbnNpb24gb3Igb25lIGl0IHJlcXVpcmVzIGFyZSB0cnVzdGVk LgorUVVFUlk6ICBDUkVBVEUgVEFCTEUgdGVzdF9vdmVybG9hZC5jYXB0dXJlZCBBUworICAg IFNFTEVDVCB0ZXN0X292ZXJsb2FkLmhlbHBlcl9vbmx5KCdhYmMnKSBBUyByCitDT05URVhU OiAgZXh0ZW5zaW9uIHNjcmlwdCBmaWxlICJ0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTEu MC5zcWwiLCBuZWFyIGxpbmUgOAorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9h ZF9zdHJpY3QgU0NIRU1BIHRlc3Rfb3ZlcmxvYWQgVkVSU0lPTiAnMi4wJzsgIC0tIGZhaWxz CitFUlJPUjogIG9wZXJhdG9yIGRvZXMgbm90IGV4aXN0OiB1bmtub3duIHRlc3Rfb3Zlcmxv YWQuQEBAIHVua25vd24KK0xJTkUgMjogICAgIFNFTEVDVCAoJ2EnIE9QRVJBVE9SKHRlc3Rf b3ZlcmxvYWQuQEBAKSAnYicpIEFTIHIKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RF VEFJTDogIEFuIG9wZXJhdG9yIG9mIHRoYXQgbmFtZSBleGlzdHMsIGJ1dCBpdCBpcyBub3Qg dHJ1c3RlZCB3aGlsZSBhbiBleHRlbnNpb24gc2NyaXB0IHJ1bnMuCitISU5UOiAgT25seSBv YmplY3RzIGluIHBnX2NhdGFsb2csIG93bmVkIGJ5IGEgc3VwZXJ1c2VyLCBvciBiZWxvbmdp bmcgdG8gdGhlIGV4dGVuc2lvbiBvciBvbmUgaXQgcmVxdWlyZXMgYXJlIHRydXN0ZWQuCitR VUVSWTogIENSRUFURSBUQUJMRSB0ZXN0X292ZXJsb2FkLmNhcHR1cmVkIEFTCisgICAgU0VM RUNUICgnYScgT1BFUkFUT1IodGVzdF9vdmVybG9hZC5AQEApICdiJykgQVMgcgorQ09OVEVY VDogIGV4dGVuc2lvbiBzY3JpcHQgZmlsZSAidGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0y LjAuc3FsIiwgbmVhciBsaW5lIDgKKy0tIEEgcGxhbnRlZCBvcGVyYXRvciBuYW1lZCBhcyBD T01NVVRBVE9SIGlzIHJlZnVzZWQgYXMgd2VsbC4KK0NSRUFURSBFWFRFTlNJT04gdGVzdF9l eHRfb3ZlcmxvYWRfc3RyaWN0IFNDSEVNQSB0ZXN0X292ZXJsb2FkIFZFUlNJT04gJzMuMCc7 ICAtLSBmYWlscworRVJST1I6ICBvcGVyYXRvciBkb2VzIG5vdCBleGlzdDogY2hhcmFjdGVy IHZhcnlpbmcgPDw8IGNoYXJhY3RlciB2YXJ5aW5nCitERVRBSUw6ICBBbiBvcGVyYXRvciBv ZiB0aGF0IG5hbWUgZXhpc3RzLCBidXQgaXQgaXMgbm90IHRydXN0ZWQgd2hpbGUgYW4gZXh0 ZW5zaW9uIHNjcmlwdCBydW5zLgorSElOVDogIE9ubHkgb2JqZWN0cyBpbiBwZ19jYXRhbG9n LCBvd25lZCBieSBhIHN1cGVydXNlciwgb3IgYmVsb25naW5nIHRvIHRoZSBleHRlbnNpb24g b3Igb25lIGl0IHJlcXVpcmVzIGFyZSB0cnVzdGVkLgorQ09OVEVYVDogIFNRTCBzdGF0ZW1l bnQgIkNSRUFURSBPUEVSQVRPUiB0ZXN0X292ZXJsb2FkLj4+PiAobGVmdGFyZyA9IHZhcmNo YXIsIHJpZ2h0YXJnID0gdmFyY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZ1bmN0aW9uID0gdGVzdF9vdmVybG9hZC5vcGltcGwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb21tdXRhdG9yID0gPDw8KSIKK2V4dGVuc2lvbiBzY3JpcHQg ZmlsZSAidGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0zLjAuc3FsIiwgbmVhciBsaW5lIDgK Ky0tIFRydXN0ZWQgY2FuZGlkYXRlIHZpc2libGUgYnV0IGFyZ3VtZW50cyBkb24ndCBtYXRj aDogYXJndW1lbnQgZXJyb3IsIHdpdGgKKy0tIHRoZSB1bnRydXN0ZWQgY2FuZGlkYXRlIGFz IGEgaGludC4KK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0IFND SEVNQSB0ZXN0X292ZXJsb2FkIFZFUlNJT04gJzQuMCc7ICAtLSBmYWlscworRVJST1I6ICBm dW5jdGlvbiB0ZXN0X292ZXJsb2FkLmYoaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUg MjogICAgIFNFTEVDVCB0ZXN0X292ZXJsb2FkLmYoMSkgQVMgcgorICAgICAgICAgICAgICAg ICAgIF4KK0RFVEFJTDogIE5vIGZ1bmN0aW9uIG9mIHRoYXQgbmFtZSBhY2NlcHRzIHRoZSBn aXZlbiBhcmd1bWVudCB0eXBlcy4KK0hJTlQ6ICBBIGZ1bmN0aW9uIG9mIHRoYXQgbmFtZSB3 YXMgaWdub3JlZCBiZWNhdXNlIGl0IGlzIG5vdCB0cnVzdGVkIHdoaWxlIGFuIGV4dGVuc2lv biBzY3JpcHQgcnVucy4KK1FVRVJZOiAgQ1JFQVRFIFRBQkxFIHRlc3Rfb3ZlcmxvYWQuY2Fw dHVyZWQgQVMKKyAgICBTRUxFQ1QgdGVzdF9vdmVybG9hZC5mKDEpIEFTIHIKK0NPTlRFWFQ6 ICBleHRlbnNpb24gc2NyaXB0IGZpbGUgInRlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNC4w LnNxbCIsIG5lYXIgbGluZSA4CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2Fk X3N0cmljdCBTQ0hFTUEgdGVzdF9vdmVybG9hZCBWRVJTSU9OICc1LjAnOyAgLS0gZmFpbHMK K0VSUk9SOiAgb3BlcmF0b3IgZG9lcyBub3QgZXhpc3Q6IGludGVnZXIgdGVzdF9vdmVybG9h ZC4jIyMgaW50ZWdlcgorTElORSAyOiAgICAgU0VMRUNUICgxIE9QRVJBVE9SKHRlc3Rfb3Zl cmxvYWQuIyMjKSAyKSBBUyByCisgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAg Tm8gb3BlcmF0b3Igb2YgdGhhdCBuYW1lIGFjY2VwdHMgdGhlIGdpdmVuIGFyZ3VtZW50IHR5 cGVzLgorSElOVDogIEFuIG9wZXJhdG9yIG9mIHRoYXQgbmFtZSB3YXMgaWdub3JlZCBiZWNh dXNlIGl0IGlzIG5vdCB0cnVzdGVkIHdoaWxlIGFuIGV4dGVuc2lvbiBzY3JpcHQgcnVucy4K K1FVRVJZOiAgQ1JFQVRFIFRBQkxFIHRlc3Rfb3ZlcmxvYWQuY2FwdHVyZWQgQVMKKyAgICBT RUxFQ1QgKDEgT1BFUkFUT1IodGVzdF9vdmVybG9hZC4jIyMpIDIpIEFTIHIKK0NPTlRFWFQ6 ICBleHRlbnNpb24gc2NyaXB0IGZpbGUgInRlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNS4w LnNxbCIsIG5lYXIgbGluZSA3CistLSBVbnRydXN0ZWQgY2FuZGlkYXRlIG91dHNpZGUgdGhl IHNlYXJjaCBwYXRoOiBvcmRpbmFyeSBub3QtaW4tcGF0aCBlcnJvci4KK0NSRUFURSBFWFRF TlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0IFNDSEVNQSB0ZXN0X292ZXJsb2FkIFZF UlNJT04gJzYuMCc7ICAtLSBmYWlscworRVJST1I6ICBvcGVyYXRvciBkb2VzIG5vdCBleGlz dDogdW5rbm93biAmJiYgdW5rbm93bgorTElORSAyOiAgICAgU0VMRUNUICgnYScgJiYmICdi JykgQVMgcgorICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgQW4gb3BlcmF0 b3Igb2YgdGhhdCBuYW1lIGV4aXN0cywgYnV0IGl0IGlzIG5vdCBpbiB0aGUgc2VhcmNoX3Bh dGguCitRVUVSWTogIENSRUFURSBUQUJMRSB0ZXN0X292ZXJsb2FkLmNhcHR1cmVkIEFTCisg ICAgU0VMRUNUICgnYScgJiYmICdiJykgQVMgcgorQ09OVEVYVDogIGV4dGVuc2lvbiBzY3Jp cHQgZmlsZSAidGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS02LjAuc3FsIiwgbmVhciBsaW5l IDcKKy0tIEEgcGxhbnRlZCByZWxhdGlvbiBvciB0eXBlIGlzIHJlZnVzZWQgd2hldGhlciB0 aGUgc2NyaXB0IHF1YWxpZmllcyB0aGUKKy0tIG5hbWUgd2l0aCB0aGUgc2NoZW1hIG9yIGxl YXZlcyBpdCB0byBzZWFyY2hfcGF0aC4KK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3Zl cmxvYWRfc3RyaWN0IFNDSEVNQSB0ZXN0X292ZXJsb2FkIFZFUlNJT04gJzcuMCc7ICAtLSBm YWlscworRVJST1I6ICByZWxhdGlvbiAidGVzdF9vdmVybG9hZC5jZmciIGRvZXMgbm90IGV4 aXN0CitMSU5FIDE6IElOU0VSVCBJTlRPIHRlc3Rfb3ZlcmxvYWQuY2ZnIFZBTFVFUyAoJ2V4 dGVuc2lvbicpCisgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEEgcmVsYXRpb24g b2YgdGhhdCBuYW1lIGV4aXN0cywgYnV0IGl0IGlzIG5vdCB0cnVzdGVkIHdoaWxlIGFuIGV4 dGVuc2lvbiBzY3JpcHQgcnVucy4KK0hJTlQ6ICBPbmx5IG9iamVjdHMgaW4gcGdfY2F0YWxv Zywgb3duZWQgYnkgYSBzdXBlcnVzZXIsIG9yIGJlbG9uZ2luZyB0byB0aGUgZXh0ZW5zaW9u IG9yIG9uZSBpdCByZXF1aXJlcyBhcmUgdHJ1c3RlZC4KK1FVRVJZOiAgSU5TRVJUIElOVE8g dGVzdF9vdmVybG9hZC5jZmcgVkFMVUVTICgnZXh0ZW5zaW9uJykKK0NPTlRFWFQ6ICBleHRl bnNpb24gc2NyaXB0IGZpbGUgInRlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNy4wLnNxbCIs IG5lYXIgbGluZSAxMgorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9zdHJp Y3QgU0NIRU1BIHRlc3Rfb3ZlcmxvYWQgVkVSU0lPTiAnOC4wJzsgIC0tIGZhaWxzCitFUlJP UjogIHR5cGUgdGVzdF9vdmVybG9hZC5wbGFudGVkX2RvbSBkb2VzIG5vdCBleGlzdAorTElO RSAxOiBDUkVBVEUgRlVOQ1RJT04gdGVzdF9vdmVybG9hZC5nKHRlc3Rfb3ZlcmxvYWQucGxh bnRlZF9kb20pIFIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitERVRBSUw6ICBBIHR5cGUgb2YgdGhhdCBuYW1lIGV4aXN0cywgYnV0IGl0IGlzIG5v dCB0cnVzdGVkIHdoaWxlIGFuIGV4dGVuc2lvbiBzY3JpcHQgcnVucy4KK0hJTlQ6ICBPbmx5 IG9iamVjdHMgaW4gcGdfY2F0YWxvZywgb3duZWQgYnkgYSBzdXBlcnVzZXIsIG9yIGJlbG9u Z2luZyB0byB0aGUgZXh0ZW5zaW9uIG9yIG9uZSBpdCByZXF1aXJlcyBhcmUgdHJ1c3RlZC4K K1FVRVJZOiAgQ1JFQVRFIEZVTkNUSU9OIHRlc3Rfb3ZlcmxvYWQuZyh0ZXN0X292ZXJsb2Fk LnBsYW50ZWRfZG9tKSBSRVRVUk5TIHRleHQKKyAgICBBUyAkJCBTRUxFQ1QgJ2V4dGVuc2lv bic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRQorQ09OVEVYVDogIGV4dGVuc2lv biBzY3JpcHQgZmlsZSAidGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS04LjAuc3FsIiwgbmVh ciBsaW5lIDcKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0IFND SEVNQSB0ZXN0X292ZXJsb2FkIFZFUlNJT04gJzkuMCc7ICAtLSBmYWlscworRVJST1I6ICBy ZWxhdGlvbiAiY2ZnIiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBJTlNFUlQgSU5UTyBjZmcg VkFMVUVTICgnZXh0ZW5zaW9uJykKKyAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAg QSByZWxhdGlvbiBvZiB0aGF0IG5hbWUgZXhpc3RzLCBidXQgaXQgaXMgbm90IHRydXN0ZWQg d2hpbGUgYW4gZXh0ZW5zaW9uIHNjcmlwdCBydW5zLgorSElOVDogIE9ubHkgb2JqZWN0cyBp biBwZ19jYXRhbG9nLCBvd25lZCBieSBhIHN1cGVydXNlciwgb3IgYmVsb25naW5nIHRvIHRo ZSBleHRlbnNpb24gb3Igb25lIGl0IHJlcXVpcmVzIGFyZSB0cnVzdGVkLgorUVVFUlk6ICBJ TlNFUlQgSU5UTyBjZmcgVkFMVUVTICgnZXh0ZW5zaW9uJykKK0NPTlRFWFQ6ICBleHRlbnNp b24gc2NyaXB0IGZpbGUgInRlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tOS4wLnNxbCIsIG5l YXIgbGluZSA3CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdCBT Q0hFTUEgdGVzdF9vdmVybG9hZCBWRVJTSU9OICcxMC4wJzsgIC0tIGZhaWxzCitFUlJPUjog IHR5cGUgcGxhbnRlZF9kb20gZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogQ1JFQVRFIEZVTkNU SU9OIHRlc3Rfb3ZlcmxvYWQuZyhwbGFudGVkX2RvbSkgUkVUVVJOUyB0ZXh0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgQSB0eXBlIG9m IHRoYXQgbmFtZSBleGlzdHMsIGJ1dCBpdCBpcyBub3QgdHJ1c3RlZCB3aGlsZSBhbiBleHRl bnNpb24gc2NyaXB0IHJ1bnMuCitISU5UOiAgT25seSBvYmplY3RzIGluIHBnX2NhdGFsb2cs IG93bmVkIGJ5IGEgc3VwZXJ1c2VyLCBvciBiZWxvbmdpbmcgdG8gdGhlIGV4dGVuc2lvbiBv ciBvbmUgaXQgcmVxdWlyZXMgYXJlIHRydXN0ZWQuCitRVUVSWTogIENSRUFURSBGVU5DVElP TiB0ZXN0X292ZXJsb2FkLmcocGxhbnRlZF9kb20pIFJFVFVSTlMgdGV4dAorICAgIEFTICQk IFNFTEVDVCAnZXh0ZW5zaW9uJzo6dGV4dCAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFCitD T05URVhUOiAgZXh0ZW5zaW9uIHNjcmlwdCBmaWxlICJ0ZXN0X2V4dF9vdmVybG9hZF9zdHJp Y3QtLTEwLjAuc3FsIiwgbmVhciBsaW5lIDgKKy0tIFRoZSBwbGFudHMgYXJlIHVudG91Y2hl ZC4KK1NFTEVDVCBjb3VudCgqKSBBUyByb3dzX2luX3BsYW50IEZST00gdGVzdF9vdmVybG9h ZC5jZmc7Cisgcm93c19pbl9wbGFudCAKKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAg IDAKKygxIHJvdykKKworRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWQ7CitEUk9Q IFNDSEVNQSB0ZXN0X292ZXJsb2FkIENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVz IHRvIDExIG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gZnVuY3Rp b24gdGVzdF9vdmVybG9hZC5mKHRleHQpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIHRl c3Rfb3ZlcmxvYWQub3BpbXBsX2JhZCh0ZXh0LHRleHQpCitkcm9wIGNhc2NhZGVzIHRvIG9w ZXJhdG9yIHRlc3Rfb3ZlcmxvYWQuIyMjKHRleHQsdGV4dCkKK2Ryb3AgY2FzY2FkZXMgdG8g ZnVuY3Rpb24gdGVzdF9vdmVybG9hZC5oZWxwZXJfb25seSh0ZXh0KQorZHJvcCBjYXNjYWRl cyB0byBmdW5jdGlvbiB0ZXN0X292ZXJsb2FkLm9waW1wbF9vbmx5KHRleHQsdGV4dCkKK2Ry b3AgY2FzY2FkZXMgdG8gb3BlcmF0b3IgdGVzdF9vdmVybG9hZF9vdGhlci4mJiYodGV4dCx0 ZXh0KQorZHJvcCBjYXNjYWRlcyB0byBvcGVyYXRvciB0ZXN0X292ZXJsb2FkLkBAQCh0ZXh0 LHRleHQpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIHRlc3Rfb3ZlcmxvYWQub3BpbXBs X3ZjKGNoYXJhY3RlciB2YXJ5aW5nLGNoYXJhY3RlciB2YXJ5aW5nKQorZHJvcCBjYXNjYWRl cyB0byBvcGVyYXRvciB0ZXN0X292ZXJsb2FkLjw8PChjaGFyYWN0ZXIgdmFyeWluZyxjaGFy YWN0ZXIgdmFyeWluZykKK2Ryb3AgY2FzY2FkZXMgdG8gdGFibGUgdGVzdF9vdmVybG9hZC5j ZmcKK2Ryb3AgY2FzY2FkZXMgdG8gdHlwZSB0ZXN0X292ZXJsb2FkLnBsYW50ZWRfZG9tCitE Uk9QIFNDSEVNQSB0ZXN0X292ZXJsb2FkX290aGVyIENBU0NBREU7CitEUk9QIFJPTEUgcmVn cmVzc19leHRfdXNlcjsKKy0tIEEgInN1cGVydXNlciA9IGZhbHNlIiBzY3JpcHQgcnVucyBh cyB0aGUgaW52b2tpbmcgdXNlciwgc28gaXRzIG9iamVjdHMgYXJlCistLSBvd25lZCBieSB0 aGF0IHJvbGUuICBUaGV5IG11c3Qgc3RpbGwgYmUgdHJ1c3RlZCwgYW5kIGFub3RoZXIgdXNl cidzIHBsYW50CistLSBtdXN0IG5vdCBiZS4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfZXh0X293 bmVyOworQ1JFQVRFIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXI7CitETyAkJCBCRUdJTgor ICAgIEVYRUNVVEUgZm9ybWF0KCdHUkFOVCBDUkVBVEUgT04gREFUQUJBU0UgJUkgVE8gcmVn cmVzc19leHRfb3duZXInLAorICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGF0YWJhc2Uo KSk7CitFTkQgJCQ7CitDUkVBVEUgU0NIRU1BIHRlc3Rfbm9zdXBlciBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfZXh0X293bmVyOworR1JBTlQgQ1JFQVRFLCBVU0FHRSBPTiBTQ0hFTUEgdGVz dF9ub3N1cGVyIFRPIHJlZ3Jlc3NfZXh0X2F0dGFja2VyOworLS0gQXR0YWNrZXIgcGxhbnRz IGEgcHJlZmVycmVkLXR5cGUgKHRleHQpIHNpYmxpbmcgb2YgdGhlIGV4dGVuc2lvbidzIGco KS4KK1NFVCBST0xFIHJlZ3Jlc3NfZXh0X2F0dGFja2VyOworQ1JFQVRFIEZVTkNUSU9OIHRl c3Rfbm9zdXBlci5nKHRleHQpIFJFVFVSTlMgdGV4dAorICAgIEFTICQkIFNFTEVDVCAnYXR0 YWNrZXInOjp0ZXh0ICQkIExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CitSRVNFVCBST0xFOwor LS0gVGhlIHNjcmlwdCBydW5zIGFzIHJlZ3Jlc3NfZXh0X293bmVyIGFuZCBtdXN0IHJlc29s dmUgZygnYWJjJykgdG8gaXRzIG93bgorLS0gdmFyY2hhciBmdW5jdGlvbiwgbm90IHRoZSBh dHRhY2tlcidzIHRleHQgb25lLgorU0VUIFJPTEUgcmVncmVzc19leHRfb3duZXI7CitDUkVB VEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX25vc3VwZXIgU0NIRU1BIHRlc3Rfbm9z dXBlcjsKK1NFTEVDVCBmbiBGUk9NIHRlc3Rfbm9zdXBlci5jYXB0dXJlZF9ub3N1cGVyOwor ICAgIGZuICAgICAKKy0tLS0tLS0tLS0tCisgZXh0ZW5zaW9uCisoMSByb3cpCisKK1JFU0VU IFJPTEU7CistLSBBbiB1cGRhdGUgcnVuIGJ5IGFub3RoZXIgcm9sZSAoaGVyZSB0aGUgc3Vw ZXJ1c2VyKSBtdXN0IHN0aWxsIHJlYWNoIHRoZQorLS0gZXh0ZW5zaW9uJ3Mgb3duIGcoKSwg d2hpY2ggdGhlIGluc3RhbGwgbGVmdCBvd25lZCBieSByZWdyZXNzX2V4dF9vd25lci4KK0FM VEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyIFVQREFURSBUTyAnMi4w JzsKK1NFTEVDVCBmbiBGUk9NIHRlc3Rfbm9zdXBlci51cGRhdGVkOworICAgIGZuICAgICAK Ky0tLS0tLS0tLS0tCisgZXh0ZW5zaW9uCisoMSByb3cpCisKK0RST1AgRVhURU5TSU9OIHRl c3RfZXh0X292ZXJsb2FkX25vc3VwZXI7CitEUk9QIFNDSEVNQSB0ZXN0X25vc3VwZXIgQ0FT Q0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gdGVzdF9ub3N1cGVy LmcodGV4dCkKK0RPICQkIEJFR0lOCisgICAgRVhFQ1VURSBmb3JtYXQoJ1JFVk9LRSBDUkVB VEUgT04gREFUQUJBU0UgJUkgRlJPTSByZWdyZXNzX2V4dF9vd25lcicsCisgICAgICAgICAg ICAgICAgICAgY3VycmVudF9kYXRhYmFzZSgpKTsKK0VORCAkJDsKK0RST1AgUk9MRSByZWdy ZXNzX2V4dF9vd25lcjsKK0RST1AgUk9MRSByZWdyZXNzX2V4dF9hdHRhY2tlcjsKKy0tIFJl c29sdXRpb24gaW4gYSBwYXJhbGxlbCB3b3JrZXIgbXVzdCBhcHBseSB0aGUgc2FtZSBjaGVj aywgc28KKy0tIGNyZWF0aW5nX2V4dGVuc2lvbiBtdXN0IHJlYWNoIHRoZSB3b3JrZXIuICBG b3JjZSB3cmFwKCkgaW50byBhIHdvcmtlciB3aXRoCistLSBkZWJ1Z19wYXJhbGxlbF9xdWVy eS4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfZXh0X2F0dGFja2VyIE5PU1VQRVJVU0VSOworQ1JF QVRFIFNDSEVNQSB0ZXN0X3BhcmFsbGVsOworR1JBTlQgQ1JFQVRFLCBVU0FHRSBPTiBTQ0hF TUEgdGVzdF9wYXJhbGxlbCBUTyByZWdyZXNzX2V4dF9hdHRhY2tlcjsKK1NFVCBST0xFIHJl Z3Jlc3NfZXh0X2F0dGFja2VyOworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfcGFyYWxsZWwucHJv YmUodGV4dCkgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdhdHRhY2tlcic6OnRl eHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRSBQQVJBTExFTCBTQUZFOworUkVTRVQgUk9M RTsKK1NFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9IG9uOworQ1JFQVRFIEVYVEVOU0lPTiB0 ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxlbCBTQ0hFTUEgdGVzdF9wYXJhbGxlbDsKK1JFU0VU IGRlYnVnX3BhcmFsbGVsX3F1ZXJ5OworLS0gVGhlIHdvcmtlciByZXNvbHZlZCBwcm9iZSgn eCcpIHRvIHRoZSBleHRlbnNpb24ncyBvd24gcHJvYmUodmFyY2hhciksIG5vdAorLS0gdGhl IHBsYW50ZWQgcHJvYmUodGV4dCkuCitTRUxFQ1Qgd2hvIEZST00gdGVzdF9wYXJhbGxlbC5j YXB0dXJlZDsKKyAgICB3aG8gICAgCistLS0tLS0tLS0tLQorIGV4dGVuc2lvbgorKDEgcm93 KQorCitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxlbDsKK0RST1Ag U0NIRU1BIHRlc3RfcGFyYWxsZWwgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMg dG8gZnVuY3Rpb24gdGVzdF9wYXJhbGxlbC5wcm9iZSh0ZXh0KQorRFJPUCBST0xFIHJlZ3Jl c3NfZXh0X2F0dGFja2VyOworLS0gQSBwbGFudCBpbiB0aGUgZXh0ZW5zaW9uJ3Mgb3duIHNj aGVtYSBtdXN0IG5vdCBzaGFkb3cgYSByZXF1aXJlZAorLS0gZXh0ZW5zaW9uJ3Mgb2JqZWN0 LCBmb3IgYW55IGtpbmQgb2YgcmVmZXJlbmNlOiBjYWxsLCBEREwgYnkgbmFtZSwgdHlwZSwK Ky0tIHJlbGF0aW9uLCBvciBhIHJlc29sdXRpb24gY2FjaGVkIGJlZm9yZSB0aGUgc2NyaXB0 LgorQ1JFQVRFIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXI7CitDUkVBVEUgUk9MRSByZWdy ZXNzX2V4dF9yZXFvd25lcjsKK0RPICQkIEJFR0lOCisgICAgRVhFQ1VURSBmb3JtYXQoJ0dS QU5UIENSRUFURSBPTiBEQVRBQkFTRSAlSSBUTyByZWdyZXNzX2V4dF9yZXFvd25lcicsCisg ICAgICAgICAgICAgICAgICAgY3VycmVudF9kYXRhYmFzZSgpKTsKK0VORCAkJDsKK0NSRUFU RSBTQ0hFTUEgdGVzdF9yZXFkZXAgQVVUSE9SSVpBVElPTiByZWdyZXNzX2V4dF9yZXFvd25l cjsKK0NSRUFURSBTQ0hFTUEgdGVzdF9yZXE7CitHUkFOVCBDUkVBVEUsIFVTQUdFIE9OIFND SEVNQSB0ZXN0X3JlcSBUTyByZWdyZXNzX2V4dF9hdHRhY2tlcjsKKy0tIFRoZSByZXF1aXJl ZCBleHRlbnNpb24gaXMgInN1cGVydXNlciA9IGZhbHNlIiBhbmQgaW5zdGFsbGVkIGJ5IGFu IG9yZGluYXJ5CistLSByb2xlLCBzbyBpdHMgb2JqZWN0cyBhcmUgcmVhY2hhYmxlIG9ubHkg dGhyb3VnaCByZXF1aXJlZC1leHRlbnNpb24KKy0tIG1lbWJlcnNoaXAuCitTRVQgUk9MRSBy ZWdyZXNzX2V4dF9yZXFvd25lcjsKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3Zlcmxv YWRfcmVxX2RlcCBTQ0hFTUEgdGVzdF9yZXFkZXA7CitSRVNFVCBST0xFOworU0VUIFJPTEUg cmVncmVzc19leHRfYXR0YWNrZXI7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9yZXEucmVxY2Fs bChpbnQpIFJFVFVSTlMgdGV4dAorICAgIEFTICQkIFNFTEVDVCAnYXR0YWNrZXInOjp0ZXh0 ICQkIExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9yZXEu cmVxZXEoaW50LCBpbnQpIFJFVFVSTlMgYm9vbGVhbgorICAgIEFTICQkIFNFTEVDVCBmYWxz ZSAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFOworQ1JFQVRFIE9QRVJBVE9SIHRlc3RfcmVx Lj09PSAobGVmdGFyZyA9IGludGVnZXIsIHJpZ2h0YXJnID0gaW50ZWdlciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gdGVzdF9yZXEucmVxZXEpOworLS0g UmVzb2x2aW5nIHRvIHRoaXMgZG9tYWluIHdvdWxkIHJ1biBwd24oKSB3aXRoIHRoZSBzY3Jp cHQncyBwcml2aWxlZ2VzLgorQ1JFQVRFIEZVTkNUSU9OIHRlc3RfcmVxLnB3bih0ZXh0KSBS RVRVUk5TIGJvb2xlYW4KKyAgICBBUyAkJCBCRUdJTiBSQUlTRSBFWENFUFRJT04gJ2F0dGFj a2VyIGNvZGUgZXhlY3V0ZWQnOyBFTkQgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBE T01BSU4gdGVzdF9yZXEucmVxZG9tIEFTIHRleHQgQ0hFQ0sgKHRlc3RfcmVxLnB3bihWQUxV RSkpOworQ1JFQVRFIFRBQkxFIHRlc3RfcmVxLnJlcXRhYih0IHRleHQpOworUkVTRVQgUk9M RTsKKy0tIENhY2hlIGEgcmVzb2x1dGlvbiBtYWRlIG91dHNpZGUgYW55IHNjcmlwdCwgdW5k ZXIgdGhlIHNlYXJjaF9wYXRoIHRoZQorLS0gc2NyaXB0IHdpbGwgcGluOyB0aGF0IHBsYW4g bXVzdCBub3QgYmUgcmV1c2VkIGluc2lkZSB0aGUgc2NyaXB0LgorU0VUIHNlYXJjaF9wYXRo ID0gdGVzdF9yZXEsIHRlc3RfcmVxZGVwLCBwZ190ZW1wOworU0VMRUNUIHRlc3RfcmVxZGVw LnJlcXBscGdzcWwoKSBBUyB3YXJtZWRfb3V0c2lkZV9zY3JpcHQ7Cisgd2FybWVkX291dHNp ZGVfc2NyaXB0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBhdHRhY2tlcgorKDEgcm93 KQorCitSRVNFVCBzZWFyY2hfcGF0aDsKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3Zl cmxvYWRfcmVxIFNDSEVNQSB0ZXN0X3JlcTsKKy0tIEV2ZXJ5IHJlZmVyZW5jZSByZXNvbHZl ZCB0byB0aGUgcmVxdWlyZWQgZXh0ZW5zaW9uJ3Mgb2JqZWN0cyAoaW4KKy0tIHRlc3RfcmVx ZGVwKSwgbm90IHRoZSBwbGFudGVkIG9uZXMgaW4gdGVzdF9yZXEuCitTRUxFQ1QgYy53aG8s IGMud2hvX2NhY2hlZCwgbi5uc3BuYW1lIEFTIGRvbWFpbl9zY2hlbWEKKyAgRlJPTSB0ZXN0 X3JlcS5jYXB0dXJlZCBjCisgIEpPSU4gcGdfdHlwZSB0IE9OIHQub2lkID0gYy5kb20KKyAg Sk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IHQudHlwbmFtZXNwYWNlOworICAgd2hv ICAgIHwgd2hvX2NhY2hlZCB8IGRvbWFpbl9zY2hlbWEgCistLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0KKyByZXF1aXJlZCB8IHJlcXVpcmVkICAgfCB0ZXN0X3Jl cWRlcAorKDEgcm93KQorCitTRUxFQ1Qgbi5uc3BuYW1lIEFTIG9wZXJhdG9yX2Z1bmNfc2No ZW1hCisgIEZST00gcGdfb3BlcmF0b3IgbworICBKT0lOIHBnX3Byb2MgcCBPTiBwLm9pZCA9 IG8ub3ByY29kZQorICBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gcC5wcm9uYW1l c3BhY2UKKyBXSEVSRSBvLm9wcm5hbWUgPSAnIyMjJyBBTkQgby5vcHJuYW1lc3BhY2UgPSAn dGVzdF9yZXEnOjpyZWduYW1lc3BhY2U7Cisgb3BlcmF0b3JfZnVuY19zY2hlbWEgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgdGVzdF9yZXFkZXAKKygxIHJvdykKKworU0VMRUNUICd0 ZXN0X3JlcWRlcC5yZXF0YWInIEFTIHRibCwgY291bnQoKikgRlJPTSB0ZXN0X3JlcWRlcC5y ZXF0YWIKK1VOSU9OIEFMTAorU0VMRUNUICd0ZXN0X3JlcS5yZXF0YWInLCBjb3VudCgqKSBG Uk9NIHRlc3RfcmVxLnJlcXRhYjsKKyAgICAgICAgdGJsICAgICAgICAgfCBjb3VudCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyB0ZXN0X3JlcWRlcC5yZXF0YWIgfCAgICAg MQorIHRlc3RfcmVxLnJlcXRhYiAgICB8ICAgICAwCisoMiByb3dzKQorCitTRUxFQ1Qgbi5u c3BuYW1lIEFTIG9wZmFtaWx5X21lbWJlcl9zY2hlbWEKKyAgRlJPTSBwZ19hbW9wIGEKKyAg Sk9JTiBwZ19vcGZhbWlseSBmIE9OIGYub2lkID0gYS5hbW9wZmFtaWx5CisgIEpPSU4gcGdf b3BlcmF0b3IgbyBPTiBvLm9pZCA9IGEuYW1vcG9wcgorICBKT0lOIHBnX25hbWVzcGFjZSBu IE9OIG4ub2lkID0gby5vcHJuYW1lc3BhY2UKKyBXSEVSRSBmLm9wZm5hbWUgPSAncmVxZmFt JzsKKyBvcGZhbWlseV9tZW1iZXJfc2NoZW1hIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgdGVzdF9yZXFkZXAKKygxIHJvdykKKworLS0gT3V0c2lkZSB0aGUgc2NyaXB0IHRoZSBj YWNoZWQgcGxhbiBpcyBnb29kIGFnYWluLgorU0VUIHNlYXJjaF9wYXRoID0gdGVzdF9yZXEs IHRlc3RfcmVxZGVwLCBwZ190ZW1wOworU0VMRUNUIHRlc3RfcmVxZGVwLnJlcXBscGdzcWwo KSBBUyBhZnRlcl9zY3JpcHQ7CisgYWZ0ZXJfc2NyaXB0IAorLS0tLS0tLS0tLS0tLS0KKyBh dHRhY2tlcgorKDEgcm93KQorCitSRVNFVCBzZWFyY2hfcGF0aDsKK0RST1AgRVhURU5TSU9O IHRlc3RfZXh0X292ZXJsb2FkX3JlcTsKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJs b2FkX3JlcV9kZXA7CitEUk9QIFNDSEVNQSB0ZXN0X3JlcSBDQVNDQURFOworTk9USUNFOiAg ZHJvcCBjYXNjYWRlcyB0byA2IG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2Fk ZXMgdG8gZnVuY3Rpb24gdGVzdF9yZXEucmVxY2FsbChpbnRlZ2VyKQorZHJvcCBjYXNjYWRl cyB0byBmdW5jdGlvbiB0ZXN0X3JlcS5yZXFlcShpbnRlZ2VyLGludGVnZXIpCitkcm9wIGNh c2NhZGVzIHRvIG9wZXJhdG9yIHRlc3RfcmVxLj09PShpbnRlZ2VyLGludGVnZXIpCitkcm9w IGNhc2NhZGVzIHRvIGZ1bmN0aW9uIHRlc3RfcmVxLnB3bih0ZXh0KQorZHJvcCBjYXNjYWRl cyB0byB0eXBlIHRlc3RfcmVxLnJlcWRvbQorZHJvcCBjYXNjYWRlcyB0byB0YWJsZSB0ZXN0 X3JlcS5yZXF0YWIKK0RST1AgU0NIRU1BIHRlc3RfcmVxZGVwIENBU0NBREU7CitETyAkJCBC RUdJTgorICAgIEVYRUNVVEUgZm9ybWF0KCdSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFICVJ IEZST00gcmVncmVzc19leHRfcmVxb3duZXInLAorICAgICAgICAgICAgICAgICAgIGN1cnJl bnRfZGF0YWJhc2UoKSk7CitFTkQgJCQ7CitEUk9QIFJPTEUgcmVncmVzc19leHRfYXR0YWNr ZXI7CitEUk9QIFJPTEUgcmVncmVzc19leHRfcmVxb3duZXI7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9leHRlbnNpb25zL21lc29uLmJ1aWxkCmluZGV4IDJjN2NlYTE4OWUyLi4x MzUzMGEwNTMwYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lv bnMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMv bWVzb24uYnVpbGQKQEAgLTM2LDYgKzM2LDI4IEBAIHRlc3RfaW5zdGFsbF9kYXRhICs9IGZp bGVzKAogICAndGVzdF9leHRfZXZ0dHJpZy0tMS4wLS0yLjAuc3FsJywKICAgJ3Rlc3RfZXh0 X2V2dHRyaWctLTEuMC5zcWwnLAogICAndGVzdF9leHRfZXZ0dHJpZy5jb250cm9sJywKKyAg J3Rlc3RfZXh0X292ZXJsb2FkLS0xLjAuc3FsJywKKyAgJ3Rlc3RfZXh0X292ZXJsb2FkLmNv bnRyb2wnLAorICAndGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0xLjAuc3FsJywKKyAgJ3Rl c3RfZXh0X292ZXJsb2FkX3N0cmljdC0tMi4wLnNxbCcsCisgICd0ZXN0X2V4dF9vdmVybG9h ZF9zdHJpY3QtLTMuMC5zcWwnLAorICAndGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS00LjAu c3FsJywKKyAgJ3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNS4wLnNxbCcsCisgICd0ZXN0 X2V4dF9vdmVybG9hZF9zdHJpY3QtLTYuMC5zcWwnLAorICAndGVzdF9leHRfb3ZlcmxvYWRf c3RyaWN0LS03LjAuc3FsJywKKyAgJ3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tOC4wLnNx bCcsCisgICd0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTkuMC5zcWwnLAorICAndGVzdF9l eHRfb3ZlcmxvYWRfc3RyaWN0LS0xMC4wLnNxbCcsCisgICd0ZXN0X2V4dF9vdmVybG9hZF9z dHJpY3QuY29udHJvbCcsCisgICd0ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyLS0xLjAtLTIu MC5zcWwnLAorICAndGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLnNxbCcsCisgICd0 ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyLmNvbnRyb2wnLAorICAndGVzdF9leHRfb3Zlcmxv YWRfcGFyYWxsZWwtLTEuMC5zcWwnLAorICAndGVzdF9leHRfb3ZlcmxvYWRfcGFyYWxsZWwu Y29udHJvbCcsCisgICd0ZXN0X2V4dF9vdmVybG9hZF9yZXEtLTEuMC5zcWwnLAorICAndGVz dF9leHRfb3ZlcmxvYWRfcmVxLmNvbnRyb2wnLAorICAndGVzdF9leHRfb3ZlcmxvYWRfcmVx X2RlcC0tMS4wLnNxbCcsCisgICd0ZXN0X2V4dF9vdmVybG9hZF9yZXFfZGVwLmNvbnRyb2wn LAogICAndGVzdF9leHRfcmVxX3NjaGVtYTEtLTEuMC5zcWwnLAogICAndGVzdF9leHRfcmVx X3NjaGVtYTEuY29udHJvbCcsCiAgICd0ZXN0X2V4dF9yZXFfc2NoZW1hMi0tMS4wLnNxbCcs CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9zcWwvdGVz dF9leHRlbnNpb25zLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Nx bC90ZXN0X2V4dGVuc2lvbnMuc3FsCmluZGV4IGI1ODc4ZjZmODBmLi43ZDAwMzE3YjE4YSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3Rf ZXh0ZW5zaW9ucy5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMv c3FsL3Rlc3RfZXh0ZW5zaW9ucy5zcWwKQEAgLTMwMywzICszMDMsMTk3IEBAIEFMVEVSIEVY VEVOU0lPTiB0ZXN0X2V4dF9yZXFfc2NoZW1hMSBTRVQgU0NIRU1BIHRlc3Rfc19kZXAyOyAg LS0gbm93IG9rCiBTRUxFQ1QgdGVzdF9zX2RlcDIuZGVwX3JlcTEoKTsKIFNFTEVDVCB0ZXN0 X3NfZGVwLmRlcF9yZXEyKCk7CiBEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9yZXFfc2NoZW1h MSBDQVNDQURFOworCistLSBWZXJpZnkgdGhhdCBuYW1lIHJlc29sdXRpb24gZHVyaW5nIGFu IGV4dGVuc2lvbiBzY3JpcHQgY2Fubm90IGJlIGNhcHR1cmVkCistLSBieSBvYmplY3RzIGFu IHVucHJpdmlsZWdlZCB1c2VyIHBsYW50ZWQgaW4gdGhlIGV4dGVuc2lvbidzIHNjaGVtYS4K K0NSRUFURSBST0xFIHJlZ3Jlc3NfZXh0X3VzZXI7CitDUkVBVEUgU0NIRU1BIHRlc3Rfb3Zl cmxvYWQ7CitHUkFOVCBDUkVBVEUsIFVTQUdFIE9OIFNDSEVNQSB0ZXN0X292ZXJsb2FkIFRP IHJlZ3Jlc3NfZXh0X3VzZXI7CistLSBBcyB0aGUgdW5wcml2aWxlZ2VkIHVzZXIsIHBsYW50 IGRpZmZlcmVudGx5LXR5cGVkIHNpYmxpbmdzIGFuZCB0aGUgc29sZQorLS0gZGVmaW5pdGlv biBvZiBoZWxwZXJfb25seSgpLgorU0VUIFJPTEUgcmVncmVzc19leHRfdXNlcjsKK0NSRUFU RSBGVU5DVElPTiB0ZXN0X292ZXJsb2FkLmYodGV4dCkgUkVUVVJOUyB0ZXh0CisgICAgQVMg JCQgU0VMRUNUICdhdHRhY2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsK K0NSRUFURSBGVU5DVElPTiB0ZXN0X292ZXJsb2FkLm9waW1wbF9iYWQodGV4dCwgdGV4dCkg UkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdhdHRhY2tlcic6OnRleHQgJCQgTEFO R1VBR0Ugc3FsIElNTVVUQUJMRTsKK0NSRUFURSBPUEVSQVRPUiB0ZXN0X292ZXJsb2FkLiMj IyAobGVmdGFyZyA9IHRleHQsIHJpZ2h0YXJnID0gdGV4dCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gPSB0ZXN0X292ZXJsb2FkLm9waW1wbF9iYWQp OworQ1JFQVRFIEZVTkNUSU9OIHRlc3Rfb3ZlcmxvYWQuaGVscGVyX29ubHkodGV4dCkgUkVU VVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdhdHRhY2tlcic6OnRleHQgJCQgTEFOR1VB R0Ugc3FsIElNTVVUQUJMRTsKK0NSRUFURSBGVU5DVElPTiB0ZXN0X292ZXJsb2FkLm9waW1w bF9vbmx5KHRleHQsIHRleHQpIFJFVFVSTlMgdGV4dAorICAgIEFTICQkIFNFTEVDVCAnYXR0 YWNrZXInOjp0ZXh0ICQkIExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CitDUkVBVEUgT1BFUkFU T1IgdGVzdF9vdmVybG9hZC5AQEAgKGxlZnRhcmcgPSB0ZXh0LCByaWdodGFyZyA9IHRleHQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gdGVzdF9v dmVybG9hZC5vcGltcGxfb25seSk7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9vdmVybG9hZC5v cGltcGxfdmModmFyY2hhciwgdmFyY2hhcikgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VM RUNUICdhdHRhY2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKK0NSRUFU RSBPUEVSQVRPUiB0ZXN0X292ZXJsb2FkLjw8PCAobGVmdGFyZyA9IHZhcmNoYXIsIHJpZ2h0 YXJnID0gdmFyY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVu Y3Rpb24gPSB0ZXN0X292ZXJsb2FkLm9waW1wbF92Yyk7CistLSBBIHBsYW50ZWQgdGFibGUg YW5kIGRvbWFpbiwgZm9yIHRoZSByZWxhdGlvbiBhbmQgdHlwZSBsb29rdXBzLgorQ1JFQVRF IFRBQkxFIHRlc3Rfb3ZlcmxvYWQuY2ZnICh3aG8gdGV4dCk7CitDUkVBVEUgRE9NQUlOIHRl c3Rfb3ZlcmxvYWQucGxhbnRlZF9kb20gQVMgdGV4dDsKK1JFU0VUIFJPTEU7CistLSBBIHNj aGVtYSBvdXRzaWRlIHRoZSBzY3JpcHQncyBzZWFyY2ggcGF0aCwgaG9sZGluZyBhIHBsYW50 ZWQgb3BlcmF0b3IuCitDUkVBVEUgU0NIRU1BIHRlc3Rfb3ZlcmxvYWRfb3RoZXI7CitHUkFO VCBDUkVBVEUsIFVTQUdFIE9OIFNDSEVNQSB0ZXN0X292ZXJsb2FkX290aGVyIFRPIHJlZ3Jl c3NfZXh0X3VzZXI7CitTRVQgUk9MRSByZWdyZXNzX2V4dF91c2VyOworQ1JFQVRFIE9QRVJB VE9SIHRlc3Rfb3ZlcmxvYWRfb3RoZXIuJiYmIChsZWZ0YXJnID0gdGV4dCwgcmlnaHRhcmcg PSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5j dGlvbiA9IHRlc3Rfb3ZlcmxvYWQub3BpbXBsX29ubHkpOworUkVTRVQgUk9MRTsKKy0tIElu c3RhbGxpbmcgdGhlIGV4dGVuc2lvbiByZXNvbHZlcyBmKCdhYmMnKSBhbmQgdGhlICMjIyBv cGVyYXRvciB0byB0aGUKKy0tIGV4dGVuc2lvbidzIG93biAodHJ1c3RlZCkgb2JqZWN0cywg bm90IHRoZSBwbGFudGVkIG9uZXMuCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJs b2FkIFNDSEVNQSB0ZXN0X292ZXJsb2FkOworU0VMRUNUIGZuLCBvcCBGUk9NIHRlc3Rfb3Zl cmxvYWQuY2FwdHVyZWQ7CistLSBPdXRzaWRlIG9mIGV4dGVuc2lvbiBzY3JpcHRzLCBvcmRp bmFyeSByZXNvbHV0aW9uIHJ1bGVzIGFyZSB1bmNoYW5nZWQ6IHRoZQorLS0gc2FtZSBjYWxs cyByZWFjaCB0aGUgcGxhbnRlZCBvYmplY3RzLgorU0VMRUNUIHRlc3Rfb3ZlcmxvYWQuZign YWJjJykgQVMgZm4sCisgICAgICAgKCdhJyBPUEVSQVRPUih0ZXN0X292ZXJsb2FkLiMjIykg J2InKSBBUyBvcDsKKy0tIFdoZW4gb25seSBhbiB1bnRydXN0ZWQgY2FuZGlkYXRlIGV4aXN0 cywgdGhlIHNjcmlwdCByZWZ1c2VzIHRvIGNhbGwgaXQuCitDUkVBVEUgRVhURU5TSU9OIHRl c3RfZXh0X292ZXJsb2FkX3N0cmljdCBTQ0hFTUEgdGVzdF9vdmVybG9hZDsgIC0tIGZhaWxz CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdCBTQ0hFTUEgdGVz dF9vdmVybG9hZCBWRVJTSU9OICcyLjAnOyAgLS0gZmFpbHMKKy0tIEEgcGxhbnRlZCBvcGVy YXRvciBuYW1lZCBhcyBDT01NVVRBVE9SIGlzIHJlZnVzZWQgYXMgd2VsbC4KK0NSRUFURSBF WFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0IFNDSEVNQSB0ZXN0X292ZXJsb2Fk IFZFUlNJT04gJzMuMCc7ICAtLSBmYWlscworLS0gVHJ1c3RlZCBjYW5kaWRhdGUgdmlzaWJs ZSBidXQgYXJndW1lbnRzIGRvbid0IG1hdGNoOiBhcmd1bWVudCBlcnJvciwgd2l0aAorLS0g dGhlIHVudHJ1c3RlZCBjYW5kaWRhdGUgYXMgYSBoaW50LgorQ1JFQVRFIEVYVEVOU0lPTiB0 ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QgU0NIRU1BIHRlc3Rfb3ZlcmxvYWQgVkVSU0lPTiAn NC4wJzsgIC0tIGZhaWxzCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3N0 cmljdCBTQ0hFTUEgdGVzdF9vdmVybG9hZCBWRVJTSU9OICc1LjAnOyAgLS0gZmFpbHMKKy0t IFVudHJ1c3RlZCBjYW5kaWRhdGUgb3V0c2lkZSB0aGUgc2VhcmNoIHBhdGg6IG9yZGluYXJ5 IG5vdC1pbi1wYXRoIGVycm9yLgorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9h ZF9zdHJpY3QgU0NIRU1BIHRlc3Rfb3ZlcmxvYWQgVkVSU0lPTiAnNi4wJzsgIC0tIGZhaWxz CistLSBBIHBsYW50ZWQgcmVsYXRpb24gb3IgdHlwZSBpcyByZWZ1c2VkIHdoZXRoZXIgdGhl IHNjcmlwdCBxdWFsaWZpZXMgdGhlCistLSBuYW1lIHdpdGggdGhlIHNjaGVtYSBvciBsZWF2 ZXMgaXQgdG8gc2VhcmNoX3BhdGguCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJs b2FkX3N0cmljdCBTQ0hFTUEgdGVzdF9vdmVybG9hZCBWRVJTSU9OICc3LjAnOyAgLS0gZmFp bHMKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0IFNDSEVNQSB0 ZXN0X292ZXJsb2FkIFZFUlNJT04gJzguMCc7ICAtLSBmYWlscworQ1JFQVRFIEVYVEVOU0lP TiB0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QgU0NIRU1BIHRlc3Rfb3ZlcmxvYWQgVkVSU0lP TiAnOS4wJzsgIC0tIGZhaWxzCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2Fk X3N0cmljdCBTQ0hFTUEgdGVzdF9vdmVybG9hZCBWRVJTSU9OICcxMC4wJzsgIC0tIGZhaWxz CistLSBUaGUgcGxhbnRzIGFyZSB1bnRvdWNoZWQuCitTRUxFQ1QgY291bnQoKikgQVMgcm93 c19pbl9wbGFudCBGUk9NIHRlc3Rfb3ZlcmxvYWQuY2ZnOworRFJPUCBFWFRFTlNJT04gdGVz dF9leHRfb3ZlcmxvYWQ7CitEUk9QIFNDSEVNQSB0ZXN0X292ZXJsb2FkIENBU0NBREU7CitE Uk9QIFNDSEVNQSB0ZXN0X292ZXJsb2FkX290aGVyIENBU0NBREU7CitEUk9QIFJPTEUgcmVn cmVzc19leHRfdXNlcjsKKworLS0gQSAic3VwZXJ1c2VyID0gZmFsc2UiIHNjcmlwdCBydW5z IGFzIHRoZSBpbnZva2luZyB1c2VyLCBzbyBpdHMgb2JqZWN0cyBhcmUKKy0tIG93bmVkIGJ5 IHRoYXQgcm9sZS4gIFRoZXkgbXVzdCBzdGlsbCBiZSB0cnVzdGVkLCBhbmQgYW5vdGhlciB1 c2VyJ3MgcGxhbnQKKy0tIG11c3Qgbm90IGJlLgorQ1JFQVRFIFJPTEUgcmVncmVzc19leHRf b3duZXI7CitDUkVBVEUgUk9MRSByZWdyZXNzX2V4dF9hdHRhY2tlcjsKK0RPICQkIEJFR0lO CisgICAgRVhFQ1VURSBmb3JtYXQoJ0dSQU5UIENSRUFURSBPTiBEQVRBQkFTRSAlSSBUTyBy ZWdyZXNzX2V4dF9vd25lcicsCisgICAgICAgICAgICAgICAgICAgY3VycmVudF9kYXRhYmFz ZSgpKTsKK0VORCAkJDsKK0NSRUFURSBTQ0hFTUEgdGVzdF9ub3N1cGVyIEFVVEhPUklaQVRJ T04gcmVncmVzc19leHRfb3duZXI7CitHUkFOVCBDUkVBVEUsIFVTQUdFIE9OIFNDSEVNQSB0 ZXN0X25vc3VwZXIgVE8gcmVncmVzc19leHRfYXR0YWNrZXI7CistLSBBdHRhY2tlciBwbGFu dHMgYSBwcmVmZXJyZWQtdHlwZSAodGV4dCkgc2libGluZyBvZiB0aGUgZXh0ZW5zaW9uJ3Mg ZygpLgorU0VUIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXI7CitDUkVBVEUgRlVOQ1RJT04g dGVzdF9ub3N1cGVyLmcodGV4dCkgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdh dHRhY2tlcic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKK1JFU0VUIFJPTEU7 CistLSBUaGUgc2NyaXB0IHJ1bnMgYXMgcmVncmVzc19leHRfb3duZXIgYW5kIG11c3QgcmVz b2x2ZSBnKCdhYmMnKSB0byBpdHMgb3duCistLSB2YXJjaGFyIGZ1bmN0aW9uLCBub3QgdGhl IGF0dGFja2VyJ3MgdGV4dCBvbmUuCitTRVQgUk9MRSByZWdyZXNzX2V4dF9vd25lcjsKK0NS RUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlciBTQ0hFTUEgdGVzdF9u b3N1cGVyOworU0VMRUNUIGZuIEZST00gdGVzdF9ub3N1cGVyLmNhcHR1cmVkX25vc3VwZXI7 CitSRVNFVCBST0xFOworLS0gQW4gdXBkYXRlIHJ1biBieSBhbm90aGVyIHJvbGUgKGhlcmUg dGhlIHN1cGVydXNlcikgbXVzdCBzdGlsbCByZWFjaCB0aGUKKy0tIGV4dGVuc2lvbidzIG93 biBnKCksIHdoaWNoIHRoZSBpbnN0YWxsIGxlZnQgb3duZWQgYnkgcmVncmVzc19leHRfb3du ZXIuCitBTFRFUiBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlciBVUERBVEUg VE8gJzIuMCc7CitTRUxFQ1QgZm4gRlJPTSB0ZXN0X25vc3VwZXIudXBkYXRlZDsKK0RST1Ag RVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX25vc3VwZXI7CitEUk9QIFNDSEVNQSB0ZXN0 X25vc3VwZXIgQ0FTQ0FERTsKK0RPICQkIEJFR0lOCisgICAgRVhFQ1VURSBmb3JtYXQoJ1JF Vk9LRSBDUkVBVEUgT04gREFUQUJBU0UgJUkgRlJPTSByZWdyZXNzX2V4dF9vd25lcicsCisg ICAgICAgICAgICAgICAgICAgY3VycmVudF9kYXRhYmFzZSgpKTsKK0VORCAkJDsKK0RST1Ag Uk9MRSByZWdyZXNzX2V4dF9vd25lcjsKK0RST1AgUk9MRSByZWdyZXNzX2V4dF9hdHRhY2tl cjsKKworLS0gUmVzb2x1dGlvbiBpbiBhIHBhcmFsbGVsIHdvcmtlciBtdXN0IGFwcGx5IHRo ZSBzYW1lIGNoZWNrLCBzbworLS0gY3JlYXRpbmdfZXh0ZW5zaW9uIG11c3QgcmVhY2ggdGhl IHdvcmtlci4gIEZvcmNlIHdyYXAoKSBpbnRvIGEgd29ya2VyIHdpdGgKKy0tIGRlYnVnX3Bh cmFsbGVsX3F1ZXJ5LgorQ1JFQVRFIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXIgTk9TVVBF UlVTRVI7CitDUkVBVEUgU0NIRU1BIHRlc3RfcGFyYWxsZWw7CitHUkFOVCBDUkVBVEUsIFVT QUdFIE9OIFNDSEVNQSB0ZXN0X3BhcmFsbGVsIFRPIHJlZ3Jlc3NfZXh0X2F0dGFja2VyOwor U0VUIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXI7CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9w YXJhbGxlbC5wcm9iZSh0ZXh0KSBSRVRVUk5TIHRleHQKKyAgICBBUyAkJCBTRUxFQ1QgJ2F0 dGFja2VyJzo6dGV4dCAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIFBBUkFMTEVMIFNBRkU7 CitSRVNFVCBST0xFOworU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb247CitDUkVBVEUg RVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3BhcmFsbGVsIFNDSEVNQSB0ZXN0X3BhcmFs bGVsOworUkVTRVQgZGVidWdfcGFyYWxsZWxfcXVlcnk7CistLSBUaGUgd29ya2VyIHJlc29s dmVkIHByb2JlKCd4JykgdG8gdGhlIGV4dGVuc2lvbidzIG93biBwcm9iZSh2YXJjaGFyKSwg bm90CistLSB0aGUgcGxhbnRlZCBwcm9iZSh0ZXh0KS4KK1NFTEVDVCB3aG8gRlJPTSB0ZXN0 X3BhcmFsbGVsLmNhcHR1cmVkOworRFJPUCBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRf cGFyYWxsZWw7CitEUk9QIFNDSEVNQSB0ZXN0X3BhcmFsbGVsIENBU0NBREU7CitEUk9QIFJP TEUgcmVncmVzc19leHRfYXR0YWNrZXI7CisKKy0tIEEgcGxhbnQgaW4gdGhlIGV4dGVuc2lv bidzIG93biBzY2hlbWEgbXVzdCBub3Qgc2hhZG93IGEgcmVxdWlyZWQKKy0tIGV4dGVuc2lv bidzIG9iamVjdCwgZm9yIGFueSBraW5kIG9mIHJlZmVyZW5jZTogY2FsbCwgRERMIGJ5IG5h bWUsIHR5cGUsCistLSByZWxhdGlvbiwgb3IgYSByZXNvbHV0aW9uIGNhY2hlZCBiZWZvcmUg dGhlIHNjcmlwdC4KK0NSRUFURSBST0xFIHJlZ3Jlc3NfZXh0X2F0dGFja2VyOworQ1JFQVRF IFJPTEUgcmVncmVzc19leHRfcmVxb3duZXI7CitETyAkJCBCRUdJTgorICAgIEVYRUNVVEUg Zm9ybWF0KCdHUkFOVCBDUkVBVEUgT04gREFUQUJBU0UgJUkgVE8gcmVncmVzc19leHRfcmVx b3duZXInLAorICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGF0YWJhc2UoKSk7CitFTkQg JCQ7CitDUkVBVEUgU0NIRU1BIHRlc3RfcmVxZGVwIEFVVEhPUklaQVRJT04gcmVncmVzc19l eHRfcmVxb3duZXI7CitDUkVBVEUgU0NIRU1BIHRlc3RfcmVxOworR1JBTlQgQ1JFQVRFLCBV U0FHRSBPTiBTQ0hFTUEgdGVzdF9yZXEgVE8gcmVncmVzc19leHRfYXR0YWNrZXI7CistLSBU aGUgcmVxdWlyZWQgZXh0ZW5zaW9uIGlzICJzdXBlcnVzZXIgPSBmYWxzZSIgYW5kIGluc3Rh bGxlZCBieSBhbiBvcmRpbmFyeQorLS0gcm9sZSwgc28gaXRzIG9iamVjdHMgYXJlIHJlYWNo YWJsZSBvbmx5IHRocm91Z2ggcmVxdWlyZWQtZXh0ZW5zaW9uCistLSBtZW1iZXJzaGlwLgor U0VUIFJPTEUgcmVncmVzc19leHRfcmVxb3duZXI7CitDUkVBVEUgRVhURU5TSU9OIHRlc3Rf ZXh0X292ZXJsb2FkX3JlcV9kZXAgU0NIRU1BIHRlc3RfcmVxZGVwOworUkVTRVQgUk9MRTsK K1NFVCBST0xFIHJlZ3Jlc3NfZXh0X2F0dGFja2VyOworQ1JFQVRFIEZVTkNUSU9OIHRlc3Rf cmVxLnJlcWNhbGwoaW50KSBSRVRVUk5TIHRleHQKKyAgICBBUyAkJCBTRUxFQ1QgJ2F0dGFj a2VyJzo6dGV4dCAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFOworQ1JFQVRFIEZVTkNUSU9O IHRlc3RfcmVxLnJlcWVxKGludCwgaW50KSBSRVRVUk5TIGJvb2xlYW4KKyAgICBBUyAkJCBT RUxFQ1QgZmFsc2UgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKK0NSRUFURSBPUEVSQVRP UiB0ZXN0X3JlcS49PT0gKGxlZnRhcmcgPSBpbnRlZ2VyLCByaWdodGFyZyA9IGludGVnZXIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IHRlc3RfcmVxLnJl cWVxKTsKKy0tIFJlc29sdmluZyB0byB0aGlzIGRvbWFpbiB3b3VsZCBydW4gcHduKCkgd2l0 aCB0aGUgc2NyaXB0J3MgcHJpdmlsZWdlcy4KK0NSRUFURSBGVU5DVElPTiB0ZXN0X3JlcS5w d24odGV4dCkgUkVUVVJOUyBib29sZWFuCisgICAgQVMgJCQgQkVHSU4gUkFJU0UgRVhDRVBU SU9OICdhdHRhY2tlciBjb2RlIGV4ZWN1dGVkJzsgRU5EICQkIExBTkdVQUdFIHBscGdzcWw7 CitDUkVBVEUgRE9NQUlOIHRlc3RfcmVxLnJlcWRvbSBBUyB0ZXh0IENIRUNLICh0ZXN0X3Jl cS5wd24oVkFMVUUpKTsKK0NSRUFURSBUQUJMRSB0ZXN0X3JlcS5yZXF0YWIodCB0ZXh0KTsK K1JFU0VUIFJPTEU7CistLSBDYWNoZSBhIHJlc29sdXRpb24gbWFkZSBvdXRzaWRlIGFueSBz Y3JpcHQsIHVuZGVyIHRoZSBzZWFyY2hfcGF0aCB0aGUKKy0tIHNjcmlwdCB3aWxsIHBpbjsg dGhhdCBwbGFuIG11c3Qgbm90IGJlIHJldXNlZCBpbnNpZGUgdGhlIHNjcmlwdC4KK1NFVCBz ZWFyY2hfcGF0aCA9IHRlc3RfcmVxLCB0ZXN0X3JlcWRlcCwgcGdfdGVtcDsKK1NFTEVDVCB0 ZXN0X3JlcWRlcC5yZXFwbHBnc3FsKCkgQVMgd2FybWVkX291dHNpZGVfc2NyaXB0OworUkVT RVQgc2VhcmNoX3BhdGg7CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3Jl cSBTQ0hFTUEgdGVzdF9yZXE7CistLSBFdmVyeSByZWZlcmVuY2UgcmVzb2x2ZWQgdG8gdGhl IHJlcXVpcmVkIGV4dGVuc2lvbidzIG9iamVjdHMgKGluCistLSB0ZXN0X3JlcWRlcCksIG5v dCB0aGUgcGxhbnRlZCBvbmVzIGluIHRlc3RfcmVxLgorU0VMRUNUIGMud2hvLCBjLndob19j YWNoZWQsIG4ubnNwbmFtZSBBUyBkb21haW5fc2NoZW1hCisgIEZST00gdGVzdF9yZXEuY2Fw dHVyZWQgYworICBKT0lOIHBnX3R5cGUgdCBPTiB0Lm9pZCA9IGMuZG9tCisgIEpPSU4gcGdf bmFtZXNwYWNlIG4gT04gbi5vaWQgPSB0LnR5cG5hbWVzcGFjZTsKK1NFTEVDVCBuLm5zcG5h bWUgQVMgb3BlcmF0b3JfZnVuY19zY2hlbWEKKyAgRlJPTSBwZ19vcGVyYXRvciBvCisgIEpP SU4gcGdfcHJvYyBwIE9OIHAub2lkID0gby5vcHJjb2RlCisgIEpPSU4gcGdfbmFtZXNwYWNl IG4gT04gbi5vaWQgPSBwLnByb25hbWVzcGFjZQorIFdIRVJFIG8ub3BybmFtZSA9ICcjIyMn IEFORCBvLm9wcm5hbWVzcGFjZSA9ICd0ZXN0X3JlcSc6OnJlZ25hbWVzcGFjZTsKK1NFTEVD VCAndGVzdF9yZXFkZXAucmVxdGFiJyBBUyB0YmwsIGNvdW50KCopIEZST00gdGVzdF9yZXFk ZXAucmVxdGFiCitVTklPTiBBTEwKK1NFTEVDVCAndGVzdF9yZXEucmVxdGFiJywgY291bnQo KikgRlJPTSB0ZXN0X3JlcS5yZXF0YWI7CitTRUxFQ1Qgbi5uc3BuYW1lIEFTIG9wZmFtaWx5 X21lbWJlcl9zY2hlbWEKKyAgRlJPTSBwZ19hbW9wIGEKKyAgSk9JTiBwZ19vcGZhbWlseSBm IE9OIGYub2lkID0gYS5hbW9wZmFtaWx5CisgIEpPSU4gcGdfb3BlcmF0b3IgbyBPTiBvLm9p ZCA9IGEuYW1vcG9wcgorICBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gby5vcHJu YW1lc3BhY2UKKyBXSEVSRSBmLm9wZm5hbWUgPSAncmVxZmFtJzsKKy0tIE91dHNpZGUgdGhl IHNjcmlwdCB0aGUgY2FjaGVkIHBsYW4gaXMgZ29vZCBhZ2Fpbi4KK1NFVCBzZWFyY2hfcGF0 aCA9IHRlc3RfcmVxLCB0ZXN0X3JlcWRlcCwgcGdfdGVtcDsKK1NFTEVDVCB0ZXN0X3JlcWRl cC5yZXFwbHBnc3FsKCkgQVMgYWZ0ZXJfc2NyaXB0OworUkVTRVQgc2VhcmNoX3BhdGg7CitE Uk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9yZXE7CitEUk9QIEVYVEVOU0lPTiB0 ZXN0X2V4dF9vdmVybG9hZF9yZXFfZGVwOworRFJPUCBTQ0hFTUEgdGVzdF9yZXEgQ0FTQ0FE RTsKK0RST1AgU0NIRU1BIHRlc3RfcmVxZGVwIENBU0NBREU7CitETyAkJCBCRUdJTgorICAg IEVYRUNVVEUgZm9ybWF0KCdSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFICVJIEZST00gcmVn cmVzc19leHRfcmVxb3duZXInLAorICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGF0YWJh c2UoKSk7CitFTkQgJCQ7CitEUk9QIFJPTEUgcmVncmVzc19leHRfYXR0YWNrZXI7CitEUk9Q IFJPTEUgcmVncmVzc19leHRfcmVxb3duZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZC0tMS4wLnNxbCBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkLS0xLjAuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42M2U2MGExZTgxNwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rl c3RfZXh0X292ZXJsb2FkLS0xLjAuc3FsCkBAIC0wLDAgKzEsMTkgQEAKKy8qIHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkLS0xLjAuc3FsICov CisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0 aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04g dGVzdF9leHRfb3ZlcmxvYWQiIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCistLSBmKCkg YW5kICMjIyB0YWtlIHZhcmNoYXIuICBSZXNvbHZpbmcgZignYWJjJykgZHVyaW5nIHRoaXMg c2NyaXB0IG11c3QKKy0tIHJlYWNoIHRoZW0sIG5vdCBhIHBsYW50ZWQgZih0ZXh0KSBzaWJs aW5nLgorQ1JFQVRFIEZVTkNUSU9OIEBleHRzY2hlbWFALmYodmFyY2hhcikgUkVUVVJOUyB0 ZXh0CisgICAgQVMgJCQgU0VMRUNUICdleHRlbnNpb24nOjp0ZXh0ICQkIExBTkdVQUdFIHNx bCBJTU1VVEFCTEU7CisKK0NSRUFURSBGVU5DVElPTiBAZXh0c2NoZW1hQC5vcGltcGwodmFy Y2hhciwgdmFyY2hhcikgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdleHRlbnNp b24nOjp0ZXh0ICQkIExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CisKK0NSRUFURSBPUEVSQVRP UiBAZXh0c2NoZW1hQC4jIyMgKGxlZnRhcmcgPSB2YXJjaGFyLCByaWdodGFyZyA9IHZhcmNo YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IEBleHRz Y2hlbWFALm9waW1wbCk7CisKK0NSRUFURSBUQUJMRSBAZXh0c2NoZW1hQC5jYXB0dXJlZCBB UworICAgIFNFTEVDVCBAZXh0c2NoZW1hQC5mKCdhYmMnKSBBUyBmbiwKKyAgICAgICAgICAg KCdhJyBPUEVSQVRPUihAZXh0c2NoZW1hQC4jIyMpICdiJykgQVMgb3A7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZC5j b250cm9sIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3Zl cmxvYWQuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZWZhZWYxY2I1NTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZC5jb250cm9sCkBAIC0wLDAgKzEsMyBAQAor Y29tbWVudCA9ICdUZXN0IHByb3RlY3Rpb24gYWdhaW5zdCBvdmVybG9hZCBjYXB0dXJlIGR1 cmluZyBleHRlbnNpb24gc2NyaXB0cycKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCityZWxv Y2F0YWJsZSA9IGZhbHNlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyLS0xLjAtLTIuMC5zcWwgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVy LS0xLjAtLTIuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmY2M2NmY2MwMmE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLS0yLjAuc3FsCkBA IC0wLDAgKzEsOSBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVz dF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLS0yLjAuc3FsICovCisKKy0tIGNvbXBsYWlu IGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBBTFRFUiBF WFRFTlNJT04KK1xlY2hvIFVzZSAiQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2Fk X25vc3VwZXIgVVBEQVRFIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0gZygpIGJl bG9uZ3MgdG8gdGhpcyBleHRlbnNpb24gYnV0IGlzIG93bmVkIGJ5IHRoZSBub24tc3VwZXJ1 c2VyIHdobworLS0gaW5zdGFsbGVkIDEuMCwgc28gYW4gdXBkYXRlIHJ1biBieSBhbnkgb3Ro ZXIgcm9sZSByZWFjaGVzIGl0IG9ubHkgYnkKKy0tIGV4dGVuc2lvbiBtZW1iZXJzaGlwLgor Q1JFQVRFIFRBQkxFIEBleHRzY2hlbWFALnVwZGF0ZWQgQVMgU0VMRUNUIGcoJ2FiYycpIEFT IGZuOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVz dF9leHRfb3ZlcmxvYWRfbm9zdXBlci0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX25vc3VwZXItLTEuMC5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMzZTkzMTEwODI1Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRf b3ZlcmxvYWRfbm9zdXBlci0tMS4wLnNxbApAQCAtMCwwICsxLDEyIEBACisvKiBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyLS0x LjAuc3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWws IHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBF WFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfbm9zdXBlciIgdG8gbG9hZCB0aGlzIGZpbGUu IFxxdWl0CisKKy0tIFRoZSBzY3JpcHQgcnVucyBhcyB0aGUgaW52b2tpbmcgbm9uLXN1cGVy dXNlciwgc28gZygpIGlzIG93bmVkIGJ5IHRoYXQKKy0tIHJvbGUuICBnKCdhYmMnKSBtdXN0 IHN0aWxsIHJlc29sdmUgdG8gaXQsIG5vdCB0byBhIHBsYW50ZWQgZyh0ZXh0KS4KK0NSRUFU RSBGVU5DVElPTiBAZXh0c2NoZW1hQC5nKHZhcmNoYXIpIFJFVFVSTlMgdGV4dAorICAgIEFT ICQkIFNFTEVDVCAnZXh0ZW5zaW9uJzo6dGV4dCAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxF OworCitDUkVBVEUgVEFCTEUgQGV4dHNjaGVtYUAuY2FwdHVyZWRfbm9zdXBlciBBUworICAg IFNFTEVDVCBAZXh0c2NoZW1hQC5nKCdhYmMnKSBBUyBmbjsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX25vc3VwZXIu Y29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292 ZXJsb2FkX25vc3VwZXIuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uZWI3NDgwODllNzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9ub3N1cGVyLmNvbnRyb2wK QEAgLTAsMCArMSw0IEBACitjb21tZW50ID0gJ1Rlc3Qgb3ZlcmxvYWQtY2FwdHVyZSBwcm90 ZWN0aW9uIGZvciBhIHN1cGVydXNlciA9IGZhbHNlIGV4dGVuc2lvbicKK2RlZmF1bHRfdmVy c2lvbiA9ICcxLjAnCityZWxvY2F0YWJsZSA9IGZhbHNlCitzdXBlcnVzZXIgPSBmYWxzZQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRf b3ZlcmxvYWRfcGFyYWxsZWwtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0 ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxlbC0tMS4wLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTRhNDZiY2E1OTAKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVy bG9hZF9wYXJhbGxlbC0tMS4wLnNxbApAQCAtMCwwICsxLDE1IEBACisvKiBzcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxlbC0tMS4w LnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCBy YXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhU RU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3BhcmFsbGVsIiB0byBsb2FkIHRoaXMgZmlsZS4g XHF1aXQKKworLS0gd3JhcCgpIGlzIHBhcmFsbGVsIHNhZmUgYW5kIGl0cyBib2R5IGlzIHBh cnNlZCBhdCBydW4gdGltZSwgc28gdW5kZXIKKy0tIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5IHRo ZSB3b3JrZXIgcmVzb2x2ZXMgcHJvYmUoJ3gnKS4gIEl0IG11c3QgcmVhY2gKKy0tIHByb2Jl KHZhcmNoYXIpLCBub3QgYSBwbGFudGVkIHByb2JlKHRleHQpLgorQ1JFQVRFIEZVTkNUSU9O IEBleHRzY2hlbWFALnByb2JlKHZhcmNoYXIpIFJFVFVSTlMgdGV4dAorICAgIEFTICQkIFNF TEVDVCAnZXh0ZW5zaW9uJzo6dGV4dCAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIFBBUkFM TEVMIFNBRkU7CisKK0NSRUFURSBGVU5DVElPTiBAZXh0c2NoZW1hQC53cmFwKCkgUkVUVVJO UyB0ZXh0CisgICAgTEFOR1VBR0UgcGxwZ3NxbCBQQVJBTExFTCBTQUZFIEFTICQkIEJFR0lO IFJFVFVSTiBwcm9iZSgneCcpOyBFTkQgJCQ7CisKK0NSRUFURSBUQUJMRSBAZXh0c2NoZW1h QC5jYXB0dXJlZCBBUyBTRUxFQ1QgQGV4dHNjaGVtYUAud3JhcCgpIEFTIHdobzsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJs b2FkX3BhcmFsbGVsLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9u cy90ZXN0X2V4dF9vdmVybG9hZF9wYXJhbGxlbC5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYTNjYmFlMjE2MgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3Bh cmFsbGVsLmNvbnRyb2wKQEAgLTAsMCArMSwzIEBACitjb21tZW50ID0gJ1Rlc3Qgb3Zlcmxv YWQtY2FwdHVyZSBwcm90ZWN0aW9uIHdoZW4gcmVzb2x1dGlvbiBydW5zIGluIGEgcGFyYWxs ZWwgd29ya2VyJworZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK3JlbG9jYXRhYmxlID0gZmFs c2UKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3Rf ZXh0X292ZXJsb2FkX3JlcS0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRl bnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3JlcS0tMS4wLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmU3ZDgyYTBlMzQKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9y ZXEtLTEuMC5zcWwKQEAgLTAsMCArMSwyMCBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfcmVxLS0xLjAuc3FsICovCisKKy0tIGNv bXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBD UkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gdGVzdF9leHRf b3ZlcmxvYWRfcmVxIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0gRXZlcnkgcmVm ZXJlbmNlIGJlbG93IGlzIHRvIGEgcmVxdWlyZWQgZXh0ZW5zaW9uJ3Mgb2JqZWN0LiAgQSBz YW1lLW5hbWVkCistLSBwbGFudCBpbiBAZXh0c2NoZW1hQCBtdXN0IG5vdCBjYXB0dXJlIGFu eSBvZiB0aGVtLgorQ1JFQVRFIFRBQkxFIEBleHRzY2hlbWFALmNhcHR1cmVkIEFTCisgICAg U0VMRUNUIHJlcWNhbGwoMSkgQVMgd2hvLAorICAgICAgICAgICByZXFwbHBnc3FsKCkgQVMg d2hvX2NhY2hlZCwKKyAgICAgICAgICAgcGdfY2F0YWxvZy5wZ190eXBlb2YoJ2FiYyc6OnJl cWRvbSkgQVMgZG9tOworCitJTlNFUlQgSU5UTyByZXF0YWIgVkFMVUVTICgnZnJvbSBzY3Jp cHQnKTsKKworQ1JFQVRFIE9QRVJBVE9SIEBleHRzY2hlbWFALiMjIyAobGVmdGFyZyA9IGlu dGVnZXIsIHJpZ2h0YXJnID0gaW50ZWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZ1bmN0aW9uID0gcmVxZXEpOworCitDUkVBVEUgT1BFUkFUT1IgRkFNSUxZIEBl eHRzY2hlbWFALnJlcWZhbSBVU0lORyBidHJlZTsKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBA ZXh0c2NoZW1hQC5yZXFmYW0gVVNJTkcgYnRyZWUgQURECisgICAgT1BFUkFUT1IgMyA9PT0g KGludGVnZXIsIGludGVnZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfcmVxLmNvbnRyb2wgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9yZXEuY29udHJvbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTQ3NTU2ZGIyMzgKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0 X2V4dF9vdmVybG9hZF9yZXEuY29udHJvbApAQCAtMCwwICsxLDQgQEAKK2NvbW1lbnQgPSAn ZXh0ZW5zaW9uIHdob3NlIHNjcmlwdCByZWZlcmVuY2VzIGEgcmVxdWlyZWQgZXh0ZW5zaW9u JydzIG9iamVjdHMnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworcmVsb2NhdGFibGUgPSBm YWxzZQorcmVxdWlyZXMgPSAndGVzdF9leHRfb3ZlcmxvYWRfcmVxX2RlcCcKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2Fk X3JlcV9kZXAtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90 ZXN0X2V4dF9vdmVybG9hZF9yZXFfZGVwLS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5iZTQyNTUzYTg2ZAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3JlcV9k ZXAtLTEuMC5zcWwKQEAgLTAsMCArMSwyMyBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfcmVxX2RlcC0tMS4wLnNxbCAqLworCist LSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2 aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3Rf ZXh0X292ZXJsb2FkX3JlcV9kZXAiIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCistLSBP YmplY3RzIHRoZSBkZXBlbmRlbnQgZXh0ZW5zaW9uJ3Mgc2NyaXB0IHJlZmVyZW5jZXMgYnkg dW5xdWFsaWZpZWQgbmFtZS4KK0NSRUFURSBGVU5DVElPTiBAZXh0c2NoZW1hQC5yZXFjYWxs KGludCkgUkVUVVJOUyB0ZXh0CisgICAgQVMgJCQgU0VMRUNUICdyZXF1aXJlZCc6OnRleHQg JCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKKworQ1JFQVRFIEZVTkNUSU9OIEBleHRzY2hl bWFALnJlcWVxKGludCwgaW50KSBSRVRVUk5TIGJvb2xlYW4KKyAgICBBUyAkJCBTRUxFQ1Qg dHJ1ZSAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFOworCitDUkVBVEUgRE9NQUlOIEBleHRz Y2hlbWFALnJlcWRvbSBBUyB0ZXh0OworCitDUkVBVEUgVEFCTEUgQGV4dHNjaGVtYUAucmVx dGFiKHQgdGV4dCk7CisKKy0tIFBhcnNlZCBhdCBydW4gdGltZSwgc28gYSBjYWxsIGJlZm9y ZSB0aGUgZGVwZW5kZW50IHNjcmlwdCBjYWNoZXMgYQorLS0gcmVzb2x1dGlvbiBtYWRlIHdp dGhvdXQgdHJ1c3QgY2hlY2tzLgorQ1JFQVRFIEZVTkNUSU9OIEBleHRzY2hlbWFALnJlcXBs cGdzcWwoKSBSRVRVUk5TIHRleHQKKyAgICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkIEJFR0lO IFJFVFVSTiByZXFjYWxsKDEpOyBFTkQgJCQ7CisKK0NSRUFURSBPUEVSQVRPUiBAZXh0c2No ZW1hQC49PT0gKGxlZnRhcmcgPSBpbnRlZ2VyLCByaWdodGFyZyA9IGludGVnZXIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IEBleHRzY2hlbWFALnJl cWVxKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rl c3RfZXh0X292ZXJsb2FkX3JlcV9kZXAuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3JlcV9kZXAuY29udHJvbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjZkZmI1ZmE4NzQKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9v dmVybG9hZF9yZXFfZGVwLmNvbnRyb2wKQEAgLTAsMCArMSw0IEBACitjb21tZW50ID0gJ3Jl cXVpcmVkIGV4dGVuc2lvbiBwcm92aWRpbmcgb2JqZWN0cyBmb3IgdGhlIG92ZXJsb2FkLWNh cHR1cmUgdGVzdCcKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCityZWxvY2F0YWJsZSA9IGZh bHNlCitzdXBlcnVzZXIgPSBmYWxzZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0xLjAuc3FsIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0 LS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xM2I0 YTg5ODJhYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRl bnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tMS4wLnNxbApAQCAtMCwwICsxLDkg QEAKKy8qIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJs b2FkX3N0cmljdC0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291 cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8g VXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdCIgdG8gbG9h ZCB0aGlzIGZpbGUuIFxxdWl0CisKKy0tIGhlbHBlcl9vbmx5KCkgZXhpc3RzIG9ubHkgYXMg YSBwbGFudGVkIGRlZmluaXRpb24sIHNvIHRoZSBzY3JpcHQgbXVzdAorLS0gZmFpbCB3aXRo ICJmdW5jdGlvbiBkb2VzIG5vdCBleGlzdCIuCitDUkVBVEUgVEFCTEUgQGV4dHNjaGVtYUAu Y2FwdHVyZWQgQVMKKyAgICBTRUxFQ1QgQGV4dHNjaGVtYUAuaGVscGVyX29ubHkoJ2FiYycp IEFTIHI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90 ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTEwLjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0xMC4wLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWNjY2U2MTA2YTcKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4 dF9vdmVybG9hZF9zdHJpY3QtLTEwLjAuc3FsCkBAIC0wLDAgKzEsOSBAQAorLyogc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0x MC4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3Fs LCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUg RVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdCIgdG8gbG9hZCB0aGlzIGZpbGUu IFxxdWl0CisKKy0tIEFzIDguMCwgdW5xdWFsaWZpZWQ6IHJlc29sdmVkIHRocm91Z2ggc2Vh cmNoX3BhdGggYnkKKy0tIFR5cGVuYW1lR2V0VHlwaWRFeHRlbmRlZC4KK0NSRUFURSBGVU5D VElPTiBAZXh0c2NoZW1hQC5nKHBsYW50ZWRfZG9tKSBSRVRVUk5TIHRleHQKKyAgICBBUyAk JCBTRUxFQ1QgJ2V4dGVuc2lvbic6OnRleHQgJCQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0 X292ZXJsb2FkX3N0cmljdC0tMi4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRl bnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tMi4wLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjgwYjJkMDBjMjUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9h ZF9zdHJpY3QtLTIuMC5zcWwKQEAgLTAsMCArMSw5IEBACisvKiBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTIuMC5zcWwgKi8K KworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRo YW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiB0 ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QiIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCist LSBBcyBmb3IgaGVscGVyX29ubHkoKSBpbiAxLjAsIGJ1dCBmb3IgYW4gb3BlcmF0b3I6IHRo ZSBvbmx5IGRlZmluaXRpb24gb2YKKy0tIEBAQCBpcyBvbmUgYW4gdW5wcml2aWxlZ2VkIHVz ZXIgcGxhbnRlZCwgc28gdGhlIHNjcmlwdCBtdXN0IHJlZnVzZSBpdC4KK0NSRUFURSBUQUJM RSBAZXh0c2NoZW1hQC5jYXB0dXJlZCBBUworICAgIFNFTEVDVCAoJ2EnIE9QRVJBVE9SKEBl eHRzY2hlbWFALkBAQCkgJ2InKSBBUyByOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS0zLjAuc3FsIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3Ry aWN0LS0zLjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5l ZGQwMTM0NDIzNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tMy4wLnNxbApAQCAtMCwwICsx LDEwIEBACisvKiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9v dmVybG9hZF9zdHJpY3QtLTMuMC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlz IHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xl Y2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QiIHRv IGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCistLSBUaGUgb25seSA8PDwgKHZhcmNoYXIsIHZh cmNoYXIpIGlzIGEgcGxhbnQ7IG5hbWluZyBpdCBhcyBDT01NVVRBVE9SIG11c3QKKy0tIGZh aWwgYXMgImRvZXMgbm90IGV4aXN0Iiwgbm90IGNvbGxpZGUgd2l0aCBpdCB3aGVuIG1ha2lu ZyBhIHNoZWxsLgorQ1JFQVRFIE9QRVJBVE9SIEBleHRzY2hlbWFALj4+PiAobGVmdGFyZyA9 IHZhcmNoYXIsIHJpZ2h0YXJnID0gdmFyY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZ1bmN0aW9uID0gQGV4dHNjaGVtYUAub3BpbXBsLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29tbXV0YXRvciA9IDw8PCk7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJp Y3QtLTQuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4 dF9vdmVybG9hZF9zdHJpY3QtLTQuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjViN2EyNmRiODUxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS00LjAu c3FsCkBAIC0wLDAgKzEsOSBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lv bnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS00LjAuc3FsICovCisKKy0tIGNvbXBsYWlu IGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUg RVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3Zlcmxv YWRfc3RyaWN0IiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0gVHJ1c3RlZCBmKHZh cmNoYXIpIGFuZCBwbGFudGVkIGYodGV4dCkgYXJlIHZpc2libGU7IGYoMSkgbWF0Y2hlcyBu ZWl0aGVyLAorLS0gc28gdGhlIGVycm9yIGlzIGFib3V0IHRoZSBhcmd1bWVudCB0eXBlcy4K K0NSRUFURSBUQUJMRSBAZXh0c2NoZW1hQC5jYXB0dXJlZCBBUworICAgIFNFTEVDVCBAZXh0 c2NoZW1hQC5mKDEpIEFTIHI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTUuMC5zcWwgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QtLTUu MC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFlZjMxMTVl YjFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lv bnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS01LjAuc3FsCkBAIC0wLDAgKzEsOCBAQAor Lyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRf c3RyaWN0LS01LjAuc3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2Vk IGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2Ug IkNSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0IiB0byBsb2FkIHRo aXMgZmlsZS4gXHF1aXQKKworLS0gQXMgaW4gNC4wLCBmb3IgYW4gb3BlcmF0b3I6IGludGVn ZXIgb3BlcmFuZHMgbWF0Y2ggbmVpdGhlciAjIyMuCitDUkVBVEUgVEFCTEUgQGV4dHNjaGVt YUAuY2FwdHVyZWQgQVMKKyAgICBTRUxFQ1QgKDEgT1BFUkFUT1IoQGV4dHNjaGVtYUAuIyMj KSAyKSBBUyByOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lv bnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS02LjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS02LjAuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xOTVlNmQwZTQyMQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3Rf ZXh0X292ZXJsb2FkX3N0cmljdC0tNi4wLnNxbApAQCAtMCwwICsxLDggQEAKKy8qIHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0t Ni4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3Fs LCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUg RVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3N0cmljdCIgdG8gbG9hZCB0aGlzIGZpbGUu IFxxdWl0CisKKy0tIFRoZSBvbmx5ICYmJiBpcyBvdXRzaWRlIHRoZSBzZWFyY2ggcGF0aDsg cmVwb3J0IHRoYXQsIG5vdCB0cnVzdC4KK0NSRUFURSBUQUJMRSBAZXh0c2NoZW1hQC5jYXB0 dXJlZCBBUworICAgIFNFTEVDVCAoJ2EnICYmJiAnYicpIEFTIHI7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJp Y3QtLTcuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4 dF9vdmVybG9hZF9zdHJpY3QtLTcuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjQ0ODAzZjAyZjAyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS03LjAu c3FsCkBAIC0wLDAgKzEsMTIgQEAKKy8qIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tNy4wLnNxbCAqLworCistLSBjb21wbGFp biBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRF IEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJs b2FkX3N0cmljdCIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy0tIEEgcGxhbnRlZCB0 YWJsZSByZWFjaGVkIGJ5IGl0cyBzY2hlbWEtcXVhbGlmaWVkIG5hbWUsIGFzIGFuIHVwZ3Jh ZGUgc2NyaXB0CistLSB3b3VsZCByZWFjaCBhIHRhYmxlIGl0IGV4cGVjdHMgZnJvbSBhbiBl YXJsaWVyIHZlcnNpb24uICAoQ1JFQVRFIC4uLiBJRiBOT1QKKy0tIEVYSVNUUyBvdmVyIHRo ZSBwbGFudCBpcyBhbHJlYWR5IHJlZnVzZWQgb24gbWVtYmVyc2hpcCBncm91bmRzLCBzbyB0 aGUKKy0tIHJlZmVyZW5jZSBtdXN0IGJlIGEgYmFyZSBvbmUuKSAgVGhlIElOU0VSVCB3b3Vs ZCB3cml0ZSB0aGUgZXh0ZW5zaW9uJ3MgZGF0YQorLS0gaW50byB0aGUgYXR0YWNrZXIncyB0 YWJsZTsgdGhlIHF1YWxpZmllZCBsb29rdXAgbXVzdCByZWZ1c2UgaXQgYXMgImRvZXMgbm90 CistLSBleGlzdCIsIGV4YWN0bHkgYXMgdGhlIHVucXVhbGlmaWVkIG9uZSBkb2VzLgorSU5T RVJUIElOVE8gQGV4dHNjaGVtYUAuY2ZnIFZBTFVFUyAoJ2V4dGVuc2lvbicpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3Zlcmxv YWRfc3RyaWN0LS04LjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMv dGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS04LjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5hMDFhYTFkZGFiNAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmlj dC0tOC4wLnNxbApAQCAtMCwwICsxLDggQEAKKy8qIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tOC4wLnNxbCAqLworCistLSBj b21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEg Q1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0 X292ZXJsb2FkX3N0cmljdCIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy0tIEEgcGxh bnRlZCBkb21haW4gcmVhY2hlZCBieSBpdHMgc2NoZW1hLXF1YWxpZmllZCBuYW1lIGluIGEg c2lnbmF0dXJlLgorQ1JFQVRFIEZVTkNUSU9OIEBleHRzY2hlbWFALmcoQGV4dHNjaGVtYUAu cGxhbnRlZF9kb20pIFJFVFVSTlMgdGV4dAorICAgIEFTICQkIFNFTEVDVCAnZXh0ZW5zaW9u Jzo6dGV4dCAkJCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0LS05 LjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3Zl cmxvYWRfc3RyaWN0LS05LjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5iZTc5NmEyNDIxMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X292ZXJsb2FkX3N0cmljdC0tOS4wLnNxbApA QCAtMCwwICsxLDcgQEAKKy8qIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rl c3RfZXh0X292ZXJsb2FkX3N0cmljdC0tOS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBz Y3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVO U0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X292ZXJsb2FkX3N0 cmljdCIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy0tIEFzIDcuMCwgdW5xdWFsaWZp ZWQ6IHJlc29sdmVkIHRocm91Z2ggc2VhcmNoX3BhdGggYnkgUmVsbmFtZUdldFJlbGlkLgor SU5TRVJUIElOVE8gY2ZnIFZBTFVFUyAoJ2V4dGVuc2lvbicpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3ZlcmxvYWRfc3RyaWN0 LmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9v dmVybG9hZF9zdHJpY3QuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uZDUzNzY4N2M5MWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vdmVybG9hZF9zdHJpY3QuY29udHJvbApA QCAtMCwwICsxLDMgQEAKK2NvbW1lbnQgPSAnVGVzdCByZWZ1c2FsIHRvIGNhbGwgYW4gdW50 cnVzdGVkIGZ1bmN0aW9uIGR1cmluZyBleHRlbnNpb24gc2NyaXB0cycKK2RlZmF1bHRfdmVy c2lvbiA9ICcxLjAnCityZWxvY2F0YWJsZSA9IGZhbHNlCi0tIAoyLjQ3LjMKCg== --------------l30iKBcwkMIG01LOSXWL06wF--