R2l0IGNvbW1pdCA5ZmUwNTU3OTk2N2RhMzBmMGUzYjY2ZTdmMDZmYmI0MzhmYjBjYTAxIGJ5IEJv dWRld2lqbiBSZW1wdC4KQ29tbWl0dGVkIG9uIDI2LzA2LzIwMTUgYXQgMTA6MDAuClB1c2hlZCBi eSByZW1wdCBpbnRvIGJyYW5jaCAnY2FsbGlncmEvMi45Jy4KCkZFQVRVUkU6IFNob3cgdGhlIHRv b2wgb3B0aW9ucyBpbiBhIHBvcHVwCgpUaGlzIGNhbiBiZSBzZXQgaW4gdGhlIGdlbmVyYWwgc2V0 dGluZ3MgdGFiOiBlaXRoZXIgd2Ugc2hvdwp0aGUgdG9vbCBvcHRpb25zIGluIGEgZG9ja2VyIG9y IGluIGEgcG9wdXAgdGhhdCBjYW4gYmUgc2hvd24KdXNpbmcgYSBidXR0b24gaW4gdGhlIHRvb2xi YXIuIFRoZSBwb3B1cCBpcyBkZXRhY2hhYmxlLgoKV2UgbmVlZCBhIG5pY2UgaWNvbiBmb3IgdGhl IHRvb2wgYnV0dG9uIQoKVGhlIHRvb2wgb3B0aW9uIHBhbmVscyBwb3BzIHVwIHdoZW4gY2xpY2tl ZCB3aXRoIGJ5IHByZXNzaW5nCihieSBkZWZhdWx0KSB0aGUgYmFja3NsYXNoIGtleS4KCkNDTUFJ TDpraW1hZ2VzaG9wQGtkZS5vcmcKCk0gICsxICAgIC0wICAgIGtyaXRhL2tyaXRhLmFjdGlvbgpN ICArMSAgICAtMCAgICBrcml0YS91aS9DTWFrZUxpc3RzLnR4dApNICArMTQgICAtNCAgICBrcml0 YS91aS9LaXNNYWluV2luZG93LmNwcApNICArMCAgICAtMSAgICBrcml0YS91aS9LaXNNYWluV2lu ZG93LmgKTSAgKzggICAgLTAgICAga3JpdGEvdWkvZGlhbG9ncy9raXNfZGxnX3ByZWZlcmVuY2Vz LmNjCk0gICsxICAgIC0wICAgIGtyaXRhL3VpL2RpYWxvZ3Mva2lzX2RsZ19wcmVmZXJlbmNlcy5o Ck0gICs1MiAgIC0yNCAgIGtyaXRhL3VpL2Zvcm1zL3dkZ2dlbmVyYWxzZXR0aW5ncy51aQpNICAr MjEgICAtMCAgICBrcml0YS91aS9raXNfY29uZmlnLmNjCk0gICs2ICAgIC0wICAgIGtyaXRhL3Vp L2tpc19jb25maWcuaApNICArNzcgICAtNDIgICBrcml0YS91aS9raXNfcGFpbnRvcF9ib3guY2MK TSAgKzI1ICAgLTE5ICAga3JpdGEvdWkva2lzX3BhaW50b3BfYm94LmgKQSAgKzE5NyAgLTAgICAg a3JpdGEvdWkvd2lkZ2V0cy9raXNfdG9vbF9vcHRpb25zX3BvcHVwLmNwcCAgICAgW0xpY2Vuc2U6 IExHUEwgKHYyKyldCkEgICs1MyAgIC0wICAgIGtyaXRhL3VpL3dpZGdldHMva2lzX3Rvb2xfb3B0 aW9uc19wb3B1cC5oICAgICBbTGljZW5zZTogTEdQTCAodjIrKV0KCmh0dHA6Ly9jb21taXRzLmtk ZS5vcmcvY2FsbGlncmEvOWZlMDU1Nzk5NjdkYTMwZjBlM2I2NmU3ZjA2ZmJiNDM4ZmIwY2EwMQoK ZGlmZiAtLWdpdCBhL2tyaXRhL2tyaXRhLmFjdGlvbiBiL2tyaXRhL2tyaXRhLmFjdGlvbgppbmRl eCBmYTEzZGY2Li42OWQ2YzExIDEwMDY0NAotLS0gYS9rcml0YS9rcml0YS5hY3Rpb24KKysrIGIv a3JpdGEva3JpdGEuYWN0aW9uCkBAIC0zMzMsNCArMzMzLDUgQEAKICAgICA8QWN0aW9uIG5hbWU9 InNob3dfY29tbW9uX2NvbG9ycyIgaWNvbj0iIiB0ZXh0PSJTaG93IGNvbW1vbiBjb2xvcnMiIHdo YXRzVGhpcz0iIiB0b29sVGlwPSJTaG93IGNvbW1vbiBjb2xvcnMiIGljb25UZXh0PSJTaG93IGNv bW1vbiBjb2xvcnMiIHNob3J0Y3V0PSJVIiBkZWZhdWx0U2hvcnRjdXQ9IlUiIGlzQ2hlY2thYmxl PSJmYWxzZSIgc3RhdHVzVGlwPSIiLz4KICAgICA8QWN0aW9uIG5hbWU9InRvZ2dsZV9hc3Npc3Rh bnQiIGljb249IiIgdGV4dD0iVG9nZ2xlIEFzc2lzdGFudCIgd2hhdHNUaGlzPSIiIHRvb2xUaXA9 IlRvZ2dsZSBBc3Npc3RhbnQiIGljb25UZXh0PSJUb2dnbGVBc3Npc3RhbnQiIHNob3J0Y3V0PSJD dHJsK1NoaWZ0K0wiIGRlZmF1bHRTaG9ydGN1dD0iQ3RybCtTaGlmdCtMIiBpc0NoZWNrYWJsZT0i dHJ1ZSIgc3RhdHVzVGlwPSIiLz4KICAgICA8QWN0aW9uIG5hbWU9InVuZG9fcG9seWdvbl9zZWxl Y3Rpb24iIGljb249IiIgdGV4dD0iVW5kbyBQb2x5Z29uIFNlbGVjdGlvbiBQb2ludHMiIHdoYXRz VGhpcz0iIiB0b29sVGlwPSJVbmRvIFBvbHlnb24gU2VsZWN0aW9uIFBvaW50cyIgaWNvblRleHQ9 IlVuZG8gUG9seWdvbiBTZWxlY3Rpb24gUG9pbnRzIiBzaG9ydGN1dD0iU2hpZnQrWiIgZGVmYXVs dFNob3J0Y3V0PSJTaGlmdCtaIiBpc0NoZWNrYWJsZT0iZmFsc2UiIHN0YXR1c1RpcD0iIi8+Cisg ICAgPEFjdGlvbiBuYW1lPSIiIGljb249InNob3dfdG9vbF9vcHRpb25zIiB0ZXh0PSJTaG93IFRv b2wgT3B0aW9ucyIgd2hhdHNUaGlzPSIiIHRvb2xUaXA9IlNob3cgVG9vbCBPcHRpb25zIiBpY29u VGV4dD0iU2hvdyBUb29sIE9wdGlvbnMiIHNob3J0Y3V0PSIiIGRlZmF1bHRTaG9ydGN1dD0iIiBp c0NoZWNrYWJsZT0iZmFsc2UiIHN0YXR1c1RpcD0iIi8+CiA8L0FjdGlvbnM+CmRpZmYgLS1naXQg YS9rcml0YS91aS9DTWFrZUxpc3RzLnR4dCBiL2tyaXRhL3VpL0NNYWtlTGlzdHMudHh0CmluZGV4 IGYxZGZkYjEuLjRmZDYxZjcgMTAwNjQ0Ci0tLSBhL2tyaXRhL3VpL0NNYWtlTGlzdHMudHh0Cisr KyBiL2tyaXRhL3VpL0NNYWtlTGlzdHMudHh0CkBAIC0yMTAsNiArMjEwLDcgQEAgc2V0KGtyaXRh dWlfTElCX1NSQ1MKICAgICB3aWRnZXRzL2tpc19tdWx0aV9pbnRlZ2VyX2ZpbHRlcl93aWRnZXQu Y2MKICAgICB3aWRnZXRzL2tpc19tdWx0aXBsaWVyc19kb3VibGVfc2xpZGVyX3NwaW5ib3guY3Bw CiAgICAgd2lkZ2V0cy9raXNfcGFpbnRvcF9wcmVzZXRzX3BvcHVwLmNwcAorICAgIHdpZGdldHMv a2lzX3Rvb2xfb3B0aW9uc19wb3B1cC5jcHAKICAgICB3aWRnZXRzL2tpc19wYWludG9wX3ByZXNl dHNfY2hvb3Nlcl9wb3B1cC5jcHAKICAgICB3aWRnZXRzL2tpc19wYXR0ZXJuX2Nob29zZXIuY2MK ICAgICB3aWRnZXRzL2tpc19wb3B1cF9idXR0b24uY2MKZGlmZiAtLWdpdCBhL2tyaXRhL3VpL0tp c01haW5XaW5kb3cuY3BwIGIva3JpdGEvdWkvS2lzTWFpbldpbmRvdy5jcHAKaW5kZXggMWNkYjM1 NS4uYzEwMTY5ZSAxMDA2NDQKLS0tIGEva3JpdGEvdWkvS2lzTWFpbldpbmRvdy5jcHAKKysrIGIv a3JpdGEvdWkvS2lzTWFpbldpbmRvdy5jcHAKQEAgLTI3OSw2ICsyNzksOCBAQCBLaXNNYWluV2lu ZG93OjpLaXNNYWluV2luZG93KCkKICAgICBzZXRDb21wb25lbnREYXRhKEtpc0ZhY3Rvcnk6OmNv bXBvbmVudERhdGEoKSk7CiAgICAgS0dsb2JhbDo6c2V0QWN0aXZlQ29tcG9uZW50KEtpc0ZhY3Rv cnk6OmNvbXBvbmVudERhdGEoKSk7CiAKKyAgICBLaXNDb25maWcgY2ZnOworCiAgICAgZC0+dmll d01hbmFnZXIgPSBuZXcgS2lzVmlld01hbmFnZXIodGhpcywgYWN0aW9uQ29sbGVjdGlvbigpKTsK ICAgICBkLT50aGVtZU1hbmFnZXIgPSBuZXcgRGlnaWthbTo6VGhlbWVNYW5hZ2VyKHRoaXMpOwog CkBAIC0zMDksMTIgKzMxMSwxNCBAQCBLaXNNYWluV2luZG93OjpLaXNNYWluV2luZG93KCkKIAog ICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgImluaXRpYWxpemVHZW9tZXRyeSIs IFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKIAotICAgIFRvb2xEb2NrZXJGYWN0b3J5IHRvb2xEb2Nr ZXJGYWN0b3J5OwotICAgIGQtPnRvb2xPcHRpb25zRG9ja2VyID0gcW9iamVjdF9jYXN0PEtvVG9v bERvY2tlcio+KGNyZWF0ZURvY2tXaWRnZXQoJnRvb2xEb2NrZXJGYWN0b3J5KSk7Ci0KICAgICBL b1Rvb2xCb3hGYWN0b3J5IHRvb2xCb3hGYWN0b3J5OwogICAgIGNyZWF0ZURvY2tXaWRnZXQoJnRv b2xCb3hGYWN0b3J5KTsKIAorICAgIGlmIChjZmcudG9vbE9wdGlvbnNJbkRvY2tlcigpKSB7Cisg ICAgICAgIFRvb2xEb2NrZXJGYWN0b3J5IHRvb2xEb2NrZXJGYWN0b3J5OworICAgICAgICBkLT50 b29sT3B0aW9uc0RvY2tlciA9IHFvYmplY3RfY2FzdDxLb1Rvb2xEb2NrZXIqPihjcmVhdGVEb2Nr V2lkZ2V0KCZ0b29sRG9ja2VyRmFjdG9yeSkpOworICAgIH0KKwogICAgIGZvcmVhY2goY29uc3Qg UVN0cmluZyAmIGRvY2tlciwgS29Eb2NrUmVnaXN0cnk6Omluc3RhbmNlKCktPmtleXMoKSkgewog ICAgICAgICBLb0RvY2tGYWN0b3J5QmFzZSAqZmFjdG9yeSA9IEtvRG9ja1JlZ2lzdHJ5OjppbnN0 YW5jZSgpLT52YWx1ZShkb2NrZXIpOwogICAgICAgICBjcmVhdGVEb2NrV2lkZ2V0KGZhY3Rvcnkp OwpAQCAtMTk5NSw3ICsxOTk5LDYgQEAgUVBvaW50ZXI8S2lzVmlldz5LaXNNYWluV2luZG93Ojph Y3RpdmVLaXNWaWV3KCkKIAogdm9pZCBLaXNNYWluV2luZG93OjpuZXdPcHRpb25XaWRnZXRzKGNv bnN0IFFMaXN0PFFQb2ludGVyPFFXaWRnZXQ+ID4gJm9wdGlvbldpZGdldExpc3QpCiB7Ci0gICAg ZC0+dG9vbE9wdGlvbnNEb2NrZXItPnNldE9wdGlvbldpZGdldHMob3B0aW9uV2lkZ2V0TGlzdCk7 CiAKICAgICBLQ29uZmlnR3JvdXAgZ3JvdXAoS0dsb2JhbDo6Y29uZmlnKCksICJHVUkiKTsKICAg ICBRRm9udCBkb2NrV2lkZ2V0Rm9udCAgPSBLR2xvYmFsU2V0dGluZ3M6OmdlbmVyYWxGb250KCk7 CkBAIC0yMDA5LDYgKzIwMTIsMTMgQEAgdm9pZCBLaXNNYWluV2luZG93OjpuZXdPcHRpb25XaWRn ZXRzKGNvbnN0IFFMaXN0PFFQb2ludGVyPFFXaWRnZXQ+ID4gJm9wdGlvbldpZGcKICNlbmRpZgog ICAgICAgICB3LT5zZXRGb250KGRvY2tXaWRnZXRGb250KTsKICAgICB9CisKKyAgICBpZiAoZC0+ dG9vbE9wdGlvbnNEb2NrZXIpIHsKKyAgICAgICAgZC0+dG9vbE9wdGlvbnNEb2NrZXItPnNldE9w dGlvbldpZGdldHMob3B0aW9uV2lkZ2V0TGlzdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAg ICBkLT52aWV3TWFuYWdlci0+cGFpbnRPcEJveCgpLT5uZXdPcHRpb25XaWRnZXRzKG9wdGlvbldp ZGdldExpc3QpOworICAgIH0KIH0KIAogdm9pZCBLaXNNYWluV2luZG93OjphcHBseURlZmF1bHRT ZXR0aW5ncyhRUHJpbnRlciAmcHJpbnRlcikgewpkaWZmIC0tZ2l0IGEva3JpdGEvdWkvS2lzTWFp bldpbmRvdy5oIGIva3JpdGEvdWkvS2lzTWFpbldpbmRvdy5oCmluZGV4IDUxNjUxNDUuLjIwYTJk OWQgMTAwNjQ0Ci0tLSBhL2tyaXRhL3VpL0tpc01haW5XaW5kb3cuaAorKysgYi9rcml0YS91aS9L aXNNYWluV2luZG93LmgKQEAgLTIzNCw3ICsyMzQsNiBAQCBwdWJsaWMgUV9TTE9UUzoKICAgICAg Ki8KICAgICBib29sIHNhdmVEb2N1bWVudChLaXNEb2N1bWVudCAqZG9jdW1lbnQsIGJvb2wgc2F2 ZWFzID0gZmFsc2UsIGJvb2wgc2lsZW50ID0gZmFsc2UsIGludCBzcGVjaWFsT3V0cHV0RmxhZyA9 IDApOwogCi0KICAgICAvKioKICAgICAgKiBVcGRhdGUgdGhlIG9wdGlvbiB3aWRnZXRzIHRvIHRo ZSBhcmd1bWVudCBvbmVzLCByZW1vdmluZyB0aGUgY3VycmVudGx5IHNldCB3aWRnZXRzLgogICAg ICAqLwpkaWZmIC0tZ2l0IGEva3JpdGEvdWkvZGlhbG9ncy9raXNfZGxnX3ByZWZlcmVuY2VzLmNj IGIva3JpdGEvdWkvZGlhbG9ncy9raXNfZGxnX3ByZWZlcmVuY2VzLmNjCmluZGV4IGFlMzg4ZmQu LjEwYTQyM2EgMTAwNjQ0Ci0tLSBhL2tyaXRhL3VpL2RpYWxvZ3Mva2lzX2RsZ19wcmVmZXJlbmNl cy5jYworKysgYi9rcml0YS91aS9kaWFsb2dzL2tpc19kbGdfcHJlZmVyZW5jZXMuY2MKQEAgLTEy Myw2ICsxMjMsNyBAQCBHZW5lcmFsVGFiOjpHZW5lcmFsVGFiKFFXaWRnZXQgKl9wYXJlbnQsIGNv bnN0IGNoYXIgKl9uYW1lKQogICAgIG1fYmFja2dyb3VuZGltYWdlLT5zZXRUZXh0KGNmZy5nZXRN RElCYWNrZ3JvdW5kSW1hZ2UoKSk7CiAgICAgbV9jaGtDYW52YXNNZXNzYWdlcy0+c2V0Q2hlY2tl ZChjZmcuc2hvd0NhbnZhc01lc3NhZ2VzKCkpOwogICAgIG1fY2hrQ29tcHJlc3NLcmEtPnNldENo ZWNrZWQoY2ZnLmNvbXByZXNzS3JhKCkpOworICAgIG1fcmFkaW9Ub29sT3B0aW9uc0luRG9ja2Vy LT5zZXRDaGVja2VkKGNmZy50b29sT3B0aW9uc0luRG9ja2VyKCkpOwogCiAgICAgY29ubmVjdCht X2JuRmlsZU5hbWUsIFNJR05BTChjbGlja2VkKCkpLCBTTE9UKGdldEJhY2tncm91bmRJbWFnZSgp KSk7CiAgICAgY29ubmVjdChjbGVhckJnSW1hZ2VCdXR0b24sIFNJR05BTChjbGlja2VkKCkpLCBT TE9UKGNsZWFyQmFja2dyb3VuZEltYWdlKCkpKTsKQEAgLTE0OSw2ICsxNTAsNyBAQCB2b2lkIEdl bmVyYWxUYWI6OnNldERlZmF1bHQoKQogICAgIG1fYmFja2dyb3VuZGltYWdlLT5zZXRUZXh0KGNm Zy5nZXRNRElCYWNrZ3JvdW5kSW1hZ2UodHJ1ZSkpOwogICAgIG1fY2hrQ2FudmFzTWVzc2FnZXMt PnNldENoZWNrZWQoY2ZnLnNob3dDYW52YXNNZXNzYWdlcyh0cnVlKSk7CiAgICAgbV9jaGtDb21w cmVzc0tyYS0+c2V0Q2hlY2tlZChjZmcuY29tcHJlc3NLcmEodHJ1ZSkpOworICAgIG1fcmFkaW9U b29sT3B0aW9uc0luRG9ja2VyLT5zZXRDaGVja2VkKGNmZy50b29sT3B0aW9uc0luRG9ja2VyKHRy dWUpKTsKIH0KIAogQ3Vyc29yU3R5bGUgR2VuZXJhbFRhYjo6Y3Vyc29yU3R5bGUoKQpAQCAtMjA3 LDYgKzIwOSwxMSBAQCBib29sIEdlbmVyYWxUYWI6OmNvbXByZXNzS3JhKCkKICAgICByZXR1cm4g bV9jaGtDb21wcmVzc0tyYS0+aXNDaGVja2VkKCk7CiB9CiAKK2Jvb2wgR2VuZXJhbFRhYjo6dG9v bE9wdGlvbnNJbkRvY2tlcigpCit7CisgICAgcmV0dXJuIG1fcmFkaW9Ub29sT3B0aW9uc0luRG9j a2VyLT5pc0NoZWNrZWQoKTsKK30KKwogdm9pZCBHZW5lcmFsVGFiOjpnZXRCYWNrZ3JvdW5kSW1h Z2UoKQogewogICAgIEtvRmlsZURpYWxvZyBkaWFsb2codGhpcywgS29GaWxlRGlhbG9nOjpPcGVu RmlsZSwgIkJhY2tncm91bmRJbWFnZXMiKTsKQEAgLTEwMjUsNiArMTAzMiw3IEBAIGJvb2wgS2lz RGxnUHJlZmVyZW5jZXM6OmVkaXRQcmVmZXJlbmNlcygpCiAgICAgICAgIGNmZy5zZXRCYWNrdXBG aWxlKGRpYWxvZy0+bV9nZW5lcmFsLT5tX2JhY2t1cEZpbGVDaGVja0JveC0+aXNDaGVja2VkKCkp OwogICAgICAgICBjZmcuc2V0U2hvd0NhbnZhc01lc3NhZ2VzKGRpYWxvZy0+bV9nZW5lcmFsLT5z aG93Q2FudmFzTWVzc2FnZXMoKSk7CiAgICAgICAgIGNmZy5zZXRDb21wcmVzc0tyYShkaWFsb2ct Pm1fZ2VuZXJhbC0+Y29tcHJlc3NLcmEoKSk7CisgICAgICAgIGNmZy5zZXRUb29sT3B0aW9uc0lu RG9ja2VyKGRpYWxvZy0+bV9nZW5lcmFsLT50b29sT3B0aW9uc0luRG9ja2VyKCkpOwogICAgICAg ICBLaXNQYXJ0ICpwYXJ0ID0gS2lzUGFydDo6aW5zdGFuY2UoKTsKICAgICAgICAgaWYgKHBhcnQp IHsKICAgICAgICAgICAgIGZvcmVhY2goUVBvaW50ZXI8S2lzRG9jdW1lbnQ+IGRvYywgcGFydC0+ ZG9jdW1lbnRzKCkpIHsKZGlmZiAtLWdpdCBhL2tyaXRhL3VpL2RpYWxvZ3Mva2lzX2RsZ19wcmVm ZXJlbmNlcy5oIGIva3JpdGEvdWkvZGlhbG9ncy9raXNfZGxnX3ByZWZlcmVuY2VzLmgKaW5kZXgg OTcwNThkMS4uNTlmNDFiOCAxMDA2NDQKLS0tIGEva3JpdGEvdWkvZGlhbG9ncy9raXNfZGxnX3By ZWZlcmVuY2VzLmgKKysrIGIva3JpdGEvdWkvZGlhbG9ncy9raXNfZGxnX3ByZWZlcmVuY2VzLmgK QEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAgIGludCBmYXZvcml0ZVByZXNldHMoKTsKICAg ICBib29sIHNob3dDYW52YXNNZXNzYWdlcygpOwogICAgIGJvb2wgY29tcHJlc3NLcmEoKTsKKyAg ICBib29sIHRvb2xPcHRpb25zSW5Eb2NrZXIoKTsKIHByaXZhdGUgUV9TTE9UUzoKICAgICB2b2lk IGdldEJhY2tncm91bmRJbWFnZSgpOwogICAgIHZvaWQgY2xlYXJCYWNrZ3JvdW5kSW1hZ2UoKTsK ZGlmZiAtLWdpdCBhL2tyaXRhL3VpL2Zvcm1zL3dkZ2dlbmVyYWxzZXR0aW5ncy51aSBiL2tyaXRh L3VpL2Zvcm1zL3dkZ2dlbmVyYWxzZXR0aW5ncy51aQppbmRleCBhY2YwMzk4Li5jYjUyZDAyIDEw MDY0NAotLS0gYS9rcml0YS91aS9mb3Jtcy93ZGdnZW5lcmFsc2V0dGluZ3MudWkKKysrIGIva3Jp dGEvdWkvZm9ybXMvd2RnZ2VuZXJhbHNldHRpbmdzLnVpCkBAIC03Niw2ICs3Niw5IEBACiAgICAg IDxsYXlvdXQgY2xhc3M9IlFIQm94TGF5b3V0IiBuYW1lPSJob3Jpem9udGFsTGF5b3V0XzIiPgog ICAgICAgPGl0ZW0+CiAgICAgICAgPGxheW91dCBjbGFzcz0iUUZvcm1MYXlvdXQiIG5hbWU9ImZv cm1MYXlvdXRfMiI+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWVsZEdyb3d0aFBvbGljeSI+ CisgICAgICAgICA8ZW51bT5RRm9ybUxheW91dDo6RXhwYW5kaW5nRmllbGRzR3JvdzwvZW51bT4K KyAgICAgICAgPC9wcm9wZXJ0eT4KICAgICAgICAgPGl0ZW0gcm93PSIwIiBjb2x1bW49IjAiPgog ICAgICAgICAgPHdpZGdldCBjbGFzcz0iUUxhYmVsIiBuYW1lPSJsYWJlbF8yIj4KICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0idGV4dCI+CkBAIC0xNTMsMTkgKzE1NiwyNiBAQAogICAgICAgICAg IDwvaXRlbT4KICAgICAgICAgIDwvbGF5b3V0PgogICAgICAgICA8L2l0ZW0+CisgICAgICAgIDxp dGVtIHJvdz0iMiIgY29sdW1uPSIwIj4KKyAgICAgICAgIDx3aWRnZXQgY2xhc3M9IlFMYWJlbCIg bmFtZT0ibGFiZWxfNCI+CisgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgorICAgICAg ICAgICA8c3RyaW5nPldpbmRvdyBCYWNrZ3JvdW5kOjwvc3RyaW5nPgorICAgICAgICAgIDwvcHJv cGVydHk+CisgICAgICAgICA8L3dpZGdldD4KKyAgICAgICAgPC9pdGVtPgogICAgICAgICA8aXRl bSByb3c9IjIiIGNvbHVtbj0iMSI+CiAgICAgICAgICA8d2lkZ2V0IGNsYXNzPSJLQ29sb3JCdXR0 b24iIG5hbWU9Im1fbWRpQ29sb3IiPgogICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4K ICAgICAgICAgICAgPHN0cmluZy8+CiAgICAgICAgICAgPC9wcm9wZXJ0eT4KLSAgICAgICAgICA8 cHJvcGVydHkgbmFtZT0iY29sb3IiIHN0ZHNldD0iMCI+CisgICAgICAgICAgPHByb3BlcnR5IG5h bWU9ImNvbG9yIj4KICAgICAgICAgICAgPGNvbG9yPgogICAgICAgICAgICAgPHJlZD4wPC9yZWQ+ CiAgICAgICAgICAgICA8Z3JlZW4+MDwvZ3JlZW4+CiAgICAgICAgICAgICA8Ymx1ZT4wPC9ibHVl PgogICAgICAgICAgICA8L2NvbG9yPgogICAgICAgICAgIDwvcHJvcGVydHk+Ci0gICAgICAgICAg PHByb3BlcnR5IG5hbWU9ImRlZmF1bHRDb2xvciIgc3Rkc2V0PSIwIj4KKyAgICAgICAgICA8cHJv cGVydHkgbmFtZT0iZGVmYXVsdENvbG9yIj4KICAgICAgICAgICAgPGNvbG9yPgogICAgICAgICAg ICAgPHJlZD4wPC9yZWQ+CiAgICAgICAgICAgICA8Z3JlZW4+MDwvZ3JlZW4+CkBAIC0xNzQsMTMg KzE4NCw2IEBACiAgICAgICAgICAgPC9wcm9wZXJ0eT4KICAgICAgICAgIDwvd2lkZ2V0PgogICAg ICAgICA8L2l0ZW0+Ci0gICAgICAgIDxpdGVtIHJvdz0iMiIgY29sdW1uPSIwIj4KLSAgICAgICAg IDx3aWRnZXQgY2xhc3M9IlFMYWJlbCIgbmFtZT0ibGFiZWxfNCI+Ci0gICAgICAgICAgPHByb3Bl cnR5IG5hbWU9InRleHQiPgotICAgICAgICAgICA8c3RyaW5nPldpbmRvdyBCYWNrZ3JvdW5kOjwv c3RyaW5nPgotICAgICAgICAgIDwvcHJvcGVydHk+Ci0gICAgICAgICA8L3dpZGdldD4KLSAgICAg ICAgPC9pdGVtPgogICAgICAgICA8aXRlbSByb3c9IjMiIGNvbHVtbj0iMSI+CiAgICAgICAgICA8 d2lkZ2V0IGNsYXNzPSJRQ2hlY2tCb3giIG5hbWU9Im1fY2hrUnViYmVyQmFuZCI+CiAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgpAQCAtMTk4LDcgKzIwMSwzMiBAQAogICAgICAgIDwv bGF5b3V0PgogICAgICAgPC9pdGVtPgogICAgICA8L2xheW91dD4KLSAgICAgPHpvcmRlcj48L3pv cmRlcj4KKyAgICA8L3dpZGdldD4KKyAgIDwvaXRlbT4KKyAgIDxpdGVtPgorICAgIDx3aWRnZXQg Y2xhc3M9IlFHcm91cEJveCIgbmFtZT0iZ3JvdXBCb3hfNCI+CisgICAgIDxwcm9wZXJ0eSBuYW1l PSJ0aXRsZSI+CisgICAgICA8c3RyaW5nPlRvb2wgT3B0aW9ucyAobmVlZHMgcmVzdGFydCk8L3N0 cmluZz4KKyAgICAgPC9wcm9wZXJ0eT4KKyAgICAgPGxheW91dCBjbGFzcz0iUUhCb3hMYXlvdXQi IG5hbWU9Imhvcml6b250YWxMYXlvdXRfMyI+CisgICAgICA8aXRlbT4KKyAgICAgICA8d2lkZ2V0 IGNsYXNzPSJRUmFkaW9CdXR0b24iIG5hbWU9Im1fcmFkaW9Ub29sT3B0aW9uc0luRG9ja2VyIj4K KyAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgorICAgICAgICAgPHN0cmluZz5JbiBEb2Nr ZXI8L3N0cmluZz4KKyAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICA8L3dpZGdldD4KKyAgICAg IDwvaXRlbT4KKyAgICAgIDxpdGVtPgorICAgICAgIDx3aWRnZXQgY2xhc3M9IlFSYWRpb0J1dHRv biIgbmFtZT0ibV9yYWRpb1Rvb2xPcHRpb25zSW5Ub29sYmFyIj4KKyAgICAgICAgPHByb3BlcnR5 IG5hbWU9InRleHQiPgorICAgICAgICAgPHN0cmluZz5JbiBUb29sYmFyPC9zdHJpbmc+CisgICAg ICAgIDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjaGVja2VkIj4KKyAgICAg ICAgIDxib29sPnRydWU8L2Jvb2w+CisgICAgICAgIDwvcHJvcGVydHk+CisgICAgICAgPC93aWRn ZXQ+CisgICAgICA8L2l0ZW0+CisgICAgIDwvbGF5b3V0PgogICAgIDwvd2lkZ2V0PgogICAgPC9p dGVtPgogICAgPGl0ZW0+CkBAIC0yNDUsNyArMjczLDcgQEAKICAgICAgICAgPC9wcm9wZXJ0eT4K ICAgICAgICA8L3dpZGdldD4KICAgICAgIDwvaXRlbT4KLSAgICAgIDxpdGVtIHJvdz0iMSIgY29s dW1uPSIwIj4KKyAgICAgIDxpdGVtIHJvdz0iMyIgY29sdW1uPSIwIj4KICAgICAgICA8d2lkZ2V0 IGNsYXNzPSJRTGFiZWwiIG5hbWU9ImxhYmVsIj4KICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNp emVQb2xpY3kiPgogICAgICAgICAgPHNpemVwb2xpY3kgaHNpemV0eXBlPSJQcmVmZXJyZWQiIHZz aXpldHlwZT0iUHJlZmVycmVkIj4KQEAgLTI2MSw3ICsyODksNyBAQAogICAgICAgICA8L3Byb3Bl cnR5PgogICAgICAgIDwvd2lkZ2V0PgogICAgICAgPC9pdGVtPgotICAgICAgPGl0ZW0gcm93PSIx IiBjb2x1bW49IjEiPgorICAgICAgPGl0ZW0gcm93PSIzIiBjb2x1bW49IjEiPgogICAgICAgIDx3 aWRnZXQgY2xhc3M9IlFTcGluQm94IiBuYW1lPSJtX3VuZG9TdGFja1NpemUiPgogICAgICAgICA8 cHJvcGVydHkgbmFtZT0ibWluaW11bSI+CiAgICAgICAgICA8bnVtYmVyPjA8L251bWJlcj4KQEAg LTI3Nyw3ICszMDUsNyBAQAogICAgICAgICA8L3Byb3BlcnR5PgogICAgICAgIDwvd2lkZ2V0Pgog ICAgICAgPC9pdGVtPgotICAgICAgPGl0ZW0gcm93PSIyIiBjb2x1bW49IjAiPgorICAgICAgPGl0 ZW0gcm93PSI0IiBjb2x1bW49IjAiPgogICAgICAgIDx3aWRnZXQgY2xhc3M9IlFMYWJlbCIgbmFt ZT0ibGFiZWxfMyI+CiAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaXplUG9saWN5Ij4KICAgICAg ICAgIDxzaXplcG9saWN5IGhzaXpldHlwZT0iUHJlZmVycmVkIiB2c2l6ZXR5cGU9IlByZWZlcnJl ZCI+CkBAIC0yOTMsNyArMzIxLDcgQEAKICAgICAgICAgPC9wcm9wZXJ0eT4KICAgICAgICA8L3dp ZGdldD4KICAgICAgIDwvaXRlbT4KLSAgICAgIDxpdGVtIHJvdz0iMiIgY29sdW1uPSIxIj4KKyAg ICAgIDxpdGVtIHJvdz0iNCIgY29sdW1uPSIxIj4KICAgICAgICA8d2lkZ2V0IGNsYXNzPSJRU3Bp bkJveCIgbmFtZT0ibV9mYXZvcml0ZVByZXNldHNTcGluQm94Ij4KICAgICAgICAgPHByb3BlcnR5 IG5hbWU9Im1pbmltdW0iPgogICAgICAgICAgPG51bWJlcj4xMDwvbnVtYmVyPgpAQCAtMzAzLDM0 ICszMzEsMzQgQEAKICAgICAgICAgPC9wcm9wZXJ0eT4KICAgICAgICA8L3dpZGdldD4KICAgICAg IDwvaXRlbT4KLSAgICAgIDxpdGVtIHJvdz0iMyIgY29sdW1uPSIxIj4KKyAgICAgIDxpdGVtIHJv dz0iNSIgY29sdW1uPSIxIj4KICAgICAgICA8d2lkZ2V0IGNsYXNzPSJRQ2hlY2tCb3giIG5hbWU9 ImNoa1Nob3dSb290TGF5ZXIiPgogICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+CiAgICAg ICAgICA8c3RyaW5nPlNob3cgcm9vdCBsYXllcjwvc3RyaW5nPgogICAgICAgICA8L3Byb3BlcnR5 PgogICAgICAgIDwvd2lkZ2V0PgogICAgICAgPC9pdGVtPgotICAgICAgPGl0ZW0gcm93PSI0IiBj b2x1bW49IjEiPgotICAgICAgIDx3aWRnZXQgY2xhc3M9IlFDaGVja0JveCIgbmFtZT0ibV9iYWNr dXBGaWxlQ2hlY2tCb3giPgotICAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+Ci0gICAgICAg ICA8c3RyaW5nPkNyZWF0ZSBiYWNrdXAgZmlsZSA8L3N0cmluZz4KLSAgICAgICAgPC9wcm9wZXJ0 eT4KLSAgICAgICA8L3dpZGdldD4KLSAgICAgIDwvaXRlbT4KLSAgICAgIDxpdGVtIHJvdz0iNSIg Y29sdW1uPSIxIj4KKyAgICAgIDxpdGVtIHJvdz0iNyIgY29sdW1uPSIxIj4KICAgICAgICA8d2lk Z2V0IGNsYXNzPSJRQ2hlY2tCb3giIG5hbWU9Im1faGlkZVNwbGFzaFNjcmVlbiI+CiAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KICAgICAgICAgIDxzdHJpbmc+SGlkZSBzcGxhc2ggc2Ny ZWVuIG9uIHN0YXJ0dXA8L3N0cmluZz4KICAgICAgICAgPC9wcm9wZXJ0eT4KICAgICAgICA8L3dp ZGdldD4KICAgICAgIDwvaXRlbT4KLSAgICAgIDxpdGVtIHJvdz0iNiIgY29sdW1uPSIxIj4KKyAg ICAgIDxpdGVtIHJvdz0iMSIgY29sdW1uPSIxIj4KICAgICAgICA8d2lkZ2V0IGNsYXNzPSJRQ2hl Y2tCb3giIG5hbWU9Im1fY2hrQ29tcHJlc3NLcmEiPgogICAgICAgICA8cHJvcGVydHkgbmFtZT0i dGV4dCI+CiAgICAgICAgICA8c3RyaW5nPkNvbXByZXNzIC5rcmEgZmlsZXMgbW9yZSAoc2xvd3Mg bG9hZGluZy9zYXZpbmcpPC9zdHJpbmc+CiAgICAgICAgIDwvcHJvcGVydHk+CiAgICAgICAgPC93 aWRnZXQ+CiAgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSByb3c9IjIiIGNvbHVtbj0iMSI+Cisg ICAgICAgPHdpZGdldCBjbGFzcz0iUUNoZWNrQm94IiBuYW1lPSJtX2JhY2t1cEZpbGVDaGVja0Jv eCI+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KKyAgICAgICAgIDxzdHJpbmc+Q3Jl YXRlIGJhY2t1cCBmaWxlIDwvc3RyaW5nPgorICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgIDwv d2lkZ2V0PgorICAgICAgPC9pdGVtPgogICAgICA8L2xheW91dD4KICAgICA8L3dpZGdldD4KICAg IDwvaXRlbT4KZGlmZiAtLWdpdCBhL2tyaXRhL3VpL2tpc19jb25maWcuY2MgYi9rcml0YS91aS9r aXNfY29uZmlnLmNjCmluZGV4IGRiMmRhOTEuLjE4NjViYTggMTAwNjQ0Ci0tLSBhL2tyaXRhL3Vp L2tpc19jb25maWcuY2MKKysrIGIva3JpdGEvdWkva2lzX2NvbmZpZy5jYwpAQCAtOTkxLDYgKzk5 MSwxNyBAQCB2b2lkIEtpc0NvbmZpZzo6c2V0Q2FudmFzU3RhdGUoY29uc3QgUVN0cmluZyYgc3Rh dGUpIGNvbnN0CiAgICAgfQogfQogCitib29sIEtpc0NvbmZpZzo6dG9vbE9wdGlvbnNQb3B1cERl dGFjaGVkKGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIHJldHVybiAoZGVmYXVsdFZh bHVlID8gZmFsc2UgOiBtX2NmZy5yZWFkRW50cnkoIlRvb2xPcHRpb25zUG9wdXBEZXRhY2hlZCIs IGZhbHNlKSk7Cit9CisKK3ZvaWQgS2lzQ29uZmlnOjpzZXRUb29sT3B0aW9uc1BvcHVwRGV0YWNo ZWQoYm9vbCBkZXRhY2hlZCkgY29uc3QKK3sKKyAgICBtX2NmZy53cml0ZUVudHJ5KCJUb29sT3B0 aW9uc1BvcHVwRGV0YWNoZWQiLCBkZXRhY2hlZCk7Cit9CisKKwogYm9vbCBLaXNDb25maWc6OnBh aW50b3BQb3B1cERldGFjaGVkKGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAogewogICAgIHJldHVy biAoZGVmYXVsdFZhbHVlID8gZmFsc2UgOiBtX2NmZy5yZWFkRW50cnkoIlBhaW50b3BQb3B1cERl dGFjaGVkIiwgZmFsc2UpKTsKQEAgLTE1MzcsNiArMTU0OCwxNiBAQCB2b2lkIEtpc0NvbmZpZzo6 c2V0Q29tcHJlc3NLcmEoYm9vbCBjb21wcmVzcykKICAgICBtX2NmZy53cml0ZUVudHJ5KCJjb21w cmVzc0xheWVyc0luS3JhIiwgY29tcHJlc3MpOwogfQogCitib29sIEtpc0NvbmZpZzo6dG9vbE9w dGlvbnNJbkRvY2tlcihib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gKGRl ZmF1bHRWYWx1ZSA/IGZhbHNlIDogbV9jZmcucmVhZEVudHJ5KCJUb29sT3B0aW9uc0luRG9ja2Vy IiwgZmFsc2UpKTsKK30KKwordm9pZCBLaXNDb25maWc6OnNldFRvb2xPcHRpb25zSW5Eb2NrZXIo Ym9vbCBpbkRvY2tlcikKK3sKKyAgICBtX2NmZy53cml0ZUVudHJ5KCJUb29sT3B0aW9uc0luRG9j a2VyIiwgaW5Eb2NrZXIpOworfQorCiBjb25zdCBLb0NvbG9yU3BhY2UqIEtpc0NvbmZpZzo6Y3Vz dG9tQ29sb3JTZWxlY3RvckNvbG9yU3BhY2UoYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7CiAg ICAgY29uc3QgS29Db2xvclNwYWNlICpjcyA9IDA7CmRpZmYgLS1naXQgYS9rcml0YS91aS9raXNf Y29uZmlnLmggYi9rcml0YS91aS9raXNfY29uZmlnLmgKaW5kZXggZDIxODQ4YS4uYzBjZTAyYiAx MDA2NDQKLS0tIGEva3JpdGEvdWkva2lzX2NvbmZpZy5oCisrKyBiL2tyaXRhL3VpL2tpc19jb25m aWcuaApAQCAtMjY0LDYgKzI2NCw5IEBAIHB1YmxpYzoKICAgICBRU3RyaW5nIGNhbnZhc1N0YXRl KGJvb2wgZGVmYXVsdFZhbHVlID0gZmFsc2UpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2FudmFzU3Rh dGUoY29uc3QgUVN0cmluZyYgc3RhdGUpIGNvbnN0OwogCisgICAgYm9vbCB0b29sT3B0aW9uc1Bv cHVwRGV0YWNoZWQoYm9vbCBkZWZhdWx0VmFsdWUgPSBmYWxzZSkgY29uc3Q7CisgICAgdm9pZCBz ZXRUb29sT3B0aW9uc1BvcHVwRGV0YWNoZWQoYm9vbCBkZXRhY2hlZCkgY29uc3Q7CisKICAgICBi b29sIHBhaW50b3BQb3B1cERldGFjaGVkKGJvb2wgZGVmYXVsdFZhbHVlID0gZmFsc2UpIGNvbnN0 OwogICAgIHZvaWQgc2V0UGFpbnRvcFBvcHVwRGV0YWNoZWQoYm9vbCBkZXRhY2hlZCkgY29uc3Q7 CiAKQEAgLTQ1MSw2ICs0NTQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb21wcmVzc0tyYShib29s IGRlZmF1bHRWYWx1ZSA9IGZhbHNlKSBjb25zdDsKICAgICB2b2lkIHNldENvbXByZXNzS3JhKGJv b2wgY29tcHJlc3MpOwogCisgICAgYm9vbCB0b29sT3B0aW9uc0luRG9ja2VyKGJvb2wgZGVmYXVs dFZhbHVlID0gZmFsc2UpIGNvbnN0OworICAgIHZvaWQgc2V0VG9vbE9wdGlvbnNJbkRvY2tlcihi b29sIGluRG9ja2VyKTsKKwogICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICAgdm9pZCB3cml0ZUVu dHJ5KGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFQmIHZhbHVlKSB7CiAgICAgICAgIG1fY2Zn LndyaXRlRW50cnkobmFtZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEva3JpdGEvdWkva2lzX3BhaW50 b3BfYm94LmNjIGIva3JpdGEvdWkva2lzX3BhaW50b3BfYm94LmNjCmluZGV4IGE2OTY4ZTMuLjIz MWExNTEgMTAwNjQ0Ci0tLSBhL2tyaXRhL3VpL2tpc19wYWludG9wX2JveC5jYworKysgYi9rcml0 YS91aS9raXNfcGFpbnRvcF9ib3guY2MKQEAgLTY1LDcgKzY1LDkgQEAKICNpbmNsdWRlICJraXNf Y29uZmlnLmgiCiAKICNpbmNsdWRlICJ3aWRnZXRzL2tpc19wb3B1cF9idXR0b24uaCIKKyNpbmNs dWRlICJ3aWRnZXRzL2tpc190b29sX29wdGlvbnNfcG9wdXAuaCIKICNpbmNsdWRlICJ3aWRnZXRz L2tpc19wYWludG9wX3ByZXNldHNfcG9wdXAuaCIKKyNpbmNsdWRlICJ3aWRnZXRzL2tpc190b29s X29wdGlvbnNfcG9wdXAuaCIKICNpbmNsdWRlICJ3aWRnZXRzL2tpc19wYWludG9wX3ByZXNldHNf Y2hvb3Nlcl9wb3B1cC5oIgogI2luY2x1ZGUgIndpZGdldHMva2lzX3dvcmtzcGFjZV9jaG9vc2Vy LmgiCiAjaW5jbHVkZSAid2lkZ2V0cy9raXNfcGFpbnRvcF9saXN0X3dpZGdldC5oIgpAQCAtODQs OSArODYsMTAgQEAgS2lzUGFpbnRvcEJveDo6S2lzUGFpbnRvcEJveChLaXNWaWV3TWFuYWdlciAq dmlldywgUVdpZGdldCAqcGFyZW50LCBjb25zdCBjaGFyICoKICAgICA6IFFXaWRnZXQocGFyZW50 KQogICAgICwgbV9yZXNvdXJjZVByb3ZpZGVyKHZpZXctPnJlc291cmNlUHJvdmlkZXIoKSkKICAg ICAsIG1fb3B0aW9uV2lkZ2V0KDApCi0gICAgLCBtX3NldHRpbmdzV2lkZ2V0KDApCi0gICAgLCBt X3ByZXNldFdpZGdldCgwKQotICAgICwgbV9icnVzaENob29zZXIoMCkKKyAgICAsIG1fdG9vbE9w dGlvbnNQb3B1cEJ1dHRvbigwKQorICAgICwgbV9icnVzaEVkaXRvclBvcHVwQnV0dG9uKDApCisg ICAgLCBtX3ByZXNldFNlbGVjdG9yUG9wdXBCdXR0b24oMCkKKyAgICAsIG1fdG9vbE9wdGlvbnNQ b3B1cCgwKQogICAgICwgbV92aWV3TWFuYWdlcih2aWV3KQogICAgICwgbV9wcmV2aW91c05vZGUo MCkKICAgICAsIG1fY3VyclRhYmxldFRvb2xJRChLb0lucHV0RGV2aWNlOjppbnZhbGlkKCkpCkBA IC0xMDgsMTggKzExMSwyOCBAQCBLaXNQYWludG9wQm94OjpLaXNQYWludG9wQm94KEtpc1ZpZXdN YW5hZ2VyICp2aWV3LCBRV2lkZ2V0ICpwYXJlbnQsIGNvbnN0IGNoYXIgKgogCiAgICAgc2V0V2lu ZG93VGl0bGUoaTE4bigiUGFpbnRlcidzIFRvb2xjaGVzdCIpKTsKIAotICAgIG1fc2V0dGluZ3NX aWRnZXQgPSBuZXcgS2lzUG9wdXBCdXR0b24odGhpcyk7Ci0gICAgbV9zZXR0aW5nc1dpZGdldC0+ c2V0SWNvbihrb0ljb24oInBhaW50b3Bfc2V0dGluZ3NfMDIiKSk7Ci0gICAgbV9zZXR0aW5nc1dp ZGdldC0+c2V0VG9vbFRpcChpMThuKCJFZGl0IGJydXNoIHNldHRpbmdzIikpOwotICAgIG1fc2V0 dGluZ3NXaWRnZXQtPnNldEZpeGVkU2l6ZSgzMiwgMzIpOworICAgIEtDb25maWdHcm91cCBncnAg PSBLR2xvYmFsOjpjb25maWcoKS0+Z3JvdXAoImtyaXRhIikuZ3JvdXAoIlRvb2xiYXIgQnJ1c2hl c0FuZFN0dWZmIik7CisgICAgaW50IGljb25zaXplID0gZ3JwLnJlYWRFbnRyeSgiSWNvblNpemUi LCAzMik7CiAKLSAgICBtX3ByZXNldFdpZGdldCA9IG5ldyBLaXNQb3B1cEJ1dHRvbih0aGlzKTsK LSAgICBtX3ByZXNldFdpZGdldC0+c2V0SWNvbihrb0ljb24oInBhaW50b3Bfc2V0dGluZ3NfMDEi KSk7Ci0gICAgbV9wcmVzZXRXaWRnZXQtPnNldFRvb2xUaXAoaTE4bigiQ2hvb3NlIGJydXNoIHBy ZXNldCIpKTsKLSAgICBtX3ByZXNldFdpZGdldC0+c2V0Rml4ZWRTaXplKDMyLCAzMik7CisgICAg aWYgKCFjZmcudG9vbE9wdGlvbnNJbkRvY2tlcigpKSB7CisgICAgICAgIG1fdG9vbE9wdGlvbnNQ b3B1cEJ1dHRvbiA9IG5ldyBLaXNQb3B1cEJ1dHRvbih0aGlzKTsKKyAgICAgICAgbV90b29sT3B0 aW9uc1BvcHVwQnV0dG9uLT5zZXRJY29uKGtvSWNvbigiY29uZmlndXJlIikpOworICAgICAgICBt X3Rvb2xPcHRpb25zUG9wdXBCdXR0b24tPnNldFRvb2xUaXAoaTE4bigiVG9vbCBTZXR0aW5ncyIp KTsKKyAgICAgICAgbV90b29sT3B0aW9uc1BvcHVwQnV0dG9uLT5zZXRGaXhlZFNpemUoaWNvbnNp emUsIGljb25zaXplKTsKKyAgICB9CisKKyAgICBtX2JydXNoRWRpdG9yUG9wdXBCdXR0b24gPSBu ZXcgS2lzUG9wdXBCdXR0b24odGhpcyk7CisgICAgbV9icnVzaEVkaXRvclBvcHVwQnV0dG9uLT5z ZXRJY29uKGtvSWNvbigicGFpbnRvcF9zZXR0aW5nc18wMiIpKTsKKyAgICBtX2JydXNoRWRpdG9y UG9wdXBCdXR0b24tPnNldFRvb2xUaXAoaTE4bigiRWRpdCBicnVzaCBzZXR0aW5ncyIpKTsKKyAg ICBtX2JydXNoRWRpdG9yUG9wdXBCdXR0b24tPnNldEZpeGVkU2l6ZShpY29uc2l6ZSwgaWNvbnNp emUpOworCisgICAgbV9wcmVzZXRTZWxlY3RvclBvcHVwQnV0dG9uID0gbmV3IEtpc1BvcHVwQnV0 dG9uKHRoaXMpOworICAgIG1fcHJlc2V0U2VsZWN0b3JQb3B1cEJ1dHRvbi0+c2V0SWNvbihrb0lj b24oInBhaW50b3Bfc2V0dGluZ3NfMDEiKSk7CisgICAgbV9wcmVzZXRTZWxlY3RvclBvcHVwQnV0 dG9uLT5zZXRUb29sVGlwKGkxOG4oIkNob29zZSBicnVzaCBwcmVzZXQiKSk7CisgICAgbV9wcmVz ZXRTZWxlY3RvclBvcHVwQnV0dG9uLT5zZXRGaXhlZFNpemUoaWNvbnNpemUsIGljb25zaXplKTsK IAogICAgIG1fZXJhc2VNb2RlQnV0dG9uID0gbmV3IFFUb29sQnV0dG9uKHRoaXMpOwotICAgIG1f ZXJhc2VNb2RlQnV0dG9uLT5zZXRGaXhlZFNpemUoMzIsIDMyKTsKKyAgICBtX2VyYXNlTW9kZUJ1 dHRvbi0+c2V0Rml4ZWRTaXplKGljb25zaXplLCBpY29uc2l6ZSk7CiAgICAgbV9lcmFzZU1vZGVC dXR0b24tPnNldENoZWNrYWJsZSh0cnVlKTsKIAogICAgIEtpc0FjdGlvbiogZXJhc2VBY3Rpb24g PSBuZXcgS2lzQWN0aW9uKGkxOG4oIlNldCBlcmFzZXIgbW9kZSIpLCBtX2VyYXNlTW9kZUJ1dHRv bik7CkBAIC0xMzMsNyArMTQ2LDcgQEAgS2lzUGFpbnRvcEJveDo6S2lzUGFpbnRvcEJveChLaXNW aWV3TWFuYWdlciAqdmlldywgUVdpZGdldCAqcGFyZW50LCBjb25zdCBjaGFyICoKICAgICBlcmFz ZXJCcnVzaFNpemUgPSAwOyAvLyBicnVzaCBzaXplIGNoYW5nZWQgd2hlbiB1c2luZyBlcmFzZSBt b2RlCiAKICAgICBtX3JlbG9hZEJ1dHRvbiA9IG5ldyBRVG9vbEJ1dHRvbih0aGlzKTsKLSAgICBt X3JlbG9hZEJ1dHRvbi0+c2V0Rml4ZWRTaXplKDMyLCAzMik7CisgICAgbV9yZWxvYWRCdXR0b24t PnNldEZpeGVkU2l6ZShpY29uc2l6ZSwgaWNvbnNpemUpOwogICAgIG1fcmVsb2FkQnV0dG9uLT5z ZXRDaGVja2FibGUodHJ1ZSk7CiAKICAgICBLaXNBY3Rpb24qIHJlbG9hZEFjdGlvbiA9IG5ldyBL aXNBY3Rpb24oaTE4bigiUmVsb2FkIE9yaWdpbmFsIFByZXNldCIpLCBtX3JlbG9hZEJ1dHRvbik7 CkBAIC0xNDIsOSArMTU1LDggQEAgS2lzUGFpbnRvcEJveDo6S2lzUGFpbnRvcEJveChLaXNWaWV3 TWFuYWdlciAqdmlldywgUVdpZGdldCAqcGFyZW50LCBjb25zdCBjaGFyICoKICAgICBtX3JlbG9h ZEJ1dHRvbi0+c2V0RGVmYXVsdEFjdGlvbihyZWxvYWRBY3Rpb24pOwogICAgIG1fdmlld01hbmFn ZXItPmFjdGlvbkNvbGxlY3Rpb24oKS0+YWRkQWN0aW9uKCJyZWxvYWRfcHJlc2V0X2FjdGlvbiIs IHJlbG9hZEFjdGlvbik7CiAKLQogICAgIG1fYWxwaGFMb2NrQnV0dG9uID0gbmV3IFFUb29sQnV0 dG9uKHRoaXMpOwotICAgIG1fYWxwaGFMb2NrQnV0dG9uLT5zZXRGaXhlZFNpemUoMzIsIDMyKTsK KyAgICBtX2FscGhhTG9ja0J1dHRvbi0+c2V0Rml4ZWRTaXplKGljb25zaXplLCBpY29uc2l6ZSk7 CiAgICAgbV9hbHBoYUxvY2tCdXR0b24tPnNldENoZWNrYWJsZSh0cnVlKTsKICAgICBLaXNBY3Rp b24qIGFscGhhTG9ja0FjdGlvbiA9IG5ldyBLaXNBY3Rpb24oaTE4bigiUHJlc2VydmUgQWxwaGEi KSwgbV9hbHBoYUxvY2tCdXR0b24pOwogICAgIGFscGhhTG9ja0FjdGlvbi0+c2V0QWN0aXZhdGlv bkZsYWdzKEtpc0FjdGlvbjo6QUNUSVZFX0RFVklDRSk7CkBAIC0xNTMsMjYgKzE2NSwyNiBAQCBL aXNQYWludG9wQm94OjpLaXNQYWludG9wQm94KEtpc1ZpZXdNYW5hZ2VyICp2aWV3LCBRV2lkZ2V0 ICpwYXJlbnQsIGNvbnN0IGNoYXIgKgogICAgIG1fYWxwaGFMb2NrQnV0dG9uLT5zZXREZWZhdWx0 QWN0aW9uKGFscGhhTG9ja0FjdGlvbik7CiAgICAgbV92aWV3TWFuYWdlci0+YWN0aW9uQ29sbGVj dGlvbigpLT5hZGRBY3Rpb24oInByZXNlcnZlX2FscGhhIiwgYWxwaGFMb2NrQWN0aW9uKTsKIAot ICAgIGhNaXJyb3JCdXR0b24gPSBuZXcgUVRvb2xCdXR0b24odGhpcyk7Ci0gICAgaE1pcnJvckJ1 dHRvbi0+c2V0Rml4ZWRTaXplKDMyLCAzMik7Ci0gICAgaE1pcnJvckJ1dHRvbi0+c2V0Q2hlY2th YmxlKHRydWUpOworICAgIG1faE1pcnJvckJ1dHRvbiA9IG5ldyBRVG9vbEJ1dHRvbih0aGlzKTsK KyAgICBtX2hNaXJyb3JCdXR0b24tPnNldEZpeGVkU2l6ZShpY29uc2l6ZSwgaWNvbnNpemUpOwor ICAgIG1faE1pcnJvckJ1dHRvbi0+c2V0Q2hlY2thYmxlKHRydWUpOwogCi0gICAgbV9oTWlycm9y QWN0aW9uID0gbmV3IEtpc0FjdGlvbihpMThuKCJTZXQgaG9yaXpvbnRhbCBtaXJyb3IgbW9kZSIp LCBoTWlycm9yQnV0dG9uKTsKKyAgICBtX2hNaXJyb3JBY3Rpb24gPSBuZXcgS2lzQWN0aW9uKGkx OG4oIlNldCBob3Jpem9udGFsIG1pcnJvciBtb2RlIiksIG1faE1pcnJvckJ1dHRvbik7CiAgICAg bV9oTWlycm9yQWN0aW9uLT5zZXRJY29uKHRoZW1lZEljb24oInN5bW1ldHJ5LWhvcml6b250YWwi KSk7CiAgICAgbV9oTWlycm9yQWN0aW9uLT5zZXRBY3RpdmF0aW9uRmxhZ3MoS2lzQWN0aW9uOjpB Q1RJVkVfREVWSUNFKTsKICAgICBtX2hNaXJyb3JBY3Rpb24tPnNldENoZWNrYWJsZSh0cnVlKTsK LSAgICBoTWlycm9yQnV0dG9uLT5zZXREZWZhdWx0QWN0aW9uKG1faE1pcnJvckFjdGlvbik7Cisg ICAgbV9oTWlycm9yQnV0dG9uLT5zZXREZWZhdWx0QWN0aW9uKG1faE1pcnJvckFjdGlvbik7CiAg ICAgbV92aWV3TWFuYWdlci0+YWN0aW9uQ29sbGVjdGlvbigpLT5hZGRBY3Rpb24oImhtaXJyb3Jf YWN0aW9uIiwgbV9oTWlycm9yQWN0aW9uKTsKIAotICAgIHZNaXJyb3JCdXR0b24gPSBuZXcgUVRv b2xCdXR0b24odGhpcyk7Ci0gICAgdk1pcnJvckJ1dHRvbi0+c2V0Rml4ZWRTaXplKDMyLCAzMik7 Ci0gICAgdk1pcnJvckJ1dHRvbi0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgIG1fdk1pcnJvckJ1 dHRvbiA9IG5ldyBRVG9vbEJ1dHRvbih0aGlzKTsKKyAgICBtX3ZNaXJyb3JCdXR0b24tPnNldEZp eGVkU2l6ZShpY29uc2l6ZSwgaWNvbnNpemUpOworICAgIG1fdk1pcnJvckJ1dHRvbi0+c2V0Q2hl Y2thYmxlKHRydWUpOwogCi0gICAgbV92TWlycm9yQWN0aW9uID0gbmV3IEtpc0FjdGlvbihpMThu KCJTZXQgdmVydGljYWwgbWlycm9yIG1vZGUiKSwgdk1pcnJvckJ1dHRvbik7CisgICAgbV92TWly cm9yQWN0aW9uID0gbmV3IEtpc0FjdGlvbihpMThuKCJTZXQgdmVydGljYWwgbWlycm9yIG1vZGUi KSwgbV92TWlycm9yQnV0dG9uKTsKICAgICBtX3ZNaXJyb3JBY3Rpb24tPnNldEFjdGl2YXRpb25G bGFncyhLaXNBY3Rpb246OkFDVElWRV9ERVZJQ0UpOwogICAgIG1fdk1pcnJvckFjdGlvbi0+c2V0 SWNvbih0aGVtZWRJY29uKCJzeW1tZXRyeS12ZXJ0aWNhbCIpKTsKICAgICBtX3ZNaXJyb3JBY3Rp b24tPnNldENoZWNrYWJsZSh0cnVlKTsKLSAgICB2TWlycm9yQnV0dG9uLT5zZXREZWZhdWx0QWN0 aW9uKG1fdk1pcnJvckFjdGlvbik7CisgICAgbV92TWlycm9yQnV0dG9uLT5zZXREZWZhdWx0QWN0 aW9uKG1fdk1pcnJvckFjdGlvbik7CiAgICAgbV92aWV3TWFuYWdlci0+YWN0aW9uQ29sbGVjdGlv bigpLT5hZGRBY3Rpb24oInZtaXJyb3JfYWN0aW9uIiwgbV92TWlycm9yQWN0aW9uKTsKIAogICAg IGNvbnN0IGJvb2wgc2xpZGVyTGFiZWxzID0gY2ZnLnNsaWRlckxhYmVscygpOwpAQCAtMjA4LDEz ICsyMjAsMTMgQEAgS2lzUGFpbnRvcEJveDo6S2lzUGFpbnRvcEJveChLaXNWaWV3TWFuYWdlciAq dmlldywgUVdpZGdldCAqcGFyZW50LCBjb25zdCBjaGFyICoKICAgICAgICAgc2xPcGFjaXR5LT5z ZXRWYWx1ZSgxLjApOwogICAgICAgICBzbE9wYWNpdHktPnNldFNpbmdsZVN0ZXAoMC4wNSk7CiAg ICAgICAgIHNsT3BhY2l0eS0+c2V0TWluaW11bVdpZHRoKHFNYXgoc2xpZGVyV2lkdGgsIHNsT3Bh Y2l0eS0+c2l6ZUhpbnQoKS53aWR0aCgpKSk7Ci0gICAgICAgIHNsT3BhY2l0eS0+c2V0Rml4ZWRI ZWlnaHQoMzIpOworICAgICAgICBzbE9wYWNpdHktPnNldEZpeGVkSGVpZ2h0KGljb25zaXplKTsK IAogICAgICAgICBzbEZsb3ctPnNldFJhbmdlKDAuMCwgMS4wLCAyKTsKICAgICAgICAgc2xGbG93 LT5zZXRWYWx1ZSgxLjApOwogICAgICAgICBzbEZsb3ctPnNldFNpbmdsZVN0ZXAoMC4wNSk7CiAg ICAgICAgIHNsRmxvdy0+c2V0TWluaW11bVdpZHRoKHFNYXgoc2xpZGVyV2lkdGgsIHNsRmxvdy0+ c2l6ZUhpbnQoKS53aWR0aCgpKSk7Ci0gICAgICAgIHNsRmxvdy0+c2V0Rml4ZWRIZWlnaHQoMzIp OworICAgICAgICBzbEZsb3ctPnNldEZpeGVkSGVpZ2h0KGljb25zaXplKTsKIAogICAgICAgICBz bFNpemUtPnNldFJhbmdlKDAsIDEwMDAsIDIpOwogICAgICAgICBzbFNpemUtPnNldFZhbHVlKDEw MCk7CkBAIC0yMjMsMTMgKzIzNSwxMyBAQCBLaXNQYWludG9wQm94OjpLaXNQYWludG9wQm94KEtp c1ZpZXdNYW5hZ2VyICp2aWV3LCBRV2lkZ2V0ICpwYXJlbnQsIGNvbnN0IGNoYXIgKgogICAgICAg ICBzbFNpemUtPnNldEV4cG9uZW50UmF0aW8oMy4wKTsKICAgICAgICAgc2xTaXplLT5zZXRTdWZm aXgoIiBweCIpOwogICAgICAgICBzbFNpemUtPnNldE1pbmltdW1XaWR0aChxTWF4KHNsaWRlcldp ZHRoLCBzbFNpemUtPnNpemVIaW50KCkud2lkdGgoKSkpOwotICAgICAgICBzbFNpemUtPnNldEZp eGVkSGVpZ2h0KDMyKTsKKyAgICAgICAgc2xTaXplLT5zZXRGaXhlZEhlaWdodChpY29uc2l6ZSk7 CiAKICAgICAgICAgbV9zbGlkZXJDaG9vc2VyW2ldLT5jaG9vc2VXaWRnZXQoY2ZnLnRvb2xiYXJT bGlkZXIoaSArIDEpKTsKICAgICB9CiAKICAgICBtX2NtYkNvbXBvc2l0ZU9wID0gbmV3IEtpc0Nv bXBvc2l0ZU9wQ29tYm9Cb3goKTsKLSAgICBtX2NtYkNvbXBvc2l0ZU9wLT5zZXRGaXhlZEhlaWdo dCgzMik7CisgICAgbV9jbWJDb21wb3NpdGVPcC0+c2V0Rml4ZWRIZWlnaHQoaWNvbnNpemUpOwog ICAgIGZvcmVhY2goS0FjdGlvbiAqIGEsIG1fY21iQ29tcG9zaXRlT3AtPmJsZW5kbW9kZUFjdGlv bnMoKSkgewogICAgICAgICBtX3ZpZXdNYW5hZ2VyLT5hY3Rpb25Db2xsZWN0aW9uKCktPmFkZEFj dGlvbihhLT50ZXh0KCksIGEpOwogICAgIH0KQEAgLTIzNyw3ICsyNDksNyBAQCBLaXNQYWludG9w Qm94OjpLaXNQYWludG9wQm94KEtpc1ZpZXdNYW5hZ2VyICp2aWV3LCBRV2lkZ2V0ICpwYXJlbnQs IGNvbnN0IGNoYXIgKgogICAgIG1fd29ya3NwYWNlV2lkZ2V0ID0gbmV3IEtpc1BvcHVwQnV0dG9u KHRoaXMpOwogICAgIG1fd29ya3NwYWNlV2lkZ2V0LT5zZXRJY29uKGtvSWNvbigid29ya3NwYWNl LWNob29zZXIiKSk7CiAgICAgbV93b3Jrc3BhY2VXaWRnZXQtPnNldFRvb2xUaXAoaTE4bigiQ2hv b3NlIHdvcmtzcGFjZSIpKTsKLSAgICBtX3dvcmtzcGFjZVdpZGdldC0+c2V0Rml4ZWRTaXplKDMy LCAzMik7CisgICAgbV93b3Jrc3BhY2VXaWRnZXQtPnNldEZpeGVkU2l6ZShpY29uc2l6ZSwgaWNv bnNpemUpOwogICAgIG1fd29ya3NwYWNlV2lkZ2V0LT5zZXRQb3B1cFdpZGdldChuZXcgS2lzV29y a3NwYWNlQ2hvb3Nlcih2aWV3KSk7CiAKICAgICBRSEJveExheW91dCogYmFzZUxheW91dCA9IG5l dyBRSEJveExheW91dCh0aGlzKTsKQEAgLTI0Nyw4ICsyNTksMTEgQEAgS2lzUGFpbnRvcEJveDo6 S2lzUGFpbnRvcEJveChLaXNWaWV3TWFuYWdlciAqdmlldywgUVdpZGdldCAqcGFyZW50LCBjb25z dCBjaGFyICoKICAgICBiYXNlTGF5b3V0LT5zZXRDb250ZW50c01hcmdpbnMoMCwgMCwgMCwgMCk7 CiAKICAgICBtX2xheW91dCA9IG5ldyBRSEJveExheW91dChtX3BhaW50b3BXaWRnZXQpOwotICAg IG1fbGF5b3V0LT5hZGRXaWRnZXQobV9zZXR0aW5nc1dpZGdldCk7Ci0gICAgbV9sYXlvdXQtPmFk ZFdpZGdldChtX3ByZXNldFdpZGdldCk7CisgICAgaWYgKCFjZmcudG9vbE9wdGlvbnNJbkRvY2tl cigpKSB7CisgICAgICAgIG1fbGF5b3V0LT5hZGRXaWRnZXQobV90b29sT3B0aW9uc1BvcHVwQnV0 dG9uKTsKKyAgICB9CisgICAgbV9sYXlvdXQtPmFkZFdpZGdldChtX2JydXNoRWRpdG9yUG9wdXBC dXR0b24pOworICAgIG1fbGF5b3V0LT5hZGRXaWRnZXQobV9wcmVzZXRTZWxlY3RvclBvcHVwQnV0 dG9uKTsKICAgICBtX2xheW91dC0+c2V0U3BhY2luZyg0KTsKICAgICBtX2xheW91dC0+c2V0Q29u dGVudHNNYXJnaW5zKDAsIDAsIDAsIDApOwogCkBAIC0yOTksMTAgKzMxNCwxNyBAQCBLaXNQYWlu dG9wQm94OjpLaXNQYWludG9wQm94KEtpc1ZpZXdNYW5hZ2VyICp2aWV3LCBRV2lkZ2V0ICpwYXJl bnQsIGNvbnN0IGNoYXIgKgogICAgIGFjdGlvbi0+c2V0U2hvcnRjdXQoS1Nob3J0Y3V0KFF0OjpL ZXlfU2xhc2gpKTsKICAgICBjb25uZWN0KGFjdGlvbiwgU0lHTkFMKHRyaWdnZXJlZCgpKSwgdGhp cywgU0xPVChzbG90U3dpdGNoVG9QcmV2aW91c1ByZXNldCgpKSk7CiAKKyAgICBpZiAoIWNmZy50 b29sT3B0aW9uc0luRG9ja2VyKCkpIHsKKyAgICAgICAgYWN0aW9uID0gbmV3IEtBY3Rpb24oaTE4 bigiU2hvdyBUb29sIE9wdGlvbnMiKSwgdGhpcyk7CisgICAgICAgIHZpZXctPmFjdGlvbkNvbGxl Y3Rpb24oKS0+YWRkQWN0aW9uKCJzaG93X3Rvb2xfb3B0aW9ucyIsIGFjdGlvbik7CisgICAgICAg IGFjdGlvbi0+c2V0U2hvcnRjdXQoUXQ6OktleV9CYWNrc2xhc2gpOworICAgICAgICBjb25uZWN0 KGFjdGlvbiwgU0lHTkFMKHRyaWdnZXJlZCgpKSwgbV90b29sT3B0aW9uc1BvcHVwQnV0dG9uLCBT TE9UKHNob3dQb3B1cFdpZGdldCgpKSk7CisgICAgfQorCiAgICAgUVdpZGdldCogbWlycm9yQWN0 aW9ucyA9IG5ldyBRV2lkZ2V0KHRoaXMpOwogICAgIFFIQm94TGF5b3V0KiBtaXJyb3JMYXlvdXQg PSBuZXcgUUhCb3hMYXlvdXQobWlycm9yQWN0aW9ucyk7Ci0gICAgbWlycm9yTGF5b3V0LT5hZGRX aWRnZXQoaE1pcnJvckJ1dHRvbik7Ci0gICAgbWlycm9yTGF5b3V0LT5hZGRXaWRnZXQodk1pcnJv ckJ1dHRvbik7CisgICAgbWlycm9yTGF5b3V0LT5hZGRXaWRnZXQobV9oTWlycm9yQnV0dG9uKTsK KyAgICBtaXJyb3JMYXlvdXQtPmFkZFdpZGdldChtX3ZNaXJyb3JCdXR0b24pOwogICAgIG1pcnJv ckxheW91dC0+c2V0U3BhY2luZyg0KTsKICAgICBtaXJyb3JMYXlvdXQtPnNldENvbnRlbnRzTWFy Z2lucygwLCAwLCAwLCAwKTsKICAgICBhY3Rpb24gPSBuZXcgS0FjdGlvbihpMThuKCJNaXJyb3Ii KSwgdGhpcyk7CkBAIC0zMTMsMTMgKzMzNSwxOSBAQCBLaXNQYWludG9wQm94OjpLaXNQYWludG9w Qm94KEtpc1ZpZXdNYW5hZ2VyICp2aWV3LCBRV2lkZ2V0ICpwYXJlbnQsIGNvbnN0IGNoYXIgKgog ICAgIHZpZXctPmFjdGlvbkNvbGxlY3Rpb24oKS0+YWRkQWN0aW9uKCJ3b3Jrc3BhY2VzIiwgYWN0 aW9uKTsKICAgICBhY3Rpb24tPnNldERlZmF1bHRXaWRnZXQobV93b3Jrc3BhY2VXaWRnZXQpOwog CisgICAgaWYgKCFjZmcudG9vbE9wdGlvbnNJbkRvY2tlcigpKSB7CisgICAgICAgIG1fdG9vbE9w dGlvbnNQb3B1cCA9IG5ldyBLaXNUb29sT3B0aW9uc1BvcHVwKCk7CisgICAgICAgIG1fdG9vbE9w dGlvbnNQb3B1cEJ1dHRvbi0+c2V0UG9wdXBXaWRnZXQobV90b29sT3B0aW9uc1BvcHVwKTsKKyAg ICAgICAgbV90b29sT3B0aW9uc1BvcHVwLT5zd2l0Y2hEZXRhY2hlZChmYWxzZSk7CisgICAgfQor CiAgICAgbV9wcmVzZXRzUG9wdXAgPSBuZXcgS2lzUGFpbnRPcFByZXNldHNQb3B1cChtX3Jlc291 cmNlUHJvdmlkZXIpOwotICAgIG1fc2V0dGluZ3NXaWRnZXQtPnNldFBvcHVwV2lkZ2V0KG1fcHJl c2V0c1BvcHVwKTsKKyAgICBtX2JydXNoRWRpdG9yUG9wdXBCdXR0b24tPnNldFBvcHVwV2lkZ2V0 KG1fcHJlc2V0c1BvcHVwKTsKICAgICBtX3ByZXNldHNQb3B1cC0+c3dpdGNoRGV0YWNoZWQoZmFs c2UpOwogCiAgICAgbV9wcmVzZXRzQ2hvb3NlclBvcHVwID0gbmV3IEtpc1BhaW50T3BQcmVzZXRz Q2hvb3NlclBvcHVwKCk7CiAgICAgbV9wcmVzZXRzQ2hvb3NlclBvcHVwLT5zZXRGaXhlZFNpemUo NTAwLCA2MDApOwotICAgIG1fcHJlc2V0V2lkZ2V0LT5zZXRQb3B1cFdpZGdldChtX3ByZXNldHND aG9vc2VyUG9wdXApOworICAgIG1fcHJlc2V0U2VsZWN0b3JQb3B1cEJ1dHRvbi0+c2V0UG9wdXBX aWRnZXQobV9wcmVzZXRzQ2hvb3NlclBvcHVwKTsKIAogICAgIG1fcHJldkNvbXBvc2l0ZU9wSUQg PSBLb0NvbXBvc2l0ZU9wUmVnaXN0cnk6Omluc3RhbmNlKCkuZ2V0RGVmYXVsdENvbXBvc2l0ZU9w KCkuaWQoKTsKICAgICBtX2N1cnJDb21wb3NpdGVPcElEID0gS29Db21wb3NpdGVPcFJlZ2lzdHJ5 OjppbnN0YW5jZSgpLmdldERlZmF1bHRDb21wb3NpdGVPcCgpLmlkKCk7CkBAIC00MTQsNiArNDQy LDEzIEBAIHZvaWQgS2lzUGFpbnRvcEJveDo6cmVzdG9yZVJlc291cmNlKEtvUmVzb3VyY2UqIHJl c291cmNlKQogICAgIH0KIH0KIAordm9pZCBLaXNQYWludG9wQm94OjpuZXdPcHRpb25XaWRnZXRz KGNvbnN0IFFMaXN0PFFQb2ludGVyPFFXaWRnZXQ+ID4gJm9wdGlvbldpZGdldExpc3QpCit7Cisg ICAgaWYgKG1fdG9vbE9wdGlvbnNQb3B1cCkgeworICAgICAgICBtX3Rvb2xPcHRpb25zUG9wdXAt Pm5ld09wdGlvbldpZGdldHMob3B0aW9uV2lkZ2V0TGlzdCk7CisgICAgfQorfQorCiB2b2lkIEtp c1BhaW50b3BCb3g6OnJlc291cmNlU2VsZWN0ZWQoS29SZXNvdXJjZSogcmVzb3VyY2UpCiB7CiAg ICAgS2lzUGFpbnRPcFByZXNldCogcHJlc2V0ID0gZHluYW1pY19jYXN0PEtpc1BhaW50T3BQcmVz ZXQqPihyZXNvdXJjZSk7CkBAIC00ODgsNyArNTIzLDcgQEAgdm9pZCBLaXNQYWludG9wQm94Ojpz ZXRDdXJyZW50UGFpbnRvcChjb25zdCBLb0lEJiBwYWludG9wLCBLaXNQYWludE9wUHJlc2V0U1Ag cHIKIAogICAgIG1fcHJlc2V0c1BvcHVwLT5zZXRQYWludE9wU2V0dGluZ3NXaWRnZXQobV9vcHRp b25XaWRnZXQpOwogCi0gICAgUV9BU1NFUlQobV9vcHRpb25XaWRnZXQgJiYgbV9wcmVzZXRXaWRn ZXQpOworICAgIFFfQVNTRVJUKG1fb3B0aW9uV2lkZ2V0ICYmIG1fcHJlc2V0U2VsZWN0b3JQb3B1 cEJ1dHRvbik7CiAgICAgY29ubmVjdChtX29wdGlvbldpZGdldCwgU0lHTkFMKHNpZ0NvbmZpZ3Vy YXRpb25VcGRhdGVkKCkpLCB0aGlzLCBTTE9UKHNsb3RVcGRhdGVQcmVzZXQoKSkpOwogICAgIGNv bm5lY3QobV9vcHRpb25XaWRnZXQsIFNJR05BTChzaWdTYXZlTG9ja2VkQ29uZmlnKEtpc1Byb3Bl cnRpZXNDb25maWd1cmF0aW9uKikpLCB0aGlzLCBTTE9UKHNsb3RTYXZlTG9ja2VkT3B0aW9uVG9Q cmVzZXQoS2lzUHJvcGVydGllc0NvbmZpZ3VyYXRpb24qKSkpOwogICAgIGNvbm5lY3QobV9vcHRp b25XaWRnZXQsIFNJR05BTChzaWdEcm9wTG9ja2VkQ29uZmlnKEtpc1Byb3BlcnRpZXNDb25maWd1 cmF0aW9uKikpLCB0aGlzLCBTTE9UKHNsb3REcm9wTG9ja2VkT3B0aW9uKEtpc1Byb3BlcnRpZXND b25maWd1cmF0aW9uKikpKTsKQEAgLTQ5OCw3ICs1MzMsNyBAQCB2b2lkIEtpc1BhaW50b3BCb3g6 OnNldEN1cnJlbnRQYWludG9wKGNvbnN0IEtvSUQmIHBhaW50b3AsIEtpc1BhaW50T3BQcmVzZXRT UCBwcgogICAgIEtpc1BhaW50T3BGYWN0b3J5KiBwYWludE9wID0gS2lzUGFpbnRPcFJlZ2lzdHJ5 OjppbnN0YW5jZSgpLT5nZXQocGFpbnRvcC5pZCgpKTsKICAgICBRU3RyaW5nIHBpeEZpbGVuYW1l ID0gS2lzRmFjdG9yeTo6Y29tcG9uZW50RGF0YSgpLmRpcnMoKS0+ZmluZFJlc291cmNlKCJraXNf aW1hZ2VzIiwgcGFpbnRPcC0+cGl4bWFwKCkpOwogCi0gICAgbV9zZXR0aW5nc1dpZGdldC0+c2V0 SWNvbihRSWNvbihwaXhGaWxlbmFtZSkpOworICAgIG1fYnJ1c2hFZGl0b3JQb3B1cEJ1dHRvbi0+ c2V0SWNvbihRSWNvbihwaXhGaWxlbmFtZSkpOwogICAgIG1fcmVzb3VyY2VQcm92aWRlci0+c2V0 UGFpbnRPcFByZXNldChwcmVzZXQpOwogICAgIG1fcHJlc2V0c1BvcHVwLT5zZXRDdXJyZW50UGFp bnRPcChwYWludG9wLmlkKCkpOwogCkBAIC01ODgsOCArNjIzLDggQEAgdm9pZCBLaXNQYWludG9w Qm94OjpzZXRXaWRnZXRTdGF0ZShpbnQgZmxhZ3MpCiAgICAgfQogCiAgICAgaWYgKGZsYWdzICYg KEVOQUJMRV9QUkVTRVRTIHwgRElTQUJMRV9QUkVTRVRTKSkgewotICAgICAgICBtX3ByZXNldFdp ZGdldC0+c2V0RW5hYmxlZChmbGFncyAmIEVOQUJMRV9QUkVTRVRTKTsKLSAgICAgICAgbV9zZXR0 aW5nc1dpZGdldC0+c2V0RW5hYmxlZChmbGFncyAmIEVOQUJMRV9QUkVTRVRTKTsKKyAgICAgICAg bV9wcmVzZXRTZWxlY3RvclBvcHVwQnV0dG9uLT5zZXRFbmFibGVkKGZsYWdzICYgRU5BQkxFX1BS RVNFVFMpOworICAgICAgICBtX2JydXNoRWRpdG9yUG9wdXBCdXR0b24tPnNldEVuYWJsZWQoZmxh Z3MgJiBFTkFCTEVfUFJFU0VUUyk7CiAgICAgfQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAz OyArK2kpIHsKQEAgLTg0MiwxMyArODc3LDEzIEBAIHZvaWQgS2lzUGFpbnRvcEJveDo6c2xvdFNl dENvbXBvc2l0ZU1vZGUoaW50IGluZGV4KQogdm9pZCBLaXNQYWludG9wQm94OjpzbG90SG9yaXpv bnRhbE1pcnJvckNoYW5nZWQoYm9vbCB2YWx1ZSkKIHsKICAgICBtX3Jlc291cmNlUHJvdmlkZXIt PnNldE1pcnJvckhvcml6b250YWwodmFsdWUpOwotICAgIHRvZ2dsZUhpZ2hsaWdodGVkQnV0dG9u KGhNaXJyb3JCdXR0b24pOworICAgIHRvZ2dsZUhpZ2hsaWdodGVkQnV0dG9uKG1faE1pcnJvckJ1 dHRvbik7CiB9CiAKIHZvaWQgS2lzUGFpbnRvcEJveDo6c2xvdFZlcnRpY2FsTWlycm9yQ2hhbmdl ZChib29sIHZhbHVlKQogewogICAgIG1fcmVzb3VyY2VQcm92aWRlci0+c2V0TWlycm9yVmVydGlj YWwodmFsdWUpOwotICAgIHRvZ2dsZUhpZ2hsaWdodGVkQnV0dG9uKHZNaXJyb3JCdXR0b24pOwor ICAgIHRvZ2dsZUhpZ2hsaWdodGVkQnV0dG9uKG1fdk1pcnJvckJ1dHRvbik7CiB9CiAKIHZvaWQg S2lzUGFpbnRvcEJveDo6c2xpZGVyQ2hhbmdlZChpbnQgbikKZGlmZiAtLWdpdCBhL2tyaXRhL3Vp L2tpc19wYWludG9wX2JveC5oIGIva3JpdGEvdWkva2lzX3BhaW50b3BfYm94LmgKaW5kZXggYjQ0 NjAxNi4uNWViM2YwMSAxMDA2NDQKLS0tIGEva3JpdGEvdWkva2lzX3BhaW50b3BfYm94LmgKKysr IGIva3JpdGEvdWkva2lzX3BhaW50b3BfYm94LmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgS29D YW52YXNDb250cm9sbGVyOwogY2xhc3MgS2lzVmlld01hbmFnZXI7CiBjbGFzcyBLaXNDYW52YXNS ZXNvdXJjZVByb3ZpZGVyOwogY2xhc3MgS2lzUG9wdXBCdXR0b247CitjbGFzcyBLaXNUb29sT3B0 aW9uc1BvcHVwOwogY2xhc3MgS2lzUGFpbnRPcFByZXNldHNQb3B1cDsKIGNsYXNzIEtpc1BhaW50 T3BQcmVzZXRzQ2hvb3NlclBvcHVwOwogY2xhc3MgS2lzUGFpbnRPcENvbmZpZ1dpZGdldDsKQEAg LTEwNiw2ICsxMDcsMTAgQEAgcHVibGljOgogICAgIH5LaXNQYWludG9wQm94KCk7CiAKICAgICB2 b2lkIHJlc3RvcmVSZXNvdXJjZShLb1Jlc291cmNlKiByZXNvdXJjZSk7CisgICAgLyoqCisgICAg ICogVXBkYXRlIHRoZSBvcHRpb24gd2lkZ2V0cyB0byB0aGUgYXJndW1lbnQgb25lcywgcmVtb3Zp bmcgdGhlIGN1cnJlbnRseSBzZXQgd2lkZ2V0cy4KKyAgICAgKi8KKyAgICB2b2lkIG5ld09wdGlv bldpZGdldHMoY29uc3QgUUxpc3Q8UVBvaW50ZXI8UVdpZGdldD4gPiAmIG9wdGlvbldpZGdldExp c3QpOwogCiBwdWJsaWMgUV9TTE9UUzoKIApAQCAtMTY1LDI2ICsxNzAsMjcgQEAgcHJpdmF0ZSBR X1NMT1RTOgogICAgIHZvaWQgc2xvdFVwZGF0ZVNlbGVjdGlvbkljb24oKTsKIAogcHJpdmF0ZToK LSAgICBLaXNDYW52YXNSZXNvdXJjZVByb3ZpZGVyKiAgICAgICAgICAgbV9yZXNvdXJjZVByb3Zp ZGVyOwotICAgIFFIQm94TGF5b3V0KiAgICAgICAgICAgICAgICAgICAgICAgICBtX2xheW91dDsK LSAgICBRV2lkZ2V0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWludG9wV2lkZ2V0 OwotICAgIEtpc1BhaW50T3BDb25maWdXaWRnZXQqICAgICAgICAgICAgbV9vcHRpb25XaWRnZXQ7 Ci0gICAgS2lzUG9wdXBCdXR0b24qICAgICAgICAgICAgICAgICAgICAgIG1fc2V0dGluZ3NXaWRn ZXQ7Ci0gICAgS2lzUG9wdXBCdXR0b24qICAgICAgICAgICAgICAgICAgICAgIG1fcHJlc2V0V2lk Z2V0OwotICAgIEtpc1BvcHVwQnV0dG9uKiAgICAgICAgICAgICAgICAgICAgICBtX2JydXNoQ2hv b3NlcjsKLSAgICBLaXNDb21wb3NpdGVPcENvbWJvQm94KiAgICAgICAgICAgICAgbV9jbWJDb21w b3NpdGVPcDsKLSAgICBRVG9vbEJ1dHRvbiogICAgICAgICAgICAgICAgICAgICAgICAgbV9lcmFz ZU1vZGVCdXR0b247Ci0gICAgUVRvb2xCdXR0b24qICAgICAgICAgICAgICAgICAgICAgICAgIG1f YWxwaGFMb2NrQnV0dG9uOwotICAgIFFUb29sQnV0dG9uKiAgICAgICAgICAgICAgICAgICAgICAg ICBoTWlycm9yQnV0dG9uOwotICAgIFFUb29sQnV0dG9uKiAgICAgICAgICAgICAgICAgICAgICAg ICB2TWlycm9yQnV0dG9uOwotICAgIEtpc1BhaW50T3BQcmVzZXRzUG9wdXAqICAgICAgICAgICAg ICBtX3ByZXNldHNQb3B1cDsKLSAgICBLaXNQYWludE9wUHJlc2V0c0Nob29zZXJQb3B1cCogICAg ICAgbV9wcmVzZXRzQ2hvb3NlclBvcHVwOwotICAgIEtpc1ZpZXdNYW5hZ2VyKiAgICAgICAgICAg ICAgICAgICAgICBtX3ZpZXdNYW5hZ2VyOwotICAgIEtpc1BvcHVwQnV0dG9uKiAgICAgICAgICAg ICAgICAgICAgICBtX3dvcmtzcGFjZVdpZGdldDsKLSAgICBLaXNXaWRnZXRDaG9vc2VyKiAgICAg ICAgICAgICAgICAgICAgbV9zbGlkZXJDaG9vc2VyWzNdOworICAgIEtpc0NhbnZhc1Jlc291cmNl UHJvdmlkZXIqICAgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlcjsKKyAgICBRSEJveExheW91dCog ICAgICAgICAgICAgICAgICAgICAgICBtX2xheW91dDsKKyAgICBRV2lkZ2V0KiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtX3BhaW50b3BXaWRnZXQ7CisgICAgS2lzUGFpbnRPcENvbmZpZ1dp ZGdldCogICAgICAgICAgICAgbV9vcHRpb25XaWRnZXQ7CisgICAgS2lzUG9wdXBCdXR0b24qICAg ICAgICAgICAgICAgICAgICAgbV90b29sT3B0aW9uc1BvcHVwQnV0dG9uOworICAgIEtpc1BvcHVw QnV0dG9uKiAgICAgICAgICAgICAgICAgICAgIG1fYnJ1c2hFZGl0b3JQb3B1cEJ1dHRvbjsKKyAg ICBLaXNQb3B1cEJ1dHRvbiogICAgICAgICAgICAgICAgICAgICBtX3ByZXNldFNlbGVjdG9yUG9w dXBCdXR0b247CisgICAgS2lzQ29tcG9zaXRlT3BDb21ib0JveCogICAgICAgICAgICAgbV9jbWJD b21wb3NpdGVPcDsKKyAgICBRVG9vbEJ1dHRvbiogICAgICAgICAgICAgICAgICAgICAgICBtX2Vy YXNlTW9kZUJ1dHRvbjsKKyAgICBRVG9vbEJ1dHRvbiogICAgICAgICAgICAgICAgICAgICAgICBt X2FscGhhTG9ja0J1dHRvbjsKKyAgICBRVG9vbEJ1dHRvbiogICAgICAgICAgICAgICAgICAgICAg ICBtX2hNaXJyb3JCdXR0b247CisgICAgUVRvb2xCdXR0b24qICAgICAgICAgICAgICAgICAgICAg ICAgbV92TWlycm9yQnV0dG9uOworICAgIEtpc1Rvb2xPcHRpb25zUG9wdXAqICAgICAgICAgICAg ICAgIG1fdG9vbE9wdGlvbnNQb3B1cDsKKyAgICBLaXNQYWludE9wUHJlc2V0c1BvcHVwKiAgICAg ICAgICAgICBtX3ByZXNldHNQb3B1cDsKKyAgICBLaXNQYWludE9wUHJlc2V0c0Nob29zZXJQb3B1 cCogICAgICBtX3ByZXNldHNDaG9vc2VyUG9wdXA7CisgICAgS2lzVmlld01hbmFnZXIqICAgICAg ICAgICAgICAgICAgICAgbV92aWV3TWFuYWdlcjsKKyAgICBLaXNQb3B1cEJ1dHRvbiogICAgICAg ICAgICAgICAgICAgICBtX3dvcmtzcGFjZVdpZGdldDsKKyAgICBLaXNXaWRnZXRDaG9vc2VyKiAg ICAgICAgICAgICAgICAgICBtX3NsaWRlckNob29zZXJbM107CiAgICAgUU1hcDxLb0lELCBLaXNQ YWludE9wQ29uZmlnV2lkZ2V0Kj4gbV9wYWludG9wT3B0aW9uV2lkZ2V0czsKLSAgICBLaXNGYXZv cml0ZVJlc291cmNlTWFuYWdlciogICAgICAgICAgbV9mYXZvcml0ZVJlc291cmNlTWFuYWdlcjsK LSAgICBRVG9vbEJ1dHRvbiogICAgICAgICAgICAgICAgICAgICAgICAgbV9yZWxvYWRCdXR0b247 CisgICAgS2lzRmF2b3JpdGVSZXNvdXJjZU1hbmFnZXIqICAgICAgICAgbV9mYXZvcml0ZVJlc291 cmNlTWFuYWdlcjsKKyAgICBRVG9vbEJ1dHRvbiogICAgICAgICAgICAgICAgICAgICAgICBtX3Jl bG9hZEJ1dHRvbjsKIAogCiAgICAgUVN0cmluZyAgICAgICAgICAgICBtX3ByZXZDb21wb3NpdGVP cElEOwpkaWZmIC0tZ2l0IGEva3JpdGEvdWkvd2lkZ2V0cy9raXNfdG9vbF9vcHRpb25zX3BvcHVw LmNwcCBiL2tyaXRhL3VpL3dpZGdldHMva2lzX3Rvb2xfb3B0aW9uc19wb3B1cC5jcHAKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU1MzU0OQotLS0gL2Rldi9udWxsCisrKyBi L2tyaXRhL3VpL3dpZGdldHMva2lzX3Rvb2xfb3B0aW9uc19wb3B1cC5jcHAKQEAgLTAsMCArMSwx OTcgQEAKKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAorICogQ29weXJp Z2h0IChDKSAyMDE1IEJvdWRld2lqbiBSZW1wdCA8Ym91ZEB2YWxkeWFzLm9yZz4KKyAqCisgKiBU aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKyNpbmNsdWRlICJ3 aWRnZXRzL2tpc190b29sX29wdGlvbnNfcG9wdXAuaCIKKworCisjaW5jbHVkZSA8UUxpc3Q+Cisj aW5jbHVkZSA8UUZvbnQ+CisjaW5jbHVkZSA8UU1lbnU+CisjaW5jbHVkZSA8UUFjdGlvbj4KKyNp bmNsdWRlIDxRU2hvd0V2ZW50PgorI2luY2x1ZGUgPFFQb2ludGVyPgorI2luY2x1ZGUgPFFHcmlk TGF5b3V0PgorI2luY2x1ZGUgPFFGcmFtZT4KKyNpbmNsdWRlIDxRTGFiZWw+CisjaW5jbHVkZSA8 UVBvaW50ZXI+CisjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgorCisjaW5jbHVkZSA8a2dsb2JhbC5o PgorI2luY2x1ZGUgPGtjb25maWcuaD4KKyNpbmNsdWRlIDxrZ2xvYmFsc2V0dGluZ3MuaD4KKyNp bmNsdWRlIDxrbG9jYWxlLmg+CisKKworI2luY2x1ZGUgImtpc19jb25maWcuaCIKKworc3RydWN0 IEtpc1Rvb2xPcHRpb25zUG9wdXA6OlByaXZhdGUKK3sKK3B1YmxpYzoKKyAgICBRRm9udCBzbWFs bEZvbnQ7CisgICAgYm9vbCBkZXRhY2hlZDsKKyAgICBib29sIGlnbm9yZUhpZGVFdmVudHM7Cisg ICAgUVJlY3QgZGV0YWNoZWRHZW9tZXRyeTsKKworICAgIFFMaXN0PFFQb2ludGVyPFFXaWRnZXQ+ ID4gY3VycmVudFdpZGdldExpc3Q7CisgICAgUVNldDxRV2lkZ2V0ICo+IGN1cnJlbnRBdXhXaWRn ZXRzOworICAgIFFXaWRnZXQgKmhpZGVyV2lkZ2V0OyAvLyBub24gY3VycmVudCB3aWRnZXRzIGFy ZSBoaWRkZW4gYnkgYmVpbmcgY2hpbGRyZW4gb2YgdGhpcworICAgIFFHcmlkTGF5b3V0ICpob3Vz ZWtlZXBlckxheW91dDsKKworICAgIHZvaWQgcmVjcmVhdGVMYXlvdXQoY29uc3QgUUxpc3Q8UVBv aW50ZXI8UVdpZGdldD4gPiAmb3B0aW9uV2lkZ2V0TGlzdCkKKyAgICB7CisgICAgICAgIGZvcmVh Y2goUVBvaW50ZXI8UVdpZGdldD4gd2lkZ2V0LCBjdXJyZW50V2lkZ2V0TGlzdCkgeworICAgICAg ICAgICAgaWYgKCF3aWRnZXQuaXNOdWxsKCkgJiYgd2lkZ2V0ICYmIGhpZGVyV2lkZ2V0KSB7Cisg ICAgICAgICAgICAgICAgd2lkZ2V0LT5zZXRQYXJlbnQoaGlkZXJXaWRnZXQpOworICAgICAgICAg ICAgfQorICAgICAgICB9CisgICAgICAgIHFEZWxldGVBbGwoY3VycmVudEF1eFdpZGdldHMpOwor ICAgICAgICBjdXJyZW50QXV4V2lkZ2V0cy5jbGVhcigpOworCisgICAgICAgIGN1cnJlbnRXaWRn ZXRMaXN0ID0gb3B0aW9uV2lkZ2V0TGlzdDsKKworICAgICAgICAvLyBuZWVkIHRvIHVuc3RyZXRj aCByb3cgdGhhdCBoYXZlIHByZXZpb3VzbHkgYmVlbiBzdHJldGNoZWQKKyAgICAgICAgaG91c2Vr ZWVwZXJMYXlvdXQtPnNldFJvd1N0cmV0Y2goaG91c2VrZWVwZXJMYXlvdXQtPnJvd0NvdW50KCkt MSwgMCk7CisKKyAgICAgICAgaW50IGNudCA9IDA7CisgICAgICAgIFFGcmFtZSAqczsKKyAgICAg ICAgUUxhYmVsICpsOworICAgICAgICBob3VzZWtlZXBlckxheW91dC0+c2V0SG9yaXpvbnRhbFNw YWNpbmcoMCk7CisgICAgICAgIGhvdXNla2VlcGVyTGF5b3V0LT5zZXRWZXJ0aWNhbFNwYWNpbmco Mik7CisgICAgICAgIGludCBzcGVjaWFsQ291bnQgPSAwOworICAgICAgICBmb3JlYWNoKFFQb2lu dGVyPFFXaWRnZXQ+IHdpZGdldCwgY3VycmVudFdpZGdldExpc3QpIHsKKyAgICAgICAgICAgIGlm ICh3aWRnZXQuaXNOdWxsKCkgfHwgd2lkZ2V0LT5vYmplY3ROYW1lKCkuaXNFbXB0eSgpKSB7Cisg ICAgICAgICAgICAgICAgY29udGludWU7IC8vIHNraXAgdGhpcyBkb2NrZXIgaW4gcmVsZWFzZSBi dWlsZCB3aGVuIGFzc2VydCBkb24ndCBjcmFzaAorICAgICAgICAgICAgfQorICAgICAgICAgICAg aWYgKCF3aWRnZXQtPndpbmRvd1RpdGxlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg aG91c2VrZWVwZXJMYXlvdXQtPmFkZFdpZGdldChsID0gbmV3IFFMYWJlbCh3aWRnZXQtPndpbmRv d1RpdGxlKCkpLCBjbnQrKywgMCk7CisgICAgICAgICAgICAgICAgY3VycmVudEF1eFdpZGdldHMu aW5zZXJ0KGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaG91c2VrZWVwZXJMYXlvdXQt PmFkZFdpZGdldCh3aWRnZXQsIGNudCsrLCAwKTsKKyAgICAgICAgICAgIFFMYXlvdXQgKnN1Ykxh eW91dCA9IHdpZGdldC0+bGF5b3V0KCk7CisgICAgICAgICAgICBpZiAoc3ViTGF5b3V0KSB7Cisg ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdWJMYXlvdXQtPmNvdW50KCk7ICsr aSkgeworICAgICAgICAgICAgICAgICAgICBRV2lkZ2V0ICpzcGFjZXJXaWRnZXQgPSBzdWJMYXlv dXQtPml0ZW1BdChpKS0+d2lkZ2V0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzcGFjZXJX aWRnZXQgJiYgc3BhY2VyV2lkZ2V0LT5vYmplY3ROYW1lKCkuY29udGFpbnMoIlNwZWNpYWxTcGFj ZXIiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbENvdW50Kys7CisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg ICAgICB3aWRnZXQtPnNob3coKTsKKyAgICAgICAgICAgIGlmICh3aWRnZXQgIT0gY3VycmVudFdp ZGdldExpc3QubGFzdCgpKSB7CisgICAgICAgICAgICAgICAgaG91c2VrZWVwZXJMYXlvdXQtPmFk ZFdpZGdldChzID0gbmV3IFFGcmFtZSgpLCBjbnQrKywgMCk7CisgICAgICAgICAgICAgICAgcy0+ c2V0RnJhbWVTaGFwZShRRnJhbWU6OkhMaW5lKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50QXV4 V2lkZ2V0cy5pbnNlcnQocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYg KHNwZWNpYWxDb3VudCA9PSBjdXJyZW50V2lkZ2V0TGlzdC5jb3VudCgpIHx8IHFBcHAtPmFwcGxp Y2F0aW9uTmFtZSgpLmNvbnRhaW5zKCJrcml0YSIpKSB7CisgICAgICAgICAgICBob3VzZWtlZXBl ckxheW91dC0+c2V0Um93U3RyZXRjaChjbnQsIDEwMDAwKTsKKyAgICAgICAgfQorCisgICAgICAg IGhvdXNla2VlcGVyTGF5b3V0LT5zZXRTaXplQ29uc3RyYWludChRTGF5b3V0OjpTZXRNaW5BbmRN YXhTaXplKTsKKyAgICAgICAgaG91c2VrZWVwZXJMYXlvdXQtPmludmFsaWRhdGUoKTsKKyAgICB9 CisKK307CisKKworS2lzVG9vbE9wdGlvbnNQb3B1cDo6S2lzVG9vbE9wdGlvbnNQb3B1cChRV2lk Z2V0ICpwYXJlbnQpCisgICAgOiBRV2lkZ2V0KHBhcmVudCkKKyAgICAsIGQobmV3IFByaXZhdGUo KSkKK3sKKyAgICBzZXRPYmplY3ROYW1lKCJLaXNUb29sT3B0aW9uc1BvcHVwIik7CisKKyAgICBL Q29uZmlnR3JvdXAgZ3JvdXAoS0dsb2JhbDo6Y29uZmlnKCksICJHVUkiKTsKKyAgICBkLT5zbWFs bEZvbnQgID0gS0dsb2JhbFNldHRpbmdzOjpnZW5lcmFsRm9udCgpOworICAgIHFyZWFsIHBvaW50 U2l6ZSA9IGdyb3VwLnJlYWRFbnRyeSgicGFsZXR0ZWZvbnRzaXplIiwgZC0+c21hbGxGb250LnBv aW50U2l6ZSgpICogMC43NSk7CisgICAgcG9pbnRTaXplID0gcU1heChwb2ludFNpemUsIEtHbG9i YWxTZXR0aW5nczo6c21hbGxlc3RSZWFkYWJsZUZvbnQoKS5wb2ludFNpemVGKCkpOworICAgIGQt PnNtYWxsRm9udC5zZXRQb2ludFNpemVGKHBvaW50U2l6ZSk7CisgICAgc2V0Rm9udChkLT5zbWFs bEZvbnQpOworCisgICAgS2lzQ29uZmlnIGNmZzsKKyAgICBkLT5kZXRhY2hlZCA9ICFjZmcucGFp bnRvcFBvcHVwRGV0YWNoZWQoKTsKKyAgICBkLT5pZ25vcmVIaWRlRXZlbnRzID0gZmFsc2U7CisK KyAgICBkLT5ob3VzZWtlZXBlckxheW91dCA9IG5ldyBRR3JpZExheW91dCgpOworICAgIGQtPmhv dXNla2VlcGVyTGF5b3V0LT5zZXRDb250ZW50c01hcmdpbnMoNCw0LDQsMCk7CisgICAgc2V0TGF5 b3V0KGQtPmhvdXNla2VlcGVyTGF5b3V0KTsKKyAgICBkLT5ob3VzZWtlZXBlckxheW91dC0+c2V0 U2l6ZUNvbnN0cmFpbnQoUUxheW91dDo6U2V0TWluQW5kTWF4U2l6ZSk7CisgICAgZC0+aGlkZXJX aWRnZXQgPSBuZXcgUVdpZGdldCh0aGlzKTsKKyAgICBkLT5oaWRlcldpZGdldC0+c2V0VmlzaWJs ZShmYWxzZSk7Cit9CisKKworS2lzVG9vbE9wdGlvbnNQb3B1cDo6fktpc1Rvb2xPcHRpb25zUG9w dXAoKQoreworICAgIGRlbGV0ZSBkOworfQorCit2b2lkIEtpc1Rvb2xPcHRpb25zUG9wdXA6Om5l d09wdGlvbldpZGdldHMoY29uc3QgUUxpc3Q8UVBvaW50ZXI8UVdpZGdldD4gPiAmb3B0aW9uV2lk Z2V0TGlzdCkKK3sKKyAgICBkLT5yZWNyZWF0ZUxheW91dChvcHRpb25XaWRnZXRMaXN0KTsKK30K Kwordm9pZCBLaXNUb29sT3B0aW9uc1BvcHVwOjpjb250ZXh0TWVudUV2ZW50KFFDb250ZXh0TWVu dUV2ZW50ICplKSB7CisKKyAgICBRTWVudSBtZW51KHRoaXMpOworICAgIFFBY3Rpb24qIGFjdGlv biA9IG1lbnUuYWRkQWN0aW9uKGQtPmRldGFjaGVkID8gaTE4bigiQXR0YWNoIHRvIFRvb2xiYXIi KSA6IGkxOG4oIkRldGFjaCBmcm9tIFRvb2xiYXIiKSk7CisgICAgY29ubmVjdChhY3Rpb24sIFNJ R05BTCh0cmlnZ2VyZWQoKSksIHRoaXMsIFNMT1Qoc3dpdGNoRGV0YWNoZWQoKSkpOworICAgIG1l bnUuZXhlYyhlLT5nbG9iYWxQb3MoKSk7Cit9CisKK3ZvaWQgS2lzVG9vbE9wdGlvbnNQb3B1cDo6 aGlkZUV2ZW50KFFIaWRlRXZlbnQgKmV2ZW50KQoreworICAgIGlmIChkLT5pZ25vcmVIaWRlRXZl bnRzKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGQtPmRldGFjaGVkKSB7Cisg ICAgICAgIGQtPmRldGFjaGVkR2VvbWV0cnkgPSB3aW5kb3coKS0+Z2VvbWV0cnkoKTsKKyAgICB9 CisgICAgUVdpZGdldDo6aGlkZUV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBLaXNUb29sT3B0aW9u c1BvcHVwOjpzaG93RXZlbnQoUVNob3dFdmVudCAqKQoreworICAgIGlmIChkLT5kZXRhY2hlZCkg eworICAgICAgICB3aW5kb3coKS0+c2V0R2VvbWV0cnkoZC0+ZGV0YWNoZWRHZW9tZXRyeSk7Cisg ICAgfQorfQorCit2b2lkIEtpc1Rvb2xPcHRpb25zUG9wdXA6OnN3aXRjaERldGFjaGVkKGJvb2wg c2hvdykKK3sKKyAgICBpZiAocGFyZW50V2lkZ2V0KCkpIHsKKyAgICAgICAgZC0+ZGV0YWNoZWQg PSAhZC0+ZGV0YWNoZWQ7CisKKyAgICAgICAgaWYgKGQtPmRldGFjaGVkKSB7CisgICAgICAgICAg ICBkLT5pZ25vcmVIaWRlRXZlbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIHBhcmVudFdpZGdldCgp LT5zZXRXaW5kb3dGbGFncyhRdDo6VG9vbCk7CisgICAgICAgICAgICBpZiAoc2hvdykgeworICAg ICAgICAgICAgICAgIHBhcmVudFdpZGdldCgpLT5zaG93KCk7CisgICAgICAgICAgICB9CisgICAg ICAgICAgICBkLT5pZ25vcmVIaWRlRXZlbnRzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg ZWxzZSB7CisgICAgICAgICAgICBwYXJlbnRXaWRnZXQoKS0+c2V0V2luZG93RmxhZ3MoUXQ6OlBv cHVwKTsKKyAgICAgICAgICAgIEtpc0NvbmZpZyBjZmc7CisgICAgICAgICAgICBwYXJlbnRXaWRn ZXQoKS0+aGlkZSgpOworICAgICAgICB9CisKKyAgICAgICAgS2lzQ29uZmlnIGNmZzsKKyAgICAg ICAgY2ZnLnNldFRvb2xPcHRpb25zUG9wdXBEZXRhY2hlZChkLT5kZXRhY2hlZCk7CisgICAgfQor fQorCmRpZmYgLS1naXQgYS9rcml0YS91aS93aWRnZXRzL2tpc190b29sX29wdGlvbnNfcG9wdXAu aCBiL2tyaXRhL3VpL3dpZGdldHMva2lzX3Rvb2xfb3B0aW9uc19wb3B1cC5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNTM3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9rcml0 YS91aS93aWRnZXRzL2tpc190b29sX29wdGlvbnNfcG9wdXAuaApAQCAtMCwwICsxLDUzIEBACisv KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKKyAqIENvcHlyaWdodCAoQykg MjAxNSBCb3VkZXdpam4gUmVtcHQgPGJvdWRAdmFsZHlhcy5vcmc+CisgKgorICogVGhpcyBsaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisjaWZuZGVmIEtJU19UT09MX09Q VElPTlNfUE9QVVBfSAorI2RlZmluZSBLSVNfVE9PTF9PUFRJT05TX1BPUFVQX0gKKworI2luY2x1 ZGUgPFFXaWRnZXQ+CisjaW5jbHVkZSA8UVBvaW50ZXI+CisKK2NsYXNzIEtpc1Rvb2xPcHRpb25z UG9wdXAgOiBwdWJsaWMgUVdpZGdldAoreworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgZXhw bGljaXQgS2lzVG9vbE9wdGlvbnNQb3B1cChRV2lkZ2V0ICpwYXJlbnQgPSAwKTsKKyAgICB2aXJ0 dWFsIH5LaXNUb29sT3B0aW9uc1BvcHVwKCk7CisKKyAgICBib29sIGRldGFjaGVkKCkgY29uc3Q7 CisKKyAgICB2b2lkIG5ld09wdGlvbldpZGdldHMoY29uc3QgUUxpc3Q8UVBvaW50ZXI8UVdpZGdl dD4gPiAmb3B0aW9uV2lkZ2V0TGlzdCk7CisKK1FfU0lHTkFMUzoKKworcHVibGljIFFfU0xPVFM6 CisKKyAgICB2b2lkIHN3aXRjaERldGFjaGVkKGJvb2wgc2hvdyA9IHRydWUpOworCitwcm90ZWN0 ZWQ6CisgICAgdm9pZCBjb250ZXh0TWVudUV2ZW50KFFDb250ZXh0TWVudUV2ZW50ICopOworICAg IHZvaWQgaGlkZUV2ZW50KFFIaWRlRXZlbnQgKik7CisgICAgdm9pZCBzaG93RXZlbnQoUVNob3dF dmVudCAqKTsKKworcHJpdmF0ZToKKworICAgIHN0cnVjdCBQcml2YXRlOworICAgIFByaXZhdGUg KmNvbnN0IGQ7Cit9OworCisjZW5kaWYgLy8gS0lTX1RPT0xfT1BUSU9OU19QT1BVUF9ICl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCktyaXRhIG1haWxpbmcg bGlzdApraW1hZ2VzaG9wQGtkZS5vcmcKaHR0cHM6Ly9tYWlsLmtkZS5vcmcvbWFpbG1hbi9saXN0 aW5mby9raW1hZ2VzaG9wCg==