From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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.2 Received: from inbox.vuxu.org (localhost [IPv6:::1]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 4d1a922d for ; Tue, 16 Jul 2019 19:24:42 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============1159329049089373375==" MIME-Version: 1.0 Subject: Re: [PR PATCH] [Updated] Add GitHub site To: ml@inbox.vuxu.org From: voidlinux-github@inbox.vuxu.org Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 16 Jul 2019 21:24:42 +0200 Message-ID: <20190716192442.MZP7fOTRWzHSIHLLpFrHg89G4rr_L0NE9sgBQ1msxh8@z> GitHub notification mails are now in MIME to allow UTF8. --===============1159329049089373375== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgbWF5YmUtb25lLWRheS11YmVybWVu c2NoIGFnYWluc3QgbWFzdGVyIG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBz Oi8vZ2l0aHViLmNvbS9tYXliZS1vbmUtZGF5LXViZXJtZW5zY2gvdm9pZC1wYWNrYWdlcyBhZGQt Z2l0aHViLXNpdGUKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9w dWxsLzEzMTQ0CgpBZGQgR2l0SHViIHNpdGUKCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dp dGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMTMxNDQucGF0Y2ggaXMgYXR0 YWNoZWQ= --===============1159329049089373375== Content-Type: application/text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-add-github-site-13144.patch" RnJvbSAxN2E5MDVhZWU4ZDJiZjZiOTZlNjEyZjdjYzNiZDk1ZGY5NDlmM2FhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb255IDwtLWdldD4KRGF0ZTogTW9uLCAxNSBKdWwgMjAxOSAx MDoyMToxNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMDEvNDJdIGNvbW1vbi9lbnZpcm9ubWVudC9z ZXR1cC9taXNjLnNoOiBzb3J0ZWQgbGlzdCBvZiBzaXRlcwogYW5kIGFkZGVkIEdJVEhVQl9TSVRF CgotLS0KIGNvbW1vbi9lbnZpcm9ubWVudC9zZXR1cC9taXNjLnNoIHwgMTkgKysrKysrKysrKy0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvY29tbW9uL2Vudmlyb25tZW50L3NldHVwL21pc2Muc2ggYi9jb21tb24v ZW52aXJvbm1lbnQvc2V0dXAvbWlzYy5zaAppbmRleCBlZmEzNmUxODU4OS4uMWM1MTUxN2Y3NWQg MTAwNjQ0Ci0tLSBhL2NvbW1vbi9lbnZpcm9ubWVudC9zZXR1cC9taXNjLnNoCisrKyBiL2NvbW1v bi9lbnZpcm9ubWVudC9zZXR1cC9taXNjLnNoCkBAIC00LDE5ICs0LDIwIEBACiAjIFNJVEUgdXNl ZCBmb3IgZGl0ZmlsZXMgbWlycm9ycy4gRm9yIHVzZSBpbiAkZGlzdGZpbGVzLgogc2V0IC1hCiAK LVNPVVJDRUZPUkdFX1NJVEU9Imh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3NvdXJj ZWZvcmdlIgotTk9OR05VX1NJVEU9Imh0dHA6Ly9kb3dubG9hZC5zYXZhbm5haC5ub25nbnUub3Jn L3JlbGVhc2VzIgotVUJVTlRVX1NJVEU9Imh0dHA6Ly9hcmNoaXZlLnVidW50dS5jb20vdWJ1bnR1 L3Bvb2wiCi1YT1JHX1NJVEU9Imh0dHBzOi8vd3d3Lngub3JnL3JlbGVhc2VzL2luZGl2aWR1YWwi CitDUEFOX1NJVEU9Imh0dHBzOi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvYnktbW9kdWxlIgogREVC SUFOX1NJVEU9Imh0dHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCIKK0ZSRUVERVNLVE9Q X1NJVEU9Imh0dHBzOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlIgorR0lUSFVCX1NJVEU9Imh0 dHBzOi8vZ2l0aHViLmNvbSIKIEdOT01FX1NJVEU9Imh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9H Tk9NRS9zb3VyY2VzIgotS0VSTkVMX1NJVEU9Imh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xp bnV4IgotQ1BBTl9TSVRFPSJodHRwczovL3d3dy5jcGFuLm9yZy9tb2R1bGVzL2J5LW1vZHVsZSIK LVBZUElfU0lURT0iaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJj ZSIKLU1PWklMTEFfU0lURT0iaHR0cHM6Ly9mdHAubW96aWxsYS5vcmcvcHViIgogR05VX1NJVEU9 Imh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUiCi1GUkVFREVTS1RPUF9TSVRFPSJodHRwczovL2ZyZWVk ZXNrdG9wLm9yZy9zb2Z0d2FyZSIKIEtERV9TSVRFPSJodHRwczovL2Rvd25sb2FkLmtkZS5vcmcv c3RhYmxlIgorS0VSTkVMX1NJVEU9Imh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4Igor TU9aSUxMQV9TSVRFPSJodHRwczovL2Z0cC5tb3ppbGxhLm9yZy9wdWIiCitOT05HTlVfU0lURT0i aHR0cDovL2Rvd25sb2FkLnNhdmFubmFoLm5vbmdudS5vcmcvcmVsZWFzZXMiCitQWVBJX1NJVEU9 Imh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UiCitTT1VSQ0VG T1JHRV9TSVRFPSJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9zb3VyY2Vmb3JnZSIK K1VCVU5UVV9TSVRFPSJodHRwOi8vYXJjaGl2ZS51YnVudHUuY29tL3VidW50dS9wb29sIgorWE9S R19TSVRFPSJodHRwczovL3d3dy54Lm9yZy9yZWxlYXNlcy9pbmRpdmlkdWFsIgogCiAjIFJlcGV0 aXRpdmUgc3ViIGhvbWVwYWdlJ3Mgd2l0aCBubyByZWFsIHByb2plY3QgcGFnZQogIyBpZS4gc29t ZSBnbm9tZSBhbmQgeG9yZyBwcm9qZWN0cy4gRm9yIHVzZSBpbiAkaG9tZXBhZ2UuCgpGcm9tIGYw MDUwOWI4NTVjZjQyZWRhYmQ1OTVlMTBhYTJlM2FjOWRhZGNhYzAgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IEpvbnkgPC0tZ2V0PgpEYXRlOiBNb24sIDE1IEp1bCAyMDE5IDEwOjI1OjAy IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwMi80Ml0gTWFudWFsLm1kOiBzb3J0ZWQgbGlzdCBvZiBz aXRlcyBhbmQgYWRkZWQgR0lUSFVCX1NJVEUKCi0tLQogTWFudWFsLm1kIHwgMyArKy0KIDEgZmls ZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9N YW51YWwubWQgYi9NYW51YWwubWQKaW5kZXggYTUyMTY0YTdmNzMuLjk2ODVkNzdjMmU4IDEwMDY0 NAotLS0gYS9NYW51YWwubWQKKysrIGIvTWFudWFsLm1kCkBAIC00NTksOCArNDU5LDEwIEBAIEV4 YW1wbGU6CiAgIHwgQ1BBTl9TSVRFICAgICAgICB8IGh0dHA6Ly9jcGFuLnBlcmwub3JnL21vZHVs ZXMvYnktbW9kdWxlICAgICAgICAgIHwKICAgfCBERUJJQU5fU0lURSAgICAgIHwgaHR0cDovL2Z0 cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sICAgICAgICAgICAgICAgfAogICB8IEZSRUVERVNLVE9Q X1NJVEUgfCBodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlICAgICAgICAgICAgICAgICB8 CisgIHwgR0lUSFVCX1NJVEUgICAgICB8IGh0dHBzOi8vZ2l0aHViLmNvbSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwKICAgfCBHTk9NRV9TSVRFICAgICAgIHwgaHR0cDovL2Z0cC5nbm9t ZS5vcmcvcHViL0dOT01FL3NvdXJjZXMgICAgICAgICAgfAogICB8IEdOVV9TSVRFICAgICAgICAg fCBodHRwOi8vZnRwLmdudS5vcmcvZ251ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgIHwg S0RFX1NJVEUgICAgICAgICB8IGh0dHBzOi8vZG93bmxvYWQua2RlLm9yZy9zdGFibGUgICAgICAg ICAgICAgICAgIHwKICAgfCBLRVJORUxfU0lURSAgICAgIHwgaHR0cDovL3d3dy5rZXJuZWwub3Jn L3B1Yi9saW51eCAgICAgICAgICAgICAgICAgfAogICB8IE1PWklMTEFfU0lURSAgICAgfCBodHRw Oi8vZnRwLm1vemlsbGEub3JnL3B1YiAgICAgICAgICAgICAgICAgICAgICB8CiAgIHwgTk9OR05V X1NJVEUgICAgICB8IGh0dHA6Ly9kb3dubG9hZC5zYXZhbm5haC5ub25nbnUub3JnL3JlbGVhc2Vz ICAgIHwKQEAgLTQ2OSw3ICs0NzEsNiBAQCBFeGFtcGxlOgogICB8IFVCVU5UVV9TSVRFICAgICAg fCBodHRwOi8vYXJjaGl2ZS51YnVudHUuY29tL3VidW50dS9wb29sICAgICAgICAgICB8CiAgIHwg WE9SR19IT01FICAgICAgICB8IGh0dHA6Ly94b3JnLmZyZWVkZXNrdG9wLm9yZy93aWtpLyAgICAg ICAgICAgICAgIHwKICAgfCBYT1JHX1NJVEUgICAgICAgIHwgaHR0cDovL3d3dy54Lm9yZy9yZWxl YXNlcy9pbmRpdmlkdWFsICAgICAgICAgICAgfAotICB8IEtERV9TSVRFICAgICAgICAgfCBodHRw czovL2Rvd25sb2FkLmtkZS5vcmcvc3RhYmxlICAgICAgICAgICAgICAgICB8CiAKIC0gYGNoZWNr c3VtYCBUaGUgYHNoYTI1NmAgZGlnZXN0cyBtYXRjaGluZyBgJHtkaXN0ZmlsZXN9YC4gTXVsdGlw bGUgZmlsZXMgY2FuIGJlCiBzZXBhcmF0ZWQgYnkgYmxhbmtzLiBQbGVhc2Ugbm90ZSB0aGF0IHRo ZSBvcmRlciBtdXN0IGJlIHRoZSBzYW1lIHRoYW4KCkZyb20gYTliOTUyOTY2MmU2YTYwM2ViNzRm YjE4OTA5YzFkMGJkOTc4NjBiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8 am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogU3VuLCAxNCBKdWwgMjAxOSAxNDowMzoyMSArMDAwMApT dWJqZWN0OiBbUEFUQ0ggMDMvNDJdIGR0a2NvcmU6IHVwZGF0ZSB0byAyLjAuMTYuMS4KCi0tLQog c3JjcGtncy9kdGtjb3JlL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZHRrY29yZS90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZHRrY29yZS90ZW1wbGF0ZQppbmRleCBjMTJiNDk4OTk4MC4uYzU1 Nzk0MDA3NzEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZHRrY29yZS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2R0a2NvcmUvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdkdGtjb3JlJwogcGtnbmFtZT1kdGtjb3JlCi12ZXJzaW9uPTIuMC4xNAordmVyc2lvbj0yLjAu MTYuMQogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJMSUJf SU5TVEFMTF9ESVI9L3Vzci9saWIvIFZFUlNJT049JHt2ZXJzaW9ufSIKQEAgLTEyLDcgKzEyLDcg QEAgbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5j b20vbGludXhkZWVwaW4vZHRrY29yZSIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9naXRodWIuY29tL2xp bnV4ZGVlcGluL2R0a2NvcmUvYmxvYi8ke3ZlcnNpb259L0NIQU5HRUxPRy5tZCIKIGRpc3RmaWxl cz0iaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4ZGVlcGluL2R0a2NvcmUvYXJjaGl2ZS8ke3ZlcnNp b259LnRhci5neiIKLWNoZWNrc3VtPWQwMTJlMDA5Nzc1YzI2MWViZTA4NTA0NmQyMjcyYTU3MzQ2 YWM3ZjljZGUwMTE0YmM2MDhjYTVjZmQzOWMwZWIKK2NoZWNrc3VtPWIwYmI5ZmZlZmIxM2IyMTFh ZGI2MTI5NDMyZDgzMDk4MGRmNGE4MzQ5MzczMmU4MDMxMjA4MzIxYTg0ZDdiZTYKIAogaWYgWyAi JENST1NTX0JVSUxEIiBdO3RoZW4KIAlob3N0bWFrZWRlcGVuZHMrPSIgcXQ1LWRldmVsIGdzZXR0 aW5ncy1xdC1kZXZlbCIKCkZyb20gMzQwZTFmOWFmZDU5ZGRhN2M4ZmYxODVlMjZiNzVjMjFjZjY4 OWU4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5l dD4KRGF0ZTogU3VuLCAxNCBKdWwgMjAxOSAxNDowMzozMCArMDAwMApTdWJqZWN0OiBbUEFUQ0gg MDQvNDJdIGR0a3dpZGdldDogdXBkYXRlIHRvIDIuMC4xNi4xLgoKLS0tCiBzcmNwa2dzL2R0a3dp ZGdldC9wYXRjaGVzL3F0NS4xMy5wYXRjaCB8IDM5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmNwa2dzL2R0a3dpZGdldC90ZW1wbGF0ZSAgICAgICAgICAgICB8ICA2ICsrLS0KIDIgZmls ZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2R0a3dpZGdldC9wYXRjaGVzL3F0NS4xMy5wYXRjaAoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZHRrd2lkZ2V0L3BhdGNoZXMvcXQ1LjEzLnBhdGNoIGIvc3JjcGtncy9kdGt3 aWRnZXQvcGF0Y2hlcy9xdDUuMTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGE3NjYyMWEzZjNhLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2R0a3dpZGdldC9wYXRjaGVz L3F0NS4xMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLWRpZmYgLS1naXQg YS9zcmMvd2lkZ2V0cy9kYWJvdXRkaWFsb2cuY3BwIGIvc3JjL3dpZGdldHMvZGFib3V0ZGlhbG9n LmNwcAotaW5kZXggNWM2YmE5MS4uYTMzZmQ5NCAxMDA2NDQKLS0tLSBzcmMvd2lkZ2V0cy9kYWJv dXRkaWFsb2cuY3BwCi0rKysgc3JjL3dpZGdldHMvZGFib3V0ZGlhbG9nLmNwcAotQEAgLTU3NSw2 ICs1NzUsNiBAQCB2b2lkIERBYm91dERpYWxvZzo6c2hvd0V2ZW50KFFTaG93RXZlbnQgKmV2ZW50 KQotICAgICB9Ci0gfQotIAotLSNpbmNsdWRlICJtb2NfZGFib3V0ZGlhbG9nLmNwcCIKLS0KLSBE V0lER0VUX0VORF9OQU1FU1BBQ0UKLSsKLSsjaW5jbHVkZSAibW9jX2RhYm91dGRpYWxvZy5jcHAi Ci1kaWZmIC0tZ2l0IGEvc3JjL3dpZGdldHMvZGlwdjRsaW5lZWRpdC5jcHAgYi9zcmMvd2lkZ2V0 cy9kaXB2NGxpbmVlZGl0LmNwcAotaW5kZXggNGVmZTZlNC4uMWNjNjhiNCAxMDA2NDQKLS0tLSBz cmMvd2lkZ2V0cy9kaXB2NGxpbmVlZGl0LmNwcAotKysrIHNyYy93aWRnZXRzL2RpcHY0bGluZWVk aXQuY3BwCi1AQCAtNTMwLDYgKzUzMCw2IEBAIGJvb2wgRElwdjRMaW5lRWRpdDo6ZXZlbnRGaWx0 ZXIoUU9iamVjdCAqb2JqLCBRRXZlbnQgKmUpCi0gICAgIHJldHVybiBETGluZUVkaXQ6OmV2ZW50 RmlsdGVyKG9iaiwgZSk7Ci0gfQotIAotLSNpbmNsdWRlICJtb2NfZGlwdjRsaW5lZWRpdC5jcHAi Ci0tCi0gRFdJREdFVF9FTkRfTkFNRVNQQUNFCi0rCi0rI2luY2x1ZGUgIm1vY19kaXB2NGxpbmVl ZGl0LmNwcCIKLWRpZmYgLS1naXQgYS9zcmMvd2lkZ2V0cy9kbGlzdHZpZXcuY3BwIGIvc3JjL3dp ZGdldHMvZGxpc3R2aWV3LmNwcAotaW5kZXggMGRjYzI0NC4uNTIzZWJkNSAxMDA2NDQKLS0tLSBz cmMvd2lkZ2V0cy9kbGlzdHZpZXcuY3BwCi0rKysgc3JjL3dpZGdldHMvZGxpc3R2aWV3LmNwcAot QEAgLTcwOSw2ICs3MDksNiBAQCBib29sIERMaXN0Vmlldzo6ZWRpdChjb25zdCBRTW9kZWxJbmRl eCAmaW5kZXgsIFFBYnN0cmFjdEl0ZW1WaWV3OjpFZGl0VHJpZ2dlciB0cgotICAgICByZXR1cm4g dG1wOwotIH0KLSAKLS0jaW5jbHVkZSAibW9jX2RsaXN0dmlldy5jcHAiCi0tCi0gRFdJREdFVF9F TkRfTkFNRVNQQUNFCi0rCi0rI2luY2x1ZGUgIm1vY19kbGlzdHZpZXcuY3BwIgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9kdGt3aWRnZXQvdGVtcGxhdGUgYi9zcmNwa2dzL2R0a3dpZGdldC90ZW1wbGF0 ZQppbmRleCA2ZmJhYzkxNmQ5Yi4uMWQzNzlhOWYzMDUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZHRr d2lkZ2V0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZHRrd2lkZ2V0L3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZHRrd2lkZ2V0JwogcGtnbmFtZT1kdGt3aWRn ZXQKLXZlcnNpb249Mi4wLjE0Ci1yZXZpc2lvbj0yCit2ZXJzaW9uPTIuMC4xNi4xCityZXZpc2lv bj0xCiBidWlsZF9zdHlsZT1xbWFrZQogY29uZmlndXJlX2FyZ3M9IkRCVVNfVkVSU0lPTl8wXzRf Mj1ZRVMgTElCX0lOU1RBTExfRElSPS91c3IvbGliIFZFUlNJT049JHt2ZXJzaW9ufSIKIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCkBAIC0xNCw3 ICsxNCw3IEBAIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9n aXRodWIuY29tL2xpbnV4ZGVlcGluL2R0a3dpZGdldCIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9naXRo dWIuY29tL2xpbnV4ZGVlcGluL2R0a3dpZGdldC9ibG9iLyR7dmVyc2lvbn0vQ0hBTkdFTE9HLm1k IgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vbGludXhkZWVwaW4vZHRrd2lkZ2V0L2Fy Y2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT1iYzUxNDcyNDAxMWYzNmY4OWMzOGY2 MzgxYzE2MTcxZjZjZjMzNDdhMTFhY2EwOWQ4YzRmMGMwMjdkZGM4YzFkCitjaGVja3N1bT1kOGIy OWUxYTM2ZmFkYjM1NjNiOTA0ZGEzN2QwMzRkYTNjNmM2M2E3ZDIzMmRlYWFkZTNiOWM2ZjZlNmRj OWYyCiAKIGlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgogCWhvc3RtYWtlZGVwZW5kcys9IiBk dGtjb3JlLWRldmVsIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwKCkZy b20gOTFkZGMyNzVlZDJjY2I3NjczOTQzYjQ3YTdiYzZlOTkwZGE4NmVlNiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogU3VuLCAxNCBK dWwgMjAxOSAxNDowNDo1NCArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDUvNDJdIGtuaWdodHM6IHVw ZGF0ZSB0byAxOS4wNC4zLgoKLS0tCiBzcmNwa2dzL2tuaWdodHMvdGVtcGxhdGUgfCA0ICsrLS0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9rbmlnaHRzL3RlbXBsYXRlIGIvc3JjcGtncy9rbmlnaHRzL3RlbXBsYXRl CmluZGV4IDZhN2E5OTI2ZDJkLi5hY2Y5ZTRhYmNkYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9rbmln aHRzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva25pZ2h0cy90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tuaWdodHMnCiBwa2duYW1lPWtuaWdodHMKLXZlcnNp b249MTkuMDQuMgordmVyc2lvbj0xOS4wNC4zCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1jbWFr ZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHF0NS1xbWFrZSBxdDUtaG9z dC10b29scyBweXRob24zCkBAIC0xMSw0ICsxMSw0IEBAIG1haW50YWluZXI9IkpvaG4gPGpvaG56 QHBvc3Rlby5uZXQ+IgogbGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0 cHM6Ly93d3cua2RlLm9yZy9hcHBsaWNhdGlvbnMvZ2FtZXMva25pZ2h0cy8iCiBkaXN0ZmlsZXM9 IiR7S0RFX1NJVEV9L2FwcGxpY2F0aW9ucy8ke3ZlcnNpb259L3NyYy9rbmlnaHRzLSR7dmVyc2lv bn0udGFyLnh6IgotY2hlY2tzdW09NTVhOWNmOTJkOGM2MGFiYzQyYTkyMDIwOWNlMTFhYmZhMTRm Y2I0YTJlYTVkODE4NmEwYjhmODUzMTEzODdlNQorY2hlY2tzdW09YWIyZTAxZWU2ZTMwOWJmNTIy MTMzMzE2OGI1OGNmNDFjMjBhZDVhNWU3MGJlZWIzMTUyMGQ0MDc2ZjYxNTNlNQoKRnJvbSA3NDBm MDc5MjI2NzBhM2Y0MTQzMzIyMmZkYzYzOGRkMDJmOTU4YTFlIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBTdW4sIDE0IEp1bCAyMDE5 IDE0OjA1OjEzICswMDAwClN1YmplY3Q6IFtQQVRDSCAwNi80Ml0ga3F0cXVpY2tjaGFydHM6IHVw ZGF0ZSB0byAxOS4wNC4zLgoKLS0tCiBzcmNwa2dzL2txdHF1aWNrY2hhcnRzL3RlbXBsYXRlIHwg NCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva3F0cXVpY2tjaGFydHMvdGVtcGxhdGUgYi9zcmNwa2dzL2tx dHF1aWNrY2hhcnRzL3RlbXBsYXRlCmluZGV4IDFjOGJiMDEyY2I4Li4yNTE1NTEzOGM0MCAxMDA2 NDQKLS0tIGEvc3JjcGtncy9rcXRxdWlja2NoYXJ0cy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tx dHF1aWNrY2hhcnRzL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAna3F0cXVpY2tjaGFydHMnCiBwa2duYW1lPWtxdHF1aWNrY2hhcnRzCi12ZXJzaW9uPTE5LjA0 LjIKK3ZlcnNpb249MTkuMDQuMwogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3Rt YWtlZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2Ui CkBAIC0xMSw3ICsxMSw3IEBAIG1haW50YWluZXI9IkpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+Igog bGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9lZHUua2RlLm9y Zy8iCiBkaXN0ZmlsZXM9IiR7S0RFX1NJVEV9L2FwcGxpY2F0aW9ucy8ke3ZlcnNpb259L3NyYy8k e3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09YzU2YTdkZWQ5YTc0NzU2MDNl MTEzMmQ2NDY1NGRmNGYwNDY5MmViOTg3NWE3ZTUzZjg5NzMxYjUzOGI3ZWFjZgorY2hlY2tzdW09 MThmNTFiZDYxZDhhYjI4ODMyMzU1YjY5MDgyYmI2M2EwZWZhM2NmNzIwOTE4ZDVlN2ZmNDM0ZTIy MTljMTdmNQogCiBrcXRxdWlja2NoYXJ0cy1kZXZlbF9wYWNrYWdlKCkgewogCWRlcGVuZHM9IiR7 c291cmNlcGtnfT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKCkZyb20gY2MxNDFjMGJkOGI3ZDBl ODM4OTYxM2E0OTUxZTBiNmQzOTU1YTllMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog Sm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogU3VuLCAxNCBKdWwgMjAxOSAxNDowNToyMyAr MDAwMApTdWJqZWN0OiBbUEFUQ0ggMDcvNDJdIHRlbGxpY286IHVwZGF0ZSB0byAzLjIuMS4KCi0t LQogc3JjcGtncy90ZWxsaWNvL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAz IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90ZWxs aWNvL3RlbXBsYXRlIGIvc3JjcGtncy90ZWxsaWNvL3RlbXBsYXRlCmluZGV4IDMxYjE5MDE2Yjk3 Li41NmQ1OWYzMDE1ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy90ZWxsaWNvL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvdGVsbGljby90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ3RlbGxpY28nCiBwa2duYW1lPXRlbGxpY28KLXZlcnNpb249My4yCi1yZXZpc2lvbj0y Cit2ZXJzaW9uPTMuMi4xCityZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJl X2FyZ3M9Ii1ERU5BQkxFX1dFQkNBTT0kKHZvcHRfaWYgd2ViY2FtIE9OIE9GRikiCiBob3N0bWFr ZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIGtk b2N0b29scyBrY29uZmlnCkBAIC0xNiw3ICsxNiw3IEBAIG1haW50YWluZXI9IkpvaG4gPGpvaG56 QHBvc3Rlby5uZXQ+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRw Oi8vdGVsbGljby1wcm9qZWN0Lm9yZy9maWxlcy8iCiBkaXN0ZmlsZXM9Imh0dHA6Ly90ZWxsaWNv LXByb2plY3Qub3JnL2ZpbGVzLyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1 bT1mMjBlYzJiYmZhOWQ0ZTBiNGMwYzM4ZmViODZkMGNjNGFlNzJjYTZhNjgwOTMyY2Y1OGVkOWY1 YjhmMjYxMTRlCitjaGVja3N1bT0zOGJjMzY5YTUzNDFmMmExYmEyYmIxYjQ3MzZkYTFiNmViNGQz MjYzNTJkMTdlNWQ1NGU2MDlmOTNjMTQwYmY4CiBidWlsZF9vcHRpb25zPSJ3ZWJjYW0geWF6IHht cCBjZGlvIGNkZGIgc2Nhbm5lciIKIGJ1aWxkX29wdGlvbnNfZGVmYXVsdD0id2ViY2FtIHlheiB4 bXAgY2RpbyBjZGRiIHNjYW5uZXIiCiBkZXNjX29wdGlvbl9jZGlvPSJTdXBwb3J0IGZvciByZWFk aW5nIGNkdGV4dCBmcm9tIGF1ZGlvIENEcyIKCkZyb20gYjY0ODNjMjNhMDc2Yzk5MzdiYTViNTM5 NzhhMGE3Y2E1M2NhMzgxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9o bnpAcG9zdGVvLm5ldD4KRGF0ZTogVHVlLCAxNiBKdWwgMjAxOSAwNzo0MDoyMyArMDAwMApTdWJq ZWN0OiBbUEFUQ0ggMDgvNDJdIGRlZXBpbi1pbWFnZS12aWV3ZXI6IHVwZGF0ZSB0byAxLjMuMTgu CgotLS0KIHNyY3BrZ3MvZGVlcGluLWltYWdlLXZpZXdlci90ZW1wbGF0ZSB8IDQgKystLQogMSBm aWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2RlZXBpbi1pbWFnZS12aWV3ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2RlZXBpbi1p bWFnZS12aWV3ZXIvdGVtcGxhdGUKaW5kZXggOTFlMjgwODM0ODkuLjdlMjdmYTg2MzkwIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2RlZXBpbi1pbWFnZS12aWV3ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9kZWVwaW4taW1hZ2Utdmlld2VyL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnZGVlcGluLWltYWdlLXZpZXdlcicKIHBrZ25hbWU9ZGVlcGluLWltYWdlLXZp ZXdlcgotdmVyc2lvbj0xLjMuMTcKK3ZlcnNpb249MS4zLjE4CiByZXZpc2lvbj0xCiBidWlsZF9z dHlsZT1xbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJxdDUtcW1ha2UgcGtnLWNvbmZpZyIKQEAgLTEz LDcgKzEzLDcgQEAgbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczov L2dpdGh1Yi5jb20vbGludXhkZWVwaW4vZGVlcGluLWltYWdlLXZpZXdlciIKIGNoYW5nZWxvZz0i aHR0cHM6Ly9naXRodWIuY29tL2xpbnV4ZGVlcGluL2RlZXBpbi1pbWFnZS12aWV3ZXIvYmxvYi8k e3ZlcnNpb259L0NIQU5HRUxPRy5tZCIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2xp bnV4ZGVlcGluL2RlZXBpbi1pbWFnZS12aWV3ZXIvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5neiIK LWNoZWNrc3VtPWU5OTA0ZTcxMThmYTJlM2ZlNWYxMzU2ZWNiMjc1NzBlN2Q2MWNkYzNhNGVhZmJh OTRkNjQwZjYzMGRmMmRlYTgKK2NoZWNrc3VtPTRjNjE1OTIyZmQ5NzJkZGI4NjYyYjUwMDBlOWZk ZDczMTBkODlkOTUxMWRmYTJmZGZlMzg1NTExMTdkYmVhM2UKIAogaWYgWyAiJENST1NTX0JVSUxE IiBdOyB0aGVuCiAJaG9zdG1ha2VkZXBlbmRzKz0iIHF0NS1zdmctZGV2ZWwgcXQ1LXgxMWV4dHJh cy1kZXZlbCIKCkZyb20gZjc3ZmNiZmIwNjI4MjVkYTAyNmNlZDZjOTJkM2Q0NDMwYjg2YjA5NCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0 ZTogVHVlLCAxNiBKdWwgMjAxOSAwNzo0MDo0OSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDkvNDJd IGRlZXBpbi12b2ljZS1yZWNvcmRlcjogdXBkYXRlIHRvIDEuNC4yLgoKLS0tCiBzcmNwa2dzL2Rl ZXBpbi12b2ljZS1yZWNvcmRlci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2RlZXBp bi12b2ljZS1yZWNvcmRlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvZGVlcGluLXZvaWNlLXJlY29yZGVy L3RlbXBsYXRlCmluZGV4IGRmMmQ4MDc4YzhjLi5kM2Y2NDBiOTJmZSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9kZWVwaW4tdm9pY2UtcmVjb3JkZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kZWVwaW4t dm9pY2UtcmVjb3JkZXIvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdkZWVwaW4tdm9pY2UtcmVjb3JkZXInCiBwa2duYW1lPWRlZXBpbi12b2ljZS1yZWNvcmRl cgotdmVyc2lvbj0xLjQuMQordmVyc2lvbj0xLjQuMgogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9 cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFtYWtlIHBrZy1jb25maWciCkBAIC0xMiw3ICsx Miw3IEBAIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRo dWIuY29tL2xpbnV4ZGVlcGluL2RlZXBpbi12b2ljZS1yZWNvcmRlci8iCiBjaGFuZ2Vsb2c9Imh0 dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9saW51eGRlZXBpbi9kZWVwaW4tdm9pY2Ut cmVjb3JkZXIvJHt2ZXJzaW9ufS9DSEFOR0VMT0cubWQiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0 aHViLmNvbS9saW51eGRlZXBpbi9kZWVwaW4tdm9pY2UtcmVjb3JkZXIvYXJjaGl2ZS8ke3ZlcnNp b259LnRhci5neiIKLWNoZWNrc3VtPTA1ZjQyOTA5OWQzYzcxYzgxZjNlYzg5ZGE0NDI3MDE5ZjQz MWIzYjNhYWEzODczNWMxNGQwYjhhYzRkYWI1MDkKK2NoZWNrc3VtPWYxMjMxMDdhMjg1OGM1ZDcz MDQzYzE1MWM5MzYzOGJjYjYzN2E3Y2ZiM2EzNzZmNTFmY2I3MTliOTRmM2Q2NTkKIAogaWYgWyAi JENST1NTX0JVSUxEIiBdOyB0aGVuCiAJaG9zdG1ha2VkZXBlbmRzKz0iIHF0NS1tdWx0aW1lZGlh LWRldmVsIgoKRnJvbSBmZTY5YjRkM2JhOTUwZDJhOWQxOWU5YTU0Y2Y3ODkyYjczMzU2YWYxIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRl OiBUdWUsIDE2IEp1bCAyMDE5IDA3OjQxOjA1ICswMDAwClN1YmplY3Q6IFtQQVRDSCAxMC80Ml0g ZGRlLXF0LWRidXMtZmFjdG9yeTogdXBkYXRlIHRvIDEuMS42LgoKLS0tCiBzcmNwa2dzL2RkZS1x dC1kYnVzLWZhY3RvcnkvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kZGUtcXQtZGJ1 cy1mYWN0b3J5L3RlbXBsYXRlIGIvc3JjcGtncy9kZGUtcXQtZGJ1cy1mYWN0b3J5L3RlbXBsYXRl CmluZGV4IGM2OTZlOWMyNDIzLi45MTIzMTMwM2U1OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9kZGUt cXQtZGJ1cy1mYWN0b3J5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZGRlLXF0LWRidXMtZmFjdG9y eS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2RkZS1xdC1k YnVzLWZhY3RvcnknCiBwa2duYW1lPWRkZS1xdC1kYnVzLWZhY3RvcnkKLXZlcnNpb249MS4xLjUK K3ZlcnNpb249MS4xLjYKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRl cGVuZHM9InF0NS1xbWFrZSBweXRob24iCkBAIC0xMSw3ICsxMSw3IEBAIGxpY2Vuc2U9IkdQTC0z LjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4ZGVlcGluL2Rk ZS1xdC1kYnVzLWZhY3RvcnkiCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0aHViLmNvbS9saW51eGRl ZXBpbi9kZGUtcXQtZGJ1cy1mYWN0b3J5L2Jsb2IvJHt2ZXJzaW9ufS9DSEFOR0VMT0cubWQiCiBk aXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9saW51eGRlZXBpbi9kZGUtcXQtZGJ1cy1mYWN0 b3J5L2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT1lYzY3NjcxMDBlYjZjYzFj Y2E5M2ZjNmI0N2FhNzE2MTI1M2ZjOTg5ODQwOTFjM2Q3MThhN2E1MTc5YzdiZGI1CitjaGVja3N1 bT1iN2EzYzNjMjI5M2I3MDBlYWUxY2QyZWM0ZTU1ZjA1ZTBiYzk3MjZiM2U4ODBjMDViYmE4OWVk ODI4OTU1MTk5CiAKIGlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgogCWhvc3RtYWtlZGVwZW5k cys9IiBxdDUtZGV2ZWwgZGRlLXF0LWRidXMtZmFjdG9yeS1kZXZlbCIKCkZyb20gMTBmMmNmYzc2 MDljODRmODg1ZjZkMGQyYTM2ODZiYjc2OTU0Yjc1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogVHVlLCAxNiBKdWwgMjAxOSAwNzo0 MToxMyArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMTEvNDJdIGRlZXBpbi1lZGl0b3I6IHVwZGF0ZSB0 byAxLjIuOS4xLgoKLS0tCiBzcmNwa2dzL2RlZXBpbi1lZGl0b3IvdGVtcGxhdGUgfCA0ICsrLS0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9kZWVwaW4tZWRpdG9yL3RlbXBsYXRlIGIvc3JjcGtncy9kZWVwaW4tZWRp dG9yL3RlbXBsYXRlCmluZGV4IDNkODVkMmMxMDE0Li44OWVjNWY3MTBhMSAxMDA2NDQKLS0tIGEv c3JjcGtncy9kZWVwaW4tZWRpdG9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZGVlcGluLWVkaXRv ci90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2RlZXBpbi1l ZGl0b3InCiBwa2duYW1lPWRlZXBpbi1lZGl0b3IKLXZlcnNpb249MS4yLjkKK3ZlcnNpb249MS4y LjkuMQogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1 LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHBrZy1jb25maWciCkBAIC0xNCw1ICsxNCw1IEBAIGxpY2Vu c2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4 ZGVlcGluL2RlZXBpbi1lZGl0b3IiCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0aHViLmNvbS9saW51 eGRlZXBpbi9kZWVwaW4tZWRpdG9yL2Jsb2IvJHt2ZXJzaW9ufS9DSEFOR0VMT0cubWQiCiBkaXN0 ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9saW51eGRlZXBpbi9kZWVwaW4tZWRpdG9yL2FyY2hp dmUvJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT1lYjY1ZjQ2YTU3MGU4ZTE5NDgzZWQ0N2Ni ZTBmZDQ1ZmNkZjU3Njg0NjI3ZmRiYjkzMzExZGU1ZWFlNGE0ZjAwCitjaGVja3N1bT04YWFiZWY1 YWUzMWY5NmQ3ODFkYzI0YjI3MzkwYjFkZDhlMjg5MDNmM2Y5ZjMzZTAwODYzN2Y2YTQ1MjgwMTU5 CiBDWFhGTEFHUz0iLUkke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2luY2x1ZGUvbGliZHRrLTIuMC42 L0RXaWRnZXQgLUkke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2luY2x1ZGUvbGliZHRrLTIuMC42L0RD b3JlIgoKRnJvbSAwYmRhM2EzZmIwYTUzMDg0NTRhNjQyNzAxZGZjMjEzMmEyNGM2NDE4IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBU dWUsIDE2IEp1bCAyMDE5IDA3OjQxOjIwICswMDAwClN1YmplY3Q6IFtQQVRDSCAxMi80Ml0gZGVl cGluLXBpY2tlcjogdXBkYXRlIHRvIDEuNi42LgoKLS0tCiBzcmNwa2dzL2RlZXBpbi1waWNrZXIv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kZWVwaW4tcGlja2VyL3RlbXBsYXRlIGIv c3JjcGtncy9kZWVwaW4tcGlja2VyL3RlbXBsYXRlCmluZGV4IDY5OWY5MmEwMWVlLi5mOTMzNzFi Yzk3ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9kZWVwaW4tcGlja2VyL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvZGVlcGluLXBpY2tlci90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2RlZXBpbi1waWNrZXInCiBwa2duYW1lPWRlZXBpbi1waWNrZXIKLXZlcnNpb249 MS42LjUKK3ZlcnNpb249MS42LjYKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0 bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIgpAQCAtMTIs NyArMTIsNyBAQCBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8v Z2l0aHViLmNvbS9saW51eGRlZXBpbi9kZWVwaW4tcGlja2VyIgogY2hhbmdlbG9nPSJodHRwczov L2dpdGh1Yi5jb20vbGludXhkZWVwaW4vZGVlcGluLXBpY2tlci9ibG9iLyR7dmVyc2lvbn0vQ0hB TkdFTE9HLm1kIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vbGludXhkZWVwaW4vZGVl cGluLXBpY2tlci9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09NmMyYjRlNWJm N2U3NThiMDU5MTNjYWViYmRmYzBhNjUxNjc0MThkYjBhZmI2YmJiMjI1ZDdhYTk5YzI1ODRlYgor Y2hlY2tzdW09Nzk2MzBjZDVkYjZiNWY3NjM2MjE0Y2E4M2UxYTQwMDA5YzY5NzA4ZjRmZDE1Mzc0 OTYxMDYyMzIyY2I1ZGI4ZgogCiBpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAlob3N0bWFr ZWRlcGVuZHMrPSIgcXQ1LXN2Zy1kZXZlbCBxdDUteDExZXh0cmFzLWRldmVsIgoKRnJvbSAwMzVl MTdkNmZlNDU4MDZmNTc2Y2E5ZjJkZWRhM2U2NzE1N2MyMTQxIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBUdWUsIDE2IEp1bCAyMDE5 IDA3OjQxOjMzICswMDAwClN1YmplY3Q6IFtQQVRDSCAxMy80Ml0gZGVlcGluLXNjcmVlbnNob3Q6 IHVwZGF0ZSB0byA0LjIuMi4KCi0tLQogc3JjcGtncy9kZWVwaW4tc2NyZWVuc2hvdC90ZW1wbGF0 ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2RlZXBpbi1zY3JlZW5zaG90L3RlbXBsYXRlIGIvc3Jj cGtncy9kZWVwaW4tc2NyZWVuc2hvdC90ZW1wbGF0ZQppbmRleCBhZTQ5MDA3NjVjZS4uMTRkMzY1 MDU2YjcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZGVlcGluLXNjcmVlbnNob3QvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9kZWVwaW4tc2NyZWVuc2hvdC90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2RlZXBpbi1zY3JlZW5zaG90JwogcGtnbmFtZT1kZWVwaW4tc2Ny ZWVuc2hvdAotdmVyc2lvbj00LjIuMQordmVyc2lvbj00LjIuMgogcmV2aXNpb249MQogYnVpbGRf c3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtcW1ha2UiCkBAIC0x Myw3ICsxMyw3IEBAIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6 Ly9naXRodWIuY29tL2xpbnV4ZGVlcGluL2RlZXBpbi1zY3JlZW5zaG90IgogY2hhbmdlbG9nPSJo dHRwczovL2dpdGh1Yi5jb20vbGludXhkZWVwaW4vZGVlcGluLXNjcmVlbnNob3QvYmxvYi8ke3Zl cnNpb259L0NIQU5HRUxPRy5tZCIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4 ZGVlcGluL2RlZXBpbi1zY3JlZW5zaG90L2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVj a3N1bT1kYTk5ZmYyNDNlODAyN2YwYWQ5ZThkOWE4MTg4MjlhYmNiYzdkMGNjMjA3YjNhZWRlYTI0 MWJmNjczY2RmMzNiCitjaGVja3N1bT0xOGM3NjU3ZDkzZWJkMDA3YmVmMDQwYWJlOTQ3ZjJlYTQw NDg0MzZlZmI2YjI4NDU4YWRjZWEzOTIzZGViYjI2CiBDWFhGTEFHUz0iLUkke1hCUFNfQ1JPU1Nf QkFTRX0vdXNyL2luY2x1ZGUvbGliZHRrLTIuMC42L0RXaWRnZXQiCiBDWFhGTEFHUys9IiAtSSR7 WEJQU19DUk9TU19CQVNFfS91c3IvaW5jbHVkZS9saWJkdGstMi4wLjYvRENvcmUiCiBDWFhGTEFH Uys9IiAtSSR7WEJQU19DUk9TU19CQVNFfS91c3IvaW5jbHVkZS9saWJkdGstMi4wLjYvRFdtIgoK RnJvbSBlNGU2M2Q0Yjk1ZTYwYTBlMDUyYmVmMjhiODJjODQxYjAxYTViYzQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBUdWUsIDE2 IEp1bCAyMDE5IDA3OjQxOjQxICswMDAwClN1YmplY3Q6IFtQQVRDSCAxNC80Ml0gZGVlcGluLXRl cm1pbmFsOiB1cGRhdGUgdG8gMy4yLjcuMS4KCi0tLQogc3JjcGtncy9kZWVwaW4tdGVybWluYWwv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kZWVwaW4tdGVybWluYWwvdGVtcGxhdGUg Yi9zcmNwa2dzL2RlZXBpbi10ZXJtaW5hbC90ZW1wbGF0ZQppbmRleCBiNzBkNzk2NDJiOC4uYzk4 OWZlNGU5YjcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZGVlcGluLXRlcm1pbmFsL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvZGVlcGluLXRlcm1pbmFsL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZGVlcGluLXRlcm1pbmFsJwogcGtnbmFtZT1kZWVwaW4tdGVybWlu YWwKLXZlcnNpb249My4yLjcKK3ZlcnNpb249My4yLjcuMQogcmV2aXNpb249MQogYnVpbGRfc3R5 bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFRFU1RfQlVJTEQ9T0ZGIC1EVVNFX1ZFTkRPUl9M SUI9T0ZGIgpAQCAtMTUsNyArMTUsNyBAQCBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9t ZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9saW51eGRlZXBpbi9kZWVwaW4tdGVybWluYWwiCiBj aGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0aHViLmNvbS9saW51eGRlZXBpbi9kZWVwaW4tdGVybWluYWwv YmxvYi9tYXN0ZXIvQ0hBTkdFTE9HLm1kIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20v bGludXhkZWVwaW4vZGVlcGluLXRlcm1pbmFsL2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3oiCi1j aGVja3N1bT0yNDZmNTZhMDkyMDA3ZTE5ZGIxOWVkMDcyZDFmZmM0NmQ4OWVlYjdjMGMyMTQyNWI1 NThmODQyMmI2MzNiYWVjCitjaGVja3N1bT1hZjA5OTYyNWU1Njk1YTAyNTNhNWQzYWQ0MjQyMDYx ODI0YWNkM2JjNTM0YjExY2U0ZDQzMTY1ZDIxYjY2OWE3CiBub2Nyb3NzPXllcwogCiBjYXNlICRY QlBTX1RBUkdFVF9NQUNISU5FIGluCgpGcm9tIDNlZTFiMmI3ZjBlZmUzZTNmOTQzODBjYjQ2OTc4 Y2Y0YjgxMWRmYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBv c3Rlby5uZXQ+CkRhdGU6IFR1ZSwgMTYgSnVsIDIwMTkgMDc6NDE6NTQgKzAwMDAKU3ViamVjdDog W1BBVENIIDE1LzQyXSBkZWVwaW4tY2FsY3VsYXRvcjogdXBkYXRlIHRvIDEuMC4xMi4KCi0tLQog c3JjcGtncy9kZWVwaW4tY2FsY3VsYXRvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5n ZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2RlZXBpbi1jYWxjdWxhdG9yL3RlbXBsYXRlIGIvc3JjcGtncy9kZWVwaW4tY2FsY3VsYXRvci90 ZW1wbGF0ZQppbmRleCBlYjJkZTM4MGQ0Zi4uNzNiNjhiYjEyNTEgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZGVlcGluLWNhbGN1bGF0b3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kZWVwaW4tY2FsY3Vs YXRvci90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2RlZXBp bi1jYWxjdWxhdG9yJwogcGtnbmFtZT1kZWVwaW4tY2FsY3VsYXRvcgotdmVyc2lvbj0xLjAuMTEK K3ZlcnNpb249MS4wLjEyCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1xbWFrZQogaG9zdG1ha2Vk ZXBlbmRzPSJxdDUtcW1ha2UgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyIKQEAgLTEyLDcgKzEy LDcgQEAgbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dpdGh1 Yi5jb20vbGludXhkZWVwaW4vZGVlcGluLWNhbGN1bGF0b3IiCiBjaGFuZ2Vsb2c9Imh0dHBzOi8v Z2l0aHViLmNvbS9saW51eGRlZXBpbi9kZWVwaW4tY2FsY3VsYXRvci9ibG9iLyR7dmVyc2lvbn0v Q0hBTkdFTE9HLm1kIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vbGludXhkZWVwaW4v ZGVlcGluLWNhbGN1bGF0b3IvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTky Y2IyMWZhMzBjYWNlOWRhYzA0MGRkN2EwNGYzOWNiNzgyMWE4MmRhYjQ1ZjQ2ZWU5YTNkMDcwZDUx MDQ5YmYKK2NoZWNrc3VtPWFiY2JiMWQ5OGMzNjE4YmFmYTc5YjI1OGJiYjA1MGU2ODAxOWU3MzFk OWEyZGRmZGY2ZDY0ZDY4NGQ1MjBhOGQKIAogaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCiAJ aG9zdG1ha2VkZXBlbmRzKz0iIHF0NS1zdmctZGV2ZWwiCgpGcm9tIGE3ODUwNTA2NTUyYmExYmVh MDFhMzk5ZTkwYjEzMzM0ZjFmYmM3MmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpv aG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IFR1ZSwgMTYgSnVsIDIwMTkgMDc6NDI6MzggKzAw MDAKU3ViamVjdDogW1BBVENIIDE2LzQyXSBxdDVkeGNiLXBsdWdpbjogdXBkYXRlIHRvIDEuMi42 LgoKLS0tCiAuLi4vZGVlcGluLXF0NWR4Y2ItcGx1Z2luLXF0NS4xMy5wYXRjaCAgICAgICAgfCAg IDIyIC0KIHNyY3BrZ3MvcXQ1ZHhjYi1wbHVnaW4vcGF0Y2hlcy9xdDUuMTMucGF0Y2ggICB8IDM1 MjEgLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvcXQ1ZHhjYi1wbHVnaW4vdGVtcGxhdGUgICAg ICAgICAgICAgICB8ICAgIDYgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAz NTQ2IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1ZHhjYi1wbHVn aW4vcGF0Y2hlcy9kZWVwaW4tcXQ1ZHhjYi1wbHVnaW4tcXQ1LjEzLnBhdGNoCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9xdDVkeGNiLXBsdWdpbi9wYXRjaGVzL3F0NS4xMy5wYXRjaAoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1ZHhjYi1wbHVnaW4vcGF0Y2hlcy9kZWVwaW4tcXQ1ZHhjYi1w bHVnaW4tcXQ1LjEzLnBhdGNoIGIvc3JjcGtncy9xdDVkeGNiLXBsdWdpbi9wYXRjaGVzL2RlZXBp bi1xdDVkeGNiLXBsdWdpbi1xdDUuMTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGMxMDcxM2MxZDk5Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NWR4Y2ItcGx1Z2lu L3BhdGNoZXMvZGVlcGluLXF0NWR4Y2ItcGx1Z2luLXF0NS4xMy5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDIyICswLDAgQEAKLWRpZmYgLS1naXQgYS9wbGF0Zm9ybXBsdWdpbi93aW5kb3dldmVu dGhvb2suY3BwIGIvcGxhdGZvcm1wbHVnaW4vd2luZG93ZXZlbnRob29rLmNwcAotaW5kZXggNzQy YjQxZC4uNDI4ZGNiMCAxMDA2NDQKLS0tLSBhL3BsYXRmb3JtcGx1Z2luL3dpbmRvd2V2ZW50aG9v ay5jcHAKLSsrKyBiL3BsYXRmb3JtcGx1Z2luL3dpbmRvd2V2ZW50aG9vay5jcHAKLUBAIC0zNTks NiArMzU5LDggQEAgdm9pZCBXaW5kb3dFdmVudEhvb2s6OmhhbmRsZUZvY3VzSW5FdmVudChjb25z dCB4Y2JfZm9jdXNfaW5fZXZlbnRfdCAqZXZlbnQpCi0gICAgIGlmIChyZWxheUZvY3VzVG9Nb2Rh bFdpbmRvdyh3LCB4Y2JXaW5kb3ctPmNvbm5lY3Rpb24oKSkpCi0gICAgICAgICByZXR1cm47Ci0g Ci0rICAgIHhjYldpbmRvdy0+Y29ubmVjdGlvbigpLT5mb2N1c0luVGltZXIoKS5zdG9wKCk7Ci0r Ci0gI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1LCA5LCAwKQotICAgICB4Y2JX aW5kb3ctPmNvbm5lY3Rpb24oKS0+c2V0Rm9jdXNXaW5kb3codyk7Ci0gI2Vsc2UKLUBAIC00MzMs NyArNDM1LDcgQEAgdm9pZCBXaW5kb3dFdmVudEhvb2s6OmhhbmRsZUZvY3VzT3V0RXZlbnQoY29u c3QgeGNiX2ZvY3VzX291dF9ldmVudF90ICpldmVudCkKLSAgICAgLy8gRG8gbm90IHNldCB0aGUg YWN0aXZlIHdpbmRvdyB0byAwIGlmIHRoZXJlIGlzIGEgRm9jdXNJbiBjb21pbmcuCi0gICAgIC8v IFRoZXJlIGlzIGhvd2V2ZXIgbm8gZXF1aXZhbGVudCBmb3IgWFB1dEJhY2tFdmVudCBzbyByZWdp c3RlciBhCi0gICAgIC8vIGNhbGxiYWNrIGZvciBRWGNiQ29ubmVjdGlvbiBpbnN0ZWFkLgotLSAg ICB4Y2JXaW5kb3ctPmNvbm5lY3Rpb24oKS0+YWRkUGVla0Z1bmMoZm9jdXNJblBlZWtlcik7Ci0r ICAgIHhjYldpbmRvdy0+Y29ubmVjdGlvbigpLT5mb2N1c0luVGltZXIoKS5zdGFydCg0MDApOwot IH0KLSAKLSB2b2lkIFdpbmRvd0V2ZW50SG9vazo6aGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChj b25zdCB4Y2JfcHJvcGVydHlfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDVkeGNiLXBsdWdpbi9wYXRjaGVzL3F0NS4xMy5wYXRjaCBiL3NyY3BrZ3MvcXQ1ZHhj Yi1wbHVnaW4vcGF0Y2hlcy9xdDUuMTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDE4MjQ3NzRjNDc2Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NWR4Y2ItcGx1Z2lu L3BhdGNoZXMvcXQ1LjEzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUyMSArMCwwIEBACi1k aWZmIC11ck4gcXQ1ZHhjYi1wbHVnaW4tMS4yLjUub2xkL3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhj YnFwYS1kZXYvNS4xMy4wL3F4Y2JhdG9tLmggcXQ1ZHhjYi1wbHVnaW4tMS4yLjUvcGxhdGZvcm1w bHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmF0b20uaAotLS0tIHF0NWR4Y2ItcGx1 Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNi YXRvbS5oCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgcXQ1ZHhjYi1w bHVnaW4tMS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmF0 b20uaAkyMDE5LTA3LTEyIDIwOjE5OjU1LjkwMjk4NjUwOCArMDAwMAotQEAgLTAsMCArMSwyNTcg QEAKLSsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgotKyoqCi0rKiogQ29weXJpZ2h0IChDKSAyMDE4IFRo ZSBRdCBDb21wYW55IEx0ZC4KLSsqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNp bmcvCi0rKioKLSsqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0 aGUgUXQgVG9vbGtpdC4KLSsqKgotKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCi0rKiogQ29t bWVyY2lhbCBMaWNlbnNlIFVzYWdlCi0rKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVy Y2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgotKyoqIGFjY29yZGFuY2Ugd2l0 aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQotKyoq IFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1z IGNvbnRhaW5lZCBpbgotKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRo ZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCi0rKiogYW5kIGNvbmRpdGlvbnMgc2Vl IGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCi0rKiogaW5m b3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFj dC11cy4KLSsqKgotKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQot KyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIKLSsqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBl YXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKLSsqKiBwYWNr YWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRp b24gdG8KLSsqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCi0rKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KLSsqKgotKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAotKyoqIFB1YmxpYyBs aWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RF IEZyZWUKLSsqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUg ZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMwotKyoqIGluY2x1ZGVkIGluIHRoZSBw YWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKLSsqKiBp bmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVp cmVtZW50cyB3aWxsCi0rKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dw bC0yLjAuaHRtbCBhbmQKLSsqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAu aHRtbC4KLSsqKgotKyoqICRRVF9FTkRfTElDRU5TRSQKLSsqKgotKyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi0rI2lmbmRlZiBRWENCQVRPTV9ICi0rI2RlZmluZSBRWENCQVRPTV9ICi0rCi0rI2luY2x1 ZGUgPHhjYi94Y2IuaD4KLSsKLStjbGFzcyBRWGNiQXRvbQotK3sKLStwdWJsaWM6Ci0rICAgIGVu dW0gQXRvbSB7Ci0rICAgICAgICAvLyB3aW5kb3ctbWFuYWdlciA8LT4gY2xpZW50IHByb3RvY29s cwotKyAgICAgICAgV01fUFJPVE9DT0xTLAotKyAgICAgICAgV01fREVMRVRFX1dJTkRPVywKLSsg ICAgICAgIFdNX1RBS0VfRk9DVVMsCi0rICAgICAgICBfTkVUX1dNX1BJTkcsCi0rICAgICAgICBf TkVUX1dNX0NPTlRFWFRfSEVMUCwKLSsgICAgICAgIF9ORVRfV01fU1lOQ19SRVFVRVNULAotKyAg ICAgICAgX05FVF9XTV9TWU5DX1JFUVVFU1RfQ09VTlRFUiwKLSsgICAgICAgIE1BTkFHRVIsIC8v IFN5c3RlbSB0cmF5IG5vdGlmaWNhdGlvbgotKyAgICAgICAgX05FVF9TWVNURU1fVFJBWV9PUENP REUsIC8vIFN5c3RlbSB0cmF5IG9wZXJhdGlvbgotKwotKyAgICAgICAgLy8gSUNDQ00gd2luZG93 IHN0YXRlCi0rICAgICAgICBXTV9TVEFURSwKLSsgICAgICAgIFdNX0NIQU5HRV9TVEFURSwKLSsg ICAgICAgIFdNX0NMQVNTLAotKyAgICAgICAgV01fTkFNRSwKLSsKLSsgICAgICAgIC8vIFNlc3Np b24gbWFuYWdlbWVudAotKyAgICAgICAgV01fQ0xJRU5UX0xFQURFUiwKLSsgICAgICAgIFdNX1dJ TkRPV19ST0xFLAotKyAgICAgICAgU01fQ0xJRU5UX0lELAotKyAgICAgICAgV01fQ0xJRU5UX01B Q0hJTkUsCi0rCi0rICAgICAgICAvLyBDbGlwYm9hcmQKLSsgICAgICAgIENMSVBCT0FSRCwKLSsg ICAgICAgIElOQ1IsCi0rICAgICAgICBUQVJHRVRTLAotKyAgICAgICAgTVVMVElQTEUsCi0rICAg ICAgICBUSU1FU1RBTVAsCi0rICAgICAgICBTQVZFX1RBUkdFVFMsCi0rICAgICAgICBDTElQX1RF TVBPUkFSWSwKLSsgICAgICAgIF9RVF9TRUxFQ1RJT04sCi0rICAgICAgICBfUVRfQ0xJUEJPQVJE X1NFTlRJTkVMLAotKyAgICAgICAgX1FUX1NFTEVDVElPTl9TRU5USU5FTCwKLSsgICAgICAgIENM SVBCT0FSRF9NQU5BR0VSLAotKwotKyAgICAgICAgUkVTT1VSQ0VfTUFOQUdFUiwKLSsKLSsgICAg ICAgIF9YU0VUUk9PVF9JRCwKLSsKLSsgICAgICAgIF9RVF9TQ1JPTExfRE9ORSwKLSsgICAgICAg IF9RVF9JTlBVVF9FTkNPRElORywKLSsKLSsgICAgICAgIC8vIFF0L1hDQiBzcGVjaWZpYwotKyAg ICAgICAgX1FUX0NMT1NFX0NPTk5FQ1RJT04sCi0rCi0rICAgICAgICBfTU9USUZfV01fSElOVFMs Ci0rCi0rICAgICAgICBEVFdNX0lTX1JVTk5JTkcsCi0rICAgICAgICBFTkxJR0hURU5NRU5UX0RF U0tUT1AsCi0rICAgICAgICBfRFRfU0FWRV9NT0RFLAotKyAgICAgICAgX1NHSV9ERVNLU19NQU5B R0VSLAotKwotKyAgICAgICAgLy8gRVdNSCAoYWthIE5FVFdNKQotKyAgICAgICAgX05FVF9TVVBQ T1JURUQsCi0rICAgICAgICBfTkVUX1ZJUlRVQUxfUk9PVFMsCi0rICAgICAgICBfTkVUX1dPUktB UkVBLAotKwotKyAgICAgICAgX05FVF9NT1ZFUkVTSVpFX1dJTkRPVywKLSsgICAgICAgIF9ORVRf V01fTU9WRVJFU0laRSwKLSsKLSsgICAgICAgIF9ORVRfV01fTkFNRSwKLSsgICAgICAgIF9ORVRf V01fSUNPTl9OQU1FLAotKyAgICAgICAgX05FVF9XTV9JQ09OLAotKwotKyAgICAgICAgX05FVF9X TV9QSUQsCi0rCi0rICAgICAgICBfTkVUX1dNX1dJTkRPV19PUEFDSVRZLAotKwotKyAgICAgICAg X05FVF9XTV9TVEFURSwKLSsgICAgICAgIF9ORVRfV01fU1RBVEVfQUJPVkUsCi0rICAgICAgICBf TkVUX1dNX1NUQVRFX0JFTE9XLAotKyAgICAgICAgX05FVF9XTV9TVEFURV9GVUxMU0NSRUVOLAot KyAgICAgICAgX05FVF9XTV9TVEFURV9NQVhJTUlaRURfSE9SWiwKLSsgICAgICAgIF9ORVRfV01f U1RBVEVfTUFYSU1JWkVEX1ZFUlQsCi0rICAgICAgICBfTkVUX1dNX1NUQVRFX01PREFMLAotKyAg ICAgICAgX05FVF9XTV9TVEFURV9TVEFZU19PTl9UT1AsCi0rICAgICAgICBfTkVUX1dNX1NUQVRF X0RFTUFORFNfQVRURU5USU9OLAotKwotKyAgICAgICAgX05FVF9XTV9VU0VSX1RJTUUsCi0rICAg ICAgICBfTkVUX1dNX1VTRVJfVElNRV9XSU5ET1csCi0rICAgICAgICBfTkVUX1dNX0ZVTExfUExB Q0VNRU5ULAotKwotKyAgICAgICAgX05FVF9XTV9XSU5ET1dfVFlQRSwKLSsgICAgICAgIF9ORVRf V01fV0lORE9XX1RZUEVfREVTS1RPUCwKLSsgICAgICAgIF9ORVRfV01fV0lORE9XX1RZUEVfRE9D SywKLSsgICAgICAgIF9ORVRfV01fV0lORE9XX1RZUEVfVE9PTEJBUiwKLSsgICAgICAgIF9ORVRf V01fV0lORE9XX1RZUEVfTUVOVSwKLSsgICAgICAgIF9ORVRfV01fV0lORE9XX1RZUEVfVVRJTElU WSwKLSsgICAgICAgIF9ORVRfV01fV0lORE9XX1RZUEVfU1BMQVNILAotKyAgICAgICAgX05FVF9X TV9XSU5ET1dfVFlQRV9ESUFMT0csCi0rICAgICAgICBfTkVUX1dNX1dJTkRPV19UWVBFX0RST1BE T1dOX01FTlUsCi0rICAgICAgICBfTkVUX1dNX1dJTkRPV19UWVBFX1BPUFVQX01FTlUsCi0rICAg ICAgICBfTkVUX1dNX1dJTkRPV19UWVBFX1RPT0xUSVAsCi0rICAgICAgICBfTkVUX1dNX1dJTkRP V19UWVBFX05PVElGSUNBVElPTiwKLSsgICAgICAgIF9ORVRfV01fV0lORE9XX1RZUEVfQ09NQk8s Ci0rICAgICAgICBfTkVUX1dNX1dJTkRPV19UWVBFX0RORCwKLSsgICAgICAgIF9ORVRfV01fV0lO RE9XX1RZUEVfTk9STUFMLAotKyAgICAgICAgX0tERV9ORVRfV01fV0lORE9XX1RZUEVfT1ZFUlJJ REUsCi0rCi0rICAgICAgICBfS0RFX05FVF9XTV9GUkFNRV9TVFJVVCwKLSsgICAgICAgIF9ORVRf RlJBTUVfRVhURU5UUywKLSsKLSsgICAgICAgIF9ORVRfU1RBUlRVUF9JTkZPLAotKyAgICAgICAg X05FVF9TVEFSVFVQX0lORk9fQkVHSU4sCi0rCi0rICAgICAgICBfTkVUX1NVUFBPUlRJTkdfV01f Q0hFQ0ssCi0rCi0rICAgICAgICBfTkVUX1dNX0NNX1MwLAotKwotKyAgICAgICAgX05FVF9TWVNU RU1fVFJBWV9WSVNVQUwsCi0rCi0rICAgICAgICBfTkVUX0FDVElWRV9XSU5ET1csCi0rCi0rICAg ICAgICAvLyBQcm9wZXJ0eSBmb3JtYXRzCi0rICAgICAgICBURVhULAotKyAgICAgICAgVVRGOF9T VFJJTkcsCi0rICAgICAgICBDQVJESU5BTCwKLSsKLSsgICAgICAgIC8vIFhkbmQKLSsgICAgICAg IFhkbmRFbnRlciwKLSsgICAgICAgIFhkbmRQb3NpdGlvbiwKLSsgICAgICAgIFhkbmRTdGF0dXMs Ci0rICAgICAgICBYZG5kTGVhdmUsCi0rICAgICAgICBYZG5kRHJvcCwKLSsgICAgICAgIFhkbmRG aW5pc2hlZCwKLSsgICAgICAgIFhkbmRUeXBlbGlzdCwKLSsgICAgICAgIFhkbmRBY3Rpb25MaXN0 LAotKwotKyAgICAgICAgWGRuZFNlbGVjdGlvbiwKLSsKLSsgICAgICAgIFhkbmRBd2FyZSwKLSsg ICAgICAgIFhkbmRQcm94eSwKLSsKLSsgICAgICAgIFhkbmRBY3Rpb25Db3B5LAotKyAgICAgICAg WGRuZEFjdGlvbkxpbmssCi0rICAgICAgICBYZG5kQWN0aW9uTW92ZSwKLSsgICAgICAgIFhkbmRB Y3Rpb25Qcml2YXRlLAotKwotKyAgICAgICAgLy8gWGtiCi0rICAgICAgICBfWEtCX1JVTEVTX05B TUVTLAotKwotKyAgICAgICAgLy8gWEVNQkVECi0rICAgICAgICBfWEVNQkVELAotKyAgICAgICAg X1hFTUJFRF9JTkZPLAotKwotKyAgICAgICAgLy8gWElucHV0MgotKyAgICAgICAgQnV0dG9uTGVm dCwKLSsgICAgICAgIEJ1dHRvbk1pZGRsZSwKLSsgICAgICAgIEJ1dHRvblJpZ2h0LAotKyAgICAg ICAgQnV0dG9uV2hlZWxVcCwKLSsgICAgICAgIEJ1dHRvbldoZWVsRG93biwKLSsgICAgICAgIEJ1 dHRvbkhvcml6V2hlZWxMZWZ0LAotKyAgICAgICAgQnV0dG9uSG9yaXpXaGVlbFJpZ2h0LAotKyAg ICAgICAgQWJzTVRQb3NpdGlvblgsCi0rICAgICAgICBBYnNNVFBvc2l0aW9uWSwKLSsgICAgICAg IEFic01UVG91Y2hNYWpvciwKLSsgICAgICAgIEFic01UVG91Y2hNaW5vciwKLSsgICAgICAgIEFi c01UT3JpZW50YXRpb24sCi0rICAgICAgICBBYnNNVFByZXNzdXJlLAotKyAgICAgICAgQWJzTVRU cmFja2luZ0lELAotKyAgICAgICAgTWF4Q29udGFjdHMsCi0rICAgICAgICBSZWxYLAotKyAgICAg ICAgUmVsWSwKLSsgICAgICAgIC8vIFhJbnB1dDIgdGFibGV0Ci0rICAgICAgICBBYnNYLAotKyAg ICAgICAgQWJzWSwKLSsgICAgICAgIEFic1ByZXNzdXJlLAotKyAgICAgICAgQWJzVGlsdFgsCi0r ICAgICAgICBBYnNUaWx0WSwKLSsgICAgICAgIEFic1doZWVsLAotKyAgICAgICAgQWJzRGlzdGFu Y2UsCi0rICAgICAgICBXYWNvbVNlcmlhbElEcywKLSsgICAgICAgIElOVEVHRVIsCi0rICAgICAg ICBSZWxIb3JpeldoZWVsLAotKyAgICAgICAgUmVsVmVydFdoZWVsLAotKyAgICAgICAgUmVsSG9y aXpTY3JvbGwsCi0rICAgICAgICBSZWxWZXJ0U2Nyb2xsLAotKwotKyAgICAgICAgX1hTRVRUSU5H U19TRVRUSU5HUywKLSsKLSsgICAgICAgIF9DT01QSVpfREVDT1JfUEVORElORywKLSsgICAgICAg IF9DT01QSVpfREVDT1JfUkVRVUVTVCwKLSsgICAgICAgIF9DT01QSVpfREVDT1JfREVMRVRFX1BJ WE1BUCwKLSsgICAgICAgIF9DT01QSVpfVE9PTEtJVF9BQ1RJT04sCi0rICAgICAgICBfR1RLX0xP QURfSUNPTlRIRU1FUywKLSsKLSsgICAgICAgIEFUX1NQSV9CVVMsCi0rCi0rICAgICAgICBFRElE LAotKyAgICAgICAgRURJRF9EQVRBLAotKyAgICAgICAgWEZyZWU4Nl9ERENfRURJRDFfUkFXREFU QSwKLSsKLSsgICAgICAgIE5BdG9tcwotKyAgICB9OwotKwotKyAgICBRWGNiQXRvbSgpOwotKyAg ICB2b2lkIGluaXRpYWxpemUoeGNiX2Nvbm5lY3Rpb25fdCAqY29ubmVjdGlvbik7Ci0rCi0rICAg IGlubGluZSB4Y2JfYXRvbV90IGF0b20oUVhjYkF0b206OkF0b20gYXRvbSkgY29uc3QgeyByZXR1 cm4gbV9hbGxBdG9tc1thdG9tXTsgfQotKyAgICBRWGNiQXRvbTo6QXRvbSBxYXRvbSh4Y2JfYXRv bV90IGF0b20pIGNvbnN0OwotKwotK3Byb3RlY3RlZDoKLSsgICAgdm9pZCBpbml0aWFsaXplQWxs QXRvbXMoeGNiX2Nvbm5lY3Rpb25fdCAqY29ubmVjdGlvbik7Ci0rCi0rcHJpdmF0ZToKLSsgICAg eGNiX2F0b21fdCBtX2FsbEF0b21zW1FYY2JBdG9tOjpOQXRvbXNdOwotK307Ci0rCi0rI2VuZGlm IC8vIFFYQ0JBVE9NX0gKLWRpZmYgLXVyTiBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZv cm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmJhY2tpbmdzdG9yZS5oIHF0NWR4 Y2ItcGx1Z2luLTEuMi41L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4 Y2JiYWNraW5nc3RvcmUuaAotLS0tIHF0NWR4Y2ItcGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBs dWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNiYmFja2luZ3N0b3JlLmgJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0 Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNiYmFja2luZ3N0b3JlLmgJMjAx OS0wNy0xMiAyMDoxOTo1NS45MDI5ODY1MDggKzAwMDAKLUBAIC0wLDAgKzEsMTE2IEBACi0rLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKLSsqKgotKyoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29t cGFueSBMdGQuCi0rKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLwotKyoq Ci0rKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHBsdWdpbnMgb2YgdGhlIFF0IFRvb2xraXQu Ci0rKioKLSsqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAotKyoqIENvbW1lcmNpYWwgTGljZW5z ZSBVc2FnZQotKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5z ZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KLSsqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNp YWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKLSsqKiBTb2Z0d2FyZSBvciwg YWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4K LSsqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4g Rm9yIGxpY2Vuc2luZyB0ZXJtcwotKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5x dC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgotKyoqIGluZm9ybWF0aW9uIHVzZSB0 aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCi0rKioKLSsq KiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRlcm5hdGl2 ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyCi0rKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlCi0rKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBm aWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCi0rKiogcGFja2FnaW5nIG9mIHRoaXMg ZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCi0rKiogZW5z dXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVp cmVtZW50cwotKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xn cGwtMy4wLmh0bWwuCi0rKioKLSsqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQot KyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVQotKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0 IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKLSsqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9u IDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCi0rKiogUXQg Rm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUKLSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5H UEwyIGFuZCBMSUNFTlNFLkdQTDMKLSsqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRo aXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCi0rKiogaW5mb3JtYXRpb24gdG8g ZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAot KyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5k Ci0rKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCi0rKioKLSsq KiAkUVRfRU5EX0xJQ0VOU0UkCi0rKioKLSsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotKwotKyNpZm5k ZWYgUVhDQkJBQ0tJTkdTVE9SRV9ICi0rI2RlZmluZSBRWENCQkFDS0lOR1NUT1JFX0gKLSsKLSsj aW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWJhY2tpbmdzdG9yZS5oPgotKyNpbmNsdWRlIDxRdENvcmUv UVN0YWNrPgotKwotKyNpbmNsdWRlIDx4Y2IveGNiLmg+Ci0rCi0rI2luY2x1ZGUgInF4Y2JvYmpl Y3QuaCIKLSsKLStRVF9CRUdJTl9OQU1FU1BBQ0UKLSsKLStjbGFzcyBRWGNiQmFja2luZ1N0b3Jl SW1hZ2U7Ci0rCi0rY2xhc3MgUVhjYkJhY2tpbmdTdG9yZSA6IHB1YmxpYyBRWGNiT2JqZWN0LCBw dWJsaWMgUVBsYXRmb3JtQmFja2luZ1N0b3JlCi0rewotK3B1YmxpYzoKLSsgICAgUVhjYkJhY2tp bmdTdG9yZShRV2luZG93ICp3aW5kb3cpOwotKyAgICB+UVhjYkJhY2tpbmdTdG9yZSgpOwotKwot KyAgICBRUGFpbnREZXZpY2UgKnBhaW50RGV2aWNlKCkgb3ZlcnJpZGU7Ci0rICAgIHZvaWQgZmx1 c2goUVdpbmRvdyAqd2luZG93LCBjb25zdCBRUmVnaW9uICZyZWdpb24sIGNvbnN0IFFQb2ludCAm b2Zmc2V0KSBvdmVycmlkZTsKLSsjaWZuZGVmIFFUX05PX09QRU5HTAotKyAgICB2b2lkIGNvbXBv c2VBbmRGbHVzaChRV2luZG93ICp3aW5kb3csIGNvbnN0IFFSZWdpb24gJnJlZ2lvbiwgY29uc3Qg UVBvaW50ICZvZmZzZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIFFQbGF0Zm9ybVRleHR1 cmVMaXN0ICp0ZXh0dXJlcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB0cmFuc2x1 Y2VudEJhY2tncm91bmQpIG92ZXJyaWRlOwotKyNlbmRpZgotKyAgICBRSW1hZ2UgdG9JbWFnZSgp IGNvbnN0IG92ZXJyaWRlOwotKwotKyAgICBRUGxhdGZvcm1HcmFwaGljc0J1ZmZlciAqZ3JhcGhp Y3NCdWZmZXIoKSBjb25zdCBvdmVycmlkZTsKLSsKLSsgICAgdm9pZCByZXNpemUoY29uc3QgUVNp emUgJnNpemUsIGNvbnN0IFFSZWdpb24gJnN0YXRpY0NvbnRlbnRzKSBvdmVycmlkZTsKLSsgICAg Ym9vbCBzY3JvbGwoY29uc3QgUVJlZ2lvbiAmYXJlYSwgaW50IGR4LCBpbnQgZHkpIG92ZXJyaWRl OwotKwotKyAgICB2b2lkIGJlZ2luUGFpbnQoY29uc3QgUVJlZ2lvbiAmKSBvdmVycmlkZTsKLSsg ICAgdm9pZCBlbmRQYWludCgpIG92ZXJyaWRlOwotKwotKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVT eXN0ZW1WU2htU2VnbWVudCh4Y2JfY29ubmVjdGlvbl90ICpjLCBzaXplX3Qgc2VnbWVudFNpemUg PSAxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzaG1J bmZvID0gbnVsbHB0cik7Ci0rCi0rcHJvdGVjdGVkOgotKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy KHhjYl93aW5kb3dfdCB3aW5kb3csIGNvbnN0IFFSZWdpb24gJnJlZ2lvbiwgY29uc3QgUVBvaW50 ICZvZmZzZXQpOwotKyAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVJbWFnZShRWGNiV2luZG93ICp3 aW4sIGNvbnN0IFFTaXplICZzaXplKTsKLSsKLSsgICAgUVhjYkJhY2tpbmdTdG9yZUltYWdlICpt X2ltYWdlID0gbnVsbHB0cjsKLSsgICAgUVN0YWNrPFFSZWdpb24+IG1fcGFpbnRSZWdpb25zOwot KyAgICBRSW1hZ2UgbV9yZ2JJbWFnZTsKLSt9OwotKwotK2NsYXNzIFFYY2JTeXN0ZW1UcmF5QmFj a2luZ1N0b3JlIDogcHVibGljIFFYY2JCYWNraW5nU3RvcmUKLSt7Ci0rcHVibGljOgotKyAgICBR WGNiU3lzdGVtVHJheUJhY2tpbmdTdG9yZShRV2luZG93ICp3aW5kb3cpOwotKyAgICB+UVhjYlN5 c3RlbVRyYXlCYWNraW5nU3RvcmUoKTsKLSsKLSsgICAgdm9pZCBiZWdpblBhaW50KGNvbnN0IFFS ZWdpb24gJikgb3ZlcnJpZGU7Ci0rCi0rcHJvdGVjdGVkOgotKyAgICB2b2lkIHJlbmRlcih4Y2Jf d2luZG93X3Qgd2luZG93LCBjb25zdCBRUmVnaW9uICZyZWdpb24sIGNvbnN0IFFQb2ludCAmb2Zm c2V0KSBvdmVycmlkZTsKLSsgICAgdm9pZCByZWNyZWF0ZUltYWdlKFFYY2JXaW5kb3cgKndpbiwg Y29uc3QgUVNpemUgJnNpemUpIG92ZXJyaWRlOwotKwotK3ByaXZhdGU6Ci0rICAgIHZvaWQgaW5p dFhSZW5kZXJNb2RlKCk7Ci0rCi0rICAgIHhjYl9waXhtYXBfdCBtX3hyZW5kZXJQaXhtYXAgPSBY Q0JfTk9ORTsKLSsgICAgeGNiX3JlbmRlcl9waWN0dXJlX3QgbV94cmVuZGVyUGljdHVyZSA9IFhD Ql9OT05FOwotKyAgICB4Y2JfcmVuZGVyX3BpY3Rmb3JtYXRfdCBtX3hyZW5kZXJQaWN0Rm9ybWF0 ICA9IFhDQl9OT05FOwotKyAgICB4Y2JfcmVuZGVyX3BpY3R1cmVfdCBtX3dpbmRvd1BpY3R1cmUg PSBYQ0JfTk9ORTsKLSsKLSsgICAgYm9vbCBtX3VzaW5nWFJlbmRlck1vZGUgPSBmYWxzZTsKLSsg ICAgYm9vbCBtX3VzZUdyYWJiZWRCYWNrZ291bmQgPSBmYWxzZTsKLSsgICAgUVBpeG1hcCBtX2dy YWJiZWRCYWNrZ3JvdW5kOwotK307Ci0rCi0rUVRfRU5EX05BTUVTUEFDRQotKwotKyNlbmRpZgot ZGlmZiAtdXJOIHF0NWR4Y2ItcGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4 Y2JxcGEtZGV2LzUuMTMuMC9xeGNiY2xpcGJvYXJkLmggcXQ1ZHhjYi1wbHVnaW4tMS4yLjUvcGxh dGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmNsaXBib2FyZC5oCi0tLS0g cXQ1ZHhjYi1wbHVnaW4tMS4yLjUub2xkL3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYv NS4xMy4wL3F4Y2JjbGlwYm9hcmQuaAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIHF0NWR4Y2ItcGx1Z2luLTEuMi41L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1k ZXYvNS4xMy4wL3F4Y2JjbGlwYm9hcmQuaAkyMDE5LTA3LTEyIDIwOjE5OjU1LjkwMjk4NjUwOCAr MDAwMAotQEAgLTAsMCArMSwxNTIgQEAKLSsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKyoqCi0rKiog Q29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KLSsqKiBDb250YWN0OiBodHRw czovL3d3dy5xdC5pby9saWNlbnNpbmcvCi0rKioKLSsqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgcGx1Z2lucyBvZiB0aGUgUXQgVG9vbGtpdC4KLSsqKgotKyoqICRRVF9CRUdJTl9MSUNFTlNF OkxHUEwkCi0rKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCi0rKiogTGljZW5zZWVzIGhvbGRp bmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgotKyoq IGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRl ZCB3aXRoIHRoZQotKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNl IHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgotKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0 d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCi0rKiogYW5k IGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBm dXJ0aGVyCi0rKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93 d3cucXQuaW8vY29udGFjdC11cy4KLSsqKgotKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBVc2FnZQotKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKLSsqKiBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLSsqKiBGb3Vu ZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBp biB0aGUKLSsqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xs b3dpbmcgaW5mb3JtYXRpb24gdG8KLSsqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCi0rKiogd2lsbCBiZSBtZXQ6IGh0 dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KLSsqKgotKyoqIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxl IG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rKiogR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJh bAotKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHBy b3ZlZCBieSB0aGUgS0RFIEZyZWUKLSsqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZvdW5kYXRpb24gYW5kIGFw cGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMwotKyoqIGlu Y2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBm b2xsb3dpbmcKLSsqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCi0rKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKLSsqKiBodHRwczovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzL2dwbC0zLjAuaHRtbC4KLSsqKgotKyoqICRRVF9FTkRfTElDRU5TRSQKLSsqKgotKyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCi0rCi0rI2lmbmRlZiBRWENCQ0xJUEJPQVJEX0gKLSsjZGVmaW5l IFFYQ0JDTElQQk9BUkRfSAotKwotKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtY2xpcGJvYXJkLmg+ Ci0rI2luY2x1ZGUgPHF4Y2JvYmplY3QuaD4KLSsjaW5jbHVkZSA8eGNiL3hjYi5oPgotKyNpbmNs dWRlIDx4Y2IveGZpeGVzLmg+Ci0rCi0rI2luY2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgotKwotK1FU X0JFR0lOX05BTUVTUEFDRQotKwotKyNpZm5kZWYgUVRfTk9fQ0xJUEJPQVJECi0rCi0rY2xhc3Mg UVhjYkNvbm5lY3Rpb247Ci0rY2xhc3MgUVhjYlNjcmVlbjsKLStjbGFzcyBRWGNiQ2xpcGJvYXJk OwotK2NsYXNzIFFYY2JDbGlwYm9hcmRNaW1lOwotKwotK2NsYXNzIFFYY2JDbGlwYm9hcmRUcmFu c2FjdGlvbiA6IHB1YmxpYyBRT2JqZWN0Ci0rewotKyAgICBRX09CSkVDVAotK3B1YmxpYzoKLSsg ICAgUVhjYkNsaXBib2FyZFRyYW5zYWN0aW9uKFFYY2JDbGlwYm9hcmQgKmNsaXBib2FyZCwgeGNi X3dpbmRvd190IHcsIHhjYl9hdG9tX3QgcCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBR Qnl0ZUFycmF5IGQsIHhjYl9hdG9tX3QgdCwgaW50IGYpOwotKyAgICB+UVhjYkNsaXBib2FyZFRy YW5zYWN0aW9uKCk7Ci0rCi0rICAgIGJvb2wgdXBkYXRlSW5jcmVtZW50YWxQcm9wZXJ0eShjb25z dCB4Y2JfcHJvcGVydHlfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KTsKLSsKLStwcm90ZWN0ZWQ6Ci0r ICAgIHZvaWQgdGltZXJFdmVudChRVGltZXJFdmVudCAqZXYpIG92ZXJyaWRlOwotKwotK3ByaXZh dGU6Ci0rICAgIFFYY2JDbGlwYm9hcmQgKm1fY2xpcGJvYXJkOwotKyAgICB4Y2Jfd2luZG93X3Qg bV93aW5kb3c7Ci0rICAgIHhjYl9hdG9tX3QgbV9wcm9wZXJ0eTsKLSsgICAgUUJ5dGVBcnJheSBt X2RhdGE7Ci0rICAgIHhjYl9hdG9tX3QgbV90YXJnZXQ7Ci0rICAgIHVpbnQ4X3QgbV9mb3JtYXQ7 Ci0rICAgIHVpbnQgbV9vZmZzZXQgPSAwOwotKyAgICBpbnQgbV9hYm9ydFRpbWVySWQgPSAwOwot K307Ci0rCi0rY2xhc3MgUVhjYkNsaXBib2FyZCA6IHB1YmxpYyBRWGNiT2JqZWN0LCBwdWJsaWMg UVBsYXRmb3JtQ2xpcGJvYXJkCi0rewotK3B1YmxpYzoKLSsgICAgUVhjYkNsaXBib2FyZChRWGNi Q29ubmVjdGlvbiAqY29ubmVjdGlvbik7Ci0rICAgIH5RWGNiQ2xpcGJvYXJkKCk7Ci0rCi0rICAg IFFNaW1lRGF0YSAqbWltZURhdGEoUUNsaXBib2FyZDo6TW9kZSBtb2RlKSBvdmVycmlkZTsKLSsg ICAgdm9pZCBzZXRNaW1lRGF0YShRTWltZURhdGEgKmRhdGEsIFFDbGlwYm9hcmQ6Ok1vZGUgbW9k ZSkgb3ZlcnJpZGU7Ci0rCi0rICAgIGJvb2wgc3VwcG9ydHNNb2RlKFFDbGlwYm9hcmQ6Ok1vZGUg bW9kZSkgY29uc3Qgb3ZlcnJpZGU7Ci0rICAgIGJvb2wgb3duc01vZGUoUUNsaXBib2FyZDo6TW9k ZSBtb2RlKSBjb25zdCBvdmVycmlkZTsKLSsKLSsgICAgUVhjYlNjcmVlbiAqc2NyZWVuKCkgY29u c3Q7Ci0rCi0rICAgIHhjYl93aW5kb3dfdCByZXF1ZXN0b3IoKSBjb25zdDsKLSsgICAgdm9pZCBz ZXRSZXF1ZXN0b3IoeGNiX3dpbmRvd190IHdpbmRvdyk7Ci0rCi0rICAgIHhjYl93aW5kb3dfdCBv d25lcigpIGNvbnN0OwotKwotKyAgICB2b2lkIGhhbmRsZVNlbGVjdGlvblJlcXVlc3QoeGNiX3Nl bGVjdGlvbl9yZXF1ZXN0X2V2ZW50X3QgKmV2ZW50KTsKLSsgICAgdm9pZCBoYW5kbGVTZWxlY3Rp b25DbGVhclJlcXVlc3QoeGNiX3NlbGVjdGlvbl9jbGVhcl9ldmVudF90ICpldmVudCk7Ci0rICAg IHZvaWQgaGFuZGxlWEZpeGVzU2VsZWN0aW9uUmVxdWVzdCh4Y2JfeGZpeGVzX3NlbGVjdGlvbl9u b3RpZnlfZXZlbnRfdCAqZXZlbnQpOwotKwotKyAgICBib29sIGNsaXBib2FyZFJlYWRQcm9wZXJ0 eSh4Y2Jfd2luZG93X3Qgd2luLCB4Y2JfYXRvbV90IHByb3BlcnR5LCBib29sIGRlbGV0ZVByb3Bl cnR5LCBRQnl0ZUFycmF5ICpidWZmZXIsIGludCAqc2l6ZSwgeGNiX2F0b21fdCAqdHlwZSwgaW50 ICpmb3JtYXQpOwotKyAgICBRQnl0ZUFycmF5IGNsaXBib2FyZFJlYWRJbmNyZW1lbnRhbFByb3Bl cnR5KHhjYl93aW5kb3dfdCB3aW4sIHhjYl9hdG9tX3QgcHJvcGVydHksIGludCBuYnl0ZXMsIGJv b2wgbnVsbHRlcm0pOwotKwotKyAgICBRQnl0ZUFycmF5IGdldERhdGFJbkZvcm1hdCh4Y2JfYXRv bV90IG1vZGVBdG9tLCB4Y2JfYXRvbV90IGZtdGF0b20pOwotKwotKyAgICBib29sIGhhbmRsZVBy b3BlcnR5Tm90aWZ5KGNvbnN0IHhjYl9nZW5lcmljX2V2ZW50X3QgKmV2ZW50KTsKLSsKLSsgICAg eGNiX3dpbmRvd190IGdldFNlbGVjdGlvbk93bmVyKHhjYl9hdG9tX3QgYXRvbSkgY29uc3Q7Ci0r ICAgIFFCeXRlQXJyYXkgZ2V0U2VsZWN0aW9uKHhjYl9hdG9tX3Qgc2VsZWN0aW9uLCB4Y2JfYXRv bV90IHRhcmdldCwgeGNiX2F0b21fdCBwcm9wZXJ0eSwgeGNiX3RpbWVzdGFtcF90IHQgPSAwKTsK LSsKLSsgICAgaW50IGluY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4UHJvcGVydHlSZXF1 ZXN0RGF0YUJ5dGVzOyB9Ci0rICAgIGludCBjbGlwYm9hcmRUaW1lb3V0KCkgY29uc3QgeyByZXR1 cm4gY2xpcGJvYXJkX3RpbWVvdXQ7IH0KLSsKLSsgICAgdm9pZCByZW1vdmVUcmFuc2FjdGlvbih4 Y2Jfd2luZG93X3Qgd2luZG93KSB7IG1fdHJhbnNhY3Rpb25zLnJlbW92ZSh3aW5kb3cpOyB9Ci0r Ci0rcHJpdmF0ZToKLSsgICAgeGNiX2dlbmVyaWNfZXZlbnRfdCAqd2FpdEZvckNsaXBib2FyZEV2 ZW50KHhjYl93aW5kb3dfdCB3aW5kb3csIGludCB0eXBlLCBib29sIGNoZWNrTWFuYWdlciA9IGZh bHNlKTsKLSsKLSsgICAgeGNiX2F0b21fdCBzZW5kVGFyZ2V0c1NlbGVjdGlvbihRTWltZURhdGEg KmQsIHhjYl93aW5kb3dfdCB3aW5kb3csIHhjYl9hdG9tX3QgcHJvcGVydHkpOwotKyAgICB4Y2Jf YXRvbV90IHNlbmRTZWxlY3Rpb24oUU1pbWVEYXRhICpkLCB4Y2JfYXRvbV90IHRhcmdldCwgeGNi X3dpbmRvd190IHdpbmRvdywgeGNiX2F0b21fdCBwcm9wZXJ0eSk7Ci0rCi0rICAgIHhjYl9hdG9t X3QgYXRvbUZvck1vZGUoUUNsaXBib2FyZDo6TW9kZSBtb2RlKSBjb25zdDsKLSsgICAgUUNsaXBi b2FyZDo6TW9kZSBtb2RlRm9yQXRvbSh4Y2JfYXRvbV90IGF0b20pIGNvbnN0OwotKwotKyAgICAv LyBTZWxlY3Rpb24gYW5kIENsaXBib2FyZAotKyAgICBRU2NvcGVkUG9pbnRlcjxRWGNiQ2xpcGJv YXJkTWltZT4gbV94Q2xpcGJvYXJkWzJdOwotKyAgICBRTWltZURhdGEgKm1fY2xpZW50Q2xpcGJv YXJkWzJdOwotKyAgICB4Y2JfdGltZXN0YW1wX3QgbV90aW1lc3RhbXBbMl07Ci0rCi0rICAgIHhj Yl93aW5kb3dfdCBtX3JlcXVlc3RvciA9IFhDQl9OT05FOwotKyAgICB4Y2Jfd2luZG93X3QgbV9v d25lciA9IFhDQl9OT05FOwotKwotKyAgICBzdGF0aWMgY29uc3QgaW50IGNsaXBib2FyZF90aW1l b3V0OwotKwotKyAgICBpbnQgbV9tYXhQcm9wZXJ0eVJlcXVlc3REYXRhQnl0ZXMgPSAwOwotKyAg ICBib29sIG1fY2xpcGJvYXJkX2Nsb3NpbmcgPSBmYWxzZTsKLSsgICAgeGNiX3RpbWVzdGFtcF90 IG1faW5jcl9yZWNlaXZlX3RpbWUgPSAwOwotKwotKyAgICB1c2luZyBUcmFuc2FjdGlvbk1hcCA9 IFFNYXA8eGNiX3dpbmRvd190LCBRWGNiQ2xpcGJvYXJkVHJhbnNhY3Rpb24gKj47Ci0rICAgIFRy YW5zYWN0aW9uTWFwIG1fdHJhbnNhY3Rpb25zOwotK307Ci0rCi0rI2VuZGlmIC8vIFFUX05PX0NM SVBCT0FSRAotKwotK1FUX0VORF9OQU1FU1BBQ0UKLSsKLSsjZW5kaWYgLy8gUVhDQkNMSVBCT0FS RF9ICi1kaWZmIC11ck4gcXQ1ZHhjYi1wbHVnaW4tMS4yLjUub2xkL3BsYXRmb3JtcGx1Z2luL2xp YnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2Jjb25uZWN0aW9uLmggcXQ1ZHhjYi1wbHVnaW4tMS4y LjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmNvbm5lY3Rpb24u aAotLS0tIHF0NWR4Y2ItcGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2Jx cGEtZGV2LzUuMTMuMC9xeGNiY29ubmVjdGlvbi5oCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgcXQ1ZHhjYi1wbHVnaW4tMS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1 eGNicXBhLWRldi81LjEzLjAvcXhjYmNvbm5lY3Rpb24uaAkyMDE5LTA3LTEyIDIwOjE5OjU1Ljkw Mjk4NjUwOCArMDAwMAotQEAgLTAsMCArMSw0MTcgQEAKLSsvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot KyoqCi0rKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KLSsqKiBDb250 YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCi0rKioKLSsqKiBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgcGx1Z2lucyBvZiB0aGUgUXQgVG9vbGtpdC4KLSsqKgotKyoqICRRVF9CRUdJ Tl9MSUNFTlNFOkxHUEwkCi0rKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCi0rKiogTGljZW5z ZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmls ZSBpbgotKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVu dCBwcm92aWRlZCB3aXRoIHRoZQotKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBh Y2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgotKyoqIGEgd3JpdHRlbiBhZ3Jl ZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1z Ci0rKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlv bnMuIEZvciBmdXJ0aGVyCi0rKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQg aHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KLSsqKgotKyoqIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBVc2FnZQotKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkg YmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKLSsqKiBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK LSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBp bmNsdWRlZCBpbiB0aGUKLSsqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3 IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KLSsqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCi0rKiogd2lsbCBi ZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KLSsqKgot KyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwg dGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rKiogR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBH TlUgR2VuZXJhbAotKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVy c2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKLSsqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGlj ZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZvdW5kYXRp b24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BM MwotKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2 aWV3IHRoZSBmb2xsb3dpbmcKLSsqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCi0rKiogYmUgbWV0OiBodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKLSsqKiBodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KLSsqKgotKyoqICRRVF9FTkRfTElDRU5TRSQK LSsqKgotKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0rCi0rI2lmbmRlZiBRWENCQ09OTkVDVElPTl9I Ci0rI2RlZmluZSBRWENCQ09OTkVDVElPTl9ICi0rCi0rI2luY2x1ZGUgPHhjYi94Y2IuaD4KLSsj aW5jbHVkZSA8eGNiL3JhbmRyLmg+Ci0rCi0rI2luY2x1ZGUgPFF0Q29yZS9RVGltZXI+Ci0rI2lu Y2x1ZGUgPFF0R3VpL3ByaXZhdGUvcXRndWlnbG9iYWxfcC5oPgotKyNpbmNsdWRlICJxeGNiZXhw b3J0LmgiCi0rI2luY2x1ZGUgPFFIYXNoPgotKyNpbmNsdWRlIDxRTGlzdD4KLSsjaW5jbHVkZSA8 UVZlY3Rvcj4KLSsjaW5jbHVkZSA8cXBhL3F3aW5kb3dzeXN0ZW1pbnRlcmZhY2UuaD4KLSsjaW5j bHVkZSA8UXRDb3JlL1FMb2dnaW5nQ2F0ZWdvcnk+Ci0rI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRl L3FnbG9iYWxfcC5oPgotKwotKyNpbmNsdWRlICJxeGNiZXZlbnRxdWV1ZS5oIgotKyNpbmNsdWRl ICJxeGNiY29ubmVjdGlvbl9iYXNpYy5oIgotKwotKyNpZiBRVF9DT05GSUcodGFibGV0ZXZlbnQp Ci0rI2luY2x1ZGUgPFFUYWJsZXRFdmVudD4KLSsjZW5kaWYKLSsKLStRVF9CRUdJTl9OQU1FU1BB Q0UKLSsKLStRX0RFQ0xBUkVfTE9HR0lOR19DQVRFR09SWShsY1FwYVhJbnB1dCkKLStRX0RFQ0xB UkVfTE9HR0lOR19DQVRFR09SWShsY1FwYVhJbnB1dERldmljZXMpCi0rUV9ERUNMQVJFX0xPR0dJ TkdfQ0FURUdPUlkobGNRcGFYSW5wdXRFdmVudHMpCi0rUV9ERUNMQVJFX0xPR0dJTkdfQ0FURUdP UlkobGNRcGFTY3JlZW4pCi0rUV9ERUNMQVJFX0xPR0dJTkdfQ0FURUdPUlkobGNRcGFFdmVudHMp Ci0rUV9ERUNMQVJFX0xPR0dJTkdfQ0FURUdPUlkobGNRcGFQZWVrZXIpCi0rUV9ERUNMQVJFX0xP R0dJTkdfQ0FURUdPUlkobGNRcGFLZXlib2FyZCkKLStRX0RFQ0xBUkVfTE9HR0lOR19DQVRFR09S WShsY1FwYUNsaXBib2FyZCkKLStRX0RFQ0xBUkVfTE9HR0lOR19DQVRFR09SWShsY1FwYVhEbmQp Ci0rUV9ERUNMQVJFX0xPR0dJTkdfQ0FURUdPUlkobGNRcGFFdmVudFJlYWRlcikKLSsKLStjbGFz cyBRWGNiVmlydHVhbERlc2t0b3A7Ci0rY2xhc3MgUVhjYlNjcmVlbjsKLStjbGFzcyBRWGNiV2lu ZG93OwotK2NsYXNzIFFYY2JEcmFnOwotK2NsYXNzIFFYY2JLZXlib2FyZDsKLStjbGFzcyBRWGNi Q2xpcGJvYXJkOwotK2NsYXNzIFFYY2JXTVN1cHBvcnQ7Ci0rY2xhc3MgUVhjYk5hdGl2ZUludGVy ZmFjZTsKLStjbGFzcyBRWGNiU3lzdGVtVHJheVRyYWNrZXI7Ci0rY2xhc3MgUVhjYkdsSW50ZWdy YXRpb247Ci0rCi0rY2xhc3MgUVhjYldpbmRvd0V2ZW50TGlzdGVuZXIKLSt7Ci0rcHVibGljOgot KyAgICB2aXJ0dWFsIH5RWGNiV2luZG93RXZlbnRMaXN0ZW5lcigpIHt9Ci0rICAgIHZpcnR1YWwg Ym9vbCBoYW5kbGVOYXRpdmVFdmVudCh4Y2JfZ2VuZXJpY19ldmVudF90ICopIHsgcmV0dXJuIGZh bHNlOyB9Ci0rCi0rICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFeHBvc2VFdmVudChjb25zdCB4Y2Jf ZXhwb3NlX2V2ZW50X3QgKikge30KLSsgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNsaWVudE1lc3Nh Z2VFdmVudChjb25zdCB4Y2JfY2xpZW50X21lc3NhZ2VfZXZlbnRfdCAqKSB7fQotKyAgICB2aXJ0 dWFsIHZvaWQgaGFuZGxlQ29uZmlndXJlTm90aWZ5RXZlbnQoY29uc3QgeGNiX2NvbmZpZ3VyZV9u b3RpZnlfZXZlbnRfdCAqKSB7fQotKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTWFwTm90aWZ5RXZl bnQoY29uc3QgeGNiX21hcF9ub3RpZnlfZXZlbnRfdCAqKSB7fQotKyAgICB2aXJ0dWFsIHZvaWQg aGFuZGxlVW5tYXBOb3RpZnlFdmVudChjb25zdCB4Y2JfdW5tYXBfbm90aWZ5X2V2ZW50X3QgKikg e30KLSsgICAgdmlydHVhbCB2b2lkIGhhbmRsZURlc3Ryb3lOb3RpZnlFdmVudChjb25zdCB4Y2Jf ZGVzdHJveV9ub3RpZnlfZXZlbnRfdCAqKSB7fQotKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQnV0 dG9uUHJlc3NFdmVudChjb25zdCB4Y2JfYnV0dG9uX3ByZXNzX2V2ZW50X3QgKikge30KLSsgICAg dmlydHVhbCB2b2lkIGhhbmRsZUJ1dHRvblJlbGVhc2VFdmVudChjb25zdCB4Y2JfYnV0dG9uX3Jl bGVhc2VfZXZlbnRfdCAqKSB7fQotKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW90aW9uTm90aWZ5 RXZlbnQoY29uc3QgeGNiX21vdGlvbl9ub3RpZnlfZXZlbnRfdCAqKSB7fQotKyAgICB2aXJ0dWFs IHZvaWQgaGFuZGxlRW50ZXJOb3RpZnlFdmVudChjb25zdCB4Y2JfZW50ZXJfbm90aWZ5X2V2ZW50 X3QgKikge30KLSsgICAgdmlydHVhbCB2b2lkIGhhbmRsZUxlYXZlTm90aWZ5RXZlbnQoY29uc3Qg eGNiX2xlYXZlX25vdGlmeV9ldmVudF90ICopIHt9Ci0rICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVG b2N1c0luRXZlbnQoY29uc3QgeGNiX2ZvY3VzX2luX2V2ZW50X3QgKikge30KLSsgICAgdmlydHVh bCB2b2lkIGhhbmRsZUZvY3VzT3V0RXZlbnQoY29uc3QgeGNiX2ZvY3VzX291dF9ldmVudF90ICop IHt9Ci0rICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KGNvbnN0IHhj Yl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCAqKSB7fQotKyNpZiBRVF9DT05GSUcoeGNiX3hpbnB1 dCkKLSsgICAgdmlydHVhbCB2b2lkIGhhbmRsZVhJTW91c2VFdmVudCh4Y2JfZ2VfZXZlbnRfdCAq LCBRdDo6TW91c2VFdmVudFNvdXJjZSA9IFF0OjpNb3VzZUV2ZW50Tm90U3ludGhlc2l6ZWQpIHt9 Ci0rICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVYSUVudGVyTGVhdmUoeGNiX2dlX2V2ZW50X3QgKikg e30KLSsjZW5kaWYKLSsgICAgdmlydHVhbCBRWGNiV2luZG93ICp0b1dpbmRvdygpIHsgcmV0dXJu IDA7IH0KLSt9OwotKwotK3R5cGVkZWYgUUhhc2g8eGNiX3dpbmRvd190LCBRWGNiV2luZG93RXZl bnRMaXN0ZW5lciAqPiBXaW5kb3dNYXBwZXI7Ci0rCi0rY2xhc3MgUVhjYlN5bmNXaW5kb3dSZXF1 ZXN0IDogcHVibGljIFFFdmVudAotK3sKLStwdWJsaWM6Ci0rICAgIFFYY2JTeW5jV2luZG93UmVx dWVzdChRWGNiV2luZG93ICp3KSA6IFFFdmVudChRRXZlbnQ6OlR5cGUoUUV2ZW50OjpVc2VyICsg MSkpLCBtX3dpbmRvdyh3KSB7IH0KLSsKLSsgICAgUVhjYldpbmRvdyAqd2luZG93KCkgY29uc3Qg eyByZXR1cm4gbV93aW5kb3c7IH0KLSsgICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0rCi0rcHJpdmF0 ZToKLSsgICAgUVhjYldpbmRvdyAqbV93aW5kb3c7Ci0rfTsKLSsKLStjbGFzcyBRX1hDQl9FWFBP UlQgUVhjYkNvbm5lY3Rpb24gOiBwdWJsaWMgUVhjYkJhc2ljQ29ubmVjdGlvbgotK3sKLSsgICAg UV9PQkpFQ1QKLStwdWJsaWM6Ci0rICAgIFFYY2JDb25uZWN0aW9uKFFYY2JOYXRpdmVJbnRlcmZh Y2UgKm5hdGl2ZUludGVyZmFjZSwgYm9vbCBjYW5HcmFiU2VydmVyLCB4Y2JfdmlzdWFsaWRfdCBk ZWZhdWx0VmlzdWFsSWQsIGNvbnN0IGNoYXIgKmRpc3BsYXlOYW1lID0gMCk7Ci0rICAgIH5RWGNi Q29ubmVjdGlvbigpOwotKwotKyAgICBRWGNiQ29ubmVjdGlvbiAqY29ubmVjdGlvbigpIGNvbnN0 IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UVhjYkNvbm5lY3Rpb24gKj4odGhpcyk7IH0KLSsgICAgUVhj YkV2ZW50UXVldWUgKmV2ZW50UXVldWUoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50UXVldWU7IH0K LSsKLSsgICAgY29uc3QgUUxpc3Q8UVhjYlZpcnR1YWxEZXNrdG9wICo+ICZ2aXJ0dWFsRGVza3Rv cHMoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxEZXNrdG9wczsgfQotKyAgICBjb25zdCBRTGlz dDxRWGNiU2NyZWVuICo+ICZzY3JlZW5zKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5zOyB9Ci0r ICAgIFFYY2JWaXJ0dWFsRGVza3RvcCAqcHJpbWFyeVZpcnR1YWxEZXNrdG9wKCkgY29uc3Qgewot KyAgICAgICAgcmV0dXJuIG1fdmlydHVhbERlc2t0b3BzLnZhbHVlKHByaW1hcnlTY3JlZW5OdW1i ZXIoKSk7Ci0rICAgIH0KLSsgICAgUVhjYlNjcmVlbiAqcHJpbWFyeVNjcmVlbigpIGNvbnN0Owot KwotKyAgICBjb25zdCB4Y2JfZm9ybWF0X3QgKmZvcm1hdEZvckRlcHRoKHVpbnQ4X3QgZGVwdGgp IGNvbnN0OwotKwotKyAgICBib29sIGltYWdlTmVlZHNFbmRpYW5Td2FwKCkgY29uc3QKLSsgICAg ewotKyAgICAgICAgaWYgKCFoYXNTaG0oKSkKLSsgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8v IFRoZSBub24tU2htIHBhdGggZG9lcyBpdHMgb3duIHN3YXBwaW5nCi0rI2lmIFFfQllURV9PUkRF UiA9PSBRX0JJR19FTkRJQU4KLSsgICAgICAgIHJldHVybiBzZXR1cCgpLT5pbWFnZV9ieXRlX29y ZGVyICE9IFhDQl9JTUFHRV9PUkRFUl9NU0JfRklSU1Q7Ci0rI2Vsc2UKLSsgICAgICAgIHJldHVy biBzZXR1cCgpLT5pbWFnZV9ieXRlX29yZGVyICE9IFhDQl9JTUFHRV9PUkRFUl9MU0JfRklSU1Q7 Ci0rI2VuZGlmCi0rICAgIH0KLSsKLSsgICAgUVhjYktleWJvYXJkICprZXlib2FyZCgpIGNvbnN0 IHsgcmV0dXJuIG1fa2V5Ym9hcmQ7IH0KLSsKLSsjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAotKyAg ICBRWGNiQ2xpcGJvYXJkICpjbGlwYm9hcmQoKSBjb25zdCB7IHJldHVybiBtX2NsaXBib2FyZDsg fQotKyNlbmRpZgotKyNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCi0rICAgIFFYY2JEcmFnICpk cmFnKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnOyB9Ci0rI2VuZGlmCi0rCi0rICAgIFFYY2JXTVN1 cHBvcnQgKndtU3VwcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fd21TdXBwb3J0LmRhdGEoKTsgfQot KyAgICB4Y2Jfd2luZG93X3Qgcm9vdFdpbmRvdygpOwotKyAgICB4Y2Jfd2luZG93X3QgY2xpZW50 TGVhZGVyKCk7Ci0rCi0rICAgIGJvb2wgaGFzRGVmYXVsdFZpc3VhbElkKCkgY29uc3QgeyByZXR1 cm4gbV9kZWZhdWx0VmlzdWFsSWQgIT0gVUlOVF9NQVg7IH0KLSsgICAgeGNiX3Zpc3VhbGlkX3Qg ZGVmYXVsdFZpc3VhbElkKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0VmlzdWFsSWQ7IH0KLSsK LSsgICAgdm9pZCBzeW5jKCk7Ci0rCi0rICAgIHZvaWQgaGFuZGxlWGNiRXJyb3IoeGNiX2dlbmVy aWNfZXJyb3JfdCAqZXJyb3IpOwotKyAgICB2b2lkIHByaW50WGNiRXJyb3IoY29uc3QgY2hhciAq bWVzc2FnZSwgeGNiX2dlbmVyaWNfZXJyb3JfdCAqZXJyb3IpOwotKyAgICB2b2lkIGhhbmRsZVhj YkV2ZW50KHhjYl9nZW5lcmljX2V2ZW50X3QgKmV2ZW50KTsKLSsgICAgdm9pZCBwcmludFhjYkV2 ZW50KGNvbnN0IFFMb2dnaW5nQ2F0ZWdvcnkgJmxvZywgY29uc3QgY2hhciAqbWVzc2FnZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgIHhjYl9nZW5lcmljX2V2ZW50X3QgKmV2ZW50KSBjb25zdDsK LSsKLSsgICAgdm9pZCBhZGRXaW5kb3dFdmVudExpc3RlbmVyKHhjYl93aW5kb3dfdCBpZCwgUVhj YldpbmRvd0V2ZW50TGlzdGVuZXIgKmV2ZW50TGlzdGVuZXIpOwotKyAgICB2b2lkIHJlbW92ZVdp bmRvd0V2ZW50TGlzdGVuZXIoeGNiX3dpbmRvd190IGlkKTsKLSsgICAgUVhjYldpbmRvd0V2ZW50 TGlzdGVuZXIgKndpbmRvd0V2ZW50TGlzdGVuZXJGcm9tSWQoeGNiX3dpbmRvd190IGlkKTsKLSsg ICAgUVhjYldpbmRvdyAqcGxhdGZvcm1XaW5kb3dGcm9tSWQoeGNiX3dpbmRvd190IGlkKTsKLSsK LSsgICAgaW5saW5lIHhjYl90aW1lc3RhbXBfdCB0aW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1l OyB9Ci0rICAgIGlubGluZSB2b2lkIHNldFRpbWUoeGNiX3RpbWVzdGFtcF90IHQpIHsgaWYgKHRp bWVHcmVhdGVyVGhhbih0LCBtX3RpbWUpKSBtX3RpbWUgPSB0OyB9Ci0rCi0rICAgIGlubGluZSB4 Y2JfdGltZXN0YW1wX3QgbmV0V21Vc2VyVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0V21Vc2Vy VGltZTsgfQotKyAgICBpbmxpbmUgdm9pZCBzZXROZXRXbVVzZXJUaW1lKHhjYl90aW1lc3RhbXBf dCB0KSB7IGlmICh0aW1lR3JlYXRlclRoYW4odCwgbV9uZXRXbVVzZXJUaW1lKSkgbV9uZXRXbVVz ZXJUaW1lID0gdDsgfQotKwotKyAgICB4Y2JfdGltZXN0YW1wX3QgZ2V0VGltZXN0YW1wKCk7Ci0r ICAgIHhjYl93aW5kb3dfdCBnZXRTZWxlY3Rpb25Pd25lcih4Y2JfYXRvbV90IGF0b20pIGNvbnN0 OwotKyAgICB4Y2Jfd2luZG93X3QgZ2V0UXRTZWxlY3Rpb25Pd25lcigpOwotKwotKyAgICB2b2lk IHNldEJ1dHRvblN0YXRlKFF0OjpNb3VzZUJ1dHRvbiBidXR0b24sIGJvb2wgZG93bik7Ci0rICAg IFF0OjpNb3VzZUJ1dHRvbnMgYnV0dG9uU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvblN0 YXRlOyB9Ci0rICAgIFF0OjpNb3VzZUJ1dHRvbiBidXR0b24oKSBjb25zdCB7IHJldHVybiBtX2J1 dHRvbjsgfQotKyAgICBRdDo6TW91c2VCdXR0b24gdHJhbnNsYXRlTW91c2VCdXR0b24oeGNiX2J1 dHRvbl90IHMpOwotKwotKyAgICBRWGNiV2luZG93ICpmb2N1c1dpbmRvdygpIGNvbnN0IHsgcmV0 dXJuIG1fZm9jdXNXaW5kb3c7IH0KLSsgICAgdm9pZCBzZXRGb2N1c1dpbmRvdyhRV2luZG93ICop OwotKyAgICBRWGNiV2luZG93ICptb3VzZUdyYWJiZXIoKSBjb25zdCB7IHJldHVybiBtX21vdXNl R3JhYmJlcjsgfQotKyAgICB2b2lkIHNldE1vdXNlR3JhYmJlcihRWGNiV2luZG93ICopOwotKyAg ICBRWGNiV2luZG93ICptb3VzZVByZXNzV2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZVBy ZXNzV2luZG93OyB9Ci0rICAgIHZvaWQgc2V0TW91c2VQcmVzc1dpbmRvdyhRWGNiV2luZG93ICop OwotKwotKyAgICBRQnl0ZUFycmF5IHN0YXJ0dXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnR1 cElkOyB9Ci0rICAgIHZvaWQgc2V0U3RhcnR1cElkKGNvbnN0IFFCeXRlQXJyYXkgJm5leHRJZCkg eyBtX3N0YXJ0dXBJZCA9IG5leHRJZDsgfQotKyAgICB2b2lkIGNsZWFyU3RhcnR1cElkKCkgeyBt X3N0YXJ0dXBJZC5jbGVhcigpOyB9Ci0rCi0rICAgIHZvaWQgZ3JhYlNlcnZlcigpOwotKyAgICB2 b2lkIHVuZ3JhYlNlcnZlcigpOwotKwotKyAgICBib29sIGlzVW5pdHkoKSBjb25zdCB7IHJldHVy biBtX3hkZ0N1cnJlbnREZXNrdG9wID09ICJ1bml0eSI7IH0KLSsgICAgYm9vbCBpc0dub21lKCkg Y29uc3QgeyByZXR1cm4gbV94ZGdDdXJyZW50RGVza3RvcCA9PSAiZ25vbWUiOyB9Ci0rCi0rICAg IFFYY2JOYXRpdmVJbnRlcmZhY2UgKm5hdGl2ZUludGVyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f bmF0aXZlSW50ZXJmYWNlOyB9Ci0rCi0rICAgIFFYY2JTeXN0ZW1UcmF5VHJhY2tlciAqc3lzdGVt VHJheVRyYWNrZXIoKSBjb25zdDsKLSsKLSsgICAgUXQ6Ok1vdXNlQnV0dG9ucyBxdWVyeU1vdXNl QnV0dG9ucygpIGNvbnN0OwotKyAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgcXVlcnlLZXlib2Fy ZE1vZGlmaWVycygpIGNvbnN0OwotKwotKyAgICBib29sIGlzVXNlcklucHV0RXZlbnQoeGNiX2dl bmVyaWNfZXZlbnRfdCAqZXZlbnQpIGNvbnN0OwotKwotKyNpZiBRVF9DT05GSUcoeGNiX3hpbnB1 dCkKLSsgICAgdm9pZCB4aTJTZWxlY3RTdGF0ZUV2ZW50cygpOwotKyAgICB2b2lkIHhpMlNlbGVj dERldmljZUV2ZW50cyh4Y2Jfd2luZG93X3Qgd2luZG93KTsKLSsgICAgdm9pZCB4aTJTZWxlY3RE ZXZpY2VFdmVudHNDb21wYXRpYmlsaXR5KHhjYl93aW5kb3dfdCB3aW5kb3cpOwotKyAgICBib29s IHhpMlNldE1vdXNlR3JhYkVuYWJsZWQoeGNiX3dpbmRvd190IHcsIGJvb2wgZ3JhYik7Ci0rICAg IGJvb2wgeGkyTW91c2VFdmVudHNEaXNhYmxlZCgpIGNvbnN0OwotKyAgICBRdDo6TW91c2VCdXR0 b24geGlUb1F0TW91c2VCdXR0b24odWludDMyX3QgYik7Ci0rICAgIHZvaWQgeGkyVXBkYXRlU2Ny b2xsaW5nRGV2aWNlcygpOwotKyAgICBib29sIHN0YXJ0U3lzdGVtTW92ZVJlc2l6ZUZvclRvdWNo QmVnaW4oeGNiX3dpbmRvd190IHdpbmRvdywgY29uc3QgUVBvaW50ICZwb2ludCwgaW50IGNvcm5l cik7Ci0rICAgIHZvaWQgYWJvcnRTeXN0ZW1Nb3ZlUmVzaXplRm9yVG91Y2goKTsKLSsgICAgYm9v bCBpc1RvdWNoU2NyZWVuKGludCBpZCk7Ci0rI2VuZGlmCi0rCi0rICAgIGJvb2wgY2FuR3JhYigp IGNvbnN0IHsgcmV0dXJuIG1fY2FuR3JhYlNlcnZlcjsgfQotKwotKyAgICBRWGNiR2xJbnRlZ3Jh dGlvbiAqZ2xJbnRlZ3JhdGlvbigpIGNvbnN0OwotKwotKyAgICB2b2lkIGZsdXNoKCkgeyB4Y2Jf Zmx1c2goeGNiX2Nvbm5lY3Rpb24oKSk7IH0KLSsgICAgdm9pZCBwcm9jZXNzWGNiRXZlbnRzKFFF dmVudExvb3A6OlByb2Nlc3NFdmVudHNGbGFncyBmbGFncyk7Ci0rCi0rICAgIFFUaW1lciAmZm9j dXNJblRpbWVyKCkgeyByZXR1cm4gbV9mb2N1c0luVGltZXI7IH0KLSsKLStwcm90ZWN0ZWQ6Ci0r ICAgIGJvb2wgZXZlbnQoUUV2ZW50ICplKSBvdmVycmlkZTsKLSsKLStwcml2YXRlOgotKyAgICB2 b2lkIHhyYW5kclNlbGVjdEV2ZW50cygpOwotKyAgICBRWGNiU2NyZWVuKiBmaW5kU2NyZWVuRm9y Q3J0Yyh4Y2Jfd2luZG93X3Qgcm9vdFdpbmRvdywgeGNiX3JhbmRyX2NydGNfdCBjcnRjKSBjb25z dDsKLSsgICAgUVhjYlNjcmVlbiogZmluZFNjcmVlbkZvck91dHB1dCh4Y2Jfd2luZG93X3Qgcm9v dFdpbmRvdywgeGNiX3JhbmRyX291dHB1dF90IG91dHB1dCkgY29uc3Q7Ci0rICAgIFFYY2JWaXJ0 dWFsRGVza3RvcCogdmlydHVhbERlc2t0b3BGb3JSb290V2luZG93KHhjYl93aW5kb3dfdCByb290 V2luZG93KSBjb25zdDsKLSsgICAgdm9pZCB1cGRhdGVTY3JlZW5zKGNvbnN0IHhjYl9yYW5kcl9u b3RpZnlfZXZlbnRfdCAqZXZlbnQpOwotKyAgICBib29sIGNoZWNrT3V0cHV0SXNQcmltYXJ5KHhj Yl93aW5kb3dfdCByb290V2luZG93LCB4Y2JfcmFuZHJfb3V0cHV0X3Qgb3V0cHV0KTsKLSsgICAg dm9pZCB1cGRhdGVTY3JlZW4oUVhjYlNjcmVlbiAqc2NyZWVuLCBjb25zdCB4Y2JfcmFuZHJfb3V0 cHV0X2NoYW5nZV90ICZvdXRwdXRDaGFuZ2UpOwotKyAgICBRWGNiU2NyZWVuICpjcmVhdGVTY3Jl ZW4oUVhjYlZpcnR1YWxEZXNrdG9wICp2aXJ0dWFsRGVza3RvcCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHhjYl9yYW5kcl9vdXRwdXRfY2hhbmdlX3QgJm91dHB1dENoYW5n ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjYl9yYW5kcl9nZXRfb3V0cHV0X2lu Zm9fcmVwbHlfdCAqb3V0cHV0SW5mbyk7Ci0rICAgIHZvaWQgZGVzdHJveVNjcmVlbihRWGNiU2Ny ZWVuICpzY3JlZW4pOwotKyAgICB2b2lkIGluaXRpYWxpemVTY3JlZW5zKCk7Ci0rICAgIGJvb2wg Y29tcHJlc3NFdmVudCh4Y2JfZ2VuZXJpY19ldmVudF90ICpldmVudCkgY29uc3Q7Ci0rICAgIGlu bGluZSBib29sIHRpbWVHcmVhdGVyVGhhbih4Y2JfdGltZXN0YW1wX3QgYSwgeGNiX3RpbWVzdGFt cF90IGIpIGNvbnN0Ci0rICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KGEgLSBiKSA+ IDAgfHwgYiA9PSBYQ0JfQ1VSUkVOVF9USU1FOyB9Ci0rCi0rI2lmIFFUX0NPTkZJRyh4Y2JfeGlu cHV0KQotKyAgICB2b2lkIHhpMlNldHVwRGV2aWNlKHZvaWQgKmluZm8sIGJvb2wgcmVtb3ZlRXhp c3RpbmcgPSB0cnVlKTsKLSsgICAgdm9pZCB4aTJTZXR1cERldmljZXMoKTsKLSsgICAgc3RydWN0 IFRvdWNoRGV2aWNlRGF0YSB7Ci0rICAgICAgICBRVG91Y2hEZXZpY2UgKnF0VG91Y2hEZXZpY2Ug PSBudWxscHRyOwotKyAgICAgICAgUUhhc2g8aW50LCBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpU b3VjaFBvaW50PiB0b3VjaFBvaW50czsKLSsgICAgICAgIFFIYXNoPGludCwgUVBvaW50Rj4gcG9p bnRQcmVzc2VkUG9zaXRpb247IC8vIGluIHNjcmVlbiBjb29yZGluYXRlcyB3aGVyZSBlYWNoIHBv aW50IHdhcyBwcmVzc2VkCi0rICAgICAgICBzdHJ1Y3QgVmFsdWF0b3JDbGFzc0luZm8gewotKyAg ICAgICAgICAgIGRvdWJsZSBtaW4gPSAwOwotKyAgICAgICAgICAgIGRvdWJsZSBtYXggPSAwOwot KyAgICAgICAgICAgIGludCBudW1iZXIgPSAtMTsKLSsgICAgICAgICAgICBRWGNiQXRvbTo6QXRv bSBsYWJlbDsKLSsgICAgICAgIH07Ci0rICAgICAgICBRVmVjdG9yPFZhbHVhdG9yQ2xhc3NJbmZv PiB2YWx1YXRvckluZm87Ci0rCi0rICAgICAgICAvLyBTdHVmZiB0aGF0IGlzIHJlbGV2YW50IG9u bHkgZm9yIHRvdWNocGFkcwotKyAgICAgICAgUVBvaW50RiBmaXJzdFByZXNzZWRQb3NpdGlvbjsg ICAgICAgIC8vIGluIHNjcmVlbiBjb29yZGluYXRlcyB3aGVyZSB0aGUgZmlyc3QgcG9pbnQgd2Fz IHByZXNzZWQKLSsgICAgICAgIFFQb2ludEYgZmlyc3RQcmVzc2VkTm9ybWFsUG9zaXRpb247ICAv LyBkZXZpY2UgY29vcmRpbmF0ZXMgKDAgdG8gMSwgMCB0byAxKSB3aGVyZSB0aGUgZmlyc3QgcG9p bnQgd2FzIHByZXNzZWQKLSsgICAgICAgIFFTaXplRiBzaXplOyAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBkZXZpY2Ugc2l6ZSBpbiBtbQotKyAgICAgICAgYm9vbCBwcm92aWRlc1RvdWNoT3Jp ZW50YXRpb24gPSBmYWxzZTsKLSsgICAgfTsKLSsgICAgVG91Y2hEZXZpY2VEYXRhICpwb3B1bGF0 ZVRvdWNoRGV2aWNlcyh2b2lkICppbmZvKTsKLSsgICAgVG91Y2hEZXZpY2VEYXRhICp0b3VjaERl dmljZUZvcklkKGludCBpZCk7Ci0rICAgIHZvaWQgeGkySGFuZGxlRXZlbnQoeGNiX2dlX2V2ZW50 X3QgKmV2ZW50KTsKLSsgICAgdm9pZCB4aTJIYW5kbGVIaWVyYXJjaHlFdmVudCh2b2lkICpldmVu dCk7Ci0rICAgIHZvaWQgeGkySGFuZGxlRGV2aWNlQ2hhbmdlZEV2ZW50KHZvaWQgKmV2ZW50KTsK LSsgICAgdm9pZCB4aTJQcm9jZXNzVG91Y2godm9pZCAqeGlEZXZFdmVudCwgUVhjYldpbmRvdyAq cGxhdGZvcm1XaW5kb3cpOwotKyNpZiBRVF9DT05GSUcodGFibGV0ZXZlbnQpCi0rICAgIHN0cnVj dCBUYWJsZXREYXRhIHsKLSsgICAgICAgIGludCBkZXZpY2VJZCA9IDA7Ci0rICAgICAgICBRVGFi bGV0RXZlbnQ6OlBvaW50ZXJUeXBlIHBvaW50ZXJUeXBlID0gUVRhYmxldEV2ZW50OjpVbmtub3du UG9pbnRlcjsKLSsgICAgICAgIFFUYWJsZXRFdmVudDo6VGFibGV0RGV2aWNlIHRvb2wgPSBRVGFi bGV0RXZlbnQ6OlN0eWx1czsKLSsgICAgICAgIFF0OjpNb3VzZUJ1dHRvbnMgYnV0dG9ucyA9IDA7 Ci0rICAgICAgICBxaW50NjQgc2VyaWFsSWQgPSAwOwotKyAgICAgICAgYm9vbCBpblByb3hpbWl0 eSA9IGZhbHNlOwotKyAgICAgICAgc3RydWN0IFZhbHVhdG9yQ2xhc3NJbmZvIHsKLSsgICAgICAg ICAgICBkb3VibGUgbWluVmFsID0gMDsKLSsgICAgICAgICAgICBkb3VibGUgbWF4VmFsID0gMDsK LSsgICAgICAgICAgICBkb3VibGUgY3VyVmFsID0gMDsKLSsgICAgICAgICAgICBpbnQgbnVtYmVy ID0gLTE7Ci0rICAgICAgICB9OwotKyAgICAgICAgUUhhc2g8aW50LCBWYWx1YXRvckNsYXNzSW5m bz4gdmFsdWF0b3JJbmZvOwotKyAgICB9OwotKyAgICBmcmllbmQgY2xhc3MgUVR5cGVJbmZvPFRh YmxldERhdGE+OwotKyAgICBmcmllbmQgY2xhc3MgUVR5cGVJbmZvPFRhYmxldERhdGE6OlZhbHVh dG9yQ2xhc3NJbmZvPjsKLSsgICAgYm9vbCB4aTJIYW5kbGVUYWJsZXRFdmVudChjb25zdCB2b2lk ICpldmVudCwgVGFibGV0RGF0YSAqdGFibGV0RGF0YSk7Ci0rICAgIHZvaWQgeGkyUmVwb3J0VGFi bGV0RXZlbnQoY29uc3Qgdm9pZCAqZXZlbnQsIFRhYmxldERhdGEgKnRhYmxldERhdGEpOwotKyAg ICBRVmVjdG9yPFRhYmxldERhdGE+IG1fdGFibGV0RGF0YTsKLSsgICAgVGFibGV0RGF0YSAqdGFi bGV0RGF0YUZvckRldmljZShpbnQgaWQpOwotKyNlbmRpZiAvLyBRVF9DT05GSUcodGFibGV0ZXZl bnQpCi0rICAgIHN0cnVjdCBTY3JvbGxpbmdEZXZpY2UgewotKyAgICAgICAgaW50IGRldmljZUlk ID0gMDsKLSsgICAgICAgIGludCB2ZXJ0aWNhbEluZGV4ID0gMDsKLSsgICAgICAgIGludCBob3Jp em9udGFsSW5kZXggPSAwOwotKyAgICAgICAgZG91YmxlIHZlcnRpY2FsSW5jcmVtZW50ID0gMDsK LSsgICAgICAgIGRvdWJsZSBob3Jpem9udGFsSW5jcmVtZW50ID0gMDsKLSsgICAgICAgIFF0OjpP cmllbnRhdGlvbnMgb3JpZW50YXRpb25zID0gMDsKLSsgICAgICAgIFF0OjpPcmllbnRhdGlvbnMg bGVnYWN5T3JpZW50YXRpb25zID0gMDsKLSsgICAgICAgIFFQb2ludEYgbGFzdFNjcm9sbFBvc2l0 aW9uOwotKyAgICB9OwotKyAgICBRSGFzaDxpbnQsIFNjcm9sbGluZ0RldmljZT4gbV9zY3JvbGxp bmdEZXZpY2VzOwotKyAgICB2b2lkIHhpMkhhbmRsZVNjcm9sbEV2ZW50KHZvaWQgKmV2ZW50LCBT Y3JvbGxpbmdEZXZpY2UgJnNjcm9sbGluZ0RldmljZSk7Ci0rICAgIHZvaWQgeGkyVXBkYXRlU2Ny b2xsaW5nRGV2aWNlKFNjcm9sbGluZ0RldmljZSAmc2Nyb2xsaW5nRGV2aWNlKTsKLSsgICAgU2Ny b2xsaW5nRGV2aWNlICpzY3JvbGxpbmdEZXZpY2VGb3JJZChpbnQgaWQpOwotKwotKyAgICBzdGF0 aWMgYm9vbCB4aTJHZXRWYWx1YXRvclZhbHVlSWZTZXQoY29uc3Qgdm9pZCAqZXZlbnQsIGludCB2 YWx1YXRvck51bSwgZG91YmxlICp2YWx1ZSk7Ci0rCi0rICAgIFFIYXNoPGludCwgVG91Y2hEZXZp Y2VEYXRhPiBtX3RvdWNoRGV2aWNlczsKLSsgICAgc3RydWN0IFN0YXJ0U3lzdGVtTW92ZVJlc2l6 ZUluZm8gewotKyAgICAgICAgeGNiX3dpbmRvd190IHdpbmRvdyA9IFhDQl9OT05FOwotKyAgICAg ICAgdWludDE2X3QgZGV2aWNlaWQ7Ci0rICAgICAgICB1aW50MzJfdCBwb2ludGlkOwotKyAgICAg ICAgaW50IGNvcm5lcjsKLSsgICAgfSBtX3N0YXJ0U3lzdGVtTW92ZVJlc2l6ZUluZm87Ci0rI2Vu ZGlmIC8vIFFUX0NPTkZJRyh4Y2JfeGlucHV0KQotKwotKyAgICBjb25zdCBib29sIG1fY2FuR3Jh YlNlcnZlcjsKLSsgICAgY29uc3QgeGNiX3Zpc3VhbGlkX3QgbV9kZWZhdWx0VmlzdWFsSWQ7Ci0r Ci0rICAgIFFMaXN0PFFYY2JWaXJ0dWFsRGVza3RvcCAqPiBtX3ZpcnR1YWxEZXNrdG9wczsKLSsg ICAgUUxpc3Q8UVhjYlNjcmVlbiAqPiBtX3NjcmVlbnM7Ci0rCi0rICAgIHhjYl90aW1lc3RhbXBf dCBtX3RpbWUgPSBYQ0JfQ1VSUkVOVF9USU1FOwotKyAgICB4Y2JfdGltZXN0YW1wX3QgbV9uZXRX bVVzZXJUaW1lID0gWENCX0NVUlJFTlRfVElNRTsKLSsKLSsgICAgUVhjYktleWJvYXJkICptX2tl eWJvYXJkID0gbnVsbHB0cjsKLSsjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAotKyAgICBRWGNiQ2xp cGJvYXJkICptX2NsaXBib2FyZCA9IG51bGxwdHI7Ci0rI2VuZGlmCi0rI2lmIFFUX0NPTkZJRyhk cmFnYW5kZHJvcCkKLSsgICAgUVhjYkRyYWcgKm1fZHJhZyA9IG51bGxwdHI7Ci0rI2VuZGlmCi0r ICAgIFFTY29wZWRQb2ludGVyPFFYY2JXTVN1cHBvcnQ+IG1fd21TdXBwb3J0OwotKyAgICBRWGNi TmF0aXZlSW50ZXJmYWNlICptX25hdGl2ZUludGVyZmFjZSA9IG51bGxwdHI7Ci0rCi0rICAgIFFY Y2JFdmVudFF1ZXVlICptX2V2ZW50UXVldWUgPSBudWxscHRyOwotKwotKyAgICBXaW5kb3dNYXBw ZXIgbV9tYXBwZXI7Ci0rCi0rICAgIFF0OjpNb3VzZUJ1dHRvbnMgbV9idXR0b25TdGF0ZSA9IDA7 Ci0rICAgIFF0OjpNb3VzZUJ1dHRvbiBtX2J1dHRvbiA9IFF0OjpOb0J1dHRvbjsKLSsKLSsgICAg UVhjYldpbmRvdyAqbV9mb2N1c1dpbmRvdyA9IG51bGxwdHI7Ci0rICAgIFFYY2JXaW5kb3cgKm1f bW91c2VHcmFiYmVyID0gbnVsbHB0cjsKLSsgICAgUVhjYldpbmRvdyAqbV9tb3VzZVByZXNzV2lu ZG93ID0gbnVsbHB0cjsKLSsKLSsgICAgeGNiX3dpbmRvd190IG1fY2xpZW50TGVhZGVyID0gMDsK LSsgICAgUUJ5dGVBcnJheSBtX3N0YXJ0dXBJZDsKLSsgICAgUVhjYlN5c3RlbVRyYXlUcmFja2Vy ICptX3N5c3RlbVRyYXlUcmFja2VyID0gbnVsbHB0cjsKLSsgICAgbXV0YWJsZSBRWGNiR2xJbnRl Z3JhdGlvbiAqbV9nbEludGVncmF0aW9uID0gbnVsbHB0cjsKLSsgICAgbXV0YWJsZSBib29sIG1f Z2xJbnRlZ3JhdGlvbkluaXRpYWxpemVkID0gZmFsc2U7Ci0rICAgIGJvb2wgbV94aUdyYWIgPSBm YWxzZTsKLSsgICAgUVZlY3RvcjxpbnQ+IG1feGlNYXN0ZXJQb2ludGVySWRzOwotKwotKyAgICB4 Y2Jfd2luZG93X3QgbV9xdFNlbGVjdGlvbk93bmVyID0gMDsKLSsKLSsgICAgZnJpZW5kIGNsYXNz IFFYY2JFdmVudFF1ZXVlOwotKwotKyAgICBRQnl0ZUFycmF5IG1feGRnQ3VycmVudERlc2t0b3A7 Ci0rICAgIFFUaW1lciBtX2ZvY3VzSW5UaW1lcjsKLSsKLSt9OwotKyNpZiBRVF9DT05GSUcoeGNi X3hpbnB1dCkKLSsjaWYgUVRfQ09ORklHKHRhYmxldGV2ZW50KQotK1FfREVDTEFSRV9UWVBFSU5G TyhRWGNiQ29ubmVjdGlvbjo6VGFibGV0RGF0YTo6VmFsdWF0b3JDbGFzc0luZm8sIFFfUFJJTUlU SVZFX1RZUEUpOwotK1FfREVDTEFSRV9UWVBFSU5GTyhRWGNiQ29ubmVjdGlvbjo6VGFibGV0RGF0 YSwgUV9NT1ZBQkxFX1RZUEUpOwotKyNlbmRpZgotKyNlbmRpZgotKwotK2NsYXNzIFFYY2JDb25u ZWN0aW9uR3JhYmJlcgotK3sKLStwdWJsaWM6Ci0rICAgIFFYY2JDb25uZWN0aW9uR3JhYmJlcihR WGNiQ29ubmVjdGlvbiAqY29ubmVjdGlvbik7Ci0rICAgIH5RWGNiQ29ubmVjdGlvbkdyYWJiZXIo KTsKLSsgICAgdm9pZCByZWxlYXNlKCk7Ci0rcHJpdmF0ZToKLSsgICAgUVhjYkNvbm5lY3Rpb24g Km1fY29ubmVjdGlvbjsKLSt9OwotKwotKy8vIFRoZSB4Y2Jfc2VuZF9ldmVudCgpIHJlcXVpcmVz IGFsbCBldmVudHMgdG8gaGF2ZSAzMiBieXRlcy4gSXQgY2FsbHMgbWVtY3B5KCkgb24gdGhlCi0r Ly8gcGFzc2VkIGluIGV2ZW50LiBJZiB0aGUgcGFzc2VkIGluIGV2ZW50IGlzIGxlc3MgdGhhbiAz MiBieXRlcywgbWVtY3B5KCkgcmVhY2hlcyBpbnRvCi0rLy8gdW5yZWxhdGVkIG1lbW9yeS4KLSt0 ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLStzdHJ1Y3QgYWxpZ25hcygzMikgcV9wYWRkZWRfeGNiX2V2 ZW50IDogVCB7IH07Ci0rCi0rUVRfRU5EX05BTUVTUEFDRQotKwotKyNlbmRpZgotZGlmZiAtdXJO IHF0NWR4Y2ItcGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2 LzUuMTMuMC9xeGNiY29ubmVjdGlvbl9iYXNpYy5oIHF0NWR4Y2ItcGx1Z2luLTEuMi41L3BsYXRm b3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2Jjb25uZWN0aW9uX2Jhc2ljLmgK LS0tLSBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBh LWRldi81LjEzLjAvcXhjYmNvbm5lY3Rpb25fYmFzaWMuaAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIHF0NWR4Y2ItcGx1Z2luLTEuMi41L3BsYXRmb3JtcGx1Z2luL2xp YnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2Jjb25uZWN0aW9uX2Jhc2ljLmgJMjAxOS0wNy0xMiAy MDoxOTo1NS45MDI5ODY1MDggKzAwMDAKLUBAIC0wLDAgKzEsMTgxIEBACi0rLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLSsqKgotKyoqIENvcHlyaWdodCAoQykgMjAxOCBUaGUgUXQgQ29tcGFueSBMdGQu Ci0rKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLwotKyoqCi0rKiogVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCi0r KioKLSsqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAotKyoqIENvbW1lcmNpYWwgTGljZW5zZSBV c2FnZQotKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMg bWF5IHVzZSB0aGlzIGZpbGUgaW4KLSsqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwg bGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKLSsqKiBTb2Z0d2FyZSBvciwgYWx0 ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KLSsq KiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9y IGxpY2Vuc2luZyB0ZXJtcwotKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5p by90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgotKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUg Y29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCi0rKioKLSsqKiBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRlcm5hdGl2ZWx5 LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy Ci0rKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlCi0rKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxl IExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCi0rKiogcGFja2FnaW5nIG9mIHRoaXMgZmls ZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCi0rKiogZW5zdXJl IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVt ZW50cwotKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwt My4wLmh0bWwuCi0rKioKLSsqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQotKyoq IEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVQotKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlv dXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKLSsqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMg b3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCi0rKiogUXQgRm91 bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUKLSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwy IGFuZCBMSUNFTlNFLkdQTDMKLSsqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMg ZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCi0rKiogaW5mb3JtYXRpb24gdG8gZW5z dXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAotKyoq IGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCi0r KiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCi0rKioKLSsqKiAk UVRfRU5EX0xJQ0VOU0UkCi0rKioKLSsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotKyNpZm5kZWYgUVhD QkJBU0lDQ09OTkVDVElPTl9ICi0rI2RlZmluZSBRWENCQkFTSUNDT05ORUNUSU9OX0gKLSsKLSsj aW5jbHVkZSAicXhjYmF0b20uaCIKLSsjaW5jbHVkZSAicXhjYmV4cG9ydC5oIgotKwotKyNpbmNs dWRlIDxRdENvcmUvUVBhaXI+Ci0rI2luY2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgotKyNpbmNsdWRl IDxRdENvcmUvUUJ5dGVBcnJheT4KLSsjaW5jbHVkZSA8UXRDb3JlL1FMb2dnaW5nQ2F0ZWdvcnk+ Ci0rI2luY2x1ZGUgPFF0R3VpL3ByaXZhdGUvcXRndWlnbG9iYWxfcC5oPgotKwotKyNpbmNsdWRl IDx4Y2IveGNiLmg+Ci0rCi0rI2luY2x1ZGUgPG1lbW9yeT4KLSsKLStRVF9CRUdJTl9OQU1FU1BB Q0UKLSsKLStRX0RFQ0xBUkVfTE9HR0lOR19DQVRFR09SWShsY1FwYVhjYikKLSsKLStjbGFzcyBR X1hDQl9FWFBPUlQgUVhjYkJhc2ljQ29ubmVjdGlvbiA6IHB1YmxpYyBRT2JqZWN0Ci0rewotKyAg ICBRX09CSkVDVAotK3B1YmxpYzoKLSsgICAgUVhjYkJhc2ljQ29ubmVjdGlvbihjb25zdCBjaGFy ICpkaXNwbGF5TmFtZSk7Ci0rICAgIH5RWGNiQmFzaWNDb25uZWN0aW9uKCk7Ci0rCi0rI2lmIFFU X0NPTkZJRyh4Y2JfeGxpYikKLSsgICAgdm9pZCAqeGxpYl9kaXNwbGF5KCkgY29uc3QgeyByZXR1 cm4gbV94bGliRGlzcGxheTsgfQotKyNlbmRpZgotKyAgICBjb25zdCBjaGFyICpkaXNwbGF5TmFt ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWUuY29uc3REYXRhKCk7IH0KLSsgICAgaW50 IHByaW1hcnlTY3JlZW5OdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX3ByaW1hcnlTY3JlZW5OdW1i ZXI7IH0KLSsgICAgeGNiX2Nvbm5lY3Rpb25fdCAqeGNiX2Nvbm5lY3Rpb24oKSBjb25zdCB7IHJl dHVybiBtX3hjYkNvbm5lY3Rpb247IH0KLSsgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsK LSsgICAgICAgIHJldHVybiBtX3hjYkNvbm5lY3Rpb24gJiYgIXhjYl9jb25uZWN0aW9uX2hhc19l cnJvcihtX3hjYkNvbm5lY3Rpb24pOwotKyAgICB9Ci0rICAgIGNvbnN0IHhjYl9zZXR1cF90ICpz ZXR1cCgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dXA7IH0KLSsKLSsgICAgc2l6ZV90IG1heFJlcXVl c3REYXRhQnl0ZXMoc2l6ZV90IHJlcXVlc3RTaXplKSBjb25zdDsKLSsKLSsgICAgaW5saW5lIHhj Yl9hdG9tX3QgYXRvbShRWGNiQXRvbTo6QXRvbSBxYXRvbSkgY29uc3QgeyByZXR1cm4gbV94Y2JB dG9tLmF0b20ocWF0b20pOyB9Ci0rICAgIFFYY2JBdG9tOjpBdG9tIHFhdG9tKHhjYl9hdG9tX3Qg YXRvbSkgY29uc3QgeyByZXR1cm4gbV94Y2JBdG9tLnFhdG9tKGF0b20pOyB9Ci0rICAgIHhjYl9h dG9tX3QgaW50ZXJuQXRvbShjb25zdCBjaGFyICpuYW1lKTsKLSsgICAgUUJ5dGVBcnJheSBhdG9t TmFtZSh4Y2JfYXRvbV90IGF0b20pOwotKwotKyAgICBib29sIGhhc1hGaXhlcygpIGNvbnN0IHsg cmV0dXJuIG1faGFzWEZpeGVzOyB9Ci0rICAgIGJvb2wgaGFzWFNoYXBlKCkgY29uc3QgeyByZXR1 cm4gbV9oYXNYaGFwZTsgfQotKyAgICBib29sIGhhc1hSYW5kcigpIGNvbnN0IHsgcmV0dXJuIG1f aGFzWFJhbmRyOyB9Ci0rICAgIGJvb2wgaGFzSW5wdXRTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1f aGFzSW5wdXRTaGFwZTsgfQotKyAgICBib29sIGhhc1hLQigpIGNvbnN0IHsgcmV0dXJuIG1faGFz WGtiOyB9Ci0rICAgIGJvb2wgaGFzWFJlbmRlcihpbnQgbWFqb3IgPSAtMSwgaW50IG1pbm9yID0g LTEpIGNvbnN0IHsKLSsgICAgICAgIGlmIChtX2hhc1hSZW5kZXIgJiYgbWFqb3IgIT0gLTEgJiYg bWlub3IgIT0gLTEpCi0rICAgICAgICAgICAgcmV0dXJuIG1feHJlbmRlclZlcnNpb24gPj0gcU1h a2VQYWlyKG1ham9yLCBtaW5vcik7Ci0rCi0rICAgICAgICByZXR1cm4gbV9oYXNYUmVuZGVyOwot KyAgICB9Ci0rICAgIGJvb2wgaGFzWElucHV0MigpIGNvbnN0IHsgcmV0dXJuIG1feGkyRW5hYmxl ZDsgfQotKyAgICBib29sIGhhc1NobSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU2htOyB9Ci0rICAg IGJvb2wgaGFzU2htRmQoKSBjb25zdCB7IHJldHVybiBtX2hhc1NobUZkOyB9Ci0rICAgIGJvb2wg aGFzWFN5bmMoKSBjb25zdCB7IHJldHVybiBtX2hhc1hTeW5jOyB9Ci0rICAgIGJvb2wgaGFzWGlu ZXJhbWEoKSBjb25zdCB7IHJldHVybiBtX2hhc1hpbmVyYW1hOyB9Ci0rICAgIGJvb2wgaGFzQmln UmVxdWVzdCgpIGNvbnN0OwotKwotKyNpZiBRVF9DT05GSUcoeGNiX3hpbnB1dCkKLSsgICAgYm9v bCBpc0F0TGVhc3RYSTIxKCkgY29uc3QgeyByZXR1cm4gbV94aTJFbmFibGVkICYmIG1feGkyTWlu b3IgPj0gMTsgfQotKyAgICBib29sIGlzQXRMZWFzdFhJMjIoKSBjb25zdCB7IHJldHVybiBtX3hp MkVuYWJsZWQgJiYgbV94aTJNaW5vciA+PSAyOyB9Ci0rICAgIGJvb2wgaXNYSUV2ZW50KHhjYl9n ZW5lcmljX2V2ZW50X3QgKmV2ZW50KSBjb25zdDsKLSsgICAgYm9vbCBpc1hJVHlwZSh4Y2JfZ2Vu ZXJpY19ldmVudF90ICpldmVudCwgdWludDE2X3QgdHlwZSkgY29uc3Q7Ci0rI2VuZGlmCi0rCi0r ICAgIGJvb2wgaXNYRml4ZXNUeXBlKHVpbnQgcmVzcG9uc2VUeXBlLCBpbnQgZXZlbnRUeXBlKSBj b25zdDsKLSsgICAgYm9vbCBpc1hSYW5kclR5cGUodWludCByZXNwb25zZVR5cGUsIGludCBldmVu dFR5cGUpIGNvbnN0OwotKyAgICBib29sIGlzWGtiVHlwZSh1aW50IHJlc3BvbnNlVHlwZSkgY29u c3Q7IC8vIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMjk1 Ci0rCi0rcHJvdGVjdGVkOgotKyAgICB2b2lkIGluaXRpYWxpemVTaG0oKTsKLSsgICAgdm9pZCBp bml0aWFsaXplWEZpeGVzKCk7Ci0rICAgIHZvaWQgaW5pdGlhbGl6ZVhSZW5kZXIoKTsKLSsgICAg dm9pZCBpbml0aWFsaXplWFJhbmRyKCk7Ci0rICAgIHZvaWQgaW5pdGlhbGl6ZVhpbmVyYW1hKCk7 Ci0rICAgIHZvaWQgaW5pdGlhbGl6ZVhTaGFwZSgpOwotKyAgICB2b2lkIGluaXRpYWxpemVYS0Io KTsKLSsgICAgdm9pZCBpbml0aWFsaXplWFN5bmMoKTsKLSsjaWYgUVRfQ09ORklHKHhjYl94aW5w dXQpCi0rICAgIHZvaWQgaW5pdGlhbGl6ZVhJbnB1dDIoKTsKLSsjZW5kaWYKLSsKLStwcml2YXRl OgotKyNpZiBRVF9DT05GSUcoeGNiX3hsaWIpCi0rICAgIHZvaWQgKm1feGxpYkRpc3BsYXkgPSBu dWxscHRyOwotKyNlbmRpZgotKyAgICBRQnl0ZUFycmF5IG1fZGlzcGxheU5hbWU7Ci0rICAgIHhj Yl9jb25uZWN0aW9uX3QgKm1feGNiQ29ubmVjdGlvbiA9IG51bGxwdHI7Ci0rICAgIGludCBtX3By aW1hcnlTY3JlZW5OdW1iZXIgPSAwOwotKyAgICBjb25zdCB4Y2Jfc2V0dXBfdCAqbV9zZXR1cCA9 IG51bGxwdHI7Ci0rICAgIFFYY2JBdG9tIG1feGNiQXRvbTsKLSsKLSsgICAgYm9vbCBtX2hhc1hG aXhlcyA9IGZhbHNlOwotKyAgICBib29sIG1faGFzWGluZXJhbWEgPSBmYWxzZTsKLSsgICAgYm9v bCBtX2hhc1hoYXBlID0gZmFsc2U7Ci0rICAgIGJvb2wgbV9oYXNJbnB1dFNoYXBlOwotKyAgICBi b29sIG1faGFzWFJhbmRyID0gZmFsc2U7Ci0rICAgIGJvb2wgbV9oYXNYa2IgPSBmYWxzZTsKLSsg ICAgYm9vbCBtX2hhc1hSZW5kZXIgPSBmYWxzZTsKLSsgICAgYm9vbCBtX2hhc1NobSA9IGZhbHNl OwotKyAgICBib29sIG1faGFzU2htRmQgPSBmYWxzZTsKLSsgICAgYm9vbCBtX2hhc1hTeW5jID0g ZmFsc2U7Ci0rCi0rICAgIFFQYWlyPGludCwgaW50PiBtX3hyZW5kZXJWZXJzaW9uOwotKwotKyAg ICBib29sIG1feGkyRW5hYmxlZCA9IGZhbHNlOwotKyNpZiBRVF9DT05GSUcoeGNiX3hpbnB1dCkK LSsgICAgaW50IG1feGkyTWlub3IgPSAtMTsKLSsgICAgaW50IG1feGlPcENvZGUgPSAtMTsKLSsg ICAgdWludDMyX3QgbV94aW5wdXRGaXJzdEV2ZW50ID0gMDsKLSsjZW5kaWYKLSsKLSsgICAgdWlu dDMyX3QgbV94Zml4ZXNGaXJzdEV2ZW50ID0gMDsKLSsgICAgdWludDMyX3QgbV94cmFuZHJGaXJz dEV2ZW50ID0gMDsKLSsgICAgdWludDMyX3QgbV94a2JGaXJzdEV2ZW50ID0gMDsKLSsKLSsgICAg dWludDMyX3QgbV9tYXhpbXVtUmVxdWVzdExlbmd0aCA9IDA7Ci0rfTsKLSsKLSsjZGVmaW5lIFFf WENCX1JFUExZX0NPTk5FQ1RJT05fQVJHKGNvbm5lY3Rpb24sIC4uLikgY29ubmVjdGlvbgotKwot K3N0cnVjdCBRU3RkRnJlZURlbGV0ZXIgewotKyAgICB2b2lkIG9wZXJhdG9yKCkodm9pZCAqcCkg Y29uc3QgUV9ERUNMX05PVEhST1cgeyByZXR1cm4gc3RkOjpmcmVlKHApOyB9Ci0rfTsKLSsKLSsj ZGVmaW5lIFFfWENCX1JFUExZKGNhbGwsIC4uLikgXAotKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2Fs bCMjX3JlcGx5X3QsIFFTdGRGcmVlRGVsZXRlcj4oIFwKLSsgICAgICAgIGNhbGwjI19yZXBseShR X1hDQl9SRVBMWV9DT05ORUNUSU9OX0FSRyhfX1ZBX0FSR1NfXyksIGNhbGwoX19WQV9BUkdTX18p LCBudWxscHRyKSBcCi0rICAgICkKLSsKLSsjZGVmaW5lIFFfWENCX1JFUExZX1VOQ0hFQ0tFRChj YWxsLCAuLi4pIFwKLSsgICAgc3RkOjp1bmlxdWVfcHRyPGNhbGwjI19yZXBseV90LCBRU3RkRnJl ZURlbGV0ZXI+KCBcCi0rICAgICAgICBjYWxsIyNfcmVwbHkoUV9YQ0JfUkVQTFlfQ09OTkVDVElP Tl9BUkcoX19WQV9BUkdTX18pLCBjYWxsIyNfdW5jaGVja2VkKF9fVkFfQVJHU19fKSwgbnVsbHB0 cikgXAotKyAgICApCi0rCi0rUVRfRU5EX05BTUVTUEFDRQotKwotKyNlbmRpZiAvLyBRWENCQkFT SUNDT05ORUNUSU9OX0gKLWRpZmYgLXVyTiBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZv cm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmN1cnNvci5oIHF0NWR4Y2ItcGx1 Z2luLTEuMi41L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2JjdXJz b3IuaAotLS0tIHF0NWR4Y2ItcGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4 Y2JxcGEtZGV2LzUuMTMuMC9xeGNiY3Vyc29yLmgJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4 Y2JxcGEtZGV2LzUuMTMuMC9xeGNiY3Vyc29yLmgJMjAxOS0wNy0xMiAyMDoxOTo1NS45MDI5ODY1 MDggKzAwMDAKLUBAIC0wLDAgKzEsMTI5IEBACi0rLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSsqKgot KyoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCi0rKiogQ29udGFjdDog aHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLwotKyoqCi0rKiogVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIHBsdWdpbnMgb2YgdGhlIFF0IFRvb2xraXQuCi0rKioKLSsqKiAkUVRfQkVHSU5fTElD RU5TRTpMR1BMJAotKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQotKyoqIExpY2Vuc2VlcyBo b2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4K LSsqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJv dmlkZWQgd2l0aCB0aGUKLSsqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3Jk YW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KLSsqKiBhIHdyaXR0ZW4gYWdyZWVtZW50 IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcwotKyoq IGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBG b3IgZnVydGhlcgotKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBz Oi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCi0rKioKLSsqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVz ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCi0rKiogR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rKiog Rm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVk ZWQgaW4gdGhlCi0rKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUg Zm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCi0rKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cwotKyoqIHdpbGwgYmUgbWV0 OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCi0rKioKLSsqKiBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQotKyoqIEFsdGVybmF0aXZlbHksIHRoaXMg ZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotKyoqIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdl bmVyYWwKLSsqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24g YXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCi0rKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2Vz IGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLSsqKiBGb3VuZGF0aW9uIGFu ZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKLSsq KiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0 aGUgZm9sbG93aW5nCi0rKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAotKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCi0rKiogaHR0cHM6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCi0rKioKLSsqKiAkUVRfRU5EX0xJQ0VOU0UkCi0rKioK LSsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLwotKwotKyNpZm5kZWYgUVhDQkNVUlNPUl9ICi0rI2RlZmlu ZSBRWENCQ1VSU09SX0gKLSsKLSsjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWN1cnNvci5oPgotKyNp bmNsdWRlICJxeGNic2NyZWVuLmgiCi0rCi0rI2luY2x1ZGUgPFF0Q29yZS9RQ2FjaGU+Ci0rCi0r UVRfQkVHSU5fTkFNRVNQQUNFCi0rCi0rI2lmbmRlZiBRVF9OT19DVVJTT1IKLSsKLStzdHJ1Y3Qg UVhjYkN1cnNvckNhY2hlS2V5Ci0rewotKyAgICBleHBsaWNpdCBRWGNiQ3Vyc29yQ2FjaGVLZXko Y29uc3QgUUN1cnNvciAmYyk7Ci0rICAgIGV4cGxpY2l0IFFYY2JDdXJzb3JDYWNoZUtleShRdDo6 Q3Vyc29yU2hhcGUgcykgOiBzaGFwZShzKSwgYml0bWFwQ2FjaGVLZXkoMCksIG1hc2tDYWNoZUtl eSgwKSB7fQotKyAgICBRWGNiQ3Vyc29yQ2FjaGVLZXkoKSA6IHNoYXBlKFF0OjpDdXN0b21DdXJz b3IpLCBiaXRtYXBDYWNoZUtleSgwKSwgbWFza0NhY2hlS2V5KDApIHt9Ci0rCi0rICAgIFF0OjpD dXJzb3JTaGFwZSBzaGFwZTsKLSsgICAgcWludDY0IGJpdG1hcENhY2hlS2V5OwotKyAgICBxaW50 NjQgbWFza0NhY2hlS2V5OwotK307Ci0rCi0raW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBR WGNiQ3Vyc29yQ2FjaGVLZXkgJmsxLCBjb25zdCBRWGNiQ3Vyc29yQ2FjaGVLZXkgJmsyKQotK3sK LSsgICAgcmV0dXJuIGsxLnNoYXBlID09IGsyLnNoYXBlICYmIGsxLmJpdG1hcENhY2hlS2V5ID09 IGsyLmJpdG1hcENhY2hlS2V5ICYmIGsxLm1hc2tDYWNoZUtleSA9PSBrMi5tYXNrQ2FjaGVLZXk7 Ci0rfQotKwotK2lubGluZSB1aW50IHFIYXNoKGNvbnN0IFFYY2JDdXJzb3JDYWNoZUtleSAmaywg dWludCBzZWVkKSBRX0RFQ0xfTk9USFJPVwotK3sKLSsgICAgcmV0dXJuICh1aW50KGsuc2hhcGUp ICsgdWludChrLmJpdG1hcENhY2hlS2V5KSArIHVpbnQoay5tYXNrQ2FjaGVLZXkpKSBeIHNlZWQ7 Ci0rfQotKwotKyNlbmRpZiAvLyAhUVRfTk9fQ1VSU09SCi0rCi0rY2xhc3MgUVhjYkN1cnNvciA6 IHB1YmxpYyBRWGNiT2JqZWN0LCBwdWJsaWMgUVBsYXRmb3JtQ3Vyc29yCi0rewotK3B1YmxpYzoK LSsgICAgUVhjYkN1cnNvcihRWGNiQ29ubmVjdGlvbiAqY29ubiwgUVhjYlNjcmVlbiAqc2NyZWVu KTsKLSsgICAgflFYY2JDdXJzb3IoKTsKLSsjaWZuZGVmIFFUX05PX0NVUlNPUgotKyAgICB2b2lk IGNoYW5nZUN1cnNvcihRQ3Vyc29yICpjdXJzb3IsIFFXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7 Ci0rI2VuZGlmCi0rICAgIFFQb2ludCBwb3MoKSBjb25zdCBvdmVycmlkZTsKLSsgICAgdm9pZCBz ZXRQb3MoY29uc3QgUVBvaW50ICZwb3MpIG92ZXJyaWRlOwotKwotKyAgICBzdGF0aWMgdm9pZCBx dWVyeVBvaW50ZXIoUVhjYkNvbm5lY3Rpb24gKmMsIFFYY2JWaXJ0dWFsRGVza3RvcCAqKnZpcnR1 YWxEZXNrdG9wLCBRUG9pbnQgKnBvcywgaW50ICprZXliTWFzayA9IDApOwotKwotKyNpZm5kZWYg UVRfTk9fQ1VSU09SCi0rICAgIHhjYl9jdXJzb3JfdCB4Y2JDdXJzb3IoY29uc3QgUUN1cnNvciAm YykgY29uc3QKLSsgICAgICAgIHsgcmV0dXJuIG1fY3Vyc29ySGFzaC52YWx1ZShRWGNiQ3Vyc29y Q2FjaGVLZXkoYyksIHhjYl9jdXJzb3JfdCgwKSk7IH0KLSsjZW5kaWYKLSsKLStwcml2YXRlOgot KwotKyNpZm5kZWYgUVRfTk9fQ1VSU09SCi0rICAgIHR5cGVkZWYgUUhhc2g8UVhjYkN1cnNvckNh Y2hlS2V5LCB4Y2JfY3Vyc29yX3Q+IEN1cnNvckhhc2g7Ci0rCi0rICAgIHN0cnVjdCBDYWNoZWRD dXJzb3IKLSsgICAgewotKyAgICAgICAgZXhwbGljaXQgQ2FjaGVkQ3Vyc29yKHhjYl9jb25uZWN0 aW9uX3QgKmNvbm4sIHhjYl9jdXJzb3JfdCBjKQotKyAgICAgICAgICAgIDogY3Vyc29yKGMpLCBj b25uZWN0aW9uKGNvbm4pIHt9Ci0rICAgICAgICB+Q2FjaGVkQ3Vyc29yKCkgeyB4Y2JfZnJlZV9j dXJzb3IoY29ubmVjdGlvbiwgY3Vyc29yKTsgfQotKyAgICAgICAgeGNiX2N1cnNvcl90IGN1cnNv cjsKLSsgICAgICAgIHhjYl9jb25uZWN0aW9uX3QgKmNvbm5lY3Rpb247Ci0rICAgIH07Ci0rICAg IHR5cGVkZWYgUUNhY2hlPFFYY2JDdXJzb3JDYWNoZUtleSwgQ2FjaGVkQ3Vyc29yPiBCaXRtYXBD dXJzb3JDYWNoZTsKLSsKLSsgICAgeGNiX2N1cnNvcl90IGNyZWF0ZUZvbnRDdXJzb3IoaW50IGNz aGFwZSk7Ci0rICAgIHhjYl9jdXJzb3JfdCBjcmVhdGVCaXRtYXBDdXJzb3IoUUN1cnNvciAqY3Vy c29yKTsKLSsgICAgeGNiX2N1cnNvcl90IGNyZWF0ZU5vblN0YW5kYXJkQ3Vyc29yKGludCBjc2hh cGUpOwotKyNlbmRpZgotKwotKyAgICBRWGNiU2NyZWVuICptX3NjcmVlbjsKLSsjaWZuZGVmIFFU X05PX0NVUlNPUgotKyAgICBDdXJzb3JIYXNoIG1fY3Vyc29ySGFzaDsKLSsgICAgQml0bWFwQ3Vy c29yQ2FjaGUgbV9iaXRtYXBDYWNoZTsKLSsjZW5kaWYKLSsjaWYgUVRfQ09ORklHKHhjYl94bGli KSAmJiBRVF9DT05GSUcobGlicmFyeSkKLSsgICAgc3RhdGljIHZvaWQgY3Vyc29yVGhlbWVQcm9w ZXJ0eUNoYW5nZWQoUVhjYlZpcnR1YWxEZXNrdG9wICpzY3JlZW4sCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJm5hbWUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFWYXJpYW50ICZw cm9wZXJ0eSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p ZCAqaGFuZGxlKTsKLSsjZW5kaWYKLSsgICAgYm9vbCBtX2d0a0N1cnNvclRoZW1lSW5pdGlhbGl6 ZWQ7Ci0rfTsKLSsKLStRVF9FTkRfTkFNRVNQQUNFCi0rCi0rI2VuZGlmCi1kaWZmIC11ck4gcXQ1 ZHhjYi1wbHVnaW4tMS4yLjUub2xkL3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4x My4wL3F4Y2JkcmFnLmggcXQ1ZHhjYi1wbHVnaW4tMS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1 eGNicXBhLWRldi81LjEzLjAvcXhjYmRyYWcuaAotLS0tIHF0NWR4Y2ItcGx1Z2luLTEuMi41Lm9s ZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNiZHJhZy5oCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgcXQ1ZHhjYi1wbHVnaW4tMS4yLjUv cGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmRyYWcuaAkyMDE5LTA3 LTEyIDIwOjE5OjU1LjkwMjk4NjUwOCArMDAwMAotQEAgLTAsMCArMSwxODUgQEAKLSsvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotKyoqCi0rKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55 IEx0ZC4KLSsqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCi0rKioKLSsq KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRHdWkgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0 LgotKyoqCi0rKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKLSsqKiBDb21tZXJjaWFsIExpY2Vu c2UgVXNhZ2UKLSsqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vu c2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCi0rKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJj aWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCi0rKiogU29mdHdhcmUgb3Is IGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGlu Ci0rKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnku IEZvciBsaWNlbnNpbmcgdGVybXMKLSsqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cu cXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKLSsqKiBpbmZvcm1hdGlvbiB1c2Ug dGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgotKyoqCi0r KiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRp dmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlcgotKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUg ZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQotKyoqIHBhY2thZ2luZyBvZiB0aGlz IGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bwotKyoqIGVu c3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1 aXJlbWVudHMKLSsqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9s Z3BsLTMuMC5odG1sLgotKyoqCi0rKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UK LSsqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUKLSsqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChh dCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCi0rKiogUHVibGljIGxpY2Vuc2UgdmVyc2lv biAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQotKyoqIFF0 IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlCi0rKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0Uu R1BMMiBhbmQgTElDRU5TRS5HUEwzCi0rKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0 aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZwotKyoqIGluZm9ybWF0aW9uIHRv IGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwK LSsqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFu ZAotKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgotKyoqCi0r KiogJFFUX0VORF9MSUNFTlNFJAotKyoqCi0rKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsKLSsjaWZu ZGVmIFFYQ0JEUkFHX0gKLSsjZGVmaW5lIFFYQ0JEUkFHX0gKLSsKLSsjaW5jbHVkZSA8cXBhL3Fw bGF0Zm9ybWRyYWcuaD4KLSsjaW5jbHVkZSA8cHJpdmF0ZS9xc2ltcGxlZHJhZ19wLmg+Ci0rI2lu Y2x1ZGUgPHF4Y2JvYmplY3QuaD4KLSsjaW5jbHVkZSA8eGNiL3hjYi5oPgotKyNpbmNsdWRlIDxx cG9pbnQuaD4KLSsjaW5jbHVkZSA8cXJlY3QuaD4KLSsjaW5jbHVkZSA8cXNoYXJlZHBvaW50ZXIu aD4KLSsjaW5jbHVkZSA8cXBvaW50ZXIuaD4KLSsjaW5jbHVkZSA8cXZlY3Rvci5oPgotKyNpbmNs dWRlIDxxZGF0ZXRpbWUuaD4KLSsjaW5jbHVkZSA8cXBpeG1hcC5oPgotKyNpbmNsdWRlIDxxYmFj a2luZ3N0b3JlLmg+Ci0rCi0rI2luY2x1ZGUgPFF0Q29yZS9RRGVidWc+Ci0rCi0rUVRfUkVRVUlS RV9DT05GSUcoZHJhZ2FuZGRyb3ApOwotKwotK1FUX0JFR0lOX05BTUVTUEFDRQotKwotK2NsYXNz IFFXaW5kb3c7Ci0rY2xhc3MgUVBsYXRmb3JtV2luZG93OwotK2NsYXNzIFFYY2JDb25uZWN0aW9u OwotK2NsYXNzIFFYY2JXaW5kb3c7Ci0rY2xhc3MgUVhjYkRyb3BEYXRhOwotK2NsYXNzIFFYY2JT Y3JlZW47Ci0rY2xhc3MgUURyYWc7Ci0rY2xhc3MgUVNoYXBlZFBpeG1hcFdpbmRvdzsKLSsKLStj bGFzcyBRWGNiRHJhZyA6IHB1YmxpYyBRWGNiT2JqZWN0LCBwdWJsaWMgUUJhc2ljRHJhZwotK3sK LStwdWJsaWM6Ci0rICAgIFFYY2JEcmFnKFFYY2JDb25uZWN0aW9uICpjKTsKLSsgICAgflFYY2JE cmFnKCk7Ci0rCi0rICAgIGJvb2wgZXZlbnRGaWx0ZXIoUU9iamVjdCAqbywgUUV2ZW50ICplKSBv dmVycmlkZTsKLSsKLSsgICAgdm9pZCBzdGFydERyYWcoKSBvdmVycmlkZTsKLSsgICAgdm9pZCBj YW5jZWwoKSBvdmVycmlkZTsKLSsgICAgdm9pZCBtb3ZlKGNvbnN0IFFQb2ludCAmZ2xvYmFsUG9z LCBRdDo6TW91c2VCdXR0b25zIGIsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RzKSBvdmVycmlk ZTsKLSsgICAgdm9pZCBkcm9wKGNvbnN0IFFQb2ludCAmZ2xvYmFsUG9zLCBRdDo6TW91c2VCdXR0 b25zIGIsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RzKSBvdmVycmlkZTsKLSsgICAgdm9pZCBl bmREcmFnKCkgb3ZlcnJpZGU7Ci0rCi0rICAgIHZvaWQgaGFuZGxlRW50ZXIoUVBsYXRmb3JtV2lu ZG93ICp3aW5kb3csIGNvbnN0IHhjYl9jbGllbnRfbWVzc2FnZV9ldmVudF90ICpldmVudCwgeGNi X3dpbmRvd190IHByb3h5ID0gMCk7Ci0rICAgIHZvaWQgaGFuZGxlUG9zaXRpb24oUVBsYXRmb3Jt V2luZG93ICp3LCBjb25zdCB4Y2JfY2xpZW50X21lc3NhZ2VfZXZlbnRfdCAqZXZlbnQpOwotKyAg ICB2b2lkIGhhbmRsZUxlYXZlKFFQbGF0Zm9ybVdpbmRvdyAqdywgY29uc3QgeGNiX2NsaWVudF9t ZXNzYWdlX2V2ZW50X3QgKmV2ZW50KTsKLSsgICAgdm9pZCBoYW5kbGVEcm9wKFFQbGF0Zm9ybVdp bmRvdyAqLCBjb25zdCB4Y2JfY2xpZW50X21lc3NhZ2VfZXZlbnRfdCAqZXZlbnQsCi0rICAgICAg ICAgICAgICAgICAgICBRdDo6TW91c2VCdXR0b25zIGIgPSAwLCBRdDo6S2V5Ym9hcmRNb2RpZmll cnMgbW9kcyA9IDApOwotKwotKyAgICB2b2lkIGhhbmRsZVN0YXR1cyhjb25zdCB4Y2JfY2xpZW50 X21lc3NhZ2VfZXZlbnRfdCAqZXZlbnQpOwotKyAgICB2b2lkIGhhbmRsZVNlbGVjdGlvblJlcXVl c3QoY29uc3QgeGNiX3NlbGVjdGlvbl9yZXF1ZXN0X2V2ZW50X3QgKmV2ZW50KTsKLSsgICAgdm9p ZCBoYW5kbGVGaW5pc2hlZChjb25zdCB4Y2JfY2xpZW50X21lc3NhZ2VfZXZlbnRfdCAqZXZlbnQp OwotKwotKyAgICBib29sIGRuZEVuYWJsZShRWGNiV2luZG93ICp3aW4sIGJvb2wgb24pOwotKyAg ICBib29sIG93bnNEcmFnT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0rCi0rICAgIHZvaWQgdXBk YXRlUGl4bWFwKCk7Ci0rICAgIHhjYl90aW1lc3RhbXBfdCB0YXJnZXRUaW1lKCkgeyByZXR1cm4g dGFyZ2V0X3RpbWU7IH0KLSsKLStwcm90ZWN0ZWQ6Ci0rICAgIHZvaWQgdGltZXJFdmVudChRVGlt ZXJFdmVudCogZSkgb3ZlcnJpZGU7Ci0rCi0rICAgIGJvb2wgZmluZFhkbmRBd2FyZVRhcmdldChj b25zdCBRUG9pbnQgJmdsb2JhbFBvcywgeGNiX3dpbmRvd190ICp0YXJnZXRfb3V0KTsKLSsKLStw cml2YXRlOgotKyAgICBmcmllbmQgY2xhc3MgUVhjYkRyb3BEYXRhOwotKwotKyAgICB2b2lkIGlu aXQoKTsKLSsKLSsgICAgdm9pZCBoYW5kbGVfeGRuZF9wb3NpdGlvbihRUGxhdGZvcm1XaW5kb3cg KncsIGNvbnN0IHhjYl9jbGllbnRfbWVzc2FnZV9ldmVudF90ICpldmVudCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRdDo6TW91c2VCdXR0b25zIGIgPSAwLCBRdDo6S2V5Ym9hcmRN b2RpZmllcnMgbW9kcyA9IDApOwotKyAgICB2b2lkIGhhbmRsZV94ZG5kX3N0YXR1cyhjb25zdCB4 Y2JfY2xpZW50X21lc3NhZ2VfZXZlbnRfdCAqZXZlbnQpOwotKyAgICB2b2lkIHNlbmRfbGVhdmUo KTsKLSsKLSsgICAgUXQ6OkRyb3BBY3Rpb24gdG9Ecm9wQWN0aW9uKHhjYl9hdG9tX3QgYXRvbSkg Y29uc3Q7Ci0rICAgIHhjYl9hdG9tX3QgdG9YZG5kQWN0aW9uKFF0OjpEcm9wQWN0aW9uIGEpIGNv bnN0OwotKwotKyAgICBRUG9pbnRlcjxRV2luZG93PiBpbml0aWF0b3JXaW5kb3c7Ci0rICAgIFFQ b2ludGVyPFFXaW5kb3c+IGN1cnJlbnRXaW5kb3c7Ci0rICAgIFFQb2ludCBjdXJyZW50UG9zaXRp b247Ci0rCi0rICAgIFFYY2JEcm9wRGF0YSAqbV9kcm9wRGF0YTsKLSsgICAgUXQ6OkRyb3BBY3Rp b24gYWNjZXB0ZWRfZHJvcF9hY3Rpb247Ci0rCi0rICAgIFFXaW5kb3cgKmRlc2t0b3BfcHJveHk7 Ci0rCi0rICAgIHhjYl9hdG9tX3QgeGRuZF9kcmFnc291cmNlOwotKwotKyAgICAvLyB0aGUgdHlw ZXMgaW4gdGhpcyBkcm9wLiAxMDAgaXMgbm8gZ29vZCwgYnV0IGF0IGxlYXN0IGl0J3MgYmlnLgot KyAgICBlbnVtIHsgeGRuZF9tYXhfdHlwZSA9IDEwMCB9OwotKyAgICBRVmVjdG9yPHhjYl9hdG9t X3Q+IHhkbmRfdHlwZXM7Ci0rCi0rICAgIC8vIHRpbWVzdGFtcCBmcm9tIFhkbmRQb3NpdGlvbiBh bmQgWGRuZERyb3B0aW1lIGZvciByZXRyaWV2aW5nIHRoZSBkYXRhCi0rICAgIHhjYl90aW1lc3Rh bXBfdCB0YXJnZXRfdGltZTsKLSsgICAgeGNiX3RpbWVzdGFtcF90IHNvdXJjZV90aW1lOwotKwot KyAgICAvLyByZWN0YW5nbGUgaW4gd2hpY2ggdGhlIGFuc3dlciB3aWxsIGJlIHRoZSBzYW1lCi0r ICAgIFFSZWN0IHNvdXJjZV9zYW1lYW5zd2VyOwotKyAgICBib29sIHdhaXRpbmdfZm9yX3N0YXR1 czsKLSsKLSsgICAgLy8gaGVscGVycyBmb3Igc2V0dGluZyBleGVjdXRlZCBkcm9wIGFjdGlvbiBv dXRzaWRlIGFwcGxpY2F0aW9uCi0rICAgIGJvb2wgZHJvcHBlZDsKLSsgICAgYm9vbCBjYW5jZWxl ZDsKLSsKLSsgICAgLy8gQSB3aW5kb3cgZnJvbSBVbml0eSBEbkQgTWFuYWdlciwgd2hpY2ggZG9l cyBub3QgcmVzcGVjdCB0aGUgWERuRCBzcGVjCi0rICAgIHhjYl93aW5kb3dfdCB4ZG5kQ29sbGVj dGlvbldpbmRvdyA9IFhDQl9OT05FOwotKwotKyAgICAvLyB0b3AtbGV2ZWwgd2luZG93IHdlIHNl bnQgcG9zaXRpb24gdG8gbGFzdC4KLSsgICAgeGNiX3dpbmRvd190IGN1cnJlbnRfdGFyZ2V0Owot KyAgICAvLyB3aW5kb3cgdG8gc2VuZCBldmVudHMgdG8gKGFsd2F5cyB2YWxpZCBpZiBjdXJyZW50 X3RhcmdldCkKLSsgICAgeGNiX3dpbmRvd190IGN1cnJlbnRfcHJveHlfdGFyZ2V0OwotKwotKyAg ICBRWGNiVmlydHVhbERlc2t0b3AgKmN1cnJlbnRfdmlydHVhbF9kZXNrdG9wOwotKwotKyAgICAv LyAxMCBtaW51dGUgdGltZXIgdXNlZCB0byBkaXNjYXJkIG9sZCBYZG5kRHJvcCB0cmFuc2FjdGlv bnMKLSsgICAgZW51bSB7IFhkbmREcm9wVHJhbnNhY3Rpb25UaW1lb3V0ID0gNjAwMDAwIH07Ci0r ICAgIGludCBjbGVhbnVwX3RpbWVyOwotKwotKyAgICBRVmVjdG9yPHhjYl9hdG9tX3Q+IGRyYWdf dHlwZXM7Ci0rCi0rICAgIHN0cnVjdCBUcmFuc2FjdGlvbgotKyAgICB7Ci0rICAgICAgICB4Y2Jf dGltZXN0YW1wX3QgdGltZXN0YW1wOwotKyAgICAgICAgeGNiX3dpbmRvd190IHRhcmdldDsKLSsg ICAgICAgIHhjYl93aW5kb3dfdCBwcm94eV90YXJnZXQ7Ci0rICAgICAgICBRUGxhdGZvcm1XaW5k b3cgKnRhcmdldFdpbmRvdzsKLSsvLyAgICAgICAgUVdpZGdldCAqZW1iZWRkaW5nX3dpZGdldDsK LSsgICAgICAgIFFQb2ludGVyPFFEcmFnPiBkcmFnOwotKyAgICAgICAgUVRpbWUgdGltZTsKLSsg ICAgfTsKLSsgICAgZnJpZW5kIGNsYXNzIFFUeXBlSW5mbzxUcmFuc2FjdGlvbj47Ci0rICAgIFFW ZWN0b3I8VHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uczsKLSsKLSsgICAgaW50IHRyYW5zYWN0aW9u X2V4cGlyeV90aW1lcjsKLSsgICAgdm9pZCByZXN0YXJ0RHJvcEV4cGlyeVRpbWVyKCk7Ci0rICAg IGludCBmaW5kVHJhbnNhY3Rpb25CeVdpbmRvdyh4Y2Jfd2luZG93X3Qgd2luZG93KTsKLSsgICAg aW50IGZpbmRUcmFuc2FjdGlvbkJ5VGltZSh4Y2JfdGltZXN0YW1wX3QgdGltZXN0YW1wKTsKLSsg ICAgeGNiX3dpbmRvd190IGZpbmRSZWFsV2luZG93KGNvbnN0IFFQb2ludCAmIHBvcywgeGNiX3dp bmRvd190IHcsIGludCBtZCwgYm9vbCBpZ25vcmVOb25YZG5kQXdhcmVXaW5kb3dzKTsKLSt9Owot K1FfREVDTEFSRV9UWVBFSU5GTyhRWGNiRHJhZzo6VHJhbnNhY3Rpb24sIFFfTU9WQUJMRV9UWVBF KTsKLSsKLStRVF9FTkRfTkFNRVNQQUNFCi0rCi0rI2VuZGlmCi1kaWZmIC11ck4gcXQ1ZHhjYi1w bHVnaW4tMS4yLjUub2xkL3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4 Y2JldmVudGRpc3BhdGNoZXIuaCBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9s aWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNiZXZlbnRkaXNwYXRjaGVyLmgKLS0tLSBxdDVkeGNi LXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAv cXhjYmV2ZW50ZGlzcGF0Y2hlci5oCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgcXQ1ZHhjYi1wbHVnaW4tMS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRl di81LjEzLjAvcXhjYmV2ZW50ZGlzcGF0Y2hlci5oCTIwMTktMDctMTIgMjA6MTk6NTUuOTAyOTg2 NTA4ICswMDAwCi1AQCAtMCwwICsxLDExNCBAQAotKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0rKioK LSsqKiBDb3B5cmlnaHQgKEMpIDIwMTggVGhlIFF0IENvbXBhbnkgTHRkLgotKyoqIENvbnRhY3Q6 IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KLSsqKgotKyoqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBRdENvcmUgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgotKyoqCi0rKiogJFFUX0JF R0lOX0xJQ0VOU0U6TEdQTCQKLSsqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKLSsqKiBMaWNl bnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBm aWxlIGluCi0rKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVt ZW50IHByb3ZpZGVkIHdpdGggdGhlCi0rKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGlu IGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCi0rKiogYSB3cml0dGVuIGFn cmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVy bXMKLSsqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0 aW9ucy4gRm9yIGZ1cnRoZXIKLSsqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBh dCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgotKyoqCi0rKiogR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1h eSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgotKyoqIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZQotKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwz IGluY2x1ZGVkIGluIHRoZQotKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZp ZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bwotKyoqIGVuc3VyZSB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKLSsqKiB3aWxs IGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgotKyoq Ci0rKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRlcm5hdGl2ZWx5 LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLSsqKiBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhl IEdOVSBHZW5lcmFsCi0rKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2 ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQotKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBs aWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rKiogRm91bmRh dGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5H UEwzCi0rKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSBy ZXZpZXcgdGhlIGZvbGxvd2luZwotKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKLSsqKiBiZSBtZXQ6IGh0dHBz Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAotKyoqIGh0dHBzOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgotKyoqCi0rKiogJFFUX0VORF9MSUNFTlNF JAotKyoqCi0rKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsjaWZuZGVmIFFYQ0JFVkVOVERJU1BBVENI RVJfSAotKyNkZWZpbmUgUVhDQkVWRU5URElTUEFUQ0hFUl9ICi0rCi0rI2luY2x1ZGUgPFF0Q29y ZS9RT2JqZWN0PgotKyNpbmNsdWRlIDxRdENvcmUvUUV2ZW50TG9vcD4KLSsKLSsjaW5jbHVkZSA8 UXRDb3JlL3ByaXZhdGUvcWV2ZW50ZGlzcGF0Y2hlcl91bml4X3AuaD4KLSsjaWYgUVRfQ09ORklH KGdsaWIpCi0rI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FldmVudGRpc3BhdGNoZXJfZ2xpYl9w Lmg+Ci0rI2luY2x1ZGUgPGdsaWIuaD4KLSsjZW5kaWYKLSsKLStRVF9CRUdJTl9OQU1FU1BBQ0UK LSsKLStjbGFzcyBRWGNiQ29ubmVjdGlvbjsKLSsKLStjbGFzcyBRWGNiVW5peEV2ZW50RGlzcGF0 Y2hlciA6IHB1YmxpYyBRRXZlbnREaXNwYXRjaGVyVU5JWAotK3sKLSsgICAgUV9PQkpFQ1QKLStw dWJsaWM6Ci0rICAgIGV4cGxpY2l0IFFYY2JVbml4RXZlbnREaXNwYXRjaGVyKFFYY2JDb25uZWN0 aW9uICpjb25uZWN0aW9uLCBRT2JqZWN0ICpwYXJlbnQgPSBudWxscHRyKTsKLSsgICAgflFYY2JV bml4RXZlbnREaXNwYXRjaGVyKCk7Ci0rICAgIGJvb2wgcHJvY2Vzc0V2ZW50cyhRRXZlbnRMb29w OjpQcm9jZXNzRXZlbnRzRmxhZ3MgZmxhZ3MpIG92ZXJyaWRlOwotKwotKyAgICAvLyBNYXliZSBz b21lIHVzZXIgY29kZSBkZXBlbmRzIG9uIGRlcHJlY2F0ZWQgUVVuaXhFdmVudERpc3BhdGNoZXJR UEE6OgotKyAgICAvLyBoYXNQZW5kaW5nRXZlbnRzKCkgLyBmbHVzaCgpIGltcGxlbWVudGF0aW9u LCBzbyBrZWVwIGl0IGFyb3VuZCB1bnRpbAotKyAgICAvLyBRdCA2LiBUaGVzZSBtZXRob2RzIGFy ZSBkZXByZWNhdGVkIGluIFFBYnN0cmFjdEV2ZW50RGlzcGF0Y2hlci4KLSsgICAgYm9vbCBoYXNQ ZW5kaW5nRXZlbnRzKCkgb3ZlcnJpZGU7IC8vICMjIyBRdCA2IHJlbW92ZQotKyAgICB2b2lkIGZs dXNoKCkgb3ZlcnJpZGU7ICAgICAgICAgICAgLy8gIyMjIFF0IDYgcmVtb3ZlCi0rCi0rcHJpdmF0 ZToKLSsgICAgUVhjYkNvbm5lY3Rpb24gKm1fY29ubmVjdGlvbjsKLSt9OwotKwotKyNpZiBRVF9D T05GSUcoZ2xpYikKLSsKLStzdHJ1Y3QgWGNiRXZlbnRTb3VyY2U7Ci0rY2xhc3MgUVhjYkdsaWJF dmVudERpc3BhdGNoZXJQcml2YXRlOwotKwotK2NsYXNzIFFYY2JHbGliRXZlbnREaXNwYXRjaGVy IDogcHVibGljIFFFdmVudERpc3BhdGNoZXJHbGliCi0rewotKyAgICBRX09CSkVDVAotKyAgICBR X0RFQ0xBUkVfUFJJVkFURShRWGNiR2xpYkV2ZW50RGlzcGF0Y2hlcikKLSsKLStwdWJsaWM6Ci0r ICAgIGV4cGxpY2l0IFFYY2JHbGliRXZlbnREaXNwYXRjaGVyKFFYY2JDb25uZWN0aW9uICpjb25u ZWN0aW9uLCBRT2JqZWN0ICpwYXJlbnQgPSBudWxscHRyKTsKLSsgICAgflFYY2JHbGliRXZlbnRE aXNwYXRjaGVyKCk7Ci0rCi0rICAgIGJvb2wgcHJvY2Vzc0V2ZW50cyhRRXZlbnRMb29wOjpQcm9j ZXNzRXZlbnRzRmxhZ3MgZmxhZ3MpIG92ZXJyaWRlOwotKyAgICBRRXZlbnRMb29wOjpQcm9jZXNz RXZlbnRzRmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0rCi0rcHJpdmF0 ZToKLSsgICAgWGNiRXZlbnRTb3VyY2UgKm1feGNiRXZlbnRTb3VyY2U7Ci0rICAgIEdTb3VyY2VG dW5jcyBtX3hjYkV2ZW50U291cmNlRnVuY3M7Ci0rICAgIFFFdmVudExvb3A6OlByb2Nlc3NFdmVu dHNGbGFncyBtX2ZsYWdzOwotK307Ci0rCi0rY2xhc3MgUVhjYkdsaWJFdmVudERpc3BhdGNoZXJQ cml2YXRlIDogcHVibGljIFFFdmVudERpc3BhdGNoZXJHbGliUHJpdmF0ZQotK3sKLSsgICAgUV9E RUNMQVJFX1BVQkxJQyhRWGNiR2xpYkV2ZW50RGlzcGF0Y2hlcikKLSsKLStwdWJsaWM6Ci0rICAg IFFYY2JHbGliRXZlbnREaXNwYXRjaGVyUHJpdmF0ZSgpOwotK307Ci0rCi0rI2VuZGlmIC8vIFFU X0NPTkZJRyhnbGliKQotKwotK2NsYXNzIFFYY2JFdmVudERpc3BhdGNoZXIKLSt7Ci0rcHVibGlj OgotKyAgICBzdGF0aWMgUUFic3RyYWN0RXZlbnREaXNwYXRjaGVyICpjcmVhdGVFdmVudERpc3Bh dGNoZXIoUVhjYkNvbm5lY3Rpb24gKmNvbm5lY3Rpb24pOwotK307Ci0rCi0rUVRfRU5EX05BTUVT UEFDRQotKwotKyNlbmRpZiAvLyBRWENCRVZFTlRESVNQQVRDSEVSX0gKLWRpZmYgLXVyTiBxdDVk eGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEz LjAvcXhjYmV2ZW50cXVldWUuaCBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9s aWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNiZXZlbnRxdWV1ZS5oCi0tLS0gcXQ1ZHhjYi1wbHVn aW4tMS4yLjUub2xkL3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2Jl dmVudHF1ZXVlLmgJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBxdDVk eGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9x eGNiZXZlbnRxdWV1ZS5oCTIwMTktMDctMTIgMjA6MTk6NTUuOTAyOTg2NTA4ICswMDAwCi1AQCAt MCwwICsxLDE2OSBAQAotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0rKioKLSsqKiBDb3B5cmlnaHQg KEMpIDIwMTggVGhlIFF0IENvbXBhbnkgTHRkLgotKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0 LmlvL2xpY2Vuc2luZy8KLSsqKgotKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdENvcmUg bW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgotKyoqCi0rKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQ TCQKLSsqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKLSsqKiBMaWNlbnNlZXMgaG9sZGluZyB2 YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCi0rKiogYWNj b3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdp dGggdGhlCi0rKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0 aCB0aGUgdGVybXMgY29udGFpbmVkIGluCi0rKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVu IHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKLSsqKiBhbmQgY29u ZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRo ZXIKLSsqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5x dC5pby9jb250YWN0LXVzLgotKyoqCi0rKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgotKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZvdW5kYXRp b24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRo ZQotKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2lu ZyBpbmZvcm1hdGlvbiB0bwotKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKLSsqKiB3aWxsIGJlIG1ldDogaHR0cHM6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgotKyoqCi0rKiogR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5 IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLSsqKiBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCi0r KiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVk IGJ5IHRoZSBLREUgRnJlZQotKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rKiogRm91bmRhdGlvbiBhbmQgYXBwZWFy aW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCi0rKiogaW5jbHVk ZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxv d2luZwotKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKLSsqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAotKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvZ3BsLTMuMC5odG1sLgotKyoqCi0rKiogJFFUX0VORF9MSUNFTlNFJAotKyoqCi0rKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KLSsjaWZuZGVmIFFYQ0JFVkVOVFFVRVVFX0gKLSsjZGVmaW5lIFFYQ0JF VkVOVFFVRVVFX0gKLSsKLSsjaW5jbHVkZSA8UXRDb3JlL1FUaHJlYWQ+Ci0rI2luY2x1ZGUgPFF0 Q29yZS9RSGFzaD4KLSsjaW5jbHVkZSA8UXRDb3JlL1FFdmVudExvb3A+Ci0rI2luY2x1ZGUgPFF0 Q29yZS9RVmVjdG9yPgotKyNpbmNsdWRlIDxRdENvcmUvUU11dGV4PgotKyNpbmNsdWRlIDxRdENv cmUvUVdhaXRDb25kaXRpb24+Ci0rCi0rI2luY2x1ZGUgPHhjYi94Y2IuaD4KLSsKLSsjaW5jbHVk ZSA8YXRvbWljPgotKwotK1FUX0JFR0lOX05BTUVTUEFDRQotKwotK3N0cnVjdCBRWGNiRXZlbnRO b2RlIHsKLSsgICAgUVhjYkV2ZW50Tm9kZSh4Y2JfZ2VuZXJpY19ldmVudF90ICplID0gbnVsbHB0 cikKLSsgICAgICAgIDogZXZlbnQoZSkgeyB9Ci0rCi0rICAgIHhjYl9nZW5lcmljX2V2ZW50X3Qg KmV2ZW50OwotKyAgICBRWGNiRXZlbnROb2RlICpuZXh0ID0gbnVsbHB0cjsKLSsgICAgYm9vbCBm cm9tSGVhcCA9IGZhbHNlOwotK307Ci0rCi0rY2xhc3MgUVhjYkNvbm5lY3Rpb247Ci0rY2xhc3Mg UUFic3RyYWN0RXZlbnREaXNwYXRjaGVyOwotKwotK2NsYXNzIFFYY2JFdmVudFF1ZXVlIDogcHVi bGljIFFUaHJlYWQKLSt7Ci0rICAgIFFfT0JKRUNUCi0rcHVibGljOgotKyAgICBRWGNiRXZlbnRR dWV1ZShRWGNiQ29ubmVjdGlvbiAqY29ubmVjdGlvbik7Ci0rICAgIH5RWGNiRXZlbnRRdWV1ZSgp OwotKwotKyAgICBlbnVtIHsgUG9vbFNpemUgPSAxMDAgfTsgLy8gMi40IGtCIHdpdGggMTAwIG5v ZGVzCi0rCi0rICAgIGVudW0gUGVla09wdGlvbiB7Ci0rICAgICAgICBQZWVrRGVmYXVsdCA9IDAs IC8vIHNlZSBxeDExaW5mb194MTEuaCBmb3IgZG9jcwotKyAgICAgICAgUGVla0Zyb21DYWNoZWRJ bmRleCA9IDEsCi0rICAgICAgICBQZWVrUmV0YWluTWF0Y2ggPSAyLAotKyAgICAgICAgUGVla1Jl bW92ZU1hdGNoID0gMywKLSsgICAgICAgIFBlZWtSZW1vdmVNYXRjaENvbnRpbnVlID0gNAotKyAg ICB9OwotKyAgICBRX0RFQ0xBUkVfRkxBR1MoUGVla09wdGlvbnMsIFBlZWtPcHRpb24pCi0rCi0r ICAgIHZvaWQgcnVuKCkgb3ZlcnJpZGU7Ci0rCi0rICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg cmV0dXJuIG1faGVhZCA9PSBtX2ZsdXNoZWRUYWlsICYmICFtX2hlYWQtPmV2ZW50OyB9Ci0rICAg IHhjYl9nZW5lcmljX2V2ZW50X3QgKnRha2VGaXJzdChRRXZlbnRMb29wOjpQcm9jZXNzRXZlbnRz RmxhZ3MgZmxhZ3MpOwotKyAgICB4Y2JfZ2VuZXJpY19ldmVudF90ICp0YWtlRmlyc3QoKTsKLSsg ICAgdm9pZCBmbHVzaEJ1ZmZlcmVkRXZlbnRzKCk7Ci0rICAgIHZvaWQgd2FrZVVwRGlzcGF0Y2hl cigpOwotKwotKyAgICAvLyAjIyMgcGVlaygpIGFuZCBwZWVrRXZlbnRRdWV1ZSgpIGNvdWxkIGJl IHVuaWZpZWQuIE5vdGUgdGhhdCBwZWVrRXZlbnRRdWV1ZSgpCi0rICAgIC8vIGlzIHB1YmxpYyBB UEkgZXhwb3NlZCB2aWEgUVgxMUV4dHJhcy9RWDExSW5mby4KLSsgICAgdGVtcGxhdGU8dHlwZW5h bWUgUGVla2VyPgotKyAgICB4Y2JfZ2VuZXJpY19ldmVudF90ICpwZWVrKFBlZWtlciAmJnBlZWtl cikgewotKyAgICAgICAgcmV0dXJuIHBlZWsoUGVla1JlbW92ZU1hdGNoLCBzdGQ6OmZvcndhcmQ8 UGVla2VyPihwZWVrZXIpKTsKLSsgICAgfQotKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQZWVrZXI+ Ci0rICAgIGlubGluZSB4Y2JfZ2VuZXJpY19ldmVudF90ICpwZWVrKFBlZWtPcHRpb24gY29uZmln LCBQZWVrZXIgJiZwZWVrZXIpOwotKwotKyAgICBxaW50MzIgZ2VuZXJhdGVQZWVrZXJJZCgpOwot KyAgICBib29sIHJlbW92ZVBlZWtlcklkKHFpbnQzMiBwZWVrZXJJZCk7Ci0rCi0rICAgIHVzaW5n IFBlZWtlckNhbGxiYWNrID0gYm9vbCAoKikoeGNiX2dlbmVyaWNfZXZlbnRfdCAqZXZlbnQsIHZv aWQgKnBlZWtlckRhdGEpOwotKyAgICBib29sIHBlZWtFdmVudFF1ZXVlKFBlZWtlckNhbGxiYWNr IHBlZWtlciwgdm9pZCAqcGVla2VyRGF0YSA9IG51bGxwdHIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgUGVla09wdGlvbnMgb3B0aW9uID0gUGVla0RlZmF1bHQsIHFpbnQzMiBwZWVrZXJJZCA9 IC0xKTsKLSsKLSsgICAgdm9pZCB3YWl0Rm9yTmV3RXZlbnRzKHVuc2lnbmVkIGxvbmcgdGltZSA9 IFVMT05HX01BWCk7Ci0rCi0rcHJpdmF0ZToKLSsgICAgUVhjYkV2ZW50Tm9kZSAqcVhjYkV2ZW50 Tm9kZUZhY3RvcnkoeGNiX2dlbmVyaWNfZXZlbnRfdCAqZXZlbnQpOwotKyAgICB2b2lkIGRlcXVl dWVOb2RlKCk7Ci0rCi0rICAgIHZvaWQgc2VuZENsb3NlQ29ubmVjdGlvbkV2ZW50KCkgY29uc3Q7 Ci0rICAgIGJvb2wgaXNDbG9zZUNvbm5lY3Rpb25FdmVudChjb25zdCB4Y2JfZ2VuZXJpY19ldmVu dF90ICpldmVudCk7Ci0rCi0rICAgIFFYY2JFdmVudE5vZGUgKm1faGVhZCA9IG51bGxwdHI7Ci0r ICAgIFFYY2JFdmVudE5vZGUgKm1fZmx1c2hlZFRhaWwgPSBudWxscHRyOwotKyAgICBzdGQ6OmF0 b21pYzxRWGNiRXZlbnROb2RlICo+IG1fdGFpbCB7IG51bGxwdHIgfTsKLSsgICAgc3RkOjphdG9t aWNfdWludCBtX25vZGVzUmVzdG9yZWQgeyAwIH07Ci0rCi0rICAgIFFYY2JDb25uZWN0aW9uICpt X2Nvbm5lY3Rpb24gPSBudWxscHRyOwotKyAgICBib29sIG1fY2xvc2VDb25uZWN0aW9uRGV0ZWN0 ZWQgPSBmYWxzZTsKLSsKLSsgICAgdWludCBtX2ZyZWVOb2RlcyA9IFBvb2xTaXplOwotKyAgICB1 aW50IG1fcG9vbEluZGV4ID0gMDsKLSsKLSsgICAgcWludDMyIG1fcGVla2VySWRTb3VyY2UgPSAw OwotKyAgICBib29sIG1fcXVldWVNb2RpZmllZCA9IGZhbHNlOwotKyAgICBib29sIG1fcGVla2Vy SW5kZXhDYWNoZURpcnR5ID0gZmFsc2U7Ci0rICAgIFFIYXNoPHFpbnQzMiwgUVhjYkV2ZW50Tm9k ZSAqPiBtX3BlZWtlclRvTm9kZTsKLSsKLSsgICAgUVZlY3Rvcjx4Y2JfZ2VuZXJpY19ldmVudF90 ICo+IG1faW5wdXRFdmVudHM7Ci0rCi0rICAgIC8vIGRlYnVnIHN0YXRzCi0rICAgIHF1aW50NjQg bV9ub2Rlc09uSGVhcCA9IDA7Ci0rCi0rICAgIFFNdXRleCBtX25ld0V2ZW50c011dGV4OwotKyAg ICBRV2FpdENvbmRpdGlvbiBtX25ld0V2ZW50c0NvbmRpdGlvbjsKLSt9OwotKwotK3RlbXBsYXRl PHR5cGVuYW1lIFBlZWtlcj4KLSt4Y2JfZ2VuZXJpY19ldmVudF90ICpRWGNiRXZlbnRRdWV1ZTo6 cGVlayhQZWVrT3B0aW9uIG9wdGlvbiwgUGVla2VyICYmcGVla2VyKQotK3sKLSsgICAgZmx1c2hC dWZmZXJlZEV2ZW50cygpOwotKyAgICBpZiAoaXNFbXB0eSgpKQotKyAgICAgICAgcmV0dXJuIG51 bGxwdHI7Ci0rCi0rICAgIFFYY2JFdmVudE5vZGUgKm5vZGUgPSBtX2hlYWQ7Ci0rICAgIGRvIHsK LSsgICAgICAgIHhjYl9nZW5lcmljX2V2ZW50X3QgKmV2ZW50ID0gbm9kZS0+ZXZlbnQ7Ci0rICAg ICAgICBpZiAoZXZlbnQgJiYgcGVla2VyKGV2ZW50LCBldmVudC0+cmVzcG9uc2VfdHlwZSAmIH4w eDgwKSkgewotKyAgICAgICAgICAgIGlmIChvcHRpb24gPT0gUGVla1JlbW92ZU1hdGNoIHx8IG9w dGlvbiA9PSBQZWVrUmVtb3ZlTWF0Y2hDb250aW51ZSkKLSsgICAgICAgICAgICAgICAgbm9kZS0+ ZXZlbnQgPSBudWxscHRyOwotKyAgICAgICAgICAgIGlmIChvcHRpb24gIT0gUGVla1JlbW92ZU1h dGNoQ29udGludWUpCi0rICAgICAgICAgICAgICAgIHJldHVybiBldmVudDsKLSsgICAgICAgIH0K LSsgICAgICAgIGlmIChub2RlID09IG1fZmx1c2hlZFRhaWwpCi0rICAgICAgICAgICAgYnJlYWs7 Ci0rICAgICAgICBub2RlID0gbm9kZS0+bmV4dDsKLSsgICAgfSB3aGlsZSAodHJ1ZSk7Ci0rCi0r ICAgIHJldHVybiBudWxscHRyOwotK30KLSsKLStRVF9FTkRfTkFNRVNQQUNFCi0rCi0rI2VuZGlm Ci1kaWZmIC11ck4gcXQ1ZHhjYi1wbHVnaW4tMS4yLjUub2xkL3BsYXRmb3JtcGx1Z2luL2xpYnF0 NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2JleHBvcnQuaCBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0 Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNiZXhwb3J0LmgKLS0tLSBxdDVk eGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEz LjAvcXhjYmV4cG9ydC5oCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysg cXQ1ZHhjYi1wbHVnaW4tMS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEz LjAvcXhjYmV4cG9ydC5oCTIwMTktMDctMTIgMjA6MTk6NTUuOTAzOTg2NTA4ICswMDAwCi1AQCAt MCwwICsxLDU1IEBACi0rLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSsqKgotKyoqIENvcHlyaWdodCAo QykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCi0rKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQu aW8vbGljZW5zaW5nLwotKyoqCi0rKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHBsdWdpbnMg b2YgdGhlIFF0IFRvb2xraXQuCi0rKioKLSsqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAotKyoq IENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQotKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNv bW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KLSsqKiBhY2NvcmRhbmNl IHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUK LSsqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0 ZXJtcyBjb250YWluZWQgaW4KLSsqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFu ZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcwotKyoqIGFuZCBjb25kaXRpb25z IHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgotKyoq IGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2Nv bnRhY3QtdXMuCi0rKioKLSsqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNh Z2UKLSsqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgTGVzc2VyCi0rKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9u IDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rKiogRm91bmRhdGlvbiBhbmQg YXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCi0rKiog cGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9y bWF0aW9uIHRvCi0rKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cwotKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCi0rKioKLSsqKiBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBVc2FnZQotKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNl ZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKLSsqKiBQdWJs aWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhl IEtERSBGcmVlCi0rKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4g dGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKLSsqKiBpbmNsdWRlZCBpbiB0 aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCi0r KiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBy ZXF1aXJlbWVudHMgd2lsbAotKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy9ncGwtMi4wLmh0bWwgYW5kCi0rKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwt My4wLmh0bWwuCi0rKioKLSsqKiAkUVRfRU5EX0xJQ0VOU0UkCi0rKioKLSsqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwotKwotKyNpZm5kZWYgUVhDQkVYUE9SVF9ICi0rI2RlZmluZSBRWENCRVhQT1JUX0gK LSsKLSsjaW5jbHVkZSA8UXRDb3JlL3FnbG9iYWwuaD4KLSsKLStRVF9CRUdJTl9OQU1FU1BBQ0UK LSsKLSsjICBpZiBkZWZpbmVkKFFUX0JVSUxEX1hDQl9QTFVHSU4pCi0rIyAgICBkZWZpbmUgUV9Y Q0JfRVhQT1JUIFFfREVDTF9FWFBPUlQKLSsjICBlbHNlCi0rIyAgICBkZWZpbmUgUV9YQ0JfRVhQ T1JUIFFfREVDTF9JTVBPUlQKLSsjICBlbmRpZgotKwotK1FUX0VORF9OQU1FU1BBQ0UKLSsjZW5k aWYgLy9RWENCRVhQT1JUX0gKLSsKLWRpZmYgLXVyTiBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQv cGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmltYWdlLmggcXQ1ZHhj Yi1wbHVnaW4tMS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhj YmltYWdlLmgKLS0tLSBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4vbGli cXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmltYWdlLmgJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9saWJx dDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNiaW1hZ2UuaAkyMDE5LTA3LTEyIDIwOjE5OjU1LjkwMzk4 NjUwOCArMDAwMAotQEAgLTAsMCArMSw2MiBAQAotKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0rKioK LSsqKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgotKyoqIENvbnRhY3Q6 IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KLSsqKgotKyoqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBwbHVnaW5zIG9mIHRoZSBRdCBUb29sa2l0LgotKyoqCi0rKiogJFFUX0JFR0lOX0xJ Q0VOU0U6TEdQTCQKLSsqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKLSsqKiBMaWNlbnNlZXMg aG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGlu Ci0rKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHBy b3ZpZGVkIHdpdGggdGhlCi0rKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29y ZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCi0rKiogYSB3cml0dGVuIGFncmVlbWVu dCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKLSsq KiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4g Rm9yIGZ1cnRoZXIKLSsqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRw czovL3d3dy5xdC5pby9jb250YWN0LXVzLgotKyoqCi0rKiogR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1 c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgotKyoqIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoq IEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1 ZGVkIGluIHRoZQotKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhl IGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bwotKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKLSsqKiB3aWxsIGJlIG1l dDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgotKyoqCi0rKiog R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRlcm5hdGl2ZWx5LCB0aGlz IGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLSsqKiBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBH ZW5lcmFsCi0rKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9u IGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQotKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNl cyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rKiogRm91bmRhdGlvbiBh bmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCi0r KiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcg dGhlIGZvbGxvd2luZwotKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKLSsqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAotKyoqIGh0dHBzOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgotKyoqCi0rKiogJFFUX0VORF9MSUNFTlNFJAotKyoq Ci0rKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KLSsKLSsjaWZuZGVmIFFYQ0JJTUFHRV9ICi0rI2RlZmlu ZSBRWENCSU1BR0VfSAotKwotKyNpbmNsdWRlICJxeGNic2NyZWVuLmgiCi0rI2luY2x1ZGUgPFF0 Q29yZS9RUGFpcj4KLSsjaW5jbHVkZSA8UXRHdWkvUUltYWdlPgotKyNpbmNsdWRlIDxRdEd1aS9R UGl4bWFwPgotKyNpbmNsdWRlIDx4Y2IveGNiX2ltYWdlLmg+Ci0rCi0rUVRfQkVHSU5fTkFNRVNQ QUNFCi0rCi0rYm9vbCBxdF94Y2JfaW1hZ2VGb3JtYXRGb3JWaXN1YWwoUVhjYkNvbm5lY3Rpb24g KmNvbm5lY3Rpb24sIHVpbnQ4X3QgZGVwdGgsIGNvbnN0IHhjYl92aXN1YWx0eXBlX3QgKnZpc3Vh bCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRSW1hZ2U6OkZvcm1hdCAqaW1h Z2VGb3JtYXQsIGJvb2wgKm5lZWRzUmdiU3dhcCA9IG51bGxwdHIpOwotK1FQaXhtYXAgcXRfeGNi X3BpeG1hcEZyb21YUGl4bWFwKFFYY2JDb25uZWN0aW9uICpjb25uZWN0aW9uLCB4Y2JfcGl4bWFw X3QgcGl4bWFwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwg aW50IGhlaWdodCwgaW50IGRlcHRoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHhjYl92aXN1YWx0eXBlX3QgKnZpc3VhbCk7Ci0reGNiX3BpeG1hcF90IHF0X3hjYl9Y UGl4bWFwRnJvbUJpdG1hcChRWGNiU2NyZWVuICpzY3JlZW4sIGNvbnN0IFFJbWFnZSAmaW1hZ2Up OwotK3hjYl9jdXJzb3JfdCBxdF94Y2JfY3JlYXRlQ3Vyc29yWFJlbmRlcihRWGNiU2NyZWVuICpz Y3JlZW4sIGNvbnN0IFFJbWFnZSAmaW1hZ2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IFFQb2ludCAmc3BvdCk7Ci0rCi0rUVRfRU5EX05BTUVTUEFDRQot KwotKyNlbmRpZgotZGlmZiAtdXJOIHF0NWR4Y2ItcGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBs dWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNiaW50ZWdyYXRpb24uaCBxdDVkeGNiLXBs dWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNiaW50 ZWdyYXRpb24uaAotLS0tIHF0NWR4Y2ItcGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9s aWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNiaW50ZWdyYXRpb24uaAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIHF0NWR4Y2ItcGx1Z2luLTEuMi41L3BsYXRmb3JtcGx1 Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2JpbnRlZ3JhdGlvbi5oCTIwMTktMDctMTIg MjA6MTk6NTUuOTAzOTg2NTA4ICswMDAwCi1AQCAtMCwwICsxLDE1MCBAQAotKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCi0rKioKLSsqKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRk LgotKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KLSsqKgotKyoqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBwbHVnaW5zIG9mIHRoZSBRdCBUb29sa2l0LgotKyoqCi0r KiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKLSsqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UK LSsqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1 c2UgdGhpcyBmaWxlIGluCi0rKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vu c2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCi0rKiogU29mdHdhcmUgb3IsIGFsdGVybmF0 aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCi0rKiogYSB3 cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNl bnNpbmcgdGVybXMKLSsqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVy bXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKLSsqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRh Y3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgotKyoqCi0rKiogR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwgdGhp cyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgotKyoq IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZQotKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNF TlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQotKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBs ZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bwotKyoqIGVuc3VyZSB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMK LSsqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5o dG1sLgotKyoqCi0rKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRl cm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUKLSsqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9w dGlvbikgdGhlIEdOVSBHZW5lcmFsCi0rKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFu eSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQotKyoqIFF0IEZvdW5kYXRp b24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0r KiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQg TElDRU5TRS5HUEwzCi0rKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUu IFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZwotKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKLSsqKiBiZSBt ZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAotKyoqIGh0 dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgotKyoqCi0rKiogJFFUX0VO RF9MSUNFTlNFJAotKyoqCi0rKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsKLSsjaWZuZGVmIFFYQ0JJ TlRFR1JBVElPTl9ICi0rI2RlZmluZSBRWENCSU5URUdSQVRJT05fSAotKwotKyNpbmNsdWRlIDxR dEd1aS9wcml2YXRlL3F0Z3VpZ2xvYmFsX3AuaD4KLSsjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWlu dGVncmF0aW9uLmg+Ci0rI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1zY3JlZW4uaD4KLSsKLSsjaW5j bHVkZSAicXhjYmV4cG9ydC5oIgotKwotKyNpbmNsdWRlIDx4Y2IveGNiLmg+Ci0rCi0rUVRfQkVH SU5fTkFNRVNQQUNFCi0rCi0rY2xhc3MgUVhjYkNvbm5lY3Rpb247Ci0rY2xhc3MgUUFic3RyYWN0 RXZlbnREaXNwYXRjaGVyOwotK2NsYXNzIFFYY2JOYXRpdmVJbnRlcmZhY2U7Ci0rCi0rY2xhc3Mg UV9YQ0JfRVhQT1JUIFFYY2JJbnRlZ3JhdGlvbiA6IHB1YmxpYyBRUGxhdGZvcm1JbnRlZ3JhdGlv bgotK3sKLStwdWJsaWM6Ci0rICAgIFFYY2JJbnRlZ3JhdGlvbihjb25zdCBRU3RyaW5nTGlzdCAm cGFyYW1ldGVycywgaW50ICZhcmdjLCBjaGFyICoqYXJndik7Ci0rICAgIH5RWGNiSW50ZWdyYXRp b24oKTsKLSsKLSsgICAgUVBsYXRmb3JtUGl4bWFwICpjcmVhdGVQbGF0Zm9ybVBpeG1hcChRUGxh dGZvcm1QaXhtYXA6OlBpeGVsVHlwZSB0eXBlKSBjb25zdCBvdmVycmlkZTsKLSsgICAgUVBsYXRm b3JtV2luZG93ICpjcmVhdGVQbGF0Zm9ybVdpbmRvdyhRV2luZG93ICp3aW5kb3cpIGNvbnN0IG92 ZXJyaWRlOwotKyAgICBRUGxhdGZvcm1XaW5kb3cgKmNyZWF0ZUZvcmVpZ25XaW5kb3coUVdpbmRv dyAqd2luZG93LCBXSWQgbmF0aXZlSGFuZGxlKSBjb25zdCBvdmVycmlkZTsKLSsjaWZuZGVmIFFU X05PX09QRU5HTAotKyAgICBRUGxhdGZvcm1PcGVuR0xDb250ZXh0ICpjcmVhdGVQbGF0Zm9ybU9w ZW5HTENvbnRleHQoUU9wZW5HTENvbnRleHQgKmNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwotKyNl bmRpZgotKyAgICBRUGxhdGZvcm1CYWNraW5nU3RvcmUgKmNyZWF0ZVBsYXRmb3JtQmFja2luZ1N0 b3JlKFFXaW5kb3cgKndpbmRvdykgY29uc3Qgb3ZlcnJpZGU7Ci0rCi0rICAgIFFQbGF0Zm9ybU9m ZnNjcmVlblN1cmZhY2UgKmNyZWF0ZVBsYXRmb3JtT2Zmc2NyZWVuU3VyZmFjZShRT2Zmc2NyZWVu U3VyZmFjZSAqc3VyZmFjZSkgY29uc3Qgb3ZlcnJpZGU7Ci0rCi0rICAgIGJvb2wgaGFzQ2FwYWJp bGl0eShDYXBhYmlsaXR5IGNhcCkgY29uc3Qgb3ZlcnJpZGU7Ci0rICAgIFFBYnN0cmFjdEV2ZW50 RGlzcGF0Y2hlciAqY3JlYXRlRXZlbnREaXNwYXRjaGVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0rICAg IHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwotKwotKyAgICB2b2lkIG1vdmVUb1NjcmVlbihR V2luZG93ICp3aW5kb3csIGludCBzY3JlZW4pOwotKwotKyAgICBRUGxhdGZvcm1Gb250RGF0YWJh c2UgKmZvbnREYXRhYmFzZSgpIGNvbnN0IG92ZXJyaWRlOwotKwotKyAgICBRUGxhdGZvcm1OYXRp dmVJbnRlcmZhY2UgKm5hdGl2ZUludGVyZmFjZSgpY29uc3Qgb3ZlcnJpZGU7Ci0rCi0rI2lmbmRl ZiBRVF9OT19DTElQQk9BUkQKLSsgICAgUVBsYXRmb3JtQ2xpcGJvYXJkICpjbGlwYm9hcmQoKSBj b25zdCBvdmVycmlkZTsKLSsjZW5kaWYKLSsjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQotKyAg ICBRUGxhdGZvcm1EcmFnICpkcmFnKCkgY29uc3Qgb3ZlcnJpZGU7Ci0rI2VuZGlmCi0rCi0rICAg IFFQbGF0Zm9ybUlucHV0Q29udGV4dCAqaW5wdXRDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0r Ci0rI2lmbmRlZiBRVF9OT19BQ0NFU1NJQklMSVRZCi0rICAgIFFQbGF0Zm9ybUFjY2Vzc2liaWxp dHkgKmFjY2Vzc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZTsKLSsjZW5kaWYKLSsKLSsgICAgUVBs YXRmb3JtU2VydmljZXMgKnNlcnZpY2VzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0rCi0rICAgIFF0OjpL ZXlib2FyZE1vZGlmaWVycyBxdWVyeUtleWJvYXJkTW9kaWZpZXJzKCkgY29uc3Qgb3ZlcnJpZGU7 Ci0rICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZSkgY29uc3Qg b3ZlcnJpZGU7Ci0rCi0rICAgIFFTdHJpbmdMaXN0IHRoZW1lTmFtZXMoKSBjb25zdCBvdmVycmlk ZTsKLSsgICAgUVBsYXRmb3JtVGhlbWUgKmNyZWF0ZVBsYXRmb3JtVGhlbWUoY29uc3QgUVN0cmlu ZyAmbmFtZSkgY29uc3Qgb3ZlcnJpZGU7Ci0rICAgIFFWYXJpYW50IHN0eWxlSGludChTdHlsZUhp bnQgaGludCkgY29uc3Qgb3ZlcnJpZGU7Ci0rCi0rICAgIGJvb2wgaGFzRGVmYXVsdENvbm5lY3Rp b24oKSBjb25zdCB7IHJldHVybiAhbV9jb25uZWN0aW9ucy5pc0VtcHR5KCk7IH0KLSsgICAgUVhj YkNvbm5lY3Rpb24gKmRlZmF1bHRDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0 aW9ucy5maXJzdCgpOyB9Ci0rCi0rICAgIFFCeXRlQXJyYXkgd21DbGFzcygpIGNvbnN0OwotKwot KyNpZiBRVF9DT05GSUcoeGNiX3NtKQotKyAgICBRUGxhdGZvcm1TZXNzaW9uTWFuYWdlciAqY3Jl YXRlUGxhdGZvcm1TZXNzaW9uTWFuYWdlcihjb25zdCBRU3RyaW5nICZpZCwgY29uc3QgUVN0cmlu ZyAma2V5KSBjb25zdCBvdmVycmlkZTsKLSsjZW5kaWYKLSsKLSsgICAgdm9pZCBzeW5jKCkgb3Zl cnJpZGU7Ci0rCi0rICAgIHZvaWQgYmVlcCgpIGNvbnN0IG92ZXJyaWRlOwotKwotKyAgICBib29s IG5hdGl2ZVBhaW50aW5nRW5hYmxlZCgpIGNvbnN0OwotKwotKyNpZiBRVF9DT05GSUcodnVsa2Fu KQotKyAgICBRUGxhdGZvcm1WdWxrYW5JbnN0YW5jZSAqY3JlYXRlUGxhdGZvcm1WdWxrYW5JbnN0 YW5jZShRVnVsa2FuSW5zdGFuY2UgKmluc3RhbmNlKSBjb25zdCBvdmVycmlkZTsKLSsjZW5kaWYK LSsKLSsgICAgc3RhdGljIFFYY2JJbnRlZ3JhdGlvbiAqaW5zdGFuY2UoKSB7IHJldHVybiBtX2lu c3RhbmNlOyB9Ci0rCi0rcHJpdmF0ZToKLSsgICAgUUxpc3Q8UVhjYkNvbm5lY3Rpb24gKj4gbV9j b25uZWN0aW9uczsKLSsKLSsgICAgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtRm9udERhdGFiYXNl PiBtX2ZvbnREYXRhYmFzZTsKLSsgICAgUVNjb3BlZFBvaW50ZXI8UVhjYk5hdGl2ZUludGVyZmFj ZT4gbV9uYXRpdmVJbnRlcmZhY2U7Ci0rCi0rICAgIFFTY29wZWRQb2ludGVyPFFQbGF0Zm9ybUlu cHV0Q29udGV4dD4gbV9pbnB1dENvbnRleHQ7Ci0rCi0rI2lmbmRlZiBRVF9OT19BQ0NFU1NJQklM SVRZCi0rICAgIG11dGFibGUgUVNjb3BlZFBvaW50ZXI8UVBsYXRmb3JtQWNjZXNzaWJpbGl0eT4g bV9hY2Nlc3NpYmlsaXR5OwotKyNlbmRpZgotKwotKyAgICBRU2NvcGVkUG9pbnRlcjxRUGxhdGZv cm1TZXJ2aWNlcz4gbV9zZXJ2aWNlczsKLSsKLSsgICAgbXV0YWJsZSBRQnl0ZUFycmF5IG1fd21D bGFzczsKLSsgICAgY29uc3QgY2hhciAqbV9pbnN0YW5jZU5hbWU7Ci0rICAgIGJvb2wgbV9jYW5H cmFiOwotKyAgICB4Y2JfdmlzdWFsaWRfdCBtX2RlZmF1bHRWaXN1YWxJZDsKLSsKLSsgICAgc3Rh dGljIFFYY2JJbnRlZ3JhdGlvbiAqbV9pbnN0YW5jZTsKLSt9OwotKwotK1FUX0VORF9OQU1FU1BB Q0UKLSsKLSsjZW5kaWYKLWRpZmYgLXVyTiBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZv cm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmtleWJvYXJkLmggcXQ1ZHhjYi1w bHVnaW4tMS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmtl eWJvYXJkLmgKLS0tLSBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4vbGli cXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYmtleWJvYXJkLmgJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9s aWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNia2V5Ym9hcmQuaAkyMDE5LTA3LTEyIDIwOjE5OjU1 LjkwMzk4NjUwOCArMDAwMAotQEAgLTAsMCArMSwxNTEgQEAKLSsvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgotKyoqCi0rKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KLSsqKiBD b250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCi0rKioKLSsqKiBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgcGx1Z2lucyBvZiB0aGUgUXQgVG9vbGtpdC4KLSsqKgotKyoqICRRVF9C RUdJTl9MSUNFTlNFOkxHUEwkCi0rKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCi0rKiogTGlj ZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMg ZmlsZSBpbgotKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVl bWVudCBwcm92aWRlZCB3aXRoIHRoZQotKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBp biBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgotKyoqIGEgd3JpdHRlbiBh Z3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRl cm1zCi0rKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRp dGlvbnMuIEZvciBmdXJ0aGVyCi0rKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0g YXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KLSsqKgotKyoqIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQotKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBt YXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKLSsqKiBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUKLSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BM MyBpbmNsdWRlZCBpbiB0aGUKLSsqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2 aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KLSsqKiBlbnN1cmUgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCi0rKiogd2ls bCBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KLSsq KgotKyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVs eSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rKiog R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRo ZSBHTlUgR2VuZXJhbAotKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIg dmVyc2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKLSsqKiBRdCBGb3VuZGF0aW9uLiBUaGUg bGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZvdW5k YXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0Uu R1BMMwotKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2Ug cmV2aWV3IHRoZSBmb2xsb3dpbmcKLSsqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCi0rKiogYmUgbWV0OiBodHRw czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKLSsqKiBodHRwczovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KLSsqKgotKyoqICRRVF9FTkRfTElDRU5T RSQKLSsqKgotKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0rCi0rI2lmbmRlZiBRWENCS0VZQk9BUkRf SAotKyNkZWZpbmUgUVhDQktFWUJPQVJEX0gKLSsKLSsjaW5jbHVkZSAicXhjYm9iamVjdC5oIgot KwotKyNpbmNsdWRlIDx4Y2IveGNiX2tleXN5bXMuaD4KLSsjaWYgUVRfQ09ORklHKHhrYikKLSsj ZGVmaW5lIGV4cGxpY2l0IGRvbnRfdXNlX2N4eF9leHBsaWNpdAotKyNpbmNsdWRlIDx4Y2IveGti Lmg+Ci0rI3VuZGVmIGV4cGxpY2l0Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHhrYmNvbW1vbi94 a2Jjb21tb24uaD4KLSsjaW5jbHVkZSA8UXRYa2JDb21tb25TdXBwb3J0L3ByaXZhdGUvcXhrYmNv bW1vbl9wLmg+Ci0rCi0rI2luY2x1ZGUgPFFFdmVudD4KLSsKLStRVF9CRUdJTl9OQU1FU1BBQ0UK LSsKLStjbGFzcyBRWGNiS2V5Ym9hcmQgOiBwdWJsaWMgUVhjYk9iamVjdAotK3sKLStwdWJsaWM6 Ci0rICAgIFFYY2JLZXlib2FyZChRWGNiQ29ubmVjdGlvbiAqY29ubmVjdGlvbik7Ci0rCi0rICAg IH5RWGNiS2V5Ym9hcmQoKTsKLSsKLSsgICAgdm9pZCBpbml0aWFsaXplKCk7Ci0rICAgIHZvaWQg c2VsZWN0RXZlbnRzKCk7Ci0rCi0rICAgIHZvaWQgaGFuZGxlS2V5UHJlc3NFdmVudChjb25zdCB4 Y2Jfa2V5X3ByZXNzX2V2ZW50X3QgKmV2ZW50KTsKLSsgICAgdm9pZCBoYW5kbGVLZXlSZWxlYXNl RXZlbnQoY29uc3QgeGNiX2tleV9yZWxlYXNlX2V2ZW50X3QgKmV2ZW50KTsKLSsKLSsgICAgUXQ6 OktleWJvYXJkTW9kaWZpZXJzIHRyYW5zbGF0ZU1vZGlmaWVycyhpbnQgcykgY29uc3Q7Ci0rICAg IHZvaWQgdXBkYXRlS2V5bWFwKHhjYl9tYXBwaW5nX25vdGlmeV9ldmVudF90ICpldmVudCk7Ci0r ICAgIHZvaWQgdXBkYXRlS2V5bWFwKCk7Ci0rICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNv bnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0OwotKwotKyAgICAvLyB3aGVuIFhLRVlCT0FSRCBu b3QgcHJlc2VudCBvbiB0aGUgWCBzZXJ2ZXIKLSsgICAgdm9pZCB1cGRhdGVYS0JNb2RzKCk7Ci0r ICAgIHhrYl9tb2RfbWFza190IHhrYk1vZE1hc2socXVpbnQxNiBzdGF0ZSk7Ci0rICAgIHZvaWQg dXBkYXRlWEtCU3RhdGVGcm9tQ29yZShxdWludDE2IHN0YXRlKTsKLSsjaWYgUVRfQ09ORklHKHhj Yl94aW5wdXQpCi0rICAgIHZvaWQgdXBkYXRlWEtCU3RhdGVGcm9tWEkodm9pZCAqbW9kSW5mbywg dm9pZCAqZ3JvdXBJbmZvKTsKLSsjZW5kaWYKLSsjaWYgUVRfQ09ORklHKHhrYikKLSsgICAgLy8g d2hlbiBYS0VZQk9BUkQgaXMgcHJlc2VudCBvbiB0aGUgWCBzZXJ2ZXIKLSsgICAgaW50IGNvcmVE ZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIGNvcmVfZGV2aWNlX2lkOyB9Ci0rICAgIHZvaWQgdXBk YXRlWEtCU3RhdGUoeGNiX3hrYl9zdGF0ZV9ub3RpZnlfZXZlbnRfdCAqc3RhdGUpOwotKyNlbmRp ZgotKyAgICB2b2lkIGhhbmRsZVN0YXRlQ2hhbmdlcyh4a2Jfc3RhdGVfY29tcG9uZW50IGNoYW5n ZWRDb21wb25lbnRzKTsKLSsKLStwcm90ZWN0ZWQ6Ci0rICAgIHZvaWQgaGFuZGxlS2V5RXZlbnQo eGNiX3dpbmRvd190IHNvdXJjZVdpbmRvdywgUUV2ZW50OjpUeXBlIHR5cGUsIHhjYl9rZXljb2Rl X3QgY29kZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBxdWludDE2IHN0YXRlLCB4Y2JfdGlt ZXN0YW1wX3QgdGltZSwgYm9vbCBmcm9tU2VuZEV2ZW50KTsKLSsKLSsgICAgdm9pZCByZXNvbHZl TWFza0NvbmZsaWN0cygpOwotKwotKyAgICB0eXBlZGVmIFFNYXA8eGNiX2tleXN5bV90LCBpbnQ+ IEtleXN5bU1vZGlmaWVyTWFwOwotKyAgICBzdHJ1Y3QgeGtiX2tleW1hcCAqa2V5bWFwRnJvbUNv cmUoY29uc3QgS2V5c3ltTW9kaWZpZXJNYXAgJmtleXN5bU1vZHMpOwotKwotKyAgICAvLyB3aGVu IFhLRVlCT0FSRCBub3QgcHJlc2VudCBvbiB0aGUgWCBzZXJ2ZXIKLSsgICAgdm9pZCB1cGRhdGVN b2RpZmllcnMoY29uc3QgS2V5c3ltTW9kaWZpZXJNYXAgJmtleXN5bU1vZHMpOwotKyAgICBLZXlz eW1Nb2RpZmllck1hcCBrZXlzeW1zVG9Nb2RpZmllcnMoKTsKLSsgICAgLy8gd2hlbiBYS0VZQk9B UkQgaXMgcHJlc2VudCBvbiB0aGUgWCBzZXJ2ZXIKLSsgICAgdm9pZCB1cGRhdGVWTW9kTWFwcGlu ZygpOwotKyAgICB2b2lkIHVwZGF0ZVZNb2RUb1JNb2RNYXBwaW5nKCk7Ci0rCi0rcHJpdmF0ZToK LSsgICAgYm9vbCBtX2NvbmZpZyA9IGZhbHNlOwotKyAgICBib29sIG1faXNBdXRvUmVwZWF0ID0g ZmFsc2U7Ci0rICAgIHhjYl9rZXljb2RlX3QgbV9hdXRvUmVwZWF0Q29kZSA9IDA7Ci0rCi0rICAg IHN0cnVjdCBfbW9kX21hc2tzIHsKLSsgICAgICAgIHVpbnQgYWx0OwotKyAgICAgICAgdWludCBh bHRncjsKLSsgICAgICAgIHVpbnQgbWV0YTsKLSsgICAgICAgIHVpbnQgc3VwZXI7Ci0rICAgICAg ICB1aW50IGh5cGVyOwotKyAgICB9OwotKwotKyAgICBfbW9kX21hc2tzIHJtb2RfbWFza3M7Ci0r Ci0rICAgIC8vIHdoZW4gWEtFWUJPQVJEIG5vdCBwcmVzZW50IG9uIHRoZSBYIHNlcnZlcgotKyAg ICB4Y2Jfa2V5X3N5bWJvbHNfdCAqbV9rZXlfc3ltYm9scyA9IG51bGxwdHI7Ci0rICAgIHN0cnVj dCBfeGtiX21vZHMgewotKyAgICAgICAgeGtiX21vZF9pbmRleF90IHNoaWZ0OwotKyAgICAgICAg eGtiX21vZF9pbmRleF90IGxvY2s7Ci0rICAgICAgICB4a2JfbW9kX2luZGV4X3QgY29udHJvbDsK LSsgICAgICAgIHhrYl9tb2RfaW5kZXhfdCBtb2QxOwotKyAgICAgICAgeGtiX21vZF9pbmRleF90 IG1vZDI7Ci0rICAgICAgICB4a2JfbW9kX2luZGV4X3QgbW9kMzsKLSsgICAgICAgIHhrYl9tb2Rf aW5kZXhfdCBtb2Q0OwotKyAgICAgICAgeGtiX21vZF9pbmRleF90IG1vZDU7Ci0rICAgIH07Ci0r ICAgIF94a2JfbW9kcyB4a2JfbW9kczsKLSsjaWYgUVRfQ09ORklHKHhrYikKLSsgICAgLy8gd2hl biBYS0VZQk9BUkQgaXMgcHJlc2VudCBvbiB0aGUgWCBzZXJ2ZXIKLSsgICAgX21vZF9tYXNrcyB2 bW9kX21hc2tzOwotKyAgICBpbnQgY29yZV9kZXZpY2VfaWQ7Ci0rI2VuZGlmCi0rCi0rICAgIFFY a2JDb21tb246OlNjb3BlZFhLQlN0YXRlIG1feGtiU3RhdGU7Ci0rICAgIFFYa2JDb21tb246OlNj b3BlZFhLQktleW1hcCBtX3hrYktleW1hcDsKLSsgICAgUVhrYkNvbW1vbjo6U2NvcGVkWEtCQ29u dGV4dCBtX3hrYkNvbnRleHQ7Ci0rCi0rICAgIGJvb2wgbV9zdXBlckFzTWV0YSA9IGZhbHNlOwot KyAgICBib29sIG1faHlwZXJBc01ldGEgPSBmYWxzZTsKLSt9OwotKwotK1FUX0VORF9OQU1FU1BB Q0UKLSsKLSsjZW5kaWYKLWRpZmYgLXVyTiBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZv cm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYm1pbWUuaCBxdDVkeGNiLXBsdWdp bi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNibWltZS5o Ci0tLS0gcXQ1ZHhjYi1wbHVnaW4tMS4yLjUub2xkL3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFw YS1kZXYvNS4xMy4wL3F4Y2JtaW1lLmgJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEt ZGV2LzUuMTMuMC9xeGNibWltZS5oCTIwMTktMDctMTIgMjA6MTk6NTUuOTAzOTg2NTA4ICswMDAw Ci1AQCAtMCwwICsxLDcwIEBACi0rLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSsqKgotKyoqIENvcHly aWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCi0rKiogQ29udGFjdDogaHR0cHM6Ly93 d3cucXQuaW8vbGljZW5zaW5nLwotKyoqCi0rKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHBs dWdpbnMgb2YgdGhlIFF0IFRvb2xraXQuCi0rKioKLSsqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BM JAotKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQotKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZh bGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KLSsqKiBhY2Nv cmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0 aCB0aGUKLSsqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRo IHRoZSB0ZXJtcyBjb250YWluZWQgaW4KLSsqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4g eW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcwotKyoqIGFuZCBjb25k aXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhl cgotKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0 LmlvL2NvbnRhY3QtdXMuCi0rKioKLSsqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgVXNhZ2UKLSsqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCi0rKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rKiogRm91bmRhdGlv biBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhl Ci0rKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5n IGluZm9ybWF0aW9uIHRvCi0rKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cwotKyoqIHdpbGwgYmUgbWV0OiBodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCi0rKioKLSsqKiBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBVc2FnZQotKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkg YmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotKyoqIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKLSsq KiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQg YnkgdGhlIEtERSBGcmVlCi0rKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJp bmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKLSsqKiBpbmNsdWRl ZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93 aW5nCi0rKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSByZXF1aXJlbWVudHMgd2lsbAotKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCi0rKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy9ncGwtMy4wLmh0bWwuCi0rKioKLSsqKiAkUVRfRU5EX0xJQ0VOU0UkCi0rKioKLSsqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwotKwotKyNpZm5kZWYgUVhDQk1JTUVfSAotKyNkZWZpbmUgUVhDQk1JTUVf SAotKwotKyNpbmNsdWRlIDxRdEd1aS9wcml2YXRlL3FpbnRlcm5hbG1pbWVkYXRhX3AuaD4KLSsK LSsjaW5jbHVkZSA8UXRHdWkvUUNsaXBib2FyZD4KLSsKLSsjaW5jbHVkZSAicXhjYmludGVncmF0 aW9uLmgiCi0rI2luY2x1ZGUgInF4Y2Jjb25uZWN0aW9uLmgiCi0rCi0rUVRfQkVHSU5fTkFNRVNQ QUNFCi0rCi0rY2xhc3MgUVhjYk1pbWUgOiBwdWJsaWMgUUludGVybmFsTWltZURhdGEgewotKyAg ICBRX09CSkVDVAotK3B1YmxpYzoKLSsgICAgUVhjYk1pbWUoKTsKLSsgICAgflFYY2JNaW1lKCk7 Ci0rCi0rICAgIHN0YXRpYyBRVmVjdG9yPHhjYl9hdG9tX3Q+IG1pbWVBdG9tc0ZvckZvcm1hdChR WGNiQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgY29uc3QgUVN0cmluZyAmZm9ybWF0KTsKLSsgICAg c3RhdGljIFFTdHJpbmcgbWltZUF0b21Ub1N0cmluZyhRWGNiQ29ubmVjdGlvbiAqY29ubmVjdGlv biwgeGNiX2F0b21fdCBhKTsKLSsgICAgc3RhdGljIGJvb2wgbWltZURhdGFGb3JBdG9tKFFYY2JD b25uZWN0aW9uICpjb25uZWN0aW9uLCB4Y2JfYXRvbV90IGEsIFFNaW1lRGF0YSAqbWltZURhdGEs IFFCeXRlQXJyYXkgKmRhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Y2Jf YXRvbV90ICphdG9tRm9ybWF0LCBpbnQgKmRhdGFGb3JtYXQpOwotKyAgICBzdGF0aWMgUVZhcmlh bnQgbWltZUNvbnZlcnRUb0Zvcm1hdChRWGNiQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgeGNiX2F0 b21fdCBhLCBjb25zdCBRQnl0ZUFycmF5ICZkYXRhLCBjb25zdCBRU3RyaW5nICZmb3JtYXQsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWYXJpYW50OjpUeXBlIHJl cXVlc3RlZFR5cGUsIGNvbnN0IFFCeXRlQXJyYXkgJmVuY29kaW5nKTsKLSsgICAgc3RhdGljIHhj Yl9hdG9tX3QgbWltZUF0b21Gb3JGb3JtYXQoUVhjYkNvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGNv bnN0IFFTdHJpbmcgJmZvcm1hdCwgUVZhcmlhbnQ6OlR5cGUgcmVxdWVzdGVkVHlwZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVZlY3Rvcjx4Y2JfYXRv bV90PiAmYXRvbXMsIFFCeXRlQXJyYXkgKnJlcXVlc3RlZEVuY29kaW5nKTsKLSt9OwotKwotK1FU X0VORF9OQU1FU1BBQ0UKLSsKLSsjZW5kaWYgLy8gUVhDQk1JTUVfSAotZGlmZiAtdXJOIHF0NWR4 Y2ItcGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMu MC9xeGNibmF0aXZlaW50ZXJmYWNlLmggcXQ1ZHhjYi1wbHVnaW4tMS4yLjUvcGxhdGZvcm1wbHVn aW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYm5hdGl2ZWludGVyZmFjZS5oCi0tLS0gcXQ1 ZHhjYi1wbHVnaW4tMS4yLjUub2xkL3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4x My4wL3F4Y2JuYXRpdmVpbnRlcmZhY2UuaAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAotKysrIHF0NWR4Y2ItcGx1Z2luLTEuMi41L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFw YS1kZXYvNS4xMy4wL3F4Y2JuYXRpdmVpbnRlcmZhY2UuaAkyMDE5LTA3LTEyIDIwOjE5OjU1Ljkw Mzk4NjUwOCArMDAwMAotQEAgLTAsMCArMSwxNTYgQEAKLSsvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot KyoqCi0rKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KLSsqKiBDb250 YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCi0rKioKLSsqKiBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgcGx1Z2lucyBvZiB0aGUgUXQgVG9vbGtpdC4KLSsqKgotKyoqICRRVF9CRUdJ Tl9MSUNFTlNFOkxHUEwkCi0rKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCi0rKiogTGljZW5z ZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmls ZSBpbgotKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVu dCBwcm92aWRlZCB3aXRoIHRoZQotKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBh Y2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgotKyoqIGEgd3JpdHRlbiBhZ3Jl ZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1z Ci0rKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlv bnMuIEZvciBmdXJ0aGVyCi0rKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQg aHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KLSsqKgotKyoqIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBVc2FnZQotKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkg YmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKLSsqKiBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK LSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBp bmNsdWRlZCBpbiB0aGUKLSsqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3 IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KLSsqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCi0rKiogd2lsbCBi ZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KLSsqKgot KyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwg dGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rKiogR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBH TlUgR2VuZXJhbAotKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVy c2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKLSsqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGlj ZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZvdW5kYXRp b24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BM MwotKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2 aWV3IHRoZSBmb2xsb3dpbmcKLSsqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCi0rKiogYmUgbWV0OiBodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKLSsqKiBodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KLSsqKgotKyoqICRRVF9FTkRfTElDRU5TRSQK LSsqKgotKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0rCi0rI2lmbmRlZiBRWENCTkFUSVZFSU5URVJG QUNFX0gKLSsjZGVmaW5lIFFYQ0JOQVRJVkVJTlRFUkZBQ0VfSAotKwotKyNpbmNsdWRlIDxxcGEv cXBsYXRmb3JtbmF0aXZlaW50ZXJmYWNlLmg+Ci0rI2luY2x1ZGUgPHhjYi94Y2IuaD4KLSsKLSsj aW5jbHVkZSA8UXRDb3JlL1FSZWN0PgotKwotKyNpbmNsdWRlICJxeGNiZXhwb3J0LmgiCi0rI2lu Y2x1ZGUgInF4Y2Jjb25uZWN0aW9uLmgiCi0rCi0rUVRfQkVHSU5fTkFNRVNQQUNFCi0rCi0rY2xh c3MgUVhjYlNjcmVlbjsKLStjbGFzcyBRWGNiTmF0aXZlSW50ZXJmYWNlSGFuZGxlcjsKLSsKLStj bGFzcyBRX1hDQl9FWFBPUlQgUVhjYk5hdGl2ZUludGVyZmFjZSA6IHB1YmxpYyBRUGxhdGZvcm1O YXRpdmVJbnRlcmZhY2UKLSt7Ci0rICAgIFFfT0JKRUNUCi0rcHVibGljOgotKyAgICBlbnVtIFJl c291cmNlVHlwZSB7Ci0rICAgICAgICBEaXNwbGF5LAotKyAgICAgICAgQ29ubmVjdGlvbiwKLSsg ICAgICAgIFNjcmVlbiwKLSsgICAgICAgIEFwcFRpbWUsCi0rICAgICAgICBBcHBVc2VyVGltZSwK LSsgICAgICAgIFNjcmVlbkhpbnRTdHlsZSwKLSsgICAgICAgIFN0YXJ0dXBJZCwKLSsgICAgICAg IFRyYXlXaW5kb3csCi0rICAgICAgICBHZXRUaW1lc3RhbXAsCi0rICAgICAgICBYMTFTY3JlZW4s Ci0rICAgICAgICBSb290V2luZG93LAotKyAgICAgICAgU2NyZWVuU3VicGl4ZWxUeXBlLAotKyAg ICAgICAgU2NyZWVuQW50aWFsaWFzaW5nRW5hYmxlZCwKLSsgICAgICAgIEF0c3BpQnVzLAotKyAg ICAgICAgQ29tcG9zaXRpbmdFbmFibGVkLAotKyAgICAgICAgVmtTdXJmYWNlLAotKyAgICAgICAg R2VuZXJhdGVQZWVrZXJJZCwKLSsgICAgICAgIFJlbW92ZVBlZWtlcklkLAotKyAgICAgICAgUGVl a0V2ZW50UXVldWUKLSsgICAgfTsKLSsKLSsgICAgUVhjYk5hdGl2ZUludGVyZmFjZSgpOwotKwot KyAgICB2b2lkICpuYXRpdmVSZXNvdXJjZUZvckludGVncmF0aW9uKGNvbnN0IFFCeXRlQXJyYXkg JnJlc291cmNlKSBvdmVycmlkZTsKLSsgICAgdm9pZCAqbmF0aXZlUmVzb3VyY2VGb3JDb250ZXh0 KGNvbnN0IFFCeXRlQXJyYXkgJnJlc291cmNlU3RyaW5nLCBRT3BlbkdMQ29udGV4dCAqY29udGV4 dCkgb3ZlcnJpZGU7Ci0rICAgIHZvaWQgKm5hdGl2ZVJlc291cmNlRm9yU2NyZWVuKGNvbnN0IFFC eXRlQXJyYXkgJnJlc291cmNlLCBRU2NyZWVuICpzY3JlZW4pIG92ZXJyaWRlOwotKyAgICB2b2lk ICpuYXRpdmVSZXNvdXJjZUZvcldpbmRvdyhjb25zdCBRQnl0ZUFycmF5ICZyZXNvdXJjZVN0cmlu ZywgUVdpbmRvdyAqd2luZG93KSBvdmVycmlkZTsKLSsgICAgdm9pZCAqbmF0aXZlUmVzb3VyY2VG b3JCYWNraW5nU3RvcmUoY29uc3QgUUJ5dGVBcnJheSAmcmVzb3VyY2UsIFFCYWNraW5nU3RvcmUg KmJhY2tpbmdTdG9yZSkgb3ZlcnJpZGU7Ci0rI2lmbmRlZiBRVF9OT19DVVJTT1IKLSsgICAgdm9p ZCAqbmF0aXZlUmVzb3VyY2VGb3JDdXJzb3IoY29uc3QgUUJ5dGVBcnJheSAmcmVzb3VyY2UsIGNv bnN0IFFDdXJzb3IgJmN1cnNvcikgb3ZlcnJpZGU7Ci0rI2VuZGlmCi0rCi0rICAgIE5hdGl2ZVJl c291cmNlRm9ySW50ZWdyYXRpb25GdW5jdGlvbiBuYXRpdmVSZXNvdXJjZUZ1bmN0aW9uRm9ySW50 ZWdyYXRpb24oY29uc3QgUUJ5dGVBcnJheSAmcmVzb3VyY2UpIG92ZXJyaWRlOwotKyAgICBOYXRp dmVSZXNvdXJjZUZvckNvbnRleHRGdW5jdGlvbiBuYXRpdmVSZXNvdXJjZUZ1bmN0aW9uRm9yQ29u dGV4dChjb25zdCBRQnl0ZUFycmF5ICZyZXNvdXJjZSkgb3ZlcnJpZGU7Ci0rICAgIE5hdGl2ZVJl c291cmNlRm9yU2NyZWVuRnVuY3Rpb24gbmF0aXZlUmVzb3VyY2VGdW5jdGlvbkZvclNjcmVlbihj b25zdCBRQnl0ZUFycmF5ICZyZXNvdXJjZSkgb3ZlcnJpZGU7Ci0rICAgIE5hdGl2ZVJlc291cmNl Rm9yV2luZG93RnVuY3Rpb24gbmF0aXZlUmVzb3VyY2VGdW5jdGlvbkZvcldpbmRvdyhjb25zdCBR Qnl0ZUFycmF5ICZyZXNvdXJjZSkgb3ZlcnJpZGU7Ci0rICAgIE5hdGl2ZVJlc291cmNlRm9yQmFj a2luZ1N0b3JlRnVuY3Rpb24gbmF0aXZlUmVzb3VyY2VGdW5jdGlvbkZvckJhY2tpbmdTdG9yZShj b25zdCBRQnl0ZUFycmF5ICZyZXNvdXJjZSkgb3ZlcnJpZGU7Ci0rCi0rICAgIFFGdW5jdGlvblBv aW50ZXIgcGxhdGZvcm1GdW5jdGlvbihjb25zdCBRQnl0ZUFycmF5ICZmdW5jdGlvbikgY29uc3Qg b3ZlcnJpZGU7Ci0rCi0rICAgIGlubGluZSBjb25zdCBRQnl0ZUFycmF5ICZuYXRpdmVFdmVudFR5 cGUoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50VHlwZTsgfQotKwotKyAgICB2b2lkICpk aXNwbGF5Rm9yV2luZG93KFFXaW5kb3cgKndpbmRvdyk7Ci0rICAgIHZvaWQgKmNvbm5lY3Rpb25G b3JXaW5kb3coUVdpbmRvdyAqd2luZG93KTsKLSsgICAgdm9pZCAqc2NyZWVuRm9yV2luZG93KFFX aW5kb3cgKndpbmRvdyk7Ci0rICAgIHZvaWQgKmFwcFRpbWUoY29uc3QgUVhjYlNjcmVlbiAqc2Ny ZWVuKTsKLSsgICAgdm9pZCAqYXBwVXNlclRpbWUoY29uc3QgUVhjYlNjcmVlbiAqc2NyZWVuKTsK LSsgICAgdm9pZCAqZ2V0VGltZXN0YW1wKGNvbnN0IFFYY2JTY3JlZW4gKnNjcmVlbik7Ci0rICAg IHZvaWQgKnN0YXJ0dXBJZCgpOwotKyAgICB2b2lkICp4MTFTY3JlZW4oKTsKLSsgICAgdm9pZCAq cm9vdFdpbmRvdygpOwotKyAgICB2b2lkICpkaXNwbGF5KCk7Ci0rICAgIHZvaWQgKmF0c3BpQnVz KCk7Ci0rICAgIHZvaWQgKmNvbm5lY3Rpb24oKTsKLSsgICAgc3RhdGljIHZvaWQgc2V0U3RhcnR1 cElkKGNvbnN0IGNoYXIgKik7Ci0rICAgIHN0YXRpYyB2b2lkIHNldEFwcFRpbWUoUVNjcmVlbiAq c2NyZWVuLCB4Y2JfdGltZXN0YW1wX3QgdGltZSk7Ci0rICAgIHN0YXRpYyB2b2lkIHNldEFwcFVz ZXJUaW1lKFFTY3JlZW4gKnNjcmVlbiwgeGNiX3RpbWVzdGFtcF90IHRpbWUpOwotKwotKyAgICBz dGF0aWMgcWludDMyIGdlbmVyYXRlUGVla2VySWQoKTsKLSsgICAgc3RhdGljIGJvb2wgcmVtb3Zl UGVla2VySWQocWludDMyIHBlZWtlcklkKTsKLSsgICAgc3RhdGljIGJvb2wgcGVla0V2ZW50UXVl dWUoUVhjYkV2ZW50UXVldWU6OlBlZWtlckNhbGxiYWNrIHBlZWtlciwgdm9pZCAqcGVla2VyRGF0 YSA9IG51bGxwdHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFYY2JFdmVudFF1 ZXVlOjpQZWVrT3B0aW9ucyBvcHRpb24gPSBRWGNiRXZlbnRRdWV1ZTo6UGVla0RlZmF1bHQsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFpbnQzMiBwZWVrZXJJZCA9IC0xKTsKLSsK LSsgICAgUV9JTlZPS0FCTEUgUVN0cmluZyBkdW1wQ29ubmVjdGlvbk5hdGl2ZVdpbmRvd3MoY29u c3QgUVhjYkNvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIFdJZCByb290KSBjb25zdDsKLSsgICAgUV9J TlZPS0FCTEUgUVN0cmluZyBkdW1wTmF0aXZlV2luZG93cyhXSWQgcm9vdCA9IDApIGNvbnN0Owot KwotKyAgICB2b2lkIGFkZEhhbmRsZXIoUVhjYk5hdGl2ZUludGVyZmFjZUhhbmRsZXIgKmhhbmRs ZXIpOwotKyAgICB2b2lkIHJlbW92ZUhhbmRsZXIoUVhjYk5hdGl2ZUludGVyZmFjZUhhbmRsZXIg KmhhbmRsZXIpOwotK3NpZ25hbHM6Ci0rICAgIHZvaWQgc3lzdGVtVHJheVdpbmRvd0NoYW5nZWQo UVNjcmVlbiAqc2NyZWVuKTsKLSsKLStwcml2YXRlOgotKyAgICBjb25zdCBRQnl0ZUFycmF5IG1f bmF0aXZlRXZlbnRUeXBlID0gUUJ5dGVBcnJheUxpdGVyYWwoInhjYl9nZW5lcmljX2V2ZW50X3Qi KTsKLSsKLSsgICAgeGNiX2F0b21fdCBtX3N5c1RyYXlTZWxlY3Rpb25BdG9tID0gWENCX0FUT01f Tk9ORTsKLSsKLSsgICAgc3RhdGljIFFYY2JTY3JlZW4gKnFQbGF0Zm9ybVNjcmVlbkZvcldpbmRv dyhRV2luZG93ICp3aW5kb3cpOwotKwotKyAgICBRTGlzdDxRWGNiTmF0aXZlSW50ZXJmYWNlSGFu ZGxlciAqPiBtX2hhbmRsZXJzOwotKyAgICBOYXRpdmVSZXNvdXJjZUZvckludGVncmF0aW9uRnVu Y3Rpb24gaGFuZGxlck5hdGl2ZVJlc291cmNlRnVuY3Rpb25Gb3JJbnRlZ3JhdGlvbihjb25zdCBR Qnl0ZUFycmF5ICZyZXNvdXJjZSkgY29uc3Q7Ci0rICAgIE5hdGl2ZVJlc291cmNlRm9yQ29udGV4 dEZ1bmN0aW9uIGhhbmRsZXJOYXRpdmVSZXNvdXJjZUZ1bmN0aW9uRm9yQ29udGV4dChjb25zdCBR Qnl0ZUFycmF5ICZyZXNvdXJjZSkgY29uc3Q7Ci0rICAgIE5hdGl2ZVJlc291cmNlRm9yU2NyZWVu RnVuY3Rpb24gaGFuZGxlck5hdGl2ZVJlc291cmNlRnVuY3Rpb25Gb3JTY3JlZW4oY29uc3QgUUJ5 dGVBcnJheSAmcmVzb3VyY2UpIGNvbnN0OwotKyAgICBOYXRpdmVSZXNvdXJjZUZvcldpbmRvd0Z1 bmN0aW9uIGhhbmRsZXJOYXRpdmVSZXNvdXJjZUZ1bmN0aW9uRm9yV2luZG93KGNvbnN0IFFCeXRl QXJyYXkgJnJlc291cmNlKSBjb25zdDsKLSsgICAgTmF0aXZlUmVzb3VyY2VGb3JCYWNraW5nU3Rv cmVGdW5jdGlvbiBoYW5kbGVyTmF0aXZlUmVzb3VyY2VGdW5jdGlvbkZvckJhY2tpbmdTdG9yZShj b25zdCBRQnl0ZUFycmF5ICZyZXNvdXJjZSkgY29uc3Q7Ci0rICAgIFFGdW5jdGlvblBvaW50ZXIg aGFuZGxlclBsYXRmb3JtRnVuY3Rpb24oY29uc3QgUUJ5dGVBcnJheSAmZnVuY3Rpb24pIGNvbnN0 OwotKyAgICB2b2lkICpoYW5kbGVyTmF0aXZlUmVzb3VyY2VGb3JJbnRlZ3JhdGlvbihjb25zdCBR Qnl0ZUFycmF5ICZyZXNvdXJjZSkgY29uc3Q7Ci0rICAgIHZvaWQgKmhhbmRsZXJOYXRpdmVSZXNv dXJjZUZvckNvbnRleHQoY29uc3QgUUJ5dGVBcnJheSAmcmVzb3VyY2UsIFFPcGVuR0xDb250ZXh0 ICpjb250ZXh0KSBjb25zdDsKLSsgICAgdm9pZCAqaGFuZGxlck5hdGl2ZVJlc291cmNlRm9yU2Ny ZWVuKGNvbnN0IFFCeXRlQXJyYXkgJnJlc291cmNlLCBRU2NyZWVuICpzY3JlZW4pIGNvbnN0Owot KyAgICB2b2lkICpoYW5kbGVyTmF0aXZlUmVzb3VyY2VGb3JXaW5kb3coY29uc3QgUUJ5dGVBcnJh eSAmcmVzb3VyY2UsIFFXaW5kb3cgKndpbmRvdykgY29uc3Q7Ci0rICAgIHZvaWQgKmhhbmRsZXJO YXRpdmVSZXNvdXJjZUZvckJhY2tpbmdTdG9yZShjb25zdCBRQnl0ZUFycmF5ICZyZXNvdXJjZSwg UUJhY2tpbmdTdG9yZSAqYmFja2luZ1N0b3JlKSBjb25zdDsKLSt9OwotKwotK1FUX0VORF9OQU1F U1BBQ0UKLSsKLSsjZW5kaWYgLy8gUVhDQk5BVElWRUlOVEVSRkFDRV9ICi1kaWZmIC11ck4gcXQ1 ZHhjYi1wbHVnaW4tMS4yLjUub2xkL3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4x My4wL3F4Y2JvYmplY3QuaCBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9saWJx dDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNib2JqZWN0LmgKLS0tLSBxdDVkeGNiLXBsdWdpbi0xLjIu NS5vbGQvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYm9iamVjdC5o CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgcXQ1ZHhjYi1wbHVnaW4t MS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYm9iamVjdC5o CTIwMTktMDctMTIgMjA6MTk6NTUuOTAzOTg2NTA4ICswMDAwCi1AQCAtMCwwICsxLDY0IEBACi0r LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKLSsqKgotKyoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQg Q29tcGFueSBMdGQuCi0rKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLwot KyoqCi0rKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHBsdWdpbnMgb2YgdGhlIFF0IFRvb2xr aXQuCi0rKioKLSsqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAotKyoqIENvbW1lcmNpYWwgTGlj ZW5zZSBVc2FnZQotKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGlj ZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KLSsqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1l cmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKLSsqKiBTb2Z0d2FyZSBv ciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQg aW4KLSsqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFu eS4gRm9yIGxpY2Vuc2luZyB0ZXJtcwotKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3 dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgotKyoqIGluZm9ybWF0aW9uIHVz ZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCi0rKioK LSsqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRlcm5h dGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyCi0rKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRo ZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCi0rKiogcGFja2FnaW5nIG9mIHRo aXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCi0rKiog ZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJl cXVpcmVtZW50cwotKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz L2xncGwtMy4wLmh0bWwuCi0rKioKLSsqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2Fn ZQotKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVQotKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3Ig KGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKLSsqKiBQdWJsaWMgbGljZW5zZSB2ZXJz aW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCi0rKiog UXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUKLSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5T RS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKLSsqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9m IHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCi0rKiogaW5mb3JtYXRpb24g dG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2ls bAotKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwg YW5kCi0rKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCi0rKioK LSsqKiAkUVRfRU5EX0xJQ0VOU0UkCi0rKioKLSsqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotKwotKyNp Zm5kZWYgUVhDQk9CSkVDVF9ICi0rI2RlZmluZSBRWENCT0JKRUNUX0gKLSsKLSsjaW5jbHVkZSAi cXhjYmNvbm5lY3Rpb24uaCIKLSsKLStRVF9CRUdJTl9OQU1FU1BBQ0UKLSsKLStjbGFzcyBRWGNi T2JqZWN0Ci0rewotK3B1YmxpYzoKLSsgICAgUVhjYk9iamVjdChRWGNiQ29ubmVjdGlvbiAqY29u bmVjdGlvbiA9IDApIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pIHt9Ci0rCi0rICAgIHZvaWQg c2V0Q29ubmVjdGlvbihRWGNiQ29ubmVjdGlvbiAqY29ubmVjdGlvbikgeyBtX2Nvbm5lY3Rpb24g PSBjb25uZWN0aW9uOyB9Ci0rICAgIFFYY2JDb25uZWN0aW9uICpjb25uZWN0aW9uKCkgY29uc3Qg eyByZXR1cm4gbV9jb25uZWN0aW9uOyB9Ci0rCi0rICAgIHhjYl9hdG9tX3QgYXRvbShRWGNiQXRv bTo6QXRvbSBhdG9tKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24tPmF0b20oYXRvbSk7IH0K LSsgICAgeGNiX2Nvbm5lY3Rpb25fdCAqeGNiX2Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBt X2Nvbm5lY3Rpb24tPnhjYl9jb25uZWN0aW9uKCk7IH0KLSsKLStwcml2YXRlOgotKyAgICBRWGNi Q29ubmVjdGlvbiAqbV9jb25uZWN0aW9uOwotK307Ci0rCi0rUVRfRU5EX05BTUVTUEFDRQotKwot KyNlbmRpZgotZGlmZiAtdXJOIHF0NWR4Y2ItcGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdp bi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNic2NyZWVuLmggcXQ1ZHhjYi1wbHVnaW4tMS4y LjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYnNjcmVlbi5oCi0t LS0gcXQ1ZHhjYi1wbHVnaW4tMS4yLjUub2xkL3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1k ZXYvNS4xMy4wL3F4Y2JzY3JlZW4uaAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIHF0NWR4Y2ItcGx1Z2luLTEuMi41L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1k ZXYvNS4xMy4wL3F4Y2JzY3JlZW4uaAkyMDE5LTA3LTEyIDIwOjE5OjU1LjkwMzk4NjUwOCArMDAw MAotQEAgLTAsMCArMSwyMzkgQEAKLSsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKyoqCi0rKiogQ29w eXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KLSsqKiBDb250YWN0OiBodHRwczov L3d3dy5xdC5pby9saWNlbnNpbmcvCi0rKioKLSsqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg cGx1Z2lucyBvZiB0aGUgUXQgVG9vbGtpdC4KLSsqKgotKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxH UEwkCi0rKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCi0rKiogTGljZW5zZWVzIGhvbGRpbmcg dmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgotKyoqIGFj Y29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3 aXRoIHRoZQotKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdp dGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgotKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2Vl biB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCi0rKiogYW5kIGNv bmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0 aGVyCi0rKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cu cXQuaW8vY29udGFjdC11cy4KLSsqKgotKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBVc2FnZQotKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKLSsqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLSsqKiBGb3VuZGF0 aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0 aGUKLSsqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dp bmcgaW5mb3JtYXRpb24gdG8KLSsqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCi0rKiogd2lsbCBiZSBtZXQ6IGh0dHBz Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KLSsqKgotKyoqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1h eSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rKiogR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAot KyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3Zl ZCBieSB0aGUgS0RFIEZyZWUKLSsqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVh cmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMwotKyoqIGluY2x1 ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xs b3dpbmcKLSsqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCi0rKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKLSsqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzL2dwbC0zLjAuaHRtbC4KLSsqKgotKyoqICRRVF9FTkRfTElDRU5TRSQKLSsqKgotKyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCi0rCi0rI2lmbmRlZiBRWENCU0NSRUVOX0gKLSsjZGVmaW5lIFFYQ0JT Q1JFRU5fSAotKwotKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3Jtc2NyZWVuLmg+Ci0rI2luY2x1ZGUg PFF0Q29yZS9RU3RyaW5nPgotKwotKyNpbmNsdWRlIDx4Y2IveGNiLmg+Ci0rI2luY2x1ZGUgPHhj Yi9yYW5kci5oPgotKyNpbmNsdWRlIDx4Y2IveGZpeGVzLmg+Ci0rI2luY2x1ZGUgPHhjYi94aW5l cmFtYS5oPgotKwotKyNpbmNsdWRlICJxeGNib2JqZWN0LmgiCi0rI2luY2x1ZGUgInF4Y2JzY3Jl ZW4uaCIKLSsKLSsjaW5jbHVkZSA8cHJpdmF0ZS9xZm9udGVuZ2luZV9wLmg+Ci0rCi0rI2luY2x1 ZGUgPFF0RWRpZFN1cHBvcnQvcHJpdmF0ZS9xZWRpZHBhcnNlcl9wLmg+Ci0rCi0rUVRfQkVHSU5f TkFNRVNQQUNFCi0rCi0rY2xhc3MgUVhjYkNvbm5lY3Rpb247Ci0rY2xhc3MgUVhjYkN1cnNvcjsK LStjbGFzcyBRWGNiWFNldHRpbmdzOwotKyNpZm5kZWYgUVRfTk9fREVCVUdfU1RSRUFNCi0rY2xh c3MgUURlYnVnOwotKyNlbmRpZgotKwotK2NsYXNzIFFYY2JWaXJ0dWFsRGVza3RvcCA6IHB1Ymxp YyBRWGNiT2JqZWN0Ci0rewotK3B1YmxpYzoKLSsgICAgUVhjYlZpcnR1YWxEZXNrdG9wKFFYY2JD b25uZWN0aW9uICpjb25uZWN0aW9uLCB4Y2Jfc2NyZWVuX3QgKnNjcmVlbiwgaW50IG51bWJlcik7 Ci0rICAgIH5RWGNiVmlydHVhbERlc2t0b3AoKTsKLSsKLSsgICAgeGNiX3NjcmVlbl90ICpzY3Jl ZW4oKSBjb25zdCB7IHJldHVybiBtX3NjcmVlbjsgfQotKyAgICBpbnQgbnVtYmVyKCkgY29uc3Qg eyByZXR1cm4gbV9udW1iZXI7IH0KLSsgICAgUVNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFFT aXplKG1fc2NyZWVuLT53aWR0aF9pbl9waXhlbHMsIG1fc2NyZWVuLT5oZWlnaHRfaW5fcGl4ZWxz KTsgfQotKyAgICBRU2l6ZSBwaHlzaWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBRU2l6ZShtX3Nj cmVlbi0+d2lkdGhfaW5fbWlsbGltZXRlcnMsIG1fc2NyZWVuLT5oZWlnaHRfaW5fbWlsbGltZXRl cnMpOyB9Ci0rICAgIFFEcGkgZHBpKCkgY29uc3Q7Ci0rICAgIHhjYl93aW5kb3dfdCByb290KCkg Y29uc3QgeyByZXR1cm4gbV9zY3JlZW4tPnJvb3Q7IH0KLSsgICAgUVhjYlNjcmVlbiAqc2NyZWVu QXQoY29uc3QgUVBvaW50ICZwb3MpIGNvbnN0OwotKwotKyAgICBRTGlzdDxRUGxhdGZvcm1TY3Jl ZW4gKj4gc2NyZWVucygpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVuczsgfQotKyAgICB2b2lkIHNl dFNjcmVlbnMoUUxpc3Q8UVBsYXRmb3JtU2NyZWVuICo+ICYmc2wpIHsgbV9zY3JlZW5zID0gc3Rk Ojptb3ZlKHNsKTsgfQotKyAgICB2b2lkIHJlbW92ZVNjcmVlbihRUGxhdGZvcm1TY3JlZW4gKnMp IHsgbV9zY3JlZW5zLnJlbW92ZU9uZShzKTsgfQotKyAgICB2b2lkIGFkZFNjcmVlbihRUGxhdGZv cm1TY3JlZW4gKnMpOwotKyAgICB2b2lkIHNldFByaW1hcnlTY3JlZW4oUVBsYXRmb3JtU2NyZWVu ICpzKTsKLSsKLSsgICAgUVhjYlhTZXR0aW5ncyAqeFNldHRpbmdzKCkgY29uc3Q7Ci0rCi0rICAg IGJvb2wgY29tcG9zaXRpbmdBY3RpdmUoKSBjb25zdDsKLSsKLSsgICAgUVJlY3Qgd29ya0FyZWEo KSBjb25zdCB7IHJldHVybiBtX3dvcmtBcmVhOyB9Ci0rICAgIHZvaWQgdXBkYXRlV29ya0FyZWEo KTsKLSsKLSsgICAgdm9pZCBoYW5kbGVYRml4ZXNTZWxlY3Rpb25Ob3RpZnkoeGNiX3hmaXhlc19z ZWxlY3Rpb25fbm90aWZ5X2V2ZW50X3QgKm5vdGlmeV9ldmVudCk7Ci0rICAgIHZvaWQgc3Vic2Ny aWJlVG9YRml4ZXNTZWxlY3Rpb25Ob3RpZnkoKTsKLSsKLSsgICAgdm9pZCBoYW5kbGVTY3JlZW5D aGFuZ2UoeGNiX3JhbmRyX3NjcmVlbl9jaGFuZ2Vfbm90aWZ5X2V2ZW50X3QgKmNoYW5nZV9ldmVu dCk7Ci0rCi0rICAgIGludCBmb3JjZWREcGkoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlZERwaTsg fQotKyAgICBRRm9udEVuZ2luZTo6SGludFN0eWxlIGhpbnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJu IG1faGludFN0eWxlOyB9Ci0rICAgIFFGb250RW5naW5lOjpTdWJwaXhlbEFudGlhbGlhc2luZ1R5 cGUgc3VicGl4ZWxUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdWJwaXhlbFR5cGU7IH0KLSsgICAg aW50IGFudGlhbGlhc2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FudGlhbGlhc2luZ0Vu YWJsZWQ7IH0KLSsKLSsgICAgUVN0cmluZyB3aW5kb3dNYW5hZ2VyTmFtZSgpIGNvbnN0IHsgcmV0 dXJuIG1fd2luZG93TWFuYWdlck5hbWU7IH0KLSsKLSsgICAgUVN1cmZhY2VGb3JtYXQgc3VyZmFj ZUZvcm1hdEZvcihjb25zdCBRU3VyZmFjZUZvcm1hdCAmZm9ybWF0KSBjb25zdDsKLSsKLSsgICAg Y29uc3QgeGNiX3Zpc3VhbHR5cGVfdCAqdmlzdWFsRm9yRm9ybWF0KGNvbnN0IFFTdXJmYWNlRm9y bWF0ICZmb3JtYXQpIGNvbnN0OwotKyAgICBjb25zdCB4Y2JfdmlzdWFsdHlwZV90ICp2aXN1YWxG b3JJZCh4Y2JfdmlzdWFsaWRfdCkgY29uc3Q7Ci0rICAgIHF1aW50OCBkZXB0aE9mVmlzdWFsKHhj Yl92aXN1YWxpZF90KSBjb25zdDsKLSsKLStwcml2YXRlOgotKyAgICBRUmVjdCBnZXRXb3JrQXJl YSgpIGNvbnN0OwotKwotKyAgICBzdGF0aWMgYm9vbCB4UmVzb3VyY2UoY29uc3QgUUJ5dGVBcnJh eSAmaWRlbnRpZmllciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFCeXRlQXJy YXkgJmV4cGVjdGVkSWRlbnRpZmllciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFFCeXRl QXJyYXkgJnN0cmluZ1ZhbHVlKTsKLSsgICAgdm9pZCByZWFkWFJlc291cmNlcygpOwotKwotKyAg ICB4Y2Jfc2NyZWVuX3QgKm1fc2NyZWVuOwotKyAgICBjb25zdCBpbnQgbV9udW1iZXI7Ci0rICAg IFFMaXN0PFFQbGF0Zm9ybVNjcmVlbiAqPiBtX3NjcmVlbnM7Ci0rCi0rICAgIFFYY2JYU2V0dGlu Z3MgKm1feFNldHRpbmdzID0gbnVsbHB0cjsKLSsgICAgeGNiX2F0b21fdCBtX25ldF93bV9jbV9h dG9tID0gMDsKLSsgICAgYm9vbCBtX2NvbXBvc2l0aW5nQWN0aXZlID0gZmFsc2U7Ci0rCi0rICAg IFFSZWN0IG1fd29ya0FyZWE7Ci0rCi0rICAgIGludCBtX2ZvcmNlZERwaSA9IC0xOwotKyAgICBR Rm9udEVuZ2luZTo6SGludFN0eWxlIG1faGludFN0eWxlID0gUUZvbnRFbmdpbmU6OkhpbnRTdHls ZSgtMSk7Ci0rICAgIFFGb250RW5naW5lOjpTdWJwaXhlbEFudGlhbGlhc2luZ1R5cGUgbV9zdWJw aXhlbFR5cGUgPSBRRm9udEVuZ2luZTo6U3VicGl4ZWxBbnRpYWxpYXNpbmdUeXBlKC0xKTsKLSsg ICAgaW50IG1fYW50aWFsaWFzaW5nRW5hYmxlZCA9IC0xOwotKyAgICBRU3RyaW5nIG1fd2luZG93 TWFuYWdlck5hbWU7Ci0rICAgIFFNYXA8eGNiX3Zpc3VhbGlkX3QsIHhjYl92aXN1YWx0eXBlX3Q+ IG1fdmlzdWFsczsKLSsgICAgUU1hcDx4Y2JfdmlzdWFsaWRfdCwgcXVpbnQ4PiBtX3Zpc3VhbERl cHRoczsKLSsgICAgdWludDE2X3QgbV9yb3RhdGlvbiA9IDA7Ci0rfTsKLSsKLStjbGFzcyBRX1hD Ql9FWFBPUlQgUVhjYlNjcmVlbiA6IHB1YmxpYyBRWGNiT2JqZWN0LCBwdWJsaWMgUVBsYXRmb3Jt U2NyZWVuCi0rewotK3B1YmxpYzoKLSsgICAgUVhjYlNjcmVlbihRWGNiQ29ubmVjdGlvbiAqY29u bmVjdGlvbiwgUVhjYlZpcnR1YWxEZXNrdG9wICp2aXJ0dWFsRGVza3RvcCwKLSsgICAgICAgICAg ICAgICB4Y2JfcmFuZHJfb3V0cHV0X3Qgb3V0cHV0SWQsIHhjYl9yYW5kcl9nZXRfb3V0cHV0X2lu Zm9fcmVwbHlfdCAqb3V0cHV0SW5mbywKLSsgICAgICAgICAgICAgICBjb25zdCB4Y2JfeGluZXJh bWFfc2NyZWVuX2luZm9fdCAqeGluZXJhbWFTY3JlZW5JbmZvID0gbnVsbHB0ciwgaW50IHhpbmVy YW1hU2NyZWVuSWR4ID0gLTEpOwotKyAgICB+UVhjYlNjcmVlbigpOwotKwotKyAgICBRU3RyaW5n IGdldE91dHB1dE5hbWUoeGNiX3JhbmRyX2dldF9vdXRwdXRfaW5mb19yZXBseV90ICpvdXRwdXRJ bmZvKTsKLSsKLSsgICAgUVBpeG1hcCBncmFiV2luZG93KFdJZCB3aW5kb3csIGludCB4LCBpbnQg eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKLSsKLSsgICAgUVdpbmRv dyAqdG9wTGV2ZWxBdChjb25zdCBRUG9pbnQgJnBvaW50KSBjb25zdCBvdmVycmlkZTsKLSsKLSsg ICAgUVN0cmluZyBtYW51ZmFjdHVyZXIoKSBjb25zdCBvdmVycmlkZTsKLSsgICAgUVN0cmluZyBt b2RlbCgpIGNvbnN0IG92ZXJyaWRlOwotKyAgICBRU3RyaW5nIHNlcmlhbE51bWJlcigpIGNvbnN0 IG92ZXJyaWRlOwotKwotKyAgICBRUmVjdCBnZW9tZXRyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0 dXJuIG1fZ2VvbWV0cnk7IH0KLSsgICAgUVJlY3QgYXZhaWxhYmxlR2VvbWV0cnkoKSBjb25zdCBv dmVycmlkZTsKLSsgICAgaW50IGRlcHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2NyZWVu KCktPnJvb3RfZGVwdGg7IH0KLSsgICAgUUltYWdlOjpGb3JtYXQgZm9ybWF0KCkgY29uc3Qgb3Zl cnJpZGU7Ci0rICAgIFFTaXplRiBwaHlzaWNhbFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy biBtX3NpemVNaWxsaW1ldGVyczsgfQotKyAgICBRRHBpIGxvZ2ljYWxEcGkoKSBjb25zdCBvdmVy cmlkZTsKLSsgICAgcXJlYWwgcGl4ZWxEZW5zaXR5KCkgY29uc3Qgb3ZlcnJpZGU7Ci0rICAgIFFQ bGF0Zm9ybUN1cnNvciAqY3Vyc29yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0rICAgIHFyZWFsIHJlZnJl c2hSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWZyZXNoUmF0ZTsgfQotKyAgICBR dDo6U2NyZWVuT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy biBtX29yaWVudGF0aW9uOyB9Ci0rICAgIFFMaXN0PFFQbGF0Zm9ybVNjcmVlbiAqPiB2aXJ0dWFs U2libGluZ3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ZpcnR1YWxEZXNrdG9wLT5zY3Jl ZW5zKCk7IH0KLSsgICAgUVhjYlZpcnR1YWxEZXNrdG9wICp2aXJ0dWFsRGVza3RvcCgpIGNvbnN0 IHsgcmV0dXJuIG1fdmlydHVhbERlc2t0b3A7IH0KLSsKLSsgICAgdm9pZCBzZXRQcmltYXJ5KGJv b2wgcHJpbWFyeSkgeyBtX3ByaW1hcnkgPSBwcmltYXJ5OyB9Ci0rICAgIGJvb2wgaXNQcmltYXJ5 KCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5OyB9Ci0rCi0rICAgIGludCBzY3JlZW5OdW1iZXIo KSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxEZXNrdG9wLT5udW1iZXIoKTsgfQotKyAgICBzdGF0 aWMgaW50IHZpcnR1YWxEZXNrdG9wTnVtYmVyU3RhdGljKGNvbnN0IFFTY3JlZW4gKnNjcmVlbik7 Ci0rCi0rICAgIHhjYl9zY3JlZW5fdCAqc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFs RGVza3RvcC0+c2NyZWVuKCk7IH0KLSsgICAgeGNiX3dpbmRvd190IHJvb3QoKSBjb25zdCB7IHJl dHVybiBzY3JlZW4oKS0+cm9vdDsgfQotKyAgICB4Y2JfcmFuZHJfb3V0cHV0X3Qgb3V0cHV0KCkg Y29uc3QgeyByZXR1cm4gbV9vdXRwdXQ7IH0KLSsgICAgeGNiX3JhbmRyX2NydGNfdCBjcnRjKCkg Y29uc3QgeyByZXR1cm4gbV9jcnRjOyB9Ci0rICAgIHhjYl9yYW5kcl9tb2RlX3QgbW9kZSgpIGNv bnN0IHsgcmV0dXJuIG1fbW9kZTsgfQotKwotKyAgICB2b2lkIHNldE91dHB1dCh4Y2JfcmFuZHJf b3V0cHV0X3Qgb3V0cHV0SWQsCi0rICAgICAgICAgICAgICAgICAgIHhjYl9yYW5kcl9nZXRfb3V0 cHV0X2luZm9fcmVwbHlfdCAqb3V0cHV0SW5mbyk7Ci0rICAgIHZvaWQgc2V0Q3J0Yyh4Y2JfcmFu ZHJfY3J0Y190IGNydGMpIHsgbV9jcnRjID0gY3J0YzsgfQotKwotKyAgICB2b2lkIHdpbmRvd1No b3duKFFYY2JXaW5kb3cgKndpbmRvdyk7Ci0rICAgIFFTdHJpbmcgd2luZG93TWFuYWdlck5hbWUo KSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxEZXNrdG9wLT53aW5kb3dNYW5hZ2VyTmFtZSgpOyB9 Ci0rCi0rICAgIFFTdXJmYWNlRm9ybWF0IHN1cmZhY2VGb3JtYXRGb3IoY29uc3QgUVN1cmZhY2VG b3JtYXQgJmZvcm1hdCkgY29uc3Q7Ci0rCi0rICAgIGNvbnN0IHhjYl92aXN1YWx0eXBlX3QgKnZp c3VhbEZvckZvcm1hdChjb25zdCBRU3VyZmFjZUZvcm1hdCAmZm9ybWF0KSBjb25zdCB7IHJldHVy biBtX3ZpcnR1YWxEZXNrdG9wLT52aXN1YWxGb3JGb3JtYXQoZm9ybWF0KTsgfQotKyAgICBjb25z dCB4Y2JfdmlzdWFsdHlwZV90ICp2aXN1YWxGb3JJZCh4Y2JfdmlzdWFsaWRfdCB2aXN1YWxpZCkg Y29uc3Q7Ci0rICAgIHF1aW50OCBkZXB0aE9mVmlzdWFsKHhjYl92aXN1YWxpZF90IHZpc3VhbGlk KSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxEZXNrdG9wLT5kZXB0aE9mVmlzdWFsKHZpc3VhbGlk KTsgfQotKwotKyAgICBRU3RyaW5nIG5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX291 dHB1dE5hbWU7IH0KLSsKLSsgICAgdm9pZCB1cGRhdGVHZW9tZXRyeShjb25zdCBRUmVjdCAmZ2Vv bWV0cnksIHVpbnQ4X3Qgcm90YXRpb24pOwotKyAgICB2b2lkIHVwZGF0ZUdlb21ldHJ5KHhjYl90 aW1lc3RhbXBfdCB0aW1lc3RhbXAgPSBYQ0JfVElNRV9DVVJSRU5UX1RJTUUpOwotKyAgICB2b2lk IHVwZGF0ZUF2YWlsYWJsZUdlb21ldHJ5KCk7Ci0rICAgIHZvaWQgdXBkYXRlUmVmcmVzaFJhdGUo eGNiX3JhbmRyX21vZGVfdCBtb2RlKTsKLSsKLSsgICAgUUZvbnRFbmdpbmU6OkhpbnRTdHlsZSBo aW50U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxEZXNrdG9wLT5oaW50U3R5bGUoKTsg fQotKyAgICBRRm9udEVuZ2luZTo6U3VicGl4ZWxBbnRpYWxpYXNpbmdUeXBlIHN1YnBpeGVsVHlw ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVhbERlc2t0b3AtPnN1YnBpeGVsVHlwZSgpOyB9Ci0r ICAgIGludCBhbnRpYWxpYXNpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsRGVz a3RvcC0+YW50aWFsaWFzaW5nRW5hYmxlZCgpOyB9Ci0rCi0rICAgIFFYY2JYU2V0dGluZ3MgKnhT ZXR0aW5ncygpIGNvbnN0OwotKwotK3ByaXZhdGU6Ci0rICAgIHZvaWQgc2VuZFN0YXJ0dXBNZXNz YWdlKGNvbnN0IFFCeXRlQXJyYXkgJm1lc3NhZ2UpIGNvbnN0OwotKwotKyAgICBRQnl0ZUFycmF5 IGdldE91dHB1dFByb3BlcnR5KHhjYl9hdG9tX3QgYXRvbSkgY29uc3Q7Ci0rICAgIFFCeXRlQXJy YXkgZ2V0RWRpZCgpIGNvbnN0OwotKwotKyAgICBRWGNiVmlydHVhbERlc2t0b3AgKm1fdmlydHVh bERlc2t0b3A7Ci0rICAgIHhjYl9yYW5kcl9vdXRwdXRfdCBtX291dHB1dDsKLSsgICAgeGNiX3Jh bmRyX2NydGNfdCBtX2NydGM7Ci0rICAgIHhjYl9yYW5kcl9tb2RlX3QgbV9tb2RlID0gWENCX05P TkU7Ci0rICAgIGJvb2wgbV9wcmltYXJ5ID0gZmFsc2U7Ci0rCi0rICAgIFFTdHJpbmcgbV9vdXRw dXROYW1lOwotKyAgICBRU2l6ZUYgbV9vdXRwdXRTaXplTWlsbGltZXRlcnM7Ci0rICAgIFFTaXpl RiBtX3NpemVNaWxsaW1ldGVyczsKLSsgICAgUVJlY3QgbV9nZW9tZXRyeTsKLSsgICAgUVJlY3Qg bV9hdmFpbGFibGVHZW9tZXRyeTsKLSsgICAgUXQ6OlNjcmVlbk9yaWVudGF0aW9uIG1fb3JpZW50 YXRpb24gPSBRdDo6UHJpbWFyeU9yaWVudGF0aW9uOwotKyAgICBRWGNiQ3Vyc29yICptX2N1cnNv cjsKLSsgICAgaW50IG1fcmVmcmVzaFJhdGUgPSA2MDsKLSsgICAgaW50IG1fcGl4ZWxEZW5zaXR5 ID0gMTsKLSsgICAgUUVkaWRQYXJzZXIgbV9lZGlkOwotK307Ci0rCi0rI2lmbmRlZiBRVF9OT19E RUJVR19TVFJFQU0KLStRX0dVSV9FWFBPUlQgUURlYnVnIG9wZXJhdG9yPDwoUURlYnVnLCBjb25z dCBRWGNiU2NyZWVuICopOwotKyNlbmRpZgotKwotK1FUX0VORF9OQU1FU1BBQ0UKLSsKLSsjZW5k aWYKLWRpZmYgLXVyTiBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4vbGli cXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYnNlc3Npb25tYW5hZ2VyLmggcXQ1ZHhjYi1wbHVnaW4t MS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYnNlc3Npb25t YW5hZ2VyLmgKLS0tLSBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4vbGli cXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYnNlc3Npb25tYW5hZ2VyLmgJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBs dWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNic2Vzc2lvbm1hbmFnZXIuaAkyMDE5LTA3 LTEyIDIwOjE5OjU1LjkwMzk4NjUwOCArMDAwMAotQEAgLTAsMCArMSw5NCBAQAotKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCi0rKioKLSsqKiBDb3B5cmlnaHQgKEMpIDIwMTMgVGVvIE1ybmphdmFjIDx0 ZW9Aa2RlLm9yZz4KLSsqKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgot KyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KLSsqKgotKyoqIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBwbHVnaW5zIG9mIHRoZSBRdCBUb29sa2l0LgotKyoqCi0rKiog JFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKLSsqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKLSsq KiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2Ug dGhpcyBmaWxlIGluCi0rKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2Ug YWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCi0rKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZl bHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCi0rKiogYSB3cml0 dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNp bmcgdGVybXMKLSsqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMt Y29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKLSsqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3Qg Zm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgotKyoqCi0rKiogR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBm aWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgotKyoqIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZQotKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNF LkxHUEwzIGluY2x1ZGVkIGluIHRoZQotKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFz ZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bwotKyoqIGVuc3VyZSB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKLSsq KiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1s LgotKyoqCi0rKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRlcm5h dGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUK LSsqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlv bikgdGhlIEdOVSBHZW5lcmFsCi0rKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBs YXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQotKyoqIFF0IEZvdW5kYXRpb24u IFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rKiog Rm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElD RU5TRS5HUEwzCi0rKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBs ZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZwotKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKLSsqKiBiZSBtZXQ6 IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAotKyoqIGh0dHBz Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgotKyoqCi0rKiogJFFUX0VORF9M SUNFTlNFJAotKyoqCi0rKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsKLSsjaWZuZGVmIFFYQ0JTRVNT SU9OTUFOQUdFUl9ICi0rI2RlZmluZSBRWENCU0VTU0lPTk1BTkFHRVJfSAotKwotKy8vCi0rLy8g IFcgQSBSIE4gSSBOIEcKLSsvLyAgLS0tLS0tLS0tLS0tLQotKy8vCi0rLy8gVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIFFQQSBBUEkgYW5kIGlzIG5vdCBtZWFudCB0byBiZSB1c2VkCi0rLy8gaW4g YXBwbGljYXRpb25zLiBVc2FnZSBvZiB0aGlzIEFQSSBtYXkgbWFrZSB5b3VyIGNvZGUKLSsvLyBz b3VyY2UgYW5kIGJpbmFyeSBpbmNvbXBhdGlibGUgd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgUXQu Ci0rLy8KLSsKLSsjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXNlc3Npb25tYW5hZ2VyLmg+Ci0rCi0r I2lmbmRlZiBRVF9OT19TRVNTSU9OTUFOQUdFUgotKwotK1FUX0JFR0lOX05BTUVTUEFDRQotKwot K2NsYXNzIFFFdmVudExvb3A7Ci0rCi0rY2xhc3MgUVhjYlNlc3Npb25NYW5hZ2VyIDogcHVibGlj IFFQbGF0Zm9ybVNlc3Npb25NYW5hZ2VyCi0rewotK3B1YmxpYzoKLSsgICAgUVhjYlNlc3Npb25N YW5hZ2VyKGNvbnN0IFFTdHJpbmcgJmlkLCBjb25zdCBRU3RyaW5nICZrZXkpOwotKyAgICB2aXJ0 dWFsIH5RWGNiU2Vzc2lvbk1hbmFnZXIoKTsKLSsKLSsgICAgdm9pZCAqaGFuZGxlKCkgY29uc3Q7 Ci0rCi0rICAgIHZvaWQgc2V0U2Vzc2lvbklkKGNvbnN0IFFTdHJpbmcgJmlkKSB7IG1fc2Vzc2lv bklkID0gaWQ7IH0KLSsgICAgdm9pZCBzZXRTZXNzaW9uS2V5KGNvbnN0IFFTdHJpbmcgJmtleSkg eyBtX3Nlc3Npb25LZXkgPSBrZXk7IH0KLSsKLSsgICAgYm9vbCBhbGxvd3NJbnRlcmFjdGlvbigp IG92ZXJyaWRlOwotKyAgICBib29sIGFsbG93c0Vycm9ySW50ZXJhY3Rpb24oKSBvdmVycmlkZTsK LSsgICAgdm9pZCByZWxlYXNlKCkgb3ZlcnJpZGU7Ci0rCi0rICAgIHZvaWQgY2FuY2VsKCkgb3Zl cnJpZGU7Ci0rCi0rICAgIHZvaWQgc2V0TWFuYWdlclByb3BlcnR5KGNvbnN0IFFTdHJpbmcgJm5h bWUsIGNvbnN0IFFTdHJpbmcgJnZhbHVlKSBvdmVycmlkZTsKLSsgICAgdm9pZCBzZXRNYW5hZ2Vy UHJvcGVydHkoY29uc3QgUVN0cmluZyAmbmFtZSwgY29uc3QgUVN0cmluZ0xpc3QgJnZhbHVlKSBv dmVycmlkZTsKLSsKLSsgICAgYm9vbCBpc1BoYXNlMigpIGNvbnN0IG92ZXJyaWRlOwotKyAgICB2 b2lkIHJlcXVlc3RQaGFzZTIoKSBvdmVycmlkZTsKLSsKLSsgICAgdm9pZCBleGl0RXZlbnRMb29w KCk7Ci0rCi0rcHJpdmF0ZToKLSsgICAgUUV2ZW50TG9vcCAqbV9ldmVudExvb3A7Ci0rfTsKLSsK LStRVF9FTkRfTkFNRVNQQUNFCi0rCi0rI2VuZGlmIC8vUVRfTk9fU0VTU0lPTk1BTkFHRVIKLSsK LSsjZW5kaWYgLy9RWENCU0VTU0lPTk1BTkFHRVJfSAotZGlmZiAtdXJOIHF0NWR4Y2ItcGx1Z2lu LTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNic3lz dGVtdHJheXRyYWNrZXIuaCBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9saWJx dDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNic3lzdGVtdHJheXRyYWNrZXIuaAotLS0tIHF0NWR4Y2It cGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9x eGNic3lzdGVtdHJheXRyYWNrZXIuaAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIHF0NWR4Y2ItcGx1Z2luLTEuMi41L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1k ZXYvNS4xMy4wL3F4Y2JzeXN0ZW10cmF5dHJhY2tlci5oCTIwMTktMDctMTIgMjA6MTk6NTUuOTAz OTg2NTA4ICswMDAwCi1AQCAtMCwwICsxLDg1IEBACi0rLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSsq KgotKyoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQuCi0rKiogQ29udGFj dDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLwotKyoqCi0rKiogVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIHBsdWdpbnMgb2YgdGhlIFF0IFRvb2xraXQuCi0rKioKLSsqKiAkUVRfQkVHSU5f TElDRU5TRTpMR1BMJAotKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQotKyoqIExpY2Vuc2Vl cyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUg aW4KLSsqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQg cHJvdmlkZWQgd2l0aCB0aGUKLSsqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNj b3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KLSsqKiBhIHdyaXR0ZW4gYWdyZWVt ZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcwot KyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25z LiBGb3IgZnVydGhlcgotKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0 dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCi0rKioKLSsqKiBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJl IHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCi0rKiogR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0r KiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5j bHVkZWQgaW4gdGhlCi0rKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0 aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCi0rKiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cwotKyoqIHdpbGwgYmUg bWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCi0rKioKLSsq KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQotKyoqIEFsdGVybmF0aXZlbHksIHRo aXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotKyoqIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05V IEdlbmVyYWwKLSsqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNp b24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCi0rKiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vu c2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLSsqKiBGb3VuZGF0aW9u IGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMK LSsqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmll dyB0aGUgZm9sbG93aW5nCi0rKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAotKyoqIGJlIG1ldDogaHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCi0rKiogaHR0cHM6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCi0rKioKLSsqKiAkUVRfRU5EX0xJQ0VOU0UkCi0r KioKLSsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwotKwotKyNpZm5kZWYgUVhDQlNZU1RFTVRSQVlUUkFD S0VSX0gKLSsjZGVmaW5lIFFYQ0JTWVNURU1UUkFZVFJBQ0tFUl9ICi0rCi0rI2luY2x1ZGUgInF4 Y2Jjb25uZWN0aW9uLmgiCi0rCi0rI2luY2x1ZGUgPHhjYi94Y2IuaD4KLSsKLStRVF9CRUdJTl9O QU1FU1BBQ0UKLSsKLStjbGFzcyBRWGNiQ29ubmVjdGlvbjsKLStjbGFzcyBRU2NyZWVuOwotKwot K2NsYXNzIFFYY2JTeXN0ZW1UcmF5VHJhY2tlciA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgUVhj YldpbmRvd0V2ZW50TGlzdGVuZXIKLSt7Ci0rICAgIFFfT0JKRUNUCi0rcHVibGljOgotKyAgICBz dGF0aWMgUVhjYlN5c3RlbVRyYXlUcmFja2VyICpjcmVhdGUoUVhjYkNvbm5lY3Rpb24gKmNvbm5l Y3Rpb24pOwotKwotKyAgICB4Y2Jfd2luZG93X3QgdHJheVdpbmRvdygpOwotKyAgICB2b2lkIHJl cXVlc3RTeXN0ZW1UcmF5V2luZG93RG9jayh4Y2Jfd2luZG93X3Qgd2luZG93KSBjb25zdDsKLSsK LSsgICAgdm9pZCBub3RpZnlNYW5hZ2VyQ2xpZW50TWVzc2FnZUV2ZW50KGNvbnN0IHhjYl9jbGll bnRfbWVzc2FnZV9ldmVudF90ICopOwotKwotKyAgICB2b2lkIGhhbmRsZURlc3Ryb3lOb3RpZnlF dmVudChjb25zdCB4Y2JfZGVzdHJveV9ub3RpZnlfZXZlbnRfdCAqKSBvdmVycmlkZTsKLSsKLSsg ICAgeGNiX3Zpc3VhbGlkX3QgdmlzdWFsSWQoKTsKLStzaWduYWxzOgotKyAgICB2b2lkIHN5c3Rl bVRyYXlXaW5kb3dDaGFuZ2VkKFFTY3JlZW4gKnNjcmVlbik7Ci0rCi0rcHJpdmF0ZToKLSsgICAg ZXhwbGljaXQgUVhjYlN5c3RlbVRyYXlUcmFja2VyKFFYY2JDb25uZWN0aW9uICpjb25uZWN0aW9u LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNiX2F0b21fdCB0cmF5QXRv bSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjYl9hdG9tX3Qgc2VsZWN0 aW9uKTsKLSsgICAgc3RhdGljIHhjYl93aW5kb3dfdCBsb2NhdGVUcmF5V2luZG93KGNvbnN0IFFY Y2JDb25uZWN0aW9uICpjb25uZWN0aW9uLCB4Y2JfYXRvbV90IHNlbGVjdGlvbik7Ci0rICAgIHZv aWQgZW1pdFN5c3RlbVRyYXlXaW5kb3dDaGFuZ2VkKCk7Ci0rICAgIHhjYl92aXN1YWxpZF90IG5l dFN5c3RlbVRyYXlWaXN1YWwoKTsKLSsKLSsgICAgY29uc3QgeGNiX2F0b21fdCBtX3NlbGVjdGlv bjsKLSsgICAgY29uc3QgeGNiX2F0b21fdCBtX3RyYXlBdG9tOwotKyAgICBRWGNiQ29ubmVjdGlv biAqbV9jb25uZWN0aW9uOwotKyAgICB4Y2Jfd2luZG93X3QgbV90cmF5V2luZG93ID0gMDsKLSt9 OwotKwotK1FUX0VORF9OQU1FU1BBQ0UKLSsKLSsjZW5kaWYgLy8gUVhDQlNZU1RFTVRSQVlUUkFD S0VSX0gKLWRpZmYgLXVyTiBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4v bGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYnZ1bGthbmluc3RhbmNlLmggcXQ1ZHhjYi1wbHVn aW4tMS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYnZ1bGth bmluc3RhbmNlLmgKLS0tLSBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4v bGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYnZ1bGthbmluc3RhbmNlLmgJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9y bXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNidnVsa2FuaW5zdGFuY2UuaAkyMDE5 LTA3LTEyIDIwOjE5OjU1LjkwMzk4NjUwOCArMDAwMAotQEAgLTAsMCArMSw3NiBAQAotKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCi0rKioKLSsqKiBDb3B5cmlnaHQgKEMpIDIwMTcgVGhlIFF0IENvbXBh bnkgTHRkLgotKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KLSsqKgot KyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHBsdWdpbnMgb2YgdGhlIFF0IFRvb2xraXQuCi0rKioK LSsqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAotKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2Fn ZQotKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5 IHVzZSB0aGlzIGZpbGUgaW4KLSsqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGlj ZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKLSsqKiBTb2Z0d2FyZSBvciwgYWx0ZXJu YXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KLSsqKiBh IHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxp Y2Vuc2luZyB0ZXJtcwotKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90 ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgotKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29u dGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCi0rKioKLSsqKiBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRlcm5hdGl2ZWx5LCB0 aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCi0r KiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCi0rKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJ Q0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCi0rKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4g UGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCi0rKiogZW5zdXJlIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50 cwotKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4w Lmh0bWwuCi0rKioKLSsqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQotKyoqIEFs dGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVQotKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIg b3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKLSsqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3Ig YW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCi0rKiogUXQgRm91bmRh dGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK LSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFu ZCBMSUNFTlNFLkdQTDMKLSsqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmls ZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCi0rKiogaW5mb3JtYXRpb24gdG8gZW5zdXJl IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAotKyoqIGJl IG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCi0rKiog aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCi0rKioKLSsqKiAkUVRf RU5EX0xJQ0VOU0UkCi0rKioKLSsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotKwotKyNpZm5kZWYgUVhD QlZVTEtBTklOU1RBTkNFX0gKLSsjZGVmaW5lIFFYQ0JWVUxLQU5JTlNUQU5DRV9ICi0rCi0rI2lm IGRlZmluZWQoVlVMS0FOX0hfKSAmJiAhZGVmaW5lZChWS19VU0VfUExBVEZPUk1fWENCX0tIUikK LSsjZXJyb3IgInZ1bGthbi5oIGluY2x1ZGVkIHdpdGhvdXQgeGNiIFdTSSIKLSsjZW5kaWYKLSsK LSsjZGVmaW5lIFZLX1VTRV9QTEFURk9STV9YQ0JfS0hSCi0rCi0rI2luY2x1ZGUgPFF0VnVsa2Fu U3VwcG9ydC9wcml2YXRlL3FiYXNpY3Z1bGthbnBsYXRmb3JtaW5zdGFuY2VfcC5oPgotKyNpbmNs dWRlIDxRTGlicmFyeT4KLSsKLStRVF9CRUdJTl9OQU1FU1BBQ0UKLSsKLStjbGFzcyBRWGNiV2lu ZG93OwotKwotK2NsYXNzIFFYY2JWdWxrYW5JbnN0YW5jZSA6IHB1YmxpYyBRQmFzaWNQbGF0Zm9y bVZ1bGthbkluc3RhbmNlCi0rewotK3B1YmxpYzoKLSsgICAgUVhjYlZ1bGthbkluc3RhbmNlKFFW dWxrYW5JbnN0YW5jZSAqaW5zdGFuY2UpOwotKyAgICB+UVhjYlZ1bGthbkluc3RhbmNlKCk7Ci0r Ci0rICAgIHZvaWQgY3JlYXRlT3JBZG9wdEluc3RhbmNlKCkgb3ZlcnJpZGU7Ci0rICAgIGJvb2wg c3VwcG9ydHNQcmVzZW50KFZrUGh5c2ljYWxEZXZpY2UgcGh5c2ljYWxEZXZpY2UsIHVpbnQzMl90 IHF1ZXVlRmFtaWx5SW5kZXgsIFFXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7Ci0rICAgIHZvaWQg cHJlc2VudFF1ZXVlZChRV2luZG93ICp3aW5kb3cpIG92ZXJyaWRlOwotKwotKyAgICBWa1N1cmZh Y2VLSFIgY3JlYXRlU3VyZmFjZShRWGNiV2luZG93ICp3aW5kb3cpOwotKwotK3ByaXZhdGU6Ci0r ICAgIFFWdWxrYW5JbnN0YW5jZSAqbV9pbnN0YW5jZTsKLSsgICAgUEZOX3ZrR2V0UGh5c2ljYWxE ZXZpY2VYY2JQcmVzZW50YXRpb25TdXBwb3J0S0hSIG1fZ2V0UGh5c0RldlByZXNTdXBwb3J0Owot KyAgICBQRk5fdmtDcmVhdGVYY2JTdXJmYWNlS0hSIG1fY3JlYXRlU3VyZmFjZTsKLSt9OwotKwot K1FUX0VORF9OQU1FU1BBQ0UKLSsKLSsjZW5kaWYgLy8gUVhDQlZVTEtBTklOU1RBTkNFX0gKLWRp ZmYgLXVyTiBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNi cXBhLWRldi81LjEzLjAvcXhjYnZ1bGthbndpbmRvdy5oIHF0NWR4Y2ItcGx1Z2luLTEuMi41L3Bs YXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2J2dWxrYW53aW5kb3cuaAot LS0tIHF0NWR4Y2ItcGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEt ZGV2LzUuMTMuMC9xeGNidnVsa2Fud2luZG93LmgJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4 Y2JxcGEtZGV2LzUuMTMuMC9xeGNidnVsa2Fud2luZG93LmgJMjAxOS0wNy0xMiAyMDoxOTo1NS45 MDM5ODY1MDggKzAwMDAKLUBAIC0wLDAgKzEsNjUgQEAKLSsvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot KyoqCi0rKiogQ29weXJpZ2h0IChDKSAyMDE3IFRoZSBRdCBDb21wYW55IEx0ZC4KLSsqKiBDb250 YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCi0rKioKLSsqKiBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgcGx1Z2lucyBvZiB0aGUgUXQgVG9vbGtpdC4KLSsqKgotKyoqICRRVF9CRUdJ Tl9MSUNFTlNFOkxHUEwkCi0rKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCi0rKiogTGljZW5z ZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmls ZSBpbgotKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVu dCBwcm92aWRlZCB3aXRoIHRoZQotKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBh Y2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgotKyoqIGEgd3JpdHRlbiBhZ3Jl ZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1z Ci0rKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlv bnMuIEZvciBmdXJ0aGVyCi0rKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQg aHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KLSsqKgotKyoqIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBVc2FnZQotKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkg YmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKLSsqKiBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK LSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBp bmNsdWRlZCBpbiB0aGUKLSsqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3 IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KLSsqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCi0rKiogd2lsbCBi ZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KLSsqKgot KyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwg dGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rKiogR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBH TlUgR2VuZXJhbAotKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVy c2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKLSsqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGlj ZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZvdW5kYXRp b24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BM MwotKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2 aWV3IHRoZSBmb2xsb3dpbmcKLSsqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCi0rKiogYmUgbWV0OiBodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKLSsqKiBodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KLSsqKgotKyoqICRRVF9FTkRfTElDRU5TRSQK LSsqKgotKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0rCi0rI2lmbmRlZiBRWENCVlVMS0FOV0lORE9X X0gKLSsjZGVmaW5lIFFYQ0JWVUxLQU5XSU5ET1dfSAotKwotKyNpbmNsdWRlICJxeGNid2luZG93 LmgiCi0rI2luY2x1ZGUgInF4Y2J2dWxrYW5pbnN0YW5jZS5oIgotKwotK1FUX0JFR0lOX05BTUVT UEFDRQotKwotK2NsYXNzIFFYY2JWdWxrYW5XaW5kb3cgOiBwdWJsaWMgUVhjYldpbmRvdwotK3sK LStwdWJsaWM6Ci0rICAgIFFYY2JWdWxrYW5XaW5kb3coUVdpbmRvdyAqd2luZG93KTsKLSsgICAg flFYY2JWdWxrYW5XaW5kb3coKTsKLSsKLSsgICAgVmtTdXJmYWNlS0hSICpzdXJmYWNlKCk7Ci0r Ci0rcHJvdGVjdGVkOgotKyAgICB2b2lkIHJlc29sdmVGb3JtYXQoY29uc3QgUVN1cmZhY2VGb3Jt YXQgJmZvcm1hdCkgb3ZlcnJpZGU7Ci0rCi0rcHJpdmF0ZToKLSsgICAgVmtTdXJmYWNlS0hSIG1f c3VyZmFjZTsKLSt9OwotKwotK1FUX0VORF9OQU1FU1BBQ0UKLSsKLSsjZW5kaWYgLy8gUVhDQlZV TEtBTldJTkRPV19ICi1kaWZmIC11ck4gcXQ1ZHhjYi1wbHVnaW4tMS4yLjUub2xkL3BsYXRmb3Jt cGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2J3aW5kb3cuaCBxdDVkeGNiLXBsdWdp bi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNid2luZG93 LmgKLS0tLSBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNi cXBhLWRldi81LjEzLjAvcXhjYndpbmRvdy5oCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCi0rKysgcXQ1ZHhjYi1wbHVnaW4tMS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNi cXBhLWRldi81LjEzLjAvcXhjYndpbmRvdy5oCTIwMTktMDctMTIgMjA6MTk6NTUuOTAzOTg2NTA4 ICswMDAwCi1AQCAtMCwwICsxLDI5OSBAQAotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0rKioKLSsq KiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgotKyoqIENvbnRhY3Q6IGh0 dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KLSsqKgotKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBwbHVnaW5zIG9mIHRoZSBRdCBUb29sa2l0LgotKyoqCi0rKiogJFFUX0JFR0lOX0xJQ0VO U0U6TEdQTCQKLSsqKiBDb21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKLSsqKiBMaWNlbnNlZXMgaG9s ZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCi0r KiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3Zp ZGVkIHdpdGggdGhlCi0rKiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFu Y2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCi0rKiogYSB3cml0dGVuIGFncmVlbWVudCBi ZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKLSsqKiBh bmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9y IGZ1cnRoZXIKLSsqKiBpbmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczov L3d3dy5xdC5pby9jb250YWN0LXVzLgotKyoqCi0rKiogR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2Vk IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlcgotKyoqIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZv dW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVk IGluIHRoZQotKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZv bGxvd2luZyBpbmZvcm1hdGlvbiB0bwotKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJlbWVudHMKLSsqKiB3aWxsIGJlIG1ldDog aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgotKyoqCi0rKiogR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKLSsqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZp bGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLSsqKiBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5l cmFsCi0rKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFw cHJvdmVkIGJ5IHRoZSBLREUgRnJlZQotKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBh cmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rKiogRm91bmRhdGlvbiBhbmQg YXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCi0rKiog aW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhl IGZvbGxvd2luZwotKyoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKLSsqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAotKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvZ3BsLTMuMC5odG1sLgotKyoqCi0rKiogJFFUX0VORF9MSUNFTlNFJAotKyoqCi0r KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KLSsKLSsjaWZuZGVmIFFYQ0JXSU5ET1dfSAotKyNkZWZpbmUg UVhDQldJTkRPV19ICi0rCi0rI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm13aW5kb3cuaD4KLSsjaW5j bHVkZSA8UXRHdWkvUVN1cmZhY2VGb3JtYXQ+Ci0rI2luY2x1ZGUgPFF0R3VpL1FJbWFnZT4KLSsK LSsjaW5jbHVkZSA8eGNiL3hjYi5oPgotKyNpbmNsdWRlIDx4Y2Ivc3luYy5oPgotKwotKyNpbmNs dWRlICJxeGNib2JqZWN0LmgiCi0rCi0rI2luY2x1ZGUgPFF0UGxhdGZvcm1IZWFkZXJzL3F4Y2J3 aW5kb3dmdW5jdGlvbnMuaD4KLSsKLStRVF9CRUdJTl9OQU1FU1BBQ0UKLSsKLStjbGFzcyBRWGNi U2NyZWVuOwotK2NsYXNzIFFYY2JTeW5jV2luZG93UmVxdWVzdDsKLStjbGFzcyBRSWNvbjsKLSsK LStjbGFzcyBRX1hDQl9FWFBPUlQgUVhjYldpbmRvdyA6IHB1YmxpYyBRWGNiT2JqZWN0LCBwdWJs aWMgUVhjYldpbmRvd0V2ZW50TGlzdGVuZXIsIHB1YmxpYyBRUGxhdGZvcm1XaW5kb3cKLSt7Ci0r cHVibGljOgotKyAgICBlbnVtIE5ldFdtU3RhdGUgewotKyAgICAgICAgTmV0V21TdGF0ZUFib3Zl ID0gMHgxLAotKyAgICAgICAgTmV0V21TdGF0ZUJlbG93ID0gMHgyLAotKyAgICAgICAgTmV0V21T dGF0ZUZ1bGxTY3JlZW4gPSAweDQsCi0rICAgICAgICBOZXRXbVN0YXRlTWF4aW1pemVkSG9yeiA9 IDB4OCwKLSsgICAgICAgIE5ldFdtU3RhdGVNYXhpbWl6ZWRWZXJ0ID0gMHgxMCwKLSsgICAgICAg IE5ldFdtU3RhdGVNb2RhbCA9IDB4MjAsCi0rICAgICAgICBOZXRXbVN0YXRlU3RheXNPblRvcCA9 IDB4NDAsCi0rICAgICAgICBOZXRXbVN0YXRlRGVtYW5kc0F0dGVudGlvbiA9IDB4ODAKLSsgICAg fTsKLSsKLSsgICAgUV9ERUNMQVJFX0ZMQUdTKE5ldFdtU3RhdGVzLCBOZXRXbVN0YXRlKQotKwot KyAgICBRWGNiV2luZG93KFFXaW5kb3cgKndpbmRvdyk7Ci0rICAgIH5RWGNiV2luZG93KCk7Ci0r Ci0rICAgIHZvaWQgc2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJlY3QpIG92ZXJyaWRlOwotKwot KyAgICBRTWFyZ2lucyBmcmFtZU1hcmdpbnMoKSBjb25zdCBvdmVycmlkZTsKLSsKLSsgICAgdm9p ZCBzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkgb3ZlcnJpZGU7Ci0rICAgIHZvaWQgc2V0V2luZG93 RmxhZ3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKSBvdmVycmlkZTsKLSsgICAgdm9pZCBzZXRXaW5k b3dTdGF0ZShRdDo6V2luZG93U3RhdGVzIHN0YXRlKSBvdmVycmlkZTsKLSsgICAgV0lkIHdpbklk KCkgY29uc3Qgb3ZlcnJpZGU7Ci0rICAgIHZvaWQgc2V0UGFyZW50KGNvbnN0IFFQbGF0Zm9ybVdp bmRvdyAqd2luZG93KSBvdmVycmlkZTsKLSsKLSsgICAgYm9vbCBpc0V4cG9zZWQoKSBjb25zdCBv dmVycmlkZTsKLSsgICAgYm9vbCBpc0VtYmVkZGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0rICAgIFFQ b2ludCBtYXBUb0dsb2JhbChjb25zdCBRUG9pbnQgJnBvcykgY29uc3Qgb3ZlcnJpZGU7Ci0rICAg IFFQb2ludCBtYXBGcm9tR2xvYmFsKGNvbnN0IFFQb2ludCAmcG9zKSBjb25zdCBvdmVycmlkZTsK LSsKLSsgICAgdm9pZCBzZXRXaW5kb3dUaXRsZShjb25zdCBRU3RyaW5nICZ0aXRsZSkgb3ZlcnJp ZGU7Ci0rICAgIHZvaWQgc2V0V2luZG93SWNvblRleHQoY29uc3QgUVN0cmluZyAmdGl0bGUpOwot KyAgICB2b2lkIHNldFdpbmRvd0ljb24oY29uc3QgUUljb24gJmljb24pIG92ZXJyaWRlOwotKyAg ICB2b2lkIHJhaXNlKCkgb3ZlcnJpZGU7Ci0rICAgIHZvaWQgbG93ZXIoKSBvdmVycmlkZTsKLSsg ICAgdm9pZCBwcm9wYWdhdGVTaXplSGludHMoKSBvdmVycmlkZTsKLSsKLSsgICAgdm9pZCByZXF1 ZXN0QWN0aXZhdGVXaW5kb3coKSBvdmVycmlkZTsKLSsKLSsgICAgYm9vbCBzZXRLZXlib2FyZEdy YWJFbmFibGVkKGJvb2wgZ3JhYikgb3ZlcnJpZGU7Ci0rICAgIGJvb2wgc2V0TW91c2VHcmFiRW5h YmxlZChib29sIGdyYWIpIG92ZXJyaWRlOwotKwotKyAgICBRU3VyZmFjZUZvcm1hdCBmb3JtYXQo KSBjb25zdCBvdmVycmlkZTsKLSsKLSsgICAgYm9vbCB3aW5kb3dFdmVudChRRXZlbnQgKmV2ZW50 KSBvdmVycmlkZTsKLSsKLSsgICAgYm9vbCBzdGFydFN5c3RlbVJlc2l6ZShjb25zdCBRUG9pbnQg JnBvcywgUXQ6OkNvcm5lciBjb3JuZXIpIG92ZXJyaWRlOwotKyAgICBib29sIHN0YXJ0U3lzdGVt TW92ZShjb25zdCBRUG9pbnQgJnBvcykgb3ZlcnJpZGU7Ci0rCi0rICAgIHZvaWQgc2V0T3BhY2l0 eShxcmVhbCBsZXZlbCkgb3ZlcnJpZGU7Ci0rICAgIHZvaWQgc2V0TWFzayhjb25zdCBRUmVnaW9u ICZyZWdpb24pIG92ZXJyaWRlOwotKwotKyAgICB2b2lkIHNldEFsZXJ0U3RhdGUoYm9vbCBlbmFi bGVkKSBvdmVycmlkZTsKLSsgICAgYm9vbCBpc0FsZXJ0U3RhdGUoKSBjb25zdCBvdmVycmlkZSB7 IHJldHVybiBtX2FsZXJ0U3RhdGU7IH0KLSsKLSsgICAgeGNiX3dpbmRvd190IHhjYl93aW5kb3co KSBjb25zdCB7IHJldHVybiBtX3dpbmRvdzsgfQotKyAgICB1aW50IGRlcHRoKCkgY29uc3QgeyBy ZXR1cm4gbV9kZXB0aDsgfQotKyAgICBRSW1hZ2U6OkZvcm1hdCBpbWFnZUZvcm1hdCgpIGNvbnN0 IHsgcmV0dXJuIG1faW1hZ2VGb3JtYXQ7IH0KLSsgICAgYm9vbCBpbWFnZU5lZWRzUmdiU3dhcCgp IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VSZ2JTd2FwOyB9Ci0rCi0rICAgIGJvb2wgaGFuZGxlTmF0 aXZlRXZlbnQoeGNiX2dlbmVyaWNfZXZlbnRfdCAqZXZlbnQpICBvdmVycmlkZTsKLSsKLSsgICAg dm9pZCBoYW5kbGVFeHBvc2VFdmVudChjb25zdCB4Y2JfZXhwb3NlX2V2ZW50X3QgKmV2ZW50KSBv dmVycmlkZTsKLSsgICAgdm9pZCBoYW5kbGVDbGllbnRNZXNzYWdlRXZlbnQoY29uc3QgeGNiX2Ns aWVudF9tZXNzYWdlX2V2ZW50X3QgKmV2ZW50KSBvdmVycmlkZTsKLSsgICAgdm9pZCBoYW5kbGVD b25maWd1cmVOb3RpZnlFdmVudChjb25zdCB4Y2JfY29uZmlndXJlX25vdGlmeV9ldmVudF90ICpl dmVudCkgb3ZlcnJpZGU7Ci0rICAgIHZvaWQgaGFuZGxlTWFwTm90aWZ5RXZlbnQoY29uc3QgeGNi X21hcF9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpIG92ZXJyaWRlOwotKyAgICB2b2lkIGhhbmRsZVVu bWFwTm90aWZ5RXZlbnQoY29uc3QgeGNiX3VubWFwX25vdGlmeV9ldmVudF90ICpldmVudCkgb3Zl cnJpZGU7Ci0rICAgIHZvaWQgaGFuZGxlQnV0dG9uUHJlc3NFdmVudChjb25zdCB4Y2JfYnV0dG9u X3ByZXNzX2V2ZW50X3QgKmV2ZW50KSBvdmVycmlkZTsKLSsgICAgdm9pZCBoYW5kbGVCdXR0b25S ZWxlYXNlRXZlbnQoY29uc3QgeGNiX2J1dHRvbl9yZWxlYXNlX2V2ZW50X3QgKmV2ZW50KSBvdmVy cmlkZTsKLSsgICAgdm9pZCBoYW5kbGVNb3Rpb25Ob3RpZnlFdmVudChjb25zdCB4Y2JfbW90aW9u X25vdGlmeV9ldmVudF90ICpldmVudCkgb3ZlcnJpZGU7Ci0rCi0rICAgIHZvaWQgaGFuZGxlRW50 ZXJOb3RpZnlFdmVudChjb25zdCB4Y2JfZW50ZXJfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KSBvdmVy cmlkZTsKLSsgICAgdm9pZCBoYW5kbGVMZWF2ZU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9sZWF2ZV9u b3RpZnlfZXZlbnRfdCAqZXZlbnQpIG92ZXJyaWRlOwotKyAgICB2b2lkIGhhbmRsZUZvY3VzSW5F dmVudChjb25zdCB4Y2JfZm9jdXNfaW5fZXZlbnRfdCAqZXZlbnQpIG92ZXJyaWRlOwotKyAgICB2 b2lkIGhhbmRsZUZvY3VzT3V0RXZlbnQoY29uc3QgeGNiX2ZvY3VzX291dF9ldmVudF90ICpldmVu dCkgb3ZlcnJpZGU7Ci0rICAgIHZvaWQgaGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChjb25zdCB4 Y2JfcHJvcGVydHlfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KSBvdmVycmlkZTsKLSsjaWYgUVRfQ09O RklHKHhjYl94aW5wdXQpCi0rICAgIHZvaWQgaGFuZGxlWElNb3VzZUV2ZW50KHhjYl9nZV9ldmVu dF90ICosIFF0OjpNb3VzZUV2ZW50U291cmNlIHNvdXJjZSA9IFF0OjpNb3VzZUV2ZW50Tm90U3lu dGhlc2l6ZWQpIG92ZXJyaWRlOwotKyAgICB2b2lkIGhhbmRsZVhJRW50ZXJMZWF2ZSh4Y2JfZ2Vf ZXZlbnRfdCAqKSBvdmVycmlkZTsKLSsjZW5kaWYKLSsKLSsgICAgUVhjYldpbmRvdyAqdG9XaW5k b3coKSBvdmVycmlkZTsKLSsKLSsgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KHhjYl90aW1lc3Rh bXBfdCB0aW1lLCBjb25zdCBRUG9pbnQgJmxvY2FsLCBjb25zdCBRUG9pbnQgJmdsb2JhbCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmllcnMs IFFFdmVudDo6VHlwZSB0eXBlLCBRdDo6TW91c2VFdmVudFNvdXJjZSBzb3VyY2UpOwotKwotKyAg ICB2b2lkIHVwZGF0ZU5ldFdtVXNlclRpbWUoeGNiX3RpbWVzdGFtcF90IHRpbWVzdGFtcCk7Ci0r Ci0rICAgIHN0YXRpYyB2b2lkIHNldFdtV2luZG93VHlwZVN0YXRpYyhRV2luZG93ICp3aW5kb3cs IFFYY2JXaW5kb3dGdW5jdGlvbnM6OldtV2luZG93VHlwZXMgd2luZG93VHlwZXMpOwotKyAgICBz dGF0aWMgdm9pZCBzZXRXbVdpbmRvd1JvbGVTdGF0aWMoUVdpbmRvdyAqd2luZG93LCBjb25zdCBR Qnl0ZUFycmF5ICZyb2xlKTsKLSsgICAgc3RhdGljIHVpbnQgdmlzdWFsSWRTdGF0aWMoUVdpbmRv dyAqd2luZG93KTsKLSsKLSsgICAgUVhjYldpbmRvd0Z1bmN0aW9uczo6V21XaW5kb3dUeXBlcyB3 bVdpbmRvd1R5cGVzKCkgY29uc3Q7Ci0rICAgIHZvaWQgc2V0V21XaW5kb3dUeXBlKFFYY2JXaW5k b3dGdW5jdGlvbnM6OldtV2luZG93VHlwZXMgdHlwZXMsIFF0OjpXaW5kb3dGbGFncyBmbGFncyk7 Ci0rICAgIHZvaWQgc2V0V21XaW5kb3dSb2xlKGNvbnN0IFFCeXRlQXJyYXkgJnJvbGUpOwotKwot KyAgICBzdGF0aWMgdm9pZCBzZXRXaW5kb3dJY29uVGV4dFN0YXRpYyhRV2luZG93ICp3aW5kb3cs IGNvbnN0IFFTdHJpbmcgJnRleHQpOwotKwotKyAgICB2b2lkIHNldFBhcmVudFJlbGF0aXZlQmFj a1BpeG1hcCgpOwotKyAgICBib29sIHJlcXVlc3RTeXN0ZW1UcmF5V2luZG93RG9jaygpOwotKyAg ICB1aW50IHZpc3VhbElkKCkgY29uc3Q7Ci0rCi0rICAgIGJvb2wgbmVlZHNTeW5jKCkgY29uc3Q7 Ci0rCi0rICAgIHZvaWQgcG9zdFN5bmNXaW5kb3dSZXF1ZXN0KCk7Ci0rICAgIHZvaWQgY2xlYXJT eW5jV2luZG93UmVxdWVzdCgpIHsgbV9wZW5kaW5nU3luY1JlcXVlc3QgPSAwOyB9Ci0rCi0rICAg IFFYY2JTY3JlZW4gKnhjYlNjcmVlbigpIGNvbnN0OwotKwotKyAgICBib29sIHN0YXJ0U3lzdGVt TW92ZVJlc2l6ZShjb25zdCBRUG9pbnQgJnBvcywgaW50IGNvcm5lcik7Ci0rICAgIHZvaWQgZG9T dGFydFN5c3RlbU1vdmVSZXNpemUoY29uc3QgUVBvaW50ICZnbG9iYWxQb3MsIGludCBjb3JuZXIp OwotKwotKyAgICBzdGF0aWMgYm9vbCBpc1RyYXlJY29uV2luZG93KFFXaW5kb3cgKndpbmRvdykK LSsgICAgewotKyAgICAgICAgcmV0dXJuIHdpbmRvdy0+b2JqZWN0TmFtZSgpID09IFFMYXRpbjFT dHJpbmcoIlFTeXN0ZW1UcmF5SWNvblN5c1dpbmRvdyIpOwotKyAgICB9Ci0rCi0rICAgIHZpcnR1 YWwgdm9pZCBjcmVhdGUoKTsKLSsgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKLSsKLSsgICAg c3RhdGljIHZvaWQgc2V0V2luZG93VGl0bGUoY29uc3QgUVhjYkNvbm5lY3Rpb24gKmNvbm4sIHhj Yl93aW5kb3dfdCB3aW5kb3csIGNvbnN0IFFTdHJpbmcgJnRpdGxlKTsKLSsgICAgc3RhdGljIFFT dHJpbmcgd2luZG93VGl0bGUoY29uc3QgUVhjYkNvbm5lY3Rpb24gKmNvbm4sIHhjYl93aW5kb3df dCB3aW5kb3cpOwotKwotK3B1YmxpYyBRX1NMT1RTOgotKyAgICB2b2lkIHVwZGF0ZVN5bmNSZXF1 ZXN0Q291bnRlcigpOwotKwotK3Byb3RlY3RlZDoKLSsgICAgdmlydHVhbCB2b2lkIHJlc29sdmVG b3JtYXQoY29uc3QgUVN1cmZhY2VGb3JtYXQgJmZvcm1hdCkgeyBtX2Zvcm1hdCA9IGZvcm1hdDsg fQotKyAgICB2aXJ0dWFsIGNvbnN0IHhjYl92aXN1YWx0eXBlX3QgKmNyZWF0ZVZpc3VhbCgpOwot KyAgICB2b2lkIHNldEltYWdlRm9ybWF0Rm9yVmlzdWFsKGNvbnN0IHhjYl92aXN1YWx0eXBlX3Qg KnZpc3VhbCk7Ci0rCi0rICAgIFFYY2JTY3JlZW4gKnBhcmVudFNjcmVlbigpOwotKyAgICBRWGNi U2NyZWVuICppbml0aWFsU2NyZWVuKCkgY29uc3Q7Ci0rCi0rICAgIHZvaWQgc2V0TmV0V21TdGF0 ZShib29sIHNldCwgeGNiX2F0b21fdCBvbmUsIHhjYl9hdG9tX3QgdHdvID0gMCk7Ci0rICAgIHZv aWQgc2V0TmV0V21TdGF0ZShRdDo6V2luZG93RmxhZ3MgZmxhZ3MpOwotKyAgICB2b2lkIHNldE5l dFdtU3RhdGUoUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZSk7Ci0rICAgIHZvaWQgc2V0TmV0V21TdGF0 ZU9uVW5tYXBwZWRXaW5kb3coKTsKLSsgICAgTmV0V21TdGF0ZXMgbmV0V21TdGF0ZXMoKTsKLSsK LSsgICAgdm9pZCBzZXRNb3RpZldtSGludHMoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKTsKLSsKLSsg ICAgdm9pZCBzZXRUcmFuc3BhcmVudEZvck1vdXNlRXZlbnRzKGJvb2wgdHJhbnNwYXJlbnQpOwot KyAgICB2b2lkIHVwZGF0ZURvZXNOb3RBY2NlcHRGb2N1cyhib29sIGRvZXNOb3RBY2NlcHRGb2N1 cyk7Ci0rCi0rICAgIHZvaWQgc2VuZFhFbWJlZE1lc3NhZ2UoeGNiX3dpbmRvd190IHdpbmRvdywg cXVpbnQzMiBtZXNzYWdlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aW50MzIgZGV0 YWlsID0gMCwgcXVpbnQzMiBkYXRhMSA9IDAsIHF1aW50MzIgZGF0YTIgPSAwKTsKLSsgICAgdm9p ZCBoYW5kbGVYRW1iZWRNZXNzYWdlKGNvbnN0IHhjYl9jbGllbnRfbWVzc2FnZV9ldmVudF90ICpl dmVudCk7Ci0rCi0rICAgIHZvaWQgc2hvdygpOwotKyAgICB2b2lkIGhpZGUoKTsKLSsKLSsgICAg Ym9vbCByZWxheUZvY3VzVG9Nb2RhbFdpbmRvdygpIGNvbnN0OwotKyAgICB2b2lkIGRvRm9jdXNJ bigpOwotKyAgICB2b2lkIGRvRm9jdXNPdXQoKTsKLSsKLSsgICAgdm9pZCBoYW5kbGVCdXR0b25Q cmVzc0V2ZW50KGludCBldmVudF94LCBpbnQgZXZlbnRfeSwgaW50IHJvb3RfeCwgaW50IHJvb3Rf eSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXRhaWwsIFF0OjpLZXli b2FyZE1vZGlmaWVycyBtb2RpZmllcnMsIHhjYl90aW1lc3RhbXBfdCB0aW1lc3RhbXAsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRRXZlbnQ6OlR5cGUgdHlwZSwgUXQ6Ok1vdXNl RXZlbnRTb3VyY2Ugc291cmNlID0gUXQ6Ok1vdXNlRXZlbnROb3RTeW50aGVzaXplZCk7Ci0rCi0r ICAgIHZvaWQgaGFuZGxlQnV0dG9uUmVsZWFzZUV2ZW50KGludCBldmVudF94LCBpbnQgZXZlbnRf eSwgaW50IHJvb3RfeCwgaW50IHJvb3RfeSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IGRldGFpbCwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVycywgeGNiX3Rp bWVzdGFtcF90IHRpbWVzdGFtcCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UUV2ZW50OjpUeXBlIHR5cGUsIFF0OjpNb3VzZUV2ZW50U291cmNlIHNvdXJjZSA9IFF0OjpNb3Vz ZUV2ZW50Tm90U3ludGhlc2l6ZWQpOwotKwotKyAgICB2b2lkIGhhbmRsZU1vdGlvbk5vdGlmeUV2 ZW50KGludCBldmVudF94LCBpbnQgZXZlbnRfeSwgaW50IHJvb3RfeCwgaW50IHJvb3RfeSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9k aWZpZXJzLCB4Y2JfdGltZXN0YW1wX3QgdGltZXN0YW1wLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFFdmVudDo6VHlwZSB0eXBlLCBRdDo6TW91c2VFdmVudFNvdXJjZSBzb3Vy Y2UgPSBRdDo6TW91c2VFdmVudE5vdFN5bnRoZXNpemVkKTsKLSsKLSsgICAgdm9pZCBoYW5kbGVF bnRlck5vdGlmeUV2ZW50KGludCBldmVudF94LCBpbnQgZXZlbnRfeSwgaW50IHJvb3RfeCwgaW50 IHJvb3RfeSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aW50OCBtb2RlLCBx dWludDggZGV0YWlsLCB4Y2JfdGltZXN0YW1wX3QgdGltZXN0YW1wKTsKLSsKLSsgICAgdm9pZCBo YW5kbGVMZWF2ZU5vdGlmeUV2ZW50KGludCByb290X3gsIGludCByb290X3ksCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBxdWludDggbW9kZSwgcXVpbnQ4IGRldGFpbCwgeGNiX3Rp bWVzdGFtcF90IHRpbWVzdGFtcCk7Ci0rCi0rICAgIHhjYl93aW5kb3dfdCBtX3dpbmRvdyA9IDA7 Ci0rICAgIHhjYl9jb2xvcm1hcF90IG1fY21hcCA9IDA7Ci0rCi0rICAgIHVpbnQgbV9kZXB0aCA9 IDA7Ci0rICAgIFFJbWFnZTo6Rm9ybWF0IG1faW1hZ2VGb3JtYXQgPSBRSW1hZ2U6OkZvcm1hdF9B UkdCMzJfUHJlbXVsdGlwbGllZDsKLSsgICAgYm9vbCBtX2ltYWdlUmdiU3dhcCA9IGZhbHNlOwot KwotKyAgICB4Y2Jfc3luY19pbnQ2NF90IG1fc3luY1ZhbHVlOwotKyAgICB4Y2Jfc3luY19jb3Vu dGVyX3QgbV9zeW5jQ291bnRlciA9IDA7Ci0rCi0rICAgIFF0OjpXaW5kb3dTdGF0ZXMgbV93aW5k b3dTdGF0ZSA9IFF0OjpXaW5kb3dOb1N0YXRlOwotKwotKyAgICBib29sIG1fbWFwcGVkID0gZmFs c2U7Ci0rICAgIGJvb2wgbV90cmFuc3BhcmVudCA9IGZhbHNlOwotKyAgICBib29sIG1fZGVmZXJy ZWRBY3RpdmF0aW9uID0gZmFsc2U7Ci0rICAgIGJvb2wgbV9lbWJlZGRlZCA9IGZhbHNlOwotKyAg ICBib29sIG1fYWxlcnRTdGF0ZSA9IGZhbHNlOwotKyAgICBib29sIG1fbWluaW1pemVkID0gZmFs c2U7Ci0rICAgIGJvb2wgbV90cmF5SWNvbldpbmRvdyA9IGZhbHNlOwotKyAgICB4Y2Jfd2luZG93 X3QgbV9uZXRXbVVzZXJUaW1lV2luZG93ID0gWENCX05PTkU7Ci0rCi0rICAgIFFTdXJmYWNlRm9y bWF0IG1fZm9ybWF0OwotKwotKyAgICBtdXRhYmxlIGJvb2wgbV9kaXJ0eUZyYW1lTWFyZ2lucyA9 IGZhbHNlOwotKyAgICBtdXRhYmxlIFFNYXJnaW5zIG1fZnJhbWVNYXJnaW5zOwotKwotKyAgICBR UmVnaW9uIG1fZXhwb3NlUmVnaW9uOwotKyAgICBRU2l6ZSBtX29sZFdpbmRvd1NpemU7Ci0rCi0r ICAgIHhjYl92aXN1YWxpZF90IG1fdmlzdWFsSWQgPSAwOwotKyAgICAvLyBMYXN0IHNlbnQgc3Rh dGUuIEluaXRpYWxpemVkIHRvIGFuIGludmFsaWQgc3RhdGUsIG9uIHB1cnBvc2UuCi0rICAgIFF0 OjpXaW5kb3dTdGF0ZXMgbV9sYXN0V2luZG93U3RhdGVFdmVudCA9IFF0OjpXaW5kb3dBY3RpdmU7 Ci0rCi0rICAgIGVudW0gU3luY1N0YXRlIHsKLSsgICAgICAgIE5vU3luY05lZWRlZCwKLSsgICAg ICAgIFN5bmNSZWNlaXZlZCwKLSsgICAgICAgIFN5bmNBbmRDb25maWd1cmVSZWNlaXZlZAotKyAg ICB9OwotKyAgICBTeW5jU3RhdGUgbV9zeW5jU3RhdGUgPSBOb1N5bmNOZWVkZWQ7Ci0rCi0rICAg IFFYY2JTeW5jV2luZG93UmVxdWVzdCAqbV9wZW5kaW5nU3luY1JlcXVlc3QgPSBudWxscHRyOwot K307Ci0rCi0rY2xhc3MgUVhjYkZvcmVpZ25XaW5kb3cgOiBwdWJsaWMgUVhjYldpbmRvdwotK3sK LStwdWJsaWM6Ci0rICAgIFFYY2JGb3JlaWduV2luZG93KFFXaW5kb3cgKndpbmRvdywgV0lkIG5h dGl2ZUhhbmRsZSkKLSsgICAgICAgIDogUVhjYldpbmRvdyh3aW5kb3cpIHsgbV93aW5kb3cgPSBu YXRpdmVIYW5kbGU7IH0KLSsgICAgflFYY2JGb3JlaWduV2luZG93KCk7Ci0rICAgIGJvb2wgaXNG b3JlaWduV2luZG93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotKwotK3Byb3Rl Y3RlZDoKLSsgICAgdm9pZCBjcmVhdGUoKSBvdmVycmlkZSB7fSAvLyBOby1vcAotK307Ci0rCi0r UVZlY3Rvcjx4Y2JfcmVjdGFuZ2xlX3Q+IHFSZWdpb25Ub1hjYlJlY3RhbmdsZUxpc3QoY29uc3Qg UVJlZ2lvbiAmcmVnaW9uKTsKLSsKLStRVF9FTkRfTkFNRVNQQUNFCi0rCi0rUV9ERUNMQVJFX01F VEFUWVBFKFFYY2JXaW5kb3cqKQotKwotKyNlbmRpZgotZGlmZiAtdXJOIHF0NWR4Y2ItcGx1Z2lu LTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNid21z dXBwb3J0LmggcXQ1ZHhjYi1wbHVnaW4tMS4yLjUvcGxhdGZvcm1wbHVnaW4vbGlicXQ1eGNicXBh LWRldi81LjEzLjAvcXhjYndtc3VwcG9ydC5oCi0tLS0gcXQ1ZHhjYi1wbHVnaW4tMS4yLjUub2xk L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2J3bXN1cHBvcnQuaAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIHF0NWR4Y2ItcGx1Z2luLTEu Mi41L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2J3bXN1cHBvcnQu aAkyMDE5LTA3LTEyIDIwOjE5OjU1LjkwMzk4NjUwOCArMDAwMAotQEAgLTAsMCArMSw2OCBAQAot Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCi0rKioKLSsqKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0 IENvbXBhbnkgTHRkLgotKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8K LSsqKgotKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBwbHVnaW5zIG9mIHRoZSBRdCBUb29s a2l0LgotKyoqCi0rKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKLSsqKiBDb21tZXJjaWFsIExp Y2Vuc2UgVXNhZ2UKLSsqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxp Y2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCi0rKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21t ZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCi0rKiogU29mdHdhcmUg b3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVk IGluCi0rKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBh bnkuIEZvciBsaWNlbnNpbmcgdGVybXMKLSsqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93 d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKLSsqKiBpbmZvcm1hdGlvbiB1 c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgotKyoq Ci0rKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJu YXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlcgotKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0 aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQotKyoqIHBhY2thZ2luZyBvZiB0 aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bwotKyoq IGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBy ZXF1aXJlbWVudHMKLSsqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy9sZ3BsLTMuMC5odG1sLgotKyoqCi0rKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNh Z2UKLSsqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUKLSsqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9y IChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCi0rKiogUHVibGljIGxpY2Vuc2UgdmVy c2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQotKyoq IFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCi0rKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VO U0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCi0rKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBv ZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZwotKyoqIGluZm9ybWF0aW9u IHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdp bGwKLSsqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1s IGFuZAotKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgotKyoq Ci0rKiogJFFUX0VORF9MSUNFTlNFJAotKyoqCi0rKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsjaWZu ZGVmIFFYQ0JXTVNVUFBPUlRfSAotKyNkZWZpbmUgUVhDQldNU1VQUE9SVF9ICi0rCi0rI2luY2x1 ZGUgInF4Y2JvYmplY3QuaCIKLSsjaW5jbHVkZSAicXhjYmNvbm5lY3Rpb24uaCIKLSsjaW5jbHVk ZSA8cXZlY3Rvci5oPgotKwotK1FUX0JFR0lOX05BTUVTUEFDRQotKwotK2NsYXNzIFFYY2JXTVN1 cHBvcnQgOiBwdWJsaWMgUVhjYk9iamVjdAotK3sKLStwdWJsaWM6Ci0rICAgIFFYY2JXTVN1cHBv cnQoUVhjYkNvbm5lY3Rpb24gKmMpOwotKwotKwotKyAgICBib29sIGlzU3VwcG9ydGVkQnlXTSh4 Y2JfYXRvbV90IGF0b20pIGNvbnN0OwotKyAgICBjb25zdCBRVmVjdG9yPHhjYl93aW5kb3dfdD4g JnZpcnR1YWxSb290cygpIGNvbnN0IHsgcmV0dXJuIG5ldF92aXJ0dWFsX3Jvb3RzOyB9Ci0rCi0r cHJpdmF0ZToKLSsgICAgZnJpZW5kIGNsYXNzIFFYY2JDb25uZWN0aW9uOwotKyAgICB2b2lkIHVw ZGF0ZU5ldFdNQXRvbXMoKTsKLSsgICAgdm9pZCB1cGRhdGVWaXJ0dWFsUm9vdHMoKTsKLSsKLSsg ICAgUVZlY3Rvcjx4Y2JfYXRvbV90PiBuZXRfd21fYXRvbXM7Ci0rICAgIFFWZWN0b3I8eGNiX3dp bmRvd190PiBuZXRfdmlydHVhbF9yb290czsKLSt9OwotKwotK1FUX0VORF9OQU1FU1BBQ0UKLSsK LSsjZW5kaWYKLWRpZmYgLXVyTiBxdDVkeGNiLXBsdWdpbi0xLjIuNS5vbGQvcGxhdGZvcm1wbHVn aW4vbGlicXQ1eGNicXBhLWRldi81LjEzLjAvcXhjYnhzZXR0aW5ncy5oIHF0NWR4Y2ItcGx1Z2lu LTEuMi41L3BsYXRmb3JtcGx1Z2luL2xpYnF0NXhjYnFwYS1kZXYvNS4xMy4wL3F4Y2J4c2V0dGlu Z3MuaAotLS0tIHF0NWR4Y2ItcGx1Z2luLTEuMi41Lm9sZC9wbGF0Zm9ybXBsdWdpbi9saWJxdDV4 Y2JxcGEtZGV2LzUuMTMuMC9xeGNieHNldHRpbmdzLmgJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBxdDVkeGNiLXBsdWdpbi0xLjIuNS9wbGF0Zm9ybXBsdWdpbi9saWJx dDV4Y2JxcGEtZGV2LzUuMTMuMC9xeGNieHNldHRpbmdzLmgJMjAxOS0wNy0xMiAyMDoxOTo1NS45 MDM5ODY1MDggKzAwMDAKLUBAIC0wLDAgKzEsNzEgQEAKLSsvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot KyoqCi0rKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KLSsqKiBDb250 YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCi0rKioKLSsqKiBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgcGx1Z2lucyBvZiB0aGUgUXQgVG9vbGtpdC4KLSsqKgotKyoqICRRVF9CRUdJ Tl9MSUNFTlNFOkxHUEwkCi0rKiogQ29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCi0rKiogTGljZW5z ZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmls ZSBpbgotKyoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVu dCBwcm92aWRlZCB3aXRoIHRoZQotKyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBh Y2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5lZCBpbgotKyoqIGEgd3JpdHRlbiBhZ3Jl ZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1z Ci0rKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlv bnMuIEZvciBmdXJ0aGVyCi0rKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQg aHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KLSsqKgotKyoqIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBVc2FnZQotKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkg YmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIKLSsqKiBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK LSsqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBp bmNsdWRlZCBpbiB0aGUKLSsqKiBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3 IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8KLSsqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCi0rKiogd2lsbCBi ZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KLSsqKgot KyoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCi0rKiogQWx0ZXJuYXRpdmVseSwg dGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rKiogR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBH TlUgR2VuZXJhbAotKyoqIFB1YmxpYyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVy c2lvbiBhcHByb3ZlZCBieSB0aGUgS0RFIEZyZWUKLSsqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGlj ZW5zZXMgYXJlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQotKyoqIEZvdW5kYXRp b24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BM MwotKyoqIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2 aWV3IHRoZSBmb2xsb3dpbmcKLSsqKiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIHJlcXVpcmVtZW50cyB3aWxsCi0rKiogYmUgbWV0OiBodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCBhbmQKLSsqKiBodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuaHRtbC4KLSsqKgotKyoqICRRVF9FTkRfTElDRU5TRSQK LSsqKgotKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0rCi0rI2lmbmRlZiBRWENCWFNFVFRJTkdTX0gK LSsjZGVmaW5lIFFYQ0JYU0VUVElOR1NfSAotKwotKyNpbmNsdWRlICJxeGNic2NyZWVuLmgiCi0r Ci0rUVRfQkVHSU5fTkFNRVNQQUNFCi0rCi0rY2xhc3MgUVhjYlhTZXR0aW5nc1ByaXZhdGU7Ci0r Ci0rY2xhc3MgUVhjYlhTZXR0aW5ncyA6IHB1YmxpYyBRWGNiV2luZG93RXZlbnRMaXN0ZW5lcgot K3sKLSsgICAgUV9ERUNMQVJFX1BSSVZBVEUoUVhjYlhTZXR0aW5ncykKLStwdWJsaWM6Ci0rICAg IFFYY2JYU2V0dGluZ3MoUVhjYlZpcnR1YWxEZXNrdG9wICpzY3JlZW4pOwotKyAgICB+UVhjYlhT ZXR0aW5ncygpOwotKyAgICBib29sIGluaXRpYWxpemVkKCkgY29uc3Q7Ci0rCi0rICAgIFFWYXJp YW50IHNldHRpbmcoY29uc3QgUUJ5dGVBcnJheSAmcHJvcGVydHkpIGNvbnN0OwotKwotKyAgICB0 eXBlZGVmIHZvaWQgKCpQcm9wZXJ0eUNoYW5nZUZ1bmMpKFFYY2JWaXJ0dWFsRGVza3RvcCAqc2Ny ZWVuLCBjb25zdCBRQnl0ZUFycmF5ICZuYW1lLCBjb25zdCBRVmFyaWFudCAmcHJvcGVydHksIHZv aWQgKmhhbmRsZSk7Ci0rICAgIHZvaWQgcmVnaXN0ZXJDYWxsYmFja0ZvclByb3BlcnR5KGNvbnN0 IFFCeXRlQXJyYXkgJnByb3BlcnR5LCBQcm9wZXJ0eUNoYW5nZUZ1bmMgZnVuYywgdm9pZCAqaGFu ZGxlKTsKLSsgICAgdm9pZCByZW1vdmVDYWxsYmFja0ZvckhhbmRsZShjb25zdCBRQnl0ZUFycmF5 ICZwcm9wZXJ0eSwgdm9pZCAqaGFuZGxlKTsKLSsgICAgdm9pZCByZW1vdmVDYWxsYmFja0Zvckhh bmRsZSh2b2lkICpoYW5kbGUpOwotKwotKyAgICB2b2lkIGhhbmRsZVByb3BlcnR5Tm90aWZ5RXZl bnQoY29uc3QgeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90ICpldmVudCkgb3ZlcnJpZGU7Ci0r cHJpdmF0ZToKLSsgICAgUVhjYlhTZXR0aW5nc1ByaXZhdGUgKmRfcHRyOwotK307Ci0rCi0rUVRf RU5EX05BTUVTUEFDRQotKwotKyNlbmRpZiAvLyBRWENCWFNFVFRJTkdTX0gKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXQ1ZHhjYi1wbHVnaW4vdGVtcGxhdGUgYi9zcmNwa2dzL3F0NWR4Y2ItcGx1Z2lu L3RlbXBsYXRlCmluZGV4IDUyNGUwNjFlN2JlLi5hNDA1NWJhMzUyOSAxMDA2NDQKLS0tIGEvc3Jj cGtncy9xdDVkeGNiLXBsdWdpbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NWR4Y2ItcGx1Z2lu L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1ZHhjYi1w bHVnaW4nCiBwa2duYW1lPXF0NWR4Y2ItcGx1Z2luCi12ZXJzaW9uPTEuMi41Ci1yZXZpc2lvbj0y Cit2ZXJzaW9uPTEuMi42CityZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1xbWFrZQogbWFrZV9idWls ZF9hcmdzPSJWRVJTSU9OPSR7dmVyc2lvbn0iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcg cXQ1LXFtYWtlIgpAQCAtMTUsNyArMTUsNyBAQCBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgog aG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9saW51eGRlZXBpbi9xdDVkeGNiLXBsdWdpbi8i CiBjaGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0aHViLmNvbS9saW51eGRlZXBpbi9xdDVkeGNiLXBsdWdp bi9ibG9iL21hc3Rlci9DSEFOR0VMT0cubWQiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNv bS9saW51eGRlZXBpbi9xdDVkeGNiLXBsdWdpbi9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6Igot Y2hlY2tzdW09MDMxMzM0MzhlN2RiZGU1NjE5MzUxMGEyZGE2MjY3ZDI3ZjNmMGMwNGU5ZGM4M2Vj NDdjMTcwNWMyY2Y5YjljMgorY2hlY2tzdW09ZjQ4NWViNTI0NGEzMjllNGQwYzNhZTQ2ODBkNTZj Yzk4ZDliNDdlOWQ4OGQ2MGRmYzZkNzVjZjBlZDNlYWJhZAogcGF0Y2hfYXJncz0iLU5wMSIKIAog cHJlX2NvbmZpZ3VyZSgpIHsKCkZyb20gNzY2NDcwN2IxZGM0YmM4NDY4N2E3YTk1MWMzNTM3NDVj NTkxNTEwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVv Lm5ldD4KRGF0ZTogVHVlLCAxNiBKdWwgMjAxOSAwNzo0NDowMSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggMTcvNDJdIGRlZXBpbi1tb3ZpZS1yZWJvcm46IHVwZGF0ZSB0byAzLjIuMjQuMi4KCi0tLQog c3JjcGtncy9kZWVwaW4tbW92aWUtcmVib3JuL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZGVlcGluLW1vdmllLXJlYm9ybi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZGVlcGluLW1vdmllLXJl Ym9ybi90ZW1wbGF0ZQppbmRleCAwMDZkYzQ3OGUyYi4uNzU1OTgzZDExMjAgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvZGVlcGluLW1vdmllLXJlYm9ybi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2RlZXBp bi1tb3ZpZS1yZWJvcm4vdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdkZWVwaW4tbW92aWUtcmVib3JuJwogcGtnbmFtZT1kZWVwaW4tbW92aWUtcmVib3JuCi12 ZXJzaW9uPTMuMi4yNAordmVyc2lvbj0zLjIuMjQuMgogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9 Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1h a2UiCkBAIC0xNSw3ICsxNSw3IEBAIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFn ZT0iaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4ZGVlcGluL2RlZXBpbi1tb3ZpZS1yZWJvcm4iCiBj aGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0aHViLmNvbS9saW51eGRlZXBpbi9kZWVwaW4tbW92aWUtcmVi b3JuL2Jsb2IvJHt2ZXJzaW9ufS9DSEFOR0VMT0cubWQiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0 aHViLmNvbS9saW51eGRlZXBpbi9kZWVwaW4tbW92aWUtcmVib3JuL2FyY2hpdmUvJHt2ZXJzaW9u fS50YXIuZ3oiCi1jaGVja3N1bT00MjhiYWM3ZDM3ZTI4YWFiMzMyNDRkZTllNDNjNWI4NGQ3N2U3 OGY1MmZmMTkyZmYzMTlmZGE0NmU1ZTdmNjRjCitjaGVja3N1bT0xNzZlMzRjOGFjMjM2ZjIxYjBk MDU4YjljMTBjZWFmODEyZTlmYjZhMDQwNTkwN2VjNGEzZGEzMDU5MmEwNTRjCiBDWFhGTEFHUz0i LUkke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2luY2x1ZGUvbGliZHRrLTIuMC42L0RXaWRnZXQiCiBD WFhGTEFHUys9IiAtSSR7WEJQU19DUk9TU19CQVNFfS91c3IvaW5jbHVkZS9saWJkdGstMi4wLjYv RENvcmUiCiBDWFhGTEFHUys9IiAtSSR7WEJQU19DUk9TU19CQVNFfS91c3IvaW5jbHVkZS9saWJk dGstMi4wLjYvRFdtIgoKRnJvbSBiYzZjNTYzYmMzMTBjMzZiOWVhMThlYzA4MzJhODBiYjlmYzM4 NmMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FoIEh1cHBlcnQgPGNvbnRhY3RA bm9haGguaW8+CkRhdGU6IE1vbiwgMTUgSnVsIDIwMTkgMjA6NTA6MTkgLTA0MDAKU3ViamVjdDog W1BBVENIIDE4LzQyXSBkb2N0bDogdXBkYXRlIHRvIDEuMjEuMSwgZml4ZWQgcGtnCgotLS0KIHNy Y3BrZ3MvZG9jdGwvdGVtcGxhdGUgfCAxMCArKysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBp bnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZG9jdGwv dGVtcGxhdGUgYi9zcmNwa2dzL2RvY3RsL3RlbXBsYXRlCmluZGV4IDVmOTkxMDcxOTFmLi4xZWQ3 N2ZjMmEzNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9kb2N0bC90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2RvY3RsL3RlbXBsYXRlCkBAIC0xLDE5ICsxLDE3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdk b2N0bCcKIHBrZ25hbWU9ZG9jdGwKLXZlcnNpb249MS4xNS4wCit2ZXJzaW9uPTEuMjEuMQogcmV2 aXNpb249MQogYnVpbGRfc3R5bGU9Z28KLWdvX2ltcG9ydF9wYXRoPWdpdGh1Yi5jb20vZGlnaXRh bG9jZWFuL2RvY3RsL2NtZC9kb2N0bAorZ29faW1wb3J0X3BhdGg9ImdpdGh1Yi5jb20vZGlnaXRh bG9jZWFuL2RvY3RsL2NtZC9kb2N0bCIKK2dvX2J1aWxkX3RhZ3M9InYke3ZlcnNpb259IgogZ29f Z2V0PSJ5ZXMiCi1nb19wYWNrYWdlPSJnaXRodWIuY29tL2RpZ2l0YWxvY2Vhbi9kb2N0bC9wa2cv c3NoIgogaG9zdG1ha2VkZXBlbmRzPSJnaXQiCiBzaG9ydF9kZXNjPSJDb21tYW5kIGxpbmUgdG9v bCBmb3IgRGlnaXRhbE9jZWFuIHNlcnZpY2VzIgogbWFpbnRhaW5lcj0iTm9haCBIdXBwZXJ0IDxj b250YWN0QG5vYWhoLmlvPiIKIGxpY2Vuc2U9IkFwYWNoZS0yLjAiCiBob21lcGFnZT0iaHR0cHM6 Ly9naXRodWIuY29tL2RpZ2l0YWxvY2Vhbi9kb2N0bCIKLWRpc3RmaWxlcz0iaHR0cHM6Ly9naXRo dWIuY29tL2RpZ2l0YWxvY2Vhbi9kb2N0bC9hcmNoaXZlL3Yke3ZlcnNpb259LnRhci5neiIKLWNo ZWNrc3VtPWEzYzhmMmUxNWNhOTNiM2U5MWYyNzUwYjg3ZGYxOTIwN2Y2Mjk1ODNjNTgzMjA2YjYw ODkzNDdjYzRmOTkwYTUKIAogcG9zdF9pbnN0YWxsKCkgewotCXZsaWNlbnNlIExJQ0VOU0UudHh0 CisJICAgICAgIHZsaWNlbnNlICIkR09QQVRIL3NyYy9naXRodWIuY29tL2RpZ2l0YWxvY2Vhbi9k b2N0bC9MSUNFTlNFLnR4dCIKIH0KCkZyb20gYzYwY2FhYjJmOTA2YjA4MWVlMTczZDZkNWM0ZGNk YzZjNGQzMzA2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9z dGVvLm5ldD4KRGF0ZTogVHVlLCAxNiBKdWwgMjAxOSAwODozMjoyNiArMDAwMApTdWJqZWN0OiBb UEFUQ0ggMTkvNDJdIHNob3RjdXQ6IHVwZGF0ZSB0byAxOS4wNy4xNS4KCi0tLQogc3JjcGtncy9z aG90Y3V0L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZSBi L3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZQppbmRleCBlYmRmNWUzMzA4Ni4uMzBiNWVmZTk2N2Ig MTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc2hvdGN1dC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Nob3Rj dXQvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaG90Y3V0 JwogcGtnbmFtZT1zaG90Y3V0Ci12ZXJzaW9uPTE5LjA2LjE1Cit2ZXJzaW9uPTE5LjA3LjE1CiBy ZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1xbWFrZQogY29uZmlndXJlX2FyZ3M9IlNIT1RDVVRfVkVS U0lPTj1WT0lELSR2ZXJzaW9uIERFRklORVMrPVNIT1RDVVRfTk9VUEdSQURFIgpAQCAtMTUsNyAr MTUsNyBAQCBtYWludGFpbmVyPSJKb2huIDxqb2huekBwb3N0ZW8ubmV0PiIKIGxpY2Vuc2U9IkdQ TC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cuc2hvdGN1dC5vcmciCiBkaXN0 ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9tbHRmcmFtZXdvcmsvc2hvdGN1dC9hcmNoaXZlL3Yk e3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTNmZGZlNzExZjE1NjcxMzZiN2Q5NjdiZDYyMDA1 M2Q1ZTI2ZjZmZTU4NTgyNjg3NWVmNjYzMDFkMTlmMDdmMDMKK2NoZWNrc3VtPTFlN2I5ZGQyMWMz YmE1NWE4MGZiNGZlNDQzNjdiMjk1Y2RlMTk0NjhkMzkyNDg4YjRhM2QwZmJlOWE1MzRjNGMKIAog Q1hYRkxBR1M9Ii1ESEFWRV9MT0NBTEVfSD0xIgogCgpGcm9tIDBhZGE4NDhjODZkYmJkY2YwMjY5 NTQxNmQ2ZWMyOTUxOTc3N2UyNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4g PGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IFR1ZSwgMTYgSnVsIDIwMTkgMTE6MTM6MDIgKzAyMDAK U3ViamVjdDogW1BBVENIIDIwLzQyXSBhbWR2bGs6IHVwZGF0ZSB0byAyMDE5LlEzLjIuCgotLS0K IHNyY3BrZ3MvYW1kdmxrL3RlbXBsYXRlIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9hbWR2bGsvdGVtcGxhdGUgYi9zcmNwa2dzL2FtZHZsay90ZW1wbGF0ZQpp bmRleCA3Y2NiYWRmNzA4Mi4uOGZlNTlkZTYyNjQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYW1kdmxr L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYW1kdmxrL3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhbWR2bGsnCiBwa2duYW1lPWFtZHZsawotdmVyc2lvbj0y MDE5LlEzLjEKK3ZlcnNpb249MjAxOS5RMy4yCiByZXZpc2lvbj0xCi1fbGxwY19jb21taXQ9YWE4 YTlkN2YyYjdhZDdiODFiNzBlNzk1OWU5OWUzZjMxZjg1YzIxMQotX3hnbF9jb21taXQ9ZWVlNThj OGU0ODJhYzRhNmZkYzQwNDUyY2I0YWQ3NDQzOTVkMGY3NAotX3BhbF9jb21taXQ9NmM4ZWFhMjU3 ZTYyMTY0MzdmZGZlM2YxN2Q0MThlY2NmZTQyZTBiZAotX2xsdm1fY29tbWl0PTgxMTg2OTJlOGFl ZmJkOTVmNzkxZmY0OWJlZGRiOGNlOTBlODkyN2MKLV9zcHZnZW5fY29tbWl0PTUzMjQ1Yjk2Yjdh NjQ3NzQzZjUwYjlkODQxNzUxZjk3NTUwMDI2NjEKK19sbHBjX2NvbW1pdD0yNTJiOTM0MDliN2Nj OTJkYWNmNDhhNDIxYjlhYWMyYTc3NjI5MzgxCitfeGdsX2NvbW1pdD0yMzE1ZjJhNGRlNGRmNTNl YWE1NGI1NmU5NjMzMjY4N2VkMTIyNjlmCitfcGFsX2NvbW1pdD1mZmIyMWU4NjIzODgxOTgxNzA3 NWUyNTJhZDliNDllYTUyODQ5NjhkCitfbGx2bV9jb21taXQ9ZDllNDkzNDE4OTg0NWYzMDQyOGNh ZDZkYTE2ZTg3NDU1NDAyOTFkYgorX3Nwdmdlbl9jb21taXQ9MDUxYWFhNDYyNzJhYWU3ODA4MTI5 Yjk4ZmQ5ZGE0OWYzMjI5ZWI3OAogYXJjaHM9Imk2ODYqIHg4Nl82NCoiCiBjcmVhdGVfd3Jrc3Jj PXllcwogYnVpbGRfd3Jrc3JjPSJ4Z2wiCkBAIC0yNSwxMiArMjUsMTIgQEAgZGlzdGZpbGVzPSJo dHRwczovL2dpdGh1Yi5jb20vR1BVT3Blbi1Ecml2ZXJzL0FNRFZMSy9hcmNoaXZlL3YtJHt2ZXJz aW9ufS50YXIuZ3oKICBodHRwczovL2dpdGh1Yi5jb20vR1BVT3Blbi1Ecml2ZXJzL3BhbC9hcmNo aXZlLyR7X3BhbF9jb21taXR9LnRhci5negogIGh0dHBzOi8vZ2l0aHViLmNvbS9HUFVPcGVuLURy aXZlcnMvbGx2bS9hcmNoaXZlLyR7X2xsdm1fY29tbWl0fS50YXIuZ3oKICBodHRwczovL2dpdGh1 Yi5jb20vR1BVT3Blbi1Ecml2ZXJzL3Nwdmdlbi9hcmNoaXZlLyR7X3Nwdmdlbl9jb21taXR9LnRh ci5neiIKLWNoZWNrc3VtPSJlNDE0MTg2MzM2NTMyNzljNTVjYzhkNzBhOWY1NzZlMGRlMzAxOGEz OTUzYmNiMzM3MmJmYjgwOWRiNDhhZTIzCi0gZjdlZmU5MTEzNDU4ODIzM2UyZDNmMjVmZjUzMDY4 ZmIwYjdjNmQxNDRmYWJmOTA3YzdiOGM4MDdlZmU2MzVlOAotIDgyOGJmMDkzNmUwZWZjODZjNDBl M2FiYjZmOTJjYzIxNGE0OTNhYjhlMmZmMjA1NGQ0NTViYWIzOTlhZTJkMGEKLSA4M2E0OTQwZDNi ZDY0ZjM4YTgzZTE0ZDcyMjVjY2U2YjIyMzQ2MTBkYmU2ZTNkNTVjNTBlMWFkYzYxMjZiMmQyCi0g YjBjYmNkNGQ4MzUzMGFkNWJkNTE1NjQyZjkwMzgzN2U2Y2MzMDhlYjY4ZGE1MTkwMDIwOGFjZjlm MmRiZTM1MQotIDI1M2JmYWYxZmMzM2M4ZWYwMWNhMTY4MWE1ZWE3NDAwZmQ0YWI3MzczYzQ4ZTRm NzliZWIxMGQ4OTQ1NWQzMDciCitjaGVja3N1bT0iMjA5ZjcxYWNlZTY2YjFlYWE0ZGM3ZjM5Y2Yy YTBmM2UzNDlkZmRlZGY1ZjRlMWMyZDI5YjIxNzA1NzMyMzE5OAorIGViMGE5NDI4OGU0YmRhODg5 ZDc1ZTI4NzI0N2U2M2I5N2E5MWQ5NzYxZmI4MThjOTEwNmQ0YWZhNDkwNzYwYzMKKyAxYjAxMjAx ZTE1ZWI2MmFkM2RmOGI5MjVkZTU3NjM0ODQ1NzBhODVhNGNkZjY4NmVmZTA2NmUyNmQwY2E3MGMy CisgZDBiOTZkMGIzN2FjMjRhZGExNmZhMDMwZmU4MDA3MGYzOTUyOGY2OWRmMWM2NGMzNDc0YzNm NThiOTg0NzVlZQorIGE4MTZhZjU1ZDExOGQxYWIzZjk2NzI5YzI0MDE1NjhlNjg5MTkwZDEwMzg4 YWE0ZjA2NzkxNzA2MWJiZmQyNzEKKyA2ZjEyNDJiMjQxOTdlOGY2ZmYyNTkzNzE3NzNiZWRjYjg1 OGRlYzM3OWViYTMyZjA3ZDE1MGQ2ZWI1N2U1YTJiIgogbm9jcm9zcz15ZXMKIGxpYjMyZmlsZXM9 Ii91c3Ivc2hhcmUvdnVsa2FuL2ljZC5kL2FtZF9pY2QzMi5qc29uIgogCgpGcm9tIDk2NTMwYWRj MDM1MTFjNGIzZDA5NmU0ZDRlMWQ2Y2I1YjM0N2NhNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IEp1bGlvIEdhbHZhbiA8anVsaW9AZXBhem90ZS5uZXQ+CkRhdGU6IE1vbiwgMTUgSnVs IDIwMTkgMjA6NDI6MDkgLTA3MDAKU3ViamVjdDogW1BBVENIIDIxLzQyXSBsaWJuaXRyb2tleTog dXBkYXRlIHRvIDMuNQoKLS0tCiBzcmNwa2dzL2xpYm5pdHJva2V5L3RlbXBsYXRlIHwgOSArKy0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9saWJuaXRyb2tleS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlibml0 cm9rZXkvdGVtcGxhdGUKaW5kZXggYjVhZDA4ZDViNTkuLjE2ODYwNTcyNDMxIDEwMDY0NAotLS0g YS9zcmNwa2dzL2xpYm5pdHJva2V5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGlibml0cm9rZXkv dGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsaWJuaXRyb2tl eScKIHBrZ25hbWU9bGlibml0cm9rZXkKLXZlcnNpb249My40LjEKK3ZlcnNpb249My41CiByZXZp c2lvbj0xCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgpA QCAtMTAsMTIgKzEwLDcgQEAgbWFpbnRhaW5lcj0iSnVsaW8gR2FsdmFuIDxqdWxpb2dhbHZhbkBw cm90b25tYWlsLmNvbT4iCiBsaWNlbnNlPSJMR1BMLTMuMCIKIGhvbWVwYWdlPSJodHRwczovL2dp dGh1Yi5jb20vTml0cm9rZXkvbGlibml0cm9rZXkiCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L2Fy Y2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09MjI0YzkyMDIzYTdiOGVmODhlN2M2 NmQxNThjOTU5M2ZiMzA5OTU2ZGNhNDUyM2JjM2M1ZDE2MTVhMTM3Y2VmNgotCi1wb3N0X2V4dHJh Y3QoKSB7Ci0JIyBwbHVnZGV2IGdyb3VwIGlzIGRlcHJlY2F0ZWQKLQlzZWQgLWkgJ3MvR1JPVVAr PSJwbHVnZGV2IiwvLycgZGF0YS80MS1uaXRyb2tleS5ydWxlcwotfQorY2hlY2tzdW09ZDgzNmYy ZjIwYzViMjQwODg1NDJkYTQ0NTg5M2VmMGEwNDgzNGRjYTdkZDhlZWYwMjBlNzkzZGUwNjAxYmI1 YQogCiBsaWJuaXRyb2tleS1kZXZlbF9wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBkZXZl bG9wbWVudCBmaWxlcyIKCkZyb20gZjU4ODU0ZDUzZGU3ZDMyMWYzNGEwZjY4Yjg1N2JkYzY4OTg2 NGRhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQW5hY2hyb24gPGdpdGhAY3Jvbi53 b3JsZD4KRGF0ZTogVHVlLCAxNiBKdWwgMjAxOSAxMzowNDo0OSArMDIwMApTdWJqZWN0OiBbUEFU Q0ggMjIvNDJdIGxlZ286IHVwZGF0ZSB0byAyLjYuMAoKLS0tCiBzcmNwa2dzL2xlZ28vdGVtcGxh dGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sZWdvL3RlbXBsYXRlIGIvc3JjcGtncy9sZWdvL3Rl bXBsYXRlCmluZGV4IDQ4YjVlOGRiODk1Li5jMDgyOTFkNmNlOSAxMDA2NDQKLS0tIGEvc3JjcGtn cy9sZWdvL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGVnby90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xlZ28nCiBwa2duYW1lPWxlZ28KLXZlcnNpb249Mi40 LjAKK3ZlcnNpb249Mi42LjAKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdvCiBnb19pbXBvcnRf cGF0aD0iZ2l0aHViLmNvbS9nby1hY21lLyR7cGtnbmFtZX0iCkBAIC0xMCw3ICsxMCw3IEBAIG1h aW50YWluZXI9IkFuYWNocm9uIDxnaXRoQGNyb24ud29ybGQ+IgogbGljZW5zZT0iTUlUIgogaG9t ZXBhZ2U9Imh0dHBzOi8vZ28tYWNtZS5naXRodWIuaW8vbGVnbyIKIGRpc3RmaWxlcz0iaHR0cHM6 Ly9naXRodWIuY29tL2dvLWFjbWUvbGVnby9hcmNoaXZlL3Yke3ZlcnNpb259LnRhci5neiIKLWNo ZWNrc3VtPWQ0NWRjZmZiODhlMWY4MTQ3ZTc5N2U3ZmQ5YmZlZmQxMzIwNDYxYTdhOWMwMjIyODAy ZTUwMWZmMWNkNTljM2UKK2NoZWNrc3VtPTFhYmJhMTM4NzFmNThmZTQ4M2EzZDRhYzM5MDBkNDRj ZGRlYWNmYzNkZmU5ZmFlMmQ5NmU0NWE5YTM5ZTdjZTcKIAogcG9zdF9pbnN0YWxsKCkgewogCXZs aWNlbnNlIExJQ0VOU0UKCkZyb20gYzYxZjFhZjhiNjU5Y2JlNWI2M2IxYTY5NDI3YWVkNTE0M2Uy OWU5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0RhbmllbD0yMEV5 PUMzPTlGZXI/PSA8ZGFuaWVsLmV5c3NlckBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMTYgSnVsIDIw MTkgMDA6MTE6MDYgKzAyMDAKU3ViamVjdDogW1BBVENIIDIzLzQyXSB5b3V0dWJlLWRsOiB1cGRh dGUgdG8gMjAxOS4wNy4xNi4KCi0tLQogc3JjcGtncy95b3V0dWJlLWRsL3RlbXBsYXRlIHwgNCAr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MveW91dHViZS1kbC90ZW1wbGF0ZSBiL3NyY3BrZ3MveW91dHViZS1k bC90ZW1wbGF0ZQppbmRleCBhMmI5ZjViMzQ0Ny4uZmNiN2JjMWEwNzAgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MveW91dHViZS1kbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3lvdXR1YmUtZGwvdGVtcGxh dGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd5b3V0dWJlLWRsJwogcGtn bmFtZT15b3V0dWJlLWRsCi12ZXJzaW9uPTIwMTkuMDcuMTQKK3ZlcnNpb249MjAxOS4wNy4xNgog cmV2aXNpb249MQogYXJjaHM9bm9hcmNoCiB3cmtzcmM9IiRwa2duYW1lIgpAQCAtMTQsNyArMTQs NyBAQCBsaWNlbnNlPSJVbmxpY2Vuc2UiCiBob21lcGFnZT0iaHR0cHM6Ly9yZzMuZ2l0aHViLmlv L3lvdXR1YmUtZGwvIgogY2hhbmdlbG9nPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5j b20vcmczL3lvdXR1YmUtZGwvbWFzdGVyL0NoYW5nZUxvZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly95 dC1kbC5vcmcvZG93bmxvYWRzLyR7dmVyc2lvbn0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5n eiIKLWNoZWNrc3VtPTQ2MTViNDFkYWUyMWI3MDkxYmZmYzU0ZDVhMDhmMjdiZjNkYTUxMWFkMTNk Nzk3N2FiYTE4M2Y3MGRhMDE0MDAKK2NoZWNrc3VtPTdlYTY1NGFmZTQ4NzllMGU5ZGE0NDlhMWQw MzlmMmFmZmYwYTA5YzEwNWM1N2Q3NmUyMGE3NWFlZDMzNzBkMWIKIGFsdGVybmF0aXZlcz0ieW91 dHViZS1kbDp5b3V0dWJlLWRsOi91c3IvYmluL3lvdXR1YmUtZGwyIgogCiBwb3N0X2luc3RhbGwo KSB7CgpGcm9tIDNjZmU4ZDM5N2U4OGM5MTQ4YTA1NmY1ZmYxNzBlMjU5Mzk0NzAwOGIgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IFR1 ZSwgMTYgSnVsIDIwMTkgMTI6MDg6MDYgKzAwMDAKU3ViamVjdDogW1BBVENIIDI0LzQyXSBhdmZz OiB1cGRhdGUgdG8gMS4xLjAuCgotLS0KIHNyY3BrZ3MvYXZmcy90ZW1wbGF0ZSB8IDQgKystLQog MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2F2ZnMvdGVtcGxhdGUgYi9zcmNwa2dzL2F2ZnMvdGVtcGxhdGUKaW5kZXgg NTFkNmQzZTJjMWUuLjUzMWVhOTZkZjc3IDEwMDY0NAotLS0gYS9zcmNwa2dzL2F2ZnMvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9hdmZzL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnYXZmcycKIHBrZ25hbWU9YXZmcwotdmVyc2lvbj0xLjAuNgordmVyc2lvbj0x LjEuMAogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBl bmRzPSJwa2ctY29uZmlnIgpAQCAtMTEsNyArMTEsNyBAQCBtYWludGFpbmVyPSJKb2huIDxqb2hu ekBwb3N0ZW8ubmV0PiIKIGxpY2Vuc2U9IkdQTC0yLjAtb25seSwgTEdQTC0yLjAtb25seSIKIGhv bWVwYWdlPSJodHRwOi8vYXZmLnNvdXJjZWZvcmdlLm5ldC8iCiBkaXN0ZmlsZXM9IiRTT1VSQ0VG T1JHRV9TSVRFL2F2Zi9hdmZzLSR7dmVyc2lvbn0udGFyLmJ6MiIKLWNoZWNrc3VtPTRjMWEzYTc3 NmEwMWNlN2E1Yjc0ZDY2Yzk1NTI2OTE2MjMwNGVkZDhjMTg0ODlmYjIxODZlZjcyOGY0YmUzYzMK K2NoZWNrc3VtPWE3ZjM3MzRmNWJlMWE3NmFhYjcxMGZiNDlhMDA0YjYwYmI4MDJjY2JkMzIzOTRh NzMxYjE4ZWQ2MDExMzMzYTcKIAogbGliYXZmc19wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIg LSBsaWJyYXJ5IgoKRnJvbSA3OWNjMjU4ZmVlODAxMzRhNTk4ZDdhMmQwMGE1MGQwZmVhZDE4NjJj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmFjaHJvbiA8Z2l0aEBjcm9uLndvcmxk PgpEYXRlOiBUdWUsIDE2IEp1bCAyMDE5IDE0OjM0OjMzICswMjAwClN1YmplY3Q6IFtQQVRDSCAy NS80Ml0gZGF2bWFpbDogdXBkYXRlIHRvIDUuMi4wCgotLS0KIHNyY3BrZ3MvZGF2bWFpbC90ZW1w bGF0ZSB8IDE4ICsrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9u cygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kYXZtYWlsL3RlbXBs YXRlIGIvc3JjcGtncy9kYXZtYWlsL3RlbXBsYXRlCmluZGV4IGU4NzMyMTA5YzA0Li5iNmJmZTkw MjE4ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9kYXZtYWlsL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv ZGF2bWFpbC90ZW1wbGF0ZQpAQCAtMSwzNSArMSwyOSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn ZGF2bWFpbCcKIHBrZ25hbWU9ZGF2bWFpbAotdmVyc2lvbj00LjguMgordmVyc2lvbj01LjIuMAog cmV2aXNpb249MQotX2J1aWxkPTI1MjQKIGFyY2hzPSJpNjg2IHg4Nl82NCIKLXdya3NyYz0iJHtw a2duYW1lfS1zcmMtJHt2ZXJzaW9ufS0ke19idWlsZH0iCiBob3N0bWFrZWRlcGVuZHM9Im9wZW5q ZGsgYXBhY2hlLWFudCIKIHNob3J0X2Rlc2M9IkRhdk1haWwgaXMgYSBQT1AvSU1BUC9TTVRQL0Nh bGRhdi9DYXJkZGF2L0xEQVAgZXhjaGFuZ2UgZ2F0ZXdheSIKLW1haW50YWluZXI9IkFuYWNocm9u IDxBbmFjaHJvbjE0QGdteC5kZT4iCittYWludGFpbmVyPSJBbmFjaHJvbiA8Z2l0aEBjcm9uLndv cmxkPiIKIGxpY2Vuc2U9IkdQTC0yIgogaG9tZXBhZ2U9Imh0dHA6Ly9kYXZtYWlsLnNvdXJjZWZv cmdlLm5ldCIKLWRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRFfS8ke3BrZ25hbWV9LyR7cGtn bmFtZX0tc3JjLSR7dmVyc2lvbn0tJHtfYnVpbGR9LnRneiIKLWNoZWNrc3VtPTY3MmM3YmNmNjJk MGVkNzEwZGNhZjg5Y2QxYjg1OGE5NGQ3Mzk1OWJmYzgwYzcwOGMzZTMwOGQ0YThhMjk5ZjAKK2Rp c3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL21ndWVzc2FuLyR7cGtnbmFtZX0vYXJjaGl2ZS8k e3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPWI0Mjc0NTM5NGRmYTE5ZmU0OGI3M2NjYTBmMzA2 M2FhNzQ1NzUwYjM2OWE4NTMzYzY1NzMyZGU4ZGUxMWNlOTMKIAogZG9fYnVpbGQoKSB7CiAJYW50 CiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JY2FzZSAkWEJQU19UQVJHRVRfTUFDSElORSBpbgotCQlp Njg2KSBfYXJjaD0ieDg2Ijs7Ci0JCXg4Nl82NCkgX2FyY2g9Ing4Nl82NCI7OwotCWVzYWMKLQlf c3JjPSJkaXN0LyRwa2duYW1lLWxpbnV4LSR7X2FyY2h9LSR7dmVyc2lvbn0tdHJ1bmsudGd6Igor CV9zcmM9ImRpc3QvJHtwa2duYW1lfS1zcmMtJHt2ZXJzaW9ufS10cnVuay50Z3oiCiAKIAlta2Rp ciAtcCBpbnN0YWxsCiAJdGFyIC14emYgIiR7X3NyY30iIC1DIGluc3RhbGwKIAogCWZpbmQgaW5z dGFsbCAtdHlwZSBmIC1uYW1lIFwqLmV4ZSAtZGVsZXRlCiAJdm1rZGlyIHVzci9zaGFyZS8kcGtn bmFtZQotCW12IGluc3RhbGwvJHBrZ25hbWUtbGludXgtJHtfYXJjaH0tJHt2ZXJzaW9ufS8qICIk e0RFU1RESVJ9Ii91c3Ivc2hhcmUvJHBrZ25hbWUKKwltdiBpbnN0YWxsLyRwa2duYW1lLXNyYy0k e3ZlcnNpb259LXRydW5rLyogIiR7REVTVERJUn0iL3Vzci9zaGFyZS8kcGtnbmFtZQogCiAJdm1r ZGlyIHVzci9iaW4KIAlsbiAtcyAuLi9zaGFyZS8kcGtnbmFtZS8kcGtnbmFtZS5zaCAiJHtERVNU RElSfSIvdXNyL2Jpbi8kcGtnbmFtZQoKRnJvbSA4MTQ4ZTJmMjg3M2RkMGI2OTdjZjIxMWI1MjE4 ZjIzMmExZWZkMTRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmFjaHJvbiA8Z2l0 aEBjcm9uLndvcmxkPgpEYXRlOiBUdWUsIDE2IEp1bCAyMDE5IDE0OjUwOjEyICswMjAwClN1Ympl Y3Q6IFtQQVRDSCAyNi80Ml0gZnJwOiB1cGRhdGUgdG8gMC4yNy4xCgotLS0KIHNyY3BrZ3MvZnJw L3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcnAvdGVtcGxhdGUgYi9zcmNwa2dz L2ZycC90ZW1wbGF0ZQppbmRleCBkMzViOGI0YjY3MS4uODc1YmU3ZmRkYjIgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvZnJwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZnJwL3RlbXBsYXRlCkBAIC0xLDE2 ICsxLDE2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmcnAnCiBwa2duYW1lPWZycAotdmVyc2lv bj0wLjI1LjEKK3ZlcnNpb249MC4yNy4xCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1nbwogZ29f aW1wb3J0X3BhdGg9Z2l0aHViLmNvbS9mYXRlZGllci9mcnAKIGdvX3BhY2thZ2U9IiR7Z29faW1w b3J0X3BhdGh9L2NtZC9mcnBjICR7Z29faW1wb3J0X3BhdGh9L2NtZC9mcnBzIgogc2hvcnRfZGVz Yz0iRmFzdCByZXZlcnNlIHByb3h5IgotbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lk bGludXgub3JnPiIKK21haW50YWluZXI9IkFuYWNocm9uIDxnaXRoQGNyb24ud29ybGQ+IgogbGlj ZW5zZT0iQXBhY2hlLTIuMCIKIGhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vZmF0ZWRpZXIv ZnJwIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vZmF0ZWRpZXIvZnJwL2FyY2hpdmUv diR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09MzNiZGEyZTU1OWYwNzJlODQyM2Q4ZWY4NGE2 NmIxNTBjNGE1ZmU5ODZjODkyY2JkZDhiNWJlYmUyZjc5NTZiZQorY2hlY2tzdW09NTcwNzkzZGNi ZWZkNDI5ZmQ2ODAzYmY3ZDBjZjQ1YTEyNmI2MzczZmI4NDdiMTA0MTI5Y2JkZmYyNTc5NDM1MAog CiBjb25mX2ZpbGVzPSIvZXRjL2ZycC8qLmluaSIKIAoKRnJvbSBkNDUwZTU4MzFkMGQxMjMwZGUx ZGZkYzliNTRlZjVjZjU5ZjJjYjlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTb2xp dHVkZVNGIDxzb2xpdHVkZXNmQHByb3Rvbm1haWwuY29tPgpEYXRlOiBUdWUsIDE2IEp1bCAyMDE5 IDE0OjU5OjA5ICswMzAwClN1YmplY3Q6IFtQQVRDSCAyNy80Ml0gTmV3IHBhY2thZ2U6IHZhbGUt MS42LjAKCi0tLQogc3JjcGtncy92YWxlL3RlbXBsYXRlIHwgMTYgKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL3ZhbGUvdGVtcGxhdGUKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZhbGUvdGVtcGxhdGUgYi9z cmNwa2dzL3ZhbGUvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjQ2NWExNWYxOTRkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy92YWxlL3RlbXBsYXRl CkBAIC0wLDAgKzEsMTYgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ3ZhbGUnCitwa2duYW1lPXZh bGUKK3ZlcnNpb249MS42LjAKK3JldmlzaW9uPTEKK2J1aWxkX3N0eWxlPWdvCitnb19pbXBvcnRf cGF0aD0iZ2l0aHViLmNvbS9lcnJhdGEtYWkvdmFsZSIKK3Nob3J0X2Rlc2M9Ik5hdHVyYWwgbGFu Z3VhZ2UgbGludGVyIgorbWFpbnRhaW5lcj0iU29saXR1ZGVTRiA8c29saXR1ZGVzZkBwcm90b25t YWlsLmNvbT4iCitsaWNlbnNlPSJNSVQiCitob21lcGFnZT0iaHR0cHM6Ly9lcnJhdGEtYWkuZ2l0 aHViLmlvL3ZhbGUvIgorZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vZXJyYXRhLWFpL3Zh bGUvYXJjaGl2ZS92JHt2ZXJzaW9ufS50YXIuZ3oiCitjaGVja3N1bT02MjJhNTkxNWE1YmY0Zjgy NjIxOThlY2U3NTZiOTlkNTFmMDE1ZjI3MDgwOWY3NDgxOGMzZDZlZDk3Nzk3MWQ1CisKK3Bvc3Rf aW5zdGFsbCgpIHsKKwl2bGljZW5zZSBMSUNFTlNFCit9CgpGcm9tIDExMjA1ZjBkNDg0YzA5Mzlj NWMyYWY4OGMxNDU2YmQ5YjgwMzY2YzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/ VVRGLTg/cT9EYW5pZWw9MjBFeT1DMz05RmVyPz0gPGRhbmllbC5leXNzZXJAZ21haWwuY29tPgpE YXRlOiBUdWUsIDE2IEp1bCAyMDE5IDAwOjMzOjUyICswMjAwClN1YmplY3Q6IFtQQVRDSCAyOC80 Ml0gaHViOiB1cGRhdGUgdG8gMi4xMi4yLgoKLS0tCiBzcmNwa2dzL2h1Yi90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2h1Yi90ZW1wbGF0ZSBiL3NyY3BrZ3MvaHViL3RlbXBsYXRlCmlu ZGV4IGU5ZjZmY2IxNjdiLi5hOTU0ZGQ3MTE1OCAxMDA2NDQKLS0tIGEvc3JjcGtncy9odWIvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9odWIvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdodWInCiBwa2duYW1lPWh1YgotdmVyc2lvbj0yLjEyLjEKK3ZlcnNpb249 Mi4xMi4yCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1nbwogZ29faW1wb3J0X3BhdGg9Z2l0aHVi LmNvbS9naXRodWIvaHViCkBAIC0xMSw3ICsxMSw3IEBAIGxpY2Vuc2U9Ik1JVCIKIGhvbWVwYWdl PSJodHRwczovL2h1Yi5naXRodWIuY29tLyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9naXRodWIuY29t L2dpdGh1Yi9odWIvcmVsZWFzZXMiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9naXRo dWIvaHViL2FyY2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09MzE1MTE0ZTQ2YmJm NTgzZTIzMzQxZTE3MWM4ZTFhNWVmZGJlOTZjMDQ4NjhmZjBiMzQzY2YzNjdmNjVmNjdhMAorY2hl Y2tzdW09M2RiMDcxOWU0MTczMWM1N2I4NzY1YjdmNDg2YWE5MWNlZTU3YmI3ZDM5ZDU1NTNkNDgw ZDg3YTRhYzZjMmVlNgogCiBpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAlob3N0bWFrZWRl cGVuZHMrPSIgaHViIgoKRnJvbSA3NWNkNTFlOTM4ODMyNTliZWJlMjNkNDljNmY3ZDljM2NjOTdj YWI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQaXJhdHkgPHBpcmF0eTFAaW5ib3gu cnU+CkRhdGU6IEZyaSwgMTIgSnVsIDIwMTkgMTk6MTg6NTggKzAyMDAKU3ViamVjdDogW1BBVENI IDI5LzQyXSBsbHZtODogY29ycmVjdGx5IHNldCBjbGFuZy1hbmFseXplciB0byBiZSBub2FyY2gK Ci0tLQogc3JjcGtncy9sbHZtOC90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm04 L3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtOC90ZW1wbGF0ZQppbmRleCA1MjQ5NjEzMjVhNC4uOTc2 NWJhYTIzZGYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGx2bTgvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9sbHZtOC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xs dm04Jy4KIHBrZ25hbWU9bGx2bTgKIHZlcnNpb249OC4wLjAKLXJldmlzaW9uPTUKK3JldmlzaW9u PTYKIHdya3NyYz0ibGx2bS0ke3ZlcnNpb259LnNyYyIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25m aWd1cmVfYXJncz0iCkBAIC0xNjUsNyArMTY1LDcgQEAgZG9faW5zdGFsbCgpIHsKIH0KIAogY2xh bmctYW5hbHl6ZXJfcGFja2FnZSgpIHsKLQlub2FyY2g9eWVzCisJYXJjaHM9bm9hcmNoCiAJcHlj b21waWxlX2RpcnM9InVzci9zaGFyZS9zY2FuLXZpZXciCiAJZGVwZW5kcz0iY2xhbmctJHt2ZXJz aW9ufV8ke3JldmlzaW9ufSBweXRob24iCiAJc2hvcnRfZGVzYys9IiAtIEEgc291cmNlIGNvZGUg YW5hbHlzaXMgZnJhbWV3b3JrIgoKRnJvbSA4MmM0MzgyYWFiOGE5MjUxZWJjNzFiZGE2ZThjYWVk Y2NlOTc0NzRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/QWx1PUMz PUFEc2lvPTIwQXVndXN0bz0yMFNpbHZhPTIwR29uPUMzPUE3YWx2ZXM/PQogPGFsdWlzaW9AYWFz Zy5uYW1lPgpEYXRlOiBXZWQsIDEwIEp1bCAyMDE5IDEyOjI1OjE0IC0wMzAwClN1YmplY3Q6IFtQ QVRDSCAzMC80Ml0gdnNjb2RlOiB1cGRhdGUgdG8gMS4zNi4xLgoKW2NpIHNraXBdCi0tLQogY29t bW9uL3NobGlicyAgICAgICAgICAgfCAxICsKIHNyY3BrZ3MvdnNjb2RlL3RlbXBsYXRlIHwgOSAr KysrKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDAyN2Ux MWQxZWZkLi41NTI1YjFmNWQzZCAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicworKysgYi9jb21t b24vc2hsaWJzCkBAIC0xMjcsNiArMTI3LDcgQEAgbGliR0xFU3YyLnNvIGRpc2NvcmQtMC4wLjdf MQogbGliR0xFU3YyLnNvIGtleWJhc2UtZGVza3RvcC0zLjEuMl8xCiBsaWJHTEVTdjIuc28gcmlv dC1kZXNrdG9wLTAuMTcuOV8yCiBsaWJHTEVTdjIuc28gd2lyZS1kZXNrdG9wLTMuNi4yODg1XzEK K2xpYkdMRVN2Mi5zbyB2c2NvZGUtMS4zNi4xXzEKIGxpYkdMRVN2Mi5zbyBTaWduYWwtRGVza3Rv cC0xLjIzLjJfMQogbGliR0xFU3YyLnNvIHNsYWNrLWRlc2t0b3AtMy40LjJfMQogbGliYnJjbUVH TC5zbyBycGktdXNlcmxhbmQtMjAxODAxMDNfMgpkaWZmIC0tZ2l0IGEvc3JjcGtncy92c2NvZGUv dGVtcGxhdGUgYi9zcmNwa2dzL3ZzY29kZS90ZW1wbGF0ZQppbmRleCA3ODYzOTRlYWVmYS4uMmNh NGFmNjAzNWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdnNjb2RlL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvdnNjb2RlL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn dnNjb2RlJwogcGtnbmFtZT12c2NvZGUKLXZlcnNpb249MS4zNS4xCit2ZXJzaW9uPTEuMzYuMQog cmV2aXNpb249MQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhvbiBub2RlanMtbHRz IHlhcm4iCiBtYWtlZGVwZW5kcz0ibGlieGtiZmlsZS1kZXZlbCBsaWJzZWNyZXQtZGV2ZWwiCkBA IC0xMCw3ICsxMCw3IEBAIG1haW50YWluZXI9InNoaXpvbmljIDxyZWFsdGlhekBnbWFpbC5jb20+ IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHBzOi8vY29kZS52aXN1YWxzdHVkaW8uY29t LyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC92c2NvZGUvYXJjaGl2 ZS8ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTZhNWJhYjAxOGYzNTcyNzg5NzE0MGQ0MTBh M2QwZWJhYTY0MGQ2Yzc1ZWU4MDUzYTFjZDVlMDJlY2U1NzE0ZTkKK2NoZWNrc3VtPTI0YjlmNDA0 NmJkOGVmN2VkYjY2MzQyOWE1OGJmN2RiZTNhY2MyMjQ4N2EyOTQ2YTRlNWVhZDIxNjQxNWMwNjUK IHBhdGNoX2FyZ3M9Ii1OcDEiCiAKICMgRHVlIHRvIGVsZWN0cm9uCkBAIC0zNSw4ICszNSwxMSBA QCBwcmVfYnVpbGQoKSB7CiAKIGRvX2J1aWxkKCkgewogCWV4cG9ydCBOT0RFX09QVElPTlM9IiR7 X21lbV9saW1pdH0iCi0JIyBSZW1vdmUgb25jZSBub2RlanMtbHRzID49IDEwOyBzZWUgbm9kZS1n eXAgaXNzdWUgMTQ1Ny4KKwkjIFJlbW92ZSBvbmNlIG5vZGVqcy1sdHMgPj0gMTA7IHNlZSBub2Rl LWd5cCBpc3N1ZSAxNDU3IGFuZAorCSMgZWxlY3Ryb24vbm9kZSBpc3N1ZSA2NC4KIAlleHBvcnQg bnBtX2NvbmZpZ19idWlsZF92OF93aXRoX2duPSJmYWxzZSIKKwlleHBvcnQgbnBtX2NvbmZpZ19l bmFibGVfbHRvPSJmYWxzZSIKKwogCXlhcm4gaW5zdGFsbCAtLWlnbm9yZS1lbmdpbmVzIC0tYXJj aD0ke19BUkNIfQogCXlhcm4gcnVuIGd1bHAgdnNjb2RlLWxpbnV4LSR7X0FSQ0h9LW1pbgogfQoK RnJvbSA1ZTI1OWY4YjBhNmMyYjIyMGQxZmI5NGJiZjMzYmYxOTc3ODY5ZDg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/UGlvdHI9MjBXPUMzPUIzamNpaz89IDxjaG9j aW1pZXJAdGxlbi5wbD4KRGF0ZTogTW9uLCAxNSBKdWwgMjAxOSAxODo1NDoyMiArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMzEvNDJdIE5ldyBwYWNrYWdlOiBweXRob24temlwcC0wLjUuMgoKLS0tCiBz cmNwa2dzL3B5dGhvbjMtemlwcC90ZW1wbGF0ZSB8IDIxICsrKysrKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL3B5dGhvbjMtemlwcC90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy16 aXBwL3RlbXBsYXRlIGIvc3JjcGtncy9weXRob24zLXppcHAvdGVtcGxhdGUKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFkNGUzYTAxNzEzCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9weXRob24zLXppcHAvdGVtcGxhdGUKQEAgLTAsMCArMSwyMSBAQAorIyBUZW1w bGF0ZSBmaWxlIGZvciAncHl0aG9uMy16aXBwJworcGtnbmFtZT1weXRob24zLXppcHAKK3ZlcnNp b249MC41LjIKK3JldmlzaW9uPTEKK2FyY2hzPW5vYXJjaAord3Jrc3JjPSJ6aXBwLSR7dmVyc2lv bn0iCitidWlsZF9zdHlsZT1weXRob24zLW1vZHVsZQorcHljb21waWxlX21vZHVsZT0iemlwcC5w eSIKK2hvc3RtYWtlZGVwZW5kcz0icHl0aG9uMy1zZXR1cHRvb2xzIgorZGVwZW5kcz0icHl0aG9u MyIKK3Nob3J0X2Rlc2M9IlBhdGhsaWItY29tcGF0aWJsZSBaaXBmaWxlIG9iamVjdCB3cmFwcGVy IgorbWFpbnRhaW5lcj0iUGlvdHIgV8OzamNpayA8Y2hvY2ltaWVyQHRsZW4ucGw+IgorbGljZW5z ZT0iTUlUIgoraG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28vemlwcCIKK2NoYW5n ZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2phcmFjby96aXBwL21hc3Rl ci9DSEFOR0VTLnJzdCIKK2Rpc3RmaWxlcz0iJHtQWVBJX1NJVEV9L3ovemlwcC96aXBwLSR7dmVy c2lvbn0udGFyLmd6IgorY2hlY2tzdW09NDk3MGMzNzU4ZjRlODlhNzg1N2E5NzNiMWUyYTVkNzVi Y2RjNDc3OTQ0NDJmMmUyZGQ0ZmU4ZTA0NjZlODA5YQorCitwb3N0X2luc3RhbGwoKSB7CisJdmxp Y2Vuc2UgTElDRU5TRQorfQoKRnJvbSBiYjdkNWQ1MDE1ZDcxNzE3M2M3ODZhYjUyOTkzZDVkYjM4 Y2M0ZjdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/UGlvdHI9MjBX PUMzPUIzamNpaz89IDxjaG9jaW1pZXJAdGxlbi5wbD4KRGF0ZTogTW9uLCAxNSBKdWwgMjAxOSAx ODo1NDoyMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMzIvNDJdIE5ldyBwYWNrYWdlOiBweXRob24t aW1wb3J0bGliX21ldGFkYXRhLTAuMTgKCi0tLQogc3JjcGtncy9weXRob24zLWltcG9ydGxpYl9t ZXRhZGF0YS90ZW1wbGF0ZSB8IDE4ICsrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQs IDE4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3B5dGhvbjMtaW1w b3J0bGliX21ldGFkYXRhL3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24zLWlt cG9ydGxpYl9tZXRhZGF0YS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHl0aG9uMy1pbXBvcnRsaWJfbWV0 YWRhdGEvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRj MDhjYWEyOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9weXRob24zLWltcG9ydGxpYl9t ZXRhZGF0YS90ZW1wbGF0ZQpAQCAtMCwwICsxLDE4IEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdw eXRob24zLWltcG9ydGxpYl9tZXRhZGF0YScKK3BrZ25hbWU9cHl0aG9uMy1pbXBvcnRsaWJfbWV0 YWRhdGEKK3ZlcnNpb249MC4xOAorcmV2aXNpb249MQorYXJjaHM9bm9hcmNoCit3cmtzcmM9Imlt cG9ydGxpYl9tZXRhZGF0YS0ke3ZlcnNpb259IgorYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUK K3B5Y29tcGlsZV9tb2R1bGU9ImltcG9ydGxpYl9tZXRhZGF0YSIKK2hvc3RtYWtlZGVwZW5kcz0i cHl0aG9uMy1zZXR1cHRvb2xzIgorZGVwZW5kcz0icHl0aG9uMy16aXBwIgorY2hlY2tkZXBlbmRz PSIke2RlcGVuZHN9Igorc2hvcnRfZGVzYz0iUmVhZCBtZXRhZGF0YSBmcm9tIFB5dGhvbiBwYWNr YWdlcyIKK21haW50YWluZXI9IlBpb3RyIFfDs2pjaWsgPGNob2NpbWllckB0bGVuLnBsPiIKK2xp Y2Vuc2U9IkFwYWNoZS0yLjAiCitob21lcGFnZT0iaHR0cHM6Ly9pbXBvcnRsaWItbWV0YWRhdGEu cmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0LyIKK2NoYW5nZWxvZz0iaHR0cHM6Ly9pbXBvcnRsaWIt bWV0YWRhdGEucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2NoYW5nZWxvZyUyMChsaW5rcykuaHRt bCIKK2Rpc3RmaWxlcz0iJHtQWVBJX1NJVEV9L2kvaW1wb3J0bGliX21ldGFkYXRhL2ltcG9ydGxp Yl9tZXRhZGF0YS0ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPWNiNmVlMjNiNDYxNzM1Mzk5 Mzk5NjRkZjU5ZDNkNzJjM2UwYzFiNWQ1NGI4NGYxZDhhN2U5MTJmZTQzNjEyZGIKCkZyb20gMzhl ZTBiNmI0ZDkwZWFlZDk2OWY1NGEyOWMyNjcxZmJiODliMzNlYSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogPT9VVEYtOD9xP1Bpb3RyPTIwVz1DMz1CM2pjaWs/PSA8Y2hvY2ltaWVyQHRs ZW4ucGw+CkRhdGU6IE1vbiwgMTUgSnVsIDIwMTkgMTg6NTQ6MjIgKzAyMDAKU3ViamVjdDogW1BB VENIIDMzLzQyXSBweXRob24tcGx1Z2d5OiB1cGRhdGUgdG8gMC4xMi4wLgoKLS0tCiBzcmNwa2dz L3B5dGhvbi1wbHVnZ3kvdGVtcGxhdGUgIHwgMjUgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQog c3JjcGtncy9weXRob24zLXBsdWdneSAgICAgICAgICB8ICAxIC0KIHNyY3BrZ3MvcHl0aG9uMy1w bHVnZ3kvdGVtcGxhdGUgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNo YW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTIw MDAwIHNyY3BrZ3MvcHl0aG9uMy1wbHVnZ3kKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3B5 dGhvbjMtcGx1Z2d5L3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24tcGx1Z2d5 L3RlbXBsYXRlIGIvc3JjcGtncy9weXRob24tcGx1Z2d5L3RlbXBsYXRlCmluZGV4IDk2YmE5OTVh M2M4Li5hODAxMzYwNTYwZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9weXRob24tcGx1Z2d5L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvcHl0aG9uLXBsdWdneS90ZW1wbGF0ZQpAQCAtMSwxNSArMSwxNSBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uLXBsdWdneScKIHBrZ25hbWU9cHl0aG9uLXBs dWdneQogdmVyc2lvbj0wLjkuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYXJjaHM9bm9hcmNo Ci13cmtzcmM9IiR7cGtnbmFtZS9weXRob24tLy99LSR7dmVyc2lvbn0iCi1idWlsZF9zdHlsZT1w eXRob24tbW9kdWxlCit3cmtzcmM9InBsdWdneS0ke3ZlcnNpb259IgorYnVpbGRfc3R5bGU9cHl0 aG9uMi1tb2R1bGUKIHB5Y29tcGlsZV9tb2R1bGU9InBsdWdneSIKLWhvc3RtYWtlZGVwZW5kcz0i cHl0aG9uLXNldHVwdG9vbHMgcHl0aG9uMy1zZXR1cHRvb2xzIgoraG9zdG1ha2VkZXBlbmRzPSJw eXRob24tc2V0dXB0b29scyIKIGRlcGVuZHM9InB5dGhvbiIKLWNoZWNrZGVwZW5kcz0icHl0aG9u My1weXRlc3QiCi1zaG9ydF9kZXNjPSJNaW5pbWFsaXN0IHByb2R1Y3Rpb24gcmVhZHkgcHl0aG9u MiBwbHVnaW4gc3lzdGVtIgorY2hlY2tkZXBlbmRzPSJweXRob24tcHl0ZXN0ICR7ZGVwZW5kc30i CitzaG9ydF9kZXNjPSJNaW5pbWFsaXN0IHByb2R1Y3Rpb24gcmVhZHkgcGx1Z2luIHN5c3RlbSAo UHl0aG9uMikiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+Igog bGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3Bs dWdneSIKQEAgLTE3LDIwICsxNyw5IEBAIGRpc3RmaWxlcz0iJHtQWVBJX1NJVEV9L3AvcGx1Z2d5 L3BsdWdneS0ke3ZlcnNpb259LnRhci5neiIKIGNoZWNrc3VtPTE5ZWNmOWNlOWRiMmZjZTA2NWE3 YTA1ODZlMDdjZmI0YWM4NjE0ZmU5NmVkZjYyOGEyNjRiMWM3MDExNmNmOGYKIAogZG9fY2hlY2so KSB7Ci0JcHl0aG9uMyAtbSBweXRlc3QKKwlweXRob24gLW0gcHl0ZXN0CiB9CiAKIHBvc3RfaW5z dGFsbCgpIHsKIAl2bGljZW5zZSBMSUNFTlNFCiB9Ci0KLXB5dGhvbjMtcGx1Z2d5X3BhY2thZ2Uo KSB7Ci0JYXJjaHM9bm9hcmNoCi0JcHljb21waWxlX21vZHVsZT0icGx1Z2d5IgotCWRlcGVuZHM9 InB5dGhvbjMiCi0Jc2hvcnRfZGVzYz0iJHtzaG9ydF9kZXNjL3B5dGhvbjIvcHl0aG9uM30iCi0J cGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9saWIvcHl0aG9uMyoKLQkJdmxpY2Vuc2UgTElD RU5TRQotCX0KLX0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1wbHVnZ3kgYi9zcmNwa2dz L3B5dGhvbjMtcGx1Z2d5CmRlbGV0ZWQgZmlsZSBtb2RlIDEyMDAwMAppbmRleCBhN2I5OWIxY2Fk Yi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9weXRob24zLXBsdWdneQorKysgL2Rldi9udWxs CkBAIC0xICswLDAgQEAKLXB5dGhvbi1wbHVnZ3kKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5dGhvbjMtcGx1Z2d5L3RlbXBsYXRlIGIvc3JjcGtncy9w eXRob24zLXBsdWdneS90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNDJiMzFmZjhhZjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3B5dGhvbjMtcGx1 Z2d5L3RlbXBsYXRlCkBAIC0wLDAgKzEsMjUgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ3B5dGhv bjMtcGx1Z2d5JworcGtnbmFtZT1weXRob24zLXBsdWdneQordmVyc2lvbj0wLjEyLjAKK3Jldmlz aW9uPTEKK2FyY2hzPW5vYXJjaAord3Jrc3JjPSJwbHVnZ3ktJHt2ZXJzaW9ufSIKK2J1aWxkX3N0 eWxlPXB5dGhvbjMtbW9kdWxlCitweWNvbXBpbGVfbW9kdWxlPSJwbHVnZ3kiCitob3N0bWFrZWRl cGVuZHM9InB5dGhvbjMtc2V0dXB0b29scyIKK2RlcGVuZHM9InB5dGhvbjMtaW1wb3J0bGliX21l dGFkYXRhIgorY2hlY2tkZXBlbmRzPSJweXRob24zLXB5dGVzdCAke2RlcGVuZHN9Igorc2hvcnRf ZGVzYz0iTWluaW1hbGlzdCBwcm9kdWN0aW9uIHJlYWR5IHBsdWdpbiBzeXN0ZW0gKFB5dGhvbjMp IgorbWFpbnRhaW5lcj0iUGlvdHIgV8OzamNpayA8Y2hvY2ltaWVyQHRsZW4ucGw+IgorbGljZW5z ZT0iTUlUIgoraG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3BsdWdneSIK K2Rpc3RmaWxlcz0iJHtQWVBJX1NJVEV9L3AvcGx1Z2d5L3BsdWdneS0ke3ZlcnNpb259LnRhci5n eiIKK2NoZWNrc3VtPTA4MjVhMTUyYWMwNTk3NzY2MjM4NTRjMTU0M2Q2NWE0YWQ0MDhlYjNkMzNl ZTExNGRmZjkxZTU3ZWM2YWU2ZmMKKworZG9fY2hlY2soKSB7CisJcHl0aG9uMyAtbSBweXRlc3QK K30KKworcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UKK30KCkZyb20gZTU2NDYx MzAwZjUwNDY1ZmE2NzQ1OWZmOGQwMzk5ZTE0YjRmNmFmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogPT9VVEYtOD9xP1Bpb3RyPTIwVz1DMz1CM2pjaWs/PSA8Y2hvY2ltaWVyQHRsZW4u cGw+CkRhdGU6IE1vbiwgMTUgSnVsIDIwMTkgMTg6NTQ6MjIgKzAyMDAKU3ViamVjdDogW1BBVENI IDM0LzQyXSBOZXcgcGFja2FnZTogcHl0aG9uMy1zY2FuZGlyLTEuMTAuMAoKLS0tCiBzcmNwa2dz L3B5dGhvbi1zY2FuZGlyL3RlbXBsYXRlIHwgMjEgKysrKysrKysrKysrKysrKy0tLS0tCiBzcmNw a2dzL3B5dGhvbjMtc2NhbmRpciAgICAgICAgIHwgIDEgKwogMiBmaWxlcyBjaGFuZ2VkLCAxNyBp bnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mv cHl0aG9uMy1zY2FuZGlyCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24tc2NhbmRpci90ZW1w bGF0ZSBiL3NyY3BrZ3MvcHl0aG9uLXNjYW5kaXIvdGVtcGxhdGUKaW5kZXggODdkODIyYWRmZTku Ljc3NGZhYzkxYjhmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3B5dGhvbi1zY2FuZGlyL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvcHl0aG9uLXNjYW5kaXIvdGVtcGxhdGUKQEAgLTEsMTkgKzEsMzAgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3B5dGhvbi1zY2FuZGlyJwogcGtnbmFtZT1weXRob24tc2Nh bmRpcgogdmVyc2lvbj0xLjEwLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIHdya3NyYz0ic2Nh bmRpci0ke3ZlcnNpb259IgotYnVpbGRfc3R5bGU9cHl0aG9uMi1tb2R1bGUKK2J1aWxkX3N0eWxl PXB5dGhvbi1tb2R1bGUKIHB5Y29tcGlsZV9tb2R1bGU9InNjYW5kaXIucHkiCi1ob3N0bWFrZWRl cGVuZHM9InB5dGhvbi1zZXR1cHRvb2xzIgotbWFrZWRlcGVuZHM9InB5dGhvbi1kZXZlbCIKLXNo b3J0X2Rlc2M9IkJhY2twb3J0IG9mIHRoZSBzY2FuZGlyIG1vZHVsZSBmcm9tIFB5dGhvbiAzLjUr IgoraG9zdG1ha2VkZXBlbmRzPSJweXRob24tc2V0dXB0b29scyBweXRob24zLXNldHVwdG9vbHMi CittYWtlZGVwZW5kcz0icHl0aG9uLWRldmVsIHB5dGhvbjMtZGV2ZWwiCitkZXBlbmRzPSJweXRo b24iCitzaG9ydF9kZXNjPSJCZXR0ZXIgZGlyZWN0b3J5IGl0ZXJhdG9yIGFuZCBmYXN0ZXIgb3Mu d2FsaygpIChQeXRob24yKSIKIG1haW50YWluZXI9IkFsZXNzaW8gU2VyZ2kgPGFsM2hleEBnbWFp bC5jb20+IgogbGljZW5zZT0iQlNELTMtQ2xhdXNlIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHVi LmNvbS9iZW5ob3l0L3NjYW5kaXIiCiBkaXN0ZmlsZXM9IiR7UFlQSV9TSVRFfS9zL3NjYW5kaXIv c2NhbmRpci0ke3ZlcnNpb259LnRhci5neiIKIGNoZWNrc3VtPTRkNDYzMWY2MDYyZTY1OGU5MDA3 YWIzMTQ5YTliOTE0ZjM1NDhjYjM4YmZiMDIxYzY0ZjM5YTAyNWNlNTc4YWUKIAorcHl0aG9uMy1z Y2FuZGlyX3BhY2thZ2UoKSB7CisJcHljb21waWxlX21vZHVsZT0ic2NhbmRpci5weSIKKwlkZXBl bmRzPSJweXRob24zIgorCXNob3J0X2Rlc2M9IiR7c2hvcnRfZGVzYy9QeXRob24yL1B5dGhvbjN9 IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL3B5dGhvbjMqCisJCXZsaWNlbnNl IExJQ0VOU0UudHh0CisJfQorfQorCiBwb3N0X2luc3RhbGwoKSB7CiAJdmxpY2Vuc2UgTElDRU5T RS50eHQKIH0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1zY2FuZGlyIGIvc3JjcGtncy9w eXRob24zLXNjYW5kaXIKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAuLmE1 NzJhZGUyZDNlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9weXRob24zLXNjYW5kaXIKQEAg LTAsMCArMSBAQAorcHl0aG9uLXNjYW5kaXIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpG cm9tIDM5YjdmZDI0MjA5NjE3MjM5NzFiZWRhODc3M2U2MWQ3ODY3ODZhZTMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9QaW90cj0yMFc9QzM9QjNqY2lrPz0gPGNob2Np bWllckB0bGVuLnBsPgpEYXRlOiBNb24sIDE1IEp1bCAyMDE5IDE4OjU0OjIyICswMjAwClN1Ympl Y3Q6IFtQQVRDSCAzNS80Ml0gTmV3IHBhY2thZ2U6IHB5dGhvbjMtcGF0aGxpYjItMi4zLjQKCi0t LQogc3JjcGtncy9weXRob24tcGF0aGxpYjIvdGVtcGxhdGUgfCAyMyArKysrKysrKysrKysrKysr Ky0tLS0tLQogc3JjcGtncy9weXRob24zLXBhdGhsaWIyICAgICAgICAgfCAgMSArCiAyIGZpbGVz IGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MjAwMDAgc3JjcGtncy9weXRob24zLXBhdGhsaWIyCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRo b24tcGF0aGxpYjIvdGVtcGxhdGUgYi9zcmNwa2dzL3B5dGhvbi1wYXRobGliMi90ZW1wbGF0ZQpp bmRleCA0YmQwYWYyNDEzMS4uYmI3YmVjNzc4ZjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHl0aG9u LXBhdGhsaWIyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHl0aG9uLXBhdGhsaWIyL3RlbXBsYXRl CkBAIC0xLDIwICsxLDMxIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdweXRob24tcGF0aGxpYjIn CiBwa2duYW1lPXB5dGhvbi1wYXRobGliMgogdmVyc2lvbj0yLjMuNAotcmV2aXNpb249MQorcmV2 aXNpb249MgogYXJjaHM9bm9hcmNoCiB3cmtzcmM9InBhdGhsaWIyLSR7dmVyc2lvbn0iCi1idWls ZF9zdHlsZT1weXRob24yLW1vZHVsZQotcHljb21waWxlX21vZHVsZT0icGF0aGxpYjIucHkiCi1o b3N0bWFrZWRlcGVuZHM9InB5dGhvbi1zZXR1cHRvb2xzIgorYnVpbGRfc3R5bGU9cHl0aG9uLW1v ZHVsZQorcHljb21waWxlX21vZHVsZT0icGF0aGxpYjIiCitob3N0bWFrZWRlcGVuZHM9InB5dGhv bi1zZXR1cHRvb2xzIHB5dGhvbjMtc2V0dXB0b29scyIKIGRlcGVuZHM9InB5dGhvbi1zaXggcHl0 aG9uLXNjYW5kaXIiCi1zaG9ydF9kZXNjPSJCYWNrcG9ydCBvZiBQeXRob24gMy40KyBwYXRobGli IG1vZHVsZSIKK3Nob3J0X2Rlc2M9Ik9iamVjdC1vcmllbnRlZCBmaWxlc3lzdGVtIHBhdGhzIChQ eXRob24yKSIKIG1haW50YWluZXI9IkFsZXNzaW8gU2VyZ2kgPGFsM2hleEBnbWFpbC5jb20+Igot aG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9tY210cm9mZmFlcy9wYXRobGliMiIKIGxpY2Vu c2U9Ik1JVCIKK2hvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vbWNtdHJvZmZhZXMvcGF0aGxp YjIiCiBkaXN0ZmlsZXM9IiR7UFlQSV9TSVRFfS9wL3BhdGhsaWIyL3BhdGhsaWIyLSR7dmVyc2lv bn0udGFyLmd6IgogY2hlY2tzdW09NDQ2MDE0NTIzYmI5YmU1YzI4MTI4YzRkMmExMGFkNmJiNjA3 NjllNzhiZDg1NjU4ZmU0NGE0NTA2NzRlMGVmOAogCitweXRob24zLXBhdGhsaWIyX3BhY2thZ2Uo KSB7CisJYXJjaHM9bm9hcmNoCisJZGVwZW5kcz0icHl0aG9uMy1zaXggcHl0aG9uMy1zY2FuZGly IgorCXB5Y29tcGlsZV9tb2R1bGU9InBhdGhsaWIyIgorCXNob3J0X2Rlc2M9IiR7c2hvcnRfZGVz Yy9QeXRob24yL1B5dGhvbjN9IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL3B5 dGhvbjMqCisJCXZsaWNlbnNlIExJQ0VOU0UucnN0CisJfQorfQorCiBwb3N0X2luc3RhbGwoKSB7 CiAJdmxpY2Vuc2UgTElDRU5TRS5yc3QKIH0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1w YXRobGliMiBiL3NyY3BrZ3MvcHl0aG9uMy1wYXRobGliMgpuZXcgZmlsZSBtb2RlIDEyMDAwMApp bmRleCAwMDAwMDAwMDAwMC4uYmIwZjcwZTA1NGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L3B5dGhvbjMtcGF0aGxpYjIKQEAgLTAsMCArMSBAQAorcHl0aG9uLXBhdGhsaWIyClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQoKRnJvbSBlMWY3M2Y0MjA4ODZiMTc1NDVhM2M0MzA3NjY4NmE4 MDUwMGVkZTkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/UGlvdHI9 MjBXPUMzPUIzamNpaz89IDxjaG9jaW1pZXJAdGxlbi5wbD4KRGF0ZTogTW9uLCAxNSBKdWwgMjAx OSAxODo1NDoyMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMzYvNDJdIHRveDogdXBkYXRlIHRvIDMu MTMuMi4KCi0tLQogc3JjcGtncy90b3gvdGVtcGxhdGUgfCA5ICsrKysrLS0tLQogMSBmaWxlIGNo YW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3RveC90ZW1wbGF0ZSBiL3NyY3BrZ3MvdG94L3RlbXBsYXRlCmluZGV4IGU3YjBjMzU1M2Fm Li5jNzM1YzQyYzM3YyAxMDA2NDQKLS0tIGEvc3JjcGtncy90b3gvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy90b3gvdGVtcGxhdGUKQEAgLTEsMTggKzEsMTkgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3RveCcKIHBrZ25hbWU9dG94Ci12ZXJzaW9uPTMuMTMuMQordmVyc2lvbj0zLjEzLjIKIHJldmlz aW9uPTEKIGJ1aWxkX3N0eWxlPXB5dGhvbjMtbW9kdWxlCiBweWNvbXBpbGVfbW9kdWxlPSJ0b3gi CiBob3N0bWFrZWRlcGVuZHM9InB5dGhvbjMtc2V0dXB0b29scyIKLWRlcGVuZHM9InB5dGhvbjMt ZmlsZWxvY2sgcHl0aG9uMy1weXRlc3QgcHl0aG9uMy10b21sIHB5dGhvbjMtdmlydHVhbGVudiIK LWNoZWNrZGVwZW5kcz0iJHtkZXBlbmRzfSBweXRob24zLWZsYWt5IgorZGVwZW5kcz0icHl0aG9u My1maWxlbG9jayBweXRob24zLWltcG9ydGxpYl9tZXRhZGF0YSBweXRob24zLXBhY2thZ2luZwor IHB5dGhvbjMtcGx1Z2d5IHB5dGhvbjMtcHl0ZXN0IHB5dGhvbjMtdG9tbCBweXRob24zLXZpcnR1 YWxlbnYiCitjaGVja2RlcGVuZHM9IiR7ZGVwZW5kc30gcHl0aG9uMy1mbGFreSBweXRob24zLXBh dGhsaWIyIgogc2hvcnRfZGVzYz0iR2VuZXJpYyB2aXJ0dWFsZW52IG1hbmFnZW1lbnQgYW5kIHRl c3QgY29tbWFuZCBsaW5lIHRvb2wiCiBtYWludGFpbmVyPSJQaW90ciBXw7NqY2lrIDxjaG9jaW1p ZXJAdGxlbi5wbD4iCiBsaWNlbnNlPSJNSVQiCiBob21lcGFnZT0iaHR0cHM6Ly90b3gucmVhZHRo ZWRvY3MuaW8vZW4vbGF0ZXN0LyIKIGRpc3RmaWxlcz0iJHtQWVBJX1NJVEV9L3QvdG94L3RveC0k e3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPWY1Y2IwYjViOGQxNGYyMTAwOTgyYjA5ODFjNzUw ZDg0MDIyODE4MGEzNDhlNmJhZDM1NWFhMzhlOTQ5ZmJjM2YKK2NoZWNrc3VtPWVlMzVmZmNlNzQ5 MzNhNmM2YWMxMGM5YTAxODJlNDE3NjMxNDBhNWE1MDcwZTIxYjExNGZlY2E1NmVhY2NkY2QKIAog cG9zdF9pbnN0YWxsKCkgewogCXZsaWNlbnNlIExJQ0VOU0UKCkZyb20gM2UzOWU1OTVkZDQwMWFj MTZmN2IyMjFhZTdlNDMxZDVhZGRiNTA2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog TGVhaCBOZXVraXJjaGVuIDxsZWFoQHZ1eHUub3JnPgpEYXRlOiBUdWUsIDE2IEp1bCAyMDE5IDE3 OjQwOjA1ICswMjAwClN1YmplY3Q6IFtQQVRDSCAzNy80Ml0gbWRvY21sOiBlbnN1cmUgbGVzcyBp cyBmb3VuZCB0byBlbmFibGUgdGFnIGZlYXR1cmUKCi0tLQogc3JjcGtncy9tZG9jbWwvdGVtcGxh dGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZG9jbWwvdGVtcGxhdGUgYi9zcmNwa2dzL21kb2Nt bC90ZW1wbGF0ZQppbmRleCAwMGFkYzcwNTY0NS4uYzA5YmYyZmY4YWYgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbWRvY21sL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWRvY21sL3RlbXBsYXRlCkBAIC0x LDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtZG9jbWwnCiBwa2duYW1lPW1kb2Nt bAogdmVyc2lvbj0xLjE0LjUKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIHdya3NyYz0ibWFuZG9j LSR7dmVyc2lvbn0iCiBidWlsZF9zdHlsZT1jb25maWd1cmUKLW1ha2VkZXBlbmRzPSJ6bGliLWRl dmVsIgorbWFrZWRlcGVuZHM9Imxlc3MgemxpYi1kZXZlbCIKIGNoZWNrZGVwZW5kcz0icGVybCIK IGRlcGVuZHM9Imxlc3MiCiBwcm92aWRlcz0ibWFuLTBfMSIKCkZyb20gYzVjN2Y4NjI3ZjdiNjhm M2FlZTU1YmEyMzlhNDUyMzU5MGNlYjc2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog PT9VVEYtOD9xP1Bpb3RyPTIwVz1DMz1CM2pjaWs/PSA8Y2hvY2ltaWVyQHRsZW4ucGw+CkRhdGU6 IFR1ZSwgMTYgSnVsIDIwMTkgMDA6MjY6MjQgKzAyMDAKU3ViamVjdDogW1BBVENIIDM4LzQyXSBO ZXcgcGFja2FnZTogcHl0aG9uMy1weXNvbF9jYXJkcy0wLjYuMgoKLS0tCiBzcmNwa2dzL3B5dGhv bjMtcHlzb2xfY2FyZHMvdGVtcGxhdGUgfCAyMSArKysrKysrKysrKysrKysrKysrKysKIDEgZmls ZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9w eXRob24zLXB5c29sX2NhcmRzL3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24z LXB5c29sX2NhcmRzL3RlbXBsYXRlIGIvc3JjcGtncy9weXRob24zLXB5c29sX2NhcmRzL3RlbXBs YXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMmZkZjU5NDAwNgot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNvbF9jYXJkcy90ZW1wbGF0ZQpA QCAtMCwwICsxLDIxIEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdweXRob24zLXB5c29sX2NhcmRz JworcGtnbmFtZT1weXRob24zLXB5c29sX2NhcmRzCit2ZXJzaW9uPTAuNi4yCityZXZpc2lvbj0x Cit3cmtzcmM9InB5c29sX2NhcmRzLSR7dmVyc2lvbn0iCitidWlsZF9zdHlsZT1weXRob24zLW1v ZHVsZQorcHljb21waWxlX21vZHVsZT0icHlzb2xfY2FyZHMiCitob3N0bWFrZWRlcGVuZHM9InB5 dGhvbjMtc2V0dXB0b29scyIKK2RlcGVuZHM9InB5dGhvbjMtcGJyIgorY2hlY2tkZXBlbmRzPSJw eXRob24zLXJhbmRvbTIgcHl0aG9uMy1zaXggcHl0aG9uMy1weXBlcmNsaXAgcHl0aG9uMy1jb2xv cmFtYQorIHB5dGhvbjMtY2ZmaSBweXRob24zLWFwcGRpcnMgcHl0aG9uMy1kZWNvcmF0b3IgcHl0 aG9uMy1uZXRpZmFjZXMiCitzaG9ydF9kZXNjPSJEZWFsIFB5U29sIEZDIENhcmRzIgorbWFpbnRh aW5lcj0iUGlvdHIgV8OzamNpayA8Y2hvY2ltaWVyQHRsZW4ucGw+IgorbGljZW5zZT0iTUlUIgor aG9tZXBhZ2U9Imh0dHBzOi8vZmMtc29sdmUuc2hsb21pZmlzaC5vcmcvIgorZGlzdGZpbGVzPSIk e1BZUElfU0lURX0vcC9weXNvbF9jYXJkcy9weXNvbF9jYXJkcy0ke3ZlcnNpb259LnRhci5neiIK K2NoZWNrc3VtPWExOGNkYzUxY2E4NzMxZGZjNGE3NGRlZjk4ZWE3NTg1YzA3YjUwYWFjMTRlMWE3 MDhmOWVmMzc2ZjQ5Zjc2OWQKKworcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UK K30KCkZyb20gMWIzNzZiMjI3NjRjOWNiMjZkZGEzZjA2NDExODM1MjAxYzg0Y2U1OCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP1Bpb3RyPTIwVz1DMz1CM2pjaWs/PSA8 Y2hvY2ltaWVyQHRsZW4ucGw+CkRhdGU6IFR1ZSwgMTYgSnVsIDIwMTkgMDA6MjY6MjQgKzAyMDAK U3ViamVjdDogW1BBVENIIDM5LzQyXSBOZXcgcGFja2FnZTogZnJlZWNlbGwtc29sdmVyLTUuMTAu MAoKLS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyY3BrZ3Mv ZnJlZWNlbGwtc29sdmVyL3RlbXBsYXRlIHwgMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHNyY3BrZ3MvbGliZnJlZWNlbGwtc29sdmVyICAgICAgIHwgIDEgKwogc3JjcGtncy9s aWJmcmVlY2VsbC1zb2x2ZXItZGV2ZWwgfCAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDM4IGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZyZWVjZWxsLXNvbHZlci90ZW1w bGF0ZQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliZnJlZWNlbGwtc29sdmVyCiBjcmVh dGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJmcmVlY2VsbC1zb2x2ZXItZGV2ZWwKCmRpZmYgLS1n aXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGlicwppbmRleCA1NTI1YjFmNWQzZC4uN2Zh MmU5MjIwYmYgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpA QCAtMzQ4NSw2ICszNDg1LDcgQEAgbGliZ251c3RlcC1ndWkuc28uMC4yNyBnbnVzdGVwLWd1aS0w LjI3LjBfMQogbGlibWhhc2guc28uMiBtaGFzaC0wLjkuOS45XzEKIGxpYnJsb3R0aWUuc28uMCBy bG90dGllLTAuMC4yMDE2MDcwOV8xCiBsaWJmc3RybS5zby4wIGZzdHJtLTAuNS4wXzEKK2xpYmZy ZWVjZWxsLXNvbHZlci5zby4wIGxpYmZyZWVjZWxsLXNvbHZlci01LjEwLjBfMQogbGlia25vdC5z by45IGxpYmtub3QtMi44LjJfMQogbGliZG5zc2VjLnNvLjcgbGlia25vdC0yLjguMl8xCiBsaWJ6 c2Nhbm5lci5zby4zIGxpYmtub3QtMi44LjJfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2Vs bC1zb2x2ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2ZyZWVjZWxsLXNvbHZlci90ZW1wbGF0ZQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTdhNmRmNzZiMTgKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2ZyZWVjZWxsLXNvbHZlci90ZW1wbGF0ZQpAQCAtMCwwICsxLDM1 IEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdmcmVlY2VsbC1zb2x2ZXInCitwa2duYW1lPWZyZWVj ZWxsLXNvbHZlcgordmVyc2lvbj01LjEwLjAKK3JldmlzaW9uPTEKK2J1aWxkX3N0eWxlPWNtYWtl Citob3N0bWFrZWRlcGVuZHM9InBlcmwtVGVtcGxhdGUtVG9vbGtpdCBncGVyZiBwZXJsLVBhdGgt VGlueQorIHB5c29sZmMgcHl0aG9uMy1weXNvbF9jYXJkcyBweXRob24zLXJhbmRvbTIgcHl0aG9u My1zaXgiCitjb25maWd1cmVfYXJncz0iLURGQ1NfV0lUSF9URVNUX1NVSVRFPU9GRiIKK3Nob3J0 X2Rlc2M9IkF1dG9tYXRpY2FsbHkgc29sdmVzIGxheW91dHMgb2YgRnJlZWNlbGwgYW5kIHNpbWls YXIgdmFyaWFudHMgb2Ygc29saXRhaXJlIgorbWFpbnRhaW5lcj0iUGlvdHIgV8OzamNpayA8Y2hv Y2ltaWVyQHRsZW4ucGw+IgorbGljZW5zZT0iTUlUIgoraG9tZXBhZ2U9Imh0dHBzOi8vZmMtc29s dmUuc2hsb21pZmlzaC5vcmcvIgorZGlzdGZpbGVzPSJodHRwczovL2ZjLXNvbHZlLnNobG9taWZp c2gub3JnL2Rvd25sb2Fkcy9mYy1zb2x2ZS9mcmVlY2VsbC1zb2x2ZXItJHt2ZXJzaW9ufS50YXIu eHoiCitjaGVja3N1bT1jYzg2NzFkMzE1ZTY5ZjZiMTZmYzUyZWU5ZmU3NTE1NjcxZGNjMjg2Y2U4 NzFiMmMxMzM0N2UxYWZjZmJkZDM5CisKK3Bvc3RfaW5zdGFsbCgpIHsKKwl2bGljZW5zZSBDT1BZ SU5HLnR4dAorfQorCitsaWJmcmVlY2VsbC1zb2x2ZXJfcGFja2FnZSgpIHsKKwlwa2dfaW5zdGFs bCgpIHsKKwkJdm1vdmUgInVzci9saWIvKi5zbyoiCisJfQorfQorCitsaWJmcmVlY2VsbC1zb2x2 ZXItZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSJsaWJmcmVlY2VsbC1zb2x2ZXI+PSR7dmVy c2lvbn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgor CXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGliL3Br Z2NvbmZpZworCQl2bW92ZSAidXNyL2xpYi8qLmEiCisJCXZtb3ZlICJ1c3IvbGliLyouc28iCisJ fQorfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJmcmVlY2VsbC1zb2x2ZXIgYi9zcmNwa2dzL2xp YmZyZWVjZWxsLXNvbHZlcgpuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMC4u ZjQ4NzIwZWI4OTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmZyZWVjZWxsLXNvbHZl cgpAQCAtMCwwICsxIEBACitmcmVlY2VsbC1zb2x2ZXIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmZyZWVjZWxsLXNvbHZlci1kZXZlbCBiL3NyY3Br Z3MvbGliZnJlZWNlbGwtc29sdmVyLWRldmVsCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAw MDAwMDAwMDAwLi5mNDg3MjBlYjg5MgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliZnJl ZWNlbGwtc29sdmVyLWRldmVsCkBAIC0wLDAgKzEgQEAKK2ZyZWVjZWxsLXNvbHZlcgpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKCkZyb20gMWFkMjhhMGM3YTY5NDkwZThlNWNmNzdiMzhkODA2 MTgxYTRhNThiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP1Bpb3Ry PTIwVz1DMz1CM2pjaWs/PSA8Y2hvY2ltaWVyQHRsZW4ucGw+CkRhdGU6IFR1ZSwgMTYgSnVsIDIw MTkgMDA6MjY6MjQgKzAyMDAKU3ViamVjdDogW1BBVENIIDQwLzQyXSBOZXcgcGFja2FnZToga3Bh dC0xOS4wNC4zCgotLS0KIHNyY3BrZ3Mva3BhdC90ZW1wbGF0ZSB8IDE1ICsrKysrKysrKysrKysr KwogMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2twYXQvdGVtcGxhdGUKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2twYXQvdGVtcGxhdGUg Yi9zcmNwa2dzL2twYXQvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjNiYTU4YTE4YWUzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9rcGF0L3RlbXBs YXRlCkBAIC0wLDAgKzEsMTUgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ2twYXQnCitwa2duYW1l PWtwYXQKK3ZlcnNpb249MTkuMDQuMworcmV2aXNpb249MQorYnVpbGRfc3R5bGU9Y21ha2UKK2hv c3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBrY29uZmlnIGtjb3JlYWRkb25zIGtk b2N0b29scworIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIgorbWFrZWRlcGVu ZHM9ImxpYmZyZWVjZWxsLXNvbHZlci1kZXZlbCBsaWJrZGVnYW1lcy1kZXZlbAorIGtuZXdzdHVm Zi1kZXZlbCBrcGFydHMtZGV2ZWwgcXQ1LWRldmVsIgorc2hvcnRfZGVzYz0iUmVsYXhpbmcgY2Fy ZCBzb3J0aW5nIGdhbWUiCittYWludGFpbmVyPSJQaW90ciBXw7NqY2lrIDxjaG9jaW1pZXJAdGxl bi5wbD4iCitsaWNlbnNlPSJHUEwtMi4wLW9ubHkiCitob21lcGFnZT0iaHR0cHM6Ly9rZGUub3Jn L2FwcGxpY2F0aW9ucy9nYW1lcy9rcGF0aWVuY2UvIgorZGlzdGZpbGVzPSIke0tERV9TSVRFfS9h cHBsaWNhdGlvbnMvJHt2ZXJzaW9ufS9zcmMva3BhdC0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNr c3VtPWNhOWQ1M2Q0MDBhMmJlM2NhNDIxZDZkOTE2Y2FmZWZmM2I5ZGNmMjIwZTYyN2ExNzYyZjk2 ODE3ZTk1MmU4ZTIKCkZyb20gZWFjZGFjMDlmZDdmOWVjNzFlYzdkZGM3ZDZkMmQ4MTRhMzJiODcw NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9ueSA8LS1nZXQ+CkRhdGU6IE1vbiwg MTUgSnVsIDIwMTkgMTA6MjE6MTcgLTA3MDAKU3ViamVjdDogW1BBVENIIDQxLzQyXSBjb21tb24v ZW52aXJvbm1lbnQvc2V0dXAvbWlzYy5zaDogc29ydGVkIGxpc3Qgb2Ygc2l0ZXMKIGFuZCBhZGRl ZCBHSVRIVUJfU0lURQoKLS0tCiBjb21tb24vZW52aXJvbm1lbnQvc2V0dXAvbWlzYy5zaCB8IDE5 ICsrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA5 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9lbnZpcm9ubWVudC9zZXR1cC9taXNj LnNoIGIvY29tbW9uL2Vudmlyb25tZW50L3NldHVwL21pc2Muc2gKaW5kZXggZWZhMzZlMTg1ODku LjFjNTE1MTdmNzVkIDEwMDY0NAotLS0gYS9jb21tb24vZW52aXJvbm1lbnQvc2V0dXAvbWlzYy5z aAorKysgYi9jb21tb24vZW52aXJvbm1lbnQvc2V0dXAvbWlzYy5zaApAQCAtNCwxOSArNCwyMCBA QAogIyBTSVRFIHVzZWQgZm9yIGRpdGZpbGVzIG1pcnJvcnMuIEZvciB1c2UgaW4gJGRpc3RmaWxl cy4KIHNldCAtYQogCi1TT1VSQ0VGT1JHRV9TSVRFPSJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZv cmdlLm5ldC9zb3VyY2Vmb3JnZSIKLU5PTkdOVV9TSVRFPSJodHRwOi8vZG93bmxvYWQuc2F2YW5u YWgubm9uZ251Lm9yZy9yZWxlYXNlcyIKLVVCVU5UVV9TSVRFPSJodHRwOi8vYXJjaGl2ZS51YnVu dHUuY29tL3VidW50dS9wb29sIgotWE9SR19TSVRFPSJodHRwczovL3d3dy54Lm9yZy9yZWxlYXNl cy9pbmRpdmlkdWFsIgorQ1BBTl9TSVRFPSJodHRwczovL3d3dy5jcGFuLm9yZy9tb2R1bGVzL2J5 LW1vZHVsZSIKIERFQklBTl9TSVRFPSJodHRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wi CitGUkVFREVTS1RPUF9TSVRFPSJodHRwczovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZSIKK0dJ VEhVQl9TSVRFPSJodHRwczovL2dpdGh1Yi5jb20iCiBHTk9NRV9TSVRFPSJodHRwOi8vZnRwLmdu b21lLm9yZy9wdWIvR05PTUUvc291cmNlcyIKLUtFUk5FTF9TSVRFPSJodHRwczovL3d3dy5rZXJu ZWwub3JnL3B1Yi9saW51eCIKLUNQQU5fU0lURT0iaHR0cHM6Ly93d3cuY3Bhbi5vcmcvbW9kdWxl cy9ieS1tb2R1bGUiCi1QWVBJX1NJVEU9Imh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9w YWNrYWdlcy9zb3VyY2UiCi1NT1pJTExBX1NJVEU9Imh0dHBzOi8vZnRwLm1vemlsbGEub3JnL3B1 YiIKIEdOVV9TSVRFPSJodHRwOi8vZnRwLmdudS5vcmcvZ251IgotRlJFRURFU0tUT1BfU0lURT0i aHR0cHM6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUiCiBLREVfU0lURT0iaHR0cHM6Ly9kb3du bG9hZC5rZGUub3JnL3N0YWJsZSIKK0tFUk5FTF9TSVRFPSJodHRwczovL3d3dy5rZXJuZWwub3Jn L3B1Yi9saW51eCIKK01PWklMTEFfU0lURT0iaHR0cHM6Ly9mdHAubW96aWxsYS5vcmcvcHViIgor Tk9OR05VX1NJVEU9Imh0dHA6Ly9kb3dubG9hZC5zYXZhbm5haC5ub25nbnUub3JnL3JlbGVhc2Vz IgorUFlQSV9TSVRFPSJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291 cmNlIgorU09VUkNFRk9SR0VfU0lURT0iaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQv c291cmNlZm9yZ2UiCitVQlVOVFVfU0lURT0iaHR0cDovL2FyY2hpdmUudWJ1bnR1LmNvbS91YnVu dHUvcG9vbCIKK1hPUkdfU0lURT0iaHR0cHM6Ly93d3cueC5vcmcvcmVsZWFzZXMvaW5kaXZpZHVh bCIKIAogIyBSZXBldGl0aXZlIHN1YiBob21lcGFnZSdzIHdpdGggbm8gcmVhbCBwcm9qZWN0IHBh Z2UKICMgaWUuIHNvbWUgZ25vbWUgYW5kIHhvcmcgcHJvamVjdHMuIEZvciB1c2UgaW4gJGhvbWVw YWdlLgoKRnJvbSBjMjQ0NGEzMWViZDBlNjA5ZGZkMmU3YmNmMjU0OWNkYWE0MWM4NjU0IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb255IDwtLWdldD4KRGF0ZTogTW9uLCAxNSBKdWwg MjAxOSAxMDoyNTowMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggNDIvNDJdIE1hbnVhbC5tZDogc29y dGVkIGxpc3Qgb2Ygc2l0ZXMgYW5kIGFkZGVkIEdJVEhVQl9TSVRFCgotLS0KIE1hbnVhbC5tZCB8 IDMgKystCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvTWFudWFsLm1kIGIvTWFudWFsLm1kCmluZGV4IGE1MjE2NGE3ZjczLi45Njg1 ZDc3YzJlOCAxMDA2NDQKLS0tIGEvTWFudWFsLm1kCisrKyBiL01hbnVhbC5tZApAQCAtNDU5LDgg KzQ1OSwxMCBAQCBFeGFtcGxlOgogICB8IENQQU5fU0lURSAgICAgICAgfCBodHRwOi8vY3Bhbi5w ZXJsLm9yZy9tb2R1bGVzL2J5LW1vZHVsZSAgICAgICAgICB8CiAgIHwgREVCSUFOX1NJVEUgICAg ICB8IGh0dHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbCAgICAgICAgICAgICAgIHwKICAg fCBGUkVFREVTS1RPUF9TSVRFIHwgaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZSAgICAg ICAgICAgICAgICAgfAorICB8IEdJVEhVQl9TSVRFICAgICAgfCBodHRwczovL2dpdGh1Yi5jb20g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgIHwgR05PTUVfU0lURSAgICAgICB8IGh0 dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzICAgICAgICAgIHwKICAgfCBHTlVf U0lURSAgICAgICAgIHwgaHR0cDovL2Z0cC5nbnUub3JnL2dudSAgICAgICAgICAgICAgICAgICAg ICAgICAgfAorICB8IEtERV9TSVRFICAgICAgICAgfCBodHRwczovL2Rvd25sb2FkLmtkZS5vcmcv c3RhYmxlICAgICAgICAgICAgICAgICB8CiAgIHwgS0VSTkVMX1NJVEUgICAgICB8IGh0dHA6Ly93 d3cua2VybmVsLm9yZy9wdWIvbGludXggICAgICAgICAgICAgICAgIHwKICAgfCBNT1pJTExBX1NJ VEUgICAgIHwgaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIgICAgICAgICAgICAgICAgICAgICAg fAogICB8IE5PTkdOVV9TSVRFICAgICAgfCBodHRwOi8vZG93bmxvYWQuc2F2YW5uYWgubm9uZ251 Lm9yZy9yZWxlYXNlcyAgICB8CkBAIC00NjksNyArNDcxLDYgQEAgRXhhbXBsZToKICAgfCBVQlVO VFVfU0lURSAgICAgIHwgaHR0cDovL2FyY2hpdmUudWJ1bnR1LmNvbS91YnVudHUvcG9vbCAgICAg ICAgICAgfAogICB8IFhPUkdfSE9NRSAgICAgICAgfCBodHRwOi8veG9yZy5mcmVlZGVza3RvcC5v cmcvd2lraS8gICAgICAgICAgICAgICB8CiAgIHwgWE9SR19TSVRFICAgICAgICB8IGh0dHA6Ly93 d3cueC5vcmcvcmVsZWFzZXMvaW5kaXZpZHVhbCAgICAgICAgICAgIHwKLSAgfCBLREVfU0lURSAg ICAgICAgIHwgaHR0cHM6Ly9kb3dubG9hZC5rZGUub3JnL3N0YWJsZSAgICAgICAgICAgICAgICAg fAogCiAtIGBjaGVja3N1bWAgVGhlIGBzaGEyNTZgIGRpZ2VzdHMgbWF0Y2hpbmcgYCR7ZGlzdGZp bGVzfWAuIE11bHRpcGxlIGZpbGVzIGNhbiBiZQogc2VwYXJhdGVkIGJ5IGJsYW5rcy4gUGxlYXNl IG5vdGUgdGhhdCB0aGUgb3JkZXIgbXVzdCBiZSB0aGUgc2FtZSB0aGFuCg== --===============1159329049089373375==--