From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 10064 invoked from network); 11 Dec 2020 16:49:10 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 11 Dec 2020 16:49:10 -0000 Content-Type: multipart/mixed; boundary="===============4109263048863030047==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_budgie-desktop=3A_update_to_10=2E5=2E2=2E?= To: ml@inbox.vuxu.org From: sgn Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Fri, 11 Dec 2020 17:49:06 +0100 List-Id: Message-ID: <20201211164906.gvD5LHJSnNhsRJe2Gv-cCtclSPjuJzFLLtMuVFgBxLw@z> GitHub notification mails are now in MIME to allow UTF8. --===============4109263048863030047== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgc2duIGFnYWluc3QgbWFzdGVyIG9u IHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9ub3QtY2hp Y2tlbi92b2lkLXBhY2thZ2VzIGJ1ZGdpZQpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvMjY5MTEKCmJ1ZGdpZS1kZXNrdG9wOiB1cGRhdGUgdG8gMTAuNS4y LgpSZW1vdmVkIHBhdGNoZXMgdGFrZW4gZnJvbSB1cHN0cmVhbSwgbGltaXRlZCBsaW5lcyB0byBh Ym91dCA4MCBjb2x1bW5zLCBhbmQgYWRkZWQgcnVudGltZSBkZXBlbmRlbmN5LCBgZ25vbWUtdGhl bWVzLWV4dHJhYC4KCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxp bnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8yNjkxMS5wYXRjaCBpcyBhdHRhY2hlZA== --===============4109263048863030047== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-budgie-26911.patch" RnJvbSBiOTI4NmM1MTNjMGJiOGZhODhiMTQwOGM1YmYzMzJjYjEzMzMyZGFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMb3JlbSA8bm90bG9yZW1pcHN1bUBwcm90b25tYWlsLmNvbT4K RGF0ZTogVGh1LCAzIERlYyAyMDIwIDEyOjEyOjM0ICswNTMwClN1YmplY3Q6IFtQQVRDSF0gYnVk Z2llLWRlc2t0b3A6IHVwZGF0ZSB0byAxMC41LjIuCgpDbG9zZTogIzI2OTExCi0tLQogLi4uL2J1 ZGdpZS1kZXNrdG9wL3BhdGNoZXMvYXBwc3lzLWJ1aWxkLnBhdGNoIHwgICAgMTEgLQogLi4uL2J1 ZGdpZS1kZXNrdG9wL3BhdGNoZXMvZ25vbWUtMzM4LnBhdGNoICAgIHwgMTM0NzIgLS0tLS0tLS0t LS0tLS0tLQogc3JjcGtncy9idWRnaWUtZGVza3RvcC90ZW1wbGF0ZSAgICAgICAgICAgICAgIHwg ICAgMjkgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMTM0OTQgZGVsZXRp b25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9idWRnaWUtZGVza3RvcC9wYXRjaGVz L2FwcHN5cy1idWlsZC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYnVkZ2llLWRl c2t0b3AvcGF0Y2hlcy9nbm9tZS0zMzgucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2J1ZGdp ZS1kZXNrdG9wL3BhdGNoZXMvYXBwc3lzLWJ1aWxkLnBhdGNoIGIvc3JjcGtncy9idWRnaWUtZGVz a3RvcC9wYXRjaGVzL2FwcHN5cy1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggYjY2MjVmMDQ2ZGUuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYnVkZ2llLWRlc2t0 b3AvcGF0Y2hlcy9hcHBzeXMtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCww IEBACi0tLS0gc3JjL2FwcHN5cy9BcHBTeXN0ZW0udmFsYQotKysrIHNyYy9hcHBzeXMvQXBwU3lz dGVtLnZhbGEKLUBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYyBjbGFzcyBBcHBTeXN0ZW0gOiBHTGli Lk9iamVjdAotICAgICB9Ci0gCi0gICAgIHByaXZhdGUgdm9pZCBzaWduYWxfcmVjZWl2ZWQoR0xp Yi5EQnVzQ29ubmVjdGlvbiBjb25uZWN0aW9uLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cmluZyBzZW5kZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RyaW5nPyBzZW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5n IG9iamVjdF9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBp bnRlcmZhY2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcg c2lnbmFsX25hbWUsCmRpZmYgLS1naXQgYS9zcmNwa2dzL2J1ZGdpZS1kZXNrdG9wL3BhdGNoZXMv Z25vbWUtMzM4LnBhdGNoIGIvc3JjcGtncy9idWRnaWUtZGVza3RvcC9wYXRjaGVzL2dub21lLTMz OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJmYTc2YTE3YjAuLjAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvYnVkZ2llLWRlc2t0b3AvcGF0Y2hlcy9nbm9tZS0zMzgucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQ3MiArMCwwIEBACi1Gcm9tIDMwYmEwYjVhNDk4NmQ2 YmUzNjg3YTFkN2ZiNDgyOTA2MTg1ZWE4YzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBEYXZpZCBNb2hhbW1lZCA8Zm9zc2ZyZWVkb21AdXNlcnMubm9yZXBseS5naXRodWIuY29tPgot RGF0ZTogVHVlLCAxOCBGZWIgMjAyMCAwNjo0MDoxMiArMDAwMAotU3ViamVjdDogW1BBVENIXSBn bm9tZSAzLjM4IGNvbXBhdGliaWxpdHkKLQotU3F1YXNoZWQgYnkgQHE2NiBmcm9tOgotCi1odHRw czovL2dpdGh1Yi5jb20vc29sdXMtcHJvamVjdC9idWRnaWUtZGVza3RvcC9wdWxsLzE5ODcKLQot cGx1cyBhbiBhc3NvcnRtZW50IG9mIG9sZGVyIG11dHRlciB1cGRhdGVzIGZyb20gZ2l0IG1hc3Rl cgotLS0tCi0gbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxNiArLQotIG1lc29uX29wdGlvbnMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDEgLQotIHNyYy9hcHBsZXRzL3N0YXR1cy9TdGF0dXNBcHBsZXQudmFsYSAgICAgICAgICB8 ICAgIDYgLQotIHNyYy9hcHBsZXRzL3N0YXR1cy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8 ICAgMTMgKy0KLSBzcmMvd20vYmFja2dyb3VuZC52YWxhICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDE1ICstCi0gc3JjL3dtL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAzMCArLQotIHNyYy93bS9zaGltLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMTAgKy0KLSBzcmMvd20vd20udmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDEwICstCi0gLi4ue0NsdXR0ZXItNS5tZXRhZGF0YSA9PiBDbHV0dGVyLTYubWV0YWRh dGF9IHwgICAgMAotIC4uLntDbHV0dGVyLTQubWV0YWRhdGEgPT4gQ2x1dHRlci03Lm1ldGFkYXRh fSB8ICAgNDMgLQotIHZhcGkve0NvZ2wtNC5tZXRhZGF0YSA9PiBDb2dsLTYubWV0YWRhdGF9ICAg ICB8ICAgIDAKLSB2YXBpL3tDb2dsLTUubWV0YWRhdGEgPT4gQ29nbC03Lm1ldGFkYXRhfSAgICAg fCAgICAyIC0KLSB2YXBpL01ldGEtMy5tZXRhZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDY2IC0KLSB2YXBpL3tNZXRhLTUubWV0YWRhdGEgPT4gTWV0YS02Lm1ldGFkYXRhfSAgICAg fCAgICAwCi0gdmFwaS97TWV0YS00Lm1ldGFkYXRhID0+IE1ldGEtNy5tZXRhZGF0YX0gICAgIHwg ICAyNSArLQotIHZhcGkvZ2VuZXJhdGUtbXV0dGVyLXZhcGkuc2ggICAgICAgICAgICAgICAgICB8 ICAgIDIgKy0KLSB2YXBpL2dyYXBoZW5lLWdvYmplY3QtMS4wLnZhcGkgICAgICAgICAgICAgICAg fCAgNjkxICsrKysrKysKLSB2YXBpL2xpYm11dHRlci0yLmRlcHMgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA5IC0KLSB2YXBpL2xpYm11dHRlci0yLnZhcGkgICAgICAgICAgICAgICAgICAg ICAgICAgfCAxMzI1IC0tLS0tLS0tLS0tLS0tCi0gdmFwaS9saWJtdXR0ZXItMy1jdXN0b20udmFs YSAgICAgICAgICAgICAgICAgIHwgICAgNiAtCi0gdmFwaS9saWJtdXR0ZXItMy5kZXBzICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgOSAtCi0gdmFwaS9saWJtdXR0ZXItNC5kZXBzICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgOCAtCi0gdmFwaS9saWJtdXR0ZXItNC52YXBpICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMTQyNSAtLS0tLS0tLS0tLS0tLS0KLSB2YXBpL3tsaWJtdXR0 ZXItNS5kZXBzID0+IGxpYm11dHRlci02LmRlcHN9ICAgfCAgICAzICstCi0gdmFwaS97bGlibXV0 dGVyLTUudmFwaSA9PiBsaWJtdXR0ZXItNi52YXBpfSAgIHwgICA0NSArLQotIHZhcGkvbGlibXV0 dGVyLTctY3VzdG9tLnZhbGEgICAgICAgICAgICAgICAgICB8ICAgIDcgKwotIHZhcGkvbGlibXV0 dGVyLTcuZGVwcyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKwotIHZhcGkve2xpYm11 dHRlci0zLnZhcGkgPT4gbGlibXV0dGVyLTcudmFwaX0gICB8ICAzOTAgKystLQotIHZhcGkvbGli bXV0dGVyLWNvZ2wtNC52YXBpICAgICAgICAgICAgICAgICAgICB8IDEyNzIgLS0tLS0tLS0tLS0t LQotIHZhcGkvbXV0dGVyLWNsdXR0ZXItNS1jdXN0b20udmFsYSAgICAgICAgICAgICB8ICAxNTgg LS0KLSAuLi5zdG9tLnZhbGEgPT4gbXV0dGVyLWNsdXR0ZXItNi1jdXN0b20udmFsYX0gfCAgIDEx IC0KLSAuLi5yLWNsdXR0ZXItNS5kZXBzID0+IG11dHRlci1jbHV0dGVyLTYuZGVwc30gfCAgICAy ICstCi0gLi4uci1jbHV0dGVyLTUudmFwaSA9PiBtdXR0ZXItY2x1dHRlci02LnZhcGl9IHwgIDgw NiArKy0tLS0tLQotIC4uLnItY2x1dHRlci00LmRlcHMgPT4gbXV0dGVyLWNsdXR0ZXItNy5kZXBz fSB8ICAgIDMgKy0KLSAuLi5yLWNsdXR0ZXItNC52YXBpID0+IG11dHRlci1jbHV0dGVyLTcudmFw aX0gfCAxNjE1ICsrKystLS0tLS0tLS0tLS0tCi0gLi4uLWN1c3RvbS52YWxhID0+IG11dHRlci1j b2dsLTYtY3VzdG9tLnZhbGF9IHwgICAgMAotIC4uLnttdXR0ZXItY29nbC00LmRlcHMgPT4gbXV0 dGVyLWNvZ2wtNi5kZXBzfSB8ICAgIDAKLSAuLi57bXV0dGVyLWNvZ2wtNS52YXBpID0+IG11dHRl ci1jb2dsLTYudmFwaX0gfCAgNDIyICstLS0tCi0gLi4uLWN1c3RvbS52YWxhID0+IG11dHRlci1j b2dsLTctY3VzdG9tLnZhbGF9IHwgICAyMCArLQotIC4uLnttdXR0ZXItY29nbC01LmRlcHMgPT4g bXV0dGVyLWNvZ2wtNy5kZXBzfSB8ICAgIDAKLSAuLi57bXV0dGVyLWNvZ2wtNC52YXBpID0+IG11 dHRlci1jb2dsLTcudmFwaX0gfCAgNjcxICsrKy0tLS0KLSB2YXBpL3BvbGtpdC1nb2JqZWN0LTEu dmFwaSAgICAgICAgICAgICAgICAgICAgfCAgIDMxICstCi0gNDIgZmlsZXMgY2hhbmdlZCwgMTky MCBpbnNlcnRpb25zKCspLCA3MjU0IGRlbGV0aW9ucygtKQotIHJlbmFtZSB2YXBpL3tDbHV0dGVy LTUubWV0YWRhdGEgPT4gQ2x1dHRlci02Lm1ldGFkYXRhfSAoMTAwJSkKLSByZW5hbWUgdmFwaS97 Q2x1dHRlci00Lm1ldGFkYXRhID0+IENsdXR0ZXItNy5tZXRhZGF0YX0gKDc4JSkKLSByZW5hbWUg dmFwaS97Q29nbC00Lm1ldGFkYXRhID0+IENvZ2wtNi5tZXRhZGF0YX0gKDEwMCUpCi0gcmVuYW1l IHZhcGkve0NvZ2wtNS5tZXRhZGF0YSA9PiBDb2dsLTcubWV0YWRhdGF9ICg5MSUpCi0gZGVsZXRl IG1vZGUgMTAwNjQ0IHZhcGkvTWV0YS0zLm1ldGFkYXRhCi0gcmVuYW1lIHZhcGkve01ldGEtNS5t ZXRhZGF0YSA9PiBNZXRhLTYubWV0YWRhdGF9ICgxMDAlKQotIHJlbmFtZSB2YXBpL3tNZXRhLTQu bWV0YWRhdGEgPT4gTWV0YS03Lm1ldGFkYXRhfSAoNzYlKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB2 YXBpL2dyYXBoZW5lLWdvYmplY3QtMS4wLnZhcGkKLSBkZWxldGUgbW9kZSAxMDA2NDQgdmFwaS9s aWJtdXR0ZXItMi5kZXBzCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IHZhcGkvbGlibXV0dGVyLTIudmFw aQotIGRlbGV0ZSBtb2RlIDEwMDY0NCB2YXBpL2xpYm11dHRlci0zLWN1c3RvbS52YWxhCi0gZGVs ZXRlIG1vZGUgMTAwNjQ0IHZhcGkvbGlibXV0dGVyLTMuZGVwcwotIGRlbGV0ZSBtb2RlIDEwMDY0 NCB2YXBpL2xpYm11dHRlci00LmRlcHMKLSBkZWxldGUgbW9kZSAxMDA2NDQgdmFwaS9saWJtdXR0 ZXItNC52YXBpCi0gcmVuYW1lIHZhcGkve2xpYm11dHRlci01LmRlcHMgPT4gbGlibXV0dGVyLTYu ZGVwc30gKDUwJSkKLSByZW5hbWUgdmFwaS97bGlibXV0dGVyLTUudmFwaSA9PiBsaWJtdXR0ZXIt Ni52YXBpfSAoOTclKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB2YXBpL2xpYm11dHRlci03LWN1c3Rv bS52YWxhCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHZhcGkvbGlibXV0dGVyLTcuZGVwcwotIHJlbmFt ZSB2YXBpL3tsaWJtdXR0ZXItMy52YXBpID0+IGxpYm11dHRlci03LnZhcGl9ICg3NSUpCi0gZGVs ZXRlIG1vZGUgMTAwNjQ0IHZhcGkvbGlibXV0dGVyLWNvZ2wtNC52YXBpCi0gZGVsZXRlIG1vZGUg MTAwNjQ0IHZhcGkvbXV0dGVyLWNsdXR0ZXItNS1jdXN0b20udmFsYQotIHJlbmFtZSB2YXBpL3tt dXR0ZXItY2x1dHRlci00LWN1c3RvbS52YWxhID0+IG11dHRlci1jbHV0dGVyLTYtY3VzdG9tLnZh bGF9ICg5MiUpCi0gcmVuYW1lIHZhcGkve211dHRlci1jbHV0dGVyLTUuZGVwcyA9PiBtdXR0ZXIt Y2x1dHRlci02LmRlcHN9ICg2MyUpCi0gcmVuYW1lIHZhcGkve211dHRlci1jbHV0dGVyLTUudmFw aSA9PiBtdXR0ZXItY2x1dHRlci02LnZhcGl9ICg5MyUpCi0gcmVuYW1lIHZhcGkve211dHRlci1j bHV0dGVyLTQuZGVwcyA9PiBtdXR0ZXItY2x1dHRlci03LmRlcHN9ICg1NCUpCi0gcmVuYW1lIHZh cGkve211dHRlci1jbHV0dGVyLTQudmFwaSA9PiBtdXR0ZXItY2x1dHRlci03LnZhcGl9ICg4NiUp Ci0gcmVuYW1lIHZhcGkve211dHRlci1jb2dsLTUtY3VzdG9tLnZhbGEgPT4gbXV0dGVyLWNvZ2wt Ni1jdXN0b20udmFsYX0gKDEwMCUpCi0gcmVuYW1lIHZhcGkve211dHRlci1jb2dsLTQuZGVwcyA9 PiBtdXR0ZXItY29nbC02LmRlcHN9ICgxMDAlKQotIHJlbmFtZSB2YXBpL3ttdXR0ZXItY29nbC01 LnZhcGkgPT4gbXV0dGVyLWNvZ2wtNi52YXBpfSAoNjglKQotIHJlbmFtZSB2YXBpL3ttdXR0ZXIt Y29nbC00LWN1c3RvbS52YWxhID0+IG11dHRlci1jb2dsLTctY3VzdG9tLnZhbGF9ICg4MSUpCi0g cmVuYW1lIHZhcGkve211dHRlci1jb2dsLTUuZGVwcyA9PiBtdXR0ZXItY29nbC03LmRlcHN9ICgx MDAlKQotIHJlbmFtZSB2YXBpL3ttdXR0ZXItY29nbC00LnZhcGkgPT4gbXV0dGVyLWNvZ2wtNy52 YXBpfSAoNTklKQotCi1kaWZmIC0tZ2l0IG1lc29uLmJ1aWxkIG1lc29uLmJ1aWxkCi1pbmRleCAy YTBlMDMxNi4uM2M0YzZhYzEgMTAwNjQ0Ci0tLS0gbWVzb24uYnVpbGQKLSsrKyBtZXNvbi5idWls ZAotQEAgLTMyLDE2ICszMiwxNiBAQCBhbV9jZmxhZ3MgPSBbCi0gYWRkX2dsb2JhbF9hcmd1bWVu dHMoYW1fY2ZsYWdzLCBsYW5ndWFnZTogJ2MnKQotIG1lc29uLmFkZF9pbnN0YWxsX3NjcmlwdCgn bWVzb25fcG9zdF9pbnN0YWxsLnNoJykKLSAKLS0jIEJ1ZGdpZSBuZWVkcyBhIG1pbmltdW0gMy4y MiBHTk9NRSBzdGFjawotLWdub21lX21pbmltdW1fdmVyc2lvbiA9ICc+PSAzLjIyLjAnCi0rIyBC dWRnaWUgbmVlZHMgYSBtaW5pbXVtIDMuMjQgR05PTUUgc3RhY2sKLStnbm9tZV9taW5pbXVtX3Zl cnNpb24gPSAnPj0gMy4yNC4wJwotIAotIGRlcF9ndGszID0gZGVwZW5kZW5jeSgnZ3RrKy0zLjAn LCB2ZXJzaW9uOiBnbm9tZV9taW5pbXVtX3ZlcnNpb24pCi0tZGVwX2dsaWIgPSBkZXBlbmRlbmN5 KCdnbGliLTIuMCcsIHZlcnNpb246ICc+PSAyLjQ2LjAnKQotLWRlcF9naW91bml4ID0gZGVwZW5k ZW5jeSgnZ2lvLXVuaXgtMi4wJywgdmVyc2lvbjogJz49IDIuNDYuMCcpCi0tZGVwX3BlYXMgPSBk ZXBlbmRlbmN5KCdsaWJwZWFzLTEuMCcsIHZlcnNpb246ICc+PSAxLjguMCcpCi0rZGVwX2dsaWIg PSBkZXBlbmRlbmN5KCdnbGliLTIuMCcsIHZlcnNpb246ICc+PSAyLjYyLjAnKQotK2RlcF9naW91 bml4ID0gZGVwZW5kZW5jeSgnZ2lvLXVuaXgtMi4wJywgdmVyc2lvbjogJz49IDIuNjIuMCcpCi0r ZGVwX3BlYXMgPSBkZXBlbmRlbmN5KCdsaWJwZWFzLTEuMCcsIHZlcnNpb246ICc+PSAxLjI0LjAn KQotIGRlcF9nZGt4MTEgPSBkZXBlbmRlbmN5KCdnZGsteDExLTMuMCcsIHZlcnNpb246IGdub21l X21pbmltdW1fdmVyc2lvbikKLSBkZXBfbGlidXVpZCA9IGRlcGVuZGVuY3koJ3V1aWQnKQotLWRl cF92YWxhID0gZGVwZW5kZW5jeSgndmFwaWdlbicsIHZlcnNpb246ICc+PSAwLjQwLjAnKQotK2Rl cF92YWxhID0gZGVwZW5kZW5jeSgndmFwaWdlbicsIHZlcnNpb246ICc+PSAwLjQ2LjAnKQotIAot ICMgTmVlZGVkIGZvciBrZXlib2FyZHkgYml0cwotIGRlcF9pYnVzID0gZGVwZW5kZW5jeSgnaWJ1 cy0xLjAnLCB2ZXJzaW9uOiAnPj0gMS41LjEwJykKLUBAIC01MSwxMCArNTEsMTAgQEAgZGVwX2dz ZXR0aW5ncyA9IGRlcGVuZGVuY3koJ2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMnLCB2ZXJzaW9u OiBnbm9tZV9taW5pbXVtX3YKLSBkZXBfZ3NkID0gZGVwZW5kZW5jeSgnZ25vbWUtc2V0dGluZ3Mt ZGFlbW9uJywgdmVyc2lvbjogJz49My4yOC4wJykKLSAKLSAjIHduY2sgdXNlZCBhbGwgb3ZlciB0 aGUgcGxhY2UuLgotLWRlcF93bmNrID0gZGVwZW5kZW5jeSgnbGlid25jay0zLjAnLCB2ZXJzaW9u OiAnPj0gMy4xNC4wJykKLStkZXBfd25jayA9IGRlcGVuZGVuY3koJ2xpYnduY2stMy4wJywgdmVy c2lvbjogJz49IDMuMzIuMCcpCi0gCi0gIyBhY2NvdW50c3NlcnZpY2UgaW4gbXVsdGlwbGUgYXBw bGV0cwotLWRlcF9hY2NvdW50c3NlcnZpY2UgPSBkZXBlbmRlbmN5KCdhY2NvdW50c3NlcnZpY2Un LCB2ZXJzaW9uOiAnPj0gMC42LjQwJykKLStkZXBfYWNjb3VudHNzZXJ2aWNlID0gZGVwZW5kZW5j eSgnYWNjb3VudHNzZXJ2aWNlJywgdmVyc2lvbjogJz49IDAuNi41NScpCi0gCi0gIyBDcmVhdGUg Y29uZmlnLmgKLSBjZGF0YSA9IGNvbmZpZ3VyYXRpb25fZGF0YSgpCi1kaWZmIC0tZ2l0IG1lc29u X29wdGlvbnMudHh0IG1lc29uX29wdGlvbnMudHh0Ci1pbmRleCBkNzFiMDliNS4uZGNhOTEyOTYg MTAwNjQ0Ci0tLS0gbWVzb25fb3B0aW9ucy50eHQKLSsrKyBtZXNvbl9vcHRpb25zLnR4dAotQEAg LTEsNSArMSw0IEBACi0gb3B0aW9uKCd3aXRoLXN0YXRlbGVzcycsIHR5cGU6ICdib29sZWFuJywg dmFsdWU6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0VuYWJsZSBzdGF0ZWxlc3MgWERHIHBhdGhzJykK LSBvcHRpb24oJ3dpdGgtcG9sa2l0JywgdHlwZTogJ2Jvb2xlYW4nLCB2YWx1ZTogdHJ1ZSwgZGVz Y3JpcHRpb246ICdFbmFibGUgUG9sS2l0IHN1cHBvcnQnKQotLW9wdGlvbignd2l0aC1ibHVldG9v dGgnLCB0eXBlOiAnYm9vbGVhbicsIHZhbHVlOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0VuYWJsZSBn bm9tZS1ibHVldG9vdGggc3VwcG9ydCcpCi0gb3B0aW9uKCd3aXRoLWd0ay1kb2MnLCB0eXBlOiAn Ym9vbGVhbicsIHZhbHVlOiB0cnVlLCBkZXNjcmlwdGlvbjogJ0J1aWxkIGd0ay1kb2MgZG9jdW1l bnRhdGlvbicpCi0gb3B0aW9uKCd3aXRoLWRlc2t0b3AtaWNvbnMnLCB0eXBlOiAnY29tYm8nLCBj aG9pY2VzOiBbJ25hdXRpbHVzJywgJ25vbmUnXSwgdmFsdWU6ICduYXV0aWx1cycsIGRlc2NyaXB0 aW9uOiAnRGVza3RvcCBpY29uIGhhbmRsaW5nJykKLWRpZmYgLS1naXQgc3JjL2FwcGxldHMvc3Rh dHVzL1N0YXR1c0FwcGxldC52YWxhIHNyYy9hcHBsZXRzL3N0YXR1cy9TdGF0dXNBcHBsZXQudmFs YQotaW5kZXggYjk4MjYzOTQuLjcxZjI4N2M5IDEwMDY0NAotLS0tIHNyYy9hcHBsZXRzL3N0YXR1 cy9TdGF0dXNBcHBsZXQudmFsYQotKysrIHNyYy9hcHBsZXRzL3N0YXR1cy9TdGF0dXNBcHBsZXQu dmFsYQotQEAgLTIwLDkgKzIwLDcgQEAgcHVibGljIGNsYXNzIFN0YXR1c0FwcGxldCA6IEJ1ZGdp ZS5BcHBsZXQKLSB7Ci0gCi0gICAgIHByb3RlY3RlZCBHdGsuQm94IHdpZGdldDsKLS0jaWYgV0lU SF9CTFVFVE9PVEgKLSAgICAgcHJvdGVjdGVkIEJsdWV0b290aEluZGljYXRvciBibHVlOwotLSNl bmRpZgotICAgICBwcm90ZWN0ZWQgU291bmRJbmRpY2F0b3Igc291bmQ7Ci0gICAgIHByb3RlY3Rl ZCBQb3dlckluZGljYXRvciBwb3dlcjsKLSAgICAgcHJvdGVjdGVkIEd0ay5FdmVudEJveD8gd3Jh cDsKLUBAIC02OCwxMiArNjYsMTAgQEAgcHVibGljIGNsYXNzIFN0YXR1c0FwcGxldCA6IEJ1ZGdp ZS5BcHBsZXQKLSAgICAgICAgIHRoaXMuc2V0dXBfcG9wb3Zlcihwb3dlci5lYm94LCBwb3dlci5w b3BvdmVyKTsKLSAgICAgICAgIHRoaXMuc2V0dXBfcG9wb3Zlcihzb3VuZC5lYm94LCBzb3VuZC5w b3BvdmVyKTsKLSAKLS0jaWYgV0lUSF9CTFVFVE9PVEgKLSAgICAgICAgIGJsdWUgPSBuZXcgQmx1 ZXRvb3RoSW5kaWNhdG9yKCk7Ci0gICAgICAgICB3aWRnZXQucGFja19zdGFydChibHVlLCBmYWxz ZSwgZmFsc2UsIDIpOwotICAgICAgICAgYmx1ZS5zaG93X2FsbCgpOwotICAgICAgICAgdGhpcy5z ZXR1cF9wb3BvdmVyKGJsdWUuZWJveCwgYmx1ZS5wb3BvdmVyKTsKLS0jZW5kaWYKLSAgICAgfQot IAotICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBwYW5lbF9wb3NpdGlvbl9jaGFuZ2VkKEJ1ZGdp ZS5QYW5lbFBvc2l0aW9uIHBvc2l0aW9uKQotQEAgLTkxLDkgKzg3LDcgQEAgcHVibGljIGNsYXNz IFN0YXR1c0FwcGxldCA6IEJ1ZGdpZS5BcHBsZXQKLSAgICAgICAgIHRoaXMubWFuYWdlciA9IG1h bmFnZXI7Ci0gICAgICAgICBtYW5hZ2VyLnJlZ2lzdGVyX3BvcG92ZXIocG93ZXIuZWJveCwgcG93 ZXIucG9wb3Zlcik7Ci0gICAgICAgICBtYW5hZ2VyLnJlZ2lzdGVyX3BvcG92ZXIoc291bmQuZWJv eCwgc291bmQucG9wb3Zlcik7Ci0tI2lmIFdJVEhfQkxVRVRPT1RICi0gICAgICAgICBtYW5hZ2Vy LnJlZ2lzdGVyX3BvcG92ZXIoYmx1ZS5lYm94LCBibHVlLnBvcG92ZXIpOwotLSNlbmRpZgotICAg ICB9Ci0gfSAvLyBFbmQgY2xhc3MKLSAKLWRpZmYgLS1naXQgc3JjL2FwcGxldHMvc3RhdHVzL21l c29uLmJ1aWxkIHNyYy9hcHBsZXRzL3N0YXR1cy9tZXNvbi5idWlsZAotaW5kZXggNjk5ZmI4ZjQu LmI0ZDI3MDZjIDEwMDY0NAotLS0tIHNyYy9hcHBsZXRzL3N0YXR1cy9tZXNvbi5idWlsZAotKysr IHNyYy9hcHBsZXRzL3N0YXR1cy9tZXNvbi5idWlsZAotQEAgLTEwLDYgKzEwLDcgQEAgY3VzdG9t X3RhcmdldCgncGx1Z2luLWZpbGUtc3RhdHVzJywKLSAgICAgaW5zdGFsbF9kaXIgOiBhcHBsZXRf c3RhdHVzX2RpcikKLSAKLSBhcHBsZXRfc3RhdHVzX3NvdXJjZXMgPSBbCi0rICAgICdCbHVldG9v dGhJbmRpY2F0b3IudmFsYScsCi0gICAgICdTdGF0dXNBcHBsZXQudmFsYScsCi0gICAgICdQb3dl ckluZGljYXRvci52YWxhJywKLSAgICAgJ1NvdW5kSW5kaWNhdG9yLnZhbGEnLAotQEAgLTIwLDIy ICsyMSwxMyBAQCBhcHBsZXRfc3RhdHVzX2RlcHMgPSBbCi0gICAgIGRlcF9ndGszLAotICAgICBk ZXBfcGVhcywKLSAgICAgZGVwX2FjY291bnRzc2VydmljZSwKLSsgICAgZGVwZW5kZW5jeSgnZ25v bWUtYmx1ZXRvb3RoLTEuMCcsIHZlcnNpb246IGdub21lX21pbmltdW1fdmVyc2lvbiksCi0gICAg IGRlcGVuZGVuY3koJ3Vwb3dlci1nbGliJywgdmVyc2lvbjogJz49IDAuOTkuMCcpLAotICAgICBs aW5rX2xpYnBsdWdpbiwKLSAgICAgZ3ZjLmdldF92YXJpYWJsZSgnbGliZ3ZjX2RlcCcpLAotICAg ICBtZXNvbi5nZXRfY29tcGlsZXIoJ2MnKS5maW5kX2xpYnJhcnkoJ20nLCByZXF1aXJlZDogZmFs c2UpLAotIF0KLSAKLS0jIEJsdWV0b290aCBpcyBvcHRpb25hbCB0byBhbGxvdyBzbWFsbGVyIGJ1 aWxkcwotLXdpdGhfYmx1ZXRvb3RoID0gZ2V0X29wdGlvbignd2l0aC1ibHVldG9vdGgnKQotLWFw cGxldF9zdGF0dXNfdmFsYV9hcmdzID0gW10KLS0KLS1pZiB3aXRoX2JsdWV0b290aCA9PSB0cnVl Ci0tICAgIGFwcGxldF9zdGF0dXNfZGVwcyArPSBkZXBlbmRlbmN5KCdnbm9tZS1ibHVldG9vdGgt MS4wJywgdmVyc2lvbjogZ25vbWVfbWluaW11bV92ZXJzaW9uKQotLSAgICBhcHBsZXRfc3RhdHVz X3NvdXJjZXMgKz0gJ0JsdWV0b290aEluZGljYXRvci52YWxhJwotLSAgICBhcHBsZXRfc3RhdHVz X3ZhbGFfYXJncyArPSBbJy1EJywgJ1dJVEhfQkxVRVRPT1RIJ10KLS1lbmRpZgotLQotIHNoYXJl ZF9saWJyYXJ5KAotICAgICAnc3RhdHVzYXBwbGV0JywKLSAgICAgYXBwbGV0X3N0YXR1c19zb3Vy Y2VzLAotQEAgLTUwLDcgKzQyLDYgQEAgc2hhcmVkX2xpYnJhcnkoCi0gICAgICAgICAnLS1wa2cn LCAnZ3ZjLTEuMCcsCi0gICAgICAgICAnLS1wa2cnLCAnZ2lvLXVuaXgtMi4wJywKLSAgICAgICAg ICctLXZhcGlkaXInLCBqb2luX3BhdGhzKG1lc29uLnNvdXJjZV9yb290KCksICd2YXBpJyksCi0t ICAgICAgICBhcHBsZXRfc3RhdHVzX3ZhbGFfYXJncywKLSAgICAgXSwKLSAgICAgaW5zdGFsbDog dHJ1ZSwKLSAgICAgaW5zdGFsbF9kaXI6IGFwcGxldF9zdGF0dXNfZGlyLAotZGlmZiAtLWdpdCBz cmMvd20vYmFja2dyb3VuZC52YWxhIHNyYy93bS9iYWNrZ3JvdW5kLnZhbGEKLWluZGV4IDA4NGFh OWFiLi5iMzMxZTBjNCAxMDA2NDQKLS0tLSBzcmMvd20vYmFja2dyb3VuZC52YWxhCi0rKysgc3Jj L3dtL2JhY2tncm91bmQudmFsYQotQEAgLTIwNCw4ICsyMDQsMTMgQEAgcHVibGljIGNsYXNzIEJ1 ZGdpZUJhY2tncm91bmQgOiBDbHV0dGVyLkFjdG9yCi0gCi0gICAgICAgICB2YXIgYWN0b3IgPSBu ZXcgTWV0YS5CYWNrZ3JvdW5kQWN0b3IoZGlzcGxheSwgaW5kZXgpOwotICAgICAgICAgdmFyIGJh Y2tncm91bmQgPSBuZXcgTWV0YS5CYWNrZ3JvdW5kKGRpc3BsYXkpOwotKyNpZiBIQVZFX01VVFRF Ul82Ci0gICAgICAgICBhY3Rvci5zZXRfYmFja2dyb3VuZChiYWNrZ3JvdW5kKTsKLS0KLSsjZWxz ZQotKyAgICAgICAgdmFyIGNvbnRlbnQgPSBhY3Rvci5nZXRfY29udGVudCgpOwotKyAgICAgICAg dW5vd25lZCBNZXRhLkJhY2tncm91bmRDb250ZW50IGJhY2tncm91bmRfY29udGVudCA9IChNZXRh LkJhY2tncm91bmRDb250ZW50KSBjb250ZW50OwotKyAgICAgICAgYmFja2dyb3VuZF9jb250ZW50 LnNldF9iYWNrZ3JvdW5kKGJhY2tncm91bmQpOwotKyNlbmRpZgotICAgICAgICAgcmVjdCA9IGRp c3BsYXkuZ2V0X21vbml0b3JfZ2VvbWV0cnkoaW5kZXgpOwotICAgICAgICAgYWN0b3Iuc2V0X3Np emUocmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpOwotICAgICAgICAgYWN0b3Iuc2V0KCJvcGFjaXR5 IiwgMCk7Ci1AQCAtMjIxLDEzICsyMjYsMjEgQEAgcHVibGljIGNsYXNzIEJ1ZGdpZUJhY2tncm91 bmQgOiBDbHV0dGVyLkFjdG9yCi0gICAgICAgICBzaGFkaW5nX2RpcmVjdGlvbiA9IChHRGVza3Rv cC5CYWNrZ3JvdW5kU2hhZGluZylzZXR0aW5ncy5nZXRfZW51bShDT0xPUl9TSEFESU5HX1RZUEVf S0VZKTsKLSAgICAgICAgIHZhciBjb2xvcl9zdHIgPSBzZXR0aW5ncy5nZXRfc3RyaW5nKFBSSU1B UllfQ09MT1JfS0VZKTsKLSAgICAgICAgIGlmIChjb2xvcl9zdHIgIT0gbnVsbCAmJiBjb2xvcl9z dHIgIT0gIiIpIHsKLSsjaWYgSEFWRV9NVVRURVJfNgotICAgICAgICAgICAgIHByaW1hcnlfY29s b3IgPSBDbHV0dGVyLkNvbG9yLmZyb21fc3RyaW5nKGNvbG9yX3N0cik7Ci0rI2Vsc2UKLSsgICAg ICAgICAgICBDbHV0dGVyLkNvbG9yLmZyb21fc3RyaW5nKG91dCBwcmltYXJ5X2NvbG9yLCBjb2xv cl9zdHIpOwotKyNlbmRpZgotICAgICAgICAgICAgIGNvbG9yX3N0ciA9IG51bGw7Ci0gICAgICAg ICB9Ci0gCi0gICAgICAgICBjb2xvcl9zdHIgPSBzZXR0aW5ncy5nZXRfc3RyaW5nKFNFQ09OREFS WV9DT0xPUl9LRVkpOwotICAgICAgICAgaWYgKGNvbG9yX3N0ciAhPSBudWxsICYmIGNvbG9yX3N0 ciAhPSAiIikgewotKyNpZiBIQVZFX01VVFRFUl82Ci0gICAgICAgICAgICAgc2Vjb25kYXJ5X2Nv bG9yID0gQ2x1dHRlci5Db2xvci5mcm9tX3N0cmluZyhjb2xvcl9zdHIpOwotKyNlbHNlCi0rICAg ICAgICAgICAgQ2x1dHRlci5Db2xvci5mcm9tX3N0cmluZyhvdXQgc2Vjb25kYXJ5X2NvbG9yLCBj b2xvcl9zdHIpOwotKyNlbmRpZgotICAgICAgICAgICAgIGNvbG9yX3N0ciA9IG51bGw7Ci0gICAg ICAgICB9Ci0gCi1kaWZmIC0tZ2l0IHNyYy93bS9tZXNvbi5idWlsZCBzcmMvd20vbWVzb24uYnVp bGQKLWluZGV4IGUzOWI4Njc4Li41ODNjZTc5MCAxMDA2NDQKLS0tLSBzcmMvd20vbWVzb24uYnVp bGQKLSsrKyBzcmMvd20vbWVzb24uYnVpbGQKLUBAIC0xNywyMCArMTcsMTggQEAgYnVkZ2llX3dt X3NvdXJjZXMgPSBbCi0gCi0gYnVkZ2llX3dtX3N0YXR1c192YWxhX2FyZ3MgPSBbXQotIAotLXZh cGlfbXV0dGVyID0gJ2xpYm11dHRlci0zJwotLWRlcF9tdXR0ZXIgPSBkZXBlbmRlbmN5KCdsaWJt dXR0ZXItMycsIHZlcnNpb246IGdub21lX21pbmltdW1fdmVyc2lvbiwgcmVxdWlyZWQ6IGZhbHNl KQotLWlmIG5vdCBkZXBfbXV0dGVyLmZvdW5kKCkKLS0gICAgZGVwX211dHRlciA9IGRlcGVuZGVu Y3koJ2xpYm11dHRlci00JywgdmVyc2lvbjogZ25vbWVfbWluaW11bV92ZXJzaW9uLCByZXF1aXJl ZDogZmFsc2UpCi0rZGVwX2dyYXBoZW5lID0gZGVwZW5kZW5jeSgnZ3JhcGhlbmUtZ29iamVjdC0x LjAnLCB2ZXJzaW9uOiAnPj0gMS4xMCcpCi0rZGVwX211dHRlciA9IGRlcGVuZGVuY3koJ2xpYm11 dHRlci03JywgdmVyc2lvbjogZ25vbWVfbWluaW11bV92ZXJzaW9uLCByZXF1aXJlZDogZmFsc2Up Ci0raWYgZGVwX211dHRlci5mb3VuZCgpCi0rICAgIGJ1ZGdpZV93bV9zdGF0dXNfdmFsYV9hcmdz ICs9IFsnLUQnLCAnSEFWRV9NVVRURVJfNyddCi0rICAgIG1lc3NhZ2UoJ1VzaW5nIG5ldyBsaWJt dXR0ZXItNyBBQkkgZnJvbSBHTk9NRSAzLjM4JykKLSsgICAgdmFwaV9tdXR0ZXIgPSAnbGlibXV0 dGVyLTcnCi0rZWxzZQotKyAgICBkZXBfbXV0dGVyID0gZGVwZW5kZW5jeSgnbGlibXV0dGVyLTYn LCB2ZXJzaW9uOiBnbm9tZV9taW5pbXVtX3ZlcnNpb24pCi0rICAgIGJ1ZGdpZV93bV9zdGF0dXNf dmFsYV9hcmdzICs9IFsnLUQnLCAnSEFWRV9NVVRURVJfNiddCi0gICAgIGlmIGRlcF9tdXR0ZXIu Zm91bmQoKQotLSAgICAgICAgbWVzc2FnZSgnVXNpbmcgbmV3IGxpYm11dHRlci00IEFCSSBmcm9t IEdOT01FIDMuMzInKQotLSAgICAgICAgdmFwaV9tdXR0ZXIgPSAnbGlibXV0dGVyLTQnCi0tICAg IGVsc2UKLS0gICAgICAgIGRlcF9tdXR0ZXIgPSBkZXBlbmRlbmN5KCdsaWJtdXR0ZXItNScsIHZl cnNpb246IGdub21lX21pbmltdW1fdmVyc2lvbikKLS0gICAgICAgIGlmIGRlcF9tdXR0ZXIuZm91 bmQoKQotLSAgICAgICAgICAgIG1lc3NhZ2UoJ1VzaW5nIG5ldyBsaWJtdXR0ZXItNSBBQkkgZnJv bSBHTk9NRSAzLjM0JykKLS0gICAgICAgICAgICB2YXBpX211dHRlciA9ICdsaWJtdXR0ZXItNScK LS0gICAgICAgICAgICBidWRnaWVfd21fc3RhdHVzX3ZhbGFfYXJncyArPSBbJy1EJywgJ0hBVkVf TVVUVEVSXzUnXQotLSAgICAgICAgZW5kaWYKLSsgICAgICAgIG1lc3NhZ2UoJ1VzaW5nIG5ldyBs aWJtdXR0ZXItNiBBQkkgZnJvbSBHTk9NRSAzLjM2JykKLSsgICAgICAgIHZhcGlfbXV0dGVyID0g J2xpYm11dHRlci02JwotICAgICBlbmRpZgotIGVuZGlmCi0gCi1AQCAtNDIsOCArNDAsOCBAQCBi dWRnaWVfd21fZGVwcyA9IFsKLSAgICAgZGVwX2lidXMsCi0gXQotIAotLWlmIGRlcF9nc2QudmVy c2lvbigpLnZlcnNpb25fY29tcGFyZSgnPj0zLjMxLjkxJykKLS0gICAgYnVkZ2llX3dtX3N0YXR1 c192YWxhX2FyZ3MgKz0gWyctRCcsICdIQVZFX0dTRF8zMzInXQotK2lmIGRlcF9nc2QudmVyc2lv bigpLnZlcnNpb25fY29tcGFyZSgnPj0zLjM2LjAnKQotKyAgICBidWRnaWVfd21fc3RhdHVzX3Zh bGFfYXJncyArPSBbJy1EJywgJ0hBVkVfR1NEX1NVUFBPUlRFRCddCi0gZW5kaWYKLSAKLSBidWRn aWVfd21fdmFsYV9hcmdzID0gIFsKLUBAIC02MCw3ICs1OCw3IEBAIGJ1ZGdpZV93bV92YWxhX2Fy Z3MgPSAgWwotIAotIHJwYXRoID0gJycKLSAKLS1pZiBkZXBfbXV0dGVyLnZlcnNpb24oKS52ZXJz aW9uX2NvbXBhcmUoJz49My4yOC4wJykKLStpZiBkZXBfbXV0dGVyLnZlcnNpb24oKS52ZXJzaW9u X2NvbXBhcmUoJz49My4zNi4wJykKLSAgICAgcnBhdGggPSBkZXBfbXV0dGVyLmdldF9wa2djb25m aWdfdmFyaWFibGUoJ3R5cGVsaWJkaXInKQotICAgICBidWRnaWVfd21fdmFsYV9hcmdzICs9IFsn LS1naXJkaXInLCBycGF0aF0KLSBlbmRpZgotZGlmZiAtLWdpdCBzcmMvd20vc2hpbS52YWxhIHNy Yy93bS9zaGltLnZhbGEKLWluZGV4IDRjZGZhMGIwLi5mYzI0YjI4OSAxMDA2NDQKLS0tLSBzcmMv d20vc2hpbS52YWxhCi0rKysgc3JjL3dtL3NoaW0udmFsYQotQEAgLTE0LDcgKzE0LDcgQEAgbmFt ZXNwYWNlIEJ1ZGdpZSB7Ci0gcHVibGljIHN0cnVjdCBHc2RBY2NlbCB7Ci0gICAgIHN0cmluZyBh Y2NlbGVyYXRvcjsKLSAgICAgdWludCBmbGFnczsKLS0jaWYgSEFWRV9HU0RfMzMyCi0rI2lmIEhB VkVfR1NEX1NVUFBPUlRFRAotICAgICBNZXRhLktleUJpbmRpbmdGbGFncyBncmFiX2ZsYWdzOwot ICNlbmRpZgotIH0KLUBAIC0xOTMsMTEgKzE5Myw3IEBAIHB1YmxpYyBjbGFzcyBTaGVsbFNoaW0g OiBHTGliLk9iamVjdAotICAgICAgICAgb3NkX3Byb3h5ID0gbnVsbDsKLSAgICAgfQotIAotLSNp ZiBIQVZFX01VVFRFUl81Ci0gICAgIHByaXZhdGUgdm9pZCBvbl9hY2NlbGVyYXRvcl9hY3RpdmF0 ZWQodWludCBhY3Rpb24sIENsdXR0ZXIuSW5wdXREZXZpY2UgZGV2LCB1aW50IGRldmljZV9pZCkK LS0jZWxzZQotLSAgICBwcml2YXRlIHZvaWQgb25fYWNjZWxlcmF0b3JfYWN0aXZhdGVkKHVpbnQg YWN0aW9uLCB1aW50IGRldmljZV9pZCkKLS0jZW5kaWYKLSAgICAgewotICAgICAgICAgSGFzaFRh YmxlPHN0cmluZyxWYXJpYW50PiBwYXJhbXMgPSBuZXcgSGFzaFRhYmxlPHN0cmluZyxWYXJpYW50 PihzdHJfaGFzaCwgc3RyX2VxdWFsKTsKLSAKLUBAIC0yMzAsNyArMjI2LDcgQEAgcHVibGljIGNs YXNzIFNoZWxsU2hpbSA6IEdMaWIuT2JqZWN0Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0jaWYg SEFWRV9HU0RfMzMyCi0rI2lmIEhBVkVfR1NEX1NVUFBPUlRFRAotICAgICBwcml2YXRlIHVpbnQg X2dyYWIoc3RyaW5nIHNlbmRlciwgc3RyaW5nIHNlcSwgdWludCBmbGFnLCBNZXRhLktleUJpbmRp bmdGbGFncyBncmFiX2ZsYWdzKQotICAgICB7Ci0gICAgICAgICB2YXIgcmV0ID0gZGlzcGxheS5n cmFiX2FjY2VsZXJhdG9yKHNlcSwgZ3JhYl9mbGFncyk7Ci1AQCAtMjczLDcgKzI2OSw3IEBAIHB1 YmxpYyBjbGFzcyBTaGVsbFNoaW0gOiBHTGliLk9iamVjdAotICAgICAgICAgICAgIG9uX2J1c19h Y3F1aXJlZCwgbnVsbCwgbnVsbCk7Ci0gICAgIH0KLSAKLS0jaWYgSEFWRV9HU0RfMzMyCi0rI2lm IEhBVkVfR1NEX1NVUFBPUlRFRAotICAgICBwdWJsaWMgdWludCBHcmFiQWNjZWxlcmF0b3IoQnVz TmFtZSBzZW5kZXIsIHN0cmluZyBhY2NlbGVyYXRvciwgdWludCBmbGFncywgTWV0YS5LZXlCaW5k aW5nRmxhZ3MgZ3JhYl9mbGFncykKLSAgICAgewotICAgICAgICAgcmV0dXJuIF9ncmFiKHNlbmRl ciwgYWNjZWxlcmF0b3IsIGZsYWdzLCBncmFiX2ZsYWdzKTsKLWRpZmYgLS1naXQgc3JjL3dtL3dt LnZhbGEgc3JjL3dtL3dtLnZhbGEKLWluZGV4IGZlZTg5NDQzLi5iY2NmM2I5NSAxMDA2NDQKLS0t LSBzcmMvd20vd20udmFsYQotKysrIHNyYy93bS93bS52YWxhCi1AQCAtMTM3LDggKzEzNyw4IEBA IHB1YmxpYyBjbGFzcyBCdWRnaWVXTSA6IE1ldGEuUGx1Z2luCi0gICAgIHB1YmxpYyBzdGF0aWMg c3RyaW5nW10/IG9sZF9hcmdzOwotICAgICBwdWJsaWMgc3RhdGljIGJvb2wgd2F5bGFuZCA9IGZh bHNlOwotIAotLSAgICBzdGF0aWMgQ2x1dHRlci5Qb2ludCBQVl9DRU5URVI7Ci0tICAgIHN0YXRp YyBDbHV0dGVyLlBvaW50IFBWX05PUk07Ci0rICAgIHN0YXRpYyBHcmFwaGVuZS5Qb2ludCBQVl9D RU5URVI7Ci0rICAgIHN0YXRpYyBHcmFwaGVuZS5Qb2ludCBQVl9OT1JNOwotIAotICAgICBwcml2 YXRlIE1ldGEuQmFja2dyb3VuZEdyb3VwPyBiYWNrZ3JvdW5kX2dyb3VwOwotIAotQEAgLTE3MSwx MCArMTcxLDEwIEBAIHB1YmxpYyBjbGFzcyBCdWRnaWVXTSA6IE1ldGEuUGx1Z2luCi0gICAgICAg ICAgICAgbGljZW5zZSA9ICJHUEwtMi4wIiwKLSAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICJC dWRnaWUgV2luZG93IE1hbmFnZXIiCi0gICAgICAgICB9OwotLSAgICAgICAgUFZfQ0VOVEVSID0g Q2x1dHRlci5Qb2ludC5hbGxvYygpOwotKyAgICAgICAgUFZfQ0VOVEVSID0gR3JhcGhlbmUuUG9p bnQoKTsKLSsgICAgICAgIFBWX05PUk0gPSBHcmFwaGVuZS5Qb2ludCgpOwotICAgICAgICAgUFZf Q0VOVEVSLnggPSAwLjVmOwotICAgICAgICAgUFZfQ0VOVEVSLnkgPSAwLjVmOwotLSAgICAgICAg UFZfTk9STSA9IENsdXR0ZXIuUG9pbnQuYWxsb2MoKTsKLSAgICAgICAgIFBWX05PUk0ueCA9IDAu MGY7Ci0gICAgICAgICBQVl9OT1JNLnkgPSAwLjBmOwotICAgICB9Ci1AQCAtMTAwMSw3ICsxMDAx LDcgQEAgcHVibGljIGNsYXNzIEJ1ZGdpZVdNIDogTWV0YS5QbHVnaW4KLSAgICAgICAgIHRpbGVf cHJldmlldy5zZXQoInNjYWxlLXgiLCBOT1RJRklDQVRJT05fTUFQX1NDQUxFX1gsICJzY2FsZS15 IiwgTk9USUZJQ0FUSU9OX01BUF9TQ0FMRV9ZLAotICAgICAgICAgICAgICJwaXZvdC1wb2ludCIs IFBWX0NFTlRFUik7Ci0gCi0tICAgICAgICB0aWxlX3ByZXZpZXcubG93ZXIod2luX2FjdG9yKTsK LSsgICAgICAgIC8vdGlsZV9wcmV2aWV3Lmxvd2VyKHdpbl9hY3Rvcik7Ci0gICAgICAgICB0aWxl X3ByZXZpZXcudGlsZV9yZWN0ID0gdGlsZV9yZWN0OwotIAotICAgICAgICAgdGlsZV9wcmV2aWV3 LnNob3coKTsKLWRpZmYgLS1naXQgdmFwaS9DbHV0dGVyLTUubWV0YWRhdGEgdmFwaS9DbHV0dGVy LTYubWV0YWRhdGEKLXNpbWlsYXJpdHkgaW5kZXggMTAwJQotcmVuYW1lIGZyb20gdmFwaS9DbHV0 dGVyLTUubWV0YWRhdGEKLXJlbmFtZSB0byB2YXBpL0NsdXR0ZXItNi5tZXRhZGF0YQotZGlmZiAt LWdpdCB2YXBpL0NsdXR0ZXItNC5tZXRhZGF0YSB2YXBpL0NsdXR0ZXItNy5tZXRhZGF0YQotc2lt aWxhcml0eSBpbmRleCA3OCUKLXJlbmFtZSBmcm9tIHZhcGkvQ2x1dHRlci00Lm1ldGFkYXRhCi1y ZW5hbWUgdG8gdmFwaS9DbHV0dGVyLTcubWV0YWRhdGEKLWluZGV4IDVjMjEyZTg1Li4xODU1Mjc0 ZCAxMDA2NDQKLS0tLSB2YXBpL0NsdXR0ZXItNC5tZXRhZGF0YQotKysrIHZhcGkvQ2x1dHRlci03 Lm1ldGFkYXRhCi1AQCAtMSwxMyArMSwxMCBAQAotIC8vIE5vbiBtaW5pLW9iamVjdAotIEFjdG9y Qm94IHN0cnVjdAotIENvbG9yIHN0cnVjdAotLUZvZyBzdHJ1Y3QKLS1HZW9tZXRyeSBzdHJ1Y3QK LSBLbm90IHN0cnVjdAotIFBhdGhOb2RlIHN0cnVjdAotIFBlcnNwZWN0aXZlIHN0cnVjdAotIFVu aXRzIHN0cnVjdAotLVZlcnRleCBzdHJ1Y3QKLSAKLSAqLnJlZiB1bm93bmVkCi0gCi1AQCAtMTcs NyArMTQsNiBAQCBpbml0X3dpdGhfYXJncwotIEFjdG9yCi0gCS5hcHBseV90cmFuc2Zvcm0ubWF0 cml4IHJlZgotIAkuZ2V0X2Fic19hbGxvY2F0aW9uX3ZlcnRpY2VzLnZlcnRzIG91dD1mYWxzZQot LQkuZ2V0X2FsbG9jYXRpb25fdmVydGljZXMudmVydHMgb3V0PWZhbHNlCi0gQ2FudmFzCi0gCS5u ZXcgc3ltYm9sX3R5cGU9ImNvbnN0cnVjdG9yIgotIEV2ZW50LnR5cGUjbWV0aG9kIG5hbWU9Imdl dF90eXBlIgotQEAgLTI3LDcgKzIzLDYgQEAgSW1hZ2UKLSAvLyA/Pz8KLSBBY3Rvci5oYXNfcG9p bnRlciNtZXRob2QgbmFtZT0iZ2V0X2hhc19wb2ludGVyIgotIEluaXRFcnJvciBlcnJvcmRvbWFp bj1mYWxzZQotLXJlZHJhdyBza2lwCi0gCi0gLy8gTm90IGFsbCBiYWNraW5nIHN5bWJvbHMgYXJl IGRlcHJlY2F0ZWQKLSBBY3Rvci5waWNrIGRlcHJlY2F0ZWQ9ZmFsc2UKLUBAIC01NSw3ICs1MCw2 IEBAIENvbnRhaW5lcgotIAkubG93ZXIgdmlydHVhbAotIAkucmFpc2UgdmlydHVhbAotIAkuKl9j aGlsZF9tZXRhI3ZpcnR1YWxfbWV0aG9kIHZpcnR1YWwKLS0JLmZvcmVhY2hfd2l0aF9pbnRlcm5h bHMjdmlydHVhbF9tZXRob2QgdmlydHVhbAotIAotIC8vIERlZmF1bHQgdmFsdWVzCi0gQ29udGFp bmVyCi1AQCAtNzAsMzIgKzY0LDIxIEBAIFRleHQKLSAvLyBSZXBhcmVudGVkIGZ1bmNzIG1ldGhv ZHMgY2FuJ3QgYmUgaW5zdGFuY2UgbWV0aG9kcwotIGZlYXR1cmVfYXZhaWxhYmxlIHNraXAKLSBm ZWF0dXJlX2dldF9hbGwgc2tpcAotLUZlYXR1cmVGbGFncy50ZXh0dXJlX25wb3Qgc2tpcAotIAot IC8vIFNraXBwZWQgYnkgZy1pIGZvciB1bmtub3duIHJlYXNvbnMKLSBMYXlvdXRNYW5hZ2VyCi0g CS5jcmVhdGVfY2hpbGRfbWV0YSBza2lwPWZhbHNlCi0tTW9kZWwKLS0JLmluc2VydF9yb3cgc2tp cD1mYWxzZQotIAotIC8vIFZhcmlhZGljIGFyZ3VtZW50cwotLUFjdG9yCi0tCS5hbmltYXRlIHNr aXA9ZmFsc2UKLS0JLmFuaW1hdGVfd2l0aF9hbHBoYSBza2lwPWZhbHNlCi0tCS5hbmltYXRlX3dp dGhfdGltZWxpbmUgc2tpcD1mYWxzZQotLUFuaW1hdG9yCi0tCS5zZXQgc2tpcD1mYWxzZQotIEJv eAotIAkucGFjayBza2lwPWZhbHNlCi0gCS5wYWNrX2FmdGVyIHNraXA9ZmFsc2UKLSAJLnBhY2tf YXQgc2tpcD1mYWxzZQotIAkucGFja19iZWZvcmUgc2tpcD1mYWxzZQotIENvbnRhaW5lcgotLQku YWRkX3ZhbGlzdCBza2lwPWZhbHNlCi0gCS5jaGlsZF9nZXQgc2tpcD1mYWxzZQotIAkuY2hpbGRf c2V0IHNraXA9ZmFsc2UKLSAJLnJlbW92ZSBza2lwPWZhbHNlCi0tCS5yZW1vdmVfdmFsaXN0IHNr aXA9ZmFsc2UKLSBJbnRlcnZhbAotIAkubmV3IHNraXA9ZmFsc2UKLSAJLmdldF9pbnRlcnZhbCBz a2lwPWZhbHNlCi1AQCAtMTA1LDE1ICs4OCw2IEBAIEludGVydmFsCi0gTGF5b3V0TWFuYWdlcgot IAkuY2hpbGRfZ2V0IHNraXA9ZmFsc2UKLSAJLmNoaWxkX3NldCBza2lwPWZhbHNlCi0tTGlzdE1v ZGVsCi0tCS5uZXcgc2tpcD1mYWxzZQotLU1vZGVsCi0tCS5hcHBlbmQgc2tpcD1mYWxzZQotLQku aW5zZXJ0IHNraXA9ZmFsc2UKLS0JLnByZXBlbmQgc2tpcD1mYWxzZQotLU1vZGVsSXRlcgotLQku Z2V0IHNraXA9ZmFsc2UKLS0JLnNldCBza2lwPWZhbHNlCi0gU2NyaXB0Ci0gCS5nZXRfb2JqZWN0 cyBza2lwPWZhbHNlCi0gCi1AQCAtMTIyLDE3ICs5NiwxMSBAQCBUZXh0dXJlCi0gCS5uZXdfZnJv bV9maWxlIHRocm93cz0iQ2x1dHRlci5UZXh0dXJlRXJyb3IiCi0gCi0gLy8gU2tpcHBlZCB1cHN0 cmVhbSBmb3IgdW5rbm93biByZWFzb25zCi0tQWxwaGEucmVnaXN0ZXJfZnVuYyBza2lwPWZhbHNl Ci0tVGltZW91dFBvb2wgc2tpcD1mYWxzZQotIEludGVydmFsLnJlZ2lzdGVyX3Byb2dyZXNzX2Z1 bmMgc2tpcD1mYWxzZQotLWZyYW1lX3NvdXJjZV8qIHNraXA9ZmFsc2UKLSBnZXRfb3B0aW9uX2dy b3VwIHNraXA9ZmFsc2UKLSBnZXRfb3B0aW9uX2dyb3VwX3dpdGhvdXRfaW5pdCBza2lwPWZhbHNl Ci0tdGhyZWFkc19hZGRfZnJhbWVfc291cmNlIHNraXA9ZmFsc2UKLS10aHJlYWRzX2FkZF9mcmFt ZV9zb3VyY2VfZnVsbCBza2lwPWZhbHNlCi0gdGhyZWFkc19hZGRfaWRsZSBza2lwPWZhbHNlCi0g dGhyZWFkc19hZGRfaWRsZV9mdWxsIHNraXA9ZmFsc2UKLS10aHJlYWRzX3NldF9sb2NrX2Z1bmN0 aW9ucyBza2lwPWZhbHNlCi0gdGhyZWFkc19hZGRfdGltZW91dCBza2lwPWZhbHNlCi0gdGhyZWFk c19hZGRfdGltZW91dF9mdWxsIHNraXA9ZmFsc2UKLSAKLUBAIC0xNDMsMTUgKzExMSwxMiBAQCBB Y3RvckJveAotIFVuaXRzLmZyb21fKiBza2lwCi0gQ29sb3IKLSAJLm5ldyBza2lwCi0tVmVydGV4 Lm5ldyBza2lwCi0gCi0gLy8gQ2xhc3MgbWV0aG9kcwotIGNvbnRhaW5lcl9jbGFzc19maW5kX2No aWxkX3Byb3BlcnR5IHNraXAKLSBjb250YWluZXJfY2xhc3NfbGlzdF9jaGlsZF9wcm9wZXJ0aWVz IHNraXAKLSAKLSAvLyBNb3ZlIHN5bWJvbHMKLS1nZXRfYWN0b3JfYnlfZ2lkIHBhcmVudD0iQ2x1 dHRlci5BY3RvciIgbmFtZT0iZ2V0X2J5X2dpZCIKLS1nZXRfaW5wdXRfZGV2aWNlX2Zvcl9pZCBw YXJlbnQ9IkNsdXR0ZXIuSW5wdXREZXZpY2UiIG5hbWU9ImdldF9mb3JfaWQiCi0gdW5pdHNfZnJv bV8qIHNraXAKLSAKLSAvLyBDbGFzc2VzIG1hcmtlZCBhcyBvdXQgYnV0IG5vdCBkb3VibGUgcHRy Ci1AQCAtMjAyLDIzICsxNjcsMTUgQEAgUEFUSF9SRUxBVElWRSBza2lwPWZhbHNlCi0gUFJJT1JJ VFlfUkVEUkFXIHNraXA9ZmFsc2UKLSAKLSAvLyBDbHV0dGVyIGRldnMgZG9uJ3QgbGlrZSB1cyBj cmVhdGluZyBuZXN0ZWQgbmFtZXNwYWNlcwotLWZyYW1lX3NvdXJjZV8qIG5hbWU9ImZyYW1lX3Nv dXJjZV8oLispIiBwYXJlbnQ9IkNsdXR0ZXIuRnJhbWVTb3VyY2UiCi0gdmFsdWVfKiBuYW1lPSJ2 YWx1ZV8oLispIiBwYXJlbnQ9IkNsdXR0ZXIuVmFsdWUiCi0gdGhyZWFkc18qIG5hbWU9InRocmVh ZHNfKC4rKSIgcGFyZW50PSJDbHV0dGVyLlRocmVhZHMiCi0tdGhyZWFkc19hZGRfZnJhbWVfc291 cmNlIG5hbWU9ImFkZCIgcGFyZW50PSJDbHV0dGVyLlRocmVhZHMuRnJhbWVTb3VyY2UiCi0tdGhy ZWFkc19hZGRfZnJhbWVfc291cmNlX2Z1bGwgbmFtZT0iYWRkX2Z1bGwiIHBhcmVudD0iQ2x1dHRl ci5UaHJlYWRzLkZyYW1lU291cmNlIgotIHRocmVhZHNfYWRkX2lkbGUgbmFtZT0iYWRkIiBwYXJl bnQ9IkNsdXR0ZXIuVGhyZWFkcy5JZGxlIgotIHRocmVhZHNfYWRkX2lkbGVfZnVsbCBuYW1lPSJh ZGRfZnVsbCIgcGFyZW50PSJDbHV0dGVyLlRocmVhZHMuSWRsZSIKLSB0aHJlYWRzX2FkZF90aW1l b3V0IG5hbWU9ImFkZCIgcGFyZW50PSJDbHV0dGVyLlRocmVhZHMuVGltZW91dCIKLSB0aHJlYWRz X2FkZF90aW1lb3V0X2Z1bGwgbmFtZT0iYWRkX2Z1bGwiIHBhcmVudD0iQ2x1dHRlci5UaHJlYWRz LlRpbWVvdXQiCi0tdXRpbF9uZXh0X3AyIG5hbWU9Im5leHRfcG93ZXJfb2ZfMiIgcGFyZW50PSJD bHV0dGVyLlV0aWwiCi0gCi0gLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHkKLSBDb2xvci5hbGxv YyBzeW1ib2xfdHlwZT0iZnVuY3Rpb24iCi0tUG9pbnQuYWxsb2Mgc3ltYm9sX3R5cGU9ImZ1bmN0 aW9uIgotLVJlY3QuYWxsb2Mgc3ltYm9sX3R5cGU9ImZ1bmN0aW9uIgotLVNpemUuYWxsb2Mgc3lt Ym9sX3R5cGU9ImZ1bmN0aW9uIgotLVZlcnRleC5hbGxvYyBzeW1ib2xfdHlwZT0iZnVuY3Rpb24i Ci0gCi0gQmluQWxpZ25tZW50IGRlcHJlY2F0ZWQ9ZmFsc2UgZGVwcmVjYXRlZF9zaW5jZT1udWxs Ci0gQmluQWxpZ25tZW50LiogZGVwcmVjYXRlZAotZGlmZiAtLWdpdCB2YXBpL0NvZ2wtNC5tZXRh ZGF0YSB2YXBpL0NvZ2wtNi5tZXRhZGF0YQotc2ltaWxhcml0eSBpbmRleCAxMDAlCi1yZW5hbWUg ZnJvbSB2YXBpL0NvZ2wtNC5tZXRhZGF0YQotcmVuYW1lIHRvIHZhcGkvQ29nbC02Lm1ldGFkYXRh Ci1kaWZmIC0tZ2l0IHZhcGkvQ29nbC01Lm1ldGFkYXRhIHZhcGkvQ29nbC03Lm1ldGFkYXRhCi1z aW1pbGFyaXR5IGluZGV4IDkxJQotcmVuYW1lIGZyb20gdmFwaS9Db2dsLTUubWV0YWRhdGEKLXJl bmFtZSB0byB2YXBpL0NvZ2wtNy5tZXRhZGF0YQotaW5kZXggMDkyYjVlMjkuLmU1MmJmYTM1IDEw MDY0NAotLS0tIHZhcGkvQ29nbC01Lm1ldGFkYXRhCi0rKysgdmFwaS9Db2dsLTcubWV0YWRhdGEK LUBAIC05LDEyICs5LDEwIEBAIGNyZWF0ZV9zaGFkZXIgc2tpcAotIAotIAotIGlzX2JpdG1hcCBz a2lwCi0taXNfbWF0ZXJpYWwgc2tpcAotIGlzX29mZnNjcmVlbiBza2lwCi0gaXNfcHJvZ3JhbSBz a2lwCi0gaXNfc2hhZGVyIHNraXAKLSBpc190ZXh0dXJlIHNraXAKLS1pc192ZXJ0ZXhfYnVmZmVy IHNraXAKLSAKLSBNYXRyaXggc3RydWN0Ci0gICAuZ2V0X2FycmF5IGFycmF5PXRydWUgYXJyYXlf bGVuZ3RoX2lkeD0tMQotZGlmZiAtLWdpdCB2YXBpL01ldGEtMy5tZXRhZGF0YSB2YXBpL01ldGEt My5tZXRhZGF0YQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAzNzBkNDk5Ni4uMDAw MDAwMDAKLS0tLSB2YXBpL01ldGEtMy5tZXRhZGF0YQotKysrIC9kZXYvbnVsbAotQEAgLTEsNjYg KzAsMCBAQAotLUJhY2tlbmQgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLWJhY2tlbmQuaCIK LS1CYWNrZ3JvdW5kIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgiCi0t QmFja2dyb3VuZEFjdG9yIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFj dG9yLmgiCi0tQmFja2dyb3VuZEdyb3VwIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1iYWNr Z3JvdW5kLWdyb3VwLmgiCi0tQmFja2dyb3VuZEltYWdlQ2FjaGUgY2hlYWRlcl9maWxlbmFtZT0i bWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCIKLS1EaXNwbGF5IGNoZWFkZXJfZmlsZW5hbWU9 Im1ldGEvZGlzcGxheS5oIgotLU1ldGEgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tYWluLmgiCi0t TW9uaXRvck1hbmFnZXIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLW1vbml0b3ItbWFuYWdl ci5oIgotLVJlY3RhbmdsZSBzdHJ1Y3QKLS1QbHVnaW4gY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9t ZXRhLXBsdWdpbi5oIgotLVBsdWdpbkluZm8gY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLXBs dWdpbi5oIgotLXByZWZzXyogY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9wcmVmcy5oIiBwYXJlbnQ9 Ik1ldGEuUHJlZnMiCi0tYWRkX3ZlcmJvc2VfdG9waWMgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFk ZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLWJ1ZyBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRl cl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tZGVidWdfc3Bld19yZWFsIHBhcmVudD0iTWV0YS5V dGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1lbXB0eV9zdGFnZV9pbnB1dF9y ZWdpb24gcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgot LXgxMV9lcnJvcl90cmFwX3BvcCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0i bWV0YS91dGlsLmgiCi0teDExX2Vycm9yX3RyYXBfcHVzaCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hl YWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0teDExX2Vycm9yX3RyYXBfcG9wX3dpdGhfcmV0 dXJuIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1l eHRlcm5hbF9iaW5kaW5nX25hbWVfZm9yX2FjdGlvbiBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRl cl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tZnJlZV9nc2xpc3RfYW5kX2VsZW1lbnRzIHBhcmVu dD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1nX3V0Zjhfc3Ry bmR1cCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0t Z2V0X2xvY2FsZV9kaXJlY3Rpb24gcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9 Im1ldGEvdXRpbC5oIgotLWdldF9vdmVybGF5X3dpbmRvdyBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hl YWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tZ3Jhdml0eV90b19zdHJpbmcgcGFyZW50PSJN ZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLWlzX2RlYnVnZ2luZyBw YXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0taXNfc3lu Y2luZyBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0t aXNfdmVyYm9zZSBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGls LmgiCi0taXNfd2F5bGFuZF9jb21wb3NpdG9yIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2Zp bGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1sYXRlcl9hZGQgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFk ZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLWxhdGVyX3JlbW92ZSBwYXJlbnQ9Ik1ldGEuVXRp bCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tcG9wX25vX21zZ19wcmVmaXggcGFy ZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLXB1c2hfbm9f bXNnX3ByZWZpeCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGls LmgiCi0tcmVjdCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGls LmgiCi0tcmVtb3ZlX3ZlcmJvc2VfdG9waWMgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmls ZW5hbWU9Im1ldGEvdXRpbC5oIgotLXNldF9zdGFnZV9pbnB1dF9yZWdpb24gcGFyZW50PSJNZXRh LlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLXNob3dfZGlhbG9nIHBhcmVu dD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS10b3BpY19yZWFs IHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS11bnNp Z25lZF9sb25nX2VxdWFsIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRh L3V0aWwuaCIKLS11bnNpZ25lZF9sb25nX2hhc2ggcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJf ZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLXZlcmJvc2VfcmVhbCBwYXJlbnQ9Ik1ldGEuVXRpbCIg Y2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0td2FybmluZyBwYXJlbnQ9Ik1ldGEuVXRp bCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tc2hvd19kaWFsb2cgcGFyZW50PSJN ZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLWdldF9zdGFnZV9mb3Jf ZGlzcGxheSBwYXJlbnQ9Ik1ldGEuQ29tcG9zaXRvciIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9j b21wb3NpdG9yLW11dHRlci5oIgotLWdldF93aW5kb3dfYWN0b3JzIHBhcmVudD0iTWV0YS5Db21w b3NpdG9yIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiCi0tZ2V0 X3dpbmRvd19ncm91cF9mb3JfZGlzcGxheSBwYXJlbnQ9Ik1ldGEuQ29tcG9zaXRvciIgY2hlYWRl cl9maWxlbmFtZT0ibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIgotLWdldF90b3Bfd2luZG93X2dy b3VwX2Zvcl9kaXNwbGF5IHBhcmVudD0iTWV0YS5Db21wb3NpdG9yIiBjaGVhZGVyX2ZpbGVuYW1l PSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiCi0tZ2V0X2ZlZWRiYWNrX2dyb3VwX2Zvcl9kaXNw bGF5IHBhcmVudD0iTWV0YS5Db21wb3NpdG9yIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2NvbXBv c2l0b3ItbXV0dGVyLmgiCi0tZGlzYWJsZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IHBhcmVudD0i TWV0YS5Db21wb3NpdG9yIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVy LmgiCi0tZW5hYmxlX3VucmVkaXJlY3RfZm9yX2Rpc3BsYXkgcGFyZW50PSJNZXRhLkNvbXBvc2l0 b3IiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIKLS1zZXRfc3Rh Z2VfaW5wdXRfcmVnaW9uIHBhcmVudD0iTWV0YS5Db21wb3NpdG9yIiBjaGVhZGVyX2ZpbGVuYW1l PSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiCi0tZW1wdHlfc3RhZ2VfaW5wdXRfcmVnaW9uIHBh cmVudD0iTWV0YS5Db21wb3NpdG9yIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2NvbXBvc2l0b3It bXV0dGVyLmgiCi0tZm9jdXNfc3RhZ2Vfd2luZG93IHBhcmVudD0iTWV0YS5Db21wb3NpdG9yIiBj aGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiCi0tc3RhZ2VfaXNfZm9j dXNlZCBwYXJlbnQ9Ik1ldGEuQ29tcG9zaXRvciIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9jb21w b3NpdG9yLW11dHRlci5oIgotLWtleWJpbmRpbmdzX3NldF9jdXN0b21faGFuZGxlciBwYXJlbnQ9 Ik1ldGEuS2V5QmluZGluZyIgbmFtZT0ic2V0X2N1c3RvbV9oYW5kbGVyIgotLUtleUhhbmRsZXJG dW5jLmV2ZW50IHR5cGU9IkNsdXR0ZXIuS2V5RXZlbnQ/IgotLWdldF9iYWNrZW5kIHBhcmVudD0i TWV0YS5CYWNrZW5kIgotLVdpbmRvdy5mb2N1cyNzaWduYWwgc2tpcD10cnVlCi0tV2luZG93Lmdl dF94d2luZG93IHNraXA9ZmFsc2UKLS1nZXRfb3B0aW9uX2NvbnRleHQgc2tpcD1mYWxzZQotLXNl dF9nbm9tZV93bV9rZXliaW5kaW5ncyBza2lwPWZhbHNlCi0tc2V0X3dtX25hbWUgc2tpcD1mYWxz ZQotLWluaXQgc2tpcD1mYWxzZQotLXJ1biBza2lwPWZhbHNlCi0tc2hvd19kaWFsb2cgc2tpcD1m YWxzZQotLWdldF9iYWNrZW5kIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1iYWNrZW5kLmgi Ci1kaWZmIC0tZ2l0IHZhcGkvTWV0YS01Lm1ldGFkYXRhIHZhcGkvTWV0YS02Lm1ldGFkYXRhCi1z aW1pbGFyaXR5IGluZGV4IDEwMCUKLXJlbmFtZSBmcm9tIHZhcGkvTWV0YS01Lm1ldGFkYXRhCi1y ZW5hbWUgdG8gdmFwaS9NZXRhLTYubWV0YWRhdGEKLWRpZmYgLS1naXQgdmFwaS9NZXRhLTQubWV0 YWRhdGEgdmFwaS9NZXRhLTcubWV0YWRhdGEKLXNpbWlsYXJpdHkgaW5kZXggNzYlCi1yZW5hbWUg ZnJvbSB2YXBpL01ldGEtNC5tZXRhZGF0YQotcmVuYW1lIHRvIHZhcGkvTWV0YS03Lm1ldGFkYXRh Ci1pbmRleCBhZTJhNzgxNy4uNzI2MjlmYmEgMTAwNjQ0Ci0tLS0gdmFwaS9NZXRhLTQubWV0YWRh dGEKLSsrKyB2YXBpL01ldGEtNy5tZXRhZGF0YQotQEAgLTEsMjYgKzEsMjEgQEAKLSBCYWNrZW5k IGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1iYWNrZW5kLmgiCi0gQmFja2dyb3VuZCBjaGVh ZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtYmFja2dyb3VuZC5oIgotIEJhY2tncm91bmRBY3RvciBj aGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oIgotK0JhY2tncm91 bmRDb250ZW50IGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1iYWNrZ3JvdW5kLWNvbnRlbnQu aCIKLSBCYWNrZ3JvdW5kR3JvdXAgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLWJhY2tncm91 bmQtZ3JvdXAuaCIKLSBCYWNrZ3JvdW5kSW1hZ2UgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRh LWJhY2tncm91bmQtaW1hZ2UuaCIKLSBCYWNrZ3JvdW5kSW1hZ2VDYWNoZSBjaGVhZGVyX2ZpbGVu YW1lPSJtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oIgotIEJhcnJpZXIgY2hlYWRlcl9maWxl bmFtZT0ibWV0YS9iYXJyaWVyLmgiCi0gQmFycmllckV2ZW50IGNoZWFkZXJfZmlsZW5hbWU9Im1l dGEvYmFycmllci5oIgotLUJveGVzIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvYm94ZXMuaCIKLSBD bG9zZURpYWxvZyBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgiCi0t Q29tcG9zaXRvciBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2NvbXBvc2l0b3IuaCIKLS1Db21wb3Np dG9yTXV0dGVyIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIKLSBD dXJzb3JUcmFja2VyIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5o IgotIERpc3BsYXkgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9kaXNwbGF5LmgiCi0gRG5kIGNoZWFk ZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1kbmQuaCIKLS1Hcm91cCBjaGVhZGVyX2ZpbGVuYW1lPSJt ZXRhL2dyb3VwLmgiCi0gSWRsZU1vbml0b3IgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLWlk bGUtbW9uaXRvci5oIgotIEluaGliaXRTaG9ydGN1dHNEaWFsb2cgY2hlYWRlcl9maWxlbmFtZT0i bWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oIgotLUtleWJpbmRpbmdzIGNoZWFk ZXJfZmlsZW5hbWU9Im1ldGEva2V5YmluZGluZ3MuaCIKLSBMYXVuY2hDb250ZXh0IGNoZWFkZXJf ZmlsZW5hbWU9Im1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oIgotIE1ldGEgY2hlYWRlcl9maWxl bmFtZT0ibWV0YS9tYWluLmgiCi0gTW9uaXRvck1hbmFnZXIgY2hlYWRlcl9maWxlbmFtZT0ibWV0 YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oIgotLVBsdWdpbiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRh L21ldGEtcGx1Z2luLmgiCi0gUHJlZmVyZW5jZSBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3ByZWZz LmgiCi0gUmVtb3RlQWNjZXNzQ29udHJvbGxlciBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEt cmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgiCi0gUmVtb3RlQWNjZXNzSGFuZGxlIGNoZWFkZXJf ZmlsZW5hbWU9Im1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCIKLUBAIC0zMSw5 ICsyNiw3IEBAIFNvdW5kUGxheWVyIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1zb3VuZC1w bGF5ZXIuaCIKLSBTdGFnZSBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtc3RhZ2UuaCIKLSBT dGFydHVwTm90aWZpY2F0aW9uIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS1zdGFydHVwLW5v dGlmaWNhdGlvbi5oIgotIFRoZW1lIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdGhlbWUuaCIKLS1U eXBlcyBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3R5cGVzLmgiCi0tVXRpbCBjaGVhZGVyX2ZpbGVu YW1lPSJtZXRhL3V0aWwuaCIKLS1WZXJzaW9uIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvbWV0YS12 ZXJzaW9uLmgiCi0rV2F5bGFuZENsaWVudCBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtd2F5 bGFuZC1jbGllbnQuaCIKLSBXaW5kb3cgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS93aW5kb3cuaCIK LSBXaW5kb3dBY3RvciBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL21ldGEtd2luZG93LWFjdG9yLmgi Ci0gV2luZG93R3JvdXAgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLXdpbmRvdy1ncm91cC5o IgotQEAgLTQ2LDE3ICszOSwxMSBAQCBQbHVnaW4gY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRh LXBsdWdpbi5oIgotIFBsdWdpbkluZm8gY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9tZXRhLXBsdWdp bi5oIgotIHByZWZzXyogY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9wcmVmcy5oIiBwYXJlbnQ9Ik1l dGEuUHJlZnMiCi0gYWRkX3ZlcmJvc2VfdG9waWMgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJf ZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotLWJ1ZyBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9m aWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tZGVidWdfc3Bld19yZWFsIHBhcmVudD0iTWV0YS5VdGls IiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1lbXB0eV9zdGFnZV9pbnB1dF9yZWdp b24gcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotIHgx MV9lcnJvcl90cmFwX3BvcCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0 YS91dGlsLmgiCi0geDExX2Vycm9yX3RyYXBfcHVzaCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRl cl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0geDExX2Vycm9yX3RyYXBfcG9wX3dpdGhfcmV0dXJu IHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLSBleHRl cm5hbF9iaW5kaW5nX25hbWVfZm9yX2FjdGlvbiBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9m aWxlbmFtZT0ibWV0YS91dGlsLmgiCi0tZnJlZV9nc2xpc3RfYW5kX2VsZW1lbnRzIHBhcmVudD0i TWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS1nX3V0Zjhfc3RybmR1 cCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0gZ2V0 X2xvY2FsZV9kaXJlY3Rpb24gcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1l dGEvdXRpbC5oIgotLWdldF9vdmVybGF5X3dpbmRvdyBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRl cl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0gZ3Jhdml0eV90b19zdHJpbmcgcGFyZW50PSJNZXRh LlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotIGlzX2RlYnVnZ2luZyBwYXJl bnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0gaXNfc3luY2lu ZyBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi1AQCAt NjgsMTMgKzU1LDggQEAgcG9wX25vX21zZ19wcmVmaXggcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFk ZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgotIHB1c2hfbm9fbXNnX3ByZWZpeCBwYXJlbnQ9Ik1l dGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0gcmVjdCBwYXJlbnQ9Ik1l dGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS91dGlsLmgiCi0gcmVtb3ZlX3ZlcmJvc2Vf dG9waWMgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5oIgot LXNldF9zdGFnZV9pbnB1dF9yZWdpb24gcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5h bWU9Im1ldGEvdXRpbC5oIgotLXNob3dfZGlhbG9nIHBhcmVudD0iTWV0YS5VdGlsIiBjaGVhZGVy X2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLS10b3BpY19yZWFsIHBhcmVudD0iTWV0YS5VdGlsIiBj aGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLSB1bnNpZ25lZF9sb25nX2VxdWFsIHBhcmVu dD0iTWV0YS5VdGlsIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL3V0aWwuaCIKLSB1bnNpZ25lZF9s b25nX2hhc2ggcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvdXRpbC5o IgotLXZlcmJvc2VfcmVhbCBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0ibWV0 YS91dGlsLmgiCi0td2FybmluZyBwYXJlbnQ9Ik1ldGEuVXRpbCIgY2hlYWRlcl9maWxlbmFtZT0i bWV0YS91dGlsLmgiCi0gc2hvd19kaWFsb2cgcGFyZW50PSJNZXRhLlV0aWwiIGNoZWFkZXJfZmls ZW5hbWU9Im1ldGEvdXRpbC5oIgotIGdldF9zdGFnZV9mb3JfZGlzcGxheSBwYXJlbnQ9Ik1ldGEu Q29tcG9zaXRvciIgY2hlYWRlcl9maWxlbmFtZT0ibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIgot IGdldF93aW5kb3dfYWN0b3JzIHBhcmVudD0iTWV0YS5Db21wb3NpdG9yIiBjaGVhZGVyX2ZpbGVu YW1lPSJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiCi1AQCAtODMsMTAgKzY1LDcgQEAgZ2V0X3Rv cF93aW5kb3dfZ3JvdXBfZm9yX2Rpc3BsYXkgcGFyZW50PSJNZXRhLkNvbXBvc2l0b3IiIGNoZWFk ZXJfZmlsZW5hbWU9Im1ldGEKLSBnZXRfZmVlZGJhY2tfZ3JvdXBfZm9yX2Rpc3BsYXkgcGFyZW50 PSJNZXRhLkNvbXBvc2l0b3IiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvY29tcG9zaXRvci1tdXR0 ZXIuaCIKLSBkaXNhYmxlX3VucmVkaXJlY3RfZm9yX2Rpc3BsYXkgcGFyZW50PSJNZXRhLkNvbXBv c2l0b3IiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIKLSBlbmFi bGVfdW5yZWRpcmVjdF9mb3JfZGlzcGxheSBwYXJlbnQ9Ik1ldGEuQ29tcG9zaXRvciIgY2hlYWRl cl9maWxlbmFtZT0ibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIgotLXNldF9zdGFnZV9pbnB1dF9y ZWdpb24gcGFyZW50PSJNZXRhLkNvbXBvc2l0b3IiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvY29t cG9zaXRvci1tdXR0ZXIuaCIKLS1lbXB0eV9zdGFnZV9pbnB1dF9yZWdpb24gcGFyZW50PSJNZXRh LkNvbXBvc2l0b3IiIGNoZWFkZXJfZmlsZW5hbWU9Im1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIK LSBmb2N1c19zdGFnZV93aW5kb3cgcGFyZW50PSJNZXRhLkNvbXBvc2l0b3IiIGNoZWFkZXJfZmls ZW5hbWU9Im1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIKLS1zdGFnZV9pc19mb2N1c2VkIHBhcmVu dD0iTWV0YS5Db21wb3NpdG9yIiBjaGVhZGVyX2ZpbGVuYW1lPSJtZXRhL2NvbXBvc2l0b3ItbXV0 dGVyLmgiCi0ga2V5YmluZGluZ3Nfc2V0X2N1c3RvbV9oYW5kbGVyIHBhcmVudD0iTWV0YS5LZXlC aW5kaW5nIiBuYW1lPSJzZXRfY3VzdG9tX2hhbmRsZXIiCi0gS2V5SGFuZGxlckZ1bmMuZXZlbnQg dHlwZT0iQ2x1dHRlci5LZXlFdmVudD8iCi0gZ2V0X2JhY2tlbmQgcGFyZW50PSJNZXRhLkJhY2tl bmQiCi1kaWZmIC0tZ2l0IHZhcGkvZ2VuZXJhdGUtbXV0dGVyLXZhcGkuc2ggdmFwaS9nZW5lcmF0 ZS1tdXR0ZXItdmFwaS5zaAotaW5kZXggNmIwNzAyNDAuLmIyMzNlNTg2IDEwMDc1NQotLS0tIHZh cGkvZ2VuZXJhdGUtbXV0dGVyLXZhcGkuc2gKLSsrKyB2YXBpL2dlbmVyYXRlLW11dHRlci12YXBp LnNoCi1AQCAtMSw3ICsxLDcgQEAKLSAjIS9iaW4vYmFzaAotIHNldCAteGUKLSAKLS12ZXJzaW9u PSR7MS00fQotK3ZlcnNpb249JHs2LTd9Ci0gZ2lyZGlyPSQocGtnLWNvbmZpZyBsaWJtdXR0ZXIt JHZlcnNpb24gLS12YXJpYWJsZT1naXJkaXIpCi0gCi0gY2QgJChkaXJuYW1lICQwKQotZGlmZiAt LWdpdCB2YXBpL2dyYXBoZW5lLWdvYmplY3QtMS4wLnZhcGkgdmFwaS9ncmFwaGVuZS1nb2JqZWN0 LTEuMC52YXBpCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAuLjY5ODAxNTM1 Ci0tLS0gL2Rldi9udWxsCi0rKysgdmFwaS9ncmFwaGVuZS1nb2JqZWN0LTEuMC52YXBpCi1AQCAt MCwwICsxLDY5MSBAQAotKy8qIGdyYXBoZW5lLWdvYmplY3QtMS4wLnZhcGkgZ2VuZXJhdGVkIGJ5 IHZhcGlnZW4sIGRvIG5vdCBtb2RpZnkuICovCi0rCi0rW0NDb2RlIChjcHJlZml4ID0gIkdyYXBo ZW5lIiwgZ2lyX25hbWVzcGFjZSA9ICJHcmFwaGVuZSIsIGdpcl92ZXJzaW9uID0gIjEuMCIsIGxv d2VyX2Nhc2VfY3ByZWZpeCA9ICJncmFwaGVuZV8iKV0KLStuYW1lc3BhY2UgR3JhcGhlbmUgewot KwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUg PSAiZ3JhcGhlbmVfYm94X3QiLCB0eXBlX2lkID0gImdyYXBoZW5lX2JveF9nZXRfdHlwZSAoKSIp XQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCXB1YmxpYyBzdHJ1Y3QgQm94IHsKLSsJ CXB1YmxpYyBib29sIGNvbnRhaW5zX2JveCAoR3JhcGhlbmUuQm94IGIpOwotKwkJcHVibGljIGJv b2wgY29udGFpbnNfcG9pbnQgKEdyYXBoZW5lLlBvaW50M0QgcG9pbnQpOwotKwkJcHVibGljIHN0 YXRpYyB1bm93bmVkIEdyYXBoZW5lLkJveD8gZW1wdHkgKCk7Ci0rCQlwdWJsaWMgYm9vbCBlcXVh bCAoR3JhcGhlbmUuQm94IGIpOwotKwkJcHVibGljIEdyYXBoZW5lLkJveCBleHBhbmQgKEdyYXBo ZW5lLlBvaW50M0QgcG9pbnQpOwotKwkJcHVibGljIEdyYXBoZW5lLkJveCBleHBhbmRfc2NhbGFy IChmbG9hdCBzY2FsYXIpOwotKwkJcHVibGljIEdyYXBoZW5lLkJveCBleHBhbmRfdmVjMyAoR3Jh cGhlbmUuVmVjMyB2ZWMpOwotKwkJcHVibGljIEdyYXBoZW5lLlNwaGVyZSBnZXRfYm91bmRpbmdf c3BoZXJlICgpOwotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50M0QgZ2V0X2NlbnRlciAoKTsKLSsJ CXB1YmxpYyBmbG9hdCBnZXRfZGVwdGggKCk7Ci0rCQlwdWJsaWMgZmxvYXQgZ2V0X2hlaWdodCAo KTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludDNEIGdldF9tYXggKCk7Ci0rCQlwdWJsaWMgR3Jh cGhlbmUuUG9pbnQzRCBnZXRfbWluICgpOwotKwkJcHVibGljIEdyYXBoZW5lLlZlYzMgZ2V0X3Np emUgKCk7Ci0rCQlwdWJsaWMgdm9pZCBnZXRfdmVydGljZXMgKFtDQ29kZSAoYXJyYXlfbGVuZ3Ro ID0gZmFsc2UpXSByZWYgR3JhcGhlbmUuVmVjMyB2ZXJ0aWNlc1s4XSk7Ci0rCQlwdWJsaWMgZmxv YXQgZ2V0X3dpZHRoICgpOwotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdyYXBoZW5lLkJveD8g aW5maW5pdGUgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5Cb3g/IGluaXQgKEdyYXBo ZW5lLlBvaW50M0Q/IG1pbiwgR3JhcGhlbmUuUG9pbnQzRD8gbWF4KTsKLSsJCXB1YmxpYyB1bm93 bmVkIEdyYXBoZW5lLkJveD8gaW5pdF9mcm9tX2JveCAoR3JhcGhlbmUuQm94IHNyYyk7Ci0rCQlw dWJsaWMgdW5vd25lZCBHcmFwaGVuZS5Cb3g/IGluaXRfZnJvbV9wb2ludHMgKFtDQ29kZSAoYXJy YXlfbGVuZ3RoX2NuYW1lID0gIm5fcG9pbnRzIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDAuNSwgYXJy YXlfbGVuZ3RoX3R5cGUgPSAiZ3VpbnQiKV0gR3JhcGhlbmUuUG9pbnQzRFtdIHBvaW50cyk7Ci0r CQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5Cb3g/IGluaXRfZnJvbV92ZWMzIChHcmFwaGVuZS5W ZWMzPyBtaW4sIEdyYXBoZW5lLlZlYzM/IG1heCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVu ZS5Cb3g/IGluaXRfZnJvbV92ZWN0b3JzIChbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9ICJu X3ZlY3RvcnMiLCBhcnJheV9sZW5ndGhfcG9zID0gMC41LCBhcnJheV9sZW5ndGhfdHlwZSA9ICJn dWludCIpXSBHcmFwaGVuZS5WZWMzW10gdmVjdG9ycyk7Ci0rCQlwdWJsaWMgYm9vbCBpbnRlcnNl Y3Rpb24gKEdyYXBoZW5lLkJveCBiLCBvdXQgR3JhcGhlbmUuQm94IHJlcyk7Ci0rCQlwdWJsaWMg c3RhdGljIHVub3duZWQgR3JhcGhlbmUuQm94PyBtaW51c19vbmUgKCk7Ci0rCQlwdWJsaWMgc3Rh dGljIHVub3duZWQgR3JhcGhlbmUuQm94PyBvbmUgKCk7Ci0rCQlwdWJsaWMgc3RhdGljIHVub3du ZWQgR3JhcGhlbmUuQm94PyBvbmVfbWludXNfb25lICgpOwotKwkJcHVibGljIEdyYXBoZW5lLkJv eCB1bmlvbiAoR3JhcGhlbmUuQm94IGIpOwotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdyYXBo ZW5lLkJveD8gemVybyAoKTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3Jh cGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZ3JhcGhlbmVfZXVsZXJfdCIsIHR5cGVfaWQgPSAi Z3JhcGhlbmVfZXVsZXJfZ2V0X3R5cGUgKCkiKV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIp XQotKwlwdWJsaWMgc3RydWN0IEV1bGVyIHsKLSsJCXB1YmxpYyBib29sIGVxdWFsIChHcmFwaGVu ZS5FdWxlciBiKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgZmxv YXQgZ2V0X2FscGhhICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1Ymxp YyBmbG9hdCBnZXRfYmV0YSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlw dWJsaWMgZmxvYXQgZ2V0X2dhbW1hICgpOwotKwkJcHVibGljIEdyYXBoZW5lLkV1bGVyT3JkZXIg Z2V0X29yZGVyICgpOwotKwkJcHVibGljIGZsb2F0IGdldF94ICgpOwotKwkJcHVibGljIGZsb2F0 IGdldF95ICgpOwotKwkJcHVibGljIGZsb2F0IGdldF96ICgpOwotKwkJcHVibGljIHVub3duZWQg R3JhcGhlbmUuRXVsZXI/IGluaXQgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotKwkJcHVi bGljIHVub3duZWQgR3JhcGhlbmUuRXVsZXI/IGluaXRfZnJvbV9ldWxlciAoR3JhcGhlbmUuRXVs ZXI/IHNyYyk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5FdWxlcj8gaW5pdF9mcm9tX21h dHJpeCAoR3JhcGhlbmUuTWF0cml4PyBtLCBHcmFwaGVuZS5FdWxlck9yZGVyIG9yZGVyKTsKLSsJ CXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLkV1bGVyPyBpbml0X2Zyb21fcXVhdGVybmlvbiAoR3Jh cGhlbmUuUXVhdGVybmlvbj8gcSwgR3JhcGhlbmUuRXVsZXJPcmRlciBvcmRlcik7Ci0rCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuRXVsZXI/ IGluaXRfZnJvbV9yYWRpYW5zIChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBHcmFwaGVuZS5F dWxlck9yZGVyIG9yZGVyKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLkV1bGVyPyBpbml0 X2Zyb21fdmVjMyAoR3JhcGhlbmUuVmVjMz8gdiwgR3JhcGhlbmUuRXVsZXJPcmRlciBvcmRlcik7 Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5FdWxlcj8gaW5pdF93aXRoX29yZGVyIChmbG9h dCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBHcmFwaGVuZS5FdWxlck9yZGVyIG9yZGVyKTsKLSsJCXB1 YmxpYyBHcmFwaGVuZS5FdWxlciByZW9yZGVyIChHcmFwaGVuZS5FdWxlck9yZGVyIG9yZGVyKTsK LSsJCXB1YmxpYyBHcmFwaGVuZS5NYXRyaXggdG9fbWF0cml4ICgpOwotKwkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5RdWF0ZXJuaW9uIHRvX3F1YXRlcm5p b24gKCk7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMyB0b192ZWMzICgpOwotKwl9Ci0rCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJncmFw aGVuZV9mcnVzdHVtX3QiLCB0eXBlX2lkID0gImdyYXBoZW5lX2ZydXN0dW1fZ2V0X3R5cGUgKCki KV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotKwlwdWJsaWMgc3RydWN0IEZydXN0dW0g ewotKwkJcHVibGljIGJvb2wgY29udGFpbnNfcG9pbnQgKEdyYXBoZW5lLlBvaW50M0QgcG9pbnQp OwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotKwkJcHVibGljIGJvb2wgZXF1YWwgKEdy YXBoZW5lLkZydXN0dW0gYik7Ci0rCQlwdWJsaWMgdm9pZCBnZXRfcGxhbmVzIChbQ0NvZGUgKGFy cmF5X2xlbmd0aCA9IGZhbHNlKV0gcmVmIEdyYXBoZW5lLlBsYW5lIHBsYW5lc1s2XSk7Ci0rCQlw dWJsaWMgdW5vd25lZCBHcmFwaGVuZS5GcnVzdHVtPyBpbml0IChHcmFwaGVuZS5QbGFuZSBwMCwg R3JhcGhlbmUuUGxhbmUgcDEsIEdyYXBoZW5lLlBsYW5lIHAyLCBHcmFwaGVuZS5QbGFuZSBwMywg R3JhcGhlbmUuUGxhbmUgcDQsIEdyYXBoZW5lLlBsYW5lIHA1KTsKLSsJCXB1YmxpYyB1bm93bmVk IEdyYXBoZW5lLkZydXN0dW0/IGluaXRfZnJvbV9mcnVzdHVtIChHcmFwaGVuZS5GcnVzdHVtIHNy Yyk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5GcnVzdHVtPyBpbml0X2Zyb21fbWF0cml4 IChHcmFwaGVuZS5NYXRyaXggbWF0cml4KTsKLSsJCXB1YmxpYyBib29sIGludGVyc2VjdHNfYm94 IChHcmFwaGVuZS5Cb3ggYm94KTsKLSsJCXB1YmxpYyBib29sIGludGVyc2VjdHNfc3BoZXJlIChH cmFwaGVuZS5TcGhlcmUgc3BoZXJlKTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZ3JhcGhlbmVfbWF0cml4X3QiLCB0eXBl X2lkID0gImdyYXBoZW5lX21hdHJpeF9nZXRfdHlwZSAoKSIpXQotKwlwdWJsaWMgc3RydWN0IE1h dHJpeCB7Ci0rCQlwdWJsaWMgYm9vbCBkZWNvbXBvc2UgKG91dCBHcmFwaGVuZS5WZWMzIHRyYW5z bGF0ZSwgb3V0IEdyYXBoZW5lLlZlYzMgc2NhbGUsIG91dCBHcmFwaGVuZS5RdWF0ZXJuaW9uIHJv dGF0ZSwgb3V0IEdyYXBoZW5lLlZlYzMgc2hlYXIsIG91dCBHcmFwaGVuZS5WZWM0IHBlcnNwZWN0 aXZlKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBmbG9hdCBkZXRl cm1pbmFudCAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgYm9v bCBlcXVhbCAoR3JhcGhlbmUuTWF0cml4IGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAi KV0KLSsJCXB1YmxpYyBib29sIGVxdWFsX2Zhc3QgKEdyYXBoZW5lLk1hdHJpeCBiKTsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWM0IGdldF9yb3cg KHVpbnQgaW5kZXhfKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBm bG9hdCBnZXRfdmFsdWUgKHVpbnQgcm93LCB1aW50IGNvbCk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X3hfc2NhbGUgKCk7Ci0rCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4xMCIpXQotKwkJcHVibGljIGZsb2F0IGdldF94X3RyYW5zbGF0aW9uICgpOwot KwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIGZsb2F0IGdldF95X3NjYWxl ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBmbG9hdCBnZXRf eV90cmFuc2xhdGlvbiAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1Ymxp YyBmbG9hdCBnZXRfel9zY2FsZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0r CQlwdWJsaWMgZmxvYXQgZ2V0X3pfdHJhbnNsYXRpb24gKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5NYXRyaXg/IGluaXRfZnJvbV8y ZCAoZG91YmxlIHh4LCBkb3VibGUgeXgsIGRvdWJsZSB4eSwgZG91YmxlIHl5LCBkb3VibGUgeF8w LCBkb3VibGUgeV8wKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB1 bm93bmVkIEdyYXBoZW5lLk1hdHJpeD8gaW5pdF9mcm9tX2Zsb2F0IChbQ0NvZGUgKGFycmF5X2xl bmd0aCA9IGZhbHNlKV0gZmxvYXQgdlsxNl0pOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIp XQotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuTWF0cml4PyBpbml0X2Zyb21fbWF0cml4IChH cmFwaGVuZS5NYXRyaXggc3JjKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1 YmxpYyB1bm93bmVkIEdyYXBoZW5lLk1hdHJpeD8gaW5pdF9mcm9tX3ZlYzQgKEdyYXBoZW5lLlZl YzQgdjAsIEdyYXBoZW5lLlZlYzQgdjEsIEdyYXBoZW5lLlZlYzQgdjIsIEdyYXBoZW5lLlZlYzQg djMpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotKwkJcHVibGljIHVub3duZWQgR3Jh cGhlbmUuTWF0cml4PyBpbml0X2ZydXN0dW0gKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBmbG9h dCBib3R0b20sIGZsb2F0IHRvcCwgZmxvYXQgel9uZWFyLCBmbG9hdCB6X2Zhcik7Ci0rCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5NYXRyaXg/ IGluaXRfaWRlbnRpdHkgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJs aWMgdW5vd25lZCBHcmFwaGVuZS5NYXRyaXg/IGluaXRfbG9va19hdCAoR3JhcGhlbmUuVmVjMyBl eWUsIEdyYXBoZW5lLlZlYzMgY2VudGVyLCBHcmFwaGVuZS5WZWMzIHVwKTsKLSsJCVtWZXJzaW9u IChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLk1hdHJpeD8gaW5p dF9vcnRobyAoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IHRvcCwgZmxvYXQgYm90dG9t LCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAi KV0KLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLk1hdHJpeD8gaW5pdF9wZXJzcGVjdGl2ZSAo ZmxvYXQgZm92eSwgZmxvYXQgYXNwZWN0LCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsKLSsJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLk1h dHJpeD8gaW5pdF9yb3RhdGUgKGZsb2F0IGFuZ2xlLCBHcmFwaGVuZS5WZWMzIGF4aXMpOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuTWF0 cml4PyBpbml0X3NjYWxlIChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSsJCVtWZXJzaW9u IChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLk1hdHJpeD8gaW5p dF9za2V3IChmbG9hdCB4X3NrZXcsIGZsb2F0IHlfc2tldyk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5NYXRyaXg/IGluaXRfdHJhbnNs YXRlIChHcmFwaGVuZS5Qb2ludDNEIHApOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQot KwkJcHVibGljIEdyYXBoZW5lLk1hdHJpeCBpbnRlcnBvbGF0ZSAoR3JhcGhlbmUuTWF0cml4IGIs IGRvdWJsZSBmYWN0b3IpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGlj IGJvb2wgaW52ZXJzZSAob3V0IEdyYXBoZW5lLk1hdHJpeCByZXMpOwotKwkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMCIpXQotKwkJcHVibGljIGJvb2wgaXNfMmQgKCk7Ci0rCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4wIildCi0rCQlwdWJsaWMgYm9vbCBpc19iYWNrZmFjZV92aXNpYmxlICgpOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIGJvb2wgaXNfaWRlbnRpdHkgKCk7 Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgYm9vbCBpc19zaW5ndWxh ciAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5N YXRyaXggbXVsdGlwbHkgKEdyYXBoZW5lLk1hdHJpeCBiKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEwIildCi0rCQlwdWJsaWMgYm9vbCBuZWFyIChHcmFwaGVuZS5NYXRyaXggYiwgZmxvYXQg ZXBzaWxvbik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhl bmUuTWF0cml4IG5vcm1hbGl6ZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJ CXB1YmxpYyBHcmFwaGVuZS5NYXRyaXggcGVyc3BlY3RpdmUgKGZsb2F0IGRlcHRoKTsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB2b2lkIHByaW50ICgpOwotKwkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50IHByb2plY3Rf cG9pbnQgKEdyYXBoZW5lLlBvaW50IHApOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQot KwkJcHVibGljIEdyYXBoZW5lLlF1YWQgcHJvamVjdF9yZWN0IChHcmFwaGVuZS5SZWN0IHIpOwot KwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlJlY3QgcHJv amVjdF9yZWN0X2JvdW5kcyAoR3JhcGhlbmUuUmVjdCByKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjAiKV0KLSsJCXB1YmxpYyB2b2lkIHJvdGF0ZSAoZmxvYXQgYW5nbGUsIEdyYXBoZW5lLlZl YzMgYXhpcyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlwdWJsaWMgdm9pZCBy b3RhdGVfZXVsZXIgKEdyYXBoZW5lLkV1bGVyIGUpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MiIpXQotKwkJcHVibGljIHZvaWQgcm90YXRlX3F1YXRlcm5pb24gKEdyYXBoZW5lLlF1YXRlcm5p b24gcSk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdm9pZCByb3Rh dGVfeCAoZmxvYXQgYW5nbGUpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVi bGljIHZvaWQgcm90YXRlX3kgKGZsb2F0IGFuZ2xlKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjAiKV0KLSsJCXB1YmxpYyB2b2lkIHJvdGF0ZV96IChmbG9hdCBhbmdsZSk7Ci0rCQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdm9pZCBzY2FsZSAoZmxvYXQgZmFjdG9yX3gs IGZsb2F0IGZhY3Rvcl95LCBmbG9hdCBmYWN0b3Jfeik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4wIildCi0rCQlwdWJsaWMgdm9pZCBza2V3X3h5IChmbG9hdCBmYWN0b3IpOwotKwkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHZvaWQgc2tld194eiAoZmxvYXQgZmFjdG9y KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB2b2lkIHNrZXdfeXog KGZsb2F0IGZhY3Rvcik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMg Ym9vbCB0b18yZCAob3V0IGRvdWJsZSB4eCwgb3V0IGRvdWJsZSB5eCwgb3V0IGRvdWJsZSB4eSwg b3V0IGRvdWJsZSB5eSwgb3V0IGRvdWJsZSB4XzAsIG91dCBkb3VibGUgeV8wKTsKLSsJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB2b2lkIHRvX2Zsb2F0IChbQ0NvZGUgKGFy cmF5X2xlbmd0aCA9IGZhbHNlKV0gcmVmIGZsb2F0IHZbMTZdKTsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5SZWN0IHRyYW5zZm9ybV9ib3VuZHMgKEdy YXBoZW5lLlJlY3Qgcik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlwdWJsaWMg R3JhcGhlbmUuQm94IHRyYW5zZm9ybV9ib3ggKEdyYXBoZW5lLkJveCBiKTsKLSsJCVtWZXJzaW9u IChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludCB0cmFuc2Zvcm1fcG9p bnQgKEdyYXBoZW5lLlBvaW50IHApOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotKwkJ cHVibGljIEdyYXBoZW5lLlBvaW50M0QgdHJhbnNmb3JtX3BvaW50M2QgKEdyYXBoZW5lLlBvaW50 M0QgcCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0rCQlwdWJsaWMgR3JhcGhlbmUu UmF5IHRyYW5zZm9ybV9yYXkgKEdyYXBoZW5lLlJheSByKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5RdWFkIHRyYW5zZm9ybV9yZWN0IChHcmFwaGVu ZS5SZWN0IHIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotKwkJcHVibGljIEdyYXBo ZW5lLlNwaGVyZSB0cmFuc2Zvcm1fc3BoZXJlIChHcmFwaGVuZS5TcGhlcmUgcyk7Ci0rCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMyB0cmFuc2Zvcm1f dmVjMyAoR3JhcGhlbmUuVmVjMyB2KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJ CXB1YmxpYyBHcmFwaGVuZS5WZWM0IHRyYW5zZm9ybV92ZWM0IChHcmFwaGVuZS5WZWM0IHYpOwot KwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHZvaWQgdHJhbnNsYXRlIChH cmFwaGVuZS5Qb2ludDNEIHBvcyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlw dWJsaWMgR3JhcGhlbmUuTWF0cml4IHRyYW5zcG9zZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjIiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludDNEIHVucHJvamVjdF9wb2ludDNkIChH cmFwaGVuZS5NYXRyaXggbW9kZWx2aWV3LCBHcmFwaGVuZS5Qb2ludDNEIHBvaW50KTsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5SZWN0IHVudHJhbnNm b3JtX2JvdW5kcyAoR3JhcGhlbmUuUmVjdCByLCBHcmFwaGVuZS5SZWN0IGJvdW5kcyk7Ci0rCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgYm9vbCB1bnRyYW5zZm9ybV9wb2lu dCAoR3JhcGhlbmUuUG9pbnQgcCwgR3JhcGhlbmUuUmVjdCBib3VuZHMsIG91dCBHcmFwaGVuZS5Q b2ludCByZXMpOwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJncmFwaGVuZS1n b2JqZWN0LmgiLCBjbmFtZSA9ICJncmFwaGVuZV9wbGFuZV90IiwgdHlwZV9pZCA9ICJncmFwaGVu ZV9wbGFuZV9nZXRfdHlwZSAoKSIpXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCXB1 YmxpYyBzdHJ1Y3QgUGxhbmUgewotKwkJcHVibGljIGZsb2F0IGRpc3RhbmNlIChHcmFwaGVuZS5Q b2ludDNEIHBvaW50KTsKLSsJCXB1YmxpYyBib29sIGVxdWFsIChHcmFwaGVuZS5QbGFuZSBiKTsK LSsJCXB1YmxpYyBmbG9hdCBnZXRfY29uc3RhbnQgKCk7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuVmVj MyBnZXRfbm9ybWFsICgpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuUGxhbmU/IGluaXQg KEdyYXBoZW5lLlZlYzM/IG5vcm1hbCwgZmxvYXQgY29uc3RhbnQpOwotKwkJcHVibGljIHVub3du ZWQgR3JhcGhlbmUuUGxhbmU/IGluaXRfZnJvbV9wbGFuZSAoR3JhcGhlbmUuUGxhbmUgc3JjKTsK LSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlBsYW5lPyBpbml0X2Zyb21fcG9pbnQgKEdyYXBo ZW5lLlZlYzMgbm9ybWFsLCBHcmFwaGVuZS5Qb2ludDNEIHBvaW50KTsKLSsJCXB1YmxpYyB1bm93 bmVkIEdyYXBoZW5lLlBsYW5lPyBpbml0X2Zyb21fcG9pbnRzIChHcmFwaGVuZS5Qb2ludDNEIGEs IEdyYXBoZW5lLlBvaW50M0QgYiwgR3JhcGhlbmUuUG9pbnQzRCBjKTsKLSsJCXB1YmxpYyB1bm93 bmVkIEdyYXBoZW5lLlBsYW5lPyBpbml0X2Zyb21fdmVjNCAoR3JhcGhlbmUuVmVjNCBzcmMpOwot KwkJcHVibGljIEdyYXBoZW5lLlBsYW5lIG5lZ2F0ZSAoKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Q bGFuZSBub3JtYWxpemUgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJcHVi bGljIEdyYXBoZW5lLlBsYW5lIHRyYW5zZm9ybSAoR3JhcGhlbmUuTWF0cml4IG1hdHJpeCwgR3Jh cGhlbmUuTWF0cml4PyBub3JtYWxfbWF0cml4KTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZ3JhcGhlbmVfcG9pbnRfdCIs IHR5cGVfaWQgPSAiZ3JhcGhlbmVfcG9pbnRfZ2V0X3R5cGUgKCkiKV0KLSsJW1ZlcnNpb24gKHNp bmNlID0gIjEuMCIpXQotKwlwdWJsaWMgc3RydWN0IFBvaW50IHsKLSsJCXB1YmxpYyBmbG9hdCB4 OwotKwkJcHVibGljIGZsb2F0IHk7Ci0rCQlwdWJsaWMgZmxvYXQgZGlzdGFuY2UgKEdyYXBoZW5l LlBvaW50IGIsIG91dCBmbG9hdCBkX3gsIG91dCBmbG9hdCBkX3kpOwotKwkJcHVibGljIGJvb2wg ZXF1YWwgKEdyYXBoZW5lLlBvaW50IGIpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuUG9p bnQ/IGluaXQgKGZsb2F0IHgsIGZsb2F0IHkpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUu UG9pbnQ/IGluaXRfZnJvbV9wb2ludCAoR3JhcGhlbmUuUG9pbnQgc3JjKTsKLSsJCVtWZXJzaW9u IChzaW5jZSA9ICIxLjQiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlBvaW50PyBpbml0 X2Zyb21fdmVjMiAoR3JhcGhlbmUuVmVjMiBzcmMpOwotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50 IGludGVycG9sYXRlIChHcmFwaGVuZS5Qb2ludCBiLCBkb3VibGUgZmFjdG9yKTsKLSsJCXB1Ymxp YyBib29sIG5lYXIgKEdyYXBoZW5lLlBvaW50IGIsIGZsb2F0IGVwc2lsb24pOwotKwkJW1ZlcnNp b24gKHNpbmNlID0gIjEuNCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzIgdG9fdmVjMiAoKTsK LSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHcmFwaGVuZS5Qb2ludD8gemVybyAoKTsKLSsJfQot KwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUg PSAiZ3JhcGhlbmVfcG9pbnQzZF90IiwgbG93ZXJfY2FzZV9jc3VmZml4ID0gInBvaW50M2QiLCB0 eXBlX2lkID0gImdyYXBoZW5lX3BvaW50M2RfZ2V0X3R5cGUgKCkiKV0KLSsJW1ZlcnNpb24gKHNp bmNlID0gIjEuMCIpXQotKwlwdWJsaWMgc3RydWN0IFBvaW50M0QgewotKwkJcHVibGljIGZsb2F0 IHg7Ci0rCQlwdWJsaWMgZmxvYXQgeTsKLSsJCXB1YmxpYyBmbG9hdCB6OwotKwkJcHVibGljIEdy YXBoZW5lLlBvaW50M0QgY3Jvc3MgKEdyYXBoZW5lLlBvaW50M0QgYik7Ci0rCQlbVmVyc2lvbiAo c2luY2UgPSAiMS40IildCi0rCQlwdWJsaWMgZmxvYXQgZGlzdGFuY2UgKEdyYXBoZW5lLlBvaW50 M0QgYiwgb3V0IEdyYXBoZW5lLlZlYzMgZGVsdGEpOwotKwkJcHVibGljIGZsb2F0IGRvdCAoR3Jh cGhlbmUuUG9pbnQzRCBiKTsKLSsJCXB1YmxpYyBib29sIGVxdWFsIChHcmFwaGVuZS5Qb2ludDNE IGIpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuUG9pbnQzRD8gaW5pdCAoZmxvYXQgeCwg ZmxvYXQgeSwgZmxvYXQgeik7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5Qb2ludDNEPyBp bml0X2Zyb21fcG9pbnQgKEdyYXBoZW5lLlBvaW50M0Qgc3JjKTsKLSsJCXB1YmxpYyB1bm93bmVk IEdyYXBoZW5lLlBvaW50M0Q/IGluaXRfZnJvbV92ZWMzIChHcmFwaGVuZS5WZWMzIHYpOwotKwkJ cHVibGljIEdyYXBoZW5lLlBvaW50M0QgaW50ZXJwb2xhdGUgKEdyYXBoZW5lLlBvaW50M0QgYiwg ZG91YmxlIGZhY3Rvcik7Ci0rCQlwdWJsaWMgZmxvYXQgbGVuZ3RoICgpOwotKwkJcHVibGljIGJv b2wgbmVhciAoR3JhcGhlbmUuUG9pbnQzRCBiLCBmbG9hdCBlcHNpbG9uKTsKLSsJCXB1YmxpYyBH cmFwaGVuZS5Qb2ludDNEIG5vcm1hbGl6ZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQi KV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludDNEIG5vcm1hbGl6ZV92aWV3cG9ydCAoR3JhcGhl bmUuUmVjdCB2aWV3cG9ydCwgZmxvYXQgel9uZWFyLCBmbG9hdCB6X2Zhcik7Ci0rCQlwdWJsaWMg R3JhcGhlbmUuUG9pbnQzRCBzY2FsZSAoZmxvYXQgZmFjdG9yKTsKLSsJCXB1YmxpYyBHcmFwaGVu ZS5WZWMzIHRvX3ZlYzMgKCk7Ci0rCQlwdWJsaWMgc3RhdGljIHVub3duZWQgR3JhcGhlbmUuUG9p bnQzRD8gemVybyAoKTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3JhcGhl bmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZ3JhcGhlbmVfcXVhZF90IiwgdHlwZV9pZCA9ICJncmFw aGVuZV9xdWFkX2dldF90eXBlICgpIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJ cHVibGljIHN0cnVjdCBRdWFkIHsKLSsJCXB1YmxpYyBHcmFwaGVuZS5SZWN0IGJvdW5kcyAoKTsK LSsJCXB1YmxpYyBib29sIGNvbnRhaW5zIChHcmFwaGVuZS5Qb2ludCBwKTsKLSsJCXB1YmxpYyB1 bm93bmVkIEdyYXBoZW5lLlBvaW50PyBnZXRfcG9pbnQgKHVpbnQgaW5kZXhfKTsKLSsJCXB1Ymxp YyB1bm93bmVkIEdyYXBoZW5lLlF1YWQ/IGluaXQgKEdyYXBoZW5lLlBvaW50IHAxLCBHcmFwaGVu ZS5Qb2ludCBwMiwgR3JhcGhlbmUuUG9pbnQgcDMsIEdyYXBoZW5lLlBvaW50IHA0KTsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlF1YWQ/ IGluaXRfZnJvbV9wb2ludHMgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBHcmFwaGVu ZS5Qb2ludCBwb2ludHNbNF0pOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuUXVhZD8gaW5p dF9mcm9tX3JlY3QgKEdyYXBoZW5lLlJlY3Qgcik7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gImdyYXBoZW5lX3F1YXRlcm5p b25fdCIsIHR5cGVfaWQgPSAiZ3JhcGhlbmVfcXVhdGVybmlvbl9nZXRfdHlwZSAoKSIpXQotKwlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCXB1YmxpYyBzdHJ1Y3QgUXVhdGVybmlvbiB7Ci0r CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlF1YXRlcm5p b24gYWRkIChHcmFwaGVuZS5RdWF0ZXJuaW9uIGIpOwotKwkJcHVibGljIGZsb2F0IGRvdCAoR3Jh cGhlbmUuUXVhdGVybmlvbiBiKTsKLSsJCXB1YmxpYyBib29sIGVxdWFsIChHcmFwaGVuZS5RdWF0 ZXJuaW9uIGIpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuUXVhdGVybmlvbj8gaW5pdCAo ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdyk7Ci0rCQlwdWJsaWMgdW5vd25lZCBH cmFwaGVuZS5RdWF0ZXJuaW9uPyBpbml0X2Zyb21fYW5nbGVfdmVjMyAoZmxvYXQgYW5nbGUsIEdy YXBoZW5lLlZlYzMgYXhpcyk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5RdWF0ZXJuaW9u PyBpbml0X2Zyb21fYW5nbGVzIChmbG9hdCBkZWdfeCwgZmxvYXQgZGVnX3ksIGZsb2F0IGRlZ196 KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBo ZW5lLlF1YXRlcm5pb24/IGluaXRfZnJvbV9ldWxlciAoR3JhcGhlbmUuRXVsZXIgZSk7Ci0rCQlw dWJsaWMgdW5vd25lZCBHcmFwaGVuZS5RdWF0ZXJuaW9uPyBpbml0X2Zyb21fbWF0cml4IChHcmFw aGVuZS5NYXRyaXggbSk7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5RdWF0ZXJuaW9uPyBp bml0X2Zyb21fcXVhdGVybmlvbiAoR3JhcGhlbmUuUXVhdGVybmlvbiBzcmMpOwotKwkJcHVibGlj IHVub3duZWQgR3JhcGhlbmUuUXVhdGVybmlvbj8gaW5pdF9mcm9tX3JhZGlhbnMgKGZsb2F0IHJh ZF94LCBmbG9hdCByYWRfeSwgZmxvYXQgcmFkX3opOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhl bmUuUXVhdGVybmlvbj8gaW5pdF9mcm9tX3ZlYzQgKEdyYXBoZW5lLlZlYzQgc3JjKTsKLSsJCXB1 YmxpYyB1bm93bmVkIEdyYXBoZW5lLlF1YXRlcm5pb24/IGluaXRfaWRlbnRpdHkgKCk7Ci0rCQlw dWJsaWMgR3JhcGhlbmUuUXVhdGVybmlvbiBpbnZlcnQgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlF1YXRlcm5pb24gbXVsdGlwbHkgKEdyYXBo ZW5lLlF1YXRlcm5pb24gYik7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUXVhdGVybmlvbiBub3JtYWxp emUgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJcHVibGljIEdyYXBoZW5l LlF1YXRlcm5pb24gc2NhbGUgKGZsb2F0IGZhY3Rvcik7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUXVh dGVybmlvbiBzbGVycCAoR3JhcGhlbmUuUXVhdGVybmlvbiBiLCBmbG9hdCBmYWN0b3IpOwotKwkJ cHVibGljIHZvaWQgdG9fYW5nbGVfdmVjMyAob3V0IGZsb2F0IGFuZ2xlLCBvdXQgR3JhcGhlbmUu VmVjMyBheGlzKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyB2b2lk IHRvX2FuZ2xlcyAob3V0IGZsb2F0IGRlZ194LCBvdXQgZmxvYXQgZGVnX3ksIG91dCBmbG9hdCBk ZWdfeik7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuTWF0cml4IHRvX21hdHJpeCAoKTsKLSsJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyB2b2lkIHRvX3JhZGlhbnMgKG91dCBmbG9h dCByYWRfeCwgb3V0IGZsb2F0IHJhZF95LCBvdXQgZmxvYXQgcmFkX3opOwotKwkJcHVibGljIEdy YXBoZW5lLlZlYzQgdG9fdmVjNCAoKTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZ3JhcGhlbmVfcmF5X3QiLCB0eXBlX2lk ID0gImdyYXBoZW5lX3JheV9nZXRfdHlwZSAoKSIpXQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMS40 IildCi0rCXB1YmxpYyBzdHJ1Y3QgUmF5IHsKLSsJCXB1YmxpYyBib29sIGVxdWFsIChHcmFwaGVu ZS5SYXkgYik7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQzRCBnZXRfY2xvc2VzdF9wb2ludF90 b19wb2ludCAoR3JhcGhlbmUuUG9pbnQzRCBwKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMzIGdl dF9kaXJlY3Rpb24gKCk7Ci0rCQlwdWJsaWMgZmxvYXQgZ2V0X2Rpc3RhbmNlX3RvX3BsYW5lIChH cmFwaGVuZS5QbGFuZSBwKTsKLSsJCXB1YmxpYyBmbG9hdCBnZXRfZGlzdGFuY2VfdG9fcG9pbnQg KEdyYXBoZW5lLlBvaW50M0QgcCk7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQzRCBnZXRfb3Jp Z2luICgpOwotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50M0QgZ2V0X3Bvc2l0aW9uX2F0IChmbG9h dCB0KTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlJheT8gaW5pdCAoR3JhcGhlbmUuUG9p bnQzRD8gb3JpZ2luLCBHcmFwaGVuZS5WZWMzPyBkaXJlY3Rpb24pOwotKwkJcHVibGljIHVub3du ZWQgR3JhcGhlbmUuUmF5PyBpbml0X2Zyb21fcmF5IChHcmFwaGVuZS5SYXkgc3JjKTsKLSsJCXB1 YmxpYyB1bm93bmVkIEdyYXBoZW5lLlJheT8gaW5pdF9mcm9tX3ZlYzMgKEdyYXBoZW5lLlZlYzM/ IG9yaWdpbiwgR3JhcGhlbmUuVmVjMz8gZGlyZWN0aW9uKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEwIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuUmF5SW50ZXJzZWN0aW9uS2luZCBpbnRlcnNl Y3RfYm94IChHcmFwaGVuZS5Cb3ggYiwgb3V0IGZsb2F0IHRfb3V0KTsKLSsJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuUmF5SW50ZXJzZWN0aW9uS2luZCBp bnRlcnNlY3Rfc3BoZXJlIChHcmFwaGVuZS5TcGhlcmUgcywgb3V0IGZsb2F0IHRfb3V0KTsKLSsJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuUmF5SW50ZXJz ZWN0aW9uS2luZCBpbnRlcnNlY3RfdHJpYW5nbGUgKEdyYXBoZW5lLlRyaWFuZ2xlIHQsIG91dCBm bG9hdCB0X291dCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJcHVibGljIGJv b2wgaW50ZXJzZWN0c19ib3ggKEdyYXBoZW5lLkJveCBiKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEwIildCi0rCQlwdWJsaWMgYm9vbCBpbnRlcnNlY3RzX3NwaGVyZSAoR3JhcGhlbmUuU3Bo ZXJlIHMpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBib29sIGlu dGVyc2VjdHNfdHJpYW5nbGUgKEdyYXBoZW5lLlRyaWFuZ2xlIHQpOwotKwl9Ci0rCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJncmFwaGVu ZV9yZWN0X3QiLCB0eXBlX2lkID0gImdyYXBoZW5lX3JlY3RfZ2V0X3R5cGUgKCkiKV0KLSsJW1Zl cnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwlwdWJsaWMgc3RydWN0IFJlY3QgewotKwkJcHVibGlj IEdyYXBoZW5lLlBvaW50IG9yaWdpbjsKLSsJCXB1YmxpYyBHcmFwaGVuZS5TaXplIHNpemU7Ci0r CQlwdWJsaWMgc3RhdGljIEdyYXBoZW5lLlJlY3Q/IGFsbG9jICgpOwotKwkJcHVibGljIGJvb2wg Y29udGFpbnNfcG9pbnQgKEdyYXBoZW5lLlBvaW50IHApOwotKwkJcHVibGljIGJvb2wgY29udGFp bnNfcmVjdCAoR3JhcGhlbmUuUmVjdCBiKTsKLSsJCXB1YmxpYyBib29sIGVxdWFsIChHcmFwaGVu ZS5SZWN0IGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotKwkJcHVibGljIEdyYXBo ZW5lLlJlY3QgZXhwYW5kIChHcmFwaGVuZS5Qb2ludCBwKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEwIildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X2FyZWEgKCk7Ci0rCQlwdWJsaWMgR3JhcGhl bmUuUG9pbnQgZ2V0X2JvdHRvbV9sZWZ0ICgpOwotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50IGdl dF9ib3R0b21fcmlnaHQgKCk7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUG9pbnQgZ2V0X2NlbnRlciAo KTsKLSsJCXB1YmxpYyBmbG9hdCBnZXRfaGVpZ2h0ICgpOwotKwkJcHVibGljIEdyYXBoZW5lLlBv aW50IGdldF90b3BfbGVmdCAoKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludCBnZXRfdG9wX3Jp Z2h0ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotKwkJcHVibGljIHZvaWQgZ2V0 X3ZlcnRpY2VzIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gcmVmIEdyYXBoZW5lLlZl YzIgdmVydGljZXNbNF0pOwotKwkJcHVibGljIGZsb2F0IGdldF93aWR0aCAoKTsKLSsJCXB1Ymxp YyBmbG9hdCBnZXRfeCAoKTsKLSsJCXB1YmxpYyBmbG9hdCBnZXRfeSAoKTsKLSsJCXB1YmxpYyB1 bm93bmVkIEdyYXBoZW5lLlJlY3Q/IGluaXQgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRo LCBmbG9hdCBoZWlnaHQpOwotKwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuUmVjdD8gaW5pdF9m cm9tX3JlY3QgKEdyYXBoZW5lLlJlY3Qgc3JjKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5l LlJlY3Q/IGluc2V0IChmbG9hdCBkX3gsIGZsb2F0IGRfeSk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS40IildCi0rCQlwdWJsaWMgR3JhcGhlbmUuUmVjdCBpbnNldF9yIChmbG9hdCBkX3gsIGZs b2F0IGRfeSk7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUmVjdCBpbnRlcnBvbGF0ZSAoR3JhcGhlbmUu UmVjdCBiLCBkb3VibGUgZmFjdG9yKTsKLSsJCXB1YmxpYyBib29sIGludGVyc2VjdGlvbiAoR3Jh cGhlbmUuUmVjdCBiLCBvdXQgR3JhcGhlbmUuUmVjdCByZXMpOwotKwkJcHVibGljIHVub3duZWQg R3JhcGhlbmUuUmVjdD8gbm9ybWFsaXplICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIp XQotKwkJcHVibGljIEdyYXBoZW5lLlJlY3Qgbm9ybWFsaXplX3IgKCk7Ci0rCQlwdWJsaWMgdW5v d25lZCBHcmFwaGVuZS5SZWN0PyBvZmZzZXQgKGZsb2F0IGRfeCwgZmxvYXQgZF95KTsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5SZWN0IG9mZnNldF9y IChmbG9hdCBkX3gsIGZsb2F0IGRfeSk7Ci0rCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuNCIpXQotKwkJcHVibGljIEdy YXBoZW5lLlJlY3Qgcm91bmQgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJ cHVibGljIEdyYXBoZW5lLlJlY3Qgcm91bmRfZXh0ZW50cyAoKTsKLSsJCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjQiLCBzaW5jZSA9ICIxLjAiKV0K LSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlJlY3Q/IHJvdW5kX3RvX3BpeGVsICgpOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5SZWN0IHNjYWxl IChmbG9hdCBzX2gsIGZsb2F0IHNfdik7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuUmVjdCB1bmlvbiAo R3JhcGhlbmUuUmVjdCBiKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSsJCXB1Ymxp YyBzdGF0aWMgdW5vd25lZCBHcmFwaGVuZS5SZWN0PyB6ZXJvICgpOwotKwl9Ci0rCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJncmFwaGVu ZV9zaW1kNGZfdCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotKwlwdWJsaWMgc3RydWN0IFNpbWQ0 RiB7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3Qu aCIsIGNuYW1lID0gImdyYXBoZW5lX3NpbWQ0eDRmX3QiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0K LSsJcHVibGljIHN0cnVjdCBTaW1kNFg0RiB7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gImdyYXBoZW5lX3NpemVfdCIsIHR5 cGVfaWQgPSAiZ3JhcGhlbmVfc2l6ZV9nZXRfdHlwZSAoKSIpXQotKwlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCXB1YmxpYyBzdHJ1Y3QgU2l6ZSB7Ci0rCQlwdWJsaWMgZmxvYXQgd2lkdGg7 Ci0rCQlwdWJsaWMgZmxvYXQgaGVpZ2h0OwotKwkJcHVibGljIGJvb2wgZXF1YWwgKEdyYXBoZW5l LlNpemUgYik7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5TaXplPyBpbml0IChmbG9hdCB3 aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlNpemU/IGlu aXRfZnJvbV9zaXplIChHcmFwaGVuZS5TaXplIHNyYyk7Ci0rCQlwdWJsaWMgR3JhcGhlbmUuU2l6 ZSBpbnRlcnBvbGF0ZSAoR3JhcGhlbmUuU2l6ZSBiLCBkb3VibGUgZmFjdG9yKTsKLSsJCXB1Ymxp YyBHcmFwaGVuZS5TaXplIHNjYWxlIChmbG9hdCBmYWN0b3IpOwotKwkJcHVibGljIHN0YXRpYyB1 bm93bmVkIEdyYXBoZW5lLlNpemU/IHplcm8gKCk7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gImdyYXBoZW5lX3NwaGVyZV90 IiwgdHlwZV9pZCA9ICJncmFwaGVuZV9zcGhlcmVfZ2V0X3R5cGUgKCkiKV0KLSsJW1ZlcnNpb24g KHNpbmNlID0gIjEuMiIpXQotKwlwdWJsaWMgc3RydWN0IFNwaGVyZSB7Ci0rCQlwdWJsaWMgYm9v bCBjb250YWluc19wb2ludCAoR3JhcGhlbmUuUG9pbnQzRCBwb2ludCk7Ci0rCQlwdWJsaWMgZmxv YXQgZGlzdGFuY2UgKEdyYXBoZW5lLlBvaW50M0QgcG9pbnQpOwotKwkJcHVibGljIGJvb2wgZXF1 YWwgKEdyYXBoZW5lLlNwaGVyZSBiKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Cb3ggZ2V0X2JvdW5k aW5nX2JveCAoKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludDNEIGdldF9jZW50ZXIgKCk7Ci0r CQlwdWJsaWMgZmxvYXQgZ2V0X3JhZGl1cyAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdyYXBoZW5l LlNwaGVyZT8gaW5pdCAoR3JhcGhlbmUuUG9pbnQzRD8gY2VudGVyLCBmbG9hdCByYWRpdXMpOwot KwkJcHVibGljIHVub3duZWQgR3JhcGhlbmUuU3BoZXJlPyBpbml0X2Zyb21fcG9pbnRzIChbQ0Nv ZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9ICJuX3BvaW50cyIsIGFycmF5X2xlbmd0aF9wb3MgPSAw LjUsIGFycmF5X2xlbmd0aF90eXBlID0gImd1aW50IildIEdyYXBoZW5lLlBvaW50M0RbXSBwb2lu dHMsIEdyYXBoZW5lLlBvaW50M0Q/IGNlbnRlcik7Ci0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVu ZS5TcGhlcmU/IGluaXRfZnJvbV92ZWN0b3JzIChbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9 ICJuX3ZlY3RvcnMiLCBhcnJheV9sZW5ndGhfcG9zID0gMC41LCBhcnJheV9sZW5ndGhfdHlwZSA9 ICJndWludCIpXSBHcmFwaGVuZS5WZWMzW10gdmVjdG9ycywgR3JhcGhlbmUuUG9pbnQzRD8gY2Vu dGVyKTsKLSsJCXB1YmxpYyBib29sIGlzX2VtcHR5ICgpOwotKwkJcHVibGljIEdyYXBoZW5lLlNw aGVyZSB0cmFuc2xhdGUgKEdyYXBoZW5lLlBvaW50M0QgcG9pbnQpOwotKwl9Ci0rCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJncmFwaGVu ZV90cmlhbmdsZV90IiwgdHlwZV9pZCA9ICJncmFwaGVuZV90cmlhbmdsZV9nZXRfdHlwZSAoKSIp XQotKwlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCXB1YmxpYyBzdHJ1Y3QgVHJpYW5nbGUg ewotKwkJcHVibGljIGJvb2wgY29udGFpbnNfcG9pbnQgKEdyYXBoZW5lLlBvaW50M0QgcCk7Ci0r CQlwdWJsaWMgYm9vbCBlcXVhbCAoR3JhcGhlbmUuVHJpYW5nbGUgYik7Ci0rCQlwdWJsaWMgZmxv YXQgZ2V0X2FyZWEgKCk7Ci0rCQlwdWJsaWMgYm9vbCBnZXRfYmFyeWNvb3JkcyAoR3JhcGhlbmUu UG9pbnQzRD8gcCwgb3V0IEdyYXBoZW5lLlZlYzIgcmVzKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5C b3ggZ2V0X2JvdW5kaW5nX2JveCAoKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludDNEIGdldF9t aWRwb2ludCAoKTsKLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMzIGdldF9ub3JtYWwgKCk7Ci0rCQlw dWJsaWMgR3JhcGhlbmUuUGxhbmUgZ2V0X3BsYW5lICgpOwotKwkJcHVibGljIHZvaWQgZ2V0X3Bv aW50cyAob3V0IEdyYXBoZW5lLlBvaW50M0QgYSwgb3V0IEdyYXBoZW5lLlBvaW50M0QgYiwgb3V0 IEdyYXBoZW5lLlBvaW50M0QgYyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwkJ cHVibGljIGJvb2wgZ2V0X3V2IChHcmFwaGVuZS5Qb2ludDNEPyBwLCBHcmFwaGVuZS5WZWMyIHV2 X2EsIEdyYXBoZW5lLlZlYzIgdXZfYiwgR3JhcGhlbmUuVmVjMiB1dl9jLCBvdXQgR3JhcGhlbmUu VmVjMiByZXMpOwotKwkJcHVibGljIHZvaWQgZ2V0X3ZlcnRpY2VzIChvdXQgR3JhcGhlbmUuVmVj MyBhLCBvdXQgR3JhcGhlbmUuVmVjMyBiLCBvdXQgR3JhcGhlbmUuVmVjMyBjKTsKLSsJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjEwIildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5Ucmlhbmds ZT8gaW5pdF9mcm9tX2Zsb2F0IChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gZmxvYXQg YVszXSwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIGZsb2F0IGJbM10sIFtDQ29kZSAo YXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBmbG9hdCBjWzNdKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdy YXBoZW5lLlRyaWFuZ2xlPyBpbml0X2Zyb21fcG9pbnQzZCAoR3JhcGhlbmUuUG9pbnQzRD8gYSwg R3JhcGhlbmUuUG9pbnQzRD8gYiwgR3JhcGhlbmUuUG9pbnQzRD8gYyk7Ci0rCQlwdWJsaWMgdW5v d25lZCBHcmFwaGVuZS5UcmlhbmdsZT8gaW5pdF9mcm9tX3ZlYzMgKEdyYXBoZW5lLlZlYzM/IGEs IEdyYXBoZW5lLlZlYzM/IGIsIEdyYXBoZW5lLlZlYzM/IGMpOwotKwl9Ci0rCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJncmFwaGVuZV92 ZWMyX3QiLCB0eXBlX2lkID0gImdyYXBoZW5lX3ZlYzJfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGlj IHN0cnVjdCBWZWMyIHsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBH cmFwaGVuZS5WZWMyIGFkZCAoR3JhcGhlbmUuVmVjMiBiKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMyIGRpdmlkZSAoR3JhcGhlbmUuVmVjMiBi KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBmbG9hdCBkb3QgKEdy YXBoZW5lLlZlYzIgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0rCQlwdWJsaWMg Ym9vbCBlcXVhbCAoR3JhcGhlbmUuVmVjMiB2Mik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4w IildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X3ggKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4w IildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X3kgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4w IildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5WZWMyPyBpbml0IChmbG9hdCB4LCBmbG9h dCB5KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyB1bm93bmVkIEdy YXBoZW5lLlZlYzI/IGluaXRfZnJvbV9mbG9hdCAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxz ZSldIGZsb2F0IHNyY1syXSk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJs aWMgdW5vd25lZCBHcmFwaGVuZS5WZWMyPyBpbml0X2Zyb21fdmVjMiAoR3JhcGhlbmUuVmVjMiBz cmMpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5W ZWMyIGludGVycG9sYXRlIChHcmFwaGVuZS5WZWMyIHYyLCBkb3VibGUgZmFjdG9yKTsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBmbG9hdCBsZW5ndGggKCk7Ci0rCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMiBtYXggKEdy YXBoZW5lLlZlYzIgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMg R3JhcGhlbmUuVmVjMiBtaW4gKEdyYXBoZW5lLlZlYzIgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMiBtdWx0aXBseSAoR3JhcGhlbmUuVmVj MiBiKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyBib29sIG5lYXIg KEdyYXBoZW5lLlZlYzIgdjIsIGZsb2F0IGVwc2lsb24pOwotKwkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMiIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzIgbmVnYXRlICgpOwotKwkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzIgbm9ybWFsaXplICgpOwot KwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdy YXBoZW5lLlZlYzI/IG9uZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1 YmxpYyBHcmFwaGVuZS5WZWMyIHNjYWxlIChmbG9hdCBmYWN0b3IpOwotKwkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzIgc3VidHJhY3QgKEdyYXBoZW5l LlZlYzIgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdm9pZCB0 b19mbG9hdCAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIHJlZiBmbG9hdCBkZXN0WzJd KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25l ZCBHcmFwaGVuZS5WZWMyPyB4X2F4aXMgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIild Ci0rCQlwdWJsaWMgc3RhdGljIHVub3duZWQgR3JhcGhlbmUuVmVjMj8geV9heGlzICgpOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdyYXBo ZW5lLlZlYzI/IHplcm8gKCk7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdy YXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gImdyYXBoZW5lX3ZlYzNfdCIsIHR5cGVfaWQgPSAi Z3JhcGhlbmVfdmVjM19nZXRfdHlwZSAoKSIpXQotKwlwdWJsaWMgc3RydWN0IFZlYzMgewotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzMgYWRkIChH cmFwaGVuZS5WZWMzIGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGlj IEdyYXBoZW5lLlZlYzMgY3Jvc3MgKEdyYXBoZW5lLlZlYzMgYik7Ci0rCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMyBkaXZpZGUgKEdyYXBoZW5lLlZl YzMgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgZG90 IChHcmFwaGVuZS5WZWMzIGIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotKwkJcHVi bGljIGJvb2wgZXF1YWwgKEdyYXBoZW5lLlZlYzMgdjIpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMCIpXQotKwkJcHVibGljIGZsb2F0IGdldF94ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzIgZ2V0X3h5ICgpOwotKwkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzMgZ2V0X3h5MCAoKTsKLSsJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWM0IGdldF94 eXowICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5l LlZlYzQgZ2V0X3h5ejEgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJs aWMgR3JhcGhlbmUuVmVjNCBnZXRfeHl6dyAoZmxvYXQgdyk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X3kgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X3ogKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5WZWMzPyBpbml0IChmbG9hdCB4 LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1 YmxpYyB1bm93bmVkIEdyYXBoZW5lLlZlYzM/IGluaXRfZnJvbV9mbG9hdCAoW0NDb2RlIChhcnJh eV9sZW5ndGggPSBmYWxzZSldIGZsb2F0IHNyY1szXSk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4wIildCi0rCQlwdWJsaWMgdW5vd25lZCBHcmFwaGVuZS5WZWMzPyBpbml0X2Zyb21fdmVjMyAo R3JhcGhlbmUuVmVjMyBzcmMpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1 YmxpYyBHcmFwaGVuZS5WZWMzIGludGVycG9sYXRlIChHcmFwaGVuZS5WZWMzIHYyLCBkb3VibGUg ZmFjdG9yKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBmbG9hdCBs ZW5ndGggKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhl bmUuVmVjMyBtYXggKEdyYXBoZW5lLlZlYzMgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4w IildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMyBtaW4gKEdyYXBoZW5lLlZlYzMgYik7Ci0rCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMyBtdWx0aXBs eSAoR3JhcGhlbmUuVmVjMyBiKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1 YmxpYyBib29sIG5lYXIgKEdyYXBoZW5lLlZlYzMgdjIsIGZsb2F0IGVwc2lsb24pOwotKwkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMiIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzMgbmVnYXRlICgp OwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzMg bm9ybWFsaXplICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHN0 YXRpYyB1bm93bmVkIEdyYXBoZW5lLlZlYzM/IG9uZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjIiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWMzIHNjYWxlIChmbG9hdCBmYWN0b3IpOwot KwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzMgc3Vi dHJhY3QgKEdyYXBoZW5lLlZlYzMgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0r CQlwdWJsaWMgdm9pZCB0b19mbG9hdCAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIHJl ZiBmbG9hdCBkZXN0WzNdKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1Ymxp YyBzdGF0aWMgdW5vd25lZCBHcmFwaGVuZS5WZWMzPyB4X2F4aXMgKCk7Ci0rCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgc3RhdGljIHVub3duZWQgR3JhcGhlbmUuVmVjMz8g eV9heGlzICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHN0YXRp YyB1bm93bmVkIEdyYXBoZW5lLlZlYzM/IHpfYXhpcyAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjAiKV0KLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHcmFwaGVuZS5WZWMzPyB6ZXJvICgp OwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0Lmgi LCBjbmFtZSA9ICJncmFwaGVuZV92ZWM0X3QiLCB0eXBlX2lkID0gImdyYXBoZW5lX3ZlYzRfZ2V0 X3R5cGUgKCkiKV0KLSsJcHVibGljIHN0cnVjdCBWZWM0IHsKLSsJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWM0IGFkZCAoR3JhcGhlbmUuVmVjNCBiKTsK LSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5WZWM0IGRp dmlkZSAoR3JhcGhlbmUuVmVjNCBiKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJ CXB1YmxpYyBmbG9hdCBkb3QgKEdyYXBoZW5lLlZlYzQgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4yIildCi0rCQlwdWJsaWMgYm9vbCBlcXVhbCAoR3JhcGhlbmUuVmVjNCB2Mik7Ci0rCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X3cgKCk7Ci0rCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgZmxvYXQgZ2V0X3ggKCk7Ci0rCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjMiBnZXRfeHkg KCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVj MyBnZXRfeHl6ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIGZs b2F0IGdldF95ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIGZs b2F0IGdldF96ICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHVu b3duZWQgR3JhcGhlbmUuVmVjND8gaW5pdCAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxv YXQgdyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdW5vd25lZCBH cmFwaGVuZS5WZWM0PyBpbml0X2Zyb21fZmxvYXQgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFs c2UpXSBmbG9hdCBzcmNbNF0pOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVi bGljIHVub3duZWQgR3JhcGhlbmUuVmVjND8gaW5pdF9mcm9tX3ZlYzIgKEdyYXBoZW5lLlZlYzIg c3JjLCBmbG9hdCB6LCBmbG9hdCB3KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJ CXB1YmxpYyB1bm93bmVkIEdyYXBoZW5lLlZlYzQ/IGluaXRfZnJvbV92ZWMzIChHcmFwaGVuZS5W ZWMzIHNyYywgZmxvYXQgdyk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJs aWMgdW5vd25lZCBHcmFwaGVuZS5WZWM0PyBpbml0X2Zyb21fdmVjNCAoR3JhcGhlbmUuVmVjNCBz cmMpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJCXB1YmxpYyBHcmFwaGVuZS5W ZWM0IGludGVycG9sYXRlIChHcmFwaGVuZS5WZWM0IHYyLCBkb3VibGUgZmFjdG9yKTsKLSsJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBmbG9hdCBsZW5ndGggKCk7Ci0rCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjNCBtYXggKEdy YXBoZW5lLlZlYzQgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMg R3JhcGhlbmUuVmVjNCBtaW4gKEdyYXBoZW5lLlZlYzQgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0rCQlwdWJsaWMgR3JhcGhlbmUuVmVjNCBtdWx0aXBseSAoR3JhcGhlbmUuVmVj NCBiKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1YmxpYyBib29sIG5lYXIg KEdyYXBoZW5lLlZlYzQgdjIsIGZsb2F0IGVwc2lsb24pOwotKwkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMiIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzQgbmVnYXRlICgpOwotKwkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzQgbm9ybWFsaXplICgpOwot KwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdy YXBoZW5lLlZlYzQ/IG9uZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJCXB1 YmxpYyBHcmFwaGVuZS5WZWM0IHNjYWxlIChmbG9hdCBmYWN0b3IpOwotKwkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMCIpXQotKwkJcHVibGljIEdyYXBoZW5lLlZlYzQgc3VidHJhY3QgKEdyYXBoZW5l LlZlYzQgYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgdm9pZCB0 b19mbG9hdCAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIHJlZiBmbG9hdCBkZXN0WzRd KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBzdGF0aWMgdW5vd25l ZCBHcmFwaGVuZS5WZWM0PyB3X2F4aXMgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIild Ci0rCQlwdWJsaWMgc3RhdGljIHVub3duZWQgR3JhcGhlbmUuVmVjND8geF9heGlzICgpOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIEdyYXBo ZW5lLlZlYzQ/IHlfYXhpcyAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1 YmxpYyBzdGF0aWMgdW5vd25lZCBHcmFwaGVuZS5WZWM0PyB6X2F4aXMgKCk7Ci0rCQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0rCQlwdWJsaWMgc3RhdGljIHVub3duZWQgR3JhcGhlbmUuVmVj ND8gemVybyAoKTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3JhcGhlbmUt Z29iamVjdC5oIiwgY25hbWUgPSAiZ3JhcGhlbmVfZXVsZXJfb3JkZXJfdCIsIGNwcmVmaXggPSAi R1JBUEhFTkVfRVVMRVJfT1JERVJfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0rCVtWZXJzaW9u IChzaW5jZSA9ICIxLjIiKV0KLSsJcHVibGljIGVudW0gRXVsZXJPcmRlciB7Ci0rCQlERUZBVUxU LAotKwkJWFlaLAotKwkJWVpYLAotKwkJWlhZLAotKwkJWFpZLAotKwkJWVhaLAotKwkJWllYLAot KwkJU1hZWiwKLSsJCVNYWVgsCi0rCQlTWFpZLAotKwkJU1haWCwKLSsJCVNZWlgsCi0rCQlTWVpZ LAotKwkJU1lYWiwKLSsJCVNZWFksCi0rCQlTWlhZLAotKwkJU1pYWiwKLSsJCVNaWVgsCi0rCQlT WllaLAotKwkJUlpZWCwKLSsJCVJYWVgsCi0rCQlSWVpYLAotKwkJUlhaWCwKLSsJCVJYWlksCi0r CQlSWVpZLAotKwkJUlpYWSwKLSsJCVJZWFksCi0rCQlSWVhaLAotKwkJUlpYWiwKLSsJCVJYWVos Ci0rCQlSWllaCi0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdv YmplY3QuaCIsIGNuYW1lID0gImdyYXBoZW5lX3JheV9pbnRlcnNlY3Rpb25fa2luZF90IiwgY3By ZWZpeCA9ICJHUkFQSEVORV9SQVlfSU5URVJTRUNUSU9OX0tJTkRfIiwgaGFzX3R5cGVfaWQgPSBm YWxzZSldCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCXB1YmxpYyBlbnVtIFJheUlu dGVyc2VjdGlvbktpbmQgewotKwkJTk9ORSwKLSsJCUVOVEVSLAotKwkJTEVBVkUKLSsJfQotKwlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAi R1JBUEhFTkVfSEFTX0dDQyIpXQotKwlwdWJsaWMgY29uc3QgaW50IEhBU19HQ0M7Ci0rCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJHUkFQ SEVORV9IQVNfU0NBTEFSIildCi0rCXB1YmxpYyBjb25zdCBpbnQgSEFTX1NDQUxBUjsKLSsJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gIkdS QVBIRU5FX0hBU19TU0UiKV0KLSsJcHVibGljIGNvbnN0IGludCBIQVNfU1NFOwotKwlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiR1JBUEhF TkVfUEkiKV0KLSsJcHVibGljIGNvbnN0IGRvdWJsZSBQSTsKLSsJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImdyYXBoZW5lLWdvYmplY3QuaCIsIGNuYW1lID0gIkdSQVBIRU5FX1BJXzIiKV0K LSsJcHVibGljIGNvbnN0IGRvdWJsZSBQSV8yOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiR1JBUEhFTkVfU0lNRF9TIildCi0rCXB1 YmxpYyBjb25zdCBzdHJpbmcgU0lNRF9TOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Z3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiR1JBUEhFTkVfVkVDMl9MRU4iKV0KLSsJW1Zl cnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwlwdWJsaWMgY29uc3QgaW50IFZFQzJfTEVOOwotKwlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAi R1JBUEhFTkVfVkVDM19MRU4iKV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotKwlwdWJs aWMgY29uc3QgaW50IFZFQzNfTEVOOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3Jh cGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiR1JBUEhFTkVfVkVDNF9MRU4iKV0KLSsJW1ZlcnNp b24gKHNpbmNlID0gIjEuMCIpXQotKwlwdWJsaWMgY29uc3QgaW50IFZFQzRfTEVOOwotKwlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiZ3JhcGhlbmUtZ29iamVjdC5oIiwgY25hbWUgPSAiZmFs c2UiKV0KLSsJcHVibGljIGNvbnN0IGludCBAZmFsc2U7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJncmFwaGVuZS1nb2JqZWN0LmgiLCBjbmFtZSA9ICJ0cnVlIildCi0rCXB1YmxpYyBj b25zdCBpbnQgQHRydWU7Ci0rfQotZGlmZiAtLWdpdCB2YXBpL2xpYm11dHRlci0yLmRlcHMgdmFw aS9saWJtdXR0ZXItMi5kZXBzCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDFmM2M5 MDc5Li4wMDAwMDAwMAotLS0tIHZhcGkvbGlibXV0dGVyLTIuZGVwcwotKysrIC9kZXYvbnVsbAot QEAgLTEsOSArMCwwIEBACi0tY2Fpcm8KLS1nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzCi0tZ2Rr LTMuMAotLWdkay1waXhidWYtMi4wCi0tZ3RrKy0zLjAKLS14MTEKLS14Zml4ZXMtNC4wCi0tY2x1 dHRlci0xLjAKLS1jb2dsLTEuMAotZGlmZiAtLWdpdCB2YXBpL2xpYm11dHRlci0yLnZhcGkgdmFw aS9saWJtdXR0ZXItMi52YXBpCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDBhNmM0 MzU3Li4wMDAwMDAwMAotLS0tIHZhcGkvbGlibXV0dGVyLTIudmFwaQotKysrIC9kZXYvbnVsbAot QEAgLTEsMTMyNSArMCwwIEBACi0tLyogbGlibXV0dGVyLnZhcGkgZ2VuZXJhdGVkIGJ5IHZhcGln ZW4sIGRvIG5vdCBtb2RpZnkuICovCi0tCi0tW0NDb2RlIChjcHJlZml4ID0gIk1ldGEiLCBnaXJf bmFtZXNwYWNlID0gIk1ldGEiLCBnaXJfdmVyc2lvbiA9ICIzLjAiLCBsb3dlcl9jYXNlX2NwcmVm aXggPSAibWV0YV8iKV0KLS1uYW1lc3BhY2UgTWV0YSB7Ci0tCW5hbWVzcGFjZSBQcmVmcyB7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMg c3RhdGljIHZvaWQgYWRkX2xpc3RlbmVyIChNZXRhLlByZWZzQ2hhbmdlZEZ1bmMgZnVuYyk7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMg c3RhdGljIGJvb2wgYmVsbF9pc19hdWRpYmxlICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIGNoYW5nZV93b3Jr c3BhY2VfbmFtZSAoaW50IGksIHN0cmluZyBuYW1lKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgR0Rlc2t0b3AuVGl0bGVi YXJBY3Rpb24gZ2V0X2FjdGlvbl9kb3VibGVfY2xpY2tfdGl0bGViYXIgKCk7Ci0tCQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIEdE ZXNrdG9wLlRpdGxlYmFyQWN0aW9uIGdldF9hY3Rpb25fbWlkZGxlX2NsaWNrX3RpdGxlYmFyICgp OwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVi bGljIHN0YXRpYyBHRGVza3RvcC5UaXRsZWJhckFjdGlvbiBnZXRfYWN0aW9uX3JpZ2h0X2NsaWNr X3RpdGxlYmFyICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMu aCIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIGdldF9hdHRhY2hfbW9kYWxfZGlhbG9ncyAoKTsK LS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1Ymxp YyBzdGF0aWMgYm9vbCBnZXRfYXV0b19tYXhpbWl6ZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBnZXRfYXV0 b19yYWlzZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgi KV0KLS0JCXB1YmxpYyBzdGF0aWMgaW50IGdldF9hdXRvX3JhaXNlX2RlbGF5ICgpOwotLQkJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRp YyBNZXRhLkJ1dHRvbkxheW91dCBnZXRfYnV0dG9uX2xheW91dCAoKTsKLS0JCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBn ZXRfY2VudGVyX25ld193aW5kb3dzICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIGdldF9jb21wb3NpdGluZ19t YW5hZ2VyICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIp XQotLQkJcHVibGljIHN0YXRpYyBpbnQgZ2V0X2N1cnNvcl9zaXplICgpOwotLQkJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93 bmVkIHN0cmluZyBnZXRfY3Vyc29yX3RoZW1lICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIGdldF9kaXNhYmxl X3dvcmthcm91bmRzICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJl ZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBpbnQgZ2V0X2RyYWdfdGhyZXNob2xkICgpOwotLQkJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0 YXRpYyBpbnQgZ2V0X2RyYWdnYWJsZV9ib3JkZXJfd2lkdGggKCk7Ci0tCQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0 X2R5bmFtaWNfd29ya3NwYWNlcyAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBnZXRfZWRnZV90aWxpbmcgKCk7 Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJs aWMgc3RhdGljIGJvb2wgZ2V0X2ZvY3VzX2NoYW5nZV9vbl9wb2ludGVyX3Jlc3QgKCk7Ci0tCQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3Rh dGljIEdEZXNrdG9wLkZvY3VzTW9kZSBnZXRfZm9jdXNfbW9kZSAoKTsKLS0JCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgR0Rlc2t0 b3AuRm9jdXNOZXdXaW5kb3dzIGdldF9mb2N1c19uZXdfd2luZG93cyAoKTsKLS0JCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9v bCBnZXRfZm9yY2VfZnVsbHNjcmVlbiAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBnZXRfZ25vbWVfYWNjZXNz aWJpbGl0eSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgi KV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBnZXRfZ25vbWVfYW5pbWF0aW9ucyAoKTsKLS0JCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0 aWMgYm9vbCBnZXRfaWdub3JlX3JlcXVlc3RfaGlkZV90aXRsZWJhciAoKTsKLS0JCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgTWV0 YS5LZXlCaW5kaW5nQWN0aW9uIGdldF9rZXliaW5kaW5nX2FjdGlvbiAoc3RyaW5nIG5hbWUpOwot LQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGlj IHN0YXRpYyBpbnQgZ2V0X21vdXNlX2J1dHRvbl9tZW51ICgpOwotLQkJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBNZXRhLlZpcnR1 YWxNb2RpZmllciBnZXRfbW91c2VfYnV0dG9uX21vZHMgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIGludCBnZXRfbW91 c2VfYnV0dG9uX3Jlc2l6ZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgaW50IGdldF9udW1fd29ya3NwYWNlcyAoKTsK LS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1Ymxp YyBzdGF0aWMgYm9vbCBnZXRfcmFpc2Vfb25fY2xpY2sgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X3No b3dfZmFsbGJhY2tfYXBwX21lbnUgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9wcmVmcy5oIildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgUGFuZ28uRm9udERlc2Ny aXB0aW9uIGdldF90aXRsZWJhcl9mb250ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIGdldF92aXN1YWxfYmVs bCAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0J CXB1YmxpYyBzdGF0aWMgR0Rlc2t0b3AuVmlzdWFsQmVsbFR5cGUgZ2V0X3Zpc3VhbF9iZWxsX3R5 cGUgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIildCi0t CQlwdWJsaWMgc3RhdGljIHVub3duZWQgc3RyaW5nIGdldF93b3Jrc3BhY2VfbmFtZSAoaW50IGkp OwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIpXQotLQkJcHVi bGljIHN0YXRpYyBib29sIGdldF93b3Jrc3BhY2VzX29ubHlfb25fcHJpbWFyeSAoKTsKLS0JCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0 aWMgdm9pZCBpbml0ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJl ZnMuaCIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIG92ZXJyaWRlX3ByZWZlcmVuY2Vfc2NoZW1h IChzdHJpbmcga2V5LCBzdHJpbmcgc2NoZW1hKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCByZW1vdmVfbGlzdGVu ZXIgKE1ldGEuUHJlZnNDaGFuZ2VkRnVuYyBmdW5jKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfZm9yY2Vf ZnVsbHNjcmVlbiAoYm9vbCB3aGV0aGVyKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfaWdub3JlX3JlcXVl c3RfaGlkZV90aXRsZWJhciAoYm9vbCB3aGV0aGVyKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL3ByZWZzLmgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfbnVtX3dv cmtzcGFjZXMgKGludCBuX3dvcmtzcGFjZXMpOwotLQl9Ci0tCW5hbWVzcGFjZSBVdGlsIHsKLS0J CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIm1ldGFf YWRkX3ZlcmJvc2VfdG9waWMiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBhZGRfdmVyYm9zZV90 b3BpYyAoTWV0YS5EZWJ1Z1RvcGljIHRvcGljKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIm1ldGFfYnVnIildCi0tCQlwdWJsaWMgc3RhdGlj IHZvaWQgYnVnIChzdHJpbmcgZm9ybWF0LCAuLi4pOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9kZWJ1Z19zcGV3X3JlYWwiKV0KLS0J CXB1YmxpYyBzdGF0aWMgdm9pZCBkZWJ1Z19zcGV3X3JlYWwgKHN0cmluZyBmb3JtYXQsIC4uLik7 Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJt ZXRhX2Rpc2FibGVfdW5yZWRpcmVjdF9mb3Jfc2NyZWVuIildCi0tCQlwdWJsaWMgc3RhdGljIHZv aWQgZGlzYWJsZV91bnJlZGlyZWN0X2Zvcl9zY3JlZW4gKE1ldGEuU2NyZWVuIHNjcmVlbik7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwg Y25hbWUgPSAibWV0YV9lbXB0eV9zdGFnZV9pbnB1dF9yZWdpb24iKV0KLS0JCXB1YmxpYyBzdGF0 aWMgdm9pZCBlbXB0eV9zdGFnZV9pbnB1dF9yZWdpb24gKE1ldGEuU2NyZWVuIHNjcmVlbik7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRh X2VuYWJsZV91bnJlZGlyZWN0X2Zvcl9zY3JlZW4iKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBl bmFibGVfdW5yZWRpcmVjdF9mb3Jfc2NyZWVuIChNZXRhLlNjcmVlbiBzY3JlZW4pOwotLQkJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9lcnJv cl90cmFwX3BvcCIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIGVycm9yX3RyYXBfcG9wIChNZXRh LkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t YWluLmgiLCBjbmFtZSA9ICJtZXRhX2Vycm9yX3RyYXBfcHVzaCIpXQotLQkJcHVibGljIHN0YXRp YyB2b2lkIGVycm9yX3RyYXBfcHVzaCAoTWV0YS5EaXNwbGF5IGRpc3BsYXkpOwotLQkJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9lcnJvcl90 cmFwX3B1c2hfd2l0aF9yZXR1cm4iKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBlcnJvcl90cmFw X3B1c2hfd2l0aF9yZXR1cm4gKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLS0JCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIm1ldGFfZXh0ZXJuYWxfYmlu ZGluZ19uYW1lX2Zvcl9hY3Rpb24iKV0KLS0JCXB1YmxpYyBzdGF0aWMgc3RyaW5nIGV4dGVybmFs X2JpbmRpbmdfbmFtZV9mb3JfYWN0aW9uICh1aW50IGtleWJpbmRpbmdfYWN0aW9uKTsKLS0JCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIm1ldGFfZmF0 YWwiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBmYXRhbCAoc3RyaW5nIGZvcm1hdCwgLi4uKTsK LS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIm1l dGFfZnJlZV9nc2xpc3RfYW5kX2VsZW1lbnRzIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgZnJl ZV9nc2xpc3RfYW5kX2VsZW1lbnRzIChHTGliLlNMaXN0PHZvaWQqPiBsaXN0X3RvX2RlZXBfZnJl ZSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9 ICJtZXRhX2dfdXRmOF9zdHJuZHVwIildCi0tCQlwdWJsaWMgc3RhdGljIHN0cmluZyBnX3V0Zjhf c3RybmR1cCAoc3RyaW5nIHNyYywgc2l6ZV90IG4pOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9nZXRfbG9jYWxlX2RpcmVjdGlvbiIp XQotLQkJcHVibGljIHN0YXRpYyBNZXRhLkxvY2FsZURpcmVjdGlvbiBnZXRfbG9jYWxlX2RpcmVj dGlvbiAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNu YW1lID0gIm1ldGFfZ2V0X292ZXJsYXlfd2luZG93IildCi0tCQlwdWJsaWMgc3RhdGljIFguV2lu ZG93IGdldF9vdmVybGF5X3dpbmRvdyAoTWV0YS5TY3JlZW4gc2NyZWVuKTsKLS0JCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIm1ldGFfZ3Jhdml0eV90 b19zdHJpbmciKV0KLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBzdHJpbmcgZ3Jhdml0eV90b19z dHJpbmcgKGludCBncmF2aXR5KTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L21haW4uaCIsIGNuYW1lID0gIm1ldGFfaXNfZGVidWdnaW5nIildCi0tCQlwdWJsaWMgc3RhdGlj IGJvb2wgaXNfZGVidWdnaW5nICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9pc19zeW5jaW5nIildCi0tCQlwdWJsaWMgc3RhdGlj IGJvb2wgaXNfc3luY2luZyAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L21haW4uaCIsIGNuYW1lID0gIm1ldGFfaXNfdmVyYm9zZSIpXQotLQkJcHVibGljIHN0YXRpYyBi b29sIGlzX3ZlcmJvc2UgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t YWluLmgiLCBjbmFtZSA9ICJtZXRhX2lzX3dheWxhbmRfY29tcG9zaXRvciIpXQotLQkJcHVibGlj IHN0YXRpYyBib29sIGlzX3dheWxhbmRfY29tcG9zaXRvciAoKTsKLS0JCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIm1ldGFfbGF0ZXJfYWRkIildCi0t CQlwdWJsaWMgc3RhdGljIHVpbnQgbGF0ZXJfYWRkIChNZXRhLkxhdGVyVHlwZSB3aGVuLCBvd25l ZCBHTGliLlNvdXJjZUZ1bmMgZnVuYyk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX2xhdGVyX3JlbW92ZSIpXQotLQkJcHVibGljIHN0 YXRpYyB2b2lkIGxhdGVyX3JlbW92ZSAodWludCBsYXRlcl9pZCk7Ci0tCQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX3BvcF9ub19tc2dfcHJl Zml4IildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgcG9wX25vX21zZ19wcmVmaXggKCk7Ci0tCQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX3B1 c2hfbm9fbXNnX3ByZWZpeCIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHB1c2hfbm9fbXNnX3By ZWZpeCAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNu YW1lID0gIm1ldGFfcmVjdCIpXQotLQkJcHVibGljIHN0YXRpYyBNZXRhLlJlY3RhbmdsZT8gcmVj dCAoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotLQkJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAibWV0YV9yZW1vdmVfdmVyYm9z ZV90b3BpYyIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHJlbW92ZV92ZXJib3NlX3RvcGljIChN ZXRhLkRlYnVnVG9waWMgdG9waWMpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFfc2V0X3N0YWdlX2lucHV0X3Jl Z2lvbiIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHNldF9zdGFnZV9pbnB1dF9yZWdpb24gKE1l dGEuU2NyZWVuIHNjcmVlbiwgWC5Yc2VydmVyUmVnaW9uIHJlZ2lvbik7Ci0tCQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX3Nob3dfZGlhbG9n IildCi0tCQlwdWJsaWMgc3RhdGljIEdMaWIuUGlkIHNob3dfZGlhbG9nIChzdHJpbmcgdHlwZSwg c3RyaW5nIG1lc3NhZ2UsIHN0cmluZz8gdGltZW91dCA9IG51bGwsIHN0cmluZz8gZGlzcGxheSA9 IG51bGwsIHN0cmluZz8gb2tfdGV4dCA9IG51bGwsIHN0cmluZz8gY2FuY2VsX3RleHQgPSBudWxs LCBzdHJpbmc/IGljb25fbmFtZSA9IG51bGwsIGludCB0cmFuc2llbnRfZm9yID0gMCwgR0xpYi5T TGlzdDxzdHJpbmc+PyBjb2x1bW5zID0gbnVsbCwgR0xpYi5TTGlzdDxzdHJpbmc+PyBlbnRyaWVz ID0gbnVsbCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBj bmFtZSA9ICJtZXRhX3RvcGljX3JlYWwiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCB0b3BpY19y ZWFsIChNZXRhLkRlYnVnVG9waWMgdG9waWMsIHN0cmluZyBmb3JtYXQsIC4uLik7Ci0tCQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX3Vuc2ln bmVkX2xvbmdfZXF1YWwiKV0KLS0JCXB1YmxpYyBzdGF0aWMgaW50IHVuc2lnbmVkX2xvbmdfZXF1 YWwgKHZvaWQqIHYxLCB2b2lkKiB2Mik7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX3Vuc2lnbmVkX2xvbmdfaGFzaCIpXQotLQkJcHVi bGljIHN0YXRpYyB1aW50IHVuc2lnbmVkX2xvbmdfaGFzaCAodm9pZCogdik7Ci0tCQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJtZXRhX3ZlcmJvc2Vf cmVhbCIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHZlcmJvc2VfcmVhbCAoc3RyaW5nIGZvcm1h dCwgLi4uKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNu YW1lID0gIm1ldGFfd2FybmluZyIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHdhcm5pbmcgKHN0 cmluZyBmb3JtYXQsIC4uLik7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvbWFpbi5oIiwgdHlwZV9pZCA9ICJtZXRhX2JhY2tlbmRfZ2V0X3R5cGUgKCkiKV0KLS0JcHVi bGljIGFic3RyYWN0IGNsYXNzIEJhY2tlbmQgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhh c19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgQmFja2VuZCAoKTsK LS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtYmFja2VuZC5oIiwgY25h bWUgPSAibWV0YV9nZXRfYmFja2VuZCIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEu QmFja2VuZCBnZXRfYmFja2VuZCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3Ig Z2V0X3N0YWdlICgpOwotLQkJcHVibGljIHZvaWQgbG9ja19sYXlvdXRfZ3JvdXAgKHVpbnQgaWR4 KTsKLS0JCXB1YmxpYyB2b2lkIHNldF9rZXltYXAgKHN0cmluZyBsYXlvdXRzLCBzdHJpbmcgdmFy aWFudHMsIHN0cmluZyBvcHRpb25zKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBrZXltYXBfY2hh bmdlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBrZXltYXBfbGF5b3V0X2dyb3VwX2NoYW5n ZWQgKHVpbnQgb2JqZWN0KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBsYXN0X2RldmljZV9jaGFu Z2VkIChpbnQgb2JqZWN0KTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9tZXRhLWJhY2tncm91bmQuaCIsIHR5cGVfaWQgPSAibWV0YV9iYWNrZ3JvdW5kX2dldF90eXBl ICgpIildCi0tCXB1YmxpYyBjbGFzcyBCYWNrZ3JvdW5kIDogR0xpYi5PYmplY3QgewotLQkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHVibGljIEJhY2tncm91 bmQgKE1ldGEuU2NyZWVuIHNjcmVlbik7Ci0tCQlwdWJsaWMgc3RhdGljIHZvaWQgcmVmcmVzaF9h bGwgKCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfYmxlbmQgKEdMaWIuRmlsZSBmaWxlMSwgR0xpYi5G aWxlIGZpbGUyLCBkb3VibGUgYmxlbmRfZmFjdG9yLCBHRGVza3RvcC5CYWNrZ3JvdW5kU3R5bGUg c3R5bGUpOwotLQkJcHVibGljIHZvaWQgc2V0X2NvbG9yIChDbHV0dGVyLkNvbG9yIGNvbG9yKTsK LS0JCXB1YmxpYyB2b2lkIHNldF9maWxlIChHTGliLkZpbGUgZmlsZSwgR0Rlc2t0b3AuQmFja2dy b3VuZFN0eWxlIHN0eWxlKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9ncmFkaWVudCAoR0Rlc2t0b3Au QmFja2dyb3VuZFNoYWRpbmcgc2hhZGluZ19kaXJlY3Rpb24sIENsdXR0ZXIuQ29sb3IgY29sb3Is IENsdXR0ZXIuQ29sb3Igc2Vjb25kX2NvbG9yKTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJ cHVibGljIE1ldGEuU2NyZWVuIG1ldGFfc2NyZWVuIHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0K LS0JCXB1YmxpYyBzaWduYWwgdm9pZCBjaGFuZ2VkICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oIiwgdHlwZV9pZCA9ICJt ZXRhX2JhY2tncm91bmRfYWN0b3JfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNsYXNzIEJhY2tn cm91bmRBY3RvciA6IENsdXR0ZXIuQWN0b3IsIEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5Bbmlt YXRhYmxlLCBDbHV0dGVyLkNvbnRhaW5lciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29k ZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3Rvcioi KV0KLS0JCXB1YmxpYyBCYWNrZ3JvdW5kQWN0b3IgKE1ldGEuU2NyZWVuIHNjcmVlbiwgaW50IG1v bml0b3IpOwotLQkJcHVibGljIHZvaWQgc2V0X2JhY2tncm91bmQgKE1ldGEuQmFja2dyb3VuZCBi YWNrZ3JvdW5kKTsKLS0JCXB1YmxpYyB2b2lkIHNldF92aWduZXR0ZSAoYm9vbCBlbmFibGVkLCBk b3VibGUgYnJpZ2h0bmVzcywgZG91YmxlIHNoYXJwbmVzcyk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhv ZF0KLS0JCXB1YmxpYyBNZXRhLkJhY2tncm91bmQgYmFja2dyb3VuZCB7IG93bmVkIGdldDsgc2V0 OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBkb3VibGUgYnJpZ2h0bmVzcyB7 IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBNZXRhLlNjcmVl biBtZXRhX3NjcmVlbiB7IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1l dGhvZF0KLS0JCXB1YmxpYyBpbnQgbW9uaXRvciB7IGdldDsgY29uc3RydWN0OyB9Ci0tCQlbTm9B Y2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIHZpZ25ldHRlIHsgZ2V0OyBzZXQ7IH0KLS0J CVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGRvdWJsZSB2aWduZXR0ZV9zaGFycG5lc3Mg eyBnZXQ7IHNldDsgfQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21l dGEtYmFja2dyb3VuZC1ncm91cC5oIiwgdHlwZV9pZCA9ICJtZXRhX2JhY2tncm91bmRfZ3JvdXBf Z2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNsYXNzIEJhY2tncm91bmRHcm91cCA6IENsdXR0ZXIu QWN0b3IsIEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0dGVyLkNvbnRh aW5lciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5j dGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3RvcioiKV0KLS0JCXB1YmxpYyBCYWNrZ3Jv dW5kR3JvdXAgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0 YS1iYWNrZ3JvdW5kLWltYWdlLmgiLCB0eXBlX2lkID0gIm1ldGFfYmFja2dyb3VuZF9pbWFnZV9n ZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgQmFja2dyb3VuZEltYWdlIDogR0xpYi5PYmpl Y3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJv dGVjdGVkIEJhY2tncm91bmRJbWFnZSAoKTsKLS0JCXB1YmxpYyBib29sIGdldF9zdWNjZXNzICgp OwotLQkJcHVibGljIHVub3duZWQgQ29nbC5UZXh0dXJlIGdldF90ZXh0dXJlICgpOwotLQkJcHVi bGljIGJvb2wgaXNfbG9hZGVkICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGxvYWRlZCAoKTsK LS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWJhY2tncm91bmQt aW1hZ2UuaCIsIHR5cGVfaWQgPSAibWV0YV9iYWNrZ3JvdW5kX2ltYWdlX2NhY2hlX2dldF90eXBl ICgpIildCi0tCXB1YmxpYyBjbGFzcyBCYWNrZ3JvdW5kSW1hZ2VDYWNoZSA6IEdMaWIuT2JqZWN0 IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3Rl Y3RlZCBCYWNrZ3JvdW5kSW1hZ2VDYWNoZSAoKTsKLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBN ZXRhLkJhY2tncm91bmRJbWFnZUNhY2hlIGdldF9kZWZhdWx0ICgpOwotLQkJcHVibGljIE1ldGEu QmFja2dyb3VuZEltYWdlIGxvYWQgKEdMaWIuRmlsZSBmaWxlKTsKLS0JCXB1YmxpYyB2b2lkIHB1 cmdlIChHTGliLkZpbGUgZmlsZSk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvYmFycmllci5oIiwgdHlwZV9pZCA9ICJtZXRhX2JhcnJpZXJfZ2V0X3R5cGUgKCkiKV0K LS0JcHVibGljIGNsYXNzIEJhcnJpZXIgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19j b25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgQmFycmllciAoKTsKLS0J CXB1YmxpYyB2b2lkIGRlc3Ryb3kgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19hY3RpdmUgKCk7Ci0t CQlwdWJsaWMgdm9pZCByZWxlYXNlIChNZXRhLkJhcnJpZXJFdmVudCBldmVudCk7Ci0tCQlbTm9B Y2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBNZXRhLkJhcnJpZXJEaXJlY3Rpb24gZGlyZWN0aW9u cyB7IGdldDsgY29uc3RydWN0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBN ZXRhLkRpc3BsYXkgZGlzcGxheSB7IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci0tCQlbTm9BY2Nl c3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBpbnQgeDEgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgaW50IHgyIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0J CVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGludCB5MSB7IGdldDsgY29uc3RydWN0OyB9 Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBpbnQgeTIgeyBnZXQ7IGNvbnN0cnVj dDsgfQotLQkJcHVibGljIHNpZ25hbCB2b2lkIGhpdCAoTWV0YS5CYXJyaWVyRXZlbnQgZXZlbnQp OwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGxlZnQgKE1ldGEuQmFycmllckV2ZW50IGV2ZW50KTsK LS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjb3B5X2Z1 bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwg dHlwZV9pZCA9ICJtZXRhX2JhcnJpZXJfZXZlbnRfZ2V0X3R5cGUgKCkiKV0KLS0JW0NvbXBhY3Rd Ci0tCXB1YmxpYyBjbGFzcyBCYXJyaWVyRXZlbnQgewotLQkJcHVibGljIGludCBkdDsKLS0JCXB1 YmxpYyBkb3VibGUgZHg7Ci0tCQlwdWJsaWMgZG91YmxlIGR5OwotLQkJcHVibGljIGludCBldmVu dF9pZDsKLS0JCXB1YmxpYyBib29sIGdyYWJiZWQ7Ci0tCQlwdWJsaWMgYm9vbCByZWxlYXNlZDsK LS0JCXB1YmxpYyB1aW50MzIgdGltZTsKLS0JCXB1YmxpYyBkb3VibGUgeDsKLS0JCXB1YmxpYyBk b3VibGUgeTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3Np dG9yLmgiKV0KLS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBDb21wb3NpdG9yIHsKLS0JCXB1 YmxpYyB2b2lkIGFkZF93aW5kb3cgKE1ldGEuV2luZG93IHdpbmRvdyk7Ci0tCQlwdWJsaWMgdm9p ZCBkZXN0cm95ICgpOwotLQkJcHVibGljIGJvb2wgZmlsdGVyX2tleWJpbmRpbmcgKE1ldGEuS2V5 QmluZGluZyBiaW5kaW5nKTsKLS0JCXB1YmxpYyB2b2lkIGZsYXNoX3NjcmVlbiAoTWV0YS5TY3Jl ZW4gc2NyZWVuKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0 b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2ZvY3VzX3N0YWdlX3dpbmRvdyIpXQotLQkJcHVi bGljIHN0YXRpYyB2b2lkIGZvY3VzX3N0YWdlX3dpbmRvdyAoTWV0YS5TY3JlZW4gc2NyZWVuLCB1 aW50MzIgdGltZXN0YW1wKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2Nv bXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2dldF9mZWVkYmFja19ncm91cF9mb3Jf c2NyZWVuIildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfZmVl ZGJhY2tfZ3JvdXBfZm9yX3NjcmVlbiAoTWV0YS5TY3JlZW4gc2NyZWVuKTsKLS0JCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJt ZXRhX2dldF9zdGFnZV9mb3Jfc2NyZWVuIildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ2x1 dHRlci5BY3Rvcj8gZ2V0X3N0YWdlX2Zvcl9zY3JlZW4gKE1ldGEuU2NyZWVuIHNjcmVlbik7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwg Y25hbWUgPSAibWV0YV9nZXRfdG9wX3dpbmRvd19ncm91cF9mb3Jfc2NyZWVuIildCi0tCQlwdWJs aWMgc3RhdGljIHVub3duZWQgQ2x1dHRlci5BY3Rvcj8gZ2V0X3RvcF93aW5kb3dfZ3JvdXBfZm9y X3NjcmVlbiAoTWV0YS5TY3JlZW4gc2NyZWVuKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2dldF93aW5kb3df YWN0b3JzIildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgR0xpYi5MaXN0PHdlYWsgTWV0YS5X aW5kb3dBY3Rvcj4/IGdldF93aW5kb3dfYWN0b3JzIChNZXRhLlNjcmVlbiBzY3JlZW4pOwotLQkJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIGNu YW1lID0gIm1ldGFfZ2V0X3dpbmRvd19ncm91cF9mb3Jfc2NyZWVuIildCi0tCQlwdWJsaWMgc3Rh dGljIHVub3duZWQgQ2x1dHRlci5BY3Rvcj8gZ2V0X3dpbmRvd19ncm91cF9mb3Jfc2NyZWVuIChN ZXRhLlNjcmVlbiBzY3JlZW4pOwotLQkJcHVibGljIHZvaWQgaGlkZV90aWxlX3ByZXZpZXcgKCk7 Ci0tCQlwdWJsaWMgdm9pZCBoaWRlX3dpbmRvdyAoTWV0YS5XaW5kb3cgd2luZG93LCBNZXRhLkNv bXBFZmZlY3QgZWZmZWN0KTsKLS0JCXB1YmxpYyB2b2lkIG1hbmFnZSAoKTsKLS0JCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93 bmVkIE1ldGEuQ29tcG9zaXRvciBAbmV3IChNZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlwdWJs aWMgdm9pZCBxdWV1ZV9mcmFtZV9kcmF3biAoTWV0YS5XaW5kb3cgd2luZG93LCBib29sIG5vX2Rl bGF5X2ZyYW1lKTsKLS0JCXB1YmxpYyB2b2lkIHJlbW92ZV93aW5kb3cgKE1ldGEuV2luZG93IHdp bmRvdyk7Ci0tCQlwdWJsaWMgdm9pZCBzaG93X3RpbGVfcHJldmlldyAoTWV0YS5XaW5kb3cgd2lu ZG93LCBNZXRhLlJlY3RhbmdsZSB0aWxlX3JlY3QsIGludCB0aWxlX21vbml0b3JfbnVtYmVyKTsK LS0JCXB1YmxpYyB2b2lkIHNob3dfd2luZG93IChNZXRhLldpbmRvdyB3aW5kb3csIE1ldGEuQ29t cEVmZmVjdCBlZmZlY3QpOwotLQkJcHVibGljIHZvaWQgc2hvd193aW5kb3dfbWVudSAoTWV0YS5X aW5kb3cgd2luZG93LCBNZXRhLldpbmRvd01lbnVUeXBlIG1lbnUsIGludCB4LCBpbnQgeSk7Ci0t CQlwdWJsaWMgdm9pZCBzaG93X3dpbmRvd19tZW51X2Zvcl9yZWN0IChNZXRhLldpbmRvdyB3aW5k b3csIE1ldGEuV2luZG93TWVudVR5cGUgbWVudSwgTWV0YS5SZWN0YW5nbGUgcmVjdCk7Ci0tCQlw dWJsaWMgdm9pZCBzaXplX2NoYW5nZV93aW5kb3cgKE1ldGEuV2luZG93IHdpbmRvdywgTWV0YS5T aXplQ2hhbmdlIHdoaWNoX2NoYW5nZSwgTWV0YS5SZWN0YW5nbGUgb2xkX2ZyYW1lX3JlY3QsIE1l dGEuUmVjdGFuZ2xlIG9sZF9idWZmZXJfcmVjdCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9zdGFnZV9pc19m b2N1c2VkIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgc3RhZ2VfaXNfZm9jdXNlZCAoTWV0YS5T Y3JlZW4gc2NyZWVuKTsKLS0JCXB1YmxpYyB2b2lkIHN3aXRjaF93b3Jrc3BhY2UgKE1ldGEuV29y a3NwYWNlIGZyb20sIE1ldGEuV29ya3NwYWNlIHRvLCBNZXRhLk1vdGlvbkRpcmVjdGlvbiBkaXJl Y3Rpb24pOwotLQkJcHVibGljIHZvaWQgc3luY19zdGFjayAoR0xpYi5MaXN0PE1ldGEuV2luZG93 QWN0b3I+IHN0YWNrKTsKLS0JCXB1YmxpYyB2b2lkIHN5bmNfdXBkYXRlc19mcm96ZW4gKE1ldGEu V2luZG93IHdpbmRvdyk7Ci0tCQlwdWJsaWMgdm9pZCBzeW5jX3dpbmRvd19nZW9tZXRyeSAoTWV0 YS5XaW5kb3cgd2luZG93LCBib29sIGRpZF9wbGFjZW1lbnQpOwotLQkJcHVibGljIHZvaWQgdW5t YW5hZ2UgKCk7Ci0tCQlwdWJsaWMgdm9pZCB3aW5kb3dfb3BhY2l0eV9jaGFuZ2VkIChNZXRhLldp bmRvdyB3aW5kb3cpOwotLQkJcHVibGljIHZvaWQgd2luZG93X3NoYXBlX2NoYW5nZWQgKE1ldGEu V2luZG93IHdpbmRvdyk7Ci0tCQlwdWJsaWMgdm9pZCB3aW5kb3dfc3VyZmFjZV9jaGFuZ2VkIChN ZXRhLldpbmRvdyB3aW5kb3cpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCIsIHR5cGVfaWQgPSAibWV0YV9jdXJzb3JfdHJhY2tl cl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgQ3Vyc29yVHJhY2tlciA6IEdMaWIuT2Jq ZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXBy b3RlY3RlZCBDdXJzb3JUcmFja2VyICgpOwotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEu Q3Vyc29yVHJhY2tlciBnZXRfZm9yX3NjcmVlbiAoTWV0YS5TY3JlZW4gc2NyZWVuKTsKLS0JCXB1 YmxpYyB2b2lkIGdldF9ob3QgKG91dCBpbnQgeCwgb3V0IGludCB5KTsKLS0JCXB1YmxpYyB2b2lk IGdldF9wb2ludGVyIChpbnQgeCwgaW50IHksIENsdXR0ZXIuTW9kaWZpZXJUeXBlIG1vZHMpOwot LQkJcHVibGljIHVub3duZWQgQ29nbC5UZXh0dXJlIGdldF9zcHJpdGUgKCk7Ci0tCQlwdWJsaWMg dm9pZCBzZXRfcG9pbnRlcl92aXNpYmxlIChib29sIHZpc2libGUpOwotLQkJcHVibGljIHNpZ25h bCB2b2lkIGN1cnNvcl9jaGFuZ2VkICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL2Rpc3BsYXkuaCIsIHR5cGVfaWQgPSAibWV0YV9kaXNwbGF5X2dldF90eXBlICgp IildCi0tCXB1YmxpYyBjbGFzcyBEaXNwbGF5IDogR0xpYi5PYmplY3QgewotLQkJW0NDb2RlICho YXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIERpc3BsYXkgKCk7 Ci0tCQlwdWJsaWMgdm9pZCBhZGRfaWdub3JlZF9jcm9zc2luZ19zZXJpYWwgKHVsb25nIHNlcmlh bCk7Ci0tCQlwdWJsaWMgdWludCBhZGRfa2V5YmluZGluZyAoc3RyaW5nIG5hbWUsIEdMaWIuU2V0 dGluZ3Mgc2V0dGluZ3MsIE1ldGEuS2V5QmluZGluZ0ZsYWdzIGZsYWdzLCBvd25lZCBNZXRhLktl eUhhbmRsZXJGdW5jIGhhbmRsZXIpOwotLQkJcHVibGljIGJvb2wgYmVnaW5fZ3JhYl9vcCAoTWV0 YS5TY3JlZW4gc2NyZWVuLCBNZXRhLldpbmRvdyB3aW5kb3csIE1ldGEuR3JhYk9wIG9wLCBib29s IHBvaW50ZXJfYWxyZWFkeV9ncmFiYmVkLCBib29sIGZyYW1lX2FjdGlvbiwgaW50IGJ1dHRvbiwg dWxvbmcgbW9kbWFzaywgdWludDMyIHRpbWVzdGFtcCwgaW50IHJvb3RfeCwgaW50IHJvb3RfeSk7 Ci0tCQlwdWJsaWMgdm9pZCBjbGVhcl9tb3VzZV9tb2RlICgpOwotLQkJcHVibGljIHZvaWQgZW5k X2dyYWJfb3AgKHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIHZvaWQgZm9jdXNfdGhlX25v X2ZvY3VzX3dpbmRvdyAoTWV0YS5TY3JlZW4gc2NyZWVuLCB1aW50MzIgdGltZXN0YW1wKTsKLS0J CXB1YmxpYyB2b2lkIGZyZWV6ZV9rZXlib2FyZCAodWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJs aWMgdW5vd25lZCBNZXRhLkNvbXBvc2l0b3IgZ2V0X2NvbXBvc2l0b3IgKCk7Ci0tCQlwdWJsaWMg dWludDMyIGdldF9jdXJyZW50X3RpbWUgKCk7Ci0tCQlwdWJsaWMgdWludDMyIGdldF9jdXJyZW50 X3RpbWVfcm91bmR0cmlwICgpOwotLQkJcHVibGljIGludCBnZXRfZGFtYWdlX2V2ZW50X2Jhc2Ug KCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBNZXRhLldpbmRvdyBnZXRfZm9jdXNfd2luZG93ICgpOwot LQkJcHVibGljIE1ldGEuR3JhYk9wIGdldF9ncmFiX29wICgpOwotLQkJcHVibGljIHVpbnQgZ2V0 X2tleWJpbmRpbmdfYWN0aW9uICh1aW50IGtleWNvZGUsIHVsb25nIG1hc2spOwotLQkJcHVibGlj IHVpbnQzMiBnZXRfbGFzdF91c2VyX3RpbWUgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9zaGFwZV9l dmVudF9iYXNlICgpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5XaW5kb3cgZ2V0X3RhYl9jdXJy ZW50IChNZXRhLlRhYkxpc3QgdHlwZSwgTWV0YS5Xb3Jrc3BhY2Ugd29ya3NwYWNlKTsKLS0JCXB1 YmxpYyBHTGliLkxpc3Q8d2VhayBNZXRhLldpbmRvdz4gZ2V0X3RhYl9saXN0IChNZXRhLlRhYkxp c3QgdHlwZSwgTWV0YS5Xb3Jrc3BhY2U/IHdvcmtzcGFjZSk7Ci0tCQlwdWJsaWMgdW5vd25lZCBN ZXRhLldpbmRvdyBnZXRfdGFiX25leHQgKE1ldGEuVGFiTGlzdCB0eXBlLCBNZXRhLldvcmtzcGFj ZSB3b3Jrc3BhY2UsIE1ldGEuV2luZG93PyB3aW5kb3csIGJvb2wgYmFja3dhcmQpOwotLQkJcHVi bGljIHVub3duZWQgWC5EaXNwbGF5IGdldF94ZGlzcGxheSAoKTsKLS0JCXB1YmxpYyBpbnQgZ2V0 X3hpbnB1dF9vcGNvZGUgKCk7Ci0tCQlwdWJsaWMgdWludCBncmFiX2FjY2VsZXJhdG9yIChzdHJp bmcgYWNjZWxlcmF0b3IpOwotLQkJcHVibGljIGJvb2wgaGFzX3NoYXBlICgpOwotLQkJcHVibGlj IGJvb2wgaXNfcG9pbnRlcl9lbXVsYXRpbmdfc2VxdWVuY2UgKENsdXR0ZXIuRXZlbnRTZXF1ZW5j ZT8gc2VxdWVuY2UpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5Hcm91cCBsb29rdXBfZ3JvdXAg KFguV2luZG93IGdyb3VwX2xlYWRlcik7Ci0tCQlwdWJsaWMgYm9vbCByZW1vdmVfa2V5YmluZGlu ZyAoc3RyaW5nIG5hbWUpOwotLQkJcHVibGljIHZvaWQgc2V0X2lucHV0X2ZvY3VzX3dpbmRvdyAo TWV0YS5XaW5kb3cgd2luZG93LCBib29sIGZvY3VzX2ZyYW1lLCB1aW50MzIgdGltZXN0YW1wKTsK LS0JCXB1YmxpYyBHTGliLlNMaXN0PHdlYWsgTWV0YS5XaW5kb3c+IHNvcnRfd2luZG93c19ieV9z dGFja2luZyAoR0xpYi5TTGlzdDxNZXRhLldpbmRvdz4gd2luZG93cyk7Ci0tCQlwdWJsaWMgYm9v bCBzdXBwb3J0c19leHRlbmRlZF9iYXJyaWVycyAoKTsKLS0JCXB1YmxpYyB2b2lkIHVuZnJlZXpl X2tleWJvYXJkICh1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyBib29sIHVuZ3JhYl9hY2Nl bGVyYXRvciAodWludCBhY3Rpb25faWQpOwotLQkJcHVibGljIHZvaWQgdW5ncmFiX2tleWJvYXJk ICh1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB2b2lkIHVubWFuYWdlX3NjcmVlbiAoTWV0 YS5TY3JlZW4gc2NyZWVuLCB1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyBib29sIHhzZXJ2 ZXJfdGltZV9pc19iZWZvcmUgKHVpbnQzMiB0aW1lMSwgdWludDMyIHRpbWUyKTsKLS0JCXB1Ymxp YyBib29sIHh3aW5kb3dfaXNfYV9ub19mb2N1c193aW5kb3cgKFguV2luZG93IHh3aW5kb3cpOwot LQkJcHVibGljIHNpZ25hbCB2b2lkIGFjY2VsZXJhdG9yX2FjdGl2YXRlZCAodWludCBvYmplY3Qs IHVpbnQgcDAsIHVpbnQgcDEpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGdyYWJfb3BfYmVnaW4g KE1ldGEuU2NyZWVuIG9iamVjdCwgTWV0YS5XaW5kb3cgcDAsIE1ldGEuR3JhYk9wIHAxKTsKLS0J CXB1YmxpYyBzaWduYWwgdm9pZCBncmFiX29wX2VuZCAoTWV0YS5TY3JlZW4gb2JqZWN0LCBNZXRh LldpbmRvdyBwMCwgTWV0YS5HcmFiT3AgcDEpOwotLQkJcHVibGljIHNpZ25hbCBib29sIG1vZGlm aWVyc19hY2NlbGVyYXRvcl9hY3RpdmF0ZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgb3Zl cmxheV9rZXkgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIGJvb2wgcmVzdGFydCAoKTsKLS0JCXB1Ymxp YyBzaWduYWwgYm9vbCBzaG93X3Jlc2l6ZV9wb3B1cCAoYm9vbCBvYmplY3QsIE1ldGEuUmVjdGFu Z2xlIHAwLCBpbnQgcDEsIGludCBwMik7Ci0tCQlwdWJsaWMgc2lnbmFsIGJvb2wgc2hvd19yZXN0 YXJ0X21lc3NhZ2UgKHN0cmluZz8gbWVzc2FnZSk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgd2lu ZG93X2NyZWF0ZWQgKE1ldGEuV2luZG93IG9iamVjdCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQg d2luZG93X2RlbWFuZHNfYXR0ZW50aW9uIChNZXRhLldpbmRvdyBvYmplY3QpOwotLQkJcHVibGlj IHNpZ25hbCB2b2lkIHdpbmRvd19tYXJrZWRfdXJnZW50IChNZXRhLldpbmRvdyBvYmplY3QpOwot LQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIildCi0tCVtD b21wYWN0XQotLQlwdWJsaWMgY2xhc3MgRnJhbWUgewotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL2dyb3VwLmgiKV0KLS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBH cm91cCB7Ci0tCQlwdWJsaWMgaW50IGdldF9zaXplICgpOwotLQkJcHVibGljIHVub3duZWQgc3Ry aW5nIGdldF9zdGFydHVwX2lkICgpOwotLQkJcHVibGljIEdMaWIuU0xpc3Q8d2VhayBNZXRhLldp bmRvdz4gbGlzdF93aW5kb3dzICgpOwotLQkJcHVibGljIGJvb2wgcHJvcGVydHlfbm90aWZ5IChY LkV2ZW50IGV2ZW50KTsKLS0JCXB1YmxpYyB2b2lkIHVwZGF0ZV9sYXllcnMgKCk7Ci0tCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCIsIHR5 cGVfaWQgPSAibWV0YV9pZGxlX21vbml0b3JfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNsYXNz IElkbGVNb25pdG9yIDogR0xpYi5PYmplY3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1 bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIElkbGVNb25pdG9yICgpOwotLQkJcHVibGlj IHVpbnQgYWRkX2lkbGVfd2F0Y2ggKHVpbnQ2NCBpbnRlcnZhbF9tc2VjLCBvd25lZCBNZXRhLklk bGVNb25pdG9yV2F0Y2hGdW5jPyBjYWxsYmFjayk7Ci0tCQlwdWJsaWMgdWludCBhZGRfdXNlcl9h Y3RpdmVfd2F0Y2ggKG93bmVkIE1ldGEuSWRsZU1vbml0b3JXYXRjaEZ1bmM/IGNhbGxiYWNrKTsK LS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBNZXRhLklkbGVNb25pdG9yIGdldF9jb3JlICgpOwot LQkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEuSWRsZU1vbml0b3IgZ2V0X2Zvcl9kZXZpY2Ug KGludCBkZXZpY2VfaWQpOwotLQkJcHVibGljIGludDY0IGdldF9pZGxldGltZSAoKTsKLS0JCXB1 YmxpYyB2b2lkIHJlbW92ZV93YXRjaCAodWludCBpZCk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0K LS0JCXB1YmxpYyBpbnQgZGV2aWNlX2lkIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JfQotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9rZXliaW5kaW5ncy5oIiwgY29weV9mdW5jdGlv biA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVf aWQgPSAibWV0YV9rZXlfYmluZGluZ19nZXRfdHlwZSAoKSIpXQotLQlbQ29tcGFjdF0KLS0JcHVi bGljIGNsYXNzIEtleUJpbmRpbmcgewotLQkJcHVibGljIHVpbnQgZ2V0X21hc2sgKCk7Ci0tCQlw dWJsaWMgTWV0YS5WaXJ0dWFsTW9kaWZpZXIgZ2V0X21vZGlmaWVycyAoKTsKLS0JCXB1YmxpYyB1 bm93bmVkIHN0cmluZyBnZXRfbmFtZSAoKTsKLS0JCXB1YmxpYyBib29sIGlzX2J1aWx0aW4gKCk7 Ci0tCQlwdWJsaWMgYm9vbCBpc19yZXZlcnNlZCAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL2tleWJpbmRpbmdzLmgiLCBjbmFtZSA9ICJtZXRhX2tleWJpbmRpbmdzX3Nl dF9jdXN0b21faGFuZGxlciIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIHNldF9jdXN0b21faGFu ZGxlciAoc3RyaW5nIG5hbWUsIG93bmVkIE1ldGEuS2V5SGFuZGxlckZ1bmM/IGhhbmRsZXIpOwot LQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtbW9uaXRvci1tYW5h Z2VyLmgiLCB0eXBlX2lkID0gIm1ldGFfbW9uaXRvcl9tYW5hZ2VyX2dldF90eXBlICgpIildCi0t CXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBNb25pdG9yTWFuYWdlciA6IEdMaWIuREJ1c0ludGVyZmFj ZVNrZWxldG9uLCBHTGliLkRCdXNJbnRlcmZhY2UgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0 X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIE1vbml0b3JNYW5hZ2VyICgpOwotLQkJ cHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEuTW9uaXRvck1hbmFnZXIgQGdldCAoKTsKLS0JCXB1 YmxpYyBpbnQgZ2V0X21vbml0b3JfZm9yX291dHB1dCAodWludCBpZCk7Ci0tCQlwdWJsaWMgc2ln bmFsIHZvaWQgY29uZmlybV9kaXNwbGF5X2NoYW5nZSAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXBsdWdpbi5oIiwgdHlwZV9pZCA9ICJtZXRhX3BsdWdp bl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgUGx1Z2luIDogR0xpYi5P YmplY3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJ cHJvdGVjdGVkIFBsdWdpbiAoKTsKLS0JCXB1YmxpYyBib29sIGJlZ2luX21vZGFsIChNZXRhLk1v ZGFsT3B0aW9ucyBvcHRpb25zLCB1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB2b2lkIGNv bXBsZXRlX2Rpc3BsYXlfY2hhbmdlIChib29sIG9rKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJs aWMgdmlydHVhbCB2b2lkIGNvbmZpcm1fZGlzcGxheV9jaGFuZ2UgKCk7Ci0tCQlbTm9XcmFwcGVy XQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBkZXN0cm95IChNZXRhLldpbmRvd0FjdG9yIGFjdG9y KTsKLS0JCXB1YmxpYyB2b2lkIGRlc3Ryb3lfY29tcGxldGVkIChNZXRhLldpbmRvd0FjdG9yIGFj dG9yKTsKLS0JCXB1YmxpYyB2b2lkIGVuZF9tb2RhbCAodWludDMyIHRpbWVzdGFtcCk7Ci0tCQlw dWJsaWMgdW5vd25lZCBNZXRhLlBsdWdpbkluZm8/IGdldF9pbmZvICgpOwotLQkJcHVibGljIHVu b3duZWQgTWV0YS5TY3JlZW4gZ2V0X3NjcmVlbiAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJs aWMgdmlydHVhbCB2b2lkIGhpZGVfdGlsZV9wcmV2aWV3ICgpOwotLQkJW05vV3JhcHBlcl0KLS0J CXB1YmxpYyB2aXJ0dWFsIGJvb2wga2V5YmluZGluZ19maWx0ZXIgKE1ldGEuS2V5QmluZGluZyBi aW5kaW5nKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIGtpbGxfc3dp dGNoX3dvcmtzcGFjZSAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lk IGtpbGxfd2luZG93X2VmZmVjdHMgKE1ldGEuV2luZG93QWN0b3IgYWN0b3IpOwotLQkJcHVibGlj IHN0YXRpYyB2b2lkIG1hbmFnZXJfc2V0X3BsdWdpbl90eXBlIChHTGliLlR5cGUgZ3R5cGUpOwot LQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgbWFwIChNZXRhLldpbmRvd0Fj dG9yIGFjdG9yKTsKLS0JCXB1YmxpYyB2b2lkIG1hcF9jb21wbGV0ZWQgKE1ldGEuV2luZG93QWN0 b3IgYWN0b3IpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgbWluaW1p emUgKE1ldGEuV2luZG93QWN0b3IgYWN0b3IpOwotLQkJcHVibGljIHZvaWQgbWluaW1pemVfY29t cGxldGVkIChNZXRhLldpbmRvd0FjdG9yIGFjdG9yKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJs aWMgdmlydHVhbCB1bm93bmVkIE1ldGEuUGx1Z2luSW5mbz8gcGx1Z2luX2luZm8gKCk7Ci0tCQlb Tm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBzaG93X3RpbGVfcHJldmlldyAoTWV0 YS5XaW5kb3cgd2luZG93LCBNZXRhLlJlY3RhbmdsZSB0aWxlX3JlY3QsIGludCB0aWxlX21vbml0 b3JfbnVtYmVyKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNob3df d2luZG93X21lbnUgKE1ldGEuV2luZG93IHdpbmRvdywgTWV0YS5XaW5kb3dNZW51VHlwZSBtZW51 LCBpbnQgeCwgaW50IHkpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQg c2hvd193aW5kb3dfbWVudV9mb3JfcmVjdCAoTWV0YS5XaW5kb3cgd2luZG93LCBNZXRhLldpbmRv d01lbnVUeXBlIG1lbnUsIE1ldGEuUmVjdGFuZ2xlIHJlY3QpOwotLQkJW05vV3JhcHBlcl0KLS0J CXB1YmxpYyB2aXJ0dWFsIHZvaWQgc2l6ZV9jaGFuZ2UgKE1ldGEuV2luZG93QWN0b3IgYWN0b3Is IE1ldGEuU2l6ZUNoYW5nZSB3aGljaF9jaGFuZ2UsIE1ldGEuUmVjdGFuZ2xlIG9sZF9mcmFtZV9y ZWN0LCBNZXRhLlJlY3RhbmdsZSBvbGRfYnVmZmVyX3JlY3QpOwotLQkJcHVibGljIHZvaWQgc2l6 ZV9jaGFuZ2VfY29tcGxldGVkIChNZXRhLldpbmRvd0FjdG9yIGFjdG9yKTsKLS0JCVtOb1dyYXBw ZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHN0YXJ0ICgpOwotLQkJW05vV3JhcHBlcl0KLS0J CXB1YmxpYyB2aXJ0dWFsIHZvaWQgc3dpdGNoX3dvcmtzcGFjZSAoaW50IGZyb20sIGludCB0bywg TWV0YS5Nb3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKTsKLS0JCXB1YmxpYyB2b2lkIHN3aXRjaF93 b3Jrc3BhY2VfY29tcGxldGVkICgpOwotLSAJCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVh bCB2b2lkIHVubWluaW1pemUgKE1ldGEuV2luZG93QWN0b3IgYWN0b3IpOwotLQkJcHVibGljIHZv aWQgdW5taW5pbWl6ZV9jb21wbGV0ZWQgKE1ldGEuV2luZG93QWN0b3IgYWN0b3IpOwotLQkJW05v V3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIGJvb2wgeGV2ZW50X2ZpbHRlciAoWC5FdmVudCBl dmVudCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvc2NyZWVuLmgi LCB0eXBlX2lkID0gIm1ldGFfc2NyZWVuX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBT Y3JlZW4gOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24g PSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgU2NyZWVuICgpOwotLQkJcHVibGljIHVub3duZWQgTWV0 YS5Xb3Jrc3BhY2U/IGFwcGVuZF9uZXdfd29ya3NwYWNlIChib29sIGFjdGl2YXRlLCB1aW50MzIg dGltZXN0YW1wKTsKLS0JCXB1YmxpYyB2b2lkIGZvY3VzX2RlZmF1bHRfd2luZG93ICh1aW50MzIg dGltZXN0YW1wKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV29ya3NwYWNlIGdldF9hY3RpdmVf d29ya3NwYWNlICgpOwotLQkJcHVibGljIGludCBnZXRfYWN0aXZlX3dvcmtzcGFjZV9pbmRleCAo KTsKLS0JCXB1YmxpYyBpbnQgZ2V0X2N1cnJlbnRfbW9uaXRvciAoKTsKLS0JCXB1YmxpYyBpbnQg Z2V0X2N1cnJlbnRfbW9uaXRvcl9mb3JfcG9zIChpbnQgeCwgaW50IHkpOwotLQkJcHVibGljIHVu b3duZWQgTWV0YS5EaXNwbGF5IGdldF9kaXNwbGF5ICgpOwotLQkJcHVibGljIE1ldGEuUmVjdGFu Z2xlIGdldF9tb25pdG9yX2dlb21ldHJ5IChpbnQgbW9uaXRvcik7Ci0tCQlwdWJsaWMgYm9vbCBn ZXRfbW9uaXRvcl9pbl9mdWxsc2NyZWVuIChpbnQgbW9uaXRvcik7Ci0tCQlwdWJsaWMgaW50IGdl dF9tb25pdG9yX2luZGV4X2Zvcl9yZWN0IChNZXRhLlJlY3RhbmdsZSByZWN0KTsKLS0JCXB1Ymxp YyBpbnQgZ2V0X21vbml0b3JfbmVpZ2hib3JfaW5kZXggKGludCB3aGljaF9tb25pdG9yLCBNZXRh LlNjcmVlbkRpcmVjdGlvbiBkaXIpOwotLQkJcHVibGljIGludCBnZXRfbl9tb25pdG9ycyAoKTsK LS0JCXB1YmxpYyBpbnQgZ2V0X25fd29ya3NwYWNlcyAoKTsKLS0JCXB1YmxpYyBpbnQgZ2V0X3By aW1hcnlfbW9uaXRvciAoKTsKLS0JCXB1YmxpYyBpbnQgZ2V0X3NjcmVlbl9udW1iZXIgKCk7Ci0t CQlwdWJsaWMgdm9pZCBnZXRfc2l6ZSAob3V0IGludCB3aWR0aCwgb3V0IGludCBoZWlnaHQpOwot LQkJcHVibGljIHVub3duZWQgTWV0YS5Xb3Jrc3BhY2U/IGdldF93b3Jrc3BhY2VfYnlfaW5kZXgg KGludCBpbmRleCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBHTGliLkxpc3Q8TWV0YS5Xb3Jrc3BhY2U+ IGdldF93b3Jrc3BhY2VzICgpOwotLQkJcHVibGljIFguV2luZG93IGdldF94cm9vdCAoKTsKLS0J CXB1YmxpYyB2b2lkIG92ZXJyaWRlX3dvcmtzcGFjZV9sYXlvdXQgKE1ldGEuU2NyZWVuQ29ybmVy IHN0YXJ0aW5nX2Nvcm5lciwgYm9vbCB2ZXJ0aWNhbF9sYXlvdXQsIGludCBuX3Jvd3MsIGludCBu X2NvbHVtbnMpOwotLQkJcHVibGljIHZvaWQgcmVtb3ZlX3dvcmtzcGFjZSAoTWV0YS5Xb3Jrc3Bh Y2Ugd29ya3NwYWNlLCB1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9jbV9z ZWxlY3Rpb24gKCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfY3Vyc29yIChNZXRhLkN1cnNvciBjdXJz b3IpOwotLQkJcHVibGljIGludCBuX3dvcmtzcGFjZXMgeyBnZXQ7IH0KLS0JCXB1YmxpYyBzaWdu YWwgdm9pZCBpbl9mdWxsc2NyZWVuX2NoYW5nZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQg bW9uaXRvcnNfY2hhbmdlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCByZXN0YWNrZWQgKCk7 Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgc3RhcnR1cF9zZXF1ZW5jZV9jaGFuZ2VkICh2b2lkKiBv YmplY3QpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdpbmRvd19lbnRlcmVkX21vbml0b3IgKGlu dCBvYmplY3QsIE1ldGEuV2luZG93IHAwKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCB3aW5kb3df bGVmdF9tb25pdG9yIChpbnQgb2JqZWN0LCBNZXRhLldpbmRvdyBwMCk7Ci0tCQlwdWJsaWMgc2ln bmFsIHZvaWQgd29ya2FyZWFzX2NoYW5nZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgd29y a3NwYWNlX2FkZGVkIChpbnQgb2JqZWN0KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCB3b3Jrc3Bh Y2VfcmVtb3ZlZCAoaW50IG9iamVjdCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgd29ya3NwYWNl X3N3aXRjaGVkIChpbnQgb2JqZWN0LCBpbnQgcDAsIE1ldGEuTW90aW9uRGlyZWN0aW9uIHAxKTsK LS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXNoYWRvdy1mYWN0 b3J5LmgiLCByZWZfZnVuY3Rpb24gPSAibWV0YV9zaGFkb3dfcmVmIiwgdHlwZV9pZCA9ICJtZXRh X3NoYWRvd19nZXRfdHlwZSAoKSIsIHVucmVmX2Z1bmN0aW9uID0gIm1ldGFfc2hhZG93X3VucmVm IildCi0tCVtDb21wYWN0XQotLQlwdWJsaWMgY2xhc3MgU2hhZG93IHsKLS0JCXB1YmxpYyB2b2lk IGdldF9ib3VuZHMgKGludCB3aW5kb3dfeCwgaW50IHdpbmRvd195LCBpbnQgd2luZG93X3dpZHRo LCBpbnQgd2luZG93X2hlaWdodCwgQ2Fpcm8uUmVjdGFuZ2xlSW50IGJvdW5kcyk7Ci0tCQlwdWJs aWMgdm9pZCBwYWludCAoaW50IHdpbmRvd194LCBpbnQgd2luZG93X3ksIGludCB3aW5kb3dfd2lk dGgsIGludCB3aW5kb3dfaGVpZ2h0LCB1aW50OCBvcGFjaXR5LCBDYWlyby5SZWdpb24/IGNsaXAs IGJvb2wgY2xpcF9zdHJpY3RseSk7Ci0tCQlwdWJsaWMgTWV0YS5TaGFkb3cgQHJlZiAoKTsKLS0J CXB1YmxpYyB2b2lkIHVucmVmICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCIsIHR5cGVfaWQgPSAibWV0YV9zaGFkb3dfZmFj dG9yeV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgU2hhZG93RmFjdG9yeSA6IEdMaWIu T2JqZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0J CXB1YmxpYyBTaGFkb3dGYWN0b3J5ICgpOwotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEu U2hhZG93RmFjdG9yeSBnZXRfZGVmYXVsdCAoKTsKLS0JCXB1YmxpYyBNZXRhLlNoYWRvd1BhcmFt cyBnZXRfcGFyYW1zIChzdHJpbmcgY2xhc3NfbmFtZSwgYm9vbCBmb2N1c2VkKTsKLS0JCXB1Ymxp YyBNZXRhLlNoYWRvdyBnZXRfc2hhZG93IChNZXRhLldpbmRvd1NoYXBlIHNoYXBlLCBpbnQgd2lk dGgsIGludCBoZWlnaHQsIHN0cmluZyBjbGFzc19uYW1lLCBib29sIGZvY3VzZWQpOwotLQkJcHVi bGljIHZvaWQgc2V0X3BhcmFtcyAoc3RyaW5nIGNsYXNzX25hbWUsIGJvb2wgZm9jdXNlZCwgTWV0 YS5TaGFkb3dQYXJhbXMgQHBhcmFtcyk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgY2hhbmdlZCAo KTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXNoYXBlZC10 ZXh0dXJlLmgiLCB0eXBlX2lkID0gIm1ldGFfc2hhcGVkX3RleHR1cmVfZ2V0X3R5cGUgKCkiKV0K LS0JcHVibGljIGNsYXNzIFNoYXBlZFRleHR1cmUgOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1wbGVt ZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2Ny aXB0YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0t CQlwcm90ZWN0ZWQgU2hhcGVkVGV4dHVyZSAoKTsKLS0JCXB1YmxpYyBDYWlyby5TdXJmYWNlIGdl dF9pbWFnZSAoQ2Fpcm8uUmVjdGFuZ2xlSW50IGNsaXApOwotLQkJcHVibGljIHVub3duZWQgQ29n bC5UZXh0dXJlIGdldF90ZXh0dXJlICgpOwotLQkJcHVibGljIHZvaWQgc2V0X2NyZWF0ZV9taXBt YXBzIChib29sIGNyZWF0ZV9taXBtYXBzKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9tYXNrX3RleHR1 cmUgKENvZ2wuVGV4dHVyZSBtYXNrX3RleHR1cmUpOwotLQkJcHVibGljIHZvaWQgc2V0X29wYXF1 ZV9yZWdpb24gKG93bmVkIENhaXJvLlJlZ2lvbiBvcGFxdWVfcmVnaW9uKTsKLS0JCXB1YmxpYyBi b29sIHVwZGF0ZV9hcmVhIChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0t CQlwdWJsaWMgc2lnbmFsIHZvaWQgc2l6ZV9jaGFuZ2VkICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL3RoZW1lLmgiKV0KLS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBj bGFzcyBUaGVtZSB7Ci0tCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotLQkJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgTWV0 YS5UaGVtZSBnZXRfZGVmYXVsdCAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL21haW4uaCIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEuVGhlbWUgQG5ldyAo KTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS93aW5kb3cuaCIsIHR5 cGVfaWQgPSAibWV0YV93aW5kb3dfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGFic3RyYWN0IGNs YXNzIFdpbmRvdyA6IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5j dGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBXaW5kb3cgKCk7Ci0tCQlwdWJsaWMgdm9pZCBh Y3RpdmF0ZSAodWludDMyIGN1cnJlbnRfdGltZSk7Ci0tCQlwdWJsaWMgdm9pZCBhY3RpdmF0ZV93 aXRoX3dvcmtzcGFjZSAodWludDMyIGN1cnJlbnRfdGltZSwgTWV0YS5Xb3Jrc3BhY2Ugd29ya3Nw YWNlKTsKLS0JCXB1YmxpYyBib29sIGFsbG93c19tb3ZlICgpOwotLQkJcHVibGljIGJvb2wgYWxs b3dzX3Jlc2l6ZSAoKTsKLS0JCXB1YmxpYyB2b2lkIGJlZ2luX2dyYWJfb3AgKE1ldGEuR3JhYk9w IG9wLCBib29sIGZyYW1lX2FjdGlvbiwgdWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgYm9v bCBjYW5fY2xvc2UgKCk7Ci0tCQlwdWJsaWMgYm9vbCBjYW5fbWF4aW1pemUgKCk7Ci0tCQlwdWJs aWMgYm9vbCBjYW5fbWluaW1pemUgKCk7Ci0tCQlwdWJsaWMgYm9vbCBjYW5fc2hhZGUgKCk7Ci0t CQlwdWJsaWMgdm9pZCBjaGFuZ2Vfd29ya3NwYWNlIChNZXRhLldvcmtzcGFjZSB3b3Jrc3BhY2Up OwotLQkJcHVibGljIHZvaWQgY2hhbmdlX3dvcmtzcGFjZV9ieV9pbmRleCAoaW50IHNwYWNlX2lu ZGV4LCBib29sIGFwcGVuZCk7Ci0tCQlwdWJsaWMgdm9pZCBjaGVja19hbGl2ZSAodWludDMyIHRp bWVzdGFtcCk7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgY2xpZW50X3JlY3RfdG9fZnJhbWVf cmVjdCAoTWV0YS5SZWN0YW5nbGUgY2xpZW50X3JlY3QpOwotLQkJcHVibGljIHZvaWQgY29tcHV0 ZV9ncm91cCAoKTsKLS0JCXB1YmxpYyB2b2lkIEBkZWxldGUgKHVpbnQzMiB0aW1lc3RhbXApOwot LQkJcHVibGljIHVub3duZWQgTWV0YS5XaW5kb3cgZmluZF9yb290X2FuY2VzdG9yICgpOwotLQkJ cHVibGljIHZvaWQgZm9jdXMgKHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIHZvaWQgZm9y ZWFjaF9hbmNlc3RvciAoTWV0YS5XaW5kb3dGb3JlYWNoRnVuYyBmdW5jKTsKLS0JCXB1YmxpYyB2 b2lkIGZvcmVhY2hfdHJhbnNpZW50IChNZXRhLldpbmRvd0ZvcmVhY2hGdW5jIGZ1bmMpOwotLQkJ cHVibGljIE1ldGEuUmVjdGFuZ2xlIGZyYW1lX3JlY3RfdG9fY2xpZW50X3JlY3QgKE1ldGEuUmVj dGFuZ2xlIGZyYW1lX3JlY3QpOwotLQkJW0NDb2RlIChhcnJheV9sZW5ndGhfcG9zID0gMC4xLCBh cnJheV9sZW5ndGhfdHlwZSA9ICJnc2l6ZSIpXQotLQkJcHVibGljIGludFtdIGdldF9hbGxfbW9u aXRvcnMgKCk7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgZ2V0X2J1ZmZlcl9yZWN0ICgpOwot LQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9jbGllbnRfbWFjaGluZSAoKTsKLS0JCXB1Ymxp YyB1bm93bmVkIEdMaWIuT2JqZWN0IGdldF9jb21wb3NpdG9yX3ByaXZhdGUgKCk7Ci0tCQlwdWJs aWMgdW5vd25lZCBzdHJpbmcgZ2V0X2Rlc2NyaXB0aW9uICgpOwotLQkJcHVibGljIHVub3duZWQg TWV0YS5EaXNwbGF5IGdldF9kaXNwbGF5ICgpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5GcmFt ZSBnZXRfZnJhbWUgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDYWlyby5SZWdpb24/IGdldF9mcmFt ZV9ib3VuZHMgKCk7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgZ2V0X2ZyYW1lX3JlY3QgKCk7 Ci0tCQlwdWJsaWMgTWV0YS5GcmFtZVR5cGUgZ2V0X2ZyYW1lX3R5cGUgKCk7Ci0tCQlwdWJsaWMg dW5vd25lZCBNZXRhLkdyb3VwIGdldF9ncm91cCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmlu ZyBnZXRfZ3RrX2FwcF9tZW51X29iamVjdF9wYXRoICgpOwotLQkJcHVibGljIHVub3duZWQgc3Ry aW5nIGdldF9ndGtfYXBwbGljYXRpb25faWQgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcg Z2V0X2d0a19hcHBsaWNhdGlvbl9vYmplY3RfcGF0aCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0 cmluZyBnZXRfZ3RrX21lbnViYXJfb2JqZWN0X3BhdGggKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBz dHJpbmcgZ2V0X2d0a190aGVtZV92YXJpYW50ICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5n IGdldF9ndGtfdW5pcXVlX2J1c19uYW1lICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdl dF9ndGtfd2luZG93X29iamVjdF9wYXRoICgpOwotLQkJcHVibGljIGJvb2wgZ2V0X2ljb25fZ2Vv bWV0cnkgKG91dCBNZXRhLlJlY3RhbmdsZSByZWN0KTsKLS0JCXB1YmxpYyBNZXRhLlN0YWNrTGF5 ZXIgZ2V0X2xheWVyICgpOwotLQkJcHVibGljIE1ldGEuTWF4aW1pemVGbGFncyBnZXRfbWF4aW1p emVkICgpOwotLQkJcHVibGljIGludCBnZXRfbW9uaXRvciAoKTsKLS0JCXB1YmxpYyB1bm93bmVk IHN0cmluZyBnZXRfbXV0dGVyX2hpbnRzICgpOwotLQkJcHVibGljIGludCBnZXRfcGlkICgpOwot LQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9yb2xlICgpOwotLQkJcHVibGljIHVub3duZWQg TWV0YS5TY3JlZW4gZ2V0X3NjcmVlbiAoKTsKLS0JCXB1YmxpYyB1aW50IGdldF9zdGFibGVfc2Vx dWVuY2UgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X3N0YXJ0dXBfaWQgKCk7Ci0t CQlwdWJsaWMgdW5vd25lZCBNZXRhLldpbmRvdz8gZ2V0X3RpbGVfbWF0Y2ggKCk7Ci0tCQlwdWJs aWMgdW5vd25lZCBzdHJpbmcgZ2V0X3RpdGxlICgpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5X aW5kb3cgZ2V0X3RyYW5zaWVudF9mb3IgKCk7Ci0tCQlwdWJsaWMgdWludDMyIGdldF91c2VyX3Rp bWUgKCk7Ci0tCQlwdWJsaWMgTWV0YS5XaW5kb3dUeXBlIGdldF93aW5kb3dfdHlwZSAoKTsKLS0J CXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfd21fY2xhc3MgKCk7Ci0tCQlwdWJsaWMgdW5vd25l ZCBzdHJpbmcgZ2V0X3dtX2NsYXNzX2luc3RhbmNlICgpOwotLQkJcHVibGljIE1ldGEuUmVjdGFu Z2xlIGdldF93b3JrX2FyZWFfYWxsX21vbml0b3JzICgpOwotLQkJcHVibGljIE1ldGEuUmVjdGFu Z2xlIGdldF93b3JrX2FyZWFfY3VycmVudF9tb25pdG9yICgpOwotLQkJcHVibGljIE1ldGEuUmVj dGFuZ2xlIGdldF93b3JrX2FyZWFfZm9yX21vbml0b3IgKGludCB3aGljaF9tb25pdG9yKTsKLS0J CXB1YmxpYyB1bm93bmVkIE1ldGEuV29ya3NwYWNlIGdldF93b3Jrc3BhY2UgKCk7Ci0tCQlwdWJs aWMgWC5XaW5kb3cgZ2V0X3h3aW5kb3cgKCk7Ci0tCQlwdWJsaWMgdm9pZCBncm91cF9sZWFkZXJf Y2hhbmdlZCAoKTsKLS0JCXB1YmxpYyBib29sIGhhc19mb2N1cyAoKTsKLS0JCXB1YmxpYyBib29s IGlzX2Fib3ZlICgpOwotLQkJcHVibGljIGJvb2wgaXNfYWx3YXlzX29uX2FsbF93b3Jrc3BhY2Vz ICgpOwotLQkJcHVibGljIGJvb2wgaXNfYW5jZXN0b3Jfb2ZfdHJhbnNpZW50IChNZXRhLldpbmRv dyB0cmFuc2llbnQpOwotLQkJcHVibGljIGJvb2wgaXNfYXR0YWNoZWRfZGlhbG9nICgpOwotLQkJ cHVibGljIGJvb2wgaXNfZnVsbHNjcmVlbiAoKTsKLS0JCXB1YmxpYyBib29sIGlzX2hpZGRlbiAo KTsKLS0JCXB1YmxpYyBib29sIGlzX21vbml0b3Jfc2l6ZWQgKCk7Ci0tCQlwdWJsaWMgYm9vbCBp c19vbl9hbGxfd29ya3NwYWNlcyAoKTsKLS0JCXB1YmxpYyBib29sIGlzX29uX3ByaW1hcnlfbW9u aXRvciAoKTsKLS0JCXB1YmxpYyBib29sIGlzX292ZXJyaWRlX3JlZGlyZWN0ICgpOwotLQkJcHVi bGljIGJvb2wgaXNfcmVtb3RlICgpOwotLQkJcHVibGljIGJvb2wgaXNfc2NyZWVuX3NpemVkICgp OwotLQkJcHVibGljIGJvb2wgaXNfc2hhZGVkICgpOwotLQkJcHVibGljIGJvb2wgaXNfc2tpcF90 YXNrYmFyICgpOwotLQkJcHVibGljIHZvaWQga2lsbCAoKTsKLS0JCXB1YmxpYyBib29sIGxvY2F0 ZWRfb25fd29ya3NwYWNlIChNZXRhLldvcmtzcGFjZSB3b3Jrc3BhY2UpOwotLQkJcHVibGljIHZv aWQgbG93ZXIgKCk7Ci0tCQlwdWJsaWMgdm9pZCBtYWtlX2Fib3ZlICgpOwotLQkJcHVibGljIHZv aWQgbWFrZV9mdWxsc2NyZWVuICgpOwotLQkJcHVibGljIHZvaWQgbWF4aW1pemUgKE1ldGEuTWF4 aW1pemVGbGFncyBkaXJlY3Rpb25zKTsKLS0JCXB1YmxpYyB2b2lkIG1pbmltaXplICgpOwotLQkJ cHVibGljIHZvaWQgbW92ZV9mcmFtZSAoYm9vbCB1c2VyX29wLCBpbnQgcm9vdF94X253LCBpbnQg cm9vdF95X253KTsKLS0JCXB1YmxpYyB2b2lkIG1vdmVfcmVzaXplX2ZyYW1lIChib29sIHVzZXJf b3AsIGludCByb290X3hfbncsIGludCByb290X3lfbncsIGludCB3LCBpbnQgaCk7Ci0tCQlwdWJs aWMgdm9pZCBtb3ZlX3RvX21vbml0b3IgKGludCBtb25pdG9yKTsKLS0JCXB1YmxpYyB2b2lkIHJh aXNlICgpOwotLQkJcHVibGljIGJvb2wgcmVxdWVzdGVkX2J5cGFzc19jb21wb3NpdG9yICgpOwot LQkJcHVibGljIGJvb2wgcmVxdWVzdGVkX2RvbnRfYnlwYXNzX2NvbXBvc2l0b3IgKCk7Ci0tCQlw dWJsaWMgdm9pZCBzZXRfY29tcG9zaXRvcl9wcml2YXRlIChHTGliLk9iamVjdCBwcml2KTsKLS0J CXB1YmxpYyB2b2lkIHNldF9kZW1hbmRzX2F0dGVudGlvbiAoKTsKLS0JCXB1YmxpYyB2b2lkIHNl dF9pY29uX2dlb21ldHJ5IChNZXRhLlJlY3RhbmdsZT8gcmVjdCk7Ci0tCQlwdWJsaWMgdm9pZCBz aGFkZSAodWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgdm9pZCBzaG92ZV90aXRsZWJhcl9v bnNjcmVlbiAoKTsKLS0JCXB1YmxpYyBib29sIHNob3dpbmdfb25faXRzX3dvcmtzcGFjZSAoKTsK LS0JCXB1YmxpYyB2b2lkIHNodXRkb3duX2dyb3VwICgpOwotLQkJcHVibGljIHZvaWQgc3RpY2sg KCk7Ci0tCQlwdWJsaWMgYm9vbCB0aXRsZWJhcl9pc19vbnNjcmVlbiAoKTsKLS0JCXB1YmxpYyB2 b2lkIHVubWFrZV9hYm92ZSAoKTsKLS0JCXB1YmxpYyB2b2lkIHVubWFrZV9mdWxsc2NyZWVuICgp OwotLQkJcHVibGljIHZvaWQgdW5tYXhpbWl6ZSAoTWV0YS5NYXhpbWl6ZUZsYWdzIGRpcmVjdGlv bnMpOwotLQkJcHVibGljIHZvaWQgdW5taW5pbWl6ZSAoKTsKLS0JCXB1YmxpYyB2b2lkIHVuc2V0 X2RlbWFuZHNfYXR0ZW50aW9uICgpOwotLQkJcHVibGljIHZvaWQgdW5zaGFkZSAodWludDMyIHRp bWVzdGFtcCk7Ci0tCQlwdWJsaWMgdm9pZCB1bnN0aWNrICgpOwotLQkJW05vQWNjZXNzb3JNZXRo b2RdCi0tCQlwdWJsaWMgYm9vbCBhYm92ZSB7IGdldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2Rd Ci0tCQlwdWJsaWMgYm9vbCBhcHBlYXJzX2ZvY3VzZWQgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29y TWV0aG9kXQotLQkJcHVibGljIGJvb2wgZGVjb3JhdGVkIHsgZ2V0OyB9Ci0tCQlbTm9BY2Nlc3Nv ck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIGRlbWFuZHNfYXR0ZW50aW9uIHsgZ2V0OyB9Ci0tCQlb Tm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIGZ1bGxzY3JlZW4geyBnZXQ7IH0KLS0J CXB1YmxpYyBzdHJpbmcgZ3RrX2FwcF9tZW51X29iamVjdF9wYXRoIHsgZ2V0OyB9Ci0tCQlwdWJs aWMgc3RyaW5nIGd0a19hcHBsaWNhdGlvbl9pZCB7IGdldDsgfQotLQkJcHVibGljIHN0cmluZyBn dGtfYXBwbGljYXRpb25fb2JqZWN0X3BhdGggeyBnZXQ7IH0KLS0JCXB1YmxpYyBzdHJpbmcgZ3Rr X21lbnViYXJfb2JqZWN0X3BhdGggeyBnZXQ7IH0KLS0JCXB1YmxpYyBzdHJpbmcgZ3RrX3VuaXF1 ZV9idXNfbmFtZSB7IGdldDsgfQotLQkJcHVibGljIHN0cmluZyBndGtfd2luZG93X29iamVjdF9w YXRoIHsgZ2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBDYWlyby5TdXJm YWNlIGljb24geyBvd25lZCBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGlj IGJvb2wgbWF4aW1pemVkX2hvcml6b250YWxseSB7IGdldDsgfQotLQkJW05vQWNjZXNzb3JNZXRo b2RdCi0tCQlwdWJsaWMgYm9vbCBtYXhpbWl6ZWRfdmVydGljYWxseSB7IGdldDsgfQotLQkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgQ2Fpcm8uU3VyZmFjZSBtaW5pX2ljb24geyBvd25l ZCBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgbWluaW1pemVk IHsgZ2V0OyB9Ci0tCQlwdWJsaWMgc3RyaW5nIG11dHRlcl9oaW50cyB7IGdldDsgfQotLQkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCBvbl9hbGxfd29ya3NwYWNlcyB7IGdldDsg fQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCByZXNpemVhYmxlIHsgZ2V0 OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIHNraXBfdGFza2JhciB7 IGdldDsgfQotLQkJcHVibGljIHN0cmluZyB0aXRsZSB7IGdldDsgfQotLQkJW05vQWNjZXNzb3JN ZXRob2RdCi0tCQlwdWJsaWMgYm9vbCB1cmdlbnQgeyBnZXQ7IH0KLS0JCXB1YmxpYyB1aW50IHVz ZXJfdGltZSB7IGdldDsgfQotLQkJcHVibGljIE1ldGEuV2luZG93VHlwZSB3aW5kb3dfdHlwZSB7 IGdldDsgfQotLQkJcHVibGljIHN0cmluZyB3bV9jbGFzcyB7IGdldDsgfQotLQkJW0NDb2RlIChj bmFtZSA9ICJmb2N1cyIpXQotLQkJcHVibGljIHNpZ25hbCB2b2lkIGZvY3VzZWQgKCk7Ci0tCQlw dWJsaWMgc2lnbmFsIHZvaWQgcG9zaXRpb25fY2hhbmdlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwg dm9pZCByYWlzZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgc2l6ZV9jaGFuZ2VkICgpOwot LQkJcHVibGljIHNpZ25hbCB2b2lkIHVubWFuYWdlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9p ZCB3b3Jrc3BhY2VfY2hhbmdlZCAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oIiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd19hY3Rv cl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgV2luZG93QWN0b3IgOiBDbHV0dGVyLkFj dG9yLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWlu ZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rp b24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgV2luZG93QWN0b3IgKCk7Ci0tCQlwdWJsaWMgdW5v d25lZCBNZXRhLldpbmRvdyBnZXRfbWV0YV93aW5kb3cgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBD bHV0dGVyLkFjdG9yIGdldF90ZXh0dXJlICgpOwotLQkJcHVibGljIFguV2luZG93IGdldF94X3dp bmRvdyAoKTsKLS0JCXB1YmxpYyBib29sIGlzX2Rlc3Ryb3llZCAoKTsKLS0JCVtOb0FjY2Vzc29y TWV0aG9kXQotLQkJcHVibGljIHN0cmluZyBzaGFkb3dfY2xhc3MgeyBvd25lZCBnZXQ7IHNldDsg fQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgTWV0YS5TaGFkb3dNb2RlIHNoYWRv d19tb2RlIHsgZ2V0OyBzZXQ7IH0KLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBmaXJzdF9mcmFtZSAo KTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhX3dpbmRvd19z aGFwZS5oIiwgcmVmX2Z1bmN0aW9uID0gIm1ldGFfd2luZG93X3NoYXBlX3JlZiIsIHR5cGVfaWQg PSAibWV0YV93aW5kb3dfc2hhcGVfZ2V0X3R5cGUgKCkiLCB1bnJlZl9mdW5jdGlvbiA9ICJtZXRh X3dpbmRvd19zaGFwZV91bnJlZiIpXQotLQlbQ29tcGFjdF0KLS0JcHVibGljIGNsYXNzIFdpbmRv d1NoYXBlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0J CXB1YmxpYyBXaW5kb3dTaGFwZSAoQ2Fpcm8uUmVnaW9uIHJlZ2lvbik7Ci0tCQlwdWJsaWMgYm9v bCBlcXVhbCAoTWV0YS5XaW5kb3dTaGFwZSBzaGFwZV9iKTsKLS0JCXB1YmxpYyB2b2lkIGdldF9i b3JkZXJzIChpbnQgYm9yZGVyX3RvcCwgaW50IGJvcmRlcl9yaWdodCwgaW50IGJvcmRlcl9ib3R0 b20sIGludCBib3JkZXJfbGVmdCk7Ci0tCQlwdWJsaWMgdWludCBoYXNoICgpOwotLQkJcHVibGlj IE1ldGEuV2luZG93U2hhcGUgQHJlZiAoKTsKLS0JCXB1YmxpYyBDYWlyby5SZWdpb24gdG9fcmVn aW9uIChpbnQgY2VudGVyX3dpZHRoLCBpbnQgY2VudGVyX2hlaWdodCk7Ci0tCQlwdWJsaWMgdm9p ZCB1bnJlZiAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS93b3Jr c3BhY2UuaCIsIHR5cGVfaWQgPSAibWV0YV93b3Jrc3BhY2VfZ2V0X3R5cGUgKCkiKV0KLS0JcHVi bGljIGNsYXNzIFdvcmtzcGFjZSA6IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBXb3Jrc3BhY2UgKCk7Ci0tCQlw dWJsaWMgdm9pZCBhY3RpdmF0ZSAodWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgdm9pZCBh Y3RpdmF0ZV93aXRoX2ZvY3VzIChNZXRhLldpbmRvdyBmb2N1c190aGlzLCB1aW50MzIgdGltZXN0 YW1wKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV29ya3NwYWNlIGdldF9uZWlnaGJvciAoTWV0 YS5Nb3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuU2Ny ZWVuIGdldF9zY3JlZW4gKCk7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgZ2V0X3dvcmtfYXJl YV9hbGxfbW9uaXRvcnMgKCk7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgZ2V0X3dvcmtfYXJl YV9mb3JfbW9uaXRvciAoaW50IHdoaWNoX21vbml0b3IpOwotLQkJcHVibGljIGludCBpbmRleCAo KTsKLS0JCXB1YmxpYyBHTGliLkxpc3Q8d2VhayBNZXRhLldpbmRvdz4gbGlzdF93aW5kb3dzICgp OwotLQkJcHVibGljIHZvaWQgc2V0X2J1aWx0aW5fc3RydXRzIChHTGliLlNMaXN0PE1ldGEuU3Ry dXQ+IHN0cnV0cyk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyB1aW50IG5fd2lu ZG93cyB7IGdldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgdWludCB3b3Jr c3BhY2VfaW5kZXggeyBnZXQ7IH0KLS0JCXB1YmxpYyBzaWduYWwgdm9pZCB3aW5kb3dfYWRkZWQg KE1ldGEuV2luZG93IG9iamVjdCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgd2luZG93X3JlbW92 ZWQgKE1ldGEuV2luZG93IG9iamVjdCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gIm1ldGEvY29tbW9uLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIHN0cnVj dCBCdXR0b25MYXlvdXQgewotLQkJW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSwgYXJyYXlf bnVsbF90ZXJtaW5hdGVkID0gdHJ1ZSldCi0tCQlwdWJsaWMgd2VhayBNZXRhLkJ1dHRvbkZ1bmN0 aW9uW10gbGVmdF9idXR0b25zOwotLQkJW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSwgYXJy YXlfbnVsbF90ZXJtaW5hdGVkID0gdHJ1ZSldCi0tCQlwdWJsaWMgd2VhayBib29sW10gbGVmdF9i dXR0b25zX2hhc19zcGFjZXI7Ci0tCQlbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlLCBhcnJh eV9udWxsX3Rlcm1pbmF0ZWQgPSB0cnVlKV0KLS0JCXB1YmxpYyB3ZWFrIE1ldGEuQnV0dG9uRnVu Y3Rpb25bXSByaWdodF9idXR0b25zOwotLQkJW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSwg YXJyYXlfbnVsbF90ZXJtaW5hdGVkID0gdHJ1ZSldCi0tCQlwdWJsaWMgd2VhayBib29sW10gcmln aHRfYnV0dG9uc19oYXNfc3BhY2VyOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL2JveGVzLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIHN0cnVjdCBF ZGdlIHsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSByZWN0OwotLQkJcHVibGljIE1ldGEuU2lk ZSBzaWRlX3R5cGU7Ci0tCQlwdWJsaWMgTWV0YS5FZGdlVHlwZSBlZGdlX3R5cGU7Ci0tCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBoYXNfdHlwZV9pZCA9 IGZhbHNlKV0KLS0JcHVibGljIHN0cnVjdCBGcmFtZUJvcmRlcnMgewotLQkJcHVibGljIEd0ay5C b3JkZXIgdmlzaWJsZTsKLS0JCXB1YmxpYyBHdGsuQm9yZGVyIGludmlzaWJsZTsKLS0JCXB1Ymxp YyBHdGsuQm9yZGVyIHRvdGFsOwotLQkJcHVibGljIHZvaWQgY2xlYXIgKCk7Ci0tCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1wbHVnaW4uaCIsIGhhc190eXBlX2lk ID0gZmFsc2UpXQotLQlwdWJsaWMgc3RydWN0IFBsdWdpbkluZm8gewotLQkJcHVibGljIHdlYWsg c3RyaW5nIG5hbWU7Ci0tCQlwdWJsaWMgd2VhayBzdHJpbmcgdmVyc2lvbjsKLS0JCXB1YmxpYyB3 ZWFrIHN0cmluZyBhdXRob3I7Ci0tCQlwdWJsaWMgd2VhayBzdHJpbmcgbGljZW5zZTsKLS0JCXB1 YmxpYyB3ZWFrIHN0cmluZyBkZXNjcmlwdGlvbjsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAibWV0YS9tZXRhLXBsdWdpbi5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1 YmxpYyBzdHJ1Y3QgUGx1Z2luVmVyc2lvbiB7Ci0tCQlwdWJsaWMgdWludCB2ZXJzaW9uX21ham9y OwotLQkJcHVibGljIHVpbnQgdmVyc2lvbl9taW5vcjsKLS0JCXB1YmxpYyB1aW50IHZlcnNpb25f bWljcm87Ci0tCQlwdWJsaWMgdWludCB2ZXJzaW9uX2FwaTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9ib3hlcy5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1 YmxpYyBzdHJ1Y3QgUmVjdGFuZ2xlIHsKLS0JCXB1YmxpYyBpbnQgeDsKLS0JCXB1YmxpYyBpbnQg eTsKLS0JCXB1YmxpYyBpbnQgd2lkdGg7Ci0tCQlwdWJsaWMgaW50IGhlaWdodDsKLS0JCXB1Ymxp YyBpbnQgYXJlYSAoKTsKLS0JCXB1YmxpYyBib29sIGNvbnRhaW5zX3JlY3QgKE1ldGEuUmVjdGFu Z2xlIGlubmVyX3JlY3QpOwotLQkJcHVibGljIGJvb2wgY291bGRfZml0X3JlY3QgKE1ldGEuUmVj dGFuZ2xlIGlubmVyX3JlY3QpOwotLQkJcHVibGljIGJvb2wgZXF1YWwgKE1ldGEuUmVjdGFuZ2xl IHNyYzIpOwotLQkJcHVibGljIGJvb2wgaG9yaXpfb3ZlcmxhcCAoTWV0YS5SZWN0YW5nbGUgcmVj dDIpOwotLQkJcHVibGljIGJvb2wgaW50ZXJzZWN0IChNZXRhLlJlY3RhbmdsZSBzcmMyLCBvdXQg TWV0YS5SZWN0YW5nbGUgZGVzdCk7Ci0tCQlwdWJsaWMgYm9vbCBvdmVybGFwIChNZXRhLlJlY3Rh bmdsZSByZWN0Mik7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgdW5pb24gKE1ldGEuUmVjdGFu Z2xlIHJlY3QyKTsKLS0JCXB1YmxpYyBib29sIHZlcnRfb3ZlcmxhcCAoTWV0YS5SZWN0YW5nbGUg cmVjdDIpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtc2hh ZG93LWZhY3RvcnkuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMgc3RydWN0IFNo YWRvd1BhcmFtcyB7Ci0tCQlwdWJsaWMgaW50IHJhZGl1czsKLS0JCXB1YmxpYyBpbnQgdG9wX2Zh ZGU7Ci0tCQlwdWJsaWMgaW50IHhfb2Zmc2V0OwotLQkJcHVibGljIGludCB5X29mZnNldDsKLS0J CXB1YmxpYyB1aW50OCBvcGFjaXR5OwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL2JveGVzLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIHN0cnVjdCBT dHJ1dCB7Ci0tCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgcmVjdDsKLS0JCXB1YmxpYyBNZXRhLlNp ZGUgc2lkZTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVy LmgiLCBjcHJlZml4ID0gIk1FVEFfQkFSUklFUl9ESVJFQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRh X2JhcnJpZXJfZGlyZWN0aW9uX2dldF90eXBlICgpIildCi0tCVtGbGFnc10KLS0JcHVibGljIGVu dW0gQmFycmllckRpcmVjdGlvbiB7Ci0tCQlQT1NJVElWRV9YLAotLQkJUE9TSVRJVkVfWSwKLS0J CU5FR0FUSVZFX1gsCi0tCQlORUdBVElWRV9ZCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfQlVUVE9OX0ZVTkNUSU9OXyIs IHR5cGVfaWQgPSAibWV0YV9idXR0b25fZnVuY3Rpb25fZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGlj IGVudW0gQnV0dG9uRnVuY3Rpb24gewotLQkJTUVOVSwKLS0JCU1JTklNSVpFLAotLQkJTUFYSU1J WkUsCi0tCQlDTE9TRSwKLS0JCVNIQURFLAotLQkJQUJPVkUsCi0tCQlTVElDSywKLS0JCVVOU0hB REUsCi0tCQlVTkFCT1ZFLAotLQkJVU5TVElDSywKLS0JCUFQUE1FTlUsCi0tCQlMQVNUCi0tCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci5oIiwgY3ByZWZp eCA9ICJNRVRBX0NPTVBfRUZGRUNUXyIsIHR5cGVfaWQgPSAibWV0YV9jb21wX2VmZmVjdF9nZXRf dHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBDb21wRWZmZWN0IHsKLS0JCUNSRUFURSwKLS0JCVVO TUlOSU1JWkUsCi0tCQlERVNUUk9ZLAotLQkJTUlOSU1JWkUsCi0tCQlOT05FCi0tCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFf Q1VSU09SXyIsIHR5cGVfaWQgPSAibWV0YV9jdXJzb3JfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGlj IGVudW0gQ3Vyc29yIHsKLS0JCU5PTkUsCi0tCQlERUZBVUxULAotLQkJTk9SVEhfUkVTSVpFLAot LQkJU09VVEhfUkVTSVpFLAotLQkJV0VTVF9SRVNJWkUsCi0tCQlFQVNUX1JFU0laRSwKLS0JCVNF X1JFU0laRSwKLS0JCVNXX1JFU0laRSwKLS0JCU5FX1JFU0laRSwKLS0JCU5XX1JFU0laRSwKLS0J CU1PVkVfT1JfUkVTSVpFX1dJTkRPVywKLS0JCUJVU1ksCi0tCQlETkRfSU5fRFJBRywKLS0JCURO RF9NT1ZFLAotLQkJRE5EX0NPUFksCi0tCQlETkRfVU5TVVBQT1JURURfVEFSR0VULAotLQkJUE9J TlRJTkdfSEFORCwKLS0JCUNST1NTSEFJUiwKLS0JCUlCRUFNLAotLQkJTEFTVAotLQl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNwcmVmaXggPSAiTUVUQV9E RUJVR18iLCB0eXBlX2lkID0gIm1ldGFfZGVidWdfdG9waWNfZ2V0X3R5cGUgKCkiKV0KLS0JW0Zs YWdzXQotLQlwdWJsaWMgZW51bSBEZWJ1Z1RvcGljIHsKLS0JCVZFUkJPU0UsCi0tCQlGT0NVUywK LS0JCVdPUktBUkVBLAotLQkJU1RBQ0ssCi0tCQlUSEVNRVMsCi0tCQlTTSwKLS0JCUVWRU5UUywK LS0JCVdJTkRPV19TVEFURSwKLS0JCVdJTkRPV19PUFMsCi0tCQlHRU9NRVRSWSwKLS0JCVBMQUNF TUVOVCwKLS0JCVBJTkcsCi0tCQlYSU5FUkFNQSwKLS0JCUtFWUJJTkRJTkdTLAotLQkJU1lOQywK LS0JCUVSUk9SUywKLS0JCVNUQVJUVVAsCi0tCQlQUkVGUywKLS0JCUdST1VQUywKLS0JCVJFU0la SU5HLAotLQkJU0hBUEVTLAotLQkJQ09NUE9TSVRPUiwKLS0JCUVER0VfUkVTSVNUQU5DRSwKLS0J CURCVVMKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIs IGNwcmVmaXggPSAiTUVUQV9ESVJFQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX2RpcmVjdGlvbl9n ZXRfdHlwZSAoKSIpXQotLQlbRmxhZ3NdCi0tCXB1YmxpYyBlbnVtIERpcmVjdGlvbiB7Ci0tCQlM RUZULAotLQkJUklHSFQsCi0tCQlUT1AsCi0tCQlCT1RUT00sCi0tCQlVUCwKLS0JCURPV04sCi0t CQlIT1JJWk9OVEFMLAotLQkJVkVSVElDQUwKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9ib3hlcy5oIiwgY3ByZWZpeCA9ICJNRVRBX0VER0VfIiwgdHlwZV9pZCA9ICJt ZXRhX2VkZ2VfdHlwZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBFZGdlVHlwZSB7Ci0t CQlXSU5ET1csCi0tCQlNT05JVE9SLAotLQkJU0NSRUVOCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0VYSVRfIiwgdHlwZV9p ZCA9ICJtZXRhX2V4aXRfY29kZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBFeGl0Q29k ZSB7Ci0tCQlTVUNDRVNTLAotLQkJRVJST1IKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9jb21tb24uaCIsIGNwcmVmaXggPSAiTUVUQV9GUkFNRV8iLCB0eXBlX2lkID0g Im1ldGFfZnJhbWVfZmxhZ3NfZ2V0X3R5cGUgKCkiKV0KLS0JW0ZsYWdzXQotLQlwdWJsaWMgZW51 bSBGcmFtZUZsYWdzIHsKLS0JCUFMTE9XU19ERUxFVEUsCi0tCQlBTExPV1NfTUVOVSwKLS0JCUFM TE9XU19BUFBNRU5VLAotLQkJQUxMT1dTX01JTklNSVpFLAotLQkJQUxMT1dTX01BWElNSVpFLAot LQkJQUxMT1dTX1ZFUlRJQ0FMX1JFU0laRSwKLS0JCUFMTE9XU19IT1JJWk9OVEFMX1JFU0laRSwK LS0JCUhBU19GT0NVUywKLS0JCVNIQURFRCwKLS0JCVNUVUNLLAotLQkJTUFYSU1JWkVELAotLQkJ QUxMT1dTX1NIQURFLAotLQkJQUxMT1dTX01PVkUsCi0tCQlGVUxMU0NSRUVOLAotLQkJSVNfRkxB U0hJTkcsCi0tCQlBQk9WRSwKLS0JCVRJTEVEX0xFRlQsCi0tCQlUSUxFRF9SSUdIVAotLQl9Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY3ByZWZpeCA9ICJN RVRBX0ZSQU1FX1RZUEVfIiwgdHlwZV9pZCA9ICJtZXRhX2ZyYW1lX3R5cGVfZ2V0X3R5cGUgKCki KV0KLS0JcHVibGljIGVudW0gRnJhbWVUeXBlIHsKLS0JCU5PUk1BTCwKLS0JCURJQUxPRywKLS0J CU1PREFMX0RJQUxPRywKLS0JCVVUSUxJVFksCi0tCQlNRU5VLAotLQkJQk9SREVSLAotLQkJQVRU QUNIRUQsCi0tCQlMQVNUOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFp bi5oIildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgc3RyaW5nIHRvX3N0cmluZyAoTWV0YS5G cmFtZVR5cGUgdHlwZSk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEv Y29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfR1JBQl9PUF8iLCB0eXBlX2lkID0gIm1ldGFfZ3Jh Yl9vcF9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBHcmFiT3AgewotLQkJTk9ORSwKLS0J CUNPTVBPU0lUT1IsCi0tCQlXQVlMQU5EX1BPUFVQLAotLQkJV0lORE9XX0JBU0UsCi0tCQlGUkFN RV9CVVRUT04sCi0tCQlNT1ZJTkcsCi0tCQlSRVNJWklOR19OVywKLS0JCVJFU0laSU5HX04sCi0t CQlSRVNJWklOR19ORSwKLS0JCVJFU0laSU5HX0UsCi0tCQlSRVNJWklOR19TVywKLS0JCVJFU0la SU5HX1MsCi0tCQlSRVNJWklOR19TRSwKLS0JCVJFU0laSU5HX1csCi0tCQlLRVlCT0FSRF9NT1ZJ TkcsCi0tCQlLRVlCT0FSRF9SRVNJWklOR19VTktOT1dOLAotLQkJS0VZQk9BUkRfUkVTSVpJTkdf TlcsCi0tCQlLRVlCT0FSRF9SRVNJWklOR19OLAotLQkJS0VZQk9BUkRfUkVTSVpJTkdfTkUsCi0t CQlLRVlCT0FSRF9SRVNJWklOR19FLAotLQkJS0VZQk9BUkRfUkVTSVpJTkdfU1csCi0tCQlLRVlC T0FSRF9SRVNJWklOR19TLAotLQkJS0VZQk9BUkRfUkVTSVpJTkdfU0UsCi0tCQlLRVlCT0FSRF9S RVNJWklOR19XCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMu aCIsIGNwcmVmaXggPSAiTUVUQV9LRVlCSU5ESU5HX0FDVElPTl8iLCB0eXBlX2lkID0gIm1ldGFf a2V5X2JpbmRpbmdfYWN0aW9uX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIEtleUJpbmRp bmdBY3Rpb24gewotLQkJTk9ORSwKLS0JCVdPUktTUEFDRV8xLAotLQkJV09SS1NQQUNFXzIsCi0t CQlXT1JLU1BBQ0VfMywKLS0JCVdPUktTUEFDRV80LAotLQkJV09SS1NQQUNFXzUsCi0tCQlXT1JL U1BBQ0VfNiwKLS0JCVdPUktTUEFDRV83LAotLQkJV09SS1NQQUNFXzgsCi0tCQlXT1JLU1BBQ0Vf OSwKLS0JCVdPUktTUEFDRV8xMCwKLS0JCVdPUktTUEFDRV8xMSwKLS0JCVdPUktTUEFDRV8xMiwK LS0JCVdPUktTUEFDRV9MRUZULAotLQkJV09SS1NQQUNFX1JJR0hULAotLQkJV09SS1NQQUNFX1VQ LAotLQkJV09SS1NQQUNFX0RPV04sCi0tCQlXT1JLU1BBQ0VfTEFTVCwKLS0JCVNXSVRDSF9BUFBM SUNBVElPTlMsCi0tCQlTV0lUQ0hfQVBQTElDQVRJT05TX0JBQ0tXQVJELAotLQkJU1dJVENIX0dS T1VQLAotLQkJU1dJVENIX0dST1VQX0JBQ0tXQVJELAotLQkJU1dJVENIX1dJTkRPV1MsCi0tCQlT V0lUQ0hfV0lORE9XU19CQUNLV0FSRCwKLS0JCVNXSVRDSF9QQU5FTFMsCi0tCQlTV0lUQ0hfUEFO RUxTX0JBQ0tXQVJELAotLQkJQ1lDTEVfR1JPVVAsCi0tCQlDWUNMRV9HUk9VUF9CQUNLV0FSRCwK LS0JCUNZQ0xFX1dJTkRPV1MsCi0tCQlDWUNMRV9XSU5ET1dTX0JBQ0tXQVJELAotLQkJQ1lDTEVf UEFORUxTLAotLQkJQ1lDTEVfUEFORUxTX0JBQ0tXQVJELAotLQkJU0hPV19ERVNLVE9QLAotLQkJ UEFORUxfTUFJTl9NRU5VLAotLQkJUEFORUxfUlVOX0RJQUxPRywKLS0JCVRPR0dMRV9SRUNPUkRJ TkcsCi0tCQlTRVRfU1BFV19NQVJLLAotLQkJQUNUSVZBVEVfV0lORE9XX01FTlUsCi0tCQlUT0dH TEVfRlVMTFNDUkVFTiwKLS0JCVRPR0dMRV9NQVhJTUlaRUQsCi0tCQlUT0dHTEVfVElMRURfTEVG VCwKLS0JCVRPR0dMRV9USUxFRF9SSUdIVCwKLS0JCVRPR0dMRV9BQk9WRSwKLS0JCU1BWElNSVpF LAotLQkJVU5NQVhJTUlaRSwKLS0JCVRPR0dMRV9TSEFERUQsCi0tCQlNSU5JTUlaRSwKLS0JCUNM T1NFLAotLQkJQkVHSU5fTU9WRSwKLS0JCUJFR0lOX1JFU0laRSwKLS0JCVRPR0dMRV9PTl9BTExf V09SS1NQQUNFUywKLS0JCU1PVkVfVE9fV09SS1NQQUNFXzEsCi0tCQlNT1ZFX1RPX1dPUktTUEFD RV8yLAotLQkJTU9WRV9UT19XT1JLU1BBQ0VfMywKLS0JCU1PVkVfVE9fV09SS1NQQUNFXzQsCi0t CQlNT1ZFX1RPX1dPUktTUEFDRV81LAotLQkJTU9WRV9UT19XT1JLU1BBQ0VfNiwKLS0JCU1PVkVf VE9fV09SS1NQQUNFXzcsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV84LAotLQkJTU9WRV9UT19XT1JL U1BBQ0VfOSwKLS0JCU1PVkVfVE9fV09SS1NQQUNFXzEwLAotLQkJTU9WRV9UT19XT1JLU1BBQ0Vf MTEsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV8xMiwKLS0JCU1PVkVfVE9fV09SS1NQQUNFX0xFRlQs Ci0tCQlNT1ZFX1RPX1dPUktTUEFDRV9SSUdIVCwKLS0JCU1PVkVfVE9fV09SS1NQQUNFX1VQLAot LQkJTU9WRV9UT19XT1JLU1BBQ0VfRE9XTiwKLS0JCU1PVkVfVE9fV09SS1NQQUNFX0xBU1QsCi0t CQlNT1ZFX1RPX01PTklUT1JfTEVGVCwKLS0JCU1PVkVfVE9fTU9OSVRPUl9SSUdIVCwKLS0JCU1P VkVfVE9fTU9OSVRPUl9VUCwKLS0JCU1PVkVfVE9fTU9OSVRPUl9ET1dOLAotLQkJUkFJU0VfT1Jf TE9XRVIsCi0tCQlSQUlTRSwKLS0JCUxPV0VSLAotLQkJTUFYSU1JWkVfVkVSVElDQUxMWSwKLS0J CU1BWElNSVpFX0hPUklaT05UQUxMWSwKLS0JCU1PVkVfVE9fQ09STkVSX05XLAotLQkJTU9WRV9U T19DT1JORVJfTkUsCi0tCQlNT1ZFX1RPX0NPUk5FUl9TVywKLS0JCU1PVkVfVE9fQ09STkVSX1NF LAotLQkJTU9WRV9UT19TSURFX04sCi0tCQlNT1ZFX1RPX1NJREVfUywKLS0JCU1PVkVfVE9fU0lE RV9FLAotLQkJTU9WRV9UT19TSURFX1csCi0tCQlNT1ZFX1RPX0NFTlRFUiwKLS0JCU9WRVJMQVlf S0VZLAotLQkJSVNPX05FWFRfR1JPVVAsCi0tCQlBTFdBWVNfT05fVE9QLAotLQkJTEFTVAotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjcHJlZml4ID0g Ik1FVEFfS0VZX0JJTkRJTkdfIiwgdHlwZV9pZCA9ICJtZXRhX2tleV9iaW5kaW5nX2ZsYWdzX2dl dF90eXBlICgpIildCi0tCVtGbGFnc10KLS0JcHVibGljIGVudW0gS2V5QmluZGluZ0ZsYWdzIHsK LS0JCU5PTkUsCi0tCQlQRVJfV0lORE9XLAotLQkJQlVJTFRJTiwKLS0JCUlTX1JFVkVSU0VECi0t CX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY3ByZWZpeCA9 ICJNRVRBX0xBVEVSXyIsIHR5cGVfaWQgPSAibWV0YV9sYXRlcl90eXBlX2dldF90eXBlICgpIild Ci0tCXB1YmxpYyBlbnVtIExhdGVyVHlwZSB7Ci0tCQlSRVNJWkUsCi0tCQlDQUxDX1NIT1dJTkcs Ci0tCQlDSEVDS19GVUxMU0NSRUVOLAotLQkJU1lOQ19TVEFDSywKLS0JCUJFRk9SRV9SRURSQVcs Ci0tCQlJRExFCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5o IiwgY3ByZWZpeCA9ICJNRVRBX0xPQ0FMRV9ESVJFQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX2xv Y2FsZV9kaXJlY3Rpb25fZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gTG9jYWxlRGlyZWN0 aW9uIHsKLS0JCUxUUiwKLS0JCVJUTAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL3dpbmRvdy5oIiwgY3ByZWZpeCA9ICJNRVRBX01BWElNSVpFXyIsIHR5cGVfaWQgPSAi bWV0YV9tYXhpbWl6ZV9mbGFnc19nZXRfdHlwZSAoKSIpXQotLQlbRmxhZ3NdCi0tCXB1YmxpYyBl bnVtIE1heGltaXplRmxhZ3MgewotLQkJSE9SSVpPTlRBTCwKLS0JCVZFUlRJQ0FMLAotLQkJQk9U SAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtcGx1Z2luLmgi LCBjcHJlZml4ID0gIk1FVEFfTU9EQUxfIiwgdHlwZV9pZCA9ICJtZXRhX21vZGFsX29wdGlvbnNf Z2V0X3R5cGUgKCkiKV0KLS0JW0ZsYWdzXQotLQlwdWJsaWMgZW51bSBNb2RhbE9wdGlvbnMgewot LQkJUE9JTlRFUl9BTFJFQURZX0dSQUJCRUQsCi0tCQlLRVlCT0FSRF9BTFJFQURZX0dSQUJCRUQK LS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNwcmVm aXggPSAiTUVUQV9NT1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX21vdGlvbl9kaXJlY3Rpb25fZ2V0 X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gTW90aW9uRGlyZWN0aW9uIHsKLS0JCVVQLAotLQkJ RE9XTiwKLS0JCUxFRlQsCi0tCQlSSUdIVCwKLS0JCVVQX0xFRlQsCi0tCQlVUF9SSUdIVCwKLS0J CURPV05fTEVGVCwKLS0JCURPV05fUklHSFQKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9wcmVmcy5oIiwgY3ByZWZpeCA9ICJNRVRBX1BSRUZfIiwgdHlwZV9pZCA9ICJt ZXRhX3ByZWZlcmVuY2VfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gUHJlZmVyZW5jZSB7 Ci0tCQlNT1VTRV9CVVRUT05fTU9EUywKLS0JCUZPQ1VTX01PREUsCi0tCQlGT0NVU19ORVdfV0lO RE9XUywKLS0JCUFUVEFDSF9NT0RBTF9ESUFMT0dTLAotLQkJUkFJU0VfT05fQ0xJQ0ssCi0tCQlB Q1RJT05fRE9VQkxFX0NMSUNLX1RJVExFQkFSLAotLQkJQUNUSU9OX01JRERMRV9DTElDS19USVRM RUJBUiwKLS0JCUFDVElPTl9SSUdIVF9DTElDS19USVRMRUJBUiwKLS0JCUFVVE9fUkFJU0UsCi0t CQlBVVRPX1JBSVNFX0RFTEFZLAotLQkJRk9DVVNfQ0hBTkdFX09OX1BPSU5URVJfUkVTVCwKLS0J CVRJVExFQkFSX0ZPTlQsCi0tCQlOVU1fV09SS1NQQUNFUywKLS0JCURZTkFNSUNfV09SS1NQQUNF UywKLS0JCUtFWUJJTkRJTkdTLAotLQkJRElTQUJMRV9XT1JLQVJPVU5EUywKLS0JCUJVVFRPTl9M QVlPVVQsCi0tCQlXT1JLU1BBQ0VfTkFNRVMsCi0tCQlWSVNVQUxfQkVMTCwKLS0JCUFVRElCTEVf QkVMTCwKLS0JCVZJU1VBTF9CRUxMX1RZUEUsCi0tCQlHTk9NRV9BQ0NFU1NJQklMSVRZLAotLQkJ R05PTUVfQU5JTUFUSU9OUywKLS0JCUNVUlNPUl9USEVNRSwKLS0JCUNVUlNPUl9TSVpFLAotLQkJ UkVTSVpFX1dJVEhfUklHSFRfQlVUVE9OLAotLQkJRURHRV9USUxJTkcsCi0tCQlGT1JDRV9GVUxM U0NSRUVOLAotLQkJV09SS1NQQUNFU19PTkxZX09OX1BSSU1BUlksCi0tCQlEUkFHR0FCTEVfQk9S REVSX1dJRFRILAotLQkJQVVUT19NQVhJTUlaRSwKLS0JCUNFTlRFUl9ORVdfV0lORE9XUywKLS0J CURSQUdfVEhSRVNIT0xEOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFp bi5oIildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgc3RyaW5nIHRvX3N0cmluZyAoTWV0YS5Q cmVmZXJlbmNlIHByZWYpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L3NjcmVlbi5oIiwgY3ByZWZpeCA9ICJNRVRBX1NDUkVFTl8iLCB0eXBlX2lkID0gIm1ldGFfc2Ny ZWVuX2Nvcm5lcl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBTY3JlZW5Db3JuZXIgewot LQkJVE9QTEVGVCwKLS0JCVRPUFJJR0hULAotLQkJQk9UVE9NTEVGVCwKLS0JCUJPVFRPTVJJR0hU Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1lbnVtLXR5cGVz LmgiLCBjcHJlZml4ID0gIk1FVEFfU0NSRUVOXyIsIHR5cGVfaWQgPSAibWV0YV9zY3JlZW5fZGly ZWN0aW9uX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIFNjcmVlbkRpcmVjdGlvbiB7Ci0t CQlVUCwKLS0JCURPV04sCi0tCQlMRUZULAotLQkJUklHSFQKLS0JfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWVudW0tdHlwZXMuaCIsIGNwcmVmaXggPSAiTUVUQV9T SEFET1dfTU9ERV8iLCB0eXBlX2lkID0gIm1ldGFfc2hhZG93X21vZGVfZ2V0X3R5cGUgKCkiKV0K LS0JcHVibGljIGVudW0gU2hhZG93TW9kZSB7Ci0tCQlBVVRPLAotLQkJRk9SQ0VEX09GRiwKLS0J CUZPUkNFRF9PTgotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1v bi5oIiwgY3ByZWZpeCA9ICJNRVRBX1NJREVfIiwgdHlwZV9pZCA9ICJtZXRhX3NpZGVfZ2V0X3R5 cGUgKCkiKV0KLS0JcHVibGljIGVudW0gU2lkZSB7Ci0tCQlMRUZULAotLQkJUklHSFQsCi0tCQlU T1AsCi0tCQlCT1RUT00KLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t ZXRhLWVudW0tdHlwZXMuaCIsIGNwcmVmaXggPSAiTUVUQV9TSVpFX0NIQU5HRV8iLCB0eXBlX2lk ID0gIm1ldGFfc2l6ZV9jaGFuZ2VfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gU2l6ZUNo YW5nZSB7Ci0tCQlNQVhJTUlaRSwKLS0JCVVOTUFYSU1JWkUsCi0tCQlGVUxMU0NSRUVOLAotLQkJ VU5GVUxMU0NSRUVOCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29t bW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfTEFZRVJfIiwgdHlwZV9pZCA9ICJtZXRhX3N0YWNrX2xh eWVyX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIFN0YWNrTGF5ZXIgewotLQkJREVTS1RP UCwKLS0JCUJPVFRPTSwKLS0JCU5PUk1BTCwKLS0JCVRPUCwKLS0JCURPQ0ssCi0tCQlGVUxMU0NS RUVOLAotLQkJRk9DVVNFRF9XSU5ET1csCi0tCQlPVkVSUklERV9SRURJUkVDVCwKLS0JCUxBU1QK LS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9kaXNwbGF5LmgiLCBjcHJl Zml4ID0gIk1FVEFfVEFCX0xJU1RfIiwgdHlwZV9pZCA9ICJtZXRhX3RhYl9saXN0X2dldF90eXBl ICgpIildCi0tCXB1YmxpYyBlbnVtIFRhYkxpc3QgewotLQkJTk9STUFMLAotLQkJRE9DS1MsCi0t CQlHUk9VUCwKLS0JCU5PUk1BTF9BTEwKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9kaXNwbGF5LmgiLCBjcHJlZml4ID0gIk1FVEFfVEFCX1NIT1dfIiwgdHlwZV9pZCA9 ICJtZXRhX3RhYl9zaG93X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gVGFiU2hv d1R5cGUgewotLQkJSUNPTiwKLS0JCUlOU1RBTlRMWQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY3ByZWZpeCA9ICJNRVRBX1ZJUlRVQUxfIiwgdHlw ZV9pZCA9ICJtZXRhX3ZpcnR1YWxfbW9kaWZpZXJfZ2V0X3R5cGUgKCkiKV0KLS0JW0ZsYWdzXQot LQlwdWJsaWMgZW51bSBWaXJ0dWFsTW9kaWZpZXIgewotLQkJU0hJRlRfTUFTSywKLS0JCUNPTlRS T0xfTUFTSywKLS0JCUFMVF9NQVNLLAotLQkJTUVUQV9NQVNLLAotLQkJU1VQRVJfTUFTSywKLS0J CUhZUEVSX01BU0ssCi0tCQlNT0QyX01BU0ssCi0tCQlNT0QzX01BU0ssCi0tCQlNT0Q0X01BU0ss Ci0tCQlNT0Q1X01BU0sKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS93 aW5kb3cuaCIsIGNwcmVmaXggPSAiTUVUQV9XSU5ET1dfQ0xJRU5UX1RZUEVfIiwgdHlwZV9pZCA9 ICJtZXRhX3dpbmRvd19jbGllbnRfdHlwZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBX aW5kb3dDbGllbnRUeXBlIHsKLS0JCVdBWUxBTkQsCi0tCQlYMTEKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNwcmVmaXggPSAiTUVUQV9XSU5ET1df TUVOVV8iLCB0eXBlX2lkID0gIm1ldGFfd2luZG93X21lbnVfdHlwZV9nZXRfdHlwZSAoKSIpXQot LQlwdWJsaWMgZW51bSBXaW5kb3dNZW51VHlwZSB7Ci0tCQlXTSwKLS0JCUFQUAotLQl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3dpbmRvdy5oIiwgY3ByZWZpeCA9ICJNRVRB X1dJTkRPV18iLCB0eXBlX2lkID0gIm1ldGFfd2luZG93X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLS0J cHVibGljIGVudW0gV2luZG93VHlwZSB7Ci0tCQlOT1JNQUwsCi0tCQlERVNLVE9QLAotLQkJRE9D SywKLS0JCURJQUxPRywKLS0JCU1PREFMX0RJQUxPRywKLS0JCVRPT0xCQVIsCi0tCQlNRU5VLAot LQkJVVRJTElUWSwKLS0JCVNQTEFTSFNDUkVFTiwKLS0JCURST1BET1dOX01FTlUsCi0tCQlQT1BV UF9NRU5VLAotLQkJVE9PTFRJUCwKLS0JCU5PVElGSUNBVElPTiwKLS0JCUNPTUJPLAotLQkJRE5E LAotLQkJT1ZFUlJJREVfT1RIRVIKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oIiwgaW5zdGFuY2VfcG9zID0gMi45KV0KLS0JcHVibGlj IGRlbGVnYXRlIHZvaWQgSWRsZU1vbml0b3JXYXRjaEZ1bmMgKE1ldGEuSWRsZU1vbml0b3IgbW9u aXRvciwgdWludCB3YXRjaF9pZCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L3ByZWZzLmgiLCBpbnN0YW5jZV9wb3MgPSA1LjkpXQotLQlwdWJsaWMgZGVsZWdhdGUgdm9pZCBL ZXlIYW5kbGVyRnVuYyAoTWV0YS5EaXNwbGF5IGRpc3BsYXksIE1ldGEuU2NyZWVuIHNjcmVlbiwg TWV0YS5XaW5kb3c/IHdpbmRvdywgQ2x1dHRlci5LZXlFdmVudD8gZXZlbnQsIE1ldGEuS2V5Qmlu ZGluZyBiaW5kaW5nKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMu aCIsIGluc3RhbmNlX3BvcyA9IDEuOSldCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIFByZWZzQ2hh bmdlZEZ1bmMgKE1ldGEuUHJlZmVyZW5jZSBwcmVmKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvd2luZG93LmgiLCBpbnN0YW5jZV9wb3MgPSAxLjkpXQotLQlwdWJsaWMgZGVs ZWdhdGUgYm9vbCBXaW5kb3dGb3JlYWNoRnVuYyAoTWV0YS5XaW5kb3cgd2luZG93KTsKLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9ERUZB VUxUX0lDT05fTkFNRSIpXQotLQlwdWJsaWMgY29uc3Qgc3RyaW5nIERFRkFVTFRfSUNPTl9OQU1F OwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJN RVRBX0lDT05fSEVJR0hUIildCi0tCXB1YmxpYyBjb25zdCBpbnQgSUNPTl9IRUlHSFQ7Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfSUNP Tl9XSURUSCIpXQotLQlwdWJsaWMgY29uc3QgaW50IElDT05fV0lEVEg7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfTUFKT1JfVkVSU0lP TiIpXQotLQlwdWJsaWMgY29uc3QgaW50IE1BSk9SX1ZFUlNJT047Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfTUlDUk9fVkVSU0lPTiIp XQotLQlwdWJsaWMgY29uc3QgaW50IE1JQ1JPX1ZFUlNJT047Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfTUlOSV9JQ09OX0hFSUdIVCIp XQotLQlwdWJsaWMgY29uc3QgaW50IE1JTklfSUNPTl9IRUlHSFQ7Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfTUlOSV9JQ09OX1dJRFRI IildCi0tCXB1YmxpYyBjb25zdCBpbnQgTUlOSV9JQ09OX1dJRFRIOwotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX01JTk9SX1ZFUlNJT04i KV0KLS0JcHVibGljIGNvbnN0IGludCBNSU5PUl9WRVJTSU9OOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX1BMVUdJTl9BUElfVkVSU0lP TiIpXQotLQlwdWJsaWMgY29uc3QgaW50IFBMVUdJTl9BUElfVkVSU0lPTjsKLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9QUklPUklUWV9C RUZPUkVfUkVEUkFXIildCi0tCXB1YmxpYyBjb25zdCBpbnQgUFJJT1JJVFlfQkVGT1JFX1JFRFJB VzsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAi TUVUQV9QUklPUklUWV9QUkVGU19OT1RJRlkiKV0KLS0JcHVibGljIGNvbnN0IGludCBQUklPUklU WV9QUkVGU19OT1RJRlk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4u aCIsIGNuYW1lID0gIk1FVEFfUFJJT1JJVFlfUkVEUkFXIildCi0tCXB1YmxpYyBjb25zdCBpbnQg UFJJT1JJVFlfUkVEUkFXOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWlu LmgiLCBjbmFtZSA9ICJNRVRBX1BSSU9SSVRZX1JFU0laRSIpXQotLQlwdWJsaWMgY29uc3QgaW50 IFBSSU9SSVRZX1JFU0laRTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFp bi5oIiwgY25hbWUgPSAiTUVUQV9WSVJUVUFMX0NPUkVfS0VZQk9BUkRfSUQiKV0KLS0JcHVibGlj IGNvbnN0IGludCBWSVJUVUFMX0NPUkVfS0VZQk9BUkRfSUQ7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfVklSVFVBTF9DT1JFX1BPSU5U RVJfSUQiKV0KLS0JcHVibGljIGNvbnN0IGludCBWSVJUVUFMX0NPUkVfUE9JTlRFUl9JRDsKLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0tCXB1YmxpYyBzdGF0 aWMgYm9vbCBhY3RpdmF0ZV9zZXNzaW9uICgpOwotLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gIm1ldGEvbWFpbi5oIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBjbHV0dGVyX2luaXQgKCk7 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotLQlwdWJsaWMg c3RhdGljIHZvaWQgZXhpdCAoTWV0YS5FeGl0Q29kZSBjb2RlKTsKLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0tCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBHTGli Lk9wdGlvbkNvbnRleHQgZ2V0X29wdGlvbl9jb250ZXh0ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLS0JcHVibGljIHN0YXRpYyBib29sIGdldF9yZXBs YWNlX2N1cnJlbnRfd20gKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21h aW4uaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgaW5pdCAoKTsKLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0tCXB1YmxpYyBzdGF0aWMgYm9vbCBpc19yZXN0 YXJ0ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLS0J cHVibGljIHN0YXRpYyB2b2lkIHF1aXQgKE1ldGEuRXhpdENvZGUgY29kZSk7Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQg cmVnaXN0ZXJfd2l0aF9zZXNzaW9uICgpOwotLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvbWFpbi5oIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCByZXN0YXJ0IChzdHJpbmcgbWVz c2FnZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotLQlw dWJsaWMgc3RhdGljIGludCBydW4gKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL21haW4uaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X2dub21lX3dtX2tleWJpbmRp bmdzIChzdHJpbmcgd21fa2V5YmluZGluZ3MpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9tYWluLmgiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF93bV9uYW1lIChzdHJp bmcgd21fbmFtZSk7Ci0tfQotZGlmZiAtLWdpdCB2YXBpL2xpYm11dHRlci0zLWN1c3RvbS52YWxh IHZhcGkvbGlibXV0dGVyLTMtY3VzdG9tLnZhbGEKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMjllNTk3N2QuLjAwMDAwMDAwCi0tLS0gdmFwaS9saWJtdXR0ZXItMy1jdXN0b20udmFs YQotKysrIC9kZXYvbnVsbAotQEAgLTEsNiArMCwwIEBACi0tbmFtZXNwYWNlIE1ldGEgewotLQlw dWJsaWMgYWJzdHJhY3QgY2xhc3MgTW9uaXRvck1hbmFnZXIgOiBNZXRhLkRCdXNEaXNwbGF5Q29u ZmlnU2tlbGV0b24sIEdMaWIuREJ1c0ludGVyZmFjZSB7Ci0tCQkvKiBub3QgZXhwb3J0ZWQgKi8K LS0JCXB1YmxpYyBzaWduYWwgdm9pZCBtb25pdG9yc19jaGFuZ2VkICgpOwotLQl9Ci0tfQotZGlm ZiAtLWdpdCB2YXBpL2xpYm11dHRlci0zLmRlcHMgdmFwaS9saWJtdXR0ZXItMy5kZXBzCi1kZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDFmM2M5MDc5Li4wMDAwMDAwMAotLS0tIHZhcGkv bGlibXV0dGVyLTMuZGVwcwotKysrIC9kZXYvbnVsbAotQEAgLTEsOSArMCwwIEBACi0tY2Fpcm8K LS1nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzCi0tZ2RrLTMuMAotLWdkay1waXhidWYtMi4wCi0t Z3RrKy0zLjAKLS14MTEKLS14Zml4ZXMtNC4wCi0tY2x1dHRlci0xLjAKLS1jb2dsLTEuMAotZGlm ZiAtLWdpdCB2YXBpL2xpYm11dHRlci00LmRlcHMgdmFwaS9saWJtdXR0ZXItNC5kZXBzCi1kZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDM2N2MzNWI5Li4wMDAwMDAwMAotLS0tIHZhcGkv bGlibXV0dGVyLTQuZGVwcwotKysrIC9kZXYvbnVsbAotQEAgLTEsOCArMCwwIEBACi0tZ2RrLTMu MAotLWdkay1waXhidWYtMi4wCi0tZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcwotLWd0aystMy4w Ci0tbXV0dGVyLWNsdXR0ZXItNAotLW11dHRlci1jb2dsLTQKLS14MTEKLS14Zml4ZXMtNC4wCi1k aWZmIC0tZ2l0IHZhcGkvbGlibXV0dGVyLTQudmFwaSB2YXBpL2xpYm11dHRlci00LnZhcGkKLWRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZTBkMzU2YTAuLjAwMDAwMDAwCi0tLS0gdmFw aS9saWJtdXR0ZXItNC52YXBpCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxNDI1ICswLDAgQEAKLS0v KiBsaWJtdXR0ZXItNC52YXBpIGdlbmVyYXRlZCBieSB2YXBpZ2VuLCBkbyBub3QgbW9kaWZ5LiAq LwotLQotLVtDQ29kZSAoY3ByZWZpeCA9ICJNZXRhIiwgZ2lyX25hbWVzcGFjZSA9ICJNZXRhIiwg Z2lyX3ZlcnNpb24gPSAiNCIsIGxvd2VyX2Nhc2VfY3ByZWZpeCA9ICJtZXRhXyIpXQotLW5hbWVz cGFjZSBNZXRhIHsKLS0JbmFtZXNwYWNlIENvbXBvc2l0b3IgewotLQkJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFfZGlz YWJsZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgZGlz YWJsZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IChNZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwgY25h bWUgPSAibWV0YV9lbXB0eV9zdGFnZV9pbnB1dF9yZWdpb24iKV0KLS0JCXB1YmxpYyBzdGF0aWMg dm9pZCBlbXB0eV9zdGFnZV9pbnB1dF9yZWdpb24gKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLS0J CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBj bmFtZSA9ICJtZXRhX2VuYWJsZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IildCi0tCQlwdWJsaWMg c3RhdGljIHZvaWQgZW5hYmxlX3VucmVkaXJlY3RfZm9yX2Rpc3BsYXkgKE1ldGEuRGlzcGxheSBk aXNwbGF5KTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3It bXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2ZvY3VzX3N0YWdlX3dpbmRvdyIpXQotLQkJcHVibGlj IHN0YXRpYyB2b2lkIGZvY3VzX3N0YWdlX3dpbmRvdyAoTWV0YS5EaXNwbGF5IGRpc3BsYXksIHVp bnQzMiB0aW1lc3RhbXApOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29t cG9zaXRvci1tdXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFfZ2V0X2ZlZWRiYWNrX2dyb3VwX2Zvcl9k aXNwbGF5IildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfZmVl ZGJhY2tfZ3JvdXBfZm9yX2Rpc3BsYXkgKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLS0JCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9 ICJtZXRhX2dldF9zdGFnZV9mb3JfZGlzcGxheSIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVk IENsdXR0ZXIuQWN0b3IgZ2V0X3N0YWdlX2Zvcl9kaXNwbGF5IChNZXRhLkRpc3BsYXkgZGlzcGxh eSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRl ci5oIiwgY25hbWUgPSAibWV0YV9nZXRfdG9wX3dpbmRvd19ncm91cF9mb3JfZGlzcGxheSIpXQot LQkJcHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X3RvcF93aW5kb3dfZ3Jv dXBfZm9yX2Rpc3BsYXkgKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLS0JCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2dl dF93aW5kb3dfYWN0b3JzIildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgR0xpYi5MaXN0PENs dXR0ZXIuQWN0b3I+IGdldF93aW5kb3dfYWN0b3JzIChNZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwg Y25hbWUgPSAibWV0YV9nZXRfd2luZG93X2dyb3VwX2Zvcl9kaXNwbGF5IildCi0tCQlwdWJsaWMg c3RhdGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfd2luZG93X2dyb3VwX2Zvcl9kaXNwbGF5 IChNZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9zZXRfc3RhZ2VfaW5wdXRf cmVnaW9uIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X3N0YWdlX2lucHV0X3JlZ2lvbiAo TWV0YS5EaXNwbGF5IGRpc3BsYXksIFguWHNlcnZlclJlZ2lvbiByZWdpb24pOwotLQl9Ci0tCW5h bWVzcGFjZSBQcmVmcyB7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVm cy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19iZWxsX2lzX2F1ZGlibGUiKV0KLS0JCXB1YmxpYyBz dGF0aWMgYm9vbCBwcmVmc19iZWxsX2lzX2F1ZGlibGUgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19jaGFuZ2Vfd29y a3NwYWNlX25hbWUiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBwcmVmc19jaGFuZ2Vfd29ya3Nw YWNlX25hbWUgKGludCBpLCBzdHJpbmcgbmFtZSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfYWN0aW9uX2RvdWJs ZV9jbGlja190aXRsZWJhciIpXQotLQkJcHVibGljIHN0YXRpYyBHRGVza3RvcC5UaXRsZWJhckFj dGlvbiBwcmVmc19nZXRfYWN0aW9uX2RvdWJsZV9jbGlja190aXRsZWJhciAoKTsKLS0JCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZz X2dldF9hY3Rpb25fbWlkZGxlX2NsaWNrX3RpdGxlYmFyIildCi0tCQlwdWJsaWMgc3RhdGljIEdE ZXNrdG9wLlRpdGxlYmFyQWN0aW9uIHByZWZzX2dldF9hY3Rpb25fbWlkZGxlX2NsaWNrX3RpdGxl YmFyICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNu YW1lID0gIm1ldGFfcHJlZnNfZ2V0X2FjdGlvbl9yaWdodF9jbGlja190aXRsZWJhciIpXQotLQkJ cHVibGljIHN0YXRpYyBHRGVza3RvcC5UaXRsZWJhckFjdGlvbiBwcmVmc19nZXRfYWN0aW9uX3Jp Z2h0X2NsaWNrX3RpdGxlYmFyICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2F0dGFjaF9tb2RhbF9kaWFsb2dz IildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNfZ2V0X2F0dGFjaF9tb2RhbF9kaWFsb2dz ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1l ID0gIm1ldGFfcHJlZnNfZ2V0X2F1dG9fbWF4aW1pemUiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9v bCBwcmVmc19nZXRfYXV0b19tYXhpbWl6ZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dldF9hdXRvX3JhaXNlIild Ci0tCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNfZ2V0X2F1dG9fcmFpc2UgKCk7Ci0tCQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVm c19nZXRfYXV0b19yYWlzZV9kZWxheSIpXQotLQkJcHVibGljIHN0YXRpYyBpbnQgcHJlZnNfZ2V0 X2F1dG9fcmFpc2VfZGVsYXkgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfYnV0dG9uX2xheW91dCIpXQotLQkJ cHVibGljIHN0YXRpYyBNZXRhLkJ1dHRvbkxheW91dCBwcmVmc19nZXRfYnV0dG9uX2xheW91dCAo KTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9 ICJtZXRhX3ByZWZzX2dldF9jZW50ZXJfbmV3X3dpbmRvd3MiKV0KLS0JCXB1YmxpYyBzdGF0aWMg Ym9vbCBwcmVmc19nZXRfY2VudGVyX25ld193aW5kb3dzICgpOwotLQkJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2NvbXBv c2l0aW5nX21hbmFnZXIiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBwcmVmc19nZXRfY29tcG9z aXRpbmdfbWFuYWdlciAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3By ZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dldF9jdXJzb3Jfc2l6ZSIpXQotLQkJcHVibGlj IHN0YXRpYyBpbnQgcHJlZnNfZ2V0X2N1cnNvcl9zaXplICgpOwotLQkJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2N1cnNv cl90aGVtZSIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIHN0cmluZyBwcmVmc19nZXRfY3Vy c29yX3RoZW1lICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMu aCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2Rpc2FibGVfd29ya2Fyb3VuZHMiKV0KLS0JCXB1 YmxpYyBzdGF0aWMgYm9vbCBwcmVmc19nZXRfZGlzYWJsZV93b3JrYXJvdW5kcyAoKTsKLS0JCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3By ZWZzX2dldF9kcmFnX3RocmVzaG9sZCIpXQotLQkJcHVibGljIHN0YXRpYyBpbnQgcHJlZnNfZ2V0 X2RyYWdfdGhyZXNob2xkICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEv cHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2RyYWdnYWJsZV9ib3JkZXJfd2lkdGgi KV0KLS0JCXB1YmxpYyBzdGF0aWMgaW50IHByZWZzX2dldF9kcmFnZ2FibGVfYm9yZGVyX3dpZHRo ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1l ID0gIm1ldGFfcHJlZnNfZ2V0X2R5bmFtaWNfd29ya3NwYWNlcyIpXQotLQkJcHVibGljIHN0YXRp YyBib29sIHByZWZzX2dldF9keW5hbWljX3dvcmtzcGFjZXMgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfZWRn ZV90aWxpbmciKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBwcmVmc19nZXRfZWRnZV90aWxpbmcg KCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUg PSAibWV0YV9wcmVmc19nZXRfZm9jdXNfY2hhbmdlX29uX3BvaW50ZXJfcmVzdCIpXQotLQkJcHVi bGljIHN0YXRpYyBib29sIHByZWZzX2dldF9mb2N1c19jaGFuZ2Vfb25fcG9pbnRlcl9yZXN0ICgp OwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0g Im1ldGFfcHJlZnNfZ2V0X2ZvY3VzX21vZGUiKV0KLS0JCXB1YmxpYyBzdGF0aWMgR0Rlc2t0b3Au Rm9jdXNNb2RlIHByZWZzX2dldF9mb2N1c19tb2RlICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2ZvY3VzX25l d193aW5kb3dzIildCi0tCQlwdWJsaWMgc3RhdGljIEdEZXNrdG9wLkZvY3VzTmV3V2luZG93cyBw cmVmc19nZXRfZm9jdXNfbmV3X3dpbmRvd3MgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfZm9yY2VfZnVsbHNj cmVlbiIpXQotLQkJcHVibGljIHN0YXRpYyBib29sIHByZWZzX2dldF9mb3JjZV9mdWxsc2NyZWVu ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1l ID0gIm1ldGFfcHJlZnNfZ2V0X2dub21lX2FjY2Vzc2liaWxpdHkiKV0KLS0JCXB1YmxpYyBzdGF0 aWMgYm9vbCBwcmVmc19nZXRfZ25vbWVfYWNjZXNzaWJpbGl0eSAoKTsKLS0JCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dldF9n bm9tZV9hbmltYXRpb25zIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNfZ2V0X2dub21l X2FuaW1hdGlvbnMgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVm cy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfa2V5YmluZGluZ19hY3Rpb24iKV0KLS0JCXB1 YmxpYyBzdGF0aWMgTWV0YS5LZXlCaW5kaW5nQWN0aW9uIHByZWZzX2dldF9rZXliaW5kaW5nX2Fj dGlvbiAoc3RyaW5nIG5hbWUpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEv cHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X21vdXNlX2J1dHRvbl9tZW51IildCi0t CQlwdWJsaWMgc3RhdGljIGludCBwcmVmc19nZXRfbW91c2VfYnV0dG9uX21lbnUgKCk7Ci0tCQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9w cmVmc19nZXRfbW91c2VfYnV0dG9uX21vZHMiKV0KLS0JCXB1YmxpYyBzdGF0aWMgTWV0YS5WaXJ0 dWFsTW9kaWZpZXIgcHJlZnNfZ2V0X21vdXNlX2J1dHRvbl9tb2RzICgpOwotLQkJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0 X21vdXNlX2J1dHRvbl9yZXNpemUiKV0KLS0JCXB1YmxpYyBzdGF0aWMgaW50IHByZWZzX2dldF9t b3VzZV9idXR0b25fcmVzaXplICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X251bV93b3Jrc3BhY2VzIildCi0t CQlwdWJsaWMgc3RhdGljIGludCBwcmVmc19nZXRfbnVtX3dvcmtzcGFjZXMgKCk7Ci0tCQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVm c19nZXRfcmFpc2Vfb25fY2xpY2siKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBwcmVmc19nZXRf cmFpc2Vfb25fY2xpY2sgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9w cmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfc2hvd19mYWxsYmFja19hcHBfbWVudSIp XQotLQkJcHVibGljIHN0YXRpYyBib29sIHByZWZzX2dldF9zaG93X2ZhbGxiYWNrX2FwcF9tZW51 ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1l ID0gIm1ldGFfcHJlZnNfZ2V0X3RpdGxlYmFyX2ZvbnQiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdW5v d25lZCBQYW5nby5Gb250RGVzY3JpcHRpb24gcHJlZnNfZ2V0X3RpdGxlYmFyX2ZvbnQgKCk7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0 YV9wcmVmc19nZXRfdmlzdWFsX2JlbGwiKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBwcmVmc19n ZXRfdmlzdWFsX2JlbGwgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9w cmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfdmlzdWFsX2JlbGxfdHlwZSIpXQotLQkJ cHVibGljIHN0YXRpYyBHRGVza3RvcC5WaXN1YWxCZWxsVHlwZSBwcmVmc19nZXRfdmlzdWFsX2Jl bGxfdHlwZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgi LCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dldF93b3Jrc3BhY2VfbmFtZSIpXQotLQkJcHVibGljIHN0 YXRpYyB1bm93bmVkIHN0cmluZyBwcmVmc19nZXRfd29ya3NwYWNlX25hbWUgKGludCBpKTsKLS0J CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRh X3ByZWZzX2dldF93b3Jrc3BhY2VzX29ubHlfb25fcHJpbWFyeSIpXQotLQkJcHVibGljIHN0YXRp YyBib29sIHByZWZzX2dldF93b3Jrc3BhY2VzX29ubHlfb25fcHJpbWFyeSAoKTsKLS0JCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZz X2luaXQiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBwcmVmc19pbml0ICgpOwotLQkJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNf c2V0X2ZvcmNlX2Z1bGxzY3JlZW4iKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBwcmVmc19zZXRf Zm9yY2VfZnVsbHNjcmVlbiAoYm9vbCB3aGV0aGVyKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX3NldF9udW1fd29ya3Nw YWNlcyIpXQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHByZWZzX3NldF9udW1fd29ya3NwYWNlcyAo aW50IG5fd29ya3NwYWNlcyk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9w cmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19zZXRfc2hvd19mYWxsYmFja19hcHBfbWVudSIp XQotLQkJcHVibGljIHN0YXRpYyB2b2lkIHByZWZzX3NldF9zaG93X2ZhbGxiYWNrX2FwcF9tZW51 IChib29sIHdoZXRoZXIpOwotLQl9Ci0tCW5hbWVzcGFjZSBVdGlsIHsKLS0JCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNuYW1lID0gIm1ldGFfYWRkX3ZlcmJvc2Vf dG9waWMiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBhZGRfdmVyYm9zZV90b3BpYyAoTWV0YS5E ZWJ1Z1RvcGljIHRvcGljKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0 aWwuaCIsIGNuYW1lID0gIm1ldGFfZXh0ZXJuYWxfYmluZGluZ19uYW1lX2Zvcl9hY3Rpb24iKV0K LS0JCXB1YmxpYyBzdGF0aWMgc3RyaW5nIGV4dGVybmFsX2JpbmRpbmdfbmFtZV9mb3JfYWN0aW9u ICh1aW50IGtleWJpbmRpbmdfYWN0aW9uKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL3V0aWwuaCIsIGNuYW1lID0gIm1ldGFfZ191dGY4X3N0cm5kdXAiKV0KLS0JCXB1Ymxp YyBzdGF0aWMgc3RyaW5nIGdfdXRmOF9zdHJuZHVwIChzdHJpbmcgc3JjLCBzaXplX3Qgbik7Ci0t CQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBjbmFtZSA9ICJtZXRh X2dldF9sb2NhbGVfZGlyZWN0aW9uIildCi0tCQlwdWJsaWMgc3RhdGljIE1ldGEuTG9jYWxlRGly ZWN0aW9uIGdldF9sb2NhbGVfZGlyZWN0aW9uICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV9ncmF2aXR5X3RvX3N0cmluZyIpXQot LQkJcHVibGljIHN0YXRpYyB1bm93bmVkIHN0cmluZyBncmF2aXR5X3RvX3N0cmluZyAoaW50IGdy YXZpdHkpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY25h bWUgPSAibWV0YV9pc19kZWJ1Z2dpbmciKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBpc19kZWJ1 Z2dpbmcgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBj bmFtZSA9ICJtZXRhX2lzX3N5bmNpbmciKV0KLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBpc19zeW5j aW5nICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY25h bWUgPSAibWV0YV9pc192ZXJib3NlIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgaXNfdmVyYm9z ZSAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNuYW1l ID0gIm1ldGFfaXNfd2F5bGFuZF9jb21wb3NpdG9yIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wg aXNfd2F5bGFuZF9jb21wb3NpdG9yICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV9sYXRlcl9hZGQiKV0KLS0JCXB1YmxpYyBzdGF0 aWMgdWludCBsYXRlcl9hZGQgKE1ldGEuTGF0ZXJUeXBlIHdoZW4sIG93bmVkIEdMaWIuU291cmNl RnVuYyBmdW5jKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIs IGNuYW1lID0gIm1ldGFfbGF0ZXJfcmVtb3ZlIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgbGF0 ZXJfcmVtb3ZlICh1aW50IGxhdGVyX2lkKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL3V0aWwuaCIsIGNuYW1lID0gIm1ldGFfcG9wX25vX21zZ19wcmVmaXgiKV0KLS0JCXB1 YmxpYyBzdGF0aWMgdm9pZCBwb3Bfbm9fbXNnX3ByZWZpeCAoKTsKLS0JCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNuYW1lID0gIm1ldGFfcHVzaF9ub19tc2dfcHJl Zml4IildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgcHVzaF9ub19tc2dfcHJlZml4ICgpOwotLQkJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV9y ZWN0IildCi0tCQlwdWJsaWMgc3RhdGljIE1ldGEuUmVjdGFuZ2xlPyByZWN0IChpbnQgeCwgaW50 IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS91dGlsLmgiLCBjbmFtZSA9ICJtZXRhX3JlbW92ZV92ZXJib3NlX3RvcGljIildCi0t CQlwdWJsaWMgc3RhdGljIHZvaWQgcmVtb3ZlX3ZlcmJvc2VfdG9waWMgKE1ldGEuRGVidWdUb3Bp YyB0b3BpYyk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBj bmFtZSA9ICJtZXRhX3Nob3dfZGlhbG9nIildCi0tCQlwdWJsaWMgc3RhdGljIEdMaWIuUGlkIHNo b3dfZGlhbG9nIChzdHJpbmcgdHlwZSwgc3RyaW5nIG1lc3NhZ2UsIHN0cmluZyB0aW1lb3V0LCBz dHJpbmcgZGlzcGxheSwgc3RyaW5nIG9rX3RleHQsIHN0cmluZyBjYW5jZWxfdGV4dCwgc3RyaW5n IGljb25fbmFtZSwgaW50IHRyYW5zaWVudF9mb3IsIEdMaWIuU0xpc3Q8dm9pZCo+IGNvbHVtbnMs IEdMaWIuU0xpc3Q8dm9pZCo+IGVudHJpZXMpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gIm1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV91bnNpZ25lZF9sb25nX2VxdWFsIildCi0t CQlwdWJsaWMgc3RhdGljIGludCB1bnNpZ25lZF9sb25nX2VxdWFsICh2b2lkKiB2MSwgdm9pZCog djIpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY25hbWUg PSAibWV0YV91bnNpZ25lZF9sb25nX2hhc2giKV0KLS0JCXB1YmxpYyBzdGF0aWMgdWludCB1bnNp Z25lZF9sb25nX2hhc2ggKHZvaWQqIHYpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV94MTFfZXJyb3JfdHJhcF9wb3AiKV0KLS0JCXB1 YmxpYyBzdGF0aWMgdm9pZCB4MTFfZXJyb3JfdHJhcF9wb3AgKE1ldGEuWDExRGlzcGxheSB4MTFf ZGlzcGxheSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBj bmFtZSA9ICJtZXRhX3gxMV9lcnJvcl90cmFwX3BvcF93aXRoX3JldHVybiIpXQotLQkJcHVibGlj IHN0YXRpYyBpbnQgeDExX2Vycm9yX3RyYXBfcG9wX3dpdGhfcmV0dXJuIChNZXRhLlgxMURpc3Bs YXkgeDExX2Rpc3BsYXkpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRp bC5oIiwgY25hbWUgPSAibWV0YV94MTFfZXJyb3JfdHJhcF9wdXNoIildCi0tCQlwdWJsaWMgc3Rh dGljIHZvaWQgeDExX2Vycm9yX3RyYXBfcHVzaCAoTWV0YS5YMTFEaXNwbGF5IHgxMV9kaXNwbGF5 KTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWJhY2tlbmQu aCIsIHR5cGVfaWQgPSAibWV0YV9iYWNrZW5kX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBhYnN0 cmFjdCBjbGFzcyBCYWNrZW5kIDogR0xpYi5PYmplY3QsIEdMaWIuSW5pdGFibGUgewotLQkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIEJhY2tl bmQgKCk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWJhY2tlbmQu aCIsIGNuYW1lID0gIm1ldGFfZ2V0X2JhY2tlbmQiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25l ZCBNZXRhLkJhY2tlbmQgZ2V0X2JhY2tlbmQgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBNZXRhLkRu ZCBnZXRfZG5kICgpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5SZW1vdGVBY2Nlc3NDb250cm9s bGVyIGdldF9yZW1vdGVfYWNjZXNzX2NvbnRyb2xsZXIgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBD bHV0dGVyLkFjdG9yIGdldF9zdGFnZSAoKTsKLS0JCXB1YmxpYyB2b2lkIGxvY2tfbGF5b3V0X2dy b3VwICh1aW50IGlkeCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfa2V5bWFwIChzdHJpbmcgbGF5b3V0 cywgc3RyaW5nIHZhcmlhbnRzLCBzdHJpbmcgb3B0aW9ucyk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRf bnVtbG9jayAoYm9vbCBudW1sb2NrX3N0YXRlKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBrZXlt YXBfY2hhbmdlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBrZXltYXBfbGF5b3V0X2dyb3Vw X2NoYW5nZWQgKHVpbnQgb2JqZWN0KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBsYXN0X2Rldmlj ZV9jaGFuZ2VkIChpbnQgb2JqZWN0KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBsaWRfaXNfY2xv c2VkX2NoYW5nZWQgKGJvb2wgb2JqZWN0KTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9tZXRhLWJhY2tncm91bmQuaCIsIHR5cGVfaWQgPSAibWV0YV9iYWNrZ3JvdW5k X2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBCYWNrZ3JvdW5kIDogR0xpYi5PYmplY3Qg ewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHVibGlj IEJhY2tncm91bmQgKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLS0JCXB1YmxpYyBzdGF0aWMgdm9p ZCByZWZyZXNoX2FsbCAoKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9ibGVuZCAoR0xpYi5GaWxlIGZp bGUxLCBHTGliLkZpbGUgZmlsZTIsIGRvdWJsZSBibGVuZF9mYWN0b3IsIEdEZXNrdG9wLkJhY2tn cm91bmRTdHlsZSBzdHlsZSk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfY29sb3IgKENsdXR0ZXIuQ29s b3IgY29sb3IpOwotLQkJcHVibGljIHZvaWQgc2V0X2ZpbGUgKEdMaWIuRmlsZSBmaWxlLCBHRGVz a3RvcC5CYWNrZ3JvdW5kU3R5bGUgc3R5bGUpOwotLQkJcHVibGljIHZvaWQgc2V0X2dyYWRpZW50 IChHRGVza3RvcC5CYWNrZ3JvdW5kU2hhZGluZyBzaGFkaW5nX2RpcmVjdGlvbiwgQ2x1dHRlci5D b2xvciBjb2xvciwgQ2x1dHRlci5Db2xvciBzZWNvbmRfY29sb3IpOwotLQkJW05vQWNjZXNzb3JN ZXRob2RdCi0tCQlwdWJsaWMgTWV0YS5EaXNwbGF5IG1ldGFfZGlzcGxheSB7IG93bmVkIGdldDsg Y29uc3RydWN0OyB9Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgY2hhbmdlZCAoKTsKLS0JfQotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCIs IHR5cGVfaWQgPSAibWV0YV9iYWNrZ3JvdW5kX2FjdG9yX2dldF90eXBlICgpIildCi0tCXB1Ymxp YyBjbGFzcyBCYWNrZ3JvdW5kQWN0b3IgOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1wbGVtZW50b3Is IENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJs ZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJD bHV0dGVyQWN0b3IqIildCi0tCQlwdWJsaWMgQmFja2dyb3VuZEFjdG9yIChNZXRhLkRpc3BsYXkg ZGlzcGxheSwgaW50IG1vbml0b3IpOwotLQkJcHVibGljIHZvaWQgc2V0X2JhY2tncm91bmQgKE1l dGEuQmFja2dyb3VuZCBiYWNrZ3JvdW5kKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9ncmFkaWVudCAo Ym9vbCBlbmFibGVkLCBpbnQgaGVpZ2h0LCBkb3VibGUgdG9uZV9zdGFydCk7Ci0tCQlwdWJsaWMg dm9pZCBzZXRfbW9uaXRvciAoaW50IG1vbml0b3IpOwotLQkJcHVibGljIHZvaWQgc2V0X3ZpZ25l dHRlIChib29sIGVuYWJsZWQsIGRvdWJsZSBicmlnaHRuZXNzLCBkb3VibGUgc2hhcnBuZXNzKTsK LS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIE1ldGEuQmFja2dyb3VuZCBiYWNrZ3Jv dW5kIHsgb3duZWQgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGlj IGRvdWJsZSBicmlnaHRuZXNzIHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQot LQkJcHVibGljIGJvb2wgZ3JhZGllbnQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRo b2RdCi0tCQlwdWJsaWMgaW50IGdyYWRpZW50X2hlaWdodCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9B Y2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBkb3VibGUgZ3JhZGllbnRfbWF4X2RhcmtuZXNzIHsg Z2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIE1ldGEuRGlzcGxh eSBtZXRhX2Rpc3BsYXkgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJW05vQWNjZXNzb3JN ZXRob2RdCi0tCQlwdWJsaWMgaW50IG1vbml0b3IgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCB2aWduZXR0ZSB7IGdldDsgc2V0OyB9Ci0t CQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBkb3VibGUgdmlnbmV0dGVfc2hhcnBuZXNz IHsgZ2V0OyBzZXQ7IH0KLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t ZXRhLWJhY2tncm91bmQtZ3JvdXAuaCIsIHR5cGVfaWQgPSAibWV0YV9iYWNrZ3JvdW5kX2dyb3Vw X2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBCYWNrZ3JvdW5kR3JvdXAgOiBDbHV0dGVy LkFjdG9yLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250 YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVu Y3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyQWN0b3IqIildCi0tCQlwdWJsaWMgQmFja2dy b3VuZEdyb3VwICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21l dGEtYmFja2dyb3VuZC1pbWFnZS5oIiwgdHlwZV9pZCA9ICJtZXRhX2JhY2tncm91bmRfaW1hZ2Vf Z2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNsYXNzIEJhY2tncm91bmRJbWFnZSA6IEdMaWIuT2Jq ZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXBy b3RlY3RlZCBCYWNrZ3JvdW5kSW1hZ2UgKCk7Ci0tCQlwdWJsaWMgYm9vbCBnZXRfc3VjY2VzcyAo KTsKLS0JCXB1YmxpYyB1bm93bmVkIENvZ2wuVGV4dHVyZSBnZXRfdGV4dHVyZSAoKTsKLS0JCXB1 YmxpYyBib29sIGlzX2xvYWRlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBsb2FkZWQgKCk7 Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1iYWNrZ3JvdW5k LWltYWdlLmgiLCB0eXBlX2lkID0gIm1ldGFfYmFja2dyb3VuZF9pbWFnZV9jYWNoZV9nZXRfdHlw ZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgQmFja2dyb3VuZEltYWdlQ2FjaGUgOiBHTGliLk9iamVj dCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90 ZWN0ZWQgQmFja2dyb3VuZEltYWdlQ2FjaGUgKCk7Ci0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQg TWV0YS5CYWNrZ3JvdW5kSW1hZ2VDYWNoZSBnZXRfZGVmYXVsdCAoKTsKLS0JCXB1YmxpYyBNZXRh LkJhY2tncm91bmRJbWFnZSBsb2FkIChHTGliLkZpbGUgZmlsZSk7Ci0tCQlwdWJsaWMgdm9pZCBw dXJnZSAoR0xpYi5GaWxlIGZpbGUpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0 b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5o LG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRh L21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRh LWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQu aCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21l dGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0Lmgs bWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEt cmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRh LXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNv dW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNh dGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEv bWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdv cmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1l cnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwu aCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCB0eXBlX2lkID0gIm1ldGFfYmFycmll cl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgQmFycmllciA6IEdMaWIuT2JqZWN0IHsK LS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3Rl ZCBCYXJyaWVyICgpOwotLQkJcHVibGljIHZvaWQgZGVzdHJveSAoKTsKLS0JCXB1YmxpYyBib29s IGlzX2FjdGl2ZSAoKTsKLS0JCXB1YmxpYyB2b2lkIHJlbGVhc2UgKE1ldGEuQmFycmllckV2ZW50 IGV2ZW50KTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIE1ldGEuQmFycmllckRp cmVjdGlvbiBkaXJlY3Rpb25zIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCVtOb0FjY2Vzc29yTWV0 aG9kXQotLQkJcHVibGljIE1ldGEuRGlzcGxheSBkaXNwbGF5IHsgb3duZWQgZ2V0OyBjb25zdHJ1 Y3Q7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGludCB4MSB7IGdldDsgY29u c3RydWN0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBpbnQgeDIgeyBnZXQ7 IGNvbnN0cnVjdDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgaW50IHkxIHsg Z2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGludCB5 MiB7IGdldDsgY29uc3RydWN0OyB9Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgaGl0IChNZXRhLkJh cnJpZXJFdmVudCBldmVudCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgbGVmdCAoTWV0YS5CYXJy aWVyRXZlbnQgZXZlbnQpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L2JhcnJpZXIuaCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19ib3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlv biA9ICJnX2JveGVkX2ZyZWUiLCB0eXBlX2lkID0gIm1ldGFfYmFycmllcl9ldmVudF9nZXRfdHlw ZSAoKSIpXQotLQlbQ29tcGFjdF0KLS0JcHVibGljIGNsYXNzIEJhcnJpZXJFdmVudCB7Ci0tCQlw dWJsaWMgaW50IGR0OwotLQkJcHVibGljIGRvdWJsZSBkeDsKLS0JCXB1YmxpYyBkb3VibGUgZHk7 Ci0tCQlwdWJsaWMgaW50IGV2ZW50X2lkOwotLQkJcHVibGljIGJvb2wgZ3JhYmJlZDsKLS0JCXB1 YmxpYyBib29sIHJlbGVhc2VkOwotLQkJcHVibGljIHVpbnQzMiB0aW1lOwotLQkJcHVibGljIGRv dWJsZSB4OwotLQkJcHVibGljIGRvdWJsZSB5OwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2Nv bXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9n cm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAu aCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0 YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0 YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxt ZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250 ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRh L21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0 YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9t ZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5v dGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5o LG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9t ZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRh LXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRh L3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCB0eXBlX2lkID0gIm1ldGFf Y3Vyc29yX3RyYWNrZXJfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNsYXNzIEN1cnNvclRyYWNr ZXIgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBm YWxzZSldCi0tCQlwcm90ZWN0ZWQgQ3Vyc29yVHJhY2tlciAoKTsKLS0JCXB1YmxpYyBzdGF0aWMg dW5vd25lZCBNZXRhLkN1cnNvclRyYWNrZXIgZ2V0X2Zvcl9kaXNwbGF5IChNZXRhLkRpc3BsYXkg ZGlzcGxheSk7Ci0tCQlwdWJsaWMgdm9pZCBnZXRfaG90IChvdXQgaW50IHgsIG91dCBpbnQgeSk7 Ci0tCQlwdWJsaWMgdm9pZCBnZXRfcG9pbnRlciAoaW50IHgsIGludCB5LCBDbHV0dGVyLk1vZGlm aWVyVHlwZSBtb2RzKTsKLS0JCXB1YmxpYyB1bm93bmVkIENvZ2wuVGV4dHVyZSBnZXRfc3ByaXRl ICgpOwotLQkJcHVibGljIHZvaWQgc2V0X3BvaW50ZXJfdmlzaWJsZSAoYm9vbCB2aXNpYmxlKTsK LS0JCXB1YmxpYyBzaWduYWwgdm9pZCBjdXJzb3JfY2hhbmdlZCAoKTsKLS0JCXB1YmxpYyBzaWdu YWwgdm9pZCBjdXJzb3JfbW92ZWQgKGZsb2F0IG9iamVjdCwgZmxvYXQgcDApOwotLQl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2Rpc3BsYXkuaCIsIHR5cGVfaWQgPSAibWV0 YV9kaXNwbGF5X2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBEaXNwbGF5IDogR0xpYi5P YmplY3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJ cHJvdGVjdGVkIERpc3BsYXkgKCk7Ci0tCQlwdWJsaWMgdm9pZCBhZGRfaWdub3JlZF9jcm9zc2lu Z19zZXJpYWwgKHVsb25nIHNlcmlhbCk7Ci0tCQlwdWJsaWMgdWludCBhZGRfa2V5YmluZGluZyAo c3RyaW5nIG5hbWUsIEdMaWIuU2V0dGluZ3Mgc2V0dGluZ3MsIE1ldGEuS2V5QmluZGluZ0ZsYWdz IGZsYWdzLCBvd25lZCBNZXRhLktleUhhbmRsZXJGdW5jIGhhbmRsZXIpOwotLQkJcHVibGljIGJv b2wgYmVnaW5fZ3JhYl9vcCAoTWV0YS5XaW5kb3cgd2luZG93LCBNZXRhLkdyYWJPcCBvcCwgYm9v bCBwb2ludGVyX2FscmVhZHlfZ3JhYmJlZCwgYm9vbCBmcmFtZV9hY3Rpb24sIGludCBidXR0b24s IHVsb25nIG1vZG1hc2ssIHVpbnQzMiB0aW1lc3RhbXAsIGludCByb290X3gsIGludCByb290X3kp OwotLQkJcHVibGljIHZvaWQgY2xlYXJfbW91c2VfbW9kZSAoKTsKLS0JCXB1YmxpYyB2b2lkIGNs b3NlICh1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB2b2lkIGVuZF9ncmFiX29wICh1aW50 MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB2b2lkIGZvY3VzX2RlZmF1bHRfd2luZG93ICh1aW50 MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB2b2lkIGZyZWV6ZV9rZXlib2FyZCAodWludDMyIHRp bWVzdGFtcCk7Ci0tCQlwdWJsaWMgaW50IGdldF9jdXJyZW50X21vbml0b3IgKCk7Ci0tCQlwdWJs aWMgdWludDMyIGdldF9jdXJyZW50X3RpbWUgKCk7Ci0tCQlwdWJsaWMgdWludDMyIGdldF9jdXJy ZW50X3RpbWVfcm91bmR0cmlwICgpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5XaW5kb3cgZ2V0 X2ZvY3VzX3dpbmRvdyAoKTsKLS0JCXB1YmxpYyBNZXRhLkdyYWJPcCBnZXRfZ3JhYl9vcCAoKTsK LS0JCXB1YmxpYyB1aW50IGdldF9rZXliaW5kaW5nX2FjdGlvbiAodWludCBrZXljb2RlLCB1bG9u ZyBtYXNrKTsKLS0JCXB1YmxpYyB1aW50MzIgZ2V0X2xhc3RfdXNlcl90aW1lICgpOwotLQkJcHVi bGljIE1ldGEuUmVjdGFuZ2xlIGdldF9tb25pdG9yX2dlb21ldHJ5IChpbnQgbW9uaXRvcik7Ci0t CQlwdWJsaWMgYm9vbCBnZXRfbW9uaXRvcl9pbl9mdWxsc2NyZWVuIChpbnQgbW9uaXRvcik7Ci0t CQlwdWJsaWMgaW50IGdldF9tb25pdG9yX2luZGV4X2Zvcl9yZWN0IChNZXRhLlJlY3RhbmdsZSBy ZWN0KTsKLS0JCXB1YmxpYyBpbnQgZ2V0X21vbml0b3JfbmVpZ2hib3JfaW5kZXggKGludCB3aGlj aF9tb25pdG9yLCBNZXRhLkRpc3BsYXlEaXJlY3Rpb24gZGlyKTsKLS0JCXB1YmxpYyBpbnQgZ2V0 X25fbW9uaXRvcnMgKCk7Ci0tCQlwdWJsaWMgc3RyaW5nIGdldF9wYWRfYWN0aW9uX2xhYmVsIChD bHV0dGVyLklucHV0RGV2aWNlIHBhZCwgTWV0YS5QYWRBY3Rpb25UeXBlIGFjdGlvbl90eXBlLCB1 aW50IGFjdGlvbl9udW1iZXIpOwotLQkJcHVibGljIGludCBnZXRfcHJpbWFyeV9tb25pdG9yICgp OwotLQkJcHVibGljIHZvaWQgZ2V0X3NpemUgKG91dCBpbnQgd2lkdGgsIG91dCBpbnQgaGVpZ2h0 KTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuU291bmRQbGF5ZXIgZ2V0X3NvdW5kX3BsYXllciAo KTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV2luZG93IGdldF90YWJfY3VycmVudCAoTWV0YS5U YWJMaXN0IHR5cGUsIE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSk7Ci0tCQlwdWJsaWMgR0xpYi5M aXN0PHdlYWsgTWV0YS5XaW5kb3c+IGdldF90YWJfbGlzdCAoTWV0YS5UYWJMaXN0IHR5cGUsIE1l dGEuV29ya3NwYWNlPyB3b3Jrc3BhY2UpOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5XaW5kb3cg Z2V0X3RhYl9uZXh0IChNZXRhLlRhYkxpc3QgdHlwZSwgTWV0YS5Xb3Jrc3BhY2Ugd29ya3NwYWNl LCBNZXRhLldpbmRvdz8gd2luZG93LCBib29sIGJhY2t3YXJkKTsKLS0JCXB1YmxpYyB1bm93bmVk IE1ldGEuV29ya3NwYWNlTWFuYWdlciBnZXRfd29ya3NwYWNlX21hbmFnZXIgKCk7Ci0tCQlwdWJs aWMgdWludCBncmFiX2FjY2VsZXJhdG9yIChzdHJpbmcgYWNjZWxlcmF0b3IsIE1ldGEuS2V5Qmlu ZGluZ0ZsYWdzIGZsYWdzKTsKLS0JCXB1YmxpYyBib29sIGlzX3BvaW50ZXJfZW11bGF0aW5nX3Nl cXVlbmNlIChDbHV0dGVyLkV2ZW50U2VxdWVuY2U/IHNlcXVlbmNlKTsKLS0JCXB1YmxpYyBib29s IHJlbW92ZV9rZXliaW5kaW5nIChzdHJpbmcgbmFtZSk7Ci0tCQlwdWJsaWMgdm9pZCByZXF1ZXN0 X3BhZF9vc2QgKENsdXR0ZXIuSW5wdXREZXZpY2UgcGFkLCBib29sIGVkaXRpb25fbW9kZSk7Ci0t CQlwdWJsaWMgdm9pZCBzZXRfY3Vyc29yIChNZXRhLkN1cnNvciBjdXJzb3IpOwotLQkJcHVibGlj IEdMaWIuU0xpc3Q8d2VhayBNZXRhLldpbmRvdz4gc29ydF93aW5kb3dzX2J5X3N0YWNraW5nIChH TGliLlNMaXN0PE1ldGEuV2luZG93PiB3aW5kb3dzKTsKLS0JCXB1YmxpYyBib29sIHN1cHBvcnRz X2V4dGVuZGVkX2JhcnJpZXJzICgpOwotLQkJcHVibGljIHZvaWQgdW5mcmVlemVfa2V5Ym9hcmQg KHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIGJvb2wgdW5ncmFiX2FjY2VsZXJhdG9yICh1 aW50IGFjdGlvbl9pZCk7Ci0tCQlwdWJsaWMgdm9pZCB1bmdyYWJfa2V5Ym9hcmQgKHVpbnQzMiB0 aW1lc3RhbXApOwotLQkJcHVibGljIGJvb2wgeHNlcnZlcl90aW1lX2lzX2JlZm9yZSAodWludDMy IHRpbWUxLCB1aW50MzIgdGltZTIpOwotLQkJcHVibGljIE1ldGEuV2luZG93IGZvY3VzX3dpbmRv dyB7IGdldDsgfQotLQkJcHVibGljIHNpZ25hbCB2b2lkIGFjY2VsZXJhdG9yX2FjdGl2YXRlZCAo dWludCBvYmplY3QsIHVpbnQgcDAsIHVpbnQgcDEpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGN1 cnNvcl91cGRhdGVkICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGdsX3ZpZGVvX21lbW9yeV9w dXJnZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgZ3JhYl9vcF9iZWdpbiAoTWV0YS5EaXNw bGF5IG9iamVjdCwgTWV0YS5XaW5kb3cgcDAsIE1ldGEuR3JhYk9wIHAxKTsKLS0JCXB1YmxpYyBz aWduYWwgdm9pZCBncmFiX29wX2VuZCAoTWV0YS5EaXNwbGF5IG9iamVjdCwgTWV0YS5XaW5kb3cg cDAsIE1ldGEuR3JhYk9wIHAxKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBpbl9mdWxsc2NyZWVu X2NoYW5nZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIGJvb2wgbW9kaWZpZXJzX2FjY2VsZXJhdG9y X2FjdGl2YXRlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBvdmVybGF5X2tleSAoKTsKLS0J CXB1YmxpYyBzaWduYWwgdm9pZCBwYWRfbW9kZV9zd2l0Y2ggKENsdXR0ZXIuSW5wdXREZXZpY2Ug b2JqZWN0LCB1aW50IHAwLCB1aW50IHAxKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCByZXN0YWNr ZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIGJvb2wgcmVzdGFydCAoKTsKLS0JCXB1YmxpYyBzaWdu YWwgdm9pZCBzaG93X29zZCAoaW50IG9iamVjdCwgc3RyaW5nIHAwLCBzdHJpbmcgcDEpOwotLQkJ cHVibGljIHNpZ25hbCB1bm93bmVkIENsdXR0ZXIuQWN0b3I/IHNob3dfcGFkX29zZCAoQ2x1dHRl ci5JbnB1dERldmljZSBwYWQsIEdMaWIuU2V0dGluZ3Mgc2V0dGluZ3MsIHN0cmluZyBsYXlvdXRf cGF0aCwgYm9vbCBlZGl0aW9uX21vZGUsIGludCBtb25pdG9yX2lkeCk7Ci0tCQlwdWJsaWMgc2ln bmFsIGJvb2wgc2hvd19yZXNpemVfcG9wdXAgKGJvb2wgb2JqZWN0LCBNZXRhLlJlY3RhbmdsZSBw MCwgaW50IHAxLCBpbnQgcDIpOwotLQkJcHVibGljIHNpZ25hbCBib29sIHNob3dfcmVzdGFydF9t ZXNzYWdlIChzdHJpbmc/IG1lc3NhZ2UpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHNob3dpbmdf ZGVza3RvcF9jaGFuZ2VkICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdpbmRvd19jcmVhdGVk IChNZXRhLldpbmRvdyBvYmplY3QpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdpbmRvd19kZW1h bmRzX2F0dGVudGlvbiAoTWV0YS5XaW5kb3cgb2JqZWN0KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9p ZCB3aW5kb3dfZW50ZXJlZF9tb25pdG9yIChpbnQgb2JqZWN0LCBNZXRhLldpbmRvdyBwMCk7Ci0t CQlwdWJsaWMgc2lnbmFsIHZvaWQgd2luZG93X2xlZnRfbW9uaXRvciAoaW50IG9iamVjdCwgTWV0 YS5XaW5kb3cgcDApOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdpbmRvd19tYXJrZWRfdXJnZW50 IChNZXRhLldpbmRvdyBvYmplY3QpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdvcmthcmVhc19j aGFuZ2VkICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHgxMV9kaXNwbGF5X2Nsb3NpbmcgKCk7 Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgeDExX2Rpc3BsYXlfb3BlbmVkICgpOwotLQl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0 YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0 YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxt ZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3It dHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0 YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0 YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEv bWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9t ZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBl ZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1l dGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9t ZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2lu ZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1k aXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5o LG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgi LCB0eXBlX2lkID0gIm1ldGFfZG5kX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBEbmQg OiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxz ZSldCi0tCQlwcm90ZWN0ZWQgRG5kICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGRuZF9lbnRl ciAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBkbmRfbGVhdmUgKCk7Ci0tCQlwdWJsaWMgc2ln bmFsIHZvaWQgZG5kX3Bvc2l0aW9uX2NoYW5nZSAoaW50IG9iamVjdCwgaW50IHAwKTsKLS0JfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5o LG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5o LG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWlu LmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEt YmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vy c29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRh L21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5o LG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxt ZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1l dGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1z aGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2Uu aCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1l dGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRh LXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14 MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhl bWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFj ZS5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCVtDb21wYWN0XQotLQlwdWJsaWMgY2xhc3Mg RnJhbWUgewotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIu aCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBv c2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGlu Z3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5k LWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5o LG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51 bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9y dGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0 b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1j b250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5 LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1l dGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0 YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3Jv dXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2Vy LmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3By ZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5o LG1ldGEvd29ya3NwYWNlLmgiLCB0eXBlX2lkID0gIm1ldGFfaWRsZV9tb25pdG9yX2dldF90eXBl ICgpIildCi0tCXB1YmxpYyBjbGFzcyBJZGxlTW9uaXRvciA6IEdMaWIuT2JqZWN0IHsKLS0JCVtD Q29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBJZGxl TW9uaXRvciAoKTsKLS0JCXB1YmxpYyB1aW50IGFkZF9pZGxlX3dhdGNoICh1aW50NjQgaW50ZXJ2 YWxfbXNlYywgb3duZWQgTWV0YS5JZGxlTW9uaXRvcldhdGNoRnVuYz8gY2FsbGJhY2spOwotLQkJ cHVibGljIHVpbnQgYWRkX3VzZXJfYWN0aXZlX3dhdGNoIChvd25lZCBNZXRhLklkbGVNb25pdG9y V2F0Y2hGdW5jPyBjYWxsYmFjayk7Ci0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgTWV0YS5JZGxl TW9uaXRvciBnZXRfY29yZSAoKTsKLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBNZXRhLklkbGVN b25pdG9yIGdldF9mb3JfZGV2aWNlIChpbnQgZGV2aWNlX2lkKTsKLS0JCXB1YmxpYyBpbnQ2NCBn ZXRfaWRsZXRpbWUgKCk7Ci0tCQlwdWJsaWMgdm9pZCByZW1vdmVfd2F0Y2ggKHVpbnQgaWQpOwot LQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgaW50IGRldmljZV9pZCB7IGdldDsgY29u c3RydWN0OyB9Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmll ci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29t cG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5k aW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9n LmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1l bnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNo b3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9u aXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNz LWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3Rv cnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgs bWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9t ZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1n cm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFn ZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEv cHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93 LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19ib3hlZF9jb3B5IiwgZnJl ZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0eXBlX2lkID0gIm1ldGFfa2V5X2JpbmRpbmdf Z2V0X3R5cGUgKCkiKV0KLS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBLZXlCaW5kaW5nIHsK LS0JCXB1YmxpYyB1aW50IGdldF9tYXNrICgpOwotLQkJcHVibGljIE1ldGEuVmlydHVhbE1vZGlm aWVyIGdldF9tb2RpZmllcnMgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X25hbWUg KCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19idWlsdGluICgpOwotLQkJcHVibGljIGJvb2wgaXNfcmV2 ZXJzZWQgKCk7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gIm1ldGFfa2V5YmluZGluZ3Nfc2V0X2N1c3Rv bV9oYW5kbGVyIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgc2V0X2N1c3RvbV9oYW5kbGVyIChz dHJpbmcgbmFtZSwgb3duZWQgTWV0YS5LZXlIYW5kbGVyRnVuYz8gaGFuZGxlcik7Ci0tCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxt ZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxt ZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5o LG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNv ci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9t ZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxt ZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0 YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRh L21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hh cGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgs bWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRh L21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13 aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDEx LWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1l LmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2Uu aCIsIHR5cGVfaWQgPSAibWV0YV9sYXVuY2hfY29udGV4dF9nZXRfdHlwZSAoKSIpXQotLQlwdWJs aWMgY2xhc3MgTGF1bmNoQ29udGV4dCA6IEdMaWIuQXBwTGF1bmNoQ29udGV4dCB7Ci0tCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgTGF1bmNo Q29udGV4dCAoKTsKLS0JCXB1YmxpYyB2b2lkIHNldF90aW1lc3RhbXAgKHVpbnQzMiB0aW1lc3Rh bXApOwotLQkJcHVibGljIHZvaWQgc2V0X3dvcmtzcGFjZSAoTWV0YS5Xb3Jrc3BhY2Ugd29ya3Nw YWNlKTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIE1ldGEuRGlzcGxheSBkaXNw bGF5IHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJ cHVibGljIHVpbnQgdGltZXN0YW1wIHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9k XQotLQkJcHVibGljIE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSB7IG93bmVkIGdldDsgc2V0OyB9 Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1tb25pdG9yLW1h bmFnZXIuaCIsIHR5cGVfaWQgPSAibWV0YV9tb25pdG9yX21hbmFnZXJfZ2V0X3R5cGUgKCkiKV0K LS0JcHVibGljIGNsYXNzIE1vbml0b3JNYW5hZ2VyIDogR0xpYi5PYmplY3QgewotLQkJW0NDb2Rl IChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIE1vbml0b3JN YW5hZ2VyICgpOwotLQkJcHVibGljIGJvb2wgY2FuX3N3aXRjaF9jb25maWcgKCk7Ci0tCQlwdWJs aWMgc3RhdGljIHVub3duZWQgTWV0YS5Nb25pdG9yTWFuYWdlciBAZ2V0ICgpOwotLQkJcHVibGlj IHN0YXRpYyBpbnQgZ2V0X2Rpc3BsYXlfY29uZmlndXJhdGlvbl90aW1lb3V0ICgpOwotLQkJcHVi bGljIGJvb2wgZ2V0X2lzX2J1aWx0aW5fZGlzcGxheV9vbiAoKTsKLS0JCXB1YmxpYyBpbnQgZ2V0 X21vbml0b3JfZm9yX2Nvbm5lY3RvciAoc3RyaW5nIGNvbm5lY3Rvcik7Ci0tCQlwdWJsaWMgTWV0 YS5Nb25pdG9yU3dpdGNoQ29uZmlnVHlwZSBnZXRfc3dpdGNoX2NvbmZpZyAoKTsKLS0JCXB1Ymxp YyB2b2lkIHN3aXRjaF9jb25maWcgKE1ldGEuTW9uaXRvclN3aXRjaENvbmZpZ1R5cGUgY29uZmln X3R5cGUpOwotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgTWV0YS5CYWNrZW5kIGJh Y2tlbmQgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJcHVibGljIHNpZ25hbCB2b2lkIGNv bmZpcm1fZGlzcGxheV9jaGFuZ2UgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgbW9uaXRvcnNf Y2hhbmdlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBtb25pdG9yc19jaGFuZ2VkX2ludGVy bmFsICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHBvd2VyX3NhdmVfbW9kZV9jaGFuZ2VkICgp OwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtcGx1Z2luLmgi LCB0eXBlX2lkID0gIm1ldGFfcGx1Z2luX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBhYnN0cmFj dCBjbGFzcyBQbHVnaW4gOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3Rf ZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgUGx1Z2luICgpOwotLQkJcHVibGljIGJv b2wgYmVnaW5fbW9kYWwgKE1ldGEuTW9kYWxPcHRpb25zIG9wdGlvbnMsIHVpbnQzMiB0aW1lc3Rh bXApOwotLQkJcHVibGljIHZvaWQgY29tcGxldGVfZGlzcGxheV9jaGFuZ2UgKGJvb2wgb2spOwot LQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgY29uZmlybV9kaXNwbGF5X2No YW5nZSAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIGRlc3Ryb3kg KE1ldGEuV2luZG93QWN0b3IgYWN0b3IpOwotLQkJcHVibGljIHZvaWQgZGVzdHJveV9jb21wbGV0 ZWQgKE1ldGEuV2luZG93QWN0b3IgYWN0b3IpOwotLQkJcHVibGljIHZvaWQgZW5kX21vZGFsICh1 aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuRGlzcGxheSBnZXRfZGlz cGxheSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuUGx1Z2luSW5mbz8gZ2V0X2luZm8gKCk7 Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBoaWRlX3RpbGVfcHJldmll dyAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCBib29sIGtleWJpbmRpbmdf ZmlsdGVyIChNZXRhLktleUJpbmRpbmcgYmluZGluZyk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVi bGljIHZpcnR1YWwgdm9pZCBraWxsX3N3aXRjaF93b3Jrc3BhY2UgKCk7Ci0tCQlbTm9XcmFwcGVy XQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBraWxsX3dpbmRvd19lZmZlY3RzIChNZXRhLldpbmRv d0FjdG9yIGFjdG9yKTsKLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBtYW5hZ2VyX3NldF9wbHVnaW5f dHlwZSAoR0xpYi5UeXBlIGd0eXBlKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVh bCB2b2lkIG1hcCAoTWV0YS5XaW5kb3dBY3RvciBhY3Rvcik7Ci0tCQlwdWJsaWMgdm9pZCBtYXBf Y29tcGxldGVkIChNZXRhLldpbmRvd0FjdG9yIGFjdG9yKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlw dWJsaWMgdmlydHVhbCB2b2lkIG1pbmltaXplIChNZXRhLldpbmRvd0FjdG9yIGFjdG9yKTsKLS0J CXB1YmxpYyB2b2lkIG1pbmltaXplX2NvbXBsZXRlZCAoTWV0YS5XaW5kb3dBY3RvciBhY3Rvcik7 Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdW5vd25lZCBNZXRhLlBsdWdpbklu Zm8/IHBsdWdpbl9pbmZvICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZv aWQgc2hvd190aWxlX3ByZXZpZXcgKE1ldGEuV2luZG93IHdpbmRvdywgTWV0YS5SZWN0YW5nbGUg dGlsZV9yZWN0LCBpbnQgdGlsZV9tb25pdG9yX251bWJlcik7Ci0tCQlbTm9XcmFwcGVyXQotLQkJ cHVibGljIHZpcnR1YWwgdm9pZCBzaG93X3dpbmRvd19tZW51IChNZXRhLldpbmRvdyB3aW5kb3cs IE1ldGEuV2luZG93TWVudVR5cGUgbWVudSwgaW50IHgsIGludCB5KTsKLS0JCVtOb1dyYXBwZXJd Ci0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNob3dfd2luZG93X21lbnVfZm9yX3JlY3QgKE1ldGEu V2luZG93IHdpbmRvdywgTWV0YS5XaW5kb3dNZW51VHlwZSBtZW51LCBNZXRhLlJlY3RhbmdsZSBy ZWN0KTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNpemVfY2hhbmdl IChNZXRhLldpbmRvd0FjdG9yIGFjdG9yLCBNZXRhLlNpemVDaGFuZ2Ugd2hpY2hfY2hhbmdlLCBN ZXRhLlJlY3RhbmdsZSBvbGRfZnJhbWVfcmVjdCwgTWV0YS5SZWN0YW5nbGUgb2xkX2J1ZmZlcl9y ZWN0KTsKLS0JCXB1YmxpYyB2b2lkIHNpemVfY2hhbmdlX2NvbXBsZXRlZCAoTWV0YS5XaW5kb3dB Y3RvciBhY3Rvcik7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBzaXpl X2NoYW5nZWQgKE1ldGEuV2luZG93QWN0b3IgYWN0b3IpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1 YmxpYyB2aXJ0dWFsIHZvaWQgc3RhcnQgKCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZp cnR1YWwgdm9pZCBzd2l0Y2hfd29ya3NwYWNlIChpbnQgZnJvbSwgaW50IHRvLCBNZXRhLk1vdGlv bkRpcmVjdGlvbiBkaXJlY3Rpb24pOwotLQkJcHVibGljIHZvaWQgc3dpdGNoX3dvcmtzcGFjZV9j b21wbGV0ZWQgKCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCB1bm1p bmltaXplIChNZXRhLldpbmRvd0FjdG9yIGFjdG9yKTsKLS0JCXB1YmxpYyB2b2lkIHVubWluaW1p emVfY29tcGxldGVkIChNZXRhLldpbmRvd0FjdG9yIGFjdG9yKTsKLS0JCVtOb1dyYXBwZXJdCi0t CQlwdWJsaWMgdmlydHVhbCBib29sIHhldmVudF9maWx0ZXIgKFguRXZlbnQgZXZlbnQpOwotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVz LmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVy LmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21h aW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1j dXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1l dGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9n LmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5o LG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgs bWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRh LXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFn ZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgs bWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21l dGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRh LXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90 aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3Nw YWNlLmgiLCB0eXBlX2lkID0gIm1ldGFfcmVtb3RlX2FjY2Vzc19jb250cm9sbGVyX2dldF90eXBl ICgpIildCi0tCXB1YmxpYyBjbGFzcyBSZW1vdGVBY2Nlc3NDb250cm9sbGVyIDogR0xpYi5PYmpl Y3QgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJv dGVjdGVkIFJlbW90ZUFjY2Vzc0NvbnRyb2xsZXIgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQg bmV3X2hhbmRsZSAoTWV0YS5SZW1vdGVBY2Nlc3NIYW5kbGUgb2JqZWN0KTsKLS0JfQotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEv Y29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEv ZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0 YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1i YWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dy b3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRy YWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEt aWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEv bWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21l dGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0 YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQt dGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRh L21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0 YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRv dy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlz cGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxt ZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwg dHlwZV9pZCA9ICJtZXRhX3JlbW90ZV9hY2Nlc3NfaGFuZGxlX2dldF90eXBlICgpIildCi0tCXB1 YmxpYyBjbGFzcyBSZW1vdGVBY2Nlc3NIYW5kbGUgOiBHTGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUg KGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgUmVtb3RlQWNj ZXNzSGFuZGxlICgpOwotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBzdG9wICgpOwotLQkJcHVibGlj IHNpZ25hbCB2b2lkIHN0b3BwZWQgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9z aXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3Vw LmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21l dGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRu ZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEv bWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQu aCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0 YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21l dGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEt c291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZp Y2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0 YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEt d29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDEx LWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRp bC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGhhc190eXBlX2lkID0gZmFsc2Up XQotLQlbQ29tcGFjdF0KLS0JcHVibGljIGNsYXNzIFNldHRpbmdzIHsKLS0JCXB1YmxpYyBpbnQg Z2V0X2ZvbnRfZHBpICgpOwotLQkJcHVibGljIGludCBnZXRfdWlfc2NhbGluZ19mYWN0b3IgKCk7 Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEv Ym94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1t dXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1l dGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3Iu aCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9t ZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVz LmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1k aWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5h Z2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xs ZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRh L21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRh LXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNp b24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1l dGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRh L21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxt ZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93 b3Jrc3BhY2UuaCIsIHJlZl9mdW5jdGlvbiA9ICJtZXRhX3NoYWRvd19yZWYiLCB0eXBlX2lkID0g Im1ldGFfc2hhZG93X2dldF90eXBlICgpIiwgdW5yZWZfZnVuY3Rpb24gPSAibWV0YV9zaGFkb3df dW5yZWYiKV0KLS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBTaGFkb3cgewotLQkJcHVibGlj IHZvaWQgZ2V0X2JvdW5kcyAoaW50IHdpbmRvd194LCBpbnQgd2luZG93X3ksIGludCB3aW5kb3df d2lkdGgsIGludCB3aW5kb3dfaGVpZ2h0LCBDYWlyby5SZWN0YW5nbGVJbnQgYm91bmRzKTsKLS0J CXB1YmxpYyB2b2lkIHBhaW50IChDb2dsLkZyYW1lYnVmZmVyIGZyYW1lYnVmZmVyLCBpbnQgd2lu ZG93X3gsIGludCB3aW5kb3dfeSwgaW50IHdpbmRvd193aWR0aCwgaW50IHdpbmRvd19oZWlnaHQs IHVpbnQ4IG9wYWNpdHksIENhaXJvLlJlZ2lvbj8gY2xpcCwgYm9vbCBjbGlwX3N0cmljdGx5KTsK LS0JCXB1YmxpYyBNZXRhLlNoYWRvdyBAcmVmICgpOwotLQkJcHVibGljIHZvaWQgdW5yZWYgKCk7 Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEv Ym94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1t dXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1l dGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3Iu aCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9t ZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVz LmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1k aWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5h Z2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xs ZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRh L21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRh LXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNp b24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1l dGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRh L21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxt ZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93 b3Jrc3BhY2UuaCIsIHR5cGVfaWQgPSAibWV0YV9zaGFkb3dfZmFjdG9yeV9nZXRfdHlwZSAoKSIp XQotLQlwdWJsaWMgY2xhc3MgU2hhZG93RmFjdG9yeSA6IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29k ZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXB1YmxpYyBTaGFkb3dGYWN0 b3J5ICgpOwotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEuU2hhZG93RmFjdG9yeSBnZXRf ZGVmYXVsdCAoKTsKLS0JCXB1YmxpYyBNZXRhLlNoYWRvd1BhcmFtcyBnZXRfcGFyYW1zIChzdHJp bmcgY2xhc3NfbmFtZSwgYm9vbCBmb2N1c2VkKTsKLS0JCXB1YmxpYyBNZXRhLlNoYWRvdyBnZXRf c2hhZG93IChNZXRhLldpbmRvd1NoYXBlIHNoYXBlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHN0 cmluZyBjbGFzc19uYW1lLCBib29sIGZvY3VzZWQpOwotLQkJcHVibGljIHZvaWQgc2V0X3BhcmFt cyAoc3RyaW5nIGNsYXNzX25hbWUsIGJvb2wgZm9jdXNlZCwgTWV0YS5TaGFkb3dQYXJhbXMgQHBh cmFtcyk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgY2hhbmdlZCAoKTsKLS0JfQotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29t bW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlz cGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9t ZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNr ZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRs ZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0 YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEt cGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1z ZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4 dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21l dGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13 aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1z aGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxh eS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRh L3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgdHlw ZV9pZCA9ICJtZXRhX3NoYXBlZF90ZXh0dXJlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFz cyBTaGFwZWRUZXh0dXJlIDogQ2x1dHRlci5BY3RvciwgQXRrLkltcGxlbWVudG9yLCBDbHV0dGVy LkFuaW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIFNo YXBlZFRleHR1cmUgKCk7Ci0tCQlwdWJsaWMgQ2Fpcm8uU3VyZmFjZSBnZXRfaW1hZ2UgKENhaXJv LlJlY3RhbmdsZUludCBjbGlwKTsKLS0JCXB1YmxpYyB1bm93bmVkIENvZ2wuVGV4dHVyZSBnZXRf dGV4dHVyZSAoKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9jcmVhdGVfbWlwbWFwcyAoYm9vbCBjcmVh dGVfbWlwbWFwcyk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfbWFza190ZXh0dXJlIChDb2dsLlRleHR1 cmUgbWFza190ZXh0dXJlKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9vcGFxdWVfcmVnaW9uIChvd25l ZCBDYWlyby5SZWdpb24gb3BhcXVlX3JlZ2lvbik7Ci0tCQlwdWJsaWMgYm9vbCB1cGRhdGVfYXJl YSAoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotLQkJcHVibGljIHNpZ25h bCB2b2lkIHNpemVfY2hhbmdlZCAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3Np dG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAu aCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRh L21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0 YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5k LmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9t ZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5o LG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRh LXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0 YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1z b3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmlj YXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRh L21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13 b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEt ZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGls LmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9pZCA9ICJtZXRhX3NvdW5k X3BsYXllcl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgU291bmRQbGF5ZXIgOiBHTGli Lk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0t CQlwcm90ZWN0ZWQgU291bmRQbGF5ZXIgKCk7Ci0tCQlwdWJsaWMgdm9pZCBwbGF5X2Zyb21fZmls ZSAoR0xpYi5GaWxlIGZpbGUsIHN0cmluZyBkZXNjcmlwdGlvbiwgR0xpYi5DYW5jZWxsYWJsZT8g Y2FuY2VsbGFibGUgPSBudWxsKTsKLS0JCXB1YmxpYyB2b2lkIHBsYXlfZnJvbV90aGVtZSAoc3Ry aW5nIG5hbWUsIHN0cmluZyBkZXNjcmlwdGlvbiwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFi bGUgPSBudWxsKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJy aWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9j b21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJp bmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dy b3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tn cm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFs b2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRh LWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQt c2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1t b25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nl c3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFj dG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIu aCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRh L21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93 LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFu YWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0 YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5k b3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9pZCA9ICJtZXRhX3N0YWdlX2dldF90eXBlICgp IildCi0tCXB1YmxpYyBjbGFzcyBTdGFnZSA6IENsdXR0ZXIuU3RhZ2UsIEF0ay5JbXBsZW1lbnRv ciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0dGVyLkNvbnRhaW5lciwgQ2x1dHRlci5TY3JpcHRh YmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXBy b3RlY3RlZCBTdGFnZSAoKTsKLS0JCXB1YmxpYyBzdGF0aWMgYm9vbCBpc19mb2N1c2VkIChNZXRh LkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgYWN0b3JzX3BhaW50ZWQg KCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1l dGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRv ci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5o LG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0 b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0 YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5 cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0 cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1t YW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRy b2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxt ZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9t ZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZl cnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5o LG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxt ZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMu aCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0 YS93b3Jrc3BhY2UuaCIsIHR5cGVfaWQgPSAibWV0YV9zdGFydHVwX25vdGlmaWNhdGlvbl9nZXRf dHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgU3RhcnR1cE5vdGlmaWNhdGlvbiA6IEdMaWIuT2Jq ZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXBy b3RlY3RlZCBTdGFydHVwTm90aWZpY2F0aW9uICgpOwotLQkJcHVibGljIE1ldGEuTGF1bmNoQ29u dGV4dCBjcmVhdGVfbGF1bmNoZXIgKCk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1Ymxp YyBNZXRhLkRpc3BsYXkgZGlzcGxheSB7IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci0tCQlwdWJs aWMgc2lnbmFsIHZvaWQgY2hhbmdlZCAodm9pZCogb2JqZWN0KTsKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9u LmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxh eS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRh LWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1p bWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIu aCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1t b25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1s YXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1 Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0 aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVy ZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEt c3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5k b3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFw ZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5o LG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5 cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9p ZCA9ICJtZXRhX3N0YXJ0dXBfc2VxdWVuY2VfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNsYXNz IFN0YXJ0dXBTZXF1ZW5jZSA6IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVj dF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBTdGFydHVwU2VxdWVuY2UgKCk7Ci0t CQlwdWJsaWMgdm9pZCBjb21wbGV0ZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRf YXBwbGljYXRpb25faWQgKCk7Ci0tCQlwdWJsaWMgYm9vbCBnZXRfY29tcGxldGVkICgpOwotLQkJ cHVibGljIHVub3duZWQgc3RyaW5nIGdldF9pY29uX25hbWUgKCk7Ci0tCQlwdWJsaWMgdW5vd25l ZCBzdHJpbmcgZ2V0X2lkICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9uYW1lICgp OwotLQkJcHVibGljIHVpbnQ2NCBnZXRfdGltZXN0YW1wICgpOwotLQkJcHVibGljIHVub3duZWQg c3RyaW5nIGdldF93bWNsYXNzICgpOwotLQkJcHVibGljIGludCBnZXRfd29ya3NwYWNlICgpOwot LQkJcHVibGljIHN0cmluZyBhcHBsaWNhdGlvbl9pZCB7IGdldDsgY29uc3RydWN0OyB9Ci0tCQlw dWJsaWMgc3RyaW5nIGljb25fbmFtZSB7IGdldDsgY29uc3RydWN0OyB9Ci0tCQlwdWJsaWMgc3Ry aW5nIGlkIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCXB1YmxpYyBzdHJpbmcgbmFtZSB7IGdldDsg Y29uc3RydWN0OyB9Ci0tCQlwdWJsaWMgdWludDY0IHRpbWVzdGFtcCB7IGdldDsgY29uc3RydWN0 OyB9Ci0tCQlwdWJsaWMgc3RyaW5nIHdtY2xhc3MgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJcHVi bGljIGludCB3b3Jrc3BhY2UgeyBnZXQ7IGNvbnN0cnVjdDsgfQotLQl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24u aCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5 LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEt YmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWlt YWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5o LG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1v bml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxh dW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVn aW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRp bmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJl LmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1z dGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRv dy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBl LmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5Lmgs bWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlw ZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBoYXNfdHlw ZV9pZCA9IGZhbHNlKV0KLS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBUaGVtZSB7Ci0tCQlw dWJsaWMgdm9pZCBmcmVlICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3Iu aCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1l dGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21l dGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNs b3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxt ZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEt aW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0 YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVt b3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNo YWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5k LXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlv bi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0 YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtz cGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJv cnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxt ZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCB0eXBlX2lkID0gIm1ldGFfd2luZG93X2dl dF90eXBlICgpIildCi0tCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBXaW5kb3cgOiBHTGliLk9iamVj dCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90 ZWN0ZWQgV2luZG93ICgpOwotLQkJcHVibGljIHZvaWQgYWN0aXZhdGUgKHVpbnQzMiBjdXJyZW50 X3RpbWUpOwotLQkJcHVibGljIHZvaWQgYWN0aXZhdGVfd2l0aF93b3Jrc3BhY2UgKHVpbnQzMiBj dXJyZW50X3RpbWUsIE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSk7Ci0tCQlwdWJsaWMgYm9vbCBh bGxvd3NfbW92ZSAoKTsKLS0JCXB1YmxpYyBib29sIGFsbG93c19yZXNpemUgKCk7Ci0tCQlwdWJs aWMgdm9pZCBiZWdpbl9ncmFiX29wIChNZXRhLkdyYWJPcCBvcCwgYm9vbCBmcmFtZV9hY3Rpb24s IHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIGJvb2wgY2FuX2Nsb3NlICgpOwotLQkJcHVi bGljIGJvb2wgY2FuX21heGltaXplICgpOwotLQkJcHVibGljIGJvb2wgY2FuX21pbmltaXplICgp OwotLQkJcHVibGljIGJvb2wgY2FuX3NoYWRlICgpOwotLQkJcHVibGljIHZvaWQgY2hhbmdlX3dv cmtzcGFjZSAoTWV0YS5Xb3Jrc3BhY2Ugd29ya3NwYWNlKTsKLS0JCXB1YmxpYyB2b2lkIGNoYW5n ZV93b3Jrc3BhY2VfYnlfaW5kZXggKGludCBzcGFjZV9pbmRleCwgYm9vbCBhcHBlbmQpOwotLQkJ cHVibGljIHZvaWQgY2hlY2tfYWxpdmUgKHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIE1l dGEuUmVjdGFuZ2xlIGNsaWVudF9yZWN0X3RvX2ZyYW1lX3JlY3QgKE1ldGEuUmVjdGFuZ2xlIGNs aWVudF9yZWN0KTsKLS0JCXB1YmxpYyB2b2lkIGNvbXB1dGVfZ3JvdXAgKCk7Ci0tCQlwdWJsaWMg dm9pZCBAZGVsZXRlICh1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEu V2luZG93IGZpbmRfcm9vdF9hbmNlc3RvciAoKTsKLS0JCXB1YmxpYyB2b2lkIGZvY3VzICh1aW50 MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB2b2lkIGZvcmVhY2hfYW5jZXN0b3IgKE1ldGEuV2lu ZG93Rm9yZWFjaEZ1bmMgZnVuYyk7Ci0tCQlwdWJsaWMgdm9pZCBmb3JlYWNoX3RyYW5zaWVudCAo TWV0YS5XaW5kb3dGb3JlYWNoRnVuYyBmdW5jKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBm cmFtZV9yZWN0X3RvX2NsaWVudF9yZWN0IChNZXRhLlJlY3RhbmdsZSBmcmFtZV9yZWN0KTsKLS0J CXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBnZXRfYnVmZmVyX3JlY3QgKCk7Ci0tCQlwdWJsaWMgdW5v d25lZCBzdHJpbmcgZ2V0X2NsaWVudF9tYWNoaW5lICgpOwotLQkJcHVibGljIE1ldGEuV2luZG93 Q2xpZW50VHlwZSBnZXRfY2xpZW50X3R5cGUgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBHTGliLk9i amVjdCBnZXRfY29tcG9zaXRvcl9wcml2YXRlICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5n IGdldF9kZXNjcmlwdGlvbiAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuRGlzcGxheSBnZXRf ZGlzcGxheSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENhaXJvLlJlZ2lvbj8gZ2V0X2ZyYW1lX2Jv dW5kcyAoKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBnZXRfZnJhbWVfcmVjdCAoKTsKLS0J CXB1YmxpYyBNZXRhLkZyYW1lVHlwZSBnZXRfZnJhbWVfdHlwZSAoKTsKLS0JCXB1YmxpYyB1bm93 bmVkIHN0cmluZyBnZXRfZ3RrX2FwcF9tZW51X29iamVjdF9wYXRoICgpOwotLQkJcHVibGljIHVu b3duZWQgc3RyaW5nIGdldF9ndGtfYXBwbGljYXRpb25faWQgKCk7Ci0tCQlwdWJsaWMgdW5vd25l ZCBzdHJpbmcgZ2V0X2d0a19hcHBsaWNhdGlvbl9vYmplY3RfcGF0aCAoKTsKLS0JCXB1YmxpYyB1 bm93bmVkIHN0cmluZyBnZXRfZ3RrX21lbnViYXJfb2JqZWN0X3BhdGggKCk7Ci0tCQlwdWJsaWMg dW5vd25lZCBzdHJpbmcgZ2V0X2d0a190aGVtZV92YXJpYW50ICgpOwotLQkJcHVibGljIHVub3du ZWQgc3RyaW5nIGdldF9ndGtfdW5pcXVlX2J1c19uYW1lICgpOwotLQkJcHVibGljIHVub3duZWQg c3RyaW5nIGdldF9ndGtfd2luZG93X29iamVjdF9wYXRoICgpOwotLQkJcHVibGljIGJvb2wgZ2V0 X2ljb25fZ2VvbWV0cnkgKG91dCBNZXRhLlJlY3RhbmdsZSByZWN0KTsKLS0JCXB1YmxpYyB1aW50 NjQgZ2V0X2lkICgpOwotLQkJcHVibGljIE1ldGEuU3RhY2tMYXllciBnZXRfbGF5ZXIgKCk7Ci0t CQlwdWJsaWMgTWV0YS5NYXhpbWl6ZUZsYWdzIGdldF9tYXhpbWl6ZWQgKCk7Ci0tCQlwdWJsaWMg aW50IGdldF9tb25pdG9yICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9tdXR0ZXJf aGludHMgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9waWQgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBz dHJpbmcgZ2V0X3JvbGUgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X3NhbmRib3hl ZF9hcHBfaWQgKCk7Ci0tCQlwdWJsaWMgdWludCBnZXRfc3RhYmxlX3NlcXVlbmNlICgpOwotLQkJ cHVibGljIHVub3duZWQgc3RyaW5nIGdldF9zdGFydHVwX2lkICgpOwotLQkJcHVibGljIHVub3du ZWQgTWV0YS5XaW5kb3c/IGdldF90aWxlX21hdGNoICgpOwotLQkJcHVibGljIHVub3duZWQgc3Ry aW5nIGdldF90aXRsZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV2luZG93IGdldF90cmFu c2llbnRfZm9yICgpOwotLQkJcHVibGljIHVpbnQzMiBnZXRfdXNlcl90aW1lICgpOwotLQkJcHVi bGljIE1ldGEuV2luZG93VHlwZSBnZXRfd2luZG93X3R5cGUgKCk7Ci0tCQlwdWJsaWMgdW5vd25l ZCBzdHJpbmcgZ2V0X3dtX2NsYXNzICgpOwotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF93 bV9jbGFzc19pbnN0YW5jZSAoKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBnZXRfd29ya19h cmVhX2FsbF9tb25pdG9ycyAoKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBnZXRfd29ya19h cmVhX2N1cnJlbnRfbW9uaXRvciAoKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBnZXRfd29y a19hcmVhX2Zvcl9tb25pdG9yIChpbnQgd2hpY2hfbW9uaXRvcik7Ci0tCQlwdWJsaWMgdW5vd25l ZCBNZXRhLldvcmtzcGFjZSBnZXRfd29ya3NwYWNlICgpOwotLQkJcHVibGljIFguV2luZG93IGdl dF94d2luZG93ICgpOwotLQkJcHVibGljIHZvaWQgZ3JvdXBfbGVhZGVyX2NoYW5nZWQgKCk7Ci0t CQlwdWJsaWMgYm9vbCBoYXNfZm9jdXMgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19hYm92ZSAoKTsK LS0JCXB1YmxpYyBib29sIGlzX2Fsd2F5c19vbl9hbGxfd29ya3NwYWNlcyAoKTsKLS0JCXB1Ymxp YyBib29sIGlzX2FuY2VzdG9yX29mX3RyYW5zaWVudCAoTWV0YS5XaW5kb3cgdHJhbnNpZW50KTsK LS0JCXB1YmxpYyBib29sIGlzX2F0dGFjaGVkX2RpYWxvZyAoKTsKLS0JCXB1YmxpYyBib29sIGlz X2NsaWVudF9kZWNvcmF0ZWQgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19mdWxsc2NyZWVuICgpOwot LQkJcHVibGljIGJvb2wgaXNfaGlkZGVuICgpOwotLQkJcHVibGljIGJvb2wgaXNfbW9uaXRvcl9z aXplZCAoKTsKLS0JCXB1YmxpYyBib29sIGlzX29uX2FsbF93b3Jrc3BhY2VzICgpOwotLQkJcHVi bGljIGJvb2wgaXNfb25fcHJpbWFyeV9tb25pdG9yICgpOwotLQkJcHVibGljIGJvb2wgaXNfb3Zl cnJpZGVfcmVkaXJlY3QgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19yZW1vdGUgKCk7Ci0tCQlwdWJs aWMgYm9vbCBpc19zY3JlZW5fc2l6ZWQgKCk7Ci0tCQlwdWJsaWMgYm9vbCBpc19zaGFkZWQgKCk7 Ci0tCQlwdWJsaWMgYm9vbCBpc19za2lwX3Rhc2tiYXIgKCk7Ci0tCQlwdWJsaWMgdm9pZCBraWxs ICgpOwotLQkJcHVibGljIGJvb2wgbG9jYXRlZF9vbl93b3Jrc3BhY2UgKE1ldGEuV29ya3NwYWNl IHdvcmtzcGFjZSk7Ci0tCQlwdWJsaWMgdm9pZCBsb3dlciAoKTsKLS0JCXB1YmxpYyB2b2lkIG1h a2VfYWJvdmUgKCk7Ci0tCQlwdWJsaWMgdm9pZCBtYWtlX2Z1bGxzY3JlZW4gKCk7Ci0tCQlwdWJs aWMgdm9pZCBtYXhpbWl6ZSAoTWV0YS5NYXhpbWl6ZUZsYWdzIGRpcmVjdGlvbnMpOwotLQkJcHVi bGljIHZvaWQgbWluaW1pemUgKCk7Ci0tCQlwdWJsaWMgdm9pZCBtb3ZlX2ZyYW1lIChib29sIHVz ZXJfb3AsIGludCByb290X3hfbncsIGludCByb290X3lfbncpOwotLQkJcHVibGljIHZvaWQgbW92 ZV9yZXNpemVfZnJhbWUgKGJvb2wgdXNlcl9vcCwgaW50IHJvb3RfeF9udywgaW50IHJvb3RfeV9u dywgaW50IHcsIGludCBoKTsKLS0JCXB1YmxpYyB2b2lkIG1vdmVfdG9fbW9uaXRvciAoaW50IG1v bml0b3IpOwotLQkJcHVibGljIHZvaWQgcmFpc2UgKCk7Ci0tCQlwdWJsaWMgYm9vbCByZXF1ZXN0 ZWRfYnlwYXNzX2NvbXBvc2l0b3IgKCk7Ci0tCQlwdWJsaWMgYm9vbCByZXF1ZXN0ZWRfZG9udF9i eXBhc3NfY29tcG9zaXRvciAoKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9jb21wb3NpdG9yX3ByaXZh dGUgKEdMaWIuT2JqZWN0IHByaXYpOwotLQkJcHVibGljIHZvaWQgc2V0X2RlbWFuZHNfYXR0ZW50 aW9uICgpOwotLQkJcHVibGljIHZvaWQgc2V0X2ljb25fZ2VvbWV0cnkgKE1ldGEuUmVjdGFuZ2xl PyByZWN0KTsKLS0JCXB1YmxpYyB2b2lkIHNoYWRlICh1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1 YmxpYyB2b2lkIHNob3ZlX3RpdGxlYmFyX29uc2NyZWVuICgpOwotLQkJcHVibGljIGJvb2wgc2hv d2luZ19vbl9pdHNfd29ya3NwYWNlICgpOwotLQkJcHVibGljIHZvaWQgc2h1dGRvd25fZ3JvdXAg KCk7Ci0tCQlwdWJsaWMgdm9pZCBzdGljayAoKTsKLS0JCXB1YmxpYyBib29sIHRpdGxlYmFyX2lz X29uc2NyZWVuICgpOwotLQkJcHVibGljIHZvaWQgdW5tYWtlX2Fib3ZlICgpOwotLQkJcHVibGlj IHZvaWQgdW5tYWtlX2Z1bGxzY3JlZW4gKCk7Ci0tCQlwdWJsaWMgdm9pZCB1bm1heGltaXplIChN ZXRhLk1heGltaXplRmxhZ3MgZGlyZWN0aW9ucyk7Ci0tCQlwdWJsaWMgdm9pZCB1bm1pbmltaXpl ICgpOwotLQkJcHVibGljIHZvaWQgdW5zZXRfZGVtYW5kc19hdHRlbnRpb24gKCk7Ci0tCQlwdWJs aWMgdm9pZCB1bnNoYWRlICh1aW50MzIgdGltZXN0YW1wKTsKLS0JCXB1YmxpYyB2b2lkIHVuc3Rp Y2sgKCk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIGFib3ZlIHsgZ2V0 OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIGFwcGVhcnNfZm9jdXNl ZCB7IGdldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCBkZWNvcmF0 ZWQgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgZGVtYW5k c19hdHRlbnRpb24geyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJv b2wgZnVsbHNjcmVlbiB7IGdldDsgfQotLQkJcHVibGljIHN0cmluZyBndGtfYXBwX21lbnVfb2Jq ZWN0X3BhdGggeyBnZXQ7IH0KLS0JCXB1YmxpYyBzdHJpbmcgZ3RrX2FwcGxpY2F0aW9uX2lkIHsg Z2V0OyB9Ci0tCQlwdWJsaWMgc3RyaW5nIGd0a19hcHBsaWNhdGlvbl9vYmplY3RfcGF0aCB7IGdl dDsgfQotLQkJcHVibGljIHN0cmluZyBndGtfbWVudWJhcl9vYmplY3RfcGF0aCB7IGdldDsgfQot LQkJcHVibGljIHN0cmluZyBndGtfdW5pcXVlX2J1c19uYW1lIHsgZ2V0OyB9Ci0tCQlwdWJsaWMg c3RyaW5nIGd0a193aW5kb3dfb2JqZWN0X3BhdGggeyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0 aG9kXQotLQkJcHVibGljIHZvaWQqIGljb24geyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9k XQotLQkJcHVibGljIGJvb2wgbWF4aW1pemVkX2hvcml6b250YWxseSB7IGdldDsgfQotLQkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCBtYXhpbWl6ZWRfdmVydGljYWxseSB7IGdl dDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgdm9pZCogbWluaV9pY29uIHsg Z2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIG1pbmltaXplZCB7 IGdldDsgfQotLQkJcHVibGljIHN0cmluZyBtdXR0ZXJfaGludHMgeyBnZXQ7IH0KLS0JCVtOb0Fj Y2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgb25fYWxsX3dvcmtzcGFjZXMgeyBnZXQ7IH0K LS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgcmVzaXplYWJsZSB7IGdldDsg fQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCBza2lwX3Rhc2tiYXIgeyBn ZXQ7IH0KLS0JCXB1YmxpYyBzdHJpbmcgdGl0bGUgeyBnZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0 aG9kXQotLQkJcHVibGljIGJvb2wgdXJnZW50IHsgZ2V0OyB9Ci0tCQlwdWJsaWMgdWludCB1c2Vy X3RpbWUgeyBnZXQ7IH0KLS0JCXB1YmxpYyBNZXRhLldpbmRvd1R5cGUgd2luZG93X3R5cGUgeyBn ZXQ7IH0KLS0JCXB1YmxpYyBzdHJpbmcgd21fY2xhc3MgeyBnZXQ7IH0KLS0JCXB1YmxpYyBzaWdu YWwgdm9pZCBwb3NpdGlvbl9jaGFuZ2VkICgpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHJhaXNl ZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBzaG93biAoKTsKLS0JCXB1YmxpYyBzaWduYWwg dm9pZCBzaXplX2NoYW5nZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgdW5tYW5hZ2VkICgp OwotLQkJcHVibGljIHNpZ25hbCB2b2lkIHdvcmtzcGFjZV9jaGFuZ2VkICgpOwotLQl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0 YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0 YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxt ZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3It dHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0 YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0 YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEv bWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9t ZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBl ZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1l dGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9t ZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2lu ZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1k aXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5o LG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgi LCB0eXBlX2lkID0gIm1ldGFfd2luZG93X2FjdG9yX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBh YnN0cmFjdCBjbGFzcyBXaW5kb3dBY3RvciA6IENsdXR0ZXIuQWN0b3IsIEF0ay5JbXBsZW1lbnRv ciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0dGVyLkNvbnRhaW5lciwgQ2x1dHRlci5TY3JpcHRh YmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXBy b3RlY3RlZCBXaW5kb3dBY3RvciAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV2luZG93IGdl dF9tZXRhX3dpbmRvdyAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X3Rl eHR1cmUgKCk7Ci0tCQlwdWJsaWMgWC5XaW5kb3cgZ2V0X3hfd2luZG93ICgpOwotLQkJcHVibGlj IGJvb2wgaXNfZGVzdHJveWVkICgpOwotLQkJcHVibGljIHZvaWQgc3luY192aXNpYmlsaXR5ICgp OwotLQkJcHVibGljIE1ldGEuV2luZG93IG1ldGFfd2luZG93IHsgZ2V0OyBjb25zdHJ1Y3Q7IH0K LS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIHN0cmluZyBzaGFkb3dfY2xhc3MgeyBv d25lZCBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgTWV0YS5T aGFkb3dNb2RlIHNoYWRvd19tb2RlIHsgZ2V0OyBzZXQ7IH0KLS0JCXB1YmxpYyBzaWduYWwgdm9p ZCBlZmZlY3RzX2NvbXBsZXRlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBmaXJzdF9mcmFt ZSAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgs bWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3Np dG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdz LmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1h Y3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQu aCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxt ZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0t dHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRj dXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9y LW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29u dHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5o LG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRh L21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEt dmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3Vw LmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5o LG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVm cy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxt ZXRhL3dvcmtzcGFjZS5oIiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd19ncm91cF9nZXRfdHlwZSAo KSIpXQotLQlwdWJsaWMgY2xhc3MgV2luZG93R3JvdXAgOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1w bGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIu U2NyaXB0YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSld Ci0tCQlwcm90ZWN0ZWQgV2luZG93R3JvdXAgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEv Y29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRh L2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5k LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91 cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxt ZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9t ZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5o LG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNv bnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1l dGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxt ZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRh L21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAt bm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9y LmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRh L21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21l dGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1l dGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIHJlZl9mdW5jdGlvbiA9 ICJtZXRhX3dpbmRvd19zaGFwZV9yZWYiLCB0eXBlX2lkID0gIm1ldGFfd2luZG93X3NoYXBlX2dl dF90eXBlICgpIiwgdW5yZWZfZnVuY3Rpb24gPSAibWV0YV93aW5kb3dfc2hhcGVfdW5yZWYiKV0K LS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBXaW5kb3dTaGFwZSB7Ci0tCQlbQ0NvZGUgKGhh c19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwdWJsaWMgV2luZG93U2hhcGUgKENh aXJvLlJlZ2lvbiByZWdpb24pOwotLQkJcHVibGljIGJvb2wgZXF1YWwgKE1ldGEuV2luZG93U2hh cGUgc2hhcGVfYik7Ci0tCQlwdWJsaWMgdm9pZCBnZXRfYm9yZGVycyAoaW50IGJvcmRlcl90b3As IGludCBib3JkZXJfcmlnaHQsIGludCBib3JkZXJfYm90dG9tLCBpbnQgYm9yZGVyX2xlZnQpOwot LQkJcHVibGljIHVpbnQgaGFzaCAoKTsKLS0JCXB1YmxpYyBNZXRhLldpbmRvd1NoYXBlIEByZWYg KCk7Ci0tCQlwdWJsaWMgQ2Fpcm8uUmVnaW9uIHRvX3JlZ2lvbiAoaW50IGNlbnRlcl93aWR0aCwg aW50IGNlbnRlcl9oZWlnaHQpOwotLQkJcHVibGljIHZvaWQgdW5yZWYgKCk7Ci0tCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRh L2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRh L2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1l dGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEt YmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tn cm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10 cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRh LWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRh L21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9t ZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21l dGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVk LXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0 YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21l dGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5k b3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRp c3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgs bWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIs IHR5cGVfaWQgPSAibWV0YV93b3Jrc3BhY2VfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNsYXNz IFdvcmtzcGFjZSA6IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5j dGlvbiA9IGZhbHNlKV0KLS0JCXByb3RlY3RlZCBXb3Jrc3BhY2UgKCk7Ci0tCQlwdWJsaWMgdm9p ZCBhY3RpdmF0ZSAodWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgdm9pZCBhY3RpdmF0ZV93 aXRoX2ZvY3VzIChNZXRhLldpbmRvdyBmb2N1c190aGlzLCB1aW50MzIgdGltZXN0YW1wKTsKLS0J CXB1YmxpYyB1bm93bmVkIE1ldGEuRGlzcGxheSBnZXRfZGlzcGxheSAoKTsKLS0JCXB1YmxpYyB1 bm93bmVkIE1ldGEuV29ya3NwYWNlIGdldF9uZWlnaGJvciAoTWV0YS5Nb3Rpb25EaXJlY3Rpb24g ZGlyZWN0aW9uKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBnZXRfd29ya19hcmVhX2FsbF9t b25pdG9ycyAoKTsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSBnZXRfd29ya19hcmVhX2Zvcl9t b25pdG9yIChpbnQgd2hpY2hfbW9uaXRvcik7Ci0tCQlwdWJsaWMgaW50IGluZGV4ICgpOwotLQkJ cHVibGljIEdMaWIuTGlzdDx3ZWFrIE1ldGEuV2luZG93PiBsaXN0X3dpbmRvd3MgKCk7Ci0tCQlw dWJsaWMgdm9pZCBzZXRfYnVpbHRpbl9zdHJ1dHMgKEdMaWIuU0xpc3Q8TWV0YS5TdHJ1dD8+IHN0 cnV0cyk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyB1aW50IG5fd2luZG93cyB7 IGdldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgdWludCB3b3Jrc3BhY2Vf aW5kZXggeyBnZXQ7IH0KLS0JCXB1YmxpYyBzaWduYWwgdm9pZCB3aW5kb3dfYWRkZWQgKE1ldGEu V2luZG93IG9iamVjdCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgd2luZG93X3JlbW92ZWQgKE1l dGEuV2luZG93IG9iamVjdCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5o LG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0 YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xv c2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1l dGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1p bmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRh L21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1v dGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hh ZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQt cGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9u LmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRh LXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3Nw YWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9y cy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1l dGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIHR5cGVfaWQgPSAibWV0YV93b3Jrc3BhY2Vf bWFuYWdlcl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgV29ya3NwYWNlTWFuYWdlciA6 IEdMaWIuT2JqZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNl KV0KLS0JCXByb3RlY3RlZCBXb3Jrc3BhY2VNYW5hZ2VyICgpOwotLQkJcHVibGljIHVub3duZWQg TWV0YS5Xb3Jrc3BhY2UgYXBwZW5kX25ld193b3Jrc3BhY2UgKGJvb2wgYWN0aXZhdGUsIHVpbnQz MiB0aW1lc3RhbXApOwotLQkJcHVibGljIHVub3duZWQgTWV0YS5Xb3Jrc3BhY2UgZ2V0X2FjdGl2 ZV93b3Jrc3BhY2UgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9hY3RpdmVfd29ya3NwYWNlX2luZGV4 ICgpOwotLQkJcHVibGljIGludCBnZXRfbl93b3Jrc3BhY2VzICgpOwotLQkJcHVibGljIHVub3du ZWQgTWV0YS5Xb3Jrc3BhY2UgZ2V0X3dvcmtzcGFjZV9ieV9pbmRleCAoaW50IGluZGV4KTsKLS0J CXB1YmxpYyB2b2lkIG92ZXJyaWRlX3dvcmtzcGFjZV9sYXlvdXQgKE1ldGEuRGlzcGxheUNvcm5l ciBzdGFydGluZ19jb3JuZXIsIGJvb2wgdmVydGljYWxfbGF5b3V0LCBpbnQgbl9yb3dzLCBpbnQg bl9jb2x1bW5zKTsKLS0JCXB1YmxpYyB2b2lkIHJlbW92ZV93b3Jrc3BhY2UgKE1ldGEuV29ya3Nw YWNlIHdvcmtzcGFjZSwgdWludDMyIHRpbWVzdGFtcCk7Ci0tCQlwdWJsaWMgaW50IG5fd29ya3Nw YWNlcyB7IGdldDsgfQotLQkJcHVibGljIHNpZ25hbCB2b2lkIGFjdGl2ZV93b3Jrc3BhY2VfY2hh bmdlZCAoKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBzaG93aW5nX2Rlc2t0b3BfY2hhbmdlZCAo KTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCB3b3Jrc3BhY2VfYWRkZWQgKGludCBvYmplY3QpOwot LQkJcHVibGljIHNpZ25hbCB2b2lkIHdvcmtzcGFjZV9yZW1vdmVkIChpbnQgb2JqZWN0KTsKLS0J CXB1YmxpYyBzaWduYWwgdm9pZCB3b3Jrc3BhY2Vfc3dpdGNoZWQgKGludCBvYmplY3QsIGludCBw MCwgTWV0YS5Nb3Rpb25EaXJlY3Rpb24gcDEpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2Nv bXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9n cm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAu aCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0 YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0 YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxt ZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250 ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRh L21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0 YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9t ZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5v dGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5o LG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9t ZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRh LXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRh L3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCB0eXBlX2lkID0gIm1ldGFf eDExX2Rpc3BsYXlfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNsYXNzIFgxMURpc3BsYXkgOiBH TGliLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSld Ci0tCQlwcm90ZWN0ZWQgWDExRGlzcGxheSAoKTsKLS0JCXB1YmxpYyB2b2lkIGZvY3VzX3RoZV9u b19mb2N1c193aW5kb3cgKHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIGludCBnZXRfZGFt YWdlX2V2ZW50X2Jhc2UgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9zY3JlZW5fbnVtYmVyICgpOwot LQkJcHVibGljIGludCBnZXRfc2hhcGVfZXZlbnRfYmFzZSAoKTsKLS0JCXB1YmxpYyBib29sIGhh c19zaGFwZSAoKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9jbV9zZWxlY3Rpb24gKCk7Ci0tCQlwdWJs aWMgdm9pZCBzZXRfaW5wdXRfZm9jdXNfd2luZG93IChNZXRhLldpbmRvdyB3aW5kb3csIGJvb2wg Zm9jdXNfZnJhbWUsIHVpbnQzMiB0aW1lc3RhbXApOwotLQkJcHVibGljIGJvb2wgeHdpbmRvd19p c19hX25vX2ZvY3VzX3dpbmRvdyAoWC5XaW5kb3cgeHdpbmRvdyk7Ci0tCX0KLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1v bi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3Bs YXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0 YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dy b3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQt aW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2Vy LmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUt bW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEt bGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBs dWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0 dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1 cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRh LXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2lu ZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hh cGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXku aCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90 eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIHR5cGVf Y25hbWUgPSAiTWV0YUNsb3NlRGlhbG9nSW50ZXJmYWNlIiwgdHlwZV9pZCA9ICJtZXRhX2Nsb3Nl X2RpYWxvZ19nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgaW50ZXJmYWNlIENsb3NlRGlhbG9nIDog R0xpYi5PYmplY3QgewotLQkJcHVibGljIGFic3RyYWN0IHZvaWQgZm9jdXMgKCk7Ci0tCQlwdWJs aWMgYWJzdHJhY3Qgdm9pZCBoaWRlICgpOwotLQkJcHVibGljIGJvb2wgaXNfdmlzaWJsZSAoKTsK LS0JCXB1YmxpYyBhYnN0cmFjdCB2b2lkIHNob3cgKCk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0K LS0JCXB1YmxpYyBhYnN0cmFjdCBNZXRhLldpbmRvdyB3aW5kb3cgeyBvd25lZCBnZXQ7IGNvbnN0 cnVjdDsgfQotLQkJW0hhc0VtaXR0ZXJdCi0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgcmVzcG9uc2Ug KE1ldGEuQ2xvc2VEaWFsb2dSZXNwb25zZSByZXNwb25zZSk7Ci0tCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5o LG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXku aCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1i YWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1h Z2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgs bWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9u aXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1 bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdp bi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGlu Z3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUu aCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0 YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93 LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUu aCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxt ZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBl cy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIHR5cGVfY25h bWUgPSAiTWV0YUluaGliaXRTaG9ydGN1dHNEaWFsb2dJbnRlcmZhY2UiLCB0eXBlX2lkID0gIm1l dGFfaW5oaWJpdF9zaG9ydGN1dHNfZGlhbG9nX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBpbnRl cmZhY2UgSW5oaWJpdFNob3J0Y3V0c0RpYWxvZyA6IEdMaWIuT2JqZWN0IHsKLS0JCXB1YmxpYyBh YnN0cmFjdCB2b2lkIGhpZGUgKCk7Ci0tCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzaG93ICgpOwot LQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYWJzdHJhY3QgTWV0YS5XaW5kb3cgd2lu ZG93IHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCVtIYXNFbWl0dGVyXQotLQkJcHVibGlj IHNpZ25hbCB2b2lkIHJlc3BvbnNlIChNZXRhLkluaGliaXRTaG9ydGN1dHNEaWFsb2dSZXNwb25z ZSByZXNwb25zZSk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFy cmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEv Y29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXli aW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tn cm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlh bG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0 YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0 LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEt bW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNj ZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZh Y3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVy LmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0 YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRv dy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1h bmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1l dGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2lu ZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMg c3RydWN0IEJ1dHRvbkxheW91dCB7Ci0tCQlbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0K LS0JCXB1YmxpYyB3ZWFrIE1ldGEuQnV0dG9uRnVuY3Rpb24gbGVmdF9idXR0b25zWzRdOwotLQkJ W0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldCi0tCQlwdWJsaWMgd2VhayBib29sIGxlZnRf YnV0dG9uc19oYXNfc3BhY2VyWzRdOwotLQkJW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSld Ci0tCQlwdWJsaWMgd2VhayBNZXRhLkJ1dHRvbkZ1bmN0aW9uIHJpZ2h0X2J1dHRvbnNbNF07Ci0t CQlbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0KLS0JCXB1YmxpYyB3ZWFrIGJvb2wgcmln aHRfYnV0dG9uc19oYXNfc3BhY2VyWzRdOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBv c2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91 cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxt ZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9t ZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1k bmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRh L21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0 LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21l dGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9t ZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRh LXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlm aWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1l dGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRh LXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgx MS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0 aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNl KV0KLS0JcHVibGljIHN0cnVjdCBFZGdlIHsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSByZWN0 OwotLQkJcHVibGljIE1ldGEuU2lkZSBzaWRlX3R5cGU7Ci0tCQlwdWJsaWMgTWV0YS5FZGdlVHlw ZSBlZGdlX3R5cGU7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFy cmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEv Y29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXli aW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tn cm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlh bG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0 YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0 LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEt bW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNj ZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZh Y3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVy LmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0 YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRv dy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1h bmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1l dGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2lu ZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMg c3RydWN0IEZyYW1lQm9yZGVycyB7Ci0tCQlwdWJsaWMgR3RrLkJvcmRlciB2aXNpYmxlOwotLQkJ cHVibGljIEd0ay5Cb3JkZXIgaW52aXNpYmxlOwotLQkJcHVibGljIEd0ay5Cb3JkZXIgdG90YWw7 Ci0tCQlwdWJsaWMgdm9pZCBjbGVhciAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9tZXRhLXBsdWdpbi5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1Ymxp YyBzdHJ1Y3QgUGx1Z2luSW5mbyB7Ci0tCQlwdWJsaWMgd2VhayBzdHJpbmcgbmFtZTsKLS0JCXB1 YmxpYyB3ZWFrIHN0cmluZyB2ZXJzaW9uOwotLQkJcHVibGljIHdlYWsgc3RyaW5nIGF1dGhvcjsK LS0JCXB1YmxpYyB3ZWFrIHN0cmluZyBsaWNlbnNlOwotLQkJcHVibGljIHdlYWsgc3RyaW5nIGRl c2NyaXB0aW9uOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJp ZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2Nv bXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5Ymlu ZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dy b3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxv Zy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEt ZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1z aG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1v bml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vz cy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0 b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5o LG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEv bWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ct Z3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5h Z2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRh L3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRv dy5oLG1ldGEvd29ya3NwYWNlLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIHN0 cnVjdCBQbHVnaW5WZXJzaW9uIHsKLS0JCXB1YmxpYyB1aW50IHZlcnNpb25fbWFqb3I7Ci0tCQlw dWJsaWMgdWludCB2ZXJzaW9uX21pbm9yOwotLQkJcHVibGljIHVpbnQgdmVyc2lvbl9taWNybzsK LS0JCXB1YmxpYyB1aW50IHZlcnNpb25fYXBpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2Nv bXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9n cm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAu aCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0 YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0 YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxt ZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250 ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRh L21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0 YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9t ZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5v dGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5o LG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9t ZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRh LXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRh L3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCB0eXBlX2lkID0gIm1ldGFf cmVjdGFuZ2xlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBzdHJ1Y3QgUmVjdGFuZ2xlIHsKLS0J CXB1YmxpYyBpbnQgeDsKLS0JCXB1YmxpYyBpbnQgeTsKLS0JCXB1YmxpYyBpbnQgd2lkdGg7Ci0t CQlwdWJsaWMgaW50IGhlaWdodDsKLS0JCXB1YmxpYyBpbnQgYXJlYSAoKTsKLS0JCXB1YmxpYyBi b29sIGNvbnRhaW5zX3JlY3QgKE1ldGEuUmVjdGFuZ2xlIGlubmVyX3JlY3QpOwotLQkJcHVibGlj IE1ldGEuUmVjdGFuZ2xlPyBjb3B5ICgpOwotLQkJcHVibGljIGJvb2wgY291bGRfZml0X3JlY3Qg KE1ldGEuUmVjdGFuZ2xlIGlubmVyX3JlY3QpOwotLQkJcHVibGljIGJvb2wgZXF1YWwgKE1ldGEu UmVjdGFuZ2xlIHNyYzIpOwotLQkJcHVibGljIHZvaWQgZnJlZSAoKTsKLS0JCXB1YmxpYyBib29s IGhvcml6X292ZXJsYXAgKE1ldGEuUmVjdGFuZ2xlIHJlY3QyKTsKLS0JCXB1YmxpYyBib29sIGlu dGVyc2VjdCAoTWV0YS5SZWN0YW5nbGUgc3JjMiwgb3V0IE1ldGEuUmVjdGFuZ2xlIGRlc3QpOwot LQkJcHVibGljIGJvb2wgb3ZlcmxhcCAoTWV0YS5SZWN0YW5nbGUgcmVjdDIpOwotLQkJcHVibGlj IE1ldGEuUmVjdGFuZ2xlIHVuaW9uIChNZXRhLlJlY3RhbmdsZSByZWN0Mik7Ci0tCQlwdWJsaWMg Ym9vbCB2ZXJ0X292ZXJsYXAgKE1ldGEuUmVjdGFuZ2xlIHJlY3QyKTsKLS0JfQotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29t bW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlz cGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9t ZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNr ZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRs ZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0 YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEt cGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1z ZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4 dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21l dGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13 aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1z aGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxh eS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRh L3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgaGFz X3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBzdHJ1Y3QgU2hhZG93UGFyYW1zIHsKLS0JCXB1 YmxpYyBpbnQgcmFkaXVzOwotLQkJcHVibGljIGludCB0b3BfZmFkZTsKLS0JCXB1YmxpYyBpbnQg eF9vZmZzZXQ7Ci0tCQlwdWJsaWMgaW50IHlfb2Zmc2V0OwotLQkJcHVibGljIHVpbnQ4IG9wYWNp dHk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1l dGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRv ci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5o LG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0 b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0 YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5 cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0 cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1t YW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRy b2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxt ZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9t ZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZl cnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5o LG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxt ZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMu aCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0 YS93b3Jrc3BhY2UuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMgc3RydWN0IFN0 cnV0IHsKLS0JCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSByZWN0OwotLQkJcHVibGljIE1ldGEuU2lk ZSBzaWRlOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIu aCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBv c2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGlu Z3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5k LWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5o LG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51 bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9y dGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0 b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1j b250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5 LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1l dGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0 YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3Jv dXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2Vy LmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3By ZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5o LG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfQkFSUklFUl9ESVJFQ1RJT05fIiwg dHlwZV9pZCA9ICJtZXRhX2JhcnJpZXJfZGlyZWN0aW9uX2dldF90eXBlICgpIildCi0tCVtGbGFn c10KLS0JcHVibGljIGVudW0gQmFycmllckRpcmVjdGlvbiB7Ci0tCQlQT1NJVElWRV9YLAotLQkJ UE9TSVRJVkVfWSwKLS0JCU5FR0FUSVZFX1gsCi0tCQlORUdBVElWRV9ZCi0tCX0KLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2Nv bW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rp c3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEv bWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFj a2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFj a2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlk bGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21l dGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRh LXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEt c2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRl eHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9t ZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEt d2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ct c2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3Bs YXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0 YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNw cmVmaXggPSAiTUVUQV9CVVRUT05fRlVOQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX2J1dHRvbl9m dW5jdGlvbl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBCdXR0b25GdW5jdGlvbiB7Ci0t CQlNRU5VLAotLQkJTUlOSU1JWkUsCi0tCQlNQVhJTUlaRSwKLS0JCUNMT1NFLAotLQkJTEFTVAot LQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2Jv eGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0 dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRh L21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0 YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5o LG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlh bG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdl ci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVy LmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9t ZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1z dGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9u LmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRh L21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9t ZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0 YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29y a3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfQ0xPU0VfRElBTE9HX1JFU1BPTlNFXyIsIHR5cGVf aWQgPSAibWV0YV9jbG9zZV9kaWFsb2dfcmVzcG9uc2VfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGlj IGVudW0gQ2xvc2VEaWFsb2dSZXNwb25zZSB7Ci0tCQlXQUlULAotLQkJRk9SQ0VfQ0xPU0UKLS0J fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hl cy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRl ci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9t YWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEt Y3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxt ZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxv Zy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIu aCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5o LG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0 YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3Rh Z2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5o LG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9t ZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0 YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEv dGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtz cGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX0NPTVBfRUZGRUNUXyIsIHR5cGVfaWQgPSAibWV0YV9j b21wX2VmZmVjdF9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBDb21wRWZmZWN0IHsKLS0J CUNSRUFURSwKLS0JCVVOTUlOSU1JWkUsCi0tCQlERVNUUk9ZLAotLQkJTUlOSU1JWkUsCi0tCQlO T05FCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1l dGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRv ci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5o LG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0 b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0 YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5 cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0 cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1t YW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRy b2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxt ZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9t ZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZl cnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5o LG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxt ZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMu aCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0 YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9DVVJTT1JfIiwgdHlwZV9pZCA9ICJtZXRh X2N1cnNvcl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBDdXJzb3IgewotLQkJTk9ORSwK LS0JCURFRkFVTFQsCi0tCQlOT1JUSF9SRVNJWkUsCi0tCQlTT1VUSF9SRVNJWkUsCi0tCQlXRVNU X1JFU0laRSwKLS0JCUVBU1RfUkVTSVpFLAotLQkJU0VfUkVTSVpFLAotLQkJU1dfUkVTSVpFLAot LQkJTkVfUkVTSVpFLAotLQkJTldfUkVTSVpFLAotLQkJTU9WRV9PUl9SRVNJWkVfV0lORE9XLAot LQkJQlVTWSwKLS0JCURORF9JTl9EUkFHLAotLQkJRE5EX01PVkUsCi0tCQlETkRfQ09QWSwKLS0J CURORF9VTlNVUFBPUlRFRF9UQVJHRVQsCi0tCQlQT0lOVElOR19IQU5ELAotLQkJQ1JPU1NIQUlS LAotLQkJSUJFQU0sCi0tCQlMQVNUCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRv ci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgs bWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9t ZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEt Y2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5o LG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0 YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxt ZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1y ZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEt c2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291 bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0 aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9t ZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29y a3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVy cm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5o LG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9ERUJVR18i LCB0eXBlX2lkID0gIm1ldGFfZGVidWdfdG9waWNfZ2V0X3R5cGUgKCkiKV0KLS0JW0ZsYWdzXQot LQlwdWJsaWMgZW51bSBEZWJ1Z1RvcGljIHsKLS0JCVZFUkJPU0UsCi0tCQlGT0NVUywKLS0JCVdP UktBUkVBLAotLQkJU1RBQ0ssCi0tCQlUSEVNRVMsCi0tCQlTTSwKLS0JCUVWRU5UUywKLS0JCVdJ TkRPV19TVEFURSwKLS0JCVdJTkRPV19PUFMsCi0tCQlHRU9NRVRSWSwKLS0JCVBMQUNFTUVOVCwK LS0JCVBJTkcsCi0tCQlYSU5FUkFNQSwKLS0JCUtFWUJJTkRJTkdTLAotLQkJU1lOQywKLS0JCUVS Uk9SUywKLS0JCVNUQVJUVVAsCi0tCQlQUkVGUywKLS0JCUdST1VQUywKLS0JCVJFU0laSU5HLAot LQkJU0hBUEVTLAotLQkJQ09NUE9TSVRPUiwKLS0JCUVER0VfUkVTSVNUQU5DRSwKLS0JCURCVVMK LS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9i b3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11 dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0 YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRh L21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21l dGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMu aCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRp YWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFn ZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxl ci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEv bWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEt c3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lv bi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0 YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEv bWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1l dGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dv cmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX0RJUkVDVElPTl8iLCB0eXBlX2lkID0gIm1ldGFf ZGlyZWN0aW9uX2dldF90eXBlICgpIildCi0tCVtGbGFnc10KLS0JcHVibGljIGVudW0gRGlyZWN0 aW9uIHsKLS0JCUxFRlQsCi0tCQlSSUdIVCwKLS0JCVRPUCwKLS0JCUJPVFRPTSwKLS0JCVVQLAot LQkJRE9XTiwKLS0JCUhPUklaT05UQUwsCi0tCQlWRVJUSUNBTAotLQl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24u aCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5 LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEt YmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWlt YWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5o LG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1v bml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxh dW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVn aW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRp bmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJl LmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1z dGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRv dy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBl LmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5Lmgs bWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlw ZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4 ID0gIk1FVEFfRElTUExBWV8iLCB0eXBlX2lkID0gIm1ldGFfZGlzcGxheV9jb3JuZXJfZ2V0X3R5 cGUgKCkiKV0KLS0JcHVibGljIGVudW0gRGlzcGxheUNvcm5lciB7Ci0tCQlUT1BMRUZULAotLQkJ VE9QUklHSFQsCi0tCQlCT1RUT01MRUZULAotLQkJQk9UVE9NUklHSFQKLS0JfQotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29t bW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlz cGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9t ZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNr ZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRs ZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0 YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEt cGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1z ZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4 dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21l dGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13 aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1z aGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxh eS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRh L3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3By ZWZpeCA9ICJNRVRBX0RJU1BMQVlfIiwgdHlwZV9pZCA9ICJtZXRhX2Rpc3BsYXlfZGlyZWN0aW9u X2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIERpc3BsYXlEaXJlY3Rpb24gewotLQkJVVAs Ci0tCQlET1dOLAotLQkJTEVGVCwKLS0JCVJJR0hUCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEv Y29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRh L2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5k LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91 cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxt ZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9t ZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5o LG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNv bnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1l dGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxt ZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRh L21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAt bm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9y LmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRh L21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21l dGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1l dGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVU QV9FREdFXyIsIHR5cGVfaWQgPSAibWV0YV9lZGdlX3R5cGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVi bGljIGVudW0gRWRnZVR5cGUgewotLQkJV0lORE9XLAotLQkJTU9OSVRPUiwKLS0JCVNDUkVFTgot LQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2Jv eGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0 dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRh L21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0 YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5o LG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlh bG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdl ci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVy LmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9t ZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1z dGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9u LmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRh L21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9t ZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0 YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29y a3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfRVhJVF8iLCB0eXBlX2lkID0gIm1ldGFfZXhpdF9j b2RlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIEV4aXRDb2RlIHsKLS0JCVNVQ0NFU1Ms Ci0tCQlFUlJPUgotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJp ZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2Nv bXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5Ymlu ZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dy b3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxv Zy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEt ZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1z aG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1v bml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vz cy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0 b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5o LG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEv bWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ct Z3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5h Z2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRh L3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRv dy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfRlJBTUVfIiwgdHlwZV9pZCA9 ICJtZXRhX2ZyYW1lX2ZsYWdzX2dldF90eXBlICgpIildCi0tCVtGbGFnc10KLS0JcHVibGljIGVu dW0gRnJhbWVGbGFncyB7Ci0tCQlBTExPV1NfREVMRVRFLAotLQkJQUxMT1dTX01FTlUsCi0tCQlB TExPV1NfTUlOSU1JWkUsCi0tCQlBTExPV1NfTUFYSU1JWkUsCi0tCQlBTExPV1NfVkVSVElDQUxf UkVTSVpFLAotLQkJQUxMT1dTX0hPUklaT05UQUxfUkVTSVpFLAotLQkJSEFTX0ZPQ1VTLAotLQkJ U0hBREVELAotLQkJU1RVQ0ssCi0tCQlNQVhJTUlaRUQsCi0tCQlBTExPV1NfU0hBREUsCi0tCQlB TExPV1NfTU9WRSwKLS0JCUZVTExTQ1JFRU4sCi0tCQlJU19GTEFTSElORywKLS0JCUFCT1ZFLAot LQkJVElMRURfTEVGVCwKLS0JCVRJTEVEX1JJR0hUCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEv Y29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRh L2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5k LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91 cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxt ZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9t ZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5o LG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNv bnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1l dGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxt ZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRh L21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAt bm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9y LmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRh L21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21l dGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1l dGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVU QV9GUkFNRV9UWVBFXyIsIHR5cGVfaWQgPSAibWV0YV9mcmFtZV90eXBlX2dldF90eXBlICgpIild Ci0tCXB1YmxpYyBlbnVtIEZyYW1lVHlwZSB7Ci0tCQlOT1JNQUwsCi0tCQlESUFMT0csCi0tCQlN T0RBTF9ESUFMT0csCi0tCQlVVElMSVRZLAotLQkJTUVOVSwKLS0JCUJPUkRFUiwKLS0JCUFUVEFD SEVELAotLQkJTEFTVDsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyB0b19zdHJpbmcgKCk7Ci0t CX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94 ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0 ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEv bWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxt ZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9t ZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRh LWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgs bWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFs b2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2Vy LmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIu aCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21l dGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0 YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24u aCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEv bWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21l dGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRh L3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jr c3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9HUkFCX09QXyIsIHR5cGVfaWQgPSAibWV0YV9ncmFi X29wX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIEdyYWJPcCB7Ci0tCQlOT05FLAotLQkJ V0lORE9XX0JBU0UsCi0tCQlDT01QT1NJVE9SLAotLQkJV0FZTEFORF9QT1BVUCwKLS0JCUZSQU1F X0JVVFRPTiwKLS0JCU1PVklORywKLS0JCVJFU0laSU5HX05XLAotLQkJUkVTSVpJTkdfTiwKLS0J CVJFU0laSU5HX05FLAotLQkJUkVTSVpJTkdfRSwKLS0JCVJFU0laSU5HX1NXLAotLQkJUkVTSVpJ TkdfUywKLS0JCVJFU0laSU5HX1NFLAotLQkJUkVTSVpJTkdfVywKLS0JCUtFWUJPQVJEX01PVklO RywKLS0JCUtFWUJPQVJEX1JFU0laSU5HX1VOS05PV04sCi0tCQlLRVlCT0FSRF9SRVNJWklOR19O VywKLS0JCUtFWUJPQVJEX1JFU0laSU5HX04sCi0tCQlLRVlCT0FSRF9SRVNJWklOR19ORSwKLS0J CUtFWUJPQVJEX1JFU0laSU5HX0UsCi0tCQlLRVlCT0FSRF9SRVNJWklOR19TVywKLS0JCUtFWUJP QVJEX1JFU0laSU5HX1MsCi0tCQlLRVlCT0FSRF9SRVNJWklOR19TRSwKLS0JCUtFWUJPQVJEX1JF U0laSU5HX1cKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVy LmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21w b3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRp bmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cu aCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVu dW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hv cnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25p dG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3Mt Y29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9y eS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxt ZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21l dGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdy b3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdl ci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9w cmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cu aCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX0lOSElCSVRfU0hPUlRDVVRTX0RJ QUxPR19SRVNQT05TRV8iLCB0eXBlX2lkID0gIm1ldGFfaW5oaWJpdF9zaG9ydGN1dHNfZGlhbG9n X3Jlc3BvbnNlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIEluaGliaXRTaG9ydGN1dHNE aWFsb2dSZXNwb25zZSB7Ci0tCQlBTExPVywKLS0JCURFTlkKLS0JfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgs bWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5o LG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJh Y2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5k LWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFn ZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxt ZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25p dG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVu Y2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2lu LmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5n cy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5o LG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3Rh cnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ct YWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5o LG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1l dGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVz LmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9 ICJNRVRBX0tFWUJJTkRJTkdfQUNUSU9OXyIsIHR5cGVfaWQgPSAibWV0YV9rZXlfYmluZGluZ19h Y3Rpb25fZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gS2V5QmluZGluZ0FjdGlvbiB7Ci0t CQlOT05FLAotLQkJV09SS1NQQUNFXzEsCi0tCQlXT1JLU1BBQ0VfMiwKLS0JCVdPUktTUEFDRV8z LAotLQkJV09SS1NQQUNFXzQsCi0tCQlXT1JLU1BBQ0VfNSwKLS0JCVdPUktTUEFDRV82LAotLQkJ V09SS1NQQUNFXzcsCi0tCQlXT1JLU1BBQ0VfOCwKLS0JCVdPUktTUEFDRV85LAotLQkJV09SS1NQ QUNFXzEwLAotLQkJV09SS1NQQUNFXzExLAotLQkJV09SS1NQQUNFXzEyLAotLQkJV09SS1NQQUNF X0xFRlQsCi0tCQlXT1JLU1BBQ0VfUklHSFQsCi0tCQlXT1JLU1BBQ0VfVVAsCi0tCQlXT1JLU1BB Q0VfRE9XTiwKLS0JCVdPUktTUEFDRV9MQVNULAotLQkJU1dJVENIX0FQUExJQ0FUSU9OUywKLS0J CVNXSVRDSF9BUFBMSUNBVElPTlNfQkFDS1dBUkQsCi0tCQlTV0lUQ0hfR1JPVVAsCi0tCQlTV0lU Q0hfR1JPVVBfQkFDS1dBUkQsCi0tCQlTV0lUQ0hfV0lORE9XUywKLS0JCVNXSVRDSF9XSU5ET1dT X0JBQ0tXQVJELAotLQkJU1dJVENIX1BBTkVMUywKLS0JCVNXSVRDSF9QQU5FTFNfQkFDS1dBUkQs Ci0tCQlDWUNMRV9HUk9VUCwKLS0JCUNZQ0xFX0dST1VQX0JBQ0tXQVJELAotLQkJQ1lDTEVfV0lO RE9XUywKLS0JCUNZQ0xFX1dJTkRPV1NfQkFDS1dBUkQsCi0tCQlDWUNMRV9QQU5FTFMsCi0tCQlD WUNMRV9QQU5FTFNfQkFDS1dBUkQsCi0tCQlTSE9XX0RFU0tUT1AsCi0tCQlQQU5FTF9NQUlOX01F TlUsCi0tCQlQQU5FTF9SVU5fRElBTE9HLAotLQkJVE9HR0xFX1JFQ09SRElORywKLS0JCVNFVF9T UEVXX01BUkssCi0tCQlBQ1RJVkFURV9XSU5ET1dfTUVOVSwKLS0JCVRPR0dMRV9GVUxMU0NSRUVO LAotLQkJVE9HR0xFX01BWElNSVpFRCwKLS0JCVRPR0dMRV9USUxFRF9MRUZULAotLQkJVE9HR0xF X1RJTEVEX1JJR0hULAotLQkJVE9HR0xFX0FCT1ZFLAotLQkJTUFYSU1JWkUsCi0tCQlVTk1BWElN SVpFLAotLQkJVE9HR0xFX1NIQURFRCwKLS0JCU1JTklNSVpFLAotLQkJQ0xPU0UsCi0tCQlCRUdJ Tl9NT1ZFLAotLQkJQkVHSU5fUkVTSVpFLAotLQkJVE9HR0xFX09OX0FMTF9XT1JLU1BBQ0VTLAot LQkJTU9WRV9UT19XT1JLU1BBQ0VfMSwKLS0JCU1PVkVfVE9fV09SS1NQQUNFXzIsCi0tCQlNT1ZF X1RPX1dPUktTUEFDRV8zLAotLQkJTU9WRV9UT19XT1JLU1BBQ0VfNCwKLS0JCU1PVkVfVE9fV09S S1NQQUNFXzUsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV82LAotLQkJTU9WRV9UT19XT1JLU1BBQ0Vf NywKLS0JCU1PVkVfVE9fV09SS1NQQUNFXzgsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV85LAotLQkJ TU9WRV9UT19XT1JLU1BBQ0VfMTAsCi0tCQlNT1ZFX1RPX1dPUktTUEFDRV8xMSwKLS0JCU1PVkVf VE9fV09SS1NQQUNFXzEyLAotLQkJTU9WRV9UT19XT1JLU1BBQ0VfTEVGVCwKLS0JCU1PVkVfVE9f V09SS1NQQUNFX1JJR0hULAotLQkJTU9WRV9UT19XT1JLU1BBQ0VfVVAsCi0tCQlNT1ZFX1RPX1dP UktTUEFDRV9ET1dOLAotLQkJTU9WRV9UT19XT1JLU1BBQ0VfTEFTVCwKLS0JCU1PVkVfVE9fTU9O SVRPUl9MRUZULAotLQkJTU9WRV9UT19NT05JVE9SX1JJR0hULAotLQkJTU9WRV9UT19NT05JVE9S X1VQLAotLQkJTU9WRV9UT19NT05JVE9SX0RPV04sCi0tCQlSQUlTRV9PUl9MT1dFUiwKLS0JCVJB SVNFLAotLQkJTE9XRVIsCi0tCQlNQVhJTUlaRV9WRVJUSUNBTExZLAotLQkJTUFYSU1JWkVfSE9S SVpPTlRBTExZLAotLQkJTU9WRV9UT19DT1JORVJfTlcsCi0tCQlNT1ZFX1RPX0NPUk5FUl9ORSwK LS0JCU1PVkVfVE9fQ09STkVSX1NXLAotLQkJTU9WRV9UT19DT1JORVJfU0UsCi0tCQlNT1ZFX1RP X1NJREVfTiwKLS0JCU1PVkVfVE9fU0lERV9TLAotLQkJTU9WRV9UT19TSURFX0UsCi0tCQlNT1ZF X1RPX1NJREVfVywKLS0JCU1PVkVfVE9fQ0VOVEVSLAotLQkJT1ZFUkxBWV9LRVksCi0tCQlJU09f TkVYVF9HUk9VUCwKLS0JCUFMV0FZU19PTl9UT1AsCi0tCQlTV0lUQ0hfTU9OSVRPUiwKLS0JCVJP VEFURV9NT05JVE9SLAotLQkJTEFTVAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0 b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5o LG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRh L21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRh LWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQu aCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21l dGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0Lmgs bWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEt cmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRh LXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNv dW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNh dGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEv bWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdv cmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1l cnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwu aCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfS0VZX0JJ TkRJTkdfIiwgdHlwZV9pZCA9ICJtZXRhX2tleV9iaW5kaW5nX2ZsYWdzX2dldF90eXBlICgpIild Ci0tCVtGbGFnc10KLS0JcHVibGljIGVudW0gS2V5QmluZGluZ0ZsYWdzIHsKLS0JCU5PTkUsCi0t CQlQRVJfV0lORE9XLAotLQkJQlVJTFRJTiwKLS0JCUlTX1JFVkVSU0VELAotLQkJTk9OX01BU0tB QkxFLAotLQkJSUdOT1JFX0FVVE9SRVBFQVQKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21w b3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3Jv dXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxt ZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgs bWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEv bWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEt ZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0 YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4 dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9t ZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEv bWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0 YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3Rp ZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxt ZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0 YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14 MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91 dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX0xB VEVSXyIsIHR5cGVfaWQgPSAibWV0YV9sYXRlcl90eXBlX2dldF90eXBlICgpIildCi0tCXB1Ymxp YyBlbnVtIExhdGVyVHlwZSB7Ci0tCQlSRVNJWkUsCi0tCQlDQUxDX1NIT1dJTkcsCi0tCQlDSEVD S19GVUxMU0NSRUVOLAotLQkJU1lOQ19TVEFDSywKLS0JCUJFRk9SRV9SRURSQVcsCi0tCQlJRExF Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEv Ym94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1t dXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1l dGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3Iu aCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9t ZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVz LmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1k aWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5h Z2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xs ZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRh L21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRh LXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNp b24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1l dGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRh L21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxt ZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93 b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9MT0NBTEVfRElSRUNUSU9OXyIsIHR5cGVfaWQg PSAibWV0YV9sb2NhbGVfZGlyZWN0aW9uX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIExv Y2FsZURpcmVjdGlvbiB7Ci0tCQlMVFIsCi0tCQlSVEwKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0 YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1l dGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tl bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdy b3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5o LG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRh L21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9y LmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gt Y29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgs bWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5o LG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1l dGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1 cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0 b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1l dGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEv bWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgs bWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJN RVRBX01BWElNSVpFXyIsIHR5cGVfaWQgPSAibWV0YV9tYXhpbWl6ZV9mbGFnc19nZXRfdHlwZSAo KSIpXQotLQlbRmxhZ3NdCi0tCXB1YmxpYyBlbnVtIE1heGltaXplRmxhZ3MgewotLQkJSE9SSVpP TlRBTCwKLS0JCVZFUlRJQ0FMLAotLQkJQk9USAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2Nv bXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9n cm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAu aCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0 YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0 YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxt ZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250 ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRh L21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0 YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9t ZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5v dGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5o LG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9t ZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRh LXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRh L3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFf TU9EQUxfIiwgdHlwZV9pZCA9ICJtZXRhX21vZGFsX29wdGlvbnNfZ2V0X3R5cGUgKCkiKV0KLS0J W0ZsYWdzXQotLQlwdWJsaWMgZW51bSBNb2RhbE9wdGlvbnMgewotLQkJUE9JTlRFUl9BTFJFQURZ X0dSQUJCRUQsCi0tCQlLRVlCT0FSRF9BTFJFQURZX0dSQUJCRUQKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9u LmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxh eS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRh LWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1p bWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIu aCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1t b25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1s YXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1 Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0 aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVy ZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEt c3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5k b3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFw ZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5o LG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5 cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZp eCA9ICJNRVRBX01PTklUT1JfU1dJVENIX0NPTkZJR18iLCB0eXBlX2lkID0gIm1ldGFfbW9uaXRv cl9zd2l0Y2hfY29uZmlnX3R5cGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gTW9uaXRv clN3aXRjaENvbmZpZ1R5cGUgewotLQkJQUxMX01JUlJPUiwKLS0JCUFMTF9MSU5FQVIsCi0tCQlF WFRFUk5BTCwKLS0JCUJVSUxUSU4sCi0tCQlVTktOT1dOCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1l dGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxt ZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNr ZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1n cm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2Uu aCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0 YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRv ci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNo LWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5o LG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3Mu aCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxt ZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0 dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFj dG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxt ZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRh L21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5o LG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAi TUVUQV9NT1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX21vdGlvbl9kaXJlY3Rpb25fZ2V0X3R5cGUg KCkiKV0KLS0JcHVibGljIGVudW0gTW90aW9uRGlyZWN0aW9uIHsKLS0JCVVQLAotLQkJRE9XTiwK LS0JCUxFRlQsCi0tCQlSSUdIVCwKLS0JCVVQX0xFRlQsCi0tCQlVUF9SSUdIVCwKLS0JCURPV05f TEVGVCwKLS0JCURPV05fUklHSFQKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9y LmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxt ZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9t ZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1j bG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgs bWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRh LWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1l dGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJl bW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1z aGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3Vu ZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRp b24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21l dGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jr c3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJy b3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgs bWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX1BBRF9BQ1RJ T05fIiwgdHlwZV9pZCA9ICJtZXRhX3BhZF9hY3Rpb25fdHlwZV9nZXRfdHlwZSAoKSIpXQotLQlw dWJsaWMgZW51bSBQYWRBY3Rpb25UeXBlIHsKLS0JCUJVVFRPTiwKLS0JCVJJTkcsCi0tCQlTVFJJ UAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRh L2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3It bXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxt ZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9y LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEv bWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBl cy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMt ZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFu YWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9s bGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0 YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0 YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJz aW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxt ZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0 YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgs bWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEv d29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfUFJFRl8iLCB0eXBlX2lkID0gIm1ldGFfcHJl ZmVyZW5jZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBQcmVmZXJlbmNlIHsKLS0JCU1P VVNFX0JVVFRPTl9NT0RTLAotLQkJRk9DVVNfTU9ERSwKLS0JCUZPQ1VTX05FV19XSU5ET1dTLAot LQkJQVRUQUNIX01PREFMX0RJQUxPR1MsCi0tCQlSQUlTRV9PTl9DTElDSywKLS0JCUFDVElPTl9E T1VCTEVfQ0xJQ0tfVElUTEVCQVIsCi0tCQlBQ1RJT05fTUlERExFX0NMSUNLX1RJVExFQkFSLAot LQkJQUNUSU9OX1JJR0hUX0NMSUNLX1RJVExFQkFSLAotLQkJQVVUT19SQUlTRSwKLS0JCUFVVE9f UkFJU0VfREVMQVksCi0tCQlGT0NVU19DSEFOR0VfT05fUE9JTlRFUl9SRVNULAotLQkJVElUTEVC QVJfRk9OVCwKLS0JCU5VTV9XT1JLU1BBQ0VTLAotLQkJRFlOQU1JQ19XT1JLU1BBQ0VTLAotLQkJ S0VZQklORElOR1MsCi0tCQlESVNBQkxFX1dPUktBUk9VTkRTLAotLQkJQlVUVE9OX0xBWU9VVCwK LS0JCVdPUktTUEFDRV9OQU1FUywKLS0JCVZJU1VBTF9CRUxMLAotLQkJQVVESUJMRV9CRUxMLAot LQkJVklTVUFMX0JFTExfVFlQRSwKLS0JCUdOT01FX0FDQ0VTU0lCSUxJVFksCi0tCQlHTk9NRV9B TklNQVRJT05TLAotLQkJQ1VSU09SX1RIRU1FLAotLQkJQ1VSU09SX1NJWkUsCi0tCQlSRVNJWkVf V0lUSF9SSUdIVF9CVVRUT04sCi0tCQlFREdFX1RJTElORywKLS0JCUZPUkNFX0ZVTExTQ1JFRU4s Ci0tCQlXT1JLU1BBQ0VTX09OTFlfT05fUFJJTUFSWSwKLS0JCURSQUdHQUJMRV9CT1JERVJfV0lE VEgsCi0tCQlBVVRPX01BWElNSVpFLAotLQkJQ0VOVEVSX05FV19XSU5ET1dTLAotLQkJRFJBR19U SFJFU0hPTEQ7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgdG9fc3RyaW5nICgpOwotLQl9Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgs bWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgs bWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4u aCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9t ZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1i YWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJz b3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEv bWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgs bWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1l dGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0 YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNo YXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5o LG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0 YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEt d2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgx MS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVt ZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNl LmgiLCBjcHJlZml4ID0gIk1FVEFfU0hBRE9XX01PREVfIiwgdHlwZV9pZCA9ICJtZXRhX3NoYWRv d19tb2RlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBlbnVtIFNoYWRvd01vZGUgewotLQkJQVVU TywKLS0JCUZPUkNFRF9PRkYsCi0tCQlGT1JDRURfT04KLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0 YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1l dGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tl bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdy b3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5o LG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRh L21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9y LmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gt Y29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgs bWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5o LG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1l dGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1 cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0 b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1l dGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEv bWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgs bWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJN RVRBX1NJREVfIiwgdHlwZV9pZCA9ICJtZXRhX3NpZGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGlj IGVudW0gU2lkZSB7Ci0tCQlMRUZULAotLQkJUklHSFQsCi0tCQlUT1AsCi0tCQlCT1RUT00KLS0J fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hl cy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRl ci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9t YWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEt Y3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxt ZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxv Zy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIu aCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5o LG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0 YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3Rh Z2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5o LG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9t ZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0 YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEv dGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtz cGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX1NJWkVfQ0hBTkdFXyIsIHR5cGVfaWQgPSAibWV0YV9z aXplX2NoYW5nZV9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBTaXplQ2hhbmdlIHsKLS0J CU1BWElNSVpFLAotLQkJVU5NQVhJTUlaRSwKLS0JCUZVTExTQ1JFRU4sCi0tCQlVTkZVTExTQ1JF RU4KLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0 YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9y LW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgs bWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rv ci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxt ZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRh L21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlw ZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRz LWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1h bmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJv bGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1l dGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21l dGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVy c2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgs bWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1l dGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5o LG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRh L3dvcmtzcGFjZS5oIiwgY3ByZWZpeCA9ICJNRVRBX0xBWUVSXyIsIHR5cGVfaWQgPSAibWV0YV9z dGFja19sYXllcl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBTdGFja0xheWVyIHsKLS0J CURFU0tUT1AsCi0tCQlCT1RUT00sCi0tCQlOT1JNQUwsCi0tCQlUT1AsCi0tCQlET0NLLAotLQkJ T1ZFUlJJREVfUkVESVJFQ1QsCi0tCQlMQVNUCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29t cG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dy b3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRh L21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRh LWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1l dGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRl eHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEv bWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRh L21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21l dGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90 aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgs bWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21l dGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEt eDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEv dXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9U QUJfTElTVF8iLCB0eXBlX2lkID0gIm1ldGFfdGFiX2xpc3RfZ2V0X3R5cGUgKCkiKV0KLS0JcHVi bGljIGVudW0gVGFiTGlzdCB7Ci0tCQlOT1JNQUwsCi0tCQlET0NLUywKLS0JCUdST1VQLAotLQkJ Tk9STUFMX0FMTAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJp ZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2Nv bXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5Ymlu ZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dy b3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxv Zy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEt ZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1z aG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1v bml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vz cy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0 b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5o LG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEv bWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ct Z3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5h Z2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRh L3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRv dy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0gIk1FVEFfVEFCX1NIT1dfIiwgdHlwZV9p ZCA9ICJtZXRhX3RhYl9zaG93X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gVGFi U2hvd1R5cGUgewotLQkJSUNPTiwKLS0JCUlOU1RBTlRMWQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxt ZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5Lmgs bWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFj a2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQt Z3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdl LmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1l dGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0 b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5j aC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4u aCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdz LmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgs bWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFy dHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1h Y3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgs bWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0 YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMu aCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0g Ik1FVEFfVklSVFVBTF8iLCB0eXBlX2lkID0gIm1ldGFfdmlydHVhbF9tb2RpZmllcl9nZXRfdHlw ZSAoKSIpXQotLQlbRmxhZ3NdCi0tCXB1YmxpYyBlbnVtIFZpcnR1YWxNb2RpZmllciB7Ci0tCQlT SElGVF9NQVNLLAotLQkJQ09OVFJPTF9NQVNLLAotLQkJQUxUX01BU0ssCi0tCQlNRVRBX01BU0ss Ci0tCQlTVVBFUl9NQVNLLAotLQkJSFlQRVJfTUFTSywKLS0JCU1PRDJfTUFTSywKLS0JCU1PRDNf TUFTSywKLS0JCU1PRDRfTUFTSywKLS0JCU1PRDVfTUFTSwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxt ZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5Lmgs bWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFj a2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQt Z3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdl LmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1l dGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0 b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5j aC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4u aCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdz LmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgs bWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFy dHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1h Y3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgs bWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0 YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMu aCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjcHJlZml4ID0g Ik1FVEFfV0lORE9XX0NMSUVOVF9UWVBFXyIsIHR5cGVfaWQgPSAibWV0YV93aW5kb3dfY2xpZW50 X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGVudW0gV2luZG93Q2xpZW50VHlwZSB7Ci0t CQlXQVlMQU5ELAotLQkJWDExCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5o LG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0 YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xv c2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1l dGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1p bmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRh L21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1v dGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hh ZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQt cGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9u LmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRh LXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3Nw YWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9y cy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1l dGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNwcmVmaXggPSAiTUVUQV9XSU5ET1dfTUVO VV8iLCB0eXBlX2lkID0gIm1ldGFfd2luZG93X21lbnVfdHlwZV9nZXRfdHlwZSAoKSIpXQotLQlw dWJsaWMgZW51bSBXaW5kb3dNZW51VHlwZSB7Ci0tCQlXTSwKLS0JCUFQUAotLQl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9j b21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9k aXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRh L21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3Jv dW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJh Y2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1p ZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9t ZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0 YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRh LXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10 ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEv bWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRh LXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93 LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNw bGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1l dGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBj cHJlZml4ID0gIk1FVEFfV0lORE9XXyIsIHR5cGVfaWQgPSAibWV0YV93aW5kb3dfdHlwZV9nZXRf dHlwZSAoKSIpXQotLQlwdWJsaWMgZW51bSBXaW5kb3dUeXBlIHsKLS0JCU5PUk1BTCwKLS0JCURF U0tUT1AsCi0tCQlET0NLLAotLQkJRElBTE9HLAotLQkJTU9EQUxfRElBTE9HLAotLQkJVE9PTEJB UiwKLS0JCU1FTlUsCi0tCQlVVElMSVRZLAotLQkJU1BMQVNIU0NSRUVOLAotLQkJRFJPUERPV05f TUVOVSwKLS0JCVBPUFVQX01FTlUsCi0tCQlUT09MVElQLAotLQkJTk9USUZJQ0FUSU9OLAotLQkJ Q09NQk8sCi0tCQlETkQsCi0tCQlPVkVSUklERV9PVEhFUgotLQl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxt ZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5Lmgs bWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFj a2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQt Z3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdl LmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1l dGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0 b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5j aC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4u aCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdz LmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgs bWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFy dHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1h Y3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgs bWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0 YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMu aCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBpbnN0YW5jZV9w b3MgPSAyLjkpXQotLQlwdWJsaWMgZGVsZWdhdGUgdm9pZCBJZGxlTW9uaXRvcldhdGNoRnVuYyAo TWV0YS5JZGxlTW9uaXRvciBtb25pdG9yLCB1aW50IHdhdGNoX2lkKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5o LG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXku aCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1i YWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1h Z2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgs bWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9u aXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1 bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdp bi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGlu Z3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUu aCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0 YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93 LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUu aCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxt ZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBl cy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGluc3RhbmNl X3BvcyA9IDQuOSldCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIEtleUhhbmRsZXJGdW5jIChNZXRh LkRpc3BsYXkgZGlzcGxheSwgTWV0YS5XaW5kb3cgd2luZG93LCBbQ0NvZGUgKHR5cGUgPSAiQ2x1 dHRlcktleUV2ZW50KiIpXSBDbHV0dGVyLktleUV2ZW50PyBldmVudCwgTWV0YS5LZXlCaW5kaW5n IGJpbmRpbmcpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgs bWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3Np dG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdz LmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1h Y3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQu aCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxt ZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0t dHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRj dXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9y LW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29u dHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5o LG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRh L21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEt dmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3Vw LmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5o LG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVm cy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxt ZXRhL3dvcmtzcGFjZS5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLS0JcHVibGljIGRlbGVnYXRl IHZvaWQgUHJlZnNDaGFuZ2VkRnVuYyAoTWV0YS5QcmVmZXJlbmNlIHByZWYpOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29t bW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlz cGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9t ZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNr ZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRs ZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0 YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEt cGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1z ZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4 dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21l dGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13 aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1z aGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxh eS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRh L3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgaW5z dGFuY2VfcG9zID0gMS45KV0KLS0JcHVibGljIGRlbGVnYXRlIGJvb2wgV2luZG93Rm9yZWFjaEZ1 bmMgKE1ldGEuV2luZG93IHdpbmRvdyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3Iu aCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1l dGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21l dGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNs b3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxt ZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEt aW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0 YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVt b3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNo YWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5k LXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlv bi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0 YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtz cGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJv cnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxt ZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjbmFtZSA9ICJNRVRBX0NVUlJFTlRfVElN RSIpXQotLQlwdWJsaWMgY29uc3QgaW50IENVUlJFTlRfVElNRTsKLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1l dGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxt ZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNr ZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1n cm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2Uu aCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0 YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRv ci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNo LWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5o LG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3Mu aCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxt ZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0 dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFj dG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxt ZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRh L21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5o LG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNuYW1lID0gIk1F VEFfREVGQVVMVF9JQ09OX05BTUUiKV0KLS0JcHVibGljIGNvbnN0IHN0cmluZyBERUZBVUxUX0lD T05fTkFNRTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1l dGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRv ci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5o LG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0 b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0 YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5 cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0 cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1t YW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRy b2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxt ZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9t ZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZl cnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5o LG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxt ZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMu aCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0 YS93b3Jrc3BhY2UuaCIsIGNuYW1lID0gIk1FVEFfSUNPTl9IRUlHSFQiKV0KLS0JcHVibGljIGNv bnN0IGludCBJQ09OX0hFSUdIVDsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEv YmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1l dGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9r ZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1i YWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2Ut ZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEv bWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhp Yml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21l dGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUt YWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93 LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxh eWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgs bWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdp bmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNl LW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5o LG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEv d2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNuYW1lID0gIk1FVEFfSUNPTl9XSURUSCIpXQot LQlwdWJsaWMgY29uc3QgaW50IElDT05fV0lEVEg7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBv c2l0b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91 cC5oLG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxt ZXRhL21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9t ZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1k bmQuaCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRh L21ldGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0 LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21l dGEtcmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9t ZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRh LXNvdW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlm aWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1l dGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRh LXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgx MS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0 aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjbmFtZSA9ICJNRVRBX01BSk9S X1ZFUlNJT04iKV0KLS0JcHVibGljIGNvbnN0IGludCBNQUpPUl9WRVJTSU9OOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29t bW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlz cGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9t ZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNr Z3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNr ZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRs ZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0 YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEt cGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1z ZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4 dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21l dGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13 aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1z aGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxh eS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRh L3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIiwgY25h bWUgPSAiTUVUQV9NSUNST19WRVJTSU9OIildCi0tCXB1YmxpYyBjb25zdCBpbnQgTUlDUk9fVkVS U0lPTjsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEv Ym94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1t dXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1l dGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3Iu aCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9t ZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVz LmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1k aWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5h Z2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xs ZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRh L21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRh LXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNp b24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1l dGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRh L21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxt ZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93 b3Jrc3BhY2UuaCIsIGNuYW1lID0gIk1FVEFfTUlOSV9JQ09OX0hFSUdIVCIpXQotLQlwdWJsaWMg Y29uc3QgaW50IE1JTklfSUNPTl9IRUlHSFQ7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0 b3IuaCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5o LG1ldGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEv bWV0YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRh L21ldGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRh LWNsb3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQu aCxtZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21l dGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0Lmgs bWV0YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEt cmVtb3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRh LXNoYWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNv dW5kLXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNh dGlvbi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEv bWV0YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdv cmtzcGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1l cnJvcnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwu aCxtZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjbmFtZSA9ICJNRVRBX01JTklfSUNP Tl9XSURUSCIpXQotLQlwdWJsaWMgY29uc3QgaW50IE1JTklfSUNPTl9XSURUSDsKLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2Nv bW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rp c3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEv bWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFj a2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91 bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFj a2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlk bGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21l dGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRh LXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEt c2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRl eHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9t ZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEt d2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ct c2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3Bs YXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0 YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNu YW1lID0gIk1FVEFfTUlOT1JfVkVSU0lPTiIpXQotLQlwdWJsaWMgY29uc3QgaW50IE1JTk9SX1ZF UlNJT047Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxtZXRh L2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0b3It bXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3MuaCxt ZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFjdG9y LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5oLG1l dGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1ldGEv bWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10eXBl cy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1dHMt ZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3ItbWFu YWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250cm9s bGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5LmgsbWV0 YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEvbWV0 YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12ZXJz aW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCxt ZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgsbWV0 YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZzLmgs bWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1ldGEv d29ya3NwYWNlLmgiLCBjbmFtZSA9ICJNRVRBX1BMVUdJTl9BUElfVkVSU0lPTiIpXQotLQlwdWJs aWMgY29uc3QgaW50IFBMVUdJTl9BUElfVkVSU0lPTjsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29t cG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dy b3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgs bWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRh L21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRh LWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1l dGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRl eHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEv bWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRh L21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21l dGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90 aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgs bWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21l dGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEt eDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEv dXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNuYW1lID0gIk1FVEFfUFJJ T1JJVFlfQkVGT1JFX1JFRFJBVyIpXQotLQlwdWJsaWMgY29uc3QgaW50IFBSSU9SSVRZX0JFRk9S RV9SRURSQVc7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2JhcnJpZXIuaCxt ZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3IuaCxtZXRhL2NvbXBvc2l0 b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1ldGEva2V5YmluZGluZ3Mu aCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWFj dG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21ldGEtYmFja2dyb3VuZC5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNsb3NlLWRpYWxvZy5oLG1l dGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxtZXRhL21ldGEtZW51bS10 eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEtaW5oaWJpdC1zaG9ydGN1 dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0YS9tZXRhLW1vbml0b3It bWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVtb3RlLWFjY2Vzcy1jb250 cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNoYWRvdy1mYWN0b3J5Lmgs bWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5kLXBsYXllci5oLG1ldGEv bWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlvbi5oLG1ldGEvbWV0YS12 ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0YS13aW5kb3ctZ3JvdXAu aCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtzcGFjZS1tYW5hZ2VyLmgs bWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJvcnMuaCxtZXRhL3ByZWZz LmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxtZXRhL3dpbmRvdy5oLG1l dGEvd29ya3NwYWNlLmgiLCBjbmFtZSA9ICJNRVRBX1BSSU9SSVRZX1BSRUZTX05PVElGWSIpXQot LQlwdWJsaWMgY29uc3QgaW50IFBSSU9SSVRZX1BSRUZTX05PVElGWTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5o LG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXku aCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1i YWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1h Z2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgs bWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9u aXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1 bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdp bi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGlu Z3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUu aCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0 YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93 LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUu aCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxt ZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBl cy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIsIGNuYW1lID0g Ik1FVEFfUFJJT1JJVFlfUkVEUkFXIildCi0tCXB1YmxpYyBjb25zdCBpbnQgUFJJT1JJVFlfUkVE UkFXOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgsbWV0YS9i b3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgsbWV0YS9jb21wb3NpdG9yLW11 dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0 YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1hY3Rvci5o LG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRhLWJhY2tncm91bmQuaCxtZXRh L21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21l dGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0YS9tZXRhLWVudW0tdHlwZXMu aCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWluaGliaXQtc2hvcnRjdXRzLWRp YWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEvbWV0YS1tb25pdG9yLW1hbmFn ZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxl ci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEv bWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEt c3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCxtZXRhL21ldGEtdmVyc2lv bi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEtd2luZG93LWdyb3VwLmgsbWV0 YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEv bWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1l dGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0YS93aW5kb3cuaCxtZXRhL3dv cmtzcGFjZS5oIiwgY25hbWUgPSAiTUVUQV9QUklPUklUWV9SRVNJWkUiKV0KLS0JcHVibGljIGNv bnN0IGludCBQUklPUklUWV9SRVNJWkU7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL2JhcnJpZXIuaCxtZXRhL2JveGVzLmgsbWV0YS9jb21tb24uaCxtZXRhL2NvbXBvc2l0b3Iu aCxtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgsbWV0YS9kaXNwbGF5LmgsbWV0YS9ncm91cC5oLG1l dGEva2V5YmluZGluZ3MuaCxtZXRhL21haW4uaCxtZXRhL21ldGEtYmFja2VuZC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLWFjdG9yLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtZ3JvdXAuaCxtZXRhL21l dGEtYmFja2dyb3VuZC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWltYWdlLmgsbWV0YS9tZXRhLWNs b3NlLWRpYWxvZy5oLG1ldGEvbWV0YS1jdXJzb3ItdHJhY2tlci5oLG1ldGEvbWV0YS1kbmQuaCxt ZXRhL21ldGEtZW51bS10eXBlcy5oLG1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCxtZXRhL21ldGEt aW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgsbWV0YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgsbWV0 YS9tZXRhLW1vbml0b3ItbWFuYWdlci5oLG1ldGEvbWV0YS1wbHVnaW4uaCxtZXRhL21ldGEtcmVt b3RlLWFjY2Vzcy1jb250cm9sbGVyLmgsbWV0YS9tZXRhLXNldHRpbmdzLmgsbWV0YS9tZXRhLXNo YWRvdy1mYWN0b3J5LmgsbWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgsbWV0YS9tZXRhLXNvdW5k LXBsYXllci5oLG1ldGEvbWV0YS1zdGFnZS5oLG1ldGEvbWV0YS1zdGFydHVwLW5vdGlmaWNhdGlv bi5oLG1ldGEvbWV0YS12ZXJzaW9uLmgsbWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oLG1ldGEvbWV0 YS13aW5kb3ctZ3JvdXAuaCxtZXRhL21ldGEtd2luZG93LXNoYXBlLmgsbWV0YS9tZXRhLXdvcmtz cGFjZS1tYW5hZ2VyLmgsbWV0YS9tZXRhLXgxMS1kaXNwbGF5LmgsbWV0YS9tZXRhLXgxMS1lcnJv cnMuaCxtZXRhL3ByZWZzLmgsbWV0YS90aGVtZS5oLG1ldGEvdHlwZXMuaCxtZXRhL3V0aWwuaCxt ZXRhL3dpbmRvdy5oLG1ldGEvd29ya3NwYWNlLmgiLCBjbmFtZSA9ICJNRVRBX1ZJUlRVQUxfQ09S RV9LRVlCT0FSRF9JRCIpXQotLQlwdWJsaWMgY29uc3QgaW50IFZJUlRVQUxfQ09SRV9LRVlCT0FS RF9JRDsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEv Ym94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1t dXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1l dGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3Iu aCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9t ZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVz LmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1k aWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5h Z2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xs ZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRh L21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRh LXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNp b24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1l dGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRh L21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxt ZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93 b3Jrc3BhY2UuaCIsIGNuYW1lID0gIk1FVEFfVklSVFVBTF9DT1JFX1BPSU5URVJfSUQiKV0KLS0J cHVibGljIGNvbnN0IGludCBWSVJUVUFMX0NPUkVfUE9JTlRFUl9JRDsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5o LG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXku aCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1i YWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3Vu ZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1h Z2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgs bWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9u aXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1 bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdp bi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGlu Z3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUu aCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0 YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93 LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUu aCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxt ZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBl cy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIpXQotLQlwdWJs aWMgc3RhdGljIGJvb2wgYWN0aXZhdGVfc2Vzc2lvbiAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEv Y29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRh L2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5k LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91 cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxt ZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9t ZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5o LG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNv bnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1l dGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxt ZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRh L21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAt bm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9y LmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRh L21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21l dGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1l dGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIpXQotLQlwdWJsaWMgc3Rh dGljIHZvaWQgZXhpdCAoTWV0YS5FeGl0Q29kZSBjb2RlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEv Y29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRh L2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5k LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91 cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxt ZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9t ZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5o LG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNv bnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1l dGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxt ZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRh L21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAt bm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9y LmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRh L21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21l dGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1l dGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIpXQotLQlwdWJsaWMgc3Rh dGljIHVub3duZWQgR0xpYi5PcHRpb25Db250ZXh0IGdldF9vcHRpb25fY29udGV4dCAoKTsKLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxt ZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxt ZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5o LG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNv ci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9t ZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxt ZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0 YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRh L21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hh cGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgs bWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRh L21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13 aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDEx LWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1l LmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2Uu aCIpXQotLQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X3JlcGxhY2VfY3VycmVudF93bSAoKTsKLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxt ZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxt ZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5o LG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJh Y2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNv ci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9t ZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxt ZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0 YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRh L21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hh cGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgs bWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRh L21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13 aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDEx LWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1l LmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2Uu aCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgaW5pdCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEv Y29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRh L2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5k LmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91 cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxt ZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9t ZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5o LG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNv bnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1l dGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxt ZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRh L21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAt bm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9y LmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRh L21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21l dGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1l dGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIpXQotLQlwdWJsaWMgc3Rh dGljIGJvb2wgaXNfcmVzdGFydCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5o LG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0 YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xv c2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1l dGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1p bmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRh L21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1v dGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hh ZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQt cGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9u LmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRh LXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3Nw YWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9y cy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1l dGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcXVp dCAoTWV0YS5FeGl0Q29kZSBjb2RlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvYmFycmllci5oLG1ldGEvYm94ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5o LG1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0 YS9rZXliaW5kaW5ncy5oLG1ldGEvbWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRh LWJhY2tncm91bmQtYWN0b3IuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0 YS1iYWNrZ3JvdW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xv c2UtZGlhbG9nLmgsbWV0YS9tZXRhLWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1l dGEvbWV0YS1lbnVtLXR5cGVzLmgsbWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1p bmhpYml0LXNob3J0Y3V0cy1kaWFsb2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRh L21ldGEtbW9uaXRvci1tYW5hZ2VyLmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1v dGUtYWNjZXNzLWNvbnRyb2xsZXIuaCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hh ZG93LWZhY3RvcnkuaCxtZXRhL21ldGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQt cGxheWVyLmgsbWV0YS9tZXRhLXN0YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9u LmgsbWV0YS9tZXRhLXZlcnNpb24uaCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRh LXdpbmRvdy1ncm91cC5oLG1ldGEvbWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3Nw YWNlLW1hbmFnZXIuaCxtZXRhL21ldGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9y cy5oLG1ldGEvcHJlZnMuaCxtZXRhL3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1l dGEvd2luZG93LmgsbWV0YS93b3Jrc3BhY2UuaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcmVn aXN0ZXJfd2l0aF9zZXNzaW9uICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgs bWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRh L2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEt YmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRh LWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9z ZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0 YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWlu aGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEv bWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90 ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFk b3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1w bGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24u aCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEt d2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3Bh Y2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3Jz LmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0 YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCByZXN0 YXJ0IChzdHJpbmc/IG1lc3NhZ2UpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9yLmgs bWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxtZXRh L2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21ldGEt YmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9tZXRh LWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1jbG9z ZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgsbWV0 YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRhLWlu aGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1ldGEv bWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJlbW90 ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1zaGFk b3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3VuZC1w bGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24u aCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21ldGEt d2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jrc3Bh Y2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJyb3Jz LmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgsbWV0 YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIildCi0tCXB1YmxpYyBzdGF0aWMgaW50IHJ1biAo KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYmFycmllci5oLG1ldGEvYm94 ZXMuaCxtZXRhL2NvbW1vbi5oLG1ldGEvY29tcG9zaXRvci5oLG1ldGEvY29tcG9zaXRvci1tdXR0 ZXIuaCxtZXRhL2Rpc3BsYXkuaCxtZXRhL2dyb3VwLmgsbWV0YS9rZXliaW5kaW5ncy5oLG1ldGEv bWFpbi5oLG1ldGEvbWV0YS1iYWNrZW5kLmgsbWV0YS9tZXRhLWJhY2tncm91bmQtYWN0b3IuaCxt ZXRhL21ldGEtYmFja2dyb3VuZC1ncm91cC5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLmgsbWV0YS9t ZXRhLWJhY2tncm91bmQtaW1hZ2UuaCxtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgsbWV0YS9tZXRh LWN1cnNvci10cmFja2VyLmgsbWV0YS9tZXRhLWRuZC5oLG1ldGEvbWV0YS1lbnVtLXR5cGVzLmgs bWV0YS9tZXRhLWlkbGUtbW9uaXRvci5oLG1ldGEvbWV0YS1pbmhpYml0LXNob3J0Y3V0cy1kaWFs b2cuaCxtZXRhL21ldGEtbGF1bmNoLWNvbnRleHQuaCxtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2Vy LmgsbWV0YS9tZXRhLXBsdWdpbi5oLG1ldGEvbWV0YS1yZW1vdGUtYWNjZXNzLWNvbnRyb2xsZXIu aCxtZXRhL21ldGEtc2V0dGluZ3MuaCxtZXRhL21ldGEtc2hhZG93LWZhY3RvcnkuaCxtZXRhL21l dGEtc2hhcGVkLXRleHR1cmUuaCxtZXRhL21ldGEtc291bmQtcGxheWVyLmgsbWV0YS9tZXRhLXN0 YWdlLmgsbWV0YS9tZXRhLXN0YXJ0dXAtbm90aWZpY2F0aW9uLmgsbWV0YS9tZXRhLXZlcnNpb24u aCxtZXRhL21ldGEtd2luZG93LWFjdG9yLmgsbWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oLG1ldGEv bWV0YS13aW5kb3ctc2hhcGUuaCxtZXRhL21ldGEtd29ya3NwYWNlLW1hbmFnZXIuaCxtZXRhL21l dGEteDExLWRpc3BsYXkuaCxtZXRhL21ldGEteDExLWVycm9ycy5oLG1ldGEvcHJlZnMuaCxtZXRh L3RoZW1lLmgsbWV0YS90eXBlcy5oLG1ldGEvdXRpbC5oLG1ldGEvd2luZG93LmgsbWV0YS93b3Jr c3BhY2UuaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X2dub21lX3dtX2tleWJpbmRpbmdz IChzdHJpbmcgd21fa2V5YmluZGluZ3MpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3NpdG9y LmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAuaCxt ZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRhL21l dGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0YS9t ZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0YS1j bG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5kLmgs bWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9tZXRh LWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5oLG1l dGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRhLXJl bW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0YS1z aGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1zb3Vu ZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRp b24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRhL21l dGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13b3Jr c3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEtZXJy b3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGlsLmgs bWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBz ZXRfd21fbmFtZSAoc3RyaW5nIHdtX25hbWUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9iYXJyaWVyLmgsbWV0YS9ib3hlcy5oLG1ldGEvY29tbW9uLmgsbWV0YS9jb21wb3Np dG9yLmgsbWV0YS9jb21wb3NpdG9yLW11dHRlci5oLG1ldGEvZGlzcGxheS5oLG1ldGEvZ3JvdXAu aCxtZXRhL2tleWJpbmRpbmdzLmgsbWV0YS9tYWluLmgsbWV0YS9tZXRhLWJhY2tlbmQuaCxtZXRh L21ldGEtYmFja2dyb3VuZC1hY3Rvci5oLG1ldGEvbWV0YS1iYWNrZ3JvdW5kLWdyb3VwLmgsbWV0 YS9tZXRhLWJhY2tncm91bmQuaCxtZXRhL21ldGEtYmFja2dyb3VuZC1pbWFnZS5oLG1ldGEvbWV0 YS1jbG9zZS1kaWFsb2cuaCxtZXRhL21ldGEtY3Vyc29yLXRyYWNrZXIuaCxtZXRhL21ldGEtZG5k LmgsbWV0YS9tZXRhLWVudW0tdHlwZXMuaCxtZXRhL21ldGEtaWRsZS1tb25pdG9yLmgsbWV0YS9t ZXRhLWluaGliaXQtc2hvcnRjdXRzLWRpYWxvZy5oLG1ldGEvbWV0YS1sYXVuY2gtY29udGV4dC5o LG1ldGEvbWV0YS1tb25pdG9yLW1hbmFnZXIuaCxtZXRhL21ldGEtcGx1Z2luLmgsbWV0YS9tZXRh LXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oLG1ldGEvbWV0YS1zZXR0aW5ncy5oLG1ldGEvbWV0 YS1zaGFkb3ctZmFjdG9yeS5oLG1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oLG1ldGEvbWV0YS1z b3VuZC1wbGF5ZXIuaCxtZXRhL21ldGEtc3RhZ2UuaCxtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmlj YXRpb24uaCxtZXRhL21ldGEtdmVyc2lvbi5oLG1ldGEvbWV0YS13aW5kb3ctYWN0b3IuaCxtZXRh L21ldGEtd2luZG93LWdyb3VwLmgsbWV0YS9tZXRhLXdpbmRvdy1zaGFwZS5oLG1ldGEvbWV0YS13 b3Jrc3BhY2UtbWFuYWdlci5oLG1ldGEvbWV0YS14MTEtZGlzcGxheS5oLG1ldGEvbWV0YS14MTEt ZXJyb3JzLmgsbWV0YS9wcmVmcy5oLG1ldGEvdGhlbWUuaCxtZXRhL3R5cGVzLmgsbWV0YS91dGls LmgsbWV0YS93aW5kb3cuaCxtZXRhL3dvcmtzcGFjZS5oIildCi0tCXB1YmxpYyBzdGF0aWMgYm9v bCB4MTFfaW5pdF9nZGtfZGlzcGxheSAoKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS19Ci1kaWZmIC0t Z2l0IHZhcGkvbGlibXV0dGVyLTUuZGVwcyB2YXBpL2xpYm11dHRlci02LmRlcHMKLXNpbWlsYXJp dHkgaW5kZXggNTAlCi1yZW5hbWUgZnJvbSB2YXBpL2xpYm11dHRlci01LmRlcHMKLXJlbmFtZSB0 byB2YXBpL2xpYm11dHRlci02LmRlcHMKLWluZGV4IDQ4YWE3NTYzLi4yMjM1MjVlNCAxMDA2NDQK LS0tLSB2YXBpL2xpYm11dHRlci01LmRlcHMKLSsrKyB2YXBpL2xpYm11dHRlci02LmRlcHMKLUBA IC0xLDUgKzEsNiBAQAotIGd0aystMy4wCi0ganNvbi1nbGliLTEuMAotLW11dHRlci1jbHV0dGVy LTUKLSttdXR0ZXItY2x1dHRlci02Ci0geDExCi0geGZpeGVzLTQuMAotK2dyYXBoZW5lLWdvYmpl Y3QtMS4wCi1kaWZmIC0tZ2l0IHZhcGkvbGlibXV0dGVyLTUudmFwaSB2YXBpL2xpYm11dHRlci02 LnZhcGkKLXNpbWlsYXJpdHkgaW5kZXggOTclCi1yZW5hbWUgZnJvbSB2YXBpL2xpYm11dHRlci01 LnZhcGkKLXJlbmFtZSB0byB2YXBpL2xpYm11dHRlci02LnZhcGkKLWluZGV4IGI5NWEyOGU2Li5i MzZiZTFiNyAxMDA2NDQKLS0tLSB2YXBpL2xpYm11dHRlci01LnZhcGkKLSsrKyB2YXBpL2xpYm11 dHRlci02LnZhcGkKLUBAIC0xLDEyICsxLDEwIEBACi0tLyogbGlibXV0dGVyLTUudmFwaSBnZW5l cmF0ZWQgYnkgdmFwaWdlbiwgZG8gbm90IG1vZGlmeS4gKi8KLSsvKiBsaWJtdXR0ZXItNi52YXBp IGdlbmVyYXRlZCBieSB2YXBpZ2VuLCBkbyBub3QgbW9kaWZ5LiAqLwotIAotLVtDQ29kZSAoY3By ZWZpeCA9ICJNZXRhIiwgZ2lyX25hbWVzcGFjZSA9ICJNZXRhIiwgZ2lyX3ZlcnNpb24gPSAiNSIs IGxvd2VyX2Nhc2VfY3ByZWZpeCA9ICJtZXRhXyIpXQotK1tDQ29kZSAoY3ByZWZpeCA9ICJNZXRh IiwgZ2lyX25hbWVzcGFjZSA9ICJNZXRhIiwgZ2lyX3ZlcnNpb24gPSAiNiIsIGxvd2VyX2Nhc2Vf Y3ByZWZpeCA9ICJtZXRhXyIpXQotIG5hbWVzcGFjZSBNZXRhIHsKLSAJbmFtZXNwYWNlIENvbXBv c2l0b3IgewotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1t dXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFfZGlzYWJsZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5Iild Ci0gCQlwdWJsaWMgc3RhdGljIHZvaWQgZGlzYWJsZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IChN ZXRhLkRpc3BsYXkgZGlzcGxheSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9jb21wb3NpdG9yLW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9lbXB0eV9zdGFnZV9pbnB1dF9y ZWdpb24iKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBlbXB0eV9zdGFnZV9pbnB1dF9yZWdpb24g KE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2VuYWJsZV91bnJlZGlyZWN0 X2Zvcl9kaXNwbGF5IildCi0gCQlwdWJsaWMgc3RhdGljIHZvaWQgZW5hYmxlX3VucmVkaXJlY3Rf Zm9yX2Rpc3BsYXkgKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2ZvY3Vz X3N0YWdlX3dpbmRvdyIpXQotQEAgLTIxLDggKzE5LDYgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJ cHVibGljIHN0YXRpYyB1bm93bmVkIEdMaWIuTGlzdDxDbHV0dGVyLkFjdG9yPiBnZXRfd2luZG93 X2FjdG9ycyAoTWV0YS5EaXNwbGF5IGRpc3BsYXkpOwotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFfZ2V0X3dpbmRv d19ncm91cF9mb3JfZGlzcGxheSIpXQotIAkJcHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIu QWN0b3IgZ2V0X3dpbmRvd19ncm91cF9mb3JfZGlzcGxheSAoTWV0YS5EaXNwbGF5IGRpc3BsYXkp OwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIu aCIsIGNuYW1lID0gIm1ldGFfc2V0X3N0YWdlX2lucHV0X3JlZ2lvbiIpXQotLQkJcHVibGljIHN0 YXRpYyB2b2lkIHNldF9zdGFnZV9pbnB1dF9yZWdpb24gKE1ldGEuRGlzcGxheSBkaXNwbGF5LCBY LlhzZXJ2ZXJSZWdpb24gcmVnaW9uKTsKLSAJfQotIAluYW1lc3BhY2UgUHJlZnMgewotIAkJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJl ZnNfYmVsbF9pc19hdWRpYmxlIildCi1AQCAtMTY0LDcgKzE2MCw3IEBAIG5hbWVzcGFjZSBNZXRh IHsKLSAJCXB1YmxpYyB2b2lkIHNldF9udW1sb2NrIChib29sIG51bWxvY2tfc3RhdGUpOwotIAkJ cHVibGljIHNpZ25hbCB2b2lkIGtleW1hcF9jaGFuZ2VkICgpOwotIAkJcHVibGljIHNpZ25hbCB2 b2lkIGtleW1hcF9sYXlvdXRfZ3JvdXBfY2hhbmdlZCAodWludCBvYmplY3QpOwotLQkJcHVibGlj IHNpZ25hbCB2b2lkIGxhc3RfZGV2aWNlX2NoYW5nZWQgKGludCBvYmplY3QpOwotKwkJcHVibGlj IHNpZ25hbCB2b2lkIGxhc3RfZGV2aWNlX2NoYW5nZWQgKENsdXR0ZXIuSW5wdXREZXZpY2Ugb2Jq ZWN0KTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBsaWRfaXNfY2xvc2VkX2NoYW5nZWQgKGJvb2wg b2JqZWN0KTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLWJh Y2tncm91bmQuaCIsIHR5cGVfaWQgPSAibWV0YV9iYWNrZ3JvdW5kX2dldF90eXBlICgpIildCi1A QCAtMTc0LDcgKzE3MCw3IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyBzdGF0aWMgdm9p ZCByZWZyZXNoX2FsbCAoKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9ibGVuZCAoR0xpYi5GaWxlIGZp bGUxLCBHTGliLkZpbGUgZmlsZTIsIGRvdWJsZSBibGVuZF9mYWN0b3IsIEdEZXNrdG9wLkJhY2tn cm91bmRTdHlsZSBzdHlsZSk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfY29sb3IgKENsdXR0ZXIuQ29s b3IgY29sb3IpOwotLQkJcHVibGljIHZvaWQgc2V0X2ZpbGUgKEdMaWIuRmlsZSBmaWxlLCBHRGVz a3RvcC5CYWNrZ3JvdW5kU3R5bGUgc3R5bGUpOwotKwkJcHVibGljIHZvaWQgc2V0X2ZpbGUgKEdM aWIuRmlsZT8gZmlsZSwgR0Rlc2t0b3AuQmFja2dyb3VuZFN0eWxlIHN0eWxlKTsKLSAJCXB1Ymxp YyB2b2lkIHNldF9ncmFkaWVudCAoR0Rlc2t0b3AuQmFja2dyb3VuZFNoYWRpbmcgc2hhZGluZ19k aXJlY3Rpb24sIENsdXR0ZXIuQ29sb3IgY29sb3IsIENsdXR0ZXIuQ29sb3Igc2Vjb25kX2NvbG9y KTsKLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJcHVibGljIE1ldGEuRGlzcGxheSBtZXRhX2Rp c3BsYXkgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotQEAgLTI3NSw3ICsyNzEsNyBAQCBuYW1l c3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMgdW5vd25lZCBDb2dsLlRleHR1cmUgZ2V0X3Nwcml0ZSAo KTsKLSAJCXB1YmxpYyB2b2lkIHNldF9wb2ludGVyX3Zpc2libGUgKGJvb2wgdmlzaWJsZSk7Ci0g CQlwdWJsaWMgc2lnbmFsIHZvaWQgY3Vyc29yX2NoYW5nZWQgKCk7Ci0tCQlwdWJsaWMgc2lnbmFs IHZvaWQgY3Vyc29yX21vdmVkIChmbG9hdCBvYmplY3QsIGZsb2F0IHAwKTsKLSsJCXB1YmxpYyBz aWduYWwgdm9pZCBjdXJzb3JfbW92ZWQgKGZsb2F0IHgsIGZsb2F0IHkpOwotIAkJcHVibGljIHNp Z25hbCB2b2lkIHZpc2liaWxpdHlfY2hhbmdlZCAoKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9kaXNwbGF5LmgiLCB0eXBlX2lkID0gIm1ldGFfZGlzcGxheV9nZXRf dHlwZSAoKSIpXQotQEAgLTMyNyw2ICszMjMsNyBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJs aWMgYm9vbCB4c2VydmVyX3RpbWVfaXNfYmVmb3JlICh1aW50MzIgdGltZTEsIHVpbnQzMiB0aW1l Mik7Ci0gCQlwdWJsaWMgTWV0YS5XaW5kb3cgZm9jdXNfd2luZG93IHsgZ2V0OyB9Ci0gCQlwdWJs aWMgc2lnbmFsIHZvaWQgYWNjZWxlcmF0b3JfYWN0aXZhdGVkICh1aW50IG9iamVjdCwgQ2x1dHRl ci5JbnB1dERldmljZSBwMCwgdWludCBwMSk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgY2xvc2lu ZyAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBjdXJzb3JfdXBkYXRlZCAoKTsKLSAJCXB1Ymxp YyBzaWduYWwgdm9pZCBnbF92aWRlb19tZW1vcnlfcHVyZ2VkICgpOwotIAkJcHVibGljIHNpZ25h bCB2b2lkIGdyYWJfb3BfYmVnaW4gKE1ldGEuRGlzcGxheSBvYmplY3QsIE1ldGEuV2luZG93IHAw LCBNZXRhLkdyYWJPcCBwMSk7Ci1AQCAtMzUwLDYgKzM0Nyw3IEBAIG5hbWVzcGFjZSBNZXRhIHsK LSAJCXB1YmxpYyBzaWduYWwgdm9pZCB3b3JrYXJlYXNfY2hhbmdlZCAoKTsKLSAJCXB1YmxpYyBz aWduYWwgdm9pZCB4MTFfZGlzcGxheV9jbG9zaW5nICgpOwotIAkJcHVibGljIHNpZ25hbCB2b2lk IHgxMV9kaXNwbGF5X29wZW5lZCAoKTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCB4MTFfZGlzcGxh eV9zZXR1cCAoKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRh LWRuZC5oIiwgdHlwZV9pZCA9ICJtZXRhX2RuZF9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgY2xh c3MgRG5kIDogR0xpYi5PYmplY3QgewotQEAgLTM3MCwxMSArMzY4LDEwIEBAIG5hbWVzcGFjZSBN ZXRhIHsKLSAJCXB1YmxpYyB1aW50IGFkZF9pZGxlX3dhdGNoICh1aW50NjQgaW50ZXJ2YWxfbXNl Yywgb3duZWQgTWV0YS5JZGxlTW9uaXRvcldhdGNoRnVuYz8gY2FsbGJhY2spOwotIAkJcHVibGlj IHVpbnQgYWRkX3VzZXJfYWN0aXZlX3dhdGNoIChvd25lZCBNZXRhLklkbGVNb25pdG9yV2F0Y2hG dW5jPyBjYWxsYmFjayk7Ci0gCQlwdWJsaWMgc3RhdGljIHVub3duZWQgTWV0YS5JZGxlTW9uaXRv ciBnZXRfY29yZSAoKTsKLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBNZXRhLklkbGVNb25pdG9y IGdldF9mb3JfZGV2aWNlIChpbnQgZGV2aWNlX2lkKTsKLSAJCXB1YmxpYyBpbnQ2NCBnZXRfaWRs ZXRpbWUgKCk7Ci0gCQlwdWJsaWMgdm9pZCByZW1vdmVfd2F0Y2ggKHVpbnQgaWQpOwotIAkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgaW50IGRldmljZV9pZCB7IGdldDsgY29uc3RydWN0 OyB9Ci0rCQlwdWJsaWMgQ2x1dHRlci5JbnB1dERldmljZSBkZXZpY2UgeyBvd25lZCBnZXQ7IGNv bnN0cnVjdDsgfQotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4u aCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19ib3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2Jv eGVkX2ZyZWUiLCB0eXBlX2lkID0gIm1ldGFfa2V5X2JpbmRpbmdfZ2V0X3R5cGUgKCkiKV0KLSAJ W0NvbXBhY3RdCi1AQCAtNTM2LDE1ICs1MzMsMTQgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVi bGljIHNpZ25hbCB2b2lkIGNoYW5nZWQgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvbWV0YS1zaGFwZWQtdGV4dHVyZS5oIiwgdHlwZV9pZCA9ICJtZXRhX3NoYXBl ZF90ZXh0dXJlX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBTaGFwZWRUZXh0dXJlIDog Q2x1dHRlci5BY3RvciwgQXRrLkltcGxlbWVudG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENsdXR0 ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotKwlwdWJsaWMgY2xhc3MgU2hhcGVk VGV4dHVyZSA6IEdMaWIuT2JqZWN0LCBDbHV0dGVyLkNvbnRlbnQgewotIAkJW0NDb2RlIChoYXNf Y29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIFNoYXBlZFRleHR1cmUg KCk7Ci0tCQlwdWJsaWMgQ2Fpcm8uU3VyZmFjZSBnZXRfaW1hZ2UgKENhaXJvLlJlY3RhbmdsZUlu dCBjbGlwKTsKLSsJCXB1YmxpYyBDYWlyby5TdXJmYWNlPyBnZXRfaW1hZ2UgKENhaXJvLlJlY3Rh bmdsZUludD8gY2xpcCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBDb2dsLlRleHR1cmUgZ2V0X3RleHR1 cmUgKCk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfY3JlYXRlX21pcG1hcHMgKGJvb2wgY3JlYXRlX21p cG1hcHMpOwotIAkJcHVibGljIHZvaWQgc2V0X21hc2tfdGV4dHVyZSAoQ29nbC5UZXh0dXJlIG1h c2tfdGV4dHVyZSk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfb3BhcXVlX3JlZ2lvbiAob3duZWQgQ2Fp cm8uUmVnaW9uIG9wYXF1ZV9yZWdpb24pOwotLQkJcHVibGljIGJvb2wgdXBkYXRlX2FyZWEgKGlu dCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSAJCXB1YmxpYyBzaWduYWwgdm9p ZCBzaXplX2NoYW5nZWQgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvbWV0YS1zb3VuZC1wbGF5ZXIuaCIsIHR5cGVfaWQgPSAibWV0YV9zb3VuZF9wbGF5ZXJfZ2V0 X3R5cGUgKCkiKV0KLUBAIC03NTYsMTcgKzc1MiwxNiBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCXB1 YmxpYyBhYnN0cmFjdCBjbGFzcyBXaW5kb3dBY3RvciA6IENsdXR0ZXIuQWN0b3IsIEF0ay5JbXBs ZW1lbnRvciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0dGVyLkNvbnRhaW5lciwgQ2x1dHRlci5T Y3JpcHRhYmxlIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0K LSAJCXByb3RlY3RlZCBXaW5kb3dBY3RvciAoKTsKLSsJCXB1YmxpYyBDYWlyby5TdXJmYWNlPyBn ZXRfaW1hZ2UgKENhaXJvLlJlY3RhbmdsZUludD8gY2xpcCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBN ZXRhLldpbmRvdyBnZXRfbWV0YV93aW5kb3cgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVy LkFjdG9yIGdldF90ZXh0dXJlICgpOwotKwkJcHVibGljIHVub3duZWQgTWV0YS5TaGFwZWRUZXh0 dXJlIGdldF90ZXh0dXJlICgpOwotIAkJcHVibGljIGJvb2wgaXNfZGVzdHJveWVkICgpOwotIAkJ cHVibGljIHZvaWQgc3luY192aXNpYmlsaXR5ICgpOwotIAkJcHVibGljIE1ldGEuV2luZG93IG1l dGFfd2luZG93IHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJ cHVibGljIHN0cmluZyBzaGFkb3dfY2xhc3MgeyBvd25lZCBnZXQ7IHNldDsgfQotLQkJW05vQWNj ZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgTWV0YS5TaGFkb3dNb2RlIHNoYWRvd19tb2RlIHsgZ2V0 OyBzZXQ7IH0KLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBkYW1hZ2VkICgpOwotIAkJcHVibGljIHNp Z25hbCB2b2lkIGVmZmVjdHNfY29tcGxldGVkICgpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIGZp cnN0X2ZyYW1lICgpOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIHRoYXdlZCAoKTsKLSAJfQotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXdpbmRvdy1ncm91cC5oIiwgdHlw ZV9pZCA9ICJtZXRhX3dpbmRvd19ncm91cF9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgY2xhc3Mg V2luZG93R3JvdXAgOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5p bWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci1AQCAtODEz LDcgKzgwOCw3IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyB1bm93bmVkIE1ldGEuV29y a3NwYWNlIGdldF9hY3RpdmVfd29ya3NwYWNlICgpOwotIAkJcHVibGljIGludCBnZXRfYWN0aXZl X3dvcmtzcGFjZV9pbmRleCAoKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X25fd29ya3NwYWNlcyAoKTsK LS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV29ya3NwYWNlIGdldF93b3Jrc3BhY2VfYnlfaW5kZXgg KGludCBpbmRleCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBNZXRhLldvcmtzcGFjZT8gZ2V0X3dvcmtz cGFjZV9ieV9pbmRleCAoaW50IGluZGV4KTsKLSAJCXB1YmxpYyB2b2lkIG92ZXJyaWRlX3dvcmtz cGFjZV9sYXlvdXQgKE1ldGEuRGlzcGxheUNvcm5lciBzdGFydGluZ19jb3JuZXIsIGJvb2wgdmVy dGljYWxfbGF5b3V0LCBpbnQgbl9yb3dzLCBpbnQgbl9jb2x1bW5zKTsKLSAJCXB1YmxpYyB2b2lk IHJlbW92ZV93b3Jrc3BhY2UgKE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSwgdWludDMyIHRpbWVz dGFtcCk7Ci0gCQlwdWJsaWMgdm9pZCByZW9yZGVyX3dvcmtzcGFjZSAoTWV0YS5Xb3Jrc3BhY2Ug d29ya3NwYWNlLCBpbnQgbmV3X2luZGV4KTsKLUBAIC04MzMsMTEgKzgyOCwxMyBAQCBuYW1lc3Bh Y2UgTWV0YSB7Ci0gCXB1YmxpYyBjbGFzcyBYMTFEaXNwbGF5IDogR0xpYi5PYmplY3QgewotIAkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIFgx MURpc3BsYXkgKCk7Ci0rCQlwdWJsaWMgdm9pZCBjbGVhcl9zdGFnZV9pbnB1dF9yZWdpb24gKCk7 Ci0gCQlwdWJsaWMgaW50IGdldF9kYW1hZ2VfZXZlbnRfYmFzZSAoKTsKLSAJCXB1YmxpYyBpbnQg Z2V0X3NjcmVlbl9udW1iZXIgKCk7Ci0gCQlwdWJsaWMgaW50IGdldF9zaGFwZV9ldmVudF9iYXNl ICgpOwotIAkJcHVibGljIGJvb2wgaGFzX3NoYXBlICgpOwotIAkJcHVibGljIHZvaWQgc2V0X2Nt X3NlbGVjdGlvbiAoKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9zdGFnZV9pbnB1dF9yZWdpb24gKFgu WHNlcnZlclJlZ2lvbiByZWdpb24pOwotIAkJcHVibGljIGJvb2wgeHdpbmRvd19pc19hX25vX2Zv Y3VzX3dpbmRvdyAoWC5XaW5kb3cgeHdpbmRvdyk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvbWV0YS1jbG9zZS1kaWFsb2cuaCIsIHR5cGVfY25hbWUgPSAiTWV0YUNs b3NlRGlhbG9nSW50ZXJmYWNlIiwgdHlwZV9pZCA9ICJtZXRhX2Nsb3NlX2RpYWxvZ19nZXRfdHlw ZSAoKSIpXQotQEAgLTg5OSw3ICs4OTYsNyBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMg dWludCB2ZXJzaW9uX21pY3JvOwotIAkJcHVibGljIHVpbnQgdmVyc2lvbl9hcGk7Ci0gCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgdHlwZV9pZCA9ICJtZXRh X3JlY3RhbmdsZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9tYWluLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rp b24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJtZXRhX3JlY3RhbmdsZV9nZXRfdHlwZSAo KSIpXQotIAlwdWJsaWMgc3RydWN0IFJlY3RhbmdsZSB7Ci0gCQlwdWJsaWMgaW50IHg7Ci0gCQlw dWJsaWMgaW50IHk7Ci1AQCAtMTQ0Myw2ICsxNDQwLDggQEAgbmFtZXNwYWNlIE1ldGEgewotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLSAJcHVibGljIHN0YXRp YyBib29sIGFjdGl2YXRlX3Nlc3Npb24gKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL21haW4uaCIpXQotKwlwdWJsaWMgc3RhdGljIHZvaWQgYWRkX2NsdXR0ZXJfZGVidWdf ZmxhZ3MgKENsdXR0ZXIuRGVidWdGbGFnIGRlYnVnX2ZsYWdzLCBDbHV0dGVyLkRyYXdEZWJ1Z0Zs YWcgZHJhd19mbGFncywgQ2x1dHRlci5QaWNrRGVidWdGbGFnIHBpY2tfZmxhZ3MpOwotKwlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLSAJcHVibGljIHN0YXRpYyB2 b2lkIGV4aXQgKE1ldGEuRXhpdENvZGUgY29kZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL21haW4uaCIpXQotIAlwdWJsaWMgc3RhdGljIHN0cmluZyBnX3V0Zjhfc3RybmR1 cCAoc3RyaW5nIHNyYywgc2l6ZV90IG4pOwotQEAgLTE0NTksNiArMTQ1OCw4IEBAIG5hbWVzcGFj ZSBNZXRhIHsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0g CXB1YmxpYyBzdGF0aWMgdm9pZCByZWdpc3Rlcl93aXRoX3Nlc3Npb24gKCk7Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotKwlwdWJsaWMgc3RhdGljIHZvaWQg cmVtb3ZlX2NsdXR0ZXJfZGVidWdfZmxhZ3MgKENsdXR0ZXIuRGVidWdGbGFnIGRlYnVnX2ZsYWdz LCBDbHV0dGVyLkRyYXdEZWJ1Z0ZsYWcgZHJhd19mbGFncywgQ2x1dHRlci5QaWNrRGVidWdGbGFn IHBpY2tfZmxhZ3MpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgi KV0KLSAJcHVibGljIHN0YXRpYyB2b2lkIHJlc3RhcnQgKHN0cmluZz8gbWVzc2FnZSk7Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotIAlwdWJsaWMgc3RhdGlj IGludCBydW4gKCk7Ci1AQCAtMTQ2Nyw1ICsxNDY4LDcgQEAgbmFtZXNwYWNlIE1ldGEgewotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLSAJcHVibGljIHN0YXRp YyB2b2lkIHNldF93bV9uYW1lIChzdHJpbmcgd21fbmFtZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotKwlwdWJsaWMgc3RhdGljIHZvaWQgdGVzdF9pbml0 ICgpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLSAJcHVi bGljIHN0YXRpYyBib29sIHgxMV9pbml0X2dka19kaXNwbGF5ICgpIHRocm93cyBHTGliLkVycm9y OwotIH0KLWRpZmYgLS1naXQgdmFwaS9saWJtdXR0ZXItNy1jdXN0b20udmFsYSB2YXBpL2xpYm11 dHRlci03LWN1c3RvbS52YWxhCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAu LjFlMGI5MTdjCi0tLS0gL2Rldi9udWxsCi0rKysgdmFwaS9saWJtdXR0ZXItNy1jdXN0b20udmFs YQotQEAgLTAsMCArMSw3IEBACi0rW0NDb2RlIChoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLStwdWJs aWMgc3RydWN0IGJlZm9yZV9mcmFtZSB7Ci0rfQotKwotK1tDQ29kZSAoaGFzX3R5cGVfaWQgPSBm YWxzZSldCi0rcHVibGljIHN0cnVjdCBmcmFtZSB7Ci0rfQotZGlmZiAtLWdpdCB2YXBpL2xpYm11 dHRlci03LmRlcHMgdmFwaS9saWJtdXR0ZXItNy5kZXBzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMDAuLjJlZjkxOWVlCi0tLS0gL2Rldi9udWxsCi0rKysgdmFwaS9saWJtdXR0 ZXItNy5kZXBzCi1AQCAtMCwwICsxLDYgQEAKLStndGsrLTMuMAotK2pzb24tZ2xpYi0xLjAKLStt dXR0ZXItY2x1dHRlci03Ci0reDExCi0reGZpeGVzLTQuMAotK2dyYXBoZW5lLWdvYmplY3QtMS4w Ci1kaWZmIC0tZ2l0IHZhcGkvbGlibXV0dGVyLTMudmFwaSB2YXBpL2xpYm11dHRlci03LnZhcGkK LXNpbWlsYXJpdHkgaW5kZXggNzUlCi1yZW5hbWUgZnJvbSB2YXBpL2xpYm11dHRlci0zLnZhcGkK LXJlbmFtZSB0byB2YXBpL2xpYm11dHRlci03LnZhcGkKLWluZGV4IDE3MTVhYThmLi45MGM0MTU5 MCAxMDA2NDQKLS0tLSB2YXBpL2xpYm11dHRlci0zLnZhcGkKLSsrKyB2YXBpL2xpYm11dHRlci03 LnZhcGkKLUBAIC0xLDEyICsxLDEwIEBACi0tLyogbGlibXV0dGVyLTMudmFwaSBnZW5lcmF0ZWQg YnkgdmFwaWdlbiwgZG8gbm90IG1vZGlmeS4gKi8KLSsvKiBsaWJtdXR0ZXItNy52YXBpIGdlbmVy YXRlZCBieSB2YXBpZ2VuLCBkbyBub3QgbW9kaWZ5LiAqLwotIAotLVtDQ29kZSAoY3ByZWZpeCA9 ICJNZXRhIiwgZ2lyX25hbWVzcGFjZSA9ICJNZXRhIiwgZ2lyX3ZlcnNpb24gPSAiMyIsIGxvd2Vy X2Nhc2VfY3ByZWZpeCA9ICJtZXRhXyIpXQotK1tDQ29kZSAoY3ByZWZpeCA9ICJNZXRhIiwgZ2ly X25hbWVzcGFjZSA9ICJNZXRhIiwgZ2lyX3ZlcnNpb24gPSAiNyIsIGxvd2VyX2Nhc2VfY3ByZWZp eCA9ICJtZXRhXyIpXQotIG5hbWVzcGFjZSBNZXRhIHsKLSAJbmFtZXNwYWNlIENvbXBvc2l0b3Ig ewotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIu aCIsIGNuYW1lID0gIm1ldGFfZGlzYWJsZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IildCi0gCQlw dWJsaWMgc3RhdGljIHZvaWQgZGlzYWJsZV91bnJlZGlyZWN0X2Zvcl9kaXNwbGF5IChNZXRhLkRp c3BsYXkgZGlzcGxheSk7Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21w b3NpdG9yLW11dHRlci5oIiwgY25hbWUgPSAibWV0YV9lbXB0eV9zdGFnZV9pbnB1dF9yZWdpb24i KV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBlbXB0eV9zdGFnZV9pbnB1dF9yZWdpb24gKE1ldGEu RGlzcGxheSBkaXNwbGF5KTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2Nv bXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2VuYWJsZV91bnJlZGlyZWN0X2Zvcl9k aXNwbGF5IildCi0gCQlwdWJsaWMgc3RhdGljIHZvaWQgZW5hYmxlX3VucmVkaXJlY3RfZm9yX2Rp c3BsYXkgKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL2NvbXBvc2l0b3ItbXV0dGVyLmgiLCBjbmFtZSA9ICJtZXRhX2ZvY3VzX3N0YWdl X3dpbmRvdyIpXQotQEAgLTIxLDggKzE5LDYgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGlj IHN0YXRpYyB1bm93bmVkIEdMaWIuTGlzdDxDbHV0dGVyLkFjdG9yPiBnZXRfd2luZG93X2FjdG9y cyAoTWV0YS5EaXNwbGF5IGRpc3BsYXkpOwotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIGNuYW1lID0gIm1ldGFfZ2V0X3dpbmRvd19ncm91 cF9mb3JfZGlzcGxheSIpXQotIAkJcHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3Ig Z2V0X3dpbmRvd19ncm91cF9mb3JfZGlzcGxheSAoTWV0YS5EaXNwbGF5IGRpc3BsYXkpOwotLQkJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tcG9zaXRvci1tdXR0ZXIuaCIsIGNu YW1lID0gIm1ldGFfc2V0X3N0YWdlX2lucHV0X3JlZ2lvbiIpXQotLQkJcHVibGljIHN0YXRpYyB2 b2lkIHNldF9zdGFnZV9pbnB1dF9yZWdpb24gKE1ldGEuRGlzcGxheSBkaXNwbGF5LCBYLlhzZXJ2 ZXJSZWdpb24gcmVnaW9uKTsKLSAJfQotIAluYW1lc3BhY2UgUHJlZnMgewotIAkJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfYmVs bF9pc19hdWRpYmxlIildCi1AQCAtNDcsNiArNDMsOCBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlw dWJsaWMgc3RhdGljIE1ldGEuQnV0dG9uTGF5b3V0IHByZWZzX2dldF9idXR0b25fbGF5b3V0ICgp OwotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0g Im1ldGFfcHJlZnNfZ2V0X2NlbnRlcl9uZXdfd2luZG93cyIpXQotIAkJcHVibGljIHN0YXRpYyBi b29sIHByZWZzX2dldF9jZW50ZXJfbmV3X3dpbmRvd3MgKCk7Ci0rCQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfY2hlY2tf YWxpdmVfdGltZW91dCIpXQotKwkJcHVibGljIHN0YXRpYyB1aW50IHByZWZzX2dldF9jaGVja19h bGl2ZV90aW1lb3V0ICgpOwotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJl ZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X2NvbXBvc2l0aW5nX21hbmFnZXIiKV0KLSAJ CXB1YmxpYyBzdGF0aWMgYm9vbCBwcmVmc19nZXRfY29tcG9zaXRpbmdfbWFuYWdlciAoKTsKLSAJ CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRh X3ByZWZzX2dldF9jdXJzb3Jfc2l6ZSIpXQotQEAgLTc1LDggKzczLDYgQEAgbmFtZXNwYWNlIE1l dGEgewotIAkJcHVibGljIHN0YXRpYyBib29sIHByZWZzX2dldF9nbm9tZV9hY2Nlc3NpYmlsaXR5 ICgpOwotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1l ID0gIm1ldGFfcHJlZnNfZ2V0X2dub21lX2FuaW1hdGlvbnMiKV0KLSAJCXB1YmxpYyBzdGF0aWMg Ym9vbCBwcmVmc19nZXRfZ25vbWVfYW5pbWF0aW9ucyAoKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX2dldF9pZ25vcmVf cmVxdWVzdF9oaWRlX3RpdGxlYmFyIildCi0tCQlwdWJsaWMgc3RhdGljIGJvb2wgcHJlZnNfZ2V0 X2lnbm9yZV9yZXF1ZXN0X2hpZGVfdGl0bGViYXIgKCk7Ci0gCQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19nZXRfa2V5YmluZGlu Z19hY3Rpb24iKV0KLSAJCXB1YmxpYyBzdGF0aWMgTWV0YS5LZXlCaW5kaW5nQWN0aW9uIHByZWZz X2dldF9rZXliaW5kaW5nX2FjdGlvbiAoc3RyaW5nIG5hbWUpOwotIAkJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfZ2V0X21vdXNl X2J1dHRvbl9tZW51IildCi1AQCAtMTA1LDggKzEwMSw2IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJ CXB1YmxpYyBzdGF0aWMgdm9pZCBwcmVmc19pbml0ICgpOwotIAkJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfc2V0X2ZvcmNlX2Z1 bGxzY3JlZW4iKV0KLSAJCXB1YmxpYyBzdGF0aWMgdm9pZCBwcmVmc19zZXRfZm9yY2VfZnVsbHNj cmVlbiAoYm9vbCB3aGV0aGVyKTsKLS0JCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L3ByZWZzLmgiLCBjbmFtZSA9ICJtZXRhX3ByZWZzX3NldF9pZ25vcmVfcmVxdWVzdF9oaWRlX3Rp dGxlYmFyIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgcHJlZnNfc2V0X2lnbm9yZV9yZXF1ZXN0 X2hpZGVfdGl0bGViYXIgKGJvb2wgd2hldGhlcik7Ci0gCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9wcmVmcy5oIiwgY25hbWUgPSAibWV0YV9wcmVmc19zZXRfbnVtX3dvcmtzcGFj ZXMiKV0KLSAJCXB1YmxpYyBzdGF0aWMgdm9pZCBwcmVmc19zZXRfbnVtX3dvcmtzcGFjZXMgKGlu dCBuX3dvcmtzcGFjZXMpOwotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvcHJl ZnMuaCIsIGNuYW1lID0gIm1ldGFfcHJlZnNfc2V0X3Nob3dfZmFsbGJhY2tfYXBwX21lbnUiKV0K LUBAIC0xMTcsMTIgKzExMSwxMCBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMgc3RhdGlj IHZvaWQgYWRkX3ZlcmJvc2VfdG9waWMgKE1ldGEuRGVidWdUb3BpYyB0b3BpYyk7Ci0gCQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBjbmFtZSA9ICJtZXRhX2V4dGVy bmFsX2JpbmRpbmdfbmFtZV9mb3JfYWN0aW9uIildCi0gCQlwdWJsaWMgc3RhdGljIHN0cmluZyBl eHRlcm5hbF9iaW5kaW5nX25hbWVfZm9yX2FjdGlvbiAodWludCBrZXliaW5kaW5nX2FjdGlvbik7 Ci0tCQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS91dGlsLmgiLCBjbmFtZSA9ICJt ZXRhX2dfdXRmOF9zdHJuZHVwIildCi0tCQlwdWJsaWMgc3RhdGljIHN0cmluZyBnX3V0Zjhfc3Ry bmR1cCAoc3RyaW5nIHNyYywgc2l6ZV90IG4pOwotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gIm1ldGEvdXRpbC5oIiwgY25hbWUgPSAibWV0YV9nZXRfbG9jYWxlX2RpcmVjdGlvbiIpXQot IAkJcHVibGljIHN0YXRpYyBNZXRhLkxvY2FsZURpcmVjdGlvbiBnZXRfbG9jYWxlX2RpcmVjdGlv biAoKTsKLSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNuYW1l ID0gIm1ldGFfZ3Jhdml0eV90b19zdHJpbmciKV0KLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBz dHJpbmcgZ3Jhdml0eV90b19zdHJpbmcgKGludCBncmF2aXR5KTsKLSsJCXB1YmxpYyBzdGF0aWMg dW5vd25lZCBzdHJpbmcgZ3Jhdml0eV90b19zdHJpbmcgKE1ldGEuR3Jhdml0eSBncmF2aXR5KTsK LSAJCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNuYW1lID0gIm1l dGFfaXNfZGVidWdnaW5nIildCi0gCQlwdWJsaWMgc3RhdGljIGJvb2wgaXNfZGVidWdnaW5nICgp OwotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY25hbWUgPSAi bWV0YV9pc19zeW5jaW5nIildCi1AQCAtMTY1LDEyICsxNTcsMTMgQEAgbmFtZXNwYWNlIE1ldGEg ewotIAkJcHVibGljIHVub3duZWQgTWV0YS5EbmQgZ2V0X2RuZCAoKTsKLSAJCXB1YmxpYyB1bm93 bmVkIE1ldGEuUmVtb3RlQWNjZXNzQ29udHJvbGxlciBnZXRfcmVtb3RlX2FjY2Vzc19jb250cm9s bGVyICgpOwotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfc3RhZ2UgKCk7Ci0r CQlwdWJsaWMgYm9vbCBpc19yZW5kZXJpbmdfaGFyZHdhcmVfYWNjZWxlcmF0ZWQgKCk7Ci0gCQlw dWJsaWMgdm9pZCBsb2NrX2xheW91dF9ncm91cCAodWludCBpZHgpOwotIAkJcHVibGljIHZvaWQg c2V0X2tleW1hcCAoc3RyaW5nIGxheW91dHMsIHN0cmluZyB2YXJpYW50cywgc3RyaW5nIG9wdGlv bnMpOwotIAkJcHVibGljIHZvaWQgc2V0X251bWxvY2sgKGJvb2wgbnVtbG9ja19zdGF0ZSk7Ci0g CQlwdWJsaWMgc2lnbmFsIHZvaWQga2V5bWFwX2NoYW5nZWQgKCk7Ci0gCQlwdWJsaWMgc2lnbmFs IHZvaWQga2V5bWFwX2xheW91dF9ncm91cF9jaGFuZ2VkICh1aW50IG9iamVjdCk7Ci0tCQlwdWJs aWMgc2lnbmFsIHZvaWQgbGFzdF9kZXZpY2VfY2hhbmdlZCAoaW50IG9iamVjdCk7Ci0rCQlwdWJs aWMgc2lnbmFsIHZvaWQgbGFzdF9kZXZpY2VfY2hhbmdlZCAoQ2x1dHRlci5JbnB1dERldmljZSBv YmplY3QpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIGxpZF9pc19jbG9zZWRfY2hhbmdlZCAoYm9v bCBvYmplY3QpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEt YmFja2dyb3VuZC5oIiwgdHlwZV9pZCA9ICJtZXRhX2JhY2tncm91bmRfZ2V0X3R5cGUgKCkiKV0K LUBAIC0xODAsNyArMTczLDcgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIHN0YXRpYyB2 b2lkIHJlZnJlc2hfYWxsICgpOwotIAkJcHVibGljIHZvaWQgc2V0X2JsZW5kIChHTGliLkZpbGUg ZmlsZTEsIEdMaWIuRmlsZSBmaWxlMiwgZG91YmxlIGJsZW5kX2ZhY3RvciwgR0Rlc2t0b3AuQmFj a2dyb3VuZFN0eWxlIHN0eWxlKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9jb2xvciAoQ2x1dHRlci5D b2xvciBjb2xvcik7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfZmlsZSAoR0xpYi5GaWxlIGZpbGUsIEdE ZXNrdG9wLkJhY2tncm91bmRTdHlsZSBzdHlsZSk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfZmlsZSAo R0xpYi5GaWxlPyBmaWxlLCBHRGVza3RvcC5CYWNrZ3JvdW5kU3R5bGUgc3R5bGUpOwotIAkJcHVi bGljIHZvaWQgc2V0X2dyYWRpZW50IChHRGVza3RvcC5CYWNrZ3JvdW5kU2hhZGluZyBzaGFkaW5n X2RpcmVjdGlvbiwgQ2x1dHRlci5Db2xvciBjb2xvciwgQ2x1dHRlci5Db2xvciBzZWNvbmRfY29s b3IpOwotIAkJW05vQWNjZXNzb3JNZXRob2RdCi0gCQlwdWJsaWMgTWV0YS5EaXNwbGF5IG1ldGFf ZGlzcGxheSB7IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci1AQCAtMTkwLDkgKzE4MywxOCBAQCBu YW1lc3BhY2UgTWV0YSB7Ci0gCXB1YmxpYyBjbGFzcyBCYWNrZ3JvdW5kQWN0b3IgOiBDbHV0dGVy LkFjdG9yLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250 YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVu Y3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyQWN0b3IqIildCi0gCQlwdWJsaWMgQmFja2dy b3VuZEFjdG9yIChNZXRhLkRpc3BsYXkgZGlzcGxheSwgaW50IG1vbml0b3IpOwotKwkJW05vQWNj ZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMgTWV0YS5EaXNwbGF5IG1ldGFfZGlzcGxheSB7IG93bmVk IGdldDsgY29uc3RydWN0OyB9Ci0rCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSsJCXB1YmxpYyBpbnQg bW9uaXRvciB7IGdldDsgY29uc3RydWN0OyB9Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvbWV0YS1iYWNrZ3JvdW5kLWNvbnRlbnQuaCIsIHR5cGVfaWQgPSAibWV0YV9i YWNrZ3JvdW5kX2NvbnRlbnRfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNzIEJhY2tncm91 bmRDb250ZW50IDogR0xpYi5PYmplY3QsIENsdXR0ZXIuQ29udGVudCB7Ci0rCQlbQ0NvZGUgKGhh c19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0rCQlwcm90ZWN0ZWQgQmFja2dyb3VuZENv bnRlbnQgKCk7Ci0rCQlwdWJsaWMgc3RhdGljIENsdXR0ZXIuQ29udGVudCBAbmV3IChNZXRhLkRp c3BsYXkgZGlzcGxheSwgaW50IG1vbml0b3IpOwotIAkJcHVibGljIHZvaWQgc2V0X2JhY2tncm91 bmQgKE1ldGEuQmFja2dyb3VuZCBiYWNrZ3JvdW5kKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9ncmFk aWVudCAoYm9vbCBlbmFibGVkLCBpbnQgaGVpZ2h0LCBkb3VibGUgdG9uZV9zdGFydCk7Ci0tCQlw dWJsaWMgdm9pZCBzZXRfbW9uaXRvciAoaW50IG1vbml0b3IpOwotIAkJcHVibGljIHZvaWQgc2V0 X3ZpZ25ldHRlIChib29sIGVuYWJsZWQsIGRvdWJsZSBicmlnaHRuZXNzLCBkb3VibGUgc2hhcnBu ZXNzKTsKLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJcHVibGljIE1ldGEuQmFja2dyb3VuZCBi YWNrZ3JvdW5kIHsgb3duZWQgZ2V0OyBzZXQ7IH0KLUBAIC0yNzcsMTQgKzI3OSwxNCBAQCBuYW1l c3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMgc3RhdGljIHVub3duZWQgTWV0YS5DdXJzb3JUcmFja2Vy IGdldF9mb3JfZGlzcGxheSAoTWV0YS5EaXNwbGF5IGRpc3BsYXkpOwotIAkJcHVibGljIHZvaWQg Z2V0X2hvdCAob3V0IGludCB4LCBvdXQgaW50IHkpOwotIAkJcHVibGljIHZvaWQgZ2V0X3BvaW50 ZXIgKGludCB4LCBpbnQgeSwgQ2x1dHRlci5Nb2RpZmllclR5cGUgbW9kcyk7Ci0rCQlwdWJsaWMg Ym9vbCBnZXRfcG9pbnRlcl92aXNpYmxlICgpOwotIAkJcHVibGljIHVub3duZWQgQ29nbC5UZXh0 dXJlIGdldF9zcHJpdGUgKCk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfcG9pbnRlcl92aXNpYmxlIChi b29sIHZpc2libGUpOwotKwkJW05vQWNjZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMgTWV0YS5CYWNr ZW5kIGJhY2tlbmQgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotIAkJcHVibGljIHNpZ25hbCB2 b2lkIGN1cnNvcl9jaGFuZ2VkICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgiLCB0eXBlX2lkID0gIm1ldGFfZGJ1c19kaXNw bGF5X2NvbmZpZ19za2VsZXRvbl9nZXRfdHlwZSAoKSIpXQotLQlwdWJsaWMgY2xhc3MgREJ1c0Rp c3BsYXlDb25maWdTa2VsZXRvbiA6IEdMaWIuREJ1c0ludGVyZmFjZVNrZWxldG9uLCBHTGliLkRC dXNJbnRlcmZhY2UgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2Up XQotLQkJcHJvdGVjdGVkIERCdXNEaXNwbGF5Q29uZmlnU2tlbGV0b24gKCk7Ci0rCQlwdWJsaWMg c2lnbmFsIHZvaWQgY3Vyc29yX21vdmVkIChmbG9hdCB4LCBmbG9hdCB5KTsKLSsJCXB1YmxpYyBz aWduYWwgdm9pZCB2aXNpYmlsaXR5X2NoYW5nZWQgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvZGlzcGxheS5oIiwgdHlwZV9pZCA9ICJtZXRhX2Rpc3BsYXlfZ2V0 X3R5cGUgKCkiKV0KLSAJcHVibGljIGNsYXNzIERpc3BsYXkgOiBHTGliLk9iamVjdCB7Ci1AQCAt MzA5LDMyICszMTEsMzkgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIGJvb2wgZ2V0X21v bml0b3JfaW5fZnVsbHNjcmVlbiAoaW50IG1vbml0b3IpOwotIAkJcHVibGljIGludCBnZXRfbW9u aXRvcl9pbmRleF9mb3JfcmVjdCAoTWV0YS5SZWN0YW5nbGUgcmVjdCk7Ci0gCQlwdWJsaWMgaW50 IGdldF9tb25pdG9yX25laWdoYm9yX2luZGV4IChpbnQgd2hpY2hfbW9uaXRvciwgTWV0YS5EaXNw bGF5RGlyZWN0aW9uIGRpcik7Ci0rCQlwdWJsaWMgZmxvYXQgZ2V0X21vbml0b3Jfc2NhbGUgKGlu dCBtb25pdG9yKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X25fbW9uaXRvcnMgKCk7Ci0gCQlwdWJsaWMg c3RyaW5nIGdldF9wYWRfYWN0aW9uX2xhYmVsIChDbHV0dGVyLklucHV0RGV2aWNlIHBhZCwgTWV0 YS5QYWRBY3Rpb25UeXBlIGFjdGlvbl90eXBlLCB1aW50IGFjdGlvbl9udW1iZXIpOwotIAkJcHVi bGljIGludCBnZXRfcHJpbWFyeV9tb25pdG9yICgpOwotKwkJcHVibGljIHVub3duZWQgTWV0YS5T ZWxlY3Rpb24gZ2V0X3NlbGVjdGlvbiAoKTsKLSAJCXB1YmxpYyB2b2lkIGdldF9zaXplIChvdXQg aW50IHdpZHRoLCBvdXQgaW50IGhlaWdodCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBNZXRhLlNvdW5k UGxheWVyIGdldF9zb3VuZF9wbGF5ZXIgKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBNZXRhLldpbmRv dyBnZXRfdGFiX2N1cnJlbnQgKE1ldGEuVGFiTGlzdCB0eXBlLCBNZXRhLldvcmtzcGFjZSB3b3Jr c3BhY2UpOwotIAkJcHVibGljIEdMaWIuTGlzdDx3ZWFrIE1ldGEuV2luZG93PiBnZXRfdGFiX2xp c3QgKE1ldGEuVGFiTGlzdCB0eXBlLCBNZXRhLldvcmtzcGFjZT8gd29ya3NwYWNlKTsKLSAJCXB1 YmxpYyB1bm93bmVkIE1ldGEuV2luZG93IGdldF90YWJfbmV4dCAoTWV0YS5UYWJMaXN0IHR5cGUs IE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSwgTWV0YS5XaW5kb3c/IHdpbmRvdywgYm9vbCBiYWNr d2FyZCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBNZXRhLldvcmtzcGFjZU1hbmFnZXIgZ2V0X3dvcmtz cGFjZV9tYW5hZ2VyICgpOwotLQkJcHVibGljIHVpbnQgZ3JhYl9hY2NlbGVyYXRvciAoc3RyaW5n IGFjY2VsZXJhdG9yKTsKLSsJCXB1YmxpYyB1aW50IGdyYWJfYWNjZWxlcmF0b3IgKHN0cmluZyBh Y2NlbGVyYXRvciwgTWV0YS5LZXlCaW5kaW5nRmxhZ3MgZmxhZ3MpOwotIAkJcHVibGljIGJvb2wg aXNfcG9pbnRlcl9lbXVsYXRpbmdfc2VxdWVuY2UgKENsdXR0ZXIuRXZlbnRTZXF1ZW5jZT8gc2Vx dWVuY2UpOwotIAkJcHVibGljIGJvb2wgcmVtb3ZlX2tleWJpbmRpbmcgKHN0cmluZyBuYW1lKTsK LSAJCXB1YmxpYyB2b2lkIHJlcXVlc3RfcGFkX29zZCAoQ2x1dHRlci5JbnB1dERldmljZSBwYWQs IGJvb2wgZWRpdGlvbl9tb2RlKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9jdXJzb3IgKE1ldGEuQ3Vy c29yIGN1cnNvcik7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfaW5wdXRfZm9jdXMgKE1ldGEuV2luZG93 IHdpbmRvdywgYm9vbCBmb2N1c19mcmFtZSwgdWludDMyIHRpbWVzdGFtcCk7Ci0gCQlwdWJsaWMg R0xpYi5TTGlzdDx3ZWFrIE1ldGEuV2luZG93PiBzb3J0X3dpbmRvd3NfYnlfc3RhY2tpbmcgKEdM aWIuU0xpc3Q8TWV0YS5XaW5kb3c+IHdpbmRvd3MpOwotIAkJcHVibGljIGJvb2wgc3VwcG9ydHNf ZXh0ZW5kZWRfYmFycmllcnMgKCk7Ci0gCQlwdWJsaWMgdm9pZCB1bmZyZWV6ZV9rZXlib2FyZCAo dWludDMyIHRpbWVzdGFtcCk7Ci0gCQlwdWJsaWMgYm9vbCB1bmdyYWJfYWNjZWxlcmF0b3IgKHVp bnQgYWN0aW9uX2lkKTsKLSAJCXB1YmxpYyB2b2lkIHVuZ3JhYl9rZXlib2FyZCAodWludDMyIHRp bWVzdGFtcCk7Ci0rCQlwdWJsaWMgdm9pZCB1bnNldF9pbnB1dF9mb2N1cyAodWludDMyIHRpbWVz dGFtcCk7Ci0gCQlwdWJsaWMgYm9vbCB4c2VydmVyX3RpbWVfaXNfYmVmb3JlICh1aW50MzIgdGlt ZTEsIHVpbnQzMiB0aW1lMik7Ci0gCQlwdWJsaWMgTWV0YS5XaW5kb3cgZm9jdXNfd2luZG93IHsg Z2V0OyB9Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgYWNjZWxlcmF0b3JfYWN0aXZhdGVkICh1aW50 IG9iamVjdCwgdWludCBwMCwgdWludCBwMSk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgYWNjZWxl cmF0b3JfYWN0aXZhdGVkICh1aW50IG9iamVjdCwgQ2x1dHRlci5JbnB1dERldmljZSBwMCwgdWlu dCBwMSk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgY2xvc2luZyAoKTsKLSAJCXB1YmxpYyBzaWdu YWwgdm9pZCBjdXJzb3JfdXBkYXRlZCAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBnbF92aWRl b19tZW1vcnlfcHVyZ2VkICgpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIGdyYWJfb3BfYmVnaW4g KE1ldGEuRGlzcGxheSBvYmplY3QsIE1ldGEuV2luZG93IHAwLCBNZXRhLkdyYWJPcCBwMSk7Ci0g CQlwdWJsaWMgc2lnbmFsIHZvaWQgZ3JhYl9vcF9lbmQgKE1ldGEuRGlzcGxheSBvYmplY3QsIE1l dGEuV2luZG93IHAwLCBNZXRhLkdyYWJPcCBwMSk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgaW5f ZnVsbHNjcmVlbl9jaGFuZ2VkICgpOwotKwkJcHVibGljIHNpZ25hbCBib29sIGluaXRfeHNlcnZl ciAoR0xpYi5UYXNrIG9iamVjdCk7Ci0gCQlwdWJsaWMgc2lnbmFsIGJvb2wgbW9kaWZpZXJzX2Fj Y2VsZXJhdG9yX2FjdGl2YXRlZCAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBvdmVybGF5X2tl eSAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBwYWRfbW9kZV9zd2l0Y2ggKENsdXR0ZXIuSW5w dXREZXZpY2Ugb2JqZWN0LCB1aW50IHAwLCB1aW50IHAxKTsKLUBAIC0zNDUsNyArMzU0LDYgQEAg bmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIHNpZ25hbCBib29sIHNob3dfcmVzaXplX3BvcHVw IChib29sIG9iamVjdCwgTWV0YS5SZWN0YW5nbGUgcDAsIGludCBwMSwgaW50IHAyKTsKLSAJCXB1 YmxpYyBzaWduYWwgYm9vbCBzaG93X3Jlc3RhcnRfbWVzc2FnZSAoc3RyaW5nPyBtZXNzYWdlKTsK LSAJCXB1YmxpYyBzaWduYWwgdm9pZCBzaG93aW5nX2Rlc2t0b3BfY2hhbmdlZCAoKTsKLS0JCXB1 YmxpYyBzaWduYWwgdm9pZCBzdGFydHVwX3NlcXVlbmNlX2NoYW5nZWQgKHZvaWQqIG9iamVjdCk7 Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgd2luZG93X2NyZWF0ZWQgKE1ldGEuV2luZG93IG9iamVj dCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgd2luZG93X2RlbWFuZHNfYXR0ZW50aW9uIChNZXRh LldpbmRvdyBvYmplY3QpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIHdpbmRvd19lbnRlcmVkX21v bml0b3IgKGludCBvYmplY3QsIE1ldGEuV2luZG93IHAwKTsKLUBAIC0zNTQsNiArMzYyLDcgQEAg bmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIHNpZ25hbCB2b2lkIHdvcmthcmVhc19jaGFuZ2Vk ICgpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIHgxMV9kaXNwbGF5X2Nsb3NpbmcgKCk7Ci0gCQlw dWJsaWMgc2lnbmFsIHZvaWQgeDExX2Rpc3BsYXlfb3BlbmVkICgpOwotKwkJcHVibGljIHNpZ25h bCB2b2lkIHgxMV9kaXNwbGF5X3NldHVwICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL21ldGEtZG5kLmgiLCB0eXBlX2lkID0gIm1ldGFfZG5kX2dldF90eXBlICgp IildCi0gCXB1YmxpYyBjbGFzcyBEbmQgOiBHTGliLk9iamVjdCB7Ci1AQCAtMzYzLDcgKzM3Miw3 IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBkbmRfbGVhdmUgKCk7 Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgZG5kX3Bvc2l0aW9uX2NoYW5nZSAoaW50IG9iamVjdCwg aW50IHAwKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24u aCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9tYWluLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJW0NvbXBhY3RdCi0gCXB1Ymxp YyBjbGFzcyBGcmFtZSB7Ci0gCX0KLUBAIC0zNzQsMTMgKzM4MywxMiBAQCBuYW1lc3BhY2UgTWV0 YSB7Ci0gCQlwdWJsaWMgdWludCBhZGRfaWRsZV93YXRjaCAodWludDY0IGludGVydmFsX21zZWMs IG93bmVkIE1ldGEuSWRsZU1vbml0b3JXYXRjaEZ1bmM/IGNhbGxiYWNrKTsKLSAJCXB1YmxpYyB1 aW50IGFkZF91c2VyX2FjdGl2ZV93YXRjaCAob3duZWQgTWV0YS5JZGxlTW9uaXRvcldhdGNoRnVu Yz8gY2FsbGJhY2spOwotIAkJcHVibGljIHN0YXRpYyB1bm93bmVkIE1ldGEuSWRsZU1vbml0b3Ig Z2V0X2NvcmUgKCk7Ci0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgTWV0YS5JZGxlTW9uaXRvciBn ZXRfZm9yX2RldmljZSAoaW50IGRldmljZV9pZCk7Ci0gCQlwdWJsaWMgaW50NjQgZ2V0X2lkbGV0 aW1lICgpOwotIAkJcHVibGljIHZvaWQgcmVtb3ZlX3dhdGNoICh1aW50IGlkKTsKLSAJCVtOb0Fj Y2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGludCBkZXZpY2VfaWQgeyBnZXQ7IGNvbnN0cnVjdDsg fQotKwkJcHVibGljIENsdXR0ZXIuSW5wdXREZXZpY2UgZGV2aWNlIHsgb3duZWQgZ2V0OyBjb25z dHJ1Y3Q7IH0KLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9rZXliaW5k aW5ncy5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0g ImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAibWV0YV9rZXlfYmluZGluZ19nZXRfdHlwZSAoKSIp XQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjb3B5X2Z1bmN0 aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlw ZV9pZCA9ICJtZXRhX2tleV9iaW5kaW5nX2dldF90eXBlICgpIildCi0gCVtDb21wYWN0XQotIAlw dWJsaWMgY2xhc3MgS2V5QmluZGluZyB7Ci0gCQlwdWJsaWMgdWludCBnZXRfbWFzayAoKTsKLUBA IC0zOTEsOCArMzk5LDIxIEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCVtDQ29kZSAoY25hbWUgPSAi bWV0YV9rZXliaW5kaW5nc19zZXRfY3VzdG9tX2hhbmRsZXIiKV0KLSAJCXB1YmxpYyBzdGF0aWMg Ym9vbCBzZXRfY3VzdG9tX2hhbmRsZXIgKHN0cmluZyBuYW1lLCBvd25lZCBNZXRhLktleUhhbmRs ZXJGdW5jPyBoYW5kbGVyKTsKLSAJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9tZXRhLWxhdW5jaC1jb250ZXh0LmgiLCB0eXBlX2lkID0gIm1ldGFfbGF1bmNoX2NvbnRleHRf Z2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNzIExhdW5jaENvbnRleHQgOiBHTGliLkFwcExh dW5jaENvbnRleHQgewotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2Up XQotKwkJcHJvdGVjdGVkIExhdW5jaENvbnRleHQgKCk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfdGlt ZXN0YW1wICh1aW50MzIgdGltZXN0YW1wKTsKLSsJCXB1YmxpYyB2b2lkIHNldF93b3Jrc3BhY2Ug KE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSk7Ci0rCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSsJCXB1 YmxpYyBNZXRhLkRpc3BsYXkgZGlzcGxheSB7IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci0rCQlb Tm9BY2Nlc3Nvck1ldGhvZF0KLSsJCXB1YmxpYyB1aW50IHRpbWVzdGFtcCB7IGdldDsgc2V0OyB9 Ci0rCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSsJCXB1YmxpYyBNZXRhLldvcmtzcGFjZSB3b3Jrc3Bh Y2UgeyBvd25lZCBnZXQ7IHNldDsgfQotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL21ldGEtbW9uaXRvci1tYW5hZ2VyLmgiLCB0eXBlX2lkID0gIm1ldGFfbW9uaXRvcl9t YW5hZ2VyX2dldF90eXBlICgpIildCi0tCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBNb25pdG9yTWFu YWdlciA6IE1ldGEuREJ1c0Rpc3BsYXlDb25maWdTa2VsZXRvbiwgR0xpYi5EQnVzSW50ZXJmYWNl LCBHTGliLkRCdXNJbnRlcmZhY2UgewotKwlwdWJsaWMgY2xhc3MgTW9uaXRvck1hbmFnZXIgOiBH TGliLk9iamVjdCB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSld Ci0gCQlwcm90ZWN0ZWQgTW9uaXRvck1hbmFnZXIgKCk7Ci0gCQlwdWJsaWMgYm9vbCBjYW5fc3dp dGNoX2NvbmZpZyAoKTsKLUBAIC00MDcsNiArNDI4LDcgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJ cHVibGljIHNpZ25hbCB2b2lkIGNvbmZpcm1fZGlzcGxheV9jaGFuZ2UgKCk7Ci0gCQlwdWJsaWMg c2lnbmFsIHZvaWQgbW9uaXRvcnNfY2hhbmdlZCAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBt b25pdG9yc19jaGFuZ2VkX2ludGVybmFsICgpOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIHBvd2Vy X3NhdmVfbW9kZV9jaGFuZ2VkICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL21ldGEtcGx1Z2luLmgiLCB0eXBlX2lkID0gIm1ldGFfcGx1Z2luX2dldF90eXBlICgp IildCi0gCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBQbHVnaW4gOiBHTGliLk9iamVjdCB7Ci1AQCAt NDMwLDYgKzQ1Miw4IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQg a2lsbF9zd2l0Y2hfd29ya3NwYWNlICgpOwotIAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0 dWFsIHZvaWQga2lsbF93aW5kb3dfZWZmZWN0cyAoTWV0YS5XaW5kb3dBY3RvciBhY3Rvcik7Ci0r CQlbTm9XcmFwcGVyXQotKwkJcHVibGljIHZpcnR1YWwgdm9pZCBsb2NhdGVfcG9pbnRlciAoKTsK LSAJCXB1YmxpYyBzdGF0aWMgdm9pZCBtYW5hZ2VyX3NldF9wbHVnaW5fdHlwZSAoR0xpYi5UeXBl IGd0eXBlKTsKLSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIG1hcCAoTWV0 YS5XaW5kb3dBY3RvciBhY3Rvcik7Ci1AQCAtNDY1LDI2ICs0ODksNTYgQEAgbmFtZXNwYWNlIE1l dGEgewotIAlwdWJsaWMgY2xhc3MgUmVtb3RlQWNjZXNzQ29udHJvbGxlciA6IEdMaWIuT2JqZWN0 IHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCXByb3Rl Y3RlZCBSZW1vdGVBY2Nlc3NDb250cm9sbGVyICgpOwotKwkJcHVibGljIHZvaWQgaW5oaWJpdF9y ZW1vdGVfYWNjZXNzICgpOwotKwkJcHVibGljIHZvaWQgdW5pbmhpYml0X3JlbW90ZV9hY2Nlc3Mg KCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgbmV3X2hhbmRsZSAoTWV0YS5SZW1vdGVBY2Nlc3NI YW5kbGUgb2JqZWN0KTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t ZXRhLXJlbW90ZS1hY2Nlc3MtY29udHJvbGxlci5oIiwgdHlwZV9pZCA9ICJtZXRhX3JlbW90ZV9h Y2Nlc3NfaGFuZGxlX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBjbGFzcyBSZW1vdGVBY2Nlc3NI YW5kbGUgOiBHTGliLk9iamVjdCB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24g PSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQgUmVtb3RlQWNjZXNzSGFuZGxlICgpOwotKwkJcHVibGlj IGJvb2wgZ2V0X2Rpc2FibGVfYW5pbWF0aW9ucyAoKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQg c3RvcCAoKTsKLSsJCVtOb0FjY2Vzc29yTWV0aG9kXQotKwkJcHVibGljIGJvb2wgaXNfcmVjb3Jk aW5nIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBzdG9wcGVkICgp OwotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIHR5cGVf aWQgPSAibWV0YV9zZWxlY3Rpb25fZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNzIFNlbGVj dGlvbiA6IEdMaWIuT2JqZWN0IHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9 IGZhbHNlKV0KLSsJCXB1YmxpYyBTZWxlY3Rpb24gKE1ldGEuRGlzcGxheSBkaXNwbGF5KTsKLSsJ CXB1YmxpYyBHTGliLkxpc3Q8c3RyaW5nPiBnZXRfbWltZXR5cGVzIChNZXRhLlNlbGVjdGlvblR5 cGUgc2VsZWN0aW9uX3R5cGUpOwotKwkJcHVibGljIHZvaWQgc2V0X293bmVyIChNZXRhLlNlbGVj dGlvblR5cGUgc2VsZWN0aW9uX3R5cGUsIE1ldGEuU2VsZWN0aW9uU291cmNlIG93bmVyKTsKLSsJ CXB1YmxpYyBhc3luYyBib29sIHRyYW5zZmVyX2FzeW5jIChNZXRhLlNlbGVjdGlvblR5cGUgc2Vs ZWN0aW9uX3R5cGUsIHN0cmluZyBtaW1ldHlwZSwgc3NpemVfdCBzaXplLCBHTGliLk91dHB1dFN0 cmVhbSBvdXRwdXQsIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlKSB0aHJvd3MgR0xpYi5F cnJvcjsKLSsJCXB1YmxpYyB2b2lkIHVuc2V0X293bmVyIChNZXRhLlNlbGVjdGlvblR5cGUgc2Vs ZWN0aW9uX3R5cGUsIE1ldGEuU2VsZWN0aW9uU291cmNlIG93bmVyKTsKLSsJCXB1YmxpYyBzaWdu YWwgdm9pZCBvd25lcl9jaGFuZ2VkICh1aW50IG9iamVjdCwgTWV0YS5TZWxlY3Rpb25Tb3VyY2Ug cDApOwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIHR5 cGVfaWQgPSAibWV0YV9zZWxlY3Rpb25fc291cmNlX2dldF90eXBlICgpIildCi0rCXB1YmxpYyBj bGFzcyBTZWxlY3Rpb25Tb3VyY2UgOiBHTGliLk9iamVjdCB7Ci0rCQlbQ0NvZGUgKGhhc19jb25z dHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0rCQlwcm90ZWN0ZWQgU2VsZWN0aW9uU291cmNlICgp OwotKwkJcHVibGljIHZpcnR1YWwgR0xpYi5MaXN0PHN0cmluZz4gZ2V0X21pbWV0eXBlcyAoKTsK LSsJCXB1YmxpYyBib29sIGlzX2FjdGl2ZSAoKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIGFzeW5jIEdM aWIuSW5wdXRTdHJlYW0gcmVhZF9hc3luYyAoc3RyaW5nIG1pbWV0eXBlLCBHTGliLkNhbmNlbGxh YmxlPyBjYW5jZWxsYWJsZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgdmlydHVhbCBz aWduYWwgdm9pZCBhY3RpdmF0ZWQgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBk ZWFjdGl2YXRlZCAoKTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t YWluLmgiLCB0eXBlX2lkID0gIm1ldGFfc2VsZWN0aW9uX3NvdXJjZV9tZW1vcnlfZ2V0X3R5cGUg KCkiKV0KLSsJcHVibGljIGNsYXNzIFNlbGVjdGlvblNvdXJjZU1lbW9yeSA6IE1ldGEuU2VsZWN0 aW9uU291cmNlIHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0 eXBlID0gIk1ldGFTZWxlY3Rpb25Tb3VyY2UqIildCi0rCQlwdWJsaWMgU2VsZWN0aW9uU291cmNl TWVtb3J5IChzdHJpbmcgbWltZXR5cGUsIEdMaWIuQnl0ZXMgY29udGVudCk7Ci0rCX0KLSAJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1zZXR0aW5ncy5oIiwgaGFzX3R5cGVf aWQgPSBmYWxzZSldCi0gCVtDb21wYWN0XQotIAlwdWJsaWMgY2xhc3MgU2V0dGluZ3MgewotIAkJ cHVibGljIGludCBnZXRfZm9udF9kcGkgKCk7Ci0gCQlwdWJsaWMgaW50IGdldF91aV9zY2FsaW5n X2ZhY3RvciAoKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRh LXNoYWRvdy1mYWN0b3J5LmgiLCByZWZfZnVuY3Rpb24gPSAibWV0YV9zaGFkb3dfcmVmIiwgdHlw ZV9pZCA9ICJtZXRhX3NoYWRvd19nZXRfdHlwZSAoKSIsIHVucmVmX2Z1bmN0aW9uID0gIm1ldGFf c2hhZG93X3VucmVmIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4u aCIsIHJlZl9mdW5jdGlvbiA9ICJtZXRhX3NoYWRvd19yZWYiLCB0eXBlX2lkID0gIm1ldGFfc2hh ZG93X2dldF90eXBlICgpIiwgdW5yZWZfZnVuY3Rpb24gPSAibWV0YV9zaGFkb3dfdW5yZWYiKV0K LSAJW0NvbXBhY3RdCi0gCXB1YmxpYyBjbGFzcyBTaGFkb3cgewotIAkJcHVibGljIHZvaWQgZ2V0 X2JvdW5kcyAoaW50IHdpbmRvd194LCBpbnQgd2luZG93X3ksIGludCB3aW5kb3dfd2lkdGgsIGlu dCB3aW5kb3dfaGVpZ2h0LCBDYWlyby5SZWN0YW5nbGVJbnQgYm91bmRzKTsKLS0JCXB1YmxpYyB2 b2lkIHBhaW50IChpbnQgd2luZG93X3gsIGludCB3aW5kb3dfeSwgaW50IHdpbmRvd193aWR0aCwg aW50IHdpbmRvd19oZWlnaHQsIHVpbnQ4IG9wYWNpdHksIENhaXJvLlJlZ2lvbj8gY2xpcCwgYm9v bCBjbGlwX3N0cmljdGx5KTsKLSsJCXB1YmxpYyB2b2lkIHBhaW50IChDb2dsLkZyYW1lYnVmZmVy IGZyYW1lYnVmZmVyLCBpbnQgd2luZG93X3gsIGludCB3aW5kb3dfeSwgaW50IHdpbmRvd193aWR0 aCwgaW50IHdpbmRvd19oZWlnaHQsIHVpbnQ4IG9wYWNpdHksIENhaXJvLlJlZ2lvbj8gY2xpcCwg Ym9vbCBjbGlwX3N0cmljdGx5KTsKLSAJCXB1YmxpYyBNZXRhLlNoYWRvdyBAcmVmICgpOwotIAkJ cHVibGljIHZvaWQgdW5yZWYgKCk7Ci0gCX0KLUBAIC00OTksMjggKzU1Myw3NCBAQCBuYW1lc3Bh Y2UgTWV0YSB7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgY2hhbmdlZCAoKTsKLSAJfQotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXNoYXBlZC10ZXh0dXJlLmgiLCB0eXBl X2lkID0gIm1ldGFfc2hhcGVkX3RleHR1cmVfZ2V0X3R5cGUgKCkiKV0KLS0JcHVibGljIGNsYXNz IFNoYXBlZFRleHR1cmUgOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIu QW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0rCXB1 YmxpYyBjbGFzcyBTaGFwZWRUZXh0dXJlIDogR0xpYi5PYmplY3QsIENsdXR0ZXIuQ29udGVudCB7 Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwcm90ZWN0 ZWQgU2hhcGVkVGV4dHVyZSAoKTsKLS0JCXB1YmxpYyBDYWlyby5TdXJmYWNlIGdldF9pbWFnZSAo Q2Fpcm8uUmVjdGFuZ2xlSW50IGNsaXApOwotKwkJcHVibGljIENhaXJvLlN1cmZhY2U/IGdldF9p bWFnZSAoQ2Fpcm8uUmVjdGFuZ2xlSW50PyBjbGlwKTsKLSAJCXB1YmxpYyB1bm93bmVkIENvZ2wu VGV4dHVyZSBnZXRfdGV4dHVyZSAoKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9jcmVhdGVfbWlwbWFw cyAoYm9vbCBjcmVhdGVfbWlwbWFwcyk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfbWFza190ZXh0dXJl IChDb2dsLlRleHR1cmUgbWFza190ZXh0dXJlKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9vcGFxdWVf cmVnaW9uIChvd25lZCBDYWlyby5SZWdpb24gb3BhcXVlX3JlZ2lvbik7Ci0tCQlwdWJsaWMgYm9v bCB1cGRhdGVfYXJlYSAoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotIAkJ cHVibGljIHNpZ25hbCB2b2lkIHNpemVfY2hhbmdlZCAoKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLW11dHRlci5oIiwgdHlwZV9pZCA9ICJtZXRh X3N0YWdlX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L21ldGEtc291bmQtcGxheWVyLmgiLCB0eXBlX2lkID0gIm1ldGFfc291bmRfcGxheWVyX2dldF90 eXBlICgpIildCi0rCXB1YmxpYyBjbGFzcyBTb3VuZFBsYXllciA6IEdMaWIuT2JqZWN0IHsKLSsJ CVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSsJCXByb3RlY3RlZCBT b3VuZFBsYXllciAoKTsKLSsJCXB1YmxpYyB2b2lkIHBsYXlfZnJvbV9maWxlIChHTGliLkZpbGUg ZmlsZSwgc3RyaW5nIGRlc2NyaXB0aW9uLCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9 IG51bGwpOwotKwkJcHVibGljIHZvaWQgcGxheV9mcm9tX3RoZW1lIChzdHJpbmcgbmFtZSwgc3Ry aW5nIGRlc2NyaXB0aW9uLCBHTGliLkNhbmNlbGxhYmxlPyBjYW5jZWxsYWJsZSA9IG51bGwpOwot Kwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21ldGEtc3RhZ2UuaCIsIHR5 cGVfaWQgPSAibWV0YV9zdGFnZV9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgY2xhc3MgU3RhZ2Ug OiBDbHV0dGVyLlN0YWdlLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1 dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0gCQlbQ0NvZGUgKGhhc19jb25z dHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQgU3RhZ2UgKCk7Ci0gCQlwdWJs aWMgc3RhdGljIGJvb2wgaXNfZm9jdXNlZCAoTWV0YS5EaXNwbGF5IGRpc3BsYXkpOwotKwkJcHVi bGljIHNpZ25hbCB2b2lkIGFjdG9yc19wYWludGVkICgpOwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL21ldGEtc3RhcnR1cC1ub3RpZmljYXRpb24uaCIsIHR5cGVfaWQg PSAibWV0YV9zdGFydHVwX25vdGlmaWNhdGlvbl9nZXRfdHlwZSAoKSIpXQotKwlwdWJsaWMgY2xh c3MgU3RhcnR1cE5vdGlmaWNhdGlvbiA6IEdMaWIuT2JqZWN0IHsKLSsJCVtDQ29kZSAoaGFzX2Nv bnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSsJCXByb3RlY3RlZCBTdGFydHVwTm90aWZpY2F0 aW9uICgpOwotKwkJcHVibGljIE1ldGEuTGF1bmNoQ29udGV4dCBjcmVhdGVfbGF1bmNoZXIgKCk7 Ci0rCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSsJCXB1YmxpYyBNZXRhLkRpc3BsYXkgZGlzcGxheSB7 IG93bmVkIGdldDsgY29uc3RydWN0OyB9Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgY2hhbmdlZCAo dm9pZCogb2JqZWN0KTsKLSsJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t YWluLmgiLCB0eXBlX2lkID0gIm1ldGFfc3RhcnR1cF9zZXF1ZW5jZV9nZXRfdHlwZSAoKSIpXQot KwlwdWJsaWMgY2xhc3MgU3RhcnR1cFNlcXVlbmNlIDogR0xpYi5PYmplY3QgewotKwkJW0NDb2Rl IChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotKwkJcHJvdGVjdGVkIFN0YXJ0dXBT ZXF1ZW5jZSAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfYXBwbGljYXRpb25faWQg KCk7Ci0rCQlwdWJsaWMgYm9vbCBnZXRfY29tcGxldGVkICgpOwotKwkJcHVibGljIHVub3duZWQg c3RyaW5nIGdldF9pY29uX25hbWUgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2lk ICgpOwotKwkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9uYW1lICgpOwotKwkJcHVibGljIHVp bnQ2NCBnZXRfdGltZXN0YW1wICgpOwotKwkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF93bWNs YXNzICgpOwotKwkJcHVibGljIGludCBnZXRfd29ya3NwYWNlICgpOwotKwkJcHVibGljIHN0cmlu ZyBhcHBsaWNhdGlvbl9pZCB7IGdldDsgY29uc3RydWN0OyB9Ci0rCQlwdWJsaWMgc3RyaW5nIGlj b25fbmFtZSB7IGdldDsgY29uc3RydWN0OyB9Ci0rCQlwdWJsaWMgc3RyaW5nIGlkIHsgZ2V0OyBj b25zdHJ1Y3Q7IH0KLSsJCXB1YmxpYyBzdHJpbmcgbmFtZSB7IGdldDsgY29uc3RydWN0OyB9Ci0r CQlwdWJsaWMgdWludDY0IHRpbWVzdGFtcCB7IGdldDsgY29uc3RydWN0OyB9Ci0rCQlwdWJsaWMg c3RyaW5nIHdtY2xhc3MgeyBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJcHVibGljIGludCB3b3Jrc3Bh Y2UgeyBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJW0hhc0VtaXR0ZXJdCi0rCQlwdWJsaWMgc2lnbmFs IHZvaWQgY29tcGxldGUgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvdGhlbWUuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlbQ29tcGFjdF0KLSAJcHVibGlj IGNsYXNzIFRoZW1lIHsKLSAJCXB1YmxpYyB2b2lkIGZyZWUgKCk7Ci0gCX0KLSsJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS13YXlsYW5kLWNsaWVudC5oIiwgdHlwZV9pZCA9 ICJtZXRhX3dheWxhbmRfY2xpZW50X2dldF90eXBlICgpIildCi0rCXB1YmxpYyBjbGFzcyBXYXls YW5kQ2xpZW50IDogR0xpYi5PYmplY3QgewotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0 aW9uID0gZmFsc2UpXQotKwkJcHVibGljIFdheWxhbmRDbGllbnQgKEdMaWIuU3VicHJvY2Vzc0xh dW5jaGVyIGxhdW5jaGVyKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyB2b2lkIGhpZGVf ZnJvbV93aW5kb3dfbGlzdCAoTWV0YS5XaW5kb3cgd2luZG93KTsKLSsJCXB1YmxpYyBib29sIG93 bnNfd2luZG93IChNZXRhLldpbmRvdyB3aW5kb3cpOwotKwkJcHVibGljIHZvaWQgc2hvd19pbl93 aW5kb3dfbGlzdCAoTWV0YS5XaW5kb3cgd2luZG93KTsKLSsJCXB1YmxpYyBHTGliLlN1YnByb2Nl c3Mgc3Bhd252IChNZXRhLkRpc3BsYXkgZGlzcGxheSwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBm YWxzZSwgYXJyYXlfbnVsbF90ZXJtaW5hdGVkID0gdHJ1ZSldIHN0cmluZ1tdIGFyZ3YpIHRocm93 cyBHTGliLkVycm9yOwotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3dp bmRvdy5oIiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd19nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMg YWJzdHJhY3QgY2xhc3MgV2luZG93IDogR0xpYi5PYmplY3QgewotIAkJW0NDb2RlIChoYXNfY29u c3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotQEAgLTU0Nyw2ICs2NDcsNyBAQCBuYW1lc3BhY2Ug TWV0YSB7Ci0gCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUgZnJhbWVfcmVjdF90b19jbGllbnRfcmVj dCAoTWV0YS5SZWN0YW5nbGUgZnJhbWVfcmVjdCk7Ci0gCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUg Z2V0X2J1ZmZlcl9yZWN0ICgpOwotIAkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9jbGllbnRf bWFjaGluZSAoKTsKLSsJCXB1YmxpYyBNZXRhLldpbmRvd0NsaWVudFR5cGUgZ2V0X2NsaWVudF90 eXBlICgpOwotIAkJcHVibGljIHVub3duZWQgR0xpYi5PYmplY3QgZ2V0X2NvbXBvc2l0b3JfcHJp dmF0ZSAoKTsKLSAJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfZGVzY3JpcHRpb24gKCk7Ci0g CQlwdWJsaWMgdW5vd25lZCBNZXRhLkRpc3BsYXkgZ2V0X2Rpc3BsYXkgKCk7Ci1AQCAtNTYxLDYg KzY2Miw3IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRf Z3RrX3VuaXF1ZV9idXNfbmFtZSAoKTsKLSAJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfZ3Rr X3dpbmRvd19vYmplY3RfcGF0aCAoKTsKLSAJCXB1YmxpYyBib29sIGdldF9pY29uX2dlb21ldHJ5 IChvdXQgTWV0YS5SZWN0YW5nbGUgcmVjdCk7Ci0rCQlwdWJsaWMgdWludDY0IGdldF9pZCAoKTsK LSAJCXB1YmxpYyBNZXRhLlN0YWNrTGF5ZXIgZ2V0X2xheWVyICgpOwotIAkJcHVibGljIE1ldGEu TWF4aW1pemVGbGFncyBnZXRfbWF4aW1pemVkICgpOwotIAkJcHVibGljIGludCBnZXRfbW9uaXRv ciAoKTsKLUBAIC02MTAsOCArNzEyLDYgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIHZv aWQgbW92ZV9yZXNpemVfZnJhbWUgKGJvb2wgdXNlcl9vcCwgaW50IHJvb3RfeF9udywgaW50IHJv b3RfeV9udywgaW50IHcsIGludCBoKTsKLSAJCXB1YmxpYyB2b2lkIG1vdmVfdG9fbW9uaXRvciAo aW50IG1vbml0b3IpOwotIAkJcHVibGljIHZvaWQgcmFpc2UgKCk7Ci0tCQlwdWJsaWMgYm9vbCBy ZXF1ZXN0ZWRfYnlwYXNzX2NvbXBvc2l0b3IgKCk7Ci0tCQlwdWJsaWMgYm9vbCByZXF1ZXN0ZWRf ZG9udF9ieXBhc3NfY29tcG9zaXRvciAoKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9jb21wb3NpdG9y X3ByaXZhdGUgKEdMaWIuT2JqZWN0IHByaXYpOwotIAkJcHVibGljIHZvaWQgc2V0X2RlbWFuZHNf YXR0ZW50aW9uICgpOwotIAkJcHVibGljIHZvaWQgc2V0X2ljb25fZ2VvbWV0cnkgKE1ldGEuUmVj dGFuZ2xlPyByZWN0KTsKLUBAIC02NzIsMjQgKzc3MiwyNSBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0g CQlwdWJsaWMgc2lnbmFsIHZvaWQgc2hvd24gKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgc2l6 ZV9jaGFuZ2VkICgpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIHVubWFuYWdlZCAoKTsKLSsJCXB1 YmxpYyBzaWduYWwgdm9pZCB1bm1hbmFnaW5nICgpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIHdv cmtzcGFjZV9jaGFuZ2VkICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL21ldGEtd2luZG93LWFjdG9yLmgiLCB0eXBlX2lkID0gIm1ldGFfd2luZG93X2FjdG9yX2dl dF90eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBXaW5kb3dBY3RvciA6IENsdXR0ZXIuQWN0b3Is IEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0dGVyLkNvbnRhaW5lciwg Q2x1dHRlci5TY3JpcHRhYmxlIHsKLSsJcHVibGljIGFic3RyYWN0IGNsYXNzIFdpbmRvd0FjdG9y IDogQ2x1dHRlci5BY3RvciwgQXRrLkltcGxlbWVudG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENs dXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotIAkJW0NDb2RlIChoYXNfY29u c3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIFdpbmRvd0FjdG9yICgpOwot KwkJcHVibGljIHZvaWQgZnJlZXplICgpOwotKwkJcHVibGljIENhaXJvLlN1cmZhY2U/IGdldF9p bWFnZSAoQ2Fpcm8uUmVjdGFuZ2xlSW50PyBjbGlwKTsKLSAJCXB1YmxpYyB1bm93bmVkIE1ldGEu V2luZG93IGdldF9tZXRhX3dpbmRvdyAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0 b3IgZ2V0X3RleHR1cmUgKCk7Ci0tCQlwdWJsaWMgWC5XaW5kb3cgZ2V0X3hfd2luZG93ICgpOwot KwkJcHVibGljIHVub3duZWQgTWV0YS5TaGFwZWRUZXh0dXJlIGdldF90ZXh0dXJlICgpOwotIAkJ cHVibGljIGJvb2wgaXNfZGVzdHJveWVkICgpOwotIAkJcHVibGljIHZvaWQgc3luY192aXNpYmls aXR5ICgpOwotKwkJcHVibGljIHZvaWQgdGhhdyAoKTsKLSAJCXB1YmxpYyBNZXRhLldpbmRvdyBt ZXRhX3dpbmRvdyB7IGdldDsgY29uc3RydWN0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0J CXB1YmxpYyBzdHJpbmcgc2hhZG93X2NsYXNzIHsgb3duZWQgZ2V0OyBzZXQ7IH0KLS0JCVtOb0Fj Y2Vzc29yTWV0aG9kXQotLQkJcHVibGljIE1ldGEuU2hhZG93TW9kZSBzaGFkb3dfbW9kZSB7IGdl dDsgc2V0OyB9Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgZGFtYWdlZCAoKTsKLSAJCXB1YmxpYyBz aWduYWwgdm9pZCBlZmZlY3RzX2NvbXBsZXRlZCAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBm aXJzdF9mcmFtZSAoKTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCB0aGF3ZWQgKCk7Ci0gCX0KLSAJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS13aW5kb3ctZ3JvdXAuaCIsIHR5 cGVfaWQgPSAibWV0YV93aW5kb3dfZ3JvdXBfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGNsYXNz IFdpbmRvd0dyb3VwIDogQ2x1dHRlci5BY3RvciwgQXRrLkltcGxlbWVudG9yLCBDbHV0dGVyLkFu aW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotQEAgLTcy MCw3ICs4MjEsOSBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlwdWJsaWMgTWV0YS5SZWN0YW5nbGUg Z2V0X3dvcmtfYXJlYV9mb3JfbW9uaXRvciAoaW50IHdoaWNoX21vbml0b3IpOwotIAkJcHVibGlj IGludCBpbmRleCAoKTsKLSAJCXB1YmxpYyBHTGliLkxpc3Q8d2VhayBNZXRhLldpbmRvdz4gbGlz dF93aW5kb3dzICgpOwotLQkJcHVibGljIHZvaWQgc2V0X2J1aWx0aW5fc3RydXRzIChHTGliLlNM aXN0PE1ldGEuU3RydXQ+IHN0cnV0cyk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfYnVpbHRpbl9zdHJ1 dHMgKEdMaWIuU0xpc3Q8TWV0YS5TdHJ1dD8+IHN0cnV0cyk7Ci0rCQlbTm9BY2Nlc3Nvck1ldGhv ZF0KLSsJCXB1YmxpYyBib29sIGFjdGl2ZSB7IGdldDsgfQotIAkJW05vQWNjZXNzb3JNZXRob2Rd Ci0gCQlwdWJsaWMgdWludCBuX3dpbmRvd3MgeyBnZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9k XQotQEAgLTczNiwyNyArODM5LDMzIEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCXB1YmxpYyB1bm93 bmVkIE1ldGEuV29ya3NwYWNlIGdldF9hY3RpdmVfd29ya3NwYWNlICgpOwotIAkJcHVibGljIGlu dCBnZXRfYWN0aXZlX3dvcmtzcGFjZV9pbmRleCAoKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X25fd29y a3NwYWNlcyAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIE1ldGEuV29ya3NwYWNlIGdldF93b3Jrc3Bh Y2VfYnlfaW5kZXggKGludCBpbmRleCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBNZXRhLldvcmtzcGFj ZT8gZ2V0X3dvcmtzcGFjZV9ieV9pbmRleCAoaW50IGluZGV4KTsKLSAJCXB1YmxpYyB2b2lkIG92 ZXJyaWRlX3dvcmtzcGFjZV9sYXlvdXQgKE1ldGEuRGlzcGxheUNvcm5lciBzdGFydGluZ19jb3Ju ZXIsIGJvb2wgdmVydGljYWxfbGF5b3V0LCBpbnQgbl9yb3dzLCBpbnQgbl9jb2x1bW5zKTsKLSAJ CXB1YmxpYyB2b2lkIHJlbW92ZV93b3Jrc3BhY2UgKE1ldGEuV29ya3NwYWNlIHdvcmtzcGFjZSwg dWludDMyIHRpbWVzdGFtcCk7Ci0rCQlwdWJsaWMgdm9pZCByZW9yZGVyX3dvcmtzcGFjZSAoTWV0 YS5Xb3Jrc3BhY2Ugd29ya3NwYWNlLCBpbnQgbmV3X2luZGV4KTsKLSsJCVtOb0FjY2Vzc29yTWV0 aG9kXQotKwkJcHVibGljIGludCBsYXlvdXRfY29sdW1ucyB7IGdldDsgfQotKwkJW05vQWNjZXNz b3JNZXRob2RdCi0rCQlwdWJsaWMgaW50IGxheW91dF9yb3dzIHsgZ2V0OyB9Ci0gCQlwdWJsaWMg aW50IG5fd29ya3NwYWNlcyB7IGdldDsgfQotIAkJcHVibGljIHNpZ25hbCB2b2lkIGFjdGl2ZV93 b3Jrc3BhY2VfY2hhbmdlZCAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBzaG93aW5nX2Rlc2t0 b3BfY2hhbmdlZCAoKTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCB3b3Jrc3BhY2VfYWRkZWQgKGlu dCBvYmplY3QpOwotIAkJcHVibGljIHNpZ25hbCB2b2lkIHdvcmtzcGFjZV9yZW1vdmVkIChpbnQg b2JqZWN0KTsKLSAJCXB1YmxpYyBzaWduYWwgdm9pZCB3b3Jrc3BhY2Vfc3dpdGNoZWQgKGludCBv YmplY3QsIGludCBwMCwgTWV0YS5Nb3Rpb25EaXJlY3Rpb24gcDEpOwotKwkJcHVibGljIHNpZ25h bCB2b2lkIHdvcmtzcGFjZXNfcmVvcmRlcmVkICgpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21ldGEteDExLWRpc3BsYXkuaCIsIHR5cGVfaWQgPSAibWV0YV94MTFf ZGlzcGxheV9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgY2xhc3MgWDExRGlzcGxheSA6IEdMaWIu T2JqZWN0IHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJ CXByb3RlY3RlZCBYMTFEaXNwbGF5ICgpOwotLQkJcHVibGljIHZvaWQgZm9jdXNfdGhlX25vX2Zv Y3VzX3dpbmRvdyAodWludDMyIHRpbWVzdGFtcCk7Ci0rCQlwdWJsaWMgdm9pZCBjbGVhcl9zdGFn ZV9pbnB1dF9yZWdpb24gKCk7Ci0gCQlwdWJsaWMgaW50IGdldF9kYW1hZ2VfZXZlbnRfYmFzZSAo KTsKLSAJCXB1YmxpYyBpbnQgZ2V0X3NjcmVlbl9udW1iZXIgKCk7Ci0gCQlwdWJsaWMgaW50IGdl dF9zaGFwZV9ldmVudF9iYXNlICgpOwotIAkJcHVibGljIGJvb2wgaGFzX3NoYXBlICgpOwotIAkJ cHVibGljIHZvaWQgc2V0X2NtX3NlbGVjdGlvbiAoKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9pbnB1 dF9mb2N1c193aW5kb3cgKE1ldGEuV2luZG93IHdpbmRvdywgYm9vbCBmb2N1c19mcmFtZSwgdWlu dDMyIHRpbWVzdGFtcCk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfc3RhZ2VfaW5wdXRfcmVnaW9uIChY LlhzZXJ2ZXJSZWdpb24gcmVnaW9uKTsKLSAJCXB1YmxpYyBib29sIHh3aW5kb3dfaXNfYV9ub19m b2N1c193aW5kb3cgKFguV2luZG93IHh3aW5kb3cpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21ldGEtY2xvc2UtZGlhbG9nLmgiLCB0eXBlX2NuYW1lID0gIk1ldGFD bG9zZURpYWxvZ0ludGVyZmFjZSIsIHR5cGVfaWQgPSAibWV0YV9jbG9zZV9kaWFsb2dfZ2V0X3R5 cGUgKCkiKV0KLUBAIC03NzksMjQgKzg4OCwyNCBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlbSGFz RW1pdHRlcl0KLSAJCXB1YmxpYyBzaWduYWwgdm9pZCByZXNwb25zZSAoTWV0YS5JbmhpYml0U2hv cnRjdXRzRGlhbG9nUmVzcG9uc2UgcmVzcG9uc2UpOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0rCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGhhc190eXBlX2lkID0gZmFsc2Up XQotIAlwdWJsaWMgc3RydWN0IEJ1dHRvbkxheW91dCB7Ci0gCQlbQ0NvZGUgKGFycmF5X2xlbmd0 aCA9IGZhbHNlKV0KLS0JCXB1YmxpYyB3ZWFrIE1ldGEuQnV0dG9uRnVuY3Rpb24gbGVmdF9idXR0 b25zWzVdOwotKwkJcHVibGljIHdlYWsgTWV0YS5CdXR0b25GdW5jdGlvbiBsZWZ0X2J1dHRvbnNb NF07Ci0gCQlbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0KLS0JCXB1YmxpYyB3ZWFrIGJv b2wgbGVmdF9idXR0b25zX2hhc19zcGFjZXJbNV07Ci0rCQlwdWJsaWMgd2VhayBib29sIGxlZnRf YnV0dG9uc19oYXNfc3BhY2VyWzRdOwotIAkJW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSld Ci0tCQlwdWJsaWMgd2VhayBNZXRhLkJ1dHRvbkZ1bmN0aW9uIHJpZ2h0X2J1dHRvbnNbNV07Ci0r CQlwdWJsaWMgd2VhayBNZXRhLkJ1dHRvbkZ1bmN0aW9uIHJpZ2h0X2J1dHRvbnNbNF07Ci0gCQlb Q0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0KLS0JCXB1YmxpYyB3ZWFrIGJvb2wgcmlnaHRf YnV0dG9uc19oYXNfc3BhY2VyWzVdOwotKwkJcHVibGljIHdlYWsgYm9vbCByaWdodF9idXR0b25z X2hhc19zcGFjZXJbNF07Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEv Ym94ZXMuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAibWV0YS9tYWluLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJcHVibGljIHN0cnVj dCBFZGdlIHsKLSAJCXB1YmxpYyBNZXRhLlJlY3RhbmdsZSByZWN0OwotIAkJcHVibGljIE1ldGEu U2lkZSBzaWRlX3R5cGU7Ci0gCQlwdWJsaWMgTWV0YS5FZGdlVHlwZSBlZGdlX3R5cGU7Ci0gCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBoYXNfdHlwZV9p ZCA9IGZhbHNlKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwg aGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCXB1YmxpYyBzdHJ1Y3QgRnJhbWVCb3JkZXJzIHsKLSAJ CXB1YmxpYyBHdGsuQm9yZGVyIHZpc2libGU7Ci0gCQlwdWJsaWMgR3RrLkJvcmRlciBpbnZpc2li bGU7Ci1AQCAtODExLDE0ICs5MjAsMTQgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIHdl YWsgc3RyaW5nIGxpY2Vuc2U7Ci0gCQlwdWJsaWMgd2VhayBzdHJpbmcgZGVzY3JpcHRpb247Ci0g CX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1wbHVnaW4uaCIsIGhh c190eXBlX2lkID0gZmFsc2UpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t YWluLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJcHVibGljIHN0cnVjdCBQbHVnaW5WZXJz aW9uIHsKLSAJCXB1YmxpYyB1aW50IHZlcnNpb25fbWFqb3I7Ci0gCQlwdWJsaWMgdWludCB2ZXJz aW9uX21pbm9yOwotIAkJcHVibGljIHVpbnQgdmVyc2lvbl9taWNybzsKLSAJCXB1YmxpYyB1aW50 IHZlcnNpb25fYXBpOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2Jv eGVzLmgiLCB0eXBlX2lkID0gIm1ldGFfcmVjdGFuZ2xlX2dldF90eXBlICgpIildCi0rCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19i b3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0eXBlX2lkID0gIm1l dGFfcmVjdGFuZ2xlX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBzdHJ1Y3QgUmVjdGFuZ2xlIHsK LSAJCXB1YmxpYyBpbnQgeDsKLSAJCXB1YmxpYyBpbnQgeTsKLUBAIC04MzYsNyArOTQ1LDcgQEAg bmFtZXNwYWNlIE1ldGEgewotIAkJcHVibGljIE1ldGEuUmVjdGFuZ2xlIHVuaW9uIChNZXRhLlJl Y3RhbmdsZSByZWN0Mik7Ci0gCQlwdWJsaWMgYm9vbCB2ZXJ0X292ZXJsYXAgKE1ldGEuUmVjdGFu Z2xlIHJlY3QyKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRh LXNoYWRvdy1mYWN0b3J5LmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSsJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCXB1 YmxpYyBzdHJ1Y3QgU2hhZG93UGFyYW1zIHsKLSAJCXB1YmxpYyBpbnQgcmFkaXVzOwotIAkJcHVi bGljIGludCB0b3BfZmFkZTsKLUBAIC04NDQsMTIgKzk1MywxMiBAQCBuYW1lc3BhY2UgTWV0YSB7 Ci0gCQlwdWJsaWMgaW50IHlfb2Zmc2V0OwotIAkJcHVibGljIHVpbnQ4IG9wYWNpdHk7Ci0gCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvYm94ZXMuaCIsIGhhc190eXBlX2lk ID0gZmFsc2UpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBo YXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJcHVibGljIHN0cnVjdCBTdHJ1dCB7Ci0gCQlwdWJsaWMg TWV0YS5SZWN0YW5nbGUgcmVjdDsKLSAJCXB1YmxpYyBNZXRhLlNpZGUgc2lkZTsKLSAJfQotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9iYXJyaWVyLmgiLCBjcHJlZml4ID0gIk1F VEFfQkFSUklFUl9ESVJFQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX2JhcnJpZXJfZGlyZWN0aW9u X2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4u aCIsIGNwcmVmaXggPSAiTUVUQV9CQVJSSUVSX0RJUkVDVElPTl8iLCB0eXBlX2lkID0gIm1ldGFf YmFycmllcl9kaXJlY3Rpb25fZ2V0X3R5cGUgKCkiKV0KLSAJW0ZsYWdzXQotIAlwdWJsaWMgZW51 bSBCYXJyaWVyRGlyZWN0aW9uIHsKLSAJCVBPU0lUSVZFX1gsCi1AQCAtODU3LDIxICs5NjYsMjAg QEAgbmFtZXNwYWNlIE1ldGEgewotIAkJTkVHQVRJVkVfWCwKLSAJCU5FR0FUSVZFX1kKLSAJfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNwcmVmaXggPSAi TUVUQV9CVVRUT05fRlVOQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX2J1dHRvbl9mdW5jdGlvbl9n ZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgi LCBjcHJlZml4ID0gIk1FVEFfQlVUVE9OX0ZVTkNUSU9OXyIsIHR5cGVfaWQgPSAibWV0YV9idXR0 b25fZnVuY3Rpb25fZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0gQnV0dG9uRnVuY3Rpb24g ewotIAkJTUVOVSwKLSAJCU1JTklNSVpFLAotIAkJTUFYSU1JWkUsCi0gCQlDTE9TRSwKLS0JCUFQ UE1FTlUsCi0gCQlMQVNUCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEv bWV0YS1jbG9zZS1kaWFsb2cuaCIsIGNwcmVmaXggPSAiTUVUQV9DTE9TRV9ESUFMT0dfUkVTUE9O U0VfIiwgdHlwZV9pZCA9ICJtZXRhX2Nsb3NlX2RpYWxvZ19yZXNwb25zZV9nZXRfdHlwZSAoKSIp XQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjcHJlZml4ID0g Ik1FVEFfQ0xPU0VfRElBTE9HX1JFU1BPTlNFXyIsIHR5cGVfaWQgPSAibWV0YV9jbG9zZV9kaWFs b2dfcmVzcG9uc2VfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0gQ2xvc2VEaWFsb2dSZXNw b25zZSB7Ci0gCQlXQUlULAotIAkJRk9SQ0VfQ0xPU0UKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9jb21wb3NpdG9yLmgiLCBjcHJlZml4ID0gIk1FVEFfQ09NUF9FRkZF Q1RfIiwgdHlwZV9pZCA9ICJtZXRhX2NvbXBfZWZmZWN0X2dldF90eXBlICgpIildCi0rCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9DT01Q X0VGRkVDVF8iLCB0eXBlX2lkID0gIm1ldGFfY29tcF9lZmZlY3RfZ2V0X3R5cGUgKCkiKV0KLSAJ cHVibGljIGVudW0gQ29tcEVmZmVjdCB7Ci0gCQlDUkVBVEUsCi0gCQlVTk1JTklNSVpFLAotQEAg LTg3OSw3ICs5ODcsNyBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlNSU5JTUlaRSwKLSAJCU5PTkUK LSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNwcmVm aXggPSAiTUVUQV9DVVJTT1JfIiwgdHlwZV9pZCA9ICJtZXRhX2N1cnNvcl9nZXRfdHlwZSAoKSIp XQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjcHJlZml4ID0g Ik1FVEFfQ1VSU09SXyIsIHR5cGVfaWQgPSAibWV0YV9jdXJzb3JfZ2V0X3R5cGUgKCkiKV0KLSAJ cHVibGljIGVudW0gQ3Vyc29yIHsKLSAJCU5PTkUsCi0gCQlERUZBVUxULAotQEAgLTkwMCw5ICsx MDA4LDEwIEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCVBPSU5USU5HX0hBTkQsCi0gCQlDUk9TU0hB SVIsCi0gCQlJQkVBTSwKLSsJCUJMQU5LLAotIAkJTEFTVAotIAl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNwcmVmaXggPSAiTUVUQV9ERUJVR18iLCB0eXBl X2lkID0gIm1ldGFfZGVidWdfdG9waWNfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0RFQlVHXyIsIHR5cGVf aWQgPSAibWV0YV9kZWJ1Z190b3BpY19nZXRfdHlwZSAoKSIpXQotIAlbRmxhZ3NdCi0gCXB1Ymxp YyBlbnVtIERlYnVnVG9waWMgewotIAkJVkVSQk9TRSwKLUBAIC05MjgsOSArMTAzNywxMCBAQCBu YW1lc3BhY2UgTWV0YSB7Ci0gCQlTSEFQRVMsCi0gCQlDT01QT1NJVE9SLAotIAkJRURHRV9SRVNJ U1RBTkNFLAotLQkJREJVUwotKwkJREJVUywKLSsJCUlOUFVUCi0gCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfRElSRUNUSU9O XyIsIHR5cGVfaWQgPSAibWV0YV9kaXJlY3Rpb25fZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0RJUkVDVElP Tl8iLCB0eXBlX2lkID0gIm1ldGFfZGlyZWN0aW9uX2dldF90eXBlICgpIildCi0gCVtGbGFnc10K LSAJcHVibGljIGVudW0gRGlyZWN0aW9uIHsKLSAJCUxFRlQsCi1AQCAtOTQyLDIxICsxMDUyLDIx IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCUhPUklaT05UQUwsCi0gCQlWRVJUSUNBTAotIAl9Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2Rpc3BsYXkuaCIsIGNwcmVmaXggPSAi TUVUQV9ESVNQTEFZXyIsIHR5cGVfaWQgPSAibWV0YV9kaXNwbGF5X2Nvcm5lcl9nZXRfdHlwZSAo KSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjcHJlZml4 ID0gIk1FVEFfRElTUExBWV8iLCB0eXBlX2lkID0gIm1ldGFfZGlzcGxheV9jb3JuZXJfZ2V0X3R5 cGUgKCkiKV0KLSAJcHVibGljIGVudW0gRGlzcGxheUNvcm5lciB7Ci0gCQlUT1BMRUZULAotIAkJ VE9QUklHSFQsCi0gCQlCT1RUT01MRUZULAotIAkJQk9UVE9NUklHSFQKLSAJfQotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9kaXNwbGF5LmgiLCBjcHJlZml4ID0gIk1FVEFfRElT UExBWV8iLCB0eXBlX2lkID0gIm1ldGFfZGlzcGxheV9kaXJlY3Rpb25fZ2V0X3R5cGUgKCkiKV0K LSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJN RVRBX0RJU1BMQVlfIiwgdHlwZV9pZCA9ICJtZXRhX2Rpc3BsYXlfZGlyZWN0aW9uX2dldF90eXBl ICgpIildCi0gCXB1YmxpYyBlbnVtIERpc3BsYXlEaXJlY3Rpb24gewotIAkJVVAsCi0gCQlET1dO LAotIAkJTEVGVCwKLSAJCVJJR0hUCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvYm94ZXMuaCIsIGNwcmVmaXggPSAiTUVUQV9FREdFXyIsIHR5cGVfaWQgPSAibWV0YV9l ZGdlX3R5cGVfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0VER0VfIiwgdHlwZV9pZCA9ICJtZXRhX2VkZ2Vf dHlwZV9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgZW51bSBFZGdlVHlwZSB7Ci0gCQlXSU5ET1cs Ci0gCQlNT05JVE9SLAotQEAgLTk2NywxMiArMTA3NywxMSBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0g CQlTVUNDRVNTLAotIAkJRVJST1IKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9jb21tb24uaCIsIGNwcmVmaXggPSAiTUVUQV9GUkFNRV8iLCB0eXBlX2lkID0gIm1ldGFf ZnJhbWVfZmxhZ3NfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0ZSQU1FXyIsIHR5cGVfaWQgPSAibWV0YV9m cmFtZV9mbGFnc19nZXRfdHlwZSAoKSIpXQotIAlbRmxhZ3NdCi0gCXB1YmxpYyBlbnVtIEZyYW1l RmxhZ3MgewotIAkJQUxMT1dTX0RFTEVURSwKLSAJCUFMTE9XU19NRU5VLAotLQkJQUxMT1dTX0FQ UE1FTlUsCi0gCQlBTExPV1NfTUlOSU1JWkUsCi0gCQlBTExPV1NfTUFYSU1JWkUsCi0gCQlBTExP V1NfVkVSVElDQUxfUkVTSVpFLAotQEAgLTk4NCwxMiArMTA5MywxMSBAQCBuYW1lc3BhY2UgTWV0 YSB7Ci0gCQlBTExPV1NfU0hBREUsCi0gCQlBTExPV1NfTU9WRSwKLSAJCUZVTExTQ1JFRU4sCi0t CQlJU19GTEFTSElORywKLSAJCUFCT1ZFLAotIAkJVElMRURfTEVGVCwKLSAJCVRJTEVEX1JJR0hU Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBjcHJl Zml4ID0gIk1FVEFfRlJBTUVfVFlQRV8iLCB0eXBlX2lkID0gIm1ldGFfZnJhbWVfdHlwZV9nZXRf dHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBj cHJlZml4ID0gIk1FVEFfRlJBTUVfVFlQRV8iLCB0eXBlX2lkID0gIm1ldGFfZnJhbWVfdHlwZV9n ZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgZW51bSBGcmFtZVR5cGUgewotIAkJTk9STUFMLAotIAkJ RElBTE9HLAotQEAgLTEwMDEsNyArMTEwOSw3IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCUxBU1Q7 Ci0gCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgdG9fc3RyaW5nICgpOwotIAl9Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0dSQUJf T1BfIiwgdHlwZV9pZCA9ICJtZXRhX2dyYWJfb3BfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0dSQUJfT1Bf IiwgdHlwZV9pZCA9ICJtZXRhX2dyYWJfb3BfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0g R3JhYk9wIHsKLSAJCU5PTkUsCi0gCQlXSU5ET1dfQkFTRSwKLUBAIC0xMDI4LDEyICsxMTM2LDI2 IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCUtFWUJPQVJEX1JFU0laSU5HX1NFLAotIAkJS0VZQk9B UkRfUkVTSVpJTkdfVwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21l dGEtaW5oaWJpdC1zaG9ydGN1dHMtZGlhbG9nLmgiLCBjcHJlZml4ID0gIk1FVEFfSU5ISUJJVF9T SE9SVENVVFNfRElBTE9HX1JFU1BPTlNFXyIsIHR5cGVfaWQgPSAibWV0YV9pbmhpYml0X3Nob3J0 Y3V0c19kaWFsb2dfcmVzcG9uc2VfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0dSQVZJVFlfIiwgdHlwZV9p ZCA9ICJtZXRhX2dyYXZpdHlfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGVudW0gR3Jhdml0eSB7 Ci0rCQlOT05FLAotKwkJTk9SVEhfV0VTVCwKLSsJCU5PUlRILAotKwkJTk9SVEhfRUFTVCwKLSsJ CVdFU1QsCi0rCQlDRU5URVIsCi0rCQlFQVNULAotKwkJU09VVEhfV0VTVCwKLSsJCVNPVVRILAot KwkJU09VVEhfRUFTVCwKLSsJCVNUQVRJQwotKwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9JTkhJQklUX1NIT1JUQ1VUU19ESUFM T0dfUkVTUE9OU0VfIiwgdHlwZV9pZCA9ICJtZXRhX2luaGliaXRfc2hvcnRjdXRzX2RpYWxvZ19y ZXNwb25zZV9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgZW51bSBJbmhpYml0U2hvcnRjdXRzRGlh bG9nUmVzcG9uc2UgewotIAkJQUxMT1csCi0gCQlERU5ZCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvcHJlZnMuaCIsIGNwcmVmaXggPSAiTUVUQV9LRVlCSU5ESU5HX0FD VElPTl8iLCB0eXBlX2lkID0gIm1ldGFfa2V5X2JpbmRpbmdfYWN0aW9uX2dldF90eXBlICgpIild Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAi TUVUQV9LRVlCSU5ESU5HX0FDVElPTl8iLCB0eXBlX2lkID0gIm1ldGFfa2V5X2JpbmRpbmdfYWN0 aW9uX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIEtleUJpbmRpbmdBY3Rpb24gewotIAkJ Tk9ORSwKLSAJCVdPUktTUEFDRV8xLAotQEAgLTExMjIsMjIgKzEyNDQsMjUgQEAgbmFtZXNwYWNl IE1ldGEgewotIAkJTU9WRV9UT19TSURFX1csCi0gCQlNT1ZFX1RPX0NFTlRFUiwKLSAJCU9WRVJM QVlfS0VZLAotKwkJTE9DQVRFX1BPSU5URVJfS0VZLAotIAkJSVNPX05FWFRfR1JPVVAsCi0gCQlB TFdBWVNfT05fVE9QLAotIAkJU1dJVENIX01PTklUT1IsCi0gCQlST1RBVEVfTU9OSVRPUiwKLSAJ CUxBU1QKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwg Y3ByZWZpeCA9ICJNRVRBX0tFWV9CSU5ESU5HXyIsIHR5cGVfaWQgPSAibWV0YV9rZXlfYmluZGlu Z19mbGFnc19nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0 YS9tYWluLmgiLCBjcHJlZml4ID0gIk1FVEFfS0VZX0JJTkRJTkdfIiwgdHlwZV9pZCA9ICJtZXRh X2tleV9iaW5kaW5nX2ZsYWdzX2dldF90eXBlICgpIildCi0gCVtGbGFnc10KLSAJcHVibGljIGVu dW0gS2V5QmluZGluZ0ZsYWdzIHsKLSAJCU5PTkUsCi0gCQlQRVJfV0lORE9XLAotIAkJQlVJTFRJ TiwKLSAJCUlTX1JFVkVSU0VELAotLQkJTk9OX01BU0tBQkxFCi0rCQlOT05fTUFTS0FCTEUsCi0r CQlJR05PUkVfQVVUT1JFUEVBVCwKLSsJCU5PX0FVVE9fR1JBQgotIAl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL3V0aWwuaCIsIGNwcmVmaXggPSAiTUVUQV9MQVRFUl8iLCB0 eXBlX2lkID0gIm1ldGFfbGF0ZXJfdHlwZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjcHJlZml4ID0gIk1FVEFfTEFURVJfIiwgdHlw ZV9pZCA9ICJtZXRhX2xhdGVyX3R5cGVfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0gTGF0 ZXJUeXBlIHsKLSAJCVJFU0laRSwKLSAJCUNBTENfU0hPV0lORywKLUBAIC0xMTQ2LDI1ICsxMjcx LDI1IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCUJFRk9SRV9SRURSQVcsCi0gCQlJRExFCi0gCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvdXRpbC5oIiwgY3ByZWZpeCA9ICJN RVRBX0xPQ0FMRV9ESVJFQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX2xvY2FsZV9kaXJlY3Rpb25f Z2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5o IiwgY3ByZWZpeCA9ICJNRVRBX0xPQ0FMRV9ESVJFQ1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX2xv Y2FsZV9kaXJlY3Rpb25fZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0gTG9jYWxlRGlyZWN0 aW9uIHsKLSAJCUxUUiwKLSAJCVJUTAotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL3dpbmRvdy5oIiwgY3ByZWZpeCA9ICJNRVRBX01BWElNSVpFXyIsIHR5cGVfaWQgPSAi bWV0YV9tYXhpbWl6ZV9mbGFnc19nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjcHJlZml4ID0gIk1FVEFfTUFYSU1JWkVfIiwgdHlwZV9p ZCA9ICJtZXRhX21heGltaXplX2ZsYWdzX2dldF90eXBlICgpIildCi0gCVtGbGFnc10KLSAJcHVi bGljIGVudW0gTWF4aW1pemVGbGFncyB7Ci0gCQlIT1JJWk9OVEFMLAotIAkJVkVSVElDQUwsCi0g CQlCT1RICi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS1wbHVn aW4uaCIsIGNwcmVmaXggPSAiTUVUQV9NT0RBTF8iLCB0eXBlX2lkID0gIm1ldGFfbW9kYWxfb3B0 aW9uc19nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t YWluLmgiLCBjcHJlZml4ID0gIk1FVEFfTU9EQUxfIiwgdHlwZV9pZCA9ICJtZXRhX21vZGFsX29w dGlvbnNfZ2V0X3R5cGUgKCkiKV0KLSAJW0ZsYWdzXQotIAlwdWJsaWMgZW51bSBNb2RhbE9wdGlv bnMgewotIAkJUE9JTlRFUl9BTFJFQURZX0dSQUJCRUQsCi0gCQlLRVlCT0FSRF9BTFJFQURZX0dS QUJCRUQKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLW1vbml0 b3ItbWFuYWdlci5oIiwgY3ByZWZpeCA9ICJNRVRBX01PTklUT1JfU1dJVENIX0NPTkZJR18iLCB0 eXBlX2lkID0gIm1ldGFfbW9uaXRvcl9zd2l0Y2hfY29uZmlnX3R5cGVfZ2V0X3R5cGUgKCkiKV0K LSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJN RVRBX01PTklUT1JfU1dJVENIX0NPTkZJR18iLCB0eXBlX2lkID0gIm1ldGFfbW9uaXRvcl9zd2l0 Y2hfY29uZmlnX3R5cGVfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0gTW9uaXRvclN3aXRj aENvbmZpZ1R5cGUgewotIAkJQUxMX01JUlJPUiwKLSAJCUFMTF9MSU5FQVIsCi1AQCAtMTE3Miw3 ICsxMjk3LDcgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJQlVJTFRJTiwKLSAJCVVOS05PV04KLSAJ fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNwcmVmaXgg PSAiTUVUQV9NT1RJT05fIiwgdHlwZV9pZCA9ICJtZXRhX21vdGlvbl9kaXJlY3Rpb25fZ2V0X3R5 cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3By ZWZpeCA9ICJNRVRBX01PVElPTl8iLCB0eXBlX2lkID0gIm1ldGFfbW90aW9uX2RpcmVjdGlvbl9n ZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgZW51bSBNb3Rpb25EaXJlY3Rpb24gewotIAkJVVAsCi0g CQlET1dOLAotQEAgLTExODMsNyArMTMwOCw3IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCURPV05f TEVGVCwKLSAJCURPV05fUklHSFQKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi bWV0YS9kaXNwbGF5LmgiLCBjcHJlZml4ID0gIk1FVEFfUEFEX0FDVElPTl8iLCB0eXBlX2lkID0g Im1ldGFfcGFkX2FjdGlvbl90eXBlX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9QQURfQUNUSU9OXyIsIHR5 cGVfaWQgPSAibWV0YV9wYWRfYWN0aW9uX3R5cGVfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVu dW0gUGFkQWN0aW9uVHlwZSB7Ci0gCQlCVVRUT04sCi0gCQlSSU5HLAotQEAgLTEyMjMsMzAgKzEz NDgsMzkgQEAgbmFtZXNwYWNlIE1ldGEgewotIAkJRFJBR0dBQkxFX0JPUkRFUl9XSURUSCwKLSAJ CUFVVE9fTUFYSU1JWkUsCi0gCQlDRU5URVJfTkVXX1dJTkRPV1MsCi0tCQlEUkFHX1RIUkVTSE9M RDsKLSsJCURSQUdfVEhSRVNIT0xELAotKwkJTE9DQVRFX1BPSU5URVIsCi0rCQlDSEVDS19BTElW RV9USU1FT1VUOwotIAkJcHVibGljIHVub3duZWQgc3RyaW5nIHRvX3N0cmluZyAoKTsKLSAJfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tZXRhLXdpbmRvdy1hY3Rvci5oIiwg Y3ByZWZpeCA9ICJNRVRBX1NIQURPV19NT0RFXyIsIHR5cGVfaWQgPSAibWV0YV9zaGFkb3dfbW9k ZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWlu LmgiLCBjcHJlZml4ID0gIk1FVEFfIiwgdHlwZV9pZCA9ICJtZXRhX3NlbGVjdGlvbl90eXBlX2dl dF90eXBlICgpIildCi0rCXB1YmxpYyBlbnVtIFNlbGVjdGlvblR5cGUgewotKwkJU0VMRUNUSU9O X1BSSU1BUlksCi0rCQlTRUxFQ1RJT05fQ0xJUEJPQVJELAotKwkJU0VMRUNUSU9OX0RORCwKLSsJ CU5fU0VMRUNUSU9OX1RZUEVTCi0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX1NIQURPV19NT0RFXyIsIHR5cGVfaWQgPSAibWV0 YV9zaGFkb3dfbW9kZV9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgZW51bSBTaGFkb3dNb2RlIHsK LSAJCUFVVE8sCi0gCQlGT1JDRURfT0ZGLAotIAkJRk9SQ0VEX09OCi0gCX0KLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvY29tbW9uLmgiLCBjcHJlZml4ID0gIk1FVEFfU0lERV8i LCB0eXBlX2lkID0gIm1ldGFfc2lkZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjcHJlZml4ID0gIk1FVEFfU0lERV8iLCB0eXBlX2lk ID0gIm1ldGFfc2lkZV9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgZW51bSBTaWRlIHsKLSAJCUxF RlQsCi0gCQlSSUdIVCwKLSAJCVRPUCwKLSAJCUJPVFRPTQotIAl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJtZXRhL2NvbXBvc2l0b3IuaCIsIGNwcmVmaXggPSAiTUVUQV9TSVpFX0NI QU5HRV8iLCB0eXBlX2lkID0gIm1ldGFfc2l6ZV9jaGFuZ2VfZ2V0X3R5cGUgKCkiKV0KLSsJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX1NJ WkVfQ0hBTkdFXyIsIHR5cGVfaWQgPSAibWV0YV9zaXplX2NoYW5nZV9nZXRfdHlwZSAoKSIpXQot IAlwdWJsaWMgZW51bSBTaXplQ2hhbmdlIHsKLSAJCU1BWElNSVpFLAotIAkJVU5NQVhJTUlaRSwK LSAJCUZVTExTQ1JFRU4sCi0gCQlVTkZVTExTQ1JFRU4KLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNwcmVmaXggPSAiTUVUQV9MQVlFUl8iLCB0eXBl X2lkID0gIm1ldGFfc3RhY2tfbGF5ZXJfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX0xBWUVSXyIsIHR5cGVf aWQgPSAibWV0YV9zdGFja19sYXllcl9nZXRfdHlwZSAoKSIpXQotIAlwdWJsaWMgZW51bSBTdGFj a0xheWVyIHsKLSAJCURFU0tUT1AsCi0gCQlCT1RUT00sCi1AQCAtMTI1NiwxOSArMTM5MCwxOSBA QCBuYW1lc3BhY2UgTWV0YSB7Ci0gCQlPVkVSUklERV9SRURJUkVDVCwKLSAJCUxBU1QKLSAJfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9kaXNwbGF5LmgiLCBjcHJlZml4ID0g Ik1FVEFfVEFCX0xJU1RfIiwgdHlwZV9pZCA9ICJtZXRhX3RhYl9saXN0X2dldF90eXBlICgpIild Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAi TUVUQV9UQUJfTElTVF8iLCB0eXBlX2lkID0gIm1ldGFfdGFiX2xpc3RfZ2V0X3R5cGUgKCkiKV0K LSAJcHVibGljIGVudW0gVGFiTGlzdCB7Ci0gCQlOT1JNQUwsCi0gCQlET0NLUywKLSAJCUdST1VQ LAotIAkJTk9STUFMX0FMTAotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRh L2Rpc3BsYXkuaCIsIGNwcmVmaXggPSAiTUVUQV9UQUJfU0hPV18iLCB0eXBlX2lkID0gIm1ldGFf dGFiX3Nob3dfdHlwZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAibWV0YS9tYWluLmgiLCBjcHJlZml4ID0gIk1FVEFfVEFCX1NIT1dfIiwgdHlwZV9pZCA9ICJt ZXRhX3RhYl9zaG93X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0gVGFiU2hvd1R5 cGUgewotIAkJSUNPTiwKLSAJCUlOU1RBTlRMWQotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY3ByZWZpeCA9ICJNRVRBX1ZJUlRVQUxfIiwgdHlwZV9p ZCA9ICJtZXRhX3ZpcnR1YWxfbW9kaWZpZXJfZ2V0X3R5cGUgKCkiKV0KLSsJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY3ByZWZpeCA9ICJNRVRBX1ZJUlRVQUxfIiwg dHlwZV9pZCA9ICJtZXRhX3ZpcnR1YWxfbW9kaWZpZXJfZ2V0X3R5cGUgKCkiKV0KLSAJW0ZsYWdz XQotIAlwdWJsaWMgZW51bSBWaXJ0dWFsTW9kaWZpZXIgewotIAkJU0hJRlRfTUFTSywKLUBAIC0x MjgyLDE3ICsxNDE2LDE3IEBAIG5hbWVzcGFjZSBNZXRhIHsKLSAJCU1PRDRfTUFTSywKLSAJCU1P RDVfTUFTSwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3dpbmRvdy5o IiwgY3ByZWZpeCA9ICJNRVRBX1dJTkRPV19DTElFTlRfVFlQRV8iLCB0eXBlX2lkID0gIm1ldGFf d2luZG93X2NsaWVudF90eXBlX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL21haW4uaCIsIGNwcmVmaXggPSAiTUVUQV9XSU5ET1dfQ0xJRU5UX1RZUEVf IiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd19jbGllbnRfdHlwZV9nZXRfdHlwZSAoKSIpXQotIAlw dWJsaWMgZW51bSBXaW5kb3dDbGllbnRUeXBlIHsKLSAJCVdBWUxBTkQsCi0gCQlYMTEKLSAJfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9jb21tb24uaCIsIGNwcmVmaXggPSAi TUVUQV9XSU5ET1dfTUVOVV8iLCB0eXBlX2lkID0gIm1ldGFfd2luZG93X21lbnVfdHlwZV9nZXRf dHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBj cHJlZml4ID0gIk1FVEFfV0lORE9XX01FTlVfIiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd19tZW51 X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGVudW0gV2luZG93TWVudVR5cGUgewotIAkJ V00sCi0gCQlBUFAKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS93aW5k b3cuaCIsIGNwcmVmaXggPSAiTUVUQV9XSU5ET1dfIiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd190 eXBlX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21h aW4uaCIsIGNwcmVmaXggPSAiTUVUQV9XSU5ET1dfIiwgdHlwZV9pZCA9ICJtZXRhX3dpbmRvd190 eXBlX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBlbnVtIFdpbmRvd1R5cGUgewotIAkJTk9STUFM LAotIAkJREVTS1RPUCwKLUBAIC0xMzExLDUxICsxNDQ1LDU3IEBAIG5hbWVzcGFjZSBNZXRhIHsK LSAJCURORCwKLSAJCU9WRVJSSURFX09USEVSCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gIm1ldGEvbWV0YS1pZGxlLW1vbml0b3IuaCIsIGluc3RhbmNlX3BvcyA9IDIuOSldCi0r CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGluc3RhbmNlX3BvcyA9 IDIuOSldCi0gCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIElkbGVNb25pdG9yV2F0Y2hGdW5jIChNZXRh LklkbGVNb25pdG9yIG1vbml0b3IsIHVpbnQgd2F0Y2hfaWQpOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9wcmVmcy5oIiwgaW5zdGFuY2VfcG9zID0gNC45KV0KLSsJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgaW5zdGFuY2VfcG9zID0gNC45KV0K LSAJcHVibGljIGRlbGVnYXRlIHZvaWQgS2V5SGFuZGxlckZ1bmMgKE1ldGEuRGlzcGxheSBkaXNw bGF5LCBNZXRhLldpbmRvdyB3aW5kb3csIFtDQ29kZSAodHlwZSA9ICJDbHV0dGVyS2V5RXZlbnQq IildIENsdXR0ZXIuS2V5RXZlbnQ/IGV2ZW50LCBNZXRhLktleUJpbmRpbmcgYmluZGluZyk7Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL3ByZWZzLmgiLCBpbnN0YW5jZV9wb3Mg PSAxLjkpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBpbnN0 YW5jZV9wb3MgPSAxLjkpXQotIAlwdWJsaWMgZGVsZWdhdGUgdm9pZCBQcmVmc0NoYW5nZWRGdW5j IChNZXRhLlByZWZlcmVuY2UgcHJlZik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL3dpbmRvdy5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSsJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSAJcHVibGljIGRl bGVnYXRlIGJvb2wgV2luZG93Rm9yZWFjaEZ1bmMgKE1ldGEuV2luZG93IHdpbmRvdyk7Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY25hbWUgPSAiTUVUQV9D VVJSRU5UX1RJTUUiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5o IiwgY25hbWUgPSAiTUVUQV9DVVJSRU5UX1RJTUUiKV0KLSAJcHVibGljIGNvbnN0IGludCBDVVJS RU5UX1RJTUU7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwg Y25hbWUgPSAiTUVUQV9ERUZBVUxUX0lDT05fTkFNRSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9ICJNRVRBX0RFRkFVTFRfSUNPTl9OQU1FIild Ci0gCXB1YmxpYyBjb25zdCBzdHJpbmcgREVGQVVMVF9JQ09OX05BTUU7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY25hbWUgPSAiTUVUQV9JQ09OX0hFSUdI VCIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiLCBjbmFtZSA9 ICJNRVRBX0lDT05fSEVJR0hUIildCi0gCXB1YmxpYyBjb25zdCBpbnQgSUNPTl9IRUlHSFQ7Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY25hbWUgPSAiTUVU QV9JQ09OX1dJRFRIIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4u aCIsIGNuYW1lID0gIk1FVEFfSUNPTl9XSURUSCIpXQotIAlwdWJsaWMgY29uc3QgaW50IElDT05f V0lEVEg7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY25h bWUgPSAiTUVUQV9NQUpPUl9WRVJTSU9OIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfTUFKT1JfVkVSU0lPTiIpXQotIAlwdWJsaWMg Y29uc3QgaW50IE1BSk9SX1ZFUlNJT047Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJt ZXRhL2NvbW1vbi5oIiwgY25hbWUgPSAiTUVUQV9NSUNST19WRVJTSU9OIildCi0rCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1FVEFfTUlDUk9fVkVS U0lPTiIpXQotIAlwdWJsaWMgY29uc3QgaW50IE1JQ1JPX1ZFUlNJT047Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY25hbWUgPSAiTUVUQV9NSU5JX0lDT05f SEVJR0hUIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNu YW1lID0gIk1FVEFfTUlOSV9JQ09OX0hFSUdIVCIpXQotIAlwdWJsaWMgY29uc3QgaW50IE1JTklf SUNPTl9IRUlHSFQ7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5o IiwgY25hbWUgPSAiTUVUQV9NSU5JX0lDT05fV0lEVEgiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9NSU5JX0lDT05fV0lEVEgiKV0K LSAJcHVibGljIGNvbnN0IGludCBNSU5JX0lDT05fV0lEVEg7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY25hbWUgPSAiTUVUQV9NSU5PUl9WRVJTSU9OIild Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0gIk1F VEFfTUlOT1JfVkVSU0lPTiIpXQotIAlwdWJsaWMgY29uc3QgaW50IE1JTk9SX1ZFUlNJT047Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY25hbWUgPSAiTUVU QV9QTFVHSU5fQVBJX1ZFUlNJT04iKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1l dGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9QTFVHSU5fQVBJX1ZFUlNJT04iKV0KLSAJcHVibGlj IGNvbnN0IGludCBQTFVHSU5fQVBJX1ZFUlNJT047Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJtZXRhL2NvbW1vbi5oIiwgY25hbWUgPSAiTUVUQV9QUklPUklUWV9CRUZPUkVfUkVEUkFX IildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIsIGNuYW1lID0g Ik1FVEFfUFJJT1JJVFlfQkVGT1JFX1JFRFJBVyIpXQotIAlwdWJsaWMgY29uc3QgaW50IFBSSU9S SVRZX0JFRk9SRV9SRURSQVc7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2Nv bW1vbi5oIiwgY25hbWUgPSAiTUVUQV9QUklPUklUWV9QUkVGU19OT1RJRlkiKV0KLSsJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9QUklPUklU WV9QUkVGU19OT1RJRlkiKV0KLSAJcHVibGljIGNvbnN0IGludCBQUklPUklUWV9QUkVGU19OT1RJ Rlk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY25hbWUg PSAiTUVUQV9QUklPUklUWV9SRURSQVciKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9QUklPUklUWV9SRURSQVciKV0KLSAJcHVibGlj IGNvbnN0IGludCBQUklPUklUWV9SRURSQVc7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJtZXRhL2NvbW1vbi5oIiwgY25hbWUgPSAiTUVUQV9QUklPUklUWV9SRVNJWkUiKV0KLSsJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9QUklP UklUWV9SRVNJWkUiKV0KLSAJcHVibGljIGNvbnN0IGludCBQUklPUklUWV9SRVNJWkU7Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY25hbWUgPSAiTUVUQV9W SVJUVUFMX0NPUkVfS0VZQk9BUkRfSUQiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g Im1ldGEvbWFpbi5oIiwgY25hbWUgPSAiTUVUQV9WSVJUVUFMX0NPUkVfS0VZQk9BUkRfSUQiKV0K LSAJcHVibGljIGNvbnN0IGludCBWSVJUVUFMX0NPUkVfS0VZQk9BUkRfSUQ7Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL2NvbW1vbi5oIiwgY25hbWUgPSAiTUVUQV9WSVJUVUFM X0NPUkVfUE9JTlRFUl9JRCIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9t YWluLmgiLCBjbmFtZSA9ICJNRVRBX1ZJUlRVQUxfQ09SRV9QT0lOVEVSX0lEIildCi0gCXB1Ymxp YyBjb25zdCBpbnQgVklSVFVBTF9DT1JFX1BPSU5URVJfSUQ7Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotIAlwdWJsaWMgc3RhdGljIGJvb2wgYWN0aXZhdGVf c2Vzc2lvbiAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIild Ci0rCXB1YmxpYyBzdGF0aWMgdm9pZCBhZGRfY2x1dHRlcl9kZWJ1Z19mbGFncyAoQ2x1dHRlci5E ZWJ1Z0ZsYWcgZGVidWdfZmxhZ3MsIENsdXR0ZXIuRHJhd0RlYnVnRmxhZyBkcmF3X2ZsYWdzLCBD bHV0dGVyLlBpY2tEZWJ1Z0ZsYWcgcGlja19mbGFncyk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJtZXRhL21haW4uaCIpXQotKwlwdWJsaWMgc3RhdGljIHZvaWQgY2x1dHRlcl9pbml0 ICgpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLSAJcHVi bGljIHN0YXRpYyB2b2lkIGV4aXQgKE1ldGEuRXhpdENvZGUgY29kZSk7Ci0gCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotKwlwdWJsaWMgc3RhdGljIHN0cmluZyBn X3V0Zjhfc3RybmR1cCAoc3RyaW5nIHNyYywgc2l6ZV90IG4pOwotKwlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLSAJcHVibGljIHN0YXRpYyB1bm93bmVkIEdMaWIu T3B0aW9uQ29udGV4dCBnZXRfb3B0aW9uX2NvbnRleHQgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotIAlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X3JlcGxh Y2VfY3VycmVudF93bSAoKTsKLUBAIC0xMzY4LDYgKzE1MDgsOCBAQCBuYW1lc3BhY2UgTWV0YSB7 Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotIAlwdWJsaWMg c3RhdGljIHZvaWQgcmVnaXN0ZXJfd2l0aF9zZXNzaW9uICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLSsJcHVibGljIHN0YXRpYyB2b2lkIHJlbW92ZV9j bHV0dGVyX2RlYnVnX2ZsYWdzIChDbHV0dGVyLkRlYnVnRmxhZyBkZWJ1Z19mbGFncywgQ2x1dHRl ci5EcmF3RGVidWdGbGFnIGRyYXdfZmxhZ3MsIENsdXR0ZXIuUGlja0RlYnVnRmxhZyBwaWNrX2Zs YWdzKTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWFpbi5oIildCi0gCXB1 YmxpYyBzdGF0aWMgdm9pZCByZXN0YXJ0IChzdHJpbmc/IG1lc3NhZ2UpOwotIAlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgiKV0KLSAJcHVibGljIHN0YXRpYyBpbnQgcnVu ICgpOwotQEAgLTEzNzUsNiArMTUxNywxNCBAQCBuYW1lc3BhY2UgTWV0YSB7Ci0gCXB1YmxpYyBz dGF0aWMgdm9pZCBzZXRfZ25vbWVfd21fa2V5YmluZGluZ3MgKHN0cmluZyB3bV9rZXliaW5kaW5n cyk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotIAlwdWJs aWMgc3RhdGljIHZvaWQgc2V0X3dtX25hbWUgKHN0cmluZyB3bV9uYW1lKTsKLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gIm1ldGEvbWV0YS14MTEtZGlzcGxheS5oIildCi0rCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJtZXRhL21haW4uaCIpXQotKwlwdWJsaWMgc3RhdGljIHZvaWQg dGVzdF9pbml0ICgpOwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibWV0YS9tYWluLmgi KV0KLSAJcHVibGljIHN0YXRpYyBib29sIHgxMV9pbml0X2dka19kaXNwbGF5ICgpIHRocm93cyBH TGliLkVycm9yOwotIH0KLStbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAibGlibXV0dGVyLTct Y3VzdG9tLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLStwdWJsaWMgc3RydWN0IGJlZm9yZV9m cmFtZSB7Ci0rfQotK1tDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJsaWJtdXR0ZXItNy1jdXN0 b20uaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotK3B1YmxpYyBzdHJ1Y3QgZnJhbWUgewotK30K LWRpZmYgLS1naXQgdmFwaS9saWJtdXR0ZXItY29nbC00LnZhcGkgdmFwaS9saWJtdXR0ZXItY29n bC00LnZhcGkKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggN2RjMTg0NzYuLjAwMDAw MDAwCi0tLS0gdmFwaS9saWJtdXR0ZXItY29nbC00LnZhcGkKLSsrKyAvZGV2L251bGwKLUBAIC0x LDEyNzIgKzAsMCBAQAotLS8qIGxpYm11dHRlci1jb2dsLTQudmFwaSBnZW5lcmF0ZWQgYnkgdmFw aWdlbiwgZG8gbm90IG1vZGlmeS4gKi8KLS0KLS1bQ0NvZGUgKGNwcmVmaXggPSAiQ29nbCIsIGdp cl9uYW1lc3BhY2UgPSAiQ29nbCIsIGdpcl92ZXJzaW9uID0gIjQiLCBsb3dlcl9jYXNlX2NwcmVm aXggPSAiY29nbF8iKV0KLS1uYW1lc3BhY2UgQ29nbCB7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIsIHR5cGVfaWQgPSAiY29nbF9iaXRtYXBfZ2V0X2d0eXBlICgp IildCi0tCXB1YmxpYyBjbGFzcyBCaXRtYXAgOiBDb2dsLk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhh c19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgQml0bWFwICgpOwot LQkJcHVibGljIHN0YXRpYyB1aW50MzIgZXJyb3JfcXVhcmsgKCk7Ci0tCQlbQ0NvZGUgKGhhc19j b25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIild Ci0tCQlwdWJsaWMgQml0bWFwLmZyb21fZmlsZSAoc3RyaW5nIGZpbGVuYW1lKSB0aHJvd3MgR0xp Yi5FcnJvcjsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgQ29nbC5Q aXhlbEZvcm1hdCBnZXRfZm9ybWF0ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0K LS0JCXB1YmxpYyBpbnQgZ2V0X2hlaWdodCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEw IildCi0tCQlwdWJsaWMgaW50IGdldF9yb3dzdHJpZGUgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBnZXRfc2l6ZV9mcm9tX2ZpbGUg KHN0cmluZyBmaWxlbmFtZSwgb3V0IGludCB3aWR0aCwgb3V0IGludCBoZWlnaHQpOwotLQkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyBpbnQgZ2V0X3dpZHRoICgpOwotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGhhc190eXBlX2lk ID0gZmFsc2UpXQotLQlbQ29tcGFjdF0KLS0JcHVibGljIGNsYXNzIEV1bGVyIHsKLS0JfQotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjb3B5X2Z1bmN0aW9uID0g ImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9 ICJjb2dsX2ZyYW1lX2Nsb3N1cmVfZ2V0X2d0eXBlICgpIildCi0tCVtDb21wYWN0XQotLQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xNCIpXQotLQlwdWJsaWMgY2xhc3MgRnJhbWVDbG9zdXJlIHsKLS0J fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjb3B5X2Z1bmN0 aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlw ZV9pZCA9ICJjb2dsX21hdGVyaWFsX2dldF90eXBlICgpIildCi0tCVtDb21wYWN0XQotLQlwdWJs aWMgY2xhc3MgTWF0ZXJpYWwgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0g ZmFsc2UpXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTYiKV0KLS0JCXB1YmxpYyBNYXRlcmlhbCAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4yIildCi0t CQlwdWJsaWMgQ29nbC5NYXRlcmlhbCBjb3B5ICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1 YmxpYyB2b2lkIGZvcmVhY2hfbGF5ZXIgKENvZ2wuTWF0ZXJpYWxMYXllckNhbGxiYWNrIGNhbGxi YWNrKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYW1iaWVudCAoQ29n bC5Db2xvciBhbWJpZW50KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQ29nbC5Db2xv ciBnZXRfY29sb3IgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2Rp ZmZ1c2UgKENvZ2wuQ29sb3IgZGlmZnVzZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGlj IHZvaWQgZ2V0X2VtaXNzaW9uIChDb2dsLkNvbG9yIGVtaXNzaW9uKTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40 IildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIGdldF9sYXllcl9wb2ludF9zcHJpdGVfY29vcmRzX2Vu YWJsZWQgKGludCBsYXllcl9pbmRleCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIENv Z2wuTWF0ZXJpYWxXcmFwTW9kZSBnZXRfbGF5ZXJfd3JhcF9tb2RlX3AgKGludCBsYXllcl9pbmRl eCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIsIHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBn ZXRfbGF5ZXJfd3JhcF9tb2RlX3MgKGludCBsYXllcl9pbmRleCk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNiIp XQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBnZXRfbGF5ZXJfd3JhcF9tb2RlX3Qg KGludCBsYXllcl9pbmRleCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBHTGliLkxpc3Q8Q29nbC5NYXRl cmlhbExheWVyPiBnZXRfbGF5ZXJzICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBp bnQgZ2V0X25fbGF5ZXJzICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBmbG9hdCBn ZXRfcG9pbnRfc2l6ZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgZmxvYXQgZ2V0 X3NoaW5pbmVzcyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfc3Bl Y3VsYXIgKENvZ2wuQ29sb3Igc3BlY3VsYXIpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1Ymxp YyBDb2dsLkhhbmRsZSBnZXRfdXNlcl9wcm9ncmFtICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJ cHVibGljIHN0YXRpYyBDb2dsLkhhbmRsZSBAcmVmIChDb2dsLkhhbmRsZSBtYXRlcmlhbCk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIp XQotLQkJcHVibGljIHZvaWQgcmVtb3ZlX2xheWVyIChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5j ZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbHBoYV90ZXN0X2Z1bmN0aW9uIChDb2ds Lk1hdGVyaWFsQWxwaGFGdW5jIGFscGhhX2Z1bmMsIGZsb2F0IGFscGhhX3JlZmVyZW5jZSk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIs IHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2FtYmllbnQgKENvZ2wuQ29sb3Ig YW1iaWVudCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2FtYmllbnRf YW5kX2RpZmZ1c2UgKENvZ2wuQ29sb3IgY29sb3IpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1 YmxpYyBDb2dsLkJvb2wgc2V0X2JsZW5kIChzdHJpbmcgYmxlbmRfc3RyaW5nKSB0aHJvd3MgR0xp Yi5FcnJvcjsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYmxlbmRfY29u c3RhbnQgKENvZ2wuQ29sb3IgY29uc3RhbnRfY29sb3IpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0J CXB1YmxpYyB2b2lkIHNldF9jb2xvciAoQ29nbC5Db2xvciBjb2xvcik7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEu MCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2NvbG9yNGYgKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4s IGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMg dm9pZCBzZXRfY29sb3I0dWIgKHVpbnQ4IHJlZCwgdWludDggZ3JlZW4sIHVpbnQ4IGJsdWUsIHVp bnQ4IGFscGhhKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZGlmZnVz ZSAoQ29nbC5Db2xvciBkaWZmdXNlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9p ZCBzZXRfZW1pc3Npb24gKENvZ2wuQ29sb3IgZW1pc3Npb24pOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0K LS0JCXB1YmxpYyB2b2lkIHNldF9sYXllciAoaW50IGxheWVyX2luZGV4LCBDb2dsLkhhbmRsZSB0 ZXh0dXJlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIHNldF9sYXll cl9jb21iaW5lIChpbnQgbGF5ZXJfaW5kZXgsIHN0cmluZyBibGVuZF9zdHJpbmcpIHRocm93cyBH TGliLkVycm9yOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sYXllcl9j b21iaW5lX2NvbnN0YW50IChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuQ29sb3IgY29uc3RhbnQpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYi KV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sYXllcl9maWx0ZXJzIChpbnQgbGF5ZXJfaW5kZXgsIENv Z2wuTWF0ZXJpYWxGaWx0ZXIgbWluX2ZpbHRlciwgQ29nbC5NYXRlcmlhbEZpbHRlciBtYWdfZmls dGVyKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjE2IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfbWF0cml4IChpbnQgbGF5ZXJfaW5k ZXgsIENvZ2wuTWF0cml4IG1hdHJpeCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIENv Z2wuQm9vbCBzZXRfbGF5ZXJfcG9pbnRfc3ByaXRlX2Nvb3Jkc19lbmFibGVkIChpbnQgbGF5ZXJf aW5kZXgsIENvZ2wuQm9vbCBlbmFibGUpIHRocm93cyBHTGliLkVycm9yOwotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIx LjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sYXllcl93cmFwX21vZGUgKGludCBsYXllcl9pbmRl eCwgQ29nbC5NYXRlcmlhbFdyYXBNb2RlIG1vZGUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1 YmxpYyB2b2lkIHNldF9sYXllcl93cmFwX21vZGVfcCAoaW50IGxheWVyX2luZGV4LCBDb2dsLk1h dGVyaWFsV3JhcE1vZGUgbW9kZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQg c2V0X2xheWVyX3dyYXBfbW9kZV9zIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuTWF0ZXJpYWxXcmFw TW9kZSBtb2RlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJf d3JhcF9tb2RlX3QgKGludCBsYXllcl9pbmRleCwgQ29nbC5NYXRlcmlhbFdyYXBNb2RlIG1vZGUp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9wb2ludF9zaXplIChmbG9h dCBwb2ludF9zaXplKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfc2hp bmluZXNzIChmbG9hdCBzaGluaW5lc3MpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2 b2lkIHNldF9zcGVjdWxhciAoQ29nbC5Db2xvciBzcGVjdWxhcik7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIp XQotLQkJcHVibGljIHZvaWQgc2V0X3VzZXJfcHJvZ3JhbSAoQ29nbC5IYW5kbGUgcHJvZ3JhbSk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4y Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgdW5yZWYgKENvZ2wuSGFu ZGxlIG1hdGVyaWFsKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9j b2dsLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFz cyBNYXRlcmlhbExheWVyIHsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbEZpbHRlciBnZXRf bWFnX2ZpbHRlciAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbEZpbHRlciBnZXRfbWlu X2ZpbHRlciAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgQ29nbC5IYW5kbGUgZ2V0X3RleHR1cmUgKCk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIp XQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxMYXllclR5cGUgZ2V0X3R5cGUgKCk7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNl ID0gIjEuNCIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBnZXRfd3JhcF9tb2Rl X3AgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9k ZSBnZXRfd3JhcF9tb2RlX3MgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIENvZ2wu TWF0ZXJpYWxXcmFwTW9kZSBnZXRfd3JhcF9tb2RlX3QgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJjb2dsX29iamVjdF9nZXRf Z3R5cGUgKCkiKV0KLS0JcHVibGljIGFic3RyYWN0IGNsYXNzIE9iamVjdCB7Ci0tCQlbQ0NvZGUg KGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgT2JqZWN0ICgp OwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIHR5cGVf aWQgPSAiY29nbF9vZmZzY3JlZW5fZ2V0X2d0eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBPZmZz Y3JlZW4gOiBDb2dsLk9iamVjdCwgQ29nbC5GcmFtZWJ1ZmZlciB7Ci0tCQlbQ0NvZGUgKGhhc19j b25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQgT2Zmc2NyZWVuICgpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIp XQotLQkJcHVibGljIHN0YXRpYyB2b2lkKiBAcmVmICh2b2lkKiBvZmZzY3JlZW4pOwotLQkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JCXB1YmxpYyBPZmZz Y3JlZW4udG9fdGV4dHVyZSAoQ29nbC5UZXh0dXJlIHRleHR1cmUpOwotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHN0 YXRpYyB2b2lkIHVucmVmICh2b2lkKiBvZmZzY3JlZW4pOwotLQkJW0NDb2RlIChoYXNfY29uc3Ry dWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHVibGljIE9mZnNjcmVlbi53aXRoX3RleHR1cmUg KENvZ2wuVGV4dHVyZSB0ZXh0dXJlKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiLCB0eXBlX2lkID0gImNvZ2xfb25zY3JlZW5fZ2V0X2d0eXBlICgpIild Ci0tCXB1YmxpYyBjbGFzcyBPbnNjcmVlbiA6IENvZ2wuT2JqZWN0LCBDb2dsLkZyYW1lYnVmZmVy IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXByb3Rl Y3RlZCBPbnNjcmVlbiAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0tCQlwdWJs aWMgQ29nbC5PbnNjcmVlbkRpcnR5Q2xvc3VyZSBhZGRfZGlydHlfY2FsbGJhY2sgKFtDQ29kZSAo ZGVsZWdhdGVfdGFyZ2V0X3BvcyA9IDEuNSldIENvZ2wuT25zY3JlZW5EaXJ0eUNhbGxiYWNrIGNh bGxiYWNrLCBDb2dsLlVzZXJEYXRhRGVzdHJveUNhbGxiYWNrPyBkZXN0cm95KTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBDb2dsLk9uc2NyZWVuUmVzaXplQ2xvc3Vy ZSBhZGRfcmVzaXplX2NhbGxiYWNrIChbQ0NvZGUgKGRlbGVnYXRlX3RhcmdldF9wb3MgPSAxLjUp XSBDb2dsLk9uc2NyZWVuUmVzaXplQ2FsbGJhY2sgY2FsbGJhY2ssIENvZ2wuVXNlckRhdGFEZXN0 cm95Q2FsbGJhY2s/IGRlc3Ryb3kpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTQiLCBzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdWlu dCBhZGRfc3dhcF9idWZmZXJzX2NhbGxiYWNrIChDb2dsLlN3YXBCdWZmZXJzTm90aWZ5IGNhbGxi YWNrKTsKLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBjbHV0dGVyX2JhY2tlbmRfc2V0X3NpemVfQ0xV VFRFUiAoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0 IildCi0tCQlwdWJsaWMgaW50IGdldF9idWZmZXJfYWdlICgpOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMTQiKV0KLS0JCXB1YmxpYyBpbnQ2NCBnZXRfZnJhbWVfY291bnRlciAoKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgZ2V0X3Jlc2l6YWJs ZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGhpZGUg KCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNiIpXQotLQkJcHVibGljIHZvaWQgcmVtb3Zl X2RpcnR5X2NhbGxiYWNrIChDb2dsLk9uc2NyZWVuRGlydHlDbG9zdXJlIGNsb3N1cmUpOwotLQkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLS0JCXB1YmxpYyB2b2lkIHJlbW92ZV9mcmFtZV9j YWxsYmFjayAoQ29nbC5GcmFtZUNsb3N1cmUgY2xvc3VyZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCByZW1vdmVfcmVzaXplX2NhbGxiYWNrIChDb2dsLk9u c2NyZWVuUmVzaXplQ2xvc3VyZSBjbG9zdXJlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE0Iiwgc2luY2UgPSAiMS4xMCIpXQotLQkJcHVi bGljIHZvaWQgcmVtb3ZlX3N3YXBfYnVmZmVyc19jYWxsYmFjayAodWludCBpZCk7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfcmVzaXphYmxlIChDb2ds LkJvb2wgcmVzaXphYmxlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1Ymxp YyB2b2lkIHNob3cgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGlj IHZvaWQgc3dhcF9idWZmZXJzICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTYiKV0KLS0J CXB1YmxpYyB2b2lkIHN3YXBfYnVmZmVyc193aXRoX2RhbWFnZSAoaW50IHJlY3RhbmdsZXMsIGlu dCBuX3JlY3RhbmdsZXMpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1Ymxp YyB2b2lkIHN3YXBfcmVnaW9uIChpbnQgcmVjdGFuZ2xlcywgaW50IG5fcmVjdGFuZ2xlcyk7Ci0t CX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY29weV9mdW5j dGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5 cGVfaWQgPSAiY29nbF9vbnNjcmVlbl9kaXJ0eV9jbG9zdXJlX2dldF9ndHlwZSAoKSIpXQotLQlb Q29tcGFjdF0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIGNsYXNzIE9u c2NyZWVuRGlydHlDbG9zdXJlIHsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y29nbC9jb2dsLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rp b24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjb2dsX29uc2NyZWVuX3Jlc2l6ZV9jbG9z dXJlX2dldF9ndHlwZSAoKSIpXQotLQlbQ29tcGFjdF0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjIu MCIpXQotLQlwdWJsaWMgY2xhc3MgT25zY3JlZW5SZXNpemVDbG9zdXJlIHsKLS0JfQotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0eXBlX2lkID0gImNvZ2xfcGlw ZWxpbmVfZ2V0X2d0eXBlICgpIildCi0tCXB1YmxpYyBjbGFzcyBQaXBlbGluZSA6IENvZ2wuT2Jq ZWN0IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXBy b3RlY3RlZCBQaXBlbGluZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1 YmxpYyBDb2dsLlBpcGVsaW5lIGNvcHkgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIild Ci0tCQlwdWJsaWMgdm9pZCBmb3JlYWNoX2xheWVyIChDb2dsLlBpcGVsaW5lTGF5ZXJDYWxsYmFj ayBjYWxsYmFjayk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgQ29n bC5QaXBlbGluZUFscGhhRnVuYyBnZXRfYWxwaGFfdGVzdF9mdW5jdGlvbiAoKTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBmbG9hdCBnZXRfYWxwaGFfdGVzdF9yZWZl cmVuY2UgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBn ZXRfYW1iaWVudCAoQ29nbC5Db2xvciBhbWJpZW50KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIy LjAiKV0KLS0JCXB1YmxpYyBDb2dsLkNvbG9yIGdldF9jb2xvciAoKTsKLS0JCVtWZXJzaW9uIChz aW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBDb2dsLkNvbG9yTWFzayBnZXRfY29sb3JfbWFzayAo KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBDb2dsLlBpcGVsaW5l Q3VsbEZhY2VNb2RlIGdldF9jdWxsX2ZhY2VfbW9kZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9kaWZmdXNlIChDb2dsLkNvbG9yIGRpZmZ1c2Up OwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2VtaXNz aW9uIChDb2dsLkNvbG9yIGVtaXNzaW9uKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0K LS0JCXB1YmxpYyBDb2dsLldpbmRpbmcgZ2V0X2Zyb250X2ZhY2Vfd2luZGluZyAoKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgQ29nbC5QaXBlbGluZUZpbHRlciBn ZXRfbGF5ZXJfbWFnX2ZpbHRlciAoaW50IGxheWVyX2luZGV4KTsKLS0JCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgQ29nbC5QaXBlbGluZUZpbHRlciBnZXRfbGF5ZXJfbWlu X2ZpbHRlciAoaW50IGxheWVyX2luZGV4KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0K LS0JCXB1YmxpYyBDb2dsLkJvb2wgZ2V0X2xheWVyX3BvaW50X3Nwcml0ZV9jb29yZHNfZW5hYmxl ZCAoaW50IGxheWVyX2luZGV4KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlw dWJsaWMgdW5vd25lZCBDb2dsLlRleHR1cmUgZ2V0X2xheWVyX3RleHR1cmUgKGludCBsYXllcl9p bmRleCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0tCQlwdWJsaWMgQ29nbC5QaXBl bGluZVdyYXBNb2RlIGdldF9sYXllcl93cmFwX21vZGVfcCAoaW50IGxheWVyX2luZGV4KTsKLS0J CVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyBDb2dsLlBpcGVsaW5lV3JhcE1v ZGUgZ2V0X2xheWVyX3dyYXBfbW9kZV9zIChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJW1ZlcnNpb24g KHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIENvZ2wuUGlwZWxpbmVXcmFwTW9kZSBnZXRfbGF5 ZXJfd3JhcF9tb2RlX3QgKGludCBsYXllcl9pbmRleCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi Mi4wIildCi0tCQlwdWJsaWMgaW50IGdldF9uX2xheWVycyAoKTsKLS0JCVtWZXJzaW9uIChzaW5j ZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgZ2V0X3Blcl92ZXJ0ZXhfcG9pbnRfc2l6 ZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBmbG9hdCBnZXRf cG9pbnRfc2l6ZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBm bG9hdCBnZXRfc2hpbmluZXNzICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJ cHVibGljIHZvaWQgZ2V0X3NwZWN1bGFyIChDb2dsLkNvbG9yIHNwZWN1bGFyKTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBpbnQgZ2V0X3VuaWZvcm1fbG9jYXRpb24g KHN0cmluZyB1bmlmb3JtX25hbWUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJ cHVibGljIENvZ2wuSGFuZGxlIGdldF91c2VyX3Byb2dyYW0gKCk7Ci0tCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgcmVtb3ZlX2xheWVyIChpbnQgbGF5ZXJfaW5k ZXgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2Fs cGhhX3Rlc3RfZnVuY3Rpb24gKENvZ2wuUGlwZWxpbmVBbHBoYUZ1bmMgYWxwaGFfZnVuYywgZmxv YXQgYWxwaGFfcmVmZXJlbmNlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1 YmxpYyB2b2lkIHNldF9hbWJpZW50IChDb2dsLkNvbG9yIGFtYmllbnQpOwotLQkJW1ZlcnNpb24g KHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2FtYmllbnRfYW5kX2RpZmZ1c2Ug KENvZ2wuQ29sb3IgY29sb3IpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVi bGljIENvZ2wuQm9vbCBzZXRfYmxlbmQgKHN0cmluZyBibGVuZF9zdHJpbmcpIHRocm93cyBHTGli LkVycm9yOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0 X2JsZW5kX2NvbnN0YW50IChDb2dsLkNvbG9yIGNvbnN0YW50X2NvbG9yKTsKLS0JCVtWZXJzaW9u IChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9jb2xvciAoQ29nbC5Db2xvciBj b2xvcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRf Y29sb3I0ZiAoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEp OwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2NvbG9y NHViICh1aW50OCByZWQsIHVpbnQ4IGdyZWVuLCB1aW50OCBibHVlLCB1aW50OCBhbHBoYSk7Ci0t CQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfY29sb3JfbWFz ayAoQ29nbC5Db2xvck1hc2sgY29sb3JfbWFzayk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4w IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfY3VsbF9mYWNlX21vZGUgKENvZ2wuUGlwZWxpbmVDdWxs RmFjZU1vZGUgY3VsbF9mYWNlX21vZGUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQot LQkJcHVibGljIHZvaWQgc2V0X2RpZmZ1c2UgKENvZ2wuQ29sb3IgZGlmZnVzZSk7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZW1pc3Npb24gKENvZ2wu Q29sb3IgZW1pc3Npb24pOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGlj IHZvaWQgc2V0X2Zyb250X2ZhY2Vfd2luZGluZyAoQ29nbC5XaW5kaW5nIGZyb250X3dpbmRpbmcp OwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBzZXRf bGF5ZXJfY29tYmluZSAoaW50IGxheWVyX2luZGV4LCBzdHJpbmcgYmxlbmRfc3RyaW5nKSB0aHJv d3MgR0xpYi5FcnJvcjsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2 b2lkIHNldF9sYXllcl9jb21iaW5lX2NvbnN0YW50IChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuQ29s b3IgY29uc3RhbnQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2 b2lkIHNldF9sYXllcl9maWx0ZXJzIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuUGlwZWxpbmVGaWx0 ZXIgbWluX2ZpbHRlciwgQ29nbC5QaXBlbGluZUZpbHRlciBtYWdfZmlsdGVyKTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfbWF0cml4IChp bnQgbGF5ZXJfaW5kZXgsIENvZ2wuTWF0cml4IG1hdHJpeCk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2xheWVyX251bGxfdGV4dHVyZSAoaW50IGxh eWVyX2luZGV4LCBDb2dsLlRleHR1cmVUeXBlIHRleHR1cmVfdHlwZSk7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIHNldF9sYXllcl9wb2ludF9zcHJp dGVfY29vcmRzX2VuYWJsZWQgKGludCBsYXllcl9pbmRleCwgQ29nbC5Cb29sIGVuYWJsZSkgdGhy b3dzIEdMaWIuRXJyb3I7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfdGV4dHVyZSAoaW50IGxh eWVyX2luZGV4LCBDb2dsLlRleHR1cmUgdGV4dHVyZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi Mi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlIChpbnQgbGF5ZXJfaW5k ZXgsIENvZ2wuUGlwZWxpbmVXcmFwTW9kZSBtb2RlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIy LjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sYXllcl93cmFwX21vZGVfcCAoaW50IGxheWVyX2lu ZGV4LCBDb2dsLlBpcGVsaW5lV3JhcE1vZGUgbW9kZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi Mi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlX3MgKGludCBsYXllcl9p bmRleCwgQ29nbC5QaXBlbGluZVdyYXBNb2RlIG1vZGUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0g IjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2xheWVyX3dyYXBfbW9kZV90IChpbnQgbGF5ZXJf aW5kZXgsIENvZ2wuUGlwZWxpbmVXcmFwTW9kZSBtb2RlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIyLjAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgc2V0X3Blcl92ZXJ0ZXhfcG9pbnRfc2l6ZSAo Q29nbC5Cb29sIGVuYWJsZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfcG9pbnRfc2l6ZSAoZmxvYXQgcG9pbnRfc2l6 ZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfc2hp bmluZXNzIChmbG9hdCBzaGluaW5lc3MpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQot LQkJcHVibGljIHZvaWQgc2V0X3NwZWN1bGFyIChDb2dsLkNvbG9yIHNwZWN1bGFyKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF91bmlmb3JtXzFmIChp bnQgdW5pZm9ybV9sb2NhdGlvbiwgZmxvYXQgdmFsdWUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0g IjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3VuaWZvcm1fMWkgKGludCB1bmlmb3JtX2xvY2F0 aW9uLCBpbnQgdmFsdWUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGlj IHZvaWQgc2V0X3VuaWZvcm1fZmxvYXQgKGludCB1bmlmb3JtX2xvY2F0aW9uLCBpbnQgbl9jb21w b25lbnRzLCBpbnQgY291bnQsIGZsb2F0IHZhbHVlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIy LjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF91bmlmb3JtX2ludCAoaW50IHVuaWZvcm1fbG9jYXRp b24sIGludCBuX2NvbXBvbmVudHMsIGludCBjb3VudCwgaW50IHZhbHVlKTsKLS0JCVtWZXJzaW9u IChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF91bmlmb3JtX21hdHJpeCAoaW50 IHVuaWZvcm1fbG9jYXRpb24sIGludCBkaW1lbnNpb25zLCBpbnQgY291bnQsIENvZ2wuQm9vbCB0 cmFuc3Bvc2UsIGZsb2F0IHZhbHVlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0J CXB1YmxpYyB2b2lkIHNldF91c2VyX3Byb2dyYW0gKENvZ2wuSGFuZGxlIHByb2dyYW0pOwotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGhhc190eXBlX2lk ID0gZmFsc2UpXQotLQlbQ29tcGFjdF0KLS0JcHVibGljIGNsYXNzIFF1YXRlcm5pb24gewotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIHR5cGVfaWQgPSAi Y29nbF9mcmFtZWJ1ZmZlcl9nZXRfZ3R5cGUgKCkiKV0KLS0JcHVibGljIGludGVyZmFjZSBGcmFt ZWJ1ZmZlciA6IENvZ2wuT2JqZWN0IHsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0J CXB1YmxpYyBDb2dsLkJvb2wgYWxsb2NhdGUgKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgdm9pZCBjbGVhciAodWxvbmcgYnVmZmVy cywgQ29nbC5Db2xvciBjb2xvcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlw dWJsaWMgdm9pZCBjbGVhcjRmICh1bG9uZyBidWZmZXJzLCBmbG9hdCByZWQsIGZsb2F0IGdyZWVu LCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44Iild Ci0tCQlwdWJsaWMgdm9pZCBkaXNjYXJkX2J1ZmZlcnMgKHVsb25nIGJ1ZmZlcnMpOwotLQkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIGRyYXdfbXVsdGl0ZXh0dXJl ZF9yZWN0YW5nbGUgKENvZ2wuUGlwZWxpbmUgcGlwZWxpbmUsIGZsb2F0IHhfMSwgZmxvYXQgeV8x LCBmbG9hdCB4XzIsIGZsb2F0IHlfMiwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIGZs b2F0W10gdGV4X2Nvb3JkcywgaW50IHRleF9jb29yZHNfbGVuKTsKLS0JCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBkcmF3X3JlY3RhbmdsZSAoQ29nbC5QaXBlbGlu ZSBwaXBlbGluZSwgZmxvYXQgeF8xLCBmbG9hdCB5XzEsIGZsb2F0IHhfMiwgZmxvYXQgeV8yKTsK LS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBkcmF3X3JlY3Rh bmdsZXMgKENvZ2wuUGlwZWxpbmUgcGlwZWxpbmUsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFs c2UpXSBmbG9hdFtdIGNvb3JkaW5hdGVzLCB1aW50IG5fcmVjdGFuZ2xlcyk7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgZHJhd190ZXh0dXJlZF9yZWN0YW5n bGUgKENvZ2wuUGlwZWxpbmUgcGlwZWxpbmUsIGZsb2F0IHhfMSwgZmxvYXQgeV8xLCBmbG9hdCB4 XzIsIGZsb2F0IHlfMiwgZmxvYXQgc18xLCBmbG9hdCB0XzEsIGZsb2F0IHNfMiwgZmxvYXQgdF8y KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBkcmF3X3Rl eHR1cmVkX3JlY3RhbmdsZXMgKENvZ2wuUGlwZWxpbmUgcGlwZWxpbmUsIFtDQ29kZSAoYXJyYXlf bGVuZ3RoID0gZmFsc2UpXSBmbG9hdFtdIGNvb3JkaW5hdGVzLCB1aW50IG5fcmVjdGFuZ2xlcyk7 Ci0tCQlwdWJsaWMgc3RhdGljIHVpbnQzMiBlcnJvcl9xdWFyayAoKTsKLS0JCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBmaW5pc2ggKCk7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgZnJ1c3R1bSAoZmxvYXQgbGVmdCwgZmxv YXQgcmlnaHQsIGZsb2F0IGJvdHRvbSwgZmxvYXQgdG9wLCBmbG9hdCB6X25lYXIsIGZsb2F0IHpf ZmFyKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBpbnQgZ2V0X2Fs cGhhX2JpdHMgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgaW50 IGdldF9ibHVlX2JpdHMgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJs aWMgQ29nbC5Db2xvck1hc2sgZ2V0X2NvbG9yX21hc2sgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMi4wIildCi0tCQlwdWJsaWMgaW50IGdldF9kZXB0aF9iaXRzICgpOwotLQkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMTQiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENvZ2wuVGV4dHVyZSBnZXRfZGVw dGhfdGV4dHVyZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0tCQlwdWJsaWMg Q29nbC5Cb29sIGdldF9kZXB0aF90ZXh0dXJlX2VuYWJsZWQgKCk7Ci0tCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xOCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBnZXRfZGVwdGhfd3JpdGVfZW5hYmxl ZCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wg Z2V0X2RpdGhlcl9lbmFibGVkICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJ cHVibGljIGludCBnZXRfZ3JlZW5fYml0cyAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgi KV0KLS0JCXB1YmxpYyBpbnQgZ2V0X2hlaWdodCAoKTsKLS0JCXB1YmxpYyBDb2dsLkJvb2wgZ2V0 X2lzX3N0ZXJlbyAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMg Q29nbC5NYXRyaXggZ2V0X21vZGVsdmlld19tYXRyaXggKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMCIpXQotLQkJcHVibGljIENvZ2wuTWF0cml4IGdldF9wcm9qZWN0aW9uX21hdHJpeCAo KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBpbnQgZ2V0X3JlZF9i aXRzICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyBpbnQgZ2V0 X3NhbXBsZXNfcGVyX3BpeGVsICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMjAiKV0KLS0J CXB1YmxpYyBDb2dsLlN0ZXJlb01vZGUgZ2V0X3N0ZXJlb19tb2RlICgpOwotLQkJW1ZlcnNpb24g KHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X3ZpZXdwb3J0NGZ2IChbQ0NvZGUg KGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gb3V0IHVub3duZWQgZmxvYXQgdmlld3BvcnRbNF0pOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIGZsb2F0IGdldF92aWV3cG9y dF9oZWlnaHQgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgZmxv YXQgZ2V0X3ZpZXdwb3J0X3dpZHRoICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQot LQkJcHVibGljIGZsb2F0IGdldF92aWV3cG9ydF94ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0g IjEuOCIpXQotLQkJcHVibGljIGZsb2F0IGdldF92aWV3cG9ydF95ICgpOwotLQkJW1ZlcnNpb24g KHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIGludCBnZXRfd2lkdGggKCk7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgaWRlbnRpdHlfbWF0cml4ICgpOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIG9ydGhvZ3JhcGhp YyAoZmxvYXQgeF8xLCBmbG9hdCB5XzEsIGZsb2F0IHhfMiwgZmxvYXQgeV8yLCBmbG9hdCBuZWFy LCBmbG9hdCBmYXIpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2 b2lkIHBlcnNwZWN0aXZlIChmbG9hdCBmb3ZfeSwgZmxvYXQgYXNwZWN0LCBmbG9hdCB6X25lYXIs IGZsb2F0IHpfZmFyKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMg dm9pZCBwb3BfY2xpcCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJs aWMgdm9pZCBwb3BfbWF0cml4ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0J CXB1YmxpYyB2b2lkIHB1c2hfbWF0cml4ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAi KV0KLS0JCXB1YmxpYyB2b2lkIHB1c2hfcmVjdGFuZ2xlX2NsaXAgKGZsb2F0IHhfMSwgZmxvYXQg eV8xLCBmbG9hdCB4XzIsIGZsb2F0IHlfMik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIp XQotLQkJcHVibGljIHZvaWQgcHVzaF9zY2lzc29yX2NsaXAgKGludCB4LCBpbnQgeSwgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJs aWMgQ29nbC5Cb29sIHJlYWRfcGl4ZWxzIChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhl aWdodCwgQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQsIHVpbnQ4IHBpeGVscyk7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCByZWFkX3BpeGVsc19pbnRv X2JpdG1hcCAoaW50IHgsIGludCB5LCBDb2dsLlJlYWRQaXhlbHNGbGFncyBzb3VyY2UsIENvZ2wu Qml0bWFwIGJpdG1hcCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMg dm9pZCByZXNvbHZlX3NhbXBsZXMgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0t CQlwdWJsaWMgdm9pZCByZXNvbHZlX3NhbXBsZXNfcmVnaW9uIChpbnQgeCwgaW50IHksIGludCB3 aWR0aCwgaW50IGhlaWdodCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVi bGljIHZvaWQgcm90YXRlIChmbG9hdCBhbmdsZSwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7 Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCByb3RhdGVfZXVs ZXIgKENvZ2wuRXVsZXIgZXVsZXIpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJ cHVibGljIHZvaWQgcm90YXRlX3F1YXRlcm5pb24gKENvZ2wuUXVhdGVybmlvbiBxdWF0ZXJuaW9u KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBzY2FsZSAo ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44Iild Ci0tCQlwdWJsaWMgdm9pZCBzZXRfY29sb3JfbWFzayAoQ29nbC5Db2xvck1hc2sgY29sb3JfbWFz ayk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2Rl cHRoX3RleHR1cmVfZW5hYmxlZCAoQ29nbC5Cb29sIGVuYWJsZWQpOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTgiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kZXB0aF93cml0ZV9lbmFibGVkIChD b2dsLkJvb2wgZGVwdGhfd3JpdGVfZW5hYmxlZCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44 IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZGl0aGVyX2VuYWJsZWQgKENvZ2wuQm9vbCBkaXRoZXJf ZW5hYmxlZCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQg c2V0X21vZGVsdmlld19tYXRyaXggKENvZ2wuTWF0cml4IG1hdHJpeCk7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3Byb2plY3Rpb25fbWF0cml4IChD b2dsLk1hdHJpeCBtYXRyaXgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVi bGljIHZvaWQgc2V0X3NhbXBsZXNfcGVyX3BpeGVsIChpbnQgc2FtcGxlc19wZXJfcGl4ZWwpOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9zdGVyZW9f bW9kZSAoQ29nbC5TdGVyZW9Nb2RlIHN0ZXJlb19tb2RlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjgiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF92aWV3cG9ydCAoZmxvYXQgeCwgZmxvYXQgeSwg ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIp XQotLQkJcHVibGljIHZvaWQgdHJhbnNmb3JtIChDb2dsLk1hdHJpeCBtYXRyaXgpOwotLQkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHRyYW5zbGF0ZSAoZmxvYXQg eCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJjb2dsX3RleHR1cmVfZ2V0X2d0eXBlICgpIildCi0t CXB1YmxpYyBpbnRlcmZhY2UgVGV4dHVyZSA6IENvZ2wuT2JqZWN0IHsKLS0JCXB1YmxpYyBDb2ds LkJvb2wgYWxsb2NhdGUgKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlwdWJsaWMgc3RhdGljIHVp bnQzMiBlcnJvcl9xdWFyayAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0tCQlw dWJsaWMgQ29nbC5UZXh0dXJlQ29tcG9uZW50cyBnZXRfY29tcG9uZW50cyAoKTsKLS0JCXB1Ymxp YyBpbnQgZ2V0X2RhdGEgKENvZ2wuUGl4ZWxGb3JtYXQgZm9ybWF0LCB1aW50IHJvd3N0cmlkZSwg dWludDggZGF0YSk7Ci0tCQlwdWJsaWMgQ29nbC5Cb29sIGdldF9nbF90ZXh0dXJlIChvdXQgdWlu dCBvdXRfZ2xfaGFuZGxlLCBvdXQgdWludCBvdXRfZ2xfdGFyZ2V0KTsKLS0JCXB1YmxpYyB1aW50 IGdldF9oZWlnaHQgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9tYXhfd2FzdGUgKCk7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xOCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBnZXRfcHJlbXVsdGlw bGllZCAoKTsKLS0JCXB1YmxpYyB1aW50IGdldF93aWR0aCAoKTsKLS0JCXB1YmxpYyBDb2dsLkJv b2wgaXNfc2xpY2VkICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBzdGF0aWMgQ29n bC5UZXh0dXJlIG5ld19mcm9tX2JpdG1hcCAoQ29nbC5CaXRtYXAgYml0bWFwLCBDb2dsLlRleHR1 cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTgiLCBzaW5j ZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgQ29nbC5UZXh0dXJlIG5ld19mcm9tX2RhdGEg KGludCB3aWR0aCwgaW50IGhlaWdodCwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4 ZWxGb3JtYXQgZm9ybWF0LCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCwgaW50IHJv d3N0cmlkZSwgdWludDggZGF0YSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGljIHN0YXRp YyBDb2dsLlRleHR1cmUgbmV3X2Zyb21fZmlsZSAoc3RyaW5nIGZpbGVuYW1lLCBDb2dsLlRleHR1 cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQpIHRocm93cyBH TGliLkVycm9yOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTgiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgQ29nbC5UZXh0 dXJlIG5ld19mcm9tX2ZvcmVpZ24gKHVpbnQgZ2xfaGFuZGxlLCB1aW50IGdsX3RhcmdldCwgdWlu dCB3aWR0aCwgdWludCBoZWlnaHQsIHVpbnQgeF9wb3Rfd2FzdGUsIHVpbnQgeV9wb3Rfd2FzdGUs IENvZ2wuUGl4ZWxGb3JtYXQgZm9ybWF0KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMg Q29nbC5UZXh0dXJlIG5ld19mcm9tX3N1Yl90ZXh0dXJlIChpbnQgc3ViX3gsIGludCBzdWJfeSwg aW50IHN1Yl93aWR0aCwgaW50IHN1Yl9oZWlnaHQpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1 YmxpYyBzdGF0aWMgQ29nbC5UZXh0dXJlIG5ld193aXRoX3NpemUgKHVpbnQgd2lkdGgsIHVpbnQg aGVpZ2h0LCBDb2dsLlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5h bF9mb3JtYXQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0JCXB1YmxpYyB2b2lk IHNldF9jb21wb25lbnRzIChDb2dsLlRleHR1cmVDb21wb25lbnRzIGNvbXBvbmVudHMpOwotLQkJ cHVibGljIENvZ2wuQm9vbCBzZXRfZGF0YSAoQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQsIGludCBy b3dzdHJpZGUsIHVpbnQ4IGRhdGEsIGludCBsZXZlbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3ByZW11bHRpcGxp ZWQgKENvZ2wuQm9vbCBwcmVtdWx0aXBsaWVkKTsKLS0JCXB1YmxpYyBDb2dsLkJvb2wgc2V0X3Jl Z2lvbiAoaW50IHNyY194LCBpbnQgc3JjX3ksIGludCBkc3RfeCwgaW50IGRzdF95LCB1aW50IGRz dF93aWR0aCwgdWludCBkc3RfaGVpZ2h0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIENvZ2wuUGl4 ZWxGb3JtYXQgZm9ybWF0LCB1aW50IHJvd3N0cmlkZSwgdWludDggZGF0YSk7Ci0tCQlbVmVyc2lv biAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIHNldF9yZWdpb25fZnJvbV9i aXRtYXAgKGludCBzcmNfeCwgaW50IHNyY195LCBpbnQgZHN0X3gsIGludCBkc3RfeSwgdWludCBk c3Rfd2lkdGgsIHVpbnQgZHN0X2hlaWdodCwgQ29nbC5CaXRtYXAgYml0bWFwKTsKLS0JfQotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1NpbXBsZVR5cGVd Ci0tCXB1YmxpYyBzdHJ1Y3QgQW5nbGUgOiBpbnQzMiB7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtTaW1wbGVUeXBlXQotLQlwdWJsaWMgc3Ry dWN0IEJvb2wgOiBpbnQgewotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIsIHR5cGVfaWQgPSAiY29nbF9jb2xvcl9nZXRfZ3R5cGUgKCkiKV0KLS0JW1ZlcnNp b24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RydWN0IENvbG9yIHsKLS0JCXB1YmxpYyBD b2dsLkNvbG9yPyBjb3B5ICgpOwotLQkJcHVibGljIHN0YXRpYyBDb2dsLkJvb2wgZXF1YWwgKHZv aWQqIHYxLCB2b2lkKiB2Mik7Ci0tCQlwdWJsaWMgZmxvYXQgZ2V0X2FscGhhICgpOwotLQkJcHVi bGljIHVpbnQ4IGdldF9hbHBoYV9ieXRlICgpOwotLQkJcHVibGljIGZsb2F0IGdldF9hbHBoYV9m bG9hdCAoKTsKLS0JCXB1YmxpYyBmbG9hdCBnZXRfYmx1ZSAoKTsKLS0JCXB1YmxpYyB1aW50OCBn ZXRfYmx1ZV9ieXRlICgpOwotLQkJcHVibGljIGZsb2F0IGdldF9ibHVlX2Zsb2F0ICgpOwotLQkJ cHVibGljIGZsb2F0IGdldF9ncmVlbiAoKTsKLS0JCXB1YmxpYyB1aW50OCBnZXRfZ3JlZW5fYnl0 ZSAoKTsKLS0JCXB1YmxpYyBmbG9hdCBnZXRfZ3JlZW5fZmxvYXQgKCk7Ci0tCQlwdWJsaWMgZmxv YXQgZ2V0X3JlZCAoKTsKLS0JCXB1YmxpYyB1aW50OCBnZXRfcmVkX2J5dGUgKCk7Ci0tCQlwdWJs aWMgZmxvYXQgZ2V0X3JlZF9mbG9hdCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0K LS0JCXB1YmxpYyB2b2lkIGluaXRfZnJvbV80ZiAoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxv YXQgYmx1ZSwgZmxvYXQgYWxwaGEpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJ cHVibGljIHZvaWQgaW5pdF9mcm9tXzRmdiAoZmxvYXQgY29sb3JfYXJyYXkpOwotLQkJW1ZlcnNp b24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgaW5pdF9mcm9tXzR1YiAodWludDgg cmVkLCB1aW50OCBncmVlbiwgdWludDggYmx1ZSwgdWludDggYWxwaGEpOwotLQkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMTYiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBpbml0X2Zyb21faHNsIChv dXQgQ29nbC5Db2xvciBjb2xvciwgZmxvYXQgaHVlLCBmbG9hdCBzYXR1cmF0aW9uLCBmbG9hdCBs dW1pbmFuY2UpOwotLQkJcHVibGljIHZvaWQgcHJlbXVsdGlwbHkgKCk7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYWxwaGEgKGZsb2F0IGFscGhhKTsK LS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbHBoYV9i eXRlICh1aW50OCBhbHBoYSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCQlwdWJs aWMgdm9pZCBzZXRfYWxwaGFfZmxvYXQgKGZsb2F0IGFscGhhKTsKLS0JCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9ibHVlIChmbG9hdCBibHVlKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9ibHVlX2J5dGUgKHVp bnQ4IGJsdWUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQg c2V0X2JsdWVfZmxvYXQgKGZsb2F0IGJsdWUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuNCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGlj IHZvaWQgc2V0X2Zyb21fNGYgKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZs b2F0IGFscGhhKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjQiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9mcm9tXzR1 YiAodWludDggcmVkLCB1aW50OCBncmVlbiwgdWludDggYmx1ZSwgdWludDggYWxwaGEpOwotLQkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2dyZWVuIChmbG9h dCBncmVlbik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBz ZXRfZ3JlZW5fYnl0ZSAodWludDggZ3JlZW4pOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIp XQotLQkJcHVibGljIHZvaWQgc2V0X2dyZWVuX2Zsb2F0IChmbG9hdCBncmVlbik7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfcmVkIChmbG9hdCByZWQp OwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3JlZF9i eXRlICh1aW50OCByZWQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGlj IHZvaWQgc2V0X3JlZF9mbG9hdCAoZmxvYXQgcmVkKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIx LjE2IildCi0tCQlwdWJsaWMgdm9pZCB0b19oc2wgKG91dCBmbG9hdCBodWUsIG91dCBmbG9hdCBz YXR1cmF0aW9uLCBvdXQgZmxvYXQgbHVtaW5hbmNlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIx LjQiKV0KLS0JCXB1YmxpYyB2b2lkIHVucHJlbXVsdGlwbHkgKCk7Ci0tCX0KLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0t CVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JcHVibGljIHN0cnVjdCBEZWJ1Z09iamVjdFR5 cGVJbmZvIHsKLS0JCXB1YmxpYyB3ZWFrIHN0cmluZyBuYW1lOwotLQkJcHVibGljIHVsb25nIGlu c3RhbmNlX2NvdW50OwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbU2ltcGxlVHlwZV0KLS0JcHVibGljIHN0cnVjdCBIYW5kbGUgewotLQkJcHVi bGljIHN0YXRpYyBHTGliLlR5cGUgZ2V0X3R5cGUgKCk7Ci0tCQlwdWJsaWMgQ29nbC5IYW5kbGUg QHJlZiAoKTsKLS0JCXB1YmxpYyB2b2lkIHVucmVmICgpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIHR5cGVfaWQgPSAiY29nbF9tYXRyaXhfZ2V0X2d0 eXBlICgpIildCi0tCXB1YmxpYyBzdHJ1Y3QgTWF0cml4IHsKLS0JCXB1YmxpYyBmbG9hdCB4eDsK LS0JCXB1YmxpYyBmbG9hdCB5eDsKLS0JCXB1YmxpYyBmbG9hdCB6eDsKLS0JCXB1YmxpYyBmbG9h dCB3eDsKLS0JCXB1YmxpYyBmbG9hdCB4eTsKLS0JCXB1YmxpYyBmbG9hdCB5eTsKLS0JCXB1Ymxp YyBmbG9hdCB6eTsKLS0JCXB1YmxpYyBmbG9hdCB3eTsKLS0JCXB1YmxpYyBmbG9hdCB4ejsKLS0J CXB1YmxpYyBmbG9hdCB5ejsKLS0JCXB1YmxpYyBmbG9hdCB6ejsKLS0JCXB1YmxpYyBmbG9hdCB3 ejsKLS0JCXB1YmxpYyBmbG9hdCB4dzsKLS0JCXB1YmxpYyBmbG9hdCB5dzsKLS0JCXB1YmxpYyBm bG9hdCB6dzsKLS0JCXB1YmxpYyBmbG9hdCB3dzsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYi KV0KLS0JCXB1YmxpYyBDb2dsLk1hdHJpeD8gY29weSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjQiKV0KLS0JCXB1YmxpYyBzdGF0aWMgQ29nbC5Cb29sIGVxdWFsICh2b2lkKiB2MSwgdm9p ZCogdjIpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIHZvaWQgZnJl ZSAoKTsKLS0JCXB1YmxpYyB2b2lkIGZydXN0dW0gKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBm bG9hdCBib3R0b20sIGZsb2F0IHRvcCwgZmxvYXQgel9uZWFyLCBmbG9hdCB6X2Zhcik7Ci0tCQlw dWJsaWMgdW5vd25lZCBmbG9hdFtdIGdldF9hcnJheSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjIiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgZ2V0X2ludmVyc2UgKG91dCBDb2dsLk1hdHJp eCBpbnZlcnNlKTsKLS0JCXB1YmxpYyB2b2lkIGluaXRfZnJvbV9ldWxlciAoQ29nbC5FdWxlciBl dWxlcik7Ci0tCQlwdWJsaWMgdm9pZCBpbml0X2Zyb21fcXVhdGVybmlvbiAoQ29nbC5RdWF0ZXJu aW9uIHF1YXRlcm5pb24pOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGlj IHZvaWQgaW5pdF90cmFuc2xhdGlvbiAoZmxvYXQgdHgsIGZsb2F0IHR5LCBmbG9hdCB0eik7Ci0t CQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIGlzX2lkZW50 aXR5ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgbG9v a19hdCAoZmxvYXQgZXllX3Bvc2l0aW9uX3gsIGZsb2F0IGV5ZV9wb3NpdGlvbl95LCBmbG9hdCBl eWVfcG9zaXRpb25feiwgZmxvYXQgb2JqZWN0X3gsIGZsb2F0IG9iamVjdF95LCBmbG9hdCBvYmpl Y3RfeiwgZmxvYXQgd29ybGRfdXBfeCwgZmxvYXQgd29ybGRfdXBfeSwgZmxvYXQgd29ybGRfdXBf eik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMCIpXQotLQkJcHVibGljIHZvaWQgb3J0aG8gKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBm bG9hdCBib3R0b20sIGZsb2F0IHRvcCwgZmxvYXQgbmVhciwgZmxvYXQgZmFyKTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBvcnRob2dyYXBoaWMgKGZsb2F0 IHhfMSwgZmxvYXQgeV8xLCBmbG9hdCB4XzIsIGZsb2F0IHlfMiwgZmxvYXQgbmVhciwgZmxvYXQg ZmFyKTsKLS0JCXB1YmxpYyB2b2lkIHBlcnNwZWN0aXZlIChmbG9hdCBmb3ZfeSwgZmxvYXQgYXNw ZWN0LCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsKLS0JCXB1YmxpYyB2b2lkIHByb2plY3Rf cG9pbnRzIChpbnQgbl9jb21wb25lbnRzLCBzaXplX3Qgc3RyaWRlX2luLCB2b2lkKiBwb2ludHNf aW4sIHNpemVfdCBzdHJpZGVfb3V0LCB2b2lkKiBwb2ludHNfb3V0LCBpbnQgbl9wb2ludHMpOwot LQkJcHVibGljIHZvaWQgcm90YXRlIChmbG9hdCBhbmdsZSwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv YXQgeik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCByb3Rh dGVfZXVsZXIgKENvZ2wuRXVsZXIgZXVsZXIpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIp XQotLQkJcHVibGljIHZvaWQgcm90YXRlX3F1YXRlcm5pb24gKENvZ2wuUXVhdGVybmlvbiBxdWF0 ZXJuaW9uKTsKLS0JCXB1YmxpYyB2b2lkIHNjYWxlIChmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0 IHN6KTsKLS0JCXB1YmxpYyB2b2lkIHRyYW5zZm9ybV9wb2ludCAocmVmIGZsb2F0IHgsIHJlZiBm bG9hdCB5LCByZWYgZmxvYXQgeiwgcmVmIGZsb2F0IHcpOwotLQkJcHVibGljIHZvaWQgdHJhbnNm b3JtX3BvaW50cyAoaW50IG5fY29tcG9uZW50cywgc2l6ZV90IHN0cmlkZV9pbiwgdm9pZCogcG9p bnRzX2luLCBzaXplX3Qgc3RyaWRlX291dCwgdm9pZCogcG9pbnRzX291dCwgaW50IG5fcG9pbnRz KTsKLS0JCXB1YmxpYyB2b2lkIHRyYW5zbGF0ZSAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7 Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgdHJhbnNwb3Nl ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgdmlld18y ZF9pbl9mcnVzdHVtIChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmbG9h dCB0b3AsIGZsb2F0IHpfbmVhciwgZmxvYXQgel8yZCwgZmxvYXQgd2lkdGhfMmQsIGZsb2F0IGhl aWdodF8yZCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgdm9pZCB2 aWV3XzJkX2luX3BlcnNwZWN0aXZlIChmbG9hdCBmb3ZfeSwgZmxvYXQgYXNwZWN0LCBmbG9hdCB6 X25lYXIsIGZsb2F0IHpfMmQsIGZsb2F0IHdpZHRoXzJkLCBmbG9hdCBoZWlnaHRfMmQpOwotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGhhc190eXBlX2lk ID0gZmFsc2UpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RydWN0 IE9uc2NyZWVuRGlydHlJbmZvIHsKLS0JCXB1YmxpYyBpbnQgeDsKLS0JCXB1YmxpYyBpbnQgeTsK LS0JCXB1YmxpYyBpbnQgd2lkdGg7Ci0tCQlwdWJsaWMgaW50IGhlaWdodDsKLS0JfQotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNl KV0KLS0JcHVibGljIHN0cnVjdCBUZXh0dXJlVmVydGV4IHsKLS0JCXB1YmxpYyBmbG9hdCB4Owot LQkJcHVibGljIGZsb2F0IHk7Ci0tCQlwdWJsaWMgZmxvYXQgejsKLS0JCXB1YmxpYyBmbG9hdCB0 eDsKLS0JCXB1YmxpYyBmbG9hdCB0eTsKLS0JCXB1YmxpYyBDb2dsLkNvbG9yIGNvbG9yOwotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGhhc190eXBlX2lk ID0gZmFsc2UpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCXB1YmxpYyBzdHJ1Y3Qg VXNlckRhdGFLZXkgewotLQkJcHVibGljIGludCB1bnVzZWQ7Ci0tCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiX0NvZ2xDb2xvclNpemVDaGVj ayIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMgc3RydWN0IF9Db2xvclNpemVDaGVj ayB7Ci0tCQlbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0KLS0JCXB1YmxpYyB3ZWFrIGNo YXJbXSBjb21waWxlX3RpbWVfYXNzZXJ0X0NvZ2xDb2xvcl9zaXplOwotLQl9Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIl9Db2dsTWF0cml4U2l6 ZUNoZWNrIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBzdHJ1Y3QgX01hdHJpeFNp emVDaGVjayB7Ci0tCQlbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0KLS0JCXB1YmxpYyB3 ZWFrIGNoYXJbXSBjb21waWxlX3RpbWVfYXNzZXJ0X0NvZ2xNYXRyaXhfc2l6ZTsKLS0JfQotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJfQ29nbFRl eHR1cmVWZXJ0ZXhTaXplQ2hlY2siLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIHN0 cnVjdCBfVGV4dHVyZVZlcnRleFNpemVDaGVjayB7Ci0tCQlbQ0NvZGUgKGFycmF5X2xlbmd0aCA9 IGZhbHNlKV0KLS0JCXB1YmxpYyB3ZWFrIGNoYXJbXSBjb21waWxlX3RpbWVfYXNzZXJ0X0NvZ2xU ZXh0dXJlVmVydGV4X3NpemU7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX0FUVFJJQlVURV9UWVBFXyIsIGhhc190eXBlX2lk ID0gZmFsc2UpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBlbnVtIEF0 dHJpYnV0ZVR5cGUgewotLQkJQllURSwKLS0JCVVOU0lHTkVEX0JZVEUsCi0tCQlTSE9SVCwKLS0J CVVOU0lHTkVEX1NIT1JULAotLQkJRkxPQVQKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfQklUTUFQX0VSUk9SXyIsIGhhc190 eXBlX2lkID0gZmFsc2UpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCXB1YmxpYyBl bnVtIEJpdG1hcEVycm9yIHsKLS0JCUZBSUxFRCwKLS0JCVVOS05PV05fVFlQRSwKLS0JCUNPUlJV UFRfSU1BR0UKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi LCBjcHJlZml4ID0gIkNPR0xfQkxFTkRfU1RSSU5HX0VSUk9SXyIsIGhhc190eXBlX2lkID0gZmFs c2UpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBlbnVtIEJsZW5kU3Ry aW5nRXJyb3IgewotLQkJUEFSU0VfRVJST1IsCi0tCQlBUkdVTUVOVF9QQVJTRV9FUlJPUiwKLS0J CUlOVkFMSURfRVJST1IsCi0tCQlHUFVfVU5TVVBQT1JURURfRVJST1I7Ci0tCQlwdWJsaWMgc3Rh dGljIHVpbnQzMiBxdWFyayAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfQlVGRkVSX0JJVF8iLCBoYXNfdHlwZV9pZCA9 IGZhbHNlKV0KLS0JW0ZsYWdzXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1Ymxp YyBlbnVtIEJ1ZmZlckJpdCB7Ci0tCQlDT0xPUiwKLS0JCURFUFRILAotLQkJU1RFTkNJTAotLQl9 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAi Q09HTF8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW0ZsYWdzXQotLQlbVmVyc2lvbiAoc2lu Y2UgPSAiMC44IildCi0tCXB1YmxpYyBlbnVtIEJ1ZmZlclRhcmdldCB7Ci0tCQlXSU5ET1dfQlVG RkVSLAotLQkJT0ZGU0NSRUVOX0JVRkZFUgotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9DT0xPUl9NQVNLXyIsIGhhc190eXBl X2lkID0gZmFsc2UpXQotLQlbRmxhZ3NdCi0tCXB1YmxpYyBlbnVtIENvbG9yTWFzayB7Ci0tCQlO T05FLAotLQkJUkVELAotLQkJR1JFRU4sCi0tCQlCTFVFLAotLQkJQUxQSEEsCi0tCQlBTEwKLS0J fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0g IkNPR0xfREVQVEhfVEVTVF9GVU5DVElPTl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVi bGljIGVudW0gRGVwdGhUZXN0RnVuY3Rpb24gewotLQkJTkVWRVIsCi0tCQlMRVNTLAotLQkJRVFV QUwsCi0tCQlMRVFVQUwsCi0tCQlHUkVBVEVSLAotLQkJTk9URVFVQUwsCi0tCQlHRVFVQUwsCi0t CQlBTFdBWVMKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi LCBjcHJlZml4ID0gIkNPR0xfRkVBVFVSRV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW0Zs YWdzXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0tCXB1YmxpYyBlbnVtIEZlYXR1cmVG bGFncyB7Ci0tCQlURVhUVVJFX1JFQ1RBTkdMRSwKLS0JCVRFWFRVUkVfTlBPVCwKLS0JCVRFWFRV UkVfWVVWLAotLQkJVEVYVFVSRV9SRUFEX1BJWEVMUywKLS0JCVNIQURFUlNfR0xTTCwKLS0JCU9G RlNDUkVFTiwKLS0JCU9GRlNDUkVFTl9NVUxUSVNBTVBMRSwKLS0JCU9GRlNDUkVFTl9CTElULAot LQkJRk9VUl9DTElQX1BMQU5FUywKLS0JCVNURU5DSUxfQlVGRkVSLAotLQkJVkJPUywKLS0JCVBC T1MsCi0tCQlVTlNJR05FRF9JTlRfSU5ESUNFUywKLS0JCURFUFRIX1JBTkdFLAotLQkJVEVYVFVS RV9OUE9UX0JBU0lDLAotLQkJVEVYVFVSRV9OUE9UX01JUE1BUCwKLS0JCVRFWFRVUkVfTlBPVF9S RVBFQVQsCi0tCQlQT0lOVF9TUFJJVEUsCi0tCQlURVhUVVJFXzNELAotLQkJTUFQX0JVRkZFUl9G T1JfUkVBRCwKLS0JCU1BUF9CVUZGRVJfRk9SX1dSSVRFLAotLQkJT05TQ1JFRU5fTVVMVElQTEUs Ci0tCQlERVBUSF9URVhUVVJFCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX0ZJTFRFUl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNl KV0KLS0JcHVibGljIGVudW0gRmlsdGVyUmV0dXJuIHsKLS0JCUNPTlRJTlVFLAotLQkJUkVNT1ZF Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZp eCA9ICJDT0dMX0ZPR19NT0RFXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlbVmVyc2lvbiAo c2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBlbnVtIEZvZ01vZGUgewotLQkJTElORUFSLAotLQkJ RVhQT05FTlRJQUwsCi0tCQlFWFBPTkVOVElBTF9TUVVBUkVECi0tCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX0ZSQU1FX0VWRU5U XyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQot LQlwdWJsaWMgZW51bSBGcmFtZUV2ZW50IHsKLS0JCVNZTkMsCi0tCQlDT01QTEVURQotLQl9Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09H TF9GUkFNRUJVRkZFUl9FUlJPUl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIGVu dW0gRnJhbWVidWZmZXJFcnJvciB7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfRlJBTUVCVUZG RVJfRVJST1JfQUxMT0NBVEUiKV0KLS0JCUZSQU1FQlVGRkVSX0VSUk9SX0FMTE9DQVRFOwotLQkJ cHVibGljIHN0YXRpYyB1aW50MzIgcXVhcmsgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX0lORElDRVNfVFlQRV9VTlNJ R05FRF8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIGVudW0gSW5kaWNlc1R5cGUg ewotLQkJQllURSwKLS0JCVNIT1JULAotLQkJSU5UCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX01BVEVSSUFMX0FMUEhBX0ZV TkNfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBlbnVtIE1hdGVyaWFsQWxwaGFG dW5jIHsKLS0JCU5FVkVSLAotLQkJTEVTUywKLS0JCUVRVUFMLAotLQkJTEVRVUFMLAotLQkJR1JF QVRFUiwKLS0JCU5PVEVRVUFMLAotLQkJR0VRVUFMLAotLQkJQUxXQVlTCi0tCX0KLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX01BVEVS SUFMX0ZJTFRFUl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGljIGVudW0gTWF0ZXJp YWxGaWx0ZXIgewotLQkJTkVBUkVTVCwKLS0JCUxJTkVBUiwKLS0JCU5FQVJFU1RfTUlQTUFQX05F QVJFU1QsCi0tCQlMSU5FQVJfTUlQTUFQX05FQVJFU1QsCi0tCQlORUFSRVNUX01JUE1BUF9MSU5F QVIsCi0tCQlMSU5FQVJfTUlQTUFQX0xJTkVBUgotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9NQVRFUklBTF9MQVlFUl9UWVBF XyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0t CXB1YmxpYyBlbnVtIE1hdGVyaWFsTGF5ZXJUeXBlIHsKLS0JCVtDQ29kZSAoY25hbWUgPSAiQ09H TF9NQVRFUklBTF9MQVlFUl9UWVBFX1RFWFRVUkUiKV0KLS0JCU1BVEVSSUFMX0xBWUVSX1RZUEVf VEVYVFVSRQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIs IGNwcmVmaXggPSAiQ09HTF9NQVRFUklBTF9XUkFQX01PREVfIiwgaGFzX3R5cGVfaWQgPSBmYWxz ZSldCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLS0JcHVibGljIGVudW0gTWF0ZXJpYWxX cmFwTW9kZSB7Ci0tCQlSRVBFQVQsCi0tCQlDTEFNUF9UT19FREdFLAotLQkJQVVUT01BVElDCi0t CX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9 ICJDT0dMX1BJUEVMSU5FX0FMUEhBX0ZVTkNfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1 YmxpYyBlbnVtIFBpcGVsaW5lQWxwaGFGdW5jIHsKLS0JCU5FVkVSLAotLQkJTEVTUywKLS0JCUVR VUFMLAotLQkJTEVRVUFMLAotLQkJR1JFQVRFUiwKLS0JCU5PVEVRVUFMLAotLQkJR0VRVUFMLAot LQkJQUxXQVlTCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5o IiwgY3ByZWZpeCA9ICJDT0dMX1BJUEVMSU5FX0NVTExfRkFDRV9NT0RFXyIsIGhhc190eXBlX2lk ID0gZmFsc2UpXQotLQlwdWJsaWMgZW51bSBQaXBlbGluZUN1bGxGYWNlTW9kZSB7Ci0tCQlOT05F LAotLQkJRlJPTlQsCi0tCQlCQUNLLAotLQkJQk9USAotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9QSVBFTElORV9GSUxURVJf IiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCXB1YmxpYyBlbnVtIFBpcGVsaW5lRmlsdGVyIHsK LS0JCU5FQVJFU1QsCi0tCQlMSU5FQVIsCi0tCQlORUFSRVNUX01JUE1BUF9ORUFSRVNULAotLQkJ TElORUFSX01JUE1BUF9ORUFSRVNULAotLQkJTkVBUkVTVF9NSVBNQVBfTElORUFSLAotLQkJTElO RUFSX01JUE1BUF9MSU5FQVIKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfUElQRUxJTkVfV1JBUF9NT0RFXyIsIGhhc190eXBl X2lkID0gZmFsc2UpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCXB1YmxpYyBlbnVt IFBpcGVsaW5lV3JhcE1vZGUgewotLQkJUkVQRUFULAotLQkJTUlSUk9SRURfUkVQRUFULAotLQkJ Q0xBTVBfVE9fRURHRSwKLS0JCUFVVE9NQVRJQwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9QSVhFTF9GT1JNQVRfIiwgaGFz X3R5cGVfaWQgPSBmYWxzZSldCi0tCVtGbGFnc10KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIp XQotLQlwdWJsaWMgZW51bSBQaXhlbEZvcm1hdCB7Ci0tCQlBTlksCi0tCQlBXzgsCi0tCQlSR0Jf NTY1LAotLQkJUkdCQV80NDQ0LAotLQkJUkdCQV81NTUxLAotLQkJWVVWLAotLQkJR184LAotLQkJ UkdfODgsCi0tCQlSR0JfODg4LAotLQkJQkdSXzg4OCwKLS0JCVJHQkFfODg4OCwKLS0JCUJHUkFf ODg4OCwKLS0JCUFSR0JfODg4OCwKLS0JCUFCR1JfODg4OCwKLS0JCVJHQkFfMTAxMDEwMiwKLS0J CUJHUkFfMTAxMDEwMiwKLS0JCUFSR0JfMjEwMTAxMCwKLS0JCUFCR1JfMjEwMTAxMCwKLS0JCVJH QkFfODg4OF9QUkUsCi0tCQlCR1JBXzg4ODhfUFJFLAotLQkJQVJHQl84ODg4X1BSRSwKLS0JCUFC R1JfODg4OF9QUkUsCi0tCQlSR0JBXzQ0NDRfUFJFLAotLQkJUkdCQV81NTUxX1BSRSwKLS0JCVJH QkFfMTAxMDEwMl9QUkUsCi0tCQlCR1JBXzEwMTAxMDJfUFJFLAotLQkJQVJHQl8yMTAxMDEwX1BS RSwKLS0JCUFCR1JfMjEwMTAxMF9QUkUsCi0tCQlERVBUSF8xNiwKLS0JCURFUFRIXzMyLAotLQkJ REVQVEhfMjRfU1RFTkNJTF84Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX1JFQURfUElYRUxTX0NPTE9SXyIsIGhhc190eXBl X2lkID0gZmFsc2UpXQotLQlbRmxhZ3NdCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0J cHVibGljIGVudW0gUmVhZFBpeGVsc0ZsYWdzIHsKLS0JCVtDQ29kZSAoY25hbWUgPSAiQ09HTF9S RUFEX1BJWEVMU19DT0xPUl9CVUZGRVIiKV0KLS0JCVJFQURfUElYRUxTX0NPTE9SX0JVRkZFUgot LQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXgg PSAiQ09HTF9SRU5ERVJFUl9FUlJPUl8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JcHVibGlj IGVudW0gUmVuZGVyZXJFcnJvciB7Ci0tCQlYTElCX0RJU1BMQVlfT1BFTiwKLS0JCUJBRF9DT05T VFJBSU5UCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwg Y3ByZWZpeCA9ICJDT0dMX1NIQURFUl9UWVBFXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBlbnVtIFNoYWRlclR5cGUgewotLQkJ VkVSVEVYLAotLQkJRlJBR01FTlQKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfU1RFUkVPXyIsIGhhc190eXBlX2lkID0gZmFs c2UpXQotLQlwdWJsaWMgZW51bSBTdGVyZW9Nb2RlIHsKLS0JCUJPVEgsCi0tCQlMRUZULAotLQkJ UklHSFQKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBj cHJlZml4ID0gIkNPR0xfU1lTVEVNX0VSUk9SXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlb VmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCXB1YmxpYyBlbnVtIFN5c3RlbUVycm9yIHsKLS0J CVVOU1VQUE9SVEVELAotLQkJTk9fTUVNT1JZCi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX1RFWFRVUkVfQ09NUE9ORU5UU18i LCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0J cHVibGljIGVudW0gVGV4dHVyZUNvbXBvbmVudHMgewotLQkJQSwKLS0JCVJHLAotLQkJUkdCLAot LQkJUkdCQSwKLS0JCURFUFRICi0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX1RFWFRVUkVfRVJST1JfIiwgaGFzX3R5cGVfaWQg PSBmYWxzZSldCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JcHVibGljIGVudW0gVGV4 dHVyZUVycm9yIHsKLS0JCVNJWkUsCi0tCQlGT1JNQVQsCi0tCQlCQURfUEFSQU1FVEVSLAotLQkJ VFlQRTsKLS0JCXB1YmxpYyBzdGF0aWMgdWludDMyIHF1YXJrICgpOwotLQl9Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9URVhUVVJF XyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlbRmxhZ3NdCi0tCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjAiKV0KLS0JcHVibGljIGVudW0gVGV4dHVyZUZsYWdzIHsKLS0JCU5PTkUsCi0tCQlOT19B VVRPX01JUE1BUCwKLS0JCU5PX1NMSUNJTkcsCi0tCQlOT19BVExBUwotLQl9Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9URVhUVVJF X1RZUEVfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEw IildCi0tCXB1YmxpYyBlbnVtIFRleHR1cmVUeXBlIHsKLS0JCUAyRCwKLS0JCUAzRCwKLS0JCVJF Q1RBTkdMRQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIs IGNwcmVmaXggPSAiQ09HTF9WRVJUSUNFU19NT0RFXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQot LQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBlbnVtIFZlcnRpY2VzTW9kZSB7 Ci0tCQlQT0lOVFMsCi0tCQlMSU5FUywKLS0JCUxJTkVfTE9PUCwKLS0JCUxJTkVfU1RSSVAsCi0t CQlUUklBTkdMRVMsCi0tCQlUUklBTkdMRV9TVFJJUCwKLS0JCVRSSUFOR0xFX0ZBTgotLQl9Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09H TF9XSU5ESU5HXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMgZW51bSBXaW5kaW5n IHsKLS0JCUNMT0NLV0lTRSwKLS0JCUNPVU5URVJfQ0xPQ0tXSVNFCi0tCX0KLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX1dJTlNZU19G RUFUVVJFXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlwdWJsaWMgZW51bSBXaW5zeXNGZWF0 dXJlIHsKLS0JCU1VTFRJUExFX09OU0NSRUVOLAotLQkJU1dBUF9USFJPVFRMRSwKLS0JCVZCTEFO S19DT1VOVEVSLAotLQkJVkJMQU5LX1dBSVQsCi0tCQlURVhUVVJFX0ZST01fUElYTUFQLAotLQkJ U1dBUF9CVUZGRVJTX0VWRU5ULAotLQkJU1dBUF9SRUdJT04sCi0tCQlTV0FQX1JFR0lPTl9USFJP VFRMRSwKLS0JCVNXQVBfUkVHSU9OX1NZTkNIUk9OSVpFRCwKLS0JCUJVRkZFUl9BR0UsCi0tCQlT WU5DX0FORF9DT01QTEVURV9FVkVOVCwKLS0JCU5fRkVBVFVSRVMKLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3MgPSAxLjkpXQotLQlb VmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIERlYnVnT2Jq ZWN0Rm9yZWFjaFR5cGVDYWxsYmFjayAoQ29nbC5EZWJ1Z09iamVjdFR5cGVJbmZvIGluZm8pOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3Mg PSAyLjkpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQlwdWJsaWMgZGVsZWdhdGUgQ29nbC5Cb29sIE1h dGVyaWFsTGF5ZXJDYWxsYmFjayAoQ29nbC5NYXRlcmlhbCBtYXRlcmlhbCwgaW50IGxheWVyX2lu ZGV4KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaW5zdGFu Y2VfcG9zID0gMi45KV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIGRl bGVnYXRlIHZvaWQgT25zY3JlZW5EaXJ0eUNhbGxiYWNrIChDb2dsLk9uc2NyZWVuIG9uc2NyZWVu LCBDb2dsLk9uc2NyZWVuRGlydHlJbmZvIGluZm8pOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3MgPSAzLjkpXQotLQlbVmVyc2lvbiAoc2lu Y2UgPSAiMi4wIildCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIE9uc2NyZWVuUmVzaXplQ2FsbGJh Y2sgKENvZ2wuT25zY3JlZW4gb25zY3JlZW4sIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3BvcyA9IDIu OSldCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIE9uc2NyZWVuWDExTWFza0NhbGxiYWNrIChDb2ds Lk9uc2NyZWVuIG9uc2NyZWVuLCB1aW50MzIgZXZlbnRfbWFzayk7Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3BvcyA9IDIuOSldCi0tCVtWZXJz aW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JcHVibGljIGRlbGVnYXRlIENvZ2wuQm9vbCBQaXBlbGlu ZUxheWVyQ2FsbGJhY2sgKENvZ2wuUGlwZWxpbmUgcGlwZWxpbmUsIGludCBsYXllcl9pbmRleCk7 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3Bv cyA9IDEuOSldCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIFN3YXBCdWZmZXJzTm90aWZ5IChDb2ds LkZyYW1lYnVmZmVyIGZyYW1lYnVmZmVyKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIiwgaGFzX3RhcmdldCA9IGZhbHNlKV0KLS0JcHVibGljIGRlbGVnYXRlIHZv aWQgVXNlckRhdGFEZXN0cm95Q2FsbGJhY2sgKHZvaWQqIGRhdGEpOwotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dMX0FGSVJTVF9CSVQiKV0K LS0JcHVibGljIGNvbnN0IGludCBBRklSU1RfQklUOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dMX0FfQklUIildCi0tCXB1YmxpYyBjb25z dCBpbnQgQV9CSVQ7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIs IGNuYW1lID0gIkNPR0xfQkdSX0JJVCIpXQotLQlwdWJsaWMgY29uc3QgaW50IEJHUl9CSVQ7Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNPR0xf REVQVEhfQklUIildCi0tCXB1YmxpYyBjb25zdCBpbnQgREVQVEhfQklUOwotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dMX1BSRU1VTFRfQklU IildCi0tCXB1YmxpYyBjb25zdCBpbnQgUFJFTVVMVF9CSVQ7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNPR0xfU1RFTkNJTF9CSVQiKV0KLS0J cHVibGljIGNvbnN0IGludCBTVEVOQ0lMX0JJVDsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ09HTF9URVhUVVJFX01BWF9XQVNURSIpXQotLQlw dWJsaWMgY29uc3QgaW50IFRFWFRVUkVfTUFYX1dBU1RFOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRp YyB2b2lkIGJlZ2luX2dsICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9j b2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMiIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBjaGVja19leHRlbnNpb24gKHN0 cmluZyBuYW1lLCBzdHJpbmcgZXh0KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBjbGVhciAoQ29nbC5Db2xvciBj b2xvciwgdWxvbmcgYnVmZmVycyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBjbHV0dGVyX2NoZWNrX2V4dGVu c2lvbl9DTFVUVEVSIChzdHJpbmcgbmFtZSwgc3RyaW5nIGV4dCk7Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBj bHV0dGVyX3dpbnN5c19oYXNfZmVhdHVyZV9DTFVUVEVSIChDb2dsLldpbnN5c0ZlYXR1cmUgZmVh dHVyZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlb VmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBkZWJ1Z19tYXRy aXhfcHJpbnQgKENvZ2wuTWF0cml4IG1hdHJpeCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCXB1Ymxp YyBzdGF0aWMgdm9pZCBkZWJ1Z19vYmplY3RfZm9yZWFjaF90eXBlIChDb2dsLkRlYnVnT2JqZWN0 Rm9yZWFjaFR5cGVDYWxsYmFjayBmdW5jKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JcHVibGljIHN0 YXRpYyB2b2lkIGRlYnVnX29iamVjdF9wcmludF9pbnN0YW5jZXMgKCk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQg ZGlzYWJsZV9mb2cgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgZW5kX2dsICgpOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGlj IHN0YXRpYyBDb2dsLkJvb2wgZmVhdHVyZXNfYXZhaWxhYmxlIChDb2dsLkZlYXR1cmVGbGFncyBm ZWF0dXJlcyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQot LQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBmbHVzaCAo KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2Ug PSAiMC44LjIiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIGZydXN0dW0gKGZsb2F0IGxlZnQsIGZs b2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGZsb2F0IHRvcCwgZmxvYXQgel9uZWFyLCBmbG9hdCB6 X2Zhcik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQot LQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBnZXRfYmFja2ZhY2VfY3VsbGluZ19lbmFibGVkICgp OwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuOCIpXQotLQlwdWJs aWMgc3RhdGljIHZvaWQgZ2V0X2JpdG1hc2tzIChvdXQgaW50IHJlZCwgb3V0IGludCBncmVlbiwg b3V0IGludCBibHVlLCBvdXQgaW50IGFscGhhKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5Cb29sIGdldF9kZXB0 aF90ZXN0X2VuYWJsZWQgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCXB1YmxpYyBzdGF0aWMgdW5v d25lZCBDb2dsLkZyYW1lYnVmZmVyIGdldF9kcmF3X2ZyYW1lYnVmZmVyICgpOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjgiKV0KLS0J cHVibGljIHN0YXRpYyBDb2dsLkZlYXR1cmVGbGFncyBnZXRfZmVhdHVyZXMgKCk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGlj IENvZ2wuTWF0cml4IGdldF9tb2RlbHZpZXdfbWF0cml4ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0 YXRpYyBHTGliLk9wdGlvbkdyb3VwIGdldF9vcHRpb25fZ3JvdXAgKCk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wu TWF0cml4IGdldF9wcm9qZWN0aW9uX21hdHJpeCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS42IildCi0tCXB1YmxpYyBzdGF0aWMg dm9pZCogZ2V0X3NvdXJjZSAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBnZXRfdmlld3BvcnQgKFtDQ29kZSAo YXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBvdXQgZmxvYXQgdls0XSk7Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIpXQotLQlwdWJsaWMgc3RhdGljIEdMaWIuVHlw ZSBndHlwZV9tYXRyaXhfZ2V0X3R5cGUgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMg c3RhdGljIENvZ2wuQm9vbCBpc19mcmFtZWJ1ZmZlciAodm9pZCogb2JqZWN0KTsKLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5Cb29sIGlzX29uc2NyZWVuICh2b2lkKiBv YmplY3QpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0J W1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBpc19w aXBlbGluZSAodm9pZCogb2JqZWN0KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5Cb29s IGlzX3ZlcnRleF9idWZmZXJfaW5kaWNlcyAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4wIildCi0t CXB1YmxpYyBzdGF0aWMgdm9pZCBvcnRobyAoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0 IGJvdHRvbSwgZmxvYXQgdG9wLCBmbG9hdCBuZWFyLCBmbG9hdCBmYXIpOwotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IHBlcnNwZWN0aXZlIChmbG9hdCBmb3Z5LCBmbG9hdCBhc3BlY3QsIGZsb2F0IHpfbmVhciwgZmxv YXQgel9mYXIpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0K LS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcG9seWdv biAoQ29nbC5UZXh0dXJlVmVydGV4IHZlcnRpY2VzLCB1aW50IG5fdmVydGljZXMsIENvZ2wuQm9v bCB1c2VfY29sb3IpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi KV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHBvcF9tYXRyaXggKCk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNiIpXQotLQlwdWJs aWMgc3RhdGljIHZvaWQgcG9wX3NvdXJjZSAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBwdXNoX21hdHJpeCAo KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2Ug PSAiMS42IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBwdXNoX3NvdXJjZSAodm9pZCogbWF0ZXJp YWwpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JcHVi bGljIHN0YXRpYyB2b2lkIHJlY3RhbmdsZSAoZmxvYXQgeF8xLCBmbG9hdCB5XzEsIGZsb2F0IHhf MiwgZmxvYXQgeV8yKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5o IildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHJl Y3RhbmdsZV93aXRoX211bHRpdGV4dHVyZV9jb29yZHMgKGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxv YXQgeDIsIGZsb2F0IHkyLCBbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gZmxvYXRbXSB0 ZXhfY29vcmRzLCBpbnQgdGV4X2Nvb3Jkc19sZW4pOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJs aWMgc3RhdGljIHZvaWQgcmVjdGFuZ2xlX3dpdGhfdGV4dHVyZV9jb29yZHMgKGZsb2F0IHgxLCBm bG9hdCB5MSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBmbG9hdCB0eDEsIGZsb2F0IHR5MSwgZmxvYXQg dHgyLCBmbG9hdCB0eTIpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQg cmVjdGFuZ2xlcyAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIGZsb2F0W10gdmVydHMs IHVpbnQgbl9yZWN0cyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC44LjYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IHJlY3RhbmdsZXNfd2l0aF90ZXh0dXJlX2Nvb3JkcyAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBm YWxzZSldIGZsb2F0W10gdmVydHMsIHVpbnQgbl9yZWN0cyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcm90YXRl IChmbG9hdCBhbmdsZSwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQg c2NhbGUgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF9iYWNr ZmFjZV9jdWxsaW5nX2VuYWJsZWQgKENvZ2wuQm9vbCBzZXR0aW5nKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBz ZXRfZGVwdGhfdGVzdF9lbmFibGVkIChDb2dsLkJvb2wgc2V0dGluZyk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQg c2V0X2ZvZyAoQ29nbC5Db2xvciBmb2dfY29sb3IsIENvZ2wuRm9nTW9kZSBtb2RlLCBmbG9hdCBk ZW5zaXR5LCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsKLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfbW9k ZWx2aWV3X21hdHJpeCAoQ29nbC5NYXRyaXggbWF0cml4KTsKLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfcHJv amVjdGlvbl9tYXRyaXggKENvZ2wuTWF0cml4IG1hdHJpeCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3Rh dGljIHZvaWQgc2V0X3NvdXJjZSAodm9pZCogbWF0ZXJpYWwpOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0 YXRpYyB2b2lkIHNldF9zb3VyY2VfY29sb3IgKENvZ2wuQ29sb3IgY29sb3IpOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0J cHVibGljIHN0YXRpYyB2b2lkIHNldF9zb3VyY2VfY29sb3I0ZiAoZmxvYXQgcmVkLCBmbG9hdCBn cmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2 b2lkIHNldF9zb3VyY2VfY29sb3I0dWIgKHVpbnQ4IHJlZCwgdWludDggZ3JlZW4sIHVpbnQ4IGJs dWUsIHVpbnQ4IGFscGhhKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfc291cmNl X3RleHR1cmUgKENvZ2wuVGV4dHVyZSB0ZXh0dXJlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjgiLCBzaW5jZSA9ICIxLjIiKV0KLS0JcHVibGljIHN0YXRpYyB2 b2lkIHNldF92aWV3cG9ydCAoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGlj IHN0YXRpYyB2b2lkIHNoYWRlcl9jb21waWxlIChDb2dsLkhhbmRsZSBoYW5kbGUpOwotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRp YyBzdHJpbmcgc2hhZGVyX2dldF9pbmZvX2xvZyAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0 aWMgQ29nbC5TaGFkZXJUeXBlIHNoYWRlcl9nZXRfdHlwZSAoQ29nbC5IYW5kbGUgaGFuZGxlKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1Ymxp YyBzdGF0aWMgQ29nbC5Cb29sIHNoYWRlcl9pc19jb21waWxlZCAoQ29nbC5IYW5kbGUgaGFuZGxl KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1 YmxpYyBzdGF0aWMgQ29nbC5IYW5kbGUgc2hhZGVyX3JlZiAoQ29nbC5IYW5kbGUgaGFuZGxlKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1Ymxp YyBzdGF0aWMgdm9pZCBzaGFkZXJfc291cmNlIChDb2dsLkhhbmRsZSBzaGFkZXIsIHN0cmluZyBz b3VyY2UpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0J W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0K LS0JcHVibGljIHN0YXRpYyB2b2lkIHNoYWRlcl91bnJlZiAoQ29nbC5IYW5kbGUgaGFuZGxlKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAi MS4wIildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5UZXh0dXJlIHRleHR1cmVfbmV3X2Zyb21fYml0 bWFwIChDb2dsLkJpdG1hcCBiaXRtYXAsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBp eGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjAuOCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wu VGV4dHVyZSB0ZXh0dXJlX25ld19mcm9tX2RhdGEgKGludCB3aWR0aCwgaW50IGhlaWdodCwgQ29n bC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQgZm9ybWF0LCBDb2dsLlBpeGVs Rm9ybWF0IGludGVybmFsX2Zvcm1hdCwgaW50IHJvd3N0cmlkZSwgdWludDggZGF0YSk7Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjAuOCIp XQotLQlwdWJsaWMgc3RhdGljIENvZ2wuVGV4dHVyZSB0ZXh0dXJlX25ld19mcm9tX2ZpbGUgKHN0 cmluZyBmaWxlbmFtZSwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQg aW50ZXJuYWxfZm9ybWF0KSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44IildCi0tCXB1YmxpYyBzdGF0 aWMgQ29nbC5UZXh0dXJlIHRleHR1cmVfbmV3X2Zyb21fZm9yZWlnbiAodWludCBnbF9oYW5kbGUs IHVpbnQgZ2xfdGFyZ2V0LCB1aW50IHdpZHRoLCB1aW50IGhlaWdodCwgdWludCB4X3BvdF93YXN0 ZSwgdWludCB5X3BvdF93YXN0ZSwgQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQpOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIwLjgiKV0KLS0J cHVibGljIHN0YXRpYyBDb2dsLlRleHR1cmUgdGV4dHVyZV9uZXdfd2l0aF9zaXplICh1aW50IHdp ZHRoLCB1aW50IGhlaWdodCwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3Jt YXQgaW50ZXJuYWxfZm9ybWF0KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEwIiwgc2luY2UgPSAiMS40IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB0cmFuc2Zv cm0gKENvZ2wuTWF0cml4IG1hdHJpeCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj b2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdHJhbnNsYXRlIChmbG9hdCB4 LCBmbG9hdCB5LCBmbG9hdCB6KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJ0ZXhfYnVmZmVyX2FkZCAoQ29n bC5IYW5kbGUgaGFuZGxlLCBzdHJpbmcgYXR0cmlidXRlX25hbWUsIHVpbnQ4IG5fY29tcG9uZW50 cywgQ29nbC5BdHRyaWJ1dGVUeXBlIHR5cGUsIENvZ2wuQm9vbCBub3JtYWxpemVkLCB1aW50MTYg c3RyaWRlLCB2b2lkKiBwb2ludGVyKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJ0ZXhfYnVmZmVyX2RlbGV0 ZSAoQ29nbC5IYW5kbGUgaGFuZGxlLCBzdHJpbmcgYXR0cmlidXRlX25hbWUpOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2 b2lkIHZlcnRleF9idWZmZXJfZGlzYWJsZSAoQ29nbC5IYW5kbGUgaGFuZGxlLCBzdHJpbmcgYXR0 cmlidXRlX25hbWUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi KV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHZlcnRleF9idWZmZXJfZHJhdyAoQ29nbC5IYW5k bGUgaGFuZGxlLCBDb2dsLlZlcnRpY2VzTW9kZSBtb2RlLCBpbnQgZmlyc3QsIGludCBjb3VudCk7 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJs aWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZlcl9kcmF3X2VsZW1lbnRzIChDb2dsLkhhbmRsZSBo YW5kbGUsIENvZ2wuVmVydGljZXNNb2RlIG1vZGUsIENvZ2wuSGFuZGxlIGluZGljZXMsIGludCBt aW5faW5kZXgsIGludCBtYXhfaW5kZXgsIGludCBpbmRpY2VzX29mZnNldCwgaW50IGNvdW50KTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1Ymxp YyBzdGF0aWMgdm9pZCB2ZXJ0ZXhfYnVmZmVyX2VuYWJsZSAoQ29nbC5IYW5kbGUgaGFuZGxlLCBz dHJpbmcgYXR0cmlidXRlX25hbWUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB1aW50IHZlcnRleF9idWZmZXJfZ2V0X25f dmVydGljZXMgKENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuSGFuZGxlIHZlcnRl eF9idWZmZXJfaW5kaWNlc19nZXRfZm9yX3F1YWRzICh1aW50IG5faW5kaWNlcyk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGlj IENvZ2wuSW5kaWNlc1R5cGUgdmVydGV4X2J1ZmZlcl9pbmRpY2VzX2dldF90eXBlIChDb2dsLkhh bmRsZSBpbmRpY2VzKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5o IildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjE2IildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5IYW5kbGUgdmVydGV4X2J1ZmZlcl9uZXcgKHVp bnQgbl92ZXJ0aWNlcyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4yIildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5IYW5kbGUgdmVydGV4X2J1ZmZlcl9yZWYgKENv Z2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZlcl9zdWJtaXQgKENv Z2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4yIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJ0ZXhfYnVmZmVyX3VucmVmIChDb2ds LkhhbmRsZSBoYW5kbGUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuOCIsIHNpbmNlID0gIjAuOC4yIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2aWV3cG9ydCAo dWludCB3aWR0aCwgdWludCBoZWlnaHQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y29nbC9jb2dsLmgiKV0KLS0JcHVibGljIHN0YXRpYyB1aW50MzIgeDExX29uc2NyZWVuX2dldF92 aXN1YWxfeGlkIChDb2dsLk9uc2NyZWVuIG9uc2NyZWVuKTsKLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0t CXB1YmxpYyBzdGF0aWMgdWludDMyIHgxMV9vbnNjcmVlbl9nZXRfd2luZG93X3hpZCAoQ29nbC5P bnNjcmVlbiBvbnNjcmVlbik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9p ZCB4MTFfb25zY3JlZW5fc2V0X2ZvcmVpZ25fd2luZG93X3hpZCAoQ29nbC5PbnNjcmVlbiBvbnNj cmVlbiwgdWludDMyIHhpZCwgW0NDb2RlIChzY29wZSA9ICJhc3luYyIpXSBDb2dsLk9uc2NyZWVu WDExTWFza0NhbGxiYWNrIHVwZGF0ZSk7Ci0tfQotZGlmZiAtLWdpdCB2YXBpL211dHRlci1jbHV0 dGVyLTUtY3VzdG9tLnZhbGEgdmFwaS9tdXR0ZXItY2x1dHRlci01LWN1c3RvbS52YWxhCi1kZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGI4ZDgzOGQwLi4wMDAwMDAwMAotLS0tIHZhcGkv bXV0dGVyLWNsdXR0ZXItNS1jdXN0b20udmFsYQotKysrIC9kZXYvbnVsbAotQEAgLTEsMTU4ICsw LDAgQEAKLS1uYW1lc3BhY2UgQ2x1dHRlciB7Ci0tICBbQ0NvZGUgKHR5cGVfaWQgPSAiQ0xVVFRF Ul9UWVBFX0FDVE9SX0JPWCIsIGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgi KV0KLS0gIHB1YmxpYyBzdHJ1Y3QgQWN0b3JCb3ggewotLSAgICBbQ0NvZGUgKGNuYW1lID0gImNs dXR0ZXJfYWN0b3JfYm94X2Zyb21fdmVydGljZXMiKV0KLS0gICAgcHVibGljIEFjdG9yQm94LmZy b21fdmVydGljZXMgKENsdXR0ZXIuVmVydGV4W10gdmVydHMpOwotLSAgfQotLQotLSAgcHVibGlj IHN0cnVjdCBNYXRyaXggOiBDb2dsLk1hdHJpeCB7Ci0tICB9Ci0tCi0tICBwdWJsaWMgY2xhc3Mg QmFja2VuZCA6IEdMaWIuT2JqZWN0IHsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIHZp cnR1YWwgdm9pZCBhZGRfb3B0aW9ucyAoR0xpYi5PcHRpb25Hcm91cCBncm91cCk7Ci0tICAgIFtO b1dyYXBwZXJdCi0tICAgIHB1YmxpYyB2aXJ0dWFsIGJvb2wgY3JlYXRlX2NvbnRleHQgKCkgdGhy b3dzIEdMaWIuRXJyb3I7Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1YmxpYyB2aXJ0dWFsIHVu b3duZWQgQ2x1dHRlci5TdGFnZVdpbmRvdyBjcmVhdGVfc3RhZ2UgKENsdXR0ZXIuU3RhZ2Ugd3Jh cHBlcikgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1YmxpYyB2 aXJ0dWFsIHZvaWQgZW5zdXJlX2NvbnRleHQgKENsdXR0ZXIuU3RhZ2Ugc3RhZ2UpOwotLSAgICBb Tm9XcmFwcGVyXQotLSAgICBwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuRGV2aWNlTWFu YWdlciBnZXRfZGV2aWNlX21hbmFnZXIgKCk7Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1Ymxp YyB2aXJ0dWFsIENsdXR0ZXIuRmVhdHVyZUZsYWdzIGdldF9mZWF0dXJlcyAoKTsKLS0gICAgW05v V3JhcHBlcl0KLS0gICAgcHVibGljIHZpcnR1YWwgdm9pZCBpbml0X2V2ZW50cyAoKTsKLS0gICAg W05vV3JhcHBlcl0KLS0gICAgcHVibGljIHZpcnR1YWwgdm9pZCBpbml0X2ZlYXR1cmVzICgpOwot LSAgICBbTm9XcmFwcGVyXQotLSAgICBwdWJsaWMgdmlydHVhbCBib29sIHBvc3RfcGFyc2UgKCkg dGhyb3dzIEdMaWIuRXJyb3I7Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1YmxpYyB2aXJ0dWFs IGJvb2wgcHJlX3BhcnNlICgpIHRocm93cyBHTGliLkVycm9yOwotLSAgICBbTm9XcmFwcGVyXQot LSAgICBwdWJsaWMgdmlydHVhbCB2b2lkIHJlZHJhdyAoQ2x1dHRlci5TdGFnZSBzdGFnZSk7Ci0t ICB9Ci0tCi0tICBbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgi LCB0eXBlX2lkID0gImNsdXR0ZXJfYm94X2dldF90eXBlICgpIildCi0tICBwdWJsaWMgY2xhc3Mg Qm94IDogQ2x1dHRlci5BY3RvciB7Ci0tICAgIHB1YmxpYyBDbHV0dGVyLkxheW91dE1hbmFnZXIg bGF5b3V0X21hbmFnZXIgeyBnZXQ7IHNldDsgfQotLSAgfQotLQotLSAgW0NDb2RlICh0eXBlX2lk ID0gIkNMVVRURVJfVFlQRV9DT0xPUiIsIGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0 dGVyLmgiKV0KLS0gIHB1YmxpYyBzdHJ1Y3QgQ29sb3IgewotLSAgICBbQ0NvZGUgKGNuYW1lID0g ImNsdXR0ZXJfY29sb3JfZnJvbV9obHMiKV0KLS0gICAgcHVibGljIENvbG9yLmZyb21faGxzIChm bG9hdCBodWUsIGZsb2F0IGx1bWluYW5jZSwgZmxvYXQgc2F0dXJhdGlvbik7Ci0tICAgIFtDQ29k ZSAoY25hbWUgPSAiY2x1dHRlcl9jb2xvcl9mcm9tX3BpeGVsIildCi0tICAgIHB1YmxpYyBDb2xv ci5mcm9tX3BpeGVsICh1aW50MzIgcGl4ZWwpOwotLSAgICBbQ0NvZGUgKGNuYW1lID0gImNsdXR0 ZXJfY29sb3JfZnJvbV9zdHJpbmciKV0KLS0gICAgcHVibGljIENvbG9yLmZyb21fc3RyaW5nIChz dHJpbmcgc3RyKTsKLS0gICAgW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX2NvbG9yX2Zyb21fc3Ry aW5nIildCi0tICAgIHB1YmxpYyBib29sIHBhcnNlX3N0cmluZyAoc3RyaW5nIHN0cik7Ci0tICAg IHB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLkNvbG9yPyBnZXRfc3RhdGljIChDbHV0dGVy LlN0YXRpY0NvbG9yIGNvbG9yKTsKLS0gIH0KLS0KLS0gIFtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9jb250YWluZXJfZ2V0 X3R5cGUgKCkiKV0KLS0gIHB1YmxpYyBpbnRlcmZhY2UgQ29udGFpbmVyIDogR0xpYi5PYmplY3Qg ewotLSAgICBwdWJsaWMgdm9pZCBhZGQgKHBhcmFtcyBDbHV0dGVyLkFjdG9yW10gYWN0b3JzKTsK LS0gICAgW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX2NvbnRhaW5lcl9jbGFzc19maW5kX2NoaWxk X3Byb3BlcnR5IildCi0tICAgIHB1YmxpYyBjbGFzcyB1bm93bmVkIEdMaWIuUGFyYW1TcGVjIGZp bmRfY2hpbGRfcHJvcGVydHkgKHN0cmluZyBwcm9wZXJ0eV9uYW1lKTsKLS0gICAgW0NDb2RlIChj bmFtZSA9ICJjbHV0dGVyX2NvbnRhaW5lcl9jbGFzc19saXN0X2NoaWxkX3Byb3BlcnRpZXMiKV0K LS0gICAgcHVibGljIGNsYXNzIHVub3duZWQgR0xpYi5QYXJhbVNwZWNbXSBsaXN0X2NoaWxkX3By b3BlcnRpZXMgKCk7Ci0tICB9Ci0tCi0tICBbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1 dHRlci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVu Y3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2V2ZW50X2dldF90eXBl ICgpIildCi0tICBbQ29tcGFjdF0KLS0gIHB1YmxpYyBjbGFzcyBFdmVudCB7Ci0tICAgIHB1Ymxp YyBDbHV0dGVyLkFueUV2ZW50IGFueSB7IFtDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJBbnlFdmVu dCAqKSIpXSBnZXQ7IH0KLS0gICAgcHVibGljIENsdXR0ZXIuQnV0dG9uRXZlbnQgYnV0dG9uIHsg W0NDb2RlIChjbmFtZSA9ICIoQ2x1dHRlckJ1dHRvbkV2ZW50ICopIildIGdldDsgfQotLSAgICBw dWJsaWMgQ2x1dHRlci5Dcm9zc2luZ0V2ZW50IGNyb3NzaW5nIHsgW0NDb2RlIChjbmFtZSA9ICIo Q2x1dHRlckNyb3NzaW5nRXZlbnQgKikiKV0gZ2V0OyB9Ci0tICAgIHB1YmxpYyBDbHV0dGVyLktl eUV2ZW50IGtleSB7IFtDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJLZXlFdmVudCAqKSIpXSBnZXQ7 IH0KLS0gICAgcHVibGljIENsdXR0ZXIuTW90aW9uRXZlbnQgbW90aW9uIHsgW0NDb2RlIChjbmFt ZSA9ICIoQ2x1dHRlck1vdGlvbkV2ZW50ICopIildIGdldDsgfQotLSAgICBwdWJsaWMgQ2x1dHRl ci5TY3JvbGxFdmVudCBzY3JvbGwgeyBbQ0NvZGUgKGNuYW1lID0gIihDbHV0dGVyU2Nyb2xsRXZl bnQgKikiKV0gZ2V0OyB9Ci0tICAgIHB1YmxpYyBDbHV0dGVyLlN0YWdlU3RhdGVFdmVudCBzdGFn ZV9zdGF0ZSB7IFtDQ29kZSAoY25hbWUgPSAiKENsdXR0ZXJTdGFnZVN0YXRlRXZlbnQgKikiKV0g Z2V0OyB9Ci0tICAgIHB1YmxpYyBDbHV0dGVyLlRvdWNoRXZlbnQgdG91Y2ggeyBbQ0NvZGUgKGNu YW1lID0gIihDbHV0dGVyVG91Y2hFdmVudCAqKSIpXSBnZXQ7IH0KLS0gICAgcHVibGljIENsdXR0 ZXIuVG91Y2hwYWRQaW5jaEV2ZW50IHRvdWNocGFkX3BpbmNoIHsgW0NDb2RlIChjbmFtZSA9ICIo Q2x1dHRlclRvdWNocGFkUGluY2hFdmVudCAqKSIpXSBnZXQ7IH0KLS0gICAgcHVibGljIENsdXR0 ZXIuVG91Y2hwYWRTd2lwZUV2ZW50IHRvdWNocGFkX3N3aXBlIHsgW0NDb2RlIChjbmFtZSA9ICIo Q2x1dHRlclRvdWNocGFkU3dpcGVFdmVudCAqKSIpXSBnZXQ7IH0KLS0gIH0KLS0KLS0gIFtDQ29k ZSAodHlwZV9pZCA9ICJjbHV0dGVyX3N0YWdlX2dldF90eXBlICgpIiwgY2hlYWRlcl9maWxlbmFt ZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLSAgcHVibGljIGNsYXNzIFN0YWdlIDogQ2x1dHRl ci5Hcm91cCB7Ci0tICAgIFtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9yZWRyYXciKV0KLS0gICAg cHVibGljIHZvaWQgcmVkcmF3ICgpOwotLSAgfQotLQotLSAgW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tICBwdWJsaWMgaW50ZXJmYWNlIFN0YWdlV2lu ZG93IDogR0xpYi5PYmplY3QgewotLSAgICBbTm9XcmFwcGVyXQotLSAgICBwdWJsaWMgYWJzdHJh Y3Qgdm9pZCBhZGRfcmVkcmF3X2NsaXAgKENsdXR0ZXIuR2VvbWV0cnkgc3RhZ2VfcmVjdGFuZ2xl KTsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIGFic3RyYWN0IHZvaWQgZ2V0X2dlb21l dHJ5IChDbHV0dGVyLkdlb21ldHJ5IGdlb21ldHJ5KTsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAg cHVibGljIGFic3RyYWN0IGludCBnZXRfcGVuZGluZ19zd2FwcyAoKTsKLS0gICAgW05vV3JhcHBl cl0KLS0gICAgcHVibGljIGFic3RyYWN0IHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfd3JhcHBl ciAoKTsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIGFic3RyYWN0IGJvb2wgaGFzX3Jl ZHJhd19jbGlwcyAoKTsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIGFic3RyYWN0IHZv aWQgaGlkZSAoKTsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIGFic3RyYWN0IGJvb2wg aWdub3JpbmdfcmVkcmF3X2NsaXBzICgpOwotLSAgICBbTm9XcmFwcGVyXQotLSAgICBwdWJsaWMg YWJzdHJhY3QgYm9vbCByZWFsaXplICgpOwotLSAgICBbTm9XcmFwcGVyXQotLSAgICBwdWJsaWMg YWJzdHJhY3Qgdm9pZCByZXNpemUgKGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0tICAgIFtOb1dy YXBwZXJdCi0tICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHNldF9jdXJzb3JfdmlzaWJsZSAoYm9v bCBjdXJzb3JfdmlzaWJsZSk7Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1YmxpYyBhYnN0cmFj dCB2b2lkIHNldF9mdWxsc2NyZWVuIChib29sIGlzX2Z1bGxzY3JlZW4pOwotLSAgICBbTm9XcmFw cGVyXQotLSAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRfdGl0bGUgKHN0cmluZyB0aXRsZSk7 Ci0tICAgIFtOb1dyYXBwZXJdCi0tICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHNldF91c2VyX3Jl c2l6YWJsZSAoYm9vbCBpc19yZXNpemFibGUpOwotLSAgICBbTm9XcmFwcGVyXQotLSAgICBwdWJs aWMgYWJzdHJhY3Qgdm9pZCBzaG93IChib29sIGRvX3JhaXNlKTsKLS0gICAgW05vV3JhcHBlcl0K LS0gICAgcHVibGljIGFic3RyYWN0IHZvaWQgdW5yZWFsaXplICgpOwotLSAgfQotLQotLSAgW0ND b2RlICh0eXBlX2lkID0gImNsdXR0ZXJfdGV4dHVyZV9nZXRfdHlwZSAoKSIsIGNoZWFkZXJfZmls ZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0gIHB1YmxpYyBjbGFzcyBUZXh0dXJlIDog Q2x1dHRlci5BY3RvciB7Ci0tICAgIHB1YmxpYyBDb2dsLk1hdGVyaWFsIGNvZ2xfbWF0ZXJpYWwg eyBnZXQ7IHNldDsgfQotLSAgICBwdWJsaWMgQ29nbC5UZXh0dXJlIGNvZ2xfdGV4dHVyZSB7IGdl dDsgc2V0OyB9Ci0tICB9Ci0tCi0tICBbQ29tcGFjdF0KLS0gIFtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLSAgcHVibGljIGNsYXNzIFRpbWVvdXRQb29s IHsKLS0gICAgW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLSAgICBw dWJsaWMgVGltZW91dFBvb2wgKGludCBwcmlvcml0eSk7Ci0tICB9Ci0tCi0tICBbQ0NvZGUgKGNw cmVmaXggPSAiQ0xVVFRFUl9GRUFUVVJFXyIsIGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9j bHV0dGVyLmgiKV0KLS0gIFtGbGFnc10KLS0gIHB1YmxpYyBlbnVtIEZlYXR1cmVGbGFncyB7Ci0t ICAgIFRFWFRVUkVfTlBPVDsKLS0gICAgW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX2ZlYXR1cmVf YXZhaWxhYmxlIildCi0tICAgIHB1YmxpYyBib29sIGlzX2F2YWlsYWJsZSAoKTsKLS0gICAgW0ND b2RlIChjbmFtZSA9ICJjbHV0dGVyX2ZlYXR1cmVfZ2V0X2FsbCIpXQotLSAgICBwdWJsaWMgc3Rh dGljIENsdXR0ZXIuRmVhdHVyZUZsYWdzIEBnZXQgKCk7Ci0tICB9Ci0tCi0tICBbQ0NvZGUgKHR5 cGVfaWQgPSAiQ0xVVFRFUl9UWVBFX1VOSVRTIiwgY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVy L2NsdXR0ZXIuaCIpXQotLSAgcHVibGljIHN0cnVjdCBVbml0cyB7Ci0tICAgIFtDQ29kZSAoY25h bWUgPSAiY2x1dHRlcl91bml0c19mcm9tX2NtIildCi0tICAgIHB1YmxpYyBVbml0cy5mcm9tX2Nt IChmbG9hdCBjbSk7Ci0tICAgIFtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl91bml0c19mcm9tX2Vt IildCi0tICAgIHB1YmxpYyBVbml0cy5mcm9tX2VtIChmbG9hdCBlbSk7Ci0tICAgIFtDQ29kZSAo Y25hbWUgPSAiY2x1dHRlcl91bml0c19mcm9tX2VtX2Zvcl9mb250IildCi0tICAgIHB1YmxpYyBV bml0cy5mcm9tX2VtX2Zvcl9mb250IChzdHJpbmcgZm9udF9uYW1lLCBmbG9hdCBlbSk7Ci0tICAg IFtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl91bml0c19mcm9tX21tIildCi0tICAgIHB1YmxpYyBV bml0cy5mcm9tX21tIChmbG9hdCBtbSk7Ci0tICAgIFtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl91 bml0c19mcm9tX3BpeGVscyIpXQotLSAgICBwdWJsaWMgVW5pdHMuZnJvbV9waXhlbHMgKGludCBw eCk7Ci0tICAgIFtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl91bml0c19mcm9tX3B0IildCi0tICAg IHB1YmxpYyBVbml0cy5mcm9tX3B0IChmbG9hdCBwdCk7Ci0tICAgIFtDQ29kZSAoY25hbWUgPSAi Y2x1dHRlcl91bml0c19mcm9tX3N0cmluZyIpXQotLSAgICBwdWJsaWMgVW5pdHMuZnJvbV9zdHJp bmcgKHN0cmluZyBzdHIpOwotLSAgfQotLX0KLWRpZmYgLS1naXQgdmFwaS9tdXR0ZXItY2x1dHRl ci00LWN1c3RvbS52YWxhIHZhcGkvbXV0dGVyLWNsdXR0ZXItNi1jdXN0b20udmFsYQotc2ltaWxh cml0eSBpbmRleCA5MiUKLXJlbmFtZSBmcm9tIHZhcGkvbXV0dGVyLWNsdXR0ZXItNC1jdXN0b20u dmFsYQotcmVuYW1lIHRvIHZhcGkvbXV0dGVyLWNsdXR0ZXItNi1jdXN0b20udmFsYQotaW5kZXgg YjhkODM4ZDAuLjg5MjI0YmU2IDEwMDY0NAotLS0tIHZhcGkvbXV0dGVyLWNsdXR0ZXItNC1jdXN0 b20udmFsYQotKysrIHZhcGkvbXV0dGVyLWNsdXR0ZXItNi1jdXN0b20udmFsYQotQEAgLTEsOSAr MSw0IEBACi0gbmFtZXNwYWNlIENsdXR0ZXIgewotLSAgW0NDb2RlICh0eXBlX2lkID0gIkNMVVRU RVJfVFlQRV9BQ1RPUl9CT1giLCBjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5o IildCi0tICBwdWJsaWMgc3RydWN0IEFjdG9yQm94IHsKLS0gICAgW0NDb2RlIChjbmFtZSA9ICJj bHV0dGVyX2FjdG9yX2JveF9mcm9tX3ZlcnRpY2VzIildCi0tICAgIHB1YmxpYyBBY3RvckJveC5m cm9tX3ZlcnRpY2VzIChDbHV0dGVyLlZlcnRleFtdIHZlcnRzKTsKLS0gIH0KLSAKLSAgIHB1Ymxp YyBzdHJ1Y3QgTWF0cml4IDogQ29nbC5NYXRyaXggewotICAgfQotQEAgLTE4LDggKzEzLDYgQEAg bmFtZXNwYWNlIENsdXR0ZXIgewotICAgICBbTm9XcmFwcGVyXQotICAgICBwdWJsaWMgdmlydHVh bCB2b2lkIGVuc3VyZV9jb250ZXh0IChDbHV0dGVyLlN0YWdlIHN0YWdlKTsKLSAgICAgW05vV3Jh cHBlcl0KLS0gICAgcHVibGljIHZpcnR1YWwgdW5vd25lZCBDbHV0dGVyLkRldmljZU1hbmFnZXIg Z2V0X2RldmljZV9tYW5hZ2VyICgpOwotLSAgICBbTm9XcmFwcGVyXQotICAgICBwdWJsaWMgdmly dHVhbCBDbHV0dGVyLkZlYXR1cmVGbGFncyBnZXRfZmVhdHVyZXMgKCk7Ci0gICAgIFtOb1dyYXBw ZXJdCi0gICAgIHB1YmxpYyB2aXJ0dWFsIHZvaWQgaW5pdF9ldmVudHMgKCk7Ci1AQCAtODMsMTAg Kzc2LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAotICAgW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0gICBwdWJsaWMgaW50ZXJmYWNlIFN0YWdlV2lu ZG93IDogR0xpYi5PYmplY3QgewotLSAgICBbTm9XcmFwcGVyXQotLSAgICBwdWJsaWMgYWJzdHJh Y3Qgdm9pZCBhZGRfcmVkcmF3X2NsaXAgKENsdXR0ZXIuR2VvbWV0cnkgc3RhZ2VfcmVjdGFuZ2xl KTsKLS0gICAgW05vV3JhcHBlcl0KLS0gICAgcHVibGljIGFic3RyYWN0IHZvaWQgZ2V0X2dlb21l dHJ5IChDbHV0dGVyLkdlb21ldHJ5IGdlb21ldHJ5KTsKLSAgICAgW05vV3JhcHBlcl0KLSAgICAg cHVibGljIGFic3RyYWN0IGludCBnZXRfcGVuZGluZ19zd2FwcyAoKTsKLSAgICAgW05vV3JhcHBl cl0KLWRpZmYgLS1naXQgdmFwaS9tdXR0ZXItY2x1dHRlci01LmRlcHMgdmFwaS9tdXR0ZXItY2x1 dHRlci02LmRlcHMKLXNpbWlsYXJpdHkgaW5kZXggNjMlCi1yZW5hbWUgZnJvbSB2YXBpL211dHRl ci1jbHV0dGVyLTUuZGVwcwotcmVuYW1lIHRvIHZhcGkvbXV0dGVyLWNsdXR0ZXItNi5kZXBzCi1p bmRleCAzZjVhOTJhNi4uN2E3MGQ2ZGYgMTAwNjQ0Ci0tLS0gdmFwaS9tdXR0ZXItY2x1dHRlci01 LmRlcHMKLSsrKyB2YXBpL211dHRlci1jbHV0dGVyLTYuZGVwcwotQEAgLTEsNCArMSw0IEBACi0g YXRrCi0gY2Fpcm8KLSBqc29uLWdsaWItMS4wCi0tbXV0dGVyLWNvZ2wtNQotK211dHRlci1jb2ds LTYKLWRpZmYgLS1naXQgdmFwaS9tdXR0ZXItY2x1dHRlci01LnZhcGkgdmFwaS9tdXR0ZXItY2x1 dHRlci02LnZhcGkKLXNpbWlsYXJpdHkgaW5kZXggOTMlCi1yZW5hbWUgZnJvbSB2YXBpL211dHRl ci1jbHV0dGVyLTUudmFwaQotcmVuYW1lIHRvIHZhcGkvbXV0dGVyLWNsdXR0ZXItNi52YXBpCi1p bmRleCAyNGY3ZjZiMS4uMDEzMGE5M2MgMTAwNjQ0Ci0tLS0gdmFwaS9tdXR0ZXItY2x1dHRlci01 LnZhcGkKLSsrKyB2YXBpL211dHRlci1jbHV0dGVyLTYudmFwaQotQEAgLTEsNiArMSw2IEBACi0t LyogbXV0dGVyLWNsdXR0ZXItNS52YXBpIGdlbmVyYXRlZCBieSB2YXBpZ2VuLCBkbyBub3QgbW9k aWZ5LiAqLwotKy8qIG11dHRlci1jbHV0dGVyLTYudmFwaSBnZW5lcmF0ZWQgYnkgdmFwaWdlbiwg ZG8gbm90IG1vZGlmeS4gKi8KLSAKLS1bQ0NvZGUgKGNwcmVmaXggPSAiQ2x1dHRlciIsIGdpcl9u YW1lc3BhY2UgPSAiQ2x1dHRlciIsIGdpcl92ZXJzaW9uID0gIjUiLCBsb3dlcl9jYXNlX2NwcmVm aXggPSAiY2x1dHRlcl8iKV0KLStbQ0NvZGUgKGNwcmVmaXggPSAiQ2x1dHRlciIsIGdpcl9uYW1l c3BhY2UgPSAiQ2x1dHRlciIsIGdpcl92ZXJzaW9uID0gIjYiLCBsb3dlcl9jYXNlX2NwcmVmaXgg PSAiY2x1dHRlcl8iKV0KLSBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCW5hbWVzcGFjZSBLZXkgewot IAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY25hbWUg PSAiQ0xVVFRFUl9LRVlfMCIpXQotQEAgLTQ2NjEsMjIgKzQ2NjEsMTQgQEAgbmFtZXNwYWNlIENs dXR0ZXIgewotIAkJcHVibGljIHZvaWQgYWxsb2NhdGVfcHJlZmVycmVkX3NpemUgKENsdXR0ZXIu QWxsb2NhdGlvbkZsYWdzIGZsYWdzKTsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgdW5v d25lZCBDbHV0dGVyLkFuaW1hdGlvbiBhbmltYXRlICh1bG9uZyBtb2RlLCB1aW50IGR1cmF0aW9u LCAuLi4pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTAiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQW5p bWF0aW9uIGFuaW1hdGVfd2l0aF9hbHBoYSAoQ2x1dHRlci5BbHBoYSBhbHBoYSwgLi4uKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwg c2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFuaW1hdGlvbiBhbmlt YXRlX3dpdGhfYWxwaGF2IChDbHV0dGVyLkFscGhhIGFscGhhLCBbQ0NvZGUgKGFycmF5X2xlbmd0 aF9jbmFtZSA9ICJuX3Byb3BlcnRpZXMiLCBhcnJheV9sZW5ndGhfcG9zID0gMS41KV0gc3RyaW5n W10gcHJvcGVydGllcywgW0NDb2RlIChhcnJheV9sZW5ndGhfY25hbWUgPSAibl9wcm9wZXJ0aWVz IiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDEuNSldIEdMaWIuVmFsdWVbXSB2YWx1ZXMpOwotIAkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5j ZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQW5pbWF0aW9uIGFuaW1hdGVf d2l0aF90aW1lbGluZSAodWxvbmcgbW9kZSwgQ2x1dHRlci5UaW1lbGluZSB0aW1lbGluZSwgLi4u KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFuaW1hdGlv biBhbmltYXRlX3dpdGhfdGltZWxpbmV2ICh1bG9uZyBtb2RlLCBDbHV0dGVyLlRpbWVsaW5lIHRp bWVsaW5lLCBbQ0NvZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9ICJuX3Byb3BlcnRpZXMiLCBhcnJh eV9sZW5ndGhfcG9zID0gMi41KV0gc3RyaW5nW10gcHJvcGVydGllcywgW0NDb2RlIChhcnJheV9s ZW5ndGhfY25hbWUgPSAibl9wcm9wZXJ0aWVzIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDIuNSldIEdM aWIuVmFsdWVbXSB2YWx1ZXMpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB1bm93bmVk IENsdXR0ZXIuQW5pbWF0aW9uIGFuaW1hdGV2ICh1bG9uZyBtb2RlLCB1aW50IGR1cmF0aW9uLCBb Q0NvZGUgKGFycmF5X2xlbmd0aF9jbmFtZSA9ICJuX3Byb3BlcnRpZXMiLCBhcnJheV9sZW5ndGhf cG9zID0gMi41KV0gc3RyaW5nW10gcHJvcGVydGllcywgW0NDb2RlIChhcnJheV9sZW5ndGhfY25h bWUgPSAibl9wcm9wZXJ0aWVzIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDIuNSldIEdMaWIuVmFsdWVb XSB2YWx1ZXMpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIENsdXR0 ZXIuVmVydGV4IGFwcGx5X3JlbGF0aXZlX3RyYW5zZm9ybV90b19wb2ludCAoQ2x1dHRlci5BY3Rv cj8gYW5jZXN0b3IsIENsdXR0ZXIuVmVydGV4IHBvaW50KTsKLSsJCXB1YmxpYyB2b2lkIGFwcGx5 X3JlbGF0aXZlX3RyYW5zZm9ybV90b19wb2ludCAoQ2x1dHRlci5BY3Rvcj8gYW5jZXN0b3IsIEdy YXBoZW5lLlBvaW50M0QgcG9pbnQsIG91dCB1bm93bmVkIEdyYXBoZW5lLlBvaW50M0QgdmVydGV4 KTsKLSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIGFwcGx5X3RyYW5zZm9y bSAocmVmIENsdXR0ZXIuTWF0cml4IG1hdHJpeCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40 IildCi0tCQlwdWJsaWMgQ2x1dHRlci5WZXJ0ZXggYXBwbHlfdHJhbnNmb3JtX3RvX3BvaW50IChD bHV0dGVyLlZlcnRleCBwb2ludCk7Ci0rCQlwdWJsaWMgdm9pZCBhcHBseV90cmFuc2Zvcm1fdG9f cG9pbnQgKEdyYXBoZW5lLlBvaW50M0QgcG9pbnQsIG91dCB1bm93bmVkIEdyYXBoZW5lLlBvaW50 M0QgdmVydGV4KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjI0IildCi0gCQlwdWJsaWMgdm9p ZCBiaW5kX21vZGVsIChHTGliLkxpc3RNb2RlbD8gbW9kZWwsIG93bmVkIENsdXR0ZXIuQWN0b3JD cmVhdGVDaGlsZEZ1bmMgY3JlYXRlX2NoaWxkX2Z1bmMpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuNCIpXQotQEAgLTQ2ODgsMjAgKzQ2ODAsMTkgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIGJvb2wgY29udGFpbnMgKENsdXR0 ZXIuQWN0b3IgZGVzY2VuZGFudCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlw dWJsaWMgdm9pZCBjb250aW51ZV9wYWludCAoKTsKLSsJCXB1YmxpYyB2b2lkIGNvbnRpbnVlX3Bh aW50IChDbHV0dGVyLlBhaW50Q29udGV4dCBwYWludF9jb250ZXh0KTsKLSsJCXB1YmxpYyB2b2lk IGNvbnRpbnVlX3BpY2sgKENsdXR0ZXIuUGlja0NvbnRleHQgcGlja19jb250ZXh0KTsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBQYW5nby5Db250ZXh0IGNyZWF0ZV9w YW5nb19jb250ZXh0ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGlj IFBhbmdvLkxheW91dCBjcmVhdGVfcGFuZ29fbGF5b3V0IChzdHJpbmc/IHRleHQpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB2b2lkIGRlc3Ryb3lfYWxsX2NoaWxk cmVuICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIGRldGFjaF9hbmltYXRp b24gKCk7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfYWN0b3JfZXZlbnQiKV0KLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLSAJCXB1YmxpYyBib29sIGVtaXRfZXZlbnQgKENsdXR0 ZXIuRXZlbnQgZXZlbnQsIGJvb2wgY2FwdHVyZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40 IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYWJzX2FsbG9jYXRpb25fdmVydGljZXMgKFtDQ29kZSAo YXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBDbHV0dGVyLlZlcnRleCB2ZXJ0c1s0XSk7Ci0rCQlwdWJs aWMgdm9pZCBnZXRfYWJzX2FsbG9jYXRpb25fdmVydGljZXMgKFtDQ29kZSAoYXJyYXlfbGVuZ3Ro ID0gZmFsc2UpXSBHcmFwaGVuZS5Qb2ludDNEIHZlcnRzWzRdKTsKLSAJCXB1YmxpYyB2aXJ0dWFs IHVub3duZWQgQXRrLk9iamVjdCBnZXRfYWNjZXNzaWJsZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0aW9uIGdldF9hY3Rpb24g KHN0cmluZyBuYW1lKTsKLUBAIC00NzA5LDE2ICs0NzAwLDEwIEBAIG5hbWVzcGFjZSBDbHV0dGVy IHsKLSAJCXB1YmxpYyBHTGliLkxpc3Q8d2VhayBDbHV0dGVyLkFjdGlvbj4gZ2V0X2FjdGlvbnMg KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0gCQlwdWJsaWMgQ2x1dHRlci5BY3Rv ckJveCBnZXRfYWxsb2NhdGlvbl9ib3ggKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGlj IENsdXR0ZXIuR2VvbWV0cnkgZ2V0X2FsbG9jYXRpb25fZ2VvbWV0cnkgKCk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYWxsb2NhdGlvbl92ZXJ0aWNl cyAoQ2x1dHRlci5BY3Rvcj8gYW5jZXN0b3IsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2Up XSBDbHV0dGVyLlZlcnRleCB2ZXJ0c1s0XSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGlj IHZvaWQgZ2V0X2FuY2hvcl9wb2ludCAob3V0IGZsb2F0IGFuY2hvcl94LCBvdXQgZmxvYXQgYW5j aG9yX3kpOwotKwkJcHVibGljIHZvaWQgZ2V0X2FsbG9jYXRpb25fdmVydGljZXMgKENsdXR0ZXIu QWN0b3I/IGFuY2VzdG9yLCBbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gR3JhcGhlbmUu UG9pbnQzRCB2ZXJ0c1s0XSk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIENsdXR0ZXIu R3Jhdml0eSBnZXRfYW5jaG9yX3BvaW50X2dyYXZpdHkgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQot LQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BbmltYXRpb24gZ2V0X2FuaW1hdGlvbiAoKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBnZXRf YmFja2dyb3VuZF9jb2xvciAoKTsKLSAJCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9nZXRfYWN0 b3JfYnlfZ2lkIildCi1AQCAtNDc2OCw4ICs0NzUzLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewot IAkJcHVibGljIGJvb2wgZ2V0X2ZpeGVkX3Bvc2l0aW9uX3NldCAoKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBDbHV0dGVyLkFjdG9yRmxhZ3MgZ2V0X2ZsYWdzICgp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu OCIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIHVpbnQzMiBnZXRfZ2lkICgpOwotIAkJW0ND b2RlIChjbmFtZSA9ICJjbHV0dGVyX2FjdG9yX2hhc19wb2ludGVyIildCi0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgYm9vbCBnZXRfaGFzX3BvaW50ZXIgKCk7Ci1AQCAt NDg0OCw4ICs0ODMxLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIENsdXR0ZXIu VGV4dERpcmVjdGlvbiBnZXRfdGV4dF9kaXJlY3Rpb24gKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMiIpXQotIAkJcHVibGljIENsdXR0ZXIuTWF0cml4IGdldF90cmFuc2Zvcm0gKCk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIs IHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIENsdXR0ZXIuTWF0cml4IGdldF90cmFuc2Zvcm1h dGlvbl9tYXRyaXggKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMg dW5vd25lZCBDbHV0dGVyLlBhaW50Vm9sdW1lIGdldF90cmFuc2Zvcm1lZF9wYWludF92b2x1bWUg KENsdXR0ZXIuQWN0b3IgcmVsYXRpdmVfdG9fYW5jZXN0b3IpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjAuOCIpXQotQEAgLTQ4OTIsNyArNDg3Myw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJ CXB1YmxpYyBib29sIGhhc19tYXBwZWRfY2xvbmVzICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuOCIpXQotIAkJcHVibGljIHZpcnR1YWwgYm9vbCBoYXNfb3ZlcmxhcHMgKCk7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNl ID0gIjAuMiIpXQotKwkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgaGlkZV9h bGwgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgaW5z ZXJ0X2NoaWxkX2Fib3ZlIChDbHV0dGVyLkFjdG9yIGNoaWxkLCBDbHV0dGVyLkFjdG9yPyBzaWJs aW5nKTsKLUBAIC00OTEyLDEwICs0ODkzLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVi bGljIGJvb2wgaXNfc2NhbGVkICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMjQiKV0KLSAJ CXB1YmxpYyBib29sIGlzX3Zpc2libGUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgbG93ZXIgKENs dXR0ZXIuQWN0b3I/IGFib3ZlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBsb3dlcl9ib3R0b20gKCk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIG1h cCAoKTsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEyIiwgc2luY2UgPSAiMC42IildCi1AQCAtNDkyOCwxNyArNDkwNSwxMiBAQCBuYW1lc3Bh Y2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgYm9vbCBuZWVkc19leHBhbmQgKENsdXR0ZXIuT3JpZW50 YXRpb24gb3JpZW50YXRpb24pOwotIAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIHZv aWQgcGFpbnRfbm9kZSAoQ2x1dHRlci5QYWludE5vZGUgcm9vdCk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMiIp XQotKwkJcHVibGljIHZvaWQgcGlja19ib3ggKENsdXR0ZXIuUGlja0NvbnRleHQgcGlja19jb250 ZXh0LCBDbHV0dGVyLkFjdG9yQm94IGJveCk7Ci0gCQlwdWJsaWMgdm9pZCBwb3BfaW50ZXJuYWwg KCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMCIsIHNpbmNlID0gIjEuMiIpXQotIAkJcHVibGljIHZvaWQgcHVzaF9pbnRlcm5hbCAoKTsK LSAJCXB1YmxpYyB2b2lkIHF1ZXVlX3JlZHJhdyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEwIildCi0gCQlwdWJsaWMgdm9pZCBxdWV1ZV9yZWRyYXdfd2l0aF9jbGlwIChDYWlyby5SZWN0 YW5nbGVJbnQ/IGNsaXApOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHJhaXNlIChDbHV0dGVyLkFjdG9y PyBiZWxvdyk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgcmFpc2VfdG9wICgpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIHZvaWQgcmVtb3ZlX2FjdGlvbiAoQ2x1dHRlci5B Y3Rpb24gYWN0aW9uKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLUBAIC00OTYwLDgg KzQ5MzIsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdm9pZCByZW1vdmVfZWZm ZWN0X2J5X25hbWUgKHN0cmluZyBuYW1lKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIild Ci0gCQlwdWJsaWMgdm9pZCByZW1vdmVfdHJhbnNpdGlvbiAoc3RyaW5nIG5hbWUpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5j ZSA9ICIwLjIiKV0KLS0JCXB1YmxpYyB2b2lkIHJlcGFyZW50IChDbHV0dGVyLkFjdG9yIG5ld19w YXJlbnQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB2b2lkIHJl cGxhY2VfY2hpbGQgKENsdXR0ZXIuQWN0b3Igb2xkX2NoaWxkLCBDbHV0dGVyLkFjdG9yIG5ld19j aGlsZCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotQEAgLTUwNDYsOCArNTAxNiw2 IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIHNldF9zY2FsZSAoZG91Ymxl IHNjYWxlX3gsIGRvdWJsZSBzY2FsZV95KTsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMg dm9pZCBzZXRfc2NhbGVfZnVsbCAoZG91YmxlIHNjYWxlX3gsIGRvdWJsZSBzY2FsZV95LCBmbG9h dCBjZW50ZXJfeCwgZmxvYXQgY2VudGVyX3kpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1Ymxp YyB2b2lkIHNldF9zY2FsZV93aXRoX2dyYXZpdHkgKGRvdWJsZSBzY2FsZV94LCBkb3VibGUgc2Nh bGVfeSwgQ2x1dHRlci5HcmF2aXR5IGdyYXZpdHkpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTIiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9zY2FsZV96IChkb3VibGUgc2NhbGVfeik7Ci0gCQlw dWJsaWMgdm9pZCBzZXRfc2l6ZSAoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7Ci1AQCAtNTEx MCwxMSArNTA3OCw4IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEyIildCi0gCQlwdWJsaWMgYm9vbCBjaGlsZF90cmFuc2Zvcm1fc2V0IHsgZ2V0OyB9Ci0g CQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgQ2x1dHRlci5HZW9tZXRyeSBjbGlw IHsgb3duZWQgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlJlY3QgY2xpcF9yZWN0IHsgb3du ZWQgZ2V0OyBzZXQ7IH0KLSsJCXB1YmxpYyBHcmFwaGVuZS5SZWN0IGNsaXBfcmVjdCB7IG93bmVk IGdldDsgc2V0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgYm9v bCBjbGlwX3RvX2FsbG9jYXRpb24geyBnZXQ7IHNldDsgfQotIAkJW05vQWNjZXNzb3JNZXRob2Rd Ci1AQCAtNTE5OSwxMiArNTE2NCwxMiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMg dWludCBvcGFjaXR5IHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlBvaW50IHBpdm90X3Bv aW50IHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2ludCBwaXZvdF9w b2ludCB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQot IAkJcHVibGljIGZsb2F0IHBpdm90X3BvaW50X3ogeyBnZXQ7IHNldDsgfQotIAkJW05vQWNjZXNz b3JNZXRob2RdCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGljIENsdXR0 ZXIuUG9pbnQgcG9zaXRpb24geyBvd25lZCBnZXQ7IHNldDsgfQotKwkJcHVibGljIEdyYXBoZW5l LlBvaW50IHBvc2l0aW9uIHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIwLjYiKV0KLSAJCXB1YmxpYyBib29sIHJlYWN0aXZlIHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0Fj Y2Vzc29yTWV0aG9kXQotQEAgLTUyMjUsMTMgKzUxOTAsMTMgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHVibGljIGRvdWJsZSByb3RhdGlvbl9hbmdsZV96IHsgZ2V0OyBzZXQ7IH0KLSAJCVtO b0FjY2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlZl cnRleCByb3RhdGlvbl9jZW50ZXJfeCB7IG93bmVkIGdldDsgc2V0OyB9Ci0rCQlwdWJsaWMgR3Jh cGhlbmUuUG9pbnQzRCByb3RhdGlvbl9jZW50ZXJfeCB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlb Tm9BY2Nlc3Nvck1ldGhvZF0KLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgQ2x1dHRlci5W ZXJ0ZXggcm90YXRpb25fY2VudGVyX3kgeyBvd25lZCBnZXQ7IHNldDsgfQotKwkJcHVibGljIEdy YXBoZW5lLlBvaW50M0Qgcm90YXRpb25fY2VudGVyX3kgeyBvd25lZCBnZXQ7IHNldDsgfQotIAkJ W05vQWNjZXNzb3JNZXRob2RdCi0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIENsdXR0ZXIu VmVydGV4IHJvdGF0aW9uX2NlbnRlcl96IHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSsJCXB1YmxpYyBH cmFwaGVuZS5Qb2ludDNEIHJvdGF0aW9uX2NlbnRlcl96IHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSAJ CVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBDbHV0dGVy LkdyYXZpdHkgcm90YXRpb25fY2VudGVyX3pfZ3Jhdml0eSB7IGdldDsgc2V0OyB9Ci1AQCAtNTI1 Nyw3ICs1MjIyLDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGJvb2wgc2hvd19v bl9zZXRfcGFyZW50IHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlNpemUgc2l6ZSB7IG93 bmVkIGdldDsgc2V0OyB9Ci0rCQlwdWJsaWMgR3JhcGhlbmUuU2l6ZSBzaXplIHsgb3duZWQgZ2V0 OyBzZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBDbHV0dGVy LlRleHREaXJlY3Rpb24gdGV4dF9kaXJlY3Rpb24geyBnZXQ7IHNldDsgfQotIAkJW05vQWNjZXNz b3JNZXRob2RdCi1AQCAtNTMxOSwxMSArNTI4NCwxMiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0g CQlwdWJsaWMgdmlydHVhbCBzaWduYWwgYm9vbCBtb3Rpb25fZXZlbnQgKENsdXR0ZXIuTW90aW9u RXZlbnQgZXZlbnQpOwotIAkJW0hhc0VtaXR0ZXJdCi0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIpXQotLQkJcHVi bGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgcGFpbnQgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCBzaWdu YWwgdm9pZCBwYWludCAoQ2x1dHRlci5QYWludENvbnRleHQgcGFpbnRfY29udGV4dCk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMC4yIildCi0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBw YXJlbnRfc2V0IChDbHV0dGVyLkFjdG9yPyBvbGRfcGFyZW50KTsKLSsJCVtIYXNFbWl0dGVyXQot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZv aWQgcGljayAoQ2x1dHRlci5Db2xvciBjb2xvcik7Ci0rCQlwdWJsaWMgdmlydHVhbCBzaWduYWwg dm9pZCBwaWNrIChDbHV0dGVyLlBpY2tDb250ZXh0IHBpY2tfY29udGV4dCk7Ci0gCQlbSGFzRW1p dHRlcl0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHNp Z25hbCB2b2lkIHF1ZXVlX3JlbGF5b3V0ICgpOwotQEAgLTUzNjEsNiArNTMyNywxMSBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgYm9vbCBlbmFibGVkIHsgZ2V0OyBzZXQ7IH0KLSAJ CXB1YmxpYyBzdHJpbmcgbmFtZSB7IGdldDsgc2V0OyB9Ci0gCX0KLSsJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2FjdG9y X25vZGVfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNzIEFjdG9yTm9kZSA6IENsdXR0ZXIu UGFpbnROb2RlIHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0 eXBlID0gIkNsdXR0ZXJQYWludE5vZGUqIildCi0rCQlwdWJsaWMgQWN0b3JOb2RlIChDbHV0dGVy LkFjdG9yIGFjdG9yKTsKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfYWxpZ25fY29uc3RyYWludF9nZXRfdHlw ZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCXB1YmxpYyBjbGFzcyBBbGln bkNvbnN0cmFpbnQgOiBDbHV0dGVyLkNvbnN0cmFpbnQgewotQEAgLTUzODgsMTkgKzUzNTksMTIg QEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJ cHVibGljIHVsb25nIGdldF9tb2RlICgpOwotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5UaW1l bGluZSBnZXRfdGltZWxpbmUgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCQlw dWJsaWMgc3RhdGljIHVsb25nIHJlZ2lzdGVyX2Nsb3N1cmUgKEdMaWIuQ2xvc3VyZSBjbG9zdXJl KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdWxvbmcg cmVnaXN0ZXJfZnVuYyAoQ2x1dHRlci5BbHBoYUZ1bmMgZnVuYyk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMC44IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfY2xvc3VyZSAoR0xpYi5DbG9zdXJlIGNs b3N1cmUpOwotIAkJcHVibGljIHZvaWQgc2V0X2Z1bmMgKG93bmVkIENsdXR0ZXIuQWxwaGFGdW5j IGZ1bmMpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0 X21vZGUgKHVsb25nIG1vZGUpOwotIAkJcHVibGljIHZvaWQgc2V0X3RpbWVsaW5lIChDbHV0dGVy LlRpbWVsaW5lIHRpbWVsaW5lKTsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9 IGZhbHNlKV0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBBbHBoYS53 aXRoX2Z1bmMgKENsdXR0ZXIuVGltZWxpbmUgdGltZWxpbmUsIG93bmVkIENsdXR0ZXIuQWxwaGFG dW5jIGZ1bmMpOwotIAkJcHVibGljIGRvdWJsZSBhbHBoYSB7IGdldDsgfQotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHVsb25nIG1vZGUgeyBnZXQ7IHNldCBjb25zdHJ1 Y3Q7IH0KLUBAIC01NDExLDM1ICs1Mzc1LDI2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJcHVi bGljIGNsYXNzIEFuaW1hdGlvbiA6IEdMaWIuT2JqZWN0LCBDbHV0dGVyLlNjcmlwdGFibGUgewot IAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHVibGljIEFu aW1hdGlvbiAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQW5pbWF0aW9uIGJpbmQgKHN0 cmluZyBwcm9wZXJ0eV9uYW1lLCBHTGliLlZhbHVlIGZpbmFsKTsKLS0JCXB1YmxpYyB1bm93bmVk IENsdXR0ZXIuQW5pbWF0aW9uIGJpbmRfaW50ZXJ2YWwgKHN0cmluZyBwcm9wZXJ0eV9uYW1lLCBv d25lZCBDbHV0dGVyLkludGVydmFsIGludGVydmFsKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4wIildCi0tCQlw dWJsaWMgdW5vd25lZCBDbHV0dGVyLkFscGhhIGdldF9hbHBoYSAoKTsKLSAJCXB1YmxpYyB1aW50 IGdldF9kdXJhdGlvbiAoKTsKLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuSW50ZXJ2YWwgZ2V0 X2ludGVydmFsIChzdHJpbmcgcHJvcGVydHlfbmFtZSk7Ci0gCQlwdWJsaWMgYm9vbCBnZXRfbG9v cCAoKTsKLSAJCXB1YmxpYyB1bG9uZyBnZXRfbW9kZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIEdM aWIuT2JqZWN0IGdldF9vYmplY3QgKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlRpbWVs aW5lIGdldF90aW1lbGluZSAoKTsKLSAJCXB1YmxpYyBib29sIGhhc19wcm9wZXJ0eSAoc3RyaW5n IHByb3BlcnR5X25hbWUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9h bHBoYSAoQ2x1dHRlci5BbHBoYSBhbHBoYSk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfZHVyYXRpb24g KHVpbnQgbXNlY3MpOwotIAkJcHVibGljIHZvaWQgc2V0X2xvb3AgKGJvb2wgbG9vcCk7Ci0gCQlw dWJsaWMgdm9pZCBzZXRfbW9kZSAodWxvbmcgbW9kZSk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfb2Jq ZWN0IChHTGliLk9iamVjdCBvYmplY3QpOwotIAkJcHVibGljIHZvaWQgc2V0X3RpbWVsaW5lIChD bHV0dGVyLlRpbWVsaW5lPyB0aW1lbGluZSk7Ci0tCQlwdWJsaWMgdm9pZCB1bmJpbmRfcHJvcGVy dHkgKHN0cmluZyBwcm9wZXJ0eV9uYW1lKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQW5p bWF0aW9uIHVwZGF0ZSAoc3RyaW5nIHByb3BlcnR5X25hbWUsIEdMaWIuVmFsdWUgZmluYWwpOwot LQkJcHVibGljIHZvaWQgdXBkYXRlX2ludGVydmFsIChzdHJpbmcgcHJvcGVydHlfbmFtZSwgQ2x1 dHRlci5JbnRlcnZhbCBpbnRlcnZhbCk7Ci0rCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSAJCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgQ2x1dHRlci5BbHBoYSBhbHBoYSB7IGdldDsgc2V0OyB9Ci0r CQlwdWJsaWMgQ2x1dHRlci5BbHBoYSBhbHBoYSB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlwdWJs aWMgdWludCBkdXJhdGlvbiB7IGdldDsgc2V0OyB9Ci0gCQlwdWJsaWMgYm9vbCBsb29wIHsgZ2V0 OyBzZXQ7IH0KLSAJCXB1YmxpYyB1bG9uZyBtb2RlIHsgZ2V0OyBzZXQ7IH0KLS0JCXB1YmxpYyBH TGliLk9iamVjdCBvYmplY3QgeyBnZXQ7IHNldDsgfQotKwkJW05vQWNjZXNzb3JNZXRob2RdCi0r CQlwdWJsaWMgR0xpYi5PYmplY3Qgb2JqZWN0IHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSAJCXB1Ymxp YyBDbHV0dGVyLlRpbWVsaW5lIHRpbWVsaW5lIHsgZ2V0OyBzZXQ7IH0KLS0JCVtIYXNFbWl0dGVy XQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgY29tcGxldGVkICgpOwotIAkJcHVibGlj IHZpcnR1YWwgc2lnbmFsIHZvaWQgc3RhcnRlZCAoKTsKLSAJfQotQEAgLTU0NjAsMjEgKzU0MTUs MTggQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHJvdGVjdGVkIEJhY2tlbmQgKCk7Ci0gCQlb Tm9XcmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBhZGRfb3B0aW9ucyAoR0xpYi5PcHRp b25Hcm91cCBncm91cCk7Ci0tCQlwdWJsaWMgdm9pZCBiZWxsX25vdGlmeSAoKTsKLSAJCVtOb1dy YXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCBib29sIGNyZWF0ZV9jb250ZXh0ICgpIHRocm93cyBH TGliLkVycm9yOwotIAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIHVub3duZWQgQ2x1 dHRlci5TdGFnZVdpbmRvdyBjcmVhdGVfc3RhZ2UgKENsdXR0ZXIuU3RhZ2Ugd3JhcHBlcikgdGhy b3dzIEdMaWIuRXJyb3I7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBl bnN1cmVfY29udGV4dCAoQ2x1dHRlci5TdGFnZSBzdGFnZSk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJ cHVibGljIHZpcnR1YWwgdW5vd25lZCBDbHV0dGVyLkRldmljZU1hbmFnZXIgZ2V0X2RldmljZV9t YW5hZ2VyICgpOwotKwkJcHVibGljIHVub3duZWQgQ2x1dHRlci5TZWF0IGdldF9kZWZhdWx0X3Nl YXQgKCk7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgQ2x1dHRlci5GZWF0dXJl RmxhZ3MgZ2V0X2ZlYXR1cmVzICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotIAkJ cHVibGljIHVub3duZWQgQ2Fpcm8uRm9udE9wdGlvbnMgZ2V0X2ZvbnRfb3B0aW9ucyAoKTsKLSAJ CXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuSW5wdXRNZXRob2QgZ2V0X2lucHV0X21ldGhvZCAoKTsK LS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuS2V5bWFwIGdldF9rZXltYXAgKCk7Ci0gCQlwdWJs aWMgZG91YmxlIGdldF9yZXNvbHV0aW9uICgpOwotIAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2 aXJ0dWFsIHZvaWQgaW5pdF9ldmVudHMgKCk7Ci1AQCAtNTQ5Niw5NSArNTQ0OCwxMSBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMg c2lnbmFsIHZvaWQgc2V0dGluZ3NfY2hhbmdlZCAoKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfYmVoYXZp b3VyX2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjYiLCBzaW5jZSA9ICIwLjIiKV0KLS0JcHVibGljIGFic3RyYWN0IGNs YXNzIEJlaGF2aW91ciA6IEdMaWIuT2JqZWN0LCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIEJlaGF2 aW91ciAoKTsKLS0JCXB1YmxpYyB2b2lkIGFjdG9yc19mb3JlYWNoIChDbHV0dGVyLkJlaGF2aW91 ckZvcmVhY2hGdW5jIGZ1bmMpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZv aWQgYWxwaGFfbm90aWZ5IChkb3VibGUgYWxwaGFfdmFsdWUpOwotLQkJcHVibGljIHZvaWQgYXBw bHkgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQkJcHVibGljIEdMaWIuU0xpc3Q8d2VhayBDbHV0 dGVyLkFjdG9yPiBnZXRfYWN0b3JzICgpOwotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BbHBo YSBnZXRfYWxwaGEgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9uX2FjdG9ycyAoKTsKLS0JCXB1Ymxp YyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X250aF9hY3RvciAoaW50IGluZGV4Xyk7Ci0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgYm9vbCBpc19hcHBsaWVkIChDbHV0 dGVyLkFjdG9yIGFjdG9yKTsKLS0JCXB1YmxpYyB2b2lkIHJlbW92ZSAoQ2x1dHRlci5BY3RvciBh Y3Rvcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgdm9pZCByZW1v dmVfYWxsICgpOwotLQkJcHVibGljIHZvaWQgc2V0X2FscGhhIChDbHV0dGVyLkFscGhhIGFscGhh KTsKLS0JCXB1YmxpYyBDbHV0dGVyLkFscGhhIGFscGhhIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIGFwcGxp ZWQgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQot LQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgcmVtb3ZlZCAoQ2x1dHRlci5BY3RvciBhY3Rv cik7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5o IiwgdHlwZV9pZCA9ICJjbHV0dGVyX2JlaGF2aW91cl9kZXB0aF9nZXRfdHlwZSAoKSIpXQotLQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS42Iiwgc2lu Y2UgPSAiMC4yIildCi0tCXB1YmxpYyBjbGFzcyBCZWhhdmlvdXJEZXB0aCA6IENsdXR0ZXIuQmVo YXZpb3VyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1 bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckJlaGF2aW91cioiKV0KLS0JCVtWZXJzaW9u IChzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyBCZWhhdmlvdXJEZXB0aCAoQ2x1dHRlci5BbHBo YT8gYWxwaGEsIGludCBkZXB0aF9zdGFydCwgaW50IGRlcHRoX2VuZCk7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYm91bmRzIChvdXQgaW50IGRlcHRo X3N0YXJ0LCBvdXQgaW50IGRlcHRoX2VuZCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42Iild Ci0tCQlwdWJsaWMgdm9pZCBzZXRfYm91bmRzIChpbnQgZGVwdGhfc3RhcnQsIGludCBkZXB0aF9l bmQpOwotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40Iild Ci0tCQlwdWJsaWMgaW50IGRlcHRoX2VuZCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1l dGhvZF0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyBpbnQgZGVwdGhf c3RhcnQgeyBnZXQ7IHNldDsgfQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj bHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9iZWhhdmlvdXJfb3BhY2l0eV9n ZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS42Iiwgc2luY2UgPSAiMC4yIildCi0tCXB1YmxpYyBjbGFzcyBCZWhhdmlvdXJP cGFjaXR5IDogQ2x1dHRlci5CZWhhdmlvdXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0tCQlbQ0Nv ZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyQmVoYXZp b3VyKiIpXQotLQkJcHVibGljIEJlaGF2aW91ck9wYWNpdHkgKENsdXR0ZXIuQWxwaGE/IGFscGhh LCB1aW50OCBvcGFjaXR5X3N0YXJ0LCB1aW50OCBvcGFjaXR5X2VuZCk7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYm91bmRzIChvdXQgdWludDggb3Bh Y2l0eV9zdGFydCwgb3V0IHVpbnQ4IG9wYWNpdHlfZW5kKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIwLjYiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9ib3VuZHMgKHVpbnQ4IG9wYWNpdHlfc3RhcnQs IHVpbnQ4IG9wYWNpdHlfZW5kKTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIHVp bnQgb3BhY2l0eV9lbmQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlw dWJsaWMgdWludCBvcGFjaXR5X3N0YXJ0IHsgZ2V0OyBzZXQ7IH0KLS0JfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJf YmVoYXZpb3VyX3NjYWxlX2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjYiLCBzaW5jZSA9ICIwLjIiKV0KLS0JcHVibGlj IGNsYXNzIEJlaGF2aW91clNjYWxlIDogQ2x1dHRlci5CZWhhdmlvdXIsIENsdXR0ZXIuU2NyaXB0 YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9 ICJDbHV0dGVyQmVoYXZpb3VyKiIpXQotLQkJcHVibGljIEJlaGF2aW91clNjYWxlIChDbHV0dGVy LkFscGhhPyBhbHBoYSwgZG91YmxlIHhfc2NhbGVfc3RhcnQsIGRvdWJsZSB5X3NjYWxlX3N0YXJ0 LCBkb3VibGUgeF9zY2FsZV9lbmQsIGRvdWJsZSB5X3NjYWxlX2VuZCk7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYm91bmRzIChvdXQgZG91YmxlIHhf c2NhbGVfc3RhcnQsIG91dCBkb3VibGUgeV9zY2FsZV9zdGFydCwgb3V0IGRvdWJsZSB4X3NjYWxl X2VuZCwgb3V0IGRvdWJsZSB5X3NjYWxlX2VuZCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42 IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYm91bmRzIChkb3VibGUgeF9zY2FsZV9zdGFydCwgZG91 YmxlIHlfc2NhbGVfc3RhcnQsIGRvdWJsZSB4X3NjYWxlX2VuZCwgZG91YmxlIHlfc2NhbGVfZW5k KTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQot LQkJcHVibGljIGRvdWJsZSB4X3NjYWxlX2VuZCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nv ck1ldGhvZF0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBkb3VibGUg eF9zY2FsZV9zdGFydCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBkb3VibGUgeV9zY2FsZV9lbmQgeyBn ZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lvbiAoc2luY2UgPSAi MC42IildCi0tCQlwdWJsaWMgZG91YmxlIHlfc2NhbGVfc3RhcnQgeyBnZXQ7IHNldDsgfQotLQl9 Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVf aWQgPSAiY2x1dHRlcl9iaW5fbGF5b3V0X2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjIiKV0KLSAJcHVibGljIGNsYXNzIEJpbkxheW91dCA6IENsdXR0ZXIuTGF5b3V0TWFu YWdlciB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9 ICJDbHV0dGVyTGF5b3V0TWFuYWdlcioiKV0KLSAJCXB1YmxpYyBCaW5MYXlvdXQgKENsdXR0ZXIu QmluQWxpZ25tZW50IHhfYWxpZ24gPSBDbHV0dGVyLkJpbkFsaWdubWVudC5TVEFSVCwgQ2x1dHRl ci5CaW5BbGlnbm1lbnQgeV9hbGlnbiA9IENsdXR0ZXIuQmluQWxpZ25tZW50LlNUQVJUKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwg c2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdm9pZCBhZGQgKENsdXR0ZXIuQWN0b3IgY2hpbGQs IENsdXR0ZXIuQmluQWxpZ25tZW50IHhfYWxpZ24sIENsdXR0ZXIuQmluQWxpZ25tZW50IHlfYWxp Z24pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9hbGlnbm1lbnQgKENs dXR0ZXIuQWN0b3I/IGNoaWxkLCBvdXQgQ2x1dHRlci5CaW5BbGlnbm1lbnQgeF9hbGlnbiwgb3V0 IENsdXR0ZXIuQmluQWxpZ25tZW50IHlfYWxpZ24pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1 YmxpYyB2b2lkIHNldF9hbGlnbm1lbnQgKENsdXR0ZXIuQWN0b3I/IGNoaWxkLCBDbHV0dGVyLkJp bkFsaWdubWVudCB4X2FsaWduLCBDbHV0dGVyLkJpbkFsaWdubWVudCB5X2FsaWduKTsKLSAJCVtO b0FjY2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLSAJCXB1YmxpYyBDbHV0dGVyLkJp bkFsaWdubWVudCB4X2FsaWduIHsgZ2V0OyBzZXQ7IH0KLUBAIC01NzU4LDM3ICs1NjI2LDYgQEAg bmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGZsb2F0IHg7Ci0gCQlwdWJsaWMgZmxvYXQg eTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgi LCB0eXBlX2lkID0gImNsdXR0ZXJfY2Fpcm9fdGV4dHVyZV9nZXRfdHlwZSAoKSIpXQotLQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNl ID0gIjEuMCIpXQotLQlwdWJsaWMgY2xhc3MgQ2Fpcm9UZXh0dXJlIDogQ2x1dHRlci5UZXh0dXJl LCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIs IENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24g PSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyQWN0b3IqIildCi0tCQlwdWJsaWMgQ2Fpcm9UZXh0dXJl ICh1aW50IHdpZHRoLCB1aW50IGhlaWdodCk7Ci0tCQlwdWJsaWMgdm9pZCBjbGVhciAoKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjgiLCBz aW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBDYWlyby5Db250ZXh0IGNyZWF0ZSAoKTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjgiLCBzaW5j ZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBDYWlyby5Db250ZXh0IGNyZWF0ZV9yZWdpb24gKGludCB4 X29mZnNldCwgaW50IHlfb2Zmc2V0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotLQkJW1ZlcnNp b24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIGJvb2wgZ2V0X2F1dG9fcmVzaXplICgpOwot LQkJcHVibGljIHZvaWQgZ2V0X3N1cmZhY2Vfc2l6ZSAob3V0IHVpbnQgd2lkdGgsIG91dCB1aW50 IGhlaWdodCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgdm9pZCBp bnZhbGlkYXRlICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIHZv aWQgaW52YWxpZGF0ZV9yZWN0YW5nbGUgKENhaXJvLlJlY3RhbmdsZUludD8gcmVjdCk7Ci0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYXV0b19yZXNpemUg KGJvb2wgdmFsdWUpOwotLQkJcHVibGljIHZvaWQgc2V0X3N1cmZhY2Vfc2l6ZSAodWludCB3aWR0 aCwgdWludCBoZWlnaHQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGlj IGJvb2wgYXV0b19yZXNpemUgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0t CQlwdWJsaWMgdWludCBzdXJmYWNlX2hlaWdodCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nv ck1ldGhvZF0KLS0JCXB1YmxpYyB1aW50IHN1cmZhY2Vfd2lkdGggeyBnZXQ7IHNldDsgfQotLQkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIENhaXJv LlN1cmZhY2UgY3JlYXRlX3N1cmZhY2UgKHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0KTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCBib29sIGRy YXcgKENhaXJvLkNvbnRleHQgY3IpOwotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9jYW52YXNfZ2V0X3R5cGUg KCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJcHVibGljIGNsYXNzIENhbnZh cyA6IEdMaWIuT2JqZWN0LCBDbHV0dGVyLkNvbnRlbnQgewotQEAgLTU5MjAsNjIgKzU3NTcsMjQg QEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHZvaWQgc2V0X2ZhY3RvciAoZG91Ymxl IGZhY3Rvcik7Ci0gCQlwdWJsaWMgZG91YmxlIGZhY3RvciB7IGdldDsgc2V0OyB9Ci0gCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9 ICJjbHV0dGVyX2RldmljZV9tYW5hZ2VyX2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjIiKV0KLS0JcHVibGljIGFic3RyYWN0IGNsYXNzIERldmljZU1hbmFnZXIgOiBHTGli Lk9iamVjdCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0t CQlwcm90ZWN0ZWQgRGV2aWNlTWFuYWdlciAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMg dmlydHVhbCB2b2lkIGFkZF9kZXZpY2UgKENsdXR0ZXIuSW5wdXREZXZpY2UgZGV2aWNlKTsKLS0J CVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIGFwcGx5X2tiZF9hMTF5X3NldHRp bmdzIChDbHV0dGVyLktiZEExMXlTZXR0aW5ncyBzZXR0aW5ncyk7Ci0tCQlbTm9XcmFwcGVyXQot LQkJcHVibGljIHZpcnR1YWwgdm9pZCBjb21wcmVzc19tb3Rpb24gKENsdXR0ZXIuRXZlbnQgZXZl bnQsIENsdXR0ZXIuRXZlbnQgdG9fZGlzY2FyZCk7Ci0tCQlwdWJsaWMgdmlydHVhbCBDbHV0dGVy LlZpcnR1YWxJbnB1dERldmljZSBjcmVhdGVfdmlydHVhbF9kZXZpY2UgKENsdXR0ZXIuSW5wdXRE ZXZpY2VUeXBlIGRldmljZV90eXBlKTsKLS0JCXB1YmxpYyB2aXJ0dWFsIHVub3duZWQgQ2x1dHRl ci5JbnB1dERldmljZSBnZXRfY29yZV9kZXZpY2UgKENsdXR0ZXIuSW5wdXREZXZpY2VUeXBlIGRl dmljZV90eXBlKTsKLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLkRldmljZU1hbmFn ZXIgZ2V0X2RlZmF1bHQgKCk7Ci0tCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuSW5w dXREZXZpY2UgZ2V0X2RldmljZSAoaW50IGRldmljZV9pZCk7Ci0tCQlwdWJsaWMgdm9pZCBnZXRf a2JkX2ExMXlfc2V0dGluZ3MgKENsdXR0ZXIuS2JkQTExeVNldHRpbmdzIHNldHRpbmdzKTsKLS0J CXB1YmxpYyB2b2lkIGdldF9wb2ludGVyX2ExMXlfc2V0dGluZ3MgKENsdXR0ZXIuUG9pbnRlckEx MXlTZXR0aW5ncyBzZXR0aW5ncyk7Ci0tCQlwdWJsaWMgdmlydHVhbCBDbHV0dGVyLlZpcnR1YWxE ZXZpY2VUeXBlIGdldF9zdXBwb3J0ZWRfdmlydHVhbF9kZXZpY2VfdHlwZXMgKCk7Ci0tCQlwdWJs aWMgR0xpYi5TTGlzdDx3ZWFrIENsdXR0ZXIuSW5wdXREZXZpY2U+IGxpc3RfZGV2aWNlcyAoKTsK LS0JCXB1YmxpYyB1bm93bmVkIEdMaWIuU0xpc3Q8Q2x1dHRlci5JbnB1dERldmljZT4gcGVla19k ZXZpY2VzICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcmVtb3Zl X2RldmljZSAoQ2x1dHRlci5JbnB1dERldmljZSBkZXZpY2UpOwotLQkJW05vV3JhcHBlcl0KLS0J CXB1YmxpYyB2aXJ0dWFsIHZvaWQgc2VsZWN0X3N0YWdlX2V2ZW50cyAoQ2x1dHRlci5TdGFnZSBz dGFnZSk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfa2JkX2ExMXlfc2V0dGluZ3MgKENsdXR0ZXIuS2Jk QTExeVNldHRpbmdzIHNldHRpbmdzKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9wb2ludGVyX2ExMXlf ZHdlbGxfY2xpY2tfdHlwZSAoQ2x1dHRlci5Qb2ludGVyQTExeUR3ZWxsQ2xpY2tUeXBlIGNsaWNr X3R5cGUpOwotLQkJcHVibGljIHZvaWQgc2V0X3BvaW50ZXJfYTExeV9zZXR0aW5ncyAoQ2x1dHRl ci5Qb2ludGVyQTExeVNldHRpbmdzIHNldHRpbmdzKTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQot LQkJcHVibGljIENsdXR0ZXIuQmFja2VuZCBiYWNrZW5kIHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7 IH0KLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBkZXZpY2VfYWRkZWQgKENsdXR0ZXIuSW5wdXREZXZp Y2UgZGV2aWNlKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBkZXZpY2VfcmVtb3ZlZCAoQ2x1dHRl ci5JbnB1dERldmljZSBkZXZpY2UpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGtiZF9hMTF5X2Zs YWdzX2NoYW5nZWQgKHVpbnQgc2V0dGluZ3NfZmxhZ3MsIHVpbnQgY2hhbmdlZF9tYXNrKTsKLS0J CXB1YmxpYyBzaWduYWwgdm9pZCBrYmRfYTExeV9tb2RzX3N0YXRlX2NoYW5nZWQgKHVpbnQgbGF0 Y2hlZF9tYXNrLCB1aW50IGxvY2tlZF9tYXNrKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBwdHJf YTExeV9kd2VsbF9jbGlja190eXBlX2NoYW5nZWQgKENsdXR0ZXIuUG9pbnRlckExMXlEd2VsbENs aWNrVHlwZSBjbGlja190eXBlKTsKLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBwdHJfYTExeV90aW1l b3V0X3N0YXJ0ZWQgKENsdXR0ZXIuSW5wdXREZXZpY2UgZGV2aWNlLCBDbHV0dGVyLlBvaW50ZXJB MTF5VGltZW91dFR5cGUgdGltZW91dF90eXBlLCB1aW50IGRlbGF5KTsKLS0JCXB1YmxpYyBzaWdu YWwgdm9pZCBwdHJfYTExeV90aW1lb3V0X3N0b3BwZWQgKENsdXR0ZXIuSW5wdXREZXZpY2UgZGV2 aWNlLCBDbHV0dGVyLlBvaW50ZXJBMTF5VGltZW91dFR5cGUgdGltZW91dF90eXBlKTsKLS0JCXB1 YmxpYyBzaWduYWwgdm9pZCB0b29sX2NoYW5nZWQgKENsdXR0ZXIuSW5wdXREZXZpY2Ugb2JqZWN0 LCBDbHV0dGVyLklucHV0RGV2aWNlVG9vbCBwMCk7Ci0tCX0KLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2RyYWdfYWN0 aW9uX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJcHVibGlj IGNsYXNzIERyYWdBY3Rpb24gOiBDbHV0dGVyLkFjdGlvbiB7Ci0gCQlbQ0NvZGUgKGhhc19jb25z dHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyQWN0aW9uKiIpXQotIAkJcHVi bGljIERyYWdBY3Rpb24gKCk7Ci0tCQlwdWJsaWMgYm9vbCBnZXRfZHJhZ19hcmVhIChDbHV0dGVy LlJlY3QgZHJhZ19hcmVhKTsKLSsJCXB1YmxpYyBib29sIGdldF9kcmFnX2FyZWEgKEdyYXBoZW5l LlJlY3QgZHJhZ19hcmVhKTsKLSAJCXB1YmxpYyBDbHV0dGVyLkRyYWdBeGlzIGdldF9kcmFnX2F4 aXMgKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9kcmFnX2hhbmRsZSAo KTsKLSAJCXB1YmxpYyB2b2lkIGdldF9kcmFnX3RocmVzaG9sZCAob3V0IHVpbnQgeF90aHJlc2hv bGQsIG91dCB1aW50IHlfdGhyZXNob2xkKTsKLSAJCXB1YmxpYyB2b2lkIGdldF9tb3Rpb25fY29v cmRzIChvdXQgZmxvYXQgbW90aW9uX3gsIG91dCBmbG9hdCBtb3Rpb25feSk7Ci0gCQlwdWJsaWMg dm9pZCBnZXRfcHJlc3NfY29vcmRzIChvdXQgZmxvYXQgcHJlc3NfeCwgb3V0IGZsb2F0IHByZXNz X3kpOwotLQkJcHVibGljIHZvaWQgc2V0X2RyYWdfYXJlYSAoQ2x1dHRlci5SZWN0PyBkcmFnX2Fy ZWEpOwotKwkJcHVibGljIHZvaWQgc2V0X2RyYWdfYXJlYSAoR3JhcGhlbmUuUmVjdD8gZHJhZ19h cmVhKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9kcmFnX2F4aXMgKENsdXR0ZXIuRHJhZ0F4aXMgYXhp cyk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfZHJhZ19oYW5kbGUgKENsdXR0ZXIuQWN0b3I/IGhhbmRs ZSk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfZHJhZ190aHJlc2hvbGQgKGludCB4X3RocmVzaG9sZCwg aW50IHlfdGhyZXNob2xkKTsKLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlJlY3QgZHJhZ19hcmVhIHsgb3duZWQg Z2V0OyBzZXQ7IH0KLSsJCXB1YmxpYyBHcmFwaGVuZS5SZWN0IGRyYWdfYXJlYSB7IG93bmVkIGdl dDsgc2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEyIildCi0gCQlwdWJsaWMgYm9vbCBkcmFnX2FyZWFfc2V0IHsgZ2V0OyB9Ci1AQCAtNjAxMSwx MyArNTgxMCwxMyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVi bGljIHZpcnR1YWwgYm9vbCBtb2RpZnlfcGFpbnRfdm9sdW1lIChDbHV0dGVyLlBhaW50Vm9sdW1l IHZvbHVtZSk7Ci0gCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBwYWludCAo Q2x1dHRlci5FZmZlY3RQYWludEZsYWdzIGZsYWdzKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQg cGFpbnQgKENsdXR0ZXIuUGFpbnRDb250ZXh0IHBhaW50X2NvbnRleHQsIENsdXR0ZXIuRWZmZWN0 UGFpbnRGbGFncyBmbGFncyk7Ci0gCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9p ZCBwaWNrIChDbHV0dGVyLkVmZmVjdFBhaW50RmxhZ3MgZmxhZ3MpOwotKwkJcHVibGljIHZpcnR1 YWwgdm9pZCBwaWNrIChDbHV0dGVyLlBpY2tDb250ZXh0IHBpY2tfY29udGV4dCk7Ci0gCQlbTm9X cmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBwb3N0X3BhaW50ICgpOwotKwkJcHVibGlj IHZpcnR1YWwgdm9pZCBwb3N0X3BhaW50IChDbHV0dGVyLlBhaW50Q29udGV4dCBwYWludF9jb250 ZXh0KTsKLSAJCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCBib29sIHByZV9wYWludCAo KTsKLSsJCXB1YmxpYyB2aXJ0dWFsIGJvb2wgcHJlX3BhaW50IChDbHV0dGVyLlBhaW50Q29udGV4 dCBwYWludF9jb250ZXh0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1Ymxp YyB2b2lkIHF1ZXVlX3JlcGFpbnQgKCk7Ci0gCX0KLUBAIC02MDY4LDcgKzU4NjcsNyBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdWludCBnZXRfbW9kZV9ncm91cCAoKTsKLSAJCXB1 YmxpYyBib29sIGdldF9wYWRfZXZlbnRfZGV0YWlscyAob3V0IHVpbnQgbnVtYmVyLCBvdXQgdWlu dCBtb2RlLCBvdXQgZG91YmxlIHZhbHVlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIild Ci0tCQlwdWJsaWMgdm9pZCBnZXRfcG9zaXRpb24gKENsdXR0ZXIuUG9pbnQgcG9zaXRpb24pOwot KwkJcHVibGljIHZvaWQgZ2V0X3Bvc2l0aW9uIChHcmFwaGVuZS5Qb2ludCBwb3NpdGlvbik7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFj dG9yIGdldF9yZWxhdGVkICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLUBAIC02 MzA4LDcgKzYxMDcsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS42IildCi0gCQlwdWJsaWMgYm9vbCBnZXRfYXhpc192YWx1ZSAoW0NDb2RlIChhcnJheV9s ZW5ndGggPSBmYWxzZSldIGRvdWJsZVtdIGF4ZXMsIENsdXR0ZXIuSW5wdXRBeGlzIGF4aXMsIG91 dCBkb3VibGUgdmFsdWUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1Ymxp YyBib29sIGdldF9jb29yZHMgKENsdXR0ZXIuRXZlbnRTZXF1ZW5jZT8gc2VxdWVuY2UsIENsdXR0 ZXIuUG9pbnQgcG9pbnQpOwotKwkJcHVibGljIGJvb2wgZ2V0X2Nvb3JkcyAoQ2x1dHRlci5FdmVu dFNlcXVlbmNlPyBzZXF1ZW5jZSwgR3JhcGhlbmUuUG9pbnQgcG9pbnQpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIGludCBnZXRfZGV2aWNlX2lkICgpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuNiIpXQotQEAgLTYzMjIsNyArNjEyMSw3IEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCXB1YmxpYyBib29sIGdldF9lbmFibGVkICgpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2dyYWJi ZWRfYWN0b3IgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9ncm91cF9uX21vZGVzIChpbnQgZ3JvdXAp OwotKwkJcHVibGljIHZpcnR1YWwgaW50IGdldF9ncm91cF9uX21vZGVzIChpbnQgZ3JvdXApOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIGJvb2wgZ2V0X2hhc19jdXJz b3IgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi1AQCAtNjM0NCwxNiArNjE0Mywx NyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlN0YWdl IGdldF9wb2ludGVyX3N0YWdlICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMjIiKV0KLSAJ CXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfcHJvZHVjdF9pZCAoKTsKLSsJCXB1YmxpYyB1bm93 bmVkIENsdXR0ZXIuU2VhdCBnZXRfc2VhdCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYi KV0KLSAJCXB1YmxpYyBHTGliLkxpc3Q8d2VhayBDbHV0dGVyLklucHV0RGV2aWNlPiBnZXRfc2xh dmVfZGV2aWNlcyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIyIildCi0gCQlwdWJsaWMg dW5vd25lZCBzdHJpbmcgZ2V0X3ZlbmRvcl9pZCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEwIildCi0gCQlwdWJsaWMgdm9pZCBncmFiIChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLS0JCXB1 YmxpYyBib29sIGlzX2dyb3VwZWQgKENsdXR0ZXIuSW5wdXREZXZpY2Ugb3RoZXJfZGV2aWNlKTsK LS0JCXB1YmxpYyBib29sIGlzX21vZGVfc3dpdGNoX2J1dHRvbiAodWludCBncm91cCwgdWludCBi dXR0b24pOwotKwkJcHVibGljIHZpcnR1YWwgYm9vbCBpc19ncm91cGVkIChDbHV0dGVyLklucHV0 RGV2aWNlIG90aGVyX2RldmljZSk7Ci0rCQlwdWJsaWMgdmlydHVhbCBib29sIGlzX21vZGVfc3dp dGNoX2J1dHRvbiAodWludCBncm91cCwgdWludCBidXR0b24pOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMTAiKV0KLS0JCXB1YmxpYyBib29sIGtleWNvZGVfdG9fZXZkZXYgKHVpbnQgaGFyZHdh cmVfa2V5Y29kZSwgdWludCBldmRldl9rZXljb2RlKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIGJvb2wg a2V5Y29kZV90b19ldmRldiAodWludCBoYXJkd2FyZV9rZXljb2RlLCB1aW50IGV2ZGV2X2tleWNv ZGUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENs dXR0ZXIuQWN0b3Igc2VxdWVuY2VfZ2V0X2dyYWJiZWRfYWN0b3IgKENsdXR0ZXIuRXZlbnRTZXF1 ZW5jZSBzZXF1ZW5jZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotQEAgLTYzNjks MTIgKzYxNjksMTEgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHZvaWQgdW5ncmFi ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotIAkJcHVibGljIHZvaWQgdXBkYXRl X2Zyb21fZXZlbnQgKENsdXR0ZXIuRXZlbnQgZXZlbnQsIGJvb2wgdXBkYXRlX3N0YWdlKTsKLSsJ CVtOb1dyYXBwZXJdCi0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIHVwZGF0ZV9mcm9tX3Rvb2wgKENs dXR0ZXIuSW5wdXREZXZpY2VUb29sIHRvb2wpOwotIAkJW05vQWNjZXNzb3JNZXRob2RdCi0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMgQ2x1dHRlci5CYWNrZW5kIGJhY2tl bmQgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0tCQlwdWJsaWMgQ2x1dHRlci5EZXZpY2VNYW5hZ2Vy IGRldmljZV9tYW5hZ2VyIHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJCXB1YmxpYyBDbHV0 dGVyLklucHV0TW9kZSBkZXZpY2VfbW9kZSB7IGdldDsgY29uc3RydWN0OyB9Ci0gCQlwdWJsaWMg c3RyaW5nIGRldmljZV9ub2RlIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjIiKV0KLUBAIC02Mzk3LDYgKzYxOTYsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0g CQlwdWJsaWMgc3RyaW5nIG5hbWUgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMjIiKV0KLSAJCXB1YmxpYyBzdHJpbmcgcHJvZHVjdF9pZCB7IGdldDsg Y29uc3RydWN0OyB9Ci0rCQlwdWJsaWMgQ2x1dHRlci5TZWF0IHNlYXQgeyBnZXQ7IGNvbnN0cnVj dDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMjIiKV0KLSAJCXB1YmxpYyBzdHJpbmcgdmVu ZG9yX2lkIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJfQotQEAgLTY0MzQsNyArNjIzNCw3IEBAIG5h bWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIHNldF9jYW5fc2hvd19wcmVlZGl0IChi b29sIGNhbl9zaG93X3ByZWVkaXQpOwotIAkJcHVibGljIHZvaWQgc2V0X2NvbnRlbnRfaGludHMg KENsdXR0ZXIuSW5wdXRDb250ZW50SGludEZsYWdzIGhpbnQpOwotIAkJcHVibGljIHZvaWQgc2V0 X2NvbnRlbnRfcHVycG9zZSAoQ2x1dHRlci5JbnB1dENvbnRlbnRQdXJwb3NlIHB1cnBvc2UpOwot LQkJcHVibGljIHZvaWQgc2V0X2N1cnNvcl9sb2NhdGlvbiAoQ2x1dHRlci5SZWN0IHJlY3QpOwot KwkJcHVibGljIHZvaWQgc2V0X2N1cnNvcl9sb2NhdGlvbiAoR3JhcGhlbmUuUmVjdCByZWN0KTsK LSAJCXB1YmxpYyB2b2lkIHNldF9pbnB1dF9wYW5lbF9zdGF0ZSAoQ2x1dHRlci5JbnB1dFBhbmVs U3RhdGUgc3RhdGUpOwotIAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgc2V0 X3ByZWVkaXRfdGV4dCAoc3RyaW5nIHByZWVkaXQsIHVpbnQgY3Vyc29yKTsKLUBAIC02NDUzLDcg KzYyNTMsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVibGlj IHZpcnR1YWwgdm9pZCByZXNldCAoKTsKLSAJCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVh bCB2b2lkIHNldF9jdXJzb3JfbG9jYXRpb24gKENsdXR0ZXIuUmVjdCByZWN0KTsKLSsJCXB1Ymxp YyB2aXJ0dWFsIHZvaWQgc2V0X2N1cnNvcl9sb2NhdGlvbiAoR3JhcGhlbmUuUmVjdCByZWN0KTsK LSAJCXB1YmxpYyB2b2lkIHNldF9pbnB1dF9wYW5lbF9zdGF0ZSAoQ2x1dHRlci5JbnB1dFBhbmVs U3RhdGUgc3RhdGUpOwotIAkJcHVibGljIHZvaWQgc2V0X3ByZWVkaXRfdGV4dCAoc3RyaW5nPyBw cmVlZGl0LCB1aW50IGN1cnNvcik7Ci0gCQlbTm9XcmFwcGVyXQotQEAgLTY0NzAsNyArNjI3MCw3 IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBDbHV0dGVyLklucHV0Q29udGVudFB1 cnBvc2UgY29udGVudF9wdXJwb3NlIHsgZ2V0OyBzZXQ7IH0KLSAJCVtIYXNFbWl0dGVyXQotIAkJ cHVibGljIHNpZ25hbCB2b2lkIGNvbW1pdCAoc3RyaW5nIHRleHQpOwotLQkJcHVibGljIHNpZ25h bCB2b2lkIGN1cnNvcl9sb2NhdGlvbl9jaGFuZ2VkIChDbHV0dGVyLlJlY3Qgb2JqZWN0KTsKLSsJ CXB1YmxpYyBzaWduYWwgdm9pZCBjdXJzb3JfbG9jYXRpb25fY2hhbmdlZCAoR3JhcGhlbmUuUmVj dCBvYmplY3QpOwotIAkJW0hhc0VtaXR0ZXJdCi0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgZGVsZXRl X3N1cnJvdW5kaW5nICh1aW50IG9mZnNldCwgdWludCBsZW4pOwotIAkJcHVibGljIHNpZ25hbCB2 b2lkIGlucHV0X3BhbmVsX3N0YXRlIChDbHV0dGVyLklucHV0UGFuZWxTdGF0ZSBvYmplY3QpOwot QEAgLTY1NDYsMjcgKzYzNDYsMzEgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW0NDb2RlICho YXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIEtleW1hcCAoKTsK LSAJCXB1YmxpYyB2aXJ0dWFsIGJvb2wgZ2V0X2NhcHNfbG9ja19zdGF0ZSAoKTsKLSsJCXB1Ymxp YyB2aXJ0dWFsIFBhbmdvLkRpcmVjdGlvbiBnZXRfZGlyZWN0aW9uICgpOwotIAkJcHVibGljIHZp cnR1YWwgYm9vbCBnZXRfbnVtX2xvY2tfc3RhdGUgKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQg c3RhdGVfY2hhbmdlZCAoKTsKLSAJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1 dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfbGF5ZXJfbm9kZV9nZXRfdHlwZSAo KSIpXQotKwlwdWJsaWMgY2xhc3MgTGF5ZXJOb2RlIDogQ2x1dHRlci5QYWludE5vZGUgewotKwkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlclBh aW50Tm9kZSoiKV0KLSsJCXB1YmxpYyBMYXllck5vZGUgKENvZ2wuTWF0cml4IHByb2plY3Rpb24s IENhaXJvLlJlY3RhbmdsZSB2aWV3cG9ydCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgdWlu dDggb3BhY2l0eSk7Ci0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIv Y2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2xheW91dF9tYW5hZ2VyX2dldF90eXBlICgp IildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJcHVibGljIGFic3RyYWN0IGNsYXNz IExheW91dE1hbmFnZXIgOiBHTGliLkluaXRpYWxseVVub3duZWQgewotIAkJW0NDb2RlIChoYXNf Y29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIExheW91dE1hbmFnZXIg KCk7Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIGFsbG9jYXRlIChDbHV0dGVyLkNvbnRhaW5lciBj b250YWluZXIsIENsdXR0ZXIuQWN0b3JCb3ggYWxsb2NhdGlvbiwgQ2x1dHRlci5BbGxvY2F0aW9u RmxhZ3MgZmxhZ3MpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHVub3du ZWQgQ2x1dHRlci5BbHBoYSBiZWdpbl9hbmltYXRpb24gKHVpbnQgZHVyYXRpb24sIHVsb25nIG1v ZGUpOwotIAkJcHVibGljIHZvaWQgY2hpbGRfZ2V0IChDbHV0dGVyLkNvbnRhaW5lciBjb250YWlu ZXIsIENsdXR0ZXIuQWN0b3IgYWN0b3IsIC4uLik7Ci0gCQlwdWJsaWMgdm9pZCBjaGlsZF9nZXRf cHJvcGVydHkgKENsdXR0ZXIuQ29udGFpbmVyIGNvbnRhaW5lciwgQ2x1dHRlci5BY3RvciBhY3Rv ciwgc3RyaW5nIHByb3BlcnR5X25hbWUsIEdMaWIuVmFsdWUgdmFsdWUpOwotIAkJcHVibGljIHZv aWQgY2hpbGRfc2V0IChDbHV0dGVyLkNvbnRhaW5lciBjb250YWluZXIsIENsdXR0ZXIuQWN0b3Ig YWN0b3IsIC4uLik7Ci0gCQlwdWJsaWMgdm9pZCBjaGlsZF9zZXRfcHJvcGVydHkgKENsdXR0ZXIu Q29udGFpbmVyIGNvbnRhaW5lciwgQ2x1dHRlci5BY3RvciBhY3Rvciwgc3RyaW5nIHByb3BlcnR5 X25hbWUsIEdMaWIuVmFsdWUgdmFsdWUpOwotIAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0 dWFsIHVub3duZWQgQ2x1dHRlci5MYXlvdXRNZXRhIGNyZWF0ZV9jaGlsZF9tZXRhIChDbHV0dGVy LkNvbnRhaW5lciBjb250YWluZXIsIENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIx LjIiKV0KLSsJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIGVuZF9hbmltYXRp b24gKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBHTGliLlBhcmFtU3BlYyBmaW5kX2NoaWxkX3Byb3Bl cnR5IChzdHJpbmcgbmFtZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotKwkJW05vV3JhcHBlcl0KLSAJ CXB1YmxpYyB2aXJ0dWFsIGRvdWJsZSBnZXRfYW5pbWF0aW9uX3Byb2dyZXNzICgpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5MYXlvdXRN ZXRhIGdldF9jaGlsZF9tZXRhIChDbHV0dGVyLkNvbnRhaW5lciBjb250YWluZXIsIENsdXR0ZXIu QWN0b3IgYWN0b3IpOwotQEAgLTY2MjMsMTIgKzY0MjcsMTIgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHJvdGVjdGVkIE9mZnNjcmVlbkVmZmVjdCAoKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIENv Z2wuSGFuZGxlIGNyZWF0ZV90ZXh0dXJlIChmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0tCQlwdWJsaWMgYm9vbCBnZXRfdGFyZ2V0X3Jl Y3QgKG91dCB1bm93bmVkIENsdXR0ZXIuUmVjdCByZWN0KTsKLSsJCXB1YmxpYyBib29sIGdldF90 YXJnZXRfcmVjdCAob3V0IHVub3duZWQgR3JhcGhlbmUuUmVjdCByZWN0KTsKLSAJCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE0Iiwgc2luY2UgPSAi MS44IildCi0gCQlwdWJsaWMgYm9vbCBnZXRfdGFyZ2V0X3NpemUgKG91dCBmbG9hdCB3aWR0aCwg b3V0IGZsb2F0IGhlaWdodCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVi bGljIHVub3duZWQgQ29nbC5IYW5kbGUgZ2V0X3RleHR1cmUgKCk7Ci0tCQlwdWJsaWMgdmlydHVh bCB2b2lkIHBhaW50X3RhcmdldCAoKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcGFpbnRfdGFy Z2V0IChDbHV0dGVyLlBhaW50Q29udGV4dCBwYWludF9jb250ZXh0KTsKLSAJfQotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0 ZXJfcGFnZV90dXJuX2VmZmVjdF9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAi MS40IildCi1AQCAtNjY0NSw2ICs2NDQ5LDE2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1 YmxpYyBkb3VibGUgcGVyaW9kIHsgZ2V0OyBzZXQ7IH0KLSAJCXB1YmxpYyBmbG9hdCByYWRpdXMg eyBnZXQ7IHNldDsgfQotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVy L2NsdXR0ZXIuaCIsIHJlZl9mdW5jdGlvbiA9ICJjbHV0dGVyX3BhaW50X2NvbnRleHRfcmVmIiwg dHlwZV9pZCA9ICJjbHV0dGVyX3BhaW50X2NvbnRleHRfZ2V0X3R5cGUgKCkiLCB1bnJlZl9mdW5j dGlvbiA9ICJjbHV0dGVyX3BhaW50X2NvbnRleHRfdW5yZWYiKV0KLSsJW0NvbXBhY3RdCi0rCXB1 YmxpYyBjbGFzcyBQYWludENvbnRleHQgewotKwkJcHVibGljIHZvaWQgZGVzdHJveSAoKTsKLSsJ CXB1YmxpYyB1bm93bmVkIENvZ2wuRnJhbWVidWZmZXIgZ2V0X2ZyYW1lYnVmZmVyICgpOwotKwkJ cHVibGljIHZvaWQgcG9wX2ZyYW1lYnVmZmVyICgpOwotKwkJcHVibGljIHZvaWQgcHVzaF9mcmFt ZWJ1ZmZlciAoQ29nbC5GcmFtZWJ1ZmZlciBmcmFtZWJ1ZmZlcik7Ci0rCQlwdWJsaWMgdW5vd25l ZCBDbHV0dGVyLlBhaW50Q29udGV4dCBAcmVmICgpOwotKwkJcHVibGljIHZvaWQgdW5yZWYgKCk7 Ci0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwg dHlwZV9pZCA9ICJjbHV0dGVyX3BhaW50X25vZGVfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24g KHNpbmNlID0gIjEuMTAiKV0KLSAJcHVibGljIGFic3RyYWN0IGNsYXNzIFBhaW50Tm9kZSB7Ci1A QCAtNjY1NCw3ICs2NDY4LDggQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHZvaWQg YWRkX211bHRpdGV4dHVyZV9yZWN0YW5nbGUgKENsdXR0ZXIuQWN0b3JCb3ggcmVjdCwgZmxvYXQg dGV4dF9jb29yZHMsIHVpbnQgdGV4dF9jb29yZHNfbGVuKTsKLSAJCXB1YmxpYyB2b2lkIGFkZF9y ZWN0YW5nbGUgKENsdXR0ZXIuQWN0b3JCb3ggcmVjdCk7Ci0gCQlwdWJsaWMgdm9pZCBhZGRfdGV4 dHVyZV9yZWN0YW5nbGUgKENsdXR0ZXIuQWN0b3JCb3ggcmVjdCwgZmxvYXQgeF8xLCBmbG9hdCB5 XzEsIGZsb2F0IHhfMiwgZmxvYXQgeV8yKTsKLS0JCXB1YmxpYyB2b2lkIHBhaW50ICgpOwotKwkJ cHVibGljIHVub3duZWQgQ29nbC5GcmFtZWJ1ZmZlciBnZXRfZnJhbWVidWZmZXIgKCk7Ci0rCQlw dWJsaWMgdm9pZCBwYWludCAoQ2x1dHRlci5QYWludENvbnRleHQgcGFpbnRfY29udGV4dCk7Ci0g CQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlBhaW50Tm9kZSBAcmVmICgpOwotIAkJcHVibGljIHZv aWQgc2V0X25hbWUgKHN0cmluZyBuYW1lKTsKLSAJCXB1YmxpYyB2b2lkIHVucmVmICgpOwotQEAg LTY2NzIsNyArNjQ4Nyw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyBmbG9hdCBnZXRfaGVpZ2h0ICgpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIENsdXR0ZXIuVmVydGV4IGdldF9vcmlnaW4gKCk7 Ci0rCQlwdWJsaWMgdm9pZCBnZXRfb3JpZ2luIChvdXQgdW5vd25lZCBHcmFwaGVuZS5Qb2ludDNE IHZlcnRleCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMgZmxvYXQg Z2V0X3dpZHRoICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotQEAgLTY2ODIsNyAr NjQ5Nyw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYi KV0KLSAJCXB1YmxpYyB2b2lkIHNldF9oZWlnaHQgKGZsb2F0IGhlaWdodCk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS42IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfb3JpZ2luIChDbHV0dGVyLlZl cnRleCBvcmlnaW4pOwotKwkJcHVibGljIHZvaWQgc2V0X29yaWdpbiAoR3JhcGhlbmUuUG9pbnQz RCBvcmlnaW4pOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIHZvaWQg c2V0X3dpZHRoIChmbG9hdCB3aWR0aCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi1A QCAtNjc2OSwyNiArNjU4NCwxOSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgQ2x1 dHRlci5QYXRoIHBhdGggeyBnZXQ7IHNldDsgfQotIAkJcHVibGljIHNpZ25hbCB2b2lkIG5vZGVf cmVhY2hlZCAoQ2x1dHRlci5BY3RvciBhY3RvciwgdWludCBpbmRleCk7Ci0gCX0KLSsJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgcmVmX2Z1bmN0aW9uID0g ImNsdXR0ZXJfcGlja19jb250ZXh0X3JlZiIsIHR5cGVfaWQgPSAiY2x1dHRlcl9waWNrX2NvbnRl eHRfZ2V0X3R5cGUgKCkiLCB1bnJlZl9mdW5jdGlvbiA9ICJjbHV0dGVyX3BpY2tfY29udGV4dF91 bnJlZiIpXQotKwlbQ29tcGFjdF0KLSsJcHVibGljIGNsYXNzIFBpY2tDb250ZXh0IHsKLSsJCXB1 YmxpYyB2b2lkIGRlc3Ryb3kgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlBpY2tDb250 ZXh0IEByZWYgKCk7Ci0rCQlwdWJsaWMgdm9pZCB1bnJlZiAoKTsKLSsJfQotIAlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJf cGlwZWxpbmVfbm9kZV9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIp XQotIAlwdWJsaWMgY2xhc3MgUGlwZWxpbmVOb2RlIDogQ2x1dHRlci5QYWludE5vZGUgewotIAkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIFBp cGVsaW5lTm9kZSAoKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rp b24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BvaW50X2dldF90eXBlICgp IildCi0tCVtDb21wYWN0XQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQlwdWJsaWMg Y2xhc3MgUG9pbnQgewotLQkJcHVibGljIGZsb2F0IHg7Ci0tCQlwdWJsaWMgZmxvYXQgeTsKLS0J CXB1YmxpYyBzdGF0aWMgQ2x1dHRlci5Qb2ludCBhbGxvYyAoKTsKLS0JCXB1YmxpYyBDbHV0dGVy LlBvaW50IGNvcHkgKCk7Ci0tCQlwdWJsaWMgZmxvYXQgZGlzdGFuY2UgKENsdXR0ZXIuUG9pbnQg Yiwgb3V0IGZsb2F0IHhfZGlzdGFuY2UsIG91dCBmbG9hdCB5X2Rpc3RhbmNlKTsKLS0JCXB1Ymxp YyBib29sIGVxdWFscyAoQ2x1dHRlci5Qb2ludCBiKTsKLS0JCXB1YmxpYyB2b2lkIGZyZWUgKCk7 Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlBvaW50IGluaXQgKGZsb2F0IHgsIGZsb2F0IHkp OwotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuUG9pbnQgemVybyAoKTsKLS0JfQot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lk ID0gImNsdXR0ZXJfcHJvcGVydHlfdHJhbnNpdGlvbl9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lv biAoc2luY2UgPSAiMS4xMCIpXQotIAlwdWJsaWMgY2xhc3MgUHJvcGVydHlUcmFuc2l0aW9uIDog Q2x1dHRlci5UcmFuc2l0aW9uLCBDbHV0dGVyLlNjcmlwdGFibGUgewotQEAgLTY3OTgsMzMgKzY2 MDYsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfcHJvcGVydHlf bmFtZSAoc3RyaW5nPyBwcm9wZXJ0eV9uYW1lKTsKLSAJCXB1YmxpYyBzdHJpbmcgcHJvcGVydHlf bmFtZSB7IGdldDsgc2V0OyB9Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1 bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9yZWN0X2dldF90eXBl ICgpIildCi0tCVtDb21wYWN0XQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQlwdWJs aWMgY2xhc3MgUmVjdCB7Ci0tCQlwdWJsaWMgd2VhayBDbHV0dGVyLlBvaW50IG9yaWdpbjsKLS0J CXB1YmxpYyB3ZWFrIENsdXR0ZXIuU2l6ZSBzaXplOwotLQkJcHVibGljIHN0YXRpYyBDbHV0dGVy LlJlY3QgYWxsb2MgKCk7Ci0tCQlwdWJsaWMgdm9pZCBjbGFtcF90b19waXhlbCAoKTsKLS0JCXB1 YmxpYyBib29sIGNvbnRhaW5zX3BvaW50IChDbHV0dGVyLlBvaW50IHBvaW50KTsKLS0JCXB1Ymxp YyBib29sIGNvbnRhaW5zX3JlY3QgKENsdXR0ZXIuUmVjdCBiKTsKLS0JCXB1YmxpYyBDbHV0dGVy LlJlY3QgY29weSAoKTsKLS0JCXB1YmxpYyBib29sIGVxdWFscyAoQ2x1dHRlci5SZWN0IGIpOwot LQkJcHVibGljIHZvaWQgZnJlZSAoKTsKLS0JCXB1YmxpYyB2b2lkIGdldF9jZW50ZXIgKENsdXR0 ZXIuUG9pbnQgY2VudGVyKTsKLS0JCXB1YmxpYyBmbG9hdCBnZXRfaGVpZ2h0ICgpOwotLQkJcHVi bGljIGZsb2F0IGdldF93aWR0aCAoKTsKLS0JCXB1YmxpYyBmbG9hdCBnZXRfeCAoKTsKLS0JCXB1 YmxpYyBmbG9hdCBnZXRfeSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuUmVjdCBpbml0 IChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLS0JCXB1Ymxp YyB2b2lkIGluc2V0IChmbG9hdCBkX3gsIGZsb2F0IGRfeSk7Ci0tCQlwdWJsaWMgYm9vbCBpbnRl cnNlY3Rpb24gKENsdXR0ZXIuUmVjdCBiLCBDbHV0dGVyLlJlY3Q/IHJlcyk7Ci0tCQlwdWJsaWMg Q2x1dHRlci5SZWN0IG5vcm1hbGl6ZSAoKTsKLS0JCXB1YmxpYyB2b2lkIG9mZnNldCAoZmxvYXQg ZF94LCBmbG9hdCBkX3kpOwotLQkJcHVibGljIHZvaWQgc2NhbGUgKGZsb2F0IHNfeCwgZmxvYXQg c195KTsKLS0JCXB1YmxpYyB2b2lkIHVuaW9uIChDbHV0dGVyLlJlY3QgYiwgQ2x1dHRlci5SZWN0 IHJlcyk7Ci0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ2x1dHRlci5SZWN0IHplcm8gKCk7Ci0t CX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlw ZV9pZCA9ICJjbHV0dGVyX3JlY3RhbmdsZV9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2lu Y2UgPSAiMC4yIildCi0gCXB1YmxpYyBjbGFzcyBSZWN0YW5nbGUgOiBDbHV0dGVyLkFjdG9yLCBB dGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENs dXR0ZXIuU2NyaXB0YWJsZSB7Ci1AQCAtNjkwNyw4ICs2Njg4LDggQEAgbmFtZXNwYWNlIENsdXR0 ZXIgewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAi Q2x1dHRlckFjdG9yKiIpXQotIAkJcHVibGljIFNjcm9sbEFjdG9yICgpOwotIAkJcHVibGljIENs dXR0ZXIuU2Nyb2xsTW9kZSBnZXRfc2Nyb2xsX21vZGUgKCk7Ci0tCQlwdWJsaWMgdm9pZCBzY3Jv bGxfdG9fcG9pbnQgKENsdXR0ZXIuUG9pbnQgcG9pbnQpOwotLQkJcHVibGljIHZvaWQgc2Nyb2xs X3RvX3JlY3QgKENsdXR0ZXIuUmVjdCByZWN0KTsKLSsJCXB1YmxpYyB2b2lkIHNjcm9sbF90b19w b2ludCAoR3JhcGhlbmUuUG9pbnQgcG9pbnQpOwotKwkJcHVibGljIHZvaWQgc2Nyb2xsX3RvX3Jl Y3QgKEdyYXBoZW5lLlJlY3QgcmVjdCk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfc2Nyb2xsX21vZGUg KENsdXR0ZXIuU2Nyb2xsTW9kZSBtb2RlKTsKLSAJCXB1YmxpYyBDbHV0dGVyLlNjcm9sbE1vZGUg c2Nyb2xsX21vZGUgeyBnZXQ7IHNldDsgfQotIAl9Ci1AQCAtNjkzMCw2ICs2NzExLDQ0IEBAIG5h bWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBmbG9hdCB4OwotIAkJcHVibGljIGZsb2F0IHk7 Ci0gCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwg dHlwZV9pZCA9ICJjbHV0dGVyX3NlYXRfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGFic3RyYWN0 IGNsYXNzIFNlYXQgOiBHTGliLk9iamVjdCB7Ci0rCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVu Y3Rpb24gPSBmYWxzZSldCi0rCQlwcm90ZWN0ZWQgU2VhdCAoKTsKLSsJCVtOb1dyYXBwZXJdCi0r CQlwdWJsaWMgdmlydHVhbCB2b2lkIGFwcGx5X2tiZF9hMTF5X3NldHRpbmdzIChDbHV0dGVyLkti ZEExMXlTZXR0aW5ncyBzZXR0aW5ncyk7Ci0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIGJlbGxfbm90 aWZ5ICgpOwotKwkJcHVibGljIHZpcnR1YWwgdm9pZCBjb21wcmVzc19tb3Rpb24gKENsdXR0ZXIu RXZlbnQgZXZlbnQsIENsdXR0ZXIuRXZlbnQgdG9fZGlzY2FyZCk7Ci0rCQlbTm9XcmFwcGVyXQot KwkJcHVibGljIHZpcnR1YWwgdm9pZCBjb3B5X2V2ZW50X2RhdGEgKENsdXR0ZXIuRXZlbnQgc3Jj LCBDbHV0dGVyLkV2ZW50IGRlc3QpOwotKwkJcHVibGljIHZpcnR1YWwgQ2x1dHRlci5WaXJ0dWFs SW5wdXREZXZpY2UgY3JlYXRlX3ZpcnR1YWxfZGV2aWNlIChDbHV0dGVyLklucHV0RGV2aWNlVHlw ZSBkZXZpY2VfdHlwZSk7Ci0rCQlwdWJsaWMgdm9pZCBlbnN1cmVfYTExeV9zdGF0ZSAoKTsKLSsJ CVtOb1dyYXBwZXJdCi0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIGZyZWVfZXZlbnRfZGF0YSAoQ2x1 dHRlci5FdmVudCBldmVudCk7Ci0rCQlwdWJsaWMgdm9pZCBnZXRfa2JkX2ExMXlfc2V0dGluZ3Mg KENsdXR0ZXIuS2JkQTExeVNldHRpbmdzIHNldHRpbmdzKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHVu b3duZWQgQ2x1dHRlci5JbnB1dERldmljZSBnZXRfa2V5Ym9hcmQgKCk7Ci0rCQlwdWJsaWMgdmly dHVhbCB1bm93bmVkIENsdXR0ZXIuS2V5bWFwIGdldF9rZXltYXAgKCk7Ci0rCQlwdWJsaWMgdmly dHVhbCB1bm93bmVkIENsdXR0ZXIuSW5wdXREZXZpY2UgZ2V0X3BvaW50ZXIgKCk7Ci0rCQlwdWJs aWMgdm9pZCBnZXRfcG9pbnRlcl9hMTF5X3NldHRpbmdzIChDbHV0dGVyLlBvaW50ZXJBMTF5U2V0 dGluZ3Mgc2V0dGluZ3MpOwotKwkJcHVibGljIHZpcnR1YWwgQ2x1dHRlci5WaXJ0dWFsRGV2aWNl VHlwZSBnZXRfc3VwcG9ydGVkX3ZpcnR1YWxfZGV2aWNlX3R5cGVzICgpOwotKwkJcHVibGljIGJv b2wgZ2V0X3RvdWNoX21vZGUgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCBHTGliLkxpc3Q8d2VhayBD bHV0dGVyLklucHV0RGV2aWNlPiBsaXN0X2RldmljZXMgKCk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRf a2JkX2ExMXlfc2V0dGluZ3MgKENsdXR0ZXIuS2JkQTExeVNldHRpbmdzIHNldHRpbmdzKTsKLSsJ CXB1YmxpYyB2b2lkIHNldF9wb2ludGVyX2ExMXlfZHdlbGxfY2xpY2tfdHlwZSAoQ2x1dHRlci5Q b2ludGVyQTExeUR3ZWxsQ2xpY2tUeXBlIGNsaWNrX3R5cGUpOwotKwkJcHVibGljIHZvaWQgc2V0 X3BvaW50ZXJfYTExeV9zZXR0aW5ncyAoQ2x1dHRlci5Qb2ludGVyQTExeVNldHRpbmdzIHNldHRp bmdzKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgd2FycF9wb2ludGVyIChpbnQgeCwgaW50IHkp OwotKwkJW05vQWNjZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMgQ2x1dHRlci5CYWNrZW5kIGJhY2tl bmQgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJcHVibGljIGJvb2wgdG91Y2hfbW9kZSB7 IGdldDsgfQotKwkJcHVibGljIHNpZ25hbCB2b2lkIGRldmljZV9hZGRlZCAoQ2x1dHRlci5JbnB1 dERldmljZSBvYmplY3QpOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIGRldmljZV9yZW1vdmVkIChD bHV0dGVyLklucHV0RGV2aWNlIG9iamVjdCk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQga2JkX2Ex MXlfZmxhZ3NfY2hhbmdlZCAodWludCBzZXR0aW5nc19mbGFncywgdWludCBjaGFuZ2VkX21hc2sp OwotKwkJcHVibGljIHNpZ25hbCB2b2lkIGtiZF9hMTF5X21vZHNfc3RhdGVfY2hhbmdlZCAodWlu dCBsYXRjaGVkX21hc2ssIHVpbnQgbG9ja2VkX21hc2spOwotKwkJcHVibGljIHNpZ25hbCB2b2lk IHB0cl9hMTF5X2R3ZWxsX2NsaWNrX3R5cGVfY2hhbmdlZCAoQ2x1dHRlci5Qb2ludGVyQTExeUR3 ZWxsQ2xpY2tUeXBlIGNsaWNrX3R5cGUpOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIHB0cl9hMTF5 X3RpbWVvdXRfc3RhcnRlZCAoQ2x1dHRlci5JbnB1dERldmljZSBkZXZpY2UsIENsdXR0ZXIuUG9p bnRlckExMXlUaW1lb3V0VHlwZSB0aW1lb3V0X3R5cGUsIHVpbnQgZGVsYXkpOwotKwkJcHVibGlj IHNpZ25hbCB2b2lkIHB0cl9hMTF5X3RpbWVvdXRfc3RvcHBlZCAoQ2x1dHRlci5JbnB1dERldmlj ZSBkZXZpY2UsIENsdXR0ZXIuUG9pbnRlckExMXlUaW1lb3V0VHlwZSB0aW1lb3V0X3R5cGUsIGJv b2wgY2xpY2tlZCk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgdG9vbF9jaGFuZ2VkIChDbHV0dGVy LklucHV0RGV2aWNlIG9iamVjdCwgQ2x1dHRlci5JbnB1dERldmljZVRvb2wgcDApOwotKwl9Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQg PSAiY2x1dHRlcl9zZXR0aW5nc19nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAi MS40IildCi0gCXB1YmxpYyBjbGFzcyBTZXR0aW5ncyA6IEdMaWIuT2JqZWN0IHsKLUBAIC03MDAy LDE4ICs2ODIxLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW0NDb2RlIChoYXNfY29uc3Ry dWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIFNoYWRlck1hdHJpeCAoKTsKLSAJ fQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5 X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVl IiwgdHlwZV9pZCA9ICJjbHV0dGVyX3NpemVfZ2V0X3R5cGUgKCkiKV0KLS0JW0NvbXBhY3RdCi0t CVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0tCXB1YmxpYyBjbGFzcyBTaXplIHsKLS0JCXB1 YmxpYyBmbG9hdCBoZWlnaHQ7Ci0tCQlwdWJsaWMgZmxvYXQgd2lkdGg7Ci0tCQlwdWJsaWMgc3Rh dGljIENsdXR0ZXIuU2l6ZSBhbGxvYyAoKTsKLS0JCXB1YmxpYyBDbHV0dGVyLlNpemUgY29weSAo KTsKLS0JCXB1YmxpYyBib29sIGVxdWFscyAoQ2x1dHRlci5TaXplIGIpOwotLQkJcHVibGljIHZv aWQgZnJlZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuU2l6ZSBpbml0IChmbG9hdCB3 aWR0aCwgZmxvYXQgaGVpZ2h0KTsKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfc25hcF9jb25zdHJhaW50X2dl dF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJcHVibGljIGNsYXNz IFNuYXBDb25zdHJhaW50IDogQ2x1dHRlci5Db25zdHJhaW50IHsKLUBAIC03MDUyLDE0ICs2ODU5 LDEyIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIGZyZWV6ZV91cGRhdGVz ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIGJvb2wgZ2V0X2Fj Y2VwdF9mb2N1cyAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2FjdG9y X2F0X3BvcyAoQ2x1dHRlci5QaWNrTW9kZSBwaWNrX21vZGUsIGludCB4LCBpbnQgeSk7Ci0rCQlw dWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9hY3Rvcl9hdF9wb3MgKENsdXR0ZXIuUGlj a01vZGUgcGlja19tb2RlLCBmbG9hdCB4LCBmbG9hdCB5KTsKLSAJCXB1YmxpYyBib29sIGdldF9j YXB0dXJlX2ZpbmFsX3NpemUgKENhaXJvLlJlY3RhbmdsZUludCByZWN0LCBpbnQgd2lkdGgsIGlu dCBoZWlnaHQsIGZsb2F0IHNjYWxlKTsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBnZXRf Y29sb3IgKCk7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuU3RhZ2UgZ2V0 X2RlZmF1bHQgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIENsdXR0ZXIuRm9nIGdl dF9mb2cgKCk7Ci0gCQlwdWJsaWMgaW50NjQgZ2V0X2ZyYW1lX2NvdW50ZXIgKCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMC42IildCi0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdl dF9rZXlfZm9jdXMgKCk7Ci1AQCAtNzA2NywxOSArNjg3MiwxNCBAQCBuYW1lc3BhY2UgQ2x1dHRl ciB7Ci0gCQlwdWJsaWMgdm9pZCBnZXRfbWluaW11bV9zaXplIChvdXQgdWludCB3aWR0aCwgb3V0 IHVpbnQgaGVpZ2h0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1YmxpYyBi b29sIGdldF9tb3Rpb25fZXZlbnRzX2VuYWJsZWQgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAi MS40IildCi0tCQlwdWJsaWMgYm9vbCBnZXRfbm9fY2xlYXJfaGludCAoKTsKLSAJCXB1YmxpYyBD bHV0dGVyLlBlcnNwZWN0aXZlIGdldF9wZXJzcGVjdGl2ZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBDYWlyby5SZWN0YW5nbGVJbnQgZ2V0X3JlZHJhd19jbGlw X2JvdW5kcyAoKTsKLSsJCXB1YmxpYyBDYWlyby5SZWdpb24gZ2V0X3JlZHJhd19jbGlwICgpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIGJvb2wgZ2V0X3Rocm90dGxl X21vdGlvbl9ldmVudHMgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0gCQlwdWJs aWMgdW5vd25lZCBzdHJpbmcgZ2V0X3RpdGxlICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MiIpXQotIAkJcHVibGljIGJvb2wgZ2V0X3VzZV9hbHBoYSAoKTsKLS0JCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC42Iild Ci0tCQlwdWJsaWMgYm9vbCBnZXRfdXNlX2ZvZyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIw LjQiKV0KLSAJCXB1YmxpYyB2b2lkIGhpZGVfY3Vyc29yICgpOwotIAkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjgiKV0K LUBAIC03MDk0LDE2ICs2ODk0LDEyIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2 b2lkIHNldF9hY2NlcHRfZm9jdXMgKGJvb2wgYWNjZXB0X2ZvY3VzKTsKLSAJCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMg dm9pZCBzZXRfY29sb3IgKENsdXR0ZXIuQ29sb3IgY29sb3IpOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjYiKV0K LS0JCXB1YmxpYyB2b2lkIHNldF9mb2cgKENsdXR0ZXIuRm9nIGZvZyk7Ci0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfa2V5X2ZvY3VzIChDbHV0dGVyLkFj dG9yPyBhY3Rvcik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgdm9p ZCBzZXRfbWluaW11bV9zaXplICh1aW50IHdpZHRoLCB1aW50IGhlaWdodCk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfbW90aW9uX2V2ZW50c19lbmFi bGVkIChib29sIGVuYWJsZWQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVi bGljIHZvaWQgc2V0X25vX2NsZWFyX2hpbnQgKGJvb2wgbm9fY2xlYXIpOwotIAkJcHVibGljIHZv aWQgc2V0X3BlcnNwZWN0aXZlIChDbHV0dGVyLlBlcnNwZWN0aXZlIHBlcnNwZWN0aXZlKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF90aHJvdHRsZV9t b3Rpb25fZXZlbnRzIChib29sIHRocm90dGxlKTsKLUBAIC03MTExLDggKzY5MDcsNiBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfdGl0bGUgKHN0cmluZyB0aXRsZSk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfdXNlX2Fs cGhhIChib29sIHVzZV9hbHBoYSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIHZvaWQg c2V0X3VzZV9mb2cgKGJvb2wgZm9nKTsKLSAJCXB1YmxpYyB2b2lkIHNob3dfY3Vyc29yICgpOwot IAkJcHVibGljIHZvaWQgdGhhd191cGRhdGVzICgpOwotIAkJcHVibGljIHZvaWQgdXBkYXRlX3Jl c291cmNlX3NjYWxlcyAoKTsKLUBAIC03MTIyLDIwICs2OTE2LDE0IEBAIG5hbWVzcGFjZSBDbHV0 dGVyIHsKLSAJCXB1YmxpYyBDbHV0dGVyLkNvbG9yIGNvbG9yIHsgZ2V0OyBzZXQ7IH0KLSAJCVtO b0FjY2Vzc29yTWV0aG9kXQotIAkJcHVibGljIGJvb2wgY3Vyc29yX3Zpc2libGUgeyBnZXQ7IHNl dDsgfQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTAiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLkZvZyBmb2cgeyBnZXQ7 IHNldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotIAkJcHVibGljIENsdXR0ZXIu QWN0b3Iga2V5X2ZvY3VzIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQi KV0KLS0JCXB1YmxpYyBib29sIG5vX2NsZWFyX2hpbnQgeyBnZXQ7IHNldDsgfQotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjAuOCIpXQotIAkJcHVibGljIENsdXR0ZXIuUGVyc3BlY3RpdmUgcGVyc3Bl Y3RpdmUgeyBnZXQ7IHNldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotIAkJcHVi bGljIHN0cmluZyB0aXRsZSB7IGdldDsgc2V0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4y IildCi0gCQlwdWJsaWMgYm9vbCB1c2VfYWxwaGEgeyBnZXQ7IHNldDsgfQotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIw LjYiKV0KLS0JCXB1YmxpYyBib29sIHVzZV9mb2cgeyBnZXQ7IHNldDsgfQotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjAuNiIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgYWN0aXZhdGUg KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yMCIpXQotQEAgLTcxNTgsOCArNjk0Niw2IEBA IG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLSAJCXB1 YmxpYyBHTGliLlNMaXN0PHdlYWsgQ2x1dHRlci5TdGFnZT4gbGlzdF9zdGFnZXMgKCk7Ci0gCQlw dWJsaWMgdW5vd25lZCBHTGliLlNMaXN0PENsdXR0ZXIuU3RhZ2U+IHBlZWtfc3RhZ2VzICgpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMiIs IHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2RlZmF1bHRfc3RhZ2UgKENsdXR0 ZXIuU3RhZ2Ugc3RhZ2UpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotIAkJcHVibGlj IENsdXR0ZXIuU3RhZ2UgZGVmYXVsdF9zdGFnZSB7IGdldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjAuOCIpXQotQEAgLTcyMDYsMTYgKzY5OTIsMTAgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewot IAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIi LCBzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyB1aW50IGdldF9kdXJhdGlvbiAoc3RyaW5nPyBz b3VyY2Vfc3RhdGVfbmFtZSwgc3RyaW5nPyB0YXJnZXRfc3RhdGVfbmFtZSk7Ci0gCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0g IjEuNCIpXQotLQkJcHVibGljIEdMaWIuTGlzdDx3ZWFrIENsdXR0ZXIuU3RhdGVLZXk+IGdldF9r ZXlzIChzdHJpbmc/IHNvdXJjZV9zdGF0ZV9uYW1lLCBzdHJpbmc/IHRhcmdldF9zdGF0ZV9uYW1l LCBHTGliLk9iamVjdD8gb2JqZWN0LCBzdHJpbmc/IHByb3BlcnR5X25hbWUpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9 ICIxLjQiKV0KLSAJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfc3RhdGUgKCk7Ci0gCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNl ID0gIjEuNCIpXQotIAkJcHVibGljIEdMaWIuTGlzdDx3ZWFrIHN0cmluZz4gZ2V0X3N0YXRlcyAo KTsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlRpbWVsaW5l IGdldF90aW1lbGluZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCByZW1v dmVfa2V5IChzdHJpbmc/IHNvdXJjZV9zdGF0ZV9uYW1lLCBzdHJpbmc/IHRhcmdldF9zdGF0ZV9u YW1lLCBHTGliLk9iamVjdD8gb2JqZWN0LCBzdHJpbmc/IHByb3BlcnR5X25hbWUpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5j ZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9kdXJhdGlvbiAoc3RyaW5nPyBzb3VyY2Vf c3RhdGVfbmFtZSwgc3RyaW5nPyB0YXJnZXRfc3RhdGVfbmFtZSwgdWludCBkdXJhdGlvbik7Ci0g CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIs IHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5TdGF0ZSBzZXRfa2V5 IChzdHJpbmc/IHNvdXJjZV9zdGF0ZV9uYW1lLCBzdHJpbmcgdGFyZ2V0X3N0YXRlX25hbWUsIEdM aWIuT2JqZWN0IG9iamVjdCwgc3RyaW5nIHByb3BlcnR5X25hbWUsIHVpbnQgbW9kZSwgR0xpYi5W YWx1ZSB2YWx1ZSwgZG91YmxlIHByZV9kZWxheSwgZG91YmxlIHBvc3RfZGVsYXkpOwotQEAgLTcy MzYsMjQgKzcwMTYsOCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCVtDb21wYWN0XQotIAlbVmVy c2lvbiAoc2luY2UgPSAiMS40IildCi0gCXB1YmxpYyBjbGFzcyBTdGF0ZUtleSB7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNl ID0gIjEuNCIpXQotLQkJcHVibGljIHVsb25nIGdldF9tb2RlICgpOwotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQi KV0KLS0JCXB1YmxpYyB1bm93bmVkIEdMaWIuT2JqZWN0IGdldF9vYmplY3QgKCk7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNl ID0gIjEuNCIpXQotLQkJcHVibGljIGRvdWJsZSBnZXRfcG9zdF9kZWxheSAoKTsKLS0JCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2Ug PSAiMS40IildCi0tCQlwdWJsaWMgZG91YmxlIGdldF9wcmVfZGVsYXkgKCk7Ci0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0g IjEuNCIpXQotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9wcm9wZXJ0eV9uYW1lICgpOwot IAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIi LCBzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyBHTGliLlR5cGUgZ2V0X3Byb3BlcnR5X3R5cGUg KCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9zb3Vy Y2Vfc3RhdGVfbmFtZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdW5vd25lZCBz dHJpbmcgZ2V0X3RhcmdldF9zdGF0ZV9uYW1lICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1 YmxpYyBib29sIGdldF92YWx1ZSAoR0xpYi5WYWx1ZSB2YWx1ZSk7Ci0gCX0KLSAJW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVy X3N3aXBlX2FjdGlvbl9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS44Iild Ci1AQCAtNzI2NSw1MyArNzAyOSw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9u IChzaW5jZSA9ICIxLjE0IildCi0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgYm9vbCBzd2lwZSAo Q2x1dHRlci5BY3RvciBhY3RvciwgQ2x1dHRlci5Td2lwZURpcmVjdGlvbiBkaXJlY3Rpb24pOwot IAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5 cGVfaWQgPSAiY2x1dHRlcl90YWJsZV9sYXlvdXRfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIx LjQiKV0KLS0JcHVibGljIGNsYXNzIFRhYmxlTGF5b3V0IDogQ2x1dHRlci5MYXlvdXRNYW5hZ2Vy IHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNs dXR0ZXJMYXlvdXRNYW5hZ2VyKiIpXQotLQkJcHVibGljIFRhYmxlTGF5b3V0ICgpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5j ZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9hbGlnbm1lbnQgKENsdXR0ZXIuQWN0b3Ig YWN0b3IsIG91dCBDbHV0dGVyLlRhYmxlQWxpZ25tZW50IHhfYWxpZ24sIG91dCBDbHV0dGVyLlRh YmxlQWxpZ25tZW50IHlfYWxpZ24pOwotLQkJcHVibGljIGludCBnZXRfY29sdW1uX2NvdW50ICgp OwotLQkJcHVibGljIHVpbnQgZ2V0X2NvbHVtbl9zcGFjaW5nICgpOwotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQi KV0KLS0JCXB1YmxpYyB1aW50IGdldF9lYXNpbmdfZHVyYXRpb24gKCk7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEu NCIpXQotLQkJcHVibGljIHVsb25nIGdldF9lYXNpbmdfbW9kZSAoKTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40 IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfZXhwYW5kIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBvdXQg Ym9vbCB4X2V4cGFuZCwgb3V0IGJvb2wgeV9leHBhbmQpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0J CXB1YmxpYyB2b2lkIGdldF9maWxsIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBvdXQgYm9vbCB4X2Zp bGwsIG91dCBib29sIHlfZmlsbCk7Ci0tCQlwdWJsaWMgaW50IGdldF9yb3dfY291bnQgKCk7Ci0t CQlwdWJsaWMgdWludCBnZXRfcm93X3NwYWNpbmcgKCk7Ci0tCQlwdWJsaWMgdm9pZCBnZXRfc3Bh biAoQ2x1dHRlci5BY3RvciBhY3Rvciwgb3V0IGludCBjb2x1bW5fc3Bhbiwgb3V0IGludCByb3df c3Bhbik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIGJvb2wgZ2V0X3VzZV9hbmltYXRp b25zICgpOwotLQkJcHVibGljIHZvaWQgcGFjayAoQ2x1dHRlci5BY3RvciBhY3RvciwgaW50IGNv bHVtbiwgaW50IHJvdyk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2Fs aWdubWVudCAoQ2x1dHRlci5BY3RvciBhY3RvciwgQ2x1dHRlci5UYWJsZUFsaWdubWVudCB4X2Fs aWduLCBDbHV0dGVyLlRhYmxlQWxpZ25tZW50IHlfYWxpZ24pOwotLQkJcHVibGljIHZvaWQgc2V0 X2NvbHVtbl9zcGFjaW5nICh1aW50IHNwYWNpbmcpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1 YmxpYyB2b2lkIHNldF9lYXNpbmdfZHVyYXRpb24gKHVpbnQgbXNlY3MpOwotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIx LjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9lYXNpbmdfbW9kZSAodWxvbmcgbW9kZSk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNp bmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2V4cGFuZCAoQ2x1dHRlci5BY3RvciBh Y3RvciwgYm9vbCB4X2V4cGFuZCwgYm9vbCB5X2V4cGFuZCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQot LQkJcHVibGljIHZvaWQgc2V0X2ZpbGwgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIGJvb2wgeF9maWxs LCBib29sIHlfZmlsbCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfcm93X3NwYWNpbmcgKHVpbnQgc3Bh Y2luZyk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfc3BhbiAoQ2x1dHRlci5BY3RvciBhY3RvciwgaW50 IGNvbHVtbl9zcGFuLCBpbnQgcm93X3NwYW4pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1Ymxp YyB2b2lkIHNldF91c2VfYW5pbWF0aW9ucyAoYm9vbCBhbmltYXRlKTsKLS0JCXB1YmxpYyB1aW50 IGNvbHVtbl9zcGFjaW5nIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJs aWMgdWludCBlYXNpbmdfZHVyYXRpb24geyBnZXQ7IHNldDsgfQotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0K LS0JCXB1YmxpYyB1bG9uZyBlYXNpbmdfbW9kZSB7IGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMgdWlu dCByb3dfc3BhY2luZyB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGlj IGJvb2wgdXNlX2FuaW1hdGlvbnMgeyBnZXQ7IHNldDsgfQotLQl9Ci0gCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl90YXBf YWN0aW9uX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0gCXB1 YmxpYyBjbGFzcyBUYXBBY3Rpb24gOiBDbHV0dGVyLkdlc3R1cmVBY3Rpb24gewotQEAgLTczMzks NyArNzA1Niw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBDbHV0dGVyLkNvbG9y IGdldF9jdXJzb3JfY29sb3IgKCk7Ci0gCQlwdWJsaWMgaW50IGdldF9jdXJzb3JfcG9zaXRpb24g KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNiIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2N1 cnNvcl9yZWN0IChvdXQgdW5vd25lZCBDbHV0dGVyLlJlY3QgcmVjdCk7Ci0rCQlwdWJsaWMgdm9p ZCBnZXRfY3Vyc29yX3JlY3QgKG91dCB1bm93bmVkIEdyYXBoZW5lLlJlY3QgcmVjdCk7Ci0gCQlw dWJsaWMgdWludCBnZXRfY3Vyc29yX3NpemUgKCk7Ci0gCQlwdWJsaWMgYm9vbCBnZXRfY3Vyc29y X3Zpc2libGUgKCk7Ci0gCQlwdWJsaWMgYm9vbCBnZXRfZWRpdGFibGUgKCk7Ci1AQCAtNzQ1OCw3 ICs3MTc1LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTYiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIGN1cnNvcl9jaGFuZ2VkICgpOwot IAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYi LCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIGN1cnNvcl9l dmVudCAoQ2x1dHRlci5HZW9tZXRyeSBnZW9tZXRyeSk7Ci0rCQlwdWJsaWMgdmlydHVhbCBzaWdu YWwgdm9pZCBjdXJzb3JfZXZlbnQgKEdyYXBoZW5lLlJlY3QgcmVjdCk7Ci0gCQlbSGFzRW1pdHRl cl0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJCXB1YmxpYyBzaWduYWwgdm9pZCBk ZWxldGVfdGV4dCAoaW50IHN0YXJ0X3BvcywgaW50IGVuZF9wb3MpOwotQEAgLTc0OTcsOTIgKzcy MTQsOSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgVGV4dE5vZGUgKFBhbmdvLkxh eW91dD8gbGF5b3V0LCBDbHV0dGVyLkNvbG9yPyBjb2xvcik7Ci0gCX0KLSAJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3Rl eHR1cmVfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotLQlwdWJs aWMgY2xhc3MgVGV4dHVyZSA6IENsdXR0ZXIuQWN0b3IsIEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRl ci5BbmltYXRhYmxlLCBDbHV0dGVyLkNvbnRhaW5lciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0J CVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJB Y3RvcioiKV0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgVGV4dHVyZSAoKTsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3RvcioiKV0KLS0JCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjgiLCBzaW5jZSA9 ICIwLjYiKV0KLS0JCXB1YmxpYyBUZXh0dXJlLmZyb21fYWN0b3IgKENsdXR0ZXIuQWN0b3IgYWN0 b3IpOwotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAi Q2x1dHRlckFjdG9yKiIpXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBUZXh0dXJlLmZy b21fZmlsZSAoc3RyaW5nIGZpbGVuYW1lKSB0aHJvd3MgQ2x1dHRlci5UZXh0dXJlRXJyb3I7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIp XQotLQkJcHVibGljIHZvaWQgZ2V0X2Jhc2Vfc2l6ZSAob3V0IGludCB3aWR0aCwgb3V0IGludCBo ZWlnaHQpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENvZ2wuSGFuZGxl IGdldF9jb2dsX21hdGVyaWFsICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyB1bm93 bmVkIENvZ2wuSGFuZGxlIGdldF9jb2dsX3RleHR1cmUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIpXQot LQkJcHVibGljIENsdXR0ZXIuVGV4dHVyZVF1YWxpdHkgZ2V0X2ZpbHRlcl9xdWFsaXR5ICgpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIi LCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBib29sIGdldF9rZWVwX2FzcGVjdF9yYXRpbyAo KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgYm9vbCBnZXRfbG9hZF9hc3luYyAoKTsK LS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEy Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgYm9vbCBnZXRfbG9hZF9kYXRhX2FzeW5jICgp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBpbnQgZ2V0X21heF90aWxlX3dhc3RlICgp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBib29sIGdldF9waWNrX3dpdGhfYWxwaGEg KCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X3JlcGVhdCAob3V0IGJv b2wgcmVwZWF0X3gsIG91dCBib29sIHJlcGVhdF95KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlw dWJsaWMgYm9vbCBnZXRfc3luY19zaXplICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1Ymxp YyBib29sIHNldF9hcmVhX2Zyb21fcmdiX2RhdGEgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFs c2UpXSB1aW50OFtdIGRhdGEsIGJvb2wgaGFzX2FscGhhLCBpbnQgeCwgaW50IHksIGludCB3aWR0 aCwgaW50IGhlaWdodCwgaW50IHJvd3N0cmlkZSwgaW50IGJwcCwgQ2x1dHRlci5UZXh0dXJlRmxh Z3MgZmxhZ3MpIHRocm93cyBHTGliLkVycm9yOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1Ymxp YyB2b2lkIHNldF9jb2dsX21hdGVyaWFsIChDb2dsLkhhbmRsZSBjb2dsX21hdGVyaWFsKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwg c2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfY29nbF90ZXh0dXJlIChDb2dsLkhh bmRsZSBjb2dsX3RleCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2Zp bHRlcl9xdWFsaXR5IChDbHV0dGVyLlRleHR1cmVRdWFsaXR5IGZpbHRlcl9xdWFsaXR5KTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwg c2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgYm9vbCBzZXRfZnJvbV9maWxlIChzdHJpbmcgZmls ZW5hbWUpIHRocm93cyBHTGliLkVycm9yOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyBi b29sIHNldF9mcm9tX3JnYl9kYXRhIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gdWlu dDhbXSBkYXRhLCBib29sIGhhc19hbHBoYSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgcm93 c3RyaWRlLCBpbnQgYnBwLCBDbHV0dGVyLlRleHR1cmVGbGFncyBmbGFncykgdGhyb3dzIEdMaWIu RXJyb3I7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMCIsIHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGljIGJvb2wgc2V0X2Zyb21feXV2X2Rh dGEgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSB1aW50OFtdIGRhdGEsIGludCB3aWR0 aCwgaW50IGhlaWdodCwgQ2x1dHRlci5UZXh0dXJlRmxhZ3MgZmxhZ3MpIHRocm93cyBHTGliLkVy cm9yOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9rZWVwX2FzcGVjdF9y YXRpbyAoYm9vbCBrZWVwX2FzcGVjdCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZv aWQgc2V0X2xvYWRfYXN5bmMgKGJvb2wgbG9hZF9hc3luYyk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQot LQkJcHVibGljIHZvaWQgc2V0X2xvYWRfZGF0YV9hc3luYyAoYm9vbCBsb2FkX2FzeW5jKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwg c2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfcGlja193aXRoX2FscGhhIChib29s IHBpY2tfd2l0aF9hbHBoYSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0 X3JlcGVhdCAoYm9vbCByZXBlYXRfeCwgYm9vbCByZXBlYXRfeSk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIp XQotLQkJcHVibGljIHZvaWQgc2V0X3N5bmNfc2l6ZSAoYm9vbCBzeW5jX3NpemUpOwotKwlwdWJs aWMgY2xhc3MgVGV4dHVyZSA6IENsdXR0ZXIuQWN0b3IgewotIAkJcHVibGljIENvZ2wuTWF0ZXJp YWwgY29nbF9tYXRlcmlhbCB7IGdldDsgc2V0OyB9Ci0gCQlwdWJsaWMgQ29nbC5UZXh0dXJlIGNv Z2xfdGV4dHVyZSB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1Ymxp YyBib29sIGRpc2FibGVfc2xpY2luZyB7IGdldDsgY29uc3RydWN0OyB9Ci0tCQlbTm9BY2Nlc3Nv ck1ldGhvZF0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgc3RyaW5nIGZpbGVuYW1lIHsgb3duZWQgZ2V0OyBzZXQ7 IH0KLS0JCXB1YmxpYyBDbHV0dGVyLlRleHR1cmVRdWFsaXR5IGZpbHRlcl9xdWFsaXR5IHsgZ2V0 OyBzZXQgY29uc3RydWN0OyB9Ci0tCQlwdWJsaWMgYm9vbCBrZWVwX2FzcGVjdF9yYXRpbyB7IGdl dDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIGJvb2wgbG9hZF9hc3luYyB7 IHNldDsgfQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBib29sIGxvYWRfZGF0YV9hc3lu YyB7IHNldDsgfQotLQkJcHVibGljIGJvb2wgcGlja193aXRoX2FscGhhIHsgZ2V0OyBzZXQ7IH0K LS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgcmVwZWF0X3ggeyBnZXQ7IHNl dDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgYm9vbCByZXBlYXRfeSB7IGdl dDsgc2V0OyB9Ci0tCQlwdWJsaWMgYm9vbCBzeW5jX3NpemUgeyBnZXQ7IHNldDsgfQotLQkJW05v QWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgaW50IHRpbGVfd2FzdGUgeyBnZXQ7IH0KLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBsb2FkX2ZpbmlzaGVk IChHTGliLkVycm9yIGVycm9yKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBw aXhidWZfY2hhbmdlICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIHNpemVf Y2hhbmdlIChpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl90ZXh0dXJl X25vZGVfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLUBAIC03 NjA4LDcgKzcyNDIsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS42IildCi0gCQlwdWJsaWMgYm9vbCBnZXRfYXV0b19yZXZlcnNlICgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBib29sIGdldF9jdWJpY19iZXppZXJfcHJv Z3Jlc3MgKENsdXR0ZXIuUG9pbnQgY18xLCBDbHV0dGVyLlBvaW50IGNfMik7Ci0rCQlwdWJsaWMg Ym9vbCBnZXRfY3ViaWNfYmV6aWVyX3Byb2dyZXNzIChHcmFwaGVuZS5Qb2ludCBjXzEsIEdyYXBo ZW5lLlBvaW50IGNfMik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGlj IGludCBnZXRfY3VycmVudF9yZXBlYXQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40Iild Ci1AQCAtNzY0NSw3ICs3Mjc5LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIHZvaWQgc2V0X2F1dG9fcmV2ZXJzZSAoYm9vbCBy ZXZlcnNlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgdm9pZCBz ZXRfY3ViaWNfYmV6aWVyX3Byb2dyZXNzIChDbHV0dGVyLlBvaW50IGNfMSwgQ2x1dHRlci5Qb2lu dCBjXzIpOwotKwkJcHVibGljIHZvaWQgc2V0X2N1YmljX2Jlemllcl9wcm9ncmVzcyAoR3JhcGhl bmUuUG9pbnQgY18xLCBHcmFwaGVuZS5Qb2ludCBjXzIpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjAuNCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2RlbGF5ICh1aW50IG1zZWNzKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIwLjYiKV0KLUBAIC03NzQ0LDYgKzczNzgsMTEgQEAgbmFtZXNwYWNlIENs dXR0ZXIgewotIAkJcHVibGljIGZsb2F0IHg7Ci0gCQlwdWJsaWMgZmxvYXQgeTsKLSAJfQotKwlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0g ImNsdXR0ZXJfdHJhbnNmb3JtX25vZGVfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNzIFRy YW5zZm9ybU5vZGUgOiBDbHV0dGVyLlBhaW50Tm9kZSB7Ci0rCQlbQ0NvZGUgKGhhc19jb25zdHJ1 Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyUGFpbnROb2RlKiIpXQotKwkJcHVi bGljIFRyYW5zZm9ybU5vZGUgKENvZ2wuTWF0cml4IHByb2plY3Rpb24pOwotKwl9Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1 dHRlcl90cmFuc2l0aW9uX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEw IildCi0gCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBUcmFuc2l0aW9uIDogQ2x1dHRlci5UaW1lbGlu ZSwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLUBAIC03NzgzLDcgKzc0MjIsNiBAQCBuYW1lc3BhY2Ug Q2x1dHRlciB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0g CQlwcm90ZWN0ZWQgVmlydHVhbElucHV0RGV2aWNlICgpOwotIAkJcHVibGljIGludCBnZXRfZGV2 aWNlX3R5cGUgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkRldmljZU1hbmFnZXIgZ2V0 X21hbmFnZXIgKCk7Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIG5vdGlmeV9hYnNvbHV0ZV9tb3Rp b24gKHVpbnQ2NCB0aW1lX3VzLCBkb3VibGUgeCwgZG91YmxlIHkpOwotIAkJcHVibGljIHZpcnR1 YWwgdm9pZCBub3RpZnlfYnV0dG9uICh1aW50NjQgdGltZV91cywgdWludDMyIGJ1dHRvbiwgQ2x1 dHRlci5CdXR0b25TdGF0ZSBidXR0b25fc3RhdGUpOwotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBu b3RpZnlfZGlzY3JldGVfc2Nyb2xsICh1aW50NjQgdGltZV91cywgQ2x1dHRlci5TY3JvbGxEaXJl Y3Rpb24gZGlyZWN0aW9uLCBDbHV0dGVyLlNjcm9sbFNvdXJjZSBzY3JvbGxfc291cmNlKTsKLUBA IC03Nzk0LDI1ICs3NDMyLDI1IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2aXJ0 dWFsIHZvaWQgbm90aWZ5X3RvdWNoX2Rvd24gKHVpbnQ2NCB0aW1lX3VzLCBpbnQgc2xvdCwgZG91 YmxlIHgsIGRvdWJsZSB5KTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgbm90aWZ5X3RvdWNoX21v dGlvbiAodWludDY0IHRpbWVfdXMsIGludCBzbG90LCBkb3VibGUgeCwgZG91YmxlIHkpOwotIAkJ cHVibGljIHZpcnR1YWwgdm9pZCBub3RpZnlfdG91Y2hfdXAgKHVpbnQ2NCB0aW1lX3VzLCBpbnQg c2xvdCk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBDbHV0dGVyLkRldmljZU1h bmFnZXIgZGV2aWNlX21hbmFnZXIgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotIAkJcHVibGlj IENsdXR0ZXIuSW5wdXREZXZpY2VUeXBlIGRldmljZV90eXBlIHsgZ2V0OyBjb25zdHJ1Y3Q7IH0K LSsJCVtOb0FjY2Vzc29yTWV0aG9kXQotKwkJcHVibGljIENsdXR0ZXIuU2VhdCBzZWF0IHsgb3du ZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfem9vbV9hY3Rpb25fZ2V0X3R5 cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSAJcHVibGljIGNsYXNzIFpv b21BY3Rpb24gOiBDbHV0dGVyLkdlc3R1cmVBY3Rpb24gewotIAkJW0NDb2RlIChoYXNfY29uc3Ry dWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckFjdGlvbioiKV0KLSAJCXB1Ymxp YyBab29tQWN0aW9uICgpOwotLQkJcHVibGljIHZvaWQgZ2V0X2ZvY2FsX3BvaW50IChDbHV0dGVy LlBvaW50IHBvaW50KTsKLS0JCXB1YmxpYyB2b2lkIGdldF90cmFuc2Zvcm1lZF9mb2NhbF9wb2lu dCAoQ2x1dHRlci5Qb2ludCBwb2ludCk7Ci0rCQlwdWJsaWMgdm9pZCBnZXRfZm9jYWxfcG9pbnQg KEdyYXBoZW5lLlBvaW50IHBvaW50KTsKLSsJCXB1YmxpYyB2b2lkIGdldF90cmFuc2Zvcm1lZF9m b2NhbF9wb2ludCAoR3JhcGhlbmUuUG9pbnQgcG9pbnQpOwotIAkJcHVibGljIENsdXR0ZXIuWm9v bUF4aXMgZ2V0X3pvb21fYXhpcyAoKTsKLSAJCXB1YmxpYyB2b2lkIHNldF96b29tX2F4aXMgKENs dXR0ZXIuWm9vbUF4aXMgYXhpcyk7Ci0gCQlwdWJsaWMgQ2x1dHRlci5ab29tQXhpcyB6b29tX2F4 aXMgeyBnZXQ7IHNldDsgfQotLQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIGJvb2wgem9vbSAoQ2x1 dHRlci5BY3RvciBhY3RvciwgQ2x1dHRlci5Qb2ludCBmb2NhbF9wb2ludCwgZG91YmxlIGZhY3Rv cik7Ci0rCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgYm9vbCB6b29tIChDbHV0dGVyLkFjdG9yIGFj dG9yLCBHcmFwaGVuZS5Qb2ludCBmb2NhbF9wb2ludCwgZG91YmxlIGZhY3Rvcik7Ci0gCX0KLSAJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9jbmFt ZSA9ICJDbHV0dGVyQW5pbWF0YWJsZUludGVyZmFjZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9hbmlt YXRhYmxlX2dldF90eXBlICgpIildCi0gCXB1YmxpYyBpbnRlcmZhY2UgQW5pbWF0YWJsZSA6IEdM aWIuT2JqZWN0IHsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjgiLCBzaW5jZSA9ICIxLjAiKV0KLSsJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMg YWJzdHJhY3QgYm9vbCBhbmltYXRlX3Byb3BlcnR5IChDbHV0dGVyLkFuaW1hdGlvbiBhbmltYXRp b24sIHN0cmluZyBwcm9wZXJ0eV9uYW1lLCBHTGliLlZhbHVlIGluaXRpYWxfdmFsdWUsIEdMaWIu VmFsdWUgZmluYWxfdmFsdWUsIGRvdWJsZSBwcm9ncmVzcywgR0xpYi5WYWx1ZSB2YWx1ZSk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMgYWJzdHJhY3QgdW5vd25lZCBH TGliLlBhcmFtU3BlYyBmaW5kX3Byb3BlcnR5IChzdHJpbmcgcHJvcGVydHlfbmFtZSk7Ci1AQCAt NzgzMCw4ICs3NDY4LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW0NDb2RlICh2ZnVuY19u YW1lID0gImFkZCIpXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjQiKV0KLSAJCXB1YmxpYyBhYnN0cmFjdCB2b2lk IGFkZF9hY3RvciAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNCIpXQotLQkJ cHVibGljIHZvaWQgYWRkX3ZhbGlzdCAoQ2x1dHRlci5BY3RvciBmaXJzdF9hY3RvciwgdmFfbGlz dCB2YXJfYXJncyk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0gCQlwdWJsaWMgdm9p ZCBjaGlsZF9nZXQgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIC4uLik7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMC44IildCi1AQCAtNzg1MywxMCArNzQ4OSw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsK LSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZmluZF9jaGlsZF9ieV9uYW1lIChzdHJp bmcgY2hpbGRfbmFtZSk7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfY29udGFpbmVyX2Ns YXNzX2ZpbmRfY2hpbGRfcHJvcGVydHkiKV0KLSAJCXB1YmxpYyBjbGFzcyB1bm93bmVkIEdMaWIu UGFyYW1TcGVjIGZpbmRfY2hpbGRfcHJvcGVydHkgKHN0cmluZyBwcm9wZXJ0eV9uYW1lKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwg c2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBAZm9yZWFjaCAoQ2x1dHRl ci5DYWxsYmFjayBjYWxsYmFjayk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZpcnR1 YWwgdm9pZCBmb3JlYWNoX3dpdGhfaW50ZXJuYWxzIChDbHV0dGVyLkNhbGxiYWNrIGNhbGxiYWNr KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHVub3du ZWQgQ2x1dHRlci5DaGlsZE1ldGEgZ2V0X2NoaWxkX21ldGEgKENsdXR0ZXIuQWN0b3IgYWN0b3Ip OwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTAiLCBzaW5jZSA9ICIwLjQiKV0KLUBAIC03ODc0LDggKzc1MDYsNiBAQCBuYW1lc3BhY2UgQ2x1 dHRlciB7Ci0gCQlbQ0NvZGUgKHZmdW5jX25hbWUgPSAicmVtb3ZlIildCi0gCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAu NCIpXQotIAkJcHVibGljIGFic3RyYWN0IHZvaWQgcmVtb3ZlX2FjdG9yIChDbHV0dGVyLkFjdG9y IGFjdG9yKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEwIiwgc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgdm9pZCByZW1vdmVfdmFsaXN0 IChDbHV0dGVyLkFjdG9yIGZpcnN0X2FjdG9yLCB2YV9saXN0IHZhcl9hcmdzKTsKLSAJCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2Ug PSAiMC42IildCi0gCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzb3J0X2RlcHRoX29yZGVyICgpOwot IAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgYWN0b3JfYWRkZWQgKENsdXR0ZXIuQWN0b3Ig YWN0b3IpOwotQEAgLTc4OTIsNyArNzUyMiw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1 YmxpYyBhYnN0cmFjdCB2b2lkIGludmFsaWRhdGUgKCk7Ci0gCQlwdWJsaWMgYWJzdHJhY3Qgdm9p ZCBpbnZhbGlkYXRlX3NpemUgKCk7Ci0gCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIGFic3RyYWN0 IHZvaWQgcGFpbnRfY29udGVudCAoQ2x1dHRlci5BY3RvciBhY3RvciwgQ2x1dHRlci5QYWludE5v ZGUgbm9kZSk7Ci0rCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBwYWludF9jb250ZW50IChDbHV0dGVy LkFjdG9yIGFjdG9yLCBDbHV0dGVyLlBhaW50Tm9kZSBub2RlLCBDbHV0dGVyLlBhaW50Q29udGV4 dCBwYWludF9jb250ZXh0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJs aWMgdmlydHVhbCBzaWduYWwgdm9pZCBhdHRhY2hlZCAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotQEAgLTc5MDgsMTAgKzc1MzgsNiBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0 ZXIvY2x1dHRlci5oIildCi0gCXB1YmxpYyBpbnRlcmZhY2UgU3RhZ2VXaW5kb3cgOiBHTGliLk9i amVjdCB7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIGFic3RyYWN0IHZvaWQgYWRkX3JlZHJh d19jbGlwIChDbHV0dGVyLkdlb21ldHJ5IHN0YWdlX3JlY3RhbmdsZSk7Ci0tCQlbTm9XcmFwcGVy XQotLQkJcHVibGljIGFic3RyYWN0IHZvaWQgZ2V0X2dlb21ldHJ5IChDbHV0dGVyLkdlb21ldHJ5 IGdlb21ldHJ5KTsKLSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgYWJzdHJhY3QgaW50IGdldF9w ZW5kaW5nX3N3YXBzICgpOwotIAkJW05vV3JhcHBlcl0KLUBAIC03OTM5LDE0ICs3NTY1LDE2IEBA IG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgYWJzdHJhY3Qg dm9pZCB1bnJlYWxpemUgKCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJDTFVUVEVSX1RZUEVfQUNUT1JfQk9YIildCi0r CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNvcHlfZnVu Y3Rpb24gPSAiZ19ib3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0 eXBlX2lkID0gImNsdXR0ZXJfYWN0b3JfYm94X2dldF90eXBlICgpIildCi0gCXB1YmxpYyBzdHJ1 Y3QgQWN0b3JCb3ggewotIAkJcHVibGljIGZsb2F0IHgxOwotIAkJcHVibGljIGZsb2F0IHkxOwot IAkJcHVibGljIGZsb2F0IHgyOwotIAkJcHVibGljIGZsb2F0IHkyOwotKwkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTIiKV0KLSsJCXB1YmxpYyBzdGF0aWMgQ2x1dHRlci5BY3RvckJveD8gYWxsb2Mg KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdm9pZCBjbGFtcF90 b19waXhlbCAoKTsKLSsJCXB1YmxpYyBzdGF0aWMgdm9pZCBjbGFtcF90b19waXhlbCAocmVmIENs dXR0ZXIuQWN0b3JCb3ggYm94KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1 YmxpYyBib29sIGNvbnRhaW5zIChmbG9hdCB4LCBmbG9hdCB5KTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLUBAIC03OTU1LDggKzc1ODMsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0g CQlwdWJsaWMgYm9vbCBlcXVhbCAoQ2x1dHRlci5BY3RvckJveCBib3hfYik7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotLQkJW0NDb2RlIChj bmFtZSA9ICJjbHV0dGVyX2FjdG9yX2JveF9mcm9tX3ZlcnRpY2VzIildCi0tCQlwdWJsaWMgQWN0 b3JCb3guZnJvbV92ZXJ0aWNlcyAoQ2x1dHRlci5WZXJ0ZXhbXSB2ZXJ0cyk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgZmxvYXQgZ2V0X2FyZWEgKCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4wIildCi1AQCAtODAwMiw3ICs3NjI4LDcgQEAgbmFtZXNwYWNlIENs dXR0ZXIgewotIAkJcHVibGljIHdlYWsgQ2Fpcm8uU3VyZmFjZSBpbWFnZTsKLSAJCXB1YmxpYyBD YWlyby5SZWN0YW5nbGVJbnQgcmVjdDsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gIkNMVVRURVJfVFlQRV9DT0xPUiIpXQot KwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5X2Z1 bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwg dHlwZV9pZCA9ICJDTFVUVEVSX1RZUEVfQ09MT1IiKV0KLSAJcHVibGljIHN0cnVjdCBDb2xvciB7 Ci0gCQlwdWJsaWMgdWludDggcmVkOwotIAkJcHVibGljIHVpbnQ4IGdyZWVuOwotQEAgLTgwNDEs MjQgKzc2NjcsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MC4yIildCi0gCQlwdWJsaWMgc3RyaW5nIHRvX3N0cmluZyAoKTsKLSAJfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJf Zm9nX2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC42IildCi0tCXB1YmxpYyBzdHJ1Y3QgRm9n IHsKLS0JCXB1YmxpYyBmbG9hdCB6X25lYXI7Ci0tCQlwdWJsaWMgZmxvYXQgel9mYXI7Ci0tCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9p ZCA9ICJjbHV0dGVyX2dlb21ldHJ5X2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdHJ1Y3Qg R2VvbWV0cnkgewotLQkJcHVibGljIGludCB4OwotLQkJcHVibGljIGludCB5OwotLQkJcHVibGlj IHVpbnQgd2lkdGg7Ci0tCQlwdWJsaWMgdWludCBoZWlnaHQ7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS40IildCi0tCQlwdWJsaWMgYm9vbCBpbnRlcnNlY3RzIChDbHV0dGVyLkdlb21ldHJ5IGdl b21ldHJ5MSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgQ2x1dHRl ci5HZW9tZXRyeSB1bmlvbiAoQ2x1dHRlci5HZW9tZXRyeSBnZW9tZXRyeV9iKTsKLS0JfQotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBoYXNfdHlwZV9p ZCA9IGZhbHNlKV0KLSAJcHVibGljIHN0cnVjdCBLYmRBMTF5U2V0dGluZ3MgewotIAkJcHVibGlj IENsdXR0ZXIuS2V5Ym9hcmRBMTF5RmxhZ3MgY29udHJvbHM7Ci1AQCAtODA2OSw3ICs3Njc3LDcg QEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGludCBtb3VzZWtleXNfbWF4X3NwZWVk OwotIAkJcHVibGljIGludCBtb3VzZWtleXNfYWNjZWxfdGltZTsKLSAJfQotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJf a25vdF9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rp b24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2tub3RfZ2V0X3R5cGUgKCki KV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotIAlwdWJsaWMgc3RydWN0IEtub3Qgewot IAkJcHVibGljIGludCB4OwotQEAgLTgxMjEsNyArNzcyOSw3IEBAIG5hbWVzcGFjZSBDbHV0dGVy IHsKLSAJCXB1YmxpYyBkb3VibGUgdmFsdWU7Ci0gCQlwdWJsaWMgdWludDMyIG1vZGU7Ci0gCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9p ZCA9ICJjbHV0dGVyX3BhdGhfbm9kZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRf Y29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0dGVy X3BhdGhfbm9kZV9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0g CXB1YmxpYyBzdHJ1Y3QgUGF0aE5vZGUgewotIAkJcHVibGljIENsdXR0ZXIuUGF0aE5vZGVUeXBl IHR5cGU7Ci1AQCAtODEzMSw3ICs3NzM5LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVi bGljIGJvb2wgZXF1YWwgKENsdXR0ZXIuUGF0aE5vZGUgbm9kZV9iKTsKLSAJCXB1YmxpYyB2b2lk IGZyZWUgKCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BlcnNwZWN0aXZlX2dldF90eXBlICgpIildCi0r CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNvcHlfZnVu Y3Rpb24gPSAiZ19ib3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0 eXBlX2lkID0gImNsdXR0ZXJfcGVyc3BlY3RpdmVfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24g KHNpbmNlID0gIjAuNCIpXQotIAlwdWJsaWMgc3RydWN0IFBlcnNwZWN0aXZlIHsKLSAJCXB1Ymxp YyBmbG9hdCBmb3Z5OwotQEAgLTgxNjIsNyArNzc3MCw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsK LSAJCXB1YmxpYyB3ZWFrIENsdXR0ZXIuQWN0b3Igc291cmNlOwotIAkJcHVibGljIHdlYWsgQ2x1 dHRlci5JbnB1dERldmljZSBkZXZpY2U7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJDTFVUVEVSX1RZUEVfVU5JVFMiKV0K LSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY29weV9m dW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIs IHR5cGVfaWQgPSAiQ0xVVFRFUl9UWVBFX1VOSVRTIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIx LjAiKV0KLSAJcHVibGljIHN0cnVjdCBVbml0cyB7Ci0gCQlwdWJsaWMgQ2x1dHRlci5Vbml0cz8g Y29weSAoKTsKLUBAIC04MTg2LDIzICs3Nzk0LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJ cHVibGljIGZsb2F0IHRvX3BpeGVscyAoKTsKLSAJCXB1YmxpYyBzdHJpbmcgdG9fc3RyaW5nICgp OwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIs IHR5cGVfaWQgPSAiY2x1dHRlcl92ZXJ0ZXhfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKHNp bmNlID0gIjAuNCIpXQotLQlwdWJsaWMgc3RydWN0IFZlcnRleCB7Ci0tCQlwdWJsaWMgZmxvYXQg eDsKLS0JCXB1YmxpYyBmbG9hdCB5OwotLQkJcHVibGljIGZsb2F0IHo7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGljIHN0YXRpYyBDbHV0dGVyLlZlcnRleD8gYWxsb2Mg KCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQ2x1dHRlci5WZXJ0 ZXg/IGNvcHkgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgYm9v bCBlcXVhbCAoQ2x1dHRlci5WZXJ0ZXggdmVydGV4X2IpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMCIpXQotLQkJcHVibGljIHZvaWQgZnJlZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEwIildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlZlcnRleD8gaW5pdCAoZmxvYXQgeCwg ZmxvYXQgeSwgZmxvYXQgeik7Ci0tCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX0FDVE9SX0FMSUdOXyIsIHR5cGVf aWQgPSAiY2x1dHRlcl9hY3Rvcl9hbGlnbl9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMCIpXQotIAlwdWJsaWMgZW51bSBBY3RvckFsaWduIHsKLUBAIC04MzQwLDYgKzc5 MzEsMjcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJWV9BWElTLAotIAkJQk9USAotIAl9Ci0r CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXgg PSAiQ0xVVFRFUl9ERUJVR18iLCB0eXBlX2lkID0gImNsdXR0ZXJfZGVidWdfZmxhZ19nZXRfdHlw ZSAoKSIpXQotKwlbRmxhZ3NdCi0rCXB1YmxpYyBlbnVtIERlYnVnRmxhZyB7Ci0rCQlNSVNDLAot KwkJQUNUT1IsCi0rCQlURVhUVVJFLAotKwkJRVZFTlQsCi0rCQlQQUlOVCwKLSsJCVBBTkdPLAot KwkJQkFDS0VORCwKLSsJCVNDSEVEVUxFUiwKLSsJCVNDUklQVCwKLSsJCVNIQURFUiwKLSsJCU1V TFRJU1RBR0UsCi0rCQlBTklNQVRJT04sCi0rCQlMQVlPVVQsCi0rCQlQSUNLLAotKwkJRVZFTlRM T09QLAotKwkJQ0xJUFBJTkcsCi0rCQlPT0JfVFJBTlNGT1JNUwotKwl9Ci0gCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9E UkFHXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9kcmFnX2F4aXNfZ2V0X3R5cGUgKCkiKV0KLSAJW1Zl cnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAlwdWJsaWMgZW51bSBEcmFnQXhpcyB7Ci1AQCAtODM0 Nyw2ICs3OTU5LDE5IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVhfQVhJUywKLSAJCVlfQVhJ UwotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIs IGNwcmVmaXggPSAiQ0xVVFRFUl9ERUJVR18iLCB0eXBlX2lkID0gImNsdXR0ZXJfZHJhd19kZWJ1 Z19mbGFnX2dldF90eXBlICgpIildCi0rCVtGbGFnc10KLSsJcHVibGljIGVudW0gRHJhd0RlYnVn RmxhZyB7Ci0rCQlESVNBQkxFX1NXQVBfRVZFTlRTLAotKwkJRElTQUJMRV9DTElQUEVEX1JFRFJB V1MsCi0rCQlSRURSQVdTLAotKwkJUEFJTlRfVk9MVU1FUywKLSsJCURJU0FCTEVfQ1VMTElORywK LSsJCURJU0FCTEVfT0ZGU0NSRUVOX1JFRElSRUNULAotKwkJQ09OVElOVU9VU19SRURSQVcsCi0r CQlQQUlOVF9ERUZPUk1fVElMRVMsCi0rCQlQQUlOVF9EQU1BR0VfUkVHSU9OCi0rCX0KLSAJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJD TFVUVEVSX0VGRkVDVF9QQUlOVF9BQ1RPUl8iLCB0eXBlX2lkID0gImNsdXR0ZXJfZWZmZWN0X3Bh aW50X2ZsYWdzX2dldF90eXBlICgpIildCi0gCVtGbGFnc10KLSAJcHVibGljIGVudW0gRWZmZWN0 UGFpbnRGbGFncyB7Ci1AQCAtODM5OCw4ICs4MDIzLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewot IAlwdWJsaWMgZW51bSBGZWF0dXJlRmxhZ3MgewotIAkJVEVYVFVSRV9OUE9ULAotIAkJU1dBUF9U SFJPVFRMRSwKLS0JCVRFWFRVUkVfWVVWLAotLQkJVEVYVFVSRV9SRUFEX1BJWEVMUywKLSAJCVNU QUdFX1NUQVRJQywKLSAJCVNUQUdFX0NVUlNPUiwKLSAJCVNIQURFUlNfR0xTTCwKLUBAIC04NjU3 LDYgKzgyODAsMTEgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJUkVMX0xJTkVfVE8sCi0gCQlS RUxfQ1VSVkVfVE8KLSAJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9j bHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfREVCVUdfTk9QXyIsIHR5cGVfaWQgPSAiY2x1 dHRlcl9waWNrX2RlYnVnX2ZsYWdfZ2V0X3R5cGUgKCkiKV0KLSsJW0ZsYWdzXQotKwlwdWJsaWMg ZW51bSBQaWNrRGVidWdGbGFnIHsKLSsJCVBJQ0tJTkcKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfUElDS18i LCB0eXBlX2lkID0gImNsdXR0ZXJfcGlja19tb2RlX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9u IChzaW5jZSA9ICIxLjAiKV0KLSAJcHVibGljIGVudW0gUGlja01vZGUgewotQEAgLTg4NTEsMTMg Kzg0NzksNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlMRUZULAotIAkJUklHSFQKLSAJfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4 ID0gIkNMVVRURVJfVEFCTEVfQUxJR05NRU5UXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl90YWJsZV9h bGlnbm1lbnRfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMjIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JcHVibGljIGVudW0g VGFibGVBbGlnbm1lbnQgewotLQkJU1RBUlQsCi0tCQlDRU5URVIsCi0tCQlFTkQKLS0JfQotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0g IkNMVVRURVJfVEVYVF9ESVJFQ1RJT05fIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3RleHRfZGlyZWN0 aW9uX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJcHVibGlj IGVudW0gVGV4dERpcmVjdGlvbiB7Ci1AQCAtODkzMywyOCArODU1NCwxOSBAQCBuYW1lc3BhY2Ug Q2x1dHRlciB7Ci0gCQlWQUxVRTsKLSAJCXB1YmxpYyBzdGF0aWMgR0xpYi5RdWFyayBxdWFyayAo KTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgi LCBjcHJlZml4ID0gIkNMVVRURVJfVEVYVFVSRV9FUlJPUl8iKV0KLS0JW1ZlcnNpb24gKHNpbmNl ID0gIjAuNCIpXQotLQlwdWJsaWMgZXJyb3Jkb21haW4gVGV4dHVyZUVycm9yIHsKLS0JCU9VVF9P Rl9NRU1PUlksCi0tCQlOT19ZVVYsCi0tCQlCQURfRk9STUFUOwotLQkJcHVibGljIHN0YXRpYyBH TGliLlF1YXJrIHF1YXJrICgpOwotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj bHV0dGVyL2NsdXR0ZXIuaCIsIGluc3RhbmNlX3BvcyA9IDEuOSldCi0gCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjI0IildCi0gCXB1YmxpYyBkZWxlZ2F0ZSBDbHV0dGVyLkFjdG9yIEFjdG9yQ3JlYXRl Q2hpbGRGdW5jIChHTGliLk9iamVjdCBpdGVtKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSAJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIw LjIiKV0KLSAJcHVibGljIGRlbGVnYXRlIGRvdWJsZSBBbHBoYUZ1bmMgKENsdXR0ZXIuQWxwaGEg YWxwaGEpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgi LCBpbnN0YW5jZV9wb3MgPSAyLjkpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS42Iiwgc2luY2UgPSAiMC4yIildCi0tCXB1YmxpYyBkZWxlZ2F0 ZSB2b2lkIEJlaGF2aW91ckZvcmVhY2hGdW5jIChDbHV0dGVyLkJlaGF2aW91ciBiZWhhdmlvdXIs IENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1 dHRlci9jbHV0dGVyLmgiLCBpbnN0YW5jZV9wb3MgPSA0LjkpXQotIAlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0gCXB1YmxpYyBkZWxlZ2F0ZSBib29sIEJpbmRpbmdBY3Rpb25GdW5jIChHTGli Lk9iamVjdCBnb2JqZWN0LCBzdHJpbmcgYWN0aW9uX25hbWUsIHVpbnQga2V5X3ZhbCwgQ2x1dHRl ci5Nb2RpZmllclR5cGUgbW9kaWZpZXJzKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNsdXR0ZXIvY2x1dHRlci5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSAJcHVibGljIGRlbGVn YXRlIHZvaWQgQ2FsbGJhY2sgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotKwlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBoYXNfdGFyZ2V0ID0gZmFsc2UpXQot KwlwdWJsaWMgZGVsZWdhdGUgdm9pZCBFbWl0SW5wdXREZXZpY2VFdmVudCAoQ2x1dHRlci5FdmVu dCBldmVudCwgQ2x1dHRlci5JbnB1dERldmljZSBkZXZpY2UpOwotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBpbnN0YW5jZV9wb3MgPSAxLjkpXQotIAlb VmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotIAlwdWJsaWMgZGVsZWdhdGUgYm9vbCBFdmVudEZp bHRlckZ1bmMgKENsdXR0ZXIuRXZlbnQgZXZlbnQpOwotQEAgLTg5ODUsOSArODU5Nyw2IEBAIG5h bWVzcGFjZSBDbHV0dGVyIHsKLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotIAlwdWJsaWMg Y29uc3QgaW50IFBSSU9SSVRZX1JFRFJBVzsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0tCXB1 YmxpYyBzdGF0aWMgQ2x1dHRlci5BY3RvckJveD8gYWN0b3JfYm94X2FsbG9jICgpOwotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJcHVibGljIHN0 YXRpYyB2b2lkIGJhc2VfaW5pdCAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi1AQCAtOTA1 MSw5ICs4NjYwLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAlbVmVyc2lvbiAoc2luY2UgPSAi MS4wIildCi0gCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBQYW5nby5Gb250TWFwIGdldF9mb250X21h cCAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIild Ci0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JcHVibGljIHN0YXRpYyB1bm93bmVkIENs dXR0ZXIuQWN0b3IgZ2V0X2tleWJvYXJkX2dyYWIgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMC4yIild Ci0gCXB1YmxpYyBzdGF0aWMgR0xpYi5PcHRpb25Hcm91cCBnZXRfb3B0aW9uX2dyb3VwICgpOwot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLUBAIC05 MDYxLDE3ICs4NjY3LDggQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAlwdWJsaWMgc3RhdGljIEdM aWIuT3B0aW9uR3JvdXAgZ2V0X29wdGlvbl9ncm91cF93aXRob3V0X2luaXQgKCk7Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotIAlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0tCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdl dF9wb2ludGVyX2dyYWIgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVy L2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0gCXB1YmxpYyBzdGF0 aWMgdW5vd25lZCBzdHJpbmcgZ2V0X3NjcmlwdF9pZCAoR0xpYi5PYmplY3QgZ29iamVjdCk7Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVy c2lvbiAoc2luY2UgPSAiMC42IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBncmFiX2tleWJvYXJk IChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JcHVibGlj IHN0YXRpYyB2b2lkIGdyYWJfcG9pbnRlciAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotIAlwdWJsaWMgc3Rh dGljIENsdXR0ZXIuSW5pdEVycm9yIGluaXQgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0g ImFyZ2MiLCBhcnJheV9sZW5ndGhfcG9zID0gMC41KV0gcmVmIHVub3duZWQgc3RyaW5nW10/IGFy Z3YpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0K LSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotQEAgLTkwODcsMjkgKzg2ODQsNiBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2Ns dXR0ZXIuaCIpXQotIAlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X2N1c3RvbV9iYWNrZW5kX2Z1bmMg KHZvaWQqIGZ1bmMpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0 dGVyLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0JcHVibGljIHN0YXRpYyB2 b2lkIHRlc3RfYWRkX2RhdGFfZnVsbCAoc3RyaW5nIHRlc3RfcGF0aCwgb3duZWQgR0xpYi5UZXN0 RGF0YUZ1bmMgdGVzdF9mdW5jKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0 ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0tCXB1YmxpYyBz dGF0aWMgYm9vbCB0ZXN0X2NoZWNrX2FjdG9yX2F0X3BvaW50IChDbHV0dGVyLkFjdG9yIHN0YWdl LCBDbHV0dGVyLlBvaW50IHBvaW50LCBDbHV0dGVyLkFjdG9yIGFjdG9yLCBvdXQgQ2x1dHRlci5B Y3Rvcj8gcmVzdWx0KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0tCXB1YmxpYyBzdGF0aWMg Ym9vbCB0ZXN0X2NoZWNrX2NvbG9yX2F0X3BvaW50IChDbHV0dGVyLkFjdG9yIHN0YWdlLCBDbHV0 dGVyLlBvaW50IHBvaW50LCBDbHV0dGVyLkNvbG9yIGNvbG9yLCBvdXQgQ2x1dHRlci5Db2xvciBy ZXN1bHQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgi KV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0JcHVibGljIHN0YXRpYyB1bm93bmVk IENsdXR0ZXIuQWN0b3IgdGVzdF9nZXRfc3RhZ2UgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdGVzdF9p bml0IChpbnQgYXJnYywgc3RyaW5nIGFyZ3YpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0J cHVibGljIHN0YXRpYyBpbnQgdGVzdF9ydW4gKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0t CXB1YmxpYyBzdGF0aWMgdm9pZCB1bmdyYWJfa2V5Ym9hcmQgKCk7Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAi MC42IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB1bmdyYWJfcG9pbnRlciAoKTsKLS0JW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0gCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEwIildCi0gCXB1YmxpYyBzdGF0aWMgdWludCB1bmljb2RlX3RvX2tleXN5bSAo dWludDMyIHdjKTsKLSB9Ci1kaWZmIC0tZ2l0IHZhcGkvbXV0dGVyLWNsdXR0ZXItNC5kZXBzIHZh cGkvbXV0dGVyLWNsdXR0ZXItNy5kZXBzCi1zaW1pbGFyaXR5IGluZGV4IDU0JQotcmVuYW1lIGZy b20gdmFwaS9tdXR0ZXItY2x1dHRlci00LmRlcHMKLXJlbmFtZSB0byB2YXBpL211dHRlci1jbHV0 dGVyLTcuZGVwcwotaW5kZXggOTUwOTQwMjYuLjZiZDFjY2Y3IDEwMDY0NAotLS0tIHZhcGkvbXV0 dGVyLWNsdXR0ZXItNC5kZXBzCi0rKysgdmFwaS9tdXR0ZXItY2x1dHRlci03LmRlcHMKLUBAIC0x LDUgKzEsNCBAQAotIGF0awotIGNhaXJvCi0ganNvbi1nbGliLTEuMAotLW11dHRlci1jb2dsLTQK LS1wYW5nbwotK211dHRlci1jb2dsLTcKLWRpZmYgLS1naXQgdmFwaS9tdXR0ZXItY2x1dHRlci00 LnZhcGkgdmFwaS9tdXR0ZXItY2x1dHRlci03LnZhcGkKLXNpbWlsYXJpdHkgaW5kZXggODYlCi1y ZW5hbWUgZnJvbSB2YXBpL211dHRlci1jbHV0dGVyLTQudmFwaQotcmVuYW1lIHRvIHZhcGkvbXV0 dGVyLWNsdXR0ZXItNy52YXBpCi1pbmRleCBjOGExZDIzYi4uYWVhNmEzMWEgMTAwNjQ0Ci0tLS0g dmFwaS9tdXR0ZXItY2x1dHRlci00LnZhcGkKLSsrKyB2YXBpL211dHRlci1jbHV0dGVyLTcudmFw aQotQEAgLTEsNiArMSw2IEBACi0tLyogbXV0dGVyLWNsdXR0ZXItNC52YXBpIGdlbmVyYXRlZCBi eSB2YXBpZ2VuLCBkbyBub3QgbW9kaWZ5LiAqLwotKy8qIG11dHRlci1jbHV0dGVyLTcudmFwaSBn ZW5lcmF0ZWQgYnkgdmFwaWdlbiwgZG8gbm90IG1vZGlmeS4gKi8KLSAKLS1bQ0NvZGUgKGNwcmVm aXggPSAiQ2x1dHRlciIsIGdpcl9uYW1lc3BhY2UgPSAiQ2x1dHRlciIsIGdpcl92ZXJzaW9uID0g IjQiLCBsb3dlcl9jYXNlX2NwcmVmaXggPSAiY2x1dHRlcl8iKV0KLStbQ0NvZGUgKGNwcmVmaXgg PSAiQ2x1dHRlciIsIGdpcl9uYW1lc3BhY2UgPSAiQ2x1dHRlciIsIGdpcl92ZXJzaW9uID0gIjci LCBsb3dlcl9jYXNlX2NwcmVmaXggPSAiY2x1dHRlcl8iKV0KLSBuYW1lc3BhY2UgQ2x1dHRlciB7 Ci0gCW5hbWVzcGFjZSBLZXkgewotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0 ZXIvY2x1dHRlci5oIiwgY25hbWUgPSAiQ0xVVFRFUl9LRVlfMCIpXQotQEAgLTQ1NzYsMjAgKzQ1 NzYsOCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIp XQotIAkJcHVibGljIHN0YXRpYyB1aW50IGFkZF9yZXBhaW50X2Z1bmNfZnVsbCAoQ2x1dHRlci5S ZXBhaW50RmxhZ3MgZmxhZ3MsIG93bmVkIEdMaWIuU291cmNlRnVuYyBmdW5jKTsKLSAJCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIw LjQiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdm9pZCBlbnRlciAoKTsKLS0JCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjQiKV0KLS0J CXB1YmxpYyBzdGF0aWMgdm9pZCBpbml0ICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGljIHN0 YXRpYyB2b2lkIGxlYXZlICgpOwotLQkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0 ZXIvY2x1dHRlci5oIildCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMg c3RhdGljIHZvaWQgcmVtb3ZlX3JlcGFpbnRfZnVuYyAodWludCBoYW5kbGVfaWQpOwotLQkJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCQlbVmVyc2lv biAoc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X2xvY2tfZnVuY3Rp b25zIChHTGliLkNhbGxiYWNrIGVudGVyX2ZuLCBHTGliLkNhbGxiYWNrIGxlYXZlX2ZuKTsKLSAJ fQotIAluYW1lc3BhY2UgVmFsdWUgewotIAkJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIildCi1AQCAtNDYzNiw3ICs0NjI0LDYgQEAgbmFtZXNwYWNlIENsdXR0 ZXIgewotIAkJcHVibGljIHN0YXRpYyB2b2lkIHRha2VfcGFpbnRfbm9kZSAoR0xpYi5WYWx1ZSB2 YWx1ZSwgQ2x1dHRlci5QYWludE5vZGU/IG5vZGUpOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9hY3Rpb25f Z2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAlwdWJsaWMgYWJz dHJhY3QgY2xhc3MgQWN0aW9uIDogQ2x1dHRlci5BY3Rvck1ldGEgewotIAkJW0NDb2RlIChoYXNf Y29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIEFjdGlvbiAoKTsKLUBA IC00NjY0LDMzICs0NjUxLDIzIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9pZCBhZGRfdHJhbnNpdGlvbiAoc3RyaW5nIG5h bWUsIENsdXR0ZXIuVHJhbnNpdGlvbiB0cmFuc2l0aW9uKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIwLjgiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgYWxsb2NhdGUgKENsdXR0ZXIuQWN0b3JC b3ggYm94LCBDbHV0dGVyLkFsbG9jYXRpb25GbGFncyBmbGFncyk7Ci0rCQlwdWJsaWMgdmlydHVh bCB2b2lkIGFsbG9jYXRlIChDbHV0dGVyLkFjdG9yQm94IGJveCk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBhbGxvY2F0ZV9hbGlnbl9maWxsIChDbHV0dGVy LkFjdG9yQm94IGJveCwgZG91YmxlIHhfYWxpZ24sIGRvdWJsZSB5X2FsaWduLCBib29sIHhfZmls bCwgYm9vbCB5X2ZpbGwsIENsdXR0ZXIuQWxsb2NhdGlvbkZsYWdzIGZsYWdzKTsKLSsJCXB1Ymxp YyB2b2lkIGFsbG9jYXRlX2FsaWduX2ZpbGwgKENsdXR0ZXIuQWN0b3JCb3ggYm94LCBkb3VibGUg eF9hbGlnbiwgZG91YmxlIHlfYWxpZ24sIGJvb2wgeF9maWxsLCBib29sIHlfZmlsbCk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBhbGxvY2F0ZV9hdmFpbGFi bGVfc2l6ZSAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgYXZhaWxhYmxlX3dpZHRoLCBmbG9hdCBh dmFpbGFibGVfaGVpZ2h0LCBDbHV0dGVyLkFsbG9jYXRpb25GbGFncyBmbGFncyk7Ci0rCQlwdWJs aWMgdm9pZCBhbGxvY2F0ZV9hdmFpbGFibGVfc2l6ZSAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg YXZhaWxhYmxlX3dpZHRoLCBmbG9hdCBhdmFpbGFibGVfaGVpZ2h0KTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyB2b2lkIGFsbG9jYXRlX3ByZWZlcnJlZF9zaXplIChD bHV0dGVyLkFsbG9jYXRpb25GbGFncyBmbGFncyk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVi bGljIHVub3duZWQgQ2x1dHRlci5BbmltYXRpb24gYW5pbWF0ZSAodWxvbmcgbW9kZSwgdWludCBk dXJhdGlvbiwgLi4uKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0 dGVyLkFuaW1hdGlvbiBhbmltYXRlX3dpdGhfYWxwaGEgKENsdXR0ZXIuQWxwaGEgYWxwaGEsIC4u Lik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5BbmltYXRp b24gYW5pbWF0ZV93aXRoX2FscGhhdiAoQ2x1dHRlci5BbHBoYSBhbHBoYSwgW0NDb2RlIChhcnJh eV9sZW5ndGhfY25hbWUgPSAibl9wcm9wZXJ0aWVzIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDEuNSld IHN0cmluZ1tdIHByb3BlcnRpZXMsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gIm5fcHJv cGVydGllcyIsIGFycmF5X2xlbmd0aF9wb3MgPSAxLjUpXSBHTGliLlZhbHVlW10gdmFsdWVzKTsK LS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEy Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFuaW1hdGlvbiBh bmltYXRlX3dpdGhfdGltZWxpbmUgKHVsb25nIG1vZGUsIENsdXR0ZXIuVGltZWxpbmUgdGltZWxp bmUsIC4uLik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5B bmltYXRpb24gYW5pbWF0ZV93aXRoX3RpbWVsaW5ldiAodWxvbmcgbW9kZSwgQ2x1dHRlci5UaW1l bGluZSB0aW1lbGluZSwgW0NDb2RlIChhcnJheV9sZW5ndGhfY25hbWUgPSAibl9wcm9wZXJ0aWVz IiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDIuNSldIHN0cmluZ1tdIHByb3BlcnRpZXMsIFtDQ29kZSAo YXJyYXlfbGVuZ3RoX2NuYW1lID0gIm5fcHJvcGVydGllcyIsIGFycmF5X2xlbmd0aF9wb3MgPSAy LjUpXSBHTGliLlZhbHVlW10gdmFsdWVzKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMg dW5vd25lZCBDbHV0dGVyLkFuaW1hdGlvbiBhbmltYXRldiAodWxvbmcgbW9kZSwgdWludCBkdXJh dGlvbiwgW0NDb2RlIChhcnJheV9sZW5ndGhfY25hbWUgPSAibl9wcm9wZXJ0aWVzIiwgYXJyYXlf bGVuZ3RoX3BvcyA9IDIuNSldIHN0cmluZ1tdIHByb3BlcnRpZXMsIFtDQ29kZSAoYXJyYXlfbGVu Z3RoX2NuYW1lID0gIm5fcHJvcGVydGllcyIsIGFycmF5X2xlbmd0aF9wb3MgPSAyLjUpXSBHTGli LlZhbHVlW10gdmFsdWVzKTsKLSsJCXB1YmxpYyB2b2lkIGFsbG9jYXRlX3ByZWZlcnJlZF9zaXpl IChmbG9hdCB4LCBmbG9hdCB5KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JCXB1 YmxpYyBDbHV0dGVyLlZlcnRleCBhcHBseV9yZWxhdGl2ZV90cmFuc2Zvcm1fdG9fcG9pbnQgKENs dXR0ZXIuQWN0b3I/IGFuY2VzdG9yLCBDbHV0dGVyLlZlcnRleCBwb2ludCk7Ci0rCQlwdWJsaWMg dm9pZCBhcHBseV9yZWxhdGl2ZV90cmFuc2Zvcm1fdG9fcG9pbnQgKENsdXR0ZXIuQWN0b3I/IGFu Y2VzdG9yLCBHcmFwaGVuZS5Qb2ludDNEIHBvaW50LCBvdXQgdW5vd25lZCBHcmFwaGVuZS5Qb2lu dDNEIHZlcnRleCk7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBhcHBs eV90cmFuc2Zvcm0gKHJlZiBDbHV0dGVyLk1hdHJpeCBtYXRyaXgpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjAuNCIpXQotLQkJcHVibGljIENsdXR0ZXIuVmVydGV4IGFwcGx5X3RyYW5zZm9ybV90 b19wb2ludCAoQ2x1dHRlci5WZXJ0ZXggcG9pbnQpOwotKwkJcHVibGljIHZvaWQgYXBwbHlfdHJh bnNmb3JtX3RvX3BvaW50IChHcmFwaGVuZS5Qb2ludDNEIHBvaW50LCBvdXQgdW5vd25lZCBHcmFw aGVuZS5Qb2ludDNEIHZlcnRleCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yNCIpXQotIAkJ cHVibGljIHZvaWQgYmluZF9tb2RlbCAoR0xpYi5MaXN0TW9kZWw/IG1vZGVsLCBvd25lZCBDbHV0 dGVyLkFjdG9yQ3JlYXRlQ2hpbGRGdW5jIGNyZWF0ZV9jaGlsZF9mdW5jKTsKLSsJCVtOb1dyYXBw ZXJdCi0rCQlwdWJsaWMgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVfcmVzb3VyY2Vfc2NhbGUgKGlu dCBwaGFzZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMgdm9pZCBj bGVhcl9hY3Rpb25zICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotQEAgLTQ3MDAs MjAgKzQ2NzcsMTkgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuNCIpXQotIAkJcHVibGljIGJvb2wgY29udGFpbnMgKENsdXR0ZXIuQWN0b3IgZGVzY2VuZGFu dCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgdm9pZCBjb250aW51 ZV9wYWludCAoKTsKLSsJCXB1YmxpYyB2b2lkIGNvbnRpbnVlX3BhaW50IChDbHV0dGVyLlBhaW50 Q29udGV4dCBwYWludF9jb250ZXh0KTsKLSsJCXB1YmxpYyB2b2lkIGNvbnRpbnVlX3BpY2sgKENs dXR0ZXIuUGlja0NvbnRleHQgcGlja19jb250ZXh0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjAiKV0KLSAJCXB1YmxpYyBQYW5nby5Db250ZXh0IGNyZWF0ZV9wYW5nb19jb250ZXh0ICgpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIFBhbmdvLkxheW91dCBjcmVh dGVfcGFuZ29fbGF5b3V0IChzdHJpbmc/IHRleHQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTAiKV0KLSAJCXB1YmxpYyB2b2lkIGRlc3Ryb3lfYWxsX2NoaWxkcmVuICgpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9 ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIGRldGFjaF9hbmltYXRpb24gKCk7Ci0gCQlbQ0NvZGUg KGNuYW1lID0gImNsdXR0ZXJfYWN0b3JfZXZlbnQiKV0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIw LjYiKV0KLSAJCXB1YmxpYyBib29sIGVtaXRfZXZlbnQgKENsdXR0ZXIuRXZlbnQgZXZlbnQsIGJv b2wgY2FwdHVyZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgdm9p ZCBnZXRfYWJzX2FsbG9jYXRpb25fdmVydGljZXMgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFs c2UpXSBDbHV0dGVyLlZlcnRleCB2ZXJ0c1s0XSk7Ci0rCQlwdWJsaWMgdm9pZCBnZXRfYWJzX2Fs bG9jYXRpb25fdmVydGljZXMgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBHcmFwaGVu ZS5Qb2ludDNEIHZlcnRzWzRdKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHVub3duZWQgQXRrLk9iamVj dCBnZXRfYWNjZXNzaWJsZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1 YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0aW9uIGdldF9hY3Rpb24gKHN0cmluZyBuYW1lKTsKLUBA IC00NzIxLDIxICs0Njk3LDggQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIEdMaWIu TGlzdDx3ZWFrIENsdXR0ZXIuQWN0aW9uPiBnZXRfYWN0aW9ucyAoKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIwLjgiKV0KLSAJCXB1YmxpYyBDbHV0dGVyLkFjdG9yQm94IGdldF9hbGxvY2F0aW9u X2JveCAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEyIiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgQ2x1dHRlci5HZW9tZXRyeSBn ZXRfYWxsb2NhdGlvbl9nZW9tZXRyeSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0K LS0JCXB1YmxpYyB2b2lkIGdldF9hbGxvY2F0aW9uX3ZlcnRpY2VzIChDbHV0dGVyLkFjdG9yPyBh bmNlc3RvciwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIENsdXR0ZXIuVmVydGV4IHZl cnRzWzRdKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEyIiwgc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYW5jaG9yX3Bv aW50IChvdXQgZmxvYXQgYW5jaG9yX3gsIG91dCBmbG9hdCBhbmNob3JfeSk7Ci0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0g IjEuMCIpXQotLQkJcHVibGljIENsdXR0ZXIuR3Jhdml0eSBnZXRfYW5jaG9yX3BvaW50X2dyYXZp dHkgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5Bbmlt YXRpb24gZ2V0X2FuaW1hdGlvbiAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0g CQlwdWJsaWMgQ2x1dHRlci5Db2xvciBnZXRfYmFja2dyb3VuZF9jb2xvciAoKTsKLS0JCVtDQ29k ZSAoY25hbWUgPSAiY2x1dHRlcl9nZXRfYWN0b3JfYnlfZ2lkIildCi0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS44Iiwgc2luY2UgPSAiMC42Iild Ci0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfYnlfZ2lkICh1aW50 MzIgaWRfKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdW5vd25l ZCBDbHV0dGVyLkFjdG9yIGdldF9jaGlsZF9hdF9pbmRleCAoaW50IGluZGV4Xyk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMiIpXQotQEAgLTQ3NjIsOCArNDcyNSw2IEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIGdldF9jb250ZW50X3NjYWxpbmdfZmlsdGVycyAob3V0 IENsdXR0ZXIuU2NhbGluZ0ZpbHRlciBtaW5fZmlsdGVyLCBvdXQgQ2x1dHRlci5TY2FsaW5nRmls dGVyIG1hZ19maWx0ZXIpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1Ymxp YyB1bm93bmVkIENsdXR0ZXIuUGFpbnRWb2x1bWUgZ2V0X2RlZmF1bHRfcGFpbnRfdm9sdW1lICgp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTIiKV0KLS0JCXB1YmxpYyBmbG9hdCBnZXRfZGVwdGggKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMCIpXQotIAkJcHVibGljIHVpbnQgZ2V0X2Vhc2luZ19kZWxheSAoKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjEwIildCi1AQCAtNDc3NiwxMiArNDczNywxMSBAQCBuYW1lc3BhY2Ug Q2x1dHRlciB7Ci0gCQlwdWJsaWMgR0xpYi5MaXN0PHdlYWsgQ2x1dHRlci5FZmZlY3Q+IGdldF9l ZmZlY3RzICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB1bm93 bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2ZpcnN0X2NoaWxkICgpOwotKwkJcHVibGljIGJvb2wgZ2V0 X2ZpeGVkX3Bvc2l0aW9uIChvdXQgZmxvYXQgeCwgb3V0IGZsb2F0IHkpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjAuOCIpXQotIAkJcHVibGljIGJvb2wgZ2V0X2ZpeGVkX3Bvc2l0aW9uX3NldCAo KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBDbHV0dGVyLkFjdG9y RmxhZ3MgZ2V0X2ZsYWdzICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuOCIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIHVpbnQzMiBn ZXRfZ2lkICgpOwotIAkJW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX2FjdG9yX2hhc19wb2ludGVy IildCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgYm9vbCBnZXRfaGFz X3BvaW50ZXIgKCk7Ci1AQCAtNDgzOSwxNyArNDc5OSwxMSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7 Ci0gCQlwdWJsaWMgYm9vbCBnZXRfcmVhY3RpdmUgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4yIildCi0gCQlwdWJsaWMgQ2x1dHRlci5SZXF1ZXN0TW9kZSBnZXRfcmVxdWVzdF9tb2RlICgp OwotLQkJcHVibGljIGJvb2wgZ2V0X3Jlc291cmNlX3NjYWxlIChvdXQgZmxvYXQgcmVzb3VyY2Vf c2NhbGUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBkb3VibGUgZ2V0X3JvdGF0aW9u IChDbHV0dGVyLlJvdGF0ZUF4aXMgYXhpcywgb3V0IGZsb2F0IHgsIG91dCBmbG9hdCB5LCBvdXQg ZmxvYXQgeik7Ci0rCQlwdWJsaWMgZmxvYXQgZ2V0X3Jlc291cmNlX3NjYWxlICgpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSAJCXB1YmxpYyBkb3VibGUgZ2V0X3JvdGF0aW9uX2Fu Z2xlIChDbHV0dGVyLlJvdGF0ZUF4aXMgYXhpcyk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC4y IildCi0gCQlwdWJsaWMgdm9pZCBnZXRfc2NhbGUgKG91dCBkb3VibGUgc2NhbGVfeCwgb3V0IGRv dWJsZSBzY2FsZV95KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfc2Nh bGVfY2VudGVyIChvdXQgZmxvYXQgY2VudGVyX3gsIG91dCBmbG9hdCBjZW50ZXJfeSk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNp bmNlID0gIjEuMCIpXQotLQkJcHVibGljIENsdXR0ZXIuR3Jhdml0eSBnZXRfc2NhbGVfZ3Jhdml0 eSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgZG91YmxlIGdl dF9zY2FsZV96ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotQEAgLTQ4NjAsOCAr NDgxNCw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBDbHV0dGVyLlRleHREaXJl Y3Rpb24gZ2V0X3RleHRfZGlyZWN0aW9uICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIi KV0KLSAJCXB1YmxpYyBDbHV0dGVyLk1hdHJpeCBnZXRfdHJhbnNmb3JtICgpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9 ICIxLjAiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLk1hdHJpeCBnZXRfdHJhbnNmb3JtYXRpb25fbWF0 cml4ICgpOwotKwkJcHVibGljIHZvaWQgZ2V0X3RyYW5zZm9ybWVkX2V4dGVudHMgKG91dCB1bm93 bmVkIEdyYXBoZW5lLlJlY3QgcmVjdCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0g CQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlBhaW50Vm9sdW1lIGdldF90cmFuc2Zvcm1lZF9wYWlu dF92b2x1bWUgKENsdXR0ZXIuQWN0b3IgcmVsYXRpdmVfdG9fYW5jZXN0b3IpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjAuOCIpXQotQEAgLTQ4ODUsMTAgKzQ4MzgsOSBAQCBuYW1lc3BhY2UgQ2x1 dHRlciB7Ci0gCQlwdWJsaWMgYm9vbCBnZXRfeV9leHBhbmQgKCk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMiIpXQotIAkJcHVibGljIGZsb2F0IGdldF96X3Bvc2l0aW9uICgpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5j ZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLkdyYXZpdHkgZ2V0X3pfcm90YXRpb25fZ3Jh dml0eSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2b2lkIGdy YWJfa2V5X2ZvY3VzICgpOwotKwkJcHVibGljIHZpcnR1YWwgYm9vbCBoYXNfYWNjZXNzaWJsZSAo KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgYm9vbCBoYXNfYWN0 aW9ucyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLUBAIC00OTAwLDE4ICs0ODUy LDIwIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBib29sIGhhc19lZmZlY3RzICgp OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIGJvb2wgaGFzX2tleV9m b2N1cyAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0gCQlwdWJsaWMgYm9vbCBo YXNfbWFwcGVkX2Nsb25lcyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1 YmxpYyB2aXJ0dWFsIGJvb2wgaGFzX292ZXJsYXBzICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjIiKV0KLSsJ CVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIGhpZGVfYWxsICgpOwotKwkJcHVi bGljIHZvaWQgaW5oaWJpdF9jdWxsaW5nICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAi KV0KLSAJCXB1YmxpYyB2b2lkIGluc2VydF9jaGlsZF9hYm92ZSAoQ2x1dHRlci5BY3RvciBjaGls ZCwgQ2x1dHRlci5BY3Rvcj8gc2libGluZyk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIp XQotIAkJcHVibGljIHZvaWQgaW5zZXJ0X2NoaWxkX2F0X2luZGV4IChDbHV0dGVyLkFjdG9yIGNo aWxkLCBpbnQgaW5kZXhfKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJs aWMgdm9pZCBpbnNlcnRfY2hpbGRfYmVsb3cgKENsdXR0ZXIuQWN0b3IgY2hpbGQsIENsdXR0ZXIu QWN0b3I/IHNpYmxpbmcpOwotKwkJcHVibGljIHZvaWQgaW52YWxpZGF0ZV90cmFuc2Zvcm0gKCk7 Ci0rCQlwdWJsaWMgYm9vbCBpc19lZmZlY3RpdmVseV9vbl9zdGFnZV92aWV3IChDbHV0dGVyLlN0 YWdlVmlldyB2aWV3KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBi b29sIGlzX2luX2Nsb25lX3BhaW50ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMjQiKV0K LUBAIC00OTI0LDMzICs0ODc4LDIwIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBi b29sIGlzX3NjYWxlZCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjI0IildCi0gCQlwdWJs aWMgYm9vbCBpc192aXNpYmxlICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIGxvd2VyIChDbHV0dGVy LkFjdG9yPyBhYm92ZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgbG93ZXJfYm90dG9tICgpOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBtYXAgKCk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MiIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIHZvaWQgbW92ZV9hbmNob3JfcG9pbnQgKGZs b2F0IGFuY2hvcl94LCBmbG9hdCBhbmNob3JfeSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVi bGljIHZvaWQgbW92ZV9hbmNob3JfcG9pbnRfZnJvbV9ncmF2aXR5IChDbHV0dGVyLkdyYXZpdHkg Z3Jhdml0eSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC4yIildCi0gCQlwdWJsaWMgdm9pZCBt b3ZlX2J5IChmbG9hdCBkeCwgZmxvYXQgZHkpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIi KV0KLSAJCXB1YmxpYyBib29sIG5lZWRzX2V4cGFuZCAoQ2x1dHRlci5PcmllbnRhdGlvbiBvcmll bnRhdGlvbik7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBwYWludF9u b2RlIChDbHV0dGVyLlBhaW50Tm9kZSByb290KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJs aWMgdm9pZCBwb3BfaW50ZXJuYWwgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZv aWQgcHVzaF9pbnRlcm5hbCAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIEdMaWIuTGlzdDxDbHV0dGVy LlN0YWdlVmlldz4gcGVla19zdGFnZV92aWV3cyAoKTsKLSsJCXB1YmxpYyB2b2lkIHBpY2tfYm94 IChDbHV0dGVyLlBpY2tDb250ZXh0IHBpY2tfY29udGV4dCwgQ2x1dHRlci5BY3RvckJveCBib3gp OwotKwkJcHVibGljIHVub3duZWQgQ2x1dHRlci5GcmFtZUNsb2NrIHBpY2tfZnJhbWVfY2xvY2sg KCk7Ci0gCQlwdWJsaWMgdm9pZCBxdWV1ZV9yZWRyYXcgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgcXVldWVfcmVkcmF3X3dpdGhfY2xpcCAoQ2Fpcm8u UmVjdGFuZ2xlSW50PyBjbGlwKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCByYWlzZSAoQ2x1dHRlci5B Y3Rvcj8gYmVsb3cpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHJhaXNlX3RvcCAoKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyB2b2lkIHJlbW92ZV9hY3Rpb24gKENsdXR0 ZXIuQWN0aW9uIGFjdGlvbik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi1AQCAtNDk3 Miw4ICs0OTEzLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHZvaWQgcmVtb3Zl X2VmZmVjdF9ieV9uYW1lIChzdHJpbmcgbmFtZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4x MCIpXQotIAkJcHVibGljIHZvaWQgcmVtb3ZlX3RyYW5zaXRpb24gKHN0cmluZyBuYW1lKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwg c2luY2UgPSAiMC4yIildCi0tCQlwdWJsaWMgdm9pZCByZXBhcmVudCAoQ2x1dHRlci5BY3RvciBu ZXdfcGFyZW50KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9p ZCByZXBsYWNlX2NoaWxkIChDbHV0dGVyLkFjdG9yIG9sZF9jaGlsZCwgQ2x1dHRlci5BY3RvciBu ZXdfY2hpbGQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLUBAIC00OTgxLDExICs0 OTIwLDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAi KV0KLSAJCXB1YmxpYyB2b2lkIHNhdmVfZWFzaW5nX3N0YXRlICgpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbGxvY2F0aW9uIChDbHV0dGVyLkFj dG9yQm94IGJveCwgQ2x1dHRlci5BbGxvY2F0aW9uRmxhZ3MgZmxhZ3MpOwotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIw LjYiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbmNob3JfcG9pbnQgKGZsb2F0IGFuY2hvcl94LCBm bG9hdCBhbmNob3JfeSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIHZvaWQgc2V0X2Fu Y2hvcl9wb2ludF9mcm9tX2dyYXZpdHkgKENsdXR0ZXIuR3Jhdml0eSBncmF2aXR5KTsKLSsJCXB1 YmxpYyB2b2lkIHNldF9hbGxvY2F0aW9uIChDbHV0dGVyLkFjdG9yQm94IGJveCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2JhY2tncm91bmRfY29s b3IgKENsdXR0ZXIuQ29sb3I/IGNvbG9yKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIild Ci1AQCAtNTAwOCw4ICs0OTQzLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHZv aWQgc2V0X2NvbnRlbnRfcmVwZWF0IChDbHV0dGVyLkNvbnRlbnRSZXBlYXQgcmVwZWF0KTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfY29udGVudF9z Y2FsaW5nX2ZpbHRlcnMgKENsdXR0ZXIuU2NhbGluZ0ZpbHRlciBtaW5fZmlsdGVyLCBDbHV0dGVy LlNjYWxpbmdGaWx0ZXIgbWFnX2ZpbHRlcik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGljIHZvaWQgc2V0X2RlcHRo IChmbG9hdCBkZXB0aCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGlj IHZvaWQgc2V0X2Vhc2luZ19kZWxheSAodWludCBtc2Vjcyk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMCIpXQotQEAgLTUwMzksOCArNDk3Miw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJ CXB1YmxpYyB2b2lkIHNldF9vZmZzY3JlZW5fcmVkaXJlY3QgKENsdXR0ZXIuT2Zmc2NyZWVuUmVk aXJlY3QgcmVkaXJlY3QpOwotIAkJcHVibGljIHZvaWQgc2V0X29wYWNpdHkgKHVpbnQ4IG9wYWNp dHkpOwotIAkJcHVibGljIHZvaWQgc2V0X29wYWNpdHlfb3ZlcnJpZGUgKGludCBvcGFjaXR5KTsK LS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEw IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfcGFyZW50IChDbHV0dGVyLkFjdG9yIHBhcmVudCk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotIAkJcHVibGljIHZvaWQgc2V0X3Bpdm90X3Bv aW50IChmbG9hdCBwaXZvdF94LCBmbG9hdCBwaXZvdF95KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEyIildCi1AQCAtNTA1MCwxNiArNDk4MSwxMCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0g CQlwdWJsaWMgdm9pZCBzZXRfcmVhY3RpdmUgKGJvb2wgcmVhY3RpdmUpOwotIAkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMiIpXQotIAkJcHVibGljIHZvaWQgc2V0X3JlcXVlc3RfbW9kZSAoQ2x1dHRl ci5SZXF1ZXN0TW9kZSBtb2RlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgdm9pZCBz ZXRfcm90YXRpb24gKENsdXR0ZXIuUm90YXRlQXhpcyBheGlzLCBkb3VibGUgYW5nbGUsIGZsb2F0 IHgsIGZsb2F0IHksIGZsb2F0IHopOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSAJ CXB1YmxpYyB2b2lkIHNldF9yb3RhdGlvbl9hbmdsZSAoQ2x1dHRlci5Sb3RhdGVBeGlzIGF4aXMs IGRvdWJsZSBhbmdsZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC4yIildCi0gCQlwdWJsaWMg dm9pZCBzZXRfc2NhbGUgKGRvdWJsZSBzY2FsZV94LCBkb3VibGUgc2NhbGVfeSk7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNl ID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3NjYWxlX2Z1bGwgKGRvdWJsZSBzY2FsZV94 LCBkb3VibGUgc2NhbGVfeSwgZmxvYXQgY2VudGVyX3gsIGZsb2F0IGNlbnRlcl95KTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfc2NhbGVfd2l0aF9ncmF2aXR5IChkb3Vi bGUgc2NhbGVfeCwgZG91YmxlIHNjYWxlX3ksIENsdXR0ZXIuR3Jhdml0eSBncmF2aXR5KTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfc2NhbGVfeiAo ZG91YmxlIHNjYWxlX3opOwotIAkJcHVibGljIHZvaWQgc2V0X3NpemUgKGZsb2F0IHdpZHRoLCBm bG9hdCBoZWlnaHQpOwotQEAgLTUwODUsMTcgKzUwMTAsMTIgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHVibGljIHZvaWQgc2V0X3lfZXhwYW5kIChib29sIGV4cGFuZCk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMiIpXQotIAkJcHVibGljIHZvaWQgc2V0X3pfcG9zaXRpb24gKGZsb2F0 IHpfcG9zaXRpb24pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF96X3Jv dGF0aW9uX2Zyb21fZ3Jhdml0eSAoZG91YmxlIGFuZ2xlLCBDbHV0dGVyLkdyYXZpdHkgZ3Jhdml0 eSk7Ci0gCQlwdWJsaWMgYm9vbCBzaG91bGRfcGlja19wYWludCAoKTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC4y IildCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNob3dfYWxsICgpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjAuNiIpXQotIAkJcHVibGljIGJvb2wgdHJhbnNmb3JtX3N0YWdlX3BvaW50IChmbG9h dCB4LCBmbG9hdCB5LCBvdXQgZmxvYXQgeF9vdXQsIG91dCBmbG9hdCB5X291dCk7Ci0rCQlwdWJs aWMgdm9pZCB1bmluaGliaXRfY3VsbGluZyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAi KV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgdW5tYXAgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuMiIpXQot LQkJcHVibGljIHZvaWQgdW5wYXJlbnQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIild Ci0gCQlwdWJsaWMgdm9pZCB1bnNldF9mbGFncyAoQ2x1dHRlci5BY3RvckZsYWdzIGZsYWdzKTsK LSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotQEAgLTUxMDMsMTYgKzUwMjMsNyBAQCBuYW1lc3BhY2Ug Q2x1dHRlciB7Ci0gCQlwdWJsaWMgQ2x1dHRlci5BY3Rpb24gYWN0aW9ucyB7IHNldDsgfQotIAkJ W05vQWNjZXNzb3JNZXRob2RdCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0tCQlwdWJs aWMgQ2x1dHRlci5BY3RvckJveCBhbGxvY2F0aW9uIHsgZ2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1l dGhvZF0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQ2x1dHRlci5HcmF2aXR5IGFuY2hv cl9ncmF2aXR5IHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9 ICIwLjgiKV0KLS0JCXB1YmxpYyBmbG9hdCBhbmNob3JfeCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9B Y2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgZmxvYXQgYW5jaG9y X3kgeyBnZXQ7IHNldDsgfQotKwkJcHVibGljIENsdXR0ZXIuQWN0b3JCb3ggYWxsb2NhdGlvbiB7 IG93bmVkIGdldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyBD bHV0dGVyLkNvbG9yIGJhY2tncm91bmRfY29sb3IgeyBnZXQ7IHNldDsgfQotIAkJW05vQWNjZXNz b3JNZXRob2RdCi1AQCAtNTEyMiwxMSArNTAzMyw4IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgYm9vbCBjaGlsZF90cmFuc2Zv cm1fc2V0IHsgZ2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgQ2x1 dHRlci5HZW9tZXRyeSBjbGlwIHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlJlY3QgY2xp cF9yZWN0IHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSsJCXB1YmxpYyBHcmFwaGVuZS5SZWN0IGNsaXBf cmVjdCB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0g CQlwdWJsaWMgYm9vbCBjbGlwX3RvX2FsbG9jYXRpb24geyBnZXQ7IHNldDsgfQotIAkJW05vQWNj ZXNzb3JNZXRob2RdCi1AQCAtNTE0MCw4ICs1MDQ4LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewot IAkJcHVibGljIENsdXR0ZXIuQ29udGVudEdyYXZpdHkgY29udGVudF9ncmF2aXR5IHsgZ2V0OyBz ZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgQ2x1dHRlci5D b250ZW50UmVwZWF0IGNvbnRlbnRfcmVwZWF0IHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC42 IildCi0tCQlwdWJsaWMgZmxvYXQgZGVwdGggeyBnZXQ7IHNldDsgfQotIAkJW05vQWNjZXNzb3JN ZXRob2RdCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMgQ2x1dHRlci5F ZmZlY3QgZWZmZWN0IHsgc2V0OyB9Ci1AQCAtNTIxMSwxMiArNTExNywxMiBAQCBuYW1lc3BhY2Ug Q2x1dHRlciB7Ci0gCQlwdWJsaWMgdWludCBvcGFjaXR5IHsgZ2V0OyBzZXQ7IH0KLSAJCVtOb0Fj Y2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBD bHV0dGVyLlBvaW50IHBpdm90X3BvaW50IHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSsJCXB1YmxpYyBH cmFwaGVuZS5Qb2ludCBwaXZvdF9wb2ludCB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMiIpXQotIAkJcHVibGljIGZsb2F0IHBpdm90X3BvaW50X3ogeyBnZXQ7 IHNldDsgfQotIAkJW05vQWNjZXNzb3JNZXRob2RdCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4x MiIpXQotLQkJcHVibGljIENsdXR0ZXIuUG9pbnQgcG9zaXRpb24geyBvd25lZCBnZXQ7IHNldDsg fQotKwkJcHVibGljIEdyYXBoZW5lLlBvaW50IHBvc2l0aW9uIHsgb3duZWQgZ2V0OyBzZXQ7IH0K LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLSAJCXB1YmxpYyBib29sIHJlYWN0aXZlIHsg Z2V0OyBzZXQ7IH0KLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotQEAgLTUyMjUsOCArNTEzMSw2IEBA IG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLSAJCXB1 YmxpYyBDbHV0dGVyLlJlcXVlc3RNb2RlIHJlcXVlc3RfbW9kZSB7IGdldDsgc2V0OyB9Ci0gCQlb Tm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBmbG9hdCByZXNvdXJjZV9zY2FsZSB7IGdldDsg fQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0g CQlwdWJsaWMgZG91YmxlIHJvdGF0aW9uX2FuZ2xlX3ggeyBnZXQ7IHNldDsgfQotIAkJW05vQWNj ZXNzb3JNZXRob2RdCi1AQCAtNTIzNiwyNyArNTE0MCw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsK LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLSAJCXB1YmxpYyBkb3VibGUgcm90YXRpb25f YW5nbGVfeiB7IGdldDsgc2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAi MC42IildCi0tCQlwdWJsaWMgQ2x1dHRlci5WZXJ0ZXggcm90YXRpb25fY2VudGVyX3ggeyBnZXQ7 IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVi bGljIENsdXR0ZXIuVmVydGV4IHJvdGF0aW9uX2NlbnRlcl95IHsgZ2V0OyBzZXQ7IH0KLS0JCVtO b0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlZl cnRleCByb3RhdGlvbl9jZW50ZXJfeiB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhv ZF0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQ2x1dHRlci5HcmF2aXR5IHJvdGF0aW9u X2NlbnRlcl96X2dyYXZpdHkgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIs IHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIGZsb2F0IHNjYWxlX2NlbnRlcl94IHsgZ2V0OyBz ZXQ7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1Ymxp YyBmbG9hdCBzY2FsZV9jZW50ZXJfeSB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhv ZF0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQ2x1dHRlci5HcmF2aXR5IHNjYWxlX2dy YXZpdHkgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0gCQlwdWJsaWMgZG91YmxlIHNjYWxlX3ggeyBnZXQ7IHNldDsgfQot IAkJW05vQWNjZXNzb3JNZXRob2RdCi1AQCAtNTI2OSw3ICs1MTUyLDcgQEAgbmFtZXNwYWNlIENs dXR0ZXIgewotIAkJcHVibGljIGJvb2wgc2hvd19vbl9zZXRfcGFyZW50IHsgZ2V0OyBzZXQ7IH0K LSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0J CXB1YmxpYyBDbHV0dGVyLlNpemUgc2l6ZSB7IG93bmVkIGdldDsgc2V0OyB9Ci0rCQlwdWJsaWMg R3JhcGhlbmUuU2l6ZSBzaXplIHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBDbHV0dGVyLlRleHREaXJlY3Rpb24gdGV4dF9kaXJlY3Rp b24geyBnZXQ7IHNldDsgfQotIAkJW05vQWNjZXNzb3JNZXRob2RdCi1AQCAtNTI5OSw4ICs1MTgy LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGJvb2wgeV9leHBhbmQgeyBnZXQ7 IHNldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSAJCXB1YmxpYyBmbG9hdCB6 X3Bvc2l0aW9uIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0J CXB1YmxpYyBzaWduYWwgdm9pZCBhbGxvY2F0aW9uX2NoYW5nZWQgKENsdXR0ZXIuQWN0b3JCb3gg Ym94LCBDbHV0dGVyLkFsbG9jYXRpb25GbGFncyBmbGFncyk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMC42IildCi0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgYm9vbCBidXR0b25fcHJlc3NfZXZl bnQgKENsdXR0ZXIuQnV0dG9uRXZlbnQgZXZlbnQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAu NiIpXQotQEAgLTUzMzEsMjIgKzUyMTIsMjUgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVi bGljIHZpcnR1YWwgc2lnbmFsIGJvb2wgbW90aW9uX2V2ZW50IChDbHV0dGVyLk1vdGlvbkV2ZW50 IGV2ZW50KTsKLSAJCVtIYXNFbWl0dGVyXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyB2 aXJ0dWFsIHNpZ25hbCB2b2lkIHBhaW50ICgpOwotKwkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZv aWQgcGFpbnQgKENsdXR0ZXIuUGFpbnRDb250ZXh0IHBhaW50X2NvbnRleHQpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjAuMiIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgcGFyZW50 X3NldCAoQ2x1dHRlci5BY3Rvcj8gb2xkX3BhcmVudCk7Ci0rCQlbSGFzRW1pdHRlcl0KLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIHBp Y2sgKENsdXR0ZXIuQ29sb3IgY29sb3IpOwotKwkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQg cGljayAoQ2x1dHRlci5QaWNrQ29udGV4dCBwaWNrX2NvbnRleHQpOwotIAkJW0hhc0VtaXR0ZXJd Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwg dm9pZCBxdWV1ZV9yZWxheW91dCAoKTsKLSAJCVtIYXNFbWl0dGVyXQotIAkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIwLjgi KV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIHJlYWxpemUgKCk7Ci0rCQlwdWJsaWMg dmlydHVhbCBzaWduYWwgdm9pZCByZXNvdXJjZV9zY2FsZV9jaGFuZ2VkICgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjAuNiIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIGJvb2wgc2Nyb2xs X2V2ZW50IChDbHV0dGVyLlNjcm9sbEV2ZW50IGV2ZW50KTsKLSAJCVtIYXNFbWl0dGVyXQotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQg c2hvdyAoKTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBzdGFnZV92aWV3c19jaGFuZ2VkICgpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCBi b29sIHRvdWNoX2V2ZW50IChDbHV0dGVyLkV2ZW50IGV2ZW50KTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjEyIildCi1AQCAtNTM1OCwyMSArNTI0MiwzMyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7 Ci0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCB1bnJlYWxpemUgKCk7Ci0gCX0KLSAJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJj bHV0dGVyX2FjdG9yX21ldGFfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEu NCIpXQotIAlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWN0b3JNZXRhIDogR0xpYi5Jbml0aWFsbHlV bm93bmVkIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJ CXByb3RlY3RlZCBBY3Rvck1ldGEgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0g CQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9hY3RvciAoKTsKLSsJCVtWZXJzaW9u IChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyBib29sIGdldF9lbmFibGVkICgpOwotKwkJW1Zl cnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9uYW1l ICgpOwotIAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgc2V0X2FjdG9yIChD bHV0dGVyLkFjdG9yPyBhY3Rvcik7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfZW5hYmxlZCAoYm9vbCBp c19lbmFibGVkKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSsJCXB1YmxpYyB2aXJ0 dWFsIHZvaWQgc2V0X2VuYWJsZWQgKGJvb2wgaXNfZW5hYmxlZCk7Ci0rCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS40IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfbmFtZSAoc3RyaW5nIG5hbWUpOwotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIENsdXR0ZXIuQWN0b3IgYWN0b3Ig eyBnZXQ7IH0KLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyBib29sIGVu YWJsZWQgeyBnZXQ7IHNldDsgfQotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVi bGljIHN0cmluZyBuYW1lIHsgZ2V0OyBzZXQ7IH0KLSAJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfYWN0b3Jfbm9k ZV9nZXRfdHlwZSAoKSIpXQotKwlwdWJsaWMgY2xhc3MgQWN0b3JOb2RlIDogQ2x1dHRlci5QYWlu dE5vZGUgewotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUg PSAiQ2x1dHRlclBhaW50Tm9kZSoiKV0KLSsJCXB1YmxpYyBBY3Rvck5vZGUgKENsdXR0ZXIuQWN0 b3IgYWN0b3IpOwotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2Ns dXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9hbGlnbl9jb25zdHJhaW50X2dldF90eXBlICgp IildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJcHVibGljIGNsYXNzIEFsaWduQ29u c3RyYWludCA6IENsdXR0ZXIuQ29uc3RyYWludCB7Ci1AQCAtNTM4MCw4MSArNTI3NiwxOCBAQCBu YW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgQWxpZ25Db25zdHJhaW50IChDbHV0dGVyLkFj dG9yPyBzb3VyY2UsIENsdXR0ZXIuQWxpZ25BeGlzIGF4aXMsIGZsb2F0IGZhY3Rvcik7Ci0gCQlw dWJsaWMgQ2x1dHRlci5BbGlnbkF4aXMgZ2V0X2FsaWduX2F4aXMgKCk7Ci0gCQlwdWJsaWMgZmxv YXQgZ2V0X2ZhY3RvciAoKTsKLSsJCXB1YmxpYyB2b2lkIGdldF9waXZvdF9wb2ludCAob3V0IHVu b3duZWQgR3JhcGhlbmUuUG9pbnQgcGl2b3RfcG9pbnQpOwotIAkJcHVibGljIHVub3duZWQgQ2x1 dHRlci5BY3RvciBnZXRfc291cmNlICgpOwotIAkJcHVibGljIHZvaWQgc2V0X2FsaWduX2F4aXMg KENsdXR0ZXIuQWxpZ25BeGlzIGF4aXMpOwotIAkJcHVibGljIHZvaWQgc2V0X2ZhY3RvciAoZmxv YXQgZmFjdG9yKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9waXZvdF9wb2ludCAoR3JhcGhlbmUuUG9p bnQgcGl2b3RfcG9pbnQpOwotIAkJcHVibGljIHZvaWQgc2V0X3NvdXJjZSAoQ2x1dHRlci5BY3Rv cj8gc291cmNlKTsKLSAJCXB1YmxpYyBDbHV0dGVyLkFsaWduQXhpcyBhbGlnbl9heGlzIHsgZ2V0 OyBzZXQgY29uc3RydWN0OyB9Ci0gCQlwdWJsaWMgZmxvYXQgZmFjdG9yIHsgZ2V0OyBzZXQgY29u c3RydWN0OyB9Ci0rCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSsJCXB1YmxpYyBHcmFwaGVuZS5Qb2lu dCBwaXZvdF9wb2ludCB7IG93bmVkIGdldDsgc2V0OyB9Ci0gCQlwdWJsaWMgQ2x1dHRlci5BY3Rv ciBzb3VyY2UgeyBnZXQ7IHNldCBjb25zdHJ1Y3Q7IH0KLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfYWxwaGFf Z2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIwLjIiKV0KLS0JcHVibGljIGNsYXNzIEFscGhhIDog R0xpYi5Jbml0aWFsbHlVbm93bmVkLCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJW0NDb2RlICho YXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHVibGljIEFscGhhICgpOwotLQkJ W0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMCIpXQotLQkJcHVibGljIEFscGhhLmZ1bGwgKENsdXR0ZXIuVGltZWxpbmUgdGlt ZWxpbmUsIHVsb25nIG1vZGUpOwotLQkJcHVibGljIGRvdWJsZSBnZXRfYWxwaGEgKCk7Ci0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdWxvbmcgZ2V0X21vZGUgKCk7Ci0t CQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlRpbWVsaW5lIGdldF90aW1lbGluZSAoKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdWxvbmcgcmVnaXN0ZXJf Y2xvc3VyZSAoR0xpYi5DbG9zdXJlIGNsb3N1cmUpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MCIpXQotLQkJcHVibGljIHN0YXRpYyB1bG9uZyByZWdpc3Rlcl9mdW5jIChDbHV0dGVyLkFscGhh RnVuYyBmdW5jKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyB2b2lk IHNldF9jbG9zdXJlIChHTGliLkNsb3N1cmUgY2xvc3VyZSk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRf ZnVuYyAob3duZWQgQ2x1dHRlci5BbHBoYUZ1bmMgZnVuYyk7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbW9kZSAodWxvbmcgbW9kZSk7Ci0tCQlwdWJs aWMgdm9pZCBzZXRfdGltZWxpbmUgKENsdXR0ZXIuVGltZWxpbmUgdGltZWxpbmUpOwotLQkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMCIpXQotLQkJcHVibGljIEFscGhhLndpdGhfZnVuYyAoQ2x1dHRlci5UaW1lbGluZSB0 aW1lbGluZSwgb3duZWQgQ2x1dHRlci5BbHBoYUZ1bmMgZnVuYyk7Ci0tCQlwdWJsaWMgZG91Ymxl IGFscGhhIHsgZ2V0OyB9Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMg dWxvbmcgbW9kZSB7IGdldDsgc2V0IGNvbnN0cnVjdDsgfQotLQkJcHVibGljIENsdXR0ZXIuVGlt ZWxpbmUgdGltZWxpbmUgeyBnZXQ7IHNldDsgfQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9hbmltYXRpb25f Z2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIGNsYXNzIEFuaW1hdGlv biA6IEdMaWIuT2JqZWN0LCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJW0NDb2RlIChoYXNfY29u c3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHVibGljIEFuaW1hdGlvbiAoKTsKLS0JCXB1 YmxpYyB1bm93bmVkIENsdXR0ZXIuQW5pbWF0aW9uIGJpbmQgKHN0cmluZyBwcm9wZXJ0eV9uYW1l LCBHTGliLlZhbHVlIGZpbmFsKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQW5pbWF0aW9u IGJpbmRfaW50ZXJ2YWwgKHN0cmluZyBwcm9wZXJ0eV9uYW1lLCBvd25lZCBDbHV0dGVyLkludGVy dmFsIGludGVydmFsKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0 dGVyLkFscGhhIGdldF9hbHBoYSAoKTsKLS0JCXB1YmxpYyB1aW50IGdldF9kdXJhdGlvbiAoKTsK LS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuSW50ZXJ2YWwgZ2V0X2ludGVydmFsIChzdHJpbmcg cHJvcGVydHlfbmFtZSk7Ci0tCQlwdWJsaWMgYm9vbCBnZXRfbG9vcCAoKTsKLS0JCXB1YmxpYyB1 bG9uZyBnZXRfbW9kZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIEdMaWIuT2JqZWN0IGdldF9vYmpl Y3QgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlRpbWVsaW5lIGdldF90aW1lbGluZSAo KTsKLS0JCXB1YmxpYyBib29sIGhhc19wcm9wZXJ0eSAoc3RyaW5nIHByb3BlcnR5X25hbWUpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAi LCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbHBoYSAoQ2x1dHRlci5BbHBo YSBhbHBoYSk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfZHVyYXRpb24gKHVpbnQgbXNlY3MpOwotLQkJ cHVibGljIHZvaWQgc2V0X2xvb3AgKGJvb2wgbG9vcCk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfbW9k ZSAodWxvbmcgbW9kZSk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfb2JqZWN0IChHTGliLk9iamVjdCBv YmplY3QpOwotLQkJcHVibGljIHZvaWQgc2V0X3RpbWVsaW5lIChDbHV0dGVyLlRpbWVsaW5lPyB0 aW1lbGluZSk7Ci0tCQlwdWJsaWMgdm9pZCB1bmJpbmRfcHJvcGVydHkgKHN0cmluZyBwcm9wZXJ0 eV9uYW1lKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQW5pbWF0aW9uIHVwZGF0ZSAoc3Ry aW5nIHByb3BlcnR5X25hbWUsIEdMaWIuVmFsdWUgZmluYWwpOwotLQkJcHVibGljIHZvaWQgdXBk YXRlX2ludGVydmFsIChzdHJpbmcgcHJvcGVydHlfbmFtZSwgQ2x1dHRlci5JbnRlcnZhbCBpbnRl cnZhbCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIENsdXR0ZXIuQWxwaGEgYWxwaGEg eyBnZXQ7IHNldDsgfQotLQkJcHVibGljIHVpbnQgZHVyYXRpb24geyBnZXQ7IHNldDsgfQotLQkJ cHVibGljIGJvb2wgbG9vcCB7IGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMgdWxvbmcgbW9kZSB7IGdl dDsgc2V0OyB9Ci0tCQlwdWJsaWMgR0xpYi5PYmplY3Qgb2JqZWN0IHsgZ2V0OyBzZXQ7IH0KLS0J CXB1YmxpYyBDbHV0dGVyLlRpbWVsaW5lIHRpbWVsaW5lIHsgZ2V0OyBzZXQ7IH0KLS0JCVtIYXNF bWl0dGVyXQotLQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgY29tcGxldGVkICgpOwotLQkJ cHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgc3RhcnRlZCAoKTsKLS0JfQotIAlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNl KV0KLSAJW0NvbXBhY3RdCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIwLjIiKV0KLUBAIC01NDY3LDM3 ICs1MzAwLDE0IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfYmFja2Vu ZF9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCXB1YmxpYyBj bGFzcyBCYWNrZW5kIDogR0xpYi5PYmplY3QgewotKwlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFj a2VuZCA6IEdMaWIuT2JqZWN0IHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9 IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBCYWNrZW5kICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1 YmxpYyB2aXJ0dWFsIHZvaWQgYWRkX29wdGlvbnMgKEdMaWIuT3B0aW9uR3JvdXAgZ3JvdXApOwot LQkJcHVibGljIHZvaWQgYmVsbF9ub3RpZnkgKCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGlj IHZpcnR1YWwgYm9vbCBjcmVhdGVfY29udGV4dCAoKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCVtO b1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuU3RhZ2VXaW5kb3cg Y3JlYXRlX3N0YWdlIChDbHV0dGVyLlN0YWdlIHdyYXBwZXIpIHRocm93cyBHTGliLkVycm9yOwot LQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgZW5zdXJlX2NvbnRleHQgKENs dXR0ZXIuU3RhZ2Ugc3RhZ2UpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHVu b3duZWQgQ2x1dHRlci5EZXZpY2VNYW5hZ2VyIGdldF9kZXZpY2VfbWFuYWdlciAoKTsKLS0JCVtO b1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCBDbHV0dGVyLkZlYXR1cmVGbGFncyBnZXRfZmVh dHVyZXMgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlNlYXQgZ2V0X2RlZmF1bHRfc2Vh dCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENh aXJvLkZvbnRPcHRpb25zIGdldF9mb250X29wdGlvbnMgKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBD bHV0dGVyLklucHV0TWV0aG9kIGdldF9pbnB1dF9tZXRob2QgKCk7Ci0tCQlwdWJsaWMgdW5vd25l ZCBDbHV0dGVyLktleW1hcCBnZXRfa2V5bWFwICgpOwotIAkJcHVibGljIGRvdWJsZSBnZXRfcmVz b2x1dGlvbiAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIGluaXRf ZXZlbnRzICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgaW5pdF9m ZWF0dXJlcyAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCBib29sIHBvc3Rf cGFyc2UgKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZp cnR1YWwgYm9vbCBwcmVfcGFyc2UgKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlbTm9XcmFwcGVy XQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCByZWRyYXcgKENsdXR0ZXIuU3RhZ2Ugc3RhZ2UpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2ZvbnRfb3B0 aW9ucyAoQ2Fpcm8uRm9udE9wdGlvbnMgb3B0aW9ucyk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfaW5w dXRfbWV0aG9kIChDbHV0dGVyLklucHV0TWV0aG9kIG1ldGhvZCk7Ci1AQCAtNTUwOCw5NSArNTMx OCwxMSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40Iild Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgc2V0dGluZ3NfY2hhbmdlZCAoKTsKLSAJfQotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNs dXR0ZXJfYmVoYXZpb3VyX2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjYiLCBzaW5jZSA9ICIwLjIiKV0KLS0JcHVibGlj IGFic3RyYWN0IGNsYXNzIEJlaGF2aW91ciA6IEdMaWIuT2JqZWN0LCBDbHV0dGVyLlNjcmlwdGFi bGUgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJcHJv dGVjdGVkIEJlaGF2aW91ciAoKTsKLS0JCXB1YmxpYyB2b2lkIGFjdG9yc19mb3JlYWNoIChDbHV0 dGVyLkJlaGF2aW91ckZvcmVhY2hGdW5jIGZ1bmMpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1Ymxp YyB2aXJ0dWFsIHZvaWQgYWxwaGFfbm90aWZ5IChkb3VibGUgYWxwaGFfdmFsdWUpOwotLQkJcHVi bGljIHZvaWQgYXBwbHkgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQkJcHVibGljIEdMaWIuU0xp c3Q8d2VhayBDbHV0dGVyLkFjdG9yPiBnZXRfYWN0b3JzICgpOwotLQkJcHVibGljIHVub3duZWQg Q2x1dHRlci5BbHBoYSBnZXRfYWxwaGEgKCk7Ci0tCQlwdWJsaWMgaW50IGdldF9uX2FjdG9ycyAo KTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X250aF9hY3RvciAoaW50IGlu ZGV4Xyk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgYm9vbCBpc19h cHBsaWVkIChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLS0JCXB1YmxpYyB2b2lkIHJlbW92ZSAoQ2x1 dHRlci5BY3RvciBhY3Rvcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCQlwdWJs aWMgdm9pZCByZW1vdmVfYWxsICgpOwotLQkJcHVibGljIHZvaWQgc2V0X2FscGhhIChDbHV0dGVy LkFscGhhIGFscGhhKTsKLS0JCXB1YmxpYyBDbHV0dGVyLkFscGhhIGFscGhhIHsgZ2V0OyBzZXQ7 IH0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25h bCB2b2lkIGFwcGxpZWQgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjAuNCIpXQotLQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgcmVtb3ZlZCAoQ2x1dHRl ci5BY3RvciBhY3Rvcik7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0 ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2JlaGF2aW91cl9kZXB0aF9nZXRfdHlw ZSAoKSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS42Iiwgc2luY2UgPSAiMC4yIildCi0tCXB1YmxpYyBjbGFzcyBCZWhhdmlvdXJEZXB0aCA6 IENsdXR0ZXIuQmVoYXZpb3VyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJW0NDb2RlIChoYXNf Y29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckJlaGF2aW91cioiKV0K LS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyBCZWhhdmlvdXJEZXB0aCAo Q2x1dHRlci5BbHBoYT8gYWxwaGEsIGludCBkZXB0aF9zdGFydCwgaW50IGRlcHRoX2VuZCk7Ci0t CQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYm91bmRzIChv dXQgaW50IGRlcHRoX3N0YXJ0LCBvdXQgaW50IGRlcHRoX2VuZCk7Ci0tCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMC42IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYm91bmRzIChpbnQgZGVwdGhfc3RhcnQs IGludCBkZXB0aF9lbmQpOwotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMC40IildCi0tCQlwdWJsaWMgaW50IGRlcHRoX2VuZCB7IGdldDsgc2V0OyB9Ci0tCQlb Tm9BY2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLS0JCXB1Ymxp YyBpbnQgZGVwdGhfc3RhcnQgeyBnZXQ7IHNldDsgfQotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9iZWhhdmlv dXJfb3BhY2l0eV9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS42Iiwgc2luY2UgPSAiMC4yIildCi0tCXB1YmxpYyBjbGFz cyBCZWhhdmlvdXJPcGFjaXR5IDogQ2x1dHRlci5CZWhhdmlvdXIsIENsdXR0ZXIuU2NyaXB0YWJs ZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJD bHV0dGVyQmVoYXZpb3VyKiIpXQotLQkJcHVibGljIEJlaGF2aW91ck9wYWNpdHkgKENsdXR0ZXIu QWxwaGE/IGFscGhhLCB1aW50OCBvcGFjaXR5X3N0YXJ0LCB1aW50OCBvcGFjaXR5X2VuZCk7Ci0t CQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYm91bmRzIChv dXQgdWludDggb3BhY2l0eV9zdGFydCwgb3V0IHVpbnQ4IG9wYWNpdHlfZW5kKTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9ib3VuZHMgKHVpbnQ4IG9w YWNpdHlfc3RhcnQsIHVpbnQ4IG9wYWNpdHlfZW5kKTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQot LQkJcHVibGljIHVpbnQgb3BhY2l0eV9lbmQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JN ZXRob2RdCi0tCQlwdWJsaWMgdWludCBvcGFjaXR5X3N0YXJ0IHsgZ2V0OyBzZXQ7IH0KLS0JfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lk ID0gImNsdXR0ZXJfYmVoYXZpb3VyX3NjYWxlX2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjYiLCBzaW5jZSA9ICIwLjIi KV0KLS0JcHVibGljIGNsYXNzIEJlaGF2aW91clNjYWxlIDogQ2x1dHRlci5CZWhhdmlvdXIsIENs dXR0ZXIuU2NyaXB0YWJsZSB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBm YWxzZSwgdHlwZSA9ICJDbHV0dGVyQmVoYXZpb3VyKiIpXQotLQkJcHVibGljIEJlaGF2aW91clNj YWxlIChDbHV0dGVyLkFscGhhPyBhbHBoYSwgZG91YmxlIHhfc2NhbGVfc3RhcnQsIGRvdWJsZSB5 X3NjYWxlX3N0YXJ0LCBkb3VibGUgeF9zY2FsZV9lbmQsIGRvdWJsZSB5X3NjYWxlX2VuZCk7Ci0t CQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYm91bmRzIChv dXQgZG91YmxlIHhfc2NhbGVfc3RhcnQsIG91dCBkb3VibGUgeV9zY2FsZV9zdGFydCwgb3V0IGRv dWJsZSB4X3NjYWxlX2VuZCwgb3V0IGRvdWJsZSB5X3NjYWxlX2VuZCk7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYm91bmRzIChkb3VibGUgeF9zY2Fs ZV9zdGFydCwgZG91YmxlIHlfc2NhbGVfc3RhcnQsIGRvdWJsZSB4X3NjYWxlX2VuZCwgZG91Ymxl IHlfc2NhbGVfZW5kKTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjAuNiIpXQotLQkJcHVibGljIGRvdWJsZSB4X3NjYWxlX2VuZCB7IGdldDsgc2V0OyB9Ci0t CQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JCXB1 YmxpYyBkb3VibGUgeF9zY2FsZV9zdGFydCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1l dGhvZF0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBkb3VibGUgeV9z Y2FsZV9lbmQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lv biAoc2luY2UgPSAiMC42IildCi0tCQlwdWJsaWMgZG91YmxlIHlfc2NhbGVfc3RhcnQgeyBnZXQ7 IHNldDsgfQotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9iaW5fbGF5b3V0X2dldF90eXBlICgpIildCi0gCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJcHVibGljIGNsYXNzIEJpbkxheW91dCA6IENsdXR0 ZXIuTGF5b3V0TWFuYWdlciB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBm YWxzZSwgdHlwZSA9ICJDbHV0dGVyTGF5b3V0TWFuYWdlcioiKV0KLSAJCXB1YmxpYyBCaW5MYXlv dXQgKENsdXR0ZXIuQmluQWxpZ25tZW50IHhfYWxpZ24gPSBDbHV0dGVyLkJpbkFsaWdubWVudC5T VEFSVCwgQ2x1dHRlci5CaW5BbGlnbm1lbnQgeV9hbGlnbiA9IENsdXR0ZXIuQmluQWxpZ25tZW50 LlNUQVJUKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdm9pZCBhZGQgKENsdXR0ZXIu QWN0b3IgY2hpbGQsIENsdXR0ZXIuQmluQWxpZ25tZW50IHhfYWxpZ24sIENsdXR0ZXIuQmluQWxp Z25tZW50IHlfYWxpZ24pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9h bGlnbm1lbnQgKENsdXR0ZXIuQWN0b3I/IGNoaWxkLCBvdXQgQ2x1dHRlci5CaW5BbGlnbm1lbnQg eF9hbGlnbiwgb3V0IENsdXR0ZXIuQmluQWxpZ25tZW50IHlfYWxpZ24pOwotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIx LjIiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbGlnbm1lbnQgKENsdXR0ZXIuQWN0b3I/IGNoaWxk LCBDbHV0dGVyLkJpbkFsaWdubWVudCB4X2FsaWduLCBDbHV0dGVyLkJpbkFsaWdubWVudCB5X2Fs aWduKTsKLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLSAJCXB1Ymxp YyBDbHV0dGVyLkJpbkFsaWdubWVudCB4X2FsaWduIHsgZ2V0OyBzZXQ7IH0KLUBAIC01NjQ0LDk4 ICs1MzcwLDI5IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVj dF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJFZmZlY3QqIildCi0gCQlwdWJsaWMg Qmx1ckVmZmVjdCAoKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfYm94X2dldF90eXBlICgpIildCi0tCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLS0JcHVibGljIGNsYXNzIEJveCA6IENsdXR0ZXIuQWN0 b3IsIEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0dGVyLkNvbnRhaW5l ciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlv biA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3RvcioiKV0KLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4yIildCi0t CQlwdWJsaWMgQm94IChDbHV0dGVyLkxheW91dE1hbmFnZXIgbWFuYWdlcik7Ci0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0g IjEuMiIpXQotLQkJcHVibGljIENsdXR0ZXIuQ29sb3IgZ2V0X2NvbG9yICgpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9 ICIxLjIiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuTGF5b3V0TWFuYWdlciBnZXRfbGF5 b3V0X21hbmFnZXIgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgcGFjayAo Q2x1dHRlci5BY3RvciBhY3RvciwgLi4uKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMg dm9pZCBwYWNrX2FmdGVyIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBDbHV0dGVyLkFjdG9yPyBzaWJs aW5nLCAuLi4pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2b2lkIHBhY2tfYXQgKENs dXR0ZXIuQWN0b3IgYWN0b3IsIGludCBwb3NpdGlvbiwgLi4uKTsKLS0JCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4yIild Ci0tCQlwdWJsaWMgdm9pZCBwYWNrX2JlZm9yZSAoQ2x1dHRlci5BY3RvciBhY3RvciwgQ2x1dHRl ci5BY3Rvcj8gc2libGluZywgLi4uKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdm9p ZCBwYWNrdiAoQ2x1dHRlci5BY3RvciBhY3RvciwgW0NDb2RlIChhcnJheV9sZW5ndGhfY25hbWUg PSAibl9wcm9wZXJ0aWVzIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDEuNSwgYXJyYXlfbGVuZ3RoX3R5 cGUgPSAiZ3VpbnQiKV0gc3RyaW5nW10gcHJvcGVydGllcywgW0NDb2RlIChhcnJheV9sZW5ndGhf Y25hbWUgPSAibl9wcm9wZXJ0aWVzIiwgYXJyYXlfbGVuZ3RoX3BvcyA9IDEuNSwgYXJyYXlfbGVu Z3RoX3R5cGUgPSAiZ3VpbnQiKV0gR0xpYi5WYWx1ZVtdIHZhbHVlcyk7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEu MiIpXQotLQkJcHVibGljIHZvaWQgc2V0X2NvbG9yIChDbHV0dGVyLkNvbG9yPyBjb2xvcik7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIs IHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgc2V0X2xheW91dF9tYW5hZ2VyIChDbHV0 dGVyLkxheW91dE1hbmFnZXIgbWFuYWdlcik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGlj IENsdXR0ZXIuQ29sb3IgY29sb3IgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2Rd Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MCIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIGJvb2wgY29sb3Jfc2V0IHsgZ2V0OyBzZXQ7 IH0KLS0JCXB1YmxpYyBDbHV0dGVyLkxheW91dE1hbmFnZXIgbGF5b3V0X21hbmFnZXIgeyBnZXQ7 IHNldDsgfQotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9ib3hfbGF5b3V0X2dldF90eXBlICgpIildCi0gCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJcHVibGljIGNsYXNzIEJveExheW91dCA6IENsdXR0 ZXIuTGF5b3V0TWFuYWdlciB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBm YWxzZSwgdHlwZSA9ICJDbHV0dGVyTGF5b3V0TWFuYWdlcioiKV0KLSAJCXB1YmxpYyBCb3hMYXlv dXQgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2FsaWdubWVudCAo Q2x1dHRlci5BY3RvciBhY3Rvciwgb3V0IENsdXR0ZXIuQm94QWxpZ25tZW50IHhfYWxpZ24sIG91 dCBDbHV0dGVyLkJveEFsaWdubWVudCB5X2FsaWduKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlw dWJsaWMgdWludCBnZXRfZWFzaW5nX2R1cmF0aW9uICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0J CXB1YmxpYyB1bG9uZyBnZXRfZWFzaW5nX21vZGUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJ cHVibGljIGJvb2wgZ2V0X2V4cGFuZCAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0tCQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0g IjEuMiIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2ZpbGwgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIG91 dCBib29sIHhfZmlsbCwgb3V0IGJvb2wgeV9maWxsKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjQiKV0KLSAJCXB1YmxpYyBib29sIGdldF9ob21vZ2VuZW91cyAoKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgQ2x1dHRlci5PcmllbnRhdGlvbiBnZXRfb3JpZW50 YXRpb24gKCk7Ci0gCQlwdWJsaWMgYm9vbCBnZXRfcGFja19zdGFydCAoKTsKLSAJCXB1YmxpYyB1 aW50IGdldF9zcGFjaW5nICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyBib29sIGdl dF91c2VfYW5pbWF0aW9ucyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgYm9vbCBn ZXRfdmVydGljYWwgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgcGFjayAo Q2x1dHRlci5BY3RvciBhY3RvciwgYm9vbCBleHBhbmQsIGJvb2wgeF9maWxsLCBib29sIHlfZmls bCwgQ2x1dHRlci5Cb3hBbGlnbm1lbnQgeF9hbGlnbiwgQ2x1dHRlci5Cb3hBbGlnbm1lbnQgeV9h bGlnbik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgc2V0X2FsaWdubWVudCAo Q2x1dHRlci5BY3RvciBhY3RvciwgQ2x1dHRlci5Cb3hBbGlnbm1lbnQgeF9hbGlnbiwgQ2x1dHRl ci5Cb3hBbGlnbm1lbnQgeV9hbGlnbik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZv aWQgc2V0X2Vhc2luZ19kdXJhdGlvbiAodWludCBtc2Vjcyk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQot LQkJcHVibGljIHZvaWQgc2V0X2Vhc2luZ19tb2RlICh1bG9uZyBtb2RlKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAi MS4yIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZXhwYW5kIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBi b29sIGV4cGFuZCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHZvaWQgc2V0X2ZpbGwg KENsdXR0ZXIuQWN0b3IgYWN0b3IsIGJvb2wgeF9maWxsLCBib29sIHlfZmlsbCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfaG9tb2dlbmVvdXMgKGJv b2wgaG9tb2dlbmVvdXMpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSAJCXB1Ymxp YyB2b2lkIHNldF9vcmllbnRhdGlvbiAoQ2x1dHRlci5PcmllbnRhdGlvbiBvcmllbnRhdGlvbik7 Ci0gCQlwdWJsaWMgdm9pZCBzZXRfcGFja19zdGFydCAoYm9vbCBwYWNrX3N0YXJ0KTsKLSAJCXB1 YmxpYyB2b2lkIHNldF9zcGFjaW5nICh1aW50IHNwYWNpbmcpOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0K LS0JCXB1YmxpYyB2b2lkIHNldF91c2VfYW5pbWF0aW9ucyAoYm9vbCBhbmltYXRlKTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfdmVydGljYWwgKGJvb2wgdmVydGljYWwp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB1aW50IGVhc2luZ19kdXJhdGlvbiB7IGdl dDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMiIpXQotLQkJcHVibGljIHVsb25nIGVhc2luZ19tb2Rl IHsgZ2V0OyBzZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyBi b29sIGhvbW9nZW5lb3VzIHsgZ2V0OyBzZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEy IildCi0gCQlwdWJsaWMgQ2x1dHRlci5PcmllbnRhdGlvbiBvcmllbnRhdGlvbiB7IGdldDsgc2V0 OyB9Ci0gCQlwdWJsaWMgYm9vbCBwYWNrX3N0YXJ0IHsgZ2V0OyBzZXQ7IH0KLSAJCXB1YmxpYyB1 aW50IHNwYWNpbmcgeyBnZXQ7IHNldDsgfQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyBi b29sIHVzZV9hbmltYXRpb25zIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlw dWJsaWMgYm9vbCB2ZXJ0aWNhbCB7IGdldDsgc2V0OyB9Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2JyaWdo dG5lc3NfY29udHJhc3RfZWZmZWN0X2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEwIildCi1AQCAtNTc0OSw5ICs1NDA2LDkgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJ cHVibGljIHZvaWQgc2V0X2NvbnRyYXN0IChmbG9hdCBjb250cmFzdCk7Ci0gCQlwdWJsaWMgdm9p ZCBzZXRfY29udHJhc3RfZnVsbCAoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSk7 Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBDbHV0dGVyLkNvbG9yIGJyaWdodG5l c3MgeyBnZXQ7IHNldDsgfQotKwkJcHVibGljIENsdXR0ZXIuQ29sb3IgYnJpZ2h0bmVzcyB7IG93 bmVkIGdldDsgc2V0OyB9Ci0gCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBDbHV0dGVy LkNvbG9yIGNvbnRyYXN0IHsgZ2V0OyBzZXQ7IH0KLSsJCXB1YmxpYyBDbHV0dGVyLkNvbG9yIGNv bnRyYXN0IHsgb3duZWQgZ2V0OyBzZXQ7IH0KLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJW0NvbXBh Y3RdCi1AQCAtNTc3MCwzNyArNTQyNyw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1Ymxp YyBmbG9hdCB4OwotIAkJcHVibGljIGZsb2F0IHk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2NhaXJvX3Rl eHR1cmVfZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIGNsYXNzIENh aXJvVGV4dHVyZSA6IENsdXR0ZXIuVGV4dHVyZSwgQXRrLkltcGxlbWVudG9yLCBDbHV0dGVyLkFu aW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlwdGFibGUgewotLQkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckFjdG9y KiIpXQotLQkJcHVibGljIENhaXJvVGV4dHVyZSAodWludCB3aWR0aCwgdWludCBoZWlnaHQpOwot LQkJcHVibGljIHZvaWQgY2xlYXIgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS44Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQ2Fp cm8uQ29udGV4dCBjcmVhdGUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS44Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQ2Fpcm8u Q29udGV4dCBjcmVhdGVfcmVnaW9uIChpbnQgeF9vZmZzZXQsIGludCB5X29mZnNldCwgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1Ymxp YyBib29sIGdldF9hdXRvX3Jlc2l6ZSAoKTsKLS0JCXB1YmxpYyB2b2lkIGdldF9zdXJmYWNlX3Np emUgKG91dCB1aW50IHdpZHRoLCBvdXQgdWludCBoZWlnaHQpOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgaW52YWxpZGF0ZSAoKTsKLS0JCVtWZXJzaW9uIChz aW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyB2b2lkIGludmFsaWRhdGVfcmVjdGFuZ2xlIChDYWly by5SZWN0YW5nbGVJbnQ/IHJlY3QpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJ cHVibGljIHZvaWQgc2V0X2F1dG9fcmVzaXplIChib29sIHZhbHVlKTsKLS0JCXB1YmxpYyB2b2lk IHNldF9zdXJmYWNlX3NpemUgKHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0KTsKLS0JCVtWZXJzaW9u IChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBib29sIGF1dG9fcmVzaXplIHsgZ2V0OyBzZXQ7 IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIHVpbnQgc3VyZmFjZV9oZWlnaHQg eyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJsaWMgdWludCBzdXJm YWNlX3dpZHRoIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLS0J CXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCBDYWlyby5TdXJmYWNlIGNyZWF0ZV9zdXJmYWNlICh1aW50 IHdpZHRoLCB1aW50IGhlaWdodCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlw dWJsaWMgdmlydHVhbCBzaWduYWwgYm9vbCBkcmF3IChDYWlyby5Db250ZXh0IGNyKTsKLS0JfQot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lk ID0gImNsdXR0ZXJfY2FudmFzX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEwIildCi0gCXB1YmxpYyBjbGFzcyBDYW52YXMgOiBHTGliLk9iamVjdCwgQ2x1dHRlci5Db250 ZW50IHsKLUBAIC01ODI3LDE3ICs1NDUzLDIwIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1 YmxpYyBDbHV0dGVyLkNvbnRhaW5lciBjb250YWluZXIgeyBnZXQ7IGNvbnN0cnVjdDsgfQotIAl9 Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVf aWQgPSAiY2x1dHRlcl9jbGlja19hY3Rpb25fZ2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKHNp bmNlID0gIjEuNCIpXQotIAlwdWJsaWMgY2xhc3MgQ2xpY2tBY3Rpb24gOiBDbHV0dGVyLkFjdGlv biB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJD bHV0dGVyQWN0aW9uKiIpXQotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGlj IENsaWNrQWN0aW9uICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGlj IHVpbnQgZ2V0X2J1dHRvbiAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1 YmxpYyB2b2lkIGdldF9jb29yZHMgKG91dCBmbG9hdCBwcmVzc194LCBvdXQgZmxvYXQgcHJlc3Nf eSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMgQ2x1dHRlci5Nb2Rp ZmllclR5cGUgZ2V0X3N0YXRlICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJ cHVibGljIHZvaWQgcmVsZWFzZSAoKTsKLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotKwkJW1ZlcnNp b24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIGJvb2wgaGVsZCB7IGdldDsgfQotIAkJW05v QWNjZXNzb3JNZXRob2RdCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi1AQCAtNTg0Niw3 ICs1NDc1LDkgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu OCIpXQotIAkJcHVibGljIGludCBsb25nX3ByZXNzX3RocmVzaG9sZCB7IGdldDsgc2V0OyB9Ci0g CQlbTm9BY2Nlc3Nvck1ldGhvZF0KLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1 YmxpYyBib29sIHByZXNzZWQgeyBnZXQ7IH0KLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0K LSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIGNsaWNrZWQgKENsdXR0ZXIuQWN0b3IgYWN0 b3IpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAkJcHVibGljIHZpcnR1YWwgc2ln bmFsIGJvb2wgbG9uZ19wcmVzcyAoQ2x1dHRlci5BY3RvciBhY3RvciwgQ2x1dHRlci5Mb25nUHJl c3NTdGF0ZSBzdGF0ZSk7Ci1AQCAtNTg4OCw4ICs1NTE5LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHJvdGVjdGVkIENvbnN0cmFpbnQgKCk7Ci0gCQlbTm9XcmFwcGVyXQotIAkJcHVibGlj IHZpcnR1YWwgdm9pZCB1cGRhdGVfYWxsb2NhdGlvbiAoQ2x1dHRlci5BY3RvciBhY3RvciwgQ2x1 dHRlci5BY3RvckJveCBhbGxvY2F0aW9uKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmly dHVhbCB2b2lkIHVwZGF0ZV9wcmVmZXJyZWRfc2l6ZSAoQ2x1dHRlci5BY3RvciBhY3RvciwgQ2x1 dHRlci5PcmllbnRhdGlvbiBkaXJlY3Rpb24sIGZsb2F0IGZvcl9zaXplLCBmbG9hdCBtaW5pbXVt X3NpemUsIGZsb2F0IG5hdHVyYWxfc2l6ZSk7Ci0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIHVwZGF0 ZV9wcmVmZXJyZWRfc2l6ZSAoQ2x1dHRlci5BY3RvciBhY3RvciwgQ2x1dHRlci5PcmllbnRhdGlv biBkaXJlY3Rpb24sIGZsb2F0IGZvcl9zaXplLCByZWYgZmxvYXQgbWluaW11bV9zaXplLCByZWYg ZmxvYXQgbmF0dXJhbF9zaXplKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJW0NvbXBhY3RdCi1A QCAtNTg5OCw2ICs1NTI4LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHdlYWsg Q2x1dHRlci5JbnB1dERldmljZSBkZXZpY2U7Ci0gCQlwdWJsaWMgQ2x1dHRlci5FdmVudEZsYWdz IGZsYWdzOwotIAkJcHVibGljIHdlYWsgQ2x1dHRlci5BY3RvciByZWxhdGVkOwotKwkJcHVibGlj IHdlYWsgQ2x1dHRlci5FdmVudFNlcXVlbmNlIHNlcXVlbmNlOwotIAkJcHVibGljIHdlYWsgQ2x1 dHRlci5BY3RvciBzb3VyY2U7Ci0gCQlwdWJsaWMgd2VhayBDbHV0dGVyLlN0YWdlIHN0YWdlOwot IAkJcHVibGljIHVpbnQzMiB0aW1lOwotQEAgLTU5MzEsOTggKzU1NjIsMjEgQEAgbmFtZXNwYWNl IENsdXR0ZXIgewotIAkJcHVibGljIHZvaWQgc2V0X2ZhY3RvciAoZG91YmxlIGZhY3Rvcik7Ci0g CQlwdWJsaWMgZG91YmxlIGZhY3RvciB7IGdldDsgc2V0OyB9Ci0gCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2Rl dmljZV9tYW5hZ2VyX2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0K LS0JcHVibGljIGFic3RyYWN0IGNsYXNzIERldmljZU1hbmFnZXIgOiBHTGliLk9iamVjdCB7Ci0t CQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwcm90ZWN0ZWQg RGV2aWNlTWFuYWdlciAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCB2b2lk IGFkZF9kZXZpY2UgKENsdXR0ZXIuSW5wdXREZXZpY2UgZGV2aWNlKTsKLS0JCVtOb1dyYXBwZXJd Ci0tCQlwdWJsaWMgdmlydHVhbCB2b2lkIGFwcGx5X2tiZF9hMTF5X3NldHRpbmdzIChDbHV0dGVy LktiZEExMXlTZXR0aW5ncyBzZXR0aW5ncyk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZp cnR1YWwgdm9pZCBjb21wcmVzc19tb3Rpb24gKENsdXR0ZXIuRXZlbnQgZXZlbnQsIENsdXR0ZXIu RXZlbnQgdG9fZGlzY2FyZCk7Ci0tCQlwdWJsaWMgdmlydHVhbCBDbHV0dGVyLlZpcnR1YWxJbnB1 dERldmljZSBjcmVhdGVfdmlydHVhbF9kZXZpY2UgKENsdXR0ZXIuSW5wdXREZXZpY2VUeXBlIGRl dmljZV90eXBlKTsKLS0JCXB1YmxpYyB2aXJ0dWFsIHVub3duZWQgQ2x1dHRlci5JbnB1dERldmlj ZSBnZXRfY29yZV9kZXZpY2UgKENsdXR0ZXIuSW5wdXREZXZpY2VUeXBlIGRldmljZV90eXBlKTsK LS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLkRldmljZU1hbmFnZXIgZ2V0X2RlZmF1 bHQgKCk7Ci0tCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuSW5wdXREZXZpY2UgZ2V0 X2RldmljZSAoaW50IGRldmljZV9pZCk7Ci0tCQlwdWJsaWMgdm9pZCBnZXRfa2JkX2ExMXlfc2V0 dGluZ3MgKENsdXR0ZXIuS2JkQTExeVNldHRpbmdzIHNldHRpbmdzKTsKLS0JCXB1YmxpYyB2aXJ0 dWFsIENsdXR0ZXIuVmlydHVhbERldmljZVR5cGUgZ2V0X3N1cHBvcnRlZF92aXJ0dWFsX2Rldmlj ZV90eXBlcyAoKTsKLS0JCXB1YmxpYyBHTGliLlNMaXN0PHdlYWsgQ2x1dHRlci5JbnB1dERldmlj ZT4gbGlzdF9kZXZpY2VzICgpOwotLQkJcHVibGljIHVub3duZWQgR0xpYi5TTGlzdDxDbHV0dGVy LklucHV0RGV2aWNlPiBwZWVrX2RldmljZXMgKCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGlj IHZpcnR1YWwgdm9pZCByZW1vdmVfZGV2aWNlIChDbHV0dGVyLklucHV0RGV2aWNlIGRldmljZSk7 Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIHZpcnR1YWwgdm9pZCBzZWxlY3Rfc3RhZ2VfZXZl bnRzIChDbHV0dGVyLlN0YWdlIHN0YWdlKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9rYmRfYTExeV9z ZXR0aW5ncyAoQ2x1dHRlci5LYmRBMTF5U2V0dGluZ3Mgc2V0dGluZ3MpOwotLQkJW05vQWNjZXNz b3JNZXRob2RdCi0tCQlwdWJsaWMgQ2x1dHRlci5CYWNrZW5kIGJhY2tlbmQgeyBvd25lZCBnZXQ7 IGNvbnN0cnVjdDsgfQotLQkJcHVibGljIHNpZ25hbCB2b2lkIGRldmljZV9hZGRlZCAoQ2x1dHRl ci5JbnB1dERldmljZSBkZXZpY2UpOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGRldmljZV9yZW1v dmVkIChDbHV0dGVyLklucHV0RGV2aWNlIGRldmljZSk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQg a2JkX2ExMXlfZmxhZ3NfY2hhbmdlZCAodWludCBzZXR0aW5nc19mbGFncywgdWludCBjaGFuZ2Vk X21hc2spOwotLQkJcHVibGljIHNpZ25hbCB2b2lkIGtiZF9hMTF5X21vZHNfc3RhdGVfY2hhbmdl ZCAodWludCBsYXRjaGVkX21hc2ssIHVpbnQgbG9ja2VkX21hc2spOwotLQkJcHVibGljIHNpZ25h bCB2b2lkIHRvb2xfY2hhbmdlZCAoQ2x1dHRlci5JbnB1dERldmljZSBvYmplY3QsIENsdXR0ZXIu SW5wdXREZXZpY2VUb29sIHAwKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfZHJhZ19hY3Rpb25fZ2V0X3R5 cGUgKCkiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQlwdWJsaWMgY2xhc3MgRHJh Z0FjdGlvbiA6IENsdXR0ZXIuQWN0aW9uIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5j dGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3Rpb24qIildCi0tCQlwdWJsaWMgRHJhZ0Fj dGlvbiAoKTsKLS0JCXB1YmxpYyBib29sIGdldF9kcmFnX2FyZWEgKENsdXR0ZXIuUmVjdCBkcmFn X2FyZWEpOwotLQkJcHVibGljIENsdXR0ZXIuRHJhZ0F4aXMgZ2V0X2RyYWdfYXhpcyAoKTsKLS0J CXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2RyYWdfaGFuZGxlICgpOwotLQkJcHVi bGljIHZvaWQgZ2V0X2RyYWdfdGhyZXNob2xkIChvdXQgdWludCB4X3RocmVzaG9sZCwgb3V0IHVp bnQgeV90aHJlc2hvbGQpOwotLQkJcHVibGljIHZvaWQgZ2V0X21vdGlvbl9jb29yZHMgKG91dCBm bG9hdCBtb3Rpb25feCwgb3V0IGZsb2F0IG1vdGlvbl95KTsKLS0JCXB1YmxpYyB2b2lkIGdldF9w cmVzc19jb29yZHMgKG91dCBmbG9hdCBwcmVzc194LCBvdXQgZmxvYXQgcHJlc3NfeSk7Ci0tCQlw dWJsaWMgdm9pZCBzZXRfZHJhZ19hcmVhIChDbHV0dGVyLlJlY3Q/IGRyYWdfYXJlYSk7Ci0tCQlw dWJsaWMgdm9pZCBzZXRfZHJhZ19heGlzIChDbHV0dGVyLkRyYWdBeGlzIGF4aXMpOwotLQkJcHVi bGljIHZvaWQgc2V0X2RyYWdfaGFuZGxlIChDbHV0dGVyLkFjdG9yPyBoYW5kbGUpOwotLQkJcHVi bGljIHZvaWQgc2V0X2RyYWdfdGhyZXNob2xkIChpbnQgeF90aHJlc2hvbGQsIGludCB5X3RocmVz aG9sZCk7Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEy IildCi0tCQlwdWJsaWMgQ2x1dHRlci5SZWN0IGRyYWdfYXJlYSB7IG93bmVkIGdldDsgc2V0OyB9 Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0t CQlwdWJsaWMgYm9vbCBkcmFnX2FyZWFfc2V0IHsgZ2V0OyB9Ci0tCQlwdWJsaWMgQ2x1dHRlci5E cmFnQXhpcyBkcmFnX2F4aXMgeyBnZXQ7IHNldDsgfQotLQkJcHVibGljIENsdXR0ZXIuQWN0b3Ig ZHJhZ19oYW5kbGUgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJs aWMgaW50IHhfZHJhZ190aHJlc2hvbGQgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRo b2RdCi0tCQlwdWJsaWMgaW50IHlfZHJhZ190aHJlc2hvbGQgeyBnZXQ7IHNldDsgfQotLQkJcHVi bGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgZHJhZ19iZWdpbiAoQ2x1dHRlci5BY3RvciBhY3Rvciwg ZmxvYXQgZXZlbnRfeCwgZmxvYXQgZXZlbnRfeSwgQ2x1dHRlci5Nb2RpZmllclR5cGUgbW9kaWZp ZXJzKTsKLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIGRyYWdfZW5kIChDbHV0dGVyLkFj dG9yIGFjdG9yLCBmbG9hdCBldmVudF94LCBmbG9hdCBldmVudF95LCBDbHV0dGVyLk1vZGlmaWVy VHlwZSBtb2RpZmllcnMpOwotLQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgZHJhZ19tb3Rp b24gKENsdXR0ZXIuQWN0b3IgYWN0b3IsIGZsb2F0IGRlbHRhX3gsIGZsb2F0IGRlbHRhX3kpOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCBi b29sIGRyYWdfcHJvZ3Jlc3MgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIGZsb2F0IGRlbHRhX3gsIGZs b2F0IGRlbHRhX3kpOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVy L2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9kcm9wX2FjdGlvbl9nZXRfdHlwZSAoKSIp XQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCXB1YmxpYyBjbGFzcyBEcm9wQWN0aW9u IDogQ2x1dHRlci5BY3Rpb24gewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0g ZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckFjdGlvbioiKV0KLS0JCXB1YmxpYyBEcm9wQWN0aW9uICgp OwotLQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIGJvb2wgY2FuX2Ryb3AgKENsdXR0ZXIuQWN0b3Ig YWN0b3IsIGZsb2F0IGV2ZW50X3gsIGZsb2F0IGV2ZW50X3kpOwotLQkJcHVibGljIHZpcnR1YWwg c2lnbmFsIHZvaWQgZHJvcCAoQ2x1dHRlci5BY3RvciBhY3RvciwgZmxvYXQgZXZlbnRfeCwgZmxv YXQgZXZlbnRfeSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGljIHNp Z25hbCB2b2lkIGRyb3BfY2FuY2VsIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBmbG9hdCBldmVudF94 LCBmbG9hdCBldmVudF95KTsKLS0JCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIG92ZXJfaW4g KENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZvaWQgb3Zl cl9vdXQgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9lZmZlY3RfZ2V0 X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAlwdWJsaWMgYWJzdHJh Y3QgY2xhc3MgRWZmZWN0IDogQ2x1dHRlci5BY3Rvck1ldGEgewotIAkJW0NDb2RlIChoYXNfY29u c3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIEVmZmVjdCAoKTsKLSAJCVtO b1dyYXBwZXJdCi0tCQlwdWJsaWMgdmlydHVhbCBib29sIGdldF9wYWludF92b2x1bWUgKENsdXR0 ZXIuUGFpbnRWb2x1bWUgdm9sdW1lKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIGJvb2wgbW9kaWZ5X3Bh aW50X3ZvbHVtZSAoQ2x1dHRlci5QYWludFZvbHVtZSB2b2x1bWUpOwotIAkJW05vV3JhcHBlcl0K LS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcGFpbnQgKENsdXR0ZXIuRWZmZWN0UGFpbnRGbGFncyBm bGFncyk7Ci0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIHBhaW50IChDbHV0dGVyLlBhaW50Q29udGV4 dCBwYWludF9jb250ZXh0LCBDbHV0dGVyLkVmZmVjdFBhaW50RmxhZ3MgZmxhZ3MpOwotIAkJW05v V3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcGljayAoQ2x1dHRlci5FZmZlY3RQYWlu dEZsYWdzIGZsYWdzKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcGljayAoQ2x1dHRlci5QaWNr Q29udGV4dCBwaWNrX2NvbnRleHQpOwotIAkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFs IHZvaWQgcG9zdF9wYWludCAoKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgcG9zdF9wYWludCAo Q2x1dHRlci5QYWludENvbnRleHQgcGFpbnRfY29udGV4dCk7Ci0gCQlbTm9XcmFwcGVyXQotLQkJ cHVibGljIHZpcnR1YWwgYm9vbCBwcmVfcGFpbnQgKCk7Ci0rCQlwdWJsaWMgdmlydHVhbCBib29s IHByZV9wYWludCAoQ2x1dHRlci5QYWludENvbnRleHQgcGFpbnRfY29udGV4dCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgdm9pZCBxdWV1ZV9yZXBhaW50ICgpOwot IAl9Ci1AQCAtNjAzMyw4ICs1NTg3LDEyIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1Ymxp YyBDbHV0dGVyLkV2ZW50VHlwZSB0eXBlOwotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0 aW9uID0gZmFsc2UpXQotIAkJcHVibGljIEV2ZW50IChDbHV0dGVyLkV2ZW50VHlwZSB0eXBlKTsK LSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0rCQlwdWJsaWMgc3RhdGljIHVpbnQgYWRk X2ZpbHRlciAoQ2x1dHRlci5TdGFnZT8gc3RhZ2UsIFtDQ29kZSAoZGVsZWdhdGVfdGFyZ2V0X3Bv cyA9IDIuMiwgZGVzdHJveV9ub3RpZnlfcG9zID0gMi4xKV0gb3duZWQgQ2x1dHRlci5FdmVudEZp bHRlckZ1bmMgZnVuYyk7Ci0gCQlwdWJsaWMgQ2x1dHRlci5FdmVudCBjb3B5ICgpOwotIAkJcHVi bGljIHZvaWQgZnJlZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLSsJCXB1Ymxp YyBzdGF0aWMgQ2x1dHRlci5FdmVudCBAZ2V0ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTIiKV0KLSAJCXB1YmxpYyBkb3VibGUgZ2V0X2FuZ2xlIChDbHV0dGVyLkV2ZW50IHRhcmdldCk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi1AQCAtNjA3Myw3ICs1NjMxLDcgQEAgbmFt ZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHVpbnQgZ2V0X21vZGVfZ3JvdXAgKCk7Ci0gCQlw dWJsaWMgYm9vbCBnZXRfcGFkX2V2ZW50X2RldGFpbHMgKG91dCB1aW50IG51bWJlciwgb3V0IHVp bnQgbW9kZSwgb3V0IGRvdWJsZSB2YWx1ZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIp XQotLQkJcHVibGljIHZvaWQgZ2V0X3Bvc2l0aW9uIChDbHV0dGVyLlBvaW50IHBvc2l0aW9uKTsK LSsJCXB1YmxpYyB2b2lkIGdldF9wb3NpdGlvbiAoR3JhcGhlbmUuUG9pbnQgcG9zaXRpb24pOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5B Y3RvciBnZXRfcmVsYXRlZCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi1AQCAt NjEwNiw4ICs1NjY0LDEyIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBib29sIGhh c19zaGlmdF9tb2RpZmllciAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlw dWJsaWMgYm9vbCBpc19wb2ludGVyX2VtdWxhdGVkICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0g IjAuNCIpXQotKwkJcHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuRXZlbnQgcGVlayAoKTsK LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLSAJCXB1YmxpYyB2b2lkIHB1dCAoKTsKLSsJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0rCQlwdWJsaWMgc3RhdGljIHZvaWQgcmVtb3Zl X2ZpbHRlciAodWludCBpZCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJs aWMgdm9pZCBzZXRfYnV0dG9uICh1aW50MzIgYnV0dG9uKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjgiKV0KLUBAIC02MTQwLDE2ICs1NzAyLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJ cHVibGljIHZvaWQgc2V0X3N0YXRlIChDbHV0dGVyLk1vZGlmaWVyVHlwZSBzdGF0ZSk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfdGltZSAodWludDMy IHRpbWVfKTsKLS0JCXB1YmxpYyBDbHV0dGVyLkFueUV2ZW50IGFueSB7W0NDb2RlIChjbmFtZSA9 ICIoQ2x1dHRlckFueUV2ZW50ICopIildICBnZXQ7IH0KLS0JCXB1YmxpYyBDbHV0dGVyLkJ1dHRv bkV2ZW50IGJ1dHRvbiB7W0NDb2RlIChjbmFtZSA9ICIoQ2x1dHRlckJ1dHRvbkV2ZW50ICopIild ICBnZXQ7IH0KLS0JCXB1YmxpYyBDbHV0dGVyLkNyb3NzaW5nRXZlbnQgY3Jvc3Npbmcge1tDQ29k ZSAoY25hbWUgPSAiKENsdXR0ZXJDcm9zc2luZ0V2ZW50ICopIildICBnZXQ7IH0KLS0JCXB1Ymxp YyBDbHV0dGVyLktleUV2ZW50IGtleSB7W0NDb2RlIChjbmFtZSA9ICIoQ2x1dHRlcktleUV2ZW50 ICopIildICBnZXQ7IH0KLS0JCXB1YmxpYyBDbHV0dGVyLk1vdGlvbkV2ZW50IG1vdGlvbiB7W0ND b2RlIChjbmFtZSA9ICIoQ2x1dHRlck1vdGlvbkV2ZW50ICopIildICBnZXQ7IH0KLS0JCXB1Ymxp YyBDbHV0dGVyLlNjcm9sbEV2ZW50IHNjcm9sbCB7W0NDb2RlIChjbmFtZSA9ICIoQ2x1dHRlclNj cm9sbEV2ZW50ICopIildICBnZXQ7IH0KLS0JCXB1YmxpYyBDbHV0dGVyLlN0YWdlU3RhdGVFdmVu dCBzdGFnZV9zdGF0ZSB7W0NDb2RlIChjbmFtZSA9ICIoQ2x1dHRlclN0YWdlU3RhdGVFdmVudCAq KSIpXSAgZ2V0OyB9Ci0tCQlwdWJsaWMgQ2x1dHRlci5Ub3VjaEV2ZW50IHRvdWNoIHtbQ0NvZGUg KGNuYW1lID0gIihDbHV0dGVyVG91Y2hFdmVudCAqKSIpXSAgZ2V0OyB9Ci0tCQlwdWJsaWMgQ2x1 dHRlci5Ub3VjaHBhZFBpbmNoRXZlbnQgdG91Y2hwYWRfcGluY2gge1tDQ29kZSAoY25hbWUgPSAi KENsdXR0ZXJUb3VjaHBhZFBpbmNoRXZlbnQgKikiKV0gIGdldDsgfQotLQkJcHVibGljIENsdXR0 ZXIuVG91Y2hwYWRTd2lwZUV2ZW50IHRvdWNocGFkX3N3aXBlIHtbQ0NvZGUgKGNuYW1lID0gIihD bHV0dGVyVG91Y2hwYWRTd2lwZUV2ZW50ICopIildICBnZXQ7IH0KLSAJfQotIAlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdf Ym94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJj bHV0dGVyX2V2ZW50X3NlcXVlbmNlX2dldF90eXBlICgpIildCi0gCVtDb21wYWN0XQotQEAgLTYx OTgsMTAgKzU3NTAsMjQgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMTYiKV0KLSAJCXB1YmxpYyBib29sIHNuYXBfdG9fZ3JpZCB7IGdldDsgc2V0OyB9Ci0g CX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlw ZV9pZCA9ICJjbHV0dGVyX2ZyYW1lX2Nsb2NrX2dldF90eXBlICgpIildCi0rCXB1YmxpYyBjbGFz cyBGcmFtZUNsb2NrIDogR0xpYi5PYmplY3QgewotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1 bmN0aW9uID0gZmFsc2UpXQotKwkJcHVibGljIEZyYW1lQ2xvY2sgKGZsb2F0IHJlZnJlc2hfcmF0 ZSwgQ2x1dHRlci5GcmFtZUxpc3RlbmVySWZhY2UgaWZhY2UsIHZvaWQqIHVzZXJfZGF0YSk7Ci0r CQlwdWJsaWMgdm9pZCBhZGRfdGltZWxpbmUgKENsdXR0ZXIuVGltZWxpbmUgdGltZWxpbmUpOwot KwkJcHVibGljIGZsb2F0IGdldF9yZWZyZXNoX3JhdGUgKCk7Ci0rCQlwdWJsaWMgdm9pZCBpbmhp Yml0ICgpOwotKwkJcHVibGljIHZvaWQgcmVtb3ZlX3RpbWVsaW5lIChDbHV0dGVyLlRpbWVsaW5l IHRpbWVsaW5lKTsKLSsJCXB1YmxpYyB2b2lkIHNjaGVkdWxlX3VwZGF0ZSAoKTsKLSsJCXB1Ymxp YyB2b2lkIHNjaGVkdWxlX3VwZGF0ZV9ub3cgKCk7Ci0rCQlwdWJsaWMgdm9pZCB1bmluaGliaXQg KCk7Ci0rCQlbSGFzRW1pdHRlcl0KLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBkZXN0cm95ICgpOwot Kwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5 cGVfaWQgPSAiY2x1dHRlcl9nZXN0dXJlX2FjdGlvbl9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lv biAoc2luY2UgPSAiMS44IildCi0gCXB1YmxpYyBjbGFzcyBHZXN0dXJlQWN0aW9uIDogQ2x1dHRl ci5BY3Rpb24gewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5 cGUgPSAiQ2x1dHRlckFjdGlvbioiKV0KLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJ CXB1YmxpYyBHZXN0dXJlQWN0aW9uICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0K LSAJCXB1YmxpYyB2b2lkIGNhbmNlbCAoKTsKLUBAIC02MjExLDYgKzU3NzcsNyBAQCBuYW1lc3Bh Y2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLklucHV0RGV2aWNlIGdldF9k ZXZpY2UgKHVpbnQgcG9pbnQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLSAJCXB1 YmxpYyB1bm93bmVkIENsdXR0ZXIuRXZlbnQgZ2V0X2xhc3RfZXZlbnQgKHVpbnQgcG9pbnQpOwot KwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAkJcHVibGljIHZvaWQgZ2V0X21vdGlvbl9j b29yZHMgKHVpbnQgcG9pbnQsIG91dCBmbG9hdCBtb3Rpb25feCwgb3V0IGZsb2F0IG1vdGlvbl95 KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgZmxvYXQgZ2V0X21v dGlvbl9kZWx0YSAodWludCBwb2ludCwgb3V0IGZsb2F0IGRlbHRhX3gsIG91dCBmbG9hdCBkZWx0 YV95KTsKLUBAIC02MjE4LDcgKzU3ODUsOSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJs aWMgdWludCBnZXRfbl9jdXJyZW50X3BvaW50cyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEyIildCi0gCQlwdWJsaWMgaW50IGdldF9uX3RvdWNoX3BvaW50cyAoKTsKLSsJCVtWZXJzaW9u IChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1YmxpYyB2b2lkIGdldF9wcmVzc19jb29yZHMgKHVpbnQg cG9pbnQsIG91dCBmbG9hdCBwcmVzc194LCBvdXQgZmxvYXQgcHJlc3NfeSk7Ci0rCQlbVmVyc2lv biAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgdm9pZCBnZXRfcmVsZWFzZV9jb29yZHMgKHVp bnQgcG9pbnQsIG91dCBmbG9hdCByZWxlYXNlX3gsIG91dCBmbG9hdCByZWxlYXNlX3kpOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuRXZl bnRTZXF1ZW5jZSBnZXRfc2VxdWVuY2UgKHVpbnQgcG9pbnQpOwotQEAgLTYyNDYsOSArNTgxNSwx MyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgZmxvYXQgdGhyZXNob2xkX3RyaWdn ZXJfZGlzdGFuY2VfeSB7IGdldDsgY29uc3RydWN0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MS4xOCIpXQotIAkJcHVibGljIENsdXR0ZXIuR2VzdHVyZVRyaWdnZXJFZGdlIHRocmVzaG9sZF90 cmlnZ2VyX2VkZ2UgeyBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEu OCIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIGJvb2wgZ2VzdHVyZV9iZWdpbiAoQ2x1dHRl ci5BY3RvciBhY3Rvcik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMg dmlydHVhbCBzaWduYWwgdm9pZCBnZXN0dXJlX2NhbmNlbCAoQ2x1dHRlci5BY3RvciBhY3Rvcik7 Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwg dm9pZCBnZXN0dXJlX2VuZCAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0rCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS44IildCi0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgYm9vbCBnZXN0dXJlX3Byb2dy ZXNzIChDbHV0dGVyLkFjdG9yIGFjdG9yKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfZ3JpZF9sYXlvdXRf Z2V0X3R5cGUgKCkiKV0KLUBAIC02Mjc4LDE5ICs1ODUxLDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHVibGljIGJvb2wgcm93X2hvbW9nZW5lb3VzIHsgZ2V0OyBzZXQ7IH0KLSAJCXB1Ymxp YyB1aW50IHJvd19zcGFjaW5nIHsgZ2V0OyBzZXQ7IH0KLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfZ3JvdXBf Z2V0X3R5cGUgKCkiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotLQlwdWJsaWMgY2xh c3MgR3JvdXAgOiBDbHV0dGVyLkFjdG9yLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0 YWJsZSwgQ2x1dHRlci5Db250YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0tCQlbQ0NvZGUg KGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyQWN0b3IqIild Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MCIpXQotLQkJcHVibGljIEdyb3VwICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjIiKV0KLS0JCXB1YmxpYyBp bnQgZ2V0X25fY2hpbGRyZW4gKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuMiIpXQotLQkJcHVibGljIHVub3du ZWQgQ2x1dHRlci5BY3RvciBnZXRfbnRoX2NoaWxkIChpbnQgaW5kZXhfKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCQlwdWJs aWMgdm9pZCByZW1vdmVfYWxsICgpOwotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9pbWFnZV9nZXRfdHlwZSAo KSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAlwdWJsaWMgY2xhc3MgSW1hZ2Ug OiBHTGliLk9iamVjdCwgQ2x1dHRlci5Db250ZW50IHsKLUBAIC02MzA2LDYgKzU4NjYsOCBAQCBu YW1lc3BhY2UgQ2x1dHRlciB7Ci0gCXB1YmxpYyBjbGFzcyBJbnB1dERldmljZSA6IEdMaWIuT2Jq ZWN0IHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCXBy b3RlY3RlZCBJbnB1dERldmljZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSsJ CXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2FjdG9yIChDbHV0dGVyLkV2ZW50U2Vx dWVuY2U/IHNlcXVlbmNlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1Ymxp YyB1bm93bmVkIENsdXR0ZXIuSW5wdXREZXZpY2UgZ2V0X2Fzc29jaWF0ZWRfZGV2aWNlICgpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotQEAgLTYzMTMsNyArNTg3NSw3IEBAIG5hbWVz cGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyBi b29sIGdldF9heGlzX3ZhbHVlIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gZG91Ymxl W10gYXhlcywgQ2x1dHRlci5JbnB1dEF4aXMgYXhpcywgb3V0IGRvdWJsZSB2YWx1ZSk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGljIGJvb2wgZ2V0X2Nvb3JkcyAoQ2x1 dHRlci5FdmVudFNlcXVlbmNlPyBzZXF1ZW5jZSwgQ2x1dHRlci5Qb2ludCBwb2ludCk7Ci0rCQlw dWJsaWMgYm9vbCBnZXRfY29vcmRzIChDbHV0dGVyLkV2ZW50U2VxdWVuY2U/IHNlcXVlbmNlLCBH cmFwaGVuZS5Qb2ludCBwb2ludCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlw dWJsaWMgaW50IGdldF9kZXZpY2VfaWQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42Iild Ci1AQCAtNjMyNSwxMiArNTg4Nyw5IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBD bHV0dGVyLklucHV0RGV2aWNlVHlwZSBnZXRfZGV2aWNlX3R5cGUgKCk7Ci0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMgYm9vbCBnZXRfZW5hYmxlZCAoKTsKLS0JCVtDQ29k ZSAoY25hbWUgPSAiY2x1dHRlcl9nZXRfaW5wdXRfZGV2aWNlX2Zvcl9pZCIpXQotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9 ICIwLjgiKV0KLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVyLklucHV0RGV2aWNlIGdl dF9mb3JfaWQgKGludCBpZF8pOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1 YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2dyYWJiZWRfYWN0b3IgKCk7Ci0tCQlwdWJs aWMgaW50IGdldF9ncm91cF9uX21vZGVzIChpbnQgZ3JvdXApOwotKwkJcHVibGljIHZpcnR1YWwg aW50IGdldF9ncm91cF9uX21vZGVzIChpbnQgZ3JvdXApOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuNiIpXQotIAkJcHVibGljIGJvb2wgZ2V0X2hhc19jdXJzb3IgKCk7Ci0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMS42IildCi1AQCAtNjM0NiwyMyArNTkwNSwyMSBAQCBuYW1lc3BhY2UgQ2x1dHRl ciB7Ci0gCQlwdWJsaWMgaW50IGdldF9uX21vZGVfZ3JvdXBzICgpOwotIAkJcHVibGljIGludCBn ZXRfbl9yaW5ncyAoKTsKLSAJCXB1YmxpYyBpbnQgZ2V0X25fc3RyaXBzICgpOwotLQkJcHVibGlj IGJvb2wgZ2V0X3BoeXNpY2FsX3NpemUgKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7Ci0t CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFj dG9yIGdldF9wb2ludGVyX2FjdG9yICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQot IAkJcHVibGljIHVub3duZWQgQ2x1dHRlci5TdGFnZSBnZXRfcG9pbnRlcl9zdGFnZSAoKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjIyIildCi0gCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0 X3Byb2R1Y3RfaWQgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlNlYXQgZ2V0X3NlYXQg KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMgR0xpYi5MaXN0PHdl YWsgQ2x1dHRlci5JbnB1dERldmljZT4gZ2V0X3NsYXZlX2RldmljZXMgKCk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4yMiIpXQotIAkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF92ZW5kb3Jf aWQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgZ3Jh YiAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0tCQlwdWJsaWMgYm9vbCBpc19ncm91cGVkIChDbHV0 dGVyLklucHV0RGV2aWNlIG90aGVyX2RldmljZSk7Ci0tCQlwdWJsaWMgYm9vbCBpc19tb2RlX3N3 aXRjaF9idXR0b24gKHVpbnQgZ3JvdXAsIHVpbnQgYnV0dG9uKTsKLSsJCXB1YmxpYyB2aXJ0dWFs IGJvb2wgaXNfZ3JvdXBlZCAoQ2x1dHRlci5JbnB1dERldmljZSBvdGhlcl9kZXZpY2UpOwotKwkJ cHVibGljIHZpcnR1YWwgYm9vbCBpc19tb2RlX3N3aXRjaF9idXR0b24gKHVpbnQgZ3JvdXAsIHVp bnQgYnV0dG9uKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgYm9v bCBrZXljb2RlX3RvX2V2ZGV2ICh1aW50IGhhcmR3YXJlX2tleWNvZGUsIHVpbnQgZXZkZXZfa2V5 Y29kZSk7Ci0rCQlwdWJsaWMgdmlydHVhbCBib29sIGtleWNvZGVfdG9fZXZkZXYgKHVpbnQgaGFy ZHdhcmVfa2V5Y29kZSwgdWludCBldmRldl9rZXljb2RlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEyIildCi0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIHNlcXVlbmNlX2dldF9n cmFiYmVkX2FjdG9yIChDbHV0dGVyLkV2ZW50U2VxdWVuY2Ugc2VxdWVuY2UpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTIiKV0KLUBAIC02Mzc4LDEyICs1OTM1LDExIEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lkIHVuZ3JhYiAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjIiKV0KLSAJCXB1YmxpYyB2b2lkIHVwZGF0ZV9mcm9tX2V2ZW50IChDbHV0dGVyLkV2ZW50 IGV2ZW50LCBib29sIHVwZGF0ZV9zdGFnZSk7Ci0rCQlbTm9XcmFwcGVyXQotKwkJcHVibGljIHZp cnR1YWwgdm9pZCB1cGRhdGVfZnJvbV90b29sIChDbHV0dGVyLklucHV0RGV2aWNlVG9vbCB0b29s KTsKLSAJCVtOb0FjY2Vzc29yTWV0aG9kXQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQot IAkJcHVibGljIENsdXR0ZXIuQmFja2VuZCBiYWNrZW5kIHsgb3duZWQgZ2V0OyBjb25zdHJ1Y3Q7 IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQot LQkJcHVibGljIENsdXR0ZXIuRGV2aWNlTWFuYWdlciBkZXZpY2VfbWFuYWdlciB7IG93bmVkIGdl dDsgY29uc3RydWN0OyB9Ci0gCQlwdWJsaWMgQ2x1dHRlci5JbnB1dE1vZGUgZGV2aWNlX21vZGUg eyBnZXQ7IGNvbnN0cnVjdDsgfQotIAkJcHVibGljIHN0cmluZyBkZXZpY2Vfbm9kZSB7IGdldDsg Y29uc3RydWN0OyB9Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi1AQCAtNjQwNiw2ICs1 OTYyLDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIHN0cmluZyBuYW1lIHsgb3du ZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIyIildCi0gCQlw dWJsaWMgc3RyaW5nIHByb2R1Y3RfaWQgeyBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJcHVibGljIENs dXR0ZXIuU2VhdCBzZWF0IHsgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjIyIildCi0gCQlwdWJsaWMgc3RyaW5nIHZlbmRvcl9pZCB7IGdldDsgY29uc3RydWN0OyB9 Ci0gCX0KLUBAIC02NDMwLDcgKzU5ODcsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbTm9X cmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBjb21taXRfdGV4dCAoc3RyaW5nIHRleHQp OwotIAkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgZGVsZXRlX3N1cnJvdW5k aW5nICh1aW50IG9mZnNldCwgdWludCBsZW4pOwotKwkJcHVibGljIHZpcnR1YWwgdm9pZCBkZWxl dGVfc3Vycm91bmRpbmcgKGludCBvZmZzZXQsIHVpbnQgbGVuKTsKLSAJCXB1YmxpYyBib29sIGZp bHRlcl9rZXlfZXZlbnQgKENsdXR0ZXIuS2V5RXZlbnQga2V5KTsKLSAJCVtOb1dyYXBwZXJdCi0g CQlwdWJsaWMgdmlydHVhbCB2b2lkIGZvY3VzX2luIChDbHV0dGVyLklucHV0TWV0aG9kIGlucHV0 X21ldGhvZCk7Ci1AQCAtNjQ0Myw3ICs2MDAwLDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJ cHVibGljIHZvaWQgc2V0X2Nhbl9zaG93X3ByZWVkaXQgKGJvb2wgY2FuX3Nob3dfcHJlZWRpdCk7 Ci0gCQlwdWJsaWMgdm9pZCBzZXRfY29udGVudF9oaW50cyAoQ2x1dHRlci5JbnB1dENvbnRlbnRI aW50RmxhZ3MgaGludCk7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfY29udGVudF9wdXJwb3NlIChDbHV0 dGVyLklucHV0Q29udGVudFB1cnBvc2UgcHVycG9zZSk7Ci0tCQlwdWJsaWMgdm9pZCBzZXRfY3Vy c29yX2xvY2F0aW9uIChDbHV0dGVyLlJlY3QgcmVjdCk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfY3Vy c29yX2xvY2F0aW9uIChHcmFwaGVuZS5SZWN0IHJlY3QpOwotIAkJcHVibGljIHZvaWQgc2V0X2lu cHV0X3BhbmVsX3N0YXRlIChDbHV0dGVyLklucHV0UGFuZWxTdGF0ZSBzdGF0ZSk7Ci0gCQlbTm9X cmFwcGVyXQotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBzZXRfcHJlZWRpdF90ZXh0IChzdHJpbmcg cHJlZWRpdCwgdWludCBjdXJzb3IpOwotQEAgLTY0NjIsNyArNjAxOSw3IEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCVtOb1dyYXBwZXJdCi0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIHJlc2V0ICgp OwotIAkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZvaWQgc2V0X2N1cnNvcl9sb2Nh dGlvbiAoQ2x1dHRlci5SZWN0IHJlY3QpOwotKwkJcHVibGljIHZpcnR1YWwgdm9pZCBzZXRfY3Vy c29yX2xvY2F0aW9uIChHcmFwaGVuZS5SZWN0IHJlY3QpOwotIAkJcHVibGljIHZvaWQgc2V0X2lu cHV0X3BhbmVsX3N0YXRlIChDbHV0dGVyLklucHV0UGFuZWxTdGF0ZSBzdGF0ZSk7Ci0gCQlwdWJs aWMgdm9pZCBzZXRfcHJlZWRpdF90ZXh0IChzdHJpbmc/IHByZWVkaXQsIHVpbnQgY3Vyc29yKTsK LSAJCVtOb1dyYXBwZXJdCi1AQCAtNjQ3OSw5ICs2MDM2LDkgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHVibGljIENsdXR0ZXIuSW5wdXRDb250ZW50UHVycG9zZSBjb250ZW50X3B1cnBvc2Ug eyBnZXQ7IHNldDsgfQotIAkJW0hhc0VtaXR0ZXJdCi0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgY29t bWl0IChzdHJpbmcgdGV4dCk7Ci0tCQlwdWJsaWMgc2lnbmFsIHZvaWQgY3Vyc29yX2xvY2F0aW9u X2NoYW5nZWQgKENsdXR0ZXIuUmVjdCBvYmplY3QpOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIGN1 cnNvcl9sb2NhdGlvbl9jaGFuZ2VkIChHcmFwaGVuZS5SZWN0IG9iamVjdCk7Ci0gCQlbSGFzRW1p dHRlcl0KLS0JCXB1YmxpYyBzaWduYWwgdm9pZCBkZWxldGVfc3Vycm91bmRpbmcgKHVpbnQgb2Zm c2V0LCB1aW50IGxlbik7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgZGVsZXRlX3N1cnJvdW5kaW5n IChpbnQgb2Zmc2V0LCB1aW50IGxlbik7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgaW5wdXRfcGFu ZWxfc3RhdGUgKENsdXR0ZXIuSW5wdXRQYW5lbFN0YXRlIG9iamVjdCk7Ci0gCQlbSGFzRW1pdHRl cl0KLSAJCXB1YmxpYyBzaWduYWwgdm9pZCByZXF1ZXN0X3N1cnJvdW5kaW5nICgpOwotQEAgLTY1 NTUsMjggKzYxMTIsMjggQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW0NDb2RlIChoYXNfY29u c3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIEtleW1hcCAoKTsKLSAJCXB1 YmxpYyB2aXJ0dWFsIGJvb2wgZ2V0X2NhcHNfbG9ja19zdGF0ZSAoKTsKLSsJCXB1YmxpYyB2aXJ0 dWFsIFBhbmdvLkRpcmVjdGlvbiBnZXRfZGlyZWN0aW9uICgpOwotIAkJcHVibGljIHZpcnR1YWwg Ym9vbCBnZXRfbnVtX2xvY2tfc3RhdGUgKCk7Ci0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgc3RhdGVf Y2hhbmdlZCAoKTsKLSAJfQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9j bHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfbGF5ZXJfbm9kZV9nZXRfdHlwZSAoKSIpXQot KwlwdWJsaWMgY2xhc3MgTGF5ZXJOb2RlIDogQ2x1dHRlci5QYWludE5vZGUgewotKwkJW0NDb2Rl IChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlclBhaW50Tm9k ZSoiKV0KLSsJCXB1YmxpYyBMYXllck5vZGUgKENvZ2wuTWF0cml4IHByb2plY3Rpb24sIENhaXJv LlJlY3RhbmdsZSB2aWV3cG9ydCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgdWludDggb3Bh Y2l0eSk7Ci0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRl ci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2xheW91dF9tYW5hZ2VyX2dldF90eXBlICgpIildCi0g CVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJcHVibGljIGFic3RyYWN0IGNsYXNzIExheW91 dE1hbmFnZXIgOiBHTGliLkluaXRpYWxseVVub3duZWQgewotIAkJW0NDb2RlIChoYXNfY29uc3Ry dWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVjdGVkIExheW91dE1hbmFnZXIgKCk7Ci0t CQlwdWJsaWMgdmlydHVhbCB2b2lkIGFsbG9jYXRlIChDbHV0dGVyLkNvbnRhaW5lciBjb250YWlu ZXIsIENsdXR0ZXIuQWN0b3JCb3ggYWxsb2NhdGlvbiwgQ2x1dHRlci5BbGxvY2F0aW9uRmxhZ3Mg ZmxhZ3MpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHVub3duZWQgQ2x1 dHRlci5BbHBoYSBiZWdpbl9hbmltYXRpb24gKHVpbnQgZHVyYXRpb24sIHVsb25nIG1vZGUpOwot KwkJcHVibGljIHZpcnR1YWwgdm9pZCBhbGxvY2F0ZSAoQ2x1dHRlci5Db250YWluZXIgY29udGFp bmVyLCBDbHV0dGVyLkFjdG9yQm94IGFsbG9jYXRpb24pOwotIAkJcHVibGljIHZvaWQgY2hpbGRf Z2V0IChDbHV0dGVyLkNvbnRhaW5lciBjb250YWluZXIsIENsdXR0ZXIuQWN0b3IgYWN0b3IsIC4u Lik7Ci0gCQlwdWJsaWMgdm9pZCBjaGlsZF9nZXRfcHJvcGVydHkgKENsdXR0ZXIuQ29udGFpbmVy IGNvbnRhaW5lciwgQ2x1dHRlci5BY3RvciBhY3Rvciwgc3RyaW5nIHByb3BlcnR5X25hbWUsIEdM aWIuVmFsdWUgdmFsdWUpOwotIAkJcHVibGljIHZvaWQgY2hpbGRfc2V0IChDbHV0dGVyLkNvbnRh aW5lciBjb250YWluZXIsIENsdXR0ZXIuQWN0b3IgYWN0b3IsIC4uLik7Ci0gCQlwdWJsaWMgdm9p ZCBjaGlsZF9zZXRfcHJvcGVydHkgKENsdXR0ZXIuQ29udGFpbmVyIGNvbnRhaW5lciwgQ2x1dHRl ci5BY3RvciBhY3Rvciwgc3RyaW5nIHByb3BlcnR5X25hbWUsIEdMaWIuVmFsdWUgdmFsdWUpOwot IAkJW05vV3JhcHBlcl0KLSAJCXB1YmxpYyB2aXJ0dWFsIHVub3duZWQgQ2x1dHRlci5MYXlvdXRN ZXRhIGNyZWF0ZV9jaGlsZF9tZXRhIChDbHV0dGVyLkNvbnRhaW5lciBjb250YWluZXIsIENsdXR0 ZXIuQWN0b3IgYWN0b3IpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHZv aWQgZW5kX2FuaW1hdGlvbiAoKTsKLSAJCXB1YmxpYyB1bm93bmVkIEdMaWIuUGFyYW1TcGVjIGZp bmRfY2hpbGRfcHJvcGVydHkgKHN0cmluZyBuYW1lKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4yIildCi0tCQlw dWJsaWMgdmlydHVhbCBkb3VibGUgZ2V0X2FuaW1hdGlvbl9wcm9ncmVzcyAoKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuTGF5b3V0TWV0 YSBnZXRfY2hpbGRfbWV0YSAoQ2x1dHRlci5Db250YWluZXIgY29udGFpbmVyLCBDbHV0dGVyLkFj dG9yIGFjdG9yKTsKLSAJCVtOb1dyYXBwZXJdCi1AQCAtNjYzMiwxMiArNjE4OSwxMiBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCQlwcm90ZWN0ZWQgT2Zmc2NyZWVuRWZmZWN0ICgpOwotIAkJcHVi bGljIHZpcnR1YWwgQ29nbC5IYW5kbGUgY3JlYXRlX3RleHR1cmUgKGZsb2F0IHdpZHRoLCBmbG9h dCBoZWlnaHQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLS0JCXB1YmxpYyBib29s IGdldF90YXJnZXRfcmVjdCAob3V0IHVub3duZWQgQ2x1dHRlci5SZWN0IHJlY3QpOwotKwkJcHVi bGljIGJvb2wgZ2V0X3RhcmdldF9yZWN0IChvdXQgdW5vd25lZCBHcmFwaGVuZS5SZWN0IHJlY3Qp OwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTQiLCBzaW5jZSA9ICIxLjgiKV0KLSAJCXB1YmxpYyBib29sIGdldF90YXJnZXRfc2l6ZSAob3V0 IGZsb2F0IHdpZHRoLCBvdXQgZmxvYXQgaGVpZ2h0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEwIildCi0gCQlwdWJsaWMgdW5vd25lZCBDb2dsLkhhbmRsZSBnZXRfdGV4dHVyZSAoKTsKLS0J CXB1YmxpYyB2aXJ0dWFsIHZvaWQgcGFpbnRfdGFyZ2V0ICgpOwotKwkJcHVibGljIHZpcnR1YWwg dm9pZCBwYWludF90YXJnZXQgKENsdXR0ZXIuUGFpbnRDb250ZXh0IHBhaW50X2NvbnRleHQpOwot IAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5 cGVfaWQgPSAiY2x1dHRlcl9wYWdlX3R1cm5fZWZmZWN0X2dldF90eXBlICgpIildCi0gCVtWZXJz aW9uIChzaW5jZSA9ICIxLjQiKV0KLUBAIC02NjU0LDYgKzYyMTEsMTcgQEAgbmFtZXNwYWNlIENs dXR0ZXIgewotIAkJcHVibGljIGRvdWJsZSBwZXJpb2QgeyBnZXQ7IHNldDsgfQotIAkJcHVibGlj IGZsb2F0IHJhZGl1cyB7IGdldDsgc2V0OyB9Ci0gCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgcmVmX2Z1bmN0aW9uID0gImNsdXR0ZXJfcGFpbnRf Y29udGV4dF9yZWYiLCB0eXBlX2lkID0gImNsdXR0ZXJfcGFpbnRfY29udGV4dF9nZXRfdHlwZSAo KSIsIHVucmVmX2Z1bmN0aW9uID0gImNsdXR0ZXJfcGFpbnRfY29udGV4dF91bnJlZiIpXQotKwlb Q29tcGFjdF0KLSsJcHVibGljIGNsYXNzIFBhaW50Q29udGV4dCB7Ci0rCQlwdWJsaWMgdm9pZCBk ZXN0cm95ICgpOwotKwkJcHVibGljIHVub3duZWQgQ29nbC5GcmFtZWJ1ZmZlciBnZXRfZnJhbWVi dWZmZXIgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBDYWlyby5SZWdpb24gZ2V0X3JlZHJhd19jbGlw ICgpOwotKwkJcHVibGljIHZvaWQgcG9wX2ZyYW1lYnVmZmVyICgpOwotKwkJcHVibGljIHZvaWQg cHVzaF9mcmFtZWJ1ZmZlciAoQ29nbC5GcmFtZWJ1ZmZlciBmcmFtZWJ1ZmZlcik7Ci0rCQlwdWJs aWMgdW5vd25lZCBDbHV0dGVyLlBhaW50Q29udGV4dCBAcmVmICgpOwotKwkJcHVibGljIHZvaWQg dW5yZWYgKCk7Ci0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BhaW50X25vZGVfZ2V0X3R5cGUgKCkiKV0KLSAJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJcHVibGljIGFic3RyYWN0IGNsYXNzIFBhaW50 Tm9kZSB7Ci1AQCAtNjY2Myw3ICs2MjMxLDggQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVi bGljIHZvaWQgYWRkX211bHRpdGV4dHVyZV9yZWN0YW5nbGUgKENsdXR0ZXIuQWN0b3JCb3ggcmVj dCwgZmxvYXQgdGV4dF9jb29yZHMsIHVpbnQgdGV4dF9jb29yZHNfbGVuKTsKLSAJCXB1YmxpYyB2 b2lkIGFkZF9yZWN0YW5nbGUgKENsdXR0ZXIuQWN0b3JCb3ggcmVjdCk7Ci0gCQlwdWJsaWMgdm9p ZCBhZGRfdGV4dHVyZV9yZWN0YW5nbGUgKENsdXR0ZXIuQWN0b3JCb3ggcmVjdCwgZmxvYXQgeF8x LCBmbG9hdCB5XzEsIGZsb2F0IHhfMiwgZmxvYXQgeV8yKTsKLS0JCXB1YmxpYyB2b2lkIHBhaW50 ICgpOwotKwkJcHVibGljIHVub3duZWQgQ29nbC5GcmFtZWJ1ZmZlciBnZXRfZnJhbWVidWZmZXIg KCk7Ci0rCQlwdWJsaWMgdm9pZCBwYWludCAoQ2x1dHRlci5QYWludENvbnRleHQgcGFpbnRfY29u dGV4dCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlBhaW50Tm9kZSBAcmVmICgpOwotIAkJ cHVibGljIHZvaWQgc2V0X25hbWUgKHN0cmluZyBuYW1lKTsKLSAJCXB1YmxpYyB2b2lkIHVucmVm ICgpOwotQEAgLTY2ODEsNyArNjI1MCw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyBmbG9hdCBnZXRfaGVpZ2h0ICgpOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIENsdXR0ZXIuVmVydGV4IGdldF9v cmlnaW4gKCk7Ci0rCQlwdWJsaWMgdm9pZCBnZXRfb3JpZ2luIChvdXQgdW5vd25lZCBHcmFwaGVu ZS5Qb2ludDNEIHZlcnRleCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJs aWMgZmxvYXQgZ2V0X3dpZHRoICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotQEAg LTY2OTEsNyArNjI2MCw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9oZWlnaHQgKGZsb2F0IGhlaWdodCk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfb3JpZ2luIChD bHV0dGVyLlZlcnRleCBvcmlnaW4pOwotKwkJcHVibGljIHZvaWQgc2V0X29yaWdpbiAoR3JhcGhl bmUuUG9pbnQzRCBvcmlnaW4pOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVi bGljIHZvaWQgc2V0X3dpZHRoIChmbG9hdCB3aWR0aCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MS42IildCi1AQCAtNjc3OCw4OCArNjM0NywyOSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlw dWJsaWMgQ2x1dHRlci5QYXRoIHBhdGggeyBnZXQ7IHNldDsgfQotIAkJcHVibGljIHNpZ25hbCB2 b2lkIG5vZGVfcmVhY2hlZCAoQ2x1dHRlci5BY3RvciBhY3RvciwgdWludCBpbmRleCk7Ci0gCX0K LSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgcmVmX2Z1 bmN0aW9uID0gImNsdXR0ZXJfcGlja19jb250ZXh0X3JlZiIsIHR5cGVfaWQgPSAiY2x1dHRlcl9w aWNrX2NvbnRleHRfZ2V0X3R5cGUgKCkiLCB1bnJlZl9mdW5jdGlvbiA9ICJjbHV0dGVyX3BpY2tf Y29udGV4dF91bnJlZiIpXQotKwlbQ29tcGFjdF0KLSsJcHVibGljIGNsYXNzIFBpY2tDb250ZXh0 IHsKLSsJCXB1YmxpYyB2b2lkIGRlc3Ryb3kgKCk7Ci0rCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVy LlBpY2tDb250ZXh0IEByZWYgKCk7Ci0rCQlwdWJsaWMgdm9pZCB1bnJlZiAoKTsKLSsJfQotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0g ImNsdXR0ZXJfcGlwZWxpbmVfbm9kZV9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMCIpXQotIAlwdWJsaWMgY2xhc3MgUGlwZWxpbmVOb2RlIDogQ2x1dHRlci5QYWludE5v ZGUgewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJv dGVjdGVkIFBpcGVsaW5lTm9kZSAoKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZy ZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BvaW50X2dl dF90eXBlICgpIildCi0tCVtDb21wYWN0XQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQot LQlwdWJsaWMgY2xhc3MgUG9pbnQgewotLQkJcHVibGljIGZsb2F0IHg7Ci0tCQlwdWJsaWMgZmxv YXQgeTsKLS0JCXB1YmxpYyBzdGF0aWMgQ2x1dHRlci5Qb2ludCBhbGxvYyAoKTsKLS0JCXB1Ymxp YyBDbHV0dGVyLlBvaW50IGNvcHkgKCk7Ci0tCQlwdWJsaWMgZmxvYXQgZGlzdGFuY2UgKENsdXR0 ZXIuUG9pbnQgYiwgb3V0IGZsb2F0IHhfZGlzdGFuY2UsIG91dCBmbG9hdCB5X2Rpc3RhbmNlKTsK LS0JCXB1YmxpYyBib29sIGVxdWFscyAoQ2x1dHRlci5Qb2ludCBiKTsKLS0JCXB1YmxpYyB2b2lk IGZyZWUgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlBvaW50IGluaXQgKGZsb2F0IHgs IGZsb2F0IHkpOwotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuUG9pbnQgemVybyAo KTsKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgi LCB0eXBlX2lkID0gImNsdXR0ZXJfcHJvcGVydHlfdHJhbnNpdGlvbl9nZXRfdHlwZSAoKSIpXQot IAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAlwdWJsaWMgY2xhc3MgUHJvcGVydHlUcmFu c2l0aW9uIDogQ2x1dHRlci5UcmFuc2l0aW9uLCBDbHV0dGVyLlNjcmlwdGFibGUgewotIAkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlclRyYW5z aXRpb24qIildCi0gCQlwdWJsaWMgUHJvcGVydHlUcmFuc2l0aW9uIChzdHJpbmc/IHByb3BlcnR5 X25hbWUpOwotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUg PSAiQ2x1dHRlclRyYW5zaXRpb24qIildCi0rCQlwdWJsaWMgUHJvcGVydHlUcmFuc2l0aW9uLmZv cl9hY3RvciAoQ2x1dHRlci5BY3RvciBhY3Rvciwgc3RyaW5nPyBwcm9wZXJ0eV9uYW1lKTsKLSAJ CXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfcHJvcGVydHlfbmFtZSAoKTsKLS0JCXB1YmxpYyB2 b2lkIHNldF9wcm9wZXJ0eV9uYW1lIChzdHJpbmc/IHByb3BlcnR5X25hbWUpOwotLQkJcHVibGlj IHN0cmluZyBwcm9wZXJ0eV9uYW1lIHsgZ2V0OyBzZXQ7IH0KLS0JfQotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94 ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0 dGVyX3JlY3RfZ2V0X3R5cGUgKCkiKV0KLS0JW0NvbXBhY3RdCi0tCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjEyIildCi0tCXB1YmxpYyBjbGFzcyBSZWN0IHsKLS0JCXB1YmxpYyB3ZWFrIENsdXR0ZXIu UG9pbnQgb3JpZ2luOwotLQkJcHVibGljIHdlYWsgQ2x1dHRlci5TaXplIHNpemU7Ci0tCQlwdWJs aWMgc3RhdGljIENsdXR0ZXIuUmVjdCBhbGxvYyAoKTsKLS0JCXB1YmxpYyB2b2lkIGNsYW1wX3Rv X3BpeGVsICgpOwotLQkJcHVibGljIGJvb2wgY29udGFpbnNfcG9pbnQgKENsdXR0ZXIuUG9pbnQg cG9pbnQpOwotLQkJcHVibGljIGJvb2wgY29udGFpbnNfcmVjdCAoQ2x1dHRlci5SZWN0IGIpOwot LQkJcHVibGljIENsdXR0ZXIuUmVjdCBjb3B5ICgpOwotLQkJcHVibGljIGJvb2wgZXF1YWxzIChD bHV0dGVyLlJlY3QgYik7Ci0tCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotLQkJcHVibGljIHZvaWQg Z2V0X2NlbnRlciAoQ2x1dHRlci5Qb2ludCBjZW50ZXIpOwotLQkJcHVibGljIGZsb2F0IGdldF9o ZWlnaHQgKCk7Ci0tCQlwdWJsaWMgZmxvYXQgZ2V0X3dpZHRoICgpOwotLQkJcHVibGljIGZsb2F0 IGdldF94ICgpOwotLQkJcHVibGljIGZsb2F0IGdldF95ICgpOwotLQkJcHVibGljIHVub3duZWQg Q2x1dHRlci5SZWN0IGluaXQgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBo ZWlnaHQpOwotLQkJcHVibGljIHZvaWQgaW5zZXQgKGZsb2F0IGRfeCwgZmxvYXQgZF95KTsKLS0J CXB1YmxpYyBib29sIGludGVyc2VjdGlvbiAoQ2x1dHRlci5SZWN0IGIsIENsdXR0ZXIuUmVjdD8g cmVzKTsKLS0JCXB1YmxpYyBDbHV0dGVyLlJlY3Qgbm9ybWFsaXplICgpOwotLQkJcHVibGljIHZv aWQgb2Zmc2V0IChmbG9hdCBkX3gsIGZsb2F0IGRfeSk7Ci0tCQlwdWJsaWMgdm9pZCBzY2FsZSAo ZmxvYXQgc194LCBmbG9hdCBzX3kpOwotLQkJcHVibGljIHZvaWQgdW5pb24gKENsdXR0ZXIuUmVj dCBiLCBDbHV0dGVyLlJlY3QgcmVzKTsKLS0JCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0dGVy LlJlY3QgemVybyAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfcmVjdGFuZ2xlX2dldF90eXBlICgpIild Ci0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjIiKV0KLS0JcHVibGljIGNsYXNzIFJlY3RhbmdsZSA6 IENsdXR0ZXIuQWN0b3IsIEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0 dGVyLkNvbnRhaW5lciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3RvcioiKV0KLS0JCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCQlw dWJsaWMgUmVjdGFuZ2xlICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjIiKV0KLS0JCXB1YmxpYyBDbHV0dGVy LkNvbG9yIGdldF9ib3JkZXJfY29sb3IgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuMiIpXQotLQkJcHVibGlj IHVpbnQgZ2V0X2JvcmRlcl93aWR0aCAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBn ZXRfY29sb3IgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2JvcmRlcl9jb2xvciAoQ2x1dHRl ci5Db2xvciBjb2xvcik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuMiIpXQotLQkJcHVibGljIHZvaWQgc2V0X2Jv cmRlcl93aWR0aCAodWludCB3aWR0aCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2NvbG9yIChD bHV0dGVyLkNvbG9yIGNvbG9yKTsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9 IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3RvcioiKV0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgUmVjdGFuZ2xl LndpdGhfY29sb3IgKENsdXR0ZXIuQ29sb3IgY29sb3IpOwotLQkJcHVibGljIENsdXR0ZXIuQ29s b3IgYm9yZGVyX2NvbG9yIHsgZ2V0OyBzZXQ7IH0KLS0JCXB1YmxpYyB1aW50IGJvcmRlcl93aWR0 aCB7IGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBjb2xvciB7IGdldDsgc2V0 OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIGhhc19ib3JkZXIgeyBn ZXQ7IHNldDsgfQotKwkJcHVibGljIHZvaWQgc2V0X3Byb3BlcnR5X25hbWUgKHN0cmluZz8gcHJv cGVydHlfbmFtZSk7Ci0rCQlwdWJsaWMgc3RyaW5nIHByb3BlcnR5X25hbWUgeyBnZXQ7IHNldDsg fQotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIs IHR5cGVfaWQgPSAiY2x1dHRlcl9yb290X25vZGVfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGNs YXNzIFJvb3ROb2RlIDogQ2x1dHRlci5QYWludE5vZGUgewotQEAgLTY4ODAsMTUgKzYzOTAsMTEg QEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIFNjcmlwdCAoKTsKLSAJCVtWZXJzaW9u IChzaW5jZSA9ICIwLjgiKV0KLSAJCXB1YmxpYyB2b2lkIGFkZF9zZWFyY2hfcGF0aHMgKFtDQ29k ZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gIm5fcGF0aHMiLCBhcnJheV9sZW5ndGhfcG9zID0gMS4x LCBhcnJheV9sZW5ndGhfdHlwZSA9ICJnc2l6ZSIpXSBzdHJpbmdbXSBwYXRocyk7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNl ID0gIjEuOCIpXQotLQkJcHVibGljIHZvaWQgYWRkX3N0YXRlcyAoc3RyaW5nPyBuYW1lLCBDbHV0 dGVyLlN0YXRlIHN0YXRlKTsKLSAJCXB1YmxpYyB2b2lkIGNvbm5lY3Rfc2lnbmFscyAodm9pZCog dXNlcl9kYXRhKTsKLSAJCXB1YmxpYyB2b2lkIGNvbm5lY3Rfc2lnbmFsc19mdWxsIChDbHV0dGVy LlNjcmlwdENvbm5lY3RGdW5jIGZ1bmMpOwotIAkJcHVibGljIHZvaWQgZW5zdXJlX29iamVjdHMg KCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBHTGliLk9iamVjdCBnZXRfb2JqZWN0IChzdHJpbmcgbmFt ZSk7Ci0gCQlwdWJsaWMgaW50IGdldF9vYmplY3RzICguLi4pOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjgiKV0K LS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuU3RhdGUgZ2V0X3N0YXRlcyAoc3RyaW5nPyBuYW1l KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdW5vd25lZCBzdHJp bmcgZ2V0X3RyYW5zbGF0aW9uX2RvbWFpbiAoKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIEdMaWIuVHlw ZSBnZXRfdHlwZV9mcm9tX25hbWUgKHN0cmluZyB0eXBlX25hbWUpOwotQEAgLTY5MTYsOCArNjQy Miw4IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5j dGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3RvcioiKV0KLSAJCXB1YmxpYyBTY3JvbGxB Y3RvciAoKTsKLSAJCXB1YmxpYyBDbHV0dGVyLlNjcm9sbE1vZGUgZ2V0X3Njcm9sbF9tb2RlICgp OwotLQkJcHVibGljIHZvaWQgc2Nyb2xsX3RvX3BvaW50IChDbHV0dGVyLlBvaW50IHBvaW50KTsK LS0JCXB1YmxpYyB2b2lkIHNjcm9sbF90b19yZWN0IChDbHV0dGVyLlJlY3QgcmVjdCk7Ci0rCQlw dWJsaWMgdm9pZCBzY3JvbGxfdG9fcG9pbnQgKEdyYXBoZW5lLlBvaW50IHBvaW50KTsKLSsJCXB1 YmxpYyB2b2lkIHNjcm9sbF90b19yZWN0IChHcmFwaGVuZS5SZWN0IHJlY3QpOwotIAkJcHVibGlj IHZvaWQgc2V0X3Njcm9sbF9tb2RlIChDbHV0dGVyLlNjcm9sbE1vZGUgbW9kZSk7Ci0gCQlwdWJs aWMgQ2x1dHRlci5TY3JvbGxNb2RlIHNjcm9sbF9tb2RlIHsgZ2V0OyBzZXQ7IH0KLSAJfQotQEAg LTY5MzksNiArNjQ0NSw0NyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgZmxvYXQg eDsKLSAJCXB1YmxpYyBmbG9hdCB5OwotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9zZWF0X2dldF90eXBlICgp IildCi0rCXB1YmxpYyBhYnN0cmFjdCBjbGFzcyBTZWF0IDogR0xpYi5PYmplY3QgewotKwkJW0ND b2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotKwkJcHJvdGVjdGVkIFNlYXQg KCk7Ci0rCQlbTm9XcmFwcGVyXQotKwkJcHVibGljIHZpcnR1YWwgdm9pZCBhcHBseV9rYmRfYTEx eV9zZXR0aW5ncyAoQ2x1dHRlci5LYmRBMTF5U2V0dGluZ3Mgc2V0dGluZ3MpOwotKwkJcHVibGlj IHZpcnR1YWwgdm9pZCBiZWxsX25vdGlmeSAoKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgY29t cHJlc3NfbW90aW9uIChDbHV0dGVyLkV2ZW50IGV2ZW50LCBDbHV0dGVyLkV2ZW50IHRvX2Rpc2Nh cmQpOwotKwkJW05vV3JhcHBlcl0KLSsJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgY29weV9ldmVudF9k YXRhIChDbHV0dGVyLkV2ZW50IHNyYywgQ2x1dHRlci5FdmVudCBkZXN0KTsKLSsJCXB1YmxpYyB2 aXJ0dWFsIENsdXR0ZXIuVmlydHVhbElucHV0RGV2aWNlIGNyZWF0ZV92aXJ0dWFsX2RldmljZSAo Q2x1dHRlci5JbnB1dERldmljZVR5cGUgZGV2aWNlX3R5cGUpOwotKwkJcHVibGljIHZvaWQgZW5z dXJlX2ExMXlfc3RhdGUgKCk7Ci0rCQlbTm9XcmFwcGVyXQotKwkJcHVibGljIHZpcnR1YWwgdm9p ZCBmcmVlX2V2ZW50X2RhdGEgKENsdXR0ZXIuRXZlbnQgZXZlbnQpOwotKwkJcHVibGljIHZvaWQg Z2V0X2tiZF9hMTF5X3NldHRpbmdzIChDbHV0dGVyLktiZEExMXlTZXR0aW5ncyBzZXR0aW5ncyk7 Ci0rCQlwdWJsaWMgdmlydHVhbCB1bm93bmVkIENsdXR0ZXIuSW5wdXREZXZpY2UgZ2V0X2tleWJv YXJkICgpOwotKwkJcHVibGljIHZpcnR1YWwgdW5vd25lZCBDbHV0dGVyLktleW1hcCBnZXRfa2V5 bWFwICgpOwotKwkJcHVibGljIHZpcnR1YWwgdW5vd25lZCBDbHV0dGVyLklucHV0RGV2aWNlIGdl dF9wb2ludGVyICgpOwotKwkJcHVibGljIHZvaWQgZ2V0X3BvaW50ZXJfYTExeV9zZXR0aW5ncyAo Q2x1dHRlci5Qb2ludGVyQTExeVNldHRpbmdzIHNldHRpbmdzKTsKLSsJCXB1YmxpYyBib29sIGdl dF90b3VjaF9tb2RlICgpOwotKwkJcHVibGljIHZvaWQgaW5oaWJpdF91bmZvY3VzICgpOwotKwkJ cHVibGljIGJvb2wgaXNfdW5mb2N1c19pbmhpYml0ZWQgKCk7Ci0rCQlwdWJsaWMgR0xpYi5MaXN0 PHdlYWsgQ2x1dHRlci5JbnB1dERldmljZT4gbGlzdF9kZXZpY2VzICgpOwotKwkJcHVibGljIHZv aWQgc2V0X2tiZF9hMTF5X3NldHRpbmdzIChDbHV0dGVyLktiZEExMXlTZXR0aW5ncyBzZXR0aW5n cyk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfcG9pbnRlcl9hMTF5X2R3ZWxsX2NsaWNrX3R5cGUgKENs dXR0ZXIuUG9pbnRlckExMXlEd2VsbENsaWNrVHlwZSBjbGlja190eXBlKTsKLSsJCXB1YmxpYyB2 b2lkIHNldF9wb2ludGVyX2ExMXlfc2V0dGluZ3MgKENsdXR0ZXIuUG9pbnRlckExMXlTZXR0aW5n cyBzZXR0aW5ncyk7Ci0rCQlwdWJsaWMgdm9pZCB1bmluaGliaXRfdW5mb2N1cyAoKTsKLSsJCXB1 YmxpYyB2aXJ0dWFsIHZvaWQgd2FycF9wb2ludGVyIChpbnQgeCwgaW50IHkpOwotKwkJW05vQWNj ZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMgQ2x1dHRlci5CYWNrZW5kIGJhY2tlbmQgeyBvd25lZCBn ZXQ7IGNvbnN0cnVjdDsgfQotKwkJcHVibGljIGJvb2wgdG91Y2hfbW9kZSB7IGdldDsgfQotKwkJ cHVibGljIHNpZ25hbCB2b2lkIGRldmljZV9hZGRlZCAoQ2x1dHRlci5JbnB1dERldmljZSBvYmpl Y3QpOwotKwkJcHVibGljIHNpZ25hbCB2b2lkIGRldmljZV9yZW1vdmVkIChDbHV0dGVyLklucHV0 RGV2aWNlIG9iamVjdCk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgaXNfdW5mb2N1c19pbmhpYml0 ZWRfY2hhbmdlZCAoKTsKLSsJCXB1YmxpYyBzaWduYWwgdm9pZCBrYmRfYTExeV9mbGFnc19jaGFu Z2VkICh1aW50IHNldHRpbmdzX2ZsYWdzLCB1aW50IGNoYW5nZWRfbWFzayk7Ci0rCQlwdWJsaWMg c2lnbmFsIHZvaWQga2JkX2ExMXlfbW9kc19zdGF0ZV9jaGFuZ2VkICh1aW50IGxhdGNoZWRfbWFz aywgdWludCBsb2NrZWRfbWFzayk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgcHRyX2ExMXlfZHdl bGxfY2xpY2tfdHlwZV9jaGFuZ2VkIChDbHV0dGVyLlBvaW50ZXJBMTF5RHdlbGxDbGlja1R5cGUg Y2xpY2tfdHlwZSk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQgcHRyX2ExMXlfdGltZW91dF9zdGFy dGVkIChDbHV0dGVyLklucHV0RGV2aWNlIGRldmljZSwgQ2x1dHRlci5Qb2ludGVyQTExeVRpbWVv dXRUeXBlIHRpbWVvdXRfdHlwZSwgdWludCBkZWxheSk7Ci0rCQlwdWJsaWMgc2lnbmFsIHZvaWQg cHRyX2ExMXlfdGltZW91dF9zdG9wcGVkIChDbHV0dGVyLklucHV0RGV2aWNlIGRldmljZSwgQ2x1 dHRlci5Qb2ludGVyQTExeVRpbWVvdXRUeXBlIHRpbWVvdXRfdHlwZSwgYm9vbCBjbGlja2VkKTsK LSsJCXB1YmxpYyBzaWduYWwgdm9pZCB0b29sX2NoYW5nZWQgKENsdXR0ZXIuSW5wdXREZXZpY2Ug b2JqZWN0LCBDbHV0dGVyLklucHV0RGV2aWNlVG9vbCBwMCk7Ci0rCX0KLSAJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3Nl dHRpbmdzX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJcHVi bGljIGNsYXNzIFNldHRpbmdzIDogR0xpYi5PYmplY3QgewotQEAgLTcwMTEsMTggKzY1NTgsNiBA QCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24g PSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQgU2hhZGVyTWF0cml4ICgpOwotIAl9Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNvcHlfZnVuY3Rpb24gPSAi Z19ib3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0eXBlX2lkID0g ImNsdXR0ZXJfc2l6ZV9nZXRfdHlwZSAoKSIpXQotLQlbQ29tcGFjdF0KLS0JW1ZlcnNpb24gKHNp bmNlID0gIjEuMTIiKV0KLS0JcHVibGljIGNsYXNzIFNpemUgewotLQkJcHVibGljIGZsb2F0IGhl aWdodDsKLS0JCXB1YmxpYyBmbG9hdCB3aWR0aDsKLS0JCXB1YmxpYyBzdGF0aWMgQ2x1dHRlci5T aXplIGFsbG9jICgpOwotLQkJcHVibGljIENsdXR0ZXIuU2l6ZSBjb3B5ICgpOwotLQkJcHVibGlj IGJvb2wgZXF1YWxzIChDbHV0dGVyLlNpemUgYik7Ci0tCQlwdWJsaWMgdm9pZCBmcmVlICgpOwot LQkJcHVibGljIHVub3duZWQgQ2x1dHRlci5TaXplIGluaXQgKGZsb2F0IHdpZHRoLCBmbG9hdCBo ZWlnaHQpOwotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9zbmFwX2NvbnN0cmFpbnRfZ2V0X3R5cGUgKCkiKV0K LSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAlwdWJsaWMgY2xhc3MgU25hcENvbnN0cmFp bnQgOiBDbHV0dGVyLkNvbnN0cmFpbnQgewotQEAgLTcwNDMsMTM1ICs2NTc4LDY2IEBAIG5hbWVz cGFjZSBDbHV0dGVyIHsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfc3RhZ2VfZ2V0X3R5cGUgKCkiKV0KLSAJ W1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotLQlwdWJsaWMgY2xhc3MgU3RhZ2UgOiBDbHV0dGVy Lkdyb3VwLCBBdGsuSW1wbGVtZW50b3IsIENsdXR0ZXIuQW5pbWF0YWJsZSwgQ2x1dHRlci5Db250 YWluZXIsIENsdXR0ZXIuU2NyaXB0YWJsZSB7Ci0rCXB1YmxpYyBjbGFzcyBTdGFnZSA6IENsdXR0 ZXIuQWN0b3IsIEF0ay5JbXBsZW1lbnRvciwgQ2x1dHRlci5BbmltYXRhYmxlLCBDbHV0dGVyLkNv bnRhaW5lciwgQ2x1dHRlci5TY3JpcHRhYmxlIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9m dW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJBY3RvcioiKV0KLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIwLjgiKV0KLSAJCXB1YmxpYyBTdGFnZSAoKTsKLS0JCXB1YmxpYyBib29sIGNhcHR1 cmUgKGJvb2wgcGFpbnQsIENhaXJvLlJlY3RhbmdsZUludCByZWN0LCBDbHV0dGVyLkNhcHR1cmUg Y2FwdHVyZXMsIGludCBuX2NhcHR1cmVzKTsKLSAJCXB1YmxpYyB2b2lkIGNhcHR1cmVfaW50byAo Ym9vbCBwYWludCwgQ2Fpcm8uUmVjdGFuZ2xlSW50IHJlY3QsIHVpbnQ4IGRhdGEpOwotKwkJcHVi bGljIHZvaWQgY2xlYXJfc3RhZ2Vfdmlld3MgKCk7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gImNsdXR0 ZXJfc3RhZ2VfZXZlbnQiKV0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLSAJCXB1Ymxp YyBib29sIGVtaXRfZXZlbnQgKENsdXR0ZXIuRXZlbnQgZXZlbnQpOwotLQkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyB2b2lkIGVuc3VyZV9j dXJyZW50ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQg ZW5zdXJlX3JlZHJhdyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1Ymxp YyB2b2lkIGVuc3VyZV92aWV3cG9ydCAoKTsKLS0JCXB1YmxpYyB2b2lkIGZyZWV6ZV91cGRhdGVz ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIGJvb2wgZ2V0X2Fj Y2VwdF9mb2N1cyAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2FjdG9y X2F0X3BvcyAoQ2x1dHRlci5QaWNrTW9kZSBwaWNrX21vZGUsIGludCB4LCBpbnQgeSk7Ci0rCQlw dWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9hY3Rvcl9hdF9wb3MgKENsdXR0ZXIuUGlj a01vZGUgcGlja19tb2RlLCBmbG9hdCB4LCBmbG9hdCB5KTsKLSAJCXB1YmxpYyBib29sIGdldF9j YXB0dXJlX2ZpbmFsX3NpemUgKENhaXJvLlJlY3RhbmdsZUludCByZWN0LCBpbnQgd2lkdGgsIGlu dCBoZWlnaHQsIGZsb2F0IHNjYWxlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBnZXRf Y29sb3IgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuU3RhZ2UgZ2V0 X2RlZmF1bHQgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIENsdXR0ZXIuRm9nIGdl dF9mb2cgKCk7Ci0gCQlwdWJsaWMgaW50NjQgZ2V0X2ZyYW1lX2NvdW50ZXIgKCk7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgYm9vbCBnZXRfZnVsbHNjcmVlbiAoKTsK LSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIu QWN0b3IgZ2V0X2tleV9mb2N1cyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJ CXB1YmxpYyB2b2lkIGdldF9taW5pbXVtX3NpemUgKG91dCB1aW50IHdpZHRoLCBvdXQgdWludCBo ZWlnaHQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAkJcHVibGljIGJvb2wgZ2V0 X21vdGlvbl9ldmVudHNfZW5hYmxlZCAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0K LS0JCXB1YmxpYyBib29sIGdldF9ub19jbGVhcl9oaW50ICgpOwotIAkJcHVibGljIENsdXR0ZXIu UGVyc3BlY3RpdmUgZ2V0X3BlcnNwZWN0aXZlICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEu OCIpXQotLQkJcHVibGljIENhaXJvLlJlY3RhbmdsZUludCBnZXRfcmVkcmF3X2NsaXBfYm91bmRz ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIGJvb2wgZ2V0X3Ro cm90dGxlX21vdGlvbl9ldmVudHMgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0g CQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X3RpdGxlICgpOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMiIpXQotIAkJcHVibGljIGJvb2wgZ2V0X3VzZV9hbHBoYSAoKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAi MC42IildCi0tCQlwdWJsaWMgYm9vbCBnZXRfdXNlX2ZvZyAoKTsKLS0JCVtWZXJzaW9uIChzaW5j ZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyBib29sIGdldF91c2VyX3Jlc2l6YWJsZSAoKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyB2b2lkIGhpZGVfY3Vyc29yICgpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAi LCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBib29sIGlzX2RlZmF1bHQgKCk7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNl ID0gIjAuOCIpXQotLQkJcHVibGljIHZvaWQgcXVldWVfcmVkcmF3ICgpOwotKwkJcHVibGljIGJv b2wgcGFpbnRfdG9fYnVmZmVyIChDYWlyby5SZWN0YW5nbGVJbnQgcmVjdCwgZmxvYXQgc2NhbGUs IHVpbnQ4IGRhdGEsIGludCBzdHJpZGUsIENvZ2wuUGl4ZWxGb3JtYXQgZm9ybWF0LCBDbHV0dGVy LlBhaW50RmxhZyBwYWludF9mbGFncykgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgdm9p ZCBwYWludF90b19mcmFtZWJ1ZmZlciAoQ29nbC5GcmFtZWJ1ZmZlciBmcmFtZWJ1ZmZlciwgQ2Fp cm8uUmVjdGFuZ2xlSW50IHJlY3QsIGZsb2F0IHNjYWxlLCBDbHV0dGVyLlBhaW50RmxhZyBwYWlu dF9mbGFncyk7Ci0gCQlbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0KLSAJCXB1YmxpYyB1 aW50OFtdIHJlYWRfcGl4ZWxzIChpbnQgeCwgaW50IHksIGludCB3aWR0aCA9IC0xLCBpbnQgaGVp Z2h0ID0gLTEpOwotLQkJW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX3JlZHJhdyIpXQotLQkJcHVi bGljIHZvaWQgcmVkcmF3ICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotLQkJcHVi bGljIHZvaWQgc2V0X2FjY2VwdF9mb2N1cyAoYm9vbCBhY2NlcHRfZm9jdXMpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JCXB1 YmxpYyB2b2lkIHNldF9jb2xvciAoQ2x1dHRlci5Db2xvciBjb2xvcik7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAu NiIpXQotLQkJcHVibGljIHZvaWQgc2V0X2ZvZyAoQ2x1dHRlci5Gb2cgZm9nKTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9mdWxsc2NyZWVuIChib29s IGZ1bGxzY3JlZW4pOwotKwkJcHVibGljIHZvaWQgc2NoZWR1bGVfdXBkYXRlICgpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjAuNiIpXQotIAkJcHVibGljIHZvaWQgc2V0X2tleV9mb2N1cyAoQ2x1 dHRlci5BY3Rvcj8gYWN0b3IpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotIAkJcHVi bGljIHZvaWQgc2V0X21pbmltdW1fc2l6ZSAodWludCB3aWR0aCwgdWludCBoZWlnaHQpOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAkJcHVibGljIHZvaWQgc2V0X21vdGlvbl9ldmVu dHNfZW5hYmxlZCAoYm9vbCBlbmFibGVkKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0K LS0JCXB1YmxpYyB2b2lkIHNldF9ub19jbGVhcl9oaW50IChib29sIG5vX2NsZWFyKTsKLS0JCXB1 YmxpYyB2b2lkIHNldF9wZXJzcGVjdGl2ZSAoQ2x1dHRlci5QZXJzcGVjdGl2ZSBwZXJzcGVjdGl2 ZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfdGhy b3R0bGVfbW90aW9uX2V2ZW50cyAoYm9vbCB0aHJvdHRsZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMC40IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfdGl0bGUgKHN0cmluZyB0aXRsZSk7Ci0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfdXNlX2FscGhhIChi b29sIHVzZV9hbHBoYSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIHZvaWQgc2V0X3Vz ZV9mb2cgKGJvb2wgZm9nKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLS0JCXB1Ymxp YyB2b2lkIHNldF91c2VyX3Jlc2l6YWJsZSAoYm9vbCByZXNpemFibGUpOwotLQkJcHVibGljIHZv aWQgc2hvd19jdXJzb3IgKCk7Ci0tCQlwdWJsaWMgdm9pZCB0aGF3X3VwZGF0ZXMgKCk7Ci0tCQlw dWJsaWMgdm9pZCB1cGRhdGVfcmVzb3VyY2Vfc2NhbGVzICgpOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjEuNiIpXQotLQkJcHVibGljIGJvb2wgYWNjZXB0X2ZvY3VzIHsgZ2V0OyBzZXQ7IH0KLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIild Ci0tCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBjb2xvciB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nl c3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBib29sIGN1cnNvcl92aXNpYmxlIHsgZ2V0OyBzZXQ7IH0K LS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEw Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQ2x1dHRlci5Gb2cgZm9nIHsgZ2V0OyBzZXQ7 IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgZnVsbHNjcmVlbl9zZXQg eyBnZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJCXB1YmxpYyBDbHV0dGVy LkFjdG9yIGtleV9mb2N1cyB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS40 IildCi0tCQlwdWJsaWMgYm9vbCBub19jbGVhcl9oaW50IHsgZ2V0OyBzZXQ7IH0KLS0JCVtOb0Fj Y2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyBib29sIG9mZnNjcmVlbiB7IGdldDsgc2V0OyB9 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgQ2x1dHRlci5QZXJzcGVj dGl2ZSBwZXJzcGVjdGl2ZSB7IGdldDsgc2V0OyB9Ci0rCQlwdWJsaWMgQ2x1dHRlci5QZXJzcGVj dGl2ZSBwZXJzcGVjdGl2ZSB7IGdldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQot IAkJcHVibGljIHN0cmluZyB0aXRsZSB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4yIildCi0tCQlwdWJsaWMgYm9vbCB1c2VfYWxwaGEgeyBnZXQ7IHNldDsgfQotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5j ZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBib29sIHVzZV9mb2cgeyBnZXQ7IHNldDsgfQotLQkJW1Zl cnNpb24gKHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGljIGJvb2wgdXNlcl9yZXNpemFibGUgeyBn ZXQ7IHNldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotIAkJcHVibGljIHZpcnR1 YWwgc2lnbmFsIHZvaWQgYWN0aXZhdGUgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yMCIp XQotLQkJcHVibGljIHNpZ25hbCB2b2lkIGFmdGVyX3BhaW50ICgpOwotKwkJcHVibGljIHNpZ25h bCB2b2lkIGFmdGVyX3BhaW50IChDbHV0dGVyLlN0YWdlVmlldyB2aWV3KTsKLSsJCXB1YmxpYyBz aWduYWwgdm9pZCBhZnRlcl91cGRhdGUgKENsdXR0ZXIuU3RhZ2VWaWV3IHZpZXcpOwotKwkJcHVi bGljIHNpZ25hbCB2b2lkIGJlZm9yZV9wYWludCAoQ2x1dHRlci5TdGFnZVZpZXcgdmlldyk7Ci0r CQlwdWJsaWMgc2lnbmFsIHZvaWQgYmVmb3JlX3VwZGF0ZSAoQ2x1dHRlci5TdGFnZVZpZXcgdmll dyk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0gCQlwdWJsaWMgdmlydHVhbCBzaWdu YWwgdm9pZCBkZWFjdGl2YXRlICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotIAkJ cHVibGljIHZpcnR1YWwgc2lnbmFsIGJvb2wgZGVsZXRlX2V2ZW50IChDbHV0dGVyLkV2ZW50IGV2 ZW50KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyB2aXJ0dWFsIHNp Z25hbCB2b2lkIGZ1bGxzY3JlZW4gKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0t CQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCB1bmZ1bGxzY3JlZW4gKCk7Ci0rCQlwdWJsaWMg dmlydHVhbCBzaWduYWwgdm9pZCBwYWludF92aWV3IChDbHV0dGVyLlN0YWdlVmlldyB2aWV3LCBD YWlyby5SZWdpb24gcmVkcmF3X2NsaXApOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9zdGFnZV9tYW5hZ2Vy X2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLUBAIC03MTg1LDgg KzY2NTEsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44 IildCi0gCQlwdWJsaWMgR0xpYi5TTGlzdDx3ZWFrIENsdXR0ZXIuU3RhZ2U+IGxpc3Rfc3RhZ2Vz ICgpOwotIAkJcHVibGljIHVub3duZWQgR0xpYi5TTGlzdDxDbHV0dGVyLlN0YWdlPiBwZWVrX3N0 YWdlcyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kZWZhdWx0X3N0 YWdlIChDbHV0dGVyLlN0YWdlIHN0YWdlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0K LSAJCXB1YmxpYyBDbHV0dGVyLlN0YWdlIGRlZmF1bHRfc3RhZ2UgeyBnZXQ7IH0KLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIwLjgiKV0KLUBAIC03MjA2LDYzICs2NjcwLDMzIEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCXB1YmxpYyB1aW50MzIgdGltZTsKLSAJCXB1YmxpYyBDbHV0dGVyLkV2ZW50 VHlwZSB0eXBlOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2Ns dXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9zdGF0ZV9nZXRfdHlwZSAoKSIpXQotLQlbVmVy c2lvbiAoc2luY2UgPSAiMS40IildCi0tCXB1YmxpYyBjbGFzcyBTdGF0ZSA6IEdMaWIuT2JqZWN0 LCBDbHV0dGVyLlNjcmlwdGFibGUgewotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1 dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfc3RhZ2Vfdmlld19nZXRfdHlwZSAo KSIpXQotKwlwdWJsaWMgY2xhc3MgU3RhZ2VWaWV3IDogR0xpYi5PYmplY3QgewotIAkJW0NDb2Rl IChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0J CXB1YmxpYyBTdGF0ZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdWludCBnZXRf ZHVyYXRpb24gKHN0cmluZz8gc291cmNlX3N0YXRlX25hbWUsIHN0cmluZz8gdGFyZ2V0X3N0YXRl X25hbWUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBHTGliLkxpc3Q8d2VhayBDbHV0 dGVyLlN0YXRlS2V5PiBnZXRfa2V5cyAoc3RyaW5nPyBzb3VyY2Vfc3RhdGVfbmFtZSwgc3RyaW5n PyB0YXJnZXRfc3RhdGVfbmFtZSwgR0xpYi5PYmplY3Q/IG9iamVjdCwgc3RyaW5nPyBwcm9wZXJ0 eV9uYW1lKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0 X3N0YXRlICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBHTGliLkxpc3Q8d2VhayBz dHJpbmc+IGdldF9zdGF0ZXMgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVub3du ZWQgQ2x1dHRlci5UaW1lbGluZSBnZXRfdGltZWxpbmUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQot LQkJcHVibGljIHZvaWQgcmVtb3ZlX2tleSAoc3RyaW5nPyBzb3VyY2Vfc3RhdGVfbmFtZSwgc3Ry aW5nPyB0YXJnZXRfc3RhdGVfbmFtZSwgR0xpYi5PYmplY3Q/IG9iamVjdCwgc3RyaW5nPyBwcm9w ZXJ0eV9uYW1lKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZHVyYXRp b24gKHN0cmluZz8gc291cmNlX3N0YXRlX25hbWUsIHN0cmluZz8gdGFyZ2V0X3N0YXRlX25hbWUs IHVpbnQgZHVyYXRpb24pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENs dXR0ZXIuU3RhdGUgc2V0X2tleSAoc3RyaW5nPyBzb3VyY2Vfc3RhdGVfbmFtZSwgc3RyaW5nIHRh cmdldF9zdGF0ZV9uYW1lLCBHTGliLk9iamVjdCBvYmplY3QsIHN0cmluZyBwcm9wZXJ0eV9uYW1l LCB1aW50IG1vZGUsIEdMaWIuVmFsdWUgdmFsdWUsIGRvdWJsZSBwcmVfZGVsYXksIGRvdWJsZSBw b3N0X2RlbGF5KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVy LlRpbWVsaW5lIHNldF9zdGF0ZSAoc3RyaW5nIHRhcmdldF9zdGF0ZV9uYW1lKTsKLS0JCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2Ug PSAiMS40IildCi0tCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLlRpbWVsaW5lIHdhcnBfdG9fc3Rh dGUgKHN0cmluZyB0YXJnZXRfc3RhdGVfbmFtZSk7Ci0rCQlwcm90ZWN0ZWQgU3RhZ2VWaWV3ICgp OwotKwkJcHVibGljIHZvaWQgYXNzaWduX25leHRfc2Nhbm91dCAoQ29nbC5TY2Fub3V0IHNjYW5v dXQpOwotKwkJcHVibGljIHVub3duZWQgQ29nbC5GcmFtZWJ1ZmZlciBnZXRfZnJhbWVidWZmZXIg KCk7Ci0rCQlwdWJsaWMgdm9pZCBnZXRfbGF5b3V0IChDYWlyby5SZWN0YW5nbGVJbnQgcmVjdCk7 Ci0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIGdldF9vZmZzY3JlZW5fdHJhbnNmb3JtYXRpb25fbWF0 cml4IChDb2dsLk1hdHJpeCBtYXRyaXgpOwotKwkJcHVibGljIHVub3duZWQgQ29nbC5GcmFtZWJ1 ZmZlciBnZXRfb25zY3JlZW4gKCk7Ci0rCQlwdWJsaWMgZmxvYXQgZ2V0X3NjYWxlICgpOwotKwkJ cHVibGljIHZvaWQgaW52YWxpZGF0ZV9vZmZzY3JlZW5fYmxpdF9waXBlbGluZSAoKTsKLSsJCVtO b1dyYXBwZXJdCi0rCQlwdWJsaWMgdmlydHVhbCB2b2lkIHNldHVwX29mZnNjcmVlbl9ibGl0X3Bp cGVsaW5lIChDb2dsLlBpcGVsaW5lIHBpcGVsaW5lKTsKLSsJCVtOb1dyYXBwZXJdCi0rCQlwdWJs aWMgdmlydHVhbCB2b2lkIHRyYW5zZm9ybV9yZWN0X3RvX29uc2NyZWVuIChDYWlyby5SZWN0YW5n bGVJbnQgc3JjX3JlY3QsIGludCBkc3Rfd2lkdGgsIGludCBkc3RfaGVpZ2h0LCBDYWlyby5SZWN0 YW5nbGVJbnQgZHN0X3JlY3QpOwotIAkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEu NCIpXQotLQkJcHVibGljIHVpbnQgZHVyYXRpb24geyBnZXQ7IHNldDsgfQotKwkJcHVibGljIENh aXJvLlJlY3RhbmdsZUludCBsYXlvdXQgeyBvd25lZCBnZXQ7IHNldCBjb25zdHJ1Y3Q7IH0KLSAJ CVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBzdHJpbmcg c3RhdGUgeyBvd25lZCBnZXQ7IHNldDsgfQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2 aXJ0dWFsIHNpZ25hbCB2b2lkIGNvbXBsZXRlZCAoKTsKLS0JfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRf Y29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0dGVy X3N0YXRlX2tleV9nZXRfdHlwZSAoKSIpXQotLQlbQ29tcGFjdF0KLS0JW1ZlcnNpb24gKHNpbmNl ID0gIjEuNCIpXQotLQlwdWJsaWMgY2xhc3MgU3RhdGVLZXkgewotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0K LS0JCXB1YmxpYyB1bG9uZyBnZXRfbW9kZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJs aWMgdW5vd25lZCBHTGliLk9iamVjdCBnZXRfb2JqZWN0ICgpOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0K LS0JCXB1YmxpYyBkb3VibGUgZ2V0X3Bvc3RfZGVsYXkgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQot LQkJcHVibGljIGRvdWJsZSBnZXRfcHJlX2RlbGF5ICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0J CXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfcHJvcGVydHlfbmFtZSAoKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAi MS40IildCi0tCQlwdWJsaWMgR0xpYi5UeXBlIGdldF9wcm9wZXJ0eV90eXBlICgpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5j ZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRfc291cmNlX3N0YXRlX25h bWUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF90 YXJnZXRfc3RhdGVfbmFtZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgYm9vbCBn ZXRfdmFsdWUgKEdMaWIuVmFsdWUgdmFsdWUpOwotKwkJcHVibGljIHN0cmluZyBuYW1lIHsgb3du ZWQgZ2V0OyBjb25zdHJ1Y3Q7IH0KLSsJCVtOb0FjY2Vzc29yTWV0aG9kXQotKwkJcHVibGljIGZs b2F0IHJlZnJlc2hfcmF0ZSB7IGdldDsgc2V0IGNvbnN0cnVjdDsgfQotKwkJW05vQWNjZXNzb3JN ZXRob2RdCi0rCQlwdWJsaWMgZmxvYXQgc2NhbGUgeyBnZXQ7IHNldCBjb25zdHJ1Y3Q7IH0KLSsJ CVtOb0FjY2Vzc29yTWV0aG9kXQotKwkJcHVibGljIENsdXR0ZXIuU3RhZ2Ugc3RhZ2UgeyBvd25l ZCBnZXQ7IGNvbnN0cnVjdDsgfQotKwkJW05vQWNjZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMgYm9v bCB1c2Vfc2hhZG93ZmIgeyBnZXQ7IGNvbnN0cnVjdDsgfQotIAl9Ci0gCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9zd2lw ZV9hY3Rpb25fZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotQEAg LTcyNzQsNTMgKzY3MDgsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xNCIpXQotIAkJcHVibGljIHZpcnR1YWwgc2lnbmFsIGJvb2wgc3dpcGUgKENsdXR0 ZXIuQWN0b3IgYWN0b3IsIENsdXR0ZXIuU3dpcGVEaXJlY3Rpb24gZGlyZWN0aW9uKTsKLSAJfQot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lk ID0gImNsdXR0ZXJfdGFibGVfbGF5b3V0X2dldF90eXBlICgpIildCi0tCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMS40Iild Ci0tCXB1YmxpYyBjbGFzcyBUYWJsZUxheW91dCA6IENsdXR0ZXIuTGF5b3V0TWFuYWdlciB7Ci0t CQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVy TGF5b3V0TWFuYWdlcioiKV0KLS0JCXB1YmxpYyBUYWJsZUxheW91dCAoKTsKLS0JCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAi MS40IildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYWxpZ25tZW50IChDbHV0dGVyLkFjdG9yIGFjdG9y LCBvdXQgQ2x1dHRlci5UYWJsZUFsaWdubWVudCB4X2FsaWduLCBvdXQgQ2x1dHRlci5UYWJsZUFs aWdubWVudCB5X2FsaWduKTsKLS0JCXB1YmxpYyBpbnQgZ2V0X2NvbHVtbl9jb3VudCAoKTsKLS0J CXB1YmxpYyB1aW50IGdldF9jb2x1bW5fc3BhY2luZyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0t CQlwdWJsaWMgdWludCBnZXRfZWFzaW5nX2R1cmF0aW9uICgpOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0K LS0JCXB1YmxpYyB1bG9uZyBnZXRfZWFzaW5nX21vZGUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQot LQkJcHVibGljIHZvaWQgZ2V0X2V4cGFuZCAoQ2x1dHRlci5BY3RvciBhY3Rvciwgb3V0IGJvb2wg eF9leHBhbmQsIG91dCBib29sIHlfZXhwYW5kKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJs aWMgdm9pZCBnZXRfZmlsbCAoQ2x1dHRlci5BY3RvciBhY3Rvciwgb3V0IGJvb2wgeF9maWxsLCBv dXQgYm9vbCB5X2ZpbGwpOwotLQkJcHVibGljIGludCBnZXRfcm93X2NvdW50ICgpOwotLQkJcHVi bGljIHVpbnQgZ2V0X3Jvd19zcGFjaW5nICgpOwotLQkJcHVibGljIHZvaWQgZ2V0X3NwYW4gKENs dXR0ZXIuQWN0b3IgYWN0b3IsIG91dCBpbnQgY29sdW1uX3NwYW4sIG91dCBpbnQgcm93X3NwYW4p OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBib29sIGdldF91c2VfYW5pbWF0aW9ucyAo KTsKLS0JCXB1YmxpYyB2b2lkIHBhY2sgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIGludCBjb2x1bW4s IGludCByb3cpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbGlnbm1l bnQgKENsdXR0ZXIuQWN0b3IgYWN0b3IsIENsdXR0ZXIuVGFibGVBbGlnbm1lbnQgeF9hbGlnbiwg Q2x1dHRlci5UYWJsZUFsaWdubWVudCB5X2FsaWduKTsKLS0JCXB1YmxpYyB2b2lkIHNldF9jb2x1 bW5fc3BhY2luZyAodWludCBzcGFjaW5nKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMg dm9pZCBzZXRfZWFzaW5nX2R1cmF0aW9uICh1aW50IG1zZWNzKTsKLS0JCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40Iild Ci0tCQlwdWJsaWMgdm9pZCBzZXRfZWFzaW5nX21vZGUgKHVsb25nIG1vZGUpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9 ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9leHBhbmQgKENsdXR0ZXIuQWN0b3IgYWN0b3Is IGJvb2wgeF9leHBhbmQsIGJvb2wgeV9leHBhbmQpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1 YmxpYyB2b2lkIHNldF9maWxsIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBib29sIHhfZmlsbCwgYm9v bCB5X2ZpbGwpOwotLQkJcHVibGljIHZvaWQgc2V0X3Jvd19zcGFjaW5nICh1aW50IHNwYWNpbmcp OwotLQkJcHVibGljIHZvaWQgc2V0X3NwYW4gKENsdXR0ZXIuQWN0b3IgYWN0b3IsIGludCBjb2x1 bW5fc3BhbiwgaW50IHJvd19zcGFuKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9p ZCBzZXRfdXNlX2FuaW1hdGlvbnMgKGJvb2wgYW5pbWF0ZSk7Ci0tCQlwdWJsaWMgdWludCBjb2x1 bW5fc3BhY2luZyB7IGdldDsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHVp bnQgZWFzaW5nX2R1cmF0aW9uIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS40IildCi0tCQlw dWJsaWMgdWxvbmcgZWFzaW5nX21vZGUgeyBnZXQ7IHNldDsgfQotLQkJcHVibGljIHVpbnQgcm93 X3NwYWNpbmcgeyBnZXQ7IHNldDsgfQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBib29s IHVzZV9hbmltYXRpb25zIHsgZ2V0OyBzZXQ7IH0KLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfdGFwX2FjdGlv bl9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotIAlwdWJsaWMg Y2xhc3MgVGFwQWN0aW9uIDogQ2x1dHRlci5HZXN0dXJlQWN0aW9uIHsKLUBAIC03MzQ4LDcgKzY3 MzUsNyBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBnZXRf Y3Vyc29yX2NvbG9yICgpOwotIAkJcHVibGljIGludCBnZXRfY3Vyc29yX3Bvc2l0aW9uICgpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTYiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9jdXJzb3Jf cmVjdCAob3V0IHVub3duZWQgQ2x1dHRlci5SZWN0IHJlY3QpOwotKwkJcHVibGljIHZvaWQgZ2V0 X2N1cnNvcl9yZWN0IChvdXQgdW5vd25lZCBHcmFwaGVuZS5SZWN0IHJlY3QpOwotIAkJcHVibGlj IHVpbnQgZ2V0X2N1cnNvcl9zaXplICgpOwotIAkJcHVibGljIGJvb2wgZ2V0X2N1cnNvcl92aXNp YmxlICgpOwotIAkJcHVibGljIGJvb2wgZ2V0X2VkaXRhYmxlICgpOwotQEAgLTc0NjcsNyArNjg1 NCw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2Iild Ci0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBjdXJzb3JfY2hhbmdlZCAoKTsKLSAJCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2lu Y2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBjdXJzb3JfZXZlbnQg KENsdXR0ZXIuR2VvbWV0cnkgZ2VvbWV0cnkpOwotKwkJcHVibGljIHZpcnR1YWwgc2lnbmFsIHZv aWQgY3Vyc29yX2V2ZW50IChHcmFwaGVuZS5SZWN0IHJlY3QpOwotIAkJW0hhc0VtaXR0ZXJdCi0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0gCQlwdWJsaWMgc2lnbmFsIHZvaWQgZGVsZXRl X3RleHQgKGludCBzdGFydF9wb3MsIGludCBlbmRfcG9zKTsKLUBAIC03NTA1LDk0ICs2ODkyLDYg QEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9u ID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlclBhaW50Tm9kZSoiKV0KLSAJCXB1YmxpYyBUZXh0Tm9k ZSAoUGFuZ28uTGF5b3V0PyBsYXlvdXQsIENsdXR0ZXIuQ29sb3I/IGNvbG9yKTsKLSAJfQotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0g ImNsdXR0ZXJfdGV4dHVyZV9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC4y IildCi0tCXB1YmxpYyBjbGFzcyBUZXh0dXJlIDogQ2x1dHRlci5BY3RvciwgQXRrLkltcGxlbWVu dG9yLCBDbHV0dGVyLkFuaW1hdGFibGUsIENsdXR0ZXIuQ29udGFpbmVyLCBDbHV0dGVyLlNjcmlw dGFibGUgewotLQkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUg PSAiQ2x1dHRlckFjdG9yKiIpXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBUZXh0dXJlICgpOwotLQkJW0NDb2Rl IChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UsIHR5cGUgPSAiQ2x1dHRlckFjdG9yKiIp XQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu OCIsIHNpbmNlID0gIjAuNiIpXQotLQkJcHVibGljIFRleHR1cmUuZnJvbV9hY3RvciAoQ2x1dHRl ci5BY3RvciBhY3Rvcik7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxz ZSwgdHlwZSA9ICJDbHV0dGVyQWN0b3IqIildCi0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGlj IFRleHR1cmUuZnJvbV9maWxlIChzdHJpbmcgZmlsZW5hbWUpIHRocm93cyBDbHV0dGVyLlRleHR1 cmVFcnJvcjsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjEyIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYmFzZV9zaXplIChvdXQgaW50IHdpZHRo LCBvdXQgaW50IGhlaWdodCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHVub3duZWQg Q29nbC5IYW5kbGUgZ2V0X2NvZ2xfbWF0ZXJpYWwgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIpXQotLQkJ cHVibGljIHVub3duZWQgQ29nbC5IYW5kbGUgZ2V0X2NvZ2xfdGV4dHVyZSAoKTsKLS0JCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2Ug PSAiMC44IildCi0tCQlwdWJsaWMgQ2x1dHRlci5UZXh0dXJlUXVhbGl0eSBnZXRfZmlsdGVyX3F1 YWxpdHkgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIGJvb2wgZ2V0X2tlZXBfYXNw ZWN0X3JhdGlvICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVk X3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBib29sIGdldF9sb2Fk X2FzeW5jICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBib29sIGdldF9sb2FkX2Rh dGFfYXN5bmMgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIpXQotLQkJcHVibGljIGludCBnZXRfbWF4X3Rp bGVfd2FzdGUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIGJvb2wgZ2V0X3BpY2tf d2l0aF9hbHBoYSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfcmVw ZWF0IChvdXQgYm9vbCByZXBlYXRfeCwgb3V0IGJvb2wgcmVwZWF0X3kpOwotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIx LjAiKV0KLS0JCXB1YmxpYyBib29sIGdldF9zeW5jX3NpemUgKCk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuNiIp XQotLQkJcHVibGljIGJvb2wgc2V0X2FyZWFfZnJvbV9yZ2JfZGF0YSAoW0NDb2RlIChhcnJheV9s ZW5ndGggPSBmYWxzZSldIHVpbnQ4W10gZGF0YSwgYm9vbCBoYXNfYWxwaGEsIGludCB4LCBpbnQg eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgcm93c3RyaWRlLCBpbnQgYnBwLCBDbHV0dGVy LlRleHR1cmVGbGFncyBmbGFncykgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuOCIp XQotLQkJcHVibGljIHZvaWQgc2V0X2NvZ2xfbWF0ZXJpYWwgKENvZ2wuSGFuZGxlIGNvZ2xfbWF0 ZXJpYWwpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9jb2dsX3RleHR1 cmUgKENvZ2wuSGFuZGxlIGNvZ2xfdGV4KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMg dm9pZCBzZXRfZmlsdGVyX3F1YWxpdHkgKENsdXR0ZXIuVGV4dHVyZVF1YWxpdHkgZmlsdGVyX3F1 YWxpdHkpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTIiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1YmxpYyBib29sIHNldF9mcm9tX2ZpbGUg KHN0cmluZyBmaWxlbmFtZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAuNCIpXQot LQkJcHVibGljIGJvb2wgc2V0X2Zyb21fcmdiX2RhdGEgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0g ZmFsc2UpXSB1aW50OFtdIGRhdGEsIGJvb2wgaGFzX2FscGhhLCBpbnQgd2lkdGgsIGludCBoZWln aHQsIGludCByb3dzdHJpZGUsIGludCBicHAsIENsdXR0ZXIuVGV4dHVyZUZsYWdzIGZsYWdzKSB0 aHJvd3MgR0xpYi5FcnJvcjsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC40IildCi0tCQlwdWJsaWMgYm9vbCBzZXRf ZnJvbV95dXZfZGF0YSAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIHVpbnQ4W10gZGF0 YSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBDbHV0dGVyLlRleHR1cmVGbGFncyBmbGFncykgdGhy b3dzIEdMaWIuRXJyb3I7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2tl ZXBfYXNwZWN0X3JhdGlvIChib29sIGtlZXBfYXNwZWN0KTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgdm9pZCBzZXRfbG9hZF9hc3luYyAoYm9vbCBsb2FkX2FzeW5jKTsKLS0JCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbG9hZF9kYXRhX2FzeW5jIChib29sIGxvYWRf YXN5bmMpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTIiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9waWNrX3dpdGhf YWxwaGEgKGJvb2wgcGlja193aXRoX2FscGhhKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJs aWMgdm9pZCBzZXRfcmVwZWF0IChib29sIHJlcGVhdF94LCBib29sIHJlcGVhdF95KTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2lu Y2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfc3luY19zaXplIChib29sIHN5bmNfc2l6 ZSk7Ci0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbCBjb2dsX21hdGVyaWFsIHsgZ2V0OyBzZXQ7IH0K LS0JCXB1YmxpYyBDb2dsLlRleHR1cmUgY29nbF90ZXh0dXJlIHsgZ2V0OyBzZXQ7IH0KLS0JCVtO b0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGljIGJvb2wgZGlzYWJsZV9zbGljaW5nIHsgZ2V0OyBj b25zdHJ1Y3Q7IH0KLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiKV0KLS0JCXB1YmxpYyBzdHJpbmcg ZmlsZW5hbWUgeyBvd25lZCBnZXQ7IHNldDsgfQotLQkJcHVibGljIENsdXR0ZXIuVGV4dHVyZVF1 YWxpdHkgZmlsdGVyX3F1YWxpdHkgeyBnZXQ7IHNldCBjb25zdHJ1Y3Q7IH0KLS0JCXB1YmxpYyBi b29sIGtlZXBfYXNwZWN0X3JhdGlvIHsgZ2V0OyBzZXQ7IH0KLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEyIiwgc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgYm9vbCBsb2FkX2FzeW5jIHsgc2V0OyB9Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjEuMCIpXQotLQkJ cHVibGljIGJvb2wgbG9hZF9kYXRhX2FzeW5jIHsgc2V0OyB9Ci0tCQlwdWJsaWMgYm9vbCBwaWNr X3dpdGhfYWxwaGEgeyBnZXQ7IHNldDsgfQotLQkJW05vQWNjZXNzb3JNZXRob2RdCi0tCQlwdWJs aWMgYm9vbCByZXBlYXRfeCB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0J CXB1YmxpYyBib29sIHJlcGVhdF95IHsgZ2V0OyBzZXQ7IH0KLS0JCXB1YmxpYyBib29sIHN5bmNf c2l6ZSB7IGdldDsgc2V0OyB9Ci0tCQlbTm9BY2Nlc3Nvck1ldGhvZF0KLS0JCXB1YmxpYyBpbnQg dGlsZV93YXN0ZSB7IGdldDsgfQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTIiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2aXJ0dWFs IHNpZ25hbCB2b2lkIGxvYWRfZmluaXNoZWQgKEdMaWIuRXJyb3IgZXJyb3IpOwotLQkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTIiKV0KLS0JCXB1 YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIHBpeGJ1Zl9jaGFuZ2UgKCk7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGlj IHZpcnR1YWwgc2lnbmFsIHZvaWQgc2l6ZV9jaGFuZ2UgKGludCB3aWR0aCwgaW50IGhlaWdodCk7 Ci0tCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwg dHlwZV9pZCA9ICJjbHV0dGVyX3RleHR1cmVfbm9kZV9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lv biAoc2luY2UgPSAiMS4xMCIpXQotIAlwdWJsaWMgY2xhc3MgVGV4dHVyZU5vZGUgOiBDbHV0dGVy LlBpcGVsaW5lTm9kZSB7Ci1AQCAtNzYwNCw3ICs2OTAzLDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAlwdWJsaWMgY2xhc3MgVGltZWxpbmUgOiBHTGliLk9iamVjdCwgQ2x1dHRlci5TY3JpcHRh YmxlIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JCXB1YmxpYyBUaW1lbGluZSAodWludCBtc2Vjcyk7 Ci0rCQlwdWJsaWMgVGltZWxpbmUgKHVpbnQgZHVyYXRpb25fbXMpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTQiKV0KLSAJCXB1YmxpYyB2b2lkIGFkZF9tYXJrZXIgKHN0cmluZyBtYXJrZXJf bmFtZSwgZG91YmxlIHByb2dyZXNzKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLUBA IC03NjEyLDEyICs2OTExLDE1IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB2b2lk IGFkdmFuY2UgKHVpbnQgbXNlY3MpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotIAkJ cHVibGljIHZvaWQgYWR2YW5jZV90b19tYXJrZXIgKHN0cmluZyBtYXJrZXJfbmFtZSk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNp bmNlID0gIjAuNCIpXQotLQkJcHVibGljIENsdXR0ZXIuVGltZWxpbmUgY2xvbmUgKCk7Ci0rCQlb Q0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0rCQlwdWJsaWMgVGltZWxp bmUuZm9yX2FjdG9yIChDbHV0dGVyLkFjdG9yIGFjdG9yLCB1aW50IGR1cmF0aW9uX21zKTsKLSsJ CVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSsJCXB1YmxpYyBUaW1l bGluZS5mb3JfZnJhbWVfY2xvY2sgKENsdXR0ZXIuRnJhbWVDbG9jayBmcmFtZV9jbG9jaywgdWlu dCBkdXJhdGlvbl9tcyk7Ci0rCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGdldF9hY3Rv ciAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyBib29sIGdldF9h dXRvX3JldmVyc2UgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQkJcHVibGlj IGJvb2wgZ2V0X2N1YmljX2Jlemllcl9wcm9ncmVzcyAoQ2x1dHRlci5Qb2ludCBjXzEsIENsdXR0 ZXIuUG9pbnQgY18yKTsKLSsJCXB1YmxpYyBib29sIGdldF9jdWJpY19iZXppZXJfcHJvZ3Jlc3Mg KEdyYXBoZW5lLlBvaW50IGNfMSwgR3JhcGhlbmUuUG9pbnQgY18yKTsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgaW50IGdldF9jdXJyZW50X3JlcGVhdCAoKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLUBAIC03NjMxLDggKzY5MzMsNiBAQCBuYW1lc3Bh Y2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIGlu dDY0IGdldF9kdXJhdGlvbl9oaW50ICgpOwotIAkJcHVibGljIHVpbnQgZ2V0X2VsYXBzZWRfdGlt ZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjEwIildCi0tCQlwdWJsaWMgYm9vbCBnZXRfbG9vcCAoKTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIwLjYiKV0KLSAJCXB1YmxpYyBkb3VibGUgZ2V0X3Byb2dyZXNzICgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTAiKV0KLUBAIC03NjUxLDE4ICs2OTUxLDE4IEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgiKV0KLSAJCXB1YmxpYyB2b2lkIHJl bW92ZV9tYXJrZXIgKHN0cmluZyBtYXJrZXJfbmFtZSk7Ci0gCQlwdWJsaWMgdm9pZCByZXdpbmQg KCk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfYWN0b3IgKENsdXR0ZXIuQWN0b3I/IGFjdG9yKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9hdXRvX3JldmVy c2UgKGJvb2wgcmV2ZXJzZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotLQkJcHVi bGljIHZvaWQgc2V0X2N1YmljX2Jlemllcl9wcm9ncmVzcyAoQ2x1dHRlci5Qb2ludCBjXzEsIENs dXR0ZXIuUG9pbnQgY18yKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9jdWJpY19iZXppZXJfcHJvZ3Jl c3MgKEdyYXBoZW5lLlBvaW50IGNfMSwgR3JhcGhlbmUuUG9pbnQgY18yKTsKLSAJCVtWZXJzaW9u IChzaW5jZSA9ICIwLjQiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9kZWxheSAodWludCBtc2Vjcyk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC42IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfZGlyZWN0 aW9uIChDbHV0dGVyLlRpbWVsaW5lRGlyZWN0aW9uIGRpcmVjdGlvbik7Ci0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMC42IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfZHVyYXRpb24gKHVpbnQgbXNlY3Mp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sb29wIChib29sIGxvb3ApOwotKwkJcHVibGljIHZv aWQgc2V0X2ZyYW1lX2Nsb2NrIChDbHV0dGVyLkZyYW1lQ2xvY2sgZnJhbWVfY2xvY2spOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9wcm9ncmVzc19m dW5jIChvd25lZCBDbHV0dGVyLlRpbWVsaW5lUHJvZ3Jlc3NGdW5jPyBmdW5jKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjEwIildCi1AQCAtNzY3NCw2ICs2OTc0LDcgQEAgbmFtZXNwYWNlIENs dXR0ZXIgewotIAkJcHVibGljIHZvaWQgc2tpcCAodWludCBtc2Vjcyk7Ci0gCQlwdWJsaWMgdm9p ZCBzdGFydCAoKTsKLSAJCXB1YmxpYyB2b2lkIHN0b3AgKCk7Ci0rCQlwdWJsaWMgQ2x1dHRlci5B Y3RvciBhY3RvciB7IGdldDsgc2V0IGNvbnN0cnVjdDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuNiIpXQotIAkJcHVibGljIGJvb2wgYXV0b19yZXZlcnNlIHsgZ2V0OyBzZXQ7IH0KLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIwLjQiKV0KLUBAIC03NjgyLDggKzY5ODMsOCBAQCBuYW1lc3BhY2Ug Q2x1dHRlciB7Ci0gCQlwdWJsaWMgQ2x1dHRlci5UaW1lbGluZURpcmVjdGlvbiBkaXJlY3Rpb24g eyBnZXQ7IHNldDsgfQotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotIAkJcHVibGljIHVp bnQgZHVyYXRpb24geyBnZXQ7IHNldDsgfQotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyBib29sIGxvb3AgeyBnZXQ7 IHNldDsgfQotKwkJW05vQWNjZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMgQ2x1dHRlci5GcmFtZUNs b2NrIGZyYW1lX2Nsb2NrIHsgb3duZWQgZ2V0OyBzZXQgY29uc3RydWN0OyB9Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIENsdXR0ZXIuQW5pbWF0aW9uTW9kZSBwcm9n cmVzc19tb2RlIHsgZ2V0OyBzZXQ7IH0KLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi1A QCAtNzY5NywxMiArNjk5OCw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEyIildCi0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBzdG9wcGVkIChi b29sIGlzX2ZpbmlzaGVkKTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1 dHRlci9jbHV0dGVyLmgiKV0KLS0JW0NvbXBhY3RdCi0tCXB1YmxpYyBjbGFzcyBUaW1lb3V0UG9v bCB7Ci0tCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0tCQlwdWJs aWMgVGltZW91dFBvb2wgKGludCBwcmlvcml0eSk7Ci0tCX0KLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCVtD b21wYWN0XQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotQEAgLTc3NTMsNiArNzA0OCwx MSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgZmxvYXQgeDsKLSAJCXB1YmxpYyBm bG9hdCB5OwotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl90cmFuc2Zvcm1fbm9kZV9nZXRfdHlwZSAoKSIpXQot KwlwdWJsaWMgY2xhc3MgVHJhbnNmb3JtTm9kZSA6IENsdXR0ZXIuUGFpbnROb2RlIHsKLSsJCVtD Q29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0gIkNsdXR0ZXJQYWlu dE5vZGUqIildCi0rCQlwdWJsaWMgVHJhbnNmb3JtTm9kZSAoQ29nbC5NYXRyaXggcHJvamVjdGlv bik7Ci0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5o IiwgdHlwZV9pZCA9ICJjbHV0dGVyX3RyYW5zaXRpb25fZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTAiKV0KLSAJcHVibGljIGFic3RyYWN0IGNsYXNzIFRyYW5zaXRpb24g OiBDbHV0dGVyLlRpbWVsaW5lLCBDbHV0dGVyLlNjcmlwdGFibGUgewotQEAgLTc3OTIsNyArNzA5 Miw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5j dGlvbiA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBWaXJ0dWFsSW5wdXREZXZpY2UgKCk7Ci0gCQlw dWJsaWMgaW50IGdldF9kZXZpY2VfdHlwZSAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIENsdXR0ZXIu RGV2aWNlTWFuYWdlciBnZXRfbWFuYWdlciAoKTsKLSAJCXB1YmxpYyB2aXJ0dWFsIHZvaWQgbm90 aWZ5X2Fic29sdXRlX21vdGlvbiAodWludDY0IHRpbWVfdXMsIGRvdWJsZSB4LCBkb3VibGUgeSk7 Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIG5vdGlmeV9idXR0b24gKHVpbnQ2NCB0aW1lX3VzLCB1 aW50MzIgYnV0dG9uLCBDbHV0dGVyLkJ1dHRvblN0YXRlIGJ1dHRvbl9zdGF0ZSk7Ci0gCQlwdWJs aWMgdmlydHVhbCB2b2lkIG5vdGlmeV9kaXNjcmV0ZV9zY3JvbGwgKHVpbnQ2NCB0aW1lX3VzLCBD bHV0dGVyLlNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIENsdXR0ZXIuU2Nyb2xsU291cmNlIHNj cm9sbF9zb3VyY2UpOwotQEAgLTc4MDMsMjggKzcxMDIsMjcgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHVibGljIHZpcnR1YWwgdm9pZCBub3RpZnlfdG91Y2hfZG93biAodWludDY0IHRpbWVf dXMsIGludCBzbG90LCBkb3VibGUgeCwgZG91YmxlIHkpOwotIAkJcHVibGljIHZpcnR1YWwgdm9p ZCBub3RpZnlfdG91Y2hfbW90aW9uICh1aW50NjQgdGltZV91cywgaW50IHNsb3QsIGRvdWJsZSB4 LCBkb3VibGUgeSk7Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIG5vdGlmeV90b3VjaF91cCAodWlu dDY0IHRpbWVfdXMsIGludCBzbG90KTsKLS0JCVtOb0FjY2Vzc29yTWV0aG9kXQotLQkJcHVibGlj IENsdXR0ZXIuRGV2aWNlTWFuYWdlciBkZXZpY2VfbWFuYWdlciB7IG93bmVkIGdldDsgY29uc3Ry dWN0OyB9Ci0gCQlwdWJsaWMgQ2x1dHRlci5JbnB1dERldmljZVR5cGUgZGV2aWNlX3R5cGUgeyBn ZXQ7IGNvbnN0cnVjdDsgfQotKwkJW05vQWNjZXNzb3JNZXRob2RdCi0rCQlwdWJsaWMgQ2x1dHRl ci5TZWF0IHNlYXQgeyBvd25lZCBnZXQ7IGNvbnN0cnVjdDsgfQotIAl9Ci0gCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl96 b29tX2FjdGlvbl9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQot IAlwdWJsaWMgY2xhc3MgWm9vbUFjdGlvbiA6IENsdXR0ZXIuR2VzdHVyZUFjdGlvbiB7Ci0gCQlb Q0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSwgdHlwZSA9ICJDbHV0dGVyQWN0 aW9uKiIpXQotIAkJcHVibGljIFpvb21BY3Rpb24gKCk7Ci0tCQlwdWJsaWMgdm9pZCBnZXRfZm9j YWxfcG9pbnQgKENsdXR0ZXIuUG9pbnQgcG9pbnQpOwotLQkJcHVibGljIHZvaWQgZ2V0X3RyYW5z Zm9ybWVkX2ZvY2FsX3BvaW50IChDbHV0dGVyLlBvaW50IHBvaW50KTsKLSsJCXB1YmxpYyB2b2lk IGdldF9mb2NhbF9wb2ludCAoR3JhcGhlbmUuUG9pbnQgcG9pbnQpOwotKwkJcHVibGljIHZvaWQg Z2V0X3RyYW5zZm9ybWVkX2ZvY2FsX3BvaW50IChHcmFwaGVuZS5Qb2ludCBwb2ludCk7Ci0gCQlw dWJsaWMgQ2x1dHRlci5ab29tQXhpcyBnZXRfem9vbV9heGlzICgpOwotIAkJcHVibGljIHZvaWQg c2V0X3pvb21fYXhpcyAoQ2x1dHRlci5ab29tQXhpcyBheGlzKTsKLSAJCXB1YmxpYyBDbHV0dGVy Llpvb21BeGlzIHpvb21fYXhpcyB7IGdldDsgc2V0OyB9Ci0tCQlwdWJsaWMgdmlydHVhbCBzaWdu YWwgYm9vbCB6b29tIChDbHV0dGVyLkFjdG9yIGFjdG9yLCBDbHV0dGVyLlBvaW50IGZvY2FsX3Bv aW50LCBkb3VibGUgZmFjdG9yKTsKLSsJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCBib29sIHpvb20g KENsdXR0ZXIuQWN0b3IgYWN0b3IsIEdyYXBoZW5lLlBvaW50IGZvY2FsX3BvaW50LCBkb3VibGUg ZmFjdG9yKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0 dGVyLmgiLCB0eXBlX2NuYW1lID0gIkNsdXR0ZXJBbmltYXRhYmxlSW50ZXJmYWNlIiwgdHlwZV9p ZCA9ICJjbHV0dGVyX2FuaW1hdGFibGVfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGludGVyZmFj ZSBBbmltYXRhYmxlIDogR0xpYi5PYmplY3QgewotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuOCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGlj IGFic3RyYWN0IGJvb2wgYW5pbWF0ZV9wcm9wZXJ0eSAoQ2x1dHRlci5BbmltYXRpb24gYW5pbWF0 aW9uLCBzdHJpbmcgcHJvcGVydHlfbmFtZSwgR0xpYi5WYWx1ZSBpbml0aWFsX3ZhbHVlLCBHTGli LlZhbHVlIGZpbmFsX3ZhbHVlLCBkb3VibGUgcHJvZ3Jlc3MsIEdMaWIuVmFsdWUgdmFsdWUpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIGFic3RyYWN0IHVub3duZWQg R0xpYi5QYXJhbVNwZWMgZmluZF9wcm9wZXJ0eSAoc3RyaW5nIHByb3BlcnR5X25hbWUpOwotKwkJ cHVibGljIGFic3RyYWN0IHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfYWN0b3IgKCk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS40IildCi0gCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBnZXRfaW5p dGlhbF9zdGF0ZSAoc3RyaW5nIHByb3BlcnR5X25hbWUsIEdMaWIuVmFsdWUgdmFsdWUpOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotQEAgLTc4MzUsMTIgKzcxMzMsOSBAQCBuYW1lc3Bh Y2UgQ2x1dHRlciB7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9jb250YWluZXJfZ2V0X3R5cGUgKCkiKV0KLSAJW1Zl cnNpb24gKHNpbmNlID0gIjAuNCIpXQotIAlwdWJsaWMgaW50ZXJmYWNlIENvbnRhaW5lciA6IEdM aWIuT2JqZWN0IHsKLS0JCXB1YmxpYyB2b2lkIGFkZCAocGFyYW1zIENsdXR0ZXIuQWN0b3JbXSBh Y3RvcnMpOwotIAkJW0NDb2RlICh2ZnVuY19uYW1lID0gImFkZCIpXQotIAkJW1ZlcnNpb24gKGRl cHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjQi KV0KLSAJCXB1YmxpYyBhYnN0cmFjdCB2b2lkIGFkZF9hY3RvciAoQ2x1dHRlci5BY3RvciBhY3Rv cik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xMCIsIHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGljIHZvaWQgYWRkX3ZhbGlzdCAoQ2x1dHRl ci5BY3RvciBmaXJzdF9hY3RvciwgdmFfbGlzdCB2YXJfYXJncyk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMC44IildCi0gCQlwdWJsaWMgdm9pZCBjaGlsZF9nZXQgKENsdXR0ZXIuQWN0b3IgYWN0 b3IsIC4uLik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi1AQCAtNzg2MCwxOCArNzE1 NSwxMCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgdmlydHVhbCB2b2lkIGRlc3Ry b3lfY2hpbGRfbWV0YSAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMC42IildCi0gCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLkFjdG9yIGZpbmRfY2hpbGRfYnlf bmFtZSAoc3RyaW5nIGNoaWxkX25hbWUpOwotLQkJW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX2Nv bnRhaW5lcl9jbGFzc19maW5kX2NoaWxkX3Byb3BlcnR5IildCi0tCQlwdWJsaWMgY2xhc3MgdW5v d25lZCBHTGliLlBhcmFtU3BlYyBmaW5kX2NoaWxkX3Byb3BlcnR5IChzdHJpbmcgcHJvcGVydHlf bmFtZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMCIsIHNpbmNlID0gIjAuNCIpXQotLQkJcHVibGljIGFic3RyYWN0IHZvaWQgQGZvcmVh Y2ggKENsdXR0ZXIuQ2FsbGJhY2sgY2FsbGJhY2spOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1 YmxpYyB2aXJ0dWFsIHZvaWQgZm9yZWFjaF93aXRoX2ludGVybmFscyAoQ2x1dHRlci5DYWxsYmFj ayBjYWxsYmFjayk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0gCQlwdWJsaWMgdmly dHVhbCB1bm93bmVkIENsdXR0ZXIuQ2hpbGRNZXRhIGdldF9jaGlsZF9tZXRhIChDbHV0dGVyLkFj dG9yIGFjdG9yKTsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC40IildCi0gCQlwdWJsaWMgR0xpYi5MaXN0PHdlYWsg Q2x1dHRlci5BY3Rvcj4gZ2V0X2NoaWxkcmVuICgpOwotLQkJW0NDb2RlIChjbmFtZSA9ICJjbHV0 dGVyX2NvbnRhaW5lcl9jbGFzc19saXN0X2NoaWxkX3Byb3BlcnRpZXMiKV0KLS0JCXB1YmxpYyBj bGFzcyB1bm93bmVkIEdMaWIuUGFyYW1TcGVjW10gbGlzdF9jaGlsZF9wcm9wZXJ0aWVzICgpOwot IAkJW0NDb2RlICh2ZnVuY19uYW1lID0gImxvd2VyIildCi0gCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNiIpXQotIAkJ cHVibGljIHZpcnR1YWwgdm9pZCBsb3dlcl9jaGlsZCAoQ2x1dHRlci5BY3RvciBhY3RvciwgQ2x1 dHRlci5BY3Rvcj8gc2libGluZyA9IG51bGwpOwotQEAgLTc4ODMsOCArNzE3MCw2IEBAIG5hbWVz cGFjZSBDbHV0dGVyIHsKLSAJCVtDQ29kZSAodmZ1bmNfbmFtZSA9ICJyZW1vdmUiKV0KLSAJCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2lu Y2UgPSAiMC40IildCi0gCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZW1vdmVfYWN0b3IgKENsdXR0 ZXIuQWN0b3IgYWN0b3IpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHJlbW92 ZV92YWxpc3QgKENsdXR0ZXIuQWN0b3IgZmlyc3RfYWN0b3IsIHZhX2xpc3QgdmFyX2FyZ3MpOwot IAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAi LCBzaW5jZSA9ICIwLjYiKV0KLSAJCXB1YmxpYyBhYnN0cmFjdCB2b2lkIHNvcnRfZGVwdGhfb3Jk ZXIgKCk7Ci0gCQlwdWJsaWMgdmlydHVhbCBzaWduYWwgdm9pZCBhY3Rvcl9hZGRlZCAoQ2x1dHRl ci5BY3RvciBhY3Rvcik7Ci1AQCAtNzkwMSw3ICs3MTg2LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIg ewotIAkJcHVibGljIGFic3RyYWN0IHZvaWQgaW52YWxpZGF0ZSAoKTsKLSAJCXB1YmxpYyBhYnN0 cmFjdCB2b2lkIGludmFsaWRhdGVfc2l6ZSAoKTsKLSAJCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMg YWJzdHJhY3Qgdm9pZCBwYWludF9jb250ZW50IChDbHV0dGVyLkFjdG9yIGFjdG9yLCBDbHV0dGVy LlBhaW50Tm9kZSBub2RlKTsKLSsJCXB1YmxpYyBhYnN0cmFjdCB2b2lkIHBhaW50X2NvbnRlbnQg KENsdXR0ZXIuQWN0b3IgYWN0b3IsIENsdXR0ZXIuUGFpbnROb2RlIG5vZGUsIENsdXR0ZXIuUGFp bnRDb250ZXh0IHBhaW50X2NvbnRleHQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0K LSAJCXB1YmxpYyB2aXJ0dWFsIHNpZ25hbCB2b2lkIGF0dGFjaGVkIChDbHV0dGVyLkFjdG9yIGFj dG9yKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi1AQCAtNzkxNSw0NyArNzIwMCwx NiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRfY3Vz dG9tX3Byb3BlcnR5IChDbHV0dGVyLlNjcmlwdCBzY3JpcHQsIHN0cmluZyBuYW1lLCBHTGliLlZh bHVlIHZhbHVlKTsKLSAJCXB1YmxpYyBhYnN0cmFjdCB2b2lkIHNldF9pZCAoc3RyaW5nIGlkXyk7 Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIild Ci0tCXB1YmxpYyBpbnRlcmZhY2UgU3RhZ2VXaW5kb3cgOiBHTGliLk9iamVjdCB7Ci0tCQlbTm9X cmFwcGVyXQotLQkJcHVibGljIGFic3RyYWN0IHZvaWQgYWRkX3JlZHJhd19jbGlwIChDbHV0dGVy Lkdlb21ldHJ5IHN0YWdlX3JlY3RhbmdsZSk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIGFi c3RyYWN0IHZvaWQgZ2V0X2dlb21ldHJ5IChDbHV0dGVyLkdlb21ldHJ5IGdlb21ldHJ5KTsKLS0J CVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgYWJzdHJhY3QgaW50IGdldF9wZW5kaW5nX3N3YXBzICgp OwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyBhYnN0cmFjdCB1bm93bmVkIENsdXR0ZXIuQWN0 b3IgZ2V0X3dyYXBwZXIgKCk7Ci0tCQlbTm9XcmFwcGVyXQotLQkJcHVibGljIGFic3RyYWN0IGJv b2wgaGFzX3JlZHJhd19jbGlwcyAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgYWJzdHJh Y3Qgdm9pZCBoaWRlICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyBhYnN0cmFjdCBib29s IGlnbm9yaW5nX3JlZHJhd19jbGlwcyAoKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgYWJz dHJhY3QgYm9vbCByZWFsaXplICgpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyBhYnN0cmFj dCB2b2lkIHJlc2l6ZSAoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLS0JCVtOb1dyYXBwZXJdCi0t CQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRfY3Vyc29yX3Zpc2libGUgKGJvb2wgY3Vyc29yX3Zp c2libGUpOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyBhYnN0cmFjdCB2b2lkIHNldF9mdWxs c2NyZWVuIChib29sIGlzX2Z1bGxzY3JlZW4pOwotLQkJW05vV3JhcHBlcl0KLS0JCXB1YmxpYyBh YnN0cmFjdCB2b2lkIHNldF90aXRsZSAoc3RyaW5nIHRpdGxlKTsKLS0JCVtOb1dyYXBwZXJdCi0t CQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRfdXNlcl9yZXNpemFibGUgKGJvb2wgaXNfcmVzaXph YmxlKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzaG93IChib29s IGRvX3JhaXNlKTsKLS0JCVtOb1dyYXBwZXJdCi0tCQlwdWJsaWMgYWJzdHJhY3Qgdm9pZCB1bnJl YWxpemUgKCk7Ci0tCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIiwgdHlwZV9pZCA9ICJDTFVUVEVSX1RZUEVfQUNUT1JfQk9YIildCi0rCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNvcHlfZnVuY3Rpb24gPSAi Z19ib3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0eXBlX2lkID0g ImNsdXR0ZXJfYWN0b3JfYm94X2dldF90eXBlICgpIildCi0gCXB1YmxpYyBzdHJ1Y3QgQWN0b3JC b3ggewotIAkJcHVibGljIGZsb2F0IHgxOwotIAkJcHVibGljIGZsb2F0IHkxOwotIAkJcHVibGlj IGZsb2F0IHgyOwotIAkJcHVibGljIGZsb2F0IHkyOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTIiKV0KLSsJCXB1YmxpYyBzdGF0aWMgQ2x1dHRlci5BY3RvckJveD8gYWxsb2MgKCk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgdm9pZCBjbGFtcF90b19waXhlbCAo KTsKLSsJCXB1YmxpYyBzdGF0aWMgdm9pZCBjbGFtcF90b19waXhlbCAocmVmIENsdXR0ZXIuQWN0 b3JCb3ggYm94KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBib29s IGNvbnRhaW5zIChmbG9hdCB4LCBmbG9hdCB5KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAi KV0KLUBAIC03OTY0LDggKzcyMTgsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMg Ym9vbCBlcXVhbCAoQ2x1dHRlci5BY3RvckJveCBib3hfYik7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0gCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotLQkJW0NDb2RlIChjbmFtZSA9ICJj bHV0dGVyX2FjdG9yX2JveF9mcm9tX3ZlcnRpY2VzIildCi0tCQlwdWJsaWMgQWN0b3JCb3guZnJv bV92ZXJ0aWNlcyAoQ2x1dHRlci5WZXJ0ZXhbXSB2ZXJ0cyk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4wIildCi0gCQlwdWJsaWMgZmxvYXQgZ2V0X2FyZWEgKCk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4wIildCi1AQCAtNzk4Niw2ICs3MjM4LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewot IAkJcHVibGljIHZvaWQgaW5pdF9yZWN0IChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwg ZmxvYXQgaGVpZ2h0KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjIiKV0KLSAJCXB1YmxpYyBD bHV0dGVyLkFjdG9yQm94IGludGVycG9sYXRlIChDbHV0dGVyLkFjdG9yQm94IGZpbmFsLCBkb3Vi bGUgcHJvZ3Jlc3MpOwotKwkJcHVibGljIGJvb2wgaXNfaW5pdGlhbGl6ZWQgKCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMgdm9pZCBzY2FsZSAoZmxvYXQgc2NhbGUp OwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotQEAgLTgwMTEsNyArNzI2NCw3IEBAIG5h bWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyB3ZWFrIENhaXJvLlN1cmZhY2UgaW1hZ2U7Ci0g CQlwdWJsaWMgQ2Fpcm8uUmVjdGFuZ2xlSW50IHJlY3Q7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJDTFVUVEVSX1RZUEVf Q09MT1IiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5o IiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94 ZWRfZnJlZSIsIHR5cGVfaWQgPSAiY2x1dHRlcl9jb2xvcl9nZXRfdHlwZSAoKSIpXQotIAlwdWJs aWMgc3RydWN0IENvbG9yIHsKLSAJCXB1YmxpYyB1aW50OCByZWQ7Ci0gCQlwdWJsaWMgdWludDgg Z3JlZW47Ci1AQCAtODAyNywxMiArNzI4MCwxMSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlw dWJsaWMgYm9vbCBlcXVhbCAoQ2x1dHRlci5Db2xvciB2Mik7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMC4yIildCi0gCQlwdWJsaWMgdm9pZCBmcmVlICgpOwotLQkJW0NDb2RlIChjbmFtZSA9ICJj bHV0dGVyX2NvbG9yX2Zyb21faGxzIildCi0tCQlwdWJsaWMgQ29sb3IuZnJvbV9obHMgKGZsb2F0 IGh1ZSwgZmxvYXQgbHVtaW5hbmNlLCBmbG9hdCBzYXR1cmF0aW9uKTsKLS0JCVtDQ29kZSAoY25h bWUgPSAiY2x1dHRlcl9jb2xvcl9mcm9tX3BpeGVsIildCi0tCQlwdWJsaWMgQ29sb3IuZnJvbV9w aXhlbCAodWludDMyIHBpeGVsKTsKLS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl9jb2xvcl9m cm9tX3N0cmluZyIpXQotLQkJcHVibGljIENvbG9yLmZyb21fc3RyaW5nIChzdHJpbmcgc3RyKTsK LSsJCXB1YmxpYyBzdGF0aWMgdm9pZCBmcm9tX2hscyAob3V0IENsdXR0ZXIuQ29sb3IgY29sb3Is IGZsb2F0IGh1ZSwgZmxvYXQgbHVtaW5hbmNlLCBmbG9hdCBzYXR1cmF0aW9uKTsKLSsJCXB1Ymxp YyBzdGF0aWMgdm9pZCBmcm9tX3BpeGVsIChvdXQgQ2x1dHRlci5Db2xvciBjb2xvciwgdWludDMy IHBpeGVsKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLSsJCXB1YmxpYyBzdGF0aWMg Ym9vbCBmcm9tX3N0cmluZyAob3V0IENsdXR0ZXIuQ29sb3IgY29sb3IsIHN0cmluZyBzdHIpOwot KwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIHN0YXRpYyB1bm93bmVkIENs dXR0ZXIuQ29sb3I/IGdldF9zdGF0aWMgKENsdXR0ZXIuU3RhdGljQ29sb3IgY29sb3IpOwotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGljIHVpbnQgaGFzaCAoKTsKLUBAIC04 MDQxLDggKzcyOTMsNiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS42IildCi0gCQlwdWJsaWMgQ2x1dHRlci5Db2xvciBpbnRlcnBvbGF0ZSAoQ2x1dHRlci5D b2xvciBmaW5hbCwgZG91YmxlIHByb2dyZXNzKTsKLSAJCXB1YmxpYyBDbHV0dGVyLkNvbG9yIGxp Z2h0ZW4gKCk7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfY29sb3JfZnJvbV9zdHJpbmci KV0KLS0JCXB1YmxpYyBib29sIHBhcnNlX3N0cmluZyAoc3RyaW5nIHN0cik7Ci0gCQlwdWJsaWMg Q2x1dHRlci5Db2xvciBzaGFkZSAoZG91YmxlIGZhY3Rvcik7Ci0gCQlwdWJsaWMgQ2x1dHRlci5D b2xvciBzdWJ0cmFjdCAoQ2x1dHRlci5Db2xvciBiKTsKLSAJCXB1YmxpYyB2b2lkIHRvX2hscyAo b3V0IGZsb2F0IGh1ZSwgb3V0IGZsb2F0IGx1bWluYW5jZSwgb3V0IGZsb2F0IHNhdHVyYXRpb24p OwotQEAgLTgwNTAsMjMgKzczMDAsMTAgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjAuMiIpXQotIAkJcHVibGljIHN0cmluZyB0b19zdHJpbmcgKCk7Ci0gCX0K LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9p ZCA9ICJjbHV0dGVyX2ZvZ19nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuNiIpXQotLQlwdWJs aWMgc3RydWN0IEZvZyB7Ci0tCQlwdWJsaWMgZmxvYXQgel9uZWFyOwotLQkJcHVibGljIGZsb2F0 IHpfZmFyOwotLQl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIsIHR5cGVfaWQgPSAiY2x1dHRlcl9nZW9tZXRyeV9nZXRfdHlwZSAoKSIpXQotLQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlw dWJsaWMgc3RydWN0IEdlb21ldHJ5IHsKLS0JCXB1YmxpYyBpbnQgeDsKLS0JCXB1YmxpYyBpbnQg eTsKLS0JCXB1YmxpYyB1aW50IHdpZHRoOwotLQkJcHVibGljIHVpbnQgaGVpZ2h0OwotLQkJW1Zl cnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIGJvb2wgaW50ZXJzZWN0cyAoQ2x1dHRl ci5HZW9tZXRyeSBnZW9tZXRyeTEpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQkJ cHVibGljIENsdXR0ZXIuR2VvbWV0cnkgdW5pb24gKENsdXR0ZXIuR2VvbWV0cnkgZ2VvbWV0cnlf Yik7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGhh c190eXBlX2lkID0gZmFsc2UpXQotKwlwdWJsaWMgc3RydWN0IEZyYW1lTGlzdGVuZXJJZmFjZSB7 Ci0rCQlwdWJsaWMgd2VhayBnbG9iYWw6OmJlZm9yZV9mcmFtZSBiZWZvcmVfZnJhbWU7Ci0rCQlw dWJsaWMgd2VhayBnbG9iYWw6OmZyYW1lIGZyYW1lOwotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlw dWJsaWMgc3RydWN0IEtiZEExMXlTZXR0aW5ncyB7Ci1AQCAtODA3OCw3ICs3MzE1LDcgQEAgbmFt ZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGludCBtb3VzZWtleXNfbWF4X3NwZWVkOwotIAkJ cHVibGljIGludCBtb3VzZWtleXNfYWNjZWxfdGltZTsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCB0eXBlX2lkID0gImNsdXR0ZXJfa25vdF9n ZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0 dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAi Z19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2tub3RfZ2V0X3R5cGUgKCkiKV0KLSAJ W1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotIAlwdWJsaWMgc3RydWN0IEtub3QgewotIAkJcHVi bGljIGludCB4OwotQEAgLTgwODcsOCArNzMyNCwxOSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0g CQlwdWJsaWMgYm9vbCBlcXVhbCAoQ2x1dHRlci5Lbm90IGtub3RfYik7Ci0gCQlwdWJsaWMgdm9p ZCBmcmVlICgpOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2Ns dXR0ZXIuaCIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVy LmgiLCB0eXBlX2lkID0gIkNPR0xfVFlQRV9NQVRSSVgiKV0KLSAJcHVibGljIHN0cnVjdCBNYXRy aXggOiBDb2dsLk1hdHJpeCB7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIpXQotKwkJcHVi bGljIHN0YXRpYyBDbHV0dGVyLk1hdHJpeD8gYWxsb2MgKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xMiIpXQotKwkJcHVibGljIHZvaWQgZnJlZSAoKTsKLSsJCXB1YmxpYyBzdGF0aWMgR0xp Yi5UeXBlIGdldF90eXBlICgpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLSsJCXB1 YmxpYyB1bm93bmVkIENsdXR0ZXIuTWF0cml4PyBpbml0X2Zyb21fYXJyYXkgKFtDQ29kZSAoYXJy YXlfbGVuZ3RoID0gZmFsc2UpXSBmbG9hdCB2YWx1ZXNbMTZdKTsKLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjEyIildCi0rCQlwdWJsaWMgdW5vd25lZCBDbHV0dGVyLk1hdHJpeD8gaW5pdF9mcm9t X21hdHJpeCAoQ2x1dHRlci5NYXRyaXggYik7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMiIp XQotKwkJcHVibGljIHVub3duZWQgQ2x1dHRlci5NYXRyaXg/IGluaXRfaWRlbnRpdHkgKCk7Ci0g CX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgaGFz X3R5cGVfaWQgPSBmYWxzZSldCi0gCXB1YmxpYyBzdHJ1Y3QgUGFkQnV0dG9uRXZlbnQgewotQEAg LTgxMzAsNyArNzM3OCw3IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCXB1YmxpYyBkb3VibGUg dmFsdWU7Ci0gCQlwdWJsaWMgdWludDMyIG1vZGU7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BhdGhfbm9k ZV9nZXRfdHlwZSAoKSIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9j bHV0dGVyLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24g PSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BhdGhfbm9kZV9nZXRfdHlwZSAo KSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCXB1YmxpYyBzdHJ1Y3QgUGF0aE5v ZGUgewotIAkJcHVibGljIENsdXR0ZXIuUGF0aE5vZGVUeXBlIHR5cGU7Ci1AQCAtODE0MCw3ICs3 Mzg4LDcgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJcHVibGljIGJvb2wgZXF1YWwgKENsdXR0 ZXIuUGF0aE5vZGUgbm9kZV9iKTsKLSAJCXB1YmxpYyB2b2lkIGZyZWUgKCk7Ci0gCX0KLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJj bHV0dGVyX3BlcnNwZWN0aXZlX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19ib3hlZF9jb3B5 IiwgZnJlZV9mdW5jdGlvbiA9ICJnX2JveGVkX2ZyZWUiLCB0eXBlX2lkID0gImNsdXR0ZXJfcGVy c3BlY3RpdmVfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuNCIpXQotIAlw dWJsaWMgc3RydWN0IFBlcnNwZWN0aXZlIHsKLSAJCXB1YmxpYyBmbG9hdCBmb3Z5OwotQEAgLTgx NDksNiArNzM5NywxOSBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgZmxvYXQgel9m YXI7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5o IiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0rCXB1YmxpYyBzdHJ1Y3QgUG9pbnRlckExMXlTZXR0 aW5ncyB7Ci0rCQlwdWJsaWMgQ2x1dHRlci5Qb2ludGVyQTExeUZsYWdzIGNvbnRyb2xzOwotKwkJ cHVibGljIENsdXR0ZXIuUG9pbnRlckExMXlEd2VsbENsaWNrVHlwZSBkd2VsbF9jbGlja190eXBl OwotKwkJcHVibGljIENsdXR0ZXIuUG9pbnRlckExMXlEd2VsbE1vZGUgZHdlbGxfbW9kZTsKLSsJ CXB1YmxpYyBDbHV0dGVyLlBvaW50ZXJBMTF5RHdlbGxEaXJlY3Rpb24gZHdlbGxfZ2VzdHVyZV9z aW5nbGU7Ci0rCQlwdWJsaWMgQ2x1dHRlci5Qb2ludGVyQTExeUR3ZWxsRGlyZWN0aW9uIGR3ZWxs X2dlc3R1cmVfZG91YmxlOwotKwkJcHVibGljIENsdXR0ZXIuUG9pbnRlckExMXlEd2VsbERpcmVj dGlvbiBkd2VsbF9nZXN0dXJlX2RyYWc7Ci0rCQlwdWJsaWMgQ2x1dHRlci5Qb2ludGVyQTExeUR3 ZWxsRGlyZWN0aW9uIGR3ZWxsX2dlc3R1cmVfc2Vjb25kYXJ5OwotKwkJcHVibGljIGludCBzZWNv bmRhcnlfY2xpY2tfZGVsYXk7Ci0rCQlwdWJsaWMgaW50IGR3ZWxsX2RlbGF5OwotKwkJcHVibGlj IGludCBkd2VsbF90aHJlc2hvbGQ7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNsdXR0ZXIvY2x1dHRlci5oIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCVtWZXJzaW9uIChz aW5jZSA9ICIxLjI4IildCi0gCXB1YmxpYyBzdHJ1Y3QgUHJveGltaXR5RXZlbnQgewotIAkJcHVi bGljIENsdXR0ZXIuRXZlbnRUeXBlIHR5cGU7Ci1AQCAtODE1OCw0NyArNzQxOSwxNiBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCQlwdWJsaWMgd2VhayBDbHV0dGVyLkFjdG9yIHNvdXJjZTsKLSAJ CXB1YmxpYyB3ZWFrIENsdXR0ZXIuSW5wdXREZXZpY2UgZGV2aWNlOwotIAl9Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIHR5cGVfaWQgPSAiQ0xVVFRF Ul9UWVBFX1VOSVRTIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2Ns dXR0ZXIuaCIsIGNvcHlfZnVuY3Rpb24gPSAiZ19ib3hlZF9jb3B5IiwgZnJlZV9mdW5jdGlvbiA9 ICJnX2JveGVkX2ZyZWUiLCB0eXBlX2lkID0gImNsdXR0ZXJfdW5pdHNfZ2V0X3R5cGUgKCkiKV0K LSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAlwdWJsaWMgc3RydWN0IFVuaXRzIHsKLSAJ CXB1YmxpYyBDbHV0dGVyLlVuaXRzPyBjb3B5ICgpOwotIAkJcHVibGljIHZvaWQgZnJlZSAoKTsK LS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl91bml0c19mcm9tX2NtIildCi0tCQlwdWJsaWMg VW5pdHMuZnJvbV9jbSAoZmxvYXQgY20pOwotLQkJW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX3Vu aXRzX2Zyb21fZW0iKV0KLS0JCXB1YmxpYyBVbml0cy5mcm9tX2VtIChmbG9hdCBlbSk7Ci0tCQlb Q0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfdW5pdHNfZnJvbV9lbV9mb3JfZm9udCIpXQotLQkJcHVi bGljIFVuaXRzLmZyb21fZW1fZm9yX2ZvbnQgKHN0cmluZyBmb250X25hbWUsIGZsb2F0IGVtKTsK LS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl91bml0c19mcm9tX21tIildCi0tCQlwdWJsaWMg VW5pdHMuZnJvbV9tbSAoZmxvYXQgbW0pOwotLQkJW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX3Vu aXRzX2Zyb21fcGl4ZWxzIildCi0tCQlwdWJsaWMgVW5pdHMuZnJvbV9waXhlbHMgKGludCBweCk7 Ci0tCQlbQ0NvZGUgKGNuYW1lID0gImNsdXR0ZXJfdW5pdHNfZnJvbV9wdCIpXQotLQkJcHVibGlj IFVuaXRzLmZyb21fcHQgKGZsb2F0IHB0KTsKLS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRlcl91 bml0c19mcm9tX3N0cmluZyIpXQotLQkJcHVibGljIFVuaXRzLmZyb21fc3RyaW5nIChzdHJpbmcg c3RyKTsKLSAJCXB1YmxpYyBDbHV0dGVyLlVuaXRUeXBlIGdldF91bml0X3R5cGUgKCk7Ci0gCQlw dWJsaWMgZmxvYXQgZ2V0X3VuaXRfdmFsdWUgKCk7Ci0gCQlwdWJsaWMgZmxvYXQgdG9fcGl4ZWxz ICgpOwotIAkJcHVibGljIHN0cmluZyB0b19zdHJpbmcgKCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3Zl cnRleF9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCXB1Ymxp YyBzdHJ1Y3QgVmVydGV4IHsKLS0JCXB1YmxpYyBmbG9hdCB4OwotLQkJcHVibGljIGZsb2F0IHk7 Ci0tCQlwdWJsaWMgZmxvYXQgejsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEyIildCi0tCQlw dWJsaWMgc3RhdGljIENsdXR0ZXIuVmVydGV4PyBhbGxvYyAoKTsKLS0JCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBDbHV0dGVyLlZlcnRleD8gY29weSAoKTsKLS0JCVtWZXJz aW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBib29sIGVxdWFsIChDbHV0dGVyLlZlcnRl eCB2ZXJ0ZXhfYik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9p ZCBmcmVlICgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB1bm93 bmVkIENsdXR0ZXIuVmVydGV4PyBpbml0IChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLS0J fQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJl Zml4ID0gIkNMVVRURVJfQUNUT1JfQUxJR05fIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2FjdG9yX2Fs aWduX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCXB1Ymxp YyBlbnVtIEFjdG9yQWxpZ24gewotQEAgLTgyMjMsMTQgKzc0NTMsNiBAQCBuYW1lc3BhY2UgQ2x1 dHRlciB7Ci0gCQlZX0FYSVMsCi0gCQlCT1RICi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSXyIsIHR5cGVfaWQg PSAiY2x1dHRlcl9hbGxvY2F0aW9uX2ZsYWdzX2dldF90eXBlICgpIildCi0tCVtGbGFnc10KLS0J W1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgZW51bSBBbGxvY2F0aW9uRmxhZ3Mg ewotLQkJQUxMT0NBVElPTl9OT05FLAotLQkJQUJTT0xVVEVfT1JJR0lOX0NIQU5HRUQsCi0tCQlE RUxFR0FURV9MQVlPVVQKLS0JfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRl ci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2Fu aW1hdGlvbl9tb2RlX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0K LSAJcHVibGljIGVudW0gQW5pbWF0aW9uTW9kZSB7Ci1AQCAtODMzNiw2ICs3NTU4LDI3IEBAIG5h bWVzcGFjZSBDbHV0dGVyIHsKLSAJCVlfQVhJUywKLSAJCUJPVEgKLSAJfQotKwlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJf REVCVUdfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX2RlYnVnX2ZsYWdfZ2V0X3R5cGUgKCkiKV0KLSsJ W0ZsYWdzXQotKwlwdWJsaWMgZW51bSBEZWJ1Z0ZsYWcgewotKwkJTUlTQywKLSsJCUFDVE9SLAot KwkJVEVYVFVSRSwKLSsJCUVWRU5ULAotKwkJUEFJTlQsCi0rCQlQQU5HTywKLSsJCUJBQ0tFTkQs Ci0rCQlTQ0hFRFVMRVIsCi0rCQlTQ1JJUFQsCi0rCQlTSEFERVIsCi0rCQlNVUxUSVNUQUdFLAot KwkJQU5JTUFUSU9OLAotKwkJTEFZT1VULAotKwkJUElDSywKLSsJCUVWRU5UTE9PUCwKLSsJCUNM SVBQSU5HLAotKwkJT09CX1RSQU5TRk9STVMKLSsJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfRFJBR18iLCB0eXBl X2lkID0gImNsdXR0ZXJfZHJhZ19heGlzX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjQiKV0KLSAJcHVibGljIGVudW0gRHJhZ0F4aXMgewotQEAgLTgzNDMsMTEgKzc1ODYs MjQgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAkJWF9BWElTLAotIAkJWV9BWElTCi0gCX0KLS0J W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9 ICJDTFVUVEVSX0VGRkVDVF9QQUlOVF9BQ1RPUl8iLCB0eXBlX2lkID0gImNsdXR0ZXJfZWZmZWN0 X3BhaW50X2ZsYWdzX2dldF90eXBlICgpIildCi0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9ERUJVR18iLCB0eXBlX2lk ID0gImNsdXR0ZXJfZHJhd19kZWJ1Z19mbGFnX2dldF90eXBlICgpIildCi0rCVtGbGFnc10KLSsJ cHVibGljIGVudW0gRHJhd0RlYnVnRmxhZyB7Ci0rCQlESVNBQkxFX1NXQVBfRVZFTlRTLAotKwkJ RElTQUJMRV9DTElQUEVEX1JFRFJBV1MsCi0rCQlSRURSQVdTLAotKwkJUEFJTlRfVk9MVU1FUywK LSsJCURJU0FCTEVfQ1VMTElORywKLSsJCURJU0FCTEVfT0ZGU0NSRUVOX1JFRElSRUNULAotKwkJ Q09OVElOVU9VU19SRURSQVcsCi0rCQlQQUlOVF9ERUZPUk1fVElMRVMsCi0rCQlQQUlOVF9EQU1B R0VfUkVHSU9OCi0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX0VGRkVDVF9QQUlOVF8iLCB0eXBlX2lkID0gImNs dXR0ZXJfZWZmZWN0X3BhaW50X2ZsYWdzX2dldF90eXBlICgpIildCi0gCVtGbGFnc10KLSAJcHVi bGljIGVudW0gRWZmZWN0UGFpbnRGbGFncyB7Ci0tCQlbQ0NvZGUgKGNuYW1lID0gIkNMVVRURVJf RUZGRUNUX1BBSU5UX0FDVE9SX0RJUlRZIildCi0tCQlBQ1RPUl9ESVJUWQotKwkJQUNUT1JfRElS VFksCi0rCQlCWVBBU1NfRUZGRUNUCi0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX0VWRU5UXyIsIHR5cGVfaWQg PSAiY2x1dHRlcl9ldmVudF9mbGFnc19nZXRfdHlwZSAoKSIpXQotIAlbRmxhZ3NdCi1AQCAtODM5 MiwyMSArNzY0OCwxMiBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCVtGbGFnc10KLSAJW1ZlcnNp b24gKHNpbmNlID0gIjAuNCIpXQotIAlwdWJsaWMgZW51bSBGZWF0dXJlRmxhZ3MgewotLQkJVEVY VFVSRV9OUE9ULAotLQkJU1dBUF9USFJPVFRMRSwKLS0JCVRFWFRVUkVfWVVWLAotLQkJVEVYVFVS RV9SRUFEX1BJWEVMUywKLSAJCVNUQUdFX1NUQVRJQywKLS0JCVNUQUdFX1VTRVJfUkVTSVpFLAot IAkJU1RBR0VfQ1VSU09SLAotIAkJU0hBREVSU19HTFNMLAotIAkJT0ZGU0NSRUVOLAotIAkJU1RB R0VfTVVMVElQTEUsCi0tCQlTV0FQX0VWRU5UUzsKLS0JCVtDQ29kZSAoY25hbWUgPSAiY2x1dHRl cl9mZWF0dXJlX2F2YWlsYWJsZSIpXQotLQkJcHVibGljIGJvb2wgaXNfYXZhaWxhYmxlICgpOwot LQkJW0NDb2RlIChjbmFtZSA9ICJjbHV0dGVyX2ZlYXR1cmVfZ2V0X2FsbCIpXQotLQkJcHVibGlj IHN0YXRpYyBDbHV0dGVyLkZlYXR1cmVGbGFncyBAZ2V0ICgpOwotKwkJU1dBUF9FVkVOVFMKLSAJ fQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJl Zml4ID0gIkNMVVRURVJfRkxPV18iLCB0eXBlX2lkID0gImNsdXR0ZXJfZmxvd19vcmllbnRhdGlv bl9nZXRfdHlwZSAoKSIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi1AQCAtODQxNCwx MiArNzY2MSwxMCBAQCBuYW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlIT1JJWk9OVEFMLAotIAkJVkVS VElDQUwKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVy LmgiLCBjcHJlZml4ID0gIkNMVVRURVJfRk9OVF8iLCB0eXBlX2lkID0gImNsdXR0ZXJfZm9udF9m bGFnc19nZXRfdHlwZSAoKSIpXQotLQlbRmxhZ3NdCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjIyIiwgc2luY2UgPSAiMS4wIildCi0tCXB1Ymxp YyBlbnVtIEZvbnRGbGFncyB7Ci0tCQlNSVBNQVBQSU5HLAotLQkJSElOVElORwotKwlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRU RVJfRlJBTUVfUkVTVUxUXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9mcmFtZV9yZXN1bHRfZ2V0X3R5 cGUgKCkiKV0KLSsJcHVibGljIGVudW0gRnJhbWVSZXN1bHQgewotKwkJUEVORElOR19QUkVTRU5U RUQsCi0rCQlJRExFCi0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIv Y2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX0dFU1RVUkVfVFJJR0dFUl9FREdFXyIsIHR5 cGVfaWQgPSAiY2x1dHRlcl9nZXN0dXJlX3RyaWdnZXJfZWRnZV9nZXRfdHlwZSAoKSIpXQotIAlb VmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotQEAgLTg2MzQsNyArNzg3OSw4IEBAIG5hbWVzcGFj ZSBDbHV0dGVyIHsKLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAlwdWJsaWMgZW51bSBP ZmZzY3JlZW5SZWRpcmVjdCB7Ci0gCQlBVVRPTUFUSUNfRk9SX09QQUNJVFksCi0tCQlBTFdBWVMK LSsJCUFMV0FZUywKLSsJCU9OX0lETEUKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRURVJfT1JJRU5UQVRJT05fIiwg dHlwZV9pZCA9ICJjbHV0dGVyX29yaWVudGF0aW9uX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9u IChzaW5jZSA9ICIxLjEyIildCi1AQCAtODY0Miw2ICs3ODg4LDEzIEBAIG5hbWVzcGFjZSBDbHV0 dGVyIHsKLSAJCUhPUklaT05UQUwsCi0gCQlWRVJUSUNBTAotIAl9Ci0rCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9QQUlO VF9GTEFHXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wYWludF9mbGFnX2dldF90eXBlICgpIildCi0r CVtGbGFnc10KLSsJcHVibGljIGVudW0gUGFpbnRGbGFnIHsKLSsJCU5PTkUsCi0rCQlOT19DVVJT T1JTLAotKwkJRk9SQ0VfQ1VSU09SUwotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9QQU5fIiwgdHlwZV9pZCA9 ICJjbHV0dGVyX3Bhbl9heGlzX2dldF90eXBlICgpIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEyIildCi0gCXB1YmxpYyBlbnVtIFBhbkF4aXMgewotQEAgLTg2NjEsNiArNzkxNCwxMSBAQCBu YW1lc3BhY2UgQ2x1dHRlciB7Ci0gCQlSRUxfTElORV9UTywKLSAJCVJFTF9DVVJWRV9UTwotIAl9 Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVm aXggPSAiQ0xVVFRFUl9ERUJVR19OT1BfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BpY2tfZGVidWdf ZmxhZ19nZXRfdHlwZSAoKSIpXQotKwlbRmxhZ3NdCi0rCXB1YmxpYyBlbnVtIFBpY2tEZWJ1Z0Zs YWcgewotKwkJUElDS0lORwotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9QSUNLXyIsIHR5cGVfaWQgPSAiY2x1 dHRlcl9waWNrX21vZGVfZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIp XQotIAlwdWJsaWMgZW51bSBQaWNrTW9kZSB7Ci1AQCAtODY2OCwxMyArNzkyNiw0NiBAQCBuYW1l c3BhY2UgQ2x1dHRlciB7Ci0gCQlSRUFDVElWRSwKLSAJCUFMTAotIAl9Ci0rCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9B MTFZX0RXRUxMX0NMSUNLX1RZUEVfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BvaW50ZXJfYTExeV9k d2VsbF9jbGlja190eXBlX2dldF90eXBlICgpIildCi0rCXB1YmxpYyBlbnVtIFBvaW50ZXJBMTF5 RHdlbGxDbGlja1R5cGUgewotKwkJTk9ORSwKLSsJCVBSSU1BUlksCi0rCQlTRUNPTkRBUlksCi0r CQlNSURETEUsCi0rCQlET1VCTEUsCi0rCQlEUkFHCi0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIiwgY3ByZWZpeCA9ICJDTFVUVEVSX0ExMVlfRFdF TExfRElSRUNUSU9OXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9wb2ludGVyX2ExMXlfZHdlbGxfZGly ZWN0aW9uX2dldF90eXBlICgpIildCi0rCXB1YmxpYyBlbnVtIFBvaW50ZXJBMTF5RHdlbGxEaXJl Y3Rpb24gewotKwkJTk9ORSwKLSsJCUxFRlQsCi0rCQlSSUdIVCwKLSsJCVVQLAotKwkJRE9XTgot Kwl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNw cmVmaXggPSAiQ0xVVFRFUl9BMTFZX0RXRUxMX01PREVfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3Bv aW50ZXJfYTExeV9kd2VsbF9tb2RlX2dldF90eXBlICgpIildCi0rCXB1YmxpYyBlbnVtIFBvaW50 ZXJBMTF5RHdlbGxNb2RlIHsKLSsJCVdJTkRPVywKLSsJCUdFU1RVUkUKLSsJfQotKwlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRU RVJfQTExWV8iLCB0eXBlX2lkID0gImNsdXR0ZXJfcG9pbnRlcl9hMTF5X2ZsYWdzX2dldF90eXBl ICgpIildCi0rCVtGbGFnc10KLSsJcHVibGljIGVudW0gUG9pbnRlckExMXlGbGFncyB7Ci0rCQlT RUNPTkRBUllfQ0xJQ0tfRU5BQkxFRCwKLSsJCURXRUxMX0VOQUJMRUQKLSsJfQotKwlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJlZml4ID0gIkNMVVRU RVJfQTExWV9USU1FT1VUX1RZUEVfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3BvaW50ZXJfYTExeV90 aW1lb3V0X3R5cGVfZ2V0X3R5cGUgKCkiKV0KLSsJcHVibGljIGVudW0gUG9pbnRlckExMXlUaW1l b3V0VHlwZSB7Ci0rCQlTRUNPTkRBUllfQ0xJQ0ssCi0rCQlEV0VMTCwKLSsJCUdFU1RVUkUKLSsJ fQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiLCBjcHJl Zml4ID0gIkNMVVRURVJfUkVQQUlOVF9GTEFHU18iLCB0eXBlX2lkID0gImNsdXR0ZXJfcmVwYWlu dF9mbGFnc19nZXRfdHlwZSAoKSIpXQotIAlbRmxhZ3NdCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIx LjEwIildCi0gCXB1YmxpYyBlbnVtIFJlcGFpbnRGbGFncyB7Ci0gCQlQUkVfUEFJTlQsCi0tCQlQ T1NUX1BBSU5ULAotLQkJUVVFVUVfUkVEUkFXX09OX0FERAotKwkJUE9TVF9QQUlOVAotIAl9Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXgg PSAiQ0xVVFRFUl9SRVFVRVNUXyIsIHR5cGVfaWQgPSAiY2x1dHRlcl9yZXF1ZXN0X21vZGVfZ2V0 X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuOCIpXQotQEAgLTg3NTUsOCArODA0 Niw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJW0ZsYWdzXQotIAlbVmVyc2lvbiAoc2luY2Ug PSAiMC40IildCi0gCXB1YmxpYyBlbnVtIFN0YWdlU3RhdGUgewotLQkJRlVMTFNDUkVFTiwKLS0J CU9GRlNDUkVFTiwKLSAJCUFDVElWQVRFRAotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAiQ0xVVFRFUl9DT0xPUl8iLCB0eXBl X2lkID0gImNsdXR0ZXJfc3RhdGljX2NvbG9yX2dldF90eXBlICgpIildCi1AQCAtODgyMywxMyAr ODExMiw2IEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJCUxFRlQsCi0gCQlSSUdIVAotIAl9Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXgg PSAiQ0xVVFRFUl9UQUJMRV9BTElHTk1FTlRfIiwgdHlwZV9pZCA9ICJjbHV0dGVyX3RhYmxlX2Fs aWdubWVudF9nZXRfdHlwZSAoKSIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4yMiIsIHNpbmNlID0gIjEuNCIpXQotLQlwdWJsaWMgZW51bSBU YWJsZUFsaWdubWVudCB7Ci0tCQlTVEFSVCwKLS0JCUNFTlRFUiwKLS0JCUVORAotLQl9Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGNwcmVmaXggPSAi Q0xVVFRFUl9URVhUX0RJUkVDVElPTl8iLCB0eXBlX2lkID0gImNsdXR0ZXJfdGV4dF9kaXJlY3Rp b25fZ2V0X3R5cGUgKCkiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotIAlwdWJsaWMg ZW51bSBUZXh0RGlyZWN0aW9uIHsKLUBAIC04OTA1LDI4ICs4MTg3LDE2IEBAIG5hbWVzcGFjZSBD bHV0dGVyIHsKLSAJCVZBTFVFOwotIAkJcHVibGljIHN0YXRpYyBHTGliLlF1YXJrIHF1YXJrICgp OwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIs IGNwcmVmaXggPSAiQ0xVVFRFUl9URVhUVVJFX0VSUk9SXyIpXQotLQlbVmVyc2lvbiAoc2luY2Ug PSAiMC40IildCi0tCXB1YmxpYyBlcnJvcmRvbWFpbiBUZXh0dXJlRXJyb3IgewotLQkJT1VUX09G X01FTU9SWSwKLS0JCU5PX1lVViwKLS0JCUJBRF9GT1JNQVQ7Ci0tCQlwdWJsaWMgc3RhdGljIEdM aWIuUXVhcmsgcXVhcmsgKCk7Ci0tCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNs dXR0ZXIvY2x1dHRlci5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSAJW1ZlcnNpb24gKHNpbmNl ID0gIjEuMjQiKV0KLSAJcHVibGljIGRlbGVnYXRlIENsdXR0ZXIuQWN0b3IgQWN0b3JDcmVhdGVD aGlsZEZ1bmMgKEdMaWIuT2JqZWN0IGl0ZW0pOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY2x1dHRlci9jbHV0dGVyLmgiLCBpbnN0YW5jZV9wb3MgPSAxLjkpXQotLQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMiIsIHNpbmNlID0gIjAu MiIpXQotLQlwdWJsaWMgZGVsZWdhdGUgZG91YmxlIEFscGhhRnVuYyAoQ2x1dHRlci5BbHBoYSBh bHBoYSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIs IGluc3RhbmNlX3BvcyA9IDIuOSldCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjYiLCBzaW5jZSA9ICIwLjIiKV0KLS0JcHVibGljIGRlbGVnYXRl IHZvaWQgQmVoYXZpb3VyRm9yZWFjaEZ1bmMgKENsdXR0ZXIuQmVoYXZpb3VyIGJlaGF2aW91ciwg Q2x1dHRlci5BY3RvciBhY3Rvcik7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIsIGluc3RhbmNlX3BvcyA9IDQuOSldCi0gCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjAiKV0KLSAJcHVibGljIGRlbGVnYXRlIGJvb2wgQmluZGluZ0FjdGlvbkZ1bmMgKEdMaWIu T2JqZWN0IGdvYmplY3QsIHN0cmluZyBhY3Rpb25fbmFtZSwgdWludCBrZXlfdmFsLCBDbHV0dGVy Lk1vZGlmaWVyVHlwZSBtb2RpZmllcnMpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiLCBpbnN0YW5jZV9wb3MgPSAxLjkpXQotIAlwdWJsaWMgZGVsZWdh dGUgdm9pZCBDYWxsYmFjayAoQ2x1dHRlci5BY3RvciBhY3Rvcik7Ci0rCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGhhc190YXJnZXQgPSBmYWxzZSldCi0r CXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIEVtaXRJbnB1dERldmljZUV2ZW50IChDbHV0dGVyLkV2ZW50 IGV2ZW50LCBDbHV0dGVyLklucHV0RGV2aWNlIGRldmljZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIsIGluc3RhbmNlX3BvcyA9IDEuOSldCi0gCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0gCXB1YmxpYyBkZWxlZ2F0ZSBib29sIEV2ZW50Rmls dGVyRnVuYyAoQ2x1dHRlci5FdmVudCBldmVudCk7Ci1AQCAtODk1Nyw5ICs4MjI3LDYgQEAgbmFt ZXNwYWNlIENsdXR0ZXIgewotIAlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0gCXB1YmxpYyBj b25zdCBpbnQgUFJJT1JJVFlfUkVEUkFXOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLS0JcHVi bGljIHN0YXRpYyBDbHV0dGVyLkFjdG9yQm94PyBhY3Rvcl9ib3hfYWxsb2MgKCk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotIAlwdWJsaWMgc3Rh dGljIHZvaWQgYmFzZV9pbml0ICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1 dHRlci9jbHV0dGVyLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTIiKV0KLUBAIC04OTcx LDM3ICs4MjM4LDEyIEBAIG5hbWVzcGFjZSBDbHV0dGVyIHsKLSAJW1ZlcnNpb24gKHNpbmNlID0g IjEuMTAiKV0KLSAJcHVibGljIHN0YXRpYyBib29sIGNoZWNrX3dpbmRvd2luZ19iYWNrZW5kIChz dHJpbmcgYmFja2VuZF90eXBlKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0 ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC44IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBj bGVhcl9nbHlwaF9jYWNoZSAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0 ZXIvY2x1dHRlci5oIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBjb2xvcl9mcm9tX2hscyAob3V0 IENsdXR0ZXIuQ29sb3IgY29sb3IsIGZsb2F0IGh1ZSwgZmxvYXQgbHVtaW5hbmNlLCBmbG9hdCBz YXR1cmF0aW9uKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRl ci5oIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBjb2xvcl9mcm9tX3BpeGVsIChvdXQgQ2x1dHRl ci5Db2xvciBjb2xvciwgdWludDMyIHBpeGVsKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0J cHVibGljIHN0YXRpYyBib29sIGNvbG9yX2Zyb21fc3RyaW5nIChvdXQgQ2x1dHRlci5Db2xvciBj b2xvciwgc3RyaW5nIHN0cik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVy L2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0tCXB1YmxpYyBzdGF0 aWMgdW5vd25lZCBDbHV0dGVyLkNvbG9yPyBjb2xvcl9nZXRfc3RhdGljIChDbHV0dGVyLlN0YXRp Y0NvbG9yIGNvbG9yKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0gCXB1YmxpYyBzdGF0aWMg dm9pZCBkaXNhYmxlX2FjY2Vzc2liaWxpdHkgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0g CXB1YmxpYyBzdGF0aWMgdm9pZCBkb19ldmVudCAoQ2x1dHRlci5FdmVudCBldmVudCk7Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lv biAoc2luY2UgPSAiMS4xOCIpXQotLQlwdWJsaWMgc3RhdGljIHVpbnQgZXZlbnRfYWRkX2ZpbHRl ciAoQ2x1dHRlci5TdGFnZT8gc3RhZ2UsIFtDQ29kZSAoZGVsZWdhdGVfdGFyZ2V0X3BvcyA9IDIu MiwgZGVzdHJveV9ub3RpZnlfcG9zID0gMi4xKV0gb3duZWQgQ2x1dHRlci5FdmVudEZpbHRlckZ1 bmMgZnVuYyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIu aCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCXB1YmxpYyBzdGF0aWMgQ2x1dHRl ci5FdmVudCBldmVudF9nZXQgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0 dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0tCXB1YmxpYyBz dGF0aWMgdW5vd25lZCBDbHV0dGVyLkV2ZW50IGV2ZW50X3BlZWsgKCk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2Ug PSAiMS4xOCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgZXZlbnRfcmVtb3ZlX2ZpbHRlciAodWlu dCBpZCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIp XQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0gCXB1YmxpYyBzdGF0aWMgYm9vbCBldmVu dHNfcGVuZGluZyAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1 dHRlci5oIildCi1AQCAtOTAxNCw5ICs4MjU2LDYgQEAgbmFtZXNwYWNlIENsdXR0ZXIgewotIAlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCXB1YmxpYyBzdGF0aWMgdWludDMyIGdldF9jdXJy ZW50X2V2ZW50X3RpbWUgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVy L2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X2RlYnVnX2VuYWJsZWQg KCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQot IAlbVmVyc2lvbiAoc2luY2UgPSAiMC40IildCi0gCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDbHV0 dGVyLkJhY2tlbmQgZ2V0X2RlZmF1bHRfYmFja2VuZCAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi1AQCAtOTAyNiwxOCArODI2NSw5IEBAIG5h bWVzcGFjZSBDbHV0dGVyIHsKLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMiIpXQotIAlwdWJsaWMg c3RhdGljIENsdXR0ZXIuVGV4dERpcmVjdGlvbiBnZXRfZGVmYXVsdF90ZXh0X2RpcmVjdGlvbiAo KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0t CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwg c2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgQ2x1dHRlci5Gb250RmxhZ3MgZ2V0X2Zv bnRfZmxhZ3MgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0 ZXIuaCIpXQotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCXB1YmxpYyBzdGF0aWMgdW5v d25lZCBQYW5nby5Gb250TWFwIGdldF9mb250X21hcCAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYi KV0KLS0JcHVibGljIHN0YXRpYyB1bm93bmVkIENsdXR0ZXIuQWN0b3IgZ2V0X2tleWJvYXJkX2dy YWIgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIp XQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS44 Iiwgc2luY2UgPSAiMC42IildCi0tCXB1YmxpYyBzdGF0aWMgYm9vbCBnZXRfbW90aW9uX2V2ZW50 c19lbmFibGVkICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0 dGVyLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuMiIpXQotIAlwdWJsaWMgc3RhdGljIEdM aWIuT3B0aW9uR3JvdXAgZ2V0X29wdGlvbl9ncm91cCAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi1AQCAtOTA0NSwyNiArODI3NSw4IEBAIG5h bWVzcGFjZSBDbHV0dGVyIHsKLSAJcHVibGljIHN0YXRpYyBHTGliLk9wdGlvbkdyb3VwIGdldF9v cHRpb25fZ3JvdXBfd2l0aG91dF9pbml0ICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjAuNiIpXQotLQlw dWJsaWMgc3RhdGljIHVub3duZWQgQ2x1dHRlci5BY3RvciBnZXRfcG9pbnRlcl9ncmFiICgpOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1Zl cnNpb24gKHNpbmNlID0gIjAuNiIpXQotIAlwdWJsaWMgc3RhdGljIHVub3duZWQgc3RyaW5nIGdl dF9zY3JpcHRfaWQgKEdMaWIuT2JqZWN0IGdvYmplY3QpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjQiKV0KLS0JcHVibGlj IHN0YXRpYyBib29sIGdldF9zaG93X2ZwcyAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdWxvbmcgZ2V0X3Rp bWVzdGFtcCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRl ci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IGdyYWJfa2V5Ym9hcmQgKENsdXR0ZXIuQWN0b3IgYWN0b3IpOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjAu NiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgZ3JhYl9wb2ludGVyIChDbHV0dGVyLkFjdG9yIGFj dG9yKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIild Ci0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEw Iiwgc2luY2UgPSAiMC44IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBncmFiX3BvaW50ZXJfZm9y X2RldmljZSAoQ2x1dHRlci5BY3RvciBhY3RvciwgaW50IGlkXyk7Ci0tCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotIAlwdWJsaWMgc3RhdGljIENsdXR0 ZXIuSW5pdEVycm9yIGluaXQgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoX2NuYW1lID0gImFyZ2MiLCBh cnJheV9sZW5ndGhfcG9zID0gMC41KV0gcmVmIHVub3duZWQgc3RyaW5nW10/IGFyZ3YpOwotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJW1ZlcnNp b24gKHNpbmNlID0gIjAuMiIpXQotQEAgLTkwODAsNDEgKzgyOTIsNiBAQCBuYW1lc3BhY2UgQ2x1 dHRlciB7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIp XQotIAlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X2N1c3RvbV9iYWNrZW5kX2Z1bmMgKHZvaWQqIGZ1 bmMpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0K LS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAi LCBzaW5jZSA9ICIwLjYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF9kZWZhdWx0X2ZyYW1l X3JhdGUgKHVpbnQgZnJhbWVzX3Blcl9zZWMpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRp YyB2b2lkIHNldF9mb250X2ZsYWdzIChDbHV0dGVyLkZvbnRGbGFncyBmbGFncyk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS44Iiwgc2luY2UgPSAiMC42 IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfbW90aW9uX2V2ZW50c19lbmFibGVkIChib29s IGVuYWJsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIu aCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQg dGVzdF9hZGRfZGF0YV9mdWxsIChzdHJpbmcgdGVzdF9wYXRoLCBvd25lZCBHTGliLlRlc3REYXRh RnVuYyB0ZXN0X2Z1bmMpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9j bHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0JcHVibGljIHN0YXRp YyBib29sIHRlc3RfY2hlY2tfYWN0b3JfYXRfcG9pbnQgKENsdXR0ZXIuQWN0b3Igc3RhZ2UsIENs dXR0ZXIuUG9pbnQgcG9pbnQsIENsdXR0ZXIuQWN0b3IgYWN0b3IsIG91dCBDbHV0dGVyLkFjdG9y PyByZXN1bHQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVy LmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0JcHVibGljIHN0YXRpYyBib29s IHRlc3RfY2hlY2tfY29sb3JfYXRfcG9pbnQgKENsdXR0ZXIuQWN0b3Igc3RhZ2UsIENsdXR0ZXIu UG9pbnQgcG9pbnQsIENsdXR0ZXIuQ29sb3IgY29sb3IsIG91dCBDbHV0dGVyLkNvbG9yIHJlc3Vs dCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjbHV0dGVyL2NsdXR0ZXIuaCIpXQot LQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotLQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ2x1 dHRlci5BY3RvciB0ZXN0X2dldF9zdGFnZSAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0X2luaXQg KGludCBhcmdjLCBzdHJpbmcgYXJndik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj bHV0dGVyL2NsdXR0ZXIuaCIpXQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotLQlwdWJs aWMgc3RhdGljIGludCB0ZXN0X3J1biAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYiKV0KLS0JcHVi bGljIHN0YXRpYyB2b2lkIHVuZ3JhYl9rZXlib2FyZCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNsdXR0ZXIvY2x1dHRlci5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjYi KV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHVuZ3JhYl9wb2ludGVyICgpOwotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiLCBzaW5jZSA9ICIwLjgiKV0K LS0JcHVibGljIHN0YXRpYyB2b2lkIHVuZ3JhYl9wb2ludGVyX2Zvcl9kZXZpY2UgKGludCBpZF8p OwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY2x1dHRlci9jbHV0dGVyLmgiKV0KLSAJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJcHVibGljIHN0YXRpYyB1aW50IHVuaWNvZGVf dG9fa2V5c3ltICh1aW50MzIgd2MpOwotIH0KLWRpZmYgLS1naXQgdmFwaS9tdXR0ZXItY29nbC01 LWN1c3RvbS52YWxhIHZhcGkvbXV0dGVyLWNvZ2wtNi1jdXN0b20udmFsYQotc2ltaWxhcml0eSBp bmRleCAxMDAlCi1yZW5hbWUgZnJvbSB2YXBpL211dHRlci1jb2dsLTUtY3VzdG9tLnZhbGEKLXJl bmFtZSB0byB2YXBpL211dHRlci1jb2dsLTYtY3VzdG9tLnZhbGEKLWRpZmYgLS1naXQgdmFwaS9t dXR0ZXItY29nbC00LmRlcHMgdmFwaS9tdXR0ZXItY29nbC02LmRlcHMKLXNpbWlsYXJpdHkgaW5k ZXggMTAwJQotcmVuYW1lIGZyb20gdmFwaS9tdXR0ZXItY29nbC00LmRlcHMKLXJlbmFtZSB0byB2 YXBpL211dHRlci1jb2dsLTYuZGVwcwotZGlmZiAtLWdpdCB2YXBpL211dHRlci1jb2dsLTUudmFw aSB2YXBpL211dHRlci1jb2dsLTYudmFwaQotc2ltaWxhcml0eSBpbmRleCA2OCUKLXJlbmFtZSBm cm9tIHZhcGkvbXV0dGVyLWNvZ2wtNS52YXBpCi1yZW5hbWUgdG8gdmFwaS9tdXR0ZXItY29nbC02 LnZhcGkKLWluZGV4IGE4OTYxMjI0Li4xOTVlM2IxNyAxMDA2NDQKLS0tLSB2YXBpL211dHRlci1j b2dsLTUudmFwaQotKysrIHZhcGkvbXV0dGVyLWNvZ2wtNi52YXBpCi1AQCAtMSw2ICsxLDYgQEAK LS0vKiBtdXR0ZXItY29nbC01LnZhcGkgZ2VuZXJhdGVkIGJ5IHZhcGlnZW4sIGRvIG5vdCBtb2Rp ZnkuICovCi0rLyogbXV0dGVyLWNvZ2wtNi52YXBpIGdlbmVyYXRlZCBieSB2YXBpZ2VuLCBkbyBu b3QgbW9kaWZ5LiAqLwotIAotLVtDQ29kZSAoY3ByZWZpeCA9ICJDb2dsIiwgZ2lyX25hbWVzcGFj ZSA9ICJDb2dsIiwgZ2lyX3ZlcnNpb24gPSAiNSIsIGxvd2VyX2Nhc2VfY3ByZWZpeCA9ICJjb2ds XyIpXQotK1tDQ29kZSAoY3ByZWZpeCA9ICJDb2dsIiwgZ2lyX25hbWVzcGFjZSA9ICJDb2dsIiwg Z2lyX3ZlcnNpb24gPSAiNiIsIGxvd2VyX2Nhc2VfY3ByZWZpeCA9ICJjb2dsXyIpXQotIG5hbWVz cGFjZSBDb2dsIHsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwg Y25hbWUgPSAiQ29nbEhhbmRsZSIsIHR5cGVfaWQgPSAiY29nbF9iaXRtYXBfZ2V0X2d0eXBlICgp IildCi0gCVtDb21wYWN0XQotQEAgLTI4LDkgKzI4LDEwIEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJ CXB1YmxpYyBib29sIHNldF9kYXRhIChzaXplX3Qgb2Zmc2V0LCBbQ0NvZGUgKGFycmF5X2xlbmd0 aF90eXBlID0gInNpemVfdCIpXSB1aW50OFtdIGRhdGEpOwotIAkJcHVibGljIHZvaWQgdW5tYXAg KCk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaGFz X3R5cGVfaWQgPSBmYWxzZSldCi0tCVtDb21wYWN0XQotLQlwdWJsaWMgY2xhc3MgRXVsZXIgewot KwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0eXBlX2lkID0gImNv Z2xfY29udGV4dF9nZXRfZ3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNzIENvbnRleHQgOiBDb2ds Lk9iamVjdCB7Ci0rCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0r CQlwcm90ZWN0ZWQgQ29udGV4dCAoKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVfZnVu Y3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJjb2dsX2ZyYW1lX2Nsb3N1cmVfZ2V0 X2d0eXBlICgpIildCi0gCVtDb21wYWN0XQotQEAgLTY1LDYyICs2NiwxNyBAQCBuYW1lc3BhY2Ug Q29nbCB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQot IAkJcHVibGljIE1hdGVyaWFsICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjIiKV0KLS0JCXB1YmxpYyBDb2ds Lk1hdGVyaWFsIGNvcHkgKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgZm9y ZWFjaF9sYXllciAoQ29nbC5NYXRlcmlhbExheWVyQ2FsbGJhY2sgY2FsbGJhY2spOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5j ZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9hbWJpZW50IChDb2dsLkNvbG9yIGFtYmll bnQpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBDb2dsLkNvbG9yIGdldF9jb2xvciAo KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfZGlmZnVzZSAoQ29nbC5D b2xvciBkaWZmdXNlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfZW1p c3Npb24gKENvZ2wuQ29sb3IgZW1pc3Npb24pOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1Ymxp YyBib29sIGdldF9sYXllcl9wb2ludF9zcHJpdGVfY29vcmRzX2VuYWJsZWQgKGludCBsYXllcl9p bmRleCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xNiIsIHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9k ZSBnZXRfbGF5ZXJfd3JhcF9tb2RlX3AgKGludCBsYXllcl9pbmRleCk7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEu NiIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBnZXRfbGF5ZXJfd3JhcF9tb2Rl X3MgKGludCBsYXllcl9pbmRleCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIENvZ2wu TWF0ZXJpYWxXcmFwTW9kZSBnZXRfbGF5ZXJfd3JhcF9tb2RlX3QgKGludCBsYXllcl9pbmRleCk7 Ci0tCQlwdWJsaWMgdW5vd25lZCBHTGliLkxpc3Q8Q29nbC5NYXRlcmlhbExheWVyPiBnZXRfbGF5 ZXJzICgpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBpbnQgZ2V0X25fbGF5ZXJzICgp OwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyBmbG9hdCBnZXRfcG9pbnRfc2l6ZSAoKTsK LS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2 Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgZmxvYXQgZ2V0X3NoaW5pbmVzcyAoKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwg c2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfc3BlY3VsYXIgKENvZ2wuQ29sb3Ig c3BlY3VsYXIpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENvZ2wuSGFu ZGxlIGdldF91c2VyX3Byb2dyYW0gKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4yIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgc3Rh dGljIHVub3duZWQgQ29nbC5IYW5kbGUgQHJlZiAoQ29nbC5IYW5kbGUgbWF0ZXJpYWwpOwotLQkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0K LS0JCXB1YmxpYyB2b2lkIHJlbW92ZV9sYXllciAoaW50IGxheWVyX2luZGV4KTsKLSAJCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2Ug PSAiMS4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfYWxwaGFfdGVzdF9mdW5jdGlvbiAoQ29nbC5N YXRlcmlhbEFscGhhRnVuYyBhbHBoYV9mdW5jLCBmbG9hdCBhbHBoYV9yZWZlcmVuY2UpOwotIAkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBz aW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbWJpZW50IChDb2dsLkNvbG9yIGFt YmllbnQpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNl ID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbWJpZW50X2Fu ZF9kaWZmdXNlIChDb2dsLkNvbG9yIGNvbG9yKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0gCQlwdWJs aWMgYm9vbCBzZXRfYmxlbmQgKHN0cmluZyBibGVuZF9zdHJpbmcpIHRocm93cyBHTGliLkVycm9y OwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTYiLCBzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9ibGVuZF9jb25zdGFudCAo Q29nbC5Db2xvciBjb25zdGFudF9jb2xvcik7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGlj IHZvaWQgc2V0X2NvbG9yIChDb2dsLkNvbG9yIGNvbG9yKTsKLSAJCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgdm9pZCBzZXRfY29sb3I0ZiAoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQg Ymx1ZSwgZmxvYXQgYWxwaGEpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNl dF9jb2xvcjR1YiAodWludDggcmVkLCB1aW50OCBncmVlbiwgdWludDggYmx1ZSwgdWludDggYWxw aGEpOwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kaWZmdXNlIChDb2ds LkNvbG9yIGRpZmZ1c2UpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9l bWlzc2lvbiAoQ29nbC5Db2xvciBlbWlzc2lvbik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotIAkJcHVi bGljIHZvaWQgc2V0X2xheWVyIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuSGFuZGxlIHRleHR1cmUp OwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTYiLCBzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyBib29sIHNldF9sYXllcl9jb21iaW5lIChp bnQgbGF5ZXJfaW5kZXgsIHN0cmluZyBibGVuZF9zdHJpbmcpIHRocm93cyBHTGliLkVycm9yOwot QEAgLTEzMyw0MSArODksMTMgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0K LSAJCXB1YmxpYyBib29sIHNldF9sYXllcl9wb2ludF9zcHJpdGVfY29vcmRzX2VuYWJsZWQgKGlu dCBsYXllcl9pbmRleCwgYm9vbCBlbmFibGUpIHRocm93cyBHTGliLkVycm9yOwotIAkJW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9 ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sYXllcl93cmFwX21vZGUgKGludCBsYXllcl9p bmRleCwgQ29nbC5NYXRlcmlhbFdyYXBNb2RlIG1vZGUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0J CXB1YmxpYyB2b2lkIHNldF9sYXllcl93cmFwX21vZGVfcCAoaW50IGxheWVyX2luZGV4LCBDb2ds Lk1hdGVyaWFsV3JhcE1vZGUgbW9kZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZv aWQgc2V0X2xheWVyX3dyYXBfbW9kZV9zIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuTWF0ZXJpYWxX cmFwTW9kZSBtb2RlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5 ZXJfd3JhcF9tb2RlX3QgKGludCBsYXllcl9pbmRleCwgQ29nbC5NYXRlcmlhbFdyYXBNb2RlIG1v ZGUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9wb2ludF9zaXplIChm bG9hdCBwb2ludF9zaXplKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRf c2hpbmluZXNzIChmbG9hdCBzaGluaW5lc3MpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1Ymxp YyB2b2lkIHNldF9zcGVjdWxhciAoQ29nbC5Db2xvciBzcGVjdWxhcik7Ci0gCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEu NCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3VzZXJfcHJvZ3JhbSAoQ29nbC5IYW5kbGUgcHJvZ3Jh bSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4yIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgdW5yZWYgKENvZ2wu SGFuZGxlIG1hdGVyaWFsKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJW0NvbXBhY3RdCi0gCXB1YmxpYyBj bGFzcyBNYXRlcmlhbExheWVyIHsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbEZpbHRlciBn ZXRfbWFnX2ZpbHRlciAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbEZpbHRlciBnZXRf bWluX2ZpbHRlciAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgdW5vd25lZCBDb2dsLkhhbmRsZSBnZXRfdGV4 dHVyZSAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbExheWVyVHlwZSBnZXRfdHlwZSAo KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbFdyYXBNb2RlIGdl dF93cmFwX21vZGVfcCAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgQ29nbC5NYXRl cmlhbFdyYXBNb2RlIGdldF93cmFwX21vZGVfcyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlw dWJsaWMgQ29nbC5NYXRlcmlhbFdyYXBNb2RlIGdldF93cmFwX21vZGVfdCAoKTsKLSAJfQotIAlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0eXBlX2lkID0gImNvZ2xf b2JqZWN0X2dldF9ndHlwZSAoKSIpXQotIAlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgT2JqZWN0IHsK LUBAIC0xNzgsMTMgKzEwNiw5IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJcHVibGljIGNsYXNzIE9m ZnNjcmVlbiA6IENvZ2wuT2JqZWN0LCBDb2dsLkZyYW1lYnVmZmVyIHsKLSAJCVtDQ29kZSAoaGFz X2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBPZmZzY3JlZW4gKCk7 Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4y IildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQqIEByZWYgKHZvaWQqIG9mZnNjcmVlbik7Ci0gCQlb Q0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotIAkJcHVibGljIE9m ZnNjcmVlbi50b190ZXh0dXJlIChDb2dsLlRleHR1cmUgdGV4dHVyZSk7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMg c3RhdGljIHZvaWQgdW5yZWYgKHZvaWQqIG9mZnNjcmVlbik7Ci0gCQlbQ0NvZGUgKGhhc19jb25z dHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwdWJsaWMgT2Zmc2NyZWVuLndpdGhfdGV4dHVy ZSAoQ29nbC5UZXh0dXJlIHRleHR1cmUpOwotIAl9Ci1AQCAtMTk2LDkgKzEyMCw2IEBAIG5hbWVz cGFjZSBDb2dsIHsKLSAJCXB1YmxpYyBDb2dsLk9uc2NyZWVuRGlydHlDbG9zdXJlIGFkZF9kaXJ0 eV9jYWxsYmFjayAoW0NDb2RlIChkZWxlZ2F0ZV90YXJnZXRfcG9zID0gMS41KV0gQ29nbC5PbnNj cmVlbkRpcnR5Q2FsbGJhY2sgY2FsbGJhY2ssIENvZ2wuVXNlckRhdGFEZXN0cm95Q2FsbGJhY2s/ IGRlc3Ryb3kpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIENvZ2wu T25zY3JlZW5SZXNpemVDbG9zdXJlIGFkZF9yZXNpemVfY2FsbGJhY2sgKFtDQ29kZSAoZGVsZWdh dGVfdGFyZ2V0X3BvcyA9IDEuNSldIENvZ2wuT25zY3JlZW5SZXNpemVDYWxsYmFjayBjYWxsYmFj aywgQ29nbC5Vc2VyRGF0YURlc3Ryb3lDYWxsYmFjaz8gZGVzdHJveSk7Ci0tCQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNCIsIHNpbmNlID0gIjEu MTAiKV0KLS0JCXB1YmxpYyB1aW50IGFkZF9zd2FwX2J1ZmZlcnNfY2FsbGJhY2sgKENvZ2wuU3dh cEJ1ZmZlcnNOb3RpZnkgY2FsbGJhY2spOwotLQkJcHVibGljIHN0YXRpYyB2b2lkIGNsdXR0ZXJf YmFja2VuZF9zZXRfc2l6ZV9DTFVUVEVSIChpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLSAJCXB1YmxpYyBpbnQgZ2V0X2J1ZmZlcl9hZ2UgKCk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotQEAgLTIxMyw4ICsxMzQsNiBAQCBuYW1l c3BhY2UgQ29nbCB7Ci0gCQlwdWJsaWMgdm9pZCByZW1vdmVfZnJhbWVfY2FsbGJhY2sgKENvZ2wu RnJhbWVDbG9zdXJlIGNsb3N1cmUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJ cHVibGljIHZvaWQgcmVtb3ZlX3Jlc2l6ZV9jYWxsYmFjayAoQ29nbC5PbnNjcmVlblJlc2l6ZUNs b3N1cmUgY2xvc3VyZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xNCIsIHNpbmNlID0gIjEuMTAiKV0KLS0JCXB1YmxpYyB2b2lkIHJlbW92 ZV9zd2FwX2J1ZmZlcnNfY2FsbGJhY2sgKHVpbnQgaWQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjIuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3Jlc2l6YWJsZSAoYm9vbCByZXNpemFibGUpOwot IAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotQEAgLTI0NCw3ICsxNjMsOCBAQCBuYW1lc3Bh Y2UgQ29nbCB7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIHR5 cGVfaWQgPSAiY29nbF9waXBlbGluZV9nZXRfZ3R5cGUgKCkiKV0KLSAJcHVibGljIGNsYXNzIFBp cGVsaW5lIDogQ29nbC5PYmplY3QgewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9u ID0gZmFsc2UpXQotLQkJcHJvdGVjdGVkIFBpcGVsaW5lICgpOwotKwkJW1ZlcnNpb24gKHNpbmNl ID0gIjIuMCIpXQotKwkJcHVibGljIFBpcGVsaW5lIChDb2dsLkNvbnRleHQgY29udGV4dCk7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgQ29nbC5QaXBlbGluZSBjb3B5 ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotQEAgLTI1NCwxNiArMTc0LDEwIEBA IG5hbWVzcGFjZSBDb2dsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1Ymxp YyBmbG9hdCBnZXRfYWxwaGFfdGVzdF9yZWZlcmVuY2UgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfYW1iaWVudCAoQ29nbC5Db2xvciBhbWJpZW50 KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyBDb2dsLkNvbG9yIGdl dF9jb2xvciAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyBDb2ds LlBpcGVsaW5lQ3VsbEZhY2VNb2RlIGdldF9jdWxsX2ZhY2VfbW9kZSAoKTsKLSAJCVtWZXJzaW9u IChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIGdldF9kaWZmdXNlIChDb2dsLkNvbG9y IGRpZmZ1c2UpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQg Z2V0X2VtaXNzaW9uIChDb2dsLkNvbG9yIGVtaXNzaW9uKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIyLjAiKV0KLSAJCXB1YmxpYyBDb2dsLldpbmRpbmcgZ2V0X2Zyb250X2ZhY2Vfd2luZGluZyAo KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgQ29nbC5QaXBlbGlu ZUZpbHRlciBnZXRfbGF5ZXJfbWFnX2ZpbHRlciAoaW50IGxheWVyX2luZGV4KTsKLUBAIC0yNzQs OCArMTg4LDYgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAi KV0KLSAJCXB1YmxpYyB1bm93bmVkIENvZ2wuVGV4dHVyZSBnZXRfbGF5ZXJfdGV4dHVyZSAoaW50 IGxheWVyX2luZGV4KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjYiKV0KLS0JCXB1YmxpYyBD b2dsLlBpcGVsaW5lV3JhcE1vZGUgZ2V0X2xheWVyX3dyYXBfbW9kZV9wIChpbnQgbGF5ZXJfaW5k ZXgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJcHVibGljIENvZ2wuUGlwZWxp bmVXcmFwTW9kZSBnZXRfbGF5ZXJfd3JhcF9tb2RlX3MgKGludCBsYXllcl9pbmRleCk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMgQ29nbC5QaXBlbGluZVdyYXBNb2Rl IGdldF9sYXllcl93cmFwX21vZGVfdCAoaW50IGxheWVyX2luZGV4KTsKLUBAIC0yODYsMTAgKzE5 OCw2IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJ CXB1YmxpYyBmbG9hdCBnZXRfcG9pbnRfc2l6ZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIy LjAiKV0KLS0JCXB1YmxpYyBmbG9hdCBnZXRfc2hpbmluZXNzICgpOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X3NwZWN1bGFyIChDb2dsLkNvbG9yIHNw ZWN1bGFyKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyBpbnQgZ2V0 X3VuaWZvcm1fbG9jYXRpb24gKHN0cmluZyB1bmlmb3JtX25hbWUpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjIuMCIpXQotIAkJcHVibGljIHVub3duZWQgQ29nbC5IYW5kbGUgZ2V0X3VzZXJfcHJv Z3JhbSAoKTsKLUBAIC0yOTgsMTAgKzIwNiw2IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9hbHBoYV90ZXN0X2Z1bmN0 aW9uIChDb2dsLlBpcGVsaW5lQWxwaGFGdW5jIGFscGhhX2Z1bmMsIGZsb2F0IGFscGhhX3JlZmVy ZW5jZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRf YW1iaWVudCAoQ29nbC5Db2xvciBhbWJpZW50KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAi KV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbWJpZW50X2FuZF9kaWZmdXNlIChDb2dsLkNvbG9yIGNv bG9yKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyBib29sIHNldF9i bGVuZCAoc3RyaW5nIGJsZW5kX3N0cmluZykgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfYmxlbmRfY29uc3RhbnQgKENv Z2wuQ29sb3IgY29uc3RhbnRfY29sb3IpOwotQEAgLTMxNCwxMCArMjE4LDYgQEAgbmFtZXNwYWNl IENvZ2wgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0 X2N1bGxfZmFjZV9tb2RlIChDb2dsLlBpcGVsaW5lQ3VsbEZhY2VNb2RlIGN1bGxfZmFjZV9tb2Rl KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kaWZm dXNlIChDb2dsLkNvbG9yIGRpZmZ1c2UpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQot LQkJcHVibGljIHZvaWQgc2V0X2VtaXNzaW9uIChDb2dsLkNvbG9yIGVtaXNzaW9uKTsKLS0JCVtW ZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9mcm9udF9mYWNlX3dp bmRpbmcgKENvZ2wuV2luZGluZyBmcm9udF93aW5kaW5nKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIyLjAiKV0KLSAJCXB1YmxpYyBib29sIHNldF9sYXllcl9jb21iaW5lIChpbnQgbGF5ZXJfaW5k ZXgsIHN0cmluZyBibGVuZF9zdHJpbmcpIHRocm93cyBHTGliLkVycm9yOwotQEAgLTMzNSw4ICsy MzUsNiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0g CQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wu UGlwZWxpbmVXcmFwTW9kZSBtb2RlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0J CXB1YmxpYyB2b2lkIHNldF9sYXllcl93cmFwX21vZGVfcCAoaW50IGxheWVyX2luZGV4LCBDb2ds LlBpcGVsaW5lV3JhcE1vZGUgbW9kZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0g CQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlX3MgKGludCBsYXllcl9pbmRleCwgQ29n bC5QaXBlbGluZVdyYXBNb2RlIG1vZGUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQot IAkJcHVibGljIHZvaWQgc2V0X2xheWVyX3dyYXBfbW9kZV90IChpbnQgbGF5ZXJfaW5kZXgsIENv Z2wuUGlwZWxpbmVXcmFwTW9kZSBtb2RlKTsKLUBAIC0zNDUsMTAgKzI0Myw2IEBAIG5hbWVzcGFj ZSBDb2dsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNl dF9wb2ludF9zaXplIChmbG9hdCBwb2ludF9zaXplKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIy LjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9zaGluaW5lc3MgKGZsb2F0IHNoaW5pbmVzcyk7Ci0t CQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfc3BlY3VsYXIg KENvZ2wuQ29sb3Igc3BlY3VsYXIpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJ cHVibGljIHZvaWQgc2V0X3VuaWZvcm1fMWYgKGludCB1bmlmb3JtX2xvY2F0aW9uLCBmbG9hdCB2 YWx1ZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRf dW5pZm9ybV8xaSAoaW50IHVuaWZvcm1fbG9jYXRpb24sIGludCB2YWx1ZSk7Ci1AQCAtMzgyLDEw ICsyNzYsNiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlwdWJsaWMgc3RhdGljIHZvaWQgdW5pZm9y bV9tYXRyaXggKGludCB1bmlmb3JtX25vLCBpbnQgc2l6ZSwgYm9vbCB0cmFuc3Bvc2UsIFtDQ29k ZSAoYXJyYXlfbGVuZ3RoX3BvcyA9IDIuOSldIGZsb2F0W10gdmFsdWUpOwotIAkJcHVibGljIHZv aWQgdXNlICgpOwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlbQ29tcGFjdF0KLS0JcHVibGljIGNsYXNzIFF1 YXRlcm5pb24gewotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIsIGNuYW1lID0gIkNvZ2xIYW5kbGUiLCByZWZfZnVuY3Rpb24gPSAiY29nbF9zaGFkZXJfcmVm IiwgdW5yZWZfZnVuY3Rpb24gPSAiY29nbF9zaGFkZXJfdW5yZWYiKV0KLSAJW0NvbXBhY3RdCi0g CXB1YmxpYyBjbGFzcyBTaGFkZXIgOiBDb2dsLkhhbmRsZSB7Ci1AQCAtNDY1LDEyICszNTUsMTAg QEAgbmFtZXNwYWNlIENvZ2wgewotIAkJcHVibGljIGludCBnZXRfYWxwaGFfYml0cyAoKTsKLSAJ CVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1YmxpYyBpbnQgZ2V0X2JsdWVfYml0cyAo KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSsJCXB1YmxpYyB1bm93bmVkIENvZ2wu Q29udGV4dCBnZXRfY29udGV4dCAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJ CXB1YmxpYyBpbnQgZ2V0X2RlcHRoX2JpdHMgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4x NCIpXQotLQkJcHVibGljIHVub3duZWQgQ29nbC5UZXh0dXJlIGdldF9kZXB0aF90ZXh0dXJlICgp OwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLS0JCXB1YmxpYyBib29sIGdldF9kZXB0 aF90ZXh0dXJlX2VuYWJsZWQgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotIAkJ cHVibGljIGJvb2wgZ2V0X2RlcHRoX3dyaXRlX2VuYWJsZWQgKCk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS44IildCi1AQCAtNTE2LDYgKzQwNCw3IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCXB1 YmxpYyB2b2lkIHB1c2hfbWF0cml4ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0K LSAJCXB1YmxpYyB2b2lkIHB1c2hfcmVjdGFuZ2xlX2NsaXAgKGZsb2F0IHhfMSwgZmxvYXQgeV8x LCBmbG9hdCB4XzIsIGZsb2F0IHlfMik7Ci0rCQlwdWJsaWMgdm9pZCBwdXNoX3JlZ2lvbl9jbGlw IChDYWlyby5SZWdpb24gcmVnaW9uKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0g CQlwdWJsaWMgdm9pZCBwdXNoX3NjaXNzb3JfY2xpcCAoaW50IHgsIGludCB5LCBpbnQgd2lkdGgs IGludCBoZWlnaHQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLUBAIC01MjksMTMg KzQxOCw5IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIild Ci0gCQlwdWJsaWMgdm9pZCByb3RhdGUgKGZsb2F0IGFuZ2xlLCBmbG9hdCB4LCBmbG9hdCB5LCBm bG9hdCB6KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHJv dGF0ZV9ldWxlciAoQ29nbC5FdWxlciBldWxlcik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4w IildCi0tCQlwdWJsaWMgdm9pZCByb3RhdGVfcXVhdGVybmlvbiAoQ29nbC5RdWF0ZXJuaW9uIHF1 YXRlcm5pb24pOwotKwkJcHVibGljIHZvaWQgcm90YXRlX2V1bGVyIChHcmFwaGVuZS5FdWxlciBl dWxlcik7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgc2Nh bGUgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTQiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kZXB0aF90ZXh0dXJlX2VuYWJsZWQgKGJvb2wgZW5h YmxlZCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotIAkJcHVibGljIHZvaWQgc2V0 X2RlcHRoX3dyaXRlX2VuYWJsZWQgKGJvb2wgZGVwdGhfd3JpdGVfZW5hYmxlZCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS44IildCi1AQCAtNjM1LDEwICs1MjAsNiBAQCBuYW1lc3BhY2UgQ29n bCB7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfYmx1ZV9ieXRlICh1aW50OCBibHVlKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9ibHVlX2Zsb2F0IChmbG9h dCBibHVlKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjQiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9mcm9tXzRmIChm bG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSk7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS40Iiwgc2luY2Ug PSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZnJvbV80dWIgKHVpbnQ4IHJlZCwgdWludDgg Z3JlZW4sIHVpbnQ4IGJsdWUsIHVpbnQ4IGFscGhhKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjQiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9ncmVlbiAoZmxvYXQgZ3JlZW4pOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuNCIpXQotQEAgLTY2Miw3ICs1NDMsNyBAQCBuYW1lc3BhY2UgQ29nbCB7 Ci0gCQlwdWJsaWMgd2VhayBzdHJpbmcgbmFtZTsKLSAJCXB1YmxpYyB1bG9uZyBpbnN0YW5jZV9j b3VudDsKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0 eXBlX2lkID0gIkNPR0xfVFlQRV9NQVRSSVgiKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIiwgY29weV9mdW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1 bmN0aW9uID0gImdfYm94ZWRfZnJlZSIsIHR5cGVfaWQgPSAiQ09HTF9UWVBFX01BVFJJWCIpXQot IAlwdWJsaWMgc3RydWN0IE1hdHJpeCB7Ci0gCQlwdWJsaWMgZmxvYXQgeHg7Ci0gCQlwdWJsaWMg ZmxvYXQgeXg7Ci1AQCAtNjkyLDggKzU3Myw3IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCXB1Ymxp YyBib29sIGdldF9pbnZlcnNlIChvdXQgQ29nbC5NYXRyaXggaW52ZXJzZSk7Ci0gCQlbQ0NvZGUg KGNuYW1lID0gImNvZ2xfbWF0cml4X2luaXRfaWRlbnRpdHkiKV0KLSAJCXB1YmxpYyBNYXRyaXgu aWRlbnRpdHkgKCk7Ci0tCQlwdWJsaWMgdm9pZCBpbml0X2Zyb21fZXVsZXIgKENvZ2wuRXVsZXIg ZXVsZXIpOwotLQkJcHVibGljIHZvaWQgaW5pdF9mcm9tX3F1YXRlcm5pb24gKENvZ2wuUXVhdGVy bmlvbiBxdWF0ZXJuaW9uKTsKLSsJCXB1YmxpYyB2b2lkIGluaXRfZnJvbV9ldWxlciAoR3JhcGhl bmUuRXVsZXIgZXVsZXIpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGlj IHZvaWQgaW5pdF90cmFuc2xhdGlvbiAoZmxvYXQgdHgsIGZsb2F0IHR5LCBmbG9hdCB0eik7Ci0g CQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi1AQCAtNzAyLDE5ICs1ODIsMTUgQEAgbmFtZXNw YWNlIENvZ2wgewotIAkJcHVibGljIHZvaWQgbG9va19hdCAoZmxvYXQgZXllX3Bvc2l0aW9uX3gs IGZsb2F0IGV5ZV9wb3NpdGlvbl95LCBmbG9hdCBleWVfcG9zaXRpb25feiwgZmxvYXQgb2JqZWN0 X3gsIGZsb2F0IG9iamVjdF95LCBmbG9hdCBvYmplY3RfeiwgZmxvYXQgd29ybGRfdXBfeCwgZmxv YXQgd29ybGRfdXBfeSwgZmxvYXQgd29ybGRfdXBfeik7Ci0gCQlbQ0NvZGUgKGNuYW1lID0gImNv Z2xfbWF0cml4X211bHRpcGx5IildCi0gCQlwdWJsaWMgTWF0cml4Lm11bHRpcGx5IChDb2dsLk1h dHJpeCBhLCBDb2dsLk1hdHJpeCBiKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBvcnRobyAoZmxvYXQg bGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGJvdHRvbSwgZmxvYXQgdG9wLCBmbG9hdCBuZWFyLCBm bG9hdCBmYXIpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB2b2lk IG9ydGhvZ3JhcGhpYyAoZmxvYXQgeF8xLCBmbG9hdCB5XzEsIGZsb2F0IHhfMiwgZmxvYXQgeV8y LCBmbG9hdCBuZWFyLCBmbG9hdCBmYXIpOwotIAkJcHVibGljIHZvaWQgcGVyc3BlY3RpdmUgKGZs b2F0IGZvdl95LCBmbG9hdCBhc3BlY3QsIGZsb2F0IHpfbmVhciwgZmxvYXQgel9mYXIpOwotIAkJ cHVibGljIHZvaWQgcHJvamVjdF9wb2ludHMgKGludCBuX2NvbXBvbmVudHMsIHNpemVfdCBzdHJp ZGVfaW4sIHZvaWQqIHBvaW50c19pbiwgc2l6ZV90IHN0cmlkZV9vdXQsIHZvaWQqIHBvaW50c19v dXQsIGludCBuX3BvaW50cyk7Ci0gCQlwdWJsaWMgdm9pZCByb3RhdGUgKGZsb2F0IGFuZ2xlLCBm bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0K LS0JCXB1YmxpYyB2b2lkIHJvdGF0ZV9ldWxlciAoQ29nbC5FdWxlciBldWxlcik7Ci0tCQlbVmVy c2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCByb3RhdGVfcXVhdGVybmlvbiAo Q29nbC5RdWF0ZXJuaW9uIHF1YXRlcm5pb24pOwotKwkJcHVibGljIHZvaWQgcm90YXRlX2V1bGVy IChHcmFwaGVuZS5FdWxlciBldWxlcik7Ci0gCQlwdWJsaWMgdm9pZCBzY2FsZSAoZmxvYXQgc3gs IGZsb2F0IHN5LCBmbG9hdCBzeik7Ci0tCQlwdWJsaWMgdm9pZCB0cmFuc2Zvcm1fcG9pbnQgKHJl ZiBmbG9hdCB4LCByZWYgZmxvYXQgeSwgcmVmIGZsb2F0IHosIHJlZiBmbG9hdCB3KTsKLSsJCXB1 YmxpYyBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1fcG9pbnQgKHJlZiBDb2dsLk1hdHJpeCBtYXRyaXgs IHJlZiBmbG9hdCB4LCByZWYgZmxvYXQgeSwgcmVmIGZsb2F0IHosIHJlZiBmbG9hdCB3KTsKLSAJ CXB1YmxpYyB2b2lkIHRyYW5zZm9ybV9wb2ludHMgKGludCBuX2NvbXBvbmVudHMsIHNpemVfdCBz dHJpZGVfaW4sIHZvaWQqIHBvaW50c19pbiwgc2l6ZV90IHN0cmlkZV9vdXQsIHZvaWQqIHBvaW50 c19vdXQsIGludCBuX3BvaW50cyk7Ci0gCQlwdWJsaWMgdm9pZCB0cmFuc2xhdGUgKGZsb2F0IHgs IGZsb2F0IHksIGZsb2F0IHopOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLUBAIC04 MTgsMzggKzY5NCwzMyBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlOT05FLAotIAkJTk9fR0VUX0RB VEEKLSAJfQotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJl Zml4ID0gIkNPR0xfRkVBVFVSRV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW0ZsYWdzXQot LQlbVmVyc2lvbiAoc2luY2UgPSAiMC44IildCi0tCXB1YmxpYyBlbnVtIEZlYXR1cmVGbGFncyB7 Ci0tCQlURVhUVVJFX1lVViwKLS0JCVRFWFRVUkVfUkVBRF9QSVhFTFMsCi0tCQlPRkZTQ1JFRU4s Ci0tCQlPRkZTQ1JFRU5fTVVMVElTQU1QTEUsCi0tCQlGT1VSX0NMSVBfUExBTkVTLAotLQkJU1RF TkNJTF9CVUZGRVIsCi0tCQlWQk9TLAotLQkJUEJPUywKLS0JCVVOU0lHTkVEX0lOVF9JTkRJQ0VT LAotLQkJREVQVEhfUkFOR0UsCi0tCQlQT0lOVF9TUFJJVEUsCi0tCQlNQVBfQlVGRkVSX0ZPUl9S RUFELAotLQkJTUFQX0JVRkZFUl9GT1JfV1JJVEUsCi0tCQlPTlNDUkVFTl9NVUxUSVBMRSwKLS0J CURFUFRIX1RFWFRVUkUKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5o IiwgY3ByZWZpeCA9ICJDT0dMX0ZFQVRVUkVfSURfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0r CVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCXB1YmxpYyBlbnVtIEZlYXR1cmVJRCB7Ci0r CQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfRkVBVFVSRV9JRF9VTlNJR05FRF9JTlRfSU5ESUNFUyIp XQotKwkJT0dMX0ZFQVRVUkVfSURfVU5TSUdORURfSU5UX0lORElDRVMsCi0rCQlbQ0NvZGUgKGNu YW1lID0gIkNPR0xfRkVBVFVSRV9JRF9NQVBfQlVGRkVSX0ZPUl9SRUFEIildCi0rCQlPR0xfRkVB VFVSRV9JRF9NQVBfQlVGRkVSX0ZPUl9SRUFELAotKwkJW0NDb2RlIChjbmFtZSA9ICJDT0dMX0ZF QVRVUkVfSURfTUFQX0JVRkZFUl9GT1JfV1JJVEUiKV0KLSsJCU9HTF9GRUFUVVJFX0lEX01BUF9C VUZGRVJfRk9SX1dSSVRFLAotKwkJW0NDb2RlIChjbmFtZSA9ICJDT0dMX0ZFQVRVUkVfSURfU1dB UF9CVUZGRVJTX0VWRU5UIildCi0rCQlPR0xfRkVBVFVSRV9JRF9TV0FQX0JVRkZFUlNfRVZFTlQs Ci0rCQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfRkVBVFVSRV9JRF9QUkVTRU5UQVRJT05fVElNRSIp XQotKwkJT0dMX0ZFQVRVUkVfSURfUFJFU0VOVEFUSU9OX1RJTUUsCi0rCQlbQ0NvZGUgKGNuYW1l ID0gIkNPR0xfRkVBVFVSRV9JRF9GRU5DRSIpXQotKwkJT0dMX0ZFQVRVUkVfSURfRkVOQ0UsCi0r CQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfRkVBVFVSRV9JRF9URVhUVVJFX1JHIildCi0rCQlPR0xf RkVBVFVSRV9JRF9URVhUVVJFX1JHLAotKwkJW0NDb2RlIChjbmFtZSA9ICJDT0dMX0ZFQVRVUkVf SURfQlVGRkVSX0FHRSIpXQotKwkJT0dMX0ZFQVRVUkVfSURfQlVGRkVSX0FHRSwKLSsJCVtDQ29k ZSAoY25hbWUgPSAiQ09HTF9GRUFUVVJFX0lEX1RFWFRVUkVfRUdMX0lNQUdFX0VYVEVSTkFMIild Ci0rCQlPR0xfRkVBVFVSRV9JRF9URVhUVVJFX0VHTF9JTUFHRV9FWFRFUk5BTAotIAl9Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9G SUxURVJfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCXB1YmxpYyBlbnVtIEZpbHRlclJldHVy biB7Ci0gCQlDT05USU5VRSwKLSAJCVJFTU9WRQotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9GT0dfTU9ERV8iLCBoYXNfdHlw ZV9pZCA9IGZhbHNlKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgZW51 bSBGb2dNb2RlIHsKLS0JCUxJTkVBUiwKLS0JCUVYUE9ORU5USUFMLAotLQkJRVhQT05FTlRJQUxf U1FVQVJFRAotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIs IGNwcmVmaXggPSAiQ09HTF9GUkFNRV9FVkVOVF8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLSAJcHVibGljIGVudW0gRnJhbWVFdmVudCB7Ci1A QCAtODYyLDYgKzczMywxNCBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlGUkFNRUJVRkZFUl9FUlJP Ul9BTExPQ0FURTsKLSAJCXB1YmxpYyBzdGF0aWMgdWludDMyIHF1YXJrICgpOwotIAl9Ci0rCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9H UkFQSElDU19SRVNFVF9TVEFUVVNfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0rCXB1YmxpYyBl bnVtIEdyYXBoaWNzUmVzZXRTdGF0dXMgewotKwkJTk9fRVJST1IsCi0rCQlHVUlMVFlfQ09OVEVY VF9SRVNFVCwKLSsJCUlOTk9DRU5UX0NPTlRFWFRfUkVTRVQsCi0rCQlVTktOT1dOX0NPTlRFWFRf UkVTRVQsCi0rCQlQVVJHRURfQ09OVEVYVF9SRVNFVAotKwl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9JTkRJQ0VTX1RZUEVfVU5T SUdORURfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCXB1YmxpYyBlbnVtIEluZGljZXNUeXBl IHsKLSAJCUJZVEUsCi1AQCAtODg4LDEyICs3NjcsNiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlO RUFSRVNUX01JUE1BUF9MSU5FQVIsCi0gCQlMSU5FQVJfTUlQTUFQX0xJTkVBUgotIAl9Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9N QVRFUklBTF9MQVlFUl9UWVBFXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlbVmVyc2lvbiAo c2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBlbnVtIE1hdGVyaWFsTGF5ZXJUeXBlIHsKLS0JCVtD Q29kZSAoY25hbWUgPSAiQ09HTF9NQVRFUklBTF9MQVlFUl9UWVBFX1RFWFRVUkUiKV0KLS0JCU1B VEVSSUFMX0xBWUVSX1RZUEVfVEVYVFVSRQotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9NQVRFUklBTF9XUkFQX01PREVfIiwg aGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJcHVi bGljIGVudW0gTWF0ZXJpYWxXcmFwTW9kZSB7Ci1AQCAtOTcxLDYgKzg0NCw4IEBAIG5hbWVzcGFj ZSBDb2dsIHsKLSAJCURFUFRIXzE2LAotIAkJREVQVEhfMzIsCi0gCQlERVBUSF8yNF9TVEVOQ0lM Xzg7Ci0rCQlwdWJsaWMgaW50IGdldF9ieXRlc19wZXJfcGl4ZWwgKGludCBwbGFuZSk7Ci0rCQlw dWJsaWMgaW50IGdldF9uX3BsYW5lcyAoKTsKLSAJCXB1YmxpYyB1bm93bmVkIHN0cmluZyB0b19z dHJpbmcgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5o IiwgY3ByZWZpeCA9ICJDT0dMX1JFQURfUElYRUxTX0NPTE9SXyIsIGhhc190eXBlX2lkID0gZmFs c2UpXQotQEAgLTEwNjQsOSArOTM5LDkgQEAgbmFtZXNwYWNlIENvZ2wgewotIAlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3MgPSAxLjkpXQotIAlb VmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIERlYnVnT2Jq ZWN0Rm9yZWFjaFR5cGVDYWxsYmFjayAoQ29nbC5EZWJ1Z09iamVjdFR5cGVJbmZvIGluZm8pOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBpbnN0YW5jZV9wb3Mg PSAyLjkpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQlwdWJsaWMgZGVsZWdhdGUgYm9vbCBNYXRlcmlh bExheWVyQ2FsbGJhY2sgKENvZ2wuTWF0ZXJpYWwgbWF0ZXJpYWwsIGludCBsYXllcl9pbmRleCk7 Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3Bv cyA9IDEuOSldCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIwLjEwIildCi0rCXB1YmxpYyBkZWxlZ2F0 ZSB2b2lkIEZlYXR1cmVDYWxsYmFjayAoQ29nbC5GZWF0dXJlSUQgZmVhdHVyZSk7Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3BvcyA9IDIuOSld Ci0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0gCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIE9u c2NyZWVuRGlydHlDYWxsYmFjayAoQ29nbC5PbnNjcmVlbiBvbnNjcmVlbiwgQ29nbC5PbnNjcmVl bkRpcnR5SW5mbyBpbmZvKTsKLUBAIC0xMDc0LDEzICs5NDksOSBAQCBuYW1lc3BhY2UgQ29nbCB7 Ci0gCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJcHVibGljIGRlbGVnYXRlIHZvaWQgT25z Y3JlZW5SZXNpemVDYWxsYmFjayAoQ29nbC5PbnNjcmVlbiBvbnNjcmVlbiwgaW50IHdpZHRoLCBp bnQgaGVpZ2h0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwg aW5zdGFuY2VfcG9zID0gMi45KV0KLS0JcHVibGljIGRlbGVnYXRlIHZvaWQgT25zY3JlZW5YMTFN YXNrQ2FsbGJhY2sgKENvZ2wuT25zY3JlZW4gb25zY3JlZW4sIHVpbnQzMiBldmVudF9tYXNrKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaW5zdGFuY2VfcG9z ID0gMi45KV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAlwdWJsaWMgZGVsZWdhdGUg Ym9vbCBQaXBlbGluZUxheWVyQ2FsbGJhY2sgKENvZ2wuUGlwZWxpbmUgcGlwZWxpbmUsIGludCBs YXllcl9pbmRleCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIs IGluc3RhbmNlX3BvcyA9IDEuOSldCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIFN3YXBCdWZmZXJz Tm90aWZ5IChDb2dsLkZyYW1lYnVmZmVyIGZyYW1lYnVmZmVyKTsKLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaW5zdGFuY2VfcG9zID0gMS45KV0KLSAJcHVibGlj IGRlbGVnYXRlIGJvb2wgVGV4dHVyZTJERUdMSW1hZ2VFeHRlcm5hbEFsbG9jIChDb2dsLlRleHR1 cmUyRCB0ZXhfMmQpIHRocm93cyBHTGliLkVycm9yOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiLCBoYXNfdGFyZ2V0ID0gZmFsc2UpXQotIAlwdWJsaWMgZGVsZWdh dGUgdm9pZCBVc2VyRGF0YURlc3Ryb3lDYWxsYmFjayAodm9pZCogZGF0YSk7Ci1AQCAtMTA5Miw2 ICs5NjMsOCBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCXB1YmxpYyBjb25zdCBpbnQgQkdSX0JJVDsK LSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ09H TF9ERVBUSF9CSVQiKV0KLSAJcHVibGljIGNvbnN0IGludCBERVBUSF9CSVQ7Ci0rCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNPR0xfUElYRUxfRk9S TUFUX01BWF9QTEFORVMiKV0KLSsJcHVibGljIGNvbnN0IGludCBQSVhFTF9GT1JNQVRfTUFYX1BM QU5FUzsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUg PSAiQ09HTF9QUkVNVUxUX0JJVCIpXQotIAlwdWJsaWMgY29uc3QgaW50IFBSRU1VTFRfQklUOwot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dM X1NURU5DSUxfQklUIildCi1AQCAtMTA5OSwxOSArOTcyLDggQEAgbmFtZXNwYWNlIENvZ2wgewot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dM X1RFWFRVUkVfTUFYX1dBU1RFIildCi0gCXB1YmxpYyBjb25zdCBpbnQgVEVYVFVSRV9NQVhfV0FT VEU7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNl ID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgYmVnaW5fZ2wgKCk7Ci0tCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlwdWJsaWMgc3RhdGljIGJvb2wg YmxpdF9mcmFtZWJ1ZmZlciAoQ29nbC5GcmFtZWJ1ZmZlciBzcmMsIENvZ2wuRnJhbWVidWZmZXIg ZGVzdCwgaW50IHNyY194LCBpbnQgc3JjX3ksIGludCBkc3RfeCwgaW50IGRzdF95LCBpbnQgd2lk dGgsIGludCBoZWlnaHQpIHRocm93cyBHTGliLkVycm9yOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMiIpXQotLQlwdWJsaWMgc3RhdGljIGJvb2wgY2hlY2tfZXh0 ZW5zaW9uIChzdHJpbmcgbmFtZSwgc3RyaW5nIGV4dCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgY2xlYXIgKENv Z2wuQ29sb3IgY29sb3IsIHVsb25nIGJ1ZmZlcnMpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JcHVibGljIHN0YXRpYyBib29sIGNsdXR0ZXJfY2hlY2tf ZXh0ZW5zaW9uX0NMVVRURVIgKHN0cmluZyBuYW1lLCBzdHJpbmcgZXh0KTsKLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCXB1YmxpYyBzdGF0aWMgYm9vbCBj bHV0dGVyX3dpbnN5c19oYXNfZmVhdHVyZV9DTFVUVEVSIChDb2dsLldpbnN5c0ZlYXR1cmUgZmVh dHVyZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlb VmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi1AQCAtMTEyOSw1NyArOTkxLDM4IEBAIG5hbWVzcGFj ZSBDb2dsIHsKLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAlwdWJsaWMgc3RhdGljIHZv aWQgZGVidWdfb2JqZWN0X3ByaW50X2luc3RhbmNlcyAoKTsKLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwg ZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBkaXNhYmxl X2ZvZyAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0t CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwg c2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBlbmRfZ2wgKCk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGlj IGJvb2wgZmVhdHVyZXNfYXZhaWxhYmxlIChDb2dsLkZlYXR1cmVGbGFncyBmZWF0dXJlcyk7Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAo c2luY2UgPSAiMS4wIildCi0gCXB1YmxpYyBzdGF0aWMgdm9pZCBmbHVzaCAoKTsKLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMC44LjIiKV0K LS0JcHVibGljIHN0YXRpYyB2b2lkIGZydXN0dW0gKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBm bG9hdCBib3R0b20sIGZsb2F0IHRvcCwgZmxvYXQgel9uZWFyLCBmbG9hdCB6X2Zhcik7Ci0rCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0rCXB1YmxpYyBzdGF0aWMgdm9pZCBmb3JlYWNoX2Zl YXR1cmUgKENvZ2wuQ29udGV4dCBjb250ZXh0LCBDb2dsLkZlYXR1cmVDYWxsYmFjayBjYWxsYmFj ayk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotIAlw dWJsaWMgc3RhdGljIGJvb2wgZ2V0X2JhY2tmYWNlX2N1bGxpbmdfZW5hYmxlZCAoKTsKLSAJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjgiKV0KLS0JcHVibGljIHN0YXRp YyB2b2lkIGdldF9iaXRtYXNrcyAob3V0IGludCByZWQsIG91dCBpbnQgZ3JlZW4sIG91dCBpbnQg Ymx1ZSwgb3V0IGludCBhbHBoYSk7Ci0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0rCXB1 YmxpYyBzdGF0aWMgaW50NjQgZ2V0X2Nsb2NrX3RpbWUgKENvZ2wuQ29udGV4dCBjb250ZXh0KTsK LSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0gCXB1Ymxp YyBzdGF0aWMgYm9vbCBnZXRfZGVwdGhfdGVzdF9lbmFibGVkICgpOwotIAlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIp XQotLQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ29nbC5GcmFtZWJ1ZmZlciBnZXRfZHJhd19mcmFt ZWJ1ZmZlciAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIild Ci0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEw Iiwgc2luY2UgPSAiMC44IildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5GZWF0dXJlRmxhZ3MgZ2V0 X2ZlYXR1cmVzICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi KV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTAiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLk1hdHJpeCBnZXRfbW9kZWx2aWV3X21hdHJpeCAo KTsKLSsJcHVibGljIHN0YXRpYyBDb2dsLkdyYXBoaWNzUmVzZXRTdGF0dXMgZ2V0X2dyYXBoaWNz X3Jlc2V0X3N0YXR1cyAoQ29nbC5Db250ZXh0IGNvbnRleHQpOwotIAlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLSAJcHVibGljIHN0 YXRpYyBHTGliLk9wdGlvbkdyb3VwIGdldF9vcHRpb25fZ3JvdXAgKCk7Ci0gCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlwdWJsaWMgc3RhdGljIEdMaWIuQ2Fs bGJhY2sgZ2V0X3Byb2NfYWRkcmVzcyAoc3RyaW5nIHMpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLk1hdHJpeCBn ZXRfcHJvamVjdGlvbl9tYXRyaXggKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj b2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQqIGdl dF9zb3VyY2UgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgZ2V0X3ZpZXdwb3J0IChbQ0NvZGUgKGFycmF5X2xl bmd0aCA9IGZhbHNlKV0gb3V0IGZsb2F0IHZbNF0pOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTgiKV0KLSAJcHVibGljIHN0YXRpYyBHTGliLlR5cGUgZ3R5cGVf bWF0cml4X2dldF90eXBlICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9j b2dsLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJcHVibGljIHN0YXRpYyBi b29sIGhhc19mZWF0dXJlIChDb2dsLkNvbnRleHQgY29udGV4dCwgQ29nbC5GZWF0dXJlSUQgZmVh dHVyZSk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotKwlb VmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwlwdWJsaWMgc3RhdGljIGJvb2wgaXNfY29udGV4 dCAodm9pZCogb2JqZWN0KTsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCXB1YmxpYyBzdGF0aWMgYm9v bCBpc19mcmFtZWJ1ZmZlciAodm9pZCogb2JqZWN0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi1AQCAt MTE5Myw1MyArMTAzNiw5IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJW1ZlcnNpb24gKHNpbmNlID0g IjEuMTAiKV0KLSAJcHVibGljIHN0YXRpYyBib29sIGlzX3RleHR1cmVfMmRfc2xpY2VkICh2b2lk KiBvYmplY3QpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0K LS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYi LCBzaW5jZSA9ICIxLjQiKV0KLS0JcHVibGljIHN0YXRpYyBib29sIGlzX3ZlcnRleF9idWZmZXJf aW5kaWNlcyAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjQiKV0KLSAJcHVibGlj IHN0YXRpYyBib29sIG1hdHJpeF9lcXVhbCAodm9pZCogdjEsIHZvaWQqIHYyKTsKLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIiwgc2luY2UgPSAiMS4wIildCi0t CXB1YmxpYyBzdGF0aWMgdm9pZCBvcnRobyAoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0 IGJvdHRvbSwgZmxvYXQgdG9wLCBmbG9hdCBuZWFyLCBmbG9hdCBmYXIpOwotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IHBlcnNwZWN0aXZlIChmbG9hdCBmb3Z5LCBmbG9hdCBhc3BlY3QsIGZsb2F0IHpfbmVhciwgZmxv YXQgel9mYXIpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0K LS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcG9seWdv biAoQ29nbC5UZXh0dXJlVmVydGV4IHZlcnRpY2VzLCB1aW50IG5fdmVydGljZXMsIGJvb2wgdXNl X2NvbG9yKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0t CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIild Ci0tCXB1YmxpYyBzdGF0aWMgdm9pZCBwb3BfbWF0cml4ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0JcHVibGljIHN0 YXRpYyB2b2lkIHBvcF9zb3VyY2UgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj b2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcHVzaF9tYXRyaXggKCk7Ci0t CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEu NiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcHVzaF9zb3VyY2UgKHZvaWQqIG1hdGVyaWFsKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCXB1YmxpYyBz dGF0aWMgdm9pZCByZWN0YW5nbGUgKGZsb2F0IHhfMSwgZmxvYXQgeV8xLCBmbG9hdCB4XzIsIGZs b2F0IHlfMik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQot LQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCByZWN0YW5n bGVfd2l0aF9tdWx0aXRleHR1cmVfY29vcmRzIChmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgy LCBmbG9hdCB5MiwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIGZsb2F0W10gdGV4X2Nv b3JkcywgaW50IHRleF9jb29yZHNfbGVuKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0 YXRpYyB2b2lkIHJlY3RhbmdsZV93aXRoX3RleHR1cmVfY29vcmRzIChmbG9hdCB4MSwgZmxvYXQg eTEsIGZsb2F0IHgyLCBmbG9hdCB5MiwgZmxvYXQgdHgxLCBmbG9hdCB0eTEsIGZsb2F0IHR4Miwg ZmxvYXQgdHkyKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIild Ci0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHJlY3Rh bmdsZXMgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSBmbG9hdFtdIHZlcnRzLCB1aW50 IG5fcmVjdHMpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0K LS0JW1ZlcnNpb24gKHNpbmNlID0gIjAuOC42IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCByZWN0 YW5nbGVzX3dpdGhfdGV4dHVyZV9jb29yZHMgKFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2Up XSBmbG9hdFtdIHZlcnRzLCB1aW50IG5fcmVjdHMpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHJvdGF0ZSAoZmxv YXQgYW5nbGUsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotLQlbQ0NvZGUgKGNoZWFkZXJf ZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVl LCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNjYWxl IChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2IildCi0gCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfYmFja2ZhY2Vf Y3VsbGluZ19lbmFibGVkIChib29sIHNldHRpbmcpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiKV0KLUBAIC0xMjQ3LDUzICsxMDQ2LDExIEBAIG5hbWVzcGFjZSBD b2dsIHsKLSAJcHVibGljIHN0YXRpYyB2b2lkIHNldF9kZXB0aF90ZXN0X2VuYWJsZWQgKGJvb2wg c2V0dGluZyk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQot IAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIp XQotLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X2ZvZyAoQ29nbC5Db2xvciBmb2dfY29sb3IsIENv Z2wuRm9nTW9kZSBtb2RlLCBmbG9hdCBkZW5zaXR5LCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFy KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1 YmxpYyBzdGF0aWMgdm9pZCBzZXRfbW9kZWx2aWV3X21hdHJpeCAoQ29nbC5NYXRyaXggbWF0cml4 KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1 YmxpYyBzdGF0aWMgdm9pZCBzZXRfcHJvamVjdGlvbl9tYXRyaXggKENvZ2wuTWF0cml4IG1hdHJp eCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNl ID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgc2V0X3NvdXJjZSAodm9pZCogbWF0ZXJp YWwpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5j ZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF9zb3VyY2VfY29sb3IgKENvZ2wu Q29sb3IgY29sb3IpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi KV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF9zb3VyY2VfY29s b3I0ZiAoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIx LjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF9zb3VyY2VfY29sb3I0dWIgKHVpbnQ4IHJl ZCwgdWludDggZ3JlZW4sIHVpbnQ4IGJsdWUsIHVpbnQ4IGFscGhhKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1Ymxp YyBzdGF0aWMgdm9pZCBzZXRfc291cmNlX3RleHR1cmUgKENvZ2wuVGV4dHVyZSB0ZXh0dXJlKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjgiLCBzaW5jZSA9ICIx LjIiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF92aWV3cG9ydCAoaW50IHgsIGludCB5LCBp bnQgd2lkdGgsIGludCBoZWlnaHQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNoYWRlcl9jb21waWxlIChDb2ds LkhhbmRsZSBoYW5kbGUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyBzdHJpbmcgc2hhZGVyX2dldF9pbmZvX2xvZyAoQ29n bC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjE2IildCi0gCXB1YmxpYyBzdGF0aWMgQ29nbC5TaGFkZXJUeXBlIHNoYWRlcl9nZXRfdHlw ZSAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgYm9vbCBzaGFkZXJfaXNfY29tcGlsZWQg KENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ29nbC5IYW5kbGUgc2hhZGVy X3JlZiAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2IildCi0gCXB1YmxpYyBzdGF0aWMgdm9pZCBzaGFkZXJfc291cmNlIChD b2dsLkhhbmRsZSBzaGFkZXIsIHN0cmluZyBzb3VyY2UpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNoYWRlcl91 bnJlZiAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMS4wIildCi0gCXB1YmxpYyBzdGF0aWMgQ29nbC5U ZXh0dXJlIHRleHR1cmVfbmV3X2Zyb21fYml0bWFwIChDb2dsLkJpdG1hcCBiaXRtYXAsIENvZ2wu VGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCk7Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotQEAgLTEzMDYsNTkg KzEwNjMsNiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44IildCi0gCXB1YmxpYyBz dGF0aWMgQ29nbC5UZXh0dXJlIHRleHR1cmVfbmV3X3dpdGhfc2l6ZSAodWludCB3aWR0aCwgdWlu dCBoZWlnaHQsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVy bmFsX2Zvcm1hdCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MCIsIHNpbmNlID0gIjEuNCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdHJhbnNmb3JtIChDb2ds Lk1hdHJpeCBtYXRyaXgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZSAoZmxvYXQgeCwgZmxvYXQg eSwgZmxvYXQgeik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZlcl9hZGQgKENvZ2wuSGFuZGxl IGhhbmRsZSwgc3RyaW5nIGF0dHJpYnV0ZV9uYW1lLCB1aW50OCBuX2NvbXBvbmVudHMsIENvZ2wu QXR0cmlidXRlVHlwZSB0eXBlLCBib29sIG5vcm1hbGl6ZWQsIHVpbnQxNiBzdHJpZGUsIHZvaWQq IHBvaW50ZXIpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0K LS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYi KV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHZlcnRleF9idWZmZXJfZGVsZXRlIChDb2dsLkhhbmRs ZSBoYW5kbGUsIHN0cmluZyBhdHRyaWJ1dGVfbmFtZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxl bmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRl cHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1 ZmZlcl9kaXNhYmxlIChDb2dsLkhhbmRsZSBoYW5kbGUsIHN0cmluZyBhdHRyaWJ1dGVfbmFtZSk7 Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lv biAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJs aWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZlcl9kcmF3IChDb2dsLkhhbmRsZSBoYW5kbGUsIENv Z2wuVmVydGljZXNNb2RlIG1vZGUsIGludCBmaXJzdCwgaW50IGNvdW50KTsKLS0JW0NDb2RlIChj aGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9p ZCB2ZXJ0ZXhfYnVmZmVyX2RyYXdfZWxlbWVudHMgKENvZ2wuSGFuZGxlIGhhbmRsZSwgQ29nbC5W ZXJ0aWNlc01vZGUgbW9kZSwgQ29nbC5IYW5kbGUgaW5kaWNlcywgaW50IG1pbl9pbmRleCwgaW50 IG1heF9pbmRleCwgaW50IGluZGljZXNfb2Zmc2V0LCBpbnQgY291bnQpOwotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IHZlcnRleF9idWZmZXJfZW5hYmxlIChDb2dsLkhhbmRsZSBoYW5kbGUsIHN0cmluZyBhdHRyaWJ1 dGVfbmFtZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQot LQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIp XQotLQlwdWJsaWMgc3RhdGljIHVpbnQgdmVydGV4X2J1ZmZlcl9nZXRfbl92ZXJ0aWNlcyAoQ29n bC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9 ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDb2dsLkhhbmRsZSB2ZXJ0ZXhfYnVm ZmVyX2luZGljZXNfZ2V0X2Zvcl9xdWFkcyAodWludCBuX2luZGljZXMpOwotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyBDb2ds LkluZGljZXNUeXBlIHZlcnRleF9idWZmZXJfaW5kaWNlc19nZXRfdHlwZSAoQ29nbC5IYW5kbGUg aW5kaWNlcyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQot LQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIp XQotLQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ29nbC5IYW5kbGUgdmVydGV4X2J1ZmZlcl9uZXcg KHVpbnQgbl92ZXJ0aWNlcyk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4yIildCi0tCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDb2dsLkhhbmRsZSB2ZXJ0ZXhfYnVm ZmVyX3JlZiAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJ0ZXhfYnVmZmVy X3N1Ym1pdCAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVj YXRlZF9zaW5jZSA9ICIxLjIiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHZlcnRleF9idWZmZXJf dW5yZWYgKENvZ2wuSGFuZGxlIGhhbmRsZSk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS44Iiwgc2luY2UgPSAiMC44LjIiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IHZpZXdwb3J0ICh1aW50IHdpZHRoLCB1aW50IGhlaWdodCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlwdWJsaWMgc3RhdGljIHVpbnQzMiB4MTFfb25z Y3JlZW5fZ2V0X3Zpc3VhbF94aWQgKENvZ2wuT25zY3JlZW4gb25zY3JlZW4pOwotLQlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0g IjEuMTAiKV0KLSAJcHVibGljIHN0YXRpYyB1aW50MzIgeDExX29uc2NyZWVuX2dldF93aW5kb3df eGlkIChDb2dsLk9uc2NyZWVuIG9uc2NyZWVuKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1l ID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JcHVibGlj IHN0YXRpYyB2b2lkIHgxMV9vbnNjcmVlbl9zZXRfZm9yZWlnbl93aW5kb3dfeGlkIChDb2dsLk9u c2NyZWVuIG9uc2NyZWVuLCB1aW50MzIgeGlkLCBbQ0NvZGUgKHNjb3BlID0gImFzeW5jIildIENv Z2wuT25zY3JlZW5YMTFNYXNrQ2FsbGJhY2sgdXBkYXRlKTsKLSB9Ci1kaWZmIC0tZ2l0IHZhcGkv bXV0dGVyLWNvZ2wtNC1jdXN0b20udmFsYSB2YXBpL211dHRlci1jb2dsLTctY3VzdG9tLnZhbGEK LXNpbWlsYXJpdHkgaW5kZXggODElCi1yZW5hbWUgZnJvbSB2YXBpL211dHRlci1jb2dsLTQtY3Vz dG9tLnZhbGEKLXJlbmFtZSB0byB2YXBpL211dHRlci1jb2dsLTctY3VzdG9tLnZhbGEKLWluZGV4 IDI1NTE4ODVhLi5jNGQ0YjkzYSAxMDA2NDQKLS0tLSB2YXBpL211dHRlci1jb2dsLTQtY3VzdG9t LnZhbGEKLSsrKyB2YXBpL211dHRlci1jb2dsLTctY3VzdG9tLnZhbGEKLUBAIC0xLDEwICsxLDQg QEAKLSBuYW1lc3BhY2UgQ29nbCB7Ci0tCVtDb21wYWN0XQotLQlbQ0NvZGUgKGNuYW1lID0gIkNv Z2xIYW5kbGUiKV0KLS0JcHVibGljIGNsYXNzIEJpdG1hcDogSGFuZGxlIHsKLS0JCXB1YmxpYyBz dGF0aWMgQml0bWFwIG5ld19mcm9tX2ZpbGUgKHN0cmluZyBmaWxlbmFtZSkgdGhyb3dzIEdMaWIu RXJyb3I7Ci0tCX0KLS0KLSAJW0NvbXBhY3RdCi0gCVtDQ29kZSAoY25hbWUgPSAiQ29nbEhhbmRs ZSIpXQotIAlwdWJsaWMgY2xhc3MgQnVmZmVyOiBIYW5kbGUgewotQEAgLTQyLDcgKzM2LDcgQEAg bmFtZXNwYWNlIENvZ2wgewotIAkJcHVibGljIGJvb2wgaXNfdmVydGV4X2J1ZmZlciAoKTsKLSAJ fQotIAotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjb3B5X2Z1 bmN0aW9uID0gImNvZ2xfcGF0aF9jb3B5IildIAotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUg PSAiY29nbC9jb2dsLmgiLCBjb3B5X2Z1bmN0aW9uID0gImNvZ2xfcGF0aF9jb3B5IildCi0gCVtD b21wYWN0XQotIAlwdWJsaWMgY2xhc3MgUGF0aCB7Ci0gCQlwdWJsaWMgc3RhdGljIHZvaWQgQG5l dyAoKTsKLUBAIC04MiwxOCArNzYsNiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlwdWJsaWMgdm9p ZCBzb3VyY2UgKHN0cmluZyBzb3VyY2UpOwotIAl9Ci0gCi0tCVtDb21wYWN0XQotLQlbQ0NvZGUg KGNuYW1lID0gIkNvZ2xIYW5kbGUiLCByZWZfZnVuY3Rpb24gPSAiY29nbF90ZXh0dXJlX3JlZiIs IHVucmVmX2Z1bmN0aW9uID0gImNvZ2xfdGV4dHVyZV91bnJlZiIpXQotLQlwdWJsaWMgY2xhc3Mg VGV4dHVyZTogSGFuZGxlIHsKLS0JCXB1YmxpYyBDb2dsLlBpeGVsRm9ybWF0IGdldF9mb3JtYXQg KCk7Ci0tCQlwdWJsaWMgdWludCBnZXRfcm93c3RyaWRlICgpOwotLQkJcHVibGljIFRleHR1cmUu ZnJvbV9iaXRtYXAgKENvZ2wuQml0bWFwIGJtcF9oYW5kbGUsIENvZ2wuVGV4dHVyZUZsYWdzIGZs YWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCk7Ci0tCQlwdWJsaWMgVGV4dHVy ZS5mcm9tX2RhdGEgKHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0LCBDb2dsLlRleHR1cmVGbGFncyBm bGFncywgQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQsIENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJuYWxf Zm9ybWF0LCB1aW50IHJvd3N0cmlkZSwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIHVj aGFyW10gZGF0YSk7Ci0tCQlwdWJsaWMgVGV4dHVyZS5mcm9tX2ZpbGUgKHN0cmluZyBmaWxlbmFt ZSwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJuYWxfZm9y bWF0KSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCXB1YmxpYyBUZXh0dXJlLmZyb21fc3ViX3RleHR1 cmUgKENvZ2wuVGV4dHVyZSBmdWxsX3RleHR1cmUsIGludCBzdWJfeCwgaW50IHN1Yl95LCBpbnQg c3ViX3dpZHRoLCBpbnQgc3ViX2hlaWdodCk7Ci0tCQlwdWJsaWMgVGV4dHVyZS53aXRoX3NpemUg KHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0LCBDb2dsLlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5Q aXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQpOwotLQl9Ci0tCi0gCVtDb21wYWN0XQotIAlbQ0Nv ZGUgKGNuYW1lID0gIkNvZ2xIYW5kbGUiLCByZWZfZnVuY3Rpb24gPSAiY29nbF92ZXJ0ZXhfYnVm ZmVyX3JlZiIsIHVucmVmX2Z1bmN0aW9uID0gImNvZ2xfdmVydGV4X2J1ZmZlcl91bnJlZiIpXQot IAlwdWJsaWMgY2xhc3MgVmVydGV4QnVmZmVyOiBIYW5kbGUgewotZGlmZiAtLWdpdCB2YXBpL211 dHRlci1jb2dsLTUuZGVwcyB2YXBpL211dHRlci1jb2dsLTcuZGVwcwotc2ltaWxhcml0eSBpbmRl eCAxMDAlCi1yZW5hbWUgZnJvbSB2YXBpL211dHRlci1jb2dsLTUuZGVwcwotcmVuYW1lIHRvIHZh cGkvbXV0dGVyLWNvZ2wtNy5kZXBzCi1kaWZmIC0tZ2l0IHZhcGkvbXV0dGVyLWNvZ2wtNC52YXBp IHZhcGkvbXV0dGVyLWNvZ2wtNy52YXBpCi1zaW1pbGFyaXR5IGluZGV4IDU5JQotcmVuYW1lIGZy b20gdmFwaS9tdXR0ZXItY29nbC00LnZhcGkKLXJlbmFtZSB0byB2YXBpL211dHRlci1jb2dsLTcu dmFwaQotaW5kZXggNWRlOGY0NDcuLjYyMGMyMzE3IDEwMDY0NAotLS0tIHZhcGkvbXV0dGVyLWNv Z2wtNC52YXBpCi0rKysgdmFwaS9tdXR0ZXItY29nbC03LnZhcGkKLUBAIC0xLDEyICsxLDEzIEBA Ci0tLyogbXV0dGVyLWNvZ2wtNC52YXBpIGdlbmVyYXRlZCBieSB2YXBpZ2VuLCBkbyBub3QgbW9k aWZ5LiAqLwotKy8qIG11dHRlci1jb2dsLTcudmFwaSBnZW5lcmF0ZWQgYnkgdmFwaWdlbiwgZG8g bm90IG1vZGlmeS4gKi8KLSAKLS1bQ0NvZGUgKGNwcmVmaXggPSAiQ29nbCIsIGdpcl9uYW1lc3Bh Y2UgPSAiQ29nbCIsIGdpcl92ZXJzaW9uID0gIjQiLCBsb3dlcl9jYXNlX2NwcmVmaXggPSAiY29n bF8iKV0KLStbQ0NvZGUgKGNwcmVmaXggPSAiQ29nbCIsIGdpcl9uYW1lc3BhY2UgPSAiQ29nbCIs IGdpcl92ZXJzaW9uID0gIjciLCBsb3dlcl9jYXNlX2NwcmVmaXggPSAiY29nbF8iKV0KLSBuYW1l c3BhY2UgQ29nbCB7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIs IGNuYW1lID0gIkNvZ2xIYW5kbGUiLCB0eXBlX2lkID0gImNvZ2xfYml0bWFwX2dldF9ndHlwZSAo KSIpXQotLQlbQ29tcGFjdF0KLS0JcHVibGljIGNsYXNzIEJpdG1hcCA6IENvZ2wuSGFuZGxlIHsK LSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJj b2dsX2JpdG1hcF9nZXRfZ3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNzIEJpdG1hcCA6IENvZ2wu T2JqZWN0IHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSsJ CXByb3RlY3RlZCBCaXRtYXAgKCk7Ci0gCQlwdWJsaWMgc3RhdGljIHVpbnQzMiBlcnJvcl9xdWFy ayAoKTsKLS0JCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlLCB0eXBlID0g IkNvZ2xCaXRtYXAqIildCi0rCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxz ZSldCi0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0gCQlwdWJsaWMgQml0bWFwLmZyb21f ZmlsZSAoc3RyaW5nIGZpbGVuYW1lKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCVtWZXJzaW9uIChz aW5jZSA9ICIxLjEwIildCi1AQCAtMTYsMTAgKzE3LDkgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyBpbnQgZ2V0X3Jvd3N0cmlkZSAo KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBzdGF0aWMgQ29nbC5C b29sIGdldF9zaXplX2Zyb21fZmlsZSAoc3RyaW5nIGZpbGVuYW1lLCBvdXQgaW50IHdpZHRoLCBv dXQgaW50IGhlaWdodCk7Ci0rCQlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X3NpemVfZnJvbV9maWxl IChzdHJpbmcgZmlsZW5hbWUsIG91dCBpbnQgd2lkdGgsIG91dCBpbnQgaGVpZ2h0KTsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgaW50IGdldF93aWR0aCAoKTsKLS0J CXB1YmxpYyBzdGF0aWMgQ29nbC5CaXRtYXAgbmV3X2Zyb21fZmlsZSAoc3RyaW5nIGZpbGVuYW1l KSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAi Y29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDb2dsSGFuZGxlIildCi0gCVtDb21wYWN0XQotQEAgLTI4 LDE1ICsyOCwyOCBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlwdWJsaWMgYm9vbCBzZXRfZGF0YSAo c2l6ZV90IG9mZnNldCwgW0NDb2RlIChhcnJheV9sZW5ndGhfdHlwZSA9ICJzaXplX3QiKV0gdWlu dDhbXSBkYXRhKTsKLSAJCXB1YmxpYyB2b2lkIHVubWFwICgpOwotIAl9Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotLQlb Q29tcGFjdF0KLS0JcHVibGljIGNsYXNzIEV1bGVyIHsKLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJjb2dsX2NvbnRleHRfZ2V0X2d0eXBlICgp IildCi0rCXB1YmxpYyBjbGFzcyBDb250ZXh0IDogQ29nbC5PYmplY3QgewotKwkJW0NDb2RlICho YXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotKwkJcHJvdGVjdGVkIENvbnRleHQgKCk7 Ci0rCQlwdWJsaWMgYm9vbCBpc19oYXJkd2FyZV9hY2NlbGVyYXRlZCAoKTsKLSAJfQotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdf Ym94ZWRfY29weSIsIGZyZWVfZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJj b2dsX2ZyYW1lX2Nsb3N1cmVfZ2V0X2d0eXBlICgpIildCi0gCVtDb21wYWN0XQotIAlbVmVyc2lv biAoc2luY2UgPSAiMS4xNCIpXQotIAlwdWJsaWMgY2xhc3MgRnJhbWVDbG9zdXJlIHsKLSAJfQot KwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0eXBlX2lkID0gImNv Z2xfZnJhbWVfaW5mb19nZXRfZ3R5cGUgKCkiKV0KLSsJcHVibGljIGNsYXNzIEZyYW1lSW5mbyA6 IENvZ2wuT2JqZWN0IHsKLSsJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNl KV0KLSsJCXByb3RlY3RlZCBGcmFtZUluZm8gKCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4x NCIpXQotKwkJcHVibGljIGludDY0IGdldF9mcmFtZV9jb3VudGVyICgpOwotKwkJW1ZlcnNpb24g KHNpbmNlID0gIjEuMTQiKV0KLSsJCXB1YmxpYyBpbnQ2NCBnZXRfcHJlc2VudGF0aW9uX3RpbWUg KCk7Ci0rCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotKwkJcHVibGljIGZsb2F0IGdldF9y ZWZyZXNoX3JhdGUgKCk7Ci0rCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIiwgcmVmX2Z1bmN0aW9uID0gImNvZ2xfaGFuZGxlX3JlZiIsIHVucmVmX2Z1bmN0aW9u ID0gImNvZ2xfaGFuZGxlX3VucmVmIildCi0gCVtDb21wYWN0XQotIAlwdWJsaWMgY2xhc3MgSGFu ZGxlIHsKLUBAIC02NSw2NSArNzgsMjAgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJW0NDb2RlICho YXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLSAJCXB1YmxpYyBNYXRlcmlhbCAo KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjE2Iiwgc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbCBjb3B5ICgpOwot LQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYi LCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB2b2lkIGZvcmVhY2hfbGF5ZXIgKENvZ2wuTWF0 ZXJpYWxMYXllckNhbGxiYWNrIGNhbGxiYWNrKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJs aWMgdm9pZCBnZXRfYW1iaWVudCAoQ29nbC5Db2xvciBhbWJpZW50KTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4w IildCi0tCQlwdWJsaWMgQ29nbC5Db2xvciBnZXRfY29sb3IgKCk7Ci0tCQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIp XQotLQkJcHVibGljIHZvaWQgZ2V0X2RpZmZ1c2UgKENvZ2wuQ29sb3IgZGlmZnVzZSk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNp bmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X2VtaXNzaW9uIChDb2dsLkNvbG9yIGVt aXNzaW9uKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIGdldF9sYXll cl9wb2ludF9zcHJpdGVfY29vcmRzX2VuYWJsZWQgKGludCBsYXllcl9pbmRleCk7Ci0tCQlbVmVy c2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNl ID0gIjEuNiIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBnZXRfbGF5ZXJfd3Jh cF9tb2RlX3AgKGludCBsYXllcl9pbmRleCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGlj IENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBnZXRfbGF5ZXJfd3JhcF9tb2RlX3MgKGludCBsYXllcl9p bmRleCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xNiIsIHNpbmNlID0gIjEuNiIpXQotLQkJcHVibGljIENvZ2wuTWF0ZXJpYWxXcmFwTW9k ZSBnZXRfbGF5ZXJfd3JhcF9tb2RlX3QgKGludCBsYXllcl9pbmRleCk7Ci0tCQlwdWJsaWMgdW5v d25lZCBHTGliLkxpc3Q8Q29nbC5NYXRlcmlhbExheWVyPiBnZXRfbGF5ZXJzICgpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5j ZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBpbnQgZ2V0X25fbGF5ZXJzICgpOwotLQkJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIx LjQiKV0KLS0JCXB1YmxpYyBmbG9hdCBnZXRfcG9pbnRfc2l6ZSAoKTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4w IildCi0tCQlwdWJsaWMgZmxvYXQgZ2V0X3NoaW5pbmVzcyAoKTsKLS0JCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIild Ci0tCQlwdWJsaWMgdm9pZCBnZXRfc3BlY3VsYXIgKENvZ2wuQ29sb3Igc3BlY3VsYXIpOwotLQkJ W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBz aW5jZSA9ICIxLjQiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENvZ2wuSGFuZGxlIGdldF91c2VyX3By b2dyYW0gKCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4yIiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgc3RhdGljIHVub3duZWQgQ29n bC5IYW5kbGUgQHJlZiAoQ29nbC5IYW5kbGUgbWF0ZXJpYWwpOwotLQkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JCXB1YmxpYyB2b2lk IHJlbW92ZV9sYXllciAoaW50IGxheWVyX2luZGV4KTsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0gCQlw dWJsaWMgdm9pZCBzZXRfYWxwaGFfdGVzdF9mdW5jdGlvbiAoQ29nbC5NYXRlcmlhbEFscGhhRnVu YyBhbHBoYV9mdW5jLCBmbG9hdCBhbHBoYV9yZWZlcmVuY2UpOwotIAkJW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0K LS0JCXB1YmxpYyB2b2lkIHNldF9hbWJpZW50IChDb2dsLkNvbG9yIGFtYmllbnQpOwotLQkJW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5j ZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9hbWJpZW50X2FuZF9kaWZmdXNlIChDb2ds LkNvbG9yIGNvbG9yKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIHNl dF9ibGVuZCAoc3RyaW5nIGJsZW5kX3N0cmluZykgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJs aWMgYm9vbCBzZXRfYmxlbmQgKHN0cmluZyBibGVuZF9zdHJpbmcpIHRocm93cyBHTGliLkVycm9y OwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTYiLCBzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9ibGVuZF9jb25zdGFudCAo Q29nbC5Db2xvciBjb25zdGFudF9jb2xvcik7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotIAkJcHVibGlj IHZvaWQgc2V0X2NvbG9yIChDb2dsLkNvbG9yIGNvbG9yKTsKLSAJCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0t CQlwdWJsaWMgdm9pZCBzZXRfY29sb3I0ZiAoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQg Ymx1ZSwgZmxvYXQgYWxwaGEpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNl dF9jb2xvcjR1YiAodWludDggcmVkLCB1aW50OCBncmVlbiwgdWludDggYmx1ZSwgdWludDggYWxw aGEpOwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kaWZmdXNlIChDb2ds LkNvbG9yIGRpZmZ1c2UpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNh dGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9l bWlzc2lvbiAoQ29nbC5Db2xvciBlbWlzc2lvbik7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuMCIpXQotIAkJcHVi bGljIHZvaWQgc2V0X2xheWVyIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuSGFuZGxlIHRleHR1cmUp OwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEu MTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgc2V0X2xheWVyX2NvbWJp bmUgKGludCBsYXllcl9pbmRleCwgc3RyaW5nIGJsZW5kX3N0cmluZykgdGhyb3dzIEdMaWIuRXJy b3I7Ci0rCQlwdWJsaWMgYm9vbCBzZXRfbGF5ZXJfY29tYmluZSAoaW50IGxheWVyX2luZGV4LCBz dHJpbmcgYmxlbmRfc3RyaW5nKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIild Ci0gCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfY29tYmluZV9jb25zdGFudCAoaW50IGxheWVyX2lu ZGV4LCBDb2dsLkNvbG9yIGNvbnN0YW50KTsKLSAJCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi1AQCAtMTMxLDQzICs5OSwxNSBAQCBuYW1l c3BhY2UgQ29nbCB7Ci0gCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRf c2luY2UgPSAiMS4xNiIpXQotIAkJcHVibGljIHZvaWQgc2V0X2xheWVyX21hdHJpeCAoaW50IGxh eWVyX2luZGV4LCBDb2dsLk1hdHJpeCBtYXRyaXgpOwotIAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1 YmxpYyBDb2dsLkJvb2wgc2V0X2xheWVyX3BvaW50X3Nwcml0ZV9jb29yZHNfZW5hYmxlZCAoaW50 IGxheWVyX2luZGV4LCBDb2dsLkJvb2wgZW5hYmxlKSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2lu Y2UgPSAiMS40IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlIChpbnQgbGF5 ZXJfaW5kZXgsIENvZ2wuTWF0ZXJpYWxXcmFwTW9kZSBtb2RlKTsKLS0JCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40Iild Ci0tCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlX3AgKGludCBsYXllcl9pbmRleCwg Q29nbC5NYXRlcmlhbFdyYXBNb2RlIG1vZGUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JCXB1Ymxp YyB2b2lkIHNldF9sYXllcl93cmFwX21vZGVfcyAoaW50IGxheWVyX2luZGV4LCBDb2dsLk1hdGVy aWFsV3JhcE1vZGUgbW9kZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQotLQkJcHVibGljIHZvaWQgc2V0 X2xheWVyX3dyYXBfbW9kZV90IChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuTWF0ZXJpYWxXcmFwTW9k ZSBtb2RlKTsKLSsJCXB1YmxpYyBib29sIHNldF9sYXllcl9wb2ludF9zcHJpdGVfY29vcmRzX2Vu YWJsZWQgKGludCBsYXllcl9pbmRleCwgYm9vbCBlbmFibGUpIHRocm93cyBHTGliLkVycm9yOwot IAkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYi LCBzaW5jZSA9ICIxLjQiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9wb2ludF9zaXplIChmbG9hdCBw b2ludF9zaXplKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfc2hpbmlu ZXNzIChmbG9hdCBzaGluaW5lc3MpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lk IHNldF9zcGVjdWxhciAoQ29nbC5Db2xvciBzcGVjdWxhcik7Ci0gCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIpXQot IAkJcHVibGljIHZvaWQgc2V0X3VzZXJfcHJvZ3JhbSAoQ29nbC5IYW5kbGUgcHJvZ3JhbSk7Ci0t CQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4yIiwg c2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMgc3RhdGljIHZvaWQgdW5yZWYgKENvZ2wuSGFuZGxl IG1hdGVyaWFsKTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSAJW0NvbXBhY3RdCi0gCXB1YmxpYyBjbGFzcyBN YXRlcmlhbExheWVyIHsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbEZpbHRlciBnZXRfbWFn X2ZpbHRlciAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbEZpbHRlciBnZXRfbWluX2Zp bHRlciAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5j ZSA9ICIxLjE2IildCi0tCQlwdWJsaWMgdW5vd25lZCBDb2dsLkhhbmRsZSBnZXRfdGV4dHVyZSAo KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjE2IildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbExheWVyVHlwZSBnZXRfdHlwZSAoKTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwg c2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbFdyYXBNb2RlIGdldF93cmFw X21vZGVfcCAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMgQ29nbC5NYXRlcmlhbFdy YXBNb2RlIGdldF93cmFwX21vZGVfcyAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS40IildCi0tCQlwdWJsaWMg Q29nbC5NYXRlcmlhbFdyYXBNb2RlIGdldF93cmFwX21vZGVfdCAoKTsKLSAJfQotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0eXBlX2lkID0gImNvZ2xfb2JqZWN0 X2dldF9ndHlwZSAoKSIpXQotIAlwdWJsaWMgYWJzdHJhY3QgY2xhc3MgT2JqZWN0IHsKLUBAIC0x NzgsMTMgKzExOCw5IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJcHVibGljIGNsYXNzIE9mZnNjcmVl biA6IENvZ2wuT2JqZWN0LCBDb2dsLkZyYW1lYnVmZmVyIHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0 cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCXByb3RlY3RlZCBPZmZzY3JlZW4gKCk7Ci0tCQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4yIildCi0t CQlwdWJsaWMgc3RhdGljIHZvaWQqIEByZWYgKHZvaWQqIG9mZnNjcmVlbik7Ci0gCQlbQ0NvZGUg KGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotIAkJcHVibGljIE9mZnNjcmVl bi50b190ZXh0dXJlIChDb2dsLlRleHR1cmUgdGV4dHVyZSk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4yIildCi0tCQlwdWJsaWMgc3RhdGlj IHZvaWQgdW5yZWYgKHZvaWQqIG9mZnNjcmVlbik7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3Rf ZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwdWJsaWMgT2Zmc2NyZWVuLndpdGhfdGV4dHVyZSAoQ29n bC5UZXh0dXJlIHRleHR1cmUpOwotIAl9Ci1AQCAtMTk0LDE3ICsxMzAsMTYgQEAgbmFtZXNwYWNl IENvZ2wgewotIAkJcHJvdGVjdGVkIE9uc2NyZWVuICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuMTYiKV0KLSAJCXB1YmxpYyBDb2dsLk9uc2NyZWVuRGlydHlDbG9zdXJlIGFkZF9kaXJ0eV9j YWxsYmFjayAoW0NDb2RlIChkZWxlZ2F0ZV90YXJnZXRfcG9zID0gMS41KV0gQ29nbC5PbnNjcmVl bkRpcnR5Q2FsbGJhY2sgY2FsbGJhY2ssIENvZ2wuVXNlckRhdGFEZXN0cm95Q2FsbGJhY2s/IGRl c3Ryb3kpOwotKwkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLSsJCXB1YmxpYyBDb2dsLkZy YW1lQ2xvc3VyZSBhZGRfZnJhbWVfY2FsbGJhY2sgKFtDQ29kZSAoZGVsZWdhdGVfdGFyZ2V0X3Bv cyA9IDEuNSldIENvZ2wuRnJhbWVDYWxsYmFjayBjYWxsYmFjaywgQ29nbC5Vc2VyRGF0YURlc3Ry b3lDYWxsYmFjaz8gZGVzdHJveSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlw dWJsaWMgQ29nbC5PbnNjcmVlblJlc2l6ZUNsb3N1cmUgYWRkX3Jlc2l6ZV9jYWxsYmFjayAoW0ND b2RlIChkZWxlZ2F0ZV90YXJnZXRfcG9zID0gMS41KV0gQ29nbC5PbnNjcmVlblJlc2l6ZUNhbGxi YWNrIGNhbGxiYWNrLCBDb2dsLlVzZXJEYXRhRGVzdHJveUNhbGxiYWNrPyBkZXN0cm95KTsKLS0J CVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE0Iiwg c2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHVpbnQgYWRkX3N3YXBfYnVmZmVyc19jYWxsYmFj ayAoQ29nbC5Td2FwQnVmZmVyc05vdGlmeSBjYWxsYmFjayk7Ci0tCQlwdWJsaWMgc3RhdGljIHZv aWQgY2x1dHRlcl9iYWNrZW5kX3NldF9zaXplX0NMVVRURVIgKGludCB3aWR0aCwgaW50IGhlaWdo dCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotIAkJcHVibGljIGludCBnZXRfYnVm ZmVyX2FnZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0IildCi0gCQlwdWJsaWMgaW50 NjQgZ2V0X2ZyYW1lX2NvdW50ZXIgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0t CQlwdWJsaWMgQ29nbC5Cb29sIGdldF9yZXNpemFibGUgKCk7Ci0rCQlwdWJsaWMgYm9vbCBnZXRf cmVzaXphYmxlICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZv aWQgaGlkZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi1AQCAtMjEzLDE4ICsx NDgsMTYgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJcHVibGljIHZvaWQgcmVtb3ZlX2ZyYW1lX2Nh bGxiYWNrIChDb2dsLkZyYW1lQ2xvc3VyZSBjbG9zdXJlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHJlbW92ZV9yZXNpemVfY2FsbGJhY2sgKENvZ2wuT25z Y3JlZW5SZXNpemVDbG9zdXJlIGNsb3N1cmUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTQiLCBzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJs aWMgdm9pZCByZW1vdmVfc3dhcF9idWZmZXJzX2NhbGxiYWNrICh1aW50IGlkKTsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9yZXNpemFibGUgKENvZ2wu Qm9vbCByZXNpemFibGUpOwotKwkJcHVibGljIHZvaWQgc2V0X3Jlc2l6YWJsZSAoYm9vbCByZXNp emFibGUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQgc2hv dyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBzd2Fw X2J1ZmZlcnMgKCk7Ci0rCQlwdWJsaWMgdm9pZCBzd2FwX2J1ZmZlcnMgKENvZ2wuRnJhbWVJbmZv IGZyYW1lX2luZm8pOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTYiKV0KLS0JCXB1YmxpYyB2 b2lkIHN3YXBfYnVmZmVyc193aXRoX2RhbWFnZSAoaW50IHJlY3RhbmdsZXMsIGludCBuX3JlY3Rh bmdsZXMpOwotKwkJcHVibGljIHZvaWQgc3dhcF9idWZmZXJzX3dpdGhfZGFtYWdlIChpbnQgcmVj dGFuZ2xlcywgaW50IG5fcmVjdGFuZ2xlcywgQ29nbC5GcmFtZUluZm8gaW5mbyk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgc3dhcF9yZWdpb24gKGludCBy ZWN0YW5nbGVzLCBpbnQgbl9yZWN0YW5nbGVzKTsKLSsJCXB1YmxpYyB2b2lkIHN3YXBfcmVnaW9u IChpbnQgcmVjdGFuZ2xlcywgaW50IG5fcmVjdGFuZ2xlcywgQ29nbC5GcmFtZUluZm8gaW5mbyk7 Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY29weV9m dW5jdGlvbiA9ICJnX2JveGVkX2NvcHkiLCBmcmVlX2Z1bmN0aW9uID0gImdfYm94ZWRfZnJlZSIs IHR5cGVfaWQgPSAiY29nbF9vbnNjcmVlbl9kaXJ0eV9jbG9zdXJlX2dldF9ndHlwZSAoKSIpXQot IAlbQ29tcGFjdF0KLUBAIC0yNDQsNyArMTc3LDggQEAgbmFtZXNwYWNlIENvZ2wgewotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCB0eXBlX2lkID0gImNvZ2xfcGlw ZWxpbmVfZ2V0X2d0eXBlICgpIildCi0gCXB1YmxpYyBjbGFzcyBQaXBlbGluZSA6IENvZ2wuT2Jq ZWN0IHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLS0JCXBy b3RlY3RlZCBQaXBlbGluZSAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSsJCXB1 YmxpYyBQaXBlbGluZSAoQ29nbC5Db250ZXh0IGNvbnRleHQpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjIuMCIpXQotIAkJcHVibGljIENvZ2wuUGlwZWxpbmUgY29weSAoKTsKLSAJCVtWZXJzaW9u IChzaW5jZSA9ICIyLjAiKV0KLUBAIC0yNTQsNDQgKzE4OCwzMCBAQCBuYW1lc3BhY2UgQ29nbCB7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgZmxvYXQgZ2V0X2FscGhh X3Rlc3RfcmVmZXJlbmNlICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVi bGljIHZvaWQgZ2V0X2FtYmllbnQgKENvZ2wuQ29sb3IgYW1iaWVudCk7Ci0tCQlbVmVyc2lvbiAo c2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgQ29nbC5Db2xvciBnZXRfY29sb3IgKCk7Ci0tCQlb VmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0tCQlwdWJsaWMgQ29nbC5Db2xvck1hc2sgZ2V0X2Nv bG9yX21hc2sgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgQ29n bC5QaXBlbGluZUN1bGxGYWNlTW9kZSBnZXRfY3VsbF9mYWNlX21vZGUgKCk7Ci0gCQlbVmVyc2lv biAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBnZXRfZGlmZnVzZSAoQ29nbC5Db2xv ciBkaWZmdXNlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lk IGdldF9lbWlzc2lvbiAoQ29nbC5Db2xvciBlbWlzc2lvbik7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMi4wIildCi0gCQlwdWJsaWMgQ29nbC5XaW5kaW5nIGdldF9mcm9udF9mYWNlX3dpbmRpbmcg KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIENvZ2wuUGlwZWxp bmVGaWx0ZXIgZ2V0X2xheWVyX21hZ19maWx0ZXIgKGludCBsYXllcl9pbmRleCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIENvZ2wuUGlwZWxpbmVGaWx0ZXIgZ2V0 X2xheWVyX21pbl9maWx0ZXIgKGludCBsYXllcl9pbmRleCk7Ci0gCQlbVmVyc2lvbiAoc2luY2Ug PSAiMi4wIildCi0tCQlwdWJsaWMgQ29nbC5Cb29sIGdldF9sYXllcl9wb2ludF9zcHJpdGVfY29v cmRzX2VuYWJsZWQgKGludCBsYXllcl9pbmRleCk7Ci0rCQlwdWJsaWMgYm9vbCBnZXRfbGF5ZXJf cG9pbnRfc3ByaXRlX2Nvb3Jkc19lbmFibGVkIChpbnQgbGF5ZXJfaW5kZXgpOwotIAkJW1ZlcnNp b24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB1bm93bmVkIENvZ2wuVGV4dHVyZSBnZXRf bGF5ZXJfdGV4dHVyZSAoaW50IGxheWVyX2luZGV4KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIx LjYiKV0KLS0JCXB1YmxpYyBDb2dsLlBpcGVsaW5lV3JhcE1vZGUgZ2V0X2xheWVyX3dyYXBfbW9k ZV9wIChpbnQgbGF5ZXJfaW5kZXgpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuNiIpXQotIAkJ cHVibGljIENvZ2wuUGlwZWxpbmVXcmFwTW9kZSBnZXRfbGF5ZXJfd3JhcF9tb2RlX3MgKGludCBs YXllcl9pbmRleCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS42IildCi0gCQlwdWJsaWMgQ29n bC5QaXBlbGluZVdyYXBNb2RlIGdldF9sYXllcl93cmFwX21vZGVfdCAoaW50IGxheWVyX2luZGV4 KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyBpbnQgZ2V0X25fbGF5 ZXJzICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIENvZ2wuQm9v bCBnZXRfcGVyX3ZlcnRleF9wb2ludF9zaXplICgpOwotKwkJcHVibGljIGJvb2wgZ2V0X3Blcl92 ZXJ0ZXhfcG9pbnRfc2l6ZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1 YmxpYyBmbG9hdCBnZXRfcG9pbnRfc2l6ZSAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAi KV0KLS0JCXB1YmxpYyBmbG9hdCBnZXRfc2hpbmluZXNzICgpOwotLQkJW1ZlcnNpb24gKHNpbmNl ID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgZ2V0X3NwZWN1bGFyIChDb2dsLkNvbG9yIHNwZWN1 bGFyKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyBpbnQgZ2V0X3Vu aWZvcm1fbG9jYXRpb24gKHN0cmluZyB1bmlmb3JtX25hbWUpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjIuMCIpXQotIAkJcHVibGljIHVub3duZWQgQ29nbC5IYW5kbGUgZ2V0X3VzZXJfcHJvZ3Jh bSAoKTsKLUBAIC0zMDAsMTEgKzIyMCw3IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCVtWZXJzaW9u IChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9hbHBoYV90ZXN0X2Z1bmN0aW9u IChDb2dsLlBpcGVsaW5lQWxwaGFGdW5jIGFscGhhX2Z1bmMsIGZsb2F0IGFscGhhX3JlZmVyZW5j ZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfYW1i aWVudCAoQ29nbC5Db2xvciBhbWJpZW50KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0K LS0JCXB1YmxpYyB2b2lkIHNldF9hbWJpZW50X2FuZF9kaWZmdXNlIChDb2dsLkNvbG9yIGNvbG9y KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgc2V0 X2JsZW5kIChzdHJpbmcgYmxlbmRfc3RyaW5nKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1Ymxp YyBib29sIHNldF9ibGVuZCAoc3RyaW5nIGJsZW5kX3N0cmluZykgdGhyb3dzIEdMaWIuRXJyb3I7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfYmxlbmRf Y29uc3RhbnQgKENvZ2wuQ29sb3IgY29uc3RhbnRfY29sb3IpOwotIAkJW1ZlcnNpb24gKHNpbmNl ID0gIjIuMCIpXQotQEAgLTMxMyw0NiArMjI5LDM1IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCXB1 YmxpYyB2b2lkIHNldF9jb2xvcjRmIChmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVl LCBmbG9hdCBhbHBoYSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMg dm9pZCBzZXRfY29sb3I0dWIgKHVpbnQ4IHJlZCwgdWludDggZ3JlZW4sIHVpbnQ4IGJsdWUsIHVp bnQ4IGFscGhhKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyB2b2lk IHNldF9jb2xvcl9tYXNrIChDb2dsLkNvbG9yTWFzayBjb2xvcl9tYXNrKTsKLSAJCVtWZXJzaW9u IChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNldF9jdWxsX2ZhY2VfbW9kZSAoQ29n bC5QaXBlbGluZUN1bGxGYWNlTW9kZSBjdWxsX2ZhY2VfbW9kZSk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCBzZXRfZGlmZnVzZSAoQ29nbC5Db2xvciBkaWZm dXNlKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9l bWlzc2lvbiAoQ29nbC5Db2xvciBlbWlzc2lvbik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4w IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfZnJvbnRfZmFjZV93aW5kaW5nIChDb2dsLldpbmRpbmcg ZnJvbnRfd2luZGluZyk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMg Q29nbC5Cb29sIHNldF9sYXllcl9jb21iaW5lIChpbnQgbGF5ZXJfaW5kZXgsIHN0cmluZyBibGVu ZF9zdHJpbmcpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIGJvb2wgc2V0X2xheWVyX2Nv bWJpbmUgKGludCBsYXllcl9pbmRleCwgc3RyaW5nIGJsZW5kX3N0cmluZykgdGhyb3dzIEdMaWIu RXJyb3I7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRf bGF5ZXJfY29tYmluZV9jb25zdGFudCAoaW50IGxheWVyX2luZGV4LCBDb2dsLkNvbG9yIGNvbnN0 YW50KTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9pZCBzZXRf bGF5ZXJfZmlsdGVycyAoaW50IGxheWVyX2luZGV4LCBDb2dsLlBpcGVsaW5lRmlsdGVyIG1pbl9m aWx0ZXIsIENvZ2wuUGlwZWxpbmVGaWx0ZXIgbWFnX2ZpbHRlcik7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2xheWVyX21hdHJpeCAoaW50IGxheWVy X2luZGV4LCBDb2dsLk1hdHJpeCBtYXRyaXgpOwotKwkJcHVibGljIHZvaWQgc2V0X2xheWVyX21h eF9taXBtYXBfbGV2ZWwgKGludCBsYXllciwgaW50IG1heF9sZXZlbCk7Ci0gCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2xheWVyX251bGxfdGV4dHVyZSAo aW50IGxheWVyX2luZGV4LCBDb2dsLlRleHR1cmVUeXBlIHRleHR1cmVfdHlwZSk7Ci0rCQlwdWJs aWMgdm9pZCBzZXRfbGF5ZXJfbnVsbF90ZXh0dXJlIChpbnQgbGF5ZXJfaW5kZXgpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBzZXRfbGF5ZXJfcG9p bnRfc3ByaXRlX2Nvb3Jkc19lbmFibGVkIChpbnQgbGF5ZXJfaW5kZXgsIENvZ2wuQm9vbCBlbmFi bGUpIHRocm93cyBHTGliLkVycm9yOwotKwkJcHVibGljIGJvb2wgc2V0X2xheWVyX3BvaW50X3Nw cml0ZV9jb29yZHNfZW5hYmxlZCAoaW50IGxheWVyX2luZGV4LCBib29sIGVuYWJsZSkgdGhyb3dz IEdMaWIuRXJyb3I7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfdGV4dHVyZSAoaW50IGxheWVy X2luZGV4LCBDb2dsLlRleHR1cmUgdGV4dHVyZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4w IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlIChpbnQgbGF5ZXJfaW5kZXgs IENvZ2wuUGlwZWxpbmVXcmFwTW9kZSBtb2RlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAi KV0KLS0JCXB1YmxpYyB2b2lkIHNldF9sYXllcl93cmFwX21vZGVfcCAoaW50IGxheWVyX2luZGV4 LCBDb2dsLlBpcGVsaW5lV3JhcE1vZGUgbW9kZSk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4w IildCi0gCQlwdWJsaWMgdm9pZCBzZXRfbGF5ZXJfd3JhcF9tb2RlX3MgKGludCBsYXllcl9pbmRl eCwgQ29nbC5QaXBlbGluZVdyYXBNb2RlIG1vZGUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIu MCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2xheWVyX3dyYXBfbW9kZV90IChpbnQgbGF5ZXJfaW5k ZXgsIENvZ2wuUGlwZWxpbmVXcmFwTW9kZSBtb2RlKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIy LjAiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgc2V0X3Blcl92ZXJ0ZXhfcG9pbnRfc2l6ZSAoQ29n bC5Cb29sIGVuYWJsZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgYm9vbCBzZXRfcGVy X3ZlcnRleF9wb2ludF9zaXplIChib29sIGVuYWJsZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgdm9pZCBzZXRfcG9pbnRfc2l6ZSAo ZmxvYXQgcG9pbnRfc2l6ZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJs aWMgdm9pZCBzZXRfc2hpbmluZXNzIChmbG9hdCBzaGluaW5lc3MpOwotLQkJW1ZlcnNpb24gKHNp bmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X3NwZWN1bGFyIChDb2dsLkNvbG9yIHNw ZWN1bGFyKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLSAJCXB1YmxpYyB2b2lkIHNl dF91bmlmb3JtXzFmIChpbnQgdW5pZm9ybV9sb2NhdGlvbiwgZmxvYXQgdmFsdWUpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3VuaWZvcm1fMWkgKGlu dCB1bmlmb3JtX2xvY2F0aW9uLCBpbnQgdmFsdWUpOwotQEAgLTM2MSw3ICsyNjYsNyBAQCBuYW1l c3BhY2UgQ29nbCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgdm9p ZCBzZXRfdW5pZm9ybV9pbnQgKGludCB1bmlmb3JtX2xvY2F0aW9uLCBpbnQgbl9jb21wb25lbnRz LCBpbnQgY291bnQsIGludCB2YWx1ZSk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0t CQlwdWJsaWMgdm9pZCBzZXRfdW5pZm9ybV9tYXRyaXggKGludCB1bmlmb3JtX2xvY2F0aW9uLCBp bnQgZGltZW5zaW9ucywgaW50IGNvdW50LCBDb2dsLkJvb2wgdHJhbnNwb3NlLCBmbG9hdCB2YWx1 ZSk7Ci0rCQlwdWJsaWMgdm9pZCBzZXRfdW5pZm9ybV9tYXRyaXggKGludCB1bmlmb3JtX2xvY2F0 aW9uLCBpbnQgZGltZW5zaW9ucywgaW50IGNvdW50LCBib29sIHRyYW5zcG9zZSwgZmxvYXQgdmFs dWUpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotIAkJcHVibGljIHZvaWQgc2V0X3Vz ZXJfcHJvZ3JhbSAoQ29nbC5IYW5kbGUgcHJvZ3JhbSk7Ci0gCX0KLUBAIC0zODgsNyArMjkzLDcg QEAgbmFtZXNwYWNlIENvZ2wgewotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj b2dsL2NvZ2wuaCIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlbQ29tcGFjdF0KLS0JcHVibGlj IGNsYXNzIFF1YXRlcm5pb24gewotKwlwdWJsaWMgY2xhc3MgU2Nhbm91dCB7Ci0gCX0KLSAJW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ29nbEhhbmRs ZSIsIHJlZl9mdW5jdGlvbiA9ICJjb2dsX3NoYWRlcl9yZWYiLCB1bnJlZl9mdW5jdGlvbiA9ICJj b2dsX3NoYWRlcl91bnJlZiIpXQotIAlbQ29tcGFjdF0KLUBAIC00MDEsNDggKzMwNiwyMyBAQCBu YW1lc3BhY2UgQ29nbCB7Ci0gCQlwdWJsaWMgYm9vbCBpc19jb21waWxlZCAoKTsKLSAJCXB1Ymxp YyB2b2lkIHNvdXJjZSAoc3RyaW5nIHNvdXJjZSk7Ci0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ29nbEhhbmRsZSIsIHJlZl9mdW5jdGlv biA9ICJjb2dsX3RleHR1cmVfcmVmIiwgdHlwZV9pZCA9ICJjb2dsX3RleHR1cmVfZ2V0X2d0eXBl ICgpIiwgdW5yZWZfZnVuY3Rpb24gPSAiY29nbF90ZXh0dXJlX3VucmVmIildCi0tCVtDb21wYWN0 XQotLQlwdWJsaWMgY2xhc3MgVGV4dHVyZSA6IENvZ2wuSGFuZGxlIHsKLS0JCXB1YmxpYyBDb2ds LkJvb2wgYWxsb2NhdGUgKCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0tCQlwdWJsaWMgc3RhdGljIHVp bnQzMiBlcnJvcl9xdWFyayAoKTsKLS0JCXB1YmxpYyBUZXh0dXJlLmZyb21fYml0bWFwIChDb2ds LkJpdG1hcCBibXBfaGFuZGxlLCBDb2dsLlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZv cm1hdCBpbnRlcm5hbF9mb3JtYXQpOwotLQkJcHVibGljIFRleHR1cmUuZnJvbV9kYXRhICh1aW50 IHdpZHRoLCB1aW50IGhlaWdodCwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxG b3JtYXQgZm9ybWF0LCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCwgdWludCByb3dz dHJpZGUsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSB1Y2hhcltdIGRhdGEpOwotLQkJ cHVibGljIFRleHR1cmUuZnJvbV9maWxlIChzdHJpbmcgZmlsZW5hbWUsIENvZ2wuVGV4dHVyZUZs YWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCkgdGhyb3dzIEdMaWIu RXJyb3I7Ci0tCQlwdWJsaWMgVGV4dHVyZS5mcm9tX3N1Yl90ZXh0dXJlIChDb2dsLlRleHR1cmUg ZnVsbF90ZXh0dXJlLCBpbnQgc3ViX3gsIGludCBzdWJfeSwgaW50IHN1Yl93aWR0aCwgaW50IHN1 Yl9oZWlnaHQpOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0JCXB1YmxpYyBDb2ds LlRleHR1cmVDb21wb25lbnRzIGdldF9jb21wb25lbnRzICgpOwotLQkJcHVibGljIGludCBnZXRf ZGF0YSAoQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQsIHVpbnQgcm93c3RyaWRlLCB1aW50OCBkYXRh KTsKLS0JCXB1YmxpYyBDb2dsLlBpeGVsRm9ybWF0IGdldF9mb3JtYXQgKCk7Ci0tCQlwdWJsaWMg Q29nbC5Cb29sIGdldF9nbF90ZXh0dXJlIChvdXQgdWludCBvdXRfZ2xfaGFuZGxlLCBvdXQgdWlu dCBvdXRfZ2xfdGFyZ2V0KTsKLS0JCXB1YmxpYyB1aW50IGdldF9oZWlnaHQgKCk7Ci0tCQlwdWJs aWMgaW50IGdldF9tYXhfd2FzdGUgKCk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQot LQkJcHVibGljIENvZ2wuQm9vbCBnZXRfcHJlbXVsdGlwbGllZCAoKTsKLS0JCXB1YmxpYyB1aW50 IGdldF9yb3dzdHJpZGUgKCk7Ci0tCQlwdWJsaWMgdWludCBnZXRfd2lkdGggKCk7Ci0tCQlwdWJs aWMgQ29nbC5Cb29sIGlzX3NsaWNlZCAoKTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMS4wIildCi0tCQlwdWJsaWMg c3RhdGljIENvZ2wuVGV4dHVyZSBuZXdfZnJvbV9iaXRtYXAgKENvZ2wuQml0bWFwIGJpdG1hcCwg Q29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJuYWxfZm9ybWF0 KTsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjE4Iiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgc3RhdGljIENvZ2wuVGV4dHVyZSBuZXdf ZnJvbV9kYXRhIChpbnQgd2lkdGgsIGludCBoZWlnaHQsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdz LCBDb2dsLlBpeGVsRm9ybWF0IGZvcm1hdCwgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3Jt YXQsIGludCByb3dzdHJpZGUsIHVpbnQ4IGRhdGEpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIwLjgiKV0KLS0JCXB1 YmxpYyBzdGF0aWMgQ29nbC5UZXh0dXJlIG5ld19mcm9tX2ZpbGUgKHN0cmluZyBmaWxlbmFtZSwg Q29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJuYWxfZm9ybWF0 KSB0aHJvd3MgR0xpYi5FcnJvcjsKLS0JCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44IildCi0tCQlwdWJsaWMgc3RhdGlj IENvZ2wuVGV4dHVyZSBuZXdfZnJvbV9mb3JlaWduICh1aW50IGdsX2hhbmRsZSwgdWludCBnbF90 YXJnZXQsIHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0LCB1aW50IHhfcG90X3dhc3RlLCB1aW50IHlf cG90X3dhc3RlLCBDb2dsLlBpeGVsRm9ybWF0IGZvcm1hdCk7Ci0tCQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjEuMiIpXQot LQkJcHVibGljIENvZ2wuVGV4dHVyZSBuZXdfZnJvbV9zdWJfdGV4dHVyZSAoaW50IHN1Yl94LCBp bnQgc3ViX3ksIGludCBzdWJfd2lkdGgsIGludCBzdWJfaGVpZ2h0KTsKLS0JCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44 IildCi0tCQlwdWJsaWMgc3RhdGljIENvZ2wuVGV4dHVyZSBuZXdfd2l0aF9zaXplICh1aW50IHdp ZHRoLCB1aW50IGhlaWdodCwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3Jt YXQgaW50ZXJuYWxfZm9ybWF0KTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0tCQlw dWJsaWMgdm9pZCBzZXRfY29tcG9uZW50cyAoQ29nbC5UZXh0dXJlQ29tcG9uZW50cyBjb21wb25l bnRzKTsKLS0JCXB1YmxpYyBDb2dsLkJvb2wgc2V0X2RhdGEgKENvZ2wuUGl4ZWxGb3JtYXQgZm9y bWF0LCBpbnQgcm93c3RyaWRlLCB1aW50OCBkYXRhLCBpbnQgbGV2ZWwpIHRocm93cyBHTGliLkVy cm9yOwotLQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9w cmVtdWx0aXBsaWVkIChDb2dsLkJvb2wgcHJlbXVsdGlwbGllZCk7Ci0tCQlwdWJsaWMgQ29nbC5C b29sIHNldF9yZWdpb24gKGludCBzcmNfeCwgaW50IHNyY195LCBpbnQgZHN0X3gsIGludCBkc3Rf eSwgdWludCBkc3Rfd2lkdGgsIHVpbnQgZHN0X2hlaWdodCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0 LCBDb2dsLlBpeGVsRm9ybWF0IGZvcm1hdCwgdWludCByb3dzdHJpZGUsIHVpbnQ4IGRhdGEpOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBzZXRfcmVn aW9uX2Zyb21fYml0bWFwIChpbnQgc3JjX3gsIGludCBzcmNfeSwgaW50IGRzdF94LCBpbnQgZHN0 X3ksIHVpbnQgZHN0X3dpZHRoLCB1aW50IGRzdF9oZWlnaHQsIENvZ2wuQml0bWFwIGJpdG1hcCk7 Ci0tCQlwdWJsaWMgVGV4dHVyZS53aXRoX3NpemUgKHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0LCBD b2dsLlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQp OwotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBsb3dlcl9jYXNl X2NzdWZmaXggPSAidGV4dHVyZV8yZCIsIHR5cGVfaWQgPSAiY29nbF90ZXh0dXJlXzJkX2dldF9n dHlwZSAoKSIpXQotKwlwdWJsaWMgY2xhc3MgVGV4dHVyZTJEIDogQ29nbC5PYmplY3QsIENvZ2wu VGV4dHVyZSB7Ci0rCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0r CQlwcm90ZWN0ZWQgVGV4dHVyZTJEICgpOwotKwkJcHVibGljIHZvaWQgZWdsX2ltYWdlX2V4dGVy bmFsX2FsbG9jX2ZpbmlzaCAodm9pZCogdXNlcl9kYXRhLCBHTGliLkRlc3Ryb3lOb3RpZnkgZGVz dHJveSk7Ci0rCQlwdWJsaWMgdm9pZCBlZ2xfaW1hZ2VfZXh0ZXJuYWxfYmluZCAoKTsKLSsJCVtD Q29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSsJCVtWZXJzaW9uIChzaW5j ZSA9ICIyLjAiKV0KLSsJCXB1YmxpYyBUZXh0dXJlMkQuZnJvbV9iaXRtYXAgKENvZ2wuQml0bWFw IGJpdG1hcCk7Ci0rCX0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5o IiwgbG93ZXJfY2FzZV9jc3VmZml4ID0gInRleHR1cmVfMmRfc2xpY2VkIiwgdHlwZV9pZCA9ICJj b2dsX3RleHR1cmVfMmRfc2xpY2VkX2dldF9ndHlwZSAoKSIpXQotKwlwdWJsaWMgY2xhc3MgVGV4 dHVyZTJEU2xpY2VkIDogQ29nbC5PYmplY3QsIENvZ2wuVGV4dHVyZSB7Ci0rCQlbQ0NvZGUgKGhh c19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0rCQlwcm90ZWN0ZWQgVGV4dHVyZTJEU2xp Y2VkICgpOwotKwkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotKwkJ W1ZlcnNpb24gKHNpbmNlID0gIjEuMTYiKV0KLSsJCXB1YmxpYyBUZXh0dXJlMkRTbGljZWQuZnJv bV9iaXRtYXAgKENvZ2wuQml0bWFwIGJtcCwgaW50IG1heF93YXN0ZSk7Ci0gCX0KLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ29nbEhhbmRsZSIs IHJlZl9mdW5jdGlvbiA9ICJjb2dsX3ZlcnRleF9idWZmZXJfcmVmIiwgdW5yZWZfZnVuY3Rpb24g PSAiY29nbF92ZXJ0ZXhfYnVmZmVyX3VucmVmIildCi0gCVtDb21wYWN0XQotQEAgLTQ2OCw3ICsz NDgsNyBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJj b2dsL2NvZ2wuaCIsIHR5cGVfaWQgPSAiY29nbF9mcmFtZWJ1ZmZlcl9nZXRfZ3R5cGUgKCkiKV0K LSAJcHVibGljIGludGVyZmFjZSBGcmFtZWJ1ZmZlciA6IENvZ2wuT2JqZWN0IHsKLSAJCVtWZXJz aW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgYWxsb2NhdGUgKCkgdGhy b3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJsaWMgYm9vbCBhbGxvY2F0ZSAoKSB0aHJvd3MgR0xpYi5F cnJvcjsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLSAJCXB1YmxpYyB2b2lkIGNsZWFy ICh1bG9uZyBidWZmZXJzLCBDb2dsLkNvbG9yIGNvbG9yKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjgiKV0KLUBAIC00ODgsNiArMzY4LDcgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJcHVibGlj IHN0YXRpYyB1aW50MzIgZXJyb3JfcXVhcmsgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4x MCIpXQotIAkJcHVibGljIHZvaWQgZmluaXNoICgpOwotKwkJcHVibGljIHZvaWQgZmx1c2ggKCk7 Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotIAkJcHVibGljIHZvaWQgZnJ1c3R1bSAo ZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGJvdHRvbSwgZmxvYXQgdG9wLCBmbG9hdCB6 X25lYXIsIGZsb2F0IHpfZmFyKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLUBAIC00 OTUsMjIgKzM3NiwxOCBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAi MS44IildCi0gCQlwdWJsaWMgaW50IGdldF9ibHVlX2JpdHMgKCk7Ci0gCQlbVmVyc2lvbiAoc2lu Y2UgPSAiMS44IildCi0tCQlwdWJsaWMgQ29nbC5Db2xvck1hc2sgZ2V0X2NvbG9yX21hc2sgKCk7 Ci0rCQlwdWJsaWMgdW5vd25lZCBDb2dsLkNvbnRleHQgZ2V0X2NvbnRleHQgKCk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMi4wIildCi0gCQlwdWJsaWMgaW50IGdldF9kZXB0aF9iaXRzICgpOwot LQkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLS0JCXB1YmxpYyB1bm93bmVkIENvZ2wuVGV4 dHVyZSBnZXRfZGVwdGhfdGV4dHVyZSAoKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0Iild Ci0tCQlwdWJsaWMgQ29nbC5Cb29sIGdldF9kZXB0aF90ZXh0dXJlX2VuYWJsZWQgKCk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4xOCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBnZXRfZGVwdGhf d3JpdGVfZW5hYmxlZCAoKTsKLSsJCXB1YmxpYyBib29sIGdldF9kZXB0aF93cml0ZV9lbmFibGVk ICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCBn ZXRfZGl0aGVyX2VuYWJsZWQgKCk7Ci0rCQlwdWJsaWMgYm9vbCBnZXRfZGl0aGVyX2VuYWJsZWQg KCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgaW50IGdldF9ncmVl bl9iaXRzICgpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAkJcHVibGljIGludCBn ZXRfaGVpZ2h0ICgpOwotLQkJcHVibGljIENvZ2wuQm9vbCBnZXRfaXNfc3RlcmVvICgpOwotKwkJ cHVibGljIGJvb2wgZ2V0X2lzX3N0ZXJlbyAoKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEw IildCi0gCQlwdWJsaWMgQ29nbC5NYXRyaXggZ2V0X21vZGVsdmlld19tYXRyaXggKCk7Ci0gCQlb VmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotQEAgLTU0NywxMiArNDI0LDEzIEBAIG5hbWVzcGFj ZSBDb2dsIHsKLSAJCXB1YmxpYyB2b2lkIHB1c2hfbWF0cml4ICgpOwotIAkJW1ZlcnNpb24gKHNp bmNlID0gIjEuMTAiKV0KLSAJCXB1YmxpYyB2b2lkIHB1c2hfcmVjdGFuZ2xlX2NsaXAgKGZsb2F0 IHhfMSwgZmxvYXQgeV8xLCBmbG9hdCB4XzIsIGZsb2F0IHlfMik7Ci0rCQlwdWJsaWMgdm9pZCBw dXNoX3JlZ2lvbl9jbGlwIChDYWlyby5SZWdpb24gcmVnaW9uKTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9pZCBwdXNoX3NjaXNzb3JfY2xpcCAoaW50IHgsIGlu dCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAi KV0KLS0JCXB1YmxpYyBDb2dsLkJvb2wgcmVhZF9waXhlbHMgKGludCB4LCBpbnQgeSwgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0LCBDb2dsLlBpeGVsRm9ybWF0IGZvcm1hdCwgdWludDggcGl4ZWxzKTsK LSsJCXB1YmxpYyBib29sIHJlYWRfcGl4ZWxzIChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50 IGhlaWdodCwgQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQsIHVpbnQ4IHBpeGVscyk7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS4xMCIpXQotLQkJcHVibGljIENvZ2wuQm9vbCByZWFkX3BpeGVsc19p bnRvX2JpdG1hcCAoaW50IHgsIGludCB5LCBDb2dsLlJlYWRQaXhlbHNGbGFncyBzb3VyY2UsIENv Z2wuQml0bWFwIGJpdG1hcCk7Ci0rCQlwdWJsaWMgYm9vbCByZWFkX3BpeGVsc19pbnRvX2JpdG1h cCAoaW50IHgsIGludCB5LCBDb2dsLlJlYWRQaXhlbHNGbGFncyBzb3VyY2UsIENvZ2wuQml0bWFw IGJpdG1hcCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCQlwdWJsaWMgdm9pZCBy ZXNvbHZlX3NhbXBsZXMgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi1AQCAtNTYw LDE5ICs0MzgsMTMgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTAiKV0KLSAJCXB1YmxpYyB2b2lkIHJvdGF0ZSAoZmxvYXQgYW5nbGUsIGZsb2F0IHgsIGZsb2F0 IHksIGZsb2F0IHopOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQkJcHVibGljIHZv aWQgcm90YXRlX2V1bGVyIChDb2dsLkV1bGVyIGV1bGVyKTsKLS0JCVtWZXJzaW9uIChzaW5jZSA9 ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHJvdGF0ZV9xdWF0ZXJuaW9uIChDb2dsLlF1YXRlcm5p b24gcXVhdGVybmlvbik7Ci0rCQlwdWJsaWMgdm9pZCByb3RhdGVfZXVsZXIgKEdyYXBoZW5lLkV1 bGVyIGV1bGVyKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0gCQlwdWJsaWMgdm9p ZCBzY2FsZSAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0tCQlbVmVyc2lvbiAoc2luY2Ug PSAiMS44IildCi0tCQlwdWJsaWMgdm9pZCBzZXRfY29sb3JfbWFzayAoQ29nbC5Db2xvck1hc2sg Y29sb3JfbWFzayk7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xNCIpXQotLQkJcHVibGljIHZv aWQgc2V0X2RlcHRoX3RleHR1cmVfZW5hYmxlZCAoQ29nbC5Cb29sIGVuYWJsZWQpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuMTgiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kZXB0aF93cml0ZV9l bmFibGVkIChDb2dsLkJvb2wgZGVwdGhfd3JpdGVfZW5hYmxlZCk7Ci0rCQlwdWJsaWMgdm9pZCBz ZXRfZGVwdGhfd3JpdGVfZW5hYmxlZCAoYm9vbCBkZXB0aF93cml0ZV9lbmFibGVkKTsKLSAJCVtW ZXJzaW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9kaXRoZXJfZW5hYmxl ZCAoQ29nbC5Cb29sIGRpdGhlcl9lbmFibGVkKTsKLSsJCXB1YmxpYyB2b2lkIHNldF9kaXRoZXJf ZW5hYmxlZCAoYm9vbCBkaXRoZXJfZW5hYmxlZCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4x MCIpXQotIAkJcHVibGljIHZvaWQgc2V0X21vZGVsdmlld19tYXRyaXggKENvZ2wuTWF0cml4IG1h dHJpeCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotQEAgLTU4OCw2ICs0NjAsMzkg QEAgbmFtZXNwYWNlIENvZ2wgewotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJCXB1 YmxpYyB2b2lkIHRyYW5zbGF0ZSAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0gCX0KLSsJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgdHlwZV9pZCA9ICJjb2ds X3RleHR1cmVfZ2V0X2d0eXBlICgpIildCi0rCXB1YmxpYyBpbnRlcmZhY2UgVGV4dHVyZSA6IENv Z2wuT2JqZWN0IHsKLSsJCXB1YmxpYyBib29sIGFsbG9jYXRlICgpIHRocm93cyBHTGliLkVycm9y OwotKwkJcHVibGljIHN0YXRpYyB1aW50MzIgZXJyb3JfcXVhcmsgKCk7Ci0rCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4xOCIpXQotKwkJcHVibGljIENvZ2wuVGV4dHVyZUNvbXBvbmVudHMgZ2V0X2Nv bXBvbmVudHMgKCk7Ci0rCQlwdWJsaWMgaW50IGdldF9kYXRhIChDb2dsLlBpeGVsRm9ybWF0IGZv cm1hdCwgdWludCByb3dzdHJpZGUsIFtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSB1aW50 OFtdPyBkYXRhKTsKLSsJCXB1YmxpYyBib29sIGdldF9nbF90ZXh0dXJlIChvdXQgdWludCBvdXRf Z2xfaGFuZGxlLCBvdXQgdWludCBvdXRfZ2xfdGFyZ2V0KTsKLSsJCXB1YmxpYyB1aW50IGdldF9o ZWlnaHQgKCk7Ci0rCQlwdWJsaWMgaW50IGdldF9tYXhfd2FzdGUgKCk7Ci0rCQlbVmVyc2lvbiAo c2luY2UgPSAiMS4xOCIpXQotKwkJcHVibGljIGJvb2wgZ2V0X3ByZW11bHRpcGxpZWQgKCk7Ci0r CQlwdWJsaWMgdWludCBnZXRfd2lkdGggKCk7Ci0rCQlwdWJsaWMgYm9vbCBpc19zbGljZWQgKCk7 Ci0rCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x OCIsIHNpbmNlID0gIjEuMCIpXQotKwkJcHVibGljIHN0YXRpYyBDb2dsLlRleHR1cmUgbmV3X2Zy b21fYml0bWFwIChDb2dsLkJpdG1hcCBiaXRtYXAsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBD b2dsLlBpeGVsRm9ybWF0IGludGVybmFsX2Zvcm1hdCk7Ci0rCQlbVmVyc2lvbiAoZGVwcmVjYXRl ZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjAuOCIpXQotKwkJ cHVibGljIHN0YXRpYyBDb2dsLlRleHR1cmUgbmV3X2Zyb21fZGF0YSAoaW50IHdpZHRoLCBpbnQg aGVpZ2h0LCBDb2dsLlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQs IENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJuYWxfZm9ybWF0LCBpbnQgcm93c3RyaWRlLCBbQ0NvZGUg KGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gdWludDhbXSBkYXRhKTsKLSsJCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44Iild Ci0rCQlwdWJsaWMgc3RhdGljIENvZ2wuVGV4dHVyZSBuZXdfZnJvbV9maWxlIChzdHJpbmcgZmls ZW5hbWUsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFs X2Zvcm1hdCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjEuMiIpXQotKwkJcHVibGlj IENvZ2wuVGV4dHVyZSBuZXdfZnJvbV9zdWJfdGV4dHVyZSAoaW50IHN1Yl94LCBpbnQgc3ViX3ks IGludCBzdWJfd2lkdGgsIGludCBzdWJfaGVpZ2h0KTsKLSsJCVtWZXJzaW9uIChkZXByZWNhdGVk ID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44IildCi0rCQlw dWJsaWMgc3RhdGljIENvZ2wuVGV4dHVyZSBuZXdfd2l0aF9zaXplICh1aW50IHdpZHRoLCB1aW50 IGhlaWdodCwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4ZWxGb3JtYXQgaW50ZXJu YWxfZm9ybWF0KTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0rCQlwdWJsaWMgdm9p ZCBzZXRfY29tcG9uZW50cyAoQ29nbC5UZXh0dXJlQ29tcG9uZW50cyBjb21wb25lbnRzKTsKLSsJ CXB1YmxpYyBib29sIHNldF9kYXRhIChDb2dsLlBpeGVsRm9ybWF0IGZvcm1hdCwgaW50IHJvd3N0 cmlkZSwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIHVpbnQ4W10gZGF0YSwgaW50IGxl dmVsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE4IildCi0r CQlwdWJsaWMgdm9pZCBzZXRfcHJlbXVsdGlwbGllZCAoYm9vbCBwcmVtdWx0aXBsaWVkKTsKLSsJ CXB1YmxpYyBib29sIHNldF9yZWdpb24gKGludCBzcmNfeCwgaW50IHNyY195LCBpbnQgZHN0X3gs IGludCBkc3RfeSwgdWludCBkc3Rfd2lkdGgsIHVpbnQgZHN0X2hlaWdodCwgaW50IHdpZHRoLCBp bnQgaGVpZ2h0LCBDb2dsLlBpeGVsRm9ybWF0IGZvcm1hdCwgdWludCByb3dzdHJpZGUsIFtDQ29k ZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSB1aW50OFtdIGRhdGEpOwotKwkJW1ZlcnNpb24gKHNp bmNlID0gIjEuOCIpXQotKwkJcHVibGljIGJvb2wgc2V0X3JlZ2lvbl9mcm9tX2JpdG1hcCAoaW50 IHNyY194LCBpbnQgc3JjX3ksIGludCBkc3RfeCwgaW50IGRzdF95LCB1aW50IGRzdF93aWR0aCwg dWludCBkc3RfaGVpZ2h0LCBDb2dsLkJpdG1hcCBiaXRtYXApOwotKwl9Ci0gCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlbU2ltcGxlVHlwZV0KLSAJcHVibGlj IHN0cnVjdCBBbmdsZSA6IGludDMyIHsKLUBAIC02MzUsMTAgKzU0MCw2IEBAIG5hbWVzcGFjZSBD b2dsIHsKLSAJCXB1YmxpYyB2b2lkIHNldF9ibHVlX2J5dGUgKHVpbnQ4IGJsdWUpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuNCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2JsdWVfZmxvYXQgKGZs b2F0IGJsdWUpOwotLQkJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuNCIsIHNpbmNlID0gIjEuMCIpXQotLQkJcHVibGljIHZvaWQgc2V0X2Zyb21fNGYg KGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKTsKLS0JCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjQiLCBzaW5j ZSA9ICIxLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHNldF9mcm9tXzR1YiAodWludDggcmVkLCB1aW50 OCBncmVlbiwgdWludDggYmx1ZSwgdWludDggYWxwaGEpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0g IjEuNCIpXQotIAkJcHVibGljIHZvaWQgc2V0X2dyZWVuIChmbG9hdCBncmVlbik7Ci0gCQlbVmVy c2lvbiAoc2luY2UgPSAiMS40IildCi1AQCAtNjYyLDcgKzU2Myw3IEBAIG5hbWVzcGFjZSBDb2ds IHsKLSAJCXB1YmxpYyB3ZWFrIHN0cmluZyBuYW1lOwotIAkJcHVibGljIHVsb25nIGluc3RhbmNl X2NvdW50OwotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIs IHR5cGVfaWQgPSAiQ09HTF9UWVBFX01BVFJJWCIpXQotKwlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiLCBjb3B5X2Z1bmN0aW9uID0gImdfYm94ZWRfY29weSIsIGZyZWVf ZnVuY3Rpb24gPSAiZ19ib3hlZF9mcmVlIiwgdHlwZV9pZCA9ICJDT0dMX1RZUEVfTUFUUklYIild Ci0gCXB1YmxpYyBzdHJ1Y3QgTWF0cml4IHsKLSAJCXB1YmxpYyBmbG9hdCB4eDsKLSAJCXB1Ymxp YyBmbG9hdCB5eDsKLUBAIC02ODksMzIgKzU5MCwyNyBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlw dWJsaWMgdm9pZCBmcnVzdHVtIChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9t LCBmbG9hdCB0b3AsIGZsb2F0IHpfbmVhciwgZmxvYXQgel9mYXIpOwotIAkJcHVibGljIHVub3du ZWQgZmxvYXRbXSBnZXRfYXJyYXkgKCk7Ci0gCQlbVmVyc2lvbiAoc2luY2UgPSAiMS4yIildCi0t CQlwdWJsaWMgQ29nbC5Cb29sIGdldF9pbnZlcnNlIChvdXQgQ29nbC5NYXRyaXggaW52ZXJzZSk7 Ci0rCQlwdWJsaWMgYm9vbCBnZXRfaW52ZXJzZSAob3V0IENvZ2wuTWF0cml4IGludmVyc2UpOwot IAkJW0NDb2RlIChjbmFtZSA9ICJjb2dsX21hdHJpeF9pbml0X2lkZW50aXR5IildCi0gCQlwdWJs aWMgTWF0cml4LmlkZW50aXR5ICgpOwotLQkJcHVibGljIHZvaWQgaW5pdF9mcm9tX2V1bGVyIChD b2dsLkV1bGVyIGV1bGVyKTsKLS0JCXB1YmxpYyB2b2lkIGluaXRfZnJvbV9xdWF0ZXJuaW9uIChD b2dsLlF1YXRlcm5pb24gcXVhdGVybmlvbik7Ci0rCQlwdWJsaWMgdm9pZCBpbml0X2Zyb21fZXVs ZXIgKEdyYXBoZW5lLkV1bGVyIGV1bGVyKTsKLSAJCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0K LSAJCXB1YmxpYyB2b2lkIGluaXRfdHJhbnNsYXRpb24gKGZsb2F0IHR4LCBmbG9hdCB0eSwgZmxv YXQgdHopOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotLQkJcHVibGljIENvZ2wuQm9v bCBpc19pZGVudGl0eSAoKTsKLSsJCXB1YmxpYyBib29sIGlzX2lkZW50aXR5ICgpOwotIAkJW1Zl cnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAkJcHVibGljIHZvaWQgbG9va19hdCAoZmxvYXQgZXll X3Bvc2l0aW9uX3gsIGZsb2F0IGV5ZV9wb3NpdGlvbl95LCBmbG9hdCBleWVfcG9zaXRpb25feiwg ZmxvYXQgb2JqZWN0X3gsIGZsb2F0IG9iamVjdF95LCBmbG9hdCBvYmplY3RfeiwgZmxvYXQgd29y bGRfdXBfeCwgZmxvYXQgd29ybGRfdXBfeSwgZmxvYXQgd29ybGRfdXBfeik7Ci0gCQlbQ0NvZGUg KGNuYW1lID0gImNvZ2xfbWF0cml4X211bHRpcGx5IildCi0gCQlwdWJsaWMgTWF0cml4Lm11bHRp cGx5IChDb2dsLk1hdHJpeCBhLCBDb2dsLk1hdHJpeCBiKTsKLS0JCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCQlwdWJsaWMgdm9pZCBv cnRobyAoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGJvdHRvbSwgZmxvYXQgdG9wLCBm bG9hdCBuZWFyLCBmbG9hdCBmYXIpOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSAJ CXB1YmxpYyB2b2lkIG9ydGhvZ3JhcGhpYyAoZmxvYXQgeF8xLCBmbG9hdCB5XzEsIGZsb2F0IHhf MiwgZmxvYXQgeV8yLCBmbG9hdCBuZWFyLCBmbG9hdCBmYXIpOwotIAkJcHVibGljIHZvaWQgcGVy c3BlY3RpdmUgKGZsb2F0IGZvdl95LCBmbG9hdCBhc3BlY3QsIGZsb2F0IHpfbmVhciwgZmxvYXQg el9mYXIpOwotIAkJcHVibGljIHZvaWQgcHJvamVjdF9wb2ludHMgKGludCBuX2NvbXBvbmVudHMs IHNpemVfdCBzdHJpZGVfaW4sIHZvaWQqIHBvaW50c19pbiwgc2l6ZV90IHN0cmlkZV9vdXQsIHZv aWQqIHBvaW50c19vdXQsIGludCBuX3BvaW50cyk7Ci0gCQlwdWJsaWMgdm9pZCByb3RhdGUgKGZs b2F0IGFuZ2xlLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSAJCVtWZXJzaW9uIChzaW5j ZSA9ICIyLjAiKV0KLS0JCXB1YmxpYyB2b2lkIHJvdGF0ZV9ldWxlciAoQ29nbC5FdWxlciBldWxl cik7Ci0tCQlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0tCQlwdWJsaWMgdm9pZCByb3RhdGVf cXVhdGVybmlvbiAoQ29nbC5RdWF0ZXJuaW9uIHF1YXRlcm5pb24pOwotKwkJcHVibGljIHZvaWQg cm90YXRlX2V1bGVyIChHcmFwaGVuZS5FdWxlciBldWxlcik7Ci0gCQlwdWJsaWMgdm9pZCBzY2Fs ZSAoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBzeik7Ci0tCQlwdWJsaWMgdm9pZCB0cmFuc2Zv cm1fcG9pbnQgKHJlZiBmbG9hdCB4LCByZWYgZmxvYXQgeSwgcmVmIGZsb2F0IHosIHJlZiBmbG9h dCB3KTsKLSsJCXB1YmxpYyBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1fcG9pbnQgKHJlZiBDb2dsLk1h dHJpeCBtYXRyaXgsIHJlZiBmbG9hdCB4LCByZWYgZmxvYXQgeSwgcmVmIGZsb2F0IHosIHJlZiBm bG9hdCB3KTsKLSAJCXB1YmxpYyB2b2lkIHRyYW5zZm9ybV9wb2ludHMgKGludCBuX2NvbXBvbmVu dHMsIHNpemVfdCBzdHJpZGVfaW4sIHZvaWQqIHBvaW50c19pbiwgc2l6ZV90IHN0cmlkZV9vdXQs IHZvaWQqIHBvaW50c19vdXQsIGludCBuX3BvaW50cyk7Ci0gCQlwdWJsaWMgdm9pZCB0cmFuc2xh dGUgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwotIAkJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTAiKV0KLUBAIC04MDEsMTYgKzY5Nyw2IEBAIG5hbWVzcGFjZSBDb2dsIHsKLSAJCVdJTkRPV19C VUZGRVIsCi0gCQlPRkZTQ1JFRU5fQlVGRkVSCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX0NPTE9SX01BU0tfIiwgaGFzX3R5 cGVfaWQgPSBmYWxzZSldCi0tCVtGbGFnc10KLS0JcHVibGljIGVudW0gQ29sb3JNYXNrIHsKLS0J CU5PTkUsCi0tCQlSRUQsCi0tCQlHUkVFTiwKLS0JCUJMVUUsCi0tCQlBTFBIQSwKLS0JCUFMTAot LQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXgg PSAiQ09HTF9ERVBUSF9URVNUX0ZVTkNUSU9OXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlw dWJsaWMgZW51bSBEZXB0aFRlc3RGdW5jdGlvbiB7Ci0gCQlORVZFUiwKLUBAIC04MjIsNDYgKzcw OCw0MSBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlHRVFVQUwsCi0gCQlBTFdBWVMKLSAJfQotLQlb Q0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xf RkVBVFVSRV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSsJW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX0VHTF9JTUFHRV9GTEFHXyIsIGhh c190eXBlX2lkID0gZmFsc2UpXQotIAlbRmxhZ3NdCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIwLjgi KV0KLS0JcHVibGljIGVudW0gRmVhdHVyZUZsYWdzIHsKLS0JCVRFWFRVUkVfUkVDVEFOR0xFLAot LQkJVEVYVFVSRV9OUE9ULAotLQkJVEVYVFVSRV9ZVVYsCi0tCQlURVhUVVJFX1JFQURfUElYRUxT LAotLQkJU0hBREVSU19HTFNMLAotLQkJT0ZGU0NSRUVOLAotLQkJT0ZGU0NSRUVOX01VTFRJU0FN UExFLAotLQkJT0ZGU0NSRUVOX0JMSVQsCi0tCQlGT1VSX0NMSVBfUExBTkVTLAotLQkJU1RFTkNJ TF9CVUZGRVIsCi0tCQlWQk9TLAotLQkJUEJPUywKLS0JCVVOU0lHTkVEX0lOVF9JTkRJQ0VTLAot LQkJREVQVEhfUkFOR0UsCi0tCQlURVhUVVJFX05QT1RfQkFTSUMsCi0tCQlURVhUVVJFX05QT1Rf TUlQTUFQLAotLQkJVEVYVFVSRV9OUE9UX1JFUEVBVCwKLS0JCVBPSU5UX1NQUklURSwKLS0JCVRF WFRVUkVfM0QsCi0tCQlNQVBfQlVGRkVSX0ZPUl9SRUFELAotLQkJTUFQX0JVRkZFUl9GT1JfV1JJ VEUsCi0tCQlPTlNDUkVFTl9NVUxUSVBMRSwKLS0JCURFUFRIX1RFWFRVUkUKLSsJcHVibGljIGVu dW0gRWdsSW1hZ2VGbGFncyB7Ci0rCQlOT05FLAotKwkJTk9fR0VUX0RBVEEKLSsJfQotKwlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjcHJlZml4ID0gIkNPR0xfRkVB VFVSRV9JRF8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLSsJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTAiKV0KLSsJcHVibGljIGVudW0gRmVhdHVyZUlEIHsKLSsJCVtDQ29kZSAoY25hbWUgPSAiQ09H TF9GRUFUVVJFX0lEX1VOU0lHTkVEX0lOVF9JTkRJQ0VTIildCi0rCQlPR0xfRkVBVFVSRV9JRF9V TlNJR05FRF9JTlRfSU5ESUNFUywKLSsJCVtDQ29kZSAoY25hbWUgPSAiQ09HTF9GRUFUVVJFX0lE X01BUF9CVUZGRVJfRk9SX1JFQUQiKV0KLSsJCU9HTF9GRUFUVVJFX0lEX01BUF9CVUZGRVJfRk9S X1JFQUQsCi0rCQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfRkVBVFVSRV9JRF9NQVBfQlVGRkVSX0ZP Ul9XUklURSIpXQotKwkJT0dMX0ZFQVRVUkVfSURfTUFQX0JVRkZFUl9GT1JfV1JJVEUsCi0rCQlb Q0NvZGUgKGNuYW1lID0gIkNPR0xfRkVBVFVSRV9JRF9TV0FQX0JVRkZFUlNfRVZFTlQiKV0KLSsJ CU9HTF9GRUFUVVJFX0lEX1NXQVBfQlVGRkVSU19FVkVOVCwKLSsJCVtDQ29kZSAoY25hbWUgPSAi Q09HTF9GRUFUVVJFX0lEX1BSRVNFTlRBVElPTl9USU1FIildCi0rCQlPR0xfRkVBVFVSRV9JRF9Q UkVTRU5UQVRJT05fVElNRSwKLSsJCVtDQ29kZSAoY25hbWUgPSAiQ09HTF9GRUFUVVJFX0lEX0ZF TkNFIildCi0rCQlPR0xfRkVBVFVSRV9JRF9GRU5DRSwKLSsJCVtDQ29kZSAoY25hbWUgPSAiQ09H TF9GRUFUVVJFX0lEX1RFWFRVUkVfUkciKV0KLSsJCU9HTF9GRUFUVVJFX0lEX1RFWFRVUkVfUkcs Ci0rCQlbQ0NvZGUgKGNuYW1lID0gIkNPR0xfRkVBVFVSRV9JRF9CVUZGRVJfQUdFIildCi0rCQlP R0xfRkVBVFVSRV9JRF9CVUZGRVJfQUdFLAotKwkJW0NDb2RlIChjbmFtZSA9ICJDT0dMX0ZFQVRV UkVfSURfVEVYVFVSRV9FR0xfSU1BR0VfRVhURVJOQUwiKV0KLSsJCU9HTF9GRUFUVVJFX0lEX1RF WFRVUkVfRUdMX0lNQUdFX0VYVEVSTkFMLAotKwkJW0NDb2RlIChjbmFtZSA9ICJDT0dMX0ZFQVRV UkVfSURfQkxJVF9GUkFNRUJVRkZFUiIpXQotKwkJT0dMX0ZFQVRVUkVfSURfQkxJVF9GUkFNRUJV RkZFUgotIAl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNw cmVmaXggPSAiQ09HTF9GSUxURVJfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCXB1YmxpYyBl bnVtIEZpbHRlclJldHVybiB7Ci0gCQlDT05USU5VRSwKLSAJCVJFTU9WRQotIAl9Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9GT0df TU9ERV8iLCBoYXNfdHlwZV9pZCA9IGZhbHNlKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIp XQotLQlwdWJsaWMgZW51bSBGb2dNb2RlIHsKLS0JCUxJTkVBUiwKLS0JCUVYUE9ORU5USUFMLAot LQkJRVhQT05FTlRJQUxfU1FVQVJFRAotLQl9Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9GUkFNRV9FVkVOVF8iLCBoYXNfdHlwZV9p ZCA9IGZhbHNlKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTQiKV0KLSAJcHVibGljIGVudW0g RnJhbWVFdmVudCB7Ci1AQCAtODc0LDYgKzc1NSwxNCBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlG UkFNRUJVRkZFUl9FUlJPUl9BTExPQ0FURTsKLSAJCXB1YmxpYyBzdGF0aWMgdWludDMyIHF1YXJr ICgpOwotIAl9Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNw cmVmaXggPSAiQ09HTF9HUkFQSElDU19SRVNFVF9TVEFUVVNfIiwgaGFzX3R5cGVfaWQgPSBmYWxz ZSldCi0rCXB1YmxpYyBlbnVtIEdyYXBoaWNzUmVzZXRTdGF0dXMgewotKwkJTk9fRVJST1IsCi0r CQlHVUlMVFlfQ09OVEVYVF9SRVNFVCwKLSsJCUlOTk9DRU5UX0NPTlRFWFRfUkVTRVQsCi0rCQlV TktOT1dOX0NPTlRFWFRfUkVTRVQsCi0rCQlQVVJHRURfQ09OVEVYVF9SRVNFVAotKwl9Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9J TkRJQ0VTX1RZUEVfVU5TSUdORURfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCXB1YmxpYyBl bnVtIEluZGljZXNUeXBlIHsKLSAJCUJZVEUsCi1AQCAtOTAwLDEyICs3ODksNiBAQCBuYW1lc3Bh Y2UgQ29nbCB7Ci0gCQlORUFSRVNUX01JUE1BUF9MSU5FQVIsCi0gCQlMSU5FQVJfTUlQTUFQX0xJ TkVBUgotIAl9Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNw cmVmaXggPSAiQ09HTF9NQVRFUklBTF9MQVlFUl9UWVBFXyIsIGhhc190eXBlX2lkID0gZmFsc2Up XQotLQlbVmVyc2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBlbnVtIE1hdGVyaWFsTGF5 ZXJUeXBlIHsKLS0JCVtDQ29kZSAoY25hbWUgPSAiQ09HTF9NQVRFUklBTF9MQVlFUl9UWVBFX1RF WFRVUkUiKV0KLS0JCU1BVEVSSUFMX0xBWUVSX1RZUEVfVEVYVFVSRQotLQl9Ci0gCVtDQ29kZSAo Y2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNwcmVmaXggPSAiQ09HTF9NQVRFUklB TF9XUkFQX01PREVfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCVtWZXJzaW9uIChzaW5jZSA9 ICIxLjQiKV0KLSAJcHVibGljIGVudW0gTWF0ZXJpYWxXcmFwTW9kZSB7Ci1AQCAtOTcwLDYgKzg1 MywxMCBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCQlCR1JBXzEwMTAxMDIsCi0gCQlBUkdCXzIxMDEw MTAsCi0gCQlBQkdSXzIxMDEwMTAsCi0rCQlSR0JBX0ZQXzE2MTYxNjE2LAotKwkJQkdSQV9GUF8x NjE2MTYxNiwKLSsJCUFSR0JfRlBfMTYxNjE2MTYsCi0rCQlBQkdSX0ZQXzE2MTYxNjE2LAotIAkJ UkdCQV84ODg4X1BSRSwKLSAJCUJHUkFfODg4OF9QUkUsCi0gCQlBUkdCXzg4ODhfUFJFLAotQEAg LTk4MCw5ICs4NjcsMTYgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJQkdSQV8xMDEwMTAyX1BSRSwK LSAJCUFSR0JfMjEwMTAxMF9QUkUsCi0gCQlBQkdSXzIxMDEwMTBfUFJFLAotKwkJUkdCQV9GUF8x NjE2MTYxNl9QUkUsCi0rCQlCR1JBX0ZQXzE2MTYxNjE2X1BSRSwKLSsJCUFSR0JfRlBfMTYxNjE2 MTZfUFJFLAotKwkJQUJHUl9GUF8xNjE2MTYxNl9QUkUsCi0gCQlERVBUSF8xNiwKLSAJCURFUFRI XzMyLAotLQkJREVQVEhfMjRfU1RFTkNJTF84Ci0rCQlERVBUSF8yNF9TVEVOQ0lMXzg7Ci0rCQlw dWJsaWMgaW50IGdldF9ieXRlc19wZXJfcGl4ZWwgKGludCBwbGFuZSk7Ci0rCQlwdWJsaWMgaW50 IGdldF9uX3BsYW5lcyAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIHN0cmluZyB0b19zdHJpbmcgKCk7 Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZp eCA9ICJDT0dMX1JFQURfUElYRUxTX0NPTE9SXyIsIGhhc190eXBlX2lkID0gZmFsc2UpXQotIAlb RmxhZ3NdCi1AQCAtMTA0MSwxMyArOTM1LDYgQEAgbmFtZXNwYWNlIENvZ2wgewotIAkJTk9fU0xJ Q0lORywKLSAJCU5PX0FUTEFTCi0gCX0KLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX1RFWFRVUkVfVFlQRV8iLCBoYXNfdHlwZV9pZCA9 IGZhbHNlKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIGVudW0gVGV4 dHVyZVR5cGUgewotLQkJQDJELAotLQkJQDNELAotLQkJUkVDVEFOR0xFCi0tCX0KLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY3ByZWZpeCA9ICJDT0dMX1ZFUlRJ Q0VTX01PREVfIiwgaGFzX3R5cGVfaWQgPSBmYWxzZSldCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIx LjAiKV0KLSAJcHVibGljIGVudW0gVmVydGljZXNNb2RlIHsKLUBAIC0xMDY3LDcgKzk1NCw2IEBA IG5hbWVzcGFjZSBDb2dsIHsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29n bC5oIiwgY3ByZWZpeCA9ICJDT0dMX1dJTlNZU19GRUFUVVJFXyIsIGhhc190eXBlX2lkID0gZmFs c2UpXQotIAlwdWJsaWMgZW51bSBXaW5zeXNGZWF0dXJlIHsKLSAJCU1VTFRJUExFX09OU0NSRUVO LAotLQkJU1dBUF9USFJPVFRMRSwKLSAJCVZCTEFOS19DT1VOVEVSLAotIAkJVkJMQU5LX1dBSVQs Ci0gCQlURVhUVVJFX0ZST01fUElYTUFQLAotQEAgLTEwODIsOSArOTY4LDEyIEBAIG5hbWVzcGFj ZSBDb2dsIHsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaW5z dGFuY2VfcG9zID0gMS45KV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuOCIpXQotIAlwdWJsaWMg ZGVsZWdhdGUgdm9pZCBEZWJ1Z09iamVjdEZvcmVhY2hUeXBlQ2FsbGJhY2sgKENvZ2wuRGVidWdP YmplY3RUeXBlSW5mbyBpbmZvKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIiwgaW5zdGFuY2VfcG9zID0gMi45KV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjQiKV0KLS0JcHVibGlj IGRlbGVnYXRlIENvZ2wuQm9vbCBNYXRlcmlhbExheWVyQ2FsbGJhY2sgKENvZ2wuTWF0ZXJpYWwg bWF0ZXJpYWwsIGludCBsYXllcl9pbmRleCk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3BvcyA9IDEuOSldCi0rCVtWZXJzaW9uIChzaW5jZSA9 ICIwLjEwIildCi0rCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIEZlYXR1cmVDYWxsYmFjayAoQ29nbC5G ZWF0dXJlSUQgZmVhdHVyZSk7Ci0rCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIsIGluc3RhbmNlX3BvcyA9IDMuOSldCi0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE0Iild Ci0rCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIEZyYW1lQ2FsbGJhY2sgKENvZ2wuT25zY3JlZW4gb25z Y3JlZW4sIENvZ2wuRnJhbWVFdmVudCBldmVudCwgQ29nbC5GcmFtZUluZm8gaW5mbyk7Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNlX3BvcyA9IDIu OSldCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjE2IildCi0gCXB1YmxpYyBkZWxlZ2F0ZSB2b2lk IE9uc2NyZWVuRGlydHlDYWxsYmFjayAoQ29nbC5PbnNjcmVlbiBvbnNjcmVlbiwgQ29nbC5PbnNj cmVlbkRpcnR5SW5mbyBpbmZvKTsKLUBAIC0xMDkyLDEyICs5ODEsMTAgQEAgbmFtZXNwYWNlIENv Z2wgewotIAlbVmVyc2lvbiAoc2luY2UgPSAiMi4wIildCi0gCXB1YmxpYyBkZWxlZ2F0ZSB2b2lk IE9uc2NyZWVuUmVzaXplQ2FsbGJhY2sgKENvZ2wuT25zY3JlZW4gb25zY3JlZW4sIGludCB3aWR0 aCwgaW50IGhlaWdodCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIsIGluc3RhbmNlX3BvcyA9IDIuOSldCi0tCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIE9uc2NyZWVu WDExTWFza0NhbGxiYWNrIChDb2dsLk9uc2NyZWVuIG9uc2NyZWVuLCB1aW50MzIgZXZlbnRfbWFz ayk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGluc3RhbmNl X3BvcyA9IDIuOSldCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0JcHVibGljIGRlbGVn YXRlIENvZ2wuQm9vbCBQaXBlbGluZUxheWVyQ2FsbGJhY2sgKENvZ2wuUGlwZWxpbmUgcGlwZWxp bmUsIGludCBsYXllcl9pbmRleCk7Ci0rCXB1YmxpYyBkZWxlZ2F0ZSBib29sIFBpcGVsaW5lTGF5 ZXJDYWxsYmFjayAoQ29nbC5QaXBlbGluZSBwaXBlbGluZSwgaW50IGxheWVyX2luZGV4KTsKLSAJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgaW5zdGFuY2VfcG9zID0g MS45KV0KLS0JcHVibGljIGRlbGVnYXRlIHZvaWQgU3dhcEJ1ZmZlcnNOb3RpZnkgKENvZ2wuRnJh bWVidWZmZXIgZnJhbWVidWZmZXIpOwotKwlwdWJsaWMgZGVsZWdhdGUgYm9vbCBUZXh0dXJlMkRF R0xJbWFnZUV4dGVybmFsQWxsb2MgKENvZ2wuVGV4dHVyZTJEIHRleF8yZCkgdGhyb3dzIEdMaWIu RXJyb3I7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGhhc190 YXJnZXQgPSBmYWxzZSldCi0gCXB1YmxpYyBkZWxlZ2F0ZSB2b2lkIFVzZXJEYXRhRGVzdHJveUNh bGxiYWNrICh2b2lkKiBkYXRhKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIiwgY25hbWUgPSAiQ09HTF9BRklSU1RfQklUIildCi1AQCAtMTEwOCw2ICs5OTUsOCBA QCBuYW1lc3BhY2UgQ29nbCB7Ci0gCXB1YmxpYyBjb25zdCBpbnQgQkdSX0JJVDsKLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ09HTF9ERVBUSF9C SVQiKV0KLSAJcHVibGljIGNvbnN0IGludCBERVBUSF9CSVQ7Ci0rCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNPR0xfUElYRUxfRk9STUFUX01BWF9Q TEFORVMiKV0KLSsJcHVibGljIGNvbnN0IGludCBQSVhFTF9GT1JNQVRfTUFYX1BMQU5FUzsKLSAJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIiwgY25hbWUgPSAiQ09HTF9Q UkVNVUxUX0JJVCIpXQotIAlwdWJsaWMgY29uc3QgaW50IFBSRU1VTFRfQklUOwotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiLCBjbmFtZSA9ICJDT0dMX1NURU5DSUxf QklUIildCi1AQCAtMTExNSwyMSArMTAwNCwxMiBAQCBuYW1lc3BhY2UgQ29nbCB7Ci0gCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIsIGNuYW1lID0gIkNPR0xfVEVYVFVS RV9NQVhfV0FTVEUiKV0KLSAJcHVibGljIGNvbnN0IGludCBURVhUVVJFX01BWF9XQVNURTsKLSAJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4w IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBiZWdpbl9nbCAoKTsKLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjIiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkJvb2wg Y2hlY2tfZXh0ZW5zaW9uIChzdHJpbmcgbmFtZSwgc3RyaW5nIGV4dCk7Ci0tCVtDQ29kZSAoY2hl YWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9 IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQg Y2xlYXIgKENvZ2wuQ29sb3IgY29sb3IsIHVsb25nIGJ1ZmZlcnMpOwotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkJvb2wg Y2x1dHRlcl9jaGVja19leHRlbnNpb25fQ0xVVFRFUiAoc3RyaW5nIG5hbWUsIHN0cmluZyBleHQp OwotKwlwdWJsaWMgc3RhdGljIGJvb2wgYmxpdF9mcmFtZWJ1ZmZlciAoQ29nbC5GcmFtZWJ1ZmZl ciBzcmMsIENvZ2wuRnJhbWVidWZmZXIgZGVzdCwgaW50IHNyY194LCBpbnQgc3JjX3ksIGludCBk c3RfeCwgaW50IGRzdF95LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHRocm93cyBHTGliLkVycm9y OwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JcHVibGlj IHN0YXRpYyBDb2dsLkJvb2wgY2x1dHRlcl93aW5zeXNfaGFzX2ZlYXR1cmVfQ0xVVFRFUiAoQ29n bC5XaW5zeXNGZWF0dXJlIGZlYXR1cmUpOwotKwlwdWJsaWMgc3RhdGljIGJvb2wgY2x1dHRlcl93 aW5zeXNfaGFzX2ZlYXR1cmVfQ0xVVFRFUiAoQ29nbC5XaW5zeXNGZWF0dXJlIGZlYXR1cmUpOwot IAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24g KHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBjb2xvcl9lcXVhbCAo dm9pZCogdjEsIHZvaWQqIHYyKTsKLSsJcHVibGljIHN0YXRpYyBib29sIGNvbG9yX2VxdWFsICh2 b2lkKiB2MSwgdm9pZCogdjIpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9j b2dsLmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTYiKV0KLSAJcHVibGljIHN0YXRpYyB2 b2lkIGNvbG9yX2luaXRfZnJvbV9oc2wgKG91dCBDb2dsLkNvbG9yIGNvbG9yLCBmbG9hdCBodWUs IGZsb2F0IHNhdHVyYXRpb24sIGZsb2F0IGx1bWluYW5jZSk7Ci1AQCAtMTE0MywyMzQgKzEwMjMs ODcgQEAgbmFtZXNwYWNlIENvZ2wgewotIAlbVmVyc2lvbiAoc2luY2UgPSAiMS44IildCi0gCXB1 YmxpYyBzdGF0aWMgdm9pZCBkZWJ1Z19vYmplY3RfcHJpbnRfaW5zdGFuY2VzICgpOwotIAlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRp YyB2b2lkIGRpc2FibGVfZm9nICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIGVuZF9n bCAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0t CXB1YmxpYyBzdGF0aWMgQ29nbC5Cb29sIGZlYXR1cmVzX2F2YWlsYWJsZSAoQ29nbC5GZWF0dXJl RmxhZ3MgZmVhdHVyZXMpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiKV0KLSAJW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotIAlwdWJsaWMgc3RhdGljIHZvaWQg Zmx1c2ggKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQot LQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIs IHNpbmNlID0gIjAuOC4yIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBmcnVzdHVtIChmbG9hdCBs ZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmbG9hdCB0b3AsIGZsb2F0IHpfbmVhciwg ZmxvYXQgel9mYXIpOwotKwlbVmVyc2lvbiAoc2luY2UgPSAiMS4xMCIpXQotKwlwdWJsaWMgc3Rh dGljIHZvaWQgZm9yZWFjaF9mZWF0dXJlIChDb2dsLkNvbnRleHQgY29udGV4dCwgQ29nbC5GZWF0 dXJlQ2FsbGJhY2sgY2FsbGJhY2spOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyBDb2dsLkJvb2wgZ2V0X2JhY2tmYWNlX2N1 bGxpbmdfZW5hYmxlZCAoKTsKLSsJcHVibGljIHN0YXRpYyBib29sIGdldF9iYWNrZmFjZV9jdWxs aW5nX2VuYWJsZWQgKCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS44IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBnZXRfYml0bWFza3MgKG91dCBpbnQgcmVkLCBv dXQgaW50IGdyZWVuLCBvdXQgaW50IGJsdWUsIG91dCBpbnQgYWxwaGEpOwotKwlbVmVyc2lvbiAo c2luY2UgPSAiMS4xNCIpXQotKwlwdWJsaWMgc3RhdGljIGludDY0IGdldF9jbG9ja190aW1lIChD b2dsLkNvbnRleHQgY29udGV4dCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2ds L2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2lu Y2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBnZXRfZGVwdGhfdGVzdF9l bmFibGVkICgpOwotKwlwdWJsaWMgc3RhdGljIGJvb2wgZ2V0X2RlcHRoX3Rlc3RfZW5hYmxlZCAo KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChzaW5jZSA9ICIxLjgiKV0KLS0JcHVibGljIHN0YXRpYyB1bm93bmVkIENvZ2wuRnJhbWVi dWZmZXIgZ2V0X2RyYXdfZnJhbWVidWZmZXIgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFt ZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJl Y2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjAuOCIpXQotLQlwdWJsaWMgc3RhdGljIENv Z2wuRmVhdHVyZUZsYWdzIGdldF9mZWF0dXJlcyAoKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5NYXRyaXggZ2V0 X21vZGVsdmlld19tYXRyaXggKCk7Ci0rCXB1YmxpYyBzdGF0aWMgQ29nbC5HcmFwaGljc1Jlc2V0 U3RhdHVzIGdldF9ncmFwaGljc19yZXNldF9zdGF0dXMgKENvZ2wuQ29udGV4dCBjb250ZXh0KTsK LSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9u IChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAi MS4wIildCi0gCXB1YmxpYyBzdGF0aWMgR0xpYi5PcHRpb25Hcm91cCBnZXRfb3B0aW9uX2dyb3Vw ICgpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJcHVi bGljIHN0YXRpYyBHTGliLkNhbGxiYWNrIGdldF9wcm9jX2FkZHJlc3MgKHN0cmluZyBzKTsKLSAJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChk ZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBz dGF0aWMgQ29nbC5NYXRyaXggZ2V0X3Byb2plY3Rpb25fbWF0cml4ICgpOwotLQlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0JcHVi bGljIHN0YXRpYyB2b2lkKiBnZXRfc291cmNlICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIGdldF92aWV3cG9y dCAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIG91dCBmbG9hdCB2WzRdKTsKLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4IildCi0gCXB1YmxpYyBzdGF0 aWMgR0xpYi5UeXBlIGd0eXBlX21hdHJpeF9nZXRfdHlwZSAoKTsKLSAJW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIild Ci0tCXB1YmxpYyBzdGF0aWMgQ29nbC5Cb29sIGlzX2ZyYW1lYnVmZmVyICh2b2lkKiBvYmplY3Qp OwotKwlwdWJsaWMgc3RhdGljIGJvb2wgaGFzX2ZlYXR1cmUgKENvZ2wuQ29udGV4dCBjb250ZXh0 LCBDb2dsLkZlYXR1cmVJRCBmZWF0dXJlKTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBz dGF0aWMgQ29nbC5Cb29sIGlzX29uc2NyZWVuICh2b2lkKiBvYmplY3QpOwotKwlwdWJsaWMgc3Rh dGljIGJvb2wgaXNfY29udGV4dCAodm9pZCogb2JqZWN0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2Zp bGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChzaW5jZSA9ICIyLjAiKV0KLS0J cHVibGljIHN0YXRpYyBDb2dsLkJvb2wgaXNfcGlwZWxpbmUgKHZvaWQqIG9iamVjdCk7Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNCIp XQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9vbCBpc192ZXJ0ZXhfYnVmZmVyX2luZGljZXMgKENv Z2wuSGFuZGxlIGhhbmRsZSk7Ci0rCXB1YmxpYyBzdGF0aWMgYm9vbCBpc19mcmFtZV9pbmZvICh2 b2lkKiBvYmplY3QpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgi KV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wuQm9v bCBtYXRyaXhfZXF1YWwgKHZvaWQqIHYxLCB2b2lkKiB2Mik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9m aWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUs IGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIsIHNpbmNlID0gIjEuMCIpXQotLQlwdWJsaWMgc3Rh dGljIHZvaWQgb3J0aG8gKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGZs b2F0IHRvcCwgZmxvYXQgbmVhciwgZmxvYXQgZmFyKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBwZXJzcGVjdGl2 ZSAoZmxvYXQgZm92eSwgZmxvYXQgYXNwZWN0LCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsK LS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9u IChzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHBvbHlnb24gKENvZ2wuVGV4 dHVyZVZlcnRleCB2ZXJ0aWNlcywgdWludCBuX3ZlcnRpY2VzLCBDb2dsLkJvb2wgdXNlX2NvbG9y KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJz aW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjEwIildCi0tCXB1 YmxpYyBzdGF0aWMgdm9pZCBwb3BfbWF0cml4ICgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXBy ZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjYiKV0KLS0JcHVibGljIHN0YXRpYyB2 b2lkIHBvcF9zb3VyY2UgKCk7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2Nv Z2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2Ug PSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcHVzaF9tYXRyaXggKCk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIsIHNpbmNlID0gIjEuNiIpXQot LQlwdWJsaWMgc3RhdGljIHZvaWQgcHVzaF9zb3VyY2UgKHZvaWQqIG1hdGVyaWFsKTsKLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCXB1YmxpYyBzdGF0aWMg dm9pZCByZWN0YW5nbGUgKGZsb2F0IHhfMSwgZmxvYXQgeV8xLCBmbG9hdCB4XzIsIGZsb2F0IHlf Mik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVy c2lvbiAoc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCByZWN0YW5nbGVfd2l0 aF9tdWx0aXRleHR1cmVfY29vcmRzIChmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9h dCB5MiwgW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSldIGZsb2F0W10gdGV4X2Nvb3Jkcywg aW50IHRleF9jb29yZHNfbGVuKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wv Y29nbC5oIildCi0tCVtWZXJzaW9uIChzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGljIHN0YXRpYyB2 b2lkIHJlY3RhbmdsZV93aXRoX3RleHR1cmVfY29vcmRzIChmbG9hdCB4MSwgZmxvYXQgeTEsIGZs b2F0IHgyLCBmbG9hdCB5MiwgZmxvYXQgdHgxLCBmbG9hdCB0eTEsIGZsb2F0IHR4MiwgZmxvYXQg dHkyKTsKLSsJW1ZlcnNpb24gKHNpbmNlID0gIjEuMTAiKV0KLSsJcHVibGljIHN0YXRpYyBib29s IGlzX2ZyYW1lYnVmZmVyICh2b2lkKiBvYmplY3QpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5h bWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjEuMCIpXQotLQlwdWJs aWMgc3RhdGljIHZvaWQgcmVjdGFuZ2xlcyAoW0NDb2RlIChhcnJheV9sZW5ndGggPSBmYWxzZSld IGZsb2F0W10gdmVydHMsIHVpbnQgbl9yZWN0cyk7Ci0rCVtWZXJzaW9uIChzaW5jZSA9ICIxLjEw IildCi0rCXB1YmxpYyBzdGF0aWMgYm9vbCBpc19vbnNjcmVlbiAodm9pZCogb2JqZWN0KTsKLSAJ W0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChz aW5jZSA9ICIwLjguNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcmVjdGFuZ2xlc193aXRoX3Rl eHR1cmVfY29vcmRzIChbQ0NvZGUgKGFycmF5X2xlbmd0aCA9IGZhbHNlKV0gZmxvYXRbXSB2ZXJ0 cywgdWludCBuX3JlY3RzKTsKLSsJW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotKwlwdWJsaWMg c3RhdGljIGJvb2wgaXNfcGlwZWxpbmUgKHZvaWQqIG9iamVjdCk7Ci0gCVtDQ29kZSAoY2hlYWRl cl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRy dWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgcm90 YXRlIChmbG9hdCBhbmdsZSwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7Ci0rCXB1YmxpYyBz dGF0aWMgYm9vbCBpc190ZXh0dXJlXzJkICh2b2lkKiBvYmplY3QpOwotIAlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNj YWxlIChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKLSsJW1ZlcnNpb24gKHNpbmNlID0gIjEu MTAiKV0KLSsJcHVibGljIHN0YXRpYyBib29sIGlzX3RleHR1cmVfMmRfc2xpY2VkICh2b2lkKiBv YmplY3QpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0J W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0K LS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF9iYWNrZmFjZV9jdWxsaW5nX2VuYWJsZWQgKENvZ2wu Qm9vbCBzZXR0aW5nKTsKLSsJW1ZlcnNpb24gKHNpbmNlID0gIjEuNCIpXQotKwlwdWJsaWMgc3Rh dGljIGJvb2wgbWF0cml4X2VxdWFsICh2b2lkKiB2MSwgdm9pZCogdjIpOwotIAlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lk IHNldF9kZXB0aF90ZXN0X2VuYWJsZWQgKENvZ2wuQm9vbCBzZXR0aW5nKTsKLSsJcHVibGljIHN0 YXRpYyB2b2lkIHNldF9iYWNrZmFjZV9jdWxsaW5nX2VuYWJsZWQgKGJvb2wgc2V0dGluZyk7Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAo ZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMg c3RhdGljIHZvaWQgc2V0X2ZvZyAoQ29nbC5Db2xvciBmb2dfY29sb3IsIENvZ2wuRm9nTW9kZSBt b2RlLCBmbG9hdCBkZW5zaXR5LCBmbG9hdCB6X25lYXIsIGZsb2F0IHpfZmFyKTsKLSsJcHVibGlj IHN0YXRpYyB2b2lkIHNldF9kZXB0aF90ZXN0X2VuYWJsZWQgKGJvb2wgc2V0dGluZyk7Ci0gCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVw cmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xMCIpXQotLQlwdWJsaWMgc3Rh dGljIHZvaWQgc2V0X21vZGVsdmlld19tYXRyaXggKENvZ2wuTWF0cml4IG1hdHJpeCk7Ci0rCXB1 YmxpYyBzdGF0aWMgdm9pZCBzZXRfdHJhY2luZ19kaXNhYmxlZF9vbl90aHJlYWQgKHZvaWQqIGRh dGEpOwotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1Zl cnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTAiKV0KLS0J cHVibGljIHN0YXRpYyB2b2lkIHNldF9wcm9qZWN0aW9uX21hdHJpeCAoQ29nbC5NYXRyaXggbWF0 cml4KTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2Iiwgc2lu Y2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfc291cmNlICh2b2lkKiBtYXRl cmlhbCk7Ci0rCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfdHJhY2luZ19lbmFibGVkX29uX3RocmVh ZCAodm9pZCogZGF0YSwgc3RyaW5nIGdyb3VwLCBzdHJpbmcgZmlsZW5hbWUpOwotIAlbQ0NvZGUg KGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0 ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0J cHVibGljIHN0YXRpYyB2b2lkIHNldF9zb3VyY2VfY29sb3IgKENvZ2wuQ29sb3IgY29sb3IpOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIx LjAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHNldF9zb3VyY2VfY29sb3I0ZiAoZmxvYXQgcmVk LCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpOwotLQlbQ0NvZGUgKGNoZWFk ZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0 cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiLCBzaW5jZSA9ICIxLjAiKV0KLS0JcHVibGlj IHN0YXRpYyB2b2lkIHNldF9zb3VyY2VfY29sb3I0dWIgKHVpbnQ4IHJlZCwgdWludDggZ3JlZW4s IHVpbnQ4IGJsdWUsIHVpbnQ4IGFscGhhKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE2Iiwgc2luY2UgPSAiMS4wIildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCBz ZXRfc291cmNlX3RleHR1cmUgKENvZ2wuVGV4dHVyZSB0ZXh0dXJlKTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjgiLCBzaW5jZSA9ICIxLjIiKV0KLS0JcHVibGlj IHN0YXRpYyB2b2lkIHNldF92aWV3cG9ydCAoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBo ZWlnaHQpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0J W1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0K LS0JcHVibGljIHN0YXRpYyB2b2lkIHNoYWRlcl9jb21waWxlIChDb2dsLkhhbmRsZSBoYW5kbGUp OwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNp b24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVi bGljIHN0YXRpYyBzdHJpbmcgc2hhZGVyX2dldF9pbmZvX2xvZyAoQ29nbC5IYW5kbGUgaGFuZGxl KTsKLSsJcHVibGljIHN0YXRpYyB2b2lkIHNldF90cmFjaW5nX2VuYWJsZWRfb25fdGhyZWFkX3dp dGhfZmQgKHZvaWQqIGRhdGEsIHN0cmluZyBncm91cCwgaW50IGZkKTsKLSAJW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0g dHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0gCXB1YmxpYyBzdGF0aWMgQ29nbC5T aGFkZXJUeXBlIHNoYWRlcl9nZXRfdHlwZSAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChkZXByZWNh dGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMg Q29nbC5Cb29sIHNoYWRlcl9pc19jb21waWxlZCAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0ND b2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXBy ZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0 aWMgdW5vd25lZCBDb2dsLkhhbmRsZSBzaGFkZXJfcmVmIChDb2dsLkhhbmRsZSBoYW5kbGUpOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLSAJcHVibGlj IHN0YXRpYyB2b2lkIHNoYWRlcl9zb3VyY2UgKENvZ2wuSGFuZGxlIHNoYWRlciwgc3RyaW5nIHNv dXJjZSk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlb VmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQot LQlwdWJsaWMgc3RhdGljIHZvaWQgc2hhZGVyX3VucmVmIChDb2dsLkhhbmRsZSBoYW5kbGUpOwot LQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24g KGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIx LjAiKV0KLSAJcHVibGljIHN0YXRpYyBDb2dsLlRleHR1cmUgdGV4dHVyZV9uZXdfZnJvbV9iaXRt YXAgKENvZ2wuQml0bWFwIGJpdG1hcCwgQ29nbC5UZXh0dXJlRmxhZ3MgZmxhZ3MsIENvZ2wuUGl4 ZWxGb3JtYXQgaW50ZXJuYWxfZm9ybWF0KTsKLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0g ImNvZ2wvY29nbC5oIildCi0gCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRl ZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44IildCi0tCXB1YmxpYyBzdGF0aWMgQ29nbC5U ZXh0dXJlIHRleHR1cmVfbmV3X2Zyb21fZGF0YSAoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBDb2ds LlRleHR1cmVGbGFncyBmbGFncywgQ29nbC5QaXhlbEZvcm1hdCBmb3JtYXQsIENvZ2wuUGl4ZWxG b3JtYXQgaW50ZXJuYWxfZm9ybWF0LCBpbnQgcm93c3RyaWRlLCB1aW50OCBkYXRhKTsKLSsJcHVi bGljIHN0YXRpYyBDb2dsLlRleHR1cmUgdGV4dHVyZV9uZXdfZnJvbV9kYXRhIChpbnQgd2lkdGgs IGludCBoZWlnaHQsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGZv cm1hdCwgQ29nbC5QaXhlbEZvcm1hdCBpbnRlcm5hbF9mb3JtYXQsIGludCByb3dzdHJpZGUsIFtD Q29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UpXSB1aW50OFtdIGRhdGEpOwotIAlbQ0NvZGUgKGNo ZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLSAJW1ZlcnNpb24gKGRlcHJlY2F0ZWQg PSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTgiLCBzaW5jZSA9ICIwLjgiKV0KLSAJcHVi bGljIHN0YXRpYyBDb2dsLlRleHR1cmUgdGV4dHVyZV9uZXdfZnJvbV9maWxlIChzdHJpbmcgZmls ZW5hbWUsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVybmFs X2Zvcm1hdCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9 ICJjb2dsL2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0 ZWRfc2luY2UgPSAiMS4xOCIsIHNpbmNlID0gIjAuOCIpXQotLQlwdWJsaWMgc3RhdGljIENvZ2wu VGV4dHVyZSB0ZXh0dXJlX25ld19mcm9tX2ZvcmVpZ24gKHVpbnQgZ2xfaGFuZGxlLCB1aW50IGds X3RhcmdldCwgdWludCB3aWR0aCwgdWludCBoZWlnaHQsIHVpbnQgeF9wb3Rfd2FzdGUsIHVpbnQg eV9wb3Rfd2FzdGUsIENvZ2wuUGl4ZWxGb3JtYXQgZm9ybWF0KTsKLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE4Iiwgc2luY2UgPSAiMC44IildCi0gCXB1YmxpYyBz dGF0aWMgQ29nbC5UZXh0dXJlIHRleHR1cmVfbmV3X3dpdGhfc2l6ZSAodWludCB3aWR0aCwgdWlu dCBoZWlnaHQsIENvZ2wuVGV4dHVyZUZsYWdzIGZsYWdzLCBDb2dsLlBpeGVsRm9ybWF0IGludGVy bmFsX2Zvcm1hdCk7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x MCIsIHNpbmNlID0gIjEuNCIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdHJhbnNmb3JtIChDb2ds Lk1hdHJpeCBtYXRyaXgpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2ds LmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0g IjEuMTAiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZSAoZmxvYXQgeCwgZmxvYXQg eSwgZmxvYXQgeik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIp XQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4x NiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZlcl9hZGQgKENvZ2wuSGFuZGxl IGhhbmRsZSwgc3RyaW5nIGF0dHJpYnV0ZV9uYW1lLCB1aW50OCBuX2NvbXBvbmVudHMsIENvZ2wu QXR0cmlidXRlVHlwZSB0eXBlLCBDb2dsLkJvb2wgbm9ybWFsaXplZCwgdWludDE2IHN0cmlkZSwg dm9pZCogcG9pbnRlcik7Ci0tCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wu aCIpXQotLQlbVmVyc2lvbiAoZGVwcmVjYXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAi MS4xNiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1ZmZlcl9kZWxldGUgKENvZ2wu SGFuZGxlIGhhbmRsZSwgc3RyaW5nIGF0dHJpYnV0ZV9uYW1lKTsKLS0JW0NDb2RlIChjaGVhZGVy X2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1 ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJ0 ZXhfYnVmZmVyX2Rpc2FibGUgKENvZ2wuSGFuZGxlIGhhbmRsZSwgc3RyaW5nIGF0dHJpYnV0ZV9u YW1lKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtW ZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIxLjE2IildCi0t CXB1YmxpYyBzdGF0aWMgdm9pZCB2ZXJ0ZXhfYnVmZmVyX2RyYXcgKENvZ2wuSGFuZGxlIGhhbmRs ZSwgQ29nbC5WZXJ0aWNlc01vZGUgbW9kZSwgaW50IGZpcnN0LCBpbnQgY291bnQpOwotLQlbQ0Nv ZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJl Y2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRp YyB2b2lkIHZlcnRleF9idWZmZXJfZHJhd19lbGVtZW50cyAoQ29nbC5IYW5kbGUgaGFuZGxlLCBD b2dsLlZlcnRpY2VzTW9kZSBtb2RlLCBDb2dsLkhhbmRsZSBpbmRpY2VzLCBpbnQgbWluX2luZGV4 LCBpbnQgbWF4X2luZGV4LCBpbnQgaW5kaWNlc19vZmZzZXQsIGludCBjb3VudCk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGlj IHZvaWQgdmVydGV4X2J1ZmZlcl9lbmFibGUgKENvZ2wuSGFuZGxlIGhhbmRsZSwgc3RyaW5nIGF0 dHJpYnV0ZV9uYW1lKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5o IildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdWludCB2ZXJ0ZXhfYnVmZmVyX2dldF9uX3ZlcnRpY2Vz IChDb2dsLkhhbmRsZSBoYW5kbGUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAiY29n bC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBkZXByZWNhdGVkX3Np bmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB1bm93bmVkIENvZ2wuSGFuZGxlIHZlcnRl eF9idWZmZXJfaW5kaWNlc19nZXRfZm9yX3F1YWRzICh1aW50IG5faW5kaWNlcyk7Ci0tCVtDQ29k ZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotLQlbVmVyc2lvbiAoZGVwcmVj YXRlZCA9IHRydWUsIGRlcHJlY2F0ZWRfc2luY2UgPSAiMS4xNiIpXQotLQlwdWJsaWMgc3RhdGlj IENvZ2wuSW5kaWNlc1R5cGUgdmVydGV4X2J1ZmZlcl9pbmRpY2VzX2dldF90eXBlIChDb2dsLkhh bmRsZSBpbmRpY2VzKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5o IildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9zaW5jZSA9ICIx LjE2IildCi0tCXB1YmxpYyBzdGF0aWMgdW5vd25lZCBDb2dsLkhhbmRsZSB2ZXJ0ZXhfYnVmZmVy X25ldyAodWludCBuX3ZlcnRpY2VzKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gImNv Z2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVwcmVjYXRlZF9z aW5jZSA9ICIxLjIiKV0KLS0JcHVibGljIHN0YXRpYyB1bm93bmVkIENvZ2wuSGFuZGxlIHZlcnRl eF9idWZmZXJfcmVmIChDb2dsLkhhbmRsZSBoYW5kbGUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMTYiKV0KLS0JcHVibGljIHN0YXRpYyB2b2lkIHZlcnRleF9i dWZmZXJfc3VibWl0IChDb2dsLkhhbmRsZSBoYW5kbGUpOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKGRlcHJlY2F0ZWQgPSB0cnVlLCBk ZXByZWNhdGVkX3NpbmNlID0gIjEuMiIpXQotLQlwdWJsaWMgc3RhdGljIHZvaWQgdmVydGV4X2J1 ZmZlcl91bnJlZiAoQ29nbC5IYW5kbGUgaGFuZGxlKTsKLS0JW0NDb2RlIChjaGVhZGVyX2ZpbGVu YW1lID0gImNvZ2wvY29nbC5oIildCi0tCVtWZXJzaW9uIChkZXByZWNhdGVkID0gdHJ1ZSwgZGVw cmVjYXRlZF9zaW5jZSA9ICIxLjgiLCBzaW5jZSA9ICIwLjguMiIpXQotLQlwdWJsaWMgc3RhdGlj IHZvaWQgdmlld3BvcnQgKHVpbnQgd2lkdGgsIHVpbnQgaGVpZ2h0KTsKLS0JW0NDb2RlIChjaGVh ZGVyX2ZpbGVuYW1lID0gImNvZ2wvY29nbC5oIildCi0tCXB1YmxpYyBzdGF0aWMgdWludDMyIHgx MV9vbnNjcmVlbl9nZXRfdmlzdWFsX3hpZCAoQ29nbC5PbnNjcmVlbiBvbnNjcmVlbik7Ci0tCVtD Q29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJjb2dsL2NvZ2wuaCIpXQotIAlbVmVyc2lvbiAoc2lu Y2UgPSAiMS4xMCIpXQotIAlwdWJsaWMgc3RhdGljIHVpbnQzMiB4MTFfb25zY3JlZW5fZ2V0X3dp bmRvd194aWQgKENvZ2wuT25zY3JlZW4gb25zY3JlZW4pOwotLQlbQ0NvZGUgKGNoZWFkZXJfZmls ZW5hbWUgPSAiY29nbC9jb2dsLmgiKV0KLS0JW1ZlcnNpb24gKHNpbmNlID0gIjIuMCIpXQotLQlw dWJsaWMgc3RhdGljIHZvaWQgeDExX29uc2NyZWVuX3NldF9mb3JlaWduX3dpbmRvd194aWQgKENv Z2wuT25zY3JlZW4gb25zY3JlZW4sIHVpbnQzMiB4aWQsIFtDQ29kZSAoc2NvcGUgPSAiYXN5bmMi KV0gQ29nbC5PbnNjcmVlblgxMU1hc2tDYWxsYmFjayB1cGRhdGUpOwotIH0KLWRpZmYgLS1naXQg dmFwaS9wb2xraXQtZ29iamVjdC0xLnZhcGkgdmFwaS9wb2xraXQtZ29iamVjdC0xLnZhcGkKLWlu ZGV4IDkzZWZmOGE1Li5mZWRjNmE0YSAxMDA2NDQKLS0tLSB2YXBpL3BvbGtpdC1nb2JqZWN0LTEu dmFwaQotKysrIHZhcGkvcG9sa2l0LWdvYmplY3QtMS52YXBpCi1AQCAtNyw3ICs3LDcgQEAgbmFt ZXNwYWNlIFBvbGtpdCB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxz ZSldCi0gCQlwcm90ZWN0ZWQgQWN0aW9uRGVzY3JpcHRpb24gKCk7Ci0gCQlwdWJsaWMgdW5vd25l ZCBzdHJpbmcgZ2V0X2FjdGlvbl9pZCAoKTsKLS0JCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRf YW5ub3RhdGlvbiAoc3RyaW5nIGtleSk7Ci0rCQlwdWJsaWMgdW5vd25lZCBzdHJpbmc/IGdldF9h bm5vdGF0aW9uIChzdHJpbmcga2V5KTsKLSAJCVtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2Us IGFycmF5X251bGxfdGVybWluYXRlZCA9IHRydWUpXQotIAkJcHVibGljIHVub3duZWQgc3RyaW5n W10gZ2V0X2Fubm90YXRpb25fa2V5cyAoKTsKLSAJCXB1YmxpYyB1bm93bmVkIHN0cmluZyBnZXRf ZGVzY3JpcHRpb24gKCk7Ci1AQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgUG9sa2l0IHsKLSAJ CXB1YmxpYyBQb2xraXQuQXV0aG9yaXR5RmVhdHVyZXMgZ2V0X2JhY2tlbmRfZmVhdHVyZXMgKCk7 Ci0gCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X2JhY2tlbmRfbmFtZSAoKTsKLSAJCXB1Ymxp YyB1bm93bmVkIHN0cmluZyBnZXRfYmFja2VuZF92ZXJzaW9uICgpOwotLQkJcHVibGljIHN0cmlu ZyBnZXRfb3duZXIgKCk7Ci0rCQlwdWJsaWMgc3RyaW5nPyBnZXRfb3duZXIgKCk7Ci0gCQlwdWJs aWMgc3RhdGljIFBvbGtpdC5BdXRob3JpdHkgZ2V0X3N5bmMgKEdMaWIuQ2FuY2VsbGFibGU/IGNh bmNlbGxhYmxlID0gbnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlwdWJsaWMgYXN5bmMgYm9v bCByZWdpc3Rlcl9hdXRoZW50aWNhdGlvbl9hZ2VudCAoUG9sa2l0LlN1YmplY3Qgc3ViamVjdCwg c3RyaW5nIGxvY2FsZSwgc3RyaW5nIG9iamVjdF9wYXRoLCBHTGliLkNhbmNlbGxhYmxlPyBjYW5j ZWxsYWJsZSkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlwdWJsaWMgYm9vbCByZWdpc3Rlcl9hdXRo ZW50aWNhdGlvbl9hZ2VudF9zeW5jIChQb2xraXQuU3ViamVjdCBzdWJqZWN0LCBzdHJpbmcgbG9j YWxlLCBzdHJpbmcgb2JqZWN0X3BhdGgsIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0g bnVsbCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci1AQCAtNTYsMjEgKzU2LDIyIEBAIG5hbWVzcGFjZSBQ b2xraXQgewotIAlwdWJsaWMgY2xhc3MgQXV0aG9yaXphdGlvblJlc3VsdCA6IEdMaWIuT2JqZWN0 IHsKLSAJCVtDQ29kZSAoaGFzX2NvbnN0cnVjdF9mdW5jdGlvbiA9IGZhbHNlKV0KLSAJCXB1Ymxp YyBBdXRob3JpemF0aW9uUmVzdWx0IChib29sIGlzX2F1dGhvcml6ZWQsIGJvb2wgaXNfY2hhbGxl bmdlLCBQb2xraXQuRGV0YWlscz8gZGV0YWlscyk7Ci0tCQlwdWJsaWMgdW5vd25lZCBQb2xraXQu RGV0YWlscyBnZXRfZGV0YWlscyAoKTsKLSsJCXB1YmxpYyB1bm93bmVkIFBvbGtpdC5EZXRhaWxz PyBnZXRfZGV0YWlscyAoKTsKLSsJCVtWZXJzaW9uIChzaW5jZSA9ICIwLjEwMSIpXQotIAkJcHVi bGljIGJvb2wgZ2V0X2Rpc21pc3NlZCAoKTsKLSAJCXB1YmxpYyBib29sIGdldF9pc19hdXRob3Jp emVkICgpOwotIAkJcHVibGljIGJvb2wgZ2V0X2lzX2NoYWxsZW5nZSAoKTsKLSAJCXB1YmxpYyBi b29sIGdldF9yZXRhaW5zX2F1dGhvcml6YXRpb24gKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJp bmcgZ2V0X3RlbXBvcmFyeV9hdXRob3JpemF0aW9uX2lkICgpOwotKwkJcHVibGljIHVub3duZWQg c3RyaW5nPyBnZXRfdGVtcG9yYXJ5X2F1dGhvcml6YXRpb25faWQgKCk7Ci0gCX0KLSAJW0NDb2Rl IChjaGVhZGVyX2ZpbGVuYW1lID0gInBvbGtpdC9wb2xraXQuaCIsIHR5cGVfaWQgPSAicG9sa2l0 X2RldGFpbHNfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGNsYXNzIERldGFpbHMgOiBHTGliLk9i amVjdCB7Ci0gCQlbQ0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlw dWJsaWMgRGV0YWlscyAoKTsKLSAJCVtDQ29kZSAoYXJyYXlfbGVuZ3RoID0gZmFsc2UsIGFycmF5 X251bGxfdGVybWluYXRlZCA9IHRydWUpXQotLQkJcHVibGljIHN0cmluZ1tdIGdldF9rZXlzICgp OwotKwkJcHVibGljIHN0cmluZ1tdPyBnZXRfa2V5cyAoKTsKLSAJCXB1YmxpYyB2b2lkIGluc2Vy dCAoc3RyaW5nIGtleSwgc3RyaW5nPyB2YWx1ZSk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcg bG9va3VwIChzdHJpbmcga2V5KTsKLSsJCXB1YmxpYyB1bm93bmVkIHN0cmluZz8gbG9va3VwIChz dHJpbmcga2V5KTsKLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAicG9sa2l0L3Bv bGtpdC5oIiwgdHlwZV9pZCA9ICJwb2xraXRfcGVybWlzc2lvbl9nZXRfdHlwZSAoKSIpXQotIAlw dWJsaWMgY2xhc3MgUGVybWlzc2lvbiA6IEdMaWIuUGVybWlzc2lvbiwgR0xpYi5Bc3luY0luaXRh YmxlLCBHTGliLkluaXRhYmxlIHsKLUBAIC04OCw3ICs4OSw4IEBAIG5hbWVzcGFjZSBQb2xraXQg ewotIAkJW0NDb2RlIChoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQotIAkJcHJvdGVj dGVkIFN5c3RlbUJ1c05hbWUgKCk7Ci0gCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X25hbWUg KCk7Ci0tCQlwdWJsaWMgUG9sa2l0LlN1YmplY3QgZ2V0X3Byb2Nlc3Nfc3luYyAoR0xpYi5DYW5j ZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1Ymxp YyBQb2xraXQuU3ViamVjdD8gZ2V0X3Byb2Nlc3Nfc3luYyAoR0xpYi5DYW5jZWxsYWJsZT8gY2Fu Y2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBQb2xraXQuVW5p eFVzZXI/IGdldF91c2VyX3N5bmMgKEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVs bCkgdGhyb3dzIEdMaWIuRXJyb3I7Ci0gCQlwdWJsaWMgc3RhdGljIFBvbGtpdC5TdWJqZWN0IEBu ZXcgKHN0cmluZyBuYW1lKTsKLSAJCXB1YmxpYyB2b2lkIHNldF9uYW1lIChzdHJpbmcgbmFtZSk7 Ci0gCQlwdWJsaWMgc3RyaW5nIG5hbWUgeyBnZXQ7IHNldCBjb25zdHJ1Y3Q7IH0KLUBAIC0xNDYs OSArMTQ4LDEwIEBAIG5hbWVzcGFjZSBQb2xraXQgewotIAkJcHJvdGVjdGVkIFVuaXhTZXNzaW9u ICgpOwotIAkJcHVibGljIHVub3duZWQgc3RyaW5nIGdldF9zZXNzaW9uX2lkICgpOwotIAkJcHVi bGljIHN0YXRpYyBQb2xraXQuU3ViamVjdCBAbmV3IChzdHJpbmcgc2Vzc2lvbl9pZCk7Ci0tCQlw dWJsaWMgc3RhdGljIGFzeW5jIFBvbGtpdC5TdWJqZWN0IG5ld19mb3JfcHJvY2VzcyAoaW50IHBp ZCwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUpIHRocm93cyBHTGliLkVycm9yOwotLQkJ cHVibGljIHN0YXRpYyBQb2xraXQuU3ViamVjdCBuZXdfZm9yX3Byb2Nlc3Nfc3luYyAoaW50IHBp ZCwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUgPSBudWxsKSB0aHJvd3MgR0xpYi5FcnJv cjsKLSsJCXB1YmxpYyBzdGF0aWMgYXN5bmMgUG9sa2l0LlN1YmplY3Q/IG5ld19mb3JfcHJvY2Vz cyAoaW50IHBpZCwgR0xpYi5DYW5jZWxsYWJsZT8gY2FuY2VsbGFibGUpIHRocm93cyBHTGliLkVy cm9yOwotKwkJcHVibGljIHN0YXRpYyBQb2xraXQuU3ViamVjdD8gbmV3X2Zvcl9wcm9jZXNzX3N5 bmMgKGludCBwaWQsIEdMaWIuQ2FuY2VsbGFibGU/IGNhbmNlbGxhYmxlID0gbnVsbCkgdGhyb3dz IEdMaWIuRXJyb3I7Ci0gCQlwdWJsaWMgdm9pZCBzZXRfc2Vzc2lvbl9pZCAoc3RyaW5nIHNlc3Np b25faWQpOwotKwkJW05vQWNjZXNzb3JNZXRob2RdCi0gCQlwdWJsaWMgaW50IHBpZCB7IGNvbnN0 cnVjdDsgfQotIAkJcHVibGljIHN0cmluZyBzZXNzaW9uX2lkIHsgZ2V0OyBzZXQgY29uc3RydWN0 OyB9Ci0gCX0KLUBAIC0xNTYsMTcgKzE1OSwxNyBAQCBuYW1lc3BhY2UgUG9sa2l0IHsKLSAJcHVi bGljIGNsYXNzIFVuaXhVc2VyIDogR0xpYi5PYmplY3QsIFBvbGtpdC5JZGVudGl0eSB7Ci0gCQlb Q0NvZGUgKGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24gPSBmYWxzZSldCi0gCQlwcm90ZWN0ZWQgVW5p eFVzZXIgKCk7Ci0tCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgZ2V0X25hbWUgKCk7Ci0rCQlwdWJs aWMgdW5vd25lZCBzdHJpbmc/IGdldF9uYW1lICgpOwotIAkJcHVibGljIGludCBnZXRfdWlkICgp OwotIAkJcHVibGljIHN0YXRpYyBQb2xraXQuSWRlbnRpdHkgQG5ldyAoaW50IHVpZCk7Ci0tCQlw dWJsaWMgc3RhdGljIFBvbGtpdC5JZGVudGl0eSBuZXdfZm9yX25hbWUgKHN0cmluZyBuYW1lKSB0 aHJvd3MgR0xpYi5FcnJvcjsKLSsJCXB1YmxpYyBzdGF0aWMgUG9sa2l0LklkZW50aXR5PyBuZXdf Zm9yX25hbWUgKHN0cmluZyBuYW1lKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSAJCXB1YmxpYyB2b2lk IHNldF91aWQgKGludCB1aWQpOwotIAkJcHVibGljIGludCB1aWQgeyBnZXQ7IHNldCBjb25zdHJ1 Y3Q7IH0KLSAJfQotIAlbQ0NvZGUgKGNoZWFkZXJfZmlsZW5hbWUgPSAicG9sa2l0L3BvbGtpdC5o IiwgdHlwZV9pZCA9ICJwb2xraXRfaWRlbnRpdHlfZ2V0X3R5cGUgKCkiKV0KLSAJcHVibGljIGlu dGVyZmFjZSBJZGVudGl0eSA6IEdMaWIuT2JqZWN0IHsKLSAJCXB1YmxpYyBhYnN0cmFjdCBib29s IGVxdWFsIChQb2xraXQuSWRlbnRpdHkgYik7Ci0tCQlwdWJsaWMgc3RhdGljIFBvbGtpdC5JZGVu dGl0eSBmcm9tX3N0cmluZyAoc3RyaW5nIHN0cikgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCQlwdWJs aWMgc3RhdGljIFBvbGtpdC5JZGVudGl0eT8gZnJvbV9zdHJpbmcgKHN0cmluZyBzdHIpIHRocm93 cyBHTGliLkVycm9yOwotIAkJcHVibGljIGFic3RyYWN0IHVpbnQgaGFzaCAoKTsKLSAJCXB1Ymxp YyBhYnN0cmFjdCBzdHJpbmcgdG9fc3RyaW5nICgpOwotIAl9Ci1AQCAtMjAxLDcgKzIwNCw3IEBA IG5hbWVzcGFjZSBQb2xraXQgewotIAkJQURNSU5JU1RSQVRPUl9BVVRIRU5USUNBVElPTl9SRVFV SVJFRF9SRVRBSU5FRCwKLSAJCUFVVEhPUklaRUQ7Ci0gCQlwdWJsaWMgc3RhdGljIGJvb2wgZnJv bV9zdHJpbmcgKHN0cmluZyBzdHJpbmcsIFBvbGtpdC5JbXBsaWNpdEF1dGhvcml6YXRpb24gb3V0 X2ltcGxpY2l0X2F1dGhvcml6YXRpb24pOwotLQkJcHVibGljIHN0YXRpYyB1bm93bmVkIHN0cmlu ZyB0b19zdHJpbmcgKFBvbGtpdC5JbXBsaWNpdEF1dGhvcml6YXRpb24gaW1wbGljaXRfYXV0aG9y aXphdGlvbik7Ci0rCQlwdWJsaWMgdW5vd25lZCBzdHJpbmcgdG9fc3RyaW5nICgpOwotIAl9Ci0g CVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJwb2xraXQvcG9sa2l0LmgiLCBjcHJlZml4ID0g IlBPTEtJVF9FUlJPUl8iKV0KLSAJcHVibGljIGVycm9yZG9tYWluIEVycm9yIHsKLUBAIC0yMTIs NyArMjE1LDcgQEAgbmFtZXNwYWNlIFBvbGtpdCB7Ci0gCQlwdWJsaWMgc3RhdGljIEdMaWIuUXVh cmsgcXVhcmsgKCk7Ci0gCX0KLSAJW0NDb2RlIChjaGVhZGVyX2ZpbGVuYW1lID0gInBvbGtpdC9w b2xraXQuaCIpXQotLQlwdWJsaWMgc3RhdGljIFBvbGtpdC5JZGVudGl0eSBpZGVudGl0eV9mcm9t X3N0cmluZyAoc3RyaW5nIHN0cikgdGhyb3dzIEdMaWIuRXJyb3I7Ci0rCXB1YmxpYyBzdGF0aWMg UG9sa2l0LklkZW50aXR5PyBpZGVudGl0eV9mcm9tX3N0cmluZyAoc3RyaW5nIHN0cikgdGhyb3dz IEdMaWIuRXJyb3I7Ci0gCVtDQ29kZSAoY2hlYWRlcl9maWxlbmFtZSA9ICJwb2xraXQvcG9sa2l0 LmgiKV0KLSAJcHVibGljIHN0YXRpYyBQb2xraXQuU3ViamVjdCBzdWJqZWN0X2Zyb21fc3RyaW5n IChzdHJpbmcgc3RyKSB0aHJvd3MgR0xpYi5FcnJvcjsKLSB9Ci0tLSAKLTIuMjguMAotCmRpZmYg LS1naXQgYS9zcmNwa2dzL2J1ZGdpZS1kZXNrdG9wL3RlbXBsYXRlIGIvc3JjcGtncy9idWRnaWUt ZGVza3RvcC90ZW1wbGF0ZQppbmRleCBhZTVhOWQ1Zjc2OS4uMmNmMmRkYjUxMjMgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvYnVkZ2llLWRlc2t0b3AvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9idWRnaWUt ZGVza3RvcC90ZW1wbGF0ZQpAQCAtMSwyNCArMSwzMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn YnVkZ2llLWRlc2t0b3AnCiBwa2duYW1lPWJ1ZGdpZS1kZXNrdG9wCi12ZXJzaW9uPTEwLjUuMQot cmV2aXNpb249NAordmVyc2lvbj0xMC41LjIKK3JldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29u CiBidWlsZF9oZWxwZXI9Z2lyCi1jb25maWd1cmVfYXJncz0iLUR3aXRoLWd0ay1kb2M9ZmFsc2Ug LUR3aXRoLWRlc2t0b3AtaWNvbnM9bm9uZSIKK2NvbmZpZ3VyZV9hcmdzPSItRHdpdGgtZ3RrLWRv Yz1mYWxzZSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCB2YWxhIGdsaWIt ZGV2ZWwgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHNhc3NjIgotbWFrZWRlcGVuZHM9ImFsc2EtbGli LWRldmVsIGxpYm5vdGlmeS1kZXZlbCBhY2NvdW50c3NlcnZpY2UtZGV2ZWwgbGlicGVhcy1kZXZl bCBsaWJ3bmNrLWRldmVsCi1tdXR0ZXItZGV2ZWwgaWJ1cy1kZXZlbCBnbm9tZS1kZXNrdG9wLWRl dmVsIHB1bHNlYXVkaW8tZGV2ZWwgdXBvd2VyLWRldmVsIGd0ayszLWRldmVsIHBvbGtpdC1kZXZl bAotZ25vbWUtYmx1ZXRvb3RoLWRldmVsIGdub21lLW1lbnVzLWRldmVsIGdub21lLXNldHRpbmdz LWRhZW1vbi1kZXZlbCB2YWxhIGxpYnV1aWQtZGV2ZWwgbGlidXBvd2VyLWdsaWIzIgotZGVwZW5k cz0iZ25vbWUtc2Vzc2lvbiBnbm9tZS1zZXR0aW5ncy1kYWVtb24gZ25vbWUtY29udHJvbC1jZW50 ZXIgZWxvZ2luZCIKK21ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBsaWJub3RpZnktZGV2ZWwg YWNjb3VudHNzZXJ2aWNlLWRldmVsIGxpYnBlYXMtZGV2ZWwKKyBsaWJ3bmNrLWRldmVsIG11dHRl ci1kZXZlbCBpYnVzLWRldmVsIGdub21lLWRlc2t0b3AtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAor IHVwb3dlci1kZXZlbCBndGsrMy1kZXZlbCBwb2xraXQtZGV2ZWwgZ25vbWUtYmx1ZXRvb3RoLWRl dmVsIGdub21lLW1lbnVzLWRldmVsCisgZ25vbWUtc2V0dGluZ3MtZGFlbW9uLWRldmVsIHZhbGEg bGlidXVpZC1kZXZlbCBsaWJ1cG93ZXItZ2xpYjMiCitkZXBlbmRzPSJnbm9tZS1zZXNzaW9uIGdu b21lLXNldHRpbmdzLWRhZW1vbiBnbm9tZS1jb250cm9sLWNlbnRlciBlbG9naW5kCisgZ25vbWUt dGhlbWVzLWV4dHJhIgogc2hvcnRfZGVzYz0iTW9kZXJuIGRlc2t0b3AgZW52aXJvbm1lbnQgZnJv bSB0aGUgU29sdXMgUHJvamVjdCIKIG1haW50YWluZXI9IkxvcmVtIDxub3Rsb3JlbWlwc3VtQHBy b3Rvbm1haWwuY29tPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb25seSwgTEdQTC0yLjEtb25seSIKIGhv bWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vc29sdXMtcHJvamVjdC9idWRnaWUtZGVza3RvcCIK LWRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3NvbHVzLXByb2plY3QvYnVkZ2llLWRlc2t0 b3AvcmVsZWFzZXMvZG93bmxvYWQvdiR7dmVyc2lvbn0vYnVkZ2llLWRlc2t0b3AtJHt2ZXJzaW9u fS50YXIueHoiCi1jaGVja3N1bT1kMDM1ZWM3NjRlMDA5MzcyMmE4MzI0MTFhZWI2YWJhMjk2YzA5 OTVkOTI3ZWEwNjliMjA1YjE5Yzg1YWFlNTY1CitkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3JlbGVh c2VzL2Rvd25sb2FkL3Yke3ZlcnNpb259L2J1ZGdpZS1kZXNrdG9wLXYke3ZlcnNpb259LnRhci54 eiIKK2NoZWNrc3VtPWQ3MjE5YzFkYzZkMGUzZmU1NGFjMzMwNjJiZmQ0MjBhYjk0MTU4YmNmZTk0 MDlkMDljODVkN2U3YTIxYzY3ZmEKIAotcHJlX2NvbmZpZ3VyZSgpIHsKLQl2c2VkIC1pICdzL2V4 ZWMgZ25vbWUtc2Vzc2lvbi9leGVjIGdub21lLXNlc3Npb24gLS1idWlsdGluLycgc3JjL3Nlc3Np b24vYnVkZ2llLWRlc2t0b3AuaW4KK3ByZV9idWlsZCgpIHsKKwkjIGJ1ZGdpZS1kZXNrdG9wIHVz ZXMgaXRzIG93biBwb2xraXQgYmluZGluZ3MKKwkjIHByZXBlbmRzIHRvIG92ZXJyaWRlIHN5c3Rl bSB2YXBpCisJaWYgWyAtZiAiJFhCUFNfV1JBUFBFUkRJUi92YWxhYyIgXTsgdGhlbgorCQlzZWQg LWkgLWUgInMsL2Jpbi92YWxhYywmIC0tdmFwaWRpcj0kd3Jrc3JjL3ZhcGksIiBcCisJCQkiJFhC UFNfV1JBUFBFUkRJUi92YWxhYyIKKwlmaQogfQogCiBidWRnaWUtZGVza3RvcC1kZXZlbF9wYWNr YWdlKCkgewo= --===============4109263048863030047==--