From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: from inbox.vuxu.org (inbox.vuxu.org [IPv6:::1]) by inbox.vuxu.org (Postfix) with ESMTP id 574CD2B26D for ; Wed, 12 Jun 2024 08:32:27 +0200 (CEST) Content-Type: multipart/mixed; boundary="===============1618968248656563456==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_thunderbird=28-i18n=29=3A_update_to_115=2E11=2E1?= To: ml@inbox.vuxu.org From: dataCobra Reply-to: ml@inbox.vuxu.org Message-ID: Date: Wed, 12 Jun 2024 08:32:27 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============1618968248656563456== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IGRhdGFDb2JyYSBhZ2FpbnN0IG1hc3RlciBv biB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vZGF0YUNv YnJhL3ZvaWQtcGFja2FnZXMgdGh1bmRlcmJpcmQKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGlu dXgvdm9pZC1wYWNrYWdlcy9wdWxsLzUwNzk5Cgp0aHVuZGVyYmlyZCgtaTE4bik6IHVwZGF0ZSB0 byAxMTUuMTEuMQojIyMjIFRlc3RpbmcgdGhlIGNoYW5nZXMNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5n ZXMgaW4gdGhpcyBQUjogKipZRVMqKg0KDQojIyMjIExvY2FsIGJ1aWxkIHRlc3RpbmcNCi0gSSBi dWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICh4ODZfNjQt Z2xpYmMpDQotIEkgYnVpbHQgdGhpcyBQUiBsb2NhbGx5IGZvciB0aGVzZSBhcmNoaXRlY3R1cmVz IChpZiBzdXBwb3J0ZWQuIG1hcmsgY3Jvc3NidWlsZHMpOg0KICAtIHg4Nl82NC1tdXNsDQogIC0g aTY4Ng0KDQpbY2kgc2tpcF0NCgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9naXRodWIuY29t L3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzUwNzk5LnBhdGNoIGlzIGF0dGFjaGVk --===============1618968248656563456== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-thunderbird-50799.patch" RnJvbSA2OWZjNThjZDk1YzU2NTUxOTMxNDQ3ZjJjNDdmNTBiMWNkYTM0Y2RlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBkYXRhQ29icmEgPGRhdGFjb2JyYUB0aGlua2JvdC5kZT4KRGF0 ZTogV2VkLCAxMiBKdW4gMjAyNCAwODowMzowNiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSB0 aHVuZGVyYmlyZDogdXBkYXRlIHRvIDExNS4xMS4xLgoKLS0tCiBzcmNwa2dzL3RodW5kZXJiaXJk L3BhdGNoZXMvcHl0aG9uMy4xMS5wYXRjaCAgfCAgIDEwIC0KIC4uLi9ydXN0MS43OC1wYWNrZWQt dG8tcG9ydGFibGVfc2ltZC5wYXRjaCAgICB8IDM1ODIgKysrKysrKysrKysrKysrKysKIC4uLi9w YXRjaGVzL3J1c3QxLjc4LXFjbXMtc3Rkc2ltZC5wYXRjaCAgICAgICB8ICAgNjQgKwogc3JjcGtn cy90aHVuZGVyYmlyZC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogNCBmaWxl cyBjaGFuZ2VkLCAzNjQ5IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvdGh1bmRlcmJpcmQvcGF0Y2hlcy9weXRob24zLjExLnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy90aHVuZGVyYmlyZC9wYXRjaGVzL3J1c3QxLjc4LXBh Y2tlZC10by1wb3J0YWJsZV9zaW1kLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy90 aHVuZGVyYmlyZC9wYXRjaGVzL3J1c3QxLjc4LXFjbXMtc3Rkc2ltZC5wYXRjaAoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvdGh1bmRlcmJpcmQvcGF0Y2hlcy9weXRob24zLjExLnBhdGNoIGIvc3JjcGtn cy90aHVuZGVyYmlyZC9wYXRjaGVzL3B5dGhvbjMuMTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDczMzE1MWI1M2JlMmU4Li4wMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L3RodW5kZXJiaXJkL3BhdGNoZXMvcHl0aG9uMy4xMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDEwICswLDAgQEAKLWRpZmYgLS1naXQgYS9tYWNoIGIvbWFjaAotaW5kZXggY2M1ZTI1YjdhYS4u MTY1ZjcwOGY1NCAxMDA3NTUKLS0tLSBhL21hY2gKLSsrKyBiL21hY2gKLUBAIC0xLDQgKzEsNCBA QAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSsjIS91c3IvYmluL2VudiBweXRob24zLjExCi0g IyBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1v emlsbGEgUHVibGljCi0gIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdh cyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCi0gIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUg YXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90aHVu ZGVyYmlyZC9wYXRjaGVzL3J1c3QxLjc4LXBhY2tlZC10by1wb3J0YWJsZV9zaW1kLnBhdGNoIGIv c3JjcGtncy90aHVuZGVyYmlyZC9wYXRjaGVzL3J1c3QxLjc4LXBhY2tlZC10by1wb3J0YWJsZV9z aW1kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lMDNm NTc3ZDAwOWEzMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvdGh1bmRlcmJpcmQvcGF0Y2hl cy9ydXN0MS43OC1wYWNrZWQtdG8tcG9ydGFibGVfc2ltZC5wYXRjaApAQCAtMCwwICsxLDM1ODIg QEAKK0FkYXB0ZWQgZnJvbSBodHRwczovL2hnLm1vemlsbGEub3JnL21vemlsbGEtY2VudHJhbC9y ZXYvMWRiMmVmMTI2YTZhCistLQorCisjIEhHIGNoYW5nZXNldCBwYXRjaAorIyBVc2VyIEhlbnJp IFNpdm9uZW4gPGhzaXZvbmVuQGhzaXZvbmVuLmZpPgorIyBEYXRlIDE3MTQ0NjIxODQgMAorIyBO b2RlIElEIDFkYjJlZjEyNmE2YTg1NTVkYmY1MDM0NWUxNjQ5MmM5NzdiNDJlOTIKKyMgUGFyZW50 ICBhNTQ1ZTg0YjM2NzRjNDg3OGYyZTYxOGI3YmNlMjMwNThmMmFjNjkwCitCdWcgMTg4MjIwOSAt IFVwZGF0ZSBlbmNvZGluZ19ycyB0byAwLjguMzQgdG8gZGVhbCB3aXRoIHJ1c3RjIGNoYW5nZXMu IHI9Z2xhbmRpdW0sc3VwcGx5LWNoYWluLXJldmlld2VycworCitEaWZmZXJlbnRpYWwgUmV2aXNp b246IGh0dHBzOi8vcGhhYnJpY2F0b3Iuc2VydmljZXMubW96aWxsYS5jb20vRDIwNzE2NworCitk aWZmIC0tZ2l0IGEvLmNhcmdvL2NvbmZpZy5pbiBiLy5jYXJnby9jb25maWcuaW4KKy0tLSBhLy5j YXJnby9jb25maWcuaW4KKysrKyBiLy5jYXJnby9jb25maWcuaW4KK0BAIC0zNSwzMSArMzUsMzEg QEAgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nZngtcnMvd2dwdSIKKyByZXYgPSAiZjcxYTFi YzczNmZkZTM3NTA5MjYyY2EwM2U5MWQ4ZjU2YTEzYWViNSIKKyByZXBsYWNlLXdpdGggPSAidmVu ZG9yZWQtc291cmNlcyIKKyAKKyBbc291cmNlLiJnaXQraHR0cHM6Ly9naXRodWIuY29tL2dsYW5k aXVtL3dhcnA/cmV2PTRhZjQ1ZmFlOTViYzk4YjBlYmExZWYwZGIxN2UxZGFjNDcxYmIyM2QiXQor IGdpdCA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2xhbmRpdW0vd2FycCIKKyByZXYgPSAiNGFmNDVm YWU5NWJjOThiMGViYTFlZjBkYjE3ZTFkYWM0NzFiYjIzZCIKKyByZXBsYWNlLXdpdGggPSAidmVu ZG9yZWQtc291cmNlcyIKKyAKKytbc291cmNlLiJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hzaXZv bmVuL2FueV9hbGxfd29ya2Fyb3VuZD9yZXY9N2ZiMWI3MDM0YzlmMTcyYWFkZTIxZWUxYzg1NTRl OGQ4YTQ4YWY4MCJdCisrZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9oc2l2b25lbi9hbnlfYWxs X3dvcmthcm91bmQiCisrcmV2ID0gIjdmYjFiNzAzNGM5ZjE3MmFhZGUyMWVlMWM4NTU0ZThkOGE0 OGFmODAiCisrcmVwbGFjZS13aXRoID0gInZlbmRvcmVkLXNvdXJjZXMiCisrCisgW3NvdXJjZS4i Z2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9oc2l2b25lbi9jaGFyZGV0bmc/cmV2PTM0ODRkM2UzZWJk Yzg5MzE0OTNhYTVkZjRkN2VlOTM2MGE5MGU3NmIiXQorIGdpdCA9ICJodHRwczovL2dpdGh1Yi5j b20vaHNpdm9uZW4vY2hhcmRldG5nIgorIHJldiA9ICIzNDg0ZDNlM2ViZGM4OTMxNDkzYWE1ZGY0 ZDdlZTkzNjBhOTBlNzZiIgorIHJlcGxhY2Utd2l0aCA9ICJ2ZW5kb3JlZC1zb3VyY2VzIgorIAor IFtzb3VyY2UuImdpdCtodHRwczovL2dpdGh1Yi5jb20vaHNpdm9uZW4vY2hhcmRldG5nX2M/cmV2 PWVkOGE0YzZmOTAwYTkwZDRkYmMxZDY0Yjg1NmU2MTQ5MGExYzM1NzAiXQorIGdpdCA9ICJodHRw czovL2dpdGh1Yi5jb20vaHNpdm9uZW4vY2hhcmRldG5nX2MiCisgcmV2ID0gImVkOGE0YzZmOTAw YTkwZDRkYmMxZDY0Yjg1NmU2MTQ5MGExYzM1NzAiCisgcmVwbGFjZS13aXRoID0gInZlbmRvcmVk LXNvdXJjZXMiCisgCistW3NvdXJjZS4iZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9oc2l2b25lbi9w YWNrZWRfc2ltZD9yZXY9ZTU4OGNlYjU2ODg3OGUxYTMxNTZlYTljZTU1MWQ1YjYzZWYwY2RjNCJd CistZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9oc2l2b25lbi9wYWNrZWRfc2ltZCIKKy1yZXYg PSAiZTU4OGNlYjU2ODg3OGUxYTMxNTZlYTljZTU1MWQ1YjYzZWYwY2RjNCIKKy1yZXBsYWNlLXdp dGggPSAidmVuZG9yZWQtc291cmNlcyIKKy0KKyBbc291cmNlLiJnaXQraHR0cHM6Ly9naXRodWIu Y29tL2pma3RoYW1lL21hcHBlZF9oeXBoLmdpdD9yZXY9Yzc2NTFhMGNmZmZmNDE5OTZhZDEzYzQ0 ZjY4OWJkOWNkMjE5MmMwMSJdCisgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qZmt0aGFtZS9t YXBwZWRfaHlwaC5naXQiCisgcmV2ID0gImM3NjUxYTBjZmZmZjQxOTk2YWQxM2M0NGY2ODliZDlj ZDIxOTJjMDEiCisgcmVwbGFjZS13aXRoID0gInZlbmRvcmVkLXNvdXJjZXMiCisgCisgW3NvdXJj ZS4iZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhLXNwaWRlcm1vbmtleS9qc3BhcmFndXM/ cmV2PTY0YmEwOGUyNDc0OTYxNmRlMjM0NDExMmYyMjZkMWVmNGJhODkzYWUiXQorIGdpdCA9ICJo dHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS1zcGlkZXJtb25rZXkvanNwYXJhZ3VzIgorIHJldiA9 ICI2NGJhMDhlMjQ3NDk2MTZkZTIzNDQxMTJmMjI2ZDFlZjRiYTg5M2FlIgorZGlmZiAtLWdpdCBh L0NhcmdvLmxvY2sgYi9DYXJnby5sb2NrCistLS0gYS9DYXJnby5sb2NrCisrKysgYi9DYXJnby5s b2NrCitAQCAtODAsMTYgKzgwLDI1IEBAIGRlcGVuZGVuY2llcyA9IFsKKyBuYW1lID0gImFuZHJv aWRfc3lzdGVtX3Byb3BlcnRpZXMiCisgdmVyc2lvbiA9ICIwLjEuNSIKKyBzb3VyY2UgPSAicmVn aXN0cnkraHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy9jcmF0ZXMuaW8taW5kZXgiCisgY2hl Y2tzdW0gPSAiODE5ZTcyMTlkYmQ0MTA0M2FjMjc5YjE5ODMwZjJlZmM4OTcxNTY0OTBkN2ZkNmVh OTE2NzIwMTE3ZWU2NjMxMSIKKyBkZXBlbmRlbmNpZXMgPSBbCisgICJsaWJjIiwKKyBdCisgCisr W1twYWNrYWdlXV0KKytuYW1lID0gImFueV9hbGxfd29ya2Fyb3VuZCIKKyt2ZXJzaW9uID0gIjAu MS4wIgorK3NvdXJjZSA9ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2hzaXZvbmVuL2FueV9hbGxf d29ya2Fyb3VuZD9yZXY9N2ZiMWI3MDM0YzlmMTcyYWFkZTIxZWUxYzg1NTRlOGQ4YTQ4YWY4MCM3 ZmIxYjcwMzRjOWYxNzJhYWRlMjFlZTFjODU1NGU4ZDhhNDhhZjgwIgorK2RlcGVuZGVuY2llcyA9 IFsKKysgImNmZy1pZiAxLjAuMCIsCisrICJ2ZXJzaW9uX2NoZWNrIiwKKytdCisrCisgW1twYWNr YWdlXV0KKyBuYW1lID0gImFueWhvdyIKKyB2ZXJzaW9uID0gIjEuMC42OSIKKyBzb3VyY2UgPSAi cmVnaXN0cnkraHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy9jcmF0ZXMuaW8taW5kZXgiCisg Y2hlY2tzdW0gPSAiMjI0YWZiZDcyN2MzZDZlNGI5MDEwM2VjZTY0YjhkMWI2N2ZiYjE5NzNiMTA0 NmMyMjgxZWVkM2YzODAzZjgwMCIKKyAKKyBbW3BhY2thZ2VdXQorIG5hbWUgPSAiYXBwX3NlcnZp Y2VzX2xvZ2dlciIKK0BAIC0xNDMxLDIyICsxNDQwLDIyIEBAIGRlcGVuZGVuY2llcyA9IFsKKyAg ImVuY29kaW5nX3JzIiwKKyAgIm5zZXJyb3IiLAorICAibnNzdHJpbmciLAorICAieG1sZGVjbCIs CisgXQorIAorIFtbcGFja2FnZV1dCisgbmFtZSA9ICJlbmNvZGluZ19ycyIKKy12ZXJzaW9uID0g IjAuOC4zMyIKKyt2ZXJzaW9uID0gIjAuOC4zNCIKKyBzb3VyY2UgPSAicmVnaXN0cnkraHR0cHM6 Ly9naXRodWIuY29tL3J1c3QtbGFuZy9jcmF0ZXMuaW8taW5kZXgiCistY2hlY2tzdW0gPSAiNzI2 OGIzODYyOTZhMDI1ZTQ3NGQ1MTQwNjc4Zjc1ZDZkZTk0OTNhZTU1YTVkNzA5ZWViOWRkMDgxNDk5 NDVlMSIKKytjaGVja3N1bSA9ICJiNDVkZTkwNGFhMGIwMTBiY2UyYWI0NTI2NGQwNjMxNjgxODQ3 ZmE3YjZmMmVhYTdkYWI3NjE5OTQzYmM0ZjU5IgorIGRlcGVuZGVuY2llcyA9IFsKKysgImFueV9h bGxfd29ya2Fyb3VuZCIsCisgICJjZmctaWYgMS4wLjAiLAorLSAicGFja2VkX3NpbWQiLAorIF0K KyAKKyBbW3BhY2thZ2VdXQorIG5hbWUgPSAiZW51bS1wcmltaXRpdmUtZGVyaXZlIgorIHZlcnNp b24gPSAiMC4yLjIiCisgc291cmNlID0gInJlZ2lzdHJ5K2h0dHBzOi8vZ2l0aHViLmNvbS9ydXN0 LWxhbmcvY3JhdGVzLmlvLWluZGV4IgorIGNoZWNrc3VtID0gImMzNzViOWM1ZWFkYjY4ZDBhNmVm ZWUyOTk5ZmVmMjkyZjQ1ODU0YzM0NDRjODZmMDlkOGFiMDg2YmE5NDJiMGUiCisgZGVwZW5kZW5j aWVzID0gWworQEAgLTM5MDEsMjUgKzM5MTAsMTYgQEAgY2hlY2tzdW0gPSAiOGQ5MWVkZjRmYmI5 NzAyNzk0NDM0NzEzNDVhNGU4YzQ5MWJmMDViYjI4M2IzZTZjODhlNGU2MDZmZDhjMTgxYiIKKyBb W3BhY2thZ2VdXQorIG5hbWUgPSAib3hpbGFuZ3RhZy1mZmkiCisgdmVyc2lvbiA9ICIwLjEuMCIK KyBkZXBlbmRlbmNpZXMgPSBbCisgICJuc3N0cmluZyIsCisgICJveGlsYW5ndGFnIiwKKyBdCisg CistW1twYWNrYWdlXV0KKy1uYW1lID0gInBhY2tlZF9zaW1kIgorLXZlcnNpb24gPSAiMC4zLjki Cistc291cmNlID0gImdpdCtodHRwczovL2dpdGh1Yi5jb20vaHNpdm9uZW4vcGFja2VkX3NpbWQ/ cmV2PWU1ODhjZWI1Njg4NzhlMWEzMTU2ZWE5Y2U1NTFkNWI2M2VmMGNkYzQjZTU4OGNlYjU2ODg3 OGUxYTMxNTZlYTljZTU1MWQ1YjYzZWYwY2RjNCIKKy1kZXBlbmRlbmNpZXMgPSBbCistICJjZmct aWYgMS4wLjAiLAorLSAibnVtLXRyYWl0cyIsCistXQorLQorIFtbcGFja2FnZV1dCisgbmFtZSA9 ICJwYXJraW5nX2xvdCIKKyB2ZXJzaW9uID0gIjAuMTEuMiIKKyBzb3VyY2UgPSAicmVnaXN0cnkr aHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy9jcmF0ZXMuaW8taW5kZXgiCisgY2hlY2tzdW0g PSAiN2QxN2I3ODAzNmE2MDY2M2I3OTdhZGVhZWU0NmY1YzlkZmViYjg2OTQ4ZDEyNTUwMDdhMWQ2 YmUwMjcxZmY5OSIKKyBkZXBlbmRlbmNpZXMgPSBbCisgICJpbnN0YW50IiwKKyAgImxvY2tfYXBp IiwKK2RpZmYgLS1naXQgYS9DYXJnby50b21sIGIvQ2FyZ28udG9tbAorLS0tIGEvQ2FyZ28udG9t bAorKysrIGIvQ2FyZ28udG9tbAorQEAgLTE1NCwyMiArMTU0LDIyIEBAIHJ1cmUgPSB7IHBhdGgg PSAidGhpcmRfcGFydHkvcnVzdC9ydXJlIiB9CisgCisgIyAwLjMxLjEgYnV0IHdpdGhvdXQgcnVz dC1jc3NwYXJzZXIjMzQyLgorICMgVE9ETzogUmVtb3ZlIHRoZXNlLCBhbmQganVzdCB1c2UgdjAu MzEuMSBvbmNlIGJ1ZyAxODM2MjE5IGxhbmRzCisgIyAod2hpY2ggd2lsbCBnZXQgc3luIDIgaW50 byB0aGUgdHJlZSkuCisgY3NzcGFyc2VyID0geyBwYXRoID0gInRoaXJkX3BhcnR5L3J1c3QvY3Nz cGFyc2VyIiB9CisgY3NzcGFyc2VyLW1hY3JvcyA9IHsgcGF0aCA9ICJ0aGlyZF9wYXJ0eS9ydXN0 L2Nzc3BhcnNlci1tYWNyb3MiIH0KKyAKKyAjIE90aGVyIG92ZXJyaWRlcworK2FueV9hbGxfd29y a2Fyb3VuZCA9IHsgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9oc2l2b25lbi9hbnlfYWxsX3dv cmthcm91bmQiLCByZXYgPSAiN2ZiMWI3MDM0YzlmMTcyYWFkZTIxZWUxYzg1NTRlOGQ4YTQ4YWY4 MCIgfQorIGNoYXJkZXRuZyA9IHsgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9oc2l2b25lbi9j aGFyZGV0bmciLCByZXY9IjM0ODRkM2UzZWJkYzg5MzE0OTNhYTVkZjRkN2VlOTM2MGE5MGU3NmIi IH0KKyBjaGFyZGV0bmdfYyA9IHsgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9oc2l2b25lbi9j aGFyZGV0bmdfYyIsIHJldj0iZWQ4YTRjNmY5MDBhOTBkNGRiYzFkNjRiODU2ZTYxNDkwYTFjMzU3 MCIgfQorIGNvcmVtaWRpID0geyBnaXQgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NocmlzLXplbi9j b3JlbWlkaS5naXQiLCByZXY9ImZjNjg0NjRiNTQ0NWNhZjExMWU0MWY2NDNhMmU2OWNjY2UwYjRm ODMiIH0KKyBmaXJlZm94LW9uLWdsZWFuID0geyBwYXRoID0gInRvb2xraXQvY29tcG9uZW50cy9n bGVhbi9hcGkiIH0KKyBsaWJ1ZGV2LXN5cyA9IHsgcGF0aCA9ICJkb20vd2ViYXV0aG4vbGlidWRl di1zeXMiIH0KKy1wYWNrZWRfc2ltZCA9IHsgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9oc2l2 b25lbi9wYWNrZWRfc2ltZCIsIHJldiA9ICJlNTg4Y2ViNTY4ODc4ZTFhMzE1NmVhOWNlNTUxZDVi NjNlZjBjZGM0IiB9CisgbWlkaXIgPSB7IGdpdCA9ICJodHRwczovL2dpdGh1Yi5jb20vbW96aWxs YS9taWRpci5naXQiLCByZXYgPSAiNTE5ZTY1MTI0MWU4NjdhZjMzOTFkYjA4ZjlhZTY0MDBiYzAy M2UxOCIgfQorICMgd2FycCAwLjMuMyArIGh0dHBzOi8vZ2l0aHViLmNvbS9zZWFubW9uc3Rhci93 YXJwL3B1bGwvMTAwNworIHdhcnAgPSB7IGdpdCA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2xhbmRp dW0vd2FycCIsIHJldiA9ICI0YWY0NWZhZTk1YmM5OGIwZWJhMWVmMGRiMTdlMWRhYzQ3MWJiMjNk IiB9CisgCisgIyBhcHBsaWNhdGlvbi1zZXJ2aWNlcyBvdmVycmlkZXMgdG8gbWFrZSB1cGRhdGlu ZyB0aGVtIGFsbCBzaW1wbGVyLgorIGludGVycnVwdC1zdXBwb3J0ID0geyBnaXQgPSAiaHR0cHM6 Ly9naXRodWIuY29tL21vemlsbGEvYXBwbGljYXRpb24tc2VydmljZXMiLCByZXYgPSAiODZjODRj MjE3MDM2YzEyMjgzZDE5MzY4ODY3MzIzYTY2YmYzNTg4MyIgfQorIHNxbC1zdXBwb3J0ID0geyBn aXQgPSAiaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvYXBwbGljYXRpb24tc2VydmljZXMiLCBy ZXYgPSAiODZjODRjMjE3MDM2YzEyMjgzZDE5MzY4ODY3MzIzYTY2YmYzNTg4MyIgfQorIHN5bmMx NSA9IHsgZ2l0ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2FwcGxpY2F0aW9uLXNlcnZp Y2VzIiwgcmV2ID0gIjg2Yzg0YzIxNzAzNmMxMjI4M2QxOTM2ODg2NzMyM2E2NmJmMzU4ODMiIH0K K2RpZmYgLS1naXQgYS9jb25maWcvbWFrZWZpbGVzL3J1c3QubWsgYi9jb25maWcvbWFrZWZpbGVz L3J1c3QubWsKKy0tLSBhL2NvbmZpZy9tYWtlZmlsZXMvcnVzdC5taworKysrIGIvY29uZmlnL21h a2VmaWxlcy9ydXN0Lm1rCitAQCAtMjYwLDE3ICsyNjAsMTcgQEAgZXhwb3J0IENPUkVBVURJT19T REtfUEFUSD0kKElQSE9ORU9TX1NESworIGV4cG9ydCBJUEhPTkVPU19TREtfRElSCisgUEFUSCA6 PSAkKHRvcHNyY2RpcikvYnVpbGQvbWFjb3N4OiQoUEFUSCkKKyBlbmRpZgorIGVuZGlmCisgCisg aWZuZGVmIFJVU1RDX0JPT1RTVFJBUAorIFJVU1RDX0JPT1RTVFJBUCA6PSBtb3pnbHVlX3N0YXRp YyxxY21zCisgaWZkZWYgTU9aX1JVU1RfU0lNRAorLVJVU1RDX0JPT1RTVFJBUCA6PSAkKFJVU1RD X0JPT1RTVFJBUCksZW5jb2RpbmdfcnMscGFja2VkX3NpbWQKKytSVVNUQ19CT09UU1RSQVAgOj0g JChSVVNUQ19CT09UU1RSQVApLGVuY29kaW5nX3JzLGFueV9hbGxfd29ya2Fyb3VuZAorIGVuZGlm CisgZXhwb3J0IFJVU1RDX0JPT1RTVFJBUAorIGVuZGlmCisgCisgdGFyZ2V0X3J1c3RfbHRvYWJs ZSA6PSBmb3JjZS1jYXJnby1saWJyYXJ5LWJ1aWxkICQoQUREX1JVU1RfTFRPQUJMRSkKKyB0YXJn ZXRfcnVzdF9ub25sdG9hYmxlIDo9IGZvcmNlLWNhcmdvLXRlc3QtcnVuIGZvcmNlLWNhcmdvLXBy b2dyYW0tYnVpbGQKKyAKKyBpZmRlZiBNT1pfUEdPX1JVU1QKK2RpZmYgLS1naXQgYS9zdXBwbHkt Y2hhaW4vYXVkaXRzLnRvbWwgYi9zdXBwbHktY2hhaW4vYXVkaXRzLnRvbWwKKy0tLSBhL3N1cHBs eS1jaGFpbi9hdWRpdHMudG9tbAorKysrIGIvc3VwcGx5LWNoYWluL2F1ZGl0cy50b21sCitAQCAt NTk2LDE2ICs1OTYsMjkgQEAgd2hvID0gIk1pa2UgSG9tbWV5IDxtaCttb3ppbGxhQGdsYW5kaXVt LgorIGNyaXRlcmlhID0gInNhZmUtdG8tZGVwbG95IgorIGRlbHRhID0gIjAuMS4yIC0+IDAuMS40 IgorIAorIFtbYXVkaXRzLmFuZHJvaWRfc3lzdGVtX3Byb3BlcnRpZXNdXQorIHdobyA9ICJNaWtl IEhvbW1leSA8bWgrbW96aWxsYUBnbGFuZGl1bS5vcmc+IgorIGNyaXRlcmlhID0gInNhZmUtdG8t ZGVwbG95IgorIGRlbHRhID0gIjAuMS40IC0+IDAuMS41IgorIAorK1tbYXVkaXRzLmFueV9hbGxf d29ya2Fyb3VuZF1dCisrd2hvID0gIkhlbnJpIFNpdm9uZW4gPGhzaXZvbmVuQGhzaXZvbmVuLmZp PiIKKytjcml0ZXJpYSA9ICJzYWZlLXRvLWRlcGxveSIKKyt2ZXJzaW9uID0gIjAuMS4wIgorK25v dGVzID0gIlRoZSBsaXR0bGUgY29kZSB0aGF0IGlzIGluIHRoaXMgY3JhdGUgSSByZXZpZXdlZCBh bmQgbW9kaWZpZWQgZnJvbSBwYWNrZWRfc2ltZCAod2hpY2ggaGFzIHByZXZpb3VzbHkgYmVlbiB2 ZW5kb3JlZCBpbiBmdWxsIGluc3RlYWQgb2YganVzdCB0aGlzIHNtYWxsIHBhcnQpLiIKKysKKytb W2F1ZGl0cy5hbnlfYWxsX3dvcmthcm91bmRdXQorK3dobyA9ICJIZW5yaSBTaXZvbmVuIDxoc2l2 b25lbkBoc2l2b25lbi5maT4iCisrY3JpdGVyaWEgPSAic2FmZS10by1kZXBsb3kiCisrZGVsdGEg PSAiMC4xLjAgLT4gMC4xLjBAZ2l0OjdmYjFiNzAzNGM5ZjE3MmFhZGUyMWVlMWM4NTU0ZThkOGE0 OGFmODAiCisraW1wb3J0YWJsZSA9IGZhbHNlCisrbm90ZXMgPSAiVGhpcyBpcyBhIHRyaXZpYWwg d29ya2Fyb3VuZCBjb3BpZWQgZnJvbSBlbHNld2hlcmUgaW4gbS1jLCBzcGVjaWZpY2FsbHkgcWNt cy4iCisrCisgW1thdWRpdHMuYW55aG93XV0KKyB3aG8gPSAiTWlrZSBIb21tZXkgPG1oK21vemls bGFAZ2xhbmRpdW0ub3JnPiIKKyBjcml0ZXJpYSA9ICJzYWZlLXRvLWRlcGxveSIKKyBkZWx0YSA9 ICIxLjAuNTcgLT4gMS4wLjYxIgorIAorIFtbYXVkaXRzLmFueWhvd11dCisgd2hvID0gIkJvYmJ5 IEhvbGxleSA8Ym9iYnlob2xsZXlAZ21haWwuY29tPiIKKyBjcml0ZXJpYSA9ICJzYWZlLXRvLWRl cGxveSIKK2RpZmYgLS1naXQgYS9zdXBwbHktY2hhaW4vY29uZmlnLnRvbWwgYi9zdXBwbHktY2hh aW4vY29uZmlnLnRvbWwKKy0tLSBhL3N1cHBseS1jaGFpbi9jb25maWcudG9tbAorKysrIGIvc3Vw cGx5LWNoYWluL2NvbmZpZy50b21sCitAQCAtMTQsMTYgKzE0LDIwIEBAIHVybCA9ICJodHRwczov L3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20KKyB1cmwgPSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNl cmNvbnRlbnQuY29tL2dvb2dsZS9zdXBwbHktY2hhaW4vbWFpbi9hdWRpdHMudG9tbCIKKyAKKyBb aW1wb3J0cy5pc3JnXQorIHVybCA9ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20v ZGl2dml1cC9saWJwcmlvLXJzL21haW4vc3VwcGx5LWNoYWluL2F1ZGl0cy50b21sIgorIAorIFtp bXBvcnRzLm1vemlsbGFdCisgdXJsID0gImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNv bS9tb3ppbGxhL3N1cHBseS1jaGFpbi9tYWluL2F1ZGl0cy50b21sIgorIAorK1twb2xpY3kuYW55 X2FsbF93b3JrYXJvdW5kXQorK2F1ZGl0LWFzLWNyYXRlcy1pbyA9IHRydWUKKytub3RlcyA9ICJU aGlzIGlzIHRoZSB1cHN0cmVhbSBjb2RlIHBsdXMgdGhlIEFSTSBpbnRyaW5zaWNzIHdvcmthcm91 bmQgZnJvbSBxY21zLCBzZWUgYnVnIDE4ODIyMDkuIgorKworIFtwb2xpY3kuYXV0b2NmZ10KKyBh dWRpdC1hcy1jcmF0ZXMtaW8gPSB0cnVlCisgbm90ZXMgPSAiVGhpcyBpcyB0aGUgdXBzdHJlYW0g Y29kZSBwbHVzIGEgZmV3IGxvY2FsIGZpeGVzLCBzZWUgYnVnIDE2ODU2OTcuIgorIAorIFtwb2xp Y3kuY2hhcmRldG5nXQorIGF1ZGl0LWFzLWNyYXRlcy1pbyA9IHRydWUKKyBub3RlcyA9ICJUaGlz IGlzIGEgY3JhdGUgSGVucmkgd3JvdGUgd2hpY2ggaXMgYWxzbyBwdWJsaXNoZWQuIFdlIHNob3Vs ZCBwcm9iYWJseSB1cGRhdGUgRmlyZWZveCB0byB0aXAgYW5kIGNlcnRpZnkgdGhhdC4iCisgCitk aWZmIC0tZ2l0IGEvc3VwcGx5LWNoYWluL2ltcG9ydHMubG9jayBiL3N1cHBseS1jaGFpbi9pbXBv cnRzLmxvY2sKKy0tLSBhL3N1cHBseS1jaGFpbi9pbXBvcnRzLmxvY2sKKysrKyBiL3N1cHBseS1j aGFpbi9pbXBvcnRzLmxvY2sKK0BAIC0xMTUsMTYgKzExNSwyMyBAQCB1c2VyLW5hbWUgPSAiRGF2 aWQgVG9sbmF5IgorIAorIFtbcHVibGlzaGVyLmVuY29kaW5nX3JzXV0KKyB2ZXJzaW9uID0gIjAu OC4zMyIKKyB3aGVuID0gIjIwMjMtMDgtMjMiCisgdXNlci1pZCA9IDQ0ODQKKyB1c2VyLWxvZ2lu ID0gImhzaXZvbmVuIgorIHVzZXItbmFtZSA9ICJIZW5yaSBTaXZvbmVuIgorIAorK1tbcHVibGlz aGVyLmVuY29kaW5nX3JzXV0KKyt2ZXJzaW9uID0gIjAuOC4zNCIKKyt3aGVuID0gIjIwMjQtMDQt MTAiCisrdXNlci1pZCA9IDQ0ODQKKyt1c2VyLWxvZ2luID0gImhzaXZvbmVuIgorK3VzZXItbmFt ZSA9ICJIZW5yaSBTaXZvbmVuIgorKworIFtbcHVibGlzaGVyLmV0YWdlcmVdXQorIHZlcnNpb24g PSAiMC4yLjciCisgd2hlbiA9ICIyMDIyLTA1LTA0IgorIHVzZXItaWQgPSAxMjgxCisgdXNlci1s b2dpbiA9ICJuaWNhbCIKKyB1c2VyLW5hbWUgPSAiTmljb2xhcyBTaWx2YSIKKyAKKyBbW3B1Ymxp c2hlci5ldWNsaWRdXQorZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1c3QvYW55X2FsbF93b3Jr YXJvdW5kLy5jYXJnby1jaGVja3N1bS5qc29uIGIvdGhpcmRfcGFydHkvcnVzdC9hbnlfYWxsX3dv cmthcm91bmQvLmNhcmdvLWNoZWNrc3VtLmpzb24KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0g L2Rldi9udWxsCisrKysgYi90aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29ya2Fyb3VuZC8uY2Fy Z28tY2hlY2tzdW0uanNvbgorQEAgLTAsMCArMSwxIEBACisreyJmaWxlcyI6eyJDYXJnby50b21s IjoiZjhjMTI3NDQ5ZGM5NDMyZDQwNGMyMWM5OTgzM2U0NjE3YWI4OGE3OTc0NDVhZjI0OWE3ZmUz Yzk4OTk4NWQ2ZCIsIkxJQ0VOU0UtQVBBQ0hFIjoiYTYwZWVhODE3NTE0NTMxNjY4ZDdlMDA3NjU3 MzE0NDlmZTE0ZDA1OWQzMjQ5ZTBiYzkzYjM2ZGU0NWY3NTlmMiIsIkxJQ0VOU0UtTUlUIjoiNjQ4 NWI4ZWQzMTBkM2YwMzQwYmYxYWQxZjQ3NjQ1MDY5Y2U0MDY5ZGNjNmJiNDZjN2Q1YzZmYWY0MWRl MWZkYiIsIkxJQ0VOU0UtTUlULVFDTVMiOiIzNmQ4NDdhZTg4MmY2NTc0ZWJjNzJmNTZhNGYzNTRl NGYxMDRmZGU0YTU4NDM3MzQ5NjQ4MmU5N2Q1MmQzMWJjIiwiUkVBRE1FLm1kIjoiNGM2MTdiOGNl ZDNhMjdiN2VkZWNmMGU1ZTQxZWQ0NTFjMDRlODhkYWI1MjllN2EzNWZjY2M0ZTE1NTFlZmJkNyIs ImJ1aWxkLnJzIjoiNTZiMjlhYjZkYTNlNDkwNzViZmQwYTdiNjkwMjY3YzgwMTYyOThiZjBkMzMy ZTJlNjhiYmFmMTlkZWNiYmY3MSIsInNyYy9saWIucnMiOiI3MTE4MTA2NjkwYjlkMjVjNWQwYTNl MjA3OWZlYjgzZDc2ZjFkNDM0ZDBkYTM2YjlkMDM1MTgwNmQyN2M4NTBkIn0sInBhY2thZ2UiOm51 bGx9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0 eS9ydXN0L2FueV9hbGxfd29ya2Fyb3VuZC9DYXJnby50b21sIGIvdGhpcmRfcGFydHkvcnVzdC9h bnlfYWxsX3dvcmthcm91bmQvQ2FyZ28udG9tbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAv ZGV2L251bGwKKysrKyBiL3RoaXJkX3BhcnR5L3J1c3QvYW55X2FsbF93b3JrYXJvdW5kL0Nhcmdv LnRvbWwKK0BAIC0wLDAgKzEsMjggQEAKKysjIFRISVMgRklMRSBJUyBBVVRPTUFUSUNBTExZIEdF TkVSQVRFRCBCWSBDQVJHTworKyMKKysjIFdoZW4gdXBsb2FkaW5nIGNyYXRlcyB0byB0aGUgcmVn aXN0cnkgQ2FyZ28gd2lsbCBhdXRvbWF0aWNhbGx5CisrIyAibm9ybWFsaXplIiBDYXJnby50b21s IGZpbGVzIGZvciBtYXhpbWFsIGNvbXBhdGliaWxpdHkKKysjIHdpdGggYWxsIHZlcnNpb25zIG9m IENhcmdvIGFuZCBhbHNvIHJld3JpdGUgYHBhdGhgIGRlcGVuZGVuY2llcworKyMgdG8gcmVnaXN0 cnkgKGUuZy4sIGNyYXRlcy5pbykgZGVwZW5kZW5jaWVzLgorKyMKKysjIElmIHlvdSBhcmUgcmVh ZGluZyB0aGlzIGZpbGUgYmUgYXdhcmUgdGhhdCB0aGUgb3JpZ2luYWwgQ2FyZ28udG9tbAorKyMg d2lsbCBsaWtlbHkgbG9vayB2ZXJ5IGRpZmZlcmVudCAoYW5kIG11Y2ggbW9yZSByZWFzb25hYmxl KS4KKysjIFNlZSBDYXJnby50b21sLm9yaWcgZm9yIHRoZSBvcmlnaW5hbCBjb250ZW50cy4KKysK KytbcGFja2FnZV0KKytlZGl0aW9uID0gIjIwMjEiCisrbmFtZSA9ICJhbnlfYWxsX3dvcmthcm91 bmQiCisrdmVyc2lvbiA9ICIwLjEuMCIKKythdXRob3JzID0gWyJIZW5yaSBTaXZvbmVuIDxoc2l2 b25lbkBoc2l2b25lbi5maT4iXQorK2Rlc2NyaXB0aW9uID0gIldvcmthcm91bmQgZm9yIGJhZCBM TFZNIGNvZGVnZW4gZm9yIGJvb2xlYW4gcmVkdWN0aW9ucyBvbiAzMi1iaXQgQVJNIgorK2hvbWVw YWdlID0gImh0dHBzOi8vZG9jcy5ycy9hbnlfYWxsX3dvcmthcm91bmQvIgorK2RvY3VtZW50YXRp b24gPSAiaHR0cHM6Ly9kb2NzLnJzL2FueV9hbGxfd29ya2Fyb3VuZC8iCisrcmVhZG1lID0gIlJF QURNRS5tZCIKKytsaWNlbnNlID0gIk1JVCBPUiBBcGFjaGUtMi4wIgorK3JlcG9zaXRvcnkgPSAi aHR0cHM6Ly9naXRodWIuY29tL2hzaXZvbmVuL2FueV9hbGxfd29ya2Fyb3VuZCIKKysKKytbZGVw ZW5kZW5jaWVzXQorK2NmZy1pZiA9ICIxLjAiCisrCisrW2J1aWxkLWRlcGVuZGVuY2llc10KKyt2 ZXJzaW9uX2NoZWNrID0gIjAuOSIKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L3BhY2tl ZF9zaW1kL0xJQ0VOU0UtQVBBQ0hFIGIvdGhpcmRfcGFydHkvcnVzdC9hbnlfYWxsX3dvcmthcm91 bmQvTElDRU5TRS1BUEFDSEUKK3JlbmFtZSBmcm9tIHRoaXJkX3BhcnR5L3J1c3QvcGFja2VkX3Np bWQvTElDRU5TRS1BUEFDSEUKK3JlbmFtZSB0byB0aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29y a2Fyb3VuZC9MSUNFTlNFLUFQQUNIRQorZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1c3QvcGFj a2VkX3NpbWQvTElDRU5TRS1NSVQgYi90aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29ya2Fyb3Vu ZC9MSUNFTlNFLU1JVAorcmVuYW1lIGZyb20gdGhpcmRfcGFydHkvcnVzdC9wYWNrZWRfc2ltZC9M SUNFTlNFLU1JVAorcmVuYW1lIHRvIHRoaXJkX3BhcnR5L3J1c3QvYW55X2FsbF93b3JrYXJvdW5k L0xJQ0VOU0UtTUlUCitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcnVzdC9hbnlfYWxsX3dvcmth cm91bmQvTElDRU5TRS1NSVQtUUNNUyBiL3RoaXJkX3BhcnR5L3J1c3QvYW55X2FsbF93b3JrYXJv dW5kL0xJQ0VOU0UtTUlULVFDTVMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxs CisrKysgYi90aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29ya2Fyb3VuZC9MSUNFTlNFLU1JVC1R Q01TCitAQCAtMCwwICsxLDIxIEBACisrcWNtcworK0NvcHlyaWdodCAoQykgMjAwOS0yMDI0IE1v emlsbGEgQ29ycG9yYXRpb24KKytDb3B5cmlnaHQgKEMpIDE5OTgtMjAwNyBNYXJ0aSBNYXJpYQor KworK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyAKKythIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIAorK3RvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24gCisrdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIAorK2FuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSAKKytpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKwor K1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo YWxsIGJlIGluY2x1ZGVkIGluIAorK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlIFNvZnR3YXJlLgorKworK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCAKKytFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gCisrVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgCisrTk9OSU5GUklOR0VN RU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSAKKytMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIAorK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiAKKytXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KK2RpZmYgLS1naXQg YS90aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29ya2Fyb3VuZC9SRUFETUUubWQgYi90aGlyZF9w YXJ0eS9ydXN0L2FueV9hbGxfd29ya2Fyb3VuZC9SRUFETUUubWQKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CistLS0gL2Rldi9udWxsCisrKysgYi90aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29ya2Fy b3VuZC9SRUFETUUubWQKK0BAIC0wLDAgKzEsMTMgQEAKKysjIGFueV9hbGxfd29ya2Fyb3VuZAor KworK1RoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBiYWQgY29kZWdlbiAoW1J1c3QgYnVnXShodHRw czovL2dpdGh1Yi5jb20vcnVzdC1sYW5nL3BvcnRhYmxlLXNpbWQvaXNzdWVzLzE0NiksIFtMTFZN IGJ1Z10oaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2lzc3Vlcy81MDQ2Nikp IGZvciB0aGUgYGFueSgpYCBhbmQgYGFsbCgpYCByZWR1Y3Rpb25zIGZvciBORU9OLWJhY2tlZCBT SU1EIHZlY3RvcnMgb24gMzItYml0IEFSTS4gT24gb3RoZXIgcGxhdGZvcm1zIHRoZXNlIGRlbGVn YXRlIHRvIGBhbnkoKWAgYW5kIGBhbGwoKWAgaW4gYGNvcmU6OnNpbWRgLgorKworK1RoZSBwbGFu IGlzIHRvIGFiYW5kb24gdGhpcyBjcmF0ZSBvbmNlIHRoZSBMTFZNIGJ1ZyBpcyBmaXhlZCBvciBg Y29yZTo6c2ltZGAgd29ya3MgYXJvdW5kIHRoZSBMTFZNIGJ1Zy4KKysKKytUaGUgY29kZSBpcyBm b3JrZWQgZnJvbSB0aGUgW2BwYWNrZWRfc2ltZGAgY3JhdGVdKGh0dHBzOi8vcmF3LmdpdGh1YnVz ZXJjb250ZW50LmNvbS9oc2l2b25lbi9wYWNrZWRfc2ltZC9kOTM4ZTM5YmVlOWJjNWMyMjJmNWYy ZjJhMGRmOWU1M2I1Y2UzNmFlL3NyYy9jb2RlZ2VuL3JlZHVjdGlvbnMvbWFzay9hcm0ucnMpLgor KworK1RoaXMgY3JhdGUgcmVxdWlyZXMgTmlnaHRseSBSdXN0IGFzIGl0IGRlcGVuZHMgb24gdGhl IGBwb3J0YWJsZV9zaW1kYCBmZWF0dXJlLgorKworKyMgTGljZW5zZQorKworK2BNSVQgT1IgQXBh Y2hlLTIuMGAsIHNpbmNlIHRoYXQncyBob3cgYHBhY2tlZF9zaW1kYCBpcyBsaWNlbnNlZC4gKFRo ZSBBUk0gaW50cmluc2ljcyBSdXN0IHZlcnNpb24gd29ya2Fyb3VuZCBpcyBmcm9tIHFjbXMsIHNl ZSBMSUNFTlNFLU1JVC1RQ01TLikKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2FueV9h bGxfd29ya2Fyb3VuZC9idWlsZC5ycyBiL3RoaXJkX3BhcnR5L3J1c3QvYW55X2FsbF93b3JrYXJv dW5kL2J1aWxkLnJzCituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIv dGhpcmRfcGFydHkvcnVzdC9hbnlfYWxsX3dvcmthcm91bmQvYnVpbGQucnMKK0BAIC0wLDAgKzEs NyBAQAorK2V4dGVybiBjcmF0ZSB2ZXJzaW9uX2NoZWNrIGFzIHJ1c3RjOworKworK2ZuIG1haW4o KSB7CisrICAgIGlmIHJ1c3RjOjppc19taW5fdmVyc2lvbigiMS43OC4wIikudW53cmFwX29yKGZh bHNlKSB7CisrICAgICAgICBwcmludGxuISgiY2FyZ286cnVzdGMtY2ZnPXN0ZHNpbWRfc3BsaXQi KTsKKysgICAgfQorK30KK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2FueV9hbGxfd29y a2Fyb3VuZC9zcmMvbGliLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9hbnlfYWxsX3dvcmthcm91bmQv c3JjL2xpYi5ycworbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL3Ro aXJkX3BhcnR5L3J1c3QvYW55X2FsbF93b3JrYXJvdW5kL3NyYy9saWIucnMKK0BAIC0wLDAgKzEs MTEwIEBACisrLy8gVGhpcyBjb2RlIGJlZ2FuIGFzIGEgZm9yayBvZgorKy8vIGh0dHBzOi8vcmF3 LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ydXN0LWxhbmcvcGFja2VkX3NpbWQvZDkzOGUzOWJlZTli YzVjMjIyZjVmMmYyYTBkZjllNTNiNWNlMzZhZS9zcmMvY29kZWdlbi9yZWR1Y3Rpb25zL21hc2sv YXJtLnJzCisrLy8gd2hpY2ggZGlkbid0IGhhdmUgYSBsaWNlbnNlIGhlYWRlciBvbiB0aGUgZmls ZSwgYnV0IENhcmdvLnRvbWwgc2FpZCAiTUlUIE9SIEFwYWNoZS0yLjAiLgorKy8vIFNlZSBMSUNF TlNFLU1JVCBhbmQgTElDRU5TRS1BUEFDSEUuCisrCisrIyFbbm9fc3RkXQorKyMhW2ZlYXR1cmUo cG9ydGFibGVfc2ltZCldCisrIyFbY2ZnX2F0dHIoCisrICAgIGFsbCgKKysgICAgICAgIHN0ZHNp bWRfc3BsaXQsCisrICAgICAgICB0YXJnZXRfYXJjaCA9ICJhcm0iLAorKyAgICAgICAgdGFyZ2V0 X2VuZGlhbiA9ICJsaXR0bGUiLAorKyAgICAgICAgdGFyZ2V0X2ZlYXR1cmUgPSAibmVvbiIsCisr ICAgICAgICB0YXJnZXRfZmVhdHVyZSA9ICJ2NyIKKysgICAgKSwKKysgICAgZmVhdHVyZShzdGRh cmNoX2FybV9uZW9uX2ludHJpbnNpY3MpCisrKV0KKysjIVtjZmdfYXR0cigKKysgICAgYWxsKAor KyAgICAgICAgbm90KHN0ZHNpbWRfc3BsaXQpLAorKyAgICAgICAgdGFyZ2V0X2FyY2ggPSAiYXJt IiwKKysgICAgICAgIHRhcmdldF9lbmRpYW4gPSAibGl0dGxlIiwKKysgICAgICAgIHRhcmdldF9m ZWF0dXJlID0gIm5lb24iLAorKyAgICAgICAgdGFyZ2V0X2ZlYXR1cmUgPSAidjciCisrICAgICks CisrICAgIGZlYXR1cmUoc3Rkc2ltZCkKKyspXQorKworK3VzZSBjZmdfaWY6OmNmZ19pZjsKKyt1 c2UgY29yZTo6c2ltZDo6bWFzazE2eDg7CisrdXNlIGNvcmU6OnNpbWQ6Om1hc2szMng0OworK3Vz ZSBjb3JlOjpzaW1kOjptYXNrOHgxNjsKKysKKytjZmdfaWYhIHsKKysgICAgaWYgI1tjZmcoYWxs KHRhcmdldF9hcmNoID0gImFybSIsIHRhcmdldF9lbmRpYW4gPSAibGl0dGxlIiwgdGFyZ2V0X2Zl YXR1cmUgPSAibmVvbiIsIHRhcmdldF9mZWF0dXJlID0gInY3IikpXSB7CisrICAgICAgICB1c2Ug Y29yZTo6c2ltZDo6bWFzazh4ODsKKysgICAgICAgIHVzZSBjb3JlOjpzaW1kOjptYXNrMTZ4NDsK KysgICAgICAgIHVzZSBjb3JlOjpzaW1kOjptYXNrMzJ4MjsKKysgICAgICAgIG1hY3JvX3J1bGVz ISBhcm1fMTI4X3Y3X25lb25faW1wbCB7CisrICAgICAgICAgICAgKCRhbGw6aWRlbnQsICRhbnk6 aWRlbnQsICRpZDppZGVudCwgJGhhbGY6aWRlbnQsICR2cG1pbjppZGVudCwgJHZwbWF4OmlkZW50 KSA9PiB7CisrICAgICAgICAgICAgICAgICNbaW5saW5lXQorKyAgICAgICAgICAgICAgICBwdWIg Zm4gJGFsbChzOiAkaWQpIC0+IGJvb2wgeworKyAgICAgICAgICAgICAgICAgICAgdXNlIGNvcmU6 OmFyY2g6OmFybTo6JHZwbWluOworKyAgICAgICAgICAgICAgICAgICAgdXNlIGNvcmU6Om1lbTo6 dHJhbnNtdXRlOworKyAgICAgICAgICAgICAgICAgICAgdW5zYWZlIHsKKysgICAgICAgICAgICAg ICAgICAgICAgICB1bmlvbiBVIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFsdmVz OiAoJGhhbGYsICRoYWxmKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjOiAkaWQs CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIGxl dCBoYWx2ZXMgPSBVIHsgdmVjOiBzIH0uaGFsdmVzOworKyAgICAgICAgICAgICAgICAgICAgICAg IGxldCBoOiAkaGFsZiA9IHRyYW5zbXV0ZSgkdnBtaW4odHJhbnNtdXRlKGhhbHZlcy4wKSwgdHJh bnNtdXRlKGhhbHZlcy4xKSkpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGguYWxsKCkKKysg ICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAg ICAjW2lubGluZV0KKysgICAgICAgICAgICAgICAgcHViIGZuICRhbnkoczogJGlkKSAtPiBib29s IHsKKysgICAgICAgICAgICAgICAgICAgIHVzZSBjb3JlOjphcmNoOjphcm06OiR2cG1heDsKKysg ICAgICAgICAgICAgICAgICAgIHVzZSBjb3JlOjptZW06OnRyYW5zbXV0ZTsKKysgICAgICAgICAg ICAgICAgICAgIHVuc2FmZSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gVSB7Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbHZlczogKCRoYWxmLCAkaGFsZiksCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzogJGlkLAorKyAgICAgICAgICAgICAgICAgICAg ICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGFsdmVzID0gVSB7IHZlYzogcyB9 LmhhbHZlczsKKysgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaDogJGhhbGYgPSB0cmFuc211 dGUoJHZwbWF4KHRyYW5zbXV0ZShoYWx2ZXMuMCksIHRyYW5zbXV0ZShoYWx2ZXMuMSkpKTsKKysg ICAgICAgICAgICAgICAgICAgICAgICBoLmFueSgpCisrICAgICAgICAgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0gZWxz ZSB7CisrICAgICAgICBtYWNyb19ydWxlcyEgYXJtXzEyOF92N19uZW9uX2ltcGwgeworKyAgICAg ICAgICAgICgkYWxsOmlkZW50LCAkYW55OmlkZW50LCAkaWQ6aWRlbnQsICRoYWxmOmlkZW50LCAk dnBtaW46aWRlbnQsICR2cG1heDppZGVudCkgPT4geworKyAgICAgICAgICAgICAgICAjW2lubGlu ZShhbHdheXMpXQorKyAgICAgICAgICAgICAgICBwdWIgZm4gJGFsbChzOiAkaWQpIC0+IGJvb2wg eworKyAgICAgICAgICAgICAgICAgICAgcy5hbGwoKQorKyAgICAgICAgICAgICAgICB9CisrICAg ICAgICAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCisrICAgICAgICAgICAgICAgIHB1YiBmbiAk YW55KHM6ICRpZCkgLT4gYm9vbCB7CisrICAgICAgICAgICAgICAgICAgICBzLmFueSgpCisrICAg ICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKyt9Cisr CisrYXJtXzEyOF92N19uZW9uX2ltcGwhKAorKyAgICBhbGxfbWFzazh4MTYsCisrICAgIGFueV9t YXNrOHgxNiwKKysgICAgbWFzazh4MTYsCisrICAgIG1hc2s4eDgsCisrICAgIHZwbWluX3U4LAor KyAgICB2cG1heF91OAorKyk7CisrYXJtXzEyOF92N19uZW9uX2ltcGwhKAorKyAgICBhbGxfbWFz azE2eDgsCisrICAgIGFueV9tYXNrMTZ4OCwKKysgICAgbWFzazE2eDgsCisrICAgIG1hc2sxNng0 LAorKyAgICB2cG1pbl91MTYsCisrICAgIHZwbWF4X3UxNgorKyk7CisrYXJtXzEyOF92N19uZW9u X2ltcGwhKAorKyAgICBhbGxfbWFzazMyeDQsCisrICAgIGFueV9tYXNrMzJ4NCwKKysgICAgbWFz azMyeDQsCisrICAgIG1hc2szMngyLAorKyAgICB2cG1pbl91MzIsCisrICAgIHZwbWF4X3UzMgor Kyk7CitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy8uY2FyZ28tY2hl Y2tzdW0uanNvbiBiL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvLmNhcmdvLWNoZWNrc3Vt Lmpzb24KKy0tLSBhL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvLmNhcmdvLWNoZWNrc3Vt Lmpzb24KKysrKyBiL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvLmNhcmdvLWNoZWNrc3Vt Lmpzb24KK0BAIC0xLDEgKzEsMSBAQAorLXsiZmlsZXMiOnsiQ09OVFJJQlVUSU5HLm1kIjoiY2Ex OTAxZjNlODUzMmZiNGNlYzg5NGZkMzY2NGYwZWFhODk4YzBjNGI5NjFkMWI5OTJkMWVkNTRlYWNm MzYyYSIsIkNPUFlSSUdIVCI6IjExNzg5ZjQ1YmIxODA4NDFjZDM2MmE1ZWVlNjc4OWM2OGRkYjU3 M2ExMTEwNWUzMDc2OGMzMDhhNmFkZDAxOTAiLCJDYXJnby50b21sIjoiNDJmYTgzMzIyYWE5ZmQ2 NzIzYjc3ZDM1ZDBjYWNiOTJjYmI2ZTdmNTczY2UxMWM1NWY1MjI1MjkyODY2ZjhmNCIsIklkZWFz Lm1kIjoiYjc0NTI4OTNmNTAwMTYzODY4ZDhkZTUyYzA5YWRkYWY5MWUxNjMyNDU0ZWQwMmU4OTJj NDY3ZWQ3ZWMzOWRiZCIsIkxJQ0VOU0UtQVBBQ0hFIjoiY2ZjNzc0OWI5NmY2M2JkMzFjM2M0MmI1 YzQ3MWJmNzU2ODE0MDUzZTg0N2MxMGYzZWIwMDM0MTdiYzUyM2QzMCIsIkxJQ0VOU0UtTUlUIjoi M2ZhNGNhODNkY2M5MjM3ODM5YjFiZGViMmU2ZDE2YmRmYjVlYzBjNWNlNDJiMjQ2OTRkOGJiZjBk Y2JlZjcyYyIsIkxJQ0VOU0UtV0hBVFdHIjoiODM4MTE4Mzg4ZmU1YzJlN2YxZGJiYWVlZDEzZTFj N2YzZWJmODhiZTkxMzE5YzdjMWQ3N2MxOGU5ODdkMWE1MCIsIlJFQURNRS5tZCI6ImQ5MzhlOGFi MGI5YWI2N2U3NGExYTRmNDhmMjNmZGNlOTU2ZDBhZDNhM2Y2MTQ3YWU3NjEyYTkyNzYzYzg4ZDUi LCJjaS9taXJpLnNoIjoiNDNjYjhkODJmNDllM2JmZTJkMjI3NGI2Y2NkNmYwNzE0YTQxODhjY2Vm MGNlY2MwNDA4Mjk4ODNjZmRiZWUyNSIsImRvYy9CaWc1LnR4dCI6ImY3M2EyZWRjNWNiNmMyZDE0 MGJhNmUwN2Y0NTQyZTFjNGEyMzQ5NTAzNzhhY2RlMWRmOTM0ODBmMGNhMGJlMGIiLCJkb2MvRVVD LUpQLnR4dCI6ImVlMjgxOGI5MDdkMDEzN2Y0MGE5YWI5ZmQ1MjVmYzcwMGE0NGRiZGRkYjZjZjBj MTU3YTY1NjU2NmJhZTRiZjEiLCJkb2MvRVVDLUtSLnR4dCI6IjcxZDllMmNjZjNiMTI0ZThiZGZi NDMzYzhjZjI3NzNmZDg3ODA3NzAzOGQwY2VjM2M3MjM3YTUwZjRhNzhhMzAiLCJkb2MvR0JLLnR4 dCI6ImMxYjUyMmI1YTc5OTg4NGU1MDAxZGE2NjFmNDJjNWE4ZjRkMGFjYjllZjFkNzRiMjA2ZjIy YjVmNjUzNjU2MDYiLCJkb2MvSUJNODY2LnR4dCI6ImE1YTQzM2U4MDRkMGY4M2FmNzg1MDE1MTc5 ZmJjMWQ5YjBlYWYxZjc5NjBlZmNkMDQwOTNlMTM2YjUxZmJkMGUiLCJkb2MvSVNPLTIwMjItSlAu dHh0IjoiYWY4NjY4NGY1YThmMGUyODY4ZDdiMmMyOTI4NjAxNDBjM2QyZTU1Mjc1MzBjYTA5MWYx YjI4MTk4ZThlMmZlNiIsImRvYy9JU08tODg1OS0xMC50eHQiOiI2ZDM5NDlhZDdjODFjYTE3Njg5 NTEwMWVkODFhMWRiN2RmMTA2MGQ2NGUyNjI4ODBiOTRiZDMxYmIzNDRhYjRkIiwiZG9jL0lTTy04 ODU5LTEzLnR4dCI6IjM5NTFkZDg5Y2Y5M2Y3NzI5MTQ4MDkxNjgzY2Y4NTExZjQ1MjkzODhiN2Rj OGRjZDBkNjJlYWVkNTViZTkzZmEiLCJkb2MvSVNPLTg4NTktMTQudHh0IjoiM2QzMzA3ODRhMDM3 NGZkMjU1YTM4YjQ3OTQ5Njc1Y2M3MTY4YzgwMDUzMDUzNGIwYTAxY2FjNmVkYzYyM2FkYyIsImRv Yy9JU08tODg1OS0xNS50eHQiOiIyNGIxMDg0YWFiNTEyN2E4NWFhYjk5MTUzZjg2ZTI0Njk0ZDBh MzYxNWY1M2I1Y2UyMzY4M2Y5N2NmNjZjNDdhIiwiZG9jL0lTTy04ODU5LTE2LnR4dCI6ImNlMDI3 MjU1OWI5MmJhNzZkN2E3ZTQ3NmY2NDI0YWU0YTVjYzcyZTc1YjE4MzYxMWIwODM5MmU0NGFkZDRk MjUiLCJkb2MvSVNPLTg4NTktMi50eHQiOiIxOGNlZmY4OGMxM2QxYjViYTQ1NWEzOTE5YjFlM2Rl NDg5MDQ1YzRjM2QyZGQ3ZTg1MjdjMTI1Yzc1ZDU0YWFkIiwiZG9jL0lTTy04ODU5LTMudHh0Ijoi MjE3OTg0MDRjNjhmNGY1ZGI1OTIyMzM2MmYyNDk5OWRhOTY5NjhjMDYyODQyNzMyMWZjY2NlN2Qy ODQ5YTEzMCIsImRvYy9JU08tODg1OS00LnR4dCI6ImQyN2Y2NTIwYzZjNWJmYmNjMTkxNzZiNzFk MDgxY2RiM2JjY2RlMTYyMmJiM2U0MjBkNTY4MGU4MTI2MzJkNTMiLCJkb2MvSVNPLTg4NTktNS50 eHQiOiJhMTBlYzhkNmVhN2E3OGFkMTVkYTcyNzVmNmNiMWEzMzY1MTE4NTI3ZTI4ZjlhZjZkMGQ1 ODMwNTAxMzAzZjNhIiwiZG9jL0lTTy04ODU5LTYudHh0IjoiY2NkYThhMmVmYzk2MTE1MzM2YmRk Nzc3NzY2MzdiOTcxMjQyNWU0NGZiY2Y3NDUzNTNiOTA1N2ZiZWYxNDRlNyIsImRvYy9JU08tODg1 OS03LnR4dCI6IjE3OTAwZmExZjI3YTQ0NTk1OGYwYTc3ZDdkOTA1NmJlMzc1YTZiZDdlZTQ0OTJh YTY4MGM3YzE1MDBiYWI4NWUiLCJkb2MvSVNPLTg4NTktOC1JLnR4dCI6IjgzNTc1NTU2NDZkNTQy NjVhOWI5ZmZhM2U2OGIwOGQxMzIzMTJmMTU2MWM2MDEwOGZmOWI4YjExNjdiNmVjZjIiLCJkb2Mv SVNPLTg4NTktOC50eHQiOiI3MmNkNmYzYWZiN2I0YTljMTZhNjZhMzYyNDczMzE1NzcwYjc3NTVk NzJjODZjODcwZTUyZmMzZWJhODZjOGFmIiwiZG9jL0tPSTgtUi50eHQiOiI4MzljZjE5YTM4ZGE5 OTQ0ODgwMDRlZDc4MTRiMWY2MTUxNjQwMTU2YTlhMmFmMDJiZjJlZmNhNzQ1ZmI1OTY2IiwiZG9j L0tPSTgtVS50eHQiOiIwY2M3NjYyNGVkMWYwMjQxODNlMjI5OGI3ZTAxOTk1N2RhMmM3MGM4Y2Ew NmUwZmM0ZTZmMzUzZjUwYTUwNTRmIiwiZG9jL1NoaWZ0X0pJUy50eHQiOiIzNGM0OTE0MTgxOGNi OWRkYmNmNTljYzg1OGY3OGE3OWJlOGFkMTQ4ZDU2M2YyNjQxNTEwOGFlMWYxNDg0NDNmIiwiZG9j L1VURi0xNkJFLnR4dCI6ImUyZTI4MGQ4YWNiYWE2ZDJhNmIzNTY5ZDYwZTE3NTAwYTI4NWYyYmFh MGRmMzM2M2RkODU1MzdjZDVhMWVmOGYiLCJkb2MvVVRGLTE2TEUudHh0IjoiNzBiZGMxNzBlM2Zj NTI5OGJhNjhmMTAxMjVmYjVlZWI4YjA3NzAzNmNjOTZiYjQ0MTZjNGRlMzk2ZjZkNzZjMSIsImRv Yy9VVEYtOC50eHQiOiJlYTdiYWU3NDJlNjEzMDEwY2VkMDAyY2Y0YjYwMWE3MzdkMjIwM2ZhZDY1 ZTExNTYxMTQ1MWJjNDQyOGY1NDhhIiwiZG9jL2diMTgwMzAudHh0IjoiZGM3MTM3OGE4ZjA3YTJk ODY1OWY2OWVlODFmYjg3OTFmZWY1NmJhODZmMTI0YjQyOTk3ODI4NTIzN2JiNGE3YiIsImRvYy9t YWNpbnRvc2gudHh0IjoiNTc0OTFlNTM4NjY3MTFiNDY3MmQ5YjlmZjM1MzgwYjlkYWM5ZTBkOGUz ZDZjMjBiZGQ2MTQwNjAzNjg3YzAyMyIsImRvYy9yZXBsYWNlbWVudC50eHQiOiI0YjZjM2JiZDc5 OTlkOWQ0MTA4YTI4MTU5NGJkMDJkMTM2MDdlMzM0YTk1NDY1YWZmZjhjMmMwOGQzOTVmMGU0Iiwi ZG9jL3dpbmRvd3MtMTI1MC50eHQiOiI2MTI5NmJiNmEyMWNkYWI2MDIzMDBkMzJlY2ZiYTQzNGNi ODJkZTVhYzNiYzg4ZDU4NzEwZDJmMTI1ZTI4ZDM5IiwiZG9jL3dpbmRvd3MtMTI1MS50eHQiOiI3 ZGVlYTFjNjFkZWExNDg1YzhmZjAyZGIyYzdkNTc4ZGI3YTlhYWI2M2FiMWNmZDAyZWMwNGI1MTU4 NjQ2ODllIiwiZG9jL3dpbmRvd3MtMTI1Mi50eHQiOiI5MzNlZjNiZGRkZmNlNWVlMTMyYjlmMWEx YWE4YjQ3NDIzZDI1ODdiYmU0NzViMTkwMjhkMGE2ZDM4ZTE4MGI2IiwiZG9jL3dpbmRvd3MtMTI1 My50eHQiOiIxYTM4NzQ4Yjg4ZTk5MDcxYTVjN2IzZDU0NTZlYWQ0Y2FlZGVhYmFiNTBkNTBkNjU4 YmUxMDViYzExMzcxNGRlIiwiZG9jL3dpbmRvd3MtMTI1NC50eHQiOiJmODM3MmY4NmM2ZjhkNjQy NTYzY2Q2ZGRjMDI1MjYwNTUzMjkyYTM5NDIzZGYxNjgzYTk4NjcwYmQ3YmYyYjQ3IiwiZG9jL3dp bmRvd3MtMTI1NS50eHQiOiI0ZTU4NTI0OTQ3MzAwNTRlMmRhMjU4YTc0ZTFiOWQ3ODBhYmJjZGQ4 Y2UyMmViYzIxOGNhMmVmZTllOTA0OTNkIiwiZG9jL3dpbmRvd3MtMTI1Ni50eHQiOiJjMDg3OWM1 MTcyYWJlZGVhZDMwMmE0MDZlOGY2MGQ5Y2Q5NTk4Njk0YTBmZmE0ZmQyODhmZmU0ZmVmN2I4ZWEx IiwiZG9jL3dpbmRvd3MtMTI1Ny50eHQiOiJjMjhhMGM5Zjk2NGZjYjJiNDZkMjFmNTM3YzQwMjQ0 NjUwMWEyODAwNjcwNDgxZDZhYmY5ZmQ5ZTkwMThkNTIzIiwiZG9jL3dpbmRvd3MtMTI1OC50eHQi OiI1MDE5YWU0ZDYxODA1Yzc5YWFjYmYxN2M5Mzc5MzM0MmRiYjA5OGQ2NWExODM3NzgzYmMzZTJj NmQ2YTIzNjAyIiwiZG9jL3dpbmRvd3MtODc0LnR4dCI6IjRlZjBlNDUwMWM1ZmViYThiMTdhZWUx ODE4NjAyZWQ0NGIzNmNhODQ3NWRiNzcxY2UyZmMxNmQzOTJjYWJlY2MiLCJkb2MveC1tYWMtY3ly aWxsaWMudHh0IjoiNThiZTE1NGQ4YTg4OGNhM2Q0ODRiODNiNDRmNzQ5ODIzZWYzMzlhYjI3ZjE0 ZDkwY2E5YTg1NmY1MDUwYThiZCIsImRvYy94LXVzZXItZGVmaW5lZC50eHQiOiJmOWNkMDdjNDMy MWJmNWNmYjBiZTRiZGRkZDI1MTA3Mjk5OWIwNGE2Y2Y3YTZmNWJjNjM3MDlhODRlMmMxZmZjIiwi Z2VuZXJhdGUtZW5jb2RpbmctZGF0YS5weSI6ImJlOTg5ZGQyNWM2Yjk0NmUzZTg3NDVmZGM4ZThh ODBmY2YyNGIzYmU5OWFkMGI0Yjc4MTUzYmEzZjZhYjYzMTAiLCJydXN0Zm10LnRvbWwiOiI4NWMx YTNiNDM4MmZkODllOTkxY2JiODFiNzBmYjUyNzgwNDcyZWRjMDY0Yzk2Mzk0M2NkYWFhNTZlMGEy MDMwIiwic3JjL2FzY2lpLnJzIjoiYzQ0YzAwMjY0MWFkYjVlYmM0MzY4NzA3YThjYzBhMDc2ZDJm MzNlNmE1YzI3YjFiNjk5ODhlYjUxNWY1NjUzZCIsInNyYy9iaWc1LnJzIjoiZWM2ZTI5MTMwMTFh MzhlOWEzZTgyNWExNzMxZjEzOWE3Y2ExZDViMjY0ZmVmYWU1MWEzY2MxYTY4YTU3Y2VmOSIsInNy Yy9kYXRhLnJzIjoiOGE2MTdjYzU3MDMyMDkyZDY1ODUwZWIyN2UwMGRlNjg3YzgwYWVhMzI5OWU4 MzlhMWY1OGI0MmQwYjM1YWJmMyIsInNyYy9ldWNfanAucnMiOiIzMjA0N2Y1YjU0MDE4OGM0Y2Ix OWMwNzE2NWY4NDZiOTc4NmEwOWYxOGUzMTVlZDNlOWJkYTEyOTNkYWU1MmFhIiwic3JjL2V1Y19r ci5ycyI6IjliMjVhZmM3MmQ5Mzc4NzAwZWVjZmFjNThkNTVhZDFjNTk0NmQ2Y2QwY2NkZTJjMjlj MDgyMDBlZjJkZTZiYjkiLCJzcmMvZ2IxODAzMC5ycyI6IjgwODU4NzE2OGQ3M2YwYzgwZjg1MjBm MGNhOWIxNjE4NjZlZDJlZmViMTdhMDVlODVmZGYzYjhlZmU3YmEyOGEiLCJzcmMvaGFuZGxlcy5y cyI6ImNjODNkYzA3NTQ3NTFkNjdmNTY4OGE2NWM1ZTAxOTFjYmEwMmY2YmFjY2U4MWEwODEzYTI0 M2NiYTU1ZWVmN2EiLCJzcmMvaXNvXzIwMjJfanAucnMiOiI5YmI0ODVlODI1NzRmNGI3ZDRiMjM2 NGYwZmYyNzZhY2I2YTBiYzExMTc1ODQyMGEzYjBlYzVlMDRjMTk2NjUyIiwic3JjL2xpYi5ycyI6 IjFkYzA3YjgxOGU0NTg0NmIxNmRkY2FmMGRlNDZjODg2MmRkN2RmODA5OTEyM2VjMzhiOTVjM2Y4 YWQ5YzkxZWMiLCJzcmMvbWFjcm9zLnJzIjoiMjAwOTk3Zjg4NzBkZThiZmQ4Y2RjNDc1ZTkyMTE1 ZGY0MjEwOGMwZGY2NjFlNDlkM2QxY2JjMzIwNTZlMWQ5OSIsInNyYy9tZW0ucnMiOiIwYmYzNDEw M2UwYWQxYjg0MmExM2EwODJkZWUyYjkyMGIwNWNmNGZiMGYxNDVjOWVlN2Y2MDhmNGNiNGE1NDRm Iiwic3JjL3JlcGxhY2VtZW50LnJzIjoiNzY2MGIzNGE1M2Y4YzFjYTJiZGZhMGU1MWU4NDNlYzI4 MzI2OTUwOTUyYWQ4YmM5NjU2OWZlYjkzYWM2MjMwOCIsInNyYy9zaGlmdF9qaXMucnMiOiI2OTUx YWU2N2UzNmIxYTEyZmEzYTMwNzM0OTU3ZjQ0NGQ4YjFiNGFlMGUyYmRlNTIwNjBiMjliZDBmMTZk OWQ5Iiwic3JjL3NpbWRfZnVuY3MucnMiOiIyNjEyYWJhODZlMWQyMDEwOTZkN2U0N2E4NTliYzM0 NDRmODU5MzRjYzgyZDhhZGM2ZDM5YTQzMDRkOWVlY2ZjIiwic3JjL3NpbmdsZV9ieXRlLnJzIjoi M2M5ZTljMWY5NDZhZTYyMmM3MjViYTk0MjEyNDBjMWZhYTlhMDVlOTVmYTEwZGQ0NjQyYTI1Y2Iy NzZhMWVkYyIsInNyYy90ZXN0X2RhdGEvYmlnNV9pbi50eHQiOiI0YzVhODY5MWY4ZGM3MTczMTE4 ODljNjM4OTQwMjZkMmZiNjI3MjVhODZjNDIwOGNhMjc0YTljYzhkNDJhNTAzIiwic3JjL3Rlc3Rf ZGF0YS9iaWc1X2luX3JlZi50eHQiOiI5OWQzOTllMTc3NTBjZjljN2NmMzBiYjI1M2RiZmUzNWI4 MWM0ZmNiZGVhZDkzY2ZhNDhiMTQyOTIxMzQ3M2M3Iiwic3JjL3Rlc3RfZGF0YS9iaWc1X291dC50 eHQiOiI2MTkzY2E5N2MyOTdhYTIwZTA5Mzk2MDM4ZDE4ZTkzOGJiN2VhMzMxYzI2ZjBmMjQ1NDA5 NzI5NjcyM2EwYjEzIiwic3JjL3Rlc3RfZGF0YS9iaWc1X291dF9yZWYudHh0IjoiMzY1Njc2OTFm NTU3ZGYxNDRmNmNjNTIwMDE1YTg3MDM4ZGZhMTU2ZjI5NmZjZjEwM2I1NmFlOWE3MThiZTFmYyIs InNyYy90ZXN0X2RhdGEvZXVjX2tyX2luLnR4dCI6ImM4NmE3MjI0ZjMyMTVmYTBkMDRlNjg1NjIy YTc1MmZkYzcyNzYzZThhZTA3NjIzMGM3ZmQ2MmRlNTdlYzQwNzQiLCJzcmMvdGVzdF9kYXRhL2V1 Y19rcl9pbl9yZWYudHh0IjoiMWY0MTlmNGNhNDdkNzA4YjU0YzczYzQ2MTU0NWEwMjJhZTJlMjA0 OThmZGJmODAwNWE0ODNkNzUyYTIwNDg4MyIsInNyYy90ZXN0X2RhdGEvZXVjX2tyX291dC50eHQi OiJlN2YzMmUwMjZmNzBiZTFlMWI1OGUwMDQ3YmFmN2QzZDJjNTIwMjY5YzRmOWI5OTkyZTE1OGI0 ZGVjYjBhMWEzIiwic3JjL3Rlc3RfZGF0YS9ldWNfa3Jfb3V0X3JlZi50eHQiOiJjOTkwNzg1Nzk4 MGIyMGI4ZTllM2I1ODQ0ODJlZDY1NjdhMmJlNjE4NWQ3MjIzN2I2MzIyZjA0MDQ5NDQ5MjRlIiwi c3JjL3Rlc3RfZGF0YS9nYjE4MDMwX2luLnR4dCI6ImFiNzIzMWIyZDNlOWFmYWNkYmQ3ZDdmM2I5 ZTUzNjFhN2ZmOWY3ZTFjZmRiNGYzYmQ5MDViOTM2MmIzMDllNTMiLCJzcmMvdGVzdF9kYXRhL2di MTgwMzBfaW5fcmVmLnR4dCI6ImRjNTA2OTQyMWFkY2EyMDQzYzU1ZjUwMTJiNTVhNzZmZGZmNjUx ZDIyZTZlNjk5ZmQwOTc4ZjhkNTcwNjgxNWMiLCJzcmMvdGVzdF9kYXRhL2diMTgwMzBfb3V0LnR4 dCI6ImYwMjA4ZDUyN2Y1Y2E2M2RlN2Q5YTAzMjNiZThkNWNmMTJkOGExMDRiMjk0M2Q5MmMyNzAx ZjBjMzM2NGRhYzEiLCJzcmMvdGVzdF9kYXRhL2diMTgwMzBfb3V0X3JlZi50eHQiOiI2ODE5ZmU0 NzYyN2U0ZWEwMTAyNzAwM2ZjNTE0YjlmMjFhMTMyMmU3MzJkN2YxZmI5MmNjNmM1NDU1YmM2YzA3 Iiwic3JjL3Rlc3RfZGF0YS9pc29fMjAyMl9qcF9pbi50eHQiOiJjZDI0YmJkY2IxODM0ZTI1ZGI1 NDY0NmZiZjRjNDE1NjBhMTNkYzc1NDBmNmJlM2RiYTRmNWQ5N2Q0NDUxM2FmIiwic3JjL3Rlc3Rf ZGF0YS9pc29fMjAyMl9qcF9pbl9yZWYudHh0IjoiM2RjNGU2YTVlMDY0NzE5NDJkMDg2YjE2Yzk0 NDA5NDVlNzg0MTVmNmYzZjQ3ZTQzNzE3ZTRiYzJlYWMyY2RmNSIsInNyYy90ZXN0X2RhdGEvaXNv XzIwMjJfanBfb3V0LnR4dCI6IjliNmYwMTUzMjlkZGE2YzNmOWVlNWNlNmRiZDZmYTljODlhY2My MTI4M2U4ODY4MzZjNzhiOGQ4MzM0ODBjMjEiLCJzcmMvdGVzdF9kYXRhL2lzb18yMDIyX2pwX291 dF9yZWYudHh0IjoiNzhjYjI2MDA5M2EyMDExNmFkOWE0MmY0M2IwNWQxODQ4YzVhYjEwMGI2Yjlh ODUwNzQ5ODA5ZTk0Mzg4NGIzNSIsInNyYy90ZXN0X2RhdGEvamlzMDIwOF9pbi50eHQiOiI2ZGYz MDMwNTUzZmZiMGE2NjE1YmIzM2RjOGVhOWRjYTZkOTYyM2E5MDI4ZTJmZmVjNzU0Y2UzYzNkYTgy NGNjIiwic3JjL3Rlc3RfZGF0YS9qaXMwMjA4X2luX3JlZi50eHQiOiIzZGM0ZTZhNWUwNjQ3MTk0 MmQwODZiMTZjOTQ0MDk0NWU3ODQxNWY2ZjNmNDdlNDM3MTdlNGJjMmVhYzJjZGY1Iiwic3JjL3Rl c3RfZGF0YS9qaXMwMjA4X291dC50eHQiOiI0ZWMyNDQ3N2UxNjc1Y2U3NTA3MzNiZGMzYzVhZGQx Y2QyN2I2YmQ0Y2UxZjA5Mjg5NTY0NjQ2ZTk2NTRlODU3Iiwic3JjL3Rlc3RfZGF0YS9qaXMwMjA4 X291dF9yZWYudHh0IjoiYzNlMWNlZjUwMzJiMmIxZDkzYTQwNmYzMWZmOTQwYzRlMmRmZTg4NTli OGIxN2NhMjc2MWZlZTdhNzVhMGU0OCIsInNyYy90ZXN0X2RhdGEvamlzMDIxMl9pbi50eHQiOiJj MDExZjBkZDcyYmQ3YzhjZDkyMmRmOTM3NGVmOGQyNzY5YTc3MTkwNTE0Yzc3ZjZjNjJiNDE1ODUy ZWViOWZlIiwic3JjL3Rlc3RfZGF0YS9qaXMwMjEyX2luX3JlZi50eHQiOiI3ZDk0NThiM2QyZjcz ZTcwOTJhN2Y1MDVjMDhjZTFkMjMzZGRlMThhYTY3OWZiY2Y5ODg5MjU2MjM5Y2M5ZTA2Iiwic3Jj L3Rlc3RfZGF0YS9zaGlmdF9qaXNfaW4udHh0IjoiMDJlMzg5Y2NlZjBkZDIxMjJlNjNmNTAzODk5 NDAyY2I3Zjc5NzkxMmMyNDQ0Y2M4MGFiOTMxMzExMTZjNTUyNCIsInNyYy90ZXN0X2RhdGEvc2hp ZnRfamlzX2luX3JlZi50eHQiOiI1MTJmOTg1OTUwY2E5MDJlNjQzYzg4NjgyZGJhOTcwOGI3YzM4 ZDNjNWVjMjkyNTE2OGFiMDBhYzk0YWIxOWY5Iiwic3JjL3Rlc3RfZGF0YS9zaGlmdF9qaXNfb3V0 LnR4dCI6IjVmYmM0NGRhN2JmNjM5YmY2Y2ZlMGZhMWZkM2ViYTcxMDJiODhmODE5MTljOWVhOTkx MzAyNzEyZjY5NDI2ZmIiLCJzcmMvdGVzdF9kYXRhL3NoaWZ0X2ppc19vdXRfcmVmLnR4dCI6IjQ2 NjMyMmM2ZmVkODI4NmM2NDU4MjczMTc1NTI5MGMyMjk2NTA4ZWZkZDI1ODgyNmU2Mjc5Njg2NjQ5 YjQ4MWYiLCJzcmMvdGVzdF9sYWJlbHNfbmFtZXMucnMiOiIyM2EyZTExYjAyYjNiOGQxNWZiNTYx M2E2MjVlM2VkYjJjNjFlNzBlM2M1ODFhYmZkNjM4NzE5YTQwODgyMDBkIiwic3JjL3Rlc3Rpbmcu cnMiOiJmNTllNjcxZTk1YTk4YTU2ZjZiNTczZThjNmJlNGQ3MWU2NzBiZjUyZjdlMjBlYjE2MDVk OTkwYWFmYTE4OTRlIiwic3JjL3V0Zl8xNi5ycyI6ImMwNzFhMTQ3ZmFkMzhkNzUwYzJjMjQ3ZTE0 MWI3NmI5MjlhNDgwMDdiOTlmMjZiMjkyMmI5Y2FlY2RhZjJmMjUiLCJzcmMvdXRmXzgucnMiOiI3 YjdkODg3YjM0N2YxYWVmYTAzMjQ2YjAyOGEzNmE3Mjc1OGE0Y2U3NmMyOGYzYjQ1YzE5NDY3ODUx YWE3ODM5Iiwic3JjL3ZhcmlhbnQucnMiOiIxZmFiNTM2MzU4OGExNTU0YTcxNjlkZTg3MzFlYTlj ZGVkN2FjNjNlYTM1Y2FhYmRkMWMyN2E4ZGRlNjhjMjdiIiwic3JjL3hfdXNlcl9kZWZpbmVkLnJz IjoiYzljMDEwNzMwZGZiOWYxNDFkNGZlZDE5MzUwYzA4YTIxYWYyNDA5MTNhNTRiYjY0ZjVjYTg5 ZmY5M2I2YjdkMSJ9LCJwYWNrYWdlIjoiNzI2OGIzODYyOTZhMDI1ZTQ3NGQ1MTQwNjc4Zjc1ZDZk ZTk0OTNhZTU1YTVkNzA5ZWViOWRkMDgxNDk5NDVlMSJ9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKKyt7ImZpbGVzIjp7IkNPTlRSSUJVVElORy5tZCI6ImNhMTkwMWYzZTg1MzJmYjRjZWM4 OTRmZDM2NjRmMGVhYTg5OGMwYzRiOTYxZDFiOTkyZDFlZDU0ZWFjZjM2MmEiLCJDT1BZUklHSFQi OiIxMTc4OWY0NWJiMTgwODQxY2QzNjJhNWVlZTY3ODljNjhkZGI1NzNhMTExMDVlMzA3NjhjMzA4 YTZhZGQwMTkwIiwiQ2FyZ28udG9tbCI6IjIyYTRkMjEwYzkyZGFlOWYzMmM2OTQ0ZWYzNDBlZThm ZGQwMjdmOTljMDgxNTc3ZTg5MDcxMjNlMmE5MzM4M2UiLCJJZGVhcy5tZCI6ImI3NDUyODkzZjUw MDE2Mzg2OGQ4ZGU1MmMwOWFkZGFmOTFlMTYzMjQ1NGVkMDJlODkyYzQ2N2VkN2VjMzlkYmQiLCJM SUNFTlNFLUFQQUNIRSI6ImNmYzc3NDliOTZmNjNiZDMxYzNjNDJiNWM0NzFiZjc1NjgxNDA1M2U4 NDdjMTBmM2ViMDAzNDE3YmM1MjNkMzAiLCJMSUNFTlNFLU1JVCI6IjNmYTRjYTgzZGNjOTIzNzgz OWIxYmRlYjJlNmQxNmJkZmI1ZWMwYzVjZTQyYjI0Njk0ZDhiYmYwZGNiZWY3MmMiLCJMSUNFTlNF LVdIQVRXRyI6IjgzODExODM4OGZlNWMyZTdmMWRiYmFlZWQxM2UxYzdmM2ViZjg4YmU5MTMxOWM3 YzFkNzdjMThlOTg3ZDFhNTAiLCJSRUFETUUubWQiOiIxZDA4YWVmY2I5MmFmYTgxYjE4MTU0MDQ5 YzlhYmJjYWQ0NTQwYTIzZjcxNzJlOWY5YmJlZDVhZjMzZjFhMDg3IiwiY2kvbWlyaS5zaCI6IjQz Y2I4ZDgyZjQ5ZTNiZmUyZDIyNzRiNmNjZDZmMDcxNGE0MTg4Y2NlZjBjZWNjMDQwODI5ODgzY2Zk YmVlMjUiLCJkb2MvQmlnNS50eHQiOiJmNzNhMmVkYzVjYjZjMmQxNDBiYTZlMDdmNDU0MmUxYzRh MjM0OTUwMzc4YWNkZTFkZjkzNDgwZjBjYTBiZTBiIiwiZG9jL0VVQy1KUC50eHQiOiJlZTI4MThi OTA3ZDAxMzdmNDBhOWFiOWZkNTI1ZmM3MDBhNDRkYmRkZGI2Y2YwYzE1N2E2NTY1NjZiYWU0YmYx IiwiZG9jL0VVQy1LUi50eHQiOiI3MWQ5ZTJjY2YzYjEyNGU4YmRmYjQzM2M4Y2YyNzczZmQ4Nzgw NzcwMzhkMGNlYzNjNzIzN2E1MGY0YTc4YTMwIiwiZG9jL0dCSy50eHQiOiJjMWI1MjJiNWE3OTk4 ODRlNTAwMWRhNjYxZjQyYzVhOGY0ZDBhY2I5ZWYxZDc0YjIwNmYyMmI1ZjY1MzY1NjA2IiwiZG9j L0lCTTg2Ni50eHQiOiJhNWE0MzNlODA0ZDBmODNhZjc4NTAxNTE3OWZiYzFkOWIwZWFmMWY3OTYw ZWZjZDA0MDkzZTEzNmI1MWZiZDBlIiwiZG9jL0lTTy0yMDIyLUpQLnR4dCI6ImFmODY2ODRmNWE4 ZjBlMjg2OGQ3YjJjMjkyODYwMTQwYzNkMmU1NTI3NTMwY2EwOTFmMWIyODE5OGU4ZTJmZTYiLCJk b2MvSVNPLTg4NTktMTAudHh0IjoiNmQzOTQ5YWQ3YzgxY2ExNzY4OTUxMDFlZDgxYTFkYjdkZjEw NjBkNjRlMjYyODgwYjk0YmQzMWJiMzQ0YWI0ZCIsImRvYy9JU08tODg1OS0xMy50eHQiOiIzOTUx ZGQ4OWNmOTNmNzcyOTE0ODA5MTY4M2NmODUxMWY0NTI5Mzg4YjdkYzhkY2QwZDYyZWFlZDU1YmU5 M2ZhIiwiZG9jL0lTTy04ODU5LTE0LnR4dCI6IjNkMzMwNzg0YTAzNzRmZDI1NWEzOGI0Nzk0OTY3 NWNjNzE2OGM4MDA1MzA1MzRiMGEwMWNhYzZlZGM2MjNhZGMiLCJkb2MvSVNPLTg4NTktMTUudHh0 IjoiMjRiMTA4NGFhYjUxMjdhODVhYWI5OTE1M2Y4NmUyNDY5NGQwYTM2MTVmNTNiNWNlMjM2ODNm OTdjZjY2YzQ3YSIsImRvYy9JU08tODg1OS0xNi50eHQiOiJjZTAyNzI1NTliOTJiYTc2ZDdhN2U0 NzZmNjQyNGFlNGE1Y2M3MmU3NWIxODM2MTFiMDgzOTJlNDRhZGQ0ZDI1IiwiZG9jL0lTTy04ODU5 LTIudHh0IjoiMThjZWZmODhjMTNkMWI1YmE0NTVhMzkxOWIxZTNkZTQ4OTA0NWM0YzNkMmRkN2U4 NTI3YzEyNWM3NWQ1NGFhZCIsImRvYy9JU08tODg1OS0zLnR4dCI6IjIxNzk4NDA0YzY4ZjRmNWRi NTkyMjMzNjJmMjQ5OTlkYTk2OTY4YzA2Mjg0MjczMjFmY2NjZTdkMjg0OWExMzAiLCJkb2MvSVNP LTg4NTktNC50eHQiOiJkMjdmNjUyMGM2YzViZmJjYzE5MTc2YjcxZDA4MWNkYjNiY2NkZTE2MjJi YjNlNDIwZDU2ODBlODEyNjMyZDUzIiwiZG9jL0lTTy04ODU5LTUudHh0IjoiYTEwZWM4ZDZlYTdh NzhhZDE1ZGE3Mjc1ZjZjYjFhMzM2NTExODUyN2UyOGY5YWY2ZDBkNTgzMDUwMTMwM2YzYSIsImRv Yy9JU08tODg1OS02LnR4dCI6ImNjZGE4YTJlZmM5NjExNTMzNmJkZDc3Nzc2NjM3Yjk3MTI0MjVl NDRmYmNmNzQ1MzUzYjkwNTdmYmVmMTQ0ZTciLCJkb2MvSVNPLTg4NTktNy50eHQiOiIxNzkwMGZh MWYyN2E0NDU5NThmMGE3N2Q3ZDkwNTZiZTM3NWE2YmQ3ZWU0NDkyYWE2ODBjN2MxNTAwYmFiODVl IiwiZG9jL0lTTy04ODU5LTgtSS50eHQiOiI4MzU3NTU1NjQ2ZDU0MjY1YTliOWZmYTNlNjhiMDhk MTMyMzEyZjE1NjFjNjAxMDhmZjliOGIxMTY3YjZlY2YyIiwiZG9jL0lTTy04ODU5LTgudHh0Ijoi NzJjZDZmM2FmYjdiNGE5YzE2YTY2YTM2MjQ3MzMxNTc3MGI3NzU1ZDcyYzg2Yzg3MGU1MmZjM2Vi YTg2YzhhZiIsImRvYy9LT0k4LVIudHh0IjoiODM5Y2YxOWEzOGRhOTk0NDg4MDA0ZWQ3ODE0YjFm NjE1MTY0MDE1NmE5YTJhZjAyYmYyZWZjYTc0NWZiNTk2NiIsImRvYy9LT0k4LVUudHh0IjoiMGNj NzY2MjRlZDFmMDI0MTgzZTIyOThiN2UwMTk5NTdkYTJjNzBjOGNhMDZlMGZjNGU2ZjM1M2Y1MGE1 MDU0ZiIsImRvYy9TaGlmdF9KSVMudHh0IjoiMzRjNDkxNDE4MThjYjlkZGJjZjU5Y2M4NThmNzhh NzliZThhZDE0OGQ1NjNmMjY0MTUxMDhhZTFmMTQ4NDQzZiIsImRvYy9VVEYtMTZCRS50eHQiOiJl MmUyODBkOGFjYmFhNmQyYTZiMzU2OWQ2MGUxNzUwMGEyODVmMmJhYTBkZjMzNjNkZDg1NTM3Y2Q1 YTFlZjhmIiwiZG9jL1VURi0xNkxFLnR4dCI6IjcwYmRjMTcwZTNmYzUyOThiYTY4ZjEwMTI1ZmI1 ZWViOGIwNzcwMzZjYzk2YmI0NDE2YzRkZTM5NmY2ZDc2YzEiLCJkb2MvVVRGLTgudHh0IjoiZWE3 YmFlNzQyZTYxMzAxMGNlZDAwMmNmNGI2MDFhNzM3ZDIyMDNmYWQ2NWUxMTU2MTE0NTFiYzQ0Mjhm NTQ4YSIsImRvYy9nYjE4MDMwLnR4dCI6ImRjNzEzNzhhOGYwN2EyZDg2NTlmNjllZTgxZmI4Nzkx ZmVmNTZiYTg2ZjEyNGI0Mjk5NzgyODUyMzdiYjRhN2IiLCJkb2MvbWFjaW50b3NoLnR4dCI6IjU3 NDkxZTUzODY2NzExYjQ2NzJkOWI5ZmYzNTM4MGI5ZGFjOWUwZDhlM2Q2YzIwYmRkNjE0MDYwMzY4 N2MwMjMiLCJkb2MvcmVwbGFjZW1lbnQudHh0IjoiNGI2YzNiYmQ3OTk5ZDlkNDEwOGEyODE1OTRi ZDAyZDEzNjA3ZTMzNGE5NTQ2NWFmZmY4YzJjMDhkMzk1ZjBlNCIsImRvYy93aW5kb3dzLTEyNTAu dHh0IjoiNjEyOTZiYjZhMjFjZGFiNjAyMzAwZDMyZWNmYmE0MzRjYjgyZGU1YWMzYmM4OGQ1ODcx MGQyZjEyNWUyOGQzOSIsImRvYy93aW5kb3dzLTEyNTEudHh0IjoiN2RlZWExYzYxZGVhMTQ4NWM4 ZmYwMmRiMmM3ZDU3OGRiN2E5YWFiNjNhYjFjZmQwMmVjMDRiNTE1ODY0Njg5ZSIsImRvYy93aW5k b3dzLTEyNTIudHh0IjoiOTMzZWYzYmRkZGZjZTVlZTEzMmI5ZjFhMWFhOGI0NzQyM2QyNTg3YmJl NDc1YjE5MDI4ZDBhNmQzOGUxODBiNiIsImRvYy93aW5kb3dzLTEyNTMudHh0IjoiMWEzODc0OGI4 OGU5OTA3MWE1YzdiM2Q1NDU2ZWFkNGNhZWRlYWJhYjUwZDUwZDY1OGJlMTA1YmMxMTM3MTRkZSIs ImRvYy93aW5kb3dzLTEyNTQudHh0IjoiZjgzNzJmODZjNmY4ZDY0MjU2M2NkNmRkYzAyNTI2MDU1 MzI5MmEzOTQyM2RmMTY4M2E5ODY3MGJkN2JmMmI0NyIsImRvYy93aW5kb3dzLTEyNTUudHh0Ijoi NGU1ODUyNDk0NzMwMDU0ZTJkYTI1OGE3NGUxYjlkNzgwYWJiY2RkOGNlMjJlYmMyMThjYTJlZmU5 ZTkwNDkzZCIsImRvYy93aW5kb3dzLTEyNTYudHh0IjoiYzA4NzljNTE3MmFiZWRlYWQzMDJhNDA2 ZThmNjBkOWNkOTU5ODY5NGEwZmZhNGZkMjg4ZmZlNGZlZjdiOGVhMSIsImRvYy93aW5kb3dzLTEy NTcudHh0IjoiYzI4YTBjOWY5NjRmY2IyYjQ2ZDIxZjUzN2M0MDI0NDY1MDFhMjgwMDY3MDQ4MWQ2 YWJmOWZkOWU5MDE4ZDUyMyIsImRvYy93aW5kb3dzLTEyNTgudHh0IjoiNTAxOWFlNGQ2MTgwNWM3 OWFhY2JmMTdjOTM3OTMzNDJkYmIwOThkNjVhMTgzNzc4M2JjM2UyYzZkNmEyMzYwMiIsImRvYy93 aW5kb3dzLTg3NC50eHQiOiI0ZWYwZTQ1MDFjNWZlYmE4YjE3YWVlMTgxODYwMmVkNDRiMzZjYTg0 NzVkYjc3MWNlMmZjMTZkMzkyY2FiZWNjIiwiZG9jL3gtbWFjLWN5cmlsbGljLnR4dCI6IjU4YmUx NTRkOGE4ODhjYTNkNDg0YjgzYjQ0Zjc0OTgyM2VmMzM5YWIyN2YxNGQ5MGNhOWE4NTZmNTA1MGE4 YmQiLCJkb2MveC11c2VyLWRlZmluZWQudHh0IjoiZjljZDA3YzQzMjFiZjVjZmIwYmU0YmRkZGQy NTEwNzI5OTliMDRhNmNmN2E2ZjViYzYzNzA5YTg0ZTJjMWZmYyIsImdlbmVyYXRlLWVuY29kaW5n LWRhdGEucHkiOiJiZTk4OWRkMjVjNmI5NDZlM2U4NzQ1ZmRjOGU4YTgwZmNmMjRiM2JlOTlhZDBi NGI3ODE1M2JhM2Y2YWI2MzEwIiwicnVzdGZtdC50b21sIjoiODVjMWEzYjQzODJmZDg5ZTk5MWNi YjgxYjcwZmI1Mjc4MDQ3MmVkYzA2NGM5NjM5NDNjZGFhYTU2ZTBhMjAzMCIsInNyYy9hc2NpaS5y cyI6IjU4OGUzOGIwMWU2NjZkNWU3NDYyNjE3ZWE3ZTkwYTEwOGQ2MDhkZWM5ZTAxNmYzZDI3M2Fj MDc0NGFmMmUwNWQiLCJzcmMvYmlnNS5ycyI6ImVjNmUyOTEzMDExYTM4ZTlhM2U4MjVhMTczMWYx MzlhN2NhMWQ1YjI2NGZlZmFlNTFhM2NjMWE2OGE1N2NlZjkiLCJzcmMvZGF0YS5ycyI6IjhhNjE3 Y2M1NzAzMjA5MmQ2NTg1MGViMjdlMDBkZTY4N2M4MGFlYTMyOTllODM5YTFmNThiNDJkMGIzNWFi ZjMiLCJzcmMvZXVjX2pwLnJzIjoiMzIwNDdmNWI1NDAxODhjNGNiMTljMDcxNjVmODQ2Yjk3ODZh MDlmMThlMzE1ZWQzZTliZGExMjkzZGFlNTJhYSIsInNyYy9ldWNfa3IucnMiOiI5YjI1YWZjNzJk OTM3ODcwMGVlY2ZhYzU4ZDU1YWQxYzU5NDZkNmNkMGNjZGUyYzI5YzA4MjAwZWYyZGU2YmI5Iiwi c3JjL2diMTgwMzAucnMiOiI4MDg1ODcxNjhkNzNmMGM4MGY4NTIwZjBjYTliMTYxODY2ZWQyZWZl YjE3YTA1ZTg1ZmRmM2I4ZWZlN2JhMjhhIiwic3JjL2hhbmRsZXMucnMiOiJiMDhjZWYxZjU3ODVi YjZhNDgyMmYyZTg0NGM2ZGYxYjA0NmI3MzdiN2EwNzVlNDU5M2VhYThjNDIwOGU5ZmUyIiwic3Jj L2lzb18yMDIyX2pwLnJzIjoiOWJiNDg1ZTgyNTc0ZjRiN2Q0YjIzNjRmMGZmMjc2YWNiNmEwYmMx MTE3NTg0MjBhM2IwZWM1ZTA0YzE5NjY1MiIsInNyYy9saWIucnMiOiI4MzRmNDRiNjcwZWM0OGVl ODJjMGUxMjIyM2QxNTY3MzEzZmRkOWY4OGJjYTVmNGIxMTdjODJjMTgyOGY1NTlmIiwic3JjL21h Y3Jvcy5ycyI6IjIwMDk5N2Y4ODcwZGU4YmZkOGNkYzQ3NWU5MjExNWRmNDIxMDhjMGRmNjYxZTQ5 ZDNkMWNiYzMyMDU2ZTFkOTkiLCJzcmMvbWVtLnJzIjoiOTQ4NTcxMTM3ZDNiMTUxZGY4ZGI0ZmIy YzczM2U3NGFlNTk1ZDA1NWNkZjBhZDgzYWJjYWI5MzQxZDZhZGFiZSIsInNyYy9yZXBsYWNlbWVu dC5ycyI6Ijc2NjBiMzRhNTNmOGMxY2EyYmRmYTBlNTFlODQzZWMyODMyNjk1MDk1MmFkOGJjOTY1 NjlmZWI5M2FjNjIzMDgiLCJzcmMvc2hpZnRfamlzLnJzIjoiNjk1MWFlNjdlMzZiMWExMmZhM2Ez MDczNDk1N2Y0NDRkOGIxYjRhZTBlMmJkZTUyMDYwYjI5YmQwZjE2ZDlkOSIsInNyYy9zaW1kX2Z1 bmNzLnJzIjoiMDVjNmU3N2FmNzRiZmU3M2NkMzlhNzUyMDY3YzExNDI1ZDZiNDZlNWRhNDE5OTEw ZjU0YmY3NWE1YzAyYTk4NCIsInNyYy9zaW5nbGVfYnl0ZS5ycyI6IjNhZDg3MTE2ZmIzMzk0MzRh NGI1OGU4ZjJiMTU0ODVmMmI2NmI5Zjc4MTRkNzA4ZjE2MTk0ZWQwOGY2ZDZjY2YiLCJzcmMvdGVz dF9kYXRhL2JpZzVfaW4udHh0IjoiNGM1YTg2OTFmOGRjNzE3MzExODg5YzYzODk0MDI2ZDJmYjYy NzI1YTg2YzQyMDhjYTI3NGE5Y2M4ZDQyYTUwMyIsInNyYy90ZXN0X2RhdGEvYmlnNV9pbl9yZWYu dHh0IjoiOTlkMzk5ZTE3NzUwY2Y5YzdjZjMwYmIyNTNkYmZlMzViODFjNGZjYmRlYWQ5M2NmYTQ4 YjE0MjkyMTM0NzNjNyIsInNyYy90ZXN0X2RhdGEvYmlnNV9vdXQudHh0IjoiNjE5M2NhOTdjMjk3 YWEyMGUwOTM5NjAzOGQxOGU5MzhiYjdlYTMzMWMyNmYwZjI0NTQwOTcyOTY3MjNhMGIxMyIsInNy Yy90ZXN0X2RhdGEvYmlnNV9vdXRfcmVmLnR4dCI6IjM2NTY3NjkxZjU1N2RmMTQ0ZjZjYzUyMDAx NWE4NzAzOGRmYTE1NmYyOTZmY2YxMDNiNTZhZTlhNzE4YmUxZmMiLCJzcmMvdGVzdF9kYXRhL2V1 Y19rcl9pbi50eHQiOiJjODZhNzIyNGYzMjE1ZmEwZDA0ZTY4NTYyMmE3NTJmZGM3Mjc2M2U4YWUw NzYyMzBjN2ZkNjJkZTU3ZWM0MDc0Iiwic3JjL3Rlc3RfZGF0YS9ldWNfa3JfaW5fcmVmLnR4dCI6 IjFmNDE5ZjRjYTQ3ZDcwOGI1NGM3M2M0NjE1NDVhMDIyYWUyZTIwNDk4ZmRiZjgwMDVhNDgzZDc1 MmEyMDQ4ODMiLCJzcmMvdGVzdF9kYXRhL2V1Y19rcl9vdXQudHh0IjoiZTdmMzJlMDI2ZjcwYmUx ZTFiNThlMDA0N2JhZjdkM2QyYzUyMDI2OWM0ZjliOTk5MmUxNThiNGRlY2IwYTFhMyIsInNyYy90 ZXN0X2RhdGEvZXVjX2tyX291dF9yZWYudHh0IjoiYzk5MDc4NTc5ODBiMjBiOGU5ZTNiNTg0NDgy ZWQ2NTY3YTJiZTYxODVkNzIyMzdiNjMyMmYwNDA0OTQ0OTI0ZSIsInNyYy90ZXN0X2RhdGEvZ2Ix ODAzMF9pbi50eHQiOiJhYjcyMzFiMmQzZTlhZmFjZGJkN2Q3ZjNiOWU1MzYxYTdmZjlmN2UxY2Zk YjRmM2JkOTA1YjkzNjJiMzA5ZTUzIiwic3JjL3Rlc3RfZGF0YS9nYjE4MDMwX2luX3JlZi50eHQi OiJkYzUwNjk0MjFhZGNhMjA0M2M1NWY1MDEyYjU1YTc2ZmRmZjY1MWQyMmU2ZTY5OWZkMDk3OGY4 ZDU3MDY4MTVjIiwic3JjL3Rlc3RfZGF0YS9nYjE4MDMwX291dC50eHQiOiJmMDIwOGQ1MjdmNWNh NjNkZTdkOWEwMzIzYmU4ZDVjZjEyZDhhMTA0YjI5NDNkOTJjMjcwMWYwYzMzNjRkYWMxIiwic3Jj L3Rlc3RfZGF0YS9nYjE4MDMwX291dF9yZWYudHh0IjoiNjgxOWZlNDc2MjdlNGVhMDEwMjcwMDNm YzUxNGI5ZjIxYTEzMjJlNzMyZDdmMWZiOTJjYzZjNTQ1NWJjNmMwNyIsInNyYy90ZXN0X2RhdGEv aXNvXzIwMjJfanBfaW4udHh0IjoiY2QyNGJiZGNiMTgzNGUyNWRiNTQ2NDZmYmY0YzQxNTYwYTEz ZGM3NTQwZjZiZTNkYmE0ZjVkOTdkNDQ1MTNhZiIsInNyYy90ZXN0X2RhdGEvaXNvXzIwMjJfanBf aW5fcmVmLnR4dCI6IjNkYzRlNmE1ZTA2NDcxOTQyZDA4NmIxNmM5NDQwOTQ1ZTc4NDE1ZjZmM2Y0 N2U0MzcxN2U0YmMyZWFjMmNkZjUiLCJzcmMvdGVzdF9kYXRhL2lzb18yMDIyX2pwX291dC50eHQi OiI5YjZmMDE1MzI5ZGRhNmMzZjllZTVjZTZkYmQ2ZmE5Yzg5YWNjMjEyODNlODg2ODM2Yzc4Yjhk ODMzNDgwYzIxIiwic3JjL3Rlc3RfZGF0YS9pc29fMjAyMl9qcF9vdXRfcmVmLnR4dCI6Ijc4Y2Iy NjAwOTNhMjAxMTZhZDlhNDJmNDNiMDVkMTg0OGM1YWIxMDBiNmI5YTg1MDc0OTgwOWU5NDM4ODRi MzUiLCJzcmMvdGVzdF9kYXRhL2ppczAyMDhfaW4udHh0IjoiNmRmMzAzMDU1M2ZmYjBhNjYxNWJi MzNkYzhlYTlkY2E2ZDk2MjNhOTAyOGUyZmZlYzc1NGNlM2MzZGE4MjRjYyIsInNyYy90ZXN0X2Rh dGEvamlzMDIwOF9pbl9yZWYudHh0IjoiM2RjNGU2YTVlMDY0NzE5NDJkMDg2YjE2Yzk0NDA5NDVl Nzg0MTVmNmYzZjQ3ZTQzNzE3ZTRiYzJlYWMyY2RmNSIsInNyYy90ZXN0X2RhdGEvamlzMDIwOF9v dXQudHh0IjoiNGVjMjQ0NzdlMTY3NWNlNzUwNzMzYmRjM2M1YWRkMWNkMjdiNmJkNGNlMWYwOTI4 OTU2NDY0NmU5NjU0ZTg1NyIsInNyYy90ZXN0X2RhdGEvamlzMDIwOF9vdXRfcmVmLnR4dCI6ImMz ZTFjZWY1MDMyYjJiMWQ5M2E0MDZmMzFmZjk0MGM0ZTJkZmU4ODU5YjhiMTdjYTI3NjFmZWU3YTc1 YTBlNDgiLCJzcmMvdGVzdF9kYXRhL2ppczAyMTJfaW4udHh0IjoiYzAxMWYwZGQ3MmJkN2M4Y2Q5 MjJkZjkzNzRlZjhkMjc2OWE3NzE5MDUxNGM3N2Y2YzYyYjQxNTg1MmVlYjlmZSIsInNyYy90ZXN0 X2RhdGEvamlzMDIxMl9pbl9yZWYudHh0IjoiN2Q5NDU4YjNkMmY3M2U3MDkyYTdmNTA1YzA4Y2Ux ZDIzM2RkZTE4YWE2NzlmYmNmOTg4OTI1NjIzOWNjOWUwNiIsInNyYy90ZXN0X2RhdGEvc2hpZnRf amlzX2luLnR4dCI6IjAyZTM4OWNjZWYwZGQyMTIyZTYzZjUwMzg5OTQwMmNiN2Y3OTc5MTJjMjQ0 NGNjODBhYjkzMTMxMTE2YzU1MjQiLCJzcmMvdGVzdF9kYXRhL3NoaWZ0X2ppc19pbl9yZWYudHh0 IjoiNTEyZjk4NTk1MGNhOTAyZTY0M2M4ODY4MmRiYTk3MDhiN2MzOGQzYzVlYzI5MjUxNjhhYjAw YWM5NGFiMTlmOSIsInNyYy90ZXN0X2RhdGEvc2hpZnRfamlzX291dC50eHQiOiI1ZmJjNDRkYTdi ZjYzOWJmNmNmZTBmYTFmZDNlYmE3MTAyYjg4ZjgxOTE5YzllYTk5MTMwMjcxMmY2OTQyNmZiIiwi c3JjL3Rlc3RfZGF0YS9zaGlmdF9qaXNfb3V0X3JlZi50eHQiOiI0NjYzMjJjNmZlZDgyODZjNjQ1 ODI3MzE3NTUyOTBjMjI5NjUwOGVmZGQyNTg4MjZlNjI3OTY4NjY0OWI0ODFmIiwic3JjL3Rlc3Rf bGFiZWxzX25hbWVzLnJzIjoiMjNhMmUxMWIwMmIzYjhkMTVmYjU2MTNhNjI1ZTNlZGIyYzYxZTcw ZTNjNTgxYWJmZDYzODcxOWE0MDg4MjAwZCIsInNyYy90ZXN0aW5nLnJzIjoiZjU5ZTY3MWU5NWE5 OGE1NmY2YjU3M2U4YzZiZTRkNzFlNjcwYmY1MmY3ZTIwZWIxNjA1ZDk5MGFhZmExODk0ZSIsInNy Yy91dGZfMTYucnMiOiJjMDcxYTE0N2ZhZDM4ZDc1MGMyYzI0N2UxNDFiNzZiOTI5YTQ4MDA3Yjk5 ZjI2YjI5MjJiOWNhZWNkYWYyZjI1Iiwic3JjL3V0Zl84LnJzIjoiN2I3ZDg4N2IzNDdmMWFlZmEw MzI0NmIwMjhhMzZhNzI3NThhNGNlNzZjMjhmM2I0NWMxOTQ2Nzg1MWFhNzgzOSIsInNyYy92YXJp YW50LnJzIjoiMWZhYjUzNjM1ODhhMTU1NGE3MTY5ZGU4NzMxZWE5Y2RlZDdhYzYzZWEzNWNhYWJk ZDFjMjdhOGRkZTY4YzI3YiIsInNyYy94X3VzZXJfZGVmaW5lZC5ycyI6Ijk0NTZjYTQ2MTY4ZWY4 NmM5ODM5OWEyNTM2ZjU3N2VmN2JlM2NkZGU5MGMwYzUxMzkyZDhhYzQ4NTE5ZDNmYWUifSwicGFj a2FnZSI6ImI0NWRlOTA0YWEwYjAxMGJjZTJhYjQ1MjY0ZDA2MzE2ODE4NDdmYTdiNmYyZWFhN2Rh Yjc2MTk5NDNiYzRmNTkifQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0 IGEvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9DYXJnby50b21sIGIvdGhpcmRfcGFydHkv cnVzdC9lbmNvZGluZ19ycy9DYXJnby50b21sCistLS0gYS90aGlyZF9wYXJ0eS9ydXN0L2VuY29k aW5nX3JzL0NhcmdvLnRvbWwKKysrKyBiL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvQ2Fy Z28udG9tbAorQEAgLTYsMTggKzYsMTkgQEAKKyAjIHRvIHJlZ2lzdHJ5IChlLmcuLCBjcmF0ZXMu aW8pIGRlcGVuZGVuY2llcy4KKyAjCisgIyBJZiB5b3UgYXJlIHJlYWRpbmcgdGhpcyBmaWxlIGJl IGF3YXJlIHRoYXQgdGhlIG9yaWdpbmFsIENhcmdvLnRvbWwKKyAjIHdpbGwgbGlrZWx5IGxvb2sg dmVyeSBkaWZmZXJlbnQgKGFuZCBtdWNoIG1vcmUgcmVhc29uYWJsZSkuCisgIyBTZWUgQ2FyZ28u dG9tbC5vcmlnIGZvciB0aGUgb3JpZ2luYWwgY29udGVudHMuCisgCisgW3BhY2thZ2VdCisgZWRp dGlvbiA9ICIyMDE4IgorK3J1c3QtdmVyc2lvbiA9ICIxLjM2IgorIG5hbWUgPSAiZW5jb2Rpbmdf cnMiCistdmVyc2lvbiA9ICIwLjguMzMiCisrdmVyc2lvbiA9ICIwLjguMzQiCisgYXV0aG9ycyA9 IFsiSGVucmkgU2l2b25lbiA8aHNpdm9uZW5AaHNpdm9uZW4uZmk+Il0KKyBkZXNjcmlwdGlvbiA9 ICJBIEdlY2tvLW9yaWVudGVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBFbmNvZGluZyBTdGFuZGFy ZCIKKyBob21lcGFnZSA9ICJodHRwczovL2RvY3MucnMvZW5jb2RpbmdfcnMvIgorIGRvY3VtZW50 YXRpb24gPSAiaHR0cHM6Ly9kb2NzLnJzL2VuY29kaW5nX3JzLyIKKyByZWFkbWUgPSAiUkVBRE1F Lm1kIgorIGtleXdvcmRzID0gWworICAgICAiZW5jb2RpbmciLAorICAgICAid2ViIiwKK0BAIC0z MSwyMyArMzIsMjMgQEAgY2F0ZWdvcmllcyA9IFsKKyAgICAgImludGVybmF0aW9uYWxpemF0aW9u IiwKKyBdCisgbGljZW5zZSA9ICIoQXBhY2hlLTIuMCBPUiBNSVQpIEFORCBCU0QtMy1DbGF1c2Ui CisgcmVwb3NpdG9yeSA9ICJodHRwczovL2dpdGh1Yi5jb20vaHNpdm9uZW4vZW5jb2RpbmdfcnMi CisgCisgW3Byb2ZpbGUucmVsZWFzZV0KKyBsdG8gPSB0cnVlCisgCisrW2RlcGVuZGVuY2llcy5h bnlfYWxsX3dvcmthcm91bmRdCisrdmVyc2lvbiA9ICIwLjEuMCIKKytvcHRpb25hbCA9IHRydWUK KysKKyBbZGVwZW5kZW5jaWVzLmNmZy1pZl0KKyB2ZXJzaW9uID0gIjEuMCIKKyAKKy1bZGVwZW5k ZW5jaWVzLnBhY2tlZF9zaW1kXQorLXZlcnNpb24gPSAiMC4zLjkiCistb3B0aW9uYWwgPSB0cnVl CistCisgW2RlcGVuZGVuY2llcy5zZXJkZV0KKyB2ZXJzaW9uID0gIjEuMCIKKyBvcHRpb25hbCA9 IHRydWUKKyAKKyBbZGV2LWRlcGVuZGVuY2llcy5iaW5jb2RlXQorIHZlcnNpb24gPSAiMS4wIgor IAorIFtkZXYtZGVwZW5kZW5jaWVzLnNlcmRlX2Rlcml2ZV0KK0BAIC02OSwxNSArNzAsOSBAQCBm YXN0LWxlZ2FjeS1lbmNvZGUgPSBbCisgICAgICJmYXN0LWhhbmphLWVuY29kZSIsCisgICAgICJm YXN0LWthbmppLWVuY29kZSIsCisgICAgICJmYXN0LWdiLWhhbnppLWVuY29kZSIsCisgICAgICJm YXN0LWJpZzUtaGFuemktZW5jb2RlIiwKKyBdCisgbGVzcy1zbG93LWJpZzUtaGFuemktZW5jb2Rl ID0gW10KKyBsZXNzLXNsb3ctZ2ItaGFuemktZW5jb2RlID0gW10KKyBsZXNzLXNsb3cta2Fuamkt ZW5jb2RlID0gW10KKy1zaW1kLWFjY2VsID0gWworLSAgICAicGFja2VkX3NpbWQiLAorLSAgICAi cGFja2VkX3NpbWQvaW50b19iaXRzIiwKKy1dCistCistW2JhZGdlcy50cmF2aXMtY2ldCistcmVw b3NpdG9yeSA9ICJoc2l2b25lbi9lbmNvZGluZ19ycyIKKytzaW1kLWFjY2VsID0gWyJhbnlfYWxs X3dvcmthcm91bmQiXQorZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMv UkVBRE1FLm1kIGIvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9SRUFETUUubWQKKy0tLSBh L3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvUkVBRE1FLm1kCisrKysgYi90aGlyZF9wYXJ0 eS9ydXN0L2VuY29kaW5nX3JzL1JFQURNRS5tZAorQEAgLTE2Miw1MCArMTYyLDM2IEBAIHdyYXBw ZXJzLgorICogW0MrK10oaHR0cHM6Ly9naXRodWIuY29tL2hzaXZvbmVuL3JlY29kZV9jcHApCisg CisgIyMgT3B0aW9uYWwgZmVhdHVyZXMKKyAKKyBUaGVyZSBhcmUgY3VycmVudGx5IHRoZXNlIG9w dGlvbmFsIGNhcmdvIGZlYXR1cmVzOgorIAorICMjIyBgc2ltZC1hY2NlbGAKKyAKKy1FbmFibGVz IFNJTUQgYWNjZWxlcmF0aW9uIHVzaW5nIHRoZSBuaWdodGx5LWRlcGVuZGVudCBgcGFja2VkX3Np bWRgIGNyYXRlLgorK0VuYWJsZXMgU0lNRCBhY2NlbGVyYXRpb24gdXNpbmcgdGhlIG5pZ2h0bHkt ZGVwZW5kZW50IGBwb3J0YWJsZV9zaW1kYCBzdGFuZGFyZAorK2xpYnJhcnkgZmVhdHVyZS4KKyAK KyBUaGlzIGlzIGFuIG9wdC1pbiBmZWF0dXJlLCBiZWNhdXNlIGVuYWJsaW5nIHRoaXMgZmVhdHVy ZSBfb3B0cyBvdXRfIG9mIFJ1c3QncworIGd1YXJhbnRlZXMgb2YgZnV0dXJlIGNvbXBpbGVycyBj b21waWxpbmcgb2xkIGNvZGUgKGFrYS4gInN0YWJpbGl0eSBzdG9yeSIpLgorIAorIEN1cnJlbnRs eSwgdGhpcyBoYXMgbm90IGJlZW4gdGVzdGVkIHRvIGJlIGFuIGltcHJvdmVtZW50IGV4Y2VwdCBm b3IgdGhlc2UKKy10YXJnZXRzOgorK3RhcmdldHMgYW5kIGVuYWJsaW5nIHRoZSBgc2ltZC1hY2Nl bGAgZmVhdHVyZSBpcyBleHBlY3RlZCB0byBicmVhayB0aGUgYnVpbGQKKytvbiBvdGhlciB0YXJn ZXRzOgorIAorICogeDg2XzY0CisgKiBpNjg2CisgKiBhYXJjaDY0CisgKiB0aHVtYnY3bmVvbgor IAorIElmIHlvdSB1c2UgbmlnaHRseSBSdXN0LCB5b3UgdXNlIHRhcmdldHMgd2hvc2UgZmlyc3Qg Y29tcG9uZW50IGlzIG9uZSBvZiB0aGUKKyBhYm92ZSwgYW5kIHlvdSBhcmUgcHJlcGFyZWQgX3Rv IGhhdmUgdG8gcmV2aXNlIHlvdXIgY29uZmlndXJhdGlvbiB3aGVuIHVwZGF0aW5nCisgUnVzdF8s IHlvdSBzaG91bGQgZW5hYmxlIHRoaXMgZmVhdHVyZS4gT3RoZXJ3aXNlLCBwbGVhc2UgX2RvIG5v dF8gZW5hYmxlIHRoaXMKKyBmZWF0dXJlLgorIAorLV9Ob3RlIV8gSWYgeW91IGFyZSBjb21waWxp bmcgZm9yIGEgdGFyZ2V0IHRoYXQgZG9lcyBub3QgaGF2ZSAxMjgtYml0IFNJTUQKKy1lbmFibGVk IGFzIHBhcnQgb2YgdGhlIHRhcmdldCBkZWZpbml0aW9uIGFuZCB5b3UgYXJlIGVuYWJsaW5nIDEy OC1iaXQgU0lNRAorLXVzaW5nIGAtQyB0YXJnZXRfZmVhdHVyZWAsIHlvdSBuZWVkIHRvIGVuYWJs ZSB0aGUgYGNvcmVfYXJjaGAgQ2FyZ28gZmVhdHVyZQorLWZvciBgcGFja2VkX3NpbWRgIHRvIGNv bXBpbGUgYSBjcmF0ZXMuaW8gc25hcHNob3Qgb2YgYGNvcmVfYXJjaGAgaW5zdGVhZCBvZgorLXVz aW5nIHRoZSBzdGFuZGFyZC1saWJyYXJ5IGNvcHkgb2YgYGNvcmU6OmFyY2hgLCBiZWNhdXNlIHRo ZSBgY29yZTo6YXJjaGAKKy1tb2R1bGUgb2YgdGhlIHByZS1jb21waWxlZCBzdGFuZGFyZCBsaWJy YXJ5IGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggdGhlCistYXNzdW1wdGlvbiB0aGF0IHRoZSBDUFUg ZG9lc24ndCBoYXZlIDEyOC1iaXQgU0lNRC4gQXQgcHJlc2VudCB0aGlzIGFwcGxpZXMKKy1tYWlu bHkgdG8gMzItYml0IEFSTSB0YXJnZXRzIHdob3NlIGZpcnN0IGNvbXBvbmVudCBkb2VzIG5vdCBp bmNsdWRlIHRoZQorLXN1YnN0cmluZyBgbmVvbmAuCistCistVGhlIGVuY29kaW5nX3JzIHNpZGUg b2YgdGhpbmdzIGhhcyBub3QgYmVlbiBwcm9wZXJseSBzZXQgdXAgZm9yIFBPV0VSLAorLVBvd2Vy UEMsIE1JUFMsIGV0Yy4sIFNJTUQgYXQgdGhpcyB0aW1lLCBzbyBldmVuIGlmIHlvdSB3ZXJlIHRv IGZvbGxvdworLXRoZSBhZHZpY2UgZnJvbSB0aGUgcHJldmlvdXMgcGFyYWdyYXBoLCB5b3UgcHJv YmFibHkgc2hvdWxkbid0IHVzZQorLXRoZSBgc2ltZC1hY2NlbGAgb3B0aW9uIG9uIHRoZSBsZXNz IG1haW5zdHJlYW0gYXJjaGl0ZWN0dXJlcyBhdCB0aGlzCistdGltZS4KKy0KKyBVc2VkIGJ5IEZp cmVmb3guCisgCisgIyMjIGBzZXJkZWAKKyAKKyBFbmFibGVzIHN1cHBvcnQgZm9yIHNlcmlhbGl6 aW5nIGFuZCBkZXNlcmlhbGl6aW5nIGAmJ3N0YXRpYyBFbmNvZGluZ2AtdHlwZWQKKyBzdHJ1Y3Qg ZmllbGRzIHVzaW5nIFtTZXJkZV1bMV0uCisgCisgWzFdOiBodHRwczovL3NlcmRlLnJzLworQEAg LTM3NiwxOCArMzYyLDE5IEBAIEl0IGlzIGEgZ29hbCB0byBzdXBwb3J0IHRoZSBsYXRlc3Qgc3Rh YmwKKyB0aGUgdmVyc2lvbiBvZiBSdXN0IHRoYXQncyB1c2VkIGZvciBGaXJlZm94IE5pZ2h0bHku CisgCisgQXQgdGhpcyB0aW1lLCB0aGVyZSBpcyBubyBmaXJtIGNvbW1pdG1lbnQgdG8gc3VwcG9y dCBhIHZlcnNpb24gb2xkZXIgdGhhbgorIHdoYXQncyByZXF1aXJlZCBieSBGaXJlZm94LCBhbmQg dGhlcmUgaXMgbm8gY29tbWl0bWVudCB0byB0cmVhdCBNU1JWIGNoYW5nZXMKKyBhcyBzZW12ZXIt YnJlYWtpbmcsIGJlY2F1c2UgdGhpcyBjcmF0ZSBkZXBlbmRzIG9uIGBjZmctaWZgLCB3aGljaCBk b2Vzbid0CisgYXBwZWFyIHRvIHRyZWF0IE1TUlYgY2hhbmdlcyBhcyBzZW12ZXItYnJlYWtpbmcs IHNvIGl0IHdvdWxkIGJlIHVzZWxlc3MgZm9yCisgdGhpcyBjcmF0ZSB0byB0cmVhdCBNU1JWIGNo YW5nZXMgYXMgc2VtdmVyLWJyZWFraW5nLgorIAorLUFzIG9mIDIwMjEtMDItMDQsIE1TUlYgYXBw ZWFycyB0byBiZSBSdXN0IDEuMzYuMCBmb3IgdXNpbmcgdGhlIGNyYXRlIGFuZAorK0FzIG9mIDIw MjQtMDQtMDQsIE1TUlYgYXBwZWFycyB0byBiZSBSdXN0IDEuMzYuMCBmb3IgdXNpbmcgdGhlIGNy YXRlIGFuZAorIDEuNDIuMCBmb3IgZG9jIHRlc3RzIHRvIHBhc3Mgd2l0aG91dCBlcnJvcnMgYWJv dXQgdGhlIGdsb2JhbCBhbGxvY2F0b3IuCisrV2l0aCB0aGUgYHNpbWQtYWNjZWxgIGZlYXR1cmUs IHRoZSBNU1JWIGlzIGV2ZW4gaGlnaGVyLgorIAorICMjIENvbXBhdGliaWxpdHkgd2l0aCBydXN0 LWVuY29kaW5nCisgCisgQSBjb21wYXRpYmlsaXR5IGxheWVyIHRoYXQgaW1wbGVtZW50cyB0aGUg cnVzdC1lbmNvZGluZyBBUEkgb24gdG9wIG9mCisgZW5jb2RpbmdfcnMgaXMKKyBbcHJvdmlkZWQg YXMgYSBzZXBhcmF0ZSBjcmF0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2hzaXZvbmVuL2VuY29kaW5n X3JzX2NvbXBhdCkKKyAoY2Fubm90IGJlIHVwbG9hZGVkIHRvIGNyYXRlcy5pbykuIFRoZSBjb21w YXRpYmlsaXR5IGxheWVyIHdhcyBvcmlnaW5hbGx5Cisgd3JpdHRlbiB3aXRoIHRoZSBhc3N1cHRp b24gdGhhdCBGaXJlZm94IHdvdWxkIG5lZWQgaXQsIGJ1dCBpdCBpcyBub3QgY3VycmVudGx5CitA QCAtNDQxLDIwICs0MjgsMjcgQEAgVG8gcmVnZW5lcmF0ZSB0aGUgZ2VuZXJhdGVkIGNvZGU6Cisg LSBbeF0gSW1wbGVtZW50IHRoZSBydXN0LWVuY29kaW5nIEFQSSBpbiB0ZXJtcyBvZiBlbmNvZGlu Z19ycy4KKyAtIFt4XSBBZGQgU0lNRCBhY2NlbGVyYXRpb24gZm9yIEFhcmNoNjQuCisgLSBbeF0g SW52ZXN0aWdhdGUgdGhlIHVzZSBvZiBORU9OIG9uIDMyLWJpdCBBUk0uCisgLSBbIF0gfkludmVz dGlnYXRlIEJqw7ZybiBIw7Zocm1hbm4ncyBsb29rdXAgdGFibGUgYWNjZWxlcmF0aW9uIGZvciBV VEYtOCBhcworICAgICAgIGFkYXB0ZWQgdG8gUnVzdCBpbiBydXN0LWVuY29kaW5nLn4KKyAtIFt4 XSBBZGQgYWN0dWFsbHkgZmFzdCBDSksgZW5jb2RlIG9wdGlvbnMuCisgLSBbIF0gfkludmVzdGln YXRlIFtCb2IgU3RlYWdhbGwncyBsb29rdXAgdGFibGUgYWNjZWxlcmF0aW9uIGZvciBVVEYtOF0o aHR0cHM6Ly9naXRodWIuY29tL0JvYlN0ZWFnYWxsL0NwcE5vdzIwMTgvYmxvYi9tYXN0ZXIvRmFz dENvbnZlcnNpb25Gcm9tVVRGLTgvRmFzdCUyMENvbnZlcnNpb24lMjBGcm9tJTIwVVRGLTglMjB3 aXRoJTIwQyUyQiUyQiUyQyUyMERGQXMlMkMlMjBhbmQlMjBTU0UlMjBJbnRyaW5zaWNzJTIwLSUy MEJvYiUyMFN0ZWFnYWxsJTIwLSUyMEMlMkIlMkJOb3clMjAyMDE4LnBkZikufgorIC0gW3hdIFBy b3ZpZGUgYSBidWlsZCBtb2RlIHRoYXQgd29ya3Mgd2l0aG91dCBgYWxsb2NgICh3aXRoIGxlc3Nl ciBBUEkgc3VyZmFjZSkuCistLSBbIF0gTWlncmF0ZSB0byBgc3RkOjpzaW1kYCBvbmNlIGl0IGlz IHN0YWJsZSBhbmQgZGVjbGFyZSAxLjAuCisrLSBbeF0gTWlncmF0ZSB0byBgc3RkOjpzaW1kYCB+ b25jZSBpdCBpcyBzdGFibGUgYW5kIGRlY2xhcmUgMS4wLn4KKystIFsgXSBNaWdyYXRlIGB1bnNh ZmVgIHNsaWNlIGFjY2VzcyBieSBsYXJnZXIgdHlwZXMgdGhhbiBgdThgL2B1MTZgIHRvIGBhbGln bl90b2AuCisgCisgIyMgUmVsZWFzZSBOb3RlcworIAorKyMjIyAwLjguMzQKKysKKysqIFVzZSB0 aGUgYHBvcnRhYmxlX3NpbWRgIG5pZ2h0bHkgZmVhdHVyZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFy eSBpbnN0ZWFkIG9mIHRoZSBgcGFja2VkX3NpbWRgIGNyYXRlLiBPbmx5IGFmZmVjdHMgdGhlIGBz aW1kLWFjY2VsYCBvcHRpb25hbCBuaWdodGx5IGZlYXR1cmUuCisrKiBJbnRlcm5hbCBkb2N1bWVu dGF0aW9uIGltcHJvdmVtZW50cyBhbmQgbWlub3IgY29kZSBpbXByb3ZlbWVudHMgYXJvdW5kIGB1 bnNhZmVgLgorKyogQWRkZWQgYHJ1c3QtdmVyc2lvbmAgdG8gYENhcmdvLnRvbWxgLgorKworICMj IyAwLjguMzMKKyAKKyAqIFVzZSBgcGFja2VkX3NpbWRgIGluc3RlYWQgb2YgYHBhY2tlZF9zaW1k XzJgIGFnYWluIG5vdyB0aGF0IHVwZGF0ZXMgYXJlIGJhY2sgdW5kZXIgdGhlIGBwYWNrZWRfc2lt ZGAgbmFtZS4gT25seSBhZmZlY3RzIHRoZSBgc2ltZC1hY2NlbGAgb3B0aW9uYWwgbmlnaHRseSBm ZWF0dXJlLgorIAorICMjIyAwLjguMzIKKyAKKyAqIFJlbW92ZWQgYGJ1aWxkLnJzYC4gKFRoaXMg cmVtb3ZhbCBzaG91bGQgcmVzb2x2ZSBmYWxzZSBwb3NpdGl2ZXMgcmVwb3J0ZWQgYnkgc29tZSBh bnRpdmlydXMgcHJvZHVjdHMuIFRoaXMgbWF5IGJyZWFrIHNvbWUgYnVpbGQgY29uZmlndXJhdGlv bnMgdGhhdCBoYXZlIG9wdGVkIG91dCBvZiBSdXN0J3MgZ3VhcmFudGVlcyBhZ2FpbnN0IGZ1dHVy ZSBidWlsZCBicmVha2FnZS4pCisgKiBJbnRlcm5hbCBjaGFuZ2UgdG8gd2hhdCBBUEkgaXMgdXNl ZCBmb3IgcmVpbnRlcnByZXRpbmcgdGhlIGxhbmUgY29uZmlndXJhdGlvbiBvZiBTSU1EIHZlY3Rv cnMuCitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9zcmMvYXNjaWku cnMgYi90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9hc2NpaS5ycworLS0tIGEvdGhp cmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9zcmMvYXNjaWkucnMKKysrKyBiL3RoaXJkX3BhcnR5 L3J1c3QvZW5jb2RpbmdfcnMvc3JjL2FzY2lpLnJzCitAQCAtNDYsNzEgKzQ2LDg3IEBAIGNmZ19p ZiEgeworICAgICAgICAgI1thbGxvdyhkZWFkX2NvZGUpXQorICAgICAgICAgI1tpbmxpbmUoYWx3 YXlzKV0KKyAgICAgICAgIGZuIGxpa2VseShiOiBib29sKSAtPiBib29sIHsKKyAgICAgICAgICAg ICBiCisgICAgICAgICB9CisgICAgIH0KKyB9CisgCisrLy8gU2FmZXR5IGludmFyaWFudHMgZm9y IG1hc2tzOiBkYXRhICYgbWFzayA9IDAgZm9yIHZhbGlkIEFTQ0lJIG9yIGJhc2ljIGxhdGluIHV0 Zi0xNgorKworIC8vIGBhc2AgdHJ1bmNhdGVzLCBzbyB3b3JrcyBvbiAzMi1iaXQsIHRvby4KKyAj W2FsbG93KGRlYWRfY29kZSldCisgcHViIGNvbnN0IEFTQ0lJX01BU0s6IHVzaXplID0gMHg4MDgw XzgwODBfODA4MF84MDgwdTY0IGFzIHVzaXplOworIAorIC8vIGBhc2AgdHJ1bmNhdGVzLCBzbyB3 b3JrcyBvbiAzMi1iaXQsIHRvby4KKyAjW2FsbG93KGRlYWRfY29kZSldCisgcHViIGNvbnN0IEJB U0lDX0xBVElOX01BU0s6IHVzaXplID0gMHhGRjgwX0ZGODBfRkY4MF9GRjgwdTY0IGFzIHVzaXpl OworIAorICNbYWxsb3codW51c2VkX21hY3JvcyldCisgbWFjcm9fcnVsZXMhIGFzY2lpX25haXZl IHsKKyAgICAgKCRuYW1lOmlkZW50LCAkc3JjX3VuaXQ6dHksICRkc3RfdW5pdDp0eSkgPT4gewor KyAgICAgICAgLy8vIFNhZmV0eTogc3JjIGFuZCBkc3QgbXVzdCBoYXZlIGxlbl91bml0IGVsZW1l bnRzIGFuZCBiZSBhbGlnbmVkCisrICAgICAgICAvLy8gU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6 IHdpbGwgcmV0dXJuIFNvbWUoKSB3aGVuIGl0IGZhaWxzCisrICAgICAgICAvLy8gdG8gY29udmVy dC4gVGhlIGZpcnN0IHZhbHVlIHdpbGwgYmUgYSB1OCB0aGF0IGlzID4gMTI3LgorICAgICAgICAg I1tpbmxpbmUoYWx3YXlzKV0KKyAgICAgICAgIHB1YiB1bnNhZmUgZm4gJG5hbWUoCisgICAgICAg ICAgICAgc3JjOiAqY29uc3QgJHNyY191bml0LAorICAgICAgICAgICAgIGRzdDogKm11dCAkZHN0 X3VuaXQsCisgICAgICAgICAgICAgbGVuOiB1c2l6ZSwKKyAgICAgICAgICkgLT4gT3B0aW9uPCgk c3JjX3VuaXQsIHVzaXplKT4geworICAgICAgICAgICAgIC8vIFllcywgbWFudWFsbHkgb21pdHRp bmcgdGhlIGJvdW5kIGNoZWNrIGhlcmUgbWF0dGVycworICAgICAgICAgICAgIC8vIGEgbG90IGZv ciBwZXJmLgorICAgICAgICAgICAgIGZvciBpIGluIDAuLmxlbiB7CisrICAgICAgICAgICAgICAg IC8vIFNhZmV0eTogbGVuIGludmFyaWFudCB1c2VkIGhlcmUKKyAgICAgICAgICAgICAgICAgbGV0 IGNvZGVfdW5pdCA9ICooc3JjLmFkZChpKSk7CisrICAgICAgICAgICAgICAgIC8vIFNhZmV0eTog VXBob2xkcyBzYWZldHktdXNhYmxlIGludmFyaWFudCBoZXJlCisgICAgICAgICAgICAgICAgIGlm IGNvZGVfdW5pdCA+IDEyNyB7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgoY29k ZV91bml0LCBpKSk7CisgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgLy8gU2Fm ZXR5OiBsZW4gaW52YXJpYW50IHVzZWQgaGVyZQorICAgICAgICAgICAgICAgICAqKGRzdC5hZGQo aSkpID0gY29kZV91bml0IGFzICRkc3RfdW5pdDsKKyAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgcmV0dXJuIE5vbmU7CisgICAgICAgICB9CisgICAgIH07CisgfQorIAorICNbYWxsb3codW51 c2VkX21hY3JvcyldCisgbWFjcm9fcnVsZXMhIGFzY2lpX2FsdSB7CisgICAgICgkbmFtZTppZGVu dCwKKysgICAgIC8vIHNhZmV0eSBpbnZhcmlhbnQ6IHNyYy9kc3QgTVVTVCBiZSB1OAorICAgICAg JHNyY191bml0OnR5LAorICAgICAgJGRzdF91bml0OnR5LAorKyAgICAgLy8gU2FmZXR5IGludmFy aWFudDogc3RyaWRlX2ZuIG11c3QgY29uc3VtZSBhbmQgcHJvZHVjZSB0d28gdXNpemVzLCBhbmQg cmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgbm9uLWFzY2lpIHdoZW4gaXQgZmFpbHMKKyAg ICAgICRzdHJpZGVfZm46aWRlbnQpID0+IHsKKysgICAgICAgIC8vLyBTYWZldHk6IHNyYyBhbmQg ZHN0IG11c3QgaGF2ZSBsZW4gZWxlbWVudHMsIHNyYyBpcyB2YWxpZCBmb3IgcmVhZCwgZHN0IGlz IHZhbGlkIGZvcgorKyAgICAgICAgLy8vIHdyaXRlCisrICAgICAgICAvLy8gU2FmZXR5LXVzYWJs ZSBpbnZhcmlhbnQ6IHdpbGwgcmV0dXJuIFNvbWUoKSB3aGVuIGl0IGZhaWxzCisrICAgICAgICAv Ly8gdG8gY29udmVydC4gVGhlIGZpcnN0IHZhbHVlIHdpbGwgYmUgYSB1OCB0aGF0IGlzID4gMTI3 LgorICAgICAgICAgI1tjZmdfYXR0cihmZWF0dXJlID0gImNhcmdvLWNsaXBweSIsIGFsbG93KG5l dmVyX2xvb3AsIGNhc3RfcHRyX2FsaWdubWVudCkpXQorICAgICAgICAgI1tpbmxpbmUoYWx3YXlz KV0KKyAgICAgICAgIHB1YiB1bnNhZmUgZm4gJG5hbWUoCisgICAgICAgICAgICAgc3JjOiAqY29u c3QgJHNyY191bml0LAorICAgICAgICAgICAgIGRzdDogKm11dCAkZHN0X3VuaXQsCisgICAgICAg ICAgICAgbGVuOiB1c2l6ZSwKKyAgICAgICAgICkgLT4gT3B0aW9uPCgkc3JjX3VuaXQsIHVzaXpl KT4geworICAgICAgICAgICAgIGxldCBtdXQgb2Zmc2V0ID0gMHVzaXplOworICAgICAgICAgICAg IC8vIFRoaXMgbG9vcCBpcyBvbmx5IGJyb2tlbiBvdXQgb2YgYXMgYSBgZ290b2AgZm9yd2FyZAor ICAgICAgICAgICAgIGxvb3AgeworKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHVudGlsX2Fs aWdubWVudCBiZWNvbWVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgd2UgbmVlZCB0byBtdW5jaCB1bnRp bCB3ZSBhcmUgYWxpZ25lZCB0byB1c2l6ZQorICAgICAgICAgICAgICAgICBsZXQgbXV0IHVudGls X2FsaWdubWVudCA9IHsKKyAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBvdGhl ciB1bml0IGFsaWducyBpZiB3ZSBtb3ZlIHRoZSBuYXJyb3dlciB1bml0CisgICAgICAgICAgICAg ICAgICAgICAvLyB0byBhbGlnbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAg ICAgICAgIGlmIDo6Y29yZTo6bWVtOjpzaXplX29mOjo8JHNyY191bml0PigpID09IDo6Y29yZTo6 bWVtOjpzaXplX29mOjo8JGRzdF91bml0PigpIHsKKyAgICAgICAgICAgICAgICAgICAgIC8vIGFz Y2lpX3RvX2FzY2lpCisgICAgICAgICAgICAgICAgICAgICBsZXQgc3JjX2FsaWdubWVudCA9IChz cmMgYXMgdXNpemUpICYgQUxVX0FMSUdOTUVOVF9NQVNLOworICAgICAgICAgICAgICAgICAgICAg bGV0IGRzdF9hbGlnbm1lbnQgPSAoZHN0IGFzIHVzaXplKSAmIEFMVV9BTElHTk1FTlRfTUFTSzsK KyAgICAgICAgICAgICAgICAgICAgIGlmIHNyY19hbGlnbm1lbnQgIT0gZHN0X2FsaWdubWVudCB7 CisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBiYWlscyBlYXJseSBhbmQgZW5k cyB1cCBpbiB0aGUgbmHDr3ZlIGJyYW5jaCB3aGVyZSB1c2l6ZS1hbGlnbm1lbnQgZG9lc24ndCBt YXR0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIChBTFVfQUxJR05NRU5UIC0gc3JjX2FsaWdubWVu dCkgJiBBTFVfQUxJR05NRU5UX01BU0sKKyAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAg ICAgICAgfSBlbHNlIGlmIDo6Y29yZTo6bWVtOjpzaXplX29mOjo8JHNyY191bml0PigpIDwgOjpj b3JlOjptZW06OnNpemVfb2Y6OjwkZHN0X3VuaXQ+KCkgeworICAgICAgICAgICAgICAgICAgICAg Ly8gYXNjaWlfdG9fYmFzaWNfbGF0aW4KKyAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAg ICAgICAgICAgIGxldCBzcmNfdW50aWxfYWxpZ25tZW50ID0gKEFMSUdOTUVOVCAtICgoc3JjIGFz IHVzaXplKSAmIEFMSUdOTUVOVF9NQVNLKSkgJiBBTElHTk1FTlRfTUFTSzsKKyAgICAgICAgICAg ICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgIGlmIChkc3QuYWRkKHNyY191bnRpbF9hbGln bm1lbnQpIGFzIHVzaXplKSAmIEFMSUdOTUVOVF9NQVNLICE9IDAgeworICAgICAgICAgICAgICAg ICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworQEAgLTEyOSw3NCArMTQ1LDEw NCBAQCBtYWNyb19ydWxlcyEgYXNjaWlfYWx1IHsKKyAgICAgICAgICAgICAgICAgICAgIC8vIE1v dmluZyBwb2ludGVycyB0byBhbGlnbm1lbnQgc2VlbXMgdG8gYmUgYSBwZXNzaW1pemF0aW9uIG9u CisgICAgICAgICAgICAgICAgICAgICAvLyB4ODZfNjQgZm9yIG9wZXJhdGlvbnMgdGhhdCBoYXZl IFVURi0xNiBhcyB0aGUgaW50ZXJuYWwKKyAgICAgICAgICAgICAgICAgICAgIC8vIFVuaWNvZGUg cmVwcmVzZW50YXRpb24uIEhvd2V2ZXIsIHNpbmNlIGl0IHNlZW1zIHRvIGJlIGEgd2luCisgICAg ICAgICAgICAgICAgICAgICAvLyBvbiBBUk0gKHRlc3RlZCBBUk12NyBjb2RlIHJ1bm5pbmcgb24g QVJNdjggW3JwaTNdKSwgZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAvLyBtaXhlZCByZXN1 bHRzIHdoZW4gZW5jb2RpbmcgZnJvbSBVVEYtMTYgYW5kIHNpbmNlIHg4NiBhbmQKKyAgICAgICAg ICAgICAgICAgICAgIC8vIHg4Nl82NCBzaG91bGQgYmUgdXNpbmcgU1NFMiBpbiBkdWUgY291cnNl LCBrZWVwaW5nIHRoZSBtb3ZlCisgICAgICAgICAgICAgICAgICAgICAvLyB0byBhbGlnbm1lbnQg aGVyZS4gSXQgd291bGQgYmUgZ29vZCB0byB0ZXN0IG9uIG1vcmUgQVJNIENQVXMKKyAgICAgICAg ICAgICAgICAgICAgIC8vIGFuZCBvbiByZWFsIE1JUFMgYW5kIFBPV0VSIGhhcmR3YXJlLgorKyAg ICAgICAgICAgICAgICAgICAgLy8KKysgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhp cyBpcyB0aGUgbmHDr3ZlIGNvZGUgb25jZSBhZ2FpbiwgZm9yIGB1bnRpbF9hbGlnbm1lbnRgIGJ5 dGVzCisgICAgICAgICAgICAgICAgICAgICB3aGlsZSB1bnRpbF9hbGlnbm1lbnQgIT0gMCB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvZGVfdW5pdCA9ICooc3JjLmFkZChvZmZzZXQp KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb2RlX3VuaXQgPiAxMjcgeworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFVwaG9sZHMgc2FmZXR5LXVzYWJsZSBp bnZhcmlhbnQgaGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgo Y29kZV91bml0LCBvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgICAgICAgKihkc3QuYWRkKG9mZnNldCkpID0gY29kZV91bml0IGFzICRkc3Rf dW5pdDsKKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IG9mZnNldCBpcyB0aGUg bnVtYmVyIG9mIGJ5dGVzIGNvcGllZCBzbyBmYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICBv ZmZzZXQgKz0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnRpbF9hbGlnbm1lbnQgLT0g MTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGxldCBsZW5f bWludXNfc3RyaWRlID0gbGVuIC0gQUxVX1NUUklERV9TSVpFOworICAgICAgICAgICAgICAgICAg ICAgbG9vcCB7CisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBudW1fYXNjaWkg aXMga25vd24gdG8gYmUgYSBieXRlIGluZGV4IG9mIGEgbm9uLWFzY2lpIGJ5dGUgZHVlIHRvIHN0 cmlkZV9mbidzIGludmFyaWFudAorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxldCBTb21l KG51bV9hc2NpaSkgPSAkc3RyaWRlX2ZuKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyBTYWZldHk6IFRoZXNlIGFyZSBrbm93biB0byBiZSB2YWxpZCBhbmQgYWxpZ25lZCBzaW5jZSB3 ZSBoYXZlIGF0CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlYXN0IEFMVV9TVFJJ REVfU0laRSBkYXRhIGluIHRoZXNlIGJ1ZmZlcnMsIGFuZCBvZmZzZXQgaXMgdGhlCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBlbGVtZW50cyBjb3BpZWQgc28gZmFy LCB3aGljaCBhY2NvcmRpbmcgdG8gdGhlCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IHVudGlsX2FsaWdubWVudCBjYWxjdWxhdGlvbiBhYm92ZSB3aWxsIGNhdXNlIGJvdGggc3JjIGFu ZCBkc3QgdG8gYmUKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxpZ25lZCB0byB1 c2l6ZSBhZnRlciB0aGlzIGFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMuYWRk KG9mZnNldCkgYXMgKmNvbnN0IHVzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk c3QuYWRkKG9mZnNldCkgYXMgKm11dCB1c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAp IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IG51bV9hc2NpaTsKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBVcGhvbGRzIHNhZmV0eS11c2Fi bGUgaW52YXJpYW50IGhlcmUgYnkgaW5kZXhpbmcgaW50byBub24tYXNjaWkgYnl0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgoKihzcmMuYWRkKG9mZnNldCkpLCBv ZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAg ICAgICAgLy8gU2FmZXR5OiBvZmZzZXQgY29udGludWVzIHRvIGJlIHRoZSBudW1iZXIgb2YgYnl0 ZXMgY29waWVkIHNvIGZhciwgYW5kCisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFpbnRh aW5zIHVzaXplIGFsaWdubWVudCBmb3IgdGhlIG5leHQgbG9vcCBpdGVyYXRpb24KKyAgICAgICAg ICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gQUxVX1NUUklERV9TSVpFOworKyAgICAgICAgICAg ICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0gc3RyaWRlLiBU aGlzIGxvb3Agd2lsbCBjb250aW51ZSBhcyBsb25nIGFzCisrICAgICAgICAgICAgICAgICAgICAg ICAgLy8gYG9mZnNldCA8PSBsZW4gLSBzdHJpZGVgLCB3aGljaCBtZWFucyB0aGVyZSBhcmUgYHN0 cmlkZWAgYnl0ZXMgdG8gc3RpbGwgYmUgcmVhZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBvZmZzZXQgPiBsZW5fbWludXNfc3RyaWRlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgIH0KKysKKysgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMgaXMgdGhlIG5hw692ZSBj b2RlLCBzYW1lIGFzIGFzY2lpX25haXZlLCBhbmQgaGFzIG5vIHJlcXVpcmVtZW50cworKyAgICAg ICAgICAgIC8vIG90aGVyIHRoYW4gc3JjL2RzdCBiZWluZyB2YWxpZCBmb3IgdGhlIHRoZSByaWdo dCBsZW5zCisgICAgICAgICAgICAgd2hpbGUgb2Zmc2V0IDwgbGVuIHsKKysgICAgICAgICAgICAg ICAgLy8gU2FmZXR5OiBsZW4gaW52YXJpYW50IHVzZWQgaGVyZQorICAgICAgICAgICAgICAgICBs ZXQgY29kZV91bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOworICAgICAgICAgICAgICAgICBpZiBj b2RlX3VuaXQgPiAxMjcgeworKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBVcGhvbGRz IHNhZmV0eS11c2FibGUgaW52YXJpYW50IGhlcmUKKyAgICAgICAgICAgICAgICAgICAgIHJldHVy biBTb21lKChjb2RlX3VuaXQsIG9mZnNldCkpOworICAgICAgICAgICAgICAgICB9CisrICAgICAg ICAgICAgICAgIC8vIFNhZmV0eTogbGVuIGludmFyaWFudCB1c2VkIGhlcmUKKyAgICAgICAgICAg ICAgICAgKihkc3QuYWRkKG9mZnNldCkpID0gY29kZV91bml0IGFzICRkc3RfdW5pdDsKKyAgICAg ICAgICAgICAgICAgb2Zmc2V0ICs9IDE7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIE5v bmUKKyAgICAgICAgIH0KKyAgICAgfTsKKyB9CisgCisgI1thbGxvdyh1bnVzZWRfbWFjcm9zKV0K KyBtYWNyb19ydWxlcyEgYmFzaWNfbGF0aW5fYWx1IHsKKyAgICAgKCRuYW1lOmlkZW50LAorKyAg ICAvLyBzYWZldHkgaW52YXJpYW50OiB1c2UgdTggZm9yIHNyYy9kZXN0IGZvciBhc2NpaSwgYW5k IHUxNiBmb3IgYmFzaWNfbGF0aW4KKyAgICAgICRzcmNfdW5pdDp0eSwKKyAgICAgICRkc3RfdW5p dDp0eSwKKysgICAgLy8gc2FmZXR5IGludmFyaWFudDogc3RyaWRlIGZ1bmN0aW9uIG11c3QgbXVu Y2ggQUxVX1NUUklERV9TSVpFKnNpemUoc3JjX3VuaXQpIGJ5dGVzIG9mZiBvZiBzcmMgYW5kCisr ICAgIC8vIHdyaXRlIEFMVV9TVFJJREVfU0laRSpzaXplKGRzdF91bml0KSBieXRlcyB0byBkc3QK KyAgICAgICRzdHJpZGVfZm46aWRlbnQpID0+IHsKKysgICAgICAgIC8vLyBTYWZldHk6IHNyYyBh bmQgZHN0IG11c3QgaGF2ZSBsZW4gZWxlbWVudHMsIHNyYyBpcyB2YWxpZCBmb3IgcmVhZCwgZHN0 IGlzIHZhbGlkIGZvcgorKyAgICAgICAgLy8vIHdyaXRlCisrICAgICAgICAvLy8gU2FmZXR5LXVz YWJsZSBpbnZhcmlhbnQ6IHdpbGwgcmV0dXJuIFNvbWUoKSB3aGVuIGl0IGZhaWxzCisrICAgICAg ICAvLy8gdG8gY29udmVydC4gVGhlIGZpcnN0IHZhbHVlIHdpbGwgYmUgYSB1OCB0aGF0IGlzID4g MTI3LgorICAgICAgICAgI1tjZmdfYXR0cigKKyAgICAgICAgICAgICBmZWF0dXJlID0gImNhcmdv LWNsaXBweSIsCisgICAgICAgICAgICAgYWxsb3cobmV2ZXJfbG9vcCwgY2FzdF9wdHJfYWxpZ25t ZW50LCBjYXN0X2xvc3NsZXNzKQorICAgICAgICAgKV0KKyAgICAgICAgICNbaW5saW5lKGFsd2F5 cyldCisgICAgICAgICBwdWIgdW5zYWZlIGZuICRuYW1lKAorICAgICAgICAgICAgIHNyYzogKmNv bnN0ICRzcmNfdW5pdCwKKyAgICAgICAgICAgICBkc3Q6ICptdXQgJGRzdF91bml0LAorICAgICAg ICAgICAgIGxlbjogdXNpemUsCisgICAgICAgICApIC0+IE9wdGlvbjwoJHNyY191bml0LCB1c2l6 ZSk+IHsKKyAgICAgICAgICAgICBsZXQgbXV0IG9mZnNldCA9IDB1c2l6ZTsKKyAgICAgICAgICAg ICAvLyBUaGlzIGxvb3AgaXMgb25seSBicm9rZW4gb3V0IG9mIGFzIGEgYGdvdG9gIGZvcndhcmQK KyAgICAgICAgICAgICBsb29wIHsKKysgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB1bnRpbF9h bGlnbm1lbnQgYmVjb21lcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdlIG5lZWQgdG8gbXVuY2ggZnJv bSBzcmMvZGVzdCB1bnRpbCB3ZSBhcmUgYWxpZ25lZCB0byB1c2l6ZQorKyAgICAgICAgICAgICAg ICAvLyBXZSBlbnN1cmUgYmFzaWMtbGF0aW4gaGFzIHRoZSBzYW1lIGFsaWdubWVudCBhcyBhc2Np aSwgc3RhcnRpbmcgd2l0aCBhc2NpaSBzaW5jZSBpdCBpcyBzbWFsbGVyLgorICAgICAgICAgICAg ICAgICBsZXQgbXV0IHVudGlsX2FsaWdubWVudCA9IHsKKyAgICAgICAgICAgICAgICAgICAgIC8v IENoZWNrIGlmIHRoZSBvdGhlciB1bml0IGFsaWducyBpZiB3ZSBtb3ZlIHRoZSBuYXJyb3dlciB1 bml0CisgICAgICAgICAgICAgICAgICAgICAvLyB0byBhbGlnbm1lbnQuCisgICAgICAgICAgICAg ICAgICAgICAvLyAgICAgICAgICAgICAgIGlmIDo6Y29yZTo6bWVtOjpzaXplX29mOjo8JHNyY191 bml0PigpID09IDo6Y29yZTo6bWVtOjpzaXplX29mOjo8JGRzdF91bml0PigpIHsKKyAgICAgICAg ICAgICAgICAgICAgIC8vIGFzY2lpX3RvX2FzY2lpCisgICAgICAgICAgICAgICAgICAgICAvLyAg ICAgICAgICAgICAgICAgICBsZXQgc3JjX2FsaWdubWVudCA9IChzcmMgYXMgdXNpemUpICYgQUxJ R05NRU5UX01BU0s7CisgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICBs ZXQgZHN0X2FsaWdubWVudCA9IChkc3QgYXMgdXNpemUpICYgQUxJR05NRU5UX01BU0s7CisgICAg ICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICBpZiBzcmNfYWxpZ25tZW50ICE9 IGRzdF9hbGlnbm1lbnQgeworQEAgLTIzMiw2NiArMjc4LDg5IEBAIG1hY3JvX3J1bGVzISBiYXNp Y19sYXRpbl9hbHUgeworICAgICAgICAgICAgICAgICAgICAgLy8gTW92aW5nIHBvaW50ZXJzIHRv IGFsaWdubWVudCBzZWVtcyB0byBiZSBhIHBlc3NpbWl6YXRpb24gb24KKyAgICAgICAgICAgICAg ICAgICAgIC8vIHg4Nl82NCBmb3Igb3BlcmF0aW9ucyB0aGF0IGhhdmUgVVRGLTE2IGFzIHRoZSBp bnRlcm5hbAorICAgICAgICAgICAgICAgICAgICAgLy8gVW5pY29kZSByZXByZXNlbnRhdGlvbi4g SG93ZXZlciwgc2luY2UgaXQgc2VlbXMgdG8gYmUgYSB3aW4KKyAgICAgICAgICAgICAgICAgICAg IC8vIG9uIEFSTSAodGVzdGVkIEFSTXY3IGNvZGUgcnVubmluZyBvbiBBUk12OCBbcnBpM10pLCBl eGNlcHQKKyAgICAgICAgICAgICAgICAgICAgIC8vIG1peGVkIHJlc3VsdHMgd2hlbiBlbmNvZGlu ZyBmcm9tIFVURi0xNiBhbmQgc2luY2UgeDg2IGFuZAorICAgICAgICAgICAgICAgICAgICAgLy8g eDg2XzY0IHNob3VsZCBiZSB1c2luZyBTU0UyIGluIGR1ZSBjb3Vyc2UsIGtlZXBpbmcgdGhlIG1v dmUKKyAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGFsaWdubWVudCBoZXJlLiBJdCB3b3VsZCBi ZSBnb29kIHRvIHRlc3Qgb24gbW9yZSBBUk0gQ1BVcworICAgICAgICAgICAgICAgICAgICAgLy8g YW5kIG9uIHJlYWwgTUlQUyBhbmQgUE9XRVIgaGFyZHdhcmUuCisrICAgICAgICAgICAgICAgICAg ICAvLworKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIHRoZSBuYcOvdmUg Y29kZSBvbmNlIGFnYWluLCBmb3IgYHVudGlsX2FsaWdubWVudGAgYnl0ZXMKKyAgICAgICAgICAg ICAgICAgICAgIHdoaWxlIHVudGlsX2FsaWdubWVudCAhPSAwIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBsZXQgY29kZV91bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOworICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIGNvZGVfdW5pdCA+IDEyNyB7CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogVXBob2xkcyBzYWZldHktdXNhYmxlIGludmFyaWFudCBoZXJlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTb21lKChjb2RlX3VuaXQsIG9mZnNl dCkpOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAqKGRzdC5hZGQob2Zmc2V0KSkgPSBjb2RlX3VuaXQgYXMgJGRzdF91bml0OworKyAgICAgICAg ICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogb2Zmc2V0IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMg Y29waWVkIHNvIGZhcgorICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOworICAg ICAgICAgICAgICAgICAgICAgICAgIHVudGlsX2FsaWdubWVudCAtPSAxOworICAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgbGV0IGxlbl9taW51c19zdHJpZGUgPSBs ZW4gLSBBTFVfU1RSSURFX1NJWkU7CisgICAgICAgICAgICAgICAgICAgICBsb29wIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAhJHN0cmlkZV9mbigKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gU2FmZXR5OiBUaGVzZSBhcmUga25vd24gdG8gYmUgdmFsaWQgYW5kIGFsaWdu ZWQgc2luY2Ugd2UgaGF2ZSBhdAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsZWFz dCBBTFVfU1RSSURFX1NJWkUgZGF0YSBpbiB0aGVzZSBidWZmZXJzLCBhbmQgb2Zmc2V0IGlzIHRo ZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2YgZWxlbWVudHMgY29w aWVkIHNvIGZhciwgd2hpY2ggYWNjb3JkaW5nIHRvIHRoZQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyB1bnRpbF9hbGlnbm1lbnQgY2FsY3VsYXRpb24gYWJvdmUgd2lsbCBjYXVzZSBi b3RoIHNyYyBhbmQgZHN0IHRvIGJlCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFs aWduZWQgdG8gdXNpemUgYWZ0ZXIgdGhpcyBhZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3JjLmFkZChvZmZzZXQpIGFzICpjb25zdCB1c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZHN0LmFkZChvZmZzZXQpIGFzICptdXQgdXNpemUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6 IG9mZnNldCBjb250aW51ZXMgdG8gYmUgdGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQgc28gZmFy LCBhbmQKKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWludGFpbnMgdXNpemUgYWxpZ25t ZW50IGZvciB0aGUgbmV4dCBsb29wIGl0ZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAg IG9mZnNldCArPSBBTFVfU1RSSURFX1NJWkU7CisrICAgICAgICAgICAgICAgICAgICAgICAgLy8g U2FmZXR5OiBUaGlzIGlzIGBvZmZzZXQgPiBsZW4gLSBzdHJpZGUuIFRoaXMgbG9vcCB3aWxsIGNv bnRpbnVlIGFzIGxvbmcgYXMKKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBgb2Zmc2V0IDw9 IGxlbiAtIHN0cmlkZWAsIHdoaWNoIG1lYW5zIHRoZXJlIGFyZSBgc3RyaWRlYCBieXRlcyB0byBz dGlsbCBiZSByZWFkLgorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9mZnNldCA+IGxlbl9t aW51c19zdHJpZGUgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgfQorKyAgICAg ICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyB0aGUgbmHDr3ZlIGNvZGUgb25jZSBhZ2FpbiwgZm9y IGxlZnRvdmVyIGJ5dGVzCisgICAgICAgICAgICAgd2hpbGUgb2Zmc2V0IDwgbGVuIHsKKysgICAg ICAgICAgICAgICAgLy8gU2FmZXR5OiBsZW4gaW52YXJpYW50IHVzZWQgaGVyZQorICAgICAgICAg ICAgICAgICBsZXQgY29kZV91bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOworICAgICAgICAgICAg ICAgICBpZiBjb2RlX3VuaXQgPiAxMjcgeworKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5 OiBVcGhvbGRzIHNhZmV0eS11c2FibGUgaW52YXJpYW50IGhlcmUKKyAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBTb21lKChjb2RlX3VuaXQsIG9mZnNldCkpOworICAgICAgICAgICAgICAgICB9 CisrICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogbGVuIGludmFyaWFudCB1c2VkIGhlcmUKKyAg ICAgICAgICAgICAgICAgKihkc3QuYWRkKG9mZnNldCkpID0gY29kZV91bml0IGFzICRkc3RfdW5p dDsKKyAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7CisgICAgICAgICAgICAgfQorICAgICAg ICAgICAgIE5vbmUKKyAgICAgICAgIH0KKyAgICAgfTsKKyB9CisgCisgI1thbGxvdyh1bnVzZWRf bWFjcm9zKV0KKyBtYWNyb19ydWxlcyEgbGF0aW4xX2FsdSB7CisrICAgIC8vIHNhZmV0eSBpbnZh cmlhbnQ6IHN0cmlkZSBmdW5jdGlvbiBtdXN0IG11bmNoIEFMVV9TVFJJREVfU0laRSpzaXplKHNy Y191bml0KSBieXRlcyBvZmYgb2Ygc3JjIGFuZAorKyAgICAvLyB3cml0ZSBBTFVfU1RSSURFX1NJ WkUqc2l6ZShkc3RfdW5pdCkgYnl0ZXMgdG8gZHN0CisgICAgICgkbmFtZTppZGVudCwgJHNyY191 bml0OnR5LCAkZHN0X3VuaXQ6dHksICRzdHJpZGVfZm46aWRlbnQpID0+IHsKKysgICAgICAgIC8v LyBTYWZldHk6IHNyYyBhbmQgZHN0IG11c3QgaGF2ZSBsZW4gZWxlbWVudHMsIHNyYyBpcyB2YWxp ZCBmb3IgcmVhZCwgZHN0IGlzIHZhbGlkIGZvcgorKyAgICAgICAgLy8vIHdyaXRlCisgICAgICAg ICAjW2NmZ19hdHRyKAorICAgICAgICAgICAgIGZlYXR1cmUgPSAiY2FyZ28tY2xpcHB5IiwKKyAg ICAgICAgICAgICBhbGxvdyhuZXZlcl9sb29wLCBjYXN0X3B0cl9hbGlnbm1lbnQsIGNhc3RfbG9z c2xlc3MpCisgICAgICAgICApXQorICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICAgICAg IHB1YiB1bnNhZmUgZm4gJG5hbWUoc3JjOiAqY29uc3QgJHNyY191bml0LCBkc3Q6ICptdXQgJGRz dF91bml0LCBsZW46IHVzaXplKSB7CisgICAgICAgICAgICAgbGV0IG11dCBvZmZzZXQgPSAwdXNp emU7CisgICAgICAgICAgICAgLy8gVGhpcyBsb29wIGlzIG9ubHkgYnJva2VuIG91dCBvZiBhcyBh IGBnb3RvYCBmb3J3YXJkCisgICAgICAgICAgICAgbG9vcCB7CisrICAgICAgICAgICAgICAgIC8v IFNhZmV0eTogdW50aWxfYWxpZ25tZW50IGJlY29tZXMgdGhlIG51bWJlciBvZiBieXRlcyB3ZSBu ZWVkIHRvIG11bmNoIGZyb20gc3JjL2Rlc3QgdW50aWwgd2UgYXJlIGFsaWduZWQgdG8gdXNpemUK KysgICAgICAgICAgICAgICAgLy8gV2UgZW5zdXJlIHRoZSBVVEYtMTYgc2lkZSBoYXMgdGhlIHNh bWUgYWxpZ25tZW50IGFzIHRoZSBMYXRpbi0xIHNpZGUsIHN0YXJ0aW5nIHdpdGggTGF0aW4tMSBz aW5jZSBpdCBpcyBzbWFsbGVyLgorICAgICAgICAgICAgICAgICBsZXQgbXV0IHVudGlsX2FsaWdu bWVudCA9IHsKKyAgICAgICAgICAgICAgICAgICAgIGlmIDo6Y29yZTo6bWVtOjpzaXplX29mOjo8 JHNyY191bml0PigpIDwgOjpjb3JlOjptZW06OnNpemVfb2Y6OjwkZHN0X3VuaXQ+KCkgeworICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIHVucGFjaworICAgICAgICAgICAgICAgICAgICAgICAg IGxldCBzcmNfdW50aWxfYWxpZ25tZW50ID0gKEFMVV9BTElHTk1FTlQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLSAoKHNyYyBhcyB1c2l6ZSkgJiBBTFVfQUxJR05NRU5UX01BU0spKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIEFMVV9BTElHTk1FTlRfTUFTSzsKKyAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoZHN0LndyYXBwaW5nX2FkZChzcmNfdW50aWxfYWxpZ25t ZW50KSBhcyB1c2l6ZSkgJiBBTFVfQUxJR05NRU5UX01BU0sKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIT0gMAorQEAgLTMwOCwzNzMgKzM3Nyw0ODUgQEAgbWFjcm9fcnVsZXMhIGxhdGlu MV9hbHUgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSAwCisgICAgICAgICAgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgZHN0X3VudGls X2FsaWdubWVudAorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9Owor ICAgICAgICAgICAgICAgICBpZiB1bnRpbF9hbGlnbm1lbnQgKyBBTFVfU1RSSURFX1NJWkUgPD0g bGVuIHsKKysgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyB0aGUgbmHDr3Zl IGNvZGUgb25jZSBhZ2FpbiwgZm9yIGB1bnRpbF9hbGlnbm1lbnRgIGJ5dGVzCisgICAgICAgICAg ICAgICAgICAgICB3aGlsZSB1bnRpbF9hbGlnbm1lbnQgIT0gMCB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgbGV0IGNvZGVfdW5pdCA9ICooc3JjLmFkZChvZmZzZXQpKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAqKGRzdC5hZGQob2Zmc2V0KSkgPSBjb2RlX3VuaXQgYXMgJGRzdF91bml0 OworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogb2Zmc2V0IGlzIHRoZSBudW1i ZXIgb2YgYnl0ZXMgY29waWVkIHNvIGZhcgorICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl dCArPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgIHVudGlsX2FsaWdubWVudCAtPSAxOwor ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgbGV0IGxlbl9taW51 c19zdHJpZGUgPSBsZW4gLSBBTFVfU1RSSURFX1NJWkU7CisgICAgICAgICAgICAgICAgICAgICBs b29wIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAkc3RyaWRlX2ZuKAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoZXNlIGFyZSBrbm93biB0byBiZSB2YWxpZCBh bmQgYWxpZ25lZCBzaW5jZSB3ZSBoYXZlIGF0CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vIGxlYXN0IEFMVV9TVFJJREVfU0laRSBkYXRhIGluIHRoZXNlIGJ1ZmZlcnMsIGFuZCBvZmZz ZXQgaXMgdGhlCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBlbGVt ZW50cyBjb3BpZWQgc28gZmFyLCB3aGljaCBhY2NvcmRpbmcgdG8gdGhlCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIHVudGlsX2FsaWdubWVudCBjYWxjdWxhdGlvbiBhYm92ZSB3aWxs IGNhdXNlIGJvdGggc3JjIGFuZCBkc3QgdG8gYmUKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gYWxpZ25lZCB0byB1c2l6ZSBhZnRlciB0aGlzIGFkZAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzcmMuYWRkKG9mZnNldCkgYXMgKmNvbnN0IHVzaXplLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkc3QuYWRkKG9mZnNldCkgYXMgKm11dCB1c2l6ZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICApOworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTog b2Zmc2V0IGNvbnRpbnVlcyB0byBiZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCBzbyBmYXIs IGFuZAorKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1haW50YWlucyB1c2l6ZSBhbGlnbm1l bnQgZm9yIHRoZSBuZXh0IGxvb3AgaXRlcmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAg b2Zmc2V0ICs9IEFMVV9TVFJJREVfU0laRTsKKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBT YWZldHk6IFRoaXMgaXMgYG9mZnNldCA+IGxlbiAtIHN0cmlkZS4gVGhpcyBsb29wIHdpbGwgY29u dGludWUgYXMgbG9uZyBhcworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBvZmZzZXQgPD0g bGVuIC0gc3RyaWRlYCwgd2hpY2ggbWVhbnMgdGhlcmUgYXJlIGBzdHJpZGVgIGJ5dGVzIHRvIHN0 aWxsIGJlIHJlYWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21p bnVzX3N0cmlkZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICB9CisrICAgICAg ICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIHRoZSBuYcOvdmUgY29kZSBvbmNlIGFnYWluLCBmb3Ig bGVmdG92ZXIgYnl0ZXMKKyAgICAgICAgICAgICB3aGlsZSBvZmZzZXQgPCBsZW4geworKyAgICAg ICAgICAgICAgICAvLyBTYWZldHk6IGxlbiBpbnZhcmlhbnQgdXNlZCBoZXJlCisgICAgICAgICAg ICAgICAgIGxldCBjb2RlX3VuaXQgPSAqKHNyYy5hZGQob2Zmc2V0KSk7CisgICAgICAgICAgICAg ICAgICooZHN0LmFkZChvZmZzZXQpKSA9IGNvZGVfdW5pdCBhcyAkZHN0X3VuaXQ7CisgICAgICAg ICAgICAgICAgIG9mZnNldCArPSAxOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAg fTsKKyB9CisgCisgI1thbGxvdyh1bnVzZWRfbWFjcm9zKV0KKyBtYWNyb19ydWxlcyEgYXNjaWlf c2ltZF9jaGVja19hbGlnbiB7CisgICAgICgKKyAgICAgICAgICRuYW1lOmlkZW50LAorICAgICAg ICAgJHNyY191bml0OnR5LAorICAgICAgICAgJGRzdF91bml0OnR5LAorKyAgICAgICAgLy8gU2Fm ZXR5OiBUaGlzIGZ1bmN0aW9uIG11c3QgcmVxdWlyZSBhbGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJl IHZhbGlkIGZvciByZWFkaW5nL3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBzcmNfdW5pdC9kc3Rf dW5pdAorICAgICAgICAgJHN0cmlkZV9ib3RoX2FsaWduZWQ6aWRlbnQsCisrICAgICAgICAvLyBT YWZldHk6IFRoaXMgZnVuY3Rpb24gbXVzdCByZXF1aXJlIGFsaWduZWQvdW5hbGlnbmVkIHNyYy9k ZXN0IHRoYXQgYXJlIHZhbGlkIGZvciByZWFkaW5nL3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBz cmNfdW5pdC9kc3RfdW5pdAorICAgICAgICAgJHN0cmlkZV9zcmNfYWxpZ25lZDppZGVudCwKKysg ICAgICAgIC8vIFNhZmV0eTogVGhpcyBmdW5jdGlvbiBtdXN0IHJlcXVpcmUgdW5hbGlnbmVkL2Fs aWduZWQgc3JjL2Rlc3QgdGhhdCBhcmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBTSU1EX1NU UklERV9TSVpFIHNyY191bml0L2RzdF91bml0CisgICAgICAgICAkc3RyaWRlX2RzdF9hbGlnbmVk OmlkZW50LAorKyAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGZ1bmN0aW9uIG11c3QgcmVxdWlyZSB1 bmFsaWduZWQgc3JjL2Rlc3QgdGhhdCBhcmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBTSU1E X1NUUklERV9TSVpFIHNyY191bml0L2RzdF91bml0CisgICAgICAgICAkc3RyaWRlX25laXRoZXJf YWxpZ25lZDppZGVudAorICAgICApID0+IHsKKysgICAgICAgIC8vLyBTYWZldHk6IHNyYy9kc3Qg bXVzdCBiZSB2YWxpZCBmb3IgcmVhZHMvd3JpdGVzIG9mIGBsZW5gIGVsZW1lbnRzIG9mIHRoZWly IHVuaXRzLgorKyAgICAgICAgLy8vCisrICAgICAgICAvLy8gU2FmZXR5LXVzYWJsZSBpbnZhcmlh bnQ6IHdpbGwgcmV0dXJuIFNvbWUoKSB3aGVuIGl0IGVuY291bnRlcnMgbm9uLUFTQ0lJLCB3aXRo IHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBTb21lIGJlaW5nCisrICAgICAgICAvLy8gZ3VhcmFu dGVlZCB0byBiZSBub24tQVNDSUkgKD4gMTI3KSwgYW5kIHRoZSBzZWNvbmQgYmVpbmcgdGhlIG9m ZnNldCB3aGVyZSBpdCBpcyBmb3VuZAorICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICAg ICAgIHB1YiB1bnNhZmUgZm4gJG5hbWUoCisgICAgICAgICAgICAgc3JjOiAqY29uc3QgJHNyY191 bml0LAorICAgICAgICAgICAgIGRzdDogKm11dCAkZHN0X3VuaXQsCisgICAgICAgICAgICAgbGVu OiB1c2l6ZSwKKyAgICAgICAgICkgLT4gT3B0aW9uPCgkc3JjX3VuaXQsIHVzaXplKT4geworICAg ICAgICAgICAgIGxldCBtdXQgb2Zmc2V0ID0gMHVzaXplOworKyAgICAgICAgICAgIC8vIFNhZmV0 eTogaWYgdGhpcyBjaGVjayBzdWNjZWVkcyB3ZSdyZSB2YWxpZCBmb3IgcmVhZGluZy93cml0aW5n IGF0IGxlYXN0IGBTSU1EX1NUUklERV9TSVpFYCBlbGVtZW50cy4KKyAgICAgICAgICAgICBpZiBT SU1EX1NUUklERV9TSVpFIDw9IGxlbiB7CisgICAgICAgICAgICAgICAgIGxldCBsZW5fbWludXNf c3RyaWRlID0gbGVuIC0gU0lNRF9TVFJJREVfU0laRTsKKyAgICAgICAgICAgICAgICAgLy8gWFhY IFNob3VsZCB3ZSBmaXJzdCBwcm9jZXNzIG9uZSBzdHJpZGUgdW5jb25kaXRpb25hbGx5IGFzIHVu YWxpZ25lZCB0bworICAgICAgICAgICAgICAgICAvLyBhdm9pZCB0aGUgY29zdCBvZiB0aGUgYnJh bmNoaW5lc3MgYmVsb3cgaWYgdGhlIGZpcnN0IHN0cmlkZSBmYWlscyBhbnl3YXk/CisgICAgICAg ICAgICAgICAgIC8vIFhYWCBTaG91bGQgd2UganVzdCB1c2UgdW5hbGlnbmVkIFNTRTIgYWNjZXNz IHVuY29uZGl0aW9uYWxseT8gSXQgc2VlbXMgdGhhdAorICAgICAgICAgICAgICAgICAvLyBvbiBI YXN3ZWxsLCBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGp1c3QgdXNlIHVuYWxpZ25lZCBhbmQgbm90 IGJvdGhlcgorICAgICAgICAgICAgICAgICAvLyBjaGVja2luZy4gTmVlZCB0byBiZW5jaG1hcmsg b2xkZXIgYXJjaGl0ZWN0dXJlcyBiZWZvcmUgZGVjaWRpbmcuCisgICAgICAgICAgICAgICAgIGxl dCBkc3RfbWFza2VkID0gKGRzdCBhcyB1c2l6ZSkgJiBTSU1EX0FMSUdOTUVOVF9NQVNLOworKyAg ICAgICAgICAgICAgICAvLyBTYWZldHk6IGNoZWNraW5nIHdoZXRoZXIgc3JjIGlzIGFsaWduZWQK KyAgICAgICAgICAgICAgICAgaWYgKChzcmMgYXMgdXNpemUpICYgU0lNRF9BTElHTk1FTlRfTUFT SykgPT0gMCB7CisrICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IENoZWNraW5nIHdoZXRo ZXIgZHN0IGlzIGFsaWduZWQKKyAgICAgICAgICAgICAgICAgICAgIGlmIGRzdF9tYXNrZWQgPT0g MCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCB7CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIFNhZmV0eTogV2UncmUgdmFsaWQgdG8gcmVhZC93cml0ZSBTSU1EX1NUUklE RV9TSVpFIGVsZW1lbnRzIGFuZCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBhbGlnbm1lbnRzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICEkc3RyaWRlX2JvdGhfYWxpZ25lZChzcmMuYWRk KG9mZnNldCksIGRzdC5hZGQob2Zmc2V0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkU7CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0gU0lN RF9TVFJJREVfU0laRWAgd2hpY2ggbWVhbnMgd2UgYWx3YXlzIGhhdmUgYXQgbGVhc3QgYFNJTURf U1RSSURFX1NJWkVgIGVsZW1lbnRzIHRvIG11bmNoIG5leHQgdGltZS4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVzX3N0cmlkZSB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCB7CisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UncmUgdmFsaWQgdG8gcmVhZC93cml0ZSBTSU1EX1NU UklERV9TSVpFIGVsZW1lbnRzIGFuZCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBhbGlnbm1lbnRzCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICEkc3RyaWRlX3NyY19hbGlnbmVkKHNyYy5h ZGQob2Zmc2V0KSwgZHN0LmFkZChvZmZzZXQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lNRF9TVFJJREVfU0laRTsKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIGBvZmZzZXQgPiBsZW4gLSBT SU1EX1NUUklERV9TSVpFYCB3aGljaCBtZWFucyB3ZSBhbHdheXMgaGF2ZSBhdCBsZWFzdCBgU0lN RF9TVFJJREVfU0laRWAgZWxlbWVudHMgdG8gbXVuY2ggbmV4dCB0aW1lLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5fbWludXNfc3RyaWRlIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgaWYgZHN0 X21hc2tlZCA9PSAwIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIHsKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSdyZSB2YWxpZCB0byByZWFkL3dyaXRl IFNJTURfU1RSSURFX1NJWkUgZWxlbWVudHMgYW5kIGhhdmUgdGhlIGFwcHJvcHJpYXRlIGFsaWdu bWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgISRzdHJpZGVfZHN0X2FsaWdu ZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFOwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMgaXMgYG9mZnNldCA+ IGxlbiAtIFNJTURfU1RSSURFX1NJWkVgIHdoaWNoIG1lYW5zIHdlIGFsd2F5cyBoYXZlIGF0IGxl YXN0IGBTSU1EX1NUUklERV9TSVpFYCBlbGVtZW50cyB0byBtdW5jaCBuZXh0IHRpbWUuCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9mZnNldCA+IGxlbl9taW51c19zdHJpZGUgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgeworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFdlJ3JlIHZhbGlkIHRvIHJlYWQvd3Jp dGUgU0lNRF9TVFJJREVfU0laRSBlbGVtZW50cyBhbmQgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgYWxp Z25tZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAhJHN0cmlkZV9uZWl0aGVy X2FsaWduZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9T SVpFOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMgaXMgYG9m ZnNldCA+IGxlbiAtIFNJTURfU1RSSURFX1NJWkVgIHdoaWNoIG1lYW5zIHdlIGFsd2F5cyBoYXZl IGF0IGxlYXN0IGBTSU1EX1NUUklERV9TSVpFYCBlbGVtZW50cyB0byBtdW5jaCBuZXh0IHRpbWUu CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9mZnNldCA+IGxlbl9taW51c19zdHJp ZGUgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgd2hpbGUgb2Zmc2V0IDwgbGVuIHsKKysgICAgICAgICAgICAgICAgLy8gU2FmZXR5 OiB1c2VzIGxlbiBpbnZhcmlhbnQgaGVyZSBhbmQgYmVsb3cKKyAgICAgICAgICAgICAgICAgbGV0 IGNvZGVfdW5pdCA9ICooc3JjLmFkZChvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgaWYgY29k ZV91bml0ID4gMTI3IHsKKysgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogdXBob2xkcyBz YWZldHktdXNhYmxlIGludmFyaWFudAorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNvbWUo KGNvZGVfdW5pdCwgb2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgKihkc3QuYWRkKG9mZnNldCkpID0gY29kZV91bml0IGFzICRkc3RfdW5pdDsKKyAgICAgICAg ICAgICAgICAgb2Zmc2V0ICs9IDE7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIE5vbmUK KyAgICAgICAgIH0KKyAgICAgfTsKKyB9CisgCisgI1thbGxvdyh1bnVzZWRfbWFjcm9zKV0KKyBt YWNyb19ydWxlcyEgYXNjaWlfc2ltZF9jaGVja19hbGlnbl91bnJvbGxlZCB7CisgICAgICgKKyAg ICAgICAgICRuYW1lOmlkZW50LAorICAgICAgICAgJHNyY191bml0OnR5LAorICAgICAgICAgJGRz dF91bml0OnR5LAorKyAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGZ1bmN0aW9uIG11c3QgcmVxdWly ZSBhbGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJlIHZhbGlkIGZvciByZWFkaW5nL3dyaXRpbmcgU0lN RF9TVFJJREVfU0laRSBzcmNfdW5pdC9kc3RfdW5pdAorICAgICAgICAgJHN0cmlkZV9ib3RoX2Fs aWduZWQ6aWRlbnQsCisrICAgICAgICAvLyBTYWZldHk6IFRoaXMgZnVuY3Rpb24gbXVzdCByZXF1 aXJlIGFsaWduZWQvdW5hbGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJlIHZhbGlkIGZvciByZWFkaW5n L3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBzcmNfdW5pdC9kc3RfdW5pdAorICAgICAgICAgJHN0 cmlkZV9zcmNfYWxpZ25lZDppZGVudCwKKysgICAgICAgIC8vIFNhZmV0eTogVGhpcyBmdW5jdGlv biBtdXN0IHJlcXVpcmUgdW5hbGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJlIHZhbGlkIGZvciByZWFk aW5nL3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBzcmNfdW5pdC9kc3RfdW5pdAorICAgICAgICAg JHN0cmlkZV9uZWl0aGVyX2FsaWduZWQ6aWRlbnQsCisrICAgICAgICAvLyBTYWZldHk6IFRoaXMg ZnVuY3Rpb24gbXVzdCByZXF1aXJlIGFsaWduZWQgc3JjL2Rlc3QgdGhhdCBhcmUgdmFsaWQgZm9y IHJlYWRpbmcvd3JpdGluZyAyKlNJTURfU1RSSURFX1NJWkUgc3JjX3VuaXQvZHN0X3VuaXQKKyAg ICAgICAgICRkb3VibGVfc3RyaWRlX2JvdGhfYWxpZ25lZDppZGVudCwKKysgICAgICAgIC8vIFNh ZmV0eTogVGhpcyBmdW5jdGlvbiBtdXN0IHJlcXVpcmUgYWxpZ25lZC91bmFsaWduZWQgc3JjL2Rl c3QgdGhhdCBhcmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyAyKlNJTURfU1RSSURFX1NJWkUg c3JjX3VuaXQvZHN0X3VuaXQKKyAgICAgICAgICRkb3VibGVfc3RyaWRlX3NyY19hbGlnbmVkOmlk ZW50CisgICAgICkgPT4geworLSAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KKysgICAgICAgIC8v LyBTYWZldHk6IHNyYy9kc3QgbXVzdCBiZSB2YWxpZCBmb3IgcmVhZHMvd3JpdGVzIG9mIGBsZW5g IGVsZW1lbnRzIG9mIHRoZWlyIHVuaXRzLgorKyAgICAgICAgLy8vCisrICAgICAgICAvLy8gU2Fm ZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IHdpbGwgcmV0dXJuIFNvbWUoKSB3aGVuIGl0IGVuY291bnRl cnMgbm9uLUFTQ0lJLCB3aXRoIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBTb21lIGJlaW5nCisr ICAgICAgICAvLy8gZ3VhcmFudGVlZCB0byBiZSBub24tQVNDSUkgKD4gMTI3KSwgYW5kIHRoZSBz ZWNvbmQgYmVpbmcgdGhlIG9mZnNldCB3aGVyZSBpdCBpcyBmb3VuZCAgICAgICAgI1tpbmxpbmUo YWx3YXlzKV0KKyAgICAgICAgIHB1YiB1bnNhZmUgZm4gJG5hbWUoCisgICAgICAgICAgICAgc3Jj OiAqY29uc3QgJHNyY191bml0LAorICAgICAgICAgICAgIGRzdDogKm11dCAkZHN0X3VuaXQsCisg ICAgICAgICAgICAgbGVuOiB1c2l6ZSwKKyAgICAgICAgICkgLT4gT3B0aW9uPCgkc3JjX3VuaXQs IHVzaXplKT4geworICAgICAgICAgICAgIGxldCB1bml0X3NpemUgPSA6OmNvcmU6Om1lbTo6c2l6 ZV9vZjo6PCRzcmNfdW5pdD4oKTsKKyAgICAgICAgICAgICBsZXQgbXV0IG9mZnNldCA9IDB1c2l6 ZTsKKyAgICAgICAgICAgICAvLyBUaGlzIGxvb3AgaXMgb25seSBicm9rZW4gb3V0IG9mIGFzIGEg Z290byBmb3J3YXJkIHdpdGhvdXQKKyAgICAgICAgICAgICAvLyBhY3R1YWxseSBsb29waW5nCisg ICAgICAgICAgICAgJ291dGVyOiBsb29wIHsKKysgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBp ZiB0aGlzIGNoZWNrIHN1Y2NlZWRzIHdlJ3JlIHZhbGlkIGZvciByZWFkaW5nL3dyaXRpbmcgYXQg bGVhc3QgYFNJTURfU1RSSURFX1NJWkVgIGVsZW1lbnRzLgorICAgICAgICAgICAgICAgICBpZiBT SU1EX1NUUklERV9TSVpFIDw9IGxlbiB7CisgICAgICAgICAgICAgICAgICAgICAvLyBGaXJzdCwg cHJvY2VzcyBvbmUgdW5hbGlnbmVkCisrICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHRo aXMgaXMgc2FmZSB0byBjYWxsIHNpbmNlIHdlJ3JlIHZhbGlkIGZvciB0aGlzIHJlYWQvd3JpdGUK KyAgICAgICAgICAgICAgICAgICAgIGlmICEkc3RyaWRlX25laXRoZXJfYWxpZ25lZChzcmMsIGRz dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrICdvdXRlcjsKKyAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IFNJTURfU1RSSURFX1NJ WkU7CisgCisgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIG5vdyBzZWVuIDE2IEFTQ0lJ IGJ5dGVzLiBMZXQncyBndWVzcyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAvLyB0aGVyZSB3 aWxsIGJlIGVub3VnaCBtb3JlIHRvIGp1c3RpZnkgbW9yZSBleHBlbnNlCisgICAgICAgICAgICAg ICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBub24tQVNDSUkuCisgICAgICAgICAgICAgICAgICAg ICAvLyBVc2UgYWxpZ25lZCByZWFkcyBmb3IgdGhlIHNha2Ugb2Ygb2xkIG1pY3JvYWNoaXRlY3R1 cmVzLgorKyAgICAgICAgICAgICAgICAgICAgLy8KKysgICAgICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogdGhpcyBjb3JyZWN0bHkgY2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIHNyY191bml0cyB0 aGF0IG5lZWQgdG8gYmUgcmVhZCBiZWZvcmUgdGhlIHJlbWFpbmluZyBsaXN0IGlzIGFsaWduZWQu CisrICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGxlc3MgdGhhdCBTSU1EX0FMSUdOTUVO VCwgd2hpY2ggaXMgYWxzbyBTSU1EX1NUUklERV9TSVpFIChhcyBkb2N1bWVudGVkKQorICAgICAg ICAgICAgICAgICAgICAgbGV0IHVudGlsX2FsaWdubWVudCA9ICgoU0lNRF9BTElHTk1FTlQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAtICgoc3JjLmFkZChvZmZzZXQpIGFzIHVzaXplKSAmIFNJ TURfQUxJR05NRU5UX01BU0spKQorICAgICAgICAgICAgICAgICAgICAgICAgICYgU0lNRF9BTElH Tk1FTlRfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAvIHVuaXRfc2l6ZTsKKy0gICAg ICAgICAgICAgICAgICAgIC8vIFRoaXMgYWRkaXRpb24gd29uJ3Qgb3ZlcmZsb3csIGJlY2F1c2Ug ZXZlbiBpbiB0aGUgMzItYml0IFBBRSBjYXNlIHRoZQorKyAgICAgICAgICAgICAgICAgICAgLy8g U2FmZXR5OiBUaGlzIGFkZGl0aW9uIHdvbid0IG92ZXJmbG93LCBiZWNhdXNlIGV2ZW4gaW4gdGhl IDMyLWJpdCBQQUUgY2FzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIC8vIGFkZHJlc3Mgc3Bh Y2UgaG9sZHMgZW5vdWdoIGNvZGUgdGhhdCB0aGUgc2xpY2UgbGVuZ3RoIGNhbid0IGJlIHRoYXQK KyAgICAgICAgICAgICAgICAgICAgIC8vIGNsb3NlIHRvIGFkZHJlc3Mgc3BhY2Ugc2l6ZS4KKyAg ICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldCBub3cgZXF1YWxzIFNJTURfU1RSSURFX1NJWkUs IGhlbmNlIHRpbWVzIDMgYmVsb3cuCisrICAgICAgICAgICAgICAgICAgICAvLworKyAgICAgICAg ICAgICAgICAgICAgLy8gU2FmZXR5OiBpZiB0aGlzIGNoZWNrIHN1Y2NlZWRzIHdlJ3JlIHZhbGlk IGZvciByZWFkaW5nL3dyaXRpbmcgYXQgbGVhc3QgYDIgKiBTSU1EX1NUUklERV9TSVpFYCBlbGVt ZW50cyBwbHVzIGB1bnRpbF9hbGlnbm1lbnRgLgorKyAgICAgICAgICAgICAgICAgICAgLy8gVGhl IGV4dHJhIFNJTURfU1RSSURFX1NJWkUgaW4gdGhlIGNvbmRpdGlvbiBpcyBiZWNhdXNlIGBvZmZz ZXRgIGlzIGFscmVhZHkgYFNJTURfU1RSSURFX1NJWkVgLgorICAgICAgICAgICAgICAgICAgICAg aWYgdW50aWxfYWxpZ25tZW50ICsgKFNJTURfU1RSSURFX1NJWkUgKiAzKSA8PSBsZW4geworICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIHVudGlsX2FsaWdubWVudCAhPSAwIHsKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB0aGlzIGlzIHNhZmUgdG8gY2FsbCBzaW5j ZSB3ZSdyZSB2YWxpZCBmb3IgdGhpcyByZWFkL3dyaXRlIChhbmQgbW9yZSksIGFuZCBkb24ndCBj YXJlIGFib3V0IGFsaWdubWVudAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlz IHdpbGwgY29weSBvdmVyIGJ5dGVzIHRoYXQgZ2V0IGRlY29kZWQgdHdpY2Ugc2luY2UgaXQncyBu b3QgaW5jcmVtZW50aW5nIGBvZmZzZXRgIGJ5IFNJTURfU1RSSURFX1NJWkUuIFRoaXMgaXMgZmlu ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgISRzdHJpZGVfbmVpdGhlcl9hbGln bmVkKHNyYy5hZGQob2Zmc2V0KSwgZHN0LmFkZChvZmZzZXQpKSB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gdW50aWxfYWxpZ25tZW50Owor ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBT YWZldHk6IEF0IHRoaXMgcG9pbnQgd2UncmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyAyKlNJ TURfU1RSSURFX1NJWkUgZWxlbWVudHMKKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZl dHk6IE5vdyBgb2Zmc2V0YCBpcyBhbGlnbmVkIGZvciBgc3JjYAorICAgICAgICAgICAgICAgICAg ICAgICAgIGxldCBsZW5fbWludXNfc3RyaWRlX3RpbWVzX3R3byA9IGxlbiAtIChTSU1EX1NUUklE RV9TSVpFICogMik7CisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlz IHdoZXRoZXIgZHN0IGlzIGFsaWduZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZHN0 X21hc2tlZCA9IChkc3QuYWRkKG9mZnNldCkgYXMgdXNpemUpICYgU0lNRF9BTElHTk1FTlRfTUFT SzsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkc3RfbWFza2VkID09IDAgeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsb29wIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogYm90aCBhcmUgYWxpZ25lZCwgd2UgY2FuIGNhbGwgdGhlIGFsaWdu ZWQgZnVuY3Rpb24uIFdlJ3JlIHZhbGlkIGZvciByZWFkaW5nL3dyaXRpbmcgZG91YmxlIHN0cmlk ZSBmcm9tIHRoZSBpbml0aWFsIGNvbmRpdGlvbgorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gYW5kIHRoZSBsb29wIGJyZWFrIGNvbmRpdGlvbiBiZWxvdworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUoYWR2YW5jZSkgPQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICRkb3VibGVfc3RyaWRlX2JvdGhfYWxpZ25lZChzcmMu YWRkKG9mZnNldCksIGRzdC5hZGQob2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0g YWR2YW5jZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29kZV91 bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogdXNlcyBzYWZldHktdXNhYmxlIGludmFyaWFudCBvbiBhc2NpaV90 b19hc2NpaV9zaW1kX2RvdWJsZV9zdHJpZGUgdG8gcmV0dXJuCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gZ3VhcmFudGVlZCBub24tYXNjaWkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgoY29kZV91bml0LCBvZmZzZXQpKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFICogMjsKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0g MiAqIFNJTURfU1RSSURFX1NJWkVgIHdoaWNoIG1lYW5zIHdlIGFsd2F5cyBoYXZlIGF0IGxlYXN0 IGAyICogU0lNRF9TVFJJREVfU0laRWAgZWxlbWVudHMgdG8gbXVuY2ggbmV4dCB0aW1lLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVzX3N0cmlk ZV90aW1lc190d28geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2Un cmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBvbmUgbW9yZSwgYW5kIGNhbiBzdGlsbCBhc3N1 bWUgYWxpZ25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9mZnNldCArIFNJ TURfU1RSSURFX1NJWkUgPD0gbGVuIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmICEkc3RyaWRlX2JvdGhfYWxpZ25lZChzcmMuYWRkKG9mZnNldCksIGRzdC5hZGQob2Zmc2V0 KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrICdvdXRlcjsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCB7CisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBTYWZldHk6IG9ubHkgc3JjIGlzIGFsaWduZWQgaGVyZS4gV2UncmUgdmFsaWQg Zm9yIHJlYWRpbmcvd3JpdGluZyBkb3VibGUgc3RyaWRlIGZyb20gdGhlIGluaXRpYWwgY29uZGl0 aW9uCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIGxvb3AgYnJl YWsgY29uZGl0aW9uIGJlbG93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBs ZXQgU29tZShhZHZhbmNlKSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JGRvdWJsZV9zdHJpZGVfc3JjX2FsaWduZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9mZnNl dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGFkdmFuY2U7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGV0IGNvZGVfdW5pdCA9ICooc3JjLmFkZChvZmZzZXQpKTsK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHVzZXMgc2Fm ZXR5LXVzYWJsZSBpbnZhcmlhbnQgb24gYXNjaWlfdG9fYXNjaWlfc2ltZF9kb3VibGVfc3RyaWRl IHRvIHJldHVybgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGd1YXJh bnRlZWQgbm9uLWFzY2lpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIFNvbWUoKGNvZGVfdW5pdCwgb2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lN RF9TVFJJREVfU0laRSAqIDI7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBT YWZldHk6IFRoaXMgaXMgYG9mZnNldCA+IGxlbiAtIDIgKiBTSU1EX1NUUklERV9TSVpFYCB3aGlj aCBtZWFucyB3ZSBhbHdheXMgaGF2ZSBhdCBsZWFzdCBgMiAqIFNJTURfU1RSSURFX1NJWkVgIGVs ZW1lbnRzIHRvIG11bmNoIG5leHQgdGltZS4KKysKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIG9mZnNldCA+IGxlbl9taW51c19zdHJpZGVfdGltZXNfdHdvIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFdlJ3JlIHZhbGlkIGZvciByZWFkaW5nL3dy aXRpbmcgb25lIG1vcmUsIGFuZCBjYW4gc3RpbGwgYXNzdW1lIGFsaWdubWVudAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgKyBTSU1EX1NUUklERV9TSVpFIDw9IGxlbiB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAhJHN0cmlkZV9zcmNfYWxpZ25l ZChzcmMuYWRkKG9mZnNldCksIGRzdC5hZGQob2Zmc2V0KSkgeworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrICdvdXRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBT SU1EX1NUUklERV9TSVpFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAvLyBBdCBtb3N0IHR3byBpdGVyYXRpb25zLCBzbyB1bnJvbGwK KyAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgKyBTSU1EX1NUUklERV9TSVpFIDw9 IGxlbiB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhlIGNoZWNr IGFib3ZlIGVuc3VyZXMgd2UncmUgYWxsb3dlZCB0byByZWFkL3dyaXRlIHRoaXMsIGFuZCB3ZSBk b24ndCB1c2UgYWxpZ25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICEkc3Ry aWRlX25laXRoZXJfYWxpZ25lZChzcmMuYWRkKG9mZnNldCksIGRzdC5hZGQob2Zmc2V0KSkgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IFNJ TURfU1RSSURFX1NJWkU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9mZnNldCAr IFNJTURfU1RSSURFX1NJWkUgPD0gbGVuIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIFNhZmV0eTogVGhlIGNoZWNrIGFib3ZlIGVuc3VyZXMgd2UncmUgYWxsb3dlZCB0byBy ZWFkL3dyaXRlIHRoaXMsIGFuZCB3ZSBkb24ndCB1c2UgYWxpZ25tZW50CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAhJHN0cmlkZV9uZWl0aGVyX2FsaWduZWQoc3JjLmFkZChv ZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgIGJyZWFrICdvdXRlcjsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgd2hpbGUg b2Zmc2V0IDwgbGVuIHsKKysgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiByZWxpZXMgc3RyYWln aHRmb3J3YXJkbHkgb24gdGhlIGBsZW5gIGludmFyaWFudAorICAgICAgICAgICAgICAgICBsZXQg Y29kZV91bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOworICAgICAgICAgICAgICAgICBpZiBjb2Rl X3VuaXQgPiAxMjcgeworKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5LXVzYWJsZSBpbnZh cmlhbnQgdXBoZWxkIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTb21lKChjb2Rl X3VuaXQsIG9mZnNldCkpOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICoo ZHN0LmFkZChvZmZzZXQpKSA9IGNvZGVfdW5pdCBhcyAkZHN0X3VuaXQ7CisgICAgICAgICAgICAg ICAgIG9mZnNldCArPSAxOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBOb25lCisgICAg ICAgICB9CisgICAgIH07CisgfQorIAorICNbYWxsb3codW51c2VkX21hY3JvcyldCisgbWFjcm9f cnVsZXMhIGxhdGluMV9zaW1kX2NoZWNrX2FsaWduIHsKKyAgICAgKAorICAgICAgICAgJG5hbWU6 aWRlbnQsCisgICAgICAgICAkc3JjX3VuaXQ6dHksCisgICAgICAgICAkZHN0X3VuaXQ6dHksCisr ICAgICAgICAvLyBTYWZldHk6IFRoaXMgZnVuY3Rpb24gbXVzdCByZXF1aXJlIGFsaWduZWQgc3Jj L2Rlc3QgdGhhdCBhcmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBTSU1EX1NUUklERV9TSVpF IHNyY191bml0L2RzdF91bml0CisgICAgICAgICAkc3RyaWRlX2JvdGhfYWxpZ25lZDppZGVudCwK KysgICAgICAgIC8vIFNhZmV0eTogVGhpcyBmdW5jdGlvbiBtdXN0IHJlcXVpcmUgYWxpZ25lZC91 bmFsaWduZWQgc3JjL2Rlc3QgdGhhdCBhcmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBTSU1E X1NUUklERV9TSVpFIHNyY191bml0L2RzdF91bml0CisgICAgICAgICAkc3RyaWRlX3NyY19hbGln bmVkOmlkZW50LAorKyAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGZ1bmN0aW9uIG11c3QgcmVxdWly ZSB1bmFsaWduZWQvYWxpZ25lZCBzcmMvZGVzdCB0aGF0IGFyZSB2YWxpZCBmb3IgcmVhZGluZy93 cml0aW5nIFNJTURfU1RSSURFX1NJWkUgc3JjX3VuaXQvZHN0X3VuaXQKKyAgICAgICAgICRzdHJp ZGVfZHN0X2FsaWduZWQ6aWRlbnQsCisrICAgICAgICAvLyBTYWZldHk6IFRoaXMgZnVuY3Rpb24g bXVzdCByZXF1aXJlIHVuYWxpZ25lZCBzcmMvZGVzdCB0aGF0IGFyZSB2YWxpZCBmb3IgcmVhZGlu Zy93cml0aW5nIFNJTURfU1RSSURFX1NJWkUgc3JjX3VuaXQvZHN0X3VuaXQKKyAgICAgICAgICRz dHJpZGVfbmVpdGhlcl9hbGlnbmVkOmlkZW50CisrCisgICAgICkgPT4geworKyAgICAgICAgLy8v IFNhZmV0eTogc3JjL2RzdCBtdXN0IGJlIHZhbGlkIGZvciByZWFkcy93cml0ZXMgb2YgYGxlbmAg ZWxlbWVudHMgb2YgdGhlaXIgdW5pdHMuCisgICAgICAgICAjW2lubGluZShhbHdheXMpXQorICAg ICAgICAgcHViIHVuc2FmZSBmbiAkbmFtZShzcmM6ICpjb25zdCAkc3JjX3VuaXQsIGRzdDogKm11 dCAkZHN0X3VuaXQsIGxlbjogdXNpemUpIHsKKyAgICAgICAgICAgICBsZXQgbXV0IG9mZnNldCA9 IDB1c2l6ZTsKKysgICAgICAgICAgICAvLyBTYWZldHk6IGlmIHRoaXMgY2hlY2sgc3VjY2VlZHMg d2UncmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBhdCBsZWFzdCBgU0lNRF9TVFJJREVfU0la RWAgZWxlbWVudHMuCisgICAgICAgICAgICAgaWYgU0lNRF9TVFJJREVfU0laRSA8PSBsZW4gewor ICAgICAgICAgICAgICAgICBsZXQgbGVuX21pbnVzX3N0cmlkZSA9IGxlbiAtIFNJTURfU1RSSURF X1NJWkU7CisrICAgICAgICAgICAgICAgIC8vIFdoZXRoZXIgZHN0IGlzIGFsaWduZWQKKyAgICAg ICAgICAgICAgICAgbGV0IGRzdF9tYXNrZWQgPSAoZHN0IGFzIHVzaXplKSAmIFNJTURfQUxJR05N RU5UX01BU0s7CisrICAgICAgICAgICAgICAgIC8vIFdoZXRoZXIgc3JjIGlzIGFsaWduZWQKKyAg ICAgICAgICAgICAgICAgaWYgKChzcmMgYXMgdXNpemUpICYgU0lNRF9BTElHTk1FTlRfTUFTSykg PT0gMCB7CisgICAgICAgICAgICAgICAgICAgICBpZiBkc3RfbWFza2VkID09IDAgeworICAgICAg ICAgICAgICAgICAgICAgICAgIGxvb3AgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyBTYWZldHk6IEJvdGggd2VyZSBhbGlnbmVkLCB3ZSBjYW4gdXNlIHRoZSBhbGlnbmVkIGZ1bmN0 aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpZGVfYm90aF9hbGlnbmVkKHNy Yy5hZGQob2Zmc2V0KSwgZHN0LmFkZChvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkU7CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0gU0lNRF9TVFJJREVfU0la RWAsIHdoaWNoIG1lYW5zIGluIHRoZSBuZXh0IGl0ZXJhdGlvbiB3ZSdyZSB2YWxpZCBmb3IKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZy93cml0aW5nIGF0IGxlYXN0IFNJ TURfU1RSSURFX1NJWkUgZWxlbWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IG9mZnNldCA+IGxlbl9taW51c19zdHJpZGUgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgICAgICAgICAgICAgIGxvb3AgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBT YWZldHk6IHNyYyB3YXMgYWxpZ25lZCwgZHN0IHdhcyBub3QKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJHN0cmlkZV9zcmNfYWxpZ25lZChzcmMuYWRkKG9mZnNldCksIGRzdC5hZGQob2Zm c2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklE RV9TSVpFOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMgaXMg YG9mZnNldCA+IGxlbiAtIFNJTURfU1RSSURFX1NJWkVgLCB3aGljaCBtZWFucyBpbiB0aGUgbmV4 dCBpdGVyYXRpb24gd2UncmUgdmFsaWQgZm9yCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vIHJlYWRpbmcvd3JpdGluZyBhdCBsZWFzdCBTSU1EX1NUUklERV9TSVpFIGVsZW1lbnRzLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5fbWludXNfc3RyaWRl IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg ICAgICAgaWYgZHN0X21hc2tlZCA9PSAwIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb29w IHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBzcmMgd2FzIGFsaWdu ZWQsIGRzdCB3YXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpZGVfZHN0 X2FsaWduZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lNRF9TVFJJREVfU0laRTsKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIGBvZmZzZXQgPiBsZW4gLSBTSU1E X1NUUklERV9TSVpFYCwgd2hpY2ggbWVhbnMgaW4gdGhlIG5leHQgaXRlcmF0aW9uIHdlJ3JlIHZh bGlkIGZvcgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkaW5nL3dyaXRpbmcg YXQgbGVhc3QgU0lNRF9TVFJJREVfU0laRSBlbGVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVzX3N0cmlkZSB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCB7CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogTmVpdGhlciB3ZXJlIGFsaWduZWQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJHN0cmlkZV9uZWl0aGVyX2FsaWduZWQoc3JjLmFkZChvZmZzZXQpLCBkc3Qu YWRkKG9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lN RF9TVFJJREVfU0laRTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBU aGlzIGlzIGBvZmZzZXQgPiBsZW4gLSBTSU1EX1NUUklERV9TSVpFYCwgd2hpY2ggbWVhbnMgaW4g dGhlIG5leHQgaXRlcmF0aW9uIHdlJ3JlIHZhbGlkIGZvcgorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyByZWFkaW5nL3dyaXRpbmcgYXQgbGVhc3QgU0lNRF9TVFJJREVfU0laRSBlbGVt ZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVz X3N0cmlkZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICB3aGlsZSBvZmZzZXQgPCBsZW4geworKyAgICAgICAgICAgICAgICAvLyBT YWZldHk6IHJlbGllcyBzdHJhaWdodGZvcndhcmRseSBvbiB0aGUgYGxlbmAgaW52YXJpYW50Cisg ICAgICAgICAgICAgICAgIGxldCBjb2RlX3VuaXQgPSAqKHNyYy5hZGQob2Zmc2V0KSk7CisgICAg ICAgICAgICAgICAgICooZHN0LmFkZChvZmZzZXQpKSA9IGNvZGVfdW5pdCBhcyAkZHN0X3VuaXQ7 CisgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOworICAgICAgICAgICAgIH0KKyAgICAgICAg IH0KKyAgICAgfTsKKyB9CisgCisgI1thbGxvdyh1bnVzZWRfbWFjcm9zKV0KKyBtYWNyb19ydWxl cyEgbGF0aW4xX3NpbWRfY2hlY2tfYWxpZ25fdW5yb2xsZWQgeworICAgICAoCisgICAgICAgICAk bmFtZTppZGVudCwKKyAgICAgICAgICRzcmNfdW5pdDp0eSwKKyAgICAgICAgICRkc3RfdW5pdDp0 eSwKKysgICAgICAgIC8vIFNhZmV0eTogVGhpcyBmdW5jdGlvbiBtdXN0IHJlcXVpcmUgYWxpZ25l ZCBzcmMvZGVzdCB0aGF0IGFyZSB2YWxpZCBmb3IgcmVhZGluZy93cml0aW5nIFNJTURfU1RSSURF X1NJWkUgc3JjX3VuaXQvZHN0X3VuaXQKKyAgICAgICAgICRzdHJpZGVfYm90aF9hbGlnbmVkOmlk ZW50LAorKyAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGZ1bmN0aW9uIG11c3QgcmVxdWlyZSBhbGln bmVkL3VuYWxpZ25lZCBzcmMvZGVzdCB0aGF0IGFyZSB2YWxpZCBmb3IgcmVhZGluZy93cml0aW5n IFNJTURfU1RSSURFX1NJWkUgc3JjX3VuaXQvZHN0X3VuaXQKKyAgICAgICAgICRzdHJpZGVfc3Jj X2FsaWduZWQ6aWRlbnQsCisrICAgICAgICAvLyBTYWZldHk6IFRoaXMgZnVuY3Rpb24gbXVzdCBy ZXF1aXJlIHVuYWxpZ25lZC9hbGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJlIHZhbGlkIGZvciByZWFk aW5nL3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBzcmNfdW5pdC9kc3RfdW5pdAorICAgICAgICAg JHN0cmlkZV9kc3RfYWxpZ25lZDppZGVudCwKKysgICAgICAgIC8vIFNhZmV0eTogVGhpcyBmdW5j dGlvbiBtdXN0IHJlcXVpcmUgdW5hbGlnbmVkIHNyYy9kZXN0IHRoYXQgYXJlIHZhbGlkIGZvciBy ZWFkaW5nL3dyaXRpbmcgU0lNRF9TVFJJREVfU0laRSBzcmNfdW5pdC9kc3RfdW5pdAorICAgICAg ICAgJHN0cmlkZV9uZWl0aGVyX2FsaWduZWQ6aWRlbnQKKyAgICAgKSA9PiB7CisrICAgICAgICAv Ly8gU2FmZXR5OiBzcmMvZHN0IG11c3QgYmUgdmFsaWQgZm9yIHJlYWRzL3dyaXRlcyBvZiBgbGVu YCBlbGVtZW50cyBvZiB0aGVpciB1bml0cy4KKyAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCisg ICAgICAgICBwdWIgdW5zYWZlIGZuICRuYW1lKHNyYzogKmNvbnN0ICRzcmNfdW5pdCwgZHN0OiAq bXV0ICRkc3RfdW5pdCwgbGVuOiB1c2l6ZSkgeworICAgICAgICAgICAgIGxldCB1bml0X3NpemUg PSA6OmNvcmU6Om1lbTo6c2l6ZV9vZjo6PCRzcmNfdW5pdD4oKTsKKyAgICAgICAgICAgICBsZXQg bXV0IG9mZnNldCA9IDB1c2l6ZTsKKysgICAgICAgICAgICAvLyBTYWZldHk6IGlmIHRoaXMgY2hl Y2sgc3VjY2VlZHMgd2UncmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBhdCBsZWFzdCBgU0lN RF9TVFJJREVfU0laRWAgZWxlbWVudHMuCisgICAgICAgICAgICAgaWYgU0lNRF9TVFJJREVfU0la RSA8PSBsZW4geworKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHRoaXMgY29ycmVjdGx5IGNh bGN1bGF0ZXMgdGhlIG51bWJlciBvZiBzcmNfdW5pdHMgdGhhdCBuZWVkIHRvIGJlIHJlYWQgYmVm b3JlIHRoZSByZW1haW5pbmcgbGlzdCBpcyBhbGlnbmVkLgorKyAgICAgICAgICAgICAgICAvLyBU aGlzIGlzIGJ5IGRlZmluaXRpb24gbGVzcyB0aGFuIFNJTURfU1RSSURFX1NJWkUuCisgICAgICAg ICAgICAgICAgIGxldCBtdXQgdW50aWxfYWxpZ25tZW50ID0gKChTSU1EX1NUUklERV9TSVpFCisg ICAgICAgICAgICAgICAgICAgICAtICgoc3JjIGFzIHVzaXplKSAmIFNJTURfQUxJR05NRU5UX01B U0spKQorICAgICAgICAgICAgICAgICAgICAgJiBTSU1EX0FMSUdOTUVOVF9NQVNLKQorICAgICAg ICAgICAgICAgICAgICAgLyB1bml0X3NpemU7CisgICAgICAgICAgICAgICAgIHdoaWxlIHVudGls X2FsaWdubWVudCAhPSAwIHsKKysgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBp cyBhIHN0cmFpZ2h0Zm9yd2FyZCBjb3B5LCBzaW5jZSB1bnRpbF9hbGlnbm1lbnQgaXMgPCBTSU1E X1NUUklERV9TSVpFIDwgbGVuLCB0aGlzIGlzIGluLWJvdW5kcworICAgICAgICAgICAgICAgICAg ICAgKihkc3QuYWRkKG9mZnNldCkpID0gKihzcmMuYWRkKG9mZnNldCkpIGFzICRkc3RfdW5pdDsK KyAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOworICAgICAgICAgICAgICAgICAgICAg dW50aWxfYWxpZ25tZW50IC09IDE7CisgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAg ICAgLy8gU2FmZXR5OiBoZXJlIG9mZnNldCB3aWxsIGJlIGB1bnRpbF9hbGlnbm1lbnRgLCBpLmUu IGVub3VnaCB0byBhbGlnbiBgc3JjYC4KKyAgICAgICAgICAgICAgICAgbGV0IGxlbl9taW51c19z dHJpZGUgPSBsZW4gLSBTSU1EX1NUUklERV9TSVpFOworKyAgICAgICAgICAgICAgICAvLyBTYWZl dHk6IGlmIHRoaXMgY2hlY2sgc3VjY2VlZHMgd2UncmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGlu ZyBhdCBsZWFzdCBgMiAqIFNJTURfU1RSSURFX1NJWkVgIGVsZW1lbnRzLgorICAgICAgICAgICAg ICAgICBpZiBvZmZzZXQgKyBTSU1EX1NUUklERV9TSVpFICogMiA8PSBsZW4geworICAgICAgICAg ICAgICAgICAgICAgbGV0IGxlbl9taW51c19zdHJpZGVfdGltZXNfdHdvID0gbGVuX21pbnVzX3N0 cmlkZSAtIFNJTURfU1RSSURFX1NJWkU7CisrICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6 IGF0IHRoaXMgcG9pbnQgc3JjIGlzIGtub3duIHRvIGJlIGFsaWduZWQgYXQgb2Zmc2V0LCBkc3Qg aXMgbm90LgorICAgICAgICAgICAgICAgICAgICAgaWYgKGRzdC5hZGQob2Zmc2V0KSBhcyB1c2l6 ZSkgJiBTSU1EX0FMSUdOTUVOVF9NQVNLID09IDAgeworICAgICAgICAgICAgICAgICAgICAgICAg IGxvb3AgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFdlIGNoZWNr ZWQgYWxpZ25tZW50IG9mIGRzdCBhYm92ZSwgd2UgY2FuIHVzZSB0aGUgYWxpZ25tZW50IGZ1bmN0 aW9ucy4gV2UncmUgYWxsb3dlZCB0byByZWFkL3dyaXRlIDIqU0lNRF9TVFJJREVfU0laRSBlbGVt ZW50cywgd2hpY2ggd2UgZG8uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpZGVf Ym90aF9hbGlnbmVkKHNyYy5hZGQob2Zmc2V0KSwgZHN0LmFkZChvZmZzZXQpKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkU7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICRzdHJpZGVfYm90aF9hbGlnbmVkKHNyYy5hZGQob2Zmc2V0 KSwgZHN0LmFkZChvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0 ICs9IFNJTURfU1RSSURFX1NJWkU7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0gMiAqIFNJTURfU1RSSURFX1NJWkVgIHdoaWNo IG1lYW5zIHdlIGFsd2F5cyBoYXZlIGF0IGxlYXN0IGAyICogU0lNRF9TVFJJREVfU0laRWAgZWxl bWVudHMgdG8gbXVuY2ggbmV4dCB0aW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBvZmZzZXQgPiBsZW5fbWludXNfc3RyaWRlX3RpbWVzX3R3byB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCB7CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogd2UgZW5zdXJlZCBhbGlnbm1lbnQgb2Ygc3JjIGFscmVhZHkuCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpZGVfc3JjX2FsaWduZWQoc3JjLmFkZChv ZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv ZmZzZXQgKz0gU0lNRF9TVFJJREVfU0laRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JHN0cmlkZV9zcmNfYWxpZ25lZChzcmMuYWRkKG9mZnNldCksIGRzdC5hZGQob2Zmc2V0KSk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFOwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMgaXMgYG9mZnNldCA+ IGxlbiAtIDIgKiBTSU1EX1NUUklERV9TSVpFYCB3aGljaCBtZWFucyB3ZSBhbHdheXMgaGF2ZSBh dCBsZWFzdCBgMiAqIFNJTURfU1RSSURFX1NJWkVgIGVsZW1lbnRzIHRvIG11bmNoIG5leHQgdGlt ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVzX3N0 cmlkZV90aW1lc190d28geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKysgICAgICAg ICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIGBvZmZzZXQgPiBsZW4gLSBTSU1EX1NUUklERV9T SVpFYCB3aGljaCBtZWFucyB3ZSBhcmUgdmFsaWQgdG8gbXVuY2ggU0lNRF9TVFJJREVfU0laRSBt b3JlIGVsZW1lbnRzLCB3aGljaCB3ZSBkbworICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPCBs ZW5fbWludXNfc3RyaWRlIHsKKyAgICAgICAgICAgICAgICAgICAgICRzdHJpZGVfc3JjX2FsaWdu ZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9mZnNldCkpOworICAgICAgICAgICAgICAgICAg ICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkU7CisgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgd2hpbGUgb2Zmc2V0IDwgbGVuIHsKKysgICAgICAgICAg ICAgICAgLy8gU2FmZXR5OiB1c2VzIGxlbiBpbnZhcmlhbnQgaGVyZSBhbmQgYmVsb3cKKyAgICAg ICAgICAgICAgICAgbGV0IGNvZGVfdW5pdCA9ICooc3JjLmFkZChvZmZzZXQpKTsKKyAgICAgICAg ICAgICAgICAgLy8gT24geDg2XzY0LCB0aGlzIGxvb3AgYXV0b3ZlY3Rvcml6ZXMgYnV0IGluIHRo ZSBwYWNrCisgICAgICAgICAgICAgICAgIC8vIGNhc2UgdGhlcmUgYXJlIGluc3RydWN0aW9ucyB3 aG9zZSBwdXJwb3NlIGlzIHRvIG1ha2Ugc3VyZQorICAgICAgICAgICAgICAgICAvLyBlYWNoIHUx NiBpbiB0aGUgdmVjdG9yIGlzIHRydW5jYXRlZCBiZWZvcmUgcGFja2luZy4gSG93ZXZlciwKKyAg ICAgICAgICAgICAgICAgLy8gc2luY2Ugd2UgZG9uJ3QgY2FyZSBhYm91dCBzYXR1cmF0aW5nIGJl aGF2aW9yIG9mIFNTRTIgcGFja2luZworICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZSBpbnB1 dCBpc24ndCBMYXRpbjEsIHRob3NlIGluc3RydWN0aW9ucyBhcmUgdXNlbGVzcy4KKyAgICAgICAg ICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdXNpbmcgdGhlIGBhc3N1bWVgIGludHJpbnNpYyB0 byBsaWUgdG8gdGhlCisgICAgICAgICAgICAgICAgIC8vIG9wdGltaXplciBkb2Vzbid0IG1ha2Ug TExWTSBvbWl0IHRoZSB0cnVuY3RhdGlvbiB0aGF0IHdlCitAQCAtNjg4LDEzOCArODY5LDE4MCBA QCBtYWNyb19ydWxlcyEgbGF0aW4xX3NpbWRfY2hlY2tfYWxpZ25fdW5yCisgICAgICAgICAgICAg ICAgIG9mZnNldCArPSAxOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfTsKKyB9 CisgCisgI1thbGxvdyh1bnVzZWRfbWFjcm9zKV0KKyBtYWNyb19ydWxlcyEgYXNjaWlfc2ltZF91 bmFsaWduIHsKKysgICAgLy8gU2FmZXR5OiBzdHJpZGVfbmVpdGhlcl9hbGlnbmVkIG11c3QgYmUg YSBmdW5jdGlvbiB0aGF0IHJlcXVpcmVzIHNyYy9kZXN0IGJlIHZhbGlkIGZvciB1bmFsaWduZWQg cmVhZHMvd3JpdGVzIGZvciBTSU1EX1NUUklERV9TSVpFIGVsZW1lbnRzIG9mIHR5cGUgc3JjX3Vu aXQvZGVzdF91bml0CisgICAgICgkbmFtZTppZGVudCwgJHNyY191bml0OnR5LCAkZHN0X3VuaXQ6 dHksICRzdHJpZGVfbmVpdGhlcl9hbGlnbmVkOmlkZW50KSA9PiB7CisrICAgICAgICAvLy8gU2Fm ZXR5OiBzcmMgYW5kIGRzdCBtdXN0IGJlIHZhbGlkIGZvciByZWFkcy93cml0ZXMgb2YgbGVuIGVs ZW1lbnRzIG9mIHR5cGUgc3JjX3VuaXQvZHN0X3VuaXQKKysgICAgICAgIC8vLworKyAgICAgICAg Ly8vIFNhZmV0eS11c2FibGUgaW52YXJpYW50OiB3aWxsIHJldHVybiBTb21lKCkgd2hlbiBpdCBl bmNvdW50ZXJzIG5vbi1BU0NJSSwgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgU29tZSBi ZWluZworKyAgICAgICAgLy8vIGd1YXJhbnRlZWQgdG8gYmUgbm9uLUFTQ0lJICg+IDEyNyksIGFu ZCB0aGUgc2Vjb25kIGJlaW5nIHRoZSBvZmZzZXQgd2hlcmUgaXQgaXMgZm91bmQKKyAgICAgICAg ICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICBwdWIgdW5zYWZlIGZuICRuYW1lKAorICAgICAg ICAgICAgIHNyYzogKmNvbnN0ICRzcmNfdW5pdCwKKyAgICAgICAgICAgICBkc3Q6ICptdXQgJGRz dF91bml0LAorICAgICAgICAgICAgIGxlbjogdXNpemUsCisgICAgICAgICApIC0+IE9wdGlvbjwo JHNyY191bml0LCB1c2l6ZSk+IHsKKyAgICAgICAgICAgICBsZXQgbXV0IG9mZnNldCA9IDB1c2l6 ZTsKKysgICAgICAgICAgICAvLyBTYWZldHk6IGlmIHRoaXMgY2hlY2sgc3VjY2VlZHMgd2UncmUg dmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBhdCBsZWFzdCBgc3RyaWRlYCBlbGVtZW50cy4KKyAg ICAgICAgICAgICBpZiBTSU1EX1NUUklERV9TSVpFIDw9IGxlbiB7CisgICAgICAgICAgICAgICAg IGxldCBsZW5fbWludXNfc3RyaWRlID0gbGVuIC0gU0lNRF9TVFJJREVfU0laRTsKKyAgICAgICAg ICAgICAgICAgbG9vcCB7CisrICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFdlIGtub3cg d2UncmUgdmFsaWQgZm9yIGBzdHJpZGVgIHJlYWRzL3dyaXRlcywgc28gd2UgY2FuIGNhbGwgdGhp cyBmdW5jdGlvbi4gV2UgZG9uJ3QgbmVlZCBhbGlnbm1lbnQuCisgICAgICAgICAgICAgICAgICAg ICBpZiAhJHN0cmlkZV9uZWl0aGVyX2FsaWduZWQoc3JjLmFkZChvZmZzZXQpLCBkc3QuYWRkKG9m ZnNldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpF OworKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0gc3RyaWRl YCB3aGljaCBtZWFucyB3ZSBhbHdheXMgaGF2ZSBhdCBsZWFzdCBgc3RyaWRlYCBlbGVtZW50cyB0 byBtdW5jaCBuZXh0IHRpbWUuCisgICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5f bWludXNfc3RyaWRlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICB3aGlsZSBvZmZzZXQgPCBsZW4geworKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6 IFVzZXMgbGVuIGludmFyaWFudCBoZXJlIGFuZCBiZWxvdworICAgICAgICAgICAgICAgICBsZXQg Y29kZV91bml0ID0gKihzcmMuYWRkKG9mZnNldCkpOworICAgICAgICAgICAgICAgICBpZiBjb2Rl X3VuaXQgPiAxMjcgeworKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5LXVzYWJsZSBpbnZh cmlhbnQgdXBoZWxkIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTb21lKChjb2Rl X3VuaXQsIG9mZnNldCkpOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICoo ZHN0LmFkZChvZmZzZXQpKSA9IGNvZGVfdW5pdCBhcyAkZHN0X3VuaXQ7CisgICAgICAgICAgICAg ICAgIG9mZnNldCArPSAxOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBOb25lCisgICAg ICAgICB9CisgICAgIH07CisgfQorIAorICNbYWxsb3codW51c2VkX21hY3JvcyldCisgbWFjcm9f cnVsZXMhIGxhdGluMV9zaW1kX3VuYWxpZ24geworKyAgICAvLyBTYWZldHk6IHN0cmlkZV9uZWl0 aGVyX2FsaWduZWQgbXVzdCBiZSBhIGZ1bmN0aW9uIHRoYXQgcmVxdWlyZXMgc3JjL2Rlc3QgYmUg dmFsaWQgZm9yIHVuYWxpZ25lZCByZWFkcy93cml0ZXMgZm9yIFNJTURfU1RSSURFX1NJWkUgZWxl bWVudHMgb2YgdHlwZSBzcmNfdW5pdC9kZXN0X3VuaXQKKyAgICAgKCRuYW1lOmlkZW50LCAkc3Jj X3VuaXQ6dHksICRkc3RfdW5pdDp0eSwgJHN0cmlkZV9uZWl0aGVyX2FsaWduZWQ6aWRlbnQpID0+ IHsKKysgICAgICAgIC8vLyBTYWZldHk6IHNyYyBhbmQgZHN0IG11c3QgYmUgdmFsaWQgZm9yIHVu YWxpZ25lZCByZWFkcy93cml0ZXMgb2YgbGVuIGVsZW1lbnRzIG9mIHR5cGUgc3JjX3VuaXQvZHN0 X3VuaXQKKyAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICBwdWIgdW5zYWZlIGZu ICRuYW1lKHNyYzogKmNvbnN0ICRzcmNfdW5pdCwgZHN0OiAqbXV0ICRkc3RfdW5pdCwgbGVuOiB1 c2l6ZSkgeworICAgICAgICAgICAgIGxldCBtdXQgb2Zmc2V0ID0gMHVzaXplOworKyAgICAgICAg ICAgIC8vIFNhZmV0eTogaWYgdGhpcyBjaGVjayBzdWNjZWVkcyB3ZSdyZSB2YWxpZCBmb3IgcmVh ZGluZy93cml0aW5nIGF0IGxlYXN0IGBzdHJpZGVgIGVsZW1lbnRzLgorICAgICAgICAgICAgIGlm IFNJTURfU1RSSURFX1NJWkUgPD0gbGVuIHsKKyAgICAgICAgICAgICAgICAgbGV0IGxlbl9taW51 c19zdHJpZGUgPSBsZW4gLSBTSU1EX1NUUklERV9TSVpFOworICAgICAgICAgICAgICAgICBsb29w IHsKKysgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2Uga25vdyB3ZSdyZSB2YWxpZCBm b3IgYHN0cmlkZWAgcmVhZHMvd3JpdGVzLCBzbyB3ZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLiBX ZSBkb24ndCBuZWVkIGFsaWdubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICRzdHJpZGVfbmVp dGhlcl9hbGlnbmVkKHNyYy5hZGQob2Zmc2V0KSwgZHN0LmFkZChvZmZzZXQpKTsKKyAgICAgICAg ICAgICAgICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFOworKyAgICAgICAgICAgICAg ICAgICAgLy8gVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0gc3RyaWRlYCB3aGljaCBtZWFucyB3ZSBh bHdheXMgaGF2ZSBhdCBsZWFzdCBgc3RyaWRlYCBlbGVtZW50cyB0byBtdW5jaCBuZXh0IHRpbWUu CisgICAgICAgICAgICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5fbWludXNfc3RyaWRlIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB3aGlsZSBvZmZz ZXQgPCBsZW4geworKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFVzZXMgbGVuIGludmFyaWFu dCBoZXJlCisgICAgICAgICAgICAgICAgIGxldCBjb2RlX3VuaXQgPSAqKHNyYy5hZGQob2Zmc2V0 KSk7CisgICAgICAgICAgICAgICAgICooZHN0LmFkZChvZmZzZXQpKSA9IGNvZGVfdW5pdCBhcyAk ZHN0X3VuaXQ7CisgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOworICAgICAgICAgICAgIH0K KyAgICAgICAgIH0KKyAgICAgfTsKKyB9CisgCisgI1thbGxvdyh1bnVzZWRfbWFjcm9zKV0KKyBt YWNyb19ydWxlcyEgYXNjaWlfdG9fYXNjaWlfc2ltZF9zdHJpZGUgeworKyAgICAvLyBTYWZldHk6 IGxvYWQvc3RvcmUgbXVzdCBiZSB2YWxpZCBmb3IgMTYgYnl0ZXMgb2YgcmVhZC93cml0ZSwgd2hp Y2ggbWF5IGJlIHVuYWxpZ25lZC4gKGNhbmRpZGF0ZXM6IGAobG9hZHxzdG9yZSkoMTZ8OClfKHVu YWxpZ25lZHxhbGlnbmVkKWAgZnVuY3Rpb25zKQorICAgICAoJG5hbWU6aWRlbnQsICRsb2FkOmlk ZW50LCAkc3RvcmU6aWRlbnQpID0+IHsKKysgICAgICAgIC8vLyBTYWZldHk6IHNyYyBhbmQgZHN0 IG11c3QgYmUgdmFsaWQgZm9yIDE2IGJ5dGVzIG9mIHJlYWQvd3JpdGUgYWNjb3JkaW5nIHRvCisr ICAgICAgICAvLy8gdGhlICRsb2FkLyRzdG9yZSBmbiwgd2hpY2ggbWF5IGFsbG93IGZvciB1bmFs aWduZWQgcmVhZHMvd3JpdGVzIG9yIHJlcXVpcmUKKysgICAgICAgIC8vLyBhbGlnbm1lbnQgdG8g ZWl0aGVyIDE2eDggb3IgdTh4MTYuCisgICAgICAgICAjW2lubGluZShhbHdheXMpXQorICAgICAg ICAgcHViIHVuc2FmZSBmbiAkbmFtZShzcmM6ICpjb25zdCB1OCwgZHN0OiAqbXV0IHU4KSAtPiBi b29sIHsKKyAgICAgICAgICAgICBsZXQgc2ltZCA9ICRsb2FkKHNyYyk7CisgICAgICAgICAgICAg aWYgIXNpbWRfaXNfYXNjaWkoc2ltZCkgeworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgICRzdG9yZShkc3QsIHNpbWQpOworICAgICAg ICAgICAgIHRydWUKKyAgICAgICAgIH0KKyAgICAgfTsKKyB9CisgCisgI1thbGxvdyh1bnVzZWRf bWFjcm9zKV0KKyBtYWNyb19ydWxlcyEgYXNjaWlfdG9fYXNjaWlfc2ltZF9kb3VibGVfc3RyaWRl IHsKKysgICAgLy8gU2FmZXR5OiBzdG9yZSBtdXN0IGJlIHZhbGlkIGZvciAzMiBieXRlcyBvZiB3 cml0ZSwgd2hpY2ggbWF5IGJlIHVuYWxpZ25lZCAoY2FuZGlkYXRlczogYHN0b3JlKDh8MTYpXyhh bGlnbmVkfHVuYWxpZ25lZClgKQorICAgICAoJG5hbWU6aWRlbnQsICRzdG9yZTppZGVudCkgPT4g eworKyAgICAgICAgLy8vIFNhZmV0eTogc3JjIG11c3QgYmUgdmFsaWQgZm9yIDMyIGJ5dGVzIG9m IGFsaWduZWQgdTh4MTYgcmVhZAorKyAgICAgICAgLy8vIGRzdCBtdXN0IGJlIHZhbGlkIGZvciAz MiBieXRlcyBvZiB1bmFsaWduZWQgd3JpdGUgYWNjb3JkaW5nIHRvCisrICAgICAgICAvLy8gdGhl ICRzdG9yZSBmbiwgd2hpY2ggbWF5IGFsbG93IGZvciB1bmFsaWduZWQgd3JpdGVzIG9yIHJlcXVp cmUKKysgICAgICAgIC8vLyBhbGlnbm1lbnQgdG8gZWl0aGVyIDE2eDggb3IgdTh4MTYuCisrICAg ICAgICAvLy8KKysgICAgICAgIC8vLyBTYWZldHktdXNhYmxlIGludmFyaWFudDogUmV0dXJucyBT b21lKGluZGV4KSBpZiB0aGUgZWxlbWVudCBhdCBgaW5kZXhgIGlzIGludmFsaWQgQVNDSUkKKyAg ICAgICAgICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICBwdWIgdW5zYWZlIGZuICRuYW1lKHNy YzogKmNvbnN0IHU4LCBkc3Q6ICptdXQgdTgpIC0+IE9wdGlvbjx1c2l6ZT4geworICAgICAgICAg ICAgIGxldCBmaXJzdCA9IGxvYWQxNl9hbGlnbmVkKHNyYyk7CisgICAgICAgICAgICAgbGV0IHNl Y29uZCA9IGxvYWQxNl9hbGlnbmVkKHNyYy5hZGQoU0lNRF9TVFJJREVfU0laRSkpOworICAgICAg ICAgICAgICRzdG9yZShkc3QsIGZpcnN0KTsKKyAgICAgICAgICAgICBpZiB1bmxpa2VseSghc2lt ZF9pc19hc2NpaShmaXJzdCB8IHNlY29uZCkpIHsKKysgICAgICAgICAgICAgICAgLy8gU2FmZXR5 OiBtYXNrX2FzY2lpIHByb2R1Y2VzIGEgbWFzayBvZiBhbGwgdGhlIGhpZ2ggYml0cy4KKyAgICAg ICAgICAgICAgICAgbGV0IG1hc2tfZmlyc3QgPSBtYXNrX2FzY2lpKGZpcnN0KTsKKyAgICAgICAg ICAgICAgICAgaWYgbWFza19maXJzdCAhPSAwIHsKKysgICAgICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zIHRoaXMgd2lsbCBiZSB0aGUgbnVtYmVyIG9m IGFzY2lpIGJ5dGVzCisrICAgICAgICAgICAgICAgICAgICAvLyBiZWZvcmUgdGhlIGZpcnN0IG5v bi1hc2NpaSwgaS5lLiB2YWxpZCBmb3IgaW5kZXhpbmcgc3JjCisrICAgICAgICAgICAgICAgICAg ICAvLyBUT0RPIFNBRkVUWTogV2hhdCBhYm91dCBiaWctZW5kaWFuIHN5c3RlbXM/CisgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gU29tZShtYXNrX2ZpcnN0LnRyYWlsaW5nX3plcm9zKCkgYXMg dXNpemUpOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICRzdG9yZShkc3Qu YWRkKFNJTURfU1RSSURFX1NJWkUpLCBzZWNvbmQpOworICAgICAgICAgICAgICAgICBsZXQgbWFz a19zZWNvbmQgPSBtYXNrX2FzY2lpKHNlY29uZCk7CisrICAgICAgICAgICAgICAgIC8vIFNhZmV0 eTogb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zIHRoaXMgd2lsbCBiZSB0aGUgbnVtYmVyIG9mIGFz Y2lpIGJ5dGVzCisrICAgICAgICAgICAgICAgIC8vIGJlZm9yZSB0aGUgZmlyc3Qgbm9uLWFzY2lp LCBpLmUuIHZhbGlkIGZvciBpbmRleGluZyBzcmMKKyAgICAgICAgICAgICAgICAgcmV0dXJuIFNv bWUoU0lNRF9TVFJJREVfU0laRSArIG1hc2tfc2Vjb25kLnRyYWlsaW5nX3plcm9zKCkgYXMgdXNp emUpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAkc3RvcmUoZHN0LmFkZChTSU1EX1NU UklERV9TSVpFKSwgc2Vjb25kKTsKKyAgICAgICAgICAgICBOb25lCisgICAgICAgICB9CisgICAg IH07CisgfQorIAorICNbYWxsb3codW51c2VkX21hY3JvcyldCisgbWFjcm9fcnVsZXMhIGFzY2lp X3RvX2Jhc2ljX2xhdGluX3NpbWRfc3RyaWRlIHsKKysgICAgLy8gU2FmZXR5OiBsb2FkL3N0b3Jl IG11c3QgYmUgdmFsaWQgZm9yIDE2IGJ5dGVzIG9mIHJlYWQvd3JpdGUsIHdoaWNoIG1heSBiZSB1 bmFsaWduZWQuIChjYW5kaWRhdGVzOiBgKGxvYWR8c3RvcmUpKDE2fDgpXyh1bmFsaWduZWR8YWxp Z25lZClgIGZ1bmN0aW9ucykKKyAgICAgKCRuYW1lOmlkZW50LCAkbG9hZDppZGVudCwgJHN0b3Jl OmlkZW50KSA9PiB7CisrICAgICAgICAvLy8gU2FmZXR5OiBzcmMgYW5kIGRzdCBtdXN0IGJlIHZh bGlkIGZvciAxNi8zMiBieXRlcyBvZiByZWFkL3dyaXRlIGFjY29yZGluZyB0bworKyAgICAgICAg Ly8vIHRoZSAkbG9hZC8kc3RvcmUgZm4sIHdoaWNoIG1heSBhbGxvdyBmb3IgdW5hbGlnbmVkIHJl YWRzL3dyaXRlcyBvciByZXF1aXJlCisrICAgICAgICAvLy8gYWxpZ25tZW50IHRvIGVpdGhlciAx Nng4IG9yIHU4eDE2LgorICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICAgICAgIHB1YiB1 bnNhZmUgZm4gJG5hbWUoc3JjOiAqY29uc3QgdTgsIGRzdDogKm11dCB1MTYpIC0+IGJvb2wgewor ICAgICAgICAgICAgIGxldCBzaW1kID0gJGxvYWQoc3JjKTsKKyAgICAgICAgICAgICBpZiAhc2lt ZF9pc19hc2NpaShzaW1kKSB7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgbGV0IChmaXJzdCwgc2Vjb25kKSA9IHNpbWRfdW5wYWNr KHNpbWQpOworICAgICAgICAgICAgICRzdG9yZShkc3QsIGZpcnN0KTsKKyAgICAgICAgICAgICAk c3RvcmUoZHN0LmFkZCg4KSwgc2Vjb25kKTsKKyAgICAgICAgICAgICB0cnVlCisgICAgICAgICB9 CisgICAgIH07CisgfQorIAorICNbYWxsb3codW51c2VkX21hY3JvcyldCisgbWFjcm9fcnVsZXMh IGFzY2lpX3RvX2Jhc2ljX2xhdGluX3NpbWRfZG91YmxlX3N0cmlkZSB7CisrICAgIC8vIFNhZmV0 eTogc3RvcmUgbXVzdCBiZSB2YWxpZCBmb3IgMTYgYnl0ZXMgb2Ygd3JpdGUsIHdoaWNoIG1heSBi ZSB1bmFsaWduZWQKKyAgICAgKCRuYW1lOmlkZW50LCAkc3RvcmU6aWRlbnQpID0+IHsKKysgICAg ICAgIC8vLyBTYWZldHk6IHNyYyBtdXN0IGJlIHZhbGlkIGZvciAyKlNJTURfU1RSSURFX1NJWkUg Ynl0ZXMgb2YgYWxpZ25lZCByZWFkcywKKysgICAgICAgIC8vLyBhbGlnbmVkIHRvIGVpdGhlciAx Nng4IG9yIHU4eDE2LgorKyAgICAgICAgLy8vIGRzdCBtdXN0IGJlIHZhbGlkIGZvciAyKlNJTURf U1RSSURFX1NJWkUgYnl0ZXMgb2YgYWxpZ25lZCBvciB1bmFsaWduZWQgcmVhZHMKKyAgICAgICAg ICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICBwdWIgdW5zYWZlIGZuICRuYW1lKHNyYzogKmNv bnN0IHU4LCBkc3Q6ICptdXQgdTE2KSAtPiBPcHRpb248dXNpemU+IHsKKyAgICAgICAgICAgICBs ZXQgZmlyc3QgPSBsb2FkMTZfYWxpZ25lZChzcmMpOworICAgICAgICAgICAgIGxldCBzZWNvbmQg PSBsb2FkMTZfYWxpZ25lZChzcmMuYWRkKFNJTURfU1RSSURFX1NJWkUpKTsKKyAgICAgICAgICAg ICBsZXQgKGEsIGIpID0gc2ltZF91bnBhY2soZmlyc3QpOworICAgICAgICAgICAgICRzdG9yZShk c3QsIGEpOworKyAgICAgICAgICAgIC8vIFNhZmV0eTogZGl2aWRlIGJ5IDIgc2luY2UgaXQncyBh IHUxNiBwb2ludGVyCisgICAgICAgICAgICAgJHN0b3JlKGRzdC5hZGQoU0lNRF9TVFJJREVfU0la RSAvIDIpLCBiKTsKKyAgICAgICAgICAgICBpZiB1bmxpa2VseSghc2ltZF9pc19hc2NpaShmaXJz dCB8IHNlY29uZCkpIHsKKyAgICAgICAgICAgICAgICAgbGV0IG1hc2tfZmlyc3QgPSBtYXNrX2Fz Y2lpKGZpcnN0KTsKKyAgICAgICAgICAgICAgICAgaWYgbWFza19maXJzdCAhPSAwIHsKKyAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBTb21lKG1hc2tfZmlyc3QudHJhaWxpbmdfemVyb3MoKSBh cyB1c2l6ZSk7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgbGV0IChjLCBk KSA9IHNpbWRfdW5wYWNrKHNlY29uZCk7CisgICAgICAgICAgICAgICAgICRzdG9yZShkc3QuYWRk KFNJTURfU1RSSURFX1NJWkUpLCBjKTsKK0BAIC04MzIsNDcgKzEwNTUsNTkgQEAgbWFjcm9fcnVs ZXMhIGFzY2lpX3RvX2Jhc2ljX2xhdGluX3NpbWRfZAorICAgICAgICAgICAgICRzdG9yZShkc3Qu YWRkKFNJTURfU1RSSURFX1NJWkUgKyAoU0lNRF9TVFJJREVfU0laRSAvIDIpKSwgZCk7CisgICAg ICAgICAgICAgTm9uZQorICAgICAgICAgfQorICAgICB9OworIH0KKyAKKyAjW2FsbG93KHVudXNl ZF9tYWNyb3MpXQorIG1hY3JvX3J1bGVzISB1bnBhY2tfc2ltZF9zdHJpZGUgeworKyAgICAvLyBT YWZldHk6IGxvYWQvc3RvcmUgbXVzdCBiZSB2YWxpZCBmb3IgMTYgYnl0ZXMgb2YgcmVhZC93cml0 ZSwgd2hpY2ggbWF5IGJlIHVuYWxpZ25lZC4gKGNhbmRpZGF0ZXM6IGAobG9hZHxzdG9yZSkoMTZ8 OClfKHVuYWxpZ25lZHxhbGlnbmVkKWAgZnVuY3Rpb25zKQorICAgICAoJG5hbWU6aWRlbnQsICRs b2FkOmlkZW50LCAkc3RvcmU6aWRlbnQpID0+IHsKKysgICAgICAgIC8vLyBTYWZldHk6IHNyYyBh bmQgZHN0IG11c3QgYmUgdmFsaWQgZm9yIDE2IGJ5dGVzIG9mIHJlYWQvd3JpdGUgYWNjb3JkaW5n IHRvCisrICAgICAgICAvLy8gdGhlICRsb2FkLyRzdG9yZSBmbiwgd2hpY2ggbWF5IGFsbG93IGZv ciB1bmFsaWduZWQgcmVhZHMvd3JpdGVzIG9yIHJlcXVpcmUKKysgICAgICAgIC8vLyBhbGlnbm1l bnQgdG8gZWl0aGVyIDE2eDggb3IgdTh4MTYuCisgICAgICAgICAjW2lubGluZShhbHdheXMpXQor ICAgICAgICAgcHViIHVuc2FmZSBmbiAkbmFtZShzcmM6ICpjb25zdCB1OCwgZHN0OiAqbXV0IHUx NikgeworICAgICAgICAgICAgIGxldCBzaW1kID0gJGxvYWQoc3JjKTsKKyAgICAgICAgICAgICBs ZXQgKGZpcnN0LCBzZWNvbmQpID0gc2ltZF91bnBhY2soc2ltZCk7CisgICAgICAgICAgICAgJHN0 b3JlKGRzdCwgZmlyc3QpOworICAgICAgICAgICAgICRzdG9yZShkc3QuYWRkKDgpLCBzZWNvbmQp OworICAgICAgICAgfQorICAgICB9OworIH0KKyAKKyAjW2FsbG93KHVudXNlZF9tYWNyb3MpXQor IG1hY3JvX3J1bGVzISBiYXNpY19sYXRpbl90b19hc2NpaV9zaW1kX3N0cmlkZSB7CisrICAgIC8v IFNhZmV0eTogbG9hZC9zdG9yZSBtdXN0IGJlIHZhbGlkIGZvciAxNiBieXRlcyBvZiByZWFkL3dy aXRlLCB3aGljaCBtYXkgYmUgdW5hbGlnbmVkLiAoY2FuZGlkYXRlczogYChsb2FkfHN0b3JlKSgx Nnw4KV8odW5hbGlnbmVkfGFsaWduZWQpYCBmdW5jdGlvbnMpCisgICAgICgkbmFtZTppZGVudCwg JGxvYWQ6aWRlbnQsICRzdG9yZTppZGVudCkgPT4geworKyAgICAgICAgLy8vIFNhZmV0eTogc3Jj IGFuZCBkc3QgbXVzdCBiZSB2YWxpZCBmb3IgMzIvMTYgYnl0ZXMgb2YgcmVhZC93cml0ZSBhY2Nv cmRpbmcgdG8KKysgICAgICAgIC8vLyB0aGUgJGxvYWQvJHN0b3JlIGZuLCB3aGljaCBtYXkgYWxs b3cgZm9yIHVuYWxpZ25lZCByZWFkcy93cml0ZXMgb3IgcmVxdWlyZQorKyAgICAgICAgLy8vIGFs aWdubWVudCB0byBlaXRoZXIgMTZ4OCBvciB1OHgxNi4KKyAgICAgICAgICNbaW5saW5lKGFsd2F5 cyldCisgICAgICAgICBwdWIgdW5zYWZlIGZuICRuYW1lKHNyYzogKmNvbnN0IHUxNiwgZHN0OiAq bXV0IHU4KSAtPiBib29sIHsKKyAgICAgICAgICAgICBsZXQgZmlyc3QgPSAkbG9hZChzcmMpOwor ICAgICAgICAgICAgIGxldCBzZWNvbmQgPSAkbG9hZChzcmMuYWRkKDgpKTsKKyAgICAgICAgICAg ICBpZiBzaW1kX2lzX2Jhc2ljX2xhdGluKGZpcnN0IHwgc2Vjb25kKSB7CisgICAgICAgICAgICAg ICAgICRzdG9yZShkc3QsIHNpbWRfcGFjayhmaXJzdCwgc2Vjb25kKSk7CisgICAgICAgICAgICAg ICAgIHRydWUKKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICBmYWxzZQor ICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfTsKKyB9CisgCisgI1thbGxvdyh1bnVz ZWRfbWFjcm9zKV0KKyBtYWNyb19ydWxlcyEgcGFja19zaW1kX3N0cmlkZSB7CisrICAgIC8vIFNh ZmV0eTogbG9hZC9zdG9yZSBtdXN0IGJlIHZhbGlkIGZvciAxNiBieXRlcyBvZiByZWFkL3dyaXRl LCB3aGljaCBtYXkgYmUgdW5hbGlnbmVkLiAoY2FuZGlkYXRlczogYChsb2FkfHN0b3JlKSgxNnw4 KV8odW5hbGlnbmVkfGFsaWduZWQpYCBmdW5jdGlvbnMpCisgICAgICgkbmFtZTppZGVudCwgJGxv YWQ6aWRlbnQsICRzdG9yZTppZGVudCkgPT4geworKyAgICAgICAgLy8vIFNhZmV0eTogc3JjIGFu ZCBkc3QgbXVzdCBiZSB2YWxpZCBmb3IgMzIvMTYgYnl0ZXMgb2YgcmVhZC93cml0ZSBhY2NvcmRp bmcgdG8KKysgICAgICAgIC8vLyB0aGUgJGxvYWQvJHN0b3JlIGZuLCB3aGljaCBtYXkgYWxsb3cg Zm9yIHVuYWxpZ25lZCByZWFkcy93cml0ZXMgb3IgcmVxdWlyZQorKyAgICAgICAgLy8vIGFsaWdu bWVudCB0byBlaXRoZXIgMTZ4OCBvciB1OHgxNi4KKyAgICAgICAgICNbaW5saW5lKGFsd2F5cyld CisgICAgICAgICBwdWIgdW5zYWZlIGZuICRuYW1lKHNyYzogKmNvbnN0IHUxNiwgZHN0OiAqbXV0 IHU4KSB7CisgICAgICAgICAgICAgbGV0IGZpcnN0ID0gJGxvYWQoc3JjKTsKKyAgICAgICAgICAg ICBsZXQgc2Vjb25kID0gJGxvYWQoc3JjLmFkZCg4KSk7CisgICAgICAgICAgICAgJHN0b3JlKGRz dCwgc2ltZF9wYWNrKGZpcnN0LCBzZWNvbmQpKTsKKyAgICAgICAgIH0KKyAgICAgfTsKKyB9CitA QCAtODg4LDI0ICsxMTIzLDI4IEBAIGNmZ19pZiEgeworIC8vICAgICAgICBwdWIgY29uc3QgQUxJ R05NRU5UOiB1c2l6ZSA9IDg7CisgCisgICAgICAgICBwdWIgY29uc3QgQUxVX1NUUklERV9TSVpF OiB1c2l6ZSA9IDE2OworIAorICAgICAgICAgcHViIGNvbnN0IEFMVV9BTElHTk1FTlQ6IHVzaXpl ID0gODsKKyAKKyAgICAgICAgIHB1YiBjb25zdCBBTFVfQUxJR05NRU5UX01BU0s6IHVzaXplID0g NzsKKyAKKysgICAgICAgIC8vIFNhZmV0eSBmb3Igc3RyaWRlIG1hY3JvczogV2Ugc3RpY2sgdG8g dGhlIGxvYWQ4X2FsaWduZWQvZXRjIGZhbWlseSBvZiBmdW5jdGlvbnMuIFdlIGNvbnNpc3RlbnRs eSBwcm9kdWNlCisrICAgICAgICAvLyBuZWl0aGVyX3VuYWxpZ25lZCB2YXJpYW50cyB1c2luZyBv bmx5IHVuYWxpZ25lZCBpbnB1dHMuCisgICAgICAgICBhc2NpaV90b19hc2NpaV9zaW1kX3N0cmlk ZSEoYXNjaWlfdG9fYXNjaWlfc3RyaWRlX25laXRoZXJfYWxpZ25lZCwgbG9hZDE2X3VuYWxpZ25l ZCwgc3RvcmUxNl91bmFsaWduZWQpOworIAorICAgICAgICAgYXNjaWlfdG9fYmFzaWNfbGF0aW5f c2ltZF9zdHJpZGUhKGFzY2lpX3RvX2Jhc2ljX2xhdGluX3N0cmlkZV9uZWl0aGVyX2FsaWduZWQs IGxvYWQxNl91bmFsaWduZWQsIHN0b3JlOF91bmFsaWduZWQpOworICAgICAgICAgdW5wYWNrX3Np bWRfc3RyaWRlISh1bnBhY2tfc3RyaWRlX25laXRoZXJfYWxpZ25lZCwgbG9hZDE2X3VuYWxpZ25l ZCwgc3RvcmU4X3VuYWxpZ25lZCk7CisgCisgICAgICAgICBiYXNpY19sYXRpbl90b19hc2NpaV9z aW1kX3N0cmlkZSEoYmFzaWNfbGF0aW5fdG9fYXNjaWlfc3RyaWRlX25laXRoZXJfYWxpZ25lZCwg bG9hZDhfdW5hbGlnbmVkLCBzdG9yZTE2X3VuYWxpZ25lZCk7CisgICAgICAgICBwYWNrX3NpbWRf c3RyaWRlIShwYWNrX3N0cmlkZV9uZWl0aGVyX2FsaWduZWQsIGxvYWQ4X3VuYWxpZ25lZCwgc3Rv cmUxNl91bmFsaWduZWQpOworIAorKyAgICAgICAgLy8gU2FmZXR5IGZvciBjb252ZXJzaW9uIG1h Y3JvczogV2UgdXNlIHRoZSB1bmFsaWduIG1hY3JvIHdpdGggdW5hbGlnbiBmdW5jdGlvbnMgYWJv dmUuIEFsbCBzdHJpZGUgZnVuY3Rpb25zIHdlcmUgcHJvZHVjZWQKKysgICAgICAgIC8vIGJ5IHN0 cmlkZSBtYWNyb3MgdGhhdCB1bml2ZXJzYWxseSBtdW5jaCBhIHNpbmdsZSBTSU1EX1NUUklERV9T SVpFIHdvcnRoIG9mIGVsZW1lbnRzLgorICAgICAgICAgYXNjaWlfc2ltZF91bmFsaWduIShhc2Np aV90b19hc2NpaSwgdTgsIHU4LCBhc2NpaV90b19hc2NpaV9zdHJpZGVfbmVpdGhlcl9hbGlnbmVk KTsKKyAgICAgICAgIGFzY2lpX3NpbWRfdW5hbGlnbiEoYXNjaWlfdG9fYmFzaWNfbGF0aW4sIHU4 LCB1MTYsIGFzY2lpX3RvX2Jhc2ljX2xhdGluX3N0cmlkZV9uZWl0aGVyX2FsaWduZWQpOworICAg ICAgICAgYXNjaWlfc2ltZF91bmFsaWduIShiYXNpY19sYXRpbl90b19hc2NpaSwgdTE2LCB1OCwg YmFzaWNfbGF0aW5fdG9fYXNjaWlfc3RyaWRlX25laXRoZXJfYWxpZ25lZCk7CisgICAgICAgICBs YXRpbjFfc2ltZF91bmFsaWduISh1bnBhY2tfbGF0aW4xLCB1OCwgdTE2LCB1bnBhY2tfc3RyaWRl X25laXRoZXJfYWxpZ25lZCk7CisgICAgICAgICBsYXRpbjFfc2ltZF91bmFsaWduIShwYWNrX2xh dGluMSwgdTE2LCB1OCwgcGFja19zdHJpZGVfbmVpdGhlcl9hbGlnbmVkKTsKKyAgICAgfSBlbHNl IGlmICNbY2ZnKGFsbChmZWF0dXJlID0gInNpbWQtYWNjZWwiLCB0YXJnZXRfZW5kaWFuID0gImxp dHRsZSIsIHRhcmdldF9mZWF0dXJlID0gIm5lb24iKSldIHsKKyAgICAgICAgIC8vIFNJTUQgd2l0 aCBkaWZmZXJlbnQgaW5zdHJ1Y3Rpb25zIGZvciBhbGlnbmVkIGFuZCB1bmFsaWduZWQgbG9hZHMg YW5kIHN0b3Jlcy4KKyAgICAgICAgIC8vCitAQCAtOTE0LDE2ICsxMTUzLDE5IEBAIGNmZ19pZiEg eworICAgICAgICAgLy8gYnV0IHRoZSBiZW5jaG1hcmsgcmVzdWx0cyBJIHNlZSBkb24ndCBhZ3Jl ZS4KKyAKKyAgICAgICAgIHB1YiBjb25zdCBTSU1EX1NUUklERV9TSVpFOiB1c2l6ZSA9IDE2Owor IAorICAgICAgICAgcHViIGNvbnN0IE1BWF9TVFJJREVfU0laRTogdXNpemUgPSAxNjsKKyAKKyAg ICAgICAgIHB1YiBjb25zdCBTSU1EX0FMSUdOTUVOVF9NQVNLOiB1c2l6ZSA9IDE1OworIAorKyAg ICAgICAgLy8gU2FmZXR5IGZvciBzdHJpZGUgbWFjcm9zOiBXZSBzdGljayB0byB0aGUgbG9hZDhf YWxpZ25lZC9ldGMgZmFtaWx5IG9mIGZ1bmN0aW9ucy4gV2UgY29uc2lzdGVudGx5IG5hbWUKKysg ICAgICAgIC8vIGFsaWduZWQvdW5hbGlnbmVkIGZ1bmN0aW9ucyBhY2NvcmRpbmcgdG8gc3JjL2Rz dCBiZWluZyBhbGlnbmVkL3VuYWxpZ25lZAorKworICAgICAgICAgYXNjaWlfdG9fYXNjaWlfc2lt ZF9zdHJpZGUhKGFzY2lpX3RvX2FzY2lpX3N0cmlkZV9ib3RoX2FsaWduZWQsIGxvYWQxNl9hbGln bmVkLCBzdG9yZTE2X2FsaWduZWQpOworICAgICAgICAgYXNjaWlfdG9fYXNjaWlfc2ltZF9zdHJp ZGUhKGFzY2lpX3RvX2FzY2lpX3N0cmlkZV9zcmNfYWxpZ25lZCwgbG9hZDE2X2FsaWduZWQsIHN0 b3JlMTZfdW5hbGlnbmVkKTsKKyAgICAgICAgIGFzY2lpX3RvX2FzY2lpX3NpbWRfc3RyaWRlIShh c2NpaV90b19hc2NpaV9zdHJpZGVfZHN0X2FsaWduZWQsIGxvYWQxNl91bmFsaWduZWQsIHN0b3Jl MTZfYWxpZ25lZCk7CisgICAgICAgICBhc2NpaV90b19hc2NpaV9zaW1kX3N0cmlkZSEoYXNjaWlf dG9fYXNjaWlfc3RyaWRlX25laXRoZXJfYWxpZ25lZCwgbG9hZDE2X3VuYWxpZ25lZCwgc3RvcmUx Nl91bmFsaWduZWQpOworIAorICAgICAgICAgYXNjaWlfdG9fYmFzaWNfbGF0aW5fc2ltZF9zdHJp ZGUhKGFzY2lpX3RvX2Jhc2ljX2xhdGluX3N0cmlkZV9ib3RoX2FsaWduZWQsIGxvYWQxNl9hbGln bmVkLCBzdG9yZThfYWxpZ25lZCk7CisgICAgICAgICBhc2NpaV90b19iYXNpY19sYXRpbl9zaW1k X3N0cmlkZSEoYXNjaWlfdG9fYmFzaWNfbGF0aW5fc3RyaWRlX3NyY19hbGlnbmVkLCBsb2FkMTZf YWxpZ25lZCwgc3RvcmU4X3VuYWxpZ25lZCk7CisgICAgICAgICBhc2NpaV90b19iYXNpY19sYXRp bl9zaW1kX3N0cmlkZSEoYXNjaWlfdG9fYmFzaWNfbGF0aW5fc3RyaWRlX2RzdF9hbGlnbmVkLCBs b2FkMTZfdW5hbGlnbmVkLCBzdG9yZThfYWxpZ25lZCk7CitAQCAtOTM5LDM2ICsxMTgxLDQzIEBA IGNmZ19pZiEgeworICAgICAgICAgYmFzaWNfbGF0aW5fdG9fYXNjaWlfc2ltZF9zdHJpZGUhKGJh c2ljX2xhdGluX3RvX2FzY2lpX3N0cmlkZV9kc3RfYWxpZ25lZCwgbG9hZDhfdW5hbGlnbmVkLCBz dG9yZTE2X2FsaWduZWQpOworICAgICAgICAgYmFzaWNfbGF0aW5fdG9fYXNjaWlfc2ltZF9zdHJp ZGUhKGJhc2ljX2xhdGluX3RvX2FzY2lpX3N0cmlkZV9uZWl0aGVyX2FsaWduZWQsIGxvYWQ4X3Vu YWxpZ25lZCwgc3RvcmUxNl91bmFsaWduZWQpOworIAorICAgICAgICAgcGFja19zaW1kX3N0cmlk ZSEocGFja19zdHJpZGVfYm90aF9hbGlnbmVkLCBsb2FkOF9hbGlnbmVkLCBzdG9yZTE2X2FsaWdu ZWQpOworICAgICAgICAgcGFja19zaW1kX3N0cmlkZSEocGFja19zdHJpZGVfc3JjX2FsaWduZWQs IGxvYWQ4X2FsaWduZWQsIHN0b3JlMTZfdW5hbGlnbmVkKTsKKyAgICAgICAgIHBhY2tfc2ltZF9z dHJpZGUhKHBhY2tfc3RyaWRlX2RzdF9hbGlnbmVkLCBsb2FkOF91bmFsaWduZWQsIHN0b3JlMTZf YWxpZ25lZCk7CisgICAgICAgICBwYWNrX3NpbWRfc3RyaWRlIShwYWNrX3N0cmlkZV9uZWl0aGVy X2FsaWduZWQsIGxvYWQ4X3VuYWxpZ25lZCwgc3RvcmUxNl91bmFsaWduZWQpOworIAorKyAgICAg ICAgLy8gU2FmZXR5IGZvciBjb252ZXJzaW9uIG1hY3JvczogV2UgdXNlIHRoZSBjb3JyZWN0IHBh dHRlcm4gb2YgYm90aC9zcmMvZHN0L25laXRoZXIgaGVyZS4gQWxsIHN0cmlkZSBmdW5jdGlvbnMg d2VyZSBwcm9kdWNlZAorKyAgICAgICAgLy8gYnkgc3RyaWRlIG1hY3JvcyB0aGF0IHVuaXZlcnNh bGx5IG11bmNoIGEgc2luZ2xlIFNJTURfU1RSSURFX1NJWkUgd29ydGggb2YgZWxlbWVudHMuCisr CisgICAgICAgICBhc2NpaV9zaW1kX2NoZWNrX2FsaWduIShhc2NpaV90b19hc2NpaSwgdTgsIHU4 LCBhc2NpaV90b19hc2NpaV9zdHJpZGVfYm90aF9hbGlnbmVkLCBhc2NpaV90b19hc2NpaV9zdHJp ZGVfc3JjX2FsaWduZWQsIGFzY2lpX3RvX2FzY2lpX3N0cmlkZV9kc3RfYWxpZ25lZCwgYXNjaWlf dG9fYXNjaWlfc3RyaWRlX25laXRoZXJfYWxpZ25lZCk7CisgICAgICAgICBhc2NpaV9zaW1kX2No ZWNrX2FsaWduIShhc2NpaV90b19iYXNpY19sYXRpbiwgdTgsIHUxNiwgYXNjaWlfdG9fYmFzaWNf bGF0aW5fc3RyaWRlX2JvdGhfYWxpZ25lZCwgYXNjaWlfdG9fYmFzaWNfbGF0aW5fc3RyaWRlX3Ny Y19hbGlnbmVkLCBhc2NpaV90b19iYXNpY19sYXRpbl9zdHJpZGVfZHN0X2FsaWduZWQsIGFzY2lp X3RvX2Jhc2ljX2xhdGluX3N0cmlkZV9uZWl0aGVyX2FsaWduZWQpOworICAgICAgICAgYXNjaWlf c2ltZF9jaGVja19hbGlnbiEoYmFzaWNfbGF0aW5fdG9fYXNjaWksIHUxNiwgdTgsIGJhc2ljX2xh dGluX3RvX2FzY2lpX3N0cmlkZV9ib3RoX2FsaWduZWQsIGJhc2ljX2xhdGluX3RvX2FzY2lpX3N0 cmlkZV9zcmNfYWxpZ25lZCwgYmFzaWNfbGF0aW5fdG9fYXNjaWlfc3RyaWRlX2RzdF9hbGlnbmVk LCBiYXNpY19sYXRpbl90b19hc2NpaV9zdHJpZGVfbmVpdGhlcl9hbGlnbmVkKTsKKyAgICAgICAg IGxhdGluMV9zaW1kX2NoZWNrX2FsaWduISh1bnBhY2tfbGF0aW4xLCB1OCwgdTE2LCB1bnBhY2tf c3RyaWRlX2JvdGhfYWxpZ25lZCwgdW5wYWNrX3N0cmlkZV9zcmNfYWxpZ25lZCwgdW5wYWNrX3N0 cmlkZV9kc3RfYWxpZ25lZCwgdW5wYWNrX3N0cmlkZV9uZWl0aGVyX2FsaWduZWQpOworICAgICAg ICAgbGF0aW4xX3NpbWRfY2hlY2tfYWxpZ24hKHBhY2tfbGF0aW4xLCB1MTYsIHU4LCBwYWNrX3N0 cmlkZV9ib3RoX2FsaWduZWQsIHBhY2tfc3RyaWRlX3NyY19hbGlnbmVkLCBwYWNrX3N0cmlkZV9k c3RfYWxpZ25lZCwgcGFja19zdHJpZGVfbmVpdGhlcl9hbGlnbmVkKTsKKyAgICAgfSBlbHNlIGlm ICNbY2ZnKGFsbChmZWF0dXJlID0gInNpbWQtYWNjZWwiLCB0YXJnZXRfZmVhdHVyZSA9ICJzc2Uy IikpXSB7CisgICAgICAgICAvLyBTSU1EIHdpdGggZGlmZmVyZW50IGluc3RydWN0aW9ucyBmb3Ig YWxpZ25lZCBhbmQgdW5hbGlnbmVkIGxvYWRzIGFuZCBzdG9yZXMuCisgICAgICAgICAvLworICAg ICAgICAgLy8gTmV3ZXIgbWljcm9hcmNoaXRlY3R1cmVzIGFyZSBub3Qgc3VwcG9zZWQgdG8gaGF2 ZSBhIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgYmV0d2VlbgorICAgICAgICAgLy8gYWxpZ25lZCBh bmQgdW5hbGlnbmVkIFNTRTIgbG9hZHMgYW5kIHN0b3JlcyB3aGVuIHRoZSBhZGRyZXNzIGlzIGFj dHVhbGx5IGFsaWduZWQsCisgICAgICAgICAvLyBidXQgdGhlIGJlbmNobWFyayByZXN1bHRzIEkg c2VlIGRvbid0IGFncmVlLgorIAorICAgICAgICAgcHViIGNvbnN0IFNJTURfU1RSSURFX1NJWkU6 IHVzaXplID0gMTY7CisgCisrICAgICAgICAvLy8gU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IFRo aXMgc2hvdWxkIGJlIGlkZW50aWNhbCB0byBTSU1EX1NUUklERV9TSVpFICh1c2VkIGJ5IGFzY2lp X3NpbWRfY2hlY2tfYWxpZ25fdW5yb2xsZWQpCisgICAgICAgICBwdWIgY29uc3QgU0lNRF9BTElH Tk1FTlQ6IHVzaXplID0gMTY7CisgCisgICAgICAgICBwdWIgY29uc3QgTUFYX1NUUklERV9TSVpF OiB1c2l6ZSA9IDE2OworIAorICAgICAgICAgcHViIGNvbnN0IFNJTURfQUxJR05NRU5UX01BU0s6 IHVzaXplID0gMTU7CisgCisrICAgICAgICAvLyBTYWZldHkgZm9yIHN0cmlkZSBtYWNyb3M6IFdl IHN0aWNrIHRvIHRoZSBsb2FkOF9hbGlnbmVkL2V0YyBmYW1pbHkgb2YgZnVuY3Rpb25zLiBXZSBj b25zaXN0ZW50bHkgbmFtZQorKyAgICAgICAgLy8gYWxpZ25lZC91bmFsaWduZWQgZnVuY3Rpb25z IGFjY29yZGluZyB0byBzcmMvZHN0IGJlaW5nIGFsaWduZWQvdW5hbGlnbmVkCisrCisgICAgICAg ICBhc2NpaV90b19hc2NpaV9zaW1kX2RvdWJsZV9zdHJpZGUhKGFzY2lpX3RvX2FzY2lpX3NpbWRf ZG91YmxlX3N0cmlkZV9ib3RoX2FsaWduZWQsIHN0b3JlMTZfYWxpZ25lZCk7CisgICAgICAgICBh c2NpaV90b19hc2NpaV9zaW1kX2RvdWJsZV9zdHJpZGUhKGFzY2lpX3RvX2FzY2lpX3NpbWRfZG91 YmxlX3N0cmlkZV9zcmNfYWxpZ25lZCwgc3RvcmUxNl91bmFsaWduZWQpOworIAorICAgICAgICAg YXNjaWlfdG9fYmFzaWNfbGF0aW5fc2ltZF9kb3VibGVfc3RyaWRlIShhc2NpaV90b19iYXNpY19s YXRpbl9zaW1kX2RvdWJsZV9zdHJpZGVfYm90aF9hbGlnbmVkLCBzdG9yZThfYWxpZ25lZCk7Cisg ICAgICAgICBhc2NpaV90b19iYXNpY19sYXRpbl9zaW1kX2RvdWJsZV9zdHJpZGUhKGFzY2lpX3Rv X2Jhc2ljX2xhdGluX3NpbWRfZG91YmxlX3N0cmlkZV9zcmNfYWxpZ25lZCwgc3RvcmU4X3VuYWxp Z25lZCk7CisgCisgICAgICAgICBhc2NpaV90b19hc2NpaV9zaW1kX3N0cmlkZSEoYXNjaWlfdG9f YXNjaWlfc3RyaWRlX2JvdGhfYWxpZ25lZCwgbG9hZDE2X2FsaWduZWQsIHN0b3JlMTZfYWxpZ25l ZCk7CisgICAgICAgICBhc2NpaV90b19hc2NpaV9zaW1kX3N0cmlkZSEoYXNjaWlfdG9fYXNjaWlf c3RyaWRlX3NyY19hbGlnbmVkLCBsb2FkMTZfYWxpZ25lZCwgc3RvcmUxNl91bmFsaWduZWQpOwor QEAgLTk4NCwzMyArMTIzMyw0MyBAQCBjZmdfaWYhIHsKKyAgICAgICAgIGJhc2ljX2xhdGluX3Rv X2FzY2lpX3NpbWRfc3RyaWRlIShiYXNpY19sYXRpbl90b19hc2NpaV9zdHJpZGVfYm90aF9hbGln bmVkLCBsb2FkOF9hbGlnbmVkLCBzdG9yZTE2X2FsaWduZWQpOworICAgICAgICAgYmFzaWNfbGF0 aW5fdG9fYXNjaWlfc2ltZF9zdHJpZGUhKGJhc2ljX2xhdGluX3RvX2FzY2lpX3N0cmlkZV9zcmNf YWxpZ25lZCwgbG9hZDhfYWxpZ25lZCwgc3RvcmUxNl91bmFsaWduZWQpOworICAgICAgICAgYmFz aWNfbGF0aW5fdG9fYXNjaWlfc2ltZF9zdHJpZGUhKGJhc2ljX2xhdGluX3RvX2FzY2lpX3N0cmlk ZV9kc3RfYWxpZ25lZCwgbG9hZDhfdW5hbGlnbmVkLCBzdG9yZTE2X2FsaWduZWQpOworICAgICAg ICAgYmFzaWNfbGF0aW5fdG9fYXNjaWlfc2ltZF9zdHJpZGUhKGJhc2ljX2xhdGluX3RvX2FzY2lp X3N0cmlkZV9uZWl0aGVyX2FsaWduZWQsIGxvYWQ4X3VuYWxpZ25lZCwgc3RvcmUxNl91bmFsaWdu ZWQpOworIAorICAgICAgICAgcGFja19zaW1kX3N0cmlkZSEocGFja19zdHJpZGVfYm90aF9hbGln bmVkLCBsb2FkOF9hbGlnbmVkLCBzdG9yZTE2X2FsaWduZWQpOworICAgICAgICAgcGFja19zaW1k X3N0cmlkZSEocGFja19zdHJpZGVfc3JjX2FsaWduZWQsIGxvYWQ4X2FsaWduZWQsIHN0b3JlMTZf dW5hbGlnbmVkKTsKKyAKKysgICAgICAgIC8vIFNhZmV0eSBmb3IgY29udmVyc2lvbiBtYWNyb3M6 IFdlIHVzZSB0aGUgY29ycmVjdCBwYXR0ZXJuIG9mIGJvdGgvc3JjL2RzdC9uZWl0aGVyL2RvdWJs ZV9ib3RoL2RvdWJsZV9zcmMgaGVyZS4gQWxsIHN0cmlkZSBmdW5jdGlvbnMgd2VyZSBwcm9kdWNl ZAorKyAgICAgICAgLy8gYnkgc3RyaWRlIG1hY3JvcyB0aGF0IHVuaXZlcnNhbGx5IG11bmNoIGEg c2luZ2xlIFNJTURfU1RSSURFX1NJWkUgd29ydGggb2YgZWxlbWVudHMuCisrCisgICAgICAgICBh c2NpaV9zaW1kX2NoZWNrX2FsaWduX3Vucm9sbGVkIShhc2NpaV90b19hc2NpaSwgdTgsIHU4LCBh c2NpaV90b19hc2NpaV9zdHJpZGVfYm90aF9hbGlnbmVkLCBhc2NpaV90b19hc2NpaV9zdHJpZGVf c3JjX2FsaWduZWQsIGFzY2lpX3RvX2FzY2lpX3N0cmlkZV9uZWl0aGVyX2FsaWduZWQsIGFzY2lp X3RvX2FzY2lpX3NpbWRfZG91YmxlX3N0cmlkZV9ib3RoX2FsaWduZWQsIGFzY2lpX3RvX2FzY2lp X3NpbWRfZG91YmxlX3N0cmlkZV9zcmNfYWxpZ25lZCk7CisgICAgICAgICBhc2NpaV9zaW1kX2No ZWNrX2FsaWduX3Vucm9sbGVkIShhc2NpaV90b19iYXNpY19sYXRpbiwgdTgsIHUxNiwgYXNjaWlf dG9fYmFzaWNfbGF0aW5fc3RyaWRlX2JvdGhfYWxpZ25lZCwgYXNjaWlfdG9fYmFzaWNfbGF0aW5f c3RyaWRlX3NyY19hbGlnbmVkLCBhc2NpaV90b19iYXNpY19sYXRpbl9zdHJpZGVfbmVpdGhlcl9h bGlnbmVkLCBhc2NpaV90b19iYXNpY19sYXRpbl9zaW1kX2RvdWJsZV9zdHJpZGVfYm90aF9hbGln bmVkLCBhc2NpaV90b19iYXNpY19sYXRpbl9zaW1kX2RvdWJsZV9zdHJpZGVfc3JjX2FsaWduZWQp OworIAorICAgICAgICAgYXNjaWlfc2ltZF9jaGVja19hbGlnbiEoYmFzaWNfbGF0aW5fdG9fYXNj aWksIHUxNiwgdTgsIGJhc2ljX2xhdGluX3RvX2FzY2lpX3N0cmlkZV9ib3RoX2FsaWduZWQsIGJh c2ljX2xhdGluX3RvX2FzY2lpX3N0cmlkZV9zcmNfYWxpZ25lZCwgYmFzaWNfbGF0aW5fdG9fYXNj aWlfc3RyaWRlX2RzdF9hbGlnbmVkLCBiYXNpY19sYXRpbl90b19hc2NpaV9zdHJpZGVfbmVpdGhl cl9hbGlnbmVkKTsKKyAgICAgICAgIGxhdGluMV9zaW1kX2NoZWNrX2FsaWduX3Vucm9sbGVkISh1 bnBhY2tfbGF0aW4xLCB1OCwgdTE2LCB1bnBhY2tfc3RyaWRlX2JvdGhfYWxpZ25lZCwgdW5wYWNr X3N0cmlkZV9zcmNfYWxpZ25lZCwgdW5wYWNrX3N0cmlkZV9kc3RfYWxpZ25lZCwgdW5wYWNrX3N0 cmlkZV9uZWl0aGVyX2FsaWduZWQpOworICAgICAgICAgbGF0aW4xX3NpbWRfY2hlY2tfYWxpZ25f dW5yb2xsZWQhKHBhY2tfbGF0aW4xLCB1MTYsIHU4LCBwYWNrX3N0cmlkZV9ib3RoX2FsaWduZWQs IHBhY2tfc3RyaWRlX3NyY19hbGlnbmVkLCBwYWNrX3N0cmlkZV9kc3RfYWxpZ25lZCwgcGFja19z dHJpZGVfbmVpdGhlcl9hbGlnbmVkKTsKKyAgICAgfSBlbHNlIGlmICNbY2ZnKGFsbCh0YXJnZXRf ZW5kaWFuID0gImxpdHRsZSIsIHRhcmdldF9wb2ludGVyX3dpZHRoID0gIjY0IikpXSB7CisgICAg ICAgICAvLyBBbGlnbmVkIEFMVSB3b3JkLCBsaXR0bGUtZW5kaWFuLCA2NC1iaXQKKyAKKysgICAg ICAgIC8vLyBTYWZldHkgaW52YXJpYW50OiB0aGlzIGlzIHRoZSBhbW91bnQgb2YgYnl0ZXMgY29u c3VtZWQgYnkKKysgICAgICAgIC8vLyB1bnBhY2tfYWx1LiBUaGlzIHdpbGwgYmUgdHdpY2UgdGhl IHBvaW50ZXIgd2lkdGgsIGFzIGl0IGNvbnN1bWVzIHR3byB1c2l6ZXMuCisrICAgICAgICAvLy8g VGhpcyBpcyBhbHNvIHRoZSBudW1iZXIgb2YgYnl0ZXMgcHJvZHVjZWQgYnkgcGFja19hbHUuCisr ICAgICAgICAvLy8gVGhpcyBpcyBhbHNvIHRoZSBudW1iZXIgb2YgdTE2IGNvZGUgdW5pdHMgcHJv ZHVjZWQvY29uc3VtZWQgYnkgdW5wYWNrX2FsdS9wYWNrX2FsdSByZXNwZWN0aXZlbHkuCisgICAg ICAgICBwdWIgY29uc3QgQUxVX1NUUklERV9TSVpFOiB1c2l6ZSA9IDE2OworIAorICAgICAgICAg cHViIGNvbnN0IE1BWF9TVFJJREVfU0laRTogdXNpemUgPSAxNjsKKyAKKysgICAgICAgIC8vIFNh ZmV0eSBpbnZhcmlhbnQ6IHRoaXMgaXMgdGhlIHBvaW50ZXIgd2lkdGggaW4gYnl0ZXMKKyAgICAg ICAgIHB1YiBjb25zdCBBTFVfQUxJR05NRU5UOiB1c2l6ZSA9IDg7CisgCisrICAgICAgICAvLyBT YWZldHkgaW52YXJpYW50OiB0aGlzIGlzIGEgbWFzayBmb3IgZ2V0dGluZyB0aGUgYml0cyBvZiBh IHBvaW50ZXIgbm90IGFsaWduZWQgdG8gQUxVX0FMSUdOTUVOVAorICAgICAgICAgcHViIGNvbnN0 IEFMVV9BTElHTk1FTlRfTUFTSzogdXNpemUgPSA3OworIAorKyAgICAgICAgLy8vIFNhZmV0eTog ZHN0IG11c3QgcG9pbnQgdG8gdmFsaWQgc3BhY2UgZm9yIHdyaXRpbmcgZm91ciBgdXNpemVgcwor ICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICAgICAgIHVuc2FmZSBmbiB1bnBhY2tfYWx1 KHdvcmQ6IHVzaXplLCBzZWNvbmRfd29yZDogdXNpemUsIGRzdDogKm11dCB1c2l6ZSkgeworICAg ICAgICAgICAgIGxldCBmaXJzdCA9ICgoMHgwMDAwXzAwMDBfRkYwMF8wMDAwdXNpemUgJiB3b3Jk KSA8PCAyNCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwXzAwMDBfMDBGRl8w MDAwdXNpemUgJiB3b3JkKSA8PCAxNikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgw MDAwXzAwMDBfMDAwMF9GRjAwdXNpemUgJiB3b3JkKSA8PCA4KSB8CisgICAgICAgICAgICAgICAg ICAgICAgICAgKDB4MDAwMF8wMDAwXzAwMDBfMDBGRnVzaXplICYgd29yZCk7CisgICAgICAgICAg ICAgbGV0IHNlY29uZCA9ICgoMHhGRjAwXzAwMDBfMDAwMF8wMDAwdXNpemUgJiB3b3JkKSA+PiA4 KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMEZGXzAwMDBfMDAwMF8wMDAwdXNp emUgJiB3b3JkKSA+PiAxNikgfAorQEAgLTEwMTksMjIgKzEyNzgsMjQgQEAgY2ZnX2lmISB7Cisg ICAgICAgICAgICAgbGV0IHRoaXJkID0gKCgweDAwMDBfMDAwMF9GRjAwXzAwMDB1c2l6ZSAmIHNl Y29uZF93b3JkKSA8PCAyNCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwXzAw MDBfMDBGRl8wMDAwdXNpemUgJiBzZWNvbmRfd29yZCkgPDwgMTYpIHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAoKDB4MDAwMF8wMDAwXzAwMDBfRkYwMHVzaXplICYgc2Vjb25kX3dvcmQpIDw8 IDgpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDAwXzAwMDBfMDAwMF8wMEZGdXNp emUgJiBzZWNvbmRfd29yZCk7CisgICAgICAgICAgICAgbGV0IGZvdXJ0aCA9ICgoMHhGRjAwXzAw MDBfMDAwMF8wMDAwdXNpemUgJiBzZWNvbmRfd29yZCkgPj4gOCkgfAorICAgICAgICAgICAgICAg ICAgICAgICAgICAoKDB4MDBGRl8wMDAwXzAwMDBfMDAwMHVzaXplICYgc2Vjb25kX3dvcmQpID4+ IDE2KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwX0ZGMDBfMDAwMF8wMDAw dXNpemUgJiBzZWNvbmRfd29yZCkgPj4gMjQpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg KCgweDAwMDBfMDBGRl8wMDAwXzAwMDB1c2l6ZSAmIHNlY29uZF93b3JkKSA+PiAzMik7CisrICAg ICAgICAgICAgLy8gU2FmZXR5OiBmbiBpbnZhcmlhbnQgdXNlZCBoZXJlCisgICAgICAgICAgICAg KmRzdCA9IGZpcnN0OworICAgICAgICAgICAgICooZHN0LmFkZCgxKSkgPSBzZWNvbmQ7CisgICAg ICAgICAgICAgKihkc3QuYWRkKDIpKSA9IHRoaXJkOworICAgICAgICAgICAgICooZHN0LmFkZCgz KSkgPSBmb3VydGg7CisgICAgICAgICB9CisgCisrICAgICAgICAvLy8gU2FmZXR5OiBkc3QgbXVz dCBwb2ludCB0byB2YWxpZCBzcGFjZSBmb3Igd3JpdGluZyB0d28gYHVzaXplYHMKKyAgICAgICAg ICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICB1bnNhZmUgZm4gcGFja19hbHUoZmlyc3Q6IHVz aXplLCBzZWNvbmQ6IHVzaXplLCB0aGlyZDogdXNpemUsIGZvdXJ0aDogdXNpemUsIGRzdDogKm11 dCB1c2l6ZSkgeworICAgICAgICAgICAgIGxldCB3b3JkID0gKCgweDAwRkZfMDAwMF8wMDAwXzAw MDB1c2l6ZSAmIHNlY29uZCkgPDwgOCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAw MDBfMDBGRl8wMDAwXzAwMDB1c2l6ZSAmIHNlY29uZCkgPDwgMTYpIHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICgoMHgwMDAwXzAwMDBfMDBGRl8wMDAwdXNpemUgJiBzZWNvbmQpIDw8IDI0KSB8 CisgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMF8wMDAwXzAwMDBfMDBGRnVzaXplICYg c2Vjb25kKSA8PCAzMikgfAorICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAwRkZfMDAwMF8w MDAwXzAwMDB1c2l6ZSAmIGZpcnN0KSA+PiAyNCkgfAorICAgICAgICAgICAgICAgICAgICAgICAg KCgweDAwMDBfMDBGRl8wMDAwXzAwMDB1c2l6ZSAmIGZpcnN0KSA+PiAxNikgfAorQEAgLTEwNDMs NzAgKzEzMDQsODggQEAgY2ZnX2lmISB7CisgICAgICAgICAgICAgbGV0IHNlY29uZF93b3JkID0g KCgweDAwRkZfMDAwMF8wMDAwXzAwMDB1c2l6ZSAmIGZvdXJ0aCkgPDwgOCkgfAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwXzAwRkZfMDAwMF8wMDAwdXNpemUgJiBmb3Vy dGgpIDw8IDE2KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAwMDBfMDAw MF8wMEZGXzAwMDB1c2l6ZSAmIGZvdXJ0aCkgPDwgMjQpIHwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoKDB4MDAwMF8wMDAwXzAwMDBfMDBGRnVzaXplICYgZm91cnRoKSA8PCAzMikg fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMEZGXzAwMDBfMDAwMF8wMDAw dXNpemUgJiB0aGlyZCkgPj4gMjQpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KDB4MDAwMF8wMEZGXzAwMDBfMDAwMHVzaXplICYgdGhpcmQpID4+IDE2KSB8CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCgweDAwMDBfMDAwMF8wMEZGXzAwMDB1c2l6ZSAmIHRoaXJk KSA+PiA4KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MDAwMF8wMDAwXzAw MDBfMDBGRnVzaXplICYgdGhpcmQpOworKyAgICAgICAgICAgIC8vIFNhZmV0eTogZm4gaW52YXJp YW50IHVzZWQgaGVyZQorICAgICAgICAgICAgICpkc3QgPSB3b3JkOworICAgICAgICAgICAgICoo ZHN0LmFkZCgxKSkgPSBzZWNvbmRfd29yZDsKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIGlmICNb Y2ZnKGFsbCh0YXJnZXRfZW5kaWFuID0gImxpdHRsZSIsIHRhcmdldF9wb2ludGVyX3dpZHRoID0g IjMyIikpXSB7CisgICAgICAgICAvLyBBbGlnbmVkIEFMVSB3b3JkLCBsaXR0bGUtZW5kaWFuLCAz Mi1iaXQKKyAKKysgICAgICAgIC8vLyBTYWZldHkgaW52YXJpYW50OiB0aGlzIGlzIHRoZSBhbW91 bnQgb2YgYnl0ZXMgY29uc3VtZWQgYnkKKysgICAgICAgIC8vLyB1bnBhY2tfYWx1LiBUaGlzIHdp bGwgYmUgdHdpY2UgdGhlIHBvaW50ZXIgd2lkdGgsIGFzIGl0IGNvbnN1bWVzIHR3byB1c2l6ZXMu CisrICAgICAgICAvLy8gVGhpcyBpcyBhbHNvIHRoZSBudW1iZXIgb2YgYnl0ZXMgcHJvZHVjZWQg YnkgcGFja19hbHUuCisrICAgICAgICAvLy8gVGhpcyBpcyBhbHNvIHRoZSBudW1iZXIgb2YgdTE2 IGNvZGUgdW5pdHMgcHJvZHVjZWQvY29uc3VtZWQgYnkgdW5wYWNrX2FsdS9wYWNrX2FsdSByZXNw ZWN0aXZlbHkuCisgICAgICAgICBwdWIgY29uc3QgQUxVX1NUUklERV9TSVpFOiB1c2l6ZSA9IDg7 CisgCisgICAgICAgICBwdWIgY29uc3QgTUFYX1NUUklERV9TSVpFOiB1c2l6ZSA9IDg7CisgCisr ICAgICAgICAvLyBTYWZldHkgaW52YXJpYW50OiB0aGlzIGlzIHRoZSBwb2ludGVyIHdpZHRoIGlu IGJ5dGVzCisgICAgICAgICBwdWIgY29uc3QgQUxVX0FMSUdOTUVOVDogdXNpemUgPSA0OworIAor KyAgICAgICAgLy8gU2FmZXR5IGludmFyaWFudDogdGhpcyBpcyBhIG1hc2sgZm9yIGdldHRpbmcg dGhlIGJpdHMgb2YgYSBwb2ludGVyIG5vdCBhbGlnbmVkIHRvIEFMVV9BTElHTk1FTlQKKyAgICAg ICAgIHB1YiBjb25zdCBBTFVfQUxJR05NRU5UX01BU0s6IHVzaXplID0gMzsKKyAKKysgICAgICAg IC8vLyBTYWZldHk6IGRzdCBtdXN0IHBvaW50IHRvIHZhbGlkIHNwYWNlIGZvciB3cml0aW5nIGZv dXIgYHVzaXplYHMKKyAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICB1bnNhZmUg Zm4gdW5wYWNrX2FsdSh3b3JkOiB1c2l6ZSwgc2Vjb25kX3dvcmQ6IHVzaXplLCBkc3Q6ICptdXQg dXNpemUpIHsKKyAgICAgICAgICAgICBsZXQgZmlyc3QgPSAoKDB4MDAwMF9GRjAwdXNpemUgJiB3 b3JkKSA8PCA4KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MDAwMF8wMEZGdXNpemUg JiB3b3JkKTsKKyAgICAgICAgICAgICBsZXQgc2Vjb25kID0gKCgweEZGMDBfMDAwMHVzaXplICYg d29yZCkgPj4gOCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDBGRl8wMDAwdXNp emUgJiB3b3JkKSA+PiAxNik7CisgICAgICAgICAgICAgbGV0IHRoaXJkID0gKCgweDAwMDBfRkYw MHVzaXplICYgc2Vjb25kX3dvcmQpIDw8IDgpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAo MHgwMDAwXzAwRkZ1c2l6ZSAmIHNlY29uZF93b3JkKTsKKyAgICAgICAgICAgICBsZXQgZm91cnRo ID0gKCgweEZGMDBfMDAwMHVzaXplICYgc2Vjb25kX3dvcmQpID4+IDgpIHwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKCgweDAwRkZfMDAwMHVzaXplICYgc2Vjb25kX3dvcmQpID4+IDE2KTsK KysgICAgICAgICAgICAvLyBTYWZldHk6IGZuIGludmFyaWFudCB1c2VkIGhlcmUKKyAgICAgICAg ICAgICAqZHN0ID0gZmlyc3Q7CisgICAgICAgICAgICAgKihkc3QuYWRkKDEpKSA9IHNlY29uZDsK KyAgICAgICAgICAgICAqKGRzdC5hZGQoMikpID0gdGhpcmQ7CisgICAgICAgICAgICAgKihkc3Qu YWRkKDMpKSA9IGZvdXJ0aDsKKyAgICAgICAgIH0KKyAKKysgICAgICAgIC8vLyBTYWZldHk6IGRz dCBtdXN0IHBvaW50IHRvIHZhbGlkIHNwYWNlIGZvciB3cml0aW5nIHR3byBgdXNpemVgcworICAg ICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICAgICAgIHVuc2FmZSBmbiBwYWNrX2FsdShmaXJz dDogdXNpemUsIHNlY29uZDogdXNpemUsIHRoaXJkOiB1c2l6ZSwgZm91cnRoOiB1c2l6ZSwgZHN0 OiAqbXV0IHVzaXplKSB7CisgICAgICAgICAgICAgbGV0IHdvcmQgPSAoKDB4MDBGRl8wMDAwdXNp emUgJiBzZWNvbmQpIDw8IDgpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwXzAw RkZ1c2l6ZSAmIHNlY29uZCkgPDwgMTYpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICgoMHgw MEZGXzAwMDB1c2l6ZSAmIGZpcnN0KSA+PiA4KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAo MHgwMDAwXzAwRkZ1c2l6ZSAmIGZpcnN0KTsKKyAgICAgICAgICAgICBsZXQgc2Vjb25kX3dvcmQg PSAoKDB4MDBGRl8wMDAwdXNpemUgJiBmb3VydGgpIDw8IDgpIHwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKDB4MDAwMF8wMEZGdXNpemUgJiBmb3VydGgpIDw8IDE2KSB8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAwRkZfMDAwMHVzaXplICYgdGhpcmQpID4+ IDgpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDAwXzAwRkZ1c2l6ZSAm IHRoaXJkKTsKKysgICAgICAgICAgICAvLyBTYWZldHk6IGZuIGludmFyaWFudCB1c2VkIGhlcmUK KyAgICAgICAgICAgICAqZHN0ID0gd29yZDsKKyAgICAgICAgICAgICAqKGRzdC5hZGQoMSkpID0g c2Vjb25kX3dvcmQ7CisgICAgICAgICB9CisgICAgIH0gZWxzZSBpZiAjW2NmZyhhbGwodGFyZ2V0 X2VuZGlhbiA9ICJiaWciLCB0YXJnZXRfcG9pbnRlcl93aWR0aCA9ICI2NCIpKV0geworICAgICAg ICAgLy8gQWxpZ25lZCBBTFUgd29yZCwgYmlnLWVuZGlhbiwgNjQtYml0CisgCisrICAgICAgICAv Ly8gU2FmZXR5IGludmFyaWFudDogdGhpcyBpcyB0aGUgYW1vdW50IG9mIGJ5dGVzIGNvbnN1bWVk IGJ5CisrICAgICAgICAvLy8gdW5wYWNrX2FsdS4gVGhpcyB3aWxsIGJlIHR3aWNlIHRoZSBwb2lu dGVyIHdpZHRoLCBhcyBpdCBjb25zdW1lcyB0d28gdXNpemVzLgorKyAgICAgICAgLy8vIFRoaXMg aXMgYWxzbyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHByb2R1Y2VkIGJ5IHBhY2tfYWx1LgorKyAgICAg ICAgLy8vIFRoaXMgaXMgYWxzbyB0aGUgbnVtYmVyIG9mIHUxNiBjb2RlIHVuaXRzIHByb2R1Y2Vk L2NvbnN1bWVkIGJ5IHVucGFja19hbHUvcGFja19hbHUgcmVzcGVjdGl2ZWx5LgorICAgICAgICAg cHViIGNvbnN0IEFMVV9TVFJJREVfU0laRTogdXNpemUgPSAxNjsKKyAKKyAgICAgICAgIHB1YiBj b25zdCBNQVhfU1RSSURFX1NJWkU6IHVzaXplID0gMTY7CisgCisrICAgICAgICAvLyBTYWZldHkg aW52YXJpYW50OiB0aGlzIGlzIHRoZSBwb2ludGVyIHdpZHRoIGluIGJ5dGVzCisgICAgICAgICBw dWIgY29uc3QgQUxVX0FMSUdOTUVOVDogdXNpemUgPSA4OworIAorKyAgICAgICAgLy8gU2FmZXR5 IGludmFyaWFudDogdGhpcyBpcyBhIG1hc2sgZm9yIGdldHRpbmcgdGhlIGJpdHMgb2YgYSBwb2lu dGVyIG5vdCBhbGlnbmVkIHRvIEFMVV9BTElHTk1FTlQKKyAgICAgICAgIHB1YiBjb25zdCBBTFVf QUxJR05NRU5UX01BU0s6IHVzaXplID0gNzsKKyAKKysgICAgICAgIC8vLyBTYWZldHk6IGRzdCBt dXN0IHBvaW50IHRvIHZhbGlkIHNwYWNlIGZvciB3cml0aW5nIGZvdXIgYHVzaXplYHMKKyAgICAg ICAgICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICB1bnNhZmUgZm4gdW5wYWNrX2FsdSh3b3Jk OiB1c2l6ZSwgc2Vjb25kX3dvcmQ6IHVzaXplLCBkc3Q6ICptdXQgdXNpemUpIHsKKyAgICAgICAg ICAgICBsZXQgZmlyc3QgPSAoKDB4RkYwMF8wMDAwXzAwMDBfMDAwMHVzaXplICYgd29yZCkgPj4g OCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDBGRl8wMDAwXzAwMDBfMDAwMHVz aXplICYgd29yZCkgPj4gMTYpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAwMDBf RkYwMF8wMDAwXzAwMDB1c2l6ZSAmIHdvcmQpID4+IDI0KSB8CisgICAgICAgICAgICAgICAgICAg ICAgICAgICgoMHgwMDAwXzAwRkZfMDAwMF8wMDAwdXNpemUgJiB3b3JkKSA+PiAzMik7CisgICAg ICAgICAgICAgbGV0IHNlY29uZCA9ICgoMHgwMDAwXzAwMDBfRkYwMF8wMDAwdXNpemUgJiB3b3Jk KSA8PCAyNCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwXzAwMDBfMDBGRl8w MDAwdXNpemUgJiB3b3JkKSA8PCAxNikgfAorQEAgLTExMTUsMjIgKzEzOTQsMjQgQEAgY2ZnX2lm ISB7CisgICAgICAgICAgICAgbGV0IHRoaXJkID0gKCgweEZGMDBfMDAwMF8wMDAwXzAwMDB1c2l6 ZSAmIHNlY29uZF93b3JkKSA+PiA4KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgw MEZGXzAwMDBfMDAwMF8wMDAwdXNpemUgJiBzZWNvbmRfd29yZCkgPj4gMTYpIHwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKCgweDAwMDBfRkYwMF8wMDAwXzAwMDB1c2l6ZSAmIHNlY29uZF93 b3JkKSA+PiAyNCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMF8wMEZGXzAw MDBfMDAwMHVzaXplICYgc2Vjb25kX3dvcmQpID4+IDMyKTsKKyAgICAgICAgICAgICBsZXQgZm91 cnRoID0gKCgweDAwMDBfMDAwMF9GRjAwXzAwMDB1c2l6ZSAmIHNlY29uZF93b3JkKSA8PCAyNCkg fAorICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwXzAwMDBfMDBGRl8wMDAwdXNpemUg JiBzZWNvbmRfd29yZCkgPDwgMTYpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAw MF8wMDAwXzAwMDBfRkYwMHVzaXplICYgc2Vjb25kX3dvcmQpIDw8IDgpIHwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAoMHgwMDAwXzAwMDBfMDAwMF8wMEZGdXNpemUgJiBzZWNvbmRfd29yZCk7 CisrICAgICAgICAgICAgLy8gU2FmZXR5OiBmbiBpbnZhcmlhbnQgdXNlZCBoZXJlCisgICAgICAg ICAgICAgKmRzdCA9IGZpcnN0OworICAgICAgICAgICAgICooZHN0LmFkZCgxKSkgPSBzZWNvbmQ7 CisgICAgICAgICAgICAgKihkc3QuYWRkKDIpKSA9IHRoaXJkOworICAgICAgICAgICAgICooZHN0 LmFkZCgzKSkgPSBmb3VydGg7CisgICAgICAgICB9CisgCisrICAgICAgICAvLy8gU2FmZXR5OiBk c3QgbXVzdCBwb2ludCB0byB2YWxpZCBzcGFjZSBmb3Igd3JpdGluZyB0d28gYHVzaXplYHMKKyAg ICAgICAgICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICB1bnNhZmUgZm4gcGFja19hbHUoZmly c3Q6IHVzaXplLCBzZWNvbmQ6IHVzaXplLCB0aGlyZDogdXNpemUsIGZvdXJ0aDogdXNpemUsIGRz dDogKm11dCB1c2l6ZSkgeworICAgICAgICAgICAgIGxldCB3b3JkID0gKCgweDAwRkYwMDAwXzAw MDAwMDAwdXNpemUgJiBmaXJzdCkgPDwgOCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgKCgw eDAwMDAwMEZGXzAwMDAwMDAwdXNpemUgJiBmaXJzdCkgPDwgMTYpIHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICgoMHgwMDAwMDAwMF8wMEZGMDAwMHVzaXplICYgZmlyc3QpIDw8IDI0KSB8Cisg ICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMDAwMDBfMDAwMDAwRkZ1c2l6ZSAmIGZpcnN0 KSA8PCAzMikgfAorICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAwRkYwMDAwXzAwMDAwMDAw dXNpemUgJiBzZWNvbmQpID4+IDI0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAw MDAwRkZfMDAwMDAwMDB1c2l6ZSAmIHNlY29uZCkgPj4gMTYpIHwKK0BAIC0xMTM5LDY3ICsxNDIw LDgwIEBAIGNmZ19pZiEgeworICAgICAgICAgICAgIGxldCBzZWNvbmRfd29yZCA9ICgoMHgwMEZG MDAwMF8wMDAwMDAwMHVzaXplICYgdGhpcmQpIDw8IDgpIHwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoKDB4MDAwMDAwRkZfMDAwMDAwMDB1c2l6ZSAmIHRoaXJkKSA8PCAxNikgfAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMDAwMDAwMF8wMEZGMDAwMHVzaXpl ICYgdGhpcmQpIDw8IDI0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgweDAw MDAwMDAwXzAwMDAwMEZGdXNpemUgJiB0aGlyZCkgPDwgMzIpIHwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKDB4MDBGRjAwMDBfMDAwMDAwMDB1c2l6ZSAmIGZvdXJ0aCkgPj4gMjQp IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMDAwRkZfMDAwMDAwMDB1 c2l6ZSAmIGZvdXJ0aCkgPj4gMTYpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KDB4MDAwMDAwMDBfMDBGRjAwMDB1c2l6ZSAmIGZvdXJ0aCkgPj4gOCkgfAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDAwXzAwMDAwMEZGdXNpemUgJiAgZm91cnRoKTsK KysgICAgICAgICAgICAvLyBTYWZldHk6IGZuIGludmFyaWFudCB1c2VkIGhlcmUKKyAgICAgICAg ICAgICAqZHN0ID0gd29yZDsKKyAgICAgICAgICAgICAqKGRzdC5hZGQoMSkpID0gc2Vjb25kX3dv cmQ7CisgICAgICAgICB9CisgICAgIH0gZWxzZSBpZiAjW2NmZyhhbGwodGFyZ2V0X2VuZGlhbiA9 ICJiaWciLCB0YXJnZXRfcG9pbnRlcl93aWR0aCA9ICIzMiIpKV0geworICAgICAgICAgLy8gQWxp Z25lZCBBTFUgd29yZCwgYmlnLWVuZGlhbiwgMzItYml0CisgCisrICAgICAgICAvLy8gU2FmZXR5 IGludmFyaWFudDogdGhpcyBpcyB0aGUgYW1vdW50IG9mIGJ5dGVzIGNvbnN1bWVkIGJ5CisrICAg ICAgICAvLy8gdW5wYWNrX2FsdS4gVGhpcyB3aWxsIGJlIHR3aWNlIHRoZSBwb2ludGVyIHdpZHRo LCBhcyBpdCBjb25zdW1lcyB0d28gdXNpemVzLgorKyAgICAgICAgLy8vIFRoaXMgaXMgYWxzbyB0 aGUgbnVtYmVyIG9mIGJ5dGVzIHByb2R1Y2VkIGJ5IHBhY2tfYWx1LgorKyAgICAgICAgLy8vIFRo aXMgaXMgYWxzbyB0aGUgbnVtYmVyIG9mIHUxNiBjb2RlIHVuaXRzIHByb2R1Y2VkL2NvbnN1bWVk IGJ5IHVucGFja19hbHUvcGFja19hbHUgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgcHViIGNvbnN0 IEFMVV9TVFJJREVfU0laRTogdXNpemUgPSA4OworIAorICAgICAgICAgcHViIGNvbnN0IE1BWF9T VFJJREVfU0laRTogdXNpemUgPSA4OworIAorKyAgICAgICAgLy8gU2FmZXR5IGludmFyaWFudDog dGhpcyBpcyB0aGUgcG9pbnRlciB3aWR0aCBpbiBieXRlcworICAgICAgICAgcHViIGNvbnN0IEFM VV9BTElHTk1FTlQ6IHVzaXplID0gNDsKKyAKKysgICAgICAgIC8vIFNhZmV0eSBpbnZhcmlhbnQ6 IHRoaXMgaXMgYSBtYXNrIGZvciBnZXR0aW5nIHRoZSBiaXRzIG9mIGEgcG9pbnRlciBub3QgYWxp Z25lZCB0byBBTFVfQUxJR05NRU5UCisgICAgICAgICBwdWIgY29uc3QgQUxVX0FMSUdOTUVOVF9N QVNLOiB1c2l6ZSA9IDM7CisgCisrICAgICAgICAvLy8gU2FmZXR5OiBkc3QgbXVzdCBwb2ludCB0 byB2YWxpZCBzcGFjZSBmb3Igd3JpdGluZyBmb3VyIGB1c2l6ZWBzCisgICAgICAgICAjW2lubGlu ZShhbHdheXMpXQorICAgICAgICAgdW5zYWZlIGZuIHVucGFja19hbHUod29yZDogdXNpemUsIHNl Y29uZF93b3JkOiB1c2l6ZSwgZHN0OiAqbXV0IHVzaXplKSB7CisgICAgICAgICAgICAgbGV0IGZp cnN0ID0gKCgweEZGMDBfMDAwMHVzaXplICYgd29yZCkgPj4gOCkgfAorICAgICAgICAgICAgICAg ICAgICAgICAgICAoKDB4MDBGRl8wMDAwdXNpemUgJiB3b3JkKSA+PiAxNik7CisgICAgICAgICAg ICAgbGV0IHNlY29uZCA9ICgoMHgwMDAwX0ZGMDB1c2l6ZSAmIHdvcmQpIDw8IDgpIHwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAoMHgwMDAwXzAwRkZ1c2l6ZSAmIHdvcmQpOworICAgICAgICAg ICAgIGxldCB0aGlyZCA9ICgoMHhGRjAwXzAwMDB1c2l6ZSAmIHNlY29uZF93b3JkKSA+PiA4KSB8 CisgICAgICAgICAgICAgICAgICAgICAgICAgICgoMHgwMEZGXzAwMDB1c2l6ZSAmIHNlY29uZF93 b3JkKSA+PiAxNik7CisgICAgICAgICAgICAgbGV0IGZvdXJ0aCA9ICgoMHgwMDAwX0ZGMDB1c2l6 ZSAmIHNlY29uZF93b3JkKSA8PCA4KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MDAw MF8wMEZGdXNpemUgJiBzZWNvbmRfd29yZCk7CisrICAgICAgICAgICAgLy8gU2FmZXR5OiBmbiBp bnZhcmlhbnQgdXNlZCBoZXJlCisgICAgICAgICAgICAgKmRzdCA9IGZpcnN0OworICAgICAgICAg ICAgICooZHN0LmFkZCgxKSkgPSBzZWNvbmQ7CisgICAgICAgICAgICAgKihkc3QuYWRkKDIpKSA9 IHRoaXJkOworICAgICAgICAgICAgICooZHN0LmFkZCgzKSkgPSBmb3VydGg7CisgICAgICAgICB9 CisgCisrICAgICAgICAvLy8gU2FmZXR5OiBkc3QgbXVzdCBwb2ludCB0byB2YWxpZCBzcGFjZSBm b3Igd3JpdGluZyB0d28gYHVzaXplYHMKKyAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCisgICAg ICAgICB1bnNhZmUgZm4gcGFja19hbHUoZmlyc3Q6IHVzaXplLCBzZWNvbmQ6IHVzaXplLCB0aGly ZDogdXNpemUsIGZvdXJ0aDogdXNpemUsIGRzdDogKm11dCB1c2l6ZSkgeworICAgICAgICAgICAg IGxldCB3b3JkID0gKCgweDAwRkZfMDAwMHVzaXplICYgZmlyc3QpIDw8IDgpIHwKKyAgICAgICAg ICAgICAgICAgICAgICAgICgoMHgwMDAwXzAwRkZ1c2l6ZSAmIGZpcnN0KSA8PCAxNikgfAorICAg ICAgICAgICAgICAgICAgICAgICAgKCgweDAwRkZfMDAwMHVzaXplICYgc2Vjb25kKSA+PiA4KSB8 CisgICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDAwXzAwRkZ1c2l6ZSAmIHNlY29uZCk7Cisg ICAgICAgICAgICAgbGV0IHNlY29uZF93b3JkID0gKCgweDAwRkZfMDAwMHVzaXplICYgdGhpcmQp IDw8IDgpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4MDAwMF8wMEZGdXNp emUgJiB0aGlyZCkgPDwgMTYpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKDB4 MDBGRl8wMDAwdXNpemUgJiBmb3VydGgpID4+IDgpIHwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoMHgwMDAwXzAwRkZ1c2l6ZSAmIGZvdXJ0aCk7CisrICAgICAgICAgICAgLy8gU2Fm ZXR5OiBmbiBpbnZhcmlhbnQgdXNlZCBoZXJlCisgICAgICAgICAgICAgKmRzdCA9IHdvcmQ7Cisg ICAgICAgICAgICAgKihkc3QuYWRkKDEpKSA9IHNlY29uZF93b3JkOworICAgICAgICAgfQorICAg ICB9IGVsc2UgeworICAgICAgICAgYXNjaWlfbmFpdmUhKGFzY2lpX3RvX2FzY2lpLCB1OCwgdTgp OworICAgICAgICAgYXNjaWlfbmFpdmUhKGFzY2lpX3RvX2Jhc2ljX2xhdGluLCB1OCwgdTE2KTsK KyAgICAgICAgIGFzY2lpX25haXZlIShiYXNpY19sYXRpbl90b19hc2NpaSwgdTE2LCB1OCk7Cisg ICAgIH0KKyB9CisgCisgY2ZnX2lmISB7CisrICAgIC8vIFNhZmV0eS11c2FibGUgaW52YXJpYW50 OiB0aGlzIGNvdW50cyB0aGUgemVyb2VzIGZyb20gdGhlICJmaXJzdCBieXRlIiBvZiB1dGYtOCBk YXRhIHBhY2tlZCBpbnRvIGEgdXNpemUKKysgICAgLy8gd2l0aCB0aGUgdGFyZ2V0IGVuZGlhbm5l c3MKKyAgICAgaWYgI1tjZmcodGFyZ2V0X2VuZGlhbiA9ICJsaXR0bGUiKV0geworICAgICAgICAg I1thbGxvdyhkZWFkX2NvZGUpXQorICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICAgICAg IGZuIGNvdW50X3plcm9zKHdvcmQ6IHVzaXplKSAtPiB1MzIgeworICAgICAgICAgICAgIHdvcmQu dHJhaWxpbmdfemVyb3MoKQorICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgI1th bGxvdyhkZWFkX2NvZGUpXQorQEAgLTEyMDcsMjA4ICsxNTAxLDI3MiBAQCBjZmdfaWYhIHsKKyAg ICAgICAgIGZuIGNvdW50X3plcm9zKHdvcmQ6IHVzaXplKSAtPiB1MzIgeworICAgICAgICAgICAg IHdvcmQubGVhZGluZ196ZXJvcygpCisgICAgICAgICB9CisgICAgIH0KKyB9CisgCisgY2ZnX2lm ISB7CisgICAgIGlmICNbY2ZnKGFsbChmZWF0dXJlID0gInNpbWQtYWNjZWwiLCB0YXJnZXRfZW5k aWFuID0gImxpdHRsZSIsIHRhcmdldF9hcmNoID0gImRpc2FibGVkIikpXSB7CisrICAgICAgICAv Ly8gU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IFdpbGwgcmV0dXJuIHRoZSB2YWx1ZSBhbmQgcG9z aXRpb24gb2YgdGhlIGZpcnN0IG5vbi1BU0NJSSBieXRlIGluIHRoZSBzbGljZSBpbiBhIFNvbWUg aWYgZm91bmQuCisrICAgICAgICAvLy8gSW4gb3RoZXIgd29yZHMsIHRoZSBmaXJzdCBlbGVtZW50 IG9mIHRoZSBTb21lIGlzIGFsd2F5cyBgPiAxMjdgCisgICAgICAgICAjW2lubGluZShhbHdheXMp XQorICAgICAgICAgcHViIGZuIHZhbGlkYXRlX2FzY2lpKHNsaWNlOiAmW3U4XSkgLT4gT3B0aW9u PCh1OCwgdXNpemUpPiB7CisgICAgICAgICAgICAgbGV0IHNyYyA9IHNsaWNlLmFzX3B0cigpOwor ICAgICAgICAgICAgIGxldCBsZW4gPSBzbGljZS5sZW4oKTsKKyAgICAgICAgICAgICBsZXQgbXV0 IG9mZnNldCA9IDB1c2l6ZTsKKysgICAgICAgICAgICAvLyBTYWZldHk6IGlmIHRoaXMgY2hlY2sg c3VjY2VlZHMgd2UncmUgdmFsaWQgZm9yIHJlYWRpbmcvd3JpdGluZyBhdCBsZWFzdCBgc3RyaWRl YCBlbGVtZW50cy4KKyAgICAgICAgICAgICBpZiBTSU1EX1NUUklERV9TSVpFIDw9IGxlbiB7Cisg ICAgICAgICAgICAgICAgIGxldCBsZW5fbWludXNfc3RyaWRlID0gbGVuIC0gU0lNRF9TVFJJREVf U0laRTsKKyAgICAgICAgICAgICAgICAgbG9vcCB7CisrICAgICAgICAgICAgICAgICAgICAvLyBT YWZldHk6IHNyYyBhdCBvZmZzZXQgaXMgdmFsaWQgZm9yIGEgYFNJTURfU1RSSURFX1NJWkVgIHJl YWQKKyAgICAgICAgICAgICAgICAgICAgIGxldCBzaW1kID0gdW5zYWZlIHsgbG9hZDE2X3VuYWxp Z25lZChzcmMuYWRkKG9mZnNldCkpIH07CisgICAgICAgICAgICAgICAgICAgICBpZiAhc2ltZF9p c19hc2NpaShzaW1kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lNRF9TVFJJ REVfU0laRTsKKysgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYG9mZnNldCA+IGxlbiAt IFNJTURfU1RSSURFX1NJWkVgIHdoaWNoIG1lYW5zIHdlIGFsd2F5cyBoYXZlIGF0IGxlYXN0IGBT SU1EX1NUUklERV9TSVpFYCBlbGVtZW50cyB0byBtdW5jaCBuZXh0IHRpbWUuCisgICAgICAgICAg ICAgICAgICAgICBpZiBvZmZzZXQgPiBsZW5fbWludXNfc3RyaWRlIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB3aGlsZSBvZmZzZXQgPCBsZW4gewor ICAgICAgICAgICAgICAgICBsZXQgY29kZV91bml0ID0gc2xpY2Vbb2Zmc2V0XTsKKyAgICAgICAg ICAgICAgICAgaWYgY29kZV91bml0ID4gMTI3IHsKKysgICAgICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQgdXBoZWxkIGhlcmUKKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBTb21lKChjb2RlX3VuaXQsIG9mZnNldCkpOworICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgIG9mZnNldCArPSAxOworICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICBOb25lCisgICAgICAgICB9CisgICAgIH0gZWxzZSBpZiAjW2NmZyhhbGwoZmVhdHVy ZSA9ICJzaW1kLWFjY2VsIiwgdGFyZ2V0X2ZlYXR1cmUgPSAic3NlMiIpKV0geworKyAgICAgICAg Ly8vIFNhZmV0eS11c2FibGUgaW52YXJpYW50OiB3aWxsIHJldHVybiBTb21lKCkgd2hlbiBpdCBl bmNvdW50ZXJzIG5vbi1BU0NJSSwgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgU29tZSBi ZWluZworKyAgICAgICAgLy8vIGd1YXJhbnRlZWQgdG8gYmUgbm9uLUFTQ0lJICg+IDEyNyksIGFu ZCB0aGUgc2Vjb25kIGJlaW5nIHRoZSBvZmZzZXQgd2hlcmUgaXQgaXMgZm91bmQKKyAgICAgICAg ICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICBwdWIgZm4gdmFsaWRhdGVfYXNjaWkoc2xpY2U6 ICZbdThdKSAtPiBPcHRpb248KHU4LCB1c2l6ZSk+IHsKKyAgICAgICAgICAgICBsZXQgc3JjID0g c2xpY2UuYXNfcHRyKCk7CisgICAgICAgICAgICAgbGV0IGxlbiA9IHNsaWNlLmxlbigpOworICAg ICAgICAgICAgIGxldCBtdXQgb2Zmc2V0ID0gMHVzaXplOworKyAgICAgICAgICAgIC8vIFNhZmV0 eTogaWYgdGhpcyBjaGVjayBzdWNjZWVkcyB3ZSdyZSB2YWxpZCBmb3IgcmVhZGluZyBhdCBsZWFz dCBgc3RyaWRlYCBlbGVtZW50cy4KKyAgICAgICAgICAgICBpZiBTSU1EX1NUUklERV9TSVpFIDw9 IGxlbiB7CisgICAgICAgICAgICAgICAgIC8vIEZpcnN0LCBwcm9jZXNzIG9uZSB1bmFsaWduZWQg dmVjdG9yCisrICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogc3JjIGlzIHZhbGlkIGZvciBhIGBT SU1EX1NUUklERV9TSVpFYCByZWFkCisgICAgICAgICAgICAgICAgIGxldCBzaW1kID0gdW5zYWZl IHsgbG9hZDE2X3VuYWxpZ25lZChzcmMpIH07CisgICAgICAgICAgICAgICAgIGxldCBtYXNrID0g bWFza19hc2NpaShzaW1kKTsKKyAgICAgICAgICAgICAgICAgaWYgbWFzayAhPSAwIHsKKyAgICAg ICAgICAgICAgICAgICAgIG9mZnNldCA9IG1hc2sudHJhaWxpbmdfemVyb3MoKSBhcyB1c2l6ZTsK KyAgICAgICAgICAgICAgICAgICAgIGxldCBub25fYXNjaWkgPSB1bnNhZmUgeyAqc3JjLmFkZChv ZmZzZXQpIH07CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgobm9uX2FzY2lpLCBv ZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBvZmZzZXQgPSBT SU1EX1NUUklERV9TSVpFOworKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6IE5vdyB0aGF0IG9m ZnNldCBoYXMgY2hhbmdlZCB3ZSBkb24ndCB5ZXQga25vdyBob3cgbXVjaCBpdCBpcyB2YWxpZCBm b3IKKyAKKyAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBub3cgc2VlbiAxNiBBU0NJSSBieXRl cy4gTGV0J3MgZ3Vlc3MgdGhhdAorICAgICAgICAgICAgICAgICAvLyB0aGVyZSB3aWxsIGJlIGVu b3VnaCBtb3JlIHRvIGp1c3RpZnkgbW9yZSBleHBlbnNlCisgICAgICAgICAgICAgICAgIC8vIGlu IHRoZSBjYXNlIG9mIG5vbi1BU0NJSS4KKyAgICAgICAgICAgICAgICAgLy8gVXNlIGFsaWduZWQg cmVhZHMgZm9yIHRoZSBzYWtlIG9mIG9sZCBtaWNyb2FjaGl0ZWN0dXJlcy4KKysgICAgICAgICAg ICAgICAgLy8gU2FmZXR5OiB0aGlzIGNvcnJlY3RseSBjYWxjdWxhdGVzIHRoZSBudW1iZXIgb2Yg c3JjX3VuaXRzIHRoYXQgbmVlZCB0byBiZSByZWFkIGJlZm9yZSB0aGUgcmVtYWluaW5nIGxpc3Qg aXMgYWxpZ25lZC4KKysgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBieSBkZWZpbml0aW9uIGxl c3MgdGhhbiBTSU1EX0FMSUdOTUVOVCwgd2hpY2ggaXMgZGVmaW5lZCB0byBiZSBlcXVhbCB0byBT SU1EX1NUUklERV9TSVpFLgorICAgICAgICAgICAgICAgICBsZXQgdW50aWxfYWxpZ25tZW50ID0g dW5zYWZlIHsgKFNJTURfQUxJR05NRU5UIC0gKChzcmMuYWRkKG9mZnNldCkgYXMgdXNpemUpICYg U0lNRF9BTElHTk1FTlRfTUFTSykpICYgU0lNRF9BTElHTk1FTlRfTUFTSyB9OworICAgICAgICAg ICAgICAgICAvLyBUaGlzIGFkZGl0aW9uIHdvbid0IG92ZXJmbG93LCBiZWNhdXNlIGV2ZW4gaW4g dGhlIDMyLWJpdCBQQUUgY2FzZSB0aGUKKyAgICAgICAgICAgICAgICAgLy8gYWRkcmVzcyBzcGFj ZSBob2xkcyBlbm91Z2ggY29kZSB0aGF0IHRoZSBzbGljZSBsZW5ndGggY2FuJ3QgYmUgdGhhdAor ICAgICAgICAgICAgICAgICAvLyBjbG9zZSB0byBhZGRyZXNzIHNwYWNlIHNpemUuCisgICAgICAg ICAgICAgICAgIC8vIG9mZnNldCBub3cgZXF1YWxzIFNJTURfU1RSSURFX1NJWkUsIGhlbmNlIHRp bWVzIDMgYmVsb3cuCisrICAgICAgICAgICAgICAgIC8vCisrICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogaWYgdGhpcyBjaGVjayBzdWNjZWVkcyB3ZSdyZSB2YWxpZCBmb3IgcmVhZGluZyBhdCBs ZWFzdCBgMiAqIFNJTURfU1RSSURFX1NJWkVgIGVsZW1lbnRzIHBsdXMgYHVudGlsX2FsaWdubWVu dGAuCisrICAgICAgICAgICAgICAgIC8vIFRoZSBleHRyYSBTSU1EX1NUUklERV9TSVpFIGluIHRo ZSBjb25kaXRpb24gaXMgYmVjYXVzZSBgb2Zmc2V0YCBpcyBhbHJlYWR5IGBTSU1EX1NUUklERV9T SVpFYC4KKyAgICAgICAgICAgICAgICAgaWYgdW50aWxfYWxpZ25tZW50ICsgKFNJTURfU1RSSURF X1NJWkUgKiAzKSA8PSBsZW4geworICAgICAgICAgICAgICAgICAgICAgaWYgdW50aWxfYWxpZ25t ZW50ICE9IDAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogdGhpcyBpcyBz YWZlIHRvIGNhbGwgc2luY2Ugd2UncmUgdmFsaWQgZm9yIHRoaXMgcmVhZCAoYW5kIG1vcmUpLCBh bmQgZG9uJ3QgY2FyZSBhYm91dCBhbGlnbm1lbnQKKysgICAgICAgICAgICAgICAgICAgICAgICAv LyBUaGlzIHdpbGwgY29weSBvdmVyIGJ5dGVzIHRoYXQgZ2V0IGRlY29kZWQgdHdpY2Ugc2luY2Ug aXQncyBub3QgaW5jcmVtZW50aW5nIGBvZmZzZXRgIGJ5IFNJTURfU1RSSURFX1NJWkUuIFRoaXMg aXMgZmluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2ltZCA9IHVuc2FmZSB7IGxv YWQxNl91bmFsaWduZWQoc3JjLmFkZChvZmZzZXQpKSB9OworICAgICAgICAgICAgICAgICAgICAg ICAgIGxldCBtYXNrID0gbWFza19hc2NpaShzaW1kKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBtYXNrICE9IDAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0g bWFzay50cmFpbGluZ196ZXJvcygpIGFzIHVzaXplOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsZXQgbm9uX2FzY2lpID0gdW5zYWZlIHsgKnNyYy5hZGQob2Zmc2V0KSB9OworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgobm9uX2FzY2lpLCBvZmZzZXQpKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm c2V0ICs9IHVudGlsX2FsaWdubWVudDsKKyAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAg ICAgICAgICAgICAgIC8vIFNhZmV0eTogQXQgdGhpcyBwb2ludCB3ZSdyZSB2YWxpZCBmb3IgcmVh ZGluZyAyKlNJTURfU1RSSURFX1NJWkUgZWxlbWVudHMKKysgICAgICAgICAgICAgICAgICAgIC8v IFNhZmV0eTogTm93IGBvZmZzZXRgIGlzIGFsaWduZWQgZm9yIGBzcmNgCisgICAgICAgICAgICAg ICAgICAgICBsZXQgbGVuX21pbnVzX3N0cmlkZV90aW1lc190d28gPSBsZW4gLSAoU0lNRF9TVFJJ REVfU0laRSAqIDIpOworICAgICAgICAgICAgICAgICAgICAgbG9vcCB7CisrICAgICAgICAgICAg ICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSB3ZXJlIHZhbGlkIGZvciB0aGlzIHJlYWQsIGFuZCB3 ZXJlIGFsaWduZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0ID0gdW5zYWZl IHsgbG9hZDE2X2FsaWduZWQoc3JjLmFkZChvZmZzZXQpKSB9OworICAgICAgICAgICAgICAgICAg ICAgICAgIGxldCBzZWNvbmQgPSB1bnNhZmUgeyBsb2FkMTZfYWxpZ25lZChzcmMuYWRkKG9mZnNl dCArIFNJTURfU1RSSURFX1NJWkUpKSB9OworICAgICAgICAgICAgICAgICAgICAgICAgIGlmICFz aW1kX2lzX2FzY2lpKGZpcnN0IHwgc2Vjb25kKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vIFNhZmV0eTogbWFza19hc2NpaSBwcm9kdWNlcyBhIG1hc2sgb2YgYWxsIHRoZSBoaWdo IGJpdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXNrX2ZpcnN0ID0gbWFz a19hc2NpaShmaXJzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1hc2tfZmly c3QgIT0gMCB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IG9u IGxpdHRsZSBlbmRpYW4gc3lzdGVtcyB0aGlzIHdpbGwgYmUgdGhlIG51bWJlciBvZiBhc2NpaSBi eXRlcworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVmb3JlIHRoZSBmaXJz dCBub24tYXNjaWksIGkuZS4gdmFsaWQgZm9yIGluZGV4aW5nIHNyYworKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gVE9ETyBTQUZFVFk6IFdoYXQgYWJvdXQgYmlnLWVuZGlhbiBz eXN0ZW1zPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IG1hc2tf Zmlyc3QudHJhaWxpbmdfemVyb3MoKSBhcyB1c2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXNr X3NlY29uZCA9IG1hc2tfYXNjaWkoc2Vjb25kKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eTogb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zIHRoaXMgd2lsbCBiZSB0 aGUgbnVtYmVyIG9mIGFzY2lpIGJ5dGVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvLyBiZWZvcmUgdGhlIGZpcnN0IG5vbi1hc2NpaSwgaS5lLiB2YWxpZCBmb3IgaW5kZXhpbmcg c3JjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lNRF9TVFJJ REVfU0laRSArIG1hc2tfc2Vjb25kLnRyYWlsaW5nX3plcm9zKCkgYXMgdXNpemU7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g U2FmZXR5OiBXZSBrbm93IHRoaXMgaXMgbm9uLUFTQ0lJLCBhbmQgY2FuIHVwaG9sZCB0aGUgc2Fm ZXR5LXVzYWJsZSBpbnZhcmlhbnQgaGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs ZXQgbm9uX2FzY2lpID0gdW5zYWZlIHsgKnNyYy5hZGQob2Zmc2V0KSB9OworKworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gU29tZSgobm9uX2FzY2lpLCBvZmZzZXQpKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0 ICs9IFNJTURfU1RSSURFX1NJWkUgKiAyOworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogVGhpcyBpcyBgb2Zmc2V0ID4gbGVuIC0gMiAqIFNJTURfU1RSSURFX1NJWkVgIHdoaWNo IG1lYW5zIHdlIGFsd2F5cyBoYXZlIGF0IGxlYXN0IGAyICogU0lNRF9TVFJJREVfU0laRWAgZWxl bWVudHMgdG8gbXVuY2ggbmV4dCB0aW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9m ZnNldCA+IGxlbl9taW51c19zdHJpZGVfdGltZXNfdHdvIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBpZiB0aGlzIGNoZWNr IHN1Y2NlZWRzIHdlJ3JlIHZhbGlkIGZvciByZWFkaW5nIGF0IGxlYXN0IGBTSU1EX1NUUklERV9T SVpFYAorICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ICsgU0lNRF9TVFJJREVfU0laRSA8 PSBsZW4geworLSAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2ltZCA9IHVuc2FmZSB7IGxv YWQxNl9hbGlnbmVkKHNyYy5hZGQob2Zmc2V0KSkgfTsKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgbGV0IG1hc2sgPSBtYXNrX2FzY2lpKHNpbWQpOworKyAgICAgICAgICAgICAgICAgICAgICAg IC8vIFNhZmV0eTogV2Ugd2VyZSB2YWxpZCBmb3IgdGhpcyByZWFkLCBhbmQgd2VyZSBhbGlnbmVk LgorKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaW1kID0gdW5zYWZlIHsgbG9hZDE2X2Fs aWduZWQoc3JjLmFkZChvZmZzZXQpKSB9OworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogbWFza19hc2NpaSBwcm9kdWNlcyBhIG1hc2sgb2YgYWxsIHRoZSBoaWdoIGJpdHMuCisr ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hc2sgPSBtYXNrX2FzY2lpKHNpbWQpOworICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIG1hc2sgIT0gMCB7CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIFNhZmV0eTogb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zIHRoaXMgd2lsbCBi ZSB0aGUgbnVtYmVyIG9mIGFzY2lpIGJ5dGVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vIGJlZm9yZSB0aGUgZmlyc3Qgbm9uLWFzY2lpLCBpLmUuIHZhbGlkIGZvciBpbmRleGluZyBz cmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IG1hc2sudHJhaWxpbmdf emVyb3MoKSBhcyB1c2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vbl9h c2NpaSA9IHVuc2FmZSB7ICpzcmMuYWRkKG9mZnNldCkgfTsKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gU2FmZXR5OiBXZSBrbm93IHRoaXMgaXMgbm9uLUFTQ0lJLCBhbmQgY2FuIHVw aG9sZCB0aGUgc2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQgaGVyZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gU29tZSgobm9uX2FzY2lpLCBvZmZzZXQpKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IFNJTURf U1RSSURFX1NJWkU7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0g ZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHRoaXMgaXMgdGhlIHVuYWxp Z25lZCBicmFuY2gKKyAgICAgICAgICAgICAgICAgICAgIC8vIEF0IG1vc3QgdHdvIGl0ZXJhdGlv bnMsIHNvIHVucm9sbAorKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBpZiB0aGlzIGNo ZWNrIHN1Y2NlZWRzIHdlJ3JlIHZhbGlkIGZvciByZWFkaW5nIGF0IGxlYXN0IGBTSU1EX1NUUklE RV9TSVpFYAorICAgICAgICAgICAgICAgICAgICAgaWYgb2Zmc2V0ICsgU0lNRF9TVFJJREVfU0la RSA8PSBsZW4geworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UncmUgdmFs aWQgZm9yIHRoaXMgcmVhZCBidXQgbXVzdCB1c2UgYW4gdW5hbGlnbmVkIHJlYWQKKyAgICAgICAg ICAgICAgICAgICAgICAgICBsZXQgc2ltZCA9IHVuc2FmZSB7IGxvYWQxNl91bmFsaWduZWQoc3Jj LmFkZChvZmZzZXQpKSB9OworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXNrID0gbWFz a19hc2NpaShzaW1kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtYXNrICE9IDAgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbWFzay50cmFpbGluZ196ZXJv cygpIGFzIHVzaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9uX2FzY2lp ID0gdW5zYWZlIHsgKnNyYy5hZGQob2Zmc2V0KSB9OworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBTYWZldHktdXNhYmxlIGludmFyaWFudCB1cGhlbGQgaGVyZSAoc2FtZSBhcyBhYm92 ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNvbWUoKG5vbl9hc2NpaSwg b2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICAgICAgIG9mZnNldCArPSBTSU1EX1NUUklERV9TSVpFOworKyAgICAgICAgICAgICAgICAgICAg ICAgIC8vIFNhZmV0eTogaWYgdGhpcyBjaGVjayBzdWNjZWVkcyB3ZSdyZSB2YWxpZCBmb3IgcmVh ZGluZyBhdCBsZWFzdCBgU0lNRF9TVFJJREVfU0laRWAKKyAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBvZmZzZXQgKyBTSU1EX1NUUklERV9TSVpFIDw9IGxlbiB7CisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UncmUgdmFsaWQgZm9yIHRoaXMgcmVhZCBidXQgbXVz dCB1c2UgYW4gdW5hbGlnbmVkIHJlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl dCBzaW1kID0gdW5zYWZlIHsgbG9hZDE2X3VuYWxpZ25lZChzcmMuYWRkKG9mZnNldCkpIH07Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWFzayA9IG1hc2tfYXNjaWkoc2ltZCk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1hc2sgIT0gMCB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbWFzay50cmFpbGluZ196ZXJvcygpIGFz IHVzaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vbl9hc2NpaSA9 IHVuc2FmZSB7ICpzcmMuYWRkKG9mZnNldCkgfTsKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFNhZmV0eS11c2FibGUgaW52YXJpYW50IHVwaGVsZCBoZXJlIChzYW1lIGFzIGFi b3ZlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNvbWUoKG5vbl9h c2NpaSwgb2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkU7CisgICAgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIHdoaWxlIG9mZnNldCA8IGxlbiB7 CisrICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogcmVsaWVzIHN0cmFpZ2h0Zm9yd2FyZGx5IG9u IHRoZSBgbGVuYCBpbnZhcmlhbnQKKyAgICAgICAgICAgICAgICAgbGV0IGNvZGVfdW5pdCA9IHVu c2FmZSB7ICooc3JjLmFkZChvZmZzZXQpKSB9OworICAgICAgICAgICAgICAgICBpZiBjb2RlX3Vu aXQgPiAxMjcgeworKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5LXVzYWJsZSBpbnZhcmlh bnQgdXBoZWxkIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTb21lKChjb2RlX3Vu aXQsIG9mZnNldCkpOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIG9mZnNl dCArPSAxOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBOb25lCisgICAgICAgICB9Cisg ICAgIH0gZWxzZSB7CisrICAgICAgICAvLyBTYWZldHktdXNhYmxlIGludmFyaWFudDogcmV0dXJu cyBieXRlIGluZGV4IG9mIGZpcnN0IG5vbi1hc2NpaSBieXRlCisgICAgICAgICAjW2lubGluZShh bHdheXMpXQorICAgICAgICAgZm4gZmluZF9ub25fYXNjaWkod29yZDogdXNpemUsIHNlY29uZF93 b3JkOiB1c2l6ZSkgLT4gT3B0aW9uPHVzaXplPiB7CisgICAgICAgICAgICAgbGV0IHdvcmRfbWFz a2VkID0gd29yZCAmIEFTQ0lJX01BU0s7CisgICAgICAgICAgICAgbGV0IHNlY29uZF9tYXNrZWQg PSBzZWNvbmRfd29yZCAmIEFTQ0lJX01BU0s7CisgICAgICAgICAgICAgaWYgKHdvcmRfbWFza2Vk IHwgc2Vjb25kX21hc2tlZCkgPT0gMCB7CisrICAgICAgICAgICAgICAgIC8vIEJvdGggYXJlIGFz Y2lpLCBpbnZhcmlhbnQgdXBoZWxkCisgICAgICAgICAgICAgICAgIHJldHVybiBOb25lOworICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICBpZiB3b3JkX21hc2tlZCAhPSAwIHsKKyAgICAgICAg ICAgICAgICAgbGV0IHplcm9zID0gY291bnRfemVyb3Mod29yZF9tYXNrZWQpOworLSAgICAgICAg ICAgICAgICAvLyBgemVyb3NgIG5vdyBjb250YWlucyA3IChmb3IgdGhlIHNldmVuIGJpdHMgb2Yg bm9uLUFTQ0lJKQorKyAgICAgICAgICAgICAgICAvLyBgemVyb3NgIG5vdyBjb250YWlucyAwIHRv IDcgKGZvciB0aGUgc2V2ZW4gYml0cyBvZiBtYXNrZWQgQVNDSUkgaW4gbGl0dGxlIGVuZGlhbiwK KysgICAgICAgICAgICAgICAgLy8gb3IgdXAgdG8gNyBiaXRzIG9mIG5vbi1BU0NJSSBpbiBiaWcg ZW5kaWFuIGlmIHRoZSBmaXJzdCBieXRlIGlzIG5vbi1BU0NJSSkKKyAgICAgICAgICAgICAgICAg Ly8gcGx1cyA4IHRpbWVzIHRoZSBudW1iZXIgb2YgQVNDSUkgaW4gdGV4dCBvcmRlciBiZWZvcmUg dGhlCisgICAgICAgICAgICAgICAgIC8vIG5vbi1BU0NJSSBieXRlIGluIHRoZSBsaXR0bGUtZW5k aWFuIGNhc2Ugb3IgOCB0aW1lcyB0aGUgbnVtYmVyIG9mIEFTQ0lJIGluCisgICAgICAgICAgICAg ICAgIC8vIHRleHQgb3JkZXIgYmVmb3JlIHRoZSBub24tQVNDSUkgYnl0ZSBpbiB0aGUgYmlnLWVu ZGlhbiBjYXNlLgorICAgICAgICAgICAgICAgICBsZXQgbnVtX2FzY2lpID0gKHplcm9zID4+IDMp IGFzIHVzaXplOworKyAgICAgICAgICAgICAgICAvLyBTYWZldHktdXNhYmxlIGludmFyaWFudCB1 cGhlbGQgaGVyZQorICAgICAgICAgICAgICAgICByZXR1cm4gU29tZShudW1fYXNjaWkpOworICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICBsZXQgemVyb3MgPSBjb3VudF96ZXJvcyhzZWNvbmRf bWFza2VkKTsKKy0gICAgICAgICAgICAvLyBgemVyb3NgIG5vdyBjb250YWlucyA3IChmb3IgdGhl IHNldmVuIGJpdHMgb2Ygbm9uLUFTQ0lJKQorKyAgICAgICAgICAgIC8vIGB6ZXJvc2Agbm93IGNv bnRhaW5zIDAgdG8gNyAoZm9yIHRoZSBzZXZlbiBiaXRzIG9mIG1hc2tlZCBBU0NJSSBpbiBsaXR0 bGUgZW5kaWFuLAorKyAgICAgICAgICAgIC8vIG9yIHVwIHRvIDcgYml0cyBvZiBub24tQVNDSUkg aW4gYmlnIGVuZGlhbiBpZiB0aGUgZmlyc3QgYnl0ZSBpcyBub24tQVNDSUkpCisgICAgICAgICAg ICAgLy8gcGx1cyA4IHRpbWVzIHRoZSBudW1iZXIgb2YgQVNDSUkgaW4gdGV4dCBvcmRlciBiZWZv cmUgdGhlCisgICAgICAgICAgICAgLy8gbm9uLUFTQ0lJIGJ5dGUgaW4gdGhlIGxpdHRsZS1lbmRp YW4gY2FzZSBvciA4IHRpbWVzIHRoZSBudW1iZXIgb2YgQVNDSUkgaW4KKyAgICAgICAgICAgICAv LyB0ZXh0IG9yZGVyIGJlZm9yZSB0aGUgbm9uLUFTQ0lJIGJ5dGUgaW4gdGhlIGJpZy1lbmRpYW4g Y2FzZS4KKyAgICAgICAgICAgICBsZXQgbnVtX2FzY2lpID0gKHplcm9zID4+IDMpIGFzIHVzaXpl OworKyAgICAgICAgICAgIC8vIFNhZmV0eS11c2FibGUgaW52YXJpYW50IHVwaGVsZCBoZXJlCisg ICAgICAgICAgICAgU29tZShBTFVfQUxJR05NRU5UICsgbnVtX2FzY2lpKQorICAgICAgICAgfQor IAorKyAgICAgICAgLy8vIFNhZmV0eTogYHNyY2AgbXVzdCBiZSB2YWxpZCBmb3IgdGhlIHJlYWRz IG9mIHR3byBgdXNpemVgcworKyAgICAgICAgLy8vCisrICAgICAgICAvLy8gU2FmZXR5LXVzYWJs ZSBpbnZhcmlhbnQ6IHdpbGwgcmV0dXJuIGJ5dGUgaW5kZXggb2YgZmlyc3Qgbm9uLWFzY2lpIGJ5 dGUKKyAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICB1bnNhZmUgZm4gdmFsaWRh dGVfYXNjaWlfc3RyaWRlKHNyYzogKmNvbnN0IHVzaXplKSAtPiBPcHRpb248dXNpemU+IHsKKyAg ICAgICAgICAgICBsZXQgd29yZCA9ICpzcmM7CisgICAgICAgICAgICAgbGV0IHNlY29uZF93b3Jk ID0gKihzcmMuYWRkKDEpKTsKKyAgICAgICAgICAgICBmaW5kX25vbl9hc2NpaSh3b3JkLCBzZWNv bmRfd29yZCkKKyAgICAgICAgIH0KKyAKKysgICAgICAgIC8vLyBTYWZldHktdXNhYmxlIGludmFy aWFudDogd2lsbCByZXR1cm4gU29tZSgpIHdoZW4gaXQgZW5jb3VudGVycyBub24tQVNDSUksIHdp dGggdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIFNvbWUgYmVpbmcKKysgICAgICAgIC8vLyBndWFy YW50ZWVkIHRvIGJlIG5vbi1BU0NJSSAoPiAxMjcpLCBhbmQgdGhlIHNlY29uZCBiZWluZyB0aGUg b2Zmc2V0IHdoZXJlIGl0IGlzIGZvdW5kCisgICAgICAgICAjW2NmZ19hdHRyKGZlYXR1cmUgPSAi Y2FyZ28tY2xpcHB5IiwgYWxsb3coY2FzdF9wdHJfYWxpZ25tZW50KSldCisgICAgICAgICAjW2lu bGluZShhbHdheXMpXQorICAgICAgICAgcHViIGZuIHZhbGlkYXRlX2FzY2lpKHNsaWNlOiAmW3U4 XSkgLT4gT3B0aW9uPCh1OCwgdXNpemUpPiB7CisgICAgICAgICAgICAgbGV0IHNyYyA9IHNsaWNl LmFzX3B0cigpOworICAgICAgICAgICAgIGxldCBsZW4gPSBzbGljZS5sZW4oKTsKKyAgICAgICAg ICAgICBsZXQgbXV0IG9mZnNldCA9IDB1c2l6ZTsKKyAgICAgICAgICAgICBsZXQgbXV0IHVudGls X2FsaWdubWVudCA9IChBTFVfQUxJR05NRU5UIC0gKChzcmMgYXMgdXNpemUpICYgQUxVX0FMSUdO TUVOVF9NQVNLKSkgJiBBTFVfQUxJR05NRU5UX01BU0s7CisrICAgICAgICAgICAgLy8gU2FmZXR5 OiBJZiB0aGlzIGNoZWNrIGZhaWxzIHdlJ3JlIHZhbGlkIHRvIHJlYWQgYHVudGlsX2FsaWdubWVu dCArIEFMVV9TVFJJREVfU0laRWAgZWxlbWVudHMKKyAgICAgICAgICAgICBpZiB1bnRpbF9hbGln bm1lbnQgKyBBTFVfU1RSSURFX1NJWkUgPD0gbGVuIHsKKyAgICAgICAgICAgICAgICAgd2hpbGUg dW50aWxfYWxpZ25tZW50ICE9IDAgeworICAgICAgICAgICAgICAgICAgICAgbGV0IGNvZGVfdW5p dCA9IHNsaWNlW29mZnNldF07CisgICAgICAgICAgICAgICAgICAgICBpZiBjb2RlX3VuaXQgPiAx MjcgeworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eS11c2FibGUgaW52YWlyYW50 IHVwaGVsZCBoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNvbWUoKGNvZGVf dW5pdCwgb2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgICBvZmZzZXQgKz0gMTsKKyAgICAgICAgICAgICAgICAgICAgIHVudGlsX2FsaWdubWVudCAt PSAxOworICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogQXQg dGhpcyBwb2ludCB3ZSBoYXZlIHJlYWQgdW50aWxfYWxpZ25tZW50IGVsZW1lbnRzIGFuZAorKyAg ICAgICAgICAgICAgICAvLyBhcmUgdmFsaWQgZm9yIGBBTFVfU1RSSURFX1NJWkVgIG1vcmUuCisg ICAgICAgICAgICAgICAgIGxldCBsZW5fbWludXNfc3RyaWRlID0gbGVuIC0gQUxVX1NUUklERV9T SVpFOworICAgICAgICAgICAgICAgICBsb29wIHsKKysgICAgICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogd2Ugd2VyZSB2YWxpZCBmb3IgdGhpcyByZWFkCisgICAgICAgICAgICAgICAgICAgICBs ZXQgcHRyID0gdW5zYWZlIHsgc3JjLmFkZChvZmZzZXQpIGFzICpjb25zdCB1c2l6ZSB9OworICAg ICAgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUobnVtX2FzY2lpKSA9IHVuc2FmZSB7IHZhbGlk YXRlX2FzY2lpX3N0cmlkZShwdHIpIH0geworICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl dCArPSBudW1fYXNjaWk7CisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5LXVzYWJs ZSBpbnZhaXJhbnQgdXBoZWxkIGhlcmUgdXNpbmcgdGhlIGludmFyaWFudCBmcm9tIHZhbGlkYXRl X2FzY2lpX3N0cmlkZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNvbWUoKHVu c2FmZSB7ICooc3JjLmFkZChvZmZzZXQpKSB9LCBvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBBTFVfU1RSSURFX1NJWkU7Cisr ICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMgaXMgYG9mZnNldCA+IEFMVV9TVFJJ REVfU0laRWAgd2hpY2ggbWVhbnMgd2UgYWx3YXlzIGhhdmUgYXQgbGVhc3QgYDIgKiBBTFVfU1RS SURFX1NJWkVgIGVsZW1lbnRzIHRvIG11bmNoIG5leHQgdGltZS4KKyAgICAgICAgICAgICAgICAg ICAgIGlmIG9mZnNldCA+IGxlbl9taW51c19zdHJpZGUgeworICAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgfQorICAgICAgICAgICAgIHdoaWxlIG9mZnNldCA8IGxlbiB7CisgICAgICAg ICAgICAgICAgIGxldCBjb2RlX3VuaXQgPSBzbGljZVtvZmZzZXRdOworICAgICAgICAgICAgICAg ICBpZiBjb2RlX3VuaXQgPiAxMjcgeworKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5LXVz YWJsZSBpbnZhaXJhbnQgdXBoZWxkIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBT b21lKChjb2RlX3VuaXQsIG9mZnNldCkpOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgIG9mZnNldCArPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTm9uZQorICAg ICAgICAgfQorIAorICAgICB9CitAQCAtMTQyMyw3MCArMTc4MSw4OCBAQCBjZmdfaWYhIHsKKyAg ICAgICAgIC8vIHZlY3RvciByZWFkcyB3aXRob3V0IHZlY3RvciB3cml0ZXMuCisgCisgICAgICAg ICBwdWIgY29uc3QgQUxVX1NUUklERV9TSVpFOiB1c2l6ZSA9IDg7CisgCisgICAgICAgICBwdWIg Y29uc3QgQUxVX0FMSUdOTUVOVDogdXNpemUgPSA0OworIAorICAgICAgICAgcHViIGNvbnN0IEFM VV9BTElHTk1FTlRfTUFTSzogdXNpemUgPSAzOworICAgICB9IGVsc2UgeworKyAgICAgICAgLy8g U2FmZXR5OiBzcmMgcG9pbnRzIHRvIHR3byB2YWxpZCBgdXNpemVgcywgZHN0IHBvaW50cyB0byBm b3VyIHZhbGlkIGB1c2l6ZWBzCisgICAgICAgICAjW2lubGluZShhbHdheXMpXQorICAgICAgICAg dW5zYWZlIGZuIHVucGFja19sYXRpbjFfc3RyaWRlX2FsdShzcmM6ICpjb25zdCB1c2l6ZSwgZHN0 OiAqbXV0IHVzaXplKSB7CisrICAgICAgICAgICAgLy8gU2FmZXR5OiBzcmMgc2FmZXR5IGludmFy aWFudCB1c2VkIGhlcmUKKyAgICAgICAgICAgICBsZXQgd29yZCA9ICpzcmM7CisgICAgICAgICAg ICAgbGV0IHNlY29uZF93b3JkID0gKihzcmMuYWRkKDEpKTsKKysgICAgICAgICAgICAvLyBTYWZl dHk6IGRzdCBzYWZldHkgaW52YXJpYW50IHBhc3NlZCBkb3duCisgICAgICAgICAgICAgdW5wYWNr X2FsdSh3b3JkLCBzZWNvbmRfd29yZCwgZHN0KTsKKyAgICAgICAgIH0KKyAKKysgICAgICAgIC8v IFNhZmV0eTogc3JjIHBvaW50cyB0byBmb3VyIHZhbGlkIGB1c2l6ZWBzLCBkc3QgcG9pbnRzIHRv IHR3byB2YWxpZCBgdXNpemVgcworICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICAgICAg IHVuc2FmZSBmbiBwYWNrX2xhdGluMV9zdHJpZGVfYWx1KHNyYzogKmNvbnN0IHVzaXplLCBkc3Q6 ICptdXQgdXNpemUpIHsKKysgICAgICAgICAgICAvLyBTYWZldHk6IHNyYyBzYWZldHkgaW52YXJp YW50IHVzZWQgaGVyZQorICAgICAgICAgICAgIGxldCBmaXJzdCA9ICpzcmM7CisgICAgICAgICAg ICAgbGV0IHNlY29uZCA9ICooc3JjLmFkZCgxKSk7CisgICAgICAgICAgICAgbGV0IHRoaXJkID0g KihzcmMuYWRkKDIpKTsKKyAgICAgICAgICAgICBsZXQgZm91cnRoID0gKihzcmMuYWRkKDMpKTsK KysgICAgICAgICAgICAvLyBTYWZldHk6IGRzdCBzYWZldHkgaW52YXJpYW50IHBhc3NlZCBkb3du CisgICAgICAgICAgICAgcGFja19hbHUoZmlyc3QsIHNlY29uZCwgdGhpcmQsIGZvdXJ0aCwgZHN0 KTsKKyAgICAgICAgIH0KKyAKKysgICAgICAgIC8vIFNhZmV0eTogc3JjIHBvaW50cyB0byB0d28g dmFsaWQgYHVzaXplYHMsIGRzdCBwb2ludHMgdG8gZm91ciB2YWxpZCBgdXNpemVgcworICAgICAg ICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICAgICAgIHVuc2FmZSBmbiBhc2NpaV90b19iYXNpY19s YXRpbl9zdHJpZGVfYWx1KHNyYzogKmNvbnN0IHVzaXplLCBkc3Q6ICptdXQgdXNpemUpIC0+IGJv b2wgeworKyAgICAgICAgICAgIC8vIFNhZmV0eTogc3JjIHNhZmV0eSBpbnZhcmlhbnQgdXNlZCBo ZXJlCisgICAgICAgICAgICAgbGV0IHdvcmQgPSAqc3JjOworICAgICAgICAgICAgIGxldCBzZWNv bmRfd29yZCA9ICooc3JjLmFkZCgxKSk7CisgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHdv cmRzIGNvbnRhaW5zIG5vbi1BU0NJSQorICAgICAgICAgICAgIGlmICh3b3JkICYgQVNDSUlfTUFT SykgfCAoc2Vjb25kX3dvcmQgJiBBU0NJSV9NQVNLKSAhPSAwIHsKKyAgICAgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAvLyBTYWZldHk6IGRz dCBzYWZldHkgaW52YXJpYW50IHBhc3NlZCBkb3duCisgICAgICAgICAgICAgdW5wYWNrX2FsdSh3 b3JkLCBzZWNvbmRfd29yZCwgZHN0KTsKKyAgICAgICAgICAgICB0cnVlCisgICAgICAgICB9Cisg CisrICAgICAgICAvLyBTYWZldHk6IHNyYyBwb2ludHMgZm91ciB2YWxpZCBgdXNpemVgcywgZHN0 IHBvaW50cyB0byB0d28gdmFsaWQgYHVzaXplYHMKKyAgICAgICAgICNbaW5saW5lKGFsd2F5cyld CisgICAgICAgICB1bnNhZmUgZm4gYmFzaWNfbGF0aW5fdG9fYXNjaWlfc3RyaWRlX2FsdShzcmM6 ICpjb25zdCB1c2l6ZSwgZHN0OiAqbXV0IHVzaXplKSAtPiBib29sIHsKKysgICAgICAgICAgICAv LyBTYWZldHk6IHNyYyBzYWZldHkgaW52YXJpYW50IHVzZWQgaGVyZQorICAgICAgICAgICAgIGxl dCBmaXJzdCA9ICpzcmM7CisgICAgICAgICAgICAgbGV0IHNlY29uZCA9ICooc3JjLmFkZCgxKSk7 CisgICAgICAgICAgICAgbGV0IHRoaXJkID0gKihzcmMuYWRkKDIpKTsKKyAgICAgICAgICAgICBs ZXQgZm91cnRoID0gKihzcmMuYWRkKDMpKTsKKyAgICAgICAgICAgICBpZiAoZmlyc3QgJiBCQVNJ Q19MQVRJTl9NQVNLKSB8IChzZWNvbmQgJiBCQVNJQ19MQVRJTl9NQVNLKSB8ICh0aGlyZCAmIEJB U0lDX0xBVElOX01BU0spIHwgKGZvdXJ0aCAmIEJBU0lDX0xBVElOX01BU0spICE9IDAgeworICAg ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgfQorKyAgICAgICAgICAg IC8vIFNhZmV0eTogZHN0IHNhZmV0eSBpbnZhcmlhbnQgcGFzc2VkIGRvd24KKyAgICAgICAgICAg ICBwYWNrX2FsdShmaXJzdCwgc2Vjb25kLCB0aGlyZCwgZm91cnRoLCBkc3QpOworICAgICAgICAg ICAgIHRydWUKKyAgICAgICAgIH0KKyAKKysgICAgICAgIC8vIFNhZmV0eTogc3JjLCBkc3QgYm90 aCBwb2ludCB0byB0d28gdmFsaWQgYHVzaXplYHMgZWFjaAorKyAgICAgICAgLy8gU2FmZXR5LXVz YWJsZSBpbnZhcmlhbnQ6IFdpbGwgcmV0dXJuIGJ5dGUgaW5kZXggb2YgZmlyc3Qgbm9uLWFzY2lp IGJ5dGUuCisgICAgICAgICAjW2lubGluZShhbHdheXMpXQorICAgICAgICAgdW5zYWZlIGZuIGFz Y2lpX3RvX2FzY2lpX3N0cmlkZShzcmM6ICpjb25zdCB1c2l6ZSwgZHN0OiAqbXV0IHVzaXplKSAt PiBPcHRpb248dXNpemU+IHsKKysgICAgICAgICAgICAvLyBTYWZldHk6IHNyYyBzYWZldHkgaW52 YXJpYW50IHVzZWQgaGVyZQorICAgICAgICAgICAgIGxldCB3b3JkID0gKnNyYzsKKyAgICAgICAg ICAgICBsZXQgc2Vjb25kX3dvcmQgPSAqKHNyYy5hZGQoMSkpOworKyAgICAgICAgICAgIC8vIFNh ZmV0eTogc3JjIHNhZmV0eSBpbnZhcmlhbnQgdXNlZCBoZXJlCisgICAgICAgICAgICAgKmRzdCA9 IHdvcmQ7CisgICAgICAgICAgICAgKihkc3QuYWRkKDEpKSA9IHNlY29uZF93b3JkOworKyAgICAg ICAgICAgIC8vIFJlbGllcyBvbiBzYWZldHktdXNhYmxlIGludmFyaWFudCBoZXJlCisgICAgICAg ICAgICAgZmluZF9ub25fYXNjaWkod29yZCwgc2Vjb25kX3dvcmQpCisgICAgICAgICB9CisgCisg ICAgICAgICBiYXNpY19sYXRpbl9hbHUhKGFzY2lpX3RvX2Jhc2ljX2xhdGluLCB1OCwgdTE2LCBh c2NpaV90b19iYXNpY19sYXRpbl9zdHJpZGVfYWx1KTsKKyAgICAgICAgIGJhc2ljX2xhdGluX2Fs dSEoYmFzaWNfbGF0aW5fdG9fYXNjaWksIHUxNiwgdTgsIGJhc2ljX2xhdGluX3RvX2FzY2lpX3N0 cmlkZV9hbHUpOworICAgICAgICAgbGF0aW4xX2FsdSEodW5wYWNrX2xhdGluMSwgdTgsIHUxNiwg dW5wYWNrX2xhdGluMV9zdHJpZGVfYWx1KTsKKyAgICAgICAgIGxhdGluMV9hbHUhKHBhY2tfbGF0 aW4xLCB1MTYsIHU4LCBwYWNrX2xhdGluMV9zdHJpZGVfYWx1KTsKKysgICAgICAgIC8vIFNhZmV0 eSBpbnZhcmlhbnQgdXBoZWxkOiBhc2NpaV90b19hc2NpaV9zdHJpZGUgd2lsbCByZXR1cm4gYnl0 ZSBpbmRleCBvZiBmaXJzdCBub24tYXNjaWkgaWYgZm91bmQKKyAgICAgICAgIGFzY2lpX2FsdSEo YXNjaWlfdG9fYXNjaWksIHU4LCB1OCwgYXNjaWlfdG9fYXNjaWlfc3RyaWRlKTsKKyAgICAgfQor IH0KKyAKKyBwdWIgZm4gYXNjaWlfdmFsaWRfdXBfdG8oYnl0ZXM6ICZbdThdKSAtPiB1c2l6ZSB7 CisgICAgIG1hdGNoIHZhbGlkYXRlX2FzY2lpKGJ5dGVzKSB7CisgICAgICAgICBOb25lID0+IGJ5 dGVzLmxlbigpLAorICAgICAgICAgU29tZSgoXywgbnVtX3ZhbGlkKSkgPT4gbnVtX3ZhbGlkLAor ZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL2hhbmRsZXMucnMg Yi90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9oYW5kbGVzLnJzCistLS0gYS90aGly ZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9oYW5kbGVzLnJzCisrKysgYi90aGlyZF9wYXJ0 eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9oYW5kbGVzLnJzCitAQCAtMjksMTcgKzI5LDE3IEBAIHVz ZSBjcmF0ZTo6c2ltZF9mdW5jczo6KjsKKyAjW2NmZyhhbGwoCisgICAgIGZlYXR1cmUgPSAic2lt ZC1hY2NlbCIsCisgICAgIGFueSgKKyAgICAgICAgIHRhcmdldF9mZWF0dXJlID0gInNzZTIiLAor ICAgICAgICAgYWxsKHRhcmdldF9lbmRpYW4gPSAibGl0dGxlIiwgdGFyZ2V0X2FyY2ggPSAiYWFy Y2g2NCIpLAorICAgICAgICAgYWxsKHRhcmdldF9lbmRpYW4gPSAibGl0dGxlIiwgdGFyZ2V0X2Zl YXR1cmUgPSAibmVvbiIpCisgICAgICkKKyApKV0KKy11c2UgcGFja2VkX3NpbWQ6OnUxNng4Owor K3VzZSBjb3JlOjpzaW1kOjp1MTZ4ODsKKyAKKyB1c2Ugc3VwZXI6OkRlY29kZXJSZXN1bHQ7Cisg dXNlIHN1cGVyOjpFbmNvZGVyUmVzdWx0OworIHVzZSBjcmF0ZTo6YXNjaWk6Oio7CisgdXNlIGNy YXRlOjp1dGZfODo6Y29udmVydF91dGY4X3RvX3V0ZjE2X3VwX3RvX2ludmFsaWQ7CisgdXNlIGNy YXRlOjp1dGZfODo6dXRmOF92YWxpZF91cF90bzsKKyAKKyBwdWIgZW51bSBTcGFjZTxUPiB7CitA QCAtODUsODQgKzg1LDEwMCBAQCBpbXBsIEVuZGlhbiBmb3IgTGl0dGxlRW5kaWFuIHsKKyAgICAg Y29uc3QgT1BQT1NJVEVfRU5ESUFOOiBib29sID0gZmFsc2U7CisgCisgICAgICNbY2ZnKHRhcmdl dF9lbmRpYW4gPSAiYmlnIildCisgICAgIGNvbnN0IE9QUE9TSVRFX0VORElBTjogYm9vbCA9IHRy dWU7CisgfQorIAorICNbZGVyaXZlKERlYnVnLCBDb3B5LCBDbG9uZSldCisgc3RydWN0IFVuYWxp Z25lZFUxNlNsaWNlIHsKKysgICAgLy8gU2FmZXR5IGludmFyaWFudDogcHRyIG11c3QgYmUgdmFs aWQgZm9yIHJlYWRpbmcgMipsZW4gYnl0ZXMKKyAgICAgcHRyOiAqY29uc3QgdTgsCisgICAgIGxl bjogdXNpemUsCisgfQorIAorIGltcGwgVW5hbGlnbmVkVTE2U2xpY2UgeworKyAgICAvLy8gU2Fm ZXR5OiBwdHIgbXVzdCBiZSB2YWxpZCBmb3IgcmVhZGluZyAyKmxlbiBieXRlcworICAgICAjW2lu bGluZShhbHdheXMpXQorICAgICBwdWIgdW5zYWZlIGZuIG5ldyhwdHI6ICpjb25zdCB1OCwgbGVu OiB1c2l6ZSkgLT4gVW5hbGlnbmVkVTE2U2xpY2UgeworKyAgICAgICAgLy8gU2FmZXR5OiBmaWVs ZCBpbnZhcmlhbnQgcGFzc2VkIHVwIHRvIGNhbGxlciBoZXJlCisgICAgICAgICBVbmFsaWduZWRV MTZTbGljZSB7IHB0ciwgbGVuIH0KKyAgICAgfQorIAorICAgICAjW2lubGluZShhbHdheXMpXQor ICAgICBwdWIgZm4gdHJpbV9sYXN0KCZtdXQgc2VsZikgeworICAgICAgICAgYXNzZXJ0IShzZWxm LmxlbiA+IDApOworKyAgICAgICAgLy8gU2FmZXR5OiBpbnZhcmlhbnQgdXBoZWxkIGhlcmU6IGEg c2xpY2UgaXMgc3RpbGwgdmFsaWQgd2l0aCBhIHNob3J0ZXIgbGVuCisgICAgICAgICBzZWxmLmxl biAtPSAxOworICAgICB9CisgCisgICAgICNbaW5saW5lKGFsd2F5cyldCisgICAgIHB1YiBmbiBh dCgmc2VsZiwgaTogdXNpemUpIC0+IHUxNiB7CisgICAgICAgICB1c2UgY29yZTo6bWVtOjpNYXli ZVVuaW5pdDsKKyAKKyAgICAgICAgIGFzc2VydCEoaSA8IHNlbGYubGVuKTsKKyAgICAgICAgIHVu c2FmZSB7CisgICAgICAgICAgICAgbGV0IG11dCB1OiBNYXliZVVuaW5pdDx1MTY+ID0gTWF5YmVV bmluaXQ6OnVuaW5pdCgpOworKyAgICAgICAgICAgIC8vIFNhZmV0eTogaSBpcyBhdCBtb3N0IGxl biAtIDEsIHdoaWNoIHdvcmtzIGhlcmUKKyAgICAgICAgICAgICA6OmNvcmU6OnB0cjo6Y29weV9u b25vdmVybGFwcGluZyhzZWxmLnB0ci5hZGQoaSAqIDIpLCB1LmFzX211dF9wdHIoKSBhcyAqbXV0 IHU4LCAyKTsKKysgICAgICAgICAgICAvLyBTYWZldHk6IHZhbGlkIHJlYWQgYWJvdmUgbGV0cyB1 cyBkbyB0aGlzCisgICAgICAgICAgICAgdS5hc3N1bWVfaW5pdCgpCisgICAgICAgICB9CisgICAg IH0KKyAKKyAgICAgI1tjZmcoZmVhdHVyZSA9ICJzaW1kLWFjY2VsIildCisgICAgICNbaW5saW5l KGFsd2F5cyldCisgICAgIHB1YiBmbiBzaW1kX2F0KCZzZWxmLCBpOiB1c2l6ZSkgLT4gdTE2eDgg eworKyAgICAgICAgLy8gU2FmZXR5OiBpL2xlbiBhcmUgb24gdGhlIHNjYWxlIG9mIHUxNnMsIGVh Y2ggb25lIGNvcnJlc3BvbmRzIHRvIDIgdThzCisgICAgICAgICBhc3NlcnQhKGkgKyBTSU1EX1NU UklERV9TSVpFIC8gMiA8PSBzZWxmLmxlbik7CisgICAgICAgICBsZXQgYnl0ZV9pbmRleCA9IGkg KiAyOworKyAgICAgICAgLy8gU2FmZXR5OiBsb2FkMTZfdW5hbGlnbmVkIG5lZWRzIFNJTURfU1RS SURFX1NJWkU9MTYgdTggZWxlbWVudHMgdG8gcmVhZCwKKysgICAgICAgIC8vIG9yIDE2LzIgPSA4 IHUxNiBlbGVtZW50cyB0byByZWFkLgorKyAgICAgICAgLy8gV2UgaGF2ZSBjaGVja2VkIHRoYXQg d2UgaGF2ZSBhdCBsZWFzdCB0aGF0IG1hbnkgYWJvdmUuCisrCisgICAgICAgICB1bnNhZmUgeyB0 b191MTZfbGFuZXMobG9hZDE2X3VuYWxpZ25lZChzZWxmLnB0ci5hZGQoYnl0ZV9pbmRleCkpKSB9 CisgICAgIH0KKyAKKyAgICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICAgcHViIGZuIGxlbigmc2Vs ZikgLT4gdXNpemUgeworICAgICAgICAgc2VsZi5sZW4KKyAgICAgfQorIAorICAgICAjW2lubGlu ZShhbHdheXMpXQorICAgICBwdWIgZm4gdGFpbCgmc2VsZiwgZnJvbTogdXNpemUpIC0+IFVuYWxp Z25lZFUxNlNsaWNlIHsKKyAgICAgICAgIC8vIFhYWCB0aGUgcmV0dXJuIHZhbHVlIHNob3VsZCBi ZSByZXN0cmljdGVkIG5vdCB0bworICAgICAgICAgLy8gb3V0bGl2ZSBzZWxmLgorICAgICAgICAg YXNzZXJ0IShmcm9tIDw9IHNlbGYubGVuKTsKKysgICAgICAgIC8vIFNhZmV0eTogVGhpcyB1cGhv bGRzIHRoZSBzYW1lIGludmFyaWFudDogYGZyb21gIGlzIGluIGJvdW5kcyBhbmQgd2UncmUgcmV0 dXJuaW5nIGEgc2hvcnRlciBzbGljZQorICAgICAgICAgdW5zYWZlIHsgVW5hbGlnbmVkVTE2U2xp Y2U6Om5ldyhzZWxmLnB0ci5hZGQoZnJvbSAqIDIpLCBzZWxmLmxlbiAtIGZyb20pIH0KKyAgICAg fQorIAorICAgICAjW2NmZyhmZWF0dXJlID0gInNpbWQtYWNjZWwiKV0KKyAgICAgI1tpbmxpbmUo YWx3YXlzKV0KKyAgICAgcHViIGZuIGNvcHlfYm1wX3RvPEU6IEVuZGlhbj4oJnNlbGYsIG90aGVy OiAmbXV0IFt1MTZdKSAtPiBPcHRpb248KHUxNiwgdXNpemUpPiB7CisgICAgICAgICBhc3NlcnQh KHNlbGYubGVuIDw9IG90aGVyLmxlbigpKTsKKyAgICAgICAgIGxldCBtdXQgb2Zmc2V0ID0gMDsK KysgICAgICAgIC8vIFNhZmV0eTogU0lNRF9TVFJJREVfU0laRSBpcyBtZWFzdXJlZCBpbiBieXRl cywgd2hlcmVhcyBsZW4gaXMgaW4gdTE2cy4gV2UgY2hlY2sgd2UgY2FuCisrICAgICAgICAvLyBt dW5jaCBTSU1EX1NUUklERV9TSVpFIC8gMiB1MTZzIHdoaWNoIG1lYW5zIHdlIGNhbiB3cml0ZSBT SU1EX1NUUklERV9TSVpFIHU4cworICAgICAgICAgaWYgU0lNRF9TVFJJREVfU0laRSAvIDIgPD0g c2VsZi5sZW4geworICAgICAgICAgICAgIGxldCBsZW5fbWludXNfc3RyaWRlID0gc2VsZi5sZW4g LSBTSU1EX1NUUklERV9TSVpFIC8gMjsKKyAgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAg ICAgICAgbGV0IG11dCBzaW1kID0gc2VsZi5zaW1kX2F0KG9mZnNldCk7CisgICAgICAgICAgICAg ICAgIGlmIEU6Ok9QUE9TSVRFX0VORElBTiB7CisgICAgICAgICAgICAgICAgICAgICBzaW1kID0g c2ltZF9ieXRlX3N3YXAoc2ltZCk7CisgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAg ICAgLy8gU2FmZXR5OiB3ZSBoYXZlIGVub3VnaCBzcGFjZSBvbiB0aGUgb3RoZXIgc2lkZSB0byB3 cml0ZSB0aGlzCisgICAgICAgICAgICAgICAgIHVuc2FmZSB7CisgICAgICAgICAgICAgICAgICAg ICBzdG9yZThfdW5hbGlnbmVkKG90aGVyLmFzX211dF9wdHIoKS5hZGQob2Zmc2V0KSwgc2ltZCk7 CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgaWYgY29udGFpbnNfc3Vycm9n YXRlcyhzaW1kKSB7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lNRF9TVFJJREVfU0laRSAvIDI7Cisr ICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBlbnN1cmVzIHdlIHN0aWxsIGhhdmUgc3Bh Y2UgZm9yIHdyaXRpbmcgU0lNRF9TVFJJREVfU0laRSB1OHMKKyAgICAgICAgICAgICAgICAgaWYg b2Zmc2V0ID4gbGVuX21pbnVzX3N0cmlkZSB7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAg IHdoaWxlIG9mZnNldCA8IHNlbGYubGVuIHsKKyAgICAgICAgICAgICBsZXQgdW5pdCA9IHN3YXBf aWZfb3Bwb3NpdGVfZW5kaWFuOjo8RT4oc2VsZi5hdChvZmZzZXQpKTsKKyAgICAgICAgICAgICBv dGhlcltvZmZzZXRdID0gdW5pdDsKK0BAIC0yMzEsMzMgKzI0NywzNyBAQCBmbiBjb3B5X3VuYWxp Z25lZF9iYXNpY19sYXRpbl90b19hc2NpaTxFCisgI1tjZmcoZmVhdHVyZSA9ICJzaW1kLWFjY2Vs IildCisgI1tpbmxpbmUoYWx3YXlzKV0KKyBmbiBjb3B5X3VuYWxpZ25lZF9iYXNpY19sYXRpbl90 b19hc2NpaTxFOiBFbmRpYW4+KAorICAgICBzcmM6IFVuYWxpZ25lZFUxNlNsaWNlLAorICAgICBk c3Q6ICZtdXQgW3U4XSwKKyApIC0+IENvcHlBc2NpaVJlc3VsdDx1c2l6ZSwgKHUxNiwgdXNpemUp PiB7CisgICAgIGxldCBsZW4gPSA6OmNvcmU6OmNtcDo6bWluKHNyYy5sZW4oKSwgZHN0Lmxlbigp KTsKKyAgICAgbGV0IG11dCBvZmZzZXQgPSAwOworKyAgICAvLyBTYWZldHk6IFRoaXMgY2hlY2sg ZW5zdXJlcyB3ZSBhcmUgYWJsZSB0byByZWFkL3dyaXRlIGF0IGxlYXN0IFNJTURfU1RSSURFX1NJ WkUgZWxlbWVudHMKKyAgICAgaWYgU0lNRF9TVFJJREVfU0laRSA8PSBsZW4geworICAgICAgICAg bGV0IGxlbl9taW51c19zdHJpZGUgPSBsZW4gLSBTSU1EX1NUUklERV9TSVpFOworICAgICAgICAg bG9vcCB7CisgICAgICAgICAgICAgbGV0IG11dCBmaXJzdCA9IHNyYy5zaW1kX2F0KG9mZnNldCk7 CisgICAgICAgICAgICAgbGV0IG11dCBzZWNvbmQgPSBzcmMuc2ltZF9hdChvZmZzZXQgKyAoU0lN RF9TVFJJREVfU0laRSAvIDIpKTsKKyAgICAgICAgICAgICBpZiBFOjpPUFBPU0lURV9FTkRJQU4g eworICAgICAgICAgICAgICAgICBmaXJzdCA9IHNpbWRfYnl0ZV9zd2FwKGZpcnN0KTsKKyAgICAg ICAgICAgICAgICAgc2Vjb25kID0gc2ltZF9ieXRlX3N3YXAoc2Vjb25kKTsKKyAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgaWYgIXNpbWRfaXNfYmFzaWNfbGF0aW4oZmlyc3QgfCBzZWNvbmQp IHsKKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAg IGxldCBwYWNrZWQgPSBzaW1kX3BhY2soZmlyc3QsIHNlY29uZCk7CisrICAgICAgICAgICAgLy8g U2FmZXR5OiBXZSBhcmUgYWJsZSB0byB3cml0ZSBTSU1EX1NUUklERV9TSVpFIGVsZW1lbnRzIGlu IHRoaXMgaXRlcmF0aW9uCisgICAgICAgICAgICAgdW5zYWZlIHsKKyAgICAgICAgICAgICAgICAg c3RvcmUxNl91bmFsaWduZWQoZHN0LmFzX211dF9wdHIoKS5hZGQob2Zmc2V0KSwgcGFja2VkKTsK KyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgb2Zmc2V0ICs9IFNJTURfU1RSSURFX1NJWkU7 CisrICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIGBvZmZzZXQgPiBsZW4gLSBTSU1EX1NU UklERV9TSVpFYCwgd2hpY2ggZW5zdXJlcyB0aGF0IHdlIGNhbiB3cml0ZSBhdCBsZWFzdCBTSU1E X1NUUklERV9TSVpFIGVsZW1lbnRzCisrICAgICAgICAgICAgLy8gaW4gdGhlIG5leHQgaXRlcmF0 aW9uCisgICAgICAgICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVzX3N0cmlkZSB7CisgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorICAg ICBjb3B5X3VuYWxpZ25lZF9iYXNpY19sYXRpbl90b19hc2NpaV9hbHU6OjxFPihzcmMudGFpbChv ZmZzZXQpLCAmbXV0IGRzdFtvZmZzZXQuLl0sIG9mZnNldCkKKyB9CisgCitAQCAtNjMyLDk0ICs2 NTIsMTA2IEBAIGltcGw8J2E+IFV0ZjE2RGVzdGluYXRpb248J2E+IHsKKyAgICAgI1tpbmxpbmUo YWx3YXlzKV0KKyAgICAgZm4gd3JpdGVfYXN0cmFsKCZtdXQgc2VsZiwgYXN0cmFsOiB1MzIpIHsK KyAgICAgICAgIGRlYnVnX2Fzc2VydCEoYXN0cmFsID4gMHhGRkZGKTsKKyAgICAgICAgIGRlYnVn X2Fzc2VydCEoYXN0cmFsIDw9IDB4MTBfRkZGRik7CisgICAgICAgICBzZWxmLndyaXRlX2NvZGVf dW5pdCgoMHhEN0MwICsgKGFzdHJhbCA+PiAxMCkpIGFzIHUxNik7CisgICAgICAgICBzZWxmLndy aXRlX2NvZGVfdW5pdCgoMHhEQzAwICsgKGFzdHJhbCAmIDB4M0ZGKSkgYXMgdTE2KTsKKyAgICAg fQorICAgICAjW2lubGluZShhbHdheXMpXQorLSAgICBwdWIgZm4gd3JpdGVfc3Vycm9nYXRlX3Bh aXIoJm11dCBzZWxmLCBoaWdoOiB1MTYsIGxvdzogdTE2KSB7CisrICAgIGZuIHdyaXRlX3N1cnJv Z2F0ZV9wYWlyKCZtdXQgc2VsZiwgaGlnaDogdTE2LCBsb3c6IHUxNikgeworICAgICAgICAgc2Vs Zi53cml0ZV9jb2RlX3VuaXQoaGlnaCk7CisgICAgICAgICBzZWxmLndyaXRlX2NvZGVfdW5pdChs b3cpOworICAgICB9CisgICAgICNbaW5saW5lKGFsd2F5cyldCisgICAgIGZuIHdyaXRlX2JpZzVf Y29tYmluYXRpb24oJm11dCBzZWxmLCBjb21iaW5lZDogdTE2LCBjb21iaW5pbmc6IHUxNikgewor ICAgICAgICAgc2VsZi53cml0ZV9ibXBfZXhjbF9hc2NpaShjb21iaW5lZCk7CisgICAgICAgICBz ZWxmLndyaXRlX2JtcF9leGNsX2FzY2lpKGNvbWJpbmluZyk7CisgICAgIH0KKysgICAgLy8gU2Fm ZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IENvcHlBc2NpaVJlc3VsdDo6R29PbiB3aWxsIG9ubHkgY29u dGFpbiBieXRlcyA+PTB4ODAKKyAgICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICAgcHViIGZuIGNv cHlfYXNjaWlfZnJvbV9jaGVja19zcGFjZV9ibXA8J2I+KAorICAgICAgICAgJidiIG11dCBzZWxm LAorICAgICAgICAgc291cmNlOiAmbXV0IEJ5dGVTb3VyY2UsCisgICAgICkgLT4gQ29weUFzY2lp UmVzdWx0PChEZWNvZGVyUmVzdWx0LCB1c2l6ZSwgdXNpemUpLCAodTgsIFV0ZjE2Qm1wSGFuZGxl PCdiLCAnYT4pPiB7CisgICAgICAgICBsZXQgbm9uX2FzY2lpX3JldCA9IHsKKyAgICAgICAgICAg ICBsZXQgc3JjX3JlbWFpbmluZyA9ICZzb3VyY2Uuc2xpY2Vbc291cmNlLnBvcy4uXTsKKyAgICAg ICAgICAgICBsZXQgZHN0X3JlbWFpbmluZyA9ICZtdXQgc2VsZi5zbGljZVtzZWxmLnBvcy4uXTsK KyAgICAgICAgICAgICBsZXQgKHBlbmRpbmcsIGxlbmd0aCkgPSBpZiBkc3RfcmVtYWluaW5nLmxl bigpIDwgc3JjX3JlbWFpbmluZy5sZW4oKSB7CisgICAgICAgICAgICAgICAgIChEZWNvZGVyUmVz dWx0OjpPdXRwdXRGdWxsLCBkc3RfcmVtYWluaW5nLmxlbigpKQorICAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgIChEZWNvZGVyUmVzdWx0OjpJbnB1dEVtcHR5LCBzcmNfcmVt YWluaW5nLmxlbigpKQorICAgICAgICAgICAgIH07CisrICAgICAgICAgICAgLy8gU2FmZXR5OiBU aGlzIGZ1bmN0aW9uIGlzIGRvY3VtZW50ZWQgYXMgbmVlZGluZyB2YWxpZCBwb2ludGVycyBmb3Ig c3JjL2Rlc3QgYW5kIGxlbiwgd2hpY2gKKysgICAgICAgICAgICAvLyBpcyB0cnVlIHNpbmNlIHdl J3ZlIHBhc3NlZCB0aGUgbWludW11bSBsZW5ndGggb2YgdGhlIHR3bworICAgICAgICAgICAgIG1h dGNoIHVuc2FmZSB7CisgICAgICAgICAgICAgICAgIGFzY2lpX3RvX2Jhc2ljX2xhdGluKHNyY19y ZW1haW5pbmcuYXNfcHRyKCksIGRzdF9yZW1haW5pbmcuYXNfbXV0X3B0cigpLCBsZW5ndGgpCisg ICAgICAgICAgICAgfSB7CisgICAgICAgICAgICAgICAgIE5vbmUgPT4geworICAgICAgICAgICAg ICAgICAgICAgc291cmNlLnBvcyArPSBsZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICBzZWxm LnBvcyArPSBsZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ29weUFzY2lpUmVz dWx0OjpTdG9wKChwZW5kaW5nLCBzb3VyY2UucG9zLCBzZWxmLnBvcykpOworICAgICAgICAgICAg ICAgICB9CisrICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogdGhlIGZ1bmN0aW9uIGlzIGRvY3Vt ZW50ZWQgYXMgcmV0dXJuaW5nIGJ5dGVzID49MHg4MCBpbiB0aGUgU29tZQorICAgICAgICAgICAg ICAgICBTb21lKChub25fYXNjaWksIGNvbnN1bWVkKSkgPT4geworICAgICAgICAgICAgICAgICAg ICAgc291cmNlLnBvcyArPSBjb25zdW1lZDsKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYucG9z ICs9IGNvbnN1bWVkOworICAgICAgICAgICAgICAgICAgICAgc291cmNlLnBvcyArPSAxOyAvLyAr MSBmb3Igbm9uX2FzY2lpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IFNhZmV0eTogbm9uLWFzY2lpIGJ1YmJsZWQgb3V0IGhlcmUKKyAgICAgICAgICAgICAgICAgICAg IG5vbl9hc2NpaQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAg fTsKKysgICAgICAgIC8vIFNhZmV0eTogbm9uLWFzY2lpIHJldHVybmVkIGhlcmUKKyAgICAgICAg IENvcHlBc2NpaVJlc3VsdDo6R29Pbigobm9uX2FzY2lpX3JldCwgVXRmMTZCbXBIYW5kbGU6Om5l dyhzZWxmKSkpCisgICAgIH0KKysgICAgLy8gU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IENvcHlB c2NpaVJlc3VsdDo6R29PbiB3aWxsIG9ubHkgY29udGFpbiBieXRlcyA+PTB4ODAKKyAgICAgI1tp bmxpbmUoYWx3YXlzKV0KKyAgICAgcHViIGZuIGNvcHlfYXNjaWlfZnJvbV9jaGVja19zcGFjZV9h c3RyYWw8J2I+KAorICAgICAgICAgJidiIG11dCBzZWxmLAorICAgICAgICAgc291cmNlOiAmbXV0 IEJ5dGVTb3VyY2UsCisgICAgICkgLT4gQ29weUFzY2lpUmVzdWx0PChEZWNvZGVyUmVzdWx0LCB1 c2l6ZSwgdXNpemUpLCAodTgsIFV0ZjE2QXN0cmFsSGFuZGxlPCdiLCAnYT4pPiB7CisgICAgICAg ICBsZXQgbm9uX2FzY2lpX3JldCA9IHsKKyAgICAgICAgICAgICBsZXQgZHN0X2xlbiA9IHNlbGYu c2xpY2UubGVuKCk7CisgICAgICAgICAgICAgbGV0IHNyY19yZW1haW5pbmcgPSAmc291cmNlLnNs aWNlW3NvdXJjZS5wb3MuLl07CisgICAgICAgICAgICAgbGV0IGRzdF9yZW1haW5pbmcgPSAmbXV0 IHNlbGYuc2xpY2Vbc2VsZi5wb3MuLl07CisgICAgICAgICAgICAgbGV0IChwZW5kaW5nLCBsZW5n dGgpID0gaWYgZHN0X3JlbWFpbmluZy5sZW4oKSA8IHNyY19yZW1haW5pbmcubGVuKCkgeworICAg ICAgICAgICAgICAgICAoRGVjb2RlclJlc3VsdDo6T3V0cHV0RnVsbCwgZHN0X3JlbWFpbmluZy5s ZW4oKSkKKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAoRGVjb2RlclJl c3VsdDo6SW5wdXRFbXB0eSwgc3JjX3JlbWFpbmluZy5sZW4oKSkKKyAgICAgICAgICAgICB9Owor KyAgICAgICAgICAgIC8vIFNhZmV0eTogVGhpcyBmdW5jdGlvbiBpcyBkb2N1bWVudGVkIGFzIG5l ZWRpbmcgdmFsaWQgcG9pbnRlcnMgZm9yIHNyYy9kZXN0IGFuZCBsZW4sIHdoaWNoCisrICAgICAg ICAgICAgLy8gaXMgdHJ1ZSBzaW5jZSB3ZSd2ZSBwYXNzZWQgdGhlIG1pbnVtdW0gbGVuZ3RoIG9m IHRoZSB0d28KKyAgICAgICAgICAgICBtYXRjaCB1bnNhZmUgeworICAgICAgICAgICAgICAgICBh c2NpaV90b19iYXNpY19sYXRpbihzcmNfcmVtYWluaW5nLmFzX3B0cigpLCBkc3RfcmVtYWluaW5n LmFzX211dF9wdHIoKSwgbGVuZ3RoKQorICAgICAgICAgICAgIH0geworICAgICAgICAgICAgICAg ICBOb25lID0+IHsKKyAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5wb3MgKz0gbGVuZ3RoOwor ICAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3MgKz0gbGVuZ3RoOworICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIENvcHlBc2NpaVJlc3VsdDo6U3RvcCgocGVuZGluZywgc291cmNlLnBvcywg c2VsZi5wb3MpKTsKKyAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAvLyBTYWZl dHk6IHRoZSBmdW5jdGlvbiBpcyBkb2N1bWVudGVkIGFzIHJldHVybmluZyBieXRlcyA+PTB4ODAg aW4gdGhlIFNvbWUKKyAgICAgICAgICAgICAgICAgU29tZSgobm9uX2FzY2lpLCBjb25zdW1lZCkp ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5wb3MgKz0gY29uc3VtZWQ7CisgICAg ICAgICAgICAgICAgICAgICBzZWxmLnBvcyArPSBjb25zdW1lZDsKKyAgICAgICAgICAgICAgICAg ICAgIGlmIHNlbGYucG9zICsgMSA8IGRzdF9sZW4geworICAgICAgICAgICAgICAgICAgICAgICAg IHNvdXJjZS5wb3MgKz0gMTsgLy8gKzEgZm9yIG5vbl9hc2NpaQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBub24tYXNjaWkgYnViYmxlZCBvdXQg aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgIG5vbl9hc2NpaQorICAgICAgICAgICAgICAg ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ29weUFzY2lp UmVzdWx0OjpTdG9wKCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjb2RlclJlc3Vs dDo6T3V0cHV0RnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnBvcywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgKSk7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICB9CisgICAgICAgICB9OworKyAgICAgICAgLy8gU2FmZXR5OiBub24tYXNj aWkgcmV0dXJuZWQgaGVyZQorICAgICAgICAgQ29weUFzY2lpUmVzdWx0OjpHb09uKChub25fYXNj aWlfcmV0LCBVdGYxNkFzdHJhbEhhbmRsZTo6bmV3KHNlbGYpKSkKKyAgICAgfQorICAgICAjW2lu bGluZShhbHdheXMpXQorICAgICBwdWIgZm4gY29weV91dGY4X3VwX3RvX2ludmFsaWRfZnJvbSgm bXV0IHNlbGYsIHNvdXJjZTogJm11dCBCeXRlU291cmNlKSB7CisgICAgICAgICBsZXQgc3JjX3Jl bWFpbmluZyA9ICZzb3VyY2Uuc2xpY2Vbc291cmNlLnBvcy4uXTsKKyAgICAgICAgIGxldCBkc3Rf cmVtYWluaW5nID0gJm11dCBzZWxmLnNsaWNlW3NlbGYucG9zLi5dOworICAgICAgICAgbGV0IChy ZWFkLCB3cml0dGVuKSA9IGNvbnZlcnRfdXRmOF90b191dGYxNl91cF90b19pbnZhbGlkKHNyY19y ZW1haW5pbmcsIGRzdF9yZW1haW5pbmcpOworICAgICAgICAgc291cmNlLnBvcyArPSByZWFkOwor ZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL2xpYi5ycyBiL3Ro aXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL2xpYi5ycworLS0tIGEvdGhpcmRfcGFydHkv cnVzdC9lbmNvZGluZ19ycy9zcmMvbGliLnJzCisrKysgYi90aGlyZF9wYXJ0eS9ydXN0L2VuY29k aW5nX3JzL3NyYy9saWIucnMKK0BAIC02ODQsMzcgKzY4NCwyNiBAQAorIC8vISA8dHI+PHRkPlRJ Uy02MjA8L3RkPjx0ZD53aW5kb3dzLTg3NDwvdGQ+PC90cj4KKyAvLyEgPC90Ym9keT4KKyAvLyEg PC90YWJsZT4KKyAvLyEKKyAvLyEgU2VlIHRoZSBzZWN0aW9uIFtfVVRGLTE2TEUsIFVURi0xNkJF IGFuZCBVbmljb2RlIEVuY29kaW5nIFNjaGVtZXNfXSgjdXRmLTE2bGUtdXRmLTE2YmUtYW5kLXVu aWNvZGUtZW5jb2Rpbmctc2NoZW1lcykKKyAvLyEgZm9yIGRpc2N1c3Npb24gYWJvdXQgdGhlIFVU Ri0xNiBmYW1pbHkuCisgCisgIyFbbm9fc3RkXQorLSMhW2NmZ19hdHRyKGZlYXR1cmUgPSAic2lt ZC1hY2NlbCIsIGZlYXR1cmUoY29yZV9pbnRyaW5zaWNzKSldCisrIyFbY2ZnX2F0dHIoZmVhdHVy ZSA9ICJzaW1kLWFjY2VsIiwgZmVhdHVyZShjb3JlX2ludHJpbnNpY3MsIHBvcnRhYmxlX3NpbWQp KV0KKyAKKyAjW2NmZyhmZWF0dXJlID0gImFsbG9jIildCisgI1tjZmdfYXR0cih0ZXN0LCBtYWNy b191c2UpXQorIGV4dGVybiBjcmF0ZSBhbGxvYzsKKyAKKyBleHRlcm4gY3JhdGUgY29yZTsKKyAj W21hY3JvX3VzZV0KKyBleHRlcm4gY3JhdGUgY2ZnX2lmOworIAorLSNbY2ZnKGFsbCgKKy0gICAg ZmVhdHVyZSA9ICJzaW1kLWFjY2VsIiwKKy0gICAgYW55KAorLSAgICAgICAgdGFyZ2V0X2ZlYXR1 cmUgPSAic3NlMiIsCistICAgICAgICBhbGwodGFyZ2V0X2VuZGlhbiA9ICJsaXR0bGUiLCB0YXJn ZXRfYXJjaCA9ICJhYXJjaDY0IiksCistICAgICAgICBhbGwodGFyZ2V0X2VuZGlhbiA9ICJsaXR0 bGUiLCB0YXJnZXRfZmVhdHVyZSA9ICJuZW9uIikKKy0gICAgKQorLSkpXQorLSNbbWFjcm9fdXNl KHNodWZmbGUpXQorLWV4dGVybiBjcmF0ZSBwYWNrZWRfc2ltZDsKKy0KKyAjW2NmZyhmZWF0dXJl ID0gInNlcmRlIildCisgZXh0ZXJuIGNyYXRlIHNlcmRlOworIAorICNbY2ZnKGFsbCh0ZXN0LCBm ZWF0dXJlID0gInNlcmRlIikpXQorIGV4dGVybiBjcmF0ZSBiaW5jb2RlOworICNbY2ZnKGFsbCh0 ZXN0LCBmZWF0dXJlID0gInNlcmRlIikpXQorICNbbWFjcm9fdXNlXQorIGV4dGVybiBjcmF0ZSBz ZXJkZV9kZXJpdmU7CitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9z cmMvbWVtLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9zcmMvbWVtLnJzCistLS0g YS90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9tZW0ucnMKKysrKyBiL3RoaXJkX3Bh cnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL21lbS5ycworQEAgLTExMSwxNiArMTExLDIxIEBAIG1h Y3JvX3J1bGVzISBieV91bml0X2NoZWNrX2FsdSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVudGlsX2FsaWdubWVudCAtPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgICAgICBpZiBhY2N1ID49ICRib3VuZCB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBsZXQgbGVuX21p bnVzX3N0cmlkZSA9IGxlbiAtIEFMVV9BTElHTk1FTlQgLyB1bml0X3NpemU7CisgICAgICAgICAg ICAgICAgICAgICBpZiBvZmZzZXQgKyAoNCAqIChBTFVfQUxJR05NRU5UIC8gdW5pdF9zaXplKSkg PD0gbGVuIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHRoZSBhYm92ZSBj aGVjayBsZXRzIHVzIHBlcmZvcm0gNCBjb25zZWN1dGl2ZSByZWFkcyBvZgorKyAgICAgICAgICAg ICAgICAgICAgICAgIC8vIGxlbmd0aCBBTFVfQUxJR05NRU5UIC8gdW5pdF9zaXplLiBBTFVfQUxJ R05NRU5UIGlzIHRoZSBzaXplIG9mIHVzaXplLCBhbmQgdW5pdF9zaXplCisrICAgICAgICAgICAg ICAgICAgICAgICAgLy8gaXMgdGhlIHNpemUgb2YgdGhlIGBzcmNgIHBvaW50ZXIsIHNvIHRoaXMg aXMgZXF1YWwgdG8gcGVyZm9ybWluZyBmb3VyIHVzaXplIHJlYWRzLgorKyAgICAgICAgICAgICAg ICAgICAgICAgIC8vCisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpbnZhcmlhbnQg aXMgdXBoZWxkIG9uIGFsbCBsb29wIGl0ZXJhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAg ICBsZXQgbGVuX21pbnVzX3Vucm9sbCA9IGxlbiAtICg0ICogKEFMVV9BTElHTk1FTlQgLyB1bml0 X3NpemUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGV0IHVucm9sbF9hY2N1ID0gdW5zYWZlIHsgKihzcmMuYWRkKG9mZnNl dCkgYXMgKmNvbnN0IHVzaXplKSB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHVuc2FmZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihzcmMuYWRk KG9mZnNldCArIChBTFVfQUxJR05NRU5UIC8gdW5pdF9zaXplKSkgYXMgKmNvbnN0IHVzaXplKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCB1bnNhZmUgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICooc3JjLmFkZChvZmZzZXQgKyAoMiAqIChBTFVfQUxJR05NRU5UIC8gdW5pdF9zaXplKSkp CitAQCAtMTI5LDIyICsxMzQsMjQgQEAgbWFjcm9fcnVsZXMhIGJ5X3VuaXRfY2hlY2tfYWx1IHsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5zYWZlIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqKHNyYy5hZGQob2Zmc2V0ICsgKDMgKiAoQUxVX0FM SUdOTUVOVCAvIHVuaXRfc2l6ZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhcyAqY29uc3QgdXNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB1bnJvbGxfYWNjdSAmICRtYXNr ICE9IDAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9mZnNldCArPSA0ICogKEFMVV9BTElHTk1FTlQgLyB1bml0X3NpemUpOworKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHRoaXMgY2hlY2sgbGV0cyB1cyBjb250aW51 ZSB0byBwZXJmb3JtIHRoZSA0IHJlYWRzIGVhcmxpZXIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgb2Zmc2V0ID4gbGVuX21pbnVzX3Vucm9sbCB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgICAgIHdoaWxlIG9mZnNldCA8PSBsZW5fbWludXNfc3RyaWRlIHsKKysgICAgICAg ICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHRoZSBhYm92ZSBjaGVjayBsZXRzIHVzIHBlcmZv cm0gb25lIHVzaXplIHJlYWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgYWNjdSB8PSB1bnNh ZmUgeyAqKHNyYy5hZGQob2Zmc2V0KSBhcyAqY29uc3QgdXNpemUpIH07CisgICAgICAgICAgICAg ICAgICAgICAgICAgb2Zmc2V0ICs9IEFMVV9BTElHTk1FTlQgLyB1bml0X3NpemU7CisgICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgZm9yICZ1bml0IGluICZidWZmZXJbb2Zmc2V0Li5dIHsKKyAgICAgICAgICAgICAg ICAgYWNjdSB8PSB1bml0IGFzIHVzaXplOworICAgICAgICAgICAgIH0KK0BAIC0xODQsMTYgKzE5 MSwyMSBAQCBtYWNyb19ydWxlcyEgYnlfdW5pdF9jaGVja19zaW1kIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW50aWxfYWxpZ25tZW50IC09IDE7CisgICAgICAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFjY3UgPj0gJGJvdW5kIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg IGxldCBsZW5fbWludXNfc3RyaWRlID0gbGVuIC0gU0lNRF9TVFJJREVfU0laRSAvIHVuaXRfc2l6 ZTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIG9mZnNldCArICg0ICogKFNJTURfU1RSSURFX1NJ WkUgLyB1bml0X3NpemUpKSA8PSBsZW4geworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogdGhlIGFib3ZlIGNoZWNrIGxldHMgdXMgcGVyZm9ybSA0IGNvbnNlY3V0aXZlIHJlYWRz IG9mCisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVuZ3RoIFNJTURfU1RSSURFX1NJWkUg LyB1bml0X3NpemUuIFNJTURfU1RSSURFX1NJWkUgaXMgdGhlIHNpemUgb2YgJHNpbWRfdHksIGFu ZCB1bml0X3NpemUKKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyB0aGUgc2l6ZSBvZiB0 aGUgYHNyY2AgcG9pbnRlciwgc28gdGhpcyBpcyBlcXVhbCB0byBwZXJmb3JtaW5nIGZvdXIgJHNp bWRfdHkgcmVhZHMuCisrICAgICAgICAgICAgICAgICAgICAgICAgLy8KKysgICAgICAgICAgICAg ICAgICAgICAgICAvLyBUaGlzIGludmFyaWFudCBpcyB1cGhlbGQgb24gYWxsIGxvb3AgaXRlcmF0 aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZW5fbWludXNfdW5yb2xsID0gbGVu IC0gKDQgKiAoU0lNRF9TVFJJREVfU0laRSAvIHVuaXRfc2l6ZSkpOworICAgICAgICAgICAgICAg ICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdW5yb2xs X2FjY3UgPSB1bnNhZmUgeyAqKHNyYy5hZGQob2Zmc2V0KSBhcyAqY29uc3QgJHNpbWRfdHkpIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5zYWZlIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqKHNyYy5hZGQob2Zmc2V0ICsgKFNJTURfU1RSSURF X1NJWkUgLyB1bml0X3NpemUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhcyAqY29uc3QgJHNpbWRfdHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuc2FmZSB7CitAQCAtMjAz LDIzICsyMTUsMjUgQEAgbWFjcm9fcnVsZXMhIGJ5X3VuaXRfY2hlY2tfc2ltZCB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuc2FmZSB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKihzcmMuYWRkKG9mZnNldCArICgzICogKFNJTURfU1RSSURFX1NJ WkUgLyB1bml0X3NpemUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYXMgKmNvbnN0ICRzaW1kX3R5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgISRmdW5jKHVucm9sbF9hY2N1KSB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm c2V0ICs9IDQgKiAoU0lNRF9TVFJJREVfU0laRSAvIHVuaXRfc2l6ZSk7CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogdGhpcyBjaGVjayBsZXRzIHVzIGNvbnRpbnVlIHRv IHBlcmZvcm0gdGhlIDQgcmVhZHMgZWFybGllcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBvZmZzZXQgPiBsZW5fbWludXNfdW5yb2xsIHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICAgbGV0IG11dCBzaW1kX2FjY3UgPSAkc3BsYXQ7CisgICAgICAgICAgICAgICAgICAg ICB3aGlsZSBvZmZzZXQgPD0gbGVuX21pbnVzX3N0cmlkZSB7CisrICAgICAgICAgICAgICAgICAg ICAgICAgLy8gU2FmZXR5OiB0aGUgYWJvdmUgY2hlY2sgbGV0cyB1cyBwZXJmb3JtIG9uZSAkc2lt ZF90eSByZWFkLgorICAgICAgICAgICAgICAgICAgICAgICAgIHNpbWRfYWNjdSA9IHNpbWRfYWNj dSB8IHVuc2FmZSB7ICooc3JjLmFkZChvZmZzZXQpIGFzICpjb25zdCAkc2ltZF90eSkgfTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gU0lNRF9TVFJJREVfU0laRSAvIHVuaXRf c2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGlmICEk ZnVuYyhzaW1kX2FjY3UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICB9CitAQCAtMjI5LDE4ICsyNDMsMTggQEAgbWFjcm9fcnVsZXMhIGJ5X3VuaXRfY2hlY2tfc2lt ZCB7CisgICAgICAgICAgICAgYWNjdSA8ICRib3VuZAorICAgICAgICAgfQorICAgICB9OworIH0K KyAKKyBjZmdfaWYhIHsKKyAgICAgaWYgI1tjZmcoYWxsKGZlYXR1cmUgPSAic2ltZC1hY2NlbCIs IGFueSh0YXJnZXRfZmVhdHVyZSA9ICJzc2UyIiwgYWxsKHRhcmdldF9lbmRpYW4gPSAibGl0dGxl IiwgdGFyZ2V0X2FyY2ggPSAiYWFyY2g2NCIpLCBhbGwodGFyZ2V0X2VuZGlhbiA9ICJsaXR0bGUi LCB0YXJnZXRfZmVhdHVyZSA9ICJuZW9uIikpKSldIHsKKyAgICAgICAgIHVzZSBjcmF0ZTo6c2lt ZF9mdW5jczo6KjsKKy0gICAgICAgIHVzZSBwYWNrZWRfc2ltZDo6dTh4MTY7CistICAgICAgICB1 c2UgcGFja2VkX3NpbWQ6OnUxNng4OworKyAgICAgICAgdXNlIGNvcmU6OnNpbWQ6OnU4eDE2Owor KyAgICAgICAgdXNlIGNvcmU6OnNpbWQ6OnUxNng4OworIAorICAgICAgICAgY29uc3QgU0lNRF9B TElHTk1FTlQ6IHVzaXplID0gMTY7CisgCisgICAgICAgICBjb25zdCBTSU1EX0FMSUdOTUVOVF9N QVNLOiB1c2l6ZSA9IDE1OworIAorICAgICAgICAgYnlfdW5pdF9jaGVja19zaW1kIShpc19hc2Np aV9pbXBsLCB1OCwgdTh4MTY6OnNwbGF0KDApLCB1OHgxNiwgMHg4MCwgc2ltZF9pc19hc2NpaSk7 CisgICAgICAgICBieV91bml0X2NoZWNrX3NpbWQhKGlzX2Jhc2ljX2xhdGluX2ltcGwsIHUxNiwg dTE2eDg6OnNwbGF0KDApLCB1MTZ4OCwgMHg4MCwgc2ltZF9pc19iYXNpY19sYXRpbik7CisgICAg ICAgICBieV91bml0X2NoZWNrX3NpbWQhKGlzX3V0ZjE2X2xhdGluMV9pbXBsLCB1MTYsIHUxNng4 OjpzcGxhdCgwKSwgdTE2eDgsIDB4MTAwLCBzaW1kX2lzX2xhdGluMSk7CitkaWZmIC0tZ2l0IGEv dGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9zcmMvc2ltZF9mdW5jcy5ycyBiL3RoaXJkX3Bh cnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL3NpbWRfZnVuY3MucnMKKy0tLSBhL3RoaXJkX3BhcnR5 L3J1c3QvZW5jb2RpbmdfcnMvc3JjL3NpbWRfZnVuY3MucnMKKysrKyBiL3RoaXJkX3BhcnR5L3J1 c3QvZW5jb2RpbmdfcnMvc3JjL3NpbWRfZnVuY3MucnMKK0BAIC0yLDY1ICsyLDg0IEBACisgLy8g ZmlsZSBhdCB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4KKyAv LworIC8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgPExJ Q0VOU0UtQVBBQ0hFIG9yCisgLy8gaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF TlNFLTIuMD4gb3IgdGhlIE1JVCBsaWNlbnNlCisgLy8gPExJQ0VOU0UtTUlUIG9yIGh0dHBzOi8v b3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUPiwgYXQgeW91cgorIC8vIG9wdGlvbi4gVGhpcyBm aWxlIG1heSBub3QgYmUgY29waWVkLCBtb2RpZmllZCwgb3IgZGlzdHJpYnV0ZWQKKyAvLyBleGNl cHQgYWNjb3JkaW5nIHRvIHRob3NlIHRlcm1zLgorIAorLXVzZSBwYWNrZWRfc2ltZDo6dTE2eDg7 CistdXNlIHBhY2tlZF9zaW1kOjp1OHgxNjsKKy11c2UgcGFja2VkX3NpbWQ6OkludG9CaXRzOwor K3VzZSBhbnlfYWxsX3dvcmthcm91bmQ6OmFsbF9tYXNrMTZ4ODsKKyt1c2UgYW55X2FsbF93b3Jr YXJvdW5kOjphbGxfbWFzazh4MTY7CisrdXNlIGFueV9hbGxfd29ya2Fyb3VuZDo6YW55X21hc2sx Nng4OworK3VzZSBhbnlfYWxsX3dvcmthcm91bmQ6OmFueV9tYXNrOHgxNjsKKyt1c2UgY29yZTo6 c2ltZDo6Y21wOjpTaW1kUGFydGlhbEVxOworK3VzZSBjb3JlOjpzaW1kOjpjbXA6OlNpbWRQYXJ0 aWFsT3JkOworK3VzZSBjb3JlOjpzaW1kOjptYXNrMTZ4ODsKKyt1c2UgY29yZTo6c2ltZDo6bWFz azh4MTY7CisrdXNlIGNvcmU6OnNpbWQ6OnNpbWRfc3dpenpsZTsKKyt1c2UgY29yZTo6c2ltZDo6 dTE2eDg7CisrdXNlIGNvcmU6OnNpbWQ6OnU4eDE2OworK3VzZSBjb3JlOjpzaW1kOjpUb0J5dGVz OworIAorIC8vIFRPRE86IE1pZ3JhdGUgdW5hbGlnbmVkIGFjY2VzcyB0byBzdGRsaWIgY29kZSBp Zi93aGVuIHRoZSBSRkMKKyAvLyBodHRwczovL2dpdGh1Yi5jb20vcnVzdC1sYW5nL3JmY3MvcHVs bC8xNzI1IGlzIGltcGxlbWVudGVkLgorIAorKy8vLyBTYWZldHkgaW52YXJpYW50OiBwdHIgbXVz dCBiZSB2YWxpZCBmb3IgYW4gdW5hbGlnbmVkIHJlYWQgb2YgMTYgYnl0ZXMKKyAjW2lubGluZShh bHdheXMpXQorIHB1YiB1bnNhZmUgZm4gbG9hZDE2X3VuYWxpZ25lZChwdHI6ICpjb25zdCB1OCkg LT4gdTh4MTYgeworLSAgICBsZXQgbXV0IHNpbWQgPSA6OmNvcmU6Om1lbTo6dW5pbml0aWFsaXpl ZCgpOworLSAgICA6OmNvcmU6OnB0cjo6Y29weV9ub25vdmVybGFwcGluZyhwdHIsICZtdXQgc2lt ZCBhcyAqbXV0IHU4eDE2IGFzICptdXQgdTgsIDE2KTsKKy0gICAgc2ltZAorKyAgICBsZXQgbXV0 IHNpbWQgPSA6OmNvcmU6Om1lbTo6TWF5YmVVbmluaXQ6Ojx1OHgxNj46OnVuaW5pdCgpOworKyAg ICA6OmNvcmU6OnB0cjo6Y29weV9ub25vdmVybGFwcGluZyhwdHIsIHNpbWQuYXNfbXV0X3B0cigp IGFzICptdXQgdTgsIDE2KTsKKysgICAgLy8gU2FmZXR5OiBjb3BpZWQgMTYgYnl0ZXMgb2YgaW5p dGlhbGl6ZWQgbWVtb3J5IGludG8gdGhpcywgaXQgaXMgbm93IGluaXRpYWxpemVkCisrICAgIHNp bWQuYXNzdW1lX2luaXQoKQorIH0KKyAKKysvLy8gU2FmZXR5IGludmFyaWFudDogcHRyIG11c3Qg YmUgdmFsaWQgZm9yIGFuIGFsaWduZWQtZm9yLXU4eDE2IHJlYWQgb2YgMTYgYnl0ZXMKKyAjW2Fs bG93KGRlYWRfY29kZSldCisgI1tpbmxpbmUoYWx3YXlzKV0KKyBwdWIgdW5zYWZlIGZuIGxvYWQx Nl9hbGlnbmVkKHB0cjogKmNvbnN0IHU4KSAtPiB1OHgxNiB7CisgICAgICoocHRyIGFzICpjb25z dCB1OHgxNikKKyB9CisgCisrLy8vIFNhZmV0eSBpbnZhcmlhbnQ6IHB0ciBtdXN0IGJlIHZhbGlk IGZvciBhbiB1bmFsaWduZWQgc3RvcmUgb2YgMTYgYnl0ZXMKKyAjW2lubGluZShhbHdheXMpXQor IHB1YiB1bnNhZmUgZm4gc3RvcmUxNl91bmFsaWduZWQocHRyOiAqbXV0IHU4LCBzOiB1OHgxNikg eworICAgICA6OmNvcmU6OnB0cjo6Y29weV9ub25vdmVybGFwcGluZygmcyBhcyAqY29uc3QgdTh4 MTYgYXMgKmNvbnN0IHU4LCBwdHIsIDE2KTsKKyB9CisgCisrLy8vIFNhZmV0eSBpbnZhcmlhbnQ6 IHB0ciBtdXN0IGJlIHZhbGlkIGZvciBhbiBhbGlnbmVkLWZvci11OHgxNiBzdG9yZSBvZiAxNiBi eXRlcworICNbYWxsb3coZGVhZF9jb2RlKV0KKyAjW2lubGluZShhbHdheXMpXQorIHB1YiB1bnNh ZmUgZm4gc3RvcmUxNl9hbGlnbmVkKHB0cjogKm11dCB1OCwgczogdTh4MTYpIHsKKyAgICAgKihw dHIgYXMgKm11dCB1OHgxNikgPSBzOworIH0KKyAKKysvLy8gU2FmZXR5IGludmFyaWFudDogcHRy IG11c3QgYmUgdmFsaWQgZm9yIGFuIHVuYWxpZ25lZCByZWFkIG9mIDE2IGJ5dGVzCisgI1tpbmxp bmUoYWx3YXlzKV0KKyBwdWIgdW5zYWZlIGZuIGxvYWQ4X3VuYWxpZ25lZChwdHI6ICpjb25zdCB1 MTYpIC0+IHUxNng4IHsKKy0gICAgbGV0IG11dCBzaW1kID0gOjpjb3JlOjptZW06OnVuaW5pdGlh bGl6ZWQoKTsKKy0gICAgOjpjb3JlOjpwdHI6OmNvcHlfbm9ub3ZlcmxhcHBpbmcocHRyIGFzICpj b25zdCB1OCwgJm11dCBzaW1kIGFzICptdXQgdTE2eDggYXMgKm11dCB1OCwgMTYpOworLSAgICBz aW1kCisrICAgIGxldCBtdXQgc2ltZCA9IDo6Y29yZTo6bWVtOjpNYXliZVVuaW5pdDo6PHUxNng4 Pjo6dW5pbml0KCk7CisrICAgIDo6Y29yZTo6cHRyOjpjb3B5X25vbm92ZXJsYXBwaW5nKHB0ciBh cyAqY29uc3QgdTgsIHNpbWQuYXNfbXV0X3B0cigpIGFzICptdXQgdTgsIDE2KTsKKysgICAgLy8g U2FmZXR5OiBjb3BpZWQgMTYgYnl0ZXMgb2YgaW5pdGlhbGl6ZWQgbWVtb3J5IGludG8gdGhpcywg aXQgaXMgbm93IGluaXRpYWxpemVkCisrICAgIHNpbWQuYXNzdW1lX2luaXQoKQorIH0KKyAKKysv Ly8gU2FmZXR5IGludmFyaWFudDogcHRyIG11c3QgYmUgdmFsaWQgZm9yIGFuIGFsaWduZWQtZm9y LXUxNng4IHJlYWQgb2YgMTYgYnl0ZXMKKyAjW2FsbG93KGRlYWRfY29kZSldCisgI1tpbmxpbmUo YWx3YXlzKV0KKyBwdWIgdW5zYWZlIGZuIGxvYWQ4X2FsaWduZWQocHRyOiAqY29uc3QgdTE2KSAt PiB1MTZ4OCB7CisgICAgICoocHRyIGFzICpjb25zdCB1MTZ4OCkKKyB9CisgCisrLy8vIFNhZmV0 eSBpbnZhcmlhbnQ6IHB0ciBtdXN0IGJlIHZhbGlkIGZvciBhbiB1bmFsaWduZWQgc3RvcmUgb2Yg MTYgYnl0ZXMKKyAjW2lubGluZShhbHdheXMpXQorIHB1YiB1bnNhZmUgZm4gc3RvcmU4X3VuYWxp Z25lZChwdHI6ICptdXQgdTE2LCBzOiB1MTZ4OCkgeworICAgICA6OmNvcmU6OnB0cjo6Y29weV9u b25vdmVybGFwcGluZygmcyBhcyAqY29uc3QgdTE2eDggYXMgKmNvbnN0IHU4LCBwdHIgYXMgKm11 dCB1OCwgMTYpOworIH0KKyAKKysvLy8gU2FmZXR5IGludmFyaWFudDogcHRyIG11c3QgYmUgdmFs aWQgZm9yIGFuIGFsaWduZWQtZm9yLXUxNng4IHN0b3JlIG9mIDE2IGJ5dGVzCisgI1thbGxvdyhk ZWFkX2NvZGUpXQorICNbaW5saW5lKGFsd2F5cyldCisgcHViIHVuc2FmZSBmbiBzdG9yZThfYWxp Z25lZChwdHI6ICptdXQgdTE2LCBzOiB1MTZ4OCkgeworICAgICAqKHB0ciBhcyAqbXV0IHUxNng4 KSA9IHM7CisgfQorIAorIGNmZ19pZiEgeworICAgICBpZiAjW2NmZyhhbGwodGFyZ2V0X2ZlYXR1 cmUgPSAic3NlMiIsIHRhcmdldF9hcmNoID0gIng4Nl82NCIpKV0geworQEAgLTk1LDIzNCArMTE0 LDI0MSBAQCBjZmdfaWYhIHsKKyBwdWIgZm4gc2ltZF9ieXRlX3N3YXAoczogdTE2eDgpIC0+IHUx Nng4IHsKKyAgICAgbGV0IGxlZnQgPSBzIDw8IDg7CisgICAgIGxldCByaWdodCA9IHMgPj4gODsK KyAgICAgbGVmdCB8IHJpZ2h0CisgfQorIAorICNbaW5saW5lKGFsd2F5cyldCisgcHViIGZuIHRv X3UxNl9sYW5lcyhzOiB1OHgxNikgLT4gdTE2eDggeworLSAgICBzLmludG9fYml0cygpCisrICAg IHUxNng4Ojpmcm9tX25lX2J5dGVzKHMpCisgfQorIAorIGNmZ19pZiEgeworICAgICBpZiAjW2Nm Zyh0YXJnZXRfZmVhdHVyZSA9ICJzc2UyIildIHsKKyAKKyAgICAgICAgIC8vIEV4cG9zZSBsb3ct bGV2ZWwgbWFzayBpbnN0ZWFkIG9mIGhpZ2hlci1sZXZlbCBjb25jbHVzaW9uLAorICAgICAgICAg Ly8gYmVjYXVzZSB0aGUgbm9uLUFTQ0lJIGNhc2Ugd291bGQgcGVyZm9ybSBsZXNzIHdlbGwgb3Ro ZXJ3aXNlLgorKyAgICAgICAgLy8gU2FmZXR5LXVzYWJsZSBpbnZhcmlhbnQ6IFRoaXMgcmV0dXJu ZWQgdmFsdWUgaXMgd2hldGhlciBlYWNoIGhpZ2ggYml0IGlzIHNldAorICAgICAgICAgI1tpbmxp bmUoYWx3YXlzKV0KKyAgICAgICAgIHB1YiBmbiBtYXNrX2FzY2lpKHM6IHU4eDE2KSAtPiBpMzIg eworICAgICAgICAgICAgIHVuc2FmZSB7CistICAgICAgICAgICAgICAgIF9tbV9tb3ZlbWFza19l cGk4KHMuaW50b19iaXRzKCkpCisrICAgICAgICAgICAgICAgIF9tbV9tb3ZlbWFza19lcGk4KHMu aW50bygpKQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKyAgICAgfSBlbHNlIHsKKyAK KyAgICAgfQorIH0KKyAKKyBjZmdfaWYhIHsKKyAgICAgaWYgI1tjZmcodGFyZ2V0X2ZlYXR1cmUg PSAic3NlMiIpXSB7CisgICAgICAgICAjW2lubGluZShhbHdheXMpXQorICAgICAgICAgcHViIGZu IHNpbWRfaXNfYXNjaWkoczogdTh4MTYpIC0+IGJvb2wgeworICAgICAgICAgICAgIHVuc2FmZSB7 CistICAgICAgICAgICAgICAgIF9tbV9tb3ZlbWFza19lcGk4KHMuaW50b19iaXRzKCkpID09IDAK KysgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSBoYXZlIGNmZygpZCB0aGUgY29ycmVjdCBw bGF0Zm9ybQorKyAgICAgICAgICAgICAgICBfbW1fbW92ZW1hc2tfZXBpOChzLmludG8oKSkgPT0g MAorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIGlmICNbY2ZnKHRhcmdl dF9hcmNoID0gImFhcmNoNjQiKV17CisgICAgICAgICAjW2lubGluZShhbHdheXMpXQorICAgICAg ICAgcHViIGZuIHNpbWRfaXNfYXNjaWkoczogdTh4MTYpIC0+IGJvb2wgeworICAgICAgICAgICAg IHVuc2FmZSB7CistICAgICAgICAgICAgICAgIHZtYXh2cV91OChzLmludG9fYml0cygpKSA8IDB4 ODAKKysgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSBoYXZlIGNmZygpZCB0aGUgY29ycmVj dCBwbGF0Zm9ybQorKyAgICAgICAgICAgICAgICB2bWF4dnFfdTgocy5pbnRvKCkpIDwgMHg4MAor ICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgICNbaW5s aW5lKGFsd2F5cyldCisgICAgICAgICBwdWIgZm4gc2ltZF9pc19hc2NpaShzOiB1OHgxNikgLT4g Ym9vbCB7CisgICAgICAgICAgICAgLy8gVGhpcyBvcHRpbWl6ZXMgYmV0dGVyIG9uIEFSTSB0aGFu CisgICAgICAgICAgICAgLy8gdGhlIGx0IGZvcm11bGF0aW9uLgorICAgICAgICAgICAgIGxldCBo aWdoZXN0X2FzY2lpID0gdTh4MTY6OnNwbGF0KDB4N0YpOworLSAgICAgICAgICAgICFzLmd0KGhp Z2hlc3RfYXNjaWkpLmFueSgpCisrICAgICAgICAgICAgIWFueV9tYXNrOHgxNihzLnNpbWRfZ3Qo aGlnaGVzdF9hc2NpaSkpCisgICAgICAgICB9CisgICAgIH0KKyB9CisgCisgY2ZnX2lmISB7Cisg ICAgIGlmICNbY2ZnKHRhcmdldF9mZWF0dXJlID0gInNzZTIiKV0geworICAgICAgICAgI1tpbmxp bmUoYWx3YXlzKV0KKyAgICAgICAgIHB1YiBmbiBzaW1kX2lzX3N0cl9sYXRpbjEoczogdTh4MTYp IC0+IGJvb2wgeworICAgICAgICAgICAgIGlmIHNpbWRfaXNfYXNjaWkocykgeworICAgICAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgbGV0IGFi b3ZlX3N0cl9sYXRpbjEgPSB1OHgxNjo6c3BsYXQoMHhDNCk7CistICAgICAgICAgICAgcy5sdChh Ym92ZV9zdHJfbGF0aW4xKS5hbGwoKQorKyAgICAgICAgICAgIHMuc2ltZF9sdChhYm92ZV9zdHJf bGF0aW4xKS5hbGwoKQorICAgICAgICAgfQorICAgICB9IGVsc2UgaWYgI1tjZmcodGFyZ2V0X2Fy Y2ggPSAiYWFyY2g2NCIpXXsKKyAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICBw dWIgZm4gc2ltZF9pc19zdHJfbGF0aW4xKHM6IHU4eDE2KSAtPiBib29sIHsKKyAgICAgICAgICAg ICB1bnNhZmUgeworLSAgICAgICAgICAgICAgICB2bWF4dnFfdTgocy5pbnRvX2JpdHMoKSkgPCAw eEM0CisrICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UgaGF2ZSBjZmcoKWQgdGhlIGNvcnJl Y3QgcGxhdGZvcm0KKysgICAgICAgICAgICAgICAgdm1heHZxX3U4KHMuaW50bygpKSA8IDB4QzQK KyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICAjW2lu bGluZShhbHdheXMpXQorICAgICAgICAgcHViIGZuIHNpbWRfaXNfc3RyX2xhdGluMShzOiB1OHgx NikgLT4gYm9vbCB7CisgICAgICAgICAgICAgbGV0IGFib3ZlX3N0cl9sYXRpbjEgPSB1OHgxNjo6 c3BsYXQoMHhDNCk7CistICAgICAgICAgICAgcy5sdChhYm92ZV9zdHJfbGF0aW4xKS5hbGwoKQor KyAgICAgICAgICAgIGFsbF9tYXNrOHgxNihzLnNpbWRfbHQoYWJvdmVfc3RyX2xhdGluMSkpCisg ICAgICAgICB9CisgICAgIH0KKyB9CisgCisgY2ZnX2lmISB7CisgICAgIGlmICNbY2ZnKHRhcmdl dF9hcmNoID0gImFhcmNoNjQiKV17CisgICAgICAgICAjW2lubGluZShhbHdheXMpXQorICAgICAg ICAgcHViIGZuIHNpbWRfaXNfYmFzaWNfbGF0aW4oczogdTE2eDgpIC0+IGJvb2wgeworICAgICAg ICAgICAgIHVuc2FmZSB7CistICAgICAgICAgICAgICAgIHZtYXh2cV91MTYocy5pbnRvX2JpdHMo KSkgPCAweDgwCisrICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UgaGF2ZSBjZmcoKWQgdGhl IGNvcnJlY3QgcGxhdGZvcm0KKysgICAgICAgICAgICAgICAgdm1heHZxX3UxNihzLmludG8oKSkg PCAweDgwCisgICAgICAgICAgICAgfQorICAgICAgICAgfQorIAorICAgICAgICAgI1tpbmxpbmUo YWx3YXlzKV0KKyAgICAgICAgIHB1YiBmbiBzaW1kX2lzX2xhdGluMShzOiB1MTZ4OCkgLT4gYm9v bCB7CisgICAgICAgICAgICAgdW5zYWZlIHsKKy0gICAgICAgICAgICAgICAgdm1heHZxX3UxNihz LmludG9fYml0cygpKSA8IDB4MTAwCisrICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UgaGF2 ZSBjZmcoKWQgdGhlIGNvcnJlY3QgcGxhdGZvcm0KKysgICAgICAgICAgICAgICAgdm1heHZxX3Ux NihzLmludG8oKSkgPCAweDEwMAorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfSBl bHNlIHsKKyAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICBwdWIgZm4gc2ltZF9p c19iYXNpY19sYXRpbihzOiB1MTZ4OCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgbGV0IGFib3Zl X2FzY2lpID0gdTE2eDg6OnNwbGF0KDB4ODApOworLSAgICAgICAgICAgIHMubHQoYWJvdmVfYXNj aWkpLmFsbCgpCisrICAgICAgICAgICAgYWxsX21hc2sxNng4KHMuc2ltZF9sdChhYm92ZV9hc2Np aSkpCisgICAgICAgICB9CisgCisgICAgICAgICAjW2lubGluZShhbHdheXMpXQorICAgICAgICAg cHViIGZuIHNpbWRfaXNfbGF0aW4xKHM6IHUxNng4KSAtPiBib29sIHsKKyAgICAgICAgICAgICAv LyBGb3Igc29tZSByZWFzb24sIG9uIFNTRTIgdGhpcyBmb3JtdWxhdGlvbgorICAgICAgICAgICAg IC8vIHNlZW1zIGZhc3RlciBpbiB0aGlzIGNhc2Ugd2hpbGUgdGhlIGFib3ZlCisgICAgICAgICAg ICAgLy8gZnVuY3Rpb24gaXMgYmV0dGVyIHRoZSBvdGhlciB3YXkgcm91bmQuLi4KKyAgICAgICAg ICAgICBsZXQgaGlnaGVzdF9sYXRpbjEgPSB1MTZ4ODo6c3BsYXQoMHhGRik7CistICAgICAgICAg ICAgIXMuZ3QoaGlnaGVzdF9sYXRpbjEpLmFueSgpCisrICAgICAgICAgICAgIWFueV9tYXNrMTZ4 OChzLnNpbWRfZ3QoaGlnaGVzdF9sYXRpbjEpKQorICAgICAgICAgfQorICAgICB9CisgfQorIAor ICNbaW5saW5lKGFsd2F5cyldCisgcHViIGZuIGNvbnRhaW5zX3N1cnJvZ2F0ZXMoczogdTE2eDgp IC0+IGJvb2wgeworICAgICBsZXQgbWFzayA9IHUxNng4OjpzcGxhdCgweEY4MDApOworICAgICBs ZXQgc3Vycm9nYXRlX2JpdHMgPSB1MTZ4ODo6c3BsYXQoMHhEODAwKTsKKy0gICAgKHMgJiBtYXNr KS5lcShzdXJyb2dhdGVfYml0cykuYW55KCkKKysgICAgYW55X21hc2sxNng4KChzICYgbWFzayku c2ltZF9lcShzdXJyb2dhdGVfYml0cykpCisgfQorIAorIGNmZ19pZiEgeworICAgICBpZiAjW2Nm Zyh0YXJnZXRfYXJjaCA9ICJhYXJjaDY0IildeworICAgICAgICAgbWFjcm9fcnVsZXMhIGFhcmNo NjRfcmV0dXJuX2ZhbHNlX2lmX2JlbG93X2hlYnJldyB7CisgICAgICAgICAgICAgKCRzOmlkZW50 KSA9PiAoeworICAgICAgICAgICAgICAgICB1bnNhZmUgeworLSAgICAgICAgICAgICAgICAgICAg aWYgdm1heHZxX3UxNigkcy5pbnRvX2JpdHMoKSkgPCAweDA1OTAgeworKyAgICAgICAgICAgICAg ICAgICAgLy8gU2FmZXR5OiBXZSBoYXZlIGNmZygpZCB0aGUgY29ycmVjdCBwbGF0Zm9ybQorKyAg ICAgICAgICAgICAgICAgICAgaWYgdm1heHZxX3UxNigkcy5pbnRvKCkpIDwgMHgwNTkwIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9KQorICAgICAgICAgfQorIAor ICAgICAgICAgbWFjcm9fcnVsZXMhIG5vbl9hYXJjaDY0X3JldHVybl9mYWxzZV9pZl9hbGwgewor ICAgICAgICAgICAgICgkczppZGVudCkgPT4gKCkKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsK KyAgICAgICAgIG1hY3JvX3J1bGVzISBhYXJjaDY0X3JldHVybl9mYWxzZV9pZl9iZWxvd19oZWJy ZXcgeworICAgICAgICAgICAgICgkczppZGVudCkgPT4gKCkKKyAgICAgICAgIH0KKyAKKyAgICAg ICAgIG1hY3JvX3J1bGVzISBub25fYWFyY2g2NF9yZXR1cm5fZmFsc2VfaWZfYWxsIHsKKyAgICAg ICAgICAgICAoJHM6aWRlbnQpID0+ICh7CistICAgICAgICAgICAgICAgIGlmICRzLmFsbCgpIHsK KysgICAgICAgICAgICAgICAgaWYgYWxsX21hc2sxNng4KCRzKSB7CisgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9KQor ICAgICAgICAgfQorICAgICB9CisgfQorIAorIG1hY3JvX3J1bGVzISBpbl9yYW5nZTE2eDggewor ICAgICAoJHM6aWRlbnQsICRzdGFydDpleHByLCAkZW5kOmV4cHIpID0+IHt7CisgICAgICAgICAv LyBTSU1EIHN1YiBpcyB3cmFwcGluZworLSAgICAgICAgKCRzIC0gdTE2eDg6OnNwbGF0KCRzdGFy dCkpLmx0KHUxNng4OjpzcGxhdCgkZW5kIC0gJHN0YXJ0KSkKKysgICAgICAgICgkcyAtIHUxNng4 OjpzcGxhdCgkc3RhcnQpKS5zaW1kX2x0KHUxNng4OjpzcGxhdCgkZW5kIC0gJHN0YXJ0KSkKKyAg ICAgfX07CisgfQorIAorICNbaW5saW5lKGFsd2F5cyldCisgcHViIGZuIGlzX3UxNng4X2JpZGko czogdTE2eDgpIC0+IGJvb2wgeworICAgICAvLyBXZSB0cnkgdG8gZmlyc3QgcXVpY2tseSByZWZ1 dGUgdGhlIFJUTG5lc3Mgb2YgdGhlIHZlY3Rvci4gSWYgdGhhdAorICAgICAvLyBmYWlscywgd2Ug ZG8gdGhlIHJlYWwgUlRMIGNoZWNrLCBzbyBpbiB0aGF0IGNhc2Ugd2UgZW5kIHVwIHdhc3RpbmcK KyAgICAgLy8gdGhlIHdvcmsgZm9yIHRoZSB1cC1mcm9udCBxdWljayBjaGVja3MuIEV2ZW4gdGhl IHF1aWNrLWNoZWNrIGlzCisgICAgIC8vIHR3by1mb2xkIGluIG9yZGVyIHRvIHJldHVybiBgZmFs c2VgIEFTQVAgaWYgZXZlcnl0aGluZyBpcyBiZWxvdworICAgICAvLyBIZWJyZXcuCisgCisgICAg IGFhcmNoNjRfcmV0dXJuX2ZhbHNlX2lmX2JlbG93X2hlYnJldyEocyk7CisgCistICAgIGxldCBi ZWxvd19oZWJyZXcgPSBzLmx0KHUxNng4OjpzcGxhdCgweDA1OTApKTsKKysgICAgbGV0IGJlbG93 X2hlYnJldyA9IHMuc2ltZF9sdCh1MTZ4ODo6c3BsYXQoMHgwNTkwKSk7CisgCisgICAgIG5vbl9h YXJjaDY0X3JldHVybl9mYWxzZV9pZl9hbGwhKGJlbG93X2hlYnJldyk7CisgCistICAgIGlmIChi ZWxvd19oZWJyZXcgfCBpbl9yYW5nZTE2eDghKHMsIDB4MDkwMCwgMHgyMDBGKSB8IGluX3Jhbmdl MTZ4OCEocywgMHgyMDY4LCAweEQ4MDIpKS5hbGwoKSB7CisrICAgIGlmIGFsbF9tYXNrMTZ4OCgK KysgICAgICAgIGJlbG93X2hlYnJldyB8IGluX3JhbmdlMTZ4OCEocywgMHgwOTAwLCAweDIwMEYp IHwgaW5fcmFuZ2UxNng4IShzLCAweDIwNjgsIDB4RDgwMiksCisrICAgICkgeworICAgICAgICAg cmV0dXJuIGZhbHNlOworICAgICB9CisgCisgICAgIC8vIFF1aWNrIHJlZnV0YXRpb24gZmFpbGVk LiBMZXQncyBkbyB0aGUgZnVsbCBjaGVjay4KKyAKKy0gICAgKGluX3JhbmdlMTZ4OCEocywgMHgw NTkwLCAweDA5MDApCistICAgICAgICB8IGluX3JhbmdlMTZ4OCEocywgMHhGQjFELCAweEZFMDAp CistICAgICAgICB8IGluX3JhbmdlMTZ4OCEocywgMHhGRTcwLCAweEZFRkYpCistICAgICAgICB8 IGluX3JhbmdlMTZ4OCEocywgMHhEODAyLCAweEQ4MDQpCistICAgICAgICB8IGluX3JhbmdlMTZ4 OCEocywgMHhEODNBLCAweEQ4M0MpCistICAgICAgICB8IHMuZXEodTE2eDg6OnNwbGF0KDB4MjAw RikpCistICAgICAgICB8IHMuZXEodTE2eDg6OnNwbGF0KDB4MjAyQikpCistICAgICAgICB8IHMu ZXEodTE2eDg6OnNwbGF0KDB4MjAyRSkpCistICAgICAgICB8IHMuZXEodTE2eDg6OnNwbGF0KDB4 MjA2NykpKQorLSAgICAuYW55KCkKKysgICAgYW55X21hc2sxNng4KAorKyAgICAgICAgKGluX3Jh bmdlMTZ4OCEocywgMHgwNTkwLCAweDA5MDApCisrICAgICAgICAgICAgfCBpbl9yYW5nZTE2eDgh KHMsIDB4RkIxRCwgMHhGRTAwKQorKyAgICAgICAgICAgIHwgaW5fcmFuZ2UxNng4IShzLCAweEZF NzAsIDB4RkVGRikKKysgICAgICAgICAgICB8IGluX3JhbmdlMTZ4OCEocywgMHhEODAyLCAweEQ4 MDQpCisrICAgICAgICAgICAgfCBpbl9yYW5nZTE2eDghKHMsIDB4RDgzQSwgMHhEODNDKQorKyAg ICAgICAgICAgIHwgcy5zaW1kX2VxKHUxNng4OjpzcGxhdCgweDIwMEYpKQorKyAgICAgICAgICAg IHwgcy5zaW1kX2VxKHUxNng4OjpzcGxhdCgweDIwMkIpKQorKyAgICAgICAgICAgIHwgcy5zaW1k X2VxKHUxNng4OjpzcGxhdCgweDIwMkUpKQorKyAgICAgICAgICAgIHwgcy5zaW1kX2VxKHUxNng4 OjpzcGxhdCgweDIwNjcpKSksCisrICAgICkKKyB9CisgCisgI1tpbmxpbmUoYWx3YXlzKV0KKyBw dWIgZm4gc2ltZF91bnBhY2soczogdTh4MTYpIC0+ICh1MTZ4OCwgdTE2eDgpIHsKKy0gICAgdW5z YWZlIHsKKy0gICAgICAgIGxldCBmaXJzdDogdTh4MTYgPSBzaHVmZmxlISgKKy0gICAgICAgICAg ICBzLAorLSAgICAgICAgICAgIHU4eDE2OjpzcGxhdCgwKSwKKy0gICAgICAgICAgICBbMCwgMTYs IDEsIDE3LCAyLCAxOCwgMywgMTksIDQsIDIwLCA1LCAyMSwgNiwgMjIsIDcsIDIzXQorLSAgICAg ICAgKTsKKy0gICAgICAgIGxldCBzZWNvbmQ6IHU4eDE2ID0gc2h1ZmZsZSEoCistICAgICAgICAg ICAgcywKKy0gICAgICAgICAgICB1OHgxNjo6c3BsYXQoMCksCistICAgICAgICAgICAgWzgsIDI0 LCA5LCAyNSwgMTAsIDI2LCAxMSwgMjcsIDEyLCAyOCwgMTMsIDI5LCAxNCwgMzAsIDE1LCAzMV0K Ky0gICAgICAgICk7CistICAgICAgICAoZmlyc3QuaW50b19iaXRzKCksIHNlY29uZC5pbnRvX2Jp dHMoKSkKKy0gICAgfQorKyAgICBsZXQgZmlyc3Q6IHU4eDE2ID0gc2ltZF9zd2l6emxlISgKKysg ICAgICAgIHMsCisrICAgICAgICB1OHgxNjo6c3BsYXQoMCksCisrICAgICAgICBbMCwgMTYsIDEs IDE3LCAyLCAxOCwgMywgMTksIDQsIDIwLCA1LCAyMSwgNiwgMjIsIDcsIDIzXQorKyAgICApOwor KyAgICBsZXQgc2Vjb25kOiB1OHgxNiA9IHNpbWRfc3dpenpsZSEoCisrICAgICAgICBzLAorKyAg ICAgICAgdTh4MTY6OnNwbGF0KDApLAorKyAgICAgICAgWzgsIDI0LCA5LCAyNSwgMTAsIDI2LCAx MSwgMjcsIDEyLCAyOCwgMTMsIDI5LCAxNCwgMzAsIDE1LCAzMV0KKysgICAgKTsKKysgICAgKHUx Nng4Ojpmcm9tX25lX2J5dGVzKGZpcnN0KSwgdTE2eDg6OmZyb21fbmVfYnl0ZXMoc2Vjb25kKSkK KyB9CisgCisgY2ZnX2lmISB7CisgICAgIGlmICNbY2ZnKHRhcmdldF9mZWF0dXJlID0gInNzZTIi KV0geworICAgICAgICAgI1tpbmxpbmUoYWx3YXlzKV0KKyAgICAgICAgIHB1YiBmbiBzaW1kX3Bh Y2soYTogdTE2eDgsIGI6IHUxNng4KSAtPiB1OHgxNiB7CisgICAgICAgICAgICAgdW5zYWZlIHsK Ky0gICAgICAgICAgICAgICAgX21tX3BhY2t1c19lcGkxNihhLmludG9fYml0cygpLCBiLmludG9f Yml0cygpKS5pbnRvX2JpdHMoKQorKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFdlIGhhdmUg Y2ZnKClkIHRoZSBjb3JyZWN0IHBsYXRmb3JtCisrICAgICAgICAgICAgICAgIF9tbV9wYWNrdXNf ZXBpMTYoYS5pbnRvKCksIGIuaW50bygpKS5pbnRvKCkKKyAgICAgICAgICAgICB9CisgICAgICAg ICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICAjW2lubGluZShhbHdheXMpXQorICAgICAgICAg cHViIGZuIHNpbWRfcGFjayhhOiB1MTZ4OCwgYjogdTE2eDgpIC0+IHU4eDE2IHsKKy0gICAgICAg ICAgICB1bnNhZmUgeworLSAgICAgICAgICAgICAgICBsZXQgZmlyc3Q6IHU4eDE2ID0gYS5pbnRv X2JpdHMoKTsKKy0gICAgICAgICAgICAgICAgbGV0IHNlY29uZDogdTh4MTYgPSBiLmludG9fYml0 cygpOworLSAgICAgICAgICAgICAgICBzaHVmZmxlISgKKy0gICAgICAgICAgICAgICAgICAgIGZp cnN0LAorLSAgICAgICAgICAgICAgICAgICAgc2Vjb25kLAorLSAgICAgICAgICAgICAgICAgICAg WzAsIDIsIDQsIDYsIDgsIDEwLCAxMiwgMTQsIDE2LCAxOCwgMjAsIDIyLCAyNCwgMjYsIDI4LCAz MF0KKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICBsZXQg Zmlyc3Q6IHU4eDE2ID0gYS50b19uZV9ieXRlcygpOworKyAgICAgICAgICAgIGxldCBzZWNvbmQ6 IHU4eDE2ID0gYi50b19uZV9ieXRlcygpOworKyAgICAgICAgICAgIHNpbWRfc3dpenpsZSEoCisr ICAgICAgICAgICAgICAgIGZpcnN0LAorKyAgICAgICAgICAgICAgICBzZWNvbmQsCisrICAgICAg ICAgICAgICAgIFswLCAyLCA0LCA2LCA4LCAxMCwgMTIsIDE0LCAxNiwgMTgsIDIwLCAyMiwgMjQs IDI2LCAyOCwgMzBdCisrICAgICAgICAgICAgKQorICAgICAgICAgfQorICAgICB9CisgfQorIAor ICNbY2ZnKHRlc3QpXQorIG1vZCB0ZXN0cyB7CisgICAgIHVzZSBzdXBlcjo6KjsKKyAgICAgdXNl IGFsbG9jOjp2ZWM6OlZlYzsKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5n X3JzL3NyYy9zaW5nbGVfYnl0ZS5ycyBiL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3Jj L3NpbmdsZV9ieXRlLnJzCistLS0gYS90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy9z aW5nbGVfYnl0ZS5ycworKysrIGIvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9zcmMvc2lu Z2xlX2J5dGUucnMKK0BAIC00OCwxNiArNDgsMTkgQEAgaW1wbCBTaW5nbGVCeXRlRGVjb2RlciB7 CisgICAgICAgICAgICAgICAgIENvcHlBc2NpaVJlc3VsdDo6R29PbigobXV0IG5vbl9hc2NpaSwg bXV0IGhhbmRsZSkpID0+ICdtaWRkbGU6IGxvb3AgeworICAgICAgICAgICAgICAgICAgICAgLy8g U3RhcnQgbm9uLWJvaWxlcnBsYXRlCisgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgICAg ICAgICAgICAgICAgLy8gU2luY2UgdGhlIG5vbi1BU0NJSW5lc3Mgb2YgYG5vbl9hc2NpaWAgaXMg aGlkZGVuIGZyb20KKyAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvcHRpbWl6ZXIsIGl0IGNh bid0IGZpZ3VyZSBvdXQgdGhhdCBpdCdzIE9LIHRvCisgICAgICAgICAgICAgICAgICAgICAvLyBz dGF0aWNhbGx5IG9taXQgdGhlIGJvdW5kIGNoZWNrIHdoZW4gYWNjZXNzaW5nCisgICAgICAgICAg ICAgICAgICAgICAvLyBgW3UxNjsgMTI4XWAgd2l0aCBhbiBpbmRleAorICAgICAgICAgICAgICAg ICAgICAgLy8gYG5vbl9hc2NpaSBhcyB1c2l6ZSAtIDB4ODB1c2l6ZWAuCisrICAgICAgICAgICAg ICAgICAgICAvLworKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBgbm9uX2FzY2lpYCBp cyBhIHU4IGJ5dGUgPj0weDgwLCBmcm9tIHRoZSBpbnZhcmlhbnRzCisrICAgICAgICAgICAgICAg ICAgICAvLyBvbiBVdGY4RGVzdGluYXRpb246OmNvcHlfYXNjaWlfZnJvbV9jaGVja19zcGFjZV9i bXAoKQorICAgICAgICAgICAgICAgICAgICAgbGV0IG1hcHBlZCA9CisgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zYWZlIHsgKihzZWxmLnRhYmxlLmdldF91bmNoZWNrZWQobm9uX2FzY2lpIGFz IHVzaXplIC0gMHg4MHVzaXplKSkgfTsKKyAgICAgICAgICAgICAgICAgICAgIC8vIGxldCBtYXBw ZWQgPSBzZWxmLnRhYmxlW25vbl9hc2NpaSBhcyB1c2l6ZSAtIDB4ODB1c2l6ZV07CisgICAgICAg ICAgICAgICAgICAgICBpZiBtYXBwZWQgPT0gMHUxNiB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjb2RlclJlc3VsdDo6 TWFsZm9ybWVkKDEsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuY29u c3VtZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLndyaXR0ZW4oKSwK K0BAIC0xNDYsODIgKzE0OSwxMDMgQEAgaW1wbCBTaW5nbGVCeXRlRGVjb2RlciB7CisgICAgICAg ICBkc3Q6ICZtdXQgW3UxNl0sCisgICAgICAgICBfbGFzdDogYm9vbCwKKyAgICAgKSAtPiAoRGVj b2RlclJlc3VsdCwgdXNpemUsIHVzaXplKSB7CisgICAgICAgICBsZXQgKHBlbmRpbmcsIGxlbmd0 aCkgPSBpZiBkc3QubGVuKCkgPCBzcmMubGVuKCkgeworICAgICAgICAgICAgIChEZWNvZGVyUmVz dWx0OjpPdXRwdXRGdWxsLCBkc3QubGVuKCkpCisgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgIChEZWNvZGVyUmVzdWx0OjpJbnB1dEVtcHR5LCBzcmMubGVuKCkpCisgICAgICAgICB9Owor KyAgICAgICAgLy8gU2FmZXR5IGludmFyaWFudDogY29udmVydGVkIDw9IGxlbmd0aC4gUXVpdGUg b2Z0ZW4gd2UgaGF2ZSBgY29udmVydGVkIDwgbGVuZ3RoYAorKyAgICAgICAgLy8gd2hpY2ggd2ls bCBiZSBzZXBhcmF0ZWx5IG1hcmtlZC4KKyAgICAgICAgIGxldCBtdXQgY29udmVydGVkID0gMHVz aXplOworICAgICAgICAgJ291dGVybW9zdDogbG9vcCB7CisgICAgICAgICAgICAgbWF0Y2ggdW5z YWZlIHsKKysgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBsZW5ndGggaXMgdGhlIG1pbmltdW0g bGVuZ3RoLCBgc3JjL2RzdCArIHhgIHdpbGwgYWx3YXlzIGJlIHZhbGlkIGZvciByZWFkcy93cml0 ZXMgb2YgYGxlbiAtIHhgCisgICAgICAgICAgICAgICAgIGFzY2lpX3RvX2Jhc2ljX2xhdGluKAor ICAgICAgICAgICAgICAgICAgICAgc3JjLmFzX3B0cigpLmFkZChjb252ZXJ0ZWQpLAorICAgICAg ICAgICAgICAgICAgICAgZHN0LmFzX211dF9wdHIoKS5hZGQoY29udmVydGVkKSwKKyAgICAgICAg ICAgICAgICAgICAgIGxlbmd0aCAtIGNvbnZlcnRlZCwKKyAgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgIH0geworICAgICAgICAgICAgICAgICBOb25lID0+IHsKKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAocGVuZGluZywgbGVuZ3RoLCBsZW5ndGgpOworICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgIFNvbWUoKG11dCBub25fYXNjaWksIGNvbnN1bWVkKSkgPT4g eworKyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5IGludmFyaWFudDogYGNvbnZlcnRlZCA8 PSBsZW5ndGhgIHVwaGVsZCwgc2luY2UgdGhpcyBjYW4gb25seSBjb25zdW1lCisrICAgICAgICAg ICAgICAgICAgICAvLyB1cCB0byBgbGVuZ3RoIC0gY29udmVydGVkYCBieXRlcy4KKysgICAgICAg ICAgICAgICAgICAgIC8vCisrICAgICAgICAgICAgICAgICAgICAvLyBGdXJ0aGVybW9yZSwgaW4g dGhpcyBjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgY2FuIGFzc3VtZSBgY29u dmVydGVkIDwgbGVuZ3RoYCBzaW5jZSB0aGlzIGJyYW5jaCBpcyBvbmx5IGV2ZXIgaGl0IHdoZW4K KysgICAgICAgICAgICAgICAgICAgIC8vIGFzY2lpX3RvX2Jhc2ljX2xhdGluIGZhaWxzIHRvIGNv bnN1bWUgdGhlIGVudGlyZSBzbGljZQorICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkICs9 IGNvbnN1bWVkOworICAgICAgICAgICAgICAgICAgICAgJ21pZGRsZTogbG9vcCB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gYGNvbnZlcnRlZGAgZG9lc24ndCBjb3VudCB0aGUgcmVhZGlu ZyBvZiBgbm9uX2FzY2lpYCB5ZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ug dGhlIG5vbi1BU0NJSW5lc3Mgb2YgYG5vbl9hc2NpaWAgaXMgaGlkZGVuIGZyb20KKyAgICAgICAg ICAgICAgICAgICAgICAgICAvLyB0aGUgb3B0aW1pemVyLCBpdCBjYW4ndCBmaWd1cmUgb3V0IHRo YXQgaXQncyBPSyB0bworICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRpY2FsbHkgb21p dCB0aGUgYm91bmQgY2hlY2sgd2hlbiBhY2Nlc3NpbmcKKyAgICAgICAgICAgICAgICAgICAgICAg ICAvLyBgW3UxNjsgMTI4XWAgd2l0aCBhbiBpbmRleAorICAgICAgICAgICAgICAgICAgICAgICAg IC8vIGBub25fYXNjaWkgYXMgdXNpemUgLSAweDgwdXNpemVgLgorKyAgICAgICAgICAgICAgICAg ICAgICAgIC8vCisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBXZSBjYW4gcmVs eSBvbiBgbm9uX2FzY2lpYCBiZWluZyBiZXR3ZWVuIGAweDgwYCBhbmQgYDB4RkZgIGR1ZSB0bwor KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBpbnZhcmlhbnRzIG9mIGBhc2NpaV90b19i YXNpY19sYXRpbigpYCwgYW5kIG91ciB0YWJsZSBoYXMgZW5vdWdoIHNwYWNlIGZvciB0aGF0Lgor ICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtYXBwZWQgPQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNhZmUgeyAqKHNlbGYudGFibGUuZ2V0X3VuY2hlY2tlZChub25fYXNjaWkg YXMgdXNpemUgLSAweDgwdXNpemUpKSB9OworICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxl dCBtYXBwZWQgPSBzZWxmLnRhYmxlW25vbl9hc2NpaSBhcyB1c2l6ZSAtIDB4ODB1c2l6ZV07Cisg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgbWFwcGVkID09IDB1MTYgeworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRGVjb2RlclJlc3VsdDo6TWFsZm9ybWVkKDEsIDApLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29udmVydGVkICsgMSwgLy8gKzEgYGZvciBub25fYXNjaWlgCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2FmZSB7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBi b3VuZCBjaGVjayBoYXMgYWxyZWFkeSBiZWVuIHBlcmZvcm1lZAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBTYWZldHk6IEFzIG1lbnRpb25lZCBhYm92ZSwgYGNvbnZlcnRlZCA8IGxl bmd0aGAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihkc3QuZ2V0X3VuY2hlY2tlZF9t dXQoY29udmVydGVkKSkgPSBtYXBwZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAg ICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogYGNvbnZlcnRlZCA8PSBsZW5ndGhgIHVw aGVsZCwgc2luY2UgYGNvbnZlcnRlZCA8IGxlbmd0aGAgYmVmb3JlIHRoaXMKKyAgICAgICAgICAg ICAgICAgICAgICAgICBjb252ZXJ0ZWQgKz0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAv LyBOZXh0LCBoYW5kbGUgQVNDSUkgcHVuY3R1YXRpb24gYW5kIG5vbi1BU0NJSSB3aXRob3V0Cisg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ29pbmcgYmFjayB0byBBU0NJSSBhY2NlbGVyYXRp b24uIE5vbi1BU0NJSSBzY3JpcHRzCisgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIEFT Q0lJIHB1bmN0dWF0aW9uLCBzbyB0aGlzIGF2b2lkIGdvaW5nIHRvCisgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gYWNjZWxlcmF0aW9uIGp1c3QgZm9yIHB1bmN0dWF0aW9uL3NwYWNlIGFuZCB0 aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmFpbGluZy4gVGhpcyBpcyBhIHNpZ25p ZmljYW50IGJvb3N0IHRvIG5vbi1BU0NJSQorICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNj cmlwdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogU3BsaXQgb3V0IExhdGlu IGNvbnZlcnRlcnMgd2l0aG91dCB0aGlzIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAv LyB0aGlzIHN0dWZmIG1ha2VzIExhdGluIHNjcmlwdC1jb252ZXJzaW9uIHNsb3dlci4KKyAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBjb252ZXJ0ZWQgPT0gbGVuZ3RoIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIChwZW5kaW5nLCBsZW5ndGgsIGxlbmd0aCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0 eTogV2UgYXJlIGJhY2sgdG8gYGNvbnZlcnRlZCA8IGxlbmd0aGAgYmVjYXVzZSBvZiB0aGUgPT0g YWJvdmUKKysgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgY2FuIHBlcmZvcm0gdGhpcyBj aGVjay4KKyAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbXV0IGIgPSB1bnNhZmUgeyAqKHNy Yy5nZXRfdW5jaGVja2VkKGNvbnZlcnRlZCkpIH07CisrICAgICAgICAgICAgICAgICAgICAgICAg Ly8gU2FmZXR5OiBgY29udmVydGVkIDwgbGVuZ3RoYCBpcyB1cGhlbGQgZm9yIHRoaXMgbG9vcAor ICAgICAgICAgICAgICAgICAgICAgICAgICdpbm5lcm1vc3Q6IGxvb3AgeworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiBiID4gMTI3IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5vbl9hc2NpaSA9IGI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b250aW51ZSAnbWlkZGxlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIFRlc3Rpbmcgb24gSGFzd2VsbCBzYXlzIHRoYXQgd2Ug c2hvdWxkIHdyaXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlIHVu Y29uZGl0aW9uYWxseSBpbnN0ZWFkIG9mIHRyeWluZyB0byB1bnJlYWQgaXQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gdG8gbWFrZSBpdCBwYXJ0IG9mIHRoZSBuZXh0IFNJTUQgc3Ry aWRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNhZmUgeworKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBgY29udmVydGVkIDwgbGVuZ3RoYCBpcyB0 cnVlIGZvciB0aGlzIGxvb3AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooZHN0 LmdldF91bmNoZWNrZWRfbXV0KGNvbnZlcnRlZCkpID0gdTE2Ojpmcm9tKGIpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNh ZmV0eTogV2UgYXJlIG5vdyBhdCBgY29udmVydGVkIDw9IGxlbmd0aGAuIFdlIHNob3VsZCAqbm90 KiBgY29udGludWVgCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBsb29wIHdp dGhvdXQgcmV2ZXJpZnlpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVk ICs9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGIgPCA2MCB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBnb3QgcHVuY3R1YXRpb24KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnZlcnRlZCA9PSBsZW5ndGggeworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAocGVuZGluZywgbGVuZ3Ro LCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB3ZSdyZSBiYWNrIHRvIGBjb252ZXJ0 ZWQgPD0gbGVuZ3RoYCBiZWNhdXNlIG9mIHRoZSA9PSBhYm92ZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYiA9IHVuc2FmZSB7ICooc3JjLmdldF91bmNoZWNrZWQoY29udmVydGVk KSkgfTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogVGhlIGxv b3AgY29udGludWVzIGFzIGBjb252ZXJ0ZWQgPCBsZW5ndGhgCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZSAnaW5uZXJtb3N0OworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGdvdCBtYXJr dXAgb3IgQVNDSUkgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAn b3V0ZXJtb3N0OworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KK0BAIC0yMjksMTYgKzI1 MywxOCBAQCBpbXBsIFNpbmdsZUJ5dGVEZWNvZGVyIHsKKyAgICAgfQorIAorICAgICBwdWIgZm4g bGF0aW4xX2J5dGVfY29tcGF0aWJsZV91cF90bygmc2VsZiwgYnVmZmVyOiAmW3U4XSkgLT4gdXNp emUgeworICAgICAgICAgbGV0IG11dCBieXRlcyA9IGJ1ZmZlcjsKKyAgICAgICAgIGxldCBtdXQg dG90YWwgPSAwOworICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICAgaWYgbGV0IFNvbWUoKG5v bl9hc2NpaSwgb2Zmc2V0KSkgPSB2YWxpZGF0ZV9hc2NpaShieXRlcykgeworICAgICAgICAgICAg ICAgICB0b3RhbCArPSBvZmZzZXQ7CisrICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogV2UgY2Fu IHJlbHkgb24gYG5vbl9hc2NpaWAgYmVpbmcgYmV0d2VlbiBgMHg4MGAgYW5kIGAweEZGYCBkdWUg dG8KKysgICAgICAgICAgICAgICAgLy8gdGhlIGludmFyaWFudHMgb2YgYGFzY2lpX3RvX2Jhc2lj X2xhdGluKClgLCBhbmQgb3VyIHRhYmxlIGhhcyBlbm91Z2ggc3BhY2UgZm9yIHRoYXQuCisgICAg ICAgICAgICAgICAgIGxldCBtYXBwZWQgPSB1bnNhZmUgeyAqKHNlbGYudGFibGUuZ2V0X3VuY2hl Y2tlZChub25fYXNjaWkgYXMgdXNpemUgLSAweDgwdXNpemUpKSB9OworICAgICAgICAgICAgICAg ICBpZiBtYXBwZWQgIT0gdTE2Ojpmcm9tKG5vbl9hc2NpaSkgeworICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIHRvdGFsOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIHRv dGFsICs9IDE7CisgICAgICAgICAgICAgICAgIGJ5dGVzID0gJmJ5dGVzW29mZnNldCArIDEuLl07 CisgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsOwor QEAgLTM3OSw2NCArNDA1LDg5IEBAIGltcGwgU2luZ2xlQnl0ZUVuY29kZXIgeworICAgICAgICAg ZHN0OiAmbXV0IFt1OF0sCisgICAgICAgICBfbGFzdDogYm9vbCwKKyAgICAgKSAtPiAoRW5jb2Rl clJlc3VsdCwgdXNpemUsIHVzaXplKSB7CisgICAgICAgICBsZXQgKHBlbmRpbmcsIGxlbmd0aCkg PSBpZiBkc3QubGVuKCkgPCBzcmMubGVuKCkgeworICAgICAgICAgICAgIChFbmNvZGVyUmVzdWx0 OjpPdXRwdXRGdWxsLCBkc3QubGVuKCkpCisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg IChFbmNvZGVyUmVzdWx0OjpJbnB1dEVtcHR5LCBzcmMubGVuKCkpCisgICAgICAgICB9OworKyAg ICAgICAgLy8gU2FmZXR5IGludmFyaWFudDogY29udmVydGVkIDw9IGxlbmd0aC4gUXVpdGUgb2Z0 ZW4gd2UgaGF2ZSBgY29udmVydGVkIDwgbGVuZ3RoYAorKyAgICAgICAgLy8gd2hpY2ggd2lsbCBi ZSBzZXBhcmF0ZWx5IG1hcmtlZC4KKyAgICAgICAgIGxldCBtdXQgY29udmVydGVkID0gMHVzaXpl OworICAgICAgICAgJ291dGVybW9zdDogbG9vcCB7CisgICAgICAgICAgICAgbWF0Y2ggdW5zYWZl IHsKKysgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBsZW5ndGggaXMgdGhlIG1pbmltdW0gbGVu Z3RoLCBgc3JjL2RzdCArIHhgIHdpbGwgYWx3YXlzIGJlIHZhbGlkIGZvciByZWFkcy93cml0ZXMg b2YgYGxlbiAtIHhgCisgICAgICAgICAgICAgICAgIGJhc2ljX2xhdGluX3RvX2FzY2lpKAorICAg ICAgICAgICAgICAgICAgICAgc3JjLmFzX3B0cigpLmFkZChjb252ZXJ0ZWQpLAorICAgICAgICAg ICAgICAgICAgICAgZHN0LmFzX211dF9wdHIoKS5hZGQoY29udmVydGVkKSwKKyAgICAgICAgICAg ICAgICAgICAgIGxlbmd0aCAtIGNvbnZlcnRlZCwKKyAgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgIH0geworICAgICAgICAgICAgICAgICBOb25lID0+IHsKKyAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAocGVuZGluZywgbGVuZ3RoLCBsZW5ndGgpOworICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgIFNvbWUoKG11dCBub25fYXNjaWksIGNvbnN1bWVkKSkgPT4gewor KyAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5IGludmFyaWFudDogYGNvbnZlcnRlZCA8PSBs ZW5ndGhgIHVwaGVsZCwgc2luY2UgdGhpcyBjYW4gb25seSBjb25zdW1lCisrICAgICAgICAgICAg ICAgICAgICAvLyB1cCB0byBgbGVuZ3RoIC0gY29udmVydGVkYCBieXRlcy4KKysgICAgICAgICAg ICAgICAgICAgIC8vCisrICAgICAgICAgICAgICAgICAgICAvLyBGdXJ0aGVybW9yZSwgaW4gdGhp cyBjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgY2FuIGFzc3VtZSBgY29udmVy dGVkIDwgbGVuZ3RoYCBzaW5jZSB0aGlzIGJyYW5jaCBpcyBvbmx5IGV2ZXIgaGl0IHdoZW4KKysg ICAgICAgICAgICAgICAgICAgIC8vIGFzY2lpX3RvX2Jhc2ljX2xhdGluIGZhaWxzIHRvIGNvbnN1 bWUgdGhlIGVudGlyZSBzbGljZQorICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkICs9IGNv bnN1bWVkOworICAgICAgICAgICAgICAgICAgICAgJ21pZGRsZTogbG9vcCB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gYGNvbnZlcnRlZGAgZG9lc24ndCBjb3VudCB0aGUgcmVhZGluZyBv ZiBgbm9uX2FzY2lpYCB5ZXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2VsZi5l bmNvZGVfdTE2KG5vbl9hc2NpaSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21l KGJ5dGUpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2FmZSB7Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB3ZSdyZSBhbGxv d2VkIHRoaXMgYWNjZXNzIHNpbmNlIGBjb252ZXJ0ZWQgPCBsZW5ndGhgCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKihkc3QuZ2V0X3VuY2hlY2tlZF9tdXQoY29udmVydGVk KSkgPSBieXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkICs9IDE7CisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBgY29udmVydGVkIDw9IGxlbmd0aGAgbm93CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSA9 PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB3 ZSBuZWVkIHRvIGtub3cgaWYgd2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IGhhdmUgYSBzdXJyb2dhdGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQg aGlnaF9iaXRzID0gbm9uX2FzY2lpICYgMHhGQzAwdTE2OworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgaGlnaF9iaXRzID09IDB4RDgwMHUxNiB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gaGlnaCBzdXJyb2dhdGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBjb252ZXJ0ZWQgKyAxID09IGxlbmd0aCB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuZCBvZiBidWZmZXIuIFRoaXMg c3Vycm9nYXRlIGlzIHVucGFpcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRW5jb2RlclJlc3VsdDo6VW5tYXBwYWJsZSgnXHV7RkZGRH0nKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRlZCArIDEsIC8vICsxIGBm b3Igbm9uX2FzY2lpYAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udmVydGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IGNvbnZlcmVkIDwgbGVuZ3RoIGZyb20g b3V0c2lkZSB0aGUgbWF0Y2gsIGFuZCBgY29udmVydGVkICsgMSAhPSBsZW5ndGhgLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNvIGBjb252ZXJ0ZWQgKyAxIDwgbGVu Z3RoYCBhcyB3ZWxsLiBXZSdyZSBpbiBib3VuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsZXQgc2Vjb25kID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdTMyOjpmcm9tKHVuc2FmZSB7ICpzcmMuZ2V0X3VuY2hlY2tlZChjb252ZXJ0ZWQg KyAxKSB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWNvbmQg JiAweEZDMDB1MzIgIT0gMHhEQzAwdTMyIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVuY29kZXJSZXN1bHQ6OlVubWFwcGFibGUoJ1x1e0ZGRkR9JyksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQgKyAxLCAvLyAr MSBgZm9yIG5vbl9hc2NpaWAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnZlcnRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG5leHQgY29kZSB1bml0IGlzIGEgbG93 IHN1cnJvZ2F0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXN0 cmFsOiBjaGFyID0gdW5zYWZlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gU2FmZXR5OiBXZSBjYW4gcmVseSBvbiBub25fYXNjaWkgYmVpbmcgMHhEODAwLTB4 REJGRiBzaW5jZSB0aGUgaGlnaCBiaXRzIGFyZSAweEQ4MDAKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gVGhlbiwgKG5vbl9hc2NpaSA8PCAxMCAtIDB4RDgwMCA8 PCAxMCkgYmVjb21lcyBiZXR3ZWVuICgwIHRvIDB4M0ZGKSA8PCAxMCwgd2hpY2ggaXMgYmV0d2Vl bgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAweDQwMCB0byAw eGZmYzAwLiBBZGRpbmcgdGhlIDB4MTAwMDAgZ2l2ZXMgYSByYW5nZSBvZiAweDEwNDAwIHRvIDB4 MTBmYzAwLiBTdWJ0cmFjdGluZyB0aGUgMHhEQzAwCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIGdpdmVzIDB4MjgwMCB0byAweDEwMjAwMAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgc2Vjb25kIHRlcm0gaXMgYmV0d2Vl biAweERDMDAgYW5kIDB4REZGRiBmcm9tIHRoZSBjaGVjayBhYm92ZS4gVGhpcyBnaXZlcyBhIG1h eGltdW0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zc2li bGUgcmFuZ2Ugb2YgKDB4MTA0MDAgKyAweERDMDApIHRvICgweDEwMjAwMCArIDB4REZGRikgd2hp Y2ggaXMgMHgxRTAwMCB0byAweDEwZmZmZi4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy8gVGhpcyBpcyBpbiByYW5nZS4KKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gRnJvbSBhIFVuaWNvZGUgcHJpbmNpcGxlcyBwZXJzcGVjdGl2ZSB0aGlzIGNhbiBh bHNvIGJlIHZlcmlmaWVkIGFzIHdlIGhhdmUgY2hlY2tlZCB0aGF0IGBub25fYXNjaWlgIGlzIGEg aGlnaCBzdXJyb2dhdGUKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gKDB4RDgwMC4uPTB4REJGRiksIGFuZCB0aGF0IGBzZWNvbmRgIGlzIGEgbG93IHN1cnJvZ2F0 ZSAoYDB4REMwMC4uPTB4REZGRmApLCBhbmQgd2UgYXJlIGFwcGx5aW5nIHJldmVyc2Ugb2YgdGhl IFVUQzE2IHRyYW5zZm9ybWF0aW9uCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIGFsZ29yaXRobSA8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTE2 I0NvZGVfcG9pbnRzX2Zyb21fVSswMTAwMDBfdG9fVSsxMEZGRkY+LCBieSBhcHBseWluZyB0aGUg aGlnaCBzdXJyb2dhdGUgLSAweEQ4MDAgdG8gdGhlCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIGhpZ2ggdGVuIGJpdHMsIGFuZCB0aGUgbG93IHN1cnJvZ2F0ZSAt IDB4RGMwMCB0byB0aGUgbG93IHRlbiBiaXRzLCBhbmQgdGhlbiBhZGRpbmcgMHgxMDAwMAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmNvcmU6OmNoYXI6OmZyb21f dTMyX3VuY2hlY2tlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh1MzI6OmZyb20obm9uX2FzY2lpKSA8PCAxMCkgKyBzZWNvbmQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICgoKDB4RDgwMHUzMiA8PCAxMCkg LSAweDFfMDAwMHUzMikgKyAweERDMDB1MzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGVyUmVzdWx0OjpVbm1hcHBhYmxl KGFzdHJhbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZl cnRlZCArIDIsIC8vICsyIGBmb3Igbm9uX2FzY2lpYCBhbmQgYHNlY29uZGAKK0BAIC00NTEsNTIg KzUwMiw2MyBAQCBpbXBsIFNpbmdsZUJ5dGVFbmNvZGVyIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVuY29kZXJSZXN1bHQ6OnVubWFwcGFibGVfZnJvbV9ibXAobm9u X2FzY2lpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQg KyAxLCAvLyArMSBgZm9yIG5vbl9hc2NpaWAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb252ZXJ0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGJyYW5jaCBk aXZlcmdlcywgc28gbm8gbmVlZCB0byB1cGhvbGQgaW52YXJpYW50cyBvbiBgY29udmVydGVkYAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5leHQsIGhhbmRsZSBBU0NJSSBwdW5jdHVh dGlvbiBhbmQgbm9uLUFTQ0lJIHdpdGhvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBn b2luZyBiYWNrIHRvIEFTQ0lJIGFjY2VsZXJhdGlvbi4gTm9uLUFTQ0lJIHNjcmlwdHMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAvLyB1c2UgQVNDSUkgcHVuY3R1YXRpb24sIHNvIHRoaXMgYXZv aWQgZ29pbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY2NlbGVyYXRpb24ganVz dCBmb3IgcHVuY3R1YXRpb24vc3BhY2UgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAvLyBmYWlsaW5nLiBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgYm9vc3QgdG8gbm9uLUFTQ0lJCisg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NyaXB0cy4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBUT0RPOiBTcGxpdCBvdXQgTGF0aW4gY29udmVydGVycyB3aXRob3V0IHRoaXMgcGFy dAorICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgc3R1ZmYgbWFrZXMgTGF0aW4gc2Ny aXB0LWNvbnZlcnNpb24gc2xvd2VyLgorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnZl cnRlZCA9PSBsZW5ndGggeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHBl bmRpbmcsIGxlbmd0aCwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisrICAg ICAgICAgICAgICAgICAgICAgICAgLy8gU2FmZXR5OiB3ZSdyZSBiYWNrIHRvIGBjb252ZXJ0ZWQg PCBsZW5ndGhgIGR1ZSB0byB0aGUgPT0gYWJvdmUgYW5kIGNhbiBwZXJmb3JtCisrICAgICAgICAg ICAgICAgICAgICAgICAgLy8gdGhlIHVuY2hlY2tlZCByZWFkCisgICAgICAgICAgICAgICAgICAg ICAgICAgbGV0IG11dCB1bml0ID0gdW5zYWZlIHsgKihzcmMuZ2V0X3VuY2hlY2tlZChjb252ZXJ0 ZWQpKSB9OworICAgICAgICAgICAgICAgICAgICAgICAgICdpbm5lcm1vc3Q6IGxvb3AgeworKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZldHk6IFRoaXMgbG9vcCBhbHdheXMgYmVn aW5zIHdpdGggYGNvbnZlcnRlZCA8IGxlbmd0aGAsIHNlZQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyB0aGUgaW52YXJpYW50IG91dHNpZGUgYW5kIHRoZSBjb21tZW50IG9uIHRoZSBj b250aW51ZSBiZWxvdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB1bml0ID4gMTI3 IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbl9hc2NpaSA9IHVuaXQ7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAnbWlkZGxlOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IFRlc3Rpbmcgb24gSGFzd2VsbCBzYXlzIHRoYXQgd2Ugc2hvdWxkIHdyaXRlIHRoZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBieXRlIHVuY29uZGl0aW9uYWxseSBpbnN0ZWFkIG9m IHRyeWluZyB0byB1bnJlYWQgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8g bWFrZSBpdCBwYXJ0IG9mIHRoZSBuZXh0IFNJTUQgc3RyaWRlLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNhZmUgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g U2FmZXR5OiBDYW4gcmVseSBvbiBjb252ZXJ0ZWQgPCBsZW5ndGgKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICooZHN0LmdldF91bmNoZWNrZWRfbXV0KGNvbnZlcnRlZCkpID0gdW5p dCBhcyB1ODsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb252ZXJ0ZWQgKz0gMTsKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gYGNvbnZlcnRlZCA8PSBsZW5ndGhgIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgdW5pdCA8IDYwIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IFdlJ3ZlIGdvdCBwdW5jdHVhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgY29udmVydGVkID09IGxlbmd0aCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIChwZW5kaW5nLCBsZW5ndGgsIGxlbmd0aCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBT YWZldHk6IGBjb252ZXJ0ZWQgPCBsZW5ndGhgIGR1ZSB0byB0aGUgPT0gYWJvdmUuIFRoZSByZWFk IGlzIHNhZmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0ID0gdW5zYWZl IHsgKihzcmMuZ2V0X3VuY2hlY2tlZChjb252ZXJ0ZWQpKSB9OworKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIG9ubHkgaGFwcGVucyBpZiBgY29udmVydGVk IDwgbGVuZ3RoYCwgbWFpbnRhaW5pbmcgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlICdpbm5lcm1vc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UndmUgZ290IG1hcmt1cCBvciBBU0NJ SSB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICdvdXRlcm1vc3Q7 CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmV0eTogQWxsIG90aGVyIHJvdXRl cyB0byBoZXJlIGRpdmVyZ2Ugc28gdGhlIGNvbnRpbnVlIGlzIHRoZSBvbmx5CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIHdheSB0byBydW4gdGhlIGlubmVybW9zdCBsb29wLgorICAg ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorIH0KKyAKK2Rp ZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy94X3VzZXJfZGVmaW5l ZC5ycyBiL3RoaXJkX3BhcnR5L3J1c3QvZW5jb2RpbmdfcnMvc3JjL3hfdXNlcl9kZWZpbmVkLnJz CistLS0gYS90aGlyZF9wYXJ0eS9ydXN0L2VuY29kaW5nX3JzL3NyYy94X3VzZXJfZGVmaW5lZC5y cworKysrIGIvdGhpcmRfcGFydHkvcnVzdC9lbmNvZGluZ19ycy9zcmMveF91c2VyX2RlZmluZWQu cnMKK0BAIC05LDIyICs5LDIzIEBACisgCisgdXNlIHN1cGVyOjoqOworIHVzZSBjcmF0ZTo6aGFu ZGxlczo6KjsKKyB1c2UgY3JhdGU6OnZhcmlhbnQ6Oio7CisgCisgY2ZnX2lmISB7CisgICAgIGlm ICNbY2ZnKGZlYXR1cmUgPSAic2ltZC1hY2NlbCIpXSB7CisgICAgICAgICB1c2Ugc2ltZF9mdW5j czo6KjsKKy0gICAgICAgIHVzZSBwYWNrZWRfc2ltZDo6dTE2eDg7CisrICAgICAgICB1c2UgY29y ZTo6c2ltZDo6dTE2eDg7CisrICAgICAgICB1c2UgY29yZTo6c2ltZDo6Y21wOjpTaW1kUGFydGlh bE9yZDsKKyAKKyAgICAgICAgICNbaW5saW5lKGFsd2F5cyldCisgICAgICAgICBmbiBzaGlmdF91 cHBlcih1bnBhY2tlZDogdTE2eDgpIC0+IHUxNng4IHsKKyAgICAgICAgICAgICBsZXQgaGlnaGVz dF9hc2NpaSA9IHUxNng4OjpzcGxhdCgweDdGKTsKKy0gICAgICAgICAgICB1bnBhY2tlZCArIHVu cGFja2VkLmd0KGhpZ2hlc3RfYXNjaWkpLnNlbGVjdCh1MTZ4ODo6c3BsYXQoMHhGNzAwKSwgdTE2 eDg6OnNwbGF0KDApKSAgICAgICAgfQorKyAgICAgICAgICAgIHVucGFja2VkICsgdW5wYWNrZWQu c2ltZF9ndChoaWdoZXN0X2FzY2lpKS5zZWxlY3QodTE2eDg6OnNwbGF0KDB4RjcwMCksIHUxNng4 OjpzcGxhdCgwKSkgICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgfQorIH0KKyAKKyBwdWIg c3RydWN0IFVzZXJEZWZpbmVkRGVjb2RlcjsKKyAKKyBpbXBsIFVzZXJEZWZpbmVkRGVjb2RlciB7 CisgICAgIHB1YiBmbiBuZXcoKSAtPiBWYXJpYW50RGVjb2RlciB7CitAQCAtMTExLDIwICsxMTIs MjUgQEAgaW1wbCBVc2VyRGVmaW5lZERlY29kZXIgeworICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAoRGVjb2RlclJlc3VsdDo6SW5wdXRFbXB0eSwgc3JjLmxlbigpKQorICAgICAgICAg fTsKKyAgICAgICAgIC8vIE5vdCBib3RoZXJpbmcgd2l0aCBhbGlnbm1lbnQKKyAgICAgICAgIGxl dCB0YWlsX3N0YXJ0ID0gbGVuZ3RoICYgITB4RjsKKyAgICAgICAgIGxldCBzaW1kX2l0ZXJhdGlv bnMgPSBsZW5ndGggPj4gNDsKKyAgICAgICAgIGxldCBzcmNfcHRyID0gc3JjLmFzX3B0cigpOwor ICAgICAgICAgbGV0IGRzdF9wdHIgPSBkc3QuYXNfbXV0X3B0cigpOworKyAgICAgICAgLy8gU2Fm ZXR5OiBUaGlzIGlzIGBmb3IgaSBpbiAwLi5sZW5ndGggLyAxNmAKKyAgICAgICAgIGZvciBpIGlu IDAuLnNpbWRfaXRlcmF0aW9ucyB7CisrICAgICAgICAgICAgLy8gU2FmZXR5OiBUaGlzIGlzIGlu IGJvdW5kczogbGVuZ3RoIGlzIHRoZSBtaW51bXVtIHZhbGlkIGxlbmd0aCBmb3IgYm90aCBzcmMv ZHN0CisrICAgICAgICAgICAgLy8gYW5kIGkgcmFuZ2VzIHRvIGxlbmd0aC8xNiwgc28gbXVsdGlw bHlpbmcgYnkgMTYgd2lsbCBhbHdheXMgYmUgYDwgbGVuZ3RoYCBhbmQgY2FuIGRvCisrICAgICAg ICAgICAgLy8gYSAxNiBieXRlIHJlYWQKKyAgICAgICAgICAgICBsZXQgaW5wdXQgPSB1bnNhZmUg eyBsb2FkMTZfdW5hbGlnbmVkKHNyY19wdHIuYWRkKGkgKiAxNikpIH07CisgICAgICAgICAgICAg bGV0IChmaXJzdCwgc2Vjb25kKSA9IHNpbWRfdW5wYWNrKGlucHV0KTsKKyAgICAgICAgICAgICB1 bnNhZmUgeworKyAgICAgICAgICAgICAgICAvLyBTYWZldHk6IHNhbWUgYXMgYWJvdmUsIGJ1dCB0 aGlzIGlzIHR3byBjb25zZWN1dGl2ZSA4LWJ5dGUgcmVhZHMKKyAgICAgICAgICAgICAgICAgc3Rv cmU4X3VuYWxpZ25lZChkc3RfcHRyLmFkZChpICogMTYpLCBzaGlmdF91cHBlcihmaXJzdCkpOwor ICAgICAgICAgICAgICAgICBzdG9yZThfdW5hbGlnbmVkKGRzdF9wdHIuYWRkKChpICogMTYpICsg OCksIHNoaWZ0X3VwcGVyKHNlY29uZCkpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAg ICAgICAgIGxldCBzcmNfdGFpbCA9ICZzcmNbdGFpbF9zdGFydC4ubGVuZ3RoXTsKKyAgICAgICAg IGxldCBkc3RfdGFpbCA9ICZtdXQgZHN0W3RhaWxfc3RhcnQuLmxlbmd0aF07CisgICAgICAgICBz cmNfdGFpbAorICAgICAgICAgICAgIC5pdGVyKCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGh1bmRl cmJpcmQvcGF0Y2hlcy9ydXN0MS43OC1xY21zLXN0ZHNpbWQucGF0Y2ggYi9zcmNwa2dzL3RodW5k ZXJiaXJkL3BhdGNoZXMvcnVzdDEuNzgtcWNtcy1zdGRzaW1kLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yYzg2YWExNGEwYjkwNQotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvdGh1bmRlcmJpcmQvcGF0Y2hlcy9ydXN0MS43OC1xY21zLXN0ZHNpbWQu cGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorUmVsZXZhbnQgYnVnIHJlcG9ydDogaHR0cHM6Ly9idWd6 aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4MjI5MQorCisKK2RpZmYgLS1naXQg YS9DYXJnby5sb2NrIGIvQ2FyZ28ubG9jaworLS0tIGEvQ2FyZ28ubG9jaworKysrIGIvQ2FyZ28u bG9jaworQEAgLTQyNzQsMTAgKzQyNzQsMTEgQEAKKyBbW3BhY2thZ2VdXQorIG5hbWUgPSAicWNt cyIKKyB2ZXJzaW9uID0gIjAuMi4wIgorIGRlcGVuZGVuY2llcyA9IFsKKyAgImxpYmMiLAorKyAi dmVyc2lvbl9jaGVjayIsCisgXQorIAorIFtbcGFja2FnZV1dCisgbmFtZSA9ICJxbG9nIgorIHZl cnNpb24gPSAiMC40LjAiCitkaWZmIC0tZ2l0IGEvZ2Z4L3FjbXMvQ2FyZ28udG9tbCBiL2dmeC9x Y21zL0NhcmdvLnRvbWwKKy0tLSBhL2dmeC9xY21zL0NhcmdvLnRvbWwKKysrKyBiL2dmeC9xY21z L0NhcmdvLnRvbWwKK0BAIC0xOCw1ICsxOCw4IEBACisgaWNjdjQtZW5hYmxlZCA9IFtdCisgY215 ayA9IFtdCisgCisgW2RlcGVuZGVuY2llc10KKyBsaWJjID0ge3ZlcnNpb24gPSAiMC4yIiwgb3B0 aW9uYWwgPSB0cnVlIH0KKysKKytbYnVpbGQtZGVwZW5kZW5jaWVzXQorK3ZlcnNpb25fY2hlY2sg PSAiMC45IgorZGlmZiAtLWdpdCBhL2dmeC9xY21zL2J1aWxkLnJzIGIvZ2Z4L3FjbXMvYnVpbGQu cnMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZngvcWNtcy9i dWlsZC5ycworQEAgLTAsMCArMSw3IEBACisrZXh0ZXJuIGNyYXRlIHZlcnNpb25fY2hlY2sgYXMg cnVzdGM7CisrCisrZm4gbWFpbigpIHsKKysgICAgaWYgcnVzdGM6OmlzX21pbl92ZXJzaW9uKCIx Ljc4LjAiKS51bndyYXBfb3IoZmFsc2UpIHsKKysgICAgICAgIHByaW50bG4hKCJjYXJnbzpydXN0 Yy1jZmc9c3Rkc2ltZF9zcGxpdCIpOworKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL2dmeC9xY21z L3NyYy9saWIucnMgYi9nZngvcWNtcy9zcmMvbGliLnJzCistLS0gYS9nZngvcWNtcy9zcmMvbGli LnJzCisrKysgYi9nZngvcWNtcy9zcmMvbGliLnJzCitAQCAtNSwxMyArNSwxNSBAQAorICMhW2Fs bG93KG5vbl9jYW1lbF9jYXNlX3R5cGVzKV0KKyAjIVthbGxvdyhub25fc25ha2VfY2FzZSldCisg IyFbYWxsb3cobm9uX3VwcGVyX2Nhc2VfZ2xvYmFscyldCisgLy8gVGhlc2UgYXJlIG5lZWRlZCBm b3IgdGhlIG5lb24gU0lNRCBjb2RlIGFuZCBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoZSBNU1JWIHN1 cHBvcnRzIHRoZQorIC8vIGluc3RyaW5zaWNzIHdlIHVzZQorLSMhW2NmZ19hdHRyKGZlYXR1cmUg PSAibmVvbiIsIGZlYXR1cmUoc3Rkc2ltZCkpXQorKyMhW2NmZ19hdHRyKGFsbChzdGRzaW1kX3Nw bGl0LCB0YXJnZXRfYXJjaCA9ICJhcm0iLCBmZWF0dXJlID0gIm5lb24iKSwgZmVhdHVyZShzdGRh cmNoX2FybV9uZW9uX2ludHJpbnNpY3MpKV0KKysjIVtjZmdfYXR0cihhbGwoc3Rkc2ltZF9zcGxp dCwgdGFyZ2V0X2FyY2ggPSAiYXJtIiwgZmVhdHVyZSA9ICJuZW9uIiksIGZlYXR1cmUoc3RkYXJj aF9hcm1fZmVhdHVyZV9kZXRlY3Rpb24pKV0KKysjIVtjZmdfYXR0cihhbGwobm90KHN0ZHNpbWRf c3BsaXQpLCB0YXJnZXRfYXJjaCA9ICJhcm0iLCBmZWF0dXJlID0gIm5lb24iKSwgZmVhdHVyZShz dGRzaW1kKSldCisgIyFbY2ZnX2F0dHIoCistICAgIGZlYXR1cmUgPSAibmVvbiIsCisrICAgIGFs bCh0YXJnZXRfYXJjaCA9ICJhcm0iLCBmZWF0dXJlID0gIm5lb24iKSwKKyAgICAgZmVhdHVyZShh cm1fdGFyZ2V0X2ZlYXR1cmUsIHJhd19yZWZfb3ApCisgCisgKV0KKyAKKyAvLy8gVGhlc2UgdmFs dWVzIG1hdGNoIHRoZSBSZW5kZXJpbmcgSW50ZW50IHZhbHVlcyBmcm9tIHRoZSBJQ0Mgc3BlYwor CmRpZmYgLS1naXQgYS9zcmNwa2dzL3RodW5kZXJiaXJkL3RlbXBsYXRlIGIvc3JjcGtncy90aHVu ZGVyYmlyZC90ZW1wbGF0ZQppbmRleCBiNzM3NGMwNDU1M2RiMi4uMjNkZDFmYmY4Y2UwZGIgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvdGh1bmRlcmJpcmQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90aHVu ZGVyYmlyZC90ZW1wbGF0ZQpAQCAtMyw3ICszLDcgQEAKICMgVEhJUyBQS0cgTVVTVCBCRSBTWU5D SFJPTklaRUQgV0lUSCAic3JjcGtncy90aHVuZGVyYmlyZC1pMThuIi4KICMKIHBrZ25hbWU9dGh1 bmRlcmJpcmQKLXZlcnNpb249MTE1LjkuMAordmVyc2lvbj0xMTUuMTEuMQogcmV2aXNpb249MQog YnVpbGRfaGVscGVyPSJydXN0Igogc2hvcnRfZGVzYz0iU3RhbmRhbG9uZSBNYWlsL05ld3MgcmVh ZGVyIgpAQCAtMTEsMTEgKzExLDExIEBAIG1haW50YWluZXI9ImRhdGFDb2JyYSA8ZGF0YWNvYnJh QHRoaW5rYm90LmRlPiIKIGxpY2Vuc2U9Ik1QTC0yLjAsIEdQTC0yLjAtb3ItbGF0ZXIsIExHUEwt Mi4xLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LnRodW5kZXJiaXJkLm5ldC8iCiBk aXN0ZmlsZXM9IiR7TU9aSUxMQV9TSVRFfS90aHVuZGVyYmlyZC9yZWxlYXNlcy8ke3ZlcnNpb259 L3NvdXJjZS90aHVuZGVyYmlyZC0ke3ZlcnNpb259LnNvdXJjZS50YXIueHoiCi1jaGVja3N1bT0y YWViNzdjYTcwMzhkZjZmM2QzMDZmOWMzZDJhNGVhNjE1YWYwZWRjZjBmNzI5MDIxNWNhNWYzMGMx MjkwZTU3CitjaGVja3N1bT1lMGNlYjFiOWQzZTE5ZDVkMWZkNzQzZWI5ZTQ3Mzc1MWJmMGM2NzFj MDBlMjM0Zjk1NzM2ZjYyNDMwOWIyNmE1CiAKIGxpYjMyZGlzYWJsZWQ9eWVzCiAKLWhvc3RtYWtl ZGVwZW5kcz0iYXV0b2NvbmYgdW56aXAgemlwIHBrZy1jb25maWcgcGVybCBweXRob24zLjExIHlh c20gcnVzdCBjYXJnbworaG9zdG1ha2VkZXBlbmRzPSJhdXRvY29uZiB1bnppcCB6aXAgcGtnLWNv bmZpZyBwZXJsIHB5dGhvbjMgeWFzbSBydXN0IGNhcmdvCiAgbGx2bSBjbGFuZyBub2RlanMgY2Jp bmRnZW4gbmFzbSB3aGljaCB0YXIiCiBtYWtlZGVwZW5kcz0ibnNzLWRldmVsIGxpYmpwZWctdHVy Ym8tZGV2ZWwgZ3RrKzMtZGV2ZWwgaWN1LWRldmVsCiAgcGl4bWFuLWRldmVsIGxpYmV2ZW50LWRl dmVsIGxpYm5vdGlmeS1kZXZlbCBsaWJ2cHgtZGV2ZWwKCkZyb20gZTcwOGJhMTY4MzNhNjZhNmQ4 ODQ3NjQzNzYwOWI3Y2JmNzlmMDlkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogZGF0 YUNvYnJhIDxkYXRhY29icmFAdGhpbmtib3QuZGU+CkRhdGU6IFdlZCwgMTIgSnVuIDIwMjQgMDg6 MDQ6NDkgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvMl0gdGh1bmRlcmJpcmQtaTE4bjogdXBkYXRl IHRvIDExNS4xMS4xLgoKLS0tCiBzcmNwa2dzL3RodW5kZXJiaXJkLWkxOG4vdGVtcGxhdGUgfCAx MzQgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjcgaW5z ZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90aHVuZGVy YmlyZC1pMThuL3RlbXBsYXRlIGIvc3JjcGtncy90aHVuZGVyYmlyZC1pMThuL3RlbXBsYXRlCmlu ZGV4IGIxZTY5YmU1ZjgyZjNlLi43MzJkZWIwYTU0OTIwYyAxMDA2NDQKLS0tIGEvc3JjcGtncy90 aHVuZGVyYmlyZC1pMThuL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGh1bmRlcmJpcmQtaTE4bi90 ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3RodW5kZXJiaXJk LWkxOG4nCiBwa2duYW1lPXRodW5kZXJiaXJkLWkxOG4KLXZlcnNpb249MTE1LjkuMAordmVyc2lv bj0xMTUuMTEuMQogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWV0YQogc2hvcnRfZGVzYz0iVGh1 bmRlcmJpcmQgbGFuZ3VhZ2UgcGFja3MiCkBAIC0xMDYsNjkgKzEwNiw2OSBAQCBfcGtndG1wbCgp IHsKIAkJCXVzci9saWIvdGh1bmRlcmJpcmQvZXh0ZW5zaW9ucyBsYW5ncGFjay0ke19sYW5nfUB0 aHVuZGVyYmlyZC5tb3ppbGxhLm9yZy54cGkKIAl9CiB9Ci1jaGVja3N1bT0iZTYwNjc2YTU3MTMy OGM5NWNmODEwYzU2ZDBmMWQ4YmQwMmU1NWI1MTJkYjdiOGI1YjdiMmIyNDIwZTI4ZWU0YwotIDAw OWM4YmJkNjcwNzZkYzVkYzVjMmU2MWFiMTlmYzY1ZGI3NjNmZDFlN2JmZjBjZjExZWNhOTJkMzY5 YzRiZWMKLSA5MDkzNzRkNmM4ZDViNjIyMmJmYWNiMTA2ZjdmYWIxZmRjNTlhNWE1MDg0NDlhNGEz OTA1ZmQxYjU4MDA2YzFmCi0gOWJlZGNmOTI4YjFjNDIxMGI2MTYwYTY1ZjRhOWNhMmE4MjFmMzk4 OTNiZGE0NDMzN2IzY2Y3NTdkNDFiYmY1NgotIDFjNTljMjQ0MDQyNDQ5ZDJhMDA0YWY3N2IwODli YjNlMmE1MTlmZDhjYzg4MWJiYTlhYTQ3ZTFmYWZkZWYxMzkKLSAwM2ZlMjZmOWZlNjc4MzQwZTE2 MjNlMGYyNDk4YWZkMzg4OWU1ZjRlMmM5MmU5ZDM2YzIzNzI5NmNjZGE0NzgzCi0gNmNiNGFkMzRl OWMxMTVjYmU0ZjE5OWNiYmRiNzA3YTM2NTkwODA1YzE4YzBkZmRlY2JkZjM3YWNlZWFhZDE1MAot IDIzNDgwZWFjMTcxM2QzNWRjZTMxOWNlMTk1MTVjYTQyNWJlOTFjNGQxZTg5Mjc2YWIwNTJjMjcy NDYwY2VjYTMKLSA4MjUyYmI3NmQ5ZGM4ZWJhNTM4MTZiMjAxMzlmOTI4N2E0MmIxNmFhZjMxMzYx Y2FmNjQyNzdmMjEzNjNkNzk5Ci0gZTYwNjU1NTJlMDdkMGYzZGY1NmZlMjIxZWQwN2UwM2E3MGNi YTFiZTBlYjc2ZjIyYWU2OWMyYjhhYTFhYjY1NQotIDZlNDk1MjQxY2E3ZmNhOWYwYTk2ZDE3NzI2 Mjg4NzVlMzZhMzUyZmIyM2JmOGFmOWZjMmY0MzEyYThhZTY3MzAKLSBlNTkxNmM2MTVjZDAyYzFh M2FhNTJkMTAzZDViYTYwODZjYjA0ZGVlZTcwODMwOTJhYzQ2ZmQ4ODdlMmQwMmRiCi0gZjBjMjll YTM5NzRmODhkNjY4MjA4NzRhN2M4OGVlZjNlNTczNmY2MmY5MDFkZWFlY2RiZTVmODAwYjM2NWZi NAotIDg3YWQ0ZDgxNDZkYzY0MzdmMzRkMWQxOWM3Y2FhYTM2MjkxNjVjZWMyOTExYmYzM2E1YTE4 MmYyYzc0NWIzYTUKLSBlZjY5ZjJmZmY1YWFmMTM0NjJmNDE2ZmIyNGUxNmIwZDYwZDQyNGVmZWM2 YzY1NzY5OGZkYWFhYzhhYWVkMDYxCi0gNTEyZTZhZTkxOWMzZWU5NTRlNjRhNGJkYWY1YzQwOTQy NDI3NTRjMDFjMDQ5ZDYwNDk4M2ZlZmY2NmM1Yjg2MwotIGEzNDYyMjA3YzlkYmYxZTlhZWRiMGJk ZDhlNTk3MzRjZjliNzY5YjE2NjhlZjIzOTIzMDBhYWZiMWVmZWYzZjkKLSBmYjVmNzQ1NzBlMTIw MzAwYTJiYWE1N2M5ODdkMTMxOTI4MWI1MDBjYjZmMTQyMjQ2NTg4NDY5ZDk4ZmU2NDc1Ci0gMjY3 YTVmZDhjZGI1NjM3NDAwNzYzZjQ0NTRjOGU3ZGYwNTAxZTBiOWViZGVkZGYzNmZiNTk2MDgyMjEy ODI3NAotIDE2N2EzYWM1ZDIwMDA0NGVkNDFhOWNjOWU3M2I0NzkzNGIxMzViNjQ4MDc2MjIzZjQ2 NTY1M2I5MDdjY2Y3ZGIKLSA0NzBlNmEzYmNhZGM3MDYwZGE4NjljODM0OGFiYjM5NjAyY2QxOGJm MTkzY2U1Njk0YzhjNmU3ZDBlNjBhZGNiCi0gODgxNjIwNGFlZDUwOTJmNTJhMTU0Yzg4YzhjOGEz MGUzMWZmMDU3ZDZjODAyNTM2ZTU4NmQ1MGMzNTM2N2NjNAotIDUxYzMyNWNkMGIxOTZjNDEzYmVh ODhhOWM0MzRlNDIwMTgzMThkNDQyY2Y5ZTVlNmQyNTJiZTk4NTlmM2M0ZDkKLSA5NDkwY2FhYTRk OTQ2NzRmMzA5NGNjNzI4NjgzMTNkYWU2MmIzZTA1YmYwNjkwYzk0YjQwODY0N2YzOGNjMGZjCi0g ZjkyNDAyYTE0ZjBiZDk4N2VlNGIxNmU3YzgzNmNmOWVhM2EwNDMwMTI1NjlkNGRhNTZhOWNlOTU0 YTQ4ZTQyZQotIGFmNzI2YmI2ZWY1MmUzODNhMDE4MTYxN2ZlNjUyMTA4YzA2YjZhMzFkMDI0MzZj YmQ1ZGI1OTE2ZDM2MDBkNzUKLSBiYTFmNmNkMjA5Y2MwZjkyMWFmZDQyYWEzNmQ5ZjllMGJhNDNk YzMzOGIyZmEzOWQ5OWRiMDdlMDk3NGY0ZWQzCi0gZGYwYmMwOGQ1YzQ5MjE2YmI2N2U5YzZlNDkx YWY4MDU5NDFjYjI2OTgzMTk0OWQ3YzA0YTMxNWU4NmVjZDgwOQotIGFmZTAzNWYxMTcyYzEwNmZl MTRiODI2Njc3MDQ5MGNjZTU2NjRlZjEzYzhiZGIxYWFjZmIxZjc5ZjgyNTQ4MzQKLSA2YzMwZWVm OWM3NzA1OTJlZGIzNzgzYTFhMDEyZWJmYzEyYWU1OWY5MDc3Mjg4MmQyOTRmOWViMDY4NmYzNDg2 Ci0gOTg5MWM2OGIyYWU5YmM2ZWQ2ZmZkZmQ2NzBjYjFiZDk4N2JkNmE2OTljM2M5NDBmNGFjZDkz NjcyYmMyZGI3YQotIGZhNGYwZmY2ZDlhOTNjOTM5N2NiMmExNDdmMGZlYTVhZWYzNTVlMmQ3NzM0 NmRhYjVlODZhYmZmZTI1OWFhNDEKLSA3NTc5YTUxMWQyODM5ODYwODFkMDI3YWEzNjllNDgyOGU5 ZTliOWE1NDYxYTJiYzFmNWRhYzM3MjkxMmZmNTNhCi0gZjg3NGNhOGUzZDVjODJhNjQ4NTQ5YmE5 NmIwMmJkNWI3ZThhYzAwMDZiZTI0ZDU1MjBlYzNkN2IwYzFmNjg4MAotIGRkMGRlMWVhZTg1M2Zm ZmQwYWVlYWI3ODFkZmViOWI3YWFjZTY5ODczMDU4MmU3ZWUwNDUxNWI3NTM1OTQyYzgKLSBiYmIy YzA1OWRhMmRlMzk1NzNjNzE4NDI0ZTU1NDQ3Nzk3ODU5YjJkOTE4ZDE4YzczYjc5YzU5ZTZhYTVk MTU4Ci0gMzRjYjkxMzRjNjMyYjI0YWRhODMzOTRlYzc5ZjU1YTM0ZDI5MjRhZGM1NzYxYWViN2Rh YWJlYjNhZTIzMDA0NAotIGRjNTJiN2NlYmQwYmQ3NDhjNWE5ODMzYjdhMDViNTlkODBjMTQyMjU0 MTIxZDc1OGY0Nzk3NzMwOWI4NDVmZmUKLSAzNDBmN2VjMWNmMzY0MjFiNjU3ZDgwNmViNjU0Mzhk NmQ2OGUwZTNlNTRkNGFlYTZlZTFmMWI5M2EwNGIwYTY2Ci0gMGY3OTk4ZGNhMDM4MDkwYzcyZTBh MTlmMzRhNTIzMzY3OTZjNzlkMjJmN2Q1ZjNmNThhOTM0YzZiNDE1NjVhOAotIGUyMjI5ODAwNTMz YWRiNmM4Y2JkYzQxYzVlMTk3ODlkMDljMTdmNzRkZWY3YmM3OWI3M2NiMDkwNWI2MDk0NWEKLSBk MDdmZGIwNjU4YTcxNmZiY2Q0ZDRiODI3YTE3OWZkMTg1ODU0NzJmMmM3NjhlOWI2Y2JmMjYyNzk2 YTg5OWE4Ci0gYjQ2OWYwNWI2MmUyZTk5NDUzOGRiZWVhOGQ0M2FiYWYyZWE5MDY4N2I0Yzc1NDk5 ZDQxOTE0OGJhYjk5YzEzMQotIGJiOWYxMzJjNDEyM2FkNDNhNjhhMjExZGUyNmJjNzQ0YTllMDMw MDY3YzY5ZTI4YTI0MzNhNGVkNDA2Y2M4YzUKLSA4OGUyMWZlYzgyYWFmM2U2ZDRkMWNkN2FjNDEz Yjg3YTQxMWM1MjRhMDUyZGE3MWE4ZjY1ZDZiOGFhYmQ0M2NiCi0gN2Y3ODY3MjE4NWU3ODk2OTk2 NjI2MzQwM2VmYjczNTNlYzUzMWNkZjU1OTM4YmM5Nzc5Njc1ODI4Y2U1YTU3OQotIGMzNzZhMzYx MzQ5YmY3NWEzMGUwODE3NDIzZTQwOWE5NGVlNjgyODBhODIxN2QzMTZiZjJiZjEwYmI5ZjZjYWIK LSBhYmRmNmJkZTlhYjJiNWY0MDdkOWM4YzI2NzQ1NDkyOWFlMjUyMDI3ZTExZjhmYWU5ODY0ZmE0 M2I0NWJiZTcyCi0gYzhhOTRmOGMyMTYxMWJkMGRiNTBhNmU5NWRkODcyNzFhMDI1YjA0NjY1ZDkz MjM2ZGQ5MWJhZTQ1MjhhOTU1MgotIGJhYmU0MDkyMjRhYzE0NzM1NDQ2Yjg4MjgxZmE1Y2NhZDIx OGE4MThiZGZkMjAwZDRjZWJjOGE3Zjc1N2Y2YjEKLSA0MmRmNjczOTA4N2M2OTBjYzYxNTY5MGM1 OTA0YTIzOTM1OWM4NmUzODQ4ODgxZjY1NGE2NDQ4ZmM1MmQwZDFmCi0gMWM1Y2Y5MzZmOTNmZDBh MmZjZTg1ZjQwYzE2MzViN2U4YTMxZjY2NWViOTNiNDY2YWNlODYwOWMwYTE5MWQ1YwotIGMyNjVm ZTViZGU5MjA1NTg2YzI0NTM1M2FiYzNjNDdlYTVjNmM0N2NjMWM3MDg2NTg1ODc2YzQxYWU1YTky ZDYKLSBkMDliMDAxODdmMWIwOWRjMDE2N2Q3YmFkZjgyNWI2NWU0NWFmOWE4OGRiZTc4MjQ1Yzhi YjhmYzViODYxNzJjCi0gYjk5NGQxNzY5MjVhYzViZmYwYzQzNGY2YWQ2M2RkYzA0YTM5ZjEzM2Nl YWVmMDFiMTZhYTMwNzY4YWFhZGQ0ZAotIDgwMjhlNjViZTNiOGZhOThkODBlMmIyNTViY2E0MWVk NTY5NDRhOGFkNjk4ZTk5ZDI3MDVlNTAyODc0NmY4NTIKLSAxMjZhYTc4YWM5MjhiOTQxYjlkOGIy OTgxYzdkNmJiNmNkYmIzMDQyODUyZGE5ZWQ5YzZiZDNlM2IzZDNiMzk3Ci0gN2UwNjhjMjk4YWJh OTI5OTc5ZDNjYzA0ZDJmOWQ4ZjU1MTM0OTA1N2Q3Y2ZhMjQxNGY1ZjAyYzEzMzUzYWM5NwotIDk5 NDViNGUzMmJhMDg4YzI0MWU1OGY5YTJlYzcyZTNjZmYzOGE2ZDdkMDY1NmViZWZmY2EyMWYzYTc1 MGE1ZTYKLSA1MWRjYzVkYjcyMGM1ZTc4YmUxYzk2MzMwMmJlMGRlMDI4NGVlMTUzMWQ0ZWEyMTNl ZWY5MjdiNzBiYWFmZjM2Ci0gZTJhNDI4MWNkNTNlMmNmNDUwZjE1NDEzZmM0YmM4YTMyMDY5NTQy ZTFhMTM5ZjMyYzM3MTQwNTQwMmJmOTQyZgotIDVhOTE2ZGUzMGViMGExYzA5ZWFlYzhkMzM4MWI1 MmIwY2Y1ZmYyYWI1MTc0MzBjYTQ3YTkyOGI1YzNhMTA2MTMKLSBiMjA3NDdhYzk0YTQ1MmVkMDlh YWJkYWNkMzBjYmIxMTkyODhjZjhmYmY5ZTRkMWI0YjU5YmUxMmVhOTkwMzgyCi0gZmE5NzU2NDZh MDgzZmFiMDNhYzQyZGMyZGIzY2VjNmE0ZDdjMTk2ZjM4MjA5YWU3Njk2MmM1OTNkYTRjYTM0MAot IDI2MDhkNmIwMzAxZjQxN2U3ZTlkMThiYzQ2YzkwNWZhM2VlZjBhMjI4YmVkNTE3Yjg5YTMyNWRj ZjFiZTMzZjgKLSBjNjFiY2I1NmI2NmZmMDc2YjJlZTkyYTAzMGQ5NDlkNzQ1ZjQwNGM3YWYwYTI2 ZDQ4OWNkOGI5MDVhYjBjMTY1IgorY2hlY2tzdW09IjAwOTI0N2M2MTNlOTA5ODhmYjdiNjc2MTVj OGU5OTNjZjVlNmIzMGNiYjAzN2NlYTRmYjc1M2MyYjJlOWNkZWQKKyBkZDYzNTYzZjIxNDZlYTk0 MDU1NzZlNGFjYTE4MTRiZmExY2E2MDk4MGU0NmFlZWQ3ODY5ZjExZmFhODUyNDlhCisgYTU5Yjg0 NDllMzQzODEzN2QxMWIzZTk3ZGQwYWQxY2Y2ZWY3ZTYzODBkMjNjMjk4OTYyMTMzMjBmZTkyYTFi MAorIDhiYWM2NzgyNTU1M2ZkYjYyODdhOGQ1MTBmNDk3ZDcxMjdjNTJmMWM5NDZlMDhjNzJmOGYw MmNkZjFiNjBmM2IKKyAwMzc2YTQ3MjZjNjQwZTdjMTJiMTY2OTFjMmU5NTExMjQ0MzI1YTM5ZWVj NGZlMWI2MjY1MmU1NjYzYzg2ZWE4CisgOTVhYmQ5OTcwYWFlMGJmMWU0YWQxZGVkZjYxODJiNDVl OThhMDc0YjI3OTVkOGZkYjU2YTQ0Yjc1MGY1NjI4OQorIDZkODYxZDViZGNjZWI1YTQyMmI4MmVl OTE1M2M2YWU4OGRhNDFiNmRmNThkNGY4M2NhYmNmZmQ3ZTFiMzhmNzgKKyBkZDZjOTk3ZTM0ZjAx ZWE4NGZlMTcxYWJkNDIyOGYwZTk5ZDA2NmJlZTgzOTE1OWNiZWZmNWY5MjQ5MjY1YTcxCisgYWFl ZGRkNjQwZTViMTE4Nzc4YTYzMTM2OTdlODQxNzNiMjlmNDc0N2MxNWY4OTM2ODU5NTU4NzU1ZDBh Mjg1NgorIDYzNGY0NTkxNGJkMzMzMmE4N2I0OGQzY2QzZWE1ODE2N2UyOTlhMTZlZDVhZDNiNjRm N2M5YzBkYTE3M2NjZTQKKyAxNjliNzI1YzUxM2RlMTlmYTY2MmJhMDdmNzQyMTI2Y2Q3NGQ3ZjBh NmQzMGM4YzdiZTc4OTg3OWExNzYyMWYzCisgOTc4YjM5MWI1ZTA5MTNkMjc0MWQyMDNkMmQ2ZTEx NDZhMzMxMWI4NGUwZDY2MjM4ZjQwN2QwM2M2NzcxOThiNAorIGQyZmIxZGNjN2Y4NzAwZGJiOWZh ODFiODcwYTVkOTYwZWIzYzFmMWIyODQzZmFjYmU2YTBlZTYzYjNjYzhlMDIKKyBhOTE1MDRhMDMw ZDQxZWFkOWVjYTI1NzI4MWI5YzVkOTg2MzQ5YzIzZGZhMzliODk5NmZiYWE2ZjM2ZDcwY2M0Cisg MjI3MDIyNmRkMWQyNjA3YzIxZjhhZTcxNTliMmExM2Y4MWMyNmFmOTllOTdlNDM2NzMzNzE0ODFl OGZmOWU2MAorIDUzYjE5YTQ3ODkwYmY3MDRlZjQ1NjZhY2ZhYTJlOThjMGE2NTViYTE0NmExNzg1 ODc0MzY2MzE1NTVkNjgwOTIKKyA3YjE3MjJmODlmYzJlYjg2NmZkM2NlNjRjZjNkMDM3MTYyYTc5 NWY4YWI0ZDc1NTliYzgzZmM2Mzc3MDhkNTFiCisgMmNiNTQzNDFjNzE5NjM1ZjRlZjljMGU1MWIz YzQzZWVjMWFhNzlkMDc2ZjdkNDc2NjgzMDYyMmE2ZWMzMjIxYworIDJiMjY5MzYyOGE5ODEwNzc0 ZjkyMmQyNmNhNzBjOWE2NWJlOTNkOWJjM2M4ZGVmMDYwOTM5MmQ1NDFiMGVlYzUKKyAzYzg2NTNh NDBlZDI1ZTIxZTgxNTI0NjBmODU4OTk2NTlhYjM4MTBlYjk1N2U3NmY5OWQ0ZDBkMDY0ZmVjMWYw CisgMzU1ODVjMWI0ZmFjNjc1M2Y1OWZjY2EwODQxOTVkZjc4NjY4N2E5YTE0YzMxNGY3MjIxMjQ3 ZDA1NTdiNDg4ZgorIGI5MDlhNjgwYjZmN2ExNjYzZWY2NGI2MTBmOWUwNzcyZjgxNGVhYzI2MGMy ZmRiODRmMDFkNGJkYzc1OWY3ZDQKKyA2YzA1MWY3YTFiYTVmMWYxZDRhZTg2N2JiNTU4ZGQ4MGM1 YmNhZGI4ODUwNTE0NjMyZGY5ZjA3ODQwYTVkYzBkCisgNThkNTdjMzA4ZTIxODIzNTVmN2ViMjgz NTVhYzA4YWViZjVhNzhmZDcwMGMyZmZiODM1YmM5YTBmZmE4M2E4NAorIDY4ZGE3NzZlMDcyMGI0 MDZjZTE1M2Q0ZTk2MmZhZjI5NWE0ZTkzNGE4MzkzNWI1NWQzMjE2NDZjNDQ2MzJkYTkKKyBjYzdm Zjc4NzExNDY4MTkzNjgzYTVmMTIwYzg4MjQ5MTNkZDMwYzUzYTk4NWRiOWZjMmIwNWZlYzIyZTUz ZDc1CisgZjJiZjI3OWMyMzRjMTlhYmM2ODViM2Q2MjdiNDBiNGFkNDI0MDJhMDY3YzBhOWRiMjk2 MWNiMjhiODQxYjczMworIDM4MjRlNTc2MGZiMTE4NzRlY2QzNmViZWUzNDY5NTJmNjVjNzU1NTVm ZjY0YWNiMWRhMmJiMjQ4NmUyOGZkYTIKKyBjZWI1ODUxNTcxMzYxYThlZDc2OTU4YTEzOWJlOTNk YWZkMDlkZjIzNGMwNmQ1NTVkNTM4NGZiZjVjMjVlNmYzCisgOTIxYzdiMTcyOTMyZTY1YzdkODcx YzczMDgzNWI5NjljYzI2YzQzNjg2Y2E1YjY1MzI5NzgwNTNmMDVmZTE1ZQorIGU4YmU2NmMyNDA5 MDQxYjA4NzQwYTYyNmVmNDZlMWIxYzlmYmVmMGM3MjQwNjYxN2ExZDk1YmVhNDkxYWE1NmIKKyA4 N2NjOWI1NjM1OGYxYzg5Yzc4ZmYzNjdjYjZmZDFkNTcyMTkwMzdiN2ZjYTliOWIwMWI4ZTAzNTBl YTg0ODAwCisgMGUwZDg0ZjIxMWIyNDg4OTg1MDg0M2U2MzIwMTA2NWE2NzczNTAyMDI2Y2E4NjMz YWQ5MGQyOWRhZDRjYWJjOQorIDhmNGQyMGUxZWExOTY5N2JhN2RiNGJmODc0ZmE2ZTgzM2ZmM2Yw YmUzMmE1ODE5MGViZjBhNTdlMWJkN2E5YTUKKyAzZThjOWIzZTBlY2Q0OTIzNTUzYWE1Y2FhNjM3 YTYyZjFlNzYwOTBmNTQ2YTY4Yzk0MjFiM2FjNmUxODU2ODA2CisgMWE0NTM4Njg1MzhmNmNlMDU2 ZjRiMWI3YzBiYWFlOWNmMTU3YTg5NTQ4NjZiNThjZTRkNmU1YjM5M2JlN2VlNgorIDBmYWUxZTIw ZmI1MzJjMWY3YzU0OTM1NTU2Y2JmMGZhMTNiZTk4ODgxNTg4YmJiZDBkZmNlM2JjMDVkMDFhZjcK KyA2MWExZjMyNDAxYmM3NzMzMTM4ZGZiMDA1ZmQyOGM3MjEyOWRiNDY3ZTc5NjEzNDhlNzliMTkx MDMxZmFjMTA5CisgOWFkNGE4ZDhlNTEwMzk2MDA4MjA3NWNkYTVhYzI4Y2JiZWU5MWFmNmZjMWU4 NzJkNWNkZWRjOGJkOTZiZDRjNworIGY0ODA3Njk0YjAyMGE4ZDhlODgwY2QyM2MxNzhhNTVlMjAw YmQ0ZDQ5NDFjMjlkNTVmMjY5MTk5YmY5ODZiMzYKKyBiZGQ4ZmMyM2Y0NWM2YjEzNjE5Nzg3OGVj OTg4NzMwNGYwNGNjYTNlOGNjZmQyNTlhYWEwZDc5NDJkOGM2OTdlCisgOGJjNmM4MDllZTU5YThk YzY2MTA0YzIyOTBlNTU2M2VmYTE2YzBiYzBiY2Y5NmIwODg4MjJlOTNjZjc1NTg4ZgorIDdkZjQ3 NGYxZGY4ZTE1NGNkMjkxNGZlYTA3ZGY4ZGExYzBiZDBlZGY3MTk5MTFlYmI3MzNiMTQyNDcxOGMx ODEKKyA1YzI1ZGM2MmZiMjRlMDg3ZjI5ZGI0NzdjYmNlNzM3ODhkNWViZjcxZWQ5YWExMTE3OWU2 YjhmYzMyY2M0YWJhCisgNDlhYWZiNmU0Nzk4OTQ4ZWVlYzA1ZDFjZmY5MjgwNzQ4NzNlYjI5YWE1 YjJhY2ZmNzZhYTQyZTRlOTY4N2RkOAorIGJhOGNjMDJmNmNiOTc4YTE1NGM4OTM1ODRkMGEwYjlk ZWUwZjIzMmNhZjViOTQ2NzVhOGU1MGIxNDUzYmEwYTYKKyBiMmJlZjRkNzJhZDFmODE4ZGRlMTUz ODNjY2FmM2M1ZTkwNmYzMzg1ZTY5MjA2MWJjM2U0YjQ2YjUwNjMyODUzCisgYzc4MjU1MTgwOWYx MGMwODMyYTQzZGUwMjA3NjIxNzQwZWY2OGQ1MzVhNzQyMzNiNWJhOTFiYjU4M2VkMGIwOAorIDI4 NjRkMGYxMWUwN2QwZjFhNWVhZTAzODE5Njk5MmMzNzJkYzBmNzU5NmM3YzFiMTczYTZkN2VjN2Q1 ZGU4MmQKKyBlOTgzMGZlNDk5MDJmZTIxMzc4NDg3ZjA2NmVmOGQzMmY1MThlZTJkNzk1YjkzZmIz MzFjNDA1NzMyMTg1YjI2CisgY2EwNWRjMTc3Nzc0NDBkODgzNzU2YTFhZTRiMzMxNDY2NjYwNTYx NGE4MWU4ZGFjNzFkZTk1ZmU5NjQxZDFmZQorIGY0MmJlNGUzNWJlY2JjMTQ2ZjM2ZTAxZWRlMjU4 NmMzNWIyNDU0ZWRlMzExMDNiNzA4ZjY1YzkwMTljYjUyODcKKyA0ODQwYWZlOTEyZWQ1NTI0YjQ4 MGZkYmJmZWFjMWU5NGFjZDU3ZWVhZjE0ODA2MTc5NGMyMWUwNDlkMDA4MDAyCisgNTViMmU3YTY1 MDViZjEwZThjYmNmMWEyMmE3MzkyODYzODVhOTJkNTViNWY0NTU0ZjNlMTY4MWNkMmVkYTI0OQor IGFhMDUyMWQyNzAxZmY1YTQ4MmJhMzYwYjViZmI5MTJmNGU3MWQ0ZTRkMzY4ZWQ4NDE2NDAzN2E4 MjcwNDY4YzYKKyAyZGY5NmFmNzliN2ZmNTY5Yjk0NjU2MDBhZWUwZTE3ODM3MzJhMzRhMjE0OWI1 NzU2ZjVjMmQ0NmZkZGJhNWJkCisgYjNjODRjNGJmNGJhMjQxNWFjOTAzNmM0Y2MxODc0YmE2ZTk3 NTgzNWNkMzRlNGJmOTFhYTk1MDA3ZmVhMWExMgorIDkwMGQ2ZDNhOTRhN2FiYzlkYWJhOTgwNDQy Zjk1ODU4ODljNzQ2N2QyMjY0MzQ2NmNlYjVlZjdiNTE4ZWI5M2IKKyBkMjdmM2VjNjVjNmRkMmUx NWQ2ZTM0NTExYzI1ZWNjMzA1ODAzNTMyZjM3ZGNhNTRlMTBjZjA5YWU2MWJlY2RkCisgMmM3NTg3 MWI1NmMxMDdlMTE3OGJjOTM0MDhkOTcwOGZjNzk1NGJjMTlmODk5NzNmOTE3MTRlZGQ1N2NhYWZk MQorIGQ3ZTZmNDFhNWJmMjc2ZWYyZjkwNmE4YjIxZmJlMDQ5ZGRlYjg2ZWJlY2U2NmJkODA0NzAz NTZiMWI3MTIxMWEKKyAyYWMxZjU0M2E3OTNkMjhkZTc3YTI1Y2FhZmRlYTU3ZGU2NGJhNTc4NGI0 NjRlMDQ3YTE0NTk2NmQzZmE2YzcxCisgNzM4NGQ0OWRjOGRmM2RlYzhjYzhiN2Y4NTY3NmU3NTFi NDk4MDcxMzBhOGFiYzNlM2YxM2I5YzU4YTg1N2NmZAorIDIxNGRjMDAyOGY2NGVkMWMyYTM2NDkz OWYwNzI5MWM4NWFmYTlmM2ExMGVjZGJmOTU0NDgzZDk1MjRjYTg5NjQKKyBhYzFiYzNlNGFkYTZh NzcwMmUzZWQyOGIwZjExNTBiMmJmYzAyYjIxMGY2MGYxZGE3NjU3OGFjYTljNGYyYTk3CisgZmMy OTRjZTkxNWEzYzZjYWRkY2RhMjQ1ODFiYmFiMTYwYzU1Y2NhNGNlYTkzNWFhYjI0YWRhNDAwYjA1 NjhlOSIK --===============1618968248656563456==--