Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q2gl2-0004Mq-LN for pgsql-hackers@arkaria.postgresql.org; Fri, 26 May 2023 23:22:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q2gl0-0000ii-Fd for pgsql-hackers@arkaria.postgresql.org; Fri, 26 May 2023 23:22:02 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q2gkz-0000iY-Oy for pgsql-hackers@lists.postgresql.org; Fri, 26 May 2023 23:22:02 +0000 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1q2gkr-0024cZ-Vg for pgsql-hackers@postgresql.org; Fri, 26 May 2023 23:22:00 +0000 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-2537a79b9acso1040336a91.3 for ; Fri, 26 May 2023 16:21:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20221208.gappssmtp.com; s=20221208; t=1685143312; x=1687735312; h=mime-version:user-agent:date:cc:to:from:subject:message-id:from:to :cc:subject:date:message-id:reply-to; bh=W84dL3x5EYwjYFZgbIu0ErGioR54+Jpzpop5hnZRluA=; b=DO7cKLzt5n+ueQWtvXSvgLMbar3SqZRMuiiD5DCdT/VVmqn3tb9sI9HTR8ZHHTBc1t Asn/sdYNA6dvM8LrpeuUKPpz+ZalDq2FqpbvZ7i/4+vsxE5xAtMlmx0ZGp1sW+iGDgZF l6Pp1Emxb4KMHjPNVVN+VEpm+QfBVW56YPK0nrSnNp5z9MpOdnhZ3W6XiCy5f6SA1QIy Q7gQnV1SCe5e9l5d5eNnQLhPHdsf6S+6Qk/M79KgPLg2JgLsqSCWsgmqHr4iaorUfmfI fO/2frtXAi2PPeAxmHO9vFGF+XqwFXO54GvS7NdAETywK7gb/HvXrBIDQZdnT7wyS507 anew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685143312; x=1687735312; h=mime-version:user-agent:date:cc:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=W84dL3x5EYwjYFZgbIu0ErGioR54+Jpzpop5hnZRluA=; b=mHJ//Uqcbz7fWkVqw2eyklWU3mTMn0A6E83+4bR2B6TtOiWHHYEEMHBcUAOt41/NDW S72UpjNh0Cu/UUoFrM5oeabFE8f8a2Uj8qlanAGX/KpFLlHSQGcr9wsITvrxZw2/N6LX I33dTYoe2PKOMTeG3U8SM/QblOx2qhtMJQCdl6/xw/sjdzrNCV1DDgNXxjThV/LfTvgo 6nox8K/zxaL4E11q5Yu242exjIfXWGasosqXDvaxFpL7QAiUbrI92UtSkpYO/Z6/1dto PjR3e93O54JaP5oJAcH6C80HQSwqJnrd9Osp+TPB0MUxf1x3FTimR7V90l0rRjz9hEf6 rhWA== X-Gm-Message-State: AC+VfDw0FJ8veMuCzU77GegH41CVxvS2eZvUIhNSbk6Qu5us1mE7K9f2 B5ki4YBSo0ziqd959pUBwvXkUVEmoyVRBxGsr5sJdw== X-Google-Smtp-Source: ACHHUZ5BcoAx2ttKOHGBy9ilhbTUq0CVEsn6tleihucOoh4UnbtersoDXxu0rUIxBE1NvZKyEmuw2w== X-Received: by 2002:a17:90a:4145:b0:255:d1aa:2fac with SMTP id m5-20020a17090a414500b00255d1aa2facmr4672726pjg.28.1685143312161; Fri, 26 May 2023 16:21:52 -0700 (PDT) Received: from jeff-laptop.lan (c-73-170-46-202.hsd1.ca.comcast.net. [73.170.46.202]) by smtp.gmail.com with ESMTPSA id q2-20020a17090ad38200b0025063e893c9sm1650757pju.55.2023.05.26.16.21.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 May 2023 16:21:51 -0700 (PDT) Message-ID: Subject: Fix search_path for all maintenance commands From: Jeff Davis To: pgsql-hackers@postgresql.org Cc: Nathan Bossart Date: Fri, 26 May 2023 16:21:50 -0700 Content-Type: multipart/mixed; boundary="=-ACNF2J5/oZdMutqVMJri" User-Agent: Evolution 3.44.4-0ubuntu1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-ACNF2J5/oZdMutqVMJri Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Maintenance commands (ANALYZE, CLUSTER, REFRESH MATERIALIZED VIEW, REINDEX, and VACUUM) currently run as the table owner, and as a SECURITY_RESTRICTED_OPERATION. I propose that we also fix the search_path to "pg_catalog, pg_temp" when running maintenance commands, for two reasons: 1. Make the behavior of maintenance commands more consistent because they'd always have the same search_path. 2. Now that we have the MAINTAIN privilege in 16, privileged non- superusers can execute maintenance commands on other users' tables. That raises the possibility that a user with MAINTAIN privilege may be able to use search_path tricks to escalate privileges to the table owner. The MAINTAIN privilege is only given to highly-privileged users, but there's still some risk. For this reason I also propose that it goes in v16. There's one interesting part: in the code path for creating a materialized view, ExecCreateTableAs() has this comment: /* =20 * For materialized views, lock down security-restricted operations and * arrange to make GUC variable changes local to this command. This is * not necessary for security, but this keeps the behavior similar to=20 * REFRESH MATERIALIZED VIEW. Otherwise, one could create a materialized =20 * view not possible to refresh. =20 */ My patch doesn't address this ExecCreateTableAs() check.=C2=A0To do so, we would need to set the search path after DefineRelation(), otherwise it will try to create the object in pg_catalog. But DefineRelation() is happening at execution time, well after we entered the SECURITY_RESTRICTED_OPERATION, and it doesn't seem good to separate the SECURITY_RESTRICTED_OPERATION from setting search_path. This ExecCreateTableAs() check doesn't seem terribly important, so I don't think it's necessary to improve it as a part of this patch (it won't be perfect anyway: functions can behave inconsistently for all kinds of reasons). But I'm open to suggestion if someone knows a good way to do it. --=20 Jeff Davis PostgreSQL Contributor Team - AWS --=-ACNF2J5/oZdMutqVMJri Content-Disposition: attachment; filename*0=0001-Fix-search_path-to-a-safe-value-during-maintenance-o.pat; filename*1=ch Content-Type: text/x-patch; name="0001-Fix-search_path-to-a-safe-value-during-maintenance-o.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA1YzZkNzA3YTg4Yzg4NzY0MWQ1NTFlZDlhNjk4M2M3NGQ2YTgyYTdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDE4IEFwciAyMDIzIDEwOjQ1OjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gRml4IHNlYXJj aF9wYXRoIHRvIGEgc2FmZSB2YWx1ZSBkdXJpbmcgbWFpbnRlbmFuY2UKIG9wZXJhdGlvbnMuCgpX aGlsZSBleGVjdXRpbmcgbWFpbnRlbmFuY2Ugb3BlcmF0aW9ucyAoQU5BTFlaRSwgQ0xVU1RFUiwg UkVGUkVTSApNQVRFUklBTElaRUQgVklFVywgUkVJTkRFWCwgb3IgVkFDVVVNKSwgc2V0IHNlYXJj aF9wYXRoIHRvCidwZ19jYXRhbG9nLCBwZ190ZW1wJyB0byBwcmV2ZW50IGluY29uc2lzdGVudCBi ZWhhdmlvci4KCkZ1bmN0aW9ucyB0aGF0IGFyZSB1c2VkIGZvciBmdW5jdGlvbmFsIGluZGV4ZXMs IGluIGluZGV4IGV4cHJlc3Npb25zLApvciBpbiBtYXRlcmlhbGl6ZWQgdmlld3MgYW5kIGRlcGVu ZCBvbiBhIGRpZmZlcmVudCBzZWFyY2ggcGF0aCBtdXN0IGJlCmRlY2xhcmVkIHdpdGggQ1JFQVRF IEZVTkNUSU9OIC4uLiBTRVQgc2VhcmNoX3BhdGg9Jy4uLicuCgpUaGlzIGNoYW5nZSBhZGRyZXNz ZXMgYSBzbWFsbCBzZWN1cml0eSByaXNrIGludHJvZHVjZWQgaW4gY29tbWl0CjYwNjg0ZGQ4MzQs IHdoZXJlIGEgcm9sZSB3aXRoIE1BSU5UQUlOIHByaXZpbGVnZXMgb24gYSB0YWJsZSBtYXkgYmUK YWJsZSB0byBlc2NhbGF0ZSBwcml2aWxlZ2VzIHRvIHRoZSB0YWJsZSBvd25lci4gVGhhdCBjb21t aXQgaXMgbm90IHlldApwYXJ0IG9mIGFueSByZWxlYXNlLCBzbyBubyBuZWVkIHRvIGJhY2twYXRj aC4KLS0tCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICA4ICsrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXpl LmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Ns dXN0ZXIuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvbWF0dmlldy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICsrCiBzcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKysK IHNyYy9iaW4vc2NyaXB0cy90LzEwMF92YWN1dW1kYi5wbCAgICAgICAgICAgICAgICAgICAgfCAg NCAtLS0tCiBzcmMvaW5jbHVkZS91dGlscy9ndWMuaCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDYgKysrKysrCiAuLi4vdGVzdF9vYXRfaG9va3MvZXhwZWN0ZWQvdGVzdF9vYXRfaG9v a3Mub3V0ICAgICAgIHwgIDQgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxl Z2VzLm91dCAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC92YWN1dW0ub3V0ICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9wcml2aWxlZ2VzLnNxbCAgICAgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bS5zcWwgICAgICAgICAgICAgICAgICAgICAgfCAgMiAr LQogMTUgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1j aGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5kZXggNjk3OWFmZjcyNy4uMmI1YzhhMzAwYiAxMDA2NDQK LS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYworKysgYi9jb250cmliL2FtY2hl Y2svdmVyaWZ5X25idHJlZS5jCkBAIC0yODIsNiArMjgyLDggQEAgYnRfaW5kZXhfY2hlY2tfaW50 ZXJuYWwoT2lkIGluZHJlbGlkLCBib29sIHBhcmVudGNoZWNrLCBib29sIGhlYXBhbGxpbmRleGVk LAogCQlTZXRVc2VySWRBbmRTZWNDb250ZXh0KGhlYXByZWwtPnJkX3JlbC0+cmVsb3duZXIsCiAJ CQkJCQkJICAgc2F2ZV9zZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JFU1RSSUNURURfT1BFUkFUSU9O KTsKIAkJc2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwkJU2V0Q29uZmlnT3B0 aW9uKCJzZWFyY2hfcGF0aCIsIEdVQ19TQUZFX1NFQVJDSF9QQVRILCBQR0NfVVNFUlNFVCwKKwkJ CQkJCVBHQ19TX1NFU1NJT04pOwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCmlu ZGV4IDNjNmE5NTZlYWEuLjExZTc4Y2I2MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTEw NjYsNiArMTA2Niw4IEBAIGJyaW5fc3VtbWFyaXplX3JhbmdlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CVNldFVzZXJJZEFuZFNlY0NvbnRleHQoaGVhcFJlbC0+cmRfcmVsLT5yZWxvd25lciwKIAkJCQkJ CQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOwog CQlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCQlTZXRDb25maWdPcHRpb24o InNlYXJjaF9wYXRoIiwgR1VDX1NBRkVfU0VBUkNIX1BBVEgsIFBHQ19VU0VSU0VULAorCQkJCQkJ UEdDX1NfU0VTU0lPTik7CiAJfQogCWVsc2UKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggMzUyZTQz ZDBlNi4uZTgzMzcwNDFhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMTQ3NSw2ICsxNDc1LDggQEAg aW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAlTZXRVc2VySWRB bmRTZWNDb250ZXh0KGhlYXBSZWwtPnJkX3JlbC0+cmVsb3duZXIsCiAJCQkJCQkgICBzYXZlX3Nl Y19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOwogCXNhdmVfbmVzdGxl dmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJU2V0Q29uZmlnT3B0aW9uKCJzZWFyY2hfcGF0aCIs IEdVQ19TQUZFX1NFQVJDSF9QQVRILCBQR0NfVVNFUlNFVCwKKwkJCQkJUEdDX1NfU0VTU0lPTik7 CiAKIAlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihpbmRleFJlbGF0aW9uSWQsIFJvd0V4Y2x1 c2l2ZUxvY2spOwogCkBAIC0zMDA2LDYgKzMwMDgsOCBAQCBpbmRleF9idWlsZChSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChoZWFwUmVsYXRpb24tPnJkX3Jl bC0+cmVsb3duZXIsCiAJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJ Q1RFRF9PUEVSQVRJT04pOwogCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJ U2V0Q29uZmlnT3B0aW9uKCJzZWFyY2hfcGF0aCIsIEdVQ19TQUZFX1NFQVJDSF9QQVRILCBQR0Nf VVNFUlNFVCwKKwkJCQkJUEdDX1NfU0VTU0lPTik7CiAKIAkvKiBTZXQgdXAgaW5pdGlhbCBwcm9n cmVzcyByZXBvcnQgc3RhdHVzICovCiAJewpAQCAtMzM0MSw2ICszMzQ1LDggQEAgdmFsaWRhdGVf aW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCVNldFVz ZXJJZEFuZFNlY0NvbnRleHQoaGVhcFJlbGF0aW9uLT5yZF9yZWwtPnJlbG93bmVyLAogCQkJCQkJ ICAgc2F2ZV9zZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JFU1RSSUNURURfT1BFUkFUSU9OKTsKIAlz YXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCVNldENvbmZpZ09wdGlvbigic2Vh cmNoX3BhdGgiLCBHVUNfU0FGRV9TRUFSQ0hfUEFUSCwgUEdDX1VTRVJTRVQsCisJCQkJCVBHQ19T X1NFU1NJT04pOwogCiAJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oaW5kZXhJZCwgUm93RXhj bHVzaXZlTG9jayk7CiAKQEAgLTM2MDEsNiArMzYwNyw4IEBAIHJlaW5kZXhfaW5kZXgoT2lkIGlu ZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwKIAlT ZXRVc2VySWRBbmRTZWNDb250ZXh0KGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWxvd25lciwKIAkJ CQkJCSAgIHNhdmVfc2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7 CiAJc2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlTZXRDb25maWdPcHRpb24o InNlYXJjaF9wYXRoIiwgR1VDX1NBRkVfU0VBUkNIX1BBVEgsIFBHQ19VU0VSU0VULAorCQkJCQlQ R0NfU19TRVNTSU9OKTsKIAogCWlmIChwcm9ncmVzcykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMK aW5kZXggNTJlZjQ2MmRiYS4uMmZkZDE4MDQ5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAt MzQ4LDYgKzM0OCw4IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgVmFjdXVtUGFy YW1zICpwYXJhbXMsCiAJU2V0VXNlcklkQW5kU2VjQ29udGV4dChvbmVyZWwtPnJkX3JlbC0+cmVs b3duZXIsCiAJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9P UEVSQVRJT04pOwogCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJU2V0Q29u ZmlnT3B0aW9uKCJzZWFyY2hfcGF0aCIsIEdVQ19TQUZFX1NFQVJDSF9QQVRILCBQR0NfVVNFUlNF VCwKKwkJCQkJUEdDX1NfU0VTU0lPTik7CiAKIAkvKiBtZWFzdXJlIGVsYXBzZWQgdGltZSBpZmYg YXV0b3ZhY3V1bSBsb2dnaW5nIHJlcXVpcmVzIGl0ICovCiAJaWYgKElzQXV0b1ZhY3V1bVdvcmtl clByb2Nlc3MoKSAmJiBwYXJhbXMtPmxvZ19taW5fZHVyYXRpb24gPj0gMCkKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ns dXN0ZXIuYwppbmRleCAzNjlmZWE3YzA0Li5jOTRhM2UyMGQ2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rl ci5jCkBAIC0zNTUsNiArMzU1LDggQEAgY2x1c3Rlcl9yZWwoT2lkIHRhYmxlT2lkLCBPaWQgaW5k ZXhPaWQsIENsdXN0ZXJQYXJhbXMgKnBhcmFtcykKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KE9s ZEhlYXAtPnJkX3JlbC0+cmVsb3duZXIsCiAJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VD VVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOwogCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVz dExldmVsKCk7CisJU2V0Q29uZmlnT3B0aW9uKCJzZWFyY2hfcGF0aCIsIEdVQ19TQUZFX1NFQVJD SF9QQVRILCBQR0NfVVNFUlNFVCwKKwkJCQkJUEdDX1NfU0VTU0lPTik7CiAKIAkvKgogCSAqIFNp bmNlIHdlIG1heSBvcGVuIGEgbmV3IHRyYW5zYWN0aW9uIGZvciBlYWNoIHJlbGF0aW9uLCB3ZSBo YXZlIHRvIGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGE1MTY4YzlmMDkuLmE3 YzZhM2RjN2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC01NzUsNiArNTc1LDggQEAg RGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAJaW50CQkJcm9vdF9zYXZlX25lc3RsZXZlbDsK IAogCXJvb3Rfc2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlTZXRDb25maWdP cHRpb24oInNlYXJjaF9wYXRoIiwgR1VDX1NBRkVfU0VBUkNIX1BBVEgsIFBHQ19VU0VSU0VULAor CQkJCQlQR0NfU19TRVNTSU9OKTsKIAogCS8qCiAJICogU29tZSBjYWxsZXJzIG5lZWQgdXMgdG8g cnVuIHdpdGggYW4gZW1wdHkgZGVmYXVsdF90YWJsZXNwYWNlOyB0aGlzIGlzIGEKQEAgLTEzMDAs NiArMTMwMiw4IEBAIERlZmluZUluZGV4KE9pZCByZWxhdGlvbklkLAogCQkJCVNldFVzZXJJZEFu ZFNlY0NvbnRleHQoY2hpbGRyZWwtPnJkX3JlbC0+cmVsb3duZXIsCiAJCQkJCQkJCQkgICBjaGls ZF9zYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlfUkVTVFJJQ1RFRF9PUEVSQVRJT04pOwogCQkJ CWNoaWxkX3NhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CisJCQkJU2V0Q29uZmln T3B0aW9uKCJzZWFyY2hfcGF0aCIsIEdVQ19TQUZFX1NFQVJDSF9QQVRILCBQR0NfVVNFUlNFVCwK KwkJCQkJCQkJUEdDX1NfU0VTU0lPTik7CiAKIAkJCQkvKgogCQkJCSAqIERvbid0IHRyeSB0byBj cmVhdGUgaW5kZXhlcyBvbiBmb3JlaWduIHRhYmxlcywgdGhvdWdoLiBTa2lwCkBAIC0zNzUzLDYg KzM3NTcsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBS ZWluZGV4UGFyYW1zICpwYXJhbXMpCiAJCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoaGVhcFJlbC0+ cmRfcmVsLT5yZWxvd25lciwKIAkJCQkJCQkgICBzYXZlX3NlY19jb250ZXh0IHwgU0VDVVJJVFlf UkVTVFJJQ1RFRF9PUEVSQVRJT04pOwogCQlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZl bCgpOworCQlTZXRDb25maWdPcHRpb24oInNlYXJjaF9wYXRoIiwgR1VDX1NBRkVfU0VBUkNIX1BB VEgsIFBHQ19VU0VSU0VULAorCQkJCQkJUEdDX1NfU0VTU0lPTik7CiAKIAkJLyogZGV0ZXJtaW5l IHNhZmV0eSBvZiB0aGlzIGluZGV4IGZvciBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncyAqLwogCQlp ZHgtPnNhZmUgPSAoaW5kZXhSZWwtPnJkX2luZGV4cHJzID09IE5JTCAmJgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0 dmlldy5jCmluZGV4IGY5YTNiZGZjM2EuLjkxMTRhNzkyNGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3 LmMKQEAgLTE3OSw2ICsxNzksOCBAQCBFeGVjUmVmcmVzaE1hdFZpZXcoUmVmcmVzaE1hdFZpZXdT dG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAlTZXRVc2VySWRBbmRTZWNDb250 ZXh0KHJlbG93bmVyLAogCQkJCQkJICAgc2F2ZV9zZWNfY29udGV4dCB8IFNFQ1VSSVRZX1JFU1RS SUNURURfT1BFUkFUSU9OKTsKIAlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOwor CVNldENvbmZpZ09wdGlvbigic2VhcmNoX3BhdGgiLCBHVUNfU0FGRV9TRUFSQ0hfUEFUSCwgUEdD X1VTRVJTRVQsCisJCQkJCVBHQ19TX1NFU1NJT04pOwogCiAJLyogTWFrZSBzdXJlIGl0IGlzIGEg bWF0ZXJpYWxpemVkIHZpZXcuICovCiAJaWYgKG1hdHZpZXdSZWwtPnJkX3JlbC0+cmVsa2luZCAh PSBSRUxLSU5EX01BVFZJRVcpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW0uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IGE4NDNmOWFkOTIuLmMw ODI2MTE3OTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0yMTcyLDYgKzIxNzIsOCBAQCB2YWN1 dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHJlbC0+cmRfcmVsLT5yZWxvd25lciwKIAkJCQkJ CSAgIHNhdmVfc2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7CiAJ c2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlTZXRDb25maWdPcHRpb24oInNl YXJjaF9wYXRoIiwgR1VDX1NBRkVfU0VBUkNIX1BBVEgsIFBHQ19VU0VSU0VULAorCQkJCQlQR0Nf U19TRVNTSU9OKTsKIAogCS8qCiAJICogSWYgUFJPQ0VTU19NQUlOIGlzIHNldCAodGhlIGRlZmF1 bHQpLCBpdCdzIHRpbWUgdG8gdmFjdXVtIHRoZSBtYWluCmRpZmYgLS1naXQgYS9zcmMvYmluL3Nj cmlwdHMvdC8xMDBfdmFjdXVtZGIucGwgYi9zcmMvYmluL3NjcmlwdHMvdC8xMDBfdmFjdXVtZGIu cGwKaW5kZXggZWNjZmNjNTRhMS4uZjkxYjUxMjdhOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3Jp cHRzL3QvMTAwX3ZhY3V1bWRiLnBsCisrKyBiL3NyYy9iaW4vc2NyaXB0cy90LzEwMF92YWN1dW1k Yi5wbApAQCAtMTA5LDE1ICsxMDksMTEgQEAgJG5vZGUtPnNhZmVfcHNxbCgKICAgQ1JFQVRFIEZV TkNUSU9OIGYxKGludCkgUkVUVVJOUyBpbnQgTEFOR1VBR0UgU1FMIEFTICdTRUxFQ1QgZjAoJDEp JzsKICAgQ1JFQVRFIFRBQkxFIGZ1bmNpZHggKHggaW50KTsKICAgSU5TRVJUIElOVE8gZnVuY2lk eCBWQUxVRVMgKDApLCgxKSwoMiksKDMpOwotICBDUkVBVEUgSU5ERVggaTAgT04gZnVuY2lkeCAo KGYxKHgpKSk7CiAgIENSRUFURSBTQ0hFTUEgIkZvbyI7CiAgIENSRUFURSBUQUJMRSAiRm9vIi5i YXIoaWQgaW50KTsKIHwpOwogJG5vZGUtPmNvbW1hbmRfb2soW3F3fHZhY3V1bWRiIC1aIC0tdGFi bGU9Im5lZWQiInEodW90IigiKXgiKSBwb3N0Z3Jlc3xdLAogCSdjb2x1bW4gbGlzdCcpOwotJG5v ZGUtPmNvbW1hbmRfZmFpbHMoCi0JW3F3fHZhY3V1bWRiIC1adCBmdW5jaWR4IHBvc3RncmVzfF0s Ci0JJ3VucXVhbGlmaWVkIG5hbWUgdmlhIGZ1bmN0aW9uYWwgaW5kZXgnKTsKIAogJG5vZGUtPmNv bW1hbmRfZmFpbHMoCiAJWyAndmFjdXVtZGInLCAnLS1hbmFseXplJywgJy0tdGFibGUnLCAndmFj dGFibGUoYyknLCAncG9zdGdyZXMnIF0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9n dWMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2d1Yy5oCmluZGV4IGQ1MjUzYzdlZDIuLmVkZDgyYTU1 MWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Yy5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL2d1Yy5oCkBAIC0yMDEsNiArMjAxLDEyIEBAIHR5cGVkZWYgZW51bQogCiAjZGVmaW5l IEdVQ19RVUFMSUZJRVJfU0VQQVJBVE9SICcuJwogCisvKgorICogU2FmZSBzZWFyY2ggcGF0aCB3 aGVuIGV4ZWN1dGluZyBjb2RlIGFzIHRoZSB0YWJsZSBvd25lciwgc3VjaCBhcyBkdXJpbmcKKyAq IG1haW50ZW5hbmNlIG9wZXJhdGlvbnMuCisgKi8KKyNkZWZpbmUgR1VDX1NBRkVfU0VBUkNIX1BB VEggInBnX2NhdGFsb2csIHBnX3RlbXAiCisKIC8qCiAgKiBCaXQgdmFsdWVzIGluICJmbGFncyIg b2YgYSBHVUMgdmFyaWFibGUuICBOb3RlIHRoYXQgdGhlc2UgZG9uJ3QgYXBwZWFyCiAgKiBvbiBk aXNrLCBzbyB3ZSBjYW4gcmVhc3NpZ24gdGhlaXIgdmFsdWVzIGZyZWVseS4KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9vYXRfaG9va3MvZXhwZWN0ZWQvdGVzdF9vYXRfaG9va3Mu b3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X29hdF9ob29rcy9leHBlY3RlZC90ZXN0X29hdF9o b29rcy5vdXQKaW5kZXggZjgwMzczYWVjYy4uZWZmZGM0OTE0NSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X29hdF9ob29rcy9leHBlY3RlZC90ZXN0X29hdF9ob29rcy5vdXQKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X29hdF9ob29rcy9leHBlY3RlZC90ZXN0X29hdF9ob29r cy5vdXQKQEAgLTg5LDExICs4OSwxNSBAQCBOT1RJQ0U6ICBpbiBvYmplY3QgYWNjZXNzOiBzdXBl cnVzZXIgZmluaXNoZWQgY3JlYXRlIChzdWJJZD0weDApIFtpbnRlcm5hbF0KIE5PVElDRTogIGlu IHByb2Nlc3MgdXRpbGl0eTogc3VwZXJ1c2VyIGZpbmlzaGVkIENSRUFURSBUQUJMRQogQ1JFQVRF IElOREVYIHJlZ3Jlc3NfdGVzdF90YWJsZV90X2lkeCBPTiByZWdyZXNzX3Rlc3RfdGFibGUgKHQp OwogTk9USUNFOiAgaW4gcHJvY2VzcyB1dGlsaXR5OiBzdXBlcnVzZXIgYXR0ZW1wdGluZyBDUkVB VEUgSU5ERVgKK05PVElDRTogIGluIG9iamVjdCBhY2Nlc3M6IHN1cGVydXNlciBhdHRlbXB0aW5n IG5hbWVzcGFjZSBzZWFyY2ggKHN1YklkPTB4MCkgW25vIHJlcG9ydCBvbiB2aW9sYXRpb24sIGFs bG93ZWRdCitOT1RJQ0U6ICBpbiBvYmplY3QgYWNjZXNzOiBzdXBlcnVzZXIgZmluaXNoZWQgbmFt ZXNwYWNlIHNlYXJjaCAoc3ViSWQ9MHgwKSBbbm8gcmVwb3J0IG9uIHZpb2xhdGlvbiwgYWxsb3dl ZF0KIE5PVElDRTogIGluIG9iamVjdCBhY2Nlc3M6IHN1cGVydXNlciBhdHRlbXB0aW5nIGNyZWF0 ZSAoc3ViSWQ9MHgwKSBbZXhwbGljaXRdCiBOT1RJQ0U6ICBpbiBvYmplY3QgYWNjZXNzOiBzdXBl cnVzZXIgZmluaXNoZWQgY3JlYXRlIChzdWJJZD0weDApIFtleHBsaWNpdF0KIE5PVElDRTogIGlu IHByb2Nlc3MgdXRpbGl0eTogc3VwZXJ1c2VyIGZpbmlzaGVkIENSRUFURSBJTkRFWAogR1JBTlQg U0VMRUNUIE9OIFRhYmxlIHJlZ3Jlc3NfdGVzdF90YWJsZSBUTyBwdWJsaWM7CiBOT1RJQ0U6ICBp biBwcm9jZXNzIHV0aWxpdHk6IHN1cGVydXNlciBhdHRlbXB0aW5nIEdSQU5UCitOT1RJQ0U6ICBp biBvYmplY3QgYWNjZXNzOiBzdXBlcnVzZXIgYXR0ZW1wdGluZyBuYW1lc3BhY2Ugc2VhcmNoIChz dWJJZD0weDApIFtubyByZXBvcnQgb24gdmlvbGF0aW9uLCBhbGxvd2VkXQorTk9USUNFOiAgaW4g b2JqZWN0IGFjY2Vzczogc3VwZXJ1c2VyIGZpbmlzaGVkIG5hbWVzcGFjZSBzZWFyY2ggKHN1Yklk PTB4MCkgW25vIHJlcG9ydCBvbiB2aW9sYXRpb24sIGFsbG93ZWRdCiBOT1RJQ0U6ICBpbiBwcm9j ZXNzIHV0aWxpdHk6IHN1cGVydXNlciBmaW5pc2hlZCBHUkFOVAogQ1JFQVRFIEZVTkNUSU9OIHJl Z3Jlc3NfdGVzdF9mdW5jICh0IHRleHQpIFJFVFVSTlMgdGV4dCBBUyAkJAogCVNFTEVDVCAkMTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0CmluZGV4IDNjZjRhYzhjOWUu Ljk5N2M1YzU3YTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmls ZWdlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApA QCAtMTc2OSw3ICsxNzY5LDcgQEAgU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Ny b191c2VyOwogQ1JFQVRFIEZVTkNUSU9OIHVud2FudGVkX2dyYW50KCkgUkVUVVJOUyB2b2lkIExB TkdVQUdFIHNxbCBBUwogCSdHUkFOVCByZWdyZXNzX3ByaXZfZ3JvdXAyIFRPIHJlZ3Jlc3Nfc3Jv X3VzZXInOwogQ1JFQVRFIEZVTkNUSU9OIG12X2FjdGlvbigpIFJFVFVSTlMgYm9vbCBMQU5HVUFH RSBzcWwgQVMKLQknREVDTEFSRSBjIENVUlNPUiBXSVRIIEhPTEQgRk9SIFNFTEVDVCB1bndhbnRl ZF9ncmFudCgpOyBTRUxFQ1QgdHJ1ZSc7CisJJ0RFQ0xBUkUgYyBDVVJTT1IgV0lUSCBIT0xEIEZP UiBTRUxFQ1QgcHVibGljLnVud2FudGVkX2dyYW50KCk7IFNFTEVDVCB0cnVlJzsKIC0tIFJFRlJF U0ggb2YgdGhpcyBNViB3aWxsIHF1ZXVlIGEgR1JBTlQgYXQgZW5kIG9mIHRyYW5zYWN0aW9uCiBD UkVBVEUgTUFURVJJQUxJWkVEIFZJRVcgc3JvX212IEFTIFNFTEVDVCBtdl9hY3Rpb24oKSBXSVRI IE5PIERBVEE7CiBSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIHNyb19tdjsKQEAgLTE3ODMsMTIg KzE3ODMsMTIgQEAgU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Nyb191c2VyOwog LS0gSU5TRVJUIHRvIHRoaXMgdGFibGUgd2lsbCBxdWV1ZSBhIEdSQU5UIGF0IGVuZCBvZiB0cmFu c2FjdGlvbgogQ1JFQVRFIFRBQkxFIHNyb190cm9qYW5fdGFibGUgKCk7CiBDUkVBVEUgRlVOQ1RJ T04gc3JvX3Ryb2phbigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSBwbHBnc3FsIEFTCi0JJ0JF R0lOIFBFUkZPUk0gdW53YW50ZWRfZ3JhbnQoKTsgUkVUVVJOIE5VTEw7IEVORCc7CisJJ0JFR0lO IFBFUkZPUk0gcHVibGljLnVud2FudGVkX2dyYW50KCk7IFJFVFVSTiBOVUxMOyBFTkQnOwogQ1JF QVRFIENPTlNUUkFJTlQgVFJJR0dFUiB0IEFGVEVSIElOU0VSVCBPTiBzcm9fdHJvamFuX3RhYmxl CiAgICAgSU5JVElBTExZIERFRkVSUkVEIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBz cm9fdHJvamFuKCk7CiAtLSBOb3csIFJFRlJFU0ggd2lsbCBpc3N1ZSBzdWNoIGFuIElOU0VSVCwg cXVldWVpbmcgdGhlIEdSQU5UCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBtdl9hY3Rpb24o KSBSRVRVUk5TIGJvb2wgTEFOR1VBR0Ugc3FsIEFTCi0JJ0lOU0VSVCBJTlRPIHNyb190cm9qYW5f dGFibGUgREVGQVVMVCBWQUxVRVM7IFNFTEVDVCB0cnVlJzsKKwknSU5TRVJUIElOVE8gcHVibGlj LnNyb190cm9qYW5fdGFibGUgREVGQVVMVCBWQUxVRVM7IFNFTEVDVCB0cnVlJzsKIFJFRlJFU0gg TUFURVJJQUxJWkVEIFZJRVcgc3JvX212OwogRVJST1I6ICBjYW5ub3QgZmlyZSBkZWZlcnJlZCB0 cmlnZ2VyIHdpdGhpbiBzZWN1cml0eS1yZXN0cmljdGVkIG9wZXJhdGlvbgogQ09OVEVYVDogIFNR TCBmdW5jdGlvbiAibXZfYWN0aW9uIiBzdGF0ZW1lbnQgMQpAQCAtMTgwMCwxNSArMTgwMCwxNSBA QCBCRUdJTjsgU0VUIENPTlNUUkFJTlRTIEFMTCBJTU1FRElBVEU7IFJFRlJFU0ggTUFURVJJQUxJ WkVEIFZJRVcgc3JvX212OyBDT01NSVQ7CiBFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIHRvIGdy YW50IHJvbGUgInJlZ3Jlc3NfcHJpdl9ncm91cDIiCiBERVRBSUw6ICBPbmx5IHJvbGVzIHdpdGgg dGhlIEFETUlOIG9wdGlvbiBvbiByb2xlICJyZWdyZXNzX3ByaXZfZ3JvdXAyIiBtYXkgZ3JhbnQg dGhpcyByb2xlLgogQ09OVEVYVDogIFNRTCBmdW5jdGlvbiAidW53YW50ZWRfZ3JhbnQiIHN0YXRl bWVudCAxCi1TUUwgc3RhdGVtZW50ICJTRUxFQ1QgdW53YW50ZWRfZ3JhbnQoKSIKLVBML3BnU1FM IGZ1bmN0aW9uIHNyb190cm9qYW4oKSBsaW5lIDEgYXQgUEVSRk9STQorU1FMIHN0YXRlbWVudCAi U0VMRUNUIHB1YmxpYy51bndhbnRlZF9ncmFudCgpIgorUEwvcGdTUUwgZnVuY3Rpb24gcHVibGlj LnNyb190cm9qYW4oKSBsaW5lIDEgYXQgUEVSRk9STQogU1FMIGZ1bmN0aW9uICJtdl9hY3Rpb24i IHN0YXRlbWVudCAxCiAtLSBSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIENPTkNVUlJFTlRMWSB1 c2Ugb2YgZXZhbF9jb25zdF9leHByZXNzaW9ucygpCiBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3Nfc3JvX3VzZXI7CiBDUkVBVEUgRlVOQ1RJT04gdW53YW50ZWRfZ3JhbnRfbm9mYWls KGludCkgUkVUVVJOUyBpbnQKIAlJTU1VVEFCTEUgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAogQkVH SU4KLQlQRVJGT1JNIHVud2FudGVkX2dyYW50KCk7CisJUEVSRk9STSBwdWJsaWMudW53YW50ZWRf Z3JhbnQoKTsKIAlSQUlTRSBXQVJOSU5HICdvd25lZCc7CiAJUkVUVVJOIDE7CiBFWENFUFRJT04g V0hFTiBPVEhFUlMgVEhFTgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92 YWN1dW0ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0CmluZGV4IDQx ZTAyMGNmMjAuLjQ1NDgyMWMxNmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdmFjdXVtLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ZhY3V1bS5vdXQK QEAgLTY0LDcgKzY0LDcgQEAgQ0xVU1RFUiB2YWNjbHVzdGVyOwogQ1JFQVRFIEZVTkNUSU9OIGRv X2FuYWx5emUoKSBSRVRVUk5TIFZPSUQgVk9MQVRJTEUgTEFOR1VBR0UgU1FMCiAJQVMgJ0FOQUxZ WkUgcGdfYW0nOwogQ1JFQVRFIEZVTkNUSU9OIHdyYXBfZG9fYW5hbHl6ZShjIElOVCkgUkVUVVJO UyBJTlQgSU1NVVRBQkxFIExBTkdVQUdFIFNRTAotCUFTICdTRUxFQ1QgJDEgRlJPTSBkb19hbmFs eXplKCknOworCUFTICdTRUxFQ1QgJDEgRlJPTSBwdWJsaWMuZG9fYW5hbHl6ZSgpJzsKIENSRUFU RSBJTkRFWCBPTiB2YWNjbHVzdGVyKHdyYXBfZG9fYW5hbHl6ZShpKSk7CiBJTlNFUlQgSU5UTyB2 YWNjbHVzdGVyIFZBTFVFUyAoMSksICgyKTsKIEFOQUxZWkUgdmFjY2x1c3RlcjsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHJpdmlsZWdlcy5zcWwKaW5kZXggMTM0ODA5ZThjYy4uZTk2MTc0OGQ3OSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKQEAgLTExNzcsNyArMTE3Nyw3IEBAIFNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19zcm9fdXNlcjsKIENSRUFURSBGVU5DVElPTiB1bndh bnRlZF9ncmFudCgpIFJFVFVSTlMgdm9pZCBMQU5HVUFHRSBzcWwgQVMKIAknR1JBTlQgcmVncmVz c19wcml2X2dyb3VwMiBUTyByZWdyZXNzX3Nyb191c2VyJzsKIENSRUFURSBGVU5DVElPTiBtdl9h Y3Rpb24oKSBSRVRVUk5TIGJvb2wgTEFOR1VBR0Ugc3FsIEFTCi0JJ0RFQ0xBUkUgYyBDVVJTT1Ig V0lUSCBIT0xEIEZPUiBTRUxFQ1QgdW53YW50ZWRfZ3JhbnQoKTsgU0VMRUNUIHRydWUnOworCSdE RUNMQVJFIGMgQ1VSU09SIFdJVEggSE9MRCBGT1IgU0VMRUNUIHB1YmxpYy51bndhbnRlZF9ncmFu dCgpOyBTRUxFQ1QgdHJ1ZSc7CiAtLSBSRUZSRVNIIG9mIHRoaXMgTVYgd2lsbCBxdWV1ZSBhIEdS QU5UIGF0IGVuZCBvZiB0cmFuc2FjdGlvbgogQ1JFQVRFIE1BVEVSSUFMSVpFRCBWSUVXIHNyb19t diBBUyBTRUxFQ1QgbXZfYWN0aW9uKCkgV0lUSCBOTyBEQVRBOwogUkVGUkVTSCBNQVRFUklBTEla RUQgVklFVyBzcm9fbXY7CkBAIC0xMTg4LDEyICsxMTg4LDEyIEBAIFNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT04gcmVncmVzc19zcm9fdXNlcjsKIC0tIElOU0VSVCB0byB0aGlzIHRhYmxlIHdpbGwg cXVldWUgYSBHUkFOVCBhdCBlbmQgb2YgdHJhbnNhY3Rpb24KIENSRUFURSBUQUJMRSBzcm9fdHJv amFuX3RhYmxlICgpOwogQ1JFQVRFIEZVTkNUSU9OIHNyb190cm9qYW4oKSBSRVRVUk5TIHRyaWdn ZXIgTEFOR1VBR0UgcGxwZ3NxbCBBUwotCSdCRUdJTiBQRVJGT1JNIHVud2FudGVkX2dyYW50KCk7 IFJFVFVSTiBOVUxMOyBFTkQnOworCSdCRUdJTiBQRVJGT1JNIHB1YmxpYy51bndhbnRlZF9ncmFu dCgpOyBSRVRVUk4gTlVMTDsgRU5EJzsKIENSRUFURSBDT05TVFJBSU5UIFRSSUdHRVIgdCBBRlRF UiBJTlNFUlQgT04gc3JvX3Ryb2phbl90YWJsZQogICAgIElOSVRJQUxMWSBERUZFUlJFRCBGT1Ig RUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgc3JvX3Ryb2phbigpOwogLS0gTm93LCBSRUZSRVNI IHdpbGwgaXNzdWUgc3VjaCBhbiBJTlNFUlQsIHF1ZXVlaW5nIHRoZSBHUkFOVAogQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gbXZfYWN0aW9uKCkgUkVUVVJOUyBib29sIExBTkdVQUdFIHNxbCBB UwotCSdJTlNFUlQgSU5UTyBzcm9fdHJvamFuX3RhYmxlIERFRkFVTFQgVkFMVUVTOyBTRUxFQ1Qg dHJ1ZSc7CisJJ0lOU0VSVCBJTlRPIHB1YmxpYy5zcm9fdHJvamFuX3RhYmxlIERFRkFVTFQgVkFM VUVTOyBTRUxFQ1QgdHJ1ZSc7CiBSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIHNyb19tdjsKIFxj IC0KIFJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcgc3JvX212OwpAQCAtMTIwNCw3ICsxMjA0LDcg QEAgU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Nyb191c2VyOwogQ1JFQVRFIEZV TkNUSU9OIHVud2FudGVkX2dyYW50X25vZmFpbChpbnQpIFJFVFVSTlMgaW50CiAJSU1NVVRBQkxF IExBTkdVQUdFIHBscGdzcWwgQVMgJCQKIEJFR0lOCi0JUEVSRk9STSB1bndhbnRlZF9ncmFudCgp OworCVBFUkZPUk0gcHVibGljLnVud2FudGVkX2dyYW50KCk7CiAJUkFJU0UgV0FSTklORyAnb3du ZWQnOwogCVJFVFVSTiAxOwogRVhDRVBUSU9OIFdIRU4gT1RIRVJTIFRIRU4KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC92 YWN1dW0uc3FsCmluZGV4IDUxZDdiMWZlY2MuLjBiNjNlZjhkYzYgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFj dXVtLnNxbApAQCAtNDksNyArNDksNyBAQCBDTFVTVEVSIHZhY2NsdXN0ZXI7CiBDUkVBVEUgRlVO Q1RJT04gZG9fYW5hbHl6ZSgpIFJFVFVSTlMgVk9JRCBWT0xBVElMRSBMQU5HVUFHRSBTUUwKIAlB UyAnQU5BTFlaRSBwZ19hbSc7CiBDUkVBVEUgRlVOQ1RJT04gd3JhcF9kb19hbmFseXplKGMgSU5U KSBSRVRVUk5TIElOVCBJTU1VVEFCTEUgTEFOR1VBR0UgU1FMCi0JQVMgJ1NFTEVDVCAkMSBGUk9N IGRvX2FuYWx5emUoKSc7CisJQVMgJ1NFTEVDVCAkMSBGUk9NIHB1YmxpYy5kb19hbmFseXplKCkn OwogQ1JFQVRFIElOREVYIE9OIHZhY2NsdXN0ZXIod3JhcF9kb19hbmFseXplKGkpKTsKIElOU0VS VCBJTlRPIHZhY2NsdXN0ZXIgVkFMVUVTICgxKSwgKDIpOwogQU5BTFlaRSB2YWNjbHVzdGVyOwot LSAKMi4zNC4xCgo= --=-ACNF2J5/oZdMutqVMJri--