From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Justin M. Forbes To: git-commits@fedoraproject.org Subject: [rpms/kernel] rawhide: kernel-7.2.0-0.rc2.260711gdd3210c47e8d.24 Date: Sat, 11 Jul 2026 16:00:10 GMT Message-ID: <178378561051.1.15142844758633200047.rpms-kernel-6d72a7385647@fedoraproject.org> List-ID: X-Git-Repo: rpms/kernel X-Git-Branch: rawhide X-Git-Rev: 6d72a7385647d4fe1d159e1bccdf3b3ea90255de ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMva2VybmVsCiAgICAgICAgICAgIEJyYW5jaCA6IHJhd2hpZGUKICAgICAgICAg ICAgQ29tbWl0IDogNmQ3MmE3Mzg1NjQ3ZDRmZTFkMTU5ZTFiY2NkZjNiM2VhOTAyNTVkZQogICAg ICAgICAgICBBdXRob3IgOiBKdXN0aW4gTS4gRm9yYmVzIDxqZm9yYmVzQGZlZG9yYXByb2plY3Qu b3JnPgogICAgICAgICAgICBEYXRlICAgOiAyMDI2LTA3LTExVDA5OjU5OjQ4LTA2OjAwCiAgICAg ICAgICAgIFN0YXRzICA6ICs5ODQvLTEzIGluIDggZmlsZShzKQogICAgICAgICAgICBVUkwgICAg OiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2tlcm5lbC9jLzZkNzJhNzM4NTY0 N2Q0ZmUxZDE1OWUxYmNjZGYzYjNlYTkwMjU1ZGU/YnJhbmNoPXJhd2hpZGUKCiAgICAgICAgICAg IExvZzoKICAgICAgICAgICAga2VybmVsLTcuMi4wLTAucmMyLjI2MDcxMWdkZDMyMTBjNDdlOGQu MjQKCiogU2F0IEp1bCAxMSAyMDI2IEZlZG9yYSBLZXJuZWwgVGVhbSA8a2VybmVsLXRlYW1AZmVk b3JhcHJvamVjdC5vcmc+IFs3LjIuMC0wLnJjMi5kZDMyMTBjNDdlOGQuMjRdCi0gcmVkaGF0L2tl cm5lbC5zcGVjOiByZXF1aXJlIGxpYmJhYmVsdHJhY2UyLWRldmVsIChZYWFrb3YgU2Vsa293aXR6 KQotIGF1dG9tb3RpdmU6IGVuYWJsZSBIVUdFVExCRlMgdG8gd29ya2Fyb3VuZCBidWlsZCBlcnJv ciAoU2NvdHQgV2VhdmVyKQpSZXNvbHZlczoKClNpZ25lZC1vZmYtYnk6IEp1c3RpbiBNLiBGb3Ji ZXMgPGpmb3JiZXNAZmVkb3JhcHJvamVjdC5vcmc+CgotLS0KZGlmZiAtLWdpdCBhL01ha2VmaWxl LnJoZWx2ZXIgYi9NYWtlZmlsZS5yaGVsdmVyCmluZGV4IDNmYTA3MDMuLjY0NzZhNjQgMTAwNjQ0 Ci0tLSBhL01ha2VmaWxlLnJoZWx2ZXIKKysrIGIvTWFrZWZpbGUucmhlbHZlcgpAQCAtMTIsNyAr MTIsNyBAQCBSSEVMX01JTk9SID0gOTkKICMKICMgVXNlIHRoaXMgc3BvdCB0byBhdm9pZCBmdXR1 cmUgbWVyZ2UgY29uZmxpY3RzLgogIyBEbyBub3QgdHJpbSB0aGlzIGNvbW1lbnQuCi1SSEVMX1JF TEVBU0UgPSAyMworUkhFTF9SRUxFQVNFID0gMjQKIAogIwogIyBSSEVMX1JFQkFTRV9OVU0KCmRp ZmYgLS1naXQgYS9rZXJuZWwtczM5MHgtZGVidWctcmhlbC5jb25maWcgYi9rZXJuZWwtczM5MHgt ZGVidWctcmhlbC5jb25maWcKaW5kZXggYTY2YWEwZS4uMWI3ZDA0OSAxMDA2NDQKLS0tIGEva2Vy bmVsLXMzOTB4LWRlYnVnLXJoZWwuY29uZmlnCisrKyBiL2tlcm5lbC1zMzkweC1kZWJ1Zy1yaGVs LmNvbmZpZwpAQCAtNTIwNiw4ICs1MjA2LDggQEAgQ09ORklHX1JFQUxURUtfUEhZX0hXTU9OPXkK ICMgQ09ORklHX1JFRE1JX1dNSSBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUVEX1NPTE9NT05fVEVT VCBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUdNQVBfQlVJTEQgaXMgbm90IHNldAotIyBDT05GSUdf UkVHTUFQIGlzIG5vdCBzZXQKIENPTkZJR19SRUdNQVBfS1VOSVQ9bQorQ09ORklHX1JFR01BUD15 CiAjIENPTkZJR19SRUdVTEFUT1JfODhQRzg2WCBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUdVTEFU T1JfQUNUODg2NSBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUdVTEFUT1JfQUQ1Mzk4IGlzIG5vdCBz ZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwtczM5MHgtcmhlbC5jb25maWcgYi9rZXJuZWwtczM5MHgt cmhlbC5jb25maWcKaW5kZXggMGEyNWQzOS4uOGU1ZTBmMiAxMDA2NDQKLS0tIGEva2VybmVsLXMz OTB4LXJoZWwuY29uZmlnCisrKyBiL2tlcm5lbC1zMzkweC1yaGVsLmNvbmZpZwpAQCAtNTE4Miw4 ICs1MTgyLDggQEAgQ09ORklHX1JFQUxURUtfUEhZX0hXTU9OPXkKICMgQ09ORklHX1JFRE1JX1dN SSBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUVEX1NPTE9NT05fVEVTVCBpcyBub3Qgc2V0CiAjIENP TkZJR19SRUdNQVBfQlVJTEQgaXMgbm90IHNldAotIyBDT05GSUdfUkVHTUFQIGlzIG5vdCBzZXQK IENPTkZJR19SRUdNQVBfS1VOSVQ9bQorQ09ORklHX1JFR01BUD15CiAjIENPTkZJR19SRUdVTEFU T1JfODhQRzg2WCBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUdVTEFUT1JfQUNUODg2NSBpcyBub3Qg c2V0CiAjIENPTkZJR19SRUdVTEFUT1JfQUQ1Mzk4IGlzIG5vdCBzZXQKCmRpZmYgLS1naXQgYS9r ZXJuZWwtczM5MHgtemZjcGR1bXAtcmhlbC5jb25maWcgYi9rZXJuZWwtczM5MHgtemZjcGR1bXAt cmhlbC5jb25maWcKaW5kZXggZmMwZWQ0ZS4uOWE3YWZjNCAxMDA2NDQKLS0tIGEva2VybmVsLXMz OTB4LXpmY3BkdW1wLXJoZWwuY29uZmlnCisrKyBiL2tlcm5lbC1zMzkweC16ZmNwZHVtcC1yaGVs LmNvbmZpZwpAQCAtNTE5NCw4ICs1MTk0LDggQEAgQ09ORklHX1JFQUxURUtfUEhZX0hXTU9OPXkK ICMgQ09ORklHX1JFRE1JX1dNSSBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUVEX1NPTE9NT05fVEVT VCBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUdNQVBfQlVJTEQgaXMgbm90IHNldAotIyBDT05GSUdf UkVHTUFQIGlzIG5vdCBzZXQKIENPTkZJR19SRUdNQVBfS1VOSVQ9bQorQ09ORklHX1JFR01BUD15 CiAjIENPTkZJR19SRUdVTEFUT1JfODhQRzg2WCBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUdVTEFU T1JfQUNUODg2NSBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUdVTEFUT1JfQUQ1Mzk4IGlzIG5vdCBz ZXQKCmRpZmYgLS1naXQgYS9rZXJuZWwuY2hhbmdlbG9nIGIva2VybmVsLmNoYW5nZWxvZwppbmRl eCA3OWE3OGIxLi5jZjYzNDhiIDEwMDY0NAotLS0gYS9rZXJuZWwuY2hhbmdlbG9nCisrKyBiL2tl cm5lbC5jaGFuZ2Vsb2cKQEAgLTEsOCArMSwxNCBAQAotKiBUaHUgSnVsIDA5IDIwMjYgRmVkb3Jh IEtlcm5lbCBUZWFtIDxrZXJuZWwtdGVhbUBmZWRvcmFwcm9qZWN0Lm9yZz4gWzcuMi4wLTAucmMy LjBlMzViOWI2ZWMwZi4yM10KKyogU2F0IEp1bCAxMSAyMDI2IEZlZG9yYSBLZXJuZWwgVGVhbSA8 a2VybmVsLXRlYW1AZmVkb3JhcHJvamVjdC5vcmc+IFs3LjIuMC0wLnJjMi5kZDMyMTBjNDdlOGQu MjRdCiAtIHJlZGhhdC9rZXJuZWwuc3BlYzogcmVxdWlyZSBsaWJiYWJlbHRyYWNlMi1kZXZlbCAo WWFha292IFNlbGtvd2l0eikKIC0gYXV0b21vdGl2ZTogZW5hYmxlIEhVR0VUTEJGUyB0byB3b3Jr YXJvdW5kIGJ1aWxkIGVycm9yIChTY290dCBXZWF2ZXIpCiBSZXNvbHZlczogCiAKKyogU2F0IEp1 bCAxMSAyMDI2IEZlZG9yYSBLZXJuZWwgVGVhbSA8a2VybmVsLXRlYW1AZmVkb3JhcHJvamVjdC5v cmc+IFs3LjIuMC0wLnJjMi5kZDMyMTBjNDdlOGQuMjNdCistIFR1cm4gb24gQ09ORklHX1JFR01B UCBmb3IgUkhFTCBzMzkweCBwZW5kaW5nIGZvciBtaXNtYXRjaCAoSnVzdGluIE0uIEZvcmJlcykK Ky0gcmVkaGF0OiBhZGQga21hcC5weSB0b29sIGFuZCBrZXJuZWwta21hcC1pbnRlcm5hbCBwYWNr YWdlIChSYWRvIFZyYm92c2t5KQorLSBMaW51eCB2Ny4yLjAtMC5yYzIuZGQzMjEwYzQ3ZThkCitS ZXNvbHZlczogCisKICogVGh1IEp1bCAwOSAyMDI2IEZlZG9yYSBLZXJuZWwgVGVhbSA8a2VybmVs LXRlYW1AZmVkb3JhcHJvamVjdC5vcmc+IFs3LjIuMC0wLnJjMi4wZTM1YjliNmVjMGYuMjJdCiAt IHVraS12aXJ0OiBBZGQgZmRpc2sgdG8gdGhlIGluaXRyYW1mcyB0byBtYWtlIHN5c3RlbWQtcmVw YXJ0IGZ1bmN0aW9uYWwgKFZpdGFseSBLdXpuZXRzb3YpCiAtIHJlZGhhdC9jb25maWdzOiBFbmFi bGUgRXBzb24gUlg4MTExIFJUQyBkcml2ZXIgZm9yIGFybS9hYXJjaDY0IGJ1aWxkcy4gU2lnbmVk LW9mZi1ieTogTmlybWFsYSBEYWx2aSA8bmRhbHZpQHJlZGhhdC5jb20+IChOaXJtYWxhIERhbHZp KQoKZGlmZiAtLWdpdCBhL2tlcm5lbC5zcGVjIGIva2VybmVsLnNwZWMKaW5kZXggMGNlYThmNy4u NDJhM2FmMCAxMDA2NDQKLS0tIGEva2VybmVsLnNwZWMKKysrIGIva2VybmVsLnNwZWMKQEAgLTE5 MCwxMyArMTkwLDEzIEBAIFN1bW1hcnk6IFRoZSBMaW51eCBrZXJuZWwKICVkZWZpbmUgc3BlY3Jw bXZlcnNpb24gNy4yLjAKICVkZWZpbmUgc3BlY3ZlcnNpb24gNy4yLjAKICVkZWZpbmUgcGF0Y2h2 ZXJzaW9uIDcuMgotJWRlZmluZSBwa2dyZWxlYXNlIDAucmMyLjI2MDcwOWcwZTM1YjliNmVjMGYu MjMKKyVkZWZpbmUgcGtncmVsZWFzZSAwLnJjMi4yNjA3MTFnZGQzMjEwYzQ3ZThkLjI0CiAlZGVm aW5lIGt2ZXJzaW9uIDcKLSVkZWZpbmUgdGFyZmlsZV9yZWxlYXNlIDcuMi1yYzItMjItZzBlMzVi OWI2ZWMwZgorJWRlZmluZSB0YXJmaWxlX3JlbGVhc2UgNy4yLXJjMi0yNjQtZ2RkMzIxMGM0N2U4 ZAogIyBUaGlzIGlzIG5lZWRlZCB0byBkbyBtZXJnZSB3aW5kb3cgdmVyc2lvbiBtYWdpYwogJWRl ZmluZSBwYXRjaGxldmVsIDIKICMgVGhpcyBhbGxvd3MgcGtnX3JlbGVhc2UgdG8gaGF2ZSBjb25m aWd1cmFibGUgJSV7P2Rpc3R9IHRhZwotJWRlZmluZSBzcGVjcmVsZWFzZSAwLnJjMi4yNjA3MDln MGUzNWI5YjZlYzBmLjIzJXs/YnVpbGRpZH0lez9kaXN0fQorJWRlZmluZSBzcGVjcmVsZWFzZSAw LnJjMi4yNjA3MTFnZGQzMjEwYzQ3ZThkLjI0JXs/YnVpbGRpZH0lez9kaXN0fQogIyBUaGlzIGRl ZmluZXMgdGhlIGthYmkgdGFyYmFsbCB2ZXJzaW9uCiAlZGVmaW5lIGthYml2ZXJzaW9uIDcuMi4w CiAKQEAgLTI4Miw2ICsyODIsOCBAQCBTdW1tYXJ5OiBUaGUgTGludXgga2VybmVsCiAlZGVmaW5l IHdpdGhfeW5sICAgICAgJXs/X3dpdGhvdXRfeW5sOiAgICAgIDB9ICV7PyFfd2l0aG91dF95bmw6 ICAgICAgMX0KICMga2VybmVsLWRlYnVnaW5mbwogJWRlZmluZSB3aXRoX2RlYnVnaW5mbyAlez9f d2l0aG91dF9kZWJ1Z2luZm86IDB9ICV7PyFfd2l0aG91dF9kZWJ1Z2luZm86IDF9CisjIGtlcm5l bC1rbWFwLWludGVybmFsOiBzb3VyY2UtdG8tbW9kdWxlIG1hcHBpbmcgZGF0YSAoSlNPTikKKyVk ZWZpbmUgd2l0aF9rbWFwICAgICAgJXs/X3dpdGhvdXRfa21hcDogICAgICAwfSAlez8hX3dpdGhv dXRfa21hcDogICAgICAxfQogIyBrZXJuZWwtYWJpLXN0YWJsZWxpc3RzCiAlZGVmaW5lIHdpdGhf a2VybmVsX2FiaV9zdGFibGVsaXN0cyAlez9fd2l0aG91dF9rZXJuZWxfYWJpX3N0YWJsZWxpc3Rz OiAwfSAlez8hX3dpdGhvdXRfa2VybmVsX2FiaV9zdGFibGVsaXN0czogMX0KICMgaW50ZXJuYWwg c2FtcGxlcyBhbmQgc2VsZnRlc3RzCkBAIC03MDUsNiArNzA3LDEwIEBAIFN1bW1hcnk6IFRoZSBM aW51eCBrZXJuZWwKICVkZWZpbmUgX2VuYWJsZV9kZWJ1Z19wYWNrYWdlcyAwCiAlZW5kaWYKIAor JWlmbmFyY2ggeDg2XzY0IHBwYzY0bGUgczM5MHggYWFyY2g2NCByaXNjdjY0CislZGVmaW5lIHdp dGhfa21hcCAwCislZW5kaWYKKwogIyBBcmNoaXRlY3R1cmVzIHdlIGJ1aWxkIHRvb2xzL2NwdXBv d2VyIG9uCiAlaWYgMCV7P2ZlZG9yYX0KICVkZWZpbmUgY3B1cG93ZXJhcmNocyAle2l4ODZ9IHg4 Nl82NCBwcGM2NGxlIGFhcmNoNjQgcmlzY3Y2NApAQCAtMTIwNCw2ICsxMjEwLDkgQEAgU291cmNl NDkxOiAle25hbWV9LXg4Nl82NC1hdXRvbW90aXZlLWRlYnVnLXJoZWwuY29uZmlnCiAjIFNvdXJj ZXMgZm9yIGtlcm5lbC10b29scwogU291cmNlMjAwMjoga3ZtX3N0YXQubG9ncm90YXRlCiAKKyMg U291cmNlcyBmb3Iga2VybmVsLWttYXAtaW50ZXJuYWwKK1NvdXJjZTIxMDA6IGttYXAucHkKKwog IyBTb21lIHBlb3BsZSBlbmpveSBidWlsZGluZyBjdXN0b21pemVkIGtlcm5lbHMgZnJvbSB0aGUg ZGlzdC1naXQgaW4gRmVkb3JhIGFuZAogIyB1c2UgdGhpcyB0byBvdmVycmlkZSBjb25maWd1cmF0 aW9uIG9wdGlvbnMuIE9uZSBkYXkgdGhleSBtYXkgYWxsIHVzZSB0aGUKICMgc291cmNlIHRyZWUs IGJ1dCBpbiB0aGUgbWVhbiB0aW1lIHdlIGNhcnJ5IHRoaXMgdG8gc3VwcG9ydCB0aGUgbGVnYWN5 IHdvcmtmbG93CkBAIC0xNDUwLDcgKzE0NTksNyBAQCBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgZGVi dWcgaW5mb3JtYXRpb24gZm9yIHBhY2thZ2UgJXtuYW1lfS10b29scy4KICMgc3ltbGlua3MgYmVj YXVzZSBvZiB0aGUgdHJhaWxpbmcgbm9ubWF0Y2hpbmcgYWx0ZXJuYXRpb24gYW5kCiAjIHRoZSBs ZWFkaW5nIC4qLCBiZWNhdXNlIG9mIGZpbmQtZGVidWdpbmZvLnNoJ3MgYnVnZ3kgaGFuZGxpbmcK ICMgb2YgbWF0Y2hpbmcgdGhlIHBhdHRlcm4gYWdhaW5zdCB0aGUgc3ltbGlua3MgZmlsZS4KLSV7 ZXhwYW5kOiUlZ2xvYmFsIF9maW5kX2RlYnVnaW5mb19vcHRzICV7P19maW5kX2RlYnVnaW5mb19v cHRzfSAtcCAnLiolJXtfYmluZGlyfS9ib290Y29uZmlnKFwuZGVidWcpP3wuKiUle19iaW5kaXJ9 L2NlbnRyaW5vLWRlY29kZShcLmRlYnVnKT98LiolJXtfYmluZGlyfS9wb3dlcm5vdy1rOC1kZWNv ZGUoXC5kZWJ1Zyk/fC4qJSV7X2JpbmRpcn0vY3B1cG93ZXIoXC5kZWJ1Zyk/fC4qJSV7X2xpYmRp cn0vbGliY3B1cG93ZXIuKnwuKiUle3B5dGhvbjNfc2l0ZWFyY2h9L19yYXdfcHlsaWJjcHVwb3dl ci4qfC4qJSV7X2JpbmRpcn0vdHVyYm9zdGF0KFwuZGVidWcpP3wuKiUle19iaW5kaXJ9L3g4Nl9l bmVyZ3lfcGVyZl9wb2xpY3koXC5kZWJ1Zyk/fC4qJSV7X2JpbmRpcn0vdG1vbihcLmRlYnVnKT98 LiolJXtfYmluZGlyfS9sc2dwaW8oXC5kZWJ1Zyk/fC4qJSV7X2JpbmRpcn0vZ3Bpby1oYW1tZXIo XC5kZWJ1Zyk/fC4qJSV7X2JpbmRpcn0vZ3Bpby1ldmVudC1tb24oXC5kZWJ1Zyk/fC4qJSV7X2Jp bmRpcn0vZ3Bpby13YXRjaChcLmRlYnVnKT98LiolJXtfYmluZGlyfS9paW9fZXZlbnRfbW9uaXRv cihcLmRlYnVnKT98LiolJXtfYmluZGlyfS9paW9fZ2VuZXJpY19idWZmZXIoXC5kZWJ1Zyk/fC4q JSV7X2JpbmRpcn0vbHNpaW8oXC5kZWJ1Zyk/fC4qJSV7X2JpbmRpcn0vaW50ZWwtc3BlZWQtc2Vs ZWN0KFwuZGVidWcpP3wuKiUle19iaW5kaXJ9L3BhZ2Vfb3duZXJfc29ydChcLmRlYnVnKT98Liol JXtfYmluZGlyfS9zbGFiaW5mbyhcLmRlYnVnKT98LiolJXtfc2JpbmRpcn0vaW50ZWxfc2RzaShc LmRlYnVnKT98WFhYJyAtbyAle25hbWV9LXRvb2xzLWRlYnVnaW5mby5saXN0fQorJXtleHBhbmQ6 JSVnbG9iYWwgX2ZpbmRfZGVidWdpbmZvX29wdHMgJXs/X2ZpbmRfZGVidWdpbmZvX29wdHN9IC1w ICcuKiUle19iaW5kaXJ9L2Jvb3Rjb25maWcoXC5kZWJ1Zyk/fC4qJSV7X2JpbmRpcn0vY2VudHJp bm8tZGVjb2RlKFwuZGVidWcpP3wuKiUle19iaW5kaXJ9L3Bvd2Vybm93LWs4LWRlY29kZShcLmRl YnVnKT98LiolJXtfYmluZGlyfS9jcHVwb3dlcihcLmRlYnVnKT98LiolJXtfbGliZGlyfS9saWJj cHVwb3dlci4qfC4qJSV7cHl0aG9uM19zaXRlYXJjaH0vX3Jhd19weWxpYmNwdXBvd2VyLip8Liol JXtfYmluZGlyfS90dXJib3N0YXQoXC5kZWJ1Zyk/fC4qJSV7X2JpbmRpcn0veDg2X2VuZXJneV9w ZXJmX3BvbGljeShcLmRlYnVnKT98LiolJXtfYmluZGlyfS90bW9uKFwuZGVidWcpP3wuKiUle19i aW5kaXJ9L2xzZ3BpbyhcLmRlYnVnKT98LiolJXtfYmluZGlyfS9ncGlvLWhhbW1lcihcLmRlYnVn KT98LiolJXtfYmluZGlyfS9ncGlvLWV2ZW50LW1vbihcLmRlYnVnKT98LiolJXtfYmluZGlyfS9n cGlvLXdhdGNoKFwuZGVidWcpP3wuKiUle19iaW5kaXJ9L2lpb19ldmVudF9tb25pdG9yKFwuZGVi dWcpP3wuKiUle19iaW5kaXJ9L2lpb19nZW5lcmljX2J1ZmZlcihcLmRlYnVnKT98LiolJXtfYmlu ZGlyfS9sc2lpbyhcLmRlYnVnKT98LiolJXtfYmluZGlyfS9pbnRlbC1zcGVlZC1zZWxlY3QoXC5k ZWJ1Zyk/fC4qJSV7X2JpbmRpcn0vcGFnZV9vd25lcl9zb3J0KFwuZGVidWcpP3wuKiUle19iaW5k aXJ9L3NsYWJpbmZvKFwuZGVidWcpP3wuKiUle19zYmluZGlyfS9pbnRlbF9zZHNpKFwuZGVidWcp P3wuKiUle19iaW5kaXJ9L3lubHRvb2woXC5kZWJ1Zyk/fFhYWCcgLW8gJXtuYW1lfS10b29scy1k ZWJ1Z2luZm8ubGlzdH0KIAogJWlmICV7d2l0aF90b29sc30gJiYgJXt3aXRoX3lubH0KICVwYWNr YWdlIC1uIHB5dGhvbjMtJXtuYW1lfS10b29scwpAQCAtMTUyOSw2ICsxNTM4LDI3IEBAIFRoaXMg cGFja2FnZSBwcm92aWRlcyBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgdGhlIHJ2IHBhY2thZ2UuCiAj IHdpdGhfdG9vbHMKICVlbmRpZgogCislaWYgJXt3aXRoX2ttYXB9ICYmICV7d2l0aF9iYXNlfQor JXBhY2thZ2UgLW4gJXtuYW1lfS1rbWFwLWludGVybmFsCitTdW1tYXJ5OiBLZXJuZWwgc291cmNl LXRvLW1vZHVsZSBtYXBwaW5nIGRhdGEgYW5kIG1vZHVsZSBsaXN0CitHcm91cDogRGV2ZWxvcG1l bnQvU3lzdGVtCitCdWlsZFJlcXVpcmVzOiBweXRob24zCislZGVzY3JpcHRpb24gLW4gJXtuYW1l fS1rbWFwLWludGVybmFsCitUaGUgJXtuYW1lfS1rbWFwLWludGVybmFsIHBhY2thZ2UgY29udGFp bnMgYSBKU09OIG1hcHBpbmcgZmlsZSB0aGF0IGRlc2NyaWJlcword2hpY2ggQyBzb3VyY2UgZmls ZXMgY29udHJpYnV0ZWQgdG8gZWFjaCBrZXJuZWwgbW9kdWxlIGFuZCB0byB0aGUgYnVpbHQtaW4K K3ZtbGludXggaW1hZ2UsIGFuZCB3aGljaCBSUE0gcGFja2FnZSBlYWNoIG1vZHVsZSBpcyBzaGlw cGVkIGluLgorCitGaWxlcyBpbnN0YWxsZWQgdW5kZXIgL3Vzci9zaGFyZS8le25hbWV9LWttYXAt aW50ZXJuYWwvOgorICBrZXJuZWwtbWFwLTxLVkVSUkVMPi5qc29uIC0gdW5pZmllZCBtYXBwaW5n IGZpbGUgZm9yIGFsbCBrZXJuZWwgdmFyaWFudHMgY29udGFpbmluZzoKKyAgICAtIHZhcmlhbnRz OiAgICBsaXN0IG9mIHZhcmlhbnQgbmFtZXMgKGUuZy4sIFsic3RvY2siLCAicnQiLCAiYXV0b21v dGl2ZSJdKQorICAgIC0gc291cmNlLW1hcDogIHNvdXJjZSBmaWxlIG1hcHBpbmdzCisgICAgICAt IG9iai1zcmM6ICAgbWFwcyBrZXJuZWwgb2JqZWN0cyB0byBzb3VyY2UgZmlsZXMgd2l0aCB2YXJp YW50IGluZGljZXMKKyAgICAgIC0gc3JjLW9iajogICBtYXBzIHNvdXJjZSBmaWxlcyB0byBrZXJu ZWwgb2JqZWN0cyB3aXRoIHZhcmlhbnQgaW5kaWNlcworICAgIC0gbW9kdWxlLW1hcDogIG1vZHVs ZSB0byBSUE0gbWFwcGluZ3MKKyAgICAgIC0gbW9kdWxlLXJwbTogIG1hcHMgbW9kdWxlIG5hbWVz IHRvIFJQTSBwYWNrYWdlIG5hbWVzIHdpdGggdmFyaWFudCBpbmRpY2VzCisgICAgICAtIHJwbS1t b2R1bGVzOiBtYXBzIFJQTSBwYWNrYWdlIG5hbWVzIHRvIG1vZHVsZSBuYW1lcyB3aXRoIHZhcmlh bnQgaW5kaWNlcworJWVuZGlmCisKICVpZiAle3dpdGhfc2VsZnRlc3RzfQogCiAlcGFja2FnZSBz ZWxmdGVzdHMtaW50ZXJuYWwKQEAgLTMxODMsNiArMzIxMyw0NCBAQCBCdWlsZEtlcm5lbCgpIHsK ICVlbmRpZgogICAgIGZpICMgJERvTW9kdWxlcyAtZXEgMQogCislaWYgJXt3aXRoX2ttYXB9ICYm ICV7d2l0aF9iYXNlfQorICAgICMgR2VuZXJhdGUgc291cmNlLXRvLW1vZHVsZSBtYXBwaW5nIGRh dGEgdXNpbmcga21hcC5weS4KKyAgICAjIE11c3QgcnVuIGJlZm9yZSB0aGUgbmV4dCBCdWlsZEtl cm5lbCBjYWxsIGlzc3VlcyBtYWtlIG1ycHJvcGVyLCB3aGljaAorICAgICMgd291bGQgd2lwZSB0 aGUgLmNtZCBmaWxlcyB0aGF0IGttYXAucHkgcmVhZHMuICBTa2lwIGRlYnVnIHZhcmlhbnRzCisg ICAgIyAoc2FtZSBzb3VyY2UgbWFwcGluZyBhcyB0aGUgYmFzZSBrZXJuZWwpLgorICAgIGlmIFtb ICIkVmFyaWFudCIgIT0gKmRlYnVnKiBdXTsgdGhlbgorICAgICAgICBfa21hcF9iZGlyPSQocHdk KQorICAgICAgICBfa21hcF9iYXNlZGlyPSV7X2J1aWxkZGlyfS9rbWFwLWRhdGEKKyAgICAgICAg X2ttYXBfbWVyZ2VkPSRfa21hcF9iYXNlZGlyL2tlcm5lbC1tYXAuanNvbgorICAgICAgICBfa21h cF92YXJpYW50PSR7VmFyaWFudDotc3RvY2t9CisgICAgICAgIF9rbWFwX2xpc3RwcmVmaXg9Li4v a2VybmVsJHtWYXJpYW50OistJHtWYXJpYW50fX0KKyAgICAgICAgbWtkaXIgLXAgJF9rbWFwX2Jh c2VkaXIKKworICAgICAgICAjIEJ1aWxkIGttYXAucHkgYXJndW1lbnRzOyBtZXJnZSB3aXRoIGV4 aXN0aW5nIGRhdGEgaWYgcHJlc2VudAorICAgICAgICBfa21hcF9hcmdzPSItLWRpcmVjdG9yeSAk X2ttYXBfYmRpciAtLW91dHB1dGRpciAkX2ttYXBfYmFzZWRpciAtLXJoZWwgdXBzdHJlYW0gLS12 YXJpYW50ICRfa21hcF92YXJpYW50IC0tdGltZSIKKyAgICAgICAgX2ttYXBfYXJncz0iJF9rbWFw X2FyZ3MgLS12bWxpbnV4LXJwbSAle25hbWV9LWNvcmUtJXtLVkVSUkVMfS5ycG0iCisgICAgICAg IGlmIFsgLWYgIiRfa21hcF9tZXJnZWQiIF07IHRoZW4KKyAgICAgICAgICAgIF9rbWFwX2FyZ3M9 IiRfa21hcF9hcmdzIC0taW5wdXQga2VybmVsLW1hcC5qc29uIgorICAgICAgICBmaQorCisgICAg ICAgICMgQWRkIG1vZHVsZSBsaXN0IGZpbGVzIGZvciBtb2R1bGUtdG8tUlBNIG1hcHBpbmcKKyAg ICAgICAgZm9yIF9rbWFwX3R5cGUgaW4gbW9kdWxlcy1jb3JlIG1vZHVsZXMgbW9kdWxlcy1leHRy YSBtb2R1bGVzLWludGVybmFsOyBkbworICAgICAgICAgICAgaWYgWyAtZiAiJHtfa21hcF9saXN0 cHJlZml4fS0ke19rbWFwX3R5cGV9Lmxpc3QiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBfa21h cF9ycG09JXtuYW1lfS0ke19rbWFwX3R5cGV9LSV7S1ZFUlJFTH0ucnBtCisgICAgICAgICAgICAg ICAgX2ttYXBfYXJncz0iJF9rbWFwX2FyZ3MgLS1tb2R1bGUtbGlzdCAke19rbWFwX3JwbX06JHtf a21hcF9saXN0cHJlZml4fS0ke19rbWFwX3R5cGV9Lmxpc3QiCisgICAgICAgICAgICBmaQorICAg ICAgICBkb25lCislaWYgMCV7IT9mZWRvcmE6MX0KKyAgICAgICAgaWYgWyAtZiAiJHtfa21hcF9s aXN0cHJlZml4fS1tb2R1bGVzLXBhcnRuZXIubGlzdCIgXTsgdGhlbgorICAgICAgICAgICAgX2tt YXBfcnBtPSV7bmFtZX0tbW9kdWxlcy1wYXJ0bmVyLSV7S1ZFUlJFTH0ucnBtCisgICAgICAgICAg ICBfa21hcF9hcmdzPSIkX2ttYXBfYXJncyAtLW1vZHVsZS1saXN0ICR7X2ttYXBfcnBtfToke19r bWFwX2xpc3RwcmVmaXh9LW1vZHVsZXMtcGFydG5lci5saXN0IgorICAgICAgICBmaQorJWVuZGlm CisKKyAgICAgICAgcHl0aG9uMyAle1NPVVJDRTIxMDB9ICRfa21hcF9hcmdzCisgICAgZmkKKyVl bmRpZgorCiAgICAgcmVtb3ZlX2RlcG1vZF9maWxlcygpCiAgICAgewogICAgICAgICAjIHJlbW92 ZSBmaWxlcyB0aGF0IHdpbGwgYmUgYXV0byBnZW5lcmF0ZWQgYnkgZGVwbW9kIGF0IHJwbSAtaSB0 aW1lCkBAIC00MDkxLDYgKzQxNTksMTQgQEAgZmluZCAtdHlwZSBmICEgLWV4ZWN1dGFibGUgLWV4 ZWMgaW5zdGFsbCAtRCAtbTY0NCB7fSAle2J1aWxkcm9vdH0le19saWJleGVjZGlyfS8KIHBvcGQK ICVlbmRpZgogCislaWYgJXt3aXRoX2ttYXB9ICYmICV7d2l0aF9iYXNlfQorIyBJbnN0YWxsIGtt YXAgZGF0YSBmaWxlcyBwcm9kdWNlZCBkdXJpbmcgJWJ1aWxkLgorX2ttYXBfYmFzZWRpcj0le19i dWlsZGRpcn0va21hcC1kYXRhCitfa21hcF9kZXN0YmFzZT0kUlBNX0JVSUxEX1JPT1Qle19kYXRh ZGlyfS8le25hbWV9LWttYXAtaW50ZXJuYWwKK21rZGlyIC1wICRfa21hcF9kZXN0YmFzZQoraW5z dGFsbCAtbSA2NDQgJF9rbWFwX2Jhc2VkaXIva2VybmVsLW1hcC5qc29uICRfa21hcF9kZXN0YmFz ZS9rZXJuZWwtbWFwLSV7S1ZFUlJFTH0uanNvbgorJWVuZGlmCisKICMjIwogIyMjIGNsZWFuCiAj IyMKQEAgLTQ2NDksNiArNDcyNSwxMyBAQCBmaVwKICV7X2xpYmV4ZWNkaXJ9L2tzZWxmdGVzdHMK ICVlbmRpZgogCislaWYgJXt3aXRoX2ttYXB9ICYmICV7d2l0aF9iYXNlfQorJWZpbGVzIC1uICV7 bmFtZX0ta21hcC1pbnRlcm5hbAorJWRlZmF0dHIoLSxyb290LHJvb3QpCislZGlyICV7X2RhdGFk aXJ9LyV7bmFtZX0ta21hcC1pbnRlcm5hbAorJXtfZGF0YWRpcn0vJXtuYW1lfS1rbWFwLWludGVy bmFsL2tlcm5lbC1tYXAtJXtLVkVSUkVMfS5qc29uCislZW5kaWYKKwogIyBlbXB0eSBtZXRhLXBh Y2thZ2UKICVpZiAle3dpdGhfc3RvY2tfYmFzZX0KICVpZm5hcmNoICVub2J1aWxkYXJjaGVzIG5v YXJjaApAQCAtNDg1OSwxMCArNDk0MiwxOCBAQCBmaVwKICMKICMKICVjaGFuZ2Vsb2cKLSogVGh1 IEp1bCAwOSAyMDI2IEZlZG9yYSBLZXJuZWwgVGVhbSA8a2VybmVsLXRlYW1AZmVkb3JhcHJvamVj dC5vcmc+IFs3LjIuMC0wLnJjMi4wZTM1YjliNmVjMGYuMjNdCisqIFNhdCBKdWwgMTEgMjAyNiBK dXN0aW4gTS4gRm9yYmVzIDxqZm9yYmVzQGZlZG9yYXByb2plY3Qub3JnPiBbNy4yLjAtMC5yYzIu MjYwNzExZ2RkMzIxMGM0N2U4ZC4yNF0KKy0gcmVkaGF0OiBtb3ZlIHlubHRvb2wgZGVidWdpbmZv IHRvIGtlcm5lbC10b29scy1kZWJ1Z2luZm8gKEF1Z3VzdG8gQ2FyaW5naSkKKworKiBTYXQgSnVs IDExIDIwMjYgRmVkb3JhIEtlcm5lbCBUZWFtIDxrZXJuZWwtdGVhbUBmZWRvcmFwcm9qZWN0Lm9y Zz4gWzcuMi4wLTAucmMyLmRkMzIxMGM0N2U4ZC4yNF0KIC0gcmVkaGF0L2tlcm5lbC5zcGVjOiBy ZXF1aXJlIGxpYmJhYmVsdHJhY2UyLWRldmVsIChZYWFrb3YgU2Vsa293aXR6KQogLSBhdXRvbW90 aXZlOiBlbmFibGUgSFVHRVRMQkZTIHRvIHdvcmthcm91bmQgYnVpbGQgZXJyb3IgKFNjb3R0IFdl YXZlcikKIAorKiBTYXQgSnVsIDExIDIwMjYgRmVkb3JhIEtlcm5lbCBUZWFtIDxrZXJuZWwtdGVh bUBmZWRvcmFwcm9qZWN0Lm9yZz4gWzcuMi4wLTAucmMyLmRkMzIxMGM0N2U4ZC4yM10KKy0gVHVy biBvbiBDT05GSUdfUkVHTUFQIGZvciBSSEVMIHMzOTB4IHBlbmRpbmcgZm9yIG1pc21hdGNoIChK dXN0aW4gTS4gRm9yYmVzKQorLSByZWRoYXQ6IGFkZCBrbWFwLnB5IHRvb2wgYW5kIGtlcm5lbC1r bWFwLWludGVybmFsIHBhY2thZ2UgKFJhZG8gVnJib3Zza3kpCistIExpbnV4IHY3LjIuMC0wLnJj Mi5kZDMyMTBjNDdlOGQKKwogKiBUaHUgSnVsIDA5IDIwMjYgRmVkb3JhIEtlcm5lbCBUZWFtIDxr ZXJuZWwtdGVhbUBmZWRvcmFwcm9qZWN0Lm9yZz4gWzcuMi4wLTAucmMyLjBlMzViOWI2ZWMwZi4y Ml0KIC0gdWtpLXZpcnQ6IEFkZCBmZGlzayB0byB0aGUgaW5pdHJhbWZzIHRvIG1ha2Ugc3lzdGVt ZC1yZXBhcnQgZnVuY3Rpb25hbCAoVml0YWx5IEt1em5ldHNvdikKIC0gcmVkaGF0L2NvbmZpZ3M6 IEVuYWJsZSBFcHNvbiBSWDgxMTEgUlRDIGRyaXZlciBmb3IgYXJtL2FhcmNoNjQgYnVpbGRzLiBT aWduZWQtb2ZmLWJ5OiBOaXJtYWxhIERhbHZpIDxuZGFsdmlAcmVkaGF0LmNvbT4gKE5pcm1hbGEg RGFsdmkpCgpkaWZmIC0tZ2l0IGEva21hcC5weSBiL2ttYXAucHkKbmV3IGZpbGUgbW9kZSAxMDA3 NTUKaW5kZXggMDAwMDAwMC4uNzBhZjUwNAotLS0gL2Rldi9udWxsCisrKyBiL2ttYXAucHkKQEAg LTAsMCArMSw4NzQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIiIiCitrbWFwLnB5IC0g S2VybmVsIFNvdXJjZS10by1CaW5hcnkgTWFwcGluZyBUb29sCisKK0RFU0NSSVBUSU9OCisgICAg VGhpcyB0b29sIHBhcnNlcyBMaW51eCBrZXJuZWwgYnVpbGQgYXJ0aWZhY3RzICguY21kIGZpbGVz LCBhcmNoaXZlcykgdG8KKyAgICBjcmVhdGUgYSBKU09OIG1hcHBpbmcgb2Ygd2hpY2ggc291cmNl IGZpbGVzIGNvbnRyaWJ1dGUgdG8gd2hpY2gga2VybmVsCisgICAgYmluYXJpZXMgKG1vZHVsZXMg YW5kIHZtbGludXgpLiBJdCBzdXBwb3J0cyBtZXJnaW5nIGRhdGEgZnJvbSBtdWx0aXBsZQorICAg IGtlcm5lbCBidWlsZCB2YXJpYW50cyAoZS5nLiwgc3RvY2ssIGRlYnVnLCBydCkgaW50byBhIHNp bmdsZSBvdXRwdXQKKyAgICBmaWxlIHVzaW5nIHZhcmlhbnQgaW5kaWNlcyB0byB0cmFjayBwZXIt dmFyaWFudCBtYXBwaW5ncy4KKworICAgIFN1cHBvcnRlZCBSSEVMIHZlcnNpb25zOiA3LCA4LCA5 LCB1cHN0cmVhbQorCitGRUFUVVJFUworICAgIC0gUGFyc2VzIC5jbWQgZmlsZXMgZ2VuZXJhdGVk IGJ5IGtidWlsZCB0byBleHRyYWN0IGNvbXBpbGF0aW9uIGNvbW1hbmRzCisgICAgLSBTdXBwb3J0 cyBDIChnY2MvY2xhbmcpIGFuZCBSdXN0IChydXN0Yykgc291cmNlIGZpbGVzCisgICAgLSBIYW5k bGVzIGJ1aWx0LWluIG9iamVjdHMgdmlhIGJ1aWx0LWluLm8uY21kIChSSEVMIDcpLCBidWlsdC1p bi5hCisgICAgICAoUkhFTCA4LzkpLCBvciB2bWxpbnV4LmEgKHVwc3RyZWFtKQorICAgIC0gTWVy Z2VzIG11bHRpcGxlIGtlcm5lbCB2YXJpYW50cyBpbnRvIHNpbmdsZSBvdXRwdXQgd2l0aCB2YXJp YW50IGluZGljZXMKKyAgICAtIE1hcHMgbW9kdWxlcyB0byB0aGVpciBjb250YWluaW5nIFJQTSBw YWNrYWdlcworCitPVVRQVVQgRk9STUFUCisgICAgVGhlIG91dHB1dCBpcyBhIEpTT04gZmlsZSB3 aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgorCisgICAgeworICAgICAgInZhcmlhbnRzIjog WyJzdG9jayIsICJydCIsIC4uLl0sCisgICAgICAic291cmNlLW1hcCI6IHsKKyAgICAgICAgIm9i ai1zcmMiOiB7PG9iamVjdD46IHs8c291cmNlPjogWzx2YXJpYW50X2luZGljZXM+XX19LAorICAg ICAgICAic3JjLW9iaiI6IHs8c291cmNlPjogezxvYmplY3Q+OiBbPHZhcmlhbnRfaW5kaWNlcz5d fX0KKyAgICAgIH0sCisgICAgICAibW9kdWxlLW1hcCI6IHsKKyAgICAgICAgIm1vZHVsZS1ycG0i OiB7PG1vZHVsZT46IHs8cnBtX25hbWU+OiBbPHZhcmlhbnRfaW5kaWNlcz5dfX0sCisgICAgICAg ICJycG0tbW9kdWxlcyI6IHs8cnBtX25hbWU+OiB7PG1vZHVsZT46IFs8dmFyaWFudF9pbmRpY2Vz Pl19fQorICAgICAgfQorICAgIH0KKworUEFSU0lORyBUSEUgT1VUUFVUCisgICAgaW1wb3J0IGpz b24KKworICAgIHdpdGggb3Blbigna2VybmVsLW1hcC5qc29uJykgYXMgZjoKKyAgICAgICAgZGF0 YSA9IGpzb24ubG9hZChmKQorCisgICAgdmFyaWFudHMgPSBkYXRhWyd2YXJpYW50cyddCisgICAg b2JqX3NyYyA9IGRhdGFbJ3NvdXJjZS1tYXAnXVsnb2JqLXNyYyddCisgICAgc3JjX29iaiA9IGRh dGFbJ3NvdXJjZS1tYXAnXVsnc3JjLW9iaiddCisgICAgbW9kdWxlX3JwbSA9IGRhdGFbJ21vZHVs ZS1tYXAnXVsnbW9kdWxlLXJwbSddCisgICAgcnBtX21vZHVsZXMgPSBkYXRhWydtb2R1bGUtbWFw J11bJ3JwbS1tb2R1bGVzJ10KKworICAgICMgR2V0IHNvdXJjZXMgZm9yIHZtbGludXggaW4gdmFy aWFudCAic3RvY2siIChpbmRleCAwKQorICAgIHZtbGludXhfc291cmNlcyA9IFtzcmMgZm9yIHNy YywgaW5kaWNlcyBpbiBvYmpfc3JjWyd2bWxpbnV4J10uaXRlbXMoKQorICAgICAgICAgICAgICAg ICAgICAgICBpZiAwIGluIGluZGljZXNdCisKKyAgICAjIEZpbmQgd2hpY2ggb2JqZWN0IGEgc291 cmNlIGNvbnRyaWJ1dGVzIHRvCisgICAgZm9ya19vYmplY3RzID0gW29iaiBmb3Igb2JqLCBpbmRp Y2VzIGluIHNyY19vYmpbJ2tlcm5lbC9mb3JrLmMnXS5pdGVtcygpCisgICAgICAgICAgICAgICAg ICAgIGlmIDAgaW4gaW5kaWNlc10KKworICAgICMgR2V0IFJQTSBmb3IgYSBtb2R1bGUKKyAgICBk ZWYgZ2V0X3JwbShtb2R1bGUsIHZhcmlhbnRfaWR4KToKKyAgICAgICAgZm9yIHJwbSwgaW5kaWNl cyBpbiBtb2R1bGVfcnBtLmdldChtb2R1bGUsIHt9KS5pdGVtcygpOgorICAgICAgICAgICAgaWYg dmFyaWFudF9pZHggaW4gaW5kaWNlczoKKyAgICAgICAgICAgICAgICByZXR1cm4gcnBtCisgICAg ICAgIHJldHVybiBOb25lCisKK1VTQUdFCisgICAgIyBTaW5nbGUgdmFyaWFudAorICAgIC4va21h cC5weSAtZCAvYnVpbGQvc3RvY2sgLXIgdXBzdHJlYW0gLXYgc3RvY2sgLW8gL291dHB1dAorCisg ICAgIyBNZXJnZSBtdWx0aXBsZSB2YXJpYW50cworICAgIC4va21hcC5weSAtZCAvYnVpbGQvc3Rv Y2sgLXIgdXBzdHJlYW0gLXYgc3RvY2sgLW8gL291dHB1dAorICAgIC4va21hcC5weSAtZCAvYnVp bGQvZGVidWcgLXIgdXBzdHJlYW0gLXYgZGVidWcgLW8gL291dHB1dCAtaSBrZXJuZWwtbWFwLmpz b24KKyAgICAuL2ttYXAucHkgLWQgL2J1aWxkL3J0IC1yIHVwc3RyZWFtIC12IHJ0IC1vIC9vdXRw dXQgLWkga2VybmVsLW1hcC5qc29uCisKKyAgICAjIFdpdGggbW9kdWxlLXRvLVJQTSBtYXBwaW5n CisgICAgLi9rbWFwLnB5IC1kIC9idWlsZCAtciB1cHN0cmVhbSAtdiBzdG9jayAtbyAvb3V0cHV0 IFxcCisgICAgICAgIC0tdm1saW51eC1ycG0ga2VybmVsLWNvcmUtNS4xNC4wLnJwbSBcXAorICAg ICAgICAtLW1vZHVsZS1saXN0IGtlcm5lbC1tb2R1bGVzLTUuMTQuMC5ycG06bW9kdWxlcy5saXN0 CisKK0NSRURJVFMKKyAgICBJbnNwaXJlZCBieSBnZW5fY29tcGlsZV9jb21tYW5kcy5weSBhbmQg Sm9lIExhd3JlbmNlLgorICAgIFRpbWUgbWVhc3VyZW1lbnQgb3B0aW9uIGFkZGVkIGZvciBKYW4g U3RhbmNlay4KKyIiIgorCitpbXBvcnQgcmUKK2ltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKK2lt cG9ydCBqc29uCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdGlt ZQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgQ29uc3RhbnRzCisjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisKK1ZNTElOVVggPSAndm1saW51eCcKK0tFUk5FTF9QUkVGSVggPSAna2VybmVs LycKKworIyBTdXBwb3J0ZWQgY29tcGlsZXJzIGFuZCBsaW5rZXJzCitDT01QSUxFUlMgPSAoJ2dj YycsICdjbGFuZycpCitMSU5LRVIgPSAnbGQnCitSVVNUX0NPTVBJTEVSID0gJ3J1c3RjJworCisK KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKyMgUmVnZXggUGF0dGVybnMKKyMKKyMgVGhlc2UgcGF0 dGVybnMgcGFyc2UgdGhlIGtlcm5lbCBidWlsZCAuY21kIGZpbGVzIHRvIGV4dHJhY3Q6CisjIC0g V2hhdCBjb21waWxlci9saW5rZXIgd2FzIHVzZWQKKyMgLSBXaGF0IHNvdXJjZSBmaWxlcyB3ZXJl IGNvbXBpbGVkCisjIC0gV2hhdCBvYmplY3QgZmlsZXMgd2VyZSBsaW5rZWQKKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworIyBQYXR0ZXJuIGZvciAua28uY21kIGZpbGVzIChtb2R1bGUgbGlua2lu ZykKKyMgTWF0Y2hlczogY21kX3BhdGgvdG8vbW9kdWxlLmtvIDo9IGxkIDxwYXJhbXM+IC1vIDxr b19uYW1lPiA8aW5wdXRfZmlsZXM+CisjIE5vdGU6IHVwc3RyZWFtIGtlcm5lbHMgdXNlICdzYXZl ZGNtZF8nIHByZWZpeCBpbnN0ZWFkIG9mICdjbWRfJworX0tPX0NNRF9QQVRURVJOID0gKAorICAg IHInXihzYXZlZCk/Y21kX1teIF0qXC5rb1xzKjo9XHMqbGRccysnCisgICAgcicoP1A8cGFyYW1z Pi4qKSAtbyAoP1A8a29fbmFtZT5cUyspICg/UDxpbnB1dF9maWxlcz5bXjtdKz8pXHMqKD86O3wk KScKKykKKworIyBQYXR0ZXJuIGZvciAuby5jbWQgZmlsZXMgKG9iamVjdCBjb21waWxhdGlvbikK KyMgTWF0Y2hlcyBtdWx0aXBsZSBmb3JtYXRzOgorIyAtIEMvYXNtOiBjbWRfKi5vIDo9IGdjYy9j bGFuZyA8cGFyYW1zPiAtbyA8b3V0cHV0PiA8aW5wdXQ+CisjIC0gUnVzdDogIGNtZF8qLm8gOj0g cnVzdGMgPHBhcmFtcz4gLS1lbWl0PW9iaj08b3V0cHV0PiA8aW5wdXQucnM+CisjIC0gUnVzdCBz b3VyY2UgbWFwcGluZzogc291cmNlXyoubyA6PSA8ZmlsZS5ycz4KK19PX0NNRF9QQVRURVJOID0g KAorICAgIHInXihzYXZlZCk/KD86Y21kX3xzb3VyY2VfKVteIF0qXC5vXHMrOj1ccysnCisgICAg cicoPzonCisgICAgICAgIHInKD9QPHByZWZpeD4oPzpcUys9XFMrXHMrKSopPycKKyAgICAgICAg cicoP1A8Y29tbWFuZD5nY2N8Y2xhbmd8bGR8cnVzdGMpXHMrJworICAgICAgICByJyg/UDxwYXJh bXM+Lio/KScKKyAgICAgICAgcicoPzonCisgICAgICAgICAgICByJ1xzKy1vXHMrKD9QPG9ial9v dXQ+XFMrKVxzKyg/UDxpbnB1dF9maWxlcz5bXjtdKz8pJworICAgICAgICAgICAgcid8JworICAg ICAgICAgICAgcidccystLWVtaXQ9b2JqPSg/UDxydXN0X29ial9vdXQ+XFMrKS4qP1xzKyg/UDxy dXN0X2lucHV0X2ZpbGU+XFMrXC5ycyknCisgICAgICAgIHInKScKKyAgICAgICAgcid8JworICAg ICAgICByJyg/UDxzb3VyY2VfZmlsZT5cUytcLnJzKScKKyAgICByJylccyooPzo7fCQpJworKQor Citrb19tYXRjaGVyID0gcmUuY29tcGlsZShfS09fQ01EX1BBVFRFUk4pCitvX21hdGNoZXIgPSBy ZS5jb21waWxlKF9PX0NNRF9QQVRURVJOKQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMg VXRpbGl0eSBGdW5jdGlvbnMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGVmIHBhcnNlX2Fy Z3MoKToKKyAgICAiIiIKKyAgICBQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzCisgICAgIiIi CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCisgICAgICAgICAgICBwcm9n PSdLZXJuZWwgQnVpbGQgTWFwcGVyJywKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdTY3JhcGUg TGludXggS2VybmVsIC5jbWQgZmlsZXMgdG8gbWFwIGNvbnRyaWJ1dGlvbiAnCisgICAgICAgICAg ICAgICAgICAgICAgICAnb2YgaW5kaXZpZHVhbCBzb3VyY2UgZmlsZXMgdG8ga2VybmVsIGJpbmFy aWVzLicsCisgICAgICAgICAgICApCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsICct LWRpcmVjdG9yeScsCisgICAgICAgICAgICBoZWxwPSdEaXJlY3Rvcnkgd2l0aCBrZXJuZWwgYnVp bGQgYXJ0aWZhY3RzLicsCisgICAgICAgICAgICBkZWZhdWx0PScnLAorICAgICAgICAgICAgdHlw ZT1zdHIpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbycsICctLW91dHB1dGRpcicsCisg ICAgICAgICAgICBoZWxwPSdEaXJlY3Rvcnkgd2hlcmUgdG8gcHV0IGdlbmVyYXRlZCBmaWxlcy4n LAorICAgICAgICAgICAgZGVmYXVsdD0nJywKKyAgICAgICAgICAgIHR5cGU9c3RyKQorCisgICAg cGFyc2VyLmFkZF9hcmd1bWVudCgnLXAnLCAnLS1wcmVmaXgnLAorICAgICAgICAgICAgaGVscD0n TmFtZSBwcmVmaXggdG8gdGhlIGdlbmVyYXRlZCBmaWxlcy4nLAorICAgICAgICAgICAgZGVmYXVs dD0nJywKKyAgICAgICAgICAgIHR5cGU9c3RyKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgn LXInLCAnLS1yaGVsJywKKyAgICAgICAgICAgIGhlbHA9J1NwZWNpZnkgdG8gd2hhdCB2ZXJzaW9u IG9mIFJIRUwgYXJ0aWZhY3RzIGJlbG9uZyAodXBzdHJlYW0gZm9yIFJIRUwgMTArL2tlcm5lbC1h cmspJywKKyAgICAgICAgICAgIGNob2ljZXM9Wyc3JywgJzgnLCAnOScsICd1cHN0cmVhbSddLAor ICAgICAgICAgICAgcmVxdWlyZWQ9VHJ1ZSkKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1t JywgJy0tbm8tbW9kdWxlcycsCisgICAgICAgICAgICBoZWxwPScqU0tJUCogY29sbGVjdGluZyBp bmZvcm1hdGlvbiBhYm91dCBtb2R1bGVzJywKKyAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1 ZScpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLW5vLWJ1aWx0aW4nLAorICAg ICAgICAgICAgaGVscD0nKlNLSVAqIGNvbGxlY3RpbmcgaW5mb3JtYXRpb24gYWJvdXQgYnVpbHQt aW4nLAorICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJykKKworICAgIHBhcnNlci5hZGRf YXJndW1lbnQoJy10JywgJy0tdGltZScsCisgICAgICAgICAgICBoZWxwPSdQcmludCBlbGFwc2Vk IHRpbWUgYXQgdGhlIGVuZCcsCisgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnKQorCisg ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12YXJpYW50JywKKyAgICAgICAgICAgIGhl bHA9J05hbWUgb2YgdGhpcyBrZXJuZWwgdmFyaWFudCAoZS5nLiwgc3RvY2ssIGRlYnVnLCBydCkn LAorICAgICAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKKyAgICAgICAgICAgIHR5cGU9c3RyKQorCisg ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pbnB1dCcsCisgICAgICAgICAgICBoZWxw PSdFeGlzdGluZyBKU09OIGZpbGUgdG8gbWVyZ2Ugd2l0aCAoZnJvbSBwcmV2aW91cyB2YXJpYW50 IHJ1bnMpJywKKyAgICAgICAgICAgIGRlZmF1bHQ9JycsCisgICAgICAgICAgICB0eXBlPXN0cikK KworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbW9kdWxlLWxpc3QnLAorICAgICAgICAgICAg aGVscD0nTW9kdWxlIGxpc3QgaW4gZm9ybWF0IDxycG0tbmFtZT46PHBhdGg+IChjYW4gYmUgc3Bl Y2lmaWVkIG11bHRpcGxlIHRpbWVzKScsCisgICAgICAgICAgICBhY3Rpb249J2FwcGVuZCcsCisg ICAgICAgICAgICBkZWZhdWx0PVtdLAorICAgICAgICAgICAgbWV0YXZhcj0nUlBNOlBBVEgnKQor CisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS12bWxpbnV4LXJwbScsCisgICAgICAgICAgICBo ZWxwPSdSUE0gcGFja2FnZSBuYW1lIGZvciB2bWxpbnV4IChlLmcuLCAia2VybmVsLTUuMTQuMC5y cG0iKScsCisgICAgICAgICAgICBkZWZhdWx0PScnLAorICAgICAgICAgICAgdHlwZT1zdHIpCisK KyAgICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisKK2RlZiBsb2FkX2ZpbGUoZmlsZW5h bWUsIGJ1aWxkX2Rpcj0nJyk6CisgICAgIiIiCisgICAgTG9hZCBhIHRleHQgZmlsZSBhbmQgcmV0 dXJuIG5vbi1lbXB0eSBsaW5lcyBhcyBhIGxpc3QKKyAgICAiIiIKKyAgICBmdWxsX3BhdGggPSBv cy5wYXRoLmpvaW4oYnVpbGRfZGlyLCBmaWxlbmFtZSkKKworICAgIHRyeToKKyAgICAgICAgd2l0 aCBvcGVuKGZ1bGxfcGF0aCwgJ3J0JywgZW5jb2Rpbmc9J3V0Zi04JykgYXMgZmlsZToKKyAgICAg ICAgICAgIHJldHVybiBbbGluZS5yc3RyaXAoKSBmb3IgbGluZSBpbiBmaWxlIGlmIGxpbmUucnN0 cmlwKCldCisgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICBwcmludChmJ0Zp bGUgIntmdWxsX3BhdGh9IiBub3QgZm91bmQuJykKKyAgICAgICAgcmV0dXJuIFtdCisKKworZGVm IG5hbWVfdG9fY21kKGZpbGVuYW1lLCBzdWZmaXgpOgorICAgICIiIgorICAgIENvbnZlcnQgb2Jq ZWN0IGZpbGVuYW1lIHRvIGNvcnJlc3BvbmRpbmcgLmNtZCBzY3JpcHQgZmlsZW5hbWUKKworICAg IEV4YW1wbGU6IGtlcm5lbC9mb3JrLm8gLT4ga2VybmVsLy5mb3JrLm8uY21kCisgICAgIiIiCisg ICAgcGF0aCwgXyA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCisgICAgZGlybmFtZSA9IG9z LnBhdGguZGlybmFtZShwYXRoKQorICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRo KQorCisgICAgcmV0dXJuIG9zLnBhdGguam9pbihkaXJuYW1lLCAnLicgKyBiYXNlbmFtZSArIHN1 ZmZpeCkKKworCitkZWYgc3RyaXBfcGF0aF9wcmVmaXhlcyhwYXRoLCBidWlsZF9kaXIpOgorICAg ICIiIgorICAgIE5vcm1hbGl6ZSBwYXRoIGJ5IHJlbW92aW5nIGJ1aWxkIGRpcmVjdG9yeSBwcmVm aXggYW5kIG90aGVyIGFydGlmYWN0cworICAgICIiIgorICAgIHBhdGggPSBwYXRobGliLlBhdGgo cGF0aCkKKworICAgIGlmIGJ1aWxkX2RpcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0 dXJuIHN0cihwYXRoLnJlc29sdmUoKS5yZWxhdGl2ZV90byhwYXRobGliLlBhdGgoYnVpbGRfZGly KS5yZXNvbHZlKCkpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBh c3MKKworICAgIGlmIHBhdGguaXNfYWJzb2x1dGUoKToKKyAgICAgICAgcGF0aCA9IHBhdGhsaWIu UGF0aCgqcGF0aC5wYXJ0c1sxOl0pCisKKyAgICB3aGlsZSBwYXRoLnBhcnRzIGFuZCBwYXRoLnBh cnRzWzBdID09ICdyZXBvcyc6CisgICAgICAgIHBhdGggPSBwYXRobGliLlBhdGgoKnBhdGgucGFy dHNbMTpdKQorCisgICAgcmV0dXJuIHN0cihwYXRoKQorCisKK2RlZiBpc19leHRlcm5hbF9zb3Vy Y2UocGF0aCk6CisgICAgIiIiCisgICAgQ2hlY2sgaWYgcGF0aCBzaG91bGQgYmUgZXhjbHVkZWQg ZnJvbSBzb3VyY2UgbWFwcGluZworCisgICAgRmlsdGVycyBvdXQ6CisgICAgLSBSdXN0IHRvb2xj aGFpbiBzb3VyY2VzIChub3QgcGFydCBvZiBrZXJuZWwgc291cmNlKQorICAgIC0gR2VuZXJhdGVk IGFzc2VtYmx5IGZpbGVzIChlLmcuLCBpbml0cmFtZnNfZGF0YS5TKQorICAgICIiIgorICAgIGlm ICdydXN0bGliJyBpbiBwYXRoOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGlmIHBhdGguZW5k c3dpdGgoJ19kYXRhLlMnKToKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UK KworCitkZWYgaXNfbW9kX2ZpbGVfcmVmZXJlbmNlKGxkX2lucHV0KToKKyAgICAiIiIKKyAgICBD aGVjayBpZiBsaW5rZXIgaW5wdXQgaXMgYSAubW9kIGZpbGUgcmVmZXJlbmNlIChSSEVMIDkrIG1v ZHVsZSBsaW5raW5nKQorCisgICAgSW4gUkhFTCA5KywgbW9kdWxlIGxpbmtpbmcgdXNlcyBAcGF0 aC90by9tb2R1bGUubW9kIGZpbGVzIHRoYXQgY29udGFpbgorICAgIHRoZSBsaXN0IG9mIG9iamVj dCBmaWxlcyB0byBsaW5rLgorICAgICIiIgorICAgIGZpbGVzID0gbGRfaW5wdXQuc3BsaXQoKQor ICAgIHJldHVybiBsZW4oZmlsZXMpID09IDEgYW5kIGZpbGVzWzBdLnN0YXJ0c3dpdGgoJ0AnKSBh bmQgZmlsZXNbMF0uZW5kc3dpdGgoJy5tb2QnKQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KyMgU291cmNlTWFwIENsYXNzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2NsYXNzIFNvdXJj ZU1hcDoKKyAgICAiIiIKKyAgICBDb2xsZWN0cyBhbmQgbWFuYWdlcyBrZXJuZWwgc291cmNlLXRv LWJpbmFyeSBtYXBwaW5ncy4KKworICAgIFRoaXMgY2xhc3MgcGFyc2VzIGtlcm5lbCBidWlsZCBh cnRpZmFjdHMgKC5jbWQgZmlsZXMsIGFyY2hpdmVzKSB0byBkZXRlcm1pbmUKKyAgICB3aGljaCBz b3VyY2UgZmlsZXMgY29udHJpYnV0ZSB0byB3aGljaCBrZXJuZWwgYmluYXJpZXMgKG1vZHVsZXMg YW5kIHZtbGludXgpLgorCisgICAgRGF0YSBzdHJ1Y3R1cmVzOgorICAgICAgICBvYmpfdG9fc3Jj OiB7b2JqZWN0X25hbWU6IHtzb3VyY2VfZmlsZTogW3ZhcmlhbnRfaW5kaWNlc119fQorICAgICAg ICBzcmNfdG9fb2JqOiB7c291cmNlX2ZpbGU6IHtvYmplY3RfbmFtZTogW3ZhcmlhbnRfaW5kaWNl c119fQorICAgICAgICBtb2R1bGVfcnBtOiB7bW9kdWxlX25hbWU6IHtycG1fbmFtZTogW3Zhcmlh bnRfaW5kaWNlc119fQorICAgICAgICBycG1fdG9fbW9kdWxlczoge3JwbV9uYW1lOiB7bW9kdWxl X25hbWU6IFt2YXJpYW50X2luZGljZXNdfX0KKworICAgIFZhcmlhbnQgaW5kaWNlcyBjb3JyZXNw b25kIHRvIHBvc2l0aW9ucyBpbiB0aGUgJ3ZhcmlhbnRzJyBsaXN0LgorICAgICIiIgorCisgICAg IyBEaXNwYXRjaCB0YWJsZSBmb3IgUkhFTC1zcGVjaWZpYyBidWlsdGluIGNvbGxlY3Rpb24gbWV0 aG9kcworICAgIEJVSUxUSU5fQ09MTEVDVE9SUyA9IHsKKyAgICAgICAgJzcnOiAnX2NvbGxlY3Rf YnVpbHRpbl9yaGVsNycsCisgICAgICAgICc4JzogJ19jb2xsZWN0X2J1aWx0aW5fYXJjaGl2ZScs CisgICAgICAgICc5JzogJ19jb2xsZWN0X2J1aWx0aW5fYXJjaGl2ZScsCisgICAgICAgICd1cHN0 cmVhbSc6ICdfY29sbGVjdF9idWlsdGluX3ZtbGludXhfYXJjaGl2ZScsCisgICAgfQorCisgICAg ZGVmIF9faW5pdF9fKHNlbGYsIGJ1aWxkX2Rpcj0nJywgb3V0cHV0X2Rpcj0nJywgb3V0cHJlZml4 PScnLCByaGVsPSc3JywgdmFyaWFudD0nJyk6CisgICAgICAgICMgU291cmNlIG1hcHBpbmdzCisg ICAgICAgIHNlbGYub2JqX3RvX3NyYyA9IHt9CisgICAgICAgIHNlbGYuc3JjX3RvX29iaiA9IHt9 CisgICAgICAgICMgTW9kdWxlLXRvLVJQTSBtYXBwaW5ncworICAgICAgICBzZWxmLm1vZHVsZV9y cG0gPSB7fQorICAgICAgICBzZWxmLnJwbV90b19tb2R1bGVzID0ge30KKworICAgICAgICAjIENv bmZpZ3VyYXRpb24KKyAgICAgICAgc2VsZi5idWlsZF9kaXIgPSBidWlsZF9kaXIKKyAgICAgICAg c2VsZi5vdXRwdXRfZGlyID0gb3V0cHV0X2RpcgorICAgICAgICBzZWxmLm91dHByZWZpeCA9IG91 dHByZWZpeAorICAgICAgICBzZWxmLnJoZWwgPSByaGVsCisKKyAgICAgICAgIyBNb2R1bGUgbGlz dAorICAgICAgICBzZWxmLm1vZGxpc3QgPSBzZXQoKQorCisgICAgICAgICMgVmFyaWFudCB0cmFj a2luZyBmb3IgbXVsdGktdmFyaWFudCBtZXJnaW5nCisgICAgICAgIHNlbGYudmFyaWFudHMgPSBb XQorICAgICAgICBzZWxmLnZhcmlhbnQgPSB2YXJpYW50CisgICAgICAgIHNlbGYudmFyaWFudF9p ZHggPSAwCisKKyAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAjIFZhcmlhbnQgTWFuYWdlbWVu dAorICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgZGVmIGxvYWRfZXhpc3Rpbmcoc2VsZiwg ZmlsZW5hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCBleGlzdGluZyBtZXJnZWQgZGF0 YSBmcm9tIHByZXZpb3VzIHZhcmlhbnQgcnVucworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90 IGZpbGVuYW1lOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgZnVsbF9wYXRoID0gb3Mu cGF0aC5qb2luKHNlbGYub3V0cHV0X2RpciwgZmlsZW5hbWUpIGlmIHNlbGYub3V0cHV0X2RpciBl bHNlIGZpbGVuYW1lCisKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZ1bGxfcGF0aCk6 CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB3aXRoIG9wZW4oZnVsbF9wYXRoLCAncnQn LCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmOgorICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZChm KQorCisgICAgICAgIHNlbGYudmFyaWFudHMgPSBkYXRhLmdldCgndmFyaWFudHMnLCBbXSkKKwor ICAgICAgICBtb2R1bGVfbWFwID0gZGF0YS5nZXQoJ21vZHVsZS1tYXAnLCB7fSkKKyAgICAgICAg c2VsZi5tb2R1bGVfcnBtID0gbW9kdWxlX21hcC5nZXQoJ21vZHVsZS1ycG0nLCB7fSkKKyAgICAg ICAgc2VsZi5ycG1fdG9fbW9kdWxlcyA9IG1vZHVsZV9tYXAuZ2V0KCdycG0tbW9kdWxlcycsIHt9 KQorCisgICAgICAgIHNvdXJjZV9tYXAgPSBkYXRhLmdldCgnc291cmNlLW1hcCcsIHt9KQorICAg ICAgICBzZWxmLm9ial90b19zcmMgPSBzb3VyY2VfbWFwLmdldCgnb2JqLXNyYycsIHt9KQorICAg ICAgICBzZWxmLnNyY190b19vYmogPSBzb3VyY2VfbWFwLmdldCgnc3JjLW9iaicsIHt9KQorCisg ICAgZGVmIGFkZF92YXJpYW50KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVnaXN0ZXIg Y3VycmVudCB2YXJpYW50IGFuZCBzdG9yZSBpdHMgaW5kZXgKKyAgICAgICAgIiIiCisgICAgICAg IGlmIHNlbGYudmFyaWFudCBpbiBzZWxmLnZhcmlhbnRzOgorICAgICAgICAgICAgc2VsZi52YXJp YW50X2lkeCA9IHNlbGYudmFyaWFudHMuaW5kZXgoc2VsZi52YXJpYW50KQorICAgICAgICBlbHNl OgorICAgICAgICAgICAgc2VsZi52YXJpYW50X2lkeCA9IGxlbihzZWxmLnZhcmlhbnRzKQorICAg ICAgICAgICAgc2VsZi52YXJpYW50cy5hcHBlbmQoc2VsZi52YXJpYW50KQorCisgICAgIyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgIyBTb3VyY2UgTWVyZ2luZyBIZWxwZXJzCisgICAgIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisKKyAgICBkZWYgX21lcmdlX3NvdXJjZXMoc2VsZiwgdGFyZ2V0LCBzb3VyY2Up OgorICAgICAgICAiIiIKKyAgICAgICAgTWVyZ2Ugc291cmNlIGRpY3QgaW50byB0YXJnZXQgZGlj dCBieSBjb21iaW5pbmcgdmFyaWFudCBpbmRleCBsaXN0cworICAgICAgICAiIiIKKyAgICAgICAg Zm9yIHNyYywgaW5kaWNlcyBpbiBzb3VyY2UuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHNyYyBu b3QgaW4gdGFyZ2V0OgorICAgICAgICAgICAgICAgIHRhcmdldFtzcmNdID0gW10KKyAgICAgICAg ICAgIGZvciBpZHggaW4gaW5kaWNlczoKKyAgICAgICAgICAgICAgICBpZiBpZHggbm90IGluIHRh cmdldFtzcmNdOgorICAgICAgICAgICAgICAgICAgICB0YXJnZXRbc3JjXS5hcHBlbmQoaWR4KQor CisgICAgZGVmIF9hZGRfc291cmNlKHNlbGYsIHNvdXJjZXMsIHNvdXJjZV9wYXRoKToKKyAgICAg ICAgIiIiCisgICAgICAgIEFkZCBhIHNvdXJjZSBmaWxlIHRvIHRoZSBzb3VyY2VzIGRpY3Qgd2l0 aCBjdXJyZW50IHZhcmlhbnQgaW5kZXgKKworICAgICAgICBSZXR1cm5zIFRydWUgaWYgc291cmNl IHdhcyBhZGRlZCwgRmFsc2UgaWYgZmlsdGVyZWQgb3V0CisgICAgICAgICIiIgorICAgICAgICBz b3VyY2VfcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgoc291cmNlX3BhdGgpCisgICAgICAgIHNvdXJj ZV9wYXRoID0gc3RyaXBfcGF0aF9wcmVmaXhlcyhzb3VyY2VfcGF0aCwgc2VsZi5idWlsZF9kaXIp CisKKyAgICAgICAgaWYgaXNfZXh0ZXJuYWxfc291cmNlKHNvdXJjZV9wYXRoKToKKyAgICAgICAg ICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHNvdXJjZXNbc291cmNlX3BhdGhdID0gW3NlbGYu dmFyaWFudF9pZHhdCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAjIC5jbWQgRmlsZSBQYXJzaW5nCisgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAg ICBkZWYgX3BhcnNlX2tvX2NtZChzZWxmLCBrb19uYW1lKToKKyAgICAgICAgIiIiCisgICAgICAg IFBhcnNlIC5rby5jbWQgZmlsZSB0byBmaW5kIHRoZSBwcmltYXJ5IG9iamVjdCBmaWxlIGxpbmtl ZCBpbnRvIHRoZSBtb2R1bGUKKyAgICAgICAgIiIiCisgICAgICAgIGtvX3NjcmlwdCA9IG5hbWVf dG9fY21kKGtvX25hbWUsICcua28uY21kJykKKyAgICAgICAgbGluZXMgPSBsb2FkX2ZpbGUoa29f c2NyaXB0LCBidWlsZF9kaXI9c2VsZi5idWlsZF9kaXIpCisKKyAgICAgICAgZm9yIGxpbmUgaW4g bGluZXM6CisgICAgICAgICAgICByZXN1bHQgPSBrb19tYXRjaGVyLm1hdGNoKGxpbmUpCisgICAg ICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAgaW5wdXRfZmlsZXMgPSByZXN1bHQu Z3JvdXAoJ2lucHV0X2ZpbGVzJykuc3BsaXQoKQorICAgICAgICAgICAgICAgIHJldHVybiBpbnB1 dF9maWxlc1swXQorCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgX3BhcnNlX29fY21k KHNlbGYsIG9fbmFtZSwgdHJhbnNsYXRlPVRydWUpOgorICAgICAgICAiIiIKKyAgICAgICAgUGFy c2UgLm8uY21kIGZpbGUgdG8gZXh0cmFjdCBzb3VyY2UgZmlsZXMgdGhhdCBjb250cmlidXRlIHRv IHRoZSBvYmplY3QKKworICAgICAgICBIYW5kbGVzOgorICAgICAgICAtIEMvYXNzZW1ibHkgY29t cGlsYXRpb24gKGdjYywgY2xhbmcpCisgICAgICAgIC0gTGlua2luZyAobGQpIC0gcmVjdXJzaXZl bHkgcGFyc2VzIGxpbmtlZCBvYmplY3RzCisgICAgICAgIC0gUnVzdCBjb21waWxhdGlvbiAocnVz dGMpCisgICAgICAgIC0gUnVzdCBzb3VyY2UgZmlsZSBtYXBwaW5ncworCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBvX25hbWU6IE9iamVjdCBmaWxlIG5hbWUgb3IgLmNtZCBmaWxlIHBhdGgK KyAgICAgICAgICAgIHRyYW5zbGF0ZTogSWYgVHJ1ZSwgY29udmVydCBvYmplY3QgbmFtZSB0byAu Y21kIHBhdGggKGUuZy4sIGtlcm5lbC9mb3JrLm8KKyAgICAgICAgICAgICAgICAgICAgICAgYmVj b21lcyBrZXJuZWwvLmZvcmsuby5jbWQpLiBJZiBGYWxzZSwgdXNlIG9fbmFtZSBhcy1pcy4KKyAg ICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgZXhpc3RzIHRvIGhhbmRsZSBkaWZm ZXJlbnQga2J1aWxkIGJlaGF2aW9ycworICAgICAgICAgICAgICAgICAgICAgICBhY3Jvc3MgUkhF TCB2ZXJzaW9ucyAtIHNvbWUgY29kZSBwYXRocyBtYXkgYWxyZWFkeSBoYXZlIC5jbWQKKyAgICAg ICAgICAgICAgICAgICAgICAgcGF0aHMgd2hpbGUgb3RoZXJzIGhhdmUgb2JqZWN0IG5hbWVzIHRo YXQgbmVlZCB0cmFuc2xhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHNvdXJjZXMgPSB7fQor CisgICAgICAgIG9fc2NyaXB0ID0gbmFtZV90b19jbWQob19uYW1lLCAnLm8uY21kJykgaWYgdHJh bnNsYXRlIGVsc2Ugb19uYW1lCisgICAgICAgIGxpbmVzID0gbG9hZF9maWxlKG9fc2NyaXB0LCBi dWlsZF9kaXI9c2VsZi5idWlsZF9kaXIpCisKKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Cisg ICAgICAgICAgICByZXN1bHQgPSBvX21hdGNoZXIubWF0Y2gobGluZSkKKyAgICAgICAgICAgIGlm IG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgY29t bWFuZCA9IHJlc3VsdC5ncm91cCgnY29tbWFuZCcpCisKKyAgICAgICAgICAgIGlmIGNvbW1hbmQg aW4gQ09NUElMRVJTOgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9jb21waWxlcihyZXN1 bHQsIHNvdXJjZXMpCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgZWxpZiBj b21tYW5kID09IExJTktFUjoKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfbGlua2VyKHJl c3VsdCwgc291cmNlcykKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBlbGlm IGNvbW1hbmQgPT0gUlVTVF9DT01QSUxFUjoKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVf cnVzdGMocmVzdWx0LCBzb3VyY2VzKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAg ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3J1c3Rfc291cmNlX21hcHBp bmcocmVzdWx0LCBzb3VyY2VzKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgcmV0 dXJuIHNvdXJjZXMKKworICAgIGRlZiBfaGFuZGxlX2NvbXBpbGVyKHNlbGYsIG1hdGNoX3Jlc3Vs dCwgc291cmNlcyk6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgZ2NjL2NsYW5nIGNvbXBp bGF0aW9uIC0gZXh0cmFjdCB0aGUgaW5wdXQgc291cmNlIGZpbGUKKyAgICAgICAgIiIiCisgICAg ICAgIG9ial9pbnB1dCA9IG1hdGNoX3Jlc3VsdC5ncm91cCgnaW5wdXRfZmlsZXMnKQorICAgICAg ICBpZiBvYmpfaW5wdXQ6CisgICAgICAgICAgICBzZWxmLl9hZGRfc291cmNlKHNvdXJjZXMsIG9i al9pbnB1dCkKKworICAgIGRlZiBfaGFuZGxlX2xpbmtlcihzZWxmLCBtYXRjaF9yZXN1bHQsIHNv dXJjZXMpOgorICAgICAgICAiIiIKKyAgICAgICAgSGFuZGxlIGxkIGxpbmtpbmcgLSByZWN1cnNp dmVseSBwYXJzZSBsaW5rZWQgb2JqZWN0cworICAgICAgICAiIiIKKyAgICAgICAgb2JqX2lucHV0 ID0gbWF0Y2hfcmVzdWx0Lmdyb3VwKCdpbnB1dF9maWxlcycpCisgICAgICAgIGlmIG5vdCBvYmpf aW5wdXQ6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBpc19tb2RfZmlsZV9yZWZl cmVuY2Uob2JqX2lucHV0KToKKyAgICAgICAgICAgIHNlbGYuX21lcmdlX3NvdXJjZXMoc291cmNl cywgc2VsZi5fcGFyc2VfbW9kX2NtZChvYmpfaW5wdXQpKQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgZm9yIG9ial9maWxlIGluIG9ial9pbnB1dC5zcGxpdCgpOgorICAgICAgICAgICAgICAg IHNlbGYuX21lcmdlX3NvdXJjZXMoc291cmNlcywgc2VsZi5fcGFyc2Vfb19jbWQob2JqX2ZpbGUp KQorCisgICAgZGVmIF9oYW5kbGVfcnVzdGMoc2VsZiwgbWF0Y2hfcmVzdWx0LCBzb3VyY2VzKToK KyAgICAgICAgIiIiCisgICAgICAgIEhhbmRsZSBydXN0YyBjb21waWxhdGlvbiAtIGV4dHJhY3Qg dGhlIFJ1c3Qgc291cmNlIGZpbGUKKyAgICAgICAgIiIiCisgICAgICAgIHJ1c3RfaW5wdXQgPSBt YXRjaF9yZXN1bHQuZ3JvdXAoJ3J1c3RfaW5wdXRfZmlsZScpCisgICAgICAgIGlmIHJ1c3RfaW5w dXQ6CisgICAgICAgICAgICBzZWxmLl9hZGRfc291cmNlKHNvdXJjZXMsIHJ1c3RfaW5wdXQpCisK KyAgICBkZWYgX2hhbmRsZV9ydXN0X3NvdXJjZV9tYXBwaW5nKHNlbGYsIG1hdGNoX3Jlc3VsdCwg c291cmNlcyk6CisgICAgICAgICIiIgorICAgICAgICBIYW5kbGUgUnVzdCBzb3VyY2UgZmlsZSBt YXBwaW5nIChzb3VyY2VfKi5vIDo9ICoucnMpCisgICAgICAgICIiIgorICAgICAgICBzb3VyY2Vf ZmlsZSA9IG1hdGNoX3Jlc3VsdC5ncm91cCgnc291cmNlX2ZpbGUnKQorICAgICAgICBpZiBzb3Vy Y2VfZmlsZSBhbmQgc291cmNlX2ZpbGUuZW5kc3dpdGgoJy5ycycpOgorICAgICAgICAgICAgc2Vs Zi5fYWRkX3NvdXJjZShzb3VyY2VzLCBzb3VyY2VfZmlsZSkKKworICAgIGRlZiBfcGFyc2VfbW9k X2NtZChzZWxmLCBtb2RfbmFtZSk6CisgICAgICAgICIiIgorICAgICAgICBQYXJzZSAubW9kIGZp bGUgdXNlZCBieSBSSEVMIDkrIGZvciBsaW5raW5nIG1vZHVsZXMKKworICAgICAgICBUaGVzZSBm aWxlcyBjb250YWluIGEgbGlzdCBvZiBvYmplY3QgZmlsZXMgdG8gbGluayBpbnRvIHRoZSBtb2R1 bGUuCisgICAgICAgICIiIgorICAgICAgICBzb3VyY2VzID0ge30KKyAgICAgICAgbW9kX25hbWUg PSBtb2RfbmFtZS5zdHJpcCgnQCcpCisgICAgICAgIGxpbmVzID0gbG9hZF9maWxlKG1vZF9uYW1l LCBidWlsZF9kaXI9c2VsZi5idWlsZF9kaXIpCisKKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6 CisgICAgICAgICAgICBzZWxmLl9tZXJnZV9zb3VyY2VzKHNvdXJjZXMsIHNlbGYuX3BhcnNlX29f Y21kKGxpbmUpKQorCisgICAgICAgIHJldHVybiBzb3VyY2VzCisKKyAgICBkZWYgX3BhcnNlX2Ff Y21kKHNlbGYsIGFfbmFtZSk6CisgICAgICAgICIiIgorICAgICAgICBQYXJzZSBhcmNoaXZlIC5j bWQgZmlsZSAoUkhFTCA3IGJ1aWx0LWluLm8uY21kIGZpbGVzKQorICAgICAgICAiIiIKKyAgICAg ICAgc291cmNlcyA9IHt9CisgICAgICAgIGxpbmVzID0gbG9hZF9maWxlKGFfbmFtZSwgYnVpbGRf ZGlyPXNlbGYuYnVpbGRfZGlyKQorCisgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAg ICAgICAgcmVzdWx0ID0gb19tYXRjaGVyLm1hdGNoKGxpbmUpCisgICAgICAgICAgICBpZiBub3Qg cmVzdWx0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGFyX2lucHV0 ID0gcmVzdWx0Lmdyb3VwKCdpbnB1dF9maWxlcycpCisgICAgICAgICAgICBmb3IgZmlsZW5hbWUg aW4gYXJfaW5wdXQucnNwbGl0KCk6CisgICAgICAgICAgICAgICAgaWYgZmlsZW5hbWUuZW5kc3dp dGgoJy5vJyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX21lcmdlX3NvdXJjZXMoc291cmNl cywgc2VsZi5fcGFyc2Vfb19jbWQoZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgIGVsaWYgZmls ZW5hbWUuZW5kc3dpdGgoJy5hJyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX21lcmdlX3Nv dXJjZXMoc291cmNlcywgc2VsZi5fcGFyc2VfYV9jbWQoZmlsZW5hbWUpKQorCisgICAgICAgIHJl dHVybiBzb3VyY2VzCisKKyAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAjIE1vZHVsZSBDb2xs ZWN0aW9uCisgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBkZWYgX2xvYWRfbW9kdWxlX2xp c3Qoc2VsZiwgbW9kb3JkZXI9J21vZHVsZXMub3JkZXInKToKKyAgICAgICAgIiIiCisgICAgICAg IExvYWQgbW9kdWxlcy5vcmRlciBmaWxlIGFuZCBub3JtYWxpemUgcGF0aHMKKworICAgICAgICBS SEVMIDcsIDg6IG1vZHVsZXMub3JkZXIgaGFzICdrZXJuZWwvJyBwcmVmaXggdGhhdCBuZWVkcyB0 byBiZSBzdHJpcHBlZAorICAgICAgICBSSEVMIDksIHVwc3RyZWFtOiBtb2R1bGVzLm9yZGVyIHBh dGhzIGFyZSB1c2VkIGFzLWlzCisgICAgICAgICIiIgorICAgICAgICBsaW5lcyA9IGxvYWRfZmls ZShtb2RvcmRlciwgYnVpbGRfZGlyPXNlbGYuYnVpbGRfZGlyKQorCisgICAgICAgIGlmIG5vdCBs aW5lczoKKyAgICAgICAgICAgIHByaW50KGYnV2FybmluZzogbW9kdWxlcy5vcmRlciBpcyBlbXB0 eSBvciBub3QgZm91bmQnKQorICAgICAgICAgICAgc2VsZi5tb2RsaXN0ID0gc2V0KCkKKyAgICAg ICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYucmhlbCBpbiBbJzknLCAndXBzdHJlYW0n XToKKyAgICAgICAgICAgIHNlbGYubW9kbGlzdCA9IHNldChsaW5lcykKKyAgICAgICAgZWxzZToK KyAgICAgICAgICAgICMgUkhFTCA3LCA4OiBzdHJpcCBmYWtlICdrZXJuZWwvJyBwcmVmaXggYWRk ZWQgYnkga2J1aWxkCisgICAgICAgICAgICBzZWxmLm1vZGxpc3QgPSB7CisgICAgICAgICAgICAg ICAgcGF0aFtsZW4oS0VSTkVMX1BSRUZJWCk6XSBpZiBwYXRoLnN0YXJ0c3dpdGgoS0VSTkVMX1BS RUZJWCkgZWxzZSBwYXRoCisgICAgICAgICAgICAgICAgZm9yIHBhdGggaW4gbGluZXMKKyAgICAg ICAgICAgIH0KKworICAgIGRlZiBfcGFyc2VfbW9kdWxlX29iamVjdHMoc2VsZik6CisgICAgICAg ICIiIgorICAgICAgICBQYXJzZSBhbGwgbW9kdWxlIC5jbWQgZmlsZXMgYW5kIGV4dHJhY3Qgc291 cmNlIG1hcHBpbmdzLgorCisgICAgICAgIE5vdGUgb24gUkhFTCB2ZXJzaW9uIGRpZmZlcmVuY2Vz OgorICAgICAgICAtIFJIRUwgNy84Lzk6IG1vZHVsZXMub3JkZXIgY29udGFpbnMgLmtvIHBhdGhz IChlLmcuLCBmcy9leGZhdC9leGZhdC5rbykKKyAgICAgICAgLSB1cHN0cmVhbTogbW9kdWxlcy5v cmRlciBjb250YWlucyAubyBwYXRocyAoZS5nLiwgZnMvZXhmYXQvZXhmYXQubykKKworICAgICAg ICBUaGUgbm9ybWFsaXphdGlvbiBiZWxvdyBlbnN1cmVzIGNvbnNpc3RlbnQgLmtvIGtleXMgaW4g b3V0cHV0IHJlZ2FyZGxlc3MKKyAgICAgICAgb2YgdGhlIG1vZHVsZXMub3JkZXIgZm9ybWF0Lgor ICAgICAgICAiIiIKKyAgICAgICAgZm9yIGtvYmogaW4gc2VsZi5tb2RsaXN0OgorICAgICAgICAg ICAgIyBOb3JtYWxpemUgdG8gLmtvIC0gdXBzdHJlYW0gaGFzIC5vIHBhdGhzIGluIG1vZHVsZXMu b3JkZXIKKyAgICAgICAgICAgIGlmIHNlbGYucmhlbCA9PSAndXBzdHJlYW0nIGFuZCBrb2JqLmVu ZHN3aXRoKCcubycpOgorICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lID0ga29ials6LTJdICsg Jy5rbycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUgPSBr b2JqCisKKyAgICAgICAgICAgIG9ial9uYW1lID0gc2VsZi5fcGFyc2Vfa29fY21kKG1vZHVsZV9u YW1lKQorICAgICAgICAgICAgaWYgb2JqX25hbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBw cmludChmJ1dhcm5pbmc6IENvdWxkIG5vdCBwYXJzZSAua28uY21kIGZvciAie21vZHVsZV9uYW1l fSIsIHNraXBwaW5nLicpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAg b2JqX3NvdXJjZSA9IHNlbGYuX3BhcnNlX29fY21kKG9ial9uYW1lKQorICAgICAgICAgICAgaWYg bW9kdWxlX25hbWUgbm90IGluIHNlbGYub2JqX3RvX3NyYzoKKyAgICAgICAgICAgICAgICBzZWxm Lm9ial90b19zcmNbbW9kdWxlX25hbWVdID0ge30KKyAgICAgICAgICAgIHNlbGYuX21lcmdlX3Nv dXJjZXMoc2VsZi5vYmpfdG9fc3JjW21vZHVsZV9uYW1lXSwgb2JqX3NvdXJjZSkKKworICAgIGRl ZiBjb2xsZWN0X21vZHVsZXMoc2VsZiwgbm9fbW9kdWxlcz1GYWxzZSwgbW9kb3JkZXI9J21vZHVs ZXMub3JkZXInKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbGxlY3Qgc291cmNlIGZpbGVzIGZv ciBrZXJuZWwgbW9kdWxlcworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm9fbW9kdWxlczoKKyAg ICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuX2xvYWRfbW9kdWxlX2xpc3QobW9kb3Jk ZXIpCisgICAgICAgIHNlbGYuX3BhcnNlX21vZHVsZV9vYmplY3RzKCkKKworICAgICMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgICMgQnVpbHRpbiBDb2xsZWN0aW9uIChSSEVMIHZlcnNpb24tc3BlY2lm aWMpCisgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBkZWYgX2NvbGxlY3RfYnVpbHRpbl9y aGVsNyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbGxlY3QgYnVpbHQtaW4gb2JqZWN0 cyBmb3IgUkhFTCA3IHVzaW5nICpidWlsdC1pbi5vLmNtZCBmaWxlcworICAgICAgICAiIiIKKyAg ICAgICAgcGF0dGVybiA9ICcqYnVpbHQtaW4uby5jbWQnCisgICAgICAgIGNtZF9saXN0ID0gewor ICAgICAgICAgICAgc3RyaXBfcGF0aF9wcmVmaXhlcyhwYXRoLCBzZWxmLmJ1aWxkX2RpcikKKyAg ICAgICAgICAgIGZvciBwYXRoIGluIHBhdGhsaWIuUGF0aChzZWxmLmJ1aWxkX2Rpcikucmdsb2Io cGF0dGVybikKKyAgICAgICAgfQorCisgICAgICAgIGZvciBlbnRyeSBpbiBjbWRfbGlzdDoKKyAg ICAgICAgICAgIHNvdXJjZXMgPSBzZWxmLl9wYXJzZV9hX2NtZChlbnRyeSkKKyAgICAgICAgICAg IHNlbGYuX21lcmdlX3NvdXJjZXMoc2VsZi5vYmpfdG9fc3JjW1ZNTElOVVhdLCBzb3VyY2VzKQor CisgICAgZGVmIF9jb2xsZWN0X2J1aWx0aW5fYXJjaGl2ZShzZWxmKToKKyAgICAgICAgIiIiCisg ICAgICAgIENvbGxlY3QgYnVpbHQtaW4gb2JqZWN0cyBmb3IgUkhFTCA4LzkgdXNpbmcgKmJ1aWx0 LWluLmEgYXJjaGl2ZXMKKyAgICAgICAgIiIiCisgICAgICAgIHBhdHRlcm4gPSAnKmJ1aWx0LWlu LmEnCisgICAgICAgIGFyY2hpdmVfbGlzdCA9IHsKKyAgICAgICAgICAgIHN0cmlwX3BhdGhfcHJl Zml4ZXMocGF0aCwgc2VsZi5idWlsZF9kaXIpCisgICAgICAgICAgICBmb3IgcGF0aCBpbiBwYXRo bGliLlBhdGgoc2VsZi5idWlsZF9kaXIpLnJnbG9iKHBhdHRlcm4pCisgICAgICAgIH0KKworICAg ICAgICBmb3IgZW50cnkgaW4gYXJjaGl2ZV9saXN0OgorICAgICAgICAgICAgcGF0aCA9IG9zLnBh dGguam9pbihzZWxmLmJ1aWxkX2RpciwgZW50cnkpCisgICAgICAgICAgICBvYmplY3RzID0gc3Vi cHJvY2Vzcy5jaGVja19vdXRwdXQoWydhcicsICd0JywgcGF0aF0pLmRlY29kZSgpLnNwbGl0KCkK KworICAgICAgICAgICAgZm9yIG9iaiBpbiBvYmplY3RzOgorICAgICAgICAgICAgICAgIG9ial9w YXRoID0gc3RyaXBfcGF0aF9wcmVmaXhlcyhvYmosIGJ1aWxkX2Rpcj1zZWxmLmJ1aWxkX2RpcikK KyAgICAgICAgICAgICAgICBzb3VyY2VzID0gc2VsZi5fcGFyc2Vfb19jbWQob2JqX3BhdGgpCisg ICAgICAgICAgICAgICAgc2VsZi5fbWVyZ2Vfc291cmNlcyhzZWxmLm9ial90b19zcmNbVk1MSU5V WF0sIHNvdXJjZXMpCisKKyAgICBkZWYgX2NvbGxlY3RfYnVpbHRpbl92bWxpbnV4X2FyY2hpdmUo c2VsZik6CisgICAgICAgICIiIgorICAgICAgICBDb2xsZWN0IGJ1aWx0LWluIG9iamVjdHMgZm9y IHVwc3RyZWFtIGtlcm5lbHMgdXNpbmcgc2luZ2xlIHZtbGludXguYSBhcmNoaXZlCisgICAgICAg ICIiIgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfZGlyLCAndm1saW51 eC5hJykKKyAgICAgICAgb2JqZWN0cyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnYXInLCAn dCcsIHBhdGhdKS5kZWNvZGUoKS5zcGxpdCgpCisKKyAgICAgICAgZm9yIG9iaiBpbiBvYmplY3Rz OgorICAgICAgICAgICAgb2JqX3BhdGggPSBzdHJpcF9wYXRoX3ByZWZpeGVzKG9iaiwgYnVpbGRf ZGlyPXNlbGYuYnVpbGRfZGlyKQorICAgICAgICAgICAgc291cmNlcyA9IHNlbGYuX3BhcnNlX29f Y21kKG9ial9wYXRoKQorICAgICAgICAgICAgc2VsZi5fbWVyZ2Vfc291cmNlcyhzZWxmLm9ial90 b19zcmNbVk1MSU5VWF0sIHNvdXJjZXMpCisKKyAgICBkZWYgY29sbGVjdF9idWlsdGluKHNlbGYs IG5vX2J1aWx0aW49RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgQ29sbGVjdCBzb3VyY2Ug ZmlsZXMgZm9yIHZtbGludXggYnVpbHQtaW4gb2JqZWN0cworCisgICAgICAgIFVzZXMgUkhFTCB2 ZXJzaW9uLXNwZWNpZmljIGNvbGxlY3Rpb24gbWV0aG9kIHZpYSBkaXNwYXRjaCB0YWJsZS4KKyAg ICAgICAgIiIiCisgICAgICAgIGlmIFZNTElOVVggbm90IGluIHNlbGYub2JqX3RvX3NyYzoKKyAg ICAgICAgICAgIHNlbGYub2JqX3RvX3NyY1tWTUxJTlVYXSA9IHt9CisKKyAgICAgICAgaWYgbm9f YnVpbHRpbjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGNvbGxlY3Rvcl9uYW1lID0g c2VsZi5CVUlMVElOX0NPTExFQ1RPUlMuZ2V0KHNlbGYucmhlbCwgJ19jb2xsZWN0X2J1aWx0aW5f YXJjaGl2ZScpCisgICAgICAgIGNvbGxlY3RvciA9IGdldGF0dHIoc2VsZiwgY29sbGVjdG9yX25h bWUpCisgICAgICAgIGNvbGxlY3RvcigpCisKKyAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAj IE1vZHVsZS10by1SUE0gTWFwcGluZworICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgZGVm IF9wYXJzZV9tb2R1bGVfbGlzdF9maWxlKHNlbGYsIGZpbGVuYW1lLCBycG1fbmFtZSk6CisgICAg ICAgICIiIgorICAgICAgICBQYXJzZSBhIG1vZHVsZSBsaXN0IGZpbGUgYW5kIGFkZCBlbnRyaWVz IHRvIG1vZHVsZV9ycG0gbWFwcGluZworCisgICAgICAgIEhhbmRsZXMgdmFyaW91cyBmb3JtYXRz OgorICAgICAgICAtIEFic29sdXRlIHBhdGhzOiAvbGliL21vZHVsZXMvNS4xNC4wL2tlcm5lbC9k cml2ZXJzL25ldC9lMTAwMC5rby54egorICAgICAgICAtIFJlbGF0aXZlIHBhdGhzOiBrZXJuZWwv ZHJpdmVycy9uZXQvZTEwMDAua28KKyAgICAgICAgLSBTa2lwcyBSUE0gc3BlYyBkaXJlY3RpdmVz ICglZGlyLCAlZGVmYXR0ciwgZXRjLikKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZmls ZW5hbWU6IFBhdGggdG8gdGhlIG1vZHVsZSBsaXN0IGZpbGUKKyAgICAgICAgICAgIHJwbV9uYW1l OiBMaXRlcmFsIFJQTSBwYWNrYWdlIG5hbWUgKGUuZy4sICJrZXJuZWwtbW9kdWxlcy01LjE0LjAu cnBtIikKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBmaWxlbmFtZSBvciBub3Qgb3MucGF0 aC5leGlzdHMoZmlsZW5hbWUpOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgd2l0aCBv cGVuKGZpbGVuYW1lLCAncnQnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmOgorICAgICAgICAgICAg Zm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisKKyAg ICAgICAgICAgICAgICAjIFNraXAgZW1wdHkgbGluZXMsIGNvbW1lbnRzLCBhbmQgUlBNIHNwZWMg ZGlyZWN0aXZlcworICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lIG9yIGxpbmUuc3RhcnRzd2l0 aCgnIycpIG9yIGxpbmUuc3RhcnRzd2l0aCgnJScpOgorICAgICAgICAgICAgICAgICAgICBjb250 aW51ZQorCisgICAgICAgICAgICAgICAgIyBTa2lwIG5vbi1tb2R1bGUgZmlsZXMKKyAgICAgICAg ICAgICAgICBpZiAnLmtvJyBub3QgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgY29udGlu dWUKKworICAgICAgICAgICAgICAgICMgRXh0cmFjdCBtb2R1bGUgbmFtZSBmcm9tIHBhdGgKKyAg ICAgICAgICAgICAgICBtb2R1bGUgPSBvcy5wYXRoLmJhc2VuYW1lKGxpbmUpCisgICAgICAgICAg ICAgICAgIyBSZW1vdmUgLmtvIGFuZCBhbnkgY29tcHJlc3Npb24gc3VmZml4CisgICAgICAgICAg ICAgICAgbW9kdWxlID0gcmUuc3ViKHInXC5rbyhcLlteLl0rKT8kJywgJycsIG1vZHVsZSkKKwor ICAgICAgICAgICAgICAgIGlmIG5vdCBtb2R1bGU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRp bnVlCisKKyAgICAgICAgICAgICAgICBpZiBtb2R1bGUgbm90IGluIHNlbGYubW9kdWxlX3JwbToK KyAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGVfcnBtW21vZHVsZV0gPSB7fQorCisgICAg ICAgICAgICAgICAgaWYgcnBtX25hbWUgbm90IGluIHNlbGYubW9kdWxlX3JwbVttb2R1bGVdOgor ICAgICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZV9ycG1bbW9kdWxlXVtycG1fbmFtZV0gPSBb XQorICAgICAgICAgICAgICAgIGlmIHNlbGYudmFyaWFudF9pZHggbm90IGluIHNlbGYubW9kdWxl X3JwbVttb2R1bGVdW3JwbV9uYW1lXToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGVf cnBtW21vZHVsZV1bcnBtX25hbWVdLmFwcGVuZChzZWxmLnZhcmlhbnRfaWR4KQorCisgICAgZGVm IGNvbGxlY3RfbW9kdWxlX3JwbShzZWxmLCBtb2R1bGVfbGlzdHMsIHZtbGludXhfcnBtPScnKToK KyAgICAgICAgIiIiCisgICAgICAgIENvbGxlY3QgbW9kdWxlLXRvLVJQTSBuYW1lIG1hcHBpbmdz IGZyb20gbW9kdWxlIGxpc3QgZmlsZXMKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgbW9k dWxlX2xpc3RzOiBMaXN0IG9mICJycG1fbmFtZTpwYXRoIiBzdHJpbmdzCisgICAgICAgICAgICB2 bWxpbnV4X3JwbTogUlBNIHBhY2thZ2UgbmFtZSBmb3Igdm1saW51eAorICAgICAgICAiIiIKKyAg ICAgICAgaWYgbm90IG1vZHVsZV9saXN0cyBhbmQgbm90IHZtbGludXhfcnBtOgorICAgICAgICAg ICAgcmV0dXJuCisKKyAgICAgICAgIyBBZGQgdm1saW51eCB0byBzcGVjaWZpZWQgUlBNCisgICAg ICAgIGlmIHZtbGludXhfcnBtOgorICAgICAgICAgICAgaWYgVk1MSU5VWCBub3QgaW4gc2VsZi5t b2R1bGVfcnBtOgorICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlX3JwbVtWTUxJTlVYXSA9IHt9 CisgICAgICAgICAgICBpZiB2bWxpbnV4X3JwbSBub3QgaW4gc2VsZi5tb2R1bGVfcnBtW1ZNTElO VVhdOgorICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlX3JwbVtWTUxJTlVYXVt2bWxpbnV4X3Jw bV0gPSBbXQorICAgICAgICAgICAgaWYgc2VsZi52YXJpYW50X2lkeCBub3QgaW4gc2VsZi5tb2R1 bGVfcnBtW1ZNTElOVVhdW3ZtbGludXhfcnBtXToKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVs ZV9ycG1bVk1MSU5VWF1bdm1saW51eF9ycG1dLmFwcGVuZChzZWxmLnZhcmlhbnRfaWR4KQorCisg ICAgICAgICMgUHJvY2VzcyBtb2R1bGUgbGlzdCBmaWxlcworICAgICAgICBmb3IgZW50cnkgaW4g bW9kdWxlX2xpc3RzOgorICAgICAgICAgICAgaWYgJzonIG5vdCBpbiBlbnRyeToKKyAgICAgICAg ICAgICAgICBwcmludChmJ1dhcm5pbmc6IEludmFsaWQgLS1tb2R1bGUtbGlzdCBmb3JtYXQgIntl bnRyeX0iLCBleHBlY3RlZCBSUE06UEFUSCcpCisgICAgICAgICAgICAgICAgY29udGludWUKKwor ICAgICAgICAgICAgcnBtX25hbWUsIHBhdGggPSBlbnRyeS5zcGxpdCgnOicsIDEpCisgICAgICAg ICAgICBzZWxmLl9wYXJzZV9tb2R1bGVfbGlzdF9maWxlKHBhdGgsIHJwbV9uYW1lKQorCisgICAg IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgIyBPdXRwdXQKKyAgICAjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KworICAgIGRlZiBfYnVpbGRfcmV2ZXJzZV9tYXAoc2VsZik6CisgICAgICAgICIiIgorICAgICAg ICBDcmVhdGUgcmV2ZXJzZSBtYXBwaW5nIChzb3VyY2UgLT4ge29iajogW2luZGljZXNdfSkgZnJv bSBvYmpfdG9fc3JjCisgICAgICAgICIiIgorICAgICAgICBmb3Igb2JqLCBzb3VyY2VzIGluIHNl bGYub2JqX3RvX3NyYy5pdGVtcygpOgorICAgICAgICAgICAgZm9yIHNvdXJjZSwgaW5kaWNlcyBp biBzb3VyY2VzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgc291cmNlIG5vdCBpbiBzZWxm LnNyY190b19vYmo6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3JjX3RvX29ialtzb3VyY2Vd ID0ge30KKyAgICAgICAgICAgICAgICBpZiBvYmogbm90IGluIHNlbGYuc3JjX3RvX29ialtzb3Vy Y2VdOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNyY190b19vYmpbc291cmNlXVtvYmpdID0g W10KKyAgICAgICAgICAgICAgICBmb3IgaWR4IGluIGluZGljZXM6CisgICAgICAgICAgICAgICAg ICAgIGlmIGlkeCBub3QgaW4gc2VsZi5zcmNfdG9fb2JqW3NvdXJjZV1bb2JqXToKKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3JjX3RvX29ialtzb3VyY2VdW29ial0uYXBwZW5kKGlkeCkK KworICAgIGRlZiBfYnVpbGRfcnBtX3JldmVyc2VfbWFwKHNlbGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgQ3JlYXRlIHJldmVyc2UgbWFwcGluZyAocnBtIC0+IHttb2R1bGU6IFtpbmRpY2VzXX0p IGZyb20gbW9kdWxlX3JwbQorICAgICAgICAiIiIKKyAgICAgICAgZm9yIG1vZHVsZSwgcnBtcyBp biBzZWxmLm1vZHVsZV9ycG0uaXRlbXMoKToKKyAgICAgICAgICAgIGZvciBycG0sIGluZGljZXMg aW4gcnBtcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmIHJwbSBub3QgaW4gc2VsZi5ycG1f dG9fbW9kdWxlczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ycG1fdG9fbW9kdWxlc1tycG1d ID0ge30KKyAgICAgICAgICAgICAgICBpZiBtb2R1bGUgbm90IGluIHNlbGYucnBtX3RvX21vZHVs ZXNbcnBtXToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ycG1fdG9fbW9kdWxlc1tycG1dW21v ZHVsZV0gPSBbXQorICAgICAgICAgICAgICAgIGZvciBpZHggaW4gaW5kaWNlczoKKyAgICAgICAg ICAgICAgICAgICAgaWYgaWR4IG5vdCBpbiBzZWxmLnJwbV90b19tb2R1bGVzW3JwbV1bbW9kdWxl XToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnBtX3RvX21vZHVsZXNbcnBtXVttb2R1 bGVdLmFwcGVuZChpZHgpCisKKyAgICBkZWYgc2F2ZV9kYXRhKHNlbGYpOgorICAgICAgICAiIiIK KyAgICAgICAgU2F2ZSBjb2xsZWN0ZWQgZGF0YSB0byBKU09OIGZpbGUKKworICAgICAgICBPdXRw dXQgc3RydWN0dXJlOgorICAgICAgICAgIC0gdmFyaWFudHM6IGxpc3Qgb2YgdmFyaWFudCBuYW1l cworICAgICAgICAgIC0gc291cmNlLW1hcDogc291cmNlIGZpbGUgbWFwcGluZ3MKKyAgICAgICAg ICAgIC0gb2JqLXNyYzogb2JqZWN0L21vZHVsZSAtPiB7c291cmNlOiBbdmFyaWFudF9pbmRpY2Vz XX0KKyAgICAgICAgICAgIC0gc3JjLW9iajogc291cmNlIC0+IHtvYmplY3QvbW9kdWxlOiBbdmFy aWFudF9pbmRpY2VzXX0KKyAgICAgICAgICAtIG1vZHVsZS1tYXA6IG1vZHVsZSB0byBSUE0gbWFw cGluZ3MKKyAgICAgICAgICAgIC0gbW9kdWxlLXJwbTogbW9kdWxlIG5hbWUgLT4ge3JwbS1uYW1l OiBbdmFyaWFudF9pbmRpY2VzXX0KKyAgICAgICAgICAgIC0gcnBtLW1vZHVsZXM6IHJwbS1uYW1l IC0+IHttb2R1bGUgbmFtZTogW3ZhcmlhbnRfaW5kaWNlc119CisKKyAgICAgICAgVmFyaWFudCBp bmRpY2VzIGNvcnJlc3BvbmQgdG8gcG9zaXRpb25zIGluIHRoZSAndmFyaWFudHMnIGxpc3QuCisg ICAgICAgICIiIgorICAgICAgICBvdXRwdXQgPSB7CisgICAgICAgICAgICAndmFyaWFudHMnOiBz ZWxmLnZhcmlhbnRzLAorICAgICAgICAgICAgJ3NvdXJjZS1tYXAnOiB7CisgICAgICAgICAgICAg ICAgJ29iai1zcmMnOiBzZWxmLm9ial90b19zcmMsCisgICAgICAgICAgICAgICAgJ3NyYy1vYmon OiBzZWxmLnNyY190b19vYmoKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAnbW9kdWxlLW1h cCc6IHsKKyAgICAgICAgICAgICAgICAnbW9kdWxlLXJwbSc6IHNlbGYubW9kdWxlX3JwbSwKKyAg ICAgICAgICAgICAgICAncnBtLW1vZHVsZXMnOiBzZWxmLnJwbV90b19tb2R1bGVzCisgICAgICAg ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmaWxlbmFtZSA9IHNlbGYub3V0cHJlZml4ICsg J2tlcm5lbC1tYXAuanNvbicKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLm91 dHB1dF9kaXIsIGZpbGVuYW1lKSwgJ3d0JywgZW5jb2Rpbmc9J3V0Zi04JykgYXMgZjoKKyAgICAg ICAgICAgIGpzb24uZHVtcChvdXRwdXQsIGYsIGluZGVudD0yLCBzb3J0X2tleXM9VHJ1ZSkKKwor ICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgTWFpbiBFbnRyeSBQb2ludAorICAgICMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCisgICAgZGVmIGNvbGxlY3RfZGF0YShzZWxmLCBub19tb2R1bGVzPUZh bHNlLCBub19idWlsdGluPUZhbHNlLCBtb2RvcmRlcj0nbW9kdWxlcy5vcmRlcicsCisgICAgICAg ICAgICAgICAgICAgICBpbnB1dF9maWxlPScnLCBtb2R1bGVfbGlzdHM9Tm9uZSwgdm1saW51eF9y cG09JycpOgorICAgICAgICAiIiIKKyAgICAgICAgTWFpbiBlbnRyeSBwb2ludCAtIGNvbGxlY3Qg YWxsIGRhdGEgYW5kIHNhdmUgdG8gSlNPTgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5sb2Fk X2V4aXN0aW5nKGlucHV0X2ZpbGUpCisgICAgICAgIHNlbGYuYWRkX3ZhcmlhbnQoKQorICAgICAg ICBzZWxmLmNvbGxlY3RfbW9kdWxlcyhub19tb2R1bGVzLCBtb2RvcmRlcikKKyAgICAgICAgc2Vs Zi5jb2xsZWN0X2J1aWx0aW4obm9fYnVpbHRpbikKKyAgICAgICAgc2VsZi5jb2xsZWN0X21vZHVs ZV9ycG0obW9kdWxlX2xpc3RzIG9yIFtdLCB2bWxpbnV4X3JwbSkKKyAgICAgICAgc2VsZi5fYnVp bGRfcmV2ZXJzZV9tYXAoKQorICAgICAgICBzZWxmLl9idWlsZF9ycG1fcmV2ZXJzZV9tYXAoKQor ICAgICAgICBzZWxmLnNhdmVfZGF0YSgpCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBN YWluCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBtYWluKCk6CisgICAgIiIiCisgICAg TWFpbiBlbnRyeSBwb2ludAorICAgICIiIgorICAgIGFyZ3MgPSBwYXJzZV9hcmdzKCkKKworICAg IHN0YXJ0ID0gdGltZS5tb25vdG9uaWMoKQorCisgICAgc291cmNlX21hcCA9IFNvdXJjZU1hcCgK KyAgICAgICAgICAgIGJ1aWxkX2Rpcj1hcmdzLmRpcmVjdG9yeSwKKyAgICAgICAgICAgIG91dHB1 dF9kaXI9YXJncy5vdXRwdXRkaXIsCisgICAgICAgICAgICBvdXRwcmVmaXg9YXJncy5wcmVmaXgs CisgICAgICAgICAgICByaGVsPWFyZ3MucmhlbCwKKyAgICAgICAgICAgIHZhcmlhbnQ9YXJncy52 YXJpYW50KQorCisgICAgc291cmNlX21hcC5jb2xsZWN0X2RhdGEoCisgICAgICAgICAgICBub19t b2R1bGVzPWFyZ3Mubm9fbW9kdWxlcywKKyAgICAgICAgICAgIG5vX2J1aWx0aW49YXJncy5ub19i dWlsdGluLAorICAgICAgICAgICAgaW5wdXRfZmlsZT1hcmdzLmlucHV0LAorICAgICAgICAgICAg bW9kdWxlX2xpc3RzPWFyZ3MubW9kdWxlX2xpc3QsCisgICAgICAgICAgICB2bWxpbnV4X3JwbT1h cmdzLnZtbGludXhfcnBtKQorCisgICAgaWYgYXJncy50aW1lOgorICAgICAgICBlbGFwc2VkID0g dGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0CisgICAgICAgIG1pbnV0ZXMsIHNlY29uZHMgPSBkaXZt b2QoaW50KGVsYXBzZWQpLCA2MCkKKyAgICAgICAgcHJpbnQoZidFbGFwc2VkIHRpbWU6IHttaW51 dGVzOjAyZH06e3NlY29uZHM6MDJkfScpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK KyAgICBtYWluKCkKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCAwNjRiZjFi Li5iMGIyMmMxIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsMyArMSwz IEBACi1TSEE1MTIgKGxpbnV4LTcuMi1yYzItMjItZzBlMzViOWI2ZWMwZi50YXIueHopID0gYmEz ZDQwNWJhMGYwNzk5MTFlYjVjMmEyNGM5NTlhOGRkY2JmZjQxNmRmNWU0YjY5MDQ5OThkMmI1NTI4 MDNiZmQ2YjdhZDA3Yzc1YmRjOTliODhlYzcxZDQyMjRkYWI1MzZhMjZiZWUwYTVmZjFkNTkzYTIw NWM5OTI0Y2RiMGIKLVNIQTUxMiAoa2VybmVsLWFiaS1zdGFibGVsaXN0cy03LjIuMC50YXIueHop ID0gOTkxZDYyNmM3NDA3MWUzOTNlYzZmOWRhNmZlZGJiZWJmNDY3NmFmNTYwNjMwZGE1ZDIxMWVj MTYwMjQ3MDU5YmYzZGM3M2I5YTRjNDk1YWRmZGNiYWNiNWYwOGNlZTFjZjYyZGY0MTQ4ODc5YjU5 MDA5ODIzZGQzZjU1YjZkODMKLVNIQTUxMiAoa2VybmVsLWthYmktZHctNy4yLjAudGFyLnh6KSA9 IDM0YzAyOWQ1MDkzNzM4ZWU2YzlkMzk3MDdiNjYyZWQ2NzZjMTE0NTkyYmFlNDJmYzQ2NWIwMjA1 NTk3YzU0ZDIxY2U1NzM0ZTUxZDI2ZTk4NWNjMGRkYjNkOGU5YmU4ZTEwMDc4ODhjNDM2ZTg2ZjUy ZWM2MzA5ZGE3Mjg4YTljCitTSEE1MTIgKGxpbnV4LTcuMi1yYzItMjY0LWdkZDMyMTBjNDdlOGQu dGFyLnh6KSA9IDU3N2UxYjJkYWJiMDUyMGE2NDEwZGIzYjYwMDM0NTVjMGE4MWNiZTVkNmZlMzI2 ODM5YWFjMjY5NmVlNzA1MGNiNWU3OTAyOGU0M2YzZTM4MDM0MThiZjg2MzVjOGE3M2VmMWE0MDk1 N2VmZTFmMTUyMzBhNTEwYmYzMDU5MjU4CitTSEE1MTIgKGtlcm5lbC1hYmktc3RhYmxlbGlzdHMt Ny4yLjAudGFyLnh6KSA9IGRjNDBkYWYyZTNhN2IzNzE4MzQzNDczYWIzYmYwZWVmNWI1M2M4MWJj MzZkYTNiY2JiYzg3NGQ2NDAzOGQxOTBjMWJkYmZiMjBlYjZkYWI5NDAxNzVkZDk3MGYxMjhkZDM2 MjEzODA4ZDQwNTJiNzcyNWQ1MGI3NTk4M2M1ZmQ0CitTSEE1MTIgKGtlcm5lbC1rYWJpLWR3LTcu Mi4wLnRhci54eikgPSAwZmNhYjc3MDAyYzU5OGEyNmQzNzdkOGU4MzU3ZDM3NDdlMDA0NjM1YmNm NWM4YjMxMGJiNDI2ZWQzZTEzN2NkODk1N2M0NzdiNmEyZTgzYjBiZmUwZGZjOTFmMTg3YTY4N2I0 NzkwNDk1MzIyZDZkNDA0Mjk2MWY1ZmY2ZGVlMgo=