Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aqeAC-00049H-AJ for pgadmin-hackers@arkaria.postgresql.org; Thu, 14 Apr 2016 10:06:16 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1aqeAA-0001dw-Or for pgadmin-hackers@arkaria.postgresql.org; Thu, 14 Apr 2016 10:06:14 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1aqdlo-0003uQ-1y for pgadmin-hackers@postgresql.org; Thu, 14 Apr 2016 09:41:04 +0000 Received: from forward22h.cmail.yandex.net ([2a02:6b8:0:f35::36]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1aqdlh-0005JD-Bj for pgadmin-hackers@postgresql.org; Thu, 14 Apr 2016 09:41:02 +0000 Received: from smtp4h.mail.yandex.net (smtp4h.mail.yandex.net [84.201.186.21]) by forward22h.cmail.yandex.net (Yandex) with ESMTP id E23A821068 for ; Thu, 14 Apr 2016 12:40:50 +0300 (MSK) Received: from smtp4h.mail.yandex.net (localhost [127.0.0.1]) by smtp4h.mail.yandex.net (Yandex) with ESMTP id 7D6AC2C7CC2 for ; Thu, 14 Apr 2016 12:40:50 +0300 (MSK) Received: by smtp4h.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id 4KyTtNb4cP-enq4Z8IQ; Thu, 14 Apr 2016 12:40:49 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client certificate not present) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1460626849; bh=zaO02wwXBqGlgXfKj3Z8/n5Dhpdq4EU/22efXYCY9EY=; h=To:From:Subject:Message-ID:Date:User-Agent:MIME-Version: Content-Type; b=EnjA/qgICmKyJBsMAALcwpiMHRuM2gluV2xW8ABYPumqUsyaOTOwvwmNME/QF049V 69C/h9N4SHlhKR19JKKQKZKlRX3f5a1yzW0+BeFRA8fkkrGpsKk3+tEej0/ZB39PMl OfRsYvTk7AO3NLui1wCbJCrl4eGdq4Jxa7P+kSiw= Authentication-Results: smtp4h.mail.yandex.net; dkim=pass header.i=@yandex.ru X-Yandex-Suid-Status: 1 0 To: pgadmin-hackers@postgresql.org From: Alexander Polyakov Subject: [pgAdmin 3][Patch]Row-level security policies Message-ID: <570F5740.7000505@yandex.ru> Date: Thu, 14 Apr 2016 12:39:28 +0400 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020803080206050307010505" X-Pg-Spam-Score: 0.8 (/) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------020803080206050307010505 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hello, I've implemented basic support for Row-level security policies (introduced in PostgreSQL 9.5) in PgAdmin3. Please, have a look at patches attached to mail. First patch contains pgPolicy tree object, dlgPolicy dialog, some small changes in the pgTable and dlgTable code to represent new security options (ENABLE/FORCE RLS). I've not included changes in xrcDialogs.cpp into the patch. Second patch implements tab-completion for new statements (CREATE/ALTER/DROP POLICY). I've decided to put these into separate patch, because I don't know whether I've done it correctly: seems like tab-complete.inc used to be generated by tabcomplete.pl once, but it doesn't look like a viable option anymore (script failed at first match with latest tab-complete.c from psql repository). So I've just edited tab-complete.inc manually. P.S. Sorry for my previous mail, looks like it got broken by my mail server. Best Regards, Alexander --------------020803080206050307010505 Content-Type: text/plain; charset=UTF-8; name="policy.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="policy.patch" RnJvbSA3OTUxMjViZjM3ZTM5OGE5Mjk5Zjg4ZmE1Njc5Y2M3ZWM3YjA5Y2Fl IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUG9s eWFrb3YgPGFsZXhwbGt2QHlhbmRleC5ydT4KRGF0ZTogVGh1LCAxNCBBcHIg MjAxNiAxMjoxOTo1OSArMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFJvdyBzZWN1 cml0eSBwb2xpY3kgc3VwcG9ydDogb2JqZWN0IGFuZCBkaWFsb2cgZm9yIHBv bGljeSwKIHBvbGljeSBwYXJhbWV0ZXJzIGluIHRhYmxlIG9iamVjdCAoRW5h YmxlL0ZvcmNlIFJMUykKCi0tLQogcGdhZG1pbi9kbGcvZGxnUG9saWN5LmNw cCAgICAgICAgICAgIHwgMjg4ICsrKysrKysrKysrKysrKysrKysrKysrKysr CiBwZ2FkbWluL2RsZy9kbGdQcm9wZXJ0eS5jcHAgICAgICAgICAgfCAgIDEg KwogcGdhZG1pbi9kbGcvZGxnVGFibGUuY3BwICAgICAgICAgICAgIHwgIDU2 ICsrKysrCiBwZ2FkbWluL2RsZy9tb2R1bGUubWsgICAgICAgICAgICAgICAg fCAgIDEgKwogcGdhZG1pbi9mcm0vZXZlbnRzLmNwcCAgICAgICAgICAgICAg IHwgICAxICsKIHBnYWRtaW4vaW5jbHVkZS9kbGcvZGxnUG9saWN5LmggICAg ICB8ICA2NiArKysrKysKIHBnYWRtaW4vaW5jbHVkZS9kbGcvZGxnVGFibGUu aCAgICAgICB8ICAgMiArCiBwZ2FkbWluL2luY2x1ZGUvZGxnL21vZHVsZS5t ayAgICAgICAgfCAgIDEgKwogcGdhZG1pbi9pbmNsdWRlL2ltYWdlcy9tb2R1 bGUubWsgICAgIHwgICAzICsKIHBnYWRtaW4vaW5jbHVkZS9pbWFnZXMvcG9s aWNpZXMucG5nICB8IEJpbiAwIC0+IDQzOSBieXRlcwogcGdhZG1pbi9pbmNs dWRlL2ltYWdlcy9wb2xpY3ktc20ucG5nIHwgQmluIDAgLT4gMzk0IGJ5dGVz CiBwZ2FkbWluL2luY2x1ZGUvaW1hZ2VzL3BvbGljeS5wbmcgICAgfCBCaW4g MCAtPiA0NzIgYnl0ZXMKIHBnYWRtaW4vaW5jbHVkZS9zY2hlbWEvbW9kdWxl Lm1rICAgICB8ICAgMSArCiBwZ2FkbWluL2luY2x1ZGUvc2NoZW1hL3BnUG9s aWN5LmggICAgfCAxMjMgKysrKysrKysrKysKIHBnYWRtaW4vaW5jbHVkZS9z Y2hlbWEvcGdUYWJsZS5oICAgICB8ICAyMCArLQogcGdhZG1pbi9pbmNsdWRl L3V0aWxzL21pc2MuaCAgICAgICAgIHwgICAxICsKIHBnYWRtaW4vcGdBZG1p bjMudmN4cHJvaiAgICAgICAgICAgICB8ICAxMCArLQogcGdhZG1pbi9wZ0Fk bWluMy52Y3hwcm9qLmZpbHRlcnMgICAgIHwgIDI0ICsrKwogcGdhZG1pbi9z Y2hlbWEvbW9kdWxlLm1rICAgICAgICAgICAgIHwgICAxICsKIHBnYWRtaW4v c2NoZW1hL3BnUG9saWN5LmNwcCAgICAgICAgICB8IDM5MSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogcGdhZG1pbi9zY2hlbWEvcGdU YWJsZS5jcHAgICAgICAgICAgIHwgIDQ2ICsrKysrCiBwZ2FkbWluL3VpL2Rs Z1BvbGljeS54cmMgICAgICAgICAgICAgfCAyNzggKysrKysrKysrKysrKysr KysrKysrKysrKwogcGdhZG1pbi91aS9kbGdUYWJsZS54cmMgICAgICAgICAg ICAgIHwgIDMwICsrKwogcGdhZG1pbi91aS9tb2R1bGUubWsgICAgICAgICAg ICAgICAgIHwgICAxICsKIDI0IGZpbGVzIGNoYW5nZWQsIDEzNDMgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBw Z2FkbWluL2RsZy9kbGdQb2xpY3kuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg cGdhZG1pbi9pbmNsdWRlL2RsZy9kbGdQb2xpY3kuaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHBnYWRtaW4vaW5jbHVkZS9pbWFnZXMvcG9saWNpZXMucG5nCiBj cmVhdGUgbW9kZSAxMDA2NDQgcGdhZG1pbi9pbmNsdWRlL2ltYWdlcy9wb2xp Y3ktc20ucG5nCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGdhZG1pbi9pbmNsdWRl L2ltYWdlcy9wb2xpY3kucG5nCiBjcmVhdGUgbW9kZSAxMDA2NDQgcGdhZG1p bi9pbmNsdWRlL3NjaGVtYS9wZ1BvbGljeS5oCiBjcmVhdGUgbW9kZSAxMDA2 NDQgcGdhZG1pbi9zY2hlbWEvcGdQb2xpY3kuY3BwCiBjcmVhdGUgbW9kZSAx MDA2NDQgcGdhZG1pbi91aS9kbGdQb2xpY3kueHJjCgpkaWZmIC0tZ2l0IGEv cGdhZG1pbi9kbGcvZGxnUG9saWN5LmNwcCBiL3BnYWRtaW4vZGxnL2RsZ1Bv bGljeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NDlkODNlMQotLS0gL2Rldi9udWxsCisrKyBiL3BnYWRtaW4vZGxnL2RsZ1Bv bGljeS5jcHAKQEAgLTAsMCArMSwyODggQEAKKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiBJSUkgLSBQb3N0Z3JlU1FM IFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDAyIC0gMjAxNiwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLwor Ly8gZGxnUG9saWN5LmNwcCAtIFBvbGljeSBwcm9wZXJ0eSBkaWFsb2cKKy8v CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvLyB3eFdpbmRv d3MgaGVhZGVycworI2luY2x1ZGUgPHd4L3d4Lmg+CisKKy8vIEFwcCBoZWFk ZXJzCisjaW5jbHVkZSAicGdBZG1pbjMuaCIKKyNpbmNsdWRlICJ1dGlscy9t aXNjLmgiCisjaW5jbHVkZSAidXRpbHMvcGdEZWZzLmgiCisKKyNpbmNsdWRl ICJjdGwvY3RsU1FMQm94LmgiCisjaW5jbHVkZSAiZGxnL2RsZ1BvbGljeS5o IgorI2luY2x1ZGUgInNjaGVtYS9wZ1BvbGljeS5oIgorI2luY2x1ZGUgInNj aGVtYS9wZ1RhYmxlLmgiCisjaW5jbHVkZSAic2NoZW1hL3BnQ29sbGVjdGlv bi5oIgorCisjZGVmaW5lIHJieENvbW1hbmQJCQlDVFJMX1JBRElPQk9YKCJy YnhDb21tYW5kIikKKyNkZWZpbmUgYnRuQWRkUm9sZQkJCUNUUkxfQlVUVE9O KCJidG5BZGRSb2xlIikKKyNkZWZpbmUgYnRuRGVsUm9sZQkJCUNUUkxfQlVU VE9OKCJidG5EZWxSb2xlIikKKyNkZWZpbmUgbGJSb2xlc1NlbGVjdGVkCQlD VFJMX0xJU1RCT1goImxiUm9sZXNTZWxlY3RlZCIpCisjZGVmaW5lIGxiUm9s ZXNBbGwJCQlDVFJMX0xJU1RCT1goImxiUm9sZXNBbGwiKQorI2RlZmluZSBz cWxCb3hVc2luZwkJCUNUUkxfU1FMQk9YKCJzcWxCb3hVc2luZyIpCisjZGVm aW5lIHNxbEJveFdpdGhDaGVjawkJQ1RSTF9TUUxCT1goInNxbEJveFdpdGhD aGVjayIpCisKK0JFR0lOX0VWRU5UX1RBQkxFKGRsZ1BvbGljeSwgZGxnUHJv cGVydHkpCisJRVZUX1JBRElPQk9YKFhSQ0lEKCJyYnhDb21tYW5kIiksICAg ICAgICAgICAgICAgZGxnUHJvcGVydHk6Ok9uQ2hhbmdlKQorCUVWVF9CVVRU T04oWFJDSUQoImJ0bkFkZFJvbGUiKSwgICAgICAgICAgICAgICAgIGRsZ1Bv bGljeTo6T25BZGRSb2xlKQorCUVWVF9CVVRUT04oWFJDSUQoImJ0bkRlbFJv bGUiKSwgICAgICAgICAgICAgICAgIGRsZ1BvbGljeTo6T25EZWxSb2xlKQor CUVWVF9TVENfTU9ESUZJRUQoWFJDSUQoInNxbEJveFVzaW5nIiksICAgICAg ICAgIGRsZ1Byb3BlcnR5OjpPbkNoYW5nZVN0YykKKwlFVlRfU1RDX01PRElG SUVEKFhSQ0lEKCJzcWxCb3hXaXRoQ2hlY2siKSwgICAgICBkbGdQcm9wZXJ0 eTo6T25DaGFuZ2VTdGMpCitFTkRfRVZFTlRfVEFCTEUoKTsKKworZGxnUG9s aWN5OjpkbGdQb2xpY3kocGdhRmFjdG9yeSAqZiwgZnJtTWFpbiAqZnJhbWUs IHBnUG9saWN5ICpwLCBwZ1RhYmxlICp0YWIpCisJOiBkbGdQcm9wZXJ0eShm LCBmcmFtZSwgd3hUKCJkbGdQb2xpY3kiKSkKK3sKKwl0YWJsZSA9IHRhYjsK Kwlwb2xpY3kgPSBwOworfQorCitwZ09iamVjdCAqZGxnUG9saWN5OjpHZXRP YmplY3QoKQoreworCXJldHVybiBwb2xpY3k7Cit9CisKK3BnT2JqZWN0ICpk bGdQb2xpY3k6OkNyZWF0ZU9iamVjdChwZ0NvbGxlY3Rpb24gKmNvbGxlY3Rp b24pCit7CisJcGdPYmplY3QgKm9iaiA9IHBvbGljeUZhY3RvcnkuQ3JlYXRl T2JqZWN0cyhjb2xsZWN0aW9uLCAwLAorCSAgICAgICAgICAgICAgICB3eFQo IlxuICAgQU5EIHAucG9sbmFtZT0iKSArIHF0RGJTdHJpbmcoR2V0TmFtZSgp KSArCisJICAgICAgICAgICAgICAgIHd4VCgiXG4gICBBTkQgcC5wb2xyZWxp ZD0iKSArIHRhYmxlLT5HZXRPaWRTdHIoKSk7CisJcmV0dXJuIG9iajsKK30K Kwordm9pZCBkbGdQb2xpY3k6OlNldFBvbGljeUNvbW1hbmQoY2hhciBjb21t YW5kKQoreworCWludCBpbmRleCA9IDA7CisJc3dpdGNoIChjb21tYW5kKQor CXsKKwljYXNlIFBPTElDWV9BTEw6IGluZGV4ID0gMDsgYnJlYWs7CisJY2Fz ZSBQT0xJQ1lfU0VMRUNUOiBpbmRleCA9IDE7IGJyZWFrOworCWNhc2UgUE9M SUNZX0lOU0VSVDogaW5kZXggPSAyOyBicmVhazsKKwljYXNlIFBPTElDWV9V UERBVEU6IGluZGV4ID0gMzsgYnJlYWs7CisJY2FzZSBQT0xJQ1lfREVMRVRF OiBpbmRleCA9IDQ7IGJyZWFrOworCX0KKworCXJieENvbW1hbmQtPlNldFNl bGVjdGlvbihpbmRleCk7Cit9CisKK2NoYXIgZGxnUG9saWN5OjpHZXRQb2xp Y3lDb21tYW5kKCkgY29uc3QKK3sKKwlzd2l0Y2ggKHJieENvbW1hbmQtPkdl dFNlbGVjdGlvbigpKQorCXsKKwlkZWZhdWx0OgorCWNhc2UgMDogcmV0dXJu IFBPTElDWV9BTEw7IAorCWNhc2UgMTogcmV0dXJuIFBPTElDWV9TRUxFQ1Q7 CisJY2FzZSAyOiByZXR1cm4gUE9MSUNZX0lOU0VSVDsKKwljYXNlIDM6IHJl dHVybiBQT0xJQ1lfVVBEQVRFOworCWNhc2UgNDogcmV0dXJuIFBPTElDWV9E RUxFVEU7CisJfQorfQorCit2b2lkIGRsZ1BvbGljeTo6U2V0UG9saWN5Um9s ZXMoY29uc3Qgd3hBcnJheVN0cmluZyAmcm9sZXMpCit7CisJZm9yIChpbnQg aSA9IDA7IGkgPCByb2xlcy5zaXplKCk7IGkrKykKKwl7CisJCVNlbGVjdFJv bGUocm9sZXNbaV0pOworCX0KK30KKwordm9pZCBkbGdQb2xpY3k6OlNldFBv bGljeVVzaW5nRXhwcihjb25zdCB3eFN0cmluZyAmZXhwcikKK3sKKwlzcWxC b3hVc2luZy0+U2V0VGV4dChleHByKTsKK30KKword3hTdHJpbmcgZGxnUG9s aWN5OjpHZXRQb2xpY3lVc2luZ0V4cHIoKSBjb25zdAoreworCXJldHVybiBz cWxCb3hVc2luZy0+R2V0VGV4dCgpOworfQorCit2b2lkIGRsZ1BvbGljeTo6 U2V0UG9saWN5V2l0aENoZWNrRXhwcihjb25zdCB3eFN0cmluZyAmZXhwcikK K3sKKwlzcWxCb3hXaXRoQ2hlY2stPlNldFRleHQoZXhwcik7Cit9CisKK3d4 U3RyaW5nIGRsZ1BvbGljeTo6R2V0UG9saWN5V2l0aENoZWNrRXhwcigpIGNv bnN0Cit7CisJcmV0dXJuIHNxbEJveFdpdGhDaGVjay0+R2V0VGV4dCgpOwor fQorCitpbnQgZGxnUG9saWN5OjpHbyhib29sIG1vZGFsKQoreworCVBvcHVs YXRlQWxsUm9sZXMoKTsKKworCWlmIChwb2xpY3kpCisJeworCQlTZXRQb2xp Y3lDb21tYW5kKHBvbGljeS0+R2V0UG9saWN5Q29tbWFuZCgpKTsKKwkJcmJ4 Q29tbWFuZC0+RGlzYWJsZSgpOworCQlTZXRQb2xpY3lSb2xlcyhwb2xpY3kt PkdldFBvbGljeVJvbGVzU29ydGVkKCkpOworCQlTZXRQb2xpY3lVc2luZ0V4 cHIocG9saWN5LT5HZXRQb2xpY3lVc2luZ0V4cHJlc3Npb24oKSk7CisJCVNl dFBvbGljeVdpdGhDaGVja0V4cHIocG9saWN5LT5HZXRQb2xpY3lXaXRoQ2hl Y2tFeHByZXNzaW9uKCkpOworCX0KKworCXJldHVybiBkbGdQcm9wZXJ0eTo6 R28obW9kYWwpOworfQorCisvLyBnZXQgc3FsIGNvbW1hbmQgZnJvbSBwZ1Bv bGljeSBvYmplY3QKK3d4U3RyaW5nIGRsZ1BvbGljeTo6R2V0U3FsKCkKK3sK Kwl3eFN0cmluZyBzcWw7CisJaWYocG9saWN5KQorCXsKKwkJc3FsID0gcG9s aWN5LT5HZXRBbHRlclBvbGljeVNxbChxdElkZW50KEdldE5hbWUoKSksIEdl dFBvbGljeVJvbGVzU29ydGVkKCksIEdldFBvbGljeVVzaW5nRXhwcigpLCBH ZXRQb2xpY3lXaXRoQ2hlY2tFeHByKCkpOworCX0KKwllbHNlCisJeworCQlz cWwgPSBwZ1BvbGljeTo6R2V0Q3JlYXRlUG9saWN5U3FsKHF0SWRlbnQoR2V0 TmFtZSgpKSwgdGFibGUtPkdldFF1b3RlZEZ1bGxJZGVudGlmaWVyKCksIEdl dFBvbGljeUNvbW1hbmQoKSwgR2V0UG9saWN5Um9sZXNTb3J0ZWQoKSwKKwkJ CUdldFBvbGljeVVzaW5nRXhwcigpLCBHZXRQb2xpY3lXaXRoQ2hlY2tFeHBy KCkpOworCX0KKworCUFwcGVuZENvbW1lbnQoc3FsLCB3eFQoIlBPTElDWSAi KSArIHF0SWRlbnQoR2V0TmFtZSgpKQorCQkJKyB3eFQoIiBPTiAiKSArIHRh YmxlLT5HZXRRdW90ZWRGdWxsSWRlbnRpZmllcigpLCBwb2xpY3kpOworCisJ cmV0dXJuIHNxbDsKK30KKwordm9pZCBkbGdQb2xpY3k6OkNoZWNrQ2hhbmdl KCkKK3sKKwlpZiAocG9saWN5KQorCXsKKwkJRW5hYmxlT0soZGlkQ2hhbmdl KCkpOworCX0KKwllbHNlCisJeworCQl3eFN0cmluZyBuYW1lID0gR2V0TmFt ZSgpOworCQlib29sIGVuYWJsZSA9IHRydWU7CisJCUNoZWNrVmFsaWQoZW5h YmxlLCAhbmFtZS5Jc0VtcHR5KCksIF8oIlBsZWFzZSBzcGVjaWZ5IG5hbWUu IikpOworCQlFbmFibGVPSyhlbmFibGUpOworCX0KK30KKworLy8gcG9wdWxh dGUgbGlzdCBib3ggd2l0aCByb2xlcyBmcm9tIGNhdGFsb2cKK3ZvaWQgZGxn UG9saWN5OjpQb3B1bGF0ZUFsbFJvbGVzKCkKK3sKKwlsYlJvbGVzQWxsLT5D bGVhcigpOworCS8vIG5vdCBzdXJlIGlmIHdlIHJlYWxseSBuZWVkIHRoZXNl IGluIHBnQWRtaW4KKwkvL2xiUm9sZXNBbGwtPkFwcGVuZCh3eFQoIkNVUlJF TlRfVVNFUiIpKTsKKwkvL2xiUm9sZXNBbGwtPkFwcGVuZCh3eFQoIlNFU1NJ T05fVVNFUiIpKTsKKworCWlmIChjb25uZWN0aW9uKQorCXsKKwkJd3hTdHJp bmcgc3FsID0KKwkJCXd4VCgiU0VMRUNUIHJvbG5hbWVcbiIpCisJCQl3eFQo IiAgRlJPTSBwZ19yb2xlcyByXG4iKQorCQkJd3hUKCIgIE9SREVSIEJZIHJv bG5hbWUiKTsKKworCQlwZ1NldCAqcm9sZXMgPSBjb25uZWN0aW9uLT5FeGVj dXRlU2V0KHNxbCk7CisJCWlmIChyb2xlcykKKwkJeworCQkJd2hpbGUgKCFy b2xlcy0+RW9mKCkpCisJCQl7CisJCQkJbGJSb2xlc0FsbC0+QXBwZW5kKHJv bGVzLT5HZXRWYWwoMCkpOworCQkJCXJvbGVzLT5Nb3ZlTmV4dCgpOworCQkJ fQorCisJCQlkZWxldGUgcm9sZXM7CisJCX0KKwl9Cit9CisKKy8vIGFkZCBy b2xlIHRvIGxpc3QgYW5kIHJlZmxlY3QgbGlzdCBib3ggY2hhbmdlcworLy8g bGlzdEluZGV4IC0gaW5kZXggb2YgZW50cnkgaW4gJ2FsbCByb2xlcycgbGlz dCBib3gKK3ZvaWQgZGxnUG9saWN5OjpTZWxlY3RSb2xlKGludCBsaXN0SW5k ZXgpCit7CisJaWYgKGxpc3RJbmRleCA+PSAwKQorCXsKKwkJd3hTdHJpbmcg cm9sZSA9IGxiUm9sZXNBbGwtPkdldFN0cmluZyhsaXN0SW5kZXgpOworCQls YlJvbGVzU2VsZWN0ZWQtPkFwcGVuZChyb2xlKTsKKwkJbGJSb2xlc0FsbC0+ RGVsZXRlKGxpc3RJbmRleCk7CisJCXJvbGVOYW1lcy5BZGQocm9sZSk7CisJ fQorfQorCisvLyBhZGQgcm9sZSB0byBsaXN0IG9mIHJvbGVzIGFuZCBhbmQg cmVmbGVjdCBsaXN0IGJveCBjaGFuZ2VzCit2b2lkIGRsZ1BvbGljeTo6U2Vs ZWN0Um9sZShjb25zdCB3eFN0cmluZyAmcm9sZSkKK3sKKwlsYlJvbGVzU2Vs ZWN0ZWQtPkFwcGVuZChyb2xlKTsKKwlsYlJvbGVzQWxsLT5EZWxldGUobGJS b2xlc0FsbC0+RmluZFN0cmluZyhyb2xlLCB0cnVlKSk7CisJcm9sZU5hbWVz LkFkZChyb2xlKTsKK30KKworLy8gcmVtb3ZlIHJvbGUgZnJvbSBsaXN0IGFu ZCByZWZsZWN0IGxpc3QgYm94IGNoYW5nZXMKKy8vIGxpc3RJbmRleCAtIGlu ZGV4IG9mIGVudHJ5IGluICdzZWxlY3RlZCByb2xlcycgbGlzdCBib3ggCit2 b2lkIGRsZ1BvbGljeTo6RGVzZWxlY3RSb2xlKGludCBsaXN0SW5kZXgpCit7 CisJaWYgKGxpc3RJbmRleCA+PSAwKQorCXsKKwkJd3hTdHJpbmcgcm9sZSA9 IGxiUm9sZXNTZWxlY3RlZC0+R2V0U3RyaW5nKGxpc3RJbmRleCk7CisJCWxi Um9sZXNBbGwtPkFwcGVuZChyb2xlKTsKKwkJbGJSb2xlc1NlbGVjdGVkLT5E ZWxldGUobGlzdEluZGV4KTsKKwkJcm9sZU5hbWVzLlJlbW92ZShyb2xlKTsK Kwl9Cit9CisKKy8vIHRlc3QgZm9yIGNoYW5nZXMKK2Jvb2wgZGxnUG9saWN5 OjpkaWRDaGFuZ2UoKQoreworCWlmIChHZXROYW1lKCkgIT0gcG9saWN5LT5H ZXROYW1lKCkpCisJCXJldHVybiB0cnVlOworCWlmIChHZXRQb2xpY3lSb2xl c1NvcnRlZCgpICE9IHBvbGljeS0+R2V0UG9saWN5Um9sZXNTb3J0ZWQoKSkK KwkJcmV0dXJuIHRydWU7CisJaWYgKEdldFBvbGljeVVzaW5nRXhwcigpICE9 IHBvbGljeS0+R2V0UG9saWN5VXNpbmdFeHByZXNzaW9uKCkpCisJCXJldHVy biB0cnVlOworCWlmIChHZXRQb2xpY3lXaXRoQ2hlY2tFeHByKCkgIT0gcG9s aWN5LT5HZXRQb2xpY3lXaXRoQ2hlY2tFeHByZXNzaW9uKCkpCisJCXJldHVy biB0cnVlOworCWlmICh0eHRDb21tZW50LT5HZXRWYWx1ZSgpICE9IHBvbGlj eS0+R2V0Q29tbWVudCgpKQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiBm YWxzZTsKK30KKworaW50IEludEFycmF5Q21wKGludCAqYSwgaW50ICpiKQor eworCWlmICgqYSA9PSAqYikKKwkJcmV0dXJuIDA7CisKKwlpZiAoKmEgPiAq YikKKwkJcmV0dXJuIDE7CisJZWxzZQorCQlyZXR1cm4gLTE7Cit9CisKKy8v IGFkZCByb2xlIGJ1dHRvbgordm9pZCBkbGdQb2xpY3k6Ok9uQWRkUm9sZSh3 eENvbW1hbmRFdmVudCAmZXYpCit7CisJd3hBcnJheUludCBzZWxlY3Rpb247 CisJbGJSb2xlc0FsbC0+R2V0U2VsZWN0aW9ucyhzZWxlY3Rpb24pOworCXNl bGVjdGlvbi5Tb3J0KEludEFycmF5Q21wKTsKKworCWZvciAoaW50IGkgPSBz ZWxlY3Rpb24uc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pCisJeworCQlTZWxl Y3RSb2xlKHNlbGVjdGlvbltpXSk7CisJfQorCisJT25DaGFuZ2UoZXYpOwor fQorCisvLyByZW1vdmUgcm9sZSBidXR0b24KK3ZvaWQgZGxnUG9saWN5OjpP bkRlbFJvbGUod3hDb21tYW5kRXZlbnQgJmV2KQoreworCXd4QXJyYXlJbnQg c2VsZWN0aW9uOworCWxiUm9sZXNTZWxlY3RlZC0+R2V0U2VsZWN0aW9ucyhz ZWxlY3Rpb24pOworCXNlbGVjdGlvbi5Tb3J0KEludEFycmF5Q21wKTsKKwor CWZvciAoaW50IGkgPSBzZWxlY3Rpb24uc2l6ZSgpIC0gMTsgaSA+PSAwOyBp LS0pCisJeworCQlEZXNlbGVjdFJvbGUoc2VsZWN0aW9uW2ldKTsKKwl9CisK KwlPbkNoYW5nZShldik7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvcGdhZG1pbi9kbGcvZGxnUHJvcGVydHkuY3BwIGIv cGdhZG1pbi9kbGcvZGxnUHJvcGVydHkuY3BwCmluZGV4IDczODE3MjkuLjU3 OGZhMWIgMTAwNjQ0Ci0tLSBhL3BnYWRtaW4vZGxnL2RsZ1Byb3BlcnR5LmNw cAorKysgYi9wZ2FkbWluL2RsZy9kbGdQcm9wZXJ0eS5jcHAKQEAgLTExNTIs NiArMTE1Miw3IEBAIHZvaWQgZGxnUHJvcGVydHk6OkluaXREaWFsb2coZnJt TWFpbiAqZnJhbWUsIHBnT2JqZWN0ICpub2RlKQogCQljYXNlIFBHTV9QUklN QVJZS0VZOgogCQljYXNlIFBHTV9VTklRVUU6CiAJCWNhc2UgUEdNX1RSSUdH RVI6CisJCWNhc2UgUEdNX1BPTElDWToKIAkJY2FzZSBQR01fUlVMRTogLy8g UnVsZXMgYXJlIHRlY2huaWNhbGx5IHRhYmxlIG9iamVjdHMhIFlldWNoCiAJ CWNhc2UgRURCX1BBQ0tBR0VGVU5DVElPTjoKIAkJY2FzZSBFREJfUEFDS0FH RVZBUklBQkxFOgpkaWZmIC0tZ2l0IGEvcGdhZG1pbi9kbGcvZGxnVGFibGUu Y3BwIGIvcGdhZG1pbi9kbGcvZGxnVGFibGUuY3BwCmluZGV4IDg5MzlhN2Mu LjMyYWQ5YzAgMTAwNjQ0Ci0tLSBhL3BnYWRtaW4vZGxnL2RsZ1RhYmxlLmNw cAorKysgYi9wZ2FkbWluL2RsZy9kbGdUYWJsZS5jcHAKQEAgLTMyLDYgKzMy LDcgQEAKICNpbmNsdWRlICJzY2hlbWEvcGdGb3JlaWduS2V5LmgiCiAjaW5j bHVkZSAic2NoZW1hL3BnSW5kZXhDb25zdHJhaW50LmgiCiAjaW5jbHVkZSAi c2NoZW1hL3BnRGF0YXR5cGUuaCIKKyNpbmNsdWRlICJzY2hlbWEvcGdQb2xp Y3kuaCIKICNpbmNsdWRlICJjdGwvY3RsU2VjbGFiZWxQYW5lbC5oIgogCiAK QEAgLTEwNCw2ICsxMDUsMTAgQEAKICNkZWZpbmUgdHh0VG9hc3RGcmVlemVU YWJsZUFnZSAgICBDVFJMX1RFWFQoInR4dFRvYXN0RnJlZXplVGFibGVBZ2Ui KQogI2RlZmluZSBzdFRvYXN0RnJlZXplVGFibGVBZ2VDdXJyIENUUkxfU1RB VElDKCJzdFRvYXN0RnJlZXplVGFibGVBZ2VDdXJyIikKIAorLyogUm93IGxl dmVsIHNlY3VyaXR5IG9wdGlvbnMgKi8KKyNkZWZpbmUgY2hrUG9saWN5RW5h YmxlCQlDVFJMX0NIRUNLQk9YKCJjaGtQb2xpY3lFbmFibGUiKQorI2RlZmlu ZSBjaGtQb2xpY3lGb3JjZQkJQ1RSTF9DSEVDS0JPWCgiY2hrUG9saWN5Rm9y Y2UiKQorCiAKIEJFR0lOX0VWRU5UX1RBQkxFKGRsZ1RhYmxlLCBkbGdTZWN1 cml0eVByb3BlcnR5KQogCUVWVF9DSEVDS0JPWChYUkNJRCgiY2hrVW5sb2dn ZWQiKSwgICAgICAgICAgICAgIGRsZ1Byb3BlcnR5OjpPbkNoYW5nZSkKQEAg LTE1MCw2ICsxNTUsOSBAQCBCRUdJTl9FVkVOVF9UQUJMRShkbGdUYWJsZSwg ZGxnU2VjdXJpdHlQcm9wZXJ0eSkKIAlFVlRfVEVYVChYUkNJRCgidHh0VG9h c3RGcmVlemVNYXhBZ2UiKSwgICAgICAgICAgICAgZGxnVGFibGU6Ok9uQ2hh bmdlVmFjdXVtKQogCUVWVF9URVhUKFhSQ0lEKCJ0eHRUb2FzdEZyZWV6ZVRh YmxlQWdlIiksICAgICAgICAgICBkbGdUYWJsZTo6T25DaGFuZ2VWYWN1dW0p CiAKKwlFVlRfQ0hFQ0tCT1goWFJDSUQoImNoa1BvbGljeUVuYWJsZSIpLCAg ICAgICAgICBkbGdQcm9wZXJ0eTo6T25DaGFuZ2UpCisJRVZUX0NIRUNLQk9Y KFhSQ0lEKCJjaGtQb2xpY3lGb3JjZSIpLAkJCWRsZ1Byb3BlcnR5OjpPbkNo YW5nZSkKKwogCUVWVF9CVVRUT04od3hJRF9PSywgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRsZ1RhYmxlOjpPbk9LKQogCiAjaWZkZWYgX19XWE1B Q19fCkBAIC0yMzYsNiArMjQ0LDIzIEBAIGludCBkbGdUYWJsZTo6R28oYm9v bCBtb2RhbCkKIAlQcmVwYXJlVGFibGVzcGFjZShjYlRhYmxlc3BhY2UpOwog CVBvcHVsYXRlRGF0YXR5cGVDYWNoZSgpOwogCisJLy8gUm93IGxldmVsIHNl Y3VyaXR5IG9wdGlvbnMgCisJaWYgKGNvbm5lY3Rpb24tPkJhY2tlbmRNaW5p bXVtVmVyc2lvbig5LCA1KSkKKwl7CisJCWNoa1BvbGljeUVuYWJsZS0+RW5h YmxlKCk7CisJCWNoa1BvbGljeUZvcmNlLT5FbmFibGUoKTsKKwkJaWYgKHRh YmxlKQorCQl7CisJCQljaGtQb2xpY3lFbmFibGUtPlNldFZhbHVlKHRhYmxl LT5HZXRSb3dMZXZlbFNlY3VyaXR5RW5hYmxlZCgpKTsKKwkJCWNoa1BvbGlj eUZvcmNlLT5TZXRWYWx1ZSh0YWJsZS0+R2V0Rm9yY2VSb3dMZXZlbFNlY3Vy aXR5KCkpOworCQl9CisJfQorCWVsc2UKKwl7CisJCWNoa1BvbGljeUVuYWJs ZS0+RGlzYWJsZSgpOworCQljaGtQb2xpY3lGb3JjZS0+RGlzYWJsZSgpOwor CX0KKwogCWlmIChjb25uZWN0aW9uLT5CYWNrZW5kTWluaW11bVZlcnNpb24o OSwgMSkpCiAJewogCQlzZWNsYWJlbFBhZ2UtPlNldENvbm5lY3Rpb24oY29u bmVjdGlvbik7CkBAIC0xNDcyLDYgKzE0OTcsMTAgQEAgd3hTdHJpbmcgZGxn VGFibGU6OkdldFNxbCgpCiAJCX0KIAl9CiAKKwkvLyBSb3cgbGV2ZWwgc2Vj dXJpdHkgb3B0aW9ucyAKKwlpZiAoY29ubmVjdGlvbi0+QmFja2VuZE1pbmlt dW1WZXJzaW9uKDksIDUpKQorCQlBcHBlbmRQb2xpY3lTcWwoc3FsLCB0YWJu YW1lKTsKKwogCS8vIENvbW1lbnRzCiAJZm9yIChwb3MgPSAwIDsgcG9zIDwg bHN0Q29sdW1ucy0+R2V0SXRlbUNvdW50KCkgOyBwb3MrKykKIAl7CkBAIC0y MTEyLDMgKzIxNDEsMzAgQEAgdm9pZCBkbGdUYWJsZTo6T25DaGFuZ2Uod3hD b21tYW5kRXZlbnQgJmV2ZW50KQogewogCUNoZWNrQ2hhbmdlKCk7CiB9CisK Ky8vIGFwcGVuZCBBTFRFUiBUQUJMRSBzdGF0ZW1lbnQgd2l0aCByb3cgbGV2 ZWwgc2VjdXJpdHkgb3B0aW9ucword3hTdHJpbmcmIGRsZ1RhYmxlOjpBcHBl bmRQb2xpY3lTcWwod3hTdHJpbmcgJnNxbCwgY29uc3Qgd3hTdHJpbmcgJnRh Ym5hbWUpCit7CisJaW50IGVuYWJsZVJsczsKKwlpbnQgZm9yY2VSbHM7CisK KwlpZiAodGFibGUpCisJeworCQlpZiAodGFibGUtPkdldFJvd0xldmVsU2Vj dXJpdHlFbmFibGVkKCkgIT0gY2hrUG9saWN5RW5hYmxlLT5Jc0NoZWNrZWQo KSkKKwkJCWVuYWJsZVJscyA9IGNoa1BvbGljeUVuYWJsZS0+SXNDaGVja2Vk KCkgPyBST1dfU0VDVVJVVFlfRU5BQkxFIDogUk9XX1NFQ1VSVVRZX0RJU0FC TEU7CisJCWlmICh0YWJsZS0+R2V0Rm9yY2VSb3dMZXZlbFNlY3VyaXR5KCkg IT0gY2hrUG9saWN5Rm9yY2UtPklzQ2hlY2tlZCgpKQorCQkJZm9yY2VSbHMg PSBjaGtQb2xpY3lGb3JjZS0+SXNDaGVja2VkKCkgPyBST1dfU0VDVVJVVFlf Rk9SQ0UgOiBST1dfU0VDVVJVVFlfTk9GT1JDRTsKKwl9CisJZWxzZQorCXsK KwkJLy8gZGVmYXVsdCB2YWx1ZXMgd2lsbCBiZSBvbWl0dGVkCisJCWVuYWJs ZVJscyA9IGNoa1BvbGljeUVuYWJsZS0+SXNDaGVja2VkKCkgPyBST1dfU0VD VVJVVFlfRU5BQkxFIDogUk9XX1NFQ1VSVVRZX1NLSVA7CisJCWZvcmNlUmxz ID0gY2hrUG9saWN5Rm9yY2UtPklzQ2hlY2tlZCgpID8gUk9XX1NFQ1VSVVRZ X0ZPUkNFIDogUk9XX1NFQ1VSVVRZX1NLSVA7CisJfQorCisJd3hTdHJpbmcg cmxzU3FsID0gcGdQb2xpY3k6OkdldEFsdGVyVGFibGVQb2xpY3lQYXJhbXNT cWwodGFibmFtZSwgZW5hYmxlUmxzLCBmb3JjZVJscyk7CisJaWYgKCFybHNT cWwuSXNFbXB0eSgpKQorCQlzcWwgKz0gcmxzU3FsICsgd3hUKCJcbiIpOwor CisJcmV0dXJuIHNxbDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9wZ2FkbWluL2RsZy9tb2R1bGUubWsgYi9wZ2FkbWlu L2RsZy9tb2R1bGUubWsKaW5kZXggYzFhNGUzMy4uM2Q1MzE4NSAxMDA2NDQK LS0tIGEvcGdhZG1pbi9kbGcvbW9kdWxlLm1rCisrKyBiL3BnYWRtaW4vZGxn L21vZHVsZS5tawpAQCAtNDEsNiArNDEsNyBAQCBwZ2FkbWluM19TT1VSQ0VT ICs9IFwKIAlkbGcvZGxnT3BlcmF0b3IuY3BwIFwKIAlkbGcvZGxnUGFja2Fn ZS5jcHAgXAogCWRsZy9kbGdQZ3Bhc3NDb25maWcuY3BwIFwKKwlkbGcvZGxn UG9saWN5LmNwcCBcCiAJZGxnL2RsZ1Byb3BlcnR5LmNwcCBcCiAJZGxnL2Rs Z1JlYXNzaWduRHJvcE93bmVkLmNwcCBcCiAJZGxnL2RsZ1JvbGUuY3BwIFwK ZGlmZiAtLWdpdCBhL3BnYWRtaW4vZnJtL2V2ZW50cy5jcHAgYi9wZ2FkbWlu L2ZybS9ldmVudHMuY3BwCmluZGV4IDRlMDVmODQuLjBiNmE5NTkgMTAwNjQ0 Ci0tLSBhL3BnYWRtaW4vZnJtL2V2ZW50cy5jcHAKKysrIGIvcGdhZG1pbi9m cm0vZXZlbnRzLmNwcApAQCAtNzg5LDYgKzc4OSw3IEBAIHZvaWQgZnJtTWFp bjo6RXhlY0Ryb3AoYm9vbCBjYXNjYWRlZCkKIAkJY2FzZSBQR01fUFJJTUFS WUtFWToKIAkJY2FzZSBQR01fVU5JUVVFOgogCQljYXNlIFBHTV9UUklHR0VS OgorCQljYXNlIFBHTV9QT0xJQ1k6CiAJCWNhc2UgUEdNX1JVTEU6IC8vIFJ1 bGVzIGFyZSB0ZWNobmljYWxseSB0YWJsZSBvYmplY3RzISBZZXVjaAogCQlj YXNlIEVEQl9QQUNLQUdFRlVOQ1RJT046CiAJCWNhc2UgRURCX1BBQ0tBR0VW QVJJQUJMRToKZGlmZiAtLWdpdCBhL3BnYWRtaW4vaW5jbHVkZS9kbGcvZGxn UG9saWN5LmggYi9wZ2FkbWluL2luY2x1ZGUvZGxnL2RsZ1BvbGljeS5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNDAzMDkKLS0t IC9kZXYvbnVsbAorKysgYi9wZ2FkbWluL2luY2x1ZGUvZGxnL2RsZ1BvbGlj eS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCisvLworLy8gcGdBZG1pbiBJSUkgLSBQb3N0Z3JlU1FMIFRvb2xz CisvLworLy8gQ29weXJpZ2h0IChDKSAyMDAyIC0gMjAxNiwgVGhlIHBnQWRt aW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8gZGxn UG9saWN5LmggLSBQb2xpY3kgcHJvcGVydHkgZGlhbG9nCisvLworLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworCisjaWZuZGVmIERMR19QT0xJ Q1lfSAorI2RlZmluZSBETEdfUE9MSUNZX0gKKworI2luY2x1ZGUgImRsZy9k bGdQcm9wZXJ0eS5oIgorCitjbGFzcyBwZ1RhYmxlOworY2xhc3MgcGdQb2xp Y3k7CisKK2NsYXNzIGRsZ1BvbGljeSA6IHB1YmxpYyBkbGdQcm9wZXJ0eQor eworcHVibGljOgorCWRsZ1BvbGljeShwZ2FGYWN0b3J5ICpmYWN0b3J5LCBm cm1NYWluICpmcmFtZSwgcGdQb2xpY3kgKnAsIHBnVGFibGUgKnRhYik7CisJ aW50IEdvKGJvb2wgbW9kYWwpOworCisJdm9pZCBDaGVja0NoYW5nZSgpOwor CXd4U3RyaW5nIEdldFNxbCgpOworCXBnT2JqZWN0ICpDcmVhdGVPYmplY3Qo cGdDb2xsZWN0aW9uICpjb2xsZWN0aW9uKTsKKwlwZ09iamVjdCAqR2V0T2Jq ZWN0KCk7CisKKwkvLyB1aSBjb250cm9sIHZhbHVlIGdldHRlcnMgYW5kIHNl dHRlcworCXZvaWQgU2V0UG9saWN5Q29tbWFuZChjaGFyIGNvbW1hbmQpOwor CWNoYXIgR2V0UG9saWN5Q29tbWFuZCgpIGNvbnN0OworCXZvaWQgU2V0UG9s aWN5Um9sZXMoY29uc3Qgd3hBcnJheVN0cmluZyAmcm9sZXMpOworCWNvbnN0 IHd4U29ydGVkQXJyYXlTdHJpbmcmIEdldFBvbGljeVJvbGVzU29ydGVkKCkg Y29uc3QKKwl7CisJCXJldHVybiByb2xlTmFtZXM7CisJfQorCXZvaWQgU2V0 UG9saWN5VXNpbmdFeHByKGNvbnN0IHd4U3RyaW5nICZleHByKTsKKwl3eFN0 cmluZyBHZXRQb2xpY3lVc2luZ0V4cHIoKSBjb25zdDsKKwl2b2lkIFNldFBv bGljeVdpdGhDaGVja0V4cHIoY29uc3Qgd3hTdHJpbmcgJmV4cHIpOworCXd4 U3RyaW5nIEdldFBvbGljeVdpdGhDaGVja0V4cHIoKSBjb25zdDsKKworcHJp dmF0ZToKKwl2b2lkIFBvcHVsYXRlQWxsUm9sZXMoKTsKKwl2b2lkIFNlbGVj dFJvbGUoaW50IGxpc3RJbmRleCk7CisJdm9pZCBTZWxlY3RSb2xlKGNvbnN0 IHd4U3RyaW5nICZyb2xlKTsKKwl2b2lkIERlc2VsZWN0Um9sZShpbnQgbGlz dEluZGV4KTsKKworCWJvb2wgZGlkQ2hhbmdlKCk7CisKKwl2b2lkIE9uQWRk Um9sZSh3eENvbW1hbmRFdmVudCAmZXYpOworCXZvaWQgT25EZWxSb2xlKHd4 Q29tbWFuZEV2ZW50ICZldik7CisKK3ByaXZhdGU6CisJcGdUYWJsZSAqdGFi bGU7CisJcGdQb2xpY3kgKnBvbGljeTsKKworCS8vIHNvcnRlZCwgc28gd2Ug Y2FuIGVhc2lseSB0ZXN0IGZvciBjaGFuZ2VzCisJd3hTb3J0ZWRBcnJheVN0 cmluZyByb2xlTmFtZXM7CisKKwlERUNMQVJFX0VWRU5UX1RBQkxFKCkKK307 CisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3BnYWRtaW4vaW5jbHVkZS9kbGcvZGxnVGFibGUuaCBiL3BnYWRt aW4vaW5jbHVkZS9kbGcvZGxnVGFibGUuaAppbmRleCAxYjgyZmUwLi5mMjhm MDVjIDEwMDY0NAotLS0gYS9wZ2FkbWluL2luY2x1ZGUvZGxnL2RsZ1RhYmxl LmgKKysrIGIvcGdhZG1pbi9pbmNsdWRlL2RsZy9kbGdUYWJsZS5oCkBAIC0x MjUsNiArMTI1LDggQEAgcHJpdmF0ZToKIAkgICAgICAgICB0b2FzdFRhYmxl RnJlZXplVGFibGVBZ2U7CiAJd3hTdHJpbmcgdG9hc3RUYWJsZVZhY0ZhY3Rv cjsKIAorCXd4U3RyaW5nJiBBcHBlbmRQb2xpY3lTcWwod3hTdHJpbmcgJnNx bCwgY29uc3Qgd3hTdHJpbmcgJnRhYm5hbWUpOworCiAJREVDTEFSRV9FVkVO VF9UQUJMRSgpCiB9OwogCmRpZmYgLS1naXQgYS9wZ2FkbWluL2luY2x1ZGUv ZGxnL21vZHVsZS5tayBiL3BnYWRtaW4vaW5jbHVkZS9kbGcvbW9kdWxlLm1r CmluZGV4IDhmZWQ2OGQuLmY1ZTkwOGYgMTAwNjQ0Ci0tLSBhL3BnYWRtaW4v aW5jbHVkZS9kbGcvbW9kdWxlLm1rCisrKyBiL3BnYWRtaW4vaW5jbHVkZS9k bGcvbW9kdWxlLm1rCkBAIC00MSw2ICs0MSw3IEBAIHBnYWRtaW4zX1NPVVJD RVMgKz0gXAogCWluY2x1ZGUvZGxnL2RsZ09wZXJhdG9yLmggXAogCWluY2x1 ZGUvZGxnL2RsZ1BhY2thZ2UuaCBcCiAJaW5jbHVkZS9kbGcvZGxnUGdwYXNz Q29uZmlnLmggXAorCWluY2x1ZGUvZGxnL2RsZ1BvbGljeS5oIFwKIAlpbmNs dWRlL2RsZy9kbGdQcm9wZXJ0eS5oIFwKIAlpbmNsdWRlL2RsZy9kbGdSZWFz c2lnbkRyb3BPd25lZC5oIFwKIAlpbmNsdWRlL2RsZy9kbGdSb2xlLmggXApk aWZmIC0tZ2l0IGEvcGdhZG1pbi9pbmNsdWRlL2ltYWdlcy9tb2R1bGUubWsg Yi9wZ2FkbWluL2luY2x1ZGUvaW1hZ2VzL21vZHVsZS5tawppbmRleCA2ZDYw YWJmLi4wOGFjODMzIDEwMDY0NAotLS0gYS9wZ2FkbWluL2luY2x1ZGUvaW1h Z2VzL21vZHVsZS5taworKysgYi9wZ2FkbWluL2luY2x1ZGUvaW1hZ2VzL21v ZHVsZS5tawpAQCAtMjE4LDYgKzIxOCw5IEBAIHBnYWRtaW4zX1NPVVJDRVMg Kz0gXAogCWluY2x1ZGUvaW1hZ2VzL3BnQWRtaW4zLnBuZyBcCiAJaW5jbHVk ZS9pbWFnZXMvcGdBZG1pbjMtMTYucG5nIFwKIAlpbmNsdWRlL2ltYWdlcy9w Z0FkbWluMy0zMi5wbmcgXAorCWluY2x1ZGUvaW1hZ2VzL3BvbGljaWVzLnBu ZyBcCisJaW5jbHVkZS9pbWFnZXMvcG9saWN5LnBuZyBcCisJaW5jbHVkZS9p bWFnZXMvcG9saWN5LXNtLnBuZyBcCiAJaW5jbHVkZS9pbWFnZXMvcHJpbWFy eWtleS5wbmcgXAogCWluY2x1ZGUvaW1hZ2VzL3Byb2NlZHVyZXMucG5nIFwK IAlpbmNsdWRlL2ltYWdlcy9wcm9jZWR1cmUucG5nIFwKZGlmZiAtLWdpdCBh L3BnYWRtaW4vaW5jbHVkZS9pbWFnZXMvcG9saWNpZXMucG5nIGIvcGdhZG1p bi9pbmNsdWRlL2ltYWdlcy9wb2xpY2llcy5wbmcKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uMDhhOWMyZDZkZjEyYmNhMjJiZDlmYzVhMzYzOTI1NzQ5YmM2 Y2FlNwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDM5CnpjbWVBU0BOPyhv bEh5YHVWQnEhaWEwdnBeMHdCITYxfDtQX3w0IyVgakt4OWpQN0xlTCQtRCR8 U2tmSlI5VF54bAp6X0grTTlXQ2lqJDNwXnI9ODVzQnVnRH5VcXsxcXVjTDVV TEFoPzN5XnczNzB+cUV2PjAjTFQ9Qnl9WjtDMXJ0MzMKeko9NEB5cWcwQHc4 bEVuV0FyfTV+QyFGPj05M2Fxa2UpU0lAdyYqPXV4VzVQR1hrRjVCR1Fab3Mq Q0YwOUNkMWBJCnpFNUJtTl5hKG1ib1NyMyREeUs5NUh4XnJFRHRXUWw4NXZ0 WEtrYXx6PWlqYnglalctZ3grKXJIdjBBPzxifkArYgp6NE5mQWlDWUFxUG8x V2YwKyNzY1hrY3I3Z1RKXytBTjshUkxSbWFiRlV3PlFfRDVOPlReSUphdSVL c0tpeH1VJTEKelN7dkQobGZGZmkjcW1KMTRedn1seGVOUGRWSGUkdHYmdTZi I05ATDZVN3FPS3B0QTQlV3tiWExIdTJRO19OU08rCnotUEx8PihEfTc3bXMj JipUendDIz1jRXFgbE59VGVzQHt9bDxsPiMrUyQwc2hfbnNzcFNGPXgoZUNm fDM9ZiYzegp6SChNdENkaSskPS1rVjg4aktUQlBYVDdjQnYzN2VaUXhCWUor QWhWJjwqbmoqZENEZjgjV3ZAKU1PK1ZGO1I+KWkKZThMelNRaXF1aTdkO3xX bD0tMHEtVyQ8K01iNk13PCY7JFZjakhHRCoKCmxpdGVyYWwgMApIY21WP2Qw MDAwMQoKZGlmZiAtLWdpdCBhL3BnYWRtaW4vaW5jbHVkZS9pbWFnZXMvcG9s aWN5LXNtLnBuZyBiL3BnYWRtaW4vaW5jbHVkZS9pbWFnZXMvcG9saWN5LXNt LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjMzNWZhNTNjM2Q4Zjk0 NzA3MjE4OTNkNDc1YmRhYTgzNDllYTc0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0 ZXJhbCAzOTQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNjF8O1Bf fDQjJWBqS3g5alA3TGVMJC1EJHxTa2ZKUjlUXnhsCnpfSCtNOVdDaWokM3Be cj04NXNCdWdEflVxezFxdWNMNVVMQWg/M3ledzM3MH5xRXY+MCNMVD1CeX1a O0MxcnQzMwp6Sj00QHlxZzBAcC08fmR4QXJ9NzA1O2hBbSZUanFSNitCPEti enhLaHFlcyV8dD55cFUtYG1UNSV6d1YhKEY1bl8Keis1VyEyUHJoQUk7b3pS cXJUPzROVUh8SWUzO0RWfkN0SF98WkAkPn57VkNxMmlPZiNSVD5rVVY3VUs/ VFgqI184CnpfK1MwSUxDdj10cz12U2NUbVJ2fiFUO18yXjhmMDhlb35jU1VL KCZpIUV6NFU5KHwxO15fRDc2e3koMjJXV25hTwp6YUQhdE9oZzNzUFZ+fEc5 OT0zKSM/Unx8dzF3NnVzR2FXdVkoPCpRWCV+fTZIZSghMmRwbk81dW5Ldm0w eV9YcFIKekx8bEZQfEh+VUglZExebjs1bntmY2NiQk0xeTlBX1V0ajs1PWlt RU58TkduOXxNfmEjQnxkbjZlfUEpSzdfJFJ8CmppWCVeKG1iXiRxQk9gO1Vh bTlLPUNsUE84RmZlJCFgbmp4Z05AeE5BVVRCP3oKCmxpdGVyYWwgMApIY21W P2QwMDAwMQoKZGlmZiAtLWdpdCBhL3BnYWRtaW4vaW5jbHVkZS9pbWFnZXMv cG9saWN5LnBuZyBiL3BnYWRtaW4vaW5jbHVkZS9pbWFnZXMvcG9saWN5LnBu ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTA0MTAxZDIwNjA1YmI4ZTVk NzQ0YWQzZDNlZDBhYjNiMTE5Njc0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh bCA0NzIKemNtVjt9MFZuPjZQKTxoOzNLfExrMDAwZTFOSkxUcTAwMG1HMDAw bU8xXkBzNkFNXmlWMDAwMDFiNWNoXzBJdHApCno9PlB4IzFaUDFfSz56QDtq fD09XjFwb2o1MzI7YlJhe3ZHaSF2RnZkIXZWKXtzQUs+RDAycCpkU2FlZndX XntMOQp6YSVCSztWUUZyM0VeY0xYQVQleThFO1ZJXkdHemImMFpCPGpLfnkr VHJJTzFeISQxXjxgemsoQHY4fiNSOzlkZXYKenl8andyIzt2R24zJS1NaGpW UVdzP15iWnZDTX5vZjxZRlBEU15tek12OyliY0xVR19AaEJeUUZtYHRYeTky PmZnCnpiLTRadnYxbT0yanFkPTEhR0pSeTRxPSs2I0FHdFRiVU1ZPU08UTlZ Q3hVfkFDTl4oJigwRlIwKFFpVFB3PFFqcgp6JnJzXnJwYyhEZTBfQVFPJH1O TkQ0OD18cnJFVSNQPDVVKlZ1YFNFT1hmKSFDJDcyYnthWVM3YntIUTl2NmF9 SEMKentSdzMjeUhiI2FsfmQ0T3UzJmt6SlhsMHBPOUopcmgraD1sYTI2SXh0 dHE9d3UlJVp9KVQ9MzJnd0lyYF8zX0tPCnpFVDlLcytjdip4KkxDNH1vYDZM SlZIaEhjQjNWRj5oeUYzeWlJZGswMGdMZHR7ZFM0VXtYVTsxMGV4UyZUU3ZL OQp6JDk4V3x6eyZ6QD03UlNlIVNkTD8/O3s4VCV3e3UqYEZ4SHpqeVdqLTRj Yl9UTWNhUXpxM3tkJHolXiRmU3txMEoKTzAwMDA8TU5VTW5MU1RYZTdzYWFw CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9wZ2FkbWlu L2luY2x1ZGUvc2NoZW1hL21vZHVsZS5tayBiL3BnYWRtaW4vaW5jbHVkZS9z Y2hlbWEvbW9kdWxlLm1rCmluZGV4IGIzNmE4YzUuLjNiYTFmOTkgMTAwNjQ0 Ci0tLSBhL3BnYWRtaW4vaW5jbHVkZS9zY2hlbWEvbW9kdWxlLm1rCisrKyBi L3BnYWRtaW4vaW5jbHVkZS9zY2hlbWEvbW9kdWxlLm1rCkBAIC00Miw2ICs0 Miw3IEBAIHBnYWRtaW4zX1NPVVJDRVMgKz0gXAogCWluY2x1ZGUvc2NoZW1h L3BnT3BlcmF0b3IuaCBcCiAJaW5jbHVkZS9zY2hlbWEvcGdPcGVyYXRvckNs YXNzLmggXAogCWluY2x1ZGUvc2NoZW1hL3BnT3BlcmF0b3JGYW1pbHkuaCBc CisJaW5jbHVkZS9zY2hlbWEvcGdQb2xpY3kuaCBcCiAJaW5jbHVkZS9zY2hl bWEvcGdSb2xlLmggXAogCWluY2x1ZGUvc2NoZW1hL3BnUnVsZS5oIFwKIAlp bmNsdWRlL3NjaGVtYS9wZ1NjaGVtYS5oIFwKZGlmZiAtLWdpdCBhL3BnYWRt aW4vaW5jbHVkZS9zY2hlbWEvcGdQb2xpY3kuaCBiL3BnYWRtaW4vaW5jbHVk ZS9zY2hlbWEvcGdQb2xpY3kuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4xMjAyZTkwCi0tLSAvZGV2L251bGwKKysrIGIvcGdhZG1p bi9pbmNsdWRlL3NjaGVtYS9wZ1BvbGljeS5oCkBAIC0wLDAgKzEsMTIzIEBA CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRt aW4gSUlJIC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAo QykgMjAwMiAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K Ky8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorLy8KKy8vIHBnUG9saWN5LmggUG9zdGdyZVNRTCBS b3cgc2VjdXJpdHkgcG9saWN5CisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KKworI2lmbmRlZiBQR1BPTElDWV9ICisjZGVmaW5lIFBHUE9M SUNZX0gKKworI2luY2x1ZGUgPHd4L2FycnN0ci5oPgorI2luY2x1ZGUgInBn VGFibGUuaCIKKworY2xhc3MgcGdDb2xsZWN0aW9uOworCitjbGFzcyBwZ1Bv bGljeUZhY3RvcnkgOiBwdWJsaWMgcGdUYWJsZU9iakZhY3RvcnkKK3sKK3B1 YmxpYzoKKwlwZ1BvbGljeUZhY3RvcnkoKTsKKwl2aXJ0dWFsIGRsZ1Byb3Bl cnR5ICpDcmVhdGVEaWFsb2coZnJtTWFpbiAqZnJhbWUsIHBnT2JqZWN0ICpu b2RlLCBwZ09iamVjdCAqcGFyZW50KTsKKwl2aXJ0dWFsIHBnT2JqZWN0ICpD cmVhdGVPYmplY3RzKHBnQ29sbGVjdGlvbiAqY29sbCwgY3RsVHJlZSAqYnJv d3NlciwgY29uc3Qgd3hTdHJpbmcgJnJlc3RyaWN0aW9uID0gd3hFbXB0eVN0 cmluZyk7CisJdmlydHVhbCBwZ0NvbGxlY3Rpb24gKkNyZWF0ZUNvbGxlY3Rp b24ocGdPYmplY3QgKm9iaik7Cit9OworZXh0ZXJuIHBnUG9saWN5RmFjdG9y eSBwb2xpY3lGYWN0b3J5OworCisvLyBwb2xpY3kgY29tbWFuZCB2YWx1ZXMK K2VudW0KK3sKKwlQT0xJQ1lfQUxMID0gJyonLAorCVBPTElDWV9TRUxFQ1Qg PSAncicsCisJUE9MSUNZX0lOU0VSVCA9ICdhJywKKwlQT0xJQ1lfVVBEQVRF ID0gJ3cnLAorCVBPTElDWV9ERUxFVEUgPSAnZCcKK307CisKKy8vIHVzZSB3 aXRoIEdldEFsdGVyVGFibGVQb2xpY3lQYXJhbXNTcWwKK2VudW0gCit7CisJ Uk9XX1NFQ1VSVVRZX1NLSVAgPSAwLAkvLyBkbyBub3QgZ2VuZXJhdGUgc3Rh dGVtZW50CisJUk9XX1NFQ1VSVVRZX0VOQUJMRSwJLy8gZ2VuZXJhdGUgRU5B QkxFIFJPVyBMRVZFTCBTRUNVUklUWSBzdGF0ZW1lbnQKKwlST1dfU0VDVVJV VFlfRElTQUJMRSwJLy8gZ2VuZXJhdGUgRElTQUJMRSBST1cgTEVWRUwgU0VD VVJJVFkgc3RhdGVtZW50CisJUk9XX1NFQ1VSVVRZX0ZPUkNFLAkJLy8gZ2Vu ZXJhdGUgRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZIHN0YXRlbWVudAorCVJP V19TRUNVUlVUWV9OT0ZPUkNFCS8vIGdlbmVyYXRlIE5PIEZPUkNFIFJPVyBM RVZFTCBTRUNVUklUWSBzdGF0ZW1lbnQKK307CisKKy8vIFJvdy1MZXZlbCBT ZWN1cml0eSBwb2xpY3kgb2JqZWN0IAorY2xhc3MgcGdQb2xpY3kgOiBwdWJs aWMgcGdUYWJsZU9iamVjdAoreworcHVibGljOgorCXBnUG9saWN5KHBnVGFi bGUgKm5ld1RhYmxlLCBjb25zdCB3eFN0cmluZyAmbmV3TmFtZSA9IHd4VCgi IikpOworCX5wZ1BvbGljeSgpOworCisJY2hhciBHZXRQb2xpY3lDb21tYW5k KCkgY29uc3QKKwl7CisJCXJldHVybiBjb21tYW5kOworCX0KKwl2b2lkIGlT ZXRQb2xpY3lDb21tYW5kKGNoYXIgY21kKQorCXsKKwkJY29tbWFuZCA9IGNt ZDsKKwl9CisJY29uc3Qgd3hTb3J0ZWRBcnJheVN0cmluZyYgR2V0UG9saWN5 Um9sZXNTb3J0ZWQoKSBjb25zdAorCXsKKwkJcmV0dXJuIHJvbGVOYW1lczsK Kwl9CisJdm9pZCBpU2V0UG9saWN5Um9sZXMoY29uc3Qgd3hBcnJheVN0cmlu ZyAmbmFtZXMpOworCXd4U3RyaW5nIEdldFBvbGljeVVzaW5nRXhwcmVzc2lv bigpIGNvbnN0CisJeworCQlyZXR1cm4gZXhwclVzaW5nOworCX0KKwl2b2lk IGlTZXRQb2xpY3lVc2luZ0V4cHJlc3Npb24oY29uc3Qgd3hTdHJpbmcgJmV4 cHIpCisJeworCQlleHByVXNpbmcgPSBleHByOworCX0KKwl3eFN0cmluZyBH ZXRQb2xpY3lXaXRoQ2hlY2tFeHByZXNzaW9uKCkgY29uc3QKKwl7CisJCXJl dHVybiBleHByV2l0aENoZWNrOworCX0KKwl2b2lkIGlTZXRQb2xpY3lXaXRo Q2hlY2tFeHByZXNzaW9uKGNvbnN0IHd4U3RyaW5nICZleHByKQorCXsKKwkJ ZXhwcldpdGhDaGVjayA9IGV4cHI7CisJfQorCisJYm9vbCBEcm9wT2JqZWN0 KHd4RnJhbWUgKmZyYW1lLCBjdGxUcmVlICpicm93c2VyLCBib29sIGNhc2Nh ZGVkKTsKKworCQorCXd4U3RyaW5nIEdldFNxbChjdGxUcmVlICpicm93c2Vy KTsKKwl3eFN0cmluZyBHZXRUcmFuc2xhdGVkTWVzc2FnZShpbnQga2luZE9m TWVzc2FnZSkgY29uc3Q7CisJdm9pZCBTaG93VHJlZURldGFpbChjdGxUcmVl ICpicm93c2VyLCBmcm1NYWluICpmb3JtID0gMCwgY3RsTGlzdFZpZXcgKnBy b3BlcnRpZXMgPSAwLCBjdGxTUUxCb3ggKnNxbFBhbmUgPSAwKTsKKworCS8v IGdlbmVyYXRlIEFMVEVSIHN0YXRlbWVudCBmb3IgdGFibGUgUkxTIHBhcmFt ZXRlcnMgKEVOQUJMRS9ESVNBQkxFL0ZPUkNFL05PRk9SQ0UpCisJc3RhdGlj IHd4U3RyaW5nIEdldEFsdGVyVGFibGVQb2xpY3lQYXJhbXNTcWwoY29uc3Qg d3hTdHJpbmcgJnRhYmxlLCBpbnQgZW5hYmxlUmxzLCBpbnQgZm9yY2VSbHMp OworCS8vIGdlbmVyYXRlIEFMVEVSIFBPTElDWSBzdGF0ZW1lbnQgCisJLy8g YXJndW1lbnRzIHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IGN1cnJlbnQgc3Rh dGUgb2YgcGdQb2xpY3kgb2JqZWN0IGFuZCBjb3JyZXNwb25kaW5nIHNxbCB3 aWxsIGJlIGNyZWF0ZWQKKwl3eFN0cmluZyBHZXRBbHRlclBvbGljeVNxbChj b25zdCB3eFN0cmluZyAmbmFtZSwgY29uc3Qgd3hBcnJheVN0cmluZyAmc29y dGVkUm9sZXMsIGNvbnN0IHd4U3RyaW5nICZleHByVXNpbmcsIGNvbnN0IHd4 U3RyaW5nICZleHByQ2hlY2spIGNvbnN0OworCS8vIGdlbmVyYXRlIENSRUFU RSBQT0xJQ1kgc3RhdGVtZW50IAorCS8vIGRlZmF1bHQgc3RhdGVtZW50cyB3 aWxsIGJlIG9taXR0ZWQKKwlzdGF0aWMgd3hTdHJpbmcgR2V0Q3JlYXRlUG9s aWN5U3FsKGNvbnN0IHd4U3RyaW5nICZuYW1lLCBjb25zdCB3eFN0cmluZyAm dGFibGUsIGNoYXIgY29tbWFuZCwgY29uc3Qgd3hBcnJheVN0cmluZyAmcm9s ZXMsIAorCQkJCQkJCQkJICAgY29uc3Qgd3hTdHJpbmcgJmV4cHJVc2luZywg Y29uc3Qgd3hTdHJpbmcgJmNoZWNrRXhwcik7CisKK3ByaXZhdGU6CisJc3Rh dGljIHd4U3RyaW5nIEdldFBvbGljeUNvbW1hbmRTdHJpbmcoY2hhciBjb21t YW5kKTsKKwlzdGF0aWMgd3hTdHJpbmcmIFdyYXBQYXJlbnRoZXNlcyh3eFN0 cmluZyAmZXhwcik7CisJc3RhdGljIHd4U3RyaW5nIEdldFBvbGljeVJvbGVz U3RyaW5nKGNvbnN0IHd4QXJyYXlTdHJpbmcgJnJvbGVzKTsJCisKK3ByaXZh dGU6CisJY2hhciBjb21tYW5kOworCXd4U29ydGVkQXJyYXlTdHJpbmcgcm9s ZU5hbWVzOwkvLyBzb3J0ZWQgZm9yIGVhc3kgY2hhbmdlIGNoZWNrcy4gZW1w dHkgbGlzdCBtZWFucyBUTyBQVUJMSUMgcG9saWN5CisJd3hTdHJpbmcgZXhw clVzaW5nLCBleHByV2l0aENoZWNrOworfTsKKworY2xhc3MgcGdQb2xpY3lD b2xsZWN0aW9uIDogcHVibGljIHBnVGFibGVPYmpDb2xsZWN0aW9uCit7Citw dWJsaWM6CisJcGdQb2xpY3lDb2xsZWN0aW9uKHBnYUZhY3RvcnkgKmZhY3Rv cnksIHBnVGFibGUgKnRibCk7CisJd3hTdHJpbmcgR2V0VHJhbnNsYXRlZE1l c3NhZ2UoaW50IGtpbmRPZk1lc3NhZ2UpIGNvbnN0OworfTsKKworCisjZW5k aWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9w Z2FkbWluL2luY2x1ZGUvc2NoZW1hL3BnVGFibGUuaCBiL3BnYWRtaW4vaW5j bHVkZS9zY2hlbWEvcGdUYWJsZS5oCmluZGV4IDMxZWIyNWQuLjFhZGQwNGMg MTAwNjQ0Ci0tLSBhL3BnYWRtaW4vaW5jbHVkZS9zY2hlbWEvcGdUYWJsZS5o CisrKyBiL3BnYWRtaW4vaW5jbHVkZS9zY2hlbWEvcGdUYWJsZS5oCkBAIC01 MTcsNiArNTE3LDI0IEBAIHB1YmxpYzoKIAl9CiAJYm9vbCBIYXNQZ3N0YXR0 dXBsZSgpOwogCisJLyogcm93IGxldmVsIHNlY3VyaXR5IG9wdGlvbnMgKi8K Kwlib29sIEdldFJvd0xldmVsU2VjdXJpdHlFbmFibGVkKCkgY29uc3QKKwl7 CisJCXJldHVybiByb3dTZWN1cml0eUVuYWJsZWQ7CisJfQorCXZvaWQgaVNl dFJvd0xldmVsU2VjdXJpdHlFbmFibGVkKGJvb2wgZW5hYmxlZCkKKwl7CisJ CXJvd1NlY3VyaXR5RW5hYmxlZCA9IGVuYWJsZWQ7CisJfQorCWJvb2wgR2V0 Rm9yY2VSb3dMZXZlbFNlY3VyaXR5KCkgY29uc3QKKwl7CisJCXJldHVybiBm b3JjZVJvd1NlY3VyaXR5OworCX0KKwl2b2lkIGlTZXRGb3JjZVJvd0xldmVs U2VjdXJpdHkoYm9vbCBmb3JjZSkKKwl7CisJCWZvcmNlUm93U2VjdXJpdHkg PSBmb3JjZTsKKwl9CisKIAl2aXJ0dWFsIHd4TWVudSAqR2V0TmV3TWVudSgp OwogCXZpcnR1YWwgd3hTdHJpbmcgR2V0U3FsKGN0bFRyZWUgKmJyb3dzZXIp OwogCXd4U3RyaW5nIEdldFNlbGVjdFNxbChjdGxUcmVlICpicm93c2VyKTsK QEAgLTU2Miw3ICs1ODAsNyBAQCBwcml2YXRlOgogCXd4U3RyaW5nIGNoZWNr c3VtOwogCXd4U3RyaW5nIHBhcnRpdGlvbkRlZjsKIAlib29sIGlzUGFydGl0 aW9uZWQ7Ci0JYm9vbCBoYXNPaWRzLCB1bmxvZ2dlZCwgaGFzU3ViY2xhc3Ms IHJvd3NDb3VudGVkLCBpc1JlcGxpY2F0ZWQsIHNob3dFeHRlbmRlZFN0YXRp c3RpY3MsIGRpc3RyaWJ1dGlvbklzUmFuZG9tOworCWJvb2wgaGFzT2lkcywg dW5sb2dnZWQsIGhhc1N1YmNsYXNzLCByb3dzQ291bnRlZCwgaXNSZXBsaWNh dGVkLCBzaG93RXh0ZW5kZWRTdGF0aXN0aWNzLCBkaXN0cmlidXRpb25Jc1Jh bmRvbSwgcm93U2VjdXJpdHlFbmFibGVkLCBmb3JjZVJvd1NlY3VyaXR5Owog CiAJd3hTdHJpbmcgdG9hc3RfZmlsbEZhY3RvciwgdG9hc3RfYXV0b3ZhY3V1 bV92YWN1dW1fdGhyZXNob2xkLAogCSAgICAgICAgIHRvYXN0X2F1dG92YWN1 dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciwgdG9hc3RfYXV0b3ZhY3V1bV92YWN1 dW1fY29zdF9kZWxheSwKZGlmZiAtLWdpdCBhL3BnYWRtaW4vaW5jbHVkZS91 dGlscy9taXNjLmggYi9wZ2FkbWluL2luY2x1ZGUvdXRpbHMvbWlzYy5oCmlu ZGV4IGI0YTMwYTAuLjNhYWJmOGQgMTAwNjQ0Ci0tLSBhL3BnYWRtaW4vaW5j bHVkZS91dGlscy9taXNjLmgKKysrIGIvcGdhZG1pbi9pbmNsdWRlL3V0aWxz L21pc2MuaApAQCAtMjIwLDYgKzIyMCw3IEBAIGVudW0KIAlQR01fSU5ERVgs CiAJUEdNX09QQ0xBU1MsCiAJUEdNX09QRkFNSUxZLAorCVBHTV9QT0xJQ1ks CiAJUEdNX1BSSU1BUllLRVksCiAJUEdNX1JPTEUsCiAJUEdNX1JVTEUsCmRp ZmYgLS1naXQgYS9wZ2FkbWluL3BnQWRtaW4zLnZjeHByb2ogYi9wZ2FkbWlu L3BnQWRtaW4zLnZjeHByb2oKaW5kZXggYmMxMDE2Ni4uNWZmZmMyNCAxMDA2 NDQKLS0tIGEvcGdhZG1pbi9wZ0FkbWluMy52Y3hwcm9qCisrKyBiL3BnYWRt aW4vcGdBZG1pbjMudmN4cHJvagpAQCAtODU3LDYgKzg1Nyw3IEBACiAgICAg PENsQ29tcGlsZSBJbmNsdWRlPSJkbGdcZGxnT3BlcmF0b3IuY3BwIiAvPgog ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iZGxnXGRsZ1BhY2thZ2UuY3BwIiAv PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iZGxnXGRsZ1BncGFzc0NvbmZp Zy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkbGdcZGxnUG9s aWN5LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImRsZ1xkbGdQ cm9wZXJ0eS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJkbGdc ZGxnUmVhc3NpZ25Ecm9wT3duZWQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg SW5jbHVkZT0iZGxnXGRsZ1Jlc291cmNlR3JvdXAuY3BwIiAvPgpAQCAtMjIx Nyw2ICsyMjE4LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9InNjaGVt YVxwZ09wZXJhdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9 InNjaGVtYVxwZ09wZXJhdG9yQ2xhc3MuY3BwIiAvPgogICAgIDxDbENvbXBp bGUgSW5jbHVkZT0ic2NoZW1hXHBnT3BlcmF0b3JGYW1pbHkuY3BwIiAvPgor ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ic2NoZW1hXHBnUG9saWN5LmNwcCIg Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9InNjaGVtYVxwZ1JvbGUuY3Bw IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ic2NoZW1hXHBnUnVsZS5j cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJzY2hlbWFccGdTY2hl bWEuY3BwIiAvPgpAQCAtMjY5Niw2ICsyNjk4LDcgQEAKICAgICA8Tm9uZSBJ bmNsdWRlPSJ1aVxkbGdPcGVyYXRvci54cmMiIC8+CiAgICAgPE5vbmUgSW5j bHVkZT0idWlcZGxnUGFja2FnZS54cmMiIC8+CiAgICAgPE5vbmUgSW5jbHVk ZT0idWlcZGxnUGdwYXNzQ29uZmlnLnhyYyIgLz4KKyAgICA8Tm9uZSBJbmNs dWRlPSJ1aVxkbGdQb2xpY3kueHJjIiAvPgogICAgIDxOb25lIEluY2x1ZGU9 InVpXGRsZ1JlYXNzaWduRHJvcE93bmVkLnhyYyIgLz4KICAgICA8Tm9uZSBJ bmNsdWRlPSJ1aVxkbGdSZXBDbHVzdGVyLnhyYyIgLz4KICAgICA8Tm9uZSBJ bmNsdWRlPSJ1aVxkbGdSZXBDbHVzdGVyVXBncmFkZS54cmMiIC8+CkBAIC0y Nzg3LDYgKzI3OTAsNyBAQAogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91 cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImluY2x1ZGVcY29weXJpZ2h0 LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJpbmNsdWRlXGRsZ1xk bGdQb2xpY3kuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImluY2x1 ZGVcZGxnXGRsZ1Jlc291cmNlR3JvdXAuaCIgLz4KICAgICA8Q2xJbmNsdWRl IEluY2x1ZGU9ImluY2x1ZGVcbGlic3NoMlxjaGFubmVsLmgiIC8+CiAgICAg PENsSW5jbHVkZSBJbmNsdWRlPSJpbmNsdWRlXGxpYnNzaDJcY29tcC5oIiAv PgpAQCAtMjgwOSw2ICsyODEzLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1 ZGU9ImluY2x1ZGVccG9zdGdyZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu Y2x1ZGU9ImluY2x1ZGVccHJlY29tcC5oIiAvPgogICAgIDxDbEluY2x1ZGUg SW5jbHVkZT0iaW5jbHVkZVxzY2hlbWFcZWRiUmVzb3VyY2VHcm91cC5oIiAv PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iaW5jbHVkZVxzY2hlbWFccGdQ b2xpY3kuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImluY2x1ZGVc c3ZudmVyc2lvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iaW5j bHVkZVx1dGlsc1xzc2hUdW5uZWwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu Y2x1ZGU9ImluY2x1ZGVcdmVyc2lvbi5oIiAvPgpAQCAtMzQ1OCw2ICszNDYz LDkgQEAKICAgICA8cG5nMmMgSW5jbHVkZT0iaW5jbHVkZVxpbWFnZXNccGdB ZG1pbjMtMzIucG5nIiAvPgogICAgIDxwbmcyYyBJbmNsdWRlPSJpbmNsdWRl XGltYWdlc1xwZ0FkbWluMy5wbmciIC8+CiAgICAgPHBuZzJjIEluY2x1ZGU9 ImluY2x1ZGVcaW1hZ2VzXHBsdWdpbnMucG5nIiAvPgorICAgIDxwbmcyYyBJ bmNsdWRlPSJpbmNsdWRlXGltYWdlc1xwb2xpY2llcy5wbmciIC8+CisgICAg PHBuZzJjIEluY2x1ZGU9ImluY2x1ZGVcaW1hZ2VzXHBvbGljeS1zbS5wbmci IC8+CisgICAgPHBuZzJjIEluY2x1ZGU9ImluY2x1ZGVcaW1hZ2VzXHBvbGlj eS5wbmciIC8+CiAgICAgPHBuZzJjIEluY2x1ZGU9ImluY2x1ZGVcaW1hZ2Vz XHByaW1hcnlrZXkucG5nIiAvPgogICAgIDxwbmcyYyBJbmNsdWRlPSJpbmNs dWRlXGltYWdlc1xwcm9jZWR1cmUucG5nIiAvPgogICAgIDxwbmcyYyBJbmNs dWRlPSJpbmNsdWRlXGltYWdlc1xwcm9jZWR1cmVzLnBuZyIgLz4KQEAgLTM1 NzAsNCArMzU3OCw0IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5z aW9uVGFyZ2V0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxwZ0FkbWlu My50YXJnZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0Pgor PC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3BnYWRtaW4vcGdBZG1pbjMudmN4cHJvai5maWx0ZXJzIGIvcGdh ZG1pbi9wZ0FkbWluMy52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZjY1YjI2OC4u Mjc1OGIzYSAxMDA2NDQKLS0tIGEvcGdhZG1pbi9wZ0FkbWluMy52Y3hwcm9q LmZpbHRlcnMKKysrIGIvcGdhZG1pbi9wZ0FkbWluMy52Y3hwcm9qLmZpbHRl cnMKQEAgLTE2ODYsNiArMTY4NiwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5j bHVkZT0iZGxnXGRsZ01vdmVUYWJsZXNwYWNlLmNwcCI+CiAgICAgICA8Rmls dGVyPmRsZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv bXBpbGUgSW5jbHVkZT0ic2NoZW1hXHBnUG9saWN5LmNwcCI+CisgICAgICA8 RmlsdGVyPnNjaGVtYTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAg IDxDbENvbXBpbGUgSW5jbHVkZT0iZGxnXGRsZ1BvbGljeS5jcHAiPgorICAg ICAgPEZpbHRlcj5kbGc8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAg PC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVk ZT0iYWdlbnRcbW9kdWxlLm1rIj4KQEAgLTIyMTEsNiArMjIxNyw5IEBACiAg ICAgPE5vbmUgSW5jbHVkZT0idWlcZGxnTW92ZVRhYmxlc3BhY2UueHJjIj4K ICAgICAgIDxGaWx0ZXI+dWk8L0ZpbHRlcj4KICAgICA8L05vbmU+CisgICAg PE5vbmUgSW5jbHVkZT0idWlcZGxnUG9saWN5LnhyYyI+CisgICAgICA8Rmls dGVyPnVpPC9GaWx0ZXI+CisgICAgPC9Ob25lPgogICA8L0l0ZW1Hcm91cD4K ICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImluY2x1 ZGVcY29weXJpZ2h0LmgiPgpAQCAtMzU4MSw2ICszNTkwLDEyIEBACiAgICAg PENsSW5jbHVkZSBJbmNsdWRlPSJpbmNsdWRlXGRiXHBnUXVlcnlSZXN1bHRF dmVudC5oIj4KICAgICAgIDxGaWx0ZXI+aW5jbHVkZVxkYjwvRmlsdGVyPgog ICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iaW5j bHVkZVxzY2hlbWFccGdQb2xpY3kuaCI+CisgICAgICA8RmlsdGVyPmluY2x1 ZGVcc2NoZW1hPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENs SW5jbHVkZSBJbmNsdWRlPSJpbmNsdWRlXGRsZ1xkbGdQb2xpY3kuaCI+Cisg ICAgICA8RmlsdGVyPmluY2x1ZGVcZGxnPC9GaWx0ZXI+CisgICAgPC9DbElu Y2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxw bmcyYyBJbmNsdWRlPSJpbmNsdWRlXGltYWdlc1xhZ2dyZWdhdGUtc20ucG5n Ij4KQEAgLTQ1MTksNiArNDUzNCwxNSBAQAogICAgIDxwbmcyYyBJbmNsdWRl PSJpbmNsdWRlXGltYWdlc1xxdWVyeV9yb2xsYmFjay5wbmciPgogICAgICAg PEZpbHRlcj5pbmNsdWRlXGltYWdlczwvRmlsdGVyPgogICAgIDwvcG5nMmM+ CisgICAgPHBuZzJjIEluY2x1ZGU9ImluY2x1ZGVcaW1hZ2VzXHBvbGljaWVz LnBuZyI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcaW1hZ2VzPC9GaWx0ZXI+ CisgICAgPC9wbmcyYz4KKyAgICA8cG5nMmMgSW5jbHVkZT0iaW5jbHVkZVxp bWFnZXNccG9saWN5LnBuZyI+CisgICAgICA8RmlsdGVyPmluY2x1ZGVcaW1h Z2VzPC9GaWx0ZXI+CisgICAgPC9wbmcyYz4KKyAgICA8cG5nMmMgSW5jbHVk ZT0iaW5jbHVkZVxpbWFnZXNccG9saWN5LXNtLnBuZyI+CisgICAgICA8Rmls dGVyPmluY2x1ZGVcaW1hZ2VzPC9GaWx0ZXI+CisgICAgPC9wbmcyYz4KICAg PC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPFJlc291cmNlQ29t cGlsZSBJbmNsdWRlPSJwZ0FkbWluMy5yYyIgLz4KZGlmZiAtLWdpdCBhL3Bn YWRtaW4vc2NoZW1hL21vZHVsZS5tayBiL3BnYWRtaW4vc2NoZW1hL21vZHVs ZS5tawppbmRleCA5Y2U1OWM1Li4xZjgzMmQ0IDEwMDY0NAotLS0gYS9wZ2Fk bWluL3NjaGVtYS9tb2R1bGUubWsKKysrIGIvcGdhZG1pbi9zY2hlbWEvbW9k dWxlLm1rCkBAIC00Miw2ICs0Miw3IEBAIHBnYWRtaW4zX1NPVVJDRVMgKz0g XAogICAgICAgICBzY2hlbWEvcGdPcGVyYXRvci5jcHAgXAogICAgICAgICBz Y2hlbWEvcGdPcGVyYXRvckNsYXNzLmNwcCBcCiAgICAgICAgIHNjaGVtYS9w Z09wZXJhdG9yRmFtaWx5LmNwcCBcCisJCXNjaGVtYS9wZ1BvbGljeS5jcHAg XAogICAgICAgICBzY2hlbWEvcGdSb2xlLmNwcCBcCiAgICAgICAgIHNjaGVt YS9wZ1J1bGUuY3BwIFwKICAgICAgICAgc2NoZW1hL3BnU2NoZW1hLmNwcCBc CmRpZmYgLS1naXQgYS9wZ2FkbWluL3NjaGVtYS9wZ1BvbGljeS5jcHAgYi9w Z2FkbWluL3NjaGVtYS9wZ1BvbGljeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNjQyODI5NQotLS0gL2Rldi9udWxsCisrKyBi L3BnYWRtaW4vc2NoZW1hL3BnUG9saWN5LmNwcApAQCAtMCwwICsxLDM5MSBA QAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0Fk bWluIElJSSAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQg KEMpIDIwMDIgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKy8vCisvLyBwZ1BvbGljeS5jcHAgUG9zdGdyZVNR TCBSb3cgc2VjdXJpdHkgcG9saWN5CisvLworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KKworLy8gd3hXaW5kb3dzIGhlYWRlcnMKKyNpbmNsdWRl IDx3eC93eC5oPgorCisvLyBBcHAgaGVhZGVycworI2luY2x1ZGUgInBnQWRt aW4zLmgiCisjaW5jbHVkZSAidXRpbHMvbWlzYy5oIgorI2luY2x1ZGUgInV0 aWxzL3BnRGVmcy5oIgorI2luY2x1ZGUgInNjaGVtYS9wZ1BvbGljeS5oIgor I2luY2x1ZGUgImRsZy9kbGdQb2xpY3kuaCIKKworI2luY2x1ZGUgPGxpc3Q+ CisKK3BnUG9saWN5OjpwZ1BvbGljeShwZ1RhYmxlICpuZXdUYWJsZSwgY29u c3Qgd3hTdHJpbmcgJm5ld05hbWUpCisJOiBwZ1RhYmxlT2JqZWN0KG5ld1Rh YmxlLCBwb2xpY3lGYWN0b3J5LCBuZXdOYW1lKQoreworCWNvbW1hbmQgPSBQ T0xJQ1lfQUxMOworfQorCitwZ1BvbGljeTo6fnBnUG9saWN5KCkKK3sKK30K Kwordm9pZCBwZ1BvbGljeTo6aVNldFBvbGljeVJvbGVzKGNvbnN0IHd4QXJy YXlTdHJpbmcgJm5hbWVzKQoreworCS8vIGNhbid0IHVzZSBhc3NpZ25tZW50 IG9wZXJhdG9yIGJlY2F1c2UgaXQgcmV3cml0ZXMgbV9hdXRvU29ydCBmbGFn IG9mIHd4U29ydGVkQXJyYXlTdHJpbmcKKwlyb2xlTmFtZXMuQ2xlYXIoKTsK Kwlmb3IgKGludCBpID0gMDsgaSA8IG5hbWVzLnNpemUoKTsgaSsrKQorCQly b2xlTmFtZXMuQWRkKG5hbWVzW2ldKTsKK30KKworYm9vbCBwZ1BvbGljeTo6 RHJvcE9iamVjdCh3eEZyYW1lICpmcmFtZSwgY3RsVHJlZSAqYnJvd3Nlciwg Ym9vbCBjYXNjYWRlZCkKK3sKKwl3eFN0cmluZyBzcWwgPSB3eFQoIkRST1Ag UE9MSUNZICIpICsgR2V0UXVvdGVkSWRlbnRpZmllcigpICsgd3hUKCIgT04g IikgKyBHZXRUYWJsZSgpLT5HZXRRdW90ZWRGdWxsSWRlbnRpZmllcigpOwor CisJcmV0dXJuIEdldERhdGFiYXNlKCktPkV4ZWN1dGVWb2lkKHNxbCk7Cit9 CisKK3d4U3RyaW5nIHBnUG9saWN5OjpHZXRBbHRlclBvbGljeVNxbChjb25z dCB3eFN0cmluZyAmbmFtZSwgY29uc3Qgd3hBcnJheVN0cmluZyAmc29ydGVk Um9sZXMsIAorCQkJCQkJCQkJICAgY29uc3Qgd3hTdHJpbmcgJmV4cHJVc2lu ZywgY29uc3Qgd3hTdHJpbmcgJmV4cHJDaGVjaykgY29uc3QgCit7CisJd3hT dHJpbmcgc3FsOworCXd4U3RyaW5nIHNxbFJlbmFtZTsKKwl3eFN0cmluZyBz cWxDaGFuZ2U7CisKKwlpZiAoR2V0UXVvdGVkSWRlbnRpZmllcigpICE9IG5h bWUpCisJCXNxbFJlbmFtZSA9IHd4VCgiQUxURVIgUE9MSUNZICIpICsgR2V0 UXVvdGVkSWRlbnRpZmllcigpICsgd3hUKCIgT04gIikgKyB0YWJsZS0+R2V0 UXVvdGVkRnVsbElkZW50aWZpZXIoKSArIHd4VCgiXG4iKQorCQkJKyB3eFQo IglSRU5BTUUgVE8gIikgKyBuYW1lICsgd3hUKCI7XG5cbiIpOworCisJaWYg KHNvcnRlZFJvbGVzICE9IEdldFBvbGljeVJvbGVzU29ydGVkKCkpCisJewor CQl3eFN0cmluZyByb2xlcyA9IEdldFBvbGljeVJvbGVzU3RyaW5nKHNvcnRl ZFJvbGVzKTsKKwkJaWYgKHJvbGVzLklzRW1wdHkoKSkKKwkJCXJvbGVzID0g d3hUKCJQVUJMSUMiKTsKKworCQlzcWxDaGFuZ2UgKz0gd3hUKCJcblRPICIp ICsgcm9sZXM7CisJfQorCisJaWYgKGV4cHJVc2luZyAhPSBHZXRQb2xpY3lV c2luZ0V4cHJlc3Npb24oKSkKKwl7CisJCXd4U3RyaW5nIGV4cHIgPSBleHBy VXNpbmc7CisJCWlmIChleHByLklzRW1wdHkoKSkKKwkJCWV4cHIgPSB3eFQo InRydWUiKTsKKworCQlzcWxDaGFuZ2UgKz0gd3hUKCJcblVTSU5HICIpICsg V3JhcFBhcmVudGhlc2VzKGV4cHIpOworCX0KKworCWlmIChleHByQ2hlY2sg IT0gR2V0UG9saWN5V2l0aENoZWNrRXhwcmVzc2lvbigpKQorCXsKKwkJd3hT dHJpbmcgZXhwciA9IGV4cHJDaGVjazsKKwkJaWYgKGV4cHIuSXNFbXB0eSgp KQorCQkJZXhwciA9IHd4VCgidHJ1ZSIpOworCisJCXNxbENoYW5nZSArPSB3 eFQoIlxuV0lUSCBDSEVDSyAiKSArIFdyYXBQYXJlbnRoZXNlcyhleHByKTsK Kwl9CisKKwlpZiAoIXNxbFJlbmFtZS5Jc0VtcHR5KCkpCisJCXNxbCArPSBz cWxSZW5hbWU7CisKKwlpZiAoIXNxbENoYW5nZS5Jc0VtcHR5KCkpCisJCXNx bCArPSB3eFQoIkFMVEVSIFBPTElDWSAiKSArIG5hbWUgKyB3eFQoIiBPTiAi KSArIHRhYmxlLT5HZXRRdW90ZWRGdWxsSWRlbnRpZmllcigpICsgd3hUKCIg IikgKyBzcWxDaGFuZ2U7CisKKwlyZXR1cm4gc3FsOworfQorCit3eFN0cmlu ZyBwZ1BvbGljeTo6R2V0Q3JlYXRlUG9saWN5U3FsKGNvbnN0IHd4U3RyaW5n ICZuYW1lLCBjb25zdCB3eFN0cmluZyAmdGFibGUsIGNoYXIgY29tbWFuZCwg Y29uc3Qgd3hBcnJheVN0cmluZyAmcm9sZXMsIAorCQkJCQkJCQkJICAgY29u c3Qgd3hTdHJpbmcgJmV4cHJVc2luZywgY29uc3Qgd3hTdHJpbmcgJmNoZWNr RXhwcikKK3sKKwl3eFN0cmluZyBzcWw7CisKKwlzcWwgKz0gd3hUKCJDUkVB VEUgUE9MSUNZICIpICsgbmFtZSArIHd4VCgiIE9OICIpICsgdGFibGU7CisJ aWYgKGNvbW1hbmQgIT0gUE9MSUNZX0FMTCkKKwl7CisJCXd4U3RyaW5nIGNt ZCA9IHBnUG9saWN5OjpHZXRQb2xpY3lDb21tYW5kU3RyaW5nKGNvbW1hbmQp OworCQlpZiAoIWNtZC5Jc0VtcHR5KCkpCisJCQlzcWwgKz0gd3hUKCJcbkZP UiAiKSArIGNtZDsKKwl9CisJCisJaWYgKCFyb2xlcy5Jc0VtcHR5KCkpCisJ CXNxbCArPSB3eFQoIlxuVE8gIikgKyBHZXRQb2xpY3lSb2xlc1N0cmluZyhy b2xlcyk7CisKKwl3eFN0cmluZyBleHByID0gZXhwclVzaW5nOworCWlmICgh ZXhwci5Jc0VtcHR5KCkpCisJCXNxbCArPSB3eFQoIlxuVVNJTkcgIikgKyBX cmFwUGFyZW50aGVzZXMoZXhwcik7CisKKwlleHByID0gY2hlY2tFeHByOwor CWlmICghZXhwci5Jc0VtcHR5KCkpCisJCXNxbCArPSB3eFQoIlxuV0lUSCBD SEVDSyAiKSArIFdyYXBQYXJlbnRoZXNlcyhleHByKTsKKworCXNxbCArPSB3 eFQoIjtcbiIpOworCisJcmV0dXJuIHNxbDsKK30KKword3hTdHJpbmcgcGdQ b2xpY3k6OkdldFNxbChjdGxUcmVlICpicm93c2VyKQoreworCXd4U3RyaW5n IHNxbDsKKworCXNxbCA9IHd4VCgiLS0gUG9saWN5OiAiKSArIEdldFF1b3Rl ZElkZW50aWZpZXIoKSArIHd4VCgiXG5cbiIpOworCXNxbCArPSB3eFQoIi0t IERST1AgUE9MSUNZICIpICsgR2V0UXVvdGVkSWRlbnRpZmllcigpICsgd3hU KCIgT04gIikgKyBHZXRUYWJsZSgpLT5HZXRRdW90ZWRGdWxsSWRlbnRpZmll cigpICsgd3hUKCJcblxuIik7CisJc3FsICs9IEdldENyZWF0ZVBvbGljeVNx bChHZXRRdW90ZWRJZGVudGlmaWVyKCksIEdldFRhYmxlKCktPkdldFF1b3Rl ZEZ1bGxJZGVudGlmaWVyKCksIEdldFBvbGljeUNvbW1hbmQoKSwgR2V0UG9s aWN5Um9sZXNTb3J0ZWQoKSwKKwkJR2V0UG9saWN5VXNpbmdFeHByZXNzaW9u KCksIEdldFBvbGljeVdpdGhDaGVja0V4cHJlc3Npb24oKSk7CisKKwlpZiAo IUdldENvbW1lbnQoKS5Jc0VtcHR5KCkpCisJCXNxbCArPSB3eFQoIlxuQ09N TUVOVCBPTiBQT0xJQ1kgIikgKyBHZXRRdW90ZWRJZGVudGlmaWVyKCkgKyB3 eFQoIiBPTiAiKSArIEdldFRhYmxlKCktPkdldFF1b3RlZEZ1bGxJZGVudGlm aWVyKCkKKwkJICAgICAgKyB3eFQoIlxuICBJUyAiKSArIHF0RGJTdHJpbmco R2V0Q29tbWVudCgpKSArIHd4VCgiO1xuIik7CisKKwlyZXR1cm4gc3FsOwor fQorCit3eFN0cmluZyBwZ1BvbGljeTo6R2V0VHJhbnNsYXRlZE1lc3NhZ2Uo aW50IGtpbmRPZk1lc3NhZ2UpIGNvbnN0Cit7CisJd3hTdHJpbmcgbWVzc2Fn ZSA9IHd4RW1wdHlTdHJpbmc7CisKKwlzd2l0Y2ggKGtpbmRPZk1lc3NhZ2Up CisJeworCQljYXNlIFJFVFJJRVZJTkdERVRBSUxTOgorCQkJbWVzc2FnZSA9 IF8oIlJldHJpZXZpbmcgZGV0YWlscyBvbiBwb2xpY3kiKTsKKwkJCW1lc3Nh Z2UgKz0gd3hUKCIgIikgKyBHZXROYW1lKCk7CisJCQlicmVhazsKKwkJY2Fz ZSBSRUZSRVNISU5HREVUQUlMUzoKKwkJCW1lc3NhZ2UgPSBfKCJSZWZyZXNo aW5nIHBvbGljeSIpOworCQkJbWVzc2FnZSArPSB3eFQoIiAiKSArIEdldE5h bWUoKTsKKwkJCWJyZWFrOworCQljYXNlIERST1BFWENMVURJTkdERVBTOgor CQkJbWVzc2FnZSA9IHd4U3RyaW5nOjpGb3JtYXQoXygiQXJlIHlvdSBzdXJl IHlvdSB3aXNoIHRvIGRyb3AgcG9saWN5IFwiJXNcIj8iKSwKKwkJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdldEZ1bGxJZGVudGlmaWVyKCkuY19z dHIoKSk7CisJCQlicmVhazsKKwkJY2FzZSBEUk9QVElUTEU6CisJCQltZXNz YWdlID0gXygiRHJvcCBwb2xpY3k/Iik7CisJCQlicmVhazsKKwkJY2FzZSBQ Uk9QRVJUSUVTUkVQT1JUOgorCQkJbWVzc2FnZSA9IF8oIlBvbGljeSBwcm9w ZXJ0aWVzIHJlcG9ydCIpOworCQkJbWVzc2FnZSArPSB3eFQoIiAtICIpICsg R2V0TmFtZSgpOworCQkJYnJlYWs7CisJCWNhc2UgUFJPUEVSVElFUzoKKwkJ CW1lc3NhZ2UgPSBfKCJQb2xpY3kgcHJvcGVydGllcyIpOworCQkJYnJlYWs7 CisJCWNhc2UgRERMUkVQT1JUOgorCQkJbWVzc2FnZSA9IF8oIlBvbGljeSBE REwgcmVwb3J0Iik7CisJCQltZXNzYWdlICs9IHd4VCgiIC0gIikgKyBHZXRO YW1lKCk7CisJCQlicmVhazsKKwkJY2FzZSBEREw6CisJCQltZXNzYWdlID0g XygiUG9saWN5IERETCIpOworCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIG1l c3NhZ2U7Cit9CisKK3ZvaWQgcGdQb2xpY3k6OlNob3dUcmVlRGV0YWlsKGN0 bFRyZWUgKmJyb3dzZXIsIGZybU1haW4gKmZvcm0sIGN0bExpc3RWaWV3ICpw cm9wZXJ0aWVzLCBjdGxTUUxCb3ggKnNxbFBhbmUpCit7CisJaWYgKHByb3Bl cnRpZXMpCisJeworCQlDcmVhdGVMaXN0Q29sdW1ucyhwcm9wZXJ0aWVzKTsK KworCQlwcm9wZXJ0aWVzLT5BcHBlbmRJdGVtKF8oIk5hbWUiKSwgR2V0TmFt ZSgpKTsKKwkJcHJvcGVydGllcy0+QXBwZW5kSXRlbShfKCJDb21tYW5kIiks IHBnUG9saWN5OjpHZXRQb2xpY3lDb21tYW5kU3RyaW5nKEdldFBvbGljeUNv bW1hbmQoKSkpOworCQlwcm9wZXJ0aWVzLT5BcHBlbmRJdGVtKF8oIlJvbGVz IiksIEdldFBvbGljeVJvbGVzU3RyaW5nKEdldFBvbGljeVJvbGVzU29ydGVk KCkpKTsKKwkJcHJvcGVydGllcy0+QXBwZW5kSXRlbShfKCJVc2luZyBleHBy ZXNzaW9uIiksIGZpcnN0TGluZU9ubHkoR2V0UG9saWN5VXNpbmdFeHByZXNz aW9uKCkpKTsKKwkJcHJvcGVydGllcy0+QXBwZW5kSXRlbShfKCJXaXRoIENo ZWNrIGV4cHJlc3Npb24iKSwgZmlyc3RMaW5lT25seShHZXRQb2xpY3lXaXRo Q2hlY2tFeHByZXNzaW9uKCkpKTsKKwkJcHJvcGVydGllcy0+QXBwZW5kSXRl bShfKCJDb21tZW50IiksIGZpcnN0TGluZU9ubHkoR2V0Q29tbWVudCgpKSk7 CisJfQorfQorCisvLyBjaGFyIGNvbW1hbmQgdmFsdWUgdG8gc3FsIHRleHQs IGUuZy4gJyonIC0+ICdBTEwnLCAncicgLT4gJ1NFTEVDVCcKK3d4U3RyaW5n IHBnUG9saWN5OjpHZXRQb2xpY3lDb21tYW5kU3RyaW5nKGNoYXIgY29tbWFu ZCkKK3sKKwlzd2l0Y2ggKGNvbW1hbmQpCisJeworCWNhc2UgUE9MSUNZX0FM TDogcmV0dXJuIHd4VCgiQUxMIik7CisJY2FzZSBQT0xJQ1lfU0VMRUNUOiBy ZXR1cm4gd3hUKCJTRUxFQ1QiKTsKKwljYXNlIFBPTElDWV9JTlNFUlQ6IHJl dHVybiB3eFQoIklOU0VSVCIpOworCWNhc2UgUE9MSUNZX1VQREFURTogcmV0 dXJuIHd4VCgiVVBEQVRFIik7CisJY2FzZSBQT0xJQ1lfREVMRVRFOiByZXR1 cm4gd3hUKCJERUxFVEUiKTsKKwlkZWZhdWx0OiByZXR1cm4gd3hTdHJpbmco KTsKKwl9Cit9CisKK3d4U3RyaW5nIHBnUG9saWN5OjpHZXRBbHRlclRhYmxl UG9saWN5UGFyYW1zU3FsKGNvbnN0IHd4U3RyaW5nICZ0YWJsZSwgaW50IGVu YWJsZVJscywgaW50IGZvcmNlUmxzKQoreworCXd4U3RyaW5nIHNxbDsKKwor CXd4U3RyaW5nIGVuYWJsZUV4cHI7CisJaWYgKGVuYWJsZVJscyA9PSBST1df U0VDVVJVVFlfRU5BQkxFKQorCQllbmFibGVFeHByID0gd3hUKCJFTkFCTEUg Uk9XIExFVkVMIFNFQ1VSSVRZIik7CisJZWxzZSBpZiAoZW5hYmxlUmxzID09 IFJPV19TRUNVUlVUWV9ESVNBQkxFKQorCQllbmFibGVFeHByID0gd3hUKCJE SVNBQkxFIFJPVyBMRVZFTCBTRUNVUklUWSIpOworCisJd3hTdHJpbmcgZm9y Y2VFeHByOworCWlmIChmb3JjZVJscyA9PSBST1dfU0VDVVJVVFlfRk9SQ0Up CisJCWZvcmNlRXhwciA9IHd4VCgiRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZ Iik7CisJZWxzZSBpZiAoZm9yY2VSbHMgPT0gUk9XX1NFQ1VSVVRZX05PRk9S Q0UpCisJCWZvcmNlRXhwciA9IHd4VCgiTk8gRk9SQ0UgUk9XIExFVkVMIFNF Q1VSSVRZIik7CisKKwlpZiAoIWVuYWJsZUV4cHIuSXNOdWxsKCkgfHwgIWZv cmNlRXhwci5Jc051bGwoKSkKKwl7CisJCXNxbCArPSB3eFQoIkFMVEVSIFRB QkxFICIpICsgdGFibGUgKyB3eFQoIiAiKTsKKwkJaWYgKCFlbmFibGVFeHBy LklzTnVsbCgpKQorCQkJc3FsICs9IGVuYWJsZUV4cHI7CisJCWlmICghZm9y Y2VFeHByLklzTnVsbCgpKQorCQl7CisJCQlpZiAoIWVuYWJsZUV4cHIuSXNO dWxsKCkpCisJCQkJc3FsICs9IHd4VCgiLCAiKTsKKwkJCXNxbCArPSBmb3Jj ZUV4cHI7CisJCX0KKwkJc3FsICs9IHd4VCgiOyIpOworCX0KKworCXJldHVy biBzcWw7Cit9CisKKy8vIHdyYXAgZXhwcmVzc2lvbiBpbiBwYXJhbnRoZXNl cywgaWYgaXQgaXMgbm90IGFscmVhZHkgd3JhcHBlZAord3hTdHJpbmcmIHBn UG9saWN5OjpXcmFwUGFyZW50aGVzZXMod3hTdHJpbmcgJmV4cHIpCit7CisJ aWYgKGV4cHIuSXNFbXB0eSgpKQorCQlyZXR1cm4gZXhwcjsKKworCWlmIChl eHByLkdldENoYXIoMCkgIT0gJygnIHx8IGV4cHIuR2V0Q2hhcihleHByLnNp emUoKSAtIDEpICE9ICcpJykKKwkJZXhwciA9IHd4VCgiKCIpICsgZXhwciAr IHd4VCgiKSIpOworCisJcmV0dXJuIGV4cHI7Cit9CisKKy8vIGFycmF5IG9m IHJvbGVzIHRvIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcKK3d4U3RyaW5nIHBn UG9saWN5OjpHZXRQb2xpY3lSb2xlc1N0cmluZyhjb25zdCB3eEFycmF5U3Ry aW5nICZyb2xlcykKK3sKKwl3eFN0cmluZyByZXN1bHQ7CisJaW50IG51bVJv bGVzID0gcm9sZXMuc2l6ZSgpOworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVt Um9sZXM7IGkrKykKKwl7CisJCXJlc3VsdCArPSByb2xlc1tpXSArIHd4VCgi LCAiKTsKKwl9CisJcmVzdWx0LlJlbW92ZUxhc3QoMik7CisKKwlyZXR1cm4g cmVzdWx0OworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor CitwZ1BvbGljeUNvbGxlY3Rpb246OnBnUG9saWN5Q29sbGVjdGlvbihwZ2FG YWN0b3J5ICpmYWN0b3J5LCBwZ1RhYmxlICp0YmwpCisJOiBwZ1RhYmxlT2Jq Q29sbGVjdGlvbihmYWN0b3J5LCB0YmwpCit7Cit9CisKKword3hTdHJpbmcg cGdQb2xpY3lDb2xsZWN0aW9uOjpHZXRUcmFuc2xhdGVkTWVzc2FnZShpbnQg a2luZE9mTWVzc2FnZSkgY29uc3QKK3sKKwl3eFN0cmluZyBtZXNzYWdlID0g d3hFbXB0eVN0cmluZzsKKworCXN3aXRjaCAoa2luZE9mTWVzc2FnZSkKKwl7 CisJCWNhc2UgUkVUUklFVklOR0RFVEFJTFM6CisJCQltZXNzYWdlID0gXygi UmV0cmlldmluZyBkZXRhaWxzIG9uIHBvbGljaWVzIik7CisJCQlicmVhazsK KwkJY2FzZSBSRUZSRVNISU5HREVUQUlMUzoKKwkJCW1lc3NhZ2UgPSBfKCJS ZWZyZXNoaW5nIHBvbGljaWVzIik7CisJCQlicmVhazsKKwkJY2FzZSBPQkpF Q1RTTElTVFJFUE9SVDoKKwkJCW1lc3NhZ2UgPSBfKCJQb2xpY2llcyBsaXN0 IHJlcG9ydCIpOworCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIG1lc3NhZ2U7 Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2RsZ1By b3BlcnR5KiBwZ1BvbGljeUZhY3Rvcnk6OkNyZWF0ZURpYWxvZyhmcm1NYWlu ICpmcmFtZSwgcGdPYmplY3QgKm5vZGUsIHBnT2JqZWN0ICpwYXJlbnQpCit7 CisJcmV0dXJuIG5ldyBkbGdQb2xpY3kodGhpcywgZnJhbWUsIChwZ1BvbGlj eSopbm9kZSwgKHBnVGFibGUqKXBhcmVudCk7Cit9CisKK3BnT2JqZWN0KiBw Z1BvbGljeUZhY3Rvcnk6OkNyZWF0ZU9iamVjdHMocGdDb2xsZWN0aW9uICpj b2xsZWN0aW9uLCBjdGxUcmVlICpicm93c2VyLCBjb25zdCB3eFN0cmluZyAm cmVzdHJpY3Rpb24pCit7CisJcGdQb2xpY3kgKnBvbGljeSA9IE5VTEw7CisJ cGdTZXQgKnBvbGljaWVzID0gTlVMTDsKKwlwZ0RhdGFiYXNlICpkYiA9IGNv bGxlY3Rpb24tPkdldERhdGFiYXNlKCk7CisJd3hTdHJpbmcgbmFtZSwgY21k LCByb2xlT2lkcywgcm9sZU9pZCwgcm9sZU5hbWU7CisJd3hTdHJpbmdUb2tl bml6ZXIgcm9sZVRva2VuczsKKworCXd4U3RyaW5nIHF1ZXJ5ID0gCisJCQkg ICB3eFQoIlNFTEVDVFxuIikKKwkJCSAgIHd4VCgiCXAub2lkLCBwLnBvbG5h bWUsIHAucG9scmVsaWQsIHAucG9sY21kLCBwLnBvbHJvbGVzLFxuIikKKwkJ CSAgIHd4VCgiCXBnX2dldF9leHByKHAucG9scXVhbCwgcC5wb2xyZWxpZCIp ICsgZGItPkdldFByZXR0eU9wdGlvbigpICsgd3hUKCIpIEFTIGV4cHJ1c2lu ZyxcbiIpCisJCQkgICB3eFQoIglwZ19nZXRfZXhwcihwLnBvbHdpdGhjaGVj aywgcC5wb2xyZWxpZCIpICsgZGItPkdldFByZXR0eU9wdGlvbigpICsgd3hU KCIpIEFTIGV4cHJ3aXRoY2hlY2ssXG4iKQorCQkJICAgd3hUKCIJZGVzLmRl c2NyaXB0aW9uXG4iKQorCQkJICAgd3hUKCJGUk9NXG4iKQorCQkJICAgd3hU KCIJcGdfcG9saWN5IHBcbiIpCisJICAgICAgICAgICB3eFQoIglMRUZUIE9V VEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkID0g cC5vaWQgQU5EIGRlcy5jbGFzc29pZCA9ICdwZ19wb2xpY3knOjpyZWdjbGFz cylcbiIpCisJCQkgICB3eFQoIldIRVJFXG4iKQorCQkJICAgd3hUKCIJcC5w b2xyZWxpZCA9ICIpICsgY29sbGVjdGlvbi0+R2V0T2lkU3RyKCkgKyB3eFQo IiAiKSArIHJlc3RyaWN0aW9uICsgd3hUKCJcbiIpCisJCQkgICB3eFQoIk9S REVSIEJZIHAucG9sbmFtZVxuIik7CisKKwlwb2xpY2llcyA9IGRiLT5FeGVj dXRlU2V0KHF1ZXJ5KTsKKwlpZiAocG9saWNpZXMpCisJeworCQl3aGlsZSAo IXBvbGljaWVzLT5Fb2YoKSkKKwkJeworCQkJbmFtZSA9IHBvbGljaWVzLT5H ZXRWYWwod3hUKCJwb2xuYW1lIikpOworCQkJcG9saWN5ID0gbmV3IHBnUG9s aWN5KGNvbGxlY3Rpb24tPkdldFRhYmxlKCksIG5hbWUpOworCisJCQlwb2xp Y3ktPmlTZXRPaWQocG9saWNpZXMtPkdldE9pZCh3eFQoIm9pZCIpKSk7CisJ CQlwb2xpY3ktPmlTZXRDb21tZW50KHBvbGljaWVzLT5HZXRWYWwod3hUKCJk ZXNjcmlwdGlvbiIpKSk7CisJCQljbWQgPSBwb2xpY2llcy0+R2V0VmFsKHd4 VCgicG9sY21kIikpOworCQkJaWYgKCFjbWQuSXNFbXB0eSgpKQorCQkJewor CQkJCXBvbGljeS0+aVNldFBvbGljeUNvbW1hbmQoY21kWzBdKTsKKwkJCX0K KwkJCQorCQkJcG9saWN5LT5pU2V0UG9saWN5VXNpbmdFeHByZXNzaW9uKHBv bGljaWVzLT5HZXRWYWwod3hUKCJleHBydXNpbmciKSkpOworCQkJcG9saWN5 LT5pU2V0UG9saWN5V2l0aENoZWNrRXhwcmVzc2lvbihwb2xpY2llcy0+R2V0 VmFsKHd4VCgiZXhwcndpdGhjaGVjayIpKSk7CisKKwkJCXd4QXJyYXlTdHJp bmcgcm9sZU5hbWVzOworCQkJcm9sZU9pZHMgPSBwb2xpY2llcy0+R2V0VmFs KHd4VCgicG9scm9sZXMiKSk7CisJCQlyb2xlT2lkcyA9IHJvbGVPaWRzLk1p ZCgxLCByb2xlT2lkcy5zaXplKCkgLSAyKTsKKwkJCXJvbGVUb2tlbnMuU2V0 U3RyaW5nKHJvbGVPaWRzLCB3eFQoIiwiKSk7CisJCQl3aGlsZSAocm9sZVRv a2Vucy5IYXNNb3JlVG9rZW5zKCkpCisJCQl7CisJCQkJLy8gZ2V0IHJvbGUg bmFtZXMgZnJvbSBjYXRhbG9nCisJCQkJcm9sZU9pZCA9IHJvbGVUb2tlbnMu R2V0TmV4dFRva2VuKCk7CisJCQkJaWYgKHJvbGVPaWQgIT0gd3hUKCIwIikp IC8vIFBVQkxJQworCQkJCXsKKwkJCQkJcm9sZU5hbWUgPSBkYi0+RXhlY3V0 ZVNjYWxhcih3eFQoIlNFTEVDVCByb2xuYW1lIEZST00gcGdfcm9sZXMgV0hF UkUgb2lkID0iKSArIHJvbGVPaWQpOworCQkJCQlyb2xlTmFtZXMuQWRkKHJv bGVOYW1lKTsKKwkJCQl9CisJCQl9CisJCQlwb2xpY3ktPmlTZXRQb2xpY3lS b2xlcyhyb2xlTmFtZXMpOworCisJCQlpZiAoYnJvd3NlcikKKwkJCXsKKwkJ CQlicm93c2VyLT5BcHBlbmRPYmplY3QoY29sbGVjdGlvbiwgcG9saWN5KTsK KwkJCQlwb2xpY2llcy0+TW92ZU5leHQoKTsKKwkJCX0KKwkJCWVsc2UKKwkJ CQlicmVhazsKKwkJfQorCisJCWRlbGV0ZSBwb2xpY2llczsKKwl9CisKKwly ZXR1cm4gcG9saWN5OworfQorCisjaW5jbHVkZSAiaW1hZ2VzL3BvbGljeS5w bmdjIgorI2luY2x1ZGUgImltYWdlcy9wb2xpY3ktc20ucG5nYyIKKyNpbmNs dWRlICJpbWFnZXMvcG9saWNpZXMucG5nYyIKKworcGdQb2xpY3lGYWN0b3J5 OjpwZ1BvbGljeUZhY3RvcnkoKQorCTogcGdUYWJsZU9iakZhY3RvcnkoX18o IlBvbGljeSIpLCBfXygiTmV3IFBvbGljeS4uLiIpLCBfXygiQ3JlYXRlIGEg bmV3IFBvbGljeS4iKSwgcG9saWN5X3BuZ19pbWcsIHBvbGljeV9zbV9wbmdf aW1nKQoreworCW1ldGFUeXBlID0gUEdNX1BPTElDWTsKK30KKworcGdDb2xs ZWN0aW9uKiBwZ1BvbGljeUZhY3Rvcnk6OkNyZWF0ZUNvbGxlY3Rpb24ocGdP YmplY3QgKm9iaikKK3sKKwlyZXR1cm4gbmV3IHBnUG9saWN5Q29sbGVjdGlv bihHZXRDb2xsZWN0aW9uRmFjdG9yeSgpLCAocGdUYWJsZSAqKW9iaik7Cit9 CisKK3BnUG9saWN5RmFjdG9yeSBwb2xpY3lGYWN0b3J5Oworc3RhdGljIHBn YUNvbGxlY3Rpb25GYWN0b3J5IGNmKCZwb2xpY3lGYWN0b3J5LCBfXygiUG9s aWNpZXMiKSwgcG9saWNpZXNfcG5nX2ltZyk7ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGdhZG1pbi9zY2hlbWEvcGdUYWJs ZS5jcHAgYi9wZ2FkbWluL3NjaGVtYS9wZ1RhYmxlLmNwcAppbmRleCBmZGZl YTQwLi43OTI4NzNkIDEwMDY0NAotLS0gYS9wZ2FkbWluL3NjaGVtYS9wZ1Rh YmxlLmNwcAorKysgYi9wZ2FkbWluL3NjaGVtYS9wZ1RhYmxlLmNwcApAQCAt MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInNjaGVtYS9wZ1RyaWdnZXIuaCIK ICNpbmNsdWRlICJzY2hlbWEvcGdDb25zdHJhaW50cy5oIgogI2luY2x1ZGUg InNjaGVtYS9ncFBhcnRpdGlvbi5oIgorI2luY2x1ZGUgInNjaGVtYS9wZ1Bv bGljeS5oIgogCiAKIC8vIEFwcCBoZWFkZXJzCkBAIC02NSw2ICs2Niw4IEBA IHZvaWQgcGdUYWJsZTo6SW5pdCgpCiAJaXNSZXBsaWNhdGVkID0gZmFsc2U7 CiAJc2hvd0V4dGVuZGVkU3RhdGlzdGljcyA9IGZhbHNlOwogCWRpc3RyaWJ1 dGlvbklzUmFuZG9tID0gZmFsc2U7CisJcm93U2VjdXJpdHlFbmFibGVkID0g ZmFsc2U7CisJZm9yY2VSb3dTZWN1cml0eSA9IGZhbHNlOwogCiAJaW5oZXJp dGVkVGFibGVDb3VudCA9IDA7CiAJdHJpZ2dlckNvdW50ID0gMDsKQEAgLTE3 OSw2ICsxODIsOCBAQCB3eE1lbnUgKnBnVGFibGU6OkdldE5ld01lbnUoKQog CQlpbmRleEZhY3RvcnkuQXBwZW5kTWVudShtZW51KTsKIAkJcnVsZUZhY3Rv cnkuQXBwZW5kTWVudShtZW51KTsKIAkJdHJpZ2dlckZhY3RvcnkuQXBwZW5k TWVudShtZW51KTsKKwkJaWYgKEdldENvbm5lY3Rpb24oKSAhPSAwICYmIEdl dENvbm5lY3Rpb24oKS0+QmFja2VuZE1pbmltdW1WZXJzaW9uKDksIDUpKQor CQkJcG9saWN5RmFjdG9yeS5BcHBlbmRNZW51KG1lbnUpOwogCiAJCS8qCiAJ CSAqIFRFTVBPUkFSWTogIERpc2FibGUgYWRkaW5nIG5ldyBwYXJ0aXRpb25z IHVudGlsIHRoYXQgY29kZSBpcyB3b3JraW5nIHJpZ2h0LgpAQCAtNjgyLDYg KzY4NywxNiBAQCB3eFN0cmluZyBwZ1RhYmxlOjpHZXRTcWwoY3RsVHJlZSAq YnJvd3NlcikKIAogCQlzcWwgKz0gR2V0Q29tbWVudFNxbCgpOwogCisJCS8v IHJvdyBsZXZlbCBzZWN1cml0eSBvcHRpb25zCisJCWlmIChHZXRDb25uZWN0 aW9uKCktPkJhY2tlbmRNaW5pbXVtVmVyc2lvbig5LCA1KSkKKwkJeworCQkJ aW50IGVuYWJsZVJscyA9IEdldFJvd0xldmVsU2VjdXJpdHlFbmFibGVkKCkg PyBST1dfU0VDVVJVVFlfRU5BQkxFIDogUk9XX1NFQ1VSVVRZX1NLSVA7CisJ CQlpbnQgZm9yY2VSbHMgPSBHZXRGb3JjZVJvd0xldmVsU2VjdXJpdHkoKSA/ IFJPV19TRUNVUlVUWV9GT1JDRSA6IFJPV19TRUNVUlVUWV9TS0lQOworCQkJ d3hTdHJpbmcgcmxzU3FsID0gcGdQb2xpY3k6OkdldEFsdGVyVGFibGVQb2xp Y3lQYXJhbXNTcWwoR2V0UXVvdGVkRnVsbElkZW50aWZpZXIoKSwgZW5hYmxl UmxzLCBmb3JjZVJscyk7CisJCQlpZiAoIXJsc1NxbC5Jc0VtcHR5KCkpCisJ CQkJc3FsICs9IHd4VCgiXG4iKSArIHJsc1NxbCArIHd4VCgiXG5cbiIpOwor CQl9CisKIAkJaWYgKEdldENvbm5lY3Rpb24oKS0+QmFja2VuZE1pbmltdW1W ZXJzaW9uKDksIDEpKQogCQkJc3FsICs9IEdldFNlcUxhYmVsc1NxbCgpOwog CkBAIC03MDEsNiArNzE2LDEwIEBAIHd4U3RyaW5nIHBnVGFibGU6OkdldFNx bChjdGxUcmVlICpicm93c2VyKQogCQlBcHBlbmRTdHVmZihzcWwsIGJyb3dz ZXIsIHJ1bGVGYWN0b3J5KTsKIAkJQXBwZW5kU3R1ZmYoc3FsLCBicm93c2Vy LCB0cmlnZ2VyRmFjdG9yeSk7CiAKKwkJLy8gcm93IHNlY3VyaXR5IHBvbGlj aWVzIGZvciB0YWJsZQorCQlpZiAoR2V0Q29ubmVjdGlvbigpLT5CYWNrZW5k TWluaW11bVZlcnNpb24oOSwgNSkpCisJCQlBcHBlbmRTdHVmZihzcWwsIGJy b3dzZXIsIHBvbGljeUZhY3RvcnkpOworCiAJCS8qCiAJCSAqIERpc2FibGUg YWRkaW5nIHBhcnRpdGlvbnMgdW50aWwgdGhhdCBjb2RlIHdvcmtzLgogCQkg KgpAQCAtOTI5LDYgKzk0OCw5IEBAIHZvaWQgcGdUYWJsZTo6U2hvd1RyZWVE ZXRhaWwoY3RsVHJlZSAqYnJvd3NlciwgZnJtTWFpbiAqZm9ybSwgY3RsTGlz dFZpZXcgKnByb3BlCiAJCWJyb3dzZXItPkFwcGVuZENvbGxlY3Rpb24odGhp cywgaW5kZXhGYWN0b3J5KTsKIAkJYnJvd3Nlci0+QXBwZW5kQ29sbGVjdGlv bih0aGlzLCBydWxlRmFjdG9yeSk7CiAJCWJyb3dzZXItPkFwcGVuZENvbGxl Y3Rpb24odGhpcywgdHJpZ2dlckZhY3RvcnkpOworCQkvLyByb3cgbGV2ZWwg c2VjdXJpdHkgcG9saWNpZXMKKwkJaWYgKEdldENvbm5lY3Rpb24oKSAhPSAw ICYmIEdldENvbm5lY3Rpb24oKS0+QmFja2VuZE1pbmltdW1WZXJzaW9uKDks IDUpKQorCQkJYnJvd3Nlci0+QXBwZW5kQ29sbGVjdGlvbih0aGlzLCBwb2xp Y3lGYWN0b3J5KTsKIAogCQlpZiAoR2V0Q29ubmVjdGlvbigpICE9IDAgJiYg R2V0Q29ubmVjdGlvbigpLT5HZXRJc0dyZWVucGx1bSgpICYmIEdldElzUGFy dGl0aW9uZWQoKSkKIAkJCWJyb3dzZXItPkFwcGVuZENvbGxlY3Rpb24odGhp cywgcGFydGl0aW9uRmFjdG9yeSk7CkBAIC0xMDgzLDYgKzExMDUsMTMgQEAg dm9pZCBwZ1RhYmxlOjpTaG93VHJlZURldGFpbChjdGxUcmVlICpicm93c2Vy LCBmcm1NYWluICpmb3JtLCBjdGxMaXN0VmlldyAqcHJvcGUKIAkJCWlmICgh R2V0VG9hc3RBdXRvVmFjdXVtRnJlZXplVGFibGVBZ2UoKS5Jc0VtcHR5KCkp CiAJCQkJcHJvcGVydGllcy0+QXBwZW5kSXRlbShfKCJUb2FzdCBhdXRvLXZh Y3V1bSBGUkVFWkUgdGFibGUgYWdlIiksIEdldFRvYXN0QXV0b1ZhY3V1bUZy ZWV6ZVRhYmxlQWdlKCkpOwogCQl9CisKKwkJLy8gcm93IGxldmVsIHNlY3Vy aXR5IG9wdGlvbnMKKwkJaWYgKEdldENvbm5lY3Rpb24oKS0+QmFja2VuZE1p bmltdW1WZXJzaW9uKDksIDUpKQorCQl7CisJCQlwcm9wZXJ0aWVzLT5BcHBl bmRJdGVtKF8oIlJMUyBlbmFibGVkPyIpLCBHZXRSb3dMZXZlbFNlY3VyaXR5 RW5hYmxlZCgpID8gXygiWWVzIikgOiBfKCJObyIpKTsKKwkJCXByb3BlcnRp ZXMtPkFwcGVuZEl0ZW0oXygiUkxTIGZvcmNlZD8iKSwgR2V0Rm9yY2VSb3dM ZXZlbFNlY3VyaXR5KCkgPyBfKCJZZXMiKSA6IF8oIk5vIikpOworCQl9CiAJ CXByb3BlcnRpZXMtPkFwcGVuZEl0ZW0oXygiQ29tbWVudCIpLCBmaXJzdExp bmVPbmx5KEdldENvbW1lbnQoKSkpOwogCiAJCWlmICghR2V0TGFiZWxzKCku SXNFbXB0eSgpKQpAQCAtMTQ1MCw2ICsxNDc5LDEyIEBAIHBnT2JqZWN0ICpw Z1RhYmxlRmFjdG9yeTo6Q3JlYXRlT2JqZWN0cyhwZ0NvbGxlY3Rpb24gKmNv bGxlY3Rpb24sIGN0bFRyZWUgKmJyb3dzCiAJCQkgICAgICAgICB3eFQoIiAg ICAgICAgICAgICAgICAgICAgIFdIRVJFIHRncmVsaWQ9cmVsLm9pZCBBTkQg dGdpc2NvbnN0cmFpbnQgPSBGQUxTRSkgQVMgdHJpZ2dlcmNvdW50XG4iKTsK IAkJfQogCisJCS8vIHJvdyBsZXZlbCBzZWN1cml0eSBvcHRpb25zCisJCWlm IChjb2xsZWN0aW9uLT5HZXREYXRhYmFzZSgpLT5CYWNrZW5kTWluaW11bVZl cnNpb24oOSwgNSkpCisJCXsKKwkJCXF1ZXJ5ICs9IHd4VCgiLCByZWwucmVs cm93c2VjdXJpdHkgXG4iKTsKKwkJCXF1ZXJ5ICs9IHd4VCgiLCByZWwucmVs Zm9yY2Vyb3dzZWN1cml0eSBcbiIpOworCQl9CiAJCWlmIChjb2xsZWN0aW9u LT5HZXRDb25uZWN0aW9uKCktPkJhY2tlbmRNaW5pbXVtVmVyc2lvbig5LCAx KSkKIAkJCXF1ZXJ5ICs9IHd4VCgiLCByZWwucmVscGVyc2lzdGVuY2UgXG4i KTsKIAkJaWYgKGNvbGxlY3Rpb24tPkdldENvbm5lY3Rpb24oKS0+QmFja2Vu ZE1pbmltdW1WZXJzaW9uKDgsIDIpKQpAQCAtMTU3NCw2ICsxNjA5LDE3IEBA IHBnT2JqZWN0ICpwZ1RhYmxlRmFjdG9yeTo6Q3JlYXRlT2JqZWN0cyhwZ0Nv bGxlY3Rpb24gKmNvbGxlY3Rpb24sIGN0bFRyZWUgKmJyb3dzCiAJCQkJdGFi bGUtPmlTZXRPZlR5cGUod3hUKCIiKSk7CiAJCQl9CiAJCQl0YWJsZS0+aVNl dENvbW1lbnQodGFibGVzLT5HZXRWYWwod3hUKCJkZXNjcmlwdGlvbiIpKSk7 CisJCQkvLyByb3cgbGV2ZWwgc2VjdXJpdHkgb3B0aW9ucworCQkJaWYgKGNv bGxlY3Rpb24tPkdldERhdGFiYXNlKCktPkJhY2tlbmRNaW5pbXVtVmVyc2lv big5LCA1KSkKKwkJCXsKKwkJCQl0YWJsZS0+aVNldFJvd0xldmVsU2VjdXJp dHlFbmFibGVkKFN0clRvQm9vbCh0YWJsZXMtPkdldFZhbCh3eFQoInJlbHJv d3NlY3VyaXR5IikpKSk7CisJCQkJdGFibGUtPmlTZXRGb3JjZVJvd0xldmVs U2VjdXJpdHkoU3RyVG9Cb29sKHRhYmxlcy0+R2V0VmFsKHd4VCgicmVsZm9y Y2Vyb3dzZWN1cml0eSIpKSkpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJ CXRhYmxlLT5pU2V0Um93TGV2ZWxTZWN1cml0eUVuYWJsZWQoZmFsc2UpOwor CQkJCXRhYmxlLT5pU2V0Rm9yY2VSb3dMZXZlbFNlY3VyaXR5KGZhbHNlKTsK KwkJCX0KIAkJCWlmIChjb2xsZWN0aW9uLT5HZXRDb25uZWN0aW9uKCktPkJh Y2tlbmRNaW5pbXVtVmVyc2lvbig5LCAxKSkKIAkJCQl0YWJsZS0+aVNldFVu bG9nZ2VkKHRhYmxlcy0+R2V0VmFsKHd4VCgicmVscGVyc2lzdGVuY2UiKSkg PT0gd3hUKCJ1IikpOwogCQkJZWxzZQpkaWZmIC0tZ2l0IGEvcGdhZG1pbi91 aS9kbGdQb2xpY3kueHJjIGIvcGdhZG1pbi91aS9kbGdQb2xpY3kueHJjCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YTYxM2IKLS0t IC9kZXYvbnVsbAorKysgYi9wZ2FkbWluL3VpL2RsZ1BvbGljeS54cmMKQEAg LTAsMCArMSwyNzggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9 IklTTy04ODU5LTEiPz4KKzxyZXNvdXJjZT4KKyAgPG9iamVjdCBjbGFzcz0i d3hEaWFsb2ciIG5hbWU9ImRsZ1BvbGljeSI+CisgICAgPHRpdGxlPjwvdGl0 bGU+CisgICAgPHNpemU+MzAwLDI2NWQ8L3NpemU+CisgICAgPHN0eWxlPnd4 REVGQVVMVF9ESUFMT0dfU1RZTEV8d3hDQVBUSU9OfHd4U1lTVEVNX01FTlV8 d3hSRVNJWkVfQk9SREVSPC9zdHlsZT4KKyAgICA8b2JqZWN0IGNsYXNzPSJ3 eEZsZXhHcmlkU2l6ZXIiPgorICAgICAgPGNvbHM+MTwvY29scz4KKyAgICAg IDxncm93YWJsZXJvd3M+MDwvZ3Jvd2FibGVyb3dzPgorICAgICAgPGdyb3dh YmxlY29scz4wPC9ncm93YWJsZWNvbHM+CisgICAgICA8b2JqZWN0IGNsYXNz PSJzaXplcml0ZW0iPgorICAgICAgICA8b2JqZWN0IGNsYXNzPSJ3eE5vdGVi b29rIiBuYW1lPSJuYk5vdGVib29rIj4KKyAgICAgICAgICA8c2l6ZT4yOTYs MjQwZDwvc2l6ZT4KKyAgICAgICAgICA8c2VsZWN0ZWQ+MDwvc2VsZWN0ZWQ+ CisgICAgICAgICAgPG9iamVjdCBjbGFzcz0ibm90ZWJvb2twYWdlIj4KKyAg ICAgICAgICAgIDxsYWJlbD5Qcm9wZXJ0aWVzPC9sYWJlbD4KKyAgICAgICAg ICAgIDxvYmplY3QgY2xhc3M9Ind4UGFuZWwiIG5hbWU9InBubFByb3BlcnRp ZXMiPgorICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJ3eEZsZXhHcmlk U2l6ZXIiPgorICAgICAgICAgICAgICAgIDxjb2xzPjI8L2NvbHM+CisgICAg ICAgICAgICAgICAgPHZnYXA+NTwvdmdhcD4KKyAgICAgICAgICAgICAgICA8 aGdhcD41PC9oZ2FwPgorICAgICAgICAgICAgICAgIDxncm93YWJsZXJvd3M+ MjwvZ3Jvd2FibGVyb3dzPgorICAgICAgICAgICAgICAgIDxncm93YWJsZWNv bHM+MTwvZ3Jvd2FibGVjb2xzPgorICAgICAgICAgICAgICAgIDxvYmplY3Qg Y2xhc3M9InNpemVyaXRlbSI+CisgICAgICAgICAgICAgICAgICA8b2JqZWN0 IGNsYXNzPSJ3eFN0YXRpY1RleHQiIG5hbWU9InN0TmFtZSI+CisgICAgICAg ICAgICAgICAgICAgIDxsYWJlbD5OYW1lPC9sYWJlbD4KKyAgICAgICAgICAg ICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgPGZsYWc+d3hB TElHTl9DRU5UUkVfVkVSVElDQUx8d3hUT1B8d3hMRUZUfHd4UklHSFQ8L2Zs YWc+CisgICAgICAgICAgICAgICAgICA8Ym9yZGVyPjQ8L2JvcmRlcj4KKyAg ICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICA8b2Jq ZWN0IGNsYXNzPSJzaXplcml0ZW0iPgorICAgICAgICAgICAgICAgICAgPG9i amVjdCBjbGFzcz0id3hUZXh0Q3RybCIgbmFtZT0idHh0TmFtZSI+CisgICAg ICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgIDxm bGFnPnd4RVhQQU5EfHd4QUxJR05fQ0VOVEVSX1ZFUlRJQ0FMfHd4VE9QfHd4 TEVGVHx3eFJJR0hUPC9mbGFnPgorICAgICAgICAgICAgICAgICAgPGJvcmRl cj40PC9ib3JkZXI+CisgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAg ICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0ic2l6ZXJpdGVtIj4KKyAgICAg ICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ind4U3RhdGljVGV4dCIgbmFt ZT0ic3RPSUQiPgorICAgICAgICAgICAgICAgICAgICA8bGFiZWw+T0lEPC9s YWJlbD4KKyAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAg ICAgICAgICAgPGZsYWc+d3hBTElHTl9DRU5UUkVfVkVSVElDQUx8d3hUT1B8 d3hMRUZUfHd4UklHSFQ8L2ZsYWc+CisgICAgICAgICAgICAgICAgICA8Ym9y ZGVyPjQ8L2JvcmRlcj4KKyAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAg ICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJzaXplcml0ZW0iPgorICAg ICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0id3hUZXh0Q3RybCIgbmFt ZT0idHh0T0lEIj4KKyAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAg ICAgICAgICAgICAgICAgPGZsYWc+d3hFWFBBTkR8d3hBTElHTl9DRU5URVJf VkVSVElDQUx8d3hUT1B8d3hMRUZUfHd4UklHSFQ8L2ZsYWc+CisgICAgICAg ICAgICAgICAgICA8Ym9yZGVyPjQ8L2JvcmRlcj4KKyAgICAgICAgICAgICAg ICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJz aXplcml0ZW0iPgorICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0i d3hTdGF0aWNUZXh0IiBuYW1lPSJzdENvbW1lbnQiPgorICAgICAgICAgICAg ICAgICAgICA8bGFiZWw+Q29tbWVudDwvbGFiZWw+CisgICAgICAgICAgICAg ICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgIDxmbGFnPnd4QUxJ R05fQ0VOVFJFX1ZFUlRJQ0FMfHd4VE9QfHd4TEVGVHx3eFJJR0hUPC9mbGFn PgorICAgICAgICAgICAgICAgICAgPGJvcmRlcj40PC9ib3JkZXI+CisgICAg ICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgPG9iamVj dCBjbGFzcz0ic2l6ZXJpdGVtIj4KKyAgICAgICAgICAgICAgICAgIDxvYmpl Y3QgY2xhc3M9Ind4VGV4dEN0cmwiIG5hbWU9InR4dENvbW1lbnQiPgorICAg ICAgICAgICAgICAgICAgICA8c3R5bGU+d3hURV9NVUxUSUxJTkU8L3N0eWxl PgorICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAg ICAgICA8ZmxhZz53eEVYUEFORHx3eEFMSUdOX0NFTlRFUl9WRVJUSUNBTHx3 eEFMTDwvZmxhZz4KKyAgICAgICAgICAgICAgICAgIDxib3JkZXI+NDwvYm9y ZGVyPgorICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAg ICAgIDxvYmplY3QgY2xhc3M9InNpemVyaXRlbSI+CisgICAgICAgICAgICAg ICAgICA8b2JqZWN0IGNsYXNzPSJ3eFN0YXRpY1RleHQiIG5hbWU9InN0Q2x1 c3RlclNldCI+CisgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Vc2UgU2xv bnk8L2xhYmVsPgorICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAg ICAgICAgICAgICAgICA8ZmxhZz53eEFMSUdOX0NFTlRSRV9WRVJUSUNBTHx3 eEFMTDwvZmxhZz4KKyAgICAgICAgICAgICAgICAgIDxib3JkZXI+NDwvYm9y ZGVyPgorICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAg ICAgIDxvYmplY3QgY2xhc3M9InNpemVyaXRlbSI+CisgICAgICAgICAgICAg ICAgICA8b2JqZWN0IGNsYXNzPSJ3eENvbWJvQm94IiBuYW1lPSJjYkNsdXN0 ZXJTZXQiPgorICAgICAgICAgICAgICAgICAgICA8Y29udGVudC8+CisgICAg ICAgICAgICAgICAgICAgIDxzdHlsZT53eENCX1JFQURPTkxZfHd4Q0JfRFJP UERPV048L3N0eWxlPgorICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Cisg ICAgICAgICAgICAgICAgICA8ZmxhZz53eEVYUEFORHx3eEFMSUdOX0NFTlRS RV9WRVJUSUNBTHx3eEFMTDwvZmxhZz4KKyAgICAgICAgICAgICAgICAgIDxi b3JkZXI+NDwvYm9yZGVyPgorICAgICAgICAgICAgICAgIDwvb2JqZWN0Pgor ICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgIDwvb2JqZWN0 PgorICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgIDxvYmplY3QgY2xh c3M9Im5vdGVib29rcGFnZSI+CisgICAgICAgICAgICA8bGFiZWw+RGVmaW5p dGlvbjwvbGFiZWw+CisgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJ3eFBh bmVsIiBuYW1lPSJwbmxEZWZpbml0aW9uIj4KKyAgICAgICAgICAgICAgPG9i amVjdCBjbGFzcz0id3hGbGV4R3JpZFNpemVyIj4KKyAgICAgICAgICAgICAg ICA8Y29scz4yPC9jb2xzPgorICAgICAgICAgICAgICAgIDx2Z2FwPjU8L3Zn YXA+CisgICAgICAgICAgICAgICAgPGhnYXA+NTwvaGdhcD4KKyAgICAgICAg ICAgICAgICA8Z3Jvd2FibGVyb3dzPjE8L2dyb3dhYmxlcm93cz4KKyAgICAg ICAgICAgICAgICA8Z3Jvd2FibGVjb2xzPjE8L2dyb3dhYmxlY29scz4KKyAg ICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJzaXplcml0ZW0iPgorICAg ICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0id3hTdGF0aWNUZXh0IiBu YW1lPSJzdENvbW1hbmQiPgorICAgICAgICAgICAgICAgICAgICA8bGFiZWw+ Q29tbWFuZDwvbGFiZWw+CisgICAgICAgICAgICAgICAgICA8L29iamVjdD4K KyAgICAgICAgICAgICAgICAgIDxmbGFnPnd4QUxJR05fQ0VOVFJFX1ZFUlRJ Q0FMfHd4VE9QfHd4TEVGVHx3eFJJR0hUPC9mbGFnPgorICAgICAgICAgICAg ICAgICAgPGJvcmRlcj40PC9ib3JkZXI+CisgICAgICAgICAgICAgICAgPC9v YmplY3Q+CisgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0ic2l6ZXJp dGVtIj4KKyAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ind4UmFk aW9Cb3giIG5hbWU9InJieENvbW1hbmQiPgorICAgICAgICAgICAgICAgICAg ICA8bGFiZWw+PC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgPGNvbnRl bnQ+CisgICAgICAgICAgICAgICAgICAgICAgPGl0ZW0+QUxMPC9pdGVtPgor ICAgICAgICAgICAgICAgICAgICAgIDxpdGVtPlNFTEVDVDwvaXRlbT4KKyAg ICAgICAgICAgICAgICAgICAgICA8aXRlbT5JTlNFUlQ8L2l0ZW0+CisgICAg ICAgICAgICAgICAgICAgICAgPGl0ZW0+VVBEQVRFPC9pdGVtPgorICAgICAg ICAgICAgICAgICAgICAgIDxpdGVtPkRFTEVURTwvaXRlbT4KKyAgICAgICAg ICAgICAgICAgICAgPC9jb250ZW50PgorICAgICAgICAgICAgICAgICAgICA8 ZGltZW5zaW9uPjE8L2RpbWVuc2lvbj4KKyAgICAgICAgICAgICAgICAgICAg PHN0eWxlPnd4UkFfU1BFQ0lGWV9DT0xTPC9zdHlsZT4KKyAgICAgICAgICAg ICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgPGZsYWc+d3hF WFBBTkR8d3hBTElHTl9DRU5URVJfVkVSVElDQUx8d3hUT1B8d3hMRUZUfHd4 UklHSFQ8L2ZsYWc+CisgICAgICAgICAgICAgICAgICA8Ym9yZGVyPjQ8L2Jv cmRlcj4KKyAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAg ICAgICA8b2JqZWN0IGNsYXNzPSJzaXplcml0ZW0iPgorICAgICAgICAgICAg ICAgICAgPG9iamVjdCBjbGFzcz0id3hTdGF0aWNUZXh0IiBuYW1lPSJzdFJv bGVzIj4KKyAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlJvbGVzPC9sYWJl bD4KKyAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAg ICAgICAgPGZsYWc+d3hBTElHTl9UT1B8d3hUT1B8d3hMRUZUfHd4UklHSFQ8 L2ZsYWc+CisgICAgICAgICAgICAgICAgICA8Ym9yZGVyPjQ8L2JvcmRlcj4K KyAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICA8 b2JqZWN0IGNsYXNzPSJzaXplcml0ZW0iPgorICAgICAgICAgICAgICAgICAg PG9iamVjdCBjbGFzcz0id3hGbGV4R3JpZFNpemVyIj4KKyAgICAgICAgICAg ICAgICAgICAgPGNvbHM+MzwvY29scz4KKyAgICAgICAgICAgICAgICAgICAg PHZnYXA+NTwvdmdhcD4KKyAgICAgICAgICAgICAgICAgICAgPGhnYXA+NTwv aGdhcD4KKyAgICAgICAgICAgICAgICAgICAgPGdyb3dhYmxlcm93cz4yPC9n cm93YWJsZXJvd3M+CisgICAgICAgICAgICAgICAgICAgIDxncm93YWJsZWNv bHM+MCwyPC9ncm93YWJsZWNvbHM+CisgICAgICAgICAgICAgICAgICAgIDxv YmplY3QgY2xhc3M9InNpemVyaXRlbSI+CisgICAgICAgICAgICAgICAgICAg ICAgPG9iamVjdCBjbGFzcz0id3hTdGF0aWNUZXh0IiBuYW1lPSJzdFJvbGVz U2VsZWN0ZWQiPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkFw cGx5IHBvbGljeSB0bzwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAgICAg PC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgPGZsYWc+d3hBTElH Tl9DRU5UUkVfVkVSVElDQUx8d3hUT1B8d3hMRUZUfHd4UklHSFQ8L2ZsYWc+ CisgICAgICAgICAgICAgICAgICAgICAgPGJvcmRlcj4wPC9ib3JkZXI+Cisg ICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAg ICAgICA8b2JqZWN0IGNsYXNzPSJzcGFjZXIiPgorICAgICAgICAgICAgICAg ICAgICAgIDxzaXplPjAsMGQ8L3NpemU+CisgICAgICAgICAgICAgICAgICAg IDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNz PSJzcGFjZXIiPgorICAgICAgICAgICAgICAgICAgICAgIDxzaXplPjAsMGQ8 L3NpemU+CisgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAg ICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJzaXplcml0ZW0iPgorICAg ICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ind4TGlzdEJveCIg bmFtZT0ibGJSb2xlc1NlbGVjdGVkIj4KKyAgICAgICAgICAgICAgICAgICAg ICAgIDxjb250ZW50Lz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxzaXpl Pjg2LDEyM2Q8L3NpemU+CisgICAgICAgICAgICAgICAgICAgICAgICA8c3R5 bGU+d3hMQl9FWFRFTkRFRHx3eExCX05FRURFRF9TQnx3eExCX1NPUlQ8L3N0 eWxlPgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAg ICAgICAgICAgICAgICAgIDxmbGFnPnd4RVhQQU5EfHd4Qk9UVE9NPC9mbGFn PgorICAgICAgICAgICAgICAgICAgICAgIDxib3JkZXI+MDwvYm9yZGVyPgor ICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAg ICAgICAgPG9iamVjdCBjbGFzcz0ic2l6ZXJpdGVtIj4KKyAgICAgICAgICAg ICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJ3eEZsZXhHcmlkU2l6ZXIiPgor ICAgICAgICAgICAgICAgICAgICAgICAgPGNvbHM+MTwvY29scz4KKyAgICAg ICAgICAgICAgICAgICAgICAgIDx2Z2FwPjU8L3ZnYXA+CisgICAgICAgICAg ICAgICAgICAgICAgICA8aGdhcD41PC9oZ2FwPgorICAgICAgICAgICAgICAg ICAgICAgICAgPG9iamVjdCBjbGFzcz0ic2l6ZXJpdGVtIj4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0id3hCdXR0b24iIG5h bWU9ImJ0bkFkZFJvbGUiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxsYWJlbD4mbHQ7Jmx0OzwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHRvb2x0aXA+QWRkIHJvbGU8L3Rvb2x0aXA+CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHNpemU+MTgsLTFkPC9zaXplPgorICAg ICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgPGZsYWc+d3hFWFBBTkR8d3hBTElHTl9CT1RUT018 d3hBTEw8L2ZsYWc+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxib3Jk ZXI+NDwvYm9yZGVyPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmpl Y3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJz aXplcml0ZW0iPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0 IGNsYXNzPSJ3eEJ1dHRvbiIgbmFtZT0iYnRuRGVsUm9sZSI+CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPiZndDsmZ3Q7PC9sYWJlbD4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dG9vbHRpcD5SZW1vdmUg cm9sZTwvdG9vbHRpcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 c2l6ZT4xOCwtMWQ8L3NpemU+CisgICAgICAgICAgICAgICAgICAgICAgICAg IDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmxhZz53 eEVYUEFORHx3eEFMSUdOX1RPUHx3eEFMTDwvZmxhZz4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgPGJvcmRlcj40PC9ib3JkZXI+CisgICAgICAgICAg ICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAg ICAgIDxmbGFnPnd4QUxJR05fQ0VOVFJFX1ZFUlRJQ0FMfHd4QUxMPC9mbGFn PgorICAgICAgICAgICAgICAgICAgICAgICAgPGJvcmRlcj4wPC9ib3JkZXI+ CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAg ICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICA8b2Jq ZWN0IGNsYXNzPSJzaXplcml0ZW0iPgorICAgICAgICAgICAgICAgICAgICAg IDxvYmplY3QgY2xhc3M9Ind4TGlzdEJveCIgbmFtZT0ibGJSb2xlc0FsbCI+ CisgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudC8+CisgICAgICAg ICAgICAgICAgICAgICAgICA8c2l6ZT44NiwxMjNkPC9zaXplPgorICAgICAg ICAgICAgICAgICAgICAgICAgPHN0eWxlPnd4TEJfRVhURU5ERUR8d3hMQl9O RUVERURfU0J8d3hMQl9TT1JUPC9zdHlsZT4KKyAgICAgICAgICAgICAgICAg ICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICA8ZmxhZz53 eEVYUEFORHx3eEJPVFRPTXx3eFJJR0hUPC9mbGFnPgorICAgICAgICAgICAg ICAgICAgICAgIDxib3JkZXI+MDwvYm9yZGVyPgorICAgICAgICAgICAgICAg ICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgIDwvb2JqZWN0Pgor ICAgICAgICAgICAgICAgICAgPGZsYWc+d3hFWFBBTkR8d3hBTEw8L2ZsYWc+ CisgICAgICAgICAgICAgICAgICA8Ym9yZGVyPjQ8L2JvcmRlcj4KKyAgICAg ICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgPC9vYmplY3Q+ CisgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICA8L29iamVjdD4K KyAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJub3RlYm9va3BhZ2UiPgorICAg ICAgICAgICAgPGxhYmVsPlN0YXRlbWVudHM8L2xhYmVsPgorICAgICAgICAg ICAgPG9iamVjdCBjbGFzcz0id3hQYW5lbCIgbmFtZT0icG5sU3RhdGVtZW50 cyI+CisgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ind4RmxleEdyaWRT aXplciI+CisgICAgICAgICAgICAgICAgPGNvbHM+MjwvY29scz4KKyAgICAg ICAgICAgICAgICA8dmdhcD41PC92Z2FwPgorICAgICAgICAgICAgICAgIDxo Z2FwPjU8L2hnYXA+CisgICAgICAgICAgICAgICAgPGdyb3dhYmxlcm93cz4w LDE8L2dyb3dhYmxlcm93cz4KKyAgICAgICAgICAgICAgICA8Z3Jvd2FibGVj b2xzPjE8L2dyb3dhYmxlY29scz4KKyAgICAgICAgICAgICAgICA8b2JqZWN0 IGNsYXNzPSJzaXplcml0ZW0iPgorICAgICAgICAgICAgICAgICAgPG9iamVj dCBjbGFzcz0id3hTdGF0aWNUZXh0IiBuYW1lPSJzdFVzaW5nIj4KKyAgICAg ICAgICAgICAgICAgICAgPGxhYmVsPlVzaW5nPC9sYWJlbD4KKyAgICAgICAg ICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgPGZsYWc+ d3hBTElHTl9UT1B8d3hUT1B8d3hMRUZUfHd4UklHSFQ8L2ZsYWc+CisgICAg ICAgICAgICAgICAgICA8Ym9yZGVyPjQ8L2JvcmRlcj4KKyAgICAgICAgICAg ICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNz PSJzaXplcml0ZW0iPgorICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFz cz0iY3RsU1FMQm94IiBuYW1lPSJzcWxCb3hVc2luZyI+CisgICAgICAgICAg ICAgICAgICAgIDxzdHlsZT53eFRFX01VTFRJTElORTwvc3R5bGU+CisgICAg ICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgIDxm bGFnPnd4RVhQQU5EfHd4VE9QfHd4TEVGVHx3eFJJR0hUPC9mbGFnPgorICAg ICAgICAgICAgICAgICAgPGJvcmRlcj40PC9ib3JkZXI+CisgICAgICAgICAg ICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFz cz0ic2l6ZXJpdGVtIj4KKyAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xh c3M9Ind4U3RhdGljVGV4dCIgbmFtZT0ic3RXaXRoQ2hlY2siPgorICAgICAg ICAgICAgICAgICAgICA8bGFiZWw+V2l0aCBjaGVjazwvbGFiZWw+CisgICAg ICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgIDxm bGFnPnd4QUxJR05fVE9QfHd4VE9QfHd4TEVGVHx3eFJJR0hUPC9mbGFnPgor ICAgICAgICAgICAgICAgICAgPGJvcmRlcj40PC9ib3JkZXI+CisgICAgICAg ICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgPG9iamVjdCBj bGFzcz0ic2l6ZXJpdGVtIj4KKyAgICAgICAgICAgICAgICAgIDxvYmplY3Qg Y2xhc3M9ImN0bFNRTEJveCIgbmFtZT0ic3FsQm94V2l0aENoZWNrIj4KKyAg ICAgICAgICAgICAgICAgICAgPHN0eWxlPnd4VEVfTVVMVElMSU5FPC9zdHls ZT4KKyAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAg ICAgICAgPGZsYWc+d3hFWFBBTkR8d3hUT1B8d3hMRUZUfHd4UklHSFQ8L2Zs YWc+CisgICAgICAgICAgICAgICAgICA8Ym9yZGVyPjQ8L2JvcmRlcj4KKyAg ICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgPC9vYmpl Y3Q+CisgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICA8L29iamVj dD4KKyAgICAgICAgPC9vYmplY3Q+CisgICAgICAgIDxmbGFnPnd4QUxMfHd4 R1JPV3x3eEFMSUdOX0NFTlRSRTwvZmxhZz4KKyAgICAgICAgPGJvcmRlcj4z PC9ib3JkZXI+CisgICAgICA8L29iamVjdD4KKyAgICAgIDxvYmplY3QgY2xh c3M9InNpemVyaXRlbSI+CisgICAgICAgIDxvYmplY3QgY2xhc3M9Ind4Rmxl eEdyaWRTaXplciI+CisgICAgICAgICAgPGNvbHM+NDwvY29scz4KKyAgICAg ICAgICA8Z3Jvd2FibGVjb2xzPjE8L2dyb3dhYmxlY29scz4KKyAgICAgICAg ICA8b2JqZWN0IGNsYXNzPSJzaXplcml0ZW0iPgorICAgICAgICAgICAgPG9i amVjdCBjbGFzcz0id3hCdXR0b24iIG5hbWU9Ind4SURfSEVMUCI+CisgICAg ICAgICAgICAgIDxsYWJlbD5IZWxwPC9sYWJlbD4KKyAgICAgICAgICAgIDwv b2JqZWN0PgorICAgICAgICAgICAgPGZsYWc+d3hFWFBBTkR8d3hBTEw8L2Zs YWc+CisgICAgICAgICAgICA8Ym9yZGVyPjM8L2JvcmRlcj4KKyAgICAgICAg ICA8L29iamVjdD4KKyAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJzcGFjZXIi PgorICAgICAgICAgICAgPHNpemU+MCwwZDwvc2l6ZT4KKyAgICAgICAgICA8 L29iamVjdD4KKyAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJzaXplcml0ZW0i PgorICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0id3hCdXR0b24iIG5hbWU9 Ind4SURfT0siPgorICAgICAgICAgICAgICA8bGFiZWw+JmFtcDtPSzwvbGFi ZWw+CisgICAgICAgICAgICAgIDxkZWZhdWx0PjE8L2RlZmF1bHQ+CisgICAg ICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgIDxmbGFnPnd4RVhQQU5E fHd4QUxMPC9mbGFnPgorICAgICAgICAgICAgPGJvcmRlcj4zPC9ib3JkZXI+ CisgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgPG9iamVjdCBjbGFz cz0ic2l6ZXJpdGVtIj4KKyAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ind4 QnV0dG9uIiBuYW1lPSJ3eElEX0NBTkNFTCI+CisgICAgICAgICAgICAgIDxs YWJlbD4mYW1wO0NhbmNlbDwvbGFiZWw+CisgICAgICAgICAgICA8L29iamVj dD4KKyAgICAgICAgICAgIDxmbGFnPnd4RVhQQU5EfHd4QUxMPC9mbGFnPgor ICAgICAgICAgICAgPGJvcmRlcj4zPC9ib3JkZXI+CisgICAgICAgICAgPC9v YmplY3Q+CisgICAgICAgIDwvb2JqZWN0PgorICAgICAgICA8ZmxhZz53eEVY UEFORHx3eFRPUHx3eExFRlR8d3hSSUdIVDwvZmxhZz4KKyAgICAgIDwvb2Jq ZWN0PgorICAgICAgPG9iamVjdCBjbGFzcz0ic2l6ZXJpdGVtIj4KKyAgICAg ICAgPG9iamVjdCBjbGFzcz0id3hTdGF0dXNCYXIiIG5hbWU9InVua1N0YXR1 c0JhciI+CisgICAgICAgICAgPHN0eWxlPnd4U1RfU0laRUdSSVA8L3N0eWxl PgorICAgICAgICA8L29iamVjdD4KKyAgICAgICAgPGZsYWc+d3hFWFBBTkR8 d3hBTElHTl9DRU5UUkU8L2ZsYWc+CisgICAgICAgIDxib3JkZXI+MzwvYm9y ZGVyPgorICAgICAgPC9vYmplY3Q+CisgICAgPC9vYmplY3Q+CisgIDwvb2Jq ZWN0PgorPC9yZXNvdXJjZT4KZGlmZiAtLWdpdCBhL3BnYWRtaW4vdWkvZGxn VGFibGUueHJjIGIvcGdhZG1pbi91aS9kbGdUYWJsZS54cmMKaW5kZXggNmVi YWEzMi4uYmRiODUxMiAxMDA2NDQKLS0tIGEvcGdhZG1pbi91aS9kbGdUYWJs ZS54cmMKKysrIGIvcGdhZG1pbi91aS9kbGdUYWJsZS54cmMKQEAgLTE4Nyw2 ICsxODcsMzYgQEAKICAgICAgICAgICAgICAgICAgIDxmbGFnPnd4RVhQQU5E fHd4QUxJR05fQ0VOVEVSX1ZFUlRJQ0FMfHd4VE9QfHd4TEVGVHx3eFJJR0hU PC9mbGFnPgogICAgICAgICAgICAgICAgICAgPGJvcmRlcj40PC9ib3JkZXI+ CiAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAg PG9iamVjdCBjbGFzcz0ic2l6ZXJpdGVtIj4KKyAgICAgICAgICAgICAgICAg IDxvYmplY3QgY2xhc3M9Ind4U3RhdGljVGV4dCIgbmFtZT0ic3RQb2xpY3lF bmFibGUiPgorICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RW5hYmxlIHJv dyBsZXZlbCBzZWN1cml0eTwvbGFiZWw+CisgICAgICAgICAgICAgICAgICA8 L29iamVjdD4KKyAgICAgICAgICAgICAgICAgIDxmbGFnPnd4QUxJR05fQ0VO VFJFX1ZFUlRJQ0FMfHd4VE9QfHd4TEVGVHx3eFJJR0hUPC9mbGFnPgorICAg ICAgICAgICAgICAgICAgPGJvcmRlcj40PC9ib3JkZXI+CisgICAgICAgICAg ICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFz cz0ic2l6ZXJpdGVtIj4KKyAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xh c3M9Ind4Q2hlY2tCb3giIG5hbWU9ImNoa1BvbGljeUVuYWJsZSI+CisgICAg ICAgICAgICAgICAgICAgIDxsYWJlbD48L2xhYmVsPgorICAgICAgICAgICAg ICAgICAgICA8Y2hlY2tlZD4wPC9jaGVja2VkPgorICAgICAgICAgICAgICAg ICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICA8ZmxhZz53eEVYUEFO RHx3eEFMSUdOX0NFTlRFUl9WRVJUSUNBTHx3eFRPUHx3eExFRlR8d3hSSUdI VDwvZmxhZz4KKyAgICAgICAgICAgICAgICAgIDxib3JkZXI+NDwvYm9yZGVy PgorICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAg IDxvYmplY3QgY2xhc3M9InNpemVyaXRlbSI+CisgICAgICAgICAgICAgICAg ICA8b2JqZWN0IGNsYXNzPSJ3eFN0YXRpY1RleHQiIG5hbWU9InN0UG9saWN5 Rm9yY2UiPgorICAgICAgICAgICAgICAgICAgICA8bGFiZWw+Rm9yY2Ugcm93 IGxldmVsIHNlY3VyaXR5PC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgIDwv b2JqZWN0PgorICAgICAgICAgICAgICAgICAgPGZsYWc+d3hBTElHTl9DRU5U UkVfVkVSVElDQUx8d3hUT1B8d3hMRUZUfHd4UklHSFQ8L2ZsYWc+CisgICAg ICAgICAgICAgICAgICA8Ym9yZGVyPjQ8L2JvcmRlcj4KKyAgICAgICAgICAg ICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNz PSJzaXplcml0ZW0iPgorICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFz cz0id3hDaGVja0JveCIgbmFtZT0iY2hrUG9saWN5Rm9yY2UiPgorICAgICAg ICAgICAgICAgICAgICA8bGFiZWw+PC9sYWJlbD4KKyAgICAgICAgICAgICAg ICAgICAgPGNoZWNrZWQ+MDwvY2hlY2tlZD4KKyAgICAgICAgICAgICAgICAg IDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgPGZsYWc+d3hFWFBBTkR8 d3hBTElHTl9DRU5URVJfVkVSVElDQUx8d3hUT1B8d3hMRUZUfHd4UklHSFQ8 L2ZsYWc+CisgICAgICAgICAgICAgICAgICA8Ym9yZGVyPjQ8L2JvcmRlcj4K KyAgICAgICAgICAgICAgICA8L29iamVjdD4KICAgICAgICAgICAgICAgPC9v YmplY3Q+CiAgICAgICAgICAgICA8L29iamVjdD4KICAgICAgICAgICA8L29i amVjdD4KZGlmZiAtLWdpdCBhL3BnYWRtaW4vdWkvbW9kdWxlLm1rIGIvcGdh ZG1pbi91aS9tb2R1bGUubWsKaW5kZXggYjU0NmU0MS4uMWI5OThiOSAxMDA2 NDQKLS0tIGEvcGdhZG1pbi91aS9tb2R1bGUubWsKKysrIGIvcGdhZG1pbi91 aS9tb2R1bGUubWsKQEAgLTQ5LDYgKzQ5LDcgQEAgVE1QX3VpICs9IFwKIAl1 aS9kbGdPcGVyYXRvci54cmMgXAogCXVpL2RsZ1BhY2thZ2UueHJjIFwKIAl1 aS9kbGdQZ3Bhc3NDb25maWcueHJjIFwKKwl1aS9kbGdQb2xpY3kueHJjIFwK IAl1aS9kbGdSZWFzc2lnbkRyb3BPd25lZC54cmMgXAogCXVpL2RsZ1JlcENs dXN0ZXIueHJjIFwKIAl1aS9kbGdSZXBDbHVzdGVyVXBncmFkZS54cmMgXAot LSAKMi43LjIud2luZG93cy4xCgo= --------------020803080206050307010505 Content-Type: text/plain; charset=UTF-8; name="policy-tab-completion.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="policy-tab-completion.patch" RnJvbSAxNDVjOWQwNGY4MDdlYmQ0Zjg1NjAxNDIwYjIxNTM1NjU3MDc2ZGI2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUG9s eWFrb3YgPGFsZXhwbGt2QHlhbmRleC5ydT4KRGF0ZTogVHVlLCA1IEFwciAy MDE2IDE3OjA5OjU3ICswNDAwClN1YmplY3Q6IFtQQVRDSF0gQmFzaWMgdGFi LWNvbXBsZXRpb24gZm9yIHBvbGljaWVzCgotLS0KIHBnYWRtaW4vY3RsL2N0 bFNRTEJveC5jcHAgICAgICB8ICAgNiArLQogcGdhZG1pbi91dGlscy90YWIt Y29tcGxldGUuaW5jIHwgMTY0ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCiBwZ2FkbWluL3V0aWxzL3RhYmNvbXBsZXRlLmMg ICAgfCAgIDQgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMo KyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcGdhZG1pbi9jdGwv Y3RsU1FMQm94LmNwcCBiL3BnYWRtaW4vY3RsL2N0bFNRTEJveC5jcHAKaW5k ZXggYTQ1YmI1ZS4uMzc5NjdkNiAxMDA2NDQKLS0tIGEvcGdhZG1pbi9jdGwv Y3RsU1FMQm94LmNwcAorKysgYi9wZ2FkbWluL2N0bC9jdGxTUUxCb3guY3Bw CkBAIC04MjgsNyArODI4LDcgQEAgdm9pZCBjdGxTUUxCb3g6Ok9uTWFyZ2lu Q2xpY2sod3hTdHlsZWRUZXh0RXZlbnQgJmV2ZW50KQogfQogCiAKLWV4dGVy biAiQyIgY2hhciAqdGFiX2NvbXBsZXRlKGNvbnN0IGNoYXIgKmFsbHN0ciwg Y29uc3QgaW50IHN0YXJ0cHRyLCBjb25zdCBpbnQgZW5kcHRyLCB2b2lkICpk YnB0cik7CitleHRlcm4gIkMiIGNoYXIgKnRhYl9jb21wbGV0ZShjb25zdCBj aGFyICphbGxzdHIsIGNvbnN0IGludCBzdGFydHB0ciwgY29uc3QgaW50IGVu ZHB0ciwgdm9pZCAqZGJwdHIsIGludCBkYnZtYWpvciwgaW50IGRidm1pbm9y KTsKIHZvaWQgY3RsU1FMQm94OjpPbkF1dG9Db21wbGV0ZSh3eENvbW1hbmRF dmVudCAmcmV2KQogewogCWlmIChHZXRSZWFkT25seSgpKQpAQCAtODQzLDkg Kzg0Myw5IEBAIHZvaWQgY3RsU1FMQm94OjpPbkF1dG9Db21wbGV0ZSh3eENv bW1hbmRFdmVudCAmcmV2KQogCiAJY2hhciAqdGFiX3JldDsKIAlpZiAoc3Bh Y2VpZHggPT0gLTEpCi0JCXRhYl9yZXQgPSB0YWJfY29tcGxldGUod2hhdC5t Yl9zdHIod3hDb252VVRGOCksIDAsIHdoYXQuTGVuKCkgKyAxLCBtX2RhdGFi YXNlKTsKKwkJdGFiX3JldCA9IHRhYl9jb21wbGV0ZSh3aGF0Lm1iX3N0cih3 eENvbnZVVEY4KSwgMCwgd2hhdC5MZW4oKSArIDEsIG1fZGF0YWJhc2UsIG1f ZGF0YWJhc2UtPkdldE1ham9yVmVyc2lvbigpLCBtX2RhdGFiYXNlLT5HZXRN aW5vclZlcnNpb24oKSk7CiAJZWxzZQotCQl0YWJfcmV0ID0gdGFiX2NvbXBs ZXRlKHdoYXQubWJfc3RyKHd4Q29udlVURjgpLCBzcGFjZWlkeCArIDEsIHdo YXQuTGVuKCkgKyAxLCBtX2RhdGFiYXNlKTsKKwkJdGFiX3JldCA9IHRhYl9j b21wbGV0ZSh3aGF0Lm1iX3N0cih3eENvbnZVVEY4KSwgc3BhY2VpZHggKyAx LCB3aGF0LkxlbigpICsgMSwgbV9kYXRhYmFzZSwgbV9kYXRhYmFzZS0+R2V0 TWFqb3JWZXJzaW9uKCksIG1fZGF0YWJhc2UtPkdldE1pbm9yVmVyc2lvbigp KTsKIAogCWlmICh0YWJfcmV0ID09IE5VTEwgfHwgdGFiX3JldFswXSA9PSAn XDAnKQogCQlyZXR1cm47IC8qIE5vIGF1dG9jb21wbGV0ZSBhdmFpbGFibGUg Zm9yIHRoaXMgc3RyaW5nICovCmRpZmYgLS1naXQgYS9wZ2FkbWluL3V0aWxz L3RhYi1jb21wbGV0ZS5pbmMgYi9wZ2FkbWluL3V0aWxzL3RhYi1jb21wbGV0 ZS5pbmMKaW5kZXggOThiN2EzNS4uMmE0MmY4NSAxMDA2NDQKLS0tIGEvcGdh ZG1pbi91dGlscy90YWItY29tcGxldGUuaW5jCisrKyBiL3BnYWRtaW4vdXRp bHMvdGFiLWNvbXBsZXRlLmluYwpAQCAtMzE1LDYgKzMxNSwxOSBAQCBzdGF0 aWMgY29uc3QgU2NoZW1hUXVlcnkgUXVlcnlfZm9yX2xpc3Rfb2Zfdmlld3Mg PSB7CiAiICAgICAgIChTRUxFQ1QgdGdyZWxpZCBGUk9NIHBnX2NhdGFsb2cu cGdfdHJpZ2dlciAiXAogIiAgICAgICAgIFdIRVJFIHBnX2NhdGFsb2cucXVv dGVfaWRlbnQodGduYW1lKT0nJXMnKSIKIAorI2RlZmluZSBRdWVyeV9mb3Jf bGlzdF9vZl9wb2xpY2llcyBcCisiIFNFTEVDVCBwZ19jYXRhbG9nLnF1b3Rl X2lkZW50KHBvbG5hbWUpICJcCisiICAgRlJPTSBwZ19jYXRhbG9nLnBnX3Bv bGljeSAiXAorIiAgV0hFUkUgc3Vic3RyaW5nKHBnX2NhdGFsb2cucXVvdGVf aWRlbnQocG9sbmFtZSksMSwlZCk9JyVzJyIKKworI2RlZmluZSBRdWVyeV9m b3JfbGlzdF9vZl90YWJsZXNfZm9yX3BvbGljeSBcCisiU0VMRUNUIHBnX2Nh dGFsb2cucXVvdGVfaWRlbnQocmVsbmFtZSkgIlwKKyIgIEZST00gcGdfY2F0 YWxvZy5wZ19jbGFzcyJcCisiIFdIRVJFICglZCA9IHBnX2NhdGFsb2cubGVu Z3RoKCclcycpKSJcCisiICAgQU5EIG9pZCBJTiAiXAorIiAgICAgICAoU0VM RUNUIHBvbHJlbGlkIEZST00gcGdfY2F0YWxvZy5wZ19wb2xpY3kgIlwKKyIg ICAgICAgICBXSEVSRSBwZ19jYXRhbG9nLnF1b3RlX2lkZW50KHBvbG5hbWUp PSclcycpIgorCiAvKgogICogVGhpcyBpcyBhIGxpc3Qgb2YgYWxsICJ0aGlu Z3MiIGluIFBnc3FsLCB3aGljaCBjYW4gc2hvdyB1cCBhZnRlciBDUkVBVEUg b3IKICAqIERST1A7IGFuZCB0aGVyZSBpcyBhbHNvIGEgcXVlcnkgdG8gZ2V0 IGEgbGlzdCBvZiB0aGVtLgpAQCAtMzQ1LDYgKzM1OCw3IEBAIHN0YXRpYyBj b25zdCBwZ3NxbF90aGluZ190IHdvcmRzX2FmdGVyX2NyZWF0ZVtdID0gewog CXsiSU5ERVgiLCBOVUxMLCAmUXVlcnlfZm9yX2xpc3Rfb2ZfaW5kZXhlc30s CiAJeyJPUEVSQVRPUiIsIE5VTEwsIE5VTEx9LAkvKiBRdWVyeWluZyBmb3Ig dGhpcyBpcyBwcm9iYWJseSBub3Qgc3VjaCBhCiAJCQkJCQkJCSAqIGdvb2Qg aWRlYS4gKi8KKwl7IlBPTElDWSIsIE5VTEwsIE5VTEx9LAogCXsiUk9MRSIs IFF1ZXJ5X2Zvcl9saXN0X29mX3JvbGVzfSwKIAl7IlJVTEUiLCAiU0VMRUNU IHBnX2NhdGFsb2cucXVvdGVfaWRlbnQocnVsZW5hbWUpIEZST00gcGdfY2F0 YWxvZy5wZ19ydWxlcyBXSEVSRSBzdWJzdHJpbmcocGdfY2F0YWxvZy5xdW90 ZV9pZGVudChydWxlbmFtZSksMSwlZCk9JyVzJyJ9LAogCXsiU0NIRU1BIiwg UXVlcnlfZm9yX2xpc3Rfb2Zfc2NoZW1hc30sCkBAIC0zNjAsMTMgKzM3NCwx NCBAQCBzdGF0aWMgY29uc3QgcGdzcWxfdGhpbmdfdCB3b3Jkc19hZnRlcl9j cmVhdGVbXSA9IHsKIAl7TlVMTCwgTlVMTCwgTlVMTH0JCQkvKiBlbmQgb2Yg bGlzdCAqLwogfTsKIAorI2RlZmluZSBCQUNLRU5EX01JTklNVU0obWFqb3Is IG1pbm9yKQkJKGRidm1ham9yID4gbWFqb3IgfHwgKGRidm1ham9yID09IG1h am9yICYmIGRidm1pbm9yID49IG1pbm9yKSkKIAogLyogVGhlIGNvbXBsZXRp b24gZnVuY3Rpb24uIEFjYy4gdG8gcmVhZGxpbmUgc3BlYyB0aGlzIGdldHMg cGFzc2VkIHRoZSB0ZXh0CiAgICBlbnRlcmVkIHRvIGZhciBhbmQgaXRzIHN0 YXJ0IGFuZCBlbmQgaW4gdGhlIHJlYWRsaW5lIGJ1ZmZlci4gVGhlIHJldHVy biB2YWx1ZQogICAgaXMgc29tZSBwYXJ0aWFsbHkgb2JzY3VyZSBsaXN0IGZv cm1hdCB0aGF0IGNhbiBiZSBnZW5lcmF0ZWQgYnkgdGhlIHJlYWRsaW5lCiAg ICBsaWJyYXJpZXMgY29tcGxldGlvbl9tYXRjaGVzKCkgZnVuY3Rpb24sIHNv IHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgaXQuCiAqLwotc3RhdGlj IGNoYXIgKiBwc3FsX2NvbXBsZXRpb24oY2hhciAqdGV4dCwgaW50IHN0YXJ0 LCBpbnQgZW5kLCB2b2lkICpkYnB0cikKK3N0YXRpYyBjaGFyICogcHNxbF9j b21wbGV0aW9uKGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCwgdm9p ZCAqZGJwdHIsIGludCBkYnZtYWpvciwgaW50IGRidm1pbm9yKQogewogCS8q IFRoaXMgaXMgdGhlIHZhcmlhYmxlIHdlJ2xsIHJldHVybi4gKi8KIAljaGFy ICptYXRjaGVzID0gTlVMTDsKQEAgLTM3Niw3ICszOTEsOSBAQCBzdGF0aWMg Y2hhciAqIHBzcWxfY29tcGxldGlvbihjaGFyICp0ZXh0LCBpbnQgc3RhcnQs IGludCBlbmQsIHZvaWQgKmRicHRyKQogCQkJICAgKnByZXYyX3dkLAogCQkJ ICAgKnByZXYzX3dkLAogCQkJICAgKnByZXY0X3dkLAotCQkJICAgKnByZXY1 X3dkOworCQkJICAgKnByZXY1X3dkLAorCQkJICAgKnByZXY2X3dkLAorCQkJ ICAgKnByZXY3X3dkOwogCiAJc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNx bF9jb21tYW5kc1tdID0gewogCQkiQUJPUlQiLCAiQUxURVIiLCAiQU5BTFla RSIsICJCRUdJTiIsICJDSEVDS1BPSU5UIiwgIkNMT1NFIiwgIkNMVVNURVIi LCAiQ09NTUVOVCIsCkBAIC00MTksNiArNDM2LDggQEAgc3RhdGljIGNoYXIg KiBwc3FsX2NvbXBsZXRpb24oY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQg ZW5kLCB2b2lkICpkYnB0cikKIAlwcmV2M193ZCA9IHByZXZpb3VzX3dvcmQo c3RhcnQsIDIpOwogCXByZXY0X3dkID0gcHJldmlvdXNfd29yZChzdGFydCwg Myk7CiAJcHJldjVfd2QgPSBwcmV2aW91c193b3JkKHN0YXJ0LCA0KTsKKwlw cmV2Nl93ZCA9IHByZXZpb3VzX3dvcmQoc3RhcnQsIDUpOworCXByZXY3X3dk ID0gcHJldmlvdXNfd29yZChzdGFydCwgNik7CiAKIAkvKiBJZiBhIGJhY2tz bGFzaCBjb21tYW5kIHdhcyBzdGFydGVkLCBjb250aW51ZSAqLwogCWlmICh0 ZXh0WzBdID09ICdcXCcpCkBAIC00NDgsNyArNDY3LDcgQEAgc3RhdGljIGNo YXIgKiBwc3FsX2NvbXBsZXRpb24oY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBp bnQgZW5kLCB2b2lkICpkYnB0cikKIAl7CiAJCXN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBsaXN0X0FMVEVSW10gPQogCQl7IkFHR1JFR0FURSIsICJDT05W RVJTSU9OIiwgIkRBVEFCQVNFIiwgIkRPTUFJTiIsICJGVU5DVElPTiIsCi0J CQkiR1JPVVAiLCAiSU5ERVgiLCAiTEFOR1VBR0UiLCAiT1BFUkFUT1IiLCAi Uk9MRSIsICJTQ0hFTUEiLCAiU0VRVUVOQ0UiLCAiVEFCTEUiLAorCQkJIkdS T1VQIiwgIklOREVYIiwgIkxBTkdVQUdFIiwgIk9QRVJBVE9SIiwgIlBPTElD WSIsICJST0xFIiwgIlNDSEVNQSIsICJTRVFVRU5DRSIsICJUQUJMRSIsCiAJ CSJUQUJMRVNQQUNFIiwgIlRSSUdHRVIiLCAiVFlQRSIsICJVU0VSIiwgTlVM TH07CiAKIAkJQ09NUExFVEVfV0lUSF9MSVNUKGxpc3RfQUxURVIpOwpAQCAt NzgxLDcgKzgwMCw3IEBAIHN0YXRpYyBjaGFyICogcHNxbF9jb21wbGV0aW9u KGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCwgdm9pZCAqZGJwdHIp CiAJCQkgcGdfc3RyY2FzZWNtcChwcmV2X3dkLCAiT04iKSA9PSAwKQogCXsK IAkJc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGxpc3RfQ09NTUVOVFtdID0K LQkJeyJDQVNUIiwgIkNPTlZFUlNJT04iLCAiREFUQUJBU0UiLCAiSU5ERVgi LCAiTEFOR1VBR0UiLCAiUlVMRSIsICJTQ0hFTUEiLAorCQl7IkNBU1QiLCAi Q09OVkVSU0lPTiIsICJEQVRBQkFTRSIsICJJTkRFWCIsICJMQU5HVUFHRSIs ICJQT0xJQ1kiLCAiUlVMRSIsICJTQ0hFTUEiLAogCQkJIlNFUVVFTkNFIiwg IlRBQkxFIiwgIlRZUEUiLCAiVklFVyIsICJDT0xVTU4iLCAiQUdHUkVHQVRF IiwgIkZVTkNUSU9OIiwKIAkJIk9QRVJBVE9SIiwgIlRSSUdHRVIiLCAiQ09O U1RSQUlOVCIsICJET01BSU4iLCAiTEFSR0UgT0JKRUNUIiwgTlVMTH07CiAK QEAgLTEyNjUsNiArMTI4NCwxNDEgQEAgc3RhdGljIGNoYXIgKiBwc3FsX2Nv bXBsZXRpb24oY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kLCB2b2lk ICpkYnB0cikKIAkJCSBwZ19zdHJjYXNlY21wKHByZXZfd2QsICJHUk9VUCIp ID09IDApCiAJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIkJZIik7CiAKKy8qIFBP TElDWSAqLworCS8qIENvbXBsZXRlICJDUkVBVEUgUE9MSUNZIDxuYW1lPiBP TiIgKi8KKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKHByZXYzX3dkLCAiQ1JF QVRFIikgPT0gMCAmJgorCQkJIHBnX3N0cmNhc2VjbXAocHJldjJfd2QsICJQ T0xJQ1kiKSA9PSAwKQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCJPTiIpOwor CS8qIENvbXBsZXRlICJDUkVBVEUgUE9MSUNZIDxuYW1lPiBPTiA8dGFibGU+ IiAqLworCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAocHJldjRfd2QsICJDUkVB VEUiKSA9PSAwICYmCisJCQkgcGdfc3RyY2FzZWNtcChwcmV2M193ZCwgIlBP TElDWSIpID09IDAgJiYKKwkJCSBwZ19zdHJjYXNlY21wKHByZXZfd2QsICJP TiIpID09IDApCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5 X2Zvcl9saXN0X29mX3RhYmxlcywgTlVMTCk7CisJLyogQ29tcGxldGUgIkNS RUFURSBQT0xJQ1kgPG5hbWU+IE9OIDx0YWJsZT4gRk9SfFRPfFVTSU5HfFdJ VEggQ0hFQ0siICovCisJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChwcmV2NV93 ZCwgIkNSRUFURSIpID09IDAgJiYKKwkJCSBwZ19zdHJjYXNlY21wKHByZXY0 X3dkLCAiUE9MSUNZIikgPT0gMCAmJgorCQkJIHBnX3N0cmNhc2VjbXAocHJl djJfd2QsICJPTiIpID09IDApCisJeworCQlzdGF0aWMgY29uc3QgY2hhciAq Y29uc3QgbGlzdF9DUkVBVEVQT0xJQ1lbXSA9CisJCQl7IkZPUiIsICJUTyIs ICJVU0lORyAoIiwgIldJVEggQ0hFQ0sgKCIsIE5VTEx9OworCQlDT01QTEVU RV9XSVRIX0xJU1QobGlzdF9DUkVBVEVQT0xJQ1kpOworCX0KKwkvKiBDUkVB VEUgUE9MSUNZIDxuYW1lPiBPTiA8dGFibGU+IEZPUiBBTEx8U0VMRUNUfElO U0VSVHxVUERBVEV8REVMRVRFICovCisJZWxzZSBpZiAocGdfc3RyY2FzZWNt cChwcmV2Nl93ZCwgIkNSRUFURSIpID09IDAgJiYKKwkJCSBwZ19zdHJjYXNl Y21wKHByZXY1X3dkLCAiUE9MSUNZIikgPT0gMCAmJgorCQkJIHBnX3N0cmNh c2VjbXAocHJldjNfd2QsICJPTiIpID09IDAgJiYKKwkJCSBwZ19zdHJjYXNl Y21wKHByZXZfd2QsICJGT1IiKSA9PSAwKQorCXsKKwkJc3RhdGljIGNvbnN0 IGNoYXIgKmNvbnN0IGxpc3RfQ1JFQVRFUE9MSUNZRk9SW10gPQorCQkJeyJB TEwiLCAiU0VMRUNUIiwgIklOU0VSVCIsICJVUERBVEUiLCAiREVMRVRFIiwg TlVMTH07CisJCUNPTVBMRVRFX1dJVEhfTElTVChsaXN0X0NSRUFURVBPTElD WUZPUik7CisJfQorCS8qIENvbXBsZXRlICJDUkVBVEUgUE9MSUNZIDxuYW1l PiBPTiA8dGFibGU+IEZPUiBJTlNFUlQgVE98V0lUSCBDSEVDSyIgKi8KKwkv KiBOb3RlIHRoaXMgc2hvdWxkIGhhcHBlbiBiZWZvcmUgSU5TRVJUIElOVE8v VVBEQVRFIGNoZWNrcyovCisJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChwcmV2 N193ZCwgIkNSRUFURSIpID09IDAgJiYKKwkJCSBwZ19zdHJjYXNlY21wKHBy ZXY2X3dkLCAiUE9MSUNZIikgPT0gMCAmJgorCQkJIHBnX3N0cmNhc2VjbXAo cHJldjRfd2QsICJPTiIpID09IDAgJiYKKwkJCSBwZ19zdHJjYXNlY21wKHBy ZXYyX3dkLCAiRk9SIikgPT0gMCAmJgorCQkJIHBnX3N0cmNhc2VjbXAocHJl dl93ZCwgIklOU0VSVCIpID09IDApCisJeworCQlzdGF0aWMgY29uc3QgY2hh ciAqY29uc3QgbGlzdF9DUkVBVEVQT0xJQ1lGT1JJTlNFUlRbXSA9CisJCQl7 IlRPIiwgIldJVEggQ0hFQ0sgKCIsIE5VTEx9OworCQlDT01QTEVURV9XSVRI X0xJU1QobGlzdF9DUkVBVEVQT0xJQ1lGT1JJTlNFUlQpOworCX0KKwkvKiBD b21wbGV0ZSAiQ1JFQVRFIFBPTElDWSA8bmFtZT4gT04gPHRhYmxlPiBGT1Ig U0VMRUNUfERFTEVURSBUT3xVU0lORyIgKi8KKwllbHNlIGlmIChwZ19zdHJj YXNlY21wKHByZXY3X3dkLCAiQ1JFQVRFIikgPT0gMCAmJgorCQkJIHBnX3N0 cmNhc2VjbXAocHJldjZfd2QsICJQT0xJQ1kiKSA9PSAwICYmCisJCQkgcGdf c3RyY2FzZWNtcChwcmV2NF93ZCwgIk9OIikgPT0gMCAmJgorCQkJIHBnX3N0 cmNhc2VjbXAocHJldjJfd2QsICJGT1IiKSA9PSAwICYmCisJCQkgKHBnX3N0 cmNhc2VjbXAocHJldl93ZCwgIlNFTEVDVCIpID09IDAgfHwgcGdfc3RyY2Fz ZWNtcChwcmV2X3dkLCAiREVMRVRFIikgPT0gMCkpCisJeworCQlzdGF0aWMg Y29uc3QgY2hhciAqY29uc3QgbGlzdF9DUkVBVEVQT0xJQ1lGT1JTRUxFQ1Rb XSA9CisJCQl7IlRPIiwgIlVTSU5HICgiLCBOVUxMfTsKKwkJQ09NUExFVEVf V0lUSF9MSVNUKGxpc3RfQ1JFQVRFUE9MSUNZRk9SU0VMRUNUKTsKKwl9CisJ LyogQ1JFQVRFIFBPTElDWSA8bmFtZT4gT04gPHRhYmxlPiBGT1IgQUxMfFVQ REFURSBUT3xVU0lOR3xXSVRIIENIRUNLICovCisJZWxzZSBpZiAocGdfc3Ry Y2FzZWNtcChwcmV2N193ZCwgIkNSRUFURSIpID09IDAgJiYKKwkJCSBwZ19z dHJjYXNlY21wKHByZXY2X3dkLCAiUE9MSUNZIikgPT0gMCAmJgorCQkJIHBn X3N0cmNhc2VjbXAocHJldjRfd2QsICJPTiIpID09IDAgJiYKKwkJCSBwZ19z dHJjYXNlY21wKHByZXYyX3dkLCAiRk9SIikgPT0gMCAmJgorCQkJIChwZ19z dHJjYXNlY21wKHByZXZfd2QsICJBTEwiKSA9PSAwIHx8IHBnX3N0cmNhc2Vj bXAocHJldl93ZCwgIlVQREFURSIpID09IDApKQorCXsKKwkJc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IGxpc3RfQ1JFQVRFUE9MSUNZRk9SU0VMRUNUW10g PQorCQkJeyJUTyIsICJVU0lORyAoIiwgIldJVEggQ0hFQ0sgKCIsIE5VTEx9 OworCQlDT01QTEVURV9XSVRIX0xJU1QobGlzdF9DUkVBVEVQT0xJQ1lGT1JT RUxFQ1QpOworCX0KKwkvKiBDb21wbGV0ZSAiQ1JFQVRFIFBPTElDWSA8bmFt ZT4gT04gPHRhYmxlPiBUTyA8cm9sZT4iICovCisJZWxzZSBpZiAocGdfc3Ry Y2FzZWNtcChwcmV2Nl93ZCwgIkNSRUFURSIpID09IDAgJiYKKwkJCSBwZ19z dHJjYXNlY21wKHByZXY1X3dkLCAiUE9MSUNZIikgPT0gMCAmJgorCQkJIHBn X3N0cmNhc2VjbXAocHJldjNfd2QsICJPTiIpID09IDAgJiYKKwkJCSBwZ19z dHJjYXNlY21wKHByZXZfd2QsICJUTyIpID09IDApCisJCUNPTVBMRVRFX1dJ VEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZ3JhbnRfcm9sZXMpOworCS8q IENSRUFURSBQT0xJQ1kgPG5hbWU+IE9OIDx0YWJsZT4gVVNJTkcgKCAqLwor CWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAocHJldjZfd2QsICJDUkVBVEUiKSA9 PSAwICYmCisJCQkgcGdfc3RyY2FzZWNtcChwcmV2NV93ZCwgIlBPTElDWSIp ID09IDAgJiYKKwkJCSBwZ19zdHJjYXNlY21wKHByZXYzX3dkLCAiT04iKSA9 PSAwICYmCisJCQkgcGdfc3RyY2FzZWNtcChwcmV2X3dkLCAiVVNJTkciKSA9 PSAwKQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCIoIik7CisKKwkvKiBBTFRF UiBQT0xJQ1kgPG5hbWU+ICovCisJLyogU2hvdWxkIGNoZWNrIGRiIHZlcnNp b24gdG8gYXZvaWQgZXJyb3JzIHdpdGggbm9uZXhpc3RlbnQgY2F0YWxvZ3Mg Ki8KKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKHByZXYyX3dkLCAiQUxURVIi KSA9PSAwICYmCisJCQkgcGdfc3RyY2FzZWNtcChwcmV2X3dkLCAiUE9MSUNZ IikgPT0gMCAmJgorCQkJIEJBQ0tFTkRfTUlOSU1VTSg5LCA1KSkKKwkJQ09N UExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wb2xpY2llcyk7 CisJLyogQUxURVIgUE9MSUNZIDxuYW1lPiBPTiAqLworCWVsc2UgaWYgKHBn X3N0cmNhc2VjbXAocHJldjNfd2QsICJBTFRFUiIpID09IDAgJiYKKwkJCSBw Z19zdHJjYXNlY21wKHByZXYyX3dkLCAiUE9MSUNZIikgPT0gMCkKKwkJQ09N UExFVEVfV0lUSF9DT05TVCgiT04iKTsKKwkvKiBBTFRFUiBQT0xJQ1kgPG5h bWU+IE9OIDx0YWJsZT4gKi8KKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKHBy ZXY0X3dkLCAiQUxURVIiKSA9PSAwICYmCisJCQkgcGdfc3RyY2FzZWNtcChw cmV2M193ZCwgIlBPTElDWSIpID09IDAgJiYKKwkJCSBwZ19zdHJjYXNlY21w KHByZXZfd2QsICJPTiIpID09IDApCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1B X1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcywgTlVMTCk7CisJLyog QUxURVIgUE9MSUNZIDxuYW1lPiBPTiA8dGFibGU+IC0gc2hvdyBvcHRpb25z ICovCisJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChwcmV2NV93ZCwgIkFMVEVS IikgPT0gMCAmJgorCQkJIHBnX3N0cmNhc2VjbXAocHJldjRfd2QsICJQT0xJ Q1kiKSA9PSAwICYmCisJCQkgcGdfc3RyY2FzZWNtcChwcmV2Ml93ZCwgIk9O IikgPT0gMCkKKwl7CisJCXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBsaXN0 X0FMVEVSUE9MSUNZW10gPQorCQkJeyJSRU5BTUUgVE8iLCAiVE8iLCAiVVNJ TkcgKCIsICJXSVRIIENIRUNLICgiLCBOVUxMfTsKKwkJQ09NUExFVEVfV0lU SF9MSVNUKGxpc3RfQUxURVJQT0xJQ1kpOworCX0KKwkvKiBBTFRFUiBQT0xJ Q1kgPG5hbWU+IE9OIDx0YWJsZT4gVE8gPHJvbGU+ICovCisJZWxzZSBpZiAo cGdfc3RyY2FzZWNtcChwcmV2Nl93ZCwgIkFMVEVSIikgPT0gMCAmJgorCQkJ IHBnX3N0cmNhc2VjbXAocHJldjVfd2QsICJQT0xJQ1kiKSA9PSAwICYmCisJ CQkgcGdfc3RyY2FzZWNtcChwcmV2M193ZCwgIk9OIikgPT0gMCAmJgorCQkJ IHBnX3N0cmNhc2VjbXAocHJldl93ZCwgIlRPIikgPT0gMCkKKwkJQ09NUExF VEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9ncmFudF9yb2xlcyk7 CisJLyogQUxURVIgUE9MSUNZIDxuYW1lPiBPTiA8dGFibGU+IFVTSU5HICgg Ki8KKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKHByZXY2X3dkLCAiQUxURVIi KSA9PSAwICYmCisJCQkgcGdfc3RyY2FzZWNtcChwcmV2NV93ZCwgIlBPTElD WSIpID09IDAgJiYKKwkJCSBwZ19zdHJjYXNlY21wKHByZXYzX3dkLCAiT04i KSA9PSAwICYmCisJCQkgcGdfc3RyY2FzZWNtcChwcmV2X3dkLCAiVVNJTkci KSA9PSAwKQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCIoIik7CisJLyogQUxU RVIgUE9MSUNZIDxuYW1lPiBPTiA8dGFibGU+IFdJVEggQ0hFQ0sgKCAqLwor CWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAocHJldjdfd2QsICJDUkVBVEUiKSA9 PSAwICYmCisJCQkgcGdfc3RyY2FzZWNtcChwcmV2Nl93ZCwgIlBPTElDWSIp ID09IDAgJiYKKwkJCSBwZ19zdHJjYXNlY21wKHByZXY0X3dkLCAiT04iKSA9 PSAwICYmCisJCQkgcGdfc3RyY2FzZWNtcChwcmV2Ml93ZCwgIldJVEgiKSA9 PSAwICYmCisJCQkgcGdfc3RyY2FzZWNtcChwcmV2X3dkLCAiQ0hFQ0siKSA9 PSAwKQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCIoIik7CisKKwkvKiBEUk9Q IFBPTElDWSA8bmFtZT4gKi8KKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKHBy ZXYyX3dkLCAiRFJPUCIpID09IDAgJiYKKwkJCSBwZ19zdHJjYXNlY21wKHBy ZXZfd2QsICJQT0xJQ1kiKSA9PSAwICYmCisJCQkgQkFDS0VORF9NSU5JTVVN KDksIDUpKQorCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0 X29mX3BvbGljaWVzKTsKKwkvKiBEUk9QIFBPTElDWSA8bmFtZT4gT04gKi8K KwllbHNlIGlmIChwZ19zdHJjYXNlY21wKHByZXYzX3dkLCAiRFJPUCIpID09 IDAgJiYKKwkJCSBwZ19zdHJjYXNlY21wKHByZXYyX3dkLCAiUE9MSUNZIikg PT0gMCkKKwkJQ09NUExFVEVfV0lUSF9DT05TVCgiT04iKTsKKwkvKiBEUk9Q IFBPTElDWSA8bmFtZT4gT04gPHRhYmxlPiAqLworCWVsc2UgaWYgKHBnX3N0 cmNhc2VjbXAocHJldjRfd2QsICJEUk9QIikgPT0gMCAmJgorCQkJIHBnX3N0 cmNhc2VjbXAocHJldjNfd2QsICJQT0xJQ1kiKSA9PSAwICYmCisJCQkgcGdf c3RyY2FzZWNtcChwcmV2X3dkLCAiT04iKSA9PSAwKQorCQlDT01QTEVURV9X SVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMsIE5V TEwpOworCiAvKiBJTlNFUlQgKi8KIAkvKiBDb21wbGV0ZSBJTlNFUlQgd2l0 aCAiSU5UTyIgKi8KIAllbHNlIGlmIChwZ19zdHJjYXNlY21wKHByZXZfd2Qs ICJJTlNFUlQiKSA9PSAwKQpAQCAtMTczMCw2ICsxODg0LDggQEAgc3RhdGlj IGNoYXIgKiBwc3FsX2NvbXBsZXRpb24oY2hhciAqdGV4dCwgaW50IHN0YXJ0 LCBpbnQgZW5kLCB2b2lkICpkYnB0cikKIAlmcmVlKHByZXYzX3dkKTsKIAlm cmVlKHByZXY0X3dkKTsKIAlmcmVlKHByZXY1X3dkKTsKKwlmcmVlKHByZXY2 X3dkKTsKKwlmcmVlKHByZXY3X3dkKTsKIAogCS8qIFJldHVybiBvdXIgR3Jh bmQgTGlzdCBPJyBNYXRjaGVzICovCiAJcmV0dXJuIG1hdGNoZXM7CmRpZmYg LS1naXQgYS9wZ2FkbWluL3V0aWxzL3RhYmNvbXBsZXRlLmMgYi9wZ2FkbWlu L3V0aWxzL3RhYmNvbXBsZXRlLmMKaW5kZXggZjhjYmEwNS4uODUzOTE1ZiAx MDA2NDQKLS0tIGEvcGdhZG1pbi91dGlscy90YWJjb21wbGV0ZS5jCisrKyBi L3BnYWRtaW4vdXRpbHMvdGFiY29tcGxldGUuYwpAQCAtNDA4LDggKzQwOCw4 IEBAIHN0YXRpYyBjaGFyICpjb21wbGV0ZV9maWxlbmFtZSgpCiAvKgogICog RW50cnlwb2ludCBmcm9tIHRoZSBDKysgd29ybGQKICAqLwotY2hhciAqdGFi X2NvbXBsZXRlKGNvbnN0IGNoYXIgKmFsbHN0ciwgY29uc3QgaW50IHN0YXJ0 cHRyLCBjb25zdCBpbnQgZW5kcHRyLCB2b2lkICpkYnB0cikKK2NoYXIgKnRh Yl9jb21wbGV0ZShjb25zdCBjaGFyICphbGxzdHIsIGNvbnN0IGludCBzdGFy dHB0ciwgY29uc3QgaW50IGVuZHB0ciwgdm9pZCAqZGJwdHIsIGludCBkYnZt YWpvciwgaW50IGRidm1pbm9yKQogewogCXJsX2xpbmVfYnVmZmVyID0gKGNo YXIgKilhbGxzdHI7Ci0JcmV0dXJuIHBzcWxfY29tcGxldGlvbigoY2hhciAq KShhbGxzdHIgKyBzdGFydHB0ciksIHN0YXJ0cHRyLGVuZHB0cixkYnB0cik7 CisJcmV0dXJuIHBzcWxfY29tcGxldGlvbigoY2hhciAqKShhbGxzdHIgKyBz dGFydHB0ciksIHN0YXJ0cHRyLGVuZHB0cixkYnB0cixkYnZtYWpvcixkYnZt aW5vcik7CiB9Ci0tIAoyLjcuMi53aW5kb3dzLjEKCg== --------------020803080206050307010505 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --------------020803080206050307010505--