ZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMgYi9zdXB3aXNkb20vc3BfY29uc3VtZS5jCmluZGV4IDc1ZWZhY2IuLmZmNTNiMjcgMTAwNjQ0Ci0tLSBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmMKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbnN1bWUuYwpAQCAtMzc1LDYgKzM3NSw4IEBACiAKIHN0YXRpYyB2b2lkIGRvX2Vycm9yKHNwX3Bvc190KiBwb3MsIHVpbnQxNiBlcnJjb2RlKQogeworICBzcF92YWx2ZV9vZmYoKTsKKwogICBpZihlcnJjb2RlKQogICB7CiAgICAgc2hvd19lcnJvcihwb3MsIrLZ1/fKp7DcOiIsZXJyY29kZSk7CkBAIC00NTEsMTMgKzQ1MywxNSBAQAogICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX0VSUk9SOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGlmKHBvcy0+cHVyY2hhc2UudXNlZF9udW0gPiBjYXJkLT53YXRlcmxpbWl0KQorICAgIGlmKHBvcy0+cHVyY2hhc2UudXNlZF9udW0gPj0gY2FyZC0+d2F0ZXJsaW1pdCkKICAgICB7CisgICAgICBzcF92YWx2ZV9vZmYoKTsKICAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsICLNo9a5s/bLriIsItLRtO+1pbTOs/bLrsnPz94iLCBERUxBWV9USU1FMnMpOwogICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOwogICAgIH0KLSAgICBlbHNlIGlmKHBvcy0+cHVyY2hhc2UucGFpZF9zdW0gPiBjYXJkLT5hbW91bnRsaW1pdCkKKyAgICBlbHNlIGlmKHBvcy0+cHVyY2hhc2UucGFpZF9zdW0gPj0gY2FyZC0+YW1vdW50bGltaXQpCiAgICAgeworICAgICAgc3BfdmFsdmVfb2ZmKCk7CiAgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAizaPWubP2y64iLCLS0bTvtaW0zr3wtu7Jz8/eIiwgREVMQVlfVElNRTJzKTsKICAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUElORzsKICAgICB9CkBAIC03MTMsMTkgKzcxNywyMSBAQAogICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX0VSUk9SOwogICAgICAgYnJlYWs7CiAgICAgfQotICAgIGlmKHBvcy0+cHVyY2hhc2UudXNlZF9udW0gPkNBUkQud2F0ZXJsaW1pdCkKKyAgICBpZihwb3MtPnB1cmNoYXNlLnVzZWRfbnVtID49IENBUkQud2F0ZXJsaW1pdCkKICAgICB7CisgICAgICBzcF92YWx2ZV9vZmYoKTsKICAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsICLNo9a5s/bLriIsItLRtO+1pbTOs/bLrsnPz94iLCBERUxBWV9USU1FMnMpOwogICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOwogICAgIH0KLSAgICBlbHNlIGlmKHBvcy0+cHVyY2hhc2UucGFpZF9zdW0gPiBDQVJELmFtb3VudGxpbWl0KQorICAgIGVsc2UgaWYocG9zLT5wdXJjaGFzZS5wYWlkX3N1bSA+PSBDQVJELmFtb3VudGxpbWl0KQogICAgIHsKKyAgICAgIHNwX3ZhbHZlX29mZigpOwogICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIs2j1rmz9suuIiwi0tG077WltM698Lbuyc/P3iIsIERFTEFZX1RJTUUycyk7CiAgICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc7CiAgICAgfQogICAgIC8qKsi3yM+z9suuuvOzrLn9tci0/cqxvOTOtLP2y67No9a5s/bLrioqLwogICAgIENBUkQucXJjb2RlLm5vd3RpbWUgPSBzcF9nZXRfdGlja2VyKCk7Ci0gICAgaWYoKENBUkQucXJjb2RlLm5vd3RpbWUgLSBDQVJELnFyY29kZS5zdGFydHRpbWUpID4gQ0FSRC5xcmNvZGUud2FpdHRpbWUqREVMQVlfVElNRTFzKQorICAgIGlmKChDQVJELnFyY29kZS5ub3d0aW1lIC0gQ0FSRC5xcmNvZGUuc3RhcnR0aW1lKSA+PSBDQVJELnFyY29kZS53YWl0dGltZSpERUxBWV9USU1FMXMpCiAgICAgewogICAgICAgaWYocG9zLT5wdXJjaGFzZS51c2VkX251bSA9PSAwKQogICAgICAgewpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX3V0aWwuYyBiL3N1cHdpc2RvbS9zcF91dGlsLmMKaW5kZXggZGY3MGIxMy4uNWIxMDgzMyAxMDA2NDQKLS0tIGEvc3Vwd2lzZG9tL3NwX3V0aWwuYworKysgYi9zdXB3aXNkb20vc3BfdXRpbC5jCkBAIC0yNTUsMTMgKzI1NSwxOSBAQAogfQogdm9pZCBzcF92YWx2ZV9vbih2b2lkKQogewotICB2YWx2ZV9zdGFfc2V0KHZhbHZlX3N0YXRlX29uKTsKLSAgdmFsdmVfY3RybCgpOworICBpZighdmFsdmVfc3RhX2dldCgpKQorICB7CisgICAgdmFsdmVfc3RhX3NldCh2YWx2ZV9zdGF0ZV9vbik7CisgICAgdmFsdmVfY3RybCgpOworICB9CiB9CiB2b2lkIHNwX3ZhbHZlX29mZih2b2lkKQogewotICB2YWx2ZV9zdGFfc2V0KHZhbHZlX3N0YXRlX29mZik7Ci0gIHZhbHZlX2N0cmwoKTsKKyAgaWYodmFsdmVfc3RhX2dldCgpKQorICB7CisgICAgdmFsdmVfc3RhX3NldCh2YWx2ZV9zdGF0ZV9vZmYpOworICAgIHZhbHZlX2N0cmwoKTsKKyAgfQogfQogdWludDggc3BfdmFsdmVfc3RhdGUodm9pZCkKIHsK