From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 1834 invoked from network); 26 Jul 2020 05:06:59 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 26 Jul 2020 05:06:59 -0000 Content-Type: multipart/mixed; boundary="===============1737438049232442783==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_bash=3A_stop_vendoring_patch?= To: ml@inbox.vuxu.org From: sgn Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sun, 26 Jul 2020 07:06:56 +0200 List-Id: Message-ID: <20200726050656.F5TB-8E-XoTrpS8mnfql_-7luBSII3Acy5rtPyam8pk@z> GitHub notification mails are now in MIME to allow UTF8. --===============1737438049232442783== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgc2duIGFnYWluc3QgbWFzdGVyIG9u IHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9zZ24vdm9p ZC1wYWNrYWdlcyBiYXNoLW5vLXZlbmRvcgpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvMjM4MjYKCmJhc2g6IHN0b3AgdmVuZG9yaW5nIHBhdGNoCi0gY2Fy cnkgdGhlbSBhbG9uZyB3b24ndCBnZXQgdXMgYW55d2hlcmUNCi0gdmVyaWZ5IGNoZWNrc3VtIGZv ciBsaWJyZWFkbGluZTgNCg0KY29uZmxpY3Qgd2l0aCAjMjM4MTUgCgpBIHBhdGNoIGZpbGUgZnJv bSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMjM4MjYu cGF0Y2ggaXMgYXR0YWNoZWQ= --===============1737438049232442783== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-bash-no-vendor-23826.patch" RnJvbSA2ODdlNWRiMThmN2I4YTQxZWFmMjBkZWMwNzYyZmZmMmRhMmU5NDQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/PUM0PTkwbz1DMz1BMG49MjBUcj1FMT1CQT1B N249MjBDPUMzPUI0bmc9MjBEYW5oPz0KIDxjb25nZGFuaHF4QGdtYWlsLmNvbT4KRGF0ZTogU2F0 LCAyNSBKdWwgMjAyMCAxMDoxNzowMSArMDcwMApTdWJqZWN0OiBbUEFUQ0ggMS80XSBnaXRhdHRy aWJ1dGVzOiBkb24ndCBzaG93IHdoaXRlc3BhY2UgZXJyb3Igb24gcGF0Y2hlcwoKLS0tCiAuZ2l0 YXR0cmlidXRlcyB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS8uZ2l0YXR0cmlidXRlcyBiLy5naXRhdHRyaWJ1dGVzCmluZGV4IDdmMjRhOGY4MWQw Li44ZGRhZTZmY2U0NSAxMDA2NDQKLS0tIGEvLmdpdGF0dHJpYnV0ZXMKKysrIGIvLmdpdGF0dHJp YnV0ZXMKQEAgLTEsMiArMSw0IEBACiB0ZW1wbGF0ZSBsaW5ndWlzdC1sYW5ndWFnZT1iYXNoCiBj b21tb24vc2hsaWJzIG1lcmdlPXVuaW9uCisqLnBhdGNoIHdoaXRlc3BhY2U9LXNwYWNlLWJlZm9y ZS10YWIsLXRyYWlsaW5nLXNwYWNlCisqLmRpZmYgd2hpdGVzcGFjZT0tc3BhY2UtYmVmb3JlLXRh YiwtdHJhaWxpbmctc3BhY2UKCkZyb20gNmE0MDAxNjE1NDAwZmYzMGVmODIxZTgwNzE0YTVhYmE2 MWEwODdkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xPz1DND05MG89 QzM9QTBuPTIwVHI9RTE9QkE9QTduPTIwQz1DMz1CNG5nPTIwRGFuaD89CiA8Y29uZ2RhbmhxeEBn bWFpbC5jb20+CkRhdGU6IFNhdCwgMjUgSnVsIDIwMjAgMTA6Mjg6NTcgKzA3MDAKU3ViamVjdDog W1BBVENIIDIvNF0gY2hyb290LWJhc2g6IHVwZGF0ZSB0byA1LjAuMDE4LgoKLS0tCiBzcmNwa2dz L2Nocm9vdC1iYXNoL3RlbXBsYXRlIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9vdC1iYXNoL3RlbXBsYXRlIGIvc3JjcGtncy9jaHJv b3QtYmFzaC90ZW1wbGF0ZQppbmRleCA5N2I4YTliZTgxZi4uNWYwMDMwNDc5ZDggMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvY2hyb290LWJhc2gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvb3QtYmFz aC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDkgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Nocm9vdC1i YXNoJwogcGtnbmFtZT1jaHJvb3QtYmFzaAotX2Jhc2hfZGlzdHZlcj01LjAKLV9iYXNoX3BhdGNo bGV2ZWw9MDE2CitfbWFqb3I9NQorX21pbm9yPTAKK19iYXNoX2Rpc3R2ZXI9IiR7X21ham9yfS4k e19taW5vcn0iCitfYmFzaF9wYXRjaGxldmVsPTAxOAogdmVyc2lvbj0iJHtfYmFzaF9kaXN0dmVy fS4ke19iYXNoX3BhdGNobGV2ZWx9IgogcmV2aXNpb249MQogd3Jrc3JjPSJiYXNoLSR7X2Jhc2hf ZGlzdHZlcn0iCkBAIC0xNSwxOCArMTcsNDQgQEAgbWFpbnRhaW5lcj0iRW5ubyBCb2xhbmQgPGdv dHRveEB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFn ZT0iaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Jhc2gvYmFzaC5odG1sIgogZGlzdGZpbGVz PSIke0dOVV9TSVRFfS9iYXNoL2Jhc2gtJHtfYmFzaF9kaXN0dmVyfS50YXIuZ3oiCi1jaGVja3N1 bT1iNGE4MGYyYWM2NjE3MGIyOTEzZWZiZmI5ZjI1OTRmMWY3NmM3YjFhZmQxMWY3OTllMjIwMzVk NjMwNzdmYjRkCisKK191cmw9IiR7R05VX1NJVEV9L2Jhc2gvYmFzaC0ke19iYXNoX2Rpc3R2ZXJ9 LXBhdGNoZXMiCitmb3IgX3AgaW4gJChzZXEgLXcgMDAxICR7X2Jhc2hfcGF0Y2hsZXZlbH0pOyBk bworCWRpc3RmaWxlcys9IiAke191cmx9L2Jhc2gke19tYWpvcn0ke19taW5vcn0tJHtfcH0iCisJ c2tpcF9leHRyYWN0aW9uKz0iIGJhc2gke19tYWpvcn0ke19taW5vcn0tJHtfcH0iCitkb25lCit1 bnNldCBfdXJsCit1bnNldCBfcAorCitjaGVja3N1bT0iYjRhODBmMmFjNjYxNzBiMjkxM2VmYmZi OWYyNTk0ZjFmNzZjN2IxYWZkMTFmNzk5ZTIyMDM1ZDYzMDc3ZmI0ZAorIGYyZmU5ZTFmMGZhZGRm MTRhYjliZmE4OGQ0NTBhNzVlNWQwMjhmZWRhZmFkMjNiODg3MTZiZDY1N2M3MzcyODkKKyA4N2U4 N2QzNTQyZTU5ODc5OWFkYjNlN2UwMWM4MTY1YmM3NDNlMTM2YTQwMGVkMGRlMDE1ODQ1ZjdmZjY4 NzA3CisgNGVlYmNkYzM3YjEzNzkzYTIzMmM1ZjJmNDk4YTVmY2JmN2RhMGVjYjNkYTIwNTkzOTFj MDk2ZGI2MjBlYzg1YgorIDE0NDQ3YWQ4MzJhZGQ4ZWNmYWZkY2U1Mzg0YmFkZDkzMzY5N2I1NTlj NDY4OGQ2YjllM2QzNmZmMzZjNjJmMDgKKyA1YmY1NGRkOWJkMmMyMTFkMmJmYjM0YTQ5ZTJjNzQx ZjJlZDVlMzM4NzY3ZTljZTlmNGQ0MTI1NGJmOWY4Mjc2CisgZDY4NTI5YTZmZjIwMWI2ZmY1OTE1 MzE4YWIxMmZjMTZiOGEwZWJiNzdmZGEzMzA4MzAzZmNjMWUxMzM5ODQyMAorIDE3YjQxZTdlZTM2 NzNkODg4N2RkMjU5OTI0MTdhMzk4Njc3NTMzYWI4ODI3OTM4YWE0MWZhZDcwZGYxOWFmOWIKKyBl ZWM2NDU4ODYyMmE4MmE1MDI5YjI3NzZlMjE4YTc1YTM2NDBiZWY0OTUzZjA5ZDZlZTFmNDE5OTY3 MGFkN2UzCisgZWQzY2EyMTc2NzMwM2ZjM2RlOTM5MzRhYTUyNGMyZTkyMDc4N2M1MDZiNjAxY2M0 MGE0ODk3ZDRiMDk0ZDkwMworIGQ2ZmJjMzI1ZjBiNWRjNTRkZGJlOGVlNDMwMjBiY2VkOGJkNTg5 ZGRmZmVhNTlkMTI4ZGIxNGIyZTUyYThhMTEKKyAyYzRkZTMzMmI5MWVhZjc5N2FiYmJkNmM3OTcw OTY5MGI1Y2JkNDhiMTJlOGRmZTc0ODA5NmRiZDdiZjQ3NGVhCisgMjk0M2VlMTk2ODgwMTgyOTZm MmEwNGRiZmUzMGI3MTM4Yjg4OTcwMGVmYThmZjFjMDUyNGFmMjcxZTBlZTIzMworIGY1ZDcxNzhk OGRhMzA3OTllMDFiODNhMDgwMjAxOGQ5MTNkNmFhOTcyZGQyZGRhZDNiOTI3ZjNmM2ViNzA5OWEK KyA1ZDZlZWU2NTE0ZWU2ZTIyYTg3YmJhOGQyMmJlMGE4NjIxYTBhZTExOTI0NmYxYzVhOWEzNWRi MWY3MmFmNTg5CisgYTUxN2RmMmRkYTkzYjI2ZDVjYmYwMGVmZmVmZWE5M2UzYTRjY2Q2NjUyZjE1 MmY0MTA5MTcwNTQ0ZWJmYTA1ZQorIGZmZDFkN2E1NGE5OWZhN2Y1YjE4MjVlNGY3ZTk1ZDhjODg3 NmJjMmNhMTUxZjE1MGU3NTFkNDI5YzY1MGIwNmQKKyA0Y2YzYjlmYWZiOGE2NmQ0MTFkZDVmYzkx MjAwMzI1MzNhNDAxMmRmMWRjNmVlMDI0Yzc4MzMzNzNlMmRkYzMxCisgN2MzMTRlMzc1YTEwNWE2 NjQyZThlZDQ0ZjM4MDhiOWRlZjg5ZDE1Zjc0OTJmZTIwMjlhMjFiYTljMGRlODFkMyIKIAogYm9v dHN0cmFwPXllcwogcHJvdmlkZXM9ImJhc2gtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLWNvbmZs aWN0cz0iYmFzaD49MCBkYXNoPj0wIgorY29uZmxpY3RzPSJiYXNoPj0wIGRhc2g+PTAgYnVzeWJv eD49MCBsb2tzaD49MCBta3NoPj0wIG9rc2g+PTAgeWFzaD49MCIKIAotcHJlX2NvbmZpZ3VyZSgp IHsKLQlsb2NhbCB2ZXI9JHtfYmFzaF9kaXN0dmVyLy8uL30gcAorcG9zdF9wYXRjaCgpIHsKIAlj ZCAke3dya3NyY30KIAlmb3IgcCBpbiAkKHNlcSAtdyAwMDEgJHtfYmFzaF9wYXRjaGxldmVsfSk7 IGRvCi0JCW1zZ19ub3JtYWwgIiBBcHBseWluZyBwYXRjaCBiYXNoJHt2ZXJ9LSRwLlxuIgotCQlw YXRjaCAtc05wMCAtaSAke1hCUFNfU1JDUEtHRElSfS9iYXNoL2ZpbGVzL2Jhc2gke3Zlcn0tJHtw fQorCQltc2dfbm9ybWFsICIgQXBwbHlpbmcgcGF0Y2ggYmFzaCR7X21ham9yfSR7X21pbm9yfS0k cC5cbiIKKwkJcGF0Y2ggLXNOcDAgLWkgJHtYQlBTX1NSQ0RJU1RESVJ9L2Nocm9vdC1iYXNoLSR2 ZXJzaW9uL2Jhc2gke19tYWpvcn0ke19taW5vcn0tJHtwfQogCWRvbmUKIH0KIAoKRnJvbSA3Nzkz MmMzMTlhZTU0MTM5NGEwZGRlNmIyYjZhYTdiZmZmMDZkMzg5IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiA9P1VURi04P3E/PUM0PTkwbz1DMz1BMG49MjBUcj1FMT1CQT1BN249MjBDPUMz PUI0bmc9MjBEYW5oPz0KIDxjb25nZGFuaHF4QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKdWwg MjAyMCAxNToyODo1MyArMDcwMApTdWJqZWN0OiBbUEFUQ0ggMy80XSBiYXNoOiB1cGRhdGUgdG8g NS4wLjAxOC4KCkNsb3NlOiAjMjM4MTUKLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAw MSAgICAgICAgICAgICB8IDE2NyAtLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFz aDUwLTAwMiAgICAgICAgICAgICB8IDExMyAtLS0tLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9i YXNoNTAtMDAzICAgICAgICAgICAgIHwgMjM5IC0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMDQgICAgICAgICAgICAgfCAgNTMgLS0tLQogc3JjcGtncy9iYXNo L2ZpbGVzL2Jhc2g1MC0wMDUgICAgICAgICAgICAgfCAxMTAgLS0tLS0tLS0KIHNyY3BrZ3MvYmFz aC9maWxlcy9iYXNoNTAtMDA2ICAgICAgICAgICAgIHwgIDQ3IC0tLS0KIHNyY3BrZ3MvYmFzaC9m aWxlcy9iYXNoNTAtMDA3ICAgICAgICAgICAgIHwgIDYyIC0tLS0tCiBzcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAwOCAgICAgICAgICAgICB8ICA2OCAtLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVz L2Jhc2g1MC0wMDkgICAgICAgICAgICAgfCAgNDIgLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jh c2g1MC0wMTAgICAgICAgICAgICAgfCAxNzIgLS0tLS0tLS0tLS0tLQogc3JjcGtncy9iYXNoL2Zp bGVzL2Jhc2g1MC0wMTEgICAgICAgICAgICAgfCAgNTkgLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxl cy9iYXNoNTAtMDEyICAgICAgICAgICAgIHwgIDY0IC0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMv YmFzaDUwLTAxMyAgICAgICAgICAgICB8ICA3MyAtLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9i YXNoNTAtMDE0ICAgICAgICAgICAgIHwgIDUyIC0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDE1ICAgICAgICAgICAgIHwgIDc4IC0tLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1 MC0wMTYgICAgICAgICAgICAgfCAgNTggLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAt MDE3ICAgICAgICAgICAgIHwgMjg5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvYmFz aC9maWxlcy91cGRhdGUtYmFzaC1wYXRjaGVzLnNoIHwgICA3IC0KIHNyY3BrZ3MvYmFzaC90ZW1w bGF0ZSAgICAgICAgICAgICAgICAgICAgIHwgIDQ1ICsrKy0KIDE5IGZpbGVzIGNoYW5nZWQsIDM2 IGluc2VydGlvbnMoKyksIDE3NjIgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDEKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jh c2gvZmlsZXMvYmFzaDUwLTAwMgogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxl cy9iYXNoNTAtMDAzCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1 MC0wMDQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNQog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA2CiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDcKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwOAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA5CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMTAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAxMQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDEyCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTMK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNAogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE1CiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTYKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNwogZGVsZXRlIG1vZGUgMTAwNzU1IHNyY3BrZ3Mv YmFzaC9maWxlcy91cGRhdGUtYmFzaC1wYXRjaGVzLnNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMDEgYi9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwMQpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg3YmQ4MmNmNzIuLjAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAxCisrKyAvZGV2L251bGwKQEAgLTEsMTY3ICsw LDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09 PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDAxCi0KLUJ1Zy1SZXBv cnRlZC1ieToJYXhlbEBmcmVha291dC5kZQotQnVnLVJlZmVyZW5jZS1JRDoJPDIwMTkwMTA4MjA1 MC54MDhLb1NoUzAwNjczMUBib25nby5mcmVha291dC5kZT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglo dHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wMS9tc2cwMDA3 OS5odG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotVW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2Vz LCB0aGUgZ2xvYiBleHBhbnNpb24gY29kZSBkaWQgbm90IHJlbW92ZQotYmFja3NsYXNoZXMgZXNj YXBpbmcgY2hhcmFjdGVycyBpbiBkaXJlY3RvcnkgbmFtZXMgKG9yIHBvcnRpb25zIG9mIGEKLXBh dHRlcm4gcHJlY2VkaW5nIGEgc2xhc2gpLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAw Jyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC9iYXNobGluZS5jCTIwMTgtMTEtMjcgMTM6MjA6MTYuMDAw MDAwMDAwIC0wNTAwCi0tLS0gYmFzaGxpbmUuYwkyMDE5LTAxLTE2IDE2OjA2OjAzLjAwMDAwMDAw MCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogMjMyLDIzNSAqKioqCi0tLS0gMjMyLDIzNiAt LS0tCi0gIHN0YXRpYyBpbnQgYmFzaF9wb3NzaWJsZV9jb21tYW5kX2NvbXBsZXRpb25zIF9fUCgo aW50LCBpbnQpKTsKLSAgCi0rIHN0YXRpYyBpbnQgY29tcGxldGlvbl9nbG9iX3BhdHRlcm4gX19Q KChjaGFyICopKTsKLSAgc3RhdGljIGNoYXIgKmdsb2JfY29tcGxldGVfd29yZCBfX1AoKGNvbnN0 IGNoYXIgKiwgaW50KSk7Ci0gIHN0YXRpYyBpbnQgYmFzaF9nbG9iX2NvbXBsZXRpb25faW50ZXJu YWwgX19QKChpbnQpKTsKLSoqKioqKioqKioqKioqKgotKioqIDE3NDIsMTc0NiAqKioqCi0gICAg LyogVGhpcyBjb3VsZCBiZSBhIGdsb2JiaW5nIHBhdHRlcm4sIHNvIHRyeSB0byBleHBhbmQgaXQg dXNpbmcgcGF0aG5hbWUKLSAgICAgICBleHBhbnNpb24uICovCi0hICAgaWYgKCFtYXRjaGVzICYm IGdsb2JfcGF0dGVybl9wICh0ZXh0KSkKLSAgICAgIHsKLSAgICAgICAgbWF0Y2hlcyA9IHJsX2Nv bXBsZXRpb25fbWF0Y2hlcyAodGV4dCwgZ2xvYl9jb21wbGV0ZV93b3JkKTsKLS0tLSAxNzQzLDE3 NDcgLS0tLQotICAgIC8qIFRoaXMgY291bGQgYmUgYSBnbG9iYmluZyBwYXR0ZXJuLCBzbyB0cnkg dG8gZXhwYW5kIGl0IHVzaW5nIHBhdGhuYW1lCi0gICAgICAgZXhwYW5zaW9uLiAqLwotISAgIGlm ICghbWF0Y2hlcyAmJiBjb21wbGV0aW9uX2dsb2JfcGF0dGVybiAoKGNoYXIgKil0ZXh0KSkKLSAg ICAgIHsKLSAgICAgICAgbWF0Y2hlcyA9IHJsX2NvbXBsZXRpb25fbWF0Y2hlcyAodGV4dCwgZ2xv Yl9jb21wbGV0ZV93b3JkKTsKLSoqKioqKioqKioqKioqKgotKioqIDE4NTEsMTg1NSAqKioqCi0g IAl9Ci0gIAotISAgICAgICBnbG9icGF0ID0gZ2xvYl9wYXR0ZXJuX3AgKGhpbnRfdGV4dCk7Ci0g IAotICAgICAgICAvKiBJZiB0aGlzIGlzIGFuIGFic29sdXRlIHByb2dyYW0gbmFtZSwgZG8gbm90 IGNoZWNrIGl0IGFnYWluc3QKLS0tLSAxODUyLDE4NTYgLS0tLQotICAJfQotICAKLSEgICAgICAg Z2xvYnBhdCA9IGNvbXBsZXRpb25fZ2xvYl9wYXR0ZXJuICgoY2hhciAqKWhpbnRfdGV4dCk7Ci0g IAotICAgICAgICAvKiBJZiB0aGlzIGlzIGFuIGFic29sdXRlIHByb2dyYW0gbmFtZSwgZG8gbm90 IGNoZWNrIGl0IGFnYWluc3QKLSoqKioqKioqKioqKioqKgotKioqIDM3MTQsMzcxNyAqKioqCi0t LS0gMzcxNSwzNzczIC0tLS0KLSAgfQotICAKLSsgc3RhdGljIGludAotKyBjb21wbGV0aW9uX2ds b2JfcGF0dGVybiAoc3RyaW5nKQotKyAgICAgIGNoYXIgKnN0cmluZzsKLSsgewotKyAgIHJlZ2lz dGVyIGludCBjOwotKyAgIGNoYXIgKnNlbmQ7Ci0rICAgaW50IG9wZW47Ci0rIAotKyAgIERFQ0xB UkVfTUJTVEFURTsKLSsgCi0rICAgb3BlbiA9IDA7Ci0rICAgc2VuZCA9IHN0cmluZyArIHN0cmxl biAoc3RyaW5nKTsKLSsgCi0rICAgd2hpbGUgKGMgPSAqc3RyaW5nKyspCi0rICAgICB7Ci0rICAg ICAgIHN3aXRjaCAoYykKLSsgCXsKLSsgCWNhc2UgJz8nOgotKyAJY2FzZSAnKic6Ci0rIAkgIHJl dHVybiAoMSk7Ci0rIAotKyAJY2FzZSAnWyc6Ci0rIAkgIG9wZW4rKzsKLSsgCSAgY29udGludWU7 Ci0rIAotKyAJY2FzZSAnXSc6Ci0rIAkgIGlmIChvcGVuKQotKyAJICAgIHJldHVybiAoMSk7Ci0r IAkgIGNvbnRpbnVlOwotKyAKLSsgCWNhc2UgJysnOgotKyAJY2FzZSAnQCc6Ci0rIAljYXNlICch JzoKLSsgCSAgaWYgKCpzdHJpbmcgPT0gJygnKQkvKikqLwotKyAJICAgIHJldHVybiAoMSk7Ci0r IAkgIGNvbnRpbnVlOwotKyAKLSsgCWNhc2UgJ1xcJzoKLSsgCSAgaWYgKCpzdHJpbmcgPT0gMCkK LSsgCSAgICByZXR1cm4gKDApOwkgCSAgCi0rIAl9Ci0rIAotKyAgICAgICAvKiBBZHZhbmNlIG9u ZSBmZXdlciBieXRlIHRoYW4gYW4gZW50aXJlIG11bHRpYnl0ZSBjaGFyYWN0ZXIgdG8KLSsgCSBh Y2NvdW50IGZvciB0aGUgYXV0by1pbmNyZW1lbnQgaW4gdGhlIGxvb3AgYWJvdmUuICovCi0rICNp ZmRlZiBIQU5ETEVfTVVMVElCWVRFCi0rICAgICAgIHN0cmluZy0tOwotKyAgICAgICBBRFZBTkNF X0NIQVJfUCAoc3RyaW5nLCBzZW5kIC0gc3RyaW5nKTsKLSsgICAgICAgc3RyaW5nKys7Ci0rICNl bHNlCi0rICAgICAgIEFEVkFOQ0VfQ0hBUl9QIChzdHJpbmcsIHNlbmQgLSBzdHJpbmcpOwotKyAj ZW5kaWYKLSsgICAgIH0KLSsgICByZXR1cm4gKDApOwotKyB9Ci0rIAotICBzdGF0aWMgY2hhciAq Z2xvYnRleHQ7Ci0gIHN0YXRpYyBjaGFyICpnbG9ib3JpZzsKLSoqKioqKioqKioqKioqKgotKioq IDM4NzgsMzg4MiAqKioqCi0gICAgICB9ICAgICAgCi0gIAotISAgIGlmICh0ICYmIGdsb2JfcGF0 dGVybl9wICh0KSA9PSAwKQotICAgICAgcmxfZXhwbGljaXRfYXJnID0gMTsJLyogWFhYIC0gZm9y Y2UgZ2xvYl9jb21wbGV0ZV93b3JkIHRvIGFwcGVuZCBgKicgKi8KLSAgICBGUkVFICh0KTsKLS0t LSAzOTM0LDM5MzggLS0tLQotICAgICAgfSAgICAgIAotICAKLSEgICBpZiAodCAmJiBjb21wbGV0 aW9uX2dsb2JfcGF0dGVybiAodCkgPT0gMCkKLSAgICAgIHJsX2V4cGxpY2l0X2FyZyA9IDE7CS8q IFhYWCAtIGZvcmNlIGdsb2JfY29tcGxldGVfd29yZCB0byBhcHBlbmQgYConICovCi0gICAgRlJF RSAodCk7Ci0qKiogLi4vYmFzaC01LjAvbGliL2dsb2IvZ2xvYl9sb29wLmMJMjAxOC0xMi0zMSAx MzozNToxNS4wMDAwMDAwMDAgLTA1MDAKLS0tLSBsaWIvZ2xvYi9nbG9iX2xvb3AuYwkyMDE5LTAx LTA5IDA5OjQ0OjM2LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogNTUsNTkg KioqKgotICAKLSAgICAgICAgY2FzZSBMKCdcXCcpOgotLSAjaWYgMAotICAJLyogRG9uJ3QgbGV0 IHRoZSBwYXR0ZXJuIGVuZCBpbiBhIGJhY2tzbGFzaCAoR01BVENIIHJldHVybnMgbm8gbWF0Y2gK LSAgCSAgIGlmIHRoZSBwYXR0ZXJuIGVuZHMgaW4gYSBiYWNrc2xhc2ggYW55d2F5KSwgYnV0IG90 aGVyd2lzZSByZXR1cm4gMSwKLS0tLSA1NSw1OCAtLS0tCi0qKioqKioqKioqKioqKioKLSoqKiA2 MSw2OSAqKioqCi0gIAkgICBhbmQgaXQgY2FuIGJlIHJlbW92ZWQuICovCi0gIAlyZXR1cm4gKCpw ICE9IEwoJ1wwJykpOwotLSAjZWxzZQotLSAJLyogVGhlIHBhdHRlcm4gbWF5IG5vdCBlbmQgd2l0 aCBhIGJhY2tzbGFzaC4gKi8KLS0gCWlmICgqcCsrID09IEwoJ1wwJykpCi0tIAkgIHJldHVybiAw OwotLSAjZW5kaWYKLSAgICAgICAgfQotICAKLS0tLSA2MCw2MyAtLS0tCi0qKiogLi4vYmFzaC01 LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0g cGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioq KioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRj aCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUg UEFUQ0hMRVZFTCAwCi0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwz MCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBz Y2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxCi0gIAot ICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNo L2ZpbGVzL2Jhc2g1MC0wMDIgYi9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwMgpkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZjODI3MmY4NGEuLjAwMDAwMDAwMDAwCi0tLSBhL3Ny Y3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAyCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAg QEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0K LQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDAyCi0KLUJ1Zy1SZXBvcnRl ZC1ieToJQW50ZSBQZXJpYyA8c3ludGhtZWF0QGdtYWlsLmNvbT4KLUJ1Zy1SZWZlcmVuY2UtSUQ6 CTxCN0UzQjU2Ny0yNDY3LTRGN0ItQjZCOS1DQTRFNzVBOUM5M0ZAZ21haWwuY29tPgotQnVnLVJl ZmVyZW5jZS1VUkw6CWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8y MDE5LTAxL21zZzAwMDk1Lmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1XaGVuIGFuIGFsaWFz IHZhbHVlIGVuZHMgd2l0aCBhbiB1bnF1b3RlZCBsaXRlcmFsIHRhYiAobm90IHBhcnQgb2YgYSBx dW90ZWQKLXN0cmluZyBvciBjb21tZW50KSwgYWxpYXMgZXhwYW5zaW9uIGNhbm5vdCBjb3JyZWN0 bHkgZGV0ZWN0IHRoZSBlbmQgb2YgdGhlCi1hbGlhcyB2YWx1ZSBhZnRlciBleHBhbmRpbmcgaXQu Ci0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wL3Bh cnNlci5oCTIwMTgtMTItMjggMTk6MTE6MTguMDAwMDAwMDAwIC0wNTAwCi0tLS0gcGFyc2VyLmgJ MjAxOS0wMS0xMSAxNToxMzowMy4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioq IDQ4LDUxICoqKioKLS0tLSA0OCw1MiAtLS0tCi0gICNkZWZpbmUgUFNUX1JFRElSTElTVAkweDA4 MDAwMAkvKiBwYXJzaW5nIGEgbGlzdCBvZiByZWRpcmVjdGlvbnMgcHJlY2VkaW5nIGEgc2ltcGxl IGNvbW1hbmQgbmFtZSAqLwotICAjZGVmaW5lIFBTVF9DT01NRU5UCTB4MTAwMDAwCS8qIHBhcnNp bmcgYSBzaGVsbCBjb21tZW50OyB1c2VkIGJ5IGFsaWFzZXMgKi8KLSsgI2RlZmluZSBQU1RfRU5E QUxJQVMJMHgyMDAwMDAJLyoganVzdCBmaW5pc2hlZCBleHBhbmRpbmcgYW5kIGNvbnN1bWluZyBh biBhbGlhcyAqLwotICAKLSAgLyogRGVmaW5pdGlvbiBvZiB0aGUgZGVsaW1pdGVyIHN0YWNrLiAg TmVlZGVkIGJ5IHBhcnNlLnkgYW5kIGJhc2hoaXN0LmMuICovCi0qKiogLi4vYmFzaC01LjAvcGFy c2UueQkyMDE5LTAxLTAyIDEzOjU3OjM0LjAwMDAwMDAwMCAtMDUwMAotLS0tIHBhcnNlLnkJMjAx OS0wMS0xNCAwODoyMzozMS4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioqIDI1 NTgsMjU2NyAqKioqCi0gICAgICAgIHB1c2hlZF9zdHJpbmdfbGlzdC0+ZmxhZ3MgIT0gUFNIX0RQ QVJFTiAmJgotICAgICAgICAocGFyc2VyX3N0YXRlICYgUFNUX0NPTU1FTlQpID09IDAgJiYKLSAg ICAgICAgc2hlbGxfaW5wdXRfbGluZV9pbmRleCA+IDAgJiYKLSEgICAgICAgc2hlbGxfaW5wdXRf bGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdICE9ICcgJyAmJgotICAgICAgICBzaGVsbF9p bnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0gIT0gJ1xuJyAmJgotICAgICAgICBz aGVsbG1ldGEgKHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSkgPT0g MCAmJgotICAgICAgICAoY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJ1wnJyAmJiBjdXJy ZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnIicpKQotICAgICAgewotICAgICAgICByZXR1cm4g JyAnOwkvKiBFTkRfQUxJQVMgKi8KLSAgICAgIH0KLS0tLSAyNTU4LDI1NjkgLS0tLQotICAgICAg ICBwdXNoZWRfc3RyaW5nX2xpc3QtPmZsYWdzICE9IFBTSF9EUEFSRU4gJiYKLSAgICAgICAgKHBh cnNlcl9zdGF0ZSAmIFBTVF9DT01NRU5UKSA9PSAwICYmCi0rICAgICAgIChwYXJzZXJfc3RhdGUg JiBQU1RfRU5EQUxJQVMpID09IDAgJiYJLyogb25seSBvbmNlICovCi0gICAgICAgIHNoZWxsX2lu cHV0X2xpbmVfaW5kZXggPiAwICYmCi0hICAgICAgIHNoZWxsYmxhbmsgKHNoZWxsX2lucHV0X2xp bmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSkgPT0gMCAmJgotICAgICAgICBzaGVsbF9pbnB1 dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0gIT0gJ1xuJyAmJgotICAgICAgICBzaGVs bG1ldGEgKHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSkgPT0gMCAm JgotICAgICAgICAoY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJ1wnJyAmJiBjdXJyZW50 X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnIicpKQotICAgICAgewotKyAgICAgICBwYXJzZXJfc3Rh dGUgfD0gUFNUX0VOREFMSUFTOwotICAgICAgICByZXR1cm4gJyAnOwkvKiBFTkRfQUxJQVMgKi8K LSAgICAgIH0KLSoqKioqKioqKioqKioqKgotKioqIDI1NzIsMjU3NSAqKioqCi0tLS0gMjU3NCwy NTc4IC0tLS0KLSAgICBpZiAodWMgPT0gMCAmJiBwdXNoZWRfc3RyaW5nX2xpc3QgJiYgcHVzaGVk X3N0cmluZ19saXN0LT5mbGFncyAhPSBQU0hfU09VUkNFKQotICAgICAgewotKyAgICAgICBwYXJz ZXJfc3RhdGUgJj0gflBTVF9FTkRBTElBUzsKLSAgICAgICAgcG9wX3N0cmluZyAoKTsKLSAgICAg ICAgdWMgPSBzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXhdOwotKioqIC4u L2Jhc2gtNS4wL3kudGFiLmMJMjAxOS0wMS0wMiAxMzo1Nzo0My4wMDAwMDAwMDAgLTA1MDAKLS0t LSB5LnRhYi5jCTIwMTktMDEtMTQgMDg6Mzk6MjMuMDAwMDAwMDAwIC0wNTAwCi0qKioqKioqKioq KioqKioKLSoqKiA0ODc0LDQ4ODMgKioqKgotICAgICAgICBwdXNoZWRfc3RyaW5nX2xpc3QtPmZs YWdzICE9IFBTSF9EUEFSRU4gJiYKLSAgICAgICAgKHBhcnNlcl9zdGF0ZSAmIFBTVF9DT01NRU5U KSA9PSAwICYmCi0gICAgICAgIHNoZWxsX2lucHV0X2xpbmVfaW5kZXggPiAwICYmCi0hICAgICAg IHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSAhPSAnICcgJiYKLSAg ICAgICAgc2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdICE9ICdcbicg JiYKLSAgICAgICAgc2hlbGxtZXRhIChzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVf aW5kZXgtMV0pID09IDAgJiYKLSAgICAgICAgKGN1cnJlbnRfZGVsaW1pdGVyIChkc3RhY2spICE9 ICdcJycgJiYgY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJyInKSkKLSAgICAgIHsKLSAg ICAgICAgcmV0dXJuICcgJzsJLyogRU5EX0FMSUFTICovCi0gICAgICB9Ci0tLS0gNDg3NCw0ODg1 IC0tLS0KLSAgICAgICAgcHVzaGVkX3N0cmluZ19saXN0LT5mbGFncyAhPSBQU0hfRFBBUkVOICYm Ci0gICAgICAgIChwYXJzZXJfc3RhdGUgJiBQU1RfQ09NTUVOVCkgPT0gMCAmJgotKyAgICAgICAo cGFyc2VyX3N0YXRlICYgUFNUX0VOREFMSUFTKSA9PSAwICYmCS8qIG9ubHkgb25jZSAqLwotICAg ICAgICBzaGVsbF9pbnB1dF9saW5lX2luZGV4ID4gMCAmJgotISAgICAgICBzaGVsbGJsYW5rIChz aGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0pID09IDAgJiYKLSAgICAg ICAgc2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdICE9ICdcbicgJiYK LSAgICAgICAgc2hlbGxtZXRhIChzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5k ZXgtMV0pID09IDAgJiYKLSAgICAgICAgKGN1cnJlbnRfZGVsaW1pdGVyIChkc3RhY2spICE9ICdc JycgJiYgY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJyInKSkKLSAgICAgIHsKLSsgICAg ICAgcGFyc2VyX3N0YXRlIHw9IFBTVF9FTkRBTElBUzsKLSAgICAgICAgcmV0dXJuICcgJzsJLyog RU5EX0FMSUFTICovCi0gICAgICB9Ci0qKioqKioqKioqKioqKioKLSoqKiA0ODg4LDQ4OTEgKioq KgotLS0tIDQ4OTAsNDg5NCAtLS0tCi0gICAgaWYgKHVjID09IDAgJiYgcHVzaGVkX3N0cmluZ19s aXN0ICYmIHB1c2hlZF9zdHJpbmdfbGlzdC0+ZmxhZ3MgIT0gUFNIX1NPVVJDRSkKLSAgICAgIHsK LSsgICAgICAgcGFyc2VyX3N0YXRlICY9IH5QU1RfRU5EQUxJQVM7Ci0gICAgICAgIHBvcF9zdHJp bmcgKCk7Ci0gICAgICAgIHVjID0gc2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2lu ZGV4XTsKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTowMy4w MDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4wMDAw MDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAgbG9va3Mg Zm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcp LiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDEKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hM RVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBh dGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmlu ZSBQQVRDSExFVkVMIDIKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZmIC0t Z2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDMgYi9zcmNwa2dzL2Jhc2gvZmlsZXMv YmFzaDUwLTAwMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdlNTY3N2U1NDAuLjAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAzCisrKyAvZGV2L251 bGwKQEAgLTEsMjM5ICswLDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAg PT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAt MDAzCi0KLUJ1Zy1SZXBvcnRlZC1ieToJQW5kcmV3IENodXJjaCA8YWNodXJjaCtiYXNoQGFjaHVy Y2gub3JnPgotQnVnLVJlZmVyZW5jZS1JRDoJPDVjNTM0YWEyLjA0MzcxQG1zZ2lkLmFjaHVyY2gu b3JnPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRt bC9idWctYmFzaC8yMDE5LTAxL21zZzAwMjc2Lmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1U aGVyZSBhcmUgc2V2ZXJhbCBpbmNvbXBhdGliaWxpdGllcyBpbiBob3cgYmFzaC01LjAgcHJvY2Vz c2VzIHBhdGhuYW1lCi1leHBhbnNpb24gKGdsb2JiaW5nKSBvZiBmaWxlbmFtZSBhcmd1bWVudHMg dGhhdCBoYXZlIGJhY2tzbGFzaGVzIGluIHRoZQotZGlyZWN0b3J5IHBvcnRpb24uCi0KLVBhdGNo IChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvbGli L2dsb2IvZ2xvYl9sb29wLmMJMjAxOS0wMS0xNiAxNjoxMzoyMS4wMDAwMDAwMDAgLTA1MDAKLS0t LSBsaWIvZ2xvYi9nbG9iX2xvb3AuYwkyMDE5LTAyLTAxIDA5OjQ1OjExLjAwMDAwMDAwMCAtMDUw MAotKioqKioqKioqKioqKioqCi0qKiogMjcsMzQgKioqKgotICAgIHJlZ2lzdGVyIGNvbnN0IEdD SEFSICpwOwotICAgIHJlZ2lzdGVyIEdDSEFSIGM7Ci0hICAgaW50IGJvcGVuOwotICAKLSAgICBw ID0gcGF0dGVybjsKLSEgICBib3BlbiA9IDA7Ci0gIAotICAgIHdoaWxlICgoYyA9ICpwKyspICE9 IEwoJ1wwJykpCi0tLS0gMjcsMzQgLS0tLQotICAgIHJlZ2lzdGVyIGNvbnN0IEdDSEFSICpwOwot ICAgIHJlZ2lzdGVyIEdDSEFSIGM7Ci0hICAgaW50IGJvcGVuLCBic3F1b3RlOwotICAKLSAgICBw ID0gcGF0dGVybjsKLSEgICBib3BlbiA9IGJzcXVvdGUgPSAwOwotICAKLSAgICB3aGlsZSAoKGMg PSAqcCsrKSAhPSBMKCdcMCcpKQotKioqKioqKioqKioqKioqCi0qKiogNTYsNjYgKioqKgotICAg ICAgICBjYXNlIEwoJ1xcJyk6Ci0gIAkvKiBEb24ndCBsZXQgdGhlIHBhdHRlcm4gZW5kIGluIGEg YmFja3NsYXNoIChHTUFUQ0ggcmV0dXJucyBubyBtYXRjaAotISAJICAgaWYgdGhlIHBhdHRlcm4g ZW5kcyBpbiBhIGJhY2tzbGFzaCBhbnl3YXkpLCBidXQgb3RoZXJ3aXNlIHJldHVybiAxLAotISAJ ICAgc2luY2UgdGhlIG1hdGNoaW5nIGVuZ2luZSB1c2VzIGJhY2tzbGFzaCBhcyBhbiBlc2NhcGUg Y2hhcmFjdGVyCi0hIAkgICBhbmQgaXQgY2FuIGJlIHJlbW92ZWQuICovCi0hIAlyZXR1cm4gKCpw ICE9IEwoJ1wwJykpOwotICAgICAgICB9Ci0gIAotISAgIHJldHVybiAwOwotICB9Ci0gIAotLS0t IDU2LDc1IC0tLS0KLSAgICAgICAgY2FzZSBMKCdcXCcpOgotICAJLyogRG9uJ3QgbGV0IHRoZSBw YXR0ZXJuIGVuZCBpbiBhIGJhY2tzbGFzaCAoR01BVENIIHJldHVybnMgbm8gbWF0Y2gKLSEgCSAg IGlmIHRoZSBwYXR0ZXJuIGVuZHMgaW4gYSBiYWNrc2xhc2ggYW55d2F5KSwgYnV0IG90aGVyd2lz ZSBub3RlIHRoYXQgCi0hIAkgICB3ZSBoYXZlIHNlZW4gdGhpcywgc2luY2UgdGhlIG1hdGNoaW5n IGVuZ2luZSB1c2VzIGJhY2tzbGFzaCBhcyBhbgotISAJICAgZXNjYXBlIGNoYXJhY3RlciBhbmQg aXQgY2FuIGJlIHJlbW92ZWQuIFdlIHJldHVybiAyIGxhdGVyIGlmIHdlCi0hIAkgICBoYXZlIHNl ZW4gb25seSBiYWNrc2xhc2gtZXNjYXBlZCBjaGFyYWN0ZXJzLCBzbyBpbnRlcmVzdGVkIGNhbGxl cnMKLSEgCSAgIGtub3cgdGhleSBjYW4gc2hvcnRjdXQgYW5kIGp1c3QgZGVxdW90ZSB0aGUgcGF0 aG5hbWUuICovCi0hIAlpZiAoKnAgIT0gTCgnXDAnKSkKLSEgCSAgewotISAJICAgIHArKzsKLSEg CSAgICBic3F1b3RlID0gMTsKLSEgCSAgICBjb250aW51ZTsKLSEgCSAgfQotISAJZWxzZSAJLyog KCpwID09IEwoJ1wwJykpICovCi0hIAkgIHJldHVybiAwOwotICAgICAgICB9Ci0gIAotISAgIHJl dHVybiBic3F1b3RlID8gMiA6IDA7Ci0gIH0KLSAgCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9s aWIvZ2xvYi9nbG9iLmgJMjAxMy0xMC0yOCAxNDo0NjoxMi4wMDAwMDAwMDAgLTA0MDAKLS0tLSBs aWIvZ2xvYi9nbG9iLmgJMjAxOS0wMy0wNyAxMTowNjo0Ny4wMDAwMDAwMDAgLTA1MDAKLSoqKioq KioqKioqKioqKgotKioqIDMxLDM0ICoqKioKLS0tLSAzMSwzNSAtLS0tCi0gICNkZWZpbmUgR1hf QUREQ1VSRElSCTB4MjAwCS8qIGludGVybmFsIC0tIGFkZCBwYXNzZWQgZGlyZWN0b3J5IG5hbWUg Ki8KLSAgI2RlZmluZSBHWF9HTE9CU1RBUgkweDQwMAkvKiB0dXJuIG9uIHNwZWNpYWwgaGFuZGxp bmcgb2YgKiogKi8KLSsgI2RlZmluZSBHWF9SRUNVUlNFCTB4ODAwCS8qIGludGVybmFsIC0tIGds b2JfZmlsZW5hbWUgY2FsbGVkIHJlY3Vyc2l2ZWx5ICovCi0gIAotICBleHRlcm4gaW50IGdsb2Jf cGF0dGVybl9wIF9fUCgoY29uc3QgY2hhciAqKSk7Ci0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9s aWIvZ2xvYi9nbG9iLmMJMjAxOC0wOS0yMCAxMDo1MzoyMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBs aWIvZ2xvYi9nbG9iLmMJMjAxOS0wMy0wNyAxNDoyMzo0My4wMDAwMDAwMDAgLTA1MDAKLSoqKioq KioqKioqKioqKgotKioqIDEwNjIsMTA2NiAqKioqCi0gICAgdW5zaWduZWQgaW50IGRpcmVjdG9y eV9sZW47Ci0gICAgaW50IGZyZWVfZGlybmFtZTsJCQkvKiBmbGFnICovCi0hICAgaW50IGRmbGFn czsKLSAgCi0gICAgcmVzdWx0ID0gKGNoYXIgKiopIG1hbGxvYyAoc2l6ZW9mIChjaGFyICopKTsK LS0tLSAxMDc4LDEwODIgLS0tLQotICAgIHVuc2lnbmVkIGludCBkaXJlY3RvcnlfbGVuOwotICAg IGludCBmcmVlX2Rpcm5hbWU7CQkJLyogZmxhZyAqLwotISAgIGludCBkZmxhZ3MsIGhhc2dsb2I7 Ci0gIAotICAgIHJlc3VsdCA9IChjaGFyICoqKSBtYWxsb2MgKHNpemVvZiAoY2hhciAqKSk7Ci0q KioqKioqKioqKioqKioKLSoqKiAxMTExLDExMTcgKioqKgotICAgICAgfQotICAKLSAgICAvKiBJ ZiBkaXJlY3RvcnlfbmFtZSBjb250YWlucyBnbG9iYmluZyBjaGFyYWN0ZXJzLCB0aGVuIHdlCi0h ICAgICAgaGF2ZSB0byBleHBhbmQgdGhlIHByZXZpb3VzIGxldmVscy4gIEp1c3QgcmVjdXJzZS4g Ki8KLSEgICBpZiAoZGlyZWN0b3J5X2xlbiA+IDAgJiYgZ2xvYl9wYXR0ZXJuX3AgKGRpcmVjdG9y eV9uYW1lKSkKLSAgICAgIHsKLSAgICAgICAgY2hhciAqKmRpcmVjdG9yaWVzLCAqZCwgKnA7Ci0t LS0gMTEyNywxMTM2IC0tLS0KLSAgICAgIH0KLSAgCi0rICAgaGFzZ2xvYiA9IDA7Ci0gICAgLyog SWYgZGlyZWN0b3J5X25hbWUgY29udGFpbnMgZ2xvYmJpbmcgY2hhcmFjdGVycywgdGhlbiB3ZQot ISAgICAgIGhhdmUgdG8gZXhwYW5kIHRoZSBwcmV2aW91cyBsZXZlbHMuICBKdXN0IHJlY3Vyc2Uu Ci0hICAgICAgSWYgZ2xvYl9wYXR0ZXJuX3AgcmV0dXJucyAhPSBbMCwxXSB3ZSBoYXZlIGEgcGF0 dGVybiB0aGF0IGhhcyBiYWNrc2xhc2gKLSEgICAgICBxdW90ZXMgYnV0IG5vIHVucXVvdGVkIGds b2IgcGF0dGVybiBjaGFyYWN0ZXJzLiBXZSBkZXF1b3RlIGl0IGJlbG93LiAqLwotISAgIGlmIChk aXJlY3RvcnlfbGVuID4gMCAmJiAoaGFzZ2xvYiA9IGdsb2JfcGF0dGVybl9wIChkaXJlY3Rvcnlf bmFtZSkpID09IDEpCi0gICAgICB7Ci0gICAgICAgIGNoYXIgKipkaXJlY3RvcmllcywgKmQsICpw OwotKioqKioqKioqKioqKioqCi0qKiogMTE3NiwxMTgwICoqKioKLSAgCWRbZGlyZWN0b3J5X2xl biAtIDFdID0gJ1wwJzsKLSAgCi0hICAgICAgIGRpcmVjdG9yaWVzID0gZ2xvYl9maWxlbmFtZSAo ZCwgZGZsYWdzKTsKLSAgCi0gICAgICAgIGlmIChmcmVlX2Rpcm5hbWUpCi0tLS0gMTE5NSwxMTk5 IC0tLS0KLSAgCWRbZGlyZWN0b3J5X2xlbiAtIDFdID0gJ1wwJzsKLSAgCi0hICAgICAgIGRpcmVj dG9yaWVzID0gZ2xvYl9maWxlbmFtZSAoZCwgZGZsYWdzfEdYX1JFQ1VSU0UpOwotICAKLSAgICAg ICAgaWYgKGZyZWVfZGlybmFtZSkKLSoqKioqKioqKioqKioqKgotKioqIDEzMzMsMTMzNiAqKioq Ci0tLS0gMTM1MiwxMzY5IC0tLS0KLSAgCSAgcmV0dXJuIChOVUxMKTsKLSAgCX0KLSsgICAgICAg LyogSWYgd2UgaGF2ZSBhIGRpcmVjdG9yeSBuYW1lIHdpdGggcXVvdGVkIGNoYXJhY3RlcnMsIGFu ZCB3ZSBhcmUKLSsgCSBiZWluZyBjYWxsZWQgcmVjdXJzaXZlbHkgdG8gZ2xvYiB0aGUgZGlyZWN0 b3J5IHBvcnRpb24gb2YgYSBwYXRobmFtZSwKLSsgCSB3ZSBuZWVkIHRvIGRlcXVvdGUgdGhlIGRp cmVjdG9yeSBuYW1lIGJlZm9yZSByZXR1cm5pbmcgaXQgc28gdGhlCi0rIAkgY2FsbGVyIGNhbiBy ZWFkIHRoZSBkaXJlY3RvcnkgKi8KLSsgICAgICAgaWYgKGRpcmVjdG9yeV9sZW4gPiAwICYmIGhh c2dsb2IgPT0gMiAmJiAoZmxhZ3MgJiBHWF9SRUNVUlNFKSAhPSAwKQotKyAJewotKyAJICBkZXF1 b3RlX3BhdGhuYW1lIChkaXJlY3RvcnlfbmFtZSk7Ci0rIAkgIGRpcmVjdG9yeV9sZW4gPSBzdHJs ZW4gKGRpcmVjdG9yeV9uYW1lKTsKLSsgCX0KLSsgCi0rICAgICAgIC8qIFdlIGNvdWxkIGNoZWNr IHdoZXRoZXIgb3Igbm90IHRoZSBkZXF1b3RlZCBkaXJlY3RvcnlfbmFtZSBpcyBhCi0rIAkgZGly ZWN0b3J5IGFuZCByZXR1cm4gaXQgaGVyZSwgcmV0dXJuaW5nIHRoZSBvcmlnaW5hbCBkaXJlY3Rv cnlfbmFtZQotKyAJIGlmIG5vdCwgYnV0IHdlIGRvbid0IGRvIHRoYXQgeWV0LiBJJ20gbm90IHN1 cmUgaXQgbWF0dGVycy4gKi8KLSsgCi0gICAgICAgIC8qIEhhbmRsZSBHWF9NQVJLRElSUyBoZXJl LiAqLwotICAgICAgICByZXN1bHRbMF0gPSAoY2hhciAqKSBtYWxsb2MgKGRpcmVjdG9yeV9sZW4g KyAxKTsKLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL3BhdGhleHAuYwkyMDE4LTA0LTI5IDE3OjQ0 OjQ4LjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGhleHAuYwkyMDE5LTAxLTMxIDIwOjE5OjQxLjAw MDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogNjYsNzQgKioqKgotICAgIHJlZ2lz dGVyIGludCBjOwotICAgIGNoYXIgKnNlbmQ7Ci0hICAgaW50IG9wZW47Ci0gIAotICAgIERFQ0xB UkVfTUJTVEFURTsKLSAgCi0hICAgb3BlbiA9IDA7Ci0gICAgc2VuZCA9IHN0cmluZyArIHN0cmxl biAoc3RyaW5nKTsKLSAgCi0tLS0gNjYsNzQgLS0tLQotICAgIHJlZ2lzdGVyIGludCBjOwotICAg IGNoYXIgKnNlbmQ7Ci0hICAgaW50IG9wZW4sIGJzcXVvdGU7Ci0gIAotICAgIERFQ0xBUkVfTUJT VEFURTsKLSAgCi0hICAgb3BlbiA9IGJzcXVvdGUgPSAwOwotICAgIHNlbmQgPSBzdHJpbmcgKyBz dHJsZW4gKHN0cmluZyk7Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogMTAxLDEwNSAqKioqCi0g IAkgICBnbG9iYmluZy4gKi8KLSAgCWNhc2UgJ1xcJzoKLSEgCSAgcmV0dXJuICgqc3RyaW5nICE9 IDApOwotICAJIAkgIAotICAJY2FzZSBDVExFU0M6Ci0tLS0gMTAxLDExMiAtLS0tCi0gIAkgICBn bG9iYmluZy4gKi8KLSAgCWNhc2UgJ1xcJzoKLSEgCSAgaWYgKCpzdHJpbmcgIT0gJ1wwJyAmJiAq c3RyaW5nICE9ICcvJykKLSEgCSAgICB7Ci0hIAkgICAgICBic3F1b3RlID0gMTsKLSEgCSAgICAg IHN0cmluZysrOwotISAJICAgICAgY29udGludWU7Ci0hIAkgICAgfQotISAJICBlbHNlIGlmICgq c3RyaW5nID09IDApCi0hIAkgICAgcmV0dXJuICgwKTsKLSAgCSAJICAKLSAgCWNhc2UgQ1RMRVND OgotKioqKioqKioqKioqKioqCi0qKiogMTE4LDEyMiAqKioqCi0gICNlbmRpZgotICAgICAgfQot ISAgIHJldHVybiAoMCk7Ci0gIH0KLSAgCi0tLS0gMTI1LDEzMCAtLS0tCi0gICNlbmRpZgotICAg ICAgfQotISAKLSEgICByZXR1cm4gKGJzcXVvdGUgPyAyIDogMCk7Ci0gIH0KLSAgCi0qKiogLi4v YmFzaC01LjAtcGF0Y2hlZC9iYXNobGluZS5jCTIwMTktMDEtMTYgMTY6MTM6MjEuMDAwMDAwMDAw IC0wNTAwCi0tLS0gYmFzaGxpbmUuYwkyMDE5LTAyLTIyIDA5OjI5OjA4LjAwMDAwMDAwMCAtMDUw MAotKioqKioqKioqKioqKioqCi0qKiogMzc1MywzNzU3ICoqKioKLSAgCi0gIAljYXNlICdcXCc6 Ci0hIAkgIGlmICgqc3RyaW5nID09IDApCi0gIAkgICAgcmV0dXJuICgwKTsJIAkgIAotICAJfQot LS0tIDM3NjYsMzc3MCAtLS0tCi0gIAotICAJY2FzZSAnXFwnOgotISAJICBpZiAoKnN0cmluZysr ID09IDApCi0gIAkgICAgcmV0dXJuICgwKTsJIAkgIAotICAJfQotKioqIC4uL2Jhc2gtNS4wL3Bh dGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNo bGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioq KioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2 ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENI TEVWRUwgMgotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0t LQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2 ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMwotICAKLSAgI2Vu ZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMv YmFzaDUwLTAwNCBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA0CmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBmZTNjNzY0YmQ2Yy4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMDQKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0JCQkg ICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJhc2gt UmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwNAotCi1CdWctUmVwb3J0ZWQtYnk6CURh bmllbCBLYWhuIEdpbGxtb3IgPGRrZ0BmaWZ0aGhvcnNlbWFuLm5ldD4KLUJ1Zy1SZWZlcmVuY2Ut SUQ6CTw4N2xnMGc4YWl3LmZzZkBmaWZ0aGhvcnNlbWFuLm5ldD4KLUJ1Zy1SZWZlcmVuY2UtVVJM OglodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wNC9tc2cw MDA3Ni5odG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotSW4gYmFzaC01LjAsIHRoZSBgd2FpdCcg YnVpbHRpbiB3aXRob3V0IGFyZ3VtZW50cyB3YWl0cyBmb3IgYWxsIGNoaWxkcmVuIG9mIHRoZQot c2hlbGwuIFRoaXMgaW5jbHVkZXMgY2hpbGRyZW4gaXQgYGluaGVyaXRlZCcgYXQgc2hlbGwgaW52 b2NhdGlvbiB0aW1lLiBUaGlzCi1wYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3IgdG8gbm90IHdh aXQgZm9yIHRoZXNlIGluaGVyaXRlZCBjaGlsZHJlbiwgc29tZQotb2Ygd2hpY2ggbWlnaHQgYmUg bG9uZy1saXZlZC4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4v YmFzaC01LjAtcGF0Y2hlZC9qb2JzLmMJMjAxOC0xMi0wNiAxMTo0NDozNC4wMDAwMDAwMDAgLTA1 MDAKLS0tLSBqb2JzLmMJMjAxOS0wNC0xMiAxNToxNToxMC4wMDAwMDAwMDAgLTA0MDAKLSoqKioq KioqKioqKioqKgotKioqIDI0ODksMjQ5NiAqKioqCi0gICAgd2FpdF9wcm9jc3VicyAoKTsKLSAg ICByZWFwX3Byb2NzdWJzICgpOwotISAjaWYgMQotICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gd2Fp dCBpbmRlZmluaXRlbHkgaWYgd2UgaGF2ZSBzdG9wcGVkIGNoaWxkcmVuLiAqLwotLSAgIC8qIFhY WCAtIHNob3VsZCBhZGQgYSBsb29wIHRoYXQgZ29lcyB0aHJvdWdoIHRoZSBsaXN0IG9mIHByb2Nl c3MKLS0gICAgICBzdWJzdGl0dXRpb25zIGFuZCB3YWl0cyBmb3IgZWFjaCBwcm9jIGluIHR1cm4g YmVmb3JlIHRoaXMgY29kZS4gKi8KLSAgICBpZiAoYW55X3N0b3BwZWQgPT0gMCkKLSAgICAgIHsK LS0tLSAyNDkwLDI0OTUgLS0tLQotICAgIHdhaXRfcHJvY3N1YnMgKCk7Ci0gICAgcmVhcF9wcm9j c3VicyAoKTsKLSEgI2lmIDAKLSAgICAvKiBXZSBkb24ndCB3YW50IHRvIHdhaXQgaW5kZWZpbml0 ZWx5IGlmIHdlIGhhdmUgc3RvcHBlZCBjaGlsZHJlbi4gKi8KLSAgICBpZiAoYW55X3N0b3BwZWQg PT0gMCkKLSAgICAgIHsKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAx NDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTow MToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAg ICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lv biBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDMKLSAgCi0gICNlbmRpZiAv KiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZp bmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAK LSEgI2RlZmluZSBQQVRDSExFVkVMIDQKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAq LwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDUgYi9zcmNwa2dzL2Jh c2gvZmlsZXMvYmFzaDUwLTAwNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIxY2Q3 NWIwYjYuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA1Cisr KyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQK LQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlE OgliYXNoNTAtMDA1Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJQnJhZCBTcGVuY2VyIDxic3BlbmNlckBi bGFja2JlcnJ5LmNvbT4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTwxYjk5M2ZmMi1jZTRmLTY2MmEtNmJl NC0zOTM0NTczNjJlNDdAYmxhY2tiZXJyeS5jb20+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0cDov L2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDEvbXNnMDAyNTAuaHRt bAotCi1CdWctRGVzY3JpcHRpb246Ci0KLUluIGNlcnRhaW4gY2FzZXMsIGJhc2ggb3B0aW1pemVz IG91dCBhIGZvcmsoKSBjYWxsIHRvbyBlYXJseSBhbmQgcHJldmVudHMKLXRyYXBzIGZyb20gcnVu bmluZy4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01 LjAtcGF0Y2hlZC9jb21tYW5kLmgJMjAxOC0wNy0yMCAyMToxNjozMS4wMDAwMDAwMDAgLTA0MDAK LS0tLSBjb21tYW5kLmgJMjAxOS0wMi0yMCAxMTowOTozNi4wMDAwMDAwMDAgLTA1MDAKLSoqKioq KioqKioqKioqKgotKioqIDE4NywxOTAgKioqKgotLS0tIDE4OCwxOTIgLS0tLQotICAjZGVmaW5l IENNRF9MQVNUUElQRQkgICAgMHgyMDAwCi0gICNkZWZpbmUgQ01EX1NURFBBVEgJICAgIDB4NDAw MAkvKiB1c2Ugc3RhbmRhcmQgcGF0aCBmb3IgY29tbWFuZCBsb29rdXAgKi8KLSsgI2RlZmluZSBD TURfVFJZX09QVElNSVpJTkcgIDB4ODAwMAkvKiB0cnkgdG8gb3B0aW1pemUgdGhpcyBzaW1wbGUg Y29tbWFuZCAqLwotICAKLSAgLyogV2hhdCBhIGNvbW1hbmQgbG9va3MgbGlrZS4gKi8KLSoqKiAu Li9iYXNoLTUuMC1wYXRjaGVkL2J1aWx0aW5zL2V2YWxzdHJpbmcuYwkyMDE4LTEyLTI2IDExOjE5 OjIxLjAwMDAwMDAwMCAtMDUwMAotLS0tIGJ1aWx0aW5zL2V2YWxzdHJpbmcuYwkyMDE5LTAxLTI5 IDE0OjE1OjE5LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogMTAxLDEwNCAq KioqCi0tLS0gMTAxLDExMyAtLS0tCi0gIH0KLSAgCi0rIGludAotKyBjYW5fb3B0aW1pemVfY29u bmVjdGlvbiAoY29tbWFuZCkKLSsgICAgICBDT01NQU5EICpjb21tYW5kOwotKyB7Ci0rICAgcmV0 dXJuICgqYmFzaF9pbnB1dC5sb2NhdGlvbi5zdHJpbmcgPT0gJ1wwJyAmJgotKyAJICAoY29tbWFu ZC0+dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09IEFORF9BTkQgfHwgY29tbWFuZC0+dmFs dWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09IE9SX09SIHx8IGNvbW1hbmQtPnZhbHVlLkNvbm5l Y3Rpb24tPmNvbm5lY3RvciA9PSAnOycpICYmCi0rIAkgIGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rp b24tPnNlY29uZC0+dHlwZSA9PSBjbV9zaW1wbGUpOwotKyB9Ci0rIAotICB2b2lkCi0gIG9wdGlt aXplX2ZvcmsgKGNvbW1hbmQpCi0qKioqKioqKioqKioqKioKLSoqKiAxMDYsMTEwICoqKioKLSAg ewotICAgIGlmIChjb21tYW5kLT50eXBlID09IGNtX2Nvbm5lY3Rpb24gJiYKLSEgICAgICAgKGNv bW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9PSBBTkRfQU5EIHx8IGNvbW1hbmQt PnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9PSBPUl9PUikgJiYKLSAgICAgICAgc2hvdWxk X3N1cHByZXNzX2ZvcmsgKGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPnNlY29uZCkpCi0gICAg ICB7Ci0tLS0gMTE1LDEyMCAtLS0tCi0gIHsKLSAgICBpZiAoY29tbWFuZC0+dHlwZSA9PSBjbV9j b25uZWN0aW9uICYmCi0hICAgICAgIChjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25uZWN0 b3IgPT0gQU5EX0FORCB8fCBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25uZWN0b3IgPT0g T1JfT1IgfHwgY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09ICc7JykgJiYK LSEgICAgICAgKGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPnNlY29uZC0+ZmxhZ3MgJiBDTURf VFJZX09QVElNSVpJTkcpICYmCi0gICAgICAgIHNob3VsZF9zdXBwcmVzc19mb3JrIChjb21tYW5k LT52YWx1ZS5Db25uZWN0aW9uLT5zZWNvbmQpKQotICAgICAgewotKioqKioqKioqKioqKioqCi0q KiogNDEzLDQxOCAqKioqCi0gIAkJICBjb21tYW5kLT52YWx1ZS5TaW1wbGUtPmZsYWdzIHw9IENN RF9OT19GT1JLOwotICAJCX0KLSEgCSAgICAgIGVsc2UgaWYgKGNvbW1hbmQtPnR5cGUgPT0gY21f Y29ubmVjdGlvbikKLSEgCQlvcHRpbWl6ZV9mb3JrIChjb21tYW5kKTsKLSAgI2VuZGlmIC8qIE9O RVNIT1QgKi8KLSAgCi0tLS0gNDIzLDQzOCAtLS0tCi0gIAkJICBjb21tYW5kLT52YWx1ZS5TaW1w bGUtPmZsYWdzIHw9IENNRF9OT19GT1JLOwotICAJCX0KLSEgCi0hIAkgICAgICAvKiBDYW4ndCBv cHRpbWl6ZSBmb3JrcyBvdXQgaGVyZSBleGVjZXB0IGZvciBzaW1wbGUgY29tbWFuZHMuCi0hIAkJ IFRoaXMga25vd3MgdGhhdCB0aGUgcGFyc2VyIHNldHMgdXAgY29tbWFuZHMgYXMgbGVmdC1zaWRl IGhlYXZ5Ci0hIAkJICgmJiBhbmQgfHwgYXJlIGxlZnQtYXNzb2NpYXRpdmUpIGFuZCBhZnRlciB0 aGUgc2luZ2xlIHBhcnNlLAotISAJCSBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgY29tbWFu ZCBzdHJpbmcsIHRoZSBsYXN0IGluIGEKLSEgCQkgc2VyaWVzIG9mIGNvbm5lY3Rpb24gY29tbWFu ZHMgaXMKLSEgCQkgY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+c2Vjb25kLiAqLwotISAJICAg ICAgZWxzZSBpZiAoY29tbWFuZC0+dHlwZSA9PSBjbV9jb25uZWN0aW9uICYmIGNhbl9vcHRpbWl6 ZV9jb25uZWN0aW9uIChjb21tYW5kKSkKLSEgCQl7Ci0hIAkJICBjb21tYW5kLT52YWx1ZS5Db25u ZWN0aW9uLT5zZWNvbmQtPmZsYWdzIHw9IENNRF9UUllfT1BUSU1JWklORzsKLSEgCQkgIGNvbW1h bmQtPnZhbHVlLkNvbm5lY3Rpb24tPnNlY29uZC0+dmFsdWUuU2ltcGxlLT5mbGFncyB8PSBDTURf VFJZX09QVElNSVpJTkc7Ci0hIAkJfQotICAjZW5kaWYgLyogT05FU0hPVCAqLwotICAKLSoqKiAu Li9iYXNoLTUuMC1wYXRjaGVkL2V4ZWN1dGVfY21kLmMJMjAxOC0xMi0wNSAwOTowNToxNC4wMDAw MDAwMDAgLTA1MDAKLS0tLSBleGVjdXRlX2NtZC5jCTIwMTktMDEtMjUgMTU6NTk6MDAuMDAwMDAw MDAwIC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNzY4LDI3NzEgKioqKgotLS0tIDI3Njgs Mjc3MyAtLS0tCi0gIAkgICAoZXhlY19yZXN1bHQgIT0gRVhFQ1VUSU9OX1NVQ0NFU1MpKSkKLSAg CXsKLSsgCSAgb3B0aW1pemVfZm9yayAoY29tbWFuZCk7Ci0rIAotICAJICBzZWNvbmQgPSBjb21t YW5kLT52YWx1ZS5Db25uZWN0aW9uLT5zZWNvbmQ7Ci0gIAkgIGlmIChpZ25vcmVfcmV0dXJuICYm IHNlY29uZCkKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTow My4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4w MDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAgbG9v a3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJp bmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDQKLSAgCi0gICNlbmRpZiAvKiBfUEFU Q0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhl IHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2Rl ZmluZSBQQVRDSExFVkVMIDUKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZm IC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDYgYi9zcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAwNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFkMWNkMjAwOTAu LjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA2CisrKyAvZGV2 L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAg ICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1 MC0wMDYKLQotQnVnLVJlcG9ydGVkLWJ5OglUb21hcyBNb3plcyA8aHlkcmFwb2xpY0BnbWFpbC5j b20+Ci1CdWctUmVmZXJlbmNlLUlEOgk8Q0FHNk1BelF1bUxVMnZobm1yMVVyWUFVUUFGVzVZbzho Zk1fc0VpYlg5UkpRV0prUnJBQG1haWwuZ21haWwuY29tPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0 dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5LTAzL21zZzAwMDM3 Lmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1CYXNoLTUuMCBkaWQgbm90IGJ1aWxkIHN1Y2Nl c3NmdWxseSBpZiBTWVNMT0dfSElTVE9SWSB3YXMgZGVmaW5lZCB3aXRob3V0Ci1hbHNvIGRlZmlu aW5nIFNZU0xPR19TSE9QVC4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0q KiogLi4vYmFzaC01LjAtcGF0Y2hlZC9idWlsdGlucy9zaG9wdC5kZWYJMjAxOC0xMC0wNSAxNDo0 OTowMi4wMDAwMDAwMDAgLTA0MDAKLS0tLSBidWlsdGlucy9zaG9wdC5kZWYJMjAxOS0wMS0yMyAw OTo1NToyMi4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioqIDEyMywxMjcgKioq KgotICAjZW5kaWYKLSAgCi0hICNpZiBkZWZpbmVkIChTWVNMT0dfSElTVE9SWSkgJiYgZGVmaW5l ZCAoU1lTTE9HX1NIT1BUKQotICBleHRlcm4gaW50IHN5c2xvZ19oaXN0b3J5OwotICAjZW5kaWYK LS0tLSAxMjMsMTI3IC0tLS0KLSAgI2VuZGlmCi0gIAotISAjaWYgZGVmaW5lZCAoU1lTTE9HX0hJ U1RPUlkpCi0gIGV4dGVybiBpbnQgc3lzbG9nX2hpc3Rvcnk7Ci0gICNlbmRpZgotKioqIC4uL2Jh c2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAot LS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQwMAotKioq KioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUg cGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVm aW5lIFBBVENITEVWRUwgNQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0tLS0g MjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0 aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgNgot ICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jh c2gvZmlsZXMvYmFzaDUwLTAwNyBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA3CmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWViNDE1MGEyYi4uMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDcKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCww IEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09 Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwNwotCi1CdWctUmVwb3J0 ZWQtYnk6CUdyaXNoYSBMZXZpdCA8Z3Jpc2hhbGV2aXRAZ21haWwuY29tPgotQnVnLVJlZmVyZW5j ZS1JRDoJPENBTXU9QnJvSGFwRzFBUzN4QjVTUWFDWDJYS3U9LUUyT2I5dVc2TE51SHZkPVlvaHJE d0BtYWlsLmdtYWlsLmNvbT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwOi8vbGlzdHMuZ251Lm9y Zy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wMi9tc2cwMDA2Ny5odG1sCi0KLUJ1Zy1EZXNj cmlwdGlvbjoKLQotUnVubmluZyBgZXhlYycgd2hlbiBqb2IgY29udHJvbCB3YXMgZGlzYWJsZWQs IGV2ZW4gdGVtcG9yYXJpbHksIGJ1dCBhZnRlciBpdAotaGFkIGJlZW4gaW5pdGlhbGl6ZWQsIGNv dWxkIGxlYXZlIHRoZSB0ZXJtaW5hbCBpbiB0aGUgd3JvbmcgcHJvY2VzcyBncm91cCBmb3IKLXRo ZSBleGVjdXRlZCBwcm9jZXNzLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0K LSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2pvYnMuYwkyMDE4LTEyLTA2IDExOjQ0OjM0LjAwMDAw MDAwMCAtMDUwMAotLS0tIGpvYnMuYwkyMDE5LTA0LTEyIDE1OjE1OjEwLjAwMDAwMDAwMCAtMDQw MAotKioqKioqKioqKioqKioqCi0qKiogNDgzOCw0ODUwICoqKioKLSAgewotICAgIGlmIChqb2Jf Y29udHJvbCkKLSEgICAgIHsKLSEgICAgICAgdGVybWluYXRlX3N0b3BwZWRfam9icyAoKTsKLSAg Ci0hICAgICAgIGlmIChvcmlnaW5hbF9wZ3JwID49IDApCi0hIAlnaXZlX3Rlcm1pbmFsX3RvIChv cmlnaW5hbF9wZ3JwLCAxKTsKLSEgICAgIH0KLSAgCi0hICAgaWYgKG9yaWdpbmFsX3BncnAgPj0g MCkKLSEgICAgIHNldHBnaWQgKDAsIG9yaWdpbmFsX3BncnApOwotICB9Ci0gIAotLS0tIDQ4Mzgs NDg0OCAtLS0tCi0gIHsKLSAgICBpZiAoam9iX2NvbnRyb2wpCi0hICAgICB0ZXJtaW5hdGVfc3Rv cHBlZF9qb2JzICgpOwotICAKLSEgICBpZiAob3JpZ2luYWxfcGdycCA+PSAwICYmIHRlcm1pbmFs X3BncnAgIT0gb3JpZ2luYWxfcGdycCkKLSEgICAgIGdpdmVfdGVybWluYWxfdG8gKG9yaWdpbmFs X3BncnAsIDEpOwotICAKLSEgICBpZiAob3JpZ2luYWxfcGdycCA+PSAwICYmIHNldHBnaWQgKDAs IG9yaWdpbmFsX3BncnApID09IDApCi0hICAgICBzaGVsbF9wZ3JwID0gb3JpZ2luYWxfcGdycDsK LSAgfQotICAKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTow My4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4w MDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAgbG9v a3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJp bmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDYKLSAgCi0gICNlbmRpZiAvKiBfUEFU Q0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhl IHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2Rl ZmluZSBQQVRDSExFVkVMIDcKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZm IC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDggYi9zcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAwOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA5ZDZiMzNhYzcu LjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA4CisrKyAvZGV2 L251bGwKQEAgLTEsNjggKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAg ICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1 MC0wMDgKLQotQnVnLVJlcG9ydGVkLWJ5OglNaWNoYWVsIEFsYmludXMgPG1pY2hhZWwuYWxiaW51 c0BnbXguZGU+Ci1CdWctUmVmZXJlbmNlLUlEOgk8ODdibTM2azNrei5mc2ZAZ214LmRlPgotQnVn LVJlZmVyZW5jZS1VUkw6CWh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJh c2gvMjAxOS0wMi9tc2cwMDExMS5odG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotV2hlbiBISVNU U0laRSBpcyBzZXQgdG8gMCwgaGlzdG9yeSBleHBhbnNpb24gY2FuIGxlYXZlIHRoZSBoaXN0b3J5 IGxlbmd0aAotc2V0IHRvIGFuIGluY29ycmVjdCB2YWx1ZSwgbGVhZGluZyB0byBzdWJzZXF1ZW50 IGF0dGVtcHRzIHRvIGFjY2VzcyBpbnZhbGlkCi1tZW1vcnkuCi0KLVBhdGNoIChhcHBseSB3aXRo IGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvYmFzaGhpc3QuYwkyMDE4 LTA3LTA1IDIyOjQxOjE0LjAwMDAwMDAwMCAtMDQwMAotLS0tIGJhc2hoaXN0LmMJMjAxOS0wMi0y MCAxNjoyMDowNC4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioqIDU2MSw1NzMg KioqKgotICAgIGlmICghaGlzdG9yeV9leHBhbnNpb25faW5oaWJpdGVkICYmIGhpc3RvcnlfZXhw YW5zaW9uICYmIGhpc3RvcnlfZXhwYW5zaW9uX3AgKGxpbmUpKQotICAgICAgewotICAgICAgICAv KiBJZiB3ZSBhcmUgZXhwYW5kaW5nIHRoZSBzZWNvbmQgb3IgbGF0ZXIgbGluZSBvZiBhIG11bHRp LWxpbmUKLSAgCSBjb21tYW5kLCBkZWNyZWFzZSBoaXN0b3J5X2xlbmd0aCBzbyByZWZlcmVuY2Vz IHRvIGhpc3RvcnkgZXhwYW5zaW9ucwotICAJIGluIHRoZXNlIGxpbmVzIHJlZmVyIHRvIHRoZSBw cmV2aW91cyBoaXN0b3J5IGVudHJ5IGFuZCBub3QgdGhlCi0gIAkgY3VycmVudCBjb21tYW5kLiAq LwotICAgICAgICBpZiAoaGlzdG9yeV9sZW5ndGggPiAwICYmIGNvbW1hbmRfb3JpZW50ZWRfaGlz dG9yeSAmJiBjdXJyZW50X2NvbW1hbmRfZmlyc3RfbGluZV9zYXZlZCAmJiBjdXJyZW50X2NvbW1h bmRfbGluZV9jb3VudCA+IDEpCi0gICAgICAgICAgaGlzdG9yeV9sZW5ndGgtLTsKLSAgICAgICAg ZXhwYW5kZWQgPSBoaXN0b3J5X2V4cGFuZCAobGluZSwgJmhpc3RvcnlfdmFsdWUpOwotICAgICAg ICBpZiAoaGlzdG9yeV9sZW5ndGggPj0gMCAmJiBjb21tYW5kX29yaWVudGVkX2hpc3RvcnkgJiYg Y3VycmVudF9jb21tYW5kX2ZpcnN0X2xpbmVfc2F2ZWQgJiYgY3VycmVudF9jb21tYW5kX2xpbmVf Y291bnQgPiAxKQotISAgICAgICAgIGhpc3RvcnlfbGVuZ3RoKys7Ci0gIAotICAgICAgICBpZiAo ZXhwYW5kZWQpCi0tLS0gNTYxLDU3NiAtLS0tCi0gICAgaWYgKCFoaXN0b3J5X2V4cGFuc2lvbl9p bmhpYml0ZWQgJiYgaGlzdG9yeV9leHBhbnNpb24gJiYgaGlzdG9yeV9leHBhbnNpb25fcCAobGlu ZSkpCi0gICAgICB7Ci0rICAgICAgIGludCBvbGRfbGVuOwotKyAKLSAgICAgICAgLyogSWYgd2Ug YXJlIGV4cGFuZGluZyB0aGUgc2Vjb25kIG9yIGxhdGVyIGxpbmUgb2YgYSBtdWx0aS1saW5lCi0g IAkgY29tbWFuZCwgZGVjcmVhc2UgaGlzdG9yeV9sZW5ndGggc28gcmVmZXJlbmNlcyB0byBoaXN0 b3J5IGV4cGFuc2lvbnMKLSAgCSBpbiB0aGVzZSBsaW5lcyByZWZlciB0byB0aGUgcHJldmlvdXMg aGlzdG9yeSBlbnRyeSBhbmQgbm90IHRoZQotICAJIGN1cnJlbnQgY29tbWFuZC4gKi8KLSsgICAg ICAgb2xkX2xlbiA9IGhpc3RvcnlfbGVuZ3RoOwotICAgICAgICBpZiAoaGlzdG9yeV9sZW5ndGgg PiAwICYmIGNvbW1hbmRfb3JpZW50ZWRfaGlzdG9yeSAmJiBjdXJyZW50X2NvbW1hbmRfZmlyc3Rf bGluZV9zYXZlZCAmJiBjdXJyZW50X2NvbW1hbmRfbGluZV9jb3VudCA+IDEpCi0gICAgICAgICAg aGlzdG9yeV9sZW5ndGgtLTsKLSAgICAgICAgZXhwYW5kZWQgPSBoaXN0b3J5X2V4cGFuZCAobGlu ZSwgJmhpc3RvcnlfdmFsdWUpOwotICAgICAgICBpZiAoaGlzdG9yeV9sZW5ndGggPj0gMCAmJiBj b21tYW5kX29yaWVudGVkX2hpc3RvcnkgJiYgY3VycmVudF9jb21tYW5kX2ZpcnN0X2xpbmVfc2F2 ZWQgJiYgY3VycmVudF9jb21tYW5kX2xpbmVfY291bnQgPiAxKQotISAgICAgICAgIGhpc3Rvcnlf bGVuZ3RoID0gb2xkX2xlbjsKLSAgCi0gICAgICAgIGlmIChleHBhbmRlZCkKLQotKioqIC4uL2Jh c2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAot LS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQwMAotKioq KioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUg cGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVm aW5lIFBBVENITEVWRUwgNwotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0tLS0g MjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0 aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgOAot ICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jh c2gvZmlsZXMvYmFzaDUwLTAwOSBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA5CmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWY0Y2U3YjVhZC4uMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDkKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCww IEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09 Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwOQotCi1CdWctUmVwb3J0 ZWQtYnk6CWNoZXQucmFtZXlAY2FzZS5lZHUKLUJ1Zy1SZWZlcmVuY2UtSUQ6Ci1CdWctUmVmZXJl bmNlLVVSTDoKLQotQnVnLURlc2NyaXB0aW9uOgotCi1UaGUgaGlzdG9yeSBmaWxlIHJlYWRpbmcg Y29kZSBkb2Vzbid0IGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0bwotdGhlIGhpc3Rv cnkgZmlsZSB3aGVuIGl0IGVuY291bnRlcnMgYSB6ZXJvLWxlbmd0aCBmaWxlLgotCi1QYXRjaCAo YXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2xpYi9y ZWFkbGluZS9oaXN0ZmlsZS5jCTIwMTgtMDYtMTEgMDk6MTQ6NTIuMDAwMDAwMDAwIC0wNDAwCi0t LS0gbGliL3JlYWRsaW5lL2hpc3RmaWxlLmMJMjAxOS0wNS0xNiAxNTo1NTo1Ny4wMDAwMDAwMDAg LTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDMwNiwzMDkgKioqKgotLS0tIDMxMiwzMTYgLS0t LQotICAgICAgewotICAgICAgICBmcmVlIChpbnB1dCk7Ci0rICAgICAgIGNsb3NlIChmaWxlKTsK LSAgICAgICAgcmV0dXJuIDA7CS8qIGRvbid0IHdhc3RlIHRpbWUgaWYgd2UgZG9uJ3QgaGF2ZSB0 byAqLwotICAgICAgfQotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0 OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAx OjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAg ICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9u IHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgOAotICAKLSAgI2VuZGlmIC8q IF9QQVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmlu ZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAot ISAjZGVmaW5lIFBBVENITEVWRUwgOQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICov CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMCBiL3NyY3BrZ3MvYmFz aC9maWxlcy9iYXNoNTAtMDEwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWM3YWE5 MjUxNS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTAKKysr IC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAot CQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6 CWJhc2g1MC0wMTAKLQotQnVnLVJlcG9ydGVkLWJ5OglUaG9yc3RlbiBHbGFzZXIgPHRnQG1pcmJz ZC5kZT4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTwxNTY2MjI5NjI4MzEuMTk0MzguMTYzNzQ5NjExMTQ4 MzY1NTYyOTQucmVwb3J0YnVnQHRnbGFzZS5sYW4udGFyZW50LmRlPgotQnVnLVJlZmVyZW5jZS1V Ukw6CWh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9OTM1 MTE1Ci0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotQmFzaC01LjAgY2hhbmdlZCB0aGUgd2F5IGFzc2ln bm1lbnQgc3RhdGVtZW50cyBwcmVjZWRpbmcgc3BlY2lhbCBidWlsdGlucwotYW5kIHNoZWxsIGZ1 bmN0aW9ucyB3ZXJlIGhhbmRsZWQgaW4gcG9zaXggbW9kZS4gVGhleSBhdXRvbWF0aWNhbGx5IGNy ZWF0ZWQKLW9yIG1vZGlmaWVkIGdsb2JhbCB2YXJpYWJsZXMgaW5zdGVhZCBvZiBtb2RpZnlpbmcg ZXhpc3RpbmcgbG9jYWwgdmFyaWFibGVzCi1hcyBpbiBiYXNoLTQuNC4KLQotVGhlIGJhc2gtNC40 IHBvc2l4LW1vZGUgc2VtYW50aWNzIHdlcmUgYnVnZ3ksIGFuZCByZXN1bHRlZCBpbiBjcmVhdGlu ZwotbG9jYWwgdmFyaWFibGVzIHdoZXJlIHRoZXkgd2VyZSBub3QgaW50ZW5kZWQgYW5kIG1vZGlm eWluZyBnbG9iYWwgdmFyaWFibGVzCi1hbmQgbG9jYWwgdmFyaWFibGVzIHNpbXVsdGFuZW91c2x5 LgotCi1UaGUgYmFzaC01LjAgY2hhbmdlcyB3ZXJlIGludGVuZGVkIHRvIGZpeCB0aGlzIGlzc3Vl LCBidXQgZGlkIG5vdCBwcmVzZXJ2ZQotZW5vdWdoIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiBU aGUgcG9zaXggc3RhbmRhcmQgYWxzbyBjaGFuZ2VkIHdoYXQgaXQKLXJlcXVpcmVkIGluIHRoZXNl IGNhc2VzLCBzbyBiYXNoLTUuMCBpcyBub3QgYm91bmQgYnkgdGhlIHN0cmljdCBjb25mb3JtYW5j ZQotcmVxdWlyZW1lbnRzIHRoYXQgZXhpc3RlZCBpbiBwcmV2aW91cyBpc3N1ZXMgb2YgdGhlIHN0 YW5kYXJkLgotCi1UaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBiYXNoLTUuMCBwb3NpeCBtb2RlIGJl aGF2aW9yIGluIGFuIGVmZm9ydCB0byByZXN0b3JlCi1zb21lIGJhY2t3YXJkcyBjb21wYXRpYmls aXR5IGFuZCByYXRpb25hbGl6ZSB0aGUgYmVoYXZpb3IgaW4gdGhlIHByZXNlbmNlIG9mCi1sb2Nh bCB2YXJpYWJsZXMuIEl0Ci0KLTEuIENoYW5nZXMgdGhlIGFzc2lnbm1lbnQgc2VtYW50aWNzIHRv IGJlIG1vcmUgc2ltaWxhciB0byBzdGFuZGFsb25lIGFzc2lnbm1lbnQKLSAgIHN0YXRlbWVudHM6 IGFzc2lnbm1lbnRzIHByZWNlZGluZyBhIGZ1bmN0aW9uIGNhbGwgb3Igc3BlY2lhbCBidWlsdGlu IHdoaWxlCi0gICBleGVjdXRpbmcgaW4gYSBzaGVsbCBmdW5jdGlvbiB3aWxsIG1vZGlmeSB0aGUg dmFsdWUgb2YgYSBsb2NhbCB2YXJpYWJsZQotICAgd2l0aCB0aGUgc2FtZSBuYW1lIGZvciB0aGUg ZHVyYXRpb24gb2YgdGhlIGZ1bmN0aW9uJ3MgZXhlY3V0aW9uOwotCi0yLiBDaGFuZ2VzIGFzc2ln bm1lbnRzIHByZWNlZGluZyBzaGVsbCBmdW5jdGlvbiBjYWxscyBvciBzcGVjaWFsIGJ1aWx0aW5z Ci0gICBmcm9tIHdpdGhpbiBhIHNoZWxsIGZ1bmN0aW9uIHRvIG5vIGxvbmdlciBjcmVhdGUgb3Ig bW9kaWZ5IGdsb2JhbCB2YXJpYWJsZXMKLSAgIGluIHRoZSBwcmVzZW5jZSBvZiBhIGxvY2FsIHZh cmlhYmxlIHdpdGggdGhlIHNhbWUgbmFtZTsKLQotMy4gQXNzaWdubWVudCBzdGF0ZW1lbnRzIHBy ZWNlZGluZyBhIHNoZWxsIGZ1bmN0aW9uIGNhbGwgb3Igc3BlY2lhbCBidWlsdGluCi0gICBhdCB0 aGUgZ2xvYmFsIHNjb3BlIGNvbnRpbnVlIHRvIG1vZGlmeSB0aGUgKGdsb2JhbCkgY2FsbGluZyBl bnZpcm9ubWVudCwKLSAgIGJ1dCBhcmUgdW5hZmZlY3RlZCBieSBhc3NpZ25tZW50cyBwcmVjZWRp bmcgZnVuY3Rpb24gY2FsbHMgb3Igc3BlY2lhbAotICAgYnVpbHRpbnMgd2l0aGluIGEgZnVuY3Rp b24sIGFzIGRlc2NyaWJlZCBpbiBpdGVtIDIuIFRoaXMgaXMgYWxzbyBzaW1pbGFyCi0gICB0byB0 aGUgYmVoYXZpb3Igb2YgYSBzdGFuZGFsb25lIGFzc2lnbm1lbnQgc3RhdGVtZW50LgotCi1QYXRj aCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL3Zh cmlhYmxlcy5jCTIwMTgtMTItMTggMTE6MDc6MjEuMDAwMDAwMDAwIC0wNTAwCi0tLS0gdmFyaWFi bGVzLmMJMjAxOS0wOC0yMiAxMDo1Mzo0NC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioq KgotKioqIDQ0NjEsNDQ2NyAqKioqCi0gIAotICAvKiBUYWtlIGEgdmFyaWFibGUgZnJvbSBhbiBh c3NpZ25tZW50IHN0YXRlbWVudCBwcmVjZWRpbmcgYSBwb3NpeCBzcGVjaWFsCi0hICAgIGJ1aWx0 aW4gKGluY2x1ZGluZyBgcmV0dXJuJykgYW5kIGNyZWF0ZSBhIGdsb2JhbCB2YXJpYWJsZSBmcm9t IGl0LiBUaGlzCi0hICAgIGlzIGNhbGxlZCBmcm9tIG1lcmdlX3RlbXBvcmFyeV9lbnYsIHdoaWNo IGlzIG9ubHkgY2FsbGVkIHdoZW4gaW4gcG9zaXgKLSEgICAgbW9kZS4gKi8KLSAgc3RhdGljIHZv aWQKLSAgcHVzaF9wb3NpeF90ZW1wX3ZhciAoZGF0YSkKLS0tLSA0NDYxLDQ0NjcgLS0tLQotICAK LSAgLyogVGFrZSBhIHZhcmlhYmxlIGZyb20gYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgcHJlY2Vk aW5nIGEgcG9zaXggc3BlY2lhbAotISAgICBidWlsdGluIChpbmNsdWRpbmcgYHJldHVybicpIGFu ZCBjcmVhdGUgYSB2YXJpYWJsZSBmcm9tIGl0IGFzIGlmIGEKLSEgICAgc3RhbmRhbG9uZSBhc3Np Z25tZW50IHN0YXRlbWVudCBoYWQgYmVlbiBwZXJmb3JtZWQuIFRoaXMgaXMgY2FsbGVkIGZyb20K LSEgICAgbWVyZ2VfdGVtcG9yYXJ5X2Vudiwgd2hpY2ggaXMgb25seSBjYWxsZWQgd2hlbiBpbiBw b3NpeCBtb2RlLiAqLwotICBzdGF0aWMgdm9pZAotICBwdXNoX3Bvc2l4X3RlbXBfdmFyIChkYXRh KQotKioqKioqKioqKioqKioqCi0qKiogNDQ3Myw0NDg2ICoqKioKLSAgICB2YXIgPSAoU0hFTExf VkFSICopZGF0YTsKLSAgCi0hICAgYmluZGluZ190YWJsZSA9IGdsb2JhbF92YXJpYWJsZXMtPnRh YmxlOwotISAgIGlmIChiaW5kaW5nX3RhYmxlID09IDApCi0hICAgICBiaW5kaW5nX3RhYmxlID0g Z2xvYmFsX3ZhcmlhYmxlcy0+dGFibGUgPSBoYXNoX2NyZWF0ZSAoVkFSSUFCTEVTX0hBU0hfQlVD S0VUUyk7Ci0hIAotISAgIHYgPSBiaW5kX3ZhcmlhYmxlX2ludGVybmFsICh2YXItPm5hbWUsIHZh bHVlX2NlbGwgKHZhciksIGJpbmRpbmdfdGFibGUsIDAsIEFTU19GT1JDRXxBU1NfTk9MT05HSk1Q KTsKLSAgCi0gICAgLyogZ2xvYmFsIHZhcmlhYmxlcyBhcmUgbm8gbG9uZ2VyIHRlbXBvcmFyeSBh bmQgZG9uJ3QgbmVlZCBwcm9wYWdhdGluZy4gKi8KLSEgICB2YXItPmF0dHJpYnV0ZXMgJj0gfihh dHRfdGVtcHZhcnxhdHRfcHJvcGFnYXRlKTsKLSAgICBpZiAodikKLSEgICAgIHYtPmF0dHJpYnV0 ZXMgfD0gdmFyLT5hdHRyaWJ1dGVzOwotICAKLSAgICBpZiAoZmluZF9zcGVjaWFsX3ZhciAodmFy LT5uYW1lKSA+PSAwKQotLS0tIDQ0NzMsNDQ5NyAtLS0tCi0gICAgdmFyID0gKFNIRUxMX1ZBUiAq KWRhdGE7Ci0gIAotISAgIC8qIEp1c3QgbGlrZSBkb19hc3NpZ25tZW50X2ludGVybmFsKCkuIFRo aXMgbWFrZXMgYXNzaWdubWVudHMgcHJlY2VkaW5nCi0hICAgICAgc3BlY2lhbCBidWlsdGlucyBh Y3QgbGlrZSBzdGFuZGFsb25lIGFzc2lnbm1lbnQgc3RhdGVtZW50cyB3aGVuIGluCi0hICAgICAg cG9zaXggbW9kZSwgc2F0aXNmeWluZyB0aGUgcG9zaXggcmVxdWlyZW1lbnQgdGhhdCB0aGlzIGFm ZmVjdCB0aGUKLSEgICAgICAiY3VycmVudCBleGVjdXRpb24gZW52aXJvbm1lbnQuIiAqLwotISAg IHYgPSBiaW5kX3ZhcmlhYmxlICh2YXItPm5hbWUsIHZhbHVlX2NlbGwgKHZhciksIEFTU19GT1JD RXxBU1NfTk9MT05HSk1QKTsKLSEgCi0hICAgLyogSWYgdGhpcyBtb2RpZmllcyBhbiBleGlzdGlu ZyBsb2NhbCB2YXJpYWJsZSwgdi0+Y29udGV4dCB3aWxsIGJlIG5vbi16ZXJvLgotISAgICAgIElm IGl0IGNvbWVzIGJhY2sgd2l0aCB2LT5jb250ZXh0ID09IDAsIHdlIGJvdW5kIGF0IHRoZSBnbG9i YWwgY29udGV4dC4KLSEgICAgICBTZXQgYmluZGluZ190YWJsZSBhcHByb3ByaWF0ZWx5LiBJdCBk b2Vzbid0IG1hdHRlciB3aGV0aGVyIGl0J3MgY29ycmVjdAotISAgICAgIGlmIHRoZSB2YXJpYWJs ZSBpcyBsb2NhbCwgb25seSB0aGF0IGl0J3Mgbm90IGdsb2JhbF92YXJpYWJsZXMtPnRhYmxlICov Ci0hICAgYmluZGluZ190YWJsZSA9IHYtPmNvbnRleHQgPyBzaGVsbF92YXJpYWJsZXMtPnRhYmxl IDogZ2xvYmFsX3ZhcmlhYmxlcy0+dGFibGU7Ci0gIAotICAgIC8qIGdsb2JhbCB2YXJpYWJsZXMg YXJlIG5vIGxvbmdlciB0ZW1wb3JhcnkgYW5kIGRvbid0IG5lZWQgcHJvcGFnYXRpbmcuICovCi0h ICAgaWYgKGJpbmRpbmdfdGFibGUgPT0gZ2xvYmFsX3ZhcmlhYmxlcy0+dGFibGUpCi0hICAgICB2 YXItPmF0dHJpYnV0ZXMgJj0gfihhdHRfdGVtcHZhcnxhdHRfcHJvcGFnYXRlKTsKLSEgCi0gICAg aWYgKHYpCi0hICAgICB7Ci0hICAgICAgIHYtPmF0dHJpYnV0ZXMgfD0gdmFyLT5hdHRyaWJ1dGVz OwotISAgICAgICB2LT5hdHRyaWJ1dGVzICY9IH5hdHRfdGVtcHZhcjsJLyogbm90IGEgdGVtcCB2 YXIgbm93ICovCi0hICAgICB9Ci0gIAotICAgIGlmIChmaW5kX3NwZWNpYWxfdmFyICh2YXItPm5h bWUpID49IDApCi0qKioqKioqKioqKioqKioKLSoqKiA0NTc2LDQ1ODcgKioqKgotICB7Ci0gICAg aW50IGk7Ci0gIAotICAgIHRlbXB2YXJfbGlzdCA9IHN0cnZlY19jcmVhdGUgKEhBU0hfRU5UUklF UyAodGVtcG9yYXJ5X2VudikgKyAxKTsKLSAgICB0ZW1wdmFyX2xpc3RbdHZsaXN0X2luZCA9IDBd ID0gMDsKLSEgICAgIAotISAgIGhhc2hfZmx1c2ggKHRlbXBvcmFyeV9lbnYsIHB1c2hmKTsKLSEg ICBoYXNoX2Rpc3Bvc2UgKHRlbXBvcmFyeV9lbnYpOwotICAgIHRlbXBvcmFyeV9lbnYgPSAoSEFT SF9UQUJMRSAqKU5VTEw7Ci0gIAotICAgIHRlbXB2YXJfbGlzdFt0dmxpc3RfaW5kXSA9IDA7Ci0g IAotLS0tIDQ1ODcsNDYwMSAtLS0tCi0gIHsKLSAgICBpbnQgaTsKLSsgICBIQVNIX1RBQkxFICpk aXNwb3NlcjsKLSAgCi0gICAgdGVtcHZhcl9saXN0ID0gc3RydmVjX2NyZWF0ZSAoSEFTSF9FTlRS SUVTICh0ZW1wb3JhcnlfZW52KSArIDEpOwotICAgIHRlbXB2YXJfbGlzdFt0dmxpc3RfaW5kID0g MF0gPSAwOwotISAKLSEgICBkaXNwb3NlciA9IHRlbXBvcmFyeV9lbnY7Ci0gICAgdGVtcG9yYXJ5 X2VudiA9IChIQVNIX1RBQkxFICopTlVMTDsKLSAgCi0rICAgaGFzaF9mbHVzaCAoZGlzcG9zZXIs IHB1c2hmKTsKLSsgICBoYXNoX2Rpc3Bvc2UgKGRpc3Bvc2VyKTsKLSsgCi0gICAgdGVtcHZhcl9s aXN0W3R2bGlzdF9pbmRdID0gMDsKLSAgCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC90ZXN0cy92 YXJlbnYucmlnaHQJMjAxOC0xMi0xNyAxNTozOTo0OC4wMDAwMDAwMDAgLTA1MDAKLS0tLSB0ZXN0 cy92YXJlbnYucmlnaHQJMjAxOS0wOC0yMiAxNjowNToyNS4wMDAwMDAwMDAgLTA0MDAKLSoqKioq KioqKioqKioqKgotKioqIDE0NywxNTMgKioqKgotICBvdXRzaWRlOiBkZWNsYXJlIC0tIHZhcj0i b25lIgotICBpbnNpZGU6IGRlY2xhcmUgLXggdmFyPSJ2YWx1ZSIKLSEgb3V0c2lkZTogZGVjbGFy ZSAteCB2YXI9InZhbHVlIgotISBpbnNpZGU6IGRlY2xhcmUgLS0gdmFyPSJsb2NhbCIKLSEgb3V0 c2lkZTogZGVjbGFyZSAteCB2YXI9Imdsb2JhbCIKLSAgZm9vPTx1bnNldD4gZW52aXJvbm1lbnQg Zm9vPQotICBmb289Zm9vIGVudmlyb25tZW50IGZvbz1mb28KLS0tLSAxNDcsMTUzIC0tLS0KLSAg b3V0c2lkZTogZGVjbGFyZSAtLSB2YXI9Im9uZSIKLSAgaW5zaWRlOiBkZWNsYXJlIC14IHZhcj0i dmFsdWUiCi0hIG91dHNpZGU6IGRlY2xhcmUgLS0gdmFyPSJvdXRzaWRlIgotISBpbnNpZGU6IGRl Y2xhcmUgLXggdmFyPSJnbG9iYWwiCi0hIG91dHNpZGU6IGRlY2xhcmUgLS0gdmFyPSJvdXRzaWRl IgotICBmb289PHVuc2V0PiBlbnZpcm9ubWVudCBmb289Ci0gIGZvbz1mb28gZW52aXJvbm1lbnQg Zm9vPWZvbwotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAz LjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAw MDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29r cyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmlu ZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgOQotICAKLSAgI2VuZGlmIC8qIF9QQVRD SExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUg cGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVm aW5lIFBBVENITEVWRUwgMTAKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZm IC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTEgYi9zcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAxMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTlhZTY5MGUwMDQu LjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDExCisrKyAvZGV2 L251bGwKQEAgLTEsNTkgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAg ICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1 MC0wMTEKLQotQnVnLVJlcG9ydGVkLWJ5OglNYXR0IFdoaXRsb2NrCi1CdWctUmVmZXJlbmNlLUlE OgkKLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwczovL3NhdmFubmFoLmdudS5vcmcvc3VwcG9ydC8/ MTA5NjcxCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotVGhlIGNvbmRpdGlvbmFsIGNvbW1hbmQgZGlk IG5vdCBwZXJmb3JtIGFwcHJvcHJpYXRlIHF1b3RlZCBudWxsIGNoYXJhY3RlcgotcmVtb3ZhbCBv biBpdHMgYXJndW1lbnRzLCBjYXVzaW5nIHN5bnRheCBlcnJvcnMgYW5kIGF0dGVtcHRzIHRvIHN0 YXQKLWludmFsaWQgcGF0aG5hbWVzLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6 Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL3N1YnN0LmMJMjAxOC0xMi0yMiAxNzo0MzozNy4w MDAwMDAwMDAgLTA1MDAKLS0tLSBzdWJzdC5jCTIwMTktMDQtMTQgMTM6MjU6NDEuMDAwMDAwMDAw IC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAzNjI2LDM2MzAgKioqKgotICAgICBTUEVDSUFM IGlzIDIsIHRoaXMgaXMgYW4gcmhzIGFyZ3VtZW50IGZvciB0aGUgPX4gb3BlcmF0b3IsIGFuZCBz aG91bGQKLSAgICAgYmUgcXVvdGVkIGFwcHJvcHJpYXRlbHkgZm9yIHJlZ2NvbXAvcmVnZXhlYy4g IFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUKLSEgICAgZm9yIHJlbW92aW5nIHRoZSBiYWNrc2xh c2hlcyBpZiB0aGUgdW5xdW90ZWQgd29yZCBpcyBuZWVkZWQgbGF0ZXIuICovICAgCi0gIGNoYXIg KgotICBjb25kX2V4cGFuZF93b3JkICh3LCBzcGVjaWFsKQotLS0tIDM2NDIsMzY0OCAtLS0tCi0g ICAgIFNQRUNJQUwgaXMgMiwgdGhpcyBpcyBhbiByaHMgYXJndW1lbnQgZm9yIHRoZSA9fiBvcGVy YXRvciwgYW5kIHNob3VsZAotICAgICBiZSBxdW90ZWQgYXBwcm9wcmlhdGVseSBmb3IgcmVnY29t cC9yZWdleGVjLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZQotISAgICBmb3IgcmVtb3Zpbmcg dGhlIGJhY2tzbGFzaGVzIGlmIHRoZSB1bnF1b3RlZCB3b3JkIGlzIG5lZWRlZCBsYXRlci4gSW4K LSEgICAgYW55IGNhc2UsIHNpbmNlIHdlIGRvbid0IHBlcmZvcm0gd29yZCBzcGxpdHRpbmcsIHdl IG5lZWQgdG8gZG8gcXVvdGVkCi0hICAgIG51bGwgY2hhcmFjdGVyIHJlbW92YWwuICovCi0gIGNo YXIgKgotICBjb25kX2V4cGFuZF93b3JkICh3LCBzcGVjaWFsKQotKioqKioqKioqKioqKioqCi0q KiogMzY0NywzNjUwICoqKioKLS0tLSAzNjY1LDM2NzAgLS0tLQotICAgICAgICBpZiAoc3BlY2lh bCA9PSAwKQkJCS8qIExIUyAqLwotICAJewotKyAJICBpZiAobC0+d29yZCkKLSsgCSAgICB3b3Jk X2xpc3RfcmVtb3ZlX3F1b3RlZF9udWxscyAobCk7Ci0gIAkgIGRlcXVvdGVfbGlzdCAobCk7Ci0g IAkgIHIgPSBzdHJpbmdfbGlzdCAobCk7Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIw MTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYt MTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwz MCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBz Y2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxMAotICAK LSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29r cyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmlu ZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMTEKLSAgCi0gICNlbmRpZiAvKiBfUEFU Q0hMRVZFTF9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTIg Yi9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggNzQ3MGU3NjY1NTAuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9i YXNoNTAtMDEyCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotCQkJICAgICBCQVNIIFBB VENIIFJFUE9SVAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUu MAotUGF0Y2gtSUQ6CWJhc2g1MC0wMTIKLQotQnVnLVJlcG9ydGVkLWJ5OglsZXNzYnVnQHFxLmNv bQotQnVnLVJlZmVyZW5jZS1JRDoJPHRlbmNlbnRfNkFBNTMxRDlBNUNDNDEyMUQ4NkJENUNEQTJF MERBOThDNjA1QHFxLmNvbT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOgotCi1CdWctRGVzY3JpcHRpb246 Ci0KLVdoZW4gdXNpbmcgcHJldmlvdXMtaGlzdG9yeSB0byBnbyBiYWNrIGJleW9uZCB0aGUgYmVn aW5uaW5nIG9mIHRoZSBoaXN0b3J5IGxpc3QsCi1pdCdzIHBvc3NpYmxlIHRvIG1vdmUgdG8gYW4g aW5jb3JyZWN0IHBhcnRpYWwgbGluZS4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcp OgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9saWIvcmVhZGxpbmUvbWlzYy5jCTIwMTctMDct MDcgMTc6MzA6MTIuMDAwMDAwMDAwIC0wNDAwCi0tLS0gbGliL3JlYWRsaW5lL21pc2MuYwkyMDE5 LTA1LTE2IDExOjQzOjQ2LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogNTc3 LDU4MCAqKioqCi0tLS0gNTkwLDU5NCAtLS0tCi0gIHsKLSAgICBISVNUX0VOVFJZICpvbGRfdGVt cCwgKnRlbXA7Ci0rICAgaW50IGhhZF9zYXZlZF9saW5lOwotICAKLSAgICBpZiAoY291bnQgPCAw KQotKioqKioqKioqKioqKioqCi0qKiogNTg5LDU5MiAqKioqCi0tLS0gNjAzLDYwNyAtLS0tCi0g IAotICAgIC8qIElmIHdlIGRvbid0IGhhdmUgYSBsaW5lIHNhdmVkLCB0aGVuIHNhdmUgdGhpcyBv bmUuICovCi0rICAgaGFkX3NhdmVkX2xpbmUgPSBfcmxfc2F2ZWRfbGluZV9mb3JfaGlzdG9yeSAh PSAwOwotICAgIHJsX21heWJlX3NhdmVfbGluZSAoKTsKLSAgCi0qKioqKioqKioqKioqKioKLSoq KiA2MTIsNjE2ICoqKioKLSAgICBpZiAodGVtcCA9PSAwKQotICAgICAgewotISAgICAgICBybF9t YXliZV91bnNhdmVfbGluZSAoKTsKLSAgICAgICAgcmxfZGluZyAoKTsKLSAgICAgIH0KLS0tLSA2 MjcsNjMyIC0tLS0KLSAgICBpZiAodGVtcCA9PSAwKQotICAgICAgewotISAgICAgICBpZiAoaGFk X3NhdmVkX2xpbmUgPT0gMCkKLSEgICAgICAgICBfcmxfZnJlZV9zYXZlZF9oaXN0b3J5X2xpbmUg KCk7Ci0gICAgICAgIHJsX2RpbmcgKCk7Ci0gICAgICB9Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hs ZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZl bC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioK LSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAo Zm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZF TCAxMQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQot ICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJz aW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMTIKLSAgCi0gICNlbmRp ZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jh c2g1MC0wMTMgYi9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMwpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggZTQ0ZmRiNTA1M2IuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFz aC9maWxlcy9iYXNoNTAtMDEzCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotCQkJICAg ICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJl bGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMTMKLQotQnVnLVJlcG9ydGVkLWJ5OglISVJP U0UgTWFzYWFraSA8aGlyb3NlMzFAZ21haWwuY29tPgotQnVnLVJlZmVyZW5jZS1JRDoJPENBR1NP ZkEtUnFpVGU9K0dzWHNES3lacnJNV0g0YkRiWGdNVlZlZ01hNk9qcUM1eGJuUUBtYWlsLmdtYWls LmNvbT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9o dG1sL2J1Zy1iYXNoLzIwMTktMDUvbXNnMDAwMzguaHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0K LVJlYWRpbmcgaGlzdG9yeSBlbnRyaWVzIHdpdGggdGltZXN0YW1wcyBjYW4gcmVzdWx0IGluIGhp c3RvcnkgZW50cmllcyBqb2luZWQKLWJ5IGxpbmVmZWVkcy4KLQotUGF0Y2ggKGFwcGx5IHdpdGgg YHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9saWIvcmVhZGxpbmUvaGlz dGZpbGUuYwkyMDE4LTA2LTExIDA5OjE0OjUyLjAwMDAwMDAwMCAtMDQwMAotLS0tIGxpYi9yZWFk bGluZS9oaXN0ZmlsZS5jCTIwMTktMDUtMTYgMTU6NTU6NTcuMDAwMDAwMDAwIC0wNDAwCi0qKioq KioqKioqKioqKioKLSoqKiAzNzAsMzc2ICoqKioKLSAgCi0gICAgaGFzX3RpbWVzdGFtcHMgPSBI SVNUX1RJTUVTVEFNUF9TVEFSVCAoYnVmZmVyKTsKLSEgICBoaXN0b3J5X211bHRpbGluZV9lbnRy aWVzICs9IGhhc190aW1lc3RhbXBzICYmIGhpc3Rvcnlfd3JpdGVfdGltZXN0YW1wczsgIAotICAK LSAgICAvKiBTa2lwIGxpbmVzIHVudGlsIHdlIGFyZSBhdCBGUk9NLiAqLwotICAgIGZvciAobGlu ZV9zdGFydCA9IGxpbmVfZW5kID0gYnVmZmVyOyBsaW5lX2VuZCA8IGJ1ZmVuZCAmJiBjdXJyZW50 X2xpbmUgPCBmcm9tOyBsaW5lX2VuZCsrKQotICAgICAgaWYgKCpsaW5lX2VuZCA9PSAnXG4nKQot LS0tIDM3MCwzNzggLS0tLQotICAKLSAgICBoYXNfdGltZXN0YW1wcyA9IEhJU1RfVElNRVNUQU1Q X1NUQVJUIChidWZmZXIpOwotISAgIGhpc3RvcnlfbXVsdGlsaW5lX2VudHJpZXMgKz0gaGFzX3Rp bWVzdGFtcHMgJiYgaGlzdG9yeV93cml0ZV90aW1lc3RhbXBzOwotICAKLSAgICAvKiBTa2lwIGxp bmVzIHVudGlsIHdlIGFyZSBhdCBGUk9NLiAqLwotKyAgIGlmIChoYXNfdGltZXN0YW1wcykKLSsg ICAgIGxhc3RfdHMgPSBidWZmZXI7Ci0gICAgZm9yIChsaW5lX3N0YXJ0ID0gbGluZV9lbmQgPSBi dWZmZXI7IGxpbmVfZW5kIDwgYnVmZW5kICYmIGN1cnJlbnRfbGluZSA8IGZyb207IGxpbmVfZW5k KyspCi0gICAgICBpZiAoKmxpbmVfZW5kID09ICdcbicpCi0qKioqKioqKioqKioqKioKLSoqKiAz ODEsMzg1ICoqKioKLS0tLSAzODMsMzk4IC0tLS0KLSAgCWlmIChISVNUX1RJTUVTVEFNUF9TVEFS VChwKSA9PSAwKQotICAJICBjdXJyZW50X2xpbmUrKzsKLSsgCWVsc2UKLSsgCSAgbGFzdF90cyA9 IHA7Ci0gIAlsaW5lX3N0YXJ0ID0gcDsKLSsgCS8qIElmIHdlIGFyZSBhdCB0aGUgbGFzdCBsaW5l IChjdXJyZW50X2xpbmUgPT0gZnJvbSkgYnV0IHdlIGhhdmUKLSsgCSAgIHRpbWVzdGFtcHMgKGhh c190aW1lc3RhbXBzKSwgdGhlbiBsaW5lX3N0YXJ0IHBvaW50cyB0byB0aGUKLSsgCSAgIHRleHQg b2YgdGhlIGxhc3QgY29tbWFuZCwgYW5kIHdlIG5lZWQgdG8gc2tpcCB0byBpdHMgZW5kLiAqLwot KyAJaWYgKGN1cnJlbnRfbGluZSA+PSBmcm9tICYmIGhhc190aW1lc3RhbXBzKQotKyAJICB7Ci0r IAkgICAgZm9yIChsaW5lX2VuZCA9IHA7IGxpbmVfZW5kIDwgYnVmZW5kICYmICpsaW5lX2VuZCAh PSAnXG4nOyBsaW5lX2VuZCsrKQotKyAJICAgICAgOwotKyAJICAgIGxpbmVfc3RhcnQgPSAoKmxp bmVfZW5kID09ICdcbicpID8gbGluZV9lbmQgKyAxIDogbGluZV9lbmQ7Ci0rIAkgIH0KLSAgICAg ICAgfQotICAKLQotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUx OjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4 LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBs b29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0 cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMTIKLSAgCi0gICNlbmRpZiAvKiBf UEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQg dGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEg I2RlZmluZSBQQVRDSExFVkVMIDEzCi0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8K ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE0IGIvc3JjcGtncy9iYXNo L2ZpbGVzL2Jhc2g1MC0wMTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYjQ5YWFl NzI1Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNAorKysg L2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJ CSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgli YXNoNTAtMDE0Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJSm9oYW5uZXMgSGllbHNjaGVyIDxqaGllbHNj aGVyQHBvc3Rlby5kZT4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTwyMDE5MDIwODIwNTA0OC43N2MyNWE4 M0Bob3JkZXZtPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNo aXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wMi9tc2cwMDAzMi5odG1sCi0KLUJ1Zy1EZXNjcmlwdGlv bjoKLQotSWYgdGhlIGN1cnJlbnQgbGluZSBpcyBlbXB0eSwgdXNpbmcgdGhlIGVtYWNzIEMteEMt ZSBiaW5kaW5nIHRvIGVudGVyIHRoZQotZWRpdG9yIHdpbGwgZWRpdCB0aGUgcHJldmlvdXMgY29t bWFuZCBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IChlbXB0eSkgb25lLgotCi1QYXRjaCAoYXBwbHkg d2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2Jhc2hsaW5lLmMJ MjAxOS0wMS0xNiAxNjoxMzoyMS4wMDAwMDAwMDAgLTA1MDAKLS0tLSBiYXNobGluZS5jCTIwMTkt MDItMTEgMTE6MTg6NTcuMDAwMDAwMDAwIC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiA5NjIs OTcwICoqKioKLSAgCSBmaW5pc2hlZCB3aXRoIHRoZSBjb21tYW5kLCBzbyB3ZSBzaG91bGQgbm90 IGlnbm9yZSB0aGUgbGFzdCBjb21tYW5kICovCi0gICAgICAgIHVzaW5nX2hpc3RvcnkgKCk7Ci0h ICAgICAgIGlmIChybF9saW5lX2J1ZmZlclswXSkKLSEgCXsKLSEgCSAgY3VycmVudF9jb21tYW5k X2xpbmVfY291bnQrKzsJLyogZm9yIHJsX25ld2xpbmUgYWJvdmUgKi8KLSEgCSAgYmFzaF9hZGRf aGlzdG9yeSAocmxfbGluZV9idWZmZXIpOwotISAJfQotICAgICAgICBjdXJyZW50X2NvbW1hbmRf bGluZV9jb3VudCA9IDA7CS8qIGZvciBkdW1teSBoaXN0b3J5IGVudHJ5ICovCi0gICAgICAgIGJh c2hfYWRkX2hpc3RvcnkgKCIiKTsKLS0tLSA5NjUsOTcwIC0tLS0KLSAgCSBmaW5pc2hlZCB3aXRo IHRoZSBjb21tYW5kLCBzbyB3ZSBzaG91bGQgbm90IGlnbm9yZSB0aGUgbGFzdCBjb21tYW5kICov Ci0gICAgICAgIHVzaW5nX2hpc3RvcnkgKCk7Ci0hICAgICAgIGN1cnJlbnRfY29tbWFuZF9saW5l X2NvdW50Kys7CS8qIGZvciBybF9uZXdsaW5lIGFib3ZlICovCi0hICAgICAgIGJhc2hfYWRkX2hp c3RvcnkgKHJsX2xpbmVfYnVmZmVyKTsKLSAgICAgICAgY3VycmVudF9jb21tYW5kX2xpbmVfY291 bnQgPSAwOwkvKiBmb3IgZHVtbXkgaGlzdG9yeSBlbnRyeSAqLwotICAgICAgICBiYXNoX2FkZF9o aXN0b3J5ICgiIik7Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6 NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6 MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAg IGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24g c3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxMwotICAKLSAgI2VuZGlmIC8q IF9QQVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmlu ZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAot ISAjZGVmaW5lIFBBVENITEVWRUwgMTQKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAq LwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTUgYi9zcmNwa2dzL2Jh c2gvZmlsZXMvYmFzaDUwLTAxNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY2ZTVl NjlkNmUuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE1Cisr KyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAot CQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6 CWJhc2g1MC0wMTUKLQotQnVnLVJlcG9ydGVkLWJ5OglZdSBLb3UgPGNreW9vZ0BnbWFpbC5jb20+ Ci1CdWctUmVmZXJlbmNlLUlEOgk8Q0FBcW9GOUtvM25BU2hKWEd6dWNhZnMtQnlVYWd6WjRuYlFv bndFa3dDN3M5VXFmV0t3QG1haWwuZ21haWwuY29tPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHBz Oi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wNS9tc2cwMDAzMi5o dG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotSWYgYWxpYXMgZXhwYW5zaW9uIGlzIGVuYWJsZWQg d2hlbiBwcm9jZXNzaW5nIHRoZSBjb21tYW5kIGFyZ3VtZW50IHRvIHRoZQotYC1jJyBvcHRpb24s IGFuIGFsaWFzIGlzIGRlZmluZWQgaW4gdGhhdCBjb21tYW5kLCBhbmQgdGhlIGNvbW1hbmQgZW5k cyB3aXRoCi10aGUgaW52b2NhdGlvbiBvZiB0aGF0IGFsaWFzLCB0aGUgc2hlbGwncyBjb21tYW5k IHBhcnNlciBjYW4gcHJlbWF0dXJlbHkKLXRlcm1pbmF0ZSBiZWZvcmUgdGhlIGVudGlyZSBjb21t YW5kIGlzIGV4ZWN1dGVkLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoq KiAuLi9iYXNoLTIwMTkwNDI2L2J1aWx0aW5zL2V2YWxzdHJpbmcuYwkyMDE5LTAxLTI5IDE0OjE1 OjE5LjAwMDAwMDAwMCAtMDUwMAotLS0tIGJ1aWx0aW5zL2V2YWxzdHJpbmcuYwkyMDE5LTA1LTE1 IDE0OjE5OjM2LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogOTIsOTUgKioq KgotLS0tIDkyLDk2IC0tLS0KLSAgCSAgcnVubmluZ190cmFwID09IDAgJiYKLSAgCSAgKmJhc2hf aW5wdXQubG9jYXRpb24uc3RyaW5nID09ICdcMCcgJiYKLSsgCSAgcGFyc2VyX2V4cGFuZGluZ19h bGlhcyAoKSA9PSAwICYmCi0gIAkgIGNvbW1hbmQtPnR5cGUgPT0gY21fc2ltcGxlICYmCi0gIAkg IHNpZ25hbF9pc190cmFwcGVkIChFWElUX1RSQVApID09IDAgJiYKLSoqKioqKioqKioqKioqKgot KioqIDEwNiwxMDkgKioqKgotLS0tIDEwNywxMTEgLS0tLQotICB7Ci0gICAgcmV0dXJuICgqYmFz aF9pbnB1dC5sb2NhdGlvbi5zdHJpbmcgPT0gJ1wwJyAmJgotKyAJICBwYXJzZXJfZXhwYW5kaW5n X2FsaWFzICgpID09IDAgJiYKLSAgCSAgKGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5l Y3RvciA9PSBBTkRfQU5EIHx8IGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9 PSBPUl9PUiB8fCBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25uZWN0b3IgPT0gJzsnKSAm JgotICAJICBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5zZWNvbmQtPnR5cGUgPT0gY21fc2lt cGxlKTsKLSoqKioqKioqKioqKioqKgotKioqIDI5MSwyOTUgKioqKgotICAgIHdpdGhfaW5wdXRf ZnJvbV9zdHJpbmcgKHN0cmluZywgZnJvbV9maWxlKTsKLSAgICBjbGVhcl9zaGVsbF9pbnB1dF9s aW5lICgpOwotISAgIHdoaWxlICgqKGJhc2hfaW5wdXQubG9jYXRpb24uc3RyaW5nKSkKLSAgICAg IHsKLSAgICAgICAgY29tbWFuZCA9IChDT01NQU5EICopTlVMTDsKLS0tLSAyOTMsMjk3IC0tLS0K LSAgICB3aXRoX2lucHV0X2Zyb21fc3RyaW5nIChzdHJpbmcsIGZyb21fZmlsZSk7Ci0gICAgY2xl YXJfc2hlbGxfaW5wdXRfbGluZSAoKTsKLSEgICB3aGlsZSAoKihiYXNoX2lucHV0LmxvY2F0aW9u LnN0cmluZykgfHwgcGFyc2VyX2V4cGFuZGluZ19hbGlhcyAoKSkKLSAgICAgIHsKLSAgICAgICAg Y29tbWFuZCA9IChDT01NQU5EICopTlVMTDsKLSoqKioqKioqKioqKioqKgotKioqIDU0Niw1NTAg KioqKgotICAKLSAgICB3aXRoX2lucHV0X2Zyb21fc3RyaW5nIChzdHJpbmcsIGZyb21fZmlsZSk7 Ci0hICAgd2hpbGUgKCooYmFzaF9pbnB1dC5sb2NhdGlvbi5zdHJpbmcpKQotICAgICAgewotICAg ICAgICBjb21tYW5kID0gKENPTU1BTkQgKilOVUxMOwotLS0tIDU0OCw1NTIgLS0tLQotICAKLSAg ICB3aXRoX2lucHV0X2Zyb21fc3RyaW5nIChzdHJpbmcsIGZyb21fZmlsZSk7Ci0hICAgd2hpbGUg KCooYmFzaF9pbnB1dC5sb2NhdGlvbi5zdHJpbmcpKQkJLyogWFhYIC0gcGFyc2VyX2V4cGFuZGlu Z19hbGlhcyAoKSA/ICovCi0gICAgICB7Ci0gICAgICAgIGNvbW1hbmQgPSAoQ09NTUFORCAqKU5V TEw7Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAw MDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAw MDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZv ciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4g Ki8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxNAotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExF VkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0 Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5l IFBBVENITEVWRUwgMTUKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZmIC0t Z2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTYgYi9zcmNwa2dzL2Jhc2gvZmlsZXMv YmFzaDUwLTAxNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdmMjMyZDdhZDQuLjAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE2CisrKyAvZGV2L251 bGwKQEAgLTEsNTggKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9 PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0w MTYKLQotQnVnLVJlcG9ydGVkLWJ5OglzdW5ueWNlbWV0ZXJ5QGdtYWlsLmNvbQotQnVnLVJlZmVy ZW5jZS1JRDoJPDIwMTkwMzE2MDQxNTM0LkdCMjI4ODRAbWlkbmlnaHQ+Ci1CdWctUmVmZXJlbmNl LVVSTDoJaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5LTAz L21zZzAwMDcwLmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1CYXNoIHdhaXRzIHRvbyBsb25n IHRvIHJlYXAgL2Rldi9mZCBwcm9jZXNzIHN1YnN0aXR1dGlvbnMgdXNlZCBhcyByZWRpcmVjdGlv bnMKLXdpdGggbG9vcHMgYW5kIGdyb3VwIGNvbW1hbmRzLCB3aGljaCBjYW4gbGVhZCB0byBmaWxl IGRlc2NyaXB0b3IgZXhoYXVzdGlvbi4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcp OgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9leGVjdXRlX2NtZC5jCTIwMTktMDQtMTkgMTU6 NDY6MzYuMDAwMDAwMDAwIC0wNDAwCi0tLS0gZXhlY3V0ZV9jbWQuYwkyMDE5LTA3LTAxIDE2OjQ1 OjQ5LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMTEwNCwxMTA3ICoqKioK LS0tLSAxMDg1LDExMDQgLS0tLQotICAgICAgICBkaXNjYXJkX3Vud2luZF9mcmFtZSAoImludGVy bmFsX2ZpZm9zIik7Ci0gICAgICB9Ci0rICMgaWYgZGVmaW5lZCAoSEFWRV9ERVZfRkQpCi0rICAg LyogUmVhcCBwcm9jZXNzIHN1YnN0aXR1dGlvbnMgYXQgdGhlIGVuZCBvZiBsb29wcyAqLwotKyAg IHN3aXRjaCAoY29tbWFuZC0+dHlwZSkKLSsgICAgIHsKLSsgICAgIGNhc2UgY21fd2hpbGU6Ci0r ICAgICBjYXNlIGNtX3VudGlsOgotKyAgICAgY2FzZSBjbV9mb3I6Ci0rICAgICBjYXNlIGNtX2dy b3VwOgotKyAjICAgIGlmIGRlZmluZWQgKEFSSVRIX0ZPUl9DT01NQU5EKQotKyAgICAgY2FzZSBj bV9hcml0aF9mb3I6Ci0rICMgICAgZW5kaWYKLSsgICAgICAgcmVhcF9wcm9jc3VicyAoKTsKLSsg ICAgIGRlZmF1bHQ6Ci0rICAgICAgIGJyZWFrOwotKyAgICAgfQotKyAjICBlbmRpZiAvKiBIQVZF X0RFVl9GRCAqLwotICAjZW5kaWYKLSAgCi0KLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJ MjAxNi0wNi0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAx Ni0xMC0wMSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2 LDMwICoqKioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhl IHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDE1Ci0g IAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxv b2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3Ry aW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxNgotICAKLSAgI2VuZGlmIC8qIF9Q QVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAx NyBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBhZGZjYjZhODYwNi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVz L2Jhc2g1MC0wMTcKKysrIC9kZXYvbnVsbApAQCAtMSwyODkgKzAsMCBAQAotCQkJICAgICBCQVNI IFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6 CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMTcKLQotQnVnLVJlcG9ydGVkLWJ5OglWYWxlbnRpbiBM YWIgPHZhbGVudGluLmxhYkBrYWx5c3RvLm9yZz4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTxhYjk4MWI5 Yy02MGE1LTQ2ZDAtYjdlNi1hNmQ4OGI4MGRmNTBAa2FseXN0by5vcmc+Ci1CdWctUmVmZXJlbmNl LVVSTDoJaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDIwLTAz L21zZzAwMDYyLmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1UaGVyZSB3ZXJlIGNhc2VzIHdo ZXJlIHBhdGNoIDE2IHJlYXBlZCBwcm9jZXNzIHN1YnN0aXR1dGlvbiBmaWxlIGRlc2NyaXB0b3Jz Ci0ob3IgRklGT3MpIGFuZCBwcm9jZXNzZXMgdG8gZWFybHkuIFRoaXMgaXMgYSBiZXR0ZXIgZml4 IGZvciB0aGUgcHJvYmxlbSB0aGF0Ci1iYXNoNTAtMDE2IGF0dGVtcHRlZCB0byBzb2x2ZS4KLQot UGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hl ZC9zdWJzdC5jCTIwMTktMDgtMjkgMTE6MTY6NDkuMDAwMDAwMDAwIC0wNDAwCi0tLS0gc3Vic3Qu YwkyMDIwLTA0LTAyIDE2OjI0OjE5LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0q KiogNTMzNyw1MzQxICoqKioKLSAgfQotICAKLSEgY2hhciAqCi0gIGNvcHlfZmlmb19saXN0IChz aXplcCkKLSAgICAgICBpbnQgKnNpemVwOwotLS0tIDUzMzcsNTM0MSAtLS0tCi0gIH0KLSAgCi0h IHZvaWQgKgotICBjb3B5X2ZpZm9fbGlzdCAoc2l6ZXApCi0gICAgICAgaW50ICpzaXplcDsKLSoq KioqKioqKioqKioqKgotKioqIDUzNDMsNTM0NyAqKioqCi0gICAgaWYgKHNpemVwKQotICAgICAg KnNpemVwID0gMDsKLSEgICByZXR1cm4gKGNoYXIgKilOVUxMOwotICB9Ci0gIAotLS0tIDUzNDMs NTM0NyAtLS0tCi0gICAgaWYgKHNpemVwKQotICAgICAgKnNpemVwID0gMDsKLSEgICByZXR1cm4g KHZvaWQgKilOVUxMOwotICB9Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogNTQwOSw1NDE0ICoq KioKLSAgCWlmIChmaWZvX2xpc3RbaV0uZmlsZSkKLSAgCSAgewotISAJICAgIGZpZm9fbGlzdFtq XS5maWxlID0gZmlmb19saXN0W2ldLmZpbGU7Ci0hIAkgICAgZmlmb19saXN0W2pdLnByb2MgPSBm aWZvX2xpc3RbaV0ucHJvYzsKLSAgCSAgICBqKys7Ci0gIAkgIH0KLS0tLSA1NDA5LDU0MTkgLS0t LQotICAJaWYgKGZpZm9fbGlzdFtpXS5maWxlKQotICAJICB7Ci0hIAkgICAgaWYgKGkgIT0gaikK LSEgCSAgICAgIHsKLSEgCQlmaWZvX2xpc3Rbal0uZmlsZSA9IGZpZm9fbGlzdFtpXS5maWxlOwot ISAJCWZpZm9fbGlzdFtqXS5wcm9jID0gZmlmb19saXN0W2ldLnByb2M7Ci0hIAkJZmlmb19saXN0 W2ldLmZpbGUgPSAoY2hhciAqKU5VTEw7Ci0hIAkJZmlmb19saXN0W2ldLnByb2MgPSAwOwotISAJ ICAgICAgfQotICAJICAgIGorKzsKLSAgCSAgfQotKioqKioqKioqKioqKioqCi0qKiogNTQyNiw1 NDMzICoqKioKLSAgdm9pZAotICBjbG9zZV9uZXdfZmlmb3MgKGxpc3QsIGxzaXplKQotISAgICAg IGNoYXIgKmxpc3Q7Ci0gICAgICAgaW50IGxzaXplOwotICB7Ci0gICAgaW50IGk7Ci0gIAotICAg IGlmIChsaXN0ID09IDApCi0tLS0gNTQzMSw1NDM5IC0tLS0KLSAgdm9pZAotICBjbG9zZV9uZXdf Zmlmb3MgKGxpc3QsIGxzaXplKQotISAgICAgIHZvaWQgKmxpc3Q7Ci0gICAgICAgaW50IGxzaXpl OwotICB7Ci0gICAgaW50IGk7Ci0rICAgY2hhciAqcGxpc3Q7Ci0gIAotICAgIGlmIChsaXN0ID09 IDApCi0qKioqKioqKioqKioqKioKLSoqKiA1NDM3LDU0NDIgKioqKgotICAgICAgfQotICAKLSEg ICBmb3IgKGkgPSAwOyBpIDwgbHNpemU7IGkrKykKLSEgICAgIGlmIChsaXN0W2ldID09IDAgJiYg aSA8IGZpZm9fbGlzdF9zaXplICYmIGZpZm9fbGlzdFtpXS5wcm9jICE9IC0xKQotICAgICAgICB1 bmxpbmtfZmlmbyAoaSk7Ci0gIAotLS0tIDU0NDMsNTQ0OCAtLS0tCi0gICAgICB9Ci0gIAotISAg IGZvciAocGxpc3QgPSAoY2hhciAqKWxpc3QsIGkgPSAwOyBpIDwgbHNpemU7IGkrKykKLSEgICAg IGlmIChwbGlzdFtpXSA9PSAwICYmIGkgPCBmaWZvX2xpc3Rfc2l6ZSAmJiBmaWZvX2xpc3RbaV0u cHJvYyAhPSAtMSkKLSAgICAgICAgdW5saW5rX2ZpZm8gKGkpOwotICAKLSoqKioqKioqKioqKioq KgotKioqIDU1NjAsNTU2OCAqKioqCi0gIH0KLSAgCi0hIGNoYXIgKgotICBjb3B5X2ZpZm9fbGlz dCAoc2l6ZXApCi0gICAgICAgaW50ICpzaXplcDsKLSAgewotISAgIGNoYXIgKnJldDsKLSAgCi0g ICAgaWYgKG5mZHMgPT0gMCB8fCB0b3RmZHMgPT0gMCkKLS0tLSA1NTY2LDU1NzQgLS0tLQotICB9 Ci0gIAotISB2b2lkICoKLSAgY29weV9maWZvX2xpc3QgKHNpemVwKQotICAgICAgIGludCAqc2l6 ZXA7Ci0gIHsKLSEgICB2b2lkICpyZXQ7Ci0gIAotICAgIGlmIChuZmRzID09IDAgfHwgdG90ZmRz ID09IDApCi0qKioqKioqKioqKioqKioKLSoqKiA1NTcwLDU1NzkgKioqKgotICAgICAgICBpZiAo c2l6ZXApCi0gIAkqc2l6ZXAgPSAwOwotISAgICAgICByZXR1cm4gKGNoYXIgKilOVUxMOwotICAg ICAgfQotICAKLSAgICBpZiAoc2l6ZXApCi0gICAgICAqc2l6ZXAgPSB0b3RmZHM7Ci0hICAgcmV0 ID0gKGNoYXIgKil4bWFsbG9jICh0b3RmZHMgKiBzaXplb2YgKHBpZF90KSk7Ci0gICAgcmV0dXJu IChtZW1jcHkgKHJldCwgZGV2X2ZkX2xpc3QsIHRvdGZkcyAqIHNpemVvZiAocGlkX3QpKSk7Ci0g IH0KLS0tLSA1NTc2LDU1ODUgLS0tLQotICAgICAgICBpZiAoc2l6ZXApCi0gIAkqc2l6ZXAgPSAw OwotISAgICAgICByZXR1cm4gKHZvaWQgKilOVUxMOwotICAgICAgfQotICAKLSAgICBpZiAoc2l6 ZXApCi0gICAgICAqc2l6ZXAgPSB0b3RmZHM7Ci0hICAgcmV0ID0geG1hbGxvYyAodG90ZmRzICog c2l6ZW9mIChwaWRfdCkpOwotICAgIHJldHVybiAobWVtY3B5IChyZXQsIGRldl9mZF9saXN0LCB0 b3RmZHMgKiBzaXplb2YgKHBpZF90KSkpOwotICB9Ci0qKioqKioqKioqKioqKioKLSoqKiA1NjQ4 LDU2NTUgKioqKgotICB2b2lkCi0gIGNsb3NlX25ld19maWZvcyAobGlzdCwgbHNpemUpCi0hICAg ICAgY2hhciAqbGlzdDsKLSAgICAgICBpbnQgbHNpemU7Ci0gIHsKLSAgICBpbnQgaTsKLSAgCi0g ICAgaWYgKGxpc3QgPT0gMCkKLS0tLSA1NjU0LDU2NjIgLS0tLQotICB2b2lkCi0gIGNsb3NlX25l d19maWZvcyAobGlzdCwgbHNpemUpCi0hICAgICAgdm9pZCAqbGlzdDsKLSAgICAgICBpbnQgbHNp emU7Ci0gIHsKLSAgICBpbnQgaTsKLSsgICBwaWRfdCAqcGxpc3Q7Ci0gIAotICAgIGlmIChsaXN0 ID09IDApCi0qKioqKioqKioqKioqKioKLSoqKiA1NjU5LDU2NjQgKioqKgotICAgICAgfQotICAK LSEgICBmb3IgKGkgPSAwOyBpIDwgbHNpemU7IGkrKykKLSEgICAgIGlmIChsaXN0W2ldID09IDAg JiYgaSA8IHRvdGZkcyAmJiBkZXZfZmRfbGlzdFtpXSkKLSAgICAgICAgdW5saW5rX2ZpZm8gKGkp OwotICAKLS0tLSA1NjY2LDU2NzEgLS0tLQotICAgICAgfQotICAKLSEgICBmb3IgKHBsaXN0ID0g KHBpZF90ICopbGlzdCwgaSA9IDA7IGkgPCBsc2l6ZTsgaSsrKQotISAgICAgaWYgKHBsaXN0W2ld ID09IDAgJiYgaSA8IHRvdGZkcyAmJiBkZXZfZmRfbGlzdFtpXSkKLSAgICAgICAgdW5saW5rX2Zp Zm8gKGkpOwotICAKLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL3N1YnN0LmgJMjAxOC0xMC0yMSAx ODo0NjowOS4wMDAwMDAwMDAgLTA0MDAKLS0tLSBzdWJzdC5oCTIwMjAtMDQtMDIgMTY6Mjk6Mjgu MDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNzQsMjgwICoqKioKLSAgZXh0 ZXJuIHZvaWQgdW5saW5rX2ZpZm8gX19QKChpbnQpKTsKLSAgCi0hIGV4dGVybiBjaGFyICpjb3B5 X2ZpZm9fbGlzdCBfX1AoKGludCAqKSk7Ci0hIGV4dGVybiB2b2lkIHVubGlua19uZXdfZmlmb3Mg X19QKChjaGFyICosIGludCkpOwotISBleHRlcm4gdm9pZCBjbG9zZV9uZXdfZmlmb3MgX19QKChj aGFyICosIGludCkpOwotICAKLSAgZXh0ZXJuIHZvaWQgY2xlYXJfZmlmb19saXN0IF9fUCgodm9p ZCkpOwotLS0tIDI3NCwyNzkgLS0tLQotICBleHRlcm4gdm9pZCB1bmxpbmtfZmlmbyBfX1AoKGlu dCkpOwotICAKLSEgZXh0ZXJuIHZvaWQgKmNvcHlfZmlmb19saXN0IF9fUCgoaW50ICopKTsKLSEg ZXh0ZXJuIHZvaWQgY2xvc2VfbmV3X2ZpZm9zIF9fUCgodm9pZCAqLCBpbnQpKTsKLSAgCi0gIGV4 dGVybiB2b2lkIGNsZWFyX2ZpZm9fbGlzdCBfX1AoKHZvaWQpKTsKLSoqKiAuLi9iYXNoLTUuMC1w YXRjaGVkL2V4ZWN1dGVfY21kLmMJMjAyMC0wMi0wNiAyMDoxNjo0OC4wMDAwMDAwMDAgLTA1MDAK LS0tLSBleGVjdXRlX2NtZC5jCTIwMjAtMDQtMDIgMTc6MDA6MTAuMDAwMDAwMDAwIC0wNDAwCi0q KioqKioqKioqKioqKioKLSoqKiA1NjUsNTY5ICoqKioKLSAgI2lmIGRlZmluZWQgKFBST0NFU1Nf U1VCU1RJVFVUSU9OKQotICAgIHZvbGF0aWxlIGludCBvZmlmbywgbmZpZm8sIG9zaXplLCBzYXZl ZF9maWZvOwotISAgIHZvbGF0aWxlIGNoYXIgKm9maWZvX2xpc3Q7Ci0gICNlbmRpZgotICAKLS0t LSA1NjUsNTY5IC0tLS0KLSAgI2lmIGRlZmluZWQgKFBST0NFU1NfU1VCU1RJVFVUSU9OKQotICAg IHZvbGF0aWxlIGludCBvZmlmbywgbmZpZm8sIG9zaXplLCBzYXZlZF9maWZvOwotISAgIHZvbGF0 aWxlIHZvaWQgKm9maWZvX2xpc3Q7Ci0gICNlbmRpZgotICAKLSoqKioqKioqKioqKioqKgotKioq IDc1MSw3NjAgKioqKgotICAjICBlbmRpZgotICAKLSEgICBpZiAodmFyaWFibGVfY29udGV4dCAh PSAwKQkvKiBYWFggLSBhbHNvIGlmIHNvdXJjZWxldmVsICE9IDA/ICovCi0gICAgICB7Ci0gICAg ICAgIG9maWZvID0gbnVtX2ZpZm9zICgpOwotICAgICAgICBvZmlmb19saXN0ID0gY29weV9maWZv X2xpc3QgKChpbnQgKikmb3NpemUpOwotICAgICAgICBiZWdpbl91bndpbmRfZnJhbWUgKCJpbnRl cm5hbF9maWZvcyIpOwotISAgICAgICBhZGRfdW53aW5kX3Byb3RlY3QgKHhmcmVlLCBvZmlmb19s aXN0KTsKLSAgICAgICAgc2F2ZWRfZmlmbyA9IDE7Ci0gICAgICB9Ci0tLS0gNzUxLDc2MiAtLS0t Ci0gICMgIGVuZGlmCi0gIAotISAgIC8qIFhYWCAtIGFsc28gaWYgc291cmNlbGV2ZWwgIT0gMD8g Ki8KLSEgICBpZiAodmFyaWFibGVfY29udGV4dCAhPSAwKQotICAgICAgewotICAgICAgICBvZmlm byA9IG51bV9maWZvcyAoKTsKLSAgICAgICAgb2ZpZm9fbGlzdCA9IGNvcHlfZmlmb19saXN0ICgo aW50ICopJm9zaXplKTsKLSAgICAgICAgYmVnaW5fdW53aW5kX2ZyYW1lICgiaW50ZXJuYWxfZmlm b3MiKTsKLSEgICAgICAgaWYgKG9maWZvX2xpc3QpCi0hIAlhZGRfdW53aW5kX3Byb3RlY3QgKHhm cmVlLCBvZmlmb19saXN0KTsKLSAgICAgICAgc2F2ZWRfZmlmbyA9IDE7Ci0gICAgICB9Ci0qKioq KioqKioqKioqKioKLSoqKiAxMTAwLDExMjMgKioqKgotICAgICAgICBuZmlmbyA9IG51bV9maWZv cyAoKTsKLSAgICAgICAgaWYgKG5maWZvID4gb2ZpZm8pCi0hIAljbG9zZV9uZXdfZmlmb3MgKChj aGFyICopb2ZpZm9fbGlzdCwgb3NpemUpOwotICAgICAgICBmcmVlICgodm9pZCAqKW9maWZvX2xp c3QpOwotICAgICAgICBkaXNjYXJkX3Vud2luZF9mcmFtZSAoImludGVybmFsX2ZpZm9zIik7Ci0g ICAgICB9Ci0tICMgaWYgZGVmaW5lZCAoSEFWRV9ERVZfRkQpCi0tICAgLyogUmVhcCBwcm9jZXNz IHN1YnN0aXR1dGlvbnMgYXQgdGhlIGVuZCBvZiBsb29wcyAqLwotLSAgIHN3aXRjaCAoY29tbWFu ZC0+dHlwZSkKLS0gICAgIHsKLS0gICAgIGNhc2UgY21fd2hpbGU6Ci0tICAgICBjYXNlIGNtX3Vu dGlsOgotLSAgICAgY2FzZSBjbV9mb3I6Ci0tICAgICBjYXNlIGNtX2dyb3VwOgotLSAjICAgIGlm IGRlZmluZWQgKEFSSVRIX0ZPUl9DT01NQU5EKQotLSAgICAgY2FzZSBjbV9hcml0aF9mb3I6Ci0t ICMgICAgZW5kaWYKLS0gICAgICAgcmVhcF9wcm9jc3VicyAoKTsKLS0gICAgIGRlZmF1bHQ6Ci0t ICAgICAgIGJyZWFrOwotLSAgICAgfQotLSAjICBlbmRpZiAvKiBIQVZFX0RFVl9GRCAqLwotICAj ZW5kaWYKLSAgCi0tLS0gMTEwMiwxMTA5IC0tLS0KLSAgICAgICAgbmZpZm8gPSBudW1fZmlmb3Mg KCk7Ci0gICAgICAgIGlmIChuZmlmbyA+IG9maWZvKQotISAJY2xvc2VfbmV3X2ZpZm9zICgodm9p ZCAqKW9maWZvX2xpc3QsIG9zaXplKTsKLSAgICAgICAgZnJlZSAoKHZvaWQgKilvZmlmb19saXN0 KTsKLSAgICAgICAgZGlzY2FyZF91bndpbmRfZnJhbWUgKCJpbnRlcm5hbF9maWZvcyIpOwotICAg ICAgfQotICAjZW5kaWYKLSAgCi0KLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0w Ni0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0w MSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoq KioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3Mg dmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDE2Ci0gIAotICAj ZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZv ciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4g Ki8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxNwotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExF VkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvdXBkYXRlLWJhc2gtcGF0 Y2hlcy5zaCBiL3NyY3BrZ3MvYmFzaC9maWxlcy91cGRhdGUtYmFzaC1wYXRjaGVzLnNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2M2M1ZTIwYzIzMy4uMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9iYXNoL2ZpbGVzL3VwZGF0ZS1iYXNoLXBhdGNoZXMuc2gKKysrIC9kZXYvbnVsbApA QCAtMSw3ICswLDAgQEAKLSMhL2Jpbi9iYXNoCi1zb3VyY2UgLi4vdGVtcGxhdGUKLQotZm9yIGkg aW4gJChzZXEgLXcgMDAxICR7X2Jhc2hfcGF0Y2hsZXZlbH0pOyBkbwotCWN1cmwgaHR0cHM6Ly9m dHAuZ251Lm9yZy9nbnUvYmFzaC9iYXNoLSRfYmFzaF9kaXN0dmVyLXBhdGNoZXMvYmFzaCR7X2Jh c2hfZGlzdHZlci8vLi99LSRpIFwKLQkJPiBiYXNoJHtfYmFzaF9kaXN0dmVyLy8uL30tJHtfYmFz aF9wYXRjaGxldmVsfQotZG9uZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL3RlbXBsYXRlIGIv c3JjcGtncy9iYXNoL3RlbXBsYXRlCmluZGV4IDkxZTJlNGMxY2EzLi5hYzBjOWQ0NDA5ZCAxMDA2 NDQKLS0tIGEvc3JjcGtncy9iYXNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmFzaC90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDkgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Jhc2gnCiBwa2duYW1lPWJh c2gKLV9iYXNoX2Rpc3R2ZXI9NS4wCi1fYmFzaF9wYXRjaGxldmVsPTAxNworX21ham9yPTUKK19t aW5vcj0wCitfYmFzaF9kaXN0dmVyPSIke19tYWpvcn0uJHtfbWlub3J9IgorX2Jhc2hfcGF0Y2hs ZXZlbD0wMTgKIHZlcnNpb249IiR7X2Jhc2hfZGlzdHZlcn0uJHtfYmFzaF9wYXRjaGxldmVsfSIK IHJldmlzaW9uPTEKIHdya3NyYz0iJHtwa2duYW1lfS0ke19iYXNoX2Rpc3R2ZXJ9IgpAQCAtMTUs OSArMTcsMzYgQEAgbWFpbnRhaW5lcj0iRW5ubyBCb2xhbmQgPGdvdHRveEB2b2lkbGludXgub3Jn PiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cuZ251 Lm9yZy9zb2Z0d2FyZS9iYXNoL2Jhc2guaHRtbCIKIGRpc3RmaWxlcz0iJHtHTlVfU0lURX0vJHtw a2duYW1lfS8ke3BrZ25hbWV9LSR7X2Jhc2hfZGlzdHZlcn0udGFyLmd6IgotbWFrZV9kaXJzPSIv ZXRjL2Jhc2gvYmFzaHJjLmQgNzU1IHJvb3Qgcm9vdCIKLWNoZWNrc3VtPWI0YTgwZjJhYzY2MTcw YjI5MTNlZmJmYjlmMjU5NGYxZjc2YzdiMWFmZDExZjc5OWUyMjAzNWQ2MzA3N2ZiNGQKIAorX3Vy bD0iJHtHTlVfU0lURX0vYmFzaC9iYXNoLSR7X2Jhc2hfZGlzdHZlcn0tcGF0Y2hlcyIKK2ZvciBf cCBpbiAkKHNlcSAtdyAwMDEgJHtfYmFzaF9wYXRjaGxldmVsfSk7IGRvCisJZGlzdGZpbGVzKz0i ICR7X3VybH0vYmFzaCR7X21ham9yfSR7X21pbm9yfS0ke19wfSIKKwlza2lwX2V4dHJhY3Rpb24r PSIgYmFzaCR7X21ham9yfSR7X21pbm9yfS0ke19wfSIKK2RvbmUKK3Vuc2V0IF91cmwKK3Vuc2V0 IF9wCisKK2NoZWNrc3VtPSJiNGE4MGYyYWM2NjE3MGIyOTEzZWZiZmI5ZjI1OTRmMWY3NmM3YjFh ZmQxMWY3OTllMjIwMzVkNjMwNzdmYjRkCisgZjJmZTllMWYwZmFkZGYxNGFiOWJmYTg4ZDQ1MGE3 NWU1ZDAyOGZlZGFmYWQyM2I4ODcxNmJkNjU3YzczNzI4OQorIDg3ZTg3ZDM1NDJlNTk4Nzk5YWRi M2U3ZTAxYzgxNjViYzc0M2UxMzZhNDAwZWQwZGUwMTU4NDVmN2ZmNjg3MDcKKyA0ZWViY2RjMzdi MTM3OTNhMjMyYzVmMmY0OThhNWZjYmY3ZGEwZWNiM2RhMjA1OTM5MWMwOTZkYjYyMGVjODViCisg MTQ0NDdhZDgzMmFkZDhlY2ZhZmRjZTUzODRiYWRkOTMzNjk3YjU1OWM0Njg4ZDZiOWUzZDM2ZmYz NmM2MmYwOAorIDViZjU0ZGQ5YmQyYzIxMWQyYmZiMzRhNDllMmM3NDFmMmVkNWUzMzg3NjdlOWNl OWY0ZDQxMjU0YmY5ZjgyNzYKKyBkNjg1MjlhNmZmMjAxYjZmZjU5MTUzMThhYjEyZmMxNmI4YTBl YmI3N2ZkYTMzMDgzMDNmY2MxZTEzMzk4NDIwCisgMTdiNDFlN2VlMzY3M2Q4ODg3ZGQyNTk5MjQx N2EzOTg2Nzc1MzNhYjg4Mjc5MzhhYTQxZmFkNzBkZjE5YWY5YgorIGVlYzY0NTg4NjIyYTgyYTUw MjliMjc3NmUyMThhNzVhMzY0MGJlZjQ5NTNmMDlkNmVlMWY0MTk5NjcwYWQ3ZTMKKyBlZDNjYTIx NzY3MzAzZmMzZGU5MzkzNGFhNTI0YzJlOTIwNzg3YzUwNmI2MDFjYzQwYTQ4OTdkNGIwOTRkOTAz CisgZDZmYmMzMjVmMGI1ZGM1NGRkYmU4ZWU0MzAyMGJjZWQ4YmQ1ODlkZGZmZWE1OWQxMjhkYjE0 YjJlNTJhOGExMQorIDJjNGRlMzMyYjkxZWFmNzk3YWJiYmQ2Yzc5NzA5NjkwYjVjYmQ0OGIxMmU4 ZGZlNzQ4MDk2ZGJkN2JmNDc0ZWEKKyAyOTQzZWUxOTY4ODAxODI5NmYyYTA0ZGJmZTMwYjcxMzhi ODg5NzAwZWZhOGZmMWMwNTI0YWYyNzFlMGVlMjMzCisgZjVkNzE3OGQ4ZGEzMDc5OWUwMWI4M2Ew ODAyMDE4ZDkxM2Q2YWE5NzJkZDJkZGFkM2I5MjdmM2YzZWI3MDk5YQorIDVkNmVlZTY1MTRlZTZl MjJhODdiYmE4ZDIyYmUwYTg2MjFhMGFlMTE5MjQ2ZjFjNWE5YTM1ZGIxZjcyYWY1ODkKKyBhNTE3 ZGYyZGRhOTNiMjZkNWNiZjAwZWZmZWZlYTkzZTNhNGNjZDY2NTJmMTUyZjQxMDkxNzA1NDRlYmZh MDVlCisgZmZkMWQ3YTU0YTk5ZmE3ZjViMTgyNWU0ZjdlOTVkOGM4ODc2YmMyY2ExNTFmMTUwZTc1 MWQ0MjljNjUwYjA2ZAorIDRjZjNiOWZhZmI4YTY2ZDQxMWRkNWZjOTEyMDAzMjUzM2E0MDEyZGYx ZGM2ZWUwMjRjNzgzMzM3M2UyZGRjMzEKKyA3YzMxNGUzNzVhMTA1YTY2NDJlOGVkNDRmMzgwOGI5 ZGVmODlkMTVmNzQ5MmZlMjAyOWEyMWJhOWMwZGU4MWQzIgorCittYWtlX2RpcnM9Ii9ldGMvYmFz aC9iYXNocmMuZCA3NTUgcm9vdCByb290IgogY29uZmxpY3RzPSJjaHJvb3QtYmFzaD49MCIKIHJl Z2lzdGVyX3NoZWxsPSIvdXNyL2Jpbi9iYXNoIC9iaW4vYmFzaCIKIApAQCAtMjcsMTMgKzU2LDEx IEBAIGFsdGVybmF0aXZlcz0iCiAKIENGTEFHUz0iLURTWVNfQkFTSFJDPSdcIi9ldGMvYmFzaC9i YXNocmNcIiciCiAKLXByZV9jb25maWd1cmUoKSB7Ci0JbG9jYWwgdmVyPSQoZWNobyAke19iYXNo X2Rpc3R2ZXJ9fHNlZCAic3xcLnx8ZyIpCi0KK3Bvc3RfcGF0Y2goKSB7CiAJY2QgJHt3cmtzcmN9 CiAJZm9yIHAgaW4gJChzZXEgLXcgMDAxICR7X2Jhc2hfcGF0Y2hsZXZlbH0pOyBkbwotCQlwYXRj aCAtc05wMCAtaSAke0ZJTEVTRElSfS9iYXNoJHt2ZXJ9LSR7cH0KLQkJbXNnX25vcm1hbCAiIEFw cGx5aW5nIHBhdGNoIGJhc2gke3Zlcn0tJHAuXG4iCisJCW1zZ19ub3JtYWwgIiBBcHBseWluZyBw YXRjaCBiYXNoJHtfbWFqb3J9JHtfbWlub3J9LSRwLlxuIgorCQlwYXRjaCAtc05wMCAtaSAke1hC UFNfU1JDRElTVERJUn0vYmFzaC0kdmVyc2lvbi9iYXNoJHtfbWFqb3J9JHtfbWlub3J9LSR7cH0K IAlkb25lCiB9CiAKCkZyb20gNTgyNTZjZWNiMzIwYmRmZmI4OTU2YjhmMDk3NWVjODA5ZjA3ZTJj MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xPz1DND05MG89QzM9QTBu PTIwVHI9RTE9QkE9QTduPTIwQz1DMz1CNG5nPTIwRGFuaD89CiA8Y29uZ2RhbmhxeEBnbWFpbC5j b20+CkRhdGU6IFNhdCwgMjUgSnVsIDIwMjAgMTI6MTM6MDcgKzA3MDAKU3ViamVjdDogW1BBVENI IDQvNF0gbGlicmVhZGxpbmU4OiB2ZXJpZnkgcGF0Y2gncyBjaGVja3N1bQoKLS0tCiBzcmNwa2dz L2xpYnJlYWRsaW5lOC90ZW1wbGF0ZSB8IDI1ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xpYnJlYWRsaW5lOC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlicmVhZGxpbmU4 L3RlbXBsYXRlCmluZGV4IDYyMDAxOTViZTllLi5jMzUxZjBkYjZlMiAxMDA2NDQKLS0tIGEvc3Jj cGtncy9saWJyZWFkbGluZTgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJyZWFkbGluZTgvdGVt cGxhdGUKQEAgLTE0LDIyICsxNCwxOSBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZv aWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRw czovL3Rpc3d3dy5jd3J1LmVkdS9waHAvY2hldC9yZWFkbGluZS9ybHRvcC5odG1sIgogZGlzdGZp bGVzPSIke0dOVV9TSVRFfS9yZWFkbGluZS9yZWFkbGluZS0ke19kaXN0X3Zlcn0udGFyLmd6Igot Y2hlY2tzdW09ZTMzOWY1MTk3MTQ3OGQzNjlmOGEwNTNhMzMwYTE5MDc4MWFjYjk4NjRjZjRjNTQx MDYwZjEyMDc4OTQ4ZTQ2MQogCi1wcmVfY29uZmlndXJlKCkgewotCWxvY2FsIHVybD0iJHtHTlVf U0lURX0vcmVhZGxpbmUvcmVhZGxpbmUtJHtfZGlzdF92ZXJ9LXBhdGNoZXMiCitfdXJsPSIke0dO VV9TSVRFfS9yZWFkbGluZS9yZWFkbGluZS0ke19kaXN0X3Zlcn0tcGF0Y2hlcyIKK2ZvciBfcCBp biAkKHNlcSAtdyAwMDEgJHtfcGF0Y2hfdmVyfSk7IGRvCisJZGlzdGZpbGVzKz0iICR7X3VybH0v cmVhZGxpbmUke19kaXN0X3Zlci8uL30tJHtfcH0iCisJc2tpcF9leHRyYWN0aW9uKz0iIHJlYWRs aW5lJHtfZGlzdF92ZXIvLi99LSR7X3B9IgorZG9uZQordW5zZXQgX3VybAordW5zZXQgX3AKIAot CWNkICR7WEJQU19TUkNESVNURElSfS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0KLQlpZiBbICIke19w YXRjaF92ZXJ9IiAtZ3QgMDAwIF07IHRoZW4KLQkJZm9yIHAgaW4gJChzZXEgLXcgMDAxICR7X3Bh dGNoX3Zlcn0pOyBkbwotCQkJaWYgWyAtZiByZWFkbGluZSR7dmVyc2lvbi8uL30tJHtwfSBdOyB0 aGVuCi0JCQkJY29udGludWUKLQkJCWZpCi0JCQlsb2NhbCBwYXRjaF91cmw9IiR7dXJsfS9yZWFk bGluZSR7X2Rpc3RfdmVyLy4vfS0ke3B9IgotCQkJbXNnX25vcm1hbCAiIEZldGNoaW5nICR7cGF0 Y2hfdXJsfSAuLi5cbiIKLQkJCSRYQlBTX0ZFVENIX0NNRCAiJHtwYXRjaF91cmx9IgotCQlkb25l Ci0JZmkKK2NoZWNrc3VtPSJlMzM5ZjUxOTcxNDc4ZDM2OWY4YTA1M2EzMzBhMTkwNzgxYWNiOTg2 NGNmNGM1NDEwNjBmMTIwNzg5NDhlNDYxCisgZDhlNWU5ODkzM2NmNTc1NmY4NjIyNDNjMDYwMWNi NjlkMzY2N2JiMzNmMmM3Yjc1MWZlNGU0MGIyYzNmZDA2OSIKKworcG9zdF9wYXRjaCgpIHsKIAlj ZCAke3dya3NyY30KIAlmb3IgcCBpbiAkKHNlcSAtdyAwMDEgJHtfcGF0Y2hfdmVyfSk7IGRvCiAJ CXBhdGNoIC1zIC1OcDAgLWkgJHtYQlBTX1NSQ0RJU1RESVJ9LyR7cGtnbmFtZX0tJHt2ZXJzaW9u fS9yZWFkbGluZSR7X2Rpc3RfdmVyLy4vfS0ke3B9Cg== --===============1737438049232442783==--