From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-118.freemail.mail.aliyun.com (out30-118.freemail.mail.aliyun.com [115.124.30.118]) by sourceware.org (Postfix) with ESMTPS id 6A4B63858015 for ; Thu, 11 Jan 2024 14:11:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6A4B63858015 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.alibaba.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6A4B63858015 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=115.124.30.118 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704982284; cv=none; b=OTJQL9u/T9Lr0Gii592oqIC3YX9UYkla6RTKkdJuAkdnbGs7uli0R+XnBvnZXBQN7Tsyf2dYPxdE1M+ZNiWW91IF3c1wVUdUoEKkPfelzD5Lpy+W609GL0sk9T+BkXIAMnJ79DaOduFTv4It730rQA8nvaBmfXEJGlnrrnQWbEU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704982284; c=relaxed/simple; bh=DJulaAvgGQ3dhSs9AoEHTkkf/0mmf5uHaajFfzjHwhU=; h=Date:From:To:Message-ID:Subject:MIME-Version; b=KLrLHY/vfxau16v53383OQ7XlUMHuAD73bslMtxR9S3sHKtJNvZKkSNCZLCCHMLFoNJ8pTXbaEyJUiaVtzDk9TIZjuIEKXuVpvg40/r8M92Z1Kxxb/SVNnm+Useez8MpLeAB+GMqveS564MeQsiQ4FrtUeNiC2/kH3RFRV8f70I= ARC-Authentication-Results: i=1; server2.sourceware.org X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R541e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046059;MF=cooper.joshua@linux.alibaba.com;NM=1;PH=DW;RN=10;SR=0;TI=W4_0.2.3_v5ForWebDing_2125303E_1704982247010_o7001c65j; Received: from WS-web (cooper.joshua@linux.alibaba.com[W4_0.2.3_v5ForWebDing_2125303E_1704982247010_o7001c65j]) at Thu, 11 Jan 2024 22:11:11 +0800 Date: Thu, 11 Jan 2024 22:11:11 +0800 From: "joshua" To: "juzhe.zhong@rivai.ai" , "gcc-patches" Cc: "Jim Wilson" , "palmer" , "andrew" , "philipp.tomsich" , "jeffreyalaw" , "christoph.muellner" , "jinma" , "cooper.qu" Reply-To: "joshua" Message-ID: Subject: =?UTF-8?B?UmXvvJpSZe+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVj?= =?UTF-8?B?dG9yLXNwZWNpZmljIGludHJpbnNpY3Mu?= X-Mailer: [Alimail-Mailagent revision 79][W4_0.2.3][v5ForWebDing][Chrome] MIME-Version: 1.0 x-aliyun-im-through: {"mailThroughImNew":true} References: x-aliyun-mail-creator: W4_0.2.3_v5ForWebDing_M3LTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNy4wLjAuMCBTYWZhcmkvNTM3LjM2vN In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-18.8 required=5.0 tests=BAYES_00,BODY_8BITS,ENV_AND_HDR_SPF_MATCH,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL 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: SXMgdGhlIHBhdGNoIHdpdGggIVRBUkdFVF9YVEhFQURWRUNUT1IgZm9yIHNleHQvemV4dApwYXR0 ZXJucyByZW1vdmVkIE9LIHRvIGNvbW1pdD8KaHR0cHM6Ly9nY2MuZ251Lm9yZy9waXBlcm1haWwv Z2NjLXBhdGNoZXMvMjAyNC1KYW51YXJ5LzY0MjY1Ny5odG1sCgoKCgotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K5Y+R5Lu2 5Lq677yaanV6aGUuemhvbmdAcml2YWkuYWkgPGp1emhlLnpob25nQHJpdmFpLmFpPgrlj5HpgIHm l7bpl7TvvJoyMDI05bm0MeaciDEx5pelKOaYn+acn+WbmykgMTg6NTYK5pS25Lu25Lq677yaImNv b3Blci5qb3NodWEiPGNvb3Blci5qb3NodWFAbGludXguYWxpYmFiYS5jb20+OyAiZ2NjLXBhdGNo ZXMiPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPgrmioTjgIDpgIHvvJpKaW0gV2lsc29uPGppbS53 aWxzb24uZ2NjQGdtYWlsLmNvbT47IHBhbG1lcjxwYWxtZXJAZGFiYmVsdC5jb20+OyBhbmRyZXc8 YW5kcmV3QHNpZml2ZS5jb20+OyAicGhpbGlwcC50b21zaWNoIjxwaGlsaXBwLnRvbXNpY2hAdnJ1 bGwuZXU+OyBqZWZmcmV5YWxhdzxqZWZmcmV5YWxhd0BnbWFpbC5jb20+OyAiY2hyaXN0b3BoLm11 ZWxsbmVyIjxjaHJpc3RvcGgubXVlbGxuZXJAdnJ1bGwuZXU+OyBqaW5tYTxqaW5tYUBsaW51eC5h bGliYWJhLmNvbT47ICJjb29wZXIucXUiPGNvb3Blci5xdUBsaW51eC5hbGliYWJhLmNvbT4K5Li7 44CA6aKY77yaUmU6IFJl77yaW1BBVENIIHY1XSBSSVNDLVY6IEFkZCBzdXBwb3J0IGZvciB4dGhl YWR2ZWN0b3Itc3BlY2lmaWMgaW50cmluc2ljcy4KCgpZZXMuCgoKanV6aGUuemhvbmdAcml2YWku YWkKCsKgCuWPkeS7tuS6uu+8msKgam9zaHVhCuWPkemAgeaXtumXtO+8msKgMjAyNC0wMS0xMcKg MTg6NTQK5pS25Lu25Lq677yawqBqdXpoZS56aG9uZ0ByaXZhaS5haTsgZ2NjLXBhdGNoZXMK5oqE 6YCB77yawqBKaW0gV2lsc29uOyBwYWxtZXI7IGFuZHJldzsgcGhpbGlwcC50b21zaWNoOyBqZWZm cmV5YWxhdzsgY2hyaXN0b3BoLm11ZWxsbmVyOyBqaW5tYTsgY29vcGVyLnF1CuS4u+mimO+8msKg UmXvvJpbUEFUQ0ggdjVdIFJJU0MtVjogQWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1zcGVj aWZpYyBpbnRyaW5zaWNzLgoKRG8geW91IG1lYW4gcmVtb3ZpbmcgVEFSR0VUX1hUSEVBRFZFQ1RP UiBmb3Igc2V4dC96ZXh0IHBhdHRlcm5zCmFuZCB0aGVuIHJlc2VuZGluZyB0aGXCoCAiUklTQy1W OiBIYW5kbGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBYVGhlYWR2ZWN0b3IKYW5kIFZlY3RvciIgcGF0 Y2g/CsKgCsKgCsKgCsKgCsKgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQrlj5Hku7bkurrvvJpqdXpoZS56aG9uZ0ByaXZh aS5haSA8anV6aGUuemhvbmdAcml2YWkuYWk+CuWPkemAgeaXtumXtO+8mjIwMjTlubQx5pyIMTHm l6Uo5pif5pyf5ZubKSAxNzo1NwrmlLbku7bkurrvvJoiY29vcGVyLmpvc2h1YSI8Y29vcGVyLmpv c2h1YUBsaW51eC5hbGliYWJhLmNvbT47ICJnY2MtcGF0Y2hlcyI8Z2NjLXBhdGNoZXNAZ2NjLmdu dS5vcmc+CuaKhOOAgOmAge+8mkppbSBXaWxzb248amltLndpbHNvbi5nY2NAZ21haWwuY29tPjsg cGFsbWVyPHBhbG1lckBkYWJiZWx0LmNvbT47IGFuZHJldzxhbmRyZXdAc2lmaXZlLmNvbT47ICJw aGlsaXBwLnRvbXNpY2giPHBoaWxpcHAudG9tc2ljaEB2cnVsbC5ldT47IGplZmZyZXlhbGF3PGpl ZmZyZXlhbGF3QGdtYWlsLmNvbT47ICJjaHJpc3RvcGgubXVlbGxuZXIiPGNocmlzdG9waC5tdWVs bG5lckB2cnVsbC5ldT47ICJjb29wZXIuam9zaHVhIjxjb29wZXIuam9zaHVhQGxpbnV4LmFsaWJh YmEuY29tPjsgamlubWE8amlubWFAbGludXguYWxpYmFiYS5jb20+OyAiY29vcGVyLnF1Ijxjb29w ZXIucXVAbGludXguYWxpYmFiYS5jb20+CuS4u+OAgOmimO+8mlJlOiBbUEFUQ0ggdjVdIFJJU0Mt VjogQWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1zcGVjaWZpYyBpbnRyaW5zaWNzLgrCoArC oApMR1RNLiBDb3VsZCB5b3UgcmVzZW5kIHRoZSBwYXRjaCAiUklTQy1WOiBIYW5kbGUgZGlmZmVy ZW5jZXMgYmV0d2VlbiBYVGhlYWR2ZWN0b3IgYW5kIFZlY3RvcgrCoArCoApUaGFua3MuCmp1emhl Lnpob25nQHJpdmFpLmFpCsKgCsKgCkZyb206wqBKdW4gU2hhIChKb3NodWEpCkRhdGU6wqAyMDI0 LTAxLTExwqAxNzo1MgpUbzrCoGdjYy1wYXRjaGVzCkNDOsKgamltLndpbHNvbi5nY2M7IHBhbG1l cjsgYW5kcmV3OyBwaGlsaXBwLnRvbXNpY2g7IGplZmZyZXlhbGF3OyBjaHJpc3RvcGgubXVlbGxu ZXI7IGp1emhlLnpob25nOyBKdW4gU2hhIChKb3NodWEpOyBKaW4gTWE7IFhpYW5taWFvIFF1ClN1 YmplY3Q6wqBbUEFUQ0ggdjVdIFJJU0MtVjogQWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1z cGVjaWZpYyBpbnRyaW5zaWNzLgrCoApUaGlzIHBhdGNoIG9ubHkgaW52b2x2ZXMgdGhlIGdlbmVy YXRpb24gb2YgeHRoZWFkdmVjdG9yCnNwZWNpYWwgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgYW5k IHZleHQgaW5zdHJ1Y3Rpb25zLgrCoApnY2MvQ2hhbmdlTG9nOgrCoAoJKiBjb25maWcvcmlzY3Yv cmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjCgkoY2xhc3MgdGhfbG9hZHN0b3JlX3dpZHRo KTogRGVmaW5lIG5ldyBidWlsdGluIGJhc2VzLgoJKGNsYXNzIHRoX2V4dHJhY3QpOiBEZWZpbmUg bmV3IGJ1aWx0aW4gYmFzZXMuCgkoQkFTRSk6IERlZmluZSBuZXcgYnVpbHRpbiBiYXNlcy4KCSog Y29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5oOgoJRGVmaW5lIG5ldyBi dWlsdGluIGNsYXNzLgoJKiBjb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBl cy5jYwoJKHN0cnVjdCB0aF9sb2Fkc3RvcmVfd2lkdGhfZGVmKTogRGVmaW5lIG5ldyBidWlsdGlu IHNoYXBlcy4KCShzdHJ1Y3QgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGhfZGVmKToKCURlZmlu ZSBuZXcgYnVpbHRpbiBzaGFwZXMuCgkoc3RydWN0IHRoX2V4dHJhY3RfZGVmKTogRGVmaW5lIG5l dyBidWlsdGluIHNoYXBlcy4KCShTSEFQRSk6IERlZmluZSBuZXcgYnVpbHRpbiBzaGFwZXMuCgkq IGNvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmg6CglEZWZpbmUgbmV3 IGJ1aWx0aW4gc2hhcGVzLgoJKiBjb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmNj IChERUZfUlZWX0ZVTkNUSU9OKToKCSogY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlu cy5oIChlbnVtIHJlcXVpcmVkX2V4dCk6Cgkoc3RydWN0IGZ1bmN0aW9uX2dyb3VwX2luZm8pOgoJ KiBjb25maWcvcmlzY3YvdC1yaXNjdjogQWRkIHRoZWFkLXZlY3Rvci1idWlsdGlucy1mdW5jdGlv bnMuZGVmCgkqIGNvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQKCShAcHJlZF9tb3Zfd2lkdGg8 dmxtZW1fb3BfYXR0cj48bW9kZT4pOiBBZGQgbmV3IHBhdHRlcm5zLgoJKCpwcmVkX21vdl93aWR0 aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLgoJKEBwcmVkX3N0b3JlX3dpZHRoPHZs bWVtX29wX2F0dHI+PG1vZGU+KTogTGlrZXdpc2UuCgkoQHByZWRfc3RyaWRlZF9sb2FkX3dpZHRo PHZsbWVtX29wX2F0dHI+PG1vZGU+KTogTGlrZXdpc2UuCgkoQHByZWRfc3RyaWRlZF9zdG9yZV93 aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLgoJKEBwcmVkX2luZGV4ZWRfbG9h ZF93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLgoJKEBwcmVkX2luZGV4ZWRf PHZsbWVtX29yZGVyX2F0dHI+c3RvcmVfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4pOgoJKEBw cmVkX3RoX2V4dHJhY3Q8bW9kZT4pOiBMaWtld2lzZS4KCSgqcHJlZF90aF9leHRyYWN0PG1vZGU+ KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rp b25zLmRlZjogTmV3IGZpbGUuCsKgCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgrCoAoJKiBnY2Mu dGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxiLXZzYi5jOiBOZXcgdGVzdC4KCSogZ2Nj LnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYnUtdnNiLmM6IE5ldyB0ZXN0LgoJKiBn Y2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxoLXZzaC5jOiBOZXcgdGVzdC4KCSog Z2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmM6IE5ldyB0ZXN0LgoJ KiBnY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3LXZzdy5jOiBOZXcgdGVzdC4K CSogZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsd3UtdnN3LmM6IE5ldyB0ZXN0 LgoJCkNvLWF1dGhvcmVkLWJ5OiBKaW4gTWEgPGppbm1hQGxpbnV4LmFsaWJhYmEuY29tPgpDby1h dXRob3JlZC1ieTogWGlhbm1pYW8gUXUgPGNvb3Blci5xdUBsaW51eC5hbGliYWJhLmNvbT4KQ28t YXV0aG9yZWQtYnk6IENocmlzdG9waCBNw7xsbG5lciA8Y2hyaXN0b3BoLm11ZWxsbmVyQHZydWxs LmV1PgotLS0KIC4uLi9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuY2PCoMKgwqDC oMKgIHwgMTM5ICsrKysrKysrKysKIC4uLi9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFz ZXMuaMKgwqDCoMKgwqDCoCB8wqAgMzEgKysrCiAuLi4vcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0 aW5zLXNoYXBlcy5jY8KgwqDCoMKgIHwgMTYwICsrKysrKysrKysrCiAuLi4vcmlzY3YvcmlzY3Yt dmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5owqDCoMKgwqDCoCB8wqDCoCAzICsKIGdjYy9jb25maWcv cmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmNjwqDCoMKgwqAgfMKgIDcwICsrKysrCiBnY2Mv Y29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5owqDCoMKgwqDCoCB8wqDCoCAzICsK IGdjYy9jb25maWcvcmlzY3YvdC1yaXNjdsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqDCoCAxICsKIC4uLi9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVu Y3Rpb25zLmRlZiB8wqAgMzkgKysrCiBnY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci5tZMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMjUwICsrKysrKysrKysrKysrKysrKwogLi4uL3Jp c2N2L3J2di94dGhlYWR2ZWN0b3IvdmxiLXZzYi5jwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA2OCAr KysrKwogLi4uL3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxidS12c2IuY8KgwqDCoMKgwqDCoMKg wqAgfMKgIDY4ICsrKysrCiAuLi4vcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmPCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDY4ICsrKysrCiAuLi4vcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92 bGh1LXZzaC5jwqDCoMKgwqDCoMKgwqDCoCB8wqAgNjggKysrKysKIC4uLi9yaXNjdi9ydnYveHRo ZWFkdmVjdG9yL3Zsdy12c3cuY8KgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNjggKysrKysKIC4uLi9y aXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsd3UtdnN3LmPCoMKgwqDCoMKgwqDCoMKgIHzCoCA2OCAr KysrKwogMTUgZmlsZXMgY2hhbmdlZCwgMTEwNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRl ZgogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYv eHRoZWFkdmVjdG9yL3ZsYi12c2IuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYnUtdnNiLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92 bGgtdnNoLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L3h0aGVhZHZlY3Rvci92bGh1LXZzaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3LXZzdy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2 ZWN0b3Ivdmx3dS12c3cuYwrCoApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12 ZWN0b3ItYnVpbHRpbnMtYmFzZXMuY2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1i dWlsdGlucy1iYXNlcy5jYwppbmRleCAxYWE2ZTNjNjY2NS4uYjZmNmU0ZmYzN2UgMTAwNjQ0Ci0t LSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjCisrKyBi L2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjCkBAIC0yMTQx LDYgKzIxNDEsODMgQEAgcHVibGljOgrCoMKgIH0KIH07CiAKKy8qIEltcGxlbWVudHMKKyAqIHRo LnZsKGIvaC93KVt1XS52L3RoLnZzKGIvaC93KVt1XS52L3RoLnZscyhiL2gvdylbdV0udi90aC52 c3MoYi9oL3cpW3VdLnYvCisgKiB0aC52bHgoYi9oL3cpW3VdLnYvdGgudnNbdV14KGIvaC93KS52 CisgKiBjb2RlZ2VuLsKgICovCit0ZW1wbGF0ZTxib29sIFNUT1JFX1AsIGxzdF90eXBlIExTVF9U WVBFLCBpbnQgVU5TUEVDPgorY2xhc3MgdGhfbG9hZHN0b3JlX3dpZHRoIDogcHVibGljIGZ1bmN0 aW9uX2Jhc2UKK3sKK3B1YmxpYzoKK8KgIGJvb2wgYXBwbHlfdGFpbF9wb2xpY3lfcCAoKSBjb25z dCBvdmVycmlkZSB7IHJldHVybiAhU1RPUkVfUDsgfQorwqAgYm9vbCBhcHBseV9tYXNrX3BvbGlj eV9wICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFTVE9SRV9QOyB9CisKK8KgIHVuc2lnbmVk IGludCBjYWxsX3Byb3BlcnRpZXMgKGNvbnN0IGZ1bmN0aW9uX2luc3RhbmNlICYpIGNvbnN0IG92 ZXJyaWRlCivCoCB7CivCoMKgwqAgaWYgKFNUT1JFX1ApCivCoMKgwqDCoMKgIHJldHVybiBDUF9X UklURV9NRU1PUlk7CivCoMKgwqAgZWxzZQorwqDCoMKgwqDCoCByZXR1cm4gQ1BfUkVBRF9NRU1P Ulk7CivCoCB9CisKK8KgIGJvb2wgY2FuX2JlX292ZXJsb2FkZWRfcCAoZW51bSBwcmVkaWNhdGlv bl90eXBlX2luZGV4IHByZWQpIGNvbnN0IG92ZXJyaWRlCivCoCB7CivCoMKgwqAgaWYgKFNUT1JF X1AgfHwgTFNUX1RZUEUgPT0gTFNUX0lOREVYRUQpCivCoMKgwqDCoMKgIHJldHVybiB0cnVlOwor wqDCoMKgIHJldHVybiBwcmVkICE9IFBSRURfVFlQRV9ub25lOworwqAgfQorCivCoCBydHggZXhw YW5kIChmdW5jdGlvbl9leHBhbmRlciAmZSkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsKK8KgwqDCoCBn Y2NfYXNzZXJ0IChUQVJHRVRfWFRIRUFEVkVDVE9SKTsKK8KgwqDCoCBpZiAoTFNUX1RZUEUgPT0g TFNUX0lOREVYRUQpCivCoMKgwqDCoMKgIHsKKwlpZiAoU1RPUkVfUCkKKwnCoCByZXR1cm4gZS51 c2VfZXhhY3RfaW5zbiAoCisJwqDCoMKgIGNvZGVfZm9yX3ByZWRfaW5kZXhlZF9zdG9yZV93aWR0 aCAoVU5TUEVDLCBVTlNQRUMsCisJCQkJCcKgwqDCoMKgwqDCoCBlLnZlY3Rvcl9tb2RlICgpKSk7 CisJZWxzZQorCcKgIHJldHVybiBlLnVzZV9leGFjdF9pbnNuICgKKwnCoMKgwqAgY29kZV9mb3Jf cHJlZF9pbmRleGVkX2xvYWRfd2lkdGggKFVOU1BFQywgZS52ZWN0b3JfbW9kZSAoKSkpOworwqDC oMKgwqDCoCB9CivCoMKgwqAgZWxzZSBpZiAoTFNUX1RZUEUgPT0gTFNUX1NUUklERUQpCivCoMKg wqDCoMKgIHsKKwlpZiAoU1RPUkVfUCkKKwnCoCByZXR1cm4gZS51c2VfY29udGlndW91c19zdG9y ZV9pbnNuICgKKwnCoMKgwqAgY29kZV9mb3JfcHJlZF9zdHJpZGVkX3N0b3JlX3dpZHRoIChVTlNQ RUMsIGUudmVjdG9yX21vZGUgKCkpKTsKKwllbHNlCisJwqAgcmV0dXJuIGUudXNlX2NvbnRpZ3Vv dXNfbG9hZF9pbnNuICgKKwnCoMKgwqAgY29kZV9mb3JfcHJlZF9zdHJpZGVkX2xvYWRfd2lkdGgg KFVOU1BFQywgZS52ZWN0b3JfbW9kZSAoKSkpOworwqDCoMKgwqDCoCB9CivCoMKgwqAgZWxzZQor wqDCoMKgwqDCoCB7CisJaWYgKFNUT1JFX1ApCisJwqAgcmV0dXJuIGUudXNlX2NvbnRpZ3VvdXNf c3RvcmVfaW5zbiAoCisJwqDCoMKgIGNvZGVfZm9yX3ByZWRfc3RvcmVfd2lkdGggKFVOU1BFQywg ZS52ZWN0b3JfbW9kZSAoKSkpOworCWVsc2UKKwnCoCByZXR1cm4gZS51c2VfY29udGlndW91c19s b2FkX2luc24gKAorCcKgwqDCoCBjb2RlX2Zvcl9wcmVkX21vdl93aWR0aCAoVU5TUEVDLCBlLnZl Y3Rvcl9tb2RlICgpKSk7CivCoMKgwqDCoMKgIH0KK8KgIH0KK307CisKKy8qIEltcGxlbWVudHMg dmV4dC54LnYuwqAgKi8KK2NsYXNzIHRoX2V4dHJhY3QgOiBwdWJsaWMgZnVuY3Rpb25fYmFzZQor eworcHVibGljOgorwqAgYm9vbCBhcHBseV92bF9wICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu IGZhbHNlOyB9CivCoCBib29sIGFwcGx5X3RhaWxfcG9saWN5X3AgKCkgY29uc3Qgb3ZlcnJpZGUg eyByZXR1cm4gZmFsc2U7IH0KK8KgIGJvb2wgYXBwbHlfbWFza19wb2xpY3lfcCAoKSBjb25zdCBv dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorwqAgYm9vbCB1c2VfbWFza19wcmVkaWNhdGlvbl9w ICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CivCoCBib29sIGhhc19tZXJnZV9v cGVyYW5kX3AgKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworwqAgcnR4IGV4 cGFuZCAoZnVuY3Rpb25fZXhwYW5kZXIgJmUpIGNvbnN0IG92ZXJyaWRlCivCoCB7CivCoMKgwqAg Z2NjX2Fzc2VydCAoVEFSR0VUX1hUSEVBRFZFQ1RPUik7CivCoMKgwqAgcmV0dXJuIGUudXNlX2V4 YWN0X2luc24gKGNvZGVfZm9yX3ByZWRfdGhfZXh0cmFjdCAoZS52ZWN0b3JfbW9kZSAoKSkpOwor wqAgfQorfTsKKwogLyogQmVsb3cgaW1wbGVtZW50cyBhcmUgdmVjdG9yIGNyeXB0byAqLwogLyog SW1wbGVtZW50cyB2YW5kbi5bdnYsdnhdICovCiBjbGFzcyB2YW5kbiA6IHB1YmxpYyBmdW5jdGlv bl9iYXNlCkBAIC0yNjAzLDYgKzI2ODAsMzcgQEAgc3RhdGljIENPTlNURVhQUiBjb25zdCBzZWdf aW5kZXhlZF9sb2FkPFVOU1BFQ19PUkRFUkVEPiB2bG94c2VnX29iajsKIHN0YXRpYyBDT05TVEVY UFIgY29uc3Qgc2VnX2luZGV4ZWRfc3RvcmU8VU5TUEVDX1VOT1JERVJFRD4gdnN1eHNlZ19vYmo7 CiBzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHNlZ19pbmRleGVkX3N0b3JlPFVOU1BFQ19PUkRFUkVE PiB2c294c2VnX29iajsKIHN0YXRpYyBDT05TVEVYUFIgY29uc3QgdmxzZWdmZiB2bHNlZ2ZmX29i ajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1Rf VU5JVF9TVFJJREUsIFVOU1BFQ19USF9WTEI+IHZsYl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhf VkxCVT4gdmxidV9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0 aDxmYWxzZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhfVkxIPiB2bGhfb2JqOworc3RhdGlj IENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9VTklUX1NUUklE RSwgVU5TUEVDX1RIX1ZMSFU+IHZsaHVfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9s b2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMVz4gdmx3 X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBM U1RfVU5JVF9TVFJJREUsIFVOU1BFQ19USF9WTFdVPiB2bHd1X29iajsKK3N0YXRpYyBDT05TVEVY UFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9VTklUX1NUUklERSwgVU5TUEVD X1RIX1ZMQj4gdnNiX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dp ZHRoPHRydWUsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMSD4gdnNoX29iajsKK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9VTklUX1NUUklE RSwgVU5TUEVDX1RIX1ZMVz4gdnN3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9h ZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU0I+IHZsc2Jfb2Jq Oworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9T VFJJREVELCBVTlNQRUNfVEhfVkxTQlU+IHZsc2J1X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29u c3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU0g+ IHZsc2hfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFs c2UsIExTVF9TVFJJREVELCBVTlNQRUNfVEhfVkxTSFU+IHZsc2h1X29iajsKK3N0YXRpYyBDT05T VEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfU1RSSURFRCwgVU5TUEVD X1RIX1ZMU1c+IHZsc3dfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVf d2lkdGg8ZmFsc2UsIExTVF9TVFJJREVELCBVTlNQRUNfVEhfVkxTV1U+IHZsc3d1X29iajsKK3N0 YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9TVFJJREVE LCBVTlNQRUNfVEhfVkxTQj4gdnNzYl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xv YWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU0g+IHZzc2hfb2Jq Oworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwgTFNUX1NU UklERUQsIFVOU1BFQ19USF9WTFNXPiB2c3N3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3Qg dGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZMWEI+IHZs eGJfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2Us IExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYQlU+IHZseGJ1X29iajsKK3N0YXRpYyBDT05TVEVY UFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RI X1ZMWEg+IHZseGhfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lk dGg8ZmFsc2UsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYSFU+IHZseGh1X29iajsKK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwg VU5TUEVDX1RIX1ZMWFc+IHZseHdfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fk c3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYV1U+IHZseHd1X29i ajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9J TkRFWEVELCBVTlNQRUNfVEhfVkxYQj4gdnN4Yl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0 IHRoX2xvYWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZMWEg+IHZz eGhfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwg TFNUX0lOREVYRUQsIFVOU1BFQ19USF9WTFhXPiB2c3h3X29iajsKK3N0YXRpYyBDT05TVEVYUFIg Y29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVlNV WEI+IHZzdXhiX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRo PHRydWUsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVlNVWEg+IHZzdXhoX29iajsKK3N0YXRpYyBD T05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9JTkRFWEVELCBVTlNQ RUNfVEhfVlNVWFc+IHZzdXh3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfZXh0cmFj dCB2ZXh0X3hfdl9vYmo7CiAKIC8qIENyeXB0byBWZWN0b3IgKi8KIHN0YXRpYyBDT05TVEVYUFIg Y29uc3QgdmFuZG4gdmFuZG5fb2JqOwpAQCAtMjg5NCw2ICszMDAyLDM3IEBAIEJBU0UgKHZsb3hz ZWcpCiBCQVNFICh2c3V4c2VnKQogQkFTRSAodnNveHNlZykKIEJBU0UgKHZsc2VnZmYpCitCQVNF ICh2bGIpCitCQVNFICh2bGgpCitCQVNFICh2bHcpCitCQVNFICh2bGJ1KQorQkFTRSAodmxodSkK K0JBU0UgKHZsd3UpCitCQVNFICh2c2IpCitCQVNFICh2c2gpCitCQVNFICh2c3cpCitCQVNFICh2 bHNiKQorQkFTRSAodmxzaCkKK0JBU0UgKHZsc3cpCitCQVNFICh2bHNidSkKK0JBU0UgKHZsc2h1 KQorQkFTRSAodmxzd3UpCitCQVNFICh2c3NiKQorQkFTRSAodnNzaCkKK0JBU0UgKHZzc3cpCitC QVNFICh2bHhiKQorQkFTRSAodmx4aCkKK0JBU0UgKHZseHcpCitCQVNFICh2bHhidSkKK0JBU0Ug KHZseGh1KQorQkFTRSAodmx4d3UpCitCQVNFICh2c3hiKQorQkFTRSAodnN4aCkKK0JBU0UgKHZz eHcpCitCQVNFICh2c3V4YikKK0JBU0UgKHZzdXhoKQorQkFTRSAodnN1eHcpCitCQVNFICh2ZXh0 X3hfdikKIC8qIENyeXB0byB2ZWN0b3IgKi8KIEJBU0UgKHZhbmRuKQogQkFTRSAodmJyZXYpCmRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5o IGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuaAppbmRleCA4 N2M3ZjQzYTQyMy4uMWYyYzk0ZDM1NDEgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcmlzY3Yvcmlz Y3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmgKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12 ZWN0b3ItYnVpbHRpbnMtYmFzZXMuaApAQCAtMjgwLDYgKzI4MCwzNyBAQCBleHRlcm4gY29uc3Qg ZnVuY3Rpb25fYmFzZSAqY29uc3QgdmxveHNlZzsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNl ICpjb25zdCB2c3V4c2VnOwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzb3hz ZWc7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdmxzZWdmZjsKK2V4dGVybiBj b25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bGI7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFz ZSAqY29uc3QgdmxoOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsdzsKK2V4 dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bGJ1OworZXh0ZXJuIGNvbnN0IGZ1bmN0 aW9uX2Jhc2UgKmNvbnN0IHZsaHU7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qg dmx3dTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c2I7CitleHRlcm4gY29u c3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnNoOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2Ug KmNvbnN0IHZzdzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHNiOworZXh0 ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsc2g7CitleHRlcm4gY29uc3QgZnVuY3Rp b25fYmFzZSAqY29uc3QgdmxzdzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2 bHNidTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHNodTsKK2V4dGVybiBj b25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHN3dTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9i YXNlICpjb25zdCB2c3NiOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzc2g7 CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnNzdzsKK2V4dGVybiBjb25zdCBm dW5jdGlvbl9iYXNlICpjb25zdCB2bHhiOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNv bnN0IHZseGg7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgdmx4dzsKK2V4dGVy biBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHhidTsKK2V4dGVybiBjb25zdCBmdW5jdGlv bl9iYXNlICpjb25zdCB2bHhodTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2 bHh3dTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3hiOworZXh0ZXJuIGNv bnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzeGg7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFz ZSAqY29uc3QgdnN4dzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3V4YjsK K2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3V4aDsKK2V4dGVybiBjb25zdCBm dW5jdGlvbl9iYXNlICpjb25zdCB2c3V4dzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpj b25zdCB2ZXh0X3hfdjsKIC8qIEJlbG93IGZ1bmN0aW9uX2Jhc2UgYXJlIFZlY3RybyBDcnlwdG8q LwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZhbmRuOwogZXh0ZXJuIGNvbnN0 IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZicmV2OwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNj di9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmNjIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNj di12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmNjCmluZGV4IDFlNGY0ZDUzZGU2Li44ZTkwYjE3YTk0 YiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hh cGVzLmNjCisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBl cy5jYwpAQCAtMjExLDYgKzIxMSwxNDYgQEAgc3RydWN0IGluZGV4ZWRfbG9hZHN0b3JlX2RlZiA6 IHB1YmxpYyBmdW5jdGlvbl9zaGFwZQrCoMKgIH0KIH07CiAKKy8qIEFkZCBvbmUgZnVuY3Rpb24g aW5zdGFuY2UgZm9yIEdST1VQLCB1c2luZyBvcGVyYW5kIHN1ZmZpeCBhdCBpbmRleCBPSSwKK8Kg wqAgbW9kZSBzdWZmaXggYXQgaW5kZXggUEFJUiAmJiBiaSBhbmQgcHJlZGljYXRpb24gc3VmZml4 IGF0IGluZGV4IHByZWRfaWR4LsKgICovCitzdGF0aWMgdm9pZAorYnVpbGRfdGhfbG9hZHN0b3Jl IChmdW5jdGlvbl9idWlsZGVyICZiLCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCwK KwkJwqDCoMKgIHVuc2lnbmVkIGludCBwcmVkX2lkeCwgdW5zaWduZWQgaW50IHZlY190eXBlX2lk eCkKK3sKK8KgIGF1dG9fdmVjPHRyZWUsIDU+IGFyZ3VtZW50X3R5cGVzOworwqAgZnVuY3Rpb25f aW5zdGFuY2UgZnVuY3Rpb25faW5zdGFuY2UgKGdyb3VwLmJhc2VfbmFtZSwgKmdyb3VwLmJhc2Us CisJCQkJwqDCoMKgwqDCoMKgICpncm91cC5zaGFwZSwKKwkJCQnCoMKgwqDCoMKgwqAgZ3JvdXAu b3BzX2luZm9zLnR5cGVzW3ZlY190eXBlX2lkeF0sCisJCQkJwqDCoMKgwqDCoMKgIGdyb3VwLnBy ZWRzW3ByZWRfaWR4XSwgJmdyb3VwLm9wc19pbmZvcyk7CivCoCB0cmVlIHJldHVybl90eXBlID0g Z3JvdXAub3BzX2luZm9zLnJldC5nZXRfdHJlZV90eXBlICgKK8KgwqDCoCBncm91cC5vcHNfaW5m b3MudHlwZXNbdmVjX3R5cGVfaWR4XS5pbmRleCk7CivCoCBiLmFsbG9jYXRlX2FyZ3VtZW50X3R5 cGVzIChmdW5jdGlvbl9pbnN0YW5jZSwgYXJndW1lbnRfdHlwZXMpOworwqAgYi5hcHBseV9wcmVk aWNhdGlvbiAoZnVuY3Rpb25faW5zdGFuY2UsIHJldHVybl90eXBlLCBhcmd1bWVudF90eXBlcyk7 CisKK8KgIGlmIChUQVJHRVRfWFRIRUFEVkVDVE9SICYmICFjaGVja190eXBlIChyZXR1cm5fdHlw ZSwgYXJndW1lbnRfdHlwZXMpKQorwqDCoMKgIHJldHVybjsKKworwqAgdHJlZSB0eXBlID0gYnVp bHRpbl90eXBlc1tncm91cC5vcHNfaW5mb3MudHlwZXNbdmVjX3R5cGVfaWR4XS5pbmRleF0udmVj dG9yOworwqAgaWYgKHN0cnN0ciAoZ3JvdXAuYmFzZV9uYW1lLCAibCIpCivCoMKgwqDCoMKgICYm IHN0cnN0ciAoZ3JvdXAuYmFzZV9uYW1lLCAidSIpCivCoMKgwqDCoMKgICYmICFUWVBFX1VOU0lH TkVEIChUUkVFX1RZUEUgKHR5cGUpKSkKK8KgwqDCoCByZXR1cm47CisKK8KgIGlmIChzdHJzdHIg KGdyb3VwLmJhc2VfbmFtZSwgImwiKQorwqDCoMKgwqDCoCAmJiAhc3Ryc3RyIChncm91cC5iYXNl X25hbWUsICJ1IikKK8KgwqDCoMKgwqAgJiYgVFlQRV9VTlNJR05FRCAoVFJFRV9UWVBFICh0eXBl KSkpCivCoMKgwqAgcmV0dXJuOworCivCoCBtYWNoaW5lX21vZGUgbW9kZSA9IFRZUEVfTU9ERSAo dHlwZSk7CivCoCBpbnQgc2V3ID0gR0VUX01PREVfQklUU0laRSAoR0VUX01PREVfSU5ORVIgKG1v ZGUpKTsKK8KgIGlmIChzdHJzdHIgKGdyb3VwLmJhc2VfbmFtZSwgImgiKSAmJiBzZXcgPT0gOCkK K8KgwqDCoCByZXR1cm47CisKK8KgIGlmIChzdHJzdHIgKGdyb3VwLmJhc2VfbmFtZSwgInciKSAm JiAoc2V3ID09IDggfHwgc2V3ID09MTYpKQorwqDCoMKgIHJldHVybjsKKworwqAgYi5hZGRfb3Zl cmxvYWRlZF9mdW5jdGlvbiAoZnVuY3Rpb25faW5zdGFuY2UsICpncm91cC5zaGFwZSk7CivCoCBi LmFkZF91bmlxdWVfZnVuY3Rpb24gKGZ1bmN0aW9uX2luc3RhbmNlLCAoKmdyb3VwLnNoYXBlKSwg cmV0dXJuX3R5cGUsCisJCQkgYXJndW1lbnRfdHlwZXMpOworfQorCisvKiB0aF9sb2Fkc3RvcmVf d2lkdGhfZGVmIGNsYXNzLsKgICovCitzdHJ1Y3QgdGhfbG9hZHN0b3JlX3dpZHRoX2RlZiA6IHB1 YmxpYyBidWlsZF9iYXNlCit7CivCoMKgIHZvaWQgYnVpbGQgKGZ1bmN0aW9uX2J1aWxkZXIgJmIs CisJwqDCoMKgwqDCoCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCkgY29uc3Qgb3Zl cnJpZGUKK8KgIHsKK8KgwqDCoCBmb3IgKHVuc2lnbmVkIGludCBwcmVkX2lkeCA9IDA7IGdyb3Vw LnByZWRzW3ByZWRfaWR4XSAhPSBOVU1fUFJFRF9UWVBFUzsKK8KgwqDCoMKgwqDCoCArK3ByZWRf aWR4KQorwqDCoMKgwqDCoCB7CisJZm9yICh1bnNpZ25lZCBpbnQgdmVjX3R5cGVfaWR4ID0gMDsK KwnCoMKgwqDCoCBncm91cC5vcHNfaW5mb3MudHlwZXNbdmVjX3R5cGVfaWR4XS5pbmRleCAhPSBO VU1fVkVDVE9SX1RZUEVTOworCcKgwqDCoMKgICsrdmVjX3R5cGVfaWR4KQorCcKgIHsKKwnCoMKg wqAgYnVpbGRfdGhfbG9hZHN0b3JlIChiLCBncm91cCwgcHJlZF9pZHgsIHZlY190eXBlX2lkeCk7 CisJwqAgfQorwqDCoMKgwqDCoCB9CivCoCB9CisKK8KgIGNoYXIgKmdldF9uYW1lIChmdW5jdGlv bl9idWlsZGVyICZiLCBjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFuY2UsCisJCcKgIGJv b2wgb3ZlcmxvYWRlZF9wKSBjb25zdCBvdmVycmlkZQorwqAgeworwqDCoMKgIC8qIFJldHVybiBu dWxscHRyIGlmIGl0IGNhbiBub3QgYmUgb3ZlcmxvYWRlZC7CoCAqLworwqDCoMKgIGlmIChvdmVy bG9hZGVkX3AgJiYgIWluc3RhbmNlLmJhc2UtPmNhbl9iZV9vdmVybG9hZGVkX3AgKGluc3RhbmNl LnByZWQpKQorwqDCoMKgwqDCoCByZXR1cm4gbnVsbHB0cjsKKworwqDCoMKgIGIuYXBwZW5kX25h bWUgKCJfX3Jpc2N2X3RoXyIpOworwqDCoMKgIGIuYXBwZW5kX25hbWUgKGluc3RhbmNlLmJhc2Vf bmFtZSk7CisKK8KgwqDCoCAvKiB2b3BfdiAtLT4gdm9wX3ZfPHR5cGU+LsKgICovCivCoMKgwqAg aWYgKCFvdmVybG9hZGVkX3ApCivCoMKgwqDCoMKgIHsKKwkvKiB2b3AgLS0+IHZvcF92LsKgICov CisJYi5hcHBlbmRfbmFtZSAob3BlcmFuZF9zdWZmaXhlc1tpbnN0YW5jZS5vcF9pbmZvLT5vcF0p OworCS8qIHZvcF92IC0tPiB2b3Bfdl88dHlwZT4uwqAgKi8KKwliLmFwcGVuZF9uYW1lICh0eXBl X3N1ZmZpeGVzW2luc3RhbmNlLnR5cGUuaW5kZXhdLnZlY3Rvcik7CivCoMKgwqDCoMKgIH0KKwor wqDCoMKgIC8qIEFjY29yZGluZyB0byBydnYtaW50cmluc2ljLWRvYywgaXQgZG9lcyBub3QgYWRk ICJfbSIgc3VmZml4CivCoMKgwqDCoMKgwqAgZm9yIHZvcF9tIEMrKyBvdmVybG9hZGVkIEFQSS7C oCAqLworwqDCoMKgIGlmIChvdmVybG9hZGVkX3AgJiYgaW5zdGFuY2UucHJlZCA9PSBQUkVEX1RZ UEVfbSkKK8KgwqDCoMKgwqAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7CivCoMKgwqAgYi5hcHBl bmRfbmFtZSAocHJlZGljYXRpb25fc3VmZml4ZXNbaW5zdGFuY2UucHJlZF0pOworwqDCoMKgIHJl dHVybiBiLmZpbmlzaF9uYW1lICgpOworwqAgfQorfTsKKworCisvKiB0aF9pbmRleGVkX2xvYWRz dG9yZV93aWR0aF9kZWYgY2xhc3MuwqAgKi8KK3N0cnVjdCB0aF9pbmRleGVkX2xvYWRzdG9yZV93 aWR0aF9kZWYgOiBwdWJsaWMgZnVuY3Rpb25fc2hhcGUKK3sKK8KgIHZvaWQgYnVpbGQgKGZ1bmN0 aW9uX2J1aWxkZXIgJmIsCisJwqDCoMKgwqDCoCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZn cm91cCkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsKK8KgwqDCoCBmb3IgKHVuc2lnbmVkIGludCBwcmVk X2lkeCA9IDA7IGdyb3VwLnByZWRzW3ByZWRfaWR4XSAhPSBOVU1fUFJFRF9UWVBFUzsKKwkgKytw cmVkX2lkeCkKK8KgwqDCoMKgwqAgeworCWZvciAodW5zaWduZWQgaW50IHZlY190eXBlX2lkeCA9 IDA7CisJwqDCoMKgwqAgZ3JvdXAub3BzX2luZm9zLnR5cGVzW3ZlY190eXBlX2lkeF0uaW5kZXgg IT0gTlVNX1ZFQ1RPUl9UWVBFUzsKKwnCoMKgwqDCoCArK3ZlY190eXBlX2lkeCkKKwnCoCB7CisJ wqDCoCB0cmVlIGluZGV4X3R5cGUgPSBncm91cC5vcHNfaW5mb3MuYXJnc1sxXS5nZXRfdHJlZV90 eXBlICgKKwnCoMKgwqDCoMKgIGdyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLmlu ZGV4KTsKKwnCoMKgIGlmICghaW5kZXhfdHlwZSkKKwnCoMKgwqDCoMKgIGNvbnRpbnVlOworCcKg wqAgYnVpbGRfdGhfbG9hZHN0b3JlIChiLCBncm91cCwgcHJlZF9pZHgsIHZlY190eXBlX2lkeCk7 CisJwqAgfQorwqDCoMKgwqDCoCB9CivCoCB9CisKK8KgIGNoYXIgKmdldF9uYW1lIChmdW5jdGlv bl9idWlsZGVyICZiLCBjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFuY2UsCisJCcKgIGJv b2wgb3ZlcmxvYWRlZF9wKSBjb25zdCBvdmVycmlkZQorwqAgeworCivCoMKgwqAgLyogUmV0dXJu IG51bGxwdHIgaWYgaXQgY2FuIG5vdCBiZSBvdmVybG9hZGVkLsKgICovCivCoMKgwqAgaWYgKG92 ZXJsb2FkZWRfcCAmJiAhaW5zdGFuY2UuYmFzZS0+Y2FuX2JlX292ZXJsb2FkZWRfcCAoaW5zdGFu Y2UucHJlZCkpCivCoMKgwqDCoMKgIHJldHVybiBudWxscHRyOworCivCoMKgwqAgYi5hcHBlbmRf bmFtZSAoIl9fcmlzY3ZfdGhfIik7CivCoMKgwqAgYi5hcHBlbmRfbmFtZSAoaW5zdGFuY2UuYmFz ZV9uYW1lKTsKK8KgwqDCoCAvKiB2b3BfdiAtLT4gdm9wX3ZfPHR5cGU+LsKgICovCivCoMKgwqAg aWYgKCFvdmVybG9hZGVkX3ApCivCoMKgwqDCoMKgIHsKKwkvKiB2b3AgLS0+IHZvcF92LsKgICov CisJYi5hcHBlbmRfbmFtZSAob3BlcmFuZF9zdWZmaXhlc1tpbnN0YW5jZS5vcF9pbmZvLT5vcF0p OworCS8qIHZvcF92IC0tPiB2b3Bfdl88dHlwZT4uwqAgKi8KKwliLmFwcGVuZF9uYW1lICh0eXBl X3N1ZmZpeGVzW2luc3RhbmNlLnR5cGUuaW5kZXhdLnZlY3Rvcik7CivCoMKgwqDCoMKgIH0KKwor wqDCoMKgIC8qIEFjY29yZGluZyB0byBydnYtaW50cmluc2ljLWRvYywgaXQgZG9lcyBub3QgYWRk ICJfbSIgc3VmZml4CivCoMKgwqDCoMKgwqAgZm9yIHZvcF9tIEMrKyBvdmVybG9hZGVkIEFQSS7C oCAqLworwqDCoMKgIGlmIChvdmVybG9hZGVkX3AgJiYgaW5zdGFuY2UucHJlZCA9PSBQUkVEX1RZ UEVfbSkKK8KgwqDCoMKgwqAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7CivCoMKgwqAgYi5hcHBl bmRfbmFtZSAocHJlZGljYXRpb25fc3VmZml4ZXNbaW5zdGFuY2UucHJlZF0pOworwqDCoMKgIHJl dHVybiBiLmZpbmlzaF9uYW1lICgpOworwqAgfQorfTsKKwogLyogYWx1X2RlZiBjbGFzcy7CoCAq Lwogc3RydWN0IGFsdV9kZWYgOiBwdWJsaWMgYnVpbGRfYmFzZQogewpAQCAtNjMyLDYgKzc3Miwy MyBAQCBzdHJ1Y3QgcmVkdWNfYWx1X2RlZiA6IHB1YmxpYyBidWlsZF9iYXNlCsKgwqAgfQogfTsK IAorLyogdGhfZXh0cmFjdF9kZWYgY2xhc3MuwqAgKi8KK3N0cnVjdCB0aF9leHRyYWN0X2RlZiA6 IHB1YmxpYyBidWlsZF9iYXNlCit7CivCoCBjaGFyICpnZXRfbmFtZSAoZnVuY3Rpb25fYnVpbGRl ciAmYiwgY29uc3QgZnVuY3Rpb25faW5zdGFuY2UgJmluc3RhbmNlLAorwqDCoMKgwqDCoCBib29s IG92ZXJsb2FkZWRfcCkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsKK8KgwqDCoCBiLmFwcGVuZF9uYW1l ICgiX19yaXNjdl90aF8iKTsKK8KgwqDCoCBiLmFwcGVuZF9uYW1lIChpbnN0YW5jZS5iYXNlX25h bWUpOworCivCoMKgwqAgaWYgKG92ZXJsb2FkZWRfcCkKK8KgwqDCoMKgwqAgcmV0dXJuIGIuZmlu aXNoX25hbWUgKCk7CivCoMKgwqAgYi5hcHBlbmRfbmFtZSAodHlwZV9zdWZmaXhlc1tpbnN0YW5j ZS50eXBlLmluZGV4XS52ZWN0b3IpOworwqDCoMKgIGIuYXBwZW5kX25hbWUgKHR5cGVfc3VmZml4 ZXNbaW5zdGFuY2UudHlwZS5pbmRleF0uc2NhbGFyKTsKK8KgwqDCoCByZXR1cm4gYi5maW5pc2hf bmFtZSAoKTsKK8KgIH0KK307CisKIC8qIHNjYWxhcl9tb3ZlX2RlZiBjbGFzcy7CoCAqLwogc3Ry dWN0IHNjYWxhcl9tb3ZlX2RlZiA6IHB1YmxpYyBidWlsZF9iYXNlCiB7CkBAIC0xMDk0LDYgKzEy NTEsOCBAQCBTSEFQRSh2c2V0dmwsIHZzZXR2bCkKIFNIQVBFKHZzZXR2bCwgdnNldHZsbWF4KQog U0hBUEUobG9hZHN0b3JlLCBsb2Fkc3RvcmUpCiBTSEFQRShpbmRleGVkX2xvYWRzdG9yZSwgaW5k ZXhlZF9sb2Fkc3RvcmUpCitTSEFQRSh0aF9sb2Fkc3RvcmVfd2lkdGgsIHRoX2xvYWRzdG9yZV93 aWR0aCkKK1NIQVBFKHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCB0aF9pbmRleGVkX2xvYWRz dG9yZV93aWR0aCkKIFNIQVBFKGFsdSwgYWx1KQogU0hBUEUoYWx1X2ZybSwgYWx1X2ZybSkKIFNI QVBFKHdpZGVuX2FsdSwgd2lkZW5fYWx1KQpAQCAtMTEwNiw2ICsxMjY1LDcgQEAgU0hBUEUobW92 ZSwgbW92ZSkKIFNIQVBFKG1hc2tfYWx1LCBtYXNrX2FsdSkKIFNIQVBFKHJlZHVjX2FsdSwgcmVk dWNfYWx1KQogU0hBUEUocmVkdWNfYWx1X2ZybSwgcmVkdWNfYWx1X2ZybSkKK1NIQVBFKHRoX2V4 dHJhY3QsIHRoX2V4dHJhY3QpCiBTSEFQRShzY2FsYXJfbW92ZSwgc2NhbGFyX21vdmUpCiBTSEFQ RSh2dW5kZWZpbmVkLCB2dW5kZWZpbmVkKQogU0hBUEUobWlzYywgbWlzYykKZGlmZiAtLWdpdCBh L2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5oIGIvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmgKaW5kZXggYWMyYTI4Y2Uw MTcuLmE3NjI0ZDBmYWJkIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rv ci1idWlsdGlucy1zaGFwZXMuaAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1i dWlsdGlucy1zaGFwZXMuaApAQCAtMjgsNiArMjgsOCBAQCBleHRlcm4gY29uc3QgZnVuY3Rpb25f c2hhcGUgKmNvbnN0IHZzZXR2bDsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3Qg dnNldHZsbWF4OwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBsb2Fkc3RvcmU7 CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IGluZGV4ZWRfbG9hZHN0b3JlOwor ZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg7Citl eHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dp ZHRoOwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBhbHU7CiBleHRlcm4gY29u c3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IGFsdV9mcm07CiBleHRlcm4gY29uc3QgZnVuY3Rpb25f c2hhcGUgKmNvbnN0IHdpZGVuX2FsdTsKQEAgLTQxLDYgKzQzLDcgQEAgZXh0ZXJuIGNvbnN0IGZ1 bmN0aW9uX3NoYXBlICpjb25zdCBtYXNrX2FsdTsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFw ZSAqY29uc3QgcmVkdWNfYWx1OwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBy ZWR1Y19hbHVfZnJtOwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBzY2FsYXJf bW92ZTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgdGhfZXh0cmFjdDsKIGV4 dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgdnVuZGVmaW5lZDsKIGV4dGVybiBjb25z dCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgbWlzYzsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFw ZSAqY29uc3QgdnNldDsKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9y LWJ1aWx0aW5zLmNjIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuY2MK aW5kZXggMjVlMGI2ZTU2ZGUuLjQ0YjlmZWMxODk4IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jp c2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5jYworKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2 LXZlY3Rvci1idWlsdGlucy5jYwpAQCAtOTM0LDYgKzkzNCwzMiBAQCBzdGF0aWMgQ09OU1RFWFBS IGNvbnN0IHJ2dl9hcmdfdHlwZV9pbmZvIGV4dF92Y3JlYXRlX2FyZ3NbXQrCoMKgID0ge3J2dl9h cmdfdHlwZV9pbmZvIChSVlZfQkFTRV92ZWN0b3IpLArCoMKgwqDCoMKgIHJ2dl9hcmdfdHlwZV9p bmZvX2VuZH07CiAKKy8qIEEgbGlzdCBvZiBhcmdzIGZvciB2ZWN0b3JfdHlwZSBmdW5jIChjb25z dCBzY2FsYXJfdHlwZSAqLCBzaXplX3QpCisgKiBmdW5jdGlvbi7CoCAqLworc3RhdGljIENPTlNU RVhQUiBjb25zdCBydnZfYXJnX3R5cGVfaW5mbyBzY2FsYXJfY29uc3RfcHRyX3NpemVfYXJnc1td CivCoCA9IHtydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfc2NhbGFyX2NvbnN0X3B0ciksCivC oMKgwqDCoCBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfc2l6ZSksIHJ2dl9hcmdfdHlwZV9p bmZvX2VuZH07CisKKy8qIEEgbGlzdCBvZiBhcmdzIGZvciB2ZWN0b3JfdHlwZSBmdW5jIChjb25z dCBzY2FsYXJfdHlwZSAqLCBlZXc4X2luZGV4X3R5cGUpCisgKiBmdW5jdGlvbi7CoCAqLworc3Rh dGljIENPTlNURVhQUiBjb25zdCBydnZfYXJnX3R5cGVfaW5mbyBzY2FsYXJfY29uc3RfcHRyX2lu ZGV4X2FyZ3NbXQorwqAgPSB7cnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhcl9jb25z dF9wdHIpLAorwqDCoMKgwqAgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3Vuc2lnbmVkX3Zl Y3RvciksIHJ2dl9hcmdfdHlwZV9pbmZvX2VuZH07CisKKy8qIEEgbGlzdCBvZiBhcmdzIGZvciB2 b2lkIGZ1bmMgKHNjYWxhcl90eXBlICosIGVldzhfaW5kZXhfdHlwZSwgdmVjdG9yX3R5cGUpCisg KiBmdW5jdGlvbi7CoCAqLworc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfYXJnX3R5cGVfaW5m byBzY2FsYXJfcHRyX2luZGV4X2FyZ3NbXQorwqAgPSB7cnZ2X2FyZ190eXBlX2luZm8gKFJWVl9C QVNFX3NjYWxhcl9wdHIpLAorwqDCoMKgwqAgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3Vu c2lnbmVkX3ZlY3RvciksCivCoMKgwqDCoCBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0VfdmVj dG9yKSwgcnZ2X2FyZ190eXBlX2luZm9fZW5kfTsKKworLyogQSBsaXN0IG9mIGFyZ3MgZm9yIHZv aWQgZnVuYyAoc2NhbGFyX3R5cGUgKiwgc2l6ZV90LCB2ZWN0b3JfdHlwZSkKKyAqIGZ1bmN0aW9u LsKgICovCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9hcmdfdHlwZV9pbmZvIHNjYWxhcl9w dHJfc2l6ZV9hcmdzW10KK8KgID0ge3J2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV9zY2FsYXJf cHRyKSwKK8KgwqDCoMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV9zaXplKSwgcnZ2X2Fy Z190eXBlX2luZm8gKFJWVl9CQVNFX3ZlY3RvciksCivCoMKgwqDCoCBydnZfYXJnX3R5cGVfaW5m b19lbmR9OworCiAvKiBBIGxpc3Qgb2Ygbm9uZSBwcmVkcyB0aGF0IHdpbGwgYmUgcmVnaXN0ZXJl ZCBmb3IgaW50cmluc2ljIGZ1bmN0aW9ucy7CoCAqLwogc3RhdGljIENPTlNURVhQUiBjb25zdCBw cmVkaWNhdGlvbl90eXBlX2luZGV4IG5vbmVfcHJlZHNbXQrCoMKgID0ge1BSRURfVFlQRV9ub25l LCBOVU1fUFJFRF9UWVBFU307CkBAIC0xNDU1LDYgKzE0ODEsMTQgQEAgc3RhdGljIENPTlNURVhQ UiBjb25zdCBydnZfb3BfaW5mbyBpdV9zaGlmdF92dnZfb3BzCsKgwqDCoMKgwqAgcnZ2X2FyZ190 eXBlX2luZm8gKFJWVl9CQVNFX3ZlY3RvciksIC8qIFJldHVybiB0eXBlICovCsKgwqDCoMKgwqAg c2hpZnRfdnZfYXJncyAvKiBBcmdzICovfTsKIAorLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1h dGlvbiBmb3Igc2NhbGFyX3R5cGUgZnVuYyAodmVjdG9yX3R5cGUsIHNpemVfdCkKKyAqIGZ1bmN0 aW9uIHJlZ2lzdHJhdGlvbi4gKi8KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2X29wX2luZm8g aXVfeF9zX3Vfb3BzCivCoCA9IHtpdV9vcHMswqDCoMKgwqDCoMKgwqDCoMKgIC8qIFR5cGVzICov CivCoMKgwqDCoCBPUF9UWVBFX3Z4LMKgwqDCoMKgwqDCoMKgIC8qIFN1ZmZpeCAqLworwqDCoMKg wqAgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhciksIC8qIFJldHVybiB0eXBlICov CivCoMKgwqDCoCB2X3NpemVfYXJncyAvKiBBcmdzICovfTsKKwogLyogQSBzdGF0aWMgb3BlcmFu ZCBpbmZvcm1hdGlvbiBmb3IgdmVjdG9yX3R5cGUgZnVuYyAodmVjdG9yX3R5cGUsIHNpemVfdCkK wqAgKiBmdW5jdGlvbiByZWdpc3RyYXRpb24uICovCiBzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2 dl9vcF9pbmZvIGl1X3NoaWZ0X3Z2eF9vcHMKQEAgLTI2MzgsNiArMjY3MiwzOCBAQCBzdGF0aWMg Q09OU1RFWFBSIGNvbnN0IHJ2dl9vcF9pbmZvIGFsbF92X3ZjcmVhdGVfbG11bDRfeDJfb3BzCsKg wqDCoMKgwqAgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3ZsbXVsX2V4dF94MiksIC8qIFJl dHVybiB0eXBlICovCsKgwqDCoMKgwqAgZXh0X3ZjcmVhdGVfYXJncyAvKiBBcmdzICovfTsKIAor LyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlvbiBmb3IgdmVjdG9yX3R5cGUgZnVuYyAoY29u c3Qgc2NhbGFyX3R5cGUgKiwKKyAqIHNpemVfdCkgZnVuY3Rpb24gcmVnaXN0cmF0aW9uLsKgICov CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9vcF9pbmZvIGFsbF92X3NjYWxhcl9jb25zdF9w dHJfc2l6ZV9vcHMKK8KgID0ge2FsbF9vcHMsCQkJCcKgIC8qIFR5cGVzwqAgKi8KK8KgwqDCoMKg IE9QX1RZUEVfdiwJCQkJwqAgLyogU3VmZml4wqAgKi8KK8KgwqDCoMKgIHJ2dl9hcmdfdHlwZV9p bmZvIChSVlZfQkFTRV92ZWN0b3IpLCAvKiBSZXR1cm4gdHlwZcKgICovCivCoMKgwqDCoCBzY2Fs YXJfY29uc3RfcHRyX3NpemVfYXJncyAvKiBBcmdzICovfTsKKworLyogQSBzdGF0aWMgb3BlcmFu ZCBpbmZvcm1hdGlvbiBmb3Igdm9pZCBmdW5jIChzY2FsYXJfdHlwZSAqLCBzaXplX3QsCisgKiB2 ZWN0b3JfdHlwZSkgZnVuY3Rpb24gcmVnaXN0cmF0aW9uLsKgICovCitzdGF0aWMgQ09OU1RFWFBS IGNvbnN0IHJ2dl9vcF9pbmZvIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMKK8KgID0ge2FsbF9v cHMsCQkJCS8qIFR5cGVzwqAgKi8KK8KgwqDCoMKgIE9QX1RZUEVfdiwJCQkJLyogU3VmZml4wqAg Ki8KK8KgwqDCoMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92b2lkKSwgLyogUmV0dXJu IHR5cGXCoCAqLworwqDCoMKgwqAgc2NhbGFyX3B0cl9zaXplX2FyZ3MgLyogQXJncyAqL307CisK Ky8qIEEgc3RhdGljIG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZlY3Rvcl90eXBlIGZ1bmMgKGNv bnN0IHNjYWxhcl90eXBlICosCisgKiBpbmRleF90eXBlKSBmdW5jdGlvbiByZWdpc3RyYXRpb24u wqAgKi8KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2X29wX2luZm8gYWxsX3Zfc2NhbGFyX2Nv bnN0X3B0cl9pbmRleF9vcHMKK8KgID0ge2FsbF9vcHMsCQkJCcKgIC8qIFR5cGVzwqAgKi8KK8Kg wqDCoMKgIE9QX1RZUEVfdiwJCQkJwqAgLyogU3VmZml4wqAgKi8KK8KgwqDCoMKgIHJ2dl9hcmdf dHlwZV9pbmZvIChSVlZfQkFTRV92ZWN0b3IpLCAvKiBSZXR1cm4gdHlwZcKgICovCivCoMKgwqDC oCBzY2FsYXJfY29uc3RfcHRyX2luZGV4X2FyZ3MgLyogQXJncyAqL307CisKKy8qIEEgc3RhdGlj IG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZvaWQgZnVuYyAoc2NhbGFyX3R5cGUgKiwgaW5kZXhf dHlwZSwKKyAqIHZlY3Rvcl90eXBlKSBmdW5jdGlvbiByZWdpc3RyYXRpb24uwqAgKi8KK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgcnZ2X29wX2luZm8gYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMK K8KgID0ge2FsbF9vcHMsCQkJCS8qIFR5cGVzwqAgKi8KK8KgwqDCoMKgIE9QX1RZUEVfdiwJCQkJ LyogU3VmZml4wqAgKi8KK8KgwqDCoMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92b2lk KSwgLyogUmV0dXJuIHR5cGXCoCAqLworwqDCoMKgwqAgc2NhbGFyX3B0cl9pbmRleF9hcmdzIC8q IEFyZ3MgKi99OworCiAvKiBBIHN0YXRpYyBvcGVyYW5kIGluZm9ybWF0aW9uIGZvciB2ZWN0b3Jf dHlwZSBmdW5jICh2ZWN0b3JfdHlwZSkuCsKgwqDCoCBTb21lIGlucyBqdXN0IHN1cHBvcnRzIFNF Vz0zMiwgc3VjaCBhcyBjcnlwdG8gdmVjdG9sIFp2a2cgZXh0ZW5zaW9uLgrCoCAqIGZ1bmN0aW9u IHJlZ2lzdHJhdGlvbi7CoCAqLwpAQCAtMjgxNiw2ICsyODgyLDEwIEBAIHN0YXRpYyBmdW5jdGlv bl9ncm91cF9pbmZvIGZ1bmN0aW9uX2dyb3Vwc1tdID0gewogI2RlZmluZSBERUZfUlZWX0ZVTkNU SU9OKE5BTUUsIFNIQVBFLCBQUkVEUywgT1BTX0lORk8pwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKwqDCoCB7I05BTUUsICZiYXNlczo6TkFNRSwgJnNo YXBlczo6U0hBUEUsIFBSRURTLCBPUFNfSU5GTywgUkVRVUlSRURfRVhURU5TSU9OU30sCiAjaW5j bHVkZSAicmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYiCisjdW5kZWYgREVGX1JW Vl9GVU5DVElPTgorI2RlZmluZSBERUZfUlZWX0ZVTkNUSU9OKE5BTUUsIFNIQVBFLCBQUkVEUywg T1BTX0lORk8pwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFwKK8KgIHsjTkFNRSwgJmJhc2VzOjpOQU1FLCAmc2hhcGVzOjpTSEFQRSwgUFJFRFMsIE9QU19J TkZPLCBSRVFVSVJFRF9FWFRFTlNJT05TfSwKKyNpbmNsdWRlICJ0aGVhZC12ZWN0b3ItYnVpbHRp bnMtZnVuY3Rpb25zLmRlZiIKIH07CiAKIC8qIFRoZSBSVlYgdHlwZXMsIHdpdGggdGhlaXIgYnVp bHQtaW4KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5z LmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5oCmluZGV4IDU0Yzg4 MjRmZjkyLi4yMmZlZDYwYjRjMyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12 ZWN0b3ItYnVpbHRpbnMuaAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWls dGlucy5oCkBAIC0xMjMsNiArMTIzLDcgQEAgZW51bSByZXF1aXJlZF9leHQKwqDCoCBaVktOSEJf RVhULMKgIC8qIENyeXB0byB2ZWN0b3IgWnZrbmhiIHN1Yi1leHQgKi8KwqDCoCBaVktTRURfRVhU LMKgIC8qIENyeXB0byB2ZWN0b3IgWnZrc2VkIHN1Yi1leHQgKi8KwqDCoCBaVktTSF9FWFQswqDC oCAvKiBDcnlwdG8gdmVjdG9yIFp2a3NoIHN1Yi1leHQgKi8KK8KgIFhUSEVBRFZFQ1RPUl9FWFQs wqDCoCAvKiBYVGhlYWRWZWN0b3IgZXh0ZW5zaW9uICovCiB9OwogCiAvKiBFbnVtZXJhdGVzIHRo ZSBSVlYgb3BlcmFuZCB0eXBlcy7CoCAqLwpAQCAtMjUyLDYgKzI1Myw4IEBAIHN0cnVjdCBmdW5j dGlvbl9ncm91cF9pbmZvCsKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFRBUkdFVF9aVktTRUQ7CsKg wqDCoMKgwqDCoCBjYXNlIFpWS1NIX0VYVDoKwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gVEFSR0VU X1pWS1NIOworwqDCoMKgwqDCoCBjYXNlIFhUSEVBRFZFQ1RPUl9FWFQ6CisJcmV0dXJuIFRBUkdF VF9YVEhFQURWRUNUT1I7CsKgwqDCoMKgwqDCoCBkZWZhdWx0OgrCoMKgwqDCoMKgwqDCoMKgIGdj Y191bnJlYWNoYWJsZSAoKTsKwqDCoMKgwqAgfQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNj di90LXJpc2N2IGIvZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2CmluZGV4IDMyZGU2Yjg1MWMxLi4z ODQ5NDMyMGQ4YiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2CisrKyBiL2dj Yy9jb25maWcvcmlzY3YvdC1yaXNjdgpAQCAtMSw2ICsxLDcgQEAKIFJJU0NWX0JVSUxUSU5TX0gg PSAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5oIFwKIAkJwqDC oCAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5kZWYgXAogCQnC oMKgICQoc3JjZGlyKS9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9u cy5kZWYgXAorwqDCoMKgwqDCoMKgICQoc3JjZGlyKS9jb25maWcvcmlzY3YvdGhlYWQtdmVjdG9y LWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYgXAogCQnCoMKgIHJpc2N2LXZlY3Rvci10eXBlLWluZGV4 ZXIuZ2VuLmRlZgogCiByaXNjdi1idWlsdGlucy5vOiAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3Jp c2N2LWJ1aWx0aW5zLmNjICQoQ09ORklHX0gpIFwKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlz Y3YvdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYgYi9nY2MvY29uZmlnL3Jpc2N2 L3RoZWFkLXZlY3Rvci1idWlsdGlucy1mdW5jdGlvbnMuZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5mZDNiYTI5YmFlOQotLS0gL2Rldi9udWxsCisrKyBiL2djYy9j b25maWcvcmlzY3YvdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYKQEAgLTAsMCAr MSwzOSBAQAorI2lmbmRlZiBERUZfUlZWX0ZVTkNUSU9OCisjZGVmaW5lIERFRl9SVlZfRlVOQ1RJ T04oTkFNRSwgU0hBUEUsIFBSRURTLCBPUFNfSU5GTykKKyNlbmRpZgorCisjZGVmaW5lIFJFUVVJ UkVEX0VYVEVOU0lPTlMgWFRIRUFEVkVDVE9SX0VYVAorREVGX1JWVl9GVU5DVElPTiAodmxiLCB0 aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfb3Bz KQorREVGX1JWVl9GVU5DVElPTiAodmxoLCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMs IGFsbF92X3NjYWxhcl9jb25zdF9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmx3LCB0aF9s b2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfb3BzKQor REVGX1JWVl9GVU5DVElPTiAodmxidSwgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBh bGxfdl9zY2FsYXJfY29uc3RfcHRyX29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZsaHUsIHRoX2xv YWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9vcHMpCitE RUZfUlZWX0ZVTkNUSU9OICh2bHd1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFs bF92X3NjYWxhcl9jb25zdF9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnNiLCB0aF9sb2Fk c3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9vcHMpCitERUZfUlZW X0ZVTkNUSU9OICh2c2gsIHRoX2xvYWRzdG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9z Y2FsYXJfcHRyX29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZzdywgdGhfbG9hZHN0b3JlX3dpZHRo LCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAo dmxzYiwgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3Rf cHRyX3NpemVfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmxzaCwgdGhfbG9hZHN0b3JlX3dpZHRo LCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVfb3BzKQorREVGX1JWVl9G VU5DVElPTiAodmxzdywgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2Fs YXJfY29uc3RfcHRyX3NpemVfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmxzYnUsIHRoX2xvYWRz dG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9zaXplX29wcykK K0RFRl9SVlZfRlVOQ1RJT04gKHZsc2h1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMs IGFsbF92X3NjYWxhcl9jb25zdF9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHN3 dSwgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRy X3NpemVfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnNzYiwgdGhfbG9hZHN0b3JlX3dpZHRoLCBu b25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9O ICh2c3NoLCB0aF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0 cl9zaXplX29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZzc3csIHRoX2xvYWRzdG9yZV93aWR0aCwg bm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRyX3NpemVfb3BzKQorREVGX1JWVl9GVU5DVElP TiAodmx4YiwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3Nj YWxhcl9jb25zdF9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmx4aCwgdGhfaW5k ZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJf aW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmx4dywgdGhfaW5kZXhlZF9sb2Fkc3RvcmVf d2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhfb3BzKQorREVG X1JWVl9GVU5DVElPTiAodmx4YnUsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3By ZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX2luZGV4X29wcykKK0RFRl9SVlZfRlVOQ1RJT04g KHZseGh1LCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2Nh bGFyX2NvbnN0X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHh3dSwgdGhfaW5k ZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJf aW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnN4YiwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVf d2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMpCitERUZfUlZW X0ZVTkNUSU9OICh2c3hoLCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgbm9uZV9tX3ByZWRz LCBhbGxfdl9zY2FsYXJfcHRyX2luZGV4X29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZzeHcsIHRo X2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJf aW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnN1eGIsIHRoX2luZGV4ZWRfbG9hZHN0b3Jl X3dpZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfaW5kZXhfb3BzKQorREVGX1JW Vl9GVU5DVElPTiAodnN1eGgsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJl ZHMsIGFsbF92X3NjYWxhcl9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnN1eHcs IHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9w dHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmV4dF94X3YsIHRoX2V4dHJhY3QsIG5v bmVfcHJlZHMsIGl1X3hfc191X29wcykKKyN1bmRlZiBSRVFVSVJFRF9FWFRFTlNJT05TCisKKyN1 bmRlZiBERUZfUlZWX0ZVTkNUSU9OCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3RoZWFk LXZlY3Rvci5tZCBiL2djYy9jb25maWcvcmlzY3YvdGhlYWQtdmVjdG9yLm1kCmluZGV4IDY5NmI4 MTUyNTJkLi41ZmU5YmEwOGM0ZSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12 ZWN0b3IubWQKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQKQEAgLTEsNyAr MSw5NSBAQAogKGRlZmluZV9jX2VudW0gInVuc3BlYyIgWworwqAgVU5TUEVDX1RIX1ZMQgorwqAg VU5TUEVDX1RIX1ZMQlUKK8KgIFVOU1BFQ19USF9WTEgKK8KgIFVOU1BFQ19USF9WTEhVCivCoCBV TlNQRUNfVEhfVkxXCivCoCBVTlNQRUNfVEhfVkxXVQorCivCoCBVTlNQRUNfVEhfVkxTQgorwqAg VU5TUEVDX1RIX1ZMU0JVCivCoCBVTlNQRUNfVEhfVkxTSAorwqAgVU5TUEVDX1RIX1ZMU0hVCivC oCBVTlNQRUNfVEhfVkxTVworwqAgVU5TUEVDX1RIX1ZMU1dVCisKK8KgIFVOU1BFQ19USF9WTFhC CivCoCBVTlNQRUNfVEhfVkxYQlUKK8KgIFVOU1BFQ19USF9WTFhICivCoCBVTlNQRUNfVEhfVkxY SFUKK8KgIFVOU1BFQ19USF9WTFhXCivCoCBVTlNQRUNfVEhfVkxYV1UKKworwqAgVU5TUEVDX1RI X1ZTVVhCCivCoCBVTlNQRUNfVEhfVlNVWEgKK8KgIFVOU1BFQ19USF9WU1VYVworCsKgwqAgVU5T UEVDX1RIX1ZXTERTVAogXSkKIAorKGRlZmluZV9pbnRfaXRlcmF0b3IgVU5TUEVDX1RIX1ZMTUVN X09QIFsKK8KgIFVOU1BFQ19USF9WTEIgVU5TUEVDX1RIX1ZMQlUKK8KgIFVOU1BFQ19USF9WTEgg VU5TUEVDX1RIX1ZMSFUKK8KgIFVOU1BFQ19USF9WTFcgVU5TUEVDX1RIX1ZMV1UKK10pCisKKyhk ZWZpbmVfaW50X2l0ZXJhdG9yIFVOU1BFQ19USF9WTFNNRU1fT1AgWworwqAgVU5TUEVDX1RIX1ZM U0IgVU5TUEVDX1RIX1ZMU0JVCivCoCBVTlNQRUNfVEhfVkxTSCBVTlNQRUNfVEhfVkxTSFUKK8Kg IFVOU1BFQ19USF9WTFNXIFVOU1BFQ19USF9WTFNXVQorXSkKKworKGRlZmluZV9pbnRfaXRlcmF0 b3IgVU5TUEVDX1RIX1ZMWE1FTV9PUCBbCivCoCBVTlNQRUNfVEhfVkxYQiBVTlNQRUNfVEhfVkxY QlUKK8KgIFVOU1BFQ19USF9WTFhIIFVOU1BFQ19USF9WTFhIVQorwqAgVU5TUEVDX1RIX1ZMWFcg VU5TUEVDX1RIX1ZMWFdVCitdKQorCisoZGVmaW5lX2ludF9hdHRyIHZsbWVtX29wX2F0dHIgWwor wqAgKFVOU1BFQ19USF9WTEIgImIiKSAoVU5TUEVDX1RIX1ZMQlUgImJ1IikKK8KgIChVTlNQRUNf VEhfVkxIICJoIikgKFVOU1BFQ19USF9WTEhVICJodSIpCivCoCAoVU5TUEVDX1RIX1ZMVyAidyIp IChVTlNQRUNfVEhfVkxXVSAid3UiKQorwqAgKFVOU1BFQ19USF9WTFNCICJiIikgKFVOU1BFQ19U SF9WTFNCVSAiYnUiKQorwqAgKFVOU1BFQ19USF9WTFNIICJoIikgKFVOU1BFQ19USF9WTFNIVSAi aHUiKQorwqAgKFVOU1BFQ19USF9WTFNXICJ3IikgKFVOU1BFQ19USF9WTFNXVSAid3UiKQorwqAg KFVOU1BFQ19USF9WTFhCICJiIikgKFVOU1BFQ19USF9WTFhCVSAiYnUiKQorwqAgKFVOU1BFQ19U SF9WTFhIICJoIikgKFVOU1BFQ19USF9WTFhIVSAiaHUiKQorwqAgKFVOU1BFQ19USF9WTFhXICJ3 IikgKFVOU1BFQ19USF9WTFhXVSAid3UiKQorwqAgKFVOU1BFQ19USF9WU1VYQiAiYiIpCivCoCAo VU5TUEVDX1RIX1ZTVVhIICJoIikKK8KgIChVTlNQRUNfVEhfVlNVWFcgInciKQorXSkKKworKGRl ZmluZV9pbnRfYXR0ciB2bG1lbV9vcmRlcl9hdHRyIFsKK8KgIChVTlNQRUNfVEhfVkxYQiAiIikK K8KgIChVTlNQRUNfVEhfVkxYSCAiIikKK8KgIChVTlNQRUNfVEhfVkxYVyAiIikKK8KgIChVTlNQ RUNfVEhfVlNVWEIgInUiKQorwqAgKFVOU1BFQ19USF9WU1VYSCAidSIpCivCoCAoVU5TUEVDX1RI X1ZTVVhXICJ1IikKK10pCisKKyhkZWZpbmVfaW50X2l0ZXJhdG9yIFVOU1BFQ19USF9WU01FTV9P UCBbCivCoCBVTlNQRUNfVEhfVkxCCivCoCBVTlNQRUNfVEhfVkxICivCoCBVTlNQRUNfVEhfVkxX CitdKQorCisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhfVlNTTUVNX09QIFsKK8KgIFVO U1BFQ19USF9WTFNCCivCoCBVTlNQRUNfVEhfVkxTSAorwqAgVU5TUEVDX1RIX1ZMU1cKK10pCisK KyhkZWZpbmVfaW50X2l0ZXJhdG9yIFVOU1BFQ19USF9WU1hNRU1fT1AgWworwqAgVU5TUEVDX1RI X1ZMWEIKK8KgIFVOU1BFQ19USF9WTFhICivCoCBVTlNQRUNfVEhfVkxYVworwqAgVU5TUEVDX1RI X1ZTVVhCCivCoCBVTlNQRUNfVEhfVlNVWEgKK8KgIFVOU1BFQ19USF9WU1VYVworXSkKKwogKGRl ZmluZV9tb2RlX2l0ZXJhdG9yIFZfVkxTX1ZUIFtWIFZMUyBWVF0pCiAoZGVmaW5lX21vZGVfaXRl cmF0b3IgVl9WQl9WTFNfVlQgW1YgVkIgVkxTIFZUXSkKIApAQCAtMTAwLDMgKzE4OCwxNjUgQEAK wqDCoCB9CsKgwqAgWyhzZXRfYXR0ciAidHlwZSIgInZsZG0sdnN0bSx2bWFsdSx2bWFsdSx2bWFs dSIpCsKgwqDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfZXhwYW5k ICJAcHJlZF9tb3Zfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivCoCBbKHNldCAobWF0Y2hf b3BlcmFuZDpWX1ZMUyAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIpCivCoMKgwqAgKGlmX3RoZW5f ZWxzZTpWX1ZMUworwqDCoMKgwqDCoCAodW5zcGVjOjxWTT4KKwlbKG1hdGNoX29wZXJhbmQ6PFZN PiAxICJ2ZWN0b3JfbWFza19vcGVyYW5kIikKKwkgKG1hdGNoX29wZXJhbmQgNCAidmVjdG9yX2xl bmd0aF9vcGVyYW5kIikKKwkgKG1hdGNoX29wZXJhbmQgNSAiY29uc3RfaW50X29wZXJhbmQiKQor CSAobWF0Y2hfb3BlcmFuZCA2ICJjb25zdF9pbnRfb3BlcmFuZCIpCisJIChtYXRjaF9vcGVyYW5k IDcgImNvbnN0X2ludF9vcGVyYW5kIikKKwkgKHJlZzpTSSBWTF9SRUdOVU0pCisJIChyZWc6U0kg VlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZMTUVNX09QKQorwqDCoMKgwqDCoCAobWF0Y2hfb3Bl cmFuZDpWX1ZMUyAzICJ2ZWN0b3JfbW92ZV9vcGVyYW5kIikKK8KgwqDCoMKgwqAgKG1hdGNoX29w ZXJhbmQ6Vl9WTFMgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiKSkpXQorwqAgIlRBUkdFVF9YVEhF QURWRUNUT1IiCivCoCB7fSkKKworKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKnByZWRfbW92X3dp ZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9WTFMg MCAibm9uaW1tZWRpYXRlX29wZXJhbmQiCcKgwqDCoCAiPXZyLMKgwqDCoCB2cizCoMKgwqAgdmQs wqDCoMKgwqAgbSzCoMKgwqAgdnIswqDCoMKgIHZyIikKK8KgwqDCoCAoaWZfdGhlbl9lbHNlOlZf VkxTCivCoMKgwqDCoMKgICh1bnNwZWM6PFZNPgorCVsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEgInZl Y3Rvcl9tYXNrX29wZXJhbmQiCcKgwqAgInZtV2MxLMKgwqAgV2MxLMKgwqDCoCB2bSwgdm1XYzEs wqDCoCBXYzEswqDCoCBXYzEiKQorCSAobWF0Y2hfb3BlcmFuZCA0ICJ2ZWN0b3JfbGVuZ3RoX29w ZXJhbmQiCcKgwqDCoMKgwqAgIsKgwqAgcksswqDCoMKgIHJLLMKgwqDCoCBySyzCoMKgwqAgckss wqDCoMKgIHJLLMKgwqDCoCBySyIpCisJIChtYXRjaF9vcGVyYW5kIDUgImNvbnN0X2ludF9vcGVy YW5kIgkJwqAgIsKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDC oMKgIGkswqDCoMKgwqAgaSIpCisJIChtYXRjaF9vcGVyYW5kIDYgImNvbnN0X2ludF9vcGVyYW5k IgkJwqAgIsKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKg IGkswqDCoMKgwqAgaSIpCisJIChtYXRjaF9vcGVyYW5kIDcgImNvbnN0X2ludF9vcGVyYW5kIgkJ wqAgIsKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGks wqDCoMKgwqAgaSIpCisJIChyZWc6U0kgVkxfUkVHTlVNKQorCSAocmVnOlNJIFZUWVBFX1JFR05V TSldIFVOU1BFQ19USF9WTE1FTV9PUCkKK8KgwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQ6Vl9WTFMg MyAicmVnX29yX21lbV9vcGVyYW5kIgnCoMKgwqDCoMKgICLCoMKgwqAgbSzCoMKgwqDCoCBtLMKg wqDCoMKgIG0swqDCoMKgIHZyLMKgwqDCoCB2cizCoMKgwqAgdnIiKQorwqDCoMKgwqDCoCAobWF0 Y2hfb3BlcmFuZDpWX1ZMUyAyICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCIJwqDCoMKgICLCoMKgwqAg MCzCoMKgwqAgdnUswqDCoMKgIHZ1LMKgwqDCoCB2dSzCoMKgwqAgdnUswqDCoMKgwqAgMCIpKSld CivCoCAiKFRBUkdFVF9YVEhFQURWRUNUT1IKK8KgwqDCoCAmJiAocmVnaXN0ZXJfb3BlcmFuZCAo b3BlcmFuZHNbMF0sIDxNT0RFPm1vZGUpCisJfHwgcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNb M10sIDxNT0RFPm1vZGUpKSkiCivCoCAiQAorwqDCoCB2bDx2bG1lbV9vcF9hdHRyPi52XHQlMCwl MyVwMQorwqDCoCB2bDx2bG1lbV9vcF9hdHRyPi52XHQlMCwlMworwqDCoCB2bDx2bG1lbV9vcF9h dHRyPi52XHQlMCwlMywlMS50CivCoMKgIHZzPHZsbWVtX29wX2F0dHI+LnZcdCUzLCUwJXAxCivC oMKgIHZtdi52LnZcdCUwLCUzCivCoMKgIHZtdi52LnZcdCUwLCUzIgorwqAgIiYmIHJpc2N2X3Zl Y3Rvcjo6d2hvbGVfcmVnX3RvX3JlZ19tb3ZlX3AgKG9wZXJhbmRzLCA8TU9ERT5tb2RlLCA3KSIK K8KgIFsoc2V0IChtYXRjaF9kdXAgMCkgKG1hdGNoX2R1cCAzKSldCivCoCAiIgorwqAgWyhzZXRf YXR0ciAidHlwZSIgInZsZGUsdmxkZSx2bGRlLHZzdGUsdmltb3Ysdmltb3YiKQorwqDCoCAoc2V0 X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfaW5zbiAiQHByZWRfc3RvcmVfd2lk dGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivCoCBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJt ZW1vcnlfb3BlcmFuZCIJCSAiK20iKQorCShpZl90aGVuX2Vsc2U6VkkKKwnCoCAodW5zcGVjOjxW TT4KKwnCoMKgwqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tfb3BlcmFuZCIg InZtV2MxIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCAzICJ2ZWN0b3JfbGVuZ3RoX29wZXJh bmQiwqDCoMKgICLCoMKgIHJLIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA0ICJjb25zdF9p bnRfb3BlcmFuZCIJIsKgwqDCoCBpIikKKwnCoMKgwqDCoCAocmVnOlNJIFZMX1JFR05VTSkKKwnC oMKgwqDCoCAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WU01FTV9PUCkKKwnCoCAo bWF0Y2hfb3BlcmFuZDpWSSAyICJyZWdpc3Rlcl9vcGVyYW5kIgkgIsKgwqDCoCB2ciIpCisJwqAg KG1hdGNoX2R1cCAwKSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAidnM8dmxtZW1f b3BfYXR0cj4udlx0JTIsJTAlcDEiCivCoCBbKHNldF9hdHRyICJ0eXBlIiAidnN0ZSIpCivCoMKg IChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpCivCoMKgIChzZXQgKGF0dHIgImF2bF90eXBlX2lk eCIpIChjb25zdF9pbnQgNCkpCivCoMKgIChzZXRfYXR0ciAidmxfb3BfaWR4IiAiMyIpXSkKKwor KGRlZmluZV9pbnNuICJAcHJlZF9zdHJpZGVkX2xvYWRfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9k ZT4iCivCoCBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVyYW5kIgnCoMKg wqDCoMKgICI9dnIswqDCoMKgIHZyLMKgwqDCoCB2ZCIpCisJKGlmX3RoZW5fZWxzZTpWSQorCcKg ICh1bnNwZWM6PFZNPgorCcKgwqDCoCBbKG1hdGNoX29wZXJhbmQ6PFZNPiAxICJ2ZWN0b3JfbWFz a19vcGVyYW5kIiAidm1XYzEswqDCoCBXYzEswqDCoMKgIHZtIikKKwnCoMKgwqDCoCAobWF0Y2hf b3BlcmFuZCA1ICJ2ZWN0b3JfbGVuZ3RoX29wZXJhbmQiwqDCoMKgICLCoMKgIHJLLMKgwqDCoCBy SyzCoMKgwqAgcksiKQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kIDYgImNvbnN0X2ludF9vcGVy YW5kIgkiwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpIikKKwnCoMKgwqDCoCAobWF0Y2hf b3BlcmFuZCA3ICJjb25zdF9pbnRfb3BlcmFuZCIJIsKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKg wqAgaSIpCisJwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQgOCAiY29uc3RfaW50X29wZXJhbmQiCSLC oMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGkiKQorCcKgwqDCoMKgIChyZWc6U0kgVkxfUkVH TlVNKQorCcKgwqDCoMKgIChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZMU01FTV9P UCkKKwnCoCAodW5zcGVjOlZJCisJwqDCoMKgIFsobWF0Y2hfb3BlcmFuZDpWSSAzICJtZW1vcnlf b3BlcmFuZCIJICLCoMKgwqAgbSzCoMKgwqDCoCBtLMKgwqDCoMKgIG0iKQorCcKgwqDCoMKgICht YXRjaF9vcGVyYW5kIDQgInBtb2RlX3JlZ19vcl8wX29wZXJhbmQiwqDCoCAiwqDCoCBySizCoMKg wqAgckoswqDCoMKgIHJKIildIFVOU1BFQ19USF9WTFNNRU1fT1ApCisJwqAgKG1hdGNoX29wZXJh bmQ6VkkgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiwqDCoMKgwqDCoCAiwqDCoMKgIDAswqDCoMKg IHZ1LMKgwqDCoCB2dSIpKSldCivCoCAiVEFSR0VUX1hUSEVBRFZFQ1RPUiIKK8KgICJ2bHM8dmxt ZW1fb3BfYXR0cj4udlx0JTAsJTMsJXo0JXAxIgorwqAgWyhzZXRfYXR0ciAidHlwZSIgInZsZHMi KQorwqDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfaW5zbiAiQHBy ZWRfc3RyaWRlZF9zdG9yZV93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiIKK8KgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlZJIDAgIm1lbW9yeV9vcGVyYW5kIgkJICIrbSIpCisJKGlmX3RoZW5fZWxz ZTpWSQorCcKgICh1bnNwZWM6PFZNPgorCcKgwqDCoCBbKG1hdGNoX29wZXJhbmQ6PFZNPiAxICJ2 ZWN0b3JfbWFza19vcGVyYW5kIiAidm1XYzEiKQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kIDQg InZlY3Rvcl9sZW5ndGhfb3BlcmFuZCLCoMKgwqAgIsKgwqAgcksiKQorCcKgwqDCoMKgIChtYXRj aF9vcGVyYW5kIDUgImNvbnN0X2ludF9vcGVyYW5kIgkiwqDCoMKgIGkiKQorCcKgwqDCoMKgIChy ZWc6U0kgVkxfUkVHTlVNKQorCcKgwqDCoMKgIChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVD X1RIX1ZTU01FTV9PUCkKKwnCoCAodW5zcGVjOlZJCisJwqDCoMKgIFsobWF0Y2hfb3BlcmFuZCAy ICJwbW9kZV9yZWdfb3JfMF9vcGVyYW5kIsKgwqAgIsKgwqAgckoiKQorCcKgwqDCoMKgIChtYXRj aF9vcGVyYW5kOlZJIDMgInJlZ2lzdGVyX29wZXJhbmQiwqDCoMKgwqDCoMKgICLCoMKgIHZyIild IFVOU1BFQ19USF9WU1NNRU1fT1ApCisJwqAgKG1hdGNoX2R1cCAwKSkpXQorwqAgIlRBUkdFVF9Y VEhFQURWRUNUT1IiCivCoCAidnNzPHZsbWVtX29wX2F0dHI+LnZcdCUzLCUwLCV6MiVwMSIKK8Kg IFsoc2V0X2F0dHIgInR5cGUiICJ2c3RzIikKK8KgwqAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+ IikKK8KgwqAgKHNldCAoYXR0ciAiYXZsX3R5cGVfaWR4IikgKGNvbnN0X2ludCA1KSldKQorCiso ZGVmaW5lX2luc24gIkBwcmVkX2luZGV4ZWRfbG9hZF93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2Rl PiIKK8KgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZJIDAgInJlZ2lzdGVyX29wZXJhbmQiCcKgwqDC oMKgICI9dmQsIHZyLHZkLCB2ciIpCisJKGlmX3RoZW5fZWxzZTpWSQorCcKgICh1bnNwZWM6PFZN PgorCcKgwqDCoCBbKG1hdGNoX29wZXJhbmQ6PFZNPiAxICJ2ZWN0b3JfbWFza19vcGVyYW5kIsKg ICIgdm0sV2MxLHZtLFdjMSIpCisJwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQgNSAidmVjdG9yX2xl bmd0aF9vcGVyYW5kIsKgwqDCoMKgICIgckssIHJLLHJLLCBySyIpCisJwqDCoMKgwqAgKG1hdGNo X29wZXJhbmQgNiAiY29uc3RfaW50X29wZXJhbmQiCSAiwqAgaSzCoCBpLCBpLMKgIGkiKQorCcKg wqDCoMKgIChtYXRjaF9vcGVyYW5kIDcgImNvbnN0X2ludF9vcGVyYW5kIgkgIsKgIGkswqAgaSwg aSzCoCBpIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA4ICJjb25zdF9pbnRfb3BlcmFuZCIJ ICLCoCBpLMKgIGksIGkswqAgaSIpCisJwqDCoMKgwqAgKHJlZzpTSSBWTF9SRUdOVU0pCisJwqDC oMKgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVkxYTUVNX09QKQorCcKgICh1 bnNwZWM6VkkKKwnCoMKgwqAgWyhtYXRjaF9vcGVyYW5kIDMgInBtb2RlX3JlZ19vcl8wX29wZXJh bmQiwqDCoMKgICIgckosIHJKLHJKLCBySiIpCisJwqDCoMKgwqAgKG1lbTpCTEsgKHNjcmF0Y2gp KQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kOlZJIDQgInJlZ2lzdGVyX29wZXJhbmQiICIgdnIs IHZyLHZyLCB2ciIpXSBVTlNQRUNfVEhfVkxYTUVNX09QKQorCcKgIChtYXRjaF9vcGVyYW5kOlZJ IDIgInZlY3Rvcl9tZXJnZV9vcGVyYW5kIsKgwqDCoMKgwqDCoCAiIHZ1LCB2dSwgMCzCoCAwIikp KV0KK8KgICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorwqAgInZseDx2bG1lbV9vcF9hdHRyPi52XHQl MCwoJXozKSwlNCVwMSIKK8KgIFsoc2V0X2F0dHIgInR5cGUiICJ2bGR1eCIpCivCoMKgIChzZXRf YXR0ciAibW9kZSIgIjxNT0RFPiIpXSkKKworKGRlZmluZV9pbnNuICJAcHJlZF9pbmRleGVkXzx2 bG1lbV9vcmRlcl9hdHRyPnN0b3JlX3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhz ZXQgKG1lbTpCTEsgKHNjcmF0Y2gpKQorCSh1bnNwZWM6QkxLCisJwqAgWyh1bnNwZWM6PFZNPgor CcKgwqDCoCBbKG1hdGNoX29wZXJhbmQ6PFZNPiAwICJ2ZWN0b3JfbWFza19vcGVyYW5kIiAidm1X YzEiKQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kIDQgInZlY3Rvcl9sZW5ndGhfb3BlcmFuZCLC oMKgwqAgIsKgwqAgcksiKQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kIDUgImNvbnN0X2ludF9v cGVyYW5kIgkiwqDCoMKgIGkiKQorCcKgwqDCoMKgIChyZWc6U0kgVkxfUkVHTlVNKQorCcKgwqDC oMKgIChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZTWE1FTV9PUCkKKwnCoMKgICht YXRjaF9vcGVyYW5kIDEgInBtb2RlX3JlZ19vcl8wX29wZXJhbmQiwqDCoMKgwqDCoCAiwqAgckoi KQorCcKgwqAgKG1hdGNoX29wZXJhbmQ6VkkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgIsKgIHZyIikK KwnCoMKgIChtYXRjaF9vcGVyYW5kOlZJIDMgInJlZ2lzdGVyX29wZXJhbmQiwqAgIsKgIHZyIild IFVOU1BFQ19USF9WU1hNRU1fT1ApKV0KK8KgICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorwqAgInZz PHZsbWVtX29yZGVyX2F0dHI+eDx2bG1lbV9vcF9hdHRyPi52XHQlMywoJXoxKSwlMiVwMCIKK8Kg IFsoc2V0X2F0dHIgInR5cGUiICJ2c3R1eCIpCivCoMKgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RF PiIpXSkKKworKGRlZmluZV9leHBhbmQgIkBwcmVkX3RoX2V4dHJhY3Q8bW9kZT4iCivCoCBbKHNl dCAobWF0Y2hfb3BlcmFuZDo8VkVMPiAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKwkodW5zcGVjOjxW RUw+CisJwqAgWyh2ZWNfc2VsZWN0OjxWRUw+CisJwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQ6Vl9W TFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiKQorCcKgwqDCoMKgIChwYXJhbGxlbCBbKG1hdGNoX29w ZXJhbmQ6REkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKV0pKQorCcKgwqAgKHJlZzpTSSBWVFlQ RV9SRUdOVU0pXSBVTlNQRUNfVlBSRURJQ0FURSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1Ii Cit7fSkKKworKGRlZmluZV9pbnNuICIqcHJlZF90aF9leHRyYWN0PG1vZGU+IgorwqAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6PFZFTD4gMCAicmVnaXN0ZXJfb3BlcmFuZCLCoMKgICI9ciIpCivCoCAo dW5zcGVjOjxWRUw+CivCoMKgwqAgWyh2ZWNfc2VsZWN0OjxWRUw+CivCoMKgwqDCoMKgwqAgKG1h dGNoX29wZXJhbmQ6Vl9WTFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2ciIpCivCoMKgwqDCoMKg wqAgKHBhcmFsbGVsIFsobWF0Y2hfb3BlcmFuZDpESSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIp XSkpCivCoMKgwqDCoCAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19WUFJFRElDQVRFKSld CivCoCAiVEFSR0VUX1hUSEVBRFZFQ1RPUiIKK8KgICJ2ZXh0Lngudlx0JTAsJTEsJTIiCivCoCBb KHNldF9hdHRyICJ0eXBlIiAidmltb3Z2eCIpCivCoMKgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RF PiIpXSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRo ZWFkdmVjdG9yL3ZsYi12c2IuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYv eHRoZWFkdmVjdG9yL3ZsYi12c2IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uM2MxMmMxMjQ1OTcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGItdnNiLmMKQEAgLTAsMCArMSw2OCBAQAor LyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3h0 aGVhZHZlY3RvciAtbWFiaT1pbHAzMmQgLU8zIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2hlY2st ZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgfSB9ICovCisjaW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9y LmgiCisKKy8qCisqKiBmMToKKyoqCXRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG1hCisq Kgl0aC52bGJcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZsYlwudlx0dlswLTld KywwXChbYS14MC05XStcKQorKioJdGgudmFkZFwudnZcdHZbMC05XSssXHMqdlswLTldKyxccyp2 WzAtOV0rCisqKgl0aC52YWRkXC52dlx0dlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSsKKyoq CXRoLnZzYlwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJcmV0CisqLwordm9pZCBmMSAo dm9pZCAqIGluLCB2b2lkICpvdXQpCit7CivCoMKgwqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90 aF92bGJfdl9pMzJtMSAoaW4sIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3Ro X3ZsYl92X2kzMm0xX3R1ICh2LCBpbiwgNCk7CivCoMKgwqAgdmludDMybTFfdCB2MyA9IF9fcmlz Y3ZfdmFkZF92dl9pMzJtMSAodjIsIHYyLCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHY0ID0gX19y aXNjdl92YWRkX3Z2X2kzMm0xX3R1ICh2MywgdjIsIHYyLCA0KTsKK8KgwqDCoCBfX3Jpc2N2X3Ro X3ZzYl92X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYyOgorKioJdGgudnNldHZs aVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKgl0aC52bG0udlx0dlswLTldKywwXChb YS14MC05XStcKQorKioJdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWEKKyoqCXRoLnZs Yi52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoqCXRoLnZhZGRcLnZ2XHR2WzAtOV0r LFxzKnZbMC05XSssXHMqdlswLTldKworKioJdGgudmFkZFwudnZcdHZbMS05XVswLTldPyxccyp2 WzAtOV0rLFxzKnZbMC05XSssXHMqdjAudAorKioJdGgudnNiLnZcdHZbMC05XSssMFwoW2EteDAt OV0rXCkKKyoqCXJldAorKi8KK3ZvaWQgZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0KQoreworwqDC oMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3QqKWluOworwqDCoMKgIGFzbSB2b2xhdGls ZSAoIiI6OjoibWVtb3J5Iik7CivCoMKgwqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGJf dl9pMzJtMSAoaW4sIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsYl92 X2kzMm0xX20gKG1hc2ssIGluLCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHYzID0gX19yaXNjdl92 YWRkX3Z2X2kzMm0xICh2MiwgdjIsIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2 X3ZhZGRfdnZfaTMybTFfbSAobWFzaywgdjMsIHYzLCA0KTsKK8KgwqDCoCBfX3Jpc2N2X3RoX3Zz Yl92X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKioJdGgudnNldHZsaVx0 W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKgl0aC52bG0udlx0dlswLTldKywwXChbYS14 MC05XStcKQorKioJdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUKKyoqCXRoLnZsYlwu dlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgudmxiLnZcdHZbMC05XSssMFwoW2EteDAt OV0rXCksdjAudAorKioJdGgudmFkZFwudnZcdHZbMC05XSssXHMqdlswLTldKyxccyp2WzAtOV0r CisqKgl0aC52YWRkXC52dlx0dlsxLTldWzAtOV0/LFxzKnZbMC05XSssXHMqdlswLTldKyxccyp2 MC50CisqKgl0aC52c2Iudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJcmV0CisqLwordm9p ZCBmMyAodm9pZCAqIGluLCB2b2lkICpvdXQpCit7CivCoMKgwqAgdmJvb2wzMl90IG1hc2sgPSAq KHZib29sMzJfdCopaW47CivCoMKgwqAgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKK8Kg wqDCoCB2aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsYl92X2kzMm0xIChpbiwgNCk7CivCoMKg wqAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxiX3ZfaTMybTFfdHVtdSAobWFzaywgdiwg aW4sIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnZfaTMybTEgKHYy LCB2MiwgNCk7CivCoMKgwqAgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92dl9pMzJtMV90 dW11IChtYXNrLCB2MywgdjIsIHYyLCA0KTsKK8KgwqDCoCBfX3Jpc2N2X3RoX3ZzYl92X2kzMm0x IChvdXQsIHY0LCA0KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYnUtdnNiLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGJ1LXZzYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi4zMGJlZjM2OTM3NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYnUtdnNiLmMKQEAg LTAsMCArMSw2OCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LW1hcmNoPXJ2MzJnY3h0aGVhZHZlY3RvciAtbWFiaT1pbHAzMmQgLU8zIiB9ICovCisvKiB7IGRn LWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgfSB9ICovCisjaW5jbHVkZSAi cmlzY3ZfdGhfdmVjdG9yLmgiCisKKy8qCisqKiBmMToKKyoqCXRoLnZzZXRpdmxpXHR6ZXJvLDQs ZTMyLG0xLHR1LG1hCisqKgl0aC52bGJ1XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKgl0 aC52bGJ1XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKgl0aC52YWRkXC52aVx0dlswLTld Kyxccyp2WzAtOV0rLFxzKi0xNgorKioJdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxc cyotMTYKKyoqCXRoLnZzYlwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJcmV0CisqLwor dm9pZCBmMSAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoMKgwqAgdnVp bnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xIChpbiwgNCk7CivCoMKgwqAgdnVp bnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsYnVfdl91MzJtMV90dSAodiwgaW4sIDQpOworwqDC oMKgIHZ1aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsK K8KgwqDCoCB2dWludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMV90dSAodjMsIHYy LCAtMTYsIDQpOworwqDCoMKgIF9fcmlzY3ZfdGhfdnNiX3ZfdTMybTEgKG91dCwgdjQsIDQpOwor fQorCisvKgorKiogZjI6CisqKgl0aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQsdGEs bWEKKyoqCXRoLnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKgl0aC52c2V0aXZsaVx0 emVybyw0LGUzMixtMSx0YSxtYQorKioJdGgudmxidS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wp LHYwLnQKKyoqCXRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2CisqKgl0aC52 YWRkXC52aVx0dlsxLTldWzAtOV0/LFxzKnZbMC05XSssXHMqLTE2LFxzKnYwLnQKKyoqCXRoLnZz Yi52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKglyZXQKKyovCit2b2lkIGYyICh2b2lkICog aW4sIHZvaWQgKm91dCwgdWludDMyX3QgeCkKK3sKK8KgwqDCoCB2Ym9vbDMyX3QgbWFzayA9ICoo dmJvb2wzMl90KilpbjsKK8KgwqDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqDC oMKgIHZ1aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsYnVfdl91MzJtMSAoaW4sIDQpOworwqDC oMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGJ1X3ZfdTMybTFfbSAobWFzaywgaW4s IDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xICh2Miwg LTE2LCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMV9t IChtYXNrLCB2MywgLTE2LCA0KTsKK8KgwqDCoCBfX3Jpc2N2X3RoX3ZzYl92X3UzMm0xIChvdXQs IHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKioJdGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8s ZTgsbWY0LHRhLG1hCisqKgl0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgu dnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUKKyoqCXRoLnZsYnVcLnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCkKKyoqCXRoLnZsYnUudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50Cisq Kgl0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKioJdGgudmFkZFwudmlc dHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50CisqKgl0aC52c2Iudlx0dlsw LTldKywwXChbYS14MC05XStcKQorKioJcmV0CisqLwordm9pZCBmMyAodm9pZCAqIGluLCB2b2lk ICpvdXQsIHVpbnQzMl90IHgpCit7CivCoMKgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJf dCopaW47CivCoMKgwqAgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKK8KgwqDCoCB2dWlu dDMybTFfdCB2ID0gX19yaXNjdl90aF92bGJ1X3ZfdTMybTEgKGluLCA0KTsKK8KgwqDCoCB2dWlu dDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xX3R1bXUgKG1hc2ssIHYsIGluLCA0 KTsKK8KgwqDCoCB2dWludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMSAodjIsIC0x NiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTFfdHVt dSAobWFzaywgdjMsIHYyLCAtMTYsIDQpOworwqDCoMKgIF9fcmlzY3ZfdGhfdnNiX3ZfdTMybTEg KG91dCwgdjQsIDQpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di94dGhlYWR2ZWN0b3IvdmxoLXZzaC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxoLXZzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4zYzhiNWNjYzE2YgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaC12c2guYwpAQCAtMCww ICsxLDY4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWFy Y2g9cnYzMmdjeHRoZWFkdmVjdG9yIC1tYWJpPWlscDMyZCAtTzMiIH0gKi8KKy8qIHsgZGctZmlu YWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiB9IH0gKi8KKyNpbmNsdWRlICJyaXNj dl90aF92ZWN0b3IuaCIKKworLyoKKyoqIGYxOgorKioJdGgudnNldGl2bGlcdHplcm8sNCxlMzIs bTEsdHUsbWEKKyoqCXRoLnZsaFwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgudmxo XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKgl0aC52YWRkXC52aVx0dlswLTldKyxccyp2 WzAtOV0rLFxzKi0xNgorKioJdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYK KyoqCXRoLnZzaFwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJcmV0CisqLwordm9pZCBm MSAodm9pZCAqIGluLCB2b2lkICpvdXQsIGludDMyX3QgeCkKK3sKK8KgwqDCoCB2aW50MzJtMV90 IHYgPSBfX3Jpc2N2X3RoX3ZsaF92X2kzMm0xIChpbiwgNCk7CivCoMKgwqAgdmludDMybTFfdCB2 MiA9IF9fcmlzY3ZfdGhfdmxoX3ZfaTMybTFfdHUgKHYsIGluLCA0KTsKK8KgwqDCoCB2aW50MzJt MV90IHYzID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xICh2MiwgLTE2LCA0KTsKK8KgwqDCoCB2aW50 MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xX3R1ICh2MywgdjIsIC0xNiwgNCk7CivC oMKgwqAgX19yaXNjdl90aF92c2hfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBm MjoKKyoqCXRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQorKioJdGgudmxt LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0x LHRhLG1hCisqKgl0aC52bGgudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKgl0aC52 YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKioJdGgudmFkZFwudmlcdHZbMS05 XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50CisqKgl0aC52c2gudlx0dlswLTldKyww XChbYS14MC05XStcKQorKioJcmV0CisqLwordm9pZCBmMiAodm9pZCAqIGluLCB2b2lkICpvdXQs IGludDMyX3QgeCkKK3sKK8KgwqDCoCB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsK K8KgwqDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqDCoMKgIHZpbnQzMm0xX3Qg diA9IF9fcmlzY3ZfdGhfdmxoX3ZfaTMybTEgKGluLCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHYy ID0gX19yaXNjdl90aF92bGhfdl9pMzJtMV9tIChtYXNrLCBpbiwgNCk7CivCoMKgwqAgdmludDMy bTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMSAodjIsIC0xNiwgNCk7CivCoMKgwqAgdmlu dDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV9tIChtYXNrLCB2MywgLTE2LCA0KTsK K8KgwqDCoCBfX3Jpc2N2X3RoX3ZzaF92X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoq IGYzOgorKioJdGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKgl0aC52 bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgudnNldGl2bGlcdHplcm8sNCxlMzIs bTEsdHUsbXUKKyoqCXRoLnZsaFwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgudmxo LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAudAorKioJdGgudmFkZFwudmlcdHZbMC05XSss XHMqdlswLTldKyxccyotMTYKKyoqCXRoLnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTld KyxccyotMTYsXHMqdjAudAorKioJdGgudnNoLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoq CXJldAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCBpbnQzMl90IHgpCit7CivC oMKgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47CivCoMKgwqAgYXNtIHZvbGF0 aWxlICgiIjo6OiJtZW1vcnkiKTsKK8KgwqDCoCB2aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3Zs aF92X2kzMm0xIChpbiwgNCk7CivCoMKgwqAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxo X3ZfaTMybTFfdHVtdSAobWFzaywgdiwgaW4sIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjMgPSBf X3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCAtMTYsIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjQg PSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCAtMTYsIDQpOworwqDC oMKgIF9fcmlzY3ZfdGhfdnNoX3ZfaTMybTEgKG91dCwgdjQsIDQpOworfQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxodS12c2gu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaHUt dnNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI3YzAwNDA0ZjE4 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94 dGhlYWR2ZWN0b3IvdmxodS12c2guYwpAQCAtMCwwICsxLDY4IEBACisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnYzMmdjeHRoZWFkdmVjdG9yIC1tYWJp PWlscDMyZCAtTzMiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMg IioqIiAiIiB9IH0gKi8KKyNpbmNsdWRlICJyaXNjdl90aF92ZWN0b3IuaCIKKworLyoKKyoqIGYx OgorKioJdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbWEKKyoqCXRoLnZsaHVcLnZcdHZb MC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZsaHVcLnZcdHZbMC05XSssMFwoW2EteDAtOV0r XCkKKyoqCXRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2CisqKgl0aC52YWRk XC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKioJdGgudnNoXC52XHR2WzAtOV0rLDBc KFthLXgwLTldK1wpCisqKglyZXQKKyovCit2b2lkIGYxICh2b2lkICogaW4sIHZvaWQgKm91dCwg dWludDMyX3QgeCkKK3sKK8KgwqDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGh1X3Zf dTMybTEgKGluLCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxodV92 X3UzMm0xX3R1ICh2LCBpbiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3Zh ZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNj dl92YWRkX3Z4X3UzMm0xX3R1ICh2MywgdjIsIC0xNiwgNCk7CivCoMKgwqAgX19yaXNjdl90aF92 c2hfdl91MzJtMSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMjoKKyoqCXRoLnZzZXR2bGlc dFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQorKioJdGgudmxtLnZcdHZbMC05XSssMFwoW2Et eDAtOV0rXCkKKyoqCXRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHRhLG1hCisqKgl0aC52bGh1 LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAudAorKioJdGgudmFkZFwudmlcdHZbMC05XSss XHMqdlswLTldKyxccyotMTYKKyoqCXRoLnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTld KyxccyotMTYsXHMqdjAudAorKioJdGgudnNoLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoq CXJldAorKi8KK3ZvaWQgZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQorewor wqDCoMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3QqKWluOworwqDCoMKgIGFzbSB2b2xh dGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoMKgwqAgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhf dmxodV92X3UzMm0xIChpbiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3Ro X3ZsaHVfdl91MzJtMV9tIChtYXNrLCBpbiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjMgPSBf X3Jpc2N2X3ZhZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHY0 ID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xX20gKG1hc2ssIHYzLCAtMTYsIDQpOworwqDCoMKgIF9f cmlzY3ZfdGhfdnNoX3ZfdTMybTEgKG91dCwgdjQsIDQpOworfQorCisvKgorKiogZjM6CisqKgl0 aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQsdGEsbWEKKyoqCXRoLnZsbS52XHR2WzAt OV0rLDBcKFthLXgwLTldK1wpCisqKgl0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtdQor KioJdGgudmxodVwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgudmxodS52XHR2WzAt OV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoqCXRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZbMC05 XSssXHMqLTE2CisqKgl0aC52YWRkXC52aVx0dlsxLTldWzAtOV0/LFxzKnZbMC05XSssXHMqLTE2 LFxzKnYwLnQKKyoqCXRoLnZzaC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKglyZXQKKyov Cit2b2lkIGYzICh2b2lkICogaW4sIHZvaWQgKm91dCwgdWludDMyX3QgeCkKK3sKK8KgwqDCoCB2 Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgwqDCoCBhc20gdm9sYXRpbGUgKCIi Ojo6Im1lbW9yeSIpOworwqDCoMKgIHZ1aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsaHVfdl91 MzJtMSAoaW4sIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGh1X3Zf dTMybTFfdHVtdSAobWFzaywgdiwgaW4sIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHYzID0gX19y aXNjdl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2NCA9 IF9fcmlzY3ZfdmFkZF92eF91MzJtMV90dW11IChtYXNrLCB2MywgdjIsIC0xNiwgNCk7CivCoMKg wqAgX19yaXNjdl90aF92c2hfdl91MzJtMSAob3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE3YTUzMDEyYWNmCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhl YWR2ZWN0b3Ivdmx3LXZzdy5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxw MzJkIC1PMyIgfSAqLworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioi ICIiIH0gfSAqLworI2luY2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6Cisq Kgl0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtYQorKioJdGgudmx3XC52XHR2WzAtOV0r LDBcKFthLXgwLTldK1wpCisqKgl0aC52bHdcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoq CXRoLnZhZGRcLnZ4XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqW2EteDAtOV0rCisqKgl0aC52YWRk XC52eFx0dlswLTldKyxccyp2WzAtOV0rLFxzKlthLXgwLTldKworKioJdGgudnN3XC52XHR2WzAt OV0rLDBcKFthLXgwLTldK1wpCisqKglyZXQKKyovCit2b2lkIGYxICh2b2lkICogaW4sIHZvaWQg Km91dCwgaW50MzJfdCB4KQoreworwqDCoMKgIHZpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmx3 X3ZfaTMybTEgKGluLCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bHdf dl9pMzJtMV90dSAodiwgaW4sIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3Zh ZGRfdnhfaTMybTEgKHYyLCB4LCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHY0ID0gX19yaXNjdl92 YWRkX3Z4X2kzMm0xX3R1ICh2MywgdjIsIHgsIDQpOworwqDCoMKgIF9fcmlzY3ZfdGhfdnN3X3Zf aTMybTEgKG91dCwgdjQsIDQpOworfQorCisvKgorKiogZjI6CisqKgl0aC52c2V0dmxpXHRbYS14 MC05XSssemVybyxlOCxtZjQsdGEsbWEKKyoqCXRoLnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTld K1wpCisqKgl0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0YSxtYQorKioJdGgudmx3LnZcdHZb MC05XSssMFwoW2EteDAtOV0rXCksdjAudAorKioJdGgudmFkZFwudnhcdHZbMC05XSssXHMqdlsw LTldKyxccypbYS14MC05XSsKKyoqCXRoLnZhZGRcLnZ4XHR2WzEtOV1bMC05XT8sXHMqdlswLTld KyxccypbYS14MC05XSssXHMqdjAudAorKioJdGgudnN3LnZcdHZbMC05XSssMFwoW2EteDAtOV0r XCkKKyoqCXJldAorKi8KK3ZvaWQgZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCBpbnQzMl90IHgp Cit7CivCoMKgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47CivCoMKgwqAgYXNt IHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKK8KgwqDCoCB2aW50MzJtMV90IHYgPSBfX3Jpc2N2 X3RoX3Zsd192X2kzMm0xIChpbiwgNCk7CivCoMKgwqAgdmludDMybTFfdCB2MiA9IF9fcmlzY3Zf dGhfdmx3X3ZfaTMybTFfbSAobWFzaywgaW4sIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjMgPSBf X3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCB4LCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHY0ID0g X19yaXNjdl92YWRkX3Z4X2kzMm0xX20gKG1hc2ssIHYzLCB4LCA0KTsKK8KgwqDCoCBfX3Jpc2N2 X3RoX3Zzd192X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKioJdGgudnNl dHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKgl0aC52bG0udlx0dlswLTldKyww XChbYS14MC05XStcKQorKioJdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUKKyoqCXRo LnZsd1wudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgudmx3LnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCksdjAudAorKioJdGgudmFkZFwudnhcdHZbMC05XSssXHMqdlswLTldKyxccypb YS14MC05XSsKKyoqCXRoLnZhZGRcLnZ4XHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccypbYS14 MC05XSssXHMqdjAudAorKioJdGgudnN3LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXJl dAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCBpbnQzMl90IHgpCit7CivCoMKg wqAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47CivCoMKgwqAgYXNtIHZvbGF0aWxl ICgiIjo6OiJtZW1vcnkiKTsKK8KgwqDCoCB2aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3Zsd192 X2kzMm0xIChpbiwgNCk7CivCoMKgwqAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3X3Zf aTMybTFfdHVtdSAobWFzaywgdiwgaW4sIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jp c2N2X3ZhZGRfdnhfaTMybTEgKHYyLCB4LCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHY0ID0gX19y aXNjdl92YWRkX3Z4X2kzMm0xX3R1bXUgKG1hc2ssIHYzLCB2MiwgeCwgNCk7CivCoMKgwqAgX19y aXNjdl90aF92c3dfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHd1LXZzdy5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3dS12c3cuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjE4N2NmYzg1MmIKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bHd1LXZzdy5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJk IC1PMyIgfSAqLworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIi IH0gfSAqLworI2luY2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6CisqKgl0 aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtYQorKioJdGgudmx3dVwudlx0dlswLTldKyww XChbYS14MC05XStcKQorKioJdGgudmx3dVwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJ dGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqCXRoLnZhZGRcLnZpXHR2 WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2CisqKgl0aC52c3dcLnZcdHZbMC05XSssMFwoW2EteDAt OV0rXCkKKyoqCXJldAorKi8KK3ZvaWQgZjEgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJf dCB4KQoreworwqDCoMKgIHZ1aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3Zsd3Vfdl91MzJtMSAo aW4sIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bHd1X3ZfdTMybTFf dHUgKHYsIGluLCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF91 MzJtMSAodjIsIC0xNiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRf dnhfdTMybTFfdHUgKHYzLCB2MiwgLTE2LCA0KTsKK8KgwqDCoCBfX3Jpc2N2X3RoX3Zzd192X3Uz Mm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYyOgorKioJdGgudnNldHZsaVx0W2EteDAt OV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKgl0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStc KQorKioJdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWEKKyoqCXRoLnZsd3Uudlx0dlsw LTldKywwXChbYS14MC05XStcKSx2MC50CisqKgl0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAt OV0rLFxzKi0xNgorKioJdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0x Nixccyp2MC50CisqKgl0aC52c3cudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJcmV0Cisq Lwordm9pZCBmMiAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoMKgwqAg dmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47CivCoMKgwqAgYXNtIHZvbGF0aWxlICgi Ijo6OiJtZW1vcnkiKTsKK8KgwqDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bHd1X3Zf dTMybTEgKGluLCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3dV92 X3UzMm0xX20gKG1hc2ssIGluLCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2MyA9IF9fcmlzY3Zf dmFkZF92eF91MzJtMSAodjIsIC0xNiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jp c2N2X3ZhZGRfdnhfdTMybTFfbSAobWFzaywgdjMsIC0xNiwgNCk7CivCoMKgwqAgX19yaXNjdl90 aF92c3dfdl91MzJtMSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMzoKKyoqCXRoLnZzZXR2 bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQorKioJdGgudmxtLnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCkKKyoqCXRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG11CisqKgl0aC52 bHd1XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKgl0aC52bHd1LnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCksdjAudAorKioJdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyot MTYKKyoqCXRoLnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyotMTYsXHMqdjAu dAorKioJdGgudnN3LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXJldAorKi8KK3ZvaWQg ZjMgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQoreworwqDCoMKgIHZib29sMzJf dCBtYXNrID0gKih2Ym9vbDMyX3QqKWluOworwqDCoMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVt b3J5Iik7CivCoMKgwqAgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmx3dV92X3UzMm0xIChp biwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3Zsd3Vfdl91MzJtMV90 dW11IChtYXNrLCB2LCBpbiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3Zh ZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNj dl92YWRkX3Z4X3UzMm0xX3R1bXUgKG1hc2ssIHYzLCB2MiwgLTE2LCA0KTsKK8KgwqDCoCBfX3Jp c2N2X3RoX3Zzd192X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KLS0gCjIuMTcuMQrCoArCoArCoArC oAoKCg==