From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-54.freemail.mail.aliyun.com (out30-54.freemail.mail.aliyun.com [115.124.30.54]) by sourceware.org (Postfix) with ESMTPS id A9BEB3840C0F for ; Sun, 28 Jun 2020 06:26:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A9BEB3840C0F X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R201e4; CH=green; DM=||false|; DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=e01e04407; MF=majun258@linux.alibaba.com; NM=1; PH=DW; RN=4; SR=0; TI=W4_5899425_DEFAULT_0AC264CE_1593325227185_o7001c1522; Received: from WS-web (majun258@linux.alibaba.com[W4_5899425_DEFAULT_0AC264CE_1593325227185_o7001c1522]) by e01e01355.eu6 at Sun, 28 Jun 2020 14:26:30 +0800 Date: Sun, 28 Jun 2020 14:26:30 +0800 From: "MaJun" To: "libffi-discuss" , "green" Cc: "linux-csky" , "wenmeng_zhang" Reply-To: "MaJun" Message-ID: <91092980-f038-43ce-b19e-5d0f09c991b6.majun258@linux.alibaba.com> Subject: =?UTF-8?B?5Zue5aSN77yaW1BBVENIXSBwYWNrYWdlL2xpYmZmaTogQWRkIGNza3kgY3B1IHN1cHBvcnQ=?= X-Mailer: [Alimail-Mailagent][W4_5899425][DEFAULT][Chrome] MIME-Version: 1.0 References: <1584264721-16318-1-git-send-email-majun258@linux.alibaba.com> x-aliyun-mail-creator: W4_5899425_DEFAULT_M3LTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfMykgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzgxLjAuNDA0NC4xMzggU2FmYXJpLzUzNy4zNg==vN In-Reply-To: <1584264721-16318-1-git-send-email-majun258@linux.alibaba.com> X-Spam-Status: No, score=-18.3 required=5.0 tests=BAYES_00, BODY_8BITS, ENV_AND_HDR_SPF_MATCH, GIT_PATCH_0, HTML_MESSAGE, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, SCC_10_SHORT_WORD_LINES, SCC_20_SHORT_WORD_LINES, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_PASS, TXREP, UNPARSEABLE_RELAY, USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: libffi-discuss@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libffi-discuss mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Jun 2020 06:26:42 -0000 SGkgTXIgR3JlZW46IAogICAgQ291bGQgeW91IGhlbHAgdG8gcmV2aWV3IHRoaXMgcGF0Y2g/ICAK VGhhbmtzICEKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0K5Y+R5Lu25Lq677yaTWEgSnVuIDxtYWp1bjI1OEBsaW51eC5h bGliYWJhLmNvbT4K5Y+R6YCB5pe26Ze077yaMjAyMOW5tDPmnIgyM+aXpSjmmJ/mnJ/kuIApIDE1 OjA0CuaUtuS7tuS6uu+8mmxpYmZmaS1kaXNjdXNzIDxsaWJmZmktZGlzY3Vzc0Bzb3VyY2V3YXJl Lm9yZz4K5oqE44CA6YCB77yabWFqdW4yNTggPG1hanVuMjU4QGxpbnV4LmFsaWJhYmEuY29tPjsg bGludXgtY3NreSA8bGludXgtY3NreUB2Z2VyLmtlcm5lbC5vcmc+OyB3ZW5tZW5nX3poYW5nIDx3 ZW5tZW5nX3poYW5nQGMtc2t5LmNvbT4K5Li744CA6aKY77yaW1BBVENIXSBwYWNrYWdlL2xpYmZm aTogQWRkIGNza3kgY3B1IHN1cHBvcnQKClRoaXMgcGF0Y2ggYWRkZWQgdGhlIHN1cHBvcnQgZm9y IGNza3kgY3B1IGFyY2hpdGVjdHVyZQoKU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VubWVuZyA8d2Vu bWVuZ196aGFuZ0BjLXNreS5jb20+ClNpZ25lZC1vZmYtYnk6IE1hIEp1biA8bWFqdW4yNThAbGlu dXguYWxpYmFiYS5jb20+Ci0tLQogTWFrZWZpbGUuYW0gICAgICAgICAgfCAgIDIgKwogUkVBRE1F Lm1kICAgICAgICAgICAgfCAgIDEgKwogY29uZmlndXJlLmhvc3QgICAgICAgfCAgIDUgKwogc3Jj L2Nza3kvZmZpLmMgICAgICAgfCAzOTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogc3JjL2Nza3kvZmZpdGFyZ2V0LmggfCAgNjMgKysrKysrKwogc3JjL2Nza3kv c3lzdi5TICAgICAgfCAzNzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogNiBmaWxlcyBjaGFuZ2VkLCA4MzcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9jc2t5L2ZmaS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Nza3kvZmZpdGFyZ2V0LmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvY3NreS9zeXN2LlMKCmRpZmYgLS1naXQgYS9NYWtlZmls ZS5hbSBiL01ha2VmaWxlLmFtCmluZGV4IGY4M2U0NDQuLmU1MjhmZmQgMTAwNjQ0Ci0tLSBhL01h a2VmaWxlLmFtCisrKyBiL01ha2VmaWxlLmFtCkBAIC01Myw2ICs1Myw3IEBAIG5vaW5zdF9IRUFE RVJTID0gXAogIHNyYy9hdnIzMi9mZml0YXJnZXQuaCAgICAgIFwKICBzcmMvYmZpbi9mZml0YXJn ZXQuaCAgICAgIFwKICBzcmMvY3Jpcy9mZml0YXJnZXQuaCAgICAgIFwKKyBzcmMvY3NreS9mZml0 YXJnZXQuaCAgICAgIFwKICBzcmMvZnJ2L2ZmaXRhcmdldC5oICAgICAgXAogIHNyYy9pYTY0L2Zm aXRhcmdldC5oIHNyYy9pYTY0L2lhNjRfZmxhZ3MuaCAgIFwKICBzcmMvbTMyci9mZml0YXJnZXQu aCAgICAgIFwKQEAgLTg1LDYgKzg2LDcgQEAgRVhUUkFfbGliZmZpX2xhX1NPVVJDRVMgPSBcCiAg c3JjL2F2cjMyL2ZmaS5jIHNyYy9hdnIzMi9zeXN2LlMgICAgXAogIHNyYy9iZmluL2ZmaS5jIHNy Yy9iZmluL3N5c3YuUyAgICAgXAogIHNyYy9jcmlzL2ZmaS5jIHNyYy9jcmlzL3N5c3YuUyAgICAg XAorIHNyYy9jc2t5L2ZmaS5jIHNyYy9jc2t5L3N5c3YuUyAgICAgXAogIHNyYy9mcnYvZmZpLmMg c3JjL2Zydi9lYWJpLlMgICAgIFwKICBzcmMvaWE2NC9mZmkuYyBzcmMvaWE2NC91bml4LlMgICAg IFwKICBzcmMvbTMyci9mZmkuYyBzcmMvbTMyci9zeXN2LlMgICAgIFwKZGlmZiAtLWdpdCBhL1JF QURNRS5tZCBiL1JFQURNRS5tZAppbmRleCAzY2FmMmZhLi5iZGZlODgwIDEwMDY0NAotLS0gYS9S RUFETUUubWQKKysrIGIvUkVBRE1FLm1kCkBAIC01OCw2ICs1OCw3IEBAIHRlc3RlZDoKIHwgQVJN ICAgICAgICAgICAgIHwgaU9TICAgICAgICAgICAgICB8IEdDQyAgICAgICAgICAgICAgICAgICAg IHwKIHwgQVZSMzIgICAgICAgICAgIHwgTGludXggICAgICAgICAgICB8IEdDQyAgICAgICAgICAg ICAgICAgICAgIHwKIHwgQmxhY2tmaW4gICAgICAgIHwgdUNsaW51eCAgICAgICAgICB8IEdDQyAg ICAgICAgICAgICAgICAgICAgIHwKK3wgQ1NLWSAgICAgICAgICAgIHwgTGludXggICAgICAgICAg ICB8IEdDQyAgICAgICAgICAgICAgICAgICAgIHwKIHwgSFBQQSAgICAgICAgICAgIHwgSFBVWCAg ICAgICAgICAgICB8IEdDQyAgICAgICAgICAgICAgICAgICAgIHwKIHwgSUEtNjQgICAgICAgICAg IHwgTGludXggICAgICAgICAgICB8IEdDQyAgICAgICAgICAgICAgICAgICAgIHwKIHwgTTY4SyAg ICAgICAgICAgIHwgRnJlZU1pTlQgICAgICAgICB8IEdDQyAgICAgICAgICAgICAgICAgICAgIHwK ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5ob3N0IGIvY29uZmlndXJlLmhvc3QKaW5kZXggNzYzNGMz YS4uOTIwMWNkNCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmhvc3QKKysrIGIvY29uZmlndXJlLmhv c3QKQEAgLTQzLDYgKzQzLDExIEBAIGNhc2UgIiR7aG9zdH0iIGluCiAgU09VUkNFUz0iZmZpLmMg c3lzdi5TIgogIDs7CgorICBjc2t5LSotKikKKyBUQVJHRVQ9Q1NLWTsgVEFSR0VURElSPWNza3kK KyBTT1VSQ0VTPSJmZmkuYyBzeXN2LlMiCisgOzsKKwogICBmcnYtKi0qKQogIFRBUkdFVD1GUlY7 IFRBUkdFVERJUj1mcnYKICBTT1VSQ0VTPSJmZmkuYyBlYWJpLlMiCmRpZmYgLS1naXQgYS9zcmMv Y3NreS9mZmkuYyBiL3NyYy9jc2t5L2ZmaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmViNTM4NDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY3NreS9mZmkuYwpAQCAtMCww ICsxLDM5NSBAQAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIGZmaS5jCisKKyAgIENTS1kgRm9yZWln biBGdW5jdGlvbiBJbnRlcmZhY2UKKworICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisgICBhIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAgIGBg U29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZworICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisgICBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8K KyAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyAgIGlu IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisg ICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELAorICAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorICAgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCisgICBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyAgIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAor ICAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUgorICAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g Ki8KKworI2luY2x1ZGUgPGZmaS5oPgorI2luY2x1ZGUgPGZmaV9jb21tb24uaD4KKworI2luY2x1 ZGUgPHN0ZGxpYi5oPgorCisvKiBmZmlfcHJlcF9hcmdzIGlzIGNhbGxlZCBieSB0aGUgYXNzZW1i bHkgcm91dGluZSBvbmNlIHN0YWNrIHNwYWNlCisgICBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9yIHRo ZSBmdW5jdGlvbidzIGFyZ3VtZW50cworKi8KK3ZvaWQgZmZpX3ByZXBfYXJncyhjaGFyICpzdGFj aywgZXh0ZW5kZWRfY2lmICplY2lmKQoreworIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBpOworIHJl Z2lzdGVyIHZvaWQgKipwX2FyZ3Y7CisgcmVnaXN0ZXIgY2hhciAqYXJncDsKKyByZWdpc3RlciBm ZmlfdHlwZSAqKnBfYXJnOworCisgYXJncCA9IHN0YWNrOworCisgaWYgKCBlY2lmLT5jaWYtPmZs YWdzID09IEZGSV9UWVBFX1NUUlVDVCApIHsKKyAgKih2b2lkICoqKSBhcmdwID0gZWNpZi0+cnZh bHVlOworICBhcmdwICs9IDQ7CisgfQorCisgcF9hcmd2ID0gZWNpZi0+YXZhbHVlOworCisgZm9y IChpID0gZWNpZi0+Y2lmLT5uYXJncywgcF9hcmcgPSBlY2lmLT5jaWYtPmFyZ190eXBlczsKKyAg IChpICE9IDApOworICAgaS0tLCBwX2FyZysrKQorIHsKKyAgc2l6ZV90IHo7CisgIHNpemVfdCBh bGlnbm1lbnQ7CisKKyAgLyogQWxpZ24gaWYgbmVjZXNzYXJ5ICovCisgIGFsaWdubWVudCA9ICgq cF9hcmcpLT5hbGlnbm1lbnQ7CisjaWZkZWYgX19DU0tZQUJJVjFfXworICAvKgorICAgKiBBZGFw dCBBQklWMSBidWcuCisgICAqIElmIHN0cnVjdCdzIHNpemUgaXMgbGFyZ2VyIHRoYW4gOCBieXRl cywgdGhlbiBpdCBhbHdheXMgYWxpZ25tZW50IGFzIDQgYnl0ZXMuCisgICAqLworICBpZiAoKCgq cF9hcmcpLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkgJiYgKCgqcF9hcmcpLT5zaXplID4gOCkg JiYgKGFsaWdubWVudCA9PSA4KSkgeworICAgYWxpZ25tZW50ID0gNDsKKyAgfQorI2VuZGlmCisK KyAgaWYgKChhbGlnbm1lbnQgLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgeworICAgYXJncCA9IChj aGFyICopIEZGSV9BTElHTihhcmdwLCBhbGlnbm1lbnQpOworICB9CisKKyAgaWYgKCgqcF9hcmcp LT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKKyAgIGFyZ3AgPSAoY2hhciAqKSBGRklfQUxJR04o YXJncCwgNCk7CisKKyAgeiA9ICgqcF9hcmcpLT5zaXplOworICBpZiAoeiA8IHNpemVvZihpbnQp KQorICB7CisgICB6ID0gc2l6ZW9mKGludCk7CisgICBzd2l0Y2ggKCgqcF9hcmcpLT50eXBlKQor ICAgeworICAgY2FzZSBGRklfVFlQRV9TSU5UODoKKyAgICAqKHNpZ25lZCBpbnQgKikgYXJncCA9 IChzaWduZWQgaW50KSooU0lOVDggKikoKiBwX2FyZ3YpOworICAgIGJyZWFrOworCisgICBjYXNl IEZGSV9UWVBFX1VJTlQ4OgorICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQg aW50KSooVUlOVDggKikoKiBwX2FyZ3YpOworICAgIGJyZWFrOworCisgICBjYXNlIEZGSV9UWVBF X1NJTlQxNjoKKyAgICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSooU0lOVDE2 ICopKCogcF9hcmd2KTsKKyAgICBicmVhazsKKworICAgY2FzZSBGRklfVFlQRV9VSU5UMTY6Cisg ICAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMTYgKikoKiBw X2FyZ3YpOworICAgIGJyZWFrOworCisgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKKyNpZmRlZiBf X0NTS1lCRV9fCisgICAgbWVtY3B5KChhcmdwICsgNCAtICgqcF9hcmcpLT5zaXplKSwgKnBfYXJn diwgKCpwX2FyZyktPnNpemUpOworI2Vsc2UKKyAgICBtZW1jcHkoYXJncCwgKnBfYXJndiwgKCpw X2FyZyktPnNpemUpOworI2VuZGlmCisgICAgYnJlYWs7CisKKyAgIGRlZmF1bHQ6CisgICAgRkZJ X0FTU0VSVCgwKTsKKyAgIH0KKyAgfQorICBlbHNlIGlmICh6ID09IHNpemVvZihpbnQpKQorICB7 CisgICAqKHVuc2lnbmVkIGludCAqKSBhcmdwID0gKHVuc2lnbmVkIGludCkqKFVJTlQzMiAqKSgq IHBfYXJndik7CisgIH0KKyAgZWxzZQorICB7CisgICBtZW1jcHkoYXJncCwgKnBfYXJndiwgeik7 CisgIH0KKyAgcF9hcmd2Kys7CisgIGFyZ3AgKz0gejsKKyB9CisKKyByZXR1cm47Cit9CisKKy8q IFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KK2ZmaV9zdGF0dXMg ZmZpX3ByZXBfY2lmX21hY2hkZXAoZmZpX2NpZiAqY2lmKQoreworICAvKiBSb3VuZCB0aGUgc3Rh Y2sgdXAgdG8gYSBtdWx0aXBsZSBvZiA4IGJ5dGVzLiAgVGhpcyBpc24ndCBuZWVkZWQKKyAgICAg ZXZlcnl3aGVyZSwgYnV0IGl0IGlzIG9uIHNvbWUgcGxhdGZvcm1zLCBhbmQgaXQgZG9lc24ndCBo Y3NreSBhbnl0aGluZworICAgICB3aGVuIGl0IGlzbid0IG5lZWRlZC4gICovCisgIGNpZi0+Ynl0 ZXMgPSAoY2lmLT5ieXRlcyArIDcpICYgfjc7CisKKyAgLyogU2V0IHRoZSByZXR1cm4gdHlwZSBm bGFnICovCisgIHN3aXRjaCAoY2lmLT5ydHlwZS0+dHlwZSkKKyAgICB7CisKKyAgICBjYXNlIEZG SV9UWVBFX0RPVUJMRToKKyAgICBjYXNlIEZGSV9UWVBFX1NJTlQ2NDoKKyAgICBjYXNlIEZGSV9U WVBFX1VJTlQ2NDoKKyAgICAgIGNpZi0+ZmxhZ3MgPSAodW5zaWduZWQpIEZGSV9UWVBFX1NJTlQ2 NDsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisgICAgICBpZiAo Y2lmLT5ydHlwZS0+c2l6ZSA8PSA0KQorIC8qIEEgQ29tcG9zaXRlIFR5cGUgbm90IGxhcmdlciB0 aGFuIDQgYnl0ZXMgaXMgcmV0dXJuZWQgaW4gcjAuICAqLworIGNpZi0+ZmxhZ3MgPSAodW5zaWdu ZWQpRkZJX1RZUEVfSU5UOworICAgICAgZWxzZSBpZiAoY2lmLT5ydHlwZS0+c2l6ZSA8PSA4KQor IC8qIEEgQ29tcG9zaXRlIFR5cGUgbm90IGxhcmdlciB0aGFuIDggYnl0ZXMgaXMgcmV0dXJuZWQg aW4gcjAsIHIxLiAgKi8KKyBjaWYtPmZsYWdzID0gKHVuc2lnbmVkKUZGSV9UWVBFX1NJTlQ2NDsK KyAgICAgIGVsc2UKKyAvKiBBIENvbXBvc2l0ZSBUeXBlIGxhcmdlciB0aGFuIDggYnl0ZXMsIG9y IHdob3NlIHNpemUgY2Fubm90CisgICAgYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5IC4uLiBpcyBz dG9yZWQgaW4gbWVtb3J5IGF0IGFuCisgICAgYWRkcmVzcyBwYXNzZWQgW2luIHIwXS4gICovCisg Y2lmLT5mbGFncyA9ICh1bnNpZ25lZClGRklfVFlQRV9TVFJVQ1Q7CisgICAgICBicmVhazsKKwor ICAgIGRlZmF1bHQ6CisgICAgICBjaWYtPmZsYWdzID0gRkZJX1RZUEVfSU5UOworICAgICAgYnJl YWs7CisgICAgfQorCisgIHJldHVybiBGRklfT0s7Cit9CisKKy8qIFBlcmZvcm0gbWFjaGluZSBk ZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgZm9yIHZhcmlhZGljIGNhbGxzICovCitmZmlfc3RhdHVz IGZmaV9wcmVwX2NpZl9tYWNoZGVwX3ZhcihmZmlfY2lmICpjaWYsCisgICAgICAgIHVuc2lnbmVk IGludCBuZml4ZWRhcmdzLAorICAgICAgICB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncykKK3sKKyAg cmV0dXJuIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGNpZik7Cit9CisKKy8qIFByb3RvdHlwZXMgZm9y IGFzc2VtYmx5IGZ1bmN0aW9ucywgaW4gc3lzdi5TICovCitleHRlcm4gdm9pZCBmZmlfY2FsbF9T WVNWICh2b2lkICgqZm4pKHZvaWQpLCBleHRlbmRlZF9jaWYgKiwgdW5zaWduZWQsIHVuc2lnbmVk LCB1bnNpZ25lZCAqKTsKKwordm9pZCBmZmlfY2FsbChmZmlfY2lmICpjaWYsIHZvaWQgKCpmbiko dm9pZCksIHZvaWQgKnJ2YWx1ZSwgdm9pZCAqKmF2YWx1ZSkKK3sKKyAgZXh0ZW5kZWRfY2lmIGVj aWY7CisKKyAgaW50IHNtYWxsX3N0cnVjdCA9IChjaWYtPmZsYWdzID09IEZGSV9UWVBFX0lOVAor ICAgICAgICAmJiBjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCk7CisKKyAgZWNp Zi5jaWYgPSBjaWY7CisgIGVjaWYuYXZhbHVlID0gYXZhbHVlOworCisgIHVuc2lnbmVkIGludCB0 ZW1wOworCisgIC8qIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3QgYW5kIHdlIGRvbid0 IGhhdmUgYSByZXR1cm4gKi8KKyAgLyogdmFsdWUgYWRkcmVzcyB0aGVuIHdlIG5lZWQgdG8gbWFr ZSBvbmUgICAgICAgICAgKi8KKworICBpZiAoKHJ2YWx1ZSA9PSBOVUxMKSAmJgorICAgICAgKGNp Zi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUKSkKKyAgICB7CisgICAgICBlY2lmLnJ2YWx1ZSA9 IGFsbG9jYShjaWYtPnJ0eXBlLT5zaXplKTsKKyAgICB9CisgIGVsc2UgaWYgKHNtYWxsX3N0cnVj dCkKKyAgICBlY2lmLnJ2YWx1ZSA9ICZ0ZW1wOworICBlbHNlCisgICAgZWNpZi5ydmFsdWUgPSBy dmFsdWU7CisKKyAgc3dpdGNoIChjaWYtPmFiaSkKKyAgICB7CisgICAgY2FzZSBGRklfU1lTVjoK KyAgICAgIGZmaV9jYWxsX1NZU1YgKGZuLCAmZWNpZiwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywg ZWNpZi5ydmFsdWUpOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgRkZJX0FT U0VSVCgwKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgaWYgKHNtYWxsX3N0cnVjdCkKKyNpZmRl ZiBfX0NTS1lCRV9fCisgICAgbWVtY3B5IChydmFsdWUsICgodW5zaWduZWQgY2hhciAqKSZ0ZW1w ICsgKDQgLSBjaWYtPnJ0eXBlLT5zaXplKSksIGNpZi0+cnR5cGUtPnNpemUpOworI2Vsc2UKKyAg ICBtZW1jcHkgKHJ2YWx1ZSwgJnRlbXAsIGNpZi0+cnR5cGUtPnNpemUpOworI2VuZGlmCit9CisK Ky8qKiBwcml2YXRlIG1lbWJlcnMgKiovCisKK3N0YXRpYyB2b2lkIGZmaV9wcmVwX2luY29taW5n X2FyZ3NfU1lTViAoY2hhciAqc3RhY2ssIHZvaWQgKipyZXQsCisgICAgICB2b2lkKiogYXJncywg ZmZpX2NpZiogY2lmKTsKKwordm9pZCBmZmlfY2xvc3VyZV9TWVNWIChmZmlfY2xvc3VyZSAqKTsK KworLyogVGhpcyBmdW5jdGlvbiBpcyBqdW1wZWQgdG8gYnkgdGhlIHRyYW1wb2xpbmUgKi8KKwor dW5zaWduZWQgaW50CitmZmlfY2xvc3VyZV9TWVNWX2lubmVyIChjbG9zdXJlLCByZXNwcCwgYXJn cykKKyAgICAgZmZpX2Nsb3N1cmUgKmNsb3N1cmU7CisgICAgIHZvaWQgKipyZXNwcDsKKyAgICAg dm9pZCAqYXJnczsKK3sKKyAgLy8gb3VyIHZhcmlvdXMgdGhpbmdzLi4uCisgIGZmaV9jaWYgICAg ICAgKmNpZjsKKyAgdm9pZCAgICAgICAgICoqYXJnX2FyZWE7CisKKyAgY2lmICAgICAgICAgPSBj bG9zdXJlLT5jaWY7CisgIGFyZ19hcmVhICAgID0gKHZvaWQqKikgYWxsb2NhIChjaWYtPm5hcmdz ICogc2l6ZW9mICh2b2lkKikpOworCisgIC8qIHRoaXMgY2FsbCB3aWxsIGluaXRpYWxpemUgQVJH X0FSRUEsIHN1Y2ggdGhhdCBlYWNoCisgICAqIGVsZW1lbnQgaW4gdGhhdCBhcnJheSBwb2ludHMg dG8gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICogdmFsdWUgb24gdGhlIHN0YWNrOyBhbmQgaWYgdGhl IGZ1bmN0aW9uIHJldHVybnMKKyAgICogYSBzdHJ1Y3R1cmUsIGl0IHdpbGwgcmUtc2V0IFJFU1Ag dG8gcG9pbnQgdG8gdGhlCisgICAqIHN0cnVjdHVyZSByZXR1cm4gYWRkcmVzcy4gICovCisKKyAg ZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKGFyZ3MsIHJlc3BwLCBhcmdfYXJlYSwgY2lmKTsK KworICAoY2xvc3VyZS0+ZnVuKSAoY2lmLCAqcmVzcHAsIGFyZ19hcmVhLCBjbG9zdXJlLT51c2Vy X2RhdGEpOworCisjaWZkZWYgX19DU0tZQkVfXworICBpZiAoY2lmLT5mbGFncyA9PSBGRklfVFlQ RV9JTlQgJiYgY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpIHsKKyAgICAgIHVu c2lnbmVkIGludCB0bXAgPSAwOworICAgICAgdG1wID0gKih1bnNpZ25lZCBpbnQgKikoKnJlc3Bw KTsKKyAgICAgICoodW5zaWduZWQgaW50ICopKCpyZXNwcCkgPSAodG1wID4+ICgoNCAtIGNpZi0+ cnR5cGUtPnNpemUpICogOCkpOworICB9CisjZW5kaWYKKworICByZXR1cm4gY2lmLT5mbGFnczsK K30KKworCitzdGF0aWMgdm9pZAorZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKGNoYXIgKnN0 YWNrLCB2b2lkICoqcnZhbHVlLAorICAgICAgIHZvaWQgKiphdmFsdWUsIGZmaV9jaWYgKmNpZikK K3sKKyAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGk7CisgIHJlZ2lzdGVyIHZvaWQgKipwX2FyZ3Y7 CisgIHJlZ2lzdGVyIGNoYXIgKmFyZ3A7CisgIHJlZ2lzdGVyIGZmaV90eXBlICoqcF9hcmc7CisK KyAgYXJncCA9IHN0YWNrOworCisgIGlmICggY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1Qg KSB7CisgICAgKnJ2YWx1ZSA9ICoodm9pZCAqKikgYXJncDsKKyAgICBhcmdwICs9IDQ7CisgIH0K KworICBwX2FyZ3YgPSBhdmFsdWU7CisKKyAgZm9yIChpID0gY2lmLT5uYXJncywgcF9hcmcgPSBj aWYtPmFyZ190eXBlczsgKGkgIT0gMCk7IGktLSwgcF9hcmcrKykKKyAgICB7CisgICAgICBzaXpl X3QgejsKKyAgICAgIHNpemVfdCBhbGlnbm1lbnQ7CisKKyAgICAgIGFsaWdubWVudCA9ICgqcF9h cmcpLT5hbGlnbm1lbnQ7CisgICAgICBpZiAoYWxpZ25tZW50IDwgNCkKKyBhbGlnbm1lbnQgPSA0 OworCisjaWZkZWYgX19DU0tZQUJJVjFfXworICAgICAgLyoKKyAgICAgICAqIEFkYXB0IEFCSVYx IGJ1Zy4KKyAgICAgICAqIElmIHN0cnVjdCdzIHNpemUgaXMgbGFyZ2VyIHRoYW4gOCBieXRlcywg dGhlbiBpdCBhbHdheXMgYWxpZ25tZW50IGFzIDQgYnl0ZXMuCisgICAgICAgKi8KKyAgICAgIGlm ICgoKCpwX2FyZyktPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKSAmJiAoKCpwX2FyZyktPnNpemUg PiA4KSAmJiAoYWxpZ25tZW50ID09IDgpKSB7CisgICAgICAgIGFsaWdubWVudCA9IDQ7CisgICAg ICB9CisjZW5kaWYKKworICAgICAgLyogQWxpZ24gaWYgbmVjZXNzYXJ5ICovCisgICAgICBpZiAo KGFsaWdubWVudCAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7CisgYXJncCA9IChjaGFyICopIEZG SV9BTElHTihhcmdwLCBhbGlnbm1lbnQpOworICAgICAgfQorCisgICAgICB6ID0gKCpwX2FyZykt PnNpemU7CisKKyNpZmRlZiBfX0NTS1lCRV9fCisgICAgICB1bnNpZ25lZCBpbnQgdG1wID0gMDsK KyAgICAgIGlmICgoKnBfYXJnKS0+c2l6ZSA8IDQpIHsKKyAgICAgICAgdG1wID0gKih1bnNpZ25l ZCBpbnQgKilhcmdwOworICAgICAgICBtZW1jcHkoYXJncCwgKCh1bnNpZ25lZCBjaGFyICopJnRt cCArICg0IC0gKCpwX2FyZyktPnNpemUpKSwgKCpwX2FyZyktPnNpemUpOworICAgICAgfQorI2Vs c2UKKyAgICAgIC8qIGJlY2F1c2Ugd2UncmUgbGl0dGxlIGVuZGlhbiwgdGhpcyBpcyB3aGF0IGl0 IHR1cm5zIGludG8uICAgKi8KKyNlbmRpZgorICAgICAgKnBfYXJndiA9ICh2b2lkKikgYXJncDsK KworICAgICAgcF9hcmd2Kys7CisgICAgICBhcmdwICs9IHo7CisgICAgfQorCisgIHJldHVybjsK K30KKworLyogSG93IHRvIG1ha2UgYSB0cmFtcG9saW5lLiAgKi8KKworZXh0ZXJuIHVuc2lnbmVk IGNoYXIgZmZpX2Nza3lfdHJhbXBvbGluZVtUUkFNUE9MSU5FX1NJWkVdOworCisvKgorICogU2lu Y2UgdGhlcmUgaXMgbm8gX19jbGVhcl9jYWNoZSBpbiBsaWJnY2MgaW4gY3NreSB0b29sY2hhaW4u CisgKiBkZWZpbmUgZmZpX2Nza3lfY2FjaGVmbHVzaCBpbiBzeXN2LlMuCisgKiB2b2lkIGZmaV9j c2t5X2NhY2hlZmx1c2godWludDMyIHN0YXJ0X2FkZHIsIHVpbnQzMiBzaXplLCBpbnQgY2FjaGUp CisgKi8KKyNkZWZpbmUgQ0FDSEVGTFVTSF9JTl9GRkkgMQorI2lmIENBQ0hFRkxVU0hfSU5fRkZJ CitleHRlcm4gdm9pZCBmZmlfY3NreV9jYWNoZWZsdXNoKHVuc2lnbmVkIGNoYXIgKl9fdHJhbXAs IHVuc2lnbmVkIGludCBrLAorICBpbnQgaSk7CisjZGVmaW5lIEZGSV9JTklUX1RSQU1QT0xJTkUo VFJBTVAsRlVOLENUWCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisoeyB1bnNpZ25l ZCBjaGFyICpfX3RyYW1wID0gKHVuc2lnbmVkIGNoYXIqKShUUkFNUCk7ICAgICAgICAgICAgICAg ICAgICBcCisgICB1bnNpZ25lZCBpbnQgIF9fZnVuID0gKHVuc2lnbmVkIGludCkoRlVOKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICB1bnNpZ25lZCBpbnQgIF9fY3R4ID0gKHVuc2ln bmVkIGludCkoQ1RYKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICB1bnNpZ25lZCBj aGFyICppbnNucyA9ICh1bnNpZ25lZCBjaGFyICopKENUWCk7ICAgICAgICAgICAgICAgICAgICAg ICBcCisgICBtZW1jcHkgKF9fdHJhbXAsIGZmaV9jc2t5X3RyYW1wb2xpbmUsIFRSQU1QT0xJTkVf U0laRSk7ICAgICAgICAgICAgICBcCisgICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1wW1RSQU1Q T0xJTkVfU0laRV0gPSBfX2N0eDsgICAgICAgICAgICAgICAgICBcCisgICAqKHVuc2lnbmVkIGlu dCopICZfX3RyYW1wW1RSQU1QT0xJTkVfU0laRSArIDRdID0gX19mdW47ICAgICAgICAgICAgICBc CisgICBmZmlfY3NreV9jYWNoZWZsdXNoKCZfX3RyYW1wWzBdLCBUUkFNUE9MSU5FX1NJWkUsIDMp OyAvKiBDbGVhciBkYXRhIG1hcHBpbmcuICAqLyBcCisgICBmZmlfY3NreV9jYWNoZWZsdXNoKGlu c25zLCBUUkFNUE9MSU5FX1NJWkUsIDMpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENsZWFyIGluc3Ry dWN0aW9uICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1hcHBpbmcuICAqLyAgICAgICAgXAorIH0pCisjZWxzZQorI2RlZmluZSBGRklfSU5J VF9UUkFNUE9MSU5FKFRSQU1QLEZVTixDVFgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKHsgdW5zaWduZWQgY2hhciAqX190cmFtcCA9ICh1bnNpZ25lZCBjaGFyKikoVFJBTVApOyAg ICAgICAgICAgICAgICAgICAgXAorICAgdW5zaWduZWQgaW50ICBfX2Z1biA9ICh1bnNpZ25lZCBp bnQpKEZVTik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgdW5zaWduZWQgaW50ICBf X2N0eCA9ICh1bnNpZ25lZCBpbnQpKENUWCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgdW5zaWduZWQgY2hhciAqaW5zbnMgPSAodW5zaWduZWQgY2hhciAqKShDVFgpOyAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgbWVtY3B5IChfX3RyYW1wLCBmZmlfY3NreV90cmFtcG9saW5l LCBUUkFNUE9MSU5FX1NJWkUpOyAgICAgICAgICAgICAgXAorICAgKih1bnNpZ25lZCBpbnQqKSAm X190cmFtcFtUUkFNUE9MSU5FX1NJWkVdID0gX19jdHg7ICAgICAgICAgICAgICAgICAgXAorICAg Kih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFtUUkFNUE9MSU5FX1NJWkUgKyA0XSA9IF9fZnVuOyAg ICAgICAgICAgICAgXAorICAgX19jbGVhcl9jYWNoZSgoJl9fdHJhbXBbMF0pLCAoJl9fdHJhbXBb VFJBTVBPTElORV9TSVpFLTFdKSk7IC8qIENsZWFyIGRhdGEgbWFwcGluZy4gICovIFwKKyAgIF9f Y2xlYXJfY2FjaGUoaW5zbnMsIGluc25zICsgVFJBTVBPTElORV9TSVpFKTsgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBDbGVhciBpbnN0cnVjdGlvbiAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLiAgKi8gICAgICAgIFwKKyB9KQorI2Vu ZGlmCisKKy8qIHRoZSBjaWYgbXVzdCBhbHJlYWR5IGJlIHByZXAnZWQgKi8KKworZmZpX3N0YXR1 cworZmZpX3ByZXBfY2xvc3VyZV9sb2MgKGZmaV9jbG9zdXJlKiBjbG9zdXJlLAorICAgICAgICBm ZmlfY2lmKiBjaWYsCisgICAgICAgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLHZvaWQqKix2 b2lkKiksCisgICAgICAgIHZvaWQgKnVzZXJfZGF0YSwKKyAgICAgICAgdm9pZCAqY29kZWxvYykK K3sKKyAgdm9pZCAoKmNsb3N1cmVfZnVuYykoZmZpX2Nsb3N1cmUqKSA9IE5VTEw7CisKKyAgaWYg KGNpZi0+YWJpID09IEZGSV9TWVNWKQorICAgIGNsb3N1cmVfZnVuYyA9ICZmZmlfY2xvc3VyZV9T WVNWOworICBlbHNlCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOworCisgIEZGSV9JTklUX1RSQU1Q T0xJTkUgKCZjbG9zdXJlLT50cmFtcFswXSwgXAorICAgICAgICAgY2xvc3VyZV9mdW5jLCAgXAor ICAgICAgICAgY29kZWxvYyk7CisKKyAgY2xvc3VyZS0+Y2lmICA9IGNpZjsKKyAgY2xvc3VyZS0+ dXNlcl9kYXRhID0gdXNlcl9kYXRhOworICBjbG9zdXJlLT5mdW4gID0gZnVuOworCisgIHJldHVy biBGRklfT0s7Cit9CisKKwpkaWZmIC0tZ2l0IGEvc3JjL2Nza3kvZmZpdGFyZ2V0LmggYi9zcmMv Y3NreS9mZml0YXJnZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzcw YWFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Nza3kvZmZpdGFyZ2V0LmgKQEAgLTAsMCArMSw2 MyBAQAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAy MDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMCAg Q29kZVNvdXJjZXJ5CisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBS ZWQgSGF0LCBJbmMuCisKKyAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgQ1NLWS4K KworICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nCisgICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworICAgd2l0aG91 dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLAorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvCisgICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAgIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKworICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorICAgRVhQUkVT UyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORAorICAgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUCisgICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SIE9USEVSIExJQUJJTElUWSwKKyAgIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICAgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICAgREVBTElOR1Mg SU4gVEhFIFNPRlRXQVJFLgorCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjaWZuZGVmIExJQkZG SV9UQVJHRVRfSAorI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKKworI2lmbmRlZiBMSUJGRklfSAor I2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5 b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCisjaWZuZGVmIExJQkZG SV9BU00KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwordHlwZWRlZiBz aWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOworCit0eXBlZGVmIGVudW0gZmZpX2FiaSB7 CisgIEZGSV9GSVJTVF9BQkkgPSAwLAorICBGRklfU1lTViwKKyAgRkZJX0xBU1RfQUJJLAorICBG RklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKK30gZmZpX2FiaTsKKyNlbmRpZgorCisjaWZkZWYg X19DU0tZQUJJVjJfXworI2RlZmluZSBGRklfQVNNX0FSR1JFR19TSVpFIDE2CisjZGVmaW5lIFRS QU1QT0xJTkVfU0laRSAxNgorI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDI0CisjZWxzZQor I2RlZmluZSBGRklfQVNNX0FSR1JFR19TSVpFIDI0CisjZGVmaW5lIFRSQU1QT0xJTkVfU0laRSAy MAorI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDI4CisjZW5kaWYKKworLyogLS0tLSBEZWZp bml0aW9ucyBmb3IgY2xvc3VyZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gKi8KKworI2RlZmluZSBGRklfQ0xPU1VSRVMgMQorI2RlZmluZSBGRklfTkFUSVZFX1JB V19BUEkgMAorI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvY3NreS9zeXN2LlMgYi9zcmMvY3NreS9z eXN2LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYyYTc5NgotLS0gL2Rl di9udWxsCisrKyBiL3NyYy9jc2t5L3N5c3YuUwpAQCAtMCwwICsxLDM3MSBAQAorLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgIHN5c3YuUworCisgICBDU0tZIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNl CisKKyAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZworICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisgICBgYFNvZnR3YXJlJycpLCB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyAgIHdpdGhv dXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwKKyAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0bworICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgICB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CisKKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisgICBpbiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworICAgVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyAgIEVYUFJF U1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRgorICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQKKyAgIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVAorICAgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUiBMSUFCSUxJVFksCisgICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAgIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAgIERFQUxJTkdT IElOIFRIRSBTT0ZUV0FSRS4KKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgTElCRkZJ X0FTTQorI2luY2x1ZGUgPGZmaWNvbmZpZy5oPgorI2luY2x1ZGUgPGZmaS5oPgorCisubWFjcm8g Q1NLWV9GVU5DX1NUQVJUIG5hbWUKKyAudGV4dAorIC5hbGlnbiAyCisgLmdsb2JsIFxuYW1lCisg LnR5cGUgXG5hbWUsIEBmdW5jdGlvbgorIFxuYW1lOgorLmVuZG0KKworI2lmZGVmIF9fQ1NLWUFC SVYyX18KKworIC8qCisgICogYTA6ICAgZm4KKyAgKiBhMTogICAmZWNpZgorICAqIGEyOiAgIGNp Zi0+Ynl0ZXMKKyAgKiBhMzogICBmaWctPmZsYWdzCisgICogc3ArMDogZWNpZi5ydmFsdWUKKyAg Ki8KK0NTS1lfRlVOQ19TVEFSVCBmZmlfY2FsbF9TWVNWCisgLyogU2F2ZSByZWdpc3RlcnMgKi8K KyAuY2ZpX3N0YXJ0cHJvYworIHN1Ymkgc3AsIDI4CisgLmNmaV9kZWZfY2ZhX29mZnNldCAyOAor IHN0dyBhMCwgKHNwLCAweDApCisgLmNmaV9vZmZzZXQgMCwgLTI4Cisgc3R3IGExLCAoc3AsIDB4 NCkKKyAuY2ZpX29mZnNldCAxLCAtMjQKKyBzdHcgYTIsIChzcCwgMHg4KQorIC5jZmlfb2Zmc2V0 IDIsIC0yMAorIHN0dyBhMywgKHNwLCAweEMpCisgLmNmaV9vZmZzZXQgMywgLTE2Cisgc3R3IGww LCAoc3AsIDB4MTApCisgLmNmaV9vZmZzZXQgNCwgLTEyCisgc3R3IGwxLCAoc3AsIDB4MTQpCisg LmNmaV9vZmZzZXQgNSwgLTgKKyBzdHcgbHIsIChzcCwgMHgxOCkKKyAuY2ZpX29mZnNldCAxNSwg LTQKKworIG1vdiBsMCwgc3AKKyAuY2ZpX2RlZl9jZmFfcmVnaXN0ZXIgNAorCisgLyogTWFrZSBy b29tIGZvciBhbGwgb2YgdGhlIG5ldyBhcmdzLiAqLworIHN1YnUgc3AsIHNwLCBhMgorCisgLyog UGxhY2UgYWxsIG9mIHRoZSBmZmlfcHJlcF9hcmdzIGluIHBvc2l0aW9uICovCisgbW92IGEwLCBz cAorIC8qICAgICBhMSBhbHJlYWR5IHNldCAqLworCisgLyogQ2FsbCBmZmlfcHJlcF9hcmdzKHN0 YWNrLCAmZWNpZikgKi8KKyBqc3JpIGZmaV9wcmVwX2FyZ3MKKworIC8qIG1vdmUgZmlyc3QgNCBw YXJhbWV0ZXJzIGluIHJlZ2lzdGVycyAqLworIGxkdyBhMCwgKHNwLCAweDApCisgbGR3IGExLCAo c3AsIDB4NCkKKyBsZHcgYTIsIChzcCwgMHg4KQorIGxkdyBhMywgKHNwLCAweEMpCisKKyAvKiBh bmQgYWRqdXN0IHN0YWNrICovCisgc3VidSBsciwgbDAsIHNwIC8qIGNpZi0+Ynl0ZXMgPT0gbDAg LSBzcCAqLworIGNtcGhzaSBsciwgMTYKKyBtb3ZpIGwxLCAxNgorIG1vdnQgbHIsIGwxCisgYWRk dSBzcCwgc3AsIGxyCisKKyBsZHcgbDEsIChsMCwgMCkgLyogbG9hZCBmbigpIGluIGFkdmFuY2Ug Ki8KKworIC8qIGNhbGwgKGZuKSAoLi4uKSAqLworIGpzciBsMQorCisgLyogUmVtb3ZlIHRoZSBz cGFjZSB3ZSBwdXNoZWQgZm9yIHRoZSBhcmdzICovCisgbW92IHNwLCBsMAorCisgLyogTG9hZCBy MiB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUgKi8KKyBs ZHcgYTIsIChzcCwgMHgxQykKKworIC8qIExvYWQgcjMgd2l0aCB0aGUgcmV0dXJuIHR5cGUgY29k ZSAqLworIGxkdyBhMywgKHNwLCAweEMpCisKKyAvKiBJZiB0aGUgcmV0dXJuIHZhbHVlIHBvaW50 ZXIgaXMgTlVMTCwgYXNzdW1lIG5vIHJldHVybiB2YWx1ZS4gKi8KKyBjbXBuZWkgYTIsIDAKKyBi ZiAuTGVwaWxvZ3VlCisKKyBjbXBuZWkgYTMsIEZGSV9UWVBFX1NUUlVDVAorIGJmIC5MZXBpbG9n dWUKKworIC8qIHJldHVybiBJTlQ2NCAqLworIGNtcG5laSBhMywgRkZJX1RZUEVfU0lOVDY0Cisg YnQgLkxyZXRpbnQKKyAvKiBzdHcgYTAsIChhMiwgMHgwKSBhdCAuTHJldGludCAqLworIHN0dyBh MSwgKGEyLCAweDQpCisKKy5McmV0aW50OgorIC8qIHJldHVybiBJTlQgKi8KKyBzdHcgYTAsIChh MiwgMHgwKQorCisuTGVwaWxvZ3VlOgorIGxkdyBhMCwgKHNwLCAweDApCisgbGR3IGExLCAoc3As IDB4NCkKKyBsZHcgYTIsIChzcCwgMHg4KQorIGxkdyBhMywgKHNwLCAweEMpCisgbGR3IGwwLCAo c3AsIDB4MTApCisgbGR3IGwxLCAoc3AsIDB4MTQpCisgbGR3IGxyLCAoc3AsIDB4MTgpCisgYWRk aSBzcCwgc3AsIDI4CisgcnRzCisgLmNmaV9lbmRwcm9jCisgICAgICAgIC5zaXplICAgIGZmaV9j YWxsX1NZU1YsIC4tZmZpX2NhbGxfU1lTVgorCisKKyAvKgorICAqIHVuc2lnbmVkIGludCBGRklf SElEREVOCisgICogZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoY2xvc3VyZSwgcmVzcHAsIGFyZ3Mp CisgICogICAgICBmZmlfY2xvc3VyZSAqY2xvc3VyZTsKKyAgKiAgICAgIHZvaWQgKipyZXNwcDsK KyAgKiAgICAgIHZvaWQgKmFyZ3M7CisgICovCitDU0tZX0ZVTkNfU1RBUlQgZmZpX2Nsb3N1cmVf U1lTVgorIC5jZmlfc3RhcnRwcm9jCisgbW92IGEyLCBzcAorIGFkZGkgYTEsIHNwLCAxNgorIHN1 Ymkgc3AsIHNwLCAyNAorIC5jZmlfZGVmX2NmYV9vZmZzZXQgNDAKKyBzdHcgYTEsIChzcCwgMHgx MCkKKyAuY2ZpX29mZnNldCAxLCAtMjQKKyBzdHcgbHIsIChzcCwgMHgxNCkKKyAuY2ZpX29mZnNl dCAxNSwgLTIwCisgc3R3IHNwLCAoc3AsIDB4OCkKKyBhZGRpIGExLCBzcCwgOAorIGpzcmkgZmZp X2Nsb3N1cmVfU1lTVl9pbm5lcgorIGxkdyBhMCwgKHNwLCAweDApCisgLyoKKyAgKiBpZiBGRklf VFlQRV9TSU5UNjQsIG5lZWQgYTEuCisgICogaWYgRkZJX1RZUEVfSU5ULCBpZ25vcmUgYTEuCisg ICovCisgbGR3IGExLCAoc3AsIDB4NCkKKworIGxkdyBsciwgKHNwLCAweDE0KQorIGFkZGkgc3As IHNwLCA0MAorIHJ0cworIC5jZmlfZW5kcHJvYworICAgICAgICAuc2l6ZSAgICBmZmlfY2xvc3Vy ZV9TWVNWLCAuLWZmaV9jbG9zdXJlX1NZU1YKKworQ1NLWV9GVU5DX1NUQVJUIGZmaV9jc2t5X3Ry YW1wb2xpbmUKKyBzdWJpIHNwLCBzcCwgMTYKKyBzdHcgYTAsIChzcCwgMHgwKQorIHN0dyBhMSwg KHNwLCAweDQpCisgc3R3IGEyLCAoc3AsIDB4OCkKKyBzdHcgYTMsIChzcCwgMHhDKQorIGxydyBh MCwgWy5MY3R4XQorIGxydyBhMSwgWy5MZnVuXQorIGptcCBhMQorLkxjdHg6CisgbW92IGEwLCBh MAorIG1vdiBhMCwgYTAKKy5MZnVuOgorCisgICAgICAgIC5zaXplICAgIGZmaV9jc2t5X3RyYW1w b2xpbmUsIC4tZmZpX2Nza3lfdHJhbXBvbGluZQorCitDU0tZX0ZVTkNfU1RBUlQgZmZpX2Nza3lf Y2FjaGVmbHVzaAorIG1vdiB0MCwgcjcKKyBtb3ZpIHI3LCAxMjMKKyB0cmFwIDAKKyBtb3Ygcjcs IHQwCisgcnRzCisKKyAgICAgICAgLnNpemUgICAgZmZpX2Nza3lfY2FjaGVmbHVzaCwgLi1mZmlf Y3NreV9jYWNoZWZsdXNoCisKKyNlbHNlIC8qICFfX0NTS1lBQklWMl9fICovCisKKyAvKgorICAq IGEwOiAgIGZuCisgICogYTE6ICAgJmVjaWYKKyAgKiBhMjogICBjaWYtPmJ5dGVzCisgICogYTM6 ICAgZmlnLT5mbGFncworICAqIGE0OiAgIGVjaWYucnZhbHVlCisgICovCitDU0tZX0ZVTkNfU1RB UlQgZmZpX2NhbGxfU1lTVgorIC8qIFNhdmUgcmVnaXN0ZXJzICovCisgLmNmaV9zdGFydHByb2MK KyBzdWJpIHNwLCAzMgorIHN1Ymkgc3AsIDgKKyAuY2ZpX2RlZl9jZmFfb2Zmc2V0IDQwCisgc3R3 IGEwLCAoc3AsIDB4MCkKKyAuY2ZpX29mZnNldCAyLCAtNDAKKyBzdHcgYTEsIChzcCwgMHg0KQor IC5jZmlfb2Zmc2V0IDMsIC0zNgorIHN0dyBhMiwgKHNwLCAweDgpCisgLmNmaV9vZmZzZXQgNCwg LTMyCisgc3R3IGEzLCAoc3AsIDB4QykKKyAuY2ZpX29mZnNldCA1LCAtMjgKKyBzdHcgYTQsIChz cCwgMHgxMCkKKyAuY2ZpX29mZnNldCA2LCAtMjQKKyBzdHcgYTUsIChzcCwgMHgxNCkKKyAuY2Zp X29mZnNldCA3LCAtMjAKKyBzdHcgbDAsIChzcCwgMHgxOCkKKyAuY2ZpX29mZnNldCA4LCAtMTYK KyBzdHcgbDEsIChzcCwgMHgxQykKKyAuY2ZpX29mZnNldCA5LCAtMTIKKyBzdHcgbHIsIChzcCwg MHgyMCkKKyAuY2ZpX29mZnNldCAxNSwgLTgKKworIG1vdiBsMCwgc3AKKyAuY2ZpX2RlZl9jZmFf cmVnaXN0ZXIgOAorCisgLyogTWFrZSByb29tIGZvciBhbGwgb2YgdGhlIG5ldyBhcmdzLiAqLwor IHN1YnUgc3AsIHNwLCBhMgorCisgLyogUGxhY2UgYWxsIG9mIHRoZSBmZmlfcHJlcF9hcmdzIGlu IHBvc2l0aW9uICovCisgbW92IGEwLCBzcAorIC8qICAgICBhMSBhbHJlYWR5IHNldCAqLworCisg LyogQ2FsbCBmZmlfcHJlcF9hcmdzKHN0YWNrLCAmZWNpZikgKi8KKyBqc3JpIGZmaV9wcmVwX2Fy Z3MKKworIC8qIG1vdmUgZmlyc3QgNCBwYXJhbWV0ZXJzIGluIHJlZ2lzdGVycyAqLworIGxkdyBh MCwgKHNwLCAweDApCisgbGR3IGExLCAoc3AsIDB4NCkKKyBsZHcgYTIsIChzcCwgMHg4KQorIGxk dyBhMywgKHNwLCAweEMpCisgbGR3IGE0LCAoc3AsIDB4MTApCisgbGR3IGE1LCAoc3AsIDB4MTQp CisKKyAvKiBhbmQgYWRqdXN0IHN0YWNrICovCisgbW92IGxyLCBsMAorIHN1YnUgbHIsIHNwICAv KiBjaWYtPmJ5dGVzID09IGwwIC0gc3AgKi8KKyBtb3ZpIGwxLCAyNAorIGNtcGhzIGxyLCBsMQor IG1vdnQgbHIsIGwxCisgYWRkdSBzcCwgc3AsIGxyCisKKyBsZHcgbDEsIChsMCwgMCkgLyogbG9h ZCBmbigpIGluIGFkdmFuY2UgKi8KKworIC8qIGNhbGwgKGZuKSAoLi4uKSAqLworIGpzciBsMQor CisgLyogUmVtb3ZlIHRoZSBzcGFjZSB3ZSBwdXNoZWQgZm9yIHRoZSBhcmdzICovCisgbW92IHNw LCBsMAorCisgLyogTG9hZCByMiB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSBy ZXR1cm4gdmFsdWUgKi8KKyBsZHcgYTIsIChzcCwgMHgxMCkKKworIC8qIExvYWQgcjMgd2l0aCB0 aGUgcmV0dXJuIHR5cGUgY29kZSAqLworIGxkdyBhMywgKHNwLCAweEMpCisKKyAvKiBJZiB0aGUg cmV0dXJuIHZhbHVlIHBvaW50ZXIgaXMgTlVMTCwgYXNzdW1lIG5vIHJldHVybiB2YWx1ZS4gKi8K KyBjbXBuZWkgYTIsIDAKKyBiZiAuTGVwaWxvZ3VlCisKKyBjbXBuZWkgYTMsIEZGSV9UWVBFX1NU UlVDVAorIGJmIC5MZXBpbG9ndWUKKworIC8qIHJldHVybiBJTlQ2NCAqLworIGNtcG5laSBhMywg RkZJX1RZUEVfU0lOVDY0CisgYnQgLkxyZXRpbnQKKyAvKiBzdHcgYTAsIChhMiwgMHgwKSBhdCAu THJldGludCAqLworIHN0dyBhMSwgKGEyLCAweDQpCisKKy5McmV0aW50OgorIC8qIHJldHVybiBJ TlQgKi8KKyBzdHcgYTAsIChhMiwgMHgwKQorCisuTGVwaWxvZ3VlOgorIGxkdyBhMCwgKHNwLCAw eDApCisgbGR3IGExLCAoc3AsIDB4NCkKKyBsZHcgYTIsIChzcCwgMHg4KQorIGxkdyBhMywgKHNw LCAweEMpCisgbGR3IGE0LCAoc3AsIDB4MTApCisgbGR3IGE1LCAoc3AsIDB4MTQpCisgbGR3IGww LCAoc3AsIDB4MTgpCisgbGR3IGwxLCAoc3AsIDB4MUMpCisgbGR3IGxyLCAoc3AsIDB4MjApCisg YWRkaSBzcCwgc3AsIDMyCisgYWRkaSBzcCwgc3AsIDgKKyBydHMKKyAuY2ZpX2VuZHByb2MKKwor ICAgICAgICAuc2l6ZSAgICBmZmlfY2FsbF9TWVNWLCAuLWZmaV9jYWxsX1NZU1YKKworCisgLyoK KyAgKiB1bnNpZ25lZCBpbnQgRkZJX0hJRERFTgorICAqIGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIg KGNsb3N1cmUsIHJlc3BwLCBhcmdzKQorICAqICAgICAgZmZpX2Nsb3N1cmUgKmNsb3N1cmU7Cisg ICogICAgICB2b2lkICoqcmVzcHA7CisgICogICAgICB2b2lkICphcmdzOworICAqLworQ1NLWV9G VU5DX1NUQVJUIGZmaV9jbG9zdXJlX1NZU1YKKyAuY2ZpX3N0YXJ0cHJvYworIG1vdiBhMiwgc3AK KyBtb3YgYTEsIHNwCisgYWRkaSBhMSwgMjQKKyBzdWJpIHNwLCBzcCwgMjQKKyAuY2ZpX2RlZl9j ZmFfb2Zmc2V0IDQ4Cisgc3R3IGExLCAoc3AsIDB4MTApCisgLmNmaV9vZmZzZXQgMywgLTMyCisg c3R3IGxyLCAoc3AsIDB4MTQpCisgLmNmaV9vZmZzZXQgMTUsIC0yOAorIHN0dyBzcCwgKHNwLCAw eDgpCisgbW92IGExLCBzcAorIGFkZGkgYTEsIDgKKyBqc3JpIGZmaV9jbG9zdXJlX1NZU1ZfaW5u ZXIKKyBsZHcgYTAsIChzcCwgMHgwKQorIC8qCisgICogaWYgRkZJX1RZUEVfU0lOVDY0LCBuZWVk IGExLgorICAqIGlmIEZGSV9UWVBFX0lOVCwgaWdub3JlIGExLgorICAqLworIGxkdyBhMSwgKHNw LCAweDQpCisKKyBsZHcgbHIsIChzcCwgMHgxNCkKKyBhZGRpIHNwLCBzcCwgMjQKKyBhZGRpIHNw LCBzcCwgMjQKKyBydHMKKyAuY2ZpX2VuZHByb2MKKworICAgICAgICAuc2l6ZSAgICBmZmlfY2xv c3VyZV9TWVNWLCAuLWZmaV9jbG9zdXJlX1NZU1YKKworQ1NLWV9GVU5DX1NUQVJUIGZmaV9jc2t5 X3RyYW1wb2xpbmUKKyBzdWJpIHNwLCAyNAorIHN0dyBhMCwgKHNwLCAweDApCisgc3R3IGExLCAo c3AsIDB4NCkKKyBzdHcgYTIsIChzcCwgMHg4KQorIHN0dyBhMywgKHNwLCAweEMpCisgc3R3IGE0 LCAoc3AsIDB4MTApCisgc3R3IGE1LCAoc3AsIDB4MTQpCisgbHJ3IGEwLCBbLkxjdHhdCisgbHJ3 IGExLCBbLkxmdW5dCisgam1wIGExCisuTGN0eDoKKyBtb3YgYTAsIGEwCisgbW92IGEwLCBhMAor LkxmdW46CisKKyAgICAgICAgLnNpemUgICAgZmZpX2Nza3lfdHJhbXBvbGluZSwgLi1mZmlfY3Nr eV90cmFtcG9saW5lCisKK0NTS1lfRlVOQ19TVEFSVCBmZmlfY3NreV9jYWNoZWZsdXNoCisgbHJ3 IHIxLCAxMjMKKyB0cmFwIDAKKyBydHMKKworICAgICAgICAuc2l6ZSAgICBmZmlfY3NreV9jYWNo ZWZsdXNoLCAuLWZmaV9jc2t5X2NhY2hlZmx1c2gKKworI2VuZGlmIC8qIF9fQ1NLWUFCSVYyX18g Ki8KLS0gCjIuMTcuMQoK