From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgeu2.qq.com (smtpbgeu2.qq.com [18.194.254.142]) by sourceware.org (Postfix) with ESMTPS id A61883858C54 for ; Fri, 12 Jan 2024 07:32:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A61883858C54 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A61883858C54 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=18.194.254.142 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705044772; cv=none; b=BUkkA4BE4UCLPlHvrUBjdA6J4LioBpDX+RCQIOvzRQNv6+j1aczZijiEX2xva9f/xuBzGRAEdT24ahPZMen/0CXau7lyWuwx6bm+9IRRB5wozozuovsxyP5gjTbCpWdtwQLEj+qwpsWMWoydy0lDZyiIRoCRCIuOFuUCpDW4CcQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705044772; c=relaxed/simple; bh=IDW2ul68tZ6Xt+YffthQrkt+KmfJyBVViEf8Kd+XRdU=; h=Date:From:To:Subject:Mime-Version:Message-ID; b=BF6TeibjVPP0ieyke4iciNWPbYWr6BYxQOqpbmPTcVDfjpXgZ+Aml3SnD2HkB8FW2jkQScz4sGUowe5nHHm97pmZh9pLTII/59YfWkb3GvwwbO7Oz9ztevXYFBlgZk/GIdbAfGOVF2CAaueqRxFQMGcDbLwwaQP31MFr/D5UCVM= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp64t1705044738tq6foq37 Received: from LAPTOP-EPITNQBU ( [121.35.183.89]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 12 Jan 2024 15:32:16 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: D6RqbDSxuq5ddu4c7v0eqLoBY95f83dzVD3ljdASkecYtQp8Qb4YZIhUbtOFP 0Y+8vZCCl2FvwOYAJu6VYyKAmfuz3tvMu1B2uQiIvAb2QK/GyZH1gs1sZdhx5+fgz5122bw ti83u2lfW111xECj1v7QpKFT5p5hCvfORFuw7V9uwmV6okffQaULtArhAc99tHRd7wnX1pd Im7n1vs6FEN/IQBRC0/MpNHiNMAiTjIDqNl8q7Z1x9PFDSoCAD4Nu4AmJ51cNmxNFLBi0py UAAPutS7eg+4CplgAe9kRNYAxvZ9p6ybZWGhtN/YZ65BFT6/o1goYSewIJMDCz3Ul7IEt3Z 0OE8h9xu1d/DGiTKaMNITsP1tAUP2A3MirnBLQbho2lSMUGw41DRqo2VXPAD1HWPFIIB0rh xZbJ4jJKQirGrIK7KDJ7RH3uE4/5Gdyh X-QQ-GoodBg: 2 X-BIZMAIL-ID: 5855722218454096547 Date: Fri, 12 Jan 2024 15:32:16 +0800 From: "juzhe.zhong@rivai.ai" To: cooper.joshua , gcc-patches Cc: "Jim Wilson" , palmer , andrew , philipp.tomsich , jeffreyalaw , christoph.muellner , cooper.joshua , jinma , cooper.qu Subject: Re: [PATCH v6] RISC-V: Add support for xtheadvector-specific intrinsics. References: <20240112031840.1556-1-cooper.joshua@linux.alibaba.com>, <20240112032241.1768-1-cooper.joshua@linux.alibaba.com> X-Priority: 3 X-GUID: A0AF9533-9A55-450E-83E8-511514B74A86 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <222C63D8313E742C+202401121532163157154@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart215705416247_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,T_SPF_HELO_TEMPERROR autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. ------=_001_NextPart215705416247_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 b2sNCg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBKdW4g U2hhIChKb3NodWEpDQpEYXRlOiAyMDI0LTAxLTEyIDExOjIyDQpUbzogZ2Nj LXBhdGNoZXMNCkNDOiBqaW0ud2lsc29uLmdjYzsgcGFsbWVyOyBhbmRyZXc7 IHBoaWxpcHAudG9tc2ljaDsgamVmZnJleWFsYXc7IGNocmlzdG9waC5tdWVs bG5lcjsganV6aGUuemhvbmc7IEp1biBTaGEgKEpvc2h1YSk7IEppbiBNYTsg WGlhbm1pYW8gUXUNClN1YmplY3Q6IFtQQVRDSCB2Nl0gUklTQy1WOiBBZGQg c3VwcG9ydCBmb3IgeHRoZWFkdmVjdG9yLXNwZWNpZmljIGludHJpbnNpY3Mu DQpUaGlzIHBhdGNoIG9ubHkgaW52b2x2ZXMgdGhlIGdlbmVyYXRpb24gb2Yg eHRoZWFkdmVjdG9yDQpzcGVjaWFsIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25z IGFuZCB2ZXh0IGluc3RydWN0aW9ucy4NCiANCmdjYy9DaGFuZ2VMb2c6DQog DQoqIGNvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMu Y2MNCihjbGFzcyB0aF9sb2Fkc3RvcmVfd2lkdGgpOiBEZWZpbmUgbmV3IGJ1 aWx0aW4gYmFzZXMuDQooY2xhc3MgdGhfZXh0cmFjdCk6IERlZmluZSBuZXcg YnVpbHRpbiBiYXNlcy4NCihCQVNFKTogRGVmaW5lIG5ldyBidWlsdGluIGJh c2VzLg0KKiBjb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJh c2VzLmg6DQpEZWZpbmUgbmV3IGJ1aWx0aW4gY2xhc3MuDQoqIGNvbmZpZy9y aXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmNjDQooc3RydWN0 IHRoX2xvYWRzdG9yZV93aWR0aF9kZWYpOiBEZWZpbmUgbmV3IGJ1aWx0aW4g c2hhcGVzLg0KKHN0cnVjdCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aF9k ZWYpOg0KRGVmaW5lIG5ldyBidWlsdGluIHNoYXBlcy4NCihzdHJ1Y3QgdGhf ZXh0cmFjdF9kZWYpOiBEZWZpbmUgbmV3IGJ1aWx0aW4gc2hhcGVzLg0KKFNI QVBFKTogRGVmaW5lIG5ldyBidWlsdGluIHNoYXBlcy4NCiogY29uZmlnL3Jp c2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuaDoNCkRlZmluZSBu ZXcgYnVpbHRpbiBzaGFwZXMuDQoqIGNvbmZpZy9yaXNjdi9yaXNjdi12ZWN0 b3ItYnVpbHRpbnMuY2MgKERFRl9SVlZfRlVOQ1RJT04pOg0KUmVkZWZpbmUg REVGX1JWVl9GVU5DVElPTiBmb3IgWFRoZWFkVmVjdG9yIHNwZWNpYWwgaW50 cmluc2ljcy4NCiogY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlu cy5oIA0KKGVudW0gcmVxdWlyZWRfZXh0KTogQWRkIG5ldyBYVGhlYWRWZWN0 b3IgbWVtYmVyLg0KKHN0cnVjdCBmdW5jdGlvbl9ncm91cF9pbmZvKTogTGlr ZXdpc2UuDQoqIGNvbmZpZy9yaXNjdi90LXJpc2N2OiANCkFkZCB0aGVhZC12 ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZg0KKiBjb25maWcvcmlzY3Yv dGhlYWQtdmVjdG9yLm1kDQooQHByZWRfbW92X3dpZHRoPHZsbWVtX29wX2F0 dHI+PG1vZGU+KTogQWRkIG5ldyBwYXR0ZXJucy4NCigqcHJlZF9tb3Zfd2lk dGg8dmxtZW1fb3BfYXR0cj48bW9kZT4pOiBMaWtld2lzZS4NCihAcHJlZF9z dG9yZV93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLg0K KEBwcmVkX3N0cmlkZWRfbG9hZF93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2Rl Pik6IExpa2V3aXNlLg0KKEBwcmVkX3N0cmlkZWRfc3RvcmVfd2lkdGg8dmxt ZW1fb3BfYXR0cj48bW9kZT4pOiBMaWtld2lzZS4NCihAcHJlZF9pbmRleGVk X2xvYWRfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4pOiBMaWtld2lzZS4N CihAcHJlZF90aF9leHRyYWN0PG1vZGU+KTogTGlrZXdpc2UuDQooKnByZWRf dGhfZXh0cmFjdDxtb2RlPik6IExpa2V3aXNlLg0KKiBjb25maWcvcmlzY3Yv dGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWY6IE5ldyBmaWxl Lg0KIA0KZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQogDQoqIGdjYy50YXJn ZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGItdnNiLmM6IE5ldyB0ZXN0 Lg0KKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxidS12 c2IuYzogTmV3IHRlc3QuDQoqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVh ZHZlY3Rvci92bGgtdnNoLmM6IE5ldyB0ZXN0Lg0KKiBnY2MudGFyZ2V0L3Jp c2N2L3J2di94dGhlYWR2ZWN0b3IvdmxodS12c2guYzogTmV3IHRlc3QuDQoq IGdjYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmM6 IE5ldyB0ZXN0Lg0KKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0 b3Ivdmx3dS12c3cuYzogTmV3IHRlc3QuDQpDby1hdXRob3JlZC1ieTogSmlu IE1hIDxqaW5tYUBsaW51eC5hbGliYWJhLmNvbT4NCkNvLWF1dGhvcmVkLWJ5 OiBYaWFubWlhbyBRdSA8Y29vcGVyLnF1QGxpbnV4LmFsaWJhYmEuY29tPg0K Q28tYXV0aG9yZWQtYnk6IENocmlzdG9waCBNw7xsbG5lciA8Y2hyaXN0b3Bo Lm11ZWxsbmVyQHZydWxsLmV1Pg0KLS0tDQouLi4vcmlzY3YvcmlzY3YtdmVj dG9yLWJ1aWx0aW5zLWJhc2VzLmNjICAgICAgfCAxMzkgKysrKysrKysrKw0K Li4uL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5oICAgICAg IHwgIDMxICsrKw0KLi4uL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1z aGFwZXMuY2MgICAgIHwgMTYwICsrKysrKysrKysrDQouLi4vcmlzY3Yvcmlz Y3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5oICAgICAgfCAgIDMgKw0KZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuY2MgICAgIHwg IDcwICsrKysrDQpnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWls dGlucy5oICAgICAgfCAgIDMgKw0KZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2 ICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsNCi4uLi9yaXNjdi90aGVh ZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiB8ICAzOSArKysNCmdj Yy9jb25maWcvcmlzY3YvdGhlYWQtdmVjdG9yLm1kICAgICAgICAgICAgICB8 IDI1MCArKysrKysrKysrKysrKysrKysNCi4uLi9yaXNjdi9ydnYveHRoZWFk dmVjdG9yL3ZsYi12c2IuYyAgICAgICAgICB8ICA2OCArKysrKw0KLi4uL3Jp c2N2L3J2di94dGhlYWR2ZWN0b3IvdmxidS12c2IuYyAgICAgICAgIHwgIDY4 ICsrKysrDQouLi4vcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmMg ICAgICAgICAgfCAgNjggKysrKysNCi4uLi9yaXNjdi9ydnYveHRoZWFkdmVj dG9yL3ZsaHUtdnNoLmMgICAgICAgICB8ICA2OCArKysrKw0KLi4uL3Jpc2N2 L3J2di94dGhlYWR2ZWN0b3Ivdmx3LXZzdy5jICAgICAgICAgIHwgIDY4ICsr KysrDQouLi4vcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHd1LXZzdy5jICAg ICAgICAgfCAgNjggKysrKysNCjE1IGZpbGVzIGNoYW5nZWQsIDExMDQgaW5z ZXJ0aW9ucygrKQ0KY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy9jb25maWcvcmlz Y3YvdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYNCmNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L3h0aGVhZHZlY3Rvci92bGItdnNiLmMNCmNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bGJ1LXZzYi5jDQpjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxoLXZz aC5jDQpjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxodS12c2guYw0KY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYveHRoZWFkdmVjdG9yL3Zsdy12c3cuYw0KY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVj dG9yL3Zsd3UtdnN3LmMNCiANCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jp c2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5jYyBiL2djYy9jb25m aWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjDQppbmRl eCAxYWE2ZTNjNjY2NS4uYjZmNmU0ZmYzN2UgMTAwNjQ0DQotLS0gYS9nY2Mv Y29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5jYw0K KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMt YmFzZXMuY2MNCkBAIC0yMTQxLDYgKzIxNDEsODMgQEAgcHVibGljOg0KICAg fQ0KfTsNCisvKiBJbXBsZW1lbnRzDQorICogdGgudmwoYi9oL3cpW3VdLnYv dGgudnMoYi9oL3cpW3VdLnYvdGgudmxzKGIvaC93KVt1XS52L3RoLnZzcyhi L2gvdylbdV0udi8NCisgKiB0aC52bHgoYi9oL3cpW3VdLnYvdGgudnNbdV14 KGIvaC93KS52DQorICogY29kZWdlbi4gICovDQordGVtcGxhdGU8Ym9vbCBT VE9SRV9QLCBsc3RfdHlwZSBMU1RfVFlQRSwgaW50IFVOU1BFQz4NCitjbGFz cyB0aF9sb2Fkc3RvcmVfd2lkdGggOiBwdWJsaWMgZnVuY3Rpb25fYmFzZQ0K K3sNCitwdWJsaWM6DQorICBib29sIGFwcGx5X3RhaWxfcG9saWN5X3AgKCkg Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIVNUT1JFX1A7IH0NCisgIGJvb2wg YXBwbHlfbWFza19wb2xpY3lfcCAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy biAhU1RPUkVfUDsgfQ0KKw0KKyAgdW5zaWduZWQgaW50IGNhbGxfcHJvcGVy dGllcyAoY29uc3QgZnVuY3Rpb25faW5zdGFuY2UgJikgY29uc3Qgb3ZlcnJp ZGUNCisgIHsNCisgICAgaWYgKFNUT1JFX1ApDQorICAgICAgcmV0dXJuIENQ X1dSSVRFX01FTU9SWTsNCisgICAgZWxzZQ0KKyAgICAgIHJldHVybiBDUF9S RUFEX01FTU9SWTsNCisgIH0NCisNCisgIGJvb2wgY2FuX2JlX292ZXJsb2Fk ZWRfcCAoZW51bSBwcmVkaWNhdGlvbl90eXBlX2luZGV4IHByZWQpIGNvbnN0 IG92ZXJyaWRlDQorICB7DQorICAgIGlmIChTVE9SRV9QIHx8IExTVF9UWVBF ID09IExTVF9JTkRFWEVEKQ0KKyAgICAgIHJldHVybiB0cnVlOw0KKyAgICBy ZXR1cm4gcHJlZCAhPSBQUkVEX1RZUEVfbm9uZTsNCisgIH0NCisNCisgIHJ0 eCBleHBhbmQgKGZ1bmN0aW9uX2V4cGFuZGVyICZlKSBjb25zdCBvdmVycmlk ZQ0KKyAgew0KKyAgICBnY2NfYXNzZXJ0IChUQVJHRVRfWFRIRUFEVkVDVE9S KTsNCisgICAgaWYgKExTVF9UWVBFID09IExTVF9JTkRFWEVEKQ0KKyAgICAg IHsNCisgaWYgKFNUT1JFX1ApDQorICAgcmV0dXJuIGUudXNlX2V4YWN0X2lu c24gKA0KKyAgICAgY29kZV9mb3JfcHJlZF9pbmRleGVkX3N0b3JlX3dpZHRo IChVTlNQRUMsIFVOU1BFQywNCisgICAgICAgIGUudmVjdG9yX21vZGUgKCkp KTsNCisgZWxzZQ0KKyAgIHJldHVybiBlLnVzZV9leGFjdF9pbnNuICgNCisg ICAgIGNvZGVfZm9yX3ByZWRfaW5kZXhlZF9sb2FkX3dpZHRoIChVTlNQRUMs IGUudmVjdG9yX21vZGUgKCkpKTsNCisgICAgICB9DQorICAgIGVsc2UgaWYg KExTVF9UWVBFID09IExTVF9TVFJJREVEKQ0KKyAgICAgIHsNCisgaWYgKFNU T1JFX1ApDQorICAgcmV0dXJuIGUudXNlX2NvbnRpZ3VvdXNfc3RvcmVfaW5z biAoDQorICAgICBjb2RlX2Zvcl9wcmVkX3N0cmlkZWRfc3RvcmVfd2lkdGgg KFVOU1BFQywgZS52ZWN0b3JfbW9kZSAoKSkpOw0KKyBlbHNlDQorICAgcmV0 dXJuIGUudXNlX2NvbnRpZ3VvdXNfbG9hZF9pbnNuICgNCisgICAgIGNvZGVf Zm9yX3ByZWRfc3RyaWRlZF9sb2FkX3dpZHRoIChVTlNQRUMsIGUudmVjdG9y X21vZGUgKCkpKTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQor IGlmIChTVE9SRV9QKQ0KKyAgIHJldHVybiBlLnVzZV9jb250aWd1b3VzX3N0 b3JlX2luc24gKA0KKyAgICAgY29kZV9mb3JfcHJlZF9zdG9yZV93aWR0aCAo VU5TUEVDLCBlLnZlY3Rvcl9tb2RlICgpKSk7DQorIGVsc2UNCisgICByZXR1 cm4gZS51c2VfY29udGlndW91c19sb2FkX2luc24gKA0KKyAgICAgY29kZV9m b3JfcHJlZF9tb3Zfd2lkdGggKFVOU1BFQywgZS52ZWN0b3JfbW9kZSAoKSkp Ow0KKyAgICAgIH0NCisgIH0NCit9Ow0KKw0KKy8qIEltcGxlbWVudHMgdmV4 dC54LnYuICAqLw0KK2NsYXNzIHRoX2V4dHJhY3QgOiBwdWJsaWMgZnVuY3Rp b25fYmFzZQ0KK3sNCitwdWJsaWM6DQorICBib29sIGFwcGx5X3ZsX3AgKCkg Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0NCisgIGJvb2wgYXBw bHlfdGFpbF9wb2xpY3lfcCAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm YWxzZTsgfQ0KKyAgYm9vbCBhcHBseV9tYXNrX3BvbGljeV9wICgpIGNvbnN0 IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9DQorICBib29sIHVzZV9tYXNr X3ByZWRpY2F0aW9uX3AgKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs c2U7IH0NCisgIGJvb2wgaGFzX21lcmdlX29wZXJhbmRfcCAoKSBjb25zdCBv dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQ0KKw0KKyAgcnR4IGV4cGFuZCAo ZnVuY3Rpb25fZXhwYW5kZXIgJmUpIGNvbnN0IG92ZXJyaWRlDQorICB7DQor ICAgIGdjY19hc3NlcnQgKFRBUkdFVF9YVEhFQURWRUNUT1IpOw0KKyAgICBy ZXR1cm4gZS51c2VfZXhhY3RfaW5zbiAoY29kZV9mb3JfcHJlZF90aF9leHRy YWN0IChlLnZlY3Rvcl9tb2RlICgpKSk7DQorICB9DQorfTsNCisNCi8qIEJl bG93IGltcGxlbWVudHMgYXJlIHZlY3RvciBjcnlwdG8gKi8NCi8qIEltcGxl bWVudHMgdmFuZG4uW3Z2LHZ4XSAqLw0KY2xhc3MgdmFuZG4gOiBwdWJsaWMg ZnVuY3Rpb25fYmFzZQ0KQEAgLTI2MDMsNiArMjY4MCwzNyBAQCBzdGF0aWMg Q09OU1RFWFBSIGNvbnN0IHNlZ19pbmRleGVkX2xvYWQ8VU5TUEVDX09SREVS RUQ+IHZsb3hzZWdfb2JqOw0Kc3RhdGljIENPTlNURVhQUiBjb25zdCBzZWdf aW5kZXhlZF9zdG9yZTxVTlNQRUNfVU5PUkRFUkVEPiB2c3V4c2VnX29iajsN CnN0YXRpYyBDT05TVEVYUFIgY29uc3Qgc2VnX2luZGV4ZWRfc3RvcmU8VU5T UEVDX09SREVSRUQ+IHZzb3hzZWdfb2JqOw0Kc3RhdGljIENPTlNURVhQUiBj b25zdCB2bHNlZ2ZmIHZsc2VnZmZfb2JqOw0KK3N0YXRpYyBDT05TVEVYUFIg Y29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfVU5JVF9TVFJJ REUsIFVOU1BFQ19USF9WTEI+IHZsYl9vYmo7DQorc3RhdGljIENPTlNURVhQ UiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9VTklUX1NU UklERSwgVU5TUEVDX1RIX1ZMQlU+IHZsYnVfb2JqOw0KK3N0YXRpYyBDT05T VEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfVU5J VF9TVFJJREUsIFVOU1BFQ19USF9WTEg+IHZsaF9vYmo7DQorc3RhdGljIENP TlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9V TklUX1NUUklERSwgVU5TUEVDX1RIX1ZMSFU+IHZsaHVfb2JqOw0KK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBM U1RfVU5JVF9TVFJJREUsIFVOU1BFQ19USF9WTFc+IHZsd19vYmo7DQorc3Rh dGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2Us IExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMV1U+IHZsd3Vfb2JqOw0K K3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRy dWUsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMQj4gdnNiX29iajsN CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDx0 cnVlLCBMU1RfVU5JVF9TVFJJREUsIFVOU1BFQ19USF9WTEg+IHZzaF9vYmo7 DQorc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8 dHJ1ZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhfVkxXPiB2c3dfb2Jq Ow0KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRo PGZhbHNlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU0I+IHZsc2Jfb2Jq Ow0KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRo PGZhbHNlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU0JVPiB2bHNidV9v Ymo7DQorc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lk dGg8ZmFsc2UsIExTVF9TVFJJREVELCBVTlNQRUNfVEhfVkxTSD4gdmxzaF9v Ymo7DQorc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lk dGg8ZmFsc2UsIExTVF9TVFJJREVELCBVTlNQRUNfVEhfVkxTSFU+IHZsc2h1 X29iajsNCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93 aWR0aDxmYWxzZSwgTFNUX1NUUklERUQsIFVOU1BFQ19USF9WTFNXPiB2bHN3 X29iajsNCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93 aWR0aDxmYWxzZSwgTFNUX1NUUklERUQsIFVOU1BFQ19USF9WTFNXVT4gdmxz d3Vfb2JqOw0KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3Jl X3dpZHRoPHRydWUsIExTVF9TVFJJREVELCBVTlNQRUNfVEhfVkxTQj4gdnNz Yl9vYmo7DQorc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVf d2lkdGg8dHJ1ZSwgTFNUX1NUUklERUQsIFVOU1BFQ19USF9WTFNIPiB2c3No X29iajsNCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93 aWR0aDx0cnVlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU1c+IHZzc3df b2JqOw0KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dp ZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZMWEI+IHZseGJf b2JqOw0KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dp ZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZMWEJVPiB2bHhi dV9vYmo7DQorc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVf d2lkdGg8ZmFsc2UsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYSD4gdmx4 aF9vYmo7DQorc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVf d2lkdGg8ZmFsc2UsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYSFU+IHZs eGh1X29iajsNCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9y ZV93aWR0aDxmYWxzZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WTFhXPiB2 bHh3X29iajsNCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9y ZV93aWR0aDxmYWxzZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WTFhXVT4g dmx4d3Vfb2JqOw0KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0 b3JlX3dpZHRoPHRydWUsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYQj4g dnN4Yl9vYmo7DQorc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3Rv cmVfd2lkdGg8dHJ1ZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WTFhIPiB2 c3hoX29iajsNCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9y ZV93aWR0aDx0cnVlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZMWFc+IHZz eHdfb2JqOw0KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3Jl X3dpZHRoPHRydWUsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVlNVWEI+IHZz dXhiX29iajsNCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9y ZV93aWR0aDx0cnVlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZTVVhIPiB2 c3V4aF9vYmo7DQorc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3Rv cmVfd2lkdGg8dHJ1ZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WU1VYVz4g dnN1eHdfb2JqOw0KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfZXh0cmFj dCB2ZXh0X3hfdl9vYmo7DQovKiBDcnlwdG8gVmVjdG9yICovDQpzdGF0aWMg Q09OU1RFWFBSIGNvbnN0IHZhbmRuIHZhbmRuX29iajsNCkBAIC0yODk0LDYg KzMwMDIsMzcgQEAgQkFTRSAodmxveHNlZykNCkJBU0UgKHZzdXhzZWcpDQpC QVNFICh2c294c2VnKQ0KQkFTRSAodmxzZWdmZikNCitCQVNFICh2bGIpDQor QkFTRSAodmxoKQ0KK0JBU0UgKHZsdykNCitCQVNFICh2bGJ1KQ0KK0JBU0Ug KHZsaHUpDQorQkFTRSAodmx3dSkNCitCQVNFICh2c2IpDQorQkFTRSAodnNo KQ0KK0JBU0UgKHZzdykNCitCQVNFICh2bHNiKQ0KK0JBU0UgKHZsc2gpDQor QkFTRSAodmxzdykNCitCQVNFICh2bHNidSkNCitCQVNFICh2bHNodSkNCitC QVNFICh2bHN3dSkNCitCQVNFICh2c3NiKQ0KK0JBU0UgKHZzc2gpDQorQkFT RSAodnNzdykNCitCQVNFICh2bHhiKQ0KK0JBU0UgKHZseGgpDQorQkFTRSAo dmx4dykNCitCQVNFICh2bHhidSkNCitCQVNFICh2bHhodSkNCitCQVNFICh2 bHh3dSkNCitCQVNFICh2c3hiKQ0KK0JBU0UgKHZzeGgpDQorQkFTRSAodnN4 dykNCitCQVNFICh2c3V4YikNCitCQVNFICh2c3V4aCkNCitCQVNFICh2c3V4 dykNCitCQVNFICh2ZXh0X3hfdikNCi8qIENyeXB0byB2ZWN0b3IgKi8NCkJB U0UgKHZhbmRuKQ0KQkFTRSAodmJyZXYpDQpkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuaCBiL2dj Yy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmgN CmluZGV4IDg3YzdmNDNhNDIzLi4xZjJjOTRkMzU0MSAxMDA2NDQNCi0tLSBh L2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2Vz LmgNCisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0 aW5zLWJhc2VzLmgNCkBAIC0yODAsNiArMjgwLDM3IEBAIGV4dGVybiBjb25z dCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bG94c2VnOw0KZXh0ZXJuIGNvbnN0 IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzdXhzZWc7DQpleHRlcm4gY29uc3Qg ZnVuY3Rpb25fYmFzZSAqY29uc3QgdnNveHNlZzsNCmV4dGVybiBjb25zdCBm dW5jdGlvbl9iYXNlICpjb25zdCB2bHNlZ2ZmOw0KK2V4dGVybiBjb25zdCBm dW5jdGlvbl9iYXNlICpjb25zdCB2bGI7DQorZXh0ZXJuIGNvbnN0IGZ1bmN0 aW9uX2Jhc2UgKmNvbnN0IHZsaDsNCitleHRlcm4gY29uc3QgZnVuY3Rpb25f YmFzZSAqY29uc3Qgdmx3Ow0KK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNl ICpjb25zdCB2bGJ1Ow0KK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpj b25zdCB2bGh1Ow0KK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25z dCB2bHd1Ow0KK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2 c2I7DQorZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzaDsN CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnN3Ow0KK2V4 dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHNiOw0KK2V4dGVy biBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHNoOw0KK2V4dGVybiBj b25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHN3Ow0KK2V4dGVybiBjb25z dCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHNidTsNCitleHRlcm4gY29uc3Qg ZnVuY3Rpb25fYmFzZSAqY29uc3QgdmxzaHU7DQorZXh0ZXJuIGNvbnN0IGZ1 bmN0aW9uX2Jhc2UgKmNvbnN0IHZsc3d1Ow0KK2V4dGVybiBjb25zdCBmdW5j dGlvbl9iYXNlICpjb25zdCB2c3NiOw0KK2V4dGVybiBjb25zdCBmdW5jdGlv bl9iYXNlICpjb25zdCB2c3NoOw0KK2V4dGVybiBjb25zdCBmdW5jdGlvbl9i YXNlICpjb25zdCB2c3N3Ow0KK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNl ICpjb25zdCB2bHhiOw0KK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpj b25zdCB2bHhoOw0KK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25z dCB2bHh3Ow0KK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2 bHhidTsNCitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgdmx4 aHU7DQorZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseHd1 Ow0KK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3hiOw0K K2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3hoOw0KK2V4 dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3h3Ow0KK2V4dGVy biBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3V4YjsNCitleHRlcm4g Y29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnN1eGg7DQorZXh0ZXJuIGNv bnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzdXh3Ow0KK2V4dGVybiBjb25z dCBmdW5jdGlvbl9iYXNlICpjb25zdCB2ZXh0X3hfdjsNCi8qIEJlbG93IGZ1 bmN0aW9uX2Jhc2UgYXJlIFZlY3RybyBDcnlwdG8qLw0KZXh0ZXJuIGNvbnN0 IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZhbmRuOw0KZXh0ZXJuIGNvbnN0IGZ1 bmN0aW9uX2Jhc2UgKmNvbnN0IHZicmV2Ow0KZGlmZiAtLWdpdCBhL2djYy9j b25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5jYyBi L2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBl cy5jYw0KaW5kZXggMWU0ZjRkNTNkZTYuLjhlOTBiMTdhOTRiIDEwMDY0NA0K LS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMt c2hhcGVzLmNjDQorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rv ci1idWlsdGlucy1zaGFwZXMuY2MNCkBAIC0yMTEsNiArMjExLDE0NiBAQCBz dHJ1Y3QgaW5kZXhlZF9sb2Fkc3RvcmVfZGVmIDogcHVibGljIGZ1bmN0aW9u X3NoYXBlDQogICB9DQp9Ow0KKy8qIEFkZCBvbmUgZnVuY3Rpb24gaW5zdGFu Y2UgZm9yIEdST1VQLCB1c2luZyBvcGVyYW5kIHN1ZmZpeCBhdCBpbmRleCBP SSwNCisgICBtb2RlIHN1ZmZpeCBhdCBpbmRleCBQQUlSICYmIGJpIGFuZCBw cmVkaWNhdGlvbiBzdWZmaXggYXQgaW5kZXggcHJlZF9pZHguICAqLw0KK3N0 YXRpYyB2b2lkDQorYnVpbGRfdGhfbG9hZHN0b3JlIChmdW5jdGlvbl9idWls ZGVyICZiLCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCwNCisg ICAgIHVuc2lnbmVkIGludCBwcmVkX2lkeCwgdW5zaWduZWQgaW50IHZlY190 eXBlX2lkeCkNCit7DQorICBhdXRvX3ZlYzx0cmVlLCA1PiBhcmd1bWVudF90 eXBlczsNCisgIGZ1bmN0aW9uX2luc3RhbmNlIGZ1bmN0aW9uX2luc3RhbmNl IChncm91cC5iYXNlX25hbWUsICpncm91cC5iYXNlLA0KKyAgICAgICAgKmdy b3VwLnNoYXBlLA0KKyAgICAgICAgZ3JvdXAub3BzX2luZm9zLnR5cGVzW3Zl Y190eXBlX2lkeF0sDQorICAgICAgICBncm91cC5wcmVkc1twcmVkX2lkeF0s ICZncm91cC5vcHNfaW5mb3MpOw0KKyAgdHJlZSByZXR1cm5fdHlwZSA9IGdy b3VwLm9wc19pbmZvcy5yZXQuZ2V0X3RyZWVfdHlwZSAoDQorICAgIGdyb3Vw Lm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4KTsNCisgIGIu YWxsb2NhdGVfYXJndW1lbnRfdHlwZXMgKGZ1bmN0aW9uX2luc3RhbmNlLCBh cmd1bWVudF90eXBlcyk7DQorICBiLmFwcGx5X3ByZWRpY2F0aW9uIChmdW5j dGlvbl9pbnN0YW5jZSwgcmV0dXJuX3R5cGUsIGFyZ3VtZW50X3R5cGVzKTsN CisNCisgIGlmIChUQVJHRVRfWFRIRUFEVkVDVE9SICYmICFjaGVja190eXBl IChyZXR1cm5fdHlwZSwgYXJndW1lbnRfdHlwZXMpKQ0KKyAgICByZXR1cm47 DQorDQorICB0cmVlIHR5cGUgPSBidWlsdGluX3R5cGVzW2dyb3VwLm9wc19p bmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4XS52ZWN0b3I7DQorICBp ZiAoc3Ryc3RyIChncm91cC5iYXNlX25hbWUsICJsIikNCisgICAgICAmJiBz dHJzdHIgKGdyb3VwLmJhc2VfbmFtZSwgInUiKQ0KKyAgICAgICYmICFUWVBF X1VOU0lHTkVEIChUUkVFX1RZUEUgKHR5cGUpKSkNCisgICAgcmV0dXJuOw0K Kw0KKyAgaWYgKHN0cnN0ciAoZ3JvdXAuYmFzZV9uYW1lLCAibCIpDQorICAg ICAgJiYgIXN0cnN0ciAoZ3JvdXAuYmFzZV9uYW1lLCAidSIpDQorICAgICAg JiYgVFlQRV9VTlNJR05FRCAoVFJFRV9UWVBFICh0eXBlKSkpDQorICAgIHJl dHVybjsNCisNCisgIG1hY2hpbmVfbW9kZSBtb2RlID0gVFlQRV9NT0RFICh0 eXBlKTsNCisgIGludCBzZXcgPSBHRVRfTU9ERV9CSVRTSVpFIChHRVRfTU9E RV9JTk5FUiAobW9kZSkpOw0KKyAgaWYgKHN0cnN0ciAoZ3JvdXAuYmFzZV9u YW1lLCAiaCIpICYmIHNldyA9PSA4KQ0KKyAgICByZXR1cm47DQorDQorICBp ZiAoc3Ryc3RyIChncm91cC5iYXNlX25hbWUsICJ3IikgJiYgKHNldyA9PSA4 IHx8IHNldyA9PTE2KSkNCisgICAgcmV0dXJuOw0KKw0KKyAgYi5hZGRfb3Zl cmxvYWRlZF9mdW5jdGlvbiAoZnVuY3Rpb25faW5zdGFuY2UsICpncm91cC5z aGFwZSk7DQorICBiLmFkZF91bmlxdWVfZnVuY3Rpb24gKGZ1bmN0aW9uX2lu c3RhbmNlLCAoKmdyb3VwLnNoYXBlKSwgcmV0dXJuX3R5cGUsDQorIGFyZ3Vt ZW50X3R5cGVzKTsNCit9DQorDQorLyogdGhfbG9hZHN0b3JlX3dpZHRoX2Rl ZiBjbGFzcy4gICovDQorc3RydWN0IHRoX2xvYWRzdG9yZV93aWR0aF9kZWYg OiBwdWJsaWMgYnVpbGRfYmFzZQ0KK3sNCisgICB2b2lkIGJ1aWxkIChmdW5j dGlvbl9idWlsZGVyICZiLA0KKyAgICAgICBjb25zdCBmdW5jdGlvbl9ncm91 cF9pbmZvICZncm91cCkgY29uc3Qgb3ZlcnJpZGUNCisgIHsNCisgICAgZm9y ICh1bnNpZ25lZCBpbnQgcHJlZF9pZHggPSAwOyBncm91cC5wcmVkc1twcmVk X2lkeF0gIT0gTlVNX1BSRURfVFlQRVM7DQorICAgICAgICsrcHJlZF9pZHgp DQorICAgICAgew0KKyBmb3IgKHVuc2lnbmVkIGludCB2ZWNfdHlwZV9pZHgg PSAwOw0KKyAgICAgIGdyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9p ZHhdLmluZGV4ICE9IE5VTV9WRUNUT1JfVFlQRVM7DQorICAgICAgKyt2ZWNf dHlwZV9pZHgpDQorICAgew0KKyAgICAgYnVpbGRfdGhfbG9hZHN0b3JlIChi LCBncm91cCwgcHJlZF9pZHgsIHZlY190eXBlX2lkeCk7DQorICAgfQ0KKyAg ICAgIH0NCisgIH0NCisNCisgIGNoYXIgKmdldF9uYW1lIChmdW5jdGlvbl9i dWlsZGVyICZiLCBjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFuY2Us DQorICAgYm9vbCBvdmVybG9hZGVkX3ApIGNvbnN0IG92ZXJyaWRlDQorICB7 DQorICAgIC8qIFJldHVybiBudWxscHRyIGlmIGl0IGNhbiBub3QgYmUgb3Zl cmxvYWRlZC4gICovDQorICAgIGlmIChvdmVybG9hZGVkX3AgJiYgIWluc3Rh bmNlLmJhc2UtPmNhbl9iZV9vdmVybG9hZGVkX3AgKGluc3RhbmNlLnByZWQp KQ0KKyAgICAgIHJldHVybiBudWxscHRyOw0KKw0KKyAgICBiLmFwcGVuZF9u YW1lICgiX19yaXNjdl90aF8iKTsNCisgICAgYi5hcHBlbmRfbmFtZSAoaW5z dGFuY2UuYmFzZV9uYW1lKTsNCisNCisgICAgLyogdm9wX3YgLS0+IHZvcF92 Xzx0eXBlPi4gICovDQorICAgIGlmICghb3ZlcmxvYWRlZF9wKQ0KKyAgICAg IHsNCisgLyogdm9wIC0tPiB2b3Bfdi4gICovDQorIGIuYXBwZW5kX25hbWUg KG9wZXJhbmRfc3VmZml4ZXNbaW5zdGFuY2Uub3BfaW5mby0+b3BdKTsNCisg Lyogdm9wX3YgLS0+IHZvcF92Xzx0eXBlPi4gICovDQorIGIuYXBwZW5kX25h bWUgKHR5cGVfc3VmZml4ZXNbaW5zdGFuY2UudHlwZS5pbmRleF0udmVjdG9y KTsNCisgICAgICB9DQorDQorICAgIC8qIEFjY29yZGluZyB0byBydnYtaW50 cmluc2ljLWRvYywgaXQgZG9lcyBub3QgYWRkICJfbSIgc3VmZml4DQorICAg ICAgIGZvciB2b3BfbSBDKysgb3ZlcmxvYWRlZCBBUEkuICAqLw0KKyAgICBp ZiAob3ZlcmxvYWRlZF9wICYmIGluc3RhbmNlLnByZWQgPT0gUFJFRF9UWVBF X20pDQorICAgICAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7DQorICAgIGIu YXBwZW5kX25hbWUgKHByZWRpY2F0aW9uX3N1ZmZpeGVzW2luc3RhbmNlLnBy ZWRdKTsNCisgICAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7DQorICB9DQor fTsNCisNCisNCisvKiB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aF9kZWYg Y2xhc3MuICAqLw0KK3N0cnVjdCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0 aF9kZWYgOiBwdWJsaWMgZnVuY3Rpb25fc2hhcGUNCit7DQorICB2b2lkIGJ1 aWxkIChmdW5jdGlvbl9idWlsZGVyICZiLA0KKyAgICAgICBjb25zdCBmdW5j dGlvbl9ncm91cF9pbmZvICZncm91cCkgY29uc3Qgb3ZlcnJpZGUNCisgIHsN CisgICAgZm9yICh1bnNpZ25lZCBpbnQgcHJlZF9pZHggPSAwOyBncm91cC5w cmVkc1twcmVkX2lkeF0gIT0gTlVNX1BSRURfVFlQRVM7DQorICsrcHJlZF9p ZHgpDQorICAgICAgew0KKyBmb3IgKHVuc2lnbmVkIGludCB2ZWNfdHlwZV9p ZHggPSAwOw0KKyAgICAgIGdyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlw ZV9pZHhdLmluZGV4ICE9IE5VTV9WRUNUT1JfVFlQRVM7DQorICAgICAgKyt2 ZWNfdHlwZV9pZHgpDQorICAgew0KKyAgICB0cmVlIGluZGV4X3R5cGUgPSBn cm91cC5vcHNfaW5mb3MuYXJnc1sxXS5nZXRfdHJlZV90eXBlICgNCisgICAg ICAgZ3JvdXAub3BzX2luZm9zLnR5cGVzW3ZlY190eXBlX2lkeF0uaW5kZXgp Ow0KKyAgICBpZiAoIWluZGV4X3R5cGUpDQorICAgICAgIGNvbnRpbnVlOw0K KyAgICBidWlsZF90aF9sb2Fkc3RvcmUgKGIsIGdyb3VwLCBwcmVkX2lkeCwg dmVjX3R5cGVfaWR4KTsNCisgICB9DQorICAgICAgfQ0KKyAgfQ0KKw0KKyAg Y2hhciAqZ2V0X25hbWUgKGZ1bmN0aW9uX2J1aWxkZXIgJmIsIGNvbnN0IGZ1 bmN0aW9uX2luc3RhbmNlICZpbnN0YW5jZSwNCisgICBib29sIG92ZXJsb2Fk ZWRfcCkgY29uc3Qgb3ZlcnJpZGUNCisgIHsNCisNCisgICAgLyogUmV0dXJu IG51bGxwdHIgaWYgaXQgY2FuIG5vdCBiZSBvdmVybG9hZGVkLiAgKi8NCisg ICAgaWYgKG92ZXJsb2FkZWRfcCAmJiAhaW5zdGFuY2UuYmFzZS0+Y2FuX2Jl X292ZXJsb2FkZWRfcCAoaW5zdGFuY2UucHJlZCkpDQorICAgICAgcmV0dXJu IG51bGxwdHI7DQorDQorICAgIGIuYXBwZW5kX25hbWUgKCJfX3Jpc2N2X3Ro XyIpOw0KKyAgICBiLmFwcGVuZF9uYW1lIChpbnN0YW5jZS5iYXNlX25hbWUp Ow0KKyAgICAvKiB2b3BfdiAtLT4gdm9wX3ZfPHR5cGU+LiAgKi8NCisgICAg aWYgKCFvdmVybG9hZGVkX3ApDQorICAgICAgew0KKyAvKiB2b3AgLS0+IHZv cF92LiAgKi8NCisgYi5hcHBlbmRfbmFtZSAob3BlcmFuZF9zdWZmaXhlc1tp bnN0YW5jZS5vcF9pbmZvLT5vcF0pOw0KKyAvKiB2b3BfdiAtLT4gdm9wX3Zf PHR5cGU+LiAgKi8NCisgYi5hcHBlbmRfbmFtZSAodHlwZV9zdWZmaXhlc1tp bnN0YW5jZS50eXBlLmluZGV4XS52ZWN0b3IpOw0KKyAgICAgIH0NCisNCisg ICAgLyogQWNjb3JkaW5nIHRvIHJ2di1pbnRyaW5zaWMtZG9jLCBpdCBkb2Vz IG5vdCBhZGQgIl9tIiBzdWZmaXgNCisgICAgICAgZm9yIHZvcF9tIEMrKyBv dmVybG9hZGVkIEFQSS4gICovDQorICAgIGlmIChvdmVybG9hZGVkX3AgJiYg aW5zdGFuY2UucHJlZCA9PSBQUkVEX1RZUEVfbSkNCisgICAgICByZXR1cm4g Yi5maW5pc2hfbmFtZSAoKTsNCisgICAgYi5hcHBlbmRfbmFtZSAocHJlZGlj YXRpb25fc3VmZml4ZXNbaW5zdGFuY2UucHJlZF0pOw0KKyAgICByZXR1cm4g Yi5maW5pc2hfbmFtZSAoKTsNCisgIH0NCit9Ow0KKw0KLyogYWx1X2RlZiBj bGFzcy4gICovDQpzdHJ1Y3QgYWx1X2RlZiA6IHB1YmxpYyBidWlsZF9iYXNl DQp7DQpAQCAtNjMyLDYgKzc3MiwyMyBAQCBzdHJ1Y3QgcmVkdWNfYWx1X2Rl ZiA6IHB1YmxpYyBidWlsZF9iYXNlDQogICB9DQp9Ow0KKy8qIHRoX2V4dHJh Y3RfZGVmIGNsYXNzLiAgKi8NCitzdHJ1Y3QgdGhfZXh0cmFjdF9kZWYgOiBw dWJsaWMgYnVpbGRfYmFzZQ0KK3sNCisgIGNoYXIgKmdldF9uYW1lIChmdW5j dGlvbl9idWlsZGVyICZiLCBjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5z dGFuY2UsDQorICAgICAgYm9vbCBvdmVybG9hZGVkX3ApIGNvbnN0IG92ZXJy aWRlDQorICB7DQorICAgIGIuYXBwZW5kX25hbWUgKCJfX3Jpc2N2X3RoXyIp Ow0KKyAgICBiLmFwcGVuZF9uYW1lIChpbnN0YW5jZS5iYXNlX25hbWUpOw0K Kw0KKyAgICBpZiAob3ZlcmxvYWRlZF9wKQ0KKyAgICAgIHJldHVybiBiLmZp bmlzaF9uYW1lICgpOw0KKyAgICBiLmFwcGVuZF9uYW1lICh0eXBlX3N1ZmZp eGVzW2luc3RhbmNlLnR5cGUuaW5kZXhdLnZlY3Rvcik7DQorICAgIGIuYXBw ZW5kX25hbWUgKHR5cGVfc3VmZml4ZXNbaW5zdGFuY2UudHlwZS5pbmRleF0u c2NhbGFyKTsNCisgICAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7DQorICB9 DQorfTsNCisNCi8qIHNjYWxhcl9tb3ZlX2RlZiBjbGFzcy4gICovDQpzdHJ1 Y3Qgc2NhbGFyX21vdmVfZGVmIDogcHVibGljIGJ1aWxkX2Jhc2UNCnsNCkBA IC0xMDk0LDYgKzEyNTEsOCBAQCBTSEFQRSh2c2V0dmwsIHZzZXR2bCkNClNI QVBFKHZzZXR2bCwgdnNldHZsbWF4KQ0KU0hBUEUobG9hZHN0b3JlLCBsb2Fk c3RvcmUpDQpTSEFQRShpbmRleGVkX2xvYWRzdG9yZSwgaW5kZXhlZF9sb2Fk c3RvcmUpDQorU0hBUEUodGhfbG9hZHN0b3JlX3dpZHRoLCB0aF9sb2Fkc3Rv cmVfd2lkdGgpDQorU0hBUEUodGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgs IHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoKQ0KU0hBUEUoYWx1LCBhbHUp DQpTSEFQRShhbHVfZnJtLCBhbHVfZnJtKQ0KU0hBUEUod2lkZW5fYWx1LCB3 aWRlbl9hbHUpDQpAQCAtMTEwNiw2ICsxMjY1LDcgQEAgU0hBUEUobW92ZSwg bW92ZSkNClNIQVBFKG1hc2tfYWx1LCBtYXNrX2FsdSkNClNIQVBFKHJlZHVj X2FsdSwgcmVkdWNfYWx1KQ0KU0hBUEUocmVkdWNfYWx1X2ZybSwgcmVkdWNf YWx1X2ZybSkNCitTSEFQRSh0aF9leHRyYWN0LCB0aF9leHRyYWN0KQ0KU0hB UEUoc2NhbGFyX21vdmUsIHNjYWxhcl9tb3ZlKQ0KU0hBUEUodnVuZGVmaW5l ZCwgdnVuZGVmaW5lZCkNClNIQVBFKG1pc2MsIG1pc2MpDQpkaWZmIC0tZ2l0 IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hh cGVzLmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlu cy1zaGFwZXMuaA0KaW5kZXggYWMyYTI4Y2UwMTcuLmE3NjI0ZDBmYWJkIDEw MDY0NA0KLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVp bHRpbnMtc2hhcGVzLmgNCisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3Yt dmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5oDQpAQCAtMjgsNiArMjgsOCBAQCBl eHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHZzZXR2bDsNCmV4 dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgdnNldHZsbWF4Ow0K ZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBsb2Fkc3RvcmU7 DQpleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IGluZGV4ZWRf bG9hZHN0b3JlOw0KK2V4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29u c3QgdGhfbG9hZHN0b3JlX3dpZHRoOw0KK2V4dGVybiBjb25zdCBmdW5jdGlv bl9zaGFwZSAqY29uc3QgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGg7DQpl eHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IGFsdTsNCmV4dGVy biBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgYWx1X2ZybTsNCmV4dGVy biBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3Qgd2lkZW5fYWx1Ow0KQEAg LTQxLDYgKzQzLDcgQEAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpj b25zdCBtYXNrX2FsdTsNCmV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAq Y29uc3QgcmVkdWNfYWx1Ow0KZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBl ICpjb25zdCByZWR1Y19hbHVfZnJtOw0KZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X3NoYXBlICpjb25zdCBzY2FsYXJfbW92ZTsNCitleHRlcm4gY29uc3QgZnVu Y3Rpb25fc2hhcGUgKmNvbnN0IHRoX2V4dHJhY3Q7DQpleHRlcm4gY29uc3Qg ZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHZ1bmRlZmluZWQ7DQpleHRlcm4gY29u c3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IG1pc2M7DQpleHRlcm4gY29uc3Qg ZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHZzZXQ7DQpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuY2MgYi9nY2Mv Y29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5jYw0KaW5kZXgg MjVlMGI2ZTU2ZGUuLjQ0YjlmZWMxODk4IDEwMDY0NA0KLS0tIGEvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuY2MNCisrKyBiL2dj Yy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmNjDQpAQCAt OTM0LDYgKzkzNCwzMiBAQCBzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9h cmdfdHlwZV9pbmZvIGV4dF92Y3JlYXRlX2FyZ3NbXQ0KICAgPSB7cnZ2X2Fy Z190eXBlX2luZm8gKFJWVl9CQVNFX3ZlY3RvciksDQogICAgICBydnZfYXJn X3R5cGVfaW5mb19lbmR9Ow0KKy8qIEEgbGlzdCBvZiBhcmdzIGZvciB2ZWN0 b3JfdHlwZSBmdW5jIChjb25zdCBzY2FsYXJfdHlwZSAqLCBzaXplX3QpDQor ICogZnVuY3Rpb24uICAqLw0KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2 X2FyZ190eXBlX2luZm8gc2NhbGFyX2NvbnN0X3B0cl9zaXplX2FyZ3NbXQ0K KyAgPSB7cnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhcl9jb25z dF9wdHIpLA0KKyAgICAgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3Np emUpLCBydnZfYXJnX3R5cGVfaW5mb19lbmR9Ow0KKw0KKy8qIEEgbGlzdCBv ZiBhcmdzIGZvciB2ZWN0b3JfdHlwZSBmdW5jIChjb25zdCBzY2FsYXJfdHlw ZSAqLCBlZXc4X2luZGV4X3R5cGUpDQorICogZnVuY3Rpb24uICAqLw0KK3N0 YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2X2FyZ190eXBlX2luZm8gc2NhbGFy X2NvbnN0X3B0cl9pbmRleF9hcmdzW10NCisgID0ge3J2dl9hcmdfdHlwZV9p bmZvIChSVlZfQkFTRV9zY2FsYXJfY29uc3RfcHRyKSwNCisgICAgIHJ2dl9h cmdfdHlwZV9pbmZvIChSVlZfQkFTRV91bnNpZ25lZF92ZWN0b3IpLCBydnZf YXJnX3R5cGVfaW5mb19lbmR9Ow0KKw0KKy8qIEEgbGlzdCBvZiBhcmdzIGZv ciB2b2lkIGZ1bmMgKHNjYWxhcl90eXBlICosIGVldzhfaW5kZXhfdHlwZSwg dmVjdG9yX3R5cGUpDQorICogZnVuY3Rpb24uICAqLw0KK3N0YXRpYyBDT05T VEVYUFIgY29uc3QgcnZ2X2FyZ190eXBlX2luZm8gc2NhbGFyX3B0cl9pbmRl eF9hcmdzW10NCisgID0ge3J2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV9z Y2FsYXJfcHRyKSwNCisgICAgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFT RV91bnNpZ25lZF92ZWN0b3IpLA0KKyAgICAgcnZ2X2FyZ190eXBlX2luZm8g KFJWVl9CQVNFX3ZlY3RvciksIHJ2dl9hcmdfdHlwZV9pbmZvX2VuZH07DQor DQorLyogQSBsaXN0IG9mIGFyZ3MgZm9yIHZvaWQgZnVuYyAoc2NhbGFyX3R5 cGUgKiwgc2l6ZV90LCB2ZWN0b3JfdHlwZSkNCisgKiBmdW5jdGlvbi4gICov DQorc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfYXJnX3R5cGVfaW5mbyBz Y2FsYXJfcHRyX3NpemVfYXJnc1tdDQorICA9IHtydnZfYXJnX3R5cGVfaW5m byAoUlZWX0JBU0Vfc2NhbGFyX3B0ciksDQorICAgICBydnZfYXJnX3R5cGVf aW5mbyAoUlZWX0JBU0Vfc2l6ZSksIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZf QkFTRV92ZWN0b3IpLA0KKyAgICAgcnZ2X2FyZ190eXBlX2luZm9fZW5kfTsN CisNCi8qIEEgbGlzdCBvZiBub25lIHByZWRzIHRoYXQgd2lsbCBiZSByZWdp c3RlcmVkIGZvciBpbnRyaW5zaWMgZnVuY3Rpb25zLiAgKi8NCnN0YXRpYyBD T05TVEVYUFIgY29uc3QgcHJlZGljYXRpb25fdHlwZV9pbmRleCBub25lX3By ZWRzW10NCiAgID0ge1BSRURfVFlQRV9ub25lLCBOVU1fUFJFRF9UWVBFU307 DQpAQCAtMTQ1NSw2ICsxNDgxLDE0IEBAIHN0YXRpYyBDT05TVEVYUFIgY29u c3QgcnZ2X29wX2luZm8gaXVfc2hpZnRfdnZ2X29wcw0KICAgICAgcnZ2X2Fy Z190eXBlX2luZm8gKFJWVl9CQVNFX3ZlY3RvciksIC8qIFJldHVybiB0eXBl ICovDQogICAgICBzaGlmdF92dl9hcmdzIC8qIEFyZ3MgKi99Ow0KKy8qIEEg c3RhdGljIG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHNjYWxhcl90eXBlIGZ1 bmMgKHZlY3Rvcl90eXBlLCBzaXplX3QpDQorICogZnVuY3Rpb24gcmVnaXN0 cmF0aW9uLiAqLw0KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2X29wX2lu Zm8gaXVfeF9zX3Vfb3BzDQorICA9IHtpdV9vcHMsICAgICAgICAgIC8qIFR5 cGVzICovDQorICAgICBPUF9UWVBFX3Z4LCAgICAgICAgLyogU3VmZml4ICov DQorICAgICBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfc2NhbGFyKSwg LyogUmV0dXJuIHR5cGUgKi8NCisgICAgIHZfc2l6ZV9hcmdzIC8qIEFyZ3Mg Ki99Ow0KKw0KLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlvbiBmb3Ig dmVjdG9yX3R5cGUgZnVuYyAodmVjdG9yX3R5cGUsIHNpemVfdCkNCiAgKiBm dW5jdGlvbiByZWdpc3RyYXRpb24uICovDQpzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHJ2dl9vcF9pbmZvIGl1X3NoaWZ0X3Z2eF9vcHMNCkBAIC0yNjM4LDYg KzI2NzIsMzggQEAgc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfb3BfaW5m byBhbGxfdl92Y3JlYXRlX2xtdWw0X3gyX29wcw0KICAgICAgcnZ2X2FyZ190 eXBlX2luZm8gKFJWVl9CQVNFX3ZsbXVsX2V4dF94MiksIC8qIFJldHVybiB0 eXBlICovDQogICAgICBleHRfdmNyZWF0ZV9hcmdzIC8qIEFyZ3MgKi99Ow0K Ky8qIEEgc3RhdGljIG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZlY3Rvcl90 eXBlIGZ1bmMgKGNvbnN0IHNjYWxhcl90eXBlICosDQorICogc2l6ZV90KSBm dW5jdGlvbiByZWdpc3RyYXRpb24uICAqLw0KK3N0YXRpYyBDT05TVEVYUFIg Y29uc3QgcnZ2X29wX2luZm8gYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9zaXpl X29wcw0KKyAgPSB7YWxsX29wcywgICAvKiBUeXBlcyAgKi8NCisgICAgIE9Q X1RZUEVfdiwgICAvKiBTdWZmaXggICovDQorICAgICBydnZfYXJnX3R5cGVf aW5mbyAoUlZWX0JBU0VfdmVjdG9yKSwgLyogUmV0dXJuIHR5cGUgICovDQor ICAgICBzY2FsYXJfY29uc3RfcHRyX3NpemVfYXJncyAvKiBBcmdzICovfTsN CisNCisvKiBBIHN0YXRpYyBvcGVyYW5kIGluZm9ybWF0aW9uIGZvciB2b2lk IGZ1bmMgKHNjYWxhcl90eXBlICosIHNpemVfdCwNCisgKiB2ZWN0b3JfdHlw ZSkgZnVuY3Rpb24gcmVnaXN0cmF0aW9uLiAgKi8NCitzdGF0aWMgQ09OU1RF WFBSIGNvbnN0IHJ2dl9vcF9pbmZvIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9v cHMNCisgID0ge2FsbF9vcHMsIC8qIFR5cGVzICAqLw0KKyAgICAgT1BfVFlQ RV92LCAvKiBTdWZmaXggICovDQorICAgICBydnZfYXJnX3R5cGVfaW5mbyAo UlZWX0JBU0Vfdm9pZCksIC8qIFJldHVybiB0eXBlICAqLw0KKyAgICAgc2Nh bGFyX3B0cl9zaXplX2FyZ3MgLyogQXJncyAqL307DQorDQorLyogQSBzdGF0 aWMgb3BlcmFuZCBpbmZvcm1hdGlvbiBmb3IgdmVjdG9yX3R5cGUgZnVuYyAo Y29uc3Qgc2NhbGFyX3R5cGUgKiwNCisgKiBpbmRleF90eXBlKSBmdW5jdGlv biByZWdpc3RyYXRpb24uICAqLw0KK3N0YXRpYyBDT05TVEVYUFIgY29uc3Qg cnZ2X29wX2luZm8gYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9pbmRleF9vcHMN CisgID0ge2FsbF9vcHMsICAgLyogVHlwZXMgICovDQorICAgICBPUF9UWVBF X3YsICAgLyogU3VmZml4ICAqLw0KKyAgICAgcnZ2X2FyZ190eXBlX2luZm8g KFJWVl9CQVNFX3ZlY3RvciksIC8qIFJldHVybiB0eXBlICAqLw0KKyAgICAg c2NhbGFyX2NvbnN0X3B0cl9pbmRleF9hcmdzIC8qIEFyZ3MgKi99Ow0KKw0K Ky8qIEEgc3RhdGljIG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZvaWQgZnVu YyAoc2NhbGFyX3R5cGUgKiwgaW5kZXhfdHlwZSwNCisgKiB2ZWN0b3JfdHlw ZSkgZnVuY3Rpb24gcmVnaXN0cmF0aW9uLiAgKi8NCitzdGF0aWMgQ09OU1RF WFBSIGNvbnN0IHJ2dl9vcF9pbmZvIGFsbF92X3NjYWxhcl9wdHJfaW5kZXhf b3BzDQorICA9IHthbGxfb3BzLCAvKiBUeXBlcyAgKi8NCisgICAgIE9QX1RZ UEVfdiwgLyogU3VmZml4ICAqLw0KKyAgICAgcnZ2X2FyZ190eXBlX2luZm8g KFJWVl9CQVNFX3ZvaWQpLCAvKiBSZXR1cm4gdHlwZSAgKi8NCisgICAgIHNj YWxhcl9wdHJfaW5kZXhfYXJncyAvKiBBcmdzICovfTsNCisNCi8qIEEgc3Rh dGljIG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZlY3Rvcl90eXBlIGZ1bmMg KHZlY3Rvcl90eXBlKS4NCiAgICBTb21lIGlucyBqdXN0IHN1cHBvcnRzIFNF Vz0zMiwgc3VjaCBhcyBjcnlwdG8gdmVjdG9sIFp2a2cgZXh0ZW5zaW9uLg0K ICAqIGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbi4gICovDQpAQCAtMjgxNiw2ICsy ODgyLDEwIEBAIHN0YXRpYyBmdW5jdGlvbl9ncm91cF9pbmZvIGZ1bmN0aW9u X2dyb3Vwc1tdID0gew0KI2RlZmluZSBERUZfUlZWX0ZVTkNUSU9OKE5BTUUs IFNIQVBFLCBQUkVEUywgT1BTX0lORk8pICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCiAgIHsjTkFNRSwgJmJhc2VzOjpOQU1FLCAmc2hhcGVzOjpTSEFQ RSwgUFJFRFMsIE9QU19JTkZPLCBSRVFVSVJFRF9FWFRFTlNJT05TfSwNCiNp bmNsdWRlICJyaXNjdi12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiIN CisjdW5kZWYgREVGX1JWVl9GVU5DVElPTg0KKyNkZWZpbmUgREVGX1JWVl9G VU5DVElPTihOQU1FLCBTSEFQRSwgUFJFRFMsIE9QU19JTkZPKSAgICAgICAg ICAgICAgICAgICAgICAgICBcDQorICB7I05BTUUsICZiYXNlczo6TkFNRSwg JnNoYXBlczo6U0hBUEUsIFBSRURTLCBPUFNfSU5GTywgUkVRVUlSRURfRVhU RU5TSU9OU30sDQorI2luY2x1ZGUgInRoZWFkLXZlY3Rvci1idWlsdGlucy1m dW5jdGlvbnMuZGVmIg0KfTsNCi8qIFRoZSBSVlYgdHlwZXMsIHdpdGggdGhl aXIgYnVpbHQtaW4NCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2LXZlY3Rvci1idWlsdGlucy5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di12ZWN0b3ItYnVpbHRpbnMuaA0KaW5kZXggNTRjODgyNGZmOTIuLjIyZmVk NjBiNGMzIDEwMDY0NA0KLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12 ZWN0b3ItYnVpbHRpbnMuaA0KKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di12ZWN0b3ItYnVpbHRpbnMuaA0KQEAgLTEyMyw2ICsxMjMsNyBAQCBlbnVt IHJlcXVpcmVkX2V4dA0KICAgWlZLTkhCX0VYVCwgIC8qIENyeXB0byB2ZWN0 b3IgWnZrbmhiIHN1Yi1leHQgKi8NCiAgIFpWS1NFRF9FWFQsICAvKiBDcnlw dG8gdmVjdG9yIFp2a3NlZCBzdWItZXh0ICovDQogICBaVktTSF9FWFQsICAg LyogQ3J5cHRvIHZlY3RvciBadmtzaCBzdWItZXh0ICovDQorICBYVEhFQURW RUNUT1JfRVhULCAgIC8qIFhUaGVhZFZlY3RvciBleHRlbnNpb24gKi8NCn07 DQovKiBFbnVtZXJhdGVzIHRoZSBSVlYgb3BlcmFuZCB0eXBlcy4gICovDQpA QCAtMjUyLDYgKzI1Myw4IEBAIHN0cnVjdCBmdW5jdGlvbl9ncm91cF9pbmZv DQogICAgICAgICByZXR1cm4gVEFSR0VUX1pWS1NFRDsNCiAgICAgICBjYXNl IFpWS1NIX0VYVDoNCiAgICAgICAgIHJldHVybiBUQVJHRVRfWlZLU0g7DQor ICAgICAgY2FzZSBYVEhFQURWRUNUT1JfRVhUOg0KKyByZXR1cm4gVEFSR0VU X1hUSEVBRFZFQ1RPUjsNCiAgICAgICBkZWZhdWx0Og0KICAgICAgICAgZ2Nj X3VucmVhY2hhYmxlICgpOw0KICAgICB9DQpkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9yaXNjdi90LXJpc2N2IGIvZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2 DQppbmRleCAzMmRlNmI4NTFjMS4uMzg0OTQzMjBkOGIgMTAwNjQ0DQotLS0g YS9nY2MvY29uZmlnL3Jpc2N2L3QtcmlzY3YNCisrKyBiL2djYy9jb25maWcv cmlzY3YvdC1yaXNjdg0KQEAgLTEsNiArMSw3IEBADQpSSVNDVl9CVUlMVElO U19IID0gJChzcmNkaXIpL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVp bHRpbnMuaCBcDQogICAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3Jpc2N2LXZl Y3Rvci1idWlsdGlucy5kZWYgXA0KICAgJChzcmNkaXIpL2NvbmZpZy9yaXNj di9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiBcDQorICAg ICAgICQoc3JjZGlyKS9jb25maWcvcmlzY3YvdGhlYWQtdmVjdG9yLWJ1aWx0 aW5zLWZ1bmN0aW9ucy5kZWYgXA0KICAgcmlzY3YtdmVjdG9yLXR5cGUtaW5k ZXhlci5nZW4uZGVmDQpyaXNjdi1idWlsdGlucy5vOiAkKHNyY2RpcikvY29u ZmlnL3Jpc2N2L3Jpc2N2LWJ1aWx0aW5zLmNjICQoQ09ORklHX0gpIFwNCmRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci1idWls dGlucy1mdW5jdGlvbnMuZGVmIGIvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12 ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZg0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi5mZDNiYTI5YmFlOQ0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3It YnVpbHRpbnMtZnVuY3Rpb25zLmRlZg0KQEAgLTAsMCArMSwzOSBAQA0KKyNp Zm5kZWYgREVGX1JWVl9GVU5DVElPTg0KKyNkZWZpbmUgREVGX1JWVl9GVU5D VElPTihOQU1FLCBTSEFQRSwgUFJFRFMsIE9QU19JTkZPKQ0KKyNlbmRpZg0K Kw0KKyNkZWZpbmUgUkVRVUlSRURfRVhURU5TSU9OUyBYVEhFQURWRUNUT1Jf RVhUDQorREVGX1JWVl9GVU5DVElPTiAodmxiLCB0aF9sb2Fkc3RvcmVfd2lk dGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfb3BzKQ0K K0RFRl9SVlZfRlVOQ1RJT04gKHZsaCwgdGhfbG9hZHN0b3JlX3dpZHRoLCBm dWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX29wcykNCitERUZf UlZWX0ZVTkNUSU9OICh2bHcsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9w cmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9vcHMpDQorREVGX1JWVl9G VU5DVElPTiAodmxidSwgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRz LCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX29wcykNCitERUZfUlZWX0ZVTkNU SU9OICh2bGh1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFs bF92X3NjYWxhcl9jb25zdF9wdHJfb3BzKQ0KK0RFRl9SVlZfRlVOQ1RJT04g KHZsd3UsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zf c2NhbGFyX2NvbnN0X3B0cl9vcHMpDQorREVGX1JWVl9GVU5DVElPTiAodnNi LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2Nh bGFyX3B0cl9vcHMpDQorREVGX1JWVl9GVU5DVElPTiAodnNoLCB0aF9sb2Fk c3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9v cHMpDQorREVGX1JWVl9GVU5DVElPTiAodnN3LCB0aF9sb2Fkc3RvcmVfd2lk dGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9vcHMpDQorREVG X1JWVl9GVU5DVElPTiAodmxzYiwgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxs X3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVfb3BzKQ0KK0RF Rl9SVlZfRlVOQ1RJT04gKHZsc2gsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVs bF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9zaXplX29wcykNCitE RUZfUlZWX0ZVTkNUSU9OICh2bHN3LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1 bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfc2l6ZV9vcHMpDQor REVGX1JWVl9GVU5DVElPTiAodmxzYnUsIHRoX2xvYWRzdG9yZV93aWR0aCwg ZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9zaXplX29wcykN CitERUZfUlZWX0ZVTkNUSU9OICh2bHNodSwgdGhfbG9hZHN0b3JlX3dpZHRo LCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVfb3Bz KQ0KK0RFRl9SVlZfRlVOQ1RJT04gKHZsc3d1LCB0aF9sb2Fkc3RvcmVfd2lk dGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfc2l6ZV9v cHMpDQorREVGX1JWVl9GVU5DVElPTiAodnNzYiwgdGhfbG9hZHN0b3JlX3dp ZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMp DQorREVGX1JWVl9GVU5DVElPTiAodnNzaCwgdGhfbG9hZHN0b3JlX3dpZHRo LCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMpDQor REVGX1JWVl9GVU5DVElPTiAodnNzdywgdGhfbG9hZHN0b3JlX3dpZHRoLCBu b25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMpDQorREVG X1JWVl9GVU5DVElPTiAodmx4YiwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lk dGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhf b3BzKQ0KK0RFRl9SVlZfRlVOQ1RJT04gKHZseGgsIHRoX2luZGV4ZWRfbG9h ZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3Rf cHRyX2luZGV4X29wcykNCitERUZfUlZWX0ZVTkNUSU9OICh2bHh3LCB0aF9p bmRleGVkX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2Nh bGFyX2NvbnN0X3B0cl9pbmRleF9vcHMpDQorREVGX1JWVl9GVU5DVElPTiAo dmx4YnUsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRz LCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX2luZGV4X29wcykNCitERUZfUlZW X0ZVTkNUSU9OICh2bHhodSwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgs IGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhfb3Bz KQ0KK0RFRl9SVlZfRlVOQ1RJT04gKHZseHd1LCB0aF9pbmRleGVkX2xvYWRz dG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0 cl9pbmRleF9vcHMpDQorREVGX1JWVl9GVU5DVElPTiAodnN4YiwgdGhfaW5k ZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2Nh bGFyX3B0cl9pbmRleF9vcHMpDQorREVGX1JWVl9GVU5DVElPTiAodnN4aCwg dGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxs X3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMpDQorREVGX1JWVl9GVU5DVElPTiAo dnN4dywgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVk cywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMpDQorREVGX1JWVl9GVU5D VElPTiAodnN1eGIsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25l X21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfaW5kZXhfb3BzKQ0KK0RFRl9S VlZfRlVOQ1RJT04gKHZzdXhoLCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0 aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRyX2luZGV4X29wcykN CitERUZfUlZWX0ZVTkNUSU9OICh2c3V4dywgdGhfaW5kZXhlZF9sb2Fkc3Rv cmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRl eF9vcHMpDQorREVGX1JWVl9GVU5DVElPTiAodmV4dF94X3YsIHRoX2V4dHJh Y3QsIG5vbmVfcHJlZHMsIGl1X3hfc191X29wcykNCisjdW5kZWYgUkVRVUlS RURfRVhURU5TSU9OUw0KKw0KKyN1bmRlZiBERUZfUlZWX0ZVTkNUSU9ODQpk aWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQg Yi9nY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci5tZA0KaW5kZXggNjk2 YjgxNTI1MmQuLjVmZTliYTA4YzRlIDEwMDY0NA0KLS0tIGEvZ2NjL2NvbmZp Zy9yaXNjdi90aGVhZC12ZWN0b3IubWQNCisrKyBiL2djYy9jb25maWcvcmlz Y3YvdGhlYWQtdmVjdG9yLm1kDQpAQCAtMSw3ICsxLDk1IEBADQooZGVmaW5l X2NfZW51bSAidW5zcGVjIiBbDQorICBVTlNQRUNfVEhfVkxCDQorICBVTlNQ RUNfVEhfVkxCVQ0KKyAgVU5TUEVDX1RIX1ZMSA0KKyAgVU5TUEVDX1RIX1ZM SFUNCisgIFVOU1BFQ19USF9WTFcNCisgIFVOU1BFQ19USF9WTFdVDQorDQor ICBVTlNQRUNfVEhfVkxTQg0KKyAgVU5TUEVDX1RIX1ZMU0JVDQorICBVTlNQ RUNfVEhfVkxTSA0KKyAgVU5TUEVDX1RIX1ZMU0hVDQorICBVTlNQRUNfVEhf VkxTVw0KKyAgVU5TUEVDX1RIX1ZMU1dVDQorDQorICBVTlNQRUNfVEhfVkxY Qg0KKyAgVU5TUEVDX1RIX1ZMWEJVDQorICBVTlNQRUNfVEhfVkxYSA0KKyAg VU5TUEVDX1RIX1ZMWEhVDQorICBVTlNQRUNfVEhfVkxYVw0KKyAgVU5TUEVD X1RIX1ZMWFdVDQorDQorICBVTlNQRUNfVEhfVlNVWEINCisgIFVOU1BFQ19U SF9WU1VYSA0KKyAgVU5TUEVDX1RIX1ZTVVhXDQorDQogICBVTlNQRUNfVEhf VldMRFNUDQpdKQ0KKyhkZWZpbmVfaW50X2l0ZXJhdG9yIFVOU1BFQ19USF9W TE1FTV9PUCBbDQorICBVTlNQRUNfVEhfVkxCIFVOU1BFQ19USF9WTEJVDQor ICBVTlNQRUNfVEhfVkxIIFVOU1BFQ19USF9WTEhVDQorICBVTlNQRUNfVEhf VkxXIFVOU1BFQ19USF9WTFdVDQorXSkNCisNCisoZGVmaW5lX2ludF9pdGVy YXRvciBVTlNQRUNfVEhfVkxTTUVNX09QIFsNCisgIFVOU1BFQ19USF9WTFNC IFVOU1BFQ19USF9WTFNCVQ0KKyAgVU5TUEVDX1RIX1ZMU0ggVU5TUEVDX1RI X1ZMU0hVDQorICBVTlNQRUNfVEhfVkxTVyBVTlNQRUNfVEhfVkxTV1UNCitd KQ0KKw0KKyhkZWZpbmVfaW50X2l0ZXJhdG9yIFVOU1BFQ19USF9WTFhNRU1f T1AgWw0KKyAgVU5TUEVDX1RIX1ZMWEIgVU5TUEVDX1RIX1ZMWEJVDQorICBV TlNQRUNfVEhfVkxYSCBVTlNQRUNfVEhfVkxYSFUNCisgIFVOU1BFQ19USF9W TFhXIFVOU1BFQ19USF9WTFhXVQ0KK10pDQorDQorKGRlZmluZV9pbnRfYXR0 ciB2bG1lbV9vcF9hdHRyIFsNCisgIChVTlNQRUNfVEhfVkxCICJiIikgKFVO U1BFQ19USF9WTEJVICJidSIpDQorICAoVU5TUEVDX1RIX1ZMSCAiaCIpIChV TlNQRUNfVEhfVkxIVSAiaHUiKQ0KKyAgKFVOU1BFQ19USF9WTFcgInciKSAo VU5TUEVDX1RIX1ZMV1UgInd1IikNCisgIChVTlNQRUNfVEhfVkxTQiAiYiIp IChVTlNQRUNfVEhfVkxTQlUgImJ1IikNCisgIChVTlNQRUNfVEhfVkxTSCAi aCIpIChVTlNQRUNfVEhfVkxTSFUgImh1IikNCisgIChVTlNQRUNfVEhfVkxT VyAidyIpIChVTlNQRUNfVEhfVkxTV1UgInd1IikNCisgIChVTlNQRUNfVEhf VkxYQiAiYiIpIChVTlNQRUNfVEhfVkxYQlUgImJ1IikNCisgIChVTlNQRUNf VEhfVkxYSCAiaCIpIChVTlNQRUNfVEhfVkxYSFUgImh1IikNCisgIChVTlNQ RUNfVEhfVkxYVyAidyIpIChVTlNQRUNfVEhfVkxYV1UgInd1IikNCisgIChV TlNQRUNfVEhfVlNVWEIgImIiKQ0KKyAgKFVOU1BFQ19USF9WU1VYSCAiaCIp DQorICAoVU5TUEVDX1RIX1ZTVVhXICJ3IikNCitdKQ0KKw0KKyhkZWZpbmVf aW50X2F0dHIgdmxtZW1fb3JkZXJfYXR0ciBbDQorICAoVU5TUEVDX1RIX1ZM WEIgIiIpDQorICAoVU5TUEVDX1RIX1ZMWEggIiIpDQorICAoVU5TUEVDX1RI X1ZMWFcgIiIpDQorICAoVU5TUEVDX1RIX1ZTVVhCICJ1IikNCisgIChVTlNQ RUNfVEhfVlNVWEggInUiKQ0KKyAgKFVOU1BFQ19USF9WU1VYVyAidSIpDQor XSkNCisNCisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhfVlNNRU1f T1AgWw0KKyAgVU5TUEVDX1RIX1ZMQg0KKyAgVU5TUEVDX1RIX1ZMSA0KKyAg VU5TUEVDX1RIX1ZMVw0KK10pDQorDQorKGRlZmluZV9pbnRfaXRlcmF0b3Ig VU5TUEVDX1RIX1ZTU01FTV9PUCBbDQorICBVTlNQRUNfVEhfVkxTQg0KKyAg VU5TUEVDX1RIX1ZMU0gNCisgIFVOU1BFQ19USF9WTFNXDQorXSkNCisNCiso ZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhfVlNYTUVNX09QIFsNCisg IFVOU1BFQ19USF9WTFhCDQorICBVTlNQRUNfVEhfVkxYSA0KKyAgVU5TUEVD X1RIX1ZMWFcNCisgIFVOU1BFQ19USF9WU1VYQg0KKyAgVU5TUEVDX1RIX1ZT VVhIDQorICBVTlNQRUNfVEhfVlNVWFcNCitdKQ0KKw0KKGRlZmluZV9tb2Rl X2l0ZXJhdG9yIFZfVkxTX1ZUIFtWIFZMUyBWVF0pDQooZGVmaW5lX21vZGVf aXRlcmF0b3IgVl9WQl9WTFNfVlQgW1YgVkIgVkxTIFZUXSkNCkBAIC0xMDAs MyArMTg4LDE2NSBAQA0KICAgfQ0KICAgWyhzZXRfYXR0ciAidHlwZSIgInZs ZG0sdnN0bSx2bWFsdSx2bWFsdSx2bWFsdSIpDQogICAgKHNldF9hdHRyICJt b2RlIiAiPE1PREU+IildKQ0KKw0KKyhkZWZpbmVfZXhwYW5kICJAcHJlZF9t b3Zfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iDQorICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWX1ZMUyAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIpDQor ICAgIChpZl90aGVuX2Vsc2U6Vl9WTFMNCisgICAgICAodW5zcGVjOjxWTT4N CisgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tfb3BlcmFu ZCIpDQorIChtYXRjaF9vcGVyYW5kIDQgInZlY3Rvcl9sZW5ndGhfb3BlcmFu ZCIpDQorIChtYXRjaF9vcGVyYW5kIDUgImNvbnN0X2ludF9vcGVyYW5kIikN CisgKG1hdGNoX29wZXJhbmQgNiAiY29uc3RfaW50X29wZXJhbmQiKQ0KKyAo bWF0Y2hfb3BlcmFuZCA3ICJjb25zdF9pbnRfb3BlcmFuZCIpDQorIChyZWc6 U0kgVkxfUkVHTlVNKQ0KKyAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BF Q19USF9WTE1FTV9PUCkNCisgICAgICAobWF0Y2hfb3BlcmFuZDpWX1ZMUyAz ICJ2ZWN0b3JfbW92ZV9vcGVyYW5kIikNCisgICAgICAobWF0Y2hfb3BlcmFu ZDpWX1ZMUyAyICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCIpKSldDQorICAiVEFS R0VUX1hUSEVBRFZFQ1RPUiINCisgIHt9KQ0KKw0KKyhkZWZpbmVfaW5zbl9h bmRfc3BsaXQgIipwcmVkX21vdl93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2Rl PiINCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZfVkxTIDAgIm5vbmltbWVk aWF0ZV9vcGVyYW5kIiAgICAgIj12ciwgICAgdnIsICAgIHZkLCAgICAgbSwg ICAgdnIsICAgIHZyIikNCisgICAgKGlmX3RoZW5fZWxzZTpWX1ZMUw0KKyAg ICAgICh1bnNwZWM6PFZNPg0KKyBbKG1hdGNoX29wZXJhbmQ6PFZNPiAxICJ2 ZWN0b3JfbWFza19vcGVyYW5kIiAgICAidm1XYzEsICAgV2MxLCAgICB2bSwg dm1XYzEsICAgV2MxLCAgIFdjMSIpDQorIChtYXRjaF9vcGVyYW5kIDQgInZl Y3Rvcl9sZW5ndGhfb3BlcmFuZCIgICAgICAgIiAgIHJLLCAgICBySywgICAg ckssICAgIHJLLCAgICBySywgICAgcksiKQ0KKyAobWF0Y2hfb3BlcmFuZCA1 ICJjb25zdF9pbnRfb3BlcmFuZCIgICAiICAgIGksICAgICBpLCAgICAgaSwg ICAgIGksICAgICBpLCAgICAgaSIpDQorIChtYXRjaF9vcGVyYW5kIDYgImNv bnN0X2ludF9vcGVyYW5kIiAgICIgICAgaSwgICAgIGksICAgICBpLCAgICAg aSwgICAgIGksICAgICBpIikNCisgKG1hdGNoX29wZXJhbmQgNyAiY29uc3Rf aW50X29wZXJhbmQiICAgIiAgICBpLCAgICAgaSwgICAgIGksICAgICBpLCAg ICAgaSwgICAgIGkiKQ0KKyAocmVnOlNJIFZMX1JFR05VTSkNCisgKHJlZzpT SSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVkxNRU1fT1ApDQorICAgICAg KG1hdGNoX29wZXJhbmQ6Vl9WTFMgMyAicmVnX29yX21lbV9vcGVyYW5kIiAg ICAgICAiICAgIG0sICAgICBtLCAgICAgbSwgICAgdnIsICAgIHZyLCAgICB2 ciIpDQorICAgICAgKG1hdGNoX29wZXJhbmQ6Vl9WTFMgMiAidmVjdG9yX21l cmdlX29wZXJhbmQiICAgICAiICAgIDAsICAgIHZ1LCAgICB2dSwgICAgdnUs ICAgIHZ1LCAgICAgMCIpKSldDQorICAiKFRBUkdFVF9YVEhFQURWRUNUT1IN CisgICAgJiYgKHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzBdLCA8TU9E RT5tb2RlKQ0KKyB8fCByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1szXSwg PE1PREU+bW9kZSkpKSINCisgICJADQorICAgdmw8dmxtZW1fb3BfYXR0cj4u dlx0JTAsJTMlcDENCisgICB2bDx2bG1lbV9vcF9hdHRyPi52XHQlMCwlMw0K KyAgIHZsPHZsbWVtX29wX2F0dHI+LnZcdCUwLCUzLCUxLnQNCisgICB2czx2 bG1lbV9vcF9hdHRyPi52XHQlMywlMCVwMQ0KKyAgIHZtdi52LnZcdCUwLCUz DQorICAgdm12LnYudlx0JTAsJTMiDQorICAiJiYgcmlzY3ZfdmVjdG9yOjp3 aG9sZV9yZWdfdG9fcmVnX21vdmVfcCAob3BlcmFuZHMsIDxNT0RFPm1vZGUs IDcpIg0KKyAgWyhzZXQgKG1hdGNoX2R1cCAwKSAobWF0Y2hfZHVwIDMpKV0N CisgICIiDQorICBbKHNldF9hdHRyICJ0eXBlIiAidmxkZSx2bGRlLHZsZGUs dnN0ZSx2aW1vdix2aW1vdiIpDQorICAgKHNldF9hdHRyICJtb2RlIiAiPE1P REU+IildKQ0KKw0KKyhkZWZpbmVfaW5zbiAiQHByZWRfc3RvcmVfd2lkdGg8 dmxtZW1fb3BfYXR0cj48bW9kZT4iDQorICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpWSSAwICJtZW1vcnlfb3BlcmFuZCIgIittIikNCisgKGlmX3RoZW5fZWxz ZTpWSQ0KKyAgICh1bnNwZWM6PFZNPg0KKyAgICAgWyhtYXRjaF9vcGVyYW5k OjxWTT4gMSAidmVjdG9yX21hc2tfb3BlcmFuZCIgInZtV2MxIikNCisgICAg ICAobWF0Y2hfb3BlcmFuZCAzICJ2ZWN0b3JfbGVuZ3RoX29wZXJhbmQiICAg ICIgICBySyIpDQorICAgICAgKG1hdGNoX29wZXJhbmQgNCAiY29uc3RfaW50 X29wZXJhbmQiICIgICAgaSIpDQorICAgICAgKHJlZzpTSSBWTF9SRUdOVU0p DQorICAgICAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVlNN RU1fT1ApDQorICAgKG1hdGNoX29wZXJhbmQ6VkkgMiAicmVnaXN0ZXJfb3Bl cmFuZCIgIiAgICB2ciIpDQorICAgKG1hdGNoX2R1cCAwKSkpXQ0KKyAgIlRB UkdFVF9YVEhFQURWRUNUT1IiDQorICAidnM8dmxtZW1fb3BfYXR0cj4udlx0 JTIsJTAlcDEiDQorICBbKHNldF9hdHRyICJ0eXBlIiAidnN0ZSIpDQorICAg KHNldF9hdHRyICJtb2RlIiAiPE1PREU+IikNCisgICAoc2V0IChhdHRyICJh dmxfdHlwZV9pZHgiKSAoY29uc3RfaW50IDQpKQ0KKyAgIChzZXRfYXR0ciAi dmxfb3BfaWR4IiAiMyIpXSkNCisNCisoZGVmaW5lX2luc24gIkBwcmVkX3N0 cmlkZWRfbG9hZF93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiINCisgIFso c2V0IChtYXRjaF9vcGVyYW5kOlZJIDAgInJlZ2lzdGVyX29wZXJhbmQiICAg ICAgICI9dnIsICAgIHZyLCAgICB2ZCIpDQorIChpZl90aGVuX2Vsc2U6VkkN CisgICAodW5zcGVjOjxWTT4NCisgICAgIFsobWF0Y2hfb3BlcmFuZDo8Vk0+ IDEgInZlY3Rvcl9tYXNrX29wZXJhbmQiICJ2bVdjMSwgICBXYzEsICAgIHZt IikNCisgICAgICAobWF0Y2hfb3BlcmFuZCA1ICJ2ZWN0b3JfbGVuZ3RoX29w ZXJhbmQiICAgICIgICBySywgICAgckssICAgIHJLIikNCisgICAgICAobWF0 Y2hfb3BlcmFuZCA2ICJjb25zdF9pbnRfb3BlcmFuZCIgIiAgICBpLCAgICAg aSwgICAgIGkiKQ0KKyAgICAgIChtYXRjaF9vcGVyYW5kIDcgImNvbnN0X2lu dF9vcGVyYW5kIiAiICAgIGksICAgICBpLCAgICAgaSIpDQorICAgICAgKG1h dGNoX29wZXJhbmQgOCAiY29uc3RfaW50X29wZXJhbmQiICIgICAgaSwgICAg IGksICAgICBpIikNCisgICAgICAocmVnOlNJIFZMX1JFR05VTSkNCisgICAg ICAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WTFNNRU1fT1Ap DQorICAgKHVuc3BlYzpWSQ0KKyAgICAgWyhtYXRjaF9vcGVyYW5kOlZJIDMg Im1lbW9yeV9vcGVyYW5kIiAiICAgIG0sICAgICBtLCAgICAgbSIpDQorICAg ICAgKG1hdGNoX29wZXJhbmQgNCAicG1vZGVfcmVnX29yXzBfb3BlcmFuZCIg ICAiICAgckosICAgIHJKLCAgICBySiIpXSBVTlNQRUNfVEhfVkxTTUVNX09Q KQ0KKyAgIChtYXRjaF9vcGVyYW5kOlZJIDIgInZlY3Rvcl9tZXJnZV9vcGVy YW5kIiAgICAgICIgICAgMCwgICAgdnUsICAgIHZ1IikpKV0NCisgICJUQVJH RVRfWFRIRUFEVkVDVE9SIg0KKyAgInZsczx2bG1lbV9vcF9hdHRyPi52XHQl MCwlMywlejQlcDEiDQorICBbKHNldF9hdHRyICJ0eXBlIiAidmxkcyIpDQor ICAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQ0KKw0KKyhkZWZpbmVf aW5zbiAiQHByZWRfc3RyaWRlZF9zdG9yZV93aWR0aDx2bG1lbV9vcF9hdHRy Pjxtb2RlPiINCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZJIDAgIm1lbW9y eV9vcGVyYW5kIiAiK20iKQ0KKyAoaWZfdGhlbl9lbHNlOlZJDQorICAgKHVu c3BlYzo8Vk0+DQorICAgICBbKG1hdGNoX29wZXJhbmQ6PFZNPiAxICJ2ZWN0 b3JfbWFza19vcGVyYW5kIiAidm1XYzEiKQ0KKyAgICAgIChtYXRjaF9vcGVy YW5kIDQgInZlY3Rvcl9sZW5ndGhfb3BlcmFuZCIgICAgIiAgIHJLIikNCisg ICAgICAobWF0Y2hfb3BlcmFuZCA1ICJjb25zdF9pbnRfb3BlcmFuZCIgIiAg ICBpIikNCisgICAgICAocmVnOlNJIFZMX1JFR05VTSkNCisgICAgICAocmVn OlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WU1NNRU1fT1ApDQorICAg KHVuc3BlYzpWSQ0KKyAgICAgWyhtYXRjaF9vcGVyYW5kIDIgInBtb2RlX3Jl Z19vcl8wX29wZXJhbmQiICAgIiAgIHJKIikNCisgICAgICAobWF0Y2hfb3Bl cmFuZDpWSSAzICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAiICAgdnIiKV0g VU5TUEVDX1RIX1ZTU01FTV9PUCkNCisgICAobWF0Y2hfZHVwIDApKSldDQor ICAiVEFSR0VUX1hUSEVBRFZFQ1RPUiINCisgICJ2c3M8dmxtZW1fb3BfYXR0 cj4udlx0JTMsJTAsJXoyJXAxIg0KKyAgWyhzZXRfYXR0ciAidHlwZSIgInZz dHMiKQ0KKyAgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpDQorICAgKHNl dCAoYXR0ciAiYXZsX3R5cGVfaWR4IikgKGNvbnN0X2ludCA1KSldKQ0KKw0K KyhkZWZpbmVfaW5zbiAiQHByZWRfaW5kZXhlZF9sb2FkX3dpZHRoPHZsbWVt X29wX2F0dHI+PG1vZGU+Ig0KKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vkkg MCAicmVnaXN0ZXJfb3BlcmFuZCIgICAgICAiPXZkLCB2cix2ZCwgdnIiKQ0K KyAoaWZfdGhlbl9lbHNlOlZJDQorICAgKHVuc3BlYzo8Vk0+DQorICAgICBb KG1hdGNoX29wZXJhbmQ6PFZNPiAxICJ2ZWN0b3JfbWFza19vcGVyYW5kIiAg IiB2bSxXYzEsdm0sV2MxIikNCisgICAgICAobWF0Y2hfb3BlcmFuZCA1ICJ2 ZWN0b3JfbGVuZ3RoX29wZXJhbmQiICAgICAiIHJLLCBySyxySywgcksiKQ0K KyAgICAgIChtYXRjaF9vcGVyYW5kIDYgImNvbnN0X2ludF9vcGVyYW5kIiAi ICBpLCAgaSwgaSwgIGkiKQ0KKyAgICAgIChtYXRjaF9vcGVyYW5kIDcgImNv bnN0X2ludF9vcGVyYW5kIiAiICBpLCAgaSwgaSwgIGkiKQ0KKyAgICAgICht YXRjaF9vcGVyYW5kIDggImNvbnN0X2ludF9vcGVyYW5kIiAiICBpLCAgaSwg aSwgIGkiKQ0KKyAgICAgIChyZWc6U0kgVkxfUkVHTlVNKQ0KKyAgICAgIChy ZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZMWE1FTV9PUCkNCisg ICAodW5zcGVjOlZJDQorICAgICBbKG1hdGNoX29wZXJhbmQgMyAicG1vZGVf cmVnX29yXzBfb3BlcmFuZCIgICAgIiBySiwgckosckosIHJKIikNCisgICAg ICAobWVtOkJMSyAoc2NyYXRjaCkpDQorICAgICAgKG1hdGNoX29wZXJhbmQ6 VkkgNCAicmVnaXN0ZXJfb3BlcmFuZCIgIiB2ciwgdnIsdnIsIHZyIildIFVO U1BFQ19USF9WTFhNRU1fT1ApDQorICAgKG1hdGNoX29wZXJhbmQ6VkkgMiAi dmVjdG9yX21lcmdlX29wZXJhbmQiICAgICAgICIgdnUsIHZ1LCAwLCAgMCIp KSldDQorICAiVEFSR0VUX1hUSEVBRFZFQ1RPUiINCisgICJ2bHg8dmxtZW1f b3BfYXR0cj4udlx0JTAsKCV6MyksJTQlcDEiDQorICBbKHNldF9hdHRyICJ0 eXBlIiAidmxkdXgiKQ0KKyAgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIp XSkNCisNCisoZGVmaW5lX2luc24gIkBwcmVkX2luZGV4ZWRfPHZsbWVtX29y ZGVyX2F0dHI+c3RvcmVfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iDQor ICBbKHNldCAobWVtOkJMSyAoc2NyYXRjaCkpDQorICh1bnNwZWM6QkxLDQor ICAgWyh1bnNwZWM6PFZNPg0KKyAgICAgWyhtYXRjaF9vcGVyYW5kOjxWTT4g MCAidmVjdG9yX21hc2tfb3BlcmFuZCIgInZtV2MxIikNCisgICAgICAobWF0 Y2hfb3BlcmFuZCA0ICJ2ZWN0b3JfbGVuZ3RoX29wZXJhbmQiICAgICIgICBy SyIpDQorICAgICAgKG1hdGNoX29wZXJhbmQgNSAiY29uc3RfaW50X29wZXJh bmQiICIgICAgaSIpDQorICAgICAgKHJlZzpTSSBWTF9SRUdOVU0pDQorICAg ICAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVlNYTUVNX09Q KQ0KKyAgICAobWF0Y2hfb3BlcmFuZCAxICJwbW9kZV9yZWdfb3JfMF9vcGVy YW5kIiAgICAgICIgIHJKIikNCisgICAgKG1hdGNoX29wZXJhbmQ6VkkgMiAi cmVnaXN0ZXJfb3BlcmFuZCIgIiAgdnIiKQ0KKyAgICAobWF0Y2hfb3BlcmFu ZDpWSSAzICJyZWdpc3Rlcl9vcGVyYW5kIiAgIiAgdnIiKV0gVU5TUEVDX1RI X1ZTWE1FTV9PUCkpXQ0KKyAgIlRBUkdFVF9YVEhFQURWRUNUT1IiDQorICAi dnM8dmxtZW1fb3JkZXJfYXR0cj54PHZsbWVtX29wX2F0dHI+LnZcdCUzLCgl ejEpLCUyJXAwIg0KKyAgWyhzZXRfYXR0ciAidHlwZSIgInZzdHV4IikNCisg ICAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pDQorDQorKGRlZmluZV9l eHBhbmQgIkBwcmVkX3RoX2V4dHJhY3Q8bW9kZT4iDQorICBbKHNldCAobWF0 Y2hfb3BlcmFuZDo8VkVMPiAwICJyZWdpc3Rlcl9vcGVyYW5kIikNCisgKHVu c3BlYzo8VkVMPg0KKyAgIFsodmVjX3NlbGVjdDo8VkVMPg0KKyAgICAgICht YXRjaF9vcGVyYW5kOlZfVkxTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIikNCisg ICAgICAocGFyYWxsZWwgWyhtYXRjaF9vcGVyYW5kOkRJIDIgInJlZ2lzdGVy X29wZXJhbmQiICJyIildKSkNCisgICAgKHJlZzpTSSBWVFlQRV9SRUdOVU0p XSBVTlNQRUNfVlBSRURJQ0FURSkpXQ0KKyAgIlRBUkdFVF9YVEhFQURWRUNU T1IiDQore30pDQorDQorKGRlZmluZV9pbnNuICIqcHJlZF90aF9leHRyYWN0 PG1vZGU+Ig0KKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZFTD4gMCAicmVn aXN0ZXJfb3BlcmFuZCIgICAiPXIiKQ0KKyAgKHVuc3BlYzo8VkVMPg0KKyAg ICBbKHZlY19zZWxlY3Q6PFZFTD4NCisgICAgICAgKG1hdGNoX29wZXJhbmQ6 Vl9WTFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2ciIpDQorICAgICAgIChw YXJhbGxlbCBbKG1hdGNoX29wZXJhbmQ6REkgMiAicmVnaXN0ZXJfb3BlcmFu ZCIgInIiKV0pKQ0KKyAgICAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQ RUNfVlBSRURJQ0FURSkpXQ0KKyAgIlRBUkdFVF9YVEhFQURWRUNUT1IiDQor ICAidmV4dC54LnZcdCUwLCUxLCUyIg0KKyAgWyhzZXRfYXR0ciAidHlwZSIg InZpbW92dngiKQ0KKyAgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpXSkN CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L3h0aGVhZHZlY3Rvci92bGItdnNiLmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGItdnNiLmMNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uM2MxMmMx MjQ1OTcNCi0tLSAvZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYi12c2IuYw0KQEAg LTAsMCArMSw2OCBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQorLyog eyBkZy1vcHRpb25zICItbWFyY2g9cnYzMmdjeHRoZWFkdmVjdG9yIC1tYWJp PWlscDMyZCAtTzMiIH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVu Y3Rpb24tYm9kaWVzICIqKiIgIiIgfSB9ICovDQorI2luY2x1ZGUgInJpc2N2 X3RoX3ZlY3Rvci5oIg0KKw0KKy8qDQorKiogZjE6DQorKiogdGgudnNldGl2 bGlcdHplcm8sNCxlMzIsbTEsdHUsbWENCisqKiB0aC52bGJcLnZcdHZbMC05 XSssMFwoW2EteDAtOV0rXCkNCisqKiB0aC52bGJcLnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCkNCisqKiB0aC52YWRkXC52dlx0dlswLTldKyxccyp2WzAt OV0rLFxzKnZbMC05XSsNCisqKiB0aC52YWRkXC52dlx0dlswLTldKyxccyp2 WzAtOV0rLFxzKnZbMC05XSsNCisqKiB0aC52c2JcLnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCkNCisqKiByZXQNCisqLw0KK3ZvaWQgZjEgKHZvaWQgKiBp biwgdm9pZCAqb3V0KQ0KK3sNCisgICAgdmludDMybTFfdCB2ID0gX19yaXNj dl90aF92bGJfdl9pMzJtMSAoaW4sIDQpOw0KKyAgICB2aW50MzJtMV90IHYy ID0gX19yaXNjdl90aF92bGJfdl9pMzJtMV90dSAodiwgaW4sIDQpOw0KKyAg ICB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z2X2kzMm0xICh2Miwg djIsIDQpOw0KKyAgICB2aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z2 X2kzMm0xX3R1ICh2MywgdjIsIHYyLCA0KTsNCisgICAgX19yaXNjdl90aF92 c2Jfdl9pMzJtMSAob3V0LCB2NCwgNCk7DQorfQ0KKw0KKy8qDQorKiogZjI6 DQorKiogdGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1h DQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisqKiB0 aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0YSxtYQ0KKyoqIHRoLnZsYi52 XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQNCisqKiB0aC52YWRkXC52 dlx0dlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSsNCisqKiB0aC52YWRk XC52dlx0dlsxLTldWzAtOV0/LFxzKnZbMC05XSssXHMqdlswLTldKyxccyp2 MC50DQorKiogdGgudnNiLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisq KiByZXQNCisqLw0KK3ZvaWQgZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0KQ0K K3sNCisgICAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47DQor ICAgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7DQorICAgIHZpbnQz Mm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxiX3ZfaTMybTEgKGluLCA0KTsNCisg ICAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxiX3ZfaTMybTFfbSAo bWFzaywgaW4sIDQpOw0KKyAgICB2aW50MzJtMV90IHYzID0gX19yaXNjdl92 YWRkX3Z2X2kzMm0xICh2MiwgdjIsIDQpOw0KKyAgICB2aW50MzJtMV90IHY0 ID0gX19yaXNjdl92YWRkX3Z2X2kzMm0xX20gKG1hc2ssIHYzLCB2MywgNCk7 DQorICAgIF9fcmlzY3ZfdGhfdnNiX3ZfaTMybTEgKG91dCwgdjQsIDQpOw0K K30NCisNCisvKg0KKyoqIGYzOg0KKyoqIHRoLnZzZXR2bGlcdFthLXgwLTld Kyx6ZXJvLGU4LG1mNCx0YSxtYQ0KKyoqIHRoLnZsbS52XHR2WzAtOV0rLDBc KFthLXgwLTldK1wpDQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEs dHUsbXUNCisqKiB0aC52bGJcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkN CisqKiB0aC52bGIudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50DQor KiogdGgudmFkZFwudnZcdHZbMC05XSssXHMqdlswLTldKyxccyp2WzAtOV0r DQorKiogdGgudmFkZFwudnZcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxz KnZbMC05XSssXHMqdjAudA0KKyoqIHRoLnZzYi52XHR2WzAtOV0rLDBcKFth LXgwLTldK1wpDQorKiogcmV0DQorKi8NCit2b2lkIGYzICh2b2lkICogaW4s IHZvaWQgKm91dCkNCit7DQorICAgIHZib29sMzJfdCBtYXNrID0gKih2Ym9v bDMyX3QqKWluOw0KKyAgICBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIp Ow0KKyAgICB2aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsYl92X2kzMm0x IChpbiwgNCk7DQorICAgIHZpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3Zs Yl92X2kzMm0xX3R1bXUgKG1hc2ssIHYsIGluLCA0KTsNCisgICAgdmludDMy bTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92dl9pMzJtMSAodjIsIHYyLCA0KTsN CisgICAgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92dl9pMzJtMV90 dW11IChtYXNrLCB2MywgdjIsIHYyLCA0KTsNCisgICAgX19yaXNjdl90aF92 c2Jfdl9pMzJtMSAob3V0LCB2NCwgNCk7DQorfQ0KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9y L3ZsYnUtdnNiLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L3h0aGVhZHZlY3Rvci92bGJ1LXZzYi5jDQpuZXcgZmlsZSBtb2RlIDEw MDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjMwYmVmMzY5Mzc1DQotLS0gL2Rl di9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L3h0aGVhZHZlY3Rvci92bGJ1LXZzYi5jDQpAQCAtMCwwICsxLDY4IEBA DQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMg Ii1tYXJjaD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIg fSAqLw0KKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMg IioqIiAiIiB9IH0gKi8NCisjaW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgi DQorDQorLyoNCisqKiBmMToNCisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUz MixtMSx0dSxtYQ0KKyoqIHRoLnZsYnVcLnZcdHZbMC05XSssMFwoW2EteDAt OV0rXCkNCisqKiB0aC52bGJ1XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wp DQorKiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYN CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNg0K KyoqIHRoLnZzYlwudlx0dlswLTldKywwXChbYS14MC05XStcKQ0KKyoqIHJl dA0KKyovDQordm9pZCBmMSAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQz Ml90IHgpDQorew0KKyAgICB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92 bGJ1X3ZfdTMybTEgKGluLCA0KTsNCisgICAgdnVpbnQzMm0xX3QgdjIgPSBf X3Jpc2N2X3RoX3ZsYnVfdl91MzJtMV90dSAodiwgaW4sIDQpOw0KKyAgICB2 dWludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMSAodjIsIC0x NiwgNCk7DQorICAgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4 X3UzMm0xX3R1ICh2MywgdjIsIC0xNiwgNCk7DQorICAgIF9fcmlzY3ZfdGhf dnNiX3ZfdTMybTEgKG91dCwgdjQsIDQpOw0KK30NCisNCisvKg0KKyoqIGYy Og0KKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxt YQ0KKyoqIHRoLnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpDQorKiog dGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWENCisqKiB0aC52bGJ1 LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAudA0KKyoqIHRoLnZhZGRc LnZpXHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2DQorKiogdGgudmFkZFwu dmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50DQor KiogdGgudnNiLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisqKiByZXQN CisqLw0KK3ZvaWQgZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJf dCB4KQ0KK3sNCisgICAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCop aW47DQorICAgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7DQorICAg IHZ1aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsYnVfdl91MzJtMSAoaW4s IDQpOw0KKyAgICB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxidV92 X3UzMm0xX20gKG1hc2ssIGluLCA0KTsNCisgICAgdnVpbnQzMm0xX3QgdjMg PSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOw0KKyAgICB2 dWludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMV9tIChtYXNr LCB2MywgLTE2LCA0KTsNCisgICAgX19yaXNjdl90aF92c2Jfdl91MzJtMSAo b3V0LCB2NCwgNCk7DQorfQ0KKw0KKy8qDQorKiogZjM6DQorKiogdGgudnNl dHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hDQorKiogdGgudmxt LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisqKiB0aC52c2V0aXZsaVx0 emVybyw0LGUzMixtMSx0dSxtdQ0KKyoqIHRoLnZsYnVcLnZcdHZbMC05XSss MFwoW2EteDAtOV0rXCkNCisqKiB0aC52bGJ1LnZcdHZbMC05XSssMFwoW2Et eDAtOV0rXCksdjAudA0KKyoqIHRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZb MC05XSssXHMqLTE2DQorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxc cyp2WzAtOV0rLFxzKi0xNixccyp2MC50DQorKiogdGgudnNiLnZcdHZbMC05 XSssMFwoW2EteDAtOV0rXCkNCisqKiByZXQNCisqLw0KK3ZvaWQgZjMgKHZv aWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQ0KK3sNCisgICAgdmJv b2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47DQorICAgIGFzbSB2b2xh dGlsZSAoIiI6OjoibWVtb3J5Iik7DQorICAgIHZ1aW50MzJtMV90IHYgPSBf X3Jpc2N2X3RoX3ZsYnVfdl91MzJtMSAoaW4sIDQpOw0KKyAgICB2dWludDMy bTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xX3R1bXUgKG1hc2ss IHYsIGluLCA0KTsNCisgICAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3Zh ZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOw0KKyAgICB2dWludDMybTFfdCB2 NCA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMV90dW11IChtYXNrLCB2MywgdjIs IC0xNiwgNCk7DQorICAgIF9fcmlzY3ZfdGhfdnNiX3ZfdTMybTEgKG91dCwg djQsIDQpOw0KK30NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92 bGgtdnNoLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw MDAwMC4uM2M4YjVjY2MxNmINCi0tLSAvZGV2L251bGwNCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zs aC12c2guYw0KQEAgLTAsMCArMSw2OCBAQA0KKy8qIHsgZGctZG8gY29tcGls ZSB9ICovDQorLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnYzMmdjeHRoZWFk dmVjdG9yIC1tYWJpPWlscDMyZCAtTzMiIH0gKi8NCisvKiB7IGRnLWZpbmFs IHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgfSB9ICovDQorI2lu Y2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIg0KKw0KKy8qDQorKiogZjE6DQor KiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbWENCisqKiB0aC52 bGhcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisqKiB0aC52bGhcLnZc dHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisqKiB0aC52YWRkXC52aVx0dlsw LTldKyxccyp2WzAtOV0rLFxzKi0xNg0KKyoqIHRoLnZhZGRcLnZpXHR2WzAt OV0rLFxzKnZbMC05XSssXHMqLTE2DQorKiogdGgudnNoXC52XHR2WzAtOV0r LDBcKFthLXgwLTldK1wpDQorKiogcmV0DQorKi8NCit2b2lkIGYxICh2b2lk ICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4KQ0KK3sNCisgICAgdmludDMy bTFfdCB2ID0gX19yaXNjdl90aF92bGhfdl9pMzJtMSAoaW4sIDQpOw0KKyAg ICB2aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGhfdl9pMzJtMV90dSAo diwgaW4sIDQpOw0KKyAgICB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRk X3Z4X2kzMm0xICh2MiwgLTE2LCA0KTsNCisgICAgdmludDMybTFfdCB2NCA9 IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV90dSAodjMsIHYyLCAtMTYsIDQpOw0K KyAgICBfX3Jpc2N2X3RoX3ZzaF92X2kzMm0xIChvdXQsIHY0LCA0KTsNCit9 DQorDQorLyoNCisqKiBmMjoNCisqKiB0aC52c2V0dmxpXHRbYS14MC05XSss emVybyxlOCxtZjQsdGEsbWENCisqKiB0aC52bG0udlx0dlswLTldKywwXChb YS14MC05XStcKQ0KKyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHRh LG1hDQorKiogdGgudmxoLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAu dA0KKyoqIHRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2 DQorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxz Ki0xNixccyp2MC50DQorKiogdGgudnNoLnZcdHZbMC05XSssMFwoW2EteDAt OV0rXCkNCisqKiByZXQNCisqLw0KK3ZvaWQgZjIgKHZvaWQgKiBpbiwgdm9p ZCAqb3V0LCBpbnQzMl90IHgpDQorew0KKyAgICB2Ym9vbDMyX3QgbWFzayA9 ICoodmJvb2wzMl90KilpbjsNCisgICAgYXNtIHZvbGF0aWxlICgiIjo6OiJt ZW1vcnkiKTsNCisgICAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGhf dl9pMzJtMSAoaW4sIDQpOw0KKyAgICB2aW50MzJtMV90IHYyID0gX19yaXNj dl90aF92bGhfdl9pMzJtMV9tIChtYXNrLCBpbiwgNCk7DQorICAgIHZpbnQz Mm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCAtMTYsIDQp Ow0KKyAgICB2aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X2kzMm0x X20gKG1hc2ssIHYzLCAtMTYsIDQpOw0KKyAgICBfX3Jpc2N2X3RoX3ZzaF92 X2kzMm0xIChvdXQsIHY0LCA0KTsNCit9DQorDQorLyoNCisqKiBmMzoNCisq KiB0aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQsdGEsbWENCisq KiB0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQ0KKyoqIHRoLnZz ZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG11DQorKiogdGgudmxoXC52XHR2 WzAtOV0rLDBcKFthLXgwLTldK1wpDQorKiogdGgudmxoLnZcdHZbMC05XSss MFwoW2EteDAtOV0rXCksdjAudA0KKyoqIHRoLnZhZGRcLnZpXHR2WzAtOV0r LFxzKnZbMC05XSssXHMqLTE2DQorKiogdGgudmFkZFwudmlcdHZbMS05XVsw LTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50DQorKiogdGgudnNoLnZc dHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisqKiByZXQNCisqLw0KK3ZvaWQg ZjMgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCBpbnQzMl90IHgpDQorew0KKyAg ICB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsNCisgICAgYXNt IHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsNCisgICAgdmludDMybTFfdCB2 ID0gX19yaXNjdl90aF92bGhfdl9pMzJtMSAoaW4sIDQpOw0KKyAgICB2aW50 MzJtMV90IHYyID0gX19yaXNjdl90aF92bGhfdl9pMzJtMV90dW11IChtYXNr LCB2LCBpbiwgNCk7DQorICAgIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3Zh ZGRfdnhfaTMybTEgKHYyLCAtMTYsIDQpOw0KKyAgICB2aW50MzJtMV90IHY0 ID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xX3R1bXUgKG1hc2ssIHYzLCB2Miwg LTE2LCA0KTsNCisgICAgX19yaXNjdl90aF92c2hfdl9pMzJtMSAob3V0LCB2 NCwgNCk7DQorfQ0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92 bGh1LXZzaC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MDAwMDAuLmI3YzAwNDA0ZjE4DQotLS0gL2Rldi9udWxsDQorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92 bGh1LXZzaC5jDQpAQCAtMCwwICsxLDY4IEBADQorLyogeyBkZy1kbyBjb21w aWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhl YWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAqLw0KKy8qIHsgZGctZmlu YWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiB9IH0gKi8NCisj aW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgiDQorDQorLyoNCisqKiBmMToN CisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtYQ0KKyoqIHRo LnZsaHVcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisqKiB0aC52bGh1 XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpDQorKiogdGgudmFkZFwudmlc dHZbMC05XSssXHMqdlswLTldKyxccyotMTYNCisqKiB0aC52YWRkXC52aVx0 dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNg0KKyoqIHRoLnZzaFwudlx0dlsw LTldKywwXChbYS14MC05XStcKQ0KKyoqIHJldA0KKyovDQordm9pZCBmMSAo dm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpDQorew0KKyAgICB2 dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGh1X3ZfdTMybTEgKGluLCA0 KTsNCisgICAgdnVpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsaHVfdl91 MzJtMV90dSAodiwgaW4sIDQpOw0KKyAgICB2dWludDMybTFfdCB2MyA9IF9f cmlzY3ZfdmFkZF92eF91MzJtMSAodjIsIC0xNiwgNCk7DQorICAgIHZ1aW50 MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xX3R1ICh2MywgdjIs IC0xNiwgNCk7DQorICAgIF9fcmlzY3ZfdGhfdnNoX3ZfdTMybTEgKG91dCwg djQsIDQpOw0KK30NCisNCisvKg0KKyoqIGYyOg0KKyoqIHRoLnZzZXR2bGlc dFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQ0KKyoqIHRoLnZsbS52XHR2 WzAtOV0rLDBcKFthLXgwLTldK1wpDQorKiogdGgudnNldGl2bGlcdHplcm8s NCxlMzIsbTEsdGEsbWENCisqKiB0aC52bGh1LnZcdHZbMC05XSssMFwoW2Et eDAtOV0rXCksdjAudA0KKyoqIHRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZb MC05XSssXHMqLTE2DQorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxc cyp2WzAtOV0rLFxzKi0xNixccyp2MC50DQorKiogdGgudnNoLnZcdHZbMC05 XSssMFwoW2EteDAtOV0rXCkNCisqKiByZXQNCisqLw0KK3ZvaWQgZjIgKHZv aWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQ0KK3sNCisgICAgdmJv b2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47DQorICAgIGFzbSB2b2xh dGlsZSAoIiI6OjoibWVtb3J5Iik7DQorICAgIHZ1aW50MzJtMV90IHYgPSBf X3Jpc2N2X3RoX3ZsaHVfdl91MzJtMSAoaW4sIDQpOw0KKyAgICB2dWludDMy bTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxodV92X3UzMm0xX20gKG1hc2ssIGlu LCA0KTsNCisgICAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhf dTMybTEgKHYyLCAtMTYsIDQpOw0KKyAgICB2dWludDMybTFfdCB2NCA9IF9f cmlzY3ZfdmFkZF92eF91MzJtMV9tIChtYXNrLCB2MywgLTE2LCA0KTsNCisg ICAgX19yaXNjdl90aF92c2hfdl91MzJtMSAob3V0LCB2NCwgNCk7DQorfQ0K Kw0KKy8qDQorKiogZjM6DQorKiogdGgudnNldHZsaVx0W2EteDAtOV0rLHpl cm8sZTgsbWY0LHRhLG1hDQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2Et eDAtOV0rXCkNCisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxt dQ0KKyoqIHRoLnZsaHVcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisq KiB0aC52bGh1LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAudA0KKyoq IHRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2DQorKiog dGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixc cyp2MC50DQorKiogdGgudnNoLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkN CisqKiByZXQNCisqLw0KK3ZvaWQgZjMgKHZvaWQgKiBpbiwgdm9pZCAqb3V0 LCB1aW50MzJfdCB4KQ0KK3sNCisgICAgdmJvb2wzMl90IG1hc2sgPSAqKHZi b29sMzJfdCopaW47DQorICAgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5 Iik7DQorICAgIHZ1aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsaHVfdl91 MzJtMSAoaW4sIDQpOw0KKyAgICB2dWludDMybTFfdCB2MiA9IF9fcmlzY3Zf dGhfdmxodV92X3UzMm0xX3R1bXUgKG1hc2ssIHYsIGluLCA0KTsNCisgICAg dnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTEgKHYyLCAt MTYsIDQpOw0KKyAgICB2dWludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92 eF91MzJtMV90dW11IChtYXNrLCB2MywgdjIsIC0xNiwgNCk7DQorICAgIF9f cmlzY3ZfdGhfdnNoX3ZfdTMybTEgKG91dCwgdjQsIDQpOw0KK30NCmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0 aGVhZHZlY3Rvci92bHctdnN3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmMNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uMTdhNTMwMTJhY2YN Ci0tLSAvZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsdy12c3cuYw0KQEAgLTAsMCAr MSw2OCBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1v cHRpb25zICItbWFyY2g9cnYzMmdjeHRoZWFkdmVjdG9yIC1tYWJpPWlscDMy ZCAtTzMiIH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24t Ym9kaWVzICIqKiIgIiIgfSB9ICovDQorI2luY2x1ZGUgInJpc2N2X3RoX3Zl Y3Rvci5oIg0KKw0KKy8qDQorKiogZjE6DQorKiogdGgudnNldGl2bGlcdHpl cm8sNCxlMzIsbTEsdHUsbWENCisqKiB0aC52bHdcLnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCkNCisqKiB0aC52bHdcLnZcdHZbMC05XSssMFwoW2EteDAt OV0rXCkNCisqKiB0aC52YWRkXC52eFx0dlswLTldKyxccyp2WzAtOV0rLFxz KlthLXgwLTldKw0KKyoqIHRoLnZhZGRcLnZ4XHR2WzAtOV0rLFxzKnZbMC05 XSssXHMqW2EteDAtOV0rDQorKiogdGgudnN3XC52XHR2WzAtOV0rLDBcKFth LXgwLTldK1wpDQorKiogcmV0DQorKi8NCit2b2lkIGYxICh2b2lkICogaW4s IHZvaWQgKm91dCwgaW50MzJfdCB4KQ0KK3sNCisgICAgdmludDMybTFfdCB2 ID0gX19yaXNjdl90aF92bHdfdl9pMzJtMSAoaW4sIDQpOw0KKyAgICB2aW50 MzJtMV90IHYyID0gX19yaXNjdl90aF92bHdfdl9pMzJtMV90dSAodiwgaW4s IDQpOw0KKyAgICB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X2kz Mm0xICh2MiwgeCwgNCk7DQorICAgIHZpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2 X3ZhZGRfdnhfaTMybTFfdHUgKHYzLCB2MiwgeCwgNCk7DQorICAgIF9fcmlz Y3ZfdGhfdnN3X3ZfaTMybTEgKG91dCwgdjQsIDQpOw0KK30NCisNCisvKg0K KyoqIGYyOg0KKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1m NCx0YSxtYQ0KKyoqIHRoLnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wp DQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWENCisqKiB0 aC52bHcudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50DQorKiogdGgu dmFkZFwudnhcdHZbMC05XSssXHMqdlswLTldKyxccypbYS14MC05XSsNCisq KiB0aC52YWRkXC52eFx0dlsxLTldWzAtOV0/LFxzKnZbMC05XSssXHMqW2Et eDAtOV0rLFxzKnYwLnQNCisqKiB0aC52c3cudlx0dlswLTldKywwXChbYS14 MC05XStcKQ0KKyoqIHJldA0KKyovDQordm9pZCBmMiAodm9pZCAqIGluLCB2 b2lkICpvdXQsIGludDMyX3QgeCkNCit7DQorICAgIHZib29sMzJfdCBtYXNr ID0gKih2Ym9vbDMyX3QqKWluOw0KKyAgICBhc20gdm9sYXRpbGUgKCIiOjo6 Im1lbW9yeSIpOw0KKyAgICB2aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3Zs d192X2kzMm0xIChpbiwgNCk7DQorICAgIHZpbnQzMm0xX3QgdjIgPSBfX3Jp c2N2X3RoX3Zsd192X2kzMm0xX20gKG1hc2ssIGluLCA0KTsNCisgICAgdmlu dDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMSAodjIsIHgsIDQp Ow0KKyAgICB2aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X2kzMm0x X20gKG1hc2ssIHYzLCB4LCA0KTsNCisgICAgX19yaXNjdl90aF92c3dfdl9p MzJtMSAob3V0LCB2NCwgNCk7DQorfQ0KKw0KKy8qDQorKiogZjM6DQorKiog dGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hDQorKiog dGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisqKiB0aC52c2V0 aXZsaVx0emVybyw0LGUzMixtMSx0dSxtdQ0KKyoqIHRoLnZsd1wudlx0dlsw LTldKywwXChbYS14MC05XStcKQ0KKyoqIHRoLnZsdy52XHR2WzAtOV0rLDBc KFthLXgwLTldK1wpLHYwLnQNCisqKiB0aC52YWRkXC52eFx0dlswLTldKyxc cyp2WzAtOV0rLFxzKlthLXgwLTldKw0KKyoqIHRoLnZhZGRcLnZ4XHR2WzEt OV1bMC05XT8sXHMqdlswLTldKyxccypbYS14MC05XSssXHMqdjAudA0KKyoq IHRoLnZzdy52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpDQorKiogcmV0DQor Ki8NCit2b2lkIGYzICh2b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4 KQ0KK3sNCisgICAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47 DQorICAgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7DQorICAgIHZp bnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmx3X3ZfaTMybTEgKGluLCA0KTsN CisgICAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3X3ZfaTMybTFf dHVtdSAobWFzaywgdiwgaW4sIDQpOw0KKyAgICB2aW50MzJtMV90IHYzID0g X19yaXNjdl92YWRkX3Z4X2kzMm0xICh2MiwgeCwgNCk7DQorICAgIHZpbnQz Mm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTFfdHVtdSAobWFzaywg djMsIHYyLCB4LCA0KTsNCisgICAgX19yaXNjdl90aF92c3dfdl9pMzJtMSAo b3V0LCB2NCwgNCk7DQorfQ0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsd3UtdnN3LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bHd1LXZzdy5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwMDAuLmIxODdjZmM4NTJiDQotLS0gL2Rldi9udWxsDQorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bHd1LXZzdy5jDQpAQCAtMCwwICsxLDY4IEBADQorLyogeyBkZy1k byBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMy Z2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAqLw0KKy8qIHsg ZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiB9IH0g Ki8NCisjaW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgiDQorDQorLyoNCisq KiBmMToNCisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtYQ0K KyoqIHRoLnZsd3VcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisqKiB0 aC52bHd1XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpDQorKiogdGgudmFk ZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYNCisqKiB0aC52YWRk XC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNg0KKyoqIHRoLnZzd1wu dlx0dlswLTldKywwXChbYS14MC05XStcKQ0KKyoqIHJldA0KKyovDQordm9p ZCBmMSAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpDQorew0K KyAgICB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bHd1X3ZfdTMybTEg KGluLCA0KTsNCisgICAgdnVpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3Zs d3Vfdl91MzJtMV90dSAodiwgaW4sIDQpOw0KKyAgICB2dWludDMybTFfdCB2 MyA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMSAodjIsIC0xNiwgNCk7DQorICAg IHZ1aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xX3R1ICh2 MywgdjIsIC0xNiwgNCk7DQorICAgIF9fcmlzY3ZfdGhfdnN3X3ZfdTMybTEg KG91dCwgdjQsIDQpOw0KK30NCisNCisvKg0KKyoqIGYyOg0KKyoqIHRoLnZz ZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQ0KKyoqIHRoLnZs bS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpDQorKiogdGgudnNldGl2bGlc dHplcm8sNCxlMzIsbTEsdGEsbWENCisqKiB0aC52bHd1LnZcdHZbMC05XSss MFwoW2EteDAtOV0rXCksdjAudA0KKyoqIHRoLnZhZGRcLnZpXHR2WzAtOV0r LFxzKnZbMC05XSssXHMqLTE2DQorKiogdGgudmFkZFwudmlcdHZbMS05XVsw LTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50DQorKiogdGgudnN3LnZc dHZbMC05XSssMFwoW2EteDAtOV0rXCkNCisqKiByZXQNCisqLw0KK3ZvaWQg ZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQ0KK3sNCisg ICAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47DQorICAgIGFz bSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7DQorICAgIHZ1aW50MzJtMV90 IHYgPSBfX3Jpc2N2X3RoX3Zsd3Vfdl91MzJtMSAoaW4sIDQpOw0KKyAgICB2 dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3dV92X3UzMm0xX20gKG1h c2ssIGluLCA0KTsNCisgICAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3Zh ZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOw0KKyAgICB2dWludDMybTFfdCB2 NCA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMV9tIChtYXNrLCB2MywgLTE2LCA0 KTsNCisgICAgX19yaXNjdl90aF92c3dfdl91MzJtMSAob3V0LCB2NCwgNCk7 DQorfQ0KKw0KKy8qDQorKiogZjM6DQorKiogdGgudnNldHZsaVx0W2EteDAt OV0rLHplcm8sZTgsbWY0LHRhLG1hDQorKiogdGgudmxtLnZcdHZbMC05XSss MFwoW2EteDAtOV0rXCkNCisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUzMixt MSx0dSxtdQ0KKyoqIHRoLnZsd3VcLnZcdHZbMC05XSssMFwoW2EteDAtOV0r XCkNCisqKiB0aC52bHd1LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAu dA0KKyoqIHRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2 DQorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxz Ki0xNixccyp2MC50DQorKiogdGgudnN3LnZcdHZbMC05XSssMFwoW2EteDAt OV0rXCkNCisqKiByZXQNCisqLw0KK3ZvaWQgZjMgKHZvaWQgKiBpbiwgdm9p ZCAqb3V0LCB1aW50MzJfdCB4KQ0KK3sNCisgICAgdmJvb2wzMl90IG1hc2sg PSAqKHZib29sMzJfdCopaW47DQorICAgIGFzbSB2b2xhdGlsZSAoIiI6Ojoi bWVtb3J5Iik7DQorICAgIHZ1aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3Zs d3Vfdl91MzJtMSAoaW4sIDQpOw0KKyAgICB2dWludDMybTFfdCB2MiA9IF9f cmlzY3ZfdGhfdmx3dV92X3UzMm0xX3R1bXUgKG1hc2ssIHYsIGluLCA0KTsN CisgICAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTEg KHYyLCAtMTYsIDQpOw0KKyAgICB2dWludDMybTFfdCB2NCA9IF9fcmlzY3Zf dmFkZF92eF91MzJtMV90dW11IChtYXNrLCB2MywgdjIsIC0xNiwgNCk7DQor ICAgIF9fcmlzY3ZfdGhfdnN3X3ZfdTMybTEgKG91dCwgdjQsIDQpOw0KK30N Ci0tIA0KMi4xNy4xDQogDQogDQo= ------=_001_NextPart215705416247_=------