Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wAgtF-000EHr-0W for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 04:21:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAgtD-003YbL-0Q for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 04:21:12 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wAgtC-003YbC-1r for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 04:21:11 +0000 Received: from forward501a.mail.yandex.net ([2a02:6b8:c0e:500:1:45:d181:d501]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wAgt8-000000007SZ-23e0 for pgsql-hackers@postgresql.org; Thu, 09 Apr 2026 04:21:11 +0000 Received: from mail-nwsmtp-smtp-production-main-73.iva.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-73.iva.yp-c.yandex.net [IPv6:2a02:6b8:c0c:41d:0:640:8e35:0]) by forward501a.mail.yandex.net (Yandex) with ESMTPS id C965E82115; Thu, 09 Apr 2026 07:21:04 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-73.iva.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id 1L7Hac6RCuQ0-SQDCqtH7; Thu, 09 Apr 2026 07:21:03 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1775708464; bh=ZWbuKoykY1oSCyLJiM43NKZ+VgOaxLa7w6MUpquAGZE=; h=In-Reply-To:References:To:Subject:Message-ID:Date:From; b=wdv73ugNO5Sr9MuUtjYQHdwC9rdX81B7CYYNqLuSmeUzBPkUTmXcjwCqViVk88JBF J1SuTQT24WJn6qc1EQvgs5Z1OqlqaWREFS9BGcZSCtgI8BL3nz/BruAcZSjIshMwcc 28Wnpr42qZNF5H8v02s6h0Y4P32OGotBOEvg5YL4= Authentication-Results: mail-nwsmtp-smtp-production-main-73.iva.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------sLR6ZLnPAxZtB7bFceJnj5Kn" Message-ID: Date: Thu, 9 Apr 2026 12:21:01 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Compress prune/freeze records with Delta Frame of Reference algorithm From: Evgeny Voropaev To: Andres Freund , PostgreSQL Hackers References: <5a2f3df2-a736-4ada-8aa3-aa6e20b2e067@vondra.me> <3fc9f40b-2c4f-49c7-bf1c-570c5b9e6e9e@tantorlabs.com> Content-Language: en-US In-Reply-To: <3fc9f40b-2c4f-49c7-bf1c-570c5b9e6e9e@tantorlabs.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------sLR6ZLnPAxZtB7bFceJnj5Kn Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello hackers! Dear Andres, please forgive me for the typo in your name in my previous message. It was not intentional. My blushes! v09 is the same as v08, except for a difference in test/dfor/Makefile. I am still trying to fix the build errors in CI/CD. P.s. rebased onto e0fa5bd1465. --------------sLR6ZLnPAxZtB7bFceJnj5Kn Content-Type: text/x-patch; charset=UTF-8; name="v09-0001-Implement-vect-and-uniqsortvect-containers-and-b.patch" Content-Disposition: attachment; filename*0="v09-0001-Implement-vect-and-uniqsortvect-containers-and-b.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlMTE2NzI3ZGZjMGZkNDlhYzUxYzliYjVhNWQzYThjNTU2M2MwYWUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYwOSAxLzNdIEltcGxlbWVudCB2ZWN0IGFuZCB1bmlxc29ydHZlY3QgY29udGFpbmVy cyBhbmQKIGJpdHBhY2sgYWxnb3JpdGhtcy4KClRoZSB2ZWN0IGNvbnRhaW5lciBzdG9yZXMg YXJyYXlzIG9mIGludGVnZXJzIGFuZCBwcm92aWRlcyBhIHNldCBvZgphbGdvcml0aG1zIGlt cGxlbWVudGluZyBlc3NlbnRpYWwgb3BlcmF0aW9ucyBvbiB0aGUgY29udGFpbmVkIGFycmF5 LApzdWNoIGFzIGluaXRpYWxpemF0aW9uLCBhcHBlbmRpbmcsIGluc2VydGluZywgYW5kIGNs ZWFyaW5nLgoKVGhlIHVuaXFzb3J0dmVjdCBjb250YWluZXIgaXMgYmFzZWQgb24gdGhlIHZl Y3QgdHlwZSBidXQgYXNzdW1lcyB0aGF0Cml0cyBlbGVtZW50cyBhcmUgc29ydGVkIGFuZCB1 bmlxdWUuIEluIGFkZGl0aW9uIHRvIHRoZSBhbGdvcml0aG1zCnByb3ZpZGVkIGJ5IHZlY3Qs IHVuaXFzb3J0dmVjdCBpbXBsZW1lbnRzIGJpbmFyeSBzZWFyY2ggYW5kIHRoZQpzcGVjaWFs aXplZCBpbnNlcnRpb24gcm91dGluZS4KClRoZSBjb250YWluZXJzIHN1cHBvcnQgYm90aCBl eHRlcm5hbCBtZW1vcnkgcHJvdmlkZWQgYnkgYSBjYWxsZXIgYW5kCmF1dG9tYXRpY2FsbHkg bWFuYWdlZCBtZW1vcnkgdXNpbmcgbWFsbG9jLCBQb3N0Z3JlcydzIHBhbGxvYywgb3Igc2lt aWxhcgphbGxvY2F0aW9uIGZ1bmN0aW9ucy4gQSBjb250YWluZXIncyBzdHJhdGVneSByZWdh cmRpbmcgbWVtb3J5IG1hbmFnZW1lbnQKbXVzdCBiZSBzZXQgYXQgY29udGFpbmVyIGluaXRp YWxpemF0aW9uLCBhbmQgYWxsIHN1YnNlcXVlbnQgb3BlcmF0aW9ucwpob25vciB0aGlzIGNv bmZpZ3VyYXRpb24uIEZvciBleGFtcGxlLCBhIGNhbGxlciBjYW4gcGxhY2UgYSBidWZmZXIg b24KdGhlIHN0YWNrIHRvIGF2b2lkIGhlYXAgYWxsb2NhdGlvbiBhbmQgcGFzcyB0aGUgYnVm ZmVyIHRvIGEgdmVjdG9yCmluc3RhbmNlLCB3aGljaCByZXN1bHRzIGluIHRoZSB2ZWN0b3Ig cGVyZm9ybXMgbm8gZHluYW1pYyBhbGxvY2F0aW9uLgoKVGhpcyBjb21taXQgYWxzbyBpbnRy b2R1Y2VzIHRoZSBiaXRwYWNrIHVuaXQsIHdoaWNoIHByb3ZpZGVzIGFsZ29yaXRobXMKZm9y IGRlbnNlIGJpdC1sZXZlbCBwYWNraW5nIGFuZCB1bnBhY2tpbmcuIFRoZSBiaXRwYWNrIHVu aXQgZG9lcyBub3QKdXNlIGR5bmFtaWMgbWVtb3J5LgoKRWFjaCB1bml0ICh2ZWN0LCBiaXRw YWNrKSBpcyBpbXBsZW1lbnRlZCBhcyBhIHNldCBvZiB0ZW1wbGF0ZXMgdGhhdAphbGxvdyBk ZXZlbG9wZXJzIHRvIGdlbmVyYXRlIHNwZWNpYWxpemVkIHNvbHV0aW9ucyBmb3IgYW55IGlu dGVnZXIgdHlwZQoodWludDgsIGludDgsIHVpbnQxNiwgaW50MTYsIGFuZCBzbyBvbikuIFRo ZSB1bml0cyBiaXRwYWNrX3UxNiBhbmQKdmVjdF91MTYgc3VwcG9ydGluZyB0aGUgdWludDE2 X3QgdHlwZSBhcmUgYWxzbyBwcm92aWRlZCBieSB0aGlzIGNvbW1pdC4KClVuaXQgdGVzdHMg Zm9yIHRoZSBwcm92aWRlZCBpbXBsZW1lbnRhdGlvbnMgYXJlIGluY2x1ZGVkLiBVbml0IHRl c3RzIGFyZQppbXBsZW1lbnRlZCBhcyBiaW5hcnkgYXBwbGljYXRpb25zIHdyaXR0ZW4gaW4g QyBsYW5ndWFnZQooRUxGIGV4ZWN1dGFibGVzKSB0aGF0IHN1cHBvcnQgdGhlIFRBUCBwcm90 b2NvbCBhbmQgYXJlIHJ1biB1c2luZyB0aGUKUHJvdmUgdXRpbGl0eS4KClRoZSBuZXcgTWFr ZWZpbGUgdGFyZ2V0LCBjaGVjay11bml0LCBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIFBvc3Rn cmVTUUwKYnVpbGQgc3lzdGVtIGFuZCBhbGxvd3MgcnVubmluZyB0aGUgdW5pdCB0ZXN0cyB1 c2luZyB0aGUgY29tbWFuZCAnbWFrZQpjaGVjay11bml0Jy4KCkF1dGhvcjogRXZnZW55IFZv cm9wYWV2IDxldmdlbnkudm9yb3BhZXZAdGFudG9ybGFicy5jb20+IDxldm9yb3BAZ21haWwu Y29tPgpSZXZpZXdlZCBieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1 PgotLS0KIEdOVW1ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9NYWtlZmlsZS5nbG9iYWwuaW4gICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9saWIvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2Vu ZC9saWIvTWFrZWZpbGUuZGZvciAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9saWIv Yml0cGFja190ZW1wbC5jICAgICAgICB8IDE1NiArKysrKysrKysKIHNyYy9iYWNrZW5kL2xp Yi9iaXRwYWNrX3UxNi5jICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL2xpYi9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL2xpYi92ZWN0X3RlbXBs LmMgICAgICAgICAgIHwgMzAxICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvbGli L3ZlY3RfdTE2LmMgICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvYy5oICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfc3Rh cGxlX3RlbXBsLmggfCAgNTcgKysrKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGwu aCAgICAgICAgfCAgMTQgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGxfdW5kZWYu aCAgfCAgIDUgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2LmggICAgICAgICAgfCAg MTIgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2X2NvbmZpZy5oICAgfCAgIDYgKwog c3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGwuaCAgICAgICAgICAgfCAgMjcgKysKIHNyYy9p bmNsdWRlL2xpYi92ZWN0X3RlbXBsX3N0YXBsZS5oICAgIHwgMTQwICsrKysrKysrCiBzcmMv aW5jbHVkZS9saWIvdmVjdF90ZW1wbF91bmRlZi5oICAgICB8ICAyNSArKwogc3JjL2luY2x1 ZGUvbGliL3ZlY3RfdTE2LmggICAgICAgICAgICAgfCAgMzQgKysKIHNyYy9pbmNsdWRlL2xp Yi92ZWN0X3UxNl9jb25maWcuaCAgICAgIHwgIDEwICsKIHNyYy90ZXN0L01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L2Rmb3IvLmdpdGlnbm9yZSAg ICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L2Rmb3IvTWFrZWZpbGUgICAgICAgICAg ICAgICAgIHwgIDYxICsrKysKIHNyYy90ZXN0L2Rmb3IvbWVzb24uYnVpbGQgICAgICAgICAg ICAgIHwgIDYyICsrKysKIHNyYy90ZXN0L2Rmb3IvdGVzdC5oICAgICAgICAgICAgICAgICAg IHwgIDMxICsrCiBzcmMvdGVzdC9kZm9yL3Rlc3RfYml0cGFja191MTYuYyAgICAgICB8IDM1 NyArKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L2Rmb3IvdGVzdF91bmlxc29ydHZl Y3RfdTE2LmMgIHwgMjYzICsrKysrKysrKysrKysrKwogc3JjL3Rlc3QvZGZvci90ZXN0X3Zl Y3RfdTE2LmMgICAgICAgICAgfCAxNjggKysrKysrKysrKwogc3JjL3Rlc3QvbGlidGFwLy5n aXRpZ25vcmUgICAgICAgICAgICAgfCAgMTMgKwogc3JjL3Rlc3QvbGlidGFwLy50cmF2aXMu eW1sICAgICAgICAgICAgfCAgMTMgKwogc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcgICAgICAg ICAgICAgICAgfCAxNjUgKysrKysrKysrKwogc3JjL3Rlc3QvbGlidGFwL0lOU1RBTEwgICAg ICAgICAgICAgICAgfCAgNDEgKysrCiBzcmMvdGVzdC9saWJ0YXAvTWFrZWZpbGUgICAgICAg ICAgICAgICB8ICA3MyArKysrKwogc3JjL3Rlc3QvbGlidGFwL01ha2VmaWxlLndpbiAgICAg ICAgICAgfCAgMzcgKysrCiBzcmMvdGVzdC9saWJ0YXAvUkVBRE1FLm1kICAgICAgICAgICAg ICB8IDI2OCArKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9saWJ0YXAvdGFwLmMgICAgICAg ICAgICAgICAgICB8IDQyMSArKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9s aWJ0YXAvdGFwLmggICAgICAgICAgICAgICAgICB8IDExNSArKysrKysrCiBzcmMvdGVzdC9t ZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAzOCBmaWxlcyBjaGFuZ2Vk LCAyOTE5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvYmFja2VuZC9saWIvTWFrZWZpbGUuZGZvcgogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9iYWNrZW5kL2xpYi9iaXRwYWNrX3RlbXBsLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv YmFja2VuZC9saWIvYml0cGFja191MTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNr ZW5kL2xpYi92ZWN0X3RlbXBsLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9s aWIvdmVjdF91MTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9iaXRw YWNrX3N0YXBsZV90ZW1wbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGli L2JpdHBhY2tfdGVtcGwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9i aXRwYWNrX3RlbXBsX3VuZGVmLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9s aWIvYml0cGFja191MTYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9i aXRwYWNrX3UxNl9jb25maWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xp Yi92ZWN0X3RlbXBsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9saWIvdmVj dF90ZW1wbF9zdGFwbGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi92 ZWN0X3RlbXBsX3VuZGVmLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9saWIv dmVjdF91MTYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi92ZWN0X3Ux Nl9jb25maWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2Rmb3IvLmdpdGlnbm9y ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2Rmb3IvTWFrZWZpbGUKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvZGZvci90ZXN0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9k Zm9yL3Rlc3RfYml0cGFja191MTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2Rm b3IvdGVzdF91bmlxc29ydHZlY3RfdTE2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9kZm9yL3Rlc3RfdmVjdF91MTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2xp YnRhcC8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbGlidGFwLy50 cmF2aXMueW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9saWJ0YXAvSU5TVEFMTAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZS53aW4KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9saWJ0YXAvUkVBRE1FLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbGli dGFwL3RhcC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbGlidGFwL3RhcC5oCgpk aWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuaW4gYi9HTlVtYWtlZmlsZS5pbgppbmRleCBjZjZl NzU5NDg2ZS4uM2Q5YTQyZDZhZDQgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmluCisrKyBi L0dOVW1ha2VmaWxlLmluCkBAIC02OSw2ICs2OSw3IEBAIGNoZWNrIGNoZWNrLXRlc3RzIGlu c3RhbGxjaGVjayBpbnN0YWxsY2hlY2stcGFyYWxsZWwgaW5zdGFsbGNoZWNrLXRlc3RzOiBz dWJtYWtlCiAJJChNQUtFKSAtQyBzcmMvdGVzdC9yZWdyZXNzICRACiAKICQoY2FsbCByZWN1 cnNlLGNoZWNrLXdvcmxkLHNyYy90ZXN0IHNyYy9wbCBzcmMvaW50ZXJmYWNlcyBjb250cmli IHNyYy9iaW4gc3JjL3Rvb2xzL3BnX2JzZF9pbmRlbnQsY2hlY2spCiskKGNhbGwgcmVjdXJz ZSxjaGVjay11bml0LHNyYy90ZXN0LGNoZWNrLXVuaXQpCiAkKGNhbGwgcmVjdXJzZSxjaGVj a3ByZXAsICBzcmMvdGVzdCBzcmMvcGwgc3JjL2ludGVyZmFjZXMgY29udHJpYiBzcmMvYmlu KQogCiAkKGNhbGwgcmVjdXJzZSxpbnN0YWxsY2hlY2std29ybGQsc3JjL3Rlc3Qgc3JjL3Bs IHNyYy9pbnRlcmZhY2VzIGNvbnRyaWIgc3JjL2JpbixpbnN0YWxsY2hlY2spCmRpZmYgLS1n aXQgYS9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpp bmRleCBhNzY5OWIwMjZiYi4uYTM3MTQyZjgxNjAgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmls ZS5nbG9iYWwuaW4KKysrIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpAQCAtMTksNyArMTks NyBAQAogIwogIyBNZXRhIGNvbmZpZ3VyYXRpb24KIAotc3RhbmRhcmRfdGFyZ2V0cyA9IGFs bCBpbnN0YWxsIGluc3RhbGxkaXJzIHVuaW5zdGFsbCBjbGVhbiBkaXN0Y2xlYW4gY292ZXJh Z2UgY2hlY2sgY2hlY2twcmVwIGluc3RhbGxjaGVjayBpbml0LXBvIHVwZGF0ZS1wbworc3Rh bmRhcmRfdGFyZ2V0cyA9IGFsbCBpbnN0YWxsIGluc3RhbGxkaXJzIHVuaW5zdGFsbCBjbGVh biBkaXN0Y2xlYW4gY292ZXJhZ2UgY2hlY2sgY2hlY2twcmVwIGluc3RhbGxjaGVjayBjaGVj ay11bml0IGluaXQtcG8gdXBkYXRlLXBvCiAjIHRoZXNlIHRhcmdldHMgc2hvdWxkIHJlY3Vy c2UgZXZlbiBpbnRvIHN1YmRpcmVjdG9yaWVzIG5vdCBiZWluZyBidWlsdDoKIHN0YW5kYXJk X2Fsd2F5c190YXJnZXRzID0gY2xlYW4gZGlzdGNsZWFuCiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2xpYi9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZQppbmRleCBi NmNlZmQ5Y2NhMC4uNzQxNjdiYzllNGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYi9N YWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9saWIvTWFrZWZpbGUKQEAgLTEyLDYgKzEyLDgg QEAgc3ViZGlyID0gc3JjL2JhY2tlbmQvbGliCiB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgog aW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCitpbmNsdWRl IE1ha2VmaWxlLmRmb3IKKwogT0JKUyA9IFwKIAliaXBhcnRpdGVfbWF0Y2gubyBcCiAJYmxv b21maWx0ZXIubyBcCkBAIC0yMiw1ICsyNCw4IEBAIE9CSlMgPSBcCiAJa25hcHNhY2subyBc CiAJcGFpcmluZ2hlYXAubyBcCiAJcmJ0cmVlLm8gXAorCSQoT0JKU19ERk9SKSBcCisKK0NQ UEZMQUdTIDo9IC1JJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9saWIgJChDUFBGTEFHUykK IAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbGliL01ha2VmaWxlLmRmb3IgYi9zcmMvYmFja2VuZC9saWIv TWFrZWZpbGUuZGZvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u YjkzYzZlNzg2NDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9saWIvTWFrZWZp bGUuZGZvcgpAQCAtMCwwICsxLDUgQEAKKyMgTWFrZWZpbGUuZGZvcgorCitPQkpTX0RGT1Ig Oj0gXAorCWJpdHBhY2tfdTE2Lm8gXAorCXZlY3RfdTE2Lm8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2xpYi9iaXRwYWNrX3RlbXBsLmMgYi9zcmMvYmFja2VuZC9saWIvYml0cGFja190 ZW1wbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ZjcyMWVh MWViYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2xpYi9iaXRwYWNrX3RlbXBs LmMKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBiaXRwYWNrX3RlbXBsLmMKKyAqCisgKiBU aGUgQklUUEFDSyB1bml0IGltcGxlbWVudHMgcm91dGluZXMgcGVydGFpbmluZyB0byBiaXQt cGFja2luZy4gVGhlIGJpdHBhY2sKKyAqIHVuaXQgYWxsb3cgaGlnaGVyLWxldmVsIGZ1bmN0 aW9ucyB0byBjcmVhdGUgaGlnaC1kZW5zaXR5IGFycmF5cyBwYWNrZWQKKyAqIGJpdC1ieS1i aXQuIEluIGdlbmVyYWwsIHdpZHRoIG9mIGVhY2ggaXRlbSBpbiBhIGJpdHBhY2tlZCBhcnJh eSBjYW4gdmFyeSBhbmQKKyAqIGhhdmUgbm90IHRvIGJlIG9mIGZpeGVkIHNpemUsIGl0ZW1z IGNhbiBoYXZlIGRpZmZlcmVudCBsZW5ndGguCisgKi8KKworI2luY2x1ZGUgImxpYi9iaXRw YWNrX3N0YXBsZV90ZW1wbC5oIgorCitpdGVtX3Qgd2lkdGhfZnJvbV92YWwoaXRlbV90IHZh bCk7CitpdGVtX3Qgd2lkdGhfdG9fbWFzayhzaXplX3Qgd2lkdGgpOworc2l6ZV90IGJpdHBh Y2tfcGFjayh1aW50OF90ICpwYWNrLCBzaXplX3QgY2FyZXQsIGl0ZW1fdCBpdGVtLAorCQkJ CQlzaXplX3Qgc3pJdGVtV2lkdGgpOworaXRlbV90IGJpdHBhY2tfdW5wYWNrKGNvbnN0IHVp bnQ4X3QgKnBhY2ssIHNpemVfdCAqY2FyZXQsIHNpemVfdCBzekl0ZW1XaWR0aCk7CisKKy8q CisgKiBTaW5jZSB3aWR0aCBvZiBpdGVtX3QgY2Fubm90IGJlIG1vcmUgdGhhbiBsZW5ndGgg b2YgaXRlbV90CisgKiBsZyhNQVgoaXRlbV90KSkrMSwgd2UgdXNlIHRoZSBpdGVtX3QgdHlw ZSBmb3IgcmV0dXJuZWQgdmFsdWUKKyAqLworaXRlbV90Cit3aWR0aF9mcm9tX3ZhbChpdGVt X3QgdmFsKQoreworCWl0ZW1fdCB3aWR0aCA9IDA7CisKKwl3aGlsZSAodmFsKSB7CisJCXdp ZHRoKys7CisJCXZhbCA9IHZhbCA+PiAxOworCX0KKworCXJldHVybiB3aWR0aCA9PSAwID8g MSA6IHdpZHRoOworfQorCitpdGVtX3QKK3dpZHRoX3RvX21hc2soc2l6ZV90IHdpZHRoKQor eworCXNpemVfdCBtYXNrID0gMDsKKworCUFzc2VydCh3aWR0aCAhPSAwKTsKKwlBc3NlcnQo d2lkdGggPD0gc2l6ZW9mKGl0ZW1fdCkgKiA4KTsKKworCWlmIChsaWtlbHkod2lkdGggPCBz aXplb2Yoc2l6ZV90KSkpCisJCW1hc2sgPSAoMSA8PCB3aWR0aCkgLSAxOworCWVsc2UKKwkJ d2hpbGUgKHdpZHRoLS0pCisJCQltYXNrID0gKG1hc2sgPDwgMSkgfCAxOworCisJcmV0dXJu IChpdGVtX3QpbWFzazsKK30KKworc2l6ZV90CitiaXRwYWNrX3BhY2sodWludDhfdCAqcGFj aywgc2l6ZV90IGNhcmV0LCBpdGVtX3QgaXRlbSwgc2l6ZV90IHN6SXRlbVdpZHRoKQorewor CXNpemVfdCBzekl0ZW1XaWR0aFRvR28gPSBzekl0ZW1XaWR0aDsKKwlpdGVtX3QgaXRtTWFz a1RvR28gPSB3aWR0aF90b19tYXNrKHN6SXRlbVdpZHRoKTsKKworCXdoaWxlIChzekl0ZW1X aWR0aFRvR28gPiAwKSB7CisJCXNpemVfdCBjbnRTYXZlZEJpdHM7CisJCXNpemVfdCBieXRl ID0gY2FyZXQgLyA4OworCQlzaXplX3Qgb2ZmID0gY2FyZXQgJSA4OworCQl1aW50OF90IHVi Q2h1bmsgPSAodWludDhfdClpdGVtIDw8IG9mZjsKKwkJaXRlbV90IGl0bUNodW5rTWFzayA9 IGl0bU1hc2tUb0dvIDw8IG9mZjsKKwkJLyoKKwkJICogQXBwbHlpbmcgY2h1bmsgdXNpbmcg dGhlIG1hc2suIFNldHRpbmcgYml0cyB0byBvbmUgYW5kIHJlc2V0dGluZyBiaXRzCisJCSAq IHRvIHplcm8gaXMgb25seSBpbiBzY29wZXMgZGVmaW5lZCBieSB0aGUgbWFzay4gWmVyb2lu ZyBvZiBiaXRzCisJCSAqIGFjY29yZGluZyB0byBhIG1hc2ssIHdlIGNhbiB1c2UgZXZlbiBh IHBhY2sgbm90IGJlZW4gbnVsbGVkIGluCisJCSAqIGFkdmFuY2UuCisJCSAqLworCQlwYWNr W2J5dGVdIHw9ICh1YkNodW5rICYgaXRtQ2h1bmtNYXNrKTsKKwkJcGFja1tieXRlXSAmPSAo dWJDaHVuayB8IH5pdG1DaHVua01hc2spOworCQljbnRTYXZlZEJpdHMgPSAoOCAtIG9mZiA+ IHN6SXRlbVdpZHRoVG9HbykgPworCQkJc3pJdGVtV2lkdGhUb0dvIDoKKwkJCTggLSBvZmY7 IC8vIG51bWJlciBvZiBzYXZlZCBiaXRzCisJCXN6SXRlbVdpZHRoVG9HbyAtPSBjbnRTYXZl ZEJpdHM7CisJCWNhcmV0ICs9IGNudFNhdmVkQml0czsKKwkJaXRlbSA9IGl0ZW0gPj4gY250 U2F2ZWRCaXRzOworCQlpdG1NYXNrVG9HbyA9IGl0bU1hc2tUb0dvID4+IGNudFNhdmVkQml0 czsKKwl9CisJcmV0dXJuIGNhcmV0OworfQorCitpdGVtX3QKK2JpdHBhY2tfdW5wYWNrKGNv bnN0IHVpbnQ4X3QgKnBhY2ssIHNpemVfdCAqY2FyZXQsIHNpemVfdCB3aWRJdGVtKQorewor CXNpemVfdCBzekl0ZW1DYXJldDsKKwlzaXplX3Qgc3pJdGVtV2lkdGhUb0dvOworCXVpbnQ4 X3QgaXRlbVtzaXplb2YoaXRlbV90KV07IC8qIHNpemUgb2YgaXRlbSBhcnJheSAqLworCisJ c2l6ZV90IHN6UGFja0J5dGU7CisJc2l6ZV90IHN6UGFja09mZjsKKwlzaXplX3Qgc3pJdGVt Qnl0ZTsKKwlzaXplX3Qgc3pJdGVtT2ZmOworCXVpbnQ4X3QgdWJDaHVuazsKKworCXN6SXRl bUNhcmV0ID0gMDsKKwlzekl0ZW1XaWR0aFRvR28gPSB3aWRJdGVtOworCW1lbXNldChpdGVt LCAwLCBzaXplb2YoaXRlbV90KSk7CisKKwl3aGlsZSAoc3pJdGVtV2lkdGhUb0dvID4gMCkg eworCQlzaXplX3Qgc3pDaHVua1NpemU7CisJCXNpemVfdCBzekNodW5rTG93U2l6ZSwgc3pD aHVua0hpZ2hTaXplOworCisJCXN6UGFja0J5dGUgPSAqY2FyZXQgLyA4OworCQlzelBhY2tP ZmYgPSAqY2FyZXQgJSA4OworCQlzekl0ZW1CeXRlID0gc3pJdGVtQ2FyZXQgLyA4OworCQlz ekl0ZW1PZmYgPSBzekl0ZW1DYXJldCAlIDg7CisKKwkJdWJDaHVuayA9IHBhY2tbc3pQYWNr Qnl0ZV0gPj4gc3pQYWNrT2ZmOworCisJCXN6Q2h1bmtTaXplID0gOCAtIHN6UGFja09mZjsK KwkJaWYgKHN6SXRlbVdpZHRoVG9HbyA8IHN6Q2h1bmtTaXplKSB7CisJCQlzekNodW5rU2l6 ZSA9IHN6SXRlbVdpZHRoVG9HbzsKKwkJCXViQ2h1bmsgPSB1YkNodW5rICYgKHVpbnQ4X3Qp d2lkdGhfdG9fbWFzayhzekl0ZW1XaWR0aFRvR28pOworCQl9CisKKwkJaWYgKHN6Q2h1bmtT aXplID4gKDggLSBzekl0ZW1PZmYpKSAvKiBGcmVlIHNwYWNlIG9mIGl0ZW1bc3pJdGVtQnl0 ZV0gKi8KKwkJeworCQkJc3pDaHVua0xvd1NpemUgPSA4IC0gc3pJdGVtT2ZmOworCQkJc3pD aHVua0hpZ2hTaXplID0gc3pDaHVua1NpemUgLSBzekNodW5rTG93U2l6ZTsKKwkJfSBlbHNl IHsKKwkJCXN6Q2h1bmtMb3dTaXplID0gc3pDaHVua1NpemU7CisJCQlzekNodW5rSGlnaFNp emUgPSAwOworCQl9CisKKwkJaXRlbVtzekl0ZW1CeXRlXSB8PSB1YkNodW5rIDw8IHN6SXRl bU9mZjsgLyogY2h1bmtfbG93ICovCisKKwkJaWYgKHN6Q2h1bmtIaWdoU2l6ZSAhPSAwKSB7 CisJCQlBc3NlcnQoKHN6SXRlbUJ5dGUgKyAxKSA8IHNpemVvZihpdGVtX3QpKTsgLyogc2l6 ZSBvZiBpdGVtIGFycmF5ICovCisJCQlpdGVtW3N6SXRlbUJ5dGUgKyAxXSB8PSB1YkNodW5r ID4+IHN6Q2h1bmtMb3dTaXplOyAvKiBjaHVua19oaWdoICovCisJCX0KKworCQkqY2FyZXQg Kz0gc3pDaHVua1NpemU7CisJCXN6SXRlbUNhcmV0ICs9IHN6Q2h1bmtTaXplOworCQlzekl0 ZW1XaWR0aFRvR28gLT0gc3pDaHVua1NpemU7CisJfQorCisJLyoKKwkgKiBSZW9yZGVyaW5n IGJ5dGVzIGluIGFjY29yZGFuY2Ugd2l0aCBlbmRpYW5uZXNzIG9mIHRoZSBzeXN0ZW0uCisJ ICoKKwkgKiBIZXJlIGZvciBhIExpdHRsZS1lbmRpYW4gc3lzdGVtIHdlIGNhbiBhdm9pZCBy ZW9yZGVyaW5nLCBidXQgaW4gc3VjaCBhCisJICogY2FzZSB3ZSBuZWVkIHRvIGtlZXAgdGhl IGl0ZW0gYXJyYXkgYWxpZ25lZCB3aXRoIGl0ZW1fdCB0eXBlLCBidXQgd2UgZG8KKwkgKiBu b3Qga2VlcC4KKwkgKi8KKwl7CisJCXNpemVfdCBqID0gMTsKKwkJaXRlbV90IHZhbCA9IGl0 ZW1bc2l6ZW9mKGl0ZW1fdCkgLSBqXTsKKwkJd2hpbGUgKCsraiA8PSBzaXplb2YoaXRlbV90 KSkgeworCQkJdmFsID0gdmFsIDw8IDg7CisJCQl2YWwgfD0gaXRlbVtzaXplb2YoaXRlbV90 KSAtIGpdOworCQl9CisJCXJldHVybiB2YWw7CisJfQorfQorCisjaW5jbHVkZSAibGliL2Jp dHBhY2tfdGVtcGxfdW5kZWYuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYi9iaXRw YWNrX3UxNi5jIGIvc3JjL2JhY2tlbmQvbGliL2JpdHBhY2tfdTE2LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFlMmVlNmQ2YmIyCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2JhY2tlbmQvbGliL2JpdHBhY2tfdTE2LmMKQEAgLTAsMCArMSw4IEBACisv KgorICogRmlsZTogYml0cGFja191MTYuYworICovCisKKy8qIGNsYW5nLWZvcm1hdCBvZmYg Ki8KKyNpbmNsdWRlICJsaWIvYml0cGFja191MTZfY29uZmlnLmgiCisjaW5jbHVkZSAiYml0 cGFja190ZW1wbC5jIgorLyogY2xhbmctZm9ybWF0IG9uICovCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9saWIvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9saWIvbWVzb24uYnVpbGQK aW5kZXggOGUzOGZiMjBmMTcuLjA5ODRiZDBlM2Y2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9saWIvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvbGliL21lc29uLmJ1aWxkCkBA IC0xLDUgKzEsMTAgQEAKICMgQ29weXJpZ2h0IChjKSAyMDIyLTIwMjYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKK2Rmb3Jfc291cmNlcyA9IGZpbGVzKAorICAn Yml0cGFja191MTYuYycsCisgICd2ZWN0X3UxNi5jJworKQorCiBiYWNrZW5kX3NvdXJjZXMg Kz0gZmlsZXMoCiAgICdiaXBhcnRpdGVfbWF0Y2guYycsCiAgICdibG9vbWZpbHRlci5jJywK QEAgLTExLDMgKzE2LDUgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAncGFpcmlu Z2hlYXAuYycsCiAgICdyYnRyZWUuYycsCiApCisKK2JhY2tlbmRfc291cmNlcyArPSBkZm9y X3NvdXJjZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYi92ZWN0X3RlbXBsLmMgYi9z cmMvYmFja2VuZC9saWIvdmVjdF90ZW1wbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi41MjcxM2MzOWQzYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNr ZW5kL2xpYi92ZWN0X3RlbXBsLmMKQEAgLTAsMCArMSwzMDEgQEAKKy8qCisgKiBGaWxlOiB2 ZWN0X3RlbXBsLmMKKyAqLworCisjaW5jbHVkZSAibGliL3ZlY3RfdGVtcGxfc3RhcGxlLmgi CisKKy8qCisgKiBWZWN0b3IncyBmdW5jdGlvbnMKKyAqIEtlZXAgdGhpcyBzZWN0aW9uIGVx dWFsIHRvIHRoZSBzYW1lIHNlY3Rpb24gaW4gdmVjdF90ZW1wbC5oCisgKi8KKy8qCisgKiBD YWxsZXIgaGFzIHRvIGNvbnRyb2wgd2hldGhlciB2ZWN0b3IgdXNlIG91dGVyIG1lbW9yeSBw cm92aWRlZCBieSBjYWxsZXIgb3IKKyAqIG1hbmFnZSBtZW1vcnkgYWxsb2NhdGlvbiBhdXRv bWF0aWNhbGx5LCB3aGljaCBkZWZpbmVzIHdoZXRoZXIgdmVjdF9pbnNlcnQsCisgKiB2ZWN0 X2FwcGVuZCBhbmQgb3RoZXIgZnVuY3Rpb25zIG9mIHRoZSB2ZWN0b3IgY29udGFpbmVyIGF1 dG9tYXRpY2FsbHkgbWFuZ2UKKyAqIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gb3Igbm90 LgorICovCisKK2ludCB2ZWN0X2luaXQodmVjdF90ICp2LCBzaXplX3QgY2FwLCBpdGVtX3Qg b3V0ZXJfbWVtW10pOworaW50IHZlY3RfZmlsbCh2ZWN0X3QgKnYsIHNpemVfdCBjbnQsIGNv bnN0IGl0ZW1fdCBpbltdKTsKK2ludCB2ZWN0X3Jlc2VydmUodmVjdF90ICp2LCBzaXplX3Qg c3pOZXdDYXApOworaW50IHZlY3RfYXBwZW5kKHZlY3RfdCAqdmVjdCwgaXRlbV90IHZhbCk7 Cit2b2lkIHZlY3RfcHJpbnQoY29uc3QgdmVjdF90ICphKTsKK2ludCB2ZWN0X2NvbXBhcmUo Y29uc3QgdmVjdF90ICphLCBjb25zdCB2ZWN0X3QgKmIpOworaW50IHZlY3RfaW5zZXJ0KHZl Y3RfdCAqdiwgc2l6ZV90IHBvcywgaXRlbV90IHZhbCk7Cit2b2lkIHZlY3RfY2xlYXIodmVj dF90ICp2KTsKKworLyoKKyAqIFVuaXF1ZSBzb3J0ZWQgdmVjdG9yJ3MgZnVuY3Rpb25zCisg KiBLZWVwIHRoaXMgc2VjdGlvbiBlcXVhbCB0byB0aGUgc2FtZSBzZWN0aW9uIGluIHZlY3Rf dGVtcGwuaAorICovCit1c3ZfaW5zX3Jlc190IHVzdl9pbnNlcnQodW5pcXNvcnR2ZWN0X3Qg KmEsIGl0ZW1fdCB2YWwpOwordXN2X3NyY2hfcmVzX3QgdXN2X3NlYXJjaChjb25zdCB1bmlx c29ydHZlY3RfdCAqdXN2LCBpdGVtX3QgdmFsKTsKKworaW50Cit2ZWN0X2luaXQodmVjdF90 ICp2LCBzaXplX3QgY2FwLCBpdGVtX3Qgb3V0ZXJfbWVtW10pCit7CisJaWYgKHYgPT0gTlVM TCkKKwkJZ290byB2ZWN0X2luaXRfZXJyb3I7CisKKwl2LT5jYXAgPSBjYXA7CisJdi0+Y250 ID0gMDsKKworCWlmIChvdXRlcl9tZW0gIT0gTlVMTCkKKwl7CisJCXYtPm1lbV9pc19vdXRl ciA9IHRydWU7CisJCXYtPm0gPSBvdXRlcl9tZW07CisJfQorCWVsc2UKKwl7CisJCXYtPm1l bV9pc19vdXRlciA9IGZhbHNlOworCQlpZiAoY2FwID09IDApCisJCQl2LT5tID0gTlVMTDsK KwkJZWxzZQorCQl7CisJCQl2LT5tID0gKGl0ZW1fdCAqKVZFQ1RfTUFMTE9DKGNhcCAqIHNp emVvZihpdGVtX3QpKTsKKwkJCWlmICh2LT5tID09IE5VTEwpCisJCQkJZ290byB2ZWN0X2lu aXRfZXJyb3I7CisJCX0KKwl9CisKKwkvKiB2ZWN0X2luaXRfb2s6ICovCisJcmV0dXJuIDA7 Cit2ZWN0X2luaXRfZXJyb3I6CisJbWVtc2V0KHYsIDAsIHNpemVvZih2ZWN0X3QpKTsKKwly ZXR1cm4gLTE7Cit9CisKK2ludAordmVjdF9maWxsKHZlY3RfdCAqdiwgc2l6ZV90IGNudCwg Y29uc3QgaXRlbV90IGluW10pCit7CisJaWYgKHYgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOwor CisJaWYgKGNudCA9PSAwKQorCXsKKwkJdmVjdF9jbGVhcih2KTsKKwkJcmV0dXJuIDA7CisJ fQorCisJZm9yIChzaXplX3QgaiA9IDA7IGogPCBjbnQ7IGorKykKKwl7CisJCWlmICh2ZWN0 X2FwcGVuZCh2LCBpbltqXSkgIT0gMCkKKwkJeworCQkJdmVjdF9jbGVhcih2KTsKKwkJCXJl dHVybiAtMTsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworaW50Cit2ZWN0X3Jlc2VydmUo dmVjdF90ICp2LCBzaXplX3Qgc3pOZXdDYXApCit7CisJaXRlbV90ICptTmV3OworCisJaWYg KHYgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCisJaWYgKHYtPm1lbV9pc19vdXRlcikKKwkJ cmV0dXJuIC0xOworCisJaWYgKHN6TmV3Q2FwIDw9IHYtPmNhcCkKKwkJcmV0dXJuIDA7CisK KwltTmV3ID0gKGl0ZW1fdCAqKSBWRUNUX01BTExPQyhzaXplb2YoaXRlbV90KSAqIHN6TmV3 Q2FwKTsKKworCWlmIChtTmV3ID09IE5VTEwpCisJCXJldHVybiAtMTsKKworCWlmKHYtPm0g PT0gTlVMTCAmJiB2LT5jbnQgIT0gMCkKKwkJcmV0dXJuIC0xOworCisJaWYodi0+bSAhPSBO VUxMICYmIHYtPmNudCAhPSAwKQorCQltZW1jcHkobU5ldywgdi0+bSwgdi0+Y250ICogc2l6 ZW9mKGl0ZW1fdCkpOworCisJVkVDVF9GUkVFKHYtPm0pOworCXYtPm0gPSBtTmV3OworCXYt PmNhcCA9IHN6TmV3Q2FwOworCXJldHVybiAwOworfQorCitpbnQKK3ZlY3RfYXBwZW5kKHZl Y3RfdCAqdmVjdCwgaXRlbV90IHZhbCkKK3sKKwlpZiAodmVjdCA9PSBOVUxMKQorCQlyZXR1 cm4gLTE7CisKKwlpZiAodmVjdC0+Y250ICsgMSA+IHZlY3QtPmNhcCkKKwl7CisJCWlmICh2 ZWN0LT5tZW1faXNfb3V0ZXIpCisJCQlyZXR1cm4gLTE7CisJCWVsc2UKKwkJCXZlY3RfcmVz ZXJ2ZSh2ZWN0LCB2ZWN0LT5jYXAgKyBWRUNUX01FTUFMTE9DU1RFUCk7CisJfQorCisJdmVj dC0+bVt2ZWN0LT5jbnRdID0gdmFsOworCXZlY3QtPmNudCsrOworCXJldHVybiAwOworfQor Cit2b2lkCit2ZWN0X3ByaW50KGNvbnN0IHZlY3RfdCAqYSkKK3sKKwlmb3IgKHNpemVfdCBq ID0gMDsgaiA8IGEtPmNudDsgaisrKQorCQlwcmludGYoIiUiIFZFQ1RfSVRFTV9GT1JNQVRf U1BFQ0lGSUVSICIgIiwgYS0+bVtqXSk7CisKKwlwcmludGYoIlxuIik7Cit9CisKK2ludAor dmVjdF9jb21wYXJlKGNvbnN0IHZlY3RfdCAqYSwgY29uc3QgdmVjdF90ICpiKQoreworCWlm IChhID09IE5VTEwgfHwgYiA9PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlpZiAoYS0+Y250 ICE9IGItPmNudCkKKwkJcmV0dXJuIC0xOworCisJZm9yIChzaXplX3QgaiA9IDA7IGogPCBh LT5jbnQ7IGorKykKKwkJaWYgKGEtPm1bal0gIT0gYi0+bVtqXSkKKwkJCXJldHVybiAtMTsK KworCXJldHVybiAwOworfQorCitpbnQKK3ZlY3RfaW5zZXJ0KHZlY3RfdCAqdiwgc2l6ZV90 IHBvcywgaXRlbV90IHZhbCkKK3sKKwlpZiAodi0+Y2FwIDwgdi0+Y250ICsgMSAmJgorCQko di0+bWVtX2lzX291dGVyIHx8IHZlY3RfcmVzZXJ2ZSh2LCB2LT5jYXAgKyBWRUNUX01FTUFM TE9DU1RFUCkgIT0gMCkpCisJCXJldHVybiAtMTsKKworCS8qCisJICogSWYgbmVlZCwgbW92 ZSByaWdodCBmcm9tIHBvcyBpbmNsdWRpbmcgcG9zLiBCZWNhdXNlCisJICogbmVpdGhlciBz dGRsaWIncyBub3IgUE9TSVgncyBkb2N1bWVudGF0aW9uIGRlZmluZXMgdGhlCisJICogYmVo YXZpb3VyIG9mIG1lbW1vdmUgaW4gY2FzZSBvZiBjb3VudD0wLCB3ZSBjaGVjayBpdCBieQor CSAqIG91cnNlbHZlcy4KKwkgKi8KKwlpZiAodi0+Y250IC0gcG9zID4gMCkKKwkJbWVtbW92 ZSgmdi0+bVtwb3MgKyAxXSwgJnYtPm1bcG9zXSwgKHYtPmNudCAtIHBvcykgKiBzaXplb2Yo aXRlbV90KSk7CisKKwl2LT5tW3Bvc10gPSB2YWw7CisJdi0+Y250Kys7CisJcmV0dXJuIDA7 Cit9CisKK3ZvaWQKK3ZlY3RfY2xlYXIodmVjdF90ICp2KQoreworCWlmICh2ID09IE5VTEwp CisJCXJldHVybjsKKworCWlmICghdi0+bWVtX2lzX291dGVyKQorCQlWRUNUX0ZSRUUodi0+ bSk7CisKKwltZW1zZXQodiwgMCwgc2l6ZW9mKHZlY3RfdCkpOworfQorCit1c3Zfc3JjaF9y ZXNfdAordXN2X3NlYXJjaChjb25zdCB1bmlxc29ydHZlY3RfdCAqdXN2LCBpdGVtX3QgdmFs KQoreworCXNpemVfdCBpLCBsLCBnOworCXVzdl9zcmNoX3Jlc190IHJlczsKKworCWlmICh1 c3YgPT0gTlVMTCB8fCAodXN2LT5tID09IE5VTEwgJiYgKCh1c3YtPmNudCAhPSAwKSB8fCB1 c3YtPmNhcCAhPSAwKSkpIHsKKwkJcmVzLnN0ID0gVVNWX1NSQ0hfRVJST1I7CisJCXJldHVy biByZXM7CisJfQorCisJaWYgKHVzdi0+Y250ID09IDApIHsKKwkJcmVzLnBvcyA9IDA7CisJ CXJlcy5zdCA9IFVTVl9TUkNIX0VNUFRZOworCQlyZXR1cm4gcmVzOworCX0KKworCWlmICh2 YWwgPCB1c3YtPm1bMF0pIHsKKwkJcmVzLnBvcyA9IDA7CisJCXJlcy5zdCA9IFVTVl9TUkNI X05PVF9GT1VORF9TTUFMTEVTVDsKKwkJcmV0dXJuIHJlczsKKwl9CisKKwlpZiAodmFsID4g dXN2LT5tW3Vzdi0+Y250IC0gMV0pIHsKKwkJcmVzLnBvcyA9IHVzdi0+Y250IC0gMTsKKwkJ cmVzLnN0ID0gVVNWX1NSQ0hfTk9UX0ZPVU5EX0xBUkdFU1Q7CisJCXJldHVybiByZXM7CisJ fQorCisJbCA9IDA7CisJZyA9IHVzdi0+Y250IC0gMTsKKworCXdoaWxlIChnIC0gbCA+IDEp IHsKKwkJaSA9IGwgKyAoZyAtIGwpIC8gMjsKKwkJaWYgKHZhbCA9PSB1c3YtPm1baV0pIHsK KwkJCXJlcy5wb3MgPSBpOworCQkJcmVzLnN0ID0gVVNWX1NSQ0hfRk9VTkQ7CisJCQlyZXR1 cm4gcmVzOworCQl9IGVsc2UgaWYgKHZhbCA+IHVzdi0+bVtpXSkgeworCQkJbCA9IGk7CisJ CX0gZWxzZSAvLyB2YWwgPD0gdXN2LT5tW2ldCisJCXsKKwkJCWcgPSBpOworCQl9CisJfQor CS8qCisJICogV2hlbiBzY29wZXMgbCBhbmQgZyBhcmUgbmVpZ2hib3VycyAoICBnLWwgPSAx KQorCSAqLworCWlmICh2YWwgPT0gdXN2LT5tW2ddKSB7CisJCXJlcy5wb3MgPSBnOworCQly ZXMuc3QgPSBVU1ZfU1JDSF9GT1VORDsKKwkJcmV0dXJuIHJlczsKKwl9IGVsc2UgaWYgKHZh bCA9PSB1c3YtPm1bbF0pIHsKKwkJcmVzLnBvcyA9IGw7CisJCXJlcy5zdCA9IFVTVl9TUkNI X0ZPVU5EOworCQlyZXR1cm4gcmVzOworCX0KKworCXJlcy5wb3MgPSBnOworCXJlcy5zdCA9 IFVTVl9TUkNIX05PVF9GT1VORDsKKwlyZXR1cm4gcmVzOworfQorCisvKgorICogSU5TRVJU CisgKiByZWNlaXZlcyBhIHZhbHVlLCBjaGVja3Mgd2hldGhlciBhbiB1bmlxdWUgc29ydGVk IHZhbHVlcyB2ZWN0b3IgY29udGFpbnMKKyAqIHRoaXMgdmFsdWUuIElmIG5vdCwgaW5zZXJ0 cyBuZXcgdmFsdWUsIHJldGFpbmluZyBzb3J0ZWQgb3JkZXIuCisgKi8KK3Vzdl9pbnNfcmVz X3QKK3Vzdl9pbnNlcnQodW5pcXNvcnR2ZWN0X3QgKmEsIGl0ZW1fdCB2YWwpCit7CisJdXN2 X3NyY2hfcmVzX3Qgc2VhcmNoOworCXVzdl9pbnNfcmVzX3QgaW5zZXJ0OworCisJQXNzZXJ0 KGEgIT0gTlVMTCk7CisKKwlzZWFyY2ggPSB1c3Zfc2VhcmNoKGEsIHZhbCk7CisJaWYgKHNl YXJjaC5zdCA9PSBVU1ZfU1JDSF9GT1VORCkgeworCQlpbnNlcnQuc3QgPSBVU1ZfSU5TX0VY SVNUUzsKKwkJaW5zZXJ0LnBvcyA9IHNlYXJjaC5wb3M7CisJCXJldHVybiBpbnNlcnQ7CisJ fSBlbHNlIGlmIChzZWFyY2guc3QgPT0gVVNWX1NSQ0hfTk9UX0ZPVU5EX1NNQUxMRVNUIHx8 CisJCQkgICBzZWFyY2guc3QgPT0gVVNWX1NSQ0hfTk9UX0ZPVU5EKSB7CisJCWluc2VydC5w b3MgPSBzZWFyY2gucG9zOworCX0gZWxzZSBpZiAoc2VhcmNoLnN0ID09IFVTVl9TUkNIX0VN UFRZIHx8CisJCQkgICBzZWFyY2guc3QgPT0gVVNWX1NSQ0hfTk9UX0ZPVU5EX0xBUkdFU1Qp IHsKKwkJLyogSW4gY2FzZSB3aGVuIHZhbHVlIGlzIG1vcmUgdGhhbiBsYXJnZXN0OiBwb3Mg PSBhLT5jbnQgPSBzZWFyY2guZyArIDEuCisJCSAqLworCQkvKiBJbiBjYXNlIG9mIGVtcHR5 IHZlY3RvcjogcG9zID0gYS0+Y250ID0gMC4gKi8KKwkJaW5zZXJ0LnBvcyA9IGEtPmNudDsK Kwl9IGVsc2UgLyogVVNWX1NSQ0hfRVJST1Igb3IgdW5rbm93biByZXN1bHQgKi8KKwl7CisJ CWluc2VydC5zdCA9IFVTVl9JTlNfRVJST1I7CisJCXJldHVybiBpbnNlcnQ7CisJfQorCisJ aW5zZXJ0LnN0ID0gdmVjdF9pbnNlcnQoYSwgaW5zZXJ0LnBvcywgdmFsKQorCT09IDAgPyBV U1ZfSU5TX05FVyA6IFVTVl9JTlNfRVJST1I7CisKKwlyZXR1cm4gaW5zZXJ0OworfQorCisj aW5jbHVkZSAibGliL3ZlY3RfdGVtcGxfdW5kZWYuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2xpYi92ZWN0X3UxNi5jIGIvc3JjL2JhY2tlbmQvbGliL3ZlY3RfdTE2LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBhYjhlMjI0YzdhCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbGliL3ZlY3RfdTE2LmMKQEAgLTAsMCArMSw4IEBA CisvKgorICogRmlsZTogdmVjdF91MTYuYworICovCisKKy8qIGNsYW5nLWZvcm1hdCBvZmYg Ki8KKyNpbmNsdWRlICJsaWIvdmVjdF91MTZfY29uZmlnLmgiCisjaW5jbHVkZSAidmVjdF90 ZW1wbC5jIgorLyogY2xhbmctZm9ybWF0IG9uICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jLmggYi9zcmMvaW5jbHVkZS9jLmgKaW5kZXggODhkMTNlYzk5OTMuLjFlNDhhNTJhZTkw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jLmgKKysrIGIvc3JjL2luY2x1ZGUvYy5oCkBA IC01MDUsNiArNTA1LDEwIEBAIGV4dGVybiAiQysrIgogI2RlZmluZSBDcHBBc1N0cmluZyhp ZGVudGlmaWVyKSAjaWRlbnRpZmllcgogI2RlZmluZSBDcHBBc1N0cmluZzIoeCkJCQlDcHBB c1N0cmluZyh4KQogI2RlZmluZSBDcHBDb25jYXQoeCwgeSkJCQl4IyN5CisjZGVmaW5lIENw cENvbmNhdDIoeCwgeSkJCUNwcENvbmNhdCh4LCB5KQorCisjZGVmaW5lIENwcENvbmNhdFRy aXBsZSh4LCB5LCB6KQl4IyN5IyN6CisjZGVmaW5lIENwcENvbmNhdFRyaXBsZTIoYSwgYiwg YykJQ3BwQ29uY2F0VHJpcGxlKGEsIGIsIGMpCiAKIC8qCiAgKiBWQV9BUkdTX05BUkdTCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvYml0cGFja19zdGFwbGVfdGVtcGwuaCBiL3Ny Yy9pbmNsdWRlL2xpYi9iaXRwYWNrX3N0YXBsZV90ZW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41Yzk5NzJlMDhjYgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3N0YXBsZV90ZW1wbC5oCkBAIC0wLDAgKzEsNTcg QEAKKy8qCisgKiBGaWxlOiBiaXRwYWNrX3N0YXBsZV90ZW1wbC5oLmgKKyAqLworCisjaW5j bHVkZSAiYy5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBOT05SRVVTQUJM RSBDT0RFLCBhbGxvd2VkIHRvIGJlIGluY2x1ZGVkIG9ubHkgb25jZQorICoKKyAqIFRoaXMg Y29kZSBzaG91bGQgYXBwZWFyIG9ubHkgb25jZSBpbiBhIGZpbGUgKG9yIGluIGEgY2hhaW4g b2YgZmlsZXMpCisgKiBpbmNsdWRpbmcgdGhpcyBoZWFkZXIgd2l0aCAjaW5jbHVkZS4gU28s IHdlIHByb3RlY3QgaXQgZnJvbSBkdXBsaWNhdGVzIGJ5CisgKiBtZWFucyBvZiBtYWNybwor ICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpZm5kZWYgX0JJVFBBQ0tfU1RBUExF X1RFTVBMX0hfVU5JUVVFX0NPREVfCisjZGVmaW5lIF9CSVRQQUNLX1NUQVBMRV9URU1QTF9I X1VOSVFVRV9DT0RFXworCisvKiBObyBjb2RlIGhlcmUgeWV0ICovCisKKyNlbmRpZiAvKiBf QklUUEFDS19TVEFQTEVfVEVNUExfSF9VTklRVUVfQ09ERV8gKi8KKworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICogRW5kIG9mIENvZGUsIGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQg b25seSBvbmNlCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqIFJFVVNBQkxFIENPREUKKyAqCisgKiBUaGlzIGNvZGUgY2FuIGJl IHJldXNlZCB3aXRoICNpbmNsdWRlIGRpcmVjdGl2ZSBpbiBhIGZpbGUgaWYgQklUUEFDS19N QVJLRVIKKyAqIHJlZGVmaW5lZC4gVGhpcyBhbGxvdyBjcmVhdGlvbiBvZiBzZXZlcmFsIHR5 cGVzIG9mIHZlY3RvcnMgd2l0aCBkaWZmZXJlbnQKKyAqIHR5cGVzIG9mIG1lbWJlcnMuCisg KgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIEJJVFBBQ0tfSVRFTV9U WVBFCisjZXJyb3IgIkJJVFBBQ0tfSVRFTV9UWVBFIG1hY3JvIGlzIGluZGVmaW5lZC4iCisj ZW5kaWYKKyNpZm5kZWYgQklUUEFDS19NQVJLRVIKKyNlcnJvciAiQklUUEFDS19NQVJLRVIg bWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgorCisjZGVmaW5lIGl0ZW1fdAkJICAgQklU UEFDS19JVEVNX1RZUEUKKyNkZWZpbmUgd2lkdGhfZnJvbV92YWwgQ3BwQ29uY2F0VHJpcGxl Mih3aWR0aF8sIEJJVFBBQ0tfTUFSS0VSLCBfZnJvbV92YWwpCisjZGVmaW5lIHdpZHRoX3Rv X21hc2sgIENwcENvbmNhdFRyaXBsZTIod2lkdGhfLCBCSVRQQUNLX01BUktFUiwgX3RvX21h c2spCisjZGVmaW5lIGJpdHBhY2tfcGFjayAgIENwcENvbmNhdFRyaXBsZTIoYml0cGFja18s IEJJVFBBQ0tfTUFSS0VSLCBfcGFjaykKKyNkZWZpbmUgYml0cGFja191bnBhY2sgQ3BwQ29u Y2F0VHJpcGxlMihiaXRwYWNrXywgQklUUEFDS19NQVJLRVIsIF91bnBhY2spCisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqIEVuZCBvZiBSZXVzYWJsZSBDb2RlCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBEb24ndCBmb3JnZXQgdG8gaW5jbHVkZSB0 aGlzIGNvZGUgaW4geW91ciBmaWxlIHRoYXQgdXNlcyB0aGlzIGhlYWRlcgorICoKKyAqICNp bmNsdWRlICJsaWIvYml0cGFja190ZW1wbF91bmRlZi5oIgorICoKKyAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGwuaCBiL3NyYy9pbmNsdWRlL2xpYi9i aXRwYWNrX3RlbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmIzYTZlMDZjMzI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBh Y2tfdGVtcGwuaApAQCAtMCwwICsxLDE0IEBACisvKgorICogYml0cGFja190ZW1wbC5oCisg KgorICovCisKKyNpbmNsdWRlICJiaXRwYWNrX3N0YXBsZV90ZW1wbC5oIgorCitleHRlcm4g aXRlbV90IHdpZHRoX2Zyb21fdmFsKGl0ZW1fdCB2YWwpOworZXh0ZXJuIGl0ZW1fdCB3aWR0 aF90b19tYXNrKHNpemVfdCB3aWR0aCk7CitleHRlcm4gc2l6ZV90IGJpdHBhY2tfcGFjayh1 aW50OF90ICpwYWNrLCBzaXplX3QgY2FyZXQsIGl0ZW1fdCBpdGVtLAorCQkJCQkJICAgc2l6 ZV90IHN6SXRlbVdpZHRoKTsKK2V4dGVybiBpdGVtX3QgYml0cGFja191bnBhY2soY29uc3Qg dWludDhfdCAqcGFjaywgc2l6ZV90ICpjYXJldCwgc2l6ZV90IHN6SXRlbVdpZHRoKTsKKwor I2luY2x1ZGUgImJpdHBhY2tfdGVtcGxfdW5kZWYuaCIKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2xpYi9iaXRwYWNrX3RlbXBsX3VuZGVmLmggYi9zcmMvaW5jbHVkZS9saWIvYml0cGFj a190ZW1wbF91bmRlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li41YmY4NjRmZmExNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi9iaXRw YWNrX3RlbXBsX3VuZGVmLmgKQEAgLTAsMCArMSw1IEBACisjdW5kZWYgaXRlbV90CisjdW5k ZWYgd2lkdGhfZnJvbV92YWwKKyN1bmRlZiB3aWR0aF90b19tYXNrCisjdW5kZWYgYml0cGFj a19wYWNrCisjdW5kZWYgYml0cGFja191bnBhY2sKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2xpYi9iaXRwYWNrX3UxNi5oIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2LmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ1ZmI2YzRiMTdiCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2LmgKQEAgLTAsMCAr MSwxMiBAQAorLyoKKyAqIGJpdHBhY2suaAorICovCisjaWZuZGVmIF9CSVRQQUNLX1UxNl9I XworI2RlZmluZSBfQklUUEFDS19VMTZfSF8KKworLyogY2xhbmctZm9ybWF0IG9mZiAqLwor I2luY2x1ZGUgImJpdHBhY2tfdTE2X2NvbmZpZy5oIgorI2luY2x1ZGUgImJpdHBhY2tfdGVt cGwuaCIKKy8qIGNsYW5nLWZvcm1hdCBvbiAqLworCisjZW5kaWYgLyogX0JJVFBBQ0tfVTE2 X0hfICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvYml0cGFja191MTZfY29uZmln LmggYi9zcmMvaW5jbHVkZS9saWIvYml0cGFja191MTZfY29uZmlnLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjllNmM2NGQ0ZmVlCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2X2NvbmZpZy5oCkBAIC0wLDAgKzEs NiBAQAorLyoKKyAqIEZpbGU6IHZlY3RfdTE2X2NvbmZpZy5oCisgKi8KKworI2RlZmluZSBC SVRQQUNLX0lURU1fVFlQRSB1aW50MTZfdAorI2RlZmluZSBCSVRQQUNLX01BUktFUgkgIHUx NgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGwuaCBiL3NyYy9pbmNs dWRlL2xpYi92ZWN0X3RlbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjhlZWM2ZjA2NGIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGli L3ZlY3RfdGVtcGwuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogRmlsZTogdmVjdF90ZW1w bC5oCisgKi8KKworI2luY2x1ZGUgInZlY3RfdGVtcGxfc3RhcGxlLmgiCisKKy8qCisgKiBW ZWN0b3IncyBmdW5jdGlvbnMKKyAqIEtlZXAgdGhpcyBzZWN0aW9uIGVxdWFsIHRvIHRoZSBz YW1lIHNlY3Rpb24gaW4gdmVjdF90ZW1wbC5jCisgKi8KK2V4dGVybiBpbnQgdmVjdF9pbml0 KHZlY3RfdCAqdiwgc2l6ZV90IGNhcCwgaXRlbV90IGV4dGVybmFsX21lbW9yeVtdKTsKK2V4 dGVybiBpbnQgdmVjdF9maWxsKHZlY3RfdCAqdiwgc2l6ZV90IGNudCwgY29uc3QgaXRlbV90 ICppbik7CitleHRlcm4gaW50IHZlY3RfcmVzZXJ2ZSh2ZWN0X3QgKnYsIHNpemVfdCBzek5l d0NhcCk7CitleHRlcm4gaW50IHZlY3RfYXBwZW5kKHZlY3RfdCAqdmVjdCwgaXRlbV90IHZh bCk7CitleHRlcm4gdm9pZCB2ZWN0X3ByaW50KGNvbnN0IHZlY3RfdCAqYSk7CitleHRlcm4g aW50IHZlY3RfY29tcGFyZShjb25zdCB2ZWN0X3QgKmEsIGNvbnN0IHZlY3RfdCAqYik7Citl eHRlcm4gaW50IHZlY3RfaW5zZXJ0KHZlY3RfdCAqdiwgc2l6ZV90IHBvcywgaXRlbV90IHZh bCk7CitleHRlcm4gdm9pZCB2ZWN0X2NsZWFyKHZlY3RfdCAqdik7CisKKy8qCisgKiBVbmlx dWUgc29ydGVkIHZlY3RvcidzIGZ1bmN0aW9ucworICogS2VlcCB0aGlzIHNlY3Rpb24gZXF1 YWwgdG8gdGhlIHNhbWUgc2VjdGlvbiBpbiB2ZWN0X3RlbXBsLmMKKyAqLworZXh0ZXJuIHVz dl9pbnNfcmVzX3QgdXN2X2luc2VydCh1bmlxc29ydHZlY3RfdCAqYSwgaXRlbV90IHZhbCk7 CitleHRlcm4gdXN2X3NyY2hfcmVzX3QgdXN2X3NlYXJjaChjb25zdCB1bmlxc29ydHZlY3Rf dCAqdXN2LCBpdGVtX3QgdmFsKTsKKworI2luY2x1ZGUgInZlY3RfdGVtcGxfdW5kZWYuaCIK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9s aWIvdmVjdF90ZW1wbF9zdGFwbGUuaCBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3RlbXBsX3N0 YXBsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMTkyYzZk ODJhMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3RlbXBsX3N0 YXBsZS5oCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogRmlsZTogdmVjdF9zdGFwbGVfdGVt cGwuaAorICovCisKKyNpbmNsdWRlICJjLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyAqIE5PTlJFVVNBQkxFIENPREUsIGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQgb25seSBv bmNlCisgKgorICogVGhpcyBjb2RlIHNob3VsZCBhcHBlYXIgb25seSBvbmNlIGluIGEgZmls ZSAob3IgaW4gYSBjaGFpbiBvZiBmaWxlcykKKyAqIGluY2x1ZGluZyB0aGlzIGhlYWRlciB3 aXRoICNpbmNsdWRlLiBTbywgd2UgcHJvdGVjdCBpdCBmcm9tIGR1cGxpY2F0ZXMgYnkKKyAq IG1lYW5zIG9mIG1hY3JvCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lmbmRl ZiBfVkVDVF9TVEFQTEVfVEVNUExfSF9VTklRVUVfQ09ERV8KKyNkZWZpbmUgX1ZFQ1RfU1RB UExFX1RFTVBMX0hfVU5JUVVFX0NPREVfCisKKy8qCisgKiBTRUFSQ0ggaW4gVmVjdG9yIG9m IFVuaXF1ZSBTb3J0ZWQgbWVtYmVycworICovCit0eXBlZGVmIGVudW0KK3sKKwlVU1ZfU1JD SF9FUlJPUiA9IC0xLAorCVVTVl9TUkNIX0ZPVU5EID0gMCwKKwlVU1ZfU1JDSF9FTVBUWSwK KwlVU1ZfU1JDSF9OT1RfRk9VTkQsCisJVVNWX1NSQ0hfTk9UX0ZPVU5EX1NNQUxMRVNULAor CVVTVl9TUkNIX05PVF9GT1VORF9MQVJHRVNUCit9IHVzdl9zcmNoX3N0YXRfdDsKKwordHlw ZWRlZiBzdHJ1Y3QKK3sKKwl1c3Zfc3JjaF9zdGF0X3Qgc3Q7CisJc2l6ZV90IHBvczsgLyog cG9zaXRpb24gKGluZGV4KSBvZiBhIG1lbWJlciB0aGF0IGlzIGVxdWFsIHRvIHNlYXJjaGVk IHZhbHVlCisJCQkJICogb3IgdGhhdCBpcyBuZWFyZXN0IGdyZWF0ZXIgbWVtYmVyICovCit9 IHVzdl9zcmNoX3Jlc190OworCisvKgorICogSU5TRVJUICBpbiBWZWN0b3Igb2YgVW5pcXVl IFNvcnRlZCBtZW1iZXJzCisgKi8KK3R5cGVkZWYgZW51bQoreworCVVTVl9JTlNfRVJST1Ig PSAtMSwKKwlVU1ZfSU5TX0VYSVNUUyA9IDAsCisJVVNWX0lOU19ORVcKK30gdXN2X2luc19z dGF0X3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisJdXN2X2luc19zdGF0X3Qgc3Q7CisJc2l6 ZV90IHBvczsgLyogcG9zaXRpb24gKGluZGV4KSBvZiBhIG1lbWJlciB0aGF0IHdhcyBpbnNl cnRlZCBvciB0aGF0IHByb3ZlZAorCQkJCSAqIHRvIGJlIGVxdWFsIHRvIGluc2VydGVkIHZh bHVlCisJCQkJICovCit9IHVzdl9pbnNfcmVzX3Q7CisKKyNlbmRpZiAvKiBfVkVDVF9TVEFQ TEVfVEVNUExfSF9VTklRVUVfQ09ERV8gKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICogRW5kIG9mIENvZGUsIGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQgb25seSBvbmNlCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqIFJFVVNBQkxFIENPREUKKyAqCisgKiBUaGlzIGNvZGUgY2FuIGJlIHJldXNlZCB3aXRo ICNpbmNsdWRlIGRpcmVjdGl2ZSBpbiBhIGZpbGUgaWYgVkVDVF9NQVJLRVIKKyAqIHJlZGVm aW5lZC4gVGhpcyBhbGxvdyBjcmVhdGlvbiBvZiBzZXZlcmFsIHR5cGVzIG9mIHZlY3RvcnMg d2l0aCBkaWZmZXJlbnQKKyAqIHR5cGVzIG9mIG1lbWJlcnMuCisgKgorICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCisjaWZuZGVmIFZFQ1RfSVRFTV9UWVBFCisjZXJyb3IgIlZFQ1Rf SVRFTV9UWVBFIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBWRUNU X0lURU1fRk9STUFUX1NQRUNJRklFUgorI2Vycm9yICJWRUNUX0lURU1fRk9STUFUX1NQRUNJ RklFUiBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNpZm5kZWYgVkVDVF9NQVJL RVIKKyNlcnJvciAiVkVDVF9NQVJLRVIgbWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgor CisjaWZuZGVmIFZFQ1RfTUVNQUxMT0NTVEVQCisjZXJyb3IgIlZFQ1RfTUVNQUxMT0NTVEVQ IG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBWRUNUX01BTExPQwor I2Vycm9yICJWRUNUX01BTExPQyBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNp Zm5kZWYgVkVDVF9GUkVFCisjZXJyb3IgIlZFQ1RfRlJFRSBtYWNybyBpcyBpbmRlZmluZWQu IgorI2VuZGlmCisKKy8qCisgKiBUaGUgVmVjdG9yIHR5cGUgaXRzZWxmLAorICogVGhlIFZl Y3RvciBvZiBVbmlxdWUgU29ydGVkIEl0ZW1zIHR5cGUKKyAqIGFuZCB0aGUgSXRlbSB0eXBl CisgKgorICogSW4gZmFjdCwgdmVjdG9ycydzIG5hbWVzIGxvb2tzIGxpa2UgdmVjdF91MTZf dCB3aGVyZToKKyAqICAgICB2ZWN0XyAtIGNvbW1vbiBwcmVmaXgsCisgKiAgICAgdTE2IC0g bWFya2VyLAorICogICAgIF90IC0gc3VmZml4CisgKi8KKyNkZWZpbmUgdmVjdF90CQkgICBD cHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNUX01BUktFUiwgX3QpCisjZGVmaW5lIHVuaXFz b3J0dmVjdF90IENwcENvbmNhdFRyaXBsZTIodW5pcXNvcnR2ZWN0XywgVkVDVF9NQVJLRVIs IF90KQorI2RlZmluZSBpdGVtX3QJCSAgIFZFQ1RfSVRFTV9UWVBFCisKK3R5cGVkZWYgc3Ry dWN0Cit7CisJc2l6ZV90IGNudDsJCSAgIC8qIG51bWJlciBvZiBpdGVtcyAqLworCXNpemVf dCBjYXA7CQkgICAvKiBjYXBhY2l0eSAqLworCWJvb2wgbWVtX2lzX291dGVyOyAvKiBmbGFn IGFib3V0IGFuIGV4dGVybmFsIG1lbW9yeSBpcyB1c2VkICovCisJaXRlbV90ICptOwkJICAg LyogaXRlbXMgKG1lbWJlcnMpICovCit9IHZlY3RfdDsKKwordHlwZWRlZiB2ZWN0X3QgdW5p cXNvcnR2ZWN0X3Q7CisKKyNkZWZpbmUgdmVjdF9pbml0CQkgICBDcHBDb25jYXRUcmlwbGUy KHZlY3RfLCBWRUNUX01BUktFUiwgX2luaXQpCisjZGVmaW5lIHZlY3RfZmlsbAkJICAgQ3Bw Q29uY2F0VHJpcGxlMih2ZWN0XywgVkVDVF9NQVJLRVIsIF9maWxsKQorI2RlZmluZSB2ZWN0 X3Jlc2VydmUJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0XywgVkVDVF9NQVJLRVIsIF9yZXNl cnZlKQorI2RlZmluZSB2ZWN0X2FwcGVuZAkJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0Xywg VkVDVF9NQVJLRVIsIF9hcHBlbmQpCisjZGVmaW5lIHZlY3RfcHJpbnQJCSAgIENwcENvbmNh dFRyaXBsZTIodmVjdF8sIFZFQ1RfTUFSS0VSLCBfcHJpbnQpCisjZGVmaW5lIHZlY3RfY29t cGFyZQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNUX01BUktFUiwgX2NvbXBhcmUp CisjZGVmaW5lIHZlY3RfaW5zZXJ0CQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNU X01BUktFUiwgX2luc2VydCkKKyNkZWZpbmUgdmVjdF9jbGVhcgkJICAgQ3BwQ29uY2F0VHJp cGxlMih2ZWN0XywgVkVDVF9NQVJLRVIsIF9jbGVhcikKKworI2RlZmluZSB1c3ZfaW5zZXJ0 IENwcENvbmNhdFRyaXBsZTIodXN2XywgVkVDVF9NQVJLRVIsIF9pbnNlcnQpCisjZGVmaW5l IHVzdl9zZWFyY2ggQ3BwQ29uY2F0VHJpcGxlMih1c3ZfLCBWRUNUX01BUktFUiwgX3NlYXJj aCkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRW5kIG9mIFJldXNhYmxlIENv ZGUKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIERvbid0IGZvcmdldCB0 byBpbmNsdWRlCisgKiAJCSNpbmNsdWRlICJ2ZWN0X3RlbXBsX3VuZGVmLmgiCisgKiBpbiB5 b3VyIGZpbGUgdGhhdCB1c2VzIHRoaXMgaGVhZGVyCisgKgorICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9saWIvdmVjdF90ZW1wbF91bmRlZi5oIGIvc3JjL2luY2x1ZGUvbGliL3Zl Y3RfdGVtcGxfdW5kZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNTliNjlmMThiOTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvdmVj dF90ZW1wbF91bmRlZi5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBGaWxlOiB2ZWN0X3Vu ZGVmLmgKKyAqLworCisjdW5kZWYgdmVjdF90CisjdW5kZWYgdW5pcXNvcnR2ZWN0X3QKKyN1 bmRlZiBpdGVtX3QKKworI3VuZGVmIFZFQ1RfSVRFTV9UWVBFCisjdW5kZWYgVkVDVF9NQVJL RVIKKyN1bmRlZiBWRUNUX0NwcENvbmNhdFRyaXBsZTIKKworI3VuZGVmIHZlY3RfaW5pdAor I3VuZGVmIHZlY3RfZmlsbAorI3VuZGVmIHZlY3RfcmVzZXJ2ZQorI3VuZGVmIHZlY3RfYXBw ZW5kCisjdW5kZWYgdmVjdF9wcmludAorI3VuZGVmIHZlY3RfY29tcGFyZQorI3VuZGVmIHZl Y3RfaW5zZXJ0CisjdW5kZWYgdmVjdF9jbGVhcgorCisjdW5kZWYgdXN2X2luc2VydAorI3Vu ZGVmIHVzdl9zZWFyY2gKKworI3VuZGVmIFZFQ1RfUFJJX0ZPUk1BVF9TUEVDSUZJRVIKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIv dmVjdF91MTYuaCBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3UxNi5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZGY4MWE0MTdmNAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3UxNi5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisg KiBGaWxlOiB2ZWN0X3UxNi5oCisgKi8KKworI2lmbmRlZiBfVkVDVF9VMTZfSF8KKyNkZWZp bmUgX1ZFQ1RfVTE2X0hfCisKKy8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KKyNpbmNsdWRlICJ2 ZWN0X3UxNl9jb25maWcuaCIKKyNpbmNsdWRlICJ2ZWN0X3RlbXBsLmgiCisvKiBjbGFuZy1m b3JtYXQgb24gKi8KKworLyoKKyAqIFR5cGVzIGFyZSBzdXBwb3NlZCB0byBiZSBjcmVhdGVk IGNyZWF0ZWQgYnkgdGhpcyBmaWxlCisgKiAgICAgdmVjdF91MTZfdAorICogICAgIGl0ZW1f dTE2X3QKKyAqICAgICB1bmlxc29ydHZlY3RfdTE2X3QKKyAqLworLyoKKyAqIEZ1bmN0aW9u cyBhcmUgc3VwcG9zZWQgdG8gYmUgY3JlYXRlZCBieSB0aGlzIGZpbGUKKyAqICAgICB2ZWN0 X3UxNl9jcmVhdGUKKyAqICAgICB2ZWN0X3UxNl9jcmVhdGVfZmlsbGVkCisgKiAgICAgdmVj dF91MTZfcmVzZXJ2ZQorICogICAgIHZlY3RfdTE2X2FwcGVuZAorICogICAgIHZlY3RfdTE2 X2Rlc3Ryb3kKKyAqICAgICB2ZWN0X3UxNl9wcmludAorICogICAgIHZlY3RfdTE2X2NvbXBh cmUKKyAqICAgICB2ZWN0X3UxNl9pbnNlcnQKKyAqICAgICB2ZWN0X3UxNl9jbGVhcgorICog ICAgIHVzdl91MTZfaW5zZXJ0CisgKiAgICAgdXN2X3UxNl9zZWFyY2gKKyAqLworCisjZW5k aWYgLy9fVkVDVF9VMTZfSF8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3Ux Nl9jb25maWcuaCBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3UxNl9jb25maWcuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTNhOTMyODRlOGYKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvdmVjdF91MTZfY29uZmlnLmgKQEAgLTAsMCAr MSwxMCBAQAorLyoKKyAqIEZpbGU6IHZlY3RfdTE2X2NvbmZpZy5oCisgKi8KKworI2RlZmlu ZSBWRUNUX0lURU1fVFlQRQkJCSAgIHVpbnQxNl90CisjZGVmaW5lIFZFQ1RfSVRFTV9GT1JN QVRfU1BFQ0lGSUVSIFBSSXUxNgorI2RlZmluZSBWRUNUX01BUktFUgkJCQkgICB1MTYKKyNk ZWZpbmUgVkVDVF9NRU1BTExPQ1NURVAJCSAgIDUKKyNkZWZpbmUgVkVDVF9NQUxMT0MJCQkJ ICAgbWFsbG9jCisjZGVmaW5lIFZFQ1RfRlJFRQkJCQkgICBmcmVlCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9NYWtlZmlsZSBiL3NyYy90ZXN0L01ha2VmaWxlCmluZGV4IDNlYjBhMDZhYmI0 Li5hYmE4ZGIxZjQ4MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvTWFrZWZpbGUKKysrIGIvc3Jj L3Rlc3QvTWFrZWZpbGUKQEAgLTE0LDYgKzE0LDcgQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRp cikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBTVUJESVJTID0gXAogCWF1dGhlbnRpY2F0aW9u IFwKKwlkZm9yIFwKIAlpc29sYXRpb24gXAogCW1vZHVsZXMgXAogCXBlcmwgXApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvZGZvci8uZ2l0aWdub3JlIGIvc3JjL3Rlc3QvZGZvci8uZ2l0aWdu b3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wZDc3YTUxMjE2 YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2Rmb3IvLmdpdGlnbm9yZQpAQCAtMCww ICsxLDMgQEAKK3Rlc3RfYml0cGFja191MTYKK3Rlc3RfdW5pcXNvcnR2ZWN0X3UxNgordGVz dF92ZWN0X3UxNgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZSBiL3NyYy90 ZXN0L2Rmb3IvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmExNWQ1ZWFmNzM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvZGZvci9NYWtl ZmlsZQpAQCAtMCwwICsxLDYxIEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGaWxlOiBz cmMvdGVzdC9kZm9yL01ha2VmaWxlCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJkaXIg PSBzcmMvdGVzdC9kZm9yCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgorZGZvcl9kaXIgOj0g JCh0b3BfYnVpbGRkaXIpL3NyYy9iYWNrZW5kL2xpYgorCitpbmNsdWRlICQoZGZvcl9kaXIp L01ha2VmaWxlLmRmb3IKKworIyBFbnN1cmUgZGVwZW5kZW5jeSB0cmFja2luZyB3b3Jrcwor T0JKUyArPSAkKE9CSlNfREZPUikKKworaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01h a2VmaWxlLmdsb2JhbAorCitERVBESVIgPz0gLmRlcHMgIyBUaGlzIGZpeGVzIGEgcHJvYmxl bSBpbiBzb21lIENJIGpvYnMKKworIyBPYmplY3QgZmlsZXMgb2YgdmVjdCwgYml0cGFjayBh bmQgZGZvciB1c2VkIGJ5IHRoZXNlIHVuaXQtdGVzdHMgYXJlIGluIHRoZSBzYW1lCisjIGRp cmVjdG9yeSBhcyB0aGlzIE1ha2VmaWxlLiBUZXN0cyBkb24ndCB1c2Ugb25lcyBmcm9tIHNy Yy9iYWNrZW5kL2xpYiBhbmQgY29tcGlsZQorIyBkaWZmZXJlbnQgb25lcyBmb3IgdGhlbXNl bHZlcy4KKyQoaW5mbyBVc2UgT0JKU19ERk9SPSQoT0JKU19ERk9SKSBmcm9tIGN1cnJlbnQg ZGlyZWN0b3J5ICQoc3ViZGlyKS4gXAorICAgICAgIFRoZXkgYXJlIGJ1aWx0IG9uIHNvdXJj ZXMgZnJvbSAkKGRmb3JfZGlyKSkKKworIyAkKE9CSlNfREZPUik6ICUubzogJChkZm9yX2Rp cikvJS5jCisjIAlAaWYgdGVzdCAhIC1kICQoREVQRElSKTsgdGhlbiBta2RpciAtcCAkKERF UERJUik7IGZpCisjIAkkKENDKSAkKENGTEFHUykgJChDUFBGTEFHUykgLURGUk9OVEVORCBc CisjIAkJLWMgJDwgXAorIyAJCS1NTUQgLU1QIC1NRiAkKERFUERJUikvJChub3RkaXIgJDw6 LmM9LlBvKSBcCisjIAkJLW8gJEAKKworJChPQkpTX0RGT1IpOiAlLm86ICQoZGZvcl9kaXIp LyUuYworCWVjaG8gIlRoZSBydWxlICouYy0+Ki5vIGlzIHdvcmtpbmcgZm9yICRALiBUaGUg REVQJ3MgY2FsY3VsYXRpb24gcmVzdWx0ZWQgaW4gJChERVBESVIpLyQoQEY6Lm89LlBvKSIK KwlAaWYgdGVzdCAhIC1kICQoREVQRElSKTsgdGhlbiBta2RpciAtcCAkKERFUERJUik7IGZp CisJJChDQykgJChDRkxBR1MpICQoQ1BQRkxBR1MpIC1ERlJPTlRFTkQgXAorCQktYyAkKGRm b3JfZGlyKS8kKEBGOi5vPS5jKSBcCisJCS1NTUQgLU1QIC1NRiAkKERFUERJUikvJChARjou bz0uUG8pIFwKKwkJLW8gJEAKKworTElCVEFQX09CSlMgPSAkKHRvcF9idWlsZGRpcikvc3Jj L3Rlc3QvbGlidGFwL3RhcC5vCisKK1RFU1RTPSB0ZXN0X3ZlY3RfdTE2IFwKKyAgICAgICB0 ZXN0X3VuaXFzb3J0dmVjdF91MTYgXAorICAgICAgIHRlc3RfYml0cGFja191MTYKKworJChU RVNUUzolPSUubyk6IENQUEZMQUdTICs9IC1JJCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0IC1E RlJPTlRFTkQKKworYWxsOiAkKFRFU1RTKQorCiskKFRFU1RTKTogJTogJS5vICQoTElCVEFQ X09CSlMpICQoT0JKU19ERk9SKQorCSQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkXiAk KExERkxBR1MpICQoTElCUykgLW8gJEAkKFgpCisKK2NoZWNrLXVuaXQ6ICQoVEVTVFMpCisJ ZWNobyAiIyArKysgVW5pdCB0ZXN0cyBpbiAkKHN1YmRpcikgKysrIiAmJiBcCisJY2QgJCh0 b3BfYnVpbGRkaXIpLyQoc3ViZGlyKSAmJiBcCisJICAgJChQUk9WRSkgJChQUk9WRV9GTEFH UykgXAorCSAgICAtdiAkKGFkZHByZWZpeCAuLywkKGlmICQoUFJPVkVfVEVTVFMpLCAkKFBS T1ZFX1RFU1RTKSwgJChURVNUUykpKQorCitjaGVjazogY2hlY2stdW5pdAorCitjbGVhbiBk aXN0Y2xlYW46CisJcm0gLXJmICQoVEVTVFMpICoubwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv ZGZvci9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L2Rmb3IvbWVzb24uYnVpbGQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNlNzYyYzUyNDMwCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZApAQCAtMCwwICsxLDYyIEBACitk Zm9yX2RpciA9IGpvaW5fcGF0aHMobWVzb24ucHJvamVjdF9zb3VyY2Vfcm9vdCgpLCAnc3Jj L2JhY2tlbmQvbGliJykKKworIyBPYmplY3QgZmlsZXMgb2YgdmVjdCwgYml0cGFjayBhbmQg ZGZvciB1c2VkIGJ5IHRoZXNlIHVuaXQtdGVzdHMgYXJlIGluIHRoZSBzYW1lCisjIGRpcmVj dG9yeSBhcyB0aGlzIG1lc29uLmJ1aWxkLiBUZXN0cyBkb24ndCB1c2Ugb25lcyBmcm9tIHNy Yy9iYWNrZW5kL2xpYiBhbmQKKyMgY29tcGlsZSBkaWZmZXJlbnQgb25lcyBmb3IgdGhlbXNl bHZlcy4gSW4gTWVzb24vTmluamEgYnVpbGQgc3lzdGVtIHdlIHVuaXRlCisjIHRoZW0gaW50 byBhIHN0YXRpYyBsaWJyYXJ5LgorCitkZm9yX3NvdXJjZXMgPSBmaWxlcygKKyAgam9pbl9w YXRocyhkZm9yX2RpciwgJ3ZlY3RfdTE2LmMnKSwKKyAgam9pbl9wYXRocyhkZm9yX2Rpciwg J2JpdHBhY2tfdTE2LmMnKSwKKykKKworZGZvcl90ZXN0X2xpYiA9IHN0YXRpY19saWJyYXJ5 KAorICAnZGZvcl90ZXN0X2xpYicsCisgIGRmb3Jfc291cmNlcywKKyAgaW5jbHVkZV9kaXJl Y3RvcmllczogWworICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uLy4uLy4uJyksICMgdG9w X2J1aWxkZGlyCisgICAgaW5jbHVkZV9kaXJlY3RvcmllcygnLi4vJyksICAgICAgIyBzcmMv dGVzdAorICAgIHBvc3RncmVzX2luYywgICAgICAgICAgICAgICAgICAgICMgc3JjL2luY2x1 ZGUgaGVyZQorICBdLAorICBjX2FyZ3M6IFsnLURGUk9OVEVORCddLAorKQorCisjIFdlIGFs c28gYnVpbGQgbGlidGFwIGFzIGEgc3RhdGljIGxpYnJhcnkKKworbGlidGFwID0gc3RhdGlj X2xpYnJhcnkoCisgICd0YXAnLAorICAnLi4vLi4vdGVzdC9saWJ0YXAvdGFwLmMnLAorICBp bmNsdWRlX2RpcmVjdG9yaWVzOgorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uLy4uLy4u JyksICMgdG9wX2J1aWxkZGlyCispCisKKyMgRWFjaCB0ZXN0IGlzIGFuIEVMRiBleGVjdXRh YmxlCisKK3Rlc3RfbmFtZXMgPSBbCisgICd0ZXN0X3ZlY3RfdTE2JywKKyAgJ3Rlc3RfdW5p cXNvcnR2ZWN0X3UxNicsCisgICd0ZXN0X2JpdHBhY2tfdTE2JywKK10KKworZm9yZWFjaCB0 IDogdGVzdF9uYW1lcworICBleGUgPSBleGVjdXRhYmxlKAorICAgIHQsCisgICAgdCArICcu YycsCisgICAgbGlua193aXRoOiBbCisgICAgICBkZm9yX3Rlc3RfbGliLAorICAgICAgbGli dGFwLAorICAgICAgY29tbW9uX3N0YXRpYywgIyBQcm92aWRlcyBwZ19wcmludGYgYW5kIG90 aGVyIGNvbW1vbiB1dGlsaXRpZXMKKyAgICAgIHBncG9ydF9zdGF0aWMsICAgICMgUHJvdmlk ZXMgT1MtcG9ydGFiaWxpdHkgZnVuY3Rpb25zCisgICAgXSwKKwlkZXBlbmRlbmNpZXM6IFtv c19kZXBzLCBsaWJpbnRsXSwKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzOiBbCisgICAgICBp bmNsdWRlX2RpcmVjdG9yaWVzKCcuLi8uLi8uLicpLCAjIHRvcF9idWlsZGRpcgorICAgICAg aW5jbHVkZV9kaXJlY3RvcmllcygnLi4vJyksICAgICAgIyBzcmMvdGVzdAorICAgICAgcG9z dGdyZXNfaW5jLCAgICAgICAgICAgICAgICAgICAgIyBzcmMvaW5jbHVkZSBoZXJlCisgICAg XSwKKyAgICAjIEJhY2tlbmQgY29kZSBvZnRlbiByZXF1aXJlcyB0aGVzZSBhcmd1bWVudHMg dG8gaWRlbnRpZnkgYXMgYmFja2VuZAorICAgIGNfYXJnczogWyctREZST05URU5EJ10sCisg ICkKKworICB0ZXN0KHQsIGV4ZSwgc3VpdGU6ICdkZm9yJykKK2VuZGZvcmVhY2gKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L2Rmb3IvdGVzdC5oIGIvc3JjL3Rlc3QvZGZvci90ZXN0LmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY2YzU0YWFkOTVmCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvZGZvci90ZXN0LmgKQEAgLTAsMCArMSwzMSBAQAor CisvKgorICogdGVzdC5oCisgKi8KKyNpZm5kZWYgX1RFU1RfSF8KKyNkZWZpbmUgX1RFU1Rf SF8KKworI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworc3Rh dGljIGlubGluZSB2b2lkCit0ZXN0X3ByaW50X3U4X2FycmF5KHNpemVfdCBjbnQsIHVpbnQ4 X3QgYXJyW10sIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJcHJpbnRmKCIlcyhoZXgpOiB7ICIs IG5hbWUpOworCWZvciAoc2l6ZV90IGogPSAwOyBqIDwgY250IC0gMTsgaisrKQorCQlwcmlu dGYoIiUwMiIgUFJJeDggIiwgIiwgYXJyW2pdKTsKKworCXByaW50ZigiJTAyIiBQUkl4OCAi IH1cbiIsIGFycltjbnQgLSAxXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordGVzdF9w cmludF91MTZfYXJyYXkoc2l6ZV90IGNudCwgdWludDE2X3QgYXJyW10sIGNvbnN0IGNoYXIg Km5hbWUpCit7CisJcHJpbnRmKCIlcyhoZXgpOiB7ICIsIG5hbWUpOworCWZvciAoc2l6ZV90 IGogPSAwOyBqIDwgY250IC0gMTsgaisrKQorCQlwcmludGYoIiUwNCIgUFJJeDE2ICIsICIs IGFycltqXSk7CisKKwlwcmludGYoIiUwNCIgUFJJeDE2ICJ9XG4iLCBhcnJbY250IC0gMV0p OworfQorCisjZW5kaWYgLyogX1RFU1RfSF8gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yL3Rlc3RfYml0cGFja191MTYuYyBiL3Ny Yy90ZXN0L2Rmb3IvdGVzdF9iaXRwYWNrX3UxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5kYTg0YmIyZjIyZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2Rmb3IvdGVzdF9iaXRwYWNrX3UxNi5jCkBAIC0wLDAgKzEsMzU3IEBACisvKgorICog dGVzdF9iaXRwYWNrLmMKKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxz dHJpbmcuaD4KKworI2luY2x1ZGUgImxpYi9iaXRwYWNrX3UxNi5oIgorI2luY2x1ZGUgImxp Yi92ZWN0X3UxNi5oIgorI2luY2x1ZGUgImxpYnRhcC90YXAuaCIKKworaW50CittYWluKHZv aWQpCit7CisJcGxhbigxOTUpOworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IE1BU0sgQU5EIFdJRFRIIENB TENVTEFUSU9OXG4iKTsKKwl7CisJCWNtcF9vaygxLCAiPT0iLCAodWludDE2X3Qpd2lkdGhf dTE2X2Zyb21fdmFsKDB4MDApLAorCQkJICAgIldpZHRoIG9mIDAwIGlzIGVxdWFsIHRvIDEg Yml0LiIpOworCQljbXBfb2soMiwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3Zh bCgweDAyKSwKKwkJCSAgICJXaWR0aCBvZiAwMiBpcyBlcXVhbCB0byAyIGJpdHMuIik7CisJ CWNtcF9vaygyLCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4MDIpLAor CQkJICAgIldpZHRoIG9mIDAyIGlzIGVxdWFsIHRvIDIgYml0cy4iKTsKKwkJY21wX29rKDIs ICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgwMyksCisJCQkgICAiV2lk dGggb2YgMDMgaXMgZXF1YWwgdG8gMiBiaXRzLiIpOworCQljbXBfb2soMywgIj09IiwgKHVp bnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDA0KSwKKwkJCSAgICJXaWR0aCBvZiAwNCBp cyBlcXVhbCB0byAzIGJpdHMuIik7CisJCWNtcF9vaygzLCAiPT0iLCAodWludDE2X3Qpd2lk dGhfdTE2X2Zyb21fdmFsKDB4MDUpLAorCQkJICAgIldpZHRoIG9mIDA1IGlzIGVxdWFsIHRv IDMgYml0cy4iKTsKKwkJY21wX29rKDQsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJv bV92YWwoMHgwOCksCisJCQkgICAiV2lkdGggb2YgMDggaXMgZXF1YWwgdG8gNCBiaXRzLiIp OworCQljbXBfb2soNCwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDBB KSwKKwkJCSAgICJXaWR0aCBvZiAxMCBpcyBlcXVhbCB0byA0IGJpdHMuIik7CisJCWNtcF9v ayg0LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4MEYpLAorCQkJICAg IldpZHRoIG9mIDE1IGlzIGVxdWFsIHRvIDQgYml0cy4iKTsKKwkJY21wX29rKDUsICI9PSIs ICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgxMCksCisJCQkgICAiV2lkdGggb2Yg MTYgaXMgZXF1YWwgdG8gNSBiaXRzLiIpOworCQljbXBfb2soNSwgIj09IiwgKHVpbnQxNl90 KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDFGKSwKKwkJCSAgICJXaWR0aCBvZiAzMSBpcyBlcXVh bCB0byA1IGJpdHMuIik7CisJCWNtcF9vayg2LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2 X2Zyb21fdmFsKDB4MjApLAorCQkJICAgIldpZHRoIG9mIDMyIGlzIGVxdWFsIHRvIDYgYml0 cy4iKTsKKwkJY21wX29rKDcsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwo MHg0MCksCisJCQkgICAiV2lkdGggb2YgNjQgaXMgZXF1YWwgdG8gNyBiaXRzLiIpOworCQlj bXBfb2soOCwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDgwKSwKKwkJ CSAgICJXaWR0aCBvZiAxMjggaXMgZXF1YWwgdG8gOCBiaXRzLiIpOworCQljbXBfb2soMTMs ICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgxMDAwKSwKKwkJCSAgICJX aWR0aCBvZiAweDAxMDAwIGlzIGVxdWFsIHRvIDEzIGJpdHMuIik7CisJCWNtcF9vaygxNiwg Ij09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDhBQkMpLAorCQkJICAgIldp ZHRoIG9mIDB4MDhBQkMgaXMgZXF1YWwgdG8gMTUgYml0cy4iKTsKKworCQljbXBfb2soMHgx LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X3RvX21hc2soMSksCisJCQkgICAiTWFzayBm cm9tIHdpZHRoIDEgaXMgMDAwMDAwMDEoYmluKS4iKTsKKwkJY21wX29rKDB4MywgIj09Iiwg KHVpbnQxNl90KXdpZHRoX3UxNl90b19tYXNrKDIpLAorCQkJICAgIk1hc2sgZnJvbSB3aWR0 aCAyIGlzIDAwMDAwMDExKGJpbikuIik7CisJCWNtcF9vaygweDcsICI9PSIsICh1aW50MTZf dCl3aWR0aF91MTZfdG9fbWFzaygzKSwKKwkJCSAgICJNYXNrIGZyb20gd2lkdGggMyBpcyAw MDAwMDExMShiaW4pLiIpOworCQljbXBfb2soMHgzRkYsICI9PSIsICh1aW50MTZfdCl3aWR0 aF91MTZfdG9fbWFzaygxMCksCisJCQkgICAiTWFzayBmcm9tIHdpZHRoIDEwIGlzIDB4M0ZG KGJpbikuIik7CisJCWNtcF9vaygweDdGRkYsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZf dG9fbWFzaygxNSksCisJCQkgICAiTWFzayBmcm9tIHdpZHRoIDE1IGlzIDB4N0ZGRihiaW4p LiIpOworCQljbXBfb2soMHhGRkZGLCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X3RvX21h c2soMTYpLAorCQkJICAgIk1hc2sgZnJvbSB3aWR0aCAxNiBpcyAweEZGRkYoYmluKS4iKTsK Kwl9CisJcHJpbnRmKCJUZXN0IE1BU0sgQU5EIFdJRFRIIENBTENVTEFUSU9OIFBBU1NFRFxu Iik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgQklUUEFDSyBQQUNLSU5HXG4iKTsKKwl7Cisj ZGVmaW5lIFNJWkVPRlBBQ0sgNjBVCisJCXVpbnQ4X3QgcGFja1tTSVpFT0ZQQUNLXTsKKwkJ c2l6ZV90IGNhcmV0ID0gMDsKKwkJbWVtc2V0KHBhY2ssIDAsIFNJWkVPRlBBQ0spOworCQkv KgorCQkgKiBTaW5jZSB3ZSBpbXBsZW1lbnRlZCB0aGUgbnVsaWZ5aW5nIG9mIGJpdHMgYWNj b3JkaW5nIHRvIGEgbWFzayAoc2VlCisJCSAqIHRoZSBiaXRwYWNrIGZ1bmN0aW9uKSwgd2Ug Y2FuIHVzZSBldmVuIGEgcGFjayBub3QgcHJlcGFyZWQgaW4gYWR2YW5jZQorCQkgKiBhbmQg Y29tcHJpc2luZyBnYXJiYWdlLiBCdXQgd2Ugd2FudCB0byBjaGVjayB2YWx1ZSBvZiBlYWNo IGJ5dGUgb2YKKwkJICogdGhlIHBhY2sgaW4gdGhpcyB0ZXN0IGFuZCB3ZSBzaW1wbGlmeSB0 aGlzIHRhc2sgYnkgdXNpbmcgYSB6ZXJvZWQKKwkJICogcGFjay4KKwkJICovCisKKwkJZm9y IChpbnQgaiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCWNhcmV0ID0gYml0cGFja191MTZfcGFj ayhwYWNrLCBjYXJldCwgMSwgMSk7CisJCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFj aywgY2FyZXQsIDAsIDEpOworCQl9CisJCWNtcF9vaygxNiwgIj09IiwgY2FyZXQsICJDYXJl dCA9IDE2LiIpOworCQljbXBfb2soMHg1NSwgIj09IiwgcGFja1swXSwgIlNhdmVkIGJpdC1i eS1iaXQ6IGZpcnN0IGJ5dGUgaXMgMHg1NS4iKTsKKwkJY21wX29rKDB4NTUsICI9PSIsIHBh Y2tbMV0sICJTYXZlZCBiaXQtYnktYml0OiBzZWNvbmQgYnl0ZSBpcyAweDU1LiIpOworCisJ CWZvciAoaW50IGogPSAwOyBqIDwgODsgaisrKSB7CisJCQljYXJldCA9IGJpdHBhY2tfdTE2 X3BhY2socGFjaywgY2FyZXQsIDB4MDIgLyogMTAoYmluKSAqLywgMik7CisJCX0KKworCQlj bXBfb2soMzIsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAzMi4iKTsKKwkJY21wX29rKDB4QUEs ICI9PSIsIHBhY2tbMl0sCisJCQkgICAiU2F2ZWQgd2l0aCB0d28tYml0IHdpZHRoOiBmaXJz dCBieXRlIGlzIDB4QUEuIik7CisJCWNtcF9vaygweEFBLCAiPT0iLCBwYWNrWzNdLAorCQkJ ICAgIlNhdmVkIHdpdGggdHdvLWJpdCB3aWR0aDogc2Vjb25kIGJ5dGUgaXMgMHhBQS4iKTsK KworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgeworCQkJY2FyZXQgPSBiaXRwYWNr X3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDA1IC8qIDEwMShiaW4pICovLCAzKTsKKwkJCWNh cmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgwMiAvKiAwMTAoYmluKSAq LywgMyk7CisJCX0KKworCQljbXBfb2soODAsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA4MC4i KTsKKwkJY21wX29rKDB4NTUsICI9PSIsIHBhY2tbNF0sCisJCQkgICAiU2F2ZWQgd2l0aCB0 aHJlZS1iaXQgd2lkdGg6IGZpcnN0IGJ5dGUgaXMgMHg1NS4iKTsKKwkJY21wX29rKDB4NTUs ICI9PSIsIHBhY2tbNV0sCisJCQkgICAiU2F2ZWQgd2l0aCB0aHJlZS1iaXQgd2lkdGg6IHNl Y29uZCBieXRlIGlzIDB4NTUuIik7CisJCWNtcF9vaygweDU1LCAiPT0iLCBwYWNrWzZdLAor CQkJICAgIlNhdmVkIHdpdGggdGhyZWUtYml0IHdpZHRoOiBzZWNvbmQgYnl0ZSBpcyAweDU1 LiIpOworCQljbXBfb2soMHg1NSwgIj09IiwgcGFja1s3XSwKKwkJCSAgICJTYXZlZCB3aXRo IHRocmVlLWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweDU1LiIpOworCQljbXBfb2soMHg1 NSwgIj09IiwgcGFja1s4XSwKKwkJCSAgICJTYXZlZCB3aXRoIHRocmVlLWJpdCB3aWR0aDog c2Vjb25kIGJ5dGUgaXMgMHg1NS4iKTsKKwkJY21wX29rKDB4NTUsICI9PSIsIHBhY2tbOV0s CisJCQkgICAiU2F2ZWQgd2l0aCB0aHJlZS1iaXQgd2lkdGg6IHNlY29uZCBieXRlIGlzIDB4 NTUuIik7CisKKwkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDBC LCA0KTsKKwkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDBDLCA0 KTsKKwkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDBELCA0KTsK KwkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDBFLCA0KTsKKwor CQljbXBfb2soOTYsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA5Ni4iKTsKKwkJY21wX29rKDB4 Q0IsICI9PSIsIHBhY2tbMTBdLAorCQkJICAgIlNhdmVkIHdpdGggZm91ci1iaXQgd2lkdGg6 IGZpcnN0IGJ5dGUgaXMgMHhDQi4iKTsKKwkJY21wX29rKDB4RUQsICI9PSIsIHBhY2tbMTFd LAorCQkJICAgIlNhdmVkIHdpdGggZm91ci1iaXQgd2lkdGg6IHNlY29uZCBieXRlIGlzIDB4 RUQuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCWNhcmV0ID0g Yml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgwNyAvKiAwMDExMWIgKi8sIDUpOwor CQl9CisKKwkJY21wX29rKDEzNiwgIj09IiwgY2FyZXQsICJDYXJldCA9IDEzNi4iKTsKKwkJ Y21wX29rKDB4RTcsICI9PSIsIHBhY2tbMTJdLAorCQkJICAgIlNhdmVkIHdpdGggZml2ZS1i aXQgd2lkdGg6IGZpcnN0IGJ5dGUgaXMgMHhFNy4iKTsKKwkJY21wX29rKDB4OUMsICI9PSIs IHBhY2tbMTNdLAorCQkJICAgIlNhdmVkIHdpdGggZml2ZS1iaXQgd2lkdGg6IHNlY29uZCBi eXRlIGlzIDB4OUMuIik7CisJCWNtcF9vaygweDczLCAiPT0iLCBwYWNrWzE0XSwKKwkJCSAg ICJTYXZlZCB3aXRoIGZpdmUtYml0IHdpZHRoOiB0aGlyZCBieXRlIGlzIDB4NzMuIik7CisJ CWNtcF9vaygweENFLCAiPT0iLCBwYWNrWzE1XSwKKwkJCSAgICJTYXZlZCB3aXRoIGZpdmUt Yml0IHdpZHRoOiBmb3VydGggYnl0ZSBpcyAweENFLiIpOworCQljbXBfb2soMHgzOSwgIj09 IiwgcGFja1sxNl0sCisJCQkgICAiU2F2ZWQgd2l0aCBmaXZlLWJpdCB3aWR0aDogZmlmdGgg Ynl0ZSBpcyAweDM5LiIpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgNDsgaisrKQorCQkJ Y2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDA3IC8qIDAwMDExMWIg Ki8sIDYpOworCisJCWNtcF9vaygxNjAsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAxNjAuIik7 CisJCWNtcF9vaygweEM3LCAiPT0iLCBwYWNrWzE3XSwKKwkJCSAgICJTYXZlZCB3aXRoIHNp eC1iaXQgd2lkdGg6IGZpcnN0IGJ5dGUgaXMgMHhDNy4iKTsKKwkJY21wX29rKDB4NzEsICI9 PSIsIHBhY2tbMThdLAorCQkJICAgIlNhdmVkIHdpdGggc2l4LWJpdCB3aWR0aDogc2Vjb25k IGJ5dGUgaXMgMHg3MS4iKTsKKwkJY21wX29rKDB4MUMsICI9PSIsIHBhY2tbMTldLAorCQkJ ICAgIlNhdmVkIHdpdGggc2l4LWJpdCB3aWR0aDogdGhpcmQgYnl0ZSBpcyAweDFDLiIpOwor CisJCWZvciAoaW50IGogPSAwOyBqIDwgODsgaisrKQorCQkJY2FyZXQgPSBiaXRwYWNrX3Ux Nl9wYWNrKHBhY2ssIGNhcmV0LCAweDU3IC8qIDEwMTAxMTFiICovLCA3KTsKKworCQljbXBf b2soMjE2LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMjE2LiIpOworCQljbXBfb2soMHhENywg Ij09IiwgcGFja1syMF0sCisJCQkgICAiU2F2ZWQgd2l0aCBzZXZlbi1iaXQgd2lkdGg6IGJ5 dGUxIGlzIDB4RDcuIik7CisJCWNtcF9vaygweEVCLCAiPT0iLCBwYWNrWzIxXSwKKwkJCSAg ICJTYXZlZCB3aXRoIHNldmVuLWJpdCB3aWR0aDogYnl0ZTIgaXMgMHhFQi4iKTsKKwkJY21w X29rKDB4RjUsICI9PSIsIHBhY2tbMjJdLAorCQkJICAgIlNhdmVkIHdpdGggc2V2ZW4tYml0 IHdpZHRoOiBieXRlMyBpcyAweEY1LiIpOworCQljbXBfb2soMHg3QSwgIj09IiwgcGFja1sy M10sCisJCQkgICAiU2F2ZWQgd2l0aCBzZXZlbi1iaXQgd2lkdGg6IGJ5dGU0IGlzIDB4N0Eu Iik7CisJCWNtcF9vaygweEJELCAiPT0iLCBwYWNrWzI0XSwKKwkJCSAgICJTYXZlZCB3aXRo IHNldmVuLWJpdCB3aWR0aDogYnl0ZTUgaXMgMHhCRC4iKTsKKwkJY21wX29rKDB4NUUsICI9 PSIsIHBhY2tbMjVdLAorCQkJICAgIlNhdmVkIHdpdGggc2V2ZW4tYml0IHdpZHRoOiBieXRl NiBpcyAweDVFLiIpOworCQljbXBfb2soMHhBRiwgIj09IiwgcGFja1syNl0sCisJCQkgICAi U2F2ZWQgd2l0aCBzZXZlbi1iaXQgd2lkdGg6IGJ5dGU3IGlzIDB4QUYuIik7CisKKwkJY2Fy ZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweEJBLCA4KTsKKwkJY2FyZXQg PSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweERDLCA4KTsKKwkJY2FyZXQgPSBi aXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweEZFLCA4KTsKKworCQljbXBfb2soMjQw LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMjQwLiIpOworCQljbXBfb2soMHhCQSwgIj09Iiwg cGFja1syN10sCisJCQkgICAiU2F2ZWQgd2l0aCBlaWdodC1iaXQgd2lkdGg6IGJ5dGUxIGlz IDB4QkEuIik7CisJCWNtcF9vaygweERDLCAiPT0iLCBwYWNrWzI4XSwKKwkJCSAgICJTYXZl ZCB3aXRoIGVpZ2h0LWJpdCB3aWR0aDogYnl0ZTIgaXMgMHhEQy4iKTsKKwkJY21wX29rKDB4 RkUsICI9PSIsIHBhY2tbMjldLAorCQkJICAgIlNhdmVkIHdpdGggZWlnaHQtYml0IHdpZHRo OiBieXRlMyBpcyAweEZFLiIpOworCisJCWNhcmV0ID0gYml0cGFja191MTZfcGFjaygKKwkJ CXBhY2ssIGNhcmV0LCAweDAwLAorCQkJNCk7IC8qIG1vdmUgdG8gNCBiaXQgZm9yIGZ1biBh bmQgYWdhaW4gY29udGludWUgd2l0aCA4LWJpdCB3aWR0aCAqLworCQljYXJldCA9IGJpdHBh Y2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4MzIsIDgpOworCQljYXJldCA9IGJpdHBhY2tf dTE2X3BhY2socGFjaywgY2FyZXQsIDB4NTQsIDgpOworCQljYXJldCA9IGJpdHBhY2tfdTE2 X3BhY2socGFjaywgY2FyZXQsIDB4NzYsIDgpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3Bh Y2socGFjaywgY2FyZXQsIDB4OTgsIDgpOworCisJCWNtcF9vaygyNzYsICI9PSIsIGNhcmV0 LCAiQ2FyZXQgPSAyNzYuIik7CisJCWNtcF9vaygweDIwLCAiPT0iLCBwYWNrWzMwXSwKKwkJ CSAgICJTYXZlZCB3aXRoIGVpZ2h0LWJpdCB3aWR0aCBidXQgc2hpZnRlZCBieSA0OiBpcyAw eDIwLiIpOworCQljbXBfb2soMHg0MywgIj09IiwgcGFja1szMV0sCisJCQkgICAiU2F2ZWQg d2l0aCBlaWdodC1iaXQgd2lkdGggYnV0IHNoaWZ0ZWQgYnkgNDogaXMgMHg0My4iKTsKKwkJ Y21wX29rKDB4NjUsICI9PSIsIHBhY2tbMzJdLAorCQkJICAgIlNhdmVkIHdpdGggZWlnaHQt Yml0IHdpZHRoIGJ1dCBzaGlmdGVkIGJ5IDQ6IGlzIDB4NjUuIik7CisJCWNtcF9vaygweDg3 LCAiPT0iLCBwYWNrWzMzXSwKKwkJCSAgICJTYXZlZCB3aXRoIGVpZ2h0LWJpdCB3aWR0aCBi dXQgc2hpZnRlZCBieSA0OiBpcyAweDg3LiIpOworCQljbXBfb2soMHgwOSwgIj09IiwgcGFj a1szNF0sCisJCQkgICAiU2F2ZWQgd2l0aCBlaWdodC1iaXQgd2lkdGggYnV0IHNoaWZ0ZWQg YnkgNDogaXMgMHgwOS4iKTsKKworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2soCisJCQlw YWNrLCBjYXJldCwgMHgwMCwKKwkJCTQpOyAvKiBtb3ZlIHRvIDQgYml0IGZvciBmdW4gYW5k IGFnYWluIGNvbnRpbnVlIHdpdGggOC1iaXQgd2lkdGggKi8KKwkJY21wX29rKDI4MCwgIj09 IiwgY2FyZXQsICJDYXJldCA9IDI4MC4iKTsKKwkJY21wX29rKDB4MDksICI9PSIsIHBhY2tb MzRdLAorCQkJICAgIkFkZGVkIHBhZGRpbmcgMHgwLCB3aWR0aD00LiBCeXRlIGluIHBhY2sg aXMgc3RpbGwgMHgwOS4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDM7IGorKykKKwkJ CWNhcmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgxNjcxIC8qIDEwMTEw MDExMTAwMDFiICovLAorCQkJCQkJCQkJIDEzKTsKKworCQljbXBfb2soMzE5LCAiPT0iLCBj YXJldCwgIkNhcmV0ID0gMzE5LiIpOworCQljbXBfb2soMHg3MSwgIj09IiwgcGFja1szNV0s ICJTYXZlZCB3aXRoIHRoaXJ0ZWVuLWJpdCB3aWR0aDogaXMgMHg3MS4iKTsKKwkJY21wX29r KDB4MzYsICI9PSIsIHBhY2tbMzZdLCAiU2F2ZWQgd2l0aCB0aGlydGVlbi1iaXQgd2lkdGg6 IGlzIDB4MzYuIik7CisJCWNtcF9vaygweENFLCAiPT0iLCBwYWNrWzM3XSwgIlNhdmVkIHdp dGggdGhpcnRlZW4tYml0IHdpZHRoOiBpcyAweENFLiIpOworCQljbXBfb2soMHhDNiwgIj09 IiwgcGFja1szOF0sICJTYXZlZCB3aXRoIHRoaXJ0ZWVuLWJpdCB3aWR0aDogaXMgMHhDNi4i KTsKKwkJY21wX29rKDB4NTksICI9PSIsIHBhY2tbMzldLCAiU2F2ZWQgd2l0aCB0aGlydGVl bi1iaXQgd2lkdGg6IGlzIDB4NTkuIik7CisKKwkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNr KHBhY2ssIGNhcmV0LCAweDEgLyogUEFERElORyAqLywgMSk7CisJCWNtcF9vaygzMjAsICI9 PSIsIGNhcmV0LCAiQ2FyZXQgPSAzMjAuIik7CisJCWNtcF9vaygweEQ5LCAiPT0iLCBwYWNr WzM5XSwKKwkJCSAgICJBZnRlciBwYWRkaW5nIHdpdGggMHgwMSwgdz0xOiAweDU5IC0+IDB4 RDkuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA1OyBqKyspCisJCQljYXJldCA9IGJp dHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4Q0RFRiwgMTYpOworCisJCWNtcF9vayg0 MDAsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA0MDAuIik7CisJCWZvciAoaW50IGkgPSA0MDsg aSA8IDUwOykgeworCQkJY21wX29rKDB4RUYsICI9PSIsIHBhY2tbaSsrXSwgIlBhY2tlZCB3 aXRoIHdpZHRoPTE2LiAweEVGLiIpOworCQkJY21wX29rKDB4Q0QsICI9PSIsIHBhY2tbaSsr XSwgIlBhY2tlZCB3aXRoIHdpZHRoPTE2LiAweEMuIik7CisJCX0KKworCQljYXJldCA9IGJp dHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsCisJCQkJCQkJCSAweDAgLyogUEFERElORyBp biBvcmRlciB0byBzaGlmdCBieSAxIGJpdCovLAorCQkJCQkJCQkgMSk7CisJCWNtcF9vayg0 MDEsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA0MDEuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7 IGogPCAzOyBqKyspCisJCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQs IDB4NTU1NSwgMTYpOworCisJCWNtcF9vayg0NDksICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA0 MDEuIik7CisJCWZvciAoaW50IGkgPSA1MDsgaSA8IDU2OykKKwkJCWNtcF9vaygweEFBLCAi PT0iLCBwYWNrW2krK10sCisJCQkJICAgIjE2LWJpdCB2YWx1ZSBzYXZlZCB3aXRoIHNoaWZ0 IGJ5IDEgYml0IDB4NTUtPjB4QUEuIik7CisKKwkJY21wX29rKDB4MCwgIj09IiwgcGFja1s1 Nl0sICIxIGhpZ2hlciBiaXQgaXMgYWxvbmUgLiIpOworCisJCXByaW50ZigiVGVzdCBCSVRQ QUNLIFBBQ0tJTkcgUEFTU0VEXG4iKTsKKwkJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09XG5cbiIpOworCisJCXByaW50ZigiPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJCXByaW50ZigiVGVzdCBCSVRQ QUNLIFVOUEFDS0lOR1xuIik7CisKKwkJY2FyZXQgPSAwOworCisJCWZvciAoaW50IGogPSAw OyBqIDwgODsgaisrKSB7CisJCQljbXBfb2soMHgwMSwgIj09IiwgYml0cGFja191MTZfdW5w YWNrKHBhY2ssICZjYXJldCwgMSkpOworCQkJY21wX29rKDB4MDAsICI9PSIsIGJpdHBhY2tf dTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDEpKTsKKwkJfQorCQljbXBfb2soY2FyZXQsICI9 PSIsIDE2KTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykKKwkJCWNtcF9vaygw eDAyLCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCAyKSk7CisKKwkJ Y21wX29rKDMyLCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMzIuIik7CisKKwkJZm9yIChpbnQg aiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCWNtcF9vaygweDA1LCAiPT0iLCBiaXRwYWNrX3Ux Nl91bnBhY2socGFjaywgJmNhcmV0LCAzKSk7CisJCQljbXBfb2soMHgwMiwgIj09IiwgYml0 cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMykpOworCQl9CisJCWNtcF9vayg4MCwg Ij09IiwgY2FyZXQsICJDYXJldCA9IDgwLiIpOworCisJCWNtcF9vaygweDBCLCAiPT0iLCBi aXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA0KSk7CisJCWNtcF9vaygweDBDLCAi PT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA0KSk7CisJCWNtcF9vaygw eDBELCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA0KSk7CisJCWNt cF9vaygweDBFLCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA0KSk7 CisKKwkJY21wX29rKDk2LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gOTYuIik7CisKKwkJZm9y IChpbnQgaiA9IDA7IGogPCA4OyBqKyspCisJCQljbXBfb2soMHgwNywgIj09IiwgYml0cGFj a191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgNSksCisJCQkJICAgIndpZHRoPTUsIHZhbD0w MDExMWIiKTsKKworCQljbXBfb2soMTM2LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMTM2LiIp OworCisJCWZvciAoaW50IGogPSAwOyBqIDwgNDsgaisrKQorCQkJY21wX29rKDB4MDcsICI9 PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDYpLAorCQkJCSAgICJ3aWR0 aD02LCB2YWw9MDAwMTExYiIpOworCisJCWNtcF9vaygxNjAsICI9PSIsIGNhcmV0LCAiQ2Fy ZXQgPSAxNjAuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspCisJCQljbXBf b2soMHg1NywgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgNyksCisJ CQkJICAgIndpZHRoPTcsIHZhbD0xMDEwMTExYiAoMHg1NykiKTsKKworCQljbXBfb2soMjE2 LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMjE2LiIpOworCisJCWNtcF9vaygweEJBLCAiPT0i LCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA4KSwKKwkJCSAgICJ3aWR0aD04 LCB2YWw9MHhCQSIpOworCQljbXBfb2soMHhEQywgIj09IiwgYml0cGFja191MTZfdW5wYWNr KHBhY2ssICZjYXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4REMiKTsKKwkJY21w X29rKDB4RkUsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDgpLAor CQkJICAgIndpZHRoPTgsIHZhbD0weEZFIik7CisKKwkJY21wX29rKDI0MCwgIj09IiwgY2Fy ZXQsICJDYXJldCA9IDI0MC4iKTsKKworCQljbXBfb2soMHgwLCAiPT0iLCBiaXRwYWNrX3Ux Nl91bnBhY2socGFjaywgJmNhcmV0LCA0KSwKKwkJCSAgICJ3aWR0aD00LCB2YWw9MHgwLCBm b3IgZnVuIik7CisKKwkJY21wX29rKDB4MzIsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhw YWNrLCAmY2FyZXQsIDgpLAorCQkJICAgIndpZHRoPTgsIHZhbD0weDMyIik7CisJCWNtcF9v aygweDU0LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA4KSwKKwkJ CSAgICJ3aWR0aD04LCB2YWw9MHg1NCIpOworCQljbXBfb2soMHg3NiwgIj09IiwgYml0cGFj a191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4 NzYiKTsKKwkJY21wX29rKDB4OTgsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAm Y2FyZXQsIDgpLAorCQkJICAgIndpZHRoPTgsIHZhbD0weDk4Iik7CisKKwkJY21wX29rKDB4 MCwgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgNCksCisJCQkgICAi d2lkdGg9NCwgdmFsPTB4MCwgZm9yIGZ1biBwYWRkaW5nIGFnYWluIik7CisKKwkJZm9yIChp bnQgaiA9IDA7IGogPCAzOyBqKyspCisJCQljbXBfb2soMHgxNjcxLCAiPT0iLCBiaXRwYWNr X3UxNl91bnBhY2socGFjaywgJmNhcmV0LCAxMyksCisJCQkJICAgIndpZHRoPTEzLCB2YWw9 MHgxNjcxICgxMDExMDAxMTEwMDAxYikiKTsKKworCQljbXBfb2soMzE5LCAiPT0iLCBjYXJl dCwgIkNhcmV0ID0gMzE5LiIpOworCisJCWNtcF9vaygweDEsICI9PSIsIGJpdHBhY2tfdTE2 X3VucGFjayhwYWNrLCAmY2FyZXQsIDEpLAorCQkJICAgIndpZHRoPTEsIHZhbD0weDEiKTsK KwkJY21wX29rKDMyMCwgIj09IiwgY2FyZXQsICJDYXJldCA9IDMyMC4iKTsKKworCQlmb3Ig KGludCBqID0gMDsgaiA8IDU7IGorKykKKwkJCWNtcF9vaygweENERUYsICI9PSIsIGJpdHBh Y2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDE2KSwKKwkJCQkgICAiMTgtYml0IHZhbHVl IGFsbGlnbmVkIHdpdGggYnl0ZXMgaW4gcGFjay4iKTsKKworCQljbXBfb2soNDAwLCAiPT0i LCBjYXJldCwgIkNhcmV0ID0gNDAwLiIpOworCQljbXBfb2soMHgwLCAiPT0iLCBiaXRwYWNr X3UxNl91bnBhY2socGFjaywgJmNhcmV0LCAxKSwKKwkJCSAgICIxLWJpdCB3aWR0aCB2YWx1 ZSAocGFkZGluZyBmb3Igc2hpZnQpLiIpOworCQljbXBfb2soNDAxLCAiPT0iLCBjYXJldCwg IkNhcmV0ID0gNDAxLiIpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgMzsgaisrKQorCQkJ Y21wX29rKDB4NTU1NSwgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwg MTYpLAorCQkJCSAgICIxNi1iaXQgd2lkdGggdmFsdWUgc2hpZnRlZCBieSAxIGJpdC4iKTsK KworCQljbXBfb2soNDQ5LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gNDQ5LiIpOworCX0KKwor CWRvbmVfdGVzdGluZygpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci90ZXN0X3Vu aXFzb3J0dmVjdF91MTYuYyBiL3NyYy90ZXN0L2Rmb3IvdGVzdF91bmlxc29ydHZlY3RfdTE2 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRkZGNlOGIwYjNk Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvZGZvci90ZXN0X3VuaXFzb3J0dmVjdF91 MTYuYwpAQCAtMCwwICsxLDI2MyBAQAorLyoKKyAqIHRlc3RfdW5pcXNvcnR2ZWN0LmMKKyAq LworCisjaW5jbHVkZSAibGliL3ZlY3RfdTE2LmgiCisjaW5jbHVkZSAibGlidGFwL3RhcC5o IgorCitpbnQgdGVzdF91c3Yoc2l6ZV90IHNyY19jbnQsIHVpbnQxNl90ICpzcmNfaW4sIHNp emVfdCBleHBlY3RlZF9jbnQsCisJCQkgdWludDE2X3QgKmV4cGVjdGVkX2luKTsKKworaW50 Cit0ZXN0X3VzdihzaXplX3Qgc3JjX2NudCwgdWludDE2X3QgKnNyY19pbiwgc2l6ZV90IGV4 cGVjdGVkX2NudCwKKwkJIHVpbnQxNl90ICpleHBlY3RlZF9pbikKK3sKKwlpbnQgcmVzdWx0 ID0gLTE7CisJdmVjdF91MTZfdCBzcmM7CisJdmVjdF91MTZfdCBleHBlY3RlZDsKKwl1bmlx c29ydHZlY3RfdTE2X3QgeDsKKworCXZlY3RfdTE2X2luaXQoJnNyYywgc3JjX2NudCwgTlVM TCk7CisJdmVjdF91MTZfZmlsbCgmc3JjLCBzcmNfY250LCBzcmNfaW4pOworCisJdmVjdF91 MTZfaW5pdCgmZXhwZWN0ZWQsIDAsIE5VTEwpOworCXZlY3RfdTE2X2ZpbGwoJmV4cGVjdGVk LCBleHBlY3RlZF9jbnQsIGV4cGVjdGVkX2luKTsKKworCXZlY3RfdTE2X2luaXQoJngsIDAs IE5VTEwpOworCisJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzcmNfY250OyBpKyspCisJCXVz dl91MTZfaW5zZXJ0KCZ4LCBzcmMubVtpXSk7CisKKwlyZXN1bHQgPSB2ZWN0X3UxNl9jb21w YXJlKCZ4LCAmZXhwZWN0ZWQpOworCisJdmVjdF91MTZfY2xlYXIoJngpOworCXZlY3RfdTE2 X2NsZWFyKCZleHBlY3RlZCk7CisJdmVjdF91MTZfY2xlYXIoJnNyYyk7CisJcmV0dXJuIHJl c3VsdDsKK30KKworaW50CittYWluKHZvaWQpCit7CisJcGxhbig1Nik7CisKKwlwcmludGYo Ij09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50 ZigiVGVzdCBDUkVBVEUgQU5EIERFU1RST1kgU09SVEVEIFVOSVFVRSBWRUNUT1IgKEVNUFRZ KVxuIik7CisJeworCQl1bmlxc29ydHZlY3RfdTE2X3QgdXN2OworCQlzaXplX3QgY2FwYWNp dHkgPSAxMDsKKwkJdmVjdF91MTZfaW5pdCgmdXN2LCBjYXBhY2l0eSwgTlVMTCk7CisJCWNt cF9vayh1c3YuY2FwLCAiPT0iLCBjYXBhY2l0eSwKKwkJCSAgICJWZWN0b3JzIGNhcGFjaXR5 IGlzIGVxdWFsIHRvIHJlcXVlc3RlZCBvbmUiKTsKKwkJY21wX29rKHVzdi5jbnQsICI9PSIs IDAsICJObyBtZW1iZXJzIGluIHZlY3RvciIpOworCQlvayh1c3YubSAhPSBOVUxMLCAiQXJy YXkgZm9yIG1lbWJlcnMgaXMgcmVzZXJ2ZWQiKTsKKworCQl2ZWN0X3UxNl9jbGVhcigmdXN2 KTsKKwl9CisJcHJpbnRmKCJUZXN0IENSRUFURSBBTkQgREVTVFJPWSBTT1JURUQgVU5JUVVF IFZFQ1RPUiAoRU1QVFkpIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgU0VB UkNIIElOIFVOSVFVRSBTT1JUIFZFQ1RcbiIpOworCXsKKwkJdW5pcXNvcnR2ZWN0X3UxNl90 IHVzdjsKKwkJdXN2X3NyY2hfcmVzX3Qgc3JjaDsKKwkJdWludDE2X3QgaW5wdXRbNF0gPSB7 IDUsIDEwLCAyMCwgMzAgfTsKKworCQl2ZWN0X3UxNl9pbml0KCZ1c3YsIDAsIE5VTEwpOwor CisJCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNDsgaSsrKQorCQkJdXN2X3UxNl9pbnNlcnQo JnVzdiwgaW5wdXRbaV0pOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAwKTsK KwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORF9TTUFMTEVTVCwK KwkJCSAgICJOb3QgZm91bmQsIHNtYWxsZXN0Iik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09 IiwgMCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAxKTsK KwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORF9TTUFMTEVTVCwK KwkJCSAgICJOb3QgZm91bmQsIHNtYWxsZXN0Iik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09 IiwgMCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCA1KTsK KwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0ZPVU5ELCAiRm91bmQiKTsKKwkJ Y21wX29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9IHVzdl91 MTZfc2VhcmNoKCZ1c3YsIDYpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hf Tk9UX0ZPVU5ELCAiTm90IGZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMSwg IlBvcyA9MSIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAxMCk7CisJCWNt cF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9GT1VORCwgIkZvdW5kIik7CisJCWNtcF9v ayhzcmNoLnBvcywgIj09IiwgMSwgIlBvcyA9MSIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3Nl YXJjaCgmdXN2LCAxNSk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9OT1Rf Rk9VTkQsICJOb3QgZm91bmQiKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAyLCAiUG9z ID0yIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDIwKTsKKwkJY21wX29r KHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0ZPVU5ELCAiRm91bmQiKTsKKwkJY21wX29rKHNy Y2gucG9zLCAiPT0iLCAyLCAiUG9zID0yIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNo KCZ1c3YsIDI1KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VO RCwgIk5vdCBmb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDMsICJQb3MgPTMi KTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMzApOworCQljbXBfb2soc3Jj aC5zdCwgIj09IiwgVVNWX1NSQ0hfRk9VTkQsICJGb3VuZCIpOworCQljbXBfb2soc3JjaC5w b3MsICI9PSIsIDMsICJQb3MgPTIiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVz diwgNDUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9UX0ZPVU5EX0xB UkdFU1QsICJOb3QgZm91bmQsIGxhcmdlc3QiKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0i LCAzLCAiUG9zID0zIik7CisKKwkJdmVjdF91MTZfY2xlYXIoJnVzdik7CisJfQorCXsKKwkJ dW5pcXNvcnR2ZWN0X3UxNl90IHVzdjsKKwkJdXN2X3NyY2hfcmVzX3Qgc3JjaDsKKwkJdWlu dDE2X3QgaW5wdXRbM10gPSB7IDUsIDEwLCAyMCB9OworCQl1aW50MTZfdCBidWZbM107IC8q IG92ZXJpbmR1bGdlIGluIHRlc3RpbmcgdGhlIG91dGVyIG1lbW9yeSB2ZWN0b3IgKi8KKwor CQl2ZWN0X3UxNl9pbml0KCZ1c3YsIDMsIGJ1Zik7CisKKwkJZm9yIChzaXplX3QgaSA9IDA7 IGkgPCAzOyBpKyspCisJCQl1c3ZfdTE2X2luc2VydCgmdXN2LCBpbnB1dFtpXSk7CisKKwkJ c3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDApOworCQljbXBfb2soc3JjaC5zdCwgIj09 IiwgVVNWX1NSQ0hfTk9UX0ZPVU5EX1NNQUxMRVNULAorCQkJICAgIk5vdCBmb3VuZCwgc21h bGxlc3QiKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJ c3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDUpOworCQljbXBfb2soc3JjaC5zdCwgIj09 IiwgVVNWX1NSQ0hfRk9VTkQsICJGb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIs IDAsICJQb3MgPTAiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNik7CisJ CWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkQsICJOb3QgZm91bmQi KTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAxLCAiUG9zID0xIik7CisKKwkJc3JjaCA9 IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDEwKTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVT Vl9TUkNIX0ZPVU5ELCAiRm91bmQiKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAxLCAi UG9zID0xIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDE1KTsKKwkJY21w X29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORCwgIk5vdCBmb3VuZCIpOwor CQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDIsICJQb3MgPTIiKTsKKworCQkvKgorCQkgKiBX aGVuIHNjb3BlcyBsIGFuZCBnIGFyZSBuZWlnaGJvdXJzIChnLWw9MSkgYnV0CisJCSAqIHZh bD09bVtnXSBpbnN0ZWFkIG9mIHZhbD09bVtsXS4KKwkJICovCisJCXNyY2ggPSB1c3ZfdTE2 X3NlYXJjaCgmdXN2LCAyMCk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9G T1VORCwgIkZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMiwgIlBvcyA9MiIp OworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAyMSk7CisJCWNtcF9vayhzcmNo LnN0LCAiPT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkRfTEFSR0VTVCwgIk5vdCBmb3VuZCwgbGFy Z2VzdCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDIsICJQb3MgPTIiKTsKKworCQl2 ZWN0X3UxNl9jbGVhcigmdXN2KTsKKwl9CisJeyAvKiBzaW5nbGUgbWVtYmVyKi8KKworCQl1 bmlxc29ydHZlY3RfdTE2X3QgdXN2OworCQl1c3Zfc3JjaF9yZXNfdCBzcmNoOworCisJCXZl Y3RfdTE2X2luaXQoJnVzdiwgMywgTlVMTCk7CisKKwkJdXN2X3UxNl9pbnNlcnQoJnVzdiwg NSk7IC8qIFRoZSBvbmx5IGl0ZW0gaW4gbGlzdCBpcyA1ICovCisKKwkJc3JjaCA9IHVzdl91 MTZfc2VhcmNoKCZ1c3YsIDApOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hf Tk9UX0ZPVU5EX1NNQUxMRVNULAorCQkJICAgIk5vdCBmb3VuZCwgc21hbGxlc3QiKTsKKwkJ Y21wX29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9IHVzdl91 MTZfc2VhcmNoKCZ1c3YsIDUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hf Rk9VTkQsICJGb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTAi KTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNik7CisJCWNtcF9vayhzcmNo LnN0LCAiPT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkRfTEFSR0VTVCwgIk5vdCBmb3VuZCwgbGFy Z2VzdCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTIiKTsKKworCQl2 ZWN0X3UxNl9jbGVhcigmdXN2KTsKKwl9CisJeyAvKiBlbXB0eSB2ZWN0b3IqLworCisJCXVu aXFzb3J0dmVjdF91MTZfdCB1c3Y7CisJCXVzdl9zcmNoX3Jlc190IHNyY2g7CisKKwkJdmVj dF91MTZfaW5pdCgmdXN2LCAxLCBOVUxMKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2go JnVzdiwgMCk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9FTVBUWSwgIlZl Y3RvciBpcyBlbXB0eS4iKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0w Iik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDQpOworCQljbXBfb2soc3Jj aC5zdCwgIj09IiwgVVNWX1NSQ0hfRU1QVFksICJWZWN0b3IgaXMgZW1wdHkuIik7CisJCWNt cF9vayhzcmNoLnBvcywgIj09IiwgMCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2 X3NlYXJjaCgmdXN2LCA1KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0VN UFRZLCAiVmVjdG9yIGlzIGVtcHR5LiIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAs ICJQb3MgPTAiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNik7CisJCWNt cF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9FTVBUWSwgIlZlY3RvciBpcyBlbXB0eS4i KTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJdmVjdF91 MTZfY2xlYXIoJnVzdik7CisJfQorCXByaW50ZigiVGVzdCBTRUFSQ0ggSU4gVU5JUVVFIFNP UlQgVkVDVCBQQVNTRUQuXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBFUlJPUiBPTiBO TyBWRUNUT1IgRk9SIFNFQVJDSElOR1xuIik7CisJeworCQl1c3Zfc3JjaF9yZXNfdCBzcmNo OworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goTlVMTCwgMCk7CisJCWNtcF9vayhzcmNoLnN0 LCAiPT0iLCBVU1ZfU1JDSF9FUlJPUiwKKwkJCSAgICJFcnJvcjogbm8gdmVjdG9yIChlbXB0 eSBwb2ludGVyIG9uIHZlY3Ryb3IpLiIpOworCX0KKwl7CisJCXVuaXFzb3J0dmVjdF91MTZf dCB1c3Y7CisJCXVzdl9zcmNoX3Jlc190IHNyY2g7CisJCXZlY3RfdTE2X2luaXQoJnVzdiwg MCwgTlVMTCk7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDApOworCQljbXBf b2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfRU1QVFksCisJCQkgICAiU2VhcmNoIGluIGVt cHR5IHZlY3RvciBpcyBub3QgYW4gZXJyb3IuIik7CisKKwkJdmVjdF91MTZfY2xlYXIoJnVz dik7CisJfQorCXByaW50ZigiVGVzdCBFUlJPUiBPTiBOTyBWRUNUT1IgRk9SIFNFQVJDSElO RyBQQVNTRURcbiIpOworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PVxuXG4iKTsKKworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IENSRUFURUQgVkVDVE9SUyBB UkUgU09SVEVEIEFORCBVTklRVUVcbiIpOworCXsKKwkJY21wX29rKAorCQkJMCwgIj09IiwK KwkJCXRlc3RfdXN2KDEwLCAodWludDE2X3RbXSkgeyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3 LCA4LCA5IH0sIC8vIHNyYworCQkJCQkgMTAsCisJCQkJCSAodWludDE2X3RbXSkgeyAwLCAx LCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5IH0pLCAvLyBleHBlY3RlZAorCQkJIlVuaXF1ZSBz b3J0ZWQgdmVjdG9yIHJlbWFpbnMgdGhlIHNhbWUuIik7CisKKwkJY21wX29rKDAsICI9PSIs CisJCQkgICB0ZXN0X3VzdigxMCwKKwkJCQkJCSh1aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMs IDQsIDUsIDMsIDcsIDUsIDkgfSwgLy8gc3JjCisJCQkJCQk4LCAodWludDE2X3RbXSkgeyAw LCAxLCAyLCAzLCA0LCA1LCA3LCA5IH0pLCAvLyBleHBlY3RlZAorCQkJICAgIkR1cGxpY2F0 ZXMgYXJlIHJlbW92ZWQuIik7CisKKwkJY21wX29rKAorCQkJMCwgIj09IiwKKwkJCXRlc3Rf dXN2KDEwLCAodWludDE2X3RbXSkgeyA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwIH0s IC8vIHNyYworCQkJCQkgMTAsCisJCQkJCSAodWludDE2X3RbXSkgeyAwLCAxLCAyLCAzLCA0 LCA1LCA2LCA3LCA4LCA5IH0pLCAvLyBleHBlY3RlZAorCQkJIlVuc29ydGVkIGJlY2FtZSBz b3J0ZWQuIik7CisJfQorCXByaW50ZigiVGVzdCBDUkVBVEVEIFZFQ1RPUlMgQVJFIFNPUlRF RCBBTkQgVU5JUVVFIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09XG5cbiIpOworCisJZG9uZV90ZXN0aW5nKCk7Cit9CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yL3Rlc3RfdmVjdF91MTYuYyBiL3NyYy90ZXN0L2Rm b3IvdGVzdF92ZWN0X3UxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4wMGVmZTdkY2NiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2Rmb3IvdGVz dF92ZWN0X3UxNi5jCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogdGVzdF92ZWN0X3UxNi5j CisgKi8KKworI2luY2x1ZGUgImxpYnRhcC90YXAuaCIKKyNpbmNsdWRlICJsaWIvdmVjdF91 MTYuaCIKKworaW50CittYWluKHZvaWQpCit7CisJcGxhbigzNSk7CisKKwlwcmludGYoIj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50Zigi VGVzdCBJTklUIEFORCBDTEVBUiBWRUNUT1JcbiIpOworCXsKKwkJdmVjdF91MTZfdCB2Owor CQlzaXplX3QgY2FwYWNpdHkgPSAxMDsKKwkJY21wX29rKDAsICI9PSIsIHZlY3RfdTE2X2lu aXQoJnYsIGNhcGFjaXR5LCBOVUxMKSwKKwkJCSAgICJSZXN1bHQgb2YgdmVjdF9pbml0IGlz IDAiKTsKKworCQljbXBfb2sodi5jYXAsICI9PSIsIGNhcGFjaXR5LAorCQkJICAgIlZlY3Rv cnMgY2FwYWNpdHkgaXMgZXF1YWwgdG8gcmVxdWVzdGVkIG9uZSIpOworCQljbXBfb2sodi5j bnQsICI9PSIsIDAsICJObyBtZW1iZXJzIGluIHZlY3RvciIpOworCQlvayh2Lm0gIT0gTlVM TCwgIkFycmF5IGZvciBtZW1iZXJzIGlzIHJlc2VydmVkIik7CisJCWNtcF9vayh2Lm1lbV9p c19vdXRlciwgIj09IiwgZmFsc2UsICJWZWN0b3IgZG9lcyBub3QgdXNlIG91dGVyIG1lbW9y eSIpOworCisJCXZlY3RfdTE2X2NsZWFyKCZ2KTsKKworCQljbXBfb2sodi5jYXAsICI9PSIs IDAsICJWZWN0b3JzIGNhcGFjaXR5IGlzIDAgYWZ0ZXIgY2xlYW51cCIpOworCQljbXBfb2so di5jbnQsICI9PSIsIDAsICJObyBtZW1iZXJzIGluIHZlY3RvciBhZnRlciBjbGVhbnVwIik7 CisJCW9rKHYubSA9PSBOVUxMLCAiQXJyYXkgZm9yIG1lbWJlcnMgaXMgYWJzZW50Iik7CisJ CWNtcF9vayh2Lm1lbV9pc19vdXRlciwgIj09IiwgZmFsc2UsICJWZWN0b3IgZG9lcyBub3Qg dXNlIG91dGVyIG1lbW9yeSIpOworCX0KKwlwcmludGYoIlRlc3QgSU5JVCBBTkQgQ0xFQVIg VkVDVE9SIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgSU5JVCBBTkQgRklM TCBWRUNUT1JcbiIpOworCXsKKwkJdmVjdF91MTZfdCB2OworCQlzaXplX3QgY2FwYWNpdHkg PSAxMDsKKwkJY29uc3QgdWludDE2X3QgdmFsc1tdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2 LCA3LCA4LCA5IH07CisKKwkJY21wX29rKDAsICI9PSIsIHZlY3RfdTE2X2luaXQoJnYsIGNh cGFjaXR5LCBOVUxMKSwKKwkJCSAgICJSZXN1bHQgb2YgdmVjdF9pbml0IGlzIDAiKTsKKwkJ Y21wX29rKDAsICI9PSIsIHZlY3RfdTE2X2ZpbGwoJnYsIGNhcGFjaXR5LCB2YWxzKSwKKwkJ CSAgICJSZXN1bHQgb2YgdmVjdF9maWxsIGlzIDAiKTsKKworCQljbXBfb2sodi5jYXAsICI9 PSIsIGNhcGFjaXR5LAorCQkJICAgIlZlY3RvcnMgY2FwYWNpdHkgaXMgZXF1YWwgdG8gcmVx dWVzdGVkIG9uZSIpOworCQlvayh2Lm0gIT0gTlVMTCwgIkFycmF5IGZvciBtZW1iZXJzIGlz IHJlc2VydmVkIik7CisJCWNtcF9vayh2LmNudCwgIj09IiwgY2FwYWNpdHksICJNZW1iZXJz IGFyZSBpbiB2ZWN0b3IuIik7CisJCXsKKwkJCWludCBlcXVhbCA9IDA7CisJCQlmb3IgKHNp emVfdCBpID0gMDsgaSA8IGNhcGFjaXR5OyBpKyspIHsKKwkJCQlpZiAodi5tW2ldID09IGkp CisJCQkJCWVxdWFsID0gZXF1YWwgKyAxOworCQkJCWVsc2UKKwkJCQkJYnJlYWs7CisJCQl9 CisJCQljbXBfb2soZXF1YWwsICI9PSIsIDEwLCAiTWVtYmVycyBhcmUgY29ycmVjdCIpOwor CQl9CisJCXZlY3RfdTE2X2NsZWFyKCZ2KTsKKwl9CisJcHJpbnRmKCJUZXN0IElOSVQgQU5E IEZJTEwgVkVDVE9SIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgSU5JVCBB TkQgRklMTCBWRUNUT1Igd2l0aCB6ZXJvIGNhcGNhaXR5XG4iKTsKKwl7CisJCXZlY3RfdTE2 X3QgdjsKKwkJc2l6ZV90IGNhcGFjaXR5ID0gMDsKKworCQljbXBfb2soMCwgIj09IiwgdmVj dF91MTZfaW5pdCgmdiwgY2FwYWNpdHksIE5VTEwpLAorCQkJICAgIlJlc3VsdCBvZiB2ZWN0 X2luaXQgaXMgMCIpOworCQljbXBfb2soMCwgIj09IiwgdmVjdF91MTZfZmlsbCgmdiwgY2Fw YWNpdHksIE5VTEwpLAorCQkJICAgIlJlc3VsdCBvZiB2ZWN0X2ZpbGwgaXMgMCIpOworCisJ CWNtcF9vayh2LmNhcCwgIj09IiwgMCwgIlZlY3RvcidzIGNhcGFjaXR5IGlzIHplcm8iKTsK KwkJb2sodi5tID09IE5VTEwsCisJCSAgICJQb2ludGVyIHRvIG1lbWJlcnMgaXMgTlVMTCAo YXJyYXkgZm9yIG1lbWJlcnMgaXMgbm90IHJlc2VydmVkKSIpOworCQlvayh2LmNudCA9PSAw LCAiQ291bnRlciBvZiBtZW1iZXJzIGlzIHplcm8uIik7CisJCXZlY3RfdTE2X2NsZWFyKCZ2 KTsKKwl9CisJeworCQl2ZWN0X3UxNl90IHY7CisJCXNpemVfdCBjYXBhY2l0eSA9IDEwOwor CQljb25zdCB1aW50MTZfdCB2YWxzW10gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgs IDkgfTsKKworCQljbXBfb2soMCwgIj09IiwgdmVjdF91MTZfaW5pdCgmdiwgMCwgTlVMTCks ICJSZXN1bHQgb2YgdmVjdF9pbml0IGlzIDAiKTsKKwkJY21wX29rKDAsICI9PSIsIHZlY3Rf dTE2X2ZpbGwoJnYsIGNhcGFjaXR5LCB2YWxzKSwKKwkJCSAgICJSZXN1bHQgb2YgdmVjdF9m aWxsIGlzIDAiKTsKKworCQljbXBfb2sodi5jYXAsICI9PSIsIGNhcGFjaXR5LAorCQkJICAg IlZlY3RvcidzIGNhcGFjaXR5IGlzIG5vdCB6ZXJvIGFmdGVyIGZpbGxpbmciKTsKKwkJb2so di5tICE9IE5VTEwsCisJCSAgICJQb2ludGVyIHRvIG1lbWJlcnMgaXMgbm90IE5VTEwgZmF0 ZXIgZmlsbGluZyAoYXJyYXkgZm9yIG1lbWJlcnMgaGFzIGJlZW4gcmVzZXJ2ZWQpIik7CisJ CW9rKHYuY250ID09IGNhcGFjaXR5LCAiQ291bnRlciBvZiBtZW1iZXJzIGlzIG5vdCB6ZXJv IGFmdGVyIGZpbGxpbmcuIik7CisJCXZlY3RfdTE2X2NsZWFyKCZ2KTsKKwl9CisJcHJpbnRm KCJUZXN0IElOSVQgQU5EIEZJTEwgVkVDVE9SIHdpdGggemVybyBjYXBjYWl0eSBpcyBmaW5p c2hlZFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgQ09NUEFSRSBWRUNUT1JTXG4iKTsK Kwl7CisJCXZlY3RfdTE2X3QgYSwgYiwgYywgZDsKKworCQl1aW50MTZfdCBhdmFsc1tdID0g eyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5IH07CisJCXVpbnQxNl90IGJ2YWxzW10g PSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsKKwkJdWludDE2X3QgY3ZhbHNb XSA9IHsgMSwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSB9OworCQl1aW50MTZfdCBkdmFs c1tdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4IH07CisKKwkJdmVjdF91MTZfaW5p dCgmYSwgMCwgTlVMTCk7CisJCXZlY3RfdTE2X2luaXQoJmIsIDAsIE5VTEwpOworCQl2ZWN0 X3UxNl9pbml0KCZjLCAwLCBOVUxMKTsKKwkJdmVjdF91MTZfaW5pdCgmZCwgMCwgTlVMTCk7 CisKKwkJdmVjdF91MTZfZmlsbCgmYSwgMTAsIGF2YWxzKTsKKwkJdmVjdF91MTZfZmlsbCgm YiwgMTAsIGJ2YWxzKTsKKwkJdmVjdF91MTZfZmlsbCgmYywgMTAsIGN2YWxzKTsKKwkJdmVj dF91MTZfZmlsbCgmZCwgOSwgZHZhbHMpOworCisJCWNtcF9vaygwLCAiPT0iLCB2ZWN0X3Ux Nl9jb21wYXJlKCZhLCAmYiksICJWZWN0b3JzIGFyZSBlcXVhbCIpOworCQljbXBfb2soLTEs ICI9PSIsIHZlY3RfdTE2X2NvbXBhcmUoJmEsICZjKSwKKwkJCSAgICJWZWN0b3JzIGFyZSBu b3QgZXF1YWwgYmVjYXVzZSBvZiB2YWx1ZSBvZiBtZW1iZXJzIik7CisJCWNtcF9vaygtMSwg Ij09IiwgdmVjdF91MTZfY29tcGFyZSgmYSwgJmQpLAorCQkJICAgIlZlY3RvcnMgYXJlIG5v dCBlcXVhbCBiZWNhdXNlIG9mIG51bWJlciBvZiBtZW1iZXJzIik7CisJfQorCXByaW50Zigi VGVzdCBDT01QQVJFIFZFQ1RPUlMgaXMgZmluaXNoZWQuIFxuIik7CisJcHJpbnRmKCI9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRm KCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmlu dGYoIlRlc3QgVkVDVE9SIFdJVEggT1VURVIgTUVNT1JZXG4iKTsKKwl7CisjZGVmaW5lIFZF Q1RfQ0FQIDEwMAorCQl2ZWN0X3UxNl90IHZlY3Q7CisJCXVpbnQxNl90IGJ1ZltWRUNUX0NB UF07IC8qIHVpbnQxNl90IGlzIHRoZSBpdGVtJ3MgdHlwZSAqLworCQl2ZWN0X3UxNl9pbml0 KCZ2ZWN0LCBWRUNUX0NBUCwgYnVmKTsKKwkJY21wX29rKAorCQkJdmVjdC5jYXAsICI9PSIs IFZFQ1RfQ0FQLAorCQkJIkluaXRpYWxpc2F0aW9uIG9mIHZlY3RvciBoYXZpbmcgZXh0ZXJu YWwgbWVtb3J5IHJlc3VsdGVkIGluIHByb3BlciBjYXBhY2l0eS4iKTsKKwkJY21wX29rKAor CQkJdmVjdC5jbnQsICI9PSIsIDAsCisJCQkiSW5pdGlhbGlzYXRpb24gb2YgdmVjdG9yIGhh dmluZyBleHRlcm5hbCBtZW1vcnkgcmVzdWx0ZWQgaW4gcHJvcGVyIG51bWJlciBvZiBpdGVt cy4iKTsKKwkJb2soKCh2b2lkICopdmVjdC5tID09ICh2b2lkICopYnVmKSwKKwkJICAgIklu aXRpYWxpc2F0aW9uIG9mIHZlY3RvciBoYXZpbmcgZXh0ZXJuYWwgbWVtb3J5IHNldCBidWYg dG8gdmVjdC0+bS4iKTsKKwkJb2sodmVjdC5tZW1faXNfb3V0ZXIsCisJCSAgICJJbml0aWFs aXNhdGlvbiBvZiB2ZWN0b3IgaGF2aW5nIGV4dGVybmFsIG1lbW9yeSBzZXQgbWVtX2lzX291 dGVyIGZsYWcuIik7CisKKwkJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBWRUNUX0NBUDsgaSsr KQorCQl7CisJCQlpZiAodmVjdF91MTZfYXBwZW5kKCZ2ZWN0LCBpKSAhPSAwKQorCQkJCWZh aWwoCisJCQkJCSJFUlJPUjogTmV3IHZhbHVlIGNhbid0IGJlIGFwcGVuZGVkIGludG8gdmVj dG9yIGhhdmluZyBleHRlcm5hbCBtZW1vcnkuIik7CisJCX0KKwkJcGFzcygKKwkJCSJBbGwg dmFsdWVzIGhhdmUgYmVlbiBhcHBlbmRlZCBpbnRvIHZlY3RvciBoYXZpbmcgZXh0ZXJuYWwg bWVtb3J5LiIpOworCisJCWNtcF9vayh2ZWN0LmNudCwgIj09IiwgVkVDVF9DQVAsICJWZWN0 b3IgaXMgZnVsbC4iKTsKKwkJY21wX29rKHZlY3RfdTE2X2FwcGVuZCgmdmVjdCwgVkVDVF9D QVApLCAiPT0iLCAtMSwKKwkJCSAgICJPbmNlIHZlY3RvciBpcyBmdWxsLCBleHRyYSBpdGVt IGNhbid0IGJlIGFwcGVuZGVkLiIpOworCX0KKwlwcmludGYoIlRlc3QgVkVDVE9SIFdJVEgg T1VURVIgTUVNT1JZIGlzIGZpbmlzaGVkXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCisJZG9uZV90ZXN0aW5nKCk7Cit9 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9saWJ0YXAvLmdpdGlnbm9yZSBiL3NyYy90ZXN0L2xp YnRhcC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li4yYzk1ZDA0NmM3ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2xpYnRhcC8uZ2l0 aWdub3JlCkBAIC0wLDAgKzEsMTMgQEAKKy90LyoKKyEvdC8qLioKKy90LyouZXhlCisvdC8q LmdvdAorKi5hCisqLmxvCisqLm8KKyouc28KKyoucGMKK3Vzci8KKyouc3c/CisvLmRlcHMK Ky8uZGlyc3RhbXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC8udHJhdmlzLnltbCBi L3NyYy90ZXN0L2xpYnRhcC8udHJhdmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNmY5ODA5ZTFiOTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9saWJ0YXAvLnRyYXZpcy55bWwKQEAgLTAsMCArMSwxMyBAQAorbGFuZ3VhZ2U6IGMKKwor Y29tcGlsZXI6CisgIC0gZ2NjCisgIC0gY2xhbmcKKworYmVmb3JlX2luc3RhbGw6IHN1ZG8g YXB0LWdldCBpbnN0YWxsIC15IGxpYnRlc3QtZGlmZmVyZW5jZXMtcGVybAorCitpbnN0YWxs OiBtYWtlIENDPSRDQyBpbnN0YWxsCisKK3NjcmlwdDogbWFrZSBDQz0kQ0MgdGVzdAorCith ZnRlcl9zY3JpcHQ6IG1ha2UgdW5pbnN0YWxsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9saWJ0 YXAvQ09QWUlORyBiL3NyYy90ZXN0L2xpYnRhcC9DT1BZSU5HCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42NWM1Y2E4OGE2NwotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L2xpYnRhcC9DT1BZSU5HCkBAIC0wLDAgKzEsMTY1IEBACisgICAgICAgICAg ICAgICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCisgICAgICAgICAg ICAgICAgICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3CisKKyBDb3B5cmlnaHQgKEMp IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIDxodHRwOi8vZnNmLm9yZy8+ CisgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0 aW0gY29waWVzCisgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQg aXMgbm90IGFsbG93ZWQuCisKKworICBUaGlzIHZlcnNpb24gb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKK3RoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworTGljZW5z ZSwgc3VwcGxlbWVudGVkIGJ5IHRoZSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIGxpc3RlZCBi ZWxvdy4KKworICAwLiBBZGRpdGlvbmFsIERlZmluaXRpb25zLgorCisgIEFzIHVzZWQgaGVy ZWluLCAidGhpcyBMaWNlbnNlIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgTGVz c2VyCitHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlICJHTlUgR1BMIiByZWZlcnMg dG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UuCisKKyAg IlRoZSBMaWJyYXJ5IiByZWZlcnMgdG8gYSBjb3ZlcmVkIHdvcmsgZ292ZXJuZWQgYnkgdGhp cyBMaWNlbnNlLAorb3RoZXIgdGhhbiBhbiBBcHBsaWNhdGlvbiBvciBhIENvbWJpbmVkIFdv cmsgYXMgZGVmaW5lZCBiZWxvdy4KKworICBBbiAiQXBwbGljYXRpb24iIGlzIGFueSB3b3Jr IHRoYXQgbWFrZXMgdXNlIG9mIGFuIGludGVyZmFjZSBwcm92aWRlZAorYnkgdGhlIExpYnJh cnksIGJ1dCB3aGljaCBpcyBub3Qgb3RoZXJ3aXNlIGJhc2VkIG9uIHRoZSBMaWJyYXJ5Lgor RGVmaW5pbmcgYSBzdWJjbGFzcyBvZiBhIGNsYXNzIGRlZmluZWQgYnkgdGhlIExpYnJhcnkg aXMgZGVlbWVkIGEgbW9kZQorb2YgdXNpbmcgYW4gaW50ZXJmYWNlIHByb3ZpZGVkIGJ5IHRo ZSBMaWJyYXJ5LgorCisgIEEgIkNvbWJpbmVkIFdvcmsiIGlzIGEgd29yayBwcm9kdWNlZCBi eSBjb21iaW5pbmcgb3IgbGlua2luZyBhbgorQXBwbGljYXRpb24gd2l0aCB0aGUgTGlicmFy eS4gIFRoZSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIExpYnJhcnkKK3dpdGggd2hpY2gg dGhlIENvbWJpbmVkIFdvcmsgd2FzIG1hZGUgaXMgYWxzbyBjYWxsZWQgdGhlICJMaW5rZWQK K1ZlcnNpb24iLgorCisgIFRoZSAiTWluaW1hbCBDb3JyZXNwb25kaW5nIFNvdXJjZSIgZm9y IGEgQ29tYmluZWQgV29yayBtZWFucyB0aGUKK0NvcnJlc3BvbmRpbmcgU291cmNlIGZvciB0 aGUgQ29tYmluZWQgV29yaywgZXhjbHVkaW5nIGFueSBzb3VyY2UgY29kZQorZm9yIHBvcnRp b25zIG9mIHRoZSBDb21iaW5lZCBXb3JrIHRoYXQsIGNvbnNpZGVyZWQgaW4gaXNvbGF0aW9u LCBhcmUKK2Jhc2VkIG9uIHRoZSBBcHBsaWNhdGlvbiwgYW5kIG5vdCBvbiB0aGUgTGlua2Vk IFZlcnNpb24uCisKKyAgVGhlICJDb3JyZXNwb25kaW5nIEFwcGxpY2F0aW9uIENvZGUiIGZv ciBhIENvbWJpbmVkIFdvcmsgbWVhbnMgdGhlCitvYmplY3QgY29kZSBhbmQvb3Igc291cmNl IGNvZGUgZm9yIHRoZSBBcHBsaWNhdGlvbiwgaW5jbHVkaW5nIGFueSBkYXRhCithbmQgdXRp bGl0eSBwcm9ncmFtcyBuZWVkZWQgZm9yIHJlcHJvZHVjaW5nIHRoZSBDb21iaW5lZCBXb3Jr IGZyb20gdGhlCitBcHBsaWNhdGlvbiwgYnV0IGV4Y2x1ZGluZyB0aGUgU3lzdGVtIExpYnJh cmllcyBvZiB0aGUgQ29tYmluZWQgV29yay4KKworICAxLiBFeGNlcHRpb24gdG8gU2VjdGlv biAzIG9mIHRoZSBHTlUgR1BMLgorCisgIFlvdSBtYXkgY29udmV5IGEgY292ZXJlZCB3b3Jr IHVuZGVyIHNlY3Rpb25zIDMgYW5kIDQgb2YgdGhpcyBMaWNlbnNlCit3aXRob3V0IGJlaW5n IGJvdW5kIGJ5IHNlY3Rpb24gMyBvZiB0aGUgR05VIEdQTC4KKworICAyLiBDb252ZXlpbmcg TW9kaWZpZWQgVmVyc2lvbnMuCisKKyAgSWYgeW91IG1vZGlmeSBhIGNvcHkgb2YgdGhlIExp YnJhcnksIGFuZCwgaW4geW91ciBtb2RpZmljYXRpb25zLCBhCitmYWNpbGl0eSByZWZlcnMg dG8gYSBmdW5jdGlvbiBvciBkYXRhIHRvIGJlIHN1cHBsaWVkIGJ5IGFuIEFwcGxpY2F0aW9u Cit0aGF0IHVzZXMgdGhlIGZhY2lsaXR5IChvdGhlciB0aGFuIGFzIGFuIGFyZ3VtZW50IHBh c3NlZCB3aGVuIHRoZQorZmFjaWxpdHkgaXMgaW52b2tlZCksIHRoZW4geW91IG1heSBjb252 ZXkgYSBjb3B5IG9mIHRoZSBtb2RpZmllZAordmVyc2lvbjoKKworICAgYSkgdW5kZXIgdGhp cyBMaWNlbnNlLCBwcm92aWRlZCB0aGF0IHlvdSBtYWtlIGEgZ29vZCBmYWl0aCBlZmZvcnQg dG8KKyAgIGVuc3VyZSB0aGF0LCBpbiB0aGUgZXZlbnQgYW4gQXBwbGljYXRpb24gZG9lcyBu b3Qgc3VwcGx5IHRoZQorICAgZnVuY3Rpb24gb3IgZGF0YSwgdGhlIGZhY2lsaXR5IHN0aWxs IG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMKKyAgIHdoYXRldmVyIHBhcnQgb2YgaXRzIHB1cnBv c2UgcmVtYWlucyBtZWFuaW5nZnVsLCBvcgorCisgICBiKSB1bmRlciB0aGUgR05VIEdQTCwg d2l0aCBub25lIG9mIHRoZSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIG9mCisgICB0aGlzIExp Y2Vuc2UgYXBwbGljYWJsZSB0byB0aGF0IGNvcHkuCisKKyAgMy4gT2JqZWN0IENvZGUgSW5j b3Jwb3JhdGluZyBNYXRlcmlhbCBmcm9tIExpYnJhcnkgSGVhZGVyIEZpbGVzLgorCisgIFRo ZSBvYmplY3QgY29kZSBmb3JtIG9mIGFuIEFwcGxpY2F0aW9uIG1heSBpbmNvcnBvcmF0ZSBt YXRlcmlhbCBmcm9tCithIGhlYWRlciBmaWxlIHRoYXQgaXMgcGFydCBvZiB0aGUgTGlicmFy eS4gIFlvdSBtYXkgY29udmV5IHN1Y2ggb2JqZWN0Citjb2RlIHVuZGVyIHRlcm1zIG9mIHlv dXIgY2hvaWNlLCBwcm92aWRlZCB0aGF0LCBpZiB0aGUgaW5jb3Jwb3JhdGVkCittYXRlcmlh bCBpcyBub3QgbGltaXRlZCB0byBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YSBzdHJ1Y3R1 cmUKK2xheW91dHMgYW5kIGFjY2Vzc29ycywgb3Igc21hbGwgbWFjcm9zLCBpbmxpbmUgZnVu Y3Rpb25zIGFuZCB0ZW1wbGF0ZXMKKyh0ZW4gb3IgZmV3ZXIgbGluZXMgaW4gbGVuZ3RoKSwg eW91IGRvIGJvdGggb2YgdGhlIGZvbGxvd2luZzoKKworICAgYSkgR2l2ZSBwcm9taW5lbnQg bm90aWNlIHdpdGggZWFjaCBjb3B5IG9mIHRoZSBvYmplY3QgY29kZSB0aGF0IHRoZQorICAg TGlicmFyeSBpcyB1c2VkIGluIGl0IGFuZCB0aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNl IGFyZQorICAgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UuCisKKyAgIGIpIEFjY29tcGFueSB0 aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlIEdOVSBHUEwgYW5kIHRoaXMgbGlj ZW5zZQorICAgZG9jdW1lbnQuCisKKyAgNC4gQ29tYmluZWQgV29ya3MuCisKKyAgWW91IG1h eSBjb252ZXkgYSBDb21iaW5lZCBXb3JrIHVuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlIHRo YXQsCit0YWtlbiB0b2dldGhlciwgZWZmZWN0aXZlbHkgZG8gbm90IHJlc3RyaWN0IG1vZGlm aWNhdGlvbiBvZiB0aGUKK3BvcnRpb25zIG9mIHRoZSBMaWJyYXJ5IGNvbnRhaW5lZCBpbiB0 aGUgQ29tYmluZWQgV29yayBhbmQgcmV2ZXJzZQorZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2lu ZyBzdWNoIG1vZGlmaWNhdGlvbnMsIGlmIHlvdSBhbHNvIGRvIGVhY2ggb2YKK3RoZSBmb2xs b3dpbmc6CisKKyAgIGEpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBv ZiB0aGUgQ29tYmluZWQgV29yayB0aGF0CisgICB0aGUgTGlicmFyeSBpcyB1c2VkIGluIGl0 IGFuZCB0aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNlIGFyZQorICAgY292ZXJlZCBieSB0 aGlzIExpY2Vuc2UuCisKKyAgIGIpIEFjY29tcGFueSB0aGUgQ29tYmluZWQgV29yayB3aXRo IGEgY29weSBvZiB0aGUgR05VIEdQTCBhbmQgdGhpcyBsaWNlbnNlCisgICBkb2N1bWVudC4K KworICAgYykgRm9yIGEgQ29tYmluZWQgV29yayB0aGF0IGRpc3BsYXlzIGNvcHlyaWdodCBu b3RpY2VzIGR1cmluZworICAgZXhlY3V0aW9uLCBpbmNsdWRlIHRoZSBjb3B5cmlnaHQgbm90 aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZworICAgdGhlc2Ugbm90aWNlcywgYXMgd2VsbCBh cyBhIHJlZmVyZW5jZSBkaXJlY3RpbmcgdGhlIHVzZXIgdG8gdGhlCisgICBjb3BpZXMgb2Yg dGhlIEdOVSBHUEwgYW5kIHRoaXMgbGljZW5zZSBkb2N1bWVudC4KKworICAgZCkgRG8gb25l IG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAwKSBDb252ZXkgdGhlIE1pbmltYWwgQ29y cmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMKKyAgICAgICBMaWNl bnNlLCBhbmQgdGhlIENvcnJlc3BvbmRpbmcgQXBwbGljYXRpb24gQ29kZSBpbiBhIGZvcm0K KyAgICAgICBzdWl0YWJsZSBmb3IsIGFuZCB1bmRlciB0ZXJtcyB0aGF0IHBlcm1pdCwgdGhl IHVzZXIgdG8KKyAgICAgICByZWNvbWJpbmUgb3IgcmVsaW5rIHRoZSBBcHBsaWNhdGlvbiB3 aXRoIGEgbW9kaWZpZWQgdmVyc2lvbiBvZgorICAgICAgIHRoZSBMaW5rZWQgVmVyc2lvbiB0 byBwcm9kdWNlIGEgbW9kaWZpZWQgQ29tYmluZWQgV29yaywgaW4gdGhlCisgICAgICAgbWFu bmVyIHNwZWNpZmllZCBieSBzZWN0aW9uIDYgb2YgdGhlIEdOVSBHUEwgZm9yIGNvbnZleWlu ZworICAgICAgIENvcnJlc3BvbmRpbmcgU291cmNlLgorCisgICAgICAgMSkgVXNlIGEgc3Vp dGFibGUgc2hhcmVkIGxpYnJhcnkgbWVjaGFuaXNtIGZvciBsaW5raW5nIHdpdGggdGhlCisg ICAgICAgTGlicmFyeS4gIEEgc3VpdGFibGUgbWVjaGFuaXNtIGlzIG9uZSB0aGF0IChhKSB1 c2VzIGF0IHJ1biB0aW1lCisgICAgICAgYSBjb3B5IG9mIHRoZSBMaWJyYXJ5IGFscmVhZHkg cHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyCisgICAgICAgc3lzdGVtLCBhbmQgKGIp IHdpbGwgb3BlcmF0ZSBwcm9wZXJseSB3aXRoIGEgbW9kaWZpZWQgdmVyc2lvbgorICAgICAg IG9mIHRoZSBMaWJyYXJ5IHRoYXQgaXMgaW50ZXJmYWNlLWNvbXBhdGlibGUgd2l0aCB0aGUg TGlua2VkCisgICAgICAgVmVyc2lvbi4KKworICAgZSkgUHJvdmlkZSBJbnN0YWxsYXRpb24g SW5mb3JtYXRpb24sIGJ1dCBvbmx5IGlmIHlvdSB3b3VsZCBvdGhlcndpc2UKKyAgIGJlIHJl cXVpcmVkIHRvIHByb3ZpZGUgc3VjaCBpbmZvcm1hdGlvbiB1bmRlciBzZWN0aW9uIDYgb2Yg dGhlCisgICBHTlUgR1BMLCBhbmQgb25seSB0byB0aGUgZXh0ZW50IHRoYXQgc3VjaCBpbmZv cm1hdGlvbiBpcworICAgbmVjZXNzYXJ5IHRvIGluc3RhbGwgYW5kIGV4ZWN1dGUgYSBtb2Rp ZmllZCB2ZXJzaW9uIG9mIHRoZQorICAgQ29tYmluZWQgV29yayBwcm9kdWNlZCBieSByZWNv bWJpbmluZyBvciByZWxpbmtpbmcgdGhlCisgICBBcHBsaWNhdGlvbiB3aXRoIGEgbW9kaWZp ZWQgdmVyc2lvbiBvZiB0aGUgTGlua2VkIFZlcnNpb24uIChJZgorICAgeW91IHVzZSBvcHRp b24gNGQwLCB0aGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIG11c3QgYWNjb21wYW55Cisg ICB0aGUgTWluaW1hbCBDb3JyZXNwb25kaW5nIFNvdXJjZSBhbmQgQ29ycmVzcG9uZGluZyBB cHBsaWNhdGlvbgorICAgQ29kZS4gSWYgeW91IHVzZSBvcHRpb24gNGQxLCB5b3UgbXVzdCBw cm92aWRlIHRoZSBJbnN0YWxsYXRpb24KKyAgIEluZm9ybWF0aW9uIGluIHRoZSBtYW5uZXIg c3BlY2lmaWVkIGJ5IHNlY3Rpb24gNiBvZiB0aGUgR05VIEdQTAorICAgZm9yIGNvbnZleWlu ZyBDb3JyZXNwb25kaW5nIFNvdXJjZS4pCisKKyAgNS4gQ29tYmluZWQgTGlicmFyaWVzLgor CisgIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBi YXNlZCBvbiB0aGUKK0xpYnJhcnkgc2lkZSBieSBzaWRlIGluIGEgc2luZ2xlIGxpYnJhcnkg dG9nZXRoZXIgd2l0aCBvdGhlciBsaWJyYXJ5CitmYWNpbGl0aWVzIHRoYXQgYXJlIG5vdCBB cHBsaWNhdGlvbnMgYW5kIGFyZSBub3QgY292ZXJlZCBieSB0aGlzCitMaWNlbnNlLCBhbmQg Y29udmV5IHN1Y2ggYSBjb21iaW5lZCBsaWJyYXJ5IHVuZGVyIHRlcm1zIG9mIHlvdXIKK2No b2ljZSwgaWYgeW91IGRvIGJvdGggb2YgdGhlIGZvbGxvd2luZzoKKworICAgYSkgQWNjb21w YW55IHRoZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsg YmFzZWQKKyAgIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxp YnJhcnkgZmFjaWxpdGllcywKKyAgIGNvbnZleWVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlz IExpY2Vuc2UuCisKKyAgIGIpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIHRoZSBjb21i aW5lZCBsaWJyYXJ5IHRoYXQgcGFydCBvZiBpdAorICAgaXMgYSB3b3JrIGJhc2VkIG9uIHRo ZSBMaWJyYXJ5LCBhbmQgZXhwbGFpbmluZyB3aGVyZSB0byBmaW5kIHRoZQorICAgYWNjb21w YW55aW5nIHVuY29tYmluZWQgZm9ybSBvZiB0aGUgc2FtZSB3b3JrLgorCisgIDYuIFJldmlz ZWQgVmVyc2lvbnMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4K KworICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQg YW5kL29yIG5ldyB2ZXJzaW9ucworb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4gU3VjaCBuZXcKK3ZlcnNpb25zIHdpbGwgYmUg c2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heQorZGlm ZmVyIGluIGRldGFpbCB0byBhZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KKwor ICBFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJl ci4gSWYgdGhlCitMaWJyYXJ5IGFzIHlvdSByZWNlaXZlZCBpdCBzcGVjaWZpZXMgdGhhdCBh IGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbgorb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSAib3IgYW55IGxhdGVyIHZlcnNpb24iCithcHBsaWVzIHRvIGl0LCB5 b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kCitjb25kaXRp b25zIGVpdGhlciBvZiB0aGF0IHB1Ymxpc2hlZCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2 ZXJzaW9uCitwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gSWYg dGhlIExpYnJhcnkgYXMgeW91CityZWNlaXZlZCBpdCBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVy c2lvbiBudW1iZXIgb2YgdGhlIEdOVSBMZXNzZXIKK0dlbmVyYWwgUHVibGljIExpY2Vuc2Us IHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIG9mIHRoZSBHTlUgTGVzc2VyCitHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCisKKyAgSWYgdGhlIExpYnJhcnkgYXMgeW91IHJlY2VpdmVkIGl0IHNwZWNp ZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZQord2hldGhlciBmdXR1cmUgdmVyc2lvbnMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBzaGFsbAorYXBwbHks IHRoYXQgcHJveHkncyBwdWJsaWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYW55IHZl cnNpb24gaXMKK3Blcm1hbmVudCBhdXRob3JpemF0aW9uIGZvciB5b3UgdG8gY2hvb3NlIHRo YXQgdmVyc2lvbiBmb3IgdGhlCitMaWJyYXJ5LgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbGli dGFwL0lOU1RBTEwgYi9zcmMvdGVzdC9saWJ0YXAvSU5TVEFMTApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWIyYzc2ZGYzZDcKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9saWJ0YXAvSU5TVEFMTApAQCAtMCwwICsxLDQxIEBACitUbyBpbnN0YWxs IGxpYnRhcCBvbiBhIFVuaXgtbGlrZSBzeXN0ZW06CisKKyAgICAkIG1ha2UKKyAgICAkIG1h a2UgY2hlY2sKKyAgICAkIG1ha2UgaW5zdGFsbAorCitUbyBjb21waWxlIHdpdGggZ2NjIC1h bnNpLCBydW46CisKKyAgICAkIEFOU0k9MSBtYWtlCisKK1RvIGluc3RhbGwgdG8gYSBkaWZm ZXJlbnQgZGlyZWN0b3J5IHRoYW4gL3Vzci9sb2NhbCwgc3VwcGx5IHRoZQorUFJFRklYIHZh cmlhYmxlIHRvIG1ha2U6CisKKyAgICAkIFBSRUZJWD0vdXNyIG1ha2UgaW5zdGFsbAorCitP biBXaW5kb3dzLCB0aGUgbGlicmFyeSBjYW4gYmUgY3JlYXRlZCBieSBmaXJzdCBzZXR0aW5n IHVwIHRoZQorY29ycmVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFVz dWFsbHkgdGhpcyBpcyBkb25lIGJ5CitydW5uaW5nIHZjdmFyczMyLmJhdCBpbmNsdWRlZCBp biB0aGUgVmlzdWFsIFN0dWRpbyBkaXN0cmlidXRpb24uCitZb3Ugc2hvdWxkIGFsc28gaW5z dGFsbCBnbnUgbWFrZSB3aGljaCBjYW4gYmUgZm91bmQgYXQKK2h0dHA6Ly9nbnV3aW4zMi5z b3VyY2Vmb3JnZS5uZXQvcGFja2FnZXMvbWFrZS5odG0uIE9uY2UgdGhpcyBpcworZG9uZSwg eW91IHNob3VsZCBiZSBhYmxlIHRvIHJ1biB0aGUgZm9sbG93aW5nOgorCisgICAgPiBtYWtl IC1mIE1ha2VmaWxlLndpbgorCitJZiB5b3Ugd2FudCB0byB1c2UgaXQgZGlyZWN0bHkgaW4g YW5vdGhlciBwcm9qZWN0LCB5b3UgY2FuIGNvcHkgdGFwLmMKK2FuZCB0YXAuaCB0aGVyZSBh bmQgaXQgc2hvdWxkbid0IGhhdmUgYSBwcm9ibGVtIGNvbXBpbGluZy4KKworICAgICQgbHMK KyAgICB0YXAuYyB0YXAuaCB0ZXN0LmMKKyAgICAkIGNhdCB0ZXN0LmMKKyAgICAjaW5jbHVk ZSAidGFwLmgiCisgICAgaW50IG1haW4gKCkgeworICAgICAgICBwbGFuKDEpOworICAgICAg ICBvayg1MCArIDUsICJmb28gJXMiLCAiYmFyIik7CisgICAgICAgIGRvbmVfdGVzdGluZygp OworICAgIH0KKyAgICAkIGdjYyB0ZXN0LmMgdGFwLmMKKyAgICAkIGEub3V0CisgICAgMS4u MQorICAgIG9rIDEgLSBmb28gYmFyCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC9N YWtlZmlsZSBiL3NyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uZjAyMGMyODM5YTgKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9saWJ0YXAvTWFrZWZpbGUKQEAgLTAsMCArMSw3MyBAQAorQ0MgPz0gZ2NjCitD RkxBR1MgKz0gLVdhbGwgLUkuIC1mUElDCitQUkVGSVggPz0gJChERVNURElSKS91c3IvbG9j YWwKK1RFU1RTID0gJChwYXRzdWJzdCAlLmMsICUsICQod2lsZGNhcmQgdC8qLmMpKQorCitp ZmRlZiBBTlNJCisJIyAtRF9CU0RfU09VUkNFIGZvciBNQVBfQU5PTllNT1VTCisJQ0ZMQUdT ICs9IC1hbnNpIC1EX0JTRF9TT1VSQ0UKKwlMRExJQlMgKz0gLWxic2QtY29tcGF0CitlbmRp ZgorCislOgorCSQoQ0MpICQoTERGTEFHUykgJChUQVJHRVRfQVJDSCkgJChmaWx0ZXIgJS5v ICUuYSAlLnNvLCAkXikgJChMRExJQlMpIC1vICRACisKKyUubzoKKwkkKENDKSAkKENGTEFH UykgJChDUFBGTEFHUykgJChUQVJHRVRfQVJDSCkgLWMgJChmaWx0ZXIgJS5jLCAkXikgJChM RExJQlMpIC1vICRACisKKyUuYToKKwkkKEFSKSByY3MgJEAgJChmaWx0ZXIgJS5vLCAkXikK KworJS5zbzoKKwkkKENDKSAtc2hhcmVkICQoTERGTEFHUykgJChUQVJHRVRfQVJDSCkgJChm aWx0ZXIgJS5vLCAkXikgJChMRExJQlMpIC1vICRACisKK2FsbDogbGlidGFwLmEgbGlidGFw LnNvIHRhcC5wYyB0ZXN0cworCit0YXAucGM6CisJQGVjaG8gZ2VuZXJhdGluZyB0YXAucGMK KwlAZWNobyAncHJlZml4PSckKFBSRUZJWCkgPiB0YXAucGMKKwlAZWNobyAnZXhlY19wcmVm aXg9JCR7cHJlZml4fScgPj4gdGFwLnBjCisJQGVjaG8gJ2xpYmRpcj0kJHtwcmVmaXh9L2xp YicgPj4gdGFwLnBjCisJQGVjaG8gJ2luY2x1ZGVkaXI9JCR7cHJlZml4fS9pbmNsdWRlJyA+ PiB0YXAucGMKKwlAZWNobyAnJyA+PiB0YXAucGMKKwlAZWNobyAnTmFtZTogbGlidGFwJyA+ PiB0YXAucGMKKwlAZWNobyAnRGVzY3JpcHRpb246IFdyaXRlIHRlc3RzIGluIEMnID4+IHRh cC5wYworCUBlY2hvICdWZXJzaW9uOiAwLjEuMCcgPj4gdGFwLnBjCisJQGVjaG8gJ1VSTDog aHR0cHM6Ly9naXRodWIuY29tL3pvcmduYXgvbGlidGFwJyA+PiB0YXAucGMKKwlAZWNobyAn TGliczogLUwkJHtsaWJkaXJ9IC1sdGFwJyA+PiB0YXAucGMKKwlAZWNobyAnQ2ZsYWdzOiAt SSQke2luY2x1ZGVkaXJ9JyA+PiB0YXAucGMKKworbGlidGFwLmE6IHRhcC5vCisKK2xpYnRh cC5zbzogdGFwLm8KKwordGFwLm86IHRhcC5jIHRhcC5oCisKK3Rlc3RzOiAkKFRFU1RTKQor CiskKFRFU1RTKTogJTogJS5vIGxpYnRhcC5hCisKKyQocGF0c3Vic3QgJSwgJS5vLCAkKFRF U1RTKSk6ICUubzogJS5jIHRhcC5oCisJJChDQykgJChDRkxBR1MpIC1PMCAkKENQUEZMQUdT KSAkKFRBUkdFVF9BUkNIKSAtYyAkKGZpbHRlciAlLmMsICReKSAkKExETElCUykgLW8gJEAK KworY2xlYW46CisJcm0gLXJmICoubyB0LyoubyB0YXAucGMgbGlidGFwLmEgbGlidGFwLnNv ICQoVEVTVFMpCisKK2luc3RhbGw6IGxpYnRhcC5hIHRhcC5oIGxpYnRhcC5zbyB0YXAucGMK Kwlta2RpciAtcCAkKFBSRUZJWCkvbGliICQoUFJFRklYKS9pbmNsdWRlICQoUFJFRklYKS9s aWIvcGtnY29uZmlnCisJaW5zdGFsbCAtYyBsaWJ0YXAuYSAkKFBSRUZJWCkvbGliCisJaW5z dGFsbCAtYyBsaWJ0YXAuc28gJChQUkVGSVgpL2xpYgorCWluc3RhbGwgLWMgdGFwLnBjICQo UFJFRklYKS9saWIvcGtnY29uZmlnCisJaW5zdGFsbCAtYyB0YXAuaCAkKFBSRUZJWCkvaW5j bHVkZQorCit1bmluc3RhbGw6CisJcm0gJChQUkVGSVgpL2xpYi9saWJ0YXAuYSAkKFBSRUZJ WCkvbGliL2xpYnRhcC5zbyAkKFBSRUZJWCkvaW5jbHVkZS90YXAuaAorCitkaXN0OgorCXJt IGxpYnRhcC56aXAKKwl6aXAgLXIgbGlidGFwICoKKworY2hlY2sgdGVzdDogYWxsCisJLi90 L3Rlc3QKKworLlBIT05ZOiBhbGwgY2xlYW4gaW5zdGFsbCB1bmluc3RhbGwgZGlzdCBjaGVj ayB0ZXN0IHRlc3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9saWJ0YXAvTWFrZWZpbGUud2lu IGIvc3JjL3Rlc3QvbGlidGFwL01ha2VmaWxlLndpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNjk0ZDY3OWExYjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9saWJ0YXAvTWFrZWZpbGUud2luCkBAIC0wLDAgKzEsMzcgQEAKK0NGTEFHUyA9IC9a aSAvV2FsbCAvd2Q0MjU1IC93ZDQ5OTYgL3dkNDEyNyAvd2Q0ODIwIC93ZDQxMDAgL3dkNDYx OSBcCisJCSAvd2Q0NTE0IC93ZDQ2NjggL0kuCitDQyA9IGNsIC9ub2xvZ28KK1RFU1RTID0g JChwYXRzdWJzdCAlLmMsICUuZXhlLCAkKHdpbGRjYXJkIHQvKi5jKSkKKworJS5leGU6CisJ JChDQykgJChMREZMQUdTKSAkKGZpbHRlciAlLm9iaiAlLmxpYiAlLmRsbCwgJF4pICQoTERM SUJTKSAvRmUgJEAKKworJS5vOgorCSQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAvYyAk KGZpbHRlciAlLmMsICReKSAkKExETElCUykgL0ZvICRACisKKyUubGliOgorCWxpYiAvbm9s b2dvIC9vdXQ6JEAgJChmaWx0ZXIgJS5vYmosICReKQorCislLmRsbDoKKwlsaWIgL25vbG9n byAvb3V0OiRAICQoZmlsdGVyICUub2JqLCAkXikKKworYWxsOiB0YXAubGliIHRlc3RzCisK K3RhcC5saWI6IHRhcC5vYmoKKwordGFwLm9iajogdGFwLmMgdGFwLmgKKwordGVzdHM6ICQo VEVTVFMpCisKKyQoVEVTVFMpOiAlLmV4ZTogJS5vYmogdGFwLmxpYgorCiskKHBhdHN1YnN0 ICUuZXhlLCAlLm9iaiwgJChURVNUUykpOiAlLm9iajogJS5jIHRhcC5oCisKK2NsZWFuOgor CXJtIC1yZiAqLm9iaiB0Lyoub2JqIHRhcC5saWIgJChURVNUUykKKworY2hlY2sgdGVzdDog YWxsCisJcHJvdmUKKworLlBIT05ZOiBhbGwgY2xlYW4gY2hlY2sgdGVzdCB0ZXN0cworCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9saWJ0YXAvUkVBRE1FLm1kIGIvc3JjL3Rlc3QvbGlidGFw L1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTMz MmQ1MjZjMDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9saWJ0YXAvUkVBRE1FLm1k CkBAIC0wLDAgKzEsMjY4IEBACitOQU1FCis9PT09CisKK2xpYnRhcCAtIFdyaXRlIHRlc3Rz IGluIEMKKworU1lOT1BTSVMKKz09PT09PT09CisKKyAgICAjaW5jbHVkZSA8dGFwLmg+CisK KyAgICBpbnQgbWFpbiAoKSB7CisgICAgICAgIHBsYW4oNSk7CisgICAgICAgIGludCBicm9u emUgPSAxLCBzaWx2ZXIgPSAyLCBnb2xkID0gMzsKKyAgICAgICAgb2soYnJvbnplIDwgc2ls dmVyLCAiYnJvbnplIGlzIGxlc3MgdGhhbiBzaWx2ZXIiKTsKKyAgICAgICAgb2soYnJvbnpl ID4gc2lsdmVyLCAibm90IHF1aXRlIik7CisgICAgICAgIGlzKCJnb2xkIiwgImdvbGQiLCAi Z29sZCBpcyBnb2xkIik7CisgICAgICAgIGNtcF9vayhzaWx2ZXIsICI8IiwgZ29sZCwgIiVk IDw9ICVkIiwgc2lsdmVyLCBnb2xkKTsKKyAgICAgICAgbGlrZSgicGxhdGludW0iLCAiLipp bnVtIiwgInBsYXRpbnVtIG1hdGNoZXMgLippbnVtIik7CisgICAgICAgIGRvbmVfdGVzdGlu ZygpOworICAgIH0KKworcmVzdWx0cyBpbjoKKworICAgIDEuLjUKKyAgICBvayAxIC0gYnJv bnplIGlzIGxlc3MgdGhhbiBzaWx2ZXIKKyAgICBub3Qgb2sgMiAtIG5vdCBxdWl0ZQorICAg ICMgICBGYWlsZWQgdGVzdCAnbm90IHF1aXRlJworICAgICMgICBhdCB0L3N5bm9wc2lzLmMg bGluZSA3LgorICAgIG9rIDMgLSBnb2xkIGlzIGdvbGQKKyAgICBvayA0IC0gMiA8PSAzCisg ICAgb2sgNSAtIHBsYXRpbnVtIG1hdGNoZXMgLippbnVtCisgICAgIyBMb29rcyBsaWtlIHlv dSBmYWlsZWQgMSB0ZXN0IG9mIDUgcnVuLgorCitERVNDUklQVElPTgorPT09PT09PT09PT0K KwordGFwIGlzIGFuIGVhc3kgdG8gcmVhZCBhbmQgZWFzeSB0byB3cml0ZSB3YXkgb2YgY3Jl YXRpbmcgdGVzdHMgZm9yCit5b3VyIHNvZnR3YXJlLiBUaGlzIGxpYnJhcnkgY3JlYXRlcyBm dW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0bworZ2VuZXJhdGUgaXQgZm9yIHlvdXIgQyBw cm9ncmFtcy4gSXQgaXMgaW1wbGVtZW50ZWQgdXNpbmcgbWFjcm9zCit0aGF0IGluY2x1ZGUg ZmlsZSBhbmQgbGluZSBpbmZvIGF1dG9tYXRpY2FsbHksIGFuZCBtYWtlcyBpdCBzbyB0aGF0 Cit0aGUgZm9ybWF0IG1lc3NhZ2Ugb2YgZWFjaCB0ZXN0IGlzIG9wdGlvbmFsLiBJdCBpcyBt b3N0bHkgYmFzZWQgb24KK3RoZSBUZXN0OjpNb3JlIFBlcmwgbW9kdWxlLgorCitJTlNUQUxM Cis9PT09PT09CisKK09uICoqVW5peCoqIHN5c3RlbXM6CisKKyAgICAkIG1ha2UKKyAgICAk IG1ha2UgaW5zdGFsbAorCitGb3IgbW9yZSBkZXRhaWxlZCBpbnN0YWxsYXRpb24gaW5zdHJ1 Y3Rpb25zIChlZywgZm9yICoqV2luZG93cyoqKSwgc2VlIGBJTlNUQUxMYC4KKworRlVOQ1RJ T05TCis9PT09PT09PT0KKworLSAgIHBsYW4odGVzdHMpCistICAgcGxhbihOT19QTEFOKQor LSAgIHBsYW4oU0tJUF9BTEwpOworLSAgIHBsYW4oU0tJUF9BTEwsIGZtdCwgLi4uKQorCisg ICAgVXNlIHRoaXMgdG8gc3RhcnQgYSBzZXJpZXMgb2YgdGVzdHMuIFdoZW4geW91IGtub3cg aG93IG1hbnkgdGVzdHMgdGhlcmUKKyAgICB3aWxsIGJlLCB5b3UgY2FuIHB1dCBhIG51bWJl ciBhcyBhIG51bWJlciBvZiB0ZXN0cyB5b3UgZXhwZWN0IHRvIHJ1bi4gSWYKKyAgICB5b3Ug ZG8gbm90IGtub3cgaG93IG1hbnkgdGVzdHMgdGhlcmUgd2lsbCBiZSwgeW91IGNhbiB1c2Ug cGxhbihOT19QTEFOKQorICAgIG9yIG5vdCBjYWxsIHRoaXMgZnVuY3Rpb24uIFdoZW4geW91 IHBhc3MgaXQgYSBudW1iZXIgb2YgdGVzdHMgdG8gcnVuLCBhCisgICAgbWVzc2FnZSBzaW1p bGFyIHRvIHRoZSBmb2xsb3dpbmcgd2lsbCBhcHBlYXIgaW4gdGhlIG91dHB1dDoKKworICAg ICAgICAxLi41CisKKyAgICBJZiB5b3UgcGFzcyBpdCBTS0lQX0FMTCwgdGhlIHdob2xlIHRl c3Qgd2lsbCBiZSBza2lwcGVkLgorCistICAgb2sodGVzdCkKKy0gICBvayh0ZXN0LCBmbXQs IC4uLikKKworICAgIFNwZWNpZnkgYSB0ZXN0LiB0aGUgdGVzdCBjYW4gYmUgYW55IHN0YXRl bWVudCByZXR1cm5pbmcgYSB0cnVlIG9yIGZhbHNlCisgICAgdmFsdWUuIFlvdSBtYXkgb3B0 aW9uYWxseSBwYXNzIGEgZm9ybWF0IHN0cmluZyBkZXNjcmliaW5nIHRoZSB0ZXN0LgorCisg ICAgICAgIG9rKHIgPSByZWFkZXJfbmV3KCJPZiBNaWNlIGFuZCBNZW4iKSwgImNyZWF0ZSBh IG5ldyByZWFkZXIiKTsKKyAgICAgICAgb2socmVhZGVyX2dvX3RvX3BhZ2UociwgNTUpLCAi Y2FuIHR1cm4gdGhlIHBhZ2UiKTsKKyAgICAgICAgb2soci0+cGFnZSA9PSA1NSwgInBhZ2Ug dHVybmVkIHRvIHRoZSByaWdodCBvbmUiKTsKKworICAgIFNob3VsZCBwcmludCBvdXQ6CisK KyAgICAgICAgb2sgMSAtIGNyZWF0ZSBhIG5ldyByZWFkZXIKKyAgICAgICAgb2sgMiAtIGNh biB0dXJuIHRoZSBwYWdlCisgICAgICAgIG9rIDMgLSBwYWdlIHR1cm5lZCB0byB0aGUgcmln aHQgb25lCisKKyAgICBPbiBmYWlsdXJlLCBhIGRpYWdub3N0aWMgbWVzc2FnZSB3aWxsIGJl IHByaW50ZWQgb3V0LgorCisgICAgICAgIG5vdCBvayAzIC0gcGFnZSB0dXJuZWQgdG8gdGhl IHJpZ2h0IG9uZQorICAgICAgICAjICAgRmFpbGVkIHRlc3QgJ3BhZ2UgdHVybmVkIHRvIHRo ZSByaWdodCBvbmUnCisgICAgICAgICMgICBhdCByZWFkZXIuYyBsaW5lIDEzLgorCistICAg aXMoZ290LCBleHBlY3RlZCkKKy0gICBpcyhnb3QsIGV4cGVjdGVkLCBmbXQsIC4uLikKKy0g ICBpc250KGdvdCwgdW5leHBlY3RlZCkKKy0gICBpc250KGdvdCwgdW5leHBlY3RlZCwgZm10 LCAuLi4pCisKKyAgICBUZXN0cyB0aGF0IHRoZSBzdHJpbmcgeW91IGdvdCBpcyB3aGF0IHlv dSBleHBlY3RlZC4gd2l0aCBpc250LCBpdCBpcyB0aGUKKyAgICByZXZlcnNlLgorCisgICAg ICAgIGlzKCJ0aGlzIiwgInRoYXQiLCAidGhpcyBpcyB0aGF0Iik7CisKKyAgICBwcmludHM6 CisKKyAgICAgICAgbm90IG9rIDEgLSB0aGlzIGlzIHRoYXQKKyAgICAgICAgIyAgIEZhaWxl ZCB0ZXN0ICd0aGlzIGlzIHRoYXQnCisgICAgICAgICMgICBhdCBpcy5jIGxpbmUgNi4KKyAg ICAgICAgIyAgICAgICAgICBnb3Q6ICd0aGlzJworICAgICAgICAjICAgICBleHBlY3RlZDog J3RoYXQnCisKKy0gICBjbXBfb2soYSwgb3AsIGIpCistICAgY21wX29rKGEsIG9wLCBiLCBm bXQsIC4uLikKKworICAgIENvbXBhcmVzIHR3byBpbnRzIHdpdGggYW55IGJpbmFyeSBvcGVy YXRvciB0aGF0IGRvZXNuJ3QgcmVxdWlyZSBhbiBsdmFsdWUuCisgICAgVGhpcyBpcyBuaWNl IHRvIHVzZSBzaW5jZSBpdCBwcm92aWRlcyBhIGJldHRlciBlcnJvciBtZXNzYWdlIHRoYW4g YW4KKyAgICBlcXVpdmFsZW50IG9rLgorCisgICAgICAgIGNtcF9vayg0MjAsICI+IiwgNjY2 KTsKKworICAgIHByaW50czoKKworICAgICAgICBub3Qgb2sgMQorICAgICAgICAjICAgRmFp bGVkIHRlc3QgYXQgY21wb2suYyBsaW5lIDUuCisgICAgICAgICMgICAgIDQyMAorICAgICAg ICAjICAgICAgICAgPgorICAgICAgICAjICAgICA2NjYKKworLSAgIGNtcF9tZW0oZ290LCBl eHBlY3RlZCwgbikKKy0gICBjbXBfbWVtKGdvdCwgZXhwZWN0ZWQsIG4sIGZtdCwgLi4uKQor CisgICAgVGVzdHMgdGhhdCB0aGUgZmlyc3QgbiBieXRlcyBvZiB0aGUgbWVtb3J5IHlvdSBn b3QgaXMgd2hhdCB5b3UgZXhwZWN0ZWQuCisgICAgTlVMTCBwb2ludGVycyBmb3IgZ290IGFu ZCBleHBlY3RlZCBhcmUgaGFuZGxlZCAoaWYgZWl0aGVyIGlzIE5VTEwsCisgICAgdGhlIHRl c3QgZmFpbHMpLCBidXQgeW91IG5lZWQgdG8gZW5zdXJlIG4gaXMgbm90IHRvbyBsYXJnZS4K KworICAgICAgICBjaGFyICphID0gImZvbyI7CisgICAgICAgIGNoYXIgKmIgPSAiYmFyIjsK KyAgICAgICAgY21wX21lbShhLCBiLCAzKQorCisgICAgcHJpbnRzCisKKyAgICAgICAgbm90 IG9rIDEKKyAgICAgICAgIyAgIEZhaWxlZCB0ZXN0IGF0IHQvY21wX21lbS5jIGxpbmUgOS4K KyAgICAgICAgIyAgICAgRGlmZmVyZW5jZSBzdGFydHMgYXQgb2Zmc2V0IDAKKyAgICAgICAg IyAgICAgICAgICBnb3Q6IDB4NjYKKyAgICAgICAgIyAgICAgZXhwZWN0ZWQ6IDB4NjIKKwor LSAgIGxpa2UoZ290LCBleHBlY3RlZCkKKy0gICBsaWtlKGdvdCwgZXhwZWN0ZWQsIGZtdCwg Li4uKQorLSAgIHVubGlrZShnb3QsIHVuZXhwZWN0ZWQpCistICAgdW5saWtlKGdvdCwgdW5l eHBlY3RlZCwgZm10LCAuLi4pCisKKyAgICBUZXN0cyB0aGF0IHRoZSBzdHJpbmcgeW91IGdv dCBtYXRjaGVzIHRoZSBleHBlY3RlZCBleHRlbmRlZCBQT1NJWCByZWdleC4KKyAgICB1bmxp a2UgaXMgdGhlIHJldmVyc2UuIFRoZXNlIG1hY3JvcyBhcmUgdGhlIGVxdWl2YWxlbnQgb2Yg YSBza2lwIG9uCisgICAgV2luZG93cy4KKworICAgICAgICBsaWtlKCJzdHJhbmdlciIsICJe cy4ocikuKlxcMSQiLCAibWF0Y2hlcyB0aGUgcmVnZXgiKTsKKworICAgIHByaW50czoKKwor ICAgICAgICBvayAxIC0gbWF0Y2hlcyB0aGUgcmVnZXgKKworLSAgIHBhc3MoKQorLSAgIHBh c3MoZm10LCAuLi4pCistICAgZmFpbCgpCistICAgZmFpbChmbXQsIC4uLikKKworICAgIFNw ZWNpeSB0aGF0IGEgdGVzdCBzdWNjZWVkZWQgb3IgZmFpbGVkLiBVc2UgdGhlc2Ugd2hlbiB0 aGUgc3RhdGVtZW50IGlzCisgICAgbG9uZ2VyIHRoYW4geW91IGNhbiBmaXQgaW50byB0aGUg YXJndW1lbnQgZ2l2ZW4gdG8gYW4gb2soKSB0ZXN0LgorCistICAgZGllc19vayhjb2RlKQor LSAgIGRpZXNfb2soY29kZSwgZm10LCAuLi4pCistICAgbGl2ZXNfb2soY29kZSkKKy0gICBs aXZlc19vayhjb2RlLCBmbXQsIC4uLikKKworICAgIFRlc3RzIHdoZXRoZXIgdGhlIGdpdmVu IGNvZGUgY2F1c2VzIHlvdXIgcHJvZ3JhbSB0byBleGl0LiBUaGUgY29kZSBnZXRzCisgICAg cGFzc2VkIHRvIGEgbWFjcm8gdGhhdCB3aWxsIHRlc3QgaXQgaW4gYSBmb3JrZWQgcHJvY2Vz cy4gSWYgdGhlIGNvZGUKKyAgICBzdWNjZWVkcyBpdCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRo ZSBwYXJlbnQgcHJvY2Vzcy4gWW91IGNhbiB0ZXN0IHRoaW5ncworICAgIGxpa2UgcGFzc2lu ZyBhIGZ1bmN0aW9uIGEgbnVsbCBwb2ludGVyIGFuZCBtYWtlIHN1cmUgaXQgZG9lc250Cisg ICAgZGVyZWZlcmVuY2UgaXQgYW5kIGNyYXNoLgorCisgICAgICAgIGRpZXNfb2soe2Fib3J0 KCk7fSwgImFib3J0IGRvZXMgY2xvc2UgeW91ciBwcm9ncmFtIik7CisgICAgICAgIGRpZXNf b2soe2ludCB4ID0gMC8wO30sICJkaXZpZGUgYnkgemVybyBjcmFzaCIpOworICAgICAgICBs aXZlc19vayh7cG93KDMuMCwgNS4wKTt9LCAibm90aGluZyB3cm9uZyB3aXRoIHRha2luZyAz Kio1Iik7CisKKyAgICBPbiBXaW5kb3dzLCB0aGVzZSBtYWNyb3MgYXJlIHRoZSBlcXVpdmFs ZW50IG9mIGEgc2tpcC4KKworLSAgIGRvbmVfdGVzdGluZygpCisKKyAgICBTdW1tYXJpemVz IHRoZSB0ZXN0cyB0aGF0IG9jY3VycmVkIGFuZCBleGl0cyB0aGUgbWFpbiBmdW5jdGlvbi4g SWYKKyAgICB0aGVyZSB3YXMgbm8gcGxhbiwgaXQgd2lsbCBwcmludCBvdXQgdGhlIG51bWJl ciBvZiB0ZXN0cyBhcy4KKworICAgICAgICAxLi41CisKKyAgICBJdCB3aWxsIGFsc28gcHJp bnQgYSBkaWFnbm9zdGljIG1lc3NhZ2UgYWJvdXQgaG93IG1hbnkKKyAgICBmYWlsdXJlcyB0 aGVyZSB3ZXJlLgorCisgICAgICAgICMgTG9va3MgbGlrZSB5b3UgZmFpbGVkIDIgdGVzdHMg b2YgMyBydW4uCisKKyAgICBJZiBhbGwgcGxhbm5lZCB0ZXN0cyB3ZXJlIHN1Y2Nlc3NmdWws IGl0IHdpbGwgcmV0dXJuIDAuIElmIGFueQorICAgIHRlc3QgZmFpbHMsIGl0IHdpbGwgcmV0 dXJuIDEuIElmIHRoZXkgYWxsIHBhc3NlZCwgYnV0IHRoZXJlCisgICAgd2VyZSBtaXNzaW5n IHRlc3RzLCBpdCB3aWxsIHJldHVybiAyLgorCistICAgZGlhZyhmbXQsIC4uLikKKworICAg IHByaW50IG91dCBhIG1lc3NhZ2UgdG8gdGhlIHRhcCBvdXRwdXQgb24gc3Rkb3V0LiBFYWNo IGxpbmUgaXMKKyAgICBwcmVjZWVkZWQgYnkgYSAiIyAiIHNvIHRoYXQgeW91IGtub3cgaXRz IGEgZGlhZ25vc3RpYyBtZXNzYWdlLgorCisgICAgICAgIGRpYWcoIlRoaXMgaXNcbmEgZGlh Z1xudG8gZGVzY3JpYmVcbnNvbWV0aGluZy4iKTsKKworICAgIHByaW50czoKKworICAgICAg ICAjIFRoaXMgaXMKKyAgICAgICAgIyBhIGRpYWcKKyAgICAgICAgIyB0byBkZXNjcmliZQor ICAgICAgICAjIHNvbWV0aGluZworCisgICAgb2soKSBhbmQgdGhpcyBmdW5jdGlvbiByZXR1 cm4gYW4gaW50IHNvIHlvdSBjYW4gdXNlIGl0IGxpa2U6CisKKyAgICAgICAgb2soMCkgfHwg ZGlhZygiZG9oISIpOworCistICAgc2tpcCh0ZXN0LCBuKQorLSAgIHNraXAodGVzdCwgbiwg Zm10LCAuLi4pCistICAgZW5kX3NraXAKKworICAgIFNraXAgYSBzZXJpZXMgb2YgbiB0ZXN0 cyBpZiB0ZXN0IGlzIHRydWUuIFlvdSBtYXkgZ2l2ZSBhIHJlYXNvbiB3aHkgeW91IGFyZQor ICAgIHNraXBwaW5nIHRoZW0gb3Igbm90LiBUaGUgKHBvc3NpYmx5KSBza2lwcGVkIHRlc3Rz IG11c3Qgb2NjdXIgYmV0d2VlbiB0aGUKKyAgICBza2lwIGFuZCBlbmRfc2tpcCBtYWNyb3Mu CisKKyAgICAgICAgc2tpcChUUlVFLCAyKTsKKyAgICAgICAgb2soMSk7CisgICAgICAgIG9r KDApOworICAgICAgICBlbmRfc2tpcDsKKworICAgIHByaW50czoKKworICAgICAgICBvayAx ICMgc2tpcAorICAgICAgICBvayAyICMgc2tpcAorCistICAgdG9kbygpCistICAgdG9kbyhm bXQsIC4uLikKKy0gICBlbmRfdG9kbworCisgICAgU3BlY2lmaWVzIGEgc2VyaWVzIG9mIHRl c3RzIHRoYXQgeW91IGV4cGVjdCB0byBmYWlsIGJlY2F1c2UgdGhleSBhcmUgbm90CisgICAg eWV0IGltcGxlbWVudGVkLgorCisgICAgICAgIHRvZG8oKQorICAgICAgICBvaygwKTsKKyAg ICAgICAgZW5kX3RvZG87CisKKyAgICBwcmludHM6CisKKyAgICAgICAgbm90IG9rIDEgIyBU T0RPCisgICAgICAgICMgICBGYWlsZWQgKFRPRE8pIHRlc3QgYXQgdG9kby5jIGxpbmUgNwor CistICAgQkFJTF9PVVQoKQorLSAgIEJBSUxfT1VUKGZtdCwgLi4uKQorCisgICAgSW1tZWRp YXRlbHkgc3RvcHMgYWxsIHRlc3RpbmcuCisKKyAgICAgICAgQkFJTF9PVVQoIkNhbid0IGdv IG5vIGZ1cnRoZXIiKTsKKworICAgIHByaW50cworCisgICAgICAgIEJhaWwgb3V0ISAgQ2Fu J3QgZ28gbm8gZnVydGhlcgorCisgICAgYW5kIGV4aXRzIHdpdGggMjU1LgorCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9saWJ0YXAvdGFwLmMgYi9zcmMvdGVzdC9saWJ0YXAvdGFwLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUwNmU0MDAwMTU2Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbGlidGFwL3RhcC5jCkBAIC0wLDAgKzEsNDIxIEBA CisvKgorbGlidGFwIC0gV3JpdGUgdGVzdHMgaW4gQworQ29weXJpZ2h0IDIwMTIgSmFrZSBH ZWxibWFuIDxnZWxibWFuQGdtYWlsLmNvbT4KK1RoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRl ciB0aGUgTEdQTAorKi8KKworI2RlZmluZSBfREVGQVVMVF9TT1VSQ0UgMQorCisjaW5jbHVk ZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K KyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgInRhcC5oIgorCisjaWZuZGVmIF9X SU4zMgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgor I2luY2x1ZGUgPHN5cy9tbWFuLmg+CisKKyNpbmNsdWRlIDxyZWdleC5oPgorCisjaWZuZGVm IE1BUF9BTk9OWU1PVVMKKyNpZmRlZiBNQVBfQU5PTgorI2RlZmluZSBNQVBfQU5PTllNT1VT IE1BUF9BTk9OCisjZWxzZQorI2Vycm9yICJTeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBtYXBw aW5nIGFub255bW91cyBwYWdlcyIKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworI2lmIGRl ZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19jbGFuZ19fKQorI2RlZmluZSBQUklOVEZf QVRUUihmbXRhcmcsIGZpcnN0dmFyYXJnKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRm LCBmbXRhcmcsIGZpcnN0dmFyYXJnKSkpCisjZWxzZQorI2RlZmluZSBQUklOVEZfQVRUUihm bXRhcmcsIGZpcnN0dmFyYXJnKQorI2VuZGlmCisKK3N0YXRpYyBpbnQgZXhwZWN0ZWRfdGVz dHMgPSBOT19QTEFOOworc3RhdGljIGludCBmYWlsZWRfdGVzdHM7CitzdGF0aWMgaW50IGN1 cnJlbnRfdGVzdDsKK3N0YXRpYyBjaGFyICp0b2RvX21lc2c7CisKK3N0YXRpYyBjaGFyICp2 c3RyZHVwZihjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykgUFJJTlRGX0FUVFIoMSww KTsKKwordm9pZCB0YXBfcGxhbihpbnQgdGVzdHMsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBQ UklOVEZfQVRUUigyLCAzKTsKKworaW50IHZva19hdF9sb2MoY29uc3QgY2hhciAqZmlsZSwg aW50IGxpbmUsIGludCB0ZXN0LCBjb25zdCBjaGFyICpmbXQsCisJCQkgICB2YV9saXN0IGFy Z3MpIFBSSU5URl9BVFRSKDQsMCk7CisKK2ludCBva19hdF9sb2MoY29uc3QgY2hhciAqZmls ZSwgaW50IGxpbmUsIGludCB0ZXN0LCBjb25zdCBjaGFyICpmbXQsIC4uLikKKwlQUklOVEZf QVRUUig0LCA1KTsKKworaW50IGlzX2F0X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGlu ZSwgY29uc3QgY2hhciAqZ290LCBjb25zdCBjaGFyICpleHBlY3RlZCwKKwkJCSAgY29uc3Qg Y2hhciAqZm10LCAuLi4pIFBSSU5URl9BVFRSKDUsIDYpOworCitpbnQgaXNudF9hdF9sb2Mo Y29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwKKwkJCQljb25z dCBjaGFyICpleHBlY3RlZCwgY29uc3QgY2hhciAqZm10LCAuLi4pCisJUFJJTlRGX0FUVFIo NSwgNik7CisKK2ludCBjbXBfb2tfYXRfbG9jKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5l LCBpbnQgYSwgY29uc3QgY2hhciAqb3AsIGludCBiLAorCQkJCSAgY29uc3QgY2hhciAqZm10 LCAuLi4pCisJUFJJTlRGX0FUVFIoNiwgNyk7CisKK2ludCBjbXBfbWVtX2F0X2xvYyhjb25z dCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3Qgdm9pZCAqZ290LAorCQkJCSAgIGNvbnN0 IHZvaWQgKmV4cGVjdGVkLCBzaXplX3QgbiwgY29uc3QgY2hhciAqZm10LCAuLi4pCisJUFJJ TlRGX0FUVFIoNiwgNyk7CisKK2ludCBkaWFnKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBQUklO VEZfQVRUUigxLCAyKTsKKworaW50IGJhaWxfb3V0KGludCBpZ25vcmUsIGNvbnN0IGNoYXIg KmZtdCwgLi4uKQorCVBSSU5URl9BVFRSKDIsIDMpOworCit2b2lkIHRhcF9za2lwKGludCBu LCBjb25zdCBjaGFyICpmbXQsIC4uLikKKwlQUklOVEZfQVRUUigyLCAzKTsKKwordm9pZCB0 YXBfdG9kbyhpbnQgaWdub3JlLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKwlQUklOVEZfQVRU UigyLCAzKTsKKworaW50IGxpa2VfYXRfbG9jKGludCBmb3JfbWF0Y2gsIGNvbnN0IGNoYXIg KmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpnb3QsCisJCQkJY29uc3QgY2hhciAqZXhw ZWN0ZWQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorCVBSSU5URl9BVFRSKDYsIDcpOworCitz dGF0aWMgY2hhciAqCit2c3RyZHVwZihjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykK K3sKKwljaGFyICpzdHI7CisJaW50IHNpemU7CisJdmFfbGlzdCBhcmdzMjsKKwl2YV9jb3B5 KGFyZ3MyLCBhcmdzKTsKKwlpZiAoIWZtdCkKKwkJZm10ID0gIiI7CisJc2l6ZSA9IHZzbnBy aW50ZihOVUxMLCAwLCBmbXQsIGFyZ3MyKSArIDI7CisJc3RyID0gbWFsbG9jKHNpemUpOwor CWlmICghc3RyKSB7CisJCXBlcnJvcigibWFsbG9jIGVycm9yIik7CisJCWV4aXQoMSk7CisJ fQorCXZzcHJpbnRmKHN0ciwgZm10LCBhcmdzKTsKKwl2YV9lbmQoYXJnczIpOworCXJldHVy biBzdHI7Cit9CisKK3ZvaWQKK3RhcF9wbGFuKGludCB0ZXN0cywgY29uc3QgY2hhciAqZm10 LCAuLi4pCit7CisJZXhwZWN0ZWRfdGVzdHMgPSB0ZXN0czsKKwlpZiAodGVzdHMgPT0gU0tJ UF9BTEwpIHsKKwkJY2hhciAqd2h5OworCQl2YV9saXN0IGFyZ3M7CisJCXZhX3N0YXJ0KGFy Z3MsIGZtdCk7CisJCXdoeSA9IHZzdHJkdXBmKGZtdCwgYXJncyk7CisJCXZhX2VuZChhcmdz KTsKKwkJcHJpbnRmKCIxLi4wICIpOworCQlkaWFnKCJTS0lQICVzXG4iLCB3aHkpOworCQll eGl0KDApOworCX0KKwlpZiAodGVzdHMgIT0gTk9fUExBTikgeworCQlwcmludGYoIjEuLiVk XG4iLCB0ZXN0cyk7CisJfQorfQorCitpbnQKK3Zva19hdF9sb2MoY29uc3QgY2hhciAqZmls ZSwgaW50IGxpbmUsIGludCB0ZXN0LCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykK K3sKKwljaGFyICpuYW1lID0gdnN0cmR1cGYoZm10LCBhcmdzKTsKKwlpZiAoIXRlc3QpIHsK KwkJcHJpbnRmKCJub3QgIik7CisJfQorCXByaW50Zigib2sgJWQiLCArK2N1cnJlbnRfdGVz dCk7CisJaWYgKCpuYW1lKQorCQlwcmludGYoIiAtICVzIiwgbmFtZSk7CisJaWYgKHRvZG9f bWVzZykgeworCQlwcmludGYoIiAjIFRPRE8iKTsKKwkJaWYgKCp0b2RvX21lc2cpCisJCQlw cmludGYoIiAlcyIsIHRvZG9fbWVzZyk7CisJfQorCXByaW50ZigiXG4iKTsKKwlpZiAoIXRl c3QpIHsKKwkJcHJpbnRmKCIjICAgRmFpbGVkICIpOworCQlpZiAodG9kb19tZXNnKQorCQkJ cHJpbnRmKCIoVE9ETykgIik7CisJCXByaW50ZigidGVzdCAiKTsKKwkJaWYgKCpuYW1lKQor CQkJcHJpbnRmKCInJXMnXG4jICAgIiwgbmFtZSk7CisJCXByaW50ZigiYXQgJXMgbGluZSAl ZC5cbiIsIGZpbGUsIGxpbmUpOworCQlpZiAoIXRvZG9fbWVzZykKKwkJCWZhaWxlZF90ZXN0 cysrOworCX0KKwlmcmVlKG5hbWUpOworCXJldHVybiB0ZXN0OworfQorCitpbnQKK29rX2F0 X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgaW50IHRlc3QsIGNvbnN0IGNoYXIg KmZtdCwgLi4uKQoreworCXZhX2xpc3QgYXJnczsKKwl2YV9zdGFydChhcmdzLCBmbXQpOwor CXZva19hdF9sb2MoZmlsZSwgbGluZSwgdGVzdCwgZm10LCBhcmdzKTsKKwl2YV9lbmQoYXJn cyk7CisJcmV0dXJuIHRlc3Q7Cit9CisKK3N0YXRpYyBpbnQKK215c3RyY21wKGNvbnN0IGNo YXIgKmEsIGNvbnN0IGNoYXIgKmIpCit7CisJcmV0dXJuIGEgPT0gYiA/IDAgOiAhYSA/IC0x IDogIWIgPyAxIDogc3RyY21wKGEsIGIpOworfQorCisjZGVmaW5lIGVxKGEsIGIpICghbXlz dHJjbXAoYSwgYikpCisjZGVmaW5lIG5lKGEsIGIpIChteXN0cmNtcChhLCBiKSkKKworaW50 Citpc19hdF9sb2MoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdv dCwgY29uc3QgY2hhciAqZXhwZWN0ZWQsCisJCSAgY29uc3QgY2hhciAqZm10LCAuLi4pCit7 CisJaW50IHRlc3QgPSBlcShnb3QsIGV4cGVjdGVkKTsKKwl2YV9saXN0IGFyZ3M7CisJdmFf c3RhcnQoYXJncywgZm10KTsKKwl2b2tfYXRfbG9jKGZpbGUsIGxpbmUsIHRlc3QsIGZtdCwg YXJncyk7CisJdmFfZW5kKGFyZ3MpOworCWlmICghdGVzdCkgeworCQlkaWFnKCIgICAgICAg ICBnb3Q6ICclcyciLCBnb3QpOworCQlkaWFnKCIgICAgZXhwZWN0ZWQ6ICclcyciLCBleHBl Y3RlZCk7CisJfQorCXJldHVybiB0ZXN0OworfQorCitpbnQKK2lzbnRfYXRfbG9jKGNvbnN0 IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpnb3QsIGNvbnN0IGNoYXIgKmV4 cGVjdGVkLAorCQkJY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJaW50IHRlc3QgPSBuZShn b3QsIGV4cGVjdGVkKTsKKwl2YV9saXN0IGFyZ3M7CisJdmFfc3RhcnQoYXJncywgZm10KTsK Kwl2b2tfYXRfbG9jKGZpbGUsIGxpbmUsIHRlc3QsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFy Z3MpOworCWlmICghdGVzdCkgeworCQlkaWFnKCIgICAgICAgICBnb3Q6ICclcyciLCBnb3Qp OworCQlkaWFnKCIgICAgZXhwZWN0ZWQ6IGFueXRoaW5nIGVsc2UiKTsKKwl9CisJcmV0dXJu IHRlc3Q7Cit9CisKK2ludAorY21wX29rX2F0X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQg bGluZSwgaW50IGEsIGNvbnN0IGNoYXIgKm9wLCBpbnQgYiwKKwkJCSAgY29uc3QgY2hhciAq Zm10LCAuLi4pCit7CisJaW50IHRlc3QgPSBlcShvcCwgInx8IikgPyBhIHx8IGIgOgorCQll cShvcCwgIiYmIikJCT8gYSAmJiBiIDoKKwkJZXEob3AsICJ8IikJCQk/IGEgfCBiIDoKKwkJ ZXEob3AsICJeIikJCQk/IGEgXiBiIDoKKwkJZXEob3AsICImIikJCQk/IGEgJiBiIDoKKwkJ ZXEob3AsICI9PSIpCQk/IGEgPT0gYiA6CisJCWVxKG9wLCAiIT0iKQkJPyBhICE9IGIgOgor CQllcShvcCwgIjwiKQkJCT8gYSA8IGIgOgorCQllcShvcCwgIj4iKQkJCT8gYSA+IGIgOgor CQllcShvcCwgIjw9IikJCT8gYSA8PSBiIDoKKwkJZXEob3AsICI+PSIpCQk/IGEgPj0gYiA6 CisJCWVxKG9wLCAiPDwiKQkJPyBhIDw8IGIgOgorCQllcShvcCwgIj4+IikJCT8gYSA+PiBi IDoKKwkJZXEob3AsICIrIikJCQk/IGEgKyBiIDoKKwkJZXEob3AsICItIikJCQk/IGEgLSBi IDoKKwkJZXEob3AsICIqIikJCQk/IGEgKiBiIDoKKwkJZXEob3AsICIvIikJCQk/IGEgLyBi IDoKKwkJZXEob3AsICIlIikJCQk/IGEgJSBiIDoKKwkJCQkJCQkgIGRpYWcoInVucmVjb2du aXplZCBvcGVyYXRvciAnJXMnIiwgb3ApOworCXZhX2xpc3QgYXJnczsKKwl2YV9zdGFydChh cmdzLCBmbXQpOworCXZva19hdF9sb2MoZmlsZSwgbGluZSwgdGVzdCwgZm10LCBhcmdzKTsK Kwl2YV9lbmQoYXJncyk7CisJaWYgKCF0ZXN0KSB7CisJCWRpYWcoIiAgICAlZCIsIGEpOwor CQlkaWFnKCIgICAgICAgICVzIiwgb3ApOworCQlkaWFnKCIgICAgJWQiLCBiKTsKKwl9CisJ cmV0dXJuIHRlc3Q7Cit9CisKK3N0YXRpYyBpbnQKK2ZpbmRfbWVtX2RpZmYoY29uc3QgY2hh ciAqYSwgY29uc3QgY2hhciAqYiwgc2l6ZV90IG4sIHNpemVfdCAqb2Zmc2V0KQoreworCXNp emVfdCBpOworCWlmIChhID09IGIpCisJCXJldHVybiAwOworCWlmICghYSB8fCAhYikKKwkJ cmV0dXJuIDI7CisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCQlpZiAoYVtpXSAhPSBi W2ldKSB7CisJCQkqb2Zmc2V0ID0gaTsKKwkJCXJldHVybiAxOworCQl9CisJfQorCXJldHVy biAwOworfQorCitpbnQKK2NtcF9tZW1fYXRfbG9jKGNvbnN0IGNoYXIgKmZpbGUsIGludCBs aW5lLCBjb25zdCB2b2lkICpnb3QsCisJCQkgICBjb25zdCB2b2lkICpleHBlY3RlZCwgc2l6 ZV90IG4sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCXNpemVfdCBvZmZzZXQ7CisJaW50 IGRpZmYgPSBmaW5kX21lbV9kaWZmKGdvdCwgZXhwZWN0ZWQsIG4sICZvZmZzZXQpOworCXZh X2xpc3QgYXJnczsKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCXZva19hdF9sb2MoZmlsZSwg bGluZSwgIWRpZmYsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworCWlmIChkaWZmID09 IDEpIHsKKwkJZGlhZygiICAgIERpZmZlcmVuY2Ugc3RhcnRzIGF0IG9mZnNldCAlbHUiLCBv ZmZzZXQpOworCQlkaWFnKCIgICAgICAgICBnb3Q6IDB4JTAyeCIsICgoY29uc3QgdW5zaWdu ZWQgY2hhciAqKWdvdClbb2Zmc2V0XSk7CisJCWRpYWcoIiAgICBleHBlY3RlZDogMHglMDJ4 IiwgKChjb25zdCB1bnNpZ25lZCBjaGFyICopZXhwZWN0ZWQpW29mZnNldF0pOworCX0gZWxz ZSBpZiAoZGlmZiA9PSAyKSB7CisJCWRpYWcoIiAgICAgICAgIGdvdDogJXMiLCBnb3QgPyAi bm90IE5VTEwiIDogIk5VTEwiKTsKKwkJZGlhZygiICAgIGV4cGVjdGVkOiAlcyIsIGV4cGVj dGVkID8gIm5vdCBOVUxMIiA6ICJOVUxMIik7CisJfQorCXJldHVybiAhZGlmZjsKK30KKwor aW50CitkaWFnKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCXZhX2xpc3QgYXJnczsKKwlj aGFyICptZXNnLCAqbGluZTsKKwlpbnQgaTsKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCWlm ICghZm10KSB7CisJCXZhX2VuZChhcmdzKTsKKwkJcmV0dXJuIDA7CisJfQorCW1lc2cgPSB2 c3RyZHVwZihmbXQsIGFyZ3MpOworCWxpbmUgPSBtZXNnOworCWZvciAoaSA9IDA7ICpsaW5l OyBpKyspIHsKKwkJY2hhciBjID0gbWVzZ1tpXTsKKwkJaWYgKCFjIHx8IGMgPT0gJ1xuJykg eworCQkJbWVzZ1tpXSA9ICdcMCc7CisJCQlwcmludGYoIiMgJXNcbiIsIGxpbmUpOworCQkJ aWYgKCFjKQorCQkJCWJyZWFrOworCQkJbWVzZ1tpXSA9IGM7CisJCQlsaW5lID0gbWVzZyAr IGkgKyAxOworCQl9CisJfQorCWZyZWUobWVzZyk7CisJdmFfZW5kKGFyZ3MpOworCXJldHVy biAwOworfQorCitpbnQKK2V4aXRfc3RhdHVzKHZvaWQpCit7CisJaW50IHJldHZhbCA9IDA7 CisJaWYgKGV4cGVjdGVkX3Rlc3RzID09IE5PX1BMQU4pIHsKKwkJcHJpbnRmKCIxLi4lZFxu IiwgY3VycmVudF90ZXN0KTsKKwl9IGVsc2UgaWYgKGN1cnJlbnRfdGVzdCAhPSBleHBlY3Rl ZF90ZXN0cykgeworCQlkaWFnKCJMb29rcyBsaWtlIHlvdSBwbGFubmVkICVkIHRlc3QlcyBi dXQgcmFuICVkLiIsIGV4cGVjdGVkX3Rlc3RzLAorCQkJIGV4cGVjdGVkX3Rlc3RzID4gMSA/ ICJzIiA6ICIiLCBjdXJyZW50X3Rlc3QpOworCQlyZXR2YWwgPSAyOworCX0KKwlpZiAoZmFp bGVkX3Rlc3RzKSB7CisJCWRpYWcoIkxvb2tzIGxpa2UgeW91IGZhaWxlZCAlZCB0ZXN0JXMg b2YgJWQgcnVuLiIsIGZhaWxlZF90ZXN0cywKKwkJCSBmYWlsZWRfdGVzdHMgPiAxID8gInMi IDogIiIsIGN1cnJlbnRfdGVzdCk7CisJCXJldHZhbCA9IDE7CisJfQorCXJldHVybiByZXR2 YWw7Cit9CisKK2ludAorYmFpbF9vdXQoaW50IGlnbm9yZSwgY29uc3QgY2hhciAqZm10LCAu Li4pCit7CisJdmFfbGlzdCBhcmdzOworCSh2b2lkKWlnbm9yZTsKKwl2YV9zdGFydChhcmdz LCBmbXQpOworCXByaW50ZigiQmFpbCBvdXQhICAiKTsKKwl2cHJpbnRmKGZtdCwgYXJncyk7 CisJcHJpbnRmKCJcbiIpOworCXZhX2VuZChhcmdzKTsKKwlleGl0KDI1NSk7CisJcmV0dXJu IDA7Cit9CisKK3ZvaWQKK3RhcF9za2lwKGludCBuLCBjb25zdCBjaGFyICpmbXQsIC4uLikK K3sKKwljaGFyICp3aHk7CisJdmFfbGlzdCBhcmdzOworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7 CisJd2h5ID0gdnN0cmR1cGYoZm10LCBhcmdzKTsKKwl2YV9lbmQoYXJncyk7CisJd2hpbGUg KG4tLSA+IDApIHsKKwkJcHJpbnRmKCJvayAlZCAiLCArK2N1cnJlbnRfdGVzdCk7CisJCWRp YWcoInNraXAgJXNcbiIsIHdoeSk7CisJfQorCWZyZWUod2h5KTsKK30KKwordm9pZAordGFw X3RvZG8oaW50IGlnbm9yZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBh cmdzOworCSh2b2lkKWlnbm9yZTsKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCXRvZG9fbWVz ZyA9IHZzdHJkdXBmKGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworfQorCit2b2lkCit0 YXBfZW5kX3RvZG8odm9pZCkKK3sKKwlmcmVlKHRvZG9fbWVzZyk7CisJdG9kb19tZXNnID0g TlVMTDsKK30KKworI2lmbmRlZiBfV0lOMzIKKy8qIENyZWF0ZSBhIHNoYXJlZCBtZW1vcnkg aW50IHRvIGtlZXAgdHJhY2sgb2Ygd2hldGhlciBhIHBpZWNlIG9mIGNvZGUgZXhlY3V0ZWQK K2RpZXMuIHRvIGJlIHVzZWQgaW4gdGhlIGRpZXNfb2sgYW5kIGxpdmVzX29rIG1hY3Jvcy4g ICovCitpbnQKK3RhcF90ZXN0X2RpZWQoaW50IHN0YXR1cykKK3sKKwlzdGF0aWMgaW50ICp0 ZXN0X2RpZWQgPSBOVUxMOworCWludCBwcmV2OworCWlmICghdGVzdF9kaWVkKSB7CisJCXRl c3RfZGllZCA9IG1tYXAoMCwgc2l6ZW9mKGludCksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUs CisJCQkJCQkgTUFQX1NIQVJFRCB8IE1BUF9BTk9OWU1PVVMsIC0xLCAwKTsKKwkJKnRlc3Rf ZGllZCA9IDA7CisJfQorCXByZXYgPSAqdGVzdF9kaWVkOworCSp0ZXN0X2RpZWQgPSBzdGF0 dXM7CisJcmV0dXJuIHByZXY7Cit9CisKK2ludAorbGlrZV9hdF9sb2MoaW50IGZvcl9tYXRj aCwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwKKwkJCWNv bnN0IGNoYXIgKmV4cGVjdGVkLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlpbnQgdGVz dDsKKwlyZWdleF90IHJlOworCXZhX2xpc3QgYXJnczsKKwlpbnQgZXJyID0gcmVnY29tcCgm cmUsIGV4cGVjdGVkLCBSRUdfRVhURU5ERUQpOworCWlmIChlcnIpIHsKKwkJY2hhciBlcnJi dWZbMjU2XTsKKwkJcmVnZXJyb3IoZXJyLCAmcmUsIGVycmJ1Ziwgc2l6ZW9mIGVycmJ1Zik7 CisJCWZwcmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIGNvbXBpbGUgcmVnZXggJyVzJzogJXMg YXQgJXMgbGluZSAlZFxuIiwKKwkJCQlleHBlY3RlZCwgZXJyYnVmLCBmaWxlLCBsaW5lKTsK KwkJZXhpdCgyNTUpOworCX0KKwllcnIgPSByZWdleGVjKCZyZSwgZ290LCAwLCBOVUxMLCAw KTsKKwlyZWdmcmVlKCZyZSk7CisJdGVzdCA9IGZvcl9tYXRjaCA/ICFlcnIgOiBlcnI7CisJ dmFfc3RhcnQoYXJncywgZm10KTsKKwl2b2tfYXRfbG9jKGZpbGUsIGxpbmUsIHRlc3QsIGZt dCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworCWlmICghdGVzdCkgeworCQlpZiAoZm9yX21h dGNoKSB7CisJCQlkaWFnKCIgICAgICAgICAgICAgICAgICAgJyVzJyIsIGdvdCk7CisJCQlk aWFnKCIgICAgZG9lc24ndCBtYXRjaDogJyVzJyIsIGV4cGVjdGVkKTsKKwkJfSBlbHNlIHsK KwkJCWRpYWcoIiAgICAgICAgICAgICAgICAgICAnJXMnIiwgZ290KTsKKwkJCWRpYWcoIiAg ICAgICAgICBtYXRjaGVzOiAnJXMnIiwgZXhwZWN0ZWQpOworCQl9CisJfQorCXJldHVybiB0 ZXN0OworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9saWJ0YXAvdGFwLmggYi9z cmMvdGVzdC9saWJ0YXAvdGFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmUzNjZhNmFmZmRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbGlidGFw L3RhcC5oCkBAIC0wLDAgKzEsMTE1IEBACisvKgorbGlidGFwIC0gV3JpdGUgdGVzdHMgaW4g QworQ29weXJpZ2h0IDIwMTIgSmFrZSBHZWxibWFuIDxnZWxibWFuQGdtYWlsLmNvbT4KK1Ro aXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTEdQTAorKi8KKworI2lmbmRlZiBfX1RB UF9IX18KKyNkZWZpbmUgX19UQVBfSF9fCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu ICJDIiB7CisjZW5kaWYKKworI2lmbmRlZiB2YV9jb3B5CisjaWZkZWYgX192YV9jb3B5Cisj ZGVmaW5lIHZhX2NvcHkgX192YV9jb3B5CisjZWxzZQorI2RlZmluZSB2YV9jb3B5KGQsIHMp ICgoZCkgPSAocykpCisjZW5kaWYKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKworaW50ICAgICB2b2tf YXRfbG9jICAgICAgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBpbnQgdGVzdCwgY29u c3QgY2hhciAqZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgYXJncyk7 CitpbnQgICAgIG9rX2F0X2xvYyAgICAgICAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUs IGludCB0ZXN0LCBjb25zdCBjaGFyICpmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg Li4uKTsKK2ludCAgICAgaXNfYXRfbG9jICAgICAgIChjb25zdCBjaGFyICpmaWxlLCBpbnQg bGluZSwgY29uc3QgY2hhciAqZ290LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmV4cGVjdGVkLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CitpbnQgICAgIGlzbnRf YXRfbG9jICAgICAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdv dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpleHBlY3RlZCwgY29u c3QgY2hhciAqZm10LCAuLi4pOworaW50ICAgICBjbXBfb2tfYXRfbG9jICAgKGNvbnN0IGNo YXIgKmZpbGUsIGludCBsaW5lLCBpbnQgYSwgY29uc3QgY2hhciAqb3AsCisgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK2ludCAgICAg Y21wX21lbV9hdF9sb2MgIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3Qgdm9p ZCAqZ290LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmV4cGVjdGVk LCBzaXplX3QgbiwgY29uc3QgY2hhciAqZm10LCAuLi4pOworaW50ICAgICBiYWlsX291dCAg ICAgICAgKGludCBpZ25vcmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK3ZvaWQgICAgdGFw X3BsYW4gICAgICAgIChpbnQgdGVzdHMsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK2ludCAg ICAgZGlhZyAgICAgICAgICAgIChjb25zdCBjaGFyICpmbXQsIC4uLik7CitpbnQgICAgIGV4 aXRfc3RhdHVzICAgICAodm9pZCk7Cit2b2lkICAgIHRhcF9za2lwICAgICAgICAoaW50IG4s IGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK3ZvaWQgICAgdGFwX3RvZG8gICAgICAgIChpbnQg aWdub3JlLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cit2b2lkICAgIHRhcF9lbmRfdG9kbyAg ICAodm9pZCk7CisKKyNkZWZpbmUgTk9fUExBTiAgICAgICAgICAtMQorI2RlZmluZSBTS0lQ X0FMTCAgICAgICAgIC0yCisjZGVmaW5lIG9rKC4uLikgICAgICAgICAgb2tfYXRfbG9jKF9f RklMRV9fLCBfX0xJTkVfXywgX19WQV9BUkdTX18sIE5VTEwpCisjZGVmaW5lIGlzKC4uLikg ICAgICAgICAgaXNfYXRfbG9jKF9fRklMRV9fLCBfX0xJTkVfXywgX19WQV9BUkdTX18sIE5V TEwpCisjZGVmaW5lIGlzbnQoLi4uKSAgICAgICAgaXNudF9hdF9sb2MoX19GSUxFX18sIF9f TElORV9fLCBfX1ZBX0FSR1NfXywgTlVMTCkKKyNkZWZpbmUgY21wX29rKC4uLikgICAgICBj bXBfb2tfYXRfbG9jKF9fRklMRV9fLCBfX0xJTkVfXywgX19WQV9BUkdTX18sIE5VTEwpCisj ZGVmaW5lIGNtcF9tZW0oLi4uKSAgICAgY21wX21lbV9hdF9sb2MoX19GSUxFX18sIF9fTElO RV9fLCBfX1ZBX0FSR1NfXywgTlVMTCkKKyNkZWZpbmUgcGxhbiguLi4pICAgICAgICB0YXBf cGxhbihfX1ZBX0FSR1NfXywgTlVMTCkKKyNkZWZpbmUgZG9uZV90ZXN0aW5nKCkgICByZXR1 cm4gZXhpdF9zdGF0dXMoKQorI2RlZmluZSBCQUlMX09VVCguLi4pICAgIGJhaWxfb3V0KDAs ICIiIF9fVkFfQVJHU19fLCBOVUxMKQorI2RlZmluZSBwYXNzKC4uLikgICAgICAgIG9rKDEs ICIiIF9fVkFfQVJHU19fKQorI2RlZmluZSBmYWlsKC4uLikgICAgICAgIG9rKDAsICIiIF9f VkFfQVJHU19fKQorCisjZGVmaW5lIHNraXAodGVzdCwgLi4uKSAgZG8ge2lmICh0ZXN0KSB7 dGFwX3NraXAoX19WQV9BUkdTX18sIE5VTEwpOyBicmVhazt9CisjZGVmaW5lIGVuZF9za2lw ICAgICAgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSB0b2RvKC4uLikgICAgICAgIHRhcF90 b2RvKDAsICIiIF9fVkFfQVJHU19fLCBOVUxMKQorI2RlZmluZSBlbmRfdG9kbyAgICAgICAg IHRhcF9lbmRfdG9kbygpCisKKyNkZWZpbmUgZGllc19vayguLi4pICAgICBkaWVzX29rX2Nv bW1vbigxLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgbGl2ZXNfb2soLi4uKSAgICBkaWVzX29r X2NvbW1vbigwLCBfX1ZBX0FSR1NfXykKKworI2lmZGVmIF9XSU4zMgorI2RlZmluZSBsaWtl KC4uLikgICAgICAgIHRhcF9za2lwKDEsICJsaWtlIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBX aW5kb3dzIikKKyNkZWZpbmUgdW5saWtlKC4uLikgICAgICB0YXBfc2tpcCgxLCAidW5saWtl IGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBXaW5kb3dzIikKKyNkZWZpbmUgZGllc19va19jb21t b24oLi4uKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgdGFwX3NraXAoMSwgIkRlYXRo IGRldGVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MiKQorI2Vsc2UKKyNkZWZp bmUgbGlrZSguLi4pICAgICAgICBsaWtlX2F0X2xvYygxLCBfX0ZJTEVfXywgX19MSU5FX18s IF9fVkFfQVJHU19fLCBOVUxMKQorI2RlZmluZSB1bmxpa2UoLi4uKSAgICAgIGxpa2VfYXRf bG9jKDAsIF9fRklMRV9fLCBfX0xJTkVfXywgX19WQV9BUkdTX18sIE5VTEwpCitpbnQgICAg IGxpa2VfYXRfbG9jICAgICAoaW50IGZvcl9tYXRjaCwgY29uc3QgY2hhciAqZmlsZSwgaW50 IGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZ290LCBjb25z dCBjaGFyICpleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpmbXQsIC4uLik7CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVz Lmg+CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KK2ludCB0YXBfdGVzdF9kaWVkIChpbnQgc3Rh dHVzKTsKKyNkZWZpbmUgZGllc19va19jb21tb24oZm9yX2RlYXRoLCBjb2RlLCAuLi4pICAg ICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaW50IGNwaWQ7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaW50IGl0X2RpZWQ7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGFw X3Rlc3RfZGllZCgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgY3BpZCA9IGZvcmsoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgc3dpdGNoIChjcGlkKSB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgICAgY2FzZSAtMTogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBlcnJvcigiZm9yayBlcnJv ciIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2Fz ZSAwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgICAgIGNsb3NlKDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgICAgIGNsb3NlKDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNvZGUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHRhcF90ZXN0X2RpZWQoMCk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGV4aXQoMCk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgaWYgKHdhaXRwaWQoY3BpZCwgTlVMTCwgMCkgPCAwKSB7ICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgICAgIHBlcnJvcigid2FpdHBpZCBlcnJvciIpOyAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaXRfZGllZCA9IHRh cF90ZXN0X2RpZWQoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYg KCFpdF9kaWVkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgICAgIHtjb2RlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgb2soZm9yX2RlYXRoID8gaXRfZGllZCA6ICFpdF9kaWVkLCAiIiBf X1ZBX0FSR1NfXyk7IFwKKyAgICB9IHdoaWxlICgwKQorI2VuZGlmCisKKyNpZmRlZiBfX2Nw bHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbWVz b24uYnVpbGQgYi9zcmMvdGVzdC9tZXNvbi5idWlsZAppbmRleCBjZDQ1Y2JmNTdmYi4uNjRm YTc1MWE1YTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21lc29uLmJ1aWxkCisrKyBiL3NyYy90 ZXN0L21lc29uLmJ1aWxkCkBAIC04LDYgKzgsNyBAQCBzdWJkaXIoJ3Bvc3RtYXN0ZXInKQog c3ViZGlyKCdyZWNvdmVyeScpCiBzdWJkaXIoJ3N1YnNjcmlwdGlvbicpCiBzdWJkaXIoJ21v ZHVsZXMnKQorc3ViZGlyKCdkZm9yJykKIAogaWYgc3NsLmZvdW5kKCkKICAgc3ViZGlyKCdz c2wnKQotLSAKMi41My4wCgo= --------------sLR6ZLnPAxZtB7bFceJnj5Kn Content-Type: text/x-patch; charset=UTF-8; name="v09-0002-Implement-Delta-Frame-of-Reference-compression.patch" Content-Disposition: attachment; filename*0="v09-0002-Implement-Delta-Frame-of-Reference-compression.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA5MmFlOWFhYjA0NmMzZWNlNDZjYzc5ODQyNmMwNDA5NDdhZGNjYjJiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYwOSAyLzNdIEltcGxlbWVudCBEZWx0YSBGcmFtZSBvZiBSZWZlcmVuY2UgY29tcHJl c3Npb24uCgpJbXBsZW1lbnQgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBiYXNlZCBvbiB0 aGUgRGVsdGEgRnJhbWUgb2YKUmVmZXJlbmNlIHRlY2huaXF1ZSAoREZPUikuCgpERm9SIHN1 cHBvcnRzIGJvdGggZXh0ZXJuYWwgbWVtb3J5IChvdXRlciBtZW1vcnkpIHByb3ZpZGVkIGJ5 IGEgY2FsbGVyCmFuZCBhdXRvbWF0aWNhbGx5IG1hbmFnZWQgbWVtb3J5LCBhbGxvY2F0ZWQg YnkgbWVhbnMgb2YgbWFsbG9jLCBwYWxsb2MKb3Igc2ltaWxhciBmdW5jdGlvbnMuIE1lbW9y eSBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBkZWZpbmVkCmR1cmluZyBpbml0 aWFsaXphdGlvbi4gQWxsIHN1YnNlcXVlbnQgb3BlcmF0aW9ucyBmb2xsb3cgdGhpcwpjb25m aWd1cmF0aW9uLiBGb3IgZXhhbXBsZSwgYSBjYWxsZXIgY2FuIHBsYWNlIGEgYnVmZmVyIG9u IHRoZSBzdGFjayB0bwphdm9pZCBoZWFwIGFsbG9jYXRpb24gYW5kIHBhc3MgdGhlIGJ1ZmZl ciB0byBhIERGb1IgdW5pdC4gQXMgYSByZXN1bHQsCnRoZSBwYWNraW5nIGFuZCB1bnBhY2tp bmcgcHJvY2Vzc2VzIGV4Y2x1ZGUgZHluYW1pYyBhbGxvY2F0aW9uLgoKVGhlIERGb1IgdW5p dCBpcyBpbXBsZW1lbnRlZCBhcyBhIHNldCBvZiB0ZW1wbGF0ZXMuIERldmVsb3BlcnMgY2Fu CmdlbmVyYXRlIERGb1IgaW1wbGVtZW50YXRpb25zIGZvciBhbnkgdW5zaWduZWQgaW50ZWdl ciB0eXBlICh1aW50OF90LAp1aW50MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90KS4gVGhlIGRm b3JfdTE2IHVuaXQgaXMgaW1wbGVtZW50ZWQuCgpUaGUgdW5pdCB0ZXN0IGlzIGltcGxlbWVu dGVkIGFzIGEgQyBwcm9ncmFtIChFTEYgZXhlY3V0YWJsZSkuIFRoZSB0ZXN0CmNhbiBiZSBy dW4gd2l0aCB0aGUgJ21ha2UgY2hlY2stdW5pdCcuIFRlc3RzIHN1cHBvcnQgdGhlIFRBUCBw cm90b2NvbAphbmQgYXJlIGV4ZWN1dGVkIHVzaW5nIHRoZSBQcm92ZSB1dGlsaXR5LgoKQXV0 aG9yOiBFdmdlbnkgVm9yb3BhZXYgPGV2Z2VueS52b3JvcGFldkB0YW50b3JsYWJzLmNvbT4g PGV2b3JvcEBnbWFpbC5jb20+ClJldmlld2VkIGJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1A eWFuZGV4LXRlYW0ucnU+Ci0tLQogc3JjL2JhY2tlbmQvbGliL01ha2VmaWxlLmRmb3IgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwuYyAgICAgICAgfCA2MTgg KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvbGliL2Rmb3JfdTE2 LmMgICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvbGliL21lc29uLmJ1aWxkICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaCAgICAgICAgfCAgMjcg KysKIHNyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oIHwgMTI1ICsrKysrKwog c3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaCAgfCAgMjkgKysKIHNyYy9pbmNs dWRlL2xpYi9kZm9yX3UxNi5oICAgICAgICAgIHwgIDEzICsKIHNyYy9pbmNsdWRlL2xpYi9k Zm9yX3UxNl9jb25maWcuaCAgIHwgICA0ICsKIHNyYy90ZXN0L2Rmb3IvLmdpdGlnbm9yZSAg ICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L2Rmb3IvTWFrZWZpbGUgICAgICAgICAgICAg IHwgICAzICstCiBzcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgMiAr CiBzcmMvdGVzdC9kZm9yL3Rlc3RfZGZvcl91MTYuYyAgICAgICB8IDM3MSArKysrKysrKysr KysrKysrKwogMTMgZmlsZXMgY2hhbmdlZCwgMTIwMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2xpYi9kZm9yX3UxNi5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9kZm9yX3UxNi5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdTE2X2NvbmZpZy5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvZGZvci90ZXN0X2Rmb3JfdTE2LmMKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9saWIvTWFrZWZpbGUuZGZvciBiL3NyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZS5k Zm9yCmluZGV4IGI5M2M2ZTc4NjQ0Li5iZWI3MDM1ZjE1NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbGliL01ha2VmaWxlLmRmb3IKKysrIGIvc3JjL2JhY2tlbmQvbGliL01ha2VmaWxl LmRmb3IKQEAgLTIsNCArMiw1IEBACiAKIE9CSlNfREZPUiA6PSBcCiAJYml0cGFja191MTYu byBcCisJZGZvcl91MTYubyBcCiAJdmVjdF91MTYubwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbGliL2Rmb3JfdGVtcGwuYyBiL3NyYy9iYWNrZW5kL2xpYi9kZm9yX3RlbXBsLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhZTc5YWRmYjY2Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwuYwpAQCAtMCwwICsx LDYxOCBAQAorLyoKKyAqIGRmb3IuYworICoKKyAqIERGT1JfVEVNUEwgaW1wbGVtZW50cyB0 aGUgdmFyaWFudCBvZiB0aGUgRnJhbWUgb2YgUmVmZXJlbmNlIHdpdGggRGVsdGEKKyAqIGNv bnRhaW5lciBhbmQgY29ycmVzcG9uZGluZyBhbGdvcml0aG1zLgorICoKKyAqIFRoZSB0eXBl IG9mIG9yaWdpbmFsIGl0ZW1zIGlzIGRlZmluZWQgd2l0aCB0aGUgaXRlbV90IG1hY3JvLiBp dGVtX3QgbXVzdCBiZQorICogYW4gdW5zaWduZWQgaW50ZWdlciAodWludDhfdCwgdWludDE2 X3QsIC4uLiB1aW50NjRfdCkKKyAqCisgKiBFYWNoIGJpdCB2ZWN0b3IsIGhhdmluZyBiZWVu IHNlcmlhbGlzZWQsIHJlcHJlc2VudHMgbmV4dCBzdHJ1Y3R1cmU6CisgKgorICogfCBkZWx0 YXMgfCBleGNlcHRpb25zIHwgZXhjZXB0aW9ucyBwb3NpdGlvbnMgfAorICoKKyAqIFRoZSBk ZWx0YSBpcyBhIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgY3VycmVudCBpdGVtIGFuZCB0aGUg cHJldmlvdXMgb25lLgorICogVGhlIGRlbHRhIG9mIHRoZSBmaXJzdCBpdGVtICh0aGUgbWVt YmVyIGhhdmluZyB0aGUgemVybyBpbmRleCkgaXMgaXRzIGFjdHVhbAorICogdmFsdWU6IGRl bHRhWzBdID0gbVswXS0wID0gbVswXS4gQSBoYXZpbmcgc2VyaWFsaXNlZCBkZWx0YSBpcyBh IHNlcXVlbmNlIG9mCisgKiBiaXRzLiBFYWNoIHNlcmlhbGlzZWQgZGVsdGEgaW4gJ2RlbHRh cycgaGFzIGEgZml4ZWQgYml0IHdpZHRoLiBJZiB0aGUgZGVsdGEncworICogd2lkdGggZXhj ZWVkcyB0aGUgYWxsb3dlZCBzaXplIG9mIGEgZGVsdGEgaW4gJ2RlbHRhcycsIHRoZSBoaWdo ZXIgYml0cyBvZiB0aGlzCisgKiBkZWx0YSBpcyBwdXQgaW50byBleGNlcHRpb25zLgorICov CisKKyNpbmNsdWRlICJsaWIvZGZvcl90ZW1wbF9zdGFwbGUuaCIKKworaW50IGRmb3JfY2Fs Y19kZWx0YXMoc2l6ZV90IGNudCwgY29uc3QgaXRlbV90IGFycltdLCB2ZWN0X3QgKnZEZWx0 YXMsCisJCQkJCSB1bmlxc29ydHZlY3RfdCAqdXN2RGVsdGFXaWR0aHMsCisJCQkJCSB2ZWN0 X3QgKnZXaWR0aENvdW50ZXJzKTsKKworaW50IGRmb3JfY2FsY193aWR0aChzaXplX3QgY250 RGVsdGEsCisJCQkJCWNvbnN0IHVuaXFzb3J0dmVjdF90ICp1c3ZEZWx0YVdpZHRocywKKwkJ CQkJY29uc3QgdmVjdF90ICp2V2lkdGhDb3VudGVycywgc2l6ZV90ICp3aWR0aCwKKwkJCQkJ c2l6ZV90ICpjbnRFeGNlcHRpb25zKTsKKworaW50IGRmb3JfYW5hbHl6ZShzaXplX3QgY250 LCBjb25zdCBpdGVtX3QgYXJyW10sCisJCQkgZGZvcl9tZXRhX3QgKmRmb3IsIHZlY3RfdCAq dkRlbHRhcywKKwkJCSB1bmlxc29ydHZlY3RfdCAqdXN2RXhjUG9zKTsKKworaW50IGRmb3Jf cGFjayhzaXplX3QgY250LCBjb25zdCBpdGVtX3QgYXJyW10sIGV4Y2FsZ190IGlzRXhjVXNh Z2UsCisJCQkgIGRmb3JfbWV0YV90ICpkZm9yLCBzaXplX3QgYnVmU2l6ZSwgdWludDhfdCBi dWZbXSk7CisKK2ludCBkZm9yX3VucGFjayhjb25zdCBkZm9yX21ldGFfdCAqZGZvciwgdW5p cXNvcnR2ZWN0X3QgKnZWYWxzLCBzaXplX3QgYnVmU2l6ZSwKKwkJCQl1aW50OF90IGJ1Zltd KTsKKwordm9pZCBkZm9yX2NsZWFyX21ldGEoZGZvcl9tZXRhX3QgKmRmb3IpOworCitkZm9y X3N0YXRzX3QgZGZvcl9jYWxjX3N0YXRzKGRmb3JfbWV0YV90IGRmb3IpOworCitzaXplX3Qg ZGZvcl9jYWxjX25ieXRlcyhkZm9yX21ldGFfdCBkZm9yKTsKKworLyoKKyAqIENhbGN1bGF0 ZSBkZWx0YXMKKyAqCisgKiB2V2lkdGhDb3VudGVycyBiZWluZyBlcXVhbCB0byBOVUxMIG1l YW5zICdEb24ndCBjYWxjdWxhdGUgY291bnRzIG9mIHdpZHRocycuCisgKiBJbiB0aGlzIGNh c2UgdXN2RGVsdGFXaWR0aCBjb21wcmlzZSBvbmx5IG9uZSBtZW1iZXIgbVswXSB3aGljaCBz YXZlcyBtYXgKKyAqIHdpZHRoIG9mIGRlbHRhLCB3aGljaCBjYW4gYmUgdXNlZCBieSBjYWxs ZXIuCisgKgorICovCitpbnQKK2Rmb3JfY2FsY19kZWx0YXMoc2l6ZV90IGNudCwgY29uc3Qg aXRlbV90IGFycltdLCB2ZWN0X3QgKnZEZWx0YXMsCisJCQkJIHVuaXFzb3J0dmVjdF90ICp1 c3ZEZWx0YVdpZHRocywgdmVjdF90ICp2V2lkdGhDb3VudGVycykKK3sKKwlpdGVtX3QgZGVs dGE7CisJaXRlbV90IHByZXY7IC8qIHZhbHVlIG9mIHByZXZpb3VzIG51bWJlciovCisJc2l6 ZV90IHdpZHRoOworCXVzdl9pbnNfcmVzX3QgaW5zV2lkdGhJbnNlcnQ7CisKKwlpZiAodkRl bHRhcyA9PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlpZiAodldpZHRoQ291bnRlcnMgPT0g TlVMTCkKKwkJdXN2X2luc2VydCh1c3ZEZWx0YVdpZHRocywgMCk7CisKKwlwcmV2ID0gMDsK Kwlmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNudDsgaisrKSB7CisJCWRlbHRhID0gYXJyW2pd IC0gcHJldjsKKwkJdmVjdF9hcHBlbmQodkRlbHRhcywgZGVsdGEpOworCQlwcmV2ID0gYXJy W2pdOworCQl3aWR0aCA9IHdpZHRoX2Zyb21fdmFsKGRlbHRhKTsKKworCQlpZiAodldpZHRo Q291bnRlcnMgPT0gTlVMTCkgeworCQkJaWYgKHVzdkRlbHRhV2lkdGhzLT5tWzBdIDwgd2lk dGgpCisJCQkJdXN2RGVsdGFXaWR0aHMtPm1bMF0gPSB3aWR0aDsKKwkJfSBlbHNlIHsKKwkJ CWluc1dpZHRoSW5zZXJ0ID0gdXN2X2luc2VydCh1c3ZEZWx0YVdpZHRocywgd2lkdGhfZnJv bV92YWwoZGVsdGEpKTsKKworCQkJaWYgKGluc1dpZHRoSW5zZXJ0LnN0ID09IFVTVl9JTlNf TkVXKQorCQkJCXZlY3RfaW5zZXJ0KHZXaWR0aENvdW50ZXJzLCBpbnNXaWR0aEluc2VydC5w b3MsIChpdGVtX3QpMSk7CisJCQllbHNlIGlmIChpbnNXaWR0aEluc2VydC5zdCA9PSBVU1Zf SU5TX0VYSVNUUykKKwkJCQl2V2lkdGhDb3VudGVycy0+bVtpbnNXaWR0aEluc2VydC5wb3Nd Kys7CisJCQllbHNlCisJCQkJcmV0dXJuIC0xOworCQl9CisJfQorCXJldHVybiAwOworfQor CisvKgorICogQ2FsY3VsYXRlIHdpZHRoIG9mIHNob3J0IGRlbHRhcywgd2lkdGggb2YgZXhj ZXB0aW9ucywgYW5kIG51bWJlciBvZgorICogZXhjZXB0aW9ucworICovCitpbnQKK2Rmb3Jf Y2FsY193aWR0aChzaXplX3QgY250RGVsdGEsIGNvbnN0IHVuaXFzb3J0dmVjdF90ICp1c3ZE ZWx0YVdpZHRocywKKwkJCQljb25zdCB2ZWN0X3QgKnZXaWR0aENvdW50ZXJzLCBzaXplX3Qg KndpZHRoLAorCQkJCXNpemVfdCAqY250RXhjZXB0aW9ucykKK3sKKyNkZWZpbmUgTUlOX0RF TFRBU19RVUFOVElUWV9BTExPV0lOR19FWENFUFRJT05TIDQKKworCXNpemVfdCBjbnRTaG9y dERlbHRhczsgLyogbnVtYmVyIG9mIGRlbHRhcyBwcmVzZW50ZWQgd2l0aG91dCBleGNlcHRp b25zICovCisJc2l6ZV90IGluZHhXaWR0aDsJLyogdGhlIHdpZHRoIG9mIHNob3J0IGRlbHRh cyAoaW5kZXggZnJvbSB2V2lkdGhDb3VudGVycworCQkJCQkJICogKGFuZCBmcm9tIHZEZWx0 YVdpZHRoIGFjY29yZGluZ2x5KQorCQkJCQkJICovCisJaWYgKHVzdkRlbHRhV2lkdGhzID09 IE5VTEwgfHwgdldpZHRoQ291bnRlcnMgPT0gTlVMTCB8fCB3aWR0aCA9PSBOVUxMIHx8CisJ CWNudEV4Y2VwdGlvbnMgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCisJY250U2hvcnREZWx0 YXMgPSBjbnREZWx0YTsKKwlpbmR4V2lkdGggPSB1c3ZEZWx0YVdpZHRocy0+Y250IC0gMTsg LyogY291bnRlciBpbnRvIGluZGV4ICovCisJKmNudEV4Y2VwdGlvbnMgPSAwOworCisJLyoK KwkgKiBIZXJlIHdlIHRyeSB0byBkZWNyZWFzZSB0aGUgd2lkdGggb2Ygc2hvcnQgZGVsdGFz IGluIG9yZGVyIHRvIGNvbXByZXNzCisJICogdGhlIGFycmF5IG9mIGRlbHRhcyBpbiB0aGUg bWVhbnRpbWUgd2UgYXJlIGVhZ2VyIHRvIGNvdmVyIG5vIGxlc3MgdGhhbgorCSAqIDkwJSBv ZiBkZWx0YXMgd2UgaGF2ZS4gSXQgaXMgYW4gaGV1cmlzdGljIGFuYWx5c2lzIGJhc2VkIG9u IHRoZQorCSAqIHN1Z2dlc3Rpb24gIm5vIGxlc3MgdGhhbiA5MCUgb2YgZGVsdGFzIHdlIGhh dmUiLgorCSAqCisJICogVE9ETzogYW5hbHl6aW5nIHdlIG1pZ2h0IHdhbnQgY2FsdWxhdGUg dGhlIGZ1bGwgc2l6ZSBvZiB0aGUgcGFjayBmb3IgZWFjaAorCSAqIHZhcmlhbnQgb2YgdGhl IHdpZHRoLgorCSAqLworCWlmIChjbnREZWx0YSA+PSBNSU5fREVMVEFTX1FVQU5USVRZX0FM TE9XSU5HX0VYQ0VQVElPTlMpIHsKKwkJc2l6ZV90IHN6TWluQ292ZXJhZ2U7IC8qIHRocmVz aG9sZCAqLworCQlzaXplX3QgajsKKworCQlpZiAoY250RGVsdGEgPj0gMTApCisJCQlzek1p bkNvdmVyYWdlID0gY250RGVsdGEgLSBjbnREZWx0YSAvIDEwOworCQllbHNlCisJCQlzek1p bkNvdmVyYWdlID0gY250RGVsdGEgLSAxOworCisJCWogPSBpbmR4V2lkdGg7CisKKwkJd2hp bGUgKGogPiAwKSB7CisJCQlpZiAoY250U2hvcnREZWx0YXMgLSB2V2lkdGhDb3VudGVycy0+ bVtqXSA8IHN6TWluQ292ZXJhZ2UpCisJCQkJYnJlYWs7CisKKwkJCWNudFNob3J0RGVsdGFz IC09IHZXaWR0aENvdW50ZXJzLT5tW2pdOworCQkJai0tOworCQkJaW5keFdpZHRoID0gajsK KwkJfQorCQkqY250RXhjZXB0aW9ucyA9IGNudERlbHRhIC0gY250U2hvcnREZWx0YXM7CisJ fQorCisJKndpZHRoID0gdXN2RGVsdGFXaWR0aHMtPm1baW5keFdpZHRoXTsKKwlyZXR1cm4g MDsKK30KKworLyoKKyAqIGRmb3JfYW5hbHl6ZQorICogQW5hbHl6ZSBpbnB1dCBhcnJheSwg Y2FsY3VsYXRlIGRlbHRhcyBhbmQgdGhlaXIgd2lkdGgsIGRlZmluZSBleGNlcHRpb25zIGFu ZAorICogdGhlaXIgcG9zaXRpb25zLiBSZXR1cm5zIHRoZW0gdGhyb3VnaCB0aGUgZGZvciwg dkRlbHRhcywgdXN2RXhjUG9zLiBJZgorICogdXN2RXhjUG9zID09IE5VTEwgLSBkb24ndCBj YWxjdWxhdGUgZXhjZXB0aW9ucy4KKyAqCisgKiBkZm9yX2FuYWx5emUgZnVuY3Rpb24gZG9l cyBub3QgdXNlIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gZm9yIGl0cworICogbG9jYWwg Y29udGFpbmVycy4KKyAqCisgKiBBIGNhbGxlciBoYXMgdG8gY29udHJvbCB3aGV0aGVyIHZE ZWx0YXMgYW5kIHVzdkV4Y1BvcyB1c2Ugb3V0ZXIgbWVtb3J5CisgKiBwcm92aWRlZCBieSBj YWxsZXIgb3IgbWFuYWdlIG1lbW9yeSBhbGxvY2F0aW9uIGF1dG9tYXRpY2FsbHksIHdoaWNo IGRlZmluZXMKKyAqIHdoZXRoZXIgdmVjdF9pbnNlcnQgYW5kIHZlY3RfYXBwZW5kIGZ1bmN0 aW9ucywgaW52b2tlZCBmcm9tIGhlcmUsIHVzZSBkeW5hbWljCisgKiBtZW1vcnkgb3Igbm90 LgorICoKKyAqIEEgY2FsbGVyIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB0aGF0IGRmb3Jf bWV0YV90IGRmb3IgYXJlIGdvaW5nIHRvIGJlCisgKiBudWxsaWZpZWQgaW4gdGhpcyBmdW5j dGlvbiwgc28gaXQgc2hvdWxkIG5vdCBoYXZlIGFueSBtZWFuaW5nZnVsbCBkYXRhIGJ5Cisg KiBzdGFydCBvZiBkZm9yX2FuYWx5emUsIGVzcGVjaWFsbHkgaXRzIHBhY2sgZmllbGQgc2hv dWxkIG5vdCBiZSB1c2VkIGFzIGEKKyAqIHBvaW50ZXIgb24gZHluYW1pYyBtZW1vcnksIG90 aGVyd2lzZSBtZW1vcnkgbGVha2FnZSBpcyBwb3NzaWJsZS4KKyAqCisgKi8KK2ludAorZGZv cl9hbmFseXplKHNpemVfdCBjbnQsIGNvbnN0IGl0ZW1fdCBhcnJbXSwgLyogaW5wdXQgKi8K KwkJCSBkZm9yX21ldGFfdCAqZGZvciwgdmVjdF90ICp2RGVsdGFzLAorCQkJIHVuaXFzb3J0 dmVjdF90ICp1c3ZFeGNQb3MpIC8qIG91dHB1dCAqLworeworI2RlZmluZSBERUxUQV9XSURU SF9NQVhfTlVNQkVSIChzaXplb2YoaXRlbV90KSAqIDgpCisJdW5pcXNvcnR2ZWN0X3QgdXN2 RGVsdGFXaWR0aHM7CisJaXRlbV90IGJ1ZkRlbHRhV2lkdGhbREVMVEFfV0lEVEhfTUFYX05V TUJFUl07CisJdmVjdF90IHZXaWR0aENvdW50ZXJzOworCWl0ZW1fdCBidWZXaWR0aENvdW50 ZXJzW0RFTFRBX1dJRFRIX01BWF9OVU1CRVJdOworCWl0ZW1fdCBtYXNrOworCWludCByZXMg PSAtMTsKKworCWV4Y2FsZ190IGlzRXhjVXNhZ2UgPSAodXN2RXhjUG9zID09IE5VTEwpID8g REZPUl9FWENfRE9OVF9VU0UgOgorCQkJCQkJCQkJCQkJREZPUl9FWENfVVNFOworCisJaWYg KGRmb3IgPT0gTlVMTCkKKwkJZ290byBkZm9yX2FuYWx5emVfZXJyb3I7CisKKwltZW1zZXQo ZGZvciwgMCwgc2l6ZW9mKGRmb3JfbWV0YV90KSk7CisKKwlpZiAoY250ID09IDApCisJCS8q IGRmb3ItPml0ZW1fY250ID0gMDsgKi8gLyogaXQncyBiZWVuIGFscmVhZHkgZG9uZSB3aXRo IG1lbXNldCAqLworCQlnb3RvIGRmb3JfYW5hbHl6ZV9yZXQ7CisJZWxzZSBpZiAoYXJyID09 IE5VTEwpCisJCWdvdG8gZGZvcl9hbmFseXplX2Vycm9yOworCisJaWYgKDAgIT0gdmVjdF9p bml0KCZ1c3ZEZWx0YVdpZHRocywgREVMVEFfV0lEVEhfTUFYX05VTUJFUiwgYnVmRGVsdGFX aWR0aCkpCisJCWdvdG8gZGZvcl9hbmFseXplX2Vycm9yOworCisJaWYgKGlzRXhjVXNhZ2Ug PT0gREZPUl9FWENfVVNFKQorCXsKKwkJaWYgKDAgIT0KKwkJCXZlY3RfaW5pdCgmdldpZHRo Q291bnRlcnMsIERFTFRBX1dJRFRIX01BWF9OVU1CRVIsCisJCQkJCSAgYnVmV2lkdGhDb3Vu dGVycykpCisJCQlnb3RvIGRmb3JfYW5hbHl6ZV9lcnJvcjsKKwl9CisKKwlkZm9yLT5pdGVt X2NudCA9IGNudDsKKworCWlmICgwICE9CisJCWRmb3JfY2FsY19kZWx0YXMoZGZvci0+aXRl bV9jbnQsIGFyciwgdkRlbHRhcywgJnVzdkRlbHRhV2lkdGhzLAorCQkJCQkJIChpc0V4Y1Vz YWdlID09IERGT1JfRVhDX1VTRSkgPyAmdldpZHRoQ291bnRlcnMgOiBOVUxMKSkKKwkJZ290 byBkZm9yX2FuYWx5emVfZXJyb3I7CisKKwlBc3NlcnQoY250ID09IHZEZWx0YXMtPmNudCk7 CisJQXNzZXJ0KHVzdkRlbHRhV2lkdGhzLmNudCA+IDApOworCisJaWYgKGlzRXhjVXNhZ2Ug PT0gREZPUl9FWENfVVNFKQorCXsKKwkJaWYgKDAgIT0KKwkJCWRmb3JfY2FsY193aWR0aCh2 RGVsdGFzLT5jbnQsICZ1c3ZEZWx0YVdpZHRocywgJnZXaWR0aENvdW50ZXJzLAorCQkJCQkJ CSZkZm9yLT5kZWx0YV93aWQsICZkZm9yLT5leGNfY250KSkKKwkJCWdvdG8gZGZvcl9hbmFs eXplX2Vycm9yOworCX0KKwllbHNlCisJeworCQlkZm9yLT5kZWx0YV93aWQgPQorCQkJdXN2 RGVsdGFXaWR0aHMubVt1c3ZEZWx0YVdpZHRocy5jbnQgLSAxXTsgLyogbWF4IHdpZHRoICov CisJCWRmb3ItPmV4Y19jbnQgPSAwOworCX0KKworCWRmb3ItPmV4Y193aWQgPSB1c3ZEZWx0 YVdpZHRocy5tW3VzdkRlbHRhV2lkdGhzLmNudCAtIDFdIC0gZGZvci0+ZGVsdGFfd2lkOwor CisJLyogQSBtYXNrIGxvb2tzIGxpa2UgMDAwMTExMS4gSXQgaXMgYWxzbyB0aGUgbWF4IHZh bHVlIG9mIGEgc2hvcnQgZGVsdGEgKi8KKwltYXNrID0gd2lkdGhfdG9fbWFzayhkZm9yLT5k ZWx0YV93aWQpOworCisJZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2RGVsdGFzLT5jbnQ7IGkr KykKKwl7CisJCWlmICh2RGVsdGFzLT5tW2ldID4gbWFzaykKKwkJeworCQkJQXNzZXJ0KGlz RXhjVXNhZ2UgPT0gREZPUl9FWENfVVNFKTsKKwkJCWlmICgwICE9IHZlY3RfYXBwZW5kKHVz dkV4Y1BvcywgKGl0ZW1fdClpKSkKKwkJCQlnb3RvIGRmb3JfYW5hbHl6ZV9lcnJvcjsKKwkJ fQorCX0KKwlBc3NlcnQoZGZvci0+ZGVsdGFfd2lkICsgZGZvci0+ZXhjX3dpZCA8PSBzaXpl b2YoaXRlbV90KSAqIDgpOworCXJlcyA9IDA7CitkZm9yX2FuYWx5emVfcmV0OgorCXJldHVy biByZXM7CitkZm9yX2FuYWx5emVfZXJyb3I6CisJLyogZGZvcl9hbmFseXplIGRvZXNuJ3Qg YWZmZWN0IHRoZSBwYWNrIGZpZWxkIChkb2Vzbid0IGFsbG9jYXRlLCBkZWxldGUgb3IKKwkg KiBvdGhlcndpc2UpLCBzbyB3ZSBjYW4gbnVsbGlmeSB0aGUgd2hvbGUgZGZvciBhbmQgaXQK KwkgKiBpcyBzYWZlLCBubyBsZWFrYWdlICovCisJbWVtc2V0KGRmb3IsIDAsIHNpemVvZihk Zm9yX21ldGFfdCkpOworCXJlcyA9IC0xOworCWdvdG8gZGZvcl9hbmFseXplX3JldDsKK30K KworLyoKKyAqIGRmb3JfcGFjaworICoKKyAqIFRoZSBpbnB1dCBhcnJheSBhcnIgaGFzIHRv IGJlIHNvcnRlZC4KKyAqCisgKiBJZiBhIGNhbGxlciBuZWVkcyB0byBhdm9pZCB1c2luZyBk eW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uLCB0aGV5IGhhdmUgdG8KKyAqIHByb3ZpZGUgdGhl IGV4dGVybmFsIG1lbW9yeSBidWZmZXIuIFRoZSBzaXplIG9mIHRoaXMgYnVmZmVyIHNob3Vs ZCBiZSBub3QKKyAqIGxlc3MgdGhhbiA0ICogY250ICogc2l6ZW9mKGl0ZW1fdCkuIEl0IHdp bGwgYmUgdXNlZCBmb3IgYXJyYXlzIHBvaW50ZWQgYnkKKyAqICooZGZvci0+cGFjayksICoo dkRlbHRhcy0+bSksICoodkV4Y1Bvc0RlbHRhcy0+bSksICoodXN2RXhjUG9zLT5tKS4KKyAq CisgKiBJZiBkeW5hbWljIGFsbG9jYXRpb24gaGFzIGJlZW4gdXNlZCBieSB0aGUgZGZvcl9w YWNrLCBhIGNhbGxlciBoYXMgdG8gZnJlZQorICogdGhlIHBpZWNlIG9mIG1lbW9yeSBwb2lu dGVkIGJ5IGRmb3ItPnBhY2ssIHNpbmNlIGl0IGlzIGFsb2NhdGVkIGJ5IHRoZQorICogZGZv cl9wYWNrIHdpdGggREZPUl9NQUxMT0MuIEZyZWVpbmcgaGFzIHRvIGJlIHBlcmZvcm1lZCBi eSBmdW5jdGlvbgorICogY29uZm9ybWluZyB0byBERk9SX01BTExPQyAocGFpcmVkIHdpdGgg aXQpLiBGb3IgaW5zdGFuY2UsIGlmIERGT1JfTUFMTE9DIGlzCisgKiBtYWxsb2MsIHRoYW4g bWVtb3J5IHNob3VsZCBiZSBmcmVlZCBieSBmcmVlLgorICovCitpbnQKK2Rmb3JfcGFjayhz aXplX3QgY250LCBjb25zdCBpdGVtX3QgYXJyW10sIGV4Y2FsZ190IGlzRXhjVXNhZ2UsCisJ CSAgZGZvcl9tZXRhX3QgKmRmb3IsIHNpemVfdCBidWZTaXplLCB1aW50OF90IGJ1ZltdKQor eworCWludCByZXM7CisJdmVjdF90IHZEZWx0YXMgPSB7IDAgfTsKKwl2ZWN0X3QgdkV4Y1Bv c0RlbHRhcyA9IHsgMCB9OworCXVuaXFzb3J0dmVjdF90IHVzdkV4Y1BvcyA9IHsgMCB9Owor CisJaWYgKGRmb3IgPT0gTlVMTCB8fAorCQkoYnVmU2l6ZSAhPSAwICYmIGJ1ZlNpemUgPCA0 ICogY250ICogc2l6ZW9mKGl0ZW1fdCkpKQorCXsKKwkJZ290byBkZm9yX3BhY2tfZXJyb3I7 CisJfQorCisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIGl0IGhlcmU6CisJICogCQkJbWVtc2V0 KGRmb3IsIDAsIHNpemVvZihkZm9yX21ldGFfdCkpLgorCSAqIEl0IGlzIGdvaW5nIHRvIGJl IGRvbmUgaW4gZGZvcl9hbmFseXplLgorCSAqLworCisJeworCQlpdGVtX3QgKmRlbHRhQnVm ID0gTlVMTDsKKwkJaXRlbV90ICpleGNQb3NEZWx0YXNCdWYgPSBOVUxMOworCQlpdGVtX3Qg KmV4Y1Bvc0J1ZiA9IE5VTEw7CisKKwkJaW50IHJlczEgPSAwOworCQlpbnQgcmVzMiA9IDA7 CisJCWludCByZXMzID0gMDsKKworCQlpZiAoYnVmU2l6ZSAhPSAwKQorCQl7CisJCQkvKiBT dGVwIG92ZXIgdGhlIG1heGltYWwgYWxsb3dlZCBERm9SIHBhY2sgc2l6ZSAqLworCQkJZGVs dGFCdWYgICAgICAgID0gKGl0ZW1fdCopKGJ1ZiArIGNudCAqIHNpemVvZihpdGVtX3QpKTsK KwkJCWV4Y1Bvc0RlbHRhc0J1ZiA9IChpdGVtX3QqKShidWYgKyBjbnQgKiBzaXplb2YoaXRl bV90KSAqIDIpOworCQkJZXhjUG9zQnVmICAgICAgID0gKGl0ZW1fdCopKGJ1ZiArIGNudCAq IHNpemVvZihpdGVtX3QpICogMyk7CisJCX0KKworCQkvKiBTZXR1cCBjb250YWluZXJzIHdp dGggb3V0ZXIgbWVtb3J5ICovCisJCXJlczEgPSB2ZWN0X2luaXQoJnZEZWx0YXMsIGNudCwg ZGVsdGFCdWYpOworCisJCWlmIChpc0V4Y1VzYWdlKQorCQl7CisJCQlyZXMyID0gdmVjdF9p bml0KCZ2RXhjUG9zRGVsdGFzLCBjbnQsIGV4Y1Bvc0RlbHRhc0J1Zik7CisJCQlyZXMzID0g dmVjdF9pbml0KCZ1c3ZFeGNQb3MsIGNudCwgZXhjUG9zQnVmKTsKKwkJfQorCisJCWlmIChy ZXMxICE9IDAgfHwgcmVzMiAhPSAwIHx8IHJlczMgIT0gMCkKKwkJCWdvdG8gZGZvcl9wYWNr X2Vycm9yOworCX0KKworCWlmICgwICE9CisJCWRmb3JfYW5hbHl6ZShjbnQsIGFyciwgZGZv ciwgJnZEZWx0YXMsCisJCQkJCSAoaXNFeGNVc2FnZSA9PSBERk9SX0VYQ19VU0UpID8gJnVz dkV4Y1BvcyA6IE5VTEwpKQorCQlnb3RvIGRmb3JfcGFja19lcnJvcjsKKworCWlmIChkZm9y LT5leGNfY250ICE9IDApCisJeworCQkvKiBXZSB0cmVhdCBleGNlcHRpb24gcG9zaXRpb25z IGFzIGEgc29ydGVkIHNlcXVlbmNlLCBhcHBseSB0aGUKKwkJICogREZvUiBhbGdvcml0aG0g dG8gaXQsIGFuZCBzYXZlIG5vdCB0aGVpciBhYnNvbHV0ZSB2YWx1ZXMgYnV0IHRoZWlyCisJ CSAqIGRlbHRhcy4gKi8KKwkJZGZvcl9tZXRhX3QgZGZvckV4Y1BvczsKKwkJQXNzZXJ0KGRm b3ItPmV4Y19jbnQgPT0gdXN2RXhjUG9zLmNudCk7CisJCWlmICgwICE9CisJCQlkZm9yX2Fu YWx5emUodXN2RXhjUG9zLmNudCwgdXN2RXhjUG9zLm0sICZkZm9yRXhjUG9zLAorCQkJCQkJ ICZ2RXhjUG9zRGVsdGFzLCBOVUxMKSkKKwkJCWdvdG8gZGZvcl9wYWNrX2Vycm9yOworCisJ CUFzc2VydChkZm9yLT5leGNfY250ID09IHZFeGNQb3NEZWx0YXMuY250KTsKKwkJQXNzZXJ0 KGRmb3ItPmV4Y19jbnQgPT0gZGZvckV4Y1Bvcy5pdGVtX2NudCk7CisKKwkJZGZvci0+ZXhj X3Bvc193aWQgPSBkZm9yRXhjUG9zLmRlbHRhX3dpZDsKKwl9CisJZWxzZQorCXsKKwkJQXNz ZXJ0KHVzdkV4Y1Bvcy5jbnQgPT0gMCk7IC8qIHVzdkV4Y1BvcyBoYXMgdG8gcmVtYWluIHpl cm9lZC4gKi8KKwkJQXNzZXJ0KGRmb3ItPmV4Y193aWQgPT0gMCk7IC8qIE5vIGV4Y2VwdGlv bnMsIG5vIGV4Y2VwdGlvbnMnIHdpZHRoLiAqLworCQlBc3NlcnQoZGZvci0+ZXhjX3Bvc193 aWQgPT0gMCk7IC8qIE5vIGV4Y2VwdGlvbnMnIHBvc2l0aW9ucyB3aWR0aCB0b28uICovCisJ fQorCisJLyogZGZvcl9wYWNrIHNlcmlhbGlzYXRpb24gcGFja2luZyAqLworCXsKKwkJLyog aW5kZXggb2YgdGhlIG5leHQgZnJlZSBiaXQgdG8gYmUgdXNlZDogKi8KKwkJc2l6ZV90IGQ7 IC8qIC0gYnkgYSBkZWx0YSAqLworCQlzaXplX3QgZTsgLyogLSBieSBhbiBleGNlcHRpb24g Ki8KKwkJc2l6ZV90IHA7IC8qIC0gYnkgYW4gZXhjZXB0aW9uIHBvc2l0aW9uICovCisJCWl0 ZW1fdCBtYXNrOworCQlkZm9yX3N0YXRzX3Qgc3RhdHM7CisJCXNpemVfdCBqOworCisJCXN0 YXRzID0gZGZvcl9jYWxjX3N0YXRzKCpkZm9yKTsKKwkJZGZvci0+bmJ5dGVzID0gZGZvcl9j YWxjX25ieXRlcygqZGZvcik7CisKKwkJaWYgKGJ1ZlNpemUgIT0gMCkKKwkJeworCQkJLyog TWF4IHNpemUgb2YgdGhlIGRmb3ItPnBhY2sgaXMgY250ICogc2l6ZW9mKHNpemVfdCkgKi8K KwkJCWRmb3ItPnBhY2sgPSBidWY7CisJCQlkZm9yLT5vdXRlcl9tZW0gPSB0cnVlOworCQkJ aWYgKGRmb3ItPm5ieXRlcyA+IGNudCAqIHNpemVvZihzaXplX3QpKQorCQkJCWdvdG8gZGZv cl9wYWNrX2Vycm9yOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogSWYgYSBidWZmZXIgd2Fz IG5vdCBwcm92aWRlZCBieSBjYWxsZXIgd2UgYWxsb2NhdGUgaXQgYnkKKwkJCSAqIG91cnNl bHZlcworCQkJICovCisJCQlkZm9yLT5wYWNrID0gKHVpbnQ4X3QgKilERk9SX01BTExPQygo ZGZvci0+bmJ5dGVzKSk7CisKKwkJCWRmb3ItPm91dGVyX21lbSA9IGZhbHNlOworCQl9CisK KwkJaWYgKGRmb3ItPnBhY2sgPT0gTlVMTCkKKwkJCWdvdG8gZGZvcl9wYWNrX2Vycm9yOwor CisJCW1lbXNldChkZm9yLT5wYWNrLCAwLCBkZm9yLT5uYnl0ZXMpOworCisJCS8qIGluZGV4 IG9mIHRoZSBuZXh0IGZyZWUgYml0IHRvIGJlIHVzZWQ6ICovCisJCWQgPSAwOwkJCSAgIC8q IC0gYnkgYSBkZWx0YSAqLworCQllID0gc3RhdHMuZGVsdGFfcGFja19uYml0czsgICAvKiAt IGJ5IGFuIGV4Y2VwdGlvbiAqLworCQlwID0gZSArIHN0YXRzLmV4Y19wYWNrX25iaXRzOyAv KiAtIGJ5IGFuIGV4Y2VwdGlvbiBwb3NpdGlvbiBpbmRleCAqLworCQkvKiBBIG1hc2sgbG9v a3MgbGlrZSAwMDAxMTExLiBJdCBpcyBhbHNvIHRoZQorCQkgKiBtYXggdmFsdWUgb2YgYSBz aG9ydCBkZWx0YSAqLworCQltYXNrID0gd2lkdGhfdG9fbWFzayhkZm9yLT5kZWx0YV93aWQp OworCisJCWogPSAwOworCQlmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZEZWx0YXMuY250OyBp KyspCisJCXsKKwkJCWQgPSBiaXRwYWNrX3BhY2soZGZvci0+cGFjaywgZCwgdkRlbHRhcy5t W2ldICYgbWFzaywKKwkJCQkJCQkgZGZvci0+ZGVsdGFfd2lkKTsKKworCQkJaWYgKHZEZWx0 YXMubVtpXSA+IG1hc2spCisJCQl7CisJCQkJQXNzZXJ0KGlzRXhjVXNhZ2UgPT0gREZPUl9F WENfVVNFKTsKKwkJCQlBc3NlcnQodXN2RXhjUG9zLm1bal0gPT0gaSk7CisJCQkJQXNzZXJ0 KGogPCB1c3ZFeGNQb3MuY250KTsKKwkJCQlBc3NlcnQoaiA8IHZFeGNQb3NEZWx0YXMuY250 KTsKKwkJCQlBc3NlcnQoZGZvci0+ZXhjX3dpZCAhPSAwKTsKKwkJCQlBc3NlcnQoZGZvci0+ ZXhjX3Bvc193aWQgIT0gMCk7CisKKwkJCQllID0gYml0cGFja19wYWNrKGRmb3ItPnBhY2ss IGUsIHZEZWx0YXMubVtpXSA+PiBkZm9yLT5kZWx0YV93aWQsCisJCQkJCQkJCSBkZm9yLT5l eGNfd2lkKTsKKwkJCQlwID0gYml0cGFja19wYWNrKGRmb3ItPnBhY2ssIHAsIHZFeGNQb3NE ZWx0YXMubVtqXSwgZGZvci0+ZXhjX3Bvc193aWQpOworCQkJCWorKzsKKwkJCX0KKwkJfQor CisJCWlmIChpc0V4Y1VzYWdlID09IERGT1JfRVhDX1VTRSkKKwkJCUFzc2VydChqID09IHVz dkV4Y1Bvcy5jbnQpOworCQllbHNlCisJCQlBc3NlcnQoaiA9PSAwKTsKKworCQlBc3NlcnQo ZCA9PSBzdGF0cy5kZWx0YV9wYWNrX25iaXRzKTsKKwkJQXNzZXJ0KGUgPT0gc3RhdHMuZGVs dGFfcGFja19uYml0cyArIHN0YXRzLmV4Y19wYWNrX25iaXRzKTsKKwkJQXNzZXJ0KHAgPT0K KwkJCSAgIHN0YXRzLmRlbHRhX3BhY2tfbmJpdHMgKyBzdGF0cy5leGNfcGFja19uYml0cyAr CisJCQkJICAgc3RhdHMuZXhjX3Bvc19wYWNrX25iaXRzKTsKKwkJcmVzID0gMDsKKwl9Citk Zm9yX3BhY2tfcmV0OgorCXZlY3RfY2xlYXIoJnVzdkV4Y1Bvcyk7CisJdmVjdF9jbGVhcigm dkV4Y1Bvc0RlbHRhcyk7CisJdmVjdF9jbGVhcigmdkRlbHRhcyk7CisJcmV0dXJuIHJlczsK K2Rmb3JfcGFja19lcnJvcjoKKwlpZiAoZGZvciAhPSBOVUxMKQorCQlkZm9yX2NsZWFyX21l dGEoZGZvcik7CisJcmVzID0gLTE7CisJZ290byBkZm9yX3BhY2tfcmV0OworfQorCisvKgor ICogZGZvcl91bnBhY2sKKyAqCisgKiBJZiBhIGNhbGxlciBuZWVkcyB0byBhdm9pZCB1c2lu ZyBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uLCB0aGV5IGhhdmUgdG86CisgKiAxKSBwcm92 aWRlIHRoZSBleHRlcm5hbCBtZW1vcnkgYnVmZmVyLiBUaGUgc2l6ZSBvZiB0aGlzIGJ1ZmZl ciBzaG91bGQgYmUgbm90CisgKiAgICBsZXNzIHRoYW46CisgKiAgICAgICAgCTIgKiBkZm9y Lml0ZW1fY250ICogc2l6ZW9mKGl0ZW1fdCkgKyAyICogZGZvci5leGNfY250ICogc2l6ZW9m KGl0ZW1fdCkKKyAqCisgKiAyKSB0aGUgdlZhbHMgdmVjdG9yIGhhcyB0byBiZSBjcmVhdGVk IGJ1dCBtdXN0IG5vdCBiZSBpbml0aWFsaXNlZC4gVGhlCisgKiAgICBkZm9yX3VucGFjayBz ZXRzIHZWYWxzIGluIHRoZSAnb3V0ZXIgbWVtb3J5JyByZWdpbWVuIGFuZCB3aWxsIHNldCB2 VmFsLT5tCisgKiAgICB0byBidWYuCisgKgorICogUHJvdmlkZWQgZHluYW1pYyBhbGxvY2F0 aW9uIGlzIHVzZWQgYnkgdGhlIGRmb3JfdW5wYWNrLCBhIGNhbGxlciB3aWxsIGhhdmUgdG8K KyAqIGZyZWUgdGhlIHBpZWNlIG9mIG1lbW9yeSBwb2ludGVkIGJ5IHZWYWxzLT5tLCB1c2lu ZyB2ZWN0X2NsZWFyKCZ2VmFscykuCisgKgorICogQXJlIHRoZSBvdXRlciBtZW1vcnkgaXMg dXNlZAorICovCitpbnQKK2Rmb3JfdW5wYWNrKGNvbnN0IGRmb3JfbWV0YV90ICpkZm9yLCB1 bmlxc29ydHZlY3RfdCAqdlZhbHMsIHNpemVfdCBidWZTaXplLAorCQkJdWludDhfdCBidWZb XSkKK3sKKwlpbnQgcmVzID0gLTE7CisJc2l6ZV90IHN6RGVsdGFQYWNrOworCXZlY3RfdCB2 RXhjcyA9IHsgMCB9OworCXZlY3RfdCB2RXhjUG9zcyA9IHsgMCB9OworCWV4Y2FsZ190IGlz RXhjVXNhZ2UgPSAoZGZvci0+ZXhjX2NudCA9PSAwKSA/IERGT1JfRVhDX0RPTlRfVVNFIDoK KwkJCQkJCQkJCQkJCSBERk9SX0VYQ19VU0U7CisKKwlpZiAodlZhbHMgPT0gTlVMTCkKKwkJ Z290byBkZm9yX3VucGFja19lcnJvcjsKKworCWlmIChidWZTaXplICE9IDAgJiYKKwkJYnVm U2l6ZSA8ICgyICogZGZvci0+aXRlbV9jbnQgKiBzaXplb2YoaXRlbV90KSArCisJCQkJICAg MiAqIGRmb3ItPmV4Y19jbnQgKiBzaXplb2YoaXRlbV90KSkpCisJCWdvdG8gZGZvcl91bnBh Y2tfZXJyb3I7CisKKwlzekRlbHRhUGFjayA9IGRmb3ItPmRlbHRhX3dpZCAqIGRmb3ItPml0 ZW1fY250OworCisJeworCQl1aW50OF90ICp2YWxzQnVmID0gTlVMTDsKKwkJaWYgKGJ1ZlNp emUgIT0gMCkKKwkJCXZhbHNCdWYgPSBidWY7CisKKwkJaWYgKHZlY3RfaW5pdCh2VmFscywg ZGZvci0+aXRlbV9jbnQsIChpdGVtX3QgKil2YWxzQnVmKSAhPSAwKQorCQkJZ290byBkZm9y X3VucGFja19lcnJvcjsKKwl9CisKKwkvKiBDYWxjdWxhdGUgZXhjZXB0aW9ucyAqLworCWlm IChpc0V4Y1VzYWdlID09IERGT1JfRVhDX1VTRSkKKwl7CisJCXNpemVfdCBzekV4Y1BhY2s7 CisJCXNpemVfdCBjckV4YzsgLyogY2FyZXQgKGN1cnNvcikgKi8KKwkJc2l6ZV90IGNyUG9z OyAvKiBjYXJldCAoY3Vyc29yKSAqLworCisJCXVpbnQ4X3QgKmV4Y0J1ZiA9IE5VTEw7CisJ CXVpbnQ4X3QgKmV4Y1Bvc3NCdWYgPSBOVUxMOworCisJCWludCByZXMxID0gMDsKKwkJaW50 IHJlczIgPSAwOworCisJCXN6RXhjUGFjayA9IGRmb3ItPmV4Y19jbnQgKiBkZm9yLT5leGNf d2lkOworCQljckV4YyA9IHN6RGVsdGFQYWNrOworCQljclBvcyA9IGNyRXhjICsgc3pFeGNQ YWNrOworCisJCWlmIChidWZTaXplICE9IDApCisJCXsKKwkJCS8qIHN0ZXAgb3ZlciB0aGUg bWVtb3J5IG9jY3VwaWVkIGJ5IHZWYWxzICovCisJCQlleGNCdWYgPSBidWYgKyBkZm9yLT5p dGVtX2NudCAqIHNpemVvZihpdGVtX3QpOworCQkJZXhjUG9zc0J1ZiA9IGV4Y0J1ZiArIGRm b3ItPmV4Y19jbnQgKiBzaXplb2YoaXRlbV90KTsKKwkJfQorCisJCXJlczEgPSB2ZWN0X2lu aXQoJnZFeGNzLCBkZm9yLT5leGNfY250LCAoaXRlbV90ICopZXhjQnVmKTsKKwkJcmVzMiA9 IHZlY3RfaW5pdCgmdkV4Y1Bvc3MsIGRmb3ItPmV4Y19jbnQsIChpdGVtX3QgKilleGNQb3Nz QnVmKTsKKworCQlpZiAocmVzMSAhPSAwIHx8IHJlczIgIT0gMCkKKwkJCWdvdG8gZGZvcl91 bnBhY2tfZXJyb3I7CisKKworCQlmb3IgKHNpemVfdCBwb3NFeGMgPSAwLCBqID0gMDsgaiA8 IGRmb3ItPmV4Y19jbnQ7IGorKykKKwkJeworCQkJaXRlbV90IGRlbHRhUG9zOworCQkJcmVz MSA9IHZlY3RfYXBwZW5kKCZ2RXhjcywKKwkJCQkJCQkgICBiaXRwYWNrX3VucGFjayhkZm9y LT5wYWNrLCAmY3JFeGMsCisJCQkJCQkJCQkJCSAgZGZvci0+ZXhjX3dpZCkpOworCQkJLyog Q2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIGRlbHRh IG9mIHRoZQorCQkJICogcG9zaXRpb24gb2YgdGhlIGV4Y2VwdGlvbiAqLworCQkJZGVsdGFQ b3MgPSBiaXRwYWNrX3VucGFjayhkZm9yLT5wYWNrLCAmY3JQb3MsIGRmb3ItPmV4Y19wb3Nf d2lkKTsKKwkJCXBvc0V4YyArPSBkZWx0YVBvczsKKwkJCXJlczIgPSB2ZWN0X2FwcGVuZCgm dkV4Y1Bvc3MsIHBvc0V4Yyk7CisJCQlpZiAocmVzMSAhPSAwIHx8IHJlczIgIT0gMCkKKwkJ CQlnb3RvIGRmb3JfdW5wYWNrX2Vycm9yOworCQl9CisJCUFzc2VydChjckV4YyA9PSBzekRl bHRhUGFjayArIHN6RXhjUGFjayk7CisJCUFzc2VydChjclBvcyA9PQorCQkJICAgc3pEZWx0 YVBhY2sgKyBzekV4Y1BhY2sgKyBkZm9yLT5leGNfcG9zX3dpZCAqIGRmb3ItPmV4Y19jbnQp OworCX0KKworCXsgLyogVW5wYWNrIGRlbHRhcyBhbmQgY2FsY3VsYXRlIHRhcmdldCB2YWx1 ZXMgKi8KKwkJaXRlbV90IG1EZWx0YTsKKwkJaXRlbV90IG1TdW0gPSAwOworCQlzaXplX3Qg aiA9IDA7IC8qIGluZGV4IG9mIGFuIGV4Y2VwdGlvbiBhbmQgaXRzIHBvc2l0aW9uIGluIHZl Y3RvcnMgKi8KKwkJc2l6ZV90IGNyRGVsdGEgPSAwOworCQlmb3IgKHNpemVfdCBpID0gMDsg aSA8IGRmb3ItPml0ZW1fY250OyBpKyspCisJCXsKKwkJCW1EZWx0YSA9IGJpdHBhY2tfdW5w YWNrKGRmb3ItPnBhY2ssICZjckRlbHRhLCBkZm9yLT5kZWx0YV93aWQpOworCisJCQlpZiAo aXNFeGNVc2FnZSA9PSBERk9SX0VYQ19VU0UgJiYKKwkJCQlqIDwgdkV4Y3MuY250ICYmCisJ CQkJaSA9PSB2RXhjUG9zcy5tW2pdKQorCQkJeworCQkJCUFzc2VydChqIDwgZGZvci0+ZXhj X2NudCk7CisJCQkJbURlbHRhIHw9IHZFeGNzLm1bal0gPDwgZGZvci0+ZGVsdGFfd2lkOwor CQkJCWorKzsKKwkJCX0KKwkJCW1TdW0gKz0gbURlbHRhOworCQkJdmVjdF9hcHBlbmQodlZh bHMsIG1TdW0pOworCQl9CisJCUFzc2VydChjckRlbHRhID09IHN6RGVsdGFQYWNrKTsKKwkJ cmVzID0gMDsKKwl9CisKK2Rmb3JfdW5wYWNrX3JldDoKKwl2ZWN0X2NsZWFyKCZ2RXhjUG9z cyk7CisJdmVjdF9jbGVhcigmdkV4Y3MpOworCXJldHVybiByZXM7CitkZm9yX3VucGFja19l cnJvcjoKKwl2ZWN0X2NsZWFyKHZWYWxzKTsKKwlyZXMgPSAtMTsKKwlnb3RvIGRmb3JfdW5w YWNrX3JldDsKK30KKwordm9pZAorZGZvcl9jbGVhcl9tZXRhKGRmb3JfbWV0YV90ICptZXRh KQoreworCWlmIChtZXRhID09IE5VTEwpCisJCXJldHVybjsKKworCWlmIChtZXRhLT5wYWNr ICE9IE5VTEwgJiYgIW1ldGEtPm91dGVyX21lbSkKKwkJREZPUl9GUkVFKG1ldGEtPnBhY2sp OworCisJbWVtc2V0KG1ldGEsIDAsIHNpemVvZihkZm9yX21ldGFfdCkpOworfQorCitkZm9y X3N0YXRzX3QKK2Rmb3JfY2FsY19zdGF0cyhkZm9yX21ldGFfdCBkZm9yKQoreworCWRmb3Jf c3RhdHNfdCBzdGF0OworCXNpemVfdCBuYnl0ZXM7CisJc3RhdC5kZWx0YV9wYWNrX25iaXRz ID0gZGZvci5kZWx0YV93aWQgKiBkZm9yLml0ZW1fY250OworCXN0YXQuZXhjX3BhY2tfbmJp dHMgPSBkZm9yLmV4Y193aWQgKiBkZm9yLmV4Y19jbnQ7CisJc3RhdC5leGNfcG9zX3BhY2tf bmJpdHMgPSBkZm9yLmV4Y19wb3Nfd2lkICogZGZvci5leGNfY250OworCisJc3RhdC5uYml0 cyA9IHN0YXQuZGVsdGFfcGFja19uYml0cyArIHN0YXQuZXhjX3BhY2tfbmJpdHMgKyBzdGF0 LmV4Y19wb3NfcGFja19uYml0czsKKworCS8qIElmIHRoZSBkaXZpc2lvbiByZXN1bHRzIGlu IHRoZSByZW1haW5kZXIsIHdlIHVzZSBhbiBhZGRpdGlvbmFsCisJICogYnl0ZSAqLworCW5i eXRlcyA9IChzdGF0Lm5iaXRzICsgNykgLyA4OworCXN0YXQucmF0aW8gPSAoZmxvYXQpKHNp emVvZihpdGVtX3QpICogZGZvci5pdGVtX2NudCkgLyAoZmxvYXQpbmJ5dGVzOworCisJcmV0 dXJuIHN0YXQ7Cit9CisKK3NpemVfdCBkZm9yX2NhbGNfbmJ5dGVzKGRmb3JfbWV0YV90IGRm b3IpCit7CisJZGZvcl9zdGF0c190IHN0YXQ7CisJc3RhdCA9IGRmb3JfY2FsY19zdGF0cyhk Zm9yKTsKKwlyZXR1cm4gKHN0YXQubmJpdHMgKyA3KSAvIDg7Cit9CisKKyNpbmNsdWRlICJs aWIvZGZvcl90ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGliL2Rm b3JfdTE2LmMgYi9zcmMvYmFja2VuZC9saWIvZGZvcl91MTYuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjcwNTFmNTU5MjUKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9saWIvZGZvcl91MTYuYwpAQCAtMCwwICsxLDggQEAKKy8qCisgKiBG aWxlOiBkZm9yX3UxNi5jCisgKi8KKworLyogY2xhbmctZm9ybWF0IG9mZiAqLworI2luY2x1 ZGUgImxpYi9kZm9yX3UxNl9jb25maWcuaCIKKyNpbmNsdWRlICJkZm9yX3RlbXBsLmMiCisv KiBjbGFuZy1mb3JtYXQgb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYi9tZXNv bi5idWlsZCBiL3NyYy9iYWNrZW5kL2xpYi9tZXNvbi5idWlsZAppbmRleCAwOTg0YmQwZTNm Ni4uN2Y2NzMwZWZiYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYi9tZXNvbi5idWls ZAorKysgYi9zcmMvYmFja2VuZC9saWIvbWVzb24uYnVpbGQKQEAgLTIsNiArMiw3IEBACiAK IGRmb3Jfc291cmNlcyA9IGZpbGVzKAogICAnYml0cGFja191MTYuYycsCisgICdkZm9yX3Ux Ni5jJywKICAgJ3ZlY3RfdTE2LmMnCiApCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xp Yi9kZm9yX3RlbXBsLmggYi9zcmMvaW5jbHVkZS9saWIvZGZvcl90ZW1wbC5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNGMxZDQxYzFkMwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsLmgKQEAgLTAsMCArMSwyNyBA QAorLyoKKyAqIEZpbGU6IGRmb3JfdGVtcGwuaAorICovCisjaW5jbHVkZSAiZGZvcl90ZW1w bF9zdGFwbGUuaCIKKworZXh0ZXJuIGludCBkZm9yX2NhbGNfZGVsdGFzKHNpemVfdCBjbnQs IGNvbnN0IGl0ZW1fdCBhcnJbXSwgdmVjdF90ICp2RGVsdGFzLAorCQkJCQkJCXVuaXFzb3J0 dmVjdF90ICp1c3ZEZWx0YVdpZHRocywKKwkJCQkJCQl2ZWN0X3QgKnZXaWR0aENvdW50ZXJz KTsKKworZXh0ZXJuIGludCBkZm9yX2NhbGNfd2lkdGgoc2l6ZV90IGNudERlbHRhLAorCQkJ CQkJICAgY29uc3QgdW5pcXNvcnR2ZWN0X3QgKnVzdkRlbHRhV2lkdGhzLAorCQkJCQkJICAg Y29uc3QgdmVjdF90ICp2V2lkdGhDb3VudGVycywgc2l6ZV90ICp3aWR0aCwKKwkJCQkJCSAg IHNpemVfdCAqY250RXhjZXB0aW9ucyk7CisKK2V4dGVybiBpbnQgZGZvcl9wYWNrKHNpemVf dCBjbnQsIGNvbnN0IGl0ZW1fdCBhcnJbXSwgZXhjYWxnX3QgaXNFeGNVc2FnZSwKKwkJCQkJ IGRmb3JfbWV0YV90ICpkZm9yLCBzaXplX3QgYnVmU2l6ZSwgdWludDhfdCBidWZbXSk7CisK K2V4dGVybiBpbnQgZGZvcl91bnBhY2soY29uc3QgZGZvcl9tZXRhX3QgKmRmb3IsIHVuaXFz b3J0dmVjdF90ICp2VmFscywKKwkJCQkJICAgc2l6ZV90IGJ1ZlNpemUsIHVpbnQ4X3QgYnVm W10pOworCitleHRlcm4gdm9pZCBkZm9yX2NsZWFyX21ldGEoZGZvcl9tZXRhX3QgKmRmb3Ip OworCitleHRlcm4gZGZvcl9zdGF0c190IGRmb3JfY2FsY19zdGF0cyhkZm9yX21ldGFfdCBk Zm9yKTsKKworZXh0ZXJuIHNpemVfdCBkZm9yX2NhbGNfbmJ5dGVzKGRmb3JfbWV0YV90IGRm b3IpOworCisjaW5jbHVkZSAiZGZvcl90ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfc3RhcGxlLmggYi9zcmMvaW5jbHVkZS9saWIvZGZv cl90ZW1wbF9zdGFwbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZTkzYzQwYWMwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvZGZv cl90ZW1wbF9zdGFwbGUuaApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIEZpbGU6IGRmb3Jf c3RhcGxlX3RlbXBsLmgKKyAqLworCisjaW5jbHVkZSAiYy5oIgorCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgKiBOT05SRVVTQUJMRSBDT0RFLCBhbGxvd2VkIHRvIGJlIGluY2x1 ZGVkIG9ubHkgb25jZQorICoKKyAqIFRoaXMgY29kZSBzaG91bGQgYXBwZWFyIG9ubHkgb25j ZSBpbiBhIGZpbGUgKG9yIGluIGEgY2hhaW4gb2YgZmlsZXMpCisgKiBpbmNsdWRpbmcgdGhp cyBoZWFkZXIgd2l0aCAjaW5jbHVkZS4gU28sIHdlIHByb3RlY3QgaXQgZnJvbSBkdXBsaWNh dGVzIGJ5CisgKiBtZWFucyBvZiBtYWNybworICoKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKyNpZm5kZWYgX0RGT1JfU1RBUExFX1RFTVBMX0hfVU5JUVVFX0NPREVfCisjZGVmaW5l IF9ERk9SX1NUQVBMRV9URU1QTF9IX1VOSVFVRV9DT0RFXworCit0eXBlZGVmIHN0cnVjdCB7 CisJc2l6ZV90IGl0ZW1fY250OworCXNpemVfdCBkZWx0YV93aWQ7CisJc2l6ZV90IGV4Y19j bnQ7CisJc2l6ZV90IGV4Y193aWQ7CisJc2l6ZV90IGV4Y19wb3Nfd2lkOworCXNpemVfdCBu Ynl0ZXM7IC8qIHNpemUgb2YgcGFjayBpbiBieXRlcyAqLworCXVpbnQ4X3QgKnBhY2s7CisJ Ym9vbCBvdXRlcl9tZW07Cit9IGRmb3JfbWV0YV90OworCit0eXBlZGVmIHN0cnVjdCB7CisJ c2l6ZV90IG5iaXRzOyAgLyogc2l6ZSBvZiBwYWNrIGluIGJpdHMgdXNlZCBpbiBmYWN0ICov CisJc2l6ZV90IGRlbHRhX3BhY2tfbmJpdHM7IC8qIGluIGJpdHMgKi8KKwlzaXplX3QgZXhj X3BhY2tfbmJpdHM7IC8qIGluIGJpdHMgKi8KKwlzaXplX3QgZXhjX3Bvc19wYWNrX25iaXRz OyAvKiBpbiBiaXRzICovCisJZmxvYXQgcmF0aW87ICAvKiBjb21wcmVzc2lvbiByYXRpbyAq LworfSBkZm9yX3N0YXRzX3Q7CisKK3R5cGVkZWYgZW51bSB7CisJREZPUl9FWENfRE9OVF9V U0UgPSAwLAorCURGT1JfRVhDX1VTRSA9IDEKK30gZXhjYWxnX3Q7CisKKyNlbmRpZiAvKiBf REZPUl9TVEFQTEVfVEVNUExfSF9VTklRVUVfQ09ERV8gKi8KKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorICogRW5kIG9mIENvZGUsIGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQgb25s eSBvbmNlCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqIFJFVVNBQkxFIENPREUKKyAqCisgKiBUaGlzIGNvZGUgY2FuIGJlIHJl dXNlZCB3aXRoICNpbmNsdWRlIGRpcmVjdGl2ZSBpbiBhIGZpbGUgaWYgREZPUl9NQVJLRVIg aXMKKyAqIHJlZGVmaW5lZC4gVGhpcyBhbGxvd3MgY3JlYXRpb24gb2Ygc2V2ZXJhbCB0eXBl cyBvZiB2ZWN0b3JzIHdpdGggZGlmZmVyZW50CisgKiB0eXBlcyBvZiBtZW1iZXJzLgorICoK KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBERk9SX0lURU1fVFlQRQor I2Vycm9yICJERk9SX0lURU1fVFlQRSBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisK KyNpZm5kZWYgREZPUl9NQVJLRVIKKyNlcnJvciAiREZPUl9NQVJLRVIgbWFjcm8gaXMgaW5k ZWZpbmVkLiIKKyNlbmRpZgorCisjaWZuZGVmIERGT1JfTUFMTE9DCisjZXJyb3IgIkRGT1Jf TUFMTE9DIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBERk9SX0ZS RUUKKyNlcnJvciAiREZPUl9GUkVFIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKwor I2RlZmluZSBNQUtFX0hFQURFUl9OQU1FKHYsIG0pIENwcEFzU3RyaW5nMihDcHBDb25jYXQy KHYsIG0pLmgpCisKKy8qCisgKiBIZWFkZXJzIGZyb20gdmVjdCBhbmQgYml0cGFjayB1bml0 cworICoKKyAqIEV4YW1wbGU6IGRmb3JfdTE2LmMgYW5kIGRmb3JfdTE2LmggbmVlZCB2ZWN0 X3UxNi5oIGFuZCBiaXRwYWNrX3UxNi5oCisgKi8KKyNpbmNsdWRlIE1BS0VfSEVBREVSX05B TUUobGliL3ZlY3RfLCBERk9SX01BUktFUikKKyNpbmNsdWRlIE1BS0VfSEVBREVSX05BTUUo bGliL2JpdHBhY2tfLCBERk9SX01BUktFUikKKworLyogVHlwZXMgKi8KKyNkZWZpbmUgaXRl bV90CQkgICBERk9SX0lURU1fVFlQRQorI2RlZmluZSB2ZWN0X3QJCSAgIENwcENvbmNhdFRy aXBsZTIodmVjdF8sIERGT1JfTUFSS0VSLCBfdCkKKyNkZWZpbmUgdW5pcXNvcnR2ZWN0X3Qg Q3BwQ29uY2F0VHJpcGxlMih1bmlxc29ydHZlY3RfLCBERk9SX01BUktFUiwgX3QpCisKKy8q IEZ1bmN0aW9ucyAqLworI2RlZmluZSBkZm9yX2NhbGNfZGVsdGFzIENwcENvbmNhdFRyaXBs ZTIoZGZvcl8sIERGT1JfTUFSS0VSLCBfY2FsY19kZWx0YXMpCisjZGVmaW5lIGRmb3JfY2Fs Y193aWR0aAkgQ3BwQ29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9NQVJLRVIsIF9jYWxjX3dp ZHRoKQorI2RlZmluZSBkZm9yX3BhY2sJCSBDcHBDb25jYXRUcmlwbGUyKGRmb3JfLCBERk9S X01BUktFUiwgX3BhY2spCisjZGVmaW5lIGRmb3JfdW5wYWNrCQkgQ3BwQ29uY2F0VHJpcGxl MihkZm9yXywgREZPUl9NQVJLRVIsIF91bnBhY2spCisjZGVmaW5lIGRmb3JfYW5hbHl6ZQkg Q3BwQ29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9NQVJLRVIsIF9hbmFseXplKQorI2RlZmlu ZSBkZm9yX2NsZWFyX21ldGEJIENwcENvbmNhdFRyaXBsZTIoZGZvcl8sIERGT1JfTUFSS0VS LCBfY2xlYXJfbWV0YSkKKyNkZWZpbmUgZGZvcl9jYWxjX3N0YXRzCSBDcHBDb25jYXRUcmlw bGUyKGRmb3JfLCBERk9SX01BUktFUiwgX2NhbGNfc3RhdHMpCisjZGVmaW5lIGRmb3JfY2Fs Y19uYnl0ZXMgQ3BwQ29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9NQVJLRVIsIF9jYWxjX25i eXRlcykKKworLyogRnVuY3Rpb25zIG9mIHRoZSB2ZWN0IHVuaXQgKi8KKyNkZWZpbmUgdmVj dF9pbml0CQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBERk9SX01BUktFUiwgX2luaXQp CisjZGVmaW5lIHZlY3RfZmlsbAkJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0XywgREZPUl9N QVJLRVIsIF9maWxsKQorI2RlZmluZSB2ZWN0X3Jlc2VydmUJICAgQ3BwQ29uY2F0VHJpcGxl Mih2ZWN0XywgREZPUl9NQVJLRVIsIF9yZXNlcnZlKQorI2RlZmluZSB2ZWN0X2FwcGVuZAkJ ICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0XywgREZPUl9NQVJLRVIsIF9hcHBlbmQpCisjZGVm aW5lIHZlY3RfcHJpbnQJCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8sIERGT1JfTUFSS0VS LCBfcHJpbnQpCisjZGVmaW5lIHZlY3RfY29tcGFyZQkgICBDcHBDb25jYXRUcmlwbGUyKHZl Y3RfLCBERk9SX01BUktFUiwgX2NvbXBhcmUpCisjZGVmaW5lIHZlY3RfaW5zZXJ0CQkgICBD cHBDb25jYXRUcmlwbGUyKHZlY3RfLCBERk9SX01BUktFUiwgX2luc2VydCkKKyNkZWZpbmUg dmVjdF9jbGVhcgkJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0XywgREZPUl9NQVJLRVIsIF9j bGVhcikKKworI2RlZmluZSB1c3ZfaW5zZXJ0CQkgICBDcHBDb25jYXRUcmlwbGUyKHVzdl8s IERGT1JfTUFSS0VSLCBfaW5zZXJ0KQorI2RlZmluZSB1c3Zfc2VhcmNoCQkgICBDcHBDb25j YXRUcmlwbGUyKHVzdl8sIERGT1JfTUFSS0VSLCBfc2VhcmNoKQorCisvKiBGdW5jdGlvbnMg b2YgdGhlIGJpdHBhY2sgdW5pdCAqLworI2RlZmluZSB3aWR0aF9mcm9tX3ZhbCBDcHBDb25j YXRUcmlwbGUyKHdpZHRoXywgREZPUl9NQVJLRVIsIF9mcm9tX3ZhbCkKKyNkZWZpbmUgd2lk dGhfdG9fbWFzayAgQ3BwQ29uY2F0VHJpcGxlMih3aWR0aF8sIERGT1JfTUFSS0VSLCBfdG9f bWFzaykKKyNkZWZpbmUgYml0cGFja19wYWNrICAgQ3BwQ29uY2F0VHJpcGxlMihiaXRwYWNr XywgREZPUl9NQVJLRVIsIF9wYWNrKQorI2RlZmluZSBiaXRwYWNrX3VucGFjayBDcHBDb25j YXRUcmlwbGUyKGJpdHBhY2tfLCBERk9SX01BUktFUiwgX3VucGFjaykKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorICogRW5kIG9mIFJldXNhYmxlIENvZGUKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworLyoKKyAqIERvbid0IGZvcmdldCB0byBpbmNsdWRlIHRoaXMg Y29kZSBpbiB5b3VyIGZpbGUgdGhhdCB1c2VzIHRoaXMgaGVhZGVyCisgKiAgICAgI2luY2x1 ZGUgImRmb3JfdGVtcGxfdW5kZWYuaCIKKyAqCisgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2xpYi9kZm9yX3RlbXBsX3VuZGVmLmggYi9zcmMvaW5jbHVkZS9saWIvZGZvcl90ZW1w bF91bmRlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kNjBk MzYxOTMwOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBs X3VuZGVmLmgKQEAgLTAsMCArMSwyOSBAQAorI3VuZGVmIGl0ZW1fdAorI3VuZGVmIHZlY3Rf dAorI3VuZGVmIHVuaXFzb3J0dmVjdF90CisKKyN1bmRlZiBkZm9yX2NhbGNfZGVsdGFzCisj dW5kZWYgZGZvcl9jYWxjX3dpZHRoCisjdW5kZWYgZGZvcl9wYWNrCisjdW5kZWYgZGZvcl91 bnBhY2sKKyN1bmRlZiBkZm9yX2FuYWx5emUKKyN1bmRlZiBkZm9yX2NhbGNfc3RhdHMKKyN1 bmRlZiBkZm9yX2NhbGNfbmJ5dGVzCisKKyN1bmRlZiB2ZWN0X2NyZWF0ZQorI3VuZGVmIHZl Y3RfY3JlYXRlX2ZpbGxlZAorI3VuZGVmIHZlY3RfcmVzZXJ2ZQorI3VuZGVmIHZlY3RfYXBw ZW5kCisjdW5kZWYgdmVjdF9kZXN0cm95CisjdW5kZWYgdmVjdF9wcmludAorI3VuZGVmIHZl Y3RfY29tcGFyZQorI3VuZGVmIHZlY3RfaW5zZXJ0CisjdW5kZWYgdmVjdF9jbGVhcgorCisj dW5kZWYgdXN2X2luc2VydAorI3VuZGVmIHVzdl9zZWFyY2gKKworI3VuZGVmIHdpZHRoX2Zy b21fdmFsCisjdW5kZWYgd2lkdGhfdG9fbWFzaworI3VuZGVmIGJpdHBhY2tfcGFjaworI3Vu ZGVmIGJpdHBhY2tfdW5wYWNrCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvZGZvcl91 MTYuaCBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3UxNi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi43MTZjOTlkYmM1NQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy9pbmNsdWRlL2xpYi9kZm9yX3UxNi5oCkBAIC0wLDAgKzEsMTMgQEAKKy8qCisgKiBGaWxl OiBkZm9yX3UxNi5oCisgKi8KKworI2lmbmRlZiBfREZPUl9VMTZfSF8KKyNkZWZpbmUgX0RG T1JfVTE2X0hfCisKKy8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KKyNpbmNsdWRlICJkZm9yX3Ux Nl9jb25maWcuaCIKKyNpbmNsdWRlICJkZm9yX3RlbXBsLmgiCisvKiBjbGFuZy1mb3JtYXQg b24gKi8KKworI2VuZGlmIC8qIF9ERk9SX1UxNl9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbGliL2Rmb3JfdTE2X2NvbmZpZy5oIGIvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdTE2 X2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NTE5 MzdhYzUxMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3UxNl9j b25maWcuaApAQCAtMCwwICsxLDQgQEAKKyNkZWZpbmUgREZPUl9JVEVNX1RZUEUgdWludDE2 X3QKKyNkZWZpbmUgREZPUl9NQVJLRVIJICAgdTE2CisjZGVmaW5lIERGT1JfTUFMTE9DCSAg IG1hbGxvYworI2RlZmluZSBERk9SX0ZSRUUJICAgZnJlZQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvZGZvci8uZ2l0aWdub3JlIGIvc3JjL3Rlc3QvZGZvci8uZ2l0aWdub3JlCmluZGV4IDBk NzdhNTEyMTZiLi40NDdlOTVjMGMwOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvZGZvci8uZ2l0 aWdub3JlCisrKyBiL3NyYy90ZXN0L2Rmb3IvLmdpdGlnbm9yZQpAQCAtMSwzICsxLDQgQEAK IHRlc3RfYml0cGFja191MTYKK3Rlc3RfZGZvcl91MTYKIHRlc3RfdW5pcXNvcnR2ZWN0X3Ux NgogdGVzdF92ZWN0X3UxNgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZSBi L3NyYy90ZXN0L2Rmb3IvTWFrZWZpbGUKaW5kZXggYTE1ZDVlYWY3MzYuLjFhZjUyOWM3Mzc4 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9kZm9yL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L2Rm b3IvTWFrZWZpbGUKQEAgLTQwLDcgKzQwLDggQEAgTElCVEFQX09CSlMgPSAkKHRvcF9idWls ZGRpcikvc3JjL3Rlc3QvbGlidGFwL3RhcC5vCiAKIFRFU1RTPSB0ZXN0X3ZlY3RfdTE2IFwK ICAgICAgICB0ZXN0X3VuaXFzb3J0dmVjdF91MTYgXAotICAgICAgIHRlc3RfYml0cGFja191 MTYKKyAgICAgICB0ZXN0X2JpdHBhY2tfdTE2IFwKKyAgICAgICB0ZXN0X2Rmb3JfdTE2CiAK ICQoVEVTVFM6JT0lLm8pOiBDUFBGTEFHUyArPSAtSSQodG9wX2J1aWxkZGlyKS9zcmMvdGVz dCAtREZST05URU5ECiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2Rmb3IvbWVzb24uYnVpbGQg Yi9zcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkCmluZGV4IGNlNzYyYzUyNDMwLi40YTc2MGFi NjhmYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZAorKysgYi9zcmMv dGVzdC9kZm9yL21lc29uLmJ1aWxkCkBAIC04LDYgKzgsNyBAQCBkZm9yX2RpciA9IGpvaW5f cGF0aHMobWVzb24ucHJvamVjdF9zb3VyY2Vfcm9vdCgpLCAnc3JjL2JhY2tlbmQvbGliJykK IGRmb3Jfc291cmNlcyA9IGZpbGVzKAogICBqb2luX3BhdGhzKGRmb3JfZGlyLCAndmVjdF91 MTYuYycpLAogICBqb2luX3BhdGhzKGRmb3JfZGlyLCAnYml0cGFja191MTYuYycpLAorICBq b2luX3BhdGhzKGRmb3JfZGlyLCAnZGZvcl91MTYuYycpLAogKQogCiBkZm9yX3Rlc3RfbGli ID0gc3RhdGljX2xpYnJhcnkoCkBAIC0zNiw2ICszNyw3IEBAIHRlc3RfbmFtZXMgPSBbCiAg ICd0ZXN0X3ZlY3RfdTE2JywKICAgJ3Rlc3RfdW5pcXNvcnR2ZWN0X3UxNicsCiAgICd0ZXN0 X2JpdHBhY2tfdTE2JywKKyAgJ3Rlc3RfZGZvcl91MTYnLAogXQogCiBmb3JlYWNoIHQgOiB0 ZXN0X25hbWVzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yL3Rlc3RfZGZvcl91MTYuYyBi L3NyYy90ZXN0L2Rmb3IvdGVzdF9kZm9yX3UxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4zMjJiNzE0YmEzOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2Rmb3IvdGVzdF9kZm9yX3UxNi5jCkBAIC0wLDAgKzEsMzcxIEBACisvKgorICogdGVz dF9kZm9yLmMKKyAqLworCisjaW5jbHVkZSAibGliL2JpdHBhY2tfdTE2LmgiCisjaW5jbHVk ZSAibGliL2Rmb3JfdTE2LmgiCisjaW5jbHVkZSAibGliL3ZlY3RfdTE2LmgiCisjaW5jbHVk ZSAibGlidGFwL3RhcC5oIgorI2luY2x1ZGUgInRlc3QuaCIKKwordm9pZCB0ZXN0X2RlbHRh X2NhbGN1bGF0aW9uKHNpemVfdCBjbnQsIHVpbnQxNl90IGluQXJyW10sIHNpemVfdCBjbnRE ZWx0YSwKKwkJCQkJCQl1aW50MTZfdCBtYXJEZWx0YXNFeHBlY3RlZFtdLCBzaXplX3QgY250 V2lkdGgsCisJCQkJCQkJdWludDE2X3QgbWFyV2lkdGhzRXhwZWN0ZWRbXSwgc2l6ZV90IGNu dFN0YXQsCisJCQkJCQkJdWludDE2X3QgbWFyV2lkdGhzU3RhdEV4cGVjdGVkW10pOworCit2 b2lkIHRlc3RfY2FsY19leGNlcHRpb25zKHNpemVfdCBudW1EZWx0YXMsIHNpemVfdCBudW1X aWR0aHMsCisJCQkJCQkgIHVpbnQxNl90IG1hcldpZHRoc1tdLCBzaXplX3QgbnVtQ291bnRz LAorCQkJCQkJICB1aW50MTZfdCBtYXJDb3VudHNbXSwgc2l6ZV90IHN6QXdhaXRlZFdpZHRo LAorCQkJCQkJICBzaXplX3QgY250QXdhaXRlZEV4Y0NvdW50KTsKKwordm9pZCB0ZXN0X2Rm b3Ioc2l6ZV90IGNudCwgdWludDE2X3QgYXJyW10sIGV4Y2FsZ190IGlzRXhjVXNhZ2UsCisJ CQkgICBzaXplX3Qgd2lkRGVsdGFBd2FpdGVkLCBzaXplX3QgY250RXhjQ250QXdhaXRlZCwK KwkJCSAgIHNpemVfdCB3aWRFeGNXaWRBd2FpdGVkLCBzaXplX3Qgd2lkRXhjUG9zV2lkQXdh aXRlZCwKKwkJCSAgIHNpemVfdCBjbnRCaXRzQ291bnRBd2FpdGVkLCBzaXplX3QgY250Qnl0 ZUNvdW50QXdhaXRlZCwKKwkJCSAgIGZsb2F0IGZsTWluUmF0aW9Bd2FpdGVkLCB1aW50OF90 IHU4YXJQYWNrQXdhaXRlZFtdKTsKKwordm9pZAordGVzdF9kZWx0YV9jYWxjdWxhdGlvbihz aXplX3QgY250LCB1aW50MTZfdCBpbkFycltdLCBzaXplX3QgY250RGVsdGEsCisJCQkJCSAg IHVpbnQxNl90IG1hckRlbHRhc0V4cGVjdGVkW10sIHNpemVfdCBjbnRXaWR0aCwKKwkJCQkJ ICAgdWludDE2X3QgbWFyV2lkdGhzRXhwZWN0ZWRbXSwgc2l6ZV90IGNudFN0YXQsCisJCQkJ CSAgIHVpbnQxNl90IG1hcldpZHRoc1N0YXRFeHBlY3RlZFtdKQoreworCXZlY3RfdTE2X3Qg dkRlbHRhczsKKwl2ZWN0X3UxNl90IHZXaWR0aENvdW50ZXJzOworCXVuaXFzb3J0dmVjdF91 MTZfdCB1c3ZEZWx0YVdpZHRoczsKKwl2ZWN0X3UxNl90IGF3YWl0ZWQ7CisJaW50IHJlczsK KworCXByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tXG4iKTsKKwlwcmludGYoIlRlc3RcbiIpOworCXByaW50ZigiLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKworCXByaW50Zigi ICBpbkFycjoiKTsKKwlmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNudDsgaSsrKQorCQlwcmlu dGYoIiAldSIsICh1aW50MzJfdClpbkFycltpXSk7CisJcHJpbnRmKCJcbiIpOworCisJdmVj dF91MTZfaW5pdCgmdkRlbHRhcywgMCwgTlVMTCk7CisJdmVjdF91MTZfaW5pdCgmdXN2RGVs dGFXaWR0aHMsIDAsIE5VTEwpOworCXZlY3RfdTE2X2luaXQoJnZXaWR0aENvdW50ZXJzLCAw LCBOVUxMKTsKKworCS8qIFRlc3RlZCBmdW5jdGlvbiAqLworCXJlcyA9IGRmb3JfdTE2X2Nh bGNfZGVsdGFzKGNudCwgaW5BcnIsICZ2RGVsdGFzLCAmdXN2RGVsdGFXaWR0aHMsCisJCQkJ CQkJICAgJnZXaWR0aENvdW50ZXJzKTsKKwljbXBfb2socmVzLCAiPT0iLCAwKTsKKworCXBy aW50ZigiICBEZWx0YSBleHBlY3RlZDoiKTsKKwlmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNu dERlbHRhOyBpKyspCisJCXByaW50ZigiICV1IiwgKHVpbnQzMl90KW1hckRlbHRhc0V4cGVj dGVkW2ldKTsKKwlwcmludGYoIlxuIik7CisKKwlwcmludGYoIiAgRGVsdGEgZmFjdDogICAg Iik7CisJdmVjdF91MTZfcHJpbnQoJnZEZWx0YXMpOworCisJY21wX29rKHZEZWx0YXMuY250 LCAiPT0iLCBjbnQsICJUaGUgRGVsdGEgY291bnQgaXMgT0suIik7CisJdmVjdF91MTZfaW5p dCgmYXdhaXRlZCwgMCwgTlVMTCk7CisJdmVjdF91MTZfZmlsbCgmYXdhaXRlZCwgY250LCBt YXJEZWx0YXNFeHBlY3RlZCk7CisJY21wX29rKHZlY3RfdTE2X2NvbXBhcmUoJnZEZWx0YXMs ICZhd2FpdGVkKSwgIj09IiwgMCwKKwkJICAgIkFsbCBkZWx0YXMgYXJlIGNhbGN1bGF0ZWQg cHJvcGVybHkiKTsKKwl2ZWN0X3UxNl9jbGVhcigmYXdhaXRlZCk7CisKKwlwcmludGYoIiAg V2lkdGggZXhwZWN0ZWQ6Iik7CisJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbnRXaWR0aDsg aSsrKQorCQlwcmludGYoIiAldSIsICh1aW50MzJfdCltYXJXaWR0aHNFeHBlY3RlZFtpXSk7 CisJcHJpbnRmKCJcbiIpOworCisJcHJpbnRmKCIgIFdpZHRoIGZhY3Q6ICAgICIpOworCXZl Y3RfdTE2X3ByaW50KCZ1c3ZEZWx0YVdpZHRocyk7CisKKwljbXBfb2sodXN2RGVsdGFXaWR0 aHMuY250LCAiPT0iLCBjbnRXaWR0aCwgIlRoZSBXaWR0aCBjb3VudCBpcyBPSy4iKTsKKwor CS8qIGRvbid0IHJlYWxseSBuZWVkIGluaXRpYWxpc2F0aW9uIGFmdGVyIHZlY3RfY2xlYW4g aGF2aW5nIGJlZW4gZG9uZQorCSAqIGFib3ZlKi8KKwkvKiB2ZWN0X3UxNl9pbml0KCZhd2Fp dGVkLCAwLCBOVUxMKTsgKi8KKworCXZlY3RfdTE2X2ZpbGwoJmF3YWl0ZWQsIGNudFdpZHRo LCBtYXJXaWR0aHNFeHBlY3RlZCk7CisJY21wX29rKHZlY3RfdTE2X2NvbXBhcmUoJnVzdkRl bHRhV2lkdGhzLCAmYXdhaXRlZCksICI9PSIsIDAsCisJCSAgICJBbGwgZGVsdGEgd2lkdGhz IGlzIE9LLiIpOworCXZlY3RfdTE2X2NsZWFyKCZhd2FpdGVkKTsKKworCXByaW50ZigiICBT dGF0aXN0aWNzIGV4cGVjdGVkOiIpOworCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY250U3Rh dDsgaSsrKQorCQlwcmludGYoIiAldSIsICh1aW50MzJfdCltYXJXaWR0aHNTdGF0RXhwZWN0 ZWRbaV0pOworCXByaW50ZigiXG4iKTsKKworCXByaW50ZigiICBTdGF0aXN0aWNzIGZhY3Q6 ICAgICIpOworCXZlY3RfdTE2X3ByaW50KCZ2V2lkdGhDb3VudGVycyk7CisKKwljbXBfb2so CisJCXVzdkRlbHRhV2lkdGhzLmNudCwgIj09IiwgdldpZHRoQ291bnRlcnMuY250LAorCQki VGhlIGNvdW50IG9mIHN0YXRpc3RpY3Mgb2Ygd2lkdGhzIGlzIGVxdWFsIHRvIHRoZSBjb3Vu dCBvZiB3aWR0aHMuIik7CisKKwkvKiBkb24ndCByZWFsbHkgbmVlZCBpbml0aWFsaXNhdGlv biBhZnRlciB2ZWN0X2NsZWFuIGhhdmluZyBiZWVuIGRvbmUKKwkgKiBhYm92ZSovCisJdmVj dF91MTZfZmlsbCgmYXdhaXRlZCwgY250U3RhdCwgbWFyV2lkdGhzU3RhdEV4cGVjdGVkKTsK KwljbXBfb2sodmVjdF91MTZfY29tcGFyZSgmdldpZHRoQ291bnRlcnMsICZhd2FpdGVkKSwg Ij09IiwgMCwKKwkJICAgIldpZHRoIHN0YXRpc3RpY3MgaXMgT0suIik7CisJdmVjdF91MTZf Y2xlYXIoJmF3YWl0ZWQpOworCisJdmVjdF91MTZfY2xlYXIoJnZEZWx0YXMpOworCXZlY3Rf dTE2X2NsZWFyKCZ1c3ZEZWx0YVdpZHRocyk7CisJdmVjdF91MTZfY2xlYXIoJnZXaWR0aENv dW50ZXJzKTsKK30KKwordm9pZAordGVzdF9jYWxjX2V4Y2VwdGlvbnMoc2l6ZV90IG51bURl bHRhcywgc2l6ZV90IG51bVdpZHRocywgdWludDE2X3QgbWFyV2lkdGhzW10sCisJCQkJCSBz aXplX3QgbnVtQ291bnRzLCB1aW50MTZfdCBtYXJDb3VudHNbXSwKKwkJCQkJIHNpemVfdCBz ekF3YWl0ZWRXaWR0aCwgc2l6ZV90IGNudEF3YWl0ZWRFeGNDb3VudCkKK3sKKwlpbnQgcmVz OworCXZlY3RfdTE2X3QgdldpZHRoQ291bnRlcnM7CisJdW5pcXNvcnR2ZWN0X3UxNl90IHVz dkRlbHRhV2lkdGhzOworCXNpemVfdCB3aWR0aCwgY250RXhjZXB0aW9uczsKKworCXZlY3Rf dTE2X2luaXQoJnVzdkRlbHRhV2lkdGhzLCAwLCBOVUxMKTsKKwl2ZWN0X3UxNl9maWxsKCZ1 c3ZEZWx0YVdpZHRocywgbnVtV2lkdGhzLCBtYXJXaWR0aHMpOworCisJdmVjdF91MTZfaW5p dCgmdldpZHRoQ291bnRlcnMsIDAsIE5VTEwpOworCXZlY3RfdTE2X2ZpbGwoJnZXaWR0aENv dW50ZXJzLCBudW1Db3VudHMsIG1hckNvdW50cyk7CisKKwlyZXMgPSBkZm9yX3UxNl9jYWxj X3dpZHRoKG51bURlbHRhcywgJnVzdkRlbHRhV2lkdGhzLCAmdldpZHRoQ291bnRlcnMsCisJ CQkJCQkJICAmd2lkdGgsICZjbnRFeGNlcHRpb25zKTsKKwljbXBfb2socmVzLCAiPT0iLCAw KTsKKwljbXBfb2sod2lkdGgsICI9PSIsIHN6QXdhaXRlZFdpZHRoLCAiV2lkdGggaXMgT0su Iik7CisJY21wX29rKGNudEV4Y2VwdGlvbnMsICI9PSIsIGNudEF3YWl0ZWRFeGNDb3VudCwg IkV4Y2VwdGlvbnMgbnVtIGlzIE9LIik7CisKKwl2ZWN0X3UxNl9jbGVhcigmdXN2RGVsdGFX aWR0aHMpOworCXZlY3RfdTE2X2NsZWFyKCZ2V2lkdGhDb3VudGVycyk7Cit9CisKK3ZvaWQK K3Rlc3RfZGZvcihzaXplX3QgY250LCB1aW50MTZfdCBhcnJbXSwgZXhjYWxnX3QgaXNFeGNV c2FnZSwKKwkJICBzaXplX3Qgd2lkRGVsdGFXaWR0aEF3YWl0ZWQsIHNpemVfdCBjbnRFeGND bnRBd2FpdGVkLAorCQkgIHNpemVfdCB3aWRFeGNXaWRBd2FpdGVkLCBzaXplX3Qgd2lkRXhj UG9zV2lkQXdhaXRlZCwKKwkJICBzaXplX3QgY250Qml0c0NvdW50QXdhaXRlZCwgc2l6ZV90 IGNudEJ5dGVDb3VudEF3YWl0ZWQsCisJCSAgZmxvYXQgZmxNaW5SYXRpb0F3YWl0ZWQsIHVp bnQ4X3QgdThhclBhY2tBd2FpdGVkW10pCit7CisJaW50IHJlczsKKwlkZm9yX21ldGFfdCBk Zm9yOworCWRmb3Jfc3RhdHNfdCBzdGF0czsKKwl1bmlxc29ydHZlY3RfdTE2X3QgZXh0cmFj dGVkOworCisJcmVzID0gZGZvcl91MTZfcGFjayhjbnQsIGFyciwgaXNFeGNVc2FnZSwgJmRm b3IsIDAsIE5VTEwpOworCWNtcF9vayhyZXMsICI9PSIsIDAsICJkZm9yX3BhY2sgZnVuYyBo YXMgcHJvY2Vzc2VkIE9LLiIpOworCWNtcF9vayhkZm9yLml0ZW1fY250LCAiPT0iLCBjbnQs ICJDb3VudCBvZiBkZWx0YXMgaXMgT0suIik7CisJY21wX29rKGRmb3IuZGVsdGFfd2lkLCAi PT0iLCB3aWREZWx0YVdpZHRoQXdhaXRlZCwgIkRlbHRhIHdpZHRoIGlzIE9LLiIpOworCWNt cF9vayhkZm9yLmV4Y19jbnQsICI9PSIsIGNudEV4Y0NudEF3YWl0ZWQsICJFeGNlcHRpb24g Y291bnQgaXMgT0suIik7CisJY21wX29rKGRmb3IuZXhjX3dpZCwgIj09Iiwgd2lkRXhjV2lk QXdhaXRlZCwgIkV4Y2VwdGlvbiB3aWR0aCBpcyBPSy4iKTsKKwljbXBfb2soZGZvci5leGNf cG9zX3dpZCwgIj09Iiwgd2lkRXhjUG9zV2lkQXdhaXRlZCwKKwkJICAgIkV4Y2VwdGlvbiBw b3NpdGlvbiB3aWR0aCBpcyBPSy4iKTsKKwlvayhkZm9yLnBhY2sgIT0gTlVMTCwgIlBhY2sg aXMgY3JlYXRlZCAobm90IE5VTEwpLiIpOworCisJc3RhdHMgPSBkZm9yX3UxNl9jYWxjX3N0 YXRzKGRmb3IpOworCWNtcF9vayhzdGF0cy5uYml0cywgIj09IiwgY250Qml0c0NvdW50QXdh aXRlZCwgIkJpdHMgY291bnQgaXMgT0suIik7CisJY21wX29rKGRmb3IubmJ5dGVzLCAiPT0i LCBjbnRCeXRlQ291bnRBd2FpdGVkLCAiQnl0ZXMgY291bnQgaXMgT0suIik7CisJb2soc3Rh dHMucmF0aW8gPiBmbE1pblJhdGlvQXdhaXRlZCwgIkNvbXByZXNzaW9uIHJhdGlvIGlzIE9L LiIpOworCisJaWYgKHU4YXJQYWNrQXdhaXRlZCAhPSBOVUxMKQorCQlvaygwID09IG1lbWNt cChkZm9yLnBhY2ssIHU4YXJQYWNrQXdhaXRlZCwgY250Qnl0ZUNvdW50QXdhaXRlZCksCisJ CSAgICJQYWNrIGNvbnRlbnQgaXMgT0suIik7CisJZWxzZQorCQlvaygwID09IDAsICJQYWNr IGNvbnRlbnQgY2hlY2sgaXMgc2tpcHBlZC4iKTsKKworCXRlc3RfcHJpbnRfdTE2X2FycmF5 KGNudCwgKHVpbnQxNl90ICopYXJyLCAiXG5cbk9yaWdpbmFsIGludGVnZXIgYXJyYXkiKTsK Kwl0ZXN0X3ByaW50X3U4X2FycmF5KGRmb3IubmJ5dGVzLCBkZm9yLnBhY2ssICJDb21wcmVz c2VkIGludGVnZXIgYXJyYXkiKTsKKwlwcmludGYoIkNvbXByZXNzaW9uIHJhdGlvOiVmXG5c biIsIHN0YXRzLnJhdGlvKTsKKworCXZlY3RfdTE2X2luaXQoJmV4dHJhY3RlZCwgMCwgTlVM TCk7CisKKwlkZm9yX3UxNl91bnBhY2soJmRmb3IsICZleHRyYWN0ZWQsIDAsIE5VTEwpOwor CWNtcF9vayhleHRyYWN0ZWQuY250LCAiPT0iLCBjbnQsICJFeHRyYWN0ZWQgY291bnQgaXMg T0siKTsKKwljbXBfb2soMCwgIj09IiwgbWVtY21wKGFyciwgZXh0cmFjdGVkLm0sIGNudCks CisJCSAgICJFeHRyYWN0ZWQgYXJyYXkgaXMgZXF1YWwgdG8gb3JpZ2luYWwiKTsKKworCWZy ZWUoZGZvci5wYWNrKTsKKwl2ZWN0X3UxNl9jbGVhcigmZXh0cmFjdGVkKTsKK30KKworaW50 CittYWluKHZvaWQpCit7CisJcGxhbigxMzApOworCXByaW50ZigiPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IERFTFRBIENB TENVTEFUSU9OXG4iKTsKKwl7CisJCXRlc3RfZGVsdGFfY2FsY3VsYXRpb24oCisJCQkxMCwg KHVpbnQxNl90W10pIHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSB9LCAvKiBpbkFy ciAqLworCQkJMTAsCisJCQkodWludDE2X3RbXSkgeyAwLCAxLCAxLCAxLCAxLCAxLCAxLCAx LCAxLAorCQkJCQkJICAgMSB9LAkgICAvKiBtYXJEZWx0YXNFeHBlY3RlZCovCisJCQkxLCAo dWludDE2X3RbXSkgeyAxIH0sIC8qIG1hcldpZHRoc0V4cGVjdGVkICovCisJCQkxLCAodWlu dDE2X3RbXSkgeyAxMCB9IC8qIG1hcldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7CisKKwkJdGVz dF9kZWx0YV9jYWxjdWxhdGlvbigKKwkJCTEwLCAodWludDE2X3RbXSkgeyAxLCAzLCA1LCA3 LCA5LCAxMSwgMTMsIDE1LCAxNywgMTkgfSwgLyogaW5BcnIgKi8KKwkJCTEwLAorCQkJKHVp bnQxNl90W10pIHsgMSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwKKwkJCQkJCSAgIDIgfSwJ CSAgLyogbWFyRGVsdGFzRXhwZWN0ZWQqLworCQkJMiwgKHVpbnQxNl90W10pIHsgMSwgMiB9 LCAvKiBtYXJXaWR0aHNFeHBlY3RlZCAqLworCQkJMiwgKHVpbnQxNl90W10pIHsgMSwgOSB9 IC8qIG1hcldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7CisKKwkJdGVzdF9kZWx0YV9jYWxjdWxh dGlvbigKKwkJCTE0LAorCQkJKHVpbnQxNl90W10pIHsgMTAwLCAyMDAsIDMwMCwgNDAwLCA0 MDEsIDQwMiwgNDAzLCA0MDQsIDQwNiwgNDA4LAorCQkJCQkJICAgNDEwLCA0MTIsIDQxNCwg NDE2IH0sIC8qIGluQXJyICovCisJCQkxNCwKKwkJCSh1aW50MTZfdFtdKSB7IDEwMCwgMTAw LCAxMDAsIDEwMCwgMSwgMSwgMSwgMSwgMiwgMiwgMiwgMiwgMiwKKwkJCQkJCSAgIDIgfSwJ CQkgLyogbWFyRGVsdGFzRXhwZWN0ZWQqLworCQkJMywgKHVpbnQxNl90W10pIHsgMSwgMiwg NyB9LCAvKiBtYXJXaWR0aHNFeHBlY3RlZCAqLworCQkJMywgKHVpbnQxNl90W10pIHsgNCwg NiwgNCB9IC8qIG1hcldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7CisKKwkJdGVzdF9kZWx0YV9j YWxjdWxhdGlvbigxLCAodWludDE2X3RbXSkgeyAxMjMgfSwgLyogaW5BcnIgKi8KKwkJCQkJ CQkgICAxLCAodWludDE2X3RbXSkgeyAxMjMgfSwgLyogbWFyRGVsdGFzRXhwZWN0ZWQqLwor CQkJCQkJCSAgIDEsICh1aW50MTZfdFtdKSB7IDcgfSwJLyogbWFyV2lkdGhzRXhwZWN0ZWQg Ki8KKwkJCQkJCQkgICAxLAorCQkJCQkJCSAgICh1aW50MTZfdFtdKSB7IDEgfSAvKiBtYXJX aWR0aHNTdGF0RXhwZWN0ZWQgKi8pOworCisJCXRlc3RfZGVsdGFfY2FsY3VsYXRpb24oMCwg TlVMTCwgLyogaW5BcnIgKi8KKwkJCQkJCQkgICAwLCBOVUxMLCAvKiBtYXJEZWx0YXNFeHBl Y3RlZCovCisJCQkJCQkJICAgMCwgTlVMTCwgLyogbWFyV2lkdGhzRXhwZWN0ZWQgKi8KKwkJ CQkJCQkgICAwLCBOVUxMIC8qIG1hcldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7CisJfQorCXBy aW50ZigiVGVzdCBERUxUQSBDQUxDVUxBVElPTiBQQVNTRURcbiIpOworCXByaW50ZigiPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iKTsKKworCXByaW50 ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJcHJp bnRmKCJUZXN0IEVYQ0VQVElPTlMgQ0FMQ1VMQVRJT05cbiIpOworCXsKKwkJaW50IHJlczsK KwkJdmVjdF91MTZfdCB2V2lkdGhDb3VudGVyczsKKwkJdW5pcXNvcnR2ZWN0X3UxNl90IHVz dkRlbHRhV2lkdGhzOworCQlzaXplX3Qgd2lkdGgsIGNudEV4Y2VwdGlvbnM7CisKKwkJdmVj dF91MTZfaW5pdCgmdXN2RGVsdGFXaWR0aHMsIDAsIE5VTEwpOworCQl2ZWN0X3UxNl9maWxs KCZ1c3ZEZWx0YVdpZHRocywgMywgKHVpbnQxNl90W10pIHsgMSwgMiwgNyB9KTsKKworCQl2 ZWN0X3UxNl9pbml0KCZ2V2lkdGhDb3VudGVycywgMCwgTlVMTCk7CisJCXZlY3RfdTE2X2Zp bGwoJnZXaWR0aENvdW50ZXJzLCAzLCAodWludDE2X3RbXSkgeyA0LCA2LCA0IH0pOyAvLyA0 KzYrND0xNAorCisJCXJlcyA9IGRmb3JfdTE2X2NhbGNfd2lkdGgoMTQsICZ1c3ZEZWx0YVdp ZHRocywgJnZXaWR0aENvdW50ZXJzLCAmd2lkdGgsCisJCQkJCQkJCSAgJmNudEV4Y2VwdGlv bnMpOworCQljbXBfb2socmVzLCAiPT0iLCAwKTsKKwkJY21wX29rKHdpZHRoLCAiPT0iLCA3 LCAiV2lkdGhzPXsxLDIsN30sIENvdW50ZXJzPXs0LDYsNH0gPT4gd2lkdGg9NyIpOworCQlj bXBfb2soY250RXhjZXB0aW9ucywgIj09IiwgMCwKKwkJCSAgICJXaWR0aHM9ezEsMiw3fSwg Q291bnRlcnM9ezQsNiw0fSA9PiBleGNwdGlvbnNfbnVtPTAiKTsKKwl9CisKKwl0ZXN0X2Nh bGNfZXhjZXB0aW9ucygxNCwgMywgKHVpbnQxNl90W10pIHsgMSwgMiwgNyB9LCAvKiB3aWR0 aHMgb2YgZGVsdGFzKi8KKwkJCQkJCSAzLCAodWludDE2X3RbXSkgeyA0LCA2LCA0IH0sCSAg Lyogc3RhdGlzdGljcyAqLworCQkJCQkJIDcsCSAvKiB3aWR0aCBvZiBzaG9ydCBkZWx0YXMg Ki8KKwkJCQkJCSAwKTsgLyogbnVtYmVyIG9mIGV4Y2VwdGlvbnMqLworCisJdGVzdF9jYWxj X2V4Y2VwdGlvbnMoMTQsIDMsICh1aW50MTZfdFtdKSB7IDEsIDIsIDcgfSwgLyogd2lkdGhz ICovCisJCQkJCQkgMywgKHVpbnQxNl90W10pIHsgNiwgNywgMSB9LAkgIC8qIHN0YXQgKi8K KwkJCQkJCSAyLCAxKTsgLyogc2hvcnQgZGVsdGFzIHdpZHRoLCBleGNlcHRpb25zIGNvdW50 Ki8KKworCXRlc3RfY2FsY19leGNlcHRpb25zKDQwLCAzLCAodWludDE2X3RbXSkgeyA1LCA2 LCAxMiB9LCAvKiB3aWR0aHMgKi8KKwkJCQkJCSAzLCAodWludDE2X3RbXSkgeyAzNiwgMiwg MiB9LAkgICAvKiBzdGF0ICovCisJCQkJCQkgNSwgNCk7IC8qIHNob3J0IGRlbHRhcyB3aWR0 aCwgZXhjZXB0aW9ucyBjb3VudCovCisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucyg0MCwgNCwg KHVpbnQxNl90W10pIHsgNSwgNiwgNywgMTIgfSwgNCwKKwkJCQkJCSAodWludDE2X3RbXSkg eyAzNiwgMSwgMSwgMiB9LCA1LCA0KTsKKworCXRlc3RfY2FsY19leGNlcHRpb25zKDQwLCA0 LCAodWludDE2X3RbXSkgeyA1LCA2LCA3LCAxMiB9LCA0LAorCQkJCQkJICh1aW50MTZfdFtd KSB7IDM1LCAxLCAyLCAyIH0sIDYsIDQpOworCisJdGVzdF9jYWxjX2V4Y2VwdGlvbnMoNDAs IDQsICh1aW50MTZfdFtdKSB7IDUsIDYsIDcsIDEyIH0sIDQsCisJCQkJCQkgKHVpbnQxNl90 W10pIHsgMzQsIDEsIDIsIDMgfSwgNywgMyk7CisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucyg0 MCwgNCwgKHVpbnQxNl90W10pIHsgNSwgNiwgNywgMTIgfSwgNCwKKwkJCQkJCSAodWludDE2 X3RbXSkgeyAxLCAzNCwgMiwgMyB9LCA3LCAzKTsKKworCXRlc3RfY2FsY19leGNlcHRpb25z KDQwLCA0LCAodWludDE2X3RbXSkgeyA1LCA2LCA3LCAxMiB9LCA0LAorCQkJCQkJICh1aW50 MTZfdFtdKSB7IDEsIDMzLCAyLCA0IH0sIDcsIDQpOworCisJdGVzdF9jYWxjX2V4Y2VwdGlv bnMoNDAsIDQsICh1aW50MTZfdFtdKSB7IDUsIDYsIDcsIDEyIH0sIDQsCisJCQkJCQkgKHVp bnQxNl90W10pIHsgMSwgMzIsIDIsIDUgfSwgMTIsIDApOworCisJcHJpbnRmKCJUZXN0IEVY Q0VQVElPTlMgQ0FMQ1VMQVRJT04gUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVz dCBERUxUQSBGUkFNRSBPRiBSRUZFUkVOQ0VTIFBBQ0tJTkdcbiIpOworCisJdGVzdF9kZm9y KDE2LAorCQkJICAodWludDE2X3RbXSkgeyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5 LCAxMCwgMTEsIDEyLCAxMywgMTQsCisJCQkJCQkJIDE1IH0sIC8qIGNudCwgYXJyYXkgKi8K KwkJCSAgREZPUl9FWENfRE9OVF9VU0UsICAgLyogZmxhZyBvbiB1c2Ugb2YgZXhjZXB0aW9u cyAqLworCQkJICAxLAkJCQkgICAvKiBhd2FpdGVkIHdpZHRoIG9mIHNob3J0IGRlbHRhcyAq LworCQkJICAwLAkJCQkgICAvKiBhd2FpdGVkIGNvdW50IG9mIGV4Y2VwdGlvbnMgKi8KKwkJ CSAgMCwJCQkJICAgLyogYXdhaXRlZCBleGNlcHRpb24gd2lkdGgqLworCQkJICAwLAkJCQkg ICAvKiBhd2FpdGVkIGV4Y2VwdGlvbiBwb3NpdGlvbiB3aWR0aCovCisJCQkgIDE2LAkJCQkg ICAvKiBhd2FpdGVkIGJpdHMgY291bnQgKi8KKwkJCSAgMiwJCQkJICAgLyogY250Qnl0ZUNv dW50QXdhaXRlZCAqLworCQkJICAxNS45OSwgLyogYXdhaXRlZCByYXRpbyBtaW4gdmFsdWUg KHJhdGlvID49IDE1Ljk5KSAqLworCQkJICAodWludDhfdFtdKSB7IDB4RkUsIDB4RkYgfSk7 CisKKwl0ZXN0X2Rmb3IoMTYsCisJCQkgICh1aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQs IDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwKKwkJCQkJCQkgMTUgfSwgLyog Y250LCBhcnJheSAqLworCQkJICBERk9SX0VYQ19VU0UsIC8qIGZsYWcgb24gdXNlIG9mIGV4 Y2VwdGlvbnMgKi8KKwkJCSAgMSwJCQkvKiBhd2FpdGVkIHdpZHRoIG9mIHNob3J0IGRlbHRh cyAqLworCQkJICAwLAkJCS8qIGF3YWl0ZWQgY291bnQgb2YgZXhjZXB0aW9ucyAqLworCQkJ ICAwLAkJCS8qIGF3YWl0ZWQgZXhjZXB0aW9uIHdpZHRoKi8KKwkJCSAgMCwJCQkvKiBhd2Fp dGVkIGV4Y2VwdGlvbiBwb3NpdGlvbiB3aWR0aCovCisJCQkgIDE2LAkJCS8qIGF3YWl0ZWQg Yml0cyBjb3VudCAqLworCQkJICAyLAkJCS8qIGNudEJ5dGVDb3VudEF3YWl0ZWQgKi8KKwkJ CSAgMTUuOTksCQkvKiBhd2FpdGVkIHJhdGlvIG1pbiB2YWx1ZSAocmF0aW8gPj0gMTUuOTkp ICovCisJCQkgICh1aW50OF90W10pIHsgMHhGRSwgMHhGRiB9KTsKKworCXRlc3RfZGZvcigx NiwKKwkJCSAgKHVpbnQxNl90W10pIHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwg MTAsIDExLCAxMiwgMTMsIDE0LAorCQkJCQkJCSAxMDIzIH0sIC8qIGNudCwgYXJyYXkgKi8K KwkJCSAgREZPUl9FWENfRE9OVF9VU0UsCSAvKiBmbGFnIG9uIHVzZSBvZiBleGNlcHRpb25z ICovCisJCQkgIDEwLAkJCQkJIC8qIGF3YWl0ZWQgd2lkdGggb2Ygc2hvcnQgZGVsdGFzICov CisJCQkgIDAsCQkJCQkgLyogYXdhaXRlZCBjb3VudCBvZiBleGNlcHRpb25zICovCisJCQkg IDAsCQkJCQkgLyogYXdhaXRlZCBleGNlcHRpb24gd2lkdGgqLworCQkJICAwLAkJCQkJIC8q IGF3YWl0ZWQgZXhjZXB0aW9uIHBvc2l0aW9uIHdpZHRoKi8KKwkJCSAgMTAgKiAxNiwJCQkJ IC8qIGF3YWl0ZWQgYml0cyBjb3VudCAqLworCQkJICAyMCwJCQkJCSAvKiBhd2FpdGVkIGJ5 dGVzIGNvdW50ICovCisJCQkgIDEuNSwJCQkJCSAvKiBhd2FpdGVkIHJhdGlvIG1pbiB2YWx1 ZSAqLworCQkJICAodWludDhfdFtdKSB7IDB4MDAsIDB4MDQsIDB4MTAsIDB4NDAsIDB4MDAs IDB4MDEsIDB4MDQsCisJCQkJCQkJMHgxMCwgMHg0MCwgMHgwMCwgMHgwMSwgMHgwNCwgMHgx MCwgMHg0MCwKKwkJCQkJCQkweDAwLCAweDAxLCAweDA0LCAweDEwLCAweDQwLCAweEZDIH0p OworCisJdGVzdF9kZm9yKDE2LAorCQkJICAodWludDE2X3RbXSkgeyAwLCAxLCAyLCAzLCA0 LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsCisJCQkJCQkJIDEwMjMgfSwg LyogY250LCBhcnJheSAqLworCQkJICBERk9SX0VYQ19VU0UsCQkJIC8qIGZsYWcgb24gdXNl IG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMSwJCQkJCSAvKiBhd2FpdGVkIHdpZHRoIG9mIHNo b3J0IGRlbHRhcyAqLworCQkJICAxLAkJCQkJIC8qIGF3YWl0ZWQgY291bnQgb2YgZXhjZXB0 aW9ucyAqLworCQkJICA5LAkJCQkJIC8qIGF3YWl0ZWQgZXhjZXB0aW9uIHdpZHRoKi8KKwkJ CSAgNCwJCQkJCSAvKiBhd2FpdGVkIGV4Y2VwdGlvbiBwb3NpdGlvbiB3aWR0aCovCisJCQkg IDE2ICogMSArIDkgKyA0LAkJIC8qIGF3YWl0ZWQgYml0cyBjb3VudCAqLworCQkJICA0LAkJ CQkJIC8qIGF3YWl0ZWQgYnl0ZXMgY291bnQgKi8KKwkJCSAgNy45OSwJCQkJCSAvKiBhd2Fp dGVkIHJhdGlvIG1pbiB2YWx1ZSAqLworCQkJICAodWludDhfdFtdKSB7IDB4RkUsIDB4RkYs IDB4RjgsIDB4MUYgfSk7CisKKwl0ZXN0X2Rmb3IoMzAsIC8qIGNudCAqLworCQkJCQkgICh1 aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQsCisJCQkJCQkJCQkgNSwgNiwgNywgOCwgOSwK KyAgLyogZGVsdGE9MiwgcG9zPTEwLCBkZWx0YXBvcz0xMCAqLyAxMSwgMTIsIDEzLCAxNCwg MTUsCisJCQkJCQkJCQkgMTYsIDE3LCAxOCwgMTksIDIwLAorCQkJCQkJCQkJIDIxLCAyMiwg MjMsIDI0LCAyNSwKKyAgLyogZGVsdGE9MywgcG9zPTI1LCBkZWx0YXBvcz0xNSAqLyAyOCwg MjksIDMwLCAzMSwKKyAgLyogZGVsdGE9MywgcG9zPTI5LCBkZWx0YXBvcz00ICovCSAzNCB9 LCAgCQkJCS8qIGFycmF5ICovCisJCQkgIERGT1JfRVhDX1VTRSwJCQkgIC8qIGZsYWcgb24g dXNlIG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMSwJCQkJCSAgLyogYXdhaXRlZCB3aWR0aCBv ZiBzaG9ydCBkZWx0YXMgKi8KKwkJCSAgMywJCQkJCSAgLyogYXdhaXRlZCBjb3VudCBvZiBl eGNlcHRpb25zICovCisJCQkgIDEsCQkJCQkgIC8qIGF3YWl0ZWQgZXhjZXB0aW9uIHdpZHRo Ki8KKwkJCSAgNCwJCQkJCSAgLyogYXdhaXRlZCBleGNlcHRpb24gcG9zaXRpb24gd2lkdGgq LworCQkJICAzMCAqIDEgKyAzICogMSArIDMgKiA0LCAvKiBhd2FpdGVkIGJpdHMgY291bnQg Ki8KKwkJCSAgNiwJCQkJCSAgLyogYXdhaXRlZCBieXRlcyBjb3VudCAqLworCQkJICA5Ljk5 LAkJCQkJICAvKiBhd2FpdGVkIHJhdGlvIG1pbiB2YWx1ZSAqLworCQkJICAodWludDhfdFtd KSB7IDB4RkUsIDB4RkIsIDB4RkYsIDB4RkYsIDB4RjUsIDB4MDkgfSk7CisKKwlwcmludGYo IlRlc3QgREVMVEEgRlJBTUUgT0YgUkVGRVJFTkNFUyBQQUNLSU5HIFBBU1NFRFxuIik7CisJ cHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIp OworCisJZG9uZV90ZXN0aW5nKCk7Cit9Ci0tIAoyLjUzLjAKCg== --------------sLR6ZLnPAxZtB7bFceJnj5Kn Content-Type: text/x-patch; charset=UTF-8; name="v09-0003-Use-Delta-Frame-of-Reference-DFoR-to-compress-pr.patch" Content-Disposition: attachment; filename*0="v09-0003-Use-Delta-Frame-of-Reference-DFoR-to-compress-pr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkYjYyZjBkNmJlMzhmMWUwMWExOGY4Y2UyNGU1YjAzYjVjYjkzNTk1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYwOSAzLzNdIFVzZSBEZWx0YSBGcmFtZSBvZiBSZWZlcmVuY2UgKERGb1IpIHRvIGNv bXByZXNzCiBwcnVuZS9mcmVlemUgcmVjb3Jkcy4KCkEgcHJ1bmUvZnJlZXplIHJlY29yZCBj b250YWlucyBmb3VyIHNlcXVlbmNlcyBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcKZnJvemVu LCByZWRpcmVjdGVkLCB1bnVzZWQsIGFuZCBkZWFkIHR1cGxlcy4gVXNpbmcgREZvUiBhbGdv cml0aG1zLCB0aGUKYHVudXNlZGAgYW5kIGBkZWFkYCBzZXF1ZW5jZXMgYXJlIG5vdyBjb21w cmVzc2VkLiBUaGUgYGZyb3plbmAKYW5kIGByZWRpcmVjdGVkYCBzZXF1ZW5jZXMgY2Fubm90 IGJlIGNvbXByZXNzZWQgYmVjYXVzZSB0aGUgb3JkZXIgb2YKdGhlaXIgZWxlbWVudHMgaXMg c2lnbmlmaWNhbnQsIGFuZCBERm9SIGRvZXMgbm90IHN1cHBvcnQgdW5zb3J0ZWQKc2VxdWVu Y2VzIHlldC4gVGhlIHRoZW9yZXRpY2FsIGNvbXByZXNzaW9uIHJhdGlvIGZvciBkZm9yX3Ux NiBjYW4gcmVhY2gKdXAgdG8gMTYuCgpUaGUgbmV3IEdVQyB3YWxfcHJ1bmVfZGZvcl9jb21w cmVzc2lvbiBjb250cm9scyAoZW5hYmxlcyBvcgpkaXNhYmxlcykgY29tcHJlc3Npb24gZm9y IHBydW5lL2ZyZWV6ZSByZWNvcmRzLgoKQW4gaW50ZWdyYWwgVEFQIHRlc3QsIDA1Ml9wcnVu ZV9kZm9yX2NvbXByZXNzaW9uLnBsLCBoYXMgYmVlbgppbXBsZW1lbnRlZC4gSXQgZGVtb25z dHJhdGVzIGFuIGF2ZXJhZ2UgY29tcHJlc3Npb24gcmF0aW8gb2YgYXQgbGVhc3QgNQp3aGVu IGFuYWx5emluZyBwcnVuZS9mcmVlemUgcmVjb3JkcyBpbiBwcmFjdGljZS4KCkF1dGhvcjog RXZnZW55IFZvcm9wYWV2IDxldmdlbnkudm9yb3BhZXZAdGFudG9ybGFicy5jb20+IDxldm9y b3BAZ21haWwuY29tPgpSZXZpZXdlZCBieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRl eC10ZWFtLnJ1PgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMg ICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICAgIHwgMTQxICsrKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNj L01ha2VmaWxlICAgICAgICAgIHwgICAxICsKIC4uLi9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGFt X3hsb2dfZGZvci5jICAgICAgICB8IDEwOSArKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3Mv cm1ncmRlc2MvaGVhcGRlc2MuYyAgICAgICAgfCAgNDkgKystCiBzcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDIgKwogc3JjL2Jpbi9wZ193 YWxkdW1wLy5naXRpZ25vcmUgICAgICAgICAgICAgICAgIHwgICA5ICsKIHNyYy9iaW4vcGdf d2FsZHVtcC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAyNiArLQogc3JjL2Jpbi9w Z193YWxkdW1wL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nX2Rmb3IuaCAgICAgICAgIHwgMTM3ICsrKysrKysr Kwogc3JjL3Rlc3QvZGZvci9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy ICsKIC4uLi9yZWNvdmVyeS90LzA1Ml9wcnVuZV9kZm9yX2NvbXByZXNzaW9uLnBsICB8IDI4 MyArKysrKysrKysrKysrKysrKysKIDE2IGZpbGVzIGNoYW5nZWQsIDc1NSBpbnNlcnRpb25z KCspLCAzNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9h Y2Nlc3Mvcm1ncmRlc2MvaGVhcGFtX3hsb2dfZGZvci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nX2Rmb3IuaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3JlY292ZXJ5L3QvMDUyX3BydW5lX2Rmb3JfY29tcHJlc3Npb24ucGwK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBmM2Y0MTlkM2Rj MS4uMmVjYmQyNzdjMDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cu YwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2J1Zm1hc2suaCIKICNp bmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9n X2Rmb3IuaCIKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUg ImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIgpAQCAtMTA1 LDExICsxMDYsMjAgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAkJY2hhcgkgICAqZGF0YXB0ciA9IFhMb2dSZWNHZXRCbG9ja0RhdGEocmVj b3JkLCAwLCAmZGF0YWxlbik7CiAJCWJvb2wJCWRvX3BydW5lOwogCisJCS8qCisJCSAqIERG b1IgdW5wYWNraW5nIG5lZWRzIG91dGVyIGJ1ZmZlcnMgZm9yIHNhdmluZyByZXN1bHRzIGFu ZCBmb3IKKwkJICogYWxsb2NhdGluZyBjb250YWluZXJzIHVzZWQgZHVyaW5nIGRlY29tcHJl c3Npb24uIDIgYnVmZmVyIHBhcnRzIGFyZQorCQkgKiBpbnRlbmRlZCBmb3Igc2F2aW5nIHNl cXVlbmNlcyBvZiBvZmZzZXRzIG9mIGRlYWQgYW5kIHVudXNlZCB0dXBsZXMuCisJCSAqIEFk ZGl0aW9uYWwgdGhyZWUgY2h1bmtzIGFyZSBuZWVkZWQgZm9yIGludGVybmFsIG5lZWRzIG9m IHRoZQorCQkgKiBkZm9yX3VucGFjayBmdW5jdGlvbi4KKwkJICovCisJCXVpbnQ4IGRmb3Jf YnVmWzUgKiBERk9SX0JVRl9QQVJUX1NJWkVdOworCiAJCWhlYXBfeGxvZ19kZXNlcmlhbGl6 ZV9wcnVuZV9hbmRfZnJlZXplKGRhdGFwdHIsIHhscmVjLmZsYWdzLAogCQkJCQkJCQkJCQkg ICAmbnBsYW5zLCAmcGxhbnMsICZmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJICAgJm5yZWRp cmVjdGVkLCAmcmVkaXJlY3RlZCwKIAkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwK LQkJCQkJCQkJCQkJICAgJm51bnVzZWQsICZub3d1bnVzZWQpOworCQkJCQkJCQkJCQkgICAm bnVudXNlZCwgJm5vd3VudXNlZCwgZGZvcl9idWYpOwogCiAJCWRvX3BydW5lID0gbnJlZGly ZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMDsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA3NGMzNTViZTIxOS4uYTdkZTllYTdiMDUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xNiw2ICsxNiw3IEBACiAK ICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94 bG9nLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nX2Rmb3IuaCIKICNpbmNsdWRl ICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5o IgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCkBAIC0yMzgsNyArMjM5LDYgQEAgc3Rh dGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBp LCBib29sIGRvX3BydW5lLCBib29sIGQKIHN0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX3Nl dF92bShQcnVuZVN0YXRlICpwcnN0YXRlLCBQcnVuZVJlYXNvbiByZWFzb24sCiAJCQkJCQkJ CSAgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUpOwogCi0KIC8qCiAgKiBPcHRpb25h bGx5IHBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBpbiB0aGUgc3BlY2lmaWVkIHBh Z2UuCiAgKgpAQCAtMjUyOSw2ICsyNTI5LDI0IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhl YXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKIAlyZXR1cm4gbnBsYW5zOwog fQogCisvKgorICogQ29tcGFyYXRvciBmb3Igb2Zmc2V0cy4KKyAqLworc3RhdGljIGludAor b2Zmc2V0X2NtcChjb25zdCB2b2lkICphcmcxLCBjb25zdCB2b2lkICphcmcyKQoreworCWNv bnN0IE9mZnNldE51bWJlciAqb2Zmc2V0MSA9IGFyZzE7CisJY29uc3QgT2Zmc2V0TnVtYmVy ICpvZmZzZXQyID0gYXJnMjsKKwlyZXR1cm4gKCpvZmZzZXQxID4gKm9mZnNldDIpIC0gKCpv ZmZzZXQxIDwgKm9mZnNldDIpOworfQorCisjZGVmaW5lIFNUX1NPUlQgc29ydF9vZmZzZXRz CisjZGVmaW5lIFNUX0VMRU1FTlRfVFlQRV9WT0lECisjZGVmaW5lIFNUX0NPTVBBUkUoYSwg Yikgb2Zmc2V0X2NtcChhLCBiKQorI2RlZmluZSBTVF9TQ09QRSBzdGF0aWMKKyNkZWZpbmUg U1RfREVGSU5FCisjaW5jbHVkZSAibGliL3NvcnRfdGVtcGxhdGUuaCIKKwogLyoKICAqIFdy aXRlIGFuIFhMT0dfSEVBUDJfUFJVTkUqIFdBTCByZWNvcmQKICAqCkBAIC0yNTg2LDExICsy NjA0LDM0IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24s IEJ1ZmZlciBidWZmZXIsCiAJYm9vbAkJZG9fc2V0X3ZtID0gdm1mbGFncyAmIFZJU0lCSUxJ VFlNQVBfVkFMSURfQklUUzsKIAlib29sCQloZWFwX2ZwaV9hbGxvd2VkID0gdHJ1ZTsKIAor CWRmb3JfbWV0YV90IGRlYWRfbWV0YSA9IHsgMCB9OworCWRmb3JfbWV0YV90IHVudXNlZF9t ZXRhID0geyAwIH07CisKKwl1aW50OCBkZWFkX21ldGFfcGFja1tNQVhfUEFDS0VEX01FVEFf U0laRV07CisJdWludDggdW51c2VkX21ldGFfcGFja1tNQVhfUEFDS0VEX01FVEFfU0laRV07 CisKKwkvKgorCSAqIFNpbmNlIHRoaXMgY29kZSBpcyBydW4gaW4gYSBjcml0aWNhbCBzZWN0 aW9uIHdlIGNhbid0IHVzZSBkeW5hbWljCisJICogYWxsb2NhdGlvbiBkdXJpbmcgREZvUiBw YWNraW5nLCBidXQgd2UgY2FuIHVzZSBidWZmZXJzIGFsbG9jYXRlZCBpbiB0aGUKKwkgKiBz dGFjay4gV2UgbmVlZCBhdCBtYXhpbXVtOgorCSAqIDEpIDIgKiBERk9SX0JVRl9QQVJUX1NJ WkUKKwkgKiAgICAgICAgLSBmb3IgMiBwYWNrZWQgc2VxdWVuY2VzOiBkZWFkLCB1bnVzZWQK KwkgKiAyKSAzICogREZPUl9CVUZfUEFSVF9TSVpFCisJICogCQkgIC0gZm9yIGludGVybmFs IG5lZWRzIG9mIHRoZSBkZm9yX3BhY2sgZnVuY3Rpb24uCisJICoKKwkgKiBPdmVyYWxsLCA1 ICogREZPUl9CVUZfUEFSVF9TSVpFCisJICovCisJdWludDggZGZvcl9idWZbNSAqIERGT1Jf QlVGX1BBUlRfU0laRV07CisKIAlBc3NlcnQoKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpID09IHZtZmxhZ3MpOwogCiAJeGxyZWMuZmxhZ3MgPSAwOwogCXJlZ2J1Zl9m bGFnc19oZWFwID0gUkVHQlVGX1NUQU5EQVJEOwogCisJLyogSGV1cmlzdGljYWxseSBlc3Rp bWF0ZWQgdGhyZXNob2xkIGZvciB0dXJuaW5nIG9uIERGb1IgY29tcHJlc3Npb24gKi8KKwlp ZiAod2FsX3BydW5lX2Rmb3JfY29tcHJlc3Npb24gJiYgKG5kZWFkID4gOSB8fCBudW51c2Vk ID4gOSkpCisJCXhscmVjLmZsYWdzIHw9IFhMSFBfREZPUl9DT01QUkVTU0VEOworCiAJLyoK IAkgKiBXZSBjYW4gYXZvaWQgYW4gRlBJIG9mIHRoZSBoZWFwIHBhZ2UgaWYgdGhlIG9ubHkg bW9kaWZpY2F0aW9uIHdlIGFyZQogCSAqIG1ha2luZyB0byBpdCBpcyB0byBzZXQgUERfQUxM X1ZJU0lCTEUgYW5kIGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZQpAQCAtMjYyMiw2ICsy NjYzLDEwIEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24s IEJ1ZmZlciBidWZmZXIsCiAJaWYgKGRvX3NldF92bSkKIAkJWExvZ1JlZ2lzdGVyQnVmZmVy KDEsIHZtYnVmZmVyLCAwKTsKIAorCS8qCisJICogeGxocF9mcmVlemVfcGxhbnMgaXMgYXJy YXkgb2Ygc3RydWN0dXJlcyBhbmQgaXMgbm90IGEgc2VxdWVuY2UKKwkgKiBvZiBpbnRlZ2Vy cywgdGhhdCBpcyB3aHkgd2UgY2Fubm90IHVzZSBERm9SIGNvbXByZXNzaW9uIGhlcmUuCisJ ICovCiAJaWYgKG5mcm96ZW4gPiAwKQogCXsKIAkJaW50CQkJbnBsYW5zOwpAQCAtMjY1MCwy NiArMjY5NSw5MiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHJlZGlyZWN0 ZWQsCiAJCQkJCQkJc2l6ZW9mKE9mZnNldE51bWJlclsyXSkgKiBucmVkaXJlY3RlZCk7CiAJ fQotCWlmIChuZGVhZCA+IDApCisJaWYgKCh4bHJlYy5mbGFncyAmIFhMSFBfREZPUl9DT01Q UkVTU0VEKSAhPSAwKQogCXsKLQkJeGxyZWMuZmxhZ3MgfD0gWExIUF9IQVNfREVBRF9JVEVN UzsKKwkJaW50IGRlYWRfcGFja19yZXMgPSAwOworCQlpbnQgdW51c2VkX3BhY2tfcmVzID0g MDsKIAotCQlkZWFkX2l0ZW1zLm50YXJnZXRzID0gbmRlYWQ7Ci0JCVhMb2dSZWdpc3RlckJ1 ZkRhdGEoMCwgJmRlYWRfaXRlbXMsCi0JCQkJCQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVt cywgZGF0YSkpOwotCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIGRlYWQsCi0JCQkJCQkJc2l6 ZW9mKE9mZnNldE51bWJlcikgKiBuZGVhZCk7CisJCS8qCisJCSAqIERlYWQgdHVwbGUgb2Zm c2V0cyBhcmUgc3ViamVjdCB0byBiZSBwYWNrZWQgd2l0aCBERm9SLgorCQkgKiBBZnRlciB0 aGF0IHdlIGhhdmU6CisJCSAqIAkJZGVhZF9tZXRhLnBhY2sgPSBkZm9yX2J1ZiArIERGT1Jf QlVGX1BBUlRfU0laRTsKKwkJICovCisJCWlmIChuZGVhZCA+IDApCisJCXsKKwkJCXNvcnRf b2Zmc2V0cyhkZWFkLCBuZGVhZCwgc2l6ZW9mKE9mZnNldE51bWJlcikpOworCQkJZGVhZF9w YWNrX3JlcyA9IGRmb3JfdTE2X3BhY2sobmRlYWQsIGRlYWQsIERGT1JfRVhDX1VTRSwgJmRl YWRfbWV0YSwKKwkJCQkJCQkJCQkgIDQgKiBERk9SX0JVRl9QQVJUX1NJWkUsIGRmb3JfYnVm KTsKKwkJfQorCisJCS8qCisJCSAqIFVudXNlZCB0dXBsZSBvZmZzZXRzIGFyZSBzdWJqZWN0 IHRvIGJlIHBhY2tlZCB3aXRoIERGb1IuCisJCSAqIEFmdGVyIHRoYXQgd2UgaGF2ZToKKwkJ ICogCQl1bnVzZWRfbWV0YS5wYWNrID0gZGZvcl9idWYgKyAyICogREZPUl9CVUZfUEFSVF9T SVpFOworCQkgKi8KKwkJaWYgKG51bnVzZWQgPiAwKQorCQl7CisJCQlzb3J0X29mZnNldHMo dW51c2VkLCBudW51c2VkLCBzaXplb2YoT2Zmc2V0TnVtYmVyKSk7CisJCQl1bnVzZWRfcGFj a19yZXMgPSBkZm9yX3UxNl9wYWNrKG51bnVzZWQsIHVudXNlZCwgREZPUl9FWENfVVNFLAor CQkJCQkJCQkJCQkmdW51c2VkX21ldGEsCisJCQkJCQkJCQkJCTQgKiBERk9SX0JVRl9QQVJU X1NJWkUsCisJCQkJCQkJCQkJCWRmb3JfYnVmICsgREZPUl9CVUZfUEFSVF9TSVpFKTsKKwkJ fQorCisJCWlmIChkZWFkX3BhY2tfcmVzID09IDAgJiYgdW51c2VkX3BhY2tfcmVzID09IDAp CisJCXsKKwkJCS8qIEFsbCBzdGFnZXMgb2YgcGFja2luZyBoYXZlIHN1Y2NlZWRlZC4gV2Ug Y2FuIHNhdmUgREZvUiBwYWNrZXRzCisJCQkgKiBpbnRvIGxvZyAqLworCQkJc2l6ZV90IG1l dGFfcGFja19zejsKKwkJCWlmIChuZGVhZCA+IDApCisJCQl7CisJCQkJeGxyZWMuZmxhZ3Mg fD0gWExIUF9IQVNfREVBRF9JVEVNUzsKKworCQkJCW1ldGFfcGFja19zeiA9IGxvZ19oZWFw X3BydW5lX2FuZF9mcmVlemVfcGFja19tZXRhKAorCQkJCQkmZGVhZF9tZXRhLCBkZWFkX21l dGFfcGFjayk7CisKKwkJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZkZWFkX21ldGFfcGFj aywgbWV0YV9wYWNrX3N6KTsKKwkJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIGRlYWRfbWV0 YS5wYWNrLCBkZWFkX21ldGEubmJ5dGVzKTsKKwkJCX0KKwkJCWlmIChudW51c2VkID4gMCkK KwkJCXsKKwkJCQl4bHJlYy5mbGFncyB8PSBYTEhQX0hBU19OT1dfVU5VU0VEX0lURU1TOwor CisJCQkJbWV0YV9wYWNrX3N6ID0gbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZV9wYWNrX21l dGEoCisJCQkJCSZ1bnVzZWRfbWV0YSwgdW51c2VkX21ldGFfcGFjayk7CisKKwkJCQlYTG9n UmVnaXN0ZXJCdWZEYXRhKDAsICZ1bnVzZWRfbWV0YV9wYWNrLCBtZXRhX3BhY2tfc3opOwor CQkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgdW51c2VkX21ldGEucGFjaywgdW51c2VkX21l dGEubmJ5dGVzKTsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIE90aGVyd2lzZSwg d2UgY2FuJ3QgdXNlIERGb1IgY29tcHJlc3Npb24gKi8KKwkJCXhscmVjLmZsYWdzICY9IH5Y TEhQX0RGT1JfQ09NUFJFU1NFRDsKKwkJfQogCX0KLQlpZiAobnVudXNlZCA+IDApCisKKwlp ZiAoKHhscmVjLmZsYWdzICYgWExIUF9ERk9SX0NPTVBSRVNTRUQpID09IDApCiAJewotCQl4 bHJlYy5mbGFncyB8PSBYTEhQX0hBU19OT1dfVU5VU0VEX0lURU1TOworCQlpZiAobmRlYWQg PiAwKQorCQl7CisJCQl4bHJlYy5mbGFncyB8PSBYTEhQX0hBU19ERUFEX0lURU1TOwogCi0J CXVudXNlZF9pdGVtcy5udGFyZ2V0cyA9IG51bnVzZWQ7Ci0JCVhMb2dSZWdpc3RlckJ1ZkRh dGEoMCwgJnVudXNlZF9pdGVtcywKLQkJCQkJCQlvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1z LCBkYXRhKSk7Ci0JCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgdW51c2VkLAotCQkJCQkJCXNp emVvZihPZmZzZXROdW1iZXIpICogbnVudXNlZCk7CisJCQlkZWFkX2l0ZW1zLm50YXJnZXRz ID0gbmRlYWQ7CisJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZkZWFkX2l0ZW1zLAorCQkJ CQkJCQlvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKSk7CisJCQlYTG9nUmVnaXN0 ZXJCdWZEYXRhKDAsIGRlYWQsIHNpemVvZihPZmZzZXROdW1iZXIpICogbmRlYWQpOworCQl9 CisJCWlmIChudW51c2VkID4gMCkKKwkJeworCQkJeGxyZWMuZmxhZ3MgfD0gWExIUF9IQVNf Tk9XX1VOVVNFRF9JVEVNUzsKKworCQkJdW51c2VkX2l0ZW1zLm50YXJnZXRzID0gbnVudXNl ZDsKKwkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgJnVudXNlZF9pdGVtcywKKwkJCQkJCQkJ b2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSkpOworCQkJWExvZ1JlZ2lzdGVyQnVm RGF0YSgwLCB1bnVzZWQsIHNpemVvZihPZmZzZXROdW1iZXIpICogbnVudXNlZCk7CisJCX0K IAl9CisKIAlpZiAobmZyb3plbiA+IDApCiAJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgZnJ6 X29mZnNldHMsCiAJCQkJCQkJc2l6ZW9mKE9mZnNldE51bWJlcikgKiBuZnJvemVuKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZSBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZQppbmRleCBjZDk1ZWVjMzdmMS4uNDll OWM0NjE0NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtl ZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUKQEAgLTE3 LDYgKzE3LDcgQEAgT0JKUyA9IFwKIAlnaW5kZXNjLm8gXAogCWdpc3RkZXNjLm8gXAogCWhh c2hkZXNjLm8gXAorCWhlYXBhbV94bG9nX2Rmb3IubyBcCiAJaGVhcGRlc2MubyBcCiAJbG9n aWNhbG1zZ2Rlc2MubyBcCiAJbXhhY3RkZXNjLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBhbV94bG9nX2Rmb3IuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9oZWFwYW1feGxvZ19kZm9yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjQ3ZmEwMDBlMzY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBhbV94bG9nX2Rmb3IuYwpAQCAtMCwwICsx LDEwOSBAQAorI2luY2x1ZGUgImxpYi9iaXRwYWNrX3UxNi5oIgorI2luY2x1ZGUgImFjY2Vz cy9oZWFwYW1feGxvZ19kZm9yLmgiCisKK2Jvb2wgd2FsX3BydW5lX2Rmb3JfY29tcHJlc3Np b24gPSB0cnVlOworCitzaXplX3QKK2xvZ19oZWFwX3BydW5lX2FuZF9mcmVlemVfcGFja19t ZXRhKGNvbnN0IGRmb3JfbWV0YV90ICptZXRhLCB1aW50OCBidWZbXSkKK3sKKwlzaXplX3Qg Y2FyZXQgPSAwOworCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhidWYsIGNhcmV0LCBtZXRh LT5pdGVtX2NudCwKKwkJCQkJCQkgWExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaKTsKKwljYXJl dCA9IGJpdHBhY2tfdTE2X3BhY2soYnVmLCBjYXJldCwgbWV0YS0+ZGVsdGFfd2lkLAorCQkJ CQkJCSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaKTsKKwljYXJldCA9IGJpdHBhY2tfdTE2 X3BhY2soYnVmLCBjYXJldCwgKG1ldGEtPmV4Y19jbnQgPT0gMCkgPyAwIDogMSwKKwkJCQkJ CQkgWExIUEZfTUVUQV9FWENFUFRJT05fRkxBR19TWik7CisJaWYgKG1ldGEtPmV4Y19jbnQg IT0gMCkKKwl7CisJCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhidWYsIGNhcmV0LCBtZXRh LT5leGNfY250LAorCQkJCQkJCQkgWExIUEZfTUVUQV9FWENFUFRJT05fQ09VTlRfU1opOwor CQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2soYnVmLCBjYXJldCwgbWV0YS0+ZXhjX3dpZCwK KwkJCQkJCQkJIFhMSFBGX01FVEFfRVhDRVBUSU9OX1dJRFRIX1NaKTsKKwkJY2FyZXQgPSBi aXRwYWNrX3UxNl9wYWNrKGJ1ZiwgY2FyZXQsIG1ldGEtPmV4Y19wb3Nfd2lkLAorCQkJCQkJ CQkgWExIUEZfTUVUQV9FWENFUFRJT05fUE9TSVRJT05fV0lEVEhfU1opOworCX0KKwlBc3Nl cnQobWV0YS0+aXRlbV9jbnQgIT0gMCk7CisJQXNzZXJ0KG1ldGEtPmRlbHRhX3dpZCAhPSAw KTsKKwlBc3NlcnQobWV0YS0+bmJ5dGVzICE9IDApOworCisjaWZkZWYgVVNFX0FTU0VSVF9D SEVDS0lORworCXsKKwkJZGZvcl9tZXRhX3QgY2hlY2tlcjsKKwkJbG9nX2hlYXBfcHJ1bmVf YW5kX2ZyZWV6ZV91bnBhY2tfbWV0YSgmY2hlY2tlciwgYnVmKTsKKwkJQXNzZXJ0KG1ldGEt Pml0ZW1fY250ID09IGNoZWNrZXIuaXRlbV9jbnQpOworCQlBc3NlcnQobWV0YS0+ZGVsdGFf d2lkID09IGNoZWNrZXIuZGVsdGFfd2lkKTsKKwkJQXNzZXJ0KG1ldGEtPmV4Y19jbnQgPT0g Y2hlY2tlci5leGNfY250KTsKKwkJQXNzZXJ0KG1ldGEtPmV4Y193aWQgPT0gY2hlY2tlci5l eGNfd2lkKTsKKwkJQXNzZXJ0KG1ldGEtPmV4Y19wb3Nfd2lkID09IGNoZWNrZXIuZXhjX3Bv c193aWQpOworCX0KKyNlbmRpZgorCXJldHVybiAoY2FyZXQgKyA3KSAvIDg7IC8qIHRoZSBs ZW5ndGggb2YgcGFja2VkIGRmb3JfbWV0YSwgaW4gYnl0ZXMqLworfQorCitzaXplX3QKK2xv Z19oZWFwX3BydW5lX2FuZF9mcmVlemVfdW5wYWNrX21ldGEoZGZvcl9tZXRhX3QgKm1ldGEs CisJCQkJCQkJCQkgIGNvbnN0IHVpbnQ4IHBhY2tlZF9tZXRhW10pCit7CisJc2l6ZV90IGNh cmV0ID0gMDsKKwlib29sIGV4YzsKKworCW1ldGEtPml0ZW1fY250ID0gYml0cGFja191MTZf dW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJCQkJCQkJWExIUEZfTUVUQV9JVEVN X0NPVU5UX1NaKTsKKwltZXRhLT5kZWx0YV93aWQgPSBiaXRwYWNrX3UxNl91bnBhY2socGFj a2VkX21ldGEsICZjYXJldCwKKwkJCQkJCQkJCQkgWExIUEZfTUVUQV9ERUxUQV9XSURUSF9T Wik7CisJZXhjID0gYml0cGFja191MTZfdW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsIFhM SFBGX01FVEFfRVhDRVBUSU9OX0ZMQUdfU1opOworCisJaWYgKGV4YykKKwl7CisJCW1ldGEt PmV4Y19jbnQgPSBiaXRwYWNrX3UxNl91bnBhY2socGFja2VkX21ldGEsICZjYXJldCwKKwkJ CQkJCQkJCQkgWExIUEZfTUVUQV9FWENFUFRJT05fQ09VTlRfU1opOworCQltZXRhLT5leGNf d2lkID0gYml0cGFja191MTZfdW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJCQkJ CQkJIFhMSFBGX01FVEFfRVhDRVBUSU9OX1dJRFRIX1NaKTsKKwkJbWV0YS0+ZXhjX3Bvc193 aWQgPQorCQkJYml0cGFja191MTZfdW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJ CQkJICAgWExIUEZfTUVUQV9FWENFUFRJT05fUE9TSVRJT05fV0lEVEhfU1opOworCX0KKwll bHNlCisJeworCQltZXRhLT5leGNfY250ID0gMDsKKwkJbWV0YS0+ZXhjX3dpZCA9IDA7CisJ CW1ldGEtPmV4Y19wb3Nfd2lkID0gMDsKKwl9CisJbWV0YS0+bmJ5dGVzID0gZGZvcl91MTZf Y2FsY19uYnl0ZXMoKm1ldGEpOworCisJQXNzZXJ0KG1ldGEtPml0ZW1fY250ICE9IDApOwor CUFzc2VydChtZXRhLT5kZWx0YV93aWQgIT0gMCk7CisJQXNzZXJ0KG1ldGEtPm5ieXRlcyAh PSAwKTsKKworCXJldHVybiAoY2FyZXQgKyA3KSAvIDg7Cit9CisKK3ZvaWQKK2hlYXBfeGxv Z19kZXNlcmlhbGl6ZV9kZm9yKGNoYXIgKipjdXJzb3IsIGludCAqbml0ZW1zLAorCQkJCQkJ ICAgT2Zmc2V0TnVtYmVyICoqaXRlbXMsCisJCQkJCQkgICB1aW50OCBkZm9yX2J1ZltdKQor eworCWRmb3JfbWV0YV90IGRmb3IgPSB7MH07CisJc2l6ZV90IHBhY2tlZF9tZXRhX25ieXRl czsKKwl1bmlxc29ydHZlY3RfdTE2X3QgdmVjdDsKKworCXBhY2tlZF9tZXRhX25ieXRlcyA9 CisJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemVfdW5wYWNrX21ldGEoJmRmb3IsICh1aW50 OCopICpjdXJzb3IpOworCisJKmN1cnNvciArPSBwYWNrZWRfbWV0YV9uYnl0ZXM7CisKKwlk Zm9yLnBhY2sgPSAodWludDggKikqY3Vyc29yOworCWRmb3JfdTE2X3VucGFjaygmZGZvciwg JnZlY3QsIDQgKiBERk9SX0JVRl9QQVJUX1NJWkUsCisJCQkJCWRmb3JfYnVmKTsKKworCSpj dXJzb3IgKz0gZGZvci5uYnl0ZXM7CisKKwlBc3NlcnQoZGZvci5uYnl0ZXMgIT0gMCk7CisK KwlBc3NlcnQodmVjdC5jbnQgIT0gMCk7CisJQXNzZXJ0KHZlY3QubWVtX2lzX291dGVyID09 IHRydWUpOworCUFzc2VydCgodm9pZCopdmVjdC5tID09ICh2b2lkKilkZm9yX2J1Zik7CisK Kwkqbml0ZW1zID0gdmVjdC5jbnQ7CisJKml0ZW1zID0gdmVjdC5tOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwppbmRleCA3NWFlNmY5ZDM3NS4uMjQ0NmYx NTg3MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVz Yy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0x NSw2ICsxNSw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vz cy9oZWFwYW1feGxvZy5oIgorI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW1feGxvZ19kZm9yLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3JtZ3JkZXNjX3V0aWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3Zpc2liaWxpdHltYXBkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5ZGVmcy5o IgpAQCAtMTA4LDcgKzEwOSw4IEBAIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRf ZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJICAgT2Zmc2V0 TnVtYmVyICoqZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkgICBpbnQgKm5yZWRpcmVjdGVkLCBP ZmZzZXROdW1iZXIgKipyZWRpcmVjdGVkLAogCQkJCQkJCQkJICAgaW50ICpuZGVhZCwgT2Zm c2V0TnVtYmVyICoqbm93ZGVhZCwKLQkJCQkJCQkJCSAgIGludCAqbnVudXNlZCwgT2Zmc2V0 TnVtYmVyICoqbm93dW51c2VkKQorCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXRO dW1iZXIgKipub3d1bnVzZWQsCisJCQkJCQkJCQkgICB1aW50OCBkZm9yX2J1ZltdKQogewog CWlmIChmbGFncyAmIFhMSFBfSEFTX0ZSRUVaRV9QTEFOUykKIAl7CkBAIC0xNDYsMTQgKzE0 OCwyMiBAQCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpj dXJzb3IsIHVpbnQxNiBmbGFncywKIAogCWlmIChmbGFncyAmIFhMSFBfSEFTX0RFQURfSVRF TVMpCiAJewotCQl4bGhwX3BydW5lX2l0ZW1zICpzdWJyZWNvcmQgPSAoeGxocF9wcnVuZV9p dGVtcyAqKSBjdXJzb3I7CisJCWlmKCEoZmxhZ3MgJiBYTEhQX0RGT1JfQ09NUFJFU1NFRCkp CisJCXsKKwkJCXhsaHBfcHJ1bmVfaXRlbXMgKnN1YnJlY29yZCA9ICh4bGhwX3BydW5lX2l0 ZW1zICopIGN1cnNvcjsKIAotCQkqbmRlYWQgPSBzdWJyZWNvcmQtPm50YXJnZXRzOwotCQlB c3NlcnQoKm5kZWFkID4gMCk7Ci0JCSpub3dkZWFkID0gc3VicmVjb3JkLT5kYXRhOworCQkJ Km5kZWFkID0gc3VicmVjb3JkLT5udGFyZ2V0czsKKwkJCUFzc2VydCgqbmRlYWQgPiAwKTsK KwkJCSpub3dkZWFkID0gc3VicmVjb3JkLT5kYXRhOwogCi0JCWN1cnNvciArPSBvZmZzZXRv Zih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKTsKLQkJY3Vyc29yICs9IHNpemVvZihPZmZzZXRO dW1iZXIpICogKm5kZWFkOworCQkJY3Vyc29yICs9IG9mZnNldG9mKHhsaHBfcHJ1bmVfaXRl bXMsIGRhdGEpOworCQkJY3Vyc29yICs9IHNpemVvZihPZmZzZXROdW1iZXIpICogKm5kZWFk OworCQl9CisJCWVsc2UKKwkJeworCQkJaGVhcF94bG9nX2Rlc2VyaWFsaXplX2Rmb3IoJmN1 cnNvciwgbmRlYWQsIG5vd2RlYWQsCisJCQkJCQkJCQkgICBkZm9yX2J1Zik7CisJCX0KIAl9 CiAJZWxzZQogCXsKQEAgLTE2MywxNCArMTczLDIyIEBAIGhlYXBfeGxvZ19kZXNlcmlhbGl6 ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCiAJaWYg KGZsYWdzICYgWExIUF9IQVNfTk9XX1VOVVNFRF9JVEVNUykKIAl7Ci0JCXhsaHBfcHJ1bmVf aXRlbXMgKnN1YnJlY29yZCA9ICh4bGhwX3BydW5lX2l0ZW1zICopIGN1cnNvcjsKKwkJaWYo IShmbGFncyAmIFhMSFBfREZPUl9DT01QUkVTU0VEKSkKKwkJeworCQkJeGxocF9wcnVuZV9p dGVtcyAqc3VicmVjb3JkID0gKHhsaHBfcHJ1bmVfaXRlbXMgKikgY3Vyc29yOwogCi0JCSpu dW51c2VkID0gc3VicmVjb3JkLT5udGFyZ2V0czsKLQkJQXNzZXJ0KCpudW51c2VkID4gMCk7 Ci0JCSpub3d1bnVzZWQgPSBzdWJyZWNvcmQtPmRhdGE7CisJCQkqbnVudXNlZCA9IHN1YnJl Y29yZC0+bnRhcmdldHM7CisJCQlBc3NlcnQoKm51bnVzZWQgPiAwKTsKKwkJCSpub3d1bnVz ZWQgPSBzdWJyZWNvcmQtPmRhdGE7CiAKLQkJY3Vyc29yICs9IG9mZnNldG9mKHhsaHBfcHJ1 bmVfaXRlbXMsIGRhdGEpOwotCQljdXJzb3IgKz0gc2l6ZW9mKE9mZnNldE51bWJlcikgKiAq bnVudXNlZDsKKwkJCWN1cnNvciArPSBvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1zLCBkYXRh KTsKKwkJCWN1cnNvciArPSBzaXplb2YoT2Zmc2V0TnVtYmVyKSAqICpudW51c2VkOworCQl9 CisJCWVsc2UKKwkJeworCQkJaGVhcF94bG9nX2Rlc2VyaWFsaXplX2Rmb3IoJmN1cnNvciwg bnVudXNlZCwgbm93dW51c2VkLAorCQkJCQkJCQkJICAgZGZvcl9idWYgKyBERk9SX0JVRl9Q QVJUX1NJWkUpOworCQl9CiAJfQogCWVsc2UKIAl7CkBAIC0zMDksMTMgKzMyNywxNiBAQCBo ZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJ CXhsaHBfZnJlZXplX3BsYW4gKnBsYW5zOwogCQkJT2Zmc2V0TnVtYmVyICpmcnpfb2Zmc2V0 czsKIAorCQkJdWludDggZGZvcl9idWZbNSAqIERGT1JfQlVGX1BBUlRfU0laRV07CisKIAkJ CWNoYXIJICAgKmN1cnNvciA9IFhMb2dSZWNHZXRCbG9ja0RhdGEocmVjb3JkLCAwLCAmZGF0 YWxlbik7CiAKIAkJCWhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGN1 cnNvciwgeGxyZWMtPmZsYWdzLAogCQkJCQkJCQkJCQkJICAgJm5wbGFucywgJnBsYW5zLCAm ZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkJCQkgICAmbnJlZGlyZWN0ZWQsICZyZWRpcmVjdGVk LAogCQkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJCSAgICZu dW51c2VkLCAmbm93dW51c2VkKTsKKwkJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51 c2VkLAorCQkJCQkJCQkJCQkJICAgZGZvcl9idWYpOwogCiAJCQlhcHBlbmRTdHJpbmdJbmZv KGJ1ZiwgIiwgbnBsYW5zOiAldSwgbnJlZGlyZWN0ZWQ6ICV1LCBuZGVhZDogJXUsIG51bnVz ZWQ6ICV1IiwKIAkJCQkJCQkgbnBsYW5zLCBucmVkaXJlY3RlZCwgbmRlYWQsIG51bnVzZWQp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxk IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkCmluZGV4IGQ5MDAw Y2NkOWZkLi42Y2VlYTQ1MTRlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9t ZXNvbi5idWlsZApAQCAtMTEsNiArMTEsNyBAQCBybWdyX2Rlc2Nfc291cmNlcyA9IGZpbGVz KAogICAnZ2lzdGRlc2MuYycsCiAgICdoYXNoZGVzYy5jJywKICAgJ2hlYXBkZXNjLmMnLAor ICAnaGVhcGFtX3hsb2dfZGZvci5jJywKICAgJ2xvZ2ljYWxtc2dkZXNjLmMnLAogICAnbXhh Y3RkZXNjLmMnLAogICAnbmJ0ZGVzYy5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfcGFyYW1ldGVycy5kYXQKaW5kZXggODNhZjU5NGQ0YWYuLmM1M2UyOTIxYzAxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtMzUwNyw2 ICszNTA3LDEzIEBACiAgIGJvb3RfdmFsID0+ICdmYWxzZScsCiB9LAogCit7IG5hbWUgPT4g J3dhbF9wcnVuZV9kZm9yX2NvbXByZXNzaW9uJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQg PT4gJ1BHQ19TVVNFVCcsIGdyb3VwID0+ICdXQUxfU0VUVElOR1MnLAorICBzaG9ydF9kZXNj ID0+ICdDb21wcmVzcyBkZWFkIGFuZCB1bnVzZWQgb2Zmc2V0IGFycmF5cyBhdCBQUlVORS9G UkVFWkUgV0FMIHJlY29yZHMgdXNpbmcgREZPUi4nLAorICBsb25nX2Rlc2MgPT4gJ0VuYWJs ZXMgY29tcHJlc3Npb24gb2YgZGVhZCBhbmQgdW51c2VkIE9mZnNldE51bWJlciBhcnJheXMg c3RvcmVkIGluIGhlYXAgUFJVTkUvRlJFRVpFIFdBTCByZWNvcmRzIHVzaW5nIGN1c3RvbWlz ZWQgZGVsdGEgZnJhbWUtb2YtcmVmZXJlbmNlIGVuY29kaW5nLicsCisgIHZhcmlhYmxlID0+ ICd3YWxfcHJ1bmVfZGZvcl9jb21wcmVzc2lvbicsCisgIGJvb3RfdmFsID0+ICd0cnVlJwor fSwKKwogeyBuYW1lID0+ICd3YWxfcmVjZWl2ZXJfY3JlYXRlX3RlbXBfc2xvdCcsIHR5cGUg PT4gJ2Jvb2wnLCBjb250ZXh0ID0+ICdQR0NfU0lHSFVQJywgZ3JvdXAgPT4gJ1JFUExJQ0FU SU9OX1NUQU5EQlknLAogICBzaG9ydF9kZXNjID0+ICdTZXRzIHdoZXRoZXIgYSBXQUwgcmVj ZWl2ZXIgc2hvdWxkIGNyZWF0ZSBhIHRlbXBvcmFyeSByZXBsaWNhdGlvbiBzbG90IGlmIG5v IHBlcm1hbmVudCBzbG90IGlzIGNvbmZpZ3VyZWQuJywKICAgdmFyaWFibGUgPT4gJ3dhbF9y ZWNlaXZlcl9jcmVhdGVfdGVtcF9zbG90JywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKaW5kZXggMjkwY2NiYzU0M2UuLmJlZTYwYjJlYmNkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiYWNj ZXNzL2NvbW1pdF90cy5oIgogI2luY2x1ZGUgImFjY2Vzcy9naW4uaCIKKyNpbmNsdWRlICJh Y2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oIgogI2luY2x1ZGUgImFjY2Vzcy9zbHJ1LmgiCiAj aW5jbHVkZSAiYWNjZXNzL3RvYXN0X2NvbXByZXNzaW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3R3b3BoYXNlLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3Rn cmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUKaW5kZXggYWMzOGNkZGFhZjkuLjQxNTJlNzg5ZWUxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0yNjMs NiArMjYzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICN3YWxfY29tcHJlc3Npb24gPSBvZmYgICAg ICAgICAgICAgICAgICAjIGVuYWJsZXMgY29tcHJlc3Npb24gb2YgZnVsbC1wYWdlIHdyaXRl czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9mZiwgcGds eiwgbHo0LCB6c3RkLCBvciBvbgorI3dhbF9wcnVuZV9kZm9yX2NvbXByZXNzaW9uID0gdHJ1 ZSAgICAgICMgQ29tcHJlc3MgZGVhZCBhbmQgdW51c2VkIG9mZnNldCBhcnJheXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0IFBSVU5FL0ZSRUVaRSBX QUwgcmVjb3JkcyB1c2luZyBERk9SLgogI3dhbF9pbml0X3plcm8gPSBvbiAgICAgICAgICAg ICAgICAgICAgICMgemVyby1maWxsIG5ldyBXQUwgZmlsZXMKICN3YWxfcmVjeWNsZSA9IG9u ICAgICAgICAgICAgICAgICAgICAgICAjIHJlY3ljbGUgV0FMIGZpbGVzCiAjd2FsX2J1ZmZl cnMgPSAtMSAgICAgICAgICAgICAgICAgICAgICAgIyBtaW4gMzJrQiwgLTEgc2V0cyBiYXNl ZCBvbiBzaGFyZWRfYnVmZmVycwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wLy5n aXRpZ25vcmUgYi9zcmMvYmluL3BnX3dhbGR1bXAvLmdpdGlnbm9yZQppbmRleCBlYzUxZjQx Yzc2Ny4uYTNjMDI0NDZiOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0 aWdub3JlCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3JlCkBAIC0xMCw2ICsx MCw3IEBACiAvZ2lzdGRlc2MuYwogL2hhc2hkZXNjLmMKIC9oZWFwZGVzYy5jCisvaGVhcGFt X3hsb2dfZGZvci5jCiAvbG9naWNhbG1zZ2Rlc2MuYwogL214YWN0ZGVzYy5jCiAvbmJ0ZGVz Yy5jCkBAIC0yOCw1ICsyOSwxMyBAQAogL3hsb2dyZWFkZXIuYwogL3hsb2dzdGF0cy5jCiAK KyMgU291cmNlIGZpbGVzIGNvcGllZCBmcm9tIHNyYy9iYWNrZW5kL2xpYgorL2JpdHBhY2tf dGVtcGwuYworL2JpdHBhY2tfdTE2LmMKKy9kZm9yX3RlbXBsLmMKKy9kZm9yX3UxNi5jCisv dmVjdF90ZW1wbC5jCisvdmVjdF91MTYuYworCiAjIEdlbmVyYXRlZCBieSB0ZXN0IHN1aXRl CiAvdG1wX2NoZWNrLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxl IGIvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCmluZGV4IGFhYmI4NzU2NmEyLi41ZTUy MWMxZTgyMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCisrKyBi L3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZQpAQCAtOCw4ICs4LDkgQEAgZXhwb3J0IFRB UgogCiBzdWJkaXIgPSBzcmMvYmluL3BnX3dhbGR1bXAKIHRvcF9idWlsZGRpciA9IC4uLy4u Ly4uCi1pbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitkZm9y X2RpciA6PSAkKHRvcF9idWlsZGRpcikvc3JjL2JhY2tlbmQvbGliCiAKK2luY2x1ZGUgJCh0 b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIE9CSlMgPSBcCiAJJChSTUdSREVT Q09CSlMpIFwKIAkkKFdJTjMyUkVTKSBcCkBAIC0yMCwxMCArMjEsMTMgQEAgT0JKUyA9IFwK IAl4bG9ncmVhZGVyLm8gXAogCXhsb2dzdGF0cy5vCiAKK2luY2x1ZGUgJChkZm9yX2Rpcikv TWFrZWZpbGUuZGZvcgorT0JKUyArPSAkKE9CSlNfREZPUikKKwogb3ZlcnJpZGUgQ1BQRkxB R1MgOj0gLURGUk9OVEVORCAtSSQobGlicHFfc3JjZGlyKSAkKENQUEZMQUdTKQogTERGTEFH U19JTlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRp bHMKIAotUk1HUkRFU0NTT1VSQ0VTID0gJChzb3J0ICQobm90ZGlyICQod2lsZGNhcmQgJCh0 b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvKmRlc2MqLmMpKSkKK1JN R1JERVNDU09VUkNFUyA9ICQoc29ydCAkKG5vdGRpciAkKHdpbGRjYXJkICQodG9wX3NyY2Rp cikvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjLypkZXNjKi5jKSkpIGhlYXBhbV94bG9n X2Rmb3IuYwogUk1HUkRFU0NPQkpTID0gJChwYXRzdWJzdCAlLmMsJS5vLCQoUk1HUkRFU0NT T1VSQ0VTKSkKIAogCkBAIC0zMiw2ICszNiwyNCBAQCBhbGw6IHBnX3dhbGR1bXAKIHBnX3dh bGR1bXA6ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBncG9ydAogCSQoQ0MpICQoQ0ZMQUdTKSAk XiAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKIAorYml0cGFj a190ZW1wbC5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9saWIvJQorCXJtIC1m ICRAICYmICQoTE5fUykgJDwgLgorCitiaXRwYWNrX3UxNi5jOiAlIDogJCh0b3Bfc3JjZGly KS9zcmMvYmFja2VuZC9saWIvJSBiaXRwYWNrX3RlbXBsLmMKKwlybSAtZiAkQCAmJiAkKExO X1MpICQ8IC4KKworZGZvcl90ZW1wbC5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2Vu ZC9saWIvJQorCXJtIC1mICRAICYmICQoTE5fUykgJDwgLgorCitkZm9yX3UxNi5jOiAlIDog JCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9saWIvJSBkZm9yX3RlbXBsLmMKKwlybSAtZiAk QCAmJiAkKExOX1MpICQ8IC4KKwordmVjdF90ZW1wbC5jOiAlIDogJCh0b3Bfc3JjZGlyKS9z cmMvYmFja2VuZC9saWIvJQorCXJtIC1mICRAICYmICQoTE5fUykgJDwgLgorCit2ZWN0X3Ux Ni5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9saWIvJSB2ZWN0X3RlbXBsLmMK KwlybSAtZiAkQCAmJiAkKExOX1MpICQ8IC4KKwogeGxvZ3JlYWRlci5jOiAlIDogJCh0b3Bf c3JjZGlyKS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8lCiAJcm0gLWYgJEAgJiYgJChM Tl9TKSAkPCAuCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWls ZCBiL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZAppbmRleCA1Mjk2ZjIxYjgyYy4u YzMzYmU4ODcxMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWls ZAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKQEAgLTEwLDYgKzEwLDcg QEAgcGdfd2FsZHVtcF9zb3VyY2VzID0gZmlsZXMoCiBwZ193YWxkdW1wX3NvdXJjZXMgKz0g cm1ncl9kZXNjX3NvdXJjZXMKIHBnX3dhbGR1bXBfc291cmNlcyArPSB4bG9ncmVhZGVyX3Nv dXJjZXMKIHBnX3dhbGR1bXBfc291cmNlcyArPSBmaWxlcygnLi4vLi4vYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nc3RhdHMuYycpCitwZ193YWxkdW1wX3NvdXJjZXMgKz0gZGZvcl9z b3VyY2VzCiAKIGlmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJwogICBwZ193YWxkdW1wX3Nv dXJjZXMgKz0gcmNfYmluX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBb CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IGZkY2E3ZDgyMWM4Li41Y2U4ODVl NjMyNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTE1LDYgKzE1LDcgQEAK ICNkZWZpbmUgSEVBUEFNX1hMT0dfSAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXAuaCIKKyNp bmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dy ZWFkZXIuaCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmLmgiCkBAIC0zNDEsNiArMzQyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9w cnVuZQogI2RlZmluZQkJWExIUF9WTV9BTExfVklTSUJMRQkJCSgxIDw8IDgpCiAjZGVmaW5l CQlYTEhQX1ZNX0FMTF9GUk9aRU4JCQkoMSA8PCA5KQogCisjZGVmaW5lCQlYTEhQX0RGT1Jf Q09NUFJFU1NFRAkJKDEgPDwgMTApCisKIC8qCiAgKiB4bGhwX2ZyZWV6ZV9wbGFuIGRlc2Ny aWJlcyBob3cgdG8gZnJlZXplIGEgZ3JvdXAgb2Ygb25lIG9yIG1vcmUgaGVhcCB0dXBsZXMK ICAqIChhcHBlYXJzIGluIHhsX2hlYXBfcHJ1bmUncyB4bGhwX2ZyZWV6ZV9wbGFucyBzdWIt cmVjb3JkKQpAQCAtNDk0LDYgKzQ5Nyw3IEBAIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNl cmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAog CQkJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICoqZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkJ CQkgICBpbnQgKm5yZWRpcmVjdGVkLCBPZmZzZXROdW1iZXIgKipyZWRpcmVjdGVkLAogCQkJ CQkJCQkJCQkJICAgaW50ICpuZGVhZCwgT2Zmc2V0TnVtYmVyICoqbm93ZGVhZCwKLQkJCQkJ CQkJCQkJCSAgIGludCAqbnVudXNlZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2VkKTsKKwkJ CQkJCQkJCQkJCSAgIGludCAqbnVudXNlZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2VkLAor CQkJCQkJCQkJCQkJICAgdWludDggZGZvcl9idWZbXSk7CiAKLSNlbmRpZgkJCQkJCQkvKiBI RUFQQU1fWExPR19IICovCisjZW5kaWYJCQkJCQkJLyogSEVBUEFNX1hMT0dfSCAqLwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW1feGxvZ19kZm9yLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2df ZGZvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNzRiMTRl ODkxZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxv Z19kZm9yLmgKQEAgLTAsMCArMSwxMzcgQEAKKyNpZm5kZWYgSEVBUEFNX1hMT0dfREZPUl9I CisjZGVmaW5lIEhFQVBBTV9YTE9HX0RGT1JfSAorCisjaW5jbHVkZSAicG9zdGdyZXMuaCIK KworI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJsaWIvZGZv cl91MTYuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKKworLyoKKyAqIERGb1In cyBtZXRhIGJsb2NrIGZvciBQUlVORS9GUkVFWkUgcmVjb3JkCisgKgorICogQSBtZXRhIGJs b2NrIGNvbnRhaW5zIHBhcmFtZXRlcnMgcmVxdWlyZWQgZm9yIGRlY29tcHJlc3Npb24gb2Yg dGhlIGZvbGxvd2luZworICogREZvUiBwYWNrLiBJdCBpcyBkZW5zZWx5IGJpdC1wYWNrZWQu IElmIHRoZSBleGNlcHRpb24gZmxhZyBpcyB6ZXJvLCBmaWVsZHMKKyAqIHBlcnRhaW5pbmcg dG8gZXhjZXB0aW9ucyBpcyBhYnNlbnQsIHdoaWNoIG1lYW5zIHRoYXQgREZvUiBwYWNrIGRv ZXMgbm90CisgKiBjb250YWluIGV4Y2VwdGlvbnMuIENhbGN1bGF0aW9uIG9mIGZpZWxkIHdp ZHRocyB0YWtlcyBpbnRvIGFjY291bnQKKyAqIG5leHQgY29uc2lkZXJhdGlvbnM6CisgKgor ICogTWF4IEl0ZW0gQ291bnQgc2hvdWxkIGJlIG1vcmUgb3IgZXF1YWwgdG8gTWF4SGVhcFR1 cGxlc1BlclBhZ2UuIFNpbmNlIHdlCisgY2FuJ3QgY2FsY3VsYXRlCisgKiBNYXhIZWFwVHVw bGVzUGVyUGFnZSBvbiBwcmVwcm9jZXNzb3Igc3RhZ2UsIHdlIGludGVudGlvbmFsbHkgb3Zl cmVzdGltYXRlIGl0CisgKiBhczoKKyAqICAgICAgIE1heCBJdGVtIENvdW50ID4gQkxDS1Na IC8gTWluIFR1cGxlIFNpemUgPSBCTENLU1ogLyAyNAorICogdG8gcHJvdmlkZSBhIG1hcmdp bi4gSW4gZ2VuZXJhbCwgZGVwZW5kaW5nIG9uIEJMQ0tTWiwgaXQgc2hvdWxkIG5vdCByZXN1 bHQgaW4KKyAqIERGb1IgbWV0YSBibG9jayBvdmVyaGVhZC4KKyAqIEZvciBpbnN0YW5jZSwg Zm9yIGEgYmxvY2sgc2l6ZSBvZiAzMjc2OCwgd2UgaGF2ZSBNYXggSXRlbSBDb3VudCA9IDEz NjYsIGFuZAorICogaXQgbmVlZHMgMTEgYml0cyB3aWR0aCBmaWVsZC4KKyAqCisgKiBTaXpl IG9mIGZpZWxkIEl0ZW0gQ291bnQ6CisgKiAgICAgICBJVEVNX0NPVU5UX1NaID0gbG9nMihN YXhJdGVtQ291bnQpLgorICoKKyAqIE1heGltdW0gRGVsdGEgV2lkdGggaXMgZXF1YWwgdG8g SVRFTV9DT1VOVF9TWi4gU28gREVMVEFfV0lEVEhfU1ogaW4gYSBERm9SCisgKiBtZXRhIGJs b2NrIGNhbiBiZSBjYWxjdWxhdGVkIGFzOgorICogICAgICBERUxUQV9XSURUSF9TWiA+PSBs b2cyKE1heCBEZWx0YSBXaWR0aCkgPSBsb2cyKElURU1fQ09VTlRfU1opCisgKgorICogTWF4 IEV4Y2VwdGlvbiBDb3VudCA9IDAuMSAqIE1heEl0ZW1Db3VudCwgYWNjb3JkaW5nIHRvIERG b1IgYWxnb3JpdGhtIHdoaWNoCisgKiBndWFyYW50ZWVzIHRoYXQgbm90IGxlc3MgdGhhbiA5 MCUgb2YgaXRlbXMgd2lsbCBiZSBjb3ZlcmVkIHdpdGhvdXQgdXNpbmcKKyAqIGV4Y2VwdGlv bnMuIFNvOgorICogICAgICBFWENFUFRJT05fQ09VTlRfU1ogPj0gbG9nMigwLjEgKiBNYXhJ dGVtQ291bnQpLgorICoKKyAqIEFuIGV4Y2VwdGlvbiBpcyBwYXJ0IG9mIGEgZGVsdGEsIGV4 Y2VlZGluZyBjaG9vc2VuIGRlbHRhIHdpZHRoLiBFeGNlcHRpb24gaXMKKyAqIHNhdmVkIGlu IHNlcGFyYXRlZCBwYXJ0IG9mIERGb1IgcGFjayBhbmQsIHNpbmNlIGRlbHRhIHdpZHRoIGlz IG5vdCBsZXNzCisgKiB0aGFuIDE6CisgKiAgICBFWENFUFRJT05fV0lEVEhfU1ogPj0gbG9n MihNYXggRGVsdGEgV2lkdGggLSAxKSA9IGxvZzIoSVRFTV9DT1VOVF9TWiAtIDEpLgorICoK KyAqIEFuIGV4Y2VwdGlvbidzIHBvc2l0aW9uIHNob3dzIHRoZSBwb3NpdGlvbiBvZiBvZiBh IGRlbHRhIHRvIHdpY2ggdGhlCisgKiBleGNlcHRpb24gaGFzIHRvIGJlIGFwcGxpZWQuIFZh bHVlcyBvZiBhbiBleGNlcHRpb24gcG9zaXRpb24gbXVzdCBjb3ZlciB0aGUKKyAqIHNhbWUg dmFsdWUgcmFuZ2UgYXMgYW4gSXRlbSBDb3VudCwgc28gdGhlIE1heCBXaWR0aCBvZiBhbiBF eGNlcHRpb24gUG9zaXRpb24KKyAqIGlzIGVxdWFsIHRvIHdpZHRoIG9mIERlbHRhLiBDb25z ZXF1ZW50bHksIHRoZSBzaXplIG9mIEV4Y2VwdGlvbiBQb3NpdGlvbgorICogV2lkdGggY2Fs Y3VsYXRlZCBhczoKKyAqICAgICBFWENFUFRJT05fUE9TSVRJT05fV0lEVEhfU0laRSA9IGxv ZzIoTWF4IERlbHRhIFdpZHRoKSA9IERFTFRBX1dJRFRIX1NaCisgKgorICogRm9yIGV4YW1w bGUsIE1ldGEgZm9yIEJMQ0tTWiBlcXVhbCB0byAzMjc2OCBoYXMgbmV4dCBzaXplcyBvZiBm aWVsZAorICogfCBzZWN0LiB8IGJ5dGUgfCBiaXRzICAgICAgfCAgIHBhcmFtICAgICAgICAg ICB8ICBzaXplICB8IHJhbmdlIG9mIHZhbHVlcyB8CisgKiB8LS0tLS0tLXwtLS0tLS18LS0t LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0t LXwKKyAqIHwgIG1haW4gfCAwLCAxIHwgMC0xMCAgICAgIHwgaXRlbSBjb3VudCAgICAgICAg fCAxMSBiaXQgfCAxLi4uMTM2NSAgICAgICAgfAorICogfCAgbWFpbiB8ICAgIDEgfCAxMS0x NCAgICAgfCBkZWx0YSB3aWR0aCAgICAgICB8ICA0IGJpdCB8IDEuLi4xMSAgICAgICAgICB8 CisgKiB8ICBtYWluIHwgICAgMSB8IDE1ICAgICAgICB8IGV4dHJhIHNlY3QuIGZsYWcgIHwg IDEgYml0IHwgMC4uLjEgICAgICAgICAgIHwKKyAqIHwgZXh0cmEgfCAgICAyIHwgMTYtMjMg ICAgIHwgZXhjZXB0aW9uIGNvdW50ICAgfCAgOCBiaXQgfCAwLi4uMTM3ICAgICAgICAgfAor ICogfCBleHRyYSB8ICAgIDMgfCAyNC0yNyAgICAgfCBleGNlcHRpb24gd2lkdGggICB8ICA0 IGJpdCB8IDAuLi4xMCAgICAgICAgICB8CisgKiB8IGV4dHJhIHwgMywgNCB8IDI4LTM1ICAg ICB8IGV4Y2VwdCBwb3MuIHdpZHRoIHwgIDQgYml0IHwgMS4uLjExICAgICAgICAgIHwKKyAq LworCisvKgorICogVGhlIHNpemVzIG9mIGZpZWxkcyBpbiB0aGUgY29tcHJlc3NlZCBERm9S IE1ldGEgc3RydWN0dXJlIG9mIGFuCisgKiBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmQuCisg Ki8KKyNpZiBCTENLU1ogPT0gMzI3NjgKKyNkZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NPVU5U X1NaICAxMQorI2RlZmluZSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIDQKKyNlbGlmIEJM Q0tTWiA9PSAxNjM4NAorI2RlZmluZSBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogIDEwCisj ZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogNAorI2VsaWYgQkxDS1NaID09IDgx OTIKKyNkZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaICA5CisjZGVmaW5lIFhMSFBG X01FVEFfREVMVEFfV0lEVEhfU1ogNAorI2VsaWYgQkxDS1NaID09IDQwOTYKKyNkZWZpbmUg WExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaICA4CisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFf V0lEVEhfU1ogNAorI2VsaWYgQkxDS1NaID09IDIwNDgKKyNkZWZpbmUgWExIUEZfTUVUQV9J VEVNX0NPVU5UX1NaICA3CisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogMwor I2VsaWYgQkxDS1NaID09IDEwMjQKKyNkZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NPVU5UX1Na ICA2CisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogMworI2VsaWYgQkxDS1Na ID09IDUxMgorI2RlZmluZSBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogIDUKKyNkZWZpbmUg WExIUEZfTUVUQV9ERUxUQV9XSURUSF9TWiAzCisjZWxpZiBCTENLU1ogPT0gMjU2CisjZGVm aW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAgNAorI2RlZmluZSBYTEhQRl9NRVRBX0RF TFRBX1dJRFRIX1NaIDMKKyNlbGlmIEJMQ0tTWiA9PSAxMjgKKyNkZWZpbmUgWExIUEZfTUVU QV9JVEVNX0NPVU5UX1NaICAzCisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1og MgorI2VsaWYgQkxDS1NaID09IDY0CisjZGVmaW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9T WiAgMgorI2RlZmluZSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIDIKKyNlbHNlCisjZXJy b3IgIlVuc3VwcG9ydGVkIEJMQ0tTWiBpbiBYTG9nIEhlYXAgQW5kIFBydW5lLiIKKyNlbmRp ZgorCisjZGVmaW5lIFhMSFBGX01FVEFfRVhDRVBUSU9OX0ZMQUdfU1ogMSAvKiBGbGFnIGFi b3V0IEV4dHJhIFNlY3Rpb24gcHJlc2VuY2UgKi8KKworLyogU2l6ZSBvZiBFeGNlcHRpb24g Q291bnQgZmllbGQgKi8KKyNpZiBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogPiA2CisjZGVm aW5lIFhMSFBGX01FVEFfRVhDRVBUSU9OX0NPVU5UX1NaIFhMSFBGX01FVEFfSVRFTV9DT1VO VF9TWiAtIDMKKyNlbHNlCisjZGVmaW5lIFhMSFBGX01FVEFfRVhDRVBUSU9OX0NPVU5UX1Na IFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAzCisjZW5kaWYKKworI2RlZmluZSBYTEhQRl9N RVRBX0VYQ0VQVElPTl9XSURUSF9TWiBcCisJWExIUEZfTUVUQV9ERUxUQV9XSURUSF9TWiAv KiBTaXplIG9mIEV4Y2VwdGlvbiBXaWR0aCBmaWVsZCAqLworCisjZGVmaW5lIFhMSFBGX01F VEFfRVhDRVBUSU9OX1BPU0lUSU9OX1dJRFRIX1NaIFwKKwlYTEhQRl9NRVRBX0RFTFRBX1dJ RFRIX1NaIC8qIFNpemUgb2YgRXhjZXB0aW9uIFBvc2l0aW9uIHdpZHRoIGZpZWxkICovCisK Ky8qIE1heGltYWwgc2l6ZSBvZiBwYWNrZWQgbWV0YSAqLworI2RlZmluZSBNQVhfUEFDS0VE X01FVEFfU0laRSBcCisJKFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiArIFhMSFBGX01FVEFf REVMVEFfV0lEVEhfU1ogKyAgICAgICAgICAgICAgICAgIFwKKwkgWExIUEZfTUVUQV9FWENF UFRJT05fRkxBR19TWiArIFhMSFBGX01FVEFfRVhDRVBUSU9OX1BPU0lUSU9OX1dJRFRIX1Na ICsgXAorCSBYTEhQRl9NRVRBX0VYQ0VQVElPTl9XSURUSF9TWiArIFhMSFBGX01FVEFfRVhD RVBUSU9OX0NPVU5UX1NaICsgNykgLyA4CisKKy8qIFRoZSBzaXplIG9mIGEgdHlwaWNhbCBj aHVuayBvZiBtZW1vcnkgdXNlZCBieSBkZm9yX3BhY2sgKi8KKyNkZWZpbmUgREZPUl9CVUZf UEFSVF9TSVpFIE1heEhlYXBUdXBsZXNQZXJQYWdlICogc2l6ZW9mKHVpbnQxNikKKworZXh0 ZXJuIGJvb2wgd2FsX3BydW5lX2Rmb3JfY29tcHJlc3Npb247IC8qIEdVQyAqLworCitleHRl cm4gc2l6ZV90IGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemVfcGFja19tZXRhKGNvbnN0IGRm b3JfbWV0YV90ICptZXRhLAorCQkJCQkJCQkJCQkJICB1aW50OCBidWZbXSk7CisKK2V4dGVy biBzaXplX3QgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZV91bnBhY2tfbWV0YShkZm9yX21l dGFfdCAqbWV0YSwKKwkJCQkJCQkJCQkJCQljb25zdCB1aW50OCBwYWNrZWRfbWV0YVtdKTsK KworZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2Rlc2VyaWFsaXplX2Rmb3IoY2hhciAqKmN1cnNv ciwgaW50ICpuaXRlbXMsCisJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKippdGVtcywgdWlu dDggZGZvcl9idWZbXSk7CisKKyNlbmRpZgkJCQkJCQkvKiBIRUFQQU1fWExPR19ERk9SX0gg Ki8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9k Zm9yL01ha2VmaWxlIGIvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZQppbmRleCAxYWY1MjljNzM3 OC4uY2VjODNkNDMzMTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2Rmb3IvTWFrZWZpbGUKKysr IGIvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZQpAQCAtNTUsNiArNTUsOCBAQCBjaGVjay11bml0 OiAkKFRFU1RTKQogCWNkICQodG9wX2J1aWxkZGlyKS8kKHN1YmRpcikgJiYgXAogCSAgICQo UFJPVkUpICQoUFJPVkVfRkxBR1MpIFwKIAkgICAgLXYgJChhZGRwcmVmaXggLi8sJChpZiAk KFBST1ZFX1RFU1RTKSwgJChQUk9WRV9URVNUUyksICQoVEVTVFMpKSkKKyMgVGhlIGV4YW1w bGUgb2YgdXNpbmcgdGhlIGNoZWNrLXVuaXQgcnVsZToKKyMJCW1ha2UgY2hlY2stdW5pdCBQ Uk9WRV9URVNUUz0ndGVzdF9kZm9yX3UxNicgUFJPVkVfRkxBR1M9Jy0tdmVyYm9zZScKIAog Y2hlY2s6IGNoZWNrLXVuaXQKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w NTJfcHJ1bmVfZGZvcl9jb21wcmVzc2lvbi5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUy X3BydW5lX2Rmb3JfY29tcHJlc3Npb24ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjk1MTQ3OGZiYmQzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wNTJfcHJ1bmVfZGZvcl9jb21wcmVzc2lvbi5wbApAQCAtMCwwICsxLDI4 MyBAQAordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1v cmU7CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisjIFdvcmtsb2FkIGdlbmVyYXRpbmcgZGVhZCB0dXBsZXMgYW5k IFBSVU5FIFdBTAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YiBnZW5lcmF0ZV9wcnVuZV93b3JrbG9hZAorewor CW15ICgkbm9kZSwgJHdvcmtsb2FkKSA9IEBfOworCisKKwlteSAkc3RhcnRfbHNuOworCW15 ICRlbmRfbHNuOworCisJaWYgKCR3b3JrbG9hZCBlcSAidmFjdXVtX3dpdGhfaW5kZXgiCisJ CXx8ICR3b3JrbG9hZCBlcSAidmFjdXVtX25vX2luZGV4IikKKwl7CisJCSRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXsKKwkJCUNSRUFURSBUQUJMRSB0X3BydW5lICgKKwkJCQlp ZCBpbnQsCisJCQkJdmFsIHRleHQKKwkJCSkgV0lUSCAoZmlsbGZhY3RvciA9IDEwMCwgYXV0 b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOworCQl9KTsKKworCQkkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHF7CisJCQlTRVQgdmFjdXVtX2ZyZWV6ZV9taW5fYWdlID0gMDsKKwkJ CVNFVCB2YWN1dW1fZnJlZXplX3RhYmxlX2FnZSA9IDA7CisJCX0pOworCisJCSMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorCQkjIFBoYXNlIDE6IElOU0VSVAorCQkjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKwkJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxewor CQkJSU5TRVJUIElOVE8gdF9wcnVuZQorCQkJU0VMRUNUIGcsICd4JworCQkJRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwzMDAwMDAwKSBnOworCQl9KTsKKworCQkjIE9wdGlvbmFsIGluZGV4 CisJCWlmICgkd29ya2xvYWQgZXEgInZhY3V1bV93aXRoX2luZGV4IikKKwkJeworCQkJJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCQkJCUNSRUFURSBJTkRFWCBPTiB0X3By dW5lKGlkKTsKKwkJCX0pOworCQl9CisJCSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor CQkjIFBoYXNlIDI6IERFTEVURSArIFZBQ1VVTQorCQkjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKwkJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCQkJREVMRVRFIEZS T00gdF9wcnVuZQorCQkJV0hFUkUgaWQgJSA1MDAgPD4gMDsKKwkJfSk7CisKKwkJIyBGb3Jj ZSBXQUwgZmx1c2ggYW5kIGNhcHR1cmUgTFNOCisJCSRzdGFydF9sc24gPSAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJCQlTRUxFQ1QgcGdfY3VycmVudF93YWxfZmx1c2hf bHNuKCk7CisJCX0pOworCisJCSMgVkFDVVVNIGN5Y2xlcyB0byB0cmlnZ2VyIFBSVU5FCisJ CWZvciBteSAkaSAoMS4uMykKKwkJeworCQkJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxeyBWQUNVVU0gRlJFRVpFIHRfcHJ1bmU7IH0pOworCQl9CisKKwkJJGVuZF9sc24gPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJCQlTRUxFQ1QgcGdfY3VycmVudF93 YWxfZmx1c2hfbHNuKCk7CisJCX0pOworCX0KKwllbHNlCisJeworCQlkaWUgIldvcmtsb2Fk IGlzIG5vdCBkZWZpbmVkOiB3b3JrbG9hZD0kd29ya2xvYWQiOworCX0KKworCWNob21wKCRz dGFydF9sc24pOworCXByaW50ICJDYXB0dXJlZCBzdGFydCBMU046ICRzdGFydF9sc25cbiI7 CisJY2hvbXAoJGVuZF9sc24pOworCXByaW50ICJDYXB0dXJlZCBlbmQgTFNOOiAkZW5kX2xz blxuIjsKKworCXJldHVybiAoJHN0YXJ0X2xzbiwgJGVuZF9sc24pOworfQorCisjIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIyBXQUwgYW5hbHl6ZXIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWIgY29sbGVjdF93YWxfc3RhdHMKK3sK KwlteSAoJG5vZGUsICRzdGFydF9sc24sICRlbmRfbHNuKSA9IEBfOworCisJbXkgJHdhbF9k aXIgPSAkbm9kZS0+ZGF0YV9kaXIgLiAiL3BnX3dhbCI7CisKKwlwcmludCAid2FsX2Rpcj0i IC4gJHdhbF9kaXIgLiAiXG4iOworCXByaW50ICJjb2xsZWN0X3dhbF9zdGF0czogc3RhcnRf bHNuPSRzdGFydF9sc25cbiI7CisJcHJpbnQgImNvbGxlY3Rfd2FsX3N0YXRzOiBlbmRfbHNu PSRlbmRfbHNuXG4iOworCisJbXkgJGNtZDsKKworCWlmIChkZWZpbmVkICRlbmRfbHNuICYm ICRlbmRfbHNuIG5lICcnKQorCXsKKwkJJGNtZCA9ICJwZ193YWxkdW1wIC1wICR3YWxfZGly IC1zICRzdGFydF9sc24gLWUgJGVuZF9sc24gMj4vZGV2L251bGwiOworCX0KKwllbHNlCisJ eworCQkkY21kID0gInBnX3dhbGR1bXAgLXAgJHdhbF9kaXIgLXMgJHN0YXJ0X2xzbiAyPi9k ZXYvbnVsbCI7CisJfQorCisJbXkgQGxpbmVzID0gYCRjbWRgOworCisJIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisJIyBDb3VudGVycworCSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorCW15ICR0b3RhbF9yZWNvcmRzID0gMDsKKwlteSAkdG90YWxfYnl0ZXMgICA9IDA7 CisKKwlteSAkcHJ1bmVfcmVjb3JkcyA9IDA7CisJbXkgJHBydW5lX2J5dGVzICAgPSAwOwor CisJZm9yZWFjaCBteSAkbGluZSAoQGxpbmVzKQorCXsKKwkJIyBFeHRyYWN0IHRvdGFsIHJl Y29yZCBzaXplCisJCWlmICgkbGluZSA9fiAvbGVuIFwocmVjXC90b3RcKTpccypcZCtcL1xz KihcZCspLykKKwkJeworCQkJbXkgJHNpemUgPSAkMTsKKworCQkJJHRvdGFsX3JlY29yZHMr KzsKKwkJCSR0b3RhbF9ieXRlcyArPSAkc2l6ZTsKKworCQkJIyBQUlVORS1zcGVjaWZpYyB0 cmFja2luZworCQkJaWYgKCRsaW5lID1+IC9QUlVORV9WQUNVVU1fU0NBTi8pCisJCQl7CisJ CQkJJHBydW5lX3JlY29yZHMrKzsKKwkJCQkkcHJ1bmVfYnl0ZXMgKz0gJHNpemU7CisJCQl9 CisJCX0KKwl9CisKKwlpZiAoJHRvdGFsX3JlY29yZHMgPT0gMCkKKwl7CisJCWRpZSAiTm8g V0FMIHJlY29yZHMgZm91bmQgaW4gcmFuZ2UgJHN0YXJ0X2xzbiDihpIgJGVuZF9sc24iOwor CX0KKworCXByaW50ICJUT1RBTDogcmVjb3Jkcz0kdG90YWxfcmVjb3JkczsgYnl0ZXM9JHRv dGFsX2J5dGVzXG4iOworCXByaW50ICJQUlVORTogcmVjb3Jkcz0kcHJ1bmVfcmVjb3Jkczsg Ynl0ZXM9JHBydW5lX2J5dGVzXG4iOworCisJcmV0dXJuIHsKKwkJdG90YWxfcmVjb3JkcyA9 PiAkdG90YWxfcmVjb3JkcywKKwkJdG90YWxfYnl0ZXMgICA9PiAkdG90YWxfYnl0ZXMsCisJ CXBydW5lX3JlY29yZHMgPT4gJHBydW5lX3JlY29yZHMsCisJCXBydW5lX2J5dGVzICAgPT4g JHBydW5lX2J5dGVzLAorCX07Cit9CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJ1biB0ZXN0IG9uIGEgZnJl c2ggY2x1c3RlcgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YiBydW5fY2x1c3Rlcl90ZXN0Cit7CisJbXkgKCRu YW1lLCAkY29tcHJlc3Npb24sICR3b3JrbG9hZCkgPSBAXzsKKworCW15ICRub2RlID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCRuYW1lKTsKKworCSRub2RlLT5pbml0Owor CisJJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsKKwkJd2FsX2xl dmVsID0gcmVwbGljYQorCQlhdXRvdmFjdXVtID0gb2ZmCisJCXdhbF9wcnVuZV9kZm9yX2Nv bXByZXNzaW9uID0gJGNvbXByZXNzaW9uCisgCQl3YWxfa2VlcF9zaXplID0gJzFHQicKKwkJ bWF4X3dhbF9zaXplID0gJzIwR0InCisJfSk7CisKKwkkbm9kZS0+c3RhcnQ7CisKKwlteSAo JHN0YXJ0X2xzbiwgJGVuZF9sc24pID0gZ2VuZXJhdGVfcHJ1bmVfd29ya2xvYWQoJG5vZGUs ICR3b3JrbG9hZCk7CisKKwkkbm9kZS0+c3RvcDsKKworCXJldHVybiBjb2xsZWN0X3dhbF9z dGF0cygkbm9kZSwgJHN0YXJ0X2xzbiwgJGVuZF9sc24pOworfQorCisjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBG b3JtYXR0aW5nIGhlbHBlcnMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YiBfcGN0X3JlZHVjdGlvbgorewor CW15ICgkYmVmb3JlLCAkYWZ0ZXIpID0gQF87CisJcmV0dXJuICJOL0EiIGlmICRiZWZvcmUg PT0gMDsKKworCW15ICRwY3QgPSAxMDAgKiAoJGJlZm9yZSAtICRhZnRlcikgLyAkYmVmb3Jl OworCXJldHVybiBzcHJpbnRmKCIlZCUlIiwgaW50KCRwY3QgKyAwLjUpKTsKK30KKworc3Vi IF9yYXRpbworeworCW15ICgkYmVmb3JlLCAkYWZ0ZXIpID0gQF87CisJcmV0dXJuICJOL0Ei IGlmICRhZnRlciA9PSAwOworCisJbXkgJHIgPSAkYmVmb3JlIC8gJGFmdGVyOworCXJldHVy biBzcHJpbnRmKCIlLjFmeCIsICRyKTsKK30KKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVwb3J0OiB0b3Rh bCBXQUwgc3RhdHMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWIgcmVwb3J0X3dhbF9kaWZmCit7CisJbXkgKCRv ZmYsICRvbikgPSBAXzsKKworCW15ICRiX2J5dGVzID0gJG9mZi0+e3RvdGFsX2J5dGVzfTsK KwlteSAkYV9ieXRlcyA9ICRvbi0+e3RvdGFsX2J5dGVzfTsKKworCXByaW50ZiAiJS0yMHMg JTE3cyAlMTdzICUxMXNcbiIsCisJCSItIiB4IDIwLCAiLSIgeCAxNywgIi0iIHggMTcsICIt IiB4IDExOworCisJcHJpbnRmICIlLTIwcyAlMTdzICUxN3MgJTExc1xuIiwKKwkJIiIsICJE Rk9SIG9mZiwgYnl0ZXMiLCAiREZPUiBvbiwgYnl0ZXMiLCAiUmVkdWN0aW9uIjsKKworCXBy aW50ZiAiJS0yMHMgJTE3cyAlMTdzICUxMXNcbiIsCisJCSItIiB4IDIwLCAiLSIgeCAxNywg Ii0iIHggMTcsICItIiB4IDExOworCisJcHJpbnRmICIlLTIwcyAlMTdkICUxN2QgJTExc1xu IiwKKwkJIldBTCB0b3RhbCBzaXplIiwKKwkJJG9mZi0+e3RvdGFsX2J5dGVzfSwKKwkJJG9u LT57dG90YWxfYnl0ZXN9LAorCQlfcGN0X3JlZHVjdGlvbigkb2ZmLT57dG90YWxfYnl0ZXN9 LCAkb24tPnt0b3RhbF9ieXRlc30pOworCisJcHJpbnRmICIlLTIwcyAlMTdkICUxN2QgJTEx c1xuXG4iLAorCQkiUHJ1bmUgcmVjb3JkcyBzaXplIiwKKwkJJG9mZi0+e3BydW5lX2J5dGVz fSwKKwkJJG9uLT57cHJ1bmVfYnl0ZXN9LAorCQlfcmF0aW8oJG9mZi0+e3BydW5lX2J5dGVz fSwgJG9uLT57cHJ1bmVfYnl0ZXN9KTsKK30KKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2NlbmFyaW8gMTog VkFDVVVNIHdpdGhvdXQgaW5kZXgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitteSAkb2ZmX25vaWR4ID0gcnVuX2Ns dXN0ZXJfdGVzdCgicHJ1bmVfb2ZmX25vaWR4IiwgIm9mZiIsICJ2YWN1dW1fbm9faW5kZXgi KTsKK215ICRvbl9ub2lkeCAgPSBydW5fY2x1c3Rlcl90ZXN0KCJwcnVuZV9vbl9ub2lkeCIs ICAib24iLCAgInZhY3V1bV9ub19pbmRleCIpOworCitjbXBfb2soCisJJG9mZl9ub2lkeC0+ e3BydW5lX2J5dGVzfSwKKwknPicsCisJJG9uX25vaWR4LT57cHJ1bmVfYnl0ZXN9LAorCSdE Rk9SIHJlZHVjZXMgdGhlIFBSVU5FIFdBTCBzaXplIG9uIHZhY3V1bWluZyBhIHRhYmxlIGhh dmluZyBubyBpbmRleC4nCispOworCitjbXBfb2soCisJJG9mZl9ub2lkeC0+e3RvdGFsX2J5 dGVzfSwKKwknPicsCisJJG9uX25vaWR4LT57dG90YWxfYnl0ZXN9LAorCSdERk9SIHJlZHVj ZXMgdGhlIHRvdGFsIFdBTCBzaXplIG9uIHZhY3V1bWluZyBhIHRhYmxlIGhhdmluZyBubyBp bmRleC4nCispOworCitwcmludCAiXG5cbj09PSBWQUNVVU0gKHRhYmxlIHdpdGggbm8gaW5k ZXgpID09PVxuIjsKK3JlcG9ydF93YWxfZGlmZigkb2ZmX25vaWR4LCAkb25fbm9pZHgpOwor CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIyBTY2VuYXJpbyAyOiBWQUNVVU0gd2l0aCBpbmRleAorIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K215ICRvZmZfaWR4ID0gcnVuX2NsdXN0ZXJfdGVzdCgicHJ1bmVfb2ZmX2lkeCIsICJvZmYi LCAidmFjdXVtX3dpdGhfaW5kZXgiKTsKK215ICRvbl9pZHggID0gcnVuX2NsdXN0ZXJfdGVz dCgicHJ1bmVfb25faWR4IiwgICJvbiIsICAidmFjdXVtX3dpdGhfaW5kZXgiKTsKKworY21w X29rKAorCSRvZmZfaWR4LT57cHJ1bmVfYnl0ZXN9LAorCSc+JywKKwkkb25faWR4LT57cHJ1 bmVfYnl0ZXN9LAorCSdERk9SIHJlZHVjZXMgdGhlIFBSVU5FIFdBTCBzaXplIG9uIHZhY3V1 bWluZyBhIHRhYmxlIGhhdmluZyBhbiBpbmRleC4nCispOworCitjbXBfb2soCisJJG9mZl9p ZHgtPnt0b3RhbF9ieXRlc30sCisJJz49JywKKwkkb25faWR4LT57dG90YWxfYnl0ZXN9LAor CSdERk9SIHJlZHVjZXMgdGhlIHRvdGFsIFdBTCBzaXplIG9uIHZhY3V1bWluZyBhIHRhYmxl IGhhdmluZyBhbiBpbmRleC4nCispOworCitwcmludCAiXG5cbj09PSBWQUNVVU0gKHRhYmxl IHdpdGggaW5kZXgpID09PVxuIjsKK3JlcG9ydF93YWxfZGlmZigkb2ZmX2lkeCwgJG9uX2lk eCk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi41My4wCgo= --------------sLR6ZLnPAxZtB7bFceJnj5Kn--