ZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvaG9va3MucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2hvb2tzLnB5CmluZGV4IGNhZmZmOTMuLmY4ZWY0ZDggMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvaG9va3MucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9ob29rcy5weQpAQCAtMjUsNiArMjUsMTEgQEAKIGltcG9ydCBzcWxpdGUzIGFzIHNxbGl0ZQogCiBjbGFzcyBDb2xsYXRpb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIENoZWNrQ3JlYXRlQ29sbGF0aW9uTm90U3RyaW5nKHNlbGYpOgorICAgICAgICBjb24gPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjb24uY3JlYXRlX2NvbGxhdGlvbihOb25lLCBsYW1iZGEgeCwgeTogKHggPiB5KSAtICh4IDwgeSkpCisKICAgICBkZWYgQ2hlY2tDcmVhdGVDb2xsYXRpb25Ob3RDYWxsYWJsZShzZWxmKToKICAgICAgICAgY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgpAQCAtMzYsNiArNDEsMjMgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzcWxpdGUuUHJvZ3JhbW1pbmdFcnJvcik6CiAgICAgICAgICAgICBjb24uY3JlYXRlX2NvbGxhdGlvbigiY29sbOQiLCBsYW1iZGEgeCwgeTogKHggPiB5KSAtICh4IDwgeSkpCiAKKyAgICBkZWYgQ2hlY2tDcmVhdGVDb2xsYXRpb25CYWRVcHBlcihzZWxmKToKKyAgICAgICAgY2xhc3MgQmFkVXBwZXJTdHIoc3RyKToKKyAgICAgICAgICAgIGRlZiB1cHBlcihzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBjb24gPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQorICAgICAgICBteWNvbGwgPSBsYW1iZGEgeCwgeTogLSgoeCA+IHkpIC0gKHggPCB5KSkKKyAgICAgICAgY29uLmNyZWF0ZV9jb2xsYXRpb24oQmFkVXBwZXJTdHIoIm15Y29sbCIpLCBteWNvbGwpCisgICAgICAgIHJlc3VsdCA9IGNvbi5leGVjdXRlKCIiIgorICAgICAgICAgICAgc2VsZWN0IHggZnJvbSAoCisgICAgICAgICAgICBzZWxlY3QgJ2EnIGFzIHgKKyAgICAgICAgICAgIHVuaW9uCisgICAgICAgICAgICBzZWxlY3QgJ2InIGFzIHgKKyAgICAgICAgICAgICkgb3JkZXIgYnkgeCBjb2xsYXRlIG15Y29sbAorICAgICAgICAgICAgIiIiKS5mZXRjaGFsbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0WzBdWzBdLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0WzFdWzBdLCAnYScpCisKICAgICBAdW5pdHRlc3Quc2tpcElmKHNxbGl0ZS5zcWxpdGVfdmVyc2lvbl9pbmZvIDwgKDMsIDIsIDEpLAogICAgICAgICAgICAgICAgICAgICAgJ29sZCBTUUxpdGUgdmVyc2lvbnMgY3Jhc2ggb24gdGhpcyB0ZXN0JykKICAgICBkZWYgQ2hlY2tDb2xsYXRpb25Jc1VzZWQoc2VsZik6CmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggODQ0NTVjMC4uZGRhZjk0NzUgMTAwNjQ0Ci0tLSBhL01pc2MvTkVXUworKysgYi9NaXNjL05FV1MKQEAgLTgwLDYgKzgwLDkgQEAKIExpYnJhcnkKIC0tLS0tLS0KIAorLSBJc3N1ZSAjMjc4OTc6IEZpeGVkIHBvc3NpYmxlIGNyYXNoIGluIHNxbGl0ZTMuQ29ubmVjdGlvbi5jcmVhdGVfY29sbGF0aW9uKCkKKyAgaWYgcGFzcyBpbnZhbGlkIHN0cmluZy1saWtlIG9iamVjdCBhcyBhIG5hbWUuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKwogLSBJc3N1ZSAjMTg4OTM6IEZpeCBpbnZhbGlkIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiBMaWIvY3R5cGVzL21hY2hvbGliL2R5bGQucHkuCiAgIFBhdGNoIGJ5IE1hZGlzb24gTWF5LgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwppbmRleCAzYzUyMTA4Li5kYjk3OWY1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKQEAgLTE1MjMsMTEgKzE1MjMsMTMgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyFPOmNyZWF0ZV9jb2xsYXRpb24obmFtZSwgY2FsbGJhY2spIiwgJlB5VW5pY29kZV9UeXBlLCAmbmFtZSwgJmNhbGxhYmxlKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVU86Y3JlYXRlX2NvbGxhdGlvbihuYW1lLCBjYWxsYmFjaykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwgJmNhbGxhYmxlKSkgewogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogCi0gICAgdXBwZXJjYXNlX25hbWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG5hbWUsICZQeUlkX3VwcGVyLCAiIik7CisgICAgdXBwZXJjYXNlX25hbWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncygoUHlPYmplY3QgKikmUHlVbmljb2RlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF91cHBlciwgbmFtZSwgTlVMTCk7CiAgICAgaWYgKCF1cHBlcmNhc2VfbmFtZSkgewogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQo=