RlVOS1RJT04KICAgICBpbnQgc2V0X25leHRfcmVzZXQoaW50IGRlbGF5KQoKQVJHVU1FTlRFCiAgICAgZGVsYXkgLSBtaW5pbWFsZSBaZWl0IGJpcyB6dW0gbmFlY2hzdGVuIFJlc2V0IGRlcyBPYmpla3RlcwoKQkVTQ0hSRUlCVU5HCiAgICAgTWl0IGRpZXNlciBlZnVuIGlzdCBlcyBtb2VnbGljaCBFaW5mbHVzcyBhdWYgZGFzIFJlc2V0dmVyaGFsdGVuIGRlcwogICAgIE9iamVrdGVzIHp1IG5laG1lbjoKCiAgICAgRGFzIE9iamVrdCBiZWtvbW10IGVpbmVuIHJlc2V0KCktQXVmcnVmIGZydWVoZXN0ZW5zIGluIDxkZWxheT4gU2VrdW5kZW4uCiAgICAgQmVpIEFuZ2FiZSBlaW5lcyBXZXJ0ZXMgPDAgd2lyZCBkZXIgcmVzZXQoKSBm/HIgZGFzIE9iamVrdCBhYmdlc2NoYWx0ZXQsCiAgICAgd2FzIGZ1ZXIgQmx1ZXByaW50cyBnZWxlZ2VudGxpY2ggc2lubnZvbGwgaXN0LgoKICAgICBJbnRlcm4gd2lyZCBpbiBnbGVpY2hibGVpYmVuZGVuIEFic3RhZW5kZW4gKGRlcnplaXQ6IGluIGRlciBSZWdlbCAycywKICAgICBrYW5uIHNpY2ggYWJlciBhdWNoIHZlcnpvZWdlcm4sIHdlbm4gZGVyIERyaXZlciB2aWVsIHp1IGhhdCwgei5CLiBhdWYgCiAgICAgNHMpIGdlcHJ1ZWZ0IG9iIGRpZSBaZWl0IHp1bSB6dW0gbmFlY2hzdGVuIHJlc2V0KCkgYWJnZWxhdWZlbiBpc3QuIAogICAgIFNvbGx0ZSBkaWVzIGRlciBGYWxsIHNlaW4sIHdpcmQgZGllIEZ1bmt0aW9uIHJlc2V0KCkgaW0gT2JqZWt0IAogICAgIGF1ZmdlcnVmZW4uCgogICAgIERpZSBGdW5rdGlvbiBnaWJ0IGRpZSB2ZXJibGVpYmVuZGUgWmVpdCBiaXMgenVtIG5hZWNoc3RlbiBSZXNldAogICAgIHp1cnVlY2ssIGJldm9yIDxkZWxheT4gZ2VzZXR6dCB3dXJkZS4gRGVyIFdlcnQga2FubiBhdWNoIG5lZ2F0aXYKICAgICBzZWluLCB3ZW5uIGRlciBSZXNldCB1ZWJlcmZhZWxsaWcgd2FyLgoKICAgICBBY2h0dW5nOiBkaWUgdGF0c2FlY2hsaWNoZSBaZWl0LCB3YW5uIGRlciBSZXNldCBpbSBPYmpla3QgZHVyY2hnZWZ1ZWhydAogICAgIHdpcmQsIGhhZW5ndCBhdWNoIGRhdm9uIGFiLCBvYiBkYXMgT2JqZWt0IG5hY2ggQWJsYXVmIHZvbiA8ZGVsYXk+CiAgICAgdmVyd2VuZGV0IHdpcmQuCgpCRUlTUElFTEUKICAgICAvLyBlaW4gT2JqZWt0IG1pdCB2ZXJrdWVyenRlciByZXNldCgpLVplaXQKICAgICB2b2lkIGNyZWF0ZSgpIHsKICAgICAgIC4uLgogICAgICAgc2V0X25leHRfcmVzZXQoMTUqNjApOwkvLyB+IDE1IE1pbnV0ZW4KICAgICAgIC4uLgogICAgIH0KCiAgICAgdm9pZCByZXNldCgpIHsKICAgICAgIHNldF9uZXh0X3Jlc2V0KDkwMCk7CS8vIGRpZSBtdXNzIGltIHJlc2V0KCkgaW1tZXIgd2llZGVyCiAgICAgICA6OnJlc2V0KCk7ICAgICAgICAgICAvLyBuZXUgZ2VzZXR6dCB3ZXJkZW4KICAgICB9CgogICAgIC8vIGVpbiBPYmpla3QsIGRlc3NlbiBCbHVlcHJpbnQga2VpbmVuIHJlc2V0KCkgYmVrb21tZW4gc29sbAogICAgIHZvaWQgY3JlYXRlKCkgewogICAgICAgaWYoIWNsb25lcCh0aGlzX29iamVjdCgpKSkgewogICAgICAgICBzZXRfbmV4dF9yZXNldCgtMSk7CiAgICAgICAgIHJldHVybjsKICAgICAgIH0KICAgICAgIDo6Y3JlYXRlKCk7CiAgICAgICAuLi4KICAgICB9CgpTSUVIRSBBVUNICiAgICAgY2FsbF9vdXQoRSksIG9iamVjdF9pbmZvKEUpLCByZXNldChMKSwgcXVlcnlfbmV4dF9yZXNldChFKQoKNy5BdWcgMjAwNyBHbG9pbnNvbgo=