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 1td8T6-0054Oa-Fj for pgsql-hackers@arkaria.postgresql.org; Wed, 29 Jan 2025 13:51:01 +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 1td8T5-0078lM-8C for pgsql-hackers@arkaria.postgresql.org; Wed, 29 Jan 2025 13:50:59 +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 1td8T4-0078lE-Gd for pgsql-hackers@lists.postgresql.org; Wed, 29 Jan 2025 13:50:58 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1td8Sz-0027kl-2n for pgsql-hackers@lists.postgresql.org; Wed, 29 Jan 2025 13:50:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1738158650; bh=/F7pVcfjIqXowqsmxlD4YjK8SS6LkBFwwSkyQIXxCz4=; h=Message-ID:Date:User-Agent:Subject:To:References:From:In-Reply-To: From; b=HqgUt5lccGsEqNPYY+XKD+gkJCwXyH3JyjHfKY5tWcQkW0vAMZy6KPTYWwNkG45MB KeduZ5edUwwMfW8+1ThjCu7IpIGnGs1Gxw6s5HgCikDexYOEHoY/yFSXQQ62pGZFl8 GWtTKY/Ey58BTInjDCdPbgPrZQylno7BUSJ61W3/KPpiITRhFlpSfO6Op5gid9TK/M EAUn4hnPAZAZOrgvKVk+9TDNZvg5R5YKsWWA4RHvrfLyg/0eQUMz2VwA4wscD4Gvlz 3CxZ3vo09qr1EoqpaHJmcFUSSedSpSc1lXnJFr6ykyE6X3GEkDd46muxM6bzAtHOH6 a+36UyiioqhiA== Received: from [172.30.48.90] (unknown [172.30.48.90]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: s.tatarintsev@postgrespro.ru) by mail.postgrespro.ru (Postfix/465) with ESMTPSA id 5D0CE60136 for ; Wed, 29 Jan 2025 16:50:50 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------trijTYUyDWCT09F0hFVS6dPC" Message-ID: <12e49de4-8914-4602-bd1c-749cf2e56ad6@postgrespro.ru> Date: Wed, 29 Jan 2025 20:50:49 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Restrict publishing of partitioned table with a foreign table as partition To: pgsql-hackers@lists.postgresql.org References: Content-Language: en-US From: Sergey Tatarintsev In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/01/29 12:18:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/01/29 10:29:00 #27146660 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 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. --------------trijTYUyDWCT09F0hFVS6dPC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 29.01.2025 12:16, Shlok Kyal пишет: > Hi, > > As part of a discussion in [1], I am starting this thread to address > the issue reported for foreign tables. > > Logical replication of foreign tables is not supported, and we throw > an error in this case. But when we create a publication on a > partitioned table that has a foreign table as a partition, the initial > sync of such a table is successful. We should also throw an error in > such cases. > With this patch, we will throw an error when we try to create a > publication on (or add to an existing publication) a partitioned table > with a foreign table as its partition or attach such a table to > existing published tables. > > [1] : https://www.postgresql.org/message-id/CAA4eK1Lhh4SgiYQLNiWSNKGdVSzbd53%3Dsr2tQCKooEphDkUtgw%40mail.gmail.com > > Thanks and Regards, > Shlok Kyal Hi! Thanks for patch. I reviewed it and made some changes. 1. we should check foreign tables (not partitioned) 2. added checking for foreign table creation 3. some little corrections See attach --------------trijTYUyDWCT09F0hFVS6dPC Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-Restrict-publishing-of-partitioned-table-with-a-f.patch" Content-Disposition: attachment; filename*0="v2-0001-Restrict-publishing-of-partitioned-table-with-a-f.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiYjA3ZjM1ZDRkM2E4ODcxZWFkZTY5YTVlNzhmNTA4MWNhOTAwNDFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjkgSmFuIDIwMjUgMTA6MTg6NTMgKzA1MzAKU3ViamVjdDog W1BBVENIIHYxXSBSZXN0cmljdCBwdWJsaXNoaW5nIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdp dGggYSBmb3JlaWduCiB0YWJsZSBhcyBwYXJ0aXRpb24KCkxvZ2ljYWwgcmVwbGljYXRpb24g b2YgZm9yZWlnbiB0YWJsZSBpcyBub3Qgc3VwcG9ydGVkIGFuZCB3ZSB0aHJvdyBhbgplcnJv ciBpbiB0aGlzIGNhc2UuIEJ1dCB3aGVuIGNyZWF0ZSBhIHB1YmxpY2F0aW9uIG9uIGEgcGFy dGl0aW9uZWQKdGFibGUgdGhhdCBoYXMgYSBmb3JlaWduIHRhYmxlIGFzIHBhcnRpdGlvbiwg dGhlIGluaXRpYWwgc3luYyBvZiBzdWNoCnRhYmxlIGlzIHN1Y2Nlc3NmdWwuIFdlIHNob3Vs ZCBhbHNvIHRocm93IGFuIGVycm9yIGluIHN1Y2ggY2FzZXMuCldpdGggdGhpcyBwYXRjaCB3 ZSB3aWxsIHRocm93IGFuIGVycm9yIHdoZW4gd2UgdHJ5IGNyZWF0ZSBhIHB1YmxpY2F0aW9u Cm9uIChvciBhZGQgdG8gZXhpc3RpbmcgcHVibGljYXRpb24pIGEgcGFydGl0aW9uZWQgdGFi bGUgd2l0aCBmb3JlaWduCnRhYmxlIGFzIGl0cyBwYXJ0aXRpb24uIFdlIHdpbGwgYWxzbyB0 aHJvdyBhbiBlcnJvciB3aGVuIHdlIHRyeSB0bwphdHRhY2ggc3VjaCB0YWJsZSB0byBleGlz dGluZyBwdWJsaXNoZWQgdGFibGVzLgotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYyAgICAgIHwgMTUyICsrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgIHwgICAzICsKIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgIHwgIDMzICsrKysrCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICB8ICAgOCArKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgfCAgMzIgKysrKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgIHwgIDMwICsrKysrCiA2IGZpbGVzIGNo YW5nZWQsIDI1OCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5jCmluZGV4IDQxZmZkNDk0YzguLmVmOGEzOTIwNzcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTU1LDYgKzU1LDggQEAgdHlwZWRlZiBzdHJ1Y3QK IHN0YXRpYyB2b2lkCiBjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oUmVsYXRpb24g dGFyZ2V0cmVsKQogeworCU9pZAkJCWZvcmVpZ25fdGJsX3JlbGlkOworCiAJLyogTXVzdCBi ZSBhIHJlZ3VsYXIgb3IgcGFydGl0aW9uZWQgdGFibGUgKi8KIAlpZiAoUmVsYXRpb25HZXRG b3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgogCQlSZWxh dGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVE X1RBQkxFKQpAQCAtNjQsNiArNjYsMTkgQEAgY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0 aW9uKFJlbGF0aW9uIHRhcmdldHJlbCkKIAkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHRhcmdldHJlbCkpLAogCQkJCSBlcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9ydGVkKFJl bGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kKSkpOwogCisJLyoKKwkgKiBDaGVj ayBpZiBpdCBpcyBhIHBhcnRpdGlvbmVkIHRhYmxlIGFuZCBhbnkgZm9yZWlnbiB0YWJsZSBp cyBpdHMKKwkgKiBwYXJ0aXRpb24KKwkgKi8KKwlpZiAoY2hlY2tfcGFydHJlbF9oYXNfZm9y ZWlnbl90YWJsZShSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKSwgJmZvcmVpZ25fdGJsX3Jl bGlkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwi JXNcIiB0byBwdWJsaWNhdGlvbiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0 YXJnZXRyZWwpKSwKKwkJCQkgZXJyZGV0YWlsKCJmb3JlaWduIHRhYmxlIFwiJXNcIiBpcyBh IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkJICAgZ2V0 X3JlbF9uYW1lKGZvcmVpZ25fdGJsX3JlbGlkKSwKKwkJCQkJCSAgIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHRhcmdldHJlbCkpKSk7CisKIAkvKiBDYW4ndCBiZSBzeXN0ZW0gdGFibGUg Ki8KIAlpZiAoSXNDYXRhbG9nUmVsYXRpb24odGFyZ2V0cmVsKSkKIAkJZXJlcG9ydChFUlJP UiwKQEAgLTY5NSw2ICs3MTAsOSBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJp ZCwgT2lkIHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAKIAljaGVja19wdWJsaWNh dGlvbl9hZGRfc2NoZW1hKHNjaGVtYWlkKTsKIAorCS8qIGNoZWNrIGlmIHNjaGVtYSBoYXMg YW55IGZvcmVpZ24gdGFibGUgYXMgcGFydGl0aW9uIHRhYmxlICovCisJY2hlY2tfZm9yZWln bl90YWJsZXNfaW5fc2NoZW1hKHNjaGVtYWlkKTsKKwogCS8qIEZvcm0gYSB0dXBsZSAqLwog CW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKIAltZW1zZXQobnVsbHMsIGZh bHNlLCBzaXplb2YobnVsbHMpKTsKQEAgLTEzMjQsMyArMTM0MiwxMzcgQEAgcGdfZ2V0X3B1 YmxpY2F0aW9uX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQogCiAJU1JGX1JFVFVSTl9ET05F KGZ1bmNjdHgpOwogfQorCisvKiBDaGVjayBpZiBhIHBhcnRpdGlvbmVkIHRhYmxlIGhhcyBh IGZvcmVpZ24gdGFibGUgYXMgaXRzIHBhcnRpdGlvbiAqLworYm9vbAorY2hlY2tfcGFydHJl bF9oYXNfZm9yZWlnbl90YWJsZShGb3JtX3BnX2NsYXNzIHJlbGZvcm0sIE9pZCAqZm9yZWln bl90YmxfcmVsaWQpCit7CisJYm9vbAkJaGFzX2ZvcmVpZ25fdGJsID0gZmFsc2U7CisKKwlp ZiAocmVsZm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCXsK KwkJTGlzdAkgICAqcmVsaWRzID0gTklMOworCisJCXJlbGlkcyA9IEdldFB1YlBhcnRpdGlv bk9wdGlvblJlbGF0aW9ucyhyZWxpZHMsIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRiwKKwkJCQkJ CQkJCQkJCXJlbGZvcm0tPm9pZCk7CisKKwkJZm9yZWFjaF9vaWQocmVsaWQsIHJlbGlkcykK KwkJeworCQkJUmVsYXRpb24JcmVsID0gdGFibGVfb3BlbihyZWxpZCwgQWNjZXNzU2hhcmVM b2NrKTsKKworCQkJaWYgKFJlbGF0aW9uR2V0Rm9ybShyZWwpLT5yZWxraW5kID09IFJFTEtJ TkRfRk9SRUlHTl9UQUJMRSkKKwkJCXsKKwkJCQloYXNfZm9yZWlnbl90YmwgPSB0cnVlOwor CQkJCSpmb3JlaWduX3RibF9yZWxpZCA9IHJlbGlkOworCQkJfQorCisJCQl0YWJsZV9jbG9z ZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJCWlmIChoYXNfZm9yZWlnbl90YmwpCisJ CQkJYnJlYWs7CisJCX0KKwl9CisKKwlyZXR1cm4gaGFzX2ZvcmVpZ25fdGJsOworfQorCisv KgorICogQ2hlY2sgaWYgYSBzY2hlbWEgaGFzIGEgcGFydGl0aW9uZWQgdGFibGUgd2hpY2gg aGFzIGEgZm9yZWlnbiB0YWJsZSBhcyBpdHMKKyAqIHBhcnRpdGlvbgorICovCit2b2lkCitj aGVja19mb3JlaWduX3RhYmxlc19pbl9zY2hlbWEoT2lkIHNjaGVtYWlkKQoreworCVJlbGF0 aW9uCWNsYXNzUmVsOworCVNjYW5LZXlEYXRhIGtleVsyXTsKKwlUYWJsZVNjYW5EZXNjIHNj YW47CisJSGVhcFR1cGxlCXR1cGxlOworCisJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0 aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZrZXlb MF0sCisJCQkJQW51bV9wZ19jbGFzc19yZWxuYW1lc3BhY2UsCisJCQkJQlRFcXVhbFN0cmF0 ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCXNjaGVtYWlkKTsKKwlTY2FuS2V5SW5pdCgma2V5 WzFdLAorCQkJCUFudW1fcGdfY2xhc3NfcmVsa2luZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lO dW1iZXIsIEZfQ0hBUkVRLAorCQkJCUNoYXJHZXREYXR1bShSRUxLSU5EX1BBUlRJVElPTkVE X1RBQkxFKSk7CisKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX2NhdGFsb2coY2xhc3NSZWws IDIsIGtleSk7CisJd2hpbGUgKCh0dXBsZSA9IGhlYXBfZ2V0bmV4dChzY2FuLCBGb3J3YXJk U2NhbkRpcmVjdGlvbikpICE9IE5VTEwpCisJeworCQlGb3JtX3BnX2NsYXNzIHJlbEZvcm0g PSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKTsKKwkJT2lkCQkJZm9yZWlnbl90 YmxfcmVsaWQ7CisKKwkJaWYgKGNoZWNrX3BhcnRyZWxfaGFzX2ZvcmVpZ25fdGFibGUocmVs Rm9ybSwgJmZvcmVpZ25fdGJsX3JlbGlkKSkKKwkJeworCQkJTGlzdAkgICAqYW5jZXN0b3Jz ID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsRm9ybS0+b2lkKTsKKwkJCU9pZAkJCXBh cmVudF9vaWQgPSByZWxGb3JtLT5vaWQ7CisJCQljaGFyCSAgICpwYXJlbnRfbmFtZTsKKwor CQkJZm9yZWFjaF9vaWQoYW5jZXN0b3IsIGFuY2VzdG9ycykKKwkJCXsKKwkJCQlPaWQJCQlh bmNlc3Rvcl9zY2hlbWFpZCA9IGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9yKTsKKworCQkJ CWlmIChhbmNlc3Rvcl9zY2hlbWFpZCA9PSBzY2hlbWFpZCkKKwkJCQkJcGFyZW50X29pZCA9 IGFuY2VzdG9yOworCQkJfQorCisJCQlwYXJlbnRfbmFtZSA9IGdldF9yZWxfbmFtZShwYXJl bnRfb2lkKTsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coImNhbm5vdCBhZGQgcmVs YXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKKwkJCQkJCQlwYXJlbnRfbmFtZSksCisJ CQkJCSBlcnJkZXRhaWwoImZvcmVpZ24gdGFibGUgXCIlc1wiIGlzIGEgcGFydGl0aW9uIG9m IHBhcnRpdGlvbmVkIHRhYmxlIFwiJXNcIiIsCisJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKGZv cmVpZ25fdGJsX3JlbGlkKSwgcGFyZW50X25hbWUpKSk7CisJCX0KKwl9CisKKwl0YWJsZV9l bmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKGNsYXNzUmVsLCBBY2Nlc3NTaGFyZUxvY2sp OworfQorCisvKiBDaGVjayBpZiBhbnkgZm9yZWlnbiB0YWJsZSBpcyBhIHBhcnRpdGlvbiB0 YWJsZSAqLwordm9pZAorY2hlY2tfZm9yZWlnbl90YWJsZXModm9pZCkKK3sKKwlSZWxhdGlv bgljbGFzc1JlbDsKKwlTY2FuS2V5RGF0YSBrZXlbMV07CisJVGFibGVTY2FuRGVzYyBzY2Fu OworCUhlYXBUdXBsZQl0dXBsZTsKKworCWNsYXNzUmVsID0gdGFibGVfb3BlbihSZWxhdGlv blJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgma2V5WzBd LAorCQkJCUFudW1fcGdfY2xhc3NfcmVsa2luZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfQ0hBUkVRLAorCQkJCUNoYXJHZXREYXR1bShSRUxLSU5EX0ZPUkVJR05fVEFCTEUp KTsKKworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fY2F0YWxvZyhjbGFzc1JlbCwgMSwga2V5 KTsKKwl3aGlsZSAoKHR1cGxlID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGly ZWN0aW9uKSkgIT0gTlVMTCkKKwl7CisJCUZvcm1fcGdfY2xhc3MgcmVsRm9ybSA9IChGb3Jt X3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCWlmIChyZWxGb3JtLT5yZWxpc3Bh cnRpdGlvbikKKwkJeworCQkJT2lkCQkJcGFyZW50X29pZDsKKwkJCWNoYXIJICAgKnBhcmVu dF9uYW1lOworCQkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3Rv cnMocmVsRm9ybS0+b2lkKTsKKworCQkJcGFyZW50X29pZCA9IGxsYXN0X29pZChhbmNlc3Rv cnMpOworCQkJcGFyZW50X25hbWUgPSBnZXRfcmVsX25hbWUocGFyZW50X29pZCk7CisKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0 byBwdWJsaWNhdGlvbiIsCisJCQkJCQkJcGFyZW50X25hbWUpLAorCQkJCQkgZXJyZGV0YWls KCJmb3JlaWduIHRhYmxlIFwiJXNcIiBpcyBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0 YWJsZSBcIiVzXCIiLAorCQkJCQkJCSAgIE5hbWVTdHIocmVsRm9ybS0+cmVsbmFtZSksIHBh cmVudF9uYW1lKSkpOworCQl9CisJfQorCisJdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJs ZV9jbG9zZShjbGFzc1JlbCwgQWNjZXNzU2hhcmVMb2NrKTsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggOTUxZmZhYmI2NS4uNzI1OGQ2YzMzZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTg1NSw2ICs4 NTUsOSBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1 YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBw dWJsaWNhdGlvbi4gKi8KIAlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCiAJeworCQkvKiBD aGVjayBpZiBhbnkgZm9yZWlnbiB0YWJsZSBpcyBhIHBhcnQgb2YgcGFydGl0aW9uZWQgdGFi bGUgKi8KKwkJY2hlY2tfZm9yZWlnbl90YWJsZXMoKTsKKwogCQkvKiBJbnZhbGlkYXRlIHJl bGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LiAqLwogCQlDYWNo ZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKaW5kZXggZDYxN2M0YmM2My4uNGNmN2I3NDU0ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKQEAgLTE5MjIyLDYgKzE5MjIyLDcgQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9u KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJT2lk CQkJZGVmYXVsdFBhcnRPaWQ7CiAJTGlzdAkgICAqcGFydEJvdW5kQ29uc3RyYWludDsKIAlQ YXJzZVN0YXRlICpwc3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7CisJT2lkCQkJZm9y ZWlnbl90YmxfcmVsaWQ7CiAKIAlwc3RhdGUtPnBfc291cmNldGV4dCA9IGNvbnRleHQtPnF1 ZXJ5U3RyaW5nOwogCkBAIC0xOTM0Nyw2ICsxOTM0OCwzOCBAQCBBVEV4ZWNBdHRhY2hQYXJ0 aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwK IAkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKIAkJCQkgZXJybXNn KCJjYW5ub3QgYXR0YWNoIHRlbXBvcmFyeSByZWxhdGlvbiBvZiBhbm90aGVyIHNlc3Npb24g YXMgcGFydGl0aW9uIikpKTsKIAorCS8qCisJICogSWYgdGFibGUgaXMgYSBwYXJ0aXRpb25l ZCB0YWJsZSBhbmQgaGFzIGEgZm9yZWlnbiB0YWJsZSBhcyBpdHMKKwkgKiBwYXJ0aXRpb24g YW5kIHRoZSBwYXJlbnQgcmVsYXRpb24gaXMgcHVibGlzaGVkLgorCSAqLworCWlmIChjaGVj a19wYXJ0cmVsX2hhc19mb3JlaWduX3RhYmxlKFJlbGF0aW9uR2V0Rm9ybShhdHRhY2hyZWwp LCAmZm9yZWlnbl90YmxfcmVsaWQpKQorCXsKKwkJT2lkCQkJc2NoZW1haWQgPSBSZWxhdGlv bkdldE5hbWVzcGFjZShyZWwpOworCQlMaXN0CSAgICpwdWJvaWRzID0gR2V0UmVsYXRpb25Q dWJsaWNhdGlvbnMocmVsLT5yZF9pZCk7CisJCUxpc3QJICAgKmFuY2VzdG9yczsKKworCQlw dWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRBbGxUYWJsZXNQ dWJsaWNhdGlvbnMoKSk7CisJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1 Ym9pZHMsIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOworCQlhbmNlc3RvcnMg PSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWwtPnJkX2lkKTsKKworCQlmb3JlYWNoX29p ZChhbmNlc3RvciwgYW5jZXN0b3JzKQorCQl7CisJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRf dW5pcXVlX29pZChwdWJvaWRzLAorCQkJCQkJCQkJCQkgR2V0UmVsYXRpb25QdWJsaWNhdGlv bnMoYW5jZXN0b3IpKTsKKwkJCXNjaGVtYWlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0 b3IpOworCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKKwkJ CQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOworCQl9CisKKwkJ aWYgKHB1Ym9pZHMpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IGF0dGFjaCBhIHBh cnRpdGlvbmVkIHRhYmxlIHdpdGggYSBmb3JlaWduIHRhYmxlIGFzIHBhcnRpdGlvbiBvZiBh IHB1Ymxpc2hlZCB0YWJsZSIpLAorCQkJCQkgZXJyZGV0YWlsKCJmb3JlaWduIHRhYmxlIFwi JXNcIiBpcyBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIiLAorCQkJ CQkJCSAgIGdldF9yZWxfbmFtZShmb3JlaWduX3RibF9yZWxpZCksCisJCQkJCQkJICAgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoYXR0YWNocmVsKSkpKTsKKwl9CisKIAkvKgogCSAqIENo ZWNrIGlmIGF0dGFjaHJlbCBoYXMgYW55IGlkZW50aXR5IGNvbHVtbnMgb3IgYW55IGNvbHVt bnMgdGhhdCBhcmVuJ3QKIAkgKiBpbiB0aGUgcGFyZW50LgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5oCmluZGV4IDQ4YzdkMWE4NjEuLmJhNTFmNGE3MjEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE5LDYgKzE5LDcgQEAKIAogI2lu Y2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRy ZXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzcy5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfcHVibGljYXRpb25fZC5oIgkvKiBJV1lVIHByYWdtYTogZXhwb3J0ICovCiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0KQEAgLTE5MSw0ICsxOTIsMTEgQEAgZXh0ZXJuIEJpdG1hcHNl dCAqcHViX2NvbGxpc3RfdG9fYml0bWFwc2V0KEJpdG1hcHNldCAqY29sdW1ucywgRGF0dW0g cHViY29scywKIGV4dGVybiBCaXRtYXBzZXQgKnB1Yl9mb3JtX2NvbHNfbWFwKFJlbGF0aW9u IHJlbGF0aW9uLAogCQkJCQkJCQkJUHVibGlzaEdlbmNvbHNUeXBlIGluY2x1ZGVfZ2VuY29s c190eXBlKTsKIAorZXh0ZXJuIGJvb2wgY2hlY2tfcGFydHJlbF9oYXNfZm9yZWlnbl90YWJs ZShGb3JtX3BnX2NsYXNzIHJlbGZvcm0sCisJCQkJCQkJCQkJCU9pZCAqZm9yZWlnbl90Ymxf bmFtZSk7CisKK2V4dGVybiB2b2lkIGNoZWNrX2ZvcmVpZ25fdGFibGVzX2luX3NjaGVtYShP aWQgc2NoZW1haWQpOworCitleHRlcm4gdm9pZCBjaGVja19mb3JlaWduX3RhYmxlcyh2b2lk KTsKKwogI2VuZGlmCQkJCQkJCS8qIFBHX1BVQkxJQ0FUSU9OX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggYmMzODk4ZmJlNS4uYmMw MGMyMmYxNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNh dGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5v dXQKQEAgLTE4ODUsNiArMTg4NSwzOCBAQCBEUk9QIFBVQkxJQ0FUSU9OIHB1YjE7CiBEUk9Q IFBVQkxJQ0FUSU9OIHB1YjI7CiBEUk9QIFRBQkxFIGdlbmNvbHM7CiBSRVNFVCBjbGllbnRf bWluX21lc3NhZ2VzOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHdoZW4gZm9yZWlnbiB0YWJsZSBpcyBhIHBh cnRpdGlvbiBvZiBhIHBhcnRpdGlvbmVkIHRhYmxlIG9uIHdoaWNoCistLSBwdWJsaWNhdGlv biBpcyBjcmVhdGVkCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVB VEUgRk9SRUlHTiBEQVRBIFdSQVBQRVIgdGVzdF9mZHc7CitDUkVBVEUgU0VSVkVSIGZkd19z ZXJ2ZXIgRk9SRUlHTiBEQVRBIFdSQVBQRVIgdGVzdF9mZHc7CitDUkVBVEUgU0NIRU1BIHNj aDM7CitDUkVBVEUgVEFCTEUgc2NoMy50bWFpbihpZCBpbnQpIFBBUlRJVElPTiBCWSBSQU5H RShpZCk7CitDUkVBVEUgVEFCTEUgc2NoMy5wYXJ0MSBQQVJUSVRJT04gT0Ygc2NoMy50bWFp biBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFURSBUQUJMRSBzY2gzLnBhcnQy KGlkIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGlkKTsKK0NSRUFURSBGT1JFSUdOIFRBQkxF IHNjaDMucGFydDJfMSBQQVJUSVRJT04gT0Ygc2NoMy5wYXJ0MiBGT1IgVkFMVUVTIEZST00g KDUpIFRPICgxMCkgU0VSVkVSIGZkd19zZXJ2ZXI7CitBTFRFUiBUQUJMRSBzY2gzLnRtYWlu IEFUVEFDSCBQQVJUSVRJT04gc2NoMy5wYXJ0MiBGT1IgVkFMVUVTIEZST00gKDUpIFRPICgx MCk7CitDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgVEFCTEUgc2NoMy50bWFpbjsKK0VS Uk9SOiAgY2Fubm90IGFkZCByZWxhdGlvbiAidG1haW4iIHRvIHB1YmxpY2F0aW9uCitERVRB SUw6ICBmb3JlaWduIHRhYmxlICJwYXJ0Ml8xIiBpcyBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRp b25lZCB0YWJsZSAidG1haW4iCitDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgVEFCTEVT IElOIFNDSEVNQSBzY2gzOworRVJST1I6ICBjYW5ub3QgYWRkIHJlbGF0aW9uICJ0bWFpbiIg dG8gcHVibGljYXRpb24KK0RFVEFJTDogIGZvcmVpZ24gdGFibGUgInBhcnQyXzEiIGlzIGEg cGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJ0bWFpbiIKK0NSRUFURSBQVUJMSUNB VElPTiBwdWIxIEZPUiBBTEwgVEFCTEVTOworRVJST1I6ICBjYW5ub3QgYWRkIHJlbGF0aW9u ICJ0bWFpbiIgdG8gcHVibGljYXRpb24KK0RFVEFJTDogIGZvcmVpZ24gdGFibGUgInBhcnQy XzEiIGlzIGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJ0bWFpbiIKKy0tIFRl c3Qgd2hlbiBhIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggZm9yZWlnbiB0YWJsZSBhcyBhIHBh cnRpdGlvbiBpcyBhdHRhY2hlZAorLS0gdG8gcGFydGl0aW9uZWQgdGFibGUgd2hpY2ggaXMg YWxyZWFkeSBwdWJsaXNoZWQKK0FMVEVSIFRBQkxFIHNjaDMudG1haW4gREVUQUNIIFBBUlRJ VElPTiBzY2gzLnBhcnQyOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEgRk9SIFRBQkxFIHNj aDMudG1haW47CitBTFRFUiBUQUJMRSBzY2gzLnRtYWluIEFUVEFDSCBQQVJUSVRJT04gc2No My5wYXJ0MiBGT1IgVkFMVUVTIEZST00gKDUpIFRPICgxMCk7CitFUlJPUjogIGNhbm5vdCBh dHRhY2ggYSBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIGEgZm9yZWlnbiB0YWJsZSBhcyBwYXJ0 aXRpb24gb2YgYSBwdWJsaXNoZWQgdGFibGUKK0RFVEFJTDogIGZvcmVpZ24gdGFibGUgInBh cnQyXzEiIGlzIGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0MiIKK0RS T1AgUFVCTElDQVRJT04gcHViMTsKK0RST1AgU0NIRU1BIHNjaDMgQ0FTQ0FERTsKK0RST1Ag U0VSVkVSIGZkd19zZXJ2ZXI7CitEUk9QIEZPUkVJR04gREFUQSBXUkFQUEVSIHRlc3RfZmR3 OwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwogRFJPUCBST0xFIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIERST1AgUk9MRSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXJfZHVtbXk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJs aWNhdGlvbi5zcWwKaW5kZXggNDdmMDMyOWMyNC4uZDBkNWUyMjk0OSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMTE4Niw2ICsxMTg2LDM2IEBAIERST1Ag UFVCTElDQVRJT04gcHViMjsKIERST1AgVEFCTEUgZ2VuY29sczsKIAogUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorCistLSBUZXN0IHdoZW4gZm9yZWlnbiB0YWJsZSBpcyBh IHBhcnRpdGlvbiBvZiBhIHBhcnRpdGlvbmVkIHRhYmxlIG9uIHdoaWNoCistLSBwdWJsaWNh dGlvbiBpcyBjcmVhdGVkCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitD UkVBVEUgRk9SRUlHTiBEQVRBIFdSQVBQRVIgdGVzdF9mZHc7CitDUkVBVEUgU0VSVkVSIGZk d19zZXJ2ZXIgRk9SRUlHTiBEQVRBIFdSQVBQRVIgdGVzdF9mZHc7CisKK0NSRUFURSBTQ0hF TUEgc2NoMzsKK0NSRUFURSBUQUJMRSBzY2gzLnRtYWluKGlkIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFKGlkKTsKK0NSRUFURSBUQUJMRSBzY2gzLnBhcnQxIFBBUlRJVElPTiBPRiBzY2gz LnRtYWluIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworQ1JFQVRFIFRBQkxFIHNjaDMu cGFydDIoaWQgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoaWQpOworQ1JFQVRFIEZPUkVJR04g VEFCTEUgc2NoMy5wYXJ0Ml8xIFBBUlRJVElPTiBPRiBzY2gzLnBhcnQyIEZPUiBWQUxVRVMg RlJPTSAoNSkgVE8gKDEwKSBTRVJWRVIgZmR3X3NlcnZlcjsKK0FMVEVSIFRBQkxFIHNjaDMu dG1haW4gQVRUQUNIIFBBUlRJVElPTiBzY2gzLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoNSkg VE8gKDEwKTsKKworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEgRk9SIFRBQkxFIHNjaDMudG1h aW47CitDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgVEFCTEVTIElOIFNDSEVNQSBzY2gz OworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEgRk9SIEFMTCBUQUJMRVM7CisKKy0tIFRlc3Qg d2hlbiBhIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggZm9yZWlnbiB0YWJsZSBhcyBhIHBhcnRp dGlvbiBpcyBhdHRhY2hlZAorLS0gdG8gcGFydGl0aW9uZWQgdGFibGUgd2hpY2ggaXMgYWxy ZWFkeSBwdWJsaXNoZWQKK0FMVEVSIFRBQkxFIHNjaDMudG1haW4gREVUQUNIIFBBUlRJVElP TiBzY2gzLnBhcnQyOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEgRk9SIFRBQkxFIHNjaDMu dG1haW47CitBTFRFUiBUQUJMRSBzY2gzLnRtYWluIEFUVEFDSCBQQVJUSVRJT04gc2NoMy5w YXJ0MiBGT1IgVkFMVUVTIEZST00gKDUpIFRPICgxMCk7CisKK0RST1AgUFVCTElDQVRJT04g cHViMTsKK0RST1AgU0NIRU1BIHNjaDMgQ0FTQ0FERTsKK0RST1AgU0VSVkVSIGZkd19zZXJ2 ZXI7CitEUk9QIEZPUkVJR04gREFUQSBXUkFQUEVSIHRlc3RfZmR3OworCiBSRVNFVCBTRVNT SU9OIEFVVEhPUklaQVRJT047CiBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy LCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBST0xFIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlcl9kdW1teTsKLS0gCjIuMzQuMQoK --------------trijTYUyDWCT09F0hFVS6dPC Content-Type: text/x-patch; charset=UTF-8; name="v2-0002-Restrict-publishing-of-foreign-tables-and-partitione.patch" Content-Disposition: attachment; filename*0="v2-0002-Restrict-publishing-of-foreign-tables-and-partitione"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSA2NjkyYTJmYWE4N2M4ODI5MTg5YmFmNTVkYzQwNTI3ODgyYWJmMDlmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTZXJnZXkgVGF0YXJpbnRzZXYgPHMudGF0YXJpbnRz ZXZAcG9zdGdyZXNwcm8ucnU+CkRhdGU6IFdlZCwgMjkgSmFuIDIwMjUgMjA6NDA6MTYgKzA3 MDAKU3ViamVjdDogW1BBVENIXSBSZXN0cmljdCBwdWJsaXNoaW5nIG9mIGZvcmVpZ24gdGFi bGVzIGFuZCBwYXJ0aXRpb25lZCB0YWJsZXMKIHdpdGggYSBmb3JlaWduIHRhYmxlIGFzIHBh cnRpdGlvbgoKQWRkZWQgZm9yZWlnbiB0YWJsZSBjaGVja2luZywgY3JlYXRpbmcgZm9yZWln biBwYXJpdGlvbnMgKyBzb21lIGZpeGVzCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jIHwgMTkgKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2ZvcmVpZ25jbWRzLmMgICB8IDM3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICB8IDMwICsrKysrKysrKysrKysr Ky0tLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCB8IDE0ICsr KysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDE2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRp b24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCBlZjhh MzkyMDc3Li41ODMyNDhjNDhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlv bi5jCkBAIC0xMzQ5LDYgKzEzNDksNyBAQCBjaGVja19wYXJ0cmVsX2hhc19mb3JlaWduX3Rh YmxlKEZvcm1fcGdfY2xhc3MgcmVsZm9ybSwgT2lkICpmb3JlaWduX3RibF9yZWxpZCkKIHsK IAlib29sCQloYXNfZm9yZWlnbl90YmwgPSBmYWxzZTsKIAorCSpmb3JlaWduX3RibF9yZWxp ZCA9IEludmFsaWRPaWQ7CiAJaWYgKHJlbGZvcm0tPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJU SVRJT05FRF9UQUJMRSkKIAl7CiAJCUxpc3QJICAgKnJlbGlkcyA9IE5JTDsKQEAgLTEzODQs NyArMTM4NSw3IEBAIHZvaWQKIGNoZWNrX2ZvcmVpZ25fdGFibGVzX2luX3NjaGVtYShPaWQg c2NoZW1haWQpCiB7CiAJUmVsYXRpb24JY2xhc3NSZWw7Ci0JU2NhbktleURhdGEga2V5WzJd OworCVNjYW5LZXlEYXRhIGtleVsxXTsKIAlUYWJsZVNjYW5EZXNjIHNjYW47CiAJSGVhcFR1 cGxlCXR1cGxlOwogCkBAIC0xMzk0LDE4ICsxMzk1LDE1IEBAIGNoZWNrX2ZvcmVpZ25fdGFi bGVzX2luX3NjaGVtYShPaWQgc2NoZW1haWQpCiAJCQkJQW51bV9wZ19jbGFzc19yZWxuYW1l c3BhY2UsCiAJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAogCQkJCXNjaGVt YWlkKTsKLQlTY2FuS2V5SW5pdCgma2V5WzFdLAotCQkJCUFudW1fcGdfY2xhc3NfcmVsa2lu ZCwKLQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfQ0hBUkVRLAotCQkJCUNoYXJHZXRE YXR1bShSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSk7CiAKLQlzY2FuID0gdGFibGVfYmVn aW5zY2FuX2NhdGFsb2coY2xhc3NSZWwsIDIsIGtleSk7CisJc2NhbiA9IHRhYmxlX2JlZ2lu c2Nhbl9jYXRhbG9nKGNsYXNzUmVsLCAxLCBrZXkpOwogCXdoaWxlICgodHVwbGUgPSBoZWFw X2dldG5leHQoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24pKSAhPSBOVUxMKQogCXsKIAkJ Rm9ybV9wZ19jbGFzcyByZWxGb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBs ZSk7CiAJCU9pZAkJCWZvcmVpZ25fdGJsX3JlbGlkOwogCi0JCWlmIChjaGVja19wYXJ0cmVs X2hhc19mb3JlaWduX3RhYmxlKHJlbEZvcm0sICZmb3JlaWduX3RibF9yZWxpZCkpCisJCWlm IChyZWxGb3JtLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgJiYKKwkJ CWNoZWNrX3BhcnRyZWxfaGFzX2ZvcmVpZ25fdGFibGUocmVsRm9ybSwgJmZvcmVpZ25fdGJs X3JlbGlkKSkKIAkJewogCQkJTGlzdAkgICAqYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9h bmNlc3RvcnMocmVsRm9ybS0+b2lkKTsKIAkJCU9pZAkJCXBhcmVudF9vaWQgPSByZWxGb3Jt LT5vaWQ7CkBAIC0xNDE5LDYgKzE0MTcsNyBAQCBjaGVja19mb3JlaWduX3RhYmxlc19pbl9z Y2hlbWEoT2lkIHNjaGVtYWlkKQogCQkJCQlwYXJlbnRfb2lkID0gYW5jZXN0b3I7CiAJCQl9 CiAKKwkJCWxpc3RfZnJlZShhbmNlc3RvcnMpOwogCQkJcGFyZW50X25hbWUgPSBnZXRfcmVs X25hbWUocGFyZW50X29pZCk7CiAKIAkJCWVyZXBvcnQoRVJST1IsCkBAIC0xNDI4LDYgKzE0 MjcsMTIgQEAgY2hlY2tfZm9yZWlnbl90YWJsZXNfaW5fc2NoZW1hKE9pZCBzY2hlbWFpZCkK IAkJCQkJIGVycmRldGFpbCgiZm9yZWlnbiB0YWJsZSBcIiVzXCIgaXMgYSBwYXJ0aXRpb24g b2YgcGFydGl0aW9uZWQgdGFibGUgXCIlc1wiIiwKIAkJCQkJCQkgICBnZXRfcmVsX25hbWUo Zm9yZWlnbl90YmxfcmVsaWQpLCBwYXJlbnRfbmFtZSkpKTsKIAkJfQorCQllbHNlIGlmIChy ZWxGb3JtLT5yZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAorCQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJsaWNh dGlvbiIsCisJCQkJCQkJZ2V0X3JlbF9uYW1lKHJlbEZvcm0tPm9pZCkpLAorCQkJCQkgZXJy ZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChSRUxLSU5EX0ZPUkVJR05fVEFCTEUpKSk7 CiAJfQogCiAJdGFibGVfZW5kc2NhbihzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2ZvcmVpZ25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9mb3JlaWdu Y21kcy5jCmluZGV4IGMxNGUwMzhkNTQuLmYxYzI3YWIzNTIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2ZvcmVpZ25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZm9yZWlnbmNtZHMuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv ZGVwZW5kZW5jeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKICNpbmNsdWRl ICJjYXRhbG9nL29iamVjdGFjY2Vzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9u LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19mb3JlaWduX2RhdGFfd3JhcHBlci5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfZm9yZWlnbl9zZXJ2ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX2ZvcmVpZ25fdGFibGUuaCIKQEAgLTE0MjMsNiArMTQyNCw0MiBAQCBDcmVhdGVGb3Jl aWduVGFibGUoQ3JlYXRlRm9yZWlnblRhYmxlU3RtdCAqc3RtdCwgT2lkIHJlbGlkKQogCiAJ ZnRyZWwgPSB0YWJsZV9vcGVuKEZvcmVpZ25UYWJsZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOwogCisJaWYgKHN0bXQtPmJhc2UuaW5oUmVsYXRpb25zKQorCXsKKwkJT2lkCQkJ Zm9yZWlnbl90YmxfcmVsaWQ7CisJCVJhbmdlVmFyICAgKnJvb3QgPSBjYXN0Tm9kZShSYW5n ZVZhciwgbGZpcnN0KGxpc3RfaGVhZChzdG10LT5iYXNlLmluaFJlbGF0aW9ucykpKTsKKwkJ UmVsYXRpb24Jcm9vdHJlbCA9IHRhYmxlX29wZW5ydihyb290LCBBY2Nlc3NTaGFyZUxvY2sp OworCisJCWlmIChjaGVja19wYXJ0cmVsX2hhc19mb3JlaWduX3RhYmxlKFJlbGF0aW9uR2V0 Rm9ybShyb290cmVsKSwgJmZvcmVpZ25fdGJsX3JlbGlkKSkKKwkJeworCQkJT2lkCQkJc2No ZW1haWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyb290cmVsKTsKKwkJCUxpc3QJICAgKnB1 Ym9pZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCk7CisJCQlMaXN0CSAgICph bmNlc3RvcnM7CisKKwkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9p ZHMsIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpKTsKKwkJCXB1Ym9pZHMgPSBsaXN0X2Nv bmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFp ZCkpOworCQkJYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpOwor CisJCQlmb3JlYWNoX29pZChhbmNlc3RvciwgYW5jZXN0b3JzKQorCQkJeworCQkJCXB1Ym9p ZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJCQkJCQkJCQkgR2V0 UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpKTsKKwkJCQlzY2hlbWFpZCA9IGdldF9y ZWxfbmFtZXNwYWNlKGFuY2VzdG9yKTsKKwkJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5p cXVlX29pZChwdWJvaWRzLAorCQkJCQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhz Y2hlbWFpZCkpOworCQkJfQorCisJCQlpZiAocHVib2lkcykKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkg ZXJybXNnKCJjYW5ub3QgYXR0YWNoIGEgcGFydGl0aW9uZWQgdGFibGUgd2l0aCBhIGZvcmVp Z24gdGFibGUgYXMgcGFydGl0aW9uIG9mIGEgcHVibGlzaGVkIHRhYmxlIiksCisJCQkJCQkg ZXJyZGV0YWlsKCJmb3JlaWduIHRhYmxlIFwiJXNcIiBpcyBhIHBhcnRpdGlvbiBvZiBwYXJ0 aXRpb25lZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkJCQkgICBnZXRfcmVsX25hbWUoZm9yZWln bl90YmxfcmVsaWQpLAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyb290 cmVsKSkpKTsKKwkJfQorCQl0YWJsZV9jbG9zZShyb290cmVsLCBBY2Nlc3NTaGFyZUxvY2sp OworCX0KKwogCS8qCiAJICogRm9yIG5vdyB0aGUgb3duZXIgY2Fubm90IGJlIHNwZWNpZmll ZCBvbiBjcmVhdGUuIFVzZSBlZmZlY3RpdmUgdXNlciBJRC4KIAkgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKaW5kZXggNGNmN2I3NDU0ZC4uNTEyMDI4ODEwZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE5MzQ5LDEwICsxOTM0OSwxMSBAQCBBVEV4ZWNB dHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25D bWQgKmNtZCwKIAkJCQkgZXJybXNnKCJjYW5ub3QgYXR0YWNoIHRlbXBvcmFyeSByZWxhdGlv biBvZiBhbm90aGVyIHNlc3Npb24gYXMgcGFydGl0aW9uIikpKTsKIAogCS8qCi0JICogSWYg dGFibGUgaXMgYSBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgaGFzIGEgZm9yZWlnbiB0YWJsZSBh cyBpdHMKLQkgKiBwYXJ0aXRpb24gYW5kIHRoZSBwYXJlbnQgcmVsYXRpb24gaXMgcHVibGlz aGVkLgorCSAqIEluIGNhc2Ugb2YgZm9yZWlnbiB0YWJsZSBvZiBpZiB0YWJsZSBpcyBhIHBh cnRpdGlvbmVkIHRhYmxlIGFuZCBoYXMgYQorCSAqIGZvcmVpZ24gdGFibGUgYXMgaXRzIHBh cnRpdGlvbiBhbmQgdGhlIHBhcmVudCByZWxhdGlvbiBpcyBwdWJsaXNoZWQKIAkgKi8KLQlp ZiAoY2hlY2tfcGFydHJlbF9oYXNfZm9yZWlnbl90YWJsZShSZWxhdGlvbkdldEZvcm0oYXR0 YWNocmVsKSwgJmZvcmVpZ25fdGJsX3JlbGlkKSkKKwlpZiAoY2hlY2tfcGFydHJlbF9oYXNf Zm9yZWlnbl90YWJsZShSZWxhdGlvbkdldEZvcm0oYXR0YWNocmVsKSwgJmZvcmVpZ25fdGJs X3JlbGlkKSB8fAorCQlhdHRhY2hyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX0ZP UkVJR05fVEFCTEUpCiAJewogCQlPaWQJCQlzY2hlbWFpZCA9IFJlbGF0aW9uR2V0TmFtZXNw YWNlKHJlbCk7CiAJCUxpc3QJICAgKnB1Ym9pZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9u cyhyZWwtPnJkX2lkKTsKQEAgLTE5MzcwLDE0ICsxOTM3MSwyNSBAQCBBVEV4ZWNBdHRhY2hQ YXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNt ZCwKIAkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCiAJCQkJ CQkJCQkJCSBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoc2NoZW1haWQpKTsKIAkJfQorCQlsaXN0 X2ZyZWUoYW5jZXN0b3JzKTsKIAogCQlpZiAocHVib2lkcykKLQkJCWVyZXBvcnQoRVJST1Is Ci0JCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAotCQkJCQkgZXJy bXNnKCJjYW5ub3QgYXR0YWNoIGEgcGFydGl0aW9uZWQgdGFibGUgd2l0aCBhIGZvcmVpZ24g dGFibGUgYXMgcGFydGl0aW9uIG9mIGEgcHVibGlzaGVkIHRhYmxlIiksCi0JCQkJCSBlcnJk ZXRhaWwoImZvcmVpZ24gdGFibGUgXCIlc1wiIGlzIGEgcGFydGl0aW9uIG9mIHBhcnRpdGlv bmVkIHRhYmxlIFwiJXNcIiIsCi0JCQkJCQkJICAgZ2V0X3JlbF9uYW1lKGZvcmVpZ25fdGJs X3JlbGlkKSwKLQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRhY2hyZWwp KSkpOworCQl7CisJCQlpZiAoYXR0YWNocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkgZXJybXNnKCJjYW5ub3Qg YXR0YWNoIGEgcGFydGl0aW9uZWQgdGFibGUgd2l0aCBhIGZvcmVpZ24gdGFibGUgYXMgcGFy dGl0aW9uIG9mIGEgcHVibGlzaGVkIHRhYmxlIiksCisJCQkJCQkgZXJyZGV0YWlsKCJmb3Jl aWduIHRhYmxlIFwiJXNcIiBpcyBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSBc IiVzXCIiLAorCQkJCQkJCQkgICBnZXRfcmVsX25hbWUoZm9yZWlnbl90YmxfcmVsaWQpLAor CQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRhY2hyZWwpKSkpOworCQkJ ZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJtc2coImNhbm5vdCBhZGQgcmVsYXRp b24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKKwkJCQkJCQkJZ2V0X3JlbF9uYW1lKGF0dGFj aHJlbC0+cmRfcmVsLT5vaWQpKSwKKwkJCQkJCSBlcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3Vw cG9ydGVkKFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkpKTsKKworCQl9CiAJfQogCiAJLyoKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCBkMGQ1ZTIyOTQ5Li5kMTQy MjM4MDYwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0xMjEx LDYgKzEyMTEsMjAgQEAgQUxURVIgVEFCTEUgc2NoMy50bWFpbiBERVRBQ0ggUEFSVElUSU9O IHNjaDMucGFydDI7CiBDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgVEFCTEUgc2NoMy50 bWFpbjsKIEFMVEVSIFRBQkxFIHNjaDMudG1haW4gQVRUQUNIIFBBUlRJVElPTiBzY2gzLnBh cnQyIEZPUiBWQUxVRVMgRlJPTSAoNSkgVE8gKDEwKTsKIAorLS0gQ2FuJ3QgY3JlYXRlIGZv cmVpZ24gcGFydGl0aW9uIG9mIHB1Ymxpc2hlZCB0YWJsZQorQ1JFQVRFIEZPUkVJR04gVEFC TEUgc2NoMy5wYXJ0M18xIFBBUlRJVElPTiBPRiBzY2gzLnRtYWluIEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgxNSkgU0VSVkVSIGZkd19zZXJ2ZXI7CisKKy0tIENhbid0IGF0dGFjaCBm b3JlaWduIHBhcnRpdGlvbiB0byBwdWJsaXNoZWQgdGFibGUKK0NSRUFURSBGT1JFSUdOIFRB QkxFIHNjaDMucGFydDNfMihpZCBpbnQpIFNFUlZFUiBmZHdfc2VydmVyOworQUxURVIgVEFC TEUgc2NoMy50bWFpbiBBVFRBQ0ggUEFSVElUSU9OIHNjaDMucGFydDNfMiBGT1IgVkFMVUVT IEZST00gKDE1KSBUTyAoMjApOworCistLSBDYW4ndCBjcmVhdGUgcHVibGljYXRpb24gZm9y IHNjaGVtYSB3aXRoIGZvcmVpZ24gdGFibGVzCitDUkVBVEUgU0NIRU1BIHNjaDQ7CitDUkVB VEUgRk9SRUlHTiBUQUJMRSBzY2g0LmZ0YWJsZShpZCBpbnQpIFNFUlZFUiBmZHdfc2VydmVy OworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9zY2g0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNj aDQ7CisKK0RST1AgU0NIRU1BIHNjaDQgQ0FTQ0FERTsKKwogRFJPUCBQVUJMSUNBVElPTiBw dWIxOwogRFJPUCBTQ0hFTUEgc2NoMyBDQVNDQURFOwogRFJPUCBTRVJWRVIgZmR3X3NlcnZl cjsKLS0gCjIuNDMuMAoK --------------trijTYUyDWCT09F0hFVS6dPC--