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 1w3Wk2-001JTf-1N for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 10:06:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3Wk0-005HRO-26 for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 10:06:05 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w3Wjz-005HQl-1b for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 10:06:04 +0000 Received: from forward101a.mail.yandex.net ([178.154.239.84]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w3Wjo-0000000099v-0cFL for pgsql-hackers@postgresql.org; Fri, 20 Mar 2026 10:06:02 +0000 Received: from mail-nwsmtp-smtp-production-main-55.vla.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-55.vla.yp-c.yandex.net [IPv6:2a02:6b8:c1f:582e:0:640:200:0]) by forward101a.mail.yandex.net (Yandex) with ESMTPS id 09FCE80DFC; Fri, 20 Mar 2026 13:05:48 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-55.vla.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id g5M2Ux0GsOs0-7RchJtdF; Fri, 20 Mar 2026 13:05:46 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1774001147; bh=ivrmq/malEcStsqj/HAno1TjzAnxhJx6wiVN4s/aJdA=; h=In-Reply-To:References:To:Subject:Message-ID:Date:From; b=emGCaFD1rK0fFrNthqOFbceHOb4cRGpZ5+LzVo/zfQeG+8iamEf7c9ClAK1l8QJKS Zd5KJtJd156KQUbcS2o3rq4PS/Rr4n9FIzWIXTafNVWmHeug6YalxAG2G95RqvXOAj Tunme6dbvR9cIKe9tpPqPgTyX59+h0JZer/IEMfk= Authentication-Results: mail-nwsmtp-smtp-production-main-55.vla.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------Ii8KhORFqzB9FtFJzNJvGcrG" Message-ID: <8b8eefc8-7e96-411c-813f-636af38966f9@tantorlabs.com> Date: Fri, 20 Mar 2026 18:05:41 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Compress prune/freeze records with Delta Frame of Reference algorithm To: Andrey Borodin , PostgreSQL Hackers References: <2D414DAA-99D6-4566-86EE-E5FC8C21F4EA@yandex-team.ru> Content-Language: en-US From: Evgeny Voropaev In-Reply-To: <2D414DAA-99D6-4566-86EE-E5FC8C21F4EA@yandex-team.ru> 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. --------------Ii8KhORFqzB9FtFJzNJvGcrG Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello Andrey, > Great idea and nice library for DFoR! Thank you for your attention. I wish the patch would be useful. All your proposals and recommendations have been implemented in v02. Also the meson settings has been updated for supporting the new developments. > Perhaps, first thing to start is to fix CI failures Once meson is fixed, tests should pass successfully now. Looking forward to this. > As a minor nit: do not use stdlib assert(), use capital Assert() Done. > Are we 100% sure qsort() won't allocate something anywhere? > sort_template.h seems to be allocation-free, but just in case... No guarantees from libraries or from descriptions about qsort's behaviour regarding dynamic memory allocation. So, the qsort is just substituted with the sort_template, which we trust, and as you proposed. Waiting for tests to have passed, and then I hope we could move further. Best regards, Evgeny Voropaev. --------------Ii8KhORFqzB9FtFJzNJvGcrG Content-Type: text/x-patch; charset=UTF-8; name="v02-0001-Implement-vect-and-uniqsortvect-containers-and-b.patch" Content-Disposition: attachment; filename*0="v02-0001-Implement-vect-and-uniqsortvect-containers-and-b.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkOTNjNDM1OGJjNzA2ODQ0Y2QzNDg3YTVjMTNiZjg5MGU3OTVjZjcxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYwMiAxLzNdIEltcGxlbWVudCB2ZWN0IGFuZCB1bmlxc29ydHZlY3QgY29udGFpbmVy 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 LmMgICAgICAgICAgIHwgMjkzICsrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9saWIv dmVjdF91MTYuYyAgICAgICAgICAgICB8ICAgOCArCiBzcmMvaW5jbHVkZS9jLmggICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9saWIvYml0cGFja19zdGFw bGVfdGVtcGwuaCB8ICA1NyArKysrCiBzcmMvaW5jbHVkZS9saWIvYml0cGFja190ZW1wbC5o ICAgICAgICB8ICAxNCArCiBzcmMvaW5jbHVkZS9saWIvYml0cGFja190ZW1wbF91bmRlZi5o ICB8ICAgNSArCiBzcmMvaW5jbHVkZS9saWIvYml0cGFja191MTYuaCAgICAgICAgICB8ICAx MiArCiBzcmMvaW5jbHVkZS9saWIvYml0cGFja191MTZfY29uZmlnLmggICB8ICAgNiArCiBz cmMvaW5jbHVkZS9saWIvdmVjdF90ZW1wbC5oICAgICAgICAgICB8ICAyNyArKwogc3JjL2lu Y2x1ZGUvbGliL3ZlY3RfdGVtcGxfc3RhcGxlLmggICAgfCAxNDAgKysrKysrKysrCiBzcmMv aW5jbHVkZS9saWIvdmVjdF90ZW1wbF91bmRlZi5oICAgICB8ICAyNSArKwogc3JjL2luY2x1 ZGUvbGliL3ZlY3RfdTE2LmggICAgICAgICAgICAgfCAgMzQgKysKIHNyYy9pbmNsdWRlL2xp Yi92ZWN0X3UxNl9jb25maWcuaCAgICAgIHwgIDEwICsKIHNyYy90ZXN0L01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L2Rmb3IvLmdpdGlnbm9yZSAg ICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L2Rmb3IvTWFrZWZpbGUgICAgICAgICAg ICAgICAgIHwgIDQ4ICsrKwogc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZCAgICAgICAgICAg ICAgfCAgNjEgKysrKwogc3JjL3Rlc3QvZGZvci90ZXN0LmggICAgICAgICAgICAgICAgICAg fCAgMzEgKysKIHNyYy90ZXN0L2Rmb3IvdGVzdF9iaXRwYWNrX3UxNi5jICAgICAgIHwgMzU3 ICsrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvZGZvci90ZXN0X3VuaXFzb3J0dmVj dF91MTYuYyAgfCAyNjMgKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvZGZvci90ZXN0X3Zl Y3RfdTE2LmMgICAgICAgICAgfCAxNjggKysrKysrKysrKwogc3JjL3Rlc3QvbGlidGFwLy5n aXRpZ25vcmUgICAgICAgICAgICAgfCAgMTMgKwogc3JjL3Rlc3QvbGlidGFwLy50cmF2aXMu eW1sICAgICAgICAgICAgfCAgMTMgKwogc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcgICAgICAg ICAgICAgICAgfCAxNjUgKysrKysrKysrKwogc3JjL3Rlc3QvbGlidGFwL0lOU1RBTEwgICAg ICAgICAgICAgICAgfCAgNDEgKysrCiBzcmMvdGVzdC9saWJ0YXAvTWFrZWZpbGUgICAgICAg ICAgICAgICB8ICA3MyArKysrKwogc3JjL3Rlc3QvbGlidGFwL01ha2VmaWxlLndpbiAgICAg ICAgICAgfCAgMzcgKysrCiBzcmMvdGVzdC9saWJ0YXAvUkVBRE1FLm1kICAgICAgICAgICAg ICB8IDI2OCArKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9saWJ0YXAvdGFwLmMgICAgICAg ICAgICAgICAgICB8IDQxNyArKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9s aWJ0YXAvdGFwLmggICAgICAgICAgICAgICAgICB8IDExNSArKysrKysrCiBzcmMvdGVzdC9t ZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAzOCBmaWxlcyBjaGFuZ2Vk LCAyODkzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 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 bmRleCA5NDdhMmQ3OWUyOS4uZGZkOWQ5YTdiZWIgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmls 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 ZW1wbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mOTI0NDQ3 Nzc4NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2xpYi9iaXRwYWNrX3RlbXBs LmMKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBiaXRwYWNrX3RlbXBsLmMKKyAqCisgKiBU aGUgQklUUEFDSyB1bml0IGltcGxlbWVudHMgcm91dGluZXMgcGVydGFpbmluZyB0byBiaXQt cGFja2luZy4gVGhlIGJpdHBhY2sKKyAqIHVuaXQgYWxsb3cgaGlnaGVyLWxldmVsIGZ1bmN0 aW9ucyB0byBjcmVhdGUgaGlnaC1kZW5zaXR5IGFycmF5cyBwYWNrZWQKKyAqIGJpdC1ieS1i aXQuIEluIGdlbmVyYWwsIHdpZHRoIG9mIGVhY2ggaXRlbSBpbiBhIGJpdHBhY2tlZCBhcnJh eSBjYW4gdmFyeSBhbmQKKyAqIGhhdmUgbm90IHRvIGJlIG9mIGZpeGVkLCBpdGVtcyBjYW4g aGF2ZSBkaWZmZXJlbnQgbGVuZ3RoLgorICovCisKKyNpbmNsdWRlICJsaWIvYml0cGFja19z dGFwbGVfdGVtcGwuaCIKKworaXRlbV90IHdpZHRoX2Zyb21fdmFsKGl0ZW1fdCB2YWwpOwor aXRlbV90IHdpZHRoX3RvX21hc2soc2l6ZV90IHdpZHRoKTsKK3NpemVfdCBiaXRwYWNrX3Bh Y2sodWludDhfdCAqcGFjaywgc2l6ZV90IGNhcmV0LCBpdGVtX3QgaXRlbSwKKwkJCQkJc2l6 ZV90IHN6SXRlbVdpZHRoKTsKK2l0ZW1fdCBiaXRwYWNrX3VucGFjayhjb25zdCB1aW50OF90 ICpwYWNrLCBzaXplX3QgKmNhcmV0LCBzaXplX3Qgc3pJdGVtV2lkdGgpOworCisvKgorICog U2luY2Ugd2lkdGggb2YgaXRlbV90IGNhbm5vdCBiZSBtb3JlIHRoYW4gbGVuZ3RoIG9mIGl0 ZW1fdAorICogbGcoTUFYKGl0ZW1fdCkpKzEsIHdlIHVzZSB0aGUgaXRlbV90IHR5cGUgZm9y IHJldHVybmVkIHZhbHVlCisgKi8KK2l0ZW1fdAord2lkdGhfZnJvbV92YWwoaXRlbV90IHZh bCkKK3sKKwlpdGVtX3Qgd2lkdGggPSAwOworCisJd2hpbGUgKHZhbCkgeworCQl3aWR0aCsr OworCQl2YWwgPSB2YWwgPj4gMTsKKwl9CisKKwlyZXR1cm4gd2lkdGggPT0gMCA/IDEgOiB3 aWR0aDsKK30KKworaXRlbV90Cit3aWR0aF90b19tYXNrKHNpemVfdCB3aWR0aCkKK3sKKwlz aXplX3QgbWFzayA9IDA7CisKKwlBc3NlcnQod2lkdGggIT0gMCk7CisJQXNzZXJ0KHdpZHRo IDw9IHNpemVvZihpdGVtX3QpICogOCk7CisKKwlpZiAobGlrZWx5KHdpZHRoIDwgc2l6ZW9m KHNpemVfdCkpKQorCQltYXNrID0gKDEgPDwgd2lkdGgpIC0gMTsKKwllbHNlCisJCXdoaWxl ICh3aWR0aC0tKQorCQkJbWFzayA9IChtYXNrIDw8IDEpIHwgMTsKKworCXJldHVybiAoaXRl bV90KW1hc2s7Cit9CisKK3NpemVfdAorYml0cGFja19wYWNrKHVpbnQ4X3QgKnBhY2ssIHNp emVfdCBjYXJldCwgaXRlbV90IGl0ZW0sIHNpemVfdCBzekl0ZW1XaWR0aCkKK3sKKwlzaXpl X3Qgc3pJdGVtV2lkdGhUb0dvID0gc3pJdGVtV2lkdGg7CisJaXRlbV90IGl0bU1hc2tUb0dv ID0gd2lkdGhfdG9fbWFzayhzekl0ZW1XaWR0aCk7CisKKwl3aGlsZSAoc3pJdGVtV2lkdGhU b0dvID4gMCkgeworCQlzaXplX3QgY250U2F2ZWRCaXRzOworCQlzaXplX3QgYnl0ZSA9IGNh cmV0IC8gODsKKwkJc2l6ZV90IG9mZiA9IGNhcmV0ICUgODsKKwkJdWludDhfdCB1YkNodW5r ID0gKHVpbnQ4X3QpaXRlbSA8PCBvZmY7CisJCWl0ZW1fdCBpdG1DaHVua01hc2sgPSBpdG1N YXNrVG9HbyA8PCBvZmY7CisJCS8qCisJCSAqIEFwcGx5aW5nIGNodW5rIHVzaW5nIHRoZSBt YXNrLiBTZXR0aW5nIGJpdHMgdG8gb25lIGFuZCByZXNldHRpbmcgYml0cworCQkgKiB0byB6 ZXJvIGlzIG9ubHkgaW4gc2NvcGVzIGRlZmluZWQgYnkgdGhlIG1hc2suIFplcm9pbmcgb2Yg Yml0cworCQkgKiBhY2NvcmRpbmcgdG8gYSBtYXNrLCB3ZSBjYW4gdXNlIGV2ZW4gYSBwYWNr IG5vdCBiZWVuIG51bGxlZCBpbgorCQkgKiBhZHZhbmNlLgorCQkgKi8KKwkJcGFja1tieXRl XSB8PSAodWJDaHVuayAmIGl0bUNodW5rTWFzayk7CisJCXBhY2tbYnl0ZV0gJj0gKHViQ2h1 bmsgfCB+aXRtQ2h1bmtNYXNrKTsKKwkJY250U2F2ZWRCaXRzID0gKDggLSBvZmYgPiBzekl0 ZW1XaWR0aFRvR28pID8KKwkJCXN6SXRlbVdpZHRoVG9HbyA6CisJCQk4IC0gb2ZmOyAvLyBu dW1iZXIgb2Ygc2F2ZWQgYml0cworCQlzekl0ZW1XaWR0aFRvR28gLT0gY250U2F2ZWRCaXRz OworCQljYXJldCArPSBjbnRTYXZlZEJpdHM7CisJCWl0ZW0gPSBpdGVtID4+IGNudFNhdmVk Qml0czsKKwkJaXRtTWFza1RvR28gPSBpdG1NYXNrVG9HbyA+PiBjbnRTYXZlZEJpdHM7CisJ fQorCXJldHVybiBjYXJldDsKK30KKworaXRlbV90CitiaXRwYWNrX3VucGFjayhjb25zdCB1 aW50OF90ICpwYWNrLCBzaXplX3QgKmNhcmV0LCBzaXplX3Qgd2lkSXRlbSkKK3sKKwlzaXpl X3Qgc3pJdGVtQ2FyZXQ7CisJc2l6ZV90IHN6SXRlbVdpZHRoVG9HbzsKKwl1aW50OF90IGl0 ZW1bc2l6ZW9mKGl0ZW1fdCldOyAvKiBzaXplIG9mIGl0ZW0gYXJyYXkgKi8KKworCXNpemVf dCBzelBhY2tCeXRlOworCXNpemVfdCBzelBhY2tPZmY7CisJc2l6ZV90IHN6SXRlbUJ5dGU7 CisJc2l6ZV90IHN6SXRlbU9mZjsKKwl1aW50OF90IHViQ2h1bms7CisKKwlzekl0ZW1DYXJl dCA9IDA7CisJc3pJdGVtV2lkdGhUb0dvID0gd2lkSXRlbTsKKwltZW1zZXQoaXRlbSwgMCwg c2l6ZW9mKGl0ZW1fdCkpOworCisJd2hpbGUgKHN6SXRlbVdpZHRoVG9HbyA+IDApIHsKKwkJ c2l6ZV90IHN6Q2h1bmtTaXplOworCQlzaXplX3Qgc3pDaHVua0xvd1NpemUsIHN6Q2h1bmtI aWdoU2l6ZTsKKworCQlzelBhY2tCeXRlID0gKmNhcmV0IC8gODsKKwkJc3pQYWNrT2ZmID0g KmNhcmV0ICUgODsKKwkJc3pJdGVtQnl0ZSA9IHN6SXRlbUNhcmV0IC8gODsKKwkJc3pJdGVt T2ZmID0gc3pJdGVtQ2FyZXQgJSA4OworCisJCXViQ2h1bmsgPSBwYWNrW3N6UGFja0J5dGVd ID4+IHN6UGFja09mZjsKKworCQlzekNodW5rU2l6ZSA9IDggLSBzelBhY2tPZmY7CisJCWlm IChzekl0ZW1XaWR0aFRvR28gPCBzekNodW5rU2l6ZSkgeworCQkJc3pDaHVua1NpemUgPSBz ekl0ZW1XaWR0aFRvR287CisJCQl1YkNodW5rID0gdWJDaHVuayAmICh1aW50OF90KXdpZHRo X3RvX21hc2soc3pJdGVtV2lkdGhUb0dvKTsKKwkJfQorCisJCWlmIChzekNodW5rU2l6ZSA+ ICg4IC0gc3pJdGVtT2ZmKSkgLyogRnJlZSBzcGFjZSBvZiBpdGVtW3N6SXRlbUJ5dGVdICov CisJCXsKKwkJCXN6Q2h1bmtMb3dTaXplID0gOCAtIHN6SXRlbU9mZjsKKwkJCXN6Q2h1bmtI aWdoU2l6ZSA9IHN6Q2h1bmtTaXplIC0gc3pDaHVua0xvd1NpemU7CisJCX0gZWxzZSB7CisJ CQlzekNodW5rTG93U2l6ZSA9IHN6Q2h1bmtTaXplOworCQkJc3pDaHVua0hpZ2hTaXplID0g MDsKKwkJfQorCisJCWl0ZW1bc3pJdGVtQnl0ZV0gfD0gdWJDaHVuayA8PCBzekl0ZW1PZmY7 IC8qIGNodW5rX2xvdyAqLworCisJCWlmIChzekNodW5rSGlnaFNpemUgIT0gMCkgeworCQkJ QXNzZXJ0KChzekl0ZW1CeXRlICsgMSkgPCBzaXplb2YoaXRlbV90KSk7IC8qIHNpemUgb2Yg aXRlbSBhcnJheSAqLworCQkJaXRlbVtzekl0ZW1CeXRlICsgMV0gfD0gdWJDaHVuayA+PiBz ekNodW5rTG93U2l6ZTsgLyogY2h1bmtfaGlnaCAqLworCQl9CisKKwkJKmNhcmV0ICs9IHN6 Q2h1bmtTaXplOworCQlzekl0ZW1DYXJldCArPSBzekNodW5rU2l6ZTsKKwkJc3pJdGVtV2lk dGhUb0dvIC09IHN6Q2h1bmtTaXplOworCX0KKworCS8qCisJICogUmVvcmRlcmluZyBieXRl cyBpbiBhY2NvcmRhbmNlIHdpdGggZW5kaWFubmVzcyBvZiB0aGUgc3lzdGVtLgorCSAqCisJ ICogSGVyZSBmb3IgYSBMaXR0bGUtZW5kaWFuIHN5c3RlbSB3ZSBjYW4gYXZvaWQgcmVvcmRl cmluZywgYnV0IGluIHN1Y2ggYQorCSAqIGNhc2Ugd2UgbmVlZCB0byBrZWVwIHRoZSBpdGVt IGFycmF5IGFsaWduZWQgd2l0aCBpdGVtX3QgdHlwZSwgYnV0IHdlIGRvCisJICogbm90IGtl ZXAuCisJICovCisJeworCQlzaXplX3QgaiA9IDE7CisJCWl0ZW1fdCB2YWwgPSBpdGVtW3Np emVvZihpdGVtX3QpIC0gal07CisJCXdoaWxlICgrK2ogPD0gc2l6ZW9mKGl0ZW1fdCkpIHsK KwkJCXZhbCA9IHZhbCA8PCA4OworCQkJdmFsIHw9IGl0ZW1bc2l6ZW9mKGl0ZW1fdCkgLSBq XTsKKwkJfQorCQlyZXR1cm4gdmFsOworCX0KK30KKworI2luY2x1ZGUgImxpYi9iaXRwYWNr X3RlbXBsX3VuZGVmLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWIvYml0cGFja191 MTYuYyBiL3NyYy9iYWNrZW5kL2xpYi9iaXRwYWNrX3UxNi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hZTJlZTZkNmJiMgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9iYWNrZW5kL2xpYi9iaXRwYWNrX3UxNi5jCkBAIC0wLDAgKzEsOCBAQAorLyoKKyAq IEZpbGU6IGJpdHBhY2tfdTE2LmMKKyAqLworCisvKiBjbGFuZy1mb3JtYXQgb2ZmICovCisj aW5jbHVkZSAibGliL2JpdHBhY2tfdTE2X2NvbmZpZy5oIgorI2luY2x1ZGUgImJpdHBhY2tf dGVtcGwuYyIKKy8qIGNsYW5nLWZvcm1hdCBvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbGliL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvbGliL21lc29uLmJ1aWxkCmluZGV4 IDhlMzhmYjIwZjE3Li4wOTg0YmQwZTNmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGli L21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2xpYi9tZXNvbi5idWlsZApAQCAtMSw1 ICsxLDEwIEBACiAjIENvcHlyaWdodCAoYykgMjAyMi0yMDI2LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAogCitkZm9yX3NvdXJjZXMgPSBmaWxlcygKKyAgJ2JpdHBh Y2tfdTE2LmMnLAorICAndmVjdF91MTYuYycKKykKKwogYmFja2VuZF9zb3VyY2VzICs9IGZp bGVzKAogICAnYmlwYXJ0aXRlX21hdGNoLmMnLAogICAnYmxvb21maWx0ZXIuYycsCkBAIC0x MSwzICsxNiw1IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3BhaXJpbmdoZWFw LmMnLAogICAncmJ0cmVlLmMnLAogKQorCitiYWNrZW5kX3NvdXJjZXMgKz0gZGZvcl9zb3Vy Y2VzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWIvdmVjdF90ZW1wbC5jIGIvc3JjL2Jh Y2tlbmQvbGliL3ZlY3RfdGVtcGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uMDkyOWNhNjllOWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9s aWIvdmVjdF90ZW1wbC5jCkBAIC0wLDAgKzEsMjkzIEBACisvKgorICogRmlsZTogdmVjdF90 ZW1wbC5jCisgKi8KKworI2luY2x1ZGUgImxpYi92ZWN0X3RlbXBsX3N0YXBsZS5oIgorCisv KgorICogVmVjdG9yJ3MgZnVuY3Rpb25zCisgKiBLZWVwIHRoaXMgc2VjdGlvbiBlcXVhbCB0 byB0aGUgc2FtZSBzZWN0aW9uIGluIHZlY3RfdGVtcGwuaAorICovCisvKgorICogQ2FsbGVy IGhhcyB0byBjb250cm9sIHdoZXRoZXIgdmVjdG9yIHVzZSBvdXRlciBtZW1vcnkgcHJvdmlk ZWQgYnkgY2FsbGVyIG9yCisgKiBtYW5hZ2UgbWVtb3J5IGFsbG9jYXRpb24gYXV0b21hdGlj YWxseSwgd2hpY2ggZGVmaW5lcyB3aGV0aGVyIHZlY3RfaW5zZXJ0LAorICogdmVjdF9hcHBl bmQgYW5kIG90aGVyIGZ1bmN0aW9ucyBvZiB0aGUgdmVjdG9yIGNvbnRhaW5lciBhdXRvbWF0 aWNhbGx5IG1hbmdlCisgKiBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIG9yIG5vdC4KKyAq LworCitpbnQgdmVjdF9pbml0KHZlY3RfdCAqdiwgc2l6ZV90IGNhcCwgaXRlbV90IG91dGVy X21lbVtdKTsKK2ludCB2ZWN0X2ZpbGwodmVjdF90ICp2LCBzaXplX3QgY250LCBjb25zdCBp dGVtX3QgaW5bXSk7CitpbnQgdmVjdF9yZXNlcnZlKHZlY3RfdCAqdiwgc2l6ZV90IHN6TmV3 Q2FwKTsKK2ludCB2ZWN0X2FwcGVuZCh2ZWN0X3QgKnZlY3QsIGl0ZW1fdCB2YWwpOwordm9p ZCB2ZWN0X3ByaW50KGNvbnN0IHZlY3RfdCAqYSk7CitpbnQgdmVjdF9jb21wYXJlKGNvbnN0 IHZlY3RfdCAqYSwgY29uc3QgdmVjdF90ICpiKTsKK2ludCB2ZWN0X2luc2VydCh2ZWN0X3Qg KnYsIHNpemVfdCBwb3MsIGl0ZW1fdCB2YWwpOwordm9pZCB2ZWN0X2NsZWFyKHZlY3RfdCAq dik7CisKKy8qCisgKiBVbmlxdWUgc29ydGVkIHZlY3RvcidzIGZ1bmN0aW9ucworICogS2Vl cCB0aGlzIHNlY3Rpb24gZXF1YWwgdG8gdGhlIHNhbWUgc2VjdGlvbiBpbiB2ZWN0X3RlbXBs LmgKKyAqLwordXN2X2luc19yZXNfdCB1c3ZfaW5zZXJ0KHVuaXFzb3J0dmVjdF90ICphLCBp dGVtX3QgdmFsKTsKK3Vzdl9zcmNoX3Jlc190IHVzdl9zZWFyY2goY29uc3QgdW5pcXNvcnR2 ZWN0X3QgKnVzdiwgaXRlbV90IHZhbCk7CisKK2ludAordmVjdF9pbml0KHZlY3RfdCAqdiwg c2l6ZV90IGNhcCwgaXRlbV90IG91dGVyX21lbVtdKQoreworCWlmICh2ID09IE5VTEwpCisJ CWdvdG8gdmVjdF9pbml0X2Vycm9yOworCisJdi0+Y2FwID0gY2FwOworCXYtPmNudCA9IDA7 CisKKwlpZiAob3V0ZXJfbWVtICE9IE5VTEwpCisJeworCQl2LT5tZW1faXNfb3V0ZXIgPSB0 cnVlOworCQl2LT5tID0gb3V0ZXJfbWVtOworCX0KKwllbHNlCisJeworCQl2LT5tZW1faXNf b3V0ZXIgPSBmYWxzZTsKKwkJaWYgKGNhcCA9PSAwKQorCQkJdi0+bSA9IE5VTEw7CisJCWVs c2UKKwkJeworCQkJdi0+bSA9IChpdGVtX3QgKilWRUNUX01BTExPQyhjYXAgKiBzaXplb2Yo aXRlbV90KSk7CisJCQlpZiAodi0+bSA9PSBOVUxMKQorCQkJCWdvdG8gdmVjdF9pbml0X2Vy cm9yOworCQl9CisJfQorCisJLyogdmVjdF9pbml0X29rOiAqLworCXJldHVybiAwOwordmVj dF9pbml0X2Vycm9yOgorCW1lbXNldCgmdiwgMCwgc2l6ZW9mKHZlY3RfdCkpOworCXJldHVy biAtMTsKK30KKworaW50Cit2ZWN0X2ZpbGwodmVjdF90ICp2LCBzaXplX3QgY250LCBjb25z dCBpdGVtX3QgaW5bXSkKK3sKKwlpZiAodiA9PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlp ZiAoY250ID09IDApCisJeworCQl2ZWN0X2NsZWFyKHYpOworCQlyZXR1cm4gMDsKKwl9CisK Kwlmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNudDsgaisrKQorCXsKKwkJaWYgKHZlY3RfYXBw ZW5kKHYsIGluW2pdKSAhPSAwKQorCQl7CisJCQl2ZWN0X2NsZWFyKHYpOworCQkJcmV0dXJu IC0xOworCQl9CisJfQorCXJldHVybiAwOworfQorCitpbnQKK3ZlY3RfcmVzZXJ2ZSh2ZWN0 X3QgKnYsIHNpemVfdCBzek5ld0NhcCkKK3sKKwlpdGVtX3QgKm1OZXc7CisKKwlpZiAodi0+ bWVtX2lzX291dGVyKQorCQlyZXR1cm4gLTE7CisKKwlpZiAoc3pOZXdDYXAgPD0gdi0+Y2Fw KQorCQlyZXR1cm4gMDsKKworCW1OZXcgPSAoaXRlbV90ICopIFZFQ1RfTUFMTE9DKHNpemVv ZihpdGVtX3QpICogc3pOZXdDYXApOworCisJaWYgKG1OZXcgPT0gTlVMTCkKKwkJcmV0dXJu IC0xOworCisJbWVtY3B5KG1OZXcsIHYtPm0sIHYtPmNudCAqIHNpemVvZihpdGVtX3QpKTsK KwlWRUNUX0ZSRUUodi0+bSk7CisJdi0+bSA9IG1OZXc7CisJdi0+Y2FwID0gc3pOZXdDYXA7 CisJcmV0dXJuIDA7Cit9CisKK2ludAordmVjdF9hcHBlbmQodmVjdF90ICp2ZWN0LCBpdGVt X3QgdmFsKQoreworCWlmICh2ZWN0ID09IE5VTEwpCisJCXJldHVybiAtMTsKKworCWlmICh2 ZWN0LT5jbnQgKyAxID4gdmVjdC0+Y2FwKQorCXsKKwkJaWYgKHZlY3QtPm1lbV9pc19vdXRl cikKKwkJCXJldHVybiAtMTsKKwkJZWxzZQorCQkJdmVjdF9yZXNlcnZlKHZlY3QsIHZlY3Qt PmNhcCArIFZFQ1RfTUVNQUxMT0NTVEVQKTsKKwl9CisKKwl2ZWN0LT5tW3ZlY3QtPmNudF0g PSB2YWw7CisJdmVjdC0+Y250Kys7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQKK3ZlY3RfcHJp bnQoY29uc3QgdmVjdF90ICphKQoreworCWZvciAoc2l6ZV90IGogPSAwOyBqIDwgYS0+Y250 OyBqKyspCisJCXByaW50ZigiJSIgVkVDVF9JVEVNX0ZPUk1BVF9TUEVDSUZJRVIgIiAiLCBh LT5tW2pdKTsKKworCXByaW50ZigiXG4iKTsKK30KKworaW50Cit2ZWN0X2NvbXBhcmUoY29u c3QgdmVjdF90ICphLCBjb25zdCB2ZWN0X3QgKmIpCit7CisJaWYgKGEgPT0gTlVMTCB8fCBi ID09IE5VTEwpCisJCXJldHVybiAtMTsKKworCWlmIChhLT5jbnQgIT0gYi0+Y250KQorCQly ZXR1cm4gLTE7CisKKwlmb3IgKHNpemVfdCBqID0gMDsgaiA8IGEtPmNudDsgaisrKQorCQlp ZiAoYS0+bVtqXSAhPSBiLT5tW2pdKQorCQkJcmV0dXJuIC0xOworCisJcmV0dXJuIDA7Cit9 CisKK2ludAordmVjdF9pbnNlcnQodmVjdF90ICp2LCBzaXplX3QgcG9zLCBpdGVtX3QgdmFs KQoreworCWlmICh2LT5jYXAgPCB2LT5jbnQgKyAxICYmCisJCSh2LT5tZW1faXNfb3V0ZXIg fHwgdmVjdF9yZXNlcnZlKHYsIHYtPmNhcCArIFZFQ1RfTUVNQUxMT0NTVEVQKSAhPSAwKSkK KwkJcmV0dXJuIC0xOworCisJLyoKKwkgKiBJZiBuZWVkLCBtb3ZlIHJpZ2h0IGZyb20gcG9z IGluY2x1ZGluZyBwb3MuIEJlY2F1c2UKKwkgKiBuZWl0aGVyIHN0ZGxpYidzIG5vciBQT1NJ WCdzIGRvY3VtZW50YXRpb24gZGVmaW5lcyB0aGUKKwkgKiBiZWhhdmlvdXIgb2YgbWVtbW92 ZSBpbiBjYXNlIG9mIGNvdW50PTAsIHdlIGNoZWNrIGl0IGJ5CisJICogb3Vyc2VsdmVzLgor CSAqLworCWlmICh2LT5jbnQgLSBwb3MgPiAwKQorCQltZW1tb3ZlKCZ2LT5tW3BvcyArIDFd LCAmdi0+bVtwb3NdLCAodi0+Y250IC0gcG9zKSAqIHNpemVvZihpdGVtX3QpKTsKKworCXYt Pm1bcG9zXSA9IHZhbDsKKwl2LT5jbnQrKzsKKwlyZXR1cm4gMDsKK30KKwordm9pZAordmVj dF9jbGVhcih2ZWN0X3QgKnYpCit7CisJaWYgKHYgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJ aWYgKCF2LT5tZW1faXNfb3V0ZXIpCisJCVZFQ1RfRlJFRSh2LT5tKTsKKworCW1lbXNldCh2 LCAwLCBzaXplb2YodmVjdF90KSk7Cit9CisKK3Vzdl9zcmNoX3Jlc190Cit1c3Zfc2VhcmNo KGNvbnN0IHVuaXFzb3J0dmVjdF90ICp1c3YsIGl0ZW1fdCB2YWwpCit7CisJc2l6ZV90IGks IGwsIGc7CisJdXN2X3NyY2hfcmVzX3QgcmVzOworCisJaWYgKHVzdiA9PSBOVUxMIHx8ICh1 c3YtPm0gPT0gTlVMTCAmJiAoKHVzdi0+Y250ICE9IDApIHx8IHVzdi0+Y2FwICE9IDApKSkg eworCQlyZXMuc3QgPSBVU1ZfU1JDSF9FUlJPUjsKKwkJcmV0dXJuIHJlczsKKwl9CisKKwlp ZiAodXN2LT5jbnQgPT0gMCkgeworCQlyZXMucG9zID0gMDsKKwkJcmVzLnN0ID0gVVNWX1NS Q0hfRU1QVFk7CisJCXJldHVybiByZXM7CisJfQorCisJaWYgKHZhbCA8IHVzdi0+bVswXSkg eworCQlyZXMucG9zID0gMDsKKwkJcmVzLnN0ID0gVVNWX1NSQ0hfTk9UX0ZPVU5EX1NNQUxM RVNUOworCQlyZXR1cm4gcmVzOworCX0KKworCWlmICh2YWwgPiB1c3YtPm1bdXN2LT5jbnQg LSAxXSkgeworCQlyZXMucG9zID0gdXN2LT5jbnQgLSAxOworCQlyZXMuc3QgPSBVU1ZfU1JD SF9OT1RfRk9VTkRfTEFSR0VTVDsKKwkJcmV0dXJuIHJlczsKKwl9CisKKwlsID0gMDsKKwln ID0gdXN2LT5jbnQgLSAxOworCisJd2hpbGUgKGcgLSBsID4gMSkgeworCQlpID0gbCArIChn IC0gbCkgLyAyOworCQlpZiAodmFsID09IHVzdi0+bVtpXSkgeworCQkJcmVzLnBvcyA9IGk7 CisJCQlyZXMuc3QgPSBVU1ZfU1JDSF9GT1VORDsKKwkJCXJldHVybiByZXM7CisJCX0gZWxz ZSBpZiAodmFsID4gdXN2LT5tW2ldKSB7CisJCQlsID0gaTsKKwkJfSBlbHNlIC8vIHZhbCA8 PSB1c3YtPm1baV0KKwkJeworCQkJZyA9IGk7CisJCX0KKwl9CisJLyoKKwkgKiBXaGVuIHNj b3BlcyBsIGFuZCBnIGFyZSBuZWlnaGJvdXJzICggIGctbCA9IDEpCisJICovCisJaWYgKHZh bCA9PSB1c3YtPm1bZ10pIHsKKwkJcmVzLnBvcyA9IGc7CisJCXJlcy5zdCA9IFVTVl9TUkNI X0ZPVU5EOworCQlyZXR1cm4gcmVzOworCX0gZWxzZSBpZiAodmFsID09IHVzdi0+bVtsXSkg eworCQlyZXMucG9zID0gbDsKKwkJcmVzLnN0ID0gVVNWX1NSQ0hfRk9VTkQ7CisJCXJldHVy biByZXM7CisJfQorCisJcmVzLnBvcyA9IGc7CisJcmVzLnN0ID0gVVNWX1NSQ0hfTk9UX0ZP VU5EOworCXJldHVybiByZXM7Cit9CisKKy8qCisgKiBJTlNFUlQKKyAqIHJlY2VpdmVzIGEg dmFsdWUsIGNoZWNrcyB3aGV0aGVyIGFuIHVuaXF1ZSBzb3J0ZWQgdmFsdWVzIHZlY3RvciBj b250YWlucworICogdGhpcyB2YWx1ZS4gSWYgbm90LCBpbnNlcnRzIG5ldyB2YWx1ZSwgcmV0 YWluaW5nIHNvcnRlZCBvcmRlci4KKyAqLwordXN2X2luc19yZXNfdAordXN2X2luc2VydCh1 bmlxc29ydHZlY3RfdCAqYSwgaXRlbV90IHZhbCkKK3sKKwl1c3Zfc3JjaF9yZXNfdCBzZWFy Y2g7CisJdXN2X2luc19yZXNfdCBpbnNlcnQ7CisKKwlBc3NlcnQoYSAhPSBOVUxMKTsKKwor CXNlYXJjaCA9IHVzdl9zZWFyY2goYSwgdmFsKTsKKwlpZiAoc2VhcmNoLnN0ID09IFVTVl9T UkNIX0ZPVU5EKSB7CisJCWluc2VydC5zdCA9IFVTVl9JTlNfRVhJU1RTOworCQlpbnNlcnQu cG9zID0gc2VhcmNoLnBvczsKKwkJcmV0dXJuIGluc2VydDsKKwl9IGVsc2UgaWYgKHNlYXJj aC5zdCA9PSBVU1ZfU1JDSF9OT1RfRk9VTkRfU01BTExFU1QgfHwKKwkJCSAgIHNlYXJjaC5z dCA9PSBVU1ZfU1JDSF9OT1RfRk9VTkQpIHsKKwkJaW5zZXJ0LnBvcyA9IHNlYXJjaC5wb3M7 CisJfSBlbHNlIGlmIChzZWFyY2guc3QgPT0gVVNWX1NSQ0hfRU1QVFkgfHwKKwkJCSAgIHNl YXJjaC5zdCA9PSBVU1ZfU1JDSF9OT1RfRk9VTkRfTEFSR0VTVCkgeworCQkvKiBJbiBjYXNl IHdoZW4gdmFsdWUgaXMgbW9yZSB0aGFuIGxhcmdlc3Q6IHBvcyA9IGEtPmNudCA9IHNlYXJj aC5nICsgMS4KKwkJICovCisJCS8qIEluIGNhc2Ugb2YgZW1wdHkgdmVjdG9yOiBwb3MgPSBh LT5jbnQgPSAwLiAqLworCQlpbnNlcnQucG9zID0gYS0+Y250OworCX0gZWxzZSAvKiBVU1Zf U1JDSF9FUlJPUiBvciB1bmtub3duIHJlc3VsdCAqLworCXsKKwkJaW5zZXJ0LnN0ID0gVVNW X0lOU19FUlJPUjsKKwkJcmV0dXJuIGluc2VydDsKKwl9CisKKwlpbnNlcnQuc3QgPSB2ZWN0 X2luc2VydChhLCBpbnNlcnQucG9zLCB2YWwpCisJPT0gMCA/IFVTVl9JTlNfTkVXIDogVVNW X0lOU19FUlJPUjsKKworCXJldHVybiBpbnNlcnQ7Cit9CisKKyNpbmNsdWRlICJsaWIvdmVj dF90ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGliL3ZlY3RfdTE2 LmMgYi9zcmMvYmFja2VuZC9saWIvdmVjdF91MTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMGFiOGUyMjRjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv YmFja2VuZC9saWIvdmVjdF91MTYuYwpAQCAtMCwwICsxLDggQEAKKy8qCisgKiBGaWxlOiB2 ZWN0X3UxNi5jCisgKi8KKworLyogY2xhbmctZm9ybWF0IG9mZiAqLworI2luY2x1ZGUgImxp Yi92ZWN0X3UxNl9jb25maWcuaCIKKyNpbmNsdWRlICJ2ZWN0X3RlbXBsLmMiCisvKiBjbGFu Zy1mb3JtYXQgb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNs dWRlL2MuaAppbmRleCBmZDZiMDkzYmIzYS4uZDIwOTEwMTA1ZmUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTQ5OSw2ICs0OTksMTAg QEAgZXh0ZXJuICJDKysiCiAjZGVmaW5lIENwcEFzU3RyaW5nKGlkZW50aWZpZXIpICNpZGVu dGlmaWVyCiAjZGVmaW5lIENwcEFzU3RyaW5nMih4KQkJCUNwcEFzU3RyaW5nKHgpCiAjZGVm aW5lIENwcENvbmNhdCh4LCB5KQkJCXgjI3kKKyNkZWZpbmUgQ3BwQ29uY2F0Mih4LCB5KQkJ Q3BwQ29uY2F0KHgsIHkpCisKKyNkZWZpbmUgQ3BwQ29uY2F0VHJpcGxlKHgsIHksIHopCXgj I3kjI3oKKyNkZWZpbmUgQ3BwQ29uY2F0VHJpcGxlMihhLCBiLCBjKQlDcHBDb25jYXRUcmlw bGUoYSwgYiwgYykKIAogLyoKICAqIFZBX0FSR1NfTkFSR1MKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2xpYi9iaXRwYWNrX3N0YXBsZV90ZW1wbC5oIGIvc3JjL2luY2x1ZGUvbGliL2Jp dHBhY2tfc3RhcGxlX3RlbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjVjOTk3MmUwOGNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGli L2JpdHBhY2tfc3RhcGxlX3RlbXBsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIEZpbGU6 IGJpdHBhY2tfc3RhcGxlX3RlbXBsLmguaAorICovCisKKyNpbmNsdWRlICJjLmgiCisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyAqIE5PTlJFVVNBQkxFIENPREUsIGFsbG93ZWQg dG8gYmUgaW5jbHVkZWQgb25seSBvbmNlCisgKgorICogVGhpcyBjb2RlIHNob3VsZCBhcHBl YXIgb25seSBvbmNlIGluIGEgZmlsZSAob3IgaW4gYSBjaGFpbiBvZiBmaWxlcykKKyAqIGlu Y2x1ZGluZyB0aGlzIGhlYWRlciB3aXRoICNpbmNsdWRlLiBTbywgd2UgcHJvdGVjdCBpdCBm cm9tIGR1cGxpY2F0ZXMgYnkKKyAqIG1lYW5zIG9mIG1hY3JvCisgKgorICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworI2lmbmRlZiBfQklUUEFDS19TVEFQTEVfVEVNUExfSF9VTklRVUVf Q09ERV8KKyNkZWZpbmUgX0JJVFBBQ0tfU1RBUExFX1RFTVBMX0hfVU5JUVVFX0NPREVfCisK Ky8qIE5vIGNvZGUgaGVyZSB5ZXQgKi8KKworI2VuZGlmIC8qIF9CSVRQQUNLX1NUQVBMRV9U RU1QTF9IX1VOSVFVRV9DT0RFXyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg KiBFbmQgb2YgQ29kZSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5IG9uY2UKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog UkVVU0FCTEUgQ09ERQorICoKKyAqIFRoaXMgY29kZSBjYW4gYmUgcmV1c2VkIHdpdGggI2lu Y2x1ZGUgZGlyZWN0aXZlIGluIGEgZmlsZSBpZiBCSVRQQUNLX01BUktFUgorICogcmVkZWZp bmVkLiBUaGlzIGFsbG93IGNyZWF0aW9uIG9mIHNldmVyYWwgdHlwZXMgb2YgdmVjdG9ycyB3 aXRoIGRpZmZlcmVudAorICogdHlwZXMgb2YgbWVtYmVycy4KKyAqCisgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisKKyNpZm5kZWYgQklUUEFDS19JVEVNX1RZUEUKKyNlcnJvciAiQklU UEFDS19JVEVNX1RZUEUgbWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgorI2lmbmRlZiBC SVRQQUNLX01BUktFUgorI2Vycm9yICJCSVRQQUNLX01BUktFUiBtYWNybyBpcyBpbmRlZmlu ZWQuIgorI2VuZGlmCisKKyNkZWZpbmUgaXRlbV90CQkgICBCSVRQQUNLX0lURU1fVFlQRQor I2RlZmluZSB3aWR0aF9mcm9tX3ZhbCBDcHBDb25jYXRUcmlwbGUyKHdpZHRoXywgQklUUEFD S19NQVJLRVIsIF9mcm9tX3ZhbCkKKyNkZWZpbmUgd2lkdGhfdG9fbWFzayAgQ3BwQ29uY2F0 VHJpcGxlMih3aWR0aF8sIEJJVFBBQ0tfTUFSS0VSLCBfdG9fbWFzaykKKyNkZWZpbmUgYml0 cGFja19wYWNrICAgQ3BwQ29uY2F0VHJpcGxlMihiaXRwYWNrXywgQklUUEFDS19NQVJLRVIs IF9wYWNrKQorI2RlZmluZSBiaXRwYWNrX3VucGFjayBDcHBDb25jYXRUcmlwbGUyKGJpdHBh Y2tfLCBCSVRQQUNLX01BUktFUiwgX3VucGFjaykKKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICogRW5kIG9mIFJldXNhYmxlIENvZGUKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKworLyoKKyAqIERvbid0IGZvcmdldCB0byBpbmNsdWRlIHRoaXMgY29kZSBpbiB5b3Vy IGZpbGUgdGhhdCB1c2VzIHRoaXMgaGVhZGVyCisgKgorICogI2luY2x1ZGUgImxpYi9iaXRw YWNrX3RlbXBsX3VuZGVmLmgiCisgKgorICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9s aWIvYml0cGFja190ZW1wbC5oIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGwuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjNhNmUwNmMzMjgKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvYml0cGFja190ZW1wbC5oCkBAIC0w LDAgKzEsMTQgQEAKKy8qCisgKiBiaXRwYWNrX3RlbXBsLmgKKyAqCisgKi8KKworI2luY2x1 ZGUgImJpdHBhY2tfc3RhcGxlX3RlbXBsLmgiCisKK2V4dGVybiBpdGVtX3Qgd2lkdGhfZnJv bV92YWwoaXRlbV90IHZhbCk7CitleHRlcm4gaXRlbV90IHdpZHRoX3RvX21hc2soc2l6ZV90 IHdpZHRoKTsKK2V4dGVybiBzaXplX3QgYml0cGFja19wYWNrKHVpbnQ4X3QgKnBhY2ssIHNp emVfdCBjYXJldCwgaXRlbV90IGl0ZW0sCisJCQkJCQkgICBzaXplX3Qgc3pJdGVtV2lkdGgp OworZXh0ZXJuIGl0ZW1fdCBiaXRwYWNrX3VucGFjayhjb25zdCB1aW50OF90ICpwYWNrLCBz aXplX3QgKmNhcmV0LCBzaXplX3Qgc3pJdGVtV2lkdGgpOworCisjaW5jbHVkZSAiYml0cGFj a190ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tf dGVtcGxfdW5kZWYuaCBiL3NyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3RlbXBsX3VuZGVmLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjViZjg2NGZmYTE1Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGxfdW5kZWYu aApAQCAtMCwwICsxLDUgQEAKKyN1bmRlZiBpdGVtX3QKKyN1bmRlZiB3aWR0aF9mcm9tX3Zh bAorI3VuZGVmIHdpZHRoX3RvX21hc2sKKyN1bmRlZiBiaXRwYWNrX3BhY2sKKyN1bmRlZiBi aXRwYWNrX3VucGFjawpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2 LmggYi9zcmMvaW5jbHVkZS9saWIvYml0cGFja191MTYuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNDVmYjZjNGIxN2IKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS9saWIvYml0cGFja191MTYuaApAQCAtMCwwICsxLDEyIEBACisvKgorICog Yml0cGFjay5oCisgKi8KKyNpZm5kZWYgX0JJVFBBQ0tfVTE2X0hfCisjZGVmaW5lIF9CSVRQ QUNLX1UxNl9IXworCisvKiBjbGFuZy1mb3JtYXQgb2ZmICovCisjaW5jbHVkZSAiYml0cGFj a191MTZfY29uZmlnLmgiCisjaW5jbHVkZSAiYml0cGFja190ZW1wbC5oIgorLyogY2xhbmct Zm9ybWF0IG9uICovCisKKyNlbmRpZiAvKiBfQklUUEFDS19VMTZfSF8gKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3UxNl9jb25maWcuaCBiL3NyYy9pbmNsdWRl L2xpYi9iaXRwYWNrX3UxNl9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uOWU2YzY0ZDRmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVk ZS9saWIvYml0cGFja191MTZfY29uZmlnLmgKQEAgLTAsMCArMSw2IEBACisvKgorICogRmls ZTogdmVjdF91MTZfY29uZmlnLmgKKyAqLworCisjZGVmaW5lIEJJVFBBQ0tfSVRFTV9UWVBF IHVpbnQxNl90CisjZGVmaW5lIEJJVFBBQ0tfTUFSS0VSCSAgdTE2CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9saWIvdmVjdF90ZW1wbC5oIGIvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVt cGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGVlYzZmMDY0 YjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvdmVjdF90ZW1wbC5oCkBA IC0wLDAgKzEsMjcgQEAKKy8qCisgKiBGaWxlOiB2ZWN0X3RlbXBsLmgKKyAqLworCisjaW5j bHVkZSAidmVjdF90ZW1wbF9zdGFwbGUuaCIKKworLyoKKyAqIFZlY3RvcidzIGZ1bmN0aW9u cworICogS2VlcCB0aGlzIHNlY3Rpb24gZXF1YWwgdG8gdGhlIHNhbWUgc2VjdGlvbiBpbiB2 ZWN0X3RlbXBsLmMKKyAqLworZXh0ZXJuIGludCB2ZWN0X2luaXQodmVjdF90ICp2LCBzaXpl X3QgY2FwLCBpdGVtX3QgZXh0ZXJuYWxfbWVtb3J5W10pOworZXh0ZXJuIGludCB2ZWN0X2Zp bGwodmVjdF90ICp2LCBzaXplX3QgY250LCBjb25zdCBpdGVtX3QgKmluKTsKK2V4dGVybiBp bnQgdmVjdF9yZXNlcnZlKHZlY3RfdCAqdiwgc2l6ZV90IHN6TmV3Q2FwKTsKK2V4dGVybiBp bnQgdmVjdF9hcHBlbmQodmVjdF90ICp2ZWN0LCBpdGVtX3QgdmFsKTsKK2V4dGVybiB2b2lk IHZlY3RfcHJpbnQoY29uc3QgdmVjdF90ICphKTsKK2V4dGVybiBpbnQgdmVjdF9jb21wYXJl KGNvbnN0IHZlY3RfdCAqYSwgY29uc3QgdmVjdF90ICpiKTsKK2V4dGVybiBpbnQgdmVjdF9p bnNlcnQodmVjdF90ICp2LCBzaXplX3QgcG9zLCBpdGVtX3QgdmFsKTsKK2V4dGVybiB2b2lk IHZlY3RfY2xlYXIodmVjdF90ICp2KTsKKworLyoKKyAqIFVuaXF1ZSBzb3J0ZWQgdmVjdG9y J3MgZnVuY3Rpb25zCisgKiBLZWVwIHRoaXMgc2VjdGlvbiBlcXVhbCB0byB0aGUgc2FtZSBz ZWN0aW9uIGluIHZlY3RfdGVtcGwuYworICovCitleHRlcm4gdXN2X2luc19yZXNfdCB1c3Zf aW5zZXJ0KHVuaXFzb3J0dmVjdF90ICphLCBpdGVtX3QgdmFsKTsKK2V4dGVybiB1c3Zfc3Jj aF9yZXNfdCB1c3Zfc2VhcmNoKGNvbnN0IHVuaXFzb3J0dmVjdF90ICp1c3YsIGl0ZW1fdCB2 YWwpOworCisjaW5jbHVkZSAidmVjdF90ZW1wbF91bmRlZi5oIgpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3RlbXBsX3N0 YXBsZS5oIGIvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGxfc3RhcGxlLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIxOTJjNmQ4MmEzCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGxfc3RhcGxlLmgKQEAgLTAsMCAr MSwxNDAgQEAKKy8qCisgKiBGaWxlOiB2ZWN0X3N0YXBsZV90ZW1wbC5oCisgKi8KKworI2lu Y2x1ZGUgImMuaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogTk9OUkVVU0FC TEUgQ09ERSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5IG9uY2UKKyAqCisgKiBUaGlz IGNvZGUgc2hvdWxkIGFwcGVhciBvbmx5IG9uY2UgaW4gYSBmaWxlIChvciBpbiBhIGNoYWlu IG9mIGZpbGVzKQorICogaW5jbHVkaW5nIHRoaXMgaGVhZGVyIHdpdGggI2luY2x1ZGUuIFNv LCB3ZSBwcm90ZWN0IGl0IGZyb20gZHVwbGljYXRlcyBieQorICogbWVhbnMgb2YgbWFjcm8K KyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZuZGVmIF9WRUNUX1NUQVBMRV9U RU1QTF9IX1VOSVFVRV9DT0RFXworI2RlZmluZSBfVkVDVF9TVEFQTEVfVEVNUExfSF9VTklR VUVfQ09ERV8KKworLyoKKyAqIFNFQVJDSCBpbiBWZWN0b3Igb2YgVW5pcXVlIFNvcnRlZCBt ZW1iZXJzCisgKi8KK3R5cGVkZWYgZW51bQoreworCVVTVl9TUkNIX0VSUk9SID0gLTEsCisJ VVNWX1NSQ0hfRk9VTkQgPSAwLAorCVVTVl9TUkNIX0VNUFRZLAorCVVTVl9TUkNIX05PVF9G T1VORCwKKwlVU1ZfU1JDSF9OT1RfRk9VTkRfU01BTExFU1QsCisJVVNWX1NSQ0hfTk9UX0ZP VU5EX0xBUkdFU1QKK30gdXN2X3NyY2hfc3RhdF90OworCit0eXBlZGVmIHN0cnVjdAorewor CXVzdl9zcmNoX3N0YXRfdCBzdDsKKwlzaXplX3QgcG9zOyAvKiBwb3NpdGlvbiAoaW5kZXgp IG9mIGEgbWVtYmVyIHRoYXQgaXMgZXF1YWwgdG8gc2VhcmNoZWQgdmFsdWUKKwkJCQkgKiBv ciB0aGF0IGlzIG5lYXJlc3QgZ3JlYXRlciBtZW1iZXIgKi8KK30gdXN2X3NyY2hfcmVzX3Q7 CisKKy8qCisgKiBJTlNFUlQgIGluIFZlY3RvciBvZiBVbmlxdWUgU29ydGVkIG1lbWJlcnMK KyAqLwordHlwZWRlZiBlbnVtCit7CisJVVNWX0lOU19FUlJPUiA9IC0xLAorCVVTVl9JTlNf RVhJU1RTID0gMCwKKwlVU1ZfSU5TX05FVworfSB1c3ZfaW5zX3N0YXRfdDsKKwordHlwZWRl ZiBzdHJ1Y3QKK3sKKwl1c3ZfaW5zX3N0YXRfdCBzdDsKKwlzaXplX3QgcG9zOyAvKiBwb3Np dGlvbiAoaW5kZXgpIG9mIGEgbWVtYmVyIHRoYXQgd2FzIGluc2VydGVkIG9yIHRoYXQgcHJv dmVkCisJCQkJICogdG8gYmUgZXF1YWwgdG8gaW5zZXJ0ZWQgdmFsdWUKKwkJCQkgKi8KK30g dXN2X2luc19yZXNfdDsKKworI2VuZGlmIC8qIF9WRUNUX1NUQVBMRV9URU1QTF9IX1VOSVFV RV9DT0RFXyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBFbmQgb2YgQ29k ZSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5IG9uY2UKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogUkVVU0FCTEUgQ09E RQorICoKKyAqIFRoaXMgY29kZSBjYW4gYmUgcmV1c2VkIHdpdGggI2luY2x1ZGUgZGlyZWN0 aXZlIGluIGEgZmlsZSBpZiBWRUNUX01BUktFUgorICogcmVkZWZpbmVkLiBUaGlzIGFsbG93 IGNyZWF0aW9uIG9mIHNldmVyYWwgdHlwZXMgb2YgdmVjdG9ycyB3aXRoIGRpZmZlcmVudAor ICogdHlwZXMgb2YgbWVtYmVycy4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisK KyNpZm5kZWYgVkVDVF9JVEVNX1RZUEUKKyNlcnJvciAiVkVDVF9JVEVNX1RZUEUgbWFjcm8g aXMgaW5kZWZpbmVkLiIKKyNlbmRpZgorCisjaWZuZGVmIFZFQ1RfSVRFTV9GT1JNQVRfU1BF Q0lGSUVSCisjZXJyb3IgIlZFQ1RfSVRFTV9GT1JNQVRfU1BFQ0lGSUVSIG1hY3JvIGlzIGlu ZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBWRUNUX01BUktFUgorI2Vycm9yICJWRUNU X01BUktFUiBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNpZm5kZWYgVkVDVF9N RU1BTExPQ1NURVAKKyNlcnJvciAiVkVDVF9NRU1BTExPQ1NURVAgbWFjcm8gaXMgaW5kZWZp bmVkLiIKKyNlbmRpZgorCisjaWZuZGVmIFZFQ1RfTUFMTE9DCisjZXJyb3IgIlZFQ1RfTUFM TE9DIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBWRUNUX0ZSRUUK KyNlcnJvciAiVkVDVF9GUkVFIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworLyoK KyAqIFRoZSBWZWN0b3IgdHlwZSBpdHNlbGYsCisgKiBUaGUgVmVjdG9yIG9mIFVuaXF1ZSBT b3J0ZWQgSXRlbXMgdHlwZQorICogYW5kIHRoZSBJdGVtIHR5cGUKKyAqCisgKiBJbiBmYWN0 LCB2ZWN0b3JzJ3MgbmFtZXMgbG9va3MgbGlrZSB2ZWN0X3UxNl90IHdoZXJlOgorICogICAg IHZlY3RfIC0gY29tbW9uIHByZWZpeCwKKyAqICAgICB1MTYgLSBtYXJrZXIsCisgKiAgICAg X3QgLSBzdWZmaXgKKyAqLworI2RlZmluZSB2ZWN0X3QJCSAgIENwcENvbmNhdFRyaXBsZTIo dmVjdF8sIFZFQ1RfTUFSS0VSLCBfdCkKKyNkZWZpbmUgdW5pcXNvcnR2ZWN0X3QgQ3BwQ29u Y2F0VHJpcGxlMih1bmlxc29ydHZlY3RfLCBWRUNUX01BUktFUiwgX3QpCisjZGVmaW5lIGl0 ZW1fdAkJICAgVkVDVF9JVEVNX1RZUEUKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlzaXplX3Qg Y250OwkJICAgLyogbnVtYmVyIG9mIGl0ZW1zICovCisJc2l6ZV90IGNhcDsJCSAgIC8qIGNh cGFjaXR5ICovCisJYm9vbCBtZW1faXNfb3V0ZXI7IC8qIGZsYWcgYWJvdXQgYW4gZXh0ZXJu YWwgbWVtb3J5IGlzIHVzZWQgKi8KKwlpdGVtX3QgKm07CQkgICAvKiBpdGVtcyAobWVtYmVy cykgKi8KK30gdmVjdF90OworCit0eXBlZGVmIHZlY3RfdCB1bmlxc29ydHZlY3RfdDsKKwor I2RlZmluZSB2ZWN0X2luaXQJCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8sIFZFQ1RfTUFS S0VSLCBfaW5pdCkKKyNkZWZpbmUgdmVjdF9maWxsCQkgICBDcHBDb25jYXRUcmlwbGUyKHZl Y3RfLCBWRUNUX01BUktFUiwgX2ZpbGwpCisjZGVmaW5lIHZlY3RfcmVzZXJ2ZQkgICBDcHBD b25jYXRUcmlwbGUyKHZlY3RfLCBWRUNUX01BUktFUiwgX3Jlc2VydmUpCisjZGVmaW5lIHZl Y3RfYXBwZW5kCQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNUX01BUktFUiwgX2Fw cGVuZCkKKyNkZWZpbmUgdmVjdF9wcmludAkJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0Xywg VkVDVF9NQVJLRVIsIF9wcmludCkKKyNkZWZpbmUgdmVjdF9jb21wYXJlCSAgIENwcENvbmNh dFRyaXBsZTIodmVjdF8sIFZFQ1RfTUFSS0VSLCBfY29tcGFyZSkKKyNkZWZpbmUgdmVjdF9p bnNlcnQJCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8sIFZFQ1RfTUFSS0VSLCBfaW5zZXJ0 KQorI2RlZmluZSB2ZWN0X2NsZWFyCQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNU X01BUktFUiwgX2NsZWFyKQorCisjZGVmaW5lIHVzdl9pbnNlcnQgQ3BwQ29uY2F0VHJpcGxl Mih1c3ZfLCBWRUNUX01BUktFUiwgX2luc2VydCkKKyNkZWZpbmUgdXN2X3NlYXJjaCBDcHBD b25jYXRUcmlwbGUyKHVzdl8sIFZFQ1RfTUFSS0VSLCBfc2VhcmNoKQorCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKiBFbmQgb2YgUmV1c2FibGUgQ29kZQorICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCisvKgorICogRG9uJ3QgZm9yZ2V0IHRvIGluY2x1ZGUKKyAqIAkJ I2luY2x1ZGUgInZlY3RfdGVtcGxfdW5kZWYuaCIKKyAqIGluIHlvdXIgZmlsZSB0aGF0IHVz ZXMgdGhpcyBoZWFkZXIKKyAqCisgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi92 ZWN0X3RlbXBsX3VuZGVmLmggYi9zcmMvaW5jbHVkZS9saWIvdmVjdF90ZW1wbF91bmRlZi5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41OWI2OWYxOGI5OQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3RlbXBsX3VuZGVmLmgK QEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIEZpbGU6IHZlY3RfdW5kZWYuaAorICovCisKKyN1 bmRlZiB2ZWN0X3QKKyN1bmRlZiB1bmlxc29ydHZlY3RfdAorI3VuZGVmIGl0ZW1fdAorCisj dW5kZWYgVkVDVF9JVEVNX1RZUEUKKyN1bmRlZiBWRUNUX01BUktFUgorI3VuZGVmIFZFQ1Rf Q3BwQ29uY2F0VHJpcGxlMgorCisjdW5kZWYgdmVjdF9pbml0CisjdW5kZWYgdmVjdF9maWxs CisjdW5kZWYgdmVjdF9yZXNlcnZlCisjdW5kZWYgdmVjdF9hcHBlbmQKKyN1bmRlZiB2ZWN0 X3ByaW50CisjdW5kZWYgdmVjdF9jb21wYXJlCisjdW5kZWYgdmVjdF9pbnNlcnQKKyN1bmRl ZiB2ZWN0X2NsZWFyCisKKyN1bmRlZiB1c3ZfaW5zZXJ0CisjdW5kZWYgdXN2X3NlYXJjaAor CisjdW5kZWYgVkVDVF9QUklfRk9STUFUX1NQRUNJRklFUgpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3UxNi5oIGIvc3Jj L2luY2x1ZGUvbGliL3ZlY3RfdTE2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmVkZjgxYTQxN2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUv bGliL3ZlY3RfdTE2LmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIEZpbGU6IHZlY3RfdTE2 LmgKKyAqLworCisjaWZuZGVmIF9WRUNUX1UxNl9IXworI2RlZmluZSBfVkVDVF9VMTZfSF8K KworLyogY2xhbmctZm9ybWF0IG9mZiAqLworI2luY2x1ZGUgInZlY3RfdTE2X2NvbmZpZy5o IgorI2luY2x1ZGUgInZlY3RfdGVtcGwuaCIKKy8qIGNsYW5nLWZvcm1hdCBvbiAqLworCisv KgorICogVHlwZXMgYXJlIHN1cHBvc2VkIHRvIGJlIGNyZWF0ZWQgY3JlYXRlZCBieSB0aGlz IGZpbGUKKyAqICAgICB2ZWN0X3UxNl90CisgKiAgICAgaXRlbV91MTZfdAorICogICAgIHVu aXFzb3J0dmVjdF91MTZfdAorICovCisvKgorICogRnVuY3Rpb25zIGFyZSBzdXBwb3NlZCB0 byBiZSBjcmVhdGVkIGJ5IHRoaXMgZmlsZQorICogICAgIHZlY3RfdTE2X2NyZWF0ZQorICog ICAgIHZlY3RfdTE2X2NyZWF0ZV9maWxsZWQKKyAqICAgICB2ZWN0X3UxNl9yZXNlcnZlCisg KiAgICAgdmVjdF91MTZfYXBwZW5kCisgKiAgICAgdmVjdF91MTZfZGVzdHJveQorICogICAg IHZlY3RfdTE2X3ByaW50CisgKiAgICAgdmVjdF91MTZfY29tcGFyZQorICogICAgIHZlY3Rf dTE2X2luc2VydAorICogICAgIHZlY3RfdTE2X2NsZWFyCisgKiAgICAgdXN2X3UxNl9pbnNl cnQKKyAqICAgICB1c3ZfdTE2X3NlYXJjaAorICovCisKKyNlbmRpZiAvL19WRUNUX1UxNl9I XwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdTE2X2NvbmZpZy5oIGIvc3Jj L2luY2x1ZGUvbGliL3ZlY3RfdTE2X2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4xM2E5MzI4NGU4ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9p bmNsdWRlL2xpYi92ZWN0X3UxNl9jb25maWcuaApAQCAtMCwwICsxLDEwIEBACisvKgorICog RmlsZTogdmVjdF91MTZfY29uZmlnLmgKKyAqLworCisjZGVmaW5lIFZFQ1RfSVRFTV9UWVBF CQkJICAgdWludDE2X3QKKyNkZWZpbmUgVkVDVF9JVEVNX0ZPUk1BVF9TUEVDSUZJRVIgUFJJ dTE2CisjZGVmaW5lIFZFQ1RfTUFSS0VSCQkJCSAgIHUxNgorI2RlZmluZSBWRUNUX01FTUFM TE9DU1RFUAkJICAgNQorI2RlZmluZSBWRUNUX01BTExPQwkJCQkgICBtYWxsb2MKKyNkZWZp bmUgVkVDVF9GUkVFCQkJCSAgIGZyZWUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L01ha2VmaWxl IGIvc3JjL3Rlc3QvTWFrZWZpbGUKaW5kZXggM2ViMGEwNmFiYjQuLmFiYThkYjFmNDgzIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9NYWtlZmlsZQpA QCAtMTQsNiArMTQsNyBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUu Z2xvYmFsCiAKIFNVQkRJUlMgPSBcCiAJYXV0aGVudGljYXRpb24gXAorCWRmb3IgXAogCWlz b2xhdGlvbiBcCiAJbW9kdWxlcyBcCiAJcGVybCBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9k Zm9yLy5naXRpZ25vcmUgYi9zcmMvdGVzdC9kZm9yLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBkNzdhNTEyMTZiCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvZGZvci8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMyBAQAordGVzdF9i aXRwYWNrX3UxNgordGVzdF91bmlxc29ydHZlY3RfdTE2Cit0ZXN0X3ZlY3RfdTE2CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9kZm9yL01ha2VmaWxlIGIvc3JjL3Rlc3QvZGZvci9NYWtlZmls ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWVmYzFhZjBhMjQK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9kZm9yL01ha2VmaWxlCkBAIC0wLDAgKzEs NDggQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZpbGU6IHNyYy90ZXN0L2Rmb3IvTWFr ZWZpbGUKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YmRpciA9IHNyYy90ZXN0L2Rmb3IK K3RvcF9idWlsZGRpciA9IC4uLy4uLy4uCitkZm9yX2RpciA6PSAkKHRvcF9idWlsZGRpcikv c3JjL2JhY2tlbmQvbGliCisKK2luY2x1ZGUgJChkZm9yX2RpcikvTWFrZWZpbGUuZGZvcgor CisjIEVuc3VyZSBkZXBlbmRlbmN5IHRyYWNraW5nIHdvcmtzCitPQkpTICs9ICQoT0JKU19E Rk9SKQorCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCisK KyMgT2JqZWN0IGZpbGVzIG9mIHZlY3QsIGJpdHBhY2sgYW5kIGRmb3IgdXNlZCBieSB0aGVz ZSB1bml0LXRlc3RzIGFyZSBpbiB0aGUgc2FtZQorIyBkaXJlY3RvcnkgYXMgdGhpcyBNYWtl ZmlsZS4gVGVzdHMgZG9uJ3QgdXNlIG9uZXMgZnJvbSBzcmMvYmFja2VuZC9saWIgYW5kIGNv bXBpbGUKKyMgZGlmZmVyZW50IG9uZXMgZm9yIHRoZW1zZWx2ZXMuCiskKGluZm8gVXNlIE9C SlNfREZPUj0kKE9CSlNfREZPUikgZnJvbSBjdXJyZW50IGRpcmVjdG9yeSAkKHN1YmRpciku IFwKKyAgICAgICBUaGV5IGFyZSBidWlsdCBvbiBzb3VyY2VzIGZyb20gJChkZm9yX2Rpcikp CisKKyQoT0JKU19ERk9SKTogJS5vOiAkKGRmb3JfZGlyKS8lLmMKKwlAaWYgdGVzdCAhIC1k ICQoREVQRElSKTsgdGhlbiBta2RpciAtcCAkKERFUERJUik7IGZpCisJJChDQykgJChDRkxB R1MpICQoQ1BQRkxBR1MpIC1ERlJPTlRFTkQgLWMgJDwgLU1NRCAtTVAgLU1GICQoREVQRElS KS8kKCpGKS5QbyAtbyAkQAorCitMSUJUQVBfT0JKUyA9ICQodG9wX2J1aWxkZGlyKS9zcmMv dGVzdC9saWJ0YXAvdGFwLm8KKworVEVTVFM9IHRlc3RfdmVjdF91MTYgXAorICAgICAgIHRl c3RfdW5pcXNvcnR2ZWN0X3UxNiBcCisgICAgICAgdGVzdF9iaXRwYWNrX3UxNgorCiskKFRF U1RTOiU9JS5vKTogQ1BQRkxBR1MgKz0gLUkkKHRvcF9idWlsZGRpcikvc3JjL3Rlc3QgLURG Uk9OVEVORAorCithbGw6ICQoVEVTVFMpCisKKyQoVEVTVFMpOiAlOiAlLm8gJChMSUJUQVBf T0JKUykgJChPQkpTX0RGT1IpCisJJChDQykgJChDRkxBR1MpICQoQ1BQRkxBR1MpICReICQo TERGTEFHUykgJChMSUJTKSAtbyAkQCQoWCkKKworY2hlY2stdW5pdDogJChURVNUUykKKwll Y2hvICIjICsrKyBVbml0IHRlc3RzIGluICQoc3ViZGlyKSArKysiICYmIFwKKwljZCAkKHRv cF9idWlsZGRpcikvJChzdWJkaXIpICYmIFwKKwkgICAkKFBST1ZFKSAkKFBST1ZFX0ZMQUdT KSBcCisJICAgIC12ICQoYWRkcHJlZml4IC4vLCQoaWYgJChQUk9WRV9URVNUUyksICQoUFJP VkVfVEVTVFMpLCAkKFRFU1RTKSkpCisKK2NoZWNrOiBjaGVjay11bml0CisKK2NsZWFuIGRp c3RjbGVhbjoKKwlybSAtcmYgJChURVNUUykgKi5vCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9k Zm9yL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTgwMjgwMjExMWYKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsNjEgQEAKK2Rm b3JfZGlyID0gam9pbl9wYXRocyhtZXNvbi5wcm9qZWN0X3NvdXJjZV9yb290KCksICdzcmMv YmFja2VuZC9saWInKQorCisjIE9iamVjdCBmaWxlcyBvZiB2ZWN0LCBiaXRwYWNrIGFuZCBk Zm9yIHVzZWQgYnkgdGhlc2UgdW5pdC10ZXN0cyBhcmUgaW4gdGhlIHNhbWUKKyMgZGlyZWN0 b3J5IGFzIHRoaXMgbWVzb24uYnVpbGQuIFRlc3RzIGRvbid0IHVzZSBvbmVzIGZyb20gc3Jj L2JhY2tlbmQvbGliIGFuZAorIyBjb21waWxlIGRpZmZlcmVudCBvbmVzIGZvciB0aGVtc2Vs dmVzLiBJbiBNZXNvbi9OaW5qYSBidWlsZCBzeXN0ZW0gd2UgdW5pdGUKKyMgdGhlbSBpbnRv IGEgc3RhdGljIGxpYnJhcnkuCisKK2Rmb3Jfc291cmNlcyA9IGZpbGVzKAorICBqb2luX3Bh dGhzKGRmb3JfZGlyLCAndmVjdF91MTYuYycpLAorICBqb2luX3BhdGhzKGRmb3JfZGlyLCAn Yml0cGFja191MTYuYycpLAorKQorCitkZm9yX3Rlc3RfbGliID0gc3RhdGljX2xpYnJhcnko CisgICdkZm9yX3Rlc3RfbGliJywKKyAgZGZvcl9zb3VyY2VzLAorICBpbmNsdWRlX2RpcmVj dG9yaWVzOiBbCisgICAgaW5jbHVkZV9kaXJlY3RvcmllcygnLi4vLi4vLi4nKSwgIyB0b3Bf YnVpbGRkaXIKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCcuLi8nKSwgICAgICAjIHNyYy90 ZXN0CisgICAgcG9zdGdyZXNfaW5jLCAgICAgICAgICAgICAgICAgICAgIyBzcmMvaW5jbHVk ZSBoZXJlCisgIF0sCisgIGNfYXJnczogWyctREZST05URU5EJ10sCispCisKKyMgV2UgYWxz byBidWlsZCBsaWJ0YXAgYXMgYSBzdGF0aWMgbGlicmFyeQorCitsaWJ0YXAgPSBzdGF0aWNf bGlicmFyeSgKKyAgJ3RhcCcsCisgICcuLi8uLi90ZXN0L2xpYnRhcC90YXAuYycsCisgIGlu Y2x1ZGVfZGlyZWN0b3JpZXM6CisgICAgaW5jbHVkZV9kaXJlY3RvcmllcygnLi4vLi4vLi4n KSwgIyB0b3BfYnVpbGRkaXIKKykKKworIyBFYWNoIHRlc3QgaXMgYW4gRUxGIGV4ZWN1dGFi bGUKKwordGVzdF9uYW1lcyA9IFsKKyAgJ3Rlc3RfdmVjdF91MTYnLAorICAndGVzdF91bmlx c29ydHZlY3RfdTE2JywKKyAgJ3Rlc3RfYml0cGFja191MTYnLAorXQorCitmb3JlYWNoIHQg OiB0ZXN0X25hbWVzCisgIGV4ZSA9IGV4ZWN1dGFibGUoCisgICAgdCwKKyAgICB0ICsgJy5j JywKKyAgICBsaW5rX3dpdGg6IFsKKyAgICAgIGRmb3JfdGVzdF9saWIsCisgICAgICBsaWJ0 YXAsCisgICAgICBjb21tb25fc3RhdGljLCAjIFByb3ZpZGVzIHBnX3ByaW50ZiBhbmQgb3Ro ZXIgY29tbW9uIHV0aWxpdGllcworICAgICAgcGdwb3J0X3N0YXRpYywgICAgIyBQcm92aWRl cyBPUy1wb3J0YWJpbGl0eSBmdW5jdGlvbnMKKyAgICBdLAorICAgIGluY2x1ZGVfZGlyZWN0 b3JpZXM6IFsKKyAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uLy4uLy4uJyksICMgdG9w X2J1aWxkZGlyCisgICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCcuLi8nKSwgICAgICAjIHNy Yy90ZXN0CisgICAgICBwb3N0Z3Jlc19pbmMsICAgICAgICAgICAgICAgICAgICAjIHNyYy9p bmNsdWRlIGhlcmUKKyAgICBdLAorICAgICMgQmFja2VuZCBjb2RlIG9mdGVuIHJlcXVpcmVz IHRoZXNlIGFyZ3VtZW50cyB0byBpZGVudGlmeSBhcyBiYWNrZW5kCisgICAgY19hcmdzOiBb Jy1ERlJPTlRFTkQnXSwKKyAgKQorCisgIHRlc3QodCwgZXhlLCBzdWl0ZTogJ2Rmb3InKQor ZW5kZm9yZWFjaApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci90ZXN0LmggYi9zcmMvdGVz dC9kZm9yL3Rlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZjZjNTRhYWQ5NWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9kZm9yL3Rlc3QuaApA QCAtMCwwICsxLDMxIEBACisKKy8qCisgKiB0ZXN0LmgKKyAqLworI2lmbmRlZiBfVEVTVF9I XworI2RlZmluZSBfVEVTVF9IXworCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRl IDxzdGRpby5oPgorCitzdGF0aWMgaW5saW5lIHZvaWQKK3Rlc3RfcHJpbnRfdThfYXJyYXko c2l6ZV90IGNudCwgdWludDhfdCBhcnJbXSwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlwcmlu dGYoIiVzKGhleCk6IHsgIiwgbmFtZSk7CisJZm9yIChzaXplX3QgaiA9IDA7IGogPCBjbnQg LSAxOyBqKyspCisJCXByaW50ZigiJTAyIiBQUkl4OCAiLCAiLCBhcnJbal0pOworCisJcHJp bnRmKCIlMDIiIFBSSXg4ICIgfVxuIiwgYXJyW2NudCAtIDFdKTsKK30KKworc3RhdGljIGlu bGluZSB2b2lkCit0ZXN0X3ByaW50X3UxNl9hcnJheShzaXplX3QgY250LCB1aW50MTZfdCBh cnJbXSwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlwcmludGYoIiVzKGhleCk6IHsgIiwgbmFt ZSk7CisJZm9yIChzaXplX3QgaiA9IDA7IGogPCBjbnQgLSAxOyBqKyspCisJCXByaW50Zigi JTA0IiBQUkl4MTYgIiwgIiwgYXJyW2pdKTsKKworCXByaW50ZigiJTA0IiBQUkl4MTYgIn1c biIsIGFycltjbnQgLSAxXSk7Cit9CisKKyNlbmRpZiAvKiBfVEVTVF9IXyAqLwpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2Rmb3IvdGVzdF9i aXRwYWNrX3UxNi5jIGIvc3JjL3Rlc3QvZGZvci90ZXN0X2JpdHBhY2tfdTE2LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhODRiYjJmMjJlCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvZGZvci90ZXN0X2JpdHBhY2tfdTE2LmMKQEAgLTAsMCAr MSwzNTcgQEAKKy8qCisgKiB0ZXN0X2JpdHBhY2suYworICovCisKKyNpbmNsdWRlIDxzdGRp by5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAibGliL2JpdHBhY2tfdTE2 LmgiCisjaW5jbHVkZSAibGliL3ZlY3RfdTE2LmgiCisjaW5jbHVkZSAibGlidGFwL3RhcC5o IgorCitpbnQKK21haW4odm9pZCkKK3sKKwlwbGFuKDE5NSk7CisJcHJpbnRmKCI9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3Qg TUFTSyBBTkQgV0lEVEggQ0FMQ1VMQVRJT05cbiIpOworCXsKKwkJY21wX29rKDEsICI9PSIs ICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgwMCksCisJCQkgICAiV2lkdGggb2Yg MDAgaXMgZXF1YWwgdG8gMSBiaXQuIik7CisJCWNtcF9vaygyLCAiPT0iLCAodWludDE2X3Qp d2lkdGhfdTE2X2Zyb21fdmFsKDB4MDIpLAorCQkJICAgIldpZHRoIG9mIDAyIGlzIGVxdWFs IHRvIDIgYml0cy4iKTsKKwkJY21wX29rKDIsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZf ZnJvbV92YWwoMHgwMiksCisJCQkgICAiV2lkdGggb2YgMDIgaXMgZXF1YWwgdG8gMiBiaXRz LiIpOworCQljbXBfb2soMiwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgw eDAzKSwKKwkJCSAgICJXaWR0aCBvZiAwMyBpcyBlcXVhbCB0byAyIGJpdHMuIik7CisJCWNt cF9vaygzLCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4MDQpLAorCQkJ ICAgIldpZHRoIG9mIDA0IGlzIGVxdWFsIHRvIDMgYml0cy4iKTsKKwkJY21wX29rKDMsICI9 PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgwNSksCisJCQkgICAiV2lkdGgg b2YgMDUgaXMgZXF1YWwgdG8gMyBiaXRzLiIpOworCQljbXBfb2soNCwgIj09IiwgKHVpbnQx Nl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDA4KSwKKwkJCSAgICJXaWR0aCBvZiAwOCBpcyBl cXVhbCB0byA0IGJpdHMuIik7CisJCWNtcF9vayg0LCAiPT0iLCAodWludDE2X3Qpd2lkdGhf dTE2X2Zyb21fdmFsKDB4MEEpLAorCQkJICAgIldpZHRoIG9mIDEwIGlzIGVxdWFsIHRvIDQg Yml0cy4iKTsKKwkJY21wX29rKDQsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92 YWwoMHgwRiksCisJCQkgICAiV2lkdGggb2YgMTUgaXMgZXF1YWwgdG8gNCBiaXRzLiIpOwor CQljbXBfb2soNSwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDEwKSwK KwkJCSAgICJXaWR0aCBvZiAxNiBpcyBlcXVhbCB0byA1IGJpdHMuIik7CisJCWNtcF9vayg1 LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4MUYpLAorCQkJICAgIldp ZHRoIG9mIDMxIGlzIGVxdWFsIHRvIDUgYml0cy4iKTsKKwkJY21wX29rKDYsICI9PSIsICh1 aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgyMCksCisJCQkgICAiV2lkdGggb2YgMzIg aXMgZXF1YWwgdG8gNiBiaXRzLiIpOworCQljbXBfb2soNywgIj09IiwgKHVpbnQxNl90KXdp ZHRoX3UxNl9mcm9tX3ZhbCgweDQwKSwKKwkJCSAgICJXaWR0aCBvZiA2NCBpcyBlcXVhbCB0 byA3IGJpdHMuIik7CisJCWNtcF9vayg4LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zy b21fdmFsKDB4ODApLAorCQkJICAgIldpZHRoIG9mIDEyOCBpcyBlcXVhbCB0byA4IGJpdHMu Iik7CisJCWNtcF9vaygxMywgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgw eDEwMDApLAorCQkJICAgIldpZHRoIG9mIDB4MDEwMDAgaXMgZXF1YWwgdG8gMTMgYml0cy4i KTsKKwkJY21wX29rKDE2LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4 OEFCQyksCisJCQkgICAiV2lkdGggb2YgMHgwOEFCQyBpcyBlcXVhbCB0byAxNSBiaXRzLiIp OworCisJCWNtcF9vaygweDEsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfdG9fbWFzaygx KSwKKwkJCSAgICJNYXNrIGZyb20gd2lkdGggMSBpcyAwMDAwMDAwMShiaW4pLiIpOworCQlj bXBfb2soMHgzLCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X3RvX21hc2soMiksCisJCQkg ICAiTWFzayBmcm9tIHdpZHRoIDIgaXMgMDAwMDAwMTEoYmluKS4iKTsKKwkJY21wX29rKDB4 NywgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl90b19tYXNrKDMpLAorCQkJICAgIk1hc2sg ZnJvbSB3aWR0aCAzIGlzIDAwMDAwMTExKGJpbikuIik7CisJCWNtcF9vaygweDNGRiwgIj09 IiwgKHVpbnQxNl90KXdpZHRoX3UxNl90b19tYXNrKDEwKSwKKwkJCSAgICJNYXNrIGZyb20g d2lkdGggMTAgaXMgMHgzRkYoYmluKS4iKTsKKwkJY21wX29rKDB4N0ZGRiwgIj09IiwgKHVp bnQxNl90KXdpZHRoX3UxNl90b19tYXNrKDE1KSwKKwkJCSAgICJNYXNrIGZyb20gd2lkdGgg MTUgaXMgMHg3RkZGKGJpbikuIik7CisJCWNtcF9vaygweEZGRkYsICI9PSIsICh1aW50MTZf dCl3aWR0aF91MTZfdG9fbWFzaygxNiksCisJCQkgICAiTWFzayBmcm9tIHdpZHRoIDE2IGlz IDB4RkZGRihiaW4pLiIpOworCX0KKwlwcmludGYoIlRlc3QgTUFTSyBBTkQgV0lEVEggQ0FM Q1VMQVRJT04gUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBCSVRQQUNLIFBB Q0tJTkdcbiIpOworCXsKKyNkZWZpbmUgU0laRU9GUEFDSyA2MFUKKwkJdWludDhfdCBwYWNr W1NJWkVPRlBBQ0tdOworCQlzaXplX3QgY2FyZXQgPSAwOworCQltZW1zZXQocGFjaywgMCwg U0laRU9GUEFDSyk7CisJCS8qCisJCSAqIFNpbmNlIHdlIGltcGxlbWVudGVkIHRoZSBudWxp Znlpbmcgb2YgYml0cyBhY2NvcmRpbmcgdG8gYSBtYXNrIChzZWUKKwkJICogdGhlIGJpdHBh Y2sgZnVuY3Rpb24pLCB3ZSBjYW4gdXNlIGV2ZW4gYSBwYWNrIG5vdCBwcmVwYXJlZCBpbiBh ZHZhbmNlCisJCSAqIGFuZCBjb21wcmlzaW5nIGdhcmJhZ2UuIEJ1dCB3ZSB3YW50IHRvIGNo ZWNrIHZhbHVlIG9mIGVhY2ggYnl0ZSBvZgorCQkgKiB0aGUgcGFjayBpbiB0aGlzIHRlc3Qg YW5kIHdlIHNpbXBsaWZ5IHRoaXMgdGFzayBieSB1c2luZyBhIHplcm9lZAorCQkgKiBwYWNr LgorCQkgKi8KKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgeworCQkJY2FyZXQg PSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAxLCAxKTsKKwkJCWNhcmV0ID0gYml0 cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMCwgMSk7CisJCX0KKwkJY21wX29rKDE2LCAi PT0iLCBjYXJldCwgIkNhcmV0ID0gMTYuIik7CisJCWNtcF9vaygweDU1LCAiPT0iLCBwYWNr WzBdLCAiU2F2ZWQgYml0LWJ5LWJpdDogZmlyc3QgYnl0ZSBpcyAweDU1LiIpOworCQljbXBf b2soMHg1NSwgIj09IiwgcGFja1sxXSwgIlNhdmVkIGJpdC1ieS1iaXQ6IHNlY29uZCBieXRl IGlzIDB4NTUuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCWNh cmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgwMiAvKiAxMChiaW4pICov LCAyKTsKKwkJfQorCisJCWNtcF9vaygzMiwgIj09IiwgY2FyZXQsICJDYXJldCA9IDMyLiIp OworCQljbXBfb2soMHhBQSwgIj09IiwgcGFja1syXSwKKwkJCSAgICJTYXZlZCB3aXRoIHR3 by1iaXQgd2lkdGg6IGZpcnN0IGJ5dGUgaXMgMHhBQS4iKTsKKwkJY21wX29rKDB4QUEsICI9 PSIsIHBhY2tbM10sCisJCQkgICAiU2F2ZWQgd2l0aCB0d28tYml0IHdpZHRoOiBzZWNvbmQg Ynl0ZSBpcyAweEFBLiIpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgODsgaisrKSB7CisJ CQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4MDUgLyogMTAxKGJp bikgKi8sIDMpOworCQkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAw eDAyIC8qIDAxMChiaW4pICovLCAzKTsKKwkJfQorCisJCWNtcF9vayg4MCwgIj09IiwgY2Fy ZXQsICJDYXJldCA9IDgwLiIpOworCQljbXBfb2soMHg1NSwgIj09IiwgcGFja1s0XSwKKwkJ CSAgICJTYXZlZCB3aXRoIHRocmVlLWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweDU1LiIp OworCQljbXBfb2soMHg1NSwgIj09IiwgcGFja1s1XSwKKwkJCSAgICJTYXZlZCB3aXRoIHRo cmVlLWJpdCB3aWR0aDogc2Vjb25kIGJ5dGUgaXMgMHg1NS4iKTsKKwkJY21wX29rKDB4NTUs ICI9PSIsIHBhY2tbNl0sCisJCQkgICAiU2F2ZWQgd2l0aCB0aHJlZS1iaXQgd2lkdGg6IHNl Y29uZCBieXRlIGlzIDB4NTUuIik7CisJCWNtcF9vaygweDU1LCAiPT0iLCBwYWNrWzddLAor CQkJICAgIlNhdmVkIHdpdGggdGhyZWUtYml0IHdpZHRoOiBmaXJzdCBieXRlIGlzIDB4NTUu Iik7CisJCWNtcF9vaygweDU1LCAiPT0iLCBwYWNrWzhdLAorCQkJICAgIlNhdmVkIHdpdGgg dGhyZWUtYml0IHdpZHRoOiBzZWNvbmQgYnl0ZSBpcyAweDU1LiIpOworCQljbXBfb2soMHg1 NSwgIj09IiwgcGFja1s5XSwKKwkJCSAgICJTYXZlZCB3aXRoIHRocmVlLWJpdCB3aWR0aDog c2Vjb25kIGJ5dGUgaXMgMHg1NS4iKTsKKworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2so cGFjaywgY2FyZXQsIDB4MEIsIDQpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFj aywgY2FyZXQsIDB4MEMsIDQpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywg Y2FyZXQsIDB4MEQsIDQpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2Fy ZXQsIDB4MEUsIDQpOworCisJCWNtcF9vayg5NiwgIj09IiwgY2FyZXQsICJDYXJldCA9IDk2 LiIpOworCQljbXBfb2soMHhDQiwgIj09IiwgcGFja1sxMF0sCisJCQkgICAiU2F2ZWQgd2l0 aCBmb3VyLWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweENCLiIpOworCQljbXBfb2soMHhF RCwgIj09IiwgcGFja1sxMV0sCisJCQkgICAiU2F2ZWQgd2l0aCBmb3VyLWJpdCB3aWR0aDog c2Vjb25kIGJ5dGUgaXMgMHhFRC4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGor KykgeworCQkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDA3IC8q IDAwMTExYiAqLywgNSk7CisJCX0KKworCQljbXBfb2soMTM2LCAiPT0iLCBjYXJldCwgIkNh cmV0ID0gMTM2LiIpOworCQljbXBfb2soMHhFNywgIj09IiwgcGFja1sxMl0sCisJCQkgICAi U2F2ZWQgd2l0aCBmaXZlLWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweEU3LiIpOworCQlj bXBfb2soMHg5QywgIj09IiwgcGFja1sxM10sCisJCQkgICAiU2F2ZWQgd2l0aCBmaXZlLWJp dCB3aWR0aDogc2Vjb25kIGJ5dGUgaXMgMHg5Qy4iKTsKKwkJY21wX29rKDB4NzMsICI9PSIs IHBhY2tbMTRdLAorCQkJICAgIlNhdmVkIHdpdGggZml2ZS1iaXQgd2lkdGg6IHRoaXJkIGJ5 dGUgaXMgMHg3My4iKTsKKwkJY21wX29rKDB4Q0UsICI9PSIsIHBhY2tbMTVdLAorCQkJICAg IlNhdmVkIHdpdGggZml2ZS1iaXQgd2lkdGg6IGZvdXJ0aCBieXRlIGlzIDB4Q0UuIik7CisJ CWNtcF9vaygweDM5LCAiPT0iLCBwYWNrWzE2XSwKKwkJCSAgICJTYXZlZCB3aXRoIGZpdmUt Yml0IHdpZHRoOiBmaWZ0aCBieXRlIGlzIDB4MzkuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7 IGogPCA0OyBqKyspCisJCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQs IDB4MDcgLyogMDAwMTExYiAqLywgNik7CisKKwkJY21wX29rKDE2MCwgIj09IiwgY2FyZXQs ICJDYXJldCA9IDE2MC4iKTsKKwkJY21wX29rKDB4QzcsICI9PSIsIHBhY2tbMTddLAorCQkJ ICAgIlNhdmVkIHdpdGggc2l4LWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweEM3LiIpOwor CQljbXBfb2soMHg3MSwgIj09IiwgcGFja1sxOF0sCisJCQkgICAiU2F2ZWQgd2l0aCBzaXgt Yml0IHdpZHRoOiBzZWNvbmQgYnl0ZSBpcyAweDcxLiIpOworCQljbXBfb2soMHgxQywgIj09 IiwgcGFja1sxOV0sCisJCQkgICAiU2F2ZWQgd2l0aCBzaXgtYml0IHdpZHRoOiB0aGlyZCBi eXRlIGlzIDB4MUMuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspCisJCQlj YXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4NTcgLyogMTAxMDExMWIg Ki8sIDcpOworCisJCWNtcF9vaygyMTYsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAyMTYuIik7 CisJCWNtcF9vaygweEQ3LCAiPT0iLCBwYWNrWzIwXSwKKwkJCSAgICJTYXZlZCB3aXRoIHNl dmVuLWJpdCB3aWR0aDogYnl0ZTEgaXMgMHhENy4iKTsKKwkJY21wX29rKDB4RUIsICI9PSIs IHBhY2tbMjFdLAorCQkJICAgIlNhdmVkIHdpdGggc2V2ZW4tYml0IHdpZHRoOiBieXRlMiBp cyAweEVCLiIpOworCQljbXBfb2soMHhGNSwgIj09IiwgcGFja1syMl0sCisJCQkgICAiU2F2 ZWQgd2l0aCBzZXZlbi1iaXQgd2lkdGg6IGJ5dGUzIGlzIDB4RjUuIik7CisJCWNtcF9vaygw eDdBLCAiPT0iLCBwYWNrWzIzXSwKKwkJCSAgICJTYXZlZCB3aXRoIHNldmVuLWJpdCB3aWR0 aDogYnl0ZTQgaXMgMHg3QS4iKTsKKwkJY21wX29rKDB4QkQsICI9PSIsIHBhY2tbMjRdLAor CQkJICAgIlNhdmVkIHdpdGggc2V2ZW4tYml0IHdpZHRoOiBieXRlNSBpcyAweEJELiIpOwor CQljbXBfb2soMHg1RSwgIj09IiwgcGFja1syNV0sCisJCQkgICAiU2F2ZWQgd2l0aCBzZXZl bi1iaXQgd2lkdGg6IGJ5dGU2IGlzIDB4NUUuIik7CisJCWNtcF9vaygweEFGLCAiPT0iLCBw YWNrWzI2XSwKKwkJCSAgICJTYXZlZCB3aXRoIHNldmVuLWJpdCB3aWR0aDogYnl0ZTcgaXMg MHhBRi4iKTsKKworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4 QkEsIDgpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4REMs IDgpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4RkUsIDgp OworCisJCWNtcF9vaygyNDAsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAyNDAuIik7CisJCWNt cF9vaygweEJBLCAiPT0iLCBwYWNrWzI3XSwKKwkJCSAgICJTYXZlZCB3aXRoIGVpZ2h0LWJp dCB3aWR0aDogYnl0ZTEgaXMgMHhCQS4iKTsKKwkJY21wX29rKDB4REMsICI9PSIsIHBhY2tb MjhdLAorCQkJICAgIlNhdmVkIHdpdGggZWlnaHQtYml0IHdpZHRoOiBieXRlMiBpcyAweERD LiIpOworCQljbXBfb2soMHhGRSwgIj09IiwgcGFja1syOV0sCisJCQkgICAiU2F2ZWQgd2l0 aCBlaWdodC1iaXQgd2lkdGg6IGJ5dGUzIGlzIDB4RkUuIik7CisKKwkJY2FyZXQgPSBiaXRw YWNrX3UxNl9wYWNrKAorCQkJcGFjaywgY2FyZXQsIDB4MDAsCisJCQk0KTsgLyogbW92ZSB0 byA0IGJpdCBmb3IgZnVuIGFuZCBhZ2FpbiBjb250aW51ZSB3aXRoIDgtYml0IHdpZHRoICov CisJCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgzMiwgOCk7CisJ CWNhcmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHg1NCwgOCk7CisJCWNh cmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHg3NiwgOCk7CisJCWNhcmV0 ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHg5OCwgOCk7CisKKwkJY21wX29r KDI3NiwgIj09IiwgY2FyZXQsICJDYXJldCA9IDI3Ni4iKTsKKwkJY21wX29rKDB4MjAsICI9 PSIsIHBhY2tbMzBdLAorCQkJICAgIlNhdmVkIHdpdGggZWlnaHQtYml0IHdpZHRoIGJ1dCBz aGlmdGVkIGJ5IDQ6IGlzIDB4MjAuIik7CisJCWNtcF9vaygweDQzLCAiPT0iLCBwYWNrWzMx XSwKKwkJCSAgICJTYXZlZCB3aXRoIGVpZ2h0LWJpdCB3aWR0aCBidXQgc2hpZnRlZCBieSA0 OiBpcyAweDQzLiIpOworCQljbXBfb2soMHg2NSwgIj09IiwgcGFja1szMl0sCisJCQkgICAi U2F2ZWQgd2l0aCBlaWdodC1iaXQgd2lkdGggYnV0IHNoaWZ0ZWQgYnkgNDogaXMgMHg2NS4i KTsKKwkJY21wX29rKDB4ODcsICI9PSIsIHBhY2tbMzNdLAorCQkJICAgIlNhdmVkIHdpdGgg ZWlnaHQtYml0IHdpZHRoIGJ1dCBzaGlmdGVkIGJ5IDQ6IGlzIDB4ODcuIik7CisJCWNtcF9v aygweDA5LCAiPT0iLCBwYWNrWzM0XSwKKwkJCSAgICJTYXZlZCB3aXRoIGVpZ2h0LWJpdCB3 aWR0aCBidXQgc2hpZnRlZCBieSA0OiBpcyAweDA5LiIpOworCisJCWNhcmV0ID0gYml0cGFj a191MTZfcGFjaygKKwkJCXBhY2ssIGNhcmV0LCAweDAwLAorCQkJNCk7IC8qIG1vdmUgdG8g NCBiaXQgZm9yIGZ1biBhbmQgYWdhaW4gY29udGludWUgd2l0aCA4LWJpdCB3aWR0aCAqLwor CQljbXBfb2soMjgwLCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMjgwLiIpOworCQljbXBfb2so MHgwOSwgIj09IiwgcGFja1szNF0sCisJCQkgICAiQWRkZWQgcGFkZGluZyAweDAsIHdpZHRo PTQuIEJ5dGUgaW4gcGFjayBpcyBzdGlsbCAweDA5LiIpOworCisJCWZvciAoaW50IGogPSAw OyBqIDwgMzsgaisrKQorCQkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0 LCAweDE2NzEgLyogMTAxMTAwMTExMDAwMWIgKi8sCisJCQkJCQkJCQkgMTMpOworCisJCWNt cF9vaygzMTksICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAzMTkuIik7CisJCWNtcF9vaygweDcx LCAiPT0iLCBwYWNrWzM1XSwgIlNhdmVkIHdpdGggdGhpcnRlZW4tYml0IHdpZHRoOiBpcyAw eDcxLiIpOworCQljbXBfb2soMHgzNiwgIj09IiwgcGFja1szNl0sICJTYXZlZCB3aXRoIHRo aXJ0ZWVuLWJpdCB3aWR0aDogaXMgMHgzNi4iKTsKKwkJY21wX29rKDB4Q0UsICI9PSIsIHBh Y2tbMzddLCAiU2F2ZWQgd2l0aCB0aGlydGVlbi1iaXQgd2lkdGg6IGlzIDB4Q0UuIik7CisJ CWNtcF9vaygweEM2LCAiPT0iLCBwYWNrWzM4XSwgIlNhdmVkIHdpdGggdGhpcnRlZW4tYml0 IHdpZHRoOiBpcyAweEM2LiIpOworCQljbXBfb2soMHg1OSwgIj09IiwgcGFja1szOV0sICJT YXZlZCB3aXRoIHRoaXJ0ZWVuLWJpdCB3aWR0aDogaXMgMHg1OS4iKTsKKworCQljYXJldCA9 IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4MSAvKiBQQURESU5HICovLCAxKTsK KwkJY21wX29rKDMyMCwgIj09IiwgY2FyZXQsICJDYXJldCA9IDMyMC4iKTsKKwkJY21wX29r KDB4RDksICI9PSIsIHBhY2tbMzldLAorCQkJICAgIkFmdGVyIHBhZGRpbmcgd2l0aCAweDAx LCB3PTE6IDB4NTkgLT4gMHhEOS4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDU7IGor KykKKwkJCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHhDREVGLCAx Nik7CisKKwkJY21wX29rKDQwMCwgIj09IiwgY2FyZXQsICJDYXJldCA9IDQwMC4iKTsKKwkJ Zm9yIChpbnQgaSA9IDQwOyBpIDwgNTA7KSB7CisJCQljbXBfb2soMHhFRiwgIj09IiwgcGFj a1tpKytdLCAiUGFja2VkIHdpdGggd2lkdGg9MTYuIDB4RUYuIik7CisJCQljbXBfb2soMHhD RCwgIj09IiwgcGFja1tpKytdLCAiUGFja2VkIHdpdGggd2lkdGg9MTYuIDB4Qy4iKTsKKwkJ fQorCisJCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwKKwkJCQkJCQkJ IDB4MCAvKiBQQURESU5HIGluIG9yZGVyIHRvIHNoaWZ0IGJ5IDEgYml0Ki8sCisJCQkJCQkJ CSAxKTsKKwkJY21wX29rKDQwMSwgIj09IiwgY2FyZXQsICJDYXJldCA9IDQwMS4iKTsKKwor CQlmb3IgKGludCBqID0gMDsgaiA8IDM7IGorKykKKwkJCWNhcmV0ID0gYml0cGFja191MTZf cGFjayhwYWNrLCBjYXJldCwgMHg1NTU1LCAxNik7CisKKwkJY21wX29rKDQ0OSwgIj09Iiwg Y2FyZXQsICJDYXJldCA9IDQwMS4iKTsKKwkJZm9yIChpbnQgaSA9IDUwOyBpIDwgNTY7KQor CQkJY21wX29rKDB4QUEsICI9PSIsIHBhY2tbaSsrXSwKKwkJCQkgICAiMTYtYml0IHZhbHVl IHNhdmVkIHdpdGggc2hpZnQgYnkgMSBiaXQgMHg1NS0+MHhBQS4iKTsKKworCQljbXBfb2so MHgwLCAiPT0iLCBwYWNrWzU2XSwgIjEgaGlnaGVyIGJpdCBpcyBhbG9uZSAuIik7CisKKwkJ cHJpbnRmKCJUZXN0IEJJVFBBQ0sgUEFDS0lORyBQQVNTRURcbiIpOworCQlwcmludGYoIj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwkJcHJp bnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwkJ cHJpbnRmKCJUZXN0IEJJVFBBQ0sgVU5QQUNLSU5HXG4iKTsKKworCQljYXJldCA9IDA7CisK KwkJZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCWNtcF9vaygweDAxLCAiPT0i LCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCAxKSk7CisJCQljbXBfb2soMHgw MCwgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMSkpOworCQl9CisJ CWNtcF9vayhjYXJldCwgIj09IiwgMTYpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgODsg aisrKQorCQkJY21wX29rKDB4MDIsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAm Y2FyZXQsIDIpKTsKKworCQljbXBfb2soMzIsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAzMi4i KTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgeworCQkJY21wX29rKDB4MDUs ICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDMpKTsKKwkJCWNtcF9v aygweDAyLCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCAzKSk7CisJ CX0KKwkJY21wX29rKDgwLCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gODAuIik7CisKKwkJY21w X29rKDB4MEIsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDQpKTsK KwkJY21wX29rKDB4MEMsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQs IDQpKTsKKwkJY21wX29rKDB4MEQsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAm Y2FyZXQsIDQpKTsKKwkJY21wX29rKDB4MEUsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhw YWNrLCAmY2FyZXQsIDQpKTsKKworCQljbXBfb2soOTYsICI9PSIsIGNhcmV0LCAiQ2FyZXQg PSA5Ni4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykKKwkJCWNtcF9vaygw eDA3LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA1KSwKKwkJCQkg ICAid2lkdGg9NSwgdmFsPTAwMTExYiIpOworCisJCWNtcF9vaygxMzYsICI9PSIsIGNhcmV0 LCAiQ2FyZXQgPSAxMzYuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA0OyBqKyspCisJ CQljbXBfb2soMHgwNywgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwg NiksCisJCQkJICAgIndpZHRoPTYsIHZhbD0wMDAxMTFiIik7CisKKwkJY21wX29rKDE2MCwg Ij09IiwgY2FyZXQsICJDYXJldCA9IDE2MC4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8 IDg7IGorKykKKwkJCWNtcF9vaygweDU3LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFj aywgJmNhcmV0LCA3KSwKKwkJCQkgICAid2lkdGg9NywgdmFsPTEwMTAxMTFiICgweDU3KSIp OworCisJCWNtcF9vaygyMTYsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAyMTYuIik7CisKKwkJ Y21wX29rKDB4QkEsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDgp LAorCQkJICAgIndpZHRoPTgsIHZhbD0weEJBIik7CisJCWNtcF9vaygweERDLCAiPT0iLCBi aXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA4KSwKKwkJCSAgICJ3aWR0aD04LCB2 YWw9MHhEQyIpOworCQljbXBfb2soMHhGRSwgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBh Y2ssICZjYXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4RkUiKTsKKworCQljbXBf b2soMjQwLCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMjQwLiIpOworCisJCWNtcF9vaygweDAs ICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDQpLAorCQkJICAgIndp ZHRoPTQsIHZhbD0weDAsIGZvciBmdW4iKTsKKworCQljbXBfb2soMHgzMiwgIj09IiwgYml0 cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFs PTB4MzIiKTsKKwkJY21wX29rKDB4NTQsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNr LCAmY2FyZXQsIDgpLAorCQkJICAgIndpZHRoPTgsIHZhbD0weDU0Iik7CisJCWNtcF9vaygw eDc2LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA4KSwKKwkJCSAg ICJ3aWR0aD04LCB2YWw9MHg3NiIpOworCQljbXBfb2soMHg5OCwgIj09IiwgYml0cGFja191 MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4OTgi KTsKKworCQljbXBfb2soMHgwLCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNh cmV0LCA0KSwKKwkJCSAgICJ3aWR0aD00LCB2YWw9MHgwLCBmb3IgZnVuIHBhZGRpbmcgYWdh aW4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDM7IGorKykKKwkJCWNtcF9vaygweDE2 NzEsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDEzKSwKKwkJCQkg ICAid2lkdGg9MTMsIHZhbD0weDE2NzEgKDEwMTEwMDExMTAwMDFiKSIpOworCisJCWNtcF9v aygzMTksICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAzMTkuIik7CisKKwkJY21wX29rKDB4MSwg Ij09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMSksCisJCQkgICAid2lk dGg9MSwgdmFsPTB4MSIpOworCQljbXBfb2soMzIwLCAiPT0iLCBjYXJldCwgIkNhcmV0ID0g MzIwLiIpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgNTsgaisrKQorCQkJY21wX29rKDB4 Q0RFRiwgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMTYpLAorCQkJ CSAgICIxOC1iaXQgdmFsdWUgYWxsaWduZWQgd2l0aCBieXRlcyBpbiBwYWNrLiIpOworCisJ CWNtcF9vayg0MDAsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA0MDAuIik7CisJCWNtcF9vaygw eDAsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDEpLAorCQkJICAg IjEtYml0IHdpZHRoIHZhbHVlIChwYWRkaW5nIGZvciBzaGlmdCkuIik7CisJCWNtcF9vayg0 MDEsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA0MDEuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7 IGogPCAzOyBqKyspCisJCQljbXBfb2soMHg1NTU1LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBh Y2socGFjaywgJmNhcmV0LCAxNiksCisJCQkJICAgIjE2LWJpdCB3aWR0aCB2YWx1ZSBzaGlm dGVkIGJ5IDEgYml0LiIpOworCisJCWNtcF9vayg0NDksICI9PSIsIGNhcmV0LCAiQ2FyZXQg PSA0NDkuIik7CisJfQorCisJZG9uZV90ZXN0aW5nKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9kZm9yL3Rlc3RfdW5pcXNvcnR2ZWN0X3UxNi5jIGIvc3JjL3Rlc3QvZGZvci90ZXN0 X3VuaXFzb3J0dmVjdF91MTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNGRkY2U4YjBiM2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9kZm9yL3Rl c3RfdW5pcXNvcnR2ZWN0X3UxNi5jCkBAIC0wLDAgKzEsMjYzIEBACisvKgorICogdGVzdF91 bmlxc29ydHZlY3QuYworICovCisKKyNpbmNsdWRlICJsaWIvdmVjdF91MTYuaCIKKyNpbmNs dWRlICJsaWJ0YXAvdGFwLmgiCisKK2ludCB0ZXN0X3VzdihzaXplX3Qgc3JjX2NudCwgdWlu dDE2X3QgKnNyY19pbiwgc2l6ZV90IGV4cGVjdGVkX2NudCwKKwkJCSB1aW50MTZfdCAqZXhw ZWN0ZWRfaW4pOworCitpbnQKK3Rlc3RfdXN2KHNpemVfdCBzcmNfY250LCB1aW50MTZfdCAq c3JjX2luLCBzaXplX3QgZXhwZWN0ZWRfY250LAorCQkgdWludDE2X3QgKmV4cGVjdGVkX2lu KQoreworCWludCByZXN1bHQgPSAtMTsKKwl2ZWN0X3UxNl90IHNyYzsKKwl2ZWN0X3UxNl90 IGV4cGVjdGVkOworCXVuaXFzb3J0dmVjdF91MTZfdCB4OworCisJdmVjdF91MTZfaW5pdCgm c3JjLCBzcmNfY250LCBOVUxMKTsKKwl2ZWN0X3UxNl9maWxsKCZzcmMsIHNyY19jbnQsIHNy Y19pbik7CisKKwl2ZWN0X3UxNl9pbml0KCZleHBlY3RlZCwgMCwgTlVMTCk7CisJdmVjdF91 MTZfZmlsbCgmZXhwZWN0ZWQsIGV4cGVjdGVkX2NudCwgZXhwZWN0ZWRfaW4pOworCisJdmVj dF91MTZfaW5pdCgmeCwgMCwgTlVMTCk7CisKKwlmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNy Y19jbnQ7IGkrKykKKwkJdXN2X3UxNl9pbnNlcnQoJngsIHNyYy5tW2ldKTsKKworCXJlc3Vs dCA9IHZlY3RfdTE2X2NvbXBhcmUoJngsICZleHBlY3RlZCk7CisKKwl2ZWN0X3UxNl9jbGVh cigmeCk7CisJdmVjdF91MTZfY2xlYXIoJmV4cGVjdGVkKTsKKwl2ZWN0X3UxNl9jbGVhcigm c3JjKTsKKwlyZXR1cm4gcmVzdWx0OworfQorCitpbnQKK21haW4odm9pZCkKK3sKKwlwbGFu KDU2KTsKKworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IENSRUFURSBBTkQgREVTVFJPWSBTT1JURUQgVU5J UVVFIFZFQ1RPUiAoRU1QVFkpXG4iKTsKKwl7CisJCXVuaXFzb3J0dmVjdF91MTZfdCB1c3Y7 CisJCXNpemVfdCBjYXBhY2l0eSA9IDEwOworCQl2ZWN0X3UxNl9pbml0KCZ1c3YsIGNhcGFj aXR5LCBOVUxMKTsKKwkJY21wX29rKHVzdi5jYXAsICI9PSIsIGNhcGFjaXR5LAorCQkJICAg IlZlY3RvcnMgY2FwYWNpdHkgaXMgZXF1YWwgdG8gcmVxdWVzdGVkIG9uZSIpOworCQljbXBf b2sodXN2LmNudCwgIj09IiwgMCwgIk5vIG1lbWJlcnMgaW4gdmVjdG9yIik7CisJCW9rKHVz di5tICE9IE5VTEwsICJBcnJheSBmb3IgbWVtYmVycyBpcyByZXNlcnZlZCIpOworCisJCXZl Y3RfdTE2X2NsZWFyKCZ1c3YpOworCX0KKwlwcmludGYoIlRlc3QgQ1JFQVRFIEFORCBERVNU Uk9ZIFNPUlRFRCBVTklRVUUgVkVDVE9SIChFTVBUWSkgUEFTU0VEXG4iKTsKKwlwcmludGYo Ij09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlw cmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOwor CXByaW50ZigiVGVzdCBTRUFSQ0ggSU4gVU5JUVVFIFNPUlQgVkVDVFxuIik7CisJeworCQl1 bmlxc29ydHZlY3RfdTE2X3QgdXN2OworCQl1c3Zfc3JjaF9yZXNfdCBzcmNoOworCQl1aW50 MTZfdCBpbnB1dFs0XSA9IHsgNSwgMTAsIDIwLCAzMCB9OworCisJCXZlY3RfdTE2X2luaXQo JnVzdiwgMCwgTlVMTCk7CisKKwkJZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyBpKyspCisJ CQl1c3ZfdTE2X2luc2VydCgmdXN2LCBpbnB1dFtpXSk7CisKKwkJc3JjaCA9IHVzdl91MTZf c2VhcmNoKCZ1c3YsIDApOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9U X0ZPVU5EX1NNQUxMRVNULAorCQkJICAgIk5vdCBmb3VuZCwgc21hbGxlc3QiKTsKKwkJY21w X29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9IHVzdl91MTZf c2VhcmNoKCZ1c3YsIDEpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9U X0ZPVU5EX1NNQUxMRVNULAorCQkJICAgIk5vdCBmb3VuZCwgc21hbGxlc3QiKTsKKwkJY21w X29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9IHVzdl91MTZf c2VhcmNoKCZ1c3YsIDUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfRk9V TkQsICJGb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTAiKTsK KworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNik7CisJCWNtcF9vayhzcmNoLnN0 LCAiPT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkQsICJOb3QgZm91bmQiKTsKKwkJY21wX29rKHNy Y2gucG9zLCAiPT0iLCAxLCAiUG9zID0xIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNo KCZ1c3YsIDEwKTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0ZPVU5ELCAi Rm91bmQiKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAxLCAiUG9zID0xIik7CisKKwkJ c3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDE1KTsKKwkJY21wX29rKHNyY2guc3QsICI9 PSIsIFVTVl9TUkNIX05PVF9GT1VORCwgIk5vdCBmb3VuZCIpOworCQljbXBfb2soc3JjaC5w b3MsICI9PSIsIDIsICJQb3MgPTIiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVz diwgMjApOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfRk9VTkQsICJGb3Vu ZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDIsICJQb3MgPTIiKTsKKworCQlzcmNo ID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMjUpOworCQljbXBfb2soc3JjaC5zdCwgIj09Iiwg VVNWX1NSQ0hfTk9UX0ZPVU5ELCAiTm90IGZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywg Ij09IiwgMywgIlBvcyA9MyIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAz MCk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9GT1VORCwgIkZvdW5kIik7 CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMywgIlBvcyA9MiIpOworCisJCXNyY2ggPSB1 c3ZfdTE2X3NlYXJjaCgmdXN2LCA0NSk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1Zf U1JDSF9OT1RfRk9VTkRfTEFSR0VTVCwgIk5vdCBmb3VuZCwgbGFyZ2VzdCIpOworCQljbXBf b2soc3JjaC5wb3MsICI9PSIsIDMsICJQb3MgPTMiKTsKKworCQl2ZWN0X3UxNl9jbGVhcigm dXN2KTsKKwl9CisJeworCQl1bmlxc29ydHZlY3RfdTE2X3QgdXN2OworCQl1c3Zfc3JjaF9y ZXNfdCBzcmNoOworCQl1aW50MTZfdCBpbnB1dFszXSA9IHsgNSwgMTAsIDIwIH07CisJCXVp bnQxNl90IGJ1ZlszXTsgLyogb3ZlcmluZHVsZ2UgaW4gdGVzdGluZyB0aGUgb3V0ZXIgbWVt b3J5IHZlY3RvciAqLworCisJCXZlY3RfdTE2X2luaXQoJnVzdiwgMywgYnVmKTsKKworCQlm b3IgKHNpemVfdCBpID0gMDsgaSA8IDM7IGkrKykKKwkJCXVzdl91MTZfaW5zZXJ0KCZ1c3Ys IGlucHV0W2ldKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMCk7CisJCWNt cF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkRfU01BTExFU1QsCisJCQkg ICAiTm90IGZvdW5kLCBzbWFsbGVzdCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAs ICJQb3MgPTAiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNSk7CisJCWNt cF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9GT1VORCwgIkZvdW5kIik7CisJCWNtcF9v ayhzcmNoLnBvcywgIj09IiwgMCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3Nl YXJjaCgmdXN2LCA2KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9G T1VORCwgIk5vdCBmb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDEsICJQb3Mg PTEiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMTApOworCQljbXBfb2so c3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfRk9VTkQsICJGb3VuZCIpOworCQljbXBfb2soc3Jj aC5wb3MsICI9PSIsIDEsICJQb3MgPTEiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2go JnVzdiwgMTUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9UX0ZPVU5E LCAiTm90IGZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMiwgIlBvcyA9MiIp OworCisJCS8qCisJCSAqIFdoZW4gc2NvcGVzIGwgYW5kIGcgYXJlIG5laWdoYm91cnMgKGct bD0xKSBidXQKKwkJICogdmFsPT1tW2ddIGluc3RlYWQgb2YgdmFsPT1tW2xdLgorCQkgKi8K KwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDIwKTsKKwkJY21wX29rKHNyY2guc3Qs ICI9PSIsIFVTVl9TUkNIX0ZPVU5ELCAiRm91bmQiKTsKKwkJY21wX29rKHNyY2gucG9zLCAi PT0iLCAyLCAiUG9zID0yIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDIx KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORF9MQVJHRVNU LCAiTm90IGZvdW5kLCBsYXJnZXN0Iik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMiwg IlBvcyA9MiIpOworCisJCXZlY3RfdTE2X2NsZWFyKCZ1c3YpOworCX0KKwl7IC8qIHNpbmds ZSBtZW1iZXIqLworCisJCXVuaXFzb3J0dmVjdF91MTZfdCB1c3Y7CisJCXVzdl9zcmNoX3Jl c190IHNyY2g7CisKKwkJdmVjdF91MTZfaW5pdCgmdXN2LCAzLCBOVUxMKTsKKworCQl1c3Zf dTE2X2luc2VydCgmdXN2LCA1KTsgLyogVGhlIG9ubHkgaXRlbSBpbiBsaXN0IGlzIDUgKi8K KworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMCk7CisJCWNtcF9vayhzcmNoLnN0 LCAiPT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkRfU01BTExFU1QsCisJCQkgICAiTm90IGZvdW5k LCBzbWFsbGVzdCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTAiKTsK KworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNSk7CisJCWNtcF9vayhzcmNoLnN0 LCAiPT0iLCBVU1ZfU1JDSF9GT1VORCwgIkZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywg Ij09IiwgMCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCA2 KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORF9MQVJHRVNU LCAiTm90IGZvdW5kLCBsYXJnZXN0Iik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMCwg IlBvcyA9MiIpOworCisJCXZlY3RfdTE2X2NsZWFyKCZ1c3YpOworCX0KKwl7IC8qIGVtcHR5 IHZlY3RvciovCisKKwkJdW5pcXNvcnR2ZWN0X3UxNl90IHVzdjsKKwkJdXN2X3NyY2hfcmVz X3Qgc3JjaDsKKworCQl2ZWN0X3UxNl9pbml0KCZ1c3YsIDEsIE5VTEwpOworCisJCXNyY2gg PSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAwKTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVT Vl9TUkNIX0VNUFRZLCAiVmVjdG9yIGlzIGVtcHR5LiIpOworCQljbXBfb2soc3JjaC5wb3Ms ICI9PSIsIDAsICJQb3MgPTAiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwg NCk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9FTVBUWSwgIlZlY3RvciBp cyBlbXB0eS4iKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisK KwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDUpOworCQljbXBfb2soc3JjaC5zdCwg Ij09IiwgVVNWX1NSQ0hfRU1QVFksICJWZWN0b3IgaXMgZW1wdHkuIik7CisJCWNtcF9vayhz cmNoLnBvcywgIj09IiwgMCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJj aCgmdXN2LCA2KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0VNUFRZLCAi VmVjdG9yIGlzIGVtcHR5LiIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3Mg PTAiKTsKKworCQl2ZWN0X3UxNl9jbGVhcigmdXN2KTsKKwl9CisJcHJpbnRmKCJUZXN0IFNF QVJDSCBJTiBVTklRVUUgU09SVCBWRUNUIFBBU1NFRC5cbiIpOworCXByaW50ZigiPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iKTsKKworCXByaW50Zigi PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJcHJpbnRm KCJUZXN0IEVSUk9SIE9OIE5PIFZFQ1RPUiBGT1IgU0VBUkNISU5HXG4iKTsKKwl7CisJCXVz dl9zcmNoX3Jlc190IHNyY2g7CisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaChOVUxMLCAwKTsK KwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0VSUk9SLAorCQkJICAgIkVycm9y OiBubyB2ZWN0b3IgKGVtcHR5IHBvaW50ZXIgb24gdmVjdHJvcikuIik7CisJfQorCXsKKwkJ dW5pcXNvcnR2ZWN0X3UxNl90IHVzdjsKKwkJdXN2X3NyY2hfcmVzX3Qgc3JjaDsKKwkJdmVj dF91MTZfaW5pdCgmdXN2LCAwLCBOVUxMKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2go JnVzdiwgMCk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9FTVBUWSwKKwkJ CSAgICJTZWFyY2ggaW4gZW1wdHkgdmVjdG9yIGlzIG5vdCBhbiBlcnJvci4iKTsKKworCQl2 ZWN0X3UxNl9jbGVhcigmdXN2KTsKKwl9CisJcHJpbnRmKCJUZXN0IEVSUk9SIE9OIE5PIFZF Q1RPUiBGT1IgU0VBUkNISU5HIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3Qg Q1JFQVRFRCBWRUNUT1JTIEFSRSBTT1JURUQgQU5EIFVOSVFVRVxuIik7CisJeworCQljbXBf b2soCisJCQkwLCAiPT0iLAorCQkJdGVzdF91c3YoMTAsICh1aW50MTZfdFtdKSB7IDAsIDEs IDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfSwgLy8gc3JjCisJCQkJCSAxMCwKKwkJCQkJICh1 aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfSksIC8vIGV4cGVj dGVkCisJCQkiVW5pcXVlIHNvcnRlZCB2ZWN0b3IgcmVtYWlucyB0aGUgc2FtZS4iKTsKKwor CQljbXBfb2soMCwgIj09IiwKKwkJCSAgIHRlc3RfdXN2KDEwLAorCQkJCQkJKHVpbnQxNl90 W10pIHsgMCwgMSwgMiwgMywgNCwgNSwgMywgNywgNSwgOSB9LCAvLyBzcmMKKwkJCQkJCTgs ICh1aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQsIDUsIDcsIDkgfSksIC8vIGV4cGVjdGVk CisJCQkgICAiRHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4iKTsKKworCQljbXBfb2soCisJCQkw LCAiPT0iLAorCQkJdGVzdF91c3YoMTAsICh1aW50MTZfdFtdKSB7IDksIDgsIDcsIDYsIDUs IDQsIDMsIDIsIDEsIDAgfSwgLy8gc3JjCisJCQkJCSAxMCwKKwkJCQkJICh1aW50MTZfdFtd KSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfSksIC8vIGV4cGVjdGVkCisJCQki VW5zb3J0ZWQgYmVjYW1lIHNvcnRlZC4iKTsKKwl9CisJcHJpbnRmKCJUZXN0IENSRUFURUQg VkVDVE9SUyBBUkUgU09SVEVEIEFORCBVTklRVUUgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlkb25l X3Rlc3RpbmcoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2Rmb3IvdGVzdF92ZWN0X3Ux Ni5jIGIvc3JjL3Rlc3QvZGZvci90ZXN0X3ZlY3RfdTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAwZWZlN2RjY2JlCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvZGZvci90ZXN0X3ZlY3RfdTE2LmMKQEAgLTAsMCArMSwxNjggQEAKKy8qCisg KiB0ZXN0X3ZlY3RfdTE2LmMKKyAqLworCisjaW5jbHVkZSAibGlidGFwL3RhcC5oIgorI2lu Y2x1ZGUgImxpYi92ZWN0X3UxNi5oIgorCitpbnQKK21haW4odm9pZCkKK3sKKwlwbGFuKDM1 KTsKKworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PVxuIik7CisJcHJpbnRmKCJUZXN0IElOSVQgQU5EIENMRUFSIFZFQ1RPUlxuIik7CisJewor CQl2ZWN0X3UxNl90IHY7CisJCXNpemVfdCBjYXBhY2l0eSA9IDEwOworCQljbXBfb2soMCwg Ij09IiwgdmVjdF91MTZfaW5pdCgmdiwgY2FwYWNpdHksIE5VTEwpLAorCQkJICAgIlJlc3Vs dCBvZiB2ZWN0X2luaXQgaXMgMCIpOworCisJCWNtcF9vayh2LmNhcCwgIj09IiwgY2FwYWNp dHksCisJCQkgICAiVmVjdG9ycyBjYXBhY2l0eSBpcyBlcXVhbCB0byByZXF1ZXN0ZWQgb25l Iik7CisJCWNtcF9vayh2LmNudCwgIj09IiwgMCwgIk5vIG1lbWJlcnMgaW4gdmVjdG9yIik7 CisJCW9rKHYubSAhPSBOVUxMLCAiQXJyYXkgZm9yIG1lbWJlcnMgaXMgcmVzZXJ2ZWQiKTsK KwkJY21wX29rKHYubWVtX2lzX291dGVyLCAiPT0iLCBmYWxzZSwgIlZlY3RvciBkb2VzIG5v dCB1c2Ugb3V0ZXIgbWVtb3J5Iik7CisKKwkJdmVjdF91MTZfY2xlYXIoJnYpOworCisJCWNt cF9vayh2LmNhcCwgIj09IiwgMCwgIlZlY3RvcnMgY2FwYWNpdHkgaXMgMCBhZnRlciBjbGVh bnVwIik7CisJCWNtcF9vayh2LmNudCwgIj09IiwgMCwgIk5vIG1lbWJlcnMgaW4gdmVjdG9y IGFmdGVyIGNsZWFudXAiKTsKKwkJb2sodi5tID09IE5VTEwsICJBcnJheSBmb3IgbWVtYmVy cyBpcyBhYnNlbnQiKTsKKwkJY21wX29rKHYubWVtX2lzX291dGVyLCAiPT0iLCBmYWxzZSwg IlZlY3RvciBkb2VzIG5vdCB1c2Ugb3V0ZXIgbWVtb3J5Iik7CisJfQorCXByaW50ZigiVGVz dCBJTklUIEFORCBDTEVBUiBWRUNUT1IgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50Zigi VGVzdCBJTklUIEFORCBGSUxMIFZFQ1RPUlxuIik7CisJeworCQl2ZWN0X3UxNl90IHY7CisJ CXNpemVfdCBjYXBhY2l0eSA9IDEwOworCQljb25zdCB1aW50MTZfdCB2YWxzW10gPSB7IDAs IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsKKworCQljbXBfb2soMCwgIj09IiwgdmVj dF91MTZfaW5pdCgmdiwgY2FwYWNpdHksIE5VTEwpLAorCQkJICAgIlJlc3VsdCBvZiB2ZWN0 X2luaXQgaXMgMCIpOworCQljbXBfb2soMCwgIj09IiwgdmVjdF91MTZfZmlsbCgmdiwgY2Fw YWNpdHksIHZhbHMpLAorCQkJICAgIlJlc3VsdCBvZiB2ZWN0X2ZpbGwgaXMgMCIpOworCisJ CWNtcF9vayh2LmNhcCwgIj09IiwgY2FwYWNpdHksCisJCQkgICAiVmVjdG9ycyBjYXBhY2l0 eSBpcyBlcXVhbCB0byByZXF1ZXN0ZWQgb25lIik7CisJCW9rKHYubSAhPSBOVUxMLCAiQXJy YXkgZm9yIG1lbWJlcnMgaXMgcmVzZXJ2ZWQiKTsKKwkJY21wX29rKHYuY250LCAiPT0iLCBj YXBhY2l0eSwgIk1lbWJlcnMgYXJlIGluIHZlY3Rvci4iKTsKKwkJeworCQkJaW50IGVxdWFs ID0gMDsKKwkJCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FwYWNpdHk7IGkrKykgeworCQkJ CWlmICh2Lm1baV0gPT0gaSkKKwkJCQkJZXF1YWwgPSBlcXVhbCArIDE7CisJCQkJZWxzZQor CQkJCQlicmVhazsKKwkJCX0KKwkJCWNtcF9vayhlcXVhbCwgIj09IiwgMTAsICJNZW1iZXJz IGFyZSBjb3JyZWN0Iik7CisJCX0KKwkJdmVjdF91MTZfY2xlYXIoJnYpOworCX0KKwlwcmlu dGYoIlRlc3QgSU5JVCBBTkQgRklMTCBWRUNUT1IgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmlu dGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXBy aW50ZigiVGVzdCBJTklUIEFORCBGSUxMIFZFQ1RPUiB3aXRoIHplcm8gY2FwY2FpdHlcbiIp OworCXsKKwkJdmVjdF91MTZfdCB2OworCQlzaXplX3QgY2FwYWNpdHkgPSAwOworCisJCWNt cF9vaygwLCAiPT0iLCB2ZWN0X3UxNl9pbml0KCZ2LCBjYXBhY2l0eSwgTlVMTCksCisJCQkg ICAiUmVzdWx0IG9mIHZlY3RfaW5pdCBpcyAwIik7CisJCWNtcF9vaygwLCAiPT0iLCB2ZWN0 X3UxNl9maWxsKCZ2LCBjYXBhY2l0eSwgTlVMTCksCisJCQkgICAiUmVzdWx0IG9mIHZlY3Rf ZmlsbCBpcyAwIik7CisKKwkJY21wX29rKHYuY2FwLCAiPT0iLCAwLCAiVmVjdG9yJ3MgY2Fw YWNpdHkgaXMgemVybyIpOworCQlvayh2Lm0gPT0gTlVMTCwKKwkJICAgIlBvaW50ZXIgdG8g bWVtYmVycyBpcyBOVUxMIChhcnJheSBmb3IgbWVtYmVycyBpcyBub3QgcmVzZXJ2ZWQpIik7 CisJCW9rKHYuY250ID09IDAsICJDb3VudGVyIG9mIG1lbWJlcnMgaXMgemVyby4iKTsKKwkJ dmVjdF91MTZfY2xlYXIoJnYpOworCX0KKwl7CisJCXZlY3RfdTE2X3QgdjsKKwkJc2l6ZV90 IGNhcGFjaXR5ID0gMTA7CisJCWNvbnN0IHVpbnQxNl90IHZhbHNbXSA9IHsgMCwgMSwgMiwg MywgNCwgNSwgNiwgNywgOCwgOSB9OworCisJCWNtcF9vaygwLCAiPT0iLCB2ZWN0X3UxNl9p bml0KCZ2LCAwLCBOVUxMKSwgIlJlc3VsdCBvZiB2ZWN0X2luaXQgaXMgMCIpOworCQljbXBf b2soMCwgIj09IiwgdmVjdF91MTZfZmlsbCgmdiwgY2FwYWNpdHksIHZhbHMpLAorCQkJICAg IlJlc3VsdCBvZiB2ZWN0X2ZpbGwgaXMgMCIpOworCisJCWNtcF9vayh2LmNhcCwgIj09Iiwg Y2FwYWNpdHksCisJCQkgICAiVmVjdG9yJ3MgY2FwYWNpdHkgaXMgbm90IHplcm8gYWZ0ZXIg ZmlsbGluZyIpOworCQlvayh2Lm0gIT0gTlVMTCwKKwkJICAgIlBvaW50ZXIgdG8gbWVtYmVy cyBpcyBub3QgTlVMTCBmYXRlciBmaWxsaW5nIChhcnJheSBmb3IgbWVtYmVycyBoYXMgYmVl biByZXNlcnZlZCkiKTsKKwkJb2sodi5jbnQgPT0gY2FwYWNpdHksICJDb3VudGVyIG9mIG1l bWJlcnMgaXMgbm90IHplcm8gYWZ0ZXIgZmlsbGluZy4iKTsKKwkJdmVjdF91MTZfY2xlYXIo JnYpOworCX0KKwlwcmludGYoIlRlc3QgSU5JVCBBTkQgRklMTCBWRUNUT1Igd2l0aCB6ZXJv IGNhcGNhaXR5IGlzIGZpbmlzaGVkXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBDT01Q QVJFIFZFQ1RPUlNcbiIpOworCXsKKwkJdmVjdF91MTZfdCBhLCBiLCBjLCBkOworCisJCXVp bnQxNl90IGF2YWxzW10gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsKKwkJ dWludDE2X3QgYnZhbHNbXSA9IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSB9Owor CQl1aW50MTZfdCBjdmFsc1tdID0geyAxLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5IH07 CisJCXVpbnQxNl90IGR2YWxzW10gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDggfTsK KworCQl2ZWN0X3UxNl9pbml0KCZhLCAwLCBOVUxMKTsKKwkJdmVjdF91MTZfaW5pdCgmYiwg MCwgTlVMTCk7CisJCXZlY3RfdTE2X2luaXQoJmMsIDAsIE5VTEwpOworCQl2ZWN0X3UxNl9p bml0KCZkLCAwLCBOVUxMKTsKKworCQl2ZWN0X3UxNl9maWxsKCZhLCAxMCwgYXZhbHMpOwor CQl2ZWN0X3UxNl9maWxsKCZiLCAxMCwgYnZhbHMpOworCQl2ZWN0X3UxNl9maWxsKCZjLCAx MCwgY3ZhbHMpOworCQl2ZWN0X3UxNl9maWxsKCZkLCA5LCBkdmFscyk7CisKKwkJY21wX29r KDAsICI9PSIsIHZlY3RfdTE2X2NvbXBhcmUoJmEsICZiKSwgIlZlY3RvcnMgYXJlIGVxdWFs Iik7CisJCWNtcF9vaygtMSwgIj09IiwgdmVjdF91MTZfY29tcGFyZSgmYSwgJmMpLAorCQkJ ICAgIlZlY3RvcnMgYXJlIG5vdCBlcXVhbCBiZWNhdXNlIG9mIHZhbHVlIG9mIG1lbWJlcnMi KTsKKwkJY21wX29rKC0xLCAiPT0iLCB2ZWN0X3UxNl9jb21wYXJlKCZhLCAmZCksCisJCQkg ICAiVmVjdG9ycyBhcmUgbm90IGVxdWFsIGJlY2F1c2Ugb2YgbnVtYmVyIG9mIG1lbWJlcnMi KTsKKwl9CisJcHJpbnRmKCJUZXN0IENPTVBBUkUgVkVDVE9SUyBpcyBmaW5pc2hlZC4gXG4i KTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1c blxuIik7CisKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBWRUNUT1IgV0lUSCBPVVRFUiBNRU1PUllcbiIp OworCXsKKyNkZWZpbmUgVkVDVF9DQVAgMTAwCisJCXZlY3RfdTE2X3QgdmVjdDsKKwkJdWlu dDE2X3QgYnVmW1ZFQ1RfQ0FQXTsgLyogdWludDE2X3QgaXMgdGhlIGl0ZW0ncyB0eXBlICov CisJCXZlY3RfdTE2X2luaXQoJnZlY3QsIFZFQ1RfQ0FQLCBidWYpOworCQljbXBfb2soCisJ CQl2ZWN0LmNhcCwgIj09IiwgVkVDVF9DQVAsCisJCQkiSW5pdGlhbGlzYXRpb24gb2YgdmVj dG9yIGhhdmluZyBleHRlcm5hbCBtZW1vcnkgcmVzdWx0ZWQgaW4gcHJvcGVyIGNhcGFjaXR5 LiIpOworCQljbXBfb2soCisJCQl2ZWN0LmNudCwgIj09IiwgMCwKKwkJCSJJbml0aWFsaXNh dGlvbiBvZiB2ZWN0b3IgaGF2aW5nIGV4dGVybmFsIG1lbW9yeSByZXN1bHRlZCBpbiBwcm9w ZXIgbnVtYmVyIG9mIGl0ZW1zLiIpOworCQlvaygoKHZvaWQgKil2ZWN0Lm0gPT0gKHZvaWQg KilidWYpLAorCQkgICAiSW5pdGlhbGlzYXRpb24gb2YgdmVjdG9yIGhhdmluZyBleHRlcm5h bCBtZW1vcnkgc2V0IGJ1ZiB0byB2ZWN0LT5tLiIpOworCQlvayh2ZWN0Lm1lbV9pc19vdXRl ciwKKwkJICAgIkluaXRpYWxpc2F0aW9uIG9mIHZlY3RvciBoYXZpbmcgZXh0ZXJuYWwgbWVt b3J5IHNldCBtZW1faXNfb3V0ZXIgZmxhZy4iKTsKKworCQlmb3IgKHNpemVfdCBpID0gMDsg aSA8IFZFQ1RfQ0FQOyBpKyspCisJCXsKKwkJCWlmICh2ZWN0X3UxNl9hcHBlbmQoJnZlY3Qs IGkpICE9IDApCisJCQkJZmFpbCgKKwkJCQkJIkVSUk9SOiBOZXcgdmFsdWUgY2FuJ3QgYmUg YXBwZW5kZWQgaW50byB2ZWN0b3IgaGF2aW5nIGV4dGVybmFsIG1lbW9yeS4iKTsKKwkJfQor CQlwYXNzKAorCQkJIkFsbCB2YWx1ZXMgaGF2ZSBiZWVuIGFwcGVuZGVkIGludG8gdmVjdG9y IGhhdmluZyBleHRlcm5hbCBtZW1vcnkuIik7CisKKwkJY21wX29rKHZlY3QuY250LCAiPT0i LCBWRUNUX0NBUCwgIlZlY3RvciBpcyBmdWxsLiIpOworCQljbXBfb2sodmVjdF91MTZfYXBw ZW5kKCZ2ZWN0LCBWRUNUX0NBUCksICI9PSIsIC0xLAorCQkJICAgIk9uY2UgdmVjdG9yIGlz IGZ1bGwsIGV4dHJhIGl0ZW0gY2FuJ3QgYmUgYXBwZW5kZWQuIik7CisJfQorCXByaW50Zigi VGVzdCBWRUNUT1IgV0lUSCBPVVRFUiBNRU1PUlkgaXMgZmluaXNoZWRcbiIpOworCXByaW50 ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisKKwlk b25lX3Rlc3RpbmcoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC8uZ2l0aWdu b3JlIGIvc3JjL3Rlc3QvbGlidGFwLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjJjOTVkMDQ2YzdkCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvbGlidGFwLy5naXRpZ25vcmUKQEAgLTAsMCArMSwxMyBAQAorL3QvKgorIS90Lyou KgorL3QvKi5leGUKKy90LyouZ290CisqLmEKKyoubG8KKyoubworKi5zbworKi5wYwordXNy LworKi5zdz8KKy8uZGVwcworLy5kaXJzdGFtcApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbGli dGFwLy50cmF2aXMueW1sIGIvc3JjL3Rlc3QvbGlidGFwLy50cmF2aXMueW1sCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42Zjk4MDllMWI5OQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L2xpYnRhcC8udHJhdmlzLnltbApAQCAtMCwwICsxLDEzIEBA CitsYW5ndWFnZTogYworCitjb21waWxlcjoKKyAgLSBnY2MKKyAgLSBjbGFuZworCitiZWZv cmVfaW5zdGFsbDogc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXkgbGlidGVzdC1kaWZmZXJlbmNl cy1wZXJsCisKK2luc3RhbGw6IG1ha2UgQ0M9JENDIGluc3RhbGwKKworc2NyaXB0OiBtYWtl IENDPSRDQyB0ZXN0CisKK2FmdGVyX3NjcmlwdDogbWFrZSB1bmluc3RhbGwKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L2xpYnRhcC9DT1BZSU5HIGIvc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY1YzVjYTg4YTY3Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcKQEAgLTAsMCArMSwx NjUgQEAKKyAgICAgICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJ Q0VOU0UKKyAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDcK KworIENvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4g PGh0dHA6Ly9mc2Yub3JnLz4KKyBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQg ZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKKyBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQs IGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKworCisgIFRoaXMgdmVyc2lvbiBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluY29ycG9yYXRlcwor dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHZlcnNpb24gMyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljCitMaWNlbnNlLCBzdXBwbGVtZW50ZWQgYnkgdGhlIGFkZGl0aW9uYWwgcGVy bWlzc2lvbnMgbGlzdGVkIGJlbG93LgorCisgIDAuIEFkZGl0aW9uYWwgRGVmaW5pdGlvbnMu CisKKyAgQXMgdXNlZCBoZXJlaW4sICJ0aGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9u IDMgb2YgdGhlIEdOVSBMZXNzZXIKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUg IkdOVSBHUEwiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVQorR2VuZXJhbCBQdWJs aWMgTGljZW5zZS4KKworICAiVGhlIExpYnJhcnkiIHJlZmVycyB0byBhIGNvdmVyZWQgd29y ayBnb3Zlcm5lZCBieSB0aGlzIExpY2Vuc2UsCitvdGhlciB0aGFuIGFuIEFwcGxpY2F0aW9u IG9yIGEgQ29tYmluZWQgV29yayBhcyBkZWZpbmVkIGJlbG93LgorCisgIEFuICJBcHBsaWNh dGlvbiIgaXMgYW55IHdvcmsgdGhhdCBtYWtlcyB1c2Ugb2YgYW4gaW50ZXJmYWNlIHByb3Zp ZGVkCitieSB0aGUgTGlicmFyeSwgYnV0IHdoaWNoIGlzIG5vdCBvdGhlcndpc2UgYmFzZWQg b24gdGhlIExpYnJhcnkuCitEZWZpbmluZyBhIHN1YmNsYXNzIG9mIGEgY2xhc3MgZGVmaW5l ZCBieSB0aGUgTGlicmFyeSBpcyBkZWVtZWQgYSBtb2RlCitvZiB1c2luZyBhbiBpbnRlcmZh Y2UgcHJvdmlkZWQgYnkgdGhlIExpYnJhcnkuCisKKyAgQSAiQ29tYmluZWQgV29yayIgaXMg YSB3b3JrIHByb2R1Y2VkIGJ5IGNvbWJpbmluZyBvciBsaW5raW5nIGFuCitBcHBsaWNhdGlv biB3aXRoIHRoZSBMaWJyYXJ5LiAgVGhlIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiB0aGUgTGli cmFyeQord2l0aCB3aGljaCB0aGUgQ29tYmluZWQgV29yayB3YXMgbWFkZSBpcyBhbHNvIGNh bGxlZCB0aGUgIkxpbmtlZAorVmVyc2lvbiIuCisKKyAgVGhlICJNaW5pbWFsIENvcnJlc3Bv bmRpbmcgU291cmNlIiBmb3IgYSBDb21iaW5lZCBXb3JrIG1lYW5zIHRoZQorQ29ycmVzcG9u ZGluZyBTb3VyY2UgZm9yIHRoZSBDb21iaW5lZCBXb3JrLCBleGNsdWRpbmcgYW55IHNvdXJj ZSBjb2RlCitmb3IgcG9ydGlvbnMgb2YgdGhlIENvbWJpbmVkIFdvcmsgdGhhdCwgY29uc2lk ZXJlZCBpbiBpc29sYXRpb24sIGFyZQorYmFzZWQgb24gdGhlIEFwcGxpY2F0aW9uLCBhbmQg bm90IG9uIHRoZSBMaW5rZWQgVmVyc2lvbi4KKworICBUaGUgIkNvcnJlc3BvbmRpbmcgQXBw bGljYXRpb24gQ29kZSIgZm9yIGEgQ29tYmluZWQgV29yayBtZWFucyB0aGUKK29iamVjdCBj b2RlIGFuZC9vciBzb3VyY2UgY29kZSBmb3IgdGhlIEFwcGxpY2F0aW9uLCBpbmNsdWRpbmcg YW55IGRhdGEKK2FuZCB1dGlsaXR5IHByb2dyYW1zIG5lZWRlZCBmb3IgcmVwcm9kdWNpbmcg dGhlIENvbWJpbmVkIFdvcmsgZnJvbSB0aGUKK0FwcGxpY2F0aW9uLCBidXQgZXhjbHVkaW5n IHRoZSBTeXN0ZW0gTGlicmFyaWVzIG9mIHRoZSBDb21iaW5lZCBXb3JrLgorCisgIDEuIEV4 Y2VwdGlvbiB0byBTZWN0aW9uIDMgb2YgdGhlIEdOVSBHUEwuCisKKyAgWW91IG1heSBjb252 ZXkgYSBjb3ZlcmVkIHdvcmsgdW5kZXIgc2VjdGlvbnMgMyBhbmQgNCBvZiB0aGlzIExpY2Vu c2UKK3dpdGhvdXQgYmVpbmcgYm91bmQgYnkgc2VjdGlvbiAzIG9mIHRoZSBHTlUgR1BMLgor CisgIDIuIENvbnZleWluZyBNb2RpZmllZCBWZXJzaW9ucy4KKworICBJZiB5b3UgbW9kaWZ5 IGEgY29weSBvZiB0aGUgTGlicmFyeSwgYW5kLCBpbiB5b3VyIG1vZGlmaWNhdGlvbnMsIGEK K2ZhY2lsaXR5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGRhdGEgdG8gYmUgc3VwcGxpZWQg YnkgYW4gQXBwbGljYXRpb24KK3RoYXQgdXNlcyB0aGUgZmFjaWxpdHkgKG90aGVyIHRoYW4g YXMgYW4gYXJndW1lbnQgcGFzc2VkIHdoZW4gdGhlCitmYWNpbGl0eSBpcyBpbnZva2VkKSwg dGhlbiB5b3UgbWF5IGNvbnZleSBhIGNvcHkgb2YgdGhlIG1vZGlmaWVkCit2ZXJzaW9uOgor CisgICBhKSB1bmRlciB0aGlzIExpY2Vuc2UsIHByb3ZpZGVkIHRoYXQgeW91IG1ha2UgYSBn b29kIGZhaXRoIGVmZm9ydCB0bworICAgZW5zdXJlIHRoYXQsIGluIHRoZSBldmVudCBhbiBB cHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwbHkgdGhlCisgICBmdW5jdGlvbiBvciBkYXRhLCB0 aGUgZmFjaWxpdHkgc3RpbGwgb3BlcmF0ZXMsIGFuZCBwZXJmb3JtcworICAgd2hhdGV2ZXIg cGFydCBvZiBpdHMgcHVycG9zZSByZW1haW5zIG1lYW5pbmdmdWwsIG9yCisKKyAgIGIpIHVu ZGVyIHRoZSBHTlUgR1BMLCB3aXRoIG5vbmUgb2YgdGhlIGFkZGl0aW9uYWwgcGVybWlzc2lv bnMgb2YKKyAgIHRoaXMgTGljZW5zZSBhcHBsaWNhYmxlIHRvIHRoYXQgY29weS4KKworICAz LiBPYmplY3QgQ29kZSBJbmNvcnBvcmF0aW5nIE1hdGVyaWFsIGZyb20gTGlicmFyeSBIZWFk ZXIgRmlsZXMuCisKKyAgVGhlIG9iamVjdCBjb2RlIGZvcm0gb2YgYW4gQXBwbGljYXRpb24g bWF5IGluY29ycG9yYXRlIG1hdGVyaWFsIGZyb20KK2EgaGVhZGVyIGZpbGUgdGhhdCBpcyBw YXJ0IG9mIHRoZSBMaWJyYXJ5LiAgWW91IG1heSBjb252ZXkgc3VjaCBvYmplY3QKK2NvZGUg dW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQsIGlmIHRoZSBpbmNv cnBvcmF0ZWQKK21hdGVyaWFsIGlzIG5vdCBsaW1pdGVkIHRvIG51bWVyaWNhbCBwYXJhbWV0 ZXJzLCBkYXRhIHN0cnVjdHVyZQorbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBvciBzbWFsbCBt YWNyb3MsIGlubGluZSBmdW5jdGlvbnMgYW5kIHRlbXBsYXRlcworKHRlbiBvciBmZXdlciBs aW5lcyBpbiBsZW5ndGgpLCB5b3UgZG8gYm90aCBvZiB0aGUgZm9sbG93aW5nOgorCisgICBh KSBHaXZlIHByb21pbmVudCBub3RpY2Ugd2l0aCBlYWNoIGNvcHkgb2YgdGhlIG9iamVjdCBj b2RlIHRoYXQgdGhlCisgICBMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExp YnJhcnkgYW5kIGl0cyB1c2UgYXJlCisgICBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KKwor ICAgYikgQWNjb21wYW55IHRoZSBvYmplY3QgY29kZSB3aXRoIGEgY29weSBvZiB0aGUgR05V IEdQTCBhbmQgdGhpcyBsaWNlbnNlCisgICBkb2N1bWVudC4KKworICA0LiBDb21iaW5lZCBX b3Jrcy4KKworICBZb3UgbWF5IGNvbnZleSBhIENvbWJpbmVkIFdvcmsgdW5kZXIgdGVybXMg b2YgeW91ciBjaG9pY2UgdGhhdCwKK3Rha2VuIHRvZ2V0aGVyLCBlZmZlY3RpdmVseSBkbyBu b3QgcmVzdHJpY3QgbW9kaWZpY2F0aW9uIG9mIHRoZQorcG9ydGlvbnMgb2YgdGhlIExpYnJh cnkgY29udGFpbmVkIGluIHRoZSBDb21iaW5lZCBXb3JrIGFuZCByZXZlcnNlCitlbmdpbmVl cmluZyBmb3IgZGVidWdnaW5nIHN1Y2ggbW9kaWZpY2F0aW9ucywgaWYgeW91IGFsc28gZG8g ZWFjaCBvZgordGhlIGZvbGxvd2luZzoKKworICAgYSkgR2l2ZSBwcm9taW5lbnQgbm90aWNl IHdpdGggZWFjaCBjb3B5IG9mIHRoZSBDb21iaW5lZCBXb3JrIHRoYXQKKyAgIHRoZSBMaWJy YXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJl CisgICBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgYikgQWNjb21wYW55IHRoZSBD b21iaW5lZCBXb3JrIHdpdGggYSBjb3B5IG9mIHRoZSBHTlUgR1BMIGFuZCB0aGlzIGxpY2Vu c2UKKyAgIGRvY3VtZW50LgorCisgICBjKSBGb3IgYSBDb21iaW5lZCBXb3JrIHRoYXQgZGlz cGxheXMgY29weXJpZ2h0IG5vdGljZXMgZHVyaW5nCisgICBleGVjdXRpb24sIGluY2x1ZGUg dGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIHRoZSBMaWJyYXJ5IGFtb25nCisgICB0aGVzZSBu b3RpY2VzLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlIGRpcmVjdGluZyB0aGUgdXNlciB0byB0 aGUKKyAgIGNvcGllcyBvZiB0aGUgR05VIEdQTCBhbmQgdGhpcyBsaWNlbnNlIGRvY3VtZW50 LgorCisgICBkKSBEbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgICAgIDApIENvbnZl eSB0aGUgTWluaW1hbCBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2Yg dGhpcworICAgICAgIExpY2Vuc2UsIGFuZCB0aGUgQ29ycmVzcG9uZGluZyBBcHBsaWNhdGlv biBDb2RlIGluIGEgZm9ybQorICAgICAgIHN1aXRhYmxlIGZvciwgYW5kIHVuZGVyIHRlcm1z IHRoYXQgcGVybWl0LCB0aGUgdXNlciB0bworICAgICAgIHJlY29tYmluZSBvciByZWxpbmsg dGhlIEFwcGxpY2F0aW9uIHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mCisgICAgICAgdGhl IExpbmtlZCBWZXJzaW9uIHRvIHByb2R1Y2UgYSBtb2RpZmllZCBDb21iaW5lZCBXb3JrLCBp biB0aGUKKyAgICAgICBtYW5uZXIgc3BlY2lmaWVkIGJ5IHNlY3Rpb24gNiBvZiB0aGUgR05V IEdQTCBmb3IgY29udmV5aW5nCisgICAgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuCisKKyAg ICAgICAxKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxp bmtpbmcgd2l0aCB0aGUKKyAgICAgICBMaWJyYXJ5LiAgQSBzdWl0YWJsZSBtZWNoYW5pc20g aXMgb25lIHRoYXQgKGEpIHVzZXMgYXQgcnVuIHRpbWUKKyAgICAgICBhIGNvcHkgb2YgdGhl IExpYnJhcnkgYWxyZWFkeSBwcmVzZW50IG9uIHRoZSB1c2VyJ3MgY29tcHV0ZXIKKyAgICAg ICBzeXN0ZW0sIGFuZCAoYikgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmll ZCB2ZXJzaW9uCisgICAgICAgb2YgdGhlIExpYnJhcnkgdGhhdCBpcyBpbnRlcmZhY2UtY29t cGF0aWJsZSB3aXRoIHRoZSBMaW5rZWQKKyAgICAgICBWZXJzaW9uLgorCisgICBlKSBQcm92 aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiwgYnV0IG9ubHkgaWYgeW91IHdvdWxkIG90 aGVyd2lzZQorICAgYmUgcmVxdWlyZWQgdG8gcHJvdmlkZSBzdWNoIGluZm9ybWF0aW9uIHVu ZGVyIHNlY3Rpb24gNiBvZiB0aGUKKyAgIEdOVSBHUEwsIGFuZCBvbmx5IHRvIHRoZSBleHRl bnQgdGhhdCBzdWNoIGluZm9ybWF0aW9uIGlzCisgICBuZWNlc3NhcnkgdG8gaW5zdGFsbCBh bmQgZXhlY3V0ZSBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlCisgICBDb21iaW5lZCBXb3Jr IHByb2R1Y2VkIGJ5IHJlY29tYmluaW5nIG9yIHJlbGlua2luZyB0aGUKKyAgIEFwcGxpY2F0 aW9uIHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaW5rZWQgVmVyc2lvbi4gKElm CisgICB5b3UgdXNlIG9wdGlvbiA0ZDAsIHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24g bXVzdCBhY2NvbXBhbnkKKyAgIHRoZSBNaW5pbWFsIENvcnJlc3BvbmRpbmcgU291cmNlIGFu ZCBDb3JyZXNwb25kaW5nIEFwcGxpY2F0aW9uCisgICBDb2RlLiBJZiB5b3UgdXNlIG9wdGlv biA0ZDEsIHlvdSBtdXN0IHByb3ZpZGUgdGhlIEluc3RhbGxhdGlvbgorICAgSW5mb3JtYXRp b24gaW4gdGhlIG1hbm5lciBzcGVjaWZpZWQgYnkgc2VjdGlvbiA2IG9mIHRoZSBHTlUgR1BM CisgICBmb3IgY29udmV5aW5nIENvcnJlc3BvbmRpbmcgU291cmNlLikKKworICA1LiBDb21i aW5lZCBMaWJyYXJpZXMuCisKKyAgWW91IG1heSBwbGFjZSBsaWJyYXJ5IGZhY2lsaXRpZXMg dGhhdCBhcmUgYSB3b3JrIGJhc2VkIG9uIHRoZQorTGlicmFyeSBzaWRlIGJ5IHNpZGUgaW4g YSBzaW5nbGUgbGlicmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKK2ZhY2lsaXRp ZXMgdGhhdCBhcmUgbm90IEFwcGxpY2F0aW9ucyBhbmQgYXJlIG5vdCBjb3ZlcmVkIGJ5IHRo aXMKK0xpY2Vuc2UsIGFuZCBjb252ZXkgc3VjaCBhIGNvbWJpbmVkIGxpYnJhcnkgdW5kZXIg dGVybXMgb2YgeW91cgorY2hvaWNlLCBpZiB5b3UgZG8gYm90aCBvZiB0aGUgZm9sbG93aW5n OgorCisgICBhKSBBY2NvbXBhbnkgdGhlIGNvbWJpbmVkIGxpYnJhcnkgd2l0aCBhIGNvcHkg b2YgdGhlIHNhbWUgd29yayBiYXNlZAorICAgb24gdGhlIExpYnJhcnksIHVuY29tYmluZWQg d2l0aCBhbnkgb3RoZXIgbGlicmFyeSBmYWNpbGl0aWVzLAorICAgY29udmV5ZWQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgYikgR2l2ZSBwcm9taW5lbnQgbm90 aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgdGhhdCBwYXJ0IG9mIGl0CisgICBpcyBh IHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nIHdoZXJlIHRvIGZp bmQgdGhlCisgICBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdv cmsuCisKKyAgNi4gUmV2aXNlZCBWZXJzaW9ucyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlLgorCisgIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5 IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCitvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiBTdWNoIG5ldwor dmVyc2lvbnMgd2lsbCBiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJz aW9uLCBidXQgbWF5CitkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1z IG9yIGNvbmNlcm5zLgorCisgIEVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNo aW5nIHZlcnNpb24gbnVtYmVyLiBJZiB0aGUKK0xpYnJhcnkgYXMgeW91IHJlY2VpdmVkIGl0 IHNwZWNpZmllcyB0aGF0IGEgY2VydGFpbiBudW1iZXJlZCB2ZXJzaW9uCitvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIK K2FwcGxpZXMgdG8gaXQsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0 ZXJtcyBhbmQKK2NvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgcHVibGlzaGVkIHZlcnNpb24g b3Igb2YgYW55IGxhdGVyIHZlcnNpb24KK3B1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLiBJZiB0aGUgTGlicmFyeSBhcyB5b3UKK3JlY2VpdmVkIGl0IGRvZXMg bm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgR05VIExlc3NlcgorR2VuZXJh bCBQdWJsaWMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gb2YgdGhlIEdO VSBMZXNzZXIKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UgZXZlciBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworICBJZiB0aGUgTGlicmFyeSBhcyB5b3Ug cmVjZWl2ZWQgaXQgc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlCit3aGV0aGVy IGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHNoYWxsCithcHBseSwgdGhhdCBwcm94eSdzIHB1YmxpYyBzdGF0ZW1lbnQgb2YgYWNj ZXB0YW5jZSBvZiBhbnkgdmVyc2lvbiBpcworcGVybWFuZW50IGF1dGhvcml6YXRpb24gZm9y IHlvdSB0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUKK0xpYnJhcnkuCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9saWJ0YXAvSU5TVEFMTCBiL3NyYy90ZXN0L2xpYnRhcC9JTlNUQUxM Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41YjJjNzZkZjNkNwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2xpYnRhcC9JTlNUQUxMCkBAIC0wLDAgKzEs NDEgQEAKK1RvIGluc3RhbGwgbGlidGFwIG9uIGEgVW5peC1saWtlIHN5c3RlbToKKworICAg ICQgbWFrZQorICAgICQgbWFrZSBjaGVjaworICAgICQgbWFrZSBpbnN0YWxsCisKK1RvIGNv bXBpbGUgd2l0aCBnY2MgLWFuc2ksIHJ1bjoKKworICAgICQgQU5TST0xIG1ha2UKKworVG8g aW5zdGFsbCB0byBhIGRpZmZlcmVudCBkaXJlY3RvcnkgdGhhbiAvdXNyL2xvY2FsLCBzdXBw bHkgdGhlCitQUkVGSVggdmFyaWFibGUgdG8gbWFrZToKKworICAgICQgUFJFRklYPS91c3Ig bWFrZSBpbnN0YWxsCisKK09uIFdpbmRvd3MsIHRoZSBsaWJyYXJ5IGNhbiBiZSBjcmVhdGVk IGJ5IGZpcnN0IHNldHRpbmcgdXAgdGhlCitjb3JyZWN0IGRldmVsb3BtZW50IGVudmlyb25t ZW50IHZhcmlhYmxlcy4gVXN1YWxseSB0aGlzIGlzIGRvbmUgYnkKK3J1bm5pbmcgdmN2YXJz MzIuYmF0IGluY2x1ZGVkIGluIHRoZSBWaXN1YWwgU3R1ZGlvIGRpc3RyaWJ1dGlvbi4KK1lv dSBzaG91bGQgYWxzbyBpbnN0YWxsIGdudSBtYWtlIHdoaWNoIGNhbiBiZSBmb3VuZCBhdAor aHR0cDovL2dudXdpbjMyLnNvdXJjZWZvcmdlLm5ldC9wYWNrYWdlcy9tYWtlLmh0bS4gT25j ZSB0aGlzIGlzCitkb25lLCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuIHRoZSBmb2xsb3dp bmc6CisKKyAgICA+IG1ha2UgLWYgTWFrZWZpbGUud2luCisKK0lmIHlvdSB3YW50IHRvIHVz ZSBpdCBkaXJlY3RseSBpbiBhbm90aGVyIHByb2plY3QsIHlvdSBjYW4gY29weSB0YXAuYwor YW5kIHRhcC5oIHRoZXJlIGFuZCBpdCBzaG91bGRuJ3QgaGF2ZSBhIHByb2JsZW0gY29tcGls aW5nLgorCisgICAgJCBscworICAgIHRhcC5jIHRhcC5oIHRlc3QuYworICAgICQgY2F0IHRl c3QuYworICAgICNpbmNsdWRlICJ0YXAuaCIKKyAgICBpbnQgbWFpbiAoKSB7CisgICAgICAg IHBsYW4oMSk7CisgICAgICAgIG9rKDUwICsgNSwgImZvbyAlcyIsICJiYXIiKTsKKyAgICAg ICAgZG9uZV90ZXN0aW5nKCk7CisgICAgfQorICAgICQgZ2NjIHRlc3QuYyB0YXAuYworICAg ICQgYS5vdXQKKyAgICAxLi4xCisgICAgb2sgMSAtIGZvbyBiYXIKKwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbGlidGFwL01ha2VmaWxlIGIvc3JjL3Rlc3QvbGlidGFwL01ha2VmaWxlCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mMDIwYzI4MzlhOAotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZQpAQCAtMCwwICsxLDcz IEBACitDQyA/PSBnY2MKK0NGTEFHUyArPSAtV2FsbCAtSS4gLWZQSUMKK1BSRUZJWCA/PSAk KERFU1RESVIpL3Vzci9sb2NhbAorVEVTVFMgPSAkKHBhdHN1YnN0ICUuYywgJSwgJCh3aWxk Y2FyZCB0LyouYykpCisKK2lmZGVmIEFOU0kKKwkjIC1EX0JTRF9TT1VSQ0UgZm9yIE1BUF9B Tk9OWU1PVVMKKwlDRkxBR1MgKz0gLWFuc2kgLURfQlNEX1NPVVJDRQorCUxETElCUyArPSAt bGJzZC1jb21wYXQKK2VuZGlmCisKKyU6CisJJChDQykgJChMREZMQUdTKSAkKFRBUkdFVF9B UkNIKSAkKGZpbHRlciAlLm8gJS5hICUuc28sICReKSAkKExETElCUykgLW8gJEAKKworJS5v OgorCSQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKFRBUkdFVF9BUkNIKSAtYyAkKGZp bHRlciAlLmMsICReKSAkKExETElCUykgLW8gJEAKKworJS5hOgorCSQoQVIpIHJjcyAkQCAk KGZpbHRlciAlLm8sICReKQorCislLnNvOgorCSQoQ0MpIC1zaGFyZWQgJChMREZMQUdTKSAk KFRBUkdFVF9BUkNIKSAkKGZpbHRlciAlLm8sICReKSAkKExETElCUykgLW8gJEAKKworYWxs OiBsaWJ0YXAuYSBsaWJ0YXAuc28gdGFwLnBjIHRlc3RzCisKK3RhcC5wYzoKKwlAZWNobyBn ZW5lcmF0aW5nIHRhcC5wYworCUBlY2hvICdwcmVmaXg9JyQoUFJFRklYKSA+IHRhcC5wYwor CUBlY2hvICdleGVjX3ByZWZpeD0kJHtwcmVmaXh9JyA+PiB0YXAucGMKKwlAZWNobyAnbGli ZGlyPSQke3ByZWZpeH0vbGliJyA+PiB0YXAucGMKKwlAZWNobyAnaW5jbHVkZWRpcj0kJHtw cmVmaXh9L2luY2x1ZGUnID4+IHRhcC5wYworCUBlY2hvICcnID4+IHRhcC5wYworCUBlY2hv ICdOYW1lOiBsaWJ0YXAnID4+IHRhcC5wYworCUBlY2hvICdEZXNjcmlwdGlvbjogV3JpdGUg dGVzdHMgaW4gQycgPj4gdGFwLnBjCisJQGVjaG8gJ1ZlcnNpb246IDAuMS4wJyA+PiB0YXAu cGMKKwlAZWNobyAnVVJMOiBodHRwczovL2dpdGh1Yi5jb20vem9yZ25heC9saWJ0YXAnID4+ IHRhcC5wYworCUBlY2hvICdMaWJzOiAtTCQke2xpYmRpcn0gLWx0YXAnID4+IHRhcC5wYwor CUBlY2hvICdDZmxhZ3M6IC1JJCR7aW5jbHVkZWRpcn0nID4+IHRhcC5wYworCitsaWJ0YXAu YTogdGFwLm8KKworbGlidGFwLnNvOiB0YXAubworCit0YXAubzogdGFwLmMgdGFwLmgKKwor dGVzdHM6ICQoVEVTVFMpCisKKyQoVEVTVFMpOiAlOiAlLm8gbGlidGFwLmEKKworJChwYXRz dWJzdCAlLCAlLm8sICQoVEVTVFMpKTogJS5vOiAlLmMgdGFwLmgKKwkkKENDKSAkKENGTEFH UykgLU8wICQoQ1BQRkxBR1MpICQoVEFSR0VUX0FSQ0gpIC1jICQoZmlsdGVyICUuYywgJF4p ICQoTERMSUJTKSAtbyAkQAorCitjbGVhbjoKKwlybSAtcmYgKi5vIHQvKi5vIHRhcC5wYyBs aWJ0YXAuYSBsaWJ0YXAuc28gJChURVNUUykKKworaW5zdGFsbDogbGlidGFwLmEgdGFwLmgg bGlidGFwLnNvIHRhcC5wYworCW1rZGlyIC1wICQoUFJFRklYKS9saWIgJChQUkVGSVgpL2lu Y2x1ZGUgJChQUkVGSVgpL2xpYi9wa2djb25maWcKKwlpbnN0YWxsIC1jIGxpYnRhcC5hICQo UFJFRklYKS9saWIKKwlpbnN0YWxsIC1jIGxpYnRhcC5zbyAkKFBSRUZJWCkvbGliCisJaW5z dGFsbCAtYyB0YXAucGMgJChQUkVGSVgpL2xpYi9wa2djb25maWcKKwlpbnN0YWxsIC1jIHRh cC5oICQoUFJFRklYKS9pbmNsdWRlCisKK3VuaW5zdGFsbDoKKwlybSAkKFBSRUZJWCkvbGli L2xpYnRhcC5hICQoUFJFRklYKS9saWIvbGlidGFwLnNvICQoUFJFRklYKS9pbmNsdWRlL3Rh cC5oCisKK2Rpc3Q6CisJcm0gbGlidGFwLnppcAorCXppcCAtciBsaWJ0YXAgKgorCitjaGVj ayB0ZXN0OiBhbGwKKwkuL3QvdGVzdAorCisuUEhPTlk6IGFsbCBjbGVhbiBpbnN0YWxsIHVu aW5zdGFsbCBkaXN0IGNoZWNrIHRlc3QgdGVzdHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xp YnRhcC9NYWtlZmlsZS53aW4gYi9zcmMvdGVzdC9saWJ0YXAvTWFrZWZpbGUud2luCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42OTRkNjc5YTFiMQotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZS53aW4KQEAgLTAsMCArMSwz NyBAQAorQ0ZMQUdTID0gL1ppIC9XYWxsIC93ZDQyNTUgL3dkNDk5NiAvd2Q0MTI3IC93ZDQ4 MjAgL3dkNDEwMCAvd2Q0NjE5IFwKKwkJIC93ZDQ1MTQgL3dkNDY2OCAvSS4KK0NDID0gY2wg L25vbG9nbworVEVTVFMgPSAkKHBhdHN1YnN0ICUuYywgJS5leGUsICQod2lsZGNhcmQgdC8q LmMpKQorCislLmV4ZToKKwkkKENDKSAkKExERkxBR1MpICQoZmlsdGVyICUub2JqICUubGli ICUuZGxsLCAkXikgJChMRExJQlMpIC9GZSAkQAorCislLm86CisJJChDQykgJChDRkxBR1Mp ICQoQ1BQRkxBR1MpIC9jICQoZmlsdGVyICUuYywgJF4pICQoTERMSUJTKSAvRm8gJEAKKwor JS5saWI6CisJbGliIC9ub2xvZ28gL291dDokQCAkKGZpbHRlciAlLm9iaiwgJF4pCisKKyUu ZGxsOgorCWxpYiAvbm9sb2dvIC9vdXQ6JEAgJChmaWx0ZXIgJS5vYmosICReKQorCithbGw6 IHRhcC5saWIgdGVzdHMKKwordGFwLmxpYjogdGFwLm9iagorCit0YXAub2JqOiB0YXAuYyB0 YXAuaAorCit0ZXN0czogJChURVNUUykKKworJChURVNUUyk6ICUuZXhlOiAlLm9iaiB0YXAu bGliCisKKyQocGF0c3Vic3QgJS5leGUsICUub2JqLCAkKFRFU1RTKSk6ICUub2JqOiAlLmMg dGFwLmgKKworY2xlYW46CisJcm0gLXJmICoub2JqIHQvKi5vYmogdGFwLmxpYiAkKFRFU1RT KQorCitjaGVjayB0ZXN0OiBhbGwKKwlwcm92ZQorCisuUEhPTlk6IGFsbCBjbGVhbiBjaGVj ayB0ZXN0IHRlc3RzCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC9SRUFETUUubWQg Yi9zcmMvdGVzdC9saWJ0YXAvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi41MzMyZDUyNmMwOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L2xpYnRhcC9SRUFETUUubWQKQEAgLTAsMCArMSwyNjggQEAKK05BTUUKKz09PT0KKworbGli dGFwIC0gV3JpdGUgdGVzdHMgaW4gQworCitTWU5PUFNJUworPT09PT09PT0KKworICAgICNp bmNsdWRlIDx0YXAuaD4KKworICAgIGludCBtYWluICgpIHsKKyAgICAgICAgcGxhbig1KTsK KyAgICAgICAgaW50IGJyb256ZSA9IDEsIHNpbHZlciA9IDIsIGdvbGQgPSAzOworICAgICAg ICBvayhicm9uemUgPCBzaWx2ZXIsICJicm9uemUgaXMgbGVzcyB0aGFuIHNpbHZlciIpOwor ICAgICAgICBvayhicm9uemUgPiBzaWx2ZXIsICJub3QgcXVpdGUiKTsKKyAgICAgICAgaXMo ImdvbGQiLCAiZ29sZCIsICJnb2xkIGlzIGdvbGQiKTsKKyAgICAgICAgY21wX29rKHNpbHZl ciwgIjwiLCBnb2xkLCAiJWQgPD0gJWQiLCBzaWx2ZXIsIGdvbGQpOworICAgICAgICBsaWtl KCJwbGF0aW51bSIsICIuKmludW0iLCAicGxhdGludW0gbWF0Y2hlcyAuKmludW0iKTsKKyAg ICAgICAgZG9uZV90ZXN0aW5nKCk7CisgICAgfQorCityZXN1bHRzIGluOgorCisgICAgMS4u NQorICAgIG9rIDEgLSBicm9uemUgaXMgbGVzcyB0aGFuIHNpbHZlcgorICAgIG5vdCBvayAy IC0gbm90IHF1aXRlCisgICAgIyAgIEZhaWxlZCB0ZXN0ICdub3QgcXVpdGUnCisgICAgIyAg IGF0IHQvc3lub3BzaXMuYyBsaW5lIDcuCisgICAgb2sgMyAtIGdvbGQgaXMgZ29sZAorICAg IG9rIDQgLSAyIDw9IDMKKyAgICBvayA1IC0gcGxhdGludW0gbWF0Y2hlcyAuKmludW0KKyAg ICAjIExvb2tzIGxpa2UgeW91IGZhaWxlZCAxIHRlc3Qgb2YgNSBydW4uCisKK0RFU0NSSVBU SU9OCis9PT09PT09PT09PQorCit0YXAgaXMgYW4gZWFzeSB0byByZWFkIGFuZCBlYXN5IHRv IHdyaXRlIHdheSBvZiBjcmVhdGluZyB0ZXN0cyBmb3IKK3lvdXIgc29mdHdhcmUuIFRoaXMg bGlicmFyeSBjcmVhdGVzIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvCitnZW5lcmF0 ZSBpdCBmb3IgeW91ciBDIHByb2dyYW1zLiBJdCBpcyBpbXBsZW1lbnRlZCB1c2luZyBtYWNy b3MKK3RoYXQgaW5jbHVkZSBmaWxlIGFuZCBsaW5lIGluZm8gYXV0b21hdGljYWxseSwgYW5k IG1ha2VzIGl0IHNvIHRoYXQKK3RoZSBmb3JtYXQgbWVzc2FnZSBvZiBlYWNoIHRlc3QgaXMg b3B0aW9uYWwuIEl0IGlzIG1vc3RseSBiYXNlZCBvbgordGhlIFRlc3Q6Ok1vcmUgUGVybCBt b2R1bGUuCisKK0lOU1RBTEwKKz09PT09PT0KKworT24gKipVbml4Kiogc3lzdGVtczoKKwor ICAgICQgbWFrZQorICAgICQgbWFrZSBpbnN0YWxsCisKK0ZvciBtb3JlIGRldGFpbGVkIGlu c3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgKGVnLCBmb3IgKipXaW5kb3dzKiopLCBzZWUgYElO U1RBTExgLgorCitGVU5DVElPTlMKKz09PT09PT09PQorCistICAgcGxhbih0ZXN0cykKKy0g ICBwbGFuKE5PX1BMQU4pCistICAgcGxhbihTS0lQX0FMTCk7CistICAgcGxhbihTS0lQX0FM TCwgZm10LCAuLi4pCisKKyAgICBVc2UgdGhpcyB0byBzdGFydCBhIHNlcmllcyBvZiB0ZXN0 cy4gV2hlbiB5b3Uga25vdyBob3cgbWFueSB0ZXN0cyB0aGVyZQorICAgIHdpbGwgYmUsIHlv dSBjYW4gcHV0IGEgbnVtYmVyIGFzIGEgbnVtYmVyIG9mIHRlc3RzIHlvdSBleHBlY3QgdG8g cnVuLiBJZgorICAgIHlvdSBkbyBub3Qga25vdyBob3cgbWFueSB0ZXN0cyB0aGVyZSB3aWxs IGJlLCB5b3UgY2FuIHVzZSBwbGFuKE5PX1BMQU4pCisgICAgb3Igbm90IGNhbGwgdGhpcyBm dW5jdGlvbi4gV2hlbiB5b3UgcGFzcyBpdCBhIG51bWJlciBvZiB0ZXN0cyB0byBydW4sIGEK KyAgICBtZXNzYWdlIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZyB3aWxsIGFwcGVhciBpbiB0 aGUgb3V0cHV0OgorCisgICAgICAgIDEuLjUKKworICAgIElmIHlvdSBwYXNzIGl0IFNLSVBf QUxMLCB0aGUgd2hvbGUgdGVzdCB3aWxsIGJlIHNraXBwZWQuCisKKy0gICBvayh0ZXN0KQor LSAgIG9rKHRlc3QsIGZtdCwgLi4uKQorCisgICAgU3BlY2lmeSBhIHRlc3QuIHRoZSB0ZXN0 IGNhbiBiZSBhbnkgc3RhdGVtZW50IHJldHVybmluZyBhIHRydWUgb3IgZmFsc2UKKyAgICB2 YWx1ZS4gWW91IG1heSBvcHRpb25hbGx5IHBhc3MgYSBmb3JtYXQgc3RyaW5nIGRlc2NyaWJp bmcgdGhlIHRlc3QuCisKKyAgICAgICAgb2sociA9IHJlYWRlcl9uZXcoIk9mIE1pY2UgYW5k IE1lbiIpLCAiY3JlYXRlIGEgbmV3IHJlYWRlciIpOworICAgICAgICBvayhyZWFkZXJfZ29f dG9fcGFnZShyLCA1NSksICJjYW4gdHVybiB0aGUgcGFnZSIpOworICAgICAgICBvayhyLT5w YWdlID09IDU1LCAicGFnZSB0dXJuZWQgdG8gdGhlIHJpZ2h0IG9uZSIpOworCisgICAgU2hv dWxkIHByaW50IG91dDoKKworICAgICAgICBvayAxIC0gY3JlYXRlIGEgbmV3IHJlYWRlcgor ICAgICAgICBvayAyIC0gY2FuIHR1cm4gdGhlIHBhZ2UKKyAgICAgICAgb2sgMyAtIHBhZ2Ug dHVybmVkIHRvIHRoZSByaWdodCBvbmUKKworICAgIE9uIGZhaWx1cmUsIGEgZGlhZ25vc3Rp YyBtZXNzYWdlIHdpbGwgYmUgcHJpbnRlZCBvdXQuCisKKyAgICAgICAgbm90IG9rIDMgLSBw YWdlIHR1cm5lZCB0byB0aGUgcmlnaHQgb25lCisgICAgICAgICMgICBGYWlsZWQgdGVzdCAn cGFnZSB0dXJuZWQgdG8gdGhlIHJpZ2h0IG9uZScKKyAgICAgICAgIyAgIGF0IHJlYWRlci5j IGxpbmUgMTMuCisKKy0gICBpcyhnb3QsIGV4cGVjdGVkKQorLSAgIGlzKGdvdCwgZXhwZWN0 ZWQsIGZtdCwgLi4uKQorLSAgIGlzbnQoZ290LCB1bmV4cGVjdGVkKQorLSAgIGlzbnQoZ290 LCB1bmV4cGVjdGVkLCBmbXQsIC4uLikKKworICAgIFRlc3RzIHRoYXQgdGhlIHN0cmluZyB5 b3UgZ290IGlzIHdoYXQgeW91IGV4cGVjdGVkLiB3aXRoIGlzbnQsIGl0IGlzIHRoZQorICAg IHJldmVyc2UuCisKKyAgICAgICAgaXMoInRoaXMiLCAidGhhdCIsICJ0aGlzIGlzIHRoYXQi KTsKKworICAgIHByaW50czoKKworICAgICAgICBub3Qgb2sgMSAtIHRoaXMgaXMgdGhhdAor ICAgICAgICAjICAgRmFpbGVkIHRlc3QgJ3RoaXMgaXMgdGhhdCcKKyAgICAgICAgIyAgIGF0 IGlzLmMgbGluZSA2LgorICAgICAgICAjICAgICAgICAgIGdvdDogJ3RoaXMnCisgICAgICAg ICMgICAgIGV4cGVjdGVkOiAndGhhdCcKKworLSAgIGNtcF9vayhhLCBvcCwgYikKKy0gICBj bXBfb2soYSwgb3AsIGIsIGZtdCwgLi4uKQorCisgICAgQ29tcGFyZXMgdHdvIGludHMgd2l0 aCBhbnkgYmluYXJ5IG9wZXJhdG9yIHRoYXQgZG9lc24ndCByZXF1aXJlIGFuIGx2YWx1ZS4K KyAgICBUaGlzIGlzIG5pY2UgdG8gdXNlIHNpbmNlIGl0IHByb3ZpZGVzIGEgYmV0dGVyIGVy cm9yIG1lc3NhZ2UgdGhhbiBhbgorICAgIGVxdWl2YWxlbnQgb2suCisKKyAgICAgICAgY21w X29rKDQyMCwgIj4iLCA2NjYpOworCisgICAgcHJpbnRzOgorCisgICAgICAgIG5vdCBvayAx CisgICAgICAgICMgICBGYWlsZWQgdGVzdCBhdCBjbXBvay5jIGxpbmUgNS4KKyAgICAgICAg IyAgICAgNDIwCisgICAgICAgICMgICAgICAgICA+CisgICAgICAgICMgICAgIDY2NgorCist ICAgY21wX21lbShnb3QsIGV4cGVjdGVkLCBuKQorLSAgIGNtcF9tZW0oZ290LCBleHBlY3Rl ZCwgbiwgZm10LCAuLi4pCisKKyAgICBUZXN0cyB0aGF0IHRoZSBmaXJzdCBuIGJ5dGVzIG9m IHRoZSBtZW1vcnkgeW91IGdvdCBpcyB3aGF0IHlvdSBleHBlY3RlZC4KKyAgICBOVUxMIHBv aW50ZXJzIGZvciBnb3QgYW5kIGV4cGVjdGVkIGFyZSBoYW5kbGVkIChpZiBlaXRoZXIgaXMg TlVMTCwKKyAgICB0aGUgdGVzdCBmYWlscyksIGJ1dCB5b3UgbmVlZCB0byBlbnN1cmUgbiBp cyBub3QgdG9vIGxhcmdlLgorCisgICAgICAgIGNoYXIgKmEgPSAiZm9vIjsKKyAgICAgICAg Y2hhciAqYiA9ICJiYXIiOworICAgICAgICBjbXBfbWVtKGEsIGIsIDMpCisKKyAgICBwcmlu dHMKKworICAgICAgICBub3Qgb2sgMQorICAgICAgICAjICAgRmFpbGVkIHRlc3QgYXQgdC9j bXBfbWVtLmMgbGluZSA5LgorICAgICAgICAjICAgICBEaWZmZXJlbmNlIHN0YXJ0cyBhdCBv ZmZzZXQgMAorICAgICAgICAjICAgICAgICAgIGdvdDogMHg2NgorICAgICAgICAjICAgICBl eHBlY3RlZDogMHg2MgorCistICAgbGlrZShnb3QsIGV4cGVjdGVkKQorLSAgIGxpa2UoZ290 LCBleHBlY3RlZCwgZm10LCAuLi4pCistICAgdW5saWtlKGdvdCwgdW5leHBlY3RlZCkKKy0g ICB1bmxpa2UoZ290LCB1bmV4cGVjdGVkLCBmbXQsIC4uLikKKworICAgIFRlc3RzIHRoYXQg dGhlIHN0cmluZyB5b3UgZ290IG1hdGNoZXMgdGhlIGV4cGVjdGVkIGV4dGVuZGVkIFBPU0lY IHJlZ2V4LgorICAgIHVubGlrZSBpcyB0aGUgcmV2ZXJzZS4gVGhlc2UgbWFjcm9zIGFyZSB0 aGUgZXF1aXZhbGVudCBvZiBhIHNraXAgb24KKyAgICBXaW5kb3dzLgorCisgICAgICAgIGxp a2UoInN0cmFuZ2VyIiwgIl5zLihyKS4qXFwxJCIsICJtYXRjaGVzIHRoZSByZWdleCIpOwor CisgICAgcHJpbnRzOgorCisgICAgICAgIG9rIDEgLSBtYXRjaGVzIHRoZSByZWdleAorCist ICAgcGFzcygpCistICAgcGFzcyhmbXQsIC4uLikKKy0gICBmYWlsKCkKKy0gICBmYWlsKGZt dCwgLi4uKQorCisgICAgU3BlY2l5IHRoYXQgYSB0ZXN0IHN1Y2NlZWRlZCBvciBmYWlsZWQu IFVzZSB0aGVzZSB3aGVuIHRoZSBzdGF0ZW1lbnQgaXMKKyAgICBsb25nZXIgdGhhbiB5b3Ug Y2FuIGZpdCBpbnRvIHRoZSBhcmd1bWVudCBnaXZlbiB0byBhbiBvaygpIHRlc3QuCisKKy0g ICBkaWVzX29rKGNvZGUpCistICAgZGllc19vayhjb2RlLCBmbXQsIC4uLikKKy0gICBsaXZl c19vayhjb2RlKQorLSAgIGxpdmVzX29rKGNvZGUsIGZtdCwgLi4uKQorCisgICAgVGVzdHMg d2hldGhlciB0aGUgZ2l2ZW4gY29kZSBjYXVzZXMgeW91ciBwcm9ncmFtIHRvIGV4aXQuIFRo ZSBjb2RlIGdldHMKKyAgICBwYXNzZWQgdG8gYSBtYWNybyB0aGF0IHdpbGwgdGVzdCBpdCBp biBhIGZvcmtlZCBwcm9jZXNzLiBJZiB0aGUgY29kZQorICAgIHN1Y2NlZWRzIGl0IHdpbGwg YmUgZXhlY3V0ZWQgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiBZb3UgY2FuIHRlc3QgdGhpbmdz CisgICAgbGlrZSBwYXNzaW5nIGEgZnVuY3Rpb24gYSBudWxsIHBvaW50ZXIgYW5kIG1ha2Ug c3VyZSBpdCBkb2VzbnQKKyAgICBkZXJlZmVyZW5jZSBpdCBhbmQgY3Jhc2guCisKKyAgICAg ICAgZGllc19vayh7YWJvcnQoKTt9LCAiYWJvcnQgZG9lcyBjbG9zZSB5b3VyIHByb2dyYW0i KTsKKyAgICAgICAgZGllc19vayh7aW50IHggPSAwLzA7fSwgImRpdmlkZSBieSB6ZXJvIGNy YXNoIik7CisgICAgICAgIGxpdmVzX29rKHtwb3coMy4wLCA1LjApO30sICJub3RoaW5nIHdy b25nIHdpdGggdGFraW5nIDMqKjUiKTsKKworICAgIE9uIFdpbmRvd3MsIHRoZXNlIG1hY3Jv cyBhcmUgdGhlIGVxdWl2YWxlbnQgb2YgYSBza2lwLgorCistICAgZG9uZV90ZXN0aW5nKCkK KworICAgIFN1bW1hcml6ZXMgdGhlIHRlc3RzIHRoYXQgb2NjdXJyZWQgYW5kIGV4aXRzIHRo ZSBtYWluIGZ1bmN0aW9uLiBJZgorICAgIHRoZXJlIHdhcyBubyBwbGFuLCBpdCB3aWxsIHBy aW50IG91dCB0aGUgbnVtYmVyIG9mIHRlc3RzIGFzLgorCisgICAgICAgIDEuLjUKKworICAg IEl0IHdpbGwgYWxzbyBwcmludCBhIGRpYWdub3N0aWMgbWVzc2FnZSBhYm91dCBob3cgbWFu eQorICAgIGZhaWx1cmVzIHRoZXJlIHdlcmUuCisKKyAgICAgICAgIyBMb29rcyBsaWtlIHlv dSBmYWlsZWQgMiB0ZXN0cyBvZiAzIHJ1bi4KKworICAgIElmIGFsbCBwbGFubmVkIHRlc3Rz IHdlcmUgc3VjY2Vzc2Z1bCwgaXQgd2lsbCByZXR1cm4gMC4gSWYgYW55CisgICAgdGVzdCBm YWlscywgaXQgd2lsbCByZXR1cm4gMS4gSWYgdGhleSBhbGwgcGFzc2VkLCBidXQgdGhlcmUK KyAgICB3ZXJlIG1pc3NpbmcgdGVzdHMsIGl0IHdpbGwgcmV0dXJuIDIuCisKKy0gICBkaWFn KGZtdCwgLi4uKQorCisgICAgcHJpbnQgb3V0IGEgbWVzc2FnZSB0byB0aGUgdGFwIG91dHB1 dCBvbiBzdGRvdXQuIEVhY2ggbGluZSBpcworICAgIHByZWNlZWRlZCBieSBhICIjICIgc28g dGhhdCB5b3Uga25vdyBpdHMgYSBkaWFnbm9zdGljIG1lc3NhZ2UuCisKKyAgICAgICAgZGlh ZygiVGhpcyBpc1xuYSBkaWFnXG50byBkZXNjcmliZVxuc29tZXRoaW5nLiIpOworCisgICAg cHJpbnRzOgorCisgICAgICAgICMgVGhpcyBpcworICAgICAgICAjIGEgZGlhZworICAgICAg ICAjIHRvIGRlc2NyaWJlCisgICAgICAgICMgc29tZXRoaW5nCisKKyAgICBvaygpIGFuZCB0 aGlzIGZ1bmN0aW9uIHJldHVybiBhbiBpbnQgc28geW91IGNhbiB1c2UgaXQgbGlrZToKKwor ICAgICAgICBvaygwKSB8fCBkaWFnKCJkb2ghIik7CisKKy0gICBza2lwKHRlc3QsIG4pCist ICAgc2tpcCh0ZXN0LCBuLCBmbXQsIC4uLikKKy0gICBlbmRfc2tpcAorCisgICAgU2tpcCBh IHNlcmllcyBvZiBuIHRlc3RzIGlmIHRlc3QgaXMgdHJ1ZS4gWW91IG1heSBnaXZlIGEgcmVh c29uIHdoeSB5b3UgYXJlCisgICAgc2tpcHBpbmcgdGhlbSBvciBub3QuIFRoZSAocG9zc2li bHkpIHNraXBwZWQgdGVzdHMgbXVzdCBvY2N1ciBiZXR3ZWVuIHRoZQorICAgIHNraXAgYW5k IGVuZF9za2lwIG1hY3Jvcy4KKworICAgICAgICBza2lwKFRSVUUsIDIpOworICAgICAgICBv aygxKTsKKyAgICAgICAgb2soMCk7CisgICAgICAgIGVuZF9za2lwOworCisgICAgcHJpbnRz OgorCisgICAgICAgIG9rIDEgIyBza2lwCisgICAgICAgIG9rIDIgIyBza2lwCisKKy0gICB0 b2RvKCkKKy0gICB0b2RvKGZtdCwgLi4uKQorLSAgIGVuZF90b2RvCisKKyAgICBTcGVjaWZp ZXMgYSBzZXJpZXMgb2YgdGVzdHMgdGhhdCB5b3UgZXhwZWN0IHRvIGZhaWwgYmVjYXVzZSB0 aGV5IGFyZSBub3QKKyAgICB5ZXQgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgdG9kbygpCisg ICAgICAgIG9rKDApOworICAgICAgICBlbmRfdG9kbzsKKworICAgIHByaW50czoKKworICAg ICAgICBub3Qgb2sgMSAjIFRPRE8KKyAgICAgICAgIyAgIEZhaWxlZCAoVE9ETykgdGVzdCBh dCB0b2RvLmMgbGluZSA3CisKKy0gICBCQUlMX09VVCgpCistICAgQkFJTF9PVVQoZm10LCAu Li4pCisKKyAgICBJbW1lZGlhdGVseSBzdG9wcyBhbGwgdGVzdGluZy4KKworICAgICAgICBC QUlMX09VVCgiQ2FuJ3QgZ28gbm8gZnVydGhlciIpOworCisgICAgcHJpbnRzCisKKyAgICAg ICAgQmFpbCBvdXQhICBDYW4ndCBnbyBubyBmdXJ0aGVyCisKKyAgICBhbmQgZXhpdHMgd2l0 aCAyNTUuCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC90YXAuYyBiL3NyYy90ZXN0 L2xpYnRhcC90YXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZDBkMTQ5ZWM1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9saWJ0YXAvdGFwLmMK QEAgLTAsMCArMSw0MTcgQEAKKy8qCitsaWJ0YXAgLSBXcml0ZSB0ZXN0cyBpbiBDCitDb3B5 cmlnaHQgMjAxMiBKYWtlIEdlbGJtYW4gPGdlbGJtYW5AZ21haWwuY29tPgorVGhpcyBmaWxl IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBMR1BMCisqLworCisjZGVmaW5lIF9ERUZBVUxUX1NP VVJDRSAxCisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAidGFw LmgiCisKKyNpZm5kZWYgX1dJTjMyCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVk ZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKworI2luY2x1ZGUgPHJl Z2V4Lmg+CisKKyNpZm5kZWYgTUFQX0FOT05ZTU9VUworI2lmZGVmIE1BUF9BTk9OCisjZGVm aW5lIE1BUF9BTk9OWU1PVVMgTUFQX0FOT04KKyNlbHNlCisjZXJyb3IgIlN5c3RlbSBkb2Vz IG5vdCBzdXBwb3J0IG1hcHBpbmcgYW5vbnltb3VzIHBhZ2VzIgorI2VuZGlmCisjZW5kaWYK KyNlbmRpZgorCitzdGF0aWMgaW50IGV4cGVjdGVkX3Rlc3RzID0gTk9fUExBTjsKK3N0YXRp YyBpbnQgZmFpbGVkX3Rlc3RzOworc3RhdGljIGludCBjdXJyZW50X3Rlc3Q7CitzdGF0aWMg Y2hhciAqdG9kb19tZXNnOworCitzdGF0aWMgY2hhciAqdnN0cmR1cGYoY29uc3QgY2hhciAq Zm10LCB2YV9saXN0IGFyZ3MpCisJX19hdHRyaWJ1dGVfXygoZm9ybWF0KGdudV9wcmludGYs IDEsIDApKSk7CisKK3ZvaWQgdGFwX3BsYW4oaW50IHRlc3RzLCBjb25zdCBjaGFyICpmbXQs IC4uLikKKwlfX2F0dHJpYnV0ZV9fKChmb3JtYXQoZ251X3ByaW50ZiwgMiwgMykpKTsKKwor aW50IHZva19hdF9sb2MoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGludCB0ZXN0LCBj b25zdCBjaGFyICpmbXQsCisJCQkgICB2YV9saXN0IGFyZ3MpIF9fYXR0cmlidXRlX18oKGZv cm1hdChnbnVfcHJpbnRmLCA0LCAwKSkpOworCitpbnQgb2tfYXRfbG9jKGNvbnN0IGNoYXIg KmZpbGUsIGludCBsaW5lLCBpbnQgdGVzdCwgY29uc3QgY2hhciAqZm10LCAuLi4pCisJX19h dHRyaWJ1dGVfXygoZm9ybWF0KGdudV9wcmludGYsIDQsIDUpKSk7CisKK2ludCBpc19hdF9s b2MoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwgY29uc3Qg Y2hhciAqZXhwZWN0ZWQsCisJCQkgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0 ZV9fKChmb3JtYXQoZ251X3ByaW50ZiwgNSwgNikpKTsKKworaW50IGlzbnRfYXRfbG9jKGNv bnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpnb3QsCisJCQkJY29uc3Qg Y2hhciAqZXhwZWN0ZWQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorCV9fYXR0cmlidXRlX18o KGZvcm1hdChnbnVfcHJpbnRmLCA1LCA2KSkpOworCitpbnQgY21wX29rX2F0X2xvYyhjb25z dCBjaGFyICpmaWxlLCBpbnQgbGluZSwgaW50IGEsIGNvbnN0IGNoYXIgKm9wLCBpbnQgYiwK KwkJCQkgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorCV9fYXR0cmlidXRlX18oKGZvcm1hdChn bnVfcHJpbnRmLCA2LCA3KSkpOworCitpbnQgY21wX21lbV9hdF9sb2MoY29uc3QgY2hhciAq ZmlsZSwgaW50IGxpbmUsIGNvbnN0IHZvaWQgKmdvdCwKKwkJCQkgICBjb25zdCB2b2lkICpl eHBlY3RlZCwgc2l6ZV90IG4sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorCV9fYXR0cmlidXRl X18oKGZvcm1hdChnbnVfcHJpbnRmLCA2LCA3KSkpOworCitpbnQgZGlhZyhjb25zdCBjaGFy ICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KGdudV9wcmludGYsIDEsIDIpKSk7 CisKK2ludCBiYWlsX291dChpbnQgaWdub3JlLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKwlf X2F0dHJpYnV0ZV9fKChmb3JtYXQoZ251X3ByaW50ZiwgMiwgMykpKTsKKwordm9pZCB0YXBf c2tpcChpbnQgbiwgY29uc3QgY2hhciAqZm10LCAuLi4pCisJX19hdHRyaWJ1dGVfXygoZm9y bWF0KGdudV9wcmludGYsIDIsIDMpKSk7CisKK3ZvaWQgdGFwX3RvZG8oaW50IGlnbm9yZSwg Y29uc3QgY2hhciAqZm10LCAuLi4pCisJX19hdHRyaWJ1dGVfXygoZm9ybWF0KGdudV9wcmlu dGYsIDIsIDMpKSk7CisKK2ludCBsaWtlX2F0X2xvYyhpbnQgZm9yX21hdGNoLCBjb25zdCBj aGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZ290LAorCQkJCWNvbnN0IGNoYXIg KmV4cGVjdGVkLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKwlfX2F0dHJpYnV0ZV9fKChmb3Jt YXQoZ251X3ByaW50ZiwgNiwgNykpKTsKKworc3RhdGljIGNoYXIgKgordnN0cmR1cGYoY29u c3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpCit7CisJY2hhciAqc3RyOworCWludCBzaXpl OworCXZhX2xpc3QgYXJnczI7CisJdmFfY29weShhcmdzMiwgYXJncyk7CisJaWYgKCFmbXQp CisJCWZtdCA9ICIiOworCXNpemUgPSB2c25wcmludGYoTlVMTCwgMCwgZm10LCBhcmdzMikg KyAyOworCXN0ciA9IG1hbGxvYyhzaXplKTsKKwlpZiAoIXN0cikgeworCQlwZXJyb3IoIm1h bGxvYyBlcnJvciIpOworCQlleGl0KDEpOworCX0KKwl2c3ByaW50ZihzdHIsIGZtdCwgYXJn cyk7CisJdmFfZW5kKGFyZ3MyKTsKKwlyZXR1cm4gc3RyOworfQorCit2b2lkCit0YXBfcGxh bihpbnQgdGVzdHMsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCWV4cGVjdGVkX3Rlc3Rz ID0gdGVzdHM7CisJaWYgKHRlc3RzID09IFNLSVBfQUxMKSB7CisJCWNoYXIgKndoeTsKKwkJ dmFfbGlzdCBhcmdzOworCQl2YV9zdGFydChhcmdzLCBmbXQpOworCQl3aHkgPSB2c3RyZHVw ZihmbXQsIGFyZ3MpOworCQl2YV9lbmQoYXJncyk7CisJCXByaW50ZigiMS4uMCAiKTsKKwkJ ZGlhZygiU0tJUCAlc1xuIiwgd2h5KTsKKwkJZXhpdCgwKTsKKwl9CisJaWYgKHRlc3RzICE9 IE5PX1BMQU4pIHsKKwkJcHJpbnRmKCIxLi4lZFxuIiwgdGVzdHMpOworCX0KK30KKworaW50 Cit2b2tfYXRfbG9jKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBpbnQgdGVzdCwgY29u c3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpCit7CisJY2hhciAqbmFtZSA9IHZzdHJkdXBm KGZtdCwgYXJncyk7CisJaWYgKCF0ZXN0KSB7CisJCXByaW50Zigibm90ICIpOworCX0KKwlw cmludGYoIm9rICVkIiwgKytjdXJyZW50X3Rlc3QpOworCWlmICgqbmFtZSkKKwkJcHJpbnRm KCIgLSAlcyIsIG5hbWUpOworCWlmICh0b2RvX21lc2cpIHsKKwkJcHJpbnRmKCIgIyBUT0RP Iik7CisJCWlmICgqdG9kb19tZXNnKQorCQkJcHJpbnRmKCIgJXMiLCB0b2RvX21lc2cpOwor CX0KKwlwcmludGYoIlxuIik7CisJaWYgKCF0ZXN0KSB7CisJCXByaW50ZigiIyAgIEZhaWxl ZCAiKTsKKwkJaWYgKHRvZG9fbWVzZykKKwkJCXByaW50ZigiKFRPRE8pICIpOworCQlwcmlu dGYoInRlc3QgIik7CisJCWlmICgqbmFtZSkKKwkJCXByaW50ZigiJyVzJ1xuIyAgICIsIG5h bWUpOworCQlwcmludGYoImF0ICVzIGxpbmUgJWQuXG4iLCBmaWxlLCBsaW5lKTsKKwkJaWYg KCF0b2RvX21lc2cpCisJCQlmYWlsZWRfdGVzdHMrKzsKKwl9CisJZnJlZShuYW1lKTsKKwly ZXR1cm4gdGVzdDsKK30KKworaW50Citva19hdF9sb2MoY29uc3QgY2hhciAqZmlsZSwgaW50 IGxpbmUsIGludCB0ZXN0LCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9saXN0IGFy Z3M7CisJdmFfc3RhcnQoYXJncywgZm10KTsKKwl2b2tfYXRfbG9jKGZpbGUsIGxpbmUsIHRl c3QsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworCXJldHVybiB0ZXN0OworfQorCitz dGF0aWMgaW50CitteXN0cmNtcChjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpiKQorewor CXJldHVybiBhID09IGIgPyAwIDogIWEgPyAtMSA6ICFiID8gMSA6IHN0cmNtcChhLCBiKTsK K30KKworI2RlZmluZSBlcShhLCBiKSAoIW15c3RyY21wKGEsIGIpKQorI2RlZmluZSBuZShh LCBiKSAobXlzdHJjbXAoYSwgYikpCisKK2ludAoraXNfYXRfbG9jKGNvbnN0IGNoYXIgKmZp bGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpnb3QsIGNvbnN0IGNoYXIgKmV4cGVjdGVkLAor CQkgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCWludCB0ZXN0ID0gZXEoZ290LCBleHBl Y3RlZCk7CisJdmFfbGlzdCBhcmdzOworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisJdm9rX2F0 X2xvYyhmaWxlLCBsaW5lLCB0ZXN0LCBmbXQsIGFyZ3MpOworCXZhX2VuZChhcmdzKTsKKwlp ZiAoIXRlc3QpIHsKKwkJZGlhZygiICAgICAgICAgZ290OiAnJXMnIiwgZ290KTsKKwkJZGlh ZygiICAgIGV4cGVjdGVkOiAnJXMnIiwgZXhwZWN0ZWQpOworCX0KKwlyZXR1cm4gdGVzdDsK K30KKworaW50Citpc250X2F0X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29u c3QgY2hhciAqZ290LCBjb25zdCBjaGFyICpleHBlY3RlZCwKKwkJCWNvbnN0IGNoYXIgKmZt dCwgLi4uKQoreworCWludCB0ZXN0ID0gbmUoZ290LCBleHBlY3RlZCk7CisJdmFfbGlzdCBh cmdzOworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisJdm9rX2F0X2xvYyhmaWxlLCBsaW5lLCB0 ZXN0LCBmbXQsIGFyZ3MpOworCXZhX2VuZChhcmdzKTsKKwlpZiAoIXRlc3QpIHsKKwkJZGlh ZygiICAgICAgICAgZ290OiAnJXMnIiwgZ290KTsKKwkJZGlhZygiICAgIGV4cGVjdGVkOiBh bnl0aGluZyBlbHNlIik7CisJfQorCXJldHVybiB0ZXN0OworfQorCitpbnQKK2NtcF9va19h dF9sb2MoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGludCBhLCBjb25zdCBjaGFyICpv cCwgaW50IGIsCisJCQkgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCWludCB0ZXN0ID0g ZXEob3AsICJ8fCIpID8gYSB8fCBiIDoKKwkJZXEob3AsICImJiIpCQk/IGEgJiYgYiA6CisJ CWVxKG9wLCAifCIpCQkJPyBhIHwgYiA6CisJCWVxKG9wLCAiXiIpCQkJPyBhIF4gYiA6CisJ CWVxKG9wLCAiJiIpCQkJPyBhICYgYiA6CisJCWVxKG9wLCAiPT0iKQkJPyBhID09IGIgOgor CQllcShvcCwgIiE9IikJCT8gYSAhPSBiIDoKKwkJZXEob3AsICI8IikJCQk/IGEgPCBiIDoK KwkJZXEob3AsICI+IikJCQk/IGEgPiBiIDoKKwkJZXEob3AsICI8PSIpCQk/IGEgPD0gYiA6 CisJCWVxKG9wLCAiPj0iKQkJPyBhID49IGIgOgorCQllcShvcCwgIjw8IikJCT8gYSA8PCBi IDoKKwkJZXEob3AsICI+PiIpCQk/IGEgPj4gYiA6CisJCWVxKG9wLCAiKyIpCQkJPyBhICsg YiA6CisJCWVxKG9wLCAiLSIpCQkJPyBhIC0gYiA6CisJCWVxKG9wLCAiKiIpCQkJPyBhICog YiA6CisJCWVxKG9wLCAiLyIpCQkJPyBhIC8gYiA6CisJCWVxKG9wLCAiJSIpCQkJPyBhICUg YiA6CisJCQkJCQkJICBkaWFnKCJ1bnJlY29nbml6ZWQgb3BlcmF0b3IgJyVzJyIsIG9wKTsK Kwl2YV9saXN0IGFyZ3M7CisJdmFfc3RhcnQoYXJncywgZm10KTsKKwl2b2tfYXRfbG9jKGZp bGUsIGxpbmUsIHRlc3QsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworCWlmICghdGVz dCkgeworCQlkaWFnKCIgICAgJWQiLCBhKTsKKwkJZGlhZygiICAgICAgICAlcyIsIG9wKTsK KwkJZGlhZygiICAgICVkIiwgYik7CisJfQorCXJldHVybiB0ZXN0OworfQorCitzdGF0aWMg aW50CitmaW5kX21lbV9kaWZmKGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIsIHNpemVf dCBuLCBzaXplX3QgKm9mZnNldCkKK3sKKwlzaXplX3QgaTsKKwlpZiAoYSA9PSBiKQorCQly ZXR1cm4gMDsKKwlpZiAoIWEgfHwgIWIpCisJCXJldHVybiAyOworCWZvciAoaSA9IDA7IGkg PCBuOyBpKyspIHsKKwkJaWYgKGFbaV0gIT0gYltpXSkgeworCQkJKm9mZnNldCA9IGk7CisJ CQlyZXR1cm4gMTsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworaW50CitjbXBfbWVtX2F0 X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3Qgdm9pZCAqZ290LAorCQkJ ICAgY29uc3Qgdm9pZCAqZXhwZWN0ZWQsIHNpemVfdCBuLCBjb25zdCBjaGFyICpmbXQsIC4u LikKK3sKKwlzaXplX3Qgb2Zmc2V0OworCWludCBkaWZmID0gZmluZF9tZW1fZGlmZihnb3Qs IGV4cGVjdGVkLCBuLCAmb2Zmc2V0KTsKKwl2YV9saXN0IGFyZ3M7CisJdmFfc3RhcnQoYXJn cywgZm10KTsKKwl2b2tfYXRfbG9jKGZpbGUsIGxpbmUsICFkaWZmLCBmbXQsIGFyZ3MpOwor CXZhX2VuZChhcmdzKTsKKwlpZiAoZGlmZiA9PSAxKSB7CisJCWRpYWcoIiAgICBEaWZmZXJl bmNlIHN0YXJ0cyBhdCBvZmZzZXQgJWx1Iiwgb2Zmc2V0KTsKKwkJZGlhZygiICAgICAgICAg Z290OiAweCUwMngiLCAoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilnb3QpW29mZnNldF0pOwor CQlkaWFnKCIgICAgZXhwZWN0ZWQ6IDB4JTAyeCIsICgoY29uc3QgdW5zaWduZWQgY2hhciAq KWV4cGVjdGVkKVtvZmZzZXRdKTsKKwl9IGVsc2UgaWYgKGRpZmYgPT0gMikgeworCQlkaWFn KCIgICAgICAgICBnb3Q6ICVzIiwgZ290ID8gIm5vdCBOVUxMIiA6ICJOVUxMIik7CisJCWRp YWcoIiAgICBleHBlY3RlZDogJXMiLCBleHBlY3RlZCA/ICJub3QgTlVMTCIgOiAiTlVMTCIp OworCX0KKwlyZXR1cm4gIWRpZmY7Cit9CisKK2ludAorZGlhZyhjb25zdCBjaGFyICpmbXQs IC4uLikKK3sKKwl2YV9saXN0IGFyZ3M7CisJY2hhciAqbWVzZywgKmxpbmU7CisJaW50IGk7 CisJdmFfc3RhcnQoYXJncywgZm10KTsKKwlpZiAoIWZtdCkgeworCQl2YV9lbmQoYXJncyk7 CisJCXJldHVybiAwOworCX0KKwltZXNnID0gdnN0cmR1cGYoZm10LCBhcmdzKTsKKwlsaW5l ID0gbWVzZzsKKwlmb3IgKGkgPSAwOyAqbGluZTsgaSsrKSB7CisJCWNoYXIgYyA9IG1lc2db aV07CisJCWlmICghYyB8fCBjID09ICdcbicpIHsKKwkJCW1lc2dbaV0gPSAnXDAnOworCQkJ cHJpbnRmKCIjICVzXG4iLCBsaW5lKTsKKwkJCWlmICghYykKKwkJCQlicmVhazsKKwkJCW1l c2dbaV0gPSBjOworCQkJbGluZSA9IG1lc2cgKyBpICsgMTsKKwkJfQorCX0KKwlmcmVlKG1l c2cpOworCXZhX2VuZChhcmdzKTsKKwlyZXR1cm4gMDsKK30KKworaW50CitleGl0X3N0YXR1 cyh2b2lkKQoreworCWludCByZXR2YWwgPSAwOworCWlmIChleHBlY3RlZF90ZXN0cyA9PSBO T19QTEFOKSB7CisJCXByaW50ZigiMS4uJWRcbiIsIGN1cnJlbnRfdGVzdCk7CisJfSBlbHNl IGlmIChjdXJyZW50X3Rlc3QgIT0gZXhwZWN0ZWRfdGVzdHMpIHsKKwkJZGlhZygiTG9va3Mg bGlrZSB5b3UgcGxhbm5lZCAlZCB0ZXN0JXMgYnV0IHJhbiAlZC4iLCBleHBlY3RlZF90ZXN0 cywKKwkJCSBleHBlY3RlZF90ZXN0cyA+IDEgPyAicyIgOiAiIiwgY3VycmVudF90ZXN0KTsK KwkJcmV0dmFsID0gMjsKKwl9CisJaWYgKGZhaWxlZF90ZXN0cykgeworCQlkaWFnKCJMb29r cyBsaWtlIHlvdSBmYWlsZWQgJWQgdGVzdCVzIG9mICVkIHJ1bi4iLCBmYWlsZWRfdGVzdHMs CisJCQkgZmFpbGVkX3Rlc3RzID4gMSA/ICJzIiA6ICIiLCBjdXJyZW50X3Rlc3QpOworCQly ZXR2YWwgPSAxOworCX0KKwlyZXR1cm4gcmV0dmFsOworfQorCitpbnQKK2JhaWxfb3V0KGlu dCBpZ25vcmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCXZhX2xpc3QgYXJnczsKKwko dm9pZClpZ25vcmU7CisJdmFfc3RhcnQoYXJncywgZm10KTsKKwlwcmludGYoIkJhaWwgb3V0 ISAgIik7CisJdnByaW50ZihmbXQsIGFyZ3MpOworCXByaW50ZigiXG4iKTsKKwl2YV9lbmQo YXJncyk7CisJZXhpdCgyNTUpOworCXJldHVybiAwOworfQorCit2b2lkCit0YXBfc2tpcChp bnQgbiwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJY2hhciAqd2h5OworCXZhX2xpc3Qg YXJnczsKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCXdoeSA9IHZzdHJkdXBmKGZtdCwgYXJn cyk7CisJdmFfZW5kKGFyZ3MpOworCXdoaWxlIChuLS0gPiAwKSB7CisJCXByaW50Zigib2sg JWQgIiwgKytjdXJyZW50X3Rlc3QpOworCQlkaWFnKCJza2lwICVzXG4iLCB3aHkpOworCX0K KwlmcmVlKHdoeSk7Cit9CisKK3ZvaWQKK3RhcF90b2RvKGludCBpZ25vcmUsIGNvbnN0IGNo YXIgKmZtdCwgLi4uKQoreworCXZhX2xpc3QgYXJnczsKKwkodm9pZClpZ25vcmU7CisJdmFf c3RhcnQoYXJncywgZm10KTsKKwl0b2RvX21lc2cgPSB2c3RyZHVwZihmbXQsIGFyZ3MpOwor CXZhX2VuZChhcmdzKTsKK30KKwordm9pZAordGFwX2VuZF90b2RvKHZvaWQpCit7CisJZnJl ZSh0b2RvX21lc2cpOworCXRvZG9fbWVzZyA9IE5VTEw7Cit9CisKKyNpZm5kZWYgX1dJTjMy CisvKiBDcmVhdGUgYSBzaGFyZWQgbWVtb3J5IGludCB0byBrZWVwIHRyYWNrIG9mIHdoZXRo ZXIgYSBwaWVjZSBvZiBjb2RlIGV4ZWN1dGVkCitkaWVzLiB0byBiZSB1c2VkIGluIHRoZSBk aWVzX29rIGFuZCBsaXZlc19vayBtYWNyb3MuICAqLworaW50Cit0YXBfdGVzdF9kaWVkKGlu dCBzdGF0dXMpCit7CisJc3RhdGljIGludCAqdGVzdF9kaWVkID0gTlVMTDsKKwlpbnQgcHJl djsKKwlpZiAoIXRlc3RfZGllZCkgeworCQl0ZXN0X2RpZWQgPSBtbWFwKDAsIHNpemVvZihp bnQpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorCQkJCQkJIE1BUF9TSEFSRUQgfCBNQVBf QU5PTllNT1VTLCAtMSwgMCk7CisJCSp0ZXN0X2RpZWQgPSAwOworCX0KKwlwcmV2ID0gKnRl c3RfZGllZDsKKwkqdGVzdF9kaWVkID0gc3RhdHVzOworCXJldHVybiBwcmV2OworfQorCitp bnQKK2xpa2VfYXRfbG9jKGludCBmb3JfbWF0Y2gsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBs aW5lLCBjb25zdCBjaGFyICpnb3QsCisJCQljb25zdCBjaGFyICpleHBlY3RlZCwgY29uc3Qg Y2hhciAqZm10LCAuLi4pCit7CisJaW50IHRlc3Q7CisJcmVnZXhfdCByZTsKKwl2YV9saXN0 IGFyZ3M7CisJaW50IGVyciA9IHJlZ2NvbXAoJnJlLCBleHBlY3RlZCwgUkVHX0VYVEVOREVE KTsKKwlpZiAoZXJyKSB7CisJCWNoYXIgZXJyYnVmWzI1Nl07CisJCXJlZ2Vycm9yKGVyciwg JnJlLCBlcnJidWYsIHNpemVvZiBlcnJidWYpOworCQlmcHJpbnRmKHN0ZGVyciwgIlVuYWJs ZSB0byBjb21waWxlIHJlZ2V4ICclcyc6ICVzIGF0ICVzIGxpbmUgJWRcbiIsCisJCQkJZXhw ZWN0ZWQsIGVycmJ1ZiwgZmlsZSwgbGluZSk7CisJCWV4aXQoMjU1KTsKKwl9CisJZXJyID0g cmVnZXhlYygmcmUsIGdvdCwgMCwgTlVMTCwgMCk7CisJcmVnZnJlZSgmcmUpOworCXRlc3Qg PSBmb3JfbWF0Y2ggPyAhZXJyIDogZXJyOworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisJdm9r X2F0X2xvYyhmaWxlLCBsaW5lLCB0ZXN0LCBmbXQsIGFyZ3MpOworCXZhX2VuZChhcmdzKTsK KwlpZiAoIXRlc3QpIHsKKwkJaWYgKGZvcl9tYXRjaCkgeworCQkJZGlhZygiICAgICAgICAg ICAgICAgICAgICclcyciLCBnb3QpOworCQkJZGlhZygiICAgIGRvZXNuJ3QgbWF0Y2g6ICcl cyciLCBleHBlY3RlZCk7CisJCX0gZWxzZSB7CisJCQlkaWFnKCIgICAgICAgICAgICAgICAg ICAgJyVzJyIsIGdvdCk7CisJCQlkaWFnKCIgICAgICAgICAgbWF0Y2hlczogJyVzJyIsIGV4 cGVjdGVkKTsKKwkJfQorCX0KKwlyZXR1cm4gdGVzdDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbGlidGFwL3RhcC5oIGIvc3JjL3Rlc3QvbGlidGFwL3RhcC5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lMzY2YTZhZmZkYwotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L2xpYnRhcC90YXAuaApAQCAtMCwwICsxLDExNSBAQAor LyoKK2xpYnRhcCAtIFdyaXRlIHRlc3RzIGluIEMKK0NvcHlyaWdodCAyMDEyIEpha2UgR2Vs Ym1hbiA8Z2VsYm1hbkBnbWFpbC5jb20+CitUaGlzIGZpbGUgaXMgbGljZW5zZWQgdW5kZXIg dGhlIExHUEwKKyovCisKKyNpZm5kZWYgX19UQVBfSF9fCisjZGVmaW5lIF9fVEFQX0hfXwor CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNpZm5kZWYg dmFfY29weQorI2lmZGVmIF9fdmFfY29weQorI2RlZmluZSB2YV9jb3B5IF9fdmFfY29weQor I2Vsc2UKKyNkZWZpbmUgdmFfY29weShkLCBzKSAoKGQpID0gKHMpKQorI2VuZGlmCisjZW5k aWYKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk ZSA8c3RkYXJnLmg+CisKK2ludCAgICAgdm9rX2F0X2xvYyAgICAgIChjb25zdCBjaGFyICpm aWxlLCBpbnQgbGluZSwgaW50IHRlc3QsIGNvbnN0IGNoYXIgKmZtdCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICB2YV9saXN0IGFyZ3MpOworaW50ICAgICBva19hdF9sb2MgICAgICAg KGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBpbnQgdGVzdCwgY29uc3QgY2hhciAqZm10 LAorICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CitpbnQgICAgIGlzX2F0X2xvYyAg ICAgICAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpleHBlY3RlZCwgY29uc3QgY2hh ciAqZm10LCAuLi4pOworaW50ICAgICBpc250X2F0X2xvYyAgICAgKGNvbnN0IGNoYXIgKmZp bGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpnb3QsCisgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqZXhwZWN0ZWQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK2ludCAg ICAgY21wX29rX2F0X2xvYyAgIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgaW50IGEs IGNvbnN0IGNoYXIgKm9wLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiLCBjb25z dCBjaGFyICpmbXQsIC4uLik7CitpbnQgICAgIGNtcF9tZW1fYXRfbG9jICAoY29uc3QgY2hh ciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IHZvaWQgKmdvdCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB2b2lkICpleHBlY3RlZCwgc2l6ZV90IG4sIGNvbnN0IGNoYXIgKmZt dCwgLi4uKTsKK2ludCAgICAgYmFpbF9vdXQgICAgICAgIChpbnQgaWdub3JlLCBjb25zdCBj aGFyICpmbXQsIC4uLik7Cit2b2lkICAgIHRhcF9wbGFuICAgICAgICAoaW50IHRlc3RzLCBj b25zdCBjaGFyICpmbXQsIC4uLik7CitpbnQgICAgIGRpYWcgICAgICAgICAgICAoY29uc3Qg Y2hhciAqZm10LCAuLi4pOworaW50ICAgICBleGl0X3N0YXR1cyAgICAgKHZvaWQpOwordm9p ZCAgICB0YXBfc2tpcCAgICAgICAgKGludCBuLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cit2 b2lkICAgIHRhcF90b2RvICAgICAgICAoaW50IGlnbm9yZSwgY29uc3QgY2hhciAqZm10LCAu Li4pOwordm9pZCAgICB0YXBfZW5kX3RvZG8gICAgKHZvaWQpOworCisjZGVmaW5lIE5PX1BM QU4gICAgICAgICAgLTEKKyNkZWZpbmUgU0tJUF9BTEwgICAgICAgICAtMgorI2RlZmluZSBv ayguLi4pICAgICAgICAgIG9rX2F0X2xvYyhfX0ZJTEVfXywgX19MSU5FX18sIF9fVkFfQVJH U19fLCBOVUxMKQorI2RlZmluZSBpcyguLi4pICAgICAgICAgIGlzX2F0X2xvYyhfX0ZJTEVf XywgX19MSU5FX18sIF9fVkFfQVJHU19fLCBOVUxMKQorI2RlZmluZSBpc250KC4uLikgICAg ICAgIGlzbnRfYXRfbG9jKF9fRklMRV9fLCBfX0xJTkVfXywgX19WQV9BUkdTX18sIE5VTEwp CisjZGVmaW5lIGNtcF9vayguLi4pICAgICAgY21wX29rX2F0X2xvYyhfX0ZJTEVfXywgX19M SU5FX18sIF9fVkFfQVJHU19fLCBOVUxMKQorI2RlZmluZSBjbXBfbWVtKC4uLikgICAgIGNt cF9tZW1fYXRfbG9jKF9fRklMRV9fLCBfX0xJTkVfXywgX19WQV9BUkdTX18sIE5VTEwpCisj ZGVmaW5lIHBsYW4oLi4uKSAgICAgICAgdGFwX3BsYW4oX19WQV9BUkdTX18sIE5VTEwpCisj ZGVmaW5lIGRvbmVfdGVzdGluZygpICAgcmV0dXJuIGV4aXRfc3RhdHVzKCkKKyNkZWZpbmUg QkFJTF9PVVQoLi4uKSAgICBiYWlsX291dCgwLCAiIiBfX1ZBX0FSR1NfXywgTlVMTCkKKyNk ZWZpbmUgcGFzcyguLi4pICAgICAgICBvaygxLCAiIiBfX1ZBX0FSR1NfXykKKyNkZWZpbmUg ZmFpbCguLi4pICAgICAgICBvaygwLCAiIiBfX1ZBX0FSR1NfXykKKworI2RlZmluZSBza2lw KHRlc3QsIC4uLikgIGRvIHtpZiAodGVzdCkge3RhcF9za2lwKF9fVkFfQVJHU19fLCBOVUxM KTsgYnJlYWs7fQorI2RlZmluZSBlbmRfc2tpcCAgICAgICAgIH0gd2hpbGUgKDApCisKKyNk ZWZpbmUgdG9kbyguLi4pICAgICAgICB0YXBfdG9kbygwLCAiIiBfX1ZBX0FSR1NfXywgTlVM TCkKKyNkZWZpbmUgZW5kX3RvZG8gICAgICAgICB0YXBfZW5kX3RvZG8oKQorCisjZGVmaW5l IGRpZXNfb2soLi4uKSAgICAgZGllc19va19jb21tb24oMSwgX19WQV9BUkdTX18pCisjZGVm aW5lIGxpdmVzX29rKC4uLikgICAgZGllc19va19jb21tb24oMCwgX19WQV9BUkdTX18pCisK KyNpZmRlZiBfV0lOMzIKKyNkZWZpbmUgbGlrZSguLi4pICAgICAgICB0YXBfc2tpcCgxLCAi bGlrZSBpcyBub3QgaW1wbGVtZW50ZWQgb24gV2luZG93cyIpCisjZGVmaW5lIHVubGlrZSgu Li4pICAgICAgdGFwX3NraXAoMSwgInVubGlrZSBpcyBub3QgaW1wbGVtZW50ZWQgb24gV2lu ZG93cyIpCisjZGVmaW5lIGRpZXNfb2tfY29tbW9uKC4uLikgXAorICAgICAgICAgICAgICAg ICAgICAgICAgIHRhcF9za2lwKDEsICJEZWF0aCBkZXRlY3Rpb24gaXMgbm90IHN1cHBvcnRl ZCBvbiBXaW5kb3dzIikKKyNlbHNlCisjZGVmaW5lIGxpa2UoLi4uKSAgICAgICAgbGlrZV9h dF9sb2MoMSwgX19GSUxFX18sIF9fTElORV9fLCBfX1ZBX0FSR1NfXywgTlVMTCkKKyNkZWZp bmUgdW5saWtlKC4uLikgICAgICBsaWtlX2F0X2xvYygwLCBfX0ZJTEVfXywgX19MSU5FX18s IF9fVkFfQVJHU19fLCBOVUxMKQoraW50ICAgICBsaWtlX2F0X2xvYyAgICAgKGludCBmb3Jf bWF0Y2gsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLAorICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmdvdCwgY29uc3QgY2hhciAqZXhwZWN0ZWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm10LCAuLi4pOworI2luY2x1ZGUgPHVu aXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy93YWl0Lmg+ CitpbnQgdGFwX3Rlc3RfZGllZCAoaW50IHN0YXR1cyk7CisjZGVmaW5lIGRpZXNfb2tfY29t bW9uKGZvcl9kZWF0aCwgY29kZSwgLi4uKSAgICAgICAgICAgICAgICBcCisgICAgZG8geyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgIGludCBjcGlkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgIGludCBpdF9kaWVkOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICAgIHRhcF90ZXN0X2RpZWQoMSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNwaWQgPSBmb3JrKCk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN3aXRjaCAoY3Bp ZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNh c2UgLTE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgICAgICBwZXJyb3IoImZvcmsgZXJyb3IiKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgICAgICBleGl0KDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICAgIGNhc2UgMDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjbG9zZSgxKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjbG9zZSgy KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg ICBjb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgICAgICB0YXBfdGVzdF9kaWVkKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgICAgICBleGl0KDApOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3YWl0cGlkKGNwaWQsIE5V TEwsIDApIDwgMCkgeyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwZXJyb3Io IndhaXRwaWQgZXJyb3IiKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg ICBleGl0KDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgIGl0X2RpZWQgPSB0YXBfdGVzdF9kaWVkKDApOyAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghaXRfZGllZCkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB7Y29kZX0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG9rKGZvcl9kZWF0 aCA/IGl0X2RpZWQgOiAhaXRfZGllZCwgIiIgX19WQV9BUkdTX18pOyBcCisgICAgfSB3aGls ZSAoMCkKKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k aWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbWVzb24u YnVpbGQKaW5kZXggY2Q0NWNiZjU3ZmIuLjY0ZmE3NTFhNWE1IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tZXNvbi5idWlsZApAQCAtOCw2ICs4 LDcgQEAgc3ViZGlyKCdwb3N0bWFzdGVyJykKIHN1YmRpcigncmVjb3ZlcnknKQogc3ViZGly KCdzdWJzY3JpcHRpb24nKQogc3ViZGlyKCdtb2R1bGVzJykKK3N1YmRpcignZGZvcicpCiAK IGlmIHNzbC5mb3VuZCgpCiAgIHN1YmRpcignc3NsJykKLS0gCjIuNTMuMAoK --------------Ii8KhORFqzB9FtFJzNJvGcrG Content-Type: text/x-patch; charset=UTF-8; name="v02-0002-Implement-Delta-Frame-of-Reference-compression.patch" Content-Disposition: attachment; filename*0="v02-0002-Implement-Delta-Frame-of-Reference-compression.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSBmNTBlMmUxMTYxOGFjZjhmYmUxYmZmNDIxNjg3MmJiODU2MDA0NzRkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYwMiAyLzNdIEltcGxlbWVudCBEZWx0YSBGcmFtZSBvZiBSZWZlcmVuY2UgY29tcHJl c3Npb24uCgpJbXBsZW1lbnQgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBiYXNlZCBvbiB0 aGUgRGVsdGEgRnJhbWUgb2YKUmVmZXJlbmNlIHRlY2huaXF1ZSAoREZPUikuCgpERm9SIHN1 cHBvcnRzIGJvdGggZXh0ZXJuYWwgbWVtb3J5IChvdXRlciBtZW1vcnkpIHByb3ZpZGVkIGJ5 IGEgY2FsbGVyCmFuZCBhdXRvbWF0aWNhbGx5IG1hbmFnZWQgbWVtb3J5LCBhbGxvY2F0ZWQg YnkgbWVhbnMgb2YgbWFsbG9jLCBwYWxsb2MKb3Igc2ltaWxhciBmdW5jdGlvbnMuIE1lbW9y eSBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBkZWZpbmVkCmR1cmluZyBpbml0 aWFsaXphdGlvbi4gQWxsIHN1YnNlcXVlbnQgb3BlcmF0aW9ucyBmb2xsb3cgdGhpcwpjb25m aWd1cmF0aW9uLiBGb3IgZXhhbXBsZSwgYSBjYWxsZXIgY2FuIHBsYWNlIGEgYnVmZmVyIG9u IHRoZSBzdGFjayB0bwphdm9pZCBoZWFwIGFsbG9jYXRpb24gYW5kIHBhc3MgdGhlIGJ1ZmZl ciB0byBhIERGb1IgdW5pdC4gQXMgYSByZXN1bHQsCnRoZSBwYWNraW5nIGFuZCB1bnBhY2tp bmcgcHJvY2Vzc2VzIGV4Y2x1ZGUgZHluYW1pYyBhbGxvY2F0aW9uLgoKVGhlIERGb1IgdW5p dCBpcyBpbXBsZW1lbnRlZCBhcyBhIHNldCBvZiB0ZW1wbGF0ZXMuIERldmVsb3BlcnMgY2Fu CmdlbmVyYXRlIERGb1IgaW1wbGVtZW50YXRpb25zIGZvciBhbnkgdW5zaWduZWQgaW50ZWdl ciB0eXBlICh1aW50OF90LAp1aW50MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90KS4gVGhlIGRm b3JfdTE2IHVuaXQgaXMgaW1wbGVtZW50ZWQuCgpUaGUgdW5pdCB0ZXN0IGlzIGltcGxlbWVu dGVkIGFzIGEgQyBwcm9ncmFtIChFTEYgZXhlY3V0YWJsZSkuIFRoZSB0ZXN0CmNhbiBiZSBy dW4gd2l0aCB0aGUgJ21ha2UgY2hlY2stdW5pdCcuIFRlc3RzIHN1cHBvcnQgdGhlIFRBUCBw cm90b2NvbAphbmQgYXJlIGV4ZWN1dGVkIHVzaW5nIHRoZSBQcm92ZSB1dGlsaXR5LgoKQXV0 aG9yOiBFdmdlbnkgVm9yb3BhZXYgPGV2Z2VueS52b3JvcGFldkB0YW50b3JsYWJzLmNvbT4g PGV2b3JvcEBnbWFpbC5jb20+ClJldmlld2VkIGJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1A eWFuZGV4LXRlYW0ucnU+Ci0tLQogc3JjL2JhY2tlbmQvbGliL01ha2VmaWxlLmRmb3IgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwuYyAgICAgICAgfCA2MTcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvbGliL2Rmb3JfdTE2 LmMgICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvbGliL21lc29uLmJ1aWxkICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaCAgICAgICAgfCAgMjcg KysKIHNyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oIHwgMTI1ICsrKysrKwog c3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaCAgfCAgMjkgKysKIHNyYy9pbmNs dWRlL2xpYi9kZm9yX3UxNi5oICAgICAgICAgIHwgIDEzICsKIHNyYy9pbmNsdWRlL2xpYi9k Zm9yX3UxNl9jb25maWcuaCAgIHwgICA0ICsKIHNyYy90ZXN0L2Rmb3IvLmdpdGlnbm9yZSAg ICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L2Rmb3IvTWFrZWZpbGUgICAgICAgICAgICAg IHwgICAzICstCiBzcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgMiAr CiBzcmMvdGVzdC9kZm9yL3Rlc3RfZGZvcl91MTYuYyAgICAgICB8IDM3MSArKysrKysrKysr KysrKysrKwogMTMgZmlsZXMgY2hhbmdlZCwgMTIwMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2xpYi9kZm9yX3UxNi5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9kZm9yX3UxNi5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdTE2X2NvbmZpZy5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvZGZvci90ZXN0X2Rmb3JfdTE2LmMKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9saWIvTWFrZWZpbGUuZGZvciBiL3NyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZS5k Zm9yCmluZGV4IGI5M2M2ZTc4NjQ0Li5iZWI3MDM1ZjE1NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbGliL01ha2VmaWxlLmRmb3IKKysrIGIvc3JjL2JhY2tlbmQvbGliL01ha2VmaWxl LmRmb3IKQEAgLTIsNCArMiw1IEBACiAKIE9CSlNfREZPUiA6PSBcCiAJYml0cGFja191MTYu byBcCisJZGZvcl91MTYubyBcCiAJdmVjdF91MTYubwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbGliL2Rmb3JfdGVtcGwuYyBiL3NyYy9iYWNrZW5kL2xpYi9kZm9yX3RlbXBsLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIxYTMwYTIyNGM1Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwuYwpAQCAtMCwwICsx LDYxNyBAQAorLyoKKyAqIGRmb3IuYworICoKKyAqIERGT1JfVEVNUEwgaW1wbGVtZW50cyB0 aGUgdmFyaWFudCBvZiBGcmFtZSBvZiBSZWZlcmVuY2Ugd2l0aCBEZWx0YQorICogY29udGFp bmVyIGFuZCBjb3JyZXNwb25kaW5nIGFsZ29yaXRobS4KKyAqCisgKiBUeXBlIG9mIG9yaWdp bmFsIGl0ZW1zIGRlZmluZWQgd2l0aCB0aGUgaXRlbV90IG1hY3JvLiBpdGVtX3QgbXVzdCBi ZQorICogYW4gdW5zaWduZWQgaW50ZWdlciAodWludDhfdCwgdWludDE2X3QsIC4uLiB1aW50 NjRfdCkKKyAqCisgKiBFYWNoIGJpdCB2ZWN0b3IsIGhhdmluZyBiZWVuIHNlcmlhbGlzZWQs IHJlcHJlc2VudHMgbmV4dCBzdHJ1Y3R1cmU6CisgKgorICogfCBkZWx0YXMgfCBleGNlcHRp b25zIHwgZXhjZXB0aW9ucyBwb3NpdGlvbnMgfAorICoKKyAqIGRlbHRhIGlzIGRpZmZlcmVu Y2UgYmV0d2VlbiB0aGUgY3VycmVudCBtZW1iZXIgYW5kIHRoZSBwcmV2aW91cyBvbmUuIFRo ZQorICogZGVsdGEgZm9yIHRoZSBmaXJzdCBtZW1iZXIgKGhhdmluZyB0aGUgemVybyBpbmRl eCkgaXMgaXRzIGFjdHVhbCB2YWx1ZToKKyAqIGRlbHRhWzBdID0gbVswXS0wID0gbVswXS4g QSBoYXZpbmcgc2VyaWFsaXNlZCBkZWx0YSBpcyBhIHNlcXVlbmNlIG9mIHVuZGVmaW5lZAor ICogYml0cyBvZiBmaXhlZCB3aWR0aC4KKyAqCisgKi8KKworI2luY2x1ZGUgImxpYi9kZm9y X3RlbXBsX3N0YXBsZS5oIgorCitpbnQgZGZvcl9jYWxjX2RlbHRhcyhzaXplX3QgY250LCBj b25zdCBpdGVtX3QgYXJyW10sIHZlY3RfdCAqdkRlbHRhcywKKwkJCQkJIHVuaXFzb3J0dmVj dF90ICp1c3ZEZWx0YVdpZHRocywKKwkJCQkJIHZlY3RfdCAqdldpZHRoQ291bnRlcnMpOwor CitpbnQgZGZvcl9jYWxjX3dpZHRoKHNpemVfdCBjbnREZWx0YSwKKwkJCQkJY29uc3QgdW5p cXNvcnR2ZWN0X3QgKnVzdkRlbHRhV2lkdGhzLAorCQkJCQljb25zdCB2ZWN0X3QgKnZXaWR0 aENvdW50ZXJzLCBzaXplX3QgKndpZHRoLAorCQkJCQlzaXplX3QgKmNudEV4Y2VwdGlvbnMp OworCitpbnQgZGZvcl9hbmFseXplKHNpemVfdCBjbnQsIGNvbnN0IGl0ZW1fdCBhcnJbXSwK KwkJCSBkZm9yX21ldGFfdCAqZGZvciwgdmVjdF90ICp2RGVsdGFzLAorCQkJIHVuaXFzb3J0 dmVjdF90ICp1c3ZFeGNQb3MpOworCitpbnQgZGZvcl9wYWNrKHNpemVfdCBjbnQsIGNvbnN0 IGl0ZW1fdCBhcnJbXSwgZXhjYWxnX3QgaXNFeGNVc2FnZSwKKwkJCSAgZGZvcl9tZXRhX3Qg KmRmb3IsIHNpemVfdCBidWZTaXplLCB1aW50OF90IGJ1ZltdKTsKKworaW50IGRmb3JfdW5w YWNrKGNvbnN0IGRmb3JfbWV0YV90ICpkZm9yLCB1bmlxc29ydHZlY3RfdCAqdlZhbHMsIHNp emVfdCBidWZTaXplLAorCQkJCXVpbnQ4X3QgYnVmW10pOworCit2b2lkIGRmb3JfY2xlYXJf bWV0YShkZm9yX21ldGFfdCAqZGZvcik7CisKK2Rmb3Jfc3RhdHNfdCBkZm9yX2NhbGNfc3Rh dHMoZGZvcl9tZXRhX3QgZGZvcik7CisKK3NpemVfdCBkZm9yX2NhbGNfbmJ5dGVzKGRmb3Jf bWV0YV90IGRmb3IpOworCisvKgorICogQ2FsY3VsYXRlIGRlbHRhcworICoKKyAqIHZXaWR0 aENvdW50ZXJzIGJlaW5nIGVxdWFsIHRvIE5VTEwgbWVhbnMgJ0Rvbid0IGNhbGN1bGF0ZSBj b3VudHMgb2Ygd2lkdGhzJy4KKyAqIEluIHRoaXMgY2FzZSB1c3ZEZWx0YVdpZHRoIGNvbXBy aXNlIG9ubHkgb25lIG1lbWJlciBtWzBdIHdoaWNoIHNhdmVzIG1heAorICogd2lkdGggb2Yg ZGVsdGEsIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IGNhbGxlci4KKyAqCisgKi8KK2ludAorZGZv cl9jYWxjX2RlbHRhcyhzaXplX3QgY250LCBjb25zdCBpdGVtX3QgYXJyW10sIHZlY3RfdCAq dkRlbHRhcywKKwkJCQkgdW5pcXNvcnR2ZWN0X3QgKnVzdkRlbHRhV2lkdGhzLCB2ZWN0X3Qg KnZXaWR0aENvdW50ZXJzKQoreworCWl0ZW1fdCBkZWx0YTsKKwlpdGVtX3QgcHJldjsgLyog dmFsdWUgb2YgcHJldmlvdXMgbnVtYmVyKi8KKwlzaXplX3Qgd2lkdGg7CisJdXN2X2luc19y ZXNfdCBpbnNXaWR0aEluc2VydDsKKworCWlmICh2RGVsdGFzID09IE5VTEwpCisJCXJldHVy biAtMTsKKworCWlmICh2V2lkdGhDb3VudGVycyA9PSBOVUxMKQorCQl1c3ZfaW5zZXJ0KHVz dkRlbHRhV2lkdGhzLCAwKTsKKworCXByZXYgPSAwOworCWZvciAoc2l6ZV90IGogPSAwOyBq IDwgY250OyBqKyspIHsKKwkJZGVsdGEgPSBhcnJbal0gLSBwcmV2OworCQl2ZWN0X2FwcGVu ZCh2RGVsdGFzLCBkZWx0YSk7CisJCXByZXYgPSBhcnJbal07CisJCXdpZHRoID0gd2lkdGhf ZnJvbV92YWwoZGVsdGEpOworCisJCWlmICh2V2lkdGhDb3VudGVycyA9PSBOVUxMKSB7CisJ CQlpZiAodXN2RGVsdGFXaWR0aHMtPm1bMF0gPCB3aWR0aCkKKwkJCQl1c3ZEZWx0YVdpZHRo cy0+bVswXSA9IHdpZHRoOworCQl9IGVsc2UgeworCQkJaW5zV2lkdGhJbnNlcnQgPSB1c3Zf aW5zZXJ0KHVzdkRlbHRhV2lkdGhzLCB3aWR0aF9mcm9tX3ZhbChkZWx0YSkpOworCisJCQlp ZiAoaW5zV2lkdGhJbnNlcnQuc3QgPT0gVVNWX0lOU19ORVcpCisJCQkJdmVjdF9pbnNlcnQo dldpZHRoQ291bnRlcnMsIGluc1dpZHRoSW5zZXJ0LnBvcywgKGl0ZW1fdCkxKTsKKwkJCWVs c2UgaWYgKGluc1dpZHRoSW5zZXJ0LnN0ID09IFVTVl9JTlNfRVhJU1RTKQorCQkJCXZXaWR0 aENvdW50ZXJzLT5tW2luc1dpZHRoSW5zZXJ0LnBvc10rKzsKKwkJCWVsc2UKKwkJCQlyZXR1 cm4gLTE7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDYWxjdWxhdGUgd2lk dGggb2Ygc2hvcnQgZGVsdGFzLCB3aWR0aCBvZiBleGNlcHRpb25zLCBhbmQgbnVtYmVyIG9m CisgKiBleGNlcHRpb25zCisgKi8KK2ludAorZGZvcl9jYWxjX3dpZHRoKHNpemVfdCBjbnRE ZWx0YSwgY29uc3QgdW5pcXNvcnR2ZWN0X3QgKnVzdkRlbHRhV2lkdGhzLAorCQkJCWNvbnN0 IHZlY3RfdCAqdldpZHRoQ291bnRlcnMsIHNpemVfdCAqd2lkdGgsCisJCQkJc2l6ZV90ICpj bnRFeGNlcHRpb25zKQoreworI2RlZmluZSBNSU5fREVMVEFTX1FVQU5USVRZX0FMTE9XSU5H X0VYQ0VQVElPTlMgNAorCisJc2l6ZV90IGNudFNob3J0RGVsdGFzOyAvKiBudW1iZXIgb2Yg ZGVsdGFzIHByZXNlbnRlZCB3aXRob3V0IGV4Y2VwdGlvbnMgKi8KKwlzaXplX3QgaW5keFdp ZHRoOwkvKiB0aGUgd2lkdGggb2Ygc2hvcnQgZGVsdGFzIChpbmRleCBmcm9tIHZXaWR0aENv dW50ZXJzCisJCQkJCQkgKiAoYW5kIGZyb20gdkRlbHRhV2lkdGggYWNjb3JkaW5nbHkpCisJ CQkJCQkgKi8KKwlpZiAodXN2RGVsdGFXaWR0aHMgPT0gTlVMTCB8fCB2V2lkdGhDb3VudGVy cyA9PSBOVUxMIHx8IHdpZHRoID09IE5VTEwgfHwKKwkJY250RXhjZXB0aW9ucyA9PSBOVUxM KQorCQlyZXR1cm4gLTE7CisKKwljbnRTaG9ydERlbHRhcyA9IGNudERlbHRhOworCWluZHhX aWR0aCA9IHVzdkRlbHRhV2lkdGhzLT5jbnQgLSAxOyAvKiBjb3VudGVyIGludG8gaW5kZXgg Ki8KKwkqY250RXhjZXB0aW9ucyA9IDA7CisKKwkvKgorCSAqIEhlcmUgd2UgdHJ5IHRvIGRl Y3JlYXNlIHRoZSB3aWR0aCBvZiBzaG9ydCBkZWx0YXMgaW4gb3JkZXIgdG8gY29tcHJlc3MK KwkgKiB0aGUgYXJyYXkgb2YgZGVsdGFzIGluIHRoZSBtZWFudGltZSB3ZSBhcmUgZWFnZXIg dG8gY292ZXIgbm8gbGVzcyB0aGFuCisJICogOTAlIG9mIGRlbHRhcyB3ZSBoYXZlLiBJdCBp cyBhbiBoZXVyaXN0aWMgYW5hbHlzaXMgYmFzZWQgb24gdGhlCisJICogc3VnZ2VzdGlvbiAi bm8gbGVzcyB0aGFuIDkwJSBvZiBkZWx0YXMgd2UgaGF2ZSIuCisJICoKKwkgKiBUT0RPOiBh bmFseXppbmcgd2UgbWlnaHQgd2FudCBjYWx1bGF0ZSB0aGUgZnVsbCBzaXplIG9mIHRoZSBw YWNrIGZvciBlYWNoCisJICogdmFyaWFudCBvZiB0aGUgd2lkdGguCisJICovCisJaWYgKGNu dERlbHRhID49IE1JTl9ERUxUQVNfUVVBTlRJVFlfQUxMT1dJTkdfRVhDRVBUSU9OUykgewor CQlzaXplX3Qgc3pNaW5Db3ZlcmFnZTsgLyogdGhyZXNob2xkICovCisJCXNpemVfdCBqOwor CisJCWlmIChjbnREZWx0YSA+PSAxMCkKKwkJCXN6TWluQ292ZXJhZ2UgPSBjbnREZWx0YSAt IGNudERlbHRhIC8gMTA7CisJCWVsc2UKKwkJCXN6TWluQ292ZXJhZ2UgPSBjbnREZWx0YSAt IDE7CisKKwkJaiA9IGluZHhXaWR0aDsKKworCQl3aGlsZSAoaiA+IDApIHsKKwkJCWlmIChj bnRTaG9ydERlbHRhcyAtIHZXaWR0aENvdW50ZXJzLT5tW2pdIDwgc3pNaW5Db3ZlcmFnZSkK KwkJCQlicmVhazsKKworCQkJY250U2hvcnREZWx0YXMgLT0gdldpZHRoQ291bnRlcnMtPm1b al07CisJCQlqLS07CisJCQlpbmR4V2lkdGggPSBqOworCQl9CisJCSpjbnRFeGNlcHRpb25z ID0gY250RGVsdGEgLSBjbnRTaG9ydERlbHRhczsKKwl9CisKKwkqd2lkdGggPSB1c3ZEZWx0 YVdpZHRocy0+bVtpbmR4V2lkdGhdOworCXJldHVybiAwOworfQorCisvKgorICogZGZvcl9h bmFseXplCisgKiBBbmFseXplIGlucHV0IGFycmF5LCBjYWxjdWxhdGUgZGVsdGFzIGFuZCB0 aGVpciB3aWR0aCwgZGVmaW5lIGV4Y2VwdGlvbnMgYW5kCisgKiB0aGVpciBwb3NpdGlvbnMu IFJldHVybnMgdGhlbSB0aHJvdWdoIHRoZSBkZm9yLCB2RGVsdGFzLCB1c3ZFeGNQb3MuIElm CisgKiB1c3ZFeGNQb3MgPT0gTlVMTCAtIGRvbid0IGNhbGN1bGF0ZSBleGNlcHRpb25zLgor ICoKKyAqIGRmb3JfYW5hbHl6ZSBmdW5jdGlvbiBkb2VzIG5vdCB1c2UgZHluYW1pYyBtZW1v cnkgYWxsb2NhdGlvbiBmb3IgaXRzCisgKiBsb2NhbCBjb250YWluZXJzLgorICoKKyAqIEEg Y2FsbGVyIGhhcyB0byBjb250cm9sIHdoZXRoZXIgdkRlbHRhcyBhbmQgdXN2RXhjUG9zIHVz ZSBvdXRlciBtZW1vcnkKKyAqIHByb3ZpZGVkIGJ5IGNhbGxlciBvciBtYW5hZ2UgbWVtb3J5 IGFsbG9jYXRpb24gYXV0b21hdGljYWxseSwgd2hpY2ggZGVmaW5lcworICogd2hldGhlciB2 ZWN0X2luc2VydCBhbmQgdmVjdF9hcHBlbmQgZnVuY3Rpb25zLCBpbnZva2VkIGZyb20gaGVy ZSwgdXNlIGR5bmFtaWMKKyAqIG1lbW9yeSBvciBub3QuCisgKgorICogQSBjYWxsZXIgc2hv dWxkIHRha2UgaW50byBhY2NvdW50IHRoYXQgZGZvcl9tZXRhX3QgZGZvciBhcmUgZ29pbmcg dG8gYmUKKyAqIG51bGxpZmllZCBpbiB0aGlzIGZ1bmN0aW9uLCBzbyBpdCBzaG91bGQgbm90 IGhhdmUgYW55IG1lYW5pbmdmdWxsIGRhdGEgYnkKKyAqIHN0YXJ0IG9mIGRmb3JfYW5hbHl6 ZSwgZXNwZWNpYWxseSBpdHMgcGFjayBmaWVsZCBzaG91bGQgbm90IGJlIHVzZWQgYXMgYQor ICogcG9pbnRlciBvbiBkeW5hbWljIG1lbW9yeSwgb3RoZXJ3aXNlIG1lbW9yeSBsZWFrYWdl IGlzIHBvc3NpYmxlLgorICoKKyAqLworaW50CitkZm9yX2FuYWx5emUoc2l6ZV90IGNudCwg Y29uc3QgaXRlbV90IGFycltdLCAvKiBpbnB1dCAqLworCQkJIGRmb3JfbWV0YV90ICpkZm9y LCB2ZWN0X3QgKnZEZWx0YXMsCisJCQkgdW5pcXNvcnR2ZWN0X3QgKnVzdkV4Y1BvcykgLyog b3V0cHV0ICovCit7CisjZGVmaW5lIERFTFRBX1dJRFRIX01BWF9OVU1CRVIgKHNpemVvZihp dGVtX3QpICogOCkKKwl1bmlxc29ydHZlY3RfdCB1c3ZEZWx0YVdpZHRoczsKKwlpdGVtX3Qg YnVmRGVsdGFXaWR0aFtERUxUQV9XSURUSF9NQVhfTlVNQkVSXTsKKwl2ZWN0X3QgdldpZHRo Q291bnRlcnM7CisJaXRlbV90IGJ1ZldpZHRoQ291bnRlcnNbREVMVEFfV0lEVEhfTUFYX05V TUJFUl07CisJaXRlbV90IG1hc2s7CisJaW50IHJlcyA9IC0xOworCisJZXhjYWxnX3QgaXNF eGNVc2FnZSA9ICh1c3ZFeGNQb3MgPT0gTlVMTCkgPyBERk9SX0VYQ19ET05UX1VTRSA6CisJ CQkJCQkJCQkJCQlERk9SX0VYQ19VU0U7CisKKwlpZiAoZGZvciA9PSBOVUxMKQorCQlnb3Rv IGRmb3JfYW5hbHl6ZV9lcnJvcjsKKworCW1lbXNldChkZm9yLCAwLCBzaXplb2YoZGZvcl9t ZXRhX3QpKTsKKworCWlmIChjbnQgPT0gMCkKKwkJLyogZGZvci0+aXRlbV9jbnQgPSAwOyAq LyAvKiBpdCdzIGJlZW4gYWxyZWFkeSBkb25lIHdpdGggbWVtc2V0ICovCisJCWdvdG8gZGZv cl9hbmFseXplX3JldDsKKwllbHNlIGlmIChhcnIgPT0gTlVMTCkKKwkJZ290byBkZm9yX2Fu YWx5emVfZXJyb3I7CisKKwlpZiAoMCAhPSB2ZWN0X2luaXQoJnVzdkRlbHRhV2lkdGhzLCBE RUxUQV9XSURUSF9NQVhfTlVNQkVSLCBidWZEZWx0YVdpZHRoKSkKKwkJZ290byBkZm9yX2Fu YWx5emVfZXJyb3I7CisKKwlpZiAoaXNFeGNVc2FnZSA9PSBERk9SX0VYQ19VU0UpCisJewor CQlpZiAoMCAhPQorCQkJdmVjdF9pbml0KCZ2V2lkdGhDb3VudGVycywgREVMVEFfV0lEVEhf TUFYX05VTUJFUiwKKwkJCQkJICBidWZXaWR0aENvdW50ZXJzKSkKKwkJCWdvdG8gZGZvcl9h bmFseXplX2Vycm9yOworCX0KKworCWRmb3ItPml0ZW1fY250ID0gY250OworCisJaWYgKDAg IT0KKwkJZGZvcl9jYWxjX2RlbHRhcyhkZm9yLT5pdGVtX2NudCwgYXJyLCB2RGVsdGFzLCAm dXN2RGVsdGFXaWR0aHMsCisJCQkJCQkgKGlzRXhjVXNhZ2UgPT0gREZPUl9FWENfVVNFKSA/ ICZ2V2lkdGhDb3VudGVycyA6IE5VTEwpKQorCQlnb3RvIGRmb3JfYW5hbHl6ZV9lcnJvcjsK KworCUFzc2VydChjbnQgPT0gdkRlbHRhcy0+Y250KTsKKwlBc3NlcnQodXN2RGVsdGFXaWR0 aHMuY250ID4gMCk7CisKKwlpZiAoaXNFeGNVc2FnZSA9PSBERk9SX0VYQ19VU0UpCisJewor CQlpZiAoMCAhPQorCQkJZGZvcl9jYWxjX3dpZHRoKHZEZWx0YXMtPmNudCwgJnVzdkRlbHRh V2lkdGhzLCAmdldpZHRoQ291bnRlcnMsCisJCQkJCQkJJmRmb3ItPmRlbHRhX3dpZCwgJmRm b3ItPmV4Y19jbnQpKQorCQkJZ290byBkZm9yX2FuYWx5emVfZXJyb3I7CisJfQorCWVsc2UK Kwl7CisJCWRmb3ItPmRlbHRhX3dpZCA9CisJCQl1c3ZEZWx0YVdpZHRocy5tW3VzdkRlbHRh V2lkdGhzLmNudCAtIDFdOyAvKiBtYXggd2lkdGggKi8KKwkJZGZvci0+ZXhjX2NudCA9IDA7 CisJfQorCisJZGZvci0+ZXhjX3dpZCA9IHVzdkRlbHRhV2lkdGhzLm1bdXN2RGVsdGFXaWR0 aHMuY250IC0gMV0gLSBkZm9yLT5kZWx0YV93aWQ7CisKKwkvKiBBIG1hc2sgbG9va3MgbGlr ZSAwMDAxMTExLiBJdCBpcyBhbHNvIHRoZSBtYXggdmFsdWUgb2YgYSBzaG9ydCBkZWx0YSAq LworCW1hc2sgPSB3aWR0aF90b19tYXNrKGRmb3ItPmRlbHRhX3dpZCk7CisKKwlmb3IgKHNp emVfdCBpID0gMDsgaSA8IHZEZWx0YXMtPmNudDsgaSsrKQorCXsKKwkJaWYgKHZEZWx0YXMt Pm1baV0gPiBtYXNrKQorCQl7CisJCQlBc3NlcnQoaXNFeGNVc2FnZSA9PSBERk9SX0VYQ19V U0UpOworCQkJaWYgKDAgIT0gdmVjdF9hcHBlbmQodXN2RXhjUG9zLCAoaXRlbV90KWkpKQor CQkJCWdvdG8gZGZvcl9hbmFseXplX2Vycm9yOworCQl9CisJfQorCUFzc2VydChkZm9yLT5k ZWx0YV93aWQgKyBkZm9yLT5leGNfd2lkIDw9IHNpemVvZihpdGVtX3QpICogOCk7CisJcmVz ID0gMDsKK2Rmb3JfYW5hbHl6ZV9yZXQ6CisJcmV0dXJuIHJlczsKK2Rmb3JfYW5hbHl6ZV9l cnJvcjoKKwkvKiBkZm9yX2FuYWx5emUgZG9lc24ndCBhZmZlY3QgdGhlIHBhY2sgZmllbGQg KGRvZXNuJ3QgYWxsb2NhdGUsIGRlbGV0ZSBvcgorCSAqIG90aGVyd2lzZSksIHNvIHdlIGNh biBudWxsaWZ5IHRoZSB3aG9sZSBkZm9yIGFuZCBpdAorCSAqIGlzIHNhZmUsIG5vIGxlYWth Z2UgKi8KKwltZW1zZXQoZGZvciwgMCwgc2l6ZW9mKGRmb3JfbWV0YV90KSk7CisJcmVzID0g LTE7CisJZ290byBkZm9yX2FuYWx5emVfcmV0OworfQorCisvKgorICogZGZvcl9wYWNrCisg KgorICogVGhlIGlucHV0IGFycmF5IGFyciBoYXMgdG8gYmUgc29ydGVkLgorICoKKyAqIElm IGEgY2FsbGVyIG5lZWRzIHRvIGF2b2lkIHVzaW5nIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRp b24sIHRoZXkgaGF2ZSB0bworICogcHJvdmlkZSB0aGUgZXh0ZXJuYWwgbWVtb3J5IGJ1ZmZl ci4gVGhlIHNpemUgb2YgdGhpcyBidWZmZXIgc2hvdWxkIGJlIG5vdAorICogbGVzcyB0aGFu IDQgKiBjbnQgKiBzaXplb2YoaXRlbV90KS4gSXQgd2lsbCBiZSB1c2VkIGZvciBhcnJheXMg cG9pbnRlZCBieQorICogKihkZm9yLT5wYWNrKSwgKih2RGVsdGFzLT5tKSwgKih2RXhjUG9z RGVsdGFzLT5tKSwgKih1c3ZFeGNQb3MtPm0pLgorICoKKyAqIElmIGR5bmFtaWMgYWxsb2Nh dGlvbiBoYXMgYmVlbiB1c2VkIGJ5IHRoZSBkZm9yX3BhY2ssIGEgY2FsbGVyIGhhcyB0byBm cmVlCisgKiB0aGUgcGllY2Ugb2YgbWVtb3J5IHBvaW50ZWQgYnkgZGZvci0+cGFjaywgc2lu Y2UgaXQgaXMgYWxvY2F0ZWQgYnkgdGhlCisgKiBkZm9yX3BhY2sgd2l0aCBERk9SX01BTExP Qy4gRnJlZWluZyBoYXMgdG8gYmUgcGVyZm9ybWVkIGJ5IGZ1bmN0aW9uCisgKiBjb25mb3Jt aW5nIHRvIERGT1JfTUFMTE9DIChwYWlyZWQgd2l0aCBpdCkuIEZvciBpbnN0YW5jZSwgaWYg REZPUl9NQUxMT0MgaXMKKyAqIG1hbGxvYywgdGhhbiBtZW1vcnkgc2hvdWxkIGJlIGZyZWVk IGJ5IGZyZWUuCisgKi8KK2ludAorZGZvcl9wYWNrKHNpemVfdCBjbnQsIGNvbnN0IGl0ZW1f dCBhcnJbXSwgZXhjYWxnX3QgaXNFeGNVc2FnZSwKKwkJICBkZm9yX21ldGFfdCAqZGZvciwg c2l6ZV90IGJ1ZlNpemUsIHVpbnQ4X3QgYnVmW10pCit7CisJaW50IHJlczsKKwl2ZWN0X3Qg dkRlbHRhcyA9IHsgMCB9OworCXZlY3RfdCB2RXhjUG9zRGVsdGFzID0geyAwIH07CisJdW5p cXNvcnR2ZWN0X3QgdXN2RXhjUG9zID0geyAwIH07CisKKwlpZiAoZGZvciA9PSBOVUxMIHx8 CisJCShidWZTaXplICE9IDAgJiYgYnVmU2l6ZSA8IDQgKiBjbnQgKiBzaXplb2YoaXRlbV90 KSkpCisJeworCQlnb3RvIGRmb3JfcGFja19lcnJvcjsKKwl9CisKKwkvKgorCSAqIFdlIGRv bid0IG5lZWQgaXQgaGVyZToKKwkgKiAJCQltZW1zZXQoZGZvciwgMCwgc2l6ZW9mKGRmb3Jf bWV0YV90KSkuCisJICogSXQgaXMgZ29pbmcgdG8gYmUgZG9uZSBpbiBkZm9yX2FuYWx5emUu CisJICovCisKKwl7CisJCWl0ZW1fdCAqZGVsdGFCdWYgPSBOVUxMOworCQlpdGVtX3QgKmV4 Y1Bvc0RlbHRhc0J1ZiA9IE5VTEw7CisJCWl0ZW1fdCAqZXhjUG9zQnVmID0gTlVMTDsKKwor CQlpbnQgcmVzMSA9IDA7CisJCWludCByZXMyID0gMDsKKwkJaW50IHJlczMgPSAwOworCisJ CWlmIChidWZTaXplICE9IDApCisJCXsKKwkJCS8qIFN0ZXAgb3ZlciB0aGUgbWF4aW1hbCBh bGxvd2VkIERGb1IgcGFjayBzaXplICovCisJCQlkZWx0YUJ1ZiAgICAgICAgPSAoaXRlbV90 KikoYnVmICsgY250ICogc2l6ZW9mKGl0ZW1fdCkpOworCQkJZXhjUG9zRGVsdGFzQnVmID0g KGl0ZW1fdCopKGJ1ZiArIGNudCAqIHNpemVvZihpdGVtX3QpICogMik7CisJCQlleGNQb3NC dWYgICAgICAgPSAoaXRlbV90KikoYnVmICsgY250ICogc2l6ZW9mKGl0ZW1fdCkgKiAzKTsK KwkJfQorCisJCS8qIFNldHVwIGNvbnRhaW5lcnMgd2l0aCBvdXRlciBtZW1vcnkgKi8KKwkJ cmVzMSA9IHZlY3RfaW5pdCgmdkRlbHRhcywgY250LCBkZWx0YUJ1Zik7CisKKwkJaWYgKGlz RXhjVXNhZ2UpCisJCXsKKwkJCXJlczIgPSB2ZWN0X2luaXQoJnZFeGNQb3NEZWx0YXMsIGNu dCwgZXhjUG9zRGVsdGFzQnVmKTsKKwkJCXJlczMgPSB2ZWN0X2luaXQoJnVzdkV4Y1Bvcywg Y250LCBleGNQb3NCdWYpOworCQl9CisKKwkJaWYgKHJlczEgIT0gMCB8fCByZXMyICE9IDAg fHwgcmVzMyAhPSAwKQorCQkJZ290byBkZm9yX3BhY2tfZXJyb3I7CisJfQorCisJaWYgKDAg IT0KKwkJZGZvcl9hbmFseXplKGNudCwgYXJyLCBkZm9yLCAmdkRlbHRhcywKKwkJCQkJIChp c0V4Y1VzYWdlID09IERGT1JfRVhDX1VTRSkgPyAmdXN2RXhjUG9zIDogTlVMTCkpCisJCWdv dG8gZGZvcl9wYWNrX2Vycm9yOworCisJaWYgKGRmb3ItPmV4Y19jbnQgIT0gMCkKKwl7CisJ CS8qIFdlIHRyZWF0IGV4Y2VwdGlvbiBwb3NpdGlvbnMgYXMgYSBzb3J0ZWQgc2VxdWVuY2Us IGFwcGx5IHRoZQorCQkgKiBERm9SIGFsZ29yaXRobSB0byBpdCwgYW5kIHNhdmUgbm90IHRo ZWlyIGFic29sdXRlIHZhbHVlcyBidXQgdGhlaXIKKwkJICogZGVsdGFzLiAqLworCQlkZm9y X21ldGFfdCBkZm9yRXhjUG9zOworCQlBc3NlcnQoZGZvci0+ZXhjX2NudCA9PSB1c3ZFeGNQ b3MuY250KTsKKwkJaWYgKDAgIT0KKwkJCWRmb3JfYW5hbHl6ZSh1c3ZFeGNQb3MuY250LCB1 c3ZFeGNQb3MubSwgJmRmb3JFeGNQb3MsCisJCQkJCQkgJnZFeGNQb3NEZWx0YXMsIE5VTEwp KQorCQkJZ290byBkZm9yX3BhY2tfZXJyb3I7CisKKwkJQXNzZXJ0KGRmb3ItPmV4Y19jbnQg PT0gdkV4Y1Bvc0RlbHRhcy5jbnQpOworCQlBc3NlcnQoZGZvci0+ZXhjX2NudCA9PSBkZm9y RXhjUG9zLml0ZW1fY250KTsKKworCQlkZm9yLT5leGNfcG9zX3dpZCA9IGRmb3JFeGNQb3Mu ZGVsdGFfd2lkOworCX0KKwllbHNlCisJeworCQlBc3NlcnQodXN2RXhjUG9zLmNudCA9PSAw KTsgLyogdXN2RXhjUG9zIGhhcyB0byByZW1haW4gemVyb2VkLiAqLworCQlBc3NlcnQoZGZv ci0+ZXhjX3dpZCA9PSAwKTsgLyogTm8gZXhjZXB0aW9ucywgbm8gZXhjZXB0aW9ucycgd2lk dGguICovCisJCUFzc2VydChkZm9yLT5leGNfcG9zX3dpZCA9PSAwKTsgLyogTm8gZXhjZXB0 aW9ucycgcG9zaXRpb25zIHdpZHRoIHRvby4gKi8KKwl9CisKKwkvKiBkZm9yX3BhY2sgc2Vy aWFsaXNhdGlvbiBwYWNraW5nICovCisJeworCQkvKiBpbmRleCBvZiB0aGUgbmV4dCBmcmVl IGJpdCB0byBiZSB1c2VkOiAqLworCQlzaXplX3QgZDsgLyogLSBieSBhIGRlbHRhICovCisJ CXNpemVfdCBlOyAvKiAtIGJ5IGFuIGV4Y2VwdGlvbiAqLworCQlzaXplX3QgcDsgLyogLSBi eSBhbiBleGNlcHRpb24gcG9zaXRpb24gKi8KKwkJaXRlbV90IG1hc2s7CisJCWRmb3Jfc3Rh dHNfdCBzdGF0czsKKwkJc2l6ZV90IGo7CisKKwkJc3RhdHMgPSBkZm9yX2NhbGNfc3RhdHMo KmRmb3IpOworCQlkZm9yLT5uYnl0ZXMgPSBkZm9yX2NhbGNfbmJ5dGVzKCpkZm9yKTsKKwor CQlpZiAoYnVmU2l6ZSAhPSAwKQorCQl7CisJCQkvKiBNYXggc2l6ZSBvZiB0aGUgZGZvci0+ cGFjayBpcyBjbnQgKiBzaXplb2Yoc2l6ZV90KSAqLworCQkJZGZvci0+cGFjayA9IGJ1ZjsK KwkJCWRmb3ItPm91dGVyX21lbSA9IHRydWU7CisJCQlpZiAoZGZvci0+bmJ5dGVzID4gY250 ICogc2l6ZW9mKHNpemVfdCkpCisJCQkJZ290byBkZm9yX3BhY2tfZXJyb3I7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQkvKiBJZiBhIGJ1ZmZlciB3YXMgbm90IHByb3ZpZGVkIGJ5IGNhbGxl ciB3ZSBhbGxvY2F0ZSBpdCBieQorCQkJICogb3Vyc2VsdmVzCisJCQkgKi8KKwkJCWRmb3It PnBhY2sgPSAodWludDhfdCAqKURGT1JfTUFMTE9DKChkZm9yLT5uYnl0ZXMpKTsKKworCQkJ ZGZvci0+b3V0ZXJfbWVtID0gZmFsc2U7CisJCX0KKworCQlpZiAoZGZvci0+cGFjayA9PSBO VUxMKQorCQkJZ290byBkZm9yX3BhY2tfZXJyb3I7CisKKwkJbWVtc2V0KGRmb3ItPnBhY2ss IDAsIGRmb3ItPm5ieXRlcyk7CisKKwkJLyogaW5kZXggb2YgdGhlIG5leHQgZnJlZSBiaXQg dG8gYmUgdXNlZDogKi8KKwkJZCA9IDA7CQkJICAgLyogLSBieSBhIGRlbHRhICovCisJCWUg PSBzdGF0cy5kZWx0YV9wYWNrX25iaXRzOyAgIC8qIC0gYnkgYW4gZXhjZXB0aW9uICovCisJ CXAgPSBlICsgc3RhdHMuZXhjX3BhY2tfbmJpdHM7IC8qIC0gYnkgYW4gZXhjZXB0aW9uIHBv c2l0aW9uIGluZGV4ICovCisJCS8qIEEgbWFzayBsb29rcyBsaWtlIDAwMDExMTEuIEl0IGlz IGFsc28gdGhlCisJCSAqIG1heCB2YWx1ZSBvZiBhIHNob3J0IGRlbHRhICovCisJCW1hc2sg PSB3aWR0aF90b19tYXNrKGRmb3ItPmRlbHRhX3dpZCk7CisKKwkJaiA9IDA7CisJCWZvciAo c2l6ZV90IGkgPSAwOyBpIDwgdkRlbHRhcy5jbnQ7IGkrKykKKwkJeworCQkJZCA9IGJpdHBh Y2tfcGFjayhkZm9yLT5wYWNrLCBkLCB2RGVsdGFzLm1baV0gJiBtYXNrLAorCQkJCQkJCSBk Zm9yLT5kZWx0YV93aWQpOworCisJCQlpZiAodkRlbHRhcy5tW2ldID4gbWFzaykKKwkJCXsK KwkJCQlBc3NlcnQoaXNFeGNVc2FnZSA9PSBERk9SX0VYQ19VU0UpOworCQkJCUFzc2VydCh1 c3ZFeGNQb3MubVtqXSA9PSBpKTsKKwkJCQlBc3NlcnQoaiA8IHVzdkV4Y1Bvcy5jbnQpOwor CQkJCUFzc2VydChqIDwgdkV4Y1Bvc0RlbHRhcy5jbnQpOworCQkJCUFzc2VydChkZm9yLT5l eGNfd2lkICE9IDApOworCQkJCUFzc2VydChkZm9yLT5leGNfcG9zX3dpZCAhPSAwKTsKKwor CQkJCWUgPSBiaXRwYWNrX3BhY2soZGZvci0+cGFjaywgZSwgdkRlbHRhcy5tW2ldID4+IGRm b3ItPmRlbHRhX3dpZCwKKwkJCQkJCQkJIGRmb3ItPmV4Y193aWQpOworCQkJCXAgPSBiaXRw YWNrX3BhY2soZGZvci0+cGFjaywgcCwgdkV4Y1Bvc0RlbHRhcy5tW2pdLCBkZm9yLT5leGNf cG9zX3dpZCk7CisJCQkJaisrOworCQkJfQorCQl9CisKKwkJaWYgKGlzRXhjVXNhZ2UgPT0g REZPUl9FWENfVVNFKQorCQkJQXNzZXJ0KGogPT0gdXN2RXhjUG9zLmNudCk7CisJCWVsc2UK KwkJCUFzc2VydChqID09IDApOworCisJCUFzc2VydChkID09IHN0YXRzLmRlbHRhX3BhY2tf bmJpdHMpOworCQlBc3NlcnQoZSA9PSBzdGF0cy5kZWx0YV9wYWNrX25iaXRzICsgc3RhdHMu ZXhjX3BhY2tfbmJpdHMpOworCQlBc3NlcnQocCA9PQorCQkJICAgc3RhdHMuZGVsdGFfcGFj a19uYml0cyArIHN0YXRzLmV4Y19wYWNrX25iaXRzICsKKwkJCQkgICBzdGF0cy5leGNfcG9z X3BhY2tfbmJpdHMpOworCQlyZXMgPSAwOworCX0KK2Rmb3JfcGFja19yZXQ6CisJdmVjdF9j bGVhcigmdXN2RXhjUG9zKTsKKwl2ZWN0X2NsZWFyKCZ2RXhjUG9zRGVsdGFzKTsKKwl2ZWN0 X2NsZWFyKCZ2RGVsdGFzKTsKKwlyZXR1cm4gcmVzOworZGZvcl9wYWNrX2Vycm9yOgorCWlm IChkZm9yICE9IE5VTEwpCisJCWRmb3JfY2xlYXJfbWV0YShkZm9yKTsKKwlyZXMgPSAtMTsK Kwlnb3RvIGRmb3JfcGFja19yZXQ7Cit9CisKKy8qCisgKiBkZm9yX3VucGFjaworICoKKyAq IElmIGEgY2FsbGVyIG5lZWRzIHRvIGF2b2lkIHVzaW5nIGR5bmFtaWMgbWVtb3J5IGFsbG9j YXRpb24sIHRoZXkgaGF2ZSB0bzoKKyAqIDEpIHByb3ZpZGUgdGhlIGV4dGVybmFsIG1lbW9y eSBidWZmZXIuIFRoZSBzaXplIG9mIHRoaXMgYnVmZmVyIHNob3VsZCBiZSBub3QKKyAqICAg IGxlc3MgdGhhbjoKKyAqICAgICAgICAJMiAqIGRmb3IuaXRlbV9jbnQgKiBzaXplb2YoaXRl bV90KSArIDIgKiBkZm9yLmV4Y19jbnQgKiBzaXplb2YoaXRlbV90KQorICoKKyAqIDIpIHRo ZSB2VmFscyB2ZWN0b3IgaGFzIHRvIGJlIGNyZWF0ZWQgYnV0IG11c3Qgbm90IGJlIGluaXRp YWxpc2VkLiBUaGUKKyAqICAgIGRmb3JfdW5wYWNrIHNldHMgdlZhbHMgaW4gdGhlICdvdXRl ciBtZW1vcnknIHJlZ2ltZW4gYW5kIHdpbGwgc2V0IHZWYWwtPm0KKyAqICAgIHRvIGJ1Zi4K KyAqCisgKiBQcm92aWRlZCBkeW5hbWljIGFsbG9jYXRpb24gaXMgdXNlZCBieSB0aGUgZGZv cl91bnBhY2ssIGEgY2FsbGVyIHdpbGwgaGF2ZSB0bworICogZnJlZSB0aGUgcGllY2Ugb2Yg bWVtb3J5IHBvaW50ZWQgYnkgdlZhbHMtPm0sIHVzaW5nIHZlY3RfY2xlYXIoJnZWYWxzKS4K KyAqCisgKiBBcmUgdGhlIG91dGVyIG1lbW9yeSBpcyB1c2VkCisgKi8KK2ludAorZGZvcl91 bnBhY2soY29uc3QgZGZvcl9tZXRhX3QgKmRmb3IsIHVuaXFzb3J0dmVjdF90ICp2VmFscywg c2l6ZV90IGJ1ZlNpemUsCisJCQl1aW50OF90IGJ1ZltdKQoreworCWludCByZXMgPSAtMTsK KwlzaXplX3Qgc3pEZWx0YVBhY2s7CisJdmVjdF90IHZFeGNzID0geyAwIH07CisJdmVjdF90 IHZFeGNQb3NzID0geyAwIH07CisJZXhjYWxnX3QgaXNFeGNVc2FnZSA9IChkZm9yLT5leGNf Y250ID09IDApID8gREZPUl9FWENfRE9OVF9VU0UgOgorCQkJCQkJCQkJCQkJIERGT1JfRVhD X1VTRTsKKworCWlmICh2VmFscyA9PSBOVUxMKQorCQlnb3RvIGRmb3JfdW5wYWNrX2Vycm9y OworCisJaWYgKGJ1ZlNpemUgIT0gMCAmJgorCQlidWZTaXplIDwgKDIgKiBkZm9yLT5pdGVt X2NudCAqIHNpemVvZihpdGVtX3QpICsKKwkJCQkgICAyICogZGZvci0+ZXhjX2NudCAqIHNp emVvZihpdGVtX3QpKSkKKwkJZ290byBkZm9yX3VucGFja19lcnJvcjsKKworCXN6RGVsdGFQ YWNrID0gZGZvci0+ZGVsdGFfd2lkICogZGZvci0+aXRlbV9jbnQ7CisKKwl7CisJCXVpbnQ4 X3QgKnZhbHNCdWYgPSBOVUxMOworCQlpZiAoYnVmU2l6ZSAhPSAwKQorCQkJdmFsc0J1ZiA9 IGJ1ZjsKKworCQlpZiAodmVjdF9pbml0KHZWYWxzLCBkZm9yLT5pdGVtX2NudCwgKGl0ZW1f dCAqKXZhbHNCdWYpICE9IDApCisJCQlnb3RvIGRmb3JfdW5wYWNrX2Vycm9yOworCX0KKwor CS8qIENhbGN1bGF0ZSBleGNlcHRpb25zICovCisJaWYgKGlzRXhjVXNhZ2UgPT0gREZPUl9F WENfVVNFKQorCXsKKwkJc2l6ZV90IHN6RXhjUGFjazsKKwkJc2l6ZV90IGNyRXhjOyAvKiBj YXJldCAoY3Vyc29yKSAqLworCQlzaXplX3QgY3JQb3M7IC8qIGNhcmV0IChjdXJzb3IpICov CisKKwkJdWludDhfdCAqZXhjQnVmID0gTlVMTDsKKwkJdWludDhfdCAqZXhjUG9zc0J1ZiA9 IE5VTEw7CisKKwkJaW50IHJlczEgPSAwOworCQlpbnQgcmVzMiA9IDA7CisKKwkJc3pFeGNQ YWNrID0gZGZvci0+ZXhjX2NudCAqIGRmb3ItPmV4Y193aWQ7CisJCWNyRXhjID0gc3pEZWx0 YVBhY2s7CisJCWNyUG9zID0gY3JFeGMgKyBzekV4Y1BhY2s7CisKKwkJaWYgKGJ1ZlNpemUg IT0gMCkKKwkJeworCQkJLyogc3RlcCBvdmVyIHRoZSBtZW1vcnkgb2NjdXBpZWQgYnkgdlZh bHMgKi8KKwkJCWV4Y0J1ZiA9IGJ1ZiArIGRmb3ItPml0ZW1fY250ICogc2l6ZW9mKGl0ZW1f dCk7CisJCQlleGNQb3NzQnVmID0gZXhjQnVmICsgZGZvci0+ZXhjX2NudCAqIHNpemVvZihp dGVtX3QpOworCQl9CisKKwkJcmVzMSA9IHZlY3RfaW5pdCgmdkV4Y3MsIGRmb3ItPmV4Y19j bnQsIChpdGVtX3QgKilleGNCdWYpOworCQlyZXMyID0gdmVjdF9pbml0KCZ2RXhjUG9zcywg ZGZvci0+ZXhjX2NudCwgKGl0ZW1fdCAqKWV4Y1Bvc3NCdWYpOworCisJCWlmIChyZXMxICE9 IDAgfHwgcmVzMiAhPSAwKQorCQkJZ290byBkZm9yX3VucGFja19lcnJvcjsKKworCisJCWZv ciAoc2l6ZV90IHBvc0V4YyA9IDAsIGogPSAwOyBqIDwgZGZvci0+ZXhjX2NudDsgaisrKQor CQl7CisJCQlpdGVtX3QgZGVsdGFQb3M7CisJCQlyZXMxID0gdmVjdF9hcHBlbmQoJnZFeGNz LAorCQkJCQkJCSAgIGJpdHBhY2tfdW5wYWNrKGRmb3ItPnBhY2ssICZjckV4YywKKwkJCQkJ CQkJCQkJICBkZm9yLT5leGNfd2lkKSk7CisJCQkvKiBDYWxjdWxhdGUgdGhlIHBvc2l0aW9u IG9mIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgZGVsdGEgb2YgdGhlCisJCQkgKiBwb3NpdGlv biBvZiB0aGUgZXhjZXB0aW9uICovCisJCQlkZWx0YVBvcyA9IGJpdHBhY2tfdW5wYWNrKGRm b3ItPnBhY2ssICZjclBvcywgZGZvci0+ZXhjX3Bvc193aWQpOworCQkJcG9zRXhjICs9IGRl bHRhUG9zOworCQkJcmVzMiA9IHZlY3RfYXBwZW5kKCZ2RXhjUG9zcywgcG9zRXhjKTsKKwkJ CWlmIChyZXMxICE9IDAgfHwgcmVzMiAhPSAwKQorCQkJCWdvdG8gZGZvcl91bnBhY2tfZXJy b3I7CisJCX0KKwkJQXNzZXJ0KGNyRXhjID09IHN6RGVsdGFQYWNrICsgc3pFeGNQYWNrKTsK KwkJQXNzZXJ0KGNyUG9zID09CisJCQkgICBzekRlbHRhUGFjayArIHN6RXhjUGFjayArIGRm b3ItPmV4Y19wb3Nfd2lkICogZGZvci0+ZXhjX2NudCk7CisJfQorCisJeyAvKiBVbnBhY2sg ZGVsdGFzIGFuZCBjYWxjdWxhdGUgdGFyZ2V0IHZhbHVlcyAqLworCQlpdGVtX3QgbURlbHRh OworCQlpdGVtX3QgbVN1bSA9IDA7CisJCXNpemVfdCBqID0gMDsgLyogaW5kZXggb2YgYW4g ZXhjZXB0aW9uIGFuZCBpdHMgcG9zaXRpb24gaW4gdmVjdG9ycyAqLworCQlzaXplX3QgY3JE ZWx0YSA9IDA7CisJCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGZvci0+aXRlbV9jbnQ7IGkr KykKKwkJeworCQkJbURlbHRhID0gYml0cGFja191bnBhY2soZGZvci0+cGFjaywgJmNyRGVs dGEsIGRmb3ItPmRlbHRhX3dpZCk7CisKKwkJCWlmIChpc0V4Y1VzYWdlID09IERGT1JfRVhD X1VTRSAmJgorCQkJCWogPCB2RXhjcy5jbnQgJiYKKwkJCQlpID09IHZFeGNQb3NzLm1bal0p CisJCQl7CisJCQkJQXNzZXJ0KGogPCBkZm9yLT5leGNfY250KTsKKwkJCQltRGVsdGEgfD0g dkV4Y3MubVtqXSA8PCBkZm9yLT5kZWx0YV93aWQ7CisJCQkJaisrOworCQkJfQorCQkJbVN1 bSArPSBtRGVsdGE7CisJCQl2ZWN0X2FwcGVuZCh2VmFscywgbVN1bSk7CisJCX0KKwkJQXNz ZXJ0KGNyRGVsdGEgPT0gc3pEZWx0YVBhY2spOworCQlyZXMgPSAwOworCX0KKworZGZvcl91 bnBhY2tfcmV0OgorCXZlY3RfY2xlYXIoJnZFeGNQb3NzKTsKKwl2ZWN0X2NsZWFyKCZ2RXhj cyk7CisJcmV0dXJuIHJlczsKK2Rmb3JfdW5wYWNrX2Vycm9yOgorCXZlY3RfY2xlYXIodlZh bHMpOworCXJlcyA9IC0xOworCWdvdG8gZGZvcl91bnBhY2tfcmV0OworfQorCit2b2lkCitk Zm9yX2NsZWFyX21ldGEoZGZvcl9tZXRhX3QgKm1ldGEpCit7CisJaWYgKG1ldGEgPT0gTlVM TCkKKwkJcmV0dXJuOworCisJaWYgKG1ldGEtPnBhY2sgIT0gTlVMTCAmJiAhbWV0YS0+b3V0 ZXJfbWVtKQorCQlERk9SX0ZSRUUobWV0YS0+cGFjayk7CisKKwltZW1zZXQobWV0YSwgMCwg c2l6ZW9mKGRmb3JfbWV0YV90KSk7Cit9CisKK2Rmb3Jfc3RhdHNfdAorZGZvcl9jYWxjX3N0 YXRzKGRmb3JfbWV0YV90IGRmb3IpCit7CisJZGZvcl9zdGF0c190IHN0YXQ7CisJc2l6ZV90 IG5ieXRlczsKKwlzdGF0LmRlbHRhX3BhY2tfbmJpdHMgPSBkZm9yLmRlbHRhX3dpZCAqIGRm b3IuaXRlbV9jbnQ7CisJc3RhdC5leGNfcGFja19uYml0cyA9IGRmb3IuZXhjX3dpZCAqIGRm b3IuZXhjX2NudDsKKwlzdGF0LmV4Y19wb3NfcGFja19uYml0cyA9IGRmb3IuZXhjX3Bvc193 aWQgKiBkZm9yLmV4Y19jbnQ7CisKKwlzdGF0Lm5iaXRzID0gc3RhdC5kZWx0YV9wYWNrX25i aXRzICsgc3RhdC5leGNfcGFja19uYml0cyArIHN0YXQuZXhjX3Bvc19wYWNrX25iaXRzOwor CisJLyogSWYgdGhlIGRpdmlzaW9uIHJlc3VsdHMgaW4gdGhlIHJlbWFpbmRlciwgd2UgdXNl IGFuIGFkZGl0aW9uYWwKKwkgKiBieXRlICovCisJbmJ5dGVzID0gKHN0YXQubmJpdHMgKyA3 KSAvIDg7CisJc3RhdC5yYXRpbyA9IChmbG9hdCkoc2l6ZW9mKGl0ZW1fdCkgKiBkZm9yLml0 ZW1fY250KSAvIChmbG9hdCluYnl0ZXM7CisKKwlyZXR1cm4gc3RhdDsKK30KKworc2l6ZV90 IGRmb3JfY2FsY19uYnl0ZXMoZGZvcl9tZXRhX3QgZGZvcikKK3sKKwlkZm9yX3N0YXRzX3Qg c3RhdDsKKwlzdGF0ID0gZGZvcl9jYWxjX3N0YXRzKGRmb3IpOworCXJldHVybiAoc3RhdC5u Yml0cyArIDcpIC8gODsKK30KKworI2luY2x1ZGUgImxpYi9kZm9yX3RlbXBsX3VuZGVmLmgi CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWIvZGZvcl91MTYuYyBiL3NyYy9iYWNrZW5k L2xpYi9kZm9yX3UxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5mNzA1MWY1NTkyNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2xpYi9kZm9y X3UxNi5jCkBAIC0wLDAgKzEsOCBAQAorLyoKKyAqIEZpbGU6IGRmb3JfdTE2LmMKKyAqLwor CisvKiBjbGFuZy1mb3JtYXQgb2ZmICovCisjaW5jbHVkZSAibGliL2Rmb3JfdTE2X2NvbmZp Zy5oIgorI2luY2x1ZGUgImRmb3JfdGVtcGwuYyIKKy8qIGNsYW5nLWZvcm1hdCBvbiAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGliL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQv bGliL21lc29uLmJ1aWxkCmluZGV4IDA5ODRiZDBlM2Y2Li43ZjY3MzBlZmJhMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvbGliL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2xp Yi9tZXNvbi5idWlsZApAQCAtMiw2ICsyLDcgQEAKIAogZGZvcl9zb3VyY2VzID0gZmlsZXMo CiAgICdiaXRwYWNrX3UxNi5jJywKKyAgJ2Rmb3JfdTE2LmMnLAogICAndmVjdF91MTYuYycK ICkKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaCBiL3NyYy9p bmNsdWRlL2xpYi9kZm9yX3RlbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmI0YzFkNDFjMWQzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUv bGliL2Rmb3JfdGVtcGwuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogRmlsZTogZGZvcl90 ZW1wbC5oCisgKi8KKyNpbmNsdWRlICJkZm9yX3RlbXBsX3N0YXBsZS5oIgorCitleHRlcm4g aW50IGRmb3JfY2FsY19kZWx0YXMoc2l6ZV90IGNudCwgY29uc3QgaXRlbV90IGFycltdLCB2 ZWN0X3QgKnZEZWx0YXMsCisJCQkJCQkJdW5pcXNvcnR2ZWN0X3QgKnVzdkRlbHRhV2lkdGhz LAorCQkJCQkJCXZlY3RfdCAqdldpZHRoQ291bnRlcnMpOworCitleHRlcm4gaW50IGRmb3Jf Y2FsY193aWR0aChzaXplX3QgY250RGVsdGEsCisJCQkJCQkgICBjb25zdCB1bmlxc29ydHZl Y3RfdCAqdXN2RGVsdGFXaWR0aHMsCisJCQkJCQkgICBjb25zdCB2ZWN0X3QgKnZXaWR0aENv dW50ZXJzLCBzaXplX3QgKndpZHRoLAorCQkJCQkJICAgc2l6ZV90ICpjbnRFeGNlcHRpb25z KTsKKworZXh0ZXJuIGludCBkZm9yX3BhY2soc2l6ZV90IGNudCwgY29uc3QgaXRlbV90IGFy cltdLCBleGNhbGdfdCBpc0V4Y1VzYWdlLAorCQkJCQkgZGZvcl9tZXRhX3QgKmRmb3IsIHNp emVfdCBidWZTaXplLCB1aW50OF90IGJ1ZltdKTsKKworZXh0ZXJuIGludCBkZm9yX3VucGFj ayhjb25zdCBkZm9yX21ldGFfdCAqZGZvciwgdW5pcXNvcnR2ZWN0X3QgKnZWYWxzLAorCQkJ CQkgICBzaXplX3QgYnVmU2l6ZSwgdWludDhfdCBidWZbXSk7CisKK2V4dGVybiB2b2lkIGRm b3JfY2xlYXJfbWV0YShkZm9yX21ldGFfdCAqZGZvcik7CisKK2V4dGVybiBkZm9yX3N0YXRz X3QgZGZvcl9jYWxjX3N0YXRzKGRmb3JfbWV0YV90IGRmb3IpOworCitleHRlcm4gc2l6ZV90 IGRmb3JfY2FsY19uYnl0ZXMoZGZvcl9tZXRhX3QgZGZvcik7CisKKyNpbmNsdWRlICJkZm9y X3RlbXBsX3VuZGVmLmgiCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvZGZvcl90ZW1w bF9zdGFwbGUuaCBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lOTNjNDBhYzAzNAotLS0gL2Rl di9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oCkBAIC0w LDAgKzEsMTI1IEBACisvKgorICogRmlsZTogZGZvcl9zdGFwbGVfdGVtcGwuaAorICovCisK KyNpbmNsdWRlICJjLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIE5PTlJF VVNBQkxFIENPREUsIGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQgb25seSBvbmNlCisgKgorICog VGhpcyBjb2RlIHNob3VsZCBhcHBlYXIgb25seSBvbmNlIGluIGEgZmlsZSAob3IgaW4gYSBj aGFpbiBvZiBmaWxlcykKKyAqIGluY2x1ZGluZyB0aGlzIGhlYWRlciB3aXRoICNpbmNsdWRl LiBTbywgd2UgcHJvdGVjdCBpdCBmcm9tIGR1cGxpY2F0ZXMgYnkKKyAqIG1lYW5zIG9mIG1h Y3JvCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lmbmRlZiBfREZPUl9TVEFQ TEVfVEVNUExfSF9VTklRVUVfQ09ERV8KKyNkZWZpbmUgX0RGT1JfU1RBUExFX1RFTVBMX0hf VU5JUVVFX0NPREVfCisKK3R5cGVkZWYgc3RydWN0IHsKKwlzaXplX3QgaXRlbV9jbnQ7CisJ c2l6ZV90IGRlbHRhX3dpZDsKKwlzaXplX3QgZXhjX2NudDsKKwlzaXplX3QgZXhjX3dpZDsK KwlzaXplX3QgZXhjX3Bvc193aWQ7CisJc2l6ZV90IG5ieXRlczsgLyogc2l6ZSBvZiBwYWNr IGluIGJ5dGVzICovCisJdWludDhfdCAqcGFjazsKKwlib29sIG91dGVyX21lbTsKK30gZGZv cl9tZXRhX3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKwlzaXplX3QgbmJpdHM7ICAvKiBzaXpl IG9mIHBhY2sgaW4gYml0cyB1c2VkIGluIGZhY3QgKi8KKwlzaXplX3QgZGVsdGFfcGFja19u Yml0czsgLyogaW4gYml0cyAqLworCXNpemVfdCBleGNfcGFja19uYml0czsgLyogaW4gYml0 cyAqLworCXNpemVfdCBleGNfcG9zX3BhY2tfbmJpdHM7IC8qIGluIGJpdHMgKi8KKwlmbG9h dCByYXRpbzsgIC8qIGNvbXByZXNzaW9uIHJhdGlvICovCit9IGRmb3Jfc3RhdHNfdDsKKwor dHlwZWRlZiBlbnVtIHsKKwlERk9SX0VYQ19ET05UX1VTRSA9IDAsCisJREZPUl9FWENfVVNF ID0gMQorfSBleGNhbGdfdDsKKworI2VuZGlmIC8qIF9ERk9SX1NUQVBMRV9URU1QTF9IX1VO SVFVRV9DT0RFXyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBFbmQgb2Yg Q29kZSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5IG9uY2UKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogUkVVU0FCTEUg Q09ERQorICoKKyAqIFRoaXMgY29kZSBjYW4gYmUgcmV1c2VkIHdpdGggI2luY2x1ZGUgZGly ZWN0aXZlIGluIGEgZmlsZSBpZiBERk9SX01BUktFUiBpcworICogcmVkZWZpbmVkLiBUaGlz IGFsbG93cyBjcmVhdGlvbiBvZiBzZXZlcmFsIHR5cGVzIG9mIHZlY3RvcnMgd2l0aCBkaWZm ZXJlbnQKKyAqIHR5cGVzIG9mIG1lbWJlcnMuCisgKgorICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCisjaWZuZGVmIERGT1JfSVRFTV9UWVBFCisjZXJyb3IgIkRGT1JfSVRFTV9UWVBF IG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBERk9SX01BUktFUgor I2Vycm9yICJERk9SX01BUktFUiBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNp Zm5kZWYgREZPUl9NQUxMT0MKKyNlcnJvciAiREZPUl9NQUxMT0MgbWFjcm8gaXMgaW5kZWZp bmVkLiIKKyNlbmRpZgorCisjaWZuZGVmIERGT1JfRlJFRQorI2Vycm9yICJERk9SX0ZSRUUg bWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgorCisjZGVmaW5lIE1BS0VfSEVBREVSX05B TUUodiwgbSkgQ3BwQXNTdHJpbmcyKENwcENvbmNhdDIodiwgbSkuaCkKKworLyoKKyAqIEhl YWRlcnMgZnJvbSB2ZWN0IGFuZCBiaXRwYWNrIHVuaXRzCisgKgorICogRXhhbXBsZTogZGZv cl91MTYuYyBhbmQgZGZvcl91MTYuaCBuZWVkIHZlY3RfdTE2LmggYW5kIGJpdHBhY2tfdTE2 LmgKKyAqLworI2luY2x1ZGUgTUFLRV9IRUFERVJfTkFNRShsaWIvdmVjdF8sIERGT1JfTUFS S0VSKQorI2luY2x1ZGUgTUFLRV9IRUFERVJfTkFNRShsaWIvYml0cGFja18sIERGT1JfTUFS S0VSKQorCisvKiBUeXBlcyAqLworI2RlZmluZSBpdGVtX3QJCSAgIERGT1JfSVRFTV9UWVBF CisjZGVmaW5lIHZlY3RfdAkJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0XywgREZPUl9NQVJL RVIsIF90KQorI2RlZmluZSB1bmlxc29ydHZlY3RfdCBDcHBDb25jYXRUcmlwbGUyKHVuaXFz b3J0dmVjdF8sIERGT1JfTUFSS0VSLCBfdCkKKworLyogRnVuY3Rpb25zICovCisjZGVmaW5l IGRmb3JfY2FsY19kZWx0YXMgQ3BwQ29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9NQVJLRVIs IF9jYWxjX2RlbHRhcykKKyNkZWZpbmUgZGZvcl9jYWxjX3dpZHRoCSBDcHBDb25jYXRUcmlw bGUyKGRmb3JfLCBERk9SX01BUktFUiwgX2NhbGNfd2lkdGgpCisjZGVmaW5lIGRmb3JfcGFj awkJIENwcENvbmNhdFRyaXBsZTIoZGZvcl8sIERGT1JfTUFSS0VSLCBfcGFjaykKKyNkZWZp bmUgZGZvcl91bnBhY2sJCSBDcHBDb25jYXRUcmlwbGUyKGRmb3JfLCBERk9SX01BUktFUiwg X3VucGFjaykKKyNkZWZpbmUgZGZvcl9hbmFseXplCSBDcHBDb25jYXRUcmlwbGUyKGRmb3Jf LCBERk9SX01BUktFUiwgX2FuYWx5emUpCisjZGVmaW5lIGRmb3JfY2xlYXJfbWV0YQkgQ3Bw Q29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9NQVJLRVIsIF9jbGVhcl9tZXRhKQorI2RlZmlu ZSBkZm9yX2NhbGNfc3RhdHMJIENwcENvbmNhdFRyaXBsZTIoZGZvcl8sIERGT1JfTUFSS0VS LCBfY2FsY19zdGF0cykKKyNkZWZpbmUgZGZvcl9jYWxjX25ieXRlcyBDcHBDb25jYXRUcmlw bGUyKGRmb3JfLCBERk9SX01BUktFUiwgX2NhbGNfbmJ5dGVzKQorCisvKiBGdW5jdGlvbnMg b2YgdGhlIHZlY3QgdW5pdCAqLworI2RlZmluZSB2ZWN0X2luaXQJCSAgIENwcENvbmNhdFRy aXBsZTIodmVjdF8sIERGT1JfTUFSS0VSLCBfaW5pdCkKKyNkZWZpbmUgdmVjdF9maWxsCQkg ICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBERk9SX01BUktFUiwgX2ZpbGwpCisjZGVmaW5l IHZlY3RfcmVzZXJ2ZQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBERk9SX01BUktFUiwg X3Jlc2VydmUpCisjZGVmaW5lIHZlY3RfYXBwZW5kCQkgICBDcHBDb25jYXRUcmlwbGUyKHZl Y3RfLCBERk9SX01BUktFUiwgX2FwcGVuZCkKKyNkZWZpbmUgdmVjdF9wcmludAkJICAgQ3Bw Q29uY2F0VHJpcGxlMih2ZWN0XywgREZPUl9NQVJLRVIsIF9wcmludCkKKyNkZWZpbmUgdmVj dF9jb21wYXJlCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8sIERGT1JfTUFSS0VSLCBfY29t cGFyZSkKKyNkZWZpbmUgdmVjdF9pbnNlcnQJCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8s IERGT1JfTUFSS0VSLCBfaW5zZXJ0KQorI2RlZmluZSB2ZWN0X2NsZWFyCQkgICBDcHBDb25j YXRUcmlwbGUyKHZlY3RfLCBERk9SX01BUktFUiwgX2NsZWFyKQorCisjZGVmaW5lIHVzdl9p bnNlcnQJCSAgIENwcENvbmNhdFRyaXBsZTIodXN2XywgREZPUl9NQVJLRVIsIF9pbnNlcnQp CisjZGVmaW5lIHVzdl9zZWFyY2gJCSAgIENwcENvbmNhdFRyaXBsZTIodXN2XywgREZPUl9N QVJLRVIsIF9zZWFyY2gpCisKKy8qIEZ1bmN0aW9ucyBvZiB0aGUgYml0cGFjayB1bml0ICov CisjZGVmaW5lIHdpZHRoX2Zyb21fdmFsIENwcENvbmNhdFRyaXBsZTIod2lkdGhfLCBERk9S X01BUktFUiwgX2Zyb21fdmFsKQorI2RlZmluZSB3aWR0aF90b19tYXNrICBDcHBDb25jYXRU cmlwbGUyKHdpZHRoXywgREZPUl9NQVJLRVIsIF90b19tYXNrKQorI2RlZmluZSBiaXRwYWNr X3BhY2sgICBDcHBDb25jYXRUcmlwbGUyKGJpdHBhY2tfLCBERk9SX01BUktFUiwgX3BhY2sp CisjZGVmaW5lIGJpdHBhY2tfdW5wYWNrIENwcENvbmNhdFRyaXBsZTIoYml0cGFja18sIERG T1JfTUFSS0VSLCBfdW5wYWNrKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBF bmQgb2YgUmV1c2FibGUgQ29kZQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgor ICogRG9uJ3QgZm9yZ2V0IHRvIGluY2x1ZGUgdGhpcyBjb2RlIGluIHlvdXIgZmlsZSB0aGF0 IHVzZXMgdGhpcyBoZWFkZXIKKyAqICAgICAjaW5jbHVkZSAiZGZvcl90ZW1wbF91bmRlZi5o IgorICoKKyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5k ZWYuaCBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3VuZGVmLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ2MGQzNjE5MzA4Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaApAQCAtMCwwICsxLDI5 IEBACisjdW5kZWYgaXRlbV90CisjdW5kZWYgdmVjdF90CisjdW5kZWYgdW5pcXNvcnR2ZWN0 X3QKKworI3VuZGVmIGRmb3JfY2FsY19kZWx0YXMKKyN1bmRlZiBkZm9yX2NhbGNfd2lkdGgK KyN1bmRlZiBkZm9yX3BhY2sKKyN1bmRlZiBkZm9yX3VucGFjaworI3VuZGVmIGRmb3JfYW5h bHl6ZQorI3VuZGVmIGRmb3JfY2FsY19zdGF0cworI3VuZGVmIGRmb3JfY2FsY19uYnl0ZXMK KworI3VuZGVmIHZlY3RfY3JlYXRlCisjdW5kZWYgdmVjdF9jcmVhdGVfZmlsbGVkCisjdW5k ZWYgdmVjdF9yZXNlcnZlCisjdW5kZWYgdmVjdF9hcHBlbmQKKyN1bmRlZiB2ZWN0X2Rlc3Ry b3kKKyN1bmRlZiB2ZWN0X3ByaW50CisjdW5kZWYgdmVjdF9jb21wYXJlCisjdW5kZWYgdmVj dF9pbnNlcnQKKyN1bmRlZiB2ZWN0X2NsZWFyCisKKyN1bmRlZiB1c3ZfaW5zZXJ0CisjdW5k ZWYgdXN2X3NlYXJjaAorCisjdW5kZWYgd2lkdGhfZnJvbV92YWwKKyN1bmRlZiB3aWR0aF90 b19tYXNrCisjdW5kZWYgYml0cGFja19wYWNrCisjdW5kZWYgYml0cGFja191bnBhY2sKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3UxNi5oIGIvc3JjL2luY2x1ZGUvbGli L2Rmb3JfdTE2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcx NmM5OWRiYzU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdTE2 LmgKQEAgLTAsMCArMSwxMyBAQAorLyoKKyAqIEZpbGU6IGRmb3JfdTE2LmgKKyAqLworCisj aWZuZGVmIF9ERk9SX1UxNl9IXworI2RlZmluZSBfREZPUl9VMTZfSF8KKworLyogY2xhbmct Zm9ybWF0IG9mZiAqLworI2luY2x1ZGUgImRmb3JfdTE2X2NvbmZpZy5oIgorI2luY2x1ZGUg ImRmb3JfdGVtcGwuaCIKKy8qIGNsYW5nLWZvcm1hdCBvbiAqLworCisjZW5kaWYgLyogX0RG T1JfVTE2X0hfICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvZGZvcl91MTZfY29u ZmlnLmggYi9zcmMvaW5jbHVkZS9saWIvZGZvcl91MTZfY29uZmlnLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc1MTkzN2FjNTEzCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdTE2X2NvbmZpZy5oCkBAIC0wLDAgKzEsNCBA QAorI2RlZmluZSBERk9SX0lURU1fVFlQRSB1aW50MTZfdAorI2RlZmluZSBERk9SX01BUktF UgkgICB1MTYKKyNkZWZpbmUgREZPUl9NQUxMT0MJICAgbWFsbG9jCisjZGVmaW5lIERGT1Jf RlJFRQkgICBmcmVlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yLy5naXRpZ25vcmUgYi9z cmMvdGVzdC9kZm9yLy5naXRpZ25vcmUKaW5kZXggMGQ3N2E1MTIxNmIuLjQ0N2U5NWMwYzA5 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9kZm9yLy5naXRpZ25vcmUKKysrIGIvc3JjL3Rlc3Qv ZGZvci8uZ2l0aWdub3JlCkBAIC0xLDMgKzEsNCBAQAogdGVzdF9iaXRwYWNrX3UxNgordGVz dF9kZm9yX3UxNgogdGVzdF91bmlxc29ydHZlY3RfdTE2CiB0ZXN0X3ZlY3RfdTE2CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9kZm9yL01ha2VmaWxlIGIvc3JjL3Rlc3QvZGZvci9NYWtlZmls ZQppbmRleCA1ZWZjMWFmMGEyNC4uZjlmMWI3MDVjNWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L2Rmb3IvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZQpAQCAtMjcsNyAr MjcsOCBAQCBMSUJUQVBfT0JKUyA9ICQodG9wX2J1aWxkZGlyKS9zcmMvdGVzdC9saWJ0YXAv dGFwLm8KIAogVEVTVFM9IHRlc3RfdmVjdF91MTYgXAogICAgICAgIHRlc3RfdW5pcXNvcnR2 ZWN0X3UxNiBcCi0gICAgICAgdGVzdF9iaXRwYWNrX3UxNgorICAgICAgIHRlc3RfYml0cGFj a191MTYgXAorICAgICAgIHRlc3RfZGZvcl91MTYKIAogJChURVNUUzolPSUubyk6IENQUEZM QUdTICs9IC1JJCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0IC1ERlJPTlRFTkQKIApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L2Rmb3IvbWVzb24u YnVpbGQKaW5kZXggOTgwMjgwMjExMWYuLjNmZjM2YzQzOWM4IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9kZm9yL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L2Rmb3IvbWVzb24uYnVpbGQK QEAgLTgsNiArOCw3IEBAIGRmb3JfZGlyID0gam9pbl9wYXRocyhtZXNvbi5wcm9qZWN0X3Nv dXJjZV9yb290KCksICdzcmMvYmFja2VuZC9saWInKQogZGZvcl9zb3VyY2VzID0gZmlsZXMo CiAgIGpvaW5fcGF0aHMoZGZvcl9kaXIsICd2ZWN0X3UxNi5jJyksCiAgIGpvaW5fcGF0aHMo ZGZvcl9kaXIsICdiaXRwYWNrX3UxNi5jJyksCisgIGpvaW5fcGF0aHMoZGZvcl9kaXIsICdk Zm9yX3UxNi5jJyksCiApCiAKIGRmb3JfdGVzdF9saWIgPSBzdGF0aWNfbGlicmFyeSgKQEAg LTM2LDYgKzM3LDcgQEAgdGVzdF9uYW1lcyA9IFsKICAgJ3Rlc3RfdmVjdF91MTYnLAogICAn dGVzdF91bmlxc29ydHZlY3RfdTE2JywKICAgJ3Rlc3RfYml0cGFja191MTYnLAorICAndGVz dF9kZm9yX3UxNicsCiBdCiAKIGZvcmVhY2ggdCA6IHRlc3RfbmFtZXMKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2Rmb3IvdGVzdF9kZm9yX3UxNi5jIGIvc3JjL3Rlc3QvZGZvci90ZXN0X2Rm b3JfdTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMyMmI3 MTRiYTM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvZGZvci90ZXN0X2Rmb3JfdTE2 LmMKQEAgLTAsMCArMSwzNzEgQEAKKy8qCisgKiB0ZXN0X2Rmb3IuYworICovCisKKyNpbmNs dWRlICJsaWIvYml0cGFja191MTYuaCIKKyNpbmNsdWRlICJsaWIvZGZvcl91MTYuaCIKKyNp bmNsdWRlICJsaWIvdmVjdF91MTYuaCIKKyNpbmNsdWRlICJsaWJ0YXAvdGFwLmgiCisjaW5j bHVkZSAidGVzdC5oIgorCit2b2lkIHRlc3RfZGVsdGFfY2FsY3VsYXRpb24oc2l6ZV90IGNu dCwgdWludDE2X3QgaW5BcnJbXSwgc2l6ZV90IGNudERlbHRhLAorCQkJCQkJCXVpbnQxNl90 IG1hckRlbHRhc0V4cGVjdGVkW10sIHNpemVfdCBjbnRXaWR0aCwKKwkJCQkJCQl1aW50MTZf dCBtYXJXaWR0aHNFeHBlY3RlZFtdLCBzaXplX3QgY250U3RhdCwKKwkJCQkJCQl1aW50MTZf dCBtYXJXaWR0aHNTdGF0RXhwZWN0ZWRbXSk7CisKK3ZvaWQgdGVzdF9jYWxjX2V4Y2VwdGlv bnMoc2l6ZV90IG51bURlbHRhcywgc2l6ZV90IG51bVdpZHRocywKKwkJCQkJCSAgdWludDE2 X3QgbWFyV2lkdGhzW10sIHNpemVfdCBudW1Db3VudHMsCisJCQkJCQkgIHVpbnQxNl90IG1h ckNvdW50c1tdLCBzaXplX3Qgc3pBd2FpdGVkV2lkdGgsCisJCQkJCQkgIHNpemVfdCBjbnRB d2FpdGVkRXhjQ291bnQpOworCit2b2lkIHRlc3RfZGZvcihzaXplX3QgY250LCB1aW50MTZf dCBhcnJbXSwgZXhjYWxnX3QgaXNFeGNVc2FnZSwKKwkJCSAgIHNpemVfdCB3aWREZWx0YUF3 YWl0ZWQsIHNpemVfdCBjbnRFeGNDbnRBd2FpdGVkLAorCQkJICAgc2l6ZV90IHdpZEV4Y1dp ZEF3YWl0ZWQsIHNpemVfdCB3aWRFeGNQb3NXaWRBd2FpdGVkLAorCQkJICAgc2l6ZV90IGNu dEJpdHNDb3VudEF3YWl0ZWQsIHNpemVfdCBjbnRCeXRlQ291bnRBd2FpdGVkLAorCQkJICAg ZmxvYXQgZmxNaW5SYXRpb0F3YWl0ZWQsIHVpbnQ4X3QgdThhclBhY2tBd2FpdGVkW10pOwor Cit2b2lkCit0ZXN0X2RlbHRhX2NhbGN1bGF0aW9uKHNpemVfdCBjbnQsIHVpbnQxNl90IGlu QXJyW10sIHNpemVfdCBjbnREZWx0YSwKKwkJCQkJICAgdWludDE2X3QgbWFyRGVsdGFzRXhw ZWN0ZWRbXSwgc2l6ZV90IGNudFdpZHRoLAorCQkJCQkgICB1aW50MTZfdCBtYXJXaWR0aHNF eHBlY3RlZFtdLCBzaXplX3QgY250U3RhdCwKKwkJCQkJICAgdWludDE2X3QgbWFyV2lkdGhz U3RhdEV4cGVjdGVkW10pCit7CisJdmVjdF91MTZfdCB2RGVsdGFzOworCXZlY3RfdTE2X3Qg dldpZHRoQ291bnRlcnM7CisJdW5pcXNvcnR2ZWN0X3UxNl90IHVzdkRlbHRhV2lkdGhzOwor CXZlY3RfdTE2X3QgYXdhaXRlZDsKKwlpbnQgcmVzOworCisJcHJpbnRmKCItLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworCXByaW50Zigi VGVzdFxuIik7CisJcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS1cbiIpOworCisJcHJpbnRmKCIgIGluQXJyOiIpOworCWZvciAoc2l6 ZV90IGkgPSAwOyBpIDwgY250OyBpKyspCisJCXByaW50ZigiICV1IiwgKHVpbnQzMl90KWlu QXJyW2ldKTsKKwlwcmludGYoIlxuIik7CisKKwl2ZWN0X3UxNl9pbml0KCZ2RGVsdGFzLCAw LCBOVUxMKTsKKwl2ZWN0X3UxNl9pbml0KCZ1c3ZEZWx0YVdpZHRocywgMCwgTlVMTCk7CisJ dmVjdF91MTZfaW5pdCgmdldpZHRoQ291bnRlcnMsIDAsIE5VTEwpOworCisJLyogVGVzdGVk IGZ1bmN0aW9uICovCisJcmVzID0gZGZvcl91MTZfY2FsY19kZWx0YXMoY250LCBpbkFyciwg JnZEZWx0YXMsICZ1c3ZEZWx0YVdpZHRocywKKwkJCQkJCQkgICAmdldpZHRoQ291bnRlcnMp OworCWNtcF9vayhyZXMsICI9PSIsIDApOworCisJcHJpbnRmKCIgIERlbHRhIGV4cGVjdGVk OiIpOworCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY250RGVsdGE7IGkrKykKKwkJcHJpbnRm KCIgJXUiLCAodWludDMyX3QpbWFyRGVsdGFzRXhwZWN0ZWRbaV0pOworCXByaW50ZigiXG4i KTsKKworCXByaW50ZigiICBEZWx0YSBmYWN0OiAgICAiKTsKKwl2ZWN0X3UxNl9wcmludCgm dkRlbHRhcyk7CisKKwljbXBfb2sodkRlbHRhcy5jbnQsICI9PSIsIGNudCwgIlRoZSBEZWx0 YSBjb3VudCBpcyBPSy4iKTsKKwl2ZWN0X3UxNl9pbml0KCZhd2FpdGVkLCAwLCBOVUxMKTsK Kwl2ZWN0X3UxNl9maWxsKCZhd2FpdGVkLCBjbnQsIG1hckRlbHRhc0V4cGVjdGVkKTsKKwlj bXBfb2sodmVjdF91MTZfY29tcGFyZSgmdkRlbHRhcywgJmF3YWl0ZWQpLCAiPT0iLCAwLAor CQkgICAiQWxsIGRlbHRhcyBhcmUgY2FsY3VsYXRlZCBwcm9wZXJseSIpOworCXZlY3RfdTE2 X2NsZWFyKCZhd2FpdGVkKTsKKworCXByaW50ZigiICBXaWR0aCBleHBlY3RlZDoiKTsKKwlm b3IgKHNpemVfdCBpID0gMDsgaSA8IGNudFdpZHRoOyBpKyspCisJCXByaW50ZigiICV1Iiwg KHVpbnQzMl90KW1hcldpZHRoc0V4cGVjdGVkW2ldKTsKKwlwcmludGYoIlxuIik7CisKKwlw cmludGYoIiAgV2lkdGggZmFjdDogICAgIik7CisJdmVjdF91MTZfcHJpbnQoJnVzdkRlbHRh V2lkdGhzKTsKKworCWNtcF9vayh1c3ZEZWx0YVdpZHRocy5jbnQsICI9PSIsIGNudFdpZHRo LCAiVGhlIFdpZHRoIGNvdW50IGlzIE9LLiIpOworCisJLyogZG9uJ3QgcmVhbGx5IG5lZWQg aW5pdGlhbGlzYXRpb24gYWZ0ZXIgdmVjdF9jbGVhbiBoYXZpbmcgYmVlbiBkb25lCisJICog YWJvdmUqLworCS8qIHZlY3RfdTE2X2luaXQoJmF3YWl0ZWQsIDAsIE5VTEwpOyAqLworCisJ dmVjdF91MTZfZmlsbCgmYXdhaXRlZCwgY250V2lkdGgsIG1hcldpZHRoc0V4cGVjdGVkKTsK KwljbXBfb2sodmVjdF91MTZfY29tcGFyZSgmdXN2RGVsdGFXaWR0aHMsICZhd2FpdGVkKSwg Ij09IiwgMCwKKwkJICAgIkFsbCBkZWx0YSB3aWR0aHMgaXMgT0suIik7CisJdmVjdF91MTZf Y2xlYXIoJmF3YWl0ZWQpOworCisJcHJpbnRmKCIgIFN0YXRpc3RpY3MgZXhwZWN0ZWQ6Iik7 CisJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbnRTdGF0OyBpKyspCisJCXByaW50ZigiICV1 IiwgKHVpbnQzMl90KW1hcldpZHRoc1N0YXRFeHBlY3RlZFtpXSk7CisJcHJpbnRmKCJcbiIp OworCisJcHJpbnRmKCIgIFN0YXRpc3RpY3MgZmFjdDogICAgIik7CisJdmVjdF91MTZfcHJp bnQoJnZXaWR0aENvdW50ZXJzKTsKKworCWNtcF9vaygKKwkJdXN2RGVsdGFXaWR0aHMuY250 LCAiPT0iLCB2V2lkdGhDb3VudGVycy5jbnQsCisJCSJUaGUgY291bnQgb2Ygc3RhdGlzdGlj cyBvZiB3aWR0aHMgaXMgZXF1YWwgdG8gdGhlIGNvdW50IG9mIHdpZHRocy4iKTsKKworCS8q IGRvbid0IHJlYWxseSBuZWVkIGluaXRpYWxpc2F0aW9uIGFmdGVyIHZlY3RfY2xlYW4gaGF2 aW5nIGJlZW4gZG9uZQorCSAqIGFib3ZlKi8KKwl2ZWN0X3UxNl9maWxsKCZhd2FpdGVkLCBj bnRTdGF0LCBtYXJXaWR0aHNTdGF0RXhwZWN0ZWQpOworCWNtcF9vayh2ZWN0X3UxNl9jb21w YXJlKCZ2V2lkdGhDb3VudGVycywgJmF3YWl0ZWQpLCAiPT0iLCAwLAorCQkgICAiV2lkdGgg c3RhdGlzdGljcyBpcyBPSy4iKTsKKwl2ZWN0X3UxNl9jbGVhcigmYXdhaXRlZCk7CisKKwl2 ZWN0X3UxNl9jbGVhcigmdkRlbHRhcyk7CisJdmVjdF91MTZfY2xlYXIoJnVzdkRlbHRhV2lk dGhzKTsKKwl2ZWN0X3UxNl9jbGVhcigmdldpZHRoQ291bnRlcnMpOworfQorCit2b2lkCit0 ZXN0X2NhbGNfZXhjZXB0aW9ucyhzaXplX3QgbnVtRGVsdGFzLCBzaXplX3QgbnVtV2lkdGhz LCB1aW50MTZfdCBtYXJXaWR0aHNbXSwKKwkJCQkJIHNpemVfdCBudW1Db3VudHMsIHVpbnQx Nl90IG1hckNvdW50c1tdLAorCQkJCQkgc2l6ZV90IHN6QXdhaXRlZFdpZHRoLCBzaXplX3Qg Y250QXdhaXRlZEV4Y0NvdW50KQoreworCWludCByZXM7CisJdmVjdF91MTZfdCB2V2lkdGhD b3VudGVyczsKKwl1bmlxc29ydHZlY3RfdTE2X3QgdXN2RGVsdGFXaWR0aHM7CisJc2l6ZV90 IHdpZHRoLCBjbnRFeGNlcHRpb25zOworCisJdmVjdF91MTZfaW5pdCgmdXN2RGVsdGFXaWR0 aHMsIDAsIE5VTEwpOworCXZlY3RfdTE2X2ZpbGwoJnVzdkRlbHRhV2lkdGhzLCBudW1XaWR0 aHMsIG1hcldpZHRocyk7CisKKwl2ZWN0X3UxNl9pbml0KCZ2V2lkdGhDb3VudGVycywgMCwg TlVMTCk7CisJdmVjdF91MTZfZmlsbCgmdldpZHRoQ291bnRlcnMsIG51bUNvdW50cywgbWFy Q291bnRzKTsKKworCXJlcyA9IGRmb3JfdTE2X2NhbGNfd2lkdGgobnVtRGVsdGFzLCAmdXN2 RGVsdGFXaWR0aHMsICZ2V2lkdGhDb3VudGVycywKKwkJCQkJCQkgICZ3aWR0aCwgJmNudEV4 Y2VwdGlvbnMpOworCWNtcF9vayhyZXMsICI9PSIsIDApOworCWNtcF9vayh3aWR0aCwgIj09 Iiwgc3pBd2FpdGVkV2lkdGgsICJXaWR0aCBpcyBPSy4iKTsKKwljbXBfb2soY250RXhjZXB0 aW9ucywgIj09IiwgY250QXdhaXRlZEV4Y0NvdW50LCAiRXhjZXB0aW9ucyBudW0gaXMgT0si KTsKKworCXZlY3RfdTE2X2NsZWFyKCZ1c3ZEZWx0YVdpZHRocyk7CisJdmVjdF91MTZfY2xl YXIoJnZXaWR0aENvdW50ZXJzKTsKK30KKwordm9pZAordGVzdF9kZm9yKHNpemVfdCBjbnQs IHVpbnQxNl90IGFycltdLCBleGNhbGdfdCBpc0V4Y1VzYWdlLAorCQkgIHNpemVfdCB3aWRE ZWx0YVdpZHRoQXdhaXRlZCwgc2l6ZV90IGNudEV4Y0NudEF3YWl0ZWQsCisJCSAgc2l6ZV90 IHdpZEV4Y1dpZEF3YWl0ZWQsIHNpemVfdCB3aWRFeGNQb3NXaWRBd2FpdGVkLAorCQkgIHNp emVfdCBjbnRCaXRzQ291bnRBd2FpdGVkLCBzaXplX3QgY250Qnl0ZUNvdW50QXdhaXRlZCwK KwkJICBmbG9hdCBmbE1pblJhdGlvQXdhaXRlZCwgdWludDhfdCB1OGFyUGFja0F3YWl0ZWRb XSkKK3sKKwlpbnQgcmVzOworCWRmb3JfbWV0YV90IGRmb3I7CisJZGZvcl9zdGF0c190IHN0 YXRzOworCXVuaXFzb3J0dmVjdF91MTZfdCBleHRyYWN0ZWQ7CisKKwlyZXMgPSBkZm9yX3Ux Nl9wYWNrKGNudCwgYXJyLCBpc0V4Y1VzYWdlLCAmZGZvciwgMCwgTlVMTCk7CisJY21wX29r KHJlcywgIj09IiwgMCwgImRmb3JfcGFjayBmdW5jIGhhcyBwcm9jZXNzZWQgT0suIik7CisJ Y21wX29rKGRmb3IuaXRlbV9jbnQsICI9PSIsIGNudCwgIkNvdW50IG9mIGRlbHRhcyBpcyBP Sy4iKTsKKwljbXBfb2soZGZvci5kZWx0YV93aWQsICI9PSIsIHdpZERlbHRhV2lkdGhBd2Fp dGVkLCAiRGVsdGEgd2lkdGggaXMgT0suIik7CisJY21wX29rKGRmb3IuZXhjX2NudCwgIj09 IiwgY250RXhjQ250QXdhaXRlZCwgIkV4Y2VwdGlvbiBjb3VudCBpcyBPSy4iKTsKKwljbXBf b2soZGZvci5leGNfd2lkLCAiPT0iLCB3aWRFeGNXaWRBd2FpdGVkLCAiRXhjZXB0aW9uIHdp ZHRoIGlzIE9LLiIpOworCWNtcF9vayhkZm9yLmV4Y19wb3Nfd2lkLCAiPT0iLCB3aWRFeGNQ b3NXaWRBd2FpdGVkLAorCQkgICAiRXhjZXB0aW9uIHBvc2l0aW9uIHdpZHRoIGlzIE9LLiIp OworCW9rKGRmb3IucGFjayAhPSBOVUxMLCAiUGFjayBpcyBjcmVhdGVkIChub3QgTlVMTCku Iik7CisKKwlzdGF0cyA9IGRmb3JfdTE2X2NhbGNfc3RhdHMoZGZvcik7CisJY21wX29rKHN0 YXRzLm5iaXRzLCAiPT0iLCBjbnRCaXRzQ291bnRBd2FpdGVkLCAiQml0cyBjb3VudCBpcyBP Sy4iKTsKKwljbXBfb2soZGZvci5uYnl0ZXMsICI9PSIsIGNudEJ5dGVDb3VudEF3YWl0ZWQs ICJCeXRlcyBjb3VudCBpcyBPSy4iKTsKKwlvayhzdGF0cy5yYXRpbyA+IGZsTWluUmF0aW9B d2FpdGVkLCAiQ29tcHJlc3Npb24gcmF0aW8gaXMgT0suIik7CisKKwlpZiAodThhclBhY2tB d2FpdGVkICE9IE5VTEwpCisJCW9rKDAgPT0gbWVtY21wKGRmb3IucGFjaywgdThhclBhY2tB d2FpdGVkLCBjbnRCeXRlQ291bnRBd2FpdGVkKSwKKwkJICAgIlBhY2sgY29udGVudCBpcyBP Sy4iKTsKKwllbHNlCisJCW9rKDAgPT0gMCwgIlBhY2sgY29udGVudCBjaGVjayBpcyBza2lw cGVkLiIpOworCisJdGVzdF9wcmludF91MTZfYXJyYXkoY250LCAodWludDE2X3QgKilhcnIs ICJcblxuT3JpZ2luYWwgaW50ZWdlciBhcnJheSIpOworCXRlc3RfcHJpbnRfdThfYXJyYXko ZGZvci5uYnl0ZXMsIGRmb3IucGFjaywgIkNvbXByZXNzZWQgaW50ZWdlciBhcnJheSIpOwor CXByaW50ZigiQ29tcHJlc3Npb24gcmF0aW86JWZcblxuIiwgc3RhdHMucmF0aW8pOworCisJ dmVjdF91MTZfaW5pdCgmZXh0cmFjdGVkLCAwLCBOVUxMKTsKKworCWRmb3JfdTE2X3VucGFj aygmZGZvciwgJmV4dHJhY3RlZCwgMCwgTlVMTCk7CisJY21wX29rKGV4dHJhY3RlZC5jbnQs ICI9PSIsIGNudCwgIkV4dHJhY3RlZCBjb3VudCBpcyBPSyIpOworCWNtcF9vaygwLCAiPT0i LCBtZW1jbXAoYXJyLCBleHRyYWN0ZWQubSwgY250KSwKKwkJICAgIkV4dHJhY3RlZCBhcnJh eSBpcyBlcXVhbCB0byBvcmlnaW5hbCIpOworCisJZnJlZShkZm9yLnBhY2spOworCXZlY3Rf dTE2X2NsZWFyKCZleHRyYWN0ZWQpOworfQorCitpbnQKK21haW4odm9pZCkKK3sKKwlwbGFu KDEzMCk7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09XG4iKTsKKwlwcmludGYoIlRlc3QgREVMVEEgQ0FMQ1VMQVRJT05cbiIpOworCXsKKwkJ dGVzdF9kZWx0YV9jYWxjdWxhdGlvbigKKwkJCTEwLCAodWludDE2X3RbXSkgeyAwLCAxLCAy LCAzLCA0LCA1LCA2LCA3LCA4LCA5IH0sIC8qIGluQXJyICovCisJCQkxMCwKKwkJCSh1aW50 MTZfdFtdKSB7IDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCisJCQkJCQkgICAxIH0sCSAg IC8qIG1hckRlbHRhc0V4cGVjdGVkKi8KKwkJCTEsICh1aW50MTZfdFtdKSB7IDEgfSwgLyog bWFyV2lkdGhzRXhwZWN0ZWQgKi8KKwkJCTEsICh1aW50MTZfdFtdKSB7IDEwIH0gLyogbWFy V2lkdGhzU3RhdEV4cGVjdGVkICovKTsKKworCQl0ZXN0X2RlbHRhX2NhbGN1bGF0aW9uKAor CQkJMTAsICh1aW50MTZfdFtdKSB7IDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUsIDE3LCAx OSB9LCAvKiBpbkFyciAqLworCQkJMTAsCisJCQkodWludDE2X3RbXSkgeyAxLCAyLCAyLCAy LCAyLCAyLCAyLCAyLCAyLAorCQkJCQkJICAgMiB9LAkJICAvKiBtYXJEZWx0YXNFeHBlY3Rl ZCovCisJCQkyLCAodWludDE2X3RbXSkgeyAxLCAyIH0sIC8qIG1hcldpZHRoc0V4cGVjdGVk ICovCisJCQkyLCAodWludDE2X3RbXSkgeyAxLCA5IH0gLyogbWFyV2lkdGhzU3RhdEV4cGVj dGVkICovKTsKKworCQl0ZXN0X2RlbHRhX2NhbGN1bGF0aW9uKAorCQkJMTQsCisJCQkodWlu dDE2X3RbXSkgeyAxMDAsIDIwMCwgMzAwLCA0MDAsIDQwMSwgNDAyLCA0MDMsIDQwNCwgNDA2 LCA0MDgsCisJCQkJCQkgICA0MTAsIDQxMiwgNDE0LCA0MTYgfSwgLyogaW5BcnIgKi8KKwkJ CTE0LAorCQkJKHVpbnQxNl90W10pIHsgMTAwLCAxMDAsIDEwMCwgMTAwLCAxLCAxLCAxLCAx LCAyLCAyLCAyLCAyLCAyLAorCQkJCQkJICAgMiB9LAkJCSAvKiBtYXJEZWx0YXNFeHBlY3Rl ZCovCisJCQkzLCAodWludDE2X3RbXSkgeyAxLCAyLCA3IH0sIC8qIG1hcldpZHRoc0V4cGVj dGVkICovCisJCQkzLCAodWludDE2X3RbXSkgeyA0LCA2LCA0IH0gLyogbWFyV2lkdGhzU3Rh dEV4cGVjdGVkICovKTsKKworCQl0ZXN0X2RlbHRhX2NhbGN1bGF0aW9uKDEsICh1aW50MTZf dFtdKSB7IDEyMyB9LCAvKiBpbkFyciAqLworCQkJCQkJCSAgIDEsICh1aW50MTZfdFtdKSB7 IDEyMyB9LCAvKiBtYXJEZWx0YXNFeHBlY3RlZCovCisJCQkJCQkJICAgMSwgKHVpbnQxNl90 W10pIHsgNyB9LAkvKiBtYXJXaWR0aHNFeHBlY3RlZCAqLworCQkJCQkJCSAgIDEsCisJCQkJ CQkJICAgKHVpbnQxNl90W10pIHsgMSB9IC8qIG1hcldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7 CisKKwkJdGVzdF9kZWx0YV9jYWxjdWxhdGlvbigwLCBOVUxMLCAvKiBpbkFyciAqLworCQkJ CQkJCSAgIDAsIE5VTEwsIC8qIG1hckRlbHRhc0V4cGVjdGVkKi8KKwkJCQkJCQkgICAwLCBO VUxMLCAvKiBtYXJXaWR0aHNFeHBlY3RlZCAqLworCQkJCQkJCSAgIDAsIE5VTEwgLyogbWFy V2lkdGhzU3RhdEV4cGVjdGVkICovKTsKKwl9CisJcHJpbnRmKCJUZXN0IERFTFRBIENBTENV TEFUSU9OIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgRVhDRVBUSU9OUyBD QUxDVUxBVElPTlxuIik7CisJeworCQlpbnQgcmVzOworCQl2ZWN0X3UxNl90IHZXaWR0aENv dW50ZXJzOworCQl1bmlxc29ydHZlY3RfdTE2X3QgdXN2RGVsdGFXaWR0aHM7CisJCXNpemVf dCB3aWR0aCwgY250RXhjZXB0aW9uczsKKworCQl2ZWN0X3UxNl9pbml0KCZ1c3ZEZWx0YVdp ZHRocywgMCwgTlVMTCk7CisJCXZlY3RfdTE2X2ZpbGwoJnVzdkRlbHRhV2lkdGhzLCAzLCAo dWludDE2X3RbXSkgeyAxLCAyLCA3IH0pOworCisJCXZlY3RfdTE2X2luaXQoJnZXaWR0aENv dW50ZXJzLCAwLCBOVUxMKTsKKwkJdmVjdF91MTZfZmlsbCgmdldpZHRoQ291bnRlcnMsIDMs ICh1aW50MTZfdFtdKSB7IDQsIDYsIDQgfSk7IC8vIDQrNis0PTE0CisKKwkJcmVzID0gZGZv cl91MTZfY2FsY193aWR0aCgxNCwgJnVzdkRlbHRhV2lkdGhzLCAmdldpZHRoQ291bnRlcnMs ICZ3aWR0aCwKKwkJCQkJCQkJICAmY250RXhjZXB0aW9ucyk7CisJCWNtcF9vayhyZXMsICI9 PSIsIDApOworCQljbXBfb2sod2lkdGgsICI9PSIsIDcsICJXaWR0aHM9ezEsMiw3fSwgQ291 bnRlcnM9ezQsNiw0fSA9PiB3aWR0aD03Iik7CisJCWNtcF9vayhjbnRFeGNlcHRpb25zLCAi PT0iLCAwLAorCQkJICAgIldpZHRocz17MSwyLDd9LCBDb3VudGVycz17NCw2LDR9ID0+IGV4 Y3B0aW9uc19udW09MCIpOworCX0KKworCXRlc3RfY2FsY19leGNlcHRpb25zKDE0LCAzLCAo dWludDE2X3RbXSkgeyAxLCAyLCA3IH0sIC8qIHdpZHRocyBvZiBkZWx0YXMqLworCQkJCQkJ IDMsICh1aW50MTZfdFtdKSB7IDQsIDYsIDQgfSwJICAvKiBzdGF0aXN0aWNzICovCisJCQkJ CQkgNywJIC8qIHdpZHRoIG9mIHNob3J0IGRlbHRhcyAqLworCQkJCQkJIDApOyAvKiBudW1i ZXIgb2YgZXhjZXB0aW9ucyovCisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucygxNCwgMywgKHVp bnQxNl90W10pIHsgMSwgMiwgNyB9LCAvKiB3aWR0aHMgKi8KKwkJCQkJCSAzLCAodWludDE2 X3RbXSkgeyA2LCA3LCAxIH0sCSAgLyogc3RhdCAqLworCQkJCQkJIDIsIDEpOyAvKiBzaG9y dCBkZWx0YXMgd2lkdGgsIGV4Y2VwdGlvbnMgY291bnQqLworCisJdGVzdF9jYWxjX2V4Y2Vw dGlvbnMoNDAsIDMsICh1aW50MTZfdFtdKSB7IDUsIDYsIDEyIH0sIC8qIHdpZHRocyAqLwor CQkJCQkJIDMsICh1aW50MTZfdFtdKSB7IDM2LCAyLCAyIH0sCSAgIC8qIHN0YXQgKi8KKwkJ CQkJCSA1LCA0KTsgLyogc2hvcnQgZGVsdGFzIHdpZHRoLCBleGNlcHRpb25zIGNvdW50Ki8K KworCXRlc3RfY2FsY19leGNlcHRpb25zKDQwLCA0LCAodWludDE2X3RbXSkgeyA1LCA2LCA3 LCAxMiB9LCA0LAorCQkJCQkJICh1aW50MTZfdFtdKSB7IDM2LCAxLCAxLCAyIH0sIDUsIDQp OworCisJdGVzdF9jYWxjX2V4Y2VwdGlvbnMoNDAsIDQsICh1aW50MTZfdFtdKSB7IDUsIDYs IDcsIDEyIH0sIDQsCisJCQkJCQkgKHVpbnQxNl90W10pIHsgMzUsIDEsIDIsIDIgfSwgNiwg NCk7CisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucyg0MCwgNCwgKHVpbnQxNl90W10pIHsgNSwg NiwgNywgMTIgfSwgNCwKKwkJCQkJCSAodWludDE2X3RbXSkgeyAzNCwgMSwgMiwgMyB9LCA3 LCAzKTsKKworCXRlc3RfY2FsY19leGNlcHRpb25zKDQwLCA0LCAodWludDE2X3RbXSkgeyA1 LCA2LCA3LCAxMiB9LCA0LAorCQkJCQkJICh1aW50MTZfdFtdKSB7IDEsIDM0LCAyLCAzIH0s IDcsIDMpOworCisJdGVzdF9jYWxjX2V4Y2VwdGlvbnMoNDAsIDQsICh1aW50MTZfdFtdKSB7 IDUsIDYsIDcsIDEyIH0sIDQsCisJCQkJCQkgKHVpbnQxNl90W10pIHsgMSwgMzMsIDIsIDQg fSwgNywgNCk7CisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucyg0MCwgNCwgKHVpbnQxNl90W10p IHsgNSwgNiwgNywgMTIgfSwgNCwKKwkJCQkJCSAodWludDE2X3RbXSkgeyAxLCAzMiwgMiwg NSB9LCAxMiwgMCk7CisKKwlwcmludGYoIlRlc3QgRVhDRVBUSU9OUyBDQUxDVUxBVElPTiBQ QVNTRURcbiIpOworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PVxuXG4iKTsKKworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IERFTFRBIEZSQU1FIE9GIFJFRkVS RU5DRVMgUEFDS0lOR1xuIik7CisKKwl0ZXN0X2Rmb3IoMTYsCisJCQkgICh1aW50MTZfdFtd KSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwK KwkJCQkJCQkgMTUgfSwgLyogY250LCBhcnJheSAqLworCQkJICBERk9SX0VYQ19ET05UX1VT RSwgICAvKiBmbGFnIG9uIHVzZSBvZiBleGNlcHRpb25zICovCisJCQkgIDEsCQkJCSAgIC8q IGF3YWl0ZWQgd2lkdGggb2Ygc2hvcnQgZGVsdGFzICovCisJCQkgIDAsCQkJCSAgIC8qIGF3 YWl0ZWQgY291bnQgb2YgZXhjZXB0aW9ucyAqLworCQkJICAwLAkJCQkgICAvKiBhd2FpdGVk IGV4Y2VwdGlvbiB3aWR0aCovCisJCQkgIDAsCQkJCSAgIC8qIGF3YWl0ZWQgZXhjZXB0aW9u IHBvc2l0aW9uIHdpZHRoKi8KKwkJCSAgMTYsCQkJCSAgIC8qIGF3YWl0ZWQgYml0cyBjb3Vu dCAqLworCQkJICAyLAkJCQkgICAvKiBjbnRCeXRlQ291bnRBd2FpdGVkICovCisJCQkgIDE1 Ljk5LCAvKiBhd2FpdGVkIHJhdGlvIG1pbiB2YWx1ZSAocmF0aW8gPj0gMTUuOTkpICovCisJ CQkgICh1aW50OF90W10pIHsgMHhGRSwgMHhGRiB9KTsKKworCXRlc3RfZGZvcigxNiwKKwkJ CSAgKHVpbnQxNl90W10pIHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDEx LCAxMiwgMTMsIDE0LAorCQkJCQkJCSAxNSB9LCAvKiBjbnQsIGFycmF5ICovCisJCQkgIERG T1JfRVhDX1VTRSwgLyogZmxhZyBvbiB1c2Ugb2YgZXhjZXB0aW9ucyAqLworCQkJICAxLAkJ CS8qIGF3YWl0ZWQgd2lkdGggb2Ygc2hvcnQgZGVsdGFzICovCisJCQkgIDAsCQkJLyogYXdh aXRlZCBjb3VudCBvZiBleGNlcHRpb25zICovCisJCQkgIDAsCQkJLyogYXdhaXRlZCBleGNl cHRpb24gd2lkdGgqLworCQkJICAwLAkJCS8qIGF3YWl0ZWQgZXhjZXB0aW9uIHBvc2l0aW9u IHdpZHRoKi8KKwkJCSAgMTYsCQkJLyogYXdhaXRlZCBiaXRzIGNvdW50ICovCisJCQkgIDIs CQkJLyogY250Qnl0ZUNvdW50QXdhaXRlZCAqLworCQkJICAxNS45OSwJCS8qIGF3YWl0ZWQg cmF0aW8gbWluIHZhbHVlIChyYXRpbyA+PSAxNS45OSkgKi8KKwkJCSAgKHVpbnQ4X3RbXSkg eyAweEZFLCAweEZGIH0pOworCisJdGVzdF9kZm9yKDE2LAorCQkJICAodWludDE2X3RbXSkg eyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsCisJ CQkJCQkJIDEwMjMgfSwgLyogY250LCBhcnJheSAqLworCQkJICBERk9SX0VYQ19ET05UX1VT RSwJIC8qIGZsYWcgb24gdXNlIG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMTAsCQkJCQkgLyog YXdhaXRlZCB3aWR0aCBvZiBzaG9ydCBkZWx0YXMgKi8KKwkJCSAgMCwJCQkJCSAvKiBhd2Fp dGVkIGNvdW50IG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMCwJCQkJCSAvKiBhd2FpdGVkIGV4 Y2VwdGlvbiB3aWR0aCovCisJCQkgIDAsCQkJCQkgLyogYXdhaXRlZCBleGNlcHRpb24gcG9z aXRpb24gd2lkdGgqLworCQkJICAxMCAqIDE2LAkJCQkgLyogYXdhaXRlZCBiaXRzIGNvdW50 ICovCisJCQkgIDIwLAkJCQkJIC8qIGF3YWl0ZWQgYnl0ZXMgY291bnQgKi8KKwkJCSAgMS41 LAkJCQkJIC8qIGF3YWl0ZWQgcmF0aW8gbWluIHZhbHVlICovCisJCQkgICh1aW50OF90W10p IHsgMHgwMCwgMHgwNCwgMHgxMCwgMHg0MCwgMHgwMCwgMHgwMSwgMHgwNCwKKwkJCQkJCQkw eDEwLCAweDQwLCAweDAwLCAweDAxLCAweDA0LCAweDEwLCAweDQwLAorCQkJCQkJCTB4MDAs IDB4MDEsIDB4MDQsIDB4MTAsIDB4NDAsIDB4RkMgfSk7CisKKwl0ZXN0X2Rmb3IoMTYsCisJ CQkgICh1aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAx MSwgMTIsIDEzLCAxNCwKKwkJCQkJCQkgMTAyMyB9LCAvKiBjbnQsIGFycmF5ICovCisJCQkg IERGT1JfRVhDX1VTRSwJCQkgLyogZmxhZyBvbiB1c2Ugb2YgZXhjZXB0aW9ucyAqLworCQkJ ICAxLAkJCQkJIC8qIGF3YWl0ZWQgd2lkdGggb2Ygc2hvcnQgZGVsdGFzICovCisJCQkgIDEs CQkJCQkgLyogYXdhaXRlZCBjb3VudCBvZiBleGNlcHRpb25zICovCisJCQkgIDksCQkJCQkg LyogYXdhaXRlZCBleGNlcHRpb24gd2lkdGgqLworCQkJICA0LAkJCQkJIC8qIGF3YWl0ZWQg ZXhjZXB0aW9uIHBvc2l0aW9uIHdpZHRoKi8KKwkJCSAgMTYgKiAxICsgOSArIDQsCQkgLyog YXdhaXRlZCBiaXRzIGNvdW50ICovCisJCQkgIDQsCQkJCQkgLyogYXdhaXRlZCBieXRlcyBj b3VudCAqLworCQkJICA3Ljk5LAkJCQkJIC8qIGF3YWl0ZWQgcmF0aW8gbWluIHZhbHVlICov CisJCQkgICh1aW50OF90W10pIHsgMHhGRSwgMHhGRiwgMHhGOCwgMHgxRiB9KTsKKworCXRl c3RfZGZvcigzMCwgLyogY250ICovCisJCQkJCSAgKHVpbnQxNl90W10pIHsgMCwgMSwgMiwg MywgNCwKKwkJCQkJCQkJCSA1LCA2LCA3LCA4LCA5LAorICAvKiBkZWx0YT0yLCBwb3M9MTAs IGRlbHRhcG9zPTEwICovIDExLCAxMiwgMTMsIDE0LCAxNSwKKwkJCQkJCQkJCSAxNiwgMTcs IDE4LCAxOSwgMjAsCisJCQkJCQkJCQkgMjEsIDIyLCAyMywgMjQsIDI1LAorICAvKiBkZWx0 YT0zLCBwb3M9MjUsIGRlbHRhcG9zPTE1ICovIDI4LCAyOSwgMzAsIDMxLAorICAvKiBkZWx0 YT0zLCBwb3M9MjksIGRlbHRhcG9zPTQgKi8JIDM0IH0sICAJCQkJLyogYXJyYXkgKi8KKwkJ CSAgREZPUl9FWENfVVNFLAkJCSAgLyogZmxhZyBvbiB1c2Ugb2YgZXhjZXB0aW9ucyAqLwor CQkJICAxLAkJCQkJICAvKiBhd2FpdGVkIHdpZHRoIG9mIHNob3J0IGRlbHRhcyAqLworCQkJ ICAzLAkJCQkJICAvKiBhd2FpdGVkIGNvdW50IG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMSwJ CQkJCSAgLyogYXdhaXRlZCBleGNlcHRpb24gd2lkdGgqLworCQkJICA0LAkJCQkJICAvKiBh d2FpdGVkIGV4Y2VwdGlvbiBwb3NpdGlvbiB3aWR0aCovCisJCQkgIDMwICogMSArIDMgKiAx ICsgMyAqIDQsIC8qIGF3YWl0ZWQgYml0cyBjb3VudCAqLworCQkJICA2LAkJCQkJICAvKiBh d2FpdGVkIGJ5dGVzIGNvdW50ICovCisJCQkgIDkuOTksCQkJCQkgIC8qIGF3YWl0ZWQgcmF0 aW8gbWluIHZhbHVlICovCisJCQkgICh1aW50OF90W10pIHsgMHhGRSwgMHhGQiwgMHhGRiwg MHhGRiwgMHhGNSwgMHgwOSB9KTsKKworCXByaW50ZigiVGVzdCBERUxUQSBGUkFNRSBPRiBS RUZFUkVOQ0VTIFBBQ0tJTkcgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlkb25lX3Rlc3RpbmcoKTsK K30KLS0gCjIuNTMuMAoK --------------Ii8KhORFqzB9FtFJzNJvGcrG Content-Type: text/x-patch; charset=UTF-8; name="v02-0003-Use-Delta-Frame-of-Reference-DFoR-to-compress-pr.patch" Content-Disposition: attachment; filename*0="v02-0003-Use-Delta-Frame-of-Reference-DFoR-to-compress-pr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlNTgxNzVmYjdjOTM2NzhmNmY5ODJhNzk3NzIwNmM5Mjg3NmU5MGNkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYwMiAzLzNdIFVzZSBEZWx0YSBGcmFtZSBvZiBSZWZlcmVuY2UgKERGb1IpIHRvIGNv bXByZXNzCiBwcnVuZS9mcmVlemUgcmVjb3Jkcy4KCkEgcHJ1bmUvZnJlZXplIHJlY29yZCBj b250YWlucyBmb3VyIHNlcXVlbmNlcyBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcKZnJvemVu LCByZWRpcmVjdGVkLCB1bnVzZWQsIGFuZCBkZWFkIHR1cGxlcy4gVXNpbmcgREZvUiBhbGdv cml0aG1zLCB0aGUKYHVudXNlZGAgYW5kIGBkZWFkYCBzZXF1ZW5jZXMgYXJlIG5vdyBjb21w cmVzc2VkLiBUaGUgYGZyb3plbmAKYW5kIGByZWRpcmVjdGVkYCBzZXF1ZW5jZXMgY2Fubm90 IGJlIGNvbXByZXNzZWQgYmVjYXVzZSB0aGUgb3JkZXIgb2YKdGhlaXIgZWxlbWVudHMgaXMg c2lnbmlmaWNhbnQsIGFuZCBERm9SIGRvZXMgbm90IHN1cHBvcnQgdW5zb3J0ZWQKc2VxdWVu Y2VzIHlldC4gVGhlIHRoZW9yZXRpY2FsIGNvbXByZXNzaW9uIHJhdGlvIGZvciBkZm9yX3Ux NiBjYW4gcmVhY2gKdXAgdG8gMTYuCgpUaGUgbmV3IEdVQyB3YWxfcHJ1bmVfZGZvcl9jb21w cmVzc2lvbiBjb250cm9scyAoZW5hYmxlcyBvcgpkaXNhYmxlcykgY29tcHJlc3Npb24gZm9y IHBydW5lL2ZyZWV6ZSByZWNvcmRzLgoKQW4gaW50ZWdyYWwgVEFQIHRlc3QsIDA1Ml9wcnVu ZV9kZm9yX2NvbXByZXNzaW9uLnBsLCBoYXMgYmVlbgppbXBsZW1lbnRlZC4gSXQgZGVtb25z dHJhdGVzIGFuIGF2ZXJhZ2UgY29tcHJlc3Npb24gcmF0aW8gb2YgYXQgbGVhc3QgNQp3aGVu IGFuYWx5emluZyBwcnVuZS9mcmVlemUgcmVjb3JkcyBpbiBwcmFjdGljZS4KCkF1dGhvcjog RXZnZW55IFZvcm9wYWV2IDxldmdlbnkudm9yb3BhZXZAdGFudG9ybGFicy5jb20+IDxldm9y b3BAZ21haWwuY29tPgpSZXZpZXdlZCBieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRl eC10ZWFtLnJ1PgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMg ICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICAgIHwgMTQxICsrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy9NYWtlZmlsZSAgICAgICAgICB8ICAgMSArCiAuLi4vYWNjZXNzL3JtZ3JkZXNj L2hlYXBhbV94bG9nX2Rmb3IuYyAgICAgICAgfCAxMDkgKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyAgICAgICAgfCAgNDkgKysrKy0tCiBz cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQgICAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgICA3ICsK IHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDIg Kwogc3JjL2Jpbi9wZ193YWxkdW1wLy5naXRpZ25vcmUgICAgICAgICAgICAgICAgIHwgICA5 ICsKIHNyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAy NiArKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCAgICAgICAgICAgICAg fCAgIDggKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZ19kZm9yLmggICAgICAg ICB8IDEzNyArKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9kZm9yL01ha2VmaWxlICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDIgKwogLi4uL3JlY292ZXJ5L3QvMDUyX3BydW5lX2Rm b3JfY29tcHJlc3Npb24ucGwgIHwgMTU1ICsrKysrKysrKysrKysrKysrKwogMTYgZmlsZXMg Y2hhbmdlZCwgNjI3IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwYW1feGxvZ19kZm9y LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2df ZGZvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTJfcHJ1 bmVfZGZvcl9jb21wcmVzc2lvbi5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f eGxvZy5jCmluZGV4IDFkYTc3NGMxNTM2Li43Zjk2YTMwZGQ3MSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRl ICJhY2Nlc3MvYnVmbWFzay5oIgogI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNs dWRlICJhY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNp YmlsaXR5bWFwLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nl c3MveGxvZ3V0aWxzLmgiCkBAIC0xMDUsMTEgKzEwNiwyMCBAQCBoZWFwX3hsb2dfcHJ1bmVf ZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQljaGFyCSAgICpkYXRhcHRyID0g WExvZ1JlY0dldEJsb2NrRGF0YShyZWNvcmQsIDAsICZkYXRhbGVuKTsKIAkJYm9vbAkJZG9f cHJ1bmU7CiAKKwkJLyoKKwkJICogREZvUiB1bnBhY2tpbmcgbmVlZHMgb3V0ZXIgYnVmZmVy cyBmb3Igc2F2aW5nIHJlc3VsdHMgYW5kIGZvcgorCQkgKiBhbGxvY2F0aW5nIGNvbnRhaW5l cnMgdXNlZCBkdXJpbmcgZGVjb21wcmVzc2lvbi4gMiBidWZmZXIgcGFydHMgYXJlCisJCSAq IGludGVuZGVkIGZvciBzYXZpbmcgc2VxdWVuY2VzIG9mIG9mZnNldHMgb2YgZGVhZCBhbmQg dW51c2VkIHR1cGxlcy4KKwkJICogQWRkaXRpb25hbCB0aHJlZSBjaHVua3MgYXJlIG5lZWRl ZCBmb3IgaW50ZXJuYWwgbmVlZHMgb2YgdGhlCisJCSAqIGRmb3JfdW5wYWNrIGZ1bmN0aW9u LgorCQkgKi8KKwkJdWludDggZGZvcl9idWZbNSAqIERGT1JfQlVGX1BBUlRfU0laRV07CisK IAkJaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoZGF0YXB0ciwgeGxy ZWMuZmxhZ3MsCiAJCQkJCQkJCQkJCSAgICZucGxhbnMsICZwbGFucywgJmZyel9vZmZzZXRz LAogCQkJCQkJCQkJCQkgICAmbnJlZGlyZWN0ZWQsICZyZWRpcmVjdGVkLAogCQkJCQkJCQkJ CQkgICAmbmRlYWQsICZub3dkZWFkLAotCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3Vu dXNlZCk7CisJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkLCBkZm9yX2J1Zik7 CiAKIAkJZG9fcHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVz ZWQgPiAwOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDhkOWYw Njk0MjA2Li5jMTc1NzNkMjBlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKICNp bmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hsb2cuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFt X3hsb2dfZGZvci5oIgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNs dWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK QEAgLTE5NSw3ICsxOTYsNiBAQCBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMo UGFnZSBwYWdlKTsKIHN0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShib29sIGRp ZF90dXBsZV9oaW50X2ZwaSwgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19oaW50X3BydW5lLAog CQkJCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUpOwogCi0KIC8qCiAgKiBPcHRpb25hbGx5 IHBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBpbiB0aGUgc3BlY2lmaWVkIHBhZ2Uu CiAgKgpAQCAtMjEzMCw2ICsyMTMwLDI0IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBU dXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKIAlyZXR1cm4gbnBsYW5zOwogfQog CisvKgorICogQ29tcGFyYXRvciBmb3Igb2Zmc2V0cy4KKyAqLworc3RhdGljIGludAorb2Zm c2V0X2NtcChjb25zdCB2b2lkICphcmcxLCBjb25zdCB2b2lkICphcmcyKQoreworCWNvbnN0 IE9mZnNldE51bWJlciAqb2Zmc2V0MSA9IGFyZzE7CisJY29uc3QgT2Zmc2V0TnVtYmVyICpv ZmZzZXQyID0gYXJnMjsKKwlyZXR1cm4gKCpvZmZzZXQxID4gKm9mZnNldDIpIC0gKCpvZmZz ZXQxIDwgKm9mZnNldDIpOworfQorCisjZGVmaW5lIFNUX1NPUlQgc29ydF9vZmZzZXRzCisj ZGVmaW5lIFNUX0VMRU1FTlRfVFlQRV9WT0lECisjZGVmaW5lIFNUX0NPTVBBUkUoYSwgYikg b2Zmc2V0X2NtcChhLCBiKQorI2RlZmluZSBTVF9TQ09QRSBzdGF0aWMKKyNkZWZpbmUgU1Rf REVGSU5FCisjaW5jbHVkZSAibGliL3NvcnRfdGVtcGxhdGUuaCIKKwogLyoKICAqIFdyaXRl IGFuIFhMT0dfSEVBUDJfUFJVTkUqIFdBTCByZWNvcmQKICAqCkBAIC0yMTg0LDExICsyMjAy LDM0IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJYm9vbAkJZG9fcHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRl YWQgPiAwIHx8IG51bnVzZWQgPiAwOwogCWJvb2wJCWRvX3NldF92bSA9IHZtZmxhZ3MgJiBW SVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7CiAKKwlkZm9yX21ldGFfdCBkZWFkX21ldGEgPSB7 IDAgfTsKKwlkZm9yX21ldGFfdCB1bnVzZWRfbWV0YSA9IHsgMCB9OworCisJdWludDggZGVh ZF9tZXRhX3BhY2tbTUFYX1BBQ0tFRF9NRVRBX1NJWkVdOworCXVpbnQ4IHVudXNlZF9tZXRh X3BhY2tbTUFYX1BBQ0tFRF9NRVRBX1NJWkVdOworCisJLyoKKwkgKiBTaW5jZSB0aGlzIGNv ZGUgaXMgcnVuIGluIGEgY3JpdGljYWwgc2VjdGlvbiB3ZSBjYW4ndCB1c2UgZHluYW1pYwor CSAqIGFsbG9jYXRpb24gZHVyaW5nIERGb1IgcGFja2luZywgYnV0IHdlIGNhbiB1c2UgYnVm ZmVycyBhbGxvY2F0ZWQgaW4gdGhlCisJICogc3RhY2suIFdlIG5lZWQgYXQgbWF4aW11bToK KwkgKiAxKSAyICogREZPUl9CVUZfUEFSVF9TSVpFCisJICogICAgICAgIC0gZm9yIDIgcGFj a2VkIHNlcXVlbmNlczogZGVhZCwgdW51c2VkCisJICogMikgMyAqIERGT1JfQlVGX1BBUlRf U0laRQorCSAqIAkJICAtIGZvciBpbnRlcm5hbCBuZWVkcyBvZiB0aGUgZGZvcl9wYWNrIGZ1 bmN0aW9uLgorCSAqCisJICogT3ZlcmFsbCwgNSAqIERGT1JfQlVGX1BBUlRfU0laRQorCSAq LworCXVpbnQ4IGRmb3JfYnVmWzUgKiBERk9SX0JVRl9QQVJUX1NJWkVdOworCiAJQXNzZXJ0 KCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZsYWdzKTsKIAog CXhscmVjLmZsYWdzID0gMDsKIAlyZWdidWZfZmxhZ3NfaGVhcCA9IFJFR0JVRl9TVEFOREFS RDsKIAorCS8qIEhldXJpc3RpY2FsbHkgZXN0aW1hdGVkIHRocmVzaG9sZCBmb3IgdHVybmlu ZyBvbiBERm9SIGNvbXByZXNzaW9uICovCisJaWYgKHdhbF9wcnVuZV9kZm9yX2NvbXByZXNz aW9uICYmIChuZGVhZCA+IDkgfHwgbnVudXNlZCA+IDkpKQorCQl4bHJlYy5mbGFncyB8PSBY TEhQX0RGT1JfQ09NUFJFU1NFRDsKKwogCS8qCiAJICogV2UgY2FuIGF2b2lkIGFuIEZQSSBv ZiB0aGUgaGVhcCBwYWdlIGlmIHRoZSBvbmx5IG1vZGlmaWNhdGlvbiB3ZSBhcmUKIAkgKiBt YWtpbmcgdG8gaXQgaXMgdG8gc2V0IFBEX0FMTF9WSVNJQkxFIGFuZCBjaGVja3N1bXMvd2Fs X2xvZ19oaW50cyBhcmUKQEAgLTIyMTMsNiArMjI1NCwxMCBAQCBsb2dfaGVhcF9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCWlmIChkb19z ZXRfdm0pCiAJCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCB2bWJ1ZmZlciwgMCk7CiAKKwkvKgor CSAqIHhsaHBfZnJlZXplX3BsYW5zIGlzIGFycmF5IG9mIHN0cnVjdHVyZXMgYW5kIGlzIG5v dCBhIHNlcXVlbmNlCisJICogb2YgaW50ZWdlcnMsIHRoYXQgaXMgd2h5IHdlIGNhbm5vdCB1 c2UgREZvUiBjb21wcmVzc2lvbiBoZXJlLgorCSAqLwogCWlmIChuZnJvemVuID4gMCkKIAl7 CiAJCWludAkJCW5wbGFuczsKQEAgLTIyNDEsMjYgKzIyODYsOTIgQEAgbG9nX2hlYXBfcHJ1 bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJWExv Z1JlZ2lzdGVyQnVmRGF0YSgwLCByZWRpcmVjdGVkLAogCQkJCQkJCXNpemVvZihPZmZzZXRO dW1iZXJbMl0pICogbnJlZGlyZWN0ZWQpOwogCX0KLQlpZiAobmRlYWQgPiAwKQorCWlmICgo eGxyZWMuZmxhZ3MgJiBYTEhQX0RGT1JfQ09NUFJFU1NFRCkgIT0gMCkKIAl7Ci0JCXhscmVj LmZsYWdzIHw9IFhMSFBfSEFTX0RFQURfSVRFTVM7CisJCWludCBkZWFkX3BhY2tfcmVzID0g MDsKKwkJaW50IHVudXNlZF9wYWNrX3JlcyA9IDA7CiAKLQkJZGVhZF9pdGVtcy5udGFyZ2V0 cyA9IG5kZWFkOwotCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZkZWFkX2l0ZW1zLAotCQkJ CQkJCW9mZnNldG9mKHhsaHBfcHJ1bmVfaXRlbXMsIGRhdGEpKTsKLQkJWExvZ1JlZ2lzdGVy QnVmRGF0YSgwLCBkZWFkLAotCQkJCQkJCXNpemVvZihPZmZzZXROdW1iZXIpICogbmRlYWQp OworCQkvKgorCQkgKiBEZWFkIHR1cGxlIG9mZnNldHMgYXJlIHN1YmplY3QgdG8gYmUgcGFj a2VkIHdpdGggREZvUi4KKwkJICogQWZ0ZXIgdGhhdCB3ZSBoYXZlOgorCQkgKiAJCWRlYWRf bWV0YS5wYWNrID0gZGZvcl9idWYgKyBERk9SX0JVRl9QQVJUX1NJWkU7CisJCSAqLworCQlp ZiAobmRlYWQgPiAwKQorCQl7CisJCQlzb3J0X29mZnNldHMoZGVhZCwgbmRlYWQsIHNpemVv ZihPZmZzZXROdW1iZXIpKTsKKwkJCWRlYWRfcGFja19yZXMgPSBkZm9yX3UxNl9wYWNrKG5k ZWFkLCBkZWFkLCBERk9SX0VYQ19VU0UsICZkZWFkX21ldGEsCisJCQkJCQkJCQkJICA0ICog REZPUl9CVUZfUEFSVF9TSVpFLCBkZm9yX2J1Zik7CisJCX0KKworCQkvKgorCQkgKiBVbnVz ZWQgdHVwbGUgb2Zmc2V0cyBhcmUgc3ViamVjdCB0byBiZSBwYWNrZWQgd2l0aCBERm9SLgor CQkgKiBBZnRlciB0aGF0IHdlIGhhdmU6CisJCSAqIAkJdW51c2VkX21ldGEucGFjayA9IGRm b3JfYnVmICsgMiAqIERGT1JfQlVGX1BBUlRfU0laRTsKKwkJICovCisJCWlmIChudW51c2Vk ID4gMCkKKwkJeworCQkJc29ydF9vZmZzZXRzKHVudXNlZCwgbnVudXNlZCwgc2l6ZW9mKE9m ZnNldE51bWJlcikpOworCQkJdW51c2VkX3BhY2tfcmVzID0gZGZvcl91MTZfcGFjayhudW51 c2VkLCB1bnVzZWQsIERGT1JfRVhDX1VTRSwKKwkJCQkJCQkJCQkJJnVudXNlZF9tZXRhLAor CQkJCQkJCQkJCQk0ICogREZPUl9CVUZfUEFSVF9TSVpFLAorCQkJCQkJCQkJCQlkZm9yX2J1 ZiArIERGT1JfQlVGX1BBUlRfU0laRSk7CisJCX0KKworCQlpZiAoZGVhZF9wYWNrX3JlcyA9 PSAwICYmIHVudXNlZF9wYWNrX3JlcyA9PSAwKQorCQl7CisJCQkvKiBBbGwgc3RhZ2VzIG9m IHBhY2tpbmcgaGF2ZSBzdWNjZWVkZWQuIFdlIGNhbiBzYXZlIERGb1IgcGFja2V0cworCQkJ ICogaW50byBsb2cgKi8KKwkJCXNpemVfdCBtZXRhX3BhY2tfc3o7CisJCQlpZiAobmRlYWQg PiAwKQorCQkJeworCQkJCXhscmVjLmZsYWdzIHw9IFhMSFBfSEFTX0RFQURfSVRFTVM7CisK KwkJCQltZXRhX3BhY2tfc3ogPSBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplX3BhY2tfbWV0 YSgKKwkJCQkJJmRlYWRfbWV0YSwgZGVhZF9tZXRhX3BhY2spOworCisJCQkJWExvZ1JlZ2lz dGVyQnVmRGF0YSgwLCAmZGVhZF9tZXRhX3BhY2ssIG1ldGFfcGFja19zeik7CisJCQkJWExv Z1JlZ2lzdGVyQnVmRGF0YSgwLCBkZWFkX21ldGEucGFjaywgZGVhZF9tZXRhLm5ieXRlcyk7 CisJCQl9CisJCQlpZiAobnVudXNlZCA+IDApCisJCQl7CisJCQkJeGxyZWMuZmxhZ3MgfD0g WExIUF9IQVNfTk9XX1VOVVNFRF9JVEVNUzsKKworCQkJCW1ldGFfcGFja19zeiA9IGxvZ19o ZWFwX3BydW5lX2FuZF9mcmVlemVfcGFja19tZXRhKAorCQkJCQkmdW51c2VkX21ldGEsIHVu dXNlZF9tZXRhX3BhY2spOworCisJCQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCAmdW51c2Vk X21ldGFfcGFjaywgbWV0YV9wYWNrX3N6KTsKKwkJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAs IHVudXNlZF9tZXRhLnBhY2ssIHVudXNlZF9tZXRhLm5ieXRlcyk7CisJCQl9CisJCX0KKwkJ ZWxzZQorCQl7CisJCQkvKiBPdGhlcndpc2UsIHdlIGNhbid0IHVzZSBERm9SIGNvbXByZXNz aW9uICovCisJCQl4bHJlYy5mbGFncyAmPSB+WExIUF9ERk9SX0NPTVBSRVNTRUQ7CisJCX0K IAl9Ci0JaWYgKG51bnVzZWQgPiAwKQorCisJaWYgKCh4bHJlYy5mbGFncyAmIFhMSFBfREZP Ul9DT01QUkVTU0VEKSA9PSAwKQogCXsKLQkJeGxyZWMuZmxhZ3MgfD0gWExIUF9IQVNfTk9X X1VOVVNFRF9JVEVNUzsKKwkJaWYgKG5kZWFkID4gMCkKKwkJeworCQkJeGxyZWMuZmxhZ3Mg fD0gWExIUF9IQVNfREVBRF9JVEVNUzsKIAotCQl1bnVzZWRfaXRlbXMubnRhcmdldHMgPSBu dW51c2VkOwotCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZ1bnVzZWRfaXRlbXMsCi0JCQkJ CQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSkpOwotCQlYTG9nUmVnaXN0ZXJC dWZEYXRhKDAsIHVudXNlZCwKLQkJCQkJCQlzaXplb2YoT2Zmc2V0TnVtYmVyKSAqIG51bnVz ZWQpOworCQkJZGVhZF9pdGVtcy5udGFyZ2V0cyA9IG5kZWFkOworCQkJWExvZ1JlZ2lzdGVy QnVmRGF0YSgwLCAmZGVhZF9pdGVtcywKKwkJCQkJCQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9p dGVtcywgZGF0YSkpOworCQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCBkZWFkLCBzaXplb2Yo T2Zmc2V0TnVtYmVyKSAqIG5kZWFkKTsKKwkJfQorCQlpZiAobnVudXNlZCA+IDApCisJCXsK KwkJCXhscmVjLmZsYWdzIHw9IFhMSFBfSEFTX05PV19VTlVTRURfSVRFTVM7CisKKwkJCXVu dXNlZF9pdGVtcy5udGFyZ2V0cyA9IG51bnVzZWQ7CisJCQlYTG9nUmVnaXN0ZXJCdWZEYXRh KDAsICZ1bnVzZWRfaXRlbXMsCisJCQkJCQkJCW9mZnNldG9mKHhsaHBfcHJ1bmVfaXRlbXMs IGRhdGEpKTsKKwkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgdW51c2VkLCBzaXplb2YoT2Zm c2V0TnVtYmVyKSAqIG51bnVzZWQpOworCQl9CiAJfQorCiAJaWYgKG5mcm96ZW4gPiAwKQog CQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIGZyel9vZmZzZXRzLAogCQkJCQkJCXNpemVvZihP ZmZzZXROdW1iZXIpICogbmZyb3plbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFr ZWZpbGUKaW5kZXggY2Q5NWVlYzM3ZjEuLjQ5ZTljNDYxNDVmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL01ha2VmaWxlCkBAIC0xNyw2ICsxNyw3IEBAIE9CSlMgPSBcCiAJZ2lu ZGVzYy5vIFwKIAlnaXN0ZGVzYy5vIFwKIAloYXNoZGVzYy5vIFwKKwloZWFwYW1feGxvZ19k Zm9yLm8gXAogCWhlYXBkZXNjLm8gXAogCWxvZ2ljYWxtc2dkZXNjLm8gXAogCW14YWN0ZGVz Yy5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwYW1f eGxvZ19kZm9yLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGFtX3hsb2df ZGZvci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40N2ZhMDAw ZTM2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9o ZWFwYW1feGxvZ19kZm9yLmMKQEAgLTAsMCArMSwxMDkgQEAKKyNpbmNsdWRlICJsaWIvYml0 cGFja191MTYuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oIgorCiti b29sIHdhbF9wcnVuZV9kZm9yX2NvbXByZXNzaW9uID0gdHJ1ZTsKKworc2l6ZV90Citsb2df aGVhcF9wcnVuZV9hbmRfZnJlZXplX3BhY2tfbWV0YShjb25zdCBkZm9yX21ldGFfdCAqbWV0 YSwgdWludDggYnVmW10pCit7CisJc2l6ZV90IGNhcmV0ID0gMDsKKwljYXJldCA9IGJpdHBh Y2tfdTE2X3BhY2soYnVmLCBjYXJldCwgbWV0YS0+aXRlbV9jbnQsCisJCQkJCQkJIFhMSFBG X01FVEFfSVRFTV9DT1VOVF9TWik7CisJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKGJ1Ziwg Y2FyZXQsIG1ldGEtPmRlbHRhX3dpZCwKKwkJCQkJCQkgWExIUEZfTUVUQV9ERUxUQV9XSURU SF9TWik7CisJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKGJ1ZiwgY2FyZXQsIChtZXRhLT5l eGNfY250ID09IDApID8gMCA6IDEsCisJCQkJCQkJIFhMSFBGX01FVEFfRVhDRVBUSU9OX0ZM QUdfU1opOworCWlmIChtZXRhLT5leGNfY250ICE9IDApCisJeworCQljYXJldCA9IGJpdHBh Y2tfdTE2X3BhY2soYnVmLCBjYXJldCwgbWV0YS0+ZXhjX2NudCwKKwkJCQkJCQkJIFhMSFBG X01FVEFfRVhDRVBUSU9OX0NPVU5UX1NaKTsKKwkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNr KGJ1ZiwgY2FyZXQsIG1ldGEtPmV4Y193aWQsCisJCQkJCQkJCSBYTEhQRl9NRVRBX0VYQ0VQ VElPTl9XSURUSF9TWik7CisJCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhidWYsIGNhcmV0 LCBtZXRhLT5leGNfcG9zX3dpZCwKKwkJCQkJCQkJIFhMSFBGX01FVEFfRVhDRVBUSU9OX1BP U0lUSU9OX1dJRFRIX1NaKTsKKwl9CisJQXNzZXJ0KG1ldGEtPml0ZW1fY250ICE9IDApOwor CUFzc2VydChtZXRhLT5kZWx0YV93aWQgIT0gMCk7CisJQXNzZXJ0KG1ldGEtPm5ieXRlcyAh PSAwKTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwl7CisJCWRmb3JfbWV0YV90 IGNoZWNrZXI7CisJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemVfdW5wYWNrX21ldGEoJmNo ZWNrZXIsIGJ1Zik7CisJCUFzc2VydChtZXRhLT5pdGVtX2NudCA9PSBjaGVja2VyLml0ZW1f Y250KTsKKwkJQXNzZXJ0KG1ldGEtPmRlbHRhX3dpZCA9PSBjaGVja2VyLmRlbHRhX3dpZCk7 CisJCUFzc2VydChtZXRhLT5leGNfY250ID09IGNoZWNrZXIuZXhjX2NudCk7CisJCUFzc2Vy dChtZXRhLT5leGNfd2lkID09IGNoZWNrZXIuZXhjX3dpZCk7CisJCUFzc2VydChtZXRhLT5l eGNfcG9zX3dpZCA9PSBjaGVja2VyLmV4Y19wb3Nfd2lkKTsKKwl9CisjZW5kaWYKKwlyZXR1 cm4gKGNhcmV0ICsgNykgLyA4OyAvKiB0aGUgbGVuZ3RoIG9mIHBhY2tlZCBkZm9yX21ldGEs IGluIGJ5dGVzKi8KK30KKworc2l6ZV90Citsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplX3Vu cGFja19tZXRhKGRmb3JfbWV0YV90ICptZXRhLAorCQkJCQkJCQkJICBjb25zdCB1aW50OCBw YWNrZWRfbWV0YVtdKQoreworCXNpemVfdCBjYXJldCA9IDA7CisJYm9vbCBleGM7CisKKwlt ZXRhLT5pdGVtX2NudCA9IGJpdHBhY2tfdTE2X3VucGFjayhwYWNrZWRfbWV0YSwgJmNhcmV0 LAorCQkJCQkJCQkJCVhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWik7CisJbWV0YS0+ZGVsdGFf d2lkID0gYml0cGFja191MTZfdW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJCQkJ CQkJIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1opOworCWV4YyA9IGJpdHBhY2tfdTE2X3Vu cGFjayhwYWNrZWRfbWV0YSwgJmNhcmV0LCBYTEhQRl9NRVRBX0VYQ0VQVElPTl9GTEFHX1Na KTsKKworCWlmIChleGMpCisJeworCQltZXRhLT5leGNfY250ID0gYml0cGFja191MTZfdW5w YWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJCQkJCQkJIFhMSFBGX01FVEFfRVhDRVBU SU9OX0NPVU5UX1NaKTsKKwkJbWV0YS0+ZXhjX3dpZCA9IGJpdHBhY2tfdTE2X3VucGFjayhw YWNrZWRfbWV0YSwgJmNhcmV0LAorCQkJCQkJCQkJCSBYTEhQRl9NRVRBX0VYQ0VQVElPTl9X SURUSF9TWik7CisJCW1ldGEtPmV4Y19wb3Nfd2lkID0KKwkJCWJpdHBhY2tfdTE2X3VucGFj ayhwYWNrZWRfbWV0YSwgJmNhcmV0LAorCQkJCQkJCSAgIFhMSFBGX01FVEFfRVhDRVBUSU9O X1BPU0lUSU9OX1dJRFRIX1NaKTsKKwl9CisJZWxzZQorCXsKKwkJbWV0YS0+ZXhjX2NudCA9 IDA7CisJCW1ldGEtPmV4Y193aWQgPSAwOworCQltZXRhLT5leGNfcG9zX3dpZCA9IDA7CisJ fQorCW1ldGEtPm5ieXRlcyA9IGRmb3JfdTE2X2NhbGNfbmJ5dGVzKCptZXRhKTsKKworCUFz c2VydChtZXRhLT5pdGVtX2NudCAhPSAwKTsKKwlBc3NlcnQobWV0YS0+ZGVsdGFfd2lkICE9 IDApOworCUFzc2VydChtZXRhLT5uYnl0ZXMgIT0gMCk7CisKKwlyZXR1cm4gKGNhcmV0ICsg NykgLyA4OworfQorCit2b2lkCitoZWFwX3hsb2dfZGVzZXJpYWxpemVfZGZvcihjaGFyICoq Y3Vyc29yLCBpbnQgKm5pdGVtcywKKwkJCQkJCSAgIE9mZnNldE51bWJlciAqKml0ZW1zLAor CQkJCQkJICAgdWludDggZGZvcl9idWZbXSkKK3sKKwlkZm9yX21ldGFfdCBkZm9yID0gezB9 OworCXNpemVfdCBwYWNrZWRfbWV0YV9uYnl0ZXM7CisJdW5pcXNvcnR2ZWN0X3UxNl90IHZl Y3Q7CisKKwlwYWNrZWRfbWV0YV9uYnl0ZXMgPQorCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJl ZXplX3VucGFja19tZXRhKCZkZm9yLCAodWludDgqKSAqY3Vyc29yKTsKKworCSpjdXJzb3Ig Kz0gcGFja2VkX21ldGFfbmJ5dGVzOworCisJZGZvci5wYWNrID0gKHVpbnQ4ICopKmN1cnNv cjsKKwlkZm9yX3UxNl91bnBhY2soJmRmb3IsICZ2ZWN0LCA0ICogREZPUl9CVUZfUEFSVF9T SVpFLAorCQkJCQlkZm9yX2J1Zik7CisKKwkqY3Vyc29yICs9IGRmb3IubmJ5dGVzOworCisJ QXNzZXJ0KGRmb3IubmJ5dGVzICE9IDApOworCisJQXNzZXJ0KHZlY3QuY250ICE9IDApOwor CUFzc2VydCh2ZWN0Lm1lbV9pc19vdXRlciA9PSB0cnVlKTsKKwlBc3NlcnQoKHZvaWQqKXZl Y3QubSA9PSAodm9pZCopZGZvcl9idWYpOworCisJKm5pdGVtcyA9IHZlY3QuY250OworCSpp dGVtcyA9IHZlY3QubTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNj LmMKaW5kZXggMDJhZTkxNjUzYzEuLmU4ZTc1NjlkYTljIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgInBv c3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hsb2cuaCIKKyNpbmNsdWRl ICJhY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oIgogI2luY2x1ZGUgImFjY2Vzcy9ybWdyZGVz Y191dGlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc3RhbmRieWRlZnMuaCIKQEAgLTEwOCw3ICsxMDksOCBAQCBoZWFw X3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQx NiBmbGFncywKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqKmZyel9vZmZzZXRzLAogCQkJ CQkJCQkJICAgaW50ICpucmVkaXJlY3RlZCwgT2Zmc2V0TnVtYmVyICoqcmVkaXJlY3RlZCwK IAkJCQkJCQkJCSAgIGludCAqbmRlYWQsIE9mZnNldE51bWJlciAqKm5vd2RlYWQsCi0JCQkJ CQkJCQkgICBpbnQgKm51bnVzZWQsIE9mZnNldE51bWJlciAqKm5vd3VudXNlZCkKKwkJCQkJ CQkJCSAgIGludCAqbnVudXNlZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2VkLAorCQkJCQkJ CQkJICAgdWludDggZGZvcl9idWZbXSkKIHsKIAlpZiAoZmxhZ3MgJiBYTEhQX0hBU19GUkVF WkVfUExBTlMpCiAJewpAQCAtMTQ2LDE0ICsxNDgsMjIgQEAgaGVhcF94bG9nX2Rlc2VyaWFs aXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAKIAlp ZiAoZmxhZ3MgJiBYTEhQX0hBU19ERUFEX0lURU1TKQogCXsKLQkJeGxocF9wcnVuZV9pdGVt cyAqc3VicmVjb3JkID0gKHhsaHBfcHJ1bmVfaXRlbXMgKikgY3Vyc29yOworCQlpZighKGZs YWdzICYgWExIUF9ERk9SX0NPTVBSRVNTRUQpKQorCQl7CisJCQl4bGhwX3BydW5lX2l0ZW1z ICpzdWJyZWNvcmQgPSAoeGxocF9wcnVuZV9pdGVtcyAqKSBjdXJzb3I7CiAKLQkJKm5kZWFk ID0gc3VicmVjb3JkLT5udGFyZ2V0czsKLQkJQXNzZXJ0KCpuZGVhZCA+IDApOwotCQkqbm93 ZGVhZCA9IHN1YnJlY29yZC0+ZGF0YTsKKwkJCSpuZGVhZCA9IHN1YnJlY29yZC0+bnRhcmdl dHM7CisJCQlBc3NlcnQoKm5kZWFkID4gMCk7CisJCQkqbm93ZGVhZCA9IHN1YnJlY29yZC0+ ZGF0YTsKIAotCQljdXJzb3IgKz0gb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSk7 Ci0JCWN1cnNvciArPSBzaXplb2YoT2Zmc2V0TnVtYmVyKSAqICpuZGVhZDsKKwkJCWN1cnNv ciArPSBvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKTsKKwkJCWN1cnNvciArPSBz aXplb2YoT2Zmc2V0TnVtYmVyKSAqICpuZGVhZDsKKwkJfQorCQllbHNlCisJCXsKKwkJCWhl YXBfeGxvZ19kZXNlcmlhbGl6ZV9kZm9yKCZjdXJzb3IsIG5kZWFkLCBub3dkZWFkLAorCQkJ CQkJCQkJICAgZGZvcl9idWYpOworCQl9CiAJfQogCWVsc2UKIAl7CkBAIC0xNjMsMTQgKzE3 MywyMiBAQCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpj dXJzb3IsIHVpbnQxNiBmbGFncywKIAogCWlmIChmbGFncyAmIFhMSFBfSEFTX05PV19VTlVT RURfSVRFTVMpCiAJewotCQl4bGhwX3BydW5lX2l0ZW1zICpzdWJyZWNvcmQgPSAoeGxocF9w cnVuZV9pdGVtcyAqKSBjdXJzb3I7CisJCWlmKCEoZmxhZ3MgJiBYTEhQX0RGT1JfQ09NUFJF U1NFRCkpCisJCXsKKwkJCXhsaHBfcHJ1bmVfaXRlbXMgKnN1YnJlY29yZCA9ICh4bGhwX3By dW5lX2l0ZW1zICopIGN1cnNvcjsKIAotCQkqbnVudXNlZCA9IHN1YnJlY29yZC0+bnRhcmdl dHM7Ci0JCUFzc2VydCgqbnVudXNlZCA+IDApOwotCQkqbm93dW51c2VkID0gc3VicmVjb3Jk LT5kYXRhOworCQkJKm51bnVzZWQgPSBzdWJyZWNvcmQtPm50YXJnZXRzOworCQkJQXNzZXJ0 KCpudW51c2VkID4gMCk7CisJCQkqbm93dW51c2VkID0gc3VicmVjb3JkLT5kYXRhOwogCi0J CWN1cnNvciArPSBvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKTsKLQkJY3Vyc29y ICs9IHNpemVvZihPZmZzZXROdW1iZXIpICogKm51bnVzZWQ7CisJCQljdXJzb3IgKz0gb2Zm c2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSk7CisJCQljdXJzb3IgKz0gc2l6ZW9mKE9m ZnNldE51bWJlcikgKiAqbnVudXNlZDsKKwkJfQorCQllbHNlCisJCXsKKwkJCWhlYXBfeGxv Z19kZXNlcmlhbGl6ZV9kZm9yKCZjdXJzb3IsIG51bnVzZWQsIG5vd3VudXNlZCwKKwkJCQkJ CQkJCSAgIGRmb3JfYnVmICsgREZPUl9CVUZfUEFSVF9TSVpFKTsKKwkJfQogCX0KIAllbHNl CiAJewpAQCAtMzA5LDEzICszMjcsMTYgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1Ziwg WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQl4bGhwX2ZyZWV6ZV9wbGFuICpwbGFuczsK IAkJCU9mZnNldE51bWJlciAqZnJ6X29mZnNldHM7CiAKKwkJCXVpbnQ4IGRmb3JfYnVmWzUg KiBERk9SX0JVRl9QQVJUX1NJWkVdOworCiAJCQljaGFyCSAgICpjdXJzb3IgPSBYTG9nUmVj R2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCiAJCQloZWFwX3hsb2dfZGVz ZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjdXJzb3IsIHhscmVjLT5mbGFncywKIAkJCQkJ CQkJCQkJCSAgICZucGxhbnMsICZwbGFucywgJmZyel9vZmZzZXRzLAogCQkJCQkJCQkJCQkJ ICAgJm5yZWRpcmVjdGVkLCAmcmVkaXJlY3RlZCwKIAkJCQkJCQkJCQkJCSAgICZuZGVhZCwg Jm5vd2RlYWQsCi0JCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3VudXNlZCk7CisJCQkJ CQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3VudXNlZCwKKwkJCQkJCQkJCQkJCSAgIGRmb3Jf YnVmKTsKIAogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIG5wbGFuczogJXUsIG5yZWRp cmVjdGVkOiAldSwgbmRlYWQ6ICV1LCBudW51c2VkOiAldSIsCiAJCQkJCQkJIG5wbGFucywg bnJlZGlyZWN0ZWQsIG5kZWFkLCBudW51c2VkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy9tZXNvbi5idWlsZAppbmRleCBkOTAwMGNjZDlmZC4uNmNlZWE0NTE0ZWMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZAorKysgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQKQEAgLTExLDYgKzExLDcg QEAgcm1ncl9kZXNjX3NvdXJjZXMgPSBmaWxlcygKICAgJ2dpc3RkZXNjLmMnLAogICAnaGFz aGRlc2MuYycsCiAgICdoZWFwZGVzYy5jJywKKyAgJ2hlYXBhbV94bG9nX2Rmb3IuYycsCiAg ICdsb2dpY2FsbXNnZGVzYy5jJywKICAgJ214YWN0ZGVzYy5jJywKICAgJ25idGRlc2MuYycs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRh dCBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDBj OTg1NGFkOGZjLi42OGI2NzEzYjUzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfcGFyYW1ldGVycy5kYXQKQEAgLTM0MTMsNiArMzQxMywxMyBAQAogICBib290X3ZhbCA9 PiAnZmFsc2UnLAogfSwKIAoreyBuYW1lID0+ICd3YWxfcHJ1bmVfZGZvcl9jb21wcmVzc2lv bicsIHR5cGUgPT4gJ2Jvb2wnLCBjb250ZXh0ID0+ICdQR0NfU1VTRVQnLCBncm91cCA9PiAn V0FMX1NFVFRJTkdTJywKKyAgc2hvcnRfZGVzYyA9PiAnQ29tcHJlc3MgZGVhZCBhbmQgdW51 c2VkIG9mZnNldCBhcnJheXMgYXQgUFJVTkUvRlJFRVpFIFdBTCByZWNvcmRzIHVzaW5nIERG T1IuJywKKyAgbG9uZ19kZXNjID0+ICdFbmFibGVzIGNvbXByZXNzaW9uIG9mIGRlYWQgYW5k IHVudXNlZCBPZmZzZXROdW1iZXIgYXJyYXlzIHN0b3JlZCBpbiBoZWFwIFBSVU5FL0ZSRUVa RSBXQUwgcmVjb3JkcyB1c2luZyBjdXN0b21pc2VkIGRlbHRhIGZyYW1lLW9mLXJlZmVyZW5j ZSBlbmNvZGluZy4nLAorICB2YXJpYWJsZSA9PiAnd2FsX3BydW5lX2Rmb3JfY29tcHJlc3Np b24nLAorICBib290X3ZhbCA9PiAndHJ1ZScKK30sCisKIHsgbmFtZSA9PiAnd2FsX3JlY2Vp dmVyX2NyZWF0ZV90ZW1wX3Nsb3QnLCB0eXBlID0+ICdib29sJywgY29udGV4dCA9PiAnUEdD X1NJR0hVUCcsIGdyb3VwID0+ICdSRVBMSUNBVElPTl9TVEFOREJZJywKICAgc2hvcnRfZGVz YyA9PiAnU2V0cyB3aGV0aGVyIGEgV0FMIHJlY2VpdmVyIHNob3VsZCBjcmVhdGUgYSB0ZW1w b3JhcnkgcmVwbGljYXRpb24gc2xvdCBpZiBubyBwZXJtYW5lbnQgc2xvdCBpcyBjb25maWd1 cmVkLicsCiAgIHZhcmlhYmxlID0+ICd3YWxfcmVjZWl2ZXJfY3JlYXRlX3RlbXBfc2xvdCcs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDFlMTRiN2I0YWYwLi44 NmE1MDlmYjlmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTMx LDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9jb21taXRfdHMuaCIKICNpbmNsdWRl ICJhY2Nlc3MvZ2luLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nX2Rmb3IuaCIK ICNpbmNsdWRlICJhY2Nlc3Mvc2xydS5oIgogI2luY2x1ZGUgImFjY2Vzcy90b2FzdF9jb21w cmVzc2lvbi5oIgogI2luY2x1ZGUgImFjY2Vzcy90d29waGFzZS5oIgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGU0YWJlNmMw MDc3Li4yMDM0Y2NkNDkzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMjU1LDYgKzI1NSw4IEBACiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQp CiAjd2FsX2NvbXByZXNzaW9uID0gb2ZmICAgICAgICAgICAgICAgICAgIyBlbmFibGVzIGNv bXByZXNzaW9uIG9mIGZ1bGwtcGFnZSB3cml0ZXM7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBvZmYsIHBnbHosIGx6NCwgenN0ZCwgb3Igb24KKyN3YWxf cHJ1bmVfZGZvcl9jb21wcmVzc2lvbiA9IHRydWUgICAgICAjIENvbXByZXNzIGRlYWQgYW5k IHVudXNlZCBvZmZzZXQgYXJyYXlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBhdCBQUlVORS9GUkVFWkUgV0FMIHJlY29yZHMgdXNpbmcgREZPUi4KICN3 YWxfaW5pdF96ZXJvID0gb24gICAgICAgICAgICAgICAgICAgICAjIHplcm8tZmlsbCBuZXcg V0FMIGZpbGVzCiAjd2FsX3JlY3ljbGUgPSBvbiAgICAgICAgICAgICAgICAgICAgICAgIyBy ZWN5Y2xlIFdBTCBmaWxlcwogI3dhbF9idWZmZXJzID0gLTEgICAgICAgICAgICAgICAgICAg ICAgICMgbWluIDMya0IsIC0xIHNldHMgYmFzZWQgb24gc2hhcmVkX2J1ZmZlcnMKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3JlIGIvc3JjL2Jpbi9wZ193YWxk dW1wLy5naXRpZ25vcmUKaW5kZXggZWM1MWY0MWM3NjcuLmEzYzAyNDQ2YjlkIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvLmdpdGlnbm9yZQorKysgYi9zcmMvYmluL3BnX3dh bGR1bXAvLmdpdGlnbm9yZQpAQCAtMTAsNiArMTAsNyBAQAogL2dpc3RkZXNjLmMKIC9oYXNo ZGVzYy5jCiAvaGVhcGRlc2MuYworL2hlYXBhbV94bG9nX2Rmb3IuYwogL2xvZ2ljYWxtc2dk ZXNjLmMKIC9teGFjdGRlc2MuYwogL25idGRlc2MuYwpAQCAtMjgsNSArMjksMTMgQEAKIC94 bG9ncmVhZGVyLmMKIC94bG9nc3RhdHMuYwogCisjIFNvdXJjZSBmaWxlcyBjb3BpZWQgZnJv bSBzcmMvYmFja2VuZC9saWIKKy9iaXRwYWNrX3RlbXBsLmMKKy9iaXRwYWNrX3UxNi5jCisv ZGZvcl90ZW1wbC5jCisvZGZvcl91MTYuYworL3ZlY3RfdGVtcGwuYworL3ZlY3RfdTE2LmMK KwogIyBHZW5lcmF0ZWQgYnkgdGVzdCBzdWl0ZQogL3RtcF9jaGVjay8KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtl ZmlsZQppbmRleCA0YzFlZTY0OTUwMS4uZjZmODRjOTg5YjggMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfd2FsZHVtcC9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZp bGUKQEAgLTUsOCArNSw5IEBAIFBHQVBQSUNPTj13aW4zMgogCiBzdWJkaXIgPSBzcmMvYmlu L3BnX3dhbGR1bXAKIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCi1pbmNsdWRlICQodG9wX2J1 aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitkZm9yX2RpciA6PSAkKHRvcF9idWlsZGRp cikvc3JjL2JhY2tlbmQvbGliCiAKK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtl ZmlsZS5nbG9iYWwKIE9CSlMgPSBcCiAJJChSTUdSREVTQ09CSlMpIFwKIAkkKFdJTjMyUkVT KSBcCkBAIC0xNiw5ICsxNywxMiBAQCBPQkpTID0gXAogCXhsb2dyZWFkZXIubyBcCiAJeGxv Z3N0YXRzLm8KIAoraW5jbHVkZSAkKGRmb3JfZGlyKS9NYWtlZmlsZS5kZm9yCitPQkpTICs9 ICQoT0JKU19ERk9SKQorCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAtREZST05URU5EICQoQ1BQ RkxBR1MpCiAKLVJNR1JERVNDU09VUkNFUyA9ICQoc29ydCAkKG5vdGRpciAkKHdpbGRjYXJk ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjLypkZXNjKi5jKSkp CitSTUdSREVTQ1NPVVJDRVMgPSAkKHNvcnQgJChub3RkaXIgJCh3aWxkY2FyZCAkKHRvcF9z cmNkaXIpL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy8qZGVzYyouYykpKSBoZWFwYW1f eGxvZ19kZm9yLmMKIFJNR1JERVNDT0JKUyA9ICQocGF0c3Vic3QgJS5jLCUubywkKFJNR1JE RVNDU09VUkNFUykpCiAKIApAQCAtMjcsNiArMzEsMjQgQEAgYWxsOiBwZ193YWxkdW1wCiBw Z193YWxkdW1wOiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQKIAkkKENDKSAkKENGTEFH UykgJF4gJChMREZMQUdTKSAkKExERkxBR1NfRVgpICQoTElCUykgLW8gJEAkKFgpCiAKK2Jp dHBhY2tfdGVtcGwuYzogJSA6ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvbGliLyUKKwly bSAtZiAkQCAmJiAkKExOX1MpICQ8IC4KKworYml0cGFja191MTYuYzogJSA6ICQodG9wX3Ny Y2Rpcikvc3JjL2JhY2tlbmQvbGliLyUgYml0cGFja190ZW1wbC5jCisJcm0gLWYgJEAgJiYg JChMTl9TKSAkPCAuCisKK2Rmb3JfdGVtcGwuYzogJSA6ICQodG9wX3NyY2Rpcikvc3JjL2Jh Y2tlbmQvbGliLyUKKwlybSAtZiAkQCAmJiAkKExOX1MpICQ8IC4KKworZGZvcl91MTYuYzog JSA6ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvbGliLyUgZGZvcl90ZW1wbC5jCisJcm0g LWYgJEAgJiYgJChMTl9TKSAkPCAuCisKK3ZlY3RfdGVtcGwuYzogJSA6ICQodG9wX3NyY2Rp cikvc3JjL2JhY2tlbmQvbGliLyUKKwlybSAtZiAkQCAmJiAkKExOX1MpICQ8IC4KKwordmVj dF91MTYuYzogJSA6ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvbGliLyUgdmVjdF90ZW1w bC5jCisJcm0gLWYgJEAgJiYgJChMTl9TKSAkPCAuCisKIHhsb2dyZWFkZXIuYzogJSA6ICQo dG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vJQogCXJtIC1mICRAICYm ICQoTE5fUykgJDwgLgogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24u YnVpbGQgYi9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKaW5kZXggNjMzYTk4NzRi YjUuLjBmMzRjY2Q2YzRmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24u YnVpbGQKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL21lc29uLmJ1aWxkCkBAIC05LDYgKzks NyBAQCBwZ193YWxkdW1wX3NvdXJjZXMgPSBmaWxlcygKIHBnX3dhbGR1bXBfc291cmNlcyAr PSBybWdyX2Rlc2Nfc291cmNlcwogcGdfd2FsZHVtcF9zb3VyY2VzICs9IHhsb2dyZWFkZXJf c291cmNlcwogcGdfd2FsZHVtcF9zb3VyY2VzICs9IGZpbGVzKCcuLi8uLi9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2dzdGF0cy5jJykKK3BnX3dhbGR1bXBfc291cmNlcyArPSBkZm9y X3NvdXJjZXMKIAogaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCiAgIHBnX3dhbGR1bXBf c291cmNlcyArPSByY19iaW5fZ2VuLnByb2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6 IFsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggY2UzNTY2YmE5NDkuLmRkMWQw Njg2MGJhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtMTUsNiArMTUsNyBA QAogI2RlZmluZSBIRUFQQU1fWExPR19ICiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cC5oIgor I2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxv Z3JlYWRlci5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWYuaCIKQEAgLTMzOSw2ICszNDAsOCBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFw X3BydW5lCiAjZGVmaW5lCQlYTEhQX1ZNX0FMTF9WSVNJQkxFCQkJKDEgPDwgOCkKICNkZWZp bmUJCVhMSFBfVk1fQUxMX0ZST1pFTgkJCSgxIDw8IDkpCiAKKyNkZWZpbmUJCVhMSFBfREZP Ul9DT01QUkVTU0VECQkoMSA8PCAxMCkKKwogLyoKICAqIHhsaHBfZnJlZXplX3BsYW4gZGVz Y3JpYmVzIGhvdyB0byBmcmVlemUgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBoZWFwIHR1cGxl cwogICogKGFwcGVhcnMgaW4geGxfaGVhcF9wcnVuZSdzIHhsaHBfZnJlZXplX3BsYW5zIHN1 Yi1yZWNvcmQpCkBAIC01MTEsNiArNTE0LDcgQEAgZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2Rl c2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3Ms CiAJCQkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJ CQkJCSAgIGludCAqbnJlZGlyZWN0ZWQsIE9mZnNldE51bWJlciAqKnJlZGlyZWN0ZWQsCiAJ CQkJCQkJCQkJCQkgICBpbnQgKm5kZWFkLCBPZmZzZXROdW1iZXIgKipub3dkZWFkLAotCQkJ CQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQpOwor CQkJCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQs CisJCQkJCQkJCQkJCQkgICB1aW50OCBkZm9yX2J1ZltdKTsKIAotI2VuZGlmCQkJCQkJCS8q IEhFQVBBTV9YTE9HX0ggKi8KKyNlbmRpZgkJCQkJCQkvKiBIRUFQQU1fWExPR19IICovClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbV94bG9nX2Rmb3IuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxv Z19kZm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI3NGIx NGU4OTFlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94 bG9nX2Rmb3IuaApAQCAtMCwwICsxLDEzNyBAQAorI2lmbmRlZiBIRUFQQU1fWExPR19ERk9S X0gKKyNkZWZpbmUgSEVBUEFNX1hMT0dfREZPUl9ICisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImxpYi9k Zm9yX3UxNi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgorCisvKgorICogREZv UidzIG1ldGEgYmxvY2sgZm9yIFBSVU5FL0ZSRUVaRSByZWNvcmQKKyAqCisgKiBBIG1ldGEg YmxvY2sgY29udGFpbnMgcGFyYW1ldGVycyByZXF1aXJlZCBmb3IgZGVjb21wcmVzc2lvbiBv ZiB0aGUgZm9sbG93aW5nCisgKiBERm9SIHBhY2suIEl0IGlzIGRlbnNlbHkgYml0LXBhY2tl ZC4gSWYgdGhlIGV4Y2VwdGlvbiBmbGFnIGlzIHplcm8sIGZpZWxkcworICogcGVydGFpbmlu ZyB0byBleGNlcHRpb25zIGlzIGFic2VudCwgd2hpY2ggbWVhbnMgdGhhdCBERm9SIHBhY2sg ZG9lcyBub3QKKyAqIGNvbnRhaW4gZXhjZXB0aW9ucy4gQ2FsY3VsYXRpb24gb2YgZmllbGQg d2lkdGhzIHRha2VzIGludG8gYWNjb3VudAorICogbmV4dCBjb25zaWRlcmF0aW9uczoKKyAq CisgKiBNYXggSXRlbSBDb3VudCBzaG91bGQgYmUgbW9yZSBvciBlcXVhbCB0byBNYXhIZWFw VHVwbGVzUGVyUGFnZS4gU2luY2Ugd2UKKyBjYW4ndCBjYWxjdWxhdGUKKyAqIE1heEhlYXBU dXBsZXNQZXJQYWdlIG9uIHByZXByb2Nlc3NvciBzdGFnZSwgd2UgaW50ZW50aW9uYWxseSBv dmVyZXN0aW1hdGUgaXQKKyAqIGFzOgorICogICAgICAgTWF4IEl0ZW0gQ291bnQgPiBCTENL U1ogLyBNaW4gVHVwbGUgU2l6ZSA9IEJMQ0tTWiAvIDI0CisgKiB0byBwcm92aWRlIGEgbWFy Z2luLiBJbiBnZW5lcmFsLCBkZXBlbmRpbmcgb24gQkxDS1NaLCBpdCBzaG91bGQgbm90IHJl c3VsdCBpbgorICogREZvUiBtZXRhIGJsb2NrIG92ZXJoZWFkLgorICogRm9yIGluc3RhbmNl LCBmb3IgYSBibG9jayBzaXplIG9mIDMyNzY4LCB3ZSBoYXZlIE1heCBJdGVtIENvdW50ID0g MTM2NiwgYW5kCisgKiBpdCBuZWVkcyAxMSBiaXRzIHdpZHRoIGZpZWxkLgorICoKKyAqIFNp emUgb2YgZmllbGQgSXRlbSBDb3VudDoKKyAqICAgICAgIElURU1fQ09VTlRfU1ogPSBsb2cy KE1heEl0ZW1Db3VudCkuCisgKgorICogTWF4aW11bSBEZWx0YSBXaWR0aCBpcyBlcXVhbCB0 byBJVEVNX0NPVU5UX1NaLiBTbyBERUxUQV9XSURUSF9TWiBpbiBhIERGb1IKKyAqIG1ldGEg YmxvY2sgY2FuIGJlIGNhbGN1bGF0ZWQgYXM6CisgKiAgICAgIERFTFRBX1dJRFRIX1NaID49 IGxvZzIoTWF4IERlbHRhIFdpZHRoKSA9IGxvZzIoSVRFTV9DT1VOVF9TWikKKyAqCisgKiBN YXggRXhjZXB0aW9uIENvdW50ID0gMC4xICogTWF4SXRlbUNvdW50LCBhY2NvcmRpbmcgdG8g REZvUiBhbGdvcml0aG0gd2hpY2gKKyAqIGd1YXJhbnRlZXMgdGhhdCBub3QgbGVzcyB0aGFu IDkwJSBvZiBpdGVtcyB3aWxsIGJlIGNvdmVyZWQgd2l0aG91dCB1c2luZworICogZXhjZXB0 aW9ucy4gU286CisgKiAgICAgIEVYQ0VQVElPTl9DT1VOVF9TWiA+PSBsb2cyKDAuMSAqIE1h eEl0ZW1Db3VudCkuCisgKgorICogQW4gZXhjZXB0aW9uIGlzIHBhcnQgb2YgYSBkZWx0YSwg ZXhjZWVkaW5nIGNob29zZW4gZGVsdGEgd2lkdGguIEV4Y2VwdGlvbiBpcworICogc2F2ZWQg aW4gc2VwYXJhdGVkIHBhcnQgb2YgREZvUiBwYWNrIGFuZCwgc2luY2UgZGVsdGEgd2lkdGgg aXMgbm90IGxlc3MKKyAqIHRoYW4gMToKKyAqICAgIEVYQ0VQVElPTl9XSURUSF9TWiA+PSBs b2cyKE1heCBEZWx0YSBXaWR0aCAtIDEpID0gbG9nMihJVEVNX0NPVU5UX1NaIC0gMSkuCisg KgorICogQW4gZXhjZXB0aW9uJ3MgcG9zaXRpb24gc2hvd3MgdGhlIHBvc2l0aW9uIG9mIG9m IGEgZGVsdGEgdG8gd2ljaCB0aGUKKyAqIGV4Y2VwdGlvbiBoYXMgdG8gYmUgYXBwbGllZC4g VmFsdWVzIG9mIGFuIGV4Y2VwdGlvbiBwb3NpdGlvbiBtdXN0IGNvdmVyIHRoZQorICogc2Ft ZSB2YWx1ZSByYW5nZSBhcyBhbiBJdGVtIENvdW50LCBzbyB0aGUgTWF4IFdpZHRoIG9mIGFu IEV4Y2VwdGlvbiBQb3NpdGlvbgorICogaXMgZXF1YWwgdG8gd2lkdGggb2YgRGVsdGEuIENv bnNlcXVlbnRseSwgdGhlIHNpemUgb2YgRXhjZXB0aW9uIFBvc2l0aW9uCisgKiBXaWR0aCBj YWxjdWxhdGVkIGFzOgorICogICAgIEVYQ0VQVElPTl9QT1NJVElPTl9XSURUSF9TSVpFID0g bG9nMihNYXggRGVsdGEgV2lkdGgpID0gREVMVEFfV0lEVEhfU1oKKyAqCisgKiBGb3IgZXhh bXBsZSwgTWV0YSBmb3IgQkxDS1NaIGVxdWFsIHRvIDMyNzY4IGhhcyBuZXh0IHNpemVzIG9m IGZpZWxkCisgKiB8IHNlY3QuIHwgYnl0ZSB8IGJpdHMgICAgICB8ICAgcGFyYW0gICAgICAg ICAgIHwgIHNpemUgIHwgcmFuZ2Ugb2YgdmFsdWVzIHwKKyAqIHwtLS0tLS0tfC0tLS0tLXwt LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLS0tLS0t LS0tfAorICogfCAgbWFpbiB8IDAsIDEgfCAwLTEwICAgICAgfCBpdGVtIGNvdW50ICAgICAg ICB8IDExIGJpdCB8IDEuLi4xMzY1ICAgICAgICB8CisgKiB8ICBtYWluIHwgICAgMSB8IDEx LTE0ICAgICB8IGRlbHRhIHdpZHRoICAgICAgIHwgIDQgYml0IHwgMS4uLjExICAgICAgICAg IHwKKyAqIHwgIG1haW4gfCAgICAxIHwgMTUgICAgICAgIHwgZXh0cmEgc2VjdC4gZmxhZyAg fCAgMSBiaXQgfCAwLi4uMSAgICAgICAgICAgfAorICogfCBleHRyYSB8ICAgIDIgfCAxNi0y MyAgICAgfCBleGNlcHRpb24gY291bnQgICB8ICA4IGJpdCB8IDAuLi4xMzcgICAgICAgICB8 CisgKiB8IGV4dHJhIHwgICAgMyB8IDI0LTI3ICAgICB8IGV4Y2VwdGlvbiB3aWR0aCAgIHwg IDQgYml0IHwgMC4uLjEwICAgICAgICAgIHwKKyAqIHwgZXh0cmEgfCAzLCA0IHwgMjgtMzUg ICAgIHwgZXhjZXB0IHBvcy4gd2lkdGggfCAgNCBiaXQgfCAxLi4uMTEgICAgICAgICAgfAor ICovCisKKy8qCisgKiBUaGUgc2l6ZXMgb2YgZmllbGRzIGluIHRoZSBjb21wcmVzc2VkIERG b1IgTWV0YSBzdHJ1Y3R1cmUgb2YgYW4KKyAqIFhMT0dfSEVBUDJfUFJVTkUqIHJlY29yZC4K KyAqLworI2lmIEJMQ0tTWiA9PSAzMjc2OAorI2RlZmluZSBYTEhQRl9NRVRBX0lURU1fQ09V TlRfU1ogIDExCisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogNAorI2VsaWYg QkxDS1NaID09IDE2Mzg0CisjZGVmaW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAgMTAK KyNkZWZpbmUgWExIUEZfTUVUQV9ERUxUQV9XSURUSF9TWiA0CisjZWxpZiBCTENLU1ogPT0g ODE5MgorI2RlZmluZSBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogIDkKKyNkZWZpbmUgWExI UEZfTUVUQV9ERUxUQV9XSURUSF9TWiA0CisjZWxpZiBCTENLU1ogPT0gNDA5NgorI2RlZmlu ZSBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogIDgKKyNkZWZpbmUgWExIUEZfTUVUQV9ERUxU QV9XSURUSF9TWiA0CisjZWxpZiBCTENLU1ogPT0gMjA0OAorI2RlZmluZSBYTEhQRl9NRVRB X0lURU1fQ09VTlRfU1ogIDcKKyNkZWZpbmUgWExIUEZfTUVUQV9ERUxUQV9XSURUSF9TWiAz CisjZWxpZiBCTENLU1ogPT0gMTAyNAorI2RlZmluZSBYTEhQRl9NRVRBX0lURU1fQ09VTlRf U1ogIDYKKyNkZWZpbmUgWExIUEZfTUVUQV9ERUxUQV9XSURUSF9TWiAzCisjZWxpZiBCTENL U1ogPT0gNTEyCisjZGVmaW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAgNQorI2RlZmlu ZSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIDMKKyNlbGlmIEJMQ0tTWiA9PSAyNTYKKyNk ZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaICA0CisjZGVmaW5lIFhMSFBGX01FVEFf REVMVEFfV0lEVEhfU1ogMworI2VsaWYgQkxDS1NaID09IDEyOAorI2RlZmluZSBYTEhQRl9N RVRBX0lURU1fQ09VTlRfU1ogIDMKKyNkZWZpbmUgWExIUEZfTUVUQV9ERUxUQV9XSURUSF9T WiAyCisjZWxpZiBCTENLU1ogPT0gNjQKKyNkZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NPVU5U X1NaICAyCisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogMgorI2Vsc2UKKyNl cnJvciAiVW5zdXBwb3J0ZWQgQkxDS1NaIGluIFhMb2cgSGVhcCBBbmQgUHJ1bmUuIgorI2Vu ZGlmCisKKyNkZWZpbmUgWExIUEZfTUVUQV9FWENFUFRJT05fRkxBR19TWiAxIC8qIEZsYWcg YWJvdXQgRXh0cmEgU2VjdGlvbiBwcmVzZW5jZSAqLworCisvKiBTaXplIG9mIEV4Y2VwdGlv biBDb3VudCBmaWVsZCAqLworI2lmIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiA+IDYKKyNk ZWZpbmUgWExIUEZfTUVUQV9FWENFUFRJT05fQ09VTlRfU1ogWExIUEZfTUVUQV9JVEVNX0NP VU5UX1NaIC0gMworI2Vsc2UKKyNkZWZpbmUgWExIUEZfTUVUQV9FWENFUFRJT05fQ09VTlRf U1ogWExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaIDMKKyNlbmRpZgorCisjZGVmaW5lIFhMSFBG X01FVEFfRVhDRVBUSU9OX1dJRFRIX1NaIFwKKwlYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1Na IC8qIFNpemUgb2YgRXhjZXB0aW9uIFdpZHRoIGZpZWxkICovCisKKyNkZWZpbmUgWExIUEZf TUVUQV9FWENFUFRJT05fUE9TSVRJT05fV0lEVEhfU1ogXAorCVhMSFBGX01FVEFfREVMVEFf V0lEVEhfU1ogLyogU2l6ZSBvZiBFeGNlcHRpb24gUG9zaXRpb24gd2lkdGggZmllbGQgKi8K KworLyogTWF4aW1hbCBzaXplIG9mIHBhY2tlZCBtZXRhICovCisjZGVmaW5lIE1BWF9QQUNL RURfTUVUQV9TSVpFIFwKKwkoWExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaICsgWExIUEZfTUVU QV9ERUxUQV9XSURUSF9TWiArICAgICAgICAgICAgICAgICAgXAorCSBYTEhQRl9NRVRBX0VY Q0VQVElPTl9GTEFHX1NaICsgWExIUEZfTUVUQV9FWENFUFRJT05fUE9TSVRJT05fV0lEVEhf U1ogKyBcCisJIFhMSFBGX01FVEFfRVhDRVBUSU9OX1dJRFRIX1NaICsgWExIUEZfTUVUQV9F WENFUFRJT05fQ09VTlRfU1ogKyA3KSAvIDgKKworLyogVGhlIHNpemUgb2YgYSB0eXBpY2Fs IGNodW5rIG9mIG1lbW9yeSB1c2VkIGJ5IGRmb3JfcGFjayAqLworI2RlZmluZSBERk9SX0JV Rl9QQVJUX1NJWkUgTWF4SGVhcFR1cGxlc1BlclBhZ2UgKiBzaXplb2YodWludDE2KQorCitl eHRlcm4gYm9vbCB3YWxfcHJ1bmVfZGZvcl9jb21wcmVzc2lvbjsgLyogR1VDICovCisKK2V4 dGVybiBzaXplX3QgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZV9wYWNrX21ldGEoY29uc3Qg ZGZvcl9tZXRhX3QgKm1ldGEsCisJCQkJCQkJCQkJCQkgIHVpbnQ4IGJ1ZltdKTsKKworZXh0 ZXJuIHNpemVfdCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplX3VucGFja19tZXRhKGRmb3Jf bWV0YV90ICptZXRhLAorCQkJCQkJCQkJCQkJCWNvbnN0IHVpbnQ4IHBhY2tlZF9tZXRhW10p OworCitleHRlcm4gdm9pZCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfZGZvcihjaGFyICoqY3Vy c29yLCBpbnQgKm5pdGVtcywKKwkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqKml0ZW1zLCB1 aW50OCBkZm9yX2J1ZltdKTsKKworI2VuZGlmCQkJCQkJCS8qIEhFQVBBTV9YTE9HX0RGT1Jf SCAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L2Rmb3IvTWFrZWZpbGUgYi9zcmMvdGVzdC9kZm9yL01ha2VmaWxlCmluZGV4IGY5ZjFiNzA1 YzViLi43MDVmOTM2ZWMxMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZQor KysgYi9zcmMvdGVzdC9kZm9yL01ha2VmaWxlCkBAIC00Miw2ICs0Miw4IEBAIGNoZWNrLXVu aXQ6ICQoVEVTVFMpCiAJY2QgJCh0b3BfYnVpbGRkaXIpLyQoc3ViZGlyKSAmJiBcCiAJICAg JChQUk9WRSkgJChQUk9WRV9GTEFHUykgXAogCSAgICAtdiAkKGFkZHByZWZpeCAuLywkKGlm ICQoUFJPVkVfVEVTVFMpLCAkKFBST1ZFX1RFU1RTKSwgJChURVNUUykpKQorIyBUaGUgZXhh bXBsZSBvZiB1c2luZyB0aGUgY2hlY2stdW5pdCBydWxlOgorIwkJbWFrZSBjaGVjay11bml0 IFBST1ZFX1RFU1RTPSd0ZXN0X2Rmb3JfdTE2JyBQUk9WRV9GTEFHUz0nLS12ZXJib3NlJwog CiBjaGVjazogY2hlY2stdW5pdAogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90 LzA1Ml9wcnVuZV9kZm9yX2NvbXByZXNzaW9uLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w NTJfcHJ1bmVfZGZvcl9jb21wcmVzc2lvbi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uODE5OTg0YWE1NjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzA1Ml9wcnVuZV9kZm9yX2NvbXByZXNzaW9uLnBsCkBAIC0wLDAgKzEs MTU1IEBACit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6 TW9yZTsKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyMgV29ya2xvYWQgZ2VuZXJhdGluZyBkZWFkIHR1cGxlcyBh bmQgUFJVTkUgV0FMCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3ViIGdlbmVyYXRlX3BydW5lX3dvcmtsb2FkCit7 CisgICAgbXkgKCRub2RlKSA9IEBfOworCisgICAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxeworICAgICAgICBDUkVBVEUgVEFCTEUgdF9wcnVuZSAoCisgICAgICAgICAgICBp ZCBpbnQsCisgICAgICAgICAgICB2YWwgdGV4dAorICAgICAgICApIFdJVEggKGZpbGxmYWN0 b3IgPSAxMDApOworICAgIH0pOworCisgICAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxeworICAgICAgICBTRVQgdmFjdXVtX2ZyZWV6ZV9taW5fYWdlID0gMDsKKyAgICAgICAg U0VUIHZhY3V1bV9mcmVlemVfdGFibGVfYWdlID0gMDsKKyAgICB9KTsKKworICAgICMgSW5z ZXJ0IG1hbnkgdHVwbGVzCisgICAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxewor ICAgICAgICBJTlNFUlQgSU5UTyB0X3BydW5lCisgICAgICAgIFNFTEVDVCBnLCAneCcKKyAg ICAgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwzMDAwMDApIGc7CisgICAgfSk7CisKKyAg ICAjIERlbGV0ZSA4MCUgb2YgcmVjb3JkcworICAgICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXsKKyAgICAgICAgREVMRVRFIEZST00gdF9wcnVuZQorCQlXSEVSRSBpZCAlIDU1 MCA8PSA1NDA7CisgICAgfSk7CisKKyAgICAjIFZBQ1VVTSBjeWNsZXMgdG8gdHJpZ2dlciBQ UlVORQorICAgIGZvciBteSAkaSAoMS4uMykKKyAgICB7CisgICAgICAgICRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXsgVkFDVVVNIEZSRUVaRSB0X3BydW5lOyB9KTsKKyAgICB9 Cit9CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisjIFdBTCBhbmFseXplcgorIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YiBjb2xsZWN0 X3BydW5lX3N0YXRzCit7CisgICAgbXkgKCRub2RlKSA9IEBfOworCisJbXkgJHdhbF9kaXIg PSAkbm9kZS0+ZGF0YV9kaXIgLiAiL3BnX3dhbCI7CisKKwlwcmludCAid2FsX2Rpcj0iIC4g JHdhbF9kaXIgLiJcbiI7CisKKyAgICAjIEZpbmQgdGhlIGZpcnN0IFdBTCBzZWdtZW50Cisg ICAgbXkgQHdhbF9maWxlcyA9IHNvcnQgZ2xvYigiJHdhbF9kaXIvWzAtOUEtRl0qIik7Cisg ICAgbXkgJHN0YXJ0X3NlZyA9ICR3YWxfZmlsZXNbMF07CisKKyAgICBkaWUgIk5vIFdBTCBm aWxlcyBmb3VuZCIgdW5sZXNzIGRlZmluZWQgJHN0YXJ0X3NlZzsKKworCSMgUnVuIHBnX3dh bGR1bXAgb24gYWxsIHNlZ21lbnRzCisJbXkgJGNtZCA9ICJwZ193YWxkdW1wIC0tcm1ncj1I ZWFwMiAtcCAkd2FsX2RpciAkc3RhcnRfc2VnIDI+L2Rldi9udWxsIjsKKworICAgIG15IEBs aW5lcyA9IGAkY21kYDsKKworcHJpbnQgImxpbmVzPSIgLiBAbGluZXMgLiAiXG4iOworCisg ICAgbXkgJHJlY29yZHMgPSAwOworICAgIG15ICRieXRlcyAgID0gMDsKKworICAgIGZvcmVh Y2ggbXkgJGxpbmUgKEBsaW5lcykKKyAgICB7CisgICAgICAgIG5leHQgdW5sZXNzICRsaW5l ID1+IC9QUlVORV9WQUNVVU1fU0NBTi87CisgICAgICAgICRyZWNvcmRzKys7CisgICAgICAg IGlmICgkbGluZSA9fiAvbGVuIFwocmVjXC90b3RcKTpccypcZCtcL1xzKihcZCspLykKKyAg ICAgICAgeworICAgICAgICAgICAgJGJ5dGVzICs9ICQxOworICAgICAgICB9CisgICAgfQor CXByaW50ICJyZWNvcmRzPSIgLiAkcmVjb3JkcyAuICI7IGJ5dGVzPSIgLiAkYnl0ZXMgLiJc biI7CisgICAgcmV0dXJuICgkcmVjb3JkcywgJGJ5dGVzKTsKK30KKworCisjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IyBSdW4gdGVzdCBvbiBhIGZyZXNoIGNsdXN0ZXIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWIgcnVuX2NsdXN0 ZXJfdGVzdAoreworICAgIG15ICgkbmFtZSwgJGNvbXByZXNzaW9uKSA9IEBfOworCisgICAg bXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJG5hbWUpOworCisg ICAgJG5vZGUtPmluaXQ7CisKKyAgICAkbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsIHFxeworCQl3YWxfbGV2ZWwgPSByZXBsaWNhCisJCWF1dG92YWN1dW0gPSBvZmYK KwkJd2FsX3BydW5lX2Rmb3JfY29tcHJlc3Npb24gPSAkY29tcHJlc3Npb24KKwl9KTsKKwor ICAgICRub2RlLT5zdGFydDsKKworICAgIGdlbmVyYXRlX3BydW5lX3dvcmtsb2FkKCRub2Rl KTsKKworICAgICRub2RlLT5zdG9wOworCisgICAgcmV0dXJuIGNvbGxlY3RfcHJ1bmVfc3Rh dHMoJG5vZGUpOworfQorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDbHVzdGVyIDE6IGNvbXByZXNzaW9uIE9G RgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK215ICgkb2ZmX2NvdW50LCAkb2ZmX2J5dGVzKSA9IHJ1bl9jbHVzdGVy X3Rlc3QoCisgICAgInBydW5lX2Rmb3Jfb2ZmIiwKKyAgICAib2ZmIgorKTsKKworbm90ZSgi Q29tcHJlc3Npb24gT0ZGOiAkb2ZmX2NvdW50IHJlY29yZHMsICRvZmZfYnl0ZXMgYnl0ZXMi KTsKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyMgQ2x1c3RlciAyOiBjb21wcmVzc2lvbiBPTgorIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K215ICgkb25fY291bnQsICRvbl9ieXRlcykgPSBydW5fY2x1c3Rlcl90ZXN0KAorICAgICJw cnVuZV9kZm9yX29uIiwKKyAgICAib24iCispOworCitub3RlKCJDb21wcmVzc2lvbiBPTjog JG9uX2NvdW50IHJlY29yZHMsICRvbl9ieXRlcyBieXRlcyIpOworCisjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBD b21wcmVzc2lvbiByYXRpbworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK215ICRyYXRpbyA9ICJOL0EiOworCitpZiAo JG9uX2J5dGVzID4gMCkKK3sKKyAgICAkcmF0aW8gPSBzcHJpbnRmKCIlLjJmIiwgJG9mZl9i eXRlcyAvICRvbl9ieXRlcyk7Cit9CisKK25vdGUoIkNvbXByZXNzaW9uIHJhdGlvICh1bmNv bXByZXNzZWQvY29tcHJlc3NlZCk6ICRyYXRpbyIpOworbm90ZSgiTnVtZXJhdG9yICAgKHVu Y29tcHJlc3NlZCBieXRlcyk6ICRvZmZfYnl0ZXMiKTsKK25vdGUoIkRlbm9taW5hdG9yIChj b21wcmVzc2VkIGJ5dGVzKTogICAkb25fYnl0ZXMiKTsKKworIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhwZWN0 IGNvbXByZXNzaW9uIGJlbmVmaXQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitjbXBfb2soCisgICAgJHJhdGlvLCAn Pj0nLCA1LAorICAgICdERk9SIGNvbXByZXNzaW9uIHNob3VsZCByZWR1Y2UgdGhlIHNpemUg b2YgV0FMIGJ5IGF0IGxlYXN0IDUgdGltZXMuJworKTsKKworZG9uZV90ZXN0aW5nKCk7Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi41My4wCgo= --------------Ii8KhORFqzB9FtFJzNJvGcrG--