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: Carl George To: git-commits@fedoraproject.org Subject: [rpms/blackbox-terminal] rawhide: Update to version 0.15.2 Date: Wed, 01 Jul 2026 18:03:00 GMT Message-ID: <178292898076.1.7564275938582812195.rpms-blackbox-terminal-1453c486f974@fedoraproject.org> List-ID: X-Git-Repo: rpms/blackbox-terminal X-Git-Branch: rawhide X-Git-Rev: 1453c486f974eeb655556559f63b8a8e01b7bbe3 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvYmxhY2tib3gtdGVybWluYWwKICAgICAgICAgICAgQnJhbmNoIDogcmF3aGlk ZQogICAgICAgICAgICBDb21taXQgOiAxNDUzYzQ4NmY5NzRlZWI2NTU1NTY1NTlmNjNiOGE4ZTAx YjdiYmUzCiAgICAgICAgICAgIEF1dGhvciA6IENhcmwgR2VvcmdlIDxjYXJsd2dlb3JnZUBnbWFp bC5jb20+CiAgICAgICAgICAgIERhdGUgICA6IDIwMjYtMDctMDFUMTI6MjU6MjQtMDU6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzIwNzgvLTIgaW4gMyBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAg ICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvYmxhY2tib3gtdGVybWluYWwv Yy8xNDUzYzQ4NmY5NzRlZWI2NTU1NTY1NTlmNjNiOGE4ZTAxYjdiYmUzP2JyYW5jaD1yYXdoaWRl CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIFVwZGF0ZSB0byB2ZXJzaW9uIDAuMTUuMgoK Li4uIHJoYnojMjQ4NzQyNwotIEFkZCBuYXV0aWx1cyBleHRlbnNpb24gc3VicGFja2FnZQotIEZp eCBidWcgd2l0aCBuZXcgdGFicyBsb3Npbmcgd29ya2luZyBkaXJlY3RvcnkKCi0tLQpkaWZmIC0t Z2l0IGEvMDAwMS1JbXBsZW1lbnQtbGFzdC1rbm93bi1jd2QucGF0Y2ggYi8wMDAxLUltcGxlbWVu dC1sYXN0LWtub3duLWN3ZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li45ZTI1YjU1Ci0tLSAvZGV2L251bGwKKysrIGIvMDAwMS1JbXBsZW1lbnQtbGFzdC1rbm93bi1j d2QucGF0Y2gKQEAgLTAsMCArMSwyMDU3IEBACitGcm9tIDBkYjY3Y2RjZTA3NWE0ZDQ3ZWU1NjAy YzE3NTVhYmQ1ODU2ZmNlNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsbyBR dWVpcm96IDwxNDczOS1yYWdnZXNpbHZlckB1c2Vycy5ub3JlcGx5LmdpdGxhYi5nbm9tZS5vcmc+ CitEYXRlOiBUaHUsIDExIEp1biAyMDI2IDE4OjMzOjEzIC0wMzAwCitTdWJqZWN0OiBbUEFUQ0hd IEltcGxlbWVudCBsYXN0IGtub3duIGN3ZAorCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA3 MTgyZDZkYThkZGJkOTI1ZGIwMDFiMzBlZDZiM2IwMDkyN2RkN2Y1KQorLS0tCisgc3JjL3dpZGdl dHMvVGVybWluYWwudmFsYSB8IDM4MSArKysrKysrKysrLS0tLS0tLS0tCisgc3JjL3dpZGdldHMv V2luZG93LnZhbGEgICB8IDc0NyArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LQorIDIgZmlsZXMgY2hhbmdlZCwgNTY5IGluc2VydGlvbnMoKyksIDU1OSBkZWxldGlvbnMoLSkK KworZGlmZiAtLWdpdCBhL3NyYy93aWRnZXRzL1Rlcm1pbmFsLnZhbGEgYi9zcmMvd2lkZ2V0cy9U ZXJtaW5hbC52YWxhCitpbmRleCA5ZjVkOGRkLi42NDAyY2M1IDEwMDY0NAorLS0tIGEvc3JjL3dp ZGdldHMvVGVybWluYWwudmFsYQorKysrIGIvc3JjL3dpZGdldHMvVGVybWluYWwudmFsYQorQEAg LTE5LDcgKzE5LDYgQEAKKyAgKi8KKyAKKyBwdWJsaWMgY2xhc3MgVGVybWluYWwuVGVybWluYWwg OiBWdGUuVGVybWluYWwgeworLQorICAgLyoqCisgICAgKiBMaXN0IG9mIGF2YWlsYWJsZSBkcm9w IHRhcmdldHMgZm9yIFRlcm1pbmFsCisgICAgKi8KK0BAIC0zMiw5ICszMSw5IEBAIHB1YmxpYyBj bGFzcyBUZXJtaW5hbC5UZXJtaW5hbCA6IFZ0ZS5UZXJtaW5hbCB7CisgICBzdGF0aWMgc3RyaW5n W10gYmxhY2tib3hfZW52diA9IHsKKyAgICAgIlRFUk09eHRlcm0tMjU2Y29sb3IiLAorICAgICAi Q09MT1JURVJNPXRydWVjb2xvciIsCistICAgICJURVJNX1BST0dSQU09JXMiLnByaW50ZiAoQVBQ X05BTUUpLAorLSAgICAiQkxBQ0tCT1hfVEhFTUVTX0RJUj0lcyIucHJpbnRmIChDb25zdGFudHMu Z2V0X3VzZXJfc2NoZW1lc19kaXIgKCkpLAorLSAgICAiVlRFX1ZFUlNJT049JXUiLnByaW50ZiAo CisrICAgICJURVJNX1BST0dSQU09JXMiLnByaW50ZihBUFBfTkFNRSksCisrICAgICJCTEFDS0JP WF9USEVNRVNfRElSPSVzIi5wcmludGYoQ29uc3RhbnRzLmdldF91c2VyX3NjaGVtZXNfZGlyKCkp LAorKyAgICAiVlRFX1ZFUlNJT049JXUiLnByaW50ZigKKyAgICAgICBWdGUuTUFKT1JfVkVSU0lP TiAqIDEwMDAwICsgVnRlLk1JTk9SX1ZFUlNJT04gKiAxMDAgKyBWdGUuTUlDUk9fVkVSU0lPTgor ICAgICApCisgICB9OworQEAgLTQ1LDE4ICs0NCwxOCBAQCBwdWJsaWMgY2xhc3MgVGVybWluYWwu VGVybWluYWwgOiBWdGUuVGVybWluYWwgeworICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3 aGVuIHRoZSB0ZXJtaW5hbCBwcm9jZXNzIGV4aXRzLiBTb21ldGhpbmcgc2hvdWxkCisgICAgKiBs aXN0ZW4gZm9yIHRoaXMgc2lnbmFsIGFuZCBjbG9zZSB0aGUgdGFiIHRoYXQgY29udGFpbnMgdGhp cyB0ZXJtaW5hbC4KKyAgICAqLworLSAgcHVibGljIHNpZ25hbCB2b2lkIGV4aXQgKCk7CisrICBw dWJsaWMgc2lnbmFsIHZvaWQgZXhpdCgpOworIAorLSAgcHVibGljIHNpZ25hbCB2b2lkIHNwYXdu X2ZhaWxlZCAoc3RyaW5nPyBlcnJvcl9tZXNzYWdlKTsKKysgIHB1YmxpYyBzaWduYWwgdm9pZCBz cGF3bl9mYWlsZWQoc3RyaW5nPyBlcnJvcl9tZXNzYWdlKTsKKyAKKy0gIHB1YmxpYyBzaWduYWwg dm9pZCBjb250ZXh0X2NoYW5nZWQgKFByb2Nlc3NDb250ZXh0IGNvbnRleHQpOworKyAgcHVibGlj IHNpZ25hbCB2b2lkIGNvbnRleHRfY2hhbmdlZChQcm9jZXNzQ29udGV4dCBjb250ZXh0KTsKKyAK KyAgIC8vIFByb3BlcnRpZXMKKyAKKy0gIHB1YmxpYyBTY2hlbWUgICAgICAgICAgIHNjaGVtZSAg eyBnZXQ7IHNldDsgfQorLSAgcHVibGljIFBpZCAgICAgICAgICAgICAgcGlkICAgICB7IGdldDsg cHJvdGVjdGVkIHNldDsgZGVmYXVsdCA9IC0xOyB9CistICBwdWJsaWMgUHJvY2Vzcz8gICAgICAg ICBwcm9jZXNzIHsgZ2V0OyBwcm90ZWN0ZWQgc2V0OyBkZWZhdWx0ID0gbnVsbDsgfQorLSAgcHVi bGljIHVpbnQgICAgICAgICAgICAgaWQgICAgICB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0KKysgIHB1 YmxpYyBTY2hlbWUgICBzY2hlbWUgIHsgZ2V0OyBzZXQ7IH0KKysgIHB1YmxpYyBQaWQgICAgICBw aWQgICAgIHsgZ2V0OyBwcm90ZWN0ZWQgc2V0OyBkZWZhdWx0ID0gLTE7IH0KKysgIHB1YmxpYyBQ cm9jZXNzPyBwcm9jZXNzIHsgZ2V0OyBwcm90ZWN0ZWQgc2V0OyBkZWZhdWx0ID0gbnVsbDsgfQor KyAgcHVibGljIHVpbnQgICAgIGlkICAgICAgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CisgCisgICBw dWJsaWMgYm9vbCBuZWVkc19hdHRlbnRpb24geworICAgICBnZXQ7CitAQCAtNjYsMzEgKzY1LDMx IEBAIHB1YmxpYyBjbGFzcyBUZXJtaW5hbC5UZXJtaW5hbCA6IFZ0ZS5UZXJtaW5hbCB7CisgCisg ICBwdWJsaWMgdWludCB1c2VyX3Njcm9sbGJhY2tfbGluZXMgeworICAgICBnZXQgeworLSAgICAg IHZhciBzZXR0aW5ncyA9IFNldHRpbmdzLmdldF9kZWZhdWx0ICgpOworKyAgICAgIHZhciBzZXR0 aW5ncyA9IFNldHRpbmdzLmdldF9kZWZhdWx0KCk7CisgCisgICAgICAgc3dpdGNoIChzZXR0aW5n cy5zY3JvbGxiYWNrX21vZGUpIHsKKyAgICAgICAgIGNhc2UgU2Nyb2xsYmFja01vZGUuRklYRUQ6 ICAgICByZXR1cm4gc2V0dGluZ3Muc2Nyb2xsYmFja19saW5lczsKKyAgICAgICAgIGNhc2UgU2Ny b2xsYmFja01vZGUuVU5MSU1JVEVEOiByZXR1cm4gLTE7CisgICAgICAgICBjYXNlIFNjcm9sbGJh Y2tNb2RlLkRJU0FCTEVEOiAgcmV0dXJuIDA7CisgICAgICAgICBkZWZhdWx0OgorLSAgICAgICAg ICBlcnJvciAoIkludmFsaWQgc2Nyb2xsYmFjay1tb2RlICV1Iiwgc2V0dGluZ3Muc2Nyb2xsYmFj a19tb2RlKTsKKysgICAgICAgICAgZXJyb3IoIkludmFsaWQgc2Nyb2xsYmFjay1tb2RlICV1Iiwg c2V0dGluZ3Muc2Nyb2xsYmFja19tb2RlKTsKKyAgICAgICB9CisgICAgIH0KKyAgIH0KKyAKKyAg IC8vIEZpZWxkcworIAorLSAgcHVibGljICBXaW5kb3cgICAgICAgICAgICB3aW5kb3c7CistICBw cml2YXRlIHVpbnQgICAgICAgICAgICAgIG9yaWdpbmFsX3Njcm9sbGJhY2tfbGluZXM7CistcHJp dmF0ZSBzdGF0aWMgdWludCAgICAgICBuZXh0X2lkID0gMDsKKy0gIHByaXZhdGUgdWludCAgICAg ICAgICAgICAgYXR0ZW50aW9uX3RpbWVyID0gMDsKKysgIHB1YmxpYyBXaW5kb3cgd2luZG93Owor KyAgcHJpdmF0ZSB1aW50ICBvcmlnaW5hbF9zY3JvbGxiYWNrX2xpbmVzOworKyAgcHJpdmF0ZSBz dGF0aWMgdWludCBuZXh0X2lkID0gMDsKKysgIHByaXZhdGUgdWludCBhdHRlbnRpb25fdGltZXIg PSAwOworIAorICAgLy8gRklYTUU6IGVpdGhlciBnZXQgcmlkIG9mIHRoaXMgZmllbGQsIG9yIHN0 b3AgY3JlYXRpbmcgYSBsb2NhbCBjb3B5IG9mCisgICAvLyBzZXR0aW5ncyBldmVyeSB0aW1lIHdl IG5lZWQgdG8gdXNlIGl0CisgICBwcml2YXRlIFNldHRpbmdzIHNldHRpbmdzOworIAorICAgcHVi bGljIFRlcm1pbmFsIChXaW5kb3cgd2luZG93LCBzdHJpbmc/IGNvbW1hbmQgPSBudWxsLCBzdHJp bmc/IGN3ZCA9IG51bGwpIHsKKy0gICAgT2JqZWN0ICgKKysgICAgT2JqZWN0KAorICAgICAgIGFs bG93X2h5cGVybGluazogdHJ1ZSwKKyAgICAgICByZWNlaXZlc19kZWZhdWx0OiB0cnVlLAorICAg ICAgIHNjcm9sbF91bml0X2lzX3BpeGVsczogdHJ1ZQorQEAgLTEwNywxMTkgKzEwNiwxMTcgQEAg cHJpdmF0ZSBzdGF0aWMgdWludCAgICAgICBuZXh0X2lkID0gMDsKKyAgICAgdGhpcy5oYWxpZ24g PSBHdGsuQWxpZ24uRklMTDsKKyAgICAgdGhpcy52YWxpZ24gPSBHdGsuQWxpZ24uRklMTDsKKyAK Ky0gICAgdGhpcy5jaGlsZF9leGl0ZWQuY29ubmVjdCAodGhpcy5vbl9jaGlsZF9leGl0ZWQpOwor KyAgICB0aGlzLmNoaWxkX2V4aXRlZC5jb25uZWN0KHRoaXMub25fY2hpbGRfZXhpdGVkKTsKKyAK Ky0gICAgdGhpcy5zZXR0aW5ncyA9IFNldHRpbmdzLmdldF9kZWZhdWx0ICgpOworLSAgICBUaGVt ZVByb3ZpZGVyLmdldF9kZWZhdWx0ICgpLm5vdGlmeSBbImN1cnJlbnQtdGhlbWUiXS5jb25uZWN0 ICh0aGlzLm9uX3RoZW1lX2NoYW5nZWQpOworLSAgICB0aGlzLnNldHRpbmdzLm5vdGlmeVsiZm9u dCJdLmNvbm5lY3QgKHRoaXMub25fZm9udF9jaGFuZ2VkKTsKKy0gICAgdGhpcy5zZXR0aW5ncy5u b3RpZnlbInRlcm1pbmFsLXBhZGRpbmciXS5jb25uZWN0ICh0aGlzLm9uX3BhZGRpbmdfY2hhbmdl ZCk7CistICAgIHRoaXMuc2V0dGluZ3Mubm90aWZ5WyJvcGFjaXR5Il0uY29ubmVjdCAodGhpcy5v bl90aGVtZV9jaGFuZ2VkKTsKKysgICAgdGhpcy5zZXR0aW5ncyA9IFNldHRpbmdzLmdldF9kZWZh dWx0KCk7CisrICAgIFRoZW1lUHJvdmlkZXIuZ2V0X2RlZmF1bHQoKS5ub3RpZnlbImN1cnJlbnQt dGhlbWUiXS5jb25uZWN0KAorKyAgICAgIHRoaXMub25fdGhlbWVfY2hhbmdlZCk7CisrICAgIHRo aXMuc2V0dGluZ3Mubm90aWZ5WyJmb250Il0uY29ubmVjdCh0aGlzLm9uX2ZvbnRfY2hhbmdlZCk7 CisrICAgIHRoaXMuc2V0dGluZ3Mubm90aWZ5WyJ0ZXJtaW5hbC1wYWRkaW5nIl0uY29ubmVjdCh0 aGlzLm9uX3BhZGRpbmdfY2hhbmdlZCk7CisrICAgIHRoaXMuc2V0dGluZ3Mubm90aWZ5WyJvcGFj aXR5Il0uY29ubmVjdCh0aGlzLm9uX3RoZW1lX2NoYW5nZWQpOworIAorLSAgICB0aGlzLnNldHVw X2RyYWdfZHJvcCAoKTsKKy0gICAgdGhpcy5zZXR1cF9yZWdleGVzICgpOworLSAgICB0aGlzLmNv bm5lY3Rfc2lnbmFscyAoKTsKKy0gICAgdGhpcy5iaW5kX2RhdGEgKCk7CistICAgIHRoaXMub25f dGhlbWVfY2hhbmdlZCAoKTsKKy0gICAgdGhpcy5vbl9mb250X2NoYW5nZWQgKCk7CistICAgIHRo aXMub25fcGFkZGluZ19jaGFuZ2VkICgpOworKyAgICB0aGlzLnNldHVwX2RyYWdfZHJvcCgpOwor KyAgICB0aGlzLnNldHVwX3JlZ2V4ZXMoKTsKKysgICAgdGhpcy5jb25uZWN0X3NpZ25hbHMoKTsK KysgICAgdGhpcy5iaW5kX2RhdGEoKTsKKysgICAgdGhpcy5vbl90aGVtZV9jaGFuZ2VkKCk7Cisr ICAgIHRoaXMub25fZm9udF9jaGFuZ2VkKCk7CisrICAgIHRoaXMub25fcGFkZGluZ19jaGFuZ2Vk KCk7CisgCisgICAgIHRyeSB7CistICAgICAgdGhpcy5zcGF3biAoY29tbWFuZCwgY3dkKTsKKy0g ICAgfQorLSAgICBjYXRjaCAoRXJyb3IgZSkgeworLSAgICAgIHdhcm5pbmcgKCIlcyIsIGUubWVz c2FnZSk7CisrICAgICAgdGhpcy5zcGF3bihjb21tYW5kLCBjd2QpOworKyAgICB9IGNhdGNoIChF cnJvciBlKSB7CisrICAgICAgd2FybmluZygiJXMiLCBlLm1lc3NhZ2UpOworICAgICB9CisgICB9 CisgCisgI2lmIEJMQUNLQk9YX0RFQlVHX01FTU9SWQorICAgflRlcm1pbmFsICgpIHsKKy0gICAg bWVzc2FnZSAoIlRlcm1pbmFsIGRlc3Ryb3llZCIpOworKyAgICBtZXNzYWdlKCJUZXJtaW5hbCBk ZXN0cm95ZWQiKTsKKyAgIH0KKysKKyAjZW5kaWYKKyAKKyAgIHB1YmxpYyBvdmVycmlkZSB2b2lk IGRpc3Bvc2UoKSB7CisgI2lmIEJMQUNLQk9YX0RFQlVHX01FTU9SWQorLSAgICBtZXNzYWdlICgi VGVybWluYWwgZGlzcG9zZSIpOworKyAgICBtZXNzYWdlKCJUZXJtaW5hbCBkaXNwb3NlIik7Cisg I2VuZGlmCistICAgIGJhc2UuZGlzcG9zZSAoKTsKKysgICAgYmFzZS5kaXNwb3NlKCk7CisgICB9 CisgCisgICAvLyBNZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAKKy0gIHByaXZhdGUgdm9pZCBzZXR1cF9k cmFnX2Ryb3AgKCkgeworLSAgICB2YXIgdGFyZ2V0ID0gbmV3IEd0ay5Ecm9wVGFyZ2V0IChUeXBl LklOVkFMSUQsIEdkay5EcmFnQWN0aW9uLkNPUFkpOworKyAgcHJpdmF0ZSB2b2lkIHNldHVwX2Ry YWdfZHJvcCgpIHsKKysgICAgdmFyIHRhcmdldCA9IG5ldyBHdGsuRHJvcFRhcmdldChUeXBlLklO VkFMSUQsIEdkay5EcmFnQWN0aW9uLkNPUFkpOworIAorLSAgICB0YXJnZXQuc2V0X2d0eXBlcyAo eworKyAgICB0YXJnZXQuc2V0X2d0eXBlcyh7CisgICAgICAgdHlwZW9mIChHZGsuRmlsZUxpc3Qp LAorICAgICAgIHR5cGVvZiAoR0xpYi5GaWxlKSwKKyAgICAgICB0eXBlb2YgKHN0cmluZyksCisg ICAgIH0pOworIAorLSAgICB0YXJnZXQuZHJvcC5jb25uZWN0ICh0aGlzLm9uX2RyYWdfZGF0YV9y ZWNlaXZlZCk7CisrICAgIHRhcmdldC5kcm9wLmNvbm5lY3QodGhpcy5vbl9kcmFnX2RhdGFfcmVj ZWl2ZWQpOworIAorLSAgICB0aGlzLmFkZF9jb250cm9sbGVyICh0YXJnZXQpOworKyAgICB0aGlz LmFkZF9jb250cm9sbGVyKHRhcmdldCk7CisgICB9CisgCistICBwcml2YXRlIGJvb2wgb25fZHJh Z19kYXRhX3JlY2VpdmVkICgKKysgIHByaXZhdGUgYm9vbCBvbl9kcmFnX2RhdGFfcmVjZWl2ZWQo CisgICAgIEd0ay5Ecm9wVGFyZ2V0IHRhcmdldCwKKyAgICAgVmFsdWUgdmFsdWUsCisgICAgIGRv dWJsZSB4LAorICAgICBkb3VibGUgeQorICAgKSB7CistICAgIHZhciB2dHlwZSA9IHZhbHVlLnR5 cGUgKCk7CisrICAgIHZhciB2dHlwZSA9IHZhbHVlLnR5cGUoKTsKKyAKKyAgICAgaWYgKHZ0eXBl ID09IHR5cGVvZiAoR2RrLkZpbGVMaXN0KSkgeworLSAgICAgIHZhciBsaXN0ID0gKEdkay5GaWxl TGlzdCkgdmFsdWUuZ2V0X2JveGVkICgpOworKyAgICAgIHZhciBsaXN0ID0gKEdkay5GaWxlTGlz dCkgdmFsdWUuZ2V0X2JveGVkKCk7CisgCistICAgICAgZm9yZWFjaCAodW5vd25lZCBHTGliLkZp bGUgZmlsZSBpbiBsaXN0LmdldF9maWxlcyAoKSkgeworLSAgICAgICAgdGhpcy5mZWVkX2NoaWxk IChTaGVsbC5xdW90ZSAoZmlsZS5nZXRfcGF0aCAoKSkuZGF0YSk7CistICAgICAgICB0aGlzLmZl ZWRfY2hpbGQgKCIgIi5kYXRhKTsKKysgICAgICBmb3JlYWNoICh1bm93bmVkIEdMaWIuRmlsZSBm aWxlIGluIGxpc3QuZ2V0X2ZpbGVzKCkpIHsKKysgICAgICAgIHRoaXMuZmVlZF9jaGlsZChTaGVs bC5xdW90ZShmaWxlLmdldF9wYXRoKCkpLmRhdGEpOworKyAgICAgICAgdGhpcy5mZWVkX2NoaWxk KCIgIi5kYXRhKTsKKyAgICAgICB9CisgCisgICAgICAgcmV0dXJuIHRydWU7CistICAgIH0KKy0g ICAgZWxzZSBpZiAodnR5cGUgPT0gdHlwZW9mIChHTGliLkZpbGUpKSB7CistICAgICAgdmFyIGZp bGUgPSAoR0xpYi5GaWxlKSB2YWx1ZS5nZXRfb2JqZWN0ICgpOworLSAgICAgIHZhciBwYXRoID0g ZmlsZT8uZ2V0X3BhdGggKCk7CisrICAgIH0gZWxzZSBpZiAodnR5cGUgPT0gdHlwZW9mIChHTGli LkZpbGUpKSB7CisrICAgICAgdmFyIGZpbGUgPSAoR0xpYi5GaWxlKSB2YWx1ZS5nZXRfb2JqZWN0 KCk7CisrICAgICAgdmFyIHBhdGggPSBmaWxlPy5nZXRfcGF0aCgpOworIAorICAgICAgIGlmIChw YXRoICE9IG51bGwpIHsKKy0gICAgICAgIHRoaXMuZmVlZF9jaGlsZCAoU2hlbGwucXVvdGUgKHBh dGgpLmRhdGEpOworLSAgICAgICAgdGhpcy5mZWVkX2NoaWxkICgiICIuZGF0YSk7CisrICAgICAg ICB0aGlzLmZlZWRfY2hpbGQoU2hlbGwucXVvdGUocGF0aCkuZGF0YSk7CisrICAgICAgICB0aGlz LmZlZWRfY2hpbGQoIiAiLmRhdGEpOworICAgICAgIH0KKyAKKyAgICAgICByZXR1cm4gdHJ1ZTsK Ky0gICAgfQorLSAgICBlbHNlIGlmICh2dHlwZSA9PSB0eXBlb2YgKHN0cmluZykpIHsKKy0gICAg ICB2YXIgdGV4dCA9IHZhbHVlLmdldF9zdHJpbmcgKCk7CisrICAgIH0gZWxzZSBpZiAodnR5cGUg PT0gdHlwZW9mIChzdHJpbmcpKSB7CisrICAgICAgdmFyIHRleHQgPSB2YWx1ZS5nZXRfc3RyaW5n KCk7CisgCisgICAgICAgaWYgKHRleHQgIT0gbnVsbCkgeworLSAgICAgICAgdGhpcy5mZWVkX2No aWxkICh0ZXh0LmRhdGEpOworKyAgICAgICAgdGhpcy5mZWVkX2NoaWxkKHRleHQuZGF0YSk7Cisg ICAgICAgfQorIAorICAgICAgIHJldHVybiB0cnVlOworICAgICB9CisgCistICAgIHdhcm5pbmcg KCJZb3UgZHJvcHBlZCBzb21ldGhpbmcgVGVybWluYWwgY2FuJ3QgaGFuZGxlIHlldCA6KCIpOwor KyAgICB3YXJuaW5nKCJZb3UgZHJvcHBlZCBzb21ldGhpbmcgVGVybWluYWwgY2FuJ3QgaGFuZGxl IHlldCA6KCIpOworICAgICByZXR1cm4gZmFsc2U7CisgICB9CisgCistICBwcml2YXRlIHZvaWQg c2V0dXBfcmVnZXhlcyAoKSB7CisrICBwcml2YXRlIHZvaWQgc2V0dXBfcmVnZXhlcygpIHsKKyAg ICAgZm9yZWFjaCAodW5vd25lZCBzdHJpbmcgc3RyIGluIENvbnN0YW50cy5VUkxfUkVHRVhfU1RS SU5HUykgeworICAgICAgIHRyeSB7CistICAgICAgICB2YXIgcmVnID0gbmV3IFZ0ZS5SZWdleC5m b3JfbWF0Y2ggKAorKyAgICAgICAgdmFyIHJlZyA9IG5ldyBWdGUuUmVnZXguZm9yX21hdGNoKAor ICAgICAgICAgICBzdHIsIC0xLCBQQ1JFMi5GbGFncy5NVUxUSUxJTkUKKyAgICAgICAgICk7Cist ICAgICAgICBpbnQgaWQgPSB0aGlzLm1hdGNoX2FkZF9yZWdleCAocmVnLCAwKTsKKy0gICAgICAg IHRoaXMubWF0Y2hfc2V0X2N1cnNvcl9uYW1lIChpZCwgInBvaW50ZXIiKTsKKy0gICAgICB9Cist ICAgICAgY2F0Y2ggKEVycm9yIGUpIHsKKy0gICAgICAgIHdhcm5pbmcgKGUubWVzc2FnZSk7Cisr ICAgICAgICBpbnQgaWQgPSB0aGlzLm1hdGNoX2FkZF9yZWdleChyZWcsIDApOworKyAgICAgICAg dGhpcy5tYXRjaF9zZXRfY3Vyc29yX25hbWUoaWQsICJwb2ludGVyIik7CisrICAgICAgfSBjYXRj aCAoRXJyb3IgZSkgeworKyAgICAgICAgd2FybmluZyhlLm1lc3NhZ2UpOworICAgICAgIH0KKyAg ICAgfQorICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIG9uX2ZvbnRfY2hhbmdlZCAoKSB7CistICAg IHRoaXMuZm9udF9kZXNjID0gUGFuZ28uRm9udERlc2NyaXB0aW9uLmZyb21fc3RyaW5nICgKKysg IHByaXZhdGUgdm9pZCBvbl9mb250X2NoYW5nZWQoKSB7CisrICAgIHRoaXMuZm9udF9kZXNjID0g UGFuZ28uRm9udERlc2NyaXB0aW9uLmZyb21fc3RyaW5nKAorICAgICAgIHRoaXMuc2V0dGluZ3Mu Zm9udAorICAgICApOworICAgfQorQEAgLTIzMCwxOCArMjI3LDE4IEBAIHByaXZhdGUgc3RhdGlj IHVpbnQgICAgICAgbmV4dF9pZCA9IDA7CisgICAgIHJldHVybiBiZ190cmFuc3BhcmVudDsKKyAg IH0KKyAKKy0gIHByaXZhdGUgdm9pZCBvbl90aGVtZV9jaGFuZ2VkICgpIHsKKy0gICAgdmFyIHRo ZW1lX3Byb3ZpZGVyID0gVGhlbWVQcm92aWRlci5nZXRfZGVmYXVsdCAoKTsKKysgIHByaXZhdGUg dm9pZCBvbl90aGVtZV9jaGFuZ2VkKCkgeworKyAgICB2YXIgdGhlbWVfcHJvdmlkZXIgPSBUaGVt ZVByb3ZpZGVyLmdldF9kZWZhdWx0KCk7CisgICAgIHZhciB0aGVtZV9uYW1lID0gdGhlbWVfcHJv dmlkZXIuY3VycmVudF90aGVtZTsKKy0gICAgdmFyIHRoZW1lID0gdGhlbWVfcHJvdmlkZXIudGhl bWVzLmdldCAodGhlbWVfbmFtZSk7CisrICAgIHZhciB0aGVtZSA9IHRoZW1lX3Byb3ZpZGVyLnRo ZW1lcy5nZXQodGhlbWVfbmFtZSk7CisgCisgICAgIGlmICh0aGVtZSA9PSBudWxsKSB7CistICAg ICAgd2FybmluZyAoIklOVkFMSUQgVEhFTUUgJyVzJyIsIHRoZW1lX25hbWUpOworKyAgICAgIHdh cm5pbmcoIklOVkFMSUQgVEhFTUUgJyVzJyIsIHRoZW1lX25hbWUpOworICAgICAgIHJldHVybjsK KyAgICAgfQorIAorLSAgICB2YXIgYmcgPSB0aGlzLmdldF9iYWNrZ3JvdW5kX2NvbG9yICh0aGVt ZSk7CistICAgIHRoaXMuc2V0X2NvbG9ycyAoCisrICAgIHZhciBiZyA9IHRoaXMuZ2V0X2JhY2tn cm91bmRfY29sb3IodGhlbWUpOworKyAgICB0aGlzLnNldF9jb2xvcnMoCisgICAgICAgdGhlbWUu Zm9yZWdyb3VuZF9jb2xvciwKKyAgICAgICBiZywKKyAgICAgICB0aGVtZS5wYWxldHRlLmRhdGEK K0BAIC0yNDksMTEgKzI0NiwxMSBAQCBwcml2YXRlIHN0YXRpYyB1aW50ICAgICAgIG5leHRfaWQg PSAwOworICAgfQorIAorICAgcHJpdmF0ZSBHdGsuQ3NzUHJvdmlkZXI/IHBhZGRpbmdfcHJvdmlk ZXIgPSBudWxsOworLSAgcHJpdmF0ZSB2b2lkIG9uX3BhZGRpbmdfY2hhbmdlZCAoKSB7CistICAg IHZhciBwYWQgPSB0aGlzLnNldHRpbmdzLmdldF9wYWRkaW5nICgpOworKyAgcHJpdmF0ZSB2b2lk IG9uX3BhZGRpbmdfY2hhbmdlZCgpIHsKKysgICAgdmFyIHBhZCA9IHRoaXMuc2V0dGluZ3MuZ2V0 X3BhZGRpbmcoKTsKKyAKKyAgICAgaWYgKHRoaXMucGFkZGluZ19wcm92aWRlciAhPSBudWxsKSB7 CistICAgICAgdGhpcy5nZXRfc3R5bGVfY29udGV4dCAoKS5yZW1vdmVfcHJvdmlkZXIgKHRoaXMu cGFkZGluZ19wcm92aWRlcik7CisrICAgICAgdGhpcy5nZXRfc3R5bGVfY29udGV4dCgpLnJlbW92 ZV9wcm92aWRlcih0aGlzLnBhZGRpbmdfcHJvdmlkZXIpOworICAgICAgIHRoaXMucGFkZGluZ19w cm92aWRlciA9IG51bGw7CisgICAgIH0KKyAKK0BAIC0yNjYsMTQgKzI2MywxNCBAQCBwcml2YXRl IHN0YXRpYyB1aW50ICAgICAgIG5leHRfaWQgPSAwOworICAgICAgICkKKyAgICAgKTsKKyAKKy0g ICAgdGhpcy5nZXRfc3R5bGVfY29udGV4dCAoKS5hZGRfcHJvdmlkZXIgKAorKyAgICB0aGlzLmdl dF9zdHlsZV9jb250ZXh0KCkuYWRkX3Byb3ZpZGVyKAorICAgICAgIHRoaXMucGFkZGluZ19wcm92 aWRlciwKKyAgICAgICBHdGsuU1RZTEVfUFJPVklERVJfUFJJT1JJVFlfQVBQTElDQVRJT04KKyAg ICAgKTsKKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCBiaW5kX2RhdGEgKCkgeworLSAgICB0aGlz LnNldHRpbmdzLnNjaGVtYS5iaW5kICgKKysgIHByaXZhdGUgdm9pZCBiaW5kX2RhdGEoKSB7Cisr ICAgIHRoaXMuc2V0dGluZ3Muc2NoZW1hLmJpbmQoCisgICAgICAgInRoZW1lLWJvbGQtaXMtYnJp Z2h0IiwKKyAgICAgICB0aGlzLAorICAgICAgICJib2xkLWlzLWJyaWdodCIsCitAQCAtMjg3LDI4 ICsyODQsMjggQEAgcHJpdmF0ZSBzdGF0aWMgdWludCAgICAgICBuZXh0X2lkID0gMDsKKyAgICAg ICBTZXR0aW5nc0JpbmRGbGFncy5ERUZBVUxUCisgICAgICk7CisgCistICAgIHRoaXMuc2V0dGlu Z3Muc2NoZW1hLmJpbmQgKAorKyAgICB0aGlzLnNldHRpbmdzLnNjaGVtYS5iaW5kKAorICAgICAg ICJ0ZXJtaW5hbC1iZWxsIiwKKyAgICAgICB0aGlzLAorICAgICAgICJhdWRpYmxlLWJlbGwiLAor ICAgICAgIFNldHRpbmdzQmluZEZsYWdzLkRFRkFVTFQKKyAgICAgKTsKKyAKKy0gICAgdGhpcy5z ZXR0aW5ncy5zY2hlbWEuYmluZCAoCisrICAgIHRoaXMuc2V0dGluZ3Muc2NoZW1hLmJpbmQoCisg ICAgICAgInRlcm1pbmFsLWNlbGwtd2lkdGgiLAorICAgICAgIHRoaXMsCisgICAgICAgImNlbGwt d2lkdGgtc2NhbGUiLAorICAgICAgIFNldHRpbmdzQmluZEZsYWdzLkRFRkFVTFQKKyAgICAgKTsK KyAKKy0gICAgdGhpcy5zZXR0aW5ncy5zY2hlbWEuYmluZCAoCisrICAgIHRoaXMuc2V0dGluZ3Mu c2NoZW1hLmJpbmQoCisgICAgICAgInRlcm1pbmFsLWNlbGwtaGVpZ2h0IiwKKyAgICAgICB0aGlz LAorICAgICAgICJjZWxsLWhlaWdodC1zY2FsZSIsCisgICAgICAgU2V0dGluZ3NCaW5kRmxhZ3Mu REVGQVVMVAorICAgICApOworIAorLSAgICB0aGlzLnNldHRpbmdzLmJpbmRfcHJvcGVydHkgKAor KyAgICB0aGlzLnNldHRpbmdzLmJpbmRfcHJvcGVydHkoCisgICAgICAgImN1cnNvci1zaGFwZSIs CisgICAgICAgdGhpcywKKyAgICAgICAiY3Vyc29yLXNoYXBlIiwKK0BAIC0zMTcsNyArMzE0LDcg QEAgcHJpdmF0ZSBzdGF0aWMgdWludCAgICAgICBuZXh0X2lkID0gMDsKKyAgICAgICBudWxsCisg ICAgICk7CisgCistICAgIHRoaXMuc2V0dGluZ3MuYmluZF9wcm9wZXJ0eSAoCisrICAgIHRoaXMu c2V0dGluZ3MuYmluZF9wcm9wZXJ0eSgKKyAgICAgICAiY3Vyc29yLWJsaW5rLW1vZGUiLAorICAg ICAgIHRoaXMsCisgICAgICAgImN1cnNvci1ibGluay1tb2RlIiwKK0BAIC0zMjYsNyArMzIzLDcg QEAgcHJpdmF0ZSBzdGF0aWMgdWludCAgICAgICBuZXh0X2lkID0gMDsKKyAgICAgICBudWxsCisg ICAgICk7CisgCistICAgIHRoaXMuYmluZF9wcm9wZXJ0eSAoCisrICAgIHRoaXMuYmluZF9wcm9w ZXJ0eSgKKyAgICAgICAidXNlci1zY3JvbGxiYWNrLWxpbmVzIiwKKyAgICAgICB0aGlzLAorICAg ICAgICJzY3JvbGxiYWNrLWxpbmVzIiwKK0BAIC0zNDMsNyArMzQwLDcgQEAgcHJpdmF0ZSBzdGF0 aWMgdWludCAgICAgICBuZXh0X2lkID0gMDsKKyAgICAgLy8gU2VlOgorICAgICAvLyAtIGh0dHBz Oi8vZ2l0bGFiLmdub21lLm9yZy9yYWdnZXNpbHZlci9ibGFja2JveC8tL2lzc3Vlcy8xNzkKKyAg ICAgLy8gLSBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvdnRlLy0vaXNzdWVzLzMzNgor LSAgICB0aGlzLnNldHRpbmdzLmJpbmRfcHJvcGVydHkgKAorKyAgICB0aGlzLnNldHRpbmdzLmJp bmRfcHJvcGVydHkoCisgICAgICAgInNob3ctc2Nyb2xsYmFycyIsCisgICAgICAgdGhpcywKKyAg ICAgICAiZW5hYmxlLWZhbGxiYWNrLXNjcm9sbGluZyIsCitAQCAtMzUzLDczICszNTAsNzIgQEAg cHJpdmF0ZSBzdGF0aWMgdWludCAgICAgICBuZXh0X2lkID0gMDsKKyAgICAgKTsKKyAgIH0KKyAK Ky0gIHByaXZhdGUgc3RyaW5nIHByb2Nlc3NfY29tcGxldGVkX25vdGlmaWNhdGlvbl9pZCAoKSB7 CistICAgIHJldHVybiAicHJvY2Vzcy1jb21wbGV0ZWQtJXUtJXUiLnByaW50ZiAod2luZG93Lmlk LCB0aGlzLmlkKTsKKysgIHByaXZhdGUgc3RyaW5nIHByb2Nlc3NfY29tcGxldGVkX25vdGlmaWNh dGlvbl9pZCgpIHsKKysgICAgcmV0dXJuICJwcm9jZXNzLWNvbXBsZXRlZC0ldS0ldSIucHJpbnRm KHdpbmRvdy5pZCwgdGhpcy5pZCk7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgb25fYXR0ZW50 aW9uX3JlY2VpdmVkICgpIHsKKy0gICAgIHRoaXMubmVlZHNfYXR0ZW50aW9uID0gZmFsc2U7Cist ICAgICB0aGlzLndpdGhkcmF3X2NvbW1hbmRfY29tcGxldGVkX25vdGlmaWNhdGlvbiAoKTsKKysg IHByaXZhdGUgdm9pZCBvbl9hdHRlbnRpb25fcmVjZWl2ZWQoKSB7CisrICAgIHRoaXMubmVlZHNf YXR0ZW50aW9uID0gZmFsc2U7CisrICAgIHRoaXMud2l0aGRyYXdfY29tbWFuZF9jb21wbGV0ZWRf bm90aWZpY2F0aW9uKCk7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgY29ubmVjdF9zaWduYWxz ICgpIHsKKy0gICAgdmFyIGtwY29udHJvbGxlciA9IG5ldyBHdGsuRXZlbnRDb250cm9sbGVyS2V5 ICgpOworLSAgICBrcGNvbnRyb2xsZXIua2V5X3ByZXNzZWQuY29ubmVjdCAodGhpcy5vbl9rZXlf cHJlc3NlZCk7CistICAgIHRoaXMuYWRkX2NvbnRyb2xsZXIgKGtwY29udHJvbGxlcik7CisrICBw cml2YXRlIHZvaWQgY29ubmVjdF9zaWduYWxzKCkgeworKyAgICB2YXIga3Bjb250cm9sbGVyID0g bmV3IEd0ay5FdmVudENvbnRyb2xsZXJLZXkoKTsKKysgICAga3Bjb250cm9sbGVyLmtleV9wcmVz c2VkLmNvbm5lY3QodGhpcy5vbl9rZXlfcHJlc3NlZCk7CisrICAgIHRoaXMuYWRkX2NvbnRyb2xs ZXIoa3Bjb250cm9sbGVyKTsKKyAKKy0gICAgdmFyIGxlZnRfY2xpY2tfY29udHJvbGxlciA9IG5l dyBHdGsuR2VzdHVyZUNsaWNrICgpIHsKKysgICAgdmFyIGxlZnRfY2xpY2tfY29udHJvbGxlciA9 IG5ldyBHdGsuR2VzdHVyZUNsaWNrKCkgeworICAgICAgIGJ1dHRvbiA9IEdkay5CVVRUT05fUFJJ TUFSWSwKKyAgICAgfTsKKy0gICAgbGVmdF9jbGlja19jb250cm9sbGVyLnByZXNzZWQuY29ubmVj dCAoKGdlc3R1cmUsIG5fY2xpY2tlZCwgeCwgeSkgPT4geworLSAgICAgIHZhciBldmVudCA9IGdl c3R1cmUuZ2V0X2N1cnJlbnRfZXZlbnQgKCk7CistICAgICAgdmFyIHBhdHRlcm4gPSB0aGlzLmNo ZWNrX21hdGNoX2F0ICh4LCB5LCBudWxsKSA/PyB0aGlzLmh5cGVybGlua19ob3Zlcl91cmk7Cisr ICAgIGxlZnRfY2xpY2tfY29udHJvbGxlci5wcmVzc2VkLmNvbm5lY3QoKGdlc3R1cmUsIG5fY2xp Y2tlZCwgeCwgeSkgPT4geworKyAgICAgIHZhciBldmVudCA9IGdlc3R1cmUuZ2V0X2N1cnJlbnRf ZXZlbnQoKTsKKysgICAgICB2YXIgcGF0dGVybiA9IHRoaXMuY2hlY2tfbWF0Y2hfYXQoeCwgeSwg bnVsbCkgPz8gdGhpcy5oeXBlcmxpbmtfaG92ZXJfdXJpOworIAorICAgICAgIGlmICgKKy0gICAg ICAgIChldmVudC5nZXRfbW9kaWZpZXJfc3RhdGUgKCkgJiBHZGsuTW9kaWZpZXJUeXBlLkNPTlRS T0xfTUFTSykgPT0gMCB8fAorKyAgICAgICAgKGV2ZW50LmdldF9tb2RpZmllcl9zdGF0ZSgpICYg R2RrLk1vZGlmaWVyVHlwZS5DT05UUk9MX01BU0spID09IDAgfHwKKyAgICAgICAgIHBhdHRlcm4g PT0gbnVsbAorICAgICAgICkgeworICAgICAgICAgcmV0dXJuOworICAgICAgIH0KKyAKKyAgICAg ICB0cnkgeworLSAgICAgICAgR0xpYi5BcHBJbmZvLmxhdW5jaF9kZWZhdWx0X2Zvcl91cmkgKHBh dHRlcm4sIG51bGwpOworLSAgICAgIH0KKy0gICAgICBjYXRjaCAoRXJyb3IgZSkgeworLSAgICAg ICAgd2FybmluZyAoIkZhaWxlZCB0byBvcGVuIGxpbmsgJXMiLCBlLm1lc3NhZ2UpOworKyAgICAg ICAgR0xpYi5BcHBJbmZvLmxhdW5jaF9kZWZhdWx0X2Zvcl91cmkocGF0dGVybiwgbnVsbCk7Cisr ICAgICAgfSBjYXRjaCAoRXJyb3IgZSkgeworKyAgICAgICAgd2FybmluZygiRmFpbGVkIHRvIG9w ZW4gbGluayAlcyIsIGUubWVzc2FnZSk7CisgICAgICAgfQorICAgICB9KTsKKy0gICAgdGhpcy5h ZGRfY29udHJvbGxlciAobGVmdF9jbGlja19jb250cm9sbGVyKTsKKysgICAgdGhpcy5hZGRfY29u dHJvbGxlcihsZWZ0X2NsaWNrX2NvbnRyb2xsZXIpOworIAorLSAgICB0aGlzLnNldHRpbmdzLm5v dGlmeSBbInNjcm9sbGJhY2stbGluZXMiXQorLSAgICAgIC5jb25uZWN0ICgoKSA9PiB7CistICAg ICAgICB0aGlzLm5vdGlmeV9wcm9wZXJ0eSAoInVzZXItc2Nyb2xsYmFjay1saW5lcyIpOworLSAg ICAgIH0pOworKyAgICB0aGlzLnNldHRpbmdzLm5vdGlmeVsic2Nyb2xsYmFjay1saW5lcyJdCisr ICAgIC5jb25uZWN0KCgpID0+IHsKKysgICAgICB0aGlzLm5vdGlmeV9wcm9wZXJ0eSgidXNlci1z Y3JvbGxiYWNrLWxpbmVzIik7CisrICAgIH0pOworIAorLSAgICB0aGlzLnNldHRpbmdzLm5vdGlm eSBbInNjcm9sbGJhY2stbW9kZSJdCistICAgICAgLmNvbm5lY3QgKCgpID0+IHsKKy0gICAgICAg IHRoaXMubm90aWZ5X3Byb3BlcnR5ICgidXNlci1zY3JvbGxiYWNrLWxpbmVzIik7CistICAgICAg fSk7CisrICAgIHRoaXMuc2V0dGluZ3Mubm90aWZ5WyJzY3JvbGxiYWNrLW1vZGUiXQorKyAgICAu Y29ubmVjdCgoKSA9PiB7CisrICAgICAgdGhpcy5ub3RpZnlfcHJvcGVydHkoInVzZXItc2Nyb2xs YmFjay1saW5lcyIpOworKyAgICB9KTsKKyAKKy0gICAgdGhpcy5ub3RpZnkgWyJoYXMtZm9jdXMi XS5jb25uZWN0ICgoKSA9PiB7CisrICAgIHRoaXMubm90aWZ5WyJoYXMtZm9jdXMiXS5jb25uZWN0 KCgpID0+IHsKKyAgICAgICBpZiAodGhpcy5hdHRlbnRpb25fdGltZXIgPiAwKSB7CistICAgICAg ICBHTGliLlNvdXJjZS5yZW1vdmUgKHRoaXMuYXR0ZW50aW9uX3RpbWVyKTsKKysgICAgICAgIEdM aWIuU291cmNlLnJlbW92ZSh0aGlzLmF0dGVudGlvbl90aW1lcik7CisgICAgICAgICB0aGlzLmF0 dGVudGlvbl90aW1lciA9IDA7CisgICAgICAgfQorICAgICAgIGlmICh0aGlzLmhhc19mb2N1cykg eworLSAgICAgICAgdGhpcy5hdHRlbnRpb25fdGltZXIgPSBHTGliLlRpbWVvdXQuYWRkX29uY2Ug KDIgKiAxMDAwLCAoKSA9PiB7CistICAgICAgICAgIHRoaXMub25fYXR0ZW50aW9uX3JlY2VpdmVk ICgpOworKyAgICAgICAgdGhpcy5hdHRlbnRpb25fdGltZXIgPSBHTGliLlRpbWVvdXQuYWRkX29u Y2UoMiAqIDEwMDAsICgpID0+IHsKKysgICAgICAgICAgdGhpcy5vbl9hdHRlbnRpb25fcmVjZWl2 ZWQoKTsKKyAgICAgICAgICAgdGhpcy5hdHRlbnRpb25fdGltZXIgPSAwOworICAgICAgICAgfSk7 CisgICAgICAgfQorICAgICB9KTsKKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCBzcGF3biAoc3Ry aW5nPyBjb21tYW5kLCBzdHJpbmc/IGN3ZCkgdGhyb3dzIEVycm9yIHsKKysgIHByaXZhdGUgdm9p ZCBzcGF3bihzdHJpbmc/IGNvbW1hbmQsIHN0cmluZz8gY3dkKSB0aHJvd3MgRXJyb3IgeworICAg ICBBcnJheTxzdHJpbmc+IGFyZ3YgPSBuZXcgQXJyYXk8c3RyaW5nPiAoKTsKKyAgICAgQXJyYXk8 c3RyaW5nPiBlbnZ2ID0gbmV3IEFycmF5PHN0cmluZz4gKCk7CisgICAgIFZ0ZS5QdHlGbGFncyBm bGFncyA9IFZ0ZS5QdHlGbGFncy5ERUZBVUxUOworIAorLSAgICB2YXIgc2V0dGluZ3MgPSBTZXR0 aW5ncy5nZXRfZGVmYXVsdCAoKTsKKysgICAgdmFyIHNldHRpbmdzID0gU2V0dGluZ3MuZ2V0X2Rl ZmF1bHQoKTsKKyAgICAgc3RyaW5nW10/IGN1c3RvbV9zaGVsbF9jb21tYW5kdiA9IG51bGw7Cisg CisgICAgIHN0cmluZyBzaGVsbDsKK0BAIC00MjgsMzggKzQyNCwzOCBAQCBwcml2YXRlIHN0YXRp YyB1aW50ICAgICAgIG5leHRfaWQgPSAwOworICAgICAgIHNldHRpbmdzLnVzZV9jdXN0b21fY29t bWFuZCAmJgorICAgICAgIHNldHRpbmdzLmN1c3RvbV9zaGVsbF9jb21tYW5kICE9ICIiCisgICAg ICkgeworLSAgICAgIFNoZWxsLnBhcnNlX2FyZ3YgKHNldHRpbmdzLmN1c3RvbV9zaGVsbF9jb21t YW5kLCBvdXQgY3VzdG9tX3NoZWxsX2NvbW1hbmR2KTsKKysgICAgICBTaGVsbC5wYXJzZV9hcmd2 KHNldHRpbmdzLmN1c3RvbV9zaGVsbF9jb21tYW5kLAorKyAgICAgICAgICAgICAgICAgICAgICAg b3V0IGN1c3RvbV9zaGVsbF9jb21tYW5kdik7CisgICAgIH0KKyAKKy0gICAgdmFyIHRtcF9lbnZ2 ID0gRW52aXJvbi5nZXQgKCk7CisrICAgIHZhciB0bXBfZW52diA9IEVudmlyb24uZ2V0KCk7Cisg CisgICAgIGZvcmVhY2ggKHN0cmluZyBlbnYgaW4gdG1wX2VudnYpIHsKKy0gICAgICBlbnZ2LmFw cGVuZF92YWwgKGVudik7CisrICAgICAgZW52di5hcHBlbmRfdmFsKGVudik7CisgICAgIH0KKyAK KyAgICAgZm9yZWFjaCAodW5vd25lZCBzdHJpbmcgZW52IGluIFRlcm1pbmFsLmJsYWNrYm94X2Vu dnYpIHsKKy0gICAgICBlbnZ2LmFwcGVuZF92YWwgKGVudik7CisrICAgICAgZW52di5hcHBlbmRf dmFsKGVudik7CisgICAgIH0KKyAKKy0gICAgc2hlbGwgPSBFbnZpcm9uLmdldF92YXJpYWJsZSAo ZW52di5kYXRhLCAiU0hFTEwiKTsKKysgICAgc2hlbGwgPSBFbnZpcm9uLmdldF92YXJpYWJsZShl bnZ2LmRhdGEsICJTSEVMTCIpOworIAorICAgICBpZiAoY3VzdG9tX3NoZWxsX2NvbW1hbmR2ICE9 IG51bGwpIHsKKyAgICAgICBmb3JlYWNoICh1bm93bmVkIHN0cmluZyBzIGluIGN1c3RvbV9zaGVs bF9jb21tYW5kdikgeworLSAgICAgICAgYXJndi5hcHBlbmRfdmFsIChzKTsKKysgICAgICAgIGFy Z3YuYXBwZW5kX3ZhbChzKTsKKyAgICAgICB9CistICAgIH0KKy0gICAgZWxzZSB7CistICAgICAg YXJndi5hcHBlbmRfdmFsIChzaGVsbCk7CisrICAgIH0gZWxzZSB7CisrICAgICAgYXJndi5hcHBl bmRfdmFsKHNoZWxsKTsKKyAgICAgICBpZiAoc2V0dGluZ3MuY29tbWFuZF9hc19sb2dpbl9zaGVs bCAmJiBjb21tYW5kID09IG51bGwpIHsKKy0gICAgICAgIGFyZ3YuYXBwZW5kX3ZhbCAoIi0tbG9n aW4iKTsKKysgICAgICAgIGFyZ3YuYXBwZW5kX3ZhbCgiLS1sb2dpbiIpOworICAgICAgIH0KKyAg ICAgfQorICAgICBpZiAoY29tbWFuZCAhPSBudWxsKSB7CistICAgICAgYXJndi5hcHBlbmRfdmFs ICgiLWMiKTsKKy0gICAgICBhcmd2LmFwcGVuZF92YWwgKGNvbW1hbmQpOworKyAgICAgIGFyZ3Yu YXBwZW5kX3ZhbCgiLWMiKTsKKysgICAgICBhcmd2LmFwcGVuZF92YWwoY29tbWFuZCk7CisgICAg IH0KKyAKKy0gICAgdGhpcy5zcGF3bl9hc3luYyAoCisrICAgIHRoaXMuc3Bhd25fYXN5bmMoCisg ICAgICAgZmxhZ3MsCisgICAgICAgY3dkLAorICAgICAgIGFyZ3YuZGF0YSwKK0BAIC00NzIsMzgg KzQ2OCwzNyBAQCBwcml2YXRlIHN0YXRpYyB1aW50ICAgICAgIG5leHRfaWQgPSAwOworICAgICAp OworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIF9vbl9zcGF3bl9maW5pc2hlZCAoVnRlLlRlcm1p bmFsIHQsIFBpZCBwaWQsIEdMaWIuRXJyb3I/IGVycm9yKSB7CisrICBwcml2YXRlIHZvaWQgX29u X3NwYXduX2ZpbmlzaGVkKFZ0ZS5UZXJtaW5hbCB0LCBQaWQgcGlkLCBHTGliLkVycm9yPyBlcnJv cikgeworICAgICBpZiAoZXJyb3IgPT0gbnVsbCkgeworICAgICAgIHRoaXMucGlkID0gcGlkOwor LSAgICAgIHRoaXMub25fc3Bhd25fZmluaXNoZWQgKCk7CistICAgIH0KKy0gICAgZWxzZSB7Cist ICAgICAgdGhpcy5zcGF3bl9mYWlsZWQgKGVycm9yLm1lc3NhZ2UpOworKyAgICAgIHRoaXMub25f c3Bhd25fZmluaXNoZWQoKTsKKysgICAgfSBlbHNlIHsKKysgICAgICB0aGlzLnNwYXduX2ZhaWxl ZChlcnJvci5tZXNzYWdlKTsKKyAgICAgfQorICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIG9uX3Nw YXduX2ZpbmlzaGVkICgpIHsKKysgIHByaXZhdGUgdm9pZCBvbl9zcGF3bl9maW5pc2hlZCgpIHsK KyAgICAgaWYgKF9waWQgPCAwKSB7CisgICAgICAgcmV0dXJuOworICAgICB9CisgCistICAgIHRo aXMucHJvY2VzcyA9IG5ldyBQcm9jZXNzICgpIHsKKy0gICAgICB0ZXJtaW5hbF9mZCA9IHRoaXMu cHR5LmdldF9mZCAoKSwKKysgICAgdGhpcy5wcm9jZXNzID0gbmV3IFByb2Nlc3MoKSB7CisrICAg ICAgdGVybWluYWxfZmQgPSB0aGlzLnB0eS5nZXRfZmQoKSwKKyAgICAgICBwaWQgPSB0aGlzLnBp ZCwKKyAgICAgICBmb3JlZ3JvdW5kX3BpZCA9IC0xLAorICAgICB9OworIAorLSAgICB0aGlzLnBy b2Nlc3MuZm9yZWdyb3VuZF90YXNrX2ZpbmlzaGVkLmNvbm5lY3QgKChfcHJvY2VzcykgPT4gewor KyAgICB0aGlzLnByb2Nlc3MuZm9yZWdyb3VuZF90YXNrX2ZpbmlzaGVkLmNvbm5lY3QoKF9wcm9j ZXNzKSA9PiB7CisgICAgICAgaWYgKCF0aGlzLmhhc19mb2N1cyAmJiBfcHJvY2Vzcy5sYXN0X2Zv cmVncm91bmRfdGFza19jb21tYW5kICE9IG51bGwpIHsKKyAgICAgICAgIHRoaXMubmVlZHNfYXR0 ZW50aW9uID0gdHJ1ZTsKKy0gICAgICAgIHRoaXMuc2VuZF9jb21tYW5kX2NvbXBsZXRlZF9ub3Rp ZmljYXRpb24gKCk7CisrICAgICAgICB0aGlzLnNlbmRfY29tbWFuZF9jb21wbGV0ZWRfbm90aWZp Y2F0aW9uKCk7CisgICAgICAgfQorICAgICB9KTsKKyAKKy0gICAgdGhpcy5wcm9jZXNzLm5vdGlm eSBbImNvbnRleHQiXS5jb25uZWN0ICgoX19wcm9jZXNzLCBzcGVjKSA9PiB7CisrICAgIHRoaXMu cHJvY2Vzcy5ub3RpZnlbImNvbnRleHQiXS5jb25uZWN0KChfX3Byb2Nlc3MsIHNwZWMpID0+IHsK KyAgICAgICB2YXIgY29udGV4dCA9IChfcHJvY2VzcyBhcyBQcm9jZXNzKT8uY29udGV4dCA/PyBQ cm9jZXNzQ29udGV4dC5ERUZBVUxUOworIAorLSAgICAgIHRoaXMuY29udGV4dF9jaGFuZ2VkLmVt aXQgKGNvbnRleHQpOworKyAgICAgIHRoaXMuY29udGV4dF9jaGFuZ2VkLmVtaXQoY29udGV4dCk7 CisgICAgICAgLy8gIHN0cmluZyBjb250ZXh0X3N0ciA9CisgICAgICAgLy8gICAgY29udGV4dCA9 PSBQcm9jZXNzQ29udGV4dC5TU0gKKyAgICAgICAvLyAgICAgID8gInNzaCIKK0BAIC01MTMsOSAr NTA4LDkgQEAgcHJpdmF0ZSBzdGF0aWMgdWludCAgICAgICBuZXh0X2lkID0gMDsKKyAgICAgICAv LyAgbWVzc2FnZSAoIk5ldyBjb250ZXh0IGZvciBwcm9jZXNzOiAlcyIsIGNvbnRleHRfc3RyKTsK KyAgICAgfSk7CisgCistICAgIFByb2Nlc3NXYXRjaGVyLmdldF9pbnN0YW5jZSAoKS53YXRjaCAo dGhpcy5wcm9jZXNzKTsKKysgICAgUHJvY2Vzc1dhdGNoZXIuZ2V0X2luc3RhbmNlKCkud2F0Y2go dGhpcy5wcm9jZXNzKTsKKyAKKy0gICAgdGhpcy5jb250ZXh0X2NoYW5nZWQuZW1pdCAodGhpcy5w cm9jZXNzLmNvbnRleHQpOworKyAgICB0aGlzLmNvbnRleHRfY2hhbmdlZC5lbWl0KHRoaXMucHJv Y2Vzcy5jb250ZXh0KTsKKyAgIH0KKyAKKyAgIHByaXZhdGUgdm9pZCBzZW5kX2NvbW1hbmRfY29t cGxldGVkX25vdGlmaWNhdGlvbigpIHsKK0BAIC01MzUsMjUgKzUzMCwyNSBAQCBwcml2YXRlIHN0 YXRpYyB1aW50ICAgICAgIG5leHRfaWQgPSAwOworICAgICApOworICAgfQorIAorLSAgcHJpdmF0 ZSB2b2lkIHdpdGhkcmF3X2NvbW1hbmRfY29tcGxldGVkX25vdGlmaWNhdGlvbiAoKSB7CistICAg IHRoaXMud2luZG93LmFwcGxpY2F0aW9uLndpdGhkcmF3X25vdGlmaWNhdGlvbiAoCistICAgICAg cHJvY2Vzc19jb21wbGV0ZWRfbm90aWZpY2F0aW9uX2lkICgpCisrICBwcml2YXRlIHZvaWQgd2l0 aGRyYXdfY29tbWFuZF9jb21wbGV0ZWRfbm90aWZpY2F0aW9uKCkgeworKyAgICB0aGlzLndpbmRv dy5hcHBsaWNhdGlvbi53aXRoZHJhd19ub3RpZmljYXRpb24oCisrICAgICAgcHJvY2Vzc19jb21w bGV0ZWRfbm90aWZpY2F0aW9uX2lkKCkKKyAgICAgKTsKKyAgIH0KKyAKKyAgIC8vIFNpZ25hbCBj YWxsYmFja3MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorIAorLSAgcHJpdmF0ZSB2b2lkIG9uX2NoaWxkX2V4aXRlZCAoaW50IHN0YXR1 cykgeworLSAgICBkZWJ1ZyAoIkNoaWxkIGV4aXRlZCB3aXRoIGNvZGUgJWQiLCBzdGF0dXMpOwor KyAgcHJpdmF0ZSB2b2lkIG9uX2NoaWxkX2V4aXRlZChpbnQgc3RhdHVzKSB7CisrICAgIGRlYnVn KCJDaGlsZCBleGl0ZWQgd2l0aCBjb2RlICVkIiwgc3RhdHVzKTsKKyAgICAgdGhpcy5waWQgPSAt MTsKKyAgICAgLy8gIFRoaXMgaXMgbm90IGEgZ29vZCBpZGVhLiBBbm90aGVyIHRocmVhZCBtaWdo dCBiZSBtb2RpZnlpbmcgdGhpcyBmaWVsZAorICAgICAvLyAgYXMgd2VsbC4KKyAgICAgLy8gIHRo aXMucHJvY2Vzcy5lbmRlZCA9IHRydWU7CisgICAgIHRoaXMucHJvY2VzcyA9IG51bGw7CistICAg IHRoaXMuZXhpdCAoKTsKKysgICAgdGhpcy5leGl0KCk7CisgICB9CisgCistICBwcml2YXRlIGJv b2wgb25fa2V5X3ByZXNzZWQgKAorKyAgcHJpdmF0ZSBib29sIG9uX2tleV9wcmVzc2VkKAorICAg ICB1aW50IGtleXZhbCwKKyAgICAgdWludCBrZXljb2RlLAorICAgICBHZGsuTW9kaWZpZXJUeXBl IHN0YXRlCitAQCAtNTYyLDIwICs1NTcsMjAgQEAgcHJpdmF0ZSBzdGF0aWMgdWludCAgICAgICBu ZXh0X2lkID0gMDsKKyAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAKKy0gICAgc3dpdGNo IChHZGsua2V5dmFsX25hbWUgKGtleXZhbCkpIHsKKysgICAgc3dpdGNoIChHZGsua2V5dmFsX25h bWUoa2V5dmFsKSkgeworICAgICAgIGNhc2UgImMiOgorICAgICAgICAgaWYgKAorLSAgICAgICAg ICB0aGlzLmdldF9oYXNfc2VsZWN0aW9uICgpICYmCistICAgICAgICAgIFNldHRpbmdzLmdldF9k ZWZhdWx0ICgpLmVhc3lfY29weV9wYXN0ZQorKyAgICAgICAgICB0aGlzLmdldF9oYXNfc2VsZWN0 aW9uKCkgJiYKKysgICAgICAgICAgU2V0dGluZ3MuZ2V0X2RlZmF1bHQoKS5lYXN5X2NvcHlfcGFz dGUKKyAgICAgICAgICkgeworLSAgICAgICAgICB0aGlzLmRvX2NvcHlfY2xpcGJvYXJkICgpOwor LSAgICAgICAgICB0aGlzLnVuc2VsZWN0X2FsbCAoKTsKKysgICAgICAgICAgdGhpcy5kb19jb3B5 X2NsaXBib2FyZCgpOworKyAgICAgICAgICB0aGlzLnVuc2VsZWN0X2FsbCgpOworICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICBjYXNlICJ2IjoKKy0gICAgICAgIGlmIChTZXR0aW5ncy5nZXRfZGVmYXVsdCAoKS5lYXN5X2Nv cHlfcGFzdGUpIHsKKy0gICAgICAgICAgdGhpcy5kb19wYXN0ZV9jbGlwYm9hcmQgKCk7CisrICAg ICAgICBpZiAoU2V0dGluZ3MuZ2V0X2RlZmF1bHQoKS5lYXN5X2NvcHlfcGFzdGUpIHsKKysgICAg ICAgICAgdGhpcy5kb19wYXN0ZV9jbGlwYm9hcmQoKTsKKyAgICAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICAgICB9CisgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtNTg0LDcgKzU3OSw3IEBA IHByaXZhdGUgc3RhdGljIHVpbnQgICAgICAgbmV4dF9pZCA9IDA7CisgICAgIHJldHVybiBmYWxz ZTsKKyAgIH0KKyAKKy0gIHB1YmxpYyBhc3luYyBib29sIGdldF9jYW5fY2xvc2UgKG91dCBzdHJp bmcgY29tbWFuZCA9IG51bGwpIHsKKysgIHB1YmxpYyBhc3luYyBib29sIGdldF9jYW5fY2xvc2Uo b3V0IHN0cmluZyBjb21tYW5kID0gbnVsbCkgeworICAgICBjb21tYW5kID0gbnVsbDsKKyAKKyAg ICAgaWYgKHRoaXMucGlkIDwgMCB8fCB0aGlzLnB0eSA9PSBudWxsKSB7CitAQCAtNTk3LDcgKzU5 Miw3IEBAIHByaXZhdGUgc3RhdGljIHVpbnQgICAgICAgbmV4dF9pZCA9IDA7CisgICAgIH0KKyAK KyAgICAgLy8gR2V0IHRlcm1pbmFsJ3MgZm9yZWdyb3VuZCBwcm9jZXNzCistICAgIHZhciBmZ3Bp ZCA9IHlpZWxkIGdldF9mb3JlZ3JvdW5kX3Byb2Nlc3MgKGZkKTsKKysgICAgdmFyIGZncGlkID0g eWllbGQgZ2V0X2ZvcmVncm91bmRfcHJvY2VzcyhmZCk7CisgICAgIGlmIChmZ3BpZCA9PSAtMSkg eworICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorQEAgLTYwNiw1NSArNjAxLDUzIEBAIHBy aXZhdGUgc3RhdGljIHVpbnQgICAgICAgbmV4dF9pZCA9IDA7CisgICAgICAgcmV0dXJuIHRydWU7 CisgICAgIH0KKyAKKy0gICAgY29tbWFuZCA9IGdldF9wcm9jZXNzX2NtZGxpbmUgKGZncGlkKTsK KysgICAgY29tbWFuZCA9IGdldF9wcm9jZXNzX2NtZGxpbmUoZmdwaWQpOworIAorICAgICByZXR1 cm4gY29tbWFuZCA9PSBudWxsOworICAgfQorIAorLSAgcHVibGljIHZvaWQgem9vbV9pbiAoKSB7 CistICAgIHRoaXMuZm9udF9zY2FsZSA9IGRvdWJsZS5taW4gKDEwLCB0aGlzLmZvbnRfc2NhbGUg KyAwLjEpOworKyAgcHVibGljIHZvaWQgem9vbV9pbigpIHsKKysgICAgdGhpcy5mb250X3NjYWxl ID0gZG91YmxlLm1pbigxMCwgdGhpcy5mb250X3NjYWxlICsgMC4xKTsKKyAgIH0KKyAKKy0gIHB1 YmxpYyB2b2lkIHpvb21fb3V0ICgpIHsKKy0gICAgdGhpcy5mb250X3NjYWxlID0gZG91YmxlLm1h eCAoMC4xLCB0aGlzLmZvbnRfc2NhbGUgLSAwLjEpOworKyAgcHVibGljIHZvaWQgem9vbV9vdXQo KSB7CisrICAgIHRoaXMuZm9udF9zY2FsZSA9IGRvdWJsZS5tYXgoMC4xLCB0aGlzLmZvbnRfc2Nh bGUgLSAwLjEpOworICAgfQorIAorLSAgcHVibGljIHZvaWQgem9vbV9kZWZhdWx0ICgpIHsKKysg IHB1YmxpYyB2b2lkIHpvb21fZGVmYXVsdCgpIHsKKyAgICAgdGhpcy5mb250X3NjYWxlID0gMS4w OworICAgfQorIAorLSAgcHVibGljIHZvaWQgZG9fcGFzdGVfY2xpcGJvYXJkICgpIHsKKy0gICAg dGhpcy5wYXN0ZV9jbGlwYm9hcmQgKCk7CisrICBwdWJsaWMgdm9pZCBkb19wYXN0ZV9jbGlwYm9h cmQoKSB7CisrICAgIHRoaXMucGFzdGVfY2xpcGJvYXJkKCk7CisgICB9CisgCistICBwdWJsaWMg dm9pZCBkb19jb3B5X2NsaXBib2FyZCAoKSB7CistICAgIHRoaXMuY29weV9jbGlwYm9hcmQgKCk7 CisrICBwdWJsaWMgdm9pZCBkb19jb3B5X2NsaXBib2FyZCgpIHsKKysgICAgdGhpcy5jb3B5X2Ns aXBib2FyZCgpOworICAgfQorIAorLSAgcHVibGljIGFzeW5jIHZvaWQgZG9fcGFzdGVfZnJvbV9z ZWxlY3Rpb25fY2xpcGJvYXJkICgpIHsKKysgIHB1YmxpYyBhc3luYyB2b2lkIGRvX3Bhc3RlX2Zy b21fc2VsZWN0aW9uX2NsaXBib2FyZCgpIHsKKyAgICAgLy8gIFRoaXMgZnVuY3Rpb24gZG9lcyBu b3Qgc2VlbSB0byBiZSB3b3JraW5nIGluIEdUSyA0IHlldC4KKyAgICAgLy8gIHRoaXMucGFzdGVf cHJpbWFyeSAoKTsKKyAKKy0gICAgdmFyIGNsaXBib2FyZCA9IEdkay5EaXNwbGF5LmdldF9kZWZh dWx0ICgpLmdldF9wcmltYXJ5X2NsaXBib2FyZCAoKTsKKysgICAgdmFyIGNsaXBib2FyZCA9IEdk ay5EaXNwbGF5LmdldF9kZWZhdWx0KCkuZ2V0X3ByaW1hcnlfY2xpcGJvYXJkKCk7CisgICAgIHRy eSB7CistICAgICAgdmFyIHRleHQgPSB5aWVsZCBjbGlwYm9hcmQucmVhZF90ZXh0X2FzeW5jIChu dWxsKTsKKy0gICAgICB0aGlzLnBhc3RlX3RleHQgKHRleHQpOworLSAgICB9CistICAgIGNhdGNo IChFcnJvciBlKSB7CistICAgICAgd2FybmluZyAoIiVzIiwgZS5tZXNzYWdlKTsKKysgICAgICB2 YXIgdGV4dCA9IHlpZWxkIGNsaXBib2FyZC5yZWFkX3RleHRfYXN5bmMobnVsbCk7CisrICAgICAg dGhpcy5wYXN0ZV90ZXh0KHRleHQpOworKyAgICB9IGNhdGNoIChFcnJvciBlKSB7CisrICAgICAg d2FybmluZygiJXMiLCBlLm1lc3NhZ2UpOworICAgICB9CisgICB9CisgCistICBwdWJsaWMgc3Ry aW5nPyBnZXRfY3VycmVudF93b3JraW5nX2RpcmVjdG9yeSAoKSB7CistICAgIHN0cmluZz8gY3dk ID0gdGhpcy5nZXRfY3VycmVudF9kaXJlY3RvcnlfdXJpICgpOworKyAgcHVibGljIHN0cmluZz8g Z2V0X2N1cnJlbnRfd29ya2luZ19kaXJlY3RvcnkoKSB7CisrICAgIHN0cmluZz8gY3dkID0gdGhp cy5nZXRfY3VycmVudF9kaXJlY3RvcnlfdXJpKCk7CisgCisgICAgIGlmIChjd2QgIT0gbnVsbCkg eworICAgICAgIHRyeSB7CistICAgICAgICBzdHJpbmcgcGF0aCA9IEdMaWIuRmlsZW5hbWUuZnJv bV91cmkgKGN3ZCwgbnVsbCk7CisrICAgICAgICBzdHJpbmcgcGF0aCA9IEdMaWIuRmlsZW5hbWUu ZnJvbV91cmkoY3dkLCBudWxsKTsKKyAgICAgICAgIGN3ZCA9IHBhdGg7CistICAgICAgfQorLSAg ICAgIGNhdGNoIChHTGliLkNvbnZlcnRFcnJvciBlKSB7CistICAgICAgICB3YXJuaW5nICgiJXMi LCBlLm1lc3NhZ2UpOworKyAgICAgIH0gY2F0Y2ggKEdMaWIuQ29udmVydEVycm9yIGUpIHsKKysg ICAgICAgIHdhcm5pbmcoIiVzIiwgZS5tZXNzYWdlKTsKKyAgICAgICAgIGN3ZCA9IG51bGw7Cisg ICAgICAgfQorICAgICB9CitAQCAtNjYyLDEwICs2NTUsMTAgQEAgcHJpdmF0ZSBzdGF0aWMgdWlu dCAgICAgICBuZXh0X2lkID0gMDsKKyAgICAgcmV0dXJuIGN3ZDsKKyAgIH0KKyAKKy0gIHB1Ymxp YyBzdGF0aWMgc3RyaW5nPyBnZXRfY3VycmVudF93b3JraW5nX2RpcmVjdG9yeV9mb3JfbmV3X3Nl c3Npb24gKAorKyAgcHVibGljIHN0YXRpYyBzdHJpbmc/IGdldF9jdXJyZW50X3dvcmtpbmdfZGly ZWN0b3J5X2Zvcl9uZXdfc2Vzc2lvbigKKyAgICAgVGVybWluYWw/IHByZXZpb3VzX3Rlcm1pbmFs ID0gbnVsbAorICAgKSB7CistICAgIHZhciBzZXR0aW5ncyA9IFNldHRpbmdzLmdldF9kZWZhdWx0 ICgpOworKyAgICB2YXIgc2V0dGluZ3MgPSBTZXR0aW5ncy5nZXRfZGVmYXVsdCgpOworICAgICB2 YXIgbW9kZSA9IHNldHRpbmdzLndvcmtpbmdfZGlyZWN0b3J5X21vZGU7CisgICAgIHZhciBjdXN0 b21fd29ya2luZ19kaXJlY3RvcnkgPSBzZXR0aW5ncy5jdXN0b21fd29ya2luZ19kaXJlY3Rvcnk7 CisgCitAQCAtNjczLDEwICs2NjYsMTEgQEAgcHJpdmF0ZSBzdGF0aWMgdWludCAgICAgICBuZXh0 X2lkID0gMDsKKyAgICAgICBjYXNlIFdvcmtpbmdEaXJlY3RvcnlNb2RlLkNVU1RPTToKKyAgICAg ICAgIHJldHVybiBjdXN0b21fd29ya2luZ19kaXJlY3Rvcnk7CisgICAgICAgY2FzZSBXb3JraW5n RGlyZWN0b3J5TW9kZS5IT01FX0RJUkVDVE9SWToKKy0gICAgICAgIHJldHVybiBHTGliLkVudmly b25tZW50LmdldF9ob21lX2RpciAoKTsKKysgICAgICAgIHJldHVybiBHTGliLkVudmlyb25tZW50 LmdldF9ob21lX2RpcigpOworICAgICAgIGNhc2UgV29ya2luZ0RpcmVjdG9yeU1vZGUuUFJFVklP VVNfU0VTU0lPTjoKKyAgICAgICAgIGlmIChwcmV2aW91c190ZXJtaW5hbCAhPSBudWxsKSB7Cist ICAgICAgICAgIHJldHVybiBwcmV2aW91c190ZXJtaW5hbC5nZXRfY3VycmVudF93b3JraW5nX2Rp cmVjdG9yeSAoKTsKKysgICAgICAgICAgcmV0dXJuIHByZXZpb3VzX3Rlcm1pbmFsLmdldF9jdXJy ZW50X3dvcmtpbmdfZGlyZWN0b3J5KCkKKysgICAgICAgICAgICAgICAgID8/IHByZXZpb3VzX3Rl cm1pbmFsLndpbmRvdy5sYXN0X2tub3duX2N3ZDsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFr OworICAgICB9CitAQCAtNjg0LDggKzY3OCw3IEBAIHByaXZhdGUgc3RhdGljIHVpbnQgICAgICAg bmV4dF9pZCA9IDA7CisgICAgIHJldHVybiBudWxsOworICAgfQorIAorLSAgcHVibGljIHZvaWQg b25fYmVmb3JlX2Nsb3NlICgpIHsKKy0gICAgdGhpcy53aXRoZHJhd19jb21tYW5kX2NvbXBsZXRl ZF9ub3RpZmljYXRpb24gKCk7CisrICBwdWJsaWMgdm9pZCBvbl9iZWZvcmVfY2xvc2UoKSB7Cisr ICAgIHRoaXMud2l0aGRyYXdfY29tbWFuZF9jb21wbGV0ZWRfbm90aWZpY2F0aW9uKCk7CisgICB9 CisgfQorLQorZGlmZiAtLWdpdCBhL3NyYy93aWRnZXRzL1dpbmRvdy52YWxhIGIvc3JjL3dpZGdl dHMvV2luZG93LnZhbGEKK2luZGV4IDgxZjhmNzkuLjAzNmE0YTUgMTAwNjQ0CistLS0gYS9zcmMv d2lkZ2V0cy9XaW5kb3cudmFsYQorKysrIGIvc3JjL3dpZGdldHMvV2luZG93LnZhbGEKK0BAIC0y Myw4ICsyMyw4IEBAIHB1YmxpYyBzdHJ1Y3QgVGVybWluYWwuUGFkZGluZyB7CisgICB1aW50IGJv dHRvbTsKKyAgIHVpbnQgbGVmdDsKKyAKKy0gIHB1YmxpYyBWYXJpYW50IHRvX3ZhcmlhbnQgKCkg eworLSAgICByZXR1cm4gbmV3IFZhcmlhbnQgKAorKyAgcHVibGljIFZhcmlhbnQgdG9fdmFyaWFu dCgpIHsKKysgICAgcmV0dXJuIG5ldyBWYXJpYW50KAorICAgICAgICIodXV1dSkiLAorICAgICAg IHRoaXMudG9wLAorICAgICAgIHRoaXMucmlnaHQsCitAQCAtMzMsMzEgKzMzLDMxIEBAIHB1Ymxp YyBzdHJ1Y3QgVGVybWluYWwuUGFkZGluZyB7CisgICAgICk7CisgICB9CisgCistICBwdWJsaWMg c3RhdGljIFBhZGRpbmcgemVybyAoKSB7CisrICBwdWJsaWMgc3RhdGljIFBhZGRpbmcgemVybygp IHsKKyAgICAgcmV0dXJuIHsgMCB9OworICAgfQorIAorLSAgcHVibGljIHN0YXRpYyBQYWRkaW5n IGZyb21fdmFyaWFudCAoVmFyaWFudCB2YXJpKSB7CistICAgIGlmICghdmFyaS5jaGVja19mb3Jt YXRfc3RyaW5nICgiKHV1dXUpIiwgZmFsc2UpKSByZXR1cm4gUGFkZGluZy56ZXJvICgpOworKyAg cHVibGljIHN0YXRpYyBQYWRkaW5nIGZyb21fdmFyaWFudChWYXJpYW50IHZhcmkpIHsKKysgICAg aWYgKCF2YXJpLmNoZWNrX2Zvcm1hdF9zdHJpbmcoIih1dXV1KSIsIGZhbHNlKSkgeyByZXR1cm4g UGFkZGluZy56ZXJvKCk7IH0KKyAKKy0gICAgdmFyIGl0ZXIgPSB2YXJpLml0ZXJhdG9yICgpOwor KyAgICB2YXIgIGl0ZXIgPSB2YXJpLml0ZXJhdG9yKCk7CisgICAgIHVpbnQgdG9wID0gMCwgcmln aHQgPSAwLCBib3R0b20gPSAwLCBsZWZ0ID0gMDsKKyAKKy0gICAgaXRlci5uZXh0ICgidSIsICZ0 b3ApOworLSAgICBpdGVyLm5leHQgKCJ1IiwgJnJpZ2h0KTsKKy0gICAgaXRlci5uZXh0ICgidSIs ICZib3R0b20pOworLSAgICBpdGVyLm5leHQgKCJ1IiwgJmxlZnQpOworKyAgICBpdGVyLm5leHQo InUiLCAmdG9wKTsKKysgICAgaXRlci5uZXh0KCJ1IiwgJnJpZ2h0KTsKKysgICAgaXRlci5uZXh0 KCJ1IiwgJmJvdHRvbSk7CisrICAgIGl0ZXIubmV4dCgidSIsICZsZWZ0KTsKKyAKKy0gICAgcmV0 dXJuIFBhZGRpbmcgKCkgeworLSAgICAgIHRvcCA9IHRvcCwKKy0gICAgICByaWdodCA9IHJpZ2h0 LAorLSAgICAgIGJvdHRvbSA9IGJvdHRvbSwKKy0gICAgICBsZWZ0ID0gbGVmdCwKKysgICAgcmV0 dXJuIFBhZGRpbmcoKSB7CisrICAgICAgICAgICAgIHRvcCA9IHRvcCwKKysgICAgICAgICAgICAg cmlnaHQgPSByaWdodCwKKysgICAgICAgICAgICAgYm90dG9tID0gYm90dG9tLAorKyAgICAgICAg ICAgICBsZWZ0ID0gbGVmdCwKKyAgICAgfTsKKyAgIH0KKyAKKy0gIHB1YmxpYyBzdHJpbmcgdG9f c3RyaW5nICgpIHsKKy0gICAgcmV0dXJuICJQYWRkaW5nIHsgJXUsICV1LCAldSwgJXUgfSIucHJp bnRmICgKKysgIHB1YmxpYyBzdHJpbmcgdG9fc3RyaW5nKCkgeworKyAgICByZXR1cm4gIlBhZGRp bmcgeyAldSwgJXUsICV1LCAldSB9Ii5wcmludGYoCisgICAgICAgdGhpcy50b3AsCisgICAgICAg dGhpcy5yaWdodCwKKyAgICAgICB0aGlzLmJvdHRvbSwKK0BAIC02OCw3ICs2OCw3IEBAIHB1Ymxp YyBzdHJ1Y3QgVGVybWluYWwuUGFkZGluZyB7CisgICAvKioKKyAgICAqIFdoZXRoZXIgcGFkZGlu ZyBvbiBhbGwgc2lkZXMgaXMgdGhlIHNhbWUuCisgICAgKi8KKy0gIHB1YmxpYyBib29sIGlzX2Vx dWlsYXRlcmFsICgpIHsKKysgIHB1YmxpYyBib29sIGlzX2VxdWlsYXRlcmFsKCkgeworICAgICBy ZXR1cm4gKAorICAgICAgIHRoaXMudG9wID09IHRoaXMucmlnaHQgJiYKKyAgICAgICB0aGlzLnJp Z2h0ID09IHRoaXMuYm90dG9tICYmCitAQCAtNzgsMzggKzc4LDQxIEBAIHB1YmxpYyBzdHJ1Y3Qg VGVybWluYWwuUGFkZGluZyB7CisgfQorIAorIHB1YmxpYyBjbGFzcyBUZXJtaW5hbC5XaW5kb3cg OiBBZHcuQXBwbGljYXRpb25XaW5kb3cgeworLQorICAgLy8gU2lnbmFscworIAorLSAgcHJpdmF0 ZSBzaWduYWwgdm9pZCBoZWFkZXJfYmFyX2FuaW1hdGlvbl9maW5pc2hlZCAoKTsKKysgIHByaXZh dGUgc2lnbmFsIHZvaWQgaGVhZGVyX2Jhcl9hbmltYXRpb25fZmluaXNoZWQoKTsKKyAKKyAgIC8v IFByb3BlcnRpZXMKKyAKKy0gIHB1YmxpYyBUaGVtZVByb3ZpZGVyICB0aGVtZV9wcm92aWRlciAg ICAgICAgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CistICBwdWJsaWMgQWR3LlRhYlZpZXcgICAgdGFi X3ZpZXcgICAgICAgICAgICAgIHsgZ2V0OyBwcml2YXRlIHNldDsgfQorLSAgcHVibGljIEFkdy5U YWJCYXIgICAgIHRhYl9iYXIgICAgICAgICAgICAgICB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0KKy0g IHB1YmxpYyBUZXJtaW5hbD8gICAgICBhY3RpdmVfdGVybWluYWwgICAgICAgeyBnZXQ7IHByaXZh dGUgc2V0OyB9CistICBwdWJsaWMgVGVybWluYWxUYWI/ICAgYWN0aXZlX3Rlcm1pbmFsX3RhYiAg IHsgZ2V0OyBwcml2YXRlIHNldDsgZGVmYXVsdCA9IG51bGw7IH0KKy0gIHB1YmxpYyBzdHJpbmcg ICAgICAgICBhY3RpdmVfdGVybWluYWxfdGl0bGUgeyBnZXQ7IHByaXZhdGUgc2V0OyBkZWZhdWx0 ID0gIiI7IH0KKy0gIHB1YmxpYyB1aW50ICAgICAgICAgICBpZCAgICAgICAgICAgICAgICAgICAg eyBnZXQ7IHByaXZhdGUgc2V0OyB9CisrICBwdWJsaWMgVGhlbWVQcm92aWRlciB0aGVtZV9wcm92 aWRlciAgICAgICAgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CisrICBwdWJsaWMgQWR3LlRhYlZpZXcg ICB0YWJfdmlldyAgICAgICAgICAgICAgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CisrICBwdWJsaWMg QWR3LlRhYkJhciAgICB0YWJfYmFyICAgICAgICAgICAgICAgeyBnZXQ7IHByaXZhdGUgc2V0OyB9 CisrICBwdWJsaWMgVGVybWluYWw/ICAgICBhY3RpdmVfdGVybWluYWwgICAgICAgeyBnZXQ7IHBy aXZhdGUgc2V0OyB9CisrICBwdWJsaWMgVGVybWluYWxUYWI/ICBhY3RpdmVfdGVybWluYWxfdGFi ICAgeyBnZXQ7IHByaXZhdGUgc2V0OyBkZWZhdWx0ID0gbnVsbDsKKysgIH0KKysgIHB1YmxpYyBz dHJpbmcgYWN0aXZlX3Rlcm1pbmFsX3RpdGxlIHsgZ2V0OyBwcml2YXRlIHNldDsgZGVmYXVsdCA9 ICIiOyB9CisrICBwdWJsaWMgdWludCAgIGlkICAgICAgICAgICAgICAgICAgICB7IGdldDsgcHJp dmF0ZSBzZXQ7IH0KKyAKKyAgIC8vIFRlcm1pbmFsIHRhYnMgc2V0IHRoaXMgdG8gYW55IGxpbmsg Y2xpY2tlZCBieSB0aGUgdXNlci4gVGhlIHZhbHVlIGlzIHRoZW4KKyAgIC8vIGNvbnN1bWVkIGJ5 IHRoZSBvcGVuLWxpbmsgYW5kIGNvcHktbGluayBhY3Rpb25zLgorLSAgcHVibGljIHN0cmluZz8g bGluayAgeyBnZXQ7IHNldDsgZGVmYXVsdCA9IG51bGw7IH0KKysgIHB1YmxpYyBzdHJpbmc/IGxp bmsgeyBnZXQ7IHNldDsgZGVmYXVsdCA9IG51bGw7IH0KKysgIC8vIFRoaXMga2VlcHMgdHJhY2sg b2YgdGhlIGxhc3Qga25vd24gY3dkIGZvciBhbnkgdGVybWluYWwgb24gdGhpcyBXaW5kb3cuCisr ICAvLyBVc2VmdWwgd2hlbiBvcGVuaW5nIGEgbmV3IHRhYiBmcm9tIG9uZSB3aGVyZSB0aGUgY3dk IGNhbm5vdCBiZSBkZXRlcm1pbmVkLgorKyAgcHVibGljIHN0cmluZz8gbGFzdF9rbm93bl9jd2Qg eyBnZXQ7IHByaXZhdGUgc2V0OyBkZWZhdWx0ID0gbnVsbDsgfQorIAorICAgLy8gRmllbGRzCisg CistICBBcnJheTx1bG9uZz4gIGFjdGl2ZV90ZXJtaW5hbF9zaWduYWxfaGFuZGxlcnMgPSBuZXcg QXJyYXk8dWxvbmc+ICgpOworLSAgQXJyYXk8dWxvbmc+ICBhY3RpdmVfdGVybWluYWxfdGFiX3Np Z25hbF9oYW5kbGVycyA9IG5ldyBBcnJheTx1bG9uZz4gKCk7CistICBib29sICAgICAgICAgIGZv cmNlX2Nsb3NlID0gZmFsc2U7CistICBjb25zdCB1aW50ICAgIGhlYWRlcl9iYXJfcmV2ZWFsZXJf ZHVyYXRpb25fbXMgPSAyNTA7CistICBHdGsuUmV2ZWFsZXIgIGhlYWRlcl9iYXJfcmV2ZWFsZXI7 CistICBIZWFkZXJCYXIgICAgIGhlYWRlcl9iYXI7CistICBTZXR0aW5ncyAgICAgIHNldHRpbmdz ID0gU2V0dGluZ3MuZ2V0X2RlZmF1bHQgKCk7CistICB1aW50ICAgICAgICAgIGhlYWRlcl9iYXJf d2FpdGluZ19mbG9hdGluZ19hbmltYXRpb24gPSAwOworLSAgdWludCAgICAgICAgICBoZWFkZXJf YmFyX3dhaXRpbmdfZmxvYXRpbmdfZGVsYXkgPSAwOworLSAgR3RrLkJveCAgICAgICBsYXlvdXRf Ym94OworLSAgR3RrLk92ZXJsYXkgICBvdmVybGF5OworKyAgQXJyYXk8dWxvbmc+IGFjdGl2ZV90 ZXJtaW5hbF9zaWduYWxfaGFuZGxlcnMgPSBuZXcgQXJyYXk8dWxvbmc+ICgpOworKyAgQXJyYXk8 dWxvbmc+IGFjdGl2ZV90ZXJtaW5hbF90YWJfc2lnbmFsX2hhbmRsZXJzID0gbmV3IEFycmF5PHVs b25nPiAoKTsKKysgIGJvb2wgZm9yY2VfY2xvc2UgPSBmYWxzZTsKKysgIGNvbnN0IHVpbnQgICBo ZWFkZXJfYmFyX3JldmVhbGVyX2R1cmF0aW9uX21zID0gMjUwOworKyAgR3RrLlJldmVhbGVyIGhl YWRlcl9iYXJfcmV2ZWFsZXI7CisrICBIZWFkZXJCYXIgICAgaGVhZGVyX2JhcjsKKysgIFNldHRp bmdzICAgICBzZXR0aW5ncyA9IFNldHRpbmdzLmdldF9kZWZhdWx0KCk7CisrICB1aW50ICAgICAg ICBoZWFkZXJfYmFyX3dhaXRpbmdfZmxvYXRpbmdfYW5pbWF0aW9uID0gMDsKKysgIHVpbnQgICAg ICAgIGhlYWRlcl9iYXJfd2FpdGluZ19mbG9hdGluZ19kZWxheSA9IDA7CisrICBHdGsuQm94ICAg ICBsYXlvdXRfYm94OworKyAgR3RrLk92ZXJsYXkgb3ZlcmxheTsKKyAgIHByaXZhdGUgc3RhdGlj IHVpbnQgbmV4dF9pZCA9IDA7CisgCisgICB3ZWFrIEFkdy5UYWJQYWdlPyB0YWJfbWVudV90YXJn ZXQgPSBudWxsOworQEAgLTEzNiw0MSArMTM5LDQzIEBAIHB1YmxpYyBjbGFzcyBUZXJtaW5hbC5X aW5kb3cgOiBBZHcuQXBwbGljYXRpb25XaW5kb3cgeworICAgICB0aGlzLmlkID0gbmV4dF9pZDsK KyAgICAgbmV4dF9pZCsrOworICAgICBpZiAoREVWRUwpIHsKKy0gICAgICB0aGlzLmFkZF9jc3Nf Y2xhc3MgKCJkZXZlbCIpOworKyAgICAgIHRoaXMuYWRkX2Nzc19jbGFzcygiZGV2ZWwiKTsKKyAg ICAgfQorIAorICAgICAvLyBGSVhNRTogbW92ZSB0aGlzIG92ZXIgdG8gYW4gdWkgZmlsZQorIAor LSAgICB0aGlzLmxheW91dF9ib3ggPSBuZXcgR3RrLkJveCAoR3RrLk9yaWVudGF0aW9uLlZFUlRJ Q0FMLCAwKTsKKysgICAgdGhpcy5sYXlvdXRfYm94ID0gbmV3IEd0ay5Cb3goR3RrLk9yaWVudGF0 aW9uLlZFUlRJQ0FMLCAwKTsKKyAKKy0gICAgdGhpcy50YWJfdmlldyA9IG5ldyBBZHcuVGFiVmll dyAoKSB7CisrICAgIHRoaXMudGFiX3ZpZXcgPSBuZXcgQWR3LlRhYlZpZXcoKSB7CisgICAgICAg Ly8gRGlzYWJsZSBBZHcuVGFiVmlldyBzaG9ydGN1dHMKKyAgICAgICBzaG9ydGN1dHMgPSBBZHcu VGFiVmlld1Nob3J0Y3V0cy5OT05FLAorICAgICB9OworIAorLSAgICB0aGlzLmhlYWRlcl9iYXIg PSBuZXcgSGVhZGVyQmFyICh0aGlzKTsKKysgICAgdGhpcy5oZWFkZXJfYmFyID0gbmV3IEhlYWRl ckJhcih0aGlzKTsKKyAKKyAgICAgdGhpcy50YWJfYmFyID0gdGhpcy5oZWFkZXJfYmFyLnRhYl9i YXI7CisgICAgIHRoaXMudGFiX2Jhci52aWV3ID0gdGhpcy50YWJfdmlldzsKKyAKKy0gICAgdGhp cy5oZWFkZXJfYmFyX3JldmVhbGVyID0gbmV3IEd0ay5SZXZlYWxlciAoKSB7CisrICAgIHRoaXMu aGVhZGVyX2Jhcl9yZXZlYWxlciA9IG5ldyBHdGsuUmV2ZWFsZXIoKSB7CisgICAgICAgdHJhbnNp dGlvbl9kdXJhdGlvbiA9IFdpbmRvdy5oZWFkZXJfYmFyX3JldmVhbGVyX2R1cmF0aW9uX21zLAor ICAgICAgIGNoaWxkID0gdGhpcy5oZWFkZXJfYmFyLAorICAgICAgIHZhbGlnbiA9IEd0ay5BbGln bi5TVEFSVCwKKyAgICAgfTsKKyAKKy0gICAgdmFyIGJ1aWxkZXIgPSBuZXcgR3RrLkJ1aWxkZXIu ZnJvbV9yZXNvdXJjZSAoIi9jb20vcmFnZ2VzaWx2ZXIvQmxhY2tCb3gvZ3RrL3RhYi1tZW51LnVp Iik7CistICAgIHRoaXMudGFiX3ZpZXcubWVudV9tb2RlbCA9IGJ1aWxkZXIuZ2V0X29iamVjdCAo InRhYi1tZW51IikgYXMgR0xpYi5NZW51OworKyAgICB2YXIgYnVpbGRlciA9CisrICAgICAgbmV3 IEd0ay5CdWlsZGVyLmZyb21fcmVzb3VyY2UoCisrICAgICAgICAiL2NvbS9yYWdnZXNpbHZlci9C bGFja0JveC9ndGsvdGFiLW1lbnUudWkiKTsKKysgICAgdGhpcy50YWJfdmlldy5tZW51X21vZGVs ID0gYnVpbGRlci5nZXRfb2JqZWN0KCJ0YWItbWVudSIpIGFzIEdMaWIuTWVudTsKKyAKKy0gICAg dGhpcy5sYXlvdXRfYm94LmFwcGVuZCAodGhpcy5oZWFkZXJfYmFyX3JldmVhbGVyKTsKKy0gICAg dGhpcy5sYXlvdXRfYm94LmFwcGVuZCAodGhpcy50YWJfdmlldyk7CisrICAgIHRoaXMubGF5b3V0 X2JveC5hcHBlbmQodGhpcy5oZWFkZXJfYmFyX3JldmVhbGVyKTsKKysgICAgdGhpcy5sYXlvdXRf Ym94LmFwcGVuZCh0aGlzLnRhYl92aWV3KTsKKyAKKy0gICAgdGhpcy5vdmVybGF5ID0gbmV3IEd0 ay5PdmVybGF5ICgpOworKyAgICB0aGlzLm92ZXJsYXkgPSBuZXcgR3RrLk92ZXJsYXkoKTsKKyAg ICAgdGhpcy5vdmVybGF5LmNoaWxkID0gdGhpcy5sYXlvdXRfYm94OworIAorICAgICB0aGlzLmNv bnRlbnQgPSB0aGlzLm92ZXJsYXk7CisgCistICAgIHRoaXMuc2V0X25hbWUgKCJibGFja2JveC1t YWluLXdpbmRvdyIpOworKyAgICB0aGlzLnNldF9uYW1lKCJibGFja2JveC1tYWluLXdpbmRvdyIp OworICAgfQorIAorICAgcHVibGljIFdpbmRvdyAoCitAQCAtMTc5LDExICsxODQsMTEgQEAgcHVi bGljIGNsYXNzIFRlcm1pbmFsLldpbmRvdyA6IEFkdy5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAg IHN0cmluZz8gY3dkID0gbnVsbCwKKyAgICAgYm9vbCBza2lwX2luaXRpYWxfdGFiID0gZmFsc2UK KyAgICkgeworLSAgICB2YXIgc2V0dCA9IFNldHRpbmdzLmdldF9kZWZhdWx0ICgpOworKyAgICB2 YXIgc2V0dCA9IFNldHRpbmdzLmdldF9kZWZhdWx0KCk7CisgICAgIHZhciB3d2lkdGggPSAoaW50 KSAoc2V0dC5yZW1lbWJlcl93aW5kb3dfc2l6ZSA/IHNldHQud2luZG93X3dpZHRoIDogNzAwKTsK KyAgICAgdmFyIHdoZWlnaHQgPSAoaW50KSAoc2V0dC5yZW1lbWJlcl93aW5kb3dfc2l6ZSA/IHNl dHQud2luZG93X2hlaWdodCA6IDQ1MCk7CisgCistICAgIE9iamVjdCAoCisrICAgIE9iamVjdCgK KyAgICAgICBhcHBsaWNhdGlvbjogYXBwLAorICAgICAgIGRlZmF1bHRfd2lkdGg6IHd3aWR0aCwK KyAgICAgICBkZWZhdWx0X2hlaWdodDogd2hlaWdodCwKK0BAIC0xOTEsMTggKzE5NiwxOCBAQCBw dWJsaWMgY2xhc3MgVGVybWluYWwuV2luZG93IDogQWR3LkFwcGxpY2F0aW9uV2luZG93IHsKKyAg ICAgICBtYXhpbWl6ZWQ6IHNldHQucmVtZW1iZXJfd2luZG93X3NpemUgJiYgc2V0dC53YXNfbWF4 aW1pemVkCisgICAgICk7CisgCistICAgIHRoaXMudGhlbWVfcHJvdmlkZXIgPSBUaGVtZVByb3Zp ZGVyLmdldF9kZWZhdWx0ICgpOworKyAgICB0aGlzLnRoZW1lX3Byb3ZpZGVyID0gVGhlbWVQcm92 aWRlci5nZXRfZGVmYXVsdCgpOworIAorLSAgICB0aGlzLmFkZF9hY3Rpb25zICgpOworLSAgICB0 aGlzLmNvbm5lY3Rfc2lnbmFscyAoKTsKKysgICAgdGhpcy5hZGRfYWN0aW9ucygpOworKyAgICB0 aGlzLmNvbm5lY3Rfc2lnbmFscygpOworIAorICAgICBpZiAoIXNraXBfaW5pdGlhbF90YWIpIHsK Ky0gICAgICB0aGlzLm5ld190YWIgKGNvbW1hbmQsIGN3ZCk7CisrICAgICAgdGhpcy5uZXdfdGFi KGNvbW1hbmQsIGN3ZCk7CisgICAgIH0KKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCBjb25uZWN0 X3NpZ25hbHMgKCkgeworLSAgICB0aGlzLmJpbmRfcHJvcGVydHkgKAorKyAgcHJpdmF0ZSB2b2lk IGNvbm5lY3Rfc2lnbmFscygpIHsKKysgICAgdGhpcy5iaW5kX3Byb3BlcnR5KAorICAgICAgICJh Y3RpdmUtdGVybWluYWwtdGl0bGUiLAorICAgICAgIHRoaXMsCisgICAgICAgInRpdGxlIiwKK0BA IC0yMTEsOTUgKzIxNiw5NSBAQCBwdWJsaWMgY2xhc3MgVGVybWluYWwuV2luZG93IDogQWR3LkFw cGxpY2F0aW9uV2luZG93IHsKKyAgICAgICBudWxsCisgICAgICk7CisgCistICAgIHRoaXMuc2V0 dGluZ3Muc2NoZW1hLmJpbmQgKAorKyAgICB0aGlzLnNldHRpbmdzLnNjaGVtYS5iaW5kKAorICAg ICAgICJmaWxsLXRhYnMiLAorICAgICAgIHRoaXMudGFiX2JhciwKKyAgICAgICAiZXhwYW5kLXRh YnMiLAorICAgICAgIFNldHRpbmdzQmluZEZsYWdzLkdFVAorICAgICApOworIAorLSAgICB0aGlz LnNldHRpbmdzLnNjaGVtYS5iaW5kICgKKysgICAgdGhpcy5zZXR0aW5ncy5zY2hlbWEuYmluZCgK KyAgICAgICAic2hvdy1oZWFkZXJiYXIiLAorICAgICAgIHRoaXMuaGVhZGVyX2Jhcl9yZXZlYWxl ciwKKyAgICAgICAicmV2ZWFsLWNoaWxkIiwKKyAgICAgICBTZXR0aW5nc0JpbmRGbGFncy5HRVQK KyAgICAgKTsKKyAKKy0gICAgdGhpcy5zZXR0aW5ncy5ub3RpZnkgWyJjb250ZXh0LWF3YXJlLWhl YWRlci1iYXIiXS5jb25uZWN0ICgoKSA9PiB7CistICAgICAgdGhpcy5vbl9hY3RpdmVfdGVybWlu YWxfY29udGV4dF9jaGFuZ2VkICgpOworKyAgICB0aGlzLnNldHRpbmdzLm5vdGlmeVsiY29udGV4 dC1hd2FyZS1oZWFkZXItYmFyIl0uY29ubmVjdCgoKSA9PiB7CisrICAgICAgdGhpcy5vbl9hY3Rp dmVfdGVybWluYWxfY29udGV4dF9jaGFuZ2VkKCk7CisgICAgIH0pOworIAorLSAgICB0aGlzLmhl YWRlcl9iYXJfcmV2ZWFsZXIubm90aWZ5IFsicmV2ZWFsLWNoaWxkIl0KKy0gICAgICAuY29ubmVj dCAodGhpcy5vbl9yZXZlYWxfaGVhZGVyX2Jhcl9jaGFuZ2VkKTsKKysgICAgdGhpcy5oZWFkZXJf YmFyX3JldmVhbGVyLm5vdGlmeVsicmV2ZWFsLWNoaWxkIl0KKysgICAgLmNvbm5lY3QodGhpcy5v bl9yZXZlYWxfaGVhZGVyX2Jhcl9jaGFuZ2VkKTsKKyAKKy0gICAgc2V0dGluZ3Mubm90aWZ5IFsi c2hvdy1oZWFkZXJiYXIiXS5jb25uZWN0ICgoKSA9PiB7CistICAgICAgaWYgKFNldHRpbmdzLmdl dF9kZWZhdWx0ICgpLnNob3dfaGVhZGVyYmFyKSB7CistICAgICAgICB0aGlzLm9uX3Nob3dfaGVh ZGVyX2Jhcl9jaGFuZ2VkICgpOworKyAgICBzZXR0aW5ncy5ub3RpZnlbInNob3ctaGVhZGVyYmFy Il0uY29ubmVjdCgoKSA9PiB7CisrICAgICAgaWYgKFNldHRpbmdzLmdldF9kZWZhdWx0KCkuc2hv d19oZWFkZXJiYXIpIHsKKysgICAgICAgIHRoaXMub25fc2hvd19oZWFkZXJfYmFyX2NoYW5nZWQo KTsKKyAgICAgICB9CisgICAgIH0pOworIAorLSAgICBzZXR0aW5ncy5ub3RpZnkgWyJzaG93LWhl YWRlcmJhciJdLmNvbm5lY3RfYWZ0ZXIgKCgpID0+IHsKKy0gICAgICBpZiAoIVNldHRpbmdzLmdl dF9kZWZhdWx0ICgpLnNob3dfaGVhZGVyYmFyKSB7CistICAgICAgICB0aGlzLm9uX3Nob3dfaGVh ZGVyX2Jhcl9jaGFuZ2VkICgpOworKyAgICBzZXR0aW5ncy5ub3RpZnlbInNob3ctaGVhZGVyYmFy Il0uY29ubmVjdF9hZnRlcigoKSA9PiB7CisrICAgICAgaWYgKCFTZXR0aW5ncy5nZXRfZGVmYXVs dCgpLnNob3dfaGVhZGVyYmFyKSB7CisrICAgICAgICB0aGlzLm9uX3Nob3dfaGVhZGVyX2Jhcl9j aGFuZ2VkKCk7CisgICAgICAgfQorICAgICB9KTsKKyAKKy0gICAgdGhpcy5vbl9zaG93X2hlYWRl cl9iYXJfY2hhbmdlZCAoKTsKKysgICAgdGhpcy5vbl9zaG93X2hlYWRlcl9iYXJfY2hhbmdlZCgp OworIAorLSAgICBzZXR0aW5ncy5ub3RpZnkgWyJmbG9hdGluZy1jb250cm9scyJdCistICAgICAg LmNvbm5lY3QgKHRoaXMub25fZmxvYXRpbmdfY29udHJvbHNfY2hhbmdlZCk7CisrICAgIHNldHRp bmdzLm5vdGlmeVsiZmxvYXRpbmctY29udHJvbHMiXQorKyAgICAuY29ubmVjdCh0aGlzLm9uX2Zs b2F0aW5nX2NvbnRyb2xzX2NoYW5nZWQpOworIAorLSAgICB0aGlzLnRhYl92aWV3LmNyZWF0ZV93 aW5kb3cuY29ubmVjdCAoKCkgPT4geworLSAgICAgIHZhciB3ID0gdGhpcy5uZXdfd2luZG93IChu dWxsLCB0cnVlKTsKKysgICAgdGhpcy50YWJfdmlldy5jcmVhdGVfd2luZG93LmNvbm5lY3QoKCkg PT4geworKyAgICAgIHZhciB3ID0gdGhpcy5uZXdfd2luZG93KG51bGwsIHRydWUpOworICAgICAg IHJldHVybiB3LnRhYl92aWV3OworICAgICB9KTsKKyAKKy0gICAgdGhpcy50YWJfdmlldy5jbG9z ZV9wYWdlLmNvbm5lY3QgKChwYWdlKSA9PiB7CistICAgICAgdGhpcy50cnlfY2xvc2luZ190YWIu YmVnaW4gKHBhZ2UpOworKyAgICB0aGlzLnRhYl92aWV3LmNsb3NlX3BhZ2UuY29ubmVjdCgocGFn ZSkgPT4geworKyAgICAgIHRoaXMudHJ5X2Nsb3NpbmdfdGFiLmJlZ2luKHBhZ2UpOworICAgICAg IHJldHVybiB0cnVlOworICAgICB9KTsKKyAKKyAgICAgLy8gQ2xvc2UgdGhlIHdpbmRvdyBpZiBh bGwgdGFicyB3ZXJlIGNsb3NlZAorLSAgICB0aGlzLnRhYl92aWV3Lm5vdGlmeVsibi1wYWdlcyJd LmNvbm5lY3QgKCgpID0+IHsKKysgICAgdGhpcy50YWJfdmlldy5ub3RpZnlbIm4tcGFnZXMiXS5j b25uZWN0KCgpID0+IHsKKyAgICAgICBpZiAodGhpcy50YWJfdmlldy5uX3BhZ2VzIDwgMSkgewor LSAgICAgICAgdGhpcy5jbG9zZSAoKTsKKysgICAgICAgIHRoaXMuY2xvc2UoKTsKKyAgICAgICB9 CisgICAgIH0pOworIAorLSAgICB0aGlzLnRhYl92aWV3Lm5vdGlmeVsic2VsZWN0ZWQtcGFnZSJd LmNvbm5lY3QgKCgpID0+IHsKKy0gICAgICB0aGlzLm9uX3RhYl9zZWxlY3RlZCAoKTsKKysgICAg dGhpcy50YWJfdmlldy5ub3RpZnlbInNlbGVjdGVkLXBhZ2UiXS5jb25uZWN0KCgpID0+IHsKKysg ICAgICB0aGlzLm9uX3RhYl9zZWxlY3RlZCgpOworICAgICB9KTsKKyAKKy0gICAgdGhpcy50YWJf dmlldy5zZXR1cF9tZW51LmNvbm5lY3QgKHRoaXMub25fc2V0dXBfbWVudSk7CisrICAgIHRoaXMu dGFiX3ZpZXcuc2V0dXBfbWVudS5jb25uZWN0KHRoaXMub25fc2V0dXBfbWVudSk7CisgCistICAg IHRoaXMubm90aWZ5WyJkZWZhdWx0LXdpZHRoIl0uY29ubmVjdCAoKCkgPT4geworKyAgICB0aGlz Lm5vdGlmeVsiZGVmYXVsdC13aWR0aCJdLmNvbm5lY3QoKCkgPT4geworICAgICAgIHRoaXMuc2V0 dGluZ3Mud2luZG93X3dpZHRoID0gdGhpcy5kZWZhdWx0X3dpZHRoOworICAgICB9KTsKKyAKKy0g ICAgdGhpcy5ub3RpZnlbImRlZmF1bHQtaGVpZ2h0Il0uY29ubmVjdCAoKCkgPT4geworKyAgICB0 aGlzLm5vdGlmeVsiZGVmYXVsdC1oZWlnaHQiXS5jb25uZWN0KCgpID0+IHsKKyAgICAgICB0aGlz LnNldHRpbmdzLndpbmRvd19oZWlnaHQgPSB0aGlzLmRlZmF1bHRfaGVpZ2h0OworICAgICB9KTsK KyAKKy0gICAgdGhpcy5ub3RpZnkgWyJhY3RpdmUtdGVybWluYWwiXQorLSAgICAgIC5jb25uZWN0 ICh0aGlzLm9uX2FjdGl2ZV90ZXJtaW5hbF90YWJfY2hhbmdlZCk7CisrICAgIHRoaXMubm90aWZ5 WyJhY3RpdmUtdGVybWluYWwiXQorKyAgICAuY29ubmVjdCh0aGlzLm9uX2FjdGl2ZV90ZXJtaW5h bF90YWJfY2hhbmdlZCk7CisgCistICAgIHZhciBtb3Rpb25fY29udHJvbGxlciA9IG5ldyBHdGsu RXZlbnRDb250cm9sbGVyTW90aW9uICgpOworLSAgICBtb3Rpb25fY29udHJvbGxlci5tb3Rpb24u Y29ubmVjdCAodGhpcy5vbl9tb3VzZV9tb3Rpb24pOworKyAgICB2YXIgbW90aW9uX2NvbnRyb2xs ZXIgPSBuZXcgR3RrLkV2ZW50Q29udHJvbGxlck1vdGlvbigpOworKyAgICBtb3Rpb25fY29udHJv bGxlci5tb3Rpb24uY29ubmVjdCh0aGlzLm9uX21vdXNlX21vdGlvbik7CisgCistICAgICh0aGlz IGFzIEd0ay5XaWRnZXQpPy5hZGRfY29udHJvbGxlciAobW90aW9uX2NvbnRyb2xsZXIpOworKyAg ICAodGhpcyBhcyBHdGsuV2lkZ2V0KT8uYWRkX2NvbnRyb2xsZXIobW90aW9uX2NvbnRyb2xsZXIp OworIAorLSAgICB0aGlzLmNsb3NlX3JlcXVlc3QuY29ubmVjdCAodGhpcy5vbl9jbG9zZV9yZXF1 ZXN0KTsKKysgICAgdGhpcy5jbG9zZV9yZXF1ZXN0LmNvbm5lY3QodGhpcy5vbl9jbG9zZV9yZXF1 ZXN0KTsKKyAKKy0gICAgdGhpcy5ub3RpZnkgWyJsaW5rIl0uY29ubmVjdCAoKCkgPT4geworKyAg ICB0aGlzLm5vdGlmeVsibGluayJdLmNvbm5lY3QoKCkgPT4geworICAgICAgIHZhciBlbmFibGVk ID0gdGhpcy5saW5rICE9IG51bGw7CisgCistICAgICAgbWVzc2FnZSAoIlNldHRpbmcgbGluayBh Y3Rpb25zIHRvICVzIiwgZW5hYmxlZC50b19zdHJpbmcgKCkpOworLSAgICAgIHRoaXMuY29weV9s aW5rX2FjdGlvbi5zZXRfZW5hYmxlZCAodGhpcy5saW5rICE9IG51bGwpOworLSAgICAgIHRoaXMu b3Blbl9saW5rX2FjdGlvbi5zZXRfZW5hYmxlZCAodGhpcy5saW5rICE9IG51bGwpOworKyAgICAg IG1lc3NhZ2UoIlNldHRpbmcgbGluayBhY3Rpb25zIHRvICVzIiwgZW5hYmxlZC50b19zdHJpbmco KSk7CisrICAgICAgdGhpcy5jb3B5X2xpbmtfYWN0aW9uLnNldF9lbmFibGVkKHRoaXMubGluayAh PSBudWxsKTsKKysgICAgICB0aGlzLm9wZW5fbGlua19hY3Rpb24uc2V0X2VuYWJsZWQodGhpcy5s aW5rICE9IG51bGwpOworICAgICB9KTsKKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCBvbl9tb3Vz ZV9tb3Rpb24gKAorKyAgcHJpdmF0ZSB2b2lkIG9uX21vdXNlX21vdGlvbigKKyAgICAgR3RrLkV2 ZW50Q29udHJvbGxlck1vdGlvbiBfLAorICAgICBkb3VibGUgX21vdXNlWCwKKyAgICAgZG91Ymxl IG1vdXNlWQorQEAgLTMxMCw3ICszMTUsNyBAQCBwdWJsaWMgY2xhc3MgVGVybWluYWwuV2luZG93 IDogQWR3LkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAgICByZXR1cm47CisgICAgIH0KKyAKKy0g ICAgdmFyIGhiX2hlaWdodCA9IHRoaXMuaGVhZGVyX2Jhci5nZXRfaGVpZ2h0ICgpOworKyAgICB2 YXIgaGJfaGVpZ2h0ID0gdGhpcy5oZWFkZXJfYmFyLmdldF9oZWlnaHQoKTsKKyAgICAgdmFyIGlz X3Nob3duID0gdGhpcy5oZWFkZXJfYmFyX3JldmVhbGVyLnJldmVhbF9jaGlsZDsKKyAKKyAgICAg dmFyIHRyaWdnZXJfYXJlYSA9IHNldHRpbmdzLmZsb2F0aW5nX2NvbnRyb2xzX2hvdmVyX2FyZWE7 CitAQCAtMzIyLDYxICszMjcsNjUgQEAgcHVibGljIGNsYXNzIFRlcm1pbmFsLldpbmRvdyA6IEFk dy5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgLy8gT25seSBzY2hlZHVsZSBhbmltYXRpb24g aWYgdGhlcmUgYXJlbid0IGFueSBzY2hlZHVsZWQKKyAgICAgICBpZiAodGhpcy5oZWFkZXJfYmFy X3dhaXRpbmdfZmxvYXRpbmdfZGVsYXkgPT0gMCkgeworICAgICAgICAgLy8gV2FpdCBmb3IgZGVs YXkgdG8gc2hvdyBmbG9hdGluZyBjb250cm9scworLSAgICAgICAgdGhpcy5oZWFkZXJfYmFyX3dh aXRpbmdfZmxvYXRpbmdfZGVsYXkgPSBUaW1lb3V0LmFkZCAoCisrICAgICAgICB0aGlzLmhlYWRl cl9iYXJfd2FpdGluZ19mbG9hdGluZ19kZWxheSA9IFRpbWVvdXQuYWRkKAorICAgICAgICAgICBz ZXR0aW5ncy5kZWxheV9iZWZvcmVfc2hvd2luZ19mbG9hdGluZ19jb250cm9scywKKyAgICAgICAg ICAgKCkgPT4geworLSAgICAgICAgICAgIHRoaXMuaGVhZGVyX2Jhcl93YWl0aW5nX2Zsb2F0aW5n X2RlbGF5ID0gMDsKKysgICAgICAgICAgdGhpcy5oZWFkZXJfYmFyX3dhaXRpbmdfZmxvYXRpbmdf ZGVsYXkgPSAwOworIAorLSAgICAgICAgICAgIHRoaXMuaGVhZGVyX2Jhcl9yZXZlYWxlci5yZXZl YWxfY2hpbGQgPSB0cnVlOworKyAgICAgICAgICB0aGlzLmhlYWRlcl9iYXJfcmV2ZWFsZXIucmV2 ZWFsX2NoaWxkID0gdHJ1ZTsKKyAKKy0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAg ICAgIH0KKysgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgfQorICAgICAgICAgKTsK KyAgICAgICB9CistICAgIH0KKy0gICAgZWxzZSBpZiAoCisrICAgIH0gZWxzZSBpZiAoCisgICAg ICAgIWlzX2hvdmVyaW5nX3RyaWdnZXJfYXJlYSAmJgorICAgICAgIChpc19zaG93biB8fCB0aGlz LmhlYWRlcl9iYXJfd2FpdGluZ19mbG9hdGluZ19kZWxheSAhPSAwKQorICAgICApIHsKKyAgICAg ICBpZiAodGhpcy5oZWFkZXJfYmFyX3dhaXRpbmdfZmxvYXRpbmdfZGVsYXkgIT0gMCkgeworLSAg ICAgICAgU291cmNlLnJlbW92ZSAodGhpcy5oZWFkZXJfYmFyX3dhaXRpbmdfZmxvYXRpbmdfZGVs YXkpOworKyAgICAgICAgU291cmNlLnJlbW92ZSh0aGlzLmhlYWRlcl9iYXJfd2FpdGluZ19mbG9h dGluZ19kZWxheSk7CisgICAgICAgICB0aGlzLmhlYWRlcl9iYXJfd2FpdGluZ19mbG9hdGluZ19k ZWxheSA9IDA7CisgICAgICAgfQorICAgICAgIHRoaXMuaGVhZGVyX2Jhcl9yZXZlYWxlci5yZXZl YWxfY2hpbGQgPSBmYWxzZTsKKyAgICAgfQorICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIG9uX3Nl dHVwX21lbnUgKEFkdy5UYWJQYWdlPyBwYWdlKSB7CisrICBwcml2YXRlIHZvaWQgb25fc2V0dXBf bWVudShBZHcuVGFiUGFnZT8gcGFnZSkgeworICAgICB0aGlzLnRhYl9tZW51X3RhcmdldCA9IHBh Z2U7CisgCistICAgIHRoaXMubW92ZV90YWJfbGVmdF9hY3Rpb24uc2V0X2VuYWJsZWQgKHBhZ2Ug IT0gbnVsbCAmJiB0aGlzLnRhYl92aWV3LmdldF9wYWdlX3Bvc2l0aW9uIChwYWdlKSA+IDApOwor LSAgICB0aGlzLm1vdmVfdGFiX3JpZ2h0X2FjdGlvbi5zZXRfZW5hYmxlZCAocGFnZSAhPSBudWxs ICYmIHRoaXMudGFiX3ZpZXcuZ2V0X3BhZ2VfcG9zaXRpb24gKHBhZ2UpIDwgdGhpcy50YWJfdmll dy5uX3BhZ2VzIC0gMSk7CistICAgIHRoaXMuY2xvc2Vfc3BlY2lmaWNfdGFiX2FjdGlvbi5zZXRf ZW5hYmxlZCAocGFnZSAhPSBudWxsKTsKKy0gICAgdGhpcy5kZXRhdGNoX3RhYl9hY3Rpb24uc2V0 X2VuYWJsZWQgKHBhZ2UgIT0gbnVsbCAmJiB0aGlzLnRhYl92aWV3Lm5fcGFnZXMgPiAxKTsKKysg ICAgdGhpcy5tb3ZlX3RhYl9sZWZ0X2FjdGlvbi5zZXRfZW5hYmxlZChwYWdlICE9IG51bGwgJiYK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYl92aWV3 LmdldF9wYWdlX3Bvc2l0aW9uKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGFnZSkgPiAwKTsKKysgICAgdGhpcy5tb3ZlX3RhYl9yaWdodF9hY3Rpb24uc2V0 X2VuYWJsZWQocGFnZSAhPSBudWxsICYmCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRoaXMudGFiX3ZpZXcuZ2V0X3BhZ2VfcG9zaXRpb24oCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSkgPCB0aGlzLnRhYl92aWV3 Lm5fcGFnZXMgLSAxKTsKKysgICAgdGhpcy5jbG9zZV9zcGVjaWZpY190YWJfYWN0aW9uLnNldF9l bmFibGVkKHBhZ2UgIT0gbnVsbCk7CisrICAgIHRoaXMuZGV0YXRjaF90YWJfYWN0aW9uLnNldF9l bmFibGVkKHBhZ2UgIT0gbnVsbCAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aGlzLnRhYl92aWV3Lm5fcGFnZXMgPiAxKTsKKyAgIH0KKyAKKy0gIHByaXZhdGUg dm9pZCBvbl9yZXZlYWxfaGVhZGVyX2Jhcl9jaGFuZ2VkICgpIHsKKysgIHByaXZhdGUgdm9pZCBv bl9yZXZlYWxfaGVhZGVyX2Jhcl9jaGFuZ2VkKCkgeworICAgICB0aGlzLmhlYWRlcl9iYXJfd2Fp dGluZ19mbG9hdGluZ19hbmltYXRpb24gPSBUaW1lb3V0CistICAgICAgLmFkZCAoaGVhZGVyX2Jh cl9yZXZlYWxlcl9kdXJhdGlvbl9tcywgKCkgPT4geworLSAgICAgICAgdGhpcy5oZWFkZXJfYmFy X3dhaXRpbmdfZmxvYXRpbmdfYW5pbWF0aW9uID0gMDsKKy0gICAgICAgIHRoaXMuaGVhZGVyX2Jh cl9hbmltYXRpb25fZmluaXNoZWQgKCk7CistICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAg fSk7CisrICAgICAgLmFkZChoZWFkZXJfYmFyX3JldmVhbGVyX2R1cmF0aW9uX21zLCAoKSA9PiB7 CisrICAgICAgdGhpcy5oZWFkZXJfYmFyX3dhaXRpbmdfZmxvYXRpbmdfYW5pbWF0aW9uID0gMDsK KysgICAgICB0aGlzLmhlYWRlcl9iYXJfYW5pbWF0aW9uX2ZpbmlzaGVkKCk7CisrICAgICAgcmV0 dXJuIGZhbHNlOworKyAgICB9KTsKKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCBvbl9mbG9hdGlu Z19jb250cm9sc19jaGFuZ2VkICgpIHsKKy0gICAgdGhpcy5zZXRfaGVhZGVyX2Jhcl90b19mbG9h dGluZy5iZWdpbiAoCisrICBwcml2YXRlIHZvaWQgb25fZmxvYXRpbmdfY29udHJvbHNfY2hhbmdl ZCgpIHsKKysgICAgdGhpcy5zZXRfaGVhZGVyX2Jhcl90b19mbG9hdGluZy5iZWdpbigKKyAgICAg ICAhdGhpcy5zZXR0aW5ncy5zaG93X2hlYWRlcmJhciAmJiB0aGlzLnNldHRpbmdzLmZsb2F0aW5n X2NvbnRyb2xzCisgICAgICk7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgb25fc2hvd19oZWFk ZXJfYmFyX2NoYW5nZWQgKCkgeworLSAgICB0aGlzLnNldF9oZWFkZXJfYmFyX3RvX2Zsb2F0aW5n LmJlZ2luICgKKysgIHByaXZhdGUgdm9pZCBvbl9zaG93X2hlYWRlcl9iYXJfY2hhbmdlZCgpIHsK KysgICAgdGhpcy5zZXRfaGVhZGVyX2Jhcl90b19mbG9hdGluZy5iZWdpbigKKyAgICAgICAhdGhp cy5zZXR0aW5ncy5zaG93X2hlYWRlcmJhciAmJiB0aGlzLnNldHRpbmdzLmZsb2F0aW5nX2NvbnRy b2xzCisgICAgICk7CisgICB9CisgCistICBwcml2YXRlIGFzeW5jIHZvaWQgd2FpdF9mb3JfaGVh ZGVyX2Jhcl9hbmltYXRpb24gKCkgeworKyAgcHJpdmF0ZSBhc3luYyB2b2lkIHdhaXRfZm9yX2hl YWRlcl9iYXJfYW5pbWF0aW9uKCkgeworICAgICBpZiAodGhpcy5oZWFkZXJfYmFyX3dhaXRpbmdf ZmxvYXRpbmdfYW5pbWF0aW9uID09IDApIHsKKyAgICAgICByZXR1cm47CisgICAgIH0KK0BAIC0z ODUsMTYgKzM5NCwxNiBAQCBwdWJsaWMgY2xhc3MgVGVybWluYWwuV2luZG93IDogQWR3LkFwcGxp Y2F0aW9uV2luZG93IHsKKyAKKyAgICAgdWxvbmcgaGlkID0gMDsKKyAKKy0gICAgaGlkID0gdGhp cy5oZWFkZXJfYmFyX2FuaW1hdGlvbl9maW5pc2hlZC5jb25uZWN0X2FmdGVyICgoKSA9PiB7Cist ICAgICAgY2FsbGJhY2sgKCk7CistICAgICAgdGhpcy5kaXNjb25uZWN0IChoaWQpOworKyAgICBo aWQgPSB0aGlzLmhlYWRlcl9iYXJfYW5pbWF0aW9uX2ZpbmlzaGVkLmNvbm5lY3RfYWZ0ZXIoKCkg PT4geworKyAgICAgIGNhbGxiYWNrKCk7CisrICAgICAgdGhpcy5kaXNjb25uZWN0KGhpZCk7Cisg ICAgIH0pOworIAorICAgICB5aWVsZDsKKyAgIH0KKyAKKyAgIHByaXZhdGUgYm9vbCBzZXR0aW5n X2hlYWRlcl9iYXJfdG9fZmxvYXRpbmcgPSBmYWxzZTsKKy0gIHByaXZhdGUgYXN5bmMgdm9pZCBz ZXRfaGVhZGVyX2Jhcl90b19mbG9hdGluZyAoYm9vbCBzaG91bGRfZmxvYXQpIHsKKysgIHByaXZh dGUgYXN5bmMgdm9pZCBzZXRfaGVhZGVyX2Jhcl90b19mbG9hdGluZyhib29sIHNob3VsZF9mbG9h dCkgeworICAgICBpZiAodGhpcy5zZXR0aW5nX2hlYWRlcl9iYXJfdG9fZmxvYXRpbmcpIHsKKyAg ICAgICByZXR1cm47CisgICAgIH0KK0BAIC00MDMsMTQgKzQxMiwxNCBAQCBwdWJsaWMgY2xhc3Mg VGVybWluYWwuV2luZG93IDogQWR3LkFwcGxpY2F0aW9uV2luZG93IHsKKyAKKyAgICAgaWYgKHNo b3VsZF9mbG9hdCAmJiB0aGlzLmhlYWRlcl9iYXJfcmV2ZWFsZXIucGFyZW50ICE9IHRoaXMub3Zl cmxheSkgeworICAgICAgIC8vIC4uLgorLSAgICAgIHlpZWxkIHRoaXMud2FpdF9mb3JfaGVhZGVy X2Jhcl9hbmltYXRpb24gKCk7CistICAgICAgdGhpcy5sYXlvdXRfYm94LnJlbW92ZSAodGhpcy5o ZWFkZXJfYmFyX3JldmVhbGVyKTsKKy0gICAgICB0aGlzLm92ZXJsYXkuYWRkX292ZXJsYXkgKHRo aXMuaGVhZGVyX2Jhcl9yZXZlYWxlcik7CistICAgIH0KKy0gICAgZWxzZSBpZiAoIXNob3VsZF9m bG9hdCAmJiB0aGlzLmhlYWRlcl9iYXJfcmV2ZWFsZXIucGFyZW50ICE9IHRoaXMubGF5b3V0X2Jv eCkgeworKyAgICAgIHlpZWxkIHRoaXMud2FpdF9mb3JfaGVhZGVyX2Jhcl9hbmltYXRpb24oKTsK KysgICAgICB0aGlzLmxheW91dF9ib3gucmVtb3ZlKHRoaXMuaGVhZGVyX2Jhcl9yZXZlYWxlcik7 CisrICAgICAgdGhpcy5vdmVybGF5LmFkZF9vdmVybGF5KHRoaXMuaGVhZGVyX2Jhcl9yZXZlYWxl cik7CisrICAgIH0gZWxzZSBpZiAoIXNob3VsZF9mbG9hdCAmJgorKyAgICAgICAgICAgICAgIHRo aXMuaGVhZGVyX2Jhcl9yZXZlYWxlci5wYXJlbnQgIT0gdGhpcy5sYXlvdXRfYm94KSB7CisgICAg ICAgLy8gLi4uCistICAgICAgdGhpcy5vdmVybGF5LnJlbW92ZV9vdmVybGF5ICh0aGlzLmhlYWRl cl9iYXJfcmV2ZWFsZXIpOworLSAgICAgIHRoaXMubGF5b3V0X2JveC5wcmVwZW5kICh0aGlzLmhl YWRlcl9iYXJfcmV2ZWFsZXIpOworKyAgICAgIHRoaXMub3ZlcmxheS5yZW1vdmVfb3ZlcmxheSh0 aGlzLmhlYWRlcl9iYXJfcmV2ZWFsZXIpOworKyAgICAgIHRoaXMubGF5b3V0X2JveC5wcmVwZW5k KHRoaXMuaGVhZGVyX2Jhcl9yZXZlYWxlcik7CisgICAgIH0KKyAKKyAgICAgdGhpcy5zZXR0aW5n X2hlYWRlcl9iYXJfdG9fZmxvYXRpbmcgPSBmYWxzZTsKK0BAIC00MTgsMTUgKzQyNywxNSBAQCBw dWJsaWMgY2xhc3MgVGVybWluYWwuV2luZG93IDogQWR3LkFwcGxpY2F0aW9uV2luZG93IHsKKyAK KyAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCByaWdodCBiZWZvcmUgdGhlIHdpbmRvdyBpcyBj bG9zZWQuIFVzZSBpdCB0byBzdG9yZQorICAgLy8gd2luZG93LXJlbGF0ZWQgc3RhdGUgc3VjaCBh cyBwb3NpdGlvbiBhbmQgc2l6ZS4KKy0gIHByaXZhdGUgdm9pZCBvbl9iZWZvcmVfY2xvc2UgKCkg eworLSAgICB2YXIgc2V0dGluZ3MgPSBTZXR0aW5ncy5nZXRfZGVmYXVsdCAoKTsKKysgIHByaXZh dGUgdm9pZCBvbl9iZWZvcmVfY2xvc2UoKSB7CisrICAgIHZhciBzZXR0aW5ncyA9IFNldHRpbmdz LmdldF9kZWZhdWx0KCk7CisgCisgICAgIHNldHRpbmdzLndhc19mdWxsc2NyZWVuZWQgPSB0aGlz LmZ1bGxzY3JlZW5lZDsKKyAgICAgc2V0dGluZ3Mud2FzX21heGltaXplZCA9IHRoaXMubWF4aW1p emVkOworIAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRoaXMudGFiX3ZpZXcubl9wYWdlczsg aSsrKSB7CistICAgICAgdmFyIHBhZ2UgPSB0aGlzLnRhYl92aWV3LmdldF9udGhfcGFnZSAoaSk7 CistICAgICAgKHBhZ2UuZ2V0X2NoaWxkICgpIGFzIFRlcm1pbmFsVGFiKT8ub25fYmVmb3JlX2Ns b3NlICgpOworKyAgICAgIHZhciBwYWdlID0gdGhpcy50YWJfdmlldy5nZXRfbnRoX3BhZ2UoaSk7 CisrICAgICAgKHBhZ2UuZ2V0X2NoaWxkKCkgYXMgVGVybWluYWxUYWIpPy5vbl9iZWZvcmVfY2xv c2UoKTsKKyAgICAgfQorICAgfQorIAorQEAgLTQzNyw2NiArNDQ2LDY5IEBAIHB1YmxpYyBjbGFz cyBUZXJtaW5hbC5XaW5kb3cgOiBBZHcuQXBwbGljYXRpb25XaW5kb3cgeworICAgLy8gdG8gY2xv c2UgdGhlIHdpbmRvdy4gSWYgdGhlIHVzZXIgY29uZmlybXMgY2xvc2luZyB0aGUgd2luZG93LCBv ciBpZiB0aGVyZQorICAgLy8gYXJlIG5vIHJ1bm5pbmcgcHJvY2Vzc2VzLCB0aGUgZGlzcGF0Y2hl ZCBmdW5jdGlvbiB3aWxsIGZpcmUgYSBuZXcKKyAgIC8vIGNsb3NlX3JlcXVlc3QgZXZlbnQgYW5k IHRoaXMgZnVuY3Rpb24gd2lsbCBmaW5hbGx5IGNsb3NlIHRoZSB3aW5kb3cuCistICBwcml2YXRl IGJvb2wgb25fY2xvc2VfcmVxdWVzdCAoKSB7CisrICBwcml2YXRlIGJvb2wgb25fY2xvc2VfcmVx dWVzdCgpIHsKKyAgICAgaWYgKHRoaXMuZm9yY2VfY2xvc2UpIHsKKy0gICAgICB0aGlzLm9uX2Jl Zm9yZV9jbG9zZSAoKTsKKysgICAgICB0aGlzLm9uX2JlZm9yZV9jbG9zZSgpOworICAgICAgIHJl dHVybiBmYWxzZTsgLy8gQWxsb3cgY2xvc2luZworICAgICB9CisgCistICAgIHRoaXMudHJ5X2Ns b3Npbmdfd2luZG93LmJlZ2luIChvbl9jbG9zZV9yZXF1ZXN0X3Jlc29sdmVyKTsKKysgICAgdGhp cy50cnlfY2xvc2luZ193aW5kb3cuYmVnaW4ob25fY2xvc2VfcmVxdWVzdF9yZXNvbHZlcik7Cisg CisgICAgIHJldHVybiB0cnVlOyAvLyBCbG9jayBjbG9zaW5nIGZvciBub3cKKyAgIH0KKyAKKy0g IHByaXZhdGUgc3RhdGljIHZvaWQgb25fY2xvc2VfcmVxdWVzdF9yZXNvbHZlciAoR0xpYi5PYmpl Y3Q/IF93aW5kb3csIEdMaWIuQXN5bmNSZXN1bHQgb2JqKSB7CisrICBwcml2YXRlIHN0YXRpYyB2 b2lkIG9uX2Nsb3NlX3JlcXVlc3RfcmVzb2x2ZXIoCisrICAgIEdMaWIuT2JqZWN0PyBfd2luZG93 LAorKyAgICBHTGliLkFzeW5jUmVzdWx0IG9iagorKyAgKSB7CisgICAgIGlmIChfd2luZG93ICE9 IG51bGwgJiYgX3dpbmRvdyBpcyBXaW5kb3cpIHsKKyAgICAgICB2YXIgd2luZG93ID0gX3dpbmRv dyBhcyBXaW5kb3c7CistICAgICAgd2luZG93LnRyeV9jbG9zaW5nX3dpbmRvdy5lbmQgKG9iaik7 CisrICAgICAgd2luZG93LnRyeV9jbG9zaW5nX3dpbmRvdy5lbmQob2JqKTsKKyAgICAgICBpZiAo d2luZG93LmZvcmNlX2Nsb3NlKSB7CistICAgICAgICB3aW5kb3cuY2xvc2UgKCk7CisrICAgICAg ICB3aW5kb3cuY2xvc2UoKTsKKyAgICAgICB9CisgICAgIH0KKyAgIH0KKyAKKy0gIHByaXZhdGUg YXN5bmMgdm9pZCB0cnlfY2xvc2luZ190YWIgKEFkdy5UYWJQYWdlIHBhZ2UpIHsKKy0gICAgdmFy IHRhYiA9IHBhZ2UuY2hpbGQgYXMgVGVybWluYWxUYWI7CistICAgIHZhciB0ZXJtaW5hbCA9IHRh Yj8udGVybWluYWw7CistICAgIGJvb2wgY2FuX2Nsb3NlID0gdHJ1ZTsKKysgIHByaXZhdGUgYXN5 bmMgdm9pZCB0cnlfY2xvc2luZ190YWIoQWR3LlRhYlBhZ2UgcGFnZSkgeworKyAgICB2YXIgICAg IHRhYiA9IHBhZ2UuY2hpbGQgYXMgVGVybWluYWxUYWI7CisrICAgIHZhciAgICAgdGVybWluYWwg PSB0YWI/LnRlcm1pbmFsOworKyAgICBib29sICAgIGNhbl9jbG9zZSA9IHRydWU7CisgICAgIHN0 cmluZz8gY29tbWFuZCA9IG51bGw7CisgCisgICAgIGlmICh0ZXJtaW5hbCAhPSBudWxsKSB7Cist ICAgICAgaWYgKCEoeWllbGQgdGVybWluYWwuZ2V0X2Nhbl9jbG9zZSAob3V0IGNvbW1hbmQpKSkg eworLSAgICAgICAgY2FuX2Nsb3NlID0geWllbGQgY29uZmlybV9jbG9zaW5nICh7IGNvbW1hbmQg fSk7CisrICAgICAgaWYgKCEoeWllbGQgdGVybWluYWwuZ2V0X2Nhbl9jbG9zZShvdXQgY29tbWFu ZCkpKSB7CisrICAgICAgICBjYW5fY2xvc2UgPSB5aWVsZCBjb25maXJtX2Nsb3NpbmcoeyBjb21t YW5kIH0pOworICAgICAgIH0KKyAgICAgfQorIAorICAgICBpZiAoY2FuX2Nsb3NlKSB7CistICAg ICAgdGFiPy5vbl9iZWZvcmVfY2xvc2UgKCk7CisrICAgICAgdGFiPy5vbl9iZWZvcmVfY2xvc2Uo KTsKKyAgICAgfQorIAorLSAgICB0aGlzLnRhYl92aWV3LmNsb3NlX3BhZ2VfZmluaXNoIChwYWdl LCBjYW5fY2xvc2UpOworKyAgICB0aGlzLnRhYl92aWV3LmNsb3NlX3BhZ2VfZmluaXNoKHBhZ2Us IGNhbl9jbG9zZSk7CisgICAgIGlmIChjYW5fY2xvc2UgJiYgdGVybWluYWwgPT0gdGhpcy5hY3Rp dmVfdGVybWluYWwpIHsKKyAgICAgICB0aGlzLmFjdGl2ZV90ZXJtaW5hbCA9IG51bGw7CisgICAg IH0KKyAgIH0KKyAKKy0gIHByaXZhdGUgYXN5bmMgdm9pZCB0cnlfY2xvc2luZ193aW5kb3cgKCkg eworKyAgcHJpdmF0ZSBhc3luYyB2b2lkIHRyeV9jbG9zaW5nX3dpbmRvdygpIHsKKyAgICAgdWlu dCBuX3BhZ2VzID0gdGhpcy50YWJfdmlldy5uX3BhZ2VzOworICAgICBzdHJpbmc/W10gY29tbWFu ZHMgPSB7fTsKKyAgICAgYm9vbCBjYW5fY2xvc2UgPSB0cnVlOworIAorICAgICBmb3IgKHVpbnQg aSA9IDA7IGkgPCBuX3BhZ2VzOyBpKyspIHsKKyAgICAgICBzdHJpbmc/IGNvbW1hbmQgPSBudWxs OworLSAgICAgIHZhciBwYWdlID0gdGhpcy50YWJfdmlldy5nZXRfbnRoX3BhZ2UgKChpbnQpIGkp OworLSAgICAgIHZhciB0ZXJtaW5hbCA9IChwYWdlLmdldF9jaGlsZCAoKSBhcyBUZXJtaW5hbFRh Yik/LnRlcm1pbmFsOworKyAgICAgIHZhciAgICAgcGFnZSA9IHRoaXMudGFiX3ZpZXcuZ2V0X250 aF9wYWdlKChpbnQpIGkpOworKyAgICAgIHZhciAgICAgdGVybWluYWwgPSAocGFnZS5nZXRfY2hp bGQoKSBhcyBUZXJtaW5hbFRhYik/LnRlcm1pbmFsOworIAorLSAgICAgIGlmICh0ZXJtaW5hbCAh PSBudWxsICYmICEoeWllbGQgdGVybWluYWwuZ2V0X2Nhbl9jbG9zZSAob3V0IGNvbW1hbmQpKSkg eworKyAgICAgIGlmICh0ZXJtaW5hbCAhPSBudWxsICYmICEoeWllbGQgdGVybWluYWwuZ2V0X2Nh bl9jbG9zZShvdXQgY29tbWFuZCkpKSB7CisgICAgICAgICBjb21tYW5kcyArPSBjb21tYW5kOwor ICAgICAgIH0KKyAgICAgfQorIAorICAgICBpZiAoY29tbWFuZHMubGVuZ3RoID4gMCkgeworLSAg ICAgIGNhbl9jbG9zZSA9IHlpZWxkIGNvbmZpcm1fY2xvc2luZyAoCisrICAgICAgY2FuX2Nsb3Nl ID0geWllbGQgY29uZmlybV9jbG9zaW5nKAorICAgICAgICAgY29tbWFuZHMsCisgICAgICAgICBD b25maXJtQ2xvc2luZ0NvbnRleHQuV0lORE9XCisgICAgICAgKTsKK0BAIC01MDcsNDI2ICs1MTks NDMxIEBAIHB1YmxpYyBjbGFzcyBUZXJtaW5hbC5XaW5kb3cgOiBBZHcuQXBwbGljYXRpb25XaW5k b3cgeworICAgICB9CisgICB9CisgCistICBwcml2YXRlIHZvaWQgYWRkX2FjdGlvbnMgKCkgewor LSAgICB0aGlzLmFkZF9hY3Rpb25fZW50cmllcyAoQUNUSU9OX0VOVFJJRVMsIHRoaXMpOworKyAg cHJpdmF0ZSB2b2lkIGFkZF9hY3Rpb25zKCkgeworKyAgICB0aGlzLmFkZF9hY3Rpb25fZW50cmll cyhBQ1RJT05fRU5UUklFUywgdGhpcyk7CisgCistICAgIHZhciBzYSA9IG5ldyBTaW1wbGVBY3Rp b24gKCJlZGl0X3ByZWZlcmVuY2VzIiwgbnVsbCk7CistICAgIHNhLmFjdGl2YXRlLmNvbm5lY3Qg KCgpID0+IHsKKysgICAgdmFyIHNhID0gbmV3IFNpbXBsZUFjdGlvbigiZWRpdF9wcmVmZXJlbmNl cyIsIG51bGwpOworKyAgICBzYS5hY3RpdmF0ZS5jb25uZWN0KCgpID0+IHsKKyAgICAgICBpZiAo cHJlZmVyZW5jZXNfd2luZG93ID09IG51bGwpIHsKKy0gICAgICAgIHByZWZlcmVuY2VzX3dpbmRv dyA9IG5ldyBQcmVmZXJlbmNlc1dpbmRvdyAodGhpcywgdGhpcy5hcHBsaWNhdGlvbik7CisrICAg ICAgICBwcmVmZXJlbmNlc193aW5kb3cgPSBuZXcgUHJlZmVyZW5jZXNXaW5kb3codGhpcywgdGhp cy5hcHBsaWNhdGlvbik7CisgICAgICAgfQorIAorLSAgICAgIHByZWZlcmVuY2VzX3dpbmRvdy5w cmVzZW50ICh0aGlzKTsKKysgICAgICBwcmVmZXJlbmNlc193aW5kb3cucHJlc2VudCh0aGlzKTsK KyAgICAgfSk7CistICAgIHRoaXMuYWRkX2FjdGlvbiAoc2EpOworKyAgICB0aGlzLmFkZF9hY3Rp b24oc2EpOworIAorLSAgICBzYSA9IG5ldyBTaW1wbGVBY3Rpb24gKCJwYXN0ZSIsIG51bGwpOwor LSAgICBzYS5hY3RpdmF0ZS5jb25uZWN0ICgoKSA9PiB7CistICAgICAgdGhpcy5vbl9wYXN0ZV9h Y3RpdmF0ZWQgKCk7CisrICAgIHNhID0gbmV3IFNpbXBsZUFjdGlvbigicGFzdGUiLCBudWxsKTsK KysgICAgc2EuYWN0aXZhdGUuY29ubmVjdCgoKSA9PiB7CisrICAgICAgdGhpcy5vbl9wYXN0ZV9h Y3RpdmF0ZWQoKTsKKyAgICAgfSk7CistICAgIHRoaXMuYWRkX2FjdGlvbiAoc2EpOworKyAgICB0 aGlzLmFkZF9hY3Rpb24oc2EpOworIAorLSAgICB0aGlzLmNvcHlfYWN0aW9uID0gbmV3IFNpbXBs ZUFjdGlvbiAoImNvcHkiLCBudWxsKTsKKy0gICAgY29weV9hY3Rpb24uYWN0aXZhdGUuY29ubmVj dCAoKCkgPT4geworLSAgICAgIHRoaXMub25fY29weV9hY3RpdmF0ZWQgKCk7CisrICAgIHRoaXMu Y29weV9hY3Rpb24gPSBuZXcgU2ltcGxlQWN0aW9uKCJjb3B5IiwgbnVsbCk7CisrICAgIGNvcHlf YWN0aW9uLmFjdGl2YXRlLmNvbm5lY3QoKCkgPT4geworKyAgICAgIHRoaXMub25fY29weV9hY3Rp dmF0ZWQoKTsKKyAgICAgfSk7CistICAgIHRoaXMuY29weV9hY3Rpb24uc2V0X2VuYWJsZWQgKGZh bHNlKTsKKy0gICAgdGhpcy5hZGRfYWN0aW9uICh0aGlzLmNvcHlfYWN0aW9uKTsKKysgICAgdGhp cy5jb3B5X2FjdGlvbi5zZXRfZW5hYmxlZChmYWxzZSk7CisrICAgIHRoaXMuYWRkX2FjdGlvbih0 aGlzLmNvcHlfYWN0aW9uKTsKKyAKKy0gICAgc2EgPSBuZXcgU2ltcGxlQWN0aW9uICgic3dpdGNo LWhlYWRlcmJhci1tb2RlIiwgbnVsbCk7CistICAgIHNhLmFjdGl2YXRlLmNvbm5lY3QgKCgpID0+ IHsKKysgICAgc2EgPSBuZXcgU2ltcGxlQWN0aW9uKCJzd2l0Y2gtaGVhZGVyYmFyLW1vZGUiLCBu dWxsKTsKKysgICAgc2EuYWN0aXZhdGUuY29ubmVjdCgoKSA9PiB7CisgICAgICAgdGhpcy5zZXR0 aW5ncy5zaG93X2hlYWRlcmJhciA9ICF0aGlzLnNldHRpbmdzLnNob3dfaGVhZGVyYmFyOworICAg ICB9KTsKKy0gICAgdGhpcy5hZGRfYWN0aW9uIChzYSk7CisrICAgIHRoaXMuYWRkX2FjdGlvbihz YSk7CisgCistICAgIHNhID0gbmV3IFNpbXBsZUFjdGlvbiAoImZ1bGxzY3JlZW4iLCBudWxsKTsK Ky0gICAgc2EuYWN0aXZhdGUuY29ubmVjdCAodGhpcy50b2dnbGVfZnVsbHNjcmVlbik7CistICAg IHRoaXMuYWRkX2FjdGlvbiAoc2EpOworKyAgICBzYSA9IG5ldyBTaW1wbGVBY3Rpb24oImZ1bGxz Y3JlZW4iLCBudWxsKTsKKysgICAgc2EuYWN0aXZhdGUuY29ubmVjdCh0aGlzLnRvZ2dsZV9mdWxs c2NyZWVuKTsKKysgICAgdGhpcy5hZGRfYWN0aW9uKHNhKTsKKyAKKy0gICAgc2EgPSBuZXcgU2lt cGxlQWN0aW9uICgic2VhcmNoIiwgbnVsbCk7CistICAgIHNhLmFjdGl2YXRlLmNvbm5lY3QgKHRo aXMuc2VhcmNoKTsKKy0gICAgdGhpcy5hZGRfYWN0aW9uIChzYSk7CisrICAgIHNhID0gbmV3IFNp bXBsZUFjdGlvbigic2VhcmNoIiwgbnVsbCk7CisrICAgIHNhLmFjdGl2YXRlLmNvbm5lY3QodGhp cy5zZWFyY2gpOworKyAgICB0aGlzLmFkZF9hY3Rpb24oc2EpOworIAorLSAgICBzYSA9IG5ldyBT aW1wbGVBY3Rpb24gKCJ6b29tLWluIiwgbnVsbCk7CistICAgIHNhLmFjdGl2YXRlLmNvbm5lY3Qg KHRoaXMuem9vbV9pbik7CistICAgIHRoaXMuYWRkX2FjdGlvbiAoc2EpOworKyAgICBzYSA9IG5l dyBTaW1wbGVBY3Rpb24oInpvb20taW4iLCBudWxsKTsKKysgICAgc2EuYWN0aXZhdGUuY29ubmVj dCh0aGlzLnpvb21faW4pOworKyAgICB0aGlzLmFkZF9hY3Rpb24oc2EpOworIAorLSAgICBzYSA9 IG5ldyBTaW1wbGVBY3Rpb24gKCJ6b29tLW91dCIsIG51bGwpOworLSAgICBzYS5hY3RpdmF0ZS5j b25uZWN0ICh0aGlzLnpvb21fb3V0KTsKKy0gICAgdGhpcy5hZGRfYWN0aW9uIChzYSk7CisrICAg IHNhID0gbmV3IFNpbXBsZUFjdGlvbigiem9vbS1vdXQiLCBudWxsKTsKKysgICAgc2EuYWN0aXZh dGUuY29ubmVjdCh0aGlzLnpvb21fb3V0KTsKKysgICAgdGhpcy5hZGRfYWN0aW9uKHNhKTsKKyAK Ky0gICAgc2EgPSBuZXcgU2ltcGxlQWN0aW9uICgiem9vbS1kZWZhdWx0IiwgbnVsbCk7CistICAg IHNhLmFjdGl2YXRlLmNvbm5lY3QgKHRoaXMuem9vbV9kZWZhdWx0KTsKKy0gICAgdGhpcy5hZGRf YWN0aW9uIChzYSk7CisrICAgIHNhID0gbmV3IFNpbXBsZUFjdGlvbigiem9vbS1kZWZhdWx0Iiwg bnVsbCk7CisrICAgIHNhLmFjdGl2YXRlLmNvbm5lY3QodGhpcy56b29tX2RlZmF1bHQpOworKyAg ICB0aGlzLmFkZF9hY3Rpb24oc2EpOworIAorLSAgICBzYSA9IG5ldyBTaW1wbGVBY3Rpb24gKCJj bG9zZS10YWIiLCBudWxsKTsKKy0gICAgc2EuYWN0aXZhdGUuY29ubmVjdCAodGhpcy5jbG9zZV9h Y3RpdmVfdGFiKTsKKy0gICAgdGhpcy5hZGRfYWN0aW9uIChzYSk7CisrICAgIHNhID0gbmV3IFNp bXBsZUFjdGlvbigiY2xvc2UtdGFiIiwgbnVsbCk7CisrICAgIHNhLmFjdGl2YXRlLmNvbm5lY3Qo dGhpcy5jbG9zZV9hY3RpdmVfdGFiKTsKKysgICAgdGhpcy5hZGRfYWN0aW9uKHNhKTsKKyAKKyAg ICAgZm9yIChpbnQgaSA9IDE7IGkgPCAxMDsgaSsrKSB7CisgICAgICAgdmFyIHRhYiA9IGk7Cist ICAgICAgc2EgPSBuZXcgU2ltcGxlQWN0aW9uICgic3dpdGNoLXRhYi0lZCIucHJpbnRmICh0YWIp LCBudWxsKTsKKy0gICAgICBzYS5hY3RpdmF0ZS5jb25uZWN0ICgoKSA9PiB7CistICAgICAgICB0 aGlzLmZvY3VzX250aF90YWIgKHRhYik7CisrICAgICAgc2EgPSBuZXcgU2ltcGxlQWN0aW9uKCJz d2l0Y2gtdGFiLSVkIi5wcmludGYodGFiKSwgbnVsbCk7CisrICAgICAgc2EuYWN0aXZhdGUuY29u bmVjdCgoKSA9PiB7CisrICAgICAgICB0aGlzLmZvY3VzX250aF90YWIodGFiKTsKKyAgICAgICB9 KTsKKy0gICAgICB0aGlzLmFkZF9hY3Rpb24gKHNhKTsKKysgICAgICB0aGlzLmFkZF9hY3Rpb24o c2EpOworICAgICB9CisgCistICAgIHNhID0gbmV3IFNpbXBsZUFjdGlvbiAoInN3aXRjaC10YWIt bGFzdCIsIG51bGwpOworLSAgICBzYS5hY3RpdmF0ZS5jb25uZWN0ICgoKSA9PiB7CistICAgICAg dGhpcy5mb2N1c19udGhfdGFiICgtMSk7CisrICAgIHNhID0gbmV3IFNpbXBsZUFjdGlvbigic3dp dGNoLXRhYi1sYXN0IiwgbnVsbCk7CisrICAgIHNhLmFjdGl2YXRlLmNvbm5lY3QoKCkgPT4gewor KyAgICAgIHRoaXMuZm9jdXNfbnRoX3RhYigtMSk7CisgICAgIH0pOworLSAgICB0aGlzLmFkZF9h Y3Rpb24gKHNhKTsKKysgICAgdGhpcy5hZGRfYWN0aW9uKHNhKTsKKyAKKy0gICAgdGhpcy5jb3B5 X2xpbmtfYWN0aW9uID0gbmV3IFNpbXBsZUFjdGlvbiAoImNvcHktbGluayIsIG51bGwpOworLSAg ICB0aGlzLmNvcHlfbGlua19hY3Rpb24uYWN0aXZhdGUuY29ubmVjdCAodGhpcy5vbl9jb3B5X2xp bmspOworLSAgICB0aGlzLmNvcHlfbGlua19hY3Rpb24uc2V0X2VuYWJsZWQgKGZhbHNlKTsKKysg ICAgdGhpcy5jb3B5X2xpbmtfYWN0aW9uID0gbmV3IFNpbXBsZUFjdGlvbigiY29weS1saW5rIiwg bnVsbCk7CisrICAgIHRoaXMuY29weV9saW5rX2FjdGlvbi5hY3RpdmF0ZS5jb25uZWN0KHRoaXMu b25fY29weV9saW5rKTsKKysgICAgdGhpcy5jb3B5X2xpbmtfYWN0aW9uLnNldF9lbmFibGVkKGZh bHNlKTsKKyAKKy0gICAgdGhpcy5vcGVuX2xpbmtfYWN0aW9uID0gbmV3IFNpbXBsZUFjdGlvbiAo Im9wZW4tbGluayIsIG51bGwpOworLSAgICB0aGlzLm9wZW5fbGlua19hY3Rpb24uYWN0aXZhdGUu Y29ubmVjdCAodGhpcy5vbl9vcGVuX2xpbmspOworLSAgICB0aGlzLm9wZW5fbGlua19hY3Rpb24u c2V0X2VuYWJsZWQgKGZhbHNlKTsKKysgICAgdGhpcy5vcGVuX2xpbmtfYWN0aW9uID0gbmV3IFNp bXBsZUFjdGlvbigib3Blbi1saW5rIiwgbnVsbCk7CisrICAgIHRoaXMub3Blbl9saW5rX2FjdGlv bi5hY3RpdmF0ZS5jb25uZWN0KHRoaXMub25fb3Blbl9saW5rKTsKKysgICAgdGhpcy5vcGVuX2xp bmtfYWN0aW9uLnNldF9lbmFibGVkKGZhbHNlKTsKKyAKKy0gICAgdGhpcy5hZGRfYWN0aW9uICh0 aGlzLmNvcHlfbGlua19hY3Rpb24pOworLSAgICB0aGlzLmFkZF9hY3Rpb24gKHRoaXMub3Blbl9s aW5rX2FjdGlvbik7CisrICAgIHRoaXMuYWRkX2FjdGlvbih0aGlzLmNvcHlfbGlua19hY3Rpb24p OworKyAgICB0aGlzLmFkZF9hY3Rpb24odGhpcy5vcGVuX2xpbmtfYWN0aW9uKTsKKyAKKy0gICAg dGhpcy5tb3ZlX3RhYl9sZWZ0X2FjdGlvbiA9IG5ldyBTaW1wbGVBY3Rpb24gKCJtb3ZlLXRhYi1s ZWZ0IiwgbnVsbCk7CistICAgIHRoaXMubW92ZV90YWJfbGVmdF9hY3Rpb24uYWN0aXZhdGUuY29u bmVjdCAodGhpcy5tb3ZlX3RhYl9sZWZ0KTsKKy0gICAgdGhpcy5hZGRfYWN0aW9uICh0aGlzLm1v dmVfdGFiX2xlZnRfYWN0aW9uKTsKKysgICAgdGhpcy5tb3ZlX3RhYl9sZWZ0X2FjdGlvbiA9IG5l dyBTaW1wbGVBY3Rpb24oIm1vdmUtdGFiLWxlZnQiLCBudWxsKTsKKysgICAgdGhpcy5tb3ZlX3Rh Yl9sZWZ0X2FjdGlvbi5hY3RpdmF0ZS5jb25uZWN0KHRoaXMubW92ZV90YWJfbGVmdCk7CisrICAg IHRoaXMuYWRkX2FjdGlvbih0aGlzLm1vdmVfdGFiX2xlZnRfYWN0aW9uKTsKKyAKKy0gICAgdGhp cy5tb3ZlX3RhYl9yaWdodF9hY3Rpb24gPSBuZXcgU2ltcGxlQWN0aW9uICgibW92ZS10YWItcmln aHQiLCBudWxsKTsKKy0gICAgdGhpcy5tb3ZlX3RhYl9yaWdodF9hY3Rpb24uYWN0aXZhdGUuY29u bmVjdCAodGhpcy5tb3ZlX3RhYl9yaWdodCk7CistICAgIHRoaXMuYWRkX2FjdGlvbiAodGhpcy5t b3ZlX3RhYl9yaWdodF9hY3Rpb24pOworKyAgICB0aGlzLm1vdmVfdGFiX3JpZ2h0X2FjdGlvbiA9 IG5ldyBTaW1wbGVBY3Rpb24oIm1vdmUtdGFiLXJpZ2h0IiwgbnVsbCk7CisrICAgIHRoaXMubW92 ZV90YWJfcmlnaHRfYWN0aW9uLmFjdGl2YXRlLmNvbm5lY3QodGhpcy5tb3ZlX3RhYl9yaWdodCk7 CisrICAgIHRoaXMuYWRkX2FjdGlvbih0aGlzLm1vdmVfdGFiX3JpZ2h0X2FjdGlvbik7CisgCist ICAgIHRoaXMuY2xvc2Vfc3BlY2lmaWNfdGFiX2FjdGlvbiA9IG5ldyBTaW1wbGVBY3Rpb24gKCJj bG9zZS1zcGVjaWZpYy10YWIiLCBudWxsKTsKKy0gICAgdGhpcy5jbG9zZV9zcGVjaWZpY190YWJf YWN0aW9uLmFjdGl2YXRlLmNvbm5lY3QgKHRoaXMuY2xvc2Vfc3BlY2lmaWNfdGFiKTsKKy0gICAg dGhpcy5hZGRfYWN0aW9uICh0aGlzLmNsb3NlX3NwZWNpZmljX3RhYl9hY3Rpb24pOworKyAgICB0 aGlzLmNsb3NlX3NwZWNpZmljX3RhYl9hY3Rpb24gPSBuZXcgU2ltcGxlQWN0aW9uKCJjbG9zZS1z cGVjaWZpYy10YWIiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG51bGwpOworKyAgICB0aGlzLmNsb3NlX3NwZWNpZmljX3RhYl9hY3Rpb24u YWN0aXZhdGUuY29ubmVjdCh0aGlzLmNsb3NlX3NwZWNpZmljX3RhYik7CisrICAgIHRoaXMuYWRk X2FjdGlvbih0aGlzLmNsb3NlX3NwZWNpZmljX3RhYl9hY3Rpb24pOworIAorLSAgICB0aGlzLmRl dGF0Y2hfdGFiX2FjdGlvbiA9IG5ldyBTaW1wbGVBY3Rpb24gKCJkZXRhdGNoLXRhYiIsIG51bGwp OworLSAgICB0aGlzLmRldGF0Y2hfdGFiX2FjdGlvbi5hY3RpdmF0ZS5jb25uZWN0ICh0aGlzLmRl dGF0Y2hfdGFiKTsKKy0gICAgdGhpcy5hZGRfYWN0aW9uICh0aGlzLmRldGF0Y2hfdGFiX2FjdGlv bik7CisrICAgIHRoaXMuZGV0YXRjaF90YWJfYWN0aW9uID0gbmV3IFNpbXBsZUFjdGlvbigiZGV0 YXRjaC10YWIiLCBudWxsKTsKKysgICAgdGhpcy5kZXRhdGNoX3RhYl9hY3Rpb24uYWN0aXZhdGUu Y29ubmVjdCh0aGlzLmRldGF0Y2hfdGFiKTsKKysgICAgdGhpcy5hZGRfYWN0aW9uKHRoaXMuZGV0 YXRjaF90YWJfYWN0aW9uKTsKKyAKKy0gICAgdGhpcy5yZW5hbWVfdGFiX2FjdGlvbiA9IG5ldyBT aW1wbGVBY3Rpb24gKCJyZW5hbWUtdGFiIiwgbnVsbCk7CistICAgIHRoaXMucmVuYW1lX3RhYl9h Y3Rpb24uYWN0aXZhdGUuY29ubmVjdCAodGhpcy5yZW5hbWVfdGFiKTsKKy0gICAgdGhpcy5hZGRf YWN0aW9uICh0aGlzLnJlbmFtZV90YWJfYWN0aW9uKTsKKysgICAgdGhpcy5yZW5hbWVfdGFiX2Fj dGlvbiA9IG5ldyBTaW1wbGVBY3Rpb24oInJlbmFtZS10YWIiLCBudWxsKTsKKysgICAgdGhpcy5y ZW5hbWVfdGFiX2FjdGlvbi5hY3RpdmF0ZS5jb25uZWN0KHRoaXMucmVuYW1lX3RhYik7CisrICAg IHRoaXMuYWRkX2FjdGlvbih0aGlzLnJlbmFtZV90YWJfYWN0aW9uKTsKKyAgIH0KKyAKKy0gIHBy aXZhdGUgdm9pZCByZW5hbWVfdGFiICgpIHsKKysgIHByaXZhdGUgdm9pZCByZW5hbWVfdGFiKCkg eworICAgICAvLyBJZiB0aGlzIHdhcyBhIHN0cm9uZyByZWYsIHRoZSBkaWFsb2cgd291bGQga2Vl cCB0aGUgdGVybWluYWwgYWxpdmUgYWZ0ZXIKKyAgICAgLy8gaXQgZXhpdGVkIHVudGlsIHRoZSB1 c2VyIGZpcmVkIGEgcmVzcG9uc2UuIFdlIGRvbid0IHdhbnQgdGhhdC4gSW5zdGVhZCwKKyAgICAg Ly8gd2UganVzdCBuZWVkIHRvIGNoZWNrIHdoZW4gd2UgZ2V0IHRoZSByZXNwb25zZSBpZiB0aGUg cGFnZSBzdGlsbCBleGlzdHMuCisgICAgIHdlYWsgQWR3LlRhYlBhZ2U/IHRhcmdldCA9CisgICAg ICAgdGhpcy50YWJfbWVudV90YXJnZXQgPz8gdGhpcy50YWJfdmlldy5zZWxlY3RlZF9wYWdlOwor IAorLSAgICBpZiAodGFyZ2V0ID09IG51bGwpIHJldHVybjsKKysgICAgaWYgKHRhcmdldCA9PSBu dWxsKSB7IHJldHVybjsgfQorIAorLSAgICB2YXIgZCA9IG5ldyBBZHcuQWxlcnREaWFsb2cgKF8o IlJlbmFtZSBUYWIiKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJTZXQg YSBjdXN0b20gdGl0bGUgZm9yIHRoaXMgdGFiIikpOworKyAgICB2YXIgZCA9IG5ldyBBZHcuQWxl cnREaWFsb2coXygiUmVuYW1lIFRhYiIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXygiU2V0IGEgY3VzdG9tIHRpdGxlIGZvciB0aGlzIHRhYiIpKTsKKyAKKy0gICAgdmFyIGVu dHJ5ID0gbmV3IEd0ay5FbnRyeSAoKSB7CisrICAgIHZhciBlbnRyeSA9IG5ldyBHdGsuRW50cnko KSB7CisgICAgICAgcGxhY2Vob2xkZXJfdGV4dCA9IF8oIkVudGVyIGEgY3VzdG9tIHRhYiB0aXRs ZSIpLAorICAgICAgIHRleHQgPSAodGFyZ2V0LmNoaWxkIGFzIFRlcm1pbmFsVGFiKT8udGl0bGVf b3ZlcnJpZGUgPz8gIiIKKyAgICAgfTsKKyAKKyAgICAgZC5leHRyYV9jaGlsZCA9IGVudHJ5Owor IAorLSAgICBkLmFkZF9yZXNwb25zZSAoImNhbmNlbCIsIF8oIkNhbmNlbCIpKTsKKy0gICAgZC5h ZGRfcmVzcG9uc2UgKCJyZXNldCIsIF8oIlJlc2V0IFRpdGxlIikpOworLSAgICBkLmFkZF9yZXNw b25zZSAoIm92ZXJyaWRlIiwgXygiU2V0IFRpdGxlIikpOworKyAgICBkLmFkZF9yZXNwb25zZSgi Y2FuY2VsIiwgXygiQ2FuY2VsIikpOworKyAgICBkLmFkZF9yZXNwb25zZSgicmVzZXQiLCBfKCJS ZXNldCBUaXRsZSIpKTsKKysgICAgZC5hZGRfcmVzcG9uc2UoIm92ZXJyaWRlIiwgXygiU2V0IFRp dGxlIikpOworIAorLSAgICBkLnNldF9yZXNwb25zZV9hcHBlYXJhbmNlICgiY2FuY2VsIiwgQWR3 LlJlc3BvbnNlQXBwZWFyYW5jZS5ERUZBVUxUKTsKKy0gICAgZC5zZXRfcmVzcG9uc2VfYXBwZWFy YW5jZSAoInJlc2V0IiwgQWR3LlJlc3BvbnNlQXBwZWFyYW5jZS5ERVNUUlVDVElWRSk7CistICAg IGQuc2V0X3Jlc3BvbnNlX2FwcGVhcmFuY2UgKCJvdmVycmlkZSIsIEFkdy5SZXNwb25zZUFwcGVh cmFuY2UuU1VHR0VTVEVEKTsKKysgICAgZC5zZXRfcmVzcG9uc2VfYXBwZWFyYW5jZSgiY2FuY2Vs IiwgQWR3LlJlc3BvbnNlQXBwZWFyYW5jZS5ERUZBVUxUKTsKKysgICAgZC5zZXRfcmVzcG9uc2Vf YXBwZWFyYW5jZSgicmVzZXQiLCBBZHcuUmVzcG9uc2VBcHBlYXJhbmNlLkRFU1RSVUNUSVZFKTsK KysgICAgZC5zZXRfcmVzcG9uc2VfYXBwZWFyYW5jZSgib3ZlcnJpZGUiLCBBZHcuUmVzcG9uc2VB cHBlYXJhbmNlLlNVR0dFU1RFRCk7CisgCistICAgIGQuc2V0X3Jlc3BvbnNlX2VuYWJsZWQgKCJv dmVycmlkZSIsIGVudHJ5LnRleHQuc3RyaXAgKCkgIT0gIiIpOworLSAgICBkLnNldF9kZWZhdWx0 X3Jlc3BvbnNlICgib3ZlcnJpZGUiKTsKKy0gICAgZC5zZXRfY2xvc2VfcmVzcG9uc2UgKCJjYW5j ZWwiKTsKKysgICAgZC5zZXRfcmVzcG9uc2VfZW5hYmxlZCgib3ZlcnJpZGUiLCBlbnRyeS50ZXh0 LnN0cmlwKCkgIT0gIiIpOworKyAgICBkLnNldF9kZWZhdWx0X3Jlc3BvbnNlKCJvdmVycmlkZSIp OworKyAgICBkLnNldF9jbG9zZV9yZXNwb25zZSgiY2FuY2VsIik7CisgCistICAgIGVudHJ5LmNo YW5nZWQuY29ubmVjdCAoKF9lbnRyeSkgPT4geworLSAgICAgIGQuc2V0X3Jlc3BvbnNlX2VuYWJs ZWQgKCJvdmVycmlkZSIsIF9lbnRyeS50ZXh0LnN0cmlwICgpICE9ICIiKTsKKysgICAgZW50cnku Y2hhbmdlZC5jb25uZWN0KChfZW50cnkpID0+IHsKKysgICAgICBkLnNldF9yZXNwb25zZV9lbmFi bGVkKCJvdmVycmlkZSIsIF9lbnRyeS50ZXh0LnN0cmlwKCkgIT0gIiIpOworICAgICB9KTsKKyAK Ky0gICAgZW50cnkuYWN0aXZhdGUuY29ubmVjdCAoKCkgPT4geworLSAgICAgIGlmIChkLmdldF9y ZXNwb25zZV9lbmFibGVkICgib3ZlcnJpZGUiKSkgeworLSAgICAgICAgZC5yZXNwb25zZS5lbWl0 ICgib3ZlcnJpZGUiKTsKKy0gICAgICAgIGQuY2xvc2UgKCk7CisrICAgIGVudHJ5LmFjdGl2YXRl LmNvbm5lY3QoKCkgPT4geworKyAgICAgIGlmIChkLmdldF9yZXNwb25zZV9lbmFibGVkKCJvdmVy cmlkZSIpKSB7CisrICAgICAgICBkLnJlc3BvbnNlLmVtaXQoIm92ZXJyaWRlIik7CisrICAgICAg ICBkLmNsb3NlKCk7CisgICAgICAgfQorICAgICB9KTsKKyAKKy0gICAgZC5yZXNwb25zZS5jb25u ZWN0ICgocmVzcG9uc2UpID0+IHsKKysgICAgZC5yZXNwb25zZS5jb25uZWN0KChyZXNwb25zZSkg PT4geworICAgICAgIGlmICh0YXJnZXQgaXMgQWR3LlRhYlBhZ2UpIHsKKyAgICAgICAgIGlmIChy ZXNwb25zZSA9PSAicmVzZXQiKSB7CistICAgICAgICAgICh0YXJnZXQuY2hpbGQgYXMgVGVybWlu YWxUYWIpPy5vdmVycmlkZV90aXRsZSAobnVsbCk7CistICAgICAgICB9CistICAgICAgICBlbHNl IGlmIChyZXNwb25zZSA9PSAib3ZlcnJpZGUiICYmIGVudHJ5LnRleHQgIT0gIiIpIHsKKy0gICAg ICAgICAgKHRhcmdldC5jaGlsZCBhcyBUZXJtaW5hbFRhYik/Lm92ZXJyaWRlX3RpdGxlIChlbnRy eS50ZXh0KTsKKysgICAgICAgICAgKHRhcmdldC5jaGlsZCBhcyBUZXJtaW5hbFRhYik/Lm92ZXJy aWRlX3RpdGxlKG51bGwpOworKyAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZSA9PSAib3ZlcnJp ZGUiICYmIGVudHJ5LnRleHQgIT0gIiIpIHsKKysgICAgICAgICAgKHRhcmdldC5jaGlsZCBhcyBU ZXJtaW5hbFRhYik/Lm92ZXJyaWRlX3RpdGxlKGVudHJ5LnRleHQpOworICAgICAgICAgfQorICAg ICAgIH0KKyAKKy0gICAgICBkLmRlc3Ryb3kgKCk7CisrICAgICAgZC5kZXN0cm95KCk7CisgICAg ICAgZW50cnkgPSBudWxsOworICAgICAgIHRhcmdldCA9IG51bGw7CisgICAgICAgZCA9IG51bGw7 CisgICAgIH0pOworIAorLSAgICBkLnByZXNlbnQgKHRoaXMpOworKyAgICBkLnByZXNlbnQodGhp cyk7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgbW92ZV90YWJfbGVmdCAoKSB7CisrICBwcml2 YXRlIHZvaWQgbW92ZV90YWJfbGVmdCgpIHsKKyAgICAgdmFyIHRhcmdldCA9IHRoaXMudGFiX21l bnVfdGFyZ2V0ID8/IHRoaXMudGFiX3ZpZXcuc2VsZWN0ZWRfcGFnZTsKKy0gICAgaWYgKHRhcmdl dCA9PSBudWxsKSByZXR1cm47CisrICAgIGlmICh0YXJnZXQgPT0gbnVsbCkgeyByZXR1cm47IH0K KyAKKy0gICAgdmFyIHBvcyA9IHRoaXMudGFiX3ZpZXcuZ2V0X3BhZ2VfcG9zaXRpb24gKHRhcmdl dCk7CistICAgIGlmIChwb3MgPT0gMCkgcmV0dXJuOworLSAgICB0aGlzLnRhYl92aWV3LnJlb3Jk ZXJfcGFnZSAodGFyZ2V0LCBwb3MgLSAxKTsKKysgICAgdmFyIHBvcyA9IHRoaXMudGFiX3ZpZXcu Z2V0X3BhZ2VfcG9zaXRpb24odGFyZ2V0KTsKKysgICAgaWYgKHBvcyA9PSAwKSB7IHJldHVybjsg fQorKyAgICB0aGlzLnRhYl92aWV3LnJlb3JkZXJfcGFnZSh0YXJnZXQsIHBvcyAtIDEpOworICAg fQorIAorLSAgcHJpdmF0ZSB2b2lkIG1vdmVfdGFiX3JpZ2h0ICgpIHsKKysgIHByaXZhdGUgdm9p ZCBtb3ZlX3RhYl9yaWdodCgpIHsKKyAgICAgdmFyIHRhcmdldCA9IHRoaXMudGFiX21lbnVfdGFy Z2V0ID8/IHRoaXMudGFiX3ZpZXcuc2VsZWN0ZWRfcGFnZTsKKy0gICAgaWYgKHRhcmdldCA9PSBu dWxsKSByZXR1cm47CisrICAgIGlmICh0YXJnZXQgPT0gbnVsbCkgeyByZXR1cm47IH0KKyAKKy0g ICAgdmFyIHBvcyA9IHRoaXMudGFiX3ZpZXcuZ2V0X3BhZ2VfcG9zaXRpb24gKHRhcmdldCk7Cist ICAgIGlmIChwb3MgPj0gdGhpcy50YWJfdmlldy5uX3BhZ2VzIC0gMSkgcmV0dXJuOworLSAgICB0 aGlzLnRhYl92aWV3LnJlb3JkZXJfcGFnZSAodGFyZ2V0LCBwb3MgKyAxKTsKKysgICAgdmFyIHBv cyA9IHRoaXMudGFiX3ZpZXcuZ2V0X3BhZ2VfcG9zaXRpb24odGFyZ2V0KTsKKysgICAgaWYgKHBv cyA+PSB0aGlzLnRhYl92aWV3Lm5fcGFnZXMgLSAxKSB7IHJldHVybjsgfQorKyAgICB0aGlzLnRh Yl92aWV3LnJlb3JkZXJfcGFnZSh0YXJnZXQsIHBvcyArIDEpOworICAgfQorIAorLSAgcHJpdmF0 ZSB2b2lkIGNsb3NlX3NwZWNpZmljX3RhYiAoKSB7CisrICBwcml2YXRlIHZvaWQgY2xvc2Vfc3Bl Y2lmaWNfdGFiKCkgeworICAgICB2YXIgdGFyZ2V0ID0gdGhpcy50YWJfbWVudV90YXJnZXQgPz8g dGhpcy50YWJfdmlldy5zZWxlY3RlZF9wYWdlOworLSAgICBpZiAodGFyZ2V0ID09IG51bGwpIHJl dHVybjsKKysgICAgaWYgKHRhcmdldCA9PSBudWxsKSB7IHJldHVybjsgfQorIAorLSAgICB0aGlz LnRhYl92aWV3LmNsb3NlX3BhZ2UgKHRhcmdldCk7CisrICAgIHRoaXMudGFiX3ZpZXcuY2xvc2Vf cGFnZSh0YXJnZXQpOworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIGRldGF0Y2hfdGFiICgpIHsK KysgIHByaXZhdGUgdm9pZCBkZXRhdGNoX3RhYigpIHsKKyAgICAgdmFyIHRhcmdldCA9IHRoaXMu dGFiX21lbnVfdGFyZ2V0ID8/IHRoaXMudGFiX3ZpZXcuc2VsZWN0ZWRfcGFnZTsKKy0gICAgaWYg KHRhcmdldCA9PSBudWxsKSByZXR1cm47CisrICAgIGlmICh0YXJnZXQgPT0gbnVsbCkgeyByZXR1 cm47IH0KKyAKKy0gICAgdmFyIHcgPSBuZXcgV2luZG93ICh0aGlzLmFwcGxpY2F0aW9uLCBudWxs LCBudWxsLCB0cnVlKTsKKy0gICAgdGhpcy50YWJfdmlldy50cmFuc2Zlcl9wYWdlICh0YXJnZXQs IHcudGFiX3ZpZXcsIDApOworLSAgICB3LnByZXNlbnQgKCk7CisrICAgIHZhciB3ID0gbmV3IFdp bmRvdyh0aGlzLmFwcGxpY2F0aW9uLCBudWxsLCBudWxsLCB0cnVlKTsKKysgICAgdGhpcy50YWJf dmlldy50cmFuc2Zlcl9wYWdlKHRhcmdldCwgdy50YWJfdmlldywgMCk7CisrICAgIHcucHJlc2Vu dCgpOworICAgfQorIAorLSAgcHVibGljIHZvaWQgc2VhcmNoICgpIHsKKy0gICAgKHRoaXMudGFi X3ZpZXcuc2VsZWN0ZWRfcGFnZT8uY2hpbGQgYXMgVGVybWluYWxUYWIpPy5zZWFyY2ggKCk7Cisr ICBwdWJsaWMgdm9pZCBzZWFyY2goKSB7CisrICAgICh0aGlzLnRhYl92aWV3LnNlbGVjdGVkX3Bh Z2U/LmNoaWxkIGFzIFRlcm1pbmFsVGFiKT8uc2VhcmNoKCk7CisgICB9CisgCistICBwdWJsaWMg dm9pZCB6b29tX2luICgpIHsKKy0gICAgdGhpcy5hY3RpdmVfdGVybWluYWw/Lnpvb21faW4gKCk7 CisrICBwdWJsaWMgdm9pZCB6b29tX2luKCkgeworKyAgICB0aGlzLmFjdGl2ZV90ZXJtaW5hbD8u em9vbV9pbigpOworICAgfQorIAorLSAgcHVibGljIHZvaWQgem9vbV9vdXQgKCkgeworLSAgICB0 aGlzLmFjdGl2ZV90ZXJtaW5hbD8uem9vbV9vdXQgKCk7CisrICBwdWJsaWMgdm9pZCB6b29tX291 dCgpIHsKKysgICAgdGhpcy5hY3RpdmVfdGVybWluYWw/Lnpvb21fb3V0KCk7CisgICB9CisgCist ICBwdWJsaWMgdm9pZCB6b29tX2RlZmF1bHQgKCkgeworLSAgICB0aGlzLmFjdGl2ZV90ZXJtaW5h bD8uem9vbV9kZWZhdWx0ICgpOworKyAgcHVibGljIHZvaWQgem9vbV9kZWZhdWx0KCkgeworKyAg ICB0aGlzLmFjdGl2ZV90ZXJtaW5hbD8uem9vbV9kZWZhdWx0KCk7CisgICB9CisgCistICBwdWJs aWMgdm9pZCBjbG9zZV9hY3RpdmVfdGFiICgpIHsKKy0gICAgdGhpcy50YWJfdmlldy5jbG9zZV9w YWdlICh0aGlzLnRhYl92aWV3LnNlbGVjdGVkX3BhZ2UpOworKyAgcHVibGljIHZvaWQgY2xvc2Vf YWN0aXZlX3RhYigpIHsKKysgICAgdGhpcy50YWJfdmlldy5jbG9zZV9wYWdlKHRoaXMudGFiX3Zp ZXcuc2VsZWN0ZWRfcGFnZSk7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgb25fb3Blbl9saW5r ICgpIHsKKy0gICAgaWYgKHRoaXMubGluayA9PSBudWxsKSByZXR1cm47CisrICBwcml2YXRlIHZv aWQgb25fb3Blbl9saW5rKCkgeworKyAgICBpZiAodGhpcy5saW5rID09IG51bGwpIHsgcmV0dXJu OyB9CisgCisgICAgIHRyeSB7CistICAgICAgR0xpYi5BcHBJbmZvLmxhdW5jaF9kZWZhdWx0X2Zv cl91cmkgKHRoaXMubGluaywgbnVsbCk7CistICAgIH0KKy0gICAgY2F0Y2ggKEVycm9yIGUpIHsK Ky0gICAgICB3YXJuaW5nICgiRmFpbGVkIHRvIG9wZW4gbGluayAlcyIsIGUubWVzc2FnZSk7Cisr ICAgICAgR0xpYi5BcHBJbmZvLmxhdW5jaF9kZWZhdWx0X2Zvcl91cmkodGhpcy5saW5rLCBudWxs KTsKKysgICAgfSBjYXRjaCAoRXJyb3IgZSkgeworKyAgICAgIHdhcm5pbmcoIkZhaWxlZCB0byBv cGVuIGxpbmsgJXMiLCBlLm1lc3NhZ2UpOworICAgICB9CisgICB9CisgCistICBwcml2YXRlIHZv aWQgb25fY29weV9saW5rICgpIHsKKy0gICAgaWYgKHRoaXMubGluayA9PSBudWxsKSByZXR1cm47 CisrICBwcml2YXRlIHZvaWQgb25fY29weV9saW5rKCkgeworKyAgICBpZiAodGhpcy5saW5rID09 IG51bGwpIHsgcmV0dXJuOyB9CisgCistICAgIEdkay5EaXNwbGF5LmdldF9kZWZhdWx0ICgpLmdl dF9jbGlwYm9hcmQgKCkuc2V0X3RleHQgKHRoaXMubGluayk7CisrICAgIEdkay5EaXNwbGF5Lmdl dF9kZWZhdWx0KCkuZ2V0X2NsaXBib2FyZCgpLnNldF90ZXh0KHRoaXMubGluayk7CisgICB9Cisg CistICBwdWJsaWMgdm9pZCBvbl9uZXdfdGFiICgpIHsKKysgIHB1YmxpYyB2b2lkIG9uX25ld190 YWIoKSB7CisgICAgIHN0cmluZz8gY3dkID0gVGVybWluYWwKKy0gICAgICAuZ2V0X2N1cnJlbnRf d29ya2luZ19kaXJlY3RvcnlfZm9yX25ld19zZXNzaW9uICh0aGlzLmFjdGl2ZV90ZXJtaW5hbCk7 CisrICAgICAgLmdldF9jdXJyZW50X3dvcmtpbmdfZGlyZWN0b3J5X2Zvcl9uZXdfc2Vzc2lvbih0 aGlzLmFjdGl2ZV90ZXJtaW5hbCk7CisgCistICAgIHRoaXMubmV3X3RhYiAobnVsbCwgY3dkKTsK KysgICAgdGhpcy5uZXdfdGFiKG51bGwsIGN3ZCk7CisgICB9CisgCistICBwdWJsaWMgdm9pZCBu ZXdfdGFiIChzdHJpbmc/IGNvbW1hbmQsIHN0cmluZz8gY3dkKSB7CistICAgIHZhciB0YWIgPSBu ZXcgVGVybWluYWxUYWIgKHRoaXMsIHRoaXMudGFiX3ZpZXcubl9wYWdlcyArIDEsIGNvbW1hbmQs IGN3ZCk7CistICAgIHZhciBwYWdlID0gdGhpcy50YWJfdmlldy5hZGRfcGFnZSAodGFiLCBudWxs KTsKKysgIHB1YmxpYyB2b2lkIG5ld190YWIoc3RyaW5nPyBjb21tYW5kLCBzdHJpbmc/IGN3ZCkg eworKyAgICB2YXIgdGFiID0gbmV3IFRlcm1pbmFsVGFiKHRoaXMsIHRoaXMudGFiX3ZpZXcubl9w YWdlcyArIDEsIGNvbW1hbmQsIGN3ZCk7CisrICAgIHZhciBwYWdlID0gdGhpcy50YWJfdmlldy5h ZGRfcGFnZSh0YWIsIG51bGwpOworIAorLSAgICB0YWIudGVybWluYWwuYmluZF9wcm9wZXJ0eSAo Im5lZWRzLWF0dGVudGlvbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdl LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWRzLWF0dGVudGlvbiIsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGliLkJpbmRpbmdGbGFncy5TWU5DX0NS RUFURSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKKysgICAgdGFiLnRlcm1pbmFsLmJpbmRfcHJv cGVydHkoIm5lZWRzLWF0dGVudGlvbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhZ2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWVkcy1hdHRlbnRpb24i LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGliLkJpbmRpbmdGbGFncy5TWU5D X0NSRUFURSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCk7CisgCistICAgIHRhYi5iaW5kX3Byb3BlcnR5 ICgidGl0bGUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgcGFnZSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICJ0aXRsZSIsCistICAgICAgICAgICAgICAgICAgICAgICBHTGliLkJpbmRpbmdG bGFncy5TWU5DX0NSRUFURSwKKy0gICAgICAgICAgICAgICAgICAgICAgIG51bGwsCistICAgICAg ICAgICAgICAgICAgICAgICBudWxsKTsKKysgICAgdGFiLmJpbmRfcHJvcGVydHkoInRpdGxlIiwK KysgICAgICAgICAgICAgICAgICAgICAgcGFnZSwKKysgICAgICAgICAgICAgICAgICAgICAgInRp dGxlIiwKKysgICAgICAgICAgICAgICAgICAgICAgR0xpYi5CaW5kaW5nRmxhZ3MuU1lOQ19DUkVB VEUsCisrICAgICAgICAgICAgICAgICAgICAgIG51bGwsCisrICAgICAgICAgICAgICAgICAgICAg IG51bGwpOworIAorLSAgICB0YWIuY2xvc2VfcmVxdWVzdC5jb25uZWN0ICgoX3RhYikgPT4gewor LSAgICAgIHZhciBfcGFnZSA9IHRoaXMudGFiX3ZpZXcuZ2V0X3BhZ2UgKF90YWIpOworKyAgICB0 YWIuY2xvc2VfcmVxdWVzdC5jb25uZWN0KChfdGFiKSA9PiB7CisrICAgICAgdmFyIF9wYWdlID0g dGhpcy50YWJfdmlldy5nZXRfcGFnZShfdGFiKTsKKyAgICAgICBpZiAoX3BhZ2UgIT0gbnVsbCkg eworLSAgICAgICAgdGhpcy50YWJfdmlldy5jbG9zZV9wYWdlIChfcGFnZSk7CisrICAgICAgICB0 aGlzLnRhYl92aWV3LmNsb3NlX3BhZ2UoX3BhZ2UpOworICAgICAgIH0KKyAgICAgfSk7CisgCist ICAgIHRoaXMudGFiX3ZpZXcuc2V0X3NlbGVjdGVkX3BhZ2UgKHBhZ2UpOworKyAgICB0aGlzLnRh Yl92aWV3LnNldF9zZWxlY3RlZF9wYWdlKHBhZ2UpOworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lk IG9uX3Bhc3RlX2FjdGl2YXRlZCAoKSB7CisrICBwcml2YXRlIHZvaWQgb25fcGFzdGVfYWN0aXZh dGVkKCkgeworICAgICAodGhpcy50YWJfdmlldy5zZWxlY3RlZF9wYWdlPy5jaGlsZCBhcyBUZXJt aW5hbFRhYik/LnRlcm1pbmFsCistICAgICAgLmRvX3Bhc3RlX2NsaXBib2FyZCAoKTsKKysgICAg LmRvX3Bhc3RlX2NsaXBib2FyZCgpOworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIG9uX2NvcHlf YWN0aXZhdGVkICgpIHsKKysgIHByaXZhdGUgdm9pZCBvbl9jb3B5X2FjdGl2YXRlZCgpIHsKKyAg ICAgKHRoaXMudGFiX3ZpZXcuc2VsZWN0ZWRfcGFnZT8uY2hpbGQgYXMgVGVybWluYWxUYWIpPy50 ZXJtaW5hbAorLSAgICAgIC5kb19jb3B5X2NsaXBib2FyZCAoKTsKKysgICAgLmRvX2NvcHlfY2xp cGJvYXJkKCk7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgb25fdGFiX3NlbGVjdGVkICgpIHsK KysgIHByaXZhdGUgdm9pZCBvbl90YWJfc2VsZWN0ZWQoKSB7CisgICAgIGlmICh0aGlzLmFjdGl2 ZV90ZXJtaW5hbF90YWIgIT0gbnVsbCkgeworICAgICAgIGZvcmVhY2ggKHVub3duZWQgdWxvbmcg aWQgaW4gdGhpcy5hY3RpdmVfdGVybWluYWxfdGFiX3NpZ25hbF9oYW5kbGVycykgeworLSAgICAg ICAgdGhpcy5hY3RpdmVfdGVybWluYWxfdGFiLmRpc2Nvbm5lY3QgKGlkKTsKKysgICAgICAgIHRo aXMuYWN0aXZlX3Rlcm1pbmFsX3RhYi5kaXNjb25uZWN0KGlkKTsKKyAgICAgICB9CistICAgICAg dGhpcy5hY3RpdmVfdGVybWluYWxfdGFiX3NpZ25hbF9oYW5kbGVycy5yZW1vdmVfcmFuZ2UgKAor KyAgICAgIHRoaXMuYWN0aXZlX3Rlcm1pbmFsX3RhYl9zaWduYWxfaGFuZGxlcnMucmVtb3ZlX3Jh bmdlKAorICAgICAgICAgMCwKKyAgICAgICAgIHRoaXMuYWN0aXZlX3Rlcm1pbmFsX3RhYl9zaWdu YWxfaGFuZGxlcnMubGVuZ3RoCisgICAgICAgKTsKKyAgICAgfQorICAgICBpZiAodGhpcy5hY3Rp dmVfdGVybWluYWwgIT0gbnVsbCkgeworICAgICAgIGZvcmVhY2ggKHVub3duZWQgdWxvbmcgaWQg aW4gdGhpcy5hY3RpdmVfdGVybWluYWxfc2lnbmFsX2hhbmRsZXJzKSB7CistICAgICAgICB0aGlz LmFjdGl2ZV90ZXJtaW5hbC5kaXNjb25uZWN0IChpZCk7CisrICAgICAgICB0aGlzLmFjdGl2ZV90 ZXJtaW5hbC5kaXNjb25uZWN0KGlkKTsKKyAgICAgICB9CistICAgICAgdGhpcy5hY3RpdmVfdGVy bWluYWxfc2lnbmFsX2hhbmRsZXJzLnJlbW92ZV9yYW5nZSAoCisrICAgICAgdGhpcy5hY3RpdmVf dGVybWluYWxfc2lnbmFsX2hhbmRsZXJzLnJlbW92ZV9yYW5nZSgKKyAgICAgICAgIDAsCisgICAg ICAgICB0aGlzLmFjdGl2ZV90ZXJtaW5hbF9zaWduYWxfaGFuZGxlcnMubGVuZ3RoCisgICAgICAg KTsKKyAgICAgfQorLSAgICB0aGlzLmZyZWV6ZV9ub3RpZnkgKCk7CistICAgIHRoaXMuYWN0aXZl X3Rlcm1pbmFsX3RhYiA9IHRoaXMudGFiX3ZpZXcuc2VsZWN0ZWRfcGFnZT8uY2hpbGQgYXMgVGVy bWluYWxUYWI7CisrICAgIHZhciBvdXRnb2luZ19jd2QgPSB0aGlzLmFjdGl2ZV90ZXJtaW5hbD8u Z2V0X2N1cnJlbnRfd29ya2luZ19kaXJlY3RvcnkoKTsKKysgICAgaWYgKG91dGdvaW5nX2N3ZCAh PSBudWxsKSB7CisrICAgICAgdGhpcy5sYXN0X2tub3duX2N3ZCA9IG91dGdvaW5nX2N3ZDsKKysg ICAgfQorKworKyAgICB0aGlzLmZyZWV6ZV9ub3RpZnkoKTsKKysgICAgdGhpcy5hY3RpdmVfdGVy bWluYWxfdGFiID0KKysgICAgICB0aGlzLnRhYl92aWV3LnNlbGVjdGVkX3BhZ2U/LmNoaWxkIGFz IFRlcm1pbmFsVGFiOworICAgICB0aGlzLmFjdGl2ZV90ZXJtaW5hbCA9IHRoaXMuYWN0aXZlX3Rl cm1pbmFsX3RhYj8udGVybWluYWw7CistICAgIHRoaXMuYWN0aXZlX3Rlcm1pbmFsPy5ncmFiX2Zv Y3VzICgpOworLSAgICB0aGlzLnRoYXdfbm90aWZ5ICgpOworKyAgICB0aGlzLmFjdGl2ZV90ZXJt aW5hbD8uZ3JhYl9mb2N1cygpOworKyAgICB0aGlzLnRoYXdfbm90aWZ5KCk7CisgICB9CisgCist ICBwcml2YXRlIHZvaWQgb25fYWN0aXZlX3Rlcm1pbmFsX3RhYl9jaGFuZ2VkICgpIHsKKysgIHBy aXZhdGUgdm9pZCBvbl9hY3RpdmVfdGVybWluYWxfdGFiX2NoYW5nZWQoKSB7CisgICAgIGlmICh0 aGlzLmFjdGl2ZV90ZXJtaW5hbF90YWIgPT0gbnVsbCkgeworICAgICAgIHJldHVybjsKKyAgICAg fQorIAorICAgICB1bG9uZyBoYW5kbGVyOworIAorLSAgICB0aGlzLm9uX2FjdGl2ZV90ZXJtaW5h bF9zZWxlY3Rpb25fY2hhbmdlZCAoKTsKKysgICAgdGhpcy5vbl9hY3RpdmVfdGVybWluYWxfc2Vs ZWN0aW9uX2NoYW5nZWQoKTsKKyAgICAgaGFuZGxlciA9IHRoaXMuYWN0aXZlX3Rlcm1pbmFsCisg ICAgICAgLnNlbGVjdGlvbl9jaGFuZ2VkCistICAgICAgLmNvbm5lY3QgKHRoaXMub25fYWN0aXZl X3Rlcm1pbmFsX3NlbGVjdGlvbl9jaGFuZ2VkKTsKKysgICAgICAuY29ubmVjdCh0aGlzLm9uX2Fj dGl2ZV90ZXJtaW5hbF9zZWxlY3Rpb25fY2hhbmdlZCk7CisgCistICAgIHRoaXMuYWN0aXZlX3Rl cm1pbmFsX3NpZ25hbF9oYW5kbGVycy5hcHBlbmRfdmFsIChoYW5kbGVyKTsKKysgICAgdGhpcy5h Y3RpdmVfdGVybWluYWxfc2lnbmFsX2hhbmRsZXJzLmFwcGVuZF92YWwoaGFuZGxlcik7CisgCisg ICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSB3YXRjaGluZyB0aGUgVGVybWluYWxUYWIncyBg dGl0bGVgCistICAgIHRoaXMub25fYWN0aXZlX3Rlcm1pbmFsX3RpdGxlX2NoYW5nZWQgKCk7Cisr ICAgIHRoaXMub25fYWN0aXZlX3Rlcm1pbmFsX3RpdGxlX2NoYW5nZWQoKTsKKyAgICAgaGFuZGxl ciA9IHRoaXMuYWN0aXZlX3Rlcm1pbmFsX3RhYgorLSAgICAgIC5ub3RpZnkgWyJ0aXRsZSJdCist ICAgICAgLmNvbm5lY3QgKHRoaXMub25fYWN0aXZlX3Rlcm1pbmFsX3RpdGxlX2NoYW5nZWQpOwor KyAgICAgIC5ub3RpZnlbInRpdGxlIl0KKysgICAgICAuY29ubmVjdCh0aGlzLm9uX2FjdGl2ZV90 ZXJtaW5hbF90aXRsZV9jaGFuZ2VkKTsKKyAKKy0gICAgdGhpcy5hY3RpdmVfdGVybWluYWxfdGFi X3NpZ25hbF9oYW5kbGVycy5hcHBlbmRfdmFsIChoYW5kbGVyKTsKKysgICAgdGhpcy5hY3RpdmVf dGVybWluYWxfdGFiX3NpZ25hbF9oYW5kbGVycy5hcHBlbmRfdmFsKGhhbmRsZXIpOworIAorLSAg ICB0aGlzLm9uX2FjdGl2ZV90ZXJtaW5hbF9jb250ZXh0X2NoYW5nZWQgKCk7CisrICAgIHRoaXMu b25fYWN0aXZlX3Rlcm1pbmFsX2NvbnRleHRfY2hhbmdlZCgpOworICAgICBoYW5kbGVyID0gdGhp cy5hY3RpdmVfdGVybWluYWwKKyAgICAgICAuY29udGV4dF9jaGFuZ2VkCistICAgICAgLmNvbm5l Y3QgKHRoaXMub25fYWN0aXZlX3Rlcm1pbmFsX3RhYl9jaGFuZ2VkKTsKKysgICAgICAuY29ubmVj dCh0aGlzLm9uX2FjdGl2ZV90ZXJtaW5hbF90YWJfY2hhbmdlZCk7CisgICB9CisgCistICBwcml2 YXRlIHZvaWQgb25fYWN0aXZlX3Rlcm1pbmFsX2NvbnRleHRfY2hhbmdlZCAoKSB7CisrICBwcml2 YXRlIHZvaWQgb25fYWN0aXZlX3Rlcm1pbmFsX2NvbnRleHRfY2hhbmdlZCgpIHsKKyAgICAgdmFy IGNvbnRleHQgPSB0aGlzLmFjdGl2ZV90ZXJtaW5hbD8ucHJvY2Vzcz8uY29udGV4dDsKKyAgICAg dmFyIGlzX2NvbnRleHRfYXdhcmVfZW5hYmxlZCA9CistICAgICAgU2V0dGluZ3MuZ2V0X2RlZmF1 bHQgKCkuY29udGV4dF9hd2FyZV9oZWFkZXJfYmFyOworKyAgICAgIFNldHRpbmdzLmdldF9kZWZh dWx0KCkuY29udGV4dF9hd2FyZV9oZWFkZXJfYmFyOworIAorLSAgICB3aWRnZXRfc2V0X2Nzc19j bGFzcyAoCisrICAgIHdpZGdldF9zZXRfY3NzX2NsYXNzKAorICAgICAgIHRoaXMsCisgICAgICAg ImNvbnRleHQtcm9vdCIsCisgICAgICAgY29udGV4dCA9PSBQcm9jZXNzQ29udGV4dC5ST09UICYm IGlzX2NvbnRleHRfYXdhcmVfZW5hYmxlZAorICAgICApOworIAorLSAgICB3aWRnZXRfc2V0X2Nz c19jbGFzcyAoCisrICAgIHdpZGdldF9zZXRfY3NzX2NsYXNzKAorICAgICAgIHRoaXMsCisgICAg ICAgImNvbnRleHQtc3NoIiwKKyAgICAgICBjb250ZXh0ID09IFByb2Nlc3NDb250ZXh0LlNTSCAm JiBpc19jb250ZXh0X2F3YXJlX2VuYWJsZWQKKyAgICAgKTsKKyAgIH0KKyAKKy0gIHByaXZhdGUg dm9pZCBvbl9hY3RpdmVfdGVybWluYWxfdGl0bGVfY2hhbmdlZCAoKSB7CistICAgIHRoaXMuYWN0 aXZlX3Rlcm1pbmFsX3RpdGxlID0gdGhpcy50YWJfdmlldy5nZXRfc2VsZWN0ZWRfcGFnZSAoKS50 aXRsZTsKKysgIHByaXZhdGUgdm9pZCBvbl9hY3RpdmVfdGVybWluYWxfdGl0bGVfY2hhbmdlZCgp IHsKKysgICAgdGhpcy5hY3RpdmVfdGVybWluYWxfdGl0bGUgPSB0aGlzLnRhYl92aWV3LmdldF9z ZWxlY3RlZF9wYWdlKCkudGl0bGU7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgb25fYWN0aXZl X3Rlcm1pbmFsX3NlbGVjdGlvbl9jaGFuZ2VkICgpIHsKKysgIHByaXZhdGUgdm9pZCBvbl9hY3Rp dmVfdGVybWluYWxfc2VsZWN0aW9uX2NoYW5nZWQoKSB7CisgICAgIGJvb2wgZW5hYmxlZCA9IGZh bHNlOworLSAgICBpZiAodGhpcy5hY3RpdmVfdGVybWluYWw/LmdldF9oYXNfc2VsZWN0aW9uICgp KSB7CisrICAgIGlmICh0aGlzLmFjdGl2ZV90ZXJtaW5hbD8uZ2V0X2hhc19zZWxlY3Rpb24oKSkg eworICAgICAgIGVuYWJsZWQgPSB0cnVlOworICAgICB9CistICAgIHRoaXMuY29weV9hY3Rpb24u c2V0X2VuYWJsZWQgKGVuYWJsZWQpOworKyAgICB0aGlzLmNvcHlfYWN0aW9uLnNldF9lbmFibGVk KGVuYWJsZWQpOworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIHRvZ2dsZV9mdWxsc2NyZWVuICgp IHsKKysgIHByaXZhdGUgdm9pZCB0b2dnbGVfZnVsbHNjcmVlbigpIHsKKyAgICAgaWYgKHRoaXMu ZnVsbHNjcmVlbmVkKSB7CistICAgICAgdGhpcy51bmZ1bGxzY3JlZW4gKCk7CisrICAgICAgdGhp cy51bmZ1bGxzY3JlZW4oKTsKKyAgICAgfSBlbHNlIHsKKy0gICAgICB0aGlzLmZ1bGxzY3JlZW4g KCk7CisrICAgICAgdGhpcy5mdWxsc2NyZWVuKCk7CisgICAgIH0KKyAgIH0KKyAKKy0gIHB1Ymxp YyBXaW5kb3cgbmV3X3dpbmRvdyAoCisrICBwdWJsaWMgV2luZG93IG5ld193aW5kb3coCisgICAg IHN0cmluZz8gY3dkID0gbnVsbCwKKyAgICAgYm9vbCBza2lwX2luaXRpYWxfdGFiID0gZmFsc2UK KyAgICkgeworLSAgICB2YXIgdyA9IG5ldyBXaW5kb3cgKHRoaXMuYXBwbGljYXRpb24sIG51bGws IGN3ZCwgc2tpcF9pbml0aWFsX3RhYik7CistICAgIHcuc2hvdyAoKTsKKysgICAgdmFyIHcgPSBu ZXcgV2luZG93KHRoaXMuYXBwbGljYXRpb24sIG51bGwsIGN3ZCwgc2tpcF9pbml0aWFsX3RhYik7 CisrICAgIHcuc2hvdygpOworICAgICByZXR1cm4gdzsKKyAgIH0KKyAKKy0gIHB1YmxpYyB2b2lk IGZvY3VzX25leHRfdGFiICgpIHsKKy0gICAgaWYgKCF0aGlzLnRhYl92aWV3LnNlbGVjdF9uZXh0 X3BhZ2UgKCkpIHsKKy0gICAgICB0aGlzLnRhYl92aWV3LnNldF9zZWxlY3RlZF9wYWdlICh0aGlz LnRhYl92aWV3LmdldF9udGhfcGFnZSAoMCkpOworKyAgcHVibGljIHZvaWQgZm9jdXNfbmV4dF90 YWIoKSB7CisrICAgIGlmICghdGhpcy50YWJfdmlldy5zZWxlY3RfbmV4dF9wYWdlKCkpIHsKKysg ICAgICB0aGlzLnRhYl92aWV3LnNldF9zZWxlY3RlZF9wYWdlKHRoaXMudGFiX3ZpZXcuZ2V0X250 aF9wYWdlKDApKTsKKyAgICAgfQorICAgfQorIAorLSAgcHVibGljIHZvaWQgZm9jdXNfcHJldmlv dXNfdGFiICgpIHsKKy0gICAgaWYgKCF0aGlzLnRhYl92aWV3LnNlbGVjdF9wcmV2aW91c19wYWdl ICgpKSB7CistICAgICAgdGhpcy50YWJfdmlldy5zZXRfc2VsZWN0ZWRfcGFnZSAodGhpcy50YWJf dmlldy5nZXRfbnRoX3BhZ2UgKHRoaXMudGFiX3ZpZXcubl9wYWdlcyAtIDEpKTsKKysgIHB1Ymxp YyB2b2lkIGZvY3VzX3ByZXZpb3VzX3RhYigpIHsKKysgICAgaWYgKCF0aGlzLnRhYl92aWV3LnNl bGVjdF9wcmV2aW91c19wYWdlKCkpIHsKKysgICAgICB0aGlzLnRhYl92aWV3LnNldF9zZWxlY3Rl ZF9wYWdlKHRoaXMudGFiX3ZpZXcuZ2V0X250aF9wYWdlKAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYl92aWV3Lm5fcGFnZXMgLSAxKSk7CisgICAgIH0K KyAgIH0KKyAKKy0gIHB1YmxpYyB2b2lkIGZvY3VzX250aF90YWIgKGludCBpbmRleCkgeworKyAg cHVibGljIHZvaWQgZm9jdXNfbnRoX3RhYihpbnQgaW5kZXgpIHsKKyAgICAgaWYgKHRoaXMudGFi X3ZpZXcubl9wYWdlcyA8PSAxKSB7CisgICAgICAgcmV0dXJuOworICAgICB9CisgICAgIGlmIChp bmRleCA8IDApIHsKKyAgICAgICAvLyBHbyB0byBsYXN0IHRhYgorLSAgICAgIHRoaXMudGFiX3Zp ZXcuc2V0X3NlbGVjdGVkX3BhZ2UgKAorLSAgICAgICAgdGhpcy50YWJfdmlldy5nZXRfbnRoX3Bh Z2UgKHRoaXMudGFiX3ZpZXcubl9wYWdlcyAtIDEpCisrICAgICAgdGhpcy50YWJfdmlldy5zZXRf c2VsZWN0ZWRfcGFnZSgKKysgICAgICAgIHRoaXMudGFiX3ZpZXcuZ2V0X250aF9wYWdlKHRoaXMu dGFiX3ZpZXcubl9wYWdlcyAtIDEpCisgICAgICAgKTsKKyAgICAgICByZXR1cm47CisgICAgIH0K KyAgICAgaWYgKGluZGV4ID4gdGhpcy50YWJfdmlldy5uX3BhZ2VzKSB7CisgICAgICAgcmV0dXJu OworLSAgICB9CistICAgIGVsc2UgeworLSAgICAgIHRoaXMudGFiX3ZpZXcuc2V0X3NlbGVjdGVk X3BhZ2UgKHRoaXMudGFiX3ZpZXcuZ2V0X250aF9wYWdlIChpbmRleCAtIDEpKTsKKysgICAgfSBl bHNlIHsKKysgICAgICB0aGlzLnRhYl92aWV3LnNldF9zZWxlY3RlZF9wYWdlKHRoaXMudGFiX3Zp ZXcuZ2V0X250aF9wYWdlKGluZGV4IC0gMSkpOworICAgICAgIHJldHVybjsKKyAgICAgfQorICAg fQorIAorLSAgcHVibGljIHZvaWQgZm9jdXNfdGFiX3dpdGhfaWQgKHVpbnQgdGFiX2lkKSB7Cist ICAgIGZvciAoaW50IGkgPSAwOyBpICE9IHRoaXMudGFiX3ZpZXcuZ2V0X25fcGFnZXMgKCk7IGkr KykgeworLSAgICAgIHZhciBwYWdlID0gdGhpcy50YWJfdmlldy5nZXRfbnRoX3BhZ2UgKGkpOwor LSAgICAgIHZhciB0YWIgPSBwYWdlLmdldF9jaGlsZCAoKSBhcyBUZXJtaW5hbFRhYjsKKy0gICAg ICBpZiAodGFiICE9IG51bGwgJiYgdGFiLmdldF9pZCAoKSA9PSB0YWJfaWQpIHsKKy0gICAgICAg IHRoaXMudGFiX3ZpZXcuc2V0X3NlbGVjdGVkX3BhZ2UgKHBhZ2UpOworLSAgICAgICAgdGhpcy5w cmVzZW50ICgpOworKyAgcHVibGljIHZvaWQgZm9jdXNfdGFiX3dpdGhfaWQodWludCB0YWJfaWQp IHsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gdGhpcy50YWJfdmlldy5nZXRfbl9wYWdlcygp OyBpKyspIHsKKysgICAgICB2YXIgcGFnZSA9IHRoaXMudGFiX3ZpZXcuZ2V0X250aF9wYWdlKGkp OworKyAgICAgIHZhciB0YWIgPSBwYWdlLmdldF9jaGlsZCgpIGFzIFRlcm1pbmFsVGFiOworKyAg ICAgIGlmICh0YWIgIT0gbnVsbCAmJiB0YWIuZ2V0X2lkKCkgPT0gdGFiX2lkKSB7CisrICAgICAg ICB0aGlzLnRhYl92aWV3LnNldF9zZWxlY3RlZF9wYWdlKHBhZ2UpOworKyAgICAgICAgdGhpcy5w cmVzZW50KCk7CisgICAgICAgICByZXR1cm47CisgICAgICAgfQorICAgICB9CgpkaWZmIC0tZ2l0 IGEvYmxhY2tib3gtdGVybWluYWwuc3BlYyBiL2JsYWNrYm94LXRlcm1pbmFsLnNwZWMKaW5kZXgg MDYyYzkyMi4uZDQ2ODhjMiAxMDA2NDQKLS0tIGEvYmxhY2tib3gtdGVybWluYWwuc3BlYworKysg Yi9ibGFja2JveC10ZXJtaW5hbC5zcGVjCkBAIC0xLDEzICsxLDE3IEBACiAlZ2xvYmFsIHJkbm4g ICAgY29tLnJhZ2dlc2lsdmVyLkJsYWNrQm94CiAKIE5hbWU6ICAgICAgICAgICBibGFja2JveC10 ZXJtaW5hbAotVmVyc2lvbjogICAgICAgIDAuMTUuMQorVmVyc2lvbjogICAgICAgIDAuMTUuMgog UmVsZWFzZTogICAgICAgICVhdXRvcmVsZWFzZQogU3VtbWFyeTogICAgICAgIEVsZWdhbnQgYW5k IGN1c3RvbWl6YWJsZSB0ZXJtaW5hbCBmb3IgR05PTUUKIExpY2Vuc2U6ICAgICAgICBHUEwtMy4w LW9yLWxhdGVyCiBVUkw6ICAgICAgICAgICAgaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL3JhZ2dl c2lsdmVyL2JsYWNrYm94CiBTb3VyY2U6ICAgICAgICAgJXt1cmx9Ly0vYXJjaGl2ZS92JXt2ZXJz aW9ufS9ibGFja2JveC12JXt2ZXJzaW9ufS50YXIuZ3oKIAorIyBodHRwczovL2dpdGxhYi5nbm9t ZS5vcmcvcmFnZ2VzaWx2ZXIvYmxhY2tib3gvLS93b3JrX2l0ZW1zLzQyNAorIyBodHRwczovL2dp dGxhYi5nbm9tZS5vcmcvcmFnZ2VzaWx2ZXIvYmxhY2tib3gvLS9jb21taXQvNzE4MmQ2ZGE4ZGRi ZDkyNWRiMDAxYjMwZWQ2YjNiMDA5MjdkZDdmNQorUGF0Y2g6ICAgICAgICAgIDAwMDEtSW1wbGVt ZW50LWxhc3Qta25vd24tY3dkLnBhdGNoCisKICMgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93 aWtpL0NoYW5nZXMvRW5jb3VyYWdlSTY4NkxlYWZSZW1vdmFsCiBFeGNsdWRlQXJjaDogICAgJXtp eDg2fQogCkBAIC0zNyw2ICs0MSwxNyBAQCBSZXF1aXJlczogICAgICAgaGljb2xvci1pY29uLXRo ZW1lCiBCbGFjayBCb3ggaXMgYW4gZWxlZ2FudCBhbmQgY3VzdG9taXphYmxlIHRlcm1pbmFsIGZv ciBHTk9NRS4KIAogCislcGFja2FnZSBuYXV0aWx1cworU3VtbWFyeTogICAgICAgIEJsYWNrIEJv eCBleHRlbnNpb24gZm9yIE5hdXRpbHVzCitSZXF1aXJlczogICAgICAgJXtuYW1lfSV7P19pc2F9 ID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CitSZXF1aXJlczogICAgICAgbmF1dGlsdXMtcHl0aG9u JXs/X2lzYX0KKworCislZGVzY3JpcHRpb24gbmF1dGlsdXMKK1RoaXMgcGFja2FnZSBwcm92aWRl cyBhIE5hdXRpbHVzIGV4dGVuc2lvbiB0aGF0IGFkZHMgdGhlICdPcGVuIGluIEJsYWNrIEJveCcK K29wdGlvbiB0byB0aGUgcmlnaHQtY2xpY2sgY29udGV4dCBtZW51IGluIE5hdXRpbHVzLgorCisK ICVwcmVwCiAlYXV0b3NldHVwIC1wIDEgLW4gYmxhY2tib3gtdiV7dmVyc2lvbn0KIApAQCAtNzEs NSArODYsOSBAQCBhcHBzdHJlYW0tdXRpbCB2YWxpZGF0ZS1yZWxheCAtLW5vbmV0ICV7YnVpbGRy b290fSV7X21ldGFpbmZvZGlyfS8le3Jkbm59Lm1ldGFpbgogJXtfbWV0YWluZm9kaXJ9LyV7cmRu bn0ubWV0YWluZm8ueG1sCiAKIAorJWZpbGVzIG5hdXRpbHVzCisle19kYXRhZGlyfS9uYXV0aWx1 cy1weXRob24vZXh0ZW5zaW9ucy9vcGVuLWJsYWNrYm94LnB5CisKKwogJWNoYW5nZWxvZwogJWF1 dG9jaGFuZ2Vsb2cKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCBhMjcyYmE0 Li45YzM2NjQwIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEgKzEgQEAK LVNIQTUxMiAoYmxhY2tib3gtdjAuMTUuMS50YXIuZ3opID0gYTA1MjVmMjFhOTEwZDAzYjNhZDU3 ZGMxYjNlYzk3MGM1ODMyNjFjMjYxYmNjMTc0MzZjMDFlZTI5YTdjZDE2MjA1MjQyN2Q3YzJiZTNj NGEwZTcyNDdhZGIyYjU4MDc1MzI1M2MxM2U0ZmM5MzM3MjNmZjkzYTI2MDdhY2E0Y2UKK1NIQTUx MiAoYmxhY2tib3gtdjAuMTUuMi50YXIuZ3opID0gOGVkNGEwOTcyMjY4ZTg2YTVjZmE3Yjg3ZDQ4 OTU0NWI3MzRlOTlhMmQ1MTJkNzU3MTg4YzVhOWVlMjhlZjhiN2M2M2IyOGFiODJkZmU3YmNlNWVh NjRkMmYyN2M4MWFiODMwNWRlMDZiZjE0YzljZGVhMmZlYzVlMjk4NjQzMTIK