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 1rrzgX-0046aS-9v for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Apr 2024 12:25:46 +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 1rrzgW-001Pfq-A7 for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Apr 2024 12:25:44 +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 1rrzgV-001PfY-O9 for pgsql-hackers@lists.postgresql.org; Wed, 03 Apr 2024 12:25:44 +0000 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rrzgT-000M8F-1I for pgsql-hackers@postgresql.org; Wed, 03 Apr 2024 12:25:42 +0000 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-2d4515ec3aaso7273951fa.1 for ; Wed, 03 Apr 2024 05:25:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712147139; x=1712751939; 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=ckrDIipoptr70DWps/6tmCjS7iaZEv29Uott/gs8X40=; b=mej66rQz1C03Sk1TGGdHhAZQ5dhN4UwAZu9Yyi3xii+irXKXZi18b0vu6EYHdEYlXE hm+Ankp5tms0alWu7JLtqNpPVe5Y9CbEAgno3mqykXhjXurLls7Uj8jXh7k1AFnDkvHO r5FXssfXVXFaG2xJTVB4nQ2j+Xju9TobAYxJBRvUwq2LvWy8+nuDkWYFOpgAJv+abMrA XpKH+si6gmCl6qJJ3LSkeB4Cxx+4aVFDkNH7OJK9GOGFWPUT02lLWLBbLpTUuiEjkr2G iRz4F//19gkNNvUOMx0+qbCLIOlxH7TkL/Ss40qYajjkBXxDxhBNRJDBdDHdaweAca1k j1Pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712147139; x=1712751939; 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=ckrDIipoptr70DWps/6tmCjS7iaZEv29Uott/gs8X40=; b=HwToewUgv0RCnUqxjT4G7M+0/B+1HP54rhEtWbjsEE8ZSZB6d1rFheKqwcKq4aRsJp WuUItNZ7nFlS0mrZoVXR5y3f6mxdgwnG9aq0Lc/xD9NZPfiFzwCB1cvVD/LovNq11wm3 MUUc0YWBnnaassodyLABLT4boLQq0I9eyULMBqNQIS1Gs1D7qvcSzklyKPrADPqbT7Ot 14Uzlv+zxl7bRO+uhj1U58dgVHGVsv7qKv2ZVFBnfiaJYutwbajIolJHcJo2w9o++alH tDB1yUmK84MFscb8H/AGA3/yYOwH7JAOV6zACS2Wrg1Klan4TxmzKQaFWBJ+xfxfY+aG PfVA== X-Forwarded-Encrypted: i=1; AJvYcCUezu8aN1pUIUExJiIIrs3BtupAE76QACSWXb23GSP7ai0sl9gb1SyXNkEWvO3GPOkTxCcIIZD8kmH1jcXkmMpyTbeppd0VbIdltc8z X-Gm-Message-State: AOJu0YyxYR/bDLD+Pja1+b55G73Aqg+awXwucDG9FtmPc2yF9nSyDHSI Lq4Q8KKVfexuRNHvjr0gAIHjFqAq7yRAo7k8jE0wS7+4AK5kJkcT6UDWMh/G+Gi7RDHGiDwWxJ4 NbujMwm9XmrKjGGtqWHMwetMNOrU= X-Google-Smtp-Source: AGHT+IGn3LrCbJhRhbKvPrGJib40WGANCp97R7FzGObRVOk+HGy613a8L4tc35vKqZKUXb6BmcCfRLWmhaNu+OrtnXg= X-Received: by 2002:a2e:b170:0:b0:2d6:f8d7:ab95 with SMTP id a16-20020a2eb170000000b002d6f8d7ab95mr846628ljm.21.1712147139222; Wed, 03 Apr 2024 05:25:39 -0700 (PDT) MIME-Version: 1.0 References: <20230603223824.o7iyochli2dwwi7k@alap3.anarazel.de> <6be6f58815dc0844fbe058edf56b4e735a6efc1c.camel@j-davis.com> <2280bf7241119bb88cbe0fe5eb36490cbd04c0c0.camel@j-davis.com> <12f1a2d8dd3b6305c0354f1c701f44b7be5e54eb.camel@j-davis.com> <8633171cb034aafc260fdf37df04b6c779aa1e2f.camel@j-davis.com> In-Reply-To: From: Bharath Rupireddy Date: Wed, 3 Apr 2024 17:55:27 +0530 Message-ID: Subject: Re: New Table Access Methods for Multi and Single Inserts To: Jeff Davis Cc: Masahiko Sawada , PostgreSQL-development , Andres Freund , Dilip Kumar , Luc Vlaming , Justin Pryzby , Michael Paquier , Matthias van de Meent , Alexander Korotkov Content-Type: multipart/mixed; boundary="0000000000000975c806153052b1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000975c806153052b1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Apr 3, 2024 at 2:32=E2=80=AFPM Bharath Rupireddy wrote: > > I too prefer the latter so that the caller doesn't have to have two > paths. The new API can just transparently fallback to single inserts. > I've implemented that in the attached v17 patch. I also tested the > default APIs manually, but I'll see if I can add some tests to it the > default API. Fixed a compiler warning found via CF bot. Please find the attached v18 patches. I'm sorry for the noise. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --0000000000000975c806153052b1 Content-Type: application/x-patch; name="v18-0001-Introduce-new-table-modify-access-methods.patch" Content-Disposition: attachment; filename="v18-0001-Introduce-new-table-modify-access-methods.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lujrce9a0 RnJvbSBmZjEyNzhiNzdlMGQ2YWM2YTQ5ZjA4MjY2MDJiZDk0OGU3OGM3YTkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMyBBcHIgMjAyNCAxMTo1NjoxNCArMDAw MApTdWJqZWN0OiBbUEFUQ0ggdjE4IDEvMl0gSW50cm9kdWNlIG5ldyB0YWJsZSBtb2RpZnkgYWNj ZXNzIG1ldGhvZHMKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAg ICB8IDE4OSArKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYyB8ICAgNSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVh bS5jICAgICAgIHwgIDg2ICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFi bGVhbWFwaS5jICAgIHwgICA4ICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAg ICAgICAgfCAgNDEgKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAg ICAgfCAxMDggKysrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICB8ICAgMyArCiA3IGZpbGVzIGNoYW5nZWQsIDQzOSBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBiNjYxZDk4MTFlLi42OWY4 YzU5N2Q4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNjQsNiArNjQsNyBAQAogI2lu Y2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5j bHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1 ZGUgInV0aWxzL3NwY2NhY2hlLmgiCkBAIC0xMDcsNyArMTA4LDggQEAgc3RhdGljIGludAlib3R0 b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxldGVPcCAqZGVsc3RhdGUpOwogc3RhdGlj IFhMb2dSZWNQdHIgbG9nX2hlYXBfbmV3X2NpZChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxl IHR1cCk7CiBzdGF0aWMgSGVhcFR1cGxlIEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkoUmVsYXRpb24g cmVsYXRpb24sIEhlYXBUdXBsZSB0cCwgYm9vbCBrZXlfcmVxdWlyZWQsCiAJCQkJCQkJCQkJYm9v bCAqY29weSk7Ci0KK3N0YXRpYyB2b2lkIGhlYXBfbW9kaWZ5X2J1ZmZlcl9mbHVzaChUYWJsZU1v ZGlmeVN0YXRlICpzdGF0ZSk7CitzdGF0aWMgdm9pZCBoZWFwX21vZGlmeV9pbnNlcnRfZW5kKFRh YmxlTW9kaWZ5U3RhdGUgKnN0YXRlKTsKIAogLyoKICAqIEVhY2ggdHVwbGUgbG9jayBtb2RlIGhh cyBhIGNvcnJlc3BvbmRpbmcgaGVhdnl3ZWlnaHQgbG9jaywgYW5kIG9uZSBvciB0d28KQEAgLTI0 NDEsNiArMjQ0MywxOTEgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1 cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCSppbnNlcnRfaW5kZXhlcyA9IHRy dWU7CiB9CiAKKy8qCisgKiBJbml0aWFsaXplIGhlYXAgbW9kaWZ5IHN0YXRlLgorICovCitUYWJs ZU1vZGlmeVN0YXRlICoKK2hlYXBfbW9kaWZ5X2JlZ2luKFJlbGF0aW9uIHJlbCwgaW50IG1vZGlm eV9mbGFncywgQ29tbWFuZElkIGNpZCwKKwkJCQkgIGludCBvcHRpb25zKQoreworCVRhYmxlTW9k aWZ5U3RhdGUgKnN0YXRlOworCU1lbW9yeUNvbnRleHQgY29udGV4dDsKKwlNZW1vcnlDb250ZXh0 IG9sZGNvbnRleHQ7CisKKwljb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRN ZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJImhlYXBfbW9kaWZ5IG1lbW9yeSBjb250ZXh0IiwKKwkJ CQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhjb250ZXh0KTsKKwlzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKFRhYmxlTW9k aWZ5U3RhdGUpKTsKKwlzdGF0ZS0+cmVsID0gcmVsOworCXN0YXRlLT5tb2RpZnlfZmxhZ3MgPSBt b2RpZnlfZmxhZ3M7CisJc3RhdGUtPm1jdHggPSBjb250ZXh0OworCXN0YXRlLT5jaWQgPSBjaWQ7 CisJc3RhdGUtPm9wdGlvbnMgPSBvcHRpb25zOworCXN0YXRlLT5pbnNlcnRfaW5kZXhlcyA9IGZh bHNlOworCXN0YXRlLT5tb2RpZnlfZW5kX2NiID0gTlVMTDsJLyogVG8gYmUgaW5zdGFsbGVkIGxh emlseSAqLworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiBz dGF0ZTsKK30KKworLyoKKyAqIFN0b3JlIHBhc3NlZC1pbiB0dXBsZSBpbnRvIGluLW1lbW9yeSBi dWZmZXJlZCBzbG90cy4gV2hlbiBmdWxsLCBpbnNlcnQKKyAqIG11bHRpcGxlIHR1cGxlcyBmcm9t IHRoZSBidWZmZXJzIGludG8gaGVhcC4KKyAqLwordm9pZAoraGVhcF9tb2RpZnlfYnVmZmVyX2lu c2VydChUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZSwKKwkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNs b3QpCit7CisJVHVwbGVUYWJsZVNsb3QgKmRzdHNsb3Q7CisJSGVhcEluc2VydFN0YXRlICppc3Rh dGU7CisJSGVhcE11bHRpSW5zZXJ0U3RhdGUgKm1pc3RhdGU7CisJTWVtb3J5Q29udGV4dCBvbGRj b250ZXh0OworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzdGF0ZS0+bWN0 eCk7CisKKwkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUgaGVhcCBpbnNlcnQgc3Rh dGUgKi8KKwlpZiAoc3RhdGUtPmRhdGEgPT0gTlVMTCkKKwl7CisJCWlzdGF0ZSA9IChIZWFwSW5z ZXJ0U3RhdGUgKikgcGFsbG9jMChzaXplb2YoSGVhcEluc2VydFN0YXRlKSk7CisJCWlzdGF0ZS0+ YmlzdGF0ZSA9IE5VTEw7CisJCWlzdGF0ZS0+bWlzdGF0ZSA9IE5VTEw7CisJCXN0YXRlLT5kYXRh ID0gaXN0YXRlOworCisJCWlmICgoc3RhdGUtPm1vZGlmeV9mbGFncyAmIFRNX0ZMQUdfTVVMVElf SU5TRVJUUykgIT0gMCkKKwkJeworCQkJbWlzdGF0ZSA9IChIZWFwTXVsdGlJbnNlcnRTdGF0ZSAq KSBwYWxsb2MwKHNpemVvZihIZWFwTXVsdGlJbnNlcnRTdGF0ZSkpOworCQkJbWlzdGF0ZS0+c2xv dHMgPSAoVHVwbGVUYWJsZVNsb3QgKiopIHBhbGxvYzAoc2l6ZW9mKFR1cGxlVGFibGVTbG90ICop ICogSEVBUF9NQVhfQlVGRkVSRURfU0xPVFMpOworCQkJaXN0YXRlLT5taXN0YXRlID0gbWlzdGF0 ZTsKKwkJfQorCisJCWlmICgoc3RhdGUtPm1vZGlmeV9mbGFncyAmIFRNX0ZMQUdfQkFTX0JVTEtX UklURSkgIT0gMCkKKwkJCWlzdGF0ZS0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOwor CisJCXN0YXRlLT5tb2RpZnlfZW5kX2NiID0gaGVhcF9tb2RpZnlfaW5zZXJ0X2VuZDsKKwl9CisK Kwlpc3RhdGUgPSAoSGVhcEluc2VydFN0YXRlICopIHN0YXRlLT5kYXRhOworCUFzc2VydChpc3Rh dGUtPm1pc3RhdGUgIT0gTlVMTCk7CisJbWlzdGF0ZSA9IGlzdGF0ZS0+bWlzdGF0ZTsKKwlBc3Nl cnQoaXN0YXRlLT5iaXN0YXRlICE9IE5VTEwpOworCisJZHN0c2xvdCA9IG1pc3RhdGUtPnNsb3Rz W21pc3RhdGUtPmN1cl9zbG90c107CisJaWYgKGRzdHNsb3QgPT0gTlVMTCkKKwl7CisJCS8qCisJ CSAqIFdlIHVzZSB2aXJ0dWFsIHR1cGxlIHNsb3RzIGJ1ZmZlcmVkIHNsb3RzIGZvciBsZXZlcmFn aW5nIHRoZQorCQkgKiBvcHRpbWl6YXRpb24gaXQgcHJvdmlkZXMgdG8gbWluaW1pemUgcGh5c2lj YWwgZGF0YSBjb3B5aW5nLiBUaGUKKwkJICogdmlydHVhbCBzbG90IGdldHMgbWF0ZXJpYWxpemVk IHdoZW4gd2UgY29weSAodmlhIGJlbG93CisJCSAqIEV4ZWNDb3B5U2xvdCkgdGhlIHR1cGxlcyBm cm9tIHRoZSBzb3VyY2Ugc2xvdCB3aGljaCBjYW4gYmUgb2YgYW55CisJCSAqIHR5cGUuIFRoaXMg d2F5LCBpdCBpcyBlbnN1cmVkIHRoYXQgdGhlIHR1cGxlIHN0b3JhZ2UgZG9lc24ndCBkZXBlbmQK KwkJICogb24gZXh0ZXJuYWwgbWVtb3J5LCBiZWNhdXNlIGFsbCB0aGUgZGF0dW1zIHRoYXQgYXJl bid0IHBhc3NlZCBieQorCQkgKiB2YWx1ZSBhcmUgY29waWVkIGludG8gdGhlIHNsb3QncyBtZW1v cnkgY29udGV4dC4KKwkJICovCisJCWRzdHNsb3QgPSBNYWtlVHVwbGVUYWJsZVNsb3QoUmVsYXRp b25HZXREZXNjcihzdGF0ZS0+cmVsKSwKKwkJCQkJCQkJCSAmVFRTT3BzVmlydHVhbCk7CisJCW1p c3RhdGUtPnNsb3RzW21pc3RhdGUtPmN1cl9zbG90c10gPSBkc3RzbG90OworCX0KKworCUV4ZWND bGVhclR1cGxlKGRzdHNsb3QpOworCUV4ZWNDb3B5U2xvdChkc3RzbG90LCBzbG90KTsKKworCW1p c3RhdGUtPmN1cl9zbG90cysrOworCisJLyoKKwkgKiBNZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUg d2hvbGUgdHVwbGUgaXMgaW4gc2xvdCdzIG1lbW9yeSBjb250ZXh0LCBzbworCSAqIHVzZSBpdCBr ZWVwIHRyYWNrIG9mIHRoZSB0b3RhbCBzcGFjZSBvY2N1cGllZCBieSBhbGwgYnVmZmVyZWQgdHVw bGVzLgorCSAqLworCWlmIChUVFNfU0hPVUxERlJFRShkc3RzbG90KSkKKwkJbWlzdGF0ZS0+Y3Vy X3NpemUgKz0gTWVtb3J5Q29udGV4dE1lbUFsbG9jYXRlZChkc3RzbG90LT50dHNfbWN4dCwgZmFs c2UpOworCisJaWYgKG1pc3RhdGUtPmN1cl9zbG90cyA+PSBIRUFQX01BWF9CVUZGRVJFRF9TTE9U UyB8fAorCQltaXN0YXRlLT5jdXJfc2l6ZSA+PSBIRUFQX01BWF9CVUZGRVJFRF9CWVRFUykKKwkJ aGVhcF9tb2RpZnlfYnVmZmVyX2ZsdXNoKHN0YXRlKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKK30KKworLyoKKyAqIEluc2VydCBtdWx0aXBsZSB0dXBsZXMgZnJvbSBp bi1tZW1vcnkgYnVmZmVyZWQgc2xvdHMgaW50byBoZWFwLgorICovCitzdGF0aWMgdm9pZAoraGVh cF9tb2RpZnlfYnVmZmVyX2ZsdXNoKFRhYmxlTW9kaWZ5U3RhdGUgKnN0YXRlKQoreworCUhlYXBJ bnNlcnRTdGF0ZSAqaXN0YXRlOworCUhlYXBNdWx0aUluc2VydFN0YXRlICptaXN0YXRlOworCU1l bW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCS8qIFF1aWNrIGV4aXQgaWYgd2UgaGF2ZW4ndCBp bnNlcnRlZCBhbnl0aGluZyB5ZXQgKi8KKwlpZiAoc3RhdGUtPmRhdGEgPT0gTlVMTCkKKwkJcmV0 dXJuOworCisJaXN0YXRlID0gKEhlYXBJbnNlcnRTdGF0ZSAqKSBzdGF0ZS0+ZGF0YTsKKwlBc3Nl cnQoaXN0YXRlLT5taXN0YXRlICE9IE5VTEwpOworCW1pc3RhdGUgPSBpc3RhdGUtPm1pc3RhdGU7 CisJQXNzZXJ0KGlzdGF0ZS0+YmlzdGF0ZSAhPSBOVUxMKTsKKworCWlmIChtaXN0YXRlLT5jdXJf c2xvdHMgPT0gMCkKKwkJcmV0dXJuOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhzdGF0ZS0+bWN0eCk7CisKKwloZWFwX211bHRpX2luc2VydChzdGF0ZS0+cmVsLCBtaXN0 YXRlLT5zbG90cywgbWlzdGF0ZS0+Y3VyX3Nsb3RzLAorCQkJCQkgIHN0YXRlLT5jaWQsIHN0YXRl LT5vcHRpb25zLCBpc3RhdGUtPmJpc3RhdGUsCisJCQkJCSAgJnN0YXRlLT5pbnNlcnRfaW5kZXhl cyk7CisKKwltaXN0YXRlLT5jdXJfc2xvdHMgPSAwOworCW1pc3RhdGUtPmN1cl9zaXplID0gMDsK KworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKK30KKworLyoKKyAqIEhlYXAg aW5zZXJ0IHNwZWNpZmljIGNhbGxiYWNrIHVzZWQgZm9yIHBlcmZvcm1pbmcgd29yayBhdCB0aGUg ZW5kIGxpa2UKKyAqIGZsdXNoaW5nIGJ1ZmZlcmVkIHR1cGxlcyBpZiBhbnksIGNsZWFuaW5nIHVw IHRoZSBpbnNlcnQgc3RhdGUgYW5kIGJ1ZmZlcmVkCisgKiBzbG90cy4KKyAqLworc3RhdGljIHZv aWQKK2hlYXBfbW9kaWZ5X2luc2VydF9lbmQoVGFibGVNb2RpZnlTdGF0ZSAqc3RhdGUpCit7CisJ SGVhcEluc2VydFN0YXRlICppc3RhdGU7CisKKwkvKiBRdWljayBleGl0IGlmIHdlIGhhdmVuJ3Qg aW5zZXJ0ZWQgYW55dGhpbmcgeWV0ICovCisJaWYgKHN0YXRlLT5kYXRhID09IE5VTEwpCisJCXJl dHVybjsKKworCWlzdGF0ZSA9IChIZWFwSW5zZXJ0U3RhdGUgKikgc3RhdGUtPmRhdGE7CisKKwlp ZiAoaXN0YXRlLT5taXN0YXRlICE9IE5VTEwpCisJeworCQlIZWFwTXVsdGlJbnNlcnRTdGF0ZSAq bWlzdGF0ZSA9IGlzdGF0ZS0+bWlzdGF0ZTsKKworCQloZWFwX21vZGlmeV9idWZmZXJfZmx1c2go c3RhdGUpOworCisJCUFzc2VydChtaXN0YXRlLT5jdXJfc2xvdHMgPT0gMCAmJgorCQkJICAgbWlz dGF0ZS0+Y3VyX3NpemUgPT0gMCk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBIRUFQX01BWF9C VUZGRVJFRF9TTE9UUyAmJiBtaXN0YXRlLT5zbG90c1tpXSAhPSBOVUxMOyBpKyspCisJCQlFeGVj RHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG1pc3RhdGUtPnNsb3RzW2ldKTsKKwl9CisKKwlpZiAo aXN0YXRlLT5iaXN0YXRlICE9IE5VTEwpCisJCUZyZWVCdWxrSW5zZXJ0U3RhdGUoaXN0YXRlLT5i aXN0YXRlKTsKK30KKworLyoKKyAqIENsZWFuIGhlYXAgbW9kaWZ5IHN0YXRlLgorICovCit2b2lk CitoZWFwX21vZGlmeV9lbmQoVGFibGVNb2RpZnlTdGF0ZSAqc3RhdGUpCit7CisJaWYgKHN0YXRl LT5tb2RpZnlfZW5kX2NiICE9IE5VTEwpCisJCXN0YXRlLT5tb2RpZnlfZW5kX2NiKHN0YXRlKTsK KworCU1lbW9yeUNvbnRleHREZWxldGUoc3RhdGUtPm1jdHgpOworfQorCiAvKgogICoJc2ltcGxl X2hlYXBfaW5zZXJ0IC0gaW5zZXJ0IGEgdHVwbGUKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYwppbmRleCBjODYwMDBkMjQ1Li5mM2FhMjk4NTFkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTI2MzgsNiArMjYzOCwxMSBAQCBz dGF0aWMgY29uc3QgVGFibGVBbVJvdXRpbmUgaGVhcGFtX21ldGhvZHMgPSB7CiAJLnR1cGxlX2lu c2VydF9zcGVjdWxhdGl2ZSA9IGhlYXBhbV90dXBsZV9pbnNlcnRfc3BlY3VsYXRpdmUsCiAJLnR1 cGxlX2NvbXBsZXRlX3NwZWN1bGF0aXZlID0gaGVhcGFtX3R1cGxlX2NvbXBsZXRlX3NwZWN1bGF0 aXZlLAogCS5tdWx0aV9pbnNlcnQgPSBoZWFwX211bHRpX2luc2VydCwKKworCS50dXBsZV9tb2Rp ZnlfYmVnaW4gPSBoZWFwX21vZGlmeV9iZWdpbiwKKwkudHVwbGVfbW9kaWZ5X2J1ZmZlcl9pbnNl cnQgPSBoZWFwX21vZGlmeV9idWZmZXJfaW5zZXJ0LAorCS50dXBsZV9tb2RpZnlfZW5kID0gaGVh cF9tb2RpZnlfZW5kLAorCiAJLnR1cGxlX2RlbGV0ZSA9IGhlYXBhbV90dXBsZV9kZWxldGUsCiAJ LnR1cGxlX3VwZGF0ZSA9IGhlYXBhbV90dXBsZV91cGRhdGUsCiAJLnR1cGxlX2xvY2sgPSBoZWFw YW1fdHVwbGVfbG9jaywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJs ZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmluZGV4IDgwNWQyMjJj ZWIuLjRjN2I1NDMzZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJs ZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMjEsNiAr MjEsNyBAQAogCiAjaW5jbHVkZSA8bWF0aC5oPgogCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5o IgkJLyoganVzdCBmb3IgQnVsa0luc2VydFN0YXRlICovCiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNz Y2FuLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGFj dC5oIgpAQCAtMjksNiArMzAsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgorI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIC8qCiAgKiBDb25zdGFudHMgdG8gY29udHJvbCB0aGUg YmVoYXZpb3Igb2YgYmxvY2sgYWxsb2NhdGlvbiB0byBwYXJhbGxlbCB3b3JrZXJzCkBAIC00OCw2 ICs1MCw3IEBACiBjaGFyCSAgICpkZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2QgPSBERUZBVUxU X1RBQkxFX0FDQ0VTU19NRVRIT0Q7CiBib29sCQlzeW5jaHJvbml6ZV9zZXFzY2FucyA9IHRydWU7 CiAKK3N0YXRpYyB2b2lkIGRlZmF1bHRfdGFibGVfbW9kaWZ5X2luc2VydF9lbmQoVGFibGVNb2Rp ZnlTdGF0ZSAqc3RhdGUpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTbG90IGZ1bmN0 aW9ucy4KQEAgLTc3MiwzICs3NzUsODYgQEAgdGFibGVfYmxvY2tfcmVsYXRpb25fZXN0aW1hdGVf c2l6ZShSZWxhdGlvbiByZWwsIGludDMyICphdHRyX3dpZHRocywKIAllbHNlCiAJCSphbGx2aXNm cmFjID0gKGRvdWJsZSkgcmVsYWxsdmlzaWJsZSAvIGN1cnBhZ2VzOwogfQorCisvKgorICogSW5p dGlhbGl6ZSBkZWZhdWx0IHRhYmxlIG1vZGlmeSBzdGF0ZS4KKyAqLworVGFibGVNb2RpZnlTdGF0 ZSAqCitkZWZhdWx0X3RhYmxlX21vZGlmeV9iZWdpbihSZWxhdGlvbiByZWwsIGludCBtb2RpZnlf ZmxhZ3MsIENvbW1hbmRJZCBjaWQsCisJCQkJCQkgICBpbnQgb3B0aW9ucykKK3sKKwlUYWJsZU1v ZGlmeVN0YXRlICpzdGF0ZTsKKwlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CisJTWVtb3J5Q29udGV4 dCBvbGRjb250ZXh0OworCisJY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50 TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCSJkZWZhdWx0X3RhYmxlX21vZGlmeSBtZW1vcnkgY29u dGV4dCIsCisJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY29udGV4dCk7CisJc3RhdGUgPSBwYWxsb2MwKHNpemVv ZihUYWJsZU1vZGlmeVN0YXRlKSk7CisJc3RhdGUtPnJlbCA9IHJlbDsKKwlzdGF0ZS0+bW9kaWZ5 X2ZsYWdzID0gbW9kaWZ5X2ZsYWdzOworCXN0YXRlLT5tY3R4ID0gY29udGV4dDsKKwlzdGF0ZS0+ Y2lkID0gY2lkOworCXN0YXRlLT5vcHRpb25zID0gb3B0aW9uczsKKwlzdGF0ZS0+aW5zZXJ0X2lu ZGV4ZXMgPSBmYWxzZTsKKwlzdGF0ZS0+bW9kaWZ5X2VuZF9jYiA9IE5VTEw7CS8qIFRvIGJlIGlu c3RhbGxlZCBsYXppbHkgKi8KKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisK KwlyZXR1cm4gc3RhdGU7Cit9CisKKy8qCisgKiBEZWZhdWx0IHRhYmxlIG1vZGlmeSBpbXBsZW1l bnRhdGlvbiBmb3IgaW5zZXJ0cy4KKyAqLwordm9pZAorZGVmYXVsdF90YWJsZV9tb2RpZnlfYnVm ZmVyX2luc2VydChUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZSwKKwkJCQkJCQkJICAgVHVwbGVUYWJs ZVNsb3QgKnNsb3QpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJb2xkY29udGV4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzdGF0ZS0+bWN0eCk7CisKKwkvKiBGaXJzdCB0aW1l IHRocm91Z2gsIGluaXRpYWxpemUgZGVmYXVsdCB0YWJsZSBtb2RpZnkgc3RhdGUgKi8KKwlpZiAo c3RhdGUtPmRhdGEgPT0gTlVMTCkKKwl7CisJCWlmICgoc3RhdGUtPm1vZGlmeV9mbGFncyAmIFRN X0ZMQUdfQkFTX0JVTEtXUklURSkgIT0gMCkKKwkJCXN0YXRlLT5kYXRhID0gKEJ1bGtJbnNlcnRT dGF0ZSkgR2V0QnVsa0luc2VydFN0YXRlKCk7CisKKwkJc3RhdGUtPm1vZGlmeV9lbmRfY2IgPSBk ZWZhdWx0X3RhYmxlX21vZGlmeV9pbnNlcnRfZW5kOworCX0KKworCS8qIEZhbGxiYWNrIHRvIHRh YmxlIEFNIHNpbmdsZSBpbnNlcnQgcm91dGluZSAqLworCXRhYmxlX3R1cGxlX2luc2VydChzdGF0 ZS0+cmVsLAorCQkJCQkgICBzbG90LAorCQkJCQkgICBzdGF0ZS0+Y2lkLAorCQkJCQkgICBzdGF0 ZS0+b3B0aW9ucywKKwkJCQkJICAgKEJ1bGtJbnNlcnRTdGF0ZSkgc3RhdGUtPmRhdGEsCisJCQkJ CSAgICZzdGF0ZS0+aW5zZXJ0X2luZGV4ZXMpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOworfQorCisvKgorICogRGVmYXVsdCB0YWJsZSBtb2RpZnkgaW5zZXJ0IHNwZWNp ZmljIGNhbGxiYWNrIHVzZWQgZm9yIHBlcmZvcm1pbmcgd29yayBhdAorICogdGhlIGVuZCBsaWtl IGNsZWFuaW5nIHVwIHRoZSBidWxrIGluc2VydCBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK2Rl ZmF1bHRfdGFibGVfbW9kaWZ5X2luc2VydF9lbmQoVGFibGVNb2RpZnlTdGF0ZSAqc3RhdGUpCit7 CisJaWYgKHN0YXRlLT5kYXRhICE9IE5VTEwpCisJCUZyZWVCdWxrSW5zZXJ0U3RhdGUoKEJ1bGtJ bnNlcnRTdGF0ZSkgc3RhdGUtPmRhdGEpOworfQorCisvKgorICogQ2xlYW4gZGVmYXVsdCB0YWJs ZSBtb2RpZnkgc3RhdGUuCisgKi8KK3ZvaWQKK2RlZmF1bHRfdGFibGVfbW9kaWZ5X2VuZChUYWJs ZU1vZGlmeVN0YXRlICpzdGF0ZSkKK3sKKwlpZiAoc3RhdGUtPm1vZGlmeV9lbmRfY2IgIT0gTlVM TCkKKwkJc3RhdGUtPm1vZGlmeV9lbmRfY2Ioc3RhdGUpOworCisJTWVtb3J5Q29udGV4dERlbGV0 ZShzdGF0ZS0+bWN0eCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUv dGFibGVhbWFwaS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW1hcGkuYwppbmRl eCA1NWI4Y2FlYWRmLi45YzA5NWI5M2U3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dGFibGUvdGFibGVhbWFwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt YXBpLmMKQEAgLTk1LDYgKzk1LDE0IEBAIEdldFRhYmxlQW1Sb3V0aW5lKE9pZCBhbWhhbmRsZXIp CiAJQXNzZXJ0KHJvdXRpbmUtPnNjYW5fc2FtcGxlX25leHRfYmxvY2sgIT0gTlVMTCk7CiAJQXNz ZXJ0KHJvdXRpbmUtPnNjYW5fc2FtcGxlX25leHRfdHVwbGUgIT0gTlVMTCk7CiAKKwkvKiBvcHRp b25hbCwgYnV0IGVpdGhlciBhbGwgb2YgdGhlbSBhcmUgZGVmaW5lZCBvciBub25lLiAqLworCUFz c2VydCgocm91dGluZS0+dHVwbGVfbW9kaWZ5X2JlZ2luID09IE5VTEwgJiYKKwkJCXJvdXRpbmUt PnR1cGxlX21vZGlmeV9idWZmZXJfaW5zZXJ0ID09IE5VTEwgJiYKKwkJCXJvdXRpbmUtPnR1cGxl X21vZGlmeV9lbmQgPT0gTlVMTCkgfHwKKwkJICAgKHJvdXRpbmUtPnR1cGxlX21vZGlmeV9iZWdp biAhPSBOVUxMICYmCisJCQlyb3V0aW5lLT50dXBsZV9tb2RpZnlfYnVmZmVyX2luc2VydCAhPSBO VUxMICYmCisJCQlyb3V0aW5lLT50dXBsZV9tb2RpZnlfZW5kICE9IE5VTEwpKTsKKwogCXJldHVy biByb3V0aW5lOwogfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggYjYzMmZlOTUzYy4uYjM1YmE1NTA5 YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMjM2LDYgKzIzNiwzNiBAQCBodHN2X2dldF92YWxpZF9z dGF0dXMoaW50IHN0YXR1cykKIAlyZXR1cm4gKEhUU1ZfUmVzdWx0KSBzdGF0dXM7CiB9CiAKKy8q CisgKiBNYXhpbXVtIG51bWJlciBvZiBzbG90cyB0aGF0IG11bHRpLWluc2VydCBidWZmZXJzIGNh biBob2xkLgorICoKKyAqIENhdXRpb246IERvbid0IG1ha2UgdGhpcyB0b28gYmlnLCBhcyB3ZSBj b3VsZCBlbmQgdXAgd2l0aCB0aGlzIG1hbnkgdHVwbGVzCisgKiBzdG9yZWQgaW4gbXVsdGkgaW5z ZXJ0IGJ1ZmZlci4KKyAqLworI2RlZmluZSBIRUFQX01BWF9CVUZGRVJFRF9TTE9UUwkJMTAwMAor CisvKiBNYXhpbXVtIHNpemUgb2YgYWxsIHR1cGxlcyB0aGF0IG11bHRpLWluc2VydCBidWZmZXJz IGNhbiBob2xkICovCisjZGVmaW5lIEhFQVBfTUFYX0JVRkZFUkVEX0JZVEVTCQk2NTUzNQorCit0 eXBlZGVmIHN0cnVjdCBIZWFwTXVsdGlJbnNlcnRTdGF0ZQoreworCS8qIEFycmF5IG9mIGJ1ZmZl cmVkIHNsb3RzICovCisJVHVwbGVUYWJsZVNsb3QgKipzbG90czsKKworCS8qIE51bWJlciBvZiBi dWZmZXJlZCBzbG90cyBjdXJyZW50bHkgaGVsZCAqLworCWludAkJCWN1cl9zbG90czsKKworCS8q IEFwcHJveGltYXRlIHNpemUgb2YgYWxsIHR1cGxlcyBjdXJyZW50bHkgaGVsZCBpbiBidWZmZXJl ZCBzbG90cyAqLworCVNpemUJCWN1cl9zaXplOworfSBIZWFwTXVsdGlJbnNlcnRTdGF0ZTsKKwor dHlwZWRlZiBzdHJ1Y3QgSGVhcEluc2VydFN0YXRlCit7CisJc3RydWN0IEJ1bGtJbnNlcnRTdGF0 ZURhdGEgKmJpc3RhdGU7CisJSGVhcE11bHRpSW5zZXJ0U3RhdGUgKm1pc3RhdGU7Cit9IEhlYXBJ bnNlcnRTdGF0ZTsKKworCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKgkJZnVuY3Rpb24gcHJvdG90 eXBlcyBmb3IgaGVhcCBhY2Nlc3MgbWV0aG9kCiAgKgpAQCAtMjg2LDYgKzMxNiwxNyBAQCBleHRl cm4gdm9pZCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCwgQ29t bWFuZElkIGNpZCwKIGV4dGVybiB2b2lkIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0 aW9uLCBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3QgKipzbG90cywKIAkJCQkJCQkgIGludCBudHVwbGVz LCBDb21tYW5kSWQgY2lkLCBpbnQgb3B0aW9ucywKIAkJCQkJCQkgIEJ1bGtJbnNlcnRTdGF0ZSBi aXN0YXRlLCBib29sICppbnNlcnRfaW5kZXhlcyk7CisKK2V4dGVybiBUYWJsZU1vZGlmeVN0YXRl ICpoZWFwX21vZGlmeV9iZWdpbihSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkJICAgaW50IG1vZGlm eV9mbGFncywKKwkJCQkJCQkJCQkgICBDb21tYW5kSWQgY2lkLAorCQkJCQkJCQkJCSAgIGludCBv cHRpb25zKTsKKworZXh0ZXJuIHZvaWQgaGVhcF9tb2RpZnlfYnVmZmVyX2luc2VydChUYWJsZU1v ZGlmeVN0YXRlICpzdGF0ZSwKKwkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworCitl eHRlcm4gdm9pZCBoZWFwX21vZGlmeV9lbmQoVGFibGVNb2RpZnlTdGF0ZSAqc3RhdGUpOworCiBl eHRlcm4gVE1fUmVzdWx0IGhlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRl ciB0aWQsCiAJCQkJCQkJIENvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hlY2ssIGludCBv cHRpb25zLAogCQkJCQkJCSBzdHJ1Y3QgVE1fRmFpbHVyZURhdGEgKnRtZmQsIGJvb2wgY2hhbmdp bmdQYXJ0LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggMmMxYTU0MDE1NS4uZmVmOTIwMjAyMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oCkBAIC0yNDgsNiArMjQ4LDM1IEBAIHR5cGVkZWYgc3RydWN0IFRNX0lu ZGV4RGVsZXRlT3AKIAlUTV9JbmRleFN0YXR1cyAqc3RhdHVzOwogfSBUTV9JbmRleERlbGV0ZU9w OwogCisvKiBUYWJsZSBtb2RpZnkgZmxhZ3MgKi8KKworLyogVXNlIG11bHRpIGluc2VydHMsIGku ZS4gYnVmZmVyIG11bHRpcGxlIHR1cGxlcyBhbmQgaW5zZXJ0IHRoZW0gYXQgb25jZSAqLworI2Rl ZmluZSBUTV9GTEFHX01VTFRJX0lOU0VSVFMJMHgwMDAwMDEKKworLyogVXNlIEJBU19CVUxLV1JJ VEUgYnVmZmVyIGFjY2VzcyBzdHJhdGVneSAqLworI2RlZmluZSBUTV9GTEFHX0JBU19CVUxLV1JJ VEUJMHgwMDAwMDIKKworc3RydWN0IFRhYmxlTW9kaWZ5U3RhdGU7CisKKy8qIFRhYmxlIEFNIHNw ZWNpZmljIGNhbGxiYWNrIHRoYXQgZ2V0cyBjYWxsZWQgaW4gdGFibGVfbW9kaWZ5X2VuZCgpICov Cit0eXBlZGVmIHZvaWQgKCpUYWJsZU1vZGlmeUVuZENQKSAoc3RydWN0IFRhYmxlTW9kaWZ5U3Rh dGUgKnN0YXRlKTsKKworLyogSG9sZHMgdGFibGUgbW9kaWZ5IHN0YXRlICovCit0eXBlZGVmIHN0 cnVjdCBUYWJsZU1vZGlmeVN0YXRlCit7CisJUmVsYXRpb24JcmVsOworCWludAkJCW1vZGlmeV9m bGFnczsKKwlNZW1vcnlDb250ZXh0IG1jdHg7CisJQ29tbWFuZElkCWNpZDsKKwlpbnQJCQlvcHRp b25zOworCWJvb2wJCWluc2VydF9pbmRleGVzOworCisJLyogVGFibGUgQU0gc3BlY2lmaWMgZGF0 YSBzdGFydHMgaGVyZSAqLworCXZvaWQJICAgKmRhdGE7CisKKwlUYWJsZU1vZGlmeUVuZENQIG1v ZGlmeV9lbmRfY2I7Cit9IFRhYmxlTW9kaWZ5U3RhdGU7CisKIC8qICJvcHRpb25zIiBmbGFnIGJp dHMgZm9yIHRhYmxlX3R1cGxlX2luc2VydCAqLwogLyogVEFCTEVfSU5TRVJUX1NLSVBfV0FMIHdh cyAweDAwMDE7IFJlbGF0aW9uTmVlZHNXQUwoKSBub3cgZ292ZXJucyAqLwogI2RlZmluZSBUQUJM RV9JTlNFUlRfU0tJUF9GU00JCTB4MDAwMgpAQCAtNTg0LDYgKzYxMywxOCBAQCB0eXBlZGVmIHN0 cnVjdCBUYWJsZUFtUm91dGluZQogCXZvaWQJCSgqZmluaXNoX2J1bGtfaW5zZXJ0KSAoUmVsYXRp b24gcmVsLCBpbnQgb3B0aW9ucyk7CiAKIAorCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAqIFRhYmxl IE1vZGlmeSByZWxhdGVkIGZ1bmN0aW9ucy4KKwkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgKi8KKwlU YWJsZU1vZGlmeVN0YXRlICooKnR1cGxlX21vZGlmeV9iZWdpbikgKFJlbGF0aW9uIHJlbCwKKwkJ CQkJCQkJCQkJIGludCBtb2RpZnlfZmxhZ3MsCisJCQkJCQkJCQkJCSBDb21tYW5kSWQgY2lkLAor CQkJCQkJCQkJCQkgaW50IG9wdGlvbnMpOworCXZvaWQJCSgqdHVwbGVfbW9kaWZ5X2J1ZmZlcl9p bnNlcnQpIChUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZSwKKwkJCQkJCQkJCQkJICAgVHVwbGVUYWJs ZVNsb3QgKnNsb3QpOworCXZvaWQJCSgqdHVwbGVfbW9kaWZ5X2VuZCkgKFRhYmxlTW9kaWZ5U3Rh dGUgKnN0YXRlKTsKKwogCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCSAqIERETCByZWxhdGVkIGZ1bmN0 aW9uYWxpdHkuCiAJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNjA0LDYgKzE2NDUsNzMgQEAgdGFi bGVfZmluaXNoX2J1bGtfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgaW50IG9wdGlvbnMpCiAJCXJlbC0+ cmRfdGFibGVhbS0+ZmluaXNoX2J1bGtfaW5zZXJ0KHJlbCwgb3B0aW9ucyk7CiB9CiAKKy8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICogVGFibGUgTW9kaWZ5IHJlbGF0ZWQgZnVuY3Rpb25zLgorICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KK2V4dGVybiBUYWJsZU1vZGlmeVN0YXRlICpkZWZhdWx0X3RhYmxl X21vZGlmeV9iZWdpbihSZWxhdGlvbiByZWwsIGludCBtb2RpZnlfZmxhZ3MsCisJCQkJCQkJCQkJ CQkJQ29tbWFuZElkIGNpZCwgaW50IG9wdGlvbnMpOworZXh0ZXJuIHZvaWQJZGVmYXVsdF90YWJs ZV9tb2RpZnlfYnVmZmVyX2luc2VydChUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZSwKKwkJCQkJCQkJ CQkJICAgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworZXh0ZXJuIHZvaWQgZGVmYXVsdF90YWJsZV9t b2RpZnlfZW5kKFRhYmxlTW9kaWZ5U3RhdGUgKnN0YXRlKTsKKworc3RhdGljIGlubGluZSBUYWJs ZU1vZGlmeVN0YXRlICoKK3RhYmxlX21vZGlmeV9iZWdpbihSZWxhdGlvbiByZWwsIGludCBtb2Rp ZnlfZmxhZ3MsIENvbW1hbmRJZCBjaWQsIGludCBvcHRpb25zKQoreworCWlmIChyZWwtPnJkX3Rh YmxlYW0gJiYKKwkJcmVsLT5yZF90YWJsZWFtLT50dXBsZV9tb2RpZnlfYmVnaW4gIT0gTlVMTCkK Kwl7CisJCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnR1cGxlX21vZGlmeV9iZWdpbihyZWwsIG1v ZGlmeV9mbGFncywKKwkJCQkJCQkJCQkJCSAgIGNpZCwgb3B0aW9ucyk7CisJfQorCWVsc2UgaWYg KHJlbC0+cmRfdGFibGVhbSAmJgorCQkJIHJlbC0+cmRfdGFibGVhbS0+dHVwbGVfbW9kaWZ5X2Jl Z2luID09IE5VTEwpCisJeworCQkvKiBGYWxsYmFjayB0byBhIGRlZmF1bHQgaW1wbGVtZW50YXRp b24gKi8KKwkJcmV0dXJuIGRlZmF1bHRfdGFibGVfbW9kaWZ5X2JlZ2luKHJlbCwgbW9kaWZ5X2Zs YWdzLAorCQkJCQkJCQkJCSAgY2lkLCBvcHRpb25zKTsKKwl9CisJZWxzZQorCQlBc3NlcnQoZmFs c2UpOworCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordGFibGVfbW9k aWZ5X2J1ZmZlcl9pbnNlcnQoVGFibGVNb2RpZnlTdGF0ZSAqc3RhdGUsIFR1cGxlVGFibGVTbG90 ICpzbG90KQoreworCWlmIChzdGF0ZS0+cmVsLT5yZF90YWJsZWFtICYmCisJCXN0YXRlLT5yZWwt PnJkX3RhYmxlYW0tPnR1cGxlX21vZGlmeV9idWZmZXJfaW5zZXJ0ICE9IE5VTEwpCisJeworCQlz dGF0ZS0+cmVsLT5yZF90YWJsZWFtLT50dXBsZV9tb2RpZnlfYnVmZmVyX2luc2VydChzdGF0ZSwg c2xvdCk7CisJfQorCWVsc2UgaWYgKHN0YXRlLT5yZWwtPnJkX3RhYmxlYW0gJiYKKwkJCSBzdGF0 ZS0+cmVsLT5yZF90YWJsZWFtLT50dXBsZV9tb2RpZnlfYnVmZmVyX2luc2VydCA9PSBOVUxMKQor CXsKKwkJLyogRmFsbGJhY2sgdG8gYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uICovCisJCWRlZmF1 bHRfdGFibGVfbW9kaWZ5X2J1ZmZlcl9pbnNlcnQoc3RhdGUsIHNsb3QpOworCX0KKwllbHNlCisJ CUFzc2VydChmYWxzZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordGFibGVfbW9kaWZ5X2Vu ZChUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZSkKK3sKKwlpZiAoc3RhdGUtPnJlbC0+cmRfdGFibGVh bSAmJgorCQlzdGF0ZS0+cmVsLT5yZF90YWJsZWFtLT50dXBsZV9tb2RpZnlfZW5kICE9IE5VTEwp CisJeworCQlzdGF0ZS0+cmVsLT5yZF90YWJsZWFtLT50dXBsZV9tb2RpZnlfZW5kKHN0YXRlKTsK Kwl9CisJZWxzZSBpZiAoc3RhdGUtPnJlbC0+cmRfdGFibGVhbSAmJgorCQkJIHN0YXRlLT5yZWwt PnJkX3RhYmxlYW0tPnR1cGxlX21vZGlmeV9lbmQgPT0gTlVMTCkKKwl7CisJCS8qIEZhbGxiYWNr IHRvIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAqLworCQlkZWZhdWx0X3RhYmxlX21vZGlmeV9l bmQoc3RhdGUpOworCX0KKwllbHNlCisJCUFzc2VydChmYWxzZSk7Cit9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICogRERMIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4KZGlmZiAtLWdpdCBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKaW5kZXggMmIwMWEzMDgxZS4uZWRhYTRkMjZmMCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKQEAgLTExMjMsNiArMTEyMyw4IEBAIEhlYWRsaW5lSnNvblN0YXRlCiBIZWFkbGluZVBh cnNlZFRleHQKIEhlYWRsaW5lV29yZEVudHJ5CiBIZWFwQ2hlY2tDb250ZXh0CitIZWFwSW5zZXJ0 U3RhdGUKK0hlYXBNdWx0aUluc2VydFN0YXRlCiBIZWFwUGFnZUZyZWV6ZQogSGVhcFNjYW5EZXNj CiBIZWFwVHVwbGUKQEAgLTI4MTQsNiArMjgxNiw3IEBAIFRhYmxlRnVuY1NjYW4KIFRhYmxlRnVu Y1NjYW5TdGF0ZQogVGFibGVJbmZvCiBUYWJsZUxpa2VDbGF1c2UKK1RhYmxlTW9kaWZ5U3RhdGUK IFRhYmxlU2FtcGxlQ2xhdXNlCiBUYWJsZVNjYW5EZXNjCiBUYWJsZVNjYW5EZXNjRGF0YQotLSAK Mi4zNC4xCgo= --0000000000000975c806153052b1 Content-Type: application/x-patch; name="v18-0002-Optimize-CTAS-CMV-RMV-with-multi-inserts.patch" Content-Disposition: attachment; filename="v18-0002-Optimize-CTAS-CMV-RMV-with-multi-inserts.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lujrcm9h1 RnJvbSA3Y2JiMDYzMGVjMmNmZDI3ODM4NDY3NjUzNjU3N2NmNDQ1YzBhMDkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMyBBcHIgMjAyNCAxMTo1NjozMSArMDAw MApTdWJqZWN0OiBbUEFUQ0ggdjE4IDIvMl0gT3B0aW1pemUgQ1RBUywgQ01WLCBSTVYgd2l0aCBt dWx0aSBpbnNlcnRzCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgfCAyNyAr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcu YyAgfCAyNiArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBp bnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwppbmRl eCBhZmQzZGFjZTA3Li4wMGMxMjcxZjkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKQEAgLTUz LDkgKzUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkvKiBUaGVzZSBmaWVsZHMgYXJlIGZpbGxlZCBi eSBpbnRvcmVsX3N0YXJ0dXA6ICovCiAJUmVsYXRpb24JcmVsOwkJCS8qIHJlbGF0aW9uIHRvIHdy aXRlIHRvICovCiAJT2JqZWN0QWRkcmVzcyByZWxhZGRyOwkJLyogYWRkcmVzcyBvZiByZWwsIGZv ciBFeGVjQ3JlYXRlVGFibGVBcyAqLwotCUNvbW1hbmRJZAlvdXRwdXRfY2lkOwkJLyogY21pbiB0 byBpbnNlcnQgaW4gb3V0cHV0IHR1cGxlcyAqLwotCWludAkJCXRpX29wdGlvbnM7CQkvKiB0YWJs ZV90dXBsZV9pbnNlcnQgcGVyZm9ybWFuY2Ugb3B0aW9ucyAqLwotCUJ1bGtJbnNlcnRTdGF0ZSBi aXN0YXRlOwkvKiBidWxrIGluc2VydCBzdGF0ZSAqLworCVRhYmxlTW9kaWZ5U3RhdGUgKm1zdGF0 ZTsJLyogdGFibGUgaW5zZXJ0IHN0YXRlICovCiB9IERSX2ludG9yZWw7CiAKIC8qIHV0aWxpdHkg ZnVuY3Rpb25zIGZvciBDVEFTIGRlZmluaXRpb24gY3JlYXRpb24gKi8KQEAgLTU1MiwxNyArNTUw LDE5IEBAIGludG9yZWxfc3RhcnR1cChEZXN0UmVjZWl2ZXIgKnNlbGYsIGludCBvcGVyYXRpb24s IFR1cGxlRGVzYyB0eXBlaW5mbykKIAkgKi8KIAlteVN0YXRlLT5yZWwgPSBpbnRvUmVsYXRpb25E ZXNjOwogCW15U3RhdGUtPnJlbGFkZHIgPSBpbnRvUmVsYXRpb25BZGRyOwotCW15U3RhdGUtPm91 dHB1dF9jaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOwotCW15U3RhdGUtPnRpX29wdGlv bnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9GU007CiAKIAkvKgogCSAqIElmIFdJVEggTk8gREFUQSBp cyBzcGVjaWZpZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2V0IHVwIHRoZSBzdGF0ZSBmb3IKIAkg KiBidWxrIGluc2VydHMgYXMgdGhlcmUgYXJlIG5vIHR1cGxlcyB0byBpbnNlcnQuCiAJICovCiAJ aWYgKCFpbnRvLT5za2lwRGF0YSkKLQkJbXlTdGF0ZS0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRT dGF0ZSgpOworCQlteVN0YXRlLT5tc3RhdGUgPSB0YWJsZV9tb2RpZnlfYmVnaW4oaW50b1JlbGF0 aW9uRGVzYywKKwkJCQkJCQkJCQkJIFRNX0ZMQUdfTVVMVElfSU5TRVJUUyB8CisJCQkJCQkJCQkJ CSBUTV9GTEFHX0JBU19CVUxLV1JJVEUsCisJCQkJCQkJCQkJCSBHZXRDdXJyZW50Q29tbWFuZElk KHRydWUpLAorCQkJCQkJCQkJCQkgVEFCTEVfSU5TRVJUX1NLSVBfRlNNKTsKIAllbHNlCi0JCW15 U3RhdGUtPmJpc3RhdGUgPSBOVUxMOworCQlteVN0YXRlLT5tc3RhdGUgPSBOVUxMOwogCiAJLyoK IAkgKiBWYWxpZCBzbWdyX3RhcmdibG9jayBpbXBsaWVzIHNvbWV0aGluZyBhbHJlYWR5IHdyb3Rl IHRvIHRoZSByZWxhdGlvbi4KQEAgLTU3OCw3ICs1NzgsNiBAQCBzdGF0aWMgYm9vbAogaW50b3Jl bF9yZWNlaXZlKFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNlbGYpCiB7CiAJ RFJfaW50b3JlbCAqbXlTdGF0ZSA9IChEUl9pbnRvcmVsICopIHNlbGY7Ci0JYm9vbAkJaW5zZXJ0 SW5kZXhlczsKIAogCS8qIE5vdGhpbmcgdG8gaW5zZXJ0IGlmIFdJVEggTk8gREFUQSBpcyBzcGVj aWZpZWQuICovCiAJaWYgKCFteVN0YXRlLT5pbnRvLT5za2lwRGF0YSkKQEAgLTU5MSwxMiArNTkw LDcgQEAgaW50b3JlbF9yZWNlaXZlKFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIg KnNlbGYpCiAJCSAqIHdvdWxkIG5vdCBiZSBjaGVhcCBlaXRoZXIuIFRoaXMgYWxzbyBkb2Vzbid0 IGFsbG93IGFjY2Vzc2luZyBwZXItQU0KIAkJICogZGF0YSAoc2F5IGEgdHVwbGUncyB4bWluKSwg YnV0IHNpbmNlIHdlIGRvbid0IGRvIHRoYXQgaGVyZS4uLgogCQkgKi8KLQkJdGFibGVfdHVwbGVf aW5zZXJ0KG15U3RhdGUtPnJlbCwKLQkJCQkJCSAgIHNsb3QsCi0JCQkJCQkgICBteVN0YXRlLT5v dXRwdXRfY2lkLAotCQkJCQkJICAgbXlTdGF0ZS0+dGlfb3B0aW9ucywKLQkJCQkJCSAgIG15U3Rh dGUtPmJpc3RhdGUsCi0JCQkJCQkgICAmaW5zZXJ0SW5kZXhlcyk7CisJCXRhYmxlX21vZGlmeV9i dWZmZXJfaW5zZXJ0KG15U3RhdGUtPm1zdGF0ZSwgc2xvdCk7CiAJfQogCiAJLyogV2Uga25vdyB0 aGlzIGlzIGEgbmV3bHkgY3JlYXRlZCByZWxhdGlvbiwgc28gdGhlcmUgYXJlIG5vIGluZGV4ZXMg Ki8KQEAgLTYxNCwxMCArNjA4LDcgQEAgaW50b3JlbF9zaHV0ZG93bihEZXN0UmVjZWl2ZXIgKnNl bGYpCiAJSW50b0NsYXVzZSAqaW50byA9IG15U3RhdGUtPmludG87CiAKIAlpZiAoIWludG8tPnNr aXBEYXRhKQotCXsKLQkJRnJlZUJ1bGtJbnNlcnRTdGF0ZShteVN0YXRlLT5iaXN0YXRlKTsKLQkJ dGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KG15U3RhdGUtPnJlbCwgbXlTdGF0ZS0+dGlfb3B0aW9u cyk7Ci0JfQorCQl0YWJsZV9tb2RpZnlfZW5kKG15U3RhdGUtPm1zdGF0ZSk7CiAKIAkvKiBjbG9z ZSByZWwsIGJ1dCBrZWVwIGxvY2sgdW50aWwgY29tbWl0ICovCiAJdGFibGVfY2xvc2UobXlTdGF0 ZS0+cmVsLCBOb0xvY2spOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmll dy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IDllYzEzZDA5ODQuLmYw M2FhMWNmZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQ4LDkgKzQ4LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QKIAlPaWQJCQl0cmFuc2llbnRvaWQ7CS8qIE9JRCBvZiBuZXcgaGVhcCBpbnRvIHdo aWNoIHRvIHN0b3JlICovCiAJLyogVGhlc2UgZmllbGRzIGFyZSBmaWxsZWQgYnkgdHJhbnNpZW50 cmVsX3N0YXJ0dXA6ICovCiAJUmVsYXRpb24JdHJhbnNpZW50cmVsOwkvKiByZWxhdGlvbiB0byB3 cml0ZSB0byAqLwotCUNvbW1hbmRJZAlvdXRwdXRfY2lkOwkJLyogY21pbiB0byBpbnNlcnQgaW4g b3V0cHV0IHR1cGxlcyAqLwotCWludAkJCXRpX29wdGlvbnM7CQkvKiB0YWJsZV90dXBsZV9pbnNl cnQgcGVyZm9ybWFuY2Ugb3B0aW9ucyAqLwotCUJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwkvKiBi dWxrIGluc2VydCBzdGF0ZSAqLworCVRhYmxlTW9kaWZ5U3RhdGUgKm1zdGF0ZTsJLyogdGFibGUg aW5zZXJ0IHN0YXRlICovCiB9IERSX3RyYW5zaWVudHJlbDsKIAogc3RhdGljIGludAltYXR2aWV3 X21haW50ZW5hbmNlX2RlcHRoID0gMDsKQEAgLTQ1OCw5ICs0NTYsMTIgQEAgdHJhbnNpZW50cmVs X3N0YXJ0dXAoRGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3BlcmF0aW9uLCBUdXBsZURlc2MgdHlw ZWluZm8pCiAJICogRmlsbCBwcml2YXRlIGZpZWxkcyBvZiBteVN0YXRlIGZvciB1c2UgYnkgbGF0 ZXIgcm91dGluZXMKIAkgKi8KIAlteVN0YXRlLT50cmFuc2llbnRyZWwgPSB0cmFuc2llbnRyZWw7 Ci0JbXlTdGF0ZS0+b3V0cHV0X2NpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSk7Ci0JbXlT dGF0ZS0+dGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTSB8IFRBQkxFX0lOU0VSVF9G Uk9aRU47Ci0JbXlTdGF0ZS0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCW15U3Rh dGUtPm1zdGF0ZSA9IHRhYmxlX21vZGlmeV9iZWdpbih0cmFuc2llbnRyZWwsCisJCQkJCQkJCQkJ IFRNX0ZMQUdfTVVMVElfSU5TRVJUUyB8CisJCQkJCQkJCQkJIFRNX0ZMQUdfQkFTX0JVTEtXUklU RSwKKwkJCQkJCQkJCQkgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKKwkJCQkJCQkJCQkgVEFC TEVfSU5TRVJUX1NLSVBfRlNNIHwKKwkJCQkJCQkJCQkgVEFCTEVfSU5TRVJUX0ZST1pFTik7CiAK IAkvKgogCSAqIFZhbGlkIHNtZ3JfdGFyZ2Jsb2NrIGltcGxpZXMgc29tZXRoaW5nIGFscmVhZHkg d3JvdGUgdG8gdGhlIHJlbGF0aW9uLgpAQCAtNDc2LDcgKzQ3Nyw2IEBAIHN0YXRpYyBib29sCiB0 cmFuc2llbnRyZWxfcmVjZWl2ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgRGVzdFJlY2VpdmVyICpz ZWxmKQogewogCURSX3RyYW5zaWVudHJlbCAqbXlTdGF0ZSA9IChEUl90cmFuc2llbnRyZWwgKikg c2VsZjsKLQlib29sCQlpbnNlcnRJbmRleGVzOwogCiAJLyoKIAkgKiBOb3RlIHRoYXQgdGhlIGlu cHV0IHNsb3QgbWlnaHQgbm90IGJlIG9mIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQKQEAgLTQ4Niwx MyArNDg2LDcgQEAgdHJhbnNpZW50cmVsX3JlY2VpdmUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIERl c3RSZWNlaXZlciAqc2VsZikKIAkgKiBjaGVhcCBlaXRoZXIuIFRoaXMgYWxzbyBkb2Vzbid0IGFs bG93IGFjY2Vzc2luZyBwZXItQU0gZGF0YSAoc2F5IGEKIAkgKiB0dXBsZSdzIHhtaW4pLCBidXQg c2luY2Ugd2UgZG9uJ3QgZG8gdGhhdCBoZXJlLi4uCiAJICovCi0KLQl0YWJsZV90dXBsZV9pbnNl cnQobXlTdGF0ZS0+dHJhbnNpZW50cmVsLAotCQkJCQkgICBzbG90LAotCQkJCQkgICBteVN0YXRl LT5vdXRwdXRfY2lkLAotCQkJCQkgICBteVN0YXRlLT50aV9vcHRpb25zLAotCQkJCQkgICBteVN0 YXRlLT5iaXN0YXRlLAotCQkJCQkgICAmaW5zZXJ0SW5kZXhlcyk7CisJdGFibGVfbW9kaWZ5X2J1 ZmZlcl9pbnNlcnQobXlTdGF0ZS0+bXN0YXRlLCBzbG90KTsKIAogCS8qIFdlIGtub3cgdGhpcyBp cyBhIG5ld2x5IGNyZWF0ZWQgcmVsYXRpb24sIHNvIHRoZXJlIGFyZSBubyBpbmRleGVzICovCiAK QEAgLTUwNyw5ICs1MDEsNyBAQCB0cmFuc2llbnRyZWxfc2h1dGRvd24oRGVzdFJlY2VpdmVyICpz ZWxmKQogewogCURSX3RyYW5zaWVudHJlbCAqbXlTdGF0ZSA9IChEUl90cmFuc2llbnRyZWwgKikg c2VsZjsKIAotCUZyZWVCdWxrSW5zZXJ0U3RhdGUobXlTdGF0ZS0+YmlzdGF0ZSk7Ci0KLQl0YWJs ZV9maW5pc2hfYnVsa19pbnNlcnQobXlTdGF0ZS0+dHJhbnNpZW50cmVsLCBteVN0YXRlLT50aV9v cHRpb25zKTsKKwl0YWJsZV9tb2RpZnlfZW5kKG15U3RhdGUtPm1zdGF0ZSk7CiAKIAkvKiBjbG9z ZSB0cmFuc2llbnRyZWwsIGJ1dCBrZWVwIGxvY2sgdW50aWwgY29tbWl0ICovCiAJdGFibGVfY2xv c2UobXlTdGF0ZS0+dHJhbnNpZW50cmVsLCBOb0xvY2spOwotLSAKMi4zNC4xCgo= --0000000000000975c806153052b1--