Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jklkl-00052H-4F for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Jun 2020 09:50:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jklkk-00009T-1S for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Jun 2020 09:50:06 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jklki-00009F-Fn for pgsql-hackers@lists.postgresql.org; Mon, 15 Jun 2020 09:50:05 +0000 Received: from forward1-smtp.messagingengine.com ([66.111.4.223]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jklkc-0000JR-GT for pgsql-hackers@postgresql.org; Mon, 15 Jun 2020 09:50:03 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailforward.nyi.internal (Postfix) with ESMTP id 954A01940779; Mon, 15 Jun 2020 05:49:56 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Mon, 15 Jun 2020 05:49:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=mQCVGJ zL7Xvgl4gqmQrp4ZCl2xDMmG/+hVRDJ0lr+VU=; b=KtYewR8WfDTTcpH30ff6fb be/6z2xiS4uRIT83XU6FTPV9cBvxpMoufS2mmcKXs89zfkD8XcgLXYGCUo3fS47M 5T0M06FAgpJPNhI0y7bdfo9bbL/Fyhtaay6AiMRsqi6S5oDRfPMRMpp3DvfIcyE1 FkV2d/Gsc76btcZX62KjdEFR1rDCLmVb+NciYNnc1MTG6zu9gcZTcSlCc0mNMG9O 3lTgHcwsW7b9WEkl4Prsr+Q8aQ17RMiVqFdgx7SDpZcUJcUYhJGNnYAnZFX6EQSO LiXI0RvkwTsKDCepx6sTVXb8lMxK6CMBNqbFhpT7icGkt7Juzj+Db+Sud7iSy01A == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduhedrudeikedgvddtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefuvfhfhfhokffffgggjggtsehmtd erredtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghr rdgvihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomheqnecuggftrfgrth htvghrnhepudfgueevieeluefggeeludfghfeuhffhjeehfefgledufedtieevudfggeev gfejnecuffhomhgrihhnpedvnhguqhhurggurhgrnhhtrdgtohhmnecukfhppeelfedrvd egfedrkedvrddvgeeinecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghi lhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhhtsedvnhguqhhurggurhgrnhhtrd gtohhm X-ME-Proxy: Received: from april.pezone.net (p5df352f6.dip0.t-ipconnect.de [93.243.82.246]) by mail.messagingengine.com (Postfix) with ESMTPA id DC4283060FE7; Mon, 15 Jun 2020 05:49:54 -0400 (EDT) Subject: Re: SEARCH and CYCLE clauses To: Vik Fearing , pgsql-hackers References: <54e533c5-09e5-7f41-9892-d4e0f7c62598@postgresfriends.org> <1cfc9079-9595-d167-00e6-5014438cc3e2@2ndquadrant.com> <9ce4d370-048c-1d67-fffb-a86f17120132@postgresfriends.org> From: Peter Eisentraut Organization: 2ndQuadrant Message-ID: <1a7fbf28-7bca-501e-3cbb-04e6776e1716@2ndquadrant.com> Date: Mon, 15 Jun 2020 11:49:53 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <9ce4d370-048c-1d67-fffb-a86f17120132@postgresfriends.org> Content-Type: multipart/mixed; boundary="------------3B8F0BF846A5F5757DFFC1A7" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------3B8F0BF846A5F5757DFFC1A7 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Here is an updated patch that I think fixes all the cases that you identified. (The issue of what kinds of constants or expressions to accept for cycle marks has not been touched.) To fix the star expansion I had to add a little bit of infrastructure that could also be used as a more general facility "don't include this column in star expansion", so this could perhaps use some consideration from a more general angle as well. More tests and breakage reports welcome. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------3B8F0BF846A5F5757DFFC1A7 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v2-0001-SEARCH-and-CYCLE-clauses.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0001-SEARCH-and-CYCLE-clauses.patch" RnJvbSBmNGZjNWY2M2M1M2JhOTU0MDY2ZDM4Zjk2OGY1NGZiOGZiZjc2YzU5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAxNSBKdW4gMjAyMCAxMTo0Mzo1MiArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggdjJdIFNFQVJDSCBhbmQgQ1lDTEUgY2xhdXNlcwoKRGlzY3Vzc2lvbjogaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L2RiODBjZWVlLTZmOTct OWI0YS04ZWU4LTNiYTBjNThlNWJlMkAybmRxdWFkcmFudC5jb20KLS0tCiBkb2Mvc3JjL3Nn bWwvcXVlcmllcy5zZ21sICAgICAgICAgICAgfCAyMDQgKysrKysrKy0KIGRvYy9zcmMvc2dt bC9yZWYvc2VsZWN0LnNnbWwgICAgICAgICB8ICA0MSArKwogc3JjL2JhY2tlbmQvbm9kZXMv Y29weWZ1bmNzLmMgICAgICAgIHwgIDM5ICsrCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1 bmNzLmMgICAgICAgfCAgMzUgKysKIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAg ICAgICB8ICAgNiArCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgfCAg MzUgKysKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICB8ICA0MyArKwog c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgIHwgIDU2ICsrLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5jICAgICAgIHwgMTE3ICsrKysrCiBzcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyAgfCAgNTQgKystCiBzcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdGFyZ2V0LmMgICAgfCAgMjEgKy0KIHNyYy9iYWNrZW5kL3Jld3JpdGUvcmV3 cml0ZUhhbmRsZXIuYyB8IDY3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICB8ICA0NyArKwogc3JjL2luY2x1ZGUv bm9kZXMvbm9kZXMuaCAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCAgICAgICB8ICAyOCArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o ICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICAg ICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGgub3V0ICAgfCAzNjQg KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRoLnNxbCAgICAgICAg fCAxNzkgKysrKysrKwogMTkgZmlsZXMgY2hhbmdlZCwgMTkxNyBpbnNlcnRpb25zKCspLCAz MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcXVlcmllcy5zZ21s IGIvZG9jL3NyYy9zZ21sL3F1ZXJpZXMuc2dtbAppbmRleCA1NzJlOTY4MjczLi5mOThkOGQz ZGMxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcXVlcmllcy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9xdWVyaWVzLnNnbWwKQEAgLTE5NzksNiArMTk3OSwxMCBAQCA8dGl0bGU+PGNv bW1hbmQ+U0VMRUNUPC9jb21tYW5kPiBpbiA8bGl0ZXJhbD5XSVRIPC9saXRlcmFsPjwvdGl0 bGU+CiAgICBidXQgd2UnZCBoYXZlIG5lZWRlZCB0d28gbGV2ZWxzIG9mIG5lc3RlZCBzdWIt PGNvbW1hbmQ+U0VMRUNUPC9jb21tYW5kPnMuICBJdCdzIGEgYml0CiAgICBlYXNpZXIgdG8g Zm9sbG93IHRoaXMgd2F5LgogICA8L3BhcmE+CisgPC9zZWN0Mj4KKworIDxzZWN0MiBpZD0i cXVlcmllcy13aXRoLXJlY3Vyc2l2ZSI+CisgIDx0aXRsZT5SZWN1cnNpdmUgUXVlcmllczwv dGl0bGU+CiAKICAgPHBhcmE+CiAgICA8aW5kZXh0ZXJtPgpAQCAtMjA4Miw2ICsyMDg2LDE0 NCBAQCA8dGl0bGU+UmVjdXJzaXZlIFF1ZXJ5IEV2YWx1YXRpb248L3RpdGxlPgogPC9wcm9n cmFtbGlzdGluZz4KICAgPC9wYXJhPgogCisgIDxzZWN0MyBpZD0icXVlcmllcy13aXRoLXNl YXJjaCI+CisgICA8dGl0bGU+U2VhcmNoIE9yZGVyPC90aXRsZT4KKworICAgPHBhcmE+Cisg ICAgV2hlbiBjb21wdXRpbmcgYSB0cmVlIHRyYXZlcnNhbCB1c2luZyBhIHJlY3Vyc2l2ZSBx dWVyeSwgeW91IG1pZ2h0IHdhbnQgdG8KKyAgICBvcmRlciB0aGUgcmVzdWx0cyBpbiBlaXRo ZXIgZGVwdGgtZmlyc3Qgb3IgYnJlYWR0aC1maXJzdCBvcmRlci4gIFRoaXMgY2FuCisgICAg YmUgZG9uZSBieSBjb21wdXRpbmcgYW4gb3JkZXJpbmcgY29sdW1uIGFsb25nc2lkZSB0aGUg b3RoZXIgZGF0YSBjb2x1bW5zCisgICAgYW5kIHVzaW5nIHRoYXQgdG8gc29ydCB0aGUgcmVz dWx0cyBhdCB0aGUgZW5kLiAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyAgICBhY3R1YWxs eSBjb250cm9sIGluIHdoaWNoIG9yZGVyIHRoZSBxdWVyeSBldmFsdWF0aW9uIHZpc2l0cyB0 aGUgcm93czsgdGhhdAorICAgIGlzIGFzIGFsd2F5cyBpbiBTUUwgaW1wbGVtZW50YXRpb24t ZGVwZW5kZW50LiAgVGhpcyBhcHByb2FjaCBtZXJlbHkKKyAgICBwcm92aWRlcyBhIGNvbnZl bmllbnQgd2F5IHRvIG9yZGVyIHRoZSByZXN1bHRzIGFmdGVyd2FyZHMuCisgICA8L3BhcmE+ CisKKyAgIDxwYXJhPgorICAgIFRvIGNyZWF0ZSBhIGRlcHRoLWZpcnN0IG9yZGVyLCB3ZSBj b21wdXRlIGZvciBlYWNoIHJlc3VsdCByb3cgYW4gYXJyYXkgb2YKKyAgICByb3dzIHRoYXQg d2UgaGF2ZSB2aXNpdGVkIHNvIGZhci4gIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9s bG93aW5nCisgICAgcXVlcnkgdGhhdCBzZWFyY2hlcyBhIHRhYmxlIDxzdHJ1Y3RuYW1lPnRy ZWU8L3N0cnVjdG5hbWU+IHVzaW5nIGEKKyAgICA8c3RydWN0ZmllbGQ+bGluazwvc3RydWN0 ZmllbGQ+IGZpZWxkOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitXSVRIIFJFQ1VSU0lWRSBzZWFy Y2hfdHJlZShpZCwgbGluaywgZGF0YSkgQVMgKAorICAgIFNFTEVDVCB0LmlkLCB0Lmxpbmss IHQuZGF0YQorICAgIEZST00gdHJlZSB0CisgIFVOSU9OIEFMTAorICAgIFNFTEVDVCB0Lmlk LCB0LmxpbmssIHQuZGF0YQorICAgIEZST00gdHJlZSB0LCBzZWFyY2hfdHJlZSBzdAorICAg IFdIRVJFIHQuaWQgPSBzdC5saW5rCispCitTRUxFQ1QgKiBGUk9NIHNlYXJjaF90cmVlOwor PC9wcm9ncmFtbGlzdGluZz4KKworICAgIFRvIGFkZCBkZXB0aC1maXJzdCBvcmRlcmluZyBp bmZvcm1hdGlvbiwgeW91IGNhbiB3cml0ZSB0aGlzOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitX SVRIIFJFQ1VSU0lWRSBzZWFyY2hfdHJlZShpZCwgbGluaywgZGF0YSwgPGVtcGhhc2lzPnBh dGg8L2VtcGhhc2lzPikgQVMgKAorICAgIFNFTEVDVCB0LmlkLCB0LmxpbmssIHQuZGF0YSwg PGVtcGhhc2lzPkFSUkFZW3QuaWRdPC9lbXBoYXNpcz4KKyAgICBGUk9NIHRyZWUgdAorICBV TklPTiBBTEwKKyAgICBTRUxFQ1QgdC5pZCwgdC5saW5rLCB0LmRhdGEsIDxlbXBoYXNpcz5w YXRoIHx8IHQuaWQ8L2VtcGhhc2lzPgorICAgIEZST00gdHJlZSB0LCBzZWFyY2hfdHJlZSBz dAorICAgIFdIRVJFIHQuaWQgPSBzdC5saW5rCispCitTRUxFQ1QgKiBGUk9NIHNlYXJjaF90 cmVlIDxlbXBoYXNpcz5PUkRFUiBCWSBwYXRoPC9lbXBoYXNpcz47Cis8L3Byb2dyYW1saXN0 aW5nPgorICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgSW4gdGhlIGdlbmVyYWwgY2FzZSB3 aGVyZSBtb3JlIHRoYW4gb25lIGZpZWxkIG5lZWRzIHRvIGJlIHVzZWQgdG8gaWRlbnRpZnkK KyAgIGEgcm93LCB1c2UgYW4gYXJyYXkgb2Ygcm93cy4gIEZvciBleGFtcGxlLCBpZiB3ZSBu ZWVkZWQgdG8gdHJhY2sgZmllbGRzCisgICA8c3RydWN0ZmllbGQ+ZjE8L3N0cnVjdGZpZWxk PiBhbmQgPHN0cnVjdGZpZWxkPmYyPC9zdHJ1Y3RmaWVsZD46CisKKzxwcm9ncmFtbGlzdGlu Zz4KK1dJVEggUkVDVVJTSVZFIHNlYXJjaF90cmVlKGlkLCBsaW5rLCBkYXRhLCA8ZW1waGFz aXM+cGF0aDwvZW1waGFzaXM+KSBBUyAoCisgICAgU0VMRUNUIHQuaWQsIHQubGluaywgdC5k YXRhLCA8ZW1waGFzaXM+QVJSQVlbUk9XKGcuZjEsIGcuZjIpXTwvZW1waGFzaXM+CisgICAg RlJPTSB0cmVlIHQKKyAgVU5JT04gQUxMCisgICAgU0VMRUNUIHQuaWQsIHQubGluaywgdC5k YXRhLCA8ZW1waGFzaXM+cGF0aCB8fCBST1coZy5mMSwgZy5mMik8L2VtcGhhc2lzPgorICAg IEZST00gdHJlZSB0LCBzZWFyY2hfdHJlZSBzdAorICAgIFdIRVJFIHQuaWQgPSBzdC5saW5r CispCitTRUxFQ1QgKiBGUk9NIHNlYXJjaF90cmVlIDxlbXBoYXNpcz5PUkRFUiBCWSBwYXRo PC9lbXBoYXNpcz47Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHRpcD4K KyAgIDxwYXJhPgorICAgIE9taXQgdGhlIDxsaXRlcmFsPlJPVygpPC9saXRlcmFsPiBzeW50 YXggaW4gdGhlIGNvbW1vbiBjYXNlIHdoZXJlIG9ubHkgb25lCisgICAgZmllbGQgbmVlZHMg dG8gYmUgdHJhY2tlZC4gIFRoaXMgYWxsb3dzIGEgc2ltcGxlIGFycmF5IHJhdGhlciB0aGFu IGEKKyAgICBjb21wb3NpdGUtdHlwZSBhcnJheSB0byBiZSB1c2VkLCBnYWluaW5nIGVmZmlj aWVuY3kuCisgICA8L3BhcmE+CisgIDwvdGlwPgorCisgIDxwYXJhPgorICAgVG8gY3JlYXRl IGEgYnJlYWR0aC1maXJzdCBvcmRlciwgeW91IGNhbiBhZGQgYSBjb2x1bW4gdGhhdCB0cmFj a3MgdGhlIGRlcHRoCisgICBvZiB0aGUgc2VhcmNoLCBmb3IgZXhhbXBsZToKKworPHByb2dy YW1saXN0aW5nPgorV0lUSCBSRUNVUlNJVkUgc2VhcmNoX3RyZWUoaWQsIGxpbmssIGRhdGEs IDxlbXBoYXNpcz5sZXZlbDwvZW1waGFzaXM+KSBBUyAoCisgICAgU0VMRUNUIHQuaWQsIHQu bGluaywgdC5kYXRhLCA8ZW1waGFzaXM+MDwvZW1waGFzaXM+CisgICAgRlJPTSB0cmVlIHQK KyAgVU5JT04gQUxMCisgICAgU0VMRUNUIHQuaWQsIHQubGluaywgdC5kYXRhLCA8ZW1waGFz aXM+bGV2ZWwgKyAxPC9lbXBoYXNpcz4KKyAgICBGUk9NIHRyZWUgdCwgc2VhcmNoX3RyZWUg c3QKKyAgICBXSEVSRSB0LmlkID0gc3QubGluaworKQorU0VMRUNUICogRlJPTSBzZWFyY2hf dHJlZSA8ZW1waGFzaXM+T1JERVIgQlkgbGV2ZWw8L2VtcGhhc2lzPjsKKzwvcHJvZ3JhbWxp c3Rpbmc+CisKKyAgIFRvIGdldCBhIHN0YWJsZSBzb3J0LCBhZGQgZGF0YSBjb2x1bW5zIGFz IHNlY29uZGFyeSBzb3J0aW5nIGNvbHVtbnMuCisgIDwvcGFyYT4KKworICA8dGlwPgorICAg PHBhcmE+CisgICAgVGhlIHJlY3Vyc2l2ZSBxdWVyeSBldmFsdWF0aW9uIGFsZ29yaXRobSBw cm9kdWNlcyBpdHMgb3V0cHV0IGluCisgICAgYnJlYWR0aC1maXJzdCBzZWFyY2ggb3JkZXIu ICBIb3dldmVyLCB0aGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBhbmQKKyAgICBp dCBpcyBwZXJoYXBzIHVuc291bmQgdG8gcmVseSBvbiBpdC4gIFRoZSBvcmRlciBvZiB0aGUg cm93cyB3aXRoaW4gZWFjaAorICAgIGxldmVsIGlzIGNlcnRhaW5seSB1bmRlZmluZWQsIHNv IHNvbWUgZXhwbGljaXQgb3JkZXJpbmcgbWlnaHQgYmUgZGVzaXJlZAorICAgIGluIGFueSBj YXNlLgorICAgPC9wYXJhPgorICA8L3RpcD4KKworICA8cGFyYT4KKyAgIFRoZXJlIGlzIGJ1 aWx0LWluIHN5bnRheCB0byBjb21wdXRlIGEgZGVwdGgtIG9yIGJyZWFkdGgtZmlyc3Qgc29y dCBjb2x1bW4uCisgICBGb3IgZXhhbXBsZToKKworPHByb2dyYW1saXN0aW5nPgorV0lUSCBS RUNVUlNJVkUgc2VhcmNoX3RyZWUoaWQsIGxpbmssIGRhdGEpIEFTICgKKyAgICBTRUxFQ1Qg dC5pZCwgdC5saW5rLCB0LmRhdGEKKyAgICBGUk9NIHRyZWUgdAorICBVTklPTiBBTEwKKyAg ICBTRUxFQ1QgdC5pZCwgdC5saW5rLCB0LmRhdGEKKyAgICBGUk9NIHRyZWUgdCwgc2VhcmNo X3RyZWUgc3QKKyAgICBXSEVSRSB0LmlkID0gc3QubGluaworKSA8ZW1waGFzaXM+U0VBUkNI IERFUFRIIEZJUlNUIEJZIGlkIFNFVCBvcmRlcmNvbDwvZW1waGFzaXM+CitTRUxFQ1QgKiBG Uk9NIHNlYXJjaF90cmVlIE9SREVSIEJZIG9yZGVyY29sOworCitXSVRIIFJFQ1VSU0lWRSBz ZWFyY2hfdHJlZShpZCwgbGluaywgZGF0YSkgQVMgKAorICAgIFNFTEVDVCB0LmlkLCB0Lmxp bmssIHQuZGF0YQorICAgIEZST00gdHJlZSB0CisgIFVOSU9OIEFMTAorICAgIFNFTEVDVCB0 LmlkLCB0LmxpbmssIHQuZGF0YQorICAgIEZST00gdHJlZSB0LCBzZWFyY2hfdHJlZSBzdAor ICAgIFdIRVJFIHQuaWQgPSBzdC5saW5rCispIDxlbXBoYXNpcz5TRUFSQ0ggQlJFQURUSCBG SVJTVCBCWSBpZCBTRVQgb3JkZXJjb2w8L2VtcGhhc2lzPgorU0VMRUNUICogRlJPTSBzZWFy Y2hfdHJlZSBPUkRFUiBCWSBvcmRlcmNvbDsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICBUaGlz IHN5bnRheCBpcyBpbnRlcm5hbGx5IGV4cGFuZGVkIHRvIHNvbWV0aGluZyBzaW1pbGFyIHRv IHRoZSBhYm92ZQorICAgaGFuZC13cml0dGVuIGZvcm1zLiAgVGhlIDxsaXRlcmFsPlNFQVJD SDwvbGl0ZXJhbD4gY2xhdXNlIHNwZWNpZmllcyB3aGV0aGVyCisgICBkZXB0aC0gb3IgYnJl YWR0aCBmaXJzdCBzZWFyY2ggaXMgd2FudGVkLCB0aGUgbGlzdCBvZiBjb2x1bW5zIHRvIHRy YWNrIGZvcgorICAgc29ydGluZywgYW5kIGEgY29sdW1uIG5hbWUgdGhhdCB3aWxsIGNvbnRh aW4gdGhlIHJlc3VsdCBkYXRhIHRoYXQgY2FuIGJlCisgICB1c2VkIGZvciBzb3J0aW5nLiAg VGhhdCBjb2x1bW4gd2lsbCBpbXBsaWNpdGx5IGJlIGFkZGVkIHRvIHRoZSBvdXRwdXQgcm93 cworICAgb2YgdGhlIENURS4KKyAgPC9wYXJhPgorICA8L3NlY3QzPgorCisgIDxzZWN0MyBp ZD0icXVlcmllcy13aXRoLWN5Y2xlIj4KKyAgIDx0aXRsZT5DeWNsZSBEZXRlY3Rpb248L3Rp dGxlPgorCiAgIDxwYXJhPgogICAgV2hlbiB3b3JraW5nIHdpdGggcmVjdXJzaXZlIHF1ZXJp ZXMgaXQgaXMgaW1wb3J0YW50IHRvIGJlIHN1cmUgdGhhdAogICAgdGhlIHJlY3Vyc2l2ZSBw YXJ0IG9mIHRoZSBxdWVyeSB3aWxsIGV2ZW50dWFsbHkgcmV0dXJuIG5vIHR1cGxlcywKQEAg LTIxMTIsMTggKzIyNTQsMTggQEAgPHRpdGxlPlJlY3Vyc2l2ZSBRdWVyeSBFdmFsdWF0aW9u PC90aXRsZT4KICAgIDxsaXRlcmFsPlVOSU9OIEFMTDwvbGl0ZXJhbD4gdG8gPGxpdGVyYWw+ VU5JT048L2xpdGVyYWw+IHdvdWxkIG5vdCBlbGltaW5hdGUgdGhlIGxvb3BpbmcuCiAgICBJ bnN0ZWFkIHdlIG5lZWQgdG8gcmVjb2duaXplIHdoZXRoZXIgd2UgaGF2ZSByZWFjaGVkIHRo ZSBzYW1lIHJvdyBhZ2FpbgogICAgd2hpbGUgZm9sbG93aW5nIGEgcGFydGljdWxhciBwYXRo IG9mIGxpbmtzLiAgV2UgYWRkIHR3byBjb2x1bW5zCi0gICA8c3RydWN0ZmllbGQ+cGF0aDwv c3RydWN0ZmllbGQ+IGFuZCA8c3RydWN0ZmllbGQ+Y3ljbGU8L3N0cnVjdGZpZWxkPiB0byB0 aGUgbG9vcC1wcm9uZSBxdWVyeToKKyAgIDxzdHJ1Y3RmaWVsZD5pc19jeWNsZTwvc3RydWN0 ZmllbGQ+IGFuZCA8c3RydWN0ZmllbGQ+cGF0aDwvc3RydWN0ZmllbGQ+IHRvIHRoZSBsb29w LXByb25lIHF1ZXJ5OgogCiA8cHJvZ3JhbWxpc3Rpbmc+Ci1XSVRIIFJFQ1VSU0lWRSBzZWFy Y2hfZ3JhcGgoaWQsIGxpbmssIGRhdGEsIGRlcHRoLCBwYXRoLCBjeWNsZSkgQVMgKAorV0lU SCBSRUNVUlNJVkUgc2VhcmNoX2dyYXBoKGlkLCBsaW5rLCBkYXRhLCBkZXB0aCwgaXNfY3lj bGUsIHBhdGgpIEFTICgKICAgICBTRUxFQ1QgZy5pZCwgZy5saW5rLCBnLmRhdGEsIDEsCi0g ICAgICBBUlJBWVtnLmlkXSwKLSAgICAgIGZhbHNlCisgICAgICBmYWxzZSwKKyAgICAgIEFS UkFZW2cuaWRdCiAgICAgRlJPTSBncmFwaCBnCiAgIFVOSU9OIEFMTAogICAgIFNFTEVDVCBn LmlkLCBnLmxpbmssIGcuZGF0YSwgc2cuZGVwdGggKyAxLAotICAgICAgcGF0aCB8fCBnLmlk LAotICAgICAgZy5pZCA9IEFOWShwYXRoKQorICAgICAgZy5pZCA9IEFOWShwYXRoKSwKKyAg ICAgIHBhdGggfHwgZy5pZAogICAgIEZST00gZ3JhcGggZywgc2VhcmNoX2dyYXBoIHNnCiAg ICAgV0hFUkUgZy5pZCA9IHNnLmxpbmsgQU5EIE5PVCBjeWNsZQogKQpAQCAtMjE0MCwxNSAr MjI4MiwxNSBAQCA8dGl0bGU+UmVjdXJzaXZlIFF1ZXJ5IEV2YWx1YXRpb248L3RpdGxlPgog ICAgY29tcGFyZSBmaWVsZHMgPHN0cnVjdGZpZWxkPmYxPC9zdHJ1Y3RmaWVsZD4gYW5kIDxz dHJ1Y3RmaWVsZD5mMjwvc3RydWN0ZmllbGQ+OgogCiA8cHJvZ3JhbWxpc3Rpbmc+Ci1XSVRI IFJFQ1VSU0lWRSBzZWFyY2hfZ3JhcGgoaWQsIGxpbmssIGRhdGEsIGRlcHRoLCBwYXRoLCBj eWNsZSkgQVMgKAorV0lUSCBSRUNVUlNJVkUgc2VhcmNoX2dyYXBoKGlkLCBsaW5rLCBkYXRh LCBkZXB0aCwgaXNfY3ljbGUsIHBhdGgpIEFTICgKICAgICBTRUxFQ1QgZy5pZCwgZy5saW5r LCBnLmRhdGEsIDEsCi0gICAgICBBUlJBWVtST1coZy5mMSwgZy5mMildLAotICAgICAgZmFs c2UKKyAgICAgIGZhbHNlLAorICAgICAgQVJSQVlbUk9XKGcuZjEsIGcuZjIpXQogICAgIEZS T00gZ3JhcGggZwogICBVTklPTiBBTEwKICAgICBTRUxFQ1QgZy5pZCwgZy5saW5rLCBnLmRh dGEsIHNnLmRlcHRoICsgMSwKLSAgICAgIHBhdGggfHwgUk9XKGcuZjEsIGcuZjIpLAotICAg ICAgUk9XKGcuZjEsIGcuZjIpID0gQU5ZKHBhdGgpCisgICAgICBST1coZy5mMSwgZy5mMikg PSBBTlkocGF0aCksCisgICAgICBwYXRoIHx8IFJPVyhnLmYxLCBnLmYyKQogICAgIEZST00g Z3JhcGggZywgc2VhcmNoX2dyYXBoIHNnCiAgICAgV0hFUkUgZy5pZCA9IHNnLmxpbmsgQU5E IE5PVCBjeWNsZQogKQpAQCAtMjE2NCwxMiArMjMwNiwzOSBAQCA8dGl0bGU+UmVjdXJzaXZl IFF1ZXJ5IEV2YWx1YXRpb248L3RpdGxlPgogICAgPC9wYXJhPgogICA8L3RpcD4KIAorICA8 cGFyYT4KKyAgIFRoZXJlIGlzIGJ1aWx0LWluIHN5bnRheCB0byBzaW1wbGlmeSBjeWNsZSBk ZXRlY3Rpb24uICBUaGUgYWJvdmUgcXVlcnkgY2FuCisgICBhbHNvIGJlIHdyaXR0ZW4gbGlr ZSB0aGlzOgorPHByb2dyYW1saXN0aW5nPgorV0lUSCBSRUNVUlNJVkUgc2VhcmNoX2dyYXBo KGlkLCBsaW5rLCBkYXRhLCBkZXB0aCkgQVMgKAorICAgIFNFTEVDVCBnLmlkLCBnLmxpbmss IGcuZGF0YSwgMQorICAgIEZST00gZ3JhcGggZworICBVTklPTiBBTEwKKyAgICBTRUxFQ1Qg Zy5pZCwgZy5saW5rLCBnLmRhdGEsIHNnLmRlcHRoICsgMQorICAgIEZST00gZ3JhcGggZywg c2VhcmNoX2dyYXBoIHNnCisgICAgV0hFUkUgZy5pZCA9IHNnLmxpbmsKKykgPGVtcGhhc2lz PkNZQ0xFIGlkLCBsaW5rIFNFVCBpc19jeWNsZSBUTyB0cnVlIERFRkFVTFQgZmFsc2UgVVNJ TkcgcGF0aDwvZW1waGFzaXM+CitTRUxFQ1QgKiBGUk9NIHNlYXJjaF9ncmFwaDsKKzwvcHJv Z3JhbWxpc3Rpbmc+CisgICBhbmQgaXQgd2lsbCBiZSBpbnRlcm5hbGx5IHJld3JpdHRlbiB0 byB0aGUgYWJvdmUgZm9ybS4gIFRoZQorICAgPGxpdGVyYWw+Q1lDTEU8L2xpdGVyYWw+IGNs YXVzZSBzcGVjaWZpZXMgZmlyc3QgdGhlIGxpc3Qgb2YgY29sdW1ucyB0bworICAgdHJhY2sg Zm9yIGN5Y2xlIGRldGVjdGlvbiwgdGhlbiBhIGNvbHVtbiBuYW1lIHRoYXQgd2lsbCBzaG93 IHdoZXRoZXIgYQorICAgY3ljbGUgaGFzIGJlZW4gZGV0ZWN0ZWQsIHRoZW4gdHdvIHZhbHVl cyB0byB1c2UgaW4gdGhhdCBjb2x1bW4gZm9yIHRoZSB5ZXMKKyAgIGFuZCBubyBjYXNlcywg YW5kIGZpbmFsbHkgdGhlIG5hbWUgb2YgYW5vdGhlciBjb2x1bW4gdGhhdCB3aWxsIHRyYWNr IHRoZQorICAgcGF0aC4gIFRoZSBjeWNsZSBhbmQgcGF0aCBjb2x1bW5zIHdpbGwgaW1wbGlj aXRseSBiZSBhZGRlZCB0byB0aGUgb3V0cHV0CisgICByb3dzIG9mIHRoZSBDVEUuCisgIDwv cGFyYT4KKwogICA8dGlwPgogICAgPHBhcmE+Ci0gICAgVGhlIHJlY3Vyc2l2ZSBxdWVyeSBl dmFsdWF0aW9uIGFsZ29yaXRobSBwcm9kdWNlcyBpdHMgb3V0cHV0IGluCi0gICAgYnJlYWR0 aC1maXJzdCBzZWFyY2ggb3JkZXIuICBZb3UgY2FuIGRpc3BsYXkgdGhlIHJlc3VsdHMgaW4g ZGVwdGgtZmlyc3QKLSAgICBzZWFyY2ggb3JkZXIgYnkgbWFraW5nIHRoZSBvdXRlciBxdWVy eSA8bGl0ZXJhbD5PUkRFUiBCWTwvbGl0ZXJhbD4gYQotICAgIDxxdW90ZT5wYXRoPC9xdW90 ZT4gY29sdW1uIGNvbnN0cnVjdGVkIGluIHRoaXMgd2F5LgorICAgIFRoZSBjeWNsZSBwYXRo IGNvbHVtbiBpcyBjb21wdXRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIGRlcHRoLWZpcnN0 CisgICAgb3JkZXJpbmcgY29sdW1uIHNob3cgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uICBB IHF1ZXJ5IGNhbiBoYXZlIGJvdGggYQorICAgIDxsaXRlcmFsPlNFQVJDSDwvbGl0ZXJhbD4g YW5kIGEgPGxpdGVyYWw+Q1lDTEU8L2xpdGVyYWw+IGNsYXVzZSwgYnV0IGEKKyAgICBkZXB0 aC1maXJzdCBzZWFyY2ggc3BlY2lmaWNhdGlvbiBhbmQgYSBjeWNsZSBkZXRlY3Rpb24gc3Bl Y2lmaWNhdGlvbiB3b3VsZAorICAgIGNyZWF0ZSByZWR1bmRhbnQgY29tcHV0YXRpb25zLCBz byBpdCdzIG1vcmUgZWZmaWNpZW50IHRvIGp1c3QgdXNlIHRoZQorICAgIDxsaXRlcmFsPkNZ Q0xFPC9saXRlcmFsPiBjbGF1c2UgYW5kIG9yZGVyIGJ5IHRoZSBwYXRoIGNvbHVtbi4gIElm CisgICAgYnJlYWR0aC1maXJzdCBvcmRlcmluZyBpcyB3YW50ZWQsIHRoZW4gc3BlY2lmeWlu ZyBib3RoCisgICAgPGxpdGVyYWw+U0VBUkNIPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+Q1lD TEU8L2xpdGVyYWw+IGNhbiBiZSB1c2VmdWwuCiAgICA8L3BhcmE+CiAgIDwvdGlwPgogCkBA IC0yMTk3LDYgKzIzNjYsMTEgQEAgPHRpdGxlPlJlY3Vyc2l2ZSBRdWVyeSBFdmFsdWF0aW9u PC90aXRsZT4KICAgIG91dGVyIHF1ZXJ5IHdpbGwgdXN1YWxseSB0cnkgdG8gZmV0Y2ggYWxs IG9mIHRoZSA8bGl0ZXJhbD5XSVRIPC9saXRlcmFsPiBxdWVyeSdzCiAgICBvdXRwdXQgYW55 d2F5LgogICA8L3BhcmE+CisgIDwvc2VjdDM+CisgPC9zZWN0Mj4KKworIDxzZWN0Mj4KKyAg PHRpdGxlPkNvbW1vbiBUYWJsZSBFeHByZXNzaW9uIE1hdGVyaWFsaXphdGlvbjwvdGl0bGU+ CiAKICAgPHBhcmE+CiAgICBBIHVzZWZ1bCBwcm9wZXJ0eSBvZiA8bGl0ZXJhbD5XSVRIPC9s aXRlcmFsPiBxdWVyaWVzIGlzIHRoYXQgdGhleSBhcmUKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvc2VsZWN0LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sCmlu ZGV4IGI5M2U0Y2EyMDguLjhjYjM1ZTFkMGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvc2VsZWN0LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dtbApAQCAt NzMsNiArNzMsOCBAQAogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPndpdGhfcXVlcnk8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAogICAgIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53aXRoX3F1ZXJ5X25hbWU8L3JlcGxhY2VhYmxl PiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gWywgLi4uXSApIF0gQVMgWyBbIE5PVCBdIE1BVEVSSUFMSVpFRCBdICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlbGVjdDwvcmVwbGFjZWFibGU+IHwgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlczwvcmVwbGFjZWFibGU+IHwgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluc2VydDwvcmVwbGFjZWFibGU+IHwgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnVwZGF0ZTwvcmVwbGFjZWFibGU+IHwgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRlbGV0ZTwvcmVwbGFjZWFibGU+ICkKKyAg ICAgICAgWyBTRUFSQ0ggeyBCUkVBRFRIIHwgREVQVEggfSBGSVJTVCBCWSA8cmVwbGFjZWFi bGU+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFNFVCA8cmVwbGFjZWFibGU+ c2VhcmNoX3NlcV9jb2xfbmFtZTwvcmVwbGFjZWFibGU+IF0KKyAgICAgICAgWyBDWUNMRSA8 cmVwbGFjZWFibGU+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFNFVCA8cmVw bGFjZWFibGU+Y3ljbGVfbWFya19jb2xfbmFtZTwvcmVwbGFjZWFibGU+IFRPIDxyZXBsYWNl YWJsZT5jeWNsZV9tYXJrX3ZhbHVlPC9yZXBsYWNlYWJsZT4gREVGQVVMVCA8cmVwbGFjZWFi bGU+Y3ljbGVfbWFya19kZWZhdWx0PC9yZXBsYWNlYWJsZT4gVVNJTkcgPHJlcGxhY2VhYmxl PmN5Y2xlX3BhdGhfY29sX25hbWU8L3JlcGxhY2VhYmxlPiBdCiAKIFRBQkxFIFsgT05MWSBd IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJs ZT4gWyAqIF0KIDwvc3lub3BzaXM+CkBAIC0yNzYsNiArMjc4LDQ1IEBAIDx0aXRsZT48bGl0 ZXJhbD5XSVRIPC9saXRlcmFsPiBDbGF1c2U8L3RpdGxlPgogICAgIHF1ZXJpZXMgdGhhdCBk byBub3QgdXNlIHJlY3Vyc2lvbiBvciBmb3J3YXJkIHJlZmVyZW5jZXMuCiAgICA8L3BhcmE+ CiAKKyAgIDxwYXJhPgorICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5TRUFSQ0g8L2xpdGVy YWw+IGNsYXVzZSBjb21wdXRlcyBhIDxmaXJzdHRlcm0+c2VhcmNoCisgICAgc2VxdWVuY2Ug Y29sdW1uPC9maXJzdHRlcm0+IHRoYXQgY2FuIGJlIHVzZWQgZm9yIG9yZGVyaW5nIHRoZSBy ZXN1bHRzIG9mIGEKKyAgICByZWN1cnNpdmUgcXVlcnkgaW4gZWl0aGVyIGJyZWFkdGgtZmly c3Qgb3IgZGVwdGgtZmlyc3Qgb3JkZXIuICBUaGUKKyAgICBzdXBwbGllZCBjb2x1bW4gbmFt ZSBsaXN0IHNwZWNpZmllcyB0aGUgcm93IGtleSB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yCisg ICAga2VlcGluZyB0cmFjayBvZiB2aXNpdGVkIHJvd3MuICBBIGNvbHVtbiBuYW1lZAorICAg IDxyZXBsYWNlYWJsZT5zZWFyY2hfc2VxX2NvbF9uYW1lPC9yZXBsYWNlYWJsZT4gd2lsbCBi ZSBhZGRlZCB0byB0aGUgcmVzdWx0CisgICAgY29sdW1uIGxpc3Qgb2YgdGhlIDxsaXRlcmFs PldJVEg8L2xpdGVyYWw+IHF1ZXJ5LiAgVGhpcyBjb2x1bW4gY2FuIGJlCisgICAgb3JkZXJl ZCBieSBpbiB0aGUgb3V0ZXIgcXVlcnkgdG8gYWNoaWV2ZSB0aGUgcmVzcGVjdGl2ZSBvcmRl cmluZy4gIFNlZQorICAgIDx4cmVmIGxpbmtlbmQ9InF1ZXJpZXMtd2l0aC1zZWFyY2giLz4g Zm9yIGV4YW1wbGVzLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBUaGUgb3B0aW9u YWwgPGxpdGVyYWw+Q1lDTEU8L2xpdGVyYWw+IGNsYXVzZSBpcyB1c2VkIHRvIGRldGVjdCBj eWNsZXMgaW4KKyAgICByZWN1cnNpdmUgcXVlcmllcy4gIFRoZSBzdXBwbGllZCBjb2x1bW4g bmFtZSBsaXN0IHNwZWNpZmllcyB0aGUgcm93IGtleQorICAgIHRoYXQgaXMgdG8gYmUgdXNl ZCBmb3Iga2VlcGluZyB0cmFjayBvZiB2aXNpdGVkIHJvd3MuICBBIGNvbHVtbiBuYW1lZAor ICAgIDxyZXBsYWNlYWJsZT5jeWNsZV9tYXJrX2NvbF9uYW1lPC9yZXBsYWNlYWJsZT4gd2ls bCBiZSBhZGRlZCB0byB0aGUgcmVzdWx0CisgICAgY29sdW1uIGxpc3Qgb2YgdGhlIDxsaXRl cmFsPldJVEg8L2xpdGVyYWw+IHF1ZXJ5LiAgVGhpcyBjb2x1bW4gd2lsbCBiZSBzZXQKKyAg ICB0byA8cmVwbGFjZWFibGU+Y3ljbGVfbWFya192YWx1ZTwvcmVwbGFjZWFibGU+IHdoZW4g YSBjeWNsZSBoYXMgYmVlbgorICAgIGRldGVjdGVkLCBlbHNlIHRvIDxyZXBsYWNlYWJsZT5j eWNsZV9tYXJrX2RlZmF1bHQ8L3JlcGxhY2VhYmxlPi4KKyAgICBGdXJ0aGVybW9yZSwgcHJv Y2Vzc2luZyBvZiB0aGUgcmVjdXJzaXZlIHVuaW9uIHdpbGwgc3RvcCB3aGVuIGEgY3ljbGUg aGFzCisgICAgYmVlbiBkZXRlY3RlZC4gIDxyZXBsYWNlYWJsZT5jeWNsZV9tYXJrX3ZhbHVl PC9yZXBsYWNlYWJsZT4gYW5kCisgICAgPHJlcGxhY2VhYmxlPmN5Y2xlX21hcmtfZGVmYXVs dDwvcmVwbGFjZWFibGU+IG11c3QgYmUgY29uc3RhbnRzIGFuZCB0aGV5CisgICAgbXVzdCBi ZSBjb2VyY2libGUgdG8gYSBjb21tb24gZGF0YSB0eXBlLCBhbmQgdGhlIGRhdGEgdHlwZSBt dXN0IGhhdmUgYW4KKyAgICBpbmVxdWFsaXR5IG9wZXJhdG9yLiAgKFRoZSBTUUwgc3RhbmRh cmQgcmVxdWlyZXMgdGhhdCB0aGV5IGJlIGNoYXJhY3RlcgorICAgIHN0cmluZ3MsIGJ1dCBQ b3N0Z3JlU1FMIGRvZXMgbm90IHJlcXVpcmUgdGhhdC4pICBGdXJ0aGVybW9yZSwgYSBjb2x1 bW4KKyAgICBuYW1lZCA8cmVwbGFjZWFibGU+Y3ljbGVfcGF0aF9jb2xfbmFtZTwvcmVwbGFj ZWFibGU+IHdpbGwgYmUgYWRkZWQgdG8gdGhlCisgICAgcmVzdWx0IGNvbHVtbiBsaXN0IG9m IHRoZSA8bGl0ZXJhbD5XSVRIPC9saXRlcmFsPiBxdWVyeS4gIFRoaXMgY29sdW1uIGlzCisg ICAgdXNlZCBpbnRlcm5hbGx5IGZvciB0cmFja2luZyB2aXNpdGVkIHJvd3MuICBTZWUgPHhy ZWYKKyAgICBsaW5rZW5kPSJxdWVyaWVzLXdpdGgtY3ljbGUiLz4gZm9yIGV4YW1wbGVzLgor ICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBCb3RoIHRoZSA8bGl0ZXJhbD5TRUFSQ0g8 L2xpdGVyYWw+IGFuZCB0aGUgPGxpdGVyYWw+Q1lDTEU8L2xpdGVyYWw+IGNsYXVzZQorICAg IGFyZSBvbmx5IHZhbGlkIGZvciByZWN1cnNpdmUgPGxpdGVyYWw+V0lUSDwvbGl0ZXJhbD4g cXVlcmllcy4gIElmIGJvdGgKKyAgICBjbGF1c2VzIGFyZSB1c2VkLCB0aGUgY29sdW1uIGFk ZGVkIGJ5IHRoZSA8bGl0ZXJhbD5TRUFSQ0g8L2xpdGVyYWw+IGNsYXVzZQorICAgIGFwcGVh ciBiZWZvcmUgdGhlIGNvbHVtbnMgYWRkZWQgYnkgdGhlIDxsaXRlcmFsPkNZQ0xFPC9saXRl cmFsPiBjbGF1c2UuCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIFRoZSBwcmltYXJ5 IHF1ZXJ5IGFuZCB0aGUgPGxpdGVyYWw+V0lUSDwvbGl0ZXJhbD4gcXVlcmllcyBhcmUgYWxs CiAgICAgKG5vdGlvbmFsbHkpIGV4ZWN1dGVkIGF0IHRoZSBzYW1lIHRpbWUuICBUaGlzIGlt cGxpZXMgdGhhdCB0aGUgZWZmZWN0cyBvZgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCBk OGNmODdlNmQwLi44NzFmOWI0Nzg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9j b3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtMjU4 OCw2ICsyNTg4LDM3IEBAIF9jb3B5T25Db25mbGljdENsYXVzZShjb25zdCBPbkNvbmZsaWN0 Q2xhdXNlICpmcm9tKQogCXJldHVybiBuZXdub2RlOwogfQogCitzdGF0aWMgQ1RFU2VhcmNo Q2xhdXNlICoKK19jb3B5Q1RFU2VhcmNoQ2xhdXNlKGNvbnN0IENURVNlYXJjaENsYXVzZSAq ZnJvbSkKK3sKKwlDVEVTZWFyY2hDbGF1c2UgKm5ld25vZGUgPSBtYWtlTm9kZShDVEVTZWFy Y2hDbGF1c2UpOworCisJQ09QWV9OT0RFX0ZJRUxEKHNlYXJjaF9jb2xfbGlzdCk7CisJQ09Q WV9TQ0FMQVJfRklFTEQoc2VhcmNoX2JyZWFkdGhfZmlyc3QpOworCUNPUFlfU1RSSU5HX0ZJ RUxEKHNlYXJjaF9zZXFfY29sdW1uKTsKKwlDT1BZX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9u KTsKKworCXJldHVybiBuZXdub2RlOworfQorCitzdGF0aWMgQ1RFQ3ljbGVDbGF1c2UgKgor X2NvcHlDVEVDeWNsZUNsYXVzZShjb25zdCBDVEVDeWNsZUNsYXVzZSAqZnJvbSkKK3sKKwlD VEVDeWNsZUNsYXVzZSAqbmV3bm9kZSA9IG1ha2VOb2RlKENURUN5Y2xlQ2xhdXNlKTsKKwor CUNPUFlfTk9ERV9GSUVMRChjeWNsZV9jb2xfbGlzdCk7CisJQ09QWV9TVFJJTkdfRklFTEQo Y3ljbGVfbWFya19jb2x1bW4pOworCUNPUFlfTk9ERV9GSUVMRChjeWNsZV9tYXJrX3ZhbHVl KTsKKwlDT1BZX05PREVfRklFTEQoY3ljbGVfbWFya19kZWZhdWx0KTsKKwlDT1BZX1NDQUxB Ul9GSUVMRChjeWNsZV9tYXJrX3R5cGUpOworCUNPUFlfU0NBTEFSX0ZJRUxEKGN5Y2xlX21h cmtfdHlwbW9kKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChjeWNsZV9tYXJrX2NvbGxhdGlvbik7 CisJQ09QWV9TVFJJTkdfRklFTEQoY3ljbGVfcGF0aF9jb2x1bW4pOworCUNPUFlfTE9DQVRJ T05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5ld25vZGU7Cit9CisKIHN0YXRpYyBD b21tb25UYWJsZUV4cHIgKgogX2NvcHlDb21tb25UYWJsZUV4cHIoY29uc3QgQ29tbW9uVGFi bGVFeHByICpmcm9tKQogewpAQCAtMjYwNCw2ICsyNjM1LDggQEAgX2NvcHlDb21tb25UYWJs ZUV4cHIoY29uc3QgQ29tbW9uVGFibGVFeHByICpmcm9tKQogCUNPUFlfTk9ERV9GSUVMRChj dGVjb2x0eXBlcyk7CiAJQ09QWV9OT0RFX0ZJRUxEKGN0ZWNvbHR5cG1vZHMpOwogCUNPUFlf Tk9ERV9GSUVMRChjdGVjb2xjb2xsYXRpb25zKTsKKwlDT1BZX05PREVfRklFTEQoc2VhcmNo X2NsYXVzZSk7CisJQ09QWV9OT0RFX0ZJRUxEKGN5Y2xlX2NsYXVzZSk7CiAKIAlyZXR1cm4g bmV3bm9kZTsKIH0KQEAgLTU2NzMsNiArNTcwNiwxMiBAQCBjb3B5T2JqZWN0SW1wbChjb25z dCB2b2lkICpmcm9tKQogCQljYXNlIFRfT25Db25mbGljdENsYXVzZToKIAkJCXJldHZhbCA9 IF9jb3B5T25Db25mbGljdENsYXVzZShmcm9tKTsKIAkJCWJyZWFrOworCQljYXNlIFRfQ1RF U2VhcmNoQ2xhdXNlOgorCQkJcmV0dmFsID0gX2NvcHlDVEVTZWFyY2hDbGF1c2UoZnJvbSk7 CisJCQlicmVhazsKKwkJY2FzZSBUX0NURUN5Y2xlQ2xhdXNlOgorCQkJcmV0dmFsID0gX2Nv cHlDVEVDeWNsZUNsYXVzZShmcm9tKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29tbW9uVGFi bGVFeHByOgogCQkJcmV0dmFsID0gX2NvcHlDb21tb25UYWJsZUV4cHIoZnJvbSk7CiAJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCA2MjdiMDI2YjE5Li40ODE1ODJi NDE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0yODMxLDYgKzI4MzEsMzMgQEAg X2VxdWFsT25Db25mbGljdENsYXVzZShjb25zdCBPbkNvbmZsaWN0Q2xhdXNlICphLCBjb25z dCBPbkNvbmZsaWN0Q2xhdXNlICpiKQogCXJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9v bAorX2VxdWFsQ1RFU2VhcmNoQ2xhdXNlKGNvbnN0IENURVNlYXJjaENsYXVzZSAqYSwgY29u c3QgQ1RFU2VhcmNoQ2xhdXNlICpiKQoreworCUNPTVBBUkVfTk9ERV9GSUVMRChzZWFyY2hf Y29sX2xpc3QpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKHNlYXJjaF9icmVhZHRoX2ZpcnN0 KTsKKwlDT01QQVJFX1NUUklOR19GSUVMRChzZWFyY2hfc2VxX2NvbHVtbik7CisJQ09NUEFS RV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3Rh dGljIGJvb2wKK19lcXVhbENURUN5Y2xlQ2xhdXNlKGNvbnN0IENURUN5Y2xlQ2xhdXNlICph LCBjb25zdCBDVEVDeWNsZUNsYXVzZSAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQoY3lj bGVfY29sX2xpc3QpOworCUNPTVBBUkVfU1RSSU5HX0ZJRUxEKGN5Y2xlX21hcmtfY29sdW1u KTsKKwlDT01QQVJFX05PREVfRklFTEQoY3ljbGVfbWFya192YWx1ZSk7CisJQ09NUEFSRV9O T0RFX0ZJRUxEKGN5Y2xlX21hcmtfZGVmYXVsdCk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQo Y3ljbGVfbWFya190eXBlKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChjeWNsZV9tYXJrX3R5 cG1vZCk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQoY3ljbGVfbWFya19jb2xsYXRpb24pOwor CUNPTVBBUkVfU1RSSU5HX0ZJRUxEKGN5Y2xlX3BhdGhfY29sdW1uKTsKKwlDT01QQVJFX0xP Q0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMg Ym9vbAogX2VxdWFsQ29tbW9uVGFibGVFeHByKGNvbnN0IENvbW1vblRhYmxlRXhwciAqYSwg Y29uc3QgQ29tbW9uVGFibGVFeHByICpiKQogewpAQCAtMjg0NSw2ICsyODcyLDggQEAgX2Vx dWFsQ29tbW9uVGFibGVFeHByKGNvbnN0IENvbW1vblRhYmxlRXhwciAqYSwgY29uc3QgQ29t bW9uVGFibGVFeHByICpiKQogCUNPTVBBUkVfTk9ERV9GSUVMRChjdGVjb2x0eXBlcyk7CiAJ Q09NUEFSRV9OT0RFX0ZJRUxEKGN0ZWNvbHR5cG1vZHMpOwogCUNPTVBBUkVfTk9ERV9GSUVM RChjdGVjb2xjb2xsYXRpb25zKTsKKwlDT01QQVJFX05PREVfRklFTEQoc2VhcmNoX2NsYXVz ZSk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGN5Y2xlX2NsYXVzZSk7CiAKIAlyZXR1cm4gdHJ1 ZTsKIH0KQEAgLTM3MjUsNiArMzc1NCwxMiBAQCBlcXVhbChjb25zdCB2b2lkICphLCBjb25z dCB2b2lkICpiKQogCQljYXNlIFRfT25Db25mbGljdENsYXVzZToKIAkJCXJldHZhbCA9IF9l cXVhbE9uQ29uZmxpY3RDbGF1c2UoYSwgYik7CiAJCQlicmVhazsKKwkJY2FzZSBUX0NURVNl YXJjaENsYXVzZToKKwkJCXJldHZhbCA9IF9lcXVhbENURVNlYXJjaENsYXVzZShhLCBiKTsK KwkJCWJyZWFrOworCQljYXNlIFRfQ1RFQ3ljbGVDbGF1c2U6CisJCQlyZXR2YWwgPSBfZXF1 YWxDVEVDeWNsZUNsYXVzZShhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfQ29tbW9uVGFi bGVFeHByOgogCQkJcmV0dmFsID0gX2VxdWFsQ29tbW9uVGFibGVFeHByKGEsIGIpOwogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGQ4NWNhOWY3YzUuLjg4ZDg1ZTE0 NTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0xNTI2LDYgKzE1MjYsMTIgQEAgZXhw ckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9PbkNvbmZsaWN0Q2xhdXNl OgogCQkJbG9jID0gKChjb25zdCBPbkNvbmZsaWN0Q2xhdXNlICopIGV4cHIpLT5sb2NhdGlv bjsKIAkJCWJyZWFrOworCQljYXNlIFRfQ1RFU2VhcmNoQ2xhdXNlOgorCQkJbG9jID0gKChj b25zdCBDVEVTZWFyY2hDbGF1c2UgKikgZXhwciktPmxvY2F0aW9uOworCQkJYnJlYWs7CisJ CWNhc2UgVF9DVEVDeWNsZUNsYXVzZToKKwkJCWxvYyA9ICgoY29uc3QgQ1RFQ3ljbGVDbGF1 c2UgKikgZXhwciktPmxvY2F0aW9uOworCQkJYnJlYWs7CiAJCWNhc2UgVF9Db21tb25UYWJs ZUV4cHI6CiAJCQlsb2MgPSAoKGNvbnN0IENvbW1vblRhYmxlRXhwciAqKSBleHByKS0+bG9j YXRpb247CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IGUyZjE3NzUxNWQu Ljk0ZGM4NGJlMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtMzA0Niw2ICszMDQ2LDMz IEBAIF9vdXRXaXRoQ2xhdXNlKFN0cmluZ0luZm8gc3RyLCBjb25zdCBXaXRoQ2xhdXNlICpu b2RlKQogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKIH0KIAorc3RhdGljIHZv aWQKK19vdXRDVEVTZWFyY2hDbGF1c2UoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENURVNlYXJj aENsYXVzZSAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUoIkNURVNFQVJDSENMQVVTRSIp OworCisJV1JJVEVfTk9ERV9GSUVMRChzZWFyY2hfY29sX2xpc3QpOworCVdSSVRFX0JPT0xf RklFTEQoc2VhcmNoX2JyZWFkdGhfZmlyc3QpOworCVdSSVRFX1NUUklOR19GSUVMRChzZWFy Y2hfc2VxX2NvbHVtbik7CisJV1JJVEVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworfQor CitzdGF0aWMgdm9pZAorX291dENURUN5Y2xlQ2xhdXNlKFN0cmluZ0luZm8gc3RyLCBjb25z dCBDVEVDeWNsZUNsYXVzZSAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUoIkNURUNZQ0xF Q0xBVVNFIik7CisKKwlXUklURV9OT0RFX0ZJRUxEKGN5Y2xlX2NvbF9saXN0KTsKKwlXUklU RV9TVFJJTkdfRklFTEQoY3ljbGVfbWFya19jb2x1bW4pOworCVdSSVRFX05PREVfRklFTEQo Y3ljbGVfbWFya192YWx1ZSk7CisJV1JJVEVfTk9ERV9GSUVMRChjeWNsZV9tYXJrX2RlZmF1 bHQpOworCVdSSVRFX09JRF9GSUVMRChjeWNsZV9tYXJrX3R5cGUpOworCVdSSVRFX0lOVF9G SUVMRChjeWNsZV9tYXJrX3R5cG1vZCk7CisJV1JJVEVfT0lEX0ZJRUxEKGN5Y2xlX21hcmtf Y29sbGF0aW9uKTsKKwlXUklURV9TVFJJTkdfRklFTEQoY3ljbGVfcGF0aF9jb2x1bW4pOwor CVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKK30KKwogc3RhdGljIHZvaWQKIF9v dXRDb21tb25UYWJsZUV4cHIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENvbW1vblRhYmxlRXhw ciAqbm9kZSkKIHsKQEAgLTMwNjIsNiArMzA4OSw4IEBAIF9vdXRDb21tb25UYWJsZUV4cHIo U3RyaW5nSW5mbyBzdHIsIGNvbnN0IENvbW1vblRhYmxlRXhwciAqbm9kZSkKIAlXUklURV9O T0RFX0ZJRUxEKGN0ZWNvbHR5cGVzKTsKIAlXUklURV9OT0RFX0ZJRUxEKGN0ZWNvbHR5cG1v ZHMpOwogCVdSSVRFX05PREVfRklFTEQoY3RlY29sY29sbGF0aW9ucyk7CisJV1JJVEVfTk9E RV9GSUVMRChzZWFyY2hfY2xhdXNlKTsKKwlXUklURV9OT0RFX0ZJRUxEKGN5Y2xlX2NsYXVz ZSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC00MjMyLDYgKzQyNjEsMTIgQEAgb3V0Tm9kZShT dHJpbmdJbmZvIHN0ciwgY29uc3Qgdm9pZCAqb2JqKQogCQkJY2FzZSBUX1dpdGhDbGF1c2U6 CiAJCQkJX291dFdpdGhDbGF1c2Uoc3RyLCBvYmopOwogCQkJCWJyZWFrOworCQkJY2FzZSBU X0NURVNlYXJjaENsYXVzZToKKwkJCQlfb3V0Q1RFU2VhcmNoQ2xhdXNlKHN0ciwgb2JqKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgVF9DVEVDeWNsZUNsYXVzZToKKwkJCQlfb3V0Q1RFQ3lj bGVDbGF1c2Uoc3RyLCBvYmopOworCQkJCWJyZWFrOwogCQkJY2FzZSBUX0NvbW1vblRhYmxl RXhwcjoKIAkJCQlfb3V0Q29tbW9uVGFibGVFeHByKHN0ciwgb2JqKTsKIAkJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2JhY2tl bmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggNDIwNTBhYjcxOS4uNDNmODhkNmM5NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTQwOSw2ICs0MDksNDMgQEAgX3JlYWRSb3dNYXJr Q2xhdXNlKHZvaWQpCiAJUkVBRF9ET05FKCk7CiB9CiAKKy8qCisgKiBfcmVhZENURVNlYXJj aENsYXVzZQorICovCitzdGF0aWMgQ1RFU2VhcmNoQ2xhdXNlICoKK19yZWFkQ1RFU2VhcmNo Q2xhdXNlKHZvaWQpCit7CisJUkVBRF9MT0NBTFMoQ1RFU2VhcmNoQ2xhdXNlKTsKKworCVJF QURfTk9ERV9GSUVMRChzZWFyY2hfY29sX2xpc3QpOworCVJFQURfQk9PTF9GSUVMRChzZWFy Y2hfYnJlYWR0aF9maXJzdCk7CisJUkVBRF9TVFJJTkdfRklFTEQoc2VhcmNoX3NlcV9jb2x1 bW4pOworCVJFQURfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJUkVBRF9ET05FKCk7 Cit9CisKKy8qCisgKiBfcmVhZENURUN5Y2xlQ2xhdXNlCisgKi8KK3N0YXRpYyBDVEVDeWNs ZUNsYXVzZSAqCitfcmVhZENURUN5Y2xlQ2xhdXNlKHZvaWQpCit7CisJUkVBRF9MT0NBTFMo Q1RFQ3ljbGVDbGF1c2UpOworCisJUkVBRF9OT0RFX0ZJRUxEKGN5Y2xlX2NvbF9saXN0KTsK KwlSRUFEX1NUUklOR19GSUVMRChjeWNsZV9tYXJrX2NvbHVtbik7CisJUkVBRF9OT0RFX0ZJ RUxEKGN5Y2xlX21hcmtfdmFsdWUpOworCVJFQURfTk9ERV9GSUVMRChjeWNsZV9tYXJrX2Rl ZmF1bHQpOworCVJFQURfT0lEX0ZJRUxEKGN5Y2xlX21hcmtfdHlwZSk7CisJUkVBRF9JTlRf RklFTEQoY3ljbGVfbWFya190eXBtb2QpOworCVJFQURfT0lEX0ZJRUxEKGN5Y2xlX21hcmtf Y29sbGF0aW9uKTsKKwlSRUFEX1NUUklOR19GSUVMRChjeWNsZV9wYXRoX2NvbHVtbik7CisJ UkVBRF9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlSRUFEX0RPTkUoKTsKK30KKwog LyoKICAqIF9yZWFkQ29tbW9uVGFibGVFeHByCiAgKi8KQEAgLTQyOCw2ICs0NjUsOCBAQCBf cmVhZENvbW1vblRhYmxlRXhwcih2b2lkKQogCVJFQURfTk9ERV9GSUVMRChjdGVjb2x0eXBl cyk7CiAJUkVBRF9OT0RFX0ZJRUxEKGN0ZWNvbHR5cG1vZHMpOwogCVJFQURfTk9ERV9GSUVM RChjdGVjb2xjb2xsYXRpb25zKTsKKwlSRUFEX05PREVfRklFTEQoc2VhcmNoX2NsYXVzZSk7 CisJUkVBRF9OT0RFX0ZJRUxEKGN5Y2xlX2NsYXVzZSk7CiAKIAlSRUFEX0RPTkUoKTsKIH0K QEAgLTI2NTIsNiArMjY5MSwxMCBAQCBwYXJzZU5vZGVTdHJpbmcodm9pZCkKIAkJcmV0dXJu X3ZhbHVlID0gX3JlYWRXaW5kb3dDbGF1c2UoKTsKIAllbHNlIGlmIChNQVRDSCgiUk9XTUFS S0NMQVVTRSIsIDEzKSkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRSb3dNYXJrQ2xhdXNlKCk7 CisJZWxzZSBpZiAoTUFUQ0goIkNURVNFQVJDSENMQVVTRSIsIDE1KSkKKwkJcmV0dXJuX3Zh bHVlID0gX3JlYWRDVEVTZWFyY2hDbGF1c2UoKTsKKwllbHNlIGlmIChNQVRDSCgiQ1RFQ1lD TEVDTEFVU0UiLCAxNCkpCisJCXJldHVybl92YWx1ZSA9IF9yZWFkQ1RFQ3ljbGVDbGF1c2Uo KTsKIAllbHNlIGlmIChNQVRDSCgiQ09NTU9OVEFCTEVFWFBSIiwgMTUpKQogCQlyZXR1cm5f dmFsdWUgPSBfcmVhZENvbW1vblRhYmxlRXhwcigpOwogCWVsc2UgaWYgKE1BVENIKCJTRVRP UEVSQVRJT05TVE1UIiwgMTYpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggZTY2OWQ3NWE1YS4uZTEz MDk2ZmI5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC00OTYsNiArNDk2LDcgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxsaXN0Pglyb3cgZXhwbGljaXRfcm93IGltcGxp Y2l0X3JvdyB0eXBlX2xpc3QgYXJyYXlfZXhwcl9saXN0CiAldHlwZSA8bm9kZT4JY2FzZV9l eHByIGNhc2VfYXJnIHdoZW5fY2xhdXNlIGNhc2VfZGVmYXVsdAogJXR5cGUgPGxpc3Q+CXdo ZW5fY2xhdXNlX2xpc3QKKyV0eXBlIDxub2RlPglvcHRfc2VhcmNoX2NsYXVzZSBvcHRfY3lj bGVfY2xhdXNlCiAldHlwZSA8aXZhbD4Jc3ViX3R5cGUgb3B0X21hdGVyaWFsaXplZAogJXR5 cGUgPHZhbHVlPglOdW1lcmljT25seQogJXR5cGUgPGxpc3Q+CU51bWVyaWNPbmx5X2xpc3QK QEAgLTYzMCw3ICs2MzEsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUFTU0VS VElPTiBBU1NJR05NRU5UIEFTWU1NRVRSSUMgQVQgQVRUQUNIIEFUVFJJQlVURSBBVVRIT1JJ WkFUSU9OCiAKIAlCQUNLV0FSRCBCRUZPUkUgQkVHSU5fUCBCRVRXRUVOIEJJR0lOVCBCSU5B UlkgQklUCi0JQk9PTEVBTl9QIEJPVEggQlkKKwlCT09MRUFOX1AgQk9USCBCUkVBRFRIIEJZ CiAKIAlDQUNIRSBDQUxMIENBTExFRCBDQVNDQURFIENBU0NBREVEIENBU0UgQ0FTVCBDQVRB TE9HX1AgQ0hBSU4gQ0hBUl9QCiAJQ0hBUkFDVEVSIENIQVJBQ1RFUklTVElDUyBDSEVDSyBD SEVDS1BPSU5UIENMQVNTIENMT1NFCkBAIC02NDIsNyArNjQzLDcgQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KTsKIAlDVVJSRU5UX1RJTUUgQ1VSUkVOVF9USU1FU1RBTVAgQ1VSUkVO VF9VU0VSIENVUlNPUiBDWUNMRQogCiAJREFUQV9QIERBVEFCQVNFIERBWV9QIERFQUxMT0NB VEUgREVDIERFQ0lNQUxfUCBERUNMQVJFIERFRkFVTFQgREVGQVVMVFMKLQlERUZFUlJBQkxF IERFRkVSUkVEIERFRklORVIgREVMRVRFX1AgREVMSU1JVEVSIERFTElNSVRFUlMgREVQRU5E UyBERVNDCisJREVGRVJSQUJMRSBERUZFUlJFRCBERUZJTkVSIERFTEVURV9QIERFTElNSVRF UiBERUxJTUlURVJTIERFUEVORFMgREVQVEggREVTQwogCURFVEFDSCBESUNUSU9OQVJZIERJ U0FCTEVfUCBESVNDQVJEIERJU1RJTkNUIERPIERPQ1VNRU5UX1AgRE9NQUlOX1AKIAlET1VC TEVfUCBEUk9QCiAKQEAgLTExMzA5LDggKzExMzEwLDYgQEAgc2ltcGxlX3NlbGVjdDoKICAq IFdJVEggWyBSRUNVUlNJVkUgXSA8cXVlcnkgbmFtZT4gWyAoPGNvbHVtbj4sLi4uKSBdCiAg KgkJQVMgKHF1ZXJ5KSBbIFNFQVJDSCBvciBDWUNMRSBjbGF1c2UgXQogICoKLSAqIFdlIGRv bid0IGN1cnJlbnRseSBzdXBwb3J0IHRoZSBTRUFSQ0ggb3IgQ1lDTEUgY2xhdXNlLgotICoK ICAqIFJlY29nbml6aW5nIFdJVEhfTEEgaGVyZSBhbGxvd3MgYSBDVEUgdG8gYmUgbmFtZWQg VElNRSBvciBPUkRJTkFMSVRZLgogICovCiB3aXRoX2NsYXVzZToKQEAgLTExMzQyLDEzICsx MTM0MSwxNSBAQCBjdGVfbGlzdDoKIAkJfCBjdGVfbGlzdCAnLCcgY29tbW9uX3RhYmxlX2V4 cHIJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCi1jb21tb25fdGFibGVfZXhw cjogIG5hbWUgb3B0X25hbWVfbGlzdCBBUyBvcHRfbWF0ZXJpYWxpemVkICcoJyBQcmVwYXJh YmxlU3RtdCAnKScKK2NvbW1vbl90YWJsZV9leHByOiAgbmFtZSBvcHRfbmFtZV9saXN0IEFT IG9wdF9tYXRlcmlhbGl6ZWQgJygnIFByZXBhcmFibGVTdG10ICcpJyBvcHRfc2VhcmNoX2Ns YXVzZSBvcHRfY3ljbGVfY2xhdXNlCiAJCQl7CiAJCQkJQ29tbW9uVGFibGVFeHByICpuID0g bWFrZU5vZGUoQ29tbW9uVGFibGVFeHByKTsKIAkJCQluLT5jdGVuYW1lID0gJDE7CiAJCQkJ bi0+YWxpYXNjb2xuYW1lcyA9ICQyOwogCQkJCW4tPmN0ZW1hdGVyaWFsaXplZCA9ICQ0Owog CQkJCW4tPmN0ZXF1ZXJ5ID0gJDY7CisJCQkJbi0+c2VhcmNoX2NsYXVzZSA9IGNhc3ROb2Rl KENURVNlYXJjaENsYXVzZSwgJDgpOworCQkJCW4tPmN5Y2xlX2NsYXVzZSA9IGNhc3ROb2Rl KENURUN5Y2xlQ2xhdXNlLCAkOSk7CiAJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkkJCA9 IChOb2RlICopIG47CiAJCQl9CkBAIC0xMTM2MCw2ICsxMTM2MSw0OSBAQCBvcHRfbWF0ZXJp YWxpemVkOgogCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IENURU1hdGVyaWFsaXplRGVm YXVsdDsgfQogCQk7CiAKK29wdF9zZWFyY2hfY2xhdXNlOgorCQlTRUFSQ0ggREVQVEggRklS U1RfUCBCWSBjb2x1bW5MaXN0IFNFVCBDb2xJZAorCQkJeworCQkJCUNURVNlYXJjaENsYXVz ZSAqbiA9IG1ha2VOb2RlKENURVNlYXJjaENsYXVzZSk7CisJCQkJbi0+c2VhcmNoX2NvbF9s aXN0ID0gJDU7CisJCQkJbi0+c2VhcmNoX2JyZWFkdGhfZmlyc3QgPSBmYWxzZTsKKwkJCQlu LT5zZWFyY2hfc2VxX2NvbHVtbiA9ICQ3OworCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJ JCQgPSAoTm9kZSAqKSBuOworCQkJfQorCQl8IFNFQVJDSCBCUkVBRFRIIEZJUlNUX1AgQlkg Y29sdW1uTGlzdCBTRVQgQ29sSWQKKwkJCXsKKwkJCQlDVEVTZWFyY2hDbGF1c2UgKm4gPSBt YWtlTm9kZShDVEVTZWFyY2hDbGF1c2UpOworCQkJCW4tPnNlYXJjaF9jb2xfbGlzdCA9ICQ1 OworCQkJCW4tPnNlYXJjaF9icmVhZHRoX2ZpcnN0ID0gdHJ1ZTsKKwkJCQluLT5zZWFyY2hf c2VxX2NvbHVtbiA9ICQ3OworCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJJCQgPSAoTm9k ZSAqKSBuOworCQkJfQorCQl8IC8qRU1QVFkqLworCQkJeworCQkJCSQkID0gTlVMTDsKKwkJ CX0KKwkJOworCitvcHRfY3ljbGVfY2xhdXNlOgorCQlDWUNMRSBjb2x1bW5MaXN0IFNFVCBD b2xJZCBUTyBBZXhwckNvbnN0IERFRkFVTFQgQWV4cHJDb25zdCBVU0lORyBDb2xJZAorCQkJ eworCQkJCUNURUN5Y2xlQ2xhdXNlICpuID0gbWFrZU5vZGUoQ1RFQ3ljbGVDbGF1c2UpOwor CQkJCW4tPmN5Y2xlX2NvbF9saXN0ID0gJDI7CisJCQkJbi0+Y3ljbGVfbWFya19jb2x1bW4g PSAkNDsKKwkJCQluLT5jeWNsZV9tYXJrX3ZhbHVlID0gJDY7CisJCQkJbi0+Y3ljbGVfbWFy a19kZWZhdWx0ID0gJDg7CisJCQkJbi0+Y3ljbGVfcGF0aF9jb2x1bW4gPSAkMTA7CisJCQkJ bi0+bG9jYXRpb24gPSBAMTsKKwkJCQkkJCA9IChOb2RlICopIG47CisJCQl9CisJCXwgLypF TVBUWSovCisJCQl7CisJCQkJJCQgPSBOVUxMOworCQkJfQorCQk7CisKIG9wdF93aXRoX2Ns YXVzZToKIAkJd2l0aF9jbGF1c2UJCQkJCQkJCXsgJCQgPSAkMTsgfQogCQl8IC8qRU1QVFkq LwkJCQkJCQkJeyAkJCA9IE5VTEw7IH0KQEAgLTE1MDQ0LDYgKzE1MDg4LDcgQEAgdW5yZXNl cnZlZF9rZXl3b3JkOgogCQkJfCBCQUNLV0FSRAogCQkJfCBCRUZPUkUKIAkJCXwgQkVHSU5f UAorCQkJfCBCUkVBRFRICiAJCQl8IEJZCiAJCQl8IENBQ0hFCiAJCQl8IENBTEwKQEAgLTE1 MDg4LDYgKzE1MTMzLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBERUxJTUlURVIK IAkJCXwgREVMSU1JVEVSUwogCQkJfCBERVBFTkRTCisJCQl8IERFUFRICiAJCQl8IERFVEFD SAogCQkJfCBESUNUSU9OQVJZCiAJCQl8IERJU0FCTEVfUApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2N0 ZS5jCmluZGV4IDFmY2E3NDg1Y2EuLmNiZmRiZjAzYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9jdGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf Y3RlLmMKQEAgLTE4LDcgKzE4LDEwIEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAicGFyc2VyL2FuYWx5 emUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgiCisjaW5jbHVkZSAicGFy c2VyL3BhcnNlX2NvbGxhdGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY3RlLmgiCisj aW5jbHVkZSAicGFyc2VyL3BhcnNlX2V4cHIuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCkBAIC0zMzQsNiArMzM3LDEy MCBAQCBhbmFseXplQ1RFKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29tbW9uVGFibGVFeHByICpj dGUpCiAJCWlmIChsY3R5cCAhPSBOVUxMIHx8IGxjdHlwbW9kICE9IE5VTEwgfHwgbGNjb2xs ICE9IE5VTEwpCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KIAkJCWVsb2coRVJST1IsICJ3cm9u ZyBudW1iZXIgb2Ygb3V0cHV0IGNvbHVtbnMgaW4gV0lUSCIpOwogCX0KKworCWlmIChjdGUt PnNlYXJjaF9jbGF1c2UgfHwgY3RlLT5jeWNsZV9jbGF1c2UpCisJeworCQlpZiAoIWN0ZS0+ Y3RlcmVjdXJzaXZlKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLAorCQkJCQkgZXJybXNnKCJXSVRIIHF1ZXJ5IGlzIG5vdCByZWN1 cnNpdmUiKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGN0ZS0+bG9jYXRp b24pKSk7CisKKwkJLyoKKwkJICogU1FMIHJlcXVpcmVzIGEgV0lUSCBsaXN0IGVsZW1lbnQg KENURSkgdG8gYmUgImV4cGFuZGFibGUiIGluIG9yZGVyCisJCSAqIHRvIGFsbG93IGEgc2Vh cmNoIG9yIGN5Y2xlIGNsYXVzZS4gIFRoYXQgaXMgYSBzdHJvbmdlciByZXF1aXJlbWVudAor CQkgKiB0aGFuIGp1c3QgYmVpbmcgcmVjdXJzaXZlLiAgQXMgb2YgdGhpcyB3cml0aW5nLCBQ b3N0Z3JlU1FMIG9ubHkKKwkJICogYWxsb3dzIGV4cGFuZGFibGUgQ1RFcyBhcyByZWN1cnNp dmUgQ1RFcyBhbnl3YXkuICBJbiB0aGUgZnV0dXJlLAorCQkgKiB0aGVyZSBtaWdodCBiZSBm dXJ0aGVyIGNoZWNrcyByZXF1aXJlZCBoZXJlLgorCQkgKi8KKwl9CisKKwlpZiAoY3RlLT5z ZWFyY2hfY2xhdXNlKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisJCUxpc3QJICAgKnNlZW4g PSBOSUw7CisKKwkJZm9yZWFjaChsYywgY3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfY29s X2xpc3QpCisJCXsKKwkJCVZhbHVlCSAgICpjb2xuYW1lID0gbGZpcnN0KGxjKTsKKworCQkJ aWYgKCFsaXN0X21lbWJlcihjdGUtPmN0ZWNvbG5hbWVzLCBjb2xuYW1lKSkKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJ CQkJIGVycm1zZygic2VhcmNoIGNvbHVtbiBcIiVzXCIgbm90IGluIFdJVEggcXVlcnkgY29s dW1uIGxpc3QiLAorCQkJCQkJCQlzdHJWYWwoY29sbmFtZSkpLAorCQkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGN0ZS0+c2VhcmNoX2NsYXVzZS0+bG9jYXRpb24pKSk7CisK KwkJCWlmIChsaXN0X21lbWJlcihzZWVuLCBjb2xuYW1lKSkKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJCSBl cnJtc2coInNlYXJjaCBjb2x1bW4gXCIlc1wiIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSIs CisJCQkJCQkJCXN0clZhbChjb2xuYW1lKSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgY3RlLT5zZWFyY2hfY2xhdXNlLT5sb2NhdGlvbikpKTsKKwkJCXNlZW4gPSBs YXBwZW5kKHNlZW4sIGNvbG5hbWUpOworCQl9CisKKwkJaWYgKGxpc3RfbWVtYmVyKGN0ZS0+ Y3RlY29sbmFtZXMsIG1ha2VTdHJpbmcoY3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfc2Vx X2NvbHVtbikpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCWVycm1zZygic2VhcmNoIHNlcXVlbmNlIGNvbHVtbiBuYW1l IFwiJXNcIiBhbHJlYWR5IHVzZWQgaW4gV0lUSCBxdWVyeSBjb2x1bW4gbGlzdCIsCisJCQkJ CQkgICBjdGUtPnNlYXJjaF9jbGF1c2UtPnNlYXJjaF9zZXFfY29sdW1uKSwKKwkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3RlLT5zZWFyY2hfY2xhdXNlLT5sb2NhdGlvbikp OworCX0KKworCWlmIChjdGUtPmN5Y2xlX2NsYXVzZSkKKwl7CisJCUxpc3RDZWxsICAgKmxj OworCQlMaXN0CSAgICpzZWVuID0gTklMOworCQlpbnQJCQl0eXBtb2QxOworCQlpbnQJCQl0 eXBtb2QyOworCisJCWZvcmVhY2gobGMsIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9jb2xf bGlzdCkKKwkJeworCQkJVmFsdWUJICAgKmNvbG5hbWUgPSBsZmlyc3QobGMpOworCisJCQlp ZiAoIWxpc3RfbWVtYmVyKGN0ZS0+Y3RlY29sbmFtZXMsIGNvbG5hbWUpKQorCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ CQkgZXJybXNnKCJjeWNsZSBjb2x1bW4gXCIlc1wiIG5vdCBpbiBXSVRIIHF1ZXJ5IGNvbHVt biBsaXN0IiwKKwkJCQkJCQkJc3RyVmFsKGNvbG5hbWUpKSwKKwkJCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBjdGUtPmN5Y2xlX2NsYXVzZS0+bG9jYXRpb24pKSk7CisKKwkJ CWlmIChsaXN0X21lbWJlcihzZWVuLCBjb2xuYW1lKSkKKwkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJCSBlcnJt c2coImN5Y2xlIGNvbHVtbiBcIiVzXCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIiwKKwkJ CQkJCQkJc3RyVmFsKGNvbG5hbWUpKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBjdGUtPmN5Y2xlX2NsYXVzZS0+bG9jYXRpb24pKSk7CisJCQlzZWVuID0gbGFwcGVu ZChzZWVuLCBjb2xuYW1lKTsKKwkJfQorCisJCWlmIChsaXN0X21lbWJlcihjdGUtPmN0ZWNv bG5hbWVzLCBtYWtlU3RyaW5nKGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX2NvbHVt bikpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJCWVycm1zZygiY3ljbGUgY29sdW1uIG5hbWUgXCIlc1wiIGFscmVhZHkg dXNlZCBpbiBXSVRIIHF1ZXJ5IGNvbHVtbiBsaXN0IiwKKwkJCQkJCSAgIGN0ZS0+Y3ljbGVf Y2xhdXNlLT5jeWNsZV9tYXJrX2NvbHVtbiksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIGN0ZS0+Y3ljbGVfY2xhdXNlLT5sb2NhdGlvbikpOworCisJCS8vIFRPRE86IG5l ZWRzIG5ldyBFWFBSX0tJTkRfKiwgb3IgYnlwYXNzIHRyYW5zZm9ybUV4cHIoKSBhbmQgY2Fs bAorCQkvLyBtYWtlX2NvbnN0KCkgZGlyZWN0bHkKKwkJY3RlLT5jeWNsZV9jbGF1c2UtPmN5 Y2xlX21hcmtfdmFsdWUgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgY3RlLT5jeWNsZV9jbGF1 c2UtPmN5Y2xlX21hcmtfdmFsdWUsIEVYUFJfS0lORF9PVEhFUik7CisJCWN0ZS0+Y3ljbGVf Y2xhdXNlLT5jeWNsZV9tYXJrX2RlZmF1bHQgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgY3Rl LT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfZGVmYXVsdCwgRVhQUl9LSU5EX09USEVSKTsK KwkJY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlwZSA9IHNlbGVjdF9jb21tb25f dHlwZShwc3RhdGUsCisJCQkJCQkJCQkJCQkJCQkJbGlzdF9tYWtlMihjdGUtPmN5Y2xlX2Ns YXVzZS0+Y3ljbGVfbWFya192YWx1ZSwKKwkJCQkJCQkJCQkJCQkJCQkJCSAgIGN0ZS0+Y3lj bGVfY2xhdXNlLT5jeWNsZV9tYXJrX2RlZmF1bHQpLAorCQkJCQkJCQkJCQkJCQkJCSJDWUNM RSIsIE5VTEwpOworCQljdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya192YWx1ZSA9IGNv ZXJjZV90b19jb21tb25fdHlwZShwc3RhdGUsCisJCQkJCQkJCQkJCQkJCQkJCWN0ZS0+Y3lj bGVfY2xhdXNlLT5jeWNsZV9tYXJrX3ZhbHVlLAorCQkJCQkJCQkJCQkJCQkJCQljdGUtPmN5 Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBlLAorCQkJCQkJCQkJCQkJCQkJCQkiQ1lDTEUv U0VUL1RPIik7CisJCWN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX2RlZmF1bHQgPSBj b2VyY2VfdG9fY29tbW9uX3R5cGUocHN0YXRlLAorCQkJCQkJCQkJCQkJCQkJCQkgIGN0ZS0+ Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX2RlZmF1bHQsCisJCQkJCQkJCQkJCQkJCQkJCSAg Y3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlwZSwKKwkJCQkJCQkJCQkJCQkJCQkJ ICAiQ1lDTEUvU0VUL0RFRkFVTFQiKTsKKworCQl0eXBtb2QxID0gZXhwclR5cG1vZChjdGUt PmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya192YWx1ZSk7CisJCXR5cG1vZDIgPSBleHByVHlw bW9kKGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX2RlZmF1bHQpOworCQlpZiAodHlw bW9kMSA9PSB0eXBtb2QyKQorCQkJY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlw bW9kID0gdHlwbW9kMTsKKwkJZWxzZQorCQkJY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21h cmtfdHlwbW9kID0gLTE7CisKKwkJY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29s bGF0aW9uID0gc2VsZWN0X2NvbW1vbl9jb2xsYXRpb24ocHN0YXRlLAorCQkJCQkJCQkJCQkJ CQkJCQkJICBsaXN0X21ha2UyKGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3ZhbHVl LAorCQkJCQkJCQkJCQkJCQkJCQkJCQkJIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJr X2RlZmF1bHQpLAorCQkJCQkJCQkJCQkJCQkJCQkJICB0cnVlKTsKKwl9CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCmluZGV4IGI4NzVhNTA2NDYuLjQxZDlk ZmY3NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCkBAIC0yMjA1LDYg KzIyMDUsOCBAQCBhZGRSYW5nZVRhYmxlRW50cnlGb3JDVEUoUGFyc2VTdGF0ZSAqcHN0YXRl LAogCWludAkJCW51bWFsaWFzZXM7CiAJaW50CQkJdmFyYXR0bm87CiAJTGlzdENlbGwgICAq bGM7CisJaW50CQkJbl9kb250ZXhwYW5kX2NvbHVtbnMgPSAwOworCVBhcnNlTmFtZXNwYWNl SXRlbSAqcHNpOwogCiAJQXNzZXJ0KHBzdGF0ZSAhPSBOVUxMKTsKIApAQCAtMjIzNyw5ICsy MjM5LDkgQEAgYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yQ1RFKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHJ2LT5sb2NhdGlvbikpKTsKIAl9 CiAKLQlydGUtPmNvbHR5cGVzID0gY3RlLT5jdGVjb2x0eXBlczsKLQlydGUtPmNvbHR5cG1v ZHMgPSBjdGUtPmN0ZWNvbHR5cG1vZHM7Ci0JcnRlLT5jb2xjb2xsYXRpb25zID0gY3RlLT5j dGVjb2xjb2xsYXRpb25zOworCXJ0ZS0+Y29sdHlwZXMgPSBsaXN0X2NvcHkoY3RlLT5jdGVj b2x0eXBlcyk7CisJcnRlLT5jb2x0eXBtb2RzID0gbGlzdF9jb3B5KGN0ZS0+Y3RlY29sdHlw bW9kcyk7CisJcnRlLT5jb2xjb2xsYXRpb25zID0gbGlzdF9jb3B5KGN0ZS0+Y3RlY29sY29s bGF0aW9ucyk7CiAKIAlydGUtPmFsaWFzID0gYWxpYXM7CiAJaWYgKGFsaWFzKQpAQCAtMjI2 NCw2ICsyMjY2LDM0IEBAIGFkZFJhbmdlVGFibGVFbnRyeUZvckNURShQYXJzZVN0YXRlICpw c3RhdGUsCiAKIAlydGUtPmVyZWYgPSBlcmVmOwogCisJaWYgKGN0ZS0+c2VhcmNoX2NsYXVz ZSkKKwl7CisJCXJ0ZS0+ZXJlZi0+Y29sbmFtZXMgPSBsYXBwZW5kKHJ0ZS0+ZXJlZi0+Y29s bmFtZXMsIG1ha2VTdHJpbmcoY3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfc2VxX2NvbHVt bikpOworCQlpZiAoY3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfYnJlYWR0aF9maXJzdCkK KwkJCXJ0ZS0+Y29sdHlwZXMgPSBsYXBwZW5kX29pZChydGUtPmNvbHR5cGVzLCBSRUNPUkRP SUQpOworCQllbHNlCisJCQlydGUtPmNvbHR5cGVzID0gbGFwcGVuZF9vaWQocnRlLT5jb2x0 eXBlcywgUkVDT1JEQVJSQVlPSUQpOworCQlydGUtPmNvbHR5cG1vZHMgPSBsYXBwZW5kX2lu dChydGUtPmNvbHR5cG1vZHMsIC0xKTsKKwkJcnRlLT5jb2xjb2xsYXRpb25zID0gbGFwcGVu ZF9vaWQocnRlLT5jb2xjb2xsYXRpb25zLCBJbnZhbGlkT2lkKTsKKworCQluX2RvbnRleHBh bmRfY29sdW1ucyArPSAxOworCX0KKworCWlmIChjdGUtPmN5Y2xlX2NsYXVzZSkKKwl7CisJ CXJ0ZS0+ZXJlZi0+Y29sbmFtZXMgPSBsYXBwZW5kKHJ0ZS0+ZXJlZi0+Y29sbmFtZXMsIG1h a2VTdHJpbmcoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sdW1uKSk7CisJCXJ0 ZS0+Y29sdHlwZXMgPSBsYXBwZW5kX29pZChydGUtPmNvbHR5cGVzLCBjdGUtPmN5Y2xlX2Ns YXVzZS0+Y3ljbGVfbWFya190eXBlKTsKKwkJcnRlLT5jb2x0eXBtb2RzID0gbGFwcGVuZF9p bnQocnRlLT5jb2x0eXBtb2RzLCBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBt b2QpOworCQlydGUtPmNvbGNvbGxhdGlvbnMgPSBsYXBwZW5kX29pZChydGUtPmNvbGNvbGxh dGlvbnMsIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX2NvbGxhdGlvbik7CisKKwkJ cnRlLT5lcmVmLT5jb2xuYW1lcyA9IGxhcHBlbmQocnRlLT5lcmVmLT5jb2xuYW1lcywgbWFr ZVN0cmluZyhjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfcGF0aF9jb2x1bW4pKTsKKwkJcnRl LT5jb2x0eXBlcyA9IGxhcHBlbmRfb2lkKHJ0ZS0+Y29sdHlwZXMsIFJFQ09SREFSUkFZT0lE KTsKKwkJcnRlLT5jb2x0eXBtb2RzID0gbGFwcGVuZF9pbnQocnRlLT5jb2x0eXBtb2RzLCAt MSk7CisJCXJ0ZS0+Y29sY29sbGF0aW9ucyA9IGxhcHBlbmRfb2lkKHJ0ZS0+Y29sY29sbGF0 aW9ucywgSW52YWxpZE9pZCk7CisKKwkJbl9kb250ZXhwYW5kX2NvbHVtbnMgKz0gMjsKKwl9 CisKIAkvKgogCSAqIFNldCBmbGFncyBhbmQgYWNjZXNzIHBlcm1pc3Npb25zLgogCSAqCkBA IC0yMjkxLDkgKzIzMjEsMTkgQEAgYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yQ1RFKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkgKiBCdWlsZCBhIFBhcnNlTmFtZXNwYWNlSXRlbSwgYnV0IGRvbid0 IGFkZCBpdCB0byB0aGUgcHN0YXRlJ3MgbmFtZXNwYWNlCiAJICogbGlzdCAtLS0gY2FsbGVy IG11c3QgZG8gdGhhdCBpZiBhcHByb3ByaWF0ZS4KIAkgKi8KLQlyZXR1cm4gYnVpbGROU0l0 ZW1Gcm9tTGlzdHMocnRlLCBsaXN0X2xlbmd0aChwc3RhdGUtPnBfcnRhYmxlKSwKKwlwc2kg PSBidWlsZE5TSXRlbUZyb21MaXN0cyhydGUsIGxpc3RfbGVuZ3RoKHBzdGF0ZS0+cF9ydGFi bGUpLAogCQkJCQkJCQlydGUtPmNvbHR5cGVzLCBydGUtPmNvbHR5cG1vZHMsCiAJCQkJCQkJ CXJ0ZS0+Y29sY29sbGF0aW9ucyk7CisKKwkvKgorCSAqIFRoZSBjb2x1bW5zIGFkZGVkIGJ5 IHNlYXJjaCBhbmQgY3ljbGUgY2xhdXNlcyBhcmUgbm90IGluY2x1ZGVkIGluIHN0YXIKKwkg KiBleHBhbnNpb24gaW4gcXVlcmllcyBjb250YWluZWQgaW4gdGhlIENURS4KKwkgKi8KKwlp ZiAocnRlLT5jdGVsZXZlbHN1cCA+IDApCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbl9kb250 ZXhwYW5kX2NvbHVtbnM7IGkrKykKKwkJCXBzaS0+cF9uc2NvbHVtbnNbbGlzdF9sZW5ndGgo cHNpLT5wX3J0ZS0+ZXJlZi0+Y29sbmFtZXMpIC0gMSAtIGldLnBfZG9udGV4cGFuZCA9IHRy dWU7CisKKwlyZXR1cm4gcHNpOwogfQogCiAvKgpAQCAtMjk3OCw3ICszMDE4LDExIEBAIGV4 cGFuZE5TSXRlbVZhcnMoUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW0sCiAJCWNvbnN0IGNo YXIgKmNvbG5hbWUgPSBzdHJWYWwoY29sbmFtZXZhbCk7CiAJCVBhcnNlTmFtZXNwYWNlQ29s dW1uICpuc2NvbCA9IG5zaXRlbS0+cF9uc2NvbHVtbnMgKyBjb2xpbmRleDsKIAotCQlpZiAo Y29sbmFtZVswXSkKKwkJaWYgKG5zY29sLT5wX2RvbnRleHBhbmQpCisJCXsKKwkJCS8qIHNr aXAgKi8KKwkJfQorCQllbHNlIGlmIChjb2xuYW1lWzBdKQogCQl7CiAJCQlWYXIJCSAgICp2 YXI7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA1NjZjNTE3ODM3Li43 MDEyMGJiNTM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0 LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC00MDksMTAg KzQwOSwyNSBAQCBtYXJrVGFyZ2V0TGlzdE9yaWdpbihQYXJzZVN0YXRlICpwc3RhdGUsIFRh cmdldEVudHJ5ICp0bGUsCiAJCQl7CiAJCQkJQ29tbW9uVGFibGVFeHByICpjdGUgPSBHZXRD VEVGb3JSVEUocHN0YXRlLCBydGUsIG5ldGxldmVsc3VwKTsKIAkJCQlUYXJnZXRFbnRyeSAq c3RlOworCQkJCUxpc3QJICAgKnRsID0gR2V0Q1RFVGFyZ2V0TGlzdChjdGUpOworCQkJCWlu dAkJCWV4dHJhX2NvbHMgPSAwOworCisJCQkJLyoKKwkJCQkgKiBSVEUgZm9yIENURSB3aWxs IGFscmVhZHkgaGF2ZSB0aGUgc2VhcmNoIGFuZCBjeWNsZSBjb2x1bW5zCisJCQkJICogYWRk ZWQsIGJ1dCB0aGUgc3VicXVlcnkgd29uJ3QsIHNvIHNraXAgbG9va2luZyB0aG9zZSB1cC4K KwkJCQkgKi8KKwkJCQlpZiAoY3RlLT5zZWFyY2hfY2xhdXNlKQorCQkJCQlleHRyYV9jb2xz ICs9IDE7CisJCQkJaWYgKGN0ZS0+Y3ljbGVfY2xhdXNlKQorCQkJCQlleHRyYV9jb2xzICs9 IDI7CisJCQkJaWYgKGV4dHJhX2NvbHMgJiYKKwkJCQkJYXR0bnVtID4gbGlzdF9sZW5ndGgo dGwpICYmCisJCQkJCWF0dG51bSA8PSBsaXN0X2xlbmd0aCh0bCkgKyBleHRyYV9jb2xzKQor CQkJCQlicmVhazsKIAotCQkJCXN0ZSA9IGdldF90bGVfYnlfcmVzbm8oR2V0Q1RFVGFyZ2V0 TGlzdChjdGUpLCBhdHRudW0pOworCQkJCXN0ZSA9IGdldF90bGVfYnlfcmVzbm8odGwsIGF0 dG51bSk7CiAJCQkJaWYgKHN0ZSA9PSBOVUxMIHx8IHN0ZS0+cmVzanVuaykKLQkJCQkJZWxv ZyhFUlJPUiwgInN1YnF1ZXJ5ICVzIGRvZXMgbm90IGhhdmUgYXR0cmlidXRlICVkIiwKKwkJ CQkJZWxvZyhFUlJPUiwgIkNURSAlcyBkb2VzIG5vdCBoYXZlIGF0dHJpYnV0ZSAlZCIsCiAJ CQkJCQkgcnRlLT5lcmVmLT5hbGlhc25hbWUsIGF0dG51bSk7CiAJCQkJdGxlLT5yZXNvcmln dGJsID0gc3RlLT5yZXNvcmlndGJsOwogCQkJCXRsZS0+cmVzb3JpZ2NvbCA9IHN0ZS0+cmVz b3JpZ2NvbDsKQEAgLTE2MDYsNyArMTYyMSw3IEBAIGV4cGFuZFJlY29yZFZhcmlhYmxlKFBh cnNlU3RhdGUgKnBzdGF0ZSwgVmFyICp2YXIsIGludCBsZXZlbHN1cCkKIAogCQkJCXN0ZSA9 IGdldF90bGVfYnlfcmVzbm8oR2V0Q1RFVGFyZ2V0TGlzdChjdGUpLCBhdHRudW0pOwogCQkJ CWlmIChzdGUgPT0gTlVMTCB8fCBzdGUtPnJlc2p1bmspCi0JCQkJCWVsb2coRVJST1IsICJz dWJxdWVyeSAlcyBkb2VzIG5vdCBoYXZlIGF0dHJpYnV0ZSAlZCIsCisJCQkJCWVsb2coRVJS T1IsICJDVEUgJXMgZG9lcyBub3QgaGF2ZSBhdHRyaWJ1dGUgJWQiLAogCQkJCQkJIHJ0ZS0+ ZXJlZi0+YWxpYXNuYW1lLCBhdHRudW0pOwogCQkJCWV4cHIgPSAoTm9kZSAqKSBzdGUtPmV4 cHI7CiAJCQkJaWYgKElzQShleHByLCBWYXIpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRl SGFuZGxlci5jCmluZGV4IGZlNzc3YzMxMDMuLmJlNzRkZGFmNjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9y ZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJh Y2Nlc3Mvc3lzYXR0ci5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvZGVwZW5kZW5jeS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3Jf ZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3RyaWdnZXIuaCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgpAQCAtMzksOCArNDAs MTAgQEAKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInJl d3JpdGUvcm93c2VjdXJpdHkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2lu Y2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIK IAogCiAvKiBXZSB1c2UgYSBsaXN0IG9mIHRoZXNlIHRvIGRldGVjdCByZWN1cnNpb24gaW4g UmV3cml0ZVF1ZXJ5ICovCkBAIC0zNDQyLDYgKzM0NDUsNjYwIEBAIHJld3JpdGVUYXJnZXRW aWV3KFF1ZXJ5ICpwYXJzZXRyZWUsIFJlbGF0aW9uIHZpZXcpCiB9CiAKIAorLyotLS0tLS0t LS0tCisgKiBSZXdyaXRlIGEgQ1RFIHdpdGggU0VBUkNIIG9yIENZQ0xFIGNsYXVzZQorICoK KyAqIENvbnNpZGVyIGEgQ1RFIGxpa2UKKyAqCisgKiBXSVRIIFJFQ1VSU0lWRSBjdGVuYW1l IChjb2wxLCBjb2wyLCBjb2wzKSBBUyAoCisgKiAgICAgcXVlcnkxCisgKiAgIFVOSU9OIFtB TExdCisgKiAgICAgU0VMRUNUIHRyb3NsIEZST00gY3RlbmFtZQorICogKQorICoKKyAqIFdp dGggYSBzZWFyY2ggY2xhdXNlCisgKgorICogU0VBUkNIIEJSRUFEVEggRklSU1QgQlkgY29s MSwgY29sMiBTRVQgc3FjCisgKgorICogdGhlIENURSBpcyByZXdyaXR0ZW4gdG8KKyAqCisg KiBXSVRIIFJFQ1VSU0lWRSBjdGVuYW1lIChjb2wxLCBjb2wyLCBjb2wzLCBzcWMpIEFTICgK KyAqICAgICBTRUxFQ1QgY29sMSwgY29sMiwgY29sMywgICAgICAgICAgICAgICAtLSBvcmln aW5hbCBXSVRIIGNvbHVtbiBsaXN0CisgKiAgICAgICAgICAgIFJPVygwLCBjb2wxLCBjb2wy KSAgICAgICAgICAgICAgLS0gaW5pdGlhbCByb3cgb2Ygc2VhcmNoIGNvbHVtbnMKKyAqICAg ICAgIEZST00gKHF1ZXJ5MSkgIipUTE9DUk4qIiAoY29sMSwgY29sMiwgY29sMykKKyAqICAg VU5JT04gW0FMTF0KKyAqICAgICBTRUxFQ1QgY29sMSwgY29sMiwgY29sMywgICAgICAgICAg ICAgICAtLSBzYW1lIGFzIGFib3ZlCisgKiAgICAgICAgICAgIFJPVyhzcWMubGV2ZWwgKyAx LCBjb2wxLCBjb2wyKSAgLS0gY291bnQgbGV2ZWxzCisgKiAgICAgICBGUk9NIChTRUxFQ1Qg dHJvc2wsIGN0ZW5hbWUuc3FjIEZST00gY3RlbmFtZSkgIipUUk9DUk4qIiAoY29sMSwgY29s MiwgY29sMywgc3FjKQorICogKQorICoKKyAqIChUaGlzIGlzbid0IHF1aXRlIGxlZ2FsIFNR TDogc3FjLmxldmVsIGlzIG1lYW50IHRvIHJlZmVyIHRvIHRoZSBmaXJzdAorICogY29sdW1u IG9mIHNxYywgd2hpY2ggaGFzIGEgcm93IHR5cGUsIGJ1dCB0aGUgZmllbGQgbmFtZXMgYXJl IG5vdCBkZWZpbmVkCisgKiBoZXJlLiAgUmVwcmVzZW50aW5nIHRoaXMgcHJvcGVybHkgaW4g U1FMIHdvdWxkIGJlIG1vcmUgY29tcGxpY2F0ZWQgKGFuZCB0aGUKKyAqIFNRTCBzdGFuZGFy ZCBhY3R1YWxseSBkb2VzIGl0IGluIHRoYXQgbW9yZSBjb21wbGljYXRlZCB3YXkpLCBidXQg dGhlCisgKiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBhbGxvd3MgdXMgdG8gY29uc3RydWN0 IGl0IHRoaXMgd2F5LikKKyAqCisgKiBXaXRoIGEgc2VhcmNoIGNhbHVzZQorICoKKyAqIFNF QVJDSCBERVBUSCBGSVJTVCBCWSBjb2wxLCBjb2wyIFNFVCBzcWMKKyAqCisgKiB0aGUgQ1RF IGlzIHJld3JpdHRlbiB0bworICoKKyAqIFdJVEggUkVDVVJTSVZFIGN0ZW5hbWUgKGNvbDEs IGNvbDIsIGNvbDMsIHNxYykgQVMgKAorICogICAgIFNFTEVDVCBjb2wxLCBjb2wyLCBjb2wz LCAgICAgICAgICAgICAgIC0tIG9yaWdpbmFsIFdJVEggY29sdW1uIGxpc3QKKyAqICAgICAg ICAgICAgQVJSQVlbUk9XKGNvbDEsIGNvbDIpXSAgICAgICAgICAtLSBpbml0aWFsIHJvdyBv ZiBzZWFyY2ggY29sdW1ucworICogICAgICAgRlJPTSAocXVlcnkxKSAiKlRMT0NSTioiIChj b2wxLCBjb2wyLCBjb2wzKQorICogICBVTklPTiBbQUxMXQorICogICAgIFNFTEVDVCBjb2wx LCBjb2wyLCBjb2wzLCAgICAgICAgICAgICAgIC0tIHNhbWUgYXMgYWJvdmUKKyAqICAgICAg ICAgICAgc3FjIHx8IEFSUkFZW1JPVyhjb2wxLCBjb2wyKV0gICAtLSByZWNvcmQgcm93cyBz ZWVuCisgKiAgICAgICBGUk9NIChTRUxFQ1QgdHJvc2wsIGN0ZW5hbWUuc3FjIEZST00gY3Rl bmFtZSkgIipUUk9DUk4qIiAoY29sMSwgY29sMiwgY29sMywgc3FjKQorICogKQorICoKKyAq IFdpdGggYSBjeWNsZSBjbGF1c2UKKyAqCisgKiBDWUNMRSBjb2wxLCBjb2wyIFNFVCBjbWMg VE8gJ1knIERFRkFVTFQgJ04nIFVTSU5HIGNwYQorICoKKyAqIChjbWMgPSBjeWNsZSBtYXJr IGNvbHVtbiwgY3BhID0gY3ljbGUgcGF0aCkgdGhlIENURSBpcyByZXdyaXR0ZW4gdG8KKyAq CisgKiBXSVRIIFJFQ1VSU0lWRSBjdGVuYW1lIChjb2wxLCBjb2wyLCBjb2wzLCBjbWMsIGNw YSkgQVMgKAorICogICAgIFNFTEVDVCBjb2wxLCBjb2wyLCBjb2wzLCAgICAgICAgICAgICAg IC0tIG9yaWdpbmFsIFdJVEggY29sdW1uIGxpc3QKKyAqICAgICAgICAgICAgJ04nLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtLSBjeWNsZSBtYXJrIGRlZmF1bHQKKyAqICAgICAg ICAgICAgQVJSQVlbUk9XKGNvbDEsIGNvbDIpXSAgICAgICAgICAtLSBpbml0aWFsIHJvdyBv ZiBjeWNsZSBjb2x1bW5zCisgKiAgICAgICBGUk9NIChxdWVyeTEpICIqVExPQ1JOKiIgKGNv bDEsIGNvbDIsIGNvbDMpCisgKiAgIFVOSU9OIFtBTExdCisgKiAgICAgU0VMRUNUIGNvbDEs IGNvbDIsIGNvbDMsICAgICAgICAgICAgICAgLS0gc2FtZSBhcyBhYm92ZQorICogICAgICAg ICAgICBDQVNFIFdIRU4gUk9XKGNvbDEsIGNvbDIpID0gQU5ZIChBUlJBWVtjcGFdKSBUSEVO ICdZJyBFTFNFICdOJyBFTkQsICAtLSBjb21wdXRlIGN5Y2xlIG1hcmsgY29sdW1uCisgKiAg ICAgICAgICAgIGNwYSB8fCBBUlJBWVtST1coY29sMSwgY29sMildICAgLS0gcmVjb3JkIHJv d3Mgc2VlbgorICogICAgICAgRlJPTSAoU0VMRUNUIHRyb3NsLCBjdGVuYW1lLmNtYywgY3Rl bmFtZS5jcGEgRlJPTSBjdGVuYW1lKSAiKlRST0NSTioiIChjb2wxLCBjb2wyLCBjb2wzLCBj bWMsIGNwYSkKKyAqICAgICAgIFdIRVJFIGNtYyA8PiAnWScKKyAqICkKKyAqCisgKiBUaGUg ZXhwcmVzc2lvbiB0byBjb21wdXRlIHRoZSBjeWNsZSBtYXJrIGNvbHVtbiBpbiB0aGUgcmln aHQtaGFuZCBxdWVyeSBpcworICogd3JpdHRlbiBhcworICoKKyAqIENBU0UgV0hFTiBST1co Y29sMSwgY29sMikgSU4gKFNFTEVDVCBwLiogRlJPTSBUQUJMRShjcGEpIHApIFRIRU4gY212 IEVMU0UgY21kIEVORAorICoKKyAqIGluIHRoZSBTUUwgc3RhbmRhcmQsIGJ1dCBpbiBQb3N0 Z3JlU1FMIHdlIGNhbiB1c2UgdGhlIHNjYWxhci1hcnJheSBvcGVyYXRvcgorICogZXhwcmVz c2lvbiBzaG93biBhYm92ZS4KKyAqCisgKiBBbHNvLCBpbiBzb21lIG9mIHRoZSBjYXNlcyB3 aGVyZSBvcGVyYXRvcnMgYXJlIHNob3duIGFib3ZlIHdlIGFjdHVhbGx5CisgKiBkaXJlY3Rs eSBwcm9kdWNlIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIGNhbGwuCisgKgorICogSWYgYm90 aCBhIHNlYXJjaCBjbGF1c2UgYW5kIGEgY3ljbGUgY2xhdXNlIGlzIHNwZWNpZmllZCwgdGhl biB0aGUgc2VhcmNoCisgKiBjbGF1c2UgY29sdW1uIGlzIGFkZGVkIGJlZm9yZSB0aGUgY3lj bGUgY2xhdXNlIGNvbHVtbnMuCisgKi8KKworLyoKKyAqIE1ha2UgYSBSb3dFeHByIGZyb20g dGhlIHNwZWNpZmllZCBjb2x1bW4gbmFtZXMsIHdoaWNoIGhhdmUgdG8gYmUgYW1vbmcgdGhl CisgKiBvdXRwdXQgY29sdW1ucyBvZiB0aGUgQ1RFLgorICoKKyAqIFhYWCBXZSBhbHJlYWR5 IGxvb2tlZCB1cCB0aGUgY29sdW1ucyBpbiBwYXJzZV9jdGUuYy4gIE1heWJlIHdlIHNob3Vs ZAorICogcmVjb3JkIHRoZSBwb3NpdGlvbnMgdGhlcmUgaW5zdGVhZCBvZiBsb29raW5nIHRo ZW0gdXAgYWdhaW4gaGVyZS4KKyAqLworc3RhdGljIFJvd0V4cHIgKgorbWFrZV9wYXRoX3Jv d2V4cHIoQ29tbW9uVGFibGVFeHByICpjdGUsIExpc3QgKmNvbF9saXN0KQoreworCVJvd0V4 cHIgICAgKnJvd2V4cHI7CisJTGlzdENlbGwgICAqbGM7CisKKwlyb3dleHByID0gbWFrZU5v ZGUoUm93RXhwcik7CisJcm93ZXhwci0+cm93X3R5cGVpZCA9IFJFQ09SRE9JRDsKKwlyb3dl eHByLT5yb3dfZm9ybWF0ID0gQ09FUkNFX0lNUExJQ0lUX0NBU1Q7CisJcm93ZXhwci0+bG9j YXRpb24gPSAtMTsKKworCWZvcmVhY2gobGMsIGNvbF9saXN0KQorCXsKKwkJY2hhcgkgICAq Y29sbmFtZSA9IHN0clZhbChsZmlyc3QobGMpKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8 IGxpc3RfbGVuZ3RoKGN0ZS0+Y3RlY29sbmFtZXMpOyBpKyspCisJCXsKKwkJCWNoYXIJICAg KmNvbG5hbWUyID0gc3RyVmFsKGxpc3RfbnRoKGN0ZS0+Y3RlY29sbmFtZXMsIGkpKTsKKwor CQkJaWYgKHN0cmNtcChjb2xuYW1lLCBjb2xuYW1lMikgPT0gMCkKKwkJCXsKKwkJCQlWYXIJ CSAgICp2YXI7CisKKwkJCQl2YXIgPSBtYWtlVmFyKDEsIGkgKyAxLAorCQkJCQkJCSAgbGlz dF9udGhfb2lkKGN0ZS0+Y3RlY29sdHlwZXMsIGkpLAorCQkJCQkJCSAgbGlzdF9udGhfaW50 KGN0ZS0+Y3RlY29sdHlwbW9kcywgaSksCisJCQkJCQkJICBsaXN0X250aF9vaWQoY3RlLT5j dGVjb2xjb2xsYXRpb25zLCBpKSwKKwkJCQkJCQkgIDApOworCQkJCXJvd2V4cHItPmFyZ3Mg PSBsYXBwZW5kKHJvd2V4cHItPmFyZ3MsIHZhcik7CisJCQkJcm93ZXhwci0+Y29sbmFtZXMg PSBsYXBwZW5kKHJvd2V4cHItPmNvbG5hbWVzLCBtYWtlU3RyaW5nKGNvbG5hbWUpKTsKKwkJ CQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiByb3dleHByOworfQorCisvKgor ICogV3JhcCBhIFJvd0V4cHIgaW4gYW4gQXJyYXlFeHByLCBmb3IgdGhlIGluaXRpYWwgc2Vh cmNoIGRlcHRoIGZpcnN0IG9yIGN5Y2xlCisgKiByb3cuCisgKi8KK3N0YXRpYyBFeHByICoK K21ha2VfcGF0aF9pbml0aWFsX2FycmF5KFJvd0V4cHIgKnJvd2V4cHIpCit7CisJQXJyYXlF eHByICAqYXJyOworCisJYXJyID0gbWFrZU5vZGUoQXJyYXlFeHByKTsKKwlhcnItPmFycmF5 X3R5cGVpZCA9IFJFQ09SREFSUkFZT0lEOworCWFyci0+ZWxlbWVudF90eXBlaWQgPSBSRUNP UkRPSUQ7CisJYXJyLT5sb2NhdGlvbiA9IC0xOworCWFyci0+ZWxlbWVudHMgPSBsaXN0X21h a2UxKHJvd2V4cHIpOworCisJcmV0dXJuIChFeHByICopIGFycjsKK30KKworLyoKKyAqIE1h a2UgYW4gYXJyYXkgY2F0ZW5hdGlvbiBleHByZXNzaW9uIGxpa2UKKyAqCisgKiBjcGEgfHwg QVJSQVlbUk9XKGNvbHMpXQorICoKKyAqIHdoZXJlIHRoZSB2YXJhdHRubyBvZiBjcGEgaXMg cHJvdmlkZWQgYXMgcGF0aF92YXJhdHRuby4KKyAqLworc3RhdGljIEV4cHIgKgorbWFrZV9w YXRoX2NhdF9leHByKFJvd0V4cHIgKnJvd2V4cHIsIEF0dHJOdW1iZXIgcGF0aF92YXJhdHRu bykKK3sKKwlBcnJheUV4cHIgICphcnI7CisJRnVuY0V4cHIgICAqZmV4cHI7CisKKwlhcnIg PSBtYWtlTm9kZShBcnJheUV4cHIpOworCWFyci0+YXJyYXlfdHlwZWlkID0gUkVDT1JEQVJS QVlPSUQ7CisJYXJyLT5lbGVtZW50X3R5cGVpZCA9IFJFQ09SRE9JRDsKKwlhcnItPmxvY2F0 aW9uID0gLTE7CisJYXJyLT5lbGVtZW50cyA9IGxpc3RfbWFrZTEocm93ZXhwcik7CisKKwlm ZXhwciA9IG1ha2VGdW5jRXhwcihGX0FSUkFZX0NBVCwgUkVDT1JEQVJSQVlPSUQsCisJCQkJ CQkgbGlzdF9tYWtlMihtYWtlVmFyKDEsIHBhdGhfdmFyYXR0bm8sIFJFQ09SREFSUkFZT0lE LCAtMSwgMCwgMCksCisJCQkJCQkJCQlhcnIpLAorCQkJCQkJIEludmFsaWRPaWQsIEludmFs aWRPaWQsIENPRVJDRV9FWFBMSUNJVF9DQUxMKTsKKworCXJldHVybiAoRXhwciAqKSBmZXhw cjsKK30KKworLyoKKyAqIFRoZSByZWFsIHdvcmsgaGFwcGVucyBoZXJlLgorICovCitzdGF0 aWMgQ29tbW9uVGFibGVFeHByICoKK3Jld3JpdGVTZWFyY2hBbmRDeWNsZShDb21tb25UYWJs ZUV4cHIgKmN0ZSkKK3sKKwlRdWVyeQkgICAqY3RlcXVlcnk7CisJU2V0T3BlcmF0aW9uU3Rt dCAqc29zOworCWludAkJCXJ0aTEsCisJCQkJcnRpMjsKKwlSYW5nZVRibEVudHJ5ICpydGUx LAorCQkJICAgKnJ0ZTIsCisJCQkgICAqbmV3cnRlOworCVF1ZXJ5CSAgICpuZXdxMSwKKwkJ CSAgICpuZXdxMjsKKwlRdWVyeQkgICAqbmV3c3VicXVlcnk7CisJUmFuZ2VUYmxSZWYgKnJ0 cjsKKwlPaWQJCQlzZWFyY2hfc2VxX3R5cGUgPSBJbnZhbGlkT2lkOworCUF0dHJOdW1iZXIJ c3FjX2F0dG5vID0gSW52YWxpZEF0dHJOdW1iZXI7CisJQXR0ck51bWJlcgljbWNfYXR0bm8g PSBJbnZhbGlkQXR0ck51bWJlcjsKKwlBdHRyTnVtYmVyCWNwYV9hdHRubyA9IEludmFsaWRB dHRyTnVtYmVyOworCVRhcmdldEVudHJ5ICp0bGU7CisJUm93RXhwciAgICAqY3ljbGVfY29s X3Jvd2V4cHIgPSBOVUxMOworCVJvd0V4cHIgICAgKnNlYXJjaF9jb2xfcm93ZXhwciA9IE5V TEw7CisJTGlzdAkgICAqZXdjbDsKKwlpbnQJCQljdGVfcnRpbmRleCA9IC0xOworCisJQXNz ZXJ0KGN0ZS0+c2VhcmNoX2NsYXVzZSB8fCBjdGUtPmN5Y2xlX2NsYXVzZSk7CisKKwljdGUg PSBjb3B5T2JqZWN0KGN0ZSk7CisKKwljdGVxdWVyeSA9IGNhc3ROb2RlKFF1ZXJ5LCBjdGUt PmN0ZXF1ZXJ5KTsKKworCS8qCisJICogVGhlIHRvcCBsZXZlbCBvZiB0aGUgQ1RFJ3MgcXVl cnkgc2hvdWxkIGJlIGEgVU5JT04uICBGaW5kIHRoZSB0d28KKwkgKiBzdWJxdWVyaWVzLgor CSAqLworCUFzc2VydChjdGVxdWVyeS0+c2V0T3BlcmF0aW9ucyk7CisJc29zID0gY2FzdE5v ZGUoU2V0T3BlcmF0aW9uU3RtdCwgY3RlcXVlcnktPnNldE9wZXJhdGlvbnMpOworCUFzc2Vy dChzb3MtPm9wID09IFNFVE9QX1VOSU9OKTsKKworCXJ0aTEgPSBjYXN0Tm9kZShSYW5nZVRi bFJlZiwgc29zLT5sYXJnKS0+cnRpbmRleDsKKwlydGkyID0gY2FzdE5vZGUoUmFuZ2VUYmxS ZWYsIHNvcy0+cmFyZyktPnJ0aW5kZXg7CisKKwlydGUxID0gcnRfZmV0Y2gocnRpMSwgY3Rl cXVlcnktPnJ0YWJsZSk7CisJcnRlMiA9IHJ0X2ZldGNoKHJ0aTIsIGN0ZXF1ZXJ5LT5ydGFi bGUpOworCisJQXNzZXJ0KHJ0ZTEtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZKTsKKwlBc3Nl cnQocnRlMi0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkpOworCisJLyoKKwkgKiBXZSdsbCBu ZWVkIHRoaXMgYSBmZXcgdGltZXMgbGF0ZXIuCisJICovCisJaWYgKGN0ZS0+c2VhcmNoX2Ns YXVzZSkKKwl7CisJCWlmIChjdGUtPnNlYXJjaF9jbGF1c2UtPnNlYXJjaF9icmVhZHRoX2Zp cnN0KQorCQkJc2VhcmNoX3NlcV90eXBlID0gUkVDT1JET0lEOworCQllbHNlCisJCQlzZWFy Y2hfc2VxX3R5cGUgPSBSRUNPUkRBUlJBWU9JRDsKKwl9CisKKwkvKgorCSAqIEF0dHJpYnV0 ZSBudW1iZXJzIG9mIHRoZSBhZGRlZCBjb2x1bW5zIGluIHRoZSBDVEUncyBjb2x1bW4gbGlz dAorCSAqLworCWlmIChjdGUtPnNlYXJjaF9jbGF1c2UpCisJCXNxY19hdHRubyA9IGxpc3Rf bGVuZ3RoKGN0ZS0+Y3RlY29sbmFtZXMpICsgMTsKKwlpZiAoY3RlLT5jeWNsZV9jbGF1c2Up CisJeworCQljbWNfYXR0bm8gPSBsaXN0X2xlbmd0aChjdGUtPmN0ZWNvbG5hbWVzKSArIDE7 CisJCWNwYV9hdHRubyA9IGxpc3RfbGVuZ3RoKGN0ZS0+Y3RlY29sbmFtZXMpICsgMjsKKwkJ aWYgKGN0ZS0+c2VhcmNoX2NsYXVzZSkKKwkJeworCQkJY21jX2F0dG5vKys7CisJCQljcGFf YXR0bm8rKzsKKwkJfQorCX0KKworCS8qCisJICogTWFrZSBuZXcgbGVmdCBzdWJxdWVyeQor CSAqLworCW5ld3ExID0gbWFrZU5vZGUoUXVlcnkpOworCW5ld3ExLT5jb21tYW5kVHlwZSA9 IENNRF9TRUxFQ1Q7CisJbmV3cTEtPmNhblNldFRhZyA9IHRydWU7CisKKwluZXdydGUgPSBt YWtlTm9kZShSYW5nZVRibEVudHJ5KTsKKwluZXdydGUtPnJ0ZWtpbmQgPSBSVEVfU1VCUVVF Ulk7CisJbmV3cnRlLT5hbGlhcyA9IG1ha2VBbGlhcygiKlRMT0NSTioiLCBjdGUtPmN0ZWNv bG5hbWVzKTsKKwluZXdydGUtPmVyZWYgPSBuZXdydGUtPmFsaWFzOworCW5ld3N1YnF1ZXJ5 ID0gY29weU9iamVjdChydGUxLT5zdWJxdWVyeSk7CisJSW5jcmVtZW50VmFyU3VibGV2ZWxz VXAoKE5vZGUgKikgbmV3c3VicXVlcnksIDEsIDEpOworCW5ld3J0ZS0+c3VicXVlcnkgPSBu ZXdzdWJxdWVyeTsKKwluZXdydGUtPmluRnJvbUNsID0gdHJ1ZTsKKwluZXdxMS0+cnRhYmxl ID0gbGlzdF9tYWtlMShuZXdydGUpOworCisJcnRyID0gbWFrZU5vZGUoUmFuZ2VUYmxSZWYp OworCXJ0ci0+cnRpbmRleCA9IDE7CisJbmV3cTEtPmpvaW50cmVlID0gbWFrZUZyb21FeHBy KGxpc3RfbWFrZTEocnRyKSwgTlVMTCk7CisKKwkvKgorCSAqIE1ha2UgdGFyZ2V0IGxpc3QK KwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IGxpc3RfbGVuZ3RoKGN0ZS0+Y3RlY29sbmFt ZXMpOyBpKyspCisJeworCQlWYXIJCSAgICp2YXI7CisKKwkJdmFyID0gbWFrZVZhcigxLCBp ICsgMSwKKwkJCQkJICBsaXN0X250aF9vaWQoY3RlLT5jdGVjb2x0eXBlcywgaSksCisJCQkJ CSAgbGlzdF9udGhfaW50KGN0ZS0+Y3RlY29sdHlwbW9kcywgaSksCisJCQkJCSAgbGlzdF9u dGhfb2lkKGN0ZS0+Y3RlY29sY29sbGF0aW9ucywgaSksCisJCQkJCSAgMCk7CisJCXRsZSA9 IG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSB2YXIsIGkgKyAxLCBzdHJWYWwobGlzdF9udGgo Y3RlLT5jdGVjb2xuYW1lcywgaSkpLCBmYWxzZSk7CisJCXRsZS0+cmVzb3JpZ3RibCA9IGNh c3ROb2RlKFRhcmdldEVudHJ5LCBsaXN0X250aChydGUxLT5zdWJxdWVyeS0+dGFyZ2V0TGlz dCwgaSkpLT5yZXNvcmlndGJsOworCQl0bGUtPnJlc29yaWdjb2wgPSBjYXN0Tm9kZShUYXJn ZXRFbnRyeSwgbGlzdF9udGgocnRlMS0+c3VicXVlcnktPnRhcmdldExpc3QsIGkpKS0+cmVz b3JpZ2NvbDsKKwkJbmV3cTEtPnRhcmdldExpc3QgPSBsYXBwZW5kKG5ld3ExLT50YXJnZXRM aXN0LCB0bGUpOworCX0KKworCWlmIChjdGUtPnNlYXJjaF9jbGF1c2UpCisJeworCQlFeHBy CSAgICp0ZXhwcjsKKworCQlzZWFyY2hfY29sX3Jvd2V4cHIgPSBtYWtlX3BhdGhfcm93ZXhw cihjdGUsIGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX2NvbF9saXN0KTsKKwkJaWYgKGN0 ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX2JyZWFkdGhfZmlyc3QpCisJCXsKKwkJCXNlYXJj aF9jb2xfcm93ZXhwci0+YXJncyA9IGxjb25zKG1ha2VDb25zdChJTlQ4T0lELCAtMSwgSW52 YWxpZE9pZCwgc2l6ZW9mKGludDY0KSwKKwkJCQkJCQkJCQkJCQkgICBJbnQ2NEdldERhdHVt KDApLCBmYWxzZSwgRkxPQVQ4UEFTU0JZVkFMKSwKKwkJCQkJCQkJCQkJIHNlYXJjaF9jb2xf cm93ZXhwci0+YXJncyk7CisJCQlzZWFyY2hfY29sX3Jvd2V4cHItPmNvbG5hbWVzID0gbGNv bnMobWFrZVN0cmluZygiKkxFVkVMKiIpLCBzZWFyY2hfY29sX3Jvd2V4cHItPmNvbG5hbWVz KTsKKwkJCXRleHByID0gKEV4cHIgKikgc2VhcmNoX2NvbF9yb3dleHByOworCQl9CisJCWVs c2UKKwkJCXRleHByID0gbWFrZV9wYXRoX2luaXRpYWxfYXJyYXkoc2VhcmNoX2NvbF9yb3dl eHByKTsKKwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KHRleHByLAorCQkJCQkJCSAgbGlzdF9s ZW5ndGgobmV3cTEtPnRhcmdldExpc3QpICsgMSwKKwkJCQkJCQkgIGN0ZS0+c2VhcmNoX2Ns YXVzZS0+c2VhcmNoX3NlcV9jb2x1bW4sCisJCQkJCQkJICBmYWxzZSk7CisJCW5ld3ExLT50 YXJnZXRMaXN0ID0gbGFwcGVuZChuZXdxMS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwl9CisJaWYg KGN0ZS0+Y3ljbGVfY2xhdXNlKQorCXsKKwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KChFeHBy ICopIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX2RlZmF1bHQsCisJCQkJCQkJICBs aXN0X2xlbmd0aChuZXdxMS0+dGFyZ2V0TGlzdCkgKyAxLAorCQkJCQkJCSAgY3RlLT5jeWNs ZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sdW1uLAorCQkJCQkJCSAgZmFsc2UpOworCQluZXdx MS0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQobmV3cTEtPnRhcmdldExpc3QsIHRsZSk7CisJCWN5 Y2xlX2NvbF9yb3dleHByID0gbWFrZV9wYXRoX3Jvd2V4cHIoY3RlLCBjdGUtPmN5Y2xlX2Ns YXVzZS0+Y3ljbGVfY29sX2xpc3QpOworCQl0bGUgPSBtYWtlVGFyZ2V0RW50cnkobWFrZV9w YXRoX2luaXRpYWxfYXJyYXkoY3ljbGVfY29sX3Jvd2V4cHIpLAorCQkJCQkJCSAgbGlzdF9s ZW5ndGgobmV3cTEtPnRhcmdldExpc3QpICsgMSwKKwkJCQkJCQkgIGN0ZS0+Y3ljbGVfY2xh dXNlLT5jeWNsZV9wYXRoX2NvbHVtbiwKKwkJCQkJCQkgIGZhbHNlKTsKKwkJbmV3cTEtPnRh cmdldExpc3QgPSBsYXBwZW5kKG5ld3ExLT50YXJnZXRMaXN0LCB0bGUpOworCX0KKworCXJ0 ZTEtPnN1YnF1ZXJ5ID0gbmV3cTE7CisKKwlpZiAoY3RlLT5zZWFyY2hfY2xhdXNlKQorCXsK KwkJcnRlMS0+ZXJlZi0+Y29sbmFtZXMgPSBsYXBwZW5kKHJ0ZTEtPmVyZWYtPmNvbG5hbWVz LCBtYWtlU3RyaW5nKGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX3NlcV9jb2x1bW4pKTsK Kwl9CisJaWYgKGN0ZS0+Y3ljbGVfY2xhdXNlKQorCXsKKwkJcnRlMS0+ZXJlZi0+Y29sbmFt ZXMgPSBsYXBwZW5kKHJ0ZTEtPmVyZWYtPmNvbG5hbWVzLCBtYWtlU3RyaW5nKGN0ZS0+Y3lj bGVfY2xhdXNlLT5jeWNsZV9tYXJrX2NvbHVtbikpOworCQlydGUxLT5lcmVmLT5jb2xuYW1l cyA9IGxhcHBlbmQocnRlMS0+ZXJlZi0+Y29sbmFtZXMsIG1ha2VTdHJpbmcoY3RlLT5jeWNs ZV9jbGF1c2UtPmN5Y2xlX3BhdGhfY29sdW1uKSk7CisJfQorCisJLyoKKwkgKiBNYWtlIG5l dyByaWdodCBzdWJxdWVyeQorCSAqLworCW5ld3EyID0gbWFrZU5vZGUoUXVlcnkpOworCW5l d3EyLT5jb21tYW5kVHlwZSA9IENNRF9TRUxFQ1Q7CisJbmV3cTItPmNhblNldFRhZyA9IHRy dWU7CisKKwluZXdydGUgPSBtYWtlTm9kZShSYW5nZVRibEVudHJ5KTsKKwluZXdydGUtPnJ0 ZWtpbmQgPSBSVEVfU1VCUVVFUlk7CisJZXdjbCA9IGNvcHlPYmplY3QoY3RlLT5jdGVjb2xu YW1lcyk7CisJaWYgKGN0ZS0+c2VhcmNoX2NsYXVzZSkKKwl7CisJCWV3Y2wgPSBsYXBwZW5k KGV3Y2wsIG1ha2VTdHJpbmcoY3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfc2VxX2NvbHVt bikpOworCX0KKwlpZiAoY3RlLT5jeWNsZV9jbGF1c2UpCisJeworCQlld2NsID0gbGFwcGVu ZChld2NsLCBtYWtlU3RyaW5nKGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX2NvbHVt bikpOworCQlld2NsID0gbGFwcGVuZChld2NsLCBtYWtlU3RyaW5nKGN0ZS0+Y3ljbGVfY2xh dXNlLT5jeWNsZV9wYXRoX2NvbHVtbikpOworCX0KKwluZXdydGUtPmFsaWFzID0gbWFrZUFs aWFzKCIqVFJPQ1JOKiIsIGV3Y2wpOworCW5ld3J0ZS0+ZXJlZiA9IG5ld3J0ZS0+YWxpYXM7 CisKKwkvKgorCSAqIEZpbmQgdGhlIHJlZmVyZW5jZSB0byBvdXIgQ1RFIGluIHRoZSByYW5n ZSB0YWJsZQorCSAqLworCWZvciAoaW50IHJ0aSA9IDE7IHJ0aSA8PSBsaXN0X2xlbmd0aChy dGUyLT5zdWJxdWVyeS0+cnRhYmxlKTsgcnRpKyspCisJeworCQlSYW5nZVRibEVudHJ5ICpl ID0gcnRfZmV0Y2gocnRpLCBydGUyLT5zdWJxdWVyeS0+cnRhYmxlKTsKKworCQlpZiAoZS0+ cnRla2luZCA9PSBSVEVfQ1RFICYmIHN0cmNtcChjdGUtPmN0ZW5hbWUsIGUtPmN0ZW5hbWUp ID09IDApCisJCXsKKwkJCWN0ZV9ydGluZGV4ID0gcnRpOworCQkJYnJlYWs7CisJCX0KKwl9 CisJQXNzZXJ0KGN0ZV9ydGluZGV4ID4gMCk7CisKKwluZXdzdWJxdWVyeSA9IGNvcHlPYmpl Y3QocnRlMi0+c3VicXVlcnkpOworCUluY3JlbWVudFZhclN1YmxldmVsc1VwKChOb2RlICop IG5ld3N1YnF1ZXJ5LCAxLCAxKTsKKworCS8qCisJICogQWRkIGV4dHJhIGNvbHVtbnMgdG8g dGFyZ2V0IGxpc3Qgb2Ygc3VicXVlcnkgb2YgcmlnaHQgc3VicXVlcnkKKwkgKi8KKwlpZiAo Y3RlLT5zZWFyY2hfY2xhdXNlKQorCXsKKwkJVmFyCQkgICAqdmFyOworCisJCS8qIGN0ZW5h bWUuc3FjICovCisJCXZhciA9IG1ha2VWYXIoY3RlX3J0aW5kZXgsIHNxY19hdHRubywKKwkJ CQkJICBzZWFyY2hfc2VxX3R5cGUsIC0xLCBJbnZhbGlkT2lkLCAwKTsKKwkJdGxlID0gbWFr ZVRhcmdldEVudHJ5KChFeHByICopIHZhciwKKwkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5ld3N1 YnF1ZXJ5LT50YXJnZXRMaXN0KSArIDEsCisJCQkJCQkJICBjdGUtPnNlYXJjaF9jbGF1c2Ut PnNlYXJjaF9zZXFfY29sdW1uLAorCQkJCQkJCSAgZmFsc2UpOworCQluZXdzdWJxdWVyeS0+ dGFyZ2V0TGlzdCA9IGxhcHBlbmQobmV3c3VicXVlcnktPnRhcmdldExpc3QsIHRsZSk7CisJ fQorCWlmIChjdGUtPmN5Y2xlX2NsYXVzZSkKKwl7CisJCVZhcgkJICAgKnZhcjsKKworCQkv KiBjdGVuYW1lLmNtYyAqLworCQl2YXIgPSBtYWtlVmFyKGN0ZV9ydGluZGV4LCBjbWNfYXR0 bm8sCisJCQkJCSAgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlwZSwKKwkJCQkJ ICBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190eXBtb2QsCisJCQkJCSAgY3RlLT5j eWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sbGF0aW9uLCAwKTsKKwkJdGxlID0gbWFrZVRh cmdldEVudHJ5KChFeHByICopIHZhciwKKwkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5ld3N1YnF1 ZXJ5LT50YXJnZXRMaXN0KSArIDEsCisJCQkJCQkJICBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3lj bGVfbWFya19jb2x1bW4sCisJCQkJCQkJICBmYWxzZSk7CisJCW5ld3N1YnF1ZXJ5LT50YXJn ZXRMaXN0ID0gbGFwcGVuZChuZXdzdWJxdWVyeS0+dGFyZ2V0TGlzdCwgdGxlKTsKKworCQkv KiBjdGVuYW1lLmNwYSAqLworCQl2YXIgPSBtYWtlVmFyKGN0ZV9ydGluZGV4LCBjcGFfYXR0 bm8sCisJCQkJCSAgUkVDT1JEQVJSQVlPSUQsIC0xLCBJbnZhbGlkT2lkLCAwKTsKKwkJdGxl ID0gbWFrZVRhcmdldEVudHJ5KChFeHByICopIHZhciwKKwkJCQkJCQkgIGxpc3RfbGVuZ3Ro KG5ld3N1YnF1ZXJ5LT50YXJnZXRMaXN0KSArIDEsCisJCQkJCQkJICBjdGUtPmN5Y2xlX2Ns YXVzZS0+Y3ljbGVfcGF0aF9jb2x1bW4sCisJCQkJCQkJICBmYWxzZSk7CisJCW5ld3N1YnF1 ZXJ5LT50YXJnZXRMaXN0ID0gbGFwcGVuZChuZXdzdWJxdWVyeS0+dGFyZ2V0TGlzdCwgdGxl KTsKKwl9CisKKwluZXdydGUtPnN1YnF1ZXJ5ID0gbmV3c3VicXVlcnk7CisJbmV3cnRlLT5p bkZyb21DbCA9IHRydWU7CisJbmV3cTItPnJ0YWJsZSA9IGxpc3RfbWFrZTEobmV3cnRlKTsK KworCXJ0ciA9IG1ha2VOb2RlKFJhbmdlVGJsUmVmKTsKKwlydHItPnJ0aW5kZXggPSAxOwor CisJaWYgKGN0ZS0+Y3ljbGVfY2xhdXNlKQorCXsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGVu dHJ5OworCQlPaWQJCQlvcDsKKwkJT3BFeHByCSAgICpvcGV4cHI7CisKKwkJLyoKKwkJICog QWRkIGNtYyA8PiBjbXYgY29uZGl0aW9uCisJCSAqLworCisJCXR5cGVudHJ5ID0gbG9va3Vw X3R5cGVfY2FjaGUoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlwZSwgVFlQRUNB Q0hFX0VRX09QUik7CisJCWlmICghdHlwZW50cnktPmVxX29wcikKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfRlVOQ1RJT04pLAorCQkJCQll cnJtc2coImNvdWxkIG5vdCBpZGVudGlmeSBhbiBlcXVhbGl0eSBvcGVyYXRvciBmb3IgdHlw ZSAlcyIsCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShjdGUtPmN5Y2xlX2NsYXVzZS0+Y3lj bGVfbWFya190eXBlKSkpOworCQlvcCA9IGdldF9uZWdhdG9yKHR5cGVudHJ5LT5lcV9vcHIp OworCQlpZiAoIW9wKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9GVU5DVElPTiksCisJCQkJCWVycm1zZygiY291bGQgbm90IGlkZW50aWZ5 IGFuIGluZXF1YWxpdHkgb3BlcmF0b3IgZm9yIHR5cGUgJXMiLAorCQkJCQkJICAgZm9ybWF0 X3R5cGVfYmUoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlwZSkpKTsKKworCQlv cGV4cHIgPSBtYWtlTm9kZShPcEV4cHIpOworCQlvcGV4cHItPmxvY2F0aW9uID0gLTE7CisJ CW9wZXhwci0+b3BubyA9IG9wOworCQlvcGV4cHItPm9wcmVzdWx0dHlwZSA9IEJPT0xPSUQ7 CisJCW9wZXhwci0+aW5wdXRjb2xsaWQgPSBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFy a19jb2xsYXRpb247CisJCW9wZXhwci0+YXJncyA9IGxpc3RfbWFrZTIobWFrZVZhcigxLCBj bWNfYXR0bm8sCisJCQkJCQkJCQkJICBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya190 eXBlLAorCQkJCQkJCQkJCSAgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfdHlwbW9k LAorCQkJCQkJCQkJCSAgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sbGF0aW9u LCAwKSwKKwkJCQkJCQkJICBjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfbWFya192YWx1ZSk7 CisKKwkJbmV3cTItPmpvaW50cmVlID0gbWFrZUZyb21FeHByKGxpc3RfbWFrZTEocnRyKSwg KE5vZGUgKikgb3BleHByKTsKKwl9CisJZWxzZQorCQluZXdxMi0+am9pbnRyZWUgPSBtYWtl RnJvbUV4cHIobGlzdF9tYWtlMShydHIpLCBOVUxMKTsKKworCS8qCisJICogTWFrZSB0YXJn ZXQgbGlzdAorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgbGlzdF9sZW5ndGgoY3RlLT5j dGVjb2xuYW1lcyk7IGkrKykKKwl7CisJCVZhcgkJICAgKnZhcjsKKworCQl2YXIgPSBtYWtl VmFyKDEsIGkgKyAxLAorCQkJCQkgIGxpc3RfbnRoX29pZChjdGUtPmN0ZWNvbHR5cGVzLCBp KSwKKwkJCQkJICBsaXN0X250aF9pbnQoY3RlLT5jdGVjb2x0eXBtb2RzLCBpKSwKKwkJCQkJ ICBsaXN0X250aF9vaWQoY3RlLT5jdGVjb2xjb2xsYXRpb25zLCBpKSwKKwkJCQkJICAwKTsK KwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KChFeHByICopIHZhciwgaSArIDEsIHN0clZhbChs aXN0X250aChjdGUtPmN0ZWNvbG5hbWVzLCBpKSksIGZhbHNlKTsKKwkJdGxlLT5yZXNvcmln dGJsID0gY2FzdE5vZGUoVGFyZ2V0RW50cnksIGxpc3RfbnRoKHJ0ZTItPnN1YnF1ZXJ5LT50 YXJnZXRMaXN0LCBpKSktPnJlc29yaWd0Ymw7CisJCXRsZS0+cmVzb3JpZ2NvbCA9IGNhc3RO b2RlKFRhcmdldEVudHJ5LCBsaXN0X250aChydGUyLT5zdWJxdWVyeS0+dGFyZ2V0TGlzdCwg aSkpLT5yZXNvcmlnY29sOworCQluZXdxMi0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQobmV3cTIt PnRhcmdldExpc3QsIHRsZSk7CisJfQorCisJaWYgKGN0ZS0+c2VhcmNoX2NsYXVzZSkKKwl7 CisJCUV4cHIJICAgKnRleHByOworCisJCWlmIChjdGUtPnNlYXJjaF9jbGF1c2UtPnNlYXJj aF9icmVhZHRoX2ZpcnN0KQorCQl7CisJCQlGaWVsZFNlbGVjdCAqZnM7CisJCQlGdW5jRXhw ciAgICpmZXhwcjsKKworCQkJLyoKKwkJCSAqIFJPVyhzcWMubGV2ZWwgKyAxLCBjb2xzKQor CQkJICovCisKKwkJCXNlYXJjaF9jb2xfcm93ZXhwciA9IGNvcHlPYmplY3Qoc2VhcmNoX2Nv bF9yb3dleHByKTsKKworCQkJZnMgPSBtYWtlTm9kZShGaWVsZFNlbGVjdCk7CisJCQlmcy0+ YXJnID0gKEV4cHIgKikgbWFrZVZhcigxLCBzcWNfYXR0bm8sIFJFQ09SRE9JRCwgLTEsIDAs IDApOworCQkJZnMtPmZpZWxkbnVtID0gMTsKKwkJCWZzLT5yZXN1bHR0eXBlID0gSU5UOE9J RDsKKwkJCWZzLT5yZXN1bHR0eXBtb2QgPSAtMTsKKworCQkJZmV4cHIgPSBtYWtlRnVuY0V4 cHIoRl9JTlQ4SU5DLCBJTlQ4T0lELCBsaXN0X21ha2UxKGZzKSwgSW52YWxpZE9pZCwgSW52 YWxpZE9pZCwgQ09FUkNFX0VYUExJQ0lUX0NBTEwpOworCisJCQlsZmlyc3QobGlzdF9oZWFk KHNlYXJjaF9jb2xfcm93ZXhwci0+YXJncykpID0gZmV4cHI7CisKKwkJCXRleHByID0gKEV4 cHIgKikgc2VhcmNoX2NvbF9yb3dleHByOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJ CSAqIHNxYyB8fCBBUlJBWVtST1coY29scyldCisJCQkgKi8KKwkJCXRleHByID0gbWFrZV9w YXRoX2NhdF9leHByKHNlYXJjaF9jb2xfcm93ZXhwciwgc3FjX2F0dG5vKTsKKwkJfQorCQl0 bGUgPSBtYWtlVGFyZ2V0RW50cnkodGV4cHIsCisJCQkJCQkJICBsaXN0X2xlbmd0aChuZXdx Mi0+dGFyZ2V0TGlzdCkgKyAxLAorCQkJCQkJCSAgY3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFy Y2hfc2VxX2NvbHVtbiwKKwkJCQkJCQkgIGZhbHNlKTsKKwkJbmV3cTItPnRhcmdldExpc3Qg PSBsYXBwZW5kKG5ld3EyLT50YXJnZXRMaXN0LCB0bGUpOworCX0KKworCWlmIChjdGUtPmN5 Y2xlX2NsYXVzZSkKKwl7CisJCVNjYWxhckFycmF5T3BFeHByICpzYW9lOworCQlDYXNlRXhw ciAgICpjYXNlZXhwcjsKKwkJQ2FzZVdoZW4gICAqY2FzZXdoZW47CisKKwkJLyoKKwkJICog Q0FTRSBXSEVOIFJPVyhjb2xzKSA9IEFOWSAoQVJSQVlbY3BhXSkgVEhFTiBjbXYgRUxTRSBj bWQgRU5ECisJCSAqLworCisJCXNhb2UgPSBtYWtlTm9kZShTY2FsYXJBcnJheU9wRXhwcik7 CisJCXNhb2UtPmxvY2F0aW9uID0gLTE7CisJCXNhb2UtPm9wbm8gPSBSRUNPUkRfRVFfT1A7 CisJCXNhb2UtPnVzZU9yID0gdHJ1ZTsKKwkJc2FvZS0+YXJncyA9IGxpc3RfbWFrZTIoY3lj bGVfY29sX3Jvd2V4cHIsCisJCQkJCQkJCW1ha2VWYXIoMSwgY3BhX2F0dG5vLCBSRUNPUkRB UlJBWU9JRCwgLTEsIDAsIDApKTsKKworCQljYXNlZXhwciA9IG1ha2VOb2RlKENhc2VFeHBy KTsKKwkJY2FzZWV4cHItPmxvY2F0aW9uID0gLTE7CisJCWNhc2VleHByLT5jYXNldHlwZSA9 IGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3R5cGU7CisJCWNhc2VleHByLT5jYXNl Y29sbGlkID0gY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sbGF0aW9uOworCQlj YXNld2hlbiA9IG1ha2VOb2RlKENhc2VXaGVuKTsKKwkJY2FzZXdoZW4tPmxvY2F0aW9uID0g LTE7CisJCWNhc2V3aGVuLT5leHByID0gKEV4cHIgKikgc2FvZTsKKwkJY2FzZXdoZW4tPnJl c3VsdCA9IChFeHByICopIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3ZhbHVlOwor CQljYXNlZXhwci0+YXJncyA9IGxpc3RfbWFrZTEoY2FzZXdoZW4pOworCQljYXNlZXhwci0+ ZGVmcmVzdWx0ID0gKEV4cHIgKikgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfZGVm YXVsdDsKKworCQl0bGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4cHIgKikgY2FzZWV4cHIsCisJ CQkJCQkJICBsaXN0X2xlbmd0aChuZXdxMi0+dGFyZ2V0TGlzdCkgKyAxLAorCQkJCQkJCSAg Y3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sdW1uLAorCQkJCQkJCSAgZmFsc2Up OworCQluZXdxMi0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQobmV3cTItPnRhcmdldExpc3QsIHRs ZSk7CisKKwkJLyoKKwkJICogY3BhIHx8IEFSUkFZW1JPVyhjb2xzKV0KKwkJICovCisJCXRs ZSA9IG1ha2VUYXJnZXRFbnRyeShtYWtlX3BhdGhfY2F0X2V4cHIoY3ljbGVfY29sX3Jvd2V4 cHIsIGNwYV9hdHRubyksCisJCQkJCQkJICBsaXN0X2xlbmd0aChuZXdxMi0+dGFyZ2V0TGlz dCkgKyAxLAorCQkJCQkJCSAgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX3BhdGhfY29sdW1u LAorCQkJCQkJCSAgZmFsc2UpOworCQluZXdxMi0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQobmV3 cTItPnRhcmdldExpc3QsIHRsZSk7CisJfQorCisJcnRlMi0+c3VicXVlcnkgPSBuZXdxMjsK KworCWlmIChjdGUtPnNlYXJjaF9jbGF1c2UpCisJeworCQlydGUyLT5lcmVmLT5jb2xuYW1l cyA9IGxhcHBlbmQocnRlMi0+ZXJlZi0+Y29sbmFtZXMsIG1ha2VTdHJpbmcoY3RlLT5zZWFy Y2hfY2xhdXNlLT5zZWFyY2hfc2VxX2NvbHVtbikpOworCX0KKwlpZiAoY3RlLT5jeWNsZV9j bGF1c2UpCisJeworCQlydGUyLT5lcmVmLT5jb2xuYW1lcyA9IGxhcHBlbmQocnRlMi0+ZXJl Zi0+Y29sbmFtZXMsIG1ha2VTdHJpbmcoY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtf Y29sdW1uKSk7CisJCXJ0ZTItPmVyZWYtPmNvbG5hbWVzID0gbGFwcGVuZChydGUyLT5lcmVm LT5jb2xuYW1lcywgbWFrZVN0cmluZyhjdGUtPmN5Y2xlX2NsYXVzZS0+Y3ljbGVfcGF0aF9j b2x1bW4pKTsKKwl9CisKKwkvKgorCSAqIEFkZCB0aGUgYWRkaXRpb25hbCBjb2x1bW5zIHRv IHRoZSBTZXRPcGVyYXRpb25TdG10CisJICovCisJaWYgKGN0ZS0+c2VhcmNoX2NsYXVzZSkK Kwl7CisJCXNvcy0+Y29sVHlwZXMgPSBsYXBwZW5kX29pZChzb3MtPmNvbFR5cGVzLCBzZWFy Y2hfc2VxX3R5cGUpOworCQlzb3MtPmNvbFR5cG1vZHMgPSBsYXBwZW5kX2ludChzb3MtPmNv bFR5cG1vZHMsIC0xKTsKKwkJc29zLT5jb2xDb2xsYXRpb25zID0gbGFwcGVuZF9vaWQoc29z LT5jb2xDb2xsYXRpb25zLCBJbnZhbGlkT2lkKTsKKwl9CisJaWYgKGN0ZS0+Y3ljbGVfY2xh dXNlKQorCXsKKwkJc29zLT5jb2xUeXBlcyA9IGxhcHBlbmRfb2lkKHNvcy0+Y29sVHlwZXMs IGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3R5cGUpOworCQlzb3MtPmNvbFR5cG1v ZHMgPSBsYXBwZW5kX2ludChzb3MtPmNvbFR5cG1vZHMsIGN0ZS0+Y3ljbGVfY2xhdXNlLT5j eWNsZV9tYXJrX3R5cG1vZCk7CisJCXNvcy0+Y29sQ29sbGF0aW9ucyA9IGxhcHBlbmRfb2lk KHNvcy0+Y29sQ29sbGF0aW9ucywgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29s bGF0aW9uKTsKKworCQlzb3MtPmNvbFR5cGVzID0gbGFwcGVuZF9vaWQoc29zLT5jb2xUeXBl cywgUkVDT1JEQVJSQVlPSUQpOworCQlzb3MtPmNvbFR5cG1vZHMgPSBsYXBwZW5kX2ludChz b3MtPmNvbFR5cG1vZHMsIC0xKTsKKwkJc29zLT5jb2xDb2xsYXRpb25zID0gbGFwcGVuZF9v aWQoc29zLT5jb2xDb2xsYXRpb25zLCBJbnZhbGlkT2lkKTsKKwl9CisKKwkvKgorCSAqIEFk ZCB0aGUgYWRkaXRpb25hbCBjb2x1bW5zIHRvIHRoZSBDVEUgcXVlcnkncyB0YXJnZXQgbGlz dAorCSAqLworCWlmIChjdGUtPnNlYXJjaF9jbGF1c2UpCisJeworCQljdGVxdWVyeS0+dGFy Z2V0TGlzdCA9IGxhcHBlbmQoY3RlcXVlcnktPnRhcmdldExpc3QsCisJCQkJCQkJCQkgICBt YWtlVGFyZ2V0RW50cnkoKEV4cHIgKikgbWFrZVZhcigxLCBzcWNfYXR0bm8sCisJCQkJCQkJ CQkJCQkJCQkJCQlzZWFyY2hfc2VxX3R5cGUsIC0xLCBJbnZhbGlkT2lkLCAwKSwKKwkJCQkJ CQkJCQkJCQkgICBsaXN0X2xlbmd0aChjdGVxdWVyeS0+dGFyZ2V0TGlzdCkgKyAxLAorCQkJ CQkJCQkJCQkJCSAgIGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX3NlcV9jb2x1bW4sCisJ CQkJCQkJCQkJCQkJICAgZmFsc2UpKTsKKwl9CisJaWYgKGN0ZS0+Y3ljbGVfY2xhdXNlKQor CXsKKwkJY3RlcXVlcnktPnRhcmdldExpc3QgPSBsYXBwZW5kKGN0ZXF1ZXJ5LT50YXJnZXRM aXN0LAorCQkJCQkJCQkJICAgbWFrZVRhcmdldEVudHJ5KChFeHByICopIG1ha2VWYXIoMSwg Y21jX2F0dG5vLAorCQkJCQkJCQkJCQkJCQkJCQkJY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xl X21hcmtfdHlwZSwKKwkJCQkJCQkJCQkJCQkJCQkJCWN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNs ZV9tYXJrX3R5cG1vZCwKKwkJCQkJCQkJCQkJCQkJCQkJCWN0ZS0+Y3ljbGVfY2xhdXNlLT5j eWNsZV9tYXJrX2NvbGxhdGlvbiwgMCksCisJCQkJCQkJCQkJCQkJICAgbGlzdF9sZW5ndGgo Y3RlcXVlcnktPnRhcmdldExpc3QpICsgMSwKKwkJCQkJCQkJCQkJCQkgICBjdGUtPmN5Y2xl X2NsYXVzZS0+Y3ljbGVfbWFya19jb2x1bW4sCisJCQkJCQkJCQkJCQkJICAgZmFsc2UpKTsK KwkJY3RlcXVlcnktPnRhcmdldExpc3QgPSBsYXBwZW5kKGN0ZXF1ZXJ5LT50YXJnZXRMaXN0 LAorCQkJCQkJCQkJICAgbWFrZVRhcmdldEVudHJ5KChFeHByICopIG1ha2VWYXIoMSwgY3Bh X2F0dG5vLAorCQkJCQkJCQkJCQkJCQkJCQkJUkVDT1JEQVJSQVlPSUQsIC0xLCBJbnZhbGlk T2lkLCAwKSwKKwkJCQkJCQkJCQkJCQkgICBsaXN0X2xlbmd0aChjdGVxdWVyeS0+dGFyZ2V0 TGlzdCkgKyAxLAorCQkJCQkJCQkJCQkJCSAgIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9w YXRoX2NvbHVtbiwKKwkJCQkJCQkJCQkJCQkgICBmYWxzZSkpOworCX0KKworCS8qCisJICog QWRkIHRoZSBhZGRpdGlvbmFsIGNvbHVtbnMgdG8gdGhlIENURSdzIG91dHB1dCBjb2x1bW5z CisJICovCisJY3RlLT5jdGVjb2xuYW1lcyA9IGV3Y2w7CisJaWYgKGN0ZS0+c2VhcmNoX2Ns YXVzZSkKKwl7CisJCWN0ZS0+Y3RlY29sdHlwZXMgPSBsYXBwZW5kX29pZChjdGUtPmN0ZWNv bHR5cGVzLCBzZWFyY2hfc2VxX3R5cGUpOworCQljdGUtPmN0ZWNvbHR5cG1vZHMgPSBsYXBw ZW5kX2ludChjdGUtPmN0ZWNvbHR5cG1vZHMsIC0xKTsKKwkJY3RlLT5jdGVjb2xjb2xsYXRp b25zID0gbGFwcGVuZF9vaWQoY3RlLT5jdGVjb2xjb2xsYXRpb25zLCBJbnZhbGlkT2lkKTsK Kwl9CisJaWYgKGN0ZS0+Y3ljbGVfY2xhdXNlKQorCXsKKwkJY3RlLT5jdGVjb2x0eXBlcyA9 IGxhcHBlbmRfb2lkKGN0ZS0+Y3RlY29sdHlwZXMsIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNs ZV9tYXJrX3R5cGUpOworCQljdGUtPmN0ZWNvbHR5cG1vZHMgPSBsYXBwZW5kX2ludChjdGUt PmN0ZWNvbHR5cG1vZHMsIGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNsZV9tYXJrX3R5cG1vZCk7 CisJCWN0ZS0+Y3RlY29sY29sbGF0aW9ucyA9IGxhcHBlbmRfb2lkKGN0ZS0+Y3RlY29sY29s bGF0aW9ucywgY3RlLT5jeWNsZV9jbGF1c2UtPmN5Y2xlX21hcmtfY29sbGF0aW9uKTsKKwor CQljdGUtPmN0ZWNvbHR5cGVzID0gbGFwcGVuZF9vaWQoY3RlLT5jdGVjb2x0eXBlcywgUkVD T1JEQVJSQVlPSUQpOworCQljdGUtPmN0ZWNvbHR5cG1vZHMgPSBsYXBwZW5kX2ludChjdGUt PmN0ZWNvbHR5cG1vZHMsIC0xKTsKKwkJY3RlLT5jdGVjb2xjb2xsYXRpb25zID0gbGFwcGVu ZF9vaWQoY3RlLT5jdGVjb2xjb2xsYXRpb25zLCBJbnZhbGlkT2lkKTsKKwl9CisKKwlyZXR1 cm4gY3RlOworfQorCisKIC8qCiAgKiBSZXdyaXRlUXVlcnkgLQogICoJICByZXdyaXRlcyB0 aGUgcXVlcnkgYW5kIGFwcGx5IHRoZSBydWxlcyBhZ2FpbiBvbiB0aGUgcXVlcmllcyByZXdy aXR0ZW4KQEAgLTM0NjAsNiArNDExNywyMiBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNl dHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMpCiAJTGlzdAkgICAqcmV3cml0dGVuID0gTklM OwogCUxpc3RDZWxsICAgKmxjMTsKIAorCS8qCisJICogWmVyb3RoLCBleHBhbmQgU0VBUkNI IGFuZCBDWUNMRSBjbGF1c2VzIGluIENURXMuCisJICoKKwkgKiBYWFggV2hlcmUgaXMgdGhl IGJlc3QgcGxhY2UgdG8gcHV0IHRoaXM/CisJICovCisJZm9yZWFjaChsYzEsIHBhcnNldHJl ZS0+Y3RlTGlzdCkKKwl7CisJCUNvbW1vblRhYmxlRXhwciAqY3RlID0gbGZpcnN0X25vZGUo Q29tbW9uVGFibGVFeHByLCBsYzEpOworCisJCWlmIChjdGUtPnNlYXJjaF9jbGF1c2UgfHwg Y3RlLT5jeWNsZV9jbGF1c2UpCisJCXsKKwkJCWN0ZSA9IHJld3JpdGVTZWFyY2hBbmRDeWNs ZShjdGUpOworCQkJbGZpcnN0KGxjMSkgPSBjdGU7CisJCX0KKwl9CisKIAkvKgogCSAqIEZp cnN0LCByZWN1cnNpdmVseSBwcm9jZXNzIGFueSBpbnNlcnQvdXBkYXRlL2RlbGV0ZSBzdGF0 ZW1lbnRzIGluIFdJVEgKIAkgKiBjbGF1c2VzLiAgKFdlIGhhdmUgdG8gZG8gdGhpcyBmaXJz dCBiZWNhdXNlIHRoZSBXSVRIIGNsYXVzZXMgbWF5IGdldApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCmluZGV4IDA3NmMzYzAxOWYuLjI1MDM5NjkxZTUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMKQEAgLTUxODIsNiArNTE4Miw1MyBAQCBnZXRfd2l0aF9jbGF1 c2UoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCWlmIChQUkVU VFlfSU5ERU5UKGNvbnRleHQpKQogCQkJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwg IiIsIDAsIDAsIDApOwogCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcpJyk7CisKKwkJ aWYgKGN0ZS0+c2VhcmNoX2NsYXVzZSkKKwkJeworCQkJYm9vbAkJZmlyc3QgPSB0cnVlOwor CQkJTGlzdENlbGwgICAqbGM7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIFNFQVJD SCAlcyBGSVJTVCBCWSAiLAorCQkJCQkJCSBjdGUtPnNlYXJjaF9jbGF1c2UtPnNlYXJjaF9i cmVhZHRoX2ZpcnN0ID8gIkJSRUFEVEgiIDogIkRFUFRIIik7CisKKwkJCWZvcmVhY2gobGMs IGN0ZS0+c2VhcmNoX2NsYXVzZS0+c2VhcmNoX2NvbF9saXN0KQorCQkJeworCQkJCWlmIChm aXJzdCkKKwkJCQkJZmlyc3QgPSBmYWxzZTsKKwkJCQllbHNlCisJCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1 ZiwKKwkJCQkJCQkJCSAgIHF1b3RlX2lkZW50aWZpZXIoc3RyVmFsKGxmaXJzdChsYykpKSk7 CisJCQl9CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIFNFVCAlcyIsIHF1b3RlX2lk ZW50aWZpZXIoY3RlLT5zZWFyY2hfY2xhdXNlLT5zZWFyY2hfc2VxX2NvbHVtbikpOworCQl9 CisKKwkJaWYgKGN0ZS0+Y3ljbGVfY2xhdXNlKQorCQl7CisJCQlib29sCQlmaXJzdCA9IHRy dWU7CisJCQlMaXN0Q2VsbCAgICpsYzsKKworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhi dWYsICIgQ1lDTEUgIik7CisKKwkJCWZvcmVhY2gobGMsIGN0ZS0+Y3ljbGVfY2xhdXNlLT5j eWNsZV9jb2xfbGlzdCkKKwkJCXsKKwkJCQlpZiAoZmlyc3QpCisJCQkJCWZpcnN0ID0gZmFs c2U7CisJCQkJZWxzZQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7 CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsCisJCQkJCQkJCQkgICBxdW90ZV9p ZGVudGlmaWVyKHN0clZhbChsZmlyc3QobGMpKSkpOworCQkJfQorCisJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIiBTRVQgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGN0ZS0+Y3ljbGVfY2xh dXNlLT5jeWNsZV9tYXJrX2NvbHVtbikpOworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhi dWYsICIgVE8gIik7CisJCQlnZXRfcnVsZV9leHByKGN0ZS0+Y3ljbGVfY2xhdXNlLT5jeWNs ZV9tYXJrX3ZhbHVlLCBjb250ZXh0LCBmYWxzZSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKGJ1ZiwgIiBERUZBVUxUICIpOworCQkJZ2V0X3J1bGVfZXhwcihjdGUtPmN5Y2xlX2Ns YXVzZS0+Y3ljbGVfbWFya19kZWZhdWx0LCBjb250ZXh0LCBmYWxzZSk7CisJCQlhcHBlbmRT dHJpbmdJbmZvKGJ1ZiwgIiBVU0lORyAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY3RlLT5jeWNs ZV9jbGF1c2UtPmN5Y2xlX3BhdGhfY29sdW1uKSk7CisJCX0KKwogCQlzZXAgPSAiLCAiOwog CX0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL25vZGVzLmgKaW5kZXggMzgxZDg0YjRlNC4uM2M2ZjUyMWY4NCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9ub2Rlcy5oCkBAIC00NzIsNiArNDcyLDggQEAgdHlwZWRlZiBlbnVtIE5vZGVUYWcKIAlU X1dpdGhDbGF1c2UsCiAJVF9JbmZlckNsYXVzZSwKIAlUX09uQ29uZmxpY3RDbGF1c2UsCisJ VF9DVEVTZWFyY2hDbGF1c2UsCisJVF9DVEVDeWNsZUNsYXVzZSwKIAlUX0NvbW1vblRhYmxl RXhwciwKIAlUX1JvbGVTcGVjLAogCVRfVHJpZ2dlclRyYW5zaXRpb24sCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKaW5kZXggNWUxZmZhZmI5MS4uZjRhM2Y0NjZiMyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaApAQCAtMTQzNCw5ICsxNDM0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgT25D b25mbGljdENsYXVzZQogLyoKICAqIENvbW1vblRhYmxlRXhwciAtCiAgKgkgICByZXByZXNl bnRhdGlvbiBvZiBXSVRIIGxpc3QgZWxlbWVudAotICoKLSAqIFdlIGRvbid0IGN1cnJlbnRs eSBzdXBwb3J0IHRoZSBTRUFSQ0ggb3IgQ1lDTEUgY2xhdXNlLgogICovCisKIHR5cGVkZWYg ZW51bSBDVEVNYXRlcmlhbGl6ZQogewogCUNURU1hdGVyaWFsaXplRGVmYXVsdCwJCS8qIG5v IG9wdGlvbiBzcGVjaWZpZWQgKi8KQEAgLTE0NDQsNiArMTQ0MywyOSBAQCB0eXBlZGVmIGVu dW0gQ1RFTWF0ZXJpYWxpemUKIAlDVEVNYXRlcmlhbGl6ZU5ldmVyCQkJLyogTk9UIE1BVEVS SUFMSVpFRCAqLwogfSBDVEVNYXRlcmlhbGl6ZTsKIAordHlwZWRlZiBzdHJ1Y3QgQ1RFU2Vh cmNoQ2xhdXNlCit7CisJTm9kZVRhZwkJdHlwZTsKKwlMaXN0CSAgICpzZWFyY2hfY29sX2xp c3Q7CisJYm9vbAkJc2VhcmNoX2JyZWFkdGhfZmlyc3Q7CisJY2hhcgkgICAqc2VhcmNoX3Nl cV9jb2x1bW47CisJaW50CQkJbG9jYXRpb247Cit9IENURVNlYXJjaENsYXVzZTsKKwordHlw ZWRlZiBzdHJ1Y3QgQ1RFQ3ljbGVDbGF1c2UKK3sKKwlOb2RlVGFnCQl0eXBlOworCUxpc3QJ ICAgKmN5Y2xlX2NvbF9saXN0OworCWNoYXIJICAgKmN5Y2xlX21hcmtfY29sdW1uOworCU5v ZGUJICAgKmN5Y2xlX21hcmtfdmFsdWU7CisJTm9kZQkgICAqY3ljbGVfbWFya19kZWZhdWx0 OworCU9pZAkJCWN5Y2xlX21hcmtfdHlwZTsJLyogdHlwZSBvZiBfdmFsdWUgYW5kIF9kZWZh dWx0ICovCisJaW50CQkJY3ljbGVfbWFya190eXBtb2Q7CisJT2lkCQkJY3ljbGVfbWFya19j b2xsYXRpb247CisJY2hhcgkgICAqY3ljbGVfcGF0aF9jb2x1bW47CisJaW50CQkJbG9jYXRp b247Cit9IENURUN5Y2xlQ2xhdXNlOworCiB0eXBlZGVmIHN0cnVjdCBDb21tb25UYWJsZUV4 cHIKIHsKIAlOb2RlVGFnCQl0eXBlOwpAQCAtMTQ2MSw2ICsxNDgzLDggQEAgdHlwZWRlZiBz dHJ1Y3QgQ29tbW9uVGFibGVFeHByCiAJTGlzdAkgICAqY3RlY29sdHlwZXM7CS8qIE9JRCBs aXN0IG9mIG91dHB1dCBjb2x1bW4gdHlwZSBPSURzICovCiAJTGlzdAkgICAqY3RlY29sdHlw bW9kczsJLyogaW50ZWdlciBsaXN0IG9mIG91dHB1dCBjb2x1bW4gdHlwbW9kcyAqLwogCUxp c3QJICAgKmN0ZWNvbGNvbGxhdGlvbnM7CS8qIE9JRCBsaXN0IG9mIGNvbHVtbiBjb2xsYXRp b24gT0lEcyAqLworCUNURVNlYXJjaENsYXVzZSAqc2VhcmNoX2NsYXVzZTsKKwlDVEVDeWNs ZUNsYXVzZSAqY3ljbGVfY2xhdXNlOwogfSBDb21tb25UYWJsZUV4cHI7CiAKIC8qIENvbnZl bmllbmNlIG1hY3JvIHRvIGdldCB0aGUgb3V0cHV0IHRsaXN0IG9mIGEgQ1RFJ3MgcXVlcnkg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCAwOGYyMmNlMjExLi41ZTViNzZlNmRlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCkBAIC02MCw2ICs2MCw3IEBAIFBHX0tFWVdPUkQoImJpbmFyeSIs IEJJTkFSWSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoImJpdCIsIEJJ VCwgQ09MX05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoImJvb2xlYW4iLCBCT09MRUFOX1As IENPTF9OQU1FX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJib3RoIiwgQk9USCwgUkVTRVJWRURf S0VZV09SRCkKK1BHX0tFWVdPUkQoImJyZWFkdGgiLCBCUkVBRFRILCBVTlJFU0VSVkVEX0tF WVdPUkQpCiBQR19LRVlXT1JEKCJieSIsIEJZLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19L RVlXT1JEKCJjYWNoZSIsIENBQ0hFLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JE KCJjYWxsIiwgQ0FMTCwgVU5SRVNFUlZFRF9LRVlXT1JEKQpAQCAtMTI4LDYgKzEyOSw3IEBA IFBHX0tFWVdPUkQoImRlbGV0ZSIsIERFTEVURV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQ R19LRVlXT1JEKCJkZWxpbWl0ZXIiLCBERUxJTUlURVIsIFVOUkVTRVJWRURfS0VZV09SRCkK IFBHX0tFWVdPUkQoImRlbGltaXRlcnMiLCBERUxJTUlURVJTLCBVTlJFU0VSVkVEX0tFWVdP UkQpCiBQR19LRVlXT1JEKCJkZXBlbmRzIiwgREVQRU5EUywgVU5SRVNFUlZFRF9LRVlXT1JE KQorUEdfS0VZV09SRCgiZGVwdGgiLCBERVBUSCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdf S0VZV09SRCgiZGVzYyIsIERFU0MsIFJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJk ZXRhY2giLCBERVRBQ0gsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImRpY3Rp b25hcnkiLCBESUNUSU9OQVJZLCBVTlJFU0VSVkVEX0tFWVdPUkQpCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX25vZGUuaAppbmRleCBkMjU4MTlhYTI4Li4wYjBmZGFiYjFhIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNl ci9wYXJzZV9ub2RlLmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBzdHJ1Y3QgUGFyc2VOYW1lc3Bh Y2VDb2x1bW4KIAlPaWQJCQlwX3ZhcmNvbGxpZDsJLyogT0lEIG9mIGNvbGxhdGlvbiwgb3Ig SW52YWxpZE9pZCAqLwogCUluZGV4CQlwX3Zhcm5vc3luOwkJLyogcmFuZ2V0YWJsZSBpbmRl eCBvZiBzeW50YWN0aWMgcmVmZXJlbnQgKi8KIAlBdHRyTnVtYmVyCXBfdmFyYXR0bm9zeW47 CS8qIGF0dHJpYnV0ZSBudW1iZXIgb2Ygc3ludGFjdGljIHJlZmVyZW50ICovCisJYm9vbAkJ cF9kb250ZXhwYW5kOwkvKiBub3QgaW5jbHVkZWQgaW4gc3RhciBleHBhbnNpb24gKi8KIH07 CiAKIC8qIFN1cHBvcnQgZm9yIHBhcnNlcl9lcnJwb3NpdGlvbl9jYWxsYmFjayBmdW5jdGlv biAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRoLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aC5vdXQKaW5kZXggNjdlYWViNGYzZS4u ZmM0ZmY0MmFmYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRo Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGgub3V0CkBAIC01Njgs NiArNTY4LDExOCBAQCBTRUxFQ1QgdDEuaWQsIHQyLnBhdGgsIHQyIEZST00gdCBBUyB0MSBK T0lOIHQgQVMgdDIgT04KICAxNiB8IHszLDcsMTEsMTZ9IHwgKDE2LCJ7Myw3LDExLDE2fSIp CiAoMTYgcm93cykKIAorLS0gU0VBUkNIIGNsYXVzZQorY3JlYXRlIHRlbXAgdGFibGUgZ3Jh cGgwKCBmIGludCwgdCBpbnQsIGxhYmVsIHRleHQgKTsKK2luc2VydCBpbnRvIGdyYXBoMCB2 YWx1ZXMKKwkoMSwgMiwgJ2FyYyAxIC0+IDInKSwKKwkoMSwgMywgJ2FyYyAxIC0+IDMnKSwK KwkoMiwgMywgJ2FyYyAyIC0+IDMnKSwKKwkoMSwgNCwgJ2FyYyAxIC0+IDQnKSwKKwkoNCwg NSwgJ2FyYyA0IC0+IDUnKTsKK3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBs YWJlbCkgYXMgKAorCXNlbGVjdCAqIGZyb20gZ3JhcGgwIGcKKwl1bmlvbiBhbGwKKwlzZWxl Y3QgZy4qCisJZnJvbSBncmFwaDAgZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0g c2cudAorKSBzZWFyY2ggZGVwdGggZmlyc3QgYnkgZiwgdCBzZXQgc2VxCitzZWxlY3QgKiBm cm9tIHNlYXJjaF9ncmFwaCBvcmRlciBieSBzZXE7CisgZiB8IHQgfCAgIGxhYmVsICAgIHwg ICAgICAgIHNlcSAgICAgICAgCistLS0rLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tCisgMSB8IDIgfCBhcmMgMSAtPiAyIHwgeyIoMSwyKSJ9CisgMiB8IDMgfCBhcmMg MiAtPiAzIHwgeyIoMSwyKSIsIigyLDMpIn0KKyAxIHwgMyB8IGFyYyAxIC0+IDMgfCB7Iigx LDMpIn0KKyAxIHwgNCB8IGFyYyAxIC0+IDQgfCB7IigxLDQpIn0KKyA0IHwgNSB8IGFyYyA0 IC0+IDUgfCB7IigxLDQpIiwiKDQsNSkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8IHsiKDIs MykifQorIDQgfCA1IHwgYXJjIDQgLT4gNSB8IHsiKDQsNSkifQorKDcgcm93cykKKword2l0 aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICog ZnJvbSBncmFwaDAgZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoMCBn LCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVyZSBnLmYgPSBzZy50CispIHNlYXJjaCBicmVhZHRo IGZpcnN0IGJ5IGYsIHQgc2V0IHNlcQorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGggb3Jk ZXIgYnkgc2VxOworIGYgfCB0IHwgICBsYWJlbCAgICB8ICAgc2VxICAgCistLS0rLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0KKyAxIHwgMiB8IGFyYyAxIC0+IDIgfCAoMCwxLDIpCisg MSB8IDMgfCBhcmMgMSAtPiAzIHwgKDAsMSwzKQorIDEgfCA0IHwgYXJjIDEgLT4gNCB8ICgw LDEsNCkKKyAyIHwgMyB8IGFyYyAyIC0+IDMgfCAoMCwyLDMpCisgNCB8IDUgfCBhcmMgNCAt PiA1IHwgKDAsNCw1KQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8ICgxLDIsMykKKyA0IHwgNSB8 IGFyYyA0IC0+IDUgfCAoMSw0LDUpCisoNyByb3dzKQorCistLSB2YXJpb3VzIHN5bnRheCBl cnJvcnMKK3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAor CXNlbGVjdCAqIGZyb20gZ3JhcGgwIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJv bSBncmFwaDAgZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBzZWFy Y2ggZGVwdGggZmlyc3QgYnkgZm9vLCB0YXIgc2V0IHNlcQorc2VsZWN0ICogZnJvbSBzZWFy Y2hfZ3JhcGg7CitFUlJPUjogIHNlYXJjaCBjb2x1bW4gImZvbyIgbm90IGluIFdJVEggcXVl cnkgY29sdW1uIGxpc3QKK0xJTkUgNzogKSBzZWFyY2ggZGVwdGggZmlyc3QgYnkgZm9vLCB0 YXIgc2V0IHNlcQorICAgICAgICAgIF4KK3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChm LCB0LCBsYWJlbCkgYXMgKAorCXNlbGVjdCAqIGZyb20gZ3JhcGgwIGcKKwl1bmlvbiBhbGwK KwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaDAgZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUg Zy5mID0gc2cudAorKSBzZWFyY2ggZGVwdGggZmlyc3QgYnkgZiwgdCBzZXQgbGFiZWwKK3Nl bGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoOworRVJST1I6ICBzZWFyY2ggc2VxdWVuY2UgY29s dW1uIG5hbWUgImxhYmVsIiBhbHJlYWR5IHVzZWQgaW4gV0lUSCBxdWVyeSBjb2x1bW4gbGlz dAorTElORSA3OiApIHNlYXJjaCBkZXB0aCBmaXJzdCBieSBmLCB0IHNldCBsYWJlbAorICAg ICAgICAgIF4KK3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMg KAorCXNlbGVjdCAqIGZyb20gZ3JhcGgwIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJ ZnJvbSBncmFwaDAgZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBz ZWFyY2ggZGVwdGggZmlyc3QgYnkgZiwgdCwgZiBzZXQgc2VxCitzZWxlY3QgKiBmcm9tIHNl YXJjaF9ncmFwaDsKK0VSUk9SOiAgc2VhcmNoIGNvbHVtbiAiZiIgc3BlY2lmaWVkIG1vcmUg dGhhbiBvbmNlCitMSU5FIDc6ICkgc2VhcmNoIGRlcHRoIGZpcnN0IGJ5IGYsIHQsIGYgc2V0 IHNlcQorICAgICAgICAgIF4KKy0tIHRlc3QgcnVsZXV0aWxzCitjcmVhdGUgdGVtcCB2aWV3 IHZfc2VhcmNoIGFzCit3aXRoIHJlY3Vyc2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwp IGFzICgKKwlzZWxlY3QgKiBmcm9tIGdyYXBoMCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcu KgorCWZyb20gZ3JhcGgwIGcsIHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQK Kykgc2VhcmNoIGRlcHRoIGZpcnN0IGJ5IGYsIHQgc2V0IHNlcQorc2VsZWN0IGYsIHQsIGxh YmVsIGZyb20gc2VhcmNoX2dyYXBoOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X3NlYXJj aCcpOworICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg V0lUSCBSRUNVUlNJVkUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBBUyAoKworICAgICAg ICAgIFNFTEVDVCBnLmYsICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgZy50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICBn LmxhYmVsICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgRlJPTSBn cmFwaDAgZyAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICBVTklPTiBBTEwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICBTRUxFQ1QgZy5mLCAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgIGcudCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgZy5sYWJlbCAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgIEZST00gZ3JhcGgwIGcsICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAgIHNlYXJjaF9ncmFwaCBzZyAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgIFdIRVJFIChnLmYgPSBzZy50KSAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICkgU0VBUkNIIERFUFRIIEZJUlNUIEJZIGYsIHQgU0VUIHNlcSAgKwor ICBTRUxFQ1Qgc2VhcmNoX2dyYXBoLmYsICAgICAgICAgICAgICAgICAgICAgICArCisgICAg IHNlYXJjaF9ncmFwaC50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgc2Vh cmNoX2dyYXBoLmxhYmVsICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gc2Vh cmNoX2dyYXBoOworKDEgcm93KQorCiAtLQogLS0gdGVzdCBjeWNsZSBkZXRlY3Rpb24KIC0t CkBAIC02NTQsNiArNzY2LDI1OCBAQCBzZWxlY3QgKiBmcm9tIHNlYXJjaF9ncmFwaCBvcmRl ciBieSBwYXRoOwogIDUgfCAxIHwgYXJjIDUgLT4gMSB8IHsiKDUsMSkiLCIoMSw0KSIsIig0 LDUpIiwiKDUsMSkifSAgICAgICAgIHwgdAogKDI1IHJvd3MpCiAKKy0tIENZQ0xFIGNsYXVz ZQord2l0aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2Vs ZWN0ICogZnJvbSBncmFwaCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgorCWZyb20gZ3Jh cGggZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBjeWNsZSBmLCB0 IHNldCBpc19jeWNsZSB0byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAorc2VsZWN0 ICogZnJvbSBzZWFyY2hfZ3JhcGg7CisgZiB8IHQgfCAgIGxhYmVsICAgIHwgaXNfY3ljbGUg fCAgICAgICAgICAgICAgICAgICBwYXRoICAgICAgICAgICAgICAgICAgICAKKy0tLSstLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIDEgfCAyIHwgYXJjIDEgLT4gMiB8IGYgICAgICAgIHwgeyIoMSwy KSJ9CisgMSB8IDMgfCBhcmMgMSAtPiAzIHwgZiAgICAgICAgfCB7IigxLDMpIn0KKyAyIHwg MyB8IGFyYyAyIC0+IDMgfCBmICAgICAgICB8IHsiKDIsMykifQorIDEgfCA0IHwgYXJjIDEg LT4gNCB8IGYgICAgICAgIHwgeyIoMSw0KSJ9CisgNCB8IDUgfCBhcmMgNCAtPiA1IHwgZiAg ICAgICAgfCB7Iig0LDUpIn0KKyA1IHwgMSB8IGFyYyA1IC0+IDEgfCBmICAgICAgICB8IHsi KDUsMSkifQorIDEgfCAyIHwgYXJjIDEgLT4gMiB8IGYgICAgICAgIHwgeyIoNSwxKSIsIigx LDIpIn0KKyAxIHwgMyB8IGFyYyAxIC0+IDMgfCBmICAgICAgICB8IHsiKDUsMSkiLCIoMSwz KSJ9CisgMSB8IDQgfCBhcmMgMSAtPiA0IHwgZiAgICAgICAgfCB7Iig1LDEpIiwiKDEsNCki fQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8IGYgICAgICAgIHwgeyIoMSwyKSIsIigyLDMpIn0K KyA0IHwgNSB8IGFyYyA0IC0+IDUgfCBmICAgICAgICB8IHsiKDEsNCkiLCIoNCw1KSJ9Cisg NSB8IDEgfCBhcmMgNSAtPiAxIHwgZiAgICAgICAgfCB7Iig0LDUpIiwiKDUsMSkifQorIDEg fCAyIHwgYXJjIDEgLT4gMiB8IGYgICAgICAgIHwgeyIoNCw1KSIsIig1LDEpIiwiKDEsMiki fQorIDEgfCAzIHwgYXJjIDEgLT4gMyB8IGYgICAgICAgIHwgeyIoNCw1KSIsIig1LDEpIiwi KDEsMykifQorIDEgfCA0IHwgYXJjIDEgLT4gNCB8IGYgICAgICAgIHwgeyIoNCw1KSIsIig1 LDEpIiwiKDEsNCkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8IGYgICAgICAgIHwgeyIoNSwx KSIsIigxLDIpIiwiKDIsMykifQorIDQgfCA1IHwgYXJjIDQgLT4gNSB8IGYgICAgICAgIHwg eyIoNSwxKSIsIigxLDQpIiwiKDQsNSkifQorIDUgfCAxIHwgYXJjIDUgLT4gMSB8IGYgICAg ICAgIHwgeyIoMSw0KSIsIig0LDUpIiwiKDUsMSkifQorIDEgfCAyIHwgYXJjIDEgLT4gMiB8 IGYgICAgICAgIHwgeyIoMSw0KSIsIig0LDUpIiwiKDUsMSkiLCIoMSwyKSJ9CisgMSB8IDMg fCBhcmMgMSAtPiAzIHwgZiAgICAgICAgfCB7IigxLDQpIiwiKDQsNSkiLCIoNSwxKSIsIigx LDMpIn0KKyAxIHwgNCB8IGFyYyAxIC0+IDQgfCB0ICAgICAgICB8IHsiKDEsNCkiLCIoNCw1 KSIsIig1LDEpIiwiKDEsNCkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8IGYgICAgICAgIHwg eyIoNCw1KSIsIig1LDEpIiwiKDEsMikiLCIoMiwzKSJ9CisgNCB8IDUgfCBhcmMgNCAtPiA1 IHwgdCAgICAgICAgfCB7Iig0LDUpIiwiKDUsMSkiLCIoMSw0KSIsIig0LDUpIn0KKyA1IHwg MSB8IGFyYyA1IC0+IDEgfCB0ICAgICAgICB8IHsiKDUsMSkiLCIoMSw0KSIsIig0LDUpIiwi KDUsMSkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8IGYgICAgICAgIHwgeyIoMSw0KSIsIig0 LDUpIiwiKDUsMSkiLCIoMSwyKSIsIigyLDMpIn0KKygyNSByb3dzKQorCistLSBtdWx0aXBs ZSBDVEVzCit3aXRoIHJlY3Vyc2l2ZQorZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKyAgdmFs dWVzICgxLCAyLCAnYXJjIDEgLT4gMicpLAorICAgICAgICAgKDEsIDMsICdhcmMgMSAtPiAz JyksCisgICAgICAgICAoMiwgMywgJ2FyYyAyIC0+IDMnKSwKKyAgICAgICAgICgxLCA0LCAn YXJjIDEgLT4gNCcpLAorICAgICAgICAgKDQsIDUsICdhcmMgNCAtPiA1JyksCisgICAgICAg ICAoNSwgMSwgJ2FyYyA1IC0+IDEnKQorKSwKK3NlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkg YXMgKAorICAgICAgICBzZWxlY3QgKiBmcm9tIGdyYXBoIGcKKyAgICAgICAgdW5pb24gYWxs CisgICAgICAgIHNlbGVjdCBnLioKKyAgICAgICAgZnJvbSBncmFwaCBnLCBzZWFyY2hfZ3Jh cGggc2cKKyAgICAgICAgd2hlcmUgZy5mID0gc2cudAorKSBjeWNsZSBmLCB0IHNldCBpc19j eWNsZSB0byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAorc2VsZWN0IGYsIHQsIGxh YmVsIGZyb20gc2VhcmNoX2dyYXBoOworIGYgfCB0IHwgICBsYWJlbCAgICAKKy0tLSstLS0r LS0tLS0tLS0tLS0tCisgMSB8IDIgfCBhcmMgMSAtPiAyCisgMSB8IDMgfCBhcmMgMSAtPiAz CisgMiB8IDMgfCBhcmMgMiAtPiAzCisgMSB8IDQgfCBhcmMgMSAtPiA0CisgNCB8IDUgfCBh cmMgNCAtPiA1CisgNSB8IDEgfCBhcmMgNSAtPiAxCisgMiB8IDMgfCBhcmMgMiAtPiAzCisg NCB8IDUgfCBhcmMgNCAtPiA1CisgNSB8IDEgfCBhcmMgNSAtPiAxCisgMSB8IDQgfCBhcmMg MSAtPiA0CisgMSB8IDMgfCBhcmMgMSAtPiAzCisgMSB8IDIgfCBhcmMgMSAtPiAyCisgNSB8 IDEgfCBhcmMgNSAtPiAxCisgMSB8IDQgfCBhcmMgMSAtPiA0CisgMSB8IDMgfCBhcmMgMSAt PiAzCisgMSB8IDIgfCBhcmMgMSAtPiAyCisgNCB8IDUgfCBhcmMgNCAtPiA1CisgMiB8IDMg fCBhcmMgMiAtPiAzCisgMSB8IDQgfCBhcmMgMSAtPiA0CisgMSB8IDMgfCBhcmMgMSAtPiAz CisgMSB8IDIgfCBhcmMgMSAtPiAyCisgNCB8IDUgfCBhcmMgNCAtPiA1CisgMiB8IDMgfCBh cmMgMiAtPiAzCisgNSB8IDEgfCBhcmMgNSAtPiAxCisgMiB8IDMgfCBhcmMgMiAtPiAzCiso MjUgcm93cykKKworLS0gc3RhciBleHBhbnNpb24KK3dpdGggcmVjdXJzaXZlIGEgYXMgKAor CXNlbGVjdCAxIGFzIGIKKwl1bmlvbiBhbGwKKwlzZWxlY3QgKiBmcm9tIGEKKykgY3ljbGUg YiBzZXQgYyB0byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcAorc2VsZWN0ICogZnJvbSBh OworIGIgfCBjIHwgICAgIHAgICAgIAorLS0tKy0tLSstLS0tLS0tLS0tLQorIDEgfCBmIHwg eygxKX0KKyAxIHwgdCB8IHsoMSksKDEpfQorKDIgcm93cykKKworLS0gc2VhcmNoK2N5Y2xl Cit3aXRoIHJlY3Vyc2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxl Y3QgKiBmcm9tIGdyYXBoIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFw aCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVyZSBnLmYgPSBzZy50CispIHNlYXJjaCBkZXB0 aCBmaXJzdCBieSBmLCB0IHNldCBzZXEKKyAgY3ljbGUgZiwgdCBzZXQgaXNfY3ljbGUgdG8g dHJ1ZSBkZWZhdWx0IGZhbHNlIHVzaW5nIHBhdGgKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dy YXBoOworIGYgfCB0IHwgICBsYWJlbCAgICB8ICAgICAgICAgICAgICAgICAgICBzZXEgICAg ICAgICAgICAgICAgICAgIHwgaXNfY3ljbGUgfCAgICAgICAgICAgICAgICAgICBwYXRoICAg ICAgICAgICAgICAgICAgICAKKy0tLSstLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSB8IDIgfCBhcmMgMSAtPiAyIHwg eyIoMSwyKSJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICB8 IHsiKDEsMikifQorIDEgfCAzIHwgYXJjIDEgLT4gMyB8IHsiKDEsMykifSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgfCB7IigxLDMpIn0KKyAyIHwgMyB8 IGFyYyAyIC0+IDMgfCB7IigyLDMpIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGYgICAgICAgIHwgeyIoMiwzKSJ9CisgMSB8IDQgfCBhcmMgMSAtPiA0IHwgeyIoMSw0 KSJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDEs NCkifQorIDQgfCA1IHwgYXJjIDQgLT4gNSB8IHsiKDQsNSkifSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgfCB7Iig0LDUpIn0KKyA1IHwgMSB8IGFyYyA1 IC0+IDEgfCB7Iig1LDEpIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGYg ICAgICAgIHwgeyIoNSwxKSJ9CisgMSB8IDIgfCBhcmMgMSAtPiAyIHwgeyIoNSwxKSIsIigx LDIpIn0gICAgICAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDUsMSkiLCIo MSwyKSJ9CisgMSB8IDMgfCBhcmMgMSAtPiAzIHwgeyIoNSwxKSIsIigxLDMpIn0gICAgICAg ICAgICAgICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDUsMSkiLCIoMSwzKSJ9CisgMSB8 IDQgfCBhcmMgMSAtPiA0IHwgeyIoNSwxKSIsIigxLDQpIn0gICAgICAgICAgICAgICAgICAg ICAgICAgfCBmICAgICAgICB8IHsiKDUsMSkiLCIoMSw0KSJ9CisgMiB8IDMgfCBhcmMgMiAt PiAzIHwgeyIoMSwyKSIsIigyLDMpIn0gICAgICAgICAgICAgICAgICAgICAgICAgfCBmICAg ICAgICB8IHsiKDEsMikiLCIoMiwzKSJ9CisgNCB8IDUgfCBhcmMgNCAtPiA1IHwgeyIoMSw0 KSIsIig0LDUpIn0gICAgICAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDEs NCkiLCIoNCw1KSJ9CisgNSB8IDEgfCBhcmMgNSAtPiAxIHwgeyIoNCw1KSIsIig1LDEpIn0g ICAgICAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDQsNSkiLCIoNSwxKSJ9 CisgMSB8IDIgfCBhcmMgMSAtPiAyIHwgeyIoNCw1KSIsIig1LDEpIiwiKDEsMikifSAgICAg ICAgICAgICAgICAgfCBmICAgICAgICB8IHsiKDQsNSkiLCIoNSwxKSIsIigxLDIpIn0KKyAx IHwgMyB8IGFyYyAxIC0+IDMgfCB7Iig0LDUpIiwiKDUsMSkiLCIoMSwzKSJ9ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgIHwgeyIoNCw1KSIsIig1LDEpIiwiKDEsMykifQorIDEgfCA0 IHwgYXJjIDEgLT4gNCB8IHsiKDQsNSkiLCIoNSwxKSIsIigxLDQpIn0gICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgfCB7Iig0LDUpIiwiKDUsMSkiLCIoMSw0KSJ9CisgMiB8IDMgfCBh cmMgMiAtPiAzIHwgeyIoNSwxKSIsIigxLDIpIiwiKDIsMykifSAgICAgICAgICAgICAgICAg fCBmICAgICAgICB8IHsiKDUsMSkiLCIoMSwyKSIsIigyLDMpIn0KKyA0IHwgNSB8IGFyYyA0 IC0+IDUgfCB7Iig1LDEpIiwiKDEsNCkiLCIoNCw1KSJ9ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgIHwgeyIoNSwxKSIsIigxLDQpIiwiKDQsNSkifQorIDUgfCAxIHwgYXJjIDUgLT4g MSB8IHsiKDEsNCkiLCIoNCw1KSIsIig1LDEpIn0gICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgfCB7IigxLDQpIiwiKDQsNSkiLCIoNSwxKSJ9CisgMSB8IDIgfCBhcmMgMSAtPiAyIHwg eyIoMSw0KSIsIig0LDUpIiwiKDUsMSkiLCIoMSwyKSJ9ICAgICAgICAgfCBmICAgICAgICB8 IHsiKDEsNCkiLCIoNCw1KSIsIig1LDEpIiwiKDEsMikifQorIDEgfCAzIHwgYXJjIDEgLT4g MyB8IHsiKDEsNCkiLCIoNCw1KSIsIig1LDEpIiwiKDEsMykifSAgICAgICAgIHwgZiAgICAg ICAgfCB7IigxLDQpIiwiKDQsNSkiLCIoNSwxKSIsIigxLDMpIn0KKyAxIHwgNCB8IGFyYyAx IC0+IDQgfCB7IigxLDQpIiwiKDQsNSkiLCIoNSwxKSIsIigxLDQpIn0gICAgICAgICB8IHQg ICAgICAgIHwgeyIoMSw0KSIsIig0LDUpIiwiKDUsMSkiLCIoMSw0KSJ9CisgMiB8IDMgfCBh cmMgMiAtPiAzIHwgeyIoNCw1KSIsIig1LDEpIiwiKDEsMikiLCIoMiwzKSJ9ICAgICAgICAg fCBmICAgICAgICB8IHsiKDQsNSkiLCIoNSwxKSIsIigxLDIpIiwiKDIsMykifQorIDQgfCA1 IHwgYXJjIDQgLT4gNSB8IHsiKDQsNSkiLCIoNSwxKSIsIigxLDQpIiwiKDQsNSkifSAgICAg ICAgIHwgdCAgICAgICAgfCB7Iig0LDUpIiwiKDUsMSkiLCIoMSw0KSIsIig0LDUpIn0KKyA1 IHwgMSB8IGFyYyA1IC0+IDEgfCB7Iig1LDEpIiwiKDEsNCkiLCIoNCw1KSIsIig1LDEpIn0g ICAgICAgICB8IHQgICAgICAgIHwgeyIoNSwxKSIsIigxLDQpIiwiKDQsNSkiLCIoNSwxKSJ9 CisgMiB8IDMgfCBhcmMgMiAtPiAzIHwgeyIoMSw0KSIsIig0LDUpIiwiKDUsMSkiLCIoMSwy KSIsIigyLDMpIn0gfCBmICAgICAgICB8IHsiKDEsNCkiLCIoNCw1KSIsIig1LDEpIiwiKDEs MikiLCIoMiwzKSJ9CisoMjUgcm93cykKKword2l0aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBo KGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICogZnJvbSBncmFwaCBnCisJdW5pb24gYWxs CisJc2VsZWN0IGcuKgorCWZyb20gZ3JhcGggZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUg Zy5mID0gc2cudAorKSBzZWFyY2ggYnJlYWR0aCBmaXJzdCBieSBmLCB0IHNldCBzZXEKKyAg Y3ljbGUgZiwgdCBzZXQgaXNfY3ljbGUgdG8gdHJ1ZSBkZWZhdWx0IGZhbHNlIHVzaW5nIHBh dGgKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoOworIGYgfCB0IHwgICBsYWJlbCAgICB8 ICAgc2VxICAgfCBpc19jeWNsZSB8ICAgICAgICAgICAgICAgICAgIHBhdGggICAgICAgICAg ICAgICAgICAgIAorLS0tKy0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgfCAyIHwg YXJjIDEgLT4gMiB8ICgwLDEsMikgfCBmICAgICAgICB8IHsiKDEsMikifQorIDEgfCAzIHwg YXJjIDEgLT4gMyB8ICgwLDEsMykgfCBmICAgICAgICB8IHsiKDEsMykifQorIDIgfCAzIHwg YXJjIDIgLT4gMyB8ICgwLDIsMykgfCBmICAgICAgICB8IHsiKDIsMykifQorIDEgfCA0IHwg YXJjIDEgLT4gNCB8ICgwLDEsNCkgfCBmICAgICAgICB8IHsiKDEsNCkifQorIDQgfCA1IHwg YXJjIDQgLT4gNSB8ICgwLDQsNSkgfCBmICAgICAgICB8IHsiKDQsNSkifQorIDUgfCAxIHwg YXJjIDUgLT4gMSB8ICgwLDUsMSkgfCBmICAgICAgICB8IHsiKDUsMSkifQorIDEgfCAyIHwg YXJjIDEgLT4gMiB8ICgxLDEsMikgfCBmICAgICAgICB8IHsiKDUsMSkiLCIoMSwyKSJ9Cisg MSB8IDMgfCBhcmMgMSAtPiAzIHwgKDEsMSwzKSB8IGYgICAgICAgIHwgeyIoNSwxKSIsIigx LDMpIn0KKyAxIHwgNCB8IGFyYyAxIC0+IDQgfCAoMSwxLDQpIHwgZiAgICAgICAgfCB7Iig1 LDEpIiwiKDEsNCkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8ICgxLDIsMykgfCBmICAgICAg ICB8IHsiKDEsMikiLCIoMiwzKSJ9CisgNCB8IDUgfCBhcmMgNCAtPiA1IHwgKDEsNCw1KSB8 IGYgICAgICAgIHwgeyIoMSw0KSIsIig0LDUpIn0KKyA1IHwgMSB8IGFyYyA1IC0+IDEgfCAo MSw1LDEpIHwgZiAgICAgICAgfCB7Iig0LDUpIiwiKDUsMSkifQorIDEgfCAyIHwgYXJjIDEg LT4gMiB8ICgyLDEsMikgfCBmICAgICAgICB8IHsiKDQsNSkiLCIoNSwxKSIsIigxLDIpIn0K KyAxIHwgMyB8IGFyYyAxIC0+IDMgfCAoMiwxLDMpIHwgZiAgICAgICAgfCB7Iig0LDUpIiwi KDUsMSkiLCIoMSwzKSJ9CisgMSB8IDQgfCBhcmMgMSAtPiA0IHwgKDIsMSw0KSB8IGYgICAg ICAgIHwgeyIoNCw1KSIsIig1LDEpIiwiKDEsNCkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8 ICgyLDIsMykgfCBmICAgICAgICB8IHsiKDUsMSkiLCIoMSwyKSIsIigyLDMpIn0KKyA0IHwg NSB8IGFyYyA0IC0+IDUgfCAoMiw0LDUpIHwgZiAgICAgICAgfCB7Iig1LDEpIiwiKDEsNCki LCIoNCw1KSJ9CisgNSB8IDEgfCBhcmMgNSAtPiAxIHwgKDIsNSwxKSB8IGYgICAgICAgIHwg eyIoMSw0KSIsIig0LDUpIiwiKDUsMSkifQorIDEgfCAyIHwgYXJjIDEgLT4gMiB8ICgzLDEs MikgfCBmICAgICAgICB8IHsiKDEsNCkiLCIoNCw1KSIsIig1LDEpIiwiKDEsMikifQorIDEg fCAzIHwgYXJjIDEgLT4gMyB8ICgzLDEsMykgfCBmICAgICAgICB8IHsiKDEsNCkiLCIoNCw1 KSIsIig1LDEpIiwiKDEsMykifQorIDEgfCA0IHwgYXJjIDEgLT4gNCB8ICgzLDEsNCkgfCB0 ICAgICAgICB8IHsiKDEsNCkiLCIoNCw1KSIsIig1LDEpIiwiKDEsNCkifQorIDIgfCAzIHwg YXJjIDIgLT4gMyB8ICgzLDIsMykgfCBmICAgICAgICB8IHsiKDQsNSkiLCIoNSwxKSIsIigx LDIpIiwiKDIsMykifQorIDQgfCA1IHwgYXJjIDQgLT4gNSB8ICgzLDQsNSkgfCB0ICAgICAg ICB8IHsiKDQsNSkiLCIoNSwxKSIsIigxLDQpIiwiKDQsNSkifQorIDUgfCAxIHwgYXJjIDUg LT4gMSB8ICgzLDUsMSkgfCB0ICAgICAgICB8IHsiKDUsMSkiLCIoMSw0KSIsIig0LDUpIiwi KDUsMSkifQorIDIgfCAzIHwgYXJjIDIgLT4gMyB8ICg0LDIsMykgfCBmICAgICAgICB8IHsi KDEsNCkiLCIoNCw1KSIsIig1LDEpIiwiKDEsMikiLCIoMiwzKSJ9CisoMjUgcm93cykKKwor LS0gdmFyaW91cyBzeW50YXggZXJyb3JzCit3aXRoIHJlY3Vyc2l2ZSBzZWFyY2hfZ3JhcGgo ZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdyYXBoIGcKKwl1bmlvbiBhbGwK KwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVyZSBn LmYgPSBzZy50CispIGN5Y2xlIGZvbywgdGFyIHNldCBpc19jeWNsZSB0byB0cnVlIGRlZmF1 bHQgZmFsc2UgdXNpbmcgcGF0aAorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGg7CitFUlJP UjogIGN5Y2xlIGNvbHVtbiAiZm9vIiBub3QgaW4gV0lUSCBxdWVyeSBjb2x1bW4gbGlzdAor TElORSA3OiApIGN5Y2xlIGZvbywgdGFyIHNldCBpc19jeWNsZSB0byB0cnVlIGRlZmF1bHQg ZmFsc2UgdXNpbmcgcGEuLi4KKyAgICAgICAgICBeCit3aXRoIHJlY3Vyc2l2ZSBzZWFyY2hf Z3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdyYXBoIGcKKwl1bmlv biBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3 aGVyZSBnLmYgPSBzZy50CispIGN5Y2xlIGYsIHQgc2V0IGlzX2N5Y2xlIHRvIHRydWUgZGVm YXVsdCA1NSB1c2luZyBwYXRoCitzZWxlY3QgKiBmcm9tIHNlYXJjaF9ncmFwaDsKK0VSUk9S OiAgQ1lDTEUgdHlwZXMgYm9vbGVhbiBhbmQgaW50ZWdlciBjYW5ub3QgYmUgbWF0Y2hlZAor TElORSA3OiApIGN5Y2xlIGYsIHQgc2V0IGlzX2N5Y2xlIHRvIHRydWUgZGVmYXVsdCA1NSB1 c2luZyBwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMg KAorCXNlbGVjdCAqIGZyb20gZ3JhcGggZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlm cm9tIGdyYXBoIGcsIHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgY3lj bGUgZiwgdCBzZXQgZiB0byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAorc2VsZWN0 ICogZnJvbSBzZWFyY2hfZ3JhcGg7CitFUlJPUjogIGN5Y2xlIGNvbHVtbiBuYW1lICJmIiBh bHJlYWR5IHVzZWQgaW4gV0lUSCBxdWVyeSBjb2x1bW4gbGlzdAorTElORSA3OiApIGN5Y2xl IGYsIHQgc2V0IGYgdG8gdHJ1ZSBkZWZhdWx0IGZhbHNlIHVzaW5nIHBhdGgKKyAgICAgICAg ICBeCit3aXRoIHJlY3Vyc2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlz ZWxlY3QgKiBmcm9tIGdyYXBoIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBn cmFwaCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVyZSBnLmYgPSBzZy50CispIGN5Y2xlIGYs IHQsIGYgc2V0IGlzX2N5Y2xlIHRvIHRydWUgZGVmYXVsdCBmYWxzZSB1c2luZyBwYXRoCitz ZWxlY3QgKiBmcm9tIHNlYXJjaF9ncmFwaDsKK0VSUk9SOiAgY3ljbGUgY29sdW1uICJmIiBz cGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UKK0xJTkUgNzogKSBjeWNsZSBmLCB0LCBmIHNldCBp c19jeWNsZSB0byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0Li4uCisgICAgICAgICAg XgorLS0gdGVzdCBydWxldXRpbHMKK2NyZWF0ZSB0ZW1wIHZpZXcgdl9jeWNsZSBhcword2l0 aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICog ZnJvbSBncmFwaCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgorCWZyb20gZ3JhcGggZywg c2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBjeWNsZSBmLCB0IHNldCBp c19jeWNsZSB0byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAorc2VsZWN0IGYsIHQs IGxhYmVsIGZyb20gc2VhcmNoX2dyYXBoOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2X2N5 Y2xlJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgV0lUSCBSRUNVUlNJ VkUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBBUyAoICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgU0VMRUNUIGcuZiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgICAgIGcudCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICBnLmxhYmVs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICBGUk9NIGdyYXBoIGcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgVU5JT04gQUxMICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICBTRUxFQ1QgZy5mLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgZy50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAgIGcubGFiZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIEZST00gZ3JhcGggZywgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICAgc2Vh cmNoX2dyYXBoIHNnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICBXSEVSRSAoZy5mID0gc2cudCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICkgQ1lDTEUgZiwgdCBTRVQgaXNfY3ljbGUgVE8g dHJ1ZSBERUZBVUxUIGZhbHNlIFVTSU5HIHBhdGgrCisgIFNFTEVDVCBzZWFyY2hfZ3JhcGgu ZiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBz ZWFyY2hfZ3JhcGgudCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgc2VhcmNoX2dyYXBoLmxhYmVsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBzZWFyY2hfZ3JhcGg7CisoMSBy b3cpCisKIC0tCiAtLSB0ZXN0IG11bHRpcGxlIFdJVEggcXVlcmllcwogLS0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvd2l0aC5zcWwKaW5kZXggZjg1NjQ1ZWZkZS4uYTljM2Y2NzQ4YSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvd2l0aC5zcWwKQEAgLTI5NSw2ICsyOTUsNzYgQEAgQ1JFQVRFIFRFTVBPUkFSWSBUQUJM RSB0cmVlKAogU0VMRUNUIHQxLmlkLCB0Mi5wYXRoLCB0MiBGUk9NIHQgQVMgdDEgSk9JTiB0 IEFTIHQyIE9OCiAodDEuaWQ9dDIuaWQpOwogCistLSBTRUFSQ0ggY2xhdXNlCisKK2NyZWF0 ZSB0ZW1wIHRhYmxlIGdyYXBoMCggZiBpbnQsIHQgaW50LCBsYWJlbCB0ZXh0ICk7CisKK2lu c2VydCBpbnRvIGdyYXBoMCB2YWx1ZXMKKwkoMSwgMiwgJ2FyYyAxIC0+IDInKSwKKwkoMSwg MywgJ2FyYyAxIC0+IDMnKSwKKwkoMiwgMywgJ2FyYyAyIC0+IDMnKSwKKwkoMSwgNCwgJ2Fy YyAxIC0+IDQnKSwKKwkoNCwgNSwgJ2FyYyA0IC0+IDUnKTsKKword2l0aCByZWN1cnNpdmUg c2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0ICogZnJvbSBncmFwaDAg ZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoMCBnLCBzZWFyY2hfZ3Jh cGggc2cKKwl3aGVyZSBnLmYgPSBzZy50CispIHNlYXJjaCBkZXB0aCBmaXJzdCBieSBmLCB0 IHNldCBzZXEKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoIG9yZGVyIGJ5IHNlcTsKKwor d2l0aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAoCisJc2VsZWN0 ICogZnJvbSBncmFwaDAgZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBo MCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVyZSBnLmYgPSBzZy50CispIHNlYXJjaCBicmVh ZHRoIGZpcnN0IGJ5IGYsIHQgc2V0IHNlcQorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGgg b3JkZXIgYnkgc2VxOworCistLSB2YXJpb3VzIHN5bnRheCBlcnJvcnMKK3dpdGggcmVjdXJz aXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorCXNlbGVjdCAqIGZyb20gZ3Jh cGgwIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaDAgZywgc2VhcmNo X2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBzZWFyY2ggZGVwdGggZmlyc3QgYnkg Zm9vLCB0YXIgc2V0IHNlcQorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGg7CisKK3dpdGgg cmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorCXNlbGVjdCAqIGZy b20gZ3JhcGgwIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaDAgZywg c2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBzZWFyY2ggZGVwdGggZmly c3QgYnkgZiwgdCBzZXQgbGFiZWwKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoOworCit3 aXRoIHJlY3Vyc2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3Qg KiBmcm9tIGdyYXBoMCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgorCWZyb20gZ3JhcGgw IGcsIHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgc2VhcmNoIGRlcHRo IGZpcnN0IGJ5IGYsIHQsIGYgc2V0IHNlcQorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGg7 CisKKy0tIHRlc3QgcnVsZXV0aWxzCitjcmVhdGUgdGVtcCB2aWV3IHZfc2VhcmNoIGFzCit3 aXRoIHJlY3Vyc2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3Qg KiBmcm9tIGdyYXBoMCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgorCWZyb20gZ3JhcGgw IGcsIHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgc2VhcmNoIGRlcHRo IGZpcnN0IGJ5IGYsIHQgc2V0IHNlcQorc2VsZWN0IGYsIHQsIGxhYmVsIGZyb20gc2VhcmNo X2dyYXBoOworCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Zfc2VhcmNoJyk7CisKIC0tCiAt LSB0ZXN0IGN5Y2xlIGRldGVjdGlvbgogLS0KQEAgLTMyNyw2ICszOTcsMTE1IEBAIENSRUFU RSBURU1QT1JBUlkgVEFCTEUgdHJlZSgKICkKIHNlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBo IG9yZGVyIGJ5IHBhdGg7CiAKKy0tIENZQ0xFIGNsYXVzZQorCit3aXRoIHJlY3Vyc2l2ZSBz ZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdyYXBoIGcK Kwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaCBnLCBzZWFyY2hfZ3JhcGgg c2cKKwl3aGVyZSBnLmYgPSBzZy50CispIGN5Y2xlIGYsIHQgc2V0IGlzX2N5Y2xlIHRvIHRy dWUgZGVmYXVsdCBmYWxzZSB1c2luZyBwYXRoCitzZWxlY3QgKiBmcm9tIHNlYXJjaF9ncmFw aDsKKworLS0gbXVsdGlwbGUgQ1RFcword2l0aCByZWN1cnNpdmUKK2dyYXBoKGYsIHQsIGxh YmVsKSBhcyAoCisgIHZhbHVlcyAoMSwgMiwgJ2FyYyAxIC0+IDInKSwKKyAgICAgICAgICgx LCAzLCAnYXJjIDEgLT4gMycpLAorICAgICAgICAgKDIsIDMsICdhcmMgMiAtPiAzJyksCisg ICAgICAgICAoMSwgNCwgJ2FyYyAxIC0+IDQnKSwKKyAgICAgICAgICg0LCA1LCAnYXJjIDQg LT4gNScpLAorICAgICAgICAgKDUsIDEsICdhcmMgNSAtPiAxJykKKyksCitzZWFyY2hfZ3Jh cGgoZiwgdCwgbGFiZWwpIGFzICgKKyAgICAgICAgc2VsZWN0ICogZnJvbSBncmFwaCBnCisg ICAgICAgIHVuaW9uIGFsbAorICAgICAgICBzZWxlY3QgZy4qCisgICAgICAgIGZyb20gZ3Jh cGggZywgc2VhcmNoX2dyYXBoIHNnCisgICAgICAgIHdoZXJlIGcuZiA9IHNnLnQKKykgY3lj bGUgZiwgdCBzZXQgaXNfY3ljbGUgdG8gdHJ1ZSBkZWZhdWx0IGZhbHNlIHVzaW5nIHBhdGgK K3NlbGVjdCBmLCB0LCBsYWJlbCBmcm9tIHNlYXJjaF9ncmFwaDsKKworLS0gc3RhciBleHBh bnNpb24KK3dpdGggcmVjdXJzaXZlIGEgYXMgKAorCXNlbGVjdCAxIGFzIGIKKwl1bmlvbiBh bGwKKwlzZWxlY3QgKiBmcm9tIGEKKykgY3ljbGUgYiBzZXQgYyB0byB0cnVlIGRlZmF1bHQg ZmFsc2UgdXNpbmcgcAorc2VsZWN0ICogZnJvbSBhOworCistLSBzZWFyY2grY3ljbGUKK3dp dGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorCXNlbGVjdCAq IGZyb20gZ3JhcGggZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdyYXBoIGcs IHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgc2VhcmNoIGRlcHRoIGZp cnN0IGJ5IGYsIHQgc2V0IHNlcQorICBjeWNsZSBmLCB0IHNldCBpc19jeWNsZSB0byB0cnVl IGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAorc2VsZWN0ICogZnJvbSBzZWFyY2hfZ3JhcGg7 CisKK3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMgKAorCXNl bGVjdCAqIGZyb20gZ3JhcGggZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlmcm9tIGdy YXBoIGcsIHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgc2VhcmNoIGJy ZWFkdGggZmlyc3QgYnkgZiwgdCBzZXQgc2VxCisgIGN5Y2xlIGYsIHQgc2V0IGlzX2N5Y2xl IHRvIHRydWUgZGVmYXVsdCBmYWxzZSB1c2luZyBwYXRoCitzZWxlY3QgKiBmcm9tIHNlYXJj aF9ncmFwaDsKKworLS0gdmFyaW91cyBzeW50YXggZXJyb3JzCit3aXRoIHJlY3Vyc2l2ZSBz ZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdyYXBoIGcK Kwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaCBnLCBzZWFyY2hfZ3JhcGgg c2cKKwl3aGVyZSBnLmYgPSBzZy50CispIGN5Y2xlIGZvbywgdGFyIHNldCBpc19jeWNsZSB0 byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAorc2VsZWN0ICogZnJvbSBzZWFyY2hf Z3JhcGg7CisKK3dpdGggcmVjdXJzaXZlIHNlYXJjaF9ncmFwaChmLCB0LCBsYWJlbCkgYXMg KAorCXNlbGVjdCAqIGZyb20gZ3JhcGggZworCXVuaW9uIGFsbAorCXNlbGVjdCBnLioKKwlm cm9tIGdyYXBoIGcsIHNlYXJjaF9ncmFwaCBzZworCXdoZXJlIGcuZiA9IHNnLnQKKykgY3lj bGUgZiwgdCBzZXQgaXNfY3ljbGUgdG8gdHJ1ZSBkZWZhdWx0IDU1IHVzaW5nIHBhdGgKK3Nl bGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoOworCit3aXRoIHJlY3Vyc2l2ZSBzZWFyY2hfZ3Jh cGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdyYXBoIGcKKwl1bmlvbiBh bGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaCBnLCBzZWFyY2hfZ3JhcGggc2cKKwl3aGVy ZSBnLmYgPSBzZy50CispIGN5Y2xlIGYsIHQgc2V0IGYgdG8gdHJ1ZSBkZWZhdWx0IGZhbHNl IHVzaW5nIHBhdGgKK3NlbGVjdCAqIGZyb20gc2VhcmNoX2dyYXBoOworCit3aXRoIHJlY3Vy c2l2ZSBzZWFyY2hfZ3JhcGgoZiwgdCwgbGFiZWwpIGFzICgKKwlzZWxlY3QgKiBmcm9tIGdy YXBoIGcKKwl1bmlvbiBhbGwKKwlzZWxlY3QgZy4qCisJZnJvbSBncmFwaCBnLCBzZWFyY2hf Z3JhcGggc2cKKwl3aGVyZSBnLmYgPSBzZy50CispIGN5Y2xlIGYsIHQsIGYgc2V0IGlzX2N5 Y2xlIHRvIHRydWUgZGVmYXVsdCBmYWxzZSB1c2luZyBwYXRoCitzZWxlY3QgKiBmcm9tIHNl YXJjaF9ncmFwaDsKKworLS0gdGVzdCBydWxldXRpbHMKK2NyZWF0ZSB0ZW1wIHZpZXcgdl9j eWNsZSBhcword2l0aCByZWN1cnNpdmUgc2VhcmNoX2dyYXBoKGYsIHQsIGxhYmVsKSBhcyAo CisJc2VsZWN0ICogZnJvbSBncmFwaCBnCisJdW5pb24gYWxsCisJc2VsZWN0IGcuKgorCWZy b20gZ3JhcGggZywgc2VhcmNoX2dyYXBoIHNnCisJd2hlcmUgZy5mID0gc2cudAorKSBjeWNs ZSBmLCB0IHNldCBpc19jeWNsZSB0byB0cnVlIGRlZmF1bHQgZmFsc2UgdXNpbmcgcGF0aAor c2VsZWN0IGYsIHQsIGxhYmVsIGZyb20gc2VhcmNoX2dyYXBoOworCitTRUxFQ1QgcGdfZ2V0 X3ZpZXdkZWYoJ3ZfY3ljbGUnKTsKKwogLS0KIC0tIHRlc3QgbXVsdGlwbGUgV0lUSCBxdWVy aWVzCiAtLQoKYmFzZS1jb21taXQ6IDNiYWE3ZTM4ZDUxNTc5YjY5ZTEyMjhmM2UxYTQzZjU2 MDAxYjZkNjQKLS0gCjIuMjcuMAoK --------------3B8F0BF846A5F5757DFFC1A7--