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.96) (envelope-from ) id 1w00jM-001WZn-0d for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Mar 2026 17:18:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w00jK-004tgx-23 for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Mar 2026 17:18:51 +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.96) (envelope-from ) id 1w00jJ-004tgp-1W for pgsql-hackers@lists.postgresql.org; Tue, 10 Mar 2026 17:18:50 +0000 Received: from mail-qk1-x742.google.com ([2607:f8b0:4864:20::742]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w00jF-00000001Tuc-1tE5 for pgsql-hackers@postgresql.org; Tue, 10 Mar 2026 17:18:48 +0000 Received: by mail-qk1-x742.google.com with SMTP id af79cd13be357-8cbc593a67aso1256898785a.2 for ; Tue, 10 Mar 2026 10:18:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1773163124; x=1773767924; darn=postgresql.org; h=in-reply-to:autocrypt:content-language:from:references:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=ZiA06NbfNDl9rntil93jw4JjCIByMwL1kz4DiQQ8quE=; b=KUtm4onE5R+Z9Okdqt5LN4plxucmlbiy9cOY67aaX+OGVxC8BS1yIufHxd1UVeYq4y L7YKfBzhqgcG9XO6GMbBAKfDipCo1Yvar2124tCnXcklvVmZhe263MvklLd4Prr8s+iw xB3IB9KyS5UmC/YE5HCJVDIRTh2wdYdXAmJSQyooRL7Y+x1xhs0j5tcF5hI22t8rQ/4b ZJEfieLQ4Cl0h/0kalo5is3BcvRe4WIbhcx5gwjkGZydoVBB6DHepqL+0FwsOJ0B6MxC nkDnvscXSn4yX7qLMJ3hqJtU55Ldcm+KqkfBZhCfgbIHVqzDYQxV+O8Z3KdVsRwWX7WF UzrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773163124; x=1773767924; h=in-reply-to:autocrypt:content-language:from:references:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ZiA06NbfNDl9rntil93jw4JjCIByMwL1kz4DiQQ8quE=; b=Cauc4SDe5fYNxCgDIjIfDUz8q6IgLA1Ql6a8xlKXgheFlgzfel7VAVM7+JoSTThKOh CENVlJ3RFvOVpYxxyTDriSn6+Fa+0qG4B1t1M39vWHthxD6BGq4P11kUf6MqovKzDClv Q1Lhv+ipx5ddhaOmkkNcnKAXPh/MGGCqR4u817gUg8j46D7VFvoB/k3YyP0P3/3WqrBl kXh6fjiGPMJRE4eQ79loPzQeIR4iUMmeuxrqI0mFjsXJSbkEjRE5VJ5iHRo5T5YZ0nJR u/LiuANommPewATRZs29MN+glfBJOXGnVuilii7ogoBkcvaeNk2ZrfXa4makoC3UcLLM WpTg== X-Forwarded-Encrypted: i=1; AJvYcCXEMQC6PhDxyKGEGz9K9spQJXp9tzz547AmhMV3k2hip1rZdIoj5RAerb8TiZogMy/Ce6Vq6DOQASX4BfpP@postgresql.org X-Gm-Message-State: AOJu0YwGtMIRxBBwMEWOJG3+34lDLSbv4OPhV19m67QiitJ3Tn/y2Wbh k/kpDFyYanOgm3npypk8NYTHDR+NEyCCvW2RbG9QTQHVuASdcmLkZexamqA5vbZIGLI= X-Gm-Gg: ATEYQzzpLneFUrmvrj62Lhw4+41CZCg30uHQlOE4MYDTUGIomiYJWG1hCZCacl+dTtG OGKMiljzHL7Z3h2mApKNGDGOnkzWglBVK9GwJU3VhPou+no4MTBYALKDDEqEBwXWXRRADYT7p63 D3h/4dG/UBWALvdqjUSGpKCwhGkhJfFm0BOH3MtHtM/Tuc/FFU3WfJTk9diHXIpNN0dOcfPrt/u G4WGZ4iHe0UatnGCXgcQXCq/QG2gLmEiq5aIYKzIZADDwmOzpcBYKgOxrrdQgFQV4stRyVkO6hr vUfc6e19zwPT7LjcFX9hH4AHGy1C/DH3htJD4juFjgl1b42R/VRZYITVeMejLob6INE+UNRhrjQ QcnvuQva2PmmKDEur9e82M6pchFuHgOUo62C6UW2Ce6SYvYY0gNCCHZmyxOzTuND+eiBqrTwf1A YazAFShR/qcCbTqm5Zp79xpO8cyeg1DA== X-Received: by 2002:a05:622a:e:b0:509:382c:1c63 with SMTP id d75a77b69052e-509382c3404mr843091cf.17.1773163123839; Tue, 10 Mar 2026 10:18:43 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id 6a1803df08f44-89a57a1bac1sm23402156d6.1.2026.03.10.10.18.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 10 Mar 2026 10:18:43 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------YGQAl5r3EWC400wr3KZ1RG0h" Message-ID: Date: Tue, 10 Mar 2026 13:18:42 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: support fast default for domain with constraints To: jian he , PostgreSQL-development References: <229413.1741144420@sss.pgh.pa.us> From: Andrew Dunstan Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------YGQAl5r3EWC400wr3KZ1RG0h Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2026-01-26 Mo 2:52 AM, jian he wrote: > On Mon, Sep 1, 2025 at 2:27 PM jian he wrote: >> summary of the attached v7. >> v7-0001, v7-00002: preparatory patch. >> v7-0003 adds fast default support for ALTER TABLE ADD COLUMN when the domain has >> non-volatile constraints. >> A table rewrite is still required for domains with volatile constraints. >> >> v7-0004 skip table rewrite (table scan only) for ALTER TABLE ADD >> COLUMN with domains has volatile constraints. >> > Hi. > > rebase, and further simplified. > > maybe we could perform a table scan for ALTER TABLE ADD COLUMN when the domain > has volatile constraints like v7-0004, avoiding a table rewrite. > However, this approach > feels inelegant, so I do not plan to pursue it. > > So, the fast default now applies to domains with non-volatile constraint > expressions only. > > Regarding the prior discussion about empty table behavior. This patch is > consistent with the master: not throwing an error if the default would fail the > domain constraints. > > > here's an updated patch set. main changes: . renamed DomainHaveVolatileConstraints renamed to DomainHasVolatileConstraints, improved the comments and code structure . squashed two commits into one, as there's only one user for the soft-error functions . rename  ExecPrepareExprExtended to ExecPrepareExprWithContext and ExecInitExprExtended to ExecInitExprWithContext, with improved comments. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------YGQAl5r3EWC400wr3KZ1RG0h Content-Type: text/x-patch; charset=UTF-8; name="v9-0001-Add-DomainHasVolatileConstraints-to-check-constraint.patch" Content-Disposition: attachment; filename*0="v9-0001-Add-DomainHasVolatileConstraints-to-check-constraint"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSAwNWZiZWQwZDlhN2Q3NDAyYzdhOWY3ZDc4MjQwNWVmOWI1ZmY1OWY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+CkRhdGU6IFR1ZSwgMTAgTWFyIDIwMjYgMTE6MDY6NTMgLTA0MDAKU3ViamVjdDog W3Y5IDEvMl0gQWRkIERvbWFpbkhhc1ZvbGF0aWxlQ29uc3RyYWludHMoKSB0byBjaGVjayBj b25zdHJhaW50CiB2b2xhdGlsaXR5CgpBZGQgYSB1dGlsaXR5IGZ1bmN0aW9uIHRoYXQgY2hl Y2tzIHdoZXRoZXIgYSBkb21haW4gdHlwZSBoYXMgYW55CmNvbnN0cmFpbnRzLCBhbmQgb3B0 aW9uYWxseSB3aGV0aGVyIGFueSBDSEVDSyBjb25zdHJhaW50IGNvbnRhaW5zCnZvbGF0aWxl IGV4cHJlc3Npb25zLiAgVGhpcyBpcyBuZWVkZWQgYnkgYSBzdWJzZXF1ZW50IGNvbW1pdCB0 aGF0CmVuYWJsZXMgdGhlIGZhc3QgZGVmYXVsdCBvcHRpbWl6YXRpb24gZm9yIGRvbWFpbnMg d2l0aCBub24tdm9sYXRpbGUKY29uc3RyYWludHM6IHdlIGNhbiBzYWZlbHkgZXZhbHVhdGUg c3VjaCBjb25zdHJhaW50cyBvbmNlIGF0IEFMVEVSIFRBQkxFCnRpbWUsIGJ1dCB2b2xhdGls ZSBjb25zdHJhaW50cyByZXF1aXJlIGEgZnVsbCB0YWJsZSByZXdyaXRlLgoKRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUNKdWZ4RV8raVpCUjFpNDlrX0FIaWdwcFB3TFRK aTZrbThOT3NDN0ZXdktkRW1tWGdAbWFpbC5nbWFpbC5jb20KQ29tbWl0ZmVzdDogaHR0cHM6 Ly9jb21taXRmZXN0LnBvc3RncmVzcWwub3JnL3BhdGNoLzU2NDEKLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS90eXBjYWNoZS5jIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBzcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oICAgICAgIHwgIDEgKwogMiBm aWxlcyBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5 cGNhY2hlLmMKaW5kZXggNjI3ZTUzNDYwOWEuLmUzM2Q0YjgwN2JkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTE1MDIsNiArMTUwMiw1MSBAQCBEb21haW5IYXND b25zdHJhaW50cyhPaWQgdHlwZV9pZCkKIH0KIAogCisvKgorICogRG9tYWluSGFzVm9sYXRp bGVDb25zdHJhaW50cyAtLS0gY2hlY2sgaWYgYSBkb21haW4gaGFzIGNvbnN0cmFpbnRzIHdp dGgKKyAqIHZvbGF0aWxlIGV4cHJlc3Npb25zCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRo ZSBkb21haW4gaGFzIGFueSBjb25zdHJhaW50cyBhdCBhbGwuICBJZiBoYXZlX3ZvbGF0aWxl CisgKiBpcyBub3QgTlVMTCwgYWxzbyBjaGVja3Mgd2hldGhlciBhbnkgQ0hFQ0sgY29uc3Ry YWludCBjb250YWlucyBhIHZvbGF0aWxlCisgKiBleHByZXNzaW9uIGFuZCBzZXRzICpoYXZl X3ZvbGF0aWxlIGFjY29yZGluZ2x5LgorICoKKyAqIFRoZSBjYWxsZXIgbXVzdCBpbml0aWFs aXplICpoYXZlX3ZvbGF0aWxlIGJlZm9yZSBjYWxsaW5nICh0eXBpY2FsbHkgdG8KKyAqIGZh bHNlKS4gIFRoaXMgZnVuY3Rpb24gb25seSBldmVyIHNldHMgaXQgdG8gdHJ1ZSwgbmV2ZXIg dG8gZmFsc2UuCisgKgorICogVGhpcyBpcyBkZWZpbmVkIHRvIHJldHVybiBmYWxzZSwgbm90 IGZhaWwsIGlmIHR5cGUgaXMgbm90IGEgZG9tYWluLgorICovCitib29sCitEb21haW5IYXNW b2xhdGlsZUNvbnN0cmFpbnRzKE9pZCB0eXBlX2lkLCBib29sICpoYXZlX3ZvbGF0aWxlKQor eworCS8qCisJICogTm90ZTogYSBzaWRlIGVmZmVjdCBpcyB0byBjYXVzZSB0aGUgdHlwY2Fj aGUncyBkb21haW4gZGF0YSB0byBiZWNvbWUKKwkgKiB2YWxpZC4gIFRoaXMgaXMgZmluZSBz aW5jZSB3ZSdsbCBsaWtlbHkgbmVlZCBpdCBzb29uIGlmIHRoZXJlIGlzIGFueS4KKwkgKi8K KwlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZSh0eXBlX2lk LCBUWVBFQ0FDSEVfRE9NQUlOX0NPTlNUUl9JTkZPKTsKKworCWlmICh0eXBlbnRyeS0+ZG9t YWluRGF0YSAhPSBOVUxMKQorCXsKKwkJaWYgKGhhdmVfdm9sYXRpbGUpCisJCXsKKwkJCWZv cmVhY2hfbm9kZShEb21haW5Db25zdHJhaW50U3RhdGUsIGNvbnN0cnN0YXRlLAorCQkJCQkJ IHR5cGVudHJ5LT5kb21haW5EYXRhLT5jb25zdHJhaW50cykKKwkJCXsKKwkJCQlpZiAoY29u c3Ryc3RhdGUtPmNvbnN0cmFpbnR0eXBlID09IERPTV9DT05TVFJBSU5UX0NIRUNLICYmCisJ CQkJCWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChOb2RlICopIGNvbnN0cnN0YXRlLT5j aGVja19leHByKSkKKwkJCQl7CisJCQkJCSpoYXZlX3ZvbGF0aWxlID0gdHJ1ZTsKKwkJCQkJ YnJlYWs7CisJCQkJfQorCQkJfQorCQl9CisKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0 dXJuIGZhbHNlOworfQorCisKIC8qCiAgKiBhcnJheV9lbGVtZW50X2hhc19lcXVhbGl0eSBh bmQgZnJpZW5kcyBhcmUgaGVscGVyIHJvdXRpbmVzIHRvIGNoZWNrCiAgKiB3aGV0aGVyIHdl IHNob3VsZCBiZWxpZXZlIHRoYXQgYXJyYXlfZXEgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHdp bGwgd29yawpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKaW5kZXggMGUzOTQ1YWEyNDQuLjM4MzY2ZmYx NTllIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKQEAgLTE4NCw2ICsxODQsNyBAQCBleHRlcm4g dm9pZCBJbml0RG9tYWluQ29uc3RyYWludFJlZihPaWQgdHlwZV9pZCwgRG9tYWluQ29uc3Ry YWludFJlZiAqcmVmLAogZXh0ZXJuIHZvaWQgVXBkYXRlRG9tYWluQ29uc3RyYWludFJlZihE b21haW5Db25zdHJhaW50UmVmICpyZWYpOwogCiBleHRlcm4gYm9vbCBEb21haW5IYXNDb25z dHJhaW50cyhPaWQgdHlwZV9pZCk7CitleHRlcm4gYm9vbCBEb21haW5IYXNWb2xhdGlsZUNv bnN0cmFpbnRzKE9pZCB0eXBlX2lkLCBib29sICpoYXZlX3ZvbGF0aWxlKTsKIAogZXh0ZXJu IFR1cGxlRGVzYyBsb29rdXBfcm93dHlwZV90dXBkZXNjKE9pZCB0eXBlX2lkLCBpbnQzMiB0 eXBtb2QpOwogCi0tIAoyLjQzLjAKCg== --------------YGQAl5r3EWC400wr3KZ1RG0h Content-Type: text/x-patch; charset=UTF-8; name="v9-0002-Enable-fast-default-for-domains-with-non-volatile-co.patch" Content-Disposition: attachment; filename*0="v9-0002-Enable-fast-default-for-domains-with-non-volatile-co"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSAzZjE0OGY0YmU1MDg2MjE4NWE1N2JhNDczYzk5MDQ3OTcyM2JkNWU4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+CkRhdGU6IFR1ZSwgMTAgTWFyIDIwMjYgMTE6MDg6MjkgLTA0MDAKU3ViamVjdDog W3Y5IDIvMl0gRW5hYmxlIGZhc3QgZGVmYXVsdCBmb3IgZG9tYWlucyB3aXRoIG5vbi12b2xh dGlsZQogY29uc3RyYWludHMKClByZXZpb3VzbHksIEFMVEVSIFRBQkxFIEFERCBDT0xVTU4g YWx3YXlzIGZvcmNlZCBhIHRhYmxlIHJld3JpdGUgd2hlbgp0aGUgY29sdW1uIHR5cGUgd2Fz IGEgZG9tYWluIHdpdGggY29uc3RyYWludHMgKENIRUNLIG9yIE5PVCBOVUxMKSwgZXZlbgpp ZiB0aGUgZGVmYXVsdCB2YWx1ZSBzYXRpc2ZpZWQgdGhvc2UgY29uc3RyYWludHMuICBUaGlz IHdhcyBiZWNhdXNlCmNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKCkgY29uc2lkZXJzIENv ZXJjZVRvRG9tYWluIGltbXV0YWJsZSwgc28KdGhlIGNvZGUgY29uc2VydmF0aXZlbHkgYXNz dW1lZCBhbnkgY29uc3RyYWluZWQgZG9tYWluIG1pZ2h0IGZhaWwuCgpJbXByb3ZlIHRoaXMg YnkgdXNpbmcgc29mdCBlcnJvciBoYW5kbGluZyAoRXJyb3JTYXZlQ29udGV4dCkgdG8gZXZh bHVhdGUKdGhlIENvZXJjZVRvRG9tYWluIGV4cHJlc3Npb24gYXQgQUxURVIgVEFCTEUgdGlt ZS4gIElmIHRoZSBkZWZhdWx0IHZhbHVlCnBhc3NlcyB0aGUgZG9tYWluJ3MgY29uc3RyYWlu dHMsIHRoZSB2YWx1ZSBpcyBzdG9yZWQgYXMgYSAibWlzc2luZyIKYXR0cmlidXRlIGRlZmF1 bHQgYW5kIG5vIHRhYmxlIHJld3JpdGUgaXMgbmVlZGVkLiAgSWYgdGhlIGNvbnN0cmFpbnQK Y2hlY2sgZmFpbHMsIHdlIGZhbGwgYmFjayB0byBhIHRhYmxlIHJld3JpdGUsIHByZXNlcnZp bmcgdGhlIGhpc3RvcmljYWwKYmVoYXZpb3IgdGhhdCBjb25zdHJhaW50IHZpb2xhdGlvbnMg YXJlIG9ubHkgcmFpc2VkIHdoZW4gdGhlIHRhYmxlCmFjdHVhbGx5IGNvbnRhaW5zIHJvd3Mu CgpEb21haW5zIHdpdGggdm9sYXRpbGUgY29uc3RyYWludCBleHByZXNzaW9ucyBhbHdheXMg cmVxdWlyZSBhIHRhYmxlCnJld3JpdGUgc2luY2UgdGhlIGNvbnN0cmFpbnQgcmVzdWx0IGNv dWxkIGRpZmZlciBwZXIgZXZhbHVhdGlvbiBhbmQKY2Fubm90IGJlIGNhY2hlZC4KCkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FDSnVmeEVfK2laQlIxaTQ5a19BSGlncHBQ d0xUSmk2a204Tk9zQzdGV3ZLZEVtbVhnQG1haWwuZ21haWwuY29tCkNvbW1pdGZlc3Q6IGh0 dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy9wYXRjaC81NjQxCi0tLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgIHwgNjEgKysrKysrKysrKysr KysrKy0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICAgICAg IHwgMzUgKysrKysrKysrKysrLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAg ICAgICAgICAgIHwgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mYXN0X2RlZmF1 bHQub3V0IHwgNTAgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9m YXN0X2RlZmF1bHQuc3FsICAgICAgfCA0MCArKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFu Z2VkLCAxNzAgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwppbmRleCA4NTI0MmRjYzI0NS4uMmVkYjAzNjQ0OWEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC03NDc4LDE1ICs3NDc4LDYgQEAgQVRFeGVjQWRk Q29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24g cmVsLAogCSAqIE5VTEwgaWYgc28sIHNvIHdpdGhvdXQgYW55IG1vZGlmaWNhdGlvbiBvZiB0 aGUgdHVwbGUgZGF0YSB3ZSB3aWxsIGdldAogCSAqIHRoZSBlZmZlY3Qgb2YgTlVMTCB2YWx1 ZXMgaW4gdGhlIG5ldyBjb2x1bW4uCiAJICoKLQkgKiBBbiBleGNlcHRpb24gb2NjdXJzIHdo ZW4gdGhlIG5ldyBjb2x1bW4gaXMgb2YgYSBkb21haW4gdHlwZTogdGhlIGRvbWFpbgotCSAq IG1pZ2h0IGhhdmUgYSBub3QtbnVsbCBjb25zdHJhaW50LCBvciBhIGNoZWNrIGNvbnN0cmFp bnQgdGhhdCBpbmRpcmVjdGx5Ci0JICogcmVqZWN0cyBudWxscy4gIElmIHRoZXJlIGFyZSBh bnkgZG9tYWluIGNvbnN0cmFpbnRzIHRoZW4gd2UgY29uc3RydWN0Ci0JICogYW4gZXhwbGlj aXQgTlVMTCBkZWZhdWx0IHZhbHVlIHRoYXQgd2lsbCBiZSBwYXNzZWQgdGhyb3VnaAotCSAq IENvZXJjZVRvRG9tYWluIHByb2Nlc3NpbmcuICAoVGhpcyBpcyBhIHRhZCBpbmVmZmljaWVu dCwgc2luY2UgaXQgY2F1c2VzCi0JICogcmV3cml0aW5nIHRoZSB0YWJsZSB3aGljaCB3ZSBy ZWFsbHkgd291bGRuJ3QgaGF2ZSB0byBkbzsgYnV0IHdlIGRvIGl0Ci0JICogdG8gcHJlc2Vy dmUgdGhlIGhpc3RvcmljYWwgYmVoYXZpb3IgdGhhdCBzdWNoIGEgZmFpbHVyZSB3aWxsIGJl IHJhaXNlZAotCSAqIG9ubHkgaWYgdGhlIHRhYmxlIGN1cnJlbnRseSBjb250YWlucyBzb21l IHJvd3MuKQotCSAqCiAJICogTm90ZTogd2UgdXNlIGJ1aWxkX2NvbHVtbl9kZWZhdWx0LCBh bmQgbm90IGp1c3QgdGhlIGNvb2tlZCBkZWZhdWx0CiAJICogcmV0dXJuZWQgYnkgQWRkUmVs YXRpb25OZXdDb25zdHJhaW50cywgc28gdGhhdCB0aGUgcmlnaHQgdGhpbmcgaGFwcGVucwog CSAqIHdoZW4gYSBkYXRhdHlwZSdzIGRlZmF1bHQgYXBwbGllcy4KQEAgLTc1MDUsNiArNzQ5 Niw3IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZv ICp0YWIsIFJlbGF0aW9uIHJlbCwKIAl7CiAJCWJvb2wJCWhhc19kb21haW5fY29uc3RyYWlu dHM7CiAJCWJvb2wJCWhhc19taXNzaW5nID0gZmFsc2U7CisJCWJvb2wJCWhhc192b2xhdGls ZSA9IGZhbHNlOwogCiAJCS8qCiAJCSAqIEZvciBhbiBpZGVudGl0eSBjb2x1bW4sIHdlIGNh bid0IHVzZSBidWlsZF9jb2x1bW5fZGVmYXVsdCgpLApAQCAtNzUyMiw4ICs3NTE0LDIxIEBA IEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIAkJZWxzZQogCQkJZGVmdmFsID0gKEV4cHIgKikgYnVpbGRfY29s dW1uX2RlZmF1bHQocmVsLCBhdHRyaWJ1dGUtPmF0dG51bSk7CiAKKwkJaGFzX2RvbWFpbl9j b25zdHJhaW50cyA9CisJCQlEb21haW5IYXNWb2xhdGlsZUNvbnN0cmFpbnRzKGF0dHJpYnV0 ZS0+YXR0dHlwaWQsICZoYXNfdm9sYXRpbGUpOworCisJCS8qCisJCSAqIElmIHRoZSBkb21h aW4gaGFzIHZvbGF0aWxlIGNvbnN0cmFpbnRzLCB3ZSBtdXN0IGRvIGEgdGFibGUgcmV3cml0 ZQorCQkgKiBzaW5jZSB0aGUgY29uc3RyYWludCByZXN1bHQgY291bGQgZGlmZmVyIHBlciBy b3cgYW5kIGNhbm5vdCBiZQorCQkgKiBldmFsdWF0ZWQgb25jZSBhbmQgY2FjaGVkIGFzIGEg bWlzc2luZyB2YWx1ZS4KKwkJICovCisJCWlmIChoYXNfdm9sYXRpbGUpCisJCXsKKwkJCUFz c2VydChoYXNfZG9tYWluX2NvbnN0cmFpbnRzKTsKKwkJCXRhYi0+cmV3cml0ZSB8PSBBVF9S RVdSSVRFX0RFRkFVTFRfVkFMOworCQl9CisKIAkJLyogQnVpbGQgQ29lcmNlVG9Eb21haW4o TlVMTCkgZXhwcmVzc2lvbiBpZiBuZWVkZWQgKi8KLQkJaGFzX2RvbWFpbl9jb25zdHJhaW50 cyA9IERvbWFpbkhhc0NvbnN0cmFpbnRzKGF0dHJpYnV0ZS0+YXR0dHlwaWQpOwogCQlpZiAo IWRlZnZhbCAmJiBoYXNfZG9tYWluX2NvbnN0cmFpbnRzKQogCQl7CiAJCQlPaWQJCQliYXNl VHlwZUlkOwpAQCAtNzU2NSwyNyArNzU3MCw0OSBAQCBBVEV4ZWNBZGRDb2x1bW4oTGlzdCAq KndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkgKiBB dHRlbXB0IHRvIHNraXAgYSBjb21wbGV0ZSB0YWJsZSByZXdyaXRlIGJ5IHN0b3JpbmcgdGhl CiAJCQkgKiBzcGVjaWZpZWQgREVGQVVMVCB2YWx1ZSBvdXRzaWRlIG9mIHRoZSBoZWFwLiAg VGhpcyBpcyBvbmx5CiAJCQkgKiBhbGxvd2VkIGZvciBwbGFpbiByZWxhdGlvbnMgYW5kIG5v bi1nZW5lcmF0ZWQgY29sdW1ucywgYW5kIHRoZQotCQkJICogZGVmYXVsdCBleHByZXNzaW9u IGNhbid0IGJlIHZvbGF0aWxlIChzdGFibGUgaXMgT0spLiAgTm90ZSB0aGF0Ci0JCQkgKiBj b250YWluX3ZvbGF0aWxlX2Z1bmN0aW9ucyBkZWVtcyBDb2VyY2VUb0RvbWFpbiBpbW11dGFi bGUsIGJ1dAotCQkJICogaGVyZSB3ZSBjb25zaWRlciB0aGF0IGNvZXJjaW9uIHRvIGEgZG9t YWluIHdpdGggY29uc3RyYWludHMgaXMKLQkJCSAqIHZvbGF0aWxlOyBlbHNlIGl0IG1pZ2h0 IGZhaWwgZXZlbiB3aGVuIHRoZSB0YWJsZSBpcyBlbXB0eS4KKwkJCSAqIGRlZmF1bHQgZXhw cmVzc2lvbiBjYW4ndCBiZSB2b2xhdGlsZSAoc3RhYmxlIGlzIE9LKSwgYW5kIHRoZQorCQkJ ICogZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbnMgY2FuJ3QgYmUgdm9sYXRpbGUgKHN0 YWJsZSBpcyBPSykuCisJCQkgKgorCQkJICogTm90ZSB0aGF0IGNvbnRhaW5fdm9sYXRpbGVf ZnVuY3Rpb25zIGNvbnNpZGVycyBDb2VyY2VUb0RvbWFpbgorCQkJICogaW1tdXRhYmxlLCBz byB3ZSByZWx5IG9uIERvbWFpbkhhc1ZvbGF0aWxlQ29uc3RyYWludHMgKGNhbGxlZAorCQkJ ICogYWJvdmUpIHJhdGhlciB0aGFuIGNoZWNraW5nIGRlZnZhbCBhbG9uZS4KKwkJCSAqCisJ CQkgKiBGb3IgZG9tYWlucyB3aXRoIG5vbi12b2xhdGlsZSBjb25zdHJhaW50cywgd2UgZXZh bHVhdGUgdGhlCisJCQkgKiBkZWZhdWx0IHVzaW5nIHNvZnQgZXJyb3IgaGFuZGxpbmc6IGlm IHRoZSBjb25zdHJhaW50IGNoZWNrCisJCQkgKiBmYWlscyAoZS5nLiwgQ0hFQ0sodmFsdWUg PiAxMCkgd2l0aCBERUZBVUxUIDgpLCB3ZSBmYWxsIGJhY2sgdG8KKwkJCSAqIGEgdGFibGUg cmV3cml0ZS4gIFRoaXMgcHJlc2VydmVzIHRoZSBoaXN0b3JpY2FsIGJlaGF2aW9yIHRoYXQK KwkJCSAqIHN1Y2ggYSBmYWlsdXJlIGlzIG9ubHkgcmFpc2VkIHdoZW4gdGhlIHRhYmxlIGhh cyByb3dzLgogCQkJICovCiAJCQlpZiAocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lO RF9SRUxBVElPTiAmJgogCQkJCSFjb2xEZWYtPmdlbmVyYXRlZCAmJgotCQkJCSFoYXNfZG9t YWluX2NvbnN0cmFpbnRzICYmCisJCQkJIWhhc192b2xhdGlsZSAmJgogCQkJCSFjb250YWlu X3ZvbGF0aWxlX2Z1bmN0aW9ucygoTm9kZSAqKSBkZWZ2YWwpKQogCQkJewogCQkJCUVTdGF0 ZQkgICAqZXN0YXRlOwogCQkJCUV4cHJTdGF0ZSAgKmV4cHJTdGF0ZTsKIAkJCQlEYXR1bQkJ bWlzc2luZ3ZhbDsKIAkJCQlib29sCQltaXNzaW5nSXNOdWxsOworCQkJCUVycm9yU2F2ZUNv bnRleHQgZXNjb250ZXh0ID0ge1RfRXJyb3JTYXZlQ29udGV4dH07CiAKLQkJCQkvKiBFdmFs dWF0ZSB0aGUgZGVmYXVsdCBleHByZXNzaW9uICovCisJCQkJLyogRXZhbHVhdGUgdGhlIGRl ZmF1bHQgZXhwcmVzc2lvbiB3aXRoIHNvZnQgZXJyb3JzICovCiAJCQkJZXN0YXRlID0gQ3Jl YXRlRXhlY3V0b3JTdGF0ZSgpOwotCQkJCWV4cHJTdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcihk ZWZ2YWwsIGVzdGF0ZSk7CisJCQkJZXhwclN0YXRlID0gRXhlY1ByZXBhcmVFeHByV2l0aENv bnRleHQoZGVmdmFsLCBlc3RhdGUsCisJCQkJCQkJCQkJCQkJICAgKE5vZGUgKikgJmVzY29u dGV4dCk7CiAJCQkJbWlzc2luZ3ZhbCA9IEV4ZWNFdmFsRXhwcihleHByU3RhdGUsCiAJCQkJ CQkJCQkJICBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSksCiAJCQkJCQkJCQkJICAm bWlzc2luZ0lzTnVsbCk7CisKKwkJCQkvKgorCQkJCSAqIElmIHRoZSBkb21haW4gY29uc3Ry YWludCBjaGVjayBmYWlsZWQsIGZhbGwgYmFjayB0byBhIHRhYmxlCisJCQkJICogcmV3cml0 ZS4gIFBoYXNlIDMgd2lsbCByZS1ldmFsdWF0ZSB3aXRoIGhhcmQgZXJyb3JzLCBzbyB0aGUK KwkJCQkgKiB1c2VyIGdldHMgYW4gZXJyb3Igb25seSBpZiB0aGUgdGFibGUgaGFzIHJvd3Mu CisJCQkJICovCisJCQkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoJmVzY29udGV4dCkpCisJ CQkJeworCQkJCQltaXNzaW5nSXNOdWxsID0gdHJ1ZTsKKwkJCQkJdGFiLT5yZXdyaXRlIHw9 IEFUX1JFV1JJVEVfREVGQVVMVF9WQUw7CisJCQkJfQorCiAJCQkJLyogSWYgaXQgdHVybnMg b3V0IE5VTEwsIG5vdGhpbmcgdG8gZG87IGVsc2Ugc3RvcmUgaXQgKi8KIAkJCQlpZiAoIW1p c3NpbmdJc051bGwpCiAJCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggMDg4 ZWNhMjQwMjEuLmMxNTc0OTY0NmUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAg LTE0MSw2ICsxNDEsMjYgQEAgc3RhdGljIHZvaWQgRXhlY0luaXRKc29uQ29lcmNpb24oRXhw clN0YXRlICpzdGF0ZSwgSnNvblJldHVybmluZyAqcmV0dXJuaW5nLAogICovCiBFeHByU3Rh dGUgKgogRXhlY0luaXRFeHByKEV4cHIgKm5vZGUsIFBsYW5TdGF0ZSAqcGFyZW50KQorewor CXJldHVybiBFeGVjSW5pdEV4cHJXaXRoQ29udGV4dChub2RlLCBwYXJlbnQsIE5VTEwpOwor fQorCisvKgorICogRXhlY0luaXRFeHByV2l0aENvbnRleHQ6IHNhbWUgYXMgRXhlY0luaXRF eHByLCBidXQgd2l0aCBhbiBvcHRpb25hbAorICogRXJyb3JTYXZlQ29udGV4dCBmb3Igc29m dCBlcnJvciBoYW5kbGluZy4KKyAqCisgKiBXaGVuICdlc2NvbnRleHQnIGlzIG5vbi1OVUxM LCBleHByZXNzaW9uIG5vZGVzIHRoYXQgc3VwcG9ydCBzb2Z0IGVycm9ycworICogKGN1cnJl bnRseSBDb2VyY2VUb0RvbWFpbidzIE5PVCBOVUxMIGFuZCBDSEVDSyBjb25zdHJhaW50IHN0 ZXBzKSB3aWxsIHVzZQorICogZXJyc2F2ZSgpIGluc3RlYWQgb2YgZXJlcG9ydCgpLCBhbGxv d2luZyB0aGUgY2FsbGVyIHRvIGRldGVjdCBhbmQgaGFuZGxlCisgKiBmYWlsdXJlcyB3aXRo b3V0IGEgdHJhbnNhY3Rpb24gYWJvcnQuCisgKgorICogVGhlIGVzY29udGV4dCBtdXN0IGJl IHByb3ZpZGVkIGF0IGluaXRpYWxpemF0aW9uIHRpbWUgKG5vdCBhZnRlciksIGJlY2F1c2UK KyAqIGl0IGlzIGNvcGllZCBpbnRvIHBlci1zdGVwIGRhdGEgZHVyaW5nIGV4cHJlc3Npb24g Y29tcGlsYXRpb24uCisgKgorICogTm90IGFsbCBleHByZXNzaW9uIG5vZGUgdHlwZXMgc3Vw cG9ydCBzb2Z0IGVycm9ycy4gIElmIGluIGRvdWJ0LCBwYXNzIE5VTEwuCisgKi8KK0V4cHJT dGF0ZSAqCitFeGVjSW5pdEV4cHJXaXRoQ29udGV4dChFeHByICpub2RlLCBQbGFuU3RhdGUg KnBhcmVudCwgTm9kZSAqZXNjb250ZXh0KQogewogCUV4cHJTdGF0ZSAgKnN0YXRlOwogCUV4 cHJFdmFsU3RlcCBzY3JhdGNoID0gezB9OwpAQCAtMTU0LDYgKzE3NCw3IEBAIEV4ZWNJbml0 RXhwcihFeHByICpub2RlLCBQbGFuU3RhdGUgKnBhcmVudCkKIAlzdGF0ZS0+ZXhwciA9IG5v ZGU7CiAJc3RhdGUtPnBhcmVudCA9IHBhcmVudDsKIAlzdGF0ZS0+ZXh0X3BhcmFtcyA9IE5V TEw7CisJc3RhdGUtPmVzY29udGV4dCA9IChFcnJvclNhdmVDb250ZXh0ICopIGVzY29udGV4 dDsKIAogCS8qIEluc2VydCBzZXR1cCBzdGVwcyBhcyBuZWVkZWQgKi8KIAlFeGVjQ3JlYXRl RXhwclNldHVwU3RlcHMoc3RhdGUsIChOb2RlICopIG5vZGUpOwpAQCAtNzYzLDYgKzc4NCwx OCBAQCBFeGVjQnVpbGRVcGRhdGVQcm9qZWN0aW9uKExpc3QgKnRhcmdldExpc3QsCiAgKi8K IEV4cHJTdGF0ZSAqCiBFeGVjUHJlcGFyZUV4cHIoRXhwciAqbm9kZSwgRVN0YXRlICplc3Rh dGUpCit7CisJcmV0dXJuIEV4ZWNQcmVwYXJlRXhwcldpdGhDb250ZXh0KG5vZGUsIGVzdGF0 ZSwgTlVMTCk7Cit9CisKKy8qCisgKiBFeGVjUHJlcGFyZUV4cHJXaXRoQ29udGV4dDogc2Ft ZSBhcyBFeGVjUHJlcGFyZUV4cHIsIGJ1dCB3aXRoIGFuIG9wdGlvbmFsCisgKiBFcnJvclNh dmVDb250ZXh0IGZvciBzb2Z0IGVycm9yIGhhbmRsaW5nIGR1cmluZyBkb21haW4gY29uc3Ry YWludCBldmFsdWF0aW9uLgorICoKKyAqIFNlZSBFeGVjSW5pdEV4cHJXaXRoQ29udGV4dCBm b3IgZGV0YWlscyBvbiB0aGUgZXNjb250ZXh0IHBhcmFtZXRlci4KKyAqLworRXhwclN0YXRl ICoKK0V4ZWNQcmVwYXJlRXhwcldpdGhDb250ZXh0KEV4cHIgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBOb2RlICplc2NvbnRleHQpCiB7CiAJRXhwclN0YXRlICAqcmVzdWx0OwogCU1lbW9y eUNvbnRleHQgb2xkY29udGV4dDsKQEAgLTc3MSw3ICs4MDQsNyBAQCBFeGVjUHJlcGFyZUV4 cHIoRXhwciAqbm9kZSwgRVN0YXRlICplc3RhdGUpCiAKIAlub2RlID0gZXhwcmVzc2lvbl9w bGFubmVyKG5vZGUpOwogCi0JcmVzdWx0ID0gRXhlY0luaXRFeHByKG5vZGUsIE5VTEwpOwor CXJlc3VsdCA9IEV4ZWNJbml0RXhwcldpdGhDb250ZXh0KG5vZGUsIE5VTEwsIGVzY29udGV4 dCk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oCmluZGV4IGQ0NmJhNTk4OTVkLi44MmM0NDJkMjNmOCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0zMjQsNiArMzI0LDcgQEAgRXhlY1Byb2NOb2Rl KFBsYW5TdGF0ZSAqbm9kZSkKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhl Y0V4cHIuYwogICovCiBleHRlcm4gRXhwclN0YXRlICpFeGVjSW5pdEV4cHIoRXhwciAqbm9k ZSwgUGxhblN0YXRlICpwYXJlbnQpOworZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY0luaXRFeHBy V2l0aENvbnRleHQoRXhwciAqbm9kZSwgUGxhblN0YXRlICpwYXJlbnQsIE5vZGUgKmVzY29u dGV4dCk7CiBleHRlcm4gRXhwclN0YXRlICpFeGVjSW5pdEV4cHJXaXRoUGFyYW1zKEV4cHIg Km5vZGUsIFBhcmFtTGlzdEluZm8gZXh0X3BhcmFtcyk7CiBleHRlcm4gRXhwclN0YXRlICpF eGVjSW5pdFF1YWwoTGlzdCAqcXVhbCwgUGxhblN0YXRlICpwYXJlbnQpOwogZXh0ZXJuIEV4 cHJTdGF0ZSAqRXhlY0luaXRDaGVjayhMaXN0ICpxdWFsLCBQbGFuU3RhdGUgKnBhcmVudCk7 CkBAIC0zNzIsNiArMzczLDcgQEAgZXh0ZXJuIFByb2plY3Rpb25JbmZvICpFeGVjQnVpbGRV cGRhdGVQcm9qZWN0aW9uKExpc3QgKnRhcmdldExpc3QsCiAJCQkJCQkJCQkJCQkgVHVwbGVU YWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJCQkJCQkgUGxhblN0YXRlICpwYXJlbnQpOwogZXh0 ZXJuIEV4cHJTdGF0ZSAqRXhlY1ByZXBhcmVFeHByKEV4cHIgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlKTsKK2V4dGVybiBFeHByU3RhdGUgKkV4ZWNQcmVwYXJlRXhwcldpdGhDb250ZXh0KEV4 cHIgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBOb2RlICplc2NvbnRleHQpOwogZXh0ZXJuIEV4 cHJTdGF0ZSAqRXhlY1ByZXBhcmVRdWFsKExpc3QgKnF1YWwsIEVTdGF0ZSAqZXN0YXRlKTsK IGV4dGVybiBFeHByU3RhdGUgKkV4ZWNQcmVwYXJlQ2hlY2soTGlzdCAqcXVhbCwgRVN0YXRl ICplc3RhdGUpOwogZXh0ZXJuIExpc3QgKkV4ZWNQcmVwYXJlRXhwckxpc3QoTGlzdCAqbm9k ZXMsIEVTdGF0ZSAqZXN0YXRlKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZmFzdF9kZWZhdWx0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZmFz dF9kZWZhdWx0Lm91dAppbmRleCBjY2JjZGY4NDAzZi4uYmIzYTgzMzg1ZjYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZmFzdF9kZWZhdWx0Lm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zhc3RfZGVmYXVsdC5vdXQKQEAgLTMxNywxMSAr MzE3LDYxIEBAIFNFTEVDVCBhLCBiLCBsZW5ndGgoYykgPSAzIGFzIGNfb2ssIGQsIGUgPj0g MTAgYXMgZV9vayBGUk9NIHQyOwogIDIgfCAzIHwgdCAgICB8IHtUaGlzLGlzLGFiY2QsdGhl LHJlYWwsd29ybGR9IHwgdAogKDIgcm93cykKIAorLS0gdGVzdCBmYXN0IGRlZmF1bHQgb3Zl ciBkb21haW5zIHdpdGggY29uc3RyYWludHMKK0NSRUFURSBET01BSU4gZG9tYWluNSBBUyBp bnQgQ0hFQ0sodmFsdWUgPiAxMCkgREVGQVVMVCA4OworQ1JFQVRFIERPTUFJTiBkb21haW42 IGFzIGludCBDSEVDSyh2YWx1ZSA+IDEwKSBERUZBVUxUIHJhbmRvbShtaW49PjExLCBtYXg9 PjEwMCk7CitDUkVBVEUgRE9NQUlOIGRvbWFpbjcgYXMgaW50IENIRUNLKCh2YWx1ZSArIHJh bmRvbShtaW49PjExOjppbnQsIG1heD0+MTEpKSA+IDEyKTsKK0NSRUFURSBET01BSU4gZG9t YWluOCBhcyBpbnQgbm90IG51bGw7CistLSB0ZXN0cyB3aXRoIG5vbi1lbXB0eSB0YWJsZS4K K0NSRUFURSBUQUJMRSB0ZXN0X2FkZF9kb21haW5fY29sKGEgaW50KTsKK0FMVEVSIFRBQkxF IHRlc3RfYWRkX2RvbWFpbl9jb2wgQUREIENPTFVNTiBhMSBkb21haW41OyAtLXRhYmxlIHJl d3JpdGUsIG5vdCBmYWlsLgorTk9USUNFOiAgcmV3cml0aW5nIHRhYmxlIHRlc3RfYWRkX2Rv bWFpbl9jb2wgZm9yIHJlYXNvbiAyCitBTFRFUiBUQUJMRSB0ZXN0X2FkZF9kb21haW5fY29s IERST1AgQ09MVU1OIGExOworSU5TRVJUIElOVE8gdGVzdF9hZGRfZG9tYWluX2NvbCBWQUxV RVMoMSksKDIpOworQUxURVIgVEFCTEUgdGVzdF9hZGRfZG9tYWluX2NvbCBBREQgQ09MVU1O IGIgZG9tYWluNTsgLS10YWJsZSByZXdyaXRlLCB0aGVuIGZhaWwKK05PVElDRTogIHJld3Jp dGluZyB0YWJsZSB0ZXN0X2FkZF9kb21haW5fY29sIGZvciByZWFzb24gMgorRVJST1I6ICB2 YWx1ZSBmb3IgZG9tYWluIGRvbWFpbjUgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAiZG9t YWluNV9jaGVjayIKK0FMVEVSIFRBQkxFIHRlc3RfYWRkX2RvbWFpbl9jb2wgQUREIENPTFVN TiBiIGRvbWFpbjg7IC0tdGFibGUgcmV3cml0ZSwgdGhlbiBmYWlsCitOT1RJQ0U6ICByZXdy aXRpbmcgdGFibGUgdGVzdF9hZGRfZG9tYWluX2NvbCBmb3IgcmVhc29uIDIKK0VSUk9SOiAg ZG9tYWluIGRvbWFpbjggZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK0FMVEVSIFRBQkxF IHRlc3RfYWRkX2RvbWFpbl9jb2wgQUREIENPTFVNTiBiIGRvbWFpbjUgREVGQVVMVCAxOyAt LXRhYmxlIHJld3JpdGUsIHRoZW4gZmFpbAorTk9USUNFOiAgcmV3cml0aW5nIHRhYmxlIHRl c3RfYWRkX2RvbWFpbl9jb2wgZm9yIHJlYXNvbiAyCitFUlJPUjogIHZhbHVlIGZvciBkb21h aW4gZG9tYWluNSB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJkb21haW41X2NoZWNrIgor QUxURVIgVEFCTEUgdGVzdF9hZGRfZG9tYWluX2NvbCBBREQgQ09MVU1OIGIgZG9tYWluNSBE RUZBVUxUIDEyOyAtLW9rLCBubyB0YWJsZSByZXdyaXRlCistLSBleHBsaWNpdCBjb2x1bW4g ZGVmYXVsdCBleHByZXNzaW9uIG92ZXJyaWRlcyBkb21haW4ncyBkZWZhdWx0CistLSBleHBy ZXNzaW9uLCBzbyBubyB0YWJsZSByZXdyaXRlLgorQUxURVIgVEFCTEUgdGVzdF9hZGRfZG9t YWluX2NvbCBBREQgQ09MVU1OIGMgZG9tYWluNiBERUZBVUxUIDE0OworQUxURVIgVEFCTEUg dGVzdF9hZGRfZG9tYWluX2NvbCBBREQgQ09MVU1OIGMxIGRvbWFpbjggREVGQVVMVCAxMzsg LS1ubyB0YWJsZSByZXdyaXRlCitTRUxFQ1QgYXR0bnVtLCBhdHRuYW1lLCBhdHRoYXNtaXNz aW5nLCBhdHRoYXNkZWYsIGF0dG1pc3Npbmd2YWwKK0ZST00gIHBnX2F0dHJpYnV0ZQorV0hF UkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAndGVzdF9hZGRfZG9tYWluX2NvbCc6OnJl Z2NsYXNzIEFORCBhdHRpc2Ryb3BwZWQgaXMgZmFsc2UKK0FORCAgIGF0dGhhc21pc3NpbmcK K09SREVSIEJZIGF0dG51bTsKKyBhdHRudW0gfCBhdHRuYW1lIHwgYXR0aGFzbWlzc2luZyB8 IGF0dGhhc2RlZiB8IGF0dG1pc3Npbmd2YWwgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgMyB8IGIgICAg ICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICAgIHwgezEyfQorICAgICAgNCB8IGMgICAg ICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICAgIHwgezE0fQorICAgICAgNSB8IGMxICAg ICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICAgIHwgezEzfQorKDMgcm93cykKKworLS0g V2UgbmVlZCB0byByZXdyaXRlIHRoZSB0YWJsZSB3aGVuZXZlciBkb21haW4gZGVmYXVsdCBj b250YWlucyB2b2xhdGlsZSBleHByZXNzaW9uCitBTFRFUiBUQUJMRSB0ZXN0X2FkZF9kb21h aW5fY29sIEFERCBDT0xVTU4gZCBkb21haW42OworTk9USUNFOiAgcmV3cml0aW5nIHRhYmxl IHRlc3RfYWRkX2RvbWFpbl9jb2wgZm9yIHJlYXNvbiAyCistLSBXZSBuZWVkIHRvIHJld3Jp dGUgdGhlIHRhYmxlIHdoZW5ldmVyIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24gY29u dGFpbnMgdm9sYXRpbGUgZXhwcmVzc2lvbgorQUxURVIgVEFCTEUgdGVzdF9hZGRfZG9tYWlu X2NvbCBBREQgQ09MVU1OIGUgZG9tYWluNyBkZWZhdWx0IDE0OworTk9USUNFOiAgcmV3cml0 aW5nIHRhYmxlIHRlc3RfYWRkX2RvbWFpbl9jb2wgZm9yIHJlYXNvbiAyCitBTFRFUiBUQUJM RSB0ZXN0X2FkZF9kb21haW5fY29sIEFERCBDT0xVTU4gZiBkb21haW43OworTk9USUNFOiAg cmV3cml0aW5nIHRhYmxlIHRlc3RfYWRkX2RvbWFpbl9jb2wgZm9yIHJlYXNvbiAyCiBEUk9Q IFRBQkxFIHQyOworRFJPUCBUQUJMRSB0ZXN0X2FkZF9kb21haW5fY29sOwogRFJPUCBET01B SU4gZG9tYWluMTsKIERST1AgRE9NQUlOIGRvbWFpbjI7CiBEUk9QIERPTUFJTiBkb21haW4z OwogRFJPUCBET01BSU4gZG9tYWluNDsKK0RST1AgRE9NQUlOIGRvbWFpbjU7CitEUk9QIERP TUFJTiBkb21haW42OworRFJPUCBET01BSU4gZG9tYWluNzsKK0RST1AgRE9NQUlOIGRvbWFp bjg7CiBEUk9QIEZVTkNUSU9OIGZvbyhJTlQpOwogLS0gRmFsbCBiYWNrIHRvIGZ1bGwgcmV3 cml0ZSBmb3Igdm9sYXRpbGUgZXhwcmVzc2lvbnMKIENSRUFURSBUQUJMRSBUKHBrIElOVCBO T1QgTlVMTCBQUklNQVJZIEtFWSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9mYXN0X2RlZmF1bHQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZmFzdF9kZWZhdWx0 LnNxbAppbmRleCAwNjhkZDBiYzhhYS4uNTk3YTU0N2ZmNzIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2Zhc3RfZGVmYXVsdC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZmFzdF9kZWZhdWx0LnNxbApAQCAtMjg3LDExICsyODcsNTEgQEAgT1JERVIgQlkg YXR0bnVtOwogCiBTRUxFQ1QgYSwgYiwgbGVuZ3RoKGMpID0gMyBhcyBjX29rLCBkLCBlID49 IDEwIGFzIGVfb2sgRlJPTSB0MjsKIAorLS0gdGVzdCBmYXN0IGRlZmF1bHQgb3ZlciBkb21h aW5zIHdpdGggY29uc3RyYWludHMKK0NSRUFURSBET01BSU4gZG9tYWluNSBBUyBpbnQgQ0hF Q0sodmFsdWUgPiAxMCkgREVGQVVMVCA4OworQ1JFQVRFIERPTUFJTiBkb21haW42IGFzIGlu dCBDSEVDSyh2YWx1ZSA+IDEwKSBERUZBVUxUIHJhbmRvbShtaW49PjExLCBtYXg9PjEwMCk7 CitDUkVBVEUgRE9NQUlOIGRvbWFpbjcgYXMgaW50IENIRUNLKCh2YWx1ZSArIHJhbmRvbSht aW49PjExOjppbnQsIG1heD0+MTEpKSA+IDEyKTsKK0NSRUFURSBET01BSU4gZG9tYWluOCBh cyBpbnQgbm90IG51bGw7CisKKy0tIHRlc3RzIHdpdGggbm9uLWVtcHR5IHRhYmxlLgorQ1JF QVRFIFRBQkxFIHRlc3RfYWRkX2RvbWFpbl9jb2woYSBpbnQpOworQUxURVIgVEFCTEUgdGVz dF9hZGRfZG9tYWluX2NvbCBBREQgQ09MVU1OIGExIGRvbWFpbjU7IC0tdGFibGUgcmV3cml0 ZSwgbm90IGZhaWwuCitBTFRFUiBUQUJMRSB0ZXN0X2FkZF9kb21haW5fY29sIERST1AgQ09M VU1OIGExOworSU5TRVJUIElOVE8gdGVzdF9hZGRfZG9tYWluX2NvbCBWQUxVRVMoMSksKDIp OworCitBTFRFUiBUQUJMRSB0ZXN0X2FkZF9kb21haW5fY29sIEFERCBDT0xVTU4gYiBkb21h aW41OyAtLXRhYmxlIHJld3JpdGUsIHRoZW4gZmFpbAorQUxURVIgVEFCTEUgdGVzdF9hZGRf ZG9tYWluX2NvbCBBREQgQ09MVU1OIGIgZG9tYWluODsgLS10YWJsZSByZXdyaXRlLCB0aGVu IGZhaWwKK0FMVEVSIFRBQkxFIHRlc3RfYWRkX2RvbWFpbl9jb2wgQUREIENPTFVNTiBiIGRv bWFpbjUgREVGQVVMVCAxOyAtLXRhYmxlIHJld3JpdGUsIHRoZW4gZmFpbAorQUxURVIgVEFC TEUgdGVzdF9hZGRfZG9tYWluX2NvbCBBREQgQ09MVU1OIGIgZG9tYWluNSBERUZBVUxUIDEy OyAtLW9rLCBubyB0YWJsZSByZXdyaXRlCisKKy0tIGV4cGxpY2l0IGNvbHVtbiBkZWZhdWx0 IGV4cHJlc3Npb24gb3ZlcnJpZGVzIGRvbWFpbidzIGRlZmF1bHQKKy0tIGV4cHJlc3Npb24s IHNvIG5vIHRhYmxlIHJld3JpdGUuCitBTFRFUiBUQUJMRSB0ZXN0X2FkZF9kb21haW5fY29s IEFERCBDT0xVTU4gYyBkb21haW42IERFRkFVTFQgMTQ7CisKK0FMVEVSIFRBQkxFIHRlc3Rf YWRkX2RvbWFpbl9jb2wgQUREIENPTFVNTiBjMSBkb21haW44IERFRkFVTFQgMTM7IC0tbm8g dGFibGUgcmV3cml0ZQorU0VMRUNUIGF0dG51bSwgYXR0bmFtZSwgYXR0aGFzbWlzc2luZywg YXR0aGFzZGVmLCBhdHRtaXNzaW5ndmFsCitGUk9NICBwZ19hdHRyaWJ1dGUKK1dIRVJFIGF0 dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3Rlc3RfYWRkX2RvbWFpbl9jb2wnOjpyZWdjbGFz cyBBTkQgYXR0aXNkcm9wcGVkIGlzIGZhbHNlCitBTkQgICBhdHRoYXNtaXNzaW5nCitPUkRF UiBCWSBhdHRudW07CisKKy0tIFdlIG5lZWQgdG8gcmV3cml0ZSB0aGUgdGFibGUgd2hlbmV2 ZXIgZG9tYWluIGRlZmF1bHQgY29udGFpbnMgdm9sYXRpbGUgZXhwcmVzc2lvbgorQUxURVIg VEFCTEUgdGVzdF9hZGRfZG9tYWluX2NvbCBBREQgQ09MVU1OIGQgZG9tYWluNjsKKworLS0g V2UgbmVlZCB0byByZXdyaXRlIHRoZSB0YWJsZSB3aGVuZXZlciBkb21haW4gY29uc3RyYWlu dCBleHByZXNzaW9uIGNvbnRhaW5zIHZvbGF0aWxlIGV4cHJlc3Npb24KK0FMVEVSIFRBQkxF IHRlc3RfYWRkX2RvbWFpbl9jb2wgQUREIENPTFVNTiBlIGRvbWFpbjcgZGVmYXVsdCAxNDsK K0FMVEVSIFRBQkxFIHRlc3RfYWRkX2RvbWFpbl9jb2wgQUREIENPTFVNTiBmIGRvbWFpbjc7 CisKIERST1AgVEFCTEUgdDI7CitEUk9QIFRBQkxFIHRlc3RfYWRkX2RvbWFpbl9jb2w7CiBE Uk9QIERPTUFJTiBkb21haW4xOwogRFJPUCBET01BSU4gZG9tYWluMjsKIERST1AgRE9NQUlO IGRvbWFpbjM7CiBEUk9QIERPTUFJTiBkb21haW40OworRFJPUCBET01BSU4gZG9tYWluNTsK K0RST1AgRE9NQUlOIGRvbWFpbjY7CitEUk9QIERPTUFJTiBkb21haW43OworRFJPUCBET01B SU4gZG9tYWluODsKIERST1AgRlVOQ1RJT04gZm9vKElOVCk7CiAKIC0tIEZhbGwgYmFjayB0 byBmdWxsIHJld3JpdGUgZm9yIHZvbGF0aWxlIGV4cHJlc3Npb25zCi0tIAoyLjQzLjAKCg== --------------YGQAl5r3EWC400wr3KZ1RG0h--