Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1swpV7-006Fv4-1g for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Oct 2024 21:06:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1swpV5-0069ie-Gc for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Oct 2024 21:06:11 +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.94.2) (envelope-from ) id 1swpV4-0069fy-Lh for pgsql-hackers@lists.postgresql.org; Fri, 04 Oct 2024 21:06:11 +0000 Received: from mail-yw1-x1131.google.com ([2607:f8b0:4864:20::1131]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1swpUw-002Vaa-Pp for pgsql-hackers@postgresql.org; Fri, 04 Oct 2024 21:06:09 +0000 Received: by mail-yw1-x1131.google.com with SMTP id 00721157ae682-6dbc75acbfaso22792207b3.3 for ; Fri, 04 Oct 2024 14:06:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1728075961; x=1728680761; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Mf6Fm4/Ynl+BvBa8IZBq7JuivzCAaYqcpQ6hcFlWGJM=; b=tUUCfwjSzaghXmFdLt3LT9uJOpVfb6yKQYYVJnkWYZZyHPrr+M3a2TASQjf7bMXrkN bi9VJQ3l2GTsEWQouadh6dc1mENcgweEDT0aYN7RUf/lW3RPQrzPYD4DsmJ03NNvtjms zE0BBjmcCmN+RRjUQUEkoHxyWgnUwIeGvM48JGmNdGcMuHI1I7E42lYq49JDUaqQAH7b dsA3+wCdy98ajfy4NZoFRUdHmN94x5vs9NDyDfCnZ8gkMMZAMe8nJ7MJsSWORYpqf+Cl YTY0znlEoSEGK7N2Re+3kGNofQNEALeP80v8WMjkeQ7+lXzDiu0WlMHAqnJlWOdti2SZ eBeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728075961; x=1728680761; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Mf6Fm4/Ynl+BvBa8IZBq7JuivzCAaYqcpQ6hcFlWGJM=; b=vwq9UckA1DXRL0nL67HxXrVE01wVWTpGYNzijo6437qBqvey7JP+q9PuiVKeHEtMf1 dJSHbRQQRMOpR+n40q+MQ8nw5x/R8tyxeOsN6LCMCScUfscpIixOLPKRrAhQd8PWKESS /fnkjhFkGhTGva6okakhU9/Ty24FNH1u7T9AdKaOZ42XLPe+eoOosaWQ8NrAWqw1lzjZ Osm8ikGzEbZTcLubf/AEjSChahtEv0Tdfbf1GdEGBqGiY666oZOvA8+vpdFWdUCylv8G D05XqfyvEwjHka81tzNz+xL6/MQlk7VYlyYpe8ycvTVTAycX9Nju2cIbWkd33M6h6Kd+ lEDw== X-Forwarded-Encrypted: i=1; AJvYcCXyNhmPH6jaNMEB43v2EDiR6TyibJydvObJR8RebFW7E1MoQCsTlNb1OG0mHsw3rkSED/TbIKDOn12j4LNL@postgresql.org X-Gm-Message-State: AOJu0YxVxGWRZpXpDJveHEsiblXaFn+6yGAc+dk7f6PGg1wJv+qjjTxq Lo/VyFUSZC5H7o+++ztQmeTePe6E6lofdwMypi6sCQzNf54sEGPsZEy9gze5K3zDlIxr1/9s8dn r42z+XPkHZjrukkgybHxBzdyI/hKV9Kul6dPZow== X-Google-Smtp-Source: AGHT+IH7fkn3BJoNC1L7IkNXgwo0eTo4VzRx7RKPSDcFc5tGrZ6pXo0qzxi/0veuTvxvhwsfBTCA1QIATP9otRM9wMw= X-Received: by 2002:a05:690c:fd5:b0:6de:1e2:d65b with SMTP id 00721157ae682-6e2c6fdd000mr39972527b3.8.1728075961526; Fri, 04 Oct 2024 14:06:01 -0700 (PDT) MIME-Version: 1.0 References: <585e996c-a5c6-4e61-acc4-d92b7a1458ea@vondra.me> In-Reply-To: <585e996c-a5c6-4e61-acc4-d92b7a1458ea@vondra.me> From: Jelte Fennema-Nio Date: Fri, 4 Oct 2024 23:05:51 +0200 Message-ID: Subject: Re: Extension security improvement: Add support for extensions with an owned schema To: Tomas Vondra Cc: "David G. Johnston" , Jeff Davis , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000d52b260623ad0998" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d52b260623ad0998 Content-Type: text/plain; charset="UTF-8" On Fri, 27 Sept 2024 at 14:00, Tomas Vondra wrote: > One thing that's not quite clear to me is what's the correct way for > existing extensions to switch to an "owned schema". Let's say you have > an extension. How do you transition to this? Can you just add it to the > control file and then some magic happens? Sadly no. As currently implemented this feature can only really be used by new extensions. There is no upgrade path to it for existing extensions. This is fairly common btw, the only field in the control file that ever gets used after the taken from the control file for ALTER EXTENSION is the version field. e.g. if you change the schema field in the control file of an already installed extension, the extension will not be moved to the new schema unless you DROP + CREATE EXTENSION. After this message I tried messing around a bit with changing an existing extension to become an owned schema (either with a new command or as part of ALTER EXTENSION UPDATE). But it's not as trivial as I hoped for a few reasons: 1. There are multiple states that extensions are currently in all of which need somewhat different conversion strategies. Specifically: relocatable/non-relocatable & schema=pg_catalog/public/actual_extension_schema. 2. There are two important assumptions on the schema for an owned_schema, which we would need to check on an existing schema converting it: a. The owner of the extension should be the owner of the schema b. There are no other objects in the schema appart from the extension. I'll probably continue some efforts to allow for migration, because I agree it's useful. But I don't think it's critical for this feature to be committable. Even if this can only be used by new extensions (that target PG18+ only), I think that would already be very useful. i.e. if in 5 years time I don't have to worry about these security pitfalls for any new extensions that I write then I'll be very happy. Also if an extension really wants to upgrade to an owned schema, then that should be possible by doing some manual catalog hackery in its extension update script, because that's effectively what any automatic conversion would also do. > A couple minor comments: > Doesn't "extension is owned_schema" sound a bit weird? Updated the docs to address all of your feedback I think. > Also, perhaps "dedicated_schema" would be better than "owned_schema"? I > mean, the point is not that it's "owned" by the extension, but that > there's nothing else in it. But that's nitpicking. I agree that's probably a better name. Given the amount of effort necessary to update everything I haven't done that yet. I'll think a bit if there's a name I like even better in the meantime, and I'm definitely open to other suggestions. > 3) src/backend/commands/extension.c > > I'm not sure why AlterExtensionNamespace moves the privilege check. Why > should it not check the privilege for owned schema too? Because for an owned schema we're not creating objects in an existing schema. We're only renaming the schema that the extension is already in using RenameSchema, so there's no point in checking if the user can create objects in that schema, since the objects are already there. (RenameSchema also checks internally if the current user is the owner of the schema) > Shouldn't binary_upgrade_extension_member still set ext=NULL in the for > loop, the way the original code does that? I don't think that's necessary. It was necessary before to set extobj to NULL, because that variable was set every loop. But now extobj is scoped to the loop, and ext is only set right before the break. So either we set ext in the loop and break out of the loop right away, or ext is still set to the NULL value that's was assigned at the top of the function. > The long if conditions might need some indentation, I guess. pgindent > leaves them like this, but 100 columns seems a bit too much. I'd do a > line break after each condition, I guess. Done --000000000000d52b260623ad0998 Content-Type: application/octet-stream; name="v4-0001-Add-support-for-extensions-with-an-owned-schema.patch" Content-Disposition: attachment; filename="v4-0001-Add-support-for-extensions-with-an-owned-schema.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1v7qz8a0 RnJvbSA1YmQ3MzU3ZjBjOGNjYTYzZjNhMjZhYTJkNzhhZGRkYzY3MWE0NzU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDQgT2N0IDIwMjQgMjI6MzQ6NTEgKzAyMDAKU3ViamVjdDogW1BBVENIIHY0 XSBBZGQgc3VwcG9ydCBmb3IgZXh0ZW5zaW9ucyB3aXRoIGFuIG93bmVkIHNjaGVtYQoKV3JpdGlu ZyB0aGUgc3FsIG1pZ3JhdGlvbiBzY3JpcHRzIHRoYXQgYXJlIHJ1biBieSBDUkVBVEUgRVhURU5T SU9OIGFuZApBTFRFUiBFWFRFTlNJT04gVVBEQVRFIGFyZSBzZWN1cml0eSBtaW5lZmllbGRzIGZv ciBleHRlbnNpb24gYXV0aG9ycy4KT25lIGJpZyByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBzZWFy Y2hfcGF0aCBpcyBzZXQgdG8gdGhlIHNjaGVtYSBvZiB0aGUKZXh0ZW5zaW9uIHdoaWxlIHJ1bm5p bmcgdGhlc2Ugc2NyaXB0cywgYW5kIHRodXMgaWYgYSB1c2VyIHdpdGggbG93ZXIKcHJpdmlsZWdl cyBjYW4gY3JlYXRlIGZ1bmN0aW9ucyBvciBvcGVyYXRvcnMgaW4gdGhhdCBzY2hlbWEgdGhleSBj YW4gZG8KYWxsIGtpbmRzIG9mIHNlYXJjaF9wYXRoIGNvbmZ1c2lvbiBhdHRhY2tzIGlmIG5vdCBl dmVyeSBmdW5jdGlvbiBhbmQKb3BlcmF0b3IgdGhhdCBpcyB1c2VkIGluIHRoZSBzY3JpcHQgaXMg c2NoZW1hIHF1YWxpZmllZC4gV2hpbGUgZG9pbmcKc3VjaCBzY2hlbWEgcXVhbGlmaWNhdGlvbiBp cyBwb3NzaWJsZSwgaXQgcmVsaWVzIG9uIHRoZSBhdXRob3IgdG8gbmV2ZXIKbWFrZSBhIG1pc3Rh a2UgaW4gYW55IG9mIHRoZSBzcWwgZmlsZXMuIEFuZCBzYWRseSBodW1hbnMgaGF2ZSBhIHRlbmRl bmN5CnRvIG1ha2UgbWlzdGFrZXMuCgpUaGlzIHBhdGNoIGFkZHMgYSBuZXcgIm93bmVkX3NjaGVt YSIgb3B0aW9uIHRvIHRoZSBleHRlbnNpb24gY29udHJvbApmaWxlIHRoYXQgY2FuIGJlIHNldCB0 byB0cnVlIHRvIGluZGljYXRlIHRoYXQgdGhpcyBleHRlbnNpb24gd2FudHMgdG8Kb3duIHRoZSBz Y2hlbWEgaW4gd2hpY2ggaXQgaXMgaW5zdGFsbGVkLiBXaGF0IHRoYXQgbWVhbnMgaXMgdGhhdCB0 aGUKc2NoZW1hIHNob3VsZCBub3QgZXhpc3QgYmVmb3JlIGNyZWF0aW5nIHRoZSBleHRlbnNpb24s IGFuZCB3aWxsIGJlCmNyZWF0ZWQgZHVyaW5nIGV4dGVuc2lvbiBjcmVhdGlvbi4gVGhpcyB0aHVz IGdpdmVzIHRoZSBleHRlbnNpb24gYXV0aG9yCmFuIGVhc3kgd2F5IHRvIHVzZSBhIHNhZmUgc2Vh cmNoX3BhdGgsIHdoaWxlIHN0aWxsIGFsbG93aW5nIGFsbCBvYmplY3RzCnRvIGJlIGdyb3VwZWQg dG9nZXRoZXIgaW4gYSBzY2hlbWEuIFRoZSBpbXBsZW1lbnRhdGlvbiBhbHNvIGhhcyB0aGUKcGxl YXNhbnQgc2lkZSBlZmZlY3QgdGhhdCB0aGUgc2NoZW1hIHdpbGwgYmUgYXV0b21hdGljYWxseSBk cm9wcGVkIHdoZW4KdGhlIGV4dGVuc2lvbiBpcyBkcm9wcGVkLgotLS0KIGRvYy9zcmMvc2dtbC9l eHRlbmQuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAzNCArKysrKwogZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfZXh0ZW5zaW9uLnNnbWwgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAxNDIgKysrKysrKysrKysrKy0tLS0t CiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMgICAgfCAgNDUgKysr Ky0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNTQg KysrKysrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZXh0ZW5zaW9uLmggICAgICAgICAgICB8ICAg MSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDIg Ky0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oICAgICAgICAgICAgICB8ICAgNCAr LQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUgICAgIHwgICA3ICst CiAuLi4vZXhwZWN0ZWQvdGVzdF9leHRlbnNpb25zLm91dCAgICAgICAgICAgICAgfCAgNTAgKysr KysrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZCAgfCAgIDQg KwogLi4uL3Rlc3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRlbnNpb25zLnNxbCAgIHwgIDI3ICsr KysKIC4uLi90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwgICAgICAgICAgICB8ICAgMiAr CiAuLi4vdGVzdF9leHRfb3duZWRfc2NoZW1hLmNvbnRyb2wgICAgICAgICAgICAgfCAgIDUgKwog Li4udGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlLS0xLjAuc3FsIHwgICAyICsKIC4u Li90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUuY29udHJvbCB8ICAgNCArCiAxNyBm aWxlcyBjaGFuZ2VkLCAzMjYgaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3du ZWRfc2NoZW1hLS0xLjAuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2V4dGVuc2lvbnMvdGVzdF9leHRfb3duZWRfc2NoZW1hLmNvbnRyb2wKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9z Y2hlbWFfcmVsb2NhdGFibGUtLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUu Y29udHJvbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9leHRlbmQuc2dtbCBiL2RvYy9zcmMv c2dtbC9leHRlbmQuc2dtbAppbmRleCAyMTg5NDBlZTVjZS4uNjU0Nzk5YjI3MTQgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9leHRlbmQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZXh0ZW5kLnNn bWwKQEAgLTgwOSw2ICs4MDksNDAgQEAgUkVUVVJOUyBhbnljb21wYXRpYmxlIEFTIC4uLgogICAg ICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRy eSBpZD0iZXh0ZW5kLWV4dGVuc2lvbnMtZmlsZXMtb3duZWQtc2NoZW1hIj4KKyAgICAgIDx0ZXJt Pjx2YXJuYW1lPm93bmVkX3NjaGVtYTwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KTwv dGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgQW4gZXh0ZW5z aW9uIHNob3VsZCBzZXQgPGZpcnN0dGVybT5vd25lZF9zY2hlbWE8L2ZpcnN0dGVybT4gdG8KKyAg ICAgICAgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4gaW4gaXRzIGNvbnRyb2wgZmlsZSBpZiB0aGUg ZXh0ZW5zaW9uIHdhbnRzIGEKKyAgICAgICAgZGVkaWNhdGVkIHNjaGVtYSBmb3IgaXRzIG9iamVj dHMuIFN1Y2ggYSBzY2hlbWEgc2hvdWxkIG5vdCBleGlzdCB5ZXQgYXQKKyAgICAgICAgdGhlIHRp bWUgb2YgZXh0ZW5zaW9uIGNyZWF0aW9uLCBhbmQgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2Fs bHkgYnkKKyAgICAgICAgPGxpdGVyYWw+Q1JFQVRFIEVYVEVOU0lPTjwvbGl0ZXJhbD4uIFRoZSBk ZWZhdWx0IGlzCisgICAgICAgIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiwgaS5lLiwgdGhlIGV4 dGVuc2lvbiBjYW4gYmUgaW5zdGFsbGVkIGludG8gYW4KKyAgICAgICAgZXhpc3Rpbmcgc2NoZW1h LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgSGF2aW5nIGEgc2NoZW1h IG93bmVkIGJ5IHRoZSBleHRlbnNpb24gY2FuIG1ha2UgaXQgbXVjaCBlYXNpZXIgdG8KKyAgICAg ICAgcmVhc29uIGFib3V0IHBvc3NpYmxlIDxsaXRlcmFsPnNlYXJjaF9wYXRoPC9saXRlcmFsPiBp bmplY3Rpb24gYXR0YWNrcy4KKyAgICAgICAgRm9yIGluc3RhbmNlIHdpdGggYW4gb3duZWQgc2No ZW1hLCBpdCBpcyBnZW5lcmFsbHkgc2FmZSB0byBzZXQgdGhlCisgICAgICAgIDxsaXRlcmFsPnNl YXJjaF9wYXRoPC9saXRlcmFsPiBvZiBhIDxsaXRlcmFsPlNFQ1VSSVRZIERFRklORVI8L2xpdGVy YWw+CisgICAgICAgIGZ1bmN0aW9uIHRvIHRoZSBzY2hlbWEgb2YgdGhlIGV4dGVuc2lvbi4gV2hp bGUgd2l0aG91dCBhbiBvd25lZCBzY2hlbWEKKyAgICAgICAgaXQgbWlnaHQgbm90IGJlIHNhZmUg dG8gZG8gc28sIGJlY2F1c2UgYSBtYWxpY2lvdXMgdXNlciBjb3VsZCBpbnNlcnQKKyAgICAgICAg b2JqZWN0cyBpbiB0aGF0IHNjaGVtYSBhbmQgdGh1cyA8bGluaworICAgICAgICBsaW5rZW5kPSJz cWwtY3JlYXRlZnVuY3Rpb24tc2VjdXJpdHkiPiBjYXVzZSBtYWxpY2lvdXMgdG8gYmUgZXhlY3V0 ZWQKKyAgICAgICAgYXMgc3VwZXJ1c2VyPC9saW5rPi4gU2ltaWxhcmx5LCBoYXZpbmcgYW4gb3du ZWQgc2NoZW1hIGNhbiBtYWtlIGl0IHNhZmUKKyAgICAgICAgYnkgZGVmYXVsdCB0byBleGVjdXRl IGdlbmVyYWwtcHVycG9zZSBTUUwgaW4gdGhlIGV4dGVuc2lvbiBzY3JpcHQsCisgICAgICAgIGJl Y2F1c2UgdGhlIHNlYXJjaF9wYXRoIG5vdyBvbmx5IGNvbnRhaW5zIHRydXN0ZWQgc2NoZW1hcy4g V2l0aG91dCBhbgorICAgICAgICBvd25lZCBzY2hlbWEgaXQncyA8bGluayBsaW5rZW5kPSJleHRl bmQtZXh0ZW5zaW9ucy1zZWN1cml0eS1zY3JpcHRzIj4KKyAgICAgICAgcmVjb21tZW5kZWQgdG8g bWFudWFsbHkgY2hhbmdlIHRoZSBzZWFyY2hfcGF0aDwvbGluaz4uCisgICAgICAgPC9wYXJhPgor ICAgICAgIDxwYXJhPgorICAgICAgICBBcGFydCBmcm9tIHRoZSBzZWN1cml0eSBjb25zaWRlcmF0 aW9ucywgaGF2aW5nIGFuIG93bmVkIHNjaGVtYSBjYW4gaGVscAorICAgICAgICBwcmV2ZW50IG5h bWluZyBjb25mbGljdHMgYmV0d2VlbiBvYmplY3RzIG9mIGRpZmZlcmVudCBleHRlbnNpb25zLgor ICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImV4dGVuZC1leHRlbnNpb25zLWZpbGVzLXNjaGVtYSI+ CiAgICAgICA8dGVybT48dmFybmFtZT5zY2hlbWE8L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8L3R5 cGU+KTwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX2V4dGVuc2lvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZXh0ZW5z aW9uLnNnbWwKaW5kZXggY2EyYjgwZDY2OWMuLmZmYmU3NTlmODRlIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9leHRlbnNpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9leHRlbnNpb24uc2dtbApAQCAtMTAyLDcgKzEwMiw5IEBAIENSRUFURSBFWFRFTlNJ T04gWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4dGVu c2lvbl9uYW1lCiAgICAgICAgPHBhcmE+CiAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBzY2hlbWEg aW4gd2hpY2ggdG8gaW5zdGFsbCB0aGUgZXh0ZW5zaW9uJ3MKICAgICAgICAgb2JqZWN0cywgZ2l2 ZW4gdGhhdCB0aGUgZXh0ZW5zaW9uIGFsbG93cyBpdHMgY29udGVudHMgdG8gYmUKLSAgICAgICAg cmVsb2NhdGVkLiAgVGhlIG5hbWVkIHNjaGVtYSBtdXN0IGFscmVhZHkgZXhpc3QuCisgICAgICAg IHJlbG9jYXRlZC4gIFRoZSBuYW1lZCBzY2hlbWEgbXVzdCBhbHJlYWR5IGV4aXN0LCB1bmxlc3MK KyAgICAgICAgPGxpdGVyYWw+b3duZWRfc2NoZW1hPC9saXRlcmFsPiBpcyBzZXQgdG8gPGxpdGVy YWw+dHJ1ZTwvbGl0ZXJhbD4gaW4KKyAgICAgICAgdGhlIGNvbnRyb2wgZmlsZSwgdGhlbiB0aGUg c2NoZW1hIG11c3Qgbm90IGV4aXN0LgogICAgICAgICBJZiBub3Qgc3BlY2lmaWVkLCBhbmQgdGhl IGV4dGVuc2lvbidzIGNvbnRyb2wgZmlsZSBkb2VzIG5vdCBzcGVjaWZ5IGEKICAgICAgICAgc2No ZW1hIGVpdGhlciwgdGhlIGN1cnJlbnQgZGVmYXVsdCBvYmplY3QgY3JlYXRpb24gc2NoZW1hIGlz IHVzZWQuCiAgICAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwppbmRleCBmYWI1 OWFkNWY2Ni4uMDZkODY1OGM2MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC04NCw2 ICs4NCw4IEBAIHR5cGVkZWYgc3RydWN0IEV4dGVuc2lvbkNvbnRyb2xGaWxlCiAJCQkJCQkJCQkg KiBNT0RVTEVfUEFUSE5BTUUgKi8KIAljaGFyCSAgICpjb21tZW50OwkJLyogY29tbWVudCwgaWYg YW55ICovCiAJY2hhcgkgICAqc2NoZW1hOwkJCS8qIHRhcmdldCBzY2hlbWEgKGFsbG93ZWQgaWYg IXJlbG9jYXRhYmxlKSAqLworCWJvb2wJCW93bmVkX3NjaGVtYTsJLyogaWYgdGhlIHNjaGVtYSBz aG91bGQgYmUgb3duZWQgYnkgdGhlCisJCQkJCQkJCSAqIGV4dGVuc2lvbiAqLwogCWJvb2wJCXJl bG9jYXRhYmxlOwkvKiBpcyBBTFRFUiBFWFRFTlNJT04gU0VUIFNDSEVNQSBzdXBwb3J0ZWQ/ICov CiAJYm9vbAkJc3VwZXJ1c2VyOwkJLyogbXVzdCBiZSBzdXBlcnVzZXIgdG8gaW5zdGFsbD8gKi8K IAlib29sCQl0cnVzdGVkOwkJLyogYWxsb3cgYmVjb21pbmcgc3VwZXJ1c2VyIG9uIHRoZSBmbHk/ ICovCkBAIC01MDUsNiArNTA3LDE0IEBAIHBhcnNlX2V4dGVuc2lvbl9jb250cm9sX2ZpbGUoRXh0 ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wsCiAJCXsKIAkJCWNvbnRyb2wtPnNjaGVtYSA9IHBz dHJkdXAoaXRlbS0+dmFsdWUpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChpdGVtLT5uYW1lLCAi b3duZWRfc2NoZW1hIikgPT0gMCkKKwkJeworCQkJaWYgKCFwYXJzZV9ib29sKGl0ZW0tPnZhbHVl LCAmY29udHJvbC0+b3duZWRfc2NoZW1hKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkgZXJybXNnKCJw YXJhbWV0ZXIgXCIlc1wiIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSIsCisJCQkJCQkJCWl0ZW0t Pm5hbWUpKSk7CisJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGl0ZW0tPm5hbWUsICJyZWxvY2F0YWJs ZSIpID09IDApCiAJCXsKIAkJCWlmICghcGFyc2VfYm9vbChpdGVtLT52YWx1ZSwgJmNvbnRyb2wt PnJlbG9jYXRhYmxlKSkKQEAgLTE0OTEsOCArMTUwMSwxMSBAQCBDcmVhdGVFeHRlbnNpb25JbnRl cm5hbChjaGFyICpleHRlbnNpb25OYW1lLAogCSAqLwogCWlmIChzY2hlbWFOYW1lKQogCXsKLQkJ LyogSWYgdGhlIHVzZXIgaXMgZ2l2aW5nIHVzIHRoZSBzY2hlbWEgbmFtZSwgaXQgbXVzdCBleGlz dCBhbHJlYWR5LiAqLwotCQlzY2hlbWFPaWQgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hlbWFOYW1l LCBmYWxzZSk7CisJCS8qCisJCSAqIElmIHRoZSB1c2VyIGlzIGdpdmluZyB1cyB0aGUgc2NoZW1h IG5hbWUsIGl0IG11c3QgZXhpc3QgYWxyZWFkeSBpZgorCQkgKiB0aGUgZXh0ZW5zaW9uIGRvZXMg bm90IHdhbnQgdG8gb3duIHRoZSBzY2hlbWEKKwkJICovCisJCXNjaGVtYU9pZCA9IGdldF9uYW1l c3BhY2Vfb2lkKHNjaGVtYU5hbWUsIGNvbnRyb2wtPm93bmVkX3NjaGVtYSk7CiAJfQogCiAJaWYg KGNvbnRyb2wtPnNjaGVtYSAhPSBOVUxMKQpAQCAtMTUxNCw3ICsxNTI3LDEwIEBAIENyZWF0ZUV4 dGVuc2lvbkludGVybmFsKGNoYXIgKmV4dGVuc2lvbk5hbWUsCiAKIAkJLyogQWx3YXlzIHVzZSB0 aGUgc2NoZW1hIGZyb20gY29udHJvbCBmaWxlIGZvciBjdXJyZW50IGV4dGVuc2lvbi4gKi8KIAkJ c2NoZW1hTmFtZSA9IGNvbnRyb2wtPnNjaGVtYTsKKwl9CiAKKwlpZiAoc2NoZW1hTmFtZSkKKwl7 CiAJCS8qIEZpbmQgb3IgY3JlYXRlIHRoZSBzY2hlbWEgaW4gY2FzZSBpdCBkb2VzIG5vdCBleGlz dC4gKi8KIAkJc2NoZW1hT2lkID0gZ2V0X25hbWVzcGFjZV9vaWQoc2NoZW1hTmFtZSwgdHJ1ZSk7 CiAKQEAgLTE1MzUsOCArMTU1MSwyMiBAQCBDcmVhdGVFeHRlbnNpb25JbnRlcm5hbChjaGFyICpl eHRlbnNpb25OYW1lLAogCQkJICovCiAJCQlzY2hlbWFPaWQgPSBnZXRfbmFtZXNwYWNlX29pZChz Y2hlbWFOYW1lLCBmYWxzZSk7CiAJCX0KKwkJZWxzZSBpZiAoY29udHJvbC0+b3duZWRfc2NoZW1h KQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FU RV9TQ0hFTUEpLAorCQkJCQkgZXJybXNnKCJzY2hlbWEgXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwK KwkJCQkJCQlzY2hlbWFOYW1lKSkpOworCQl9CisKIAl9Ci0JZWxzZSBpZiAoIU9pZElzVmFsaWQo c2NoZW1hT2lkKSkKKwllbHNlIGlmIChjb250cm9sLT5vd25lZF9zY2hlbWEpCisJeworCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1NDSEVNQSksCisJCQkJ IGVycm1zZygibm8gc2NoZW1hIGhhcyBiZWVuIHNlbGVjdGVkIHRvIGNyZWF0ZSBpbiIpKSk7CisJ fQorCWVsc2UKIAl7CiAJCS8qCiAJCSAqIE5laXRoZXIgdXNlciBub3IgYXV0aG9yIG9mIHRoZSBl eHRlbnNpb24gc3BlY2lmaWVkIHNjaGVtYTsgdXNlIHRoZQpAQCAtMTYwMyw2ICsxNjMzLDcgQEAg Q3JlYXRlRXh0ZW5zaW9uSW50ZXJuYWwoY2hhciAqZXh0ZW5zaW9uTmFtZSwKIAkgKi8KIAlhZGRy ZXNzID0gSW5zZXJ0RXh0ZW5zaW9uVHVwbGUoY29udHJvbC0+bmFtZSwgZXh0b3duZXIsCiAJCQkJ CQkJCSAgIHNjaGVtYU9pZCwgY29udHJvbC0+cmVsb2NhdGFibGUsCisJCQkJCQkJCSAgIGNvbnRy b2wtPm93bmVkX3NjaGVtYSwKIAkJCQkJCQkJICAgdmVyc2lvbk5hbWUsCiAJCQkJCQkJCSAgIFBv aW50ZXJHZXREYXR1bShOVUxMKSwKIAkJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKE5VTEwpLApA QCAtMTgwOCw3ICsxODM5LDggQEAgQ3JlYXRlRXh0ZW5zaW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Q3JlYXRlRXh0ZW5zaW9uU3RtdCAqc3RtdCkKICAqLwogT2JqZWN0QWRkcmVzcwogSW5zZXJ0RXh0 ZW5zaW9uVHVwbGUoY29uc3QgY2hhciAqZXh0TmFtZSwgT2lkIGV4dE93bmVyLAotCQkJCQkgT2lk IHNjaGVtYU9pZCwgYm9vbCByZWxvY2F0YWJsZSwgY29uc3QgY2hhciAqZXh0VmVyc2lvbiwKKwkJ CQkJIE9pZCBzY2hlbWFPaWQsIGJvb2wgcmVsb2NhdGFibGUsIGJvb2wgb3duZWRTY2hlbWEsCisJ CQkJCSBjb25zdCBjaGFyICpleHRWZXJzaW9uLAogCQkJCQkgRGF0dW0gZXh0Q29uZmlnLCBEYXR1 bSBleHRDb25kaXRpb24sCiAJCQkJCSBMaXN0ICpyZXF1aXJlZEV4dGVuc2lvbnMpCiB7CkBAIC0x ODM4LDYgKzE4NzAsNyBAQCBJbnNlcnRFeHRlbnNpb25UdXBsZShjb25zdCBjaGFyICpleHROYW1l LCBPaWQgZXh0T3duZXIsCiAJdmFsdWVzW0FudW1fcGdfZXh0ZW5zaW9uX2V4dG93bmVyIC0gMV0g PSBPYmplY3RJZEdldERhdHVtKGV4dE93bmVyKTsKIAl2YWx1ZXNbQW51bV9wZ19leHRlbnNpb25f ZXh0bmFtZXNwYWNlIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHNjaGVtYU9pZCk7CiAJdmFsdWVz W0FudW1fcGdfZXh0ZW5zaW9uX2V4dHJlbG9jYXRhYmxlIC0gMV0gPSBCb29sR2V0RGF0dW0ocmVs b2NhdGFibGUpOworCXZhbHVlc1tBbnVtX3BnX2V4dGVuc2lvbl9leHRvd25lZHNjaGVtYSAtIDFd ID0gQm9vbEdldERhdHVtKG93bmVkU2NoZW1hKTsKIAl2YWx1ZXNbQW51bV9wZ19leHRlbnNpb25f ZXh0dmVyc2lvbiAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShleHRWZXJzaW9uKTsKIAogCWlm IChleHRDb25maWcgPT0gUG9pbnRlckdldERhdHVtKE5VTEwpKQpAQCAtMTg4Miw2ICsxOTE1LDE3 IEBAIEluc2VydEV4dGVuc2lvblR1cGxlKGNvbnN0IGNoYXIgKmV4dE5hbWUsIE9pZCBleHRPd25l ciwKIAlyZWNvcmRfb2JqZWN0X2FkZHJlc3NfZGVwZW5kZW5jaWVzKCZteXNlbGYsIHJlZm9ianMs IERFUEVOREVOQ1lfTk9STUFMKTsKIAlmcmVlX29iamVjdF9hZGRyZXNzZXMocmVmb2Jqcyk7CiAK KwlpZiAob3duZWRTY2hlbWEpCisJeworCQlPYmplY3RBZGRyZXNzIHNjaGVtYUFkZHJlc3MgPSB7 CisJCQkuY2xhc3NJZCA9IE5hbWVzcGFjZVJlbGF0aW9uSWQsCisJCQkub2JqZWN0SWQgPSBzY2hl bWFPaWQsCisJCX07CisKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZzY2hlbWFBZGRyZXNzLCAmbXlz ZWxmLCBERVBFTkRFTkNZX0VYVEVOU0lPTik7CisJfQorCisKIAkvKiBQb3N0IGNyZWF0aW9uIGhv b2sgZm9yIG5ldyBleHRlbnNpb24gKi8KIAlJbnZva2VPYmplY3RQb3N0Q3JlYXRlSG9vayhFeHRl bnNpb25SZWxhdGlvbklkLCBleHRlbnNpb25PaWQsIDApOwogCkBAIC0yNzI5LDExICsyNzczLDEw IEBAIEFsdGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKmV4dGVuc2lvbk5hbWUsIGNv bnN0IGNoYXIgKm5ld3NjaGVtYSwgT2lkICpvCiAJSGVhcFR1cGxlCWRlcFR1cDsKIAlPYmplY3RB ZGRyZXNzZXMgKm9ianNNb3ZlZDsKIAlPYmplY3RBZGRyZXNzIGV4dEFkZHI7CisJYm9vbAkJb3du ZWRTY2hlbWE7CiAKIAlleHRlbnNpb25PaWQgPSBnZXRfZXh0ZW5zaW9uX29pZChleHRlbnNpb25O YW1lLCBmYWxzZSk7CiAKLQluc3BPaWQgPSBMb29rdXBDcmVhdGlvbk5hbWVzcGFjZShuZXdzY2hl bWEpOwotCiAJLyoKIAkgKiBQZXJtaXNzaW9uIGNoZWNrOiBtdXN0IG93biBleHRlbnNpb24uICBO b3RlIHRoYXQgd2UgZG9uJ3QgYm90aGVyIHRvCiAJICogY2hlY2sgb3duZXJzaGlwIG9mIHRoZSBp bmRpdmlkdWFsIG1lbWJlciBvYmplY3RzIC4uLgpAQCAtMjc0MiwyMiArMjc4NSw2IEBAIEFsdGVy RXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKmV4dGVuc2lvbk5hbWUsIGNvbnN0IGNoYXIg Km5ld3NjaGVtYSwgT2lkICpvCiAJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwg T0JKRUNUX0VYVEVOU0lPTiwKIAkJCQkJICAgZXh0ZW5zaW9uTmFtZSk7CiAKLQkvKiBQZXJtaXNz aW9uIGNoZWNrOiBtdXN0IGhhdmUgY3JlYXRpb24gcmlnaHRzIGluIHRhcmdldCBuYW1lc3BhY2Ug Ki8KLQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soTmFtZXNwYWNlUmVsYXRpb25JZCwgbnNw T2lkLCBHZXRVc2VySWQoKSwgQUNMX0NSRUFURSk7Ci0JaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVD S19PSykKLQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfU0NIRU1BLCBuZXdzY2hl bWEpOwotCi0JLyoKLQkgKiBJZiB0aGUgc2NoZW1hIGlzIGN1cnJlbnRseSBhIG1lbWJlciBvZiB0 aGUgZXh0ZW5zaW9uLCBkaXNhbGxvdyBtb3ZpbmcKLQkgKiB0aGUgZXh0ZW5zaW9uIGludG8gdGhl IHNjaGVtYS4gIFRoYXQgd291bGQgY3JlYXRlIGEgZGVwZW5kZW5jeSBsb29wLgotCSAqLwotCWlm IChnZXRFeHRlbnNpb25PZk9iamVjdChOYW1lc3BhY2VSZWxhdGlvbklkLCBuc3BPaWQpID09IGV4 dGVuc2lvbk9pZCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgbW92ZSBl eHRlbnNpb24gXCIlc1wiIGludG8gc2NoZW1hIFwiJXNcIiAiCi0JCQkJCQkiYmVjYXVzZSB0aGUg ZXh0ZW5zaW9uIGNvbnRhaW5zIHRoZSBzY2hlbWEiLAotCQkJCQkJZXh0ZW5zaW9uTmFtZSwgbmV3 c2NoZW1hKSkpOwotCiAJLyogTG9jYXRlIHRoZSBwZ19leHRlbnNpb24gdHVwbGUgKi8KIAlleHRS ZWwgPSB0YWJsZV9vcGVuKEV4dGVuc2lvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwog CkBAIC0yNzgxLDE0ICsyODA4LDM4IEBAIEFsdGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNo YXIgKmV4dGVuc2lvbk5hbWUsIGNvbnN0IGNoYXIgKm5ld3NjaGVtYSwgT2lkICpvCiAKIAlzeXN0 YWJsZV9lbmRzY2FuKGV4dFNjYW4pOwogCi0JLyoKLQkgKiBJZiB0aGUgZXh0ZW5zaW9uIGlzIGFs cmVhZHkgaW4gdGhlIHRhcmdldCBzY2hlbWEsIGp1c3Qgc2lsZW50bHkgZG8KLQkgKiBub3RoaW5n LgotCSAqLwotCWlmIChleHRGb3JtLT5leHRuYW1lc3BhY2UgPT0gbnNwT2lkKQorCW93bmVkU2No ZW1hID0gZXh0Rm9ybS0+ZXh0b3duZWRzY2hlbWE7CisKKwlpZiAoIW93bmVkU2NoZW1hKQogCXsK LQkJdGFibGVfY2xvc2UoZXh0UmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKLQkJcmV0dXJuIEludmFs aWRPYmplY3RBZGRyZXNzOworCQluc3BPaWQgPSBMb29rdXBDcmVhdGlvbk5hbWVzcGFjZShuZXdz Y2hlbWEpOworCisJCS8qIFBlcm1pc3Npb24gY2hlY2s6IG11c3QgaGF2ZSBjcmVhdGlvbiByaWdo dHMgaW4gdGFyZ2V0IG5hbWVzcGFjZSAqLworCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2so TmFtZXNwYWNlUmVsYXRpb25JZCwgbnNwT2lkLCBHZXRVc2VySWQoKSwgQUNMX0NSRUFURSk7CisJ CWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQlhY2xjaGVja19lcnJvcihhY2xyZXN1 bHQsIE9CSkVDVF9TQ0hFTUEsIG5ld3NjaGVtYSk7CisKKwkJLyoKKwkJICogSWYgdGhlIHNjaGVt YSBpcyBjdXJyZW50bHkgYSBtZW1iZXIgb2YgdGhlIGV4dGVuc2lvbiwgZGlzYWxsb3cKKwkJICog bW92aW5nIHRoZSBleHRlbnNpb24gaW50byB0aGUgc2NoZW1hLiAgVGhhdCB3b3VsZCBjcmVhdGUg YQorCQkgKiBkZXBlbmRlbmN5IGxvb3AuCisJCSAqLworCQlpZiAoZ2V0RXh0ZW5zaW9uT2ZPYmpl Y3QoTmFtZXNwYWNlUmVsYXRpb25JZCwgbnNwT2lkKSA9PSBleHRlbnNpb25PaWQpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IG1vdmUgZXh0ZW5zaW9uIFwiJXNcIiBp bnRvIHNjaGVtYSBcIiVzXCIgIgorCQkJCQkJCSJiZWNhdXNlIHRoZSBleHRlbnNpb24gY29udGFp bnMgdGhlIHNjaGVtYSIsCisJCQkJCQkJZXh0ZW5zaW9uTmFtZSwgbmV3c2NoZW1hKSkpOworCisJ CS8qCisJCSAqIElmIHRoZSBleHRlbnNpb24gaXMgYWxyZWFkeSBpbiB0aGUgdGFyZ2V0IHNjaGVt YSwganVzdCBzaWxlbnRseSBkbworCQkgKiBub3RoaW5nLgorCQkgKi8KKwkJaWYgKGV4dEZvcm0t PmV4dG5hbWVzcGFjZSA9PSBuc3BPaWQpCisJCXsKKwkJCXRhYmxlX2Nsb3NlKGV4dFJlbCwgUm93 RXhjbHVzaXZlTG9jayk7CisJCQlyZXR1cm4gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJCX0KIAl9 CiAKIAkvKiBDaGVjayBleHRlbnNpb24gaXMgc3VwcG9zZWQgdG8gYmUgcmVsb2NhdGFibGUgKi8K QEAgLTI4NjEsNiArMjkxMiwxMyBAQCBBbHRlckV4dGVuc2lvbk5hbWVzcGFjZShjb25zdCBjaGFy ICpleHRlbnNpb25OYW1lLCBjb25zdCBjaGFyICpuZXdzY2hlbWEsIE9pZCAqbwogCQkJfQogCQl9 CiAKKwkJLyoKKwkJICogV2UgZG9uJ3QgYWN0dWFsbHkgaGF2ZSB0byBtb3ZlIGFueSBvYmplY3Rz IGFueXRoaW5nIGZvciBvd25lZAorCQkgKiBzY2hlbWFzLCBiZWNhdXNlIHdlIHNpbXBseSByZW5h bWUgdGhlIHNjaGVtYS4KKwkJICovCisJCWlmIChvd25lZFNjaGVtYSkKKwkJCWNvbnRpbnVlOwor CiAJCS8qCiAJCSAqIE90aGVyd2lzZSwgaWdub3JlIG5vbi1tZW1iZXJzaGlwIGRlcGVuZGVuY2ll cy4gIChDdXJyZW50bHksIHRoZQogCQkgKiBvbmx5IG90aGVyIGNhc2Ugd2UgY291bGQgc2VlIGhl cmUgaXMgYSBub3JtYWwgZGVwZW5kZW5jeSBmcm9tCkBAIC0yOTA0LDE4ICsyOTYyLDI2IEBAIEFs dGVyRXh0ZW5zaW9uTmFtZXNwYWNlKGNvbnN0IGNoYXIgKmV4dGVuc2lvbk5hbWUsIGNvbnN0IGNo YXIgKm5ld3NjaGVtYSwgT2lkICpvCiAKIAlyZWxhdGlvbl9jbG9zZShkZXBSZWwsIEFjY2Vzc1No YXJlTG9jayk7CiAKLQkvKiBOb3cgYWRqdXN0IHBnX2V4dGVuc2lvbi5leHRuYW1lc3BhY2UgKi8K LQlleHRGb3JtLT5leHRuYW1lc3BhY2UgPSBuc3BPaWQ7CisJaWYgKG93bmVkU2NoZW1hKQorCXsK KwkJUmVuYW1lU2NoZW1hKGdldF9uYW1lc3BhY2VfbmFtZShvbGROc3BPaWQpLCBuZXdzY2hlbWEp OworCQl0YWJsZV9jbG9zZShleHRSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCX0KKwllbHNlCisJ eworCQkvKiBOb3cgYWRqdXN0IHBnX2V4dGVuc2lvbi5leHRuYW1lc3BhY2UgKi8KKwkJZXh0Rm9y bS0+ZXh0bmFtZXNwYWNlID0gbnNwT2lkOwogCi0JQ2F0YWxvZ1R1cGxlVXBkYXRlKGV4dFJlbCwg JmV4dFR1cC0+dF9zZWxmLCBleHRUdXApOworCQlDYXRhbG9nVHVwbGVVcGRhdGUoZXh0UmVsLCAm ZXh0VHVwLT50X3NlbGYsIGV4dFR1cCk7CiAKLQl0YWJsZV9jbG9zZShleHRSZWwsIFJvd0V4Y2x1 c2l2ZUxvY2spOworCQl0YWJsZV9jbG9zZShleHRSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0J LyogdXBkYXRlIGRlcGVuZGVuY3kgdG8gcG9pbnQgdG8gdGhlIG5ldyBzY2hlbWEgKi8KLQlpZiAo Y2hhbmdlRGVwZW5kZW5jeUZvcihFeHRlbnNpb25SZWxhdGlvbklkLCBleHRlbnNpb25PaWQsCi0J CQkJCQkJTmFtZXNwYWNlUmVsYXRpb25JZCwgb2xkTnNwT2lkLCBuc3BPaWQpICE9IDEpCi0JCWVs b2coRVJST1IsICJjb3VsZCBub3QgY2hhbmdlIHNjaGVtYSBkZXBlbmRlbmN5IGZvciBleHRlbnNp b24gJXMiLAotCQkJIE5hbWVTdHIoZXh0Rm9ybS0+ZXh0bmFtZSkpOworCQkvKiB1cGRhdGUgZGVw ZW5kZW5jeSB0byBwb2ludCB0byB0aGUgbmV3IHNjaGVtYSAqLworCQlpZiAoY2hhbmdlRGVwZW5k ZW5jeUZvcihFeHRlbnNpb25SZWxhdGlvbklkLCBleHRlbnNpb25PaWQsCisJCQkJCQkJCU5hbWVz cGFjZVJlbGF0aW9uSWQsIG9sZE5zcE9pZCwgbnNwT2lkKSAhPSAxKQorCQkJZWxvZyhFUlJPUiwg ImNvdWxkIG5vdCBjaGFuZ2Ugc2NoZW1hIGRlcGVuZGVuY3kgZm9yIGV4dGVuc2lvbiAlcyIsCisJ CQkJIE5hbWVTdHIoZXh0Rm9ybS0+ZXh0bmFtZSkpOworCX0KIAogCUludm9rZU9iamVjdFBvc3RB bHRlckhvb2soRXh0ZW5zaW9uUmVsYXRpb25JZCwgZXh0ZW5zaW9uT2lkLCAwKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCmluZGV4IGM1NGIwOGZlMTgwLi4w NTIwNWNmYjdmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVf c3VwcG9ydC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQu YwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3Jl bC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V4 dGVuc2lvbi5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYWNtZHMuaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vb3JpZ2luLmgiCkBAIC0xODUsMTIgKzE4NiwxNCBAQCBEYXR1bQogYmluYXJ5 X3VwZ3JhZGVfY3JlYXRlX2VtcHR5X2V4dGVuc2lvbihQR19GVU5DVElPTl9BUkdTKQogewogCXRl eHQJICAgKmV4dE5hbWU7Ci0JdGV4dAkgICAqc2NoZW1hTmFtZTsKKwljaGFyCSAgICpzY2hlbWFO YW1lOwogCWJvb2wJCXJlbG9jYXRhYmxlOworCWJvb2wJCW93bmVkc2NoZW1hOwogCXRleHQJICAg KmV4dFZlcnNpb247CiAJRGF0dW0JCWV4dENvbmZpZzsKIAlEYXR1bQkJZXh0Q29uZGl0aW9uOwog CUxpc3QJICAgKnJlcXVpcmVkRXh0ZW5zaW9uczsKKwlPaWQJCQlzY2hlbWFPaWQ7CiAKIAlDSEVD S19JU19CSU5BUllfVVBHUkFERTsKIApAQCAtMTk4LDI4ICsyMDEsMzAgQEAgYmluYXJ5X3VwZ3Jh ZGVfY3JlYXRlX2VtcHR5X2V4dGVuc2lvbihQR19GVU5DVElPTl9BUkdTKQogCWlmIChQR19BUkdJ U05VTEwoMCkgfHwKIAkJUEdfQVJHSVNOVUxMKDEpIHx8CiAJCVBHX0FSR0lTTlVMTCgyKSB8fAot CQlQR19BUkdJU05VTEwoMykpCisJCVBHX0FSR0lTTlVMTCgzKSB8fAorCQlQR19BUkdJU05VTEwo NCkpCiAJCWVsb2coRVJST1IsICJudWxsIGFyZ3VtZW50IHRvIGJpbmFyeV91cGdyYWRlX2NyZWF0 ZV9lbXB0eV9leHRlbnNpb24gaXMgbm90IGFsbG93ZWQiKTsKIAogCWV4dE5hbWUgPSBQR19HRVRB UkdfVEVYVF9QUCgwKTsKLQlzY2hlbWFOYW1lID0gUEdfR0VUQVJHX1RFWFRfUFAoMSk7CisJc2No ZW1hTmFtZSA9IHRleHRfdG9fY3N0cmluZyhQR19HRVRBUkdfVEVYVF9QUCgxKSk7CiAJcmVsb2Nh dGFibGUgPSBQR19HRVRBUkdfQk9PTCgyKTsKLQlleHRWZXJzaW9uID0gUEdfR0VUQVJHX1RFWFRf UFAoMyk7CisJb3duZWRzY2hlbWEgPSBQR19HRVRBUkdfQk9PTCgzKTsKKwlleHRWZXJzaW9uID0g UEdfR0VUQVJHX1RFWFRfUFAoNCk7CiAKLQlpZiAoUEdfQVJHSVNOVUxMKDQpKQorCWlmIChQR19B UkdJU05VTEwoNSkpCiAJCWV4dENvbmZpZyA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKIAllbHNl Ci0JCWV4dENvbmZpZyA9IFBHX0dFVEFSR19EQVRVTSg0KTsKKwkJZXh0Q29uZmlnID0gUEdfR0VU QVJHX0RBVFVNKDUpOwogCi0JaWYgKFBHX0FSR0lTTlVMTCg1KSkKKwlpZiAoUEdfQVJHSVNOVUxM KDYpKQogCQlleHRDb25kaXRpb24gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CiAJZWxzZQotCQll eHRDb25kaXRpb24gPSBQR19HRVRBUkdfREFUVU0oNSk7CisJCWV4dENvbmRpdGlvbiA9IFBHX0dF VEFSR19EQVRVTSg2KTsKIAogCXJlcXVpcmVkRXh0ZW5zaW9ucyA9IE5JTDsKLQlpZiAoIVBHX0FS R0lTTlVMTCg2KSkKKwlpZiAoIVBHX0FSR0lTTlVMTCg3KSkKIAl7Ci0JCUFycmF5VHlwZSAgKnRl eHRBcnJheSA9IFBHX0dFVEFSR19BUlJBWVRZUEVfUCg2KTsKKwkJQXJyYXlUeXBlICAqdGV4dEFy cmF5ID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDcpOwogCQlEYXR1bQkgICAqdGV4dERhdHVtczsK IAkJaW50CQkJbmRhdHVtczsKIAkJaW50CQkJaTsKQEAgLTIzNCwxMCArMjM5LDI4IEBAIGJpbmFy eV91cGdyYWRlX2NyZWF0ZV9lbXB0eV9leHRlbnNpb24oUEdfRlVOQ1RJT05fQVJHUykKIAkJfQog CX0KIAorCWlmIChvd25lZHNjaGVtYSkKKwl7CisJCUNyZWF0ZVNjaGVtYVN0bXQgKmNzc3RtdCA9 IG1ha2VOb2RlKENyZWF0ZVNjaGVtYVN0bXQpOworCisJCWNzc3RtdC0+c2NoZW1hbmFtZSA9IHNj aGVtYU5hbWU7CisJCWNzc3RtdC0+YXV0aHJvbGUgPSBOVUxMOwkvKiB3aWxsIGJlIGNyZWF0ZWQg YnkgY3VycmVudCB1c2VyICovCisJCWNzc3RtdC0+c2NoZW1hRWx0cyA9IE5JTDsKKwkJY3NzdG10 LT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CisJCXNjaGVtYU9pZCA9IENyZWF0ZVNjaGVtYUNvbW1h bmQoY3NzdG10LCAiKGdlbmVyYXRlZCBDUkVBVEUgU0NIRU1BIGNvbW1hbmQpIiwKKwkJCQkJCQkJ CQktMSwgLTEpOworCisJfQorCWVsc2UKKwl7CisJCXNjaGVtYU9pZCA9IGdldF9uYW1lc3BhY2Vf b2lkKHNjaGVtYU5hbWUsIGZhbHNlKTsKKwl9CisKIAlJbnNlcnRFeHRlbnNpb25UdXBsZSh0ZXh0 X3RvX2NzdHJpbmcoZXh0TmFtZSksCiAJCQkJCQkgR2V0VXNlcklkKCksCi0JCQkJCQkgZ2V0X25h bWVzcGFjZV9vaWQodGV4dF90b19jc3RyaW5nKHNjaGVtYU5hbWUpLCBmYWxzZSksCisJCQkJCQkg c2NoZW1hT2lkLAogCQkJCQkJIHJlbG9jYXRhYmxlLAorCQkJCQkJIG93bmVkc2NoZW1hLAogCQkJ CQkJIHRleHRfdG9fY3N0cmluZyhleHRWZXJzaW9uKSwKIAkJCQkJCSBleHRDb25maWcsCiAJCQkJ CQkgZXh0Q29uZGl0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMWI0N2MzODhjZWQuLjM5NWNjODUyODVj IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKQEAgLTE3NzYsNiArMTc3NiwxOSBAQCBjaGVja0V4dGVuc2lvbk1lbWJl cnNoaXAoRHVtcGFibGVPYmplY3QgKmRvYmosIEFyY2hpdmUgKmZvdXQpCiAJaWYgKGV4dCA9PSBO VUxMKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgdGhlICJvd25lZF9z Y2hlbWEiIG9mIHRoZSBleHRlbnNpb24sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0bworCSAqIGNyZWF0 ZSBpdCBtYW51YWxseSwgYmVjYXVzZSBpdCBnZXRzIGNyZWF0ZWQgdG9nZXRoZXIgd2l0aCB0aGUK KwkgKiBleHRlbnNpb24uCisJICovCisJaWYgKGRvYmotPm9ialR5cGUgPT0gRE9fTkFNRVNQQUNF ICYmCisJCWV4dC0+b3duZWRzY2hlbWEgJiYgc3RyY21wKGV4dC0+bmFtZXNwYWNlLCBkb2JqLT5u YW1lKSA9PSAwKQorCXsKKwkJTmFtZXNwYWNlSW5mbyAqbnNpbmZvID0gKE5hbWVzcGFjZUluZm8g KikgZG9iajsKKworCQluc2luZm8tPmNyZWF0ZSA9IGZhbHNlOworCX0KKwogCWRvYmotPmV4dF9t ZW1iZXIgPSB0cnVlOwogCiAJLyogUmVjb3JkIGRlcGVuZGVuY3kgc28gdGhhdCBnZXREZXBlbmRl bmNpZXMgbmVlZG4ndCBkZWFsIHdpdGggdGhhdCAqLwpAQCAtNTY0NSw3ICs1NjU4LDcgQEAgYmlu YXJ5X3VwZ3JhZGVfZXh0ZW5zaW9uX21lbWJlcihQUUV4cEJ1ZmZlciB1cGdyYWRlX2J1ZmZlciwK IAkJCQkJCQkJY29uc3QgY2hhciAqb2JqbmFtZSwKIAkJCQkJCQkJY29uc3QgY2hhciAqb2JqbmFt ZXNwYWNlKQogewotCUR1bXBhYmxlT2JqZWN0ICpleHRvYmogPSBOVUxMOworCUV4dGVuc2lvbklu Zm8gKmV4dCA9IE5VTEw7CiAJaW50CQkJaTsKIAogCWlmICghZG9iai0+ZXh0X21lbWJlcikKQEAg LTU2NTksMTkgKzU2NzIsMzMgQEAgYmluYXJ5X3VwZ3JhZGVfZXh0ZW5zaW9uX21lbWJlcihQUUV4 cEJ1ZmZlciB1cGdyYWRlX2J1ZmZlciwKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZG9iai0+bkRl cHM7IGkrKykKIAl7Ci0JCWV4dG9iaiA9IGZpbmRPYmplY3RCeUR1bXBJZChkb2JqLT5kZXBlbmRl bmNpZXNbaV0pOworCQlEdW1wYWJsZU9iamVjdCAqZXh0b2JqID0gZmluZE9iamVjdEJ5RHVtcElk KGRvYmotPmRlcGVuZGVuY2llc1tpXSk7CisKIAkJaWYgKGV4dG9iaiAmJiBleHRvYmotPm9ialR5 cGUgPT0gRE9fRVhURU5TSU9OKQorCQl7CisJCQlleHQgPSAoRXh0ZW5zaW9uSW5mbyAqKSBleHRv Ymo7CiAJCQlicmVhazsKLQkJZXh0b2JqID0gTlVMTDsKKwkJfQogCX0KLQlpZiAoZXh0b2JqID09 IE5VTEwpCisJaWYgKGV4dCA9PSBOVUxMKQogCQlwZ19mYXRhbCgiY291bGQgbm90IGZpbmQgcGFy ZW50IGV4dGVuc2lvbiBmb3IgJXMgJXMiLAogCQkJCSBvYmp0eXBlLCBvYmpuYW1lKTsKIAorCS8q CisJICogSWYgdGhlIG9iamVjdCBpcyB0aGUgIm93bmVkX3NjaGVtYSIgb2YgdGhlIGV4dGVuc2lv biwgd2UgZG9uJ3QgbmVlZCB0bworCSAqIGFkZCBpdCB0byB0aGUgZXh0ZW5zaW9uIGJlY2F1c2Ug aXQgd2FzIGFscmVhZHkgbWFkZSBhIG1lbWJlciBvZiB0aGUKKwkgKiBleHRlbnNpb24gd2hlbiB0 aGUgZXh0ZW5zaW9uIHdhcyBjcmVhdGVkLgorCSAqLworCWlmIChkb2JqLT5vYmpUeXBlID09IERP X05BTUVTUEFDRSAmJgorCQlleHQtPm93bmVkc2NoZW1hICYmIHN0cmNtcChleHQtPm5hbWVzcGFj ZSwgZG9iai0+bmFtZSkgPT0gMCkKKwl7CisJCXJldHVybjsKKwl9CisKIAlhcHBlbmRQUUV4cEJ1 ZmZlclN0cih1cGdyYWRlX2J1ZmZlciwKIAkJCQkJCSAiXG4tLSBGb3IgYmluYXJ5IHVwZ3JhZGUs IGhhbmRsZSBleHRlbnNpb24gbWVtYmVyc2hpcCB0aGUgaGFyZCB3YXlcbiIpOwogCWFwcGVuZFBR RXhwQnVmZmVyKHVwZ3JhZGVfYnVmZmVyLCAiQUxURVIgRVhURU5TSU9OICVzIEFERCAlcyAiLAot CQkJCQkgIGZtdElkKGV4dG9iai0+bmFtZSksCisJCQkJCSAgZm10SWQoZXh0LT5kb2JqLm5hbWUp LAogCQkJCQkgIG9ianR5cGUpOwogCWlmIChvYmpuYW1lc3BhY2UgJiYgKm9iam5hbWVzcGFjZSkK IAkJYXBwZW5kUFFFeHBCdWZmZXIodXBncmFkZV9idWZmZXIsICIlcy4iLCBmbXRJZChvYmpuYW1l c3BhY2UpKTsKQEAgLTU4MjgsNiArNTg1NSw3IEBAIGdldEV4dGVuc2lvbnMoQXJjaGl2ZSAqZm91 dCwgaW50ICpudW1FeHRlbnNpb25zKQogCWludAkJCWlfZXh0bmFtZTsKIAlpbnQJCQlpX25zcG5h bWU7CiAJaW50CQkJaV9leHRyZWxvY2F0YWJsZTsKKwlpbnQJCQlpX2V4dG93bmVkc2NoZW1hOwog CWludAkJCWlfZXh0dmVyc2lvbjsKIAlpbnQJCQlpX2V4dGNvbmZpZzsKIAlpbnQJCQlpX2V4dGNv bmRpdGlvbjsKQEAgLTU4MzYsNyArNTg2NCwxNCBAQCBnZXRFeHRlbnNpb25zKEFyY2hpdmUgKmZv dXQsIGludCAqbnVtRXh0ZW5zaW9ucykKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAi U0VMRUNUIHgudGFibGVvaWQsIHgub2lkLCAiCiAJCQkJCQkgInguZXh0bmFtZSwgbi5uc3BuYW1l LCB4LmV4dHJlbG9jYXRhYmxlLCB4LmV4dHZlcnNpb24sIHguZXh0Y29uZmlnLCB4LmV4dGNvbmRp dGlvbiAiCi0JCQkJCQkgIkZST00gcGdfZXh0ZW5zaW9uIHggIgorCQkpOworCisJaWYgKGZvdXQt PnJlbW90ZVZlcnNpb24gPj0gMTgwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwg IiwgeC5leHRvd25lZHNjaGVtYSAiKTsKKwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAiLCBmYWxzZSBBUyBleHRvd25lZHNjaGVtYSAiKTsKKworCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LCAiRlJPTSBwZ19leHRlbnNpb24geCAiCiAJCQkJCQkgIkpPSU4gcGdfbmFtZXNw YWNlIG4gT04gbi5vaWQgPSB4LmV4dG5hbWVzcGFjZSIpOwogCiAJcmVzID0gRXhlY3V0ZVNxbFF1 ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwpAQCAtNTg1Miw2ICs1ODg3 LDcgQEAgZ2V0RXh0ZW5zaW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bUV4dGVuc2lvbnMpCiAJ aV9leHRuYW1lID0gUFFmbnVtYmVyKHJlcywgImV4dG5hbWUiKTsKIAlpX25zcG5hbWUgPSBQUWZu dW1iZXIocmVzLCAibnNwbmFtZSIpOwogCWlfZXh0cmVsb2NhdGFibGUgPSBQUWZudW1iZXIocmVz LCAiZXh0cmVsb2NhdGFibGUiKTsKKwlpX2V4dG93bmVkc2NoZW1hID0gUFFmbnVtYmVyKHJlcywg ImV4dG93bmVkc2NoZW1hIik7CiAJaV9leHR2ZXJzaW9uID0gUFFmbnVtYmVyKHJlcywgImV4dHZl cnNpb24iKTsKIAlpX2V4dGNvbmZpZyA9IFBRZm51bWJlcihyZXMsICJleHRjb25maWciKTsKIAlp X2V4dGNvbmRpdGlvbiA9IFBRZm51bWJlcihyZXMsICJleHRjb25kaXRpb24iKTsKQEAgLTU4NjUs NiArNTkwMSw3IEBAIGdldEV4dGVuc2lvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1FeHRlbnNp b25zKQogCQlleHRpbmZvW2ldLmRvYmoubmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywg aSwgaV9leHRuYW1lKSk7CiAJCWV4dGluZm9baV0ubmFtZXNwYWNlID0gcGdfc3RyZHVwKFBRZ2V0 dmFsdWUocmVzLCBpLCBpX25zcG5hbWUpKTsKIAkJZXh0aW5mb1tpXS5yZWxvY2F0YWJsZSA9ICoo UFFnZXR2YWx1ZShyZXMsIGksIGlfZXh0cmVsb2NhdGFibGUpKSA9PSAndCc7CisJCWV4dGluZm9b aV0ub3duZWRzY2hlbWEgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2V4dG93bmVkc2NoZW1hKSkg PT0gJ3QnOwogCQlleHRpbmZvW2ldLmV4dHZlcnNpb24gPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShy ZXMsIGksIGlfZXh0dmVyc2lvbikpOwogCQlleHRpbmZvW2ldLmV4dGNvbmZpZyA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV9leHRjb25maWcpKTsKIAkJZXh0aW5mb1tpXS5leHRjb25k aXRpb24gPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfZXh0Y29uZGl0aW9uKSk7CkBA IC0xMDYxMyw5ICsxMDY1MCw5IEBAIGR1bXBOYW1lc3BhY2UoQXJjaGl2ZSAqZm91dCwgY29uc3Qg TmFtZXNwYWNlSW5mbyAqbnNwaW5mbykKIAl7CiAJCS8qIHNlZSBzZWxlY3REdW1wYWJsZU5hbWVz cGFjZSgpICovCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGRlbHEsCi0JCQkJCQkJICItLSAqbm90 KiBkcm9wcGluZyBzY2hlbWEsIHNpbmNlIGluaXRkYiBjcmVhdGVzIGl0XG4iKTsKKwkJCQkJCQkg Ii0tICpub3QqIGRyb3BwaW5nIHNjaGVtYSwgc2luY2UgaW5pdGRiIG9yIENSRUFURSBFWFRFTlNJ T04gY3JlYXRlcyBpdFxuIik7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsCi0JCQkJCQkJICIt LSAqbm90KiBjcmVhdGluZyBzY2hlbWEsIHNpbmNlIGluaXRkYiBjcmVhdGVzIGl0XG4iKTsKKwkJ CQkJCQkgIi0tICpub3QqIGNyZWF0aW5nIHNjaGVtYSwgc2luY2UgaW5pdGRiIG9yIENSRUFURSBF WFRFTlNJT04gY3JlYXRlcyBpdFxuIik7CiAJfQogCiAJaWYgKGRvcHQtPmJpbmFyeV91cGdyYWRl KQpAQCAtMTA3MjcsNiArMTA3NjQsNyBAQCBkdW1wRXh0ZW5zaW9uKEFyY2hpdmUgKmZvdXQsIGNv bnN0IEV4dGVuc2lvbkluZm8gKmV4dGluZm8pCiAJCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChxLCBl eHRpbmZvLT5uYW1lc3BhY2UsIGZvdXQpOwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiLCAi KTsKIAkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiVzLCAiLCBleHRpbmZvLT5yZWxvY2F0YWJsZSA/ ICJ0cnVlIiA6ICJmYWxzZSIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiJXMsICIsIGV4dGlu Zm8tPm93bmVkc2NoZW1hID8gInRydWUiIDogImZhbHNlIik7CiAJCWFwcGVuZFN0cmluZ0xpdGVy YWxBSChxLCBleHRpbmZvLT5leHR2ZXJzaW9uLCBmb3V0KTsKIAkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocSwgIiwgIik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDlmOTA3ZWQ1YWQ0Li4zNDllNTIxOTkyNSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oCkBAIC0xODEsNiArMTgxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2V4dGVuc2lv bkluZm8KIAlEdW1wYWJsZU9iamVjdCBkb2JqOwogCWNoYXIJICAgKm5hbWVzcGFjZTsJCS8qIHNj aGVtYSBjb250YWluaW5nIGV4dGVuc2lvbidzIG9iamVjdHMgKi8KIAlib29sCQlyZWxvY2F0YWJs ZTsKKwlib29sCQlvd25lZHNjaGVtYTsKIAljaGFyCSAgICpleHR2ZXJzaW9uOwogCWNoYXIJICAg KmV4dGNvbmZpZzsJCS8qIGluZm8gYWJvdXQgY29uZmlndXJhdGlvbiB0YWJsZXMgKi8KIAljaGFy CSAgICpleHRjb25kaXRpb247CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2V4 dGVuc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19leHRlbnNpb24uaAppbmRleCA2NzMx ODFiMzlhZS4uNmE1OTVmYWU1M2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf ZXh0ZW5zaW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19leHRlbnNpb24uaApAQCAt MzQsNiArMzQsNyBAQCBDQVRBTE9HKHBnX2V4dGVuc2lvbiwzMDc5LEV4dGVuc2lvblJlbGF0aW9u SWQpCiAJT2lkCQkJZXh0bmFtZXNwYWNlIEJLSV9MT09LVVAocGdfbmFtZXNwYWNlKTsJLyogbmFt ZXNwYWNlIG9mCiAJCQkJCQkJCQkJCQkJCSAqIGNvbnRhaW5lZCBvYmplY3RzICovCiAJYm9vbAkJ ZXh0cmVsb2NhdGFibGU7IC8qIGlmIHRydWUsIGFsbG93IEFMVEVSIEVYVEVOU0lPTiBTRVQgU0NI RU1BICovCisJYm9vbAkJZXh0b3duZWRzY2hlbWE7IC8qIGlmIHRydWUsIHNjaGVtYSBpcyBvd25l ZCBieSBleHRlbnNpb24gKi8KIAogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUt bGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogZXh0dmVyc2lvbiBtYXkgbmV2ZXIgYmUg bnVsbCwgYnV0IHRoZSBvdGhlcnMgY2FuIGJlLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5k ZXggNzdmNTRhNzllNmEuLjNlMjk0MzI3YTM5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAg LTExNTU4LDcgKzExNTU4LDcgQEAKIHsgb2lkID0+ICczNTkxJywgZGVzY3IgPT4gJ2ZvciB1c2Ug YnkgcGdfdXBncmFkZScsCiAgIHByb25hbWUgPT4gJ2JpbmFyeV91cGdyYWRlX2NyZWF0ZV9lbXB0 eV9leHRlbnNpb24nLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3ZvbGF0aWxlID0+ICd2Jywg cHJvcGFyYWxsZWwgPT4gJ3UnLCBwcm9yZXR0eXBlID0+ICd2b2lkJywKLSAgcHJvYXJndHlwZXMg PT4gJ3RleHQgdGV4dCBib29sIHRleHQgX29pZCBfdGV4dCBfdGV4dCcsCisgIHByb2FyZ3R5cGVz ID0+ICd0ZXh0IHRleHQgYm9vbCBib29sIHRleHQgX29pZCBfdGV4dCBfdGV4dCcsCiAgIHByb3Ny YyA9PiAnYmluYXJ5X3VwZ3JhZGVfY3JlYXRlX2VtcHR5X2V4dGVuc2lvbicgfSwKIHsgb2lkID0+ ICc0MDgzJywgZGVzY3IgPT4gJ2ZvciB1c2UgYnkgcGdfdXBncmFkZScsCiAgIHByb25hbWUgPT4g J2JpbmFyeV91cGdyYWRlX3NldF9yZWNvcmRfaW5pdF9wcml2cycsIHByb3ZvbGF0aWxlID0+ICd2 JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4dGVuc2lvbi5oIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXh0ZW5zaW9uLmgKaW5kZXggYzZmM2Y4NjdlYjcuLjhlN2ZhNTc0MDMy IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHRlbnNpb24uaApAQCAtMzYsNyArMzYsOSBAQCBleHRlcm4gT2Jq ZWN0QWRkcmVzcyBDcmVhdGVFeHRlbnNpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVFeHRl bnNpb25TdG10ICpzdAogZXh0ZXJuIHZvaWQgUmVtb3ZlRXh0ZW5zaW9uQnlJZChPaWQgZXh0SWQp OwogCiBleHRlcm4gT2JqZWN0QWRkcmVzcyBJbnNlcnRFeHRlbnNpb25UdXBsZShjb25zdCBjaGFy ICpleHROYW1lLCBPaWQgZXh0T3duZXIsCi0JCQkJCQkJCQkJICBPaWQgc2NoZW1hT2lkLCBib29s IHJlbG9jYXRhYmxlLCBjb25zdCBjaGFyICpleHRWZXJzaW9uLAorCQkJCQkJCQkJCSAgT2lkIHNj aGVtYU9pZCwgYm9vbCByZWxvY2F0YWJsZSwKKwkJCQkJCQkJCQkgIGJvb2wgb3duZWRTY2hlbWEs CisJCQkJCQkJCQkJICBjb25zdCBjaGFyICpleHRWZXJzaW9uLAogCQkJCQkJCQkJCSAgRGF0dW0g ZXh0Q29uZmlnLCBEYXR1bSBleHRDb25kaXRpb24sCiAJCQkJCQkJCQkJICBMaXN0ICpyZXF1aXJl ZEV4dGVuc2lvbnMpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5z aW9ucy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL01ha2VmaWxl CmluZGV4IDA1MjcyZTZhNDBiLi4yOGYyMDI5MDE5MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2V4dGVuc2lvbnMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2V4dGVuc2lvbnMvTWFrZWZpbGUKQEAgLTksNyArOSw4IEBAIEVYVEVOU0lPTiA9IHRlc3RfZXh0 MSB0ZXN0X2V4dDIgdGVzdF9leHQzIHRlc3RfZXh0NCB0ZXN0X2V4dDUgdGVzdF9leHQ2IFwKICAg ICAgICAgICAgIHRlc3RfZXh0X2V4dHNjaGVtYSBcCiAgICAgICAgICAgICB0ZXN0X2V4dF9ldnR0 cmlnIFwKICAgICAgICAgICAgIHRlc3RfZXh0X3NldF9zY2hlbWEgXAotICAgICAgICAgICAgdGVz dF9leHRfcmVxX3NjaGVtYTEgdGVzdF9leHRfcmVxX3NjaGVtYTIgdGVzdF9leHRfcmVxX3NjaGVt YTMKKyAgICAgICAgICAgIHRlc3RfZXh0X3JlcV9zY2hlbWExIHRlc3RfZXh0X3JlcV9zY2hlbWEy IHRlc3RfZXh0X3JlcV9zY2hlbWEzIFwKKyAgICAgICAgICAgIHRlc3RfZXh0X293bmVkX3NjaGVt YSB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUKIAogREFUQSA9IHRlc3RfZXh0MS0t MS4wLnNxbCB0ZXN0X2V4dDItLTEuMC5zcWwgdGVzdF9leHQzLS0xLjAuc3FsIFwKICAgICAgICB0 ZXN0X2V4dDQtLTEuMC5zcWwgdGVzdF9leHQ1LS0xLjAuc3FsIHRlc3RfZXh0Ni0tMS4wLnNxbCBc CkBAIC0yMyw3ICsyNCw5IEBAIERBVEEgPSB0ZXN0X2V4dDEtLTEuMC5zcWwgdGVzdF9leHQyLS0x LjAuc3FsIHRlc3RfZXh0My0tMS4wLnNxbCBcCiAgICAgICAgdGVzdF9leHRfc2V0X3NjaGVtYS0t MS4wLnNxbCBcCiAgICAgICAgdGVzdF9leHRfcmVxX3NjaGVtYTEtLTEuMC5zcWwgXAogICAgICAg IHRlc3RfZXh0X3JlcV9zY2hlbWEyLS0xLjAuc3FsIFwKLSAgICAgICB0ZXN0X2V4dF9yZXFfc2No ZW1hMy0tMS4wLnNxbAorICAgICAgIHRlc3RfZXh0X3JlcV9zY2hlbWEzLS0xLjAuc3FsIFwKKyAg ICAgICB0ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwgXAorICAgICAgIHRlc3RfZXh0X293 bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbAogCiBSRUdSRVNTID0gdGVzdF9leHRlbnNp b25zIHRlc3RfZXh0ZGVwZW5kCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpb25zL2V4cGVjdGVkL3Rlc3RfZXh0ZW5zaW9ucy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0X2V4dGVuc2lvbnMub3V0CmluZGV4IGYzNTdj YzIxYWFhLi5jMGEyYjdiMzE1ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4 dGVuc2lvbnMvZXhwZWN0ZWQvdGVzdF9leHRlbnNpb25zLm91dAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0X2V4dGVuc2lvbnMub3V0CkBAIC02MjYs MyArNjI2LDUzIEBAIFNFTEVDVCB0ZXN0X3NfZGVwLmRlcF9yZXEyKCk7CiAKIERST1AgRVhURU5T SU9OIHRlc3RfZXh0X3JlcV9zY2hlbWExIENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVz IHRvIGV4dGVuc2lvbiB0ZXN0X2V4dF9yZXFfc2NoZW1hMgorLS0KKy0tIFRlc3Qgb3duZWQgc2No ZW1hIGV4dGVuc2lvbnMKKy0tCitDUkVBVEUgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTsK Ky0tIEZhaWxzIGZvciBhbiBhbHJlYWR5IGV4aXN0aW5nIHNjaGVtYSB0byBiZSBwcm92aWRlZAor Q1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEgU0NIRU1BIHRlc3RfZXh0X293 bmVkX3NjaGVtYTsKK0VSUk9SOiAgc2NoZW1hICJ0ZXN0X2V4dF9vd25lZF9zY2hlbWEiIGFscmVh ZHkgZXhpc3RzCistLSBGYWlscyBiZWNhdXNlIGEgZGlmZmVyZW50IHNjaGVtYSBpcyBzZXQgaW4g Y29udHJvbCBmaWxlCitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYSBTQ0hF TUEgdGVzdF9zY2hlbWE7CitFUlJPUjogIGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1h IiBtdXN0IGJlIGluc3RhbGxlZCBpbiBzY2hlbWEgInRlc3RfZXh0X293bmVkX3NjaGVtYSIKK0RS T1AgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9l eHRfb3duZWRfc2NoZW1hOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CitPYmplY3RzIGlu IGV4dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hIgorICAgICAgICAgICBPYmplY3QgZGVz Y3JpcHRpb24gICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgZnVuY3Rpb24gdGVzdF9leHRfb3duZWRfc2NoZW1hLm93bmVkMSgpCisgc2NoZW1h IHRlc3RfZXh0X293bmVkX3NjaGVtYQorKDIgcm93cykKKworRFJPUCBFWFRFTlNJT04gdGVzdF9l eHRfb3duZWRfc2NoZW1hOworQ1JFQVRFIFNDSEVNQSBhbHJlYWR5X2V4aXN0aW5nOworLS0gRmFp bHMgZm9yIGFuIGFscmVhZHkgZXhpc3Rpbmcgc2NoZW1hIHRvIGJlIHByb3ZpZGVkCitDUkVBVEUg RVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSBTQ0hFTUEgYWxyZWFk eV9leGlzdGluZzsKK0VSUk9SOiAgc2NoZW1hICJhbHJlYWR5X2V4aXN0aW5nIiBhbHJlYWR5IGV4 aXN0cworLS0gRmFpbHMgYmVjYXVzZSBubyBzY2hlbWEgaXMgc2V0IGluIGNvbnRyb2wgZmlsZQor Q1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGU7CitFUlJP UjogIG5vIHNjaGVtYSBoYXMgYmVlbiBzZWxlY3RlZCB0byBjcmVhdGUgaW4KK0NSRUFURSBFWFRF TlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIFNDSEVNQSB0ZXN0X3NjaGVt YTsKK1xkeCsgdGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlCitPYmplY3RzIGluIGV4 dGVuc2lvbiAidGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIgorICAgICAgT2JqZWN0 IGRlc2NyaXB0aW9uICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGZ1 bmN0aW9uIHRlc3Rfc2NoZW1hLm93bmVkMigpCisgc2NoZW1hIHRlc3Rfc2NoZW1hCisoMiByb3dz KQorCistLSBGYWlscyBiZWNhdXNlIHNjaGVtYSBhbHJlYWR5IGV4aXN0cworQUxURVIgRVhURU5T SU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZSBTRVQgU0NIRU1BIGFscmVhZHlf ZXhpc3Rpbmc7CitFUlJPUjogIHNjaGVtYSAiYWxyZWFkeV9leGlzdGluZyIgYWxyZWFkeSBleGlz dHMKK0FMVEVSIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUgU0VU IFNDSEVNQSBzb21lX290aGVyX25hbWU7CitcZHgrIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxv Y2F0YWJsZQorT2JqZWN0cyBpbiBleHRlbnNpb24gInRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxv Y2F0YWJsZSIKKyAgICAgICAgT2JqZWN0IGRlc2NyaXB0aW9uICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGZ1bmN0aW9uIHNvbWVfb3RoZXJfbmFtZS5vd25l ZDIoKQorIHNjaGVtYSBzb21lX290aGVyX25hbWUKKygyIHJvd3MpCisKK0RST1AgRVhURU5TSU9O IHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2V4dGVuc2lvbnMvbWVzb24uYnVpbGQKaW5kZXggYzVmMzQyNGRhNTEuLjUyZTg4NDE0ODBi IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWls ZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9tZXNvbi5idWlsZApAQCAt NDIsNiArNDIsMTAgQEAgdGVzdF9pbnN0YWxsX2RhdGEgKz0gZmlsZXMoCiAgICd0ZXN0X2V4dF9y ZXFfc2NoZW1hMy5jb250cm9sJywKICAgJ3Rlc3RfZXh0X3NldF9zY2hlbWEtLTEuMC5zcWwnLAog ICAndGVzdF9leHRfc2V0X3NjaGVtYS5jb250cm9sJywKKyAgJ3Rlc3RfZXh0X293bmVkX3NjaGVt YS0tMS4wLnNxbCcsCisgICd0ZXN0X2V4dF9vd25lZF9zY2hlbWEuY29udHJvbCcsCisgICd0ZXN0 X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUtLTEuMC5zcWwnLAorICAndGVzdF9leHRfb3du ZWRfc2NoZW1hX3JlbG9jYXRhYmxlLmNvbnRyb2wnLAogKQogCiB0ZXN0cyArPSB7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRlbnNpb25z LnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3NxbC90ZXN0X2V4dGVuc2lv bnMuc3FsCmluZGV4IDY0MmM4MmZmNWQzLi4xMzY5NjdkYjM5NSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZW5zaW9ucy5zcWwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZW5zaW9ucy5zcWwK QEAgLTI5OSwzICsyOTksMzAgQEAgQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X3JlcV9zY2hlbWEx IFNFVCBTQ0hFTUEgdGVzdF9zX2RlcDI7ICAtLSBub3cgb2sKIFNFTEVDVCB0ZXN0X3NfZGVwMi5k ZXBfcmVxMSgpOwogU0VMRUNUIHRlc3Rfc19kZXAuZGVwX3JlcTIoKTsKIERST1AgRVhURU5TSU9O IHRlc3RfZXh0X3JlcV9zY2hlbWExIENBU0NBREU7CisKKy0tCistLSBUZXN0IG93bmVkIHNjaGVt YSBleHRlbnNpb25zCistLQorCitDUkVBVEUgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTsK Ky0tIEZhaWxzIGZvciBhbiBhbHJlYWR5IGV4aXN0aW5nIHNjaGVtYSB0byBiZSBwcm92aWRlZAor Q1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWEgU0NIRU1BIHRlc3RfZXh0X293 bmVkX3NjaGVtYTsKKy0tIEZhaWxzIGJlY2F1c2UgYSBkaWZmZXJlbnQgc2NoZW1hIGlzIHNldCBp biBjb250cm9sIGZpbGUKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hIFND SEVNQSB0ZXN0X3NjaGVtYTsKK0RST1AgU0NIRU1BIHRlc3RfZXh0X293bmVkX3NjaGVtYTsKK0NS RUFURSBFWFRFTlNJT04gdGVzdF9leHRfb3duZWRfc2NoZW1hOworXGR4KyB0ZXN0X2V4dF9vd25l ZF9zY2hlbWE7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25lZF9zY2hlbWE7CisKK0NSRUFU RSBTQ0hFTUEgYWxyZWFkeV9leGlzdGluZzsKKy0tIEZhaWxzIGZvciBhbiBhbHJlYWR5IGV4aXN0 aW5nIHNjaGVtYSB0byBiZSBwcm92aWRlZAorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dF9vd25l ZF9zY2hlbWFfcmVsb2NhdGFibGUgU0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7CistLSBGYWlscyBi ZWNhdXNlIG5vIHNjaGVtYSBpcyBzZXQgaW4gY29udHJvbCBmaWxlCitDUkVBVEUgRVhURU5TSU9O IHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZTsKK0NSRUFURSBFWFRFTlNJT04gdGVz dF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIFNDSEVNQSB0ZXN0X3NjaGVtYTsKK1xkeCsg dGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlCistLSBGYWlscyBiZWNhdXNlIHNjaGVt YSBhbHJlYWR5IGV4aXN0cworQUxURVIgRVhURU5TSU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9y ZWxvY2F0YWJsZSBTRVQgU0NIRU1BIGFscmVhZHlfZXhpc3Rpbmc7CitBTFRFUiBFWFRFTlNJT04g dGVzdF9leHRfb3duZWRfc2NoZW1hX3JlbG9jYXRhYmxlIFNFVCBTQ0hFTUEgc29tZV9vdGhlcl9u YW1lOworXGR4KyB0ZXN0X2V4dF9vd25lZF9zY2hlbWFfcmVsb2NhdGFibGUKK0RST1AgRVhURU5T SU9OIHRlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYS0tMS4wLnNx bCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVt YS0tMS4wLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjcyYWI4 ZTYwN2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9u cy90ZXN0X2V4dF9vd25lZF9zY2hlbWEtLTEuMC5zcWwKQEAgLTAsMCArMSwyIEBACitDUkVBVEUg RlVOQ1RJT04gb3duZWQxKCkgUkVUVVJOUyB0ZXh0CitMQU5HVUFHRSBTUUwgQVMgJCQgU0VMRUNU IDEgJCQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0 X2V4dF9vd25lZF9zY2hlbWEuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYS5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi41MzFjMzhkYWVmZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYS5jb250cm9sCkBA IC0wLDAgKzEsNSBAQAorY29tbWVudCA9ICdUZXN0IGV4dGVuc2lvbiB3aXRoIGFuIG93bmVkIHNj aGVtYScKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCityZWxvY2F0YWJsZSA9IGZhbHNlCitzY2hl bWEgPSB0ZXN0X2V4dF9vd25lZF9zY2hlbWEKK293bmVkX3NjaGVtYSA9IHRydWUKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVt YV9yZWxvY2F0YWJsZS0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25z L3Rlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS0tMS4wLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmZjY2FmNGFmODIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9zY2hlbWFf cmVsb2NhdGFibGUtLTEuMC5zcWwKQEAgLTAsMCArMSwyIEBACitDUkVBVEUgRlVOQ1RJT04gb3du ZWQyKCkgUkVUVVJOUyB0ZXh0CitMQU5HVUFHRSBTUUwgQVMgJCQgU0VMRUNUIDEgJCQ7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90ZXN0X2V4dF9vd25lZF9z Y2hlbWFfcmVsb2NhdGFibGUuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNp b25zL3Rlc3RfZXh0X293bmVkX3NjaGVtYV9yZWxvY2F0YWJsZS5jb250cm9sCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zY2RhMWUxMjM0MQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3Rlc3RfZXh0X293bmVkX3NjaGVt YV9yZWxvY2F0YWJsZS5jb250cm9sCkBAIC0wLDAgKzEsNCBAQAorY29tbWVudCA9ICdUZXN0IGV4 dGVuc2lvbiB3aXRoIGFuIG93bmVkIHNjaGVtYScKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCity ZWxvY2F0YWJsZSA9IHRydWUKK293bmVkX3NjaGVtYSA9IHRydWUKCmJhc2UtY29tbWl0OiAyNTlh MGE5OWZlM2Q0NWRjZjYyNDc4OGMxNzI0ZDk5ODlmMzM4MmRjCi0tIAoyLjM0LjEKCg== --000000000000d52b260623ad0998--